diff --git a/.gitignore b/.gitignore index a2d84e4..19bd3f0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,7 @@ Setup Setup.hi Setup.o docker +chroot propellor.1 +.lock +.lastchecked diff --git a/Makefile b/Makefile index 2cf15b9..8b71387 100644 --- a/Makefile +++ b/Makefile @@ -17,11 +17,15 @@ install: cat dist/propellor-*.tar.gz | (cd dist/gittmp && tar zx --strip-components=1) # cabal sdist does not preserve symlinks, so copy over file cd dist/gittmp && for f in $$(find -type f); do rm -f $$f; cp -a ../../$$f $$f; done - cd dist/gittmp && git init && \ - git add . \ - && git commit -q -m "distributed version of propellor" \ - && git bundle create $(DESTDIR)/usr/src/propellor/propellor.git master HEAD \ - && git show-ref master --hash > $(DESTDIR)/usr/src/propellor/head + export GIT_AUTHOR_NAME=build \ + && export GIT_AUTHOR_EMAIL=build@buildhost \ + && export GIT_COMMITTER_NAME=build \ + && export GIT_COMMITTER_EMAIL=build@buildhost \ + && cd dist/gittmp && git init \ + && git add . \ + && git commit -q -m "distributed version of propellor" \ + && git bundle create $(DESTDIR)/usr/src/propellor/propellor.git master HEAD \ + && git show-ref master --hash > $(DESTDIR)/usr/src/propellor/head rm -rf dist/gittmp clean: diff --git a/config-joey.hs b/config-joey.hs index 2a17377..32b70c1 100644 --- a/config-joey.hs +++ b/config-joey.hs @@ -25,6 +25,7 @@ import qualified Propellor.Property.Obnam as Obnam import qualified Propellor.Property.Gpg as Gpg import qualified Propellor.Property.Systemd as Systemd import qualified Propellor.Property.Journald as Journald +import qualified Propellor.Property.Chroot as Chroot import qualified Propellor.Property.OS as OS import qualified Propellor.Property.HostingProvider.CloudAtCost as CloudAtCost import qualified Propellor.Property.HostingProvider.Linode as Linode @@ -45,6 +46,7 @@ hosts = -- (o) ` , gnu , clam , orca + , honeybee , kite , elephant , beaver @@ -74,8 +76,6 @@ darkstar = host "darkstar.kitenet.net" & ipv6 "2001:4830:1600:187::2" -- sixxs tunnel & Apt.buildDep ["git-annex"] `period` Daily - & Docker.configured - ! Docker.docked gitAnnexAndroidDev & JoeySites.postfixClientRelay (Context "darkstar.kitenet.net") & JoeySites.dkimMilter @@ -83,7 +83,6 @@ darkstar = host "darkstar.kitenet.net" gnu :: Host gnu = host "gnu.kitenet.net" & Apt.buildDep ["git-annex"] `period` Daily - & Docker.configured & JoeySites.postfixClientRelay (Context "gnu.kitenet.net") & JoeySites.dkimMilter @@ -97,18 +96,18 @@ clam = standardSystem "clam.kitenet.net" Unstable "amd64" & Ssh.randomHostKeys & Apt.unattendedUpgrades & Network.ipv6to4 + & Tor.isRelay & Tor.named "kite1" & Tor.bandwidthRate (Tor.PerMonth "400 GB") - & Docker.configured - & Docker.garbageCollected `period` Daily - & Docker.docked webserver + & Systemd.nspawned webserver & File.dirExists "/var/www/html" - & File.notPresent "/var/www/html/index.html" - & "/var/www/index.html" `File.hasContent` ["hello, world"] + & File.notPresent "/var/www/index.html" + & "/var/www/html/index.html" `File.hasContent` ["hello, world"] & alias "helloworld.kitenet.net" - & Docker.docked oldusenetShellBox + + & Systemd.nspawned oldusenetShellBox & JoeySites.scrollBox & alias "scroll.joeyh.name" @@ -129,15 +128,46 @@ orca = standardSystem "orca.kitenet.net" Unstable "amd64" & Apt.unattendedUpgrades & Postfix.satellite + & Apt.serviceInstalledRunning "ntp" & Systemd.persistentJournal - & Docker.configured - & Docker.docked (GitAnnexBuilder.standardAutoBuilderContainer dockerImage "amd64" 15 "2h") - & Docker.docked (GitAnnexBuilder.standardAutoBuilderContainer dockerImage "i386" 45 "2h") - & Docker.docked (GitAnnexBuilder.armelCompanionContainer dockerImage) - & Docker.docked (GitAnnexBuilder.armelAutoBuilderContainer dockerImage (Cron.Times "1 3 * * *") "5h") - & Docker.docked (GitAnnexBuilder.androidAutoBuilderContainer dockerImage (Cron.Times "1 1 * * *") "3h") - & Docker.garbageCollected `period` Daily - & Apt.buildDep ["git-annex"] `period` Daily + + & Systemd.nspawned (GitAnnexBuilder.autoBuilderContainer + GitAnnexBuilder.standardAutoBuilder + (System (Debian Unstable) "amd64") fifteenpast "2h") + & Systemd.nspawned (GitAnnexBuilder.autoBuilderContainer + GitAnnexBuilder.standardAutoBuilder + (System (Debian Unstable) "i386") fifteenpast "2h") + & Systemd.nspawned (GitAnnexBuilder.androidAutoBuilderContainer + (Cron.Times "1 1 * * *") "3h") + where + fifteenpast = Cron.Times "15 * * * *" + +honeybee :: Host +honeybee = standardSystem "honeybee.kitenet.net" Testing "armhf" + [ "Arm git-annex build box." ] + & ipv6 "2001:4830:1600:187::2" + + -- No unattended upgrades as there is currently no console access. + -- (Also, system is not currently running a stock kernel, + -- although it should be able to.) + & Postfix.satellite + & Apt.serviceInstalledRunning "aiccu" + & Apt.serviceInstalledRunning "swapspace" + & Apt.serviceInstalledRunning "ntp" + + -- Not using systemd-nspawn because it's broken (kernel issue?) + -- & Systemd.nspawned (GitAnnexBuilder.autoBuilderContainer + -- GitAnnexBuilder.armAutoBuilder + -- builderos Cron.Daily "22h") + & Chroot.provisioned + (Chroot.debootstrapped builderos mempty "/var/lib/container/armel-git-annex-builder" + & "/etc/timezone" `File.hasContent` ["America/New_York"] + & GitAnnexBuilder.armAutoBuilder + builderos (Cron.Times "1 1 * * *") "12h" + ) + where + -- Using unstable to get new enough ghc for TH on arm. + builderos = System (Debian Unstable) "armel" -- This is not a complete description of kite, since it's a -- multiuser system with eg, user passwords that are not deployed @@ -222,9 +252,6 @@ kite = standardSystemUnhardened "kite.kitenet.net" Testing "amd64" , "zsh" ] - & Docker.configured - & Docker.garbageCollected `period` Daily - & alias "nntp.olduse.net" & JoeySites.oldUseNetServer hosts @@ -281,13 +308,14 @@ elephant = standardSystem "elephant.kitenet.net" Unstable "amd64" & myDnsSecondary & Docker.configured - & Docker.docked oldusenetShellBox & Docker.docked openidProvider `requires` Apt.serviceInstalledRunning "ntp" & Docker.docked ancientKitenet & Docker.docked jerryPlay & Docker.garbageCollected `period` (Weekly (Just 1)) + & Systemd.nspawned oldusenetShellBox + & JoeySites.scrollBox & alias "scroll.joeyh.name" & alias "eu.scroll.joeyh.name" @@ -295,7 +323,7 @@ elephant = standardSystem "elephant.kitenet.net" Unstable "amd64" -- For https port 443, shellinabox with ssh login to -- kitenet.net & alias "shell.kitenet.net" - & Docker.docked kiteShellBox + & Systemd.nspawned kiteShellBox -- Nothing is using http port 80, so listen on -- that port for ssh, for traveling on bad networks that -- block 22. @@ -316,6 +344,7 @@ beaver = host "beaver.kitenet.net" -- Branchable is not completely deployed with propellor yet. pell :: Host pell = host "pell.branchable.com" + & alias "branchable.com" & ipv4 "66.228.46.55" & ipv6 "2600:3c03::f03c:91ff:fedf:c0e5" @@ -371,22 +400,21 @@ iabak = host "iabak.archiveteam.org" --' __|II| ,. ---- __|II|II|__ ( \_,/\ --'-------'\o/-'-.-'-.-'-.- __|II|II|II|II|___/ __/ -'-.-'-.-'-.-'-.-'-.-'- --------------------------- | [Docker] / -------------------------- +-------------------------- | [Containers] / -------------------------- -------------------------- : / --------------------------- --------------------------- \____, o ,' ---------------------------- ---------------------------- '--,___________,' ----------------------------- -- Simple web server, publishing the outside host's /var/www -webserver :: Docker.Container +webserver :: Systemd.Container webserver = standardStableContainer "webserver" - & Docker.publish "80:80" - & Docker.volume "/var/www:/var/www" + & Systemd.bind "/var/www" & Apt.serviceInstalledRunning "apache2" -- My own openid provider. Uses php, so containerized for security -- and administrative sanity. openidProvider :: Docker.Container -openidProvider = standardStableContainer "openid-provider" +openidProvider = standardStableDockerContainer "openid-provider" & alias "openid.kitenet.net" & Docker.publish "8081:80" & OpenId.providerFor [User "joey", User "liw"] @@ -394,39 +422,30 @@ openidProvider = standardStableContainer "openid-provider" -- Exhibit: kite's 90's website. ancientKitenet :: Docker.Container -ancientKitenet = standardStableContainer "ancient-kitenet" +ancientKitenet = standardStableDockerContainer "ancient-kitenet" & alias "ancient.kitenet.net" & Docker.publish "1994:80" & Apt.serviceInstalledRunning "apache2" - & Git.cloned (User "root") "git://kitenet-net.branchable.com/" "/var/www" + & Git.cloned (User "root") "git://kitenet-net.branchable.com/" "/var/www/html" (Just "remotes/origin/old-kitenet.net") -oldusenetShellBox :: Docker.Container +oldusenetShellBox :: Systemd.Container oldusenetShellBox = standardStableContainer "oldusenet-shellbox" & alias "shell.olduse.net" - & Docker.publish "4200:4200" & JoeySites.oldUseNetShellBox --- for development of git-annex for android, using my git-annex work tree -gitAnnexAndroidDev :: Docker.Container -gitAnnexAndroidDev = GitAnnexBuilder.androidContainer dockerImage "android-git-annex" doNothing gitannexdir - & Docker.volume ("/home/joey/src/git-annex:" ++ gitannexdir) - where - gitannexdir = GitAnnexBuilder.homedir "git-annex" - jerryPlay :: Docker.Container -jerryPlay = standardContainer "jerryplay" Unstable "amd64" +jerryPlay = standardDockerContainer "jerryplay" Unstable "amd64" & alias "jerryplay.kitenet.net" & Docker.publish "2202:22" & Docker.publish "8001:80" & Apt.installed ["ssh"] & User.hasSomePassword (User "root") - & Ssh.permitRootLogin True - -kiteShellBox :: Docker.Container + & Ssh.permitRootLogin (Ssh.RootLogin True) + +kiteShellBox :: Systemd.Container kiteShellBox = standardStableContainer "kiteshellbox" & JoeySites.kiteShellBox - & Docker.publish "443:443" type Motd = [String] @@ -457,12 +476,25 @@ standardSystemUnhardened hn suite arch motd = host hn & Apt.removed ["exim4", "exim4-daemon-light", "exim4-config", "exim4-base"] `onChange` Apt.autoRemove -standardStableContainer :: Docker.ContainerName -> Docker.Container -standardStableContainer name = standardContainer name (Stable "wheezy") "amd64" - -- This is my standard container setup, Featuring automatic upgrades. -standardContainer :: Docker.ContainerName -> DebianSuite -> Architecture -> Docker.Container -standardContainer name suite arch = Docker.container name (dockerImage system) +standardContainer :: Systemd.MachineName -> DebianSuite -> Architecture -> Systemd.Container +standardContainer name suite arch = Systemd.container name chroot + & os system + & Apt.stdSourcesList `onChange` Apt.upgrade + & Apt.unattendedUpgrades + & Apt.cacheCleaned + where + system = System (Debian suite) arch + chroot = Chroot.debootstrapped system mempty + +standardStableContainer :: Systemd.MachineName -> Systemd.Container +standardStableContainer name = standardContainer name (Stable "jessie") "amd64" + +standardStableDockerContainer :: Docker.ContainerName -> Docker.Container +standardStableDockerContainer name = standardDockerContainer name (Stable "jessie") "amd64" + +standardDockerContainer :: Docker.ContainerName -> DebianSuite -> Architecture -> Docker.Container +standardDockerContainer name suite arch = Docker.container name (dockerImage system) & os system & Apt.stdSourcesList `onChange` Apt.upgrade & Apt.unattendedUpgrades @@ -473,10 +505,10 @@ standardContainer name suite arch = Docker.container name (dockerImage system) -- Docker images I prefer to use. dockerImage :: System -> Docker.Image -dockerImage (System (Debian Unstable) arch) = "joeyh/debian-unstable-" ++ arch -dockerImage (System (Debian Testing) arch) = "joeyh/debian-unstable-" ++ arch -dockerImage (System (Debian (Stable _)) arch) = "joeyh/debian-stable-" ++ arch -dockerImage _ = "debian-stable-official" -- does not currently exist! +dockerImage (System (Debian Unstable) arch) = Docker.latestImage ("joeyh/debian-unstable-" ++ arch) +dockerImage (System (Debian Testing) arch) = Docker.latestImage ("joeyh/debian-unstable-" ++ arch) +dockerImage (System (Debian (Stable _)) arch) = Docker.latestImage ("joeyh/debian-stable-" ++ arch) +dockerImage _ = Docker.latestImage "debian-stable-official" -- does not currently exist! myDnsSecondary :: Property HasInfo myDnsSecondary = propertyList "dns secondary for all my domains" $ props diff --git a/config-simple.hs b/config-simple.hs index 4f0fde8..576ecc7 100644 --- a/config-simple.hs +++ b/config-simple.hs @@ -41,7 +41,7 @@ hosts = -- A generic webserver in a Docker container. webserverContainer :: Docker.Container -webserverContainer = Docker.container "webserver" "debian" +webserverContainer = Docker.container "webserver" (Docker.latestImage "debian") & os (System (Debian (Stable "jessie")) "amd64") & Apt.stdSourcesList & Docker.publish "80:80" diff --git a/debian/changelog b/debian/changelog index dc3b09d..2decb1f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,62 @@ -propellor (2.5.0) UNRELEASED; urgency=medium +propellor (2.7.0) unstable; urgency=medium + + * Ssh.permitRootLogin type changed to allow configuring WithoutPassword + and ForcedCommandsOnly (API change) + * setSshdConfig type changed, and setSshdConfigBool added with old type. + * Fix a bug in shim generation code for docker and chroots, that + sometimes prevented deployment of docker containers. + * Added onChangeFlagOnFail which is often a safer alternative to + onChange. + Thanks, Antoine Eiche. + * Work around broken git pull option parser in git 2.5.0, + which broke use of --upload-pack to send a git push when running + propellor --spin. + + -- Joey Hess Thu, 30 Jul 2015 12:05:46 -0400 + +propellor (2.6.0) unstable; urgency=medium + + * Replace String type synonym Docker.Image by a data type + which allows to specify an image name and an optional tag. (API change) + Thanks, Antoine Eiche. + * Added --unset to delete a privdata field. + * Version dependency on exceptions. + * Systemd: Add masked property. + Thanks, Sean Whitton + * Fix make install target to work even when git is not configured. + + -- Joey Hess Fri, 10 Jul 2015 22:36:29 -0400 + +propellor (2.5.0) unstable; urgency=medium * cmdProperty' renamed to cmdPropertyEnv to make way for a new, more generic cmdProperty' (API change) * Add docker image related properties. Thanks, Antoine Eiche. + * Export CommandParam, boolSystem, safeSystem, shellEscape, and + * createProcess from Propellor.Property.Cmd, so they are available + for use in constricting your own Properties when using propellor + as a library. + * Improve enter-machine scripts for systemd-nspawn containers to unset most + environment variables. + * Fix Postfix.satellite bug; the default relayhost was set to the + domain, not to smtp.domain as documented. + * Mount /proc inside a chroot before provisioning it, to work around #787227 + * --spin now works when given a short hostname that only resolves to an + ipv6 address. + * Added publish property for systemd-spawn containers, for port publishing. + (Needs systemd version 220.) + * Added bind and bindRo properties for systemd-spawn containers. + * Firewall: Port was changed to a newtype, and the Port and PortRange + constructors of Rules were changed to DPort and DportRange, respectively. + (API change) + * Docker: volume and publish accept Bound FilePath and Bound Port, + respectively. They also continue to accept Strings, for backwards + compatibility. + * Docker: Added environment property. + Thanks Antoine Eiche. - -- Joey Hess Thu, 07 May 2015 12:08:34 -0400 + -- Joey Hess Tue, 09 Jun 2015 17:08:43 -0400 propellor (2.4.0) unstable; urgency=medium diff --git a/debian/control b/debian/control index 2bebd6f..5110778 100644 --- a/debian/control +++ b/debian/control @@ -16,7 +16,7 @@ Build-Depends: libghc-quickcheck2-dev, libghc-mtl-dev, libghc-transformers-dev, - libghc-exceptions-dev, + libghc-exceptions-dev (>= 0.6), Maintainer: Gergely Nagy Standards-Version: 3.9.6 Vcs-Git: git://git.joeyh.name/propellor @@ -38,7 +38,7 @@ Depends: ${misc:Depends}, ${shlibs:Depends}, libghc-quickcheck2-dev, libghc-mtl-dev, libghc-transformers-dev, - libghc-exceptions-dev, + libghc-exceptions-dev (>= 0.6), git, Description: property-based host configuration management in haskell Propellor enures that the system it's run in satisfies a list of diff --git a/doc/usage.mdwn b/doc/usage.mdwn index 4030628..1c306aa 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -71,6 +71,10 @@ and configured in haskell. Sets a field of privdata. The content is read in from stdin. +* propellor --unset field context + + Removes a value from the privdata store. + * propellor --dump field context Outputs the privdata value to stdout. diff --git a/privdata.joey/privdata.gpg b/privdata.joey/privdata.gpg index f677d4c..4dcb4aa 100644 --- a/privdata.joey/privdata.gpg +++ b/privdata.joey/privdata.gpg @@ -1,1425 +1,1427 @@ -----BEGIN PGP MESSAGE----- Version: GnuPG v1 -hQIMA7ODiaEXBlRZAQ/6AqDHj6puM6B5coKNzonqLp23YX2xuSC7OsjJsixcAL4G -+fjXfls7u0qOn6n/pbf6Iv8gfehtdjpvxYJfIMLxaSPFKulxLGp8EJqpXNNbxV+q -4TDthli8TIo9Vmynwab3kR66OXwglmjQWmhlxi+8i7B8+oBVSmoPSPWwch0x3SWi -ubpSEkYHeugybl9mMoPdu0BGz17Y3R4qDXhj9CmD6mnXAKMoH4eqRm///4TuTO9N -mzEhDixQHdru13mDobyXJVFzqId22zqidaSZLl9SP7lqc13vtTvNCDZzVTQo7CX2 -zGFFeTgmcoPLBHNy18M1HgqC8cqIaObkI4NcyK+4a3RfXgMVFLkTAsya9lgrkux7 -UT71ce3pNjJfEha1NSMIJ4Kl5AAPxNGa+LFdIpINlLa9hyVGkR6ayGiSsGnwUtG7 -VUtknHGRZfT8xuAiYonFkqC+TdoW6tuMkaCVi9n2/Fqhe3JalevHBGggkR75qdj3 -dAnqHJ/FLOREmMt4J4A7nR37x2snsK3BdgfArLz2pRNZAdl2fT2924jK7Pzyi53t -mPx7uexvnTcFQ/y/JKnWHN1edBbPapPgWjiYTT7lf5nEEkat04XdpQI9XpK7DHZU -qIl8OYME4BnIOHOAHCL6QlgW4SxAqM0Lxlh/9A0tLw6fRKG66N8+TPApgVZrndXS -7QFKxDSt9OpUWeXcuY804duOaokJnBZU07arXhOOfDBhsL5KqV8NvOkS+IMmpUPr -HdFk7jujnfNlDV47MgGRcLJiEzyDBcF+Iw2N6J4jEvIzA1OzgmdtVd8ZFepLhKEJ -yngyLg2UGpl7K3Wp8Rv9imzhSbqwwULhVKXiBIcOnNzJxuKPOvNmVWEPDOpioibP -SgJNNqbfWpa2XvNVOmMRV1+Zslbpz00FIj4fFRQ+pcoVI64mggNDFXkm7ef3CjsZ -iSH8oeO8Zle9RrCLYSHGYH2lKSx6W839QmCW9bzMcwBM/tD4lzeBQA9AqAkFi0vI -6H0rT/ZI53PQpAYYyQAFIc1j+ZXgr7I08pcMy7RqJzYx8Nx8DLuK5uCDVZ1vhRYc -oeeWma3FAN2cetBh6OjUebVaF3ysy1yMvaWH2DdAt+vT5R3C3nPVh2KZD1C7TLq4 -zIEdXb4V90gJICw03dpfqi6EjoxKqM1mn17DRNDphmUbtl7jNC+q8E+j8zX0Nvhw -4QWJMs58ijViRAUiBGsT07RA19Wv6SmHFhLO2DI4aancXvIiRZwOYdaerBr0SQFH -paDtxzyULEN+XJ6RYhkHz++7rzOW90bA6wEshr0M5O8CDP1YvfPtwE1ppeN4CaGR -LgOWFPavKcDbj424tm2Nf4gFUyNVp3cc8XpfkjsWOFGl9ZoqoL7kEogT1EDtdxWW -p/9AHo6FhOPD/bv+EIIEu7WKTjDQ11oHotOWtmYU2yvs1MUjutJOl/4e7u6lR8dP -f0qhbGlBMEaDdafIi80+TDwW+gpPtwqYqe2LjqosMgBwy9ZvnUdU9N0rejj2hZpX -T089Grktxia/YIue4J8gFZK2Z8mMaGMnBnlU6d1qtidM7xspz78IJWTSt6awnuXz -oFoMoE/Dr2Hy1iA1CkK843UKZtCZApKlPQztE2D1HHFWrRrtPMHl/rFhcWE/nvZo -5imp9I3tyLj5daAZdesiJ44IhEWpqZ8CA8z3+EEAuOEuj8N7F3ho1FZjHrf0HgHn -WS9/CZGA4MrNlLSuyLFNEn0ufQuQwoSi8rBWjP6i+yHf7LhUjOvEZFXJ735RWRvq -Sx8T4SteJXPnrz0gKlAd55VFlrrt50UejMugZp5OuYISak7MBb9X/iefNnH7H+Ep -yZmbIjSM8V0qyGziSqhCpQ0gW3BJDYNm4zkGzLsiwLl7x7kXULuk6Z8MYjQ7RRL7 -wbC5b7AMaXAN/KtClf+xONddSZgKclEWkttnOfiifckxadULm+jLklDFrBY9y2I/ -Q13QUNVocqfPJQT5K65MfcF5abwVArkGdoM6Sq2RmiN7v2iRHvVOKBCTgKd9P7wk -nCLCVR8EwPUUYDx3mxrZ1FkNNfoXrMzYjbnPhbWe0o1NEgJjbBxpd8WCG+0bQKrt -uY3YR9BUsp9PCGPgJQyYVJwgdU5EXrOKJDB2XQyhez3wSTxQCpY3e+KuxZWvE4YA -jOf+gfgTrSREIEMmbmEQ+XMznPm+lhIklRrCAQQpCkwFU/ZZTXgh9uV2cKHtXDAu -+LsI06ir2PsOSDETPr6MBZmlXXT8Dv3oPRHyn5DCsc9ZIh2iOOXDfikiu4QNuMqJ -RQUTb91xjFvOUYzJGEal/fTpIiiL9OEsRyzM1DNnG4a/OA6iadQm5V0vx+XXaT6p -lyxTc9UahRjKsLP+b+gFWLlp1mMAvr+kypk5H5DcmdY+YaFW/mwAIt6KKnOcD2nx -ic/3/VuwhaHZE0qr+FMCdX7Z7DUVlxuISuuo7WC/EvuP2zyK+ddyLxspz/+YpL9N -EPD0HPt3FbTZNF/WHcPndm+egj9ngJ2hopW2XnccruGMHX9Ml+/6aoiQasugKdhr -KXhz5V0dFAMhZ7DL2rYV9dQsN1y3CCDsJtga67+JtYbm2oHjTxMcdIoy7S8yL5fq -UfSQLgoV8TeEGLOEUgEuYQKp3AcjErxgstjaK+UwLG4/qF9OfRI/35G3aC4I33t7 -+Cflw0oX6pX23KpF+ighkZvUIg6mv0vvk0dNhfl1A+TDEaUeeGuocPILMjZuelA4 -2edseJ5mnT88MPMkH3J/3awmSYWchZN6iEu0Xae9j7ofEk+HD0R4x9NuaESAfOQi -ANkM+WpnkPsVJl/cPBWow/2weq/M15+KbcjL+cvK9VZ6E7arVRYWctPzW/p/Lr// -6yZlzQTm/qRynVWqLSN+HBBRM+LqF8zsWTk9Y61YFBQBoBUUeTcaFbzguoaHNYcA -AQcz/qyN/IKJRMNHOdBdbJtmgACeYBBwwpBNkzEGpFGOpf7PCt4hdBwNWKKG9QHu -6WIaKFqUmo2CZ4D7aHCOtEHF8/yjums3F40nkXeuMcycWvjBmp72GJFGfDzbH77p -CvWYVceUF8G9aTIXPn2oUOYBJymDZpCIvT/wSvDY6pbXQhYDYMXmEZpwq2+MfZN0 -I3OxAcTGnN6uj9IRHmm4YvmyzEZyTac+ravBW5uK0GUMYtpCe/A3NB44LD72QC4C -kA6au9Do0Y8wkcHEX71sszd4NvmEn6ToP9AL28+gdiHVjCfGWoyTRY8S16mgbq3Z -0ci/qw2Jrxop+xJAUJv0A0fK5mnnl5d2Hsaag9DiQLVW787rgdsyqzSq1B+yeTMG -cSrwm3Cqce2wj2qTB+ZepMfN9b1t0XpH5+/DyJ/PcnV2CefQk+I5w8bvvw+GRnN3 -E9HoTeCwQxcBL2zs/vMzBvGs4m+VLas955Vdzyt8V1UHSxIAV4TVGuLIS0qFtSwI -9c8jbUuQjHfFGZ4RGqEza49wZ9TybH+jX9KciDL9b7LVYY+BNgcnHtn+1ag0w2IB -0hA/qC5/b+1zbSuQC9Ynko9PIXnUykMPO6plq+2mwHl8PbLMNeWzrXfbOcPEysqf -60E8Z6I7kQr6Ksy6YyoUQ0SmM3ixclxfwzlDMfK9K6/mNE2GFRVNsJEMvD94Cog5 -lxigTFmHPmuFxwDt3yyV7kHXWrz9ePzJaiRalJa1HWWVPXuoXd8PPNVC9oEC9HKU -obO0ki7UYHE0gAvfMyY5Nbj6I/5C/D15CoEa1WHDVdRuCBpzQLf9Lw1fHuDL3zOt -y4TE8CXMLnQ0+aGnZAp24RKds8TlNEiKRzBJyWpSqsOZisWnTa6CUXCoAuw21H9s -hOu0og7m9pOFWhL9dlAhIYjdJ0+lRfmUjP2tKj+beShCeCXT94yGRAw++Mc0fciw -aHxIkMCSm2otuDkowYR7oF8OISiV62HQEE/jY/0tXRgvcTzR1cmk9eFBvahapDZ6 -lhkkL1jKK3iPM5oSDHgNyNpHn47vGZgxaiygLc5vvXSGYVIQYX4baEMPOsrBjKp2 -YevwveDu9q/a8M6Znp499wKVP90VoCdTXPGr7DFH/An9nXimzZgyuYU5RSON4xvY -s9zwWutNtaT5InW1ewAVNYv+GLL+SMwSX9M+L4jbhiCxsQcDdAkFugzy61IjmZDW -Lk3EbuakBAZaYWtCpTSEnEE15g2JaiYtdQC9AMi3kArAo5RWPYKmyVZTcoXx2mk/ -Y3yqn+9013EvjQy688iFOuCHtqUb/VCylw5BQpm91fI7jwc1BNyoR3Vl27ssbk4X -TBJRVcmQSZAWFqKCVO9xS9IDudq734j5ljtCkQfqKJa8jRnwHkyZm0FoPqfCoYFD -ozJ84maf5uSQu6CJ0JDmnZ+M5HQaTrMSHRJCbEi5AbJhI8Q5V92n6CrgV7PAvCHi -Wx0ilY5uA9kZqMjEULFZa6Gzk4Huzxc4C1znNsYnzIvGJ7kA5AykbVXwAEhRjTKT -49e05Eq0OHvqDpSKjH1mtlBvXYZgovtMkhZBsUPMKKs5wpxyrOxx0AcUKXlYHqa7 -xoMZm4+hIa45xdb0Pfba/BAY8ySOnwCVpFiy7o9qz+zuFjIbtMqLxOIoNGq8+7FL -chkUsP29gVjl1EHpsfMhONqpwAI8W6wVeNLRNRBaNEjEDWFbT/6XTRH0XBJvrjMG -xHAwIKOtvxST9UOaYueNHUyXZCmWLVUzBPk4Ow0I4Zme2AXe/Hxc1yUq/7w8sl6g -mN+D1GcXayfNEN2xs1u3fRX2LuEzSYAaGikZHWymkr2r+ulG4XPXDBUPByz/gg0l -ND5b6XP/7EoCrobKYF7md9J3jfcdIOF3QvkdAoZKge5TvLim4LzD6STOww+memaL -62YfQUWTHsULJZ2uITHIzPNvVN+lFUQOMzvZ22rjgBE8/vjzZ0wxR8Rlo5IiLzVH -bzzDHTs8U9wXS+iRN+dpzGHHQEfqnK4QrtLJBKzYAuOZcQoF0xS32p4FZx2+ChSF -p3r74smZeJI1j2s7+Ekw/xAfUQhciGLj9uxLBf1xH4ePg9gaMJ5FFmPMd9K61fsh -1djDdlcXS6NBhIKalMM/8LhlE4ZYNFTK8FRMMxGoba6Q1amm8jIt+BeiXT4REjKT -4wRYm9tZPEtCgOorM4REdSxQWlyNkeIpVyuvKRU+jbSinLKuZehftXbGW2ESDJ71 -s5XW5zPU8TAaiiuJr/aWeT/YOXgUnB+fZS+45DsfmRSHfbHfiBy/fkF9OiTYgrC7 -nWEKHVmw23tsCbyxCRNhhQDcQ/b59rX7hkOlFmVKmi0XSF3RxX/cAcoilkQnkFmc -aI3LTSLOTIbaaMDE1AC81vjWZnaylhY5gFQsXJY/RwsILoUcwFmXfUVt1jRdNnBe -wH1W40WKN970LXlihalhMyTgfP/RcTns6BDk6z6bgKInBapnGwaMEsE4AX8DGVXx -r2fzoOWDsnP0vVMzTmDWxrWKyBsbHN/RryayXxp4lSSN+SnFAKbjsNeu9Fb145zY -Zs53aXCHnpdQjFSyduN705ymSz0EM/i5Gbo/nUrcuUqa2SpL+ar7QPDWi7utAZ2R -vg7ehWsn7qhVV11Fo2H0IpSSeuEfO+TG679/idmNMlNvVCjl0o9g/gZuMJ9vb/NC -VUdYVX1zrcLGFXKKZlIPTOTy1DXlgW37oGez/YO+XQQQm6YKTHAgi5c7O1u5+Ceh -/vtiz1HAeShknbBX3wqZBIRcp6xg6VBIoXMT5FgIm9CWzrUorU8n++xq3vLIhd+M -DA6UqGvXLcQocBe24AVdBuCssbT98N6RAP/P9Pobz7flx8wwppKiNtks+hXKoHtr -2zE7ERSbDYHNZ/erXbJ0/DpQqpQyNo3KybfOwHt3A7bGw7H4jAP+Wth7A/NI0nZa -E0dLWCkEzr/RvOJxVfU9mRFowNR1Ltv2UhH8HVSUREAOSCnd1glDVP1OpDLcZmfp -BmCEpDQYwVxiwD3SaxBsP2XoQinbRKJLe0SXlDKS2qLYsvEIdwyr9DG8yLUFWzcY -QXz2X8iwqSadmVSc21WGtl/3TIN45w1WzeqzN91/xS/0T3ba1b/lfNptJ+RRbadS -q/7zzcus/3h5a+UQnnV21Lzlxqdkk+4MS6ZQwMWclLqHMcCCMdue0/Xl0Gb09QtB -HU4Nd1hL8RtTSwIST30ig3/3GVLpp56c2nxN5RcFVuDJAhDQQrPbgwRDpZhsGz6l -3idWGCl6heUPhEmJ+qnMnLBakDwee0JRti+DWLmKliuBUH2yXePVMBq3YIrzj9aS -o+MX5HT4RZyVvm9DTk8Dmo02Fz6DqWAHwGWHZiY4IXOj+FlC+OdLDx48Hu1xb4+A -kkDQc7t5Crdcl/jzM/Mr4ewX+KLoBapAxO8HBtKgAAhS44laeO8cpKjTSc83zDGs -J6/VeOIIdGsT3kZK7TMJrAdEk4FYpzhUCMfpN9clFSvnxv38IJVPhBbSz7gWAE6q -jSwCYIyriOJVmw9qQdz1v1VZH0ZQQqtBtQFTgifI/fuotlgxnW4W5EQTbsuDX/GZ -ZRt32dJcrX2juSg7gXnnavvd7qxHEInzTJZ4wFbsWH6GwF3iMe/CtkKcGOD3Twe4 -ZO6NywZsz5r2mPLkCeo1sclZvp5UTkvGFuFZ11IBAsHkW1garcUxjE9+AcL7Ti+d -F4qNpefKjb06SbBzhUKzv0vg+Eanl1mcLiSNwz3Yntq2pP9A6jDno35KCKnewPij -NcoX09TFPCMF7Krh+xlvX6vZsg4ftSMEvFfC8wzSdUREEZ7OGIEAHEHJLchzAdZ2 -J8ySBOBXzyHCK5gc5ESi4gX+liZBOcuVyujbJNfa1zNCXdfppNi+Ct95EDcKxgEw -2+Y/ArLTMGFWf4MaMrRWtAWsEKMuB3xrqTuOYEF9zgGVOFQ+COy595ZJpfF/kgiP -UA0x476NDwFZghLYW06Bogw0IyAqeeAFCRh0fM9BmTmk2yHKghyWBa0eBUEObE5t -4seODOZTpspF+bVOGbpiwLaNPhQdct82nLakuIv1+ljKw3FmYdN1lPHWuWjKimN7 -4IuuAF0uRfEcxvYskoehlJyBcld2aqx2qxvbdGHx/rYRoABbTNoodI0tkVEJ0Zih -nWTkoosFa7jXcHjo1L0lHUHLPy74XAk5xoga/IxZO/wkE1OG5ZnK0fbLQ/zk3+aZ -LMjP0MCNFB2BEVdn3zDEkRpZ3evJ5xswRr9scqacRpEVEFkJKLSjdHY5ikTX/qiM -H+RTMy3oepqmWvjFusWvT0W4oaJ8K1zxfH/rR042mIyFsq+AvPf8rmelc8Lcm+Oq -5b3HenMUKyjJMwPb1uiV1Zr2uDiJClfG5ziDbKvSJPVGiyMUOTjYaejl+D93Ljgc -qLNz8oWBIze1P10hqci9Bk+L9YtyE9Rupd/6qQdklWEHs2J6Y8UrRjXhy8j+kF6p -vpqpoZqEMvWVauaIMA+gpUalRV0nVKlY2aBTInHZycffO83koCuKy0ta2f0S0nP9 -lk3rHxpcWTA2KYZ9AZV8ldwZR3po/dryk2iiO2aQPgP2kkvsPkEr4W5E6R1PvC/s -kv+0HdLzFolXZdmIPcKmyE5lJHqfkFlRy7NR6SE1rUB5CuKbxgNsWzKzTOhvBC01 -jzq8EhUA3d4uSq1qGjNMakAAMqgOv2k+xXMwg0FrY5Qu31GDGh8/hCD0hSdKhAhh -q0ly3R9ZsFWQzFJe8CQnKQc3MiVeC1Az5VGBJaqEYttlRcmb3WYmBMmPS7tU/TBA -7bIhnKU6kaTLGENQS/3J5fsGWke0YaLY0MxG2nKm+LusymIjXwzbPeqE/W2hXf2q -g8Pn5gUH/ehzoad+I1pF+KF/lrNFCw0zEyjWrYWgmdLcpMAbGQpFjVXo9WfAaQCp -IMUfVTQ+I8OR/0lV52i8XIrhOK/AXhkgS143mWSZGlsmhh55dwOMt4NrVnr2Bvof -9SfnzdA8DMoId1w+6HBhYCHCDexM+cRalOhRrJtobD8m+rwtn8kGOPdnfdQV0Y07 -QIMxngz9a2G0bTKpB9jA2FZJhnvg36oFUq2bjV6xU97vNtJYHRCUmndJj/v5F2zW -ulKDsALoD2ILUyksRoZN9F+VaNrpGTIQp9f8q0aXBFCH2qf5JHZW3sFzpFI+5JAJ -qg259MB9wG1fG2w6R76D3bgZ6yj2fRpLHxfhKjyXmw+GSgyBxxovuRd+mv38tzQ2 -1b+567aYW63QjVevjiCpAUag7J1lIuVpDaWGSoJhH0Hpp6Vvu+ANfn6I169JW1Ab -+9ATNN2DzV4EZ8+QHsleP2NJdamqoZ3wvl9red8koVg48dbko/siLqOqEuj1kS+r -5U0B4wgbbATpzo20jLe91r1Ts6LhKn2WxCeBpLJEbEv13ITu2PFdOFT9Kdji2UZ0 -I1pSGwghFThD7CxDN136TIjOIUwe/YR+wtp8g0l8hr5qZ7Z0bDNVKtKuZEUiyNbk -QqUiULUvdHwQtgLsKVTUOs3+e8RGQqvH5sJwGYTfU9FE0MPSuUzfN8bwEAg0XtWd -WPsFe5qVlD1QU+bjEy5+xob2pzGWj04/QsvfVfCbPH1mboyjbaOn3AAr/LljDBIR -FAlf+2C5ifQy4c61YuPrjOXzpTbx07xDrbUQ/wViYSKmT3USlFn6qaT190cE6eY0 -AdZ+CEgeNdHYugV+bMfjOFzYEM+ZWYgktXWpMesIyD4EEK1CIxik584F05fWKCDF -iKQ1auhbLyoVqgeh1PjJTOK2T/fC1zHfDE3iB8LAaxFUwo7SXh2UOfPe9RRWeos0 -KlGbzpcP62BPg419fhOF8LaoNJRoBfQy61c4rx9S4mYBjrXTbx0QdAD2XrAGIPrY -/6QE43bpEYF1qoKmn4E9udcW9I3uk6mKZa74UkkpfbmxB9MztOnRRXVGWf6Gr36Z -hOkK4/Nsceh+4/2iuLeZSxQozAb6v/l9l2KXcbp0g+AULqyvldEjBS1g1GeB7OOX -Dtvwe29RMqLe1gzq+/v2n631cKqqrXbRFIKYQgVDB9in8vnzRU6zYw6ifVjcB85T -xsXhDDrWF3o45JKs1is8VCf7Cn5kIrQJygCSjeHgH47UmBZglNfZOrLSUxKX2lZ8 -GZPAv+/F2wC3O3ZuAQuSB5KA+47Xcb7o36maoMeTJeATD+rpoyBJpg2MXiS9140v -MJtYjK7lXPFPCqarOoBUVJaDuvoEzqBkqO6ntNF5pLGj2k7Hm1/BM+4BhsXeq1Xi -GCwB2EhVAGP+Ev1cJKk2r85IZVjJ/w7RblWUzLH0WbkRR6pM/7FLG75TDtWK3U5H -1+zEX3Y85M3gJI9vqzoa/3IMJsEvtiHX+MiTPaITRnp3E+1iSm5qAJp0mzbEoC4i -lHS6sdSGfF9kBNhsCSAFaj3JHxdjU77PXL56SwysoruX0C/CBEOTi+lrk+Mj0BVY -8Bp4op4vr7DfqKaDo8c5GiWc3f2WrfnsfXcixcFQn2I1yOwIewIbZ3eH8got8o4O -LjU1bL+wyJAyWsQcFMboKz0NMaxqWpUfPJOrMQ/XscAlPpD3Noyi7WsbXnYoLUmk -VQf3Fi9v9oONt041U06D3iHR/P3kiZaz+BpUKcUFeHY6+H6AfIcfeW0HDRcUEqp6 -M9AMIYaZA75u1sba3q+v7v34GWIqdQJx01puE6jM2yfp4rcW6JykdrQWrG8lYSnM -pKkPRt2oJo41TcnpnmI57gVj7qaOi36Lt8mo6xXcUxc2a+FzeYh6+Vp058Ohj1aF -7J7co5T0pV3UbNX8aBSnxXr09KwMwoefW3NEHgutJ5OiM+Z4A0yqQhhEKmWC4knM -5M3HAqOnaUtuzHMjccJGjG1INQEbxKD0pMkF97Yd/Y4LERbt37uUz45rhpXmpTrZ -lMnfcpENMPr8ukkeYr5v6o9KeKakhDdrTV0Lxf4D49W4LN84GfVHiDAOxSerMQXJ -EQ0R2toYndQiJwUmQJHJVNyCWuQvuxDkWFaeoe2J4Oi+I1prbOLCJeM0x2Nh45c9 -sg9TUozDseO7T/WRQgDYr+2ZahaGWuBnezZGZcyVuEbEmrwZ+n0BUwfTdaka+2rC -Cy9yaQQU08oHR9Q7ko3fnlNbGUv+cUHrEyMwlBPs5GYxuqsv+R8Qm31D1r1ZGmzo -dqlo+dEITvufUHwbciVLLZUmakJjnyuTlubNbw+Uxy+tBhDArcpZ/uxIZdOWqWlB -1XcnS0JohltlF3wy3StgKSo8PIbI/f4IXBi5IDs9bm2021wtG3ZOrKxqjY3vtLrD -cylhSzzTfTKnnS7hgPyv/CFkKkE3CYcN+2b9Zaijk2rSO5S5tB0whFCTJAWtPepb -KYKfte6Tyh/1A0dzFnmvKJh67IPVpUAK3FkbSPv96dhuw7Mup+LyHR7ueL2OJCDR -wyIteF/+Kd02S0QZl1vTAQQu7bkJfXdOKL/Tnc+oSCLpqUpOxEg5xO2TRaTGRQPD -N2K6/E5OEHcOLKQkpR4lYTBx+dMWavkKNhrQ6yWuDcmt4nyPHAUAICd29YbFgiSp -dPeuXAf/pjDz3H/Ek9wXMQr1yT/gAJzfdmoCTYVWIT1By0LsrLLJop+f4xok7hrq -9mAw3BhgnmOLxDtIgNOP3wWJkYHijfmX5S19AduURNc6pOsukuDSFS5zsQyBiLSM -wqKAo8/IS9qUVCl6eOfiKqkfea9cDFX910y7f7bLd0X39dVhQvejpcEvHSWp330U -jVy5ItA8RWSp/g+YOIbh/fQNRfcHzAJtaQQ4SzrJn0d6wi0Wvb1IQg+C/u8JIIZ5 -/SwxX/PyIdMBjJh2DfdRcjoayS8a9GFi8bgYHFkpRSJboIWPZO9zN6M8gBbPwORg -0PE4cHSwQJe7EWEA41R3cLUZFRUC6j3MkgsIOWl1fWzkEDzDqvpeeDzO1BKYOCle -clNO6YxK169xQxYilg2eTx16QKH3AaRA6B/D53XTL2cG6c84rpz2q0UYtnrVqKnJ -abulkOKbRZU5OFBxDq7wSwYgTREnon3kBKiSaRUxSCz6UryoBQ3htNa2+gvGiZ/1 -1sAHJI6vI1u6OQGXWy9vl0vhu4rkl6/XjfAEnIA5LlPY13OR3EGvXzE51aVEn9Qf -jsfOEHcdTkfCPSdYYNFNfcB1rt0ajMzN/M9n4umBE+rUl9L+jWDkpZsAIXjEVf29 -ec51jfE0DKPVmDZcDwx23eZDhtwWYC87PD0h+NxXXqtA7vZC1wIqGlUApQByYlqL -rcZdE1bi873yGuemNVZ/+ZShY1ohjL8ICK5L0yR9ySjL8a400L7F4kSuRn4MQfez -zbGYEe30QPE/RcpHxw1jmGG68xX/FPf2f4dgpyejU4fDXJYp+DJPiu0heWdprUDs -gPNdB6XSRLXhsIa9rfLGPsJ6S6xGuXjdfohzmDpmghh2xfVj+FzMpYz59327Prow -9GpIKjoUgcnz1iNFfHgixcr218dDRP6+JPc3cxmCIh2aBq/3k7I50RC769AxcwCg -wZj4jX3dW34zppVzP0imfkoUowWroOmaDwl5hcoYbOT7xdn0bDJGNc9Ojy0WXu91 -7mOZmcHovZ4vY/ZLGzFU0gFRn2VJEVQtRdH4U5Ue7UI8A8fewfEQnUga1m/3GYEn -Ey11OAwDArnwp5dnXhQEvpTdr0er6GSQNfu907t3Su2i7RMAhtmYrNWyvqDudp/P -qPEeWOur0mVr2tyKmlcVS+K10K0qgjKQ2hhcBZ0VkPMvwijVprlyU6Aag+hf5Cy3 -6kYrXyj0uO8NfMA+aTVaTctUbClR57oli6/MPzdt2qJgcHl9LQHuyuQLpBr2E1GB -pvGrcILQ8C1Elxa9hGSY7H1cN/C+quMsHF8OhHV9ux7xsW2bnqvxwKeaRh4QyjuQ -UYKERg61GiWlNIVHRDpW+FoKWEbf4mt1s1XPQuFt+Ms0OD96mOWXcLdvrHtOziKr -udZqWdo+cYE0yCrhAvPaNR2Z1dhHOT2wcyn9BR+pac6Euge+yI+71B+RvjHLMStt -950PUmwu/aGCEW6SHLC+W+IYi1/ex6/+EwjCR2HMNIUkLuF7POkqWRelmdyVI8gW -AW13CKaBuXsDXGBGwNR5wuWX2M/kBIzInlxV8Xw75EmeaU4ICew2q7sxn8h+zbGG -wOgf9W50xih7vlkga5MrZL9zyNHu11aWkMC4nI94vNFQXHO94+rMN/3KawdizLnz -yzhf+o+3S0nE67z0zdalIUlhZE2lpZlSrdwDY5anJi6o+md6qswqiWv3UFiX+Shf -KZ0LXpf+I9GflLPyuwylkli028fh/I482HVXKr8KbV667M7cHkVGZyYiFL6I3cII -PjyRxIU4/vqTqAjGumzYDGSNHiCSv3gcgKK7dGZ5v7mUs2guI4C0xXM7S6reF98U -5SDf3LxODQ3jA/bRiv3ex45i0lHEzvcMncuueibLf73EyppyNwBXKc7enk9dsHJa -gH5s+SYa2Z3zU+SrRwbafXqaTZljSyltiI6W18xPO+Cxwc01319qHr5O3VuQxLMp -P8xXyVmf9Y5w9MOigGz6dmza9Xzx5THcfOoZ1iWbsF9GKY5FdrTXFV6lb2Eestlo -rpoy7inT1Ux6838rPBW4WjQpr3e8WmtYsS6kxdyJsi8cK2aLjl37i8N/iUieb6ET -EAYC9sQ4ARhuzndNr5a+2xETHL+BURAb+ynSGNteRiygWhs1RT79xNUsaVPFhBFI -nOK6cDVuuC3jiIYs2BpbU0fsdQkQeMnfsmRv94KVvYvyLOW1LhXaOOt4FVjkozRV -z/CY2Y/drLwvzWgQLzCWYMSOGV1Cnk5DnOXKeJ3YHpnmk4u+baECx3xhjojbHrN6 -HeJCgFlNTh7k4waTeZx82k9uFc/YmhlYqFDX/kYUquVwcI8W5gryTiv14QRuZRer -pxvc8FPC2Vg0qqIi620bVgyvbQD9y3Mdpsb5e6sG4UAzGDZGEng1mJu/kCjP6jEG -t9OgizMAUBnL97WF8ephmjJtZ+Zi3I3yuV2Nz+4H32wwXdSn1B0VGz6Xu/cCJqeB -tDGnRmBnBFaWsQqgtDhdV8hTzJGFuLgmaHS/EVp/WYzP/TejlaCXCWUwBlhd0kgz -Thc4oUoXMQck0CB9ZW/DhO7kaGw9ZoQIwrcZcq1IQfbj1G7Lx6ESvmuGegE6WdFY -rlghaFzx1WW0UEGI+iT9wNT1MBuAjfSpg5p9U6Azs7gpKuYZJF6YSy9EFR8F5P8K -YjG5tUf85M6psbIHLGdz9TxtU8/zaI87shYaNxI686dJ83+d54q0cXTHhAZecNWR -s8Uj1rxNGrh3VUGG5/XRt6Efj0/K6/xQXYhZmFdmg+0DO0wR4mUTBw6mAG31EwAw -DYboVaBW/e5Y7SiolNxh8RWA9pdCcZb+1Y+Lk5BKQQIU/xFjoXWxxX1iq8oOolAX -iAuqzNclq6NnYN9vKXYC/eG6NoHfJaYzs31vi9nhXzCHy0NmiFvGeKy9/EzRwu0v -OG6Bbn+SKVFYiXXIUngoKVsNQbOhlR52f9w2AHQHZ7GNU4nRFBaRyIhPKNhd1jHE -1sJh1qmFGwAlk08Mwrhj6ZrsSfZ2xEwcDt3Vbf3H+ObhuiE0YiyDevqZ41/kV5PW -hnxwuH/9Ek68En2dbEM9UMPAJYRvvsedP5veVoe4enpsimxsMG1z3IajAOz4x5MF -CFqAGWFBE8aqq0cz7lLGl9xQOXE0Z6UPWDzneVuVWpjFeih0eK38Qh04Y2f8wtPs -ZzItCqMciouTmOlQwhlMOLf9a19m41Frt3lQYU6ko1Ws0fxg1mdXZ62wpzB+DWXf -U/iNhb1K/GQc2AMpCphUHkZmRyG6jvLNNlFIKh1er+1FyjhS7GuHxku8HLb9UOC6 -HwgI4egj3vy7TvZ7HwdIdl5Tf01zLdCxQlBgIh5BIgHnMpP3by/Jeiw+SP5i732u -QwWpnrNvvlMsPyDftrEarEqi+arzJDq334EOJ9XEmtzHjRJON530fkP7ify9DncL -ukKgCtoRbNPeErmVEvjsTX/aqVYH/uyujIbNEmcuyJc/JeCcCfrcAxkcaEPIo/7R -F/mD0MMlugkL+8zw+Ts3oSv1vBnA0uhJd1BwSke2qo7Uq2vlDwSQQaIRANLSucIr -X4rqD7W2fvCJvbzzfc8kaBVTH8JDByS2dh7hSZeGcSlWw8psrw2Dx6KQ1V9MKf6j -Ry3JljhY7t+eo/ao8fz/pjFK/pMGaEMYdg/CmCL5jd5KfmH0M1v8rQAywnh2qUz+ -XLHTymIVZVPSkGN+JAs94x7OQ3bfZ8s1j5LgV7Xg1cXsljEEMyF+ZGrOMHnprflC -WlixXcgceEgscgly+5U4CRdXB8huVRa/9Ecvu2OWAqFowZUJ67kT/jrtfgROaiSP -XaZhfLSIWGnYZgQpP87lAGycwX1w2V1CzTTGW3IqMaMul4LrNyWXcITp4RYvz2cz -I2FR56dWQPNw43hOkJPM1zsZJG+8XkTsMUWNdjDGzUN9I+a8y9bq8o52i6AqD6ll -Mqh+icYqK4hJBNtWDnmePGUlmuGo4LGUOqZpwx+lwTUNEfv8OZ6LuhlM7gWcoTyo -csehBo9bL18/qravCXua3QTVyDkMdHvONwFXcnU6CAeQ3Wt/dlMaFa04qn3srJ9t -d02DQp+wYbbW+oODhlwQ0/nLaxJtahPjcRI+GTJmOxztz6Bu3CggsawJAnA4ynFr -QPYnqBTEA3X4HzO/UjQBZvYFqbtoPgId7ZTORHHA9Rv5uSs5Q57qikKrEO96i0Jw -4mLpr20hs1256g2mGN4nOgEleonV/M4xgSeFwOadN4NFfb0S+lqR4mTG0RHQA/j/ -LtvlYVak9JPCKdTSe4tQJ0kShtl90P0MMXUb0h4helxE6o8Yjr7RmcJlSbO3Y6kc -dYdy63oHNExmO6ZDxHOnslYsfvpVhJBUYoaK67z43vgmzgd2FpBkp8c8F5xKRwey -IYUeZhFRJYQkkyWyc25x3sZ1oL/LS1AuM3oT5B66Ny+NEyJVWEUjsglBMWCBAfgT -8JvHXEGBfRqJAT+fZJjafF0sp9nEvBJzaifVPbXc8OVQVausTxl8iZhfdvTO2oa6 -HsCgH6cA72+h2u4Y0E/gYubXYQoSVGDK/1ezu23dBR6VqQ3/TYmpeejEs64juP1x -RmbG46+03JWPKfQu8XdDOc7TfLgrLqzvpQLWX5V83sgRy67HM9vp8gYGZ2HbuT7B -wofowBV4TRexoaml41P9yb7HgiKlGq4rXiJMlNoEO1Ql3VCPKrwHmBmUi1N6T4Ul -Z43VeObhRMRS96I2X2cK9M+lMMY+EBM4cuv8nacJYUZW5h9YVT5o1s+UmIXC/tDP -CZcQMB4gipOGsdQQsr0NLjIZ4m8I/vk/kMhqI0YlUdGeI2LQ04fIbqyEwl7SswG2 -hz6Sy6l06VT3ZgoD+0JBnirmAs7tQaQwdJgYy7CP0AU1OtWQrlvbn3M7HdHXDeFm -Tg238qNXvBXtsm/UGZrnmMwqoAR9iOO/G9ZZcG3QcSfsernlLPF43zjNQKzWvUfc -cD3BNmxxwMnOq0ffkYu2QkZhlrtUs5J3m+c8fPF5HF0sFflFyKIdZJM7bpeWmmYi -6U3l2G/34Pxb/KPfrrEK60SPzvhsuW+bPLQY3MDhiHoaTxio5VwDLwQoAPxRjE/3 -sKIPdO6mZDVA0TjouVhdA7GlpIhsdLPd2ta1wwEjWQ8Y/wpBx+lIolWlSnOD9+gg -5DH+DWxvJX4GgzeSA/muc22dOWCC/rHPIF2kxwHSzVWy4sBxIZfX0srs/ugia2pY -Fh4+mxvPnlXoDNIRzbmeBw+U+z38yUZdFRwU2ZQ/lbyhEjZs9rBl94HnINCMnFaI -o51mV1oYmeyZ5nUTkvhnwORROnxg7NCL+vH5DI1uLsuRblc84KWc46rlAMFM3X35 -P3edbe6HPGFsrpxXGFXh5jzihP0/LF5VJofBDWpra2Qyci/3W6gCoqupgMWpTbyD -u+w4WjYnZnOhzBo4zUMuMg+tzCZ086pglxoC2ciOa9d6dUAzyuAraONV6A8DlHFE -2ZBsFN9OwRmGvppIkCe3BWizMzVSUS6OrYKJyYpFFV2VYWIN3zFi1rgGr9GwWxMe -UihxXcFwHmGivZaY9UhS24cgrKt57nRK5oUHm38azrbr6/z0FIFS89gCsVLYNNgI -V8Eji9zTNHDQgZcC4dwcK6FerQmrbB0uOSOAnAaguudo7oaWMTC7FAu0+22lvR+H -/ub1CyRFtMIrZ0cbsy2v28/fu2t+Lrsscgtl9PZimNKn3OW27l6dFOhzNYZGolrQ -ZFKKbGubzcKK25kw/5WCv4yyNJOzqpejLqIm3ZGjUKqhAz8J1/QZ6JbJY5o4pUFf -40mXvQdwQOtP2vKBrBEq6IAk6WhJgyZ+GDtuMv13BnZivDaK3HVadofoyqFySVv/ -xB9OQu6tuzpySn8Y/1D+8W+WXzL8JL/CFPmQZpeLauNc3IVuYqQi539yIFoLGy+y -53O+S8njDrGEfko5Ex/eMUrHHYqnBzXsBgB2JNXPVTQA2Eq1GT68TJtBaJEO6m0n -sbAjI6N+14Y7IWNF4Hh4JyJ6iUvWrbf8+qKBqHlgP9IHLTW2x+NpmhhAWISme1yJ -HTyEXJhz9aZBYxKyPTOTem8diB4BANJgDfoyDH1TOJX9YeH79KEWUAhPQ1WVDNze -4hW4DYLjiECLdz4dK9WHU0/pSEZO8ozjalaGS0DYE8VoFrNMe4o8kXQzSUgBbqnX -55T1kijPeWaXtxgsXJlftK6afp3w6pgWzatmg8qXIZyOJzhv6l6cY2Ga6ay1Jdgl -ljupJna7qRveuPHSoj4QvjZbbNz9GiLiewI9NijH+Q7jhRlbS+Mwmz6Kazt3CVZs -qZojUjSfjiSa40B7/4MMsIrQZtuSUjNL0XBxGU2TpjdF9UNh/2kd/90ni22GzXSZ -gTS3Rnhy3hjPcmME2xQEh93OqvibOBWwBwTkMIh4TAPHl2p0ApWSdZfzfAueI6Jj -jUDTCROUa2TEenmgZ1L0N/6iCaqPEA3AILRaYjBNihtLKbfdC6Wow0OvM69VrgT9 -TE+YOakgxxei9wKv3dxAVizxzovLgrB8e5r2NgmFAu8feRHLF83q3LGsE9XK579G -12WYMvGxMZ4dnXqAB0qDa/0N0FFVvgylf+7/vOBjHViQB3dG+IsbxwRZK8WfFO1c -UXL+87wdA8lb8AcszDGxYsCMZzHaXF2HPFLHsXjBa5IqlmDb1BQ66CMEU5cx+vkk -NV3oJfj8Syb4tufSot0RYhCf+OR/gckiVG6mCQsDm4n0S+y4q/jB4unlvYXyXjQN -qc4BZS2rfzteLkqL9k/P25Xd+/utnlAXfqn5I10mREBq6PhX9emuDduAmrCjFTZC -IeZUf+m5AazKp8/05J0sE+f5/i41r2o7/45HzB0mcGJiJ6ddkaIeFDTrvO6EAMjH -EFpQC6Rl/6JRZoBpDLiHCg9DFmhxWEJLVi0MzmQHW3nwuZ7sKoZttBTzyi1ZBTkj -KqL+yW/ow9KWf3FODRzcjtvhPADKNNVYM2WNF9PgSwaQ+1rK7vQGaMBCL0G7IM8X -FxERYH5sdT39rDrZVE0jBrrOv+NqooCeiSZ+8tx+rcDCOeNNriYCilHiCyFhSt+J -4dFoPVZSyuQT29N6ElObmauptgelIzXzPQMRgKaUMto90i/dpXarbnK5TE4PhgCv -6udIbegJjrFjIbzBF18ySagIVUOvm7ZjgqA2NgeQLT+A/JDnG6IarqDTvrn64Scq -6MrJtqqElBEhgSRWo8mTc8lU0zckfcbg+O3COkU81bl9YvgZMgkK9Bj7E3cLy5r3 -94DCWLNlQNUi+uEF380pyYHpVUC+MC1W5mF/UkISvQhaV2d5qoVHircBAv4p2rTV -cMeFdqJK8Le8sLkO9OGqEsPl70StuCDoc4eNen9+eI0o8+NJUqqex/RnnvQyFLvt -ZHGonJnxIo219hMvH8qtk1VRgYh2vu5Jlr6AND59tUr7s5Fa6hIQGEYpyGgd1kiv -kY19Kb1AUwD3bS4KfMwAd1gF3be3tiShfxhcVkfNbpmJsyLJ5He9yMom8K2KCGId -j0Uu8vXHBf3HftfxouSO/oN4NaBWo3IFTwyHwmnhJzNJPWZkbRh6CNhVgm7KyPnb -VB9FZiHOE86CYnb1OoIz7LoGxJnaxz+nbik+4RK64mfoQflN25tzuqk5JnIwV7vG -E/wVpgBGGBzbg7tyLZYuwSydINxr8T+Gn64uqEnc+sICZuhG04lWcaGmkzaXCilv -mET6Swd1mJd2uzxVbHMNLliul514+D3rYGk8F5+Fem7sH/ADFrpSbsPSW9mHjU0x -uQ8HdXHWt3qCongruJaTQeID9venCFpWGCiHjy1Ny+40ONCnfamSdGfRthW1frne -JYXUXG77Tsm/rTQlRqUMrNfidFjAbxFaZS1oK8JRkcBkZFau2SyRU6B2/G+3SQGy -++/ef7zdSS7t2Ld9eMcpsOu7RZ1V0BZmCHRb827QBqem75r9J5MAR3U6IvYejUlB -/RZjhiZNC9FqTBeEnKe5Nnedmp0A6HwBZlFFuYRCOqm1Q7ZLa5r4aUXB0OEw0Okw -ocw8EMVDgtbcFvjIgnwxEgRBczPxFibNwqgpksBP93qnAxKm1fuCkCbLEH1H7hzB -rcvUQT7i9a+sHS4TPLpdC4ApG4BDT+5L45s3LlmyIpkwr3F7jsDbDG3ZUJ7KOf19 -hCr7Xj7VvcoB9D9shXU2I0K072SVpmo6tp8rokd2t9+1RY2/yt0yms7Ntz/BpoDX -tnNARVt8oQR7ly+yK+rC9UUGXmESuK9kVoBLAStoVNreiwq7MStPxZ8io33qAAdp -1TklA8YdbSstAwfqrGgaOJ9/dGaEWAVTlX+1hN06XdTtUn/ARQlexcefYkqvvjtL -wJk5fSjsOjLgi3Em8xEiEQn0Zxsdb5HsDxbg31lIyK//ypKc+3Qvytjj+9P1sEMh -8ZK6th4XrK+jNpBkqipJTKHeO8QrRWoLA4K5KP7b+zi9jE/FRXvNW7EgargENXe9 -2DpsjplbVvTxg86jhfbR2L2UP79Rqt6hliGpUbl8FG2zly9Lr0WO84PghmfxEDAQ -nbDs6FBPCZkf42zbJPZREtUuZc3rmZEQYXGFzrKr4GzPsSzzU05krjOPO3ih86Ch -/Cj0MF8CV4Thl9uvxYv0DhuDYgwxY83xVaqPF8eDjBqFhtgvgowP+6/TeikuvVFD -ubC5mkUwSygA8TmmnOm5kMvnLSzAnOv4VC6/SE17iywHPWqiU4wtpvGmjbL1DPos -92kQbPE7EkITKb+bODF2X2hJY02bnHq2tYC+s6PcnfzB+esWzIIN/C//IpGq0F0g -94ak38WMxgW17F3NMAxN0CbwNG5sPNdZZsRL/xHNgggM8Q3DpodaIl2qEFSOilnN -MfiE3ybGMBRMY6A4Rc+4oIBtYzcLEFlxfRxzu5T52CDNFbjPNZ2NjGS0E1iR2cOM -Ous9LPAnmuB5MSIMXaVorXXAh5ZEPoFNq+twBU9/fTOTHyPvpxLJySvyVT4L2yLG -eeVCDDJ/LLLNnp4wY7yAluPTiQ7+cfO1z687d34C0MFUUO61O/yx+ljwjIDoRcU+ -akzI/opDBm+08meCDoXexnvg+KKpl//d5iPv6AC/YBXw4BcNfO0HpCTf+nTPzuWq -wpN3p/Fe2PyyMdVrLEXNd3jZn8cdgHFA/btFIyjrMc50m+mJWOQvfxfEVHD6JvjN -5nIWbTnZMWPqKH66aT9kCB0vnkyrbtVgPlENOfY8+Jd7wQh5D2Rl3qeGuGscWI05 -w0Oh57aq892keZPHdG6USwNEreF9xOfavpahiDkynmyYVdXsGGMwKxRBGpXWVs1d -qYNvgSsl9OYmEzv+yfhbEJ0DO31ggHgPutEqi5E6YthdlC+y+Vvg/QBX8sWpWHqp -WH4ZoUsMb0LX/Mb/7s/Y8VkPgRMvU2dzVXfqT474KO0bHCpc5mX0bXYsTDPs8WO9 -W+YPkD9CJNeWkg18QKATLW/mYN6eVXx/MXajh7ck003BJd/Lws7NPxg1bQXHJcvk -8pZExkuUPxRgzoPnX/ArWGTE6K6Axe25PN/k8q6PYUgIbyF+84a7NZgwGJf7CKNS -ssnKTpp4QJ252O/ittyNks/w5pOkZDhWjo8prZJV8BEbKHU/BjhdPqreODbdRP/E -Wnq3ckULCw3JEz7OLiBtAYw9HySkTY5Fs6evZFqB4oDItxeRP3OroBRcMQzVRMXF -DL12KU17uPd/vovwA9MDZb/I/vgnFt/N8WfOaTEgD8p3ce7Dv87DLPaZYbnfTIBw -on2S+oaORK+FbpPcqrTOt2a6fPUHlq1VIMWhvaw9UCtbT9B4Q93FBIQAfALbeuL/ -yYizbrXF9sBRN6Hv7aO9c053xpvphKupZsMxblCiVlvJhIQ8tfU6yH83qlYvCCqj -FRdjC244A4s37w41xejhoarfYWaCOgJoEErOO0o/plLEXmAbohQ418kjhuJDFYOw -Dcg0nRqDVsnZtFLi6XxZl2i/ZfAJGBlNSkHiyeF17VU6hWhFBxQ0oQWIdP7X3rrx -6JLN7aV7nuwAeQVseqiDuL2Ob5iK+uDncuRh634yJEoiYNru9Adp32d0diJP4iuy -kDUGM0CDhKMZVUwJF2Lq7CTxZ7EZGa2fbBW82Jlf2ngb2SdDICG3sEiuva0y8osW -gZrswcLSwb+FPjK3qWqlNk5ylY6fbrLOieglHcEkcaOwRiKFhDBNtkNoYk8ekI9C -PQmWbirY2sriTexuX6ycFzOGfHXonaCMe8RwyXNRq1tLfVznajc90nUrkERuxZal -34a8ohLNYbYzMAz0L/lH97WZv7uZrAK5kwy5a6YNnMSA5voF+1FHsIs7k+MoLsIl -+knsiRyH2sIfTa/ycAAXf3nmOKXIkLOtbuaK1PQfERd1W0ivQEjuKMVKzfWCGT+6 -R8XVsveOOF63A/MsaLalW+WiJt3UIChCkN2yrzdFLqSV2qnOy0yCBNS5nwtrKew2 -nfqAmvHw0YM212O4v0OXSQR5NQNXOPFtzmQZdpe9xoQZhJDkOQITGQY0olClxlIq -Oh+1EMjEbVG1fDSe7bKrcC1H77xq5QJT2zwfgsoMI0WkflNRdQ/kSeE4Zz1LZBre -3KJdY2WW3H1w9diDlnCfduPmATRmy1mmFW0Ku0taHpxhdWbUGlDv7WfbcaS306QG -NoKjraDDoRYEZ10kfS/e7yeDrtGILl97EwaPxklyTWU/SK5DuHQr9b7+41Hqhnp0 -qT4wSyuZK4hIUArwwNlWjdCjZIDw7eUGWO1OsCrV5ql9tQHTe9Rp/nJ6McxmFuQv -zjIKJU31DaZwJu7zP7xfy/H5SL8UXP3oPya4+8kW/U4ClZEx4fbGwo882UkJUbC1 -ipAdR8TNoyDtTf5SsVoENFLvA9gcaQla2XBRxXXbmV971eyDUFLeueo4LwmirHoJ -o3IGVEnpeg8pQi5BrN0Oi+Zl9yNpq+8UMN6MqAcO8Zd/zM9BjhJohH07RsJGhvEa -ynU1n8LES80lMwXUEkVN9JY7dOGXJhdLwc4hMKyDobWR0GFRX7ho2z37I7HaZf5l -n12AIS3gv6ZTVgHOi8CdUIzhFh+MaVt0Sql41WMCDHCneYh4lZakQBKEqFdwocEm -ny8ur8VE8vF9E08PL3o+zgFkqE4VTkylqtRwcb8jOoyHGMnY2pjU1XQM0mwTwGzC -97VAw3hp6IZ2Ke780dDsqpZThoYzD/reX4rhI9UCbodUnKRA5pQOeCU3bbLi/SIQ -CscmNHG7xzSzH2NeM3NYxk9HM4qW7nYRUfPEShH6zoIEf8gZj59IUfMWNDqWOa1/ -HlDQ3eitwIRSurwjv0Zst42SV0LY27Sek5Lpnyk0nAewfSS88VCTS21e9SuC648K -fTu0YTBK2zqD3cSJJnV9G6ar1R4DbumEbGK57jqck0DE5EszKU8gosazA0fdxBFD -UXN6xHBi6Y78EFYUiSt29KdCE2RQlaVtr9qvxqvYOUWL+gb4nL9bHm6RZZHphYsZ -aQOZUBP4Lu7Y2YLIl+n6Clr5th8NoECUc9ZBtIJV9ME2WBfv5fFjX51H6dCSoKRT -nMoAnaD7BNd3kDA+f6ZoKrgJY/hEFqxSFNR5s6spFskUJLP4Iavbz9k2QDZyWxKw -NlD6LwwjSNBT4iuXnuDv97L27bzR06PjJ4Gb6j0wS+e97meB346rvc3RqIwy6T5d -2I3G2Vr+8Ew7sZVCVtP3ECiS6fmb5uhWHocy+JnGyP3w11l+Tahlb+GP8IHpRaGO -AvFsBa4aALxdcAQNAnnUmlRIAi8H12zYOdYXL+LgUGgCWb+wkj9yrFKGR1Drrl+3 -5XWFPD9lQqyEN9LMGrTNYR6Ez9gHk336FL9J2ndyCpyzTIRFD8Pu9gsmZbD7+BWN -is4Y2U0iATXiNZ1scoS6SE0tkH4tz6PBYrRijK1NyGzX2Qod8CVggvwm4jxLUpNK -8oqbeRi+GYFVMzjq/wPqKqrVyYv1ueACBVtfe4PKlSiXVIFNPTPm7RkihWcOXKvl -oGC8km+SC58n3dM+BBXwrFaO7Z0z5K6LzQkU0aZZV8QVLFS+HH7jSZwzLcfQe9Zb -oEQdrfqYEfriwncD46DxFQiSLnsBXmtnb53UkUEX0COnGw8MTBQ9/oyFgXS1Wem1 -Vruio6/QRc6UPJtVhiGoJGc2fqKgQqI3mhJHbUP+494kjC0hLR+5403uUf6Jn2Np -SK0Hg53LuHxqvWojqXAaiBChTRKDoNg9fFC1+oKIxD6kuFXgCr5NNBWap/JOMd/W -cD/9WwieK+u4dPamnirhAkHldBX1/ffpzFoL1tWQeOBofUSnd5yb+Xforisv2RcU -nd8vQcEa+CTFp7tASQ8zhLu4Q/Yw2fyrdsNcz253LH+iqy3/NdGD/ioGDYOdVjHX -yFyQC+KF5+x3Y/yCeJqFcU8iLNQdtO4k5aTsXtTlnfxoE3sEb0h/tK40FoOExaTi -j+rT5YIEBFGENu3XTYKaGxIcs1RDW1qunhXXcYQps9vpB12GXsbStmJfO3wmFD40 -RCCsga9m8fl1GlFYLu148D7rvHSfAMquDaDVrROhO7Qw/x9I1FJlkFsOKfCyhQpC -dW5zv9w70u1CV0GZpLzrVe53huJ8J9nlr61B5udG6hGKzea6dJeYUhXksA6wt/Xc -0Jn3cAX3CoWvz9uIBmc/0hbP6aVs2fbCBW9DXYftbrAGP5jy3h5DA6y31RXzXkEh -Ju/MITt6EDEN7dEgKKA2YQREUSwHb05CjQRv8FoVQS2PfuAXvEE4ok/Png2q1o7f -XC4L/UeF7rKs7UkgfziUOfrgJc1tQalC/JcAliTHt2c0/ZfXAHt33vpoXRtkAZlx -K3Lsl0dSZ5xITMDTvENnINn9CsrZP2zj4i1csL+gUdEGu5Q+NSeTqTmcnr3I41Ps -zoy5sQwLwyTfvrO2beSkitjoc6txqRUJxA4A82gPpX0PAV35LgDhco/Eoh6hS5WY -pWefSemuPAmVRUh6qb0rEQsqgW+CEXndWT3ltOl128uYNLmgwqXEbZqYQSfpkIdu -VdWKOYcKF5Sd01K0gvA2i2JYEtLWS4MBURbipTWp4XB5bSOXLqK3FrT33cfdpMk+ -/o3Hlu7wFEjrmegtzRenzKkCb4JHBH9m46/yI4OfKjBAVcR8WB1KrAdvBnP1LVn+ -pAVnFD3FP2Yq+Odn0WsunZ5Ng1RawA8jYxJKgAsu48jJWF4TFE64V+2s0VQ92Pfl -rXnUJ7mRlEEOAqrtDLqQvbDE4HmaodKjkz+pRbgQSSeJEI+TeAF+63LbSgOZkw87 -fHDq7FqdlMgsjhFGaEdRDA9ow9ht6p8iGVuP4QIyTzB5dJygc9JMhzOLmDFGoz2O -7ZClti2vSG6/Ho+tLmD+NJkJlfUwPR0ilqzJ5KWy0P6GD8NNQZdNABUgmZ6hwSQv -0NOIkv3e7e+VuCiFFeDg7rDYER1GBy/IBZo0x+zbu5YaGzI8Thi1Odk0x7PCIyl7 -FexWzPX/IQua2VZ5JgzHyB4aOowxdi5B+Go/L8ST4VANGGDBPw4CHxmL8skY/ZBz -Gd//5/kprALMnylLOKJcPGSFUr4VUS6xWv97IxM9i8HWRPkfp222+B90pGyStEgl -pND6EYNh8KEUGUZSq/ulo0JZQHh+x66FWe+W1zDtDQZt7RmJoyu9JUg0aBoYFJIi -8NNwcBKudtVRgoMq05xT6jXHffah8lFtryRLvDjJjsnl5FWjPA7A56mFHyhMGwEh -B4a633PKRfEq8ErL+PPByMfjt0GiyAYhTRJvLIieWiefPBL30ezZdaujQqFXtbZ/ -RU8RZFe8dRriPn9vzPNj0PON6Twi/FI0JAfzZbMehCWZbClSWxPaI1UYmVkX/wGG -uYPJZlr1q0dmDCAphAajG0EMC2IVBWU4vO0HU0SzLl7FTXaTxKYC0NB+6KY/Hh1p -ElhY9NHBn9wMTz5HXL8s27Yau1fbqQTpnVcmXKFMrVvfK2VwQvwCTr5hwiQtoRd7 -FaEWLjDeZLwzaVrg7SaiU3+AJYwTFoEYKUp+wfyGMzugVl3WyKNffQGu+kIBl6EG -lNK7AMevOCt/qRWTYigvN+BUxLQ01fSWGoYxzsUXgiq+A6CaopHsqsc+zOYONiae -0z+bhWk/miXQL3H1nPi+P+bAQxCG2PuHiCqTMDd3mvgmeHO2qmHrPNg4SxPlX+ZH -9K05UR56ZcU4KMZYHstjrBR8M6Vx7DwGwDloOswnheJ4TM1bhdb3QkkRTezUg81m -ErpEg34F9d96uY4uqH7TYNbTbKn1o3y2NiU8cTDqT5jo5bEyeRNyKZTph1AlHv6Q -97Gh3al+n/xYHEokDj7lK9feN2rbK7muQ+UjjaqwLgApMDh38q3QGCtnqm3AHxPL -35lhf8/If7frBHuATHguD+xU7hSRy92RUWTk9SCD1ISNFMccHlzR7JNDqoxkrThL -7gvpxTo3ntg5mEJMiEIWHm6h9u4Mez5r4V8UTk0Mj2ULuDcJ9bCVU63735jAK+Dy -usg5wtgbzF8QG9UoBATHoyrZAP1B6SS0kDtWiqza5xDQlzEh1PXkwQA3t8VHytzf -+hIp79FDIs7zzI6L9orkcuYDEX5vaRClu6cYuqr4VsIvFU9tkpZUXbL87FX5haA8 -OPO+jDmfYVucwlwIJ7i29FYUpQR7C5TyuwMyhkW/nzq6D4Z0jaOKs3LEuEI5TyEH -dR2qpZy4YLmWC6z9lsydujsIOFDwQU2OkFKAUYw9yrhtStJDRHCYiWmXG2QG3yfq -CI8sD/lUc4hAd+f5RitobekX6xGrRJheM0lby0CDRSp91T4CKxuYJTXPqHq/PJW3 -WyP6WoO6XGzp6FjQOkdLhLPaoOFhZKiHr6/mK4GwR9GZbkJHL4GbD79htcSFax9j -WATH2m4xPklgLRuBENdNavf4mpu2PQKp8Ppc8x3UkKqbonEvSR7J4j1Ftbe24uM+ -hVV0Bma18+FSJMSgwvshB6DIG6pDr85SmonUNXvTlM6VkYcO+FJDeg7MBI3KpvpD -OhMsBu1OG6HOFYAohG++zh0jI3cgMssPjLRY+hU2sM/qgMLYwiZehpg8ugG4WNuj -9YRiRsAzACk2OCQ3ku7Lpw9gDzgbv508+heGkLo32aZ6cx/b40TBPtBoo6kQSQ9B -UCgzAFSgoQ5Gv2WbLrz1Po0osIBCpXPrAFAquc5CP0t0KBu70utfET1tsLG9T1eM -wDdZJBqP/DyMf1snJ4wxE2KkhyLoN2Q/LNnBGE9IByDUCfZFsAE/MEflFTrW2pJx -C5Iy+G0nKZsHtke6t6SFI95nomPCXztkQWUh1aWDIerTgS/S/MstL+nE7eLSiKN3 -uRGqIALiC7hNsBLiuJ7l11MjMgWHN62WxwHtMeNBNuIPrztKoX7uZmb0T31ZIPB2 -k0NsmtXLp9xC5cWtfAcnVK7QxZFOzPdS/iOZSCPoeZvKQUq5PCEbHcoJj2bCO45Y -J9oklRdQOHsyOnUmvyS4aRJuX0m1SU13j1as1m6awvLbAVeWVTnecl3BP4sD0wM0 -+GKzZoT5xMfjqYdqDrTFKX9FlB0VRyFQleCHl6eykMDI7ZiZSnyAO0mVgr0FfaZy -DqsEpuzRAz1KpbrtTShZAPiCYPRqjJyJ06fGZMpYi+nNxxistkRQRupjbPn68+BD -caadYCFuuWRn1+ymyhBnEnotZY+rMXUaDkNU0+R+qQlFW7wRNLFA+wVGhbo4y5mM -QceYZQyD5hzXjBQ6KgP7FNgmM97o5VQN+d5/UscfivhgUYxeLuYKiBB8JjfFS2iw -i65dP+weta7b2Dv09DsUeWZtBHtSXQLiSCVOGTkoSXE4WxoSPjOmwPi4XIxGqKyY -RA/yogmYvdqAQSI9fkT0pIVp4kUhzGzNwpJK4JBqD8Fl1/rl3hEwhNxvOeoWo2dw -L2gk943kEO6A4zScnHUR741W/ciIXHSBdvcSXCMf6VEguHqiFIh0YC/zhWNg3EKS -iUaAEkeeJCJX++LgiuwM5mJ+1bX0bE8i6oc/jRuaWcjx4Q1pBTJ1qG21P67zvTUt -WsmQFgAvhNQRis6lUjBEFw4rKLem435MfCAFCUCEHJuO5FkdmOoAoBoVhHnXPggx -YBYS1VY/IH+T5viT3Smy4UL6FKMmZosgc+GDA7OgTb7A+0Bu4dtmeSIlMJV76yi5 -I4IX3GQG4rId9O7j0mAEIbvEudltkaCB8pHiVRVzcvL2W9ThaVPqsrdShZDEJD+R -Z/oJRfl4q9Vbe0l1ADycUz3HduExWu2D64hJz5Vlz4c+Oam59b+9XS2aggJYoj9f -t98bqpSyLgsFg+Vr5nbi7kX38tHdTR/Xdz/sFFHDZQmAtYPShkwrGwRdogWHCihq -ZYbeIc2pvsuMKGwQnQrvt0Bc82gGHjRa29w3Qd8ukWvW7SG6HYCivyGiOa14eRMb -9nbktC7XShgRNKCQA0N3AHDLWH5Ht5NyV4DzJCkFqzvcZaWqnAT/nh1BnrXG7zXJ -JWn5ELOepgOWDgGqILy2cgkGQKNWEOoDX61Y8NNFikSmp0vuk2507zI8oqlxfvYG -1rjEae/kpf2VEWDg2V9nEpMcgosxl9BHA1KmYe7xdbkwkPos1sfMf/MeiElYYMKW -ZdYgGwiYg3Gxn3XguzFbA14dHwYincCR2fyCeD6UmFk6g/WHzaO2ATlQPWKIVzRW -oAXwNsqPh4gpsEiD0iMxITJAb0ZGxSA3s0L4e4dVbL8jHMbhInsms9ckRK00et67 -myUTv8YswPnApmO+9mUtET2bf42J/LraQg7Nm6XQOWSdZCbi+uarww5JyoA4vLup -/083Gu4JCl1B+bOgrbn9DiUGJYwqGwR8uYTIY+yoP5LT+Grt6mcpN6IdClRxccLR -5Sb74o9pW/pOEEaWjU89V3M06GL7GC01MTQDCNYuRKMdL6qQcRRmfvhYak0LLPvP -zN5zWZbPXdsHpwF11hwQf3CfNFoJmnGtFefOfIcNA8mOxLfMMbD69qj6DenAreL8 -rWByYpcplubdKgWwBQKtiZnW9tpMy1sMRvN0hjbifjOu2LgUPsQFPvr7OG2gy8n1 -uEPUeokR20faADNtw11TRHxGB4KIfvvHeNLDgtQpaoOLfa2Jg79YiCSAIkjLbK8Z -MH5vsvT568+Tb3fTatFyhuN/r8NuI6sd/QKMrgauiP+606Mo7iBBazVMGMdt+Obc -vbdL/3NR0e3YP79dgcRpAICbODyijV6tWTVoQaE03n30XFaQ6WHD7KD/Z0D3JYcN -HyA1P8GngXwI5/EC+WWm0LqBtjsVlskaUyu3WUM1MQJRZo+hS2/Ei2at75h+3gq3 -a9LKskVZS1TKZieE00MISiVjeGSxel4J+o8WExk6LO0BhOJQDjY1KF5MLmt9P23j -rZN6INQwI63NRSIQwaxoXoMgcsLyphNSHqlTGyQhIqJBI/BQqTCUpT6/UiOADc7k -PmDzTVLOcaeVH3xix63aX41oSzXvPDZgmV3Nv3dPBcVM0ch2geY4r/aYRWv0Rola -bbcG82lIl5w4WnGHvPeZdVx0P3zQSNyOYmEO5IrZx3+cdsbIKLowIUjtG0883tlN -6pqioOMZJMCTZ9NOIOiYLSy2w26rlKzLAfrUJ6RrhhqPizGInXKNv8n1fW/IRp4o -xzZsh8Fi0d+skulI1GPNuuiWZaOlqlWRetq+gnXFKSeQSBMszDqH+1w8kyJg7ETC -kASKAZpuzo8nCDubb5wSNw/gJB/2hi1aM9MyAjyEnZ4+di8HLr2NU5ZnlDJMw0BD -pTl90ABPyt3dmDQ2/KDJq+gxLXdQzGwmaKBNDBfoFw7JchaVfEdn5VvuQs2qqJvB -cuoC98MvyDCLONFPdFn/e2wovK1e5osvVjFLkTDBPRDWcqfGZ/YjUb9FlFqI83TV -vhf+8D+EslBUJhhOuSnKkaBglCO2bNpKP5AKzokk3kRg958q56urZ0qOA15KAWRg -IqMB3qr7p+XxqHg0RLYlsg0NIHea/XFp2clp4b9L4IDVAO/2EEKplYFJcEuwFQm9 -B6Q9NjCaGYL4Pp0Es1Bis5o7tK+CdJxKy8/E74OPYkZTRSKyvpExgDnlqf/XwRM3 -hEKoiheMp+orGSYilx+FBjVZ8eDhCwjy+E0/lHmO/ljVc0zdRLqasL0z0TfJtqDW -S52qT/w0lAqf9PNLMfmA0d0IMpqRq8e79PRk6YsX3dx7a4fE2moPmRMRpP9H1XZX -Pu6FIiMRR0dAD/7/44Eke7/v5BtrXF8vWIXsdXJsiryQVm31QwjBGARwF9HMODI+ -klVDTG7XRdnjLS+WXFNenJu8PfRpDbTEH8HJRrO/xiBZpbWrbRyiT6T9ibxkM+5J -I3swQNoj4R++euOsGqPmvfK11Ya3d7yNjwffvQGInmY739guXhwVSwwMFoaEirhe -+GHECJvAtHBMynPTeYQ0pT43sT45oxzughZumZCUO4wfyCxBO7YyOcoP4yysXpVl -hVeqzAyjMnSzbBY5AkRM/AKk3hj6BSVwSG2ISA3fLBYZzwJjNlZoKa30f/0zSr15 -RNgnkz00eupipqWXMMBLWbHCEfxHpH+kOs+yufu4L8FeV+zLhmXARupkzzej9W5E -foRe95OPZU4QF2DkTs4XiiewWl3gXL394V82TEw8hm6I+oukIjXrADxMf4AaoSPa -p9nkS22j4oQeAiQSE0y6nilE153+W0gFC45rZK/ijrG7C8MUAmNsXmUToPTGuGXA -HmdxnC31AE5ncyvIjhoGCc9nro3clrCeUT2GOYizLp6rKgNXHVIBHc4E/I3x76Rk -ao413H/9imBhWTuea9idu3WPijp1lNLjtoRwbSHKGAz1z718y7lnJnxYVrOz9RoK -v1126pGIEdY1WiFh/koepf7dLTo0RjWxwPEdxouHUt1ejtw43lzjl5P3zpUD/3vI -eJY4rLo/B8OQSFeoMNwtGU6FWpPTFObwlQOTk/Iu/pbNaxYC2BcTSc224A9yFfWK -4x71v5rF4RTJL+509/D5GnxBThdZhQGd7sxQ7og7kbVNZfOWyK7ehietmC7Yg3Mz -AzHuWtYpckamxMX/LFvi1z21MuuNa9E4Kq39WKXdeL1E7G7P3w8h83Kj0Uh4U2Rz -74Ad/PDICQ8U4AjT//ZZQ5bezWFhMSNPl2aLBuFbCXCtJ7D2+zUBZ87t9HzYpTnN -3E5tFVua6viAcsKs4OSeLXNxWK8OQRVlXOepIa3zeWaRD51ey1sbpFVUKSV7/due -PCpTSn+JHZz52y0hxpiCjpAW7HZaLUZxFUiVVORqFssO0shXTL8qGSQdLatc424D -UdGn0Hw1CCKrn5Y4LC7dqTSUwsfIofFNkRq5czB1OQQXNTvmWTA8gLmz+sWEb4Uu -AJTspDAHVaEbZrPFWJVvYTCQFU5X/vHnLLTiqabIPzUyIURzTKJSSShsLWSdbjiv -D58SRDh4Wi2YbrRzmk1a3gTD0P4xX8dHCySwIN47T0pYNaE0jH/zIKaw1+uoQK4e -Xj2hnOCuqc55hcVCYhsM4xEaoQdjybYXg1Q5x8lItNeSQosBMjGR9H25X5UUfjRb -w3zW+85rcYa/hyn6wkAeshzwFVVE+a4VxAqibxGcAJnbYs+OrVwtEF4VWykmLqnX -kjzBdRIFD9o/UYl6PGKce+M9TlWuvwClFdKrkyS8om9F+ezagHiyMiKJNJaXAApT -yVwl2NueMNGhcbK43sSBgbvCoy519vB6jR8Vy3X0clRc/mlxrSfTxdYJN6lWMOSQ -V53NLBuvUKNdvt3b9UORaFnAaEsSbE1J9Qb1IC277sa1ilmNqmDyykzeNQ95IqGj -z9eTCxfgLQphIC8WiepEJlGYWCxcr2lfBuEhl5z2N5KtPwNO6rGhbTkvDDFDkLyK -y46Qc3yHcs7+ztq42T9J6iALmlWH1FpCJk5fiiyXn3gRmNgTfhsb3ln6QL8/r0TG -8SJDsmBLshfmcaDv8N9AptDKW8KV9zz/cdPI0lMvnpbAucNYjMXXttO7gBnS/aZF -wi72nzZblpJrKMYftoCww6ime995TI6Ff4G2dTbXIZ2UV9kNdg3nRXVWCOncDiOu -f9W6VUB5t9sbpJ2PJWREOc276nOmhAivDsVt/F2qJNQAtcI3Lu+XeHZ5h82IyYnj -Zt+CSLQWkuSmCVEcmax4NjmW6HatcsEKV4xFH+162/Vri/j28/Fff+GCVNsLomG5 -iy8c9mpf4Qq//sZepe3abNKyXf35oa4zdjA5ZGR4Ui6HQ117cPjNOIINxxsQQtyy -CautoyiRX/X8lYpFfG/I17yAaLWM/3yEBiU6TFbh3qUiatw5/d/4fl7QTNv8kdHi -yZsA29h3K5FkbQGjjUPSjUEsEhb/Snc+WWL7/71UWoFWQmwaYnKFx+LQDFG6dV8K -TuhQwoyD/bF5qiFE7ecyt4eTNXOIsl39PP8U4W4F3HI852DYnol4+c1Rb9rltM11 -s/7LLMxUEWUASS/fbIT8k9Pf3kqTYwnq3J6nWThrVsM7CzWnh7bPiHsOYMeEwSSk -G+ecvNglXORu8iTAb9ijnFaCQKH4VqZqWaEo/joP1TsXeSe3KS3QXEvf7253Cw8i -ViakGEzCkgExlxsXykD8SEgdv4RHcZLu44MVFoh100PxvB/EpY+/3ChMXE+9BKmh -mGwiwDZKZwVQE017c8Qk42Wi0kcTqvwZYCWV6cPCXP87Ie9xrZkYBDpPMiCcNmiV -Po3HmbROOvaBr++XF056sHA/CprWXVmeBQghIkdBYT/DFTfjz3Mlcw/ziySrnOXp -2hSN1cE95YZgS/5/0lKHCUKkHOC1w7p5gR4riBY8dJWeHHEAltZ8x2V8KskGecrx -ppHPpKMG0zGwuTkqZ3TIiRwewMmJzOJIeCFCXZP7MiCAdY0piMpYuFtw1dgPc3u6 -peKkefbPIVMVHUORK0OfVyDdzeyAQwqOr5Q96sHKbgZN93/YNof83AcFAjBZ/x6Z -W2epzw82EG6Avz/Kt3jeIljitrZv6LNu/X7N1XzINM09p3Yr4gxkD3hcwCc8bz47 -PEk0KrK/pWX7TlHzvCsaVyTDe4legVo10kYRmTyv/oF23Rr7N/2W0DHjla/aLFZS -M1WfQXiWh40kj4URvQ69qGdXUsRdz/itSnzLdonPS+GUnZ7G1mk7hzw9CjYYPrux -L4uO6gqp8411PxfnZsNMR6MsiZ7YAh/f0TtWBVGShY7tDCRAoM1AETavf+JXFkc+ -ii2Kg4C7f1VVP7J1F6MEiMb8XP2YW/ro2i+9kMkWz6+vIw2UVYhWFWzBRLToZdTL -JDIEXtNI6tnYYFWIPvZnc9gdxy1NiDy3TXAoYr+GRtaJDoewHjMy5maJjoPTIMXg -wp3X0TZy19iMTRaaEy3BlEOXk8fW8Xcs6o84UEjcdHNm/Wuyh93H4KgchGTdn5u8 -03BW/BheziKQVNdiuYvcRlRp6sQx90DnXVx+I4sJwP/yLj8MmCfy6RcRtBo5AOXN -cf0smIFzay6jwKPWxxYTmJqCeROFqMm8h20QM1KO7xJhl+g9MeYGIlj9PQk6I+i2 -+Mr3xk6OSQoeIxlbfiVXRdsI5vfIktHS884GTOY6usg7mX7KmW/ZxudU8eJOlnL3 -t9hFqWBvsCw2ham9F8rYOLWQwhu3I6GZeNmp5+9hdZ5+gVaM2ATwBB+dRR3ryeEv -cF664RK53Yrik/M8/1YmzMYhj+w8trWaO3OrCqjhuDc1uyKRfPAIfqjASELZ/rcW -BkXhSVSCqoK9LFIuVDW0qXzvivA+lxenkXTFvuHrsTKWbclwTUyLRiXqmfszHD4C -n7D2c7RcJkQjSEKYoKE9Xf+7lxmTBN0wn1CTRaVSO/8YZqE0+z0XGq9LNYLJinMj -5VigYVeoZ0EJxUKBrn2H/lo3oSt61FtL1C15SfIxJ2CI47C/U0oj2v0CBXj9TyBh -M+fjCiCfhdglBbGLCja+heDUSgN24x2IuGjB0nbkG6sK+mCvFGcpKd14h333Lp2Q -D0nMFwibTeaOPmlLL/Vz8ZVogcz2HlYKNNKyF+6vK56o9VDInLSz9KoRIL43TntH -fgAE5Dfgd1kaDKTaFaxR1XKk4nWZT9gz1h1BB2YxUwwHNFv/GxArOpIOz7SQaGU9 -Qfe9JDM0UE5UVk8d6sMxR/fGK4VAy7NNWbDOlyEWv+8z0UorwxCs6zBrlXk7LYra -b+igb327a7bItqfgr7y1FNYzmOmCbEybmmbPz4LkuZK61KJxXiiCo9FXdVSJ0w2X -o9AEBEkE0bA8T+LELb6ww5cuWr5RPn1VxUzQiZJOjv5lNAclazedA4ChERJDGkBA -K1AvcVTTIJJ2ri8WPKHo4WrO0jLXaViC7LG3drruGQzAkM1g45MxPCvIkgsCvuJh -WG5xbjrQKK5Qx7C3OrPehVQe5QAeRIvwtV67Y0U3ooUCVKGqpV/dPqszWMzh8Tl/ -28y77JiIIBDI4rdxogCNjIIF3rcSZGwXXU6fn78wiZABgX+bFh05xjFu7BndW9by -nGkujLEfHeJ584hgWjRom2EA2KWHRnM1QedWXUHpLyoCvC5anN5qFUzLUJ6kgFk3 -K5++pzmZi9cl6nv9ZMiisvEHWlj4WzRIPP4Z0cuuFT55RXAvQopdsrwSzbcCrfSA -jQnRMAHf9jQIjTRmkpPFR9e5Z6XYVbM2BU9tpumz3vJ4DOfedvMyGmAdM/Xvfzbf -YwtxTFqD8iMtn7BPtsWp61lyutP13i539coX9rTxCnI+m/6EJoXN3afoYb0tmeKG -gT8KaMLUS0VhRv1w1GoyQ7lT/3TGUf68D46EYaLx2vgs+6Xz/4PV+yI9uvMsQcG9 -dag77Yf7N26ZeVPbihsw1WXdN9iWYmWZszHydei0Ch97lr41/N90RgyOuOd57HPM -GOBNykedrYFeSK//AQmreVfj5xHgAdo9krR6F3qOvSuPiP5ZS2G+EofJzeKaEAcG -ci8w7UWQ57Fqp6ykT97bqZoeg3wZsYjYoQOgcRqYX9qYJjEMW6pktq08NEH+nNIq -wR3SBmegbe4Rd8cCh/WknF0KRIZftF+r2smvBimZ0g7zTNxrisvth/88wjPhWqOZ -UoCKh0ywakX6TPW5G/pSWFzp+LpNRrBvcVJgcLc5XMkS3PDvUWVPTaCYMv0xKjYs -B+MH+/hKMegfelUmm9Q8UrtKsjc7m24CzMz9xk8YCBolNA0wIpTe2VWPhG6JSwp9 -rchCylPs1nScaujUHfdIl+yk1iF730qurtPCxFT5NIqbykC3Qnzs12jwEgAn8Ztu -tF2zubhi3ZdOJuYsKAyOwFxOSVLUUf17IvypAVk/LrVAVFE+GWbF0mmkY03rJeEl -fhZfOkGzXwfj6bKD9H0S5yeJqhdkdEVN2iOLV4YYyORZQo0EKN71TxU5vNJjSjaG -vfvkWHaXPlXQEXyypT9k16tdoCyu+xPpebtNiMPeW9gwwSJDou18BP9bektsQU1L -HOXsulOgqACQo3+BN2EZ51q6Uyu1Hw/ljY4OzRWOUGK50/1KzUFlIqCWvelv1br/ -NgcnPSRERVIhr25lFIk2/csb+gZRtQihny8oLWEemRy+pXlQECTfqjPmFLzfp5R9 -9v3PCRlodR+rbfqj+sJpvMh18p5kOzT2fhM6hxSf0PP/06ne9Uzch1zfM4WVzdaW -gthnEgc4/coMR+zehQPBp0FG04k3nlj0ANI0MTG5IXbPDr5yyY+4vssn62GuhnhR -kOozbatoFgx4Taf2EW1GqEYe/oCE0w2p9UpTxEA0Y43e6ZE72vT3Gm7VFiQW1npN -XEI6nurPRA81FhkbIMIAcF/OO78oHRrQNP5oOkGYh8y+HEpbcod1qGKhVhqdzx3x -mW03YaWMbNLwSni0HsbwLAXwEsZBlAr4KcXfw/YMy3N7HGz6ZEa24nzWR2Fqccxn -p+5EHEk8YBe6RHMKbPYK+LrsOrCL1WXHiUPVs67KE4sDWW8c7KrkQ4ZcfvaKOSmV -x09/IfdnlgzopZ+PFjWOmZpwHOtloDHZUvg3ia22Ay5G9qy87172jdD5AhsB264J -7VLTqgfqE7e9I05Uj5n8NtvvQV+th7oOUgVgRWQLdvu+LSr3H2ANPBfQzO7+56jg -mQzZQAzjIic0QkL+dGn1NXvUUyZt0u+HJooC83QR6aPznimUGCrj13424uWKNhTa -eTj0sJDNarIG/mOYjqWOEBZXLC4oVhxg2Bc7JajMr778fPd1RgoOJDiID79qvqzq -ELgCGGw7qTkY7w5tAO0fRdi2nHhuklpkxwDBEcHC21KL7TNu4Ao3c+A3cJ6Nyxyk -ryWlyJDpEJPjy5xAhtZzT4A3gd5ggCVcWvoqsvi0VIXxhn0jdovlV4U2JTma/tmJ -2KNOgs9qfefOOiYQ9GKT+58gyFfvTA2kCj1ptD+wSKEAJiQIJmhxhVCB4t3F4aWU -LLD0p1XS7TOpGLJVIZfboGBsWDPzxwXbfPbEDNPPkDq3v0ARHQBsHl6vFciQ1OZy -fS9X5HST5/s03v24EyRw4fgNLJh3p5lQ5JVCvRQTNYadhGZL9bW9mOBgSotxtD1F -uC1+XRWwXLjAPR7XeXknLePH9ijq87gP2DylZxV3rDhssnJoTAhHGe2qdzuk06ER -gE5hMjGUXShMg0H1ECTpW0Rbr3XAcDH65W3yQul8njOoSN3RYF1uVv3RJY3MbA/u -BqvO8jyDuh3fyHuWAnQy/r3oKxjjQ2tkGlithmO/BCSkOOXJae8Nz04q9hOCxOhd -IaGvC86i+moX284UxyoGZ8a8G0obcfCGT2ilg44cXrAECubT+/L/XUslm54F/8Ji -KetPRxnk0jBhflv8zMLEDL6duK90fRDiZxV7aUHlLCsbQpCoJ2ZOWRnpcLFkh3/g -HVS7eOJkWq9R6hbDPC6S5v1y5m6SfYWcieRBqnHY6xnGX5ZSo4pZXX7MxxqAaVvu -1o+4I+3ehEl133xMDLeAieesi9+ppTW/VJTaxMynjO7tZ+oPLlROjO4UjohjL4RD -OcJbZfER/K/ky9rG6HFuqnAaXGWMUmAigakGt33Jq48UGqn/X1zovl/SUwvHHRkV -/VXdO3bglfWZNR3ynB3viDNDfJVHIvum9gS99nfJkGXavp0mhGMgUph3n4iPl2sf -UhHxEBTdAthhDnnlVo01jyNeOFIGDt0NQ3cKzI87wLhbTkW40LLYY0schyxACwp4 -mHtJtgM+wHSDZnowYGEcl+CiIgEuucH9xa8no9U/ZTWzzfeshuavtSsPy7xcipuM -sX4JIvtuf1y2R8dNgZApR5qZfHE6pJ8jDqTXpmA10IGODApmFMLapxCY2j50YkjD -D52vGGxgVneX1W/B9mc+IyoSAGQOOiTHvjigVJ1QzUXi7XoZ+YYMjWLn11Mm8khI -tLd8hFM0JL5/C/Cw4Q78DZQBK7iLfI7Hu0Oixx2rlZVzywy9Vf4EbKMn60rKLpgA -eV5gIPkxOfHjwaI5fcDsi+WuertJBoGAseRm7sXUCxgUWTSJG/GLxgzEEUEclYbu -GAlm+YsTOtTohWXtJ9B6GXxBEKoCYDFBnhndHrLOSvHjNYAC7LHK4IwGjIdHHip0 -+ybXPjhupoqJGcBecxuk1z6pKApjtZao8KxC9Gmm5d6Mht4Xn+BPfXlNHH6k0Jnp -Q+mqTWDrv5OHFDZLrzxw+VjD7Vr+fWARjn3A9y6awwvTqJp509lfqFTqhws2DAHp -FxiKgE5xUDuy1U8Rpn3g0ynn55MJoGxWDmgCFN2bgjcuHjSgWJXh7AyG3c6RaxTZ -Lt5NcodEn0OJJFJWVhly/RfKR9EJYcnAWpPd8kGsh2KNh92f3k9q7BHI99ygFG25 -XQmfhdAbgi7363TRt688r61ecZXjOmlmL186cGsQ7npOl2dOJA+G0q8dJv6Z26yQ -5g0Osx/lEMa+KEbWpKWZ5rsnXIdv/VjPLrYi66IAkbX9yWRiQfvHtcD+oXEJXXsw -x+Gna2VvWT9pDlxUPbrqFUtcY7ddJ7XxUaVJvMwLf+syWK6VxI8sUhP5RC3E+nf0 -ucM9awE8yraWAZLsN8XEN5jANSNXLQ8LZjyV1ZNPsaIS4RjpcRYlXrcCHLLOKE26 -D9VuvDP6jyclCP7xPNcRu58FoM0EjjzJ1/I0Icql7VhkAApBLlbio7mijXOWphFw -VQMOl24M38ge40/DxMpxzFi6KkzvcAEPyBtzKkfIo5/iufdy3xOFH6rMrgCFpGK1 -wqVq1F1AD9BbXQlyAFQWCkR++DNHJpAeIj5wNukb1B2jKxBzRjACmPHYp5jBVkma -k0zZcIIZZN15jfVV76OHCXsaen2UEXB8b1BHnvZVLydn/MLu/jlaQWvfJX2m3pk2 -MLvKtPHUJKyB5wawVupV/UjH/6YmgPU116axe+zeEnzU1oKROT9KulEVgO5RZM/Y -T2Ls0yZIrhx3WFzXXfdKJPJffltI9teZSBU+vDtu1AiaFMdYV+yI/0ZKy9YVO27u -x3/3jXyTP84KqKVaT6POIFWGhNJ4uLU7QVGYcuS1yGyQtPr4/PndOcY6TmSin0mN -nhlr7RxiLDMYABaJ2E9pXVNPEQCNQ1Ca2GY6ksdmEcM1ERkEaFvN2gLUtjlKEuJx -U06y9K3WU8A7kubra7VcqTHI50sxY0wZmMRGMG/Fwumw+OqOvLezOdQ+8ZQwRqAS -P2GY1B5rNFaP1pi5otij5emF4Fn9fP4d7lHUgZdcrq1syGyY8LEF8h9BVq2HcOLt -iSyZ8VdS6xvWbZDI3qVyE/fYGfZhSw9kq0zBbv0fmIXepw4g69A9QEbsuFFZFlrc -DfQaqcXA5cNw6J9s3YebFdnZ6eSA4gCQImIOniCye2BguK5l0+0up4XzCbyCXKnm -3quPGKCXE5JqR5qGnmizMe4hIsgzNKq/ktlMiLYMNTixEkUN5Hh5n4InH7gm90ja -+7CCFPJKZbXzndwvWoz40bFLy/LzbcBPSPVVwXY25/f96s6lzp8wsGqeZ0OQ9XCT -2sosDlmQXxy2Xxp37YECERuBqzPMQVpy/Kes9PGbC6dGmy4qP7GssYl8ztIDWic2 -R3XfoEaAAI+gR9N4RXBT3FxGjf7S/SzoiNYIcegn4GKpT7rC58fVTpOpJh9YBcCt -89MOBaJ46z6vCs+kd+jleDHngYqHrrYGgVdQmWfB3dK0eAF7KLQvii4zEXmo8izH -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 -xTN1saAlAOPFBaRJjXr2 -=YFGf +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 +QBJeSTqTRVf1SqlKvnK+Vw== +=wcvM -----END PGP MESSAGE----- diff --git a/propellor.cabal b/propellor.cabal index 16dffe3..01c867c 100644 --- a/propellor.cabal +++ b/propellor.cabal @@ -1,6 +1,6 @@ Name: propellor -Version: 2.4.0 -Cabal-Version: >= 1.6 +Version: 2.7.0 +Cabal-Version: >= 1.8 License: BSD3 Maintainer: Joey Hess Author: Joey Hess @@ -38,7 +38,7 @@ Executable propellor Build-Depends: MissingH, directory, filepath, base >= 4.5, base < 5, IfElse, process, bytestring, hslogger, unix-compat, ansi-terminal, containers, network, async, time, QuickCheck, mtl, transformers, - exceptions + exceptions (>= 0.6) if (! os(windows)) Build-Depends: unix @@ -121,6 +121,7 @@ Library Propellor.Exception Propellor.Types Propellor.Types.Chroot + Propellor.Types.Container Propellor.Types.Docker Propellor.Types.Dns Propellor.Types.Empty diff --git a/src/Propellor/Bootstrap.hs b/src/Propellor/Bootstrap.hs index 51ba69a..1cf921c 100644 --- a/src/Propellor/Bootstrap.hs +++ b/src/Propellor/Bootstrap.hs @@ -6,7 +6,6 @@ module Propellor.Bootstrap ( ) where import Propellor -import Utility.SafeCommand import System.Posix.Files import Data.List diff --git a/src/Propellor/CmdLine.hs b/src/Propellor/CmdLine.hs index 1298daf..95a633e 100644 --- a/src/Propellor/CmdLine.hs +++ b/src/Propellor/CmdLine.hs @@ -7,7 +7,7 @@ import System.Environment (getArgs) import Data.List import System.Exit import System.PosixCompat -import qualified Network.BSD +import Network.Socket import Propellor import Propellor.Gpg @@ -18,7 +18,6 @@ import Propellor.Types.CmdLine import qualified Propellor.Property.Docker as Docker import qualified Propellor.Property.Chroot as Chroot import qualified Propellor.Shim as Shim -import Utility.SafeCommand usage :: Handle -> IO () usage h = hPutStrLn h $ unlines @@ -52,6 +51,7 @@ processCmdLine = go =<< getArgs _ -> Spin <$> mapM hostname ps <*> pure Nothing go ("--add-key":k:[]) = return $ AddKey k go ("--set":f:c:[]) = withprivfield f c Set + go ("--unset":f:c:[]) = withprivfield f c Unset go ("--dump":f:c:[]) = withprivfield f c Dump go ("--edit":f:c:[]) = withprivfield f c Edit go ("--list-fields":[]) = return ListFields @@ -95,6 +95,7 @@ defaultMain hostlist = do go _ (Continue cmdline) = go False cmdline go _ Check = return () go _ (Set field context) = setPrivData field context + go _ (Unset field context) = unsetPrivData field context go _ (Dump field context) = dumpPrivData field context go _ (Edit field context) = editPrivData field context go _ ListFields = listPrivDataFields hostlist @@ -166,9 +167,15 @@ updateFirst' cmdline next = ifM fetchOrigin , next ) +-- Gets the fully qualified domain name, given a string that might be +-- a short name to look up in the DNS. hostname :: String -> IO HostName -hostname s - | "." `isInfixOf` s = pure s - | otherwise = do - h <- Network.BSD.getHostByName s - return (Network.BSD.hostName h) +hostname s = go =<< catchDefaultIO [] dnslookup + where + dnslookup = getAddrInfo (Just canonname) (Just s) Nothing + canonname = defaultHints { addrFlags = [AI_CANONNAME] } + go (AddrInfo { addrCanonName = Just v } : _) = pure v + go _ + | "." `isInfixOf` s = pure s -- assume it's a fqdn + | otherwise = + error $ "cannot find host " ++ s ++ " in the DNS" diff --git a/src/Propellor/Git.hs b/src/Propellor/Git.hs index 34bc43e..0b9b4b3 100644 --- a/src/Propellor/Git.hs +++ b/src/Propellor/Git.hs @@ -3,7 +3,6 @@ module Propellor.Git where import Propellor import Propellor.PrivData.Paths import Propellor.Gpg -import Utility.SafeCommand import Utility.FileMode getCurrentBranch :: IO String diff --git a/src/Propellor/PrivData.hs b/src/Propellor/PrivData.hs index 71aa820..d0426e7 100644 --- a/src/Propellor/PrivData.hs +++ b/src/Propellor/PrivData.hs @@ -6,6 +6,7 @@ module Propellor.PrivData ( withSomePrivData, addPrivData, setPrivData, + unsetPrivData, dumpPrivData, editPrivData, filterPrivData, @@ -143,6 +144,11 @@ setPrivData field context = do putStrLn "Enter private data on stdin; ctrl-D when done:" setPrivDataTo field context =<< hGetContentsStrict stdin +unsetPrivData :: PrivDataField -> Context -> IO () +unsetPrivData field context = do + modifyPrivData $ M.delete (field, context) + putStrLn "Private data unset." + dumpPrivData :: PrivDataField -> Context -> IO () dumpPrivData field context = maybe (error "Requested privdata is not set.") putStrLn @@ -192,17 +198,22 @@ listPrivDataFields hosts = do setPrivDataTo :: PrivDataField -> Context -> PrivData -> IO () setPrivDataTo field context value = do - makePrivDataDir - m <- decryptPrivData - let m' = M.insert (field, context) (chomp value) m - gpgEncrypt privDataFile (show m') + modifyPrivData set putStrLn "Private data set." - void $ boolSystem "git" [Param "add", File privDataFile] where + set = M.insert (field, context) (chomp value) chomp s | end s == "\n" = chomp (beginning s) | otherwise = s +modifyPrivData :: (PrivMap -> PrivMap) -> IO () +modifyPrivData f = do + makePrivDataDir + m <- decryptPrivData + let m' = f m + gpgEncrypt privDataFile (show m') + void $ boolSystem "git" [Param "add", File privDataFile] + decryptPrivData :: IO PrivMap decryptPrivData = fromMaybe M.empty . readish <$> gpgDecrypt privDataFile diff --git a/src/Propellor/Property.hs b/src/Propellor/Property.hs index 1801902..b90d5b8 100644 --- a/src/Propellor/Property.hs +++ b/src/Propellor/Property.hs @@ -54,6 +54,41 @@ onChange = combineWith $ \p hook -> do return $ r <> r' _ -> return r +-- | Same as `onChange` except that if property y fails, a flag file +-- is generated. On next run, if the flag file is present, property y +-- is executed even if property x doesn't change. +-- +-- With `onChange`, if y fails, the property x `onChange` y returns +-- `FailedChange`. But if this property is applied again, it returns +-- `NoChange`. This behavior can cause trouble... +onChangeFlagOnFail + :: (Combines (Property x) (Property y)) + => FilePath + -> Property x + -> Property y + -> CombinedType (Property x) (Property y) +onChangeFlagOnFail flagfile p1 p2 = + combineWith go p1 p2 + where + go s1 s2 = do + r1 <- s1 + case r1 of + MadeChange -> flagFailed s2 + _ -> ifM (liftIO $ doesFileExist flagfile) + (flagFailed s2 + , return r1 + ) + flagFailed s = do + r <- s + liftIO $ case r of + FailedChange -> createFlagFile + _ -> removeFlagFile + return r + createFlagFile = unlessM (doesFileExist flagfile) $ do + createDirectoryIfMissing True (takeDirectory flagfile) + writeFile flagfile "" + removeFlagFile = whenM (doesFileExist flagfile) $ removeFile flagfile + -- | Alias for @flip describe@ (==>) :: IsProp (Property i) => Desc -> Property i -> Property i (==>) = flip describe diff --git a/src/Propellor/Property/Apache.hs b/src/Propellor/Property/Apache.hs index a7c7e69..fe81dcd 100644 --- a/src/Propellor/Property/Apache.hs +++ b/src/Propellor/Property/Apache.hs @@ -4,7 +4,6 @@ import Propellor import qualified Propellor.Property.File as File import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.Service as Service -import Utility.SafeCommand type ConfigFile = [String] diff --git a/src/Propellor/Property/Chroot.hs b/src/Propellor/Property/Chroot.hs index e56cb6e..ded108b 100644 --- a/src/Propellor/Property/Chroot.hs +++ b/src/Propellor/Property/Chroot.hs @@ -19,7 +19,7 @@ import Propellor.Property.Chroot.Util import qualified Propellor.Property.Debootstrap as Debootstrap import qualified Propellor.Property.Systemd.Core as Systemd import qualified Propellor.Shim as Shim -import Utility.SafeCommand +import Propellor.Property.Mount import qualified Data.Map as M import Data.List.Utils @@ -56,8 +56,9 @@ debootstrapped system conf location = case system of -- | Ensures that the chroot exists and is provisioned according to its -- properties. -- --- Reverting this property removes the chroot. Note that it does not ensure --- that any processes that might be running inside the chroot are stopped. +-- Reverting this property removes the chroot. Anything mounted inside it +-- is first unmounted. Note that it does not ensure that any processes +-- that might be running inside the chroot are stopped. provisioned :: Chroot -> RevertableProperty provisioned c = provisioned' (propigateChrootInfo c) c False @@ -69,7 +70,7 @@ provisioned' propigator c@(Chroot loc system builderconf _) systemdonly = where go desc a = propertyList (chrootDesc c desc) [a] - setup = propellChroot c (inChrootProcess c) systemdonly + setup = propellChroot c (inChrootProcess (not systemdonly) c) systemdonly `requires` toProp built built = case (system, builderconf) of @@ -94,7 +95,7 @@ chrootInfo (Chroot loc _ _ h) = mempty { _chrootinfo = mempty { _chroots = M.singleton loc h } } -- | Propellor is run inside the chroot to provision it. -propellChroot :: Chroot -> ([String] -> CreateProcess) -> Bool -> Property NoInfo +propellChroot :: Chroot -> ([String] -> IO (CreateProcess, IO ())) -> Bool -> Property NoInfo propellChroot c@(Chroot loc _ _ _) mkproc systemdonly = property (chrootDesc c "provisioned") $ do let d = localdir shimdir c let me = localdir "propellor" @@ -117,19 +118,21 @@ propellChroot c@(Chroot loc _ _ _) mkproc systemdonly = property (chrootDesc c " , File localdir, File mntpnt ] ) - + chainprovision shim = do parenthost <- asks hostName cmd <- liftIO $ toChain parenthost c systemdonly pe <- liftIO standardPathEnv - let p = mkproc + (p, cleanup) <- liftIO $ mkproc [ shim , "--continue" , show cmd ] let p' = p { env = Just pe } - liftIO $ withHandle StdoutHandle createProcessSuccess p' + r <- liftIO $ withHandle StdoutHandle createProcessSuccess p' processChainOutput + liftIO cleanup + return r toChain :: HostName -> Chroot -> Bool -> IO CmdLine toChain parenthost (Chroot loc _ _ _) systemdonly = do @@ -156,8 +159,22 @@ chain hostlist (ChrootChain hn loc systemdonly onconsole) = putStrLn $ "\n" ++ show r chain _ _ = errorMessage "bad chain command" -inChrootProcess :: Chroot -> [String] -> CreateProcess -inChrootProcess (Chroot loc _ _ _) cmd = proc "chroot" (loc:cmd) +inChrootProcess :: Bool -> Chroot -> [String] -> IO (CreateProcess, IO ()) +inChrootProcess keepprocmounted (Chroot loc _ _ _) cmd = do + mountproc + return (proc "chroot" (loc:cmd), cleanup) + where + -- /proc needs to be mounted in the chroot for the linker to use + -- /proc/self/exe which is necessary for some commands to work + mountproc = unlessM (elem procloc <$> mountPointsBelow loc) $ + void $ mount "proc" "proc" procloc + + procloc = loc "proc" + + cleanup + | keepprocmounted = noop + | otherwise = whenM (elem procloc <$> mountPointsBelow loc) $ + umountLazy procloc provisioningLock :: FilePath -> FilePath provisioningLock containerloc = "chroot" mungeloc containerloc ++ ".lock" diff --git a/src/Propellor/Property/Cmd.hs b/src/Propellor/Property/Cmd.hs index 859302c..23816a9 100644 --- a/src/Propellor/Property/Cmd.hs +++ b/src/Propellor/Property/Cmd.hs @@ -1,22 +1,32 @@ {-# LANGUAGE PackageImports #-} module Propellor.Property.Cmd ( + -- * Properties for running commands and scripts cmdProperty, cmdProperty', cmdPropertyEnv, + Script, scriptProperty, userScriptProperty, + -- * Lower-level interface for running commands + CommandParam(..), + boolSystem, + boolSystemEnv, + safeSystem, + safeSystemEnv, + shellEscape, + createProcess, ) where import Control.Applicative import Data.List import "mtl" Control.Monad.Reader -import System.Process (CreateProcess) import Propellor.Types import Propellor.Property import Utility.SafeCommand import Utility.Env +import Utility.Process (createProcess, CreateProcess) -- | A property that can be satisfied by running a command. -- @@ -40,15 +50,18 @@ cmdPropertyEnv cmd params env = property desc $ liftIO $ do where desc = unwords $ cmd : params --- | A property that can be satisfied by running a series of shell commands. -scriptProperty :: [String] -> Property NoInfo +-- | A series of shell commands. (Without a leading hashbang.) +type Script = [String] + +-- | A property that can be satisfied by running a script. +scriptProperty :: Script -> Property NoInfo scriptProperty script = cmdProperty "sh" ["-c", shellcmd] where shellcmd = intercalate " ; " ("set -e" : script) --- | A property that can satisfied by running a series of shell commands, +-- | A property that can satisfied by running a script -- as user (cd'd to their home directory). -userScriptProperty :: User -> [String] -> Property NoInfo +userScriptProperty :: User -> Script -> Property NoInfo userScriptProperty (User user) script = cmdProperty "su" ["--shell", "/bin/sh", "-c", shellcmd, user] where shellcmd = intercalate " ; " ("set -e" : "cd" : script) diff --git a/src/Propellor/Property/Cron.hs b/src/Propellor/Property/Cron.hs index d2feaf3..e9bb93a 100644 --- a/src/Propellor/Property/Cron.hs +++ b/src/Propellor/Property/Cron.hs @@ -4,7 +4,6 @@ import Propellor import qualified Propellor.Property.File as File import qualified Propellor.Property.Apt as Apt import Propellor.Bootstrap -import Utility.SafeCommand import Utility.FileMode import Data.Char diff --git a/src/Propellor/Property/Debootstrap.hs b/src/Propellor/Property/Debootstrap.hs index 5d6a8be..8d974eb 100644 --- a/src/Propellor/Property/Debootstrap.hs +++ b/src/Propellor/Property/Debootstrap.hs @@ -15,7 +15,6 @@ import qualified Propellor.Property.Apt as Apt import Propellor.Property.Chroot.Util import Propellor.Property.Mount import Utility.Path -import Utility.SafeCommand import Utility.FileMode import Data.List @@ -107,9 +106,7 @@ unpopulated d = null <$> catchDefaultIO [] (dirContents d) removetarget :: FilePath -> IO () removetarget target = do - submnts <- filter (\p -> simplifyPath p /= simplifyPath target) - . filter (dirContains target) - <$> mountPoints + submnts <- mountPointsBelow target forM_ submnts umountLazy removeDirectoryRecursive target diff --git a/src/Propellor/Property/Docker.hs b/src/Propellor/Property/Docker.hs index fdc312c..05f25c3 100644 --- a/src/Propellor/Property/Docker.hs +++ b/src/Propellor/Property/Docker.hs @@ -16,22 +16,26 @@ module Propellor.Property.Docker ( memoryLimited, garbageCollected, tweaked, - Image, + Image(..), + latestImage, ContainerName, Container, HasImage(..), -- * Container configuration dns, hostname, + Publishable, publish, expose, user, + Mountable, volume, volumes_from, workdir, memory, cpuShares, link, + environment, ContainerAlias, restartAlways, restartOnFailure, @@ -43,12 +47,12 @@ module Propellor.Property.Docker ( import Propellor hiding (init) import Propellor.Types.Docker +import Propellor.Types.Container import Propellor.Types.CmdLine import qualified Propellor.Property.File as File import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.Cmd as Cmd import qualified Propellor.Shim as Shim -import Utility.SafeCommand import Utility.Path import Utility.ThreadScheduler @@ -152,8 +156,8 @@ docked ctr@(Container _ h) = imageBuilt :: HasImage c => FilePath -> c -> Property NoInfo imageBuilt directory ctr = describe built msg where - msg = "docker image " ++ image ++ " built from " ++ directory - built = Cmd.cmdProperty' dockercmd ["build", "--tag", image, "./"] workDir + msg = "docker image " ++ (imageIdentifier image) ++ " built from " ++ directory + built = Cmd.cmdProperty' dockercmd ["build", "--tag", imageIdentifier image, "./"] workDir workDir p = p { cwd = Just directory } image = getImageName ctr @@ -161,8 +165,8 @@ imageBuilt directory ctr = describe built msg imagePulled :: HasImage c => c -> Property NoInfo imagePulled ctr = describe pulled msg where - msg = "docker image " ++ image ++ " pulled" - pulled = Cmd.cmdProperty dockercmd ["pull", image] + msg = "docker image " ++ (imageIdentifier image) ++ " pulled" + pulled = Cmd.cmdProperty dockercmd ["pull", imageIdentifier image] image = getImageName ctr propigateContainerInfo :: (IsProp (Property i)) => Container -> Property i -> Property HasInfo @@ -240,8 +244,52 @@ data ContainerInfo = ContainerInfo Image [RunParam] -- | Parameters to pass to `docker run` when creating a container. type RunParam = String --- | A docker image, that can be used to run a container. -type Image = String +-- | ImageID is an image identifier to perform action on images. An +-- ImageID can be the name of an container image, a UID, etc. +-- +-- It just encapsulates a String to avoid the definition of a String +-- instance of ImageIdentifier. +newtype ImageID = ImageID String + +-- | Used to perform Docker action on an image. +-- +-- Minimal complete definition: `imageIdentifier` +class ImageIdentifier i where + -- | For internal purposes only. + toImageID :: i -> ImageID + toImageID = ImageID . imageIdentifier + -- | A string that Docker can use as an image identifier. + imageIdentifier :: i -> String + +instance ImageIdentifier ImageID where + imageIdentifier (ImageID i) = i + toImageID = id + +-- | A docker image, that can be used to run a container. The user has +-- to specify a name and can provide an optional tag. +-- See +-- for more information. +data Image = Image + { repository :: String + , tag :: Maybe String + } + deriving (Eq, Read, Show) + +-- | Defines a Docker image without any tag. This is considered by +-- Docker as the latest image of the provided repository. +latestImage :: String -> Image +latestImage repo = Image repo Nothing + +instance ImageIdentifier Image where + -- | The format of the imageIdentifier of an `Image` is: + -- repository | repository:tag + imageIdentifier i = repository i ++ (maybe "" ((++) ":") $ tag i) + +-- | The UID of an image. This UID is generated by Docker. +newtype ImageUID = ImageUID String + +instance ImageIdentifier ImageUID where + imageIdentifier (ImageUID uid) = uid -- | Set custom dns server for container. dns :: String -> Property HasInfo @@ -255,10 +303,19 @@ hostname = runProp "hostname" name :: String -> Property HasInfo name = runProp "name" +class Publishable p where + toPublish :: p -> String + +instance Publishable (Bound Port) where + toPublish p = show (hostSide p) ++ ":" ++ show (containerSide p) + +-- | string format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort +instance Publishable String where + toPublish = id + -- | Publish a container's port to the host --- (format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort) -publish :: String -> Property HasInfo -publish = runProp "publish" +publish :: Publishable p => p -> Property HasInfo +publish = runProp "publish" . toPublish -- | Expose a container's port without publishing it. expose :: String -> Property HasInfo @@ -268,11 +325,21 @@ expose = runProp "expose" user :: String -> Property HasInfo user = runProp "user" --- | Mount a volume --- Create a bind mount with: [host-dir]:[container-dir]:[rw|ro] +class Mountable p where + toMount :: p -> String + +instance Mountable (Bound FilePath) where + toMount p = hostSide p ++ ":" ++ containerSide p + +-- | string format: [host-dir]:[container-dir]:[rw|ro] +-- -- With just a directory, creates a volume in the container. -volume :: String -> Property HasInfo -volume = runProp "volume" +instance Mountable String where + toMount = id + +-- | Mount a volume +volume :: Mountable v => v -> Property HasInfo +volume = runProp "volume" . toMount -- | Mount a volume from the specified container into the current -- container. @@ -327,6 +394,11 @@ restartOnFailure (Just n) = runProp "restart" ("on-failure:" ++ show n) restartNever :: Property HasInfo restartNever = runProp "restart" "no" +-- | Set environment variable with a tuple composed by the environment +-- variable name and its value. +environment :: (String, String) -> Property HasInfo +environment (k, v) = runProp "env" $ k ++ "=" ++ v + -- | A container is identified by its name, and the host -- on which it's deployed. data ContainerId = ContainerId @@ -397,7 +469,9 @@ runningContainer cid@(ContainerId hn cn) image runps = containerDesc cid $ prope return FailedChange restartcontainer = do - oldimage <- liftIO $ fromMaybe image <$> commitContainer cid + oldimage <- liftIO $ + fromMaybe (toImageID image) . fmap toImageID <$> + commitContainer cid void $ liftIO $ removeContainer cid go oldimage @@ -426,16 +500,14 @@ runningContainer cid@(ContainerId hn cn) image runps = containerDesc cid $ prope retry (n-1) a _ -> return v - go img = do - liftIO $ do - clearProvisionedFlag cid - createDirectoryIfMissing True (takeDirectory $ identFile cid) - shim <- liftIO $ Shim.setup (localdir "propellor") Nothing (localdir shimdir cid) - liftIO $ writeFile (identFile cid) (show ident) - ensureProperty $ property "run" $ liftIO $ - toResult <$> runContainer img - (runps ++ ["-i", "-d", "-t"]) - [shim, "--continue", show (DockerInit (fromContainerId cid))] + go img = liftIO $ do + clearProvisionedFlag cid + createDirectoryIfMissing True (takeDirectory $ identFile cid) + shim <- Shim.setup (localdir "propellor") Nothing (localdir shimdir cid) + writeFile (identFile cid) (show ident) + toResult <$> runContainer img + (runps ++ ["-i", "-d", "-t"]) + [shim, "--continue", show (DockerInit (fromContainerId cid))] -- | Called when propellor is running inside a docker container. -- The string should be the container's ContainerId. @@ -536,20 +608,20 @@ removeContainer :: ContainerId -> IO Bool removeContainer cid = catchBoolIO $ snd <$> processTranscript dockercmd ["rm", fromContainerId cid ] Nothing -removeImage :: Image -> IO Bool +removeImage :: ImageIdentifier i => i -> IO Bool removeImage image = catchBoolIO $ - snd <$> processTranscript dockercmd ["rmi", image ] Nothing + snd <$> processTranscript dockercmd ["rmi", imageIdentifier image] Nothing -runContainer :: Image -> [RunParam] -> [String] -> IO Bool +runContainer :: ImageIdentifier i => i -> [RunParam] -> [String] -> IO Bool runContainer image ps cmd = boolSystem dockercmd $ map Param $ - "run" : (ps ++ image : cmd) + "run" : (ps ++ (imageIdentifier image) : cmd) inContainerProcess :: ContainerId -> [String] -> [String] -> CreateProcess inContainerProcess cid ps cmd = proc dockercmd ("exec" : ps ++ [fromContainerId cid] ++ cmd) -commitContainer :: ContainerId -> IO (Maybe Image) +commitContainer :: ContainerId -> IO (Maybe ImageUID) commitContainer cid = catchMaybeIO $ - takeWhile (/= '\n') + ImageUID . takeWhile (/= '\n') <$> readProcess dockercmd ["commit", fromContainerId cid] data ContainerFilter = RunningContainers | AllContainers @@ -567,8 +639,8 @@ listContainers status = | otherwise = baseps baseps = ["ps", "--no-trunc"] -listImages :: IO [Image] -listImages = lines <$> readProcess dockercmd ["images", "--all", "--quiet"] +listImages :: IO [ImageUID] +listImages = map ImageUID . lines <$> readProcess dockercmd ["images", "--all", "--quiet"] runProp :: String -> RunParam -> Property HasInfo runProp field val = pureInfoProperty (param) $ dockerInfo $ diff --git a/src/Propellor/Property/Firewall.hs b/src/Propellor/Property/Firewall.hs index 66292c8..d643b18 100644 --- a/src/Propellor/Property/Firewall.hs +++ b/src/Propellor/Property/Firewall.hs @@ -9,7 +9,6 @@ module Propellor.Property.Firewall ( Target(..), Proto(..), Rules(..), - Port, ConnectionState(..) ) where @@ -18,7 +17,6 @@ import Data.Char import Data.List import Propellor -import Utility.SafeCommand import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.Network as Network @@ -46,8 +44,8 @@ toIpTable r = map Param $ toIpTableArg :: Rules -> [String] toIpTableArg Everything = [] toIpTableArg (Proto proto) = ["-p", map toLower $ show proto] -toIpTableArg (Port port) = ["--dport", show port] -toIpTableArg (PortRange (f,t)) = ["--dport", show f ++ ":" ++ show t] +toIpTableArg (DPort port) = ["--dport", show port] +toIpTableArg (DPortRange (f,t)) = ["--dport", show f ++ ":" ++ show t] toIpTableArg (IFace iface) = ["-i", iface] toIpTableArg (Ctstate states) = ["-m", "conntrack","--ctstate", concat $ intersperse "," (map show states)] toIpTableArg (r :- r') = toIpTableArg r <> toIpTableArg r' @@ -56,33 +54,31 @@ data Rule = Rule { ruleChain :: Chain , ruleTarget :: Target , ruleRules :: Rules - } deriving (Eq, Show, Read) + } deriving (Eq, Show) data Chain = INPUT | OUTPUT | FORWARD - deriving (Eq,Show,Read) + deriving (Eq, Show) data Target = ACCEPT | REJECT | DROP | LOG - deriving (Eq,Show,Read) + deriving (Eq, Show) data Proto = TCP | UDP | ICMP - deriving (Eq,Show,Read) - -type Port = Int + deriving (Eq, Show) data ConnectionState = ESTABLISHED | RELATED | NEW | INVALID - deriving (Eq,Show,Read) + deriving (Eq, Show) data Rules = Everything | Proto Proto -- ^There is actually some order dependency between proto and port so this should be a specific -- data type with proto + ports - | Port Port - | PortRange (Port,Port) + | DPort Port + | DPortRange (Port,Port) | IFace Network.Interface | Ctstate [ ConnectionState ] | Rules :- Rules -- ^Combine two rules - deriving (Eq,Show,Read) + deriving (Eq, Show) infixl 0 :- diff --git a/src/Propellor/Property/Git.hs b/src/Propellor/Property/Git.hs index 0fc2261..48871b4 100644 --- a/src/Propellor/Property/Git.hs +++ b/src/Propellor/Property/Git.hs @@ -4,7 +4,6 @@ import Propellor import Propellor.Property.File import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.Service as Service -import Utility.SafeCommand import Data.List diff --git a/src/Propellor/Property/Mount.hs b/src/Propellor/Property/Mount.hs index f4d1030..ff47f4d 100644 --- a/src/Propellor/Property/Mount.hs +++ b/src/Propellor/Property/Mount.hs @@ -1,23 +1,33 @@ module Propellor.Property.Mount where import Propellor -import Utility.SafeCommand +import Utility.Path type FsType = String type Source = String +-- | Lists all mount points of the system. mountPoints :: IO [FilePath] mountPoints = lines <$> readProcess "findmnt" ["-rn", "--output", "target"] +-- | Finds all filesystems mounted inside the specified directory. +mountPointsBelow :: FilePath -> IO [FilePath] +mountPointsBelow target = filter (\p -> simplifyPath p /= simplifyPath target) + . filter (dirContains target) + <$> mountPoints + +-- | Filesystem type mounted at a given location. getFsType :: FilePath -> IO (Maybe FsType) getFsType mnt = catchDefaultIO Nothing $ headMaybe . lines <$> readProcess "findmnt" ["-n", mnt, "--output", "fstype"] +-- | Unmounts a device, lazily so any running processes don't block it. umountLazy :: FilePath -> IO () umountLazy mnt = unlessM (boolSystem "umount" [ Param "-l", Param mnt ]) $ errorMessage $ "failed unmounting " ++ mnt +-- | Mounts a device. mount :: FsType -> Source -> FilePath -> IO Bool mount fs src mnt = boolSystem "mount" [Param "-t", Param fs, Param src, Param mnt] diff --git a/src/Propellor/Property/OS.hs b/src/Propellor/Property/OS.hs index 11fa6c8..5364456 100644 --- a/src/Propellor/Property/OS.hs +++ b/src/Propellor/Property/OS.hs @@ -16,7 +16,6 @@ import qualified Propellor.Property.File as File import qualified Propellor.Property.Reboot as Reboot import Propellor.Property.Mount import Propellor.Property.Chroot.Util (stdPATH) -import Utility.SafeCommand import System.Posix.Files (rename, fileExist) import Control.Exception (throw) diff --git a/src/Propellor/Property/Obnam.hs b/src/Propellor/Property/Obnam.hs index da27e26..94b023f 100644 --- a/src/Propellor/Property/Obnam.hs +++ b/src/Propellor/Property/Obnam.hs @@ -4,7 +4,6 @@ import Propellor import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.Cron as Cron import qualified Propellor.Property.Gpg as Gpg -import Utility.SafeCommand import Data.List diff --git a/src/Propellor/Property/Postfix.hs b/src/Propellor/Property/Postfix.hs index 073d5dc..b062cba 100644 --- a/src/Propellor/Property/Postfix.hs +++ b/src/Propellor/Property/Postfix.hs @@ -22,10 +22,11 @@ reloaded :: Property NoInfo reloaded = Service.reloaded "postfix" -- | Configures postfix as a satellite system, which --- relays all mail through a relay host, which defaults to smtp.domain. +-- relays all mail through a relay host, which defaults to smtp.domain, +-- but can be changed by @mainCf "relayhost"@. -- -- The smarthost may refuse to relay mail on to other domains, without --- futher coniguration/keys. But this should be enough to get cron job +-- further configuration/keys. But this should be enough to get cron job -- mail flowing to a place where it will be seen. satellite :: Property NoInfo satellite = check (not <$> mainCfIsSet "relayhost") setup @@ -34,14 +35,14 @@ satellite = check (not <$> mainCfIsSet "relayhost") setup setup = trivial $ property "postfix satellite system" $ do hn <- asks hostName let (_, domain) = separate (== '.') hn - ensureProperties + ensureProperties [ Apt.reConfigure "postfix" [ ("postfix/main_mailer_type", "select", "Satellite system") , ("postfix/root_address", "string", "root") , ("postfix/destinations", "string", "localhost") , ("postfix/mailname", "string", hn) ] - , mainCf ("relayhost", domain) + , mainCf ("relayhost", "smtp." ++ domain) `onChange` reloaded ] @@ -57,7 +58,7 @@ mappedFile f setup = setup f `onChange` cmdProperty "postmap" [f] -- | Run newaliases command, which should be done after changing --- . +-- @/etc/aliases@. newaliases :: Property NoInfo newaliases = trivial $ cmdProperty "newaliases" [] @@ -65,7 +66,7 @@ newaliases = trivial $ cmdProperty "newaliases" [] mainCfFile :: FilePath mainCfFile = "/etc/postfix/main.cf" --- | Sets a main.cf name=value pair. Does not reload postfix immediately. +-- | Sets a main.cf @name=value@ pair. Does not reload postfix immediately. mainCf :: (String, String) -> Property NoInfo mainCf (name, value) = check notset set `describe` ("postfix main.cf " ++ setting) @@ -74,7 +75,7 @@ mainCf (name, value) = check notset set notset = (/= Just value) <$> getMainCf name set = cmdProperty "postconf" ["-e", setting] --- | Gets a man.cf setting. +-- | Gets a main.cf setting. getMainCf :: String -> IO (Maybe String) getMainCf name = parse . lines <$> readProcess "postconf" [name] where @@ -130,9 +131,9 @@ dedupCf ls = -- | Installs saslauthd and configures it for postfix, authenticating -- against PAM. -- --- Does not configure postfix to use it; eg smtpd_sasl_auth_enable = yes +-- Does not configure postfix to use it; eg @smtpd_sasl_auth_enable = yes@ -- needs to be set to enable use. See --- https://wiki.debian.org/PostfixAndSASL +-- . saslAuthdInstalled :: Property NoInfo saslAuthdInstalled = setupdaemon `requires` Service.running "saslauthd" diff --git a/src/Propellor/Property/Reboot.hs b/src/Propellor/Property/Reboot.hs index 750968f..d45969a 100644 --- a/src/Propellor/Property/Reboot.hs +++ b/src/Propellor/Property/Reboot.hs @@ -1,7 +1,6 @@ module Propellor.Property.Reboot where import Propellor -import Utility.SafeCommand now :: Property NoInfo now = cmdProperty "reboot" [] diff --git a/src/Propellor/Property/Service.hs b/src/Propellor/Property/Service.hs index 8da502f..9cc010e 100644 --- a/src/Propellor/Property/Service.hs +++ b/src/Propellor/Property/Service.hs @@ -1,7 +1,6 @@ module Propellor.Property.Service where import Propellor -import Utility.SafeCommand type ServiceName = String diff --git a/src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs b/src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs index 511fd88..7f89343 100644 --- a/src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs +++ b/src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs @@ -6,9 +6,9 @@ import Propellor import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.User as User import qualified Propellor.Property.Cron as Cron -import qualified Propellor.Property.Ssh as Ssh import qualified Propellor.Property.File as File -import qualified Propellor.Property.Docker as Docker +import qualified Propellor.Property.Systemd as Systemd +import qualified Propellor.Property.Chroot as Chroot import Propellor.Property.Cron (Times) builduser :: UserName @@ -48,8 +48,6 @@ autobuilder arch crontimes timeout = combineProperties "gitannexbuilder" $ props tree :: Architecture -> Property HasInfo tree buildarch = combineProperties "gitannexbuilder tree" $ props & Apt.installed ["git"] - -- gitbuilderdir directory already exists when docker volume is used, - -- but with wrong owner. & File.dirExists gitbuilderdir & File.ownerGroup gitbuilderdir (User builduser) (Group builduser) & gitannexbuildercloned @@ -69,7 +67,6 @@ tree buildarch = combineProperties "gitannexbuilder tree" $ props buildDepsApt :: Property HasInfo buildDepsApt = combineProperties "gitannexbuilder build deps" $ props & Apt.buildDep ["git-annex"] - & Apt.installed ["liblockfile-simple-perl"] & buildDepsNoHaskellLibs & Apt.buildDepIn builddir `describe` "git-annex source build deps installed" @@ -84,6 +81,13 @@ buildDepsNoHaskellLibs = Apt.installed "alex", "happy", "c2hs" ] +haskellPkgsInstalled :: String -> Property NoInfo +haskellPkgsInstalled dir = flagFile go ("/haskellpkgsinstalled") + where + go = userScriptProperty (User builduser) + [ "cd " ++ builddir ++ " && ./standalone/" ++ dir ++ "/install-haskell-packages" + ] + -- Installs current versions of git-annex's deps from cabal, but only -- does so once. cabalDeps :: Property NoInfo @@ -92,46 +96,60 @@ cabalDeps = flagFile go cabalupdated go = userScriptProperty (User builduser) ["cabal update && cabal install git-annex --only-dependencies || true"] cabalupdated = homedir ".cabal" "packages" "hackage.haskell.org" "00-index.cache" -standardAutoBuilderContainer :: (System -> Docker.Image) -> Architecture -> Int -> TimeOut -> Docker.Container -standardAutoBuilderContainer dockerImage arch buildminute timeout = Docker.container (arch ++ "-git-annex-builder") - (dockerImage $ System (Debian Testing) arch) - & os (System (Debian Testing) arch) - & Apt.stdSourcesList - & Apt.installed ["systemd"] - & Apt.unattendedUpgrades - & User.accountFor (User builduser) - & tree arch - & buildDepsApt - & autobuilder arch (Cron.Times $ show buildminute ++ " * * * *") timeout - & Docker.tweaked +autoBuilderContainer :: (System -> Property HasInfo) -> System -> Times -> TimeOut -> Systemd.Container +autoBuilderContainer mkprop osver@(System _ arch) crontime timeout = + Systemd.container name bootstrap + & mkprop osver + & buildDepsApt + & autobuilder arch crontime timeout + where + name = arch ++ "-git-annex-builder" + bootstrap = Chroot.debootstrapped osver mempty -androidAutoBuilderContainer :: (System -> Docker.Image) -> Times -> TimeOut -> Docker.Container -androidAutoBuilderContainer dockerImage crontimes timeout = - androidContainer dockerImage "android-git-annex-builder" (tree "android") builddir +standardAutoBuilder :: System -> Property HasInfo +standardAutoBuilder osver@(System _ arch) = + propertyList "standard git-annex autobuilder" $ props + & os osver + & Apt.stdSourcesList + & Apt.unattendedUpgrades + & User.accountFor (User builduser) + & tree arch + +armAutoBuilder :: System -> Times -> TimeOut -> Property HasInfo +armAutoBuilder osver@(System _ arch) crontime timeout = + propertyList "arm git-annex autobuilder" $ props + & standardAutoBuilder osver + & buildDepsNoHaskellLibs + -- Works around ghc crash with parallel builds on arm. + & (homedir ".cabal" "config") + `File.lacksLine` "jobs: $ncpus" + -- Install patched haskell packages for portability to + -- arm NAS's using old kernel versions. + & haskellPkgsInstalled "linux" + & autobuilder arch crontime timeout + +androidAutoBuilderContainer :: Times -> TimeOut -> Systemd.Container +androidAutoBuilderContainer crontimes timeout = + androidContainer "android-git-annex-builder" (tree "android") builddir & Apt.unattendedUpgrades & autobuilder "android" crontimes timeout -- Android is cross-built in a Debian i386 container, using the Android NDK. androidContainer :: (IsProp (Property (CInfo NoInfo i)), (Combines (Property NoInfo) (Property i))) - => (System -> Docker.Image) - -> Docker.ContainerName + => Systemd.MachineName -> Property i -> FilePath - -> Docker.Container -androidContainer dockerImage name setupgitannexdir gitannexdir = Docker.container name - (dockerImage osver) + -> Systemd.Container +androidContainer name setupgitannexdir gitannexdir = Systemd.container name bootstrap & os osver & Apt.stdSourcesList - & Apt.installed ["systemd"] - & Docker.tweaked & User.accountFor (User builduser) & File.dirExists gitbuilderdir & File.ownerGroup homedir (User builduser) (Group builduser) - & buildDepsApt & flagFile chrootsetup ("/chrootsetup") `requires` setupgitannexdir - & flagFile haskellpkgsinstalled ("/haskellpkgsinstalled") + & haskellPkgsInstalled "android" where -- Use git-annex's android chroot setup script, which will install -- ghc-android and the NDK, all build deps, etc, in the home @@ -139,54 +157,5 @@ androidContainer dockerImage name setupgitannexdir gitannexdir = Docker.containe chrootsetup = scriptProperty [ "cd " ++ gitannexdir ++ " && ./standalone/android/buildchroot-inchroot" ] - haskellpkgsinstalled = userScriptProperty (User builduser) - [ "cd " ++ gitannexdir ++ " && ./standalone/android/install-haskell-packages" - ] - osver = System (Debian Testing) "i386" - --- armel builder has a companion container using amd64 that --- runs the build first to get TH splices. They need --- to have the same versions of all haskell libraries installed. -armelCompanionContainer :: (System -> Docker.Image) -> Docker.Container -armelCompanionContainer dockerImage = Docker.container "armel-git-annex-builder-companion" - (dockerImage $ System (Debian Unstable) "amd64") - & os (System (Debian Testing) "amd64") - & Apt.stdSourcesList - & Apt.installed ["systemd"] - -- This volume is shared with the armel builder. - & Docker.volume gitbuilderdir - & User.accountFor (User builduser) - -- Install current versions of build deps from cabal. - & tree "armel" - & buildDepsNoHaskellLibs - & cabalDeps - -- The armel builder can ssh to this companion. - & Docker.expose "22" - & Apt.serviceInstalledRunning "ssh" - & Ssh.authorizedKeys (User builduser) (Context "armel-git-annex-builder") - & Docker.tweaked - -armelAutoBuilderContainer :: (System -> Docker.Image) -> Times -> TimeOut -> Docker.Container -armelAutoBuilderContainer dockerImage crontimes timeout = Docker.container "armel-git-annex-builder" - (dockerImage $ System (Debian Unstable) "armel") - & os (System (Debian Testing) "armel") - & Apt.stdSourcesList - & Apt.installed ["systemd"] - & Apt.installed ["openssh-client"] - & Docker.link "armel-git-annex-builder-companion" "companion" - & Docker.volumes_from "armel-git-annex-builder-companion" - & User.accountFor (User builduser) - -- TODO: automate installing haskell libs - -- (Currently have to run - -- git-annex/standalone/linux/install-haskell-packages - -- which is not fully automated.) - & buildDepsNoHaskellLibs - & autobuilder "armel" crontimes timeout - `requires` tree "armel" - & Ssh.keyImported SshRsa (User builduser) (Context "armel-git-annex-builder") - & trivial writecompanionaddress - & Docker.tweaked - where - writecompanionaddress = scriptProperty - [ "echo \"$COMPANION_PORT_22_TCP_ADDR\" > " ++ homedir "companion_address" - ] `describe` "companion_address file" + osver = System (Debian (Stable "jessie")) "i386" + bootstrap = Chroot.debootstrapped osver mempty diff --git a/src/Propellor/Property/SiteSpecific/GitHome.hs b/src/Propellor/Property/SiteSpecific/GitHome.hs index d6dce7c..40f2ecd 100644 --- a/src/Propellor/Property/SiteSpecific/GitHome.hs +++ b/src/Propellor/Property/SiteSpecific/GitHome.hs @@ -3,7 +3,6 @@ module Propellor.Property.SiteSpecific.GitHome where import Propellor import qualified Propellor.Property.Apt as Apt import Propellor.Property.User -import Utility.SafeCommand -- | Clones Joey Hess's git home directory, and runs its fixups script. installedFor :: User -> Property NoInfo diff --git a/src/Propellor/Property/SiteSpecific/IABak.hs b/src/Propellor/Property/SiteSpecific/IABak.hs index 4ddc638..8ed3b38 100644 --- a/src/Propellor/Property/SiteSpecific/IABak.hs +++ b/src/Propellor/Property/SiteSpecific/IABak.hs @@ -35,7 +35,7 @@ gitServer knownhosts = propertyList "iabak git server" $ props & Cron.niceJob "shardstats" (Cron.Times "*/30 * * * *") (User "root") "/" "/usr/local/IA.BAK/shardstats-all" & Cron.niceJob "shardmaint" Cron.Daily (User "root") "/" - "/usr/local/IA.BAK/shardmaint" + "/usr/local/IA.BAK/shardmaint-fast; /usr/local/IA.BAK/shardmaint" registrationServer :: [Host] -> Property HasInfo registrationServer knownhosts = propertyList "iabak registration server" $ props @@ -64,14 +64,13 @@ graphiteServer = propertyList "iabak graphite server" $ props , "pattern = ^carbon\\." , "retentions = 60:90d" , "[iabak-connections]" - , "pattern = ^iabak\.shardstats\.connections" + , "pattern = ^iabak\\.shardstats\\.connections" , "retentions = 1h:1y,3h:10y" - , "[iabak]" + , "[iabak-default]" , "pattern = ^iabak\\." , "retentions = 10m:30d,1h:1y,3h:10y" , "[default_1min_for_1day]" , "pattern = .*" - , "retentions = 60s:1d" ] & graphiteCSRF & cmdProperty "graphite-manage" ["syncdb", "--noinput"] `flagFile` "/etc/flagFiles/graphite-syncdb" diff --git a/src/Propellor/Property/SiteSpecific/JoeySites.hs b/src/Propellor/Property/SiteSpecific/JoeySites.hs index 3680891..b6524f6 100644 --- a/src/Propellor/Property/SiteSpecific/JoeySites.hs +++ b/src/Propellor/Property/SiteSpecific/JoeySites.hs @@ -15,7 +15,6 @@ import qualified Propellor.Property.User as User import qualified Propellor.Property.Obnam as Obnam import qualified Propellor.Property.Apache as Apache import qualified Propellor.Property.Postfix as Postfix -import Utility.SafeCommand import Utility.FileMode import Data.List @@ -30,7 +29,6 @@ scrollBox = propertyList "scroll server" $ props "libghc-bytestring-dev", "libghc-mtl-dev", "libghc-ncurses-dev", "libghc-random-dev", "libghc-monad-loops-dev", "libghc-text-dev", "libghc-ifelse-dev", "libghc-case-insensitive-dev", - "libghc-transformers-dev", "libghc-data-default-dev", "libghc-optparse-applicative-dev"] & userScriptProperty (User "scroll") [ "cd " ++ d "scroll" @@ -389,7 +387,7 @@ twitRss = combineProperties "twitter rss" $ props -- Work around for expired ssl cert. pumpRss :: Property NoInfo pumpRss = Cron.job "pump rss" (Cron.Times "15 * * * *") (User "joey") "/srv/web/tmp.kitenet.net/" - "wget https://pump2rss.com/feed/joeyh@identi.ca.atom -O pump.atom.new --no-check-certificate 2>/dev/null; sed 's/ & / /g' pump.atom.new > pump.atom" + "wget https://rss.io.jpope.org/feed/joeyh@identi.ca.atom -O pump.atom.new --no-check-certificate 2>/dev/null; sed 's/ & / /g' pump.atom.new > pump.atom" ircBouncer :: Property HasInfo ircBouncer = propertyList "IRC bouncer" $ props @@ -407,7 +405,7 @@ ircBouncer = propertyList "IRC bouncer" $ props kiteShellBox :: Property NoInfo kiteShellBox = propertyList "kitenet.net shellinabox" - [ Apt.installed ["openssl", "shellinabox"] + [ Apt.installed ["openssl", "shellinabox", "openssh-client"] , File.hasContent "/etc/default/shellinabox" [ "# Deployed by propellor" , "SHELLINABOX_DAEMON_START=1" @@ -861,6 +859,8 @@ legacyWebSites = propertyList "legacy web sites" $ props , " AllowOverride None" , Apache.allowAll , "" + , "RewriteEngine On" + , "RewriteRule .* http://www.sowsearpoetry.org/ [L]" ] & alias "wortroot.kitenet.net" & alias "www.wortroot.kitenet.net" diff --git a/src/Propellor/Property/Ssh.hs b/src/Propellor/Property/Ssh.hs index 37e6572..fca7d03 100644 --- a/src/Propellor/Property/Ssh.hs +++ b/src/Propellor/Property/Ssh.hs @@ -1,7 +1,10 @@ module Propellor.Property.Ssh ( PubKeyText, sshdConfig, + ConfigKeyword, + setSshdConfigBool, setSshdConfig, + RootLogin(..), permitRootLogin, passwordAuthentication, noPasswords, @@ -24,11 +27,11 @@ import Propellor import qualified Propellor.Property.File as File import qualified Propellor.Property.Service as Service import Propellor.Property.User -import Utility.SafeCommand import Utility.FileMode import System.PosixCompat import qualified Data.Map as M +import Data.List type PubKeyText = String @@ -39,21 +42,37 @@ sshBool False = "no" sshdConfig :: FilePath sshdConfig = "/etc/ssh/sshd_config" -setSshdConfig :: String -> Bool -> Property NoInfo -setSshdConfig setting allowed = combineProperties "sshd config" - [ sshdConfig `File.lacksLine` (sshline $ not allowed) - , sshdConfig `File.containsLine` (sshline allowed) - ] - `onChange` restarted - `describe` unwords [ "ssh config:", setting, sshBool allowed ] - where - sshline v = setting ++ " " ++ sshBool v +type ConfigKeyword = String -permitRootLogin :: Bool -> Property NoInfo -permitRootLogin = setSshdConfig "PermitRootLogin" +setSshdConfigBool :: ConfigKeyword -> Bool -> Property NoInfo +setSshdConfigBool setting allowed = setSshdConfig setting (sshBool allowed) + +setSshdConfig :: ConfigKeyword -> String -> Property NoInfo +setSshdConfig setting val = File.fileProperty desc f sshdConfig + `onChange` restarted + where + desc = unwords [ "ssh config:", setting, val ] + cfgline = setting ++ " " ++ val + wantedline s + | s == cfgline = True + | (setting ++ " ") `isPrefixOf` s = False + | otherwise = True + f ls + | cfgline `elem` ls = filter wantedline ls + | otherwise = filter wantedline ls ++ [cfgline] + +data RootLogin + = RootLogin Bool -- ^ allow or prevent root login + | WithoutPassword -- ^ disable password authentication for root, while allowing other authentication methods + | ForcedCommandsOnly -- ^ allow root login with public-key authentication, but only if a forced command has been specified for the public key + +permitRootLogin :: RootLogin -> Property NoInfo +permitRootLogin (RootLogin b) = setSshdConfigBool "PermitRootLogin" b +permitRootLogin WithoutPassword = setSshdConfig "PermitRootLogin" "without-password" +permitRootLogin ForcedCommandsOnly = setSshdConfig "PermitRootLogin" "forced-commands-only" passwordAuthentication :: Bool -> Property NoInfo -passwordAuthentication = setSshdConfig "PasswordAuthentication" +passwordAuthentication = setSshdConfigBool "PasswordAuthentication" -- | Configure ssh to not allow password logins. -- diff --git a/src/Propellor/Property/Systemd.hs b/src/Propellor/Property/Systemd.hs index 07cf81e..5c8a35e 100644 --- a/src/Propellor/Property/Systemd.hs +++ b/src/Propellor/Property/Systemd.hs @@ -1,31 +1,51 @@ +{-# LANGUAGE FlexibleInstances #-} + module Propellor.Property.Systemd ( - module Propellor.Property.Systemd.Core, + -- * Services ServiceName, - MachineName, started, stopped, enabled, disabled, + masked, + running, restarted, - persistentJournal, + networkd, + journald, + -- * Configuration + installed, Option, configured, - journaldConfigured, daemonReloaded, + -- * Journal + persistentJournal, + journaldConfigured, + -- * Containers + MachineName, Container, container, nspawned, + -- * Container configuration containerCfg, resolvConfed, + linkJournal, + privateNetwork, + module Propellor.Types.Container, + Proto(..), + Publishable, + publish, + Bindable, + bind, + bindRo, ) where import Propellor import Propellor.Types.Chroot +import Propellor.Types.Container import qualified Propellor.Property.Chroot as Chroot import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.File as File import Propellor.Property.Systemd.Core -import Utility.SafeCommand import Utility.FileMode import Data.List @@ -45,6 +65,9 @@ instance PropAccum Container where getProperties (Container _ _ h) = hostProperties h -- | Starts a systemd service. +-- +-- Note that this does not configure systemd to start the service on boot, +-- it only ensures that the service is currently running. started :: ServiceName -> Property NoInfo started n = trivial $ cmdProperty "systemctl" ["start", n] `describe` ("service " ++ n ++ " started") @@ -55,6 +78,9 @@ stopped n = trivial $ cmdProperty "systemctl" ["stop", n] `describe` ("service " ++ n ++ " stopped") -- | Enables a systemd service. +-- +-- This does not ensure the service is started, it only configures systemd +-- to start it on boot. enabled :: ServiceName -> Property NoInfo enabled n = trivial $ cmdProperty "systemctl" ["enable", n] `describe` ("service " ++ n ++ " enabled") @@ -64,11 +90,32 @@ disabled :: ServiceName -> Property NoInfo disabled n = trivial $ cmdProperty "systemctl" ["disable", n] `describe` ("service " ++ n ++ " disabled") +-- | Masks a systemd service. +masked :: ServiceName -> RevertableProperty +masked n = systemdMask systemdUnmask + where + systemdMask = trivial $ cmdProperty "systemctl" ["mask", n] + `describe` ("service " ++ n ++ " masked") + systemdUnmask = trivial $ cmdProperty "systemctl" ["unmask", n] + `describe` ("service " ++ n ++ " unmasked") + +-- | Ensures that a service is both enabled and started +running :: ServiceName -> Property NoInfo +running n = trivial $ started n `requires` enabled n + -- | Restarts a systemd service. restarted :: ServiceName -> Property NoInfo restarted n = trivial $ cmdProperty "systemctl" ["restart", n] `describe` ("service " ++ n ++ " restarted") +-- | The systemd-networkd service. +networkd :: ServiceName +networkd = "systemd-networkd" + +-- | The systemd-journald service. +journald :: ServiceName +journald = "systemd-journald" + -- | Enables persistent storage of the journal. persistentJournal :: Property NoInfo persistentJournal = check (not <$> doesDirectoryExist dir) $ @@ -87,7 +134,8 @@ type Option = String -- Does not ensure that the relevant daemon notices the change immediately. -- -- This assumes that there is only one [Header] per file, which is --- currently the case. And it assumes the file already exists with +-- currently the case for files like journald.conf and system.conf. +-- And it assumes the file already exists with -- the right [Header], so new lines can just be appended to the end. configured :: FilePath -> Option -> String -> Property NoInfo configured cfgfile option value = combineProperties desc @@ -102,15 +150,15 @@ configured cfgfile option value = combineProperties desc | setting `isPrefixOf` l = Nothing | otherwise = Just l +-- | Causes systemd to reload its configuration files. +daemonReloaded :: Property NoInfo +daemonReloaded = trivial $ cmdProperty "systemctl" ["daemon-reload"] + -- | Configures journald, restarting it so the changes take effect. journaldConfigured :: Option -> String -> Property NoInfo journaldConfigured option value = configured "/etc/systemd/journald.conf" option value - `onChange` restarted "systemd-journald" - --- | Causes systemd to reload its configuration files. -daemonReloaded :: Property NoInfo -daemonReloaded = trivial $ cmdProperty "systemctl" ["daemon-reload"] + `onChange` restarted journald -- | Defines a container with a given machine name. -- @@ -123,6 +171,7 @@ container :: MachineName -> (FilePath -> Chroot.Chroot) -> Container container name mkchroot = Container name c h & os system & resolvConfed + & linkJournal where c@(Chroot.Chroot _ system _ _) = mkchroot (containerDir name) h = Host name [] mempty @@ -153,8 +202,7 @@ nspawned c@(Container name (Chroot.Chroot loc system builderconf _) h) = -- Chroot provisioning is run in systemd-only mode, -- which sets up the chroot and ensures systemd and dbus are -- installed, but does not handle the other provisions. - chrootprovisioned = Chroot.provisioned' - (Chroot.propigateChrootInfo chroot) chroot True + chrootprovisioned = Chroot.provisioned' (Chroot.propigateChrootInfo chroot) chroot True -- Use nsenter to enter container and and run propellor to -- finish provisioning. @@ -178,8 +226,14 @@ nspawnService (Container name _ _) cfg = setup teardown return $ unlines $ "# deployed by propellor" : map addparams ls addparams l - | "ExecStart=" `isPrefixOf` l = - l ++ " " ++ unwords (nspawnServiceParams cfg) + | "ExecStart=" `isPrefixOf` l = unwords $ + [ "ExecStart = /usr/bin/systemd-nspawn" + , "--quiet" + , "--keep-unit" + , "--boot" + , "--directory=" ++ containerDir name + , "--machine=%i" + ] ++ nspawnServiceParams cfg | otherwise = l goodservicefile = (==) @@ -216,15 +270,19 @@ enterScript c@(Container name _ _) = setup teardown where setup = combineProperties ("generated " ++ enterScriptFile c) [ scriptfile `File.hasContent` - [ "#!/bin/sh" + [ "#!/usr/bin/perl" , "# Generated by propellor" - , "pid=\"$(machinectl show " ++ shellEscape name ++ " -p Leader | cut -d= -f2)\" || true" - , "if [ -n \"$pid\" ]; then" - , "\tnsenter -p -u -n -i -m -t \"$pid\" \"$@\"" - , "else" - , "\techo container not running >&2" - , "\texit 1" - , "fi" + , "my $pid=`machinectl show " ++ shellEscape name ++ " -p Leader | cut -d= -f2`;" + , "chomp $pid;" + , "if (length $pid) {" + , "\tforeach my $var (keys %ENV) {" + , "\t\tdelete $ENV{$var} unless $var eq 'PATH' || $var eq 'TERM';" + , "\t}" + , "\texec('nsenter', '-p', '-u', '-n', '-i', '-m', '-t', $pid, @ARGV);" + , "} else {" + , "\tdie 'container not running';" + , "}" + , "exit(1);" ] , scriptfile `File.mode` combineModes (readModes ++ executeModes) ] @@ -234,8 +292,8 @@ enterScript c@(Container name _ _) = setup teardown enterScriptFile :: Container -> FilePath enterScriptFile (Container name _ _ ) = "/usr/local/bin/enter-" ++ mungename name -enterContainerProcess :: Container -> [String] -> CreateProcess -enterContainerProcess = proc . enterScriptFile +enterContainerProcess :: Container -> [String] -> IO (CreateProcess, IO ()) +enterContainerProcess c ps = pure (proc (enterScriptFile c) ps, noop) nspawnServiceName :: MachineName -> ServiceName nspawnServiceName name = "systemd-nspawn@" ++ name ++ ".service" @@ -267,3 +325,68 @@ containerCfg p = RevertableProperty (mk True) (mk False) -- This property is enabled by default. Revert it to disable it. resolvConfed :: RevertableProperty resolvConfed = containerCfg "bind=/etc/resolv.conf" + +-- | Link the container's journal to the host's if possible. +-- (Only works if the host has persistent journal enabled.) +-- +-- This property is enabled by default. Revert it to disable it. +linkJournal :: RevertableProperty +linkJournal = containerCfg "link-journal=try-guest" + +-- | Disconnect networking of the container from the host. +privateNetwork :: RevertableProperty +privateNetwork = containerCfg "private-network" + +class Publishable a where + toPublish :: a -> String + +instance Publishable Port where + toPublish (Port n) = show n + +instance Publishable (Bound Port) where + toPublish v = toPublish (hostSide v) ++ ":" ++ toPublish (containerSide v) + +data Proto = TCP | UDP + +instance Publishable (Proto, Bound Port) where + toPublish (TCP, fp) = "tcp:" ++ toPublish fp + toPublish (UDP, fp) = "udp:" ++ toPublish fp + +-- | Publish a port from the container to the host. +-- +-- This feature was first added in systemd version 220. +-- +-- This property is only needed (and will only work) if the container +-- is configured to use private networking. Also, networkd should be enabled +-- both inside the container, and on the host. For example: +-- +-- > foo :: Host +-- > foo = host "foo.example.com" +-- > & Systemd.running Systemd.networkd +-- > & Systemd.nspawned webserver +-- > +-- > webserver :: Systemd.container +-- > webserver = Systemd.container "webserver" (Chroot.debootstrapped (System (Debian Testing) "amd64") mempty) +-- > & Systemd.privateNetwork +-- > & Systemd.running Systemd.networkd +-- > & Systemd.publish (Port 80 ->- Port 8080) +-- > & Apt.installedRunning "apache2" +publish :: Publishable p => p -> RevertableProperty +publish p = containerCfg $ "--port=" ++ toPublish p + +class Bindable a where + toBind :: a -> String + +instance Bindable FilePath where + toBind f = f + +instance Bindable (Bound FilePath) where + toBind v = hostSide v ++ ":" ++ containerSide v + +-- | Bind mount a file or directory from the host into the container. +bind :: Bindable p => p -> RevertableProperty +bind p = containerCfg $ "--bind=" ++ toBind p + +-- | Read-only mind mount. +bindRo :: Bindable p => p -> RevertableProperty +bindRo p = containerCfg $ "--bind-ro=" ++ toBind p diff --git a/src/Propellor/Property/Tor.hs b/src/Propellor/Property/Tor.hs index 3af4a70..f1aaeeb 100644 --- a/src/Propellor/Property/Tor.hs +++ b/src/Propellor/Property/Tor.hs @@ -103,13 +103,8 @@ bandwidthRate' s divby = case readSize dataUnits s of Nothing -> property ("unable to parse " ++ s) noChange hiddenServiceAvailable :: HiddenServiceName -> Int -> Property NoInfo -hiddenServiceAvailable hn port = hiddenServiceHostName prop +hiddenServiceAvailable hn port = hiddenServiceHostName $ hiddenService hn port where - prop = configured - [ ("HiddenServiceDir", varLib hn) - , ("HiddenServicePort", unwords [show port, "127.0.0.1:" ++ show port]) - ] - `describe` "hidden service available" hiddenServiceHostName p = adjustPropertySatisfy p $ \satisfy -> do r <- satisfy h <- liftIO $ readFile (varLib hn "hostname") @@ -164,7 +159,7 @@ type NickName = String -- | Convert String to a valid tor NickName. saneNickname :: String -> NickName -saneNickname s +saneNickname s | null n = "unnamed" | otherwise = n where diff --git a/src/Propellor/Shim.hs b/src/Propellor/Shim.hs index 5fc1ea0..7cdecef 100644 --- a/src/Propellor/Shim.hs +++ b/src/Propellor/Shim.hs @@ -8,7 +8,6 @@ module Propellor.Shim (setup, cleanEnv, file) where import Propellor import Utility.LinuxMkLibs -import Utility.SafeCommand import Utility.FileMode import Utility.FileSystemEncoding @@ -21,7 +20,7 @@ import System.Posix.Files -- Propellor may be running from an existing shim, in which case it's -- simply reused. setup :: FilePath -> Maybe FilePath -> FilePath -> IO FilePath -setup propellorbin propellorbinpath dest = checkAlreadyShimmed propellorbin $ do +setup propellorbin propellorbinpath dest = checkAlreadyShimmed shim $ do createDirectoryIfMissing True dest libs <- parseLdd <$> readProcess "ldd" [propellorbin] @@ -40,7 +39,6 @@ setup propellorbin propellorbinpath dest = checkAlreadyShimmed propellorbin $ do fromMaybe (error "cannot find gconv directory") $ headMaybe $ filter ("/gconv/" `isInfixOf`) glibclibs let linkerparams = ["--library-path", intercalate ":" libdirs ] - let shim = file propellorbin dest writeFile shim $ unlines [ shebang , "GCONV_PATH=" ++ shellEscape gconvdir @@ -50,6 +48,8 @@ setup propellorbin propellorbinpath dest = checkAlreadyShimmed propellorbin $ do ] modifyFileMode shim (addModes executeModes) return shim + where + shim = file propellorbin dest shebang :: String shebang = "#!/bin/sh" diff --git a/src/Propellor/Spin.hs b/src/Propellor/Spin.hs index 986305d..61d519c 100644 --- a/src/Propellor/Spin.hs +++ b/src/Propellor/Spin.hs @@ -14,8 +14,7 @@ import System.Posix.Directory import Control.Concurrent.Async import qualified Data.ByteString as B import qualified Data.Set as S -import qualified Network.BSD as BSD -import Network.Socket (inet_ntoa) +import Network.Socket (getAddrInfo, defaultHints, AddrInfo(..), AddrInfoFlag(..), SockAddr) import Propellor import Propellor.Protocol @@ -98,17 +97,21 @@ spin target relay hst = do getSshTarget :: HostName -> Host -> IO String getSshTarget target hst | null configips = return target - | otherwise = go =<< tryIO (BSD.getHostByName target) + | otherwise = go =<< tryIO (dnslookup target) where go (Left e) = useip (show e) - go (Right hostentry) = ifM (anyM matchingconfig (BSD.hostAddresses hostentry)) - ( return target - , do - ips <- mapM inet_ntoa (BSD.hostAddresses hostentry) - useip ("DNS " ++ show ips ++ " vs configured " ++ show configips) - ) + go (Right addrinfos) = do + configaddrinfos <- catMaybes <$> mapM iptoaddr configips + if any (`elem` configaddrinfos) (map addrAddress addrinfos) + then return target + else useip ("DNS lookup did not return any of the expected addresses " ++ show configips) - matchingconfig a = flip elem configips <$> inet_ntoa a + dnslookup h = getAddrInfo (Just $ defaultHints { addrFlags = [AI_CANONNAME] }) (Just h) Nothing + + -- Convert a string containing an IP address into a SockAddr. + iptoaddr :: String -> IO (Maybe SockAddr) + iptoaddr ip = catchDefaultIO Nothing $ headMaybe . map addrAddress + <$> getAddrInfo (Just $ defaultHints { addrFlags = [AI_NUMERICHOST] }) (Just ip) Nothing useip why = case headMaybe configips of Nothing -> return target @@ -144,11 +147,15 @@ update forhost = do hout <- dup stdOutput hClose stdin hClose stdout + -- Not using git pull because git 2.5.0 badly + -- broke its option parser. unlessM (boolSystem "git" (pullparams hin hout)) $ - errorMessage "git pull from client failed" + errorMessage "git fetch from client failed" + unlessM (boolSystem "git" [Param "merge", Param "FETCH_HEAD"]) $ + errorMessage "git merge from client failed" where pullparams hin hout = - [ Param "pull" + [ Param "fetch" , Param "--progress" , Param "--upload-pack" , Param $ "./propellor --gitpush " ++ show hin ++ " " ++ show hout diff --git a/src/Propellor/Ssh.hs b/src/Propellor/Ssh.hs index 97c3eb6..3fe78f7 100644 --- a/src/Propellor/Ssh.hs +++ b/src/Propellor/Ssh.hs @@ -1,7 +1,6 @@ module Propellor.Ssh where import Propellor -import Utility.SafeCommand import Utility.UserInfo import System.PosixCompat @@ -23,7 +22,8 @@ sshCachingParams hn = do let ps = [ Param "-o" , Param ("ControlPath=" ++ socketfile) - , Params "-o ControlMaster=auto -o ControlPersist=yes" + , Param "-o", Param "ControlMaster=auto" + , Param "-o", Param "ControlPersist=yes" ] maybe noop (expireold ps socketfile) @@ -38,7 +38,7 @@ sshCachingParams hn = do then touchFile f else do void $ boolSystem "ssh" $ - [ Params "-O stop" ] ++ ps ++ + [ Param "-O", Param "stop" ] ++ ps ++ [ Param "localhost" ] nukeFile f tenminutes = 600 diff --git a/src/Propellor/Types/CmdLine.hs b/src/Propellor/Types/CmdLine.hs index bd0cbdf..9694995 100644 --- a/src/Propellor/Types/CmdLine.hs +++ b/src/Propellor/Types/CmdLine.hs @@ -10,6 +10,7 @@ data CmdLine | Spin [HostName] (Maybe HostName) | SimpleRun HostName | Set PrivDataField Context + | Unset PrivDataField Context | Dump PrivDataField Context | Edit PrivDataField Context | ListFields diff --git a/src/Propellor/Types/Container.hs b/src/Propellor/Types/Container.hs new file mode 100644 index 0000000..d21bada --- /dev/null +++ b/src/Propellor/Types/Container.hs @@ -0,0 +1,30 @@ +{-# LANGUAGE TypeFamilies #-} + +module Propellor.Types.Container where + +-- | A value that can be bound between the host and a container. +-- +-- For example, a Bound Port is a Port on the container that is bound to +-- a Port on the host. +data Bound v = Bound + { hostSide :: v + , containerSide :: v + } + +-- | Create a Bound value, from two different values for the host and +-- container. +-- +-- For example, @Port 8080 -<- Port 80@ means that port 8080 on the host +-- is bound to port 80 from the container. +(-<-) :: (hostv ~ v, containerv ~ v) => hostv -> containerv -> Bound v +(-<-) hostv containerv = Bound hostv containerv + +-- | Flipped version of -<- with the container value first and host value +-- second. +(->-) :: (containerv ~ v, hostv ~ v) => hostv -> containerv -> Bound v +(->-) containerv hostv = Bound hostv containerv + +-- | Create a Bound value, that is the same on both the host and container. +same :: v -> Bound v +same v = Bound v v + diff --git a/src/Propellor/Types/OS.hs b/src/Propellor/Types/OS.hs index 58bd809..c46d9a2 100644 --- a/src/Propellor/Types/OS.hs +++ b/src/Propellor/Types/OS.hs @@ -10,6 +10,7 @@ module Propellor.Types.OS ( User(..), Group(..), userGroup, + Port(..), ) where import Network.BSD (HostName) @@ -42,3 +43,6 @@ newtype Group = Group String -- | Makes a Group with the same name as the User. userGroup :: User -> Group userGroup (User u) = Group u + +newtype Port = Port Int + deriving (Eq, Show) diff --git a/src/Utility/Data.hs b/src/Utility/Data.hs index 5ecd218..27c0a82 100644 --- a/src/Utility/Data.hs +++ b/src/Utility/Data.hs @@ -5,6 +5,8 @@ - License: BSD-2-clause -} +{-# OPTIONS_GHC -fno-warn-tabs #-} + module Utility.Data where {- First item in the list that is not Nothing. -} diff --git a/src/Utility/Directory.hs b/src/Utility/Directory.hs index 2e037fd..7322cd8 100644 --- a/src/Utility/Directory.hs +++ b/src/Utility/Directory.hs @@ -6,6 +6,7 @@ -} {-# LANGUAGE CPP #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.Directory where @@ -18,6 +19,7 @@ import Control.Applicative import Control.Concurrent import System.IO.Unsafe (unsafeInterleaveIO) import Data.Maybe +import Prelude #ifdef mingw32_HOST_OS import qualified System.Win32 as Win32 diff --git a/src/Utility/Env.hs b/src/Utility/Env.hs index fdf06d8..c56f4ec 100644 --- a/src/Utility/Env.hs +++ b/src/Utility/Env.hs @@ -6,6 +6,7 @@ -} {-# LANGUAGE CPP #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.Env where @@ -13,6 +14,7 @@ module Utility.Env where import Utility.Exception import Control.Applicative import Data.Maybe +import Prelude import qualified System.Environment as E import qualified System.SetEnv #else diff --git a/src/Utility/Exception.hs b/src/Utility/Exception.hs index ab47ae9..9d4236c 100644 --- a/src/Utility/Exception.hs +++ b/src/Utility/Exception.hs @@ -6,6 +6,7 @@ -} {-# LANGUAGE ScopedTypeVariables #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.Exception ( module X, diff --git a/src/Utility/FileMode.hs b/src/Utility/FileMode.hs index 201b845..fdf1b56 100644 --- a/src/Utility/FileMode.hs +++ b/src/Utility/FileMode.hs @@ -22,15 +22,12 @@ import Utility.Exception {- Applies a conversion function to a file's mode. -} modifyFileMode :: FilePath -> (FileMode -> FileMode) -> IO () -modifyFileMode f convert = void $ modifyFileMode' f convert -modifyFileMode' :: FilePath -> (FileMode -> FileMode) -> IO FileMode -modifyFileMode' f convert = do +modifyFileMode f convert = do s <- getFileStatus f let old = fileMode s let new = convert old when (new /= old) $ setFileMode f new - return old {- Adds the specified FileModes to the input mode, leaving the rest - unchanged. -} @@ -41,14 +38,6 @@ addModes ms m = combineModes (m:ms) removeModes :: [FileMode] -> FileMode -> FileMode removeModes ms m = m `intersectFileModes` complement (combineModes ms) -{- Runs an action after changing a file's mode, then restores the old mode. -} -withModifiedFileMode :: FilePath -> (FileMode -> FileMode) -> IO a -> IO a -withModifiedFileMode file convert a = bracket setup cleanup go - where - setup = modifyFileMode' file convert - cleanup oldmode = modifyFileMode file (const oldmode) - go _ = a - writeModes :: [FileMode] writeModes = [ownerWriteMode, groupWriteMode, otherWriteMode] diff --git a/src/Utility/FileSystemEncoding.hs b/src/Utility/FileSystemEncoding.hs index 139b74f..41c5972 100644 --- a/src/Utility/FileSystemEncoding.hs +++ b/src/Utility/FileSystemEncoding.hs @@ -6,6 +6,7 @@ -} {-# LANGUAGE CPP #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.FileSystemEncoding ( fileEncoding, diff --git a/src/Utility/LinuxMkLibs.hs b/src/Utility/LinuxMkLibs.hs index db64d12..fdeb779 100644 --- a/src/Utility/LinuxMkLibs.hs +++ b/src/Utility/LinuxMkLibs.hs @@ -7,7 +7,12 @@ module Utility.LinuxMkLibs where -import Control.Applicative +import Utility.PartialPrelude +import Utility.Directory +import Utility.Process +import Utility.Monad +import Utility.Path + import Data.Maybe import System.Directory import System.FilePath @@ -15,12 +20,8 @@ import Data.List.Utils import System.Posix.Files import Data.Char import Control.Monad.IfElse - -import Utility.PartialPrelude -import Utility.Directory -import Utility.Process -import Utility.Monad -import Utility.Path +import Control.Applicative +import Prelude {- Installs a library. If the library is a symlink to another file, - install the file it links to, and update the symlink to be relative. -} diff --git a/src/Utility/Misc.hs b/src/Utility/Misc.hs index e4eccac..45d5a06 100644 --- a/src/Utility/Misc.hs +++ b/src/Utility/Misc.hs @@ -6,23 +6,25 @@ -} {-# LANGUAGE CPP #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.Misc where +import Utility.FileSystemEncoding +import Utility.Monad + import System.IO import Control.Monad import Foreign import Data.Char import Data.List -import Control.Applicative import System.Exit #ifndef mingw32_HOST_OS import System.Posix.Process (getAnyProcessStatus) import Utility.Exception #endif - -import Utility.FileSystemEncoding -import Utility.Monad +import Control.Applicative +import Prelude {- A version of hgetContents that is not lazy. Ensures file is - all read before it gets closed. -} diff --git a/src/Utility/Monad.hs b/src/Utility/Monad.hs index 878e0da..ac75104 100644 --- a/src/Utility/Monad.hs +++ b/src/Utility/Monad.hs @@ -5,6 +5,8 @@ - License: BSD-2-clause -} +{-# OPTIONS_GHC -fno-warn-tabs #-} + module Utility.Monad where import Data.Maybe diff --git a/src/Utility/PartialPrelude.hs b/src/Utility/PartialPrelude.hs index 6efa093..5579556 100644 --- a/src/Utility/PartialPrelude.hs +++ b/src/Utility/PartialPrelude.hs @@ -5,6 +5,8 @@ - them being accidentially used. -} +{-# OPTIONS_GHC -fno-warn-tabs #-} + module Utility.PartialPrelude where import qualified Data.Maybe diff --git a/src/Utility/Path.hs b/src/Utility/Path.hs index 9f0737f..8e3c2bd 100644 --- a/src/Utility/Path.hs +++ b/src/Utility/Path.hs @@ -6,6 +6,7 @@ -} {-# LANGUAGE PackageImports, CPP #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.Path where @@ -16,6 +17,7 @@ import Data.List import Data.Maybe import Data.Char import Control.Applicative +import Prelude #ifdef mingw32_HOST_OS import qualified System.FilePath.Posix as Posix diff --git a/src/Utility/PosixFiles.hs b/src/Utility/PosixFiles.hs index 5a94ead..4550beb 100644 --- a/src/Utility/PosixFiles.hs +++ b/src/Utility/PosixFiles.hs @@ -8,6 +8,7 @@ -} {-# LANGUAGE CPP #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.PosixFiles ( module X, diff --git a/src/Utility/Process.hs b/src/Utility/Process.hs index cbbe8a8..469f765 100644 --- a/src/Utility/Process.hs +++ b/src/Utility/Process.hs @@ -1,12 +1,13 @@ {- System.Process enhancements, including additional ways of running - processes, and logging. - - - Copyright 2012 Joey Hess + - Copyright 2012-2015 Joey Hess - - License: BSD-2-clause -} {-# LANGUAGE CPP, Rank2Types #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.Process ( module X, @@ -54,6 +55,7 @@ import qualified System.Posix.IO import Control.Applicative #endif import Data.Maybe +import Prelude import Utility.Misc import Utility.Exception @@ -63,8 +65,8 @@ type CreateProcessRunner = forall a. CreateProcess -> ((Maybe Handle, Maybe Hand data StdHandle = StdinHandle | StdoutHandle | StderrHandle deriving (Eq) -{- Normally, when reading from a process, it does not need to be fed any - - standard input. -} +-- | Normally, when reading from a process, it does not need to be fed any +-- standard input. readProcess :: FilePath -> [String] -> IO String readProcess cmd args = readProcessEnv cmd args Nothing @@ -82,9 +84,8 @@ readProcess' p = withHandle StdoutHandle createProcessSuccess p $ \h -> do hClose h return output -{- Runs an action to write to a process on its stdin, - - returns its output, and also allows specifying the environment. - -} +-- | Runs an action to write to a process on its stdin, +-- returns its output, and also allows specifying the environment. writeReadProcessEnv :: FilePath -> [String] @@ -124,8 +125,8 @@ writeReadProcessEnv cmd args environ writestdin adjusthandle = do , env = environ } -{- Waits for a ProcessHandle, and throws an IOError if the process - - did not exit successfully. -} +-- | Waits for a ProcessHandle, and throws an IOError if the process +-- did not exit successfully. forceSuccessProcess :: CreateProcess -> ProcessHandle -> IO () forceSuccessProcess p pid = do code <- waitForProcess pid @@ -133,10 +134,10 @@ forceSuccessProcess p pid = do ExitSuccess -> return () ExitFailure n -> fail $ showCmd p ++ " exited " ++ show n -{- Waits for a ProcessHandle and returns True if it exited successfully. - - Note that using this with createProcessChecked will throw away - - the Bool, and is only useful to ignore the exit code of a process, - - while still waiting for it. -} +-- | Waits for a ProcessHandle and returns True if it exited successfully. +-- Note that using this with createProcessChecked will throw away +-- the Bool, and is only useful to ignore the exit code of a process, +-- while still waiting for it. -} checkSuccessProcess :: ProcessHandle -> IO Bool checkSuccessProcess pid = do code <- waitForProcess pid @@ -147,13 +148,13 @@ ignoreFailureProcess pid = do void $ waitForProcess pid return True -{- Runs createProcess, then an action on its handles, and then - - forceSuccessProcess. -} +-- | Runs createProcess, then an action on its handles, and then +-- forceSuccessProcess. createProcessSuccess :: CreateProcessRunner createProcessSuccess p a = createProcessChecked (forceSuccessProcess p) p a -{- Runs createProcess, then an action on its handles, and then - - a checker action on its exit code, which must wait for the process. -} +-- | Runs createProcess, then an action on its handles, and then +-- a checker action on its exit code, which must wait for the process. createProcessChecked :: (ProcessHandle -> IO b) -> CreateProcessRunner createProcessChecked checker p a = do t@(_, _, _, pid) <- createProcess p @@ -161,14 +162,14 @@ createProcessChecked checker p a = do _ <- checker pid either E.throw return r -{- Leaves the process running, suitable for lazy streaming. - - Note: Zombies will result, and must be waited on. -} +-- | Leaves the process running, suitable for lazy streaming. +-- Note: Zombies will result, and must be waited on. createBackgroundProcess :: CreateProcessRunner createBackgroundProcess p a = a =<< createProcess p -{- Runs a process, optionally feeding it some input, and - - returns a transcript combining its stdout and stderr, and - - whether it succeeded or failed. -} +-- | Runs a process, optionally feeding it some input, and +-- returns a transcript combining its stdout and stderr, and +-- whether it succeeded or failed. processTranscript :: String -> [String] -> (Maybe String) -> IO (String, Bool) processTranscript cmd opts input = processTranscript' cmd opts Nothing input @@ -232,9 +233,9 @@ processTranscript' cmd opts environ input = do hClose inh writeinput Nothing _ = return () -{- Runs a CreateProcessRunner, on a CreateProcess structure, that - - is adjusted to pipe only from/to a single StdHandle, and passes - - the resulting Handle to an action. -} +-- | Runs a CreateProcessRunner, on a CreateProcess structure, that +-- is adjusted to pipe only from/to a single StdHandle, and passes +-- the resulting Handle to an action. withHandle :: StdHandle -> CreateProcessRunner @@ -256,7 +257,7 @@ withHandle h creator p a = creator p' $ a . select | h == StderrHandle = (stderrHandle, base { std_err = CreatePipe }) -{- Like withHandle, but passes (stdin, stdout) handles to the action. -} +-- | Like withHandle, but passes (stdin, stdout) handles to the action. withIOHandles :: CreateProcessRunner -> CreateProcess @@ -270,7 +271,7 @@ withIOHandles creator p a = creator p' $ a . ioHandles , std_err = Inherit } -{- Like withHandle, but passes (stdout, stderr) handles to the action. -} +-- | Like withHandle, but passes (stdout, stderr) handles to the action. withOEHandles :: CreateProcessRunner -> CreateProcess @@ -284,8 +285,8 @@ withOEHandles creator p a = creator p' $ a . oeHandles , std_err = CreatePipe } -{- Forces the CreateProcessRunner to run quietly; - - both stdout and stderr are discarded. -} +-- | Forces the CreateProcessRunner to run quietly; +-- both stdout and stderr are discarded. withQuietOutput :: CreateProcessRunner -> CreateProcess @@ -297,8 +298,8 @@ withQuietOutput creator p = withFile devNull WriteMode $ \nullh -> do } creator p' $ const $ return () -{- Stdout and stderr are discarded, while the process is fed stdin - - from the handle. -} +-- | Stdout and stderr are discarded, while the process is fed stdin +-- from the handle. feedWithQuietOutput :: CreateProcessRunner -> CreateProcess @@ -319,11 +320,11 @@ devNull = "/dev/null" devNull = "NUL" #endif -{- Extract a desired handle from createProcess's tuple. - - These partial functions are safe as long as createProcess is run - - with appropriate parameters to set up the desired handle. - - Get it wrong and the runtime crash will always happen, so should be - - easily noticed. -} +-- | Extract a desired handle from createProcess's tuple. +-- These partial functions are safe as long as createProcess is run +-- with appropriate parameters to set up the desired handle. +-- Get it wrong and the runtime crash will always happen, so should be +-- easily noticed. type HandleExtractor = (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -> Handle stdinHandle :: HandleExtractor stdinHandle (Just h, _, _, _) = h @@ -344,7 +345,7 @@ oeHandles _ = error "expected oeHandles" processHandle :: (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -> ProcessHandle processHandle (_, _, _, pid) = pid -{- Debugging trace for a CreateProcess. -} +-- | Debugging trace for a CreateProcess. debugProcess :: CreateProcess -> IO () debugProcess p = do debugM "Utility.Process" $ unwords @@ -360,15 +361,15 @@ debugProcess p = do piped Inherit = False piped _ = True -{- Shows the command that a CreateProcess will run. -} +-- | Shows the command that a CreateProcess will run. showCmd :: CreateProcess -> String showCmd = go . cmdspec where go (ShellCommand s) = s go (RawCommand c ps) = c ++ " " ++ show ps -{- Starts an interactive process. Unlike runInteractiveProcess in - - System.Process, stderr is inherited. -} +-- | Starts an interactive process. Unlike runInteractiveProcess in +-- System.Process, stderr is inherited. startInteractiveProcess :: FilePath -> [String] @@ -384,7 +385,8 @@ startInteractiveProcess cmd args environ = do (Just from, Just to, _, pid) <- createProcess p return (pid, to, from) -{- Wrapper around System.Process function that does debug logging. -} +-- | Wrapper around 'System.Process.createProcess' from System.Process, +-- that does debug logging. createProcess :: CreateProcess -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) createProcess p = do debugProcess p diff --git a/src/Utility/QuickCheck.hs b/src/Utility/QuickCheck.hs index 54200d3..cd408dd 100644 --- a/src/Utility/QuickCheck.hs +++ b/src/Utility/QuickCheck.hs @@ -19,6 +19,7 @@ import System.Posix.Types import qualified Data.Map as M import qualified Data.Set as S import Control.Applicative +import Prelude instance (Arbitrary k, Arbitrary v, Eq k, Ord k) => Arbitrary (M.Map k v) where arbitrary = M.fromList <$> arbitrary diff --git a/src/Utility/SafeCommand.hs b/src/Utility/SafeCommand.hs index 9eaa530..9102b72 100644 --- a/src/Utility/SafeCommand.hs +++ b/src/Utility/SafeCommand.hs @@ -5,44 +5,45 @@ - License: BSD-2-clause -} +{-# OPTIONS_GHC -fno-warn-tabs #-} + module Utility.SafeCommand where import System.Exit import Utility.Process import Data.String.Utils -import Control.Applicative import System.FilePath import Data.Char +import Control.Applicative +import Prelude -{- A type for parameters passed to a shell command. A command can - - be passed either some Params (multiple parameters can be included, - - whitespace-separated, or a single Param (for when parameters contain - - whitespace), or a File. - -} -data CommandParam = Params String | Param String | File FilePath +-- | Parameters that can be passed to a shell command. +data CommandParam + = Param String -- ^ A parameter + | File FilePath -- ^ The name of a file deriving (Eq, Show, Ord) -{- Used to pass a list of CommandParams to a function that runs - - a command and expects Strings. -} +-- | Used to pass a list of CommandParams to a function that runs +-- a command and expects Strings. -} toCommand :: [CommandParam] -> [String] -toCommand = concatMap unwrap +toCommand = map unwrap where - unwrap (Param s) = [s] - unwrap (Params s) = filter (not . null) (split " " s) + unwrap (Param s) = s -- Files that start with a non-alphanumeric that is not a path -- separator are modified to avoid the command interpreting them as -- options or other special constructs. unwrap (File s@(h:_)) - | isAlphaNum h || h `elem` pathseps = [s] - | otherwise = ["./" ++ s] - unwrap (File s) = [s] + | isAlphaNum h || h `elem` pathseps = s + | otherwise = "./" ++ s + unwrap (File s) = s -- '/' is explicitly included because it's an alternative -- path separator on Windows. pathseps = pathSeparator:"./" -{- Run a system command, and returns True or False - - if it succeeded or failed. - -} +-- | Run a system command, and returns True or False if it succeeded or failed. +-- +-- This and other command running functions in this module log the commands +-- run at debug level, using System.Log.Logger. boolSystem :: FilePath -> [CommandParam] -> IO Bool boolSystem command params = boolSystem' command params id @@ -56,7 +57,7 @@ boolSystemEnv :: FilePath -> [CommandParam] -> Maybe [(String, String)] -> IO Bo boolSystemEnv command params environ = boolSystem' command params $ \p -> p { env = environ } -{- Runs a system command, returning the exit status. -} +-- | Runs a system command, returning the exit status. safeSystem :: FilePath -> [CommandParam] -> IO ExitCode safeSystem command params = safeSystem' command params id @@ -71,23 +72,22 @@ safeSystemEnv :: FilePath -> [CommandParam] -> Maybe [(String, String)] -> IO Ex safeSystemEnv command params environ = safeSystem' command params $ \p -> p { env = environ } -{- Wraps a shell command line inside sh -c, allowing it to be run in a - - login shell that may not support POSIX shell, eg csh. -} +-- | Wraps a shell command line inside sh -c, allowing it to be run in a +-- login shell that may not support POSIX shell, eg csh. shellWrap :: String -> String shellWrap cmdline = "sh -c " ++ shellEscape cmdline -{- Escapes a filename or other parameter to be safely able to be exposed to - - the shell. - - - - This method works for POSIX shells, as well as other shells like csh. - -} +-- | Escapes a filename or other parameter to be safely able to be exposed to +-- the shell. +-- +-- This method works for POSIX shells, as well as other shells like csh. shellEscape :: String -> String shellEscape f = "'" ++ escaped ++ "'" where -- replace ' with '"'"' escaped = join "'\"'\"'" $ split "'" f -{- Unescapes a set of shellEscaped words or filenames. -} +-- | Unescapes a set of shellEscaped words or filenames. shellUnEscape :: String -> [String] shellUnEscape [] = [] shellUnEscape s = word : shellUnEscape rest @@ -104,19 +104,19 @@ shellUnEscape s = word : shellUnEscape rest | c == q = findword w cs | otherwise = inquote q (w++[c]) cs -{- For quickcheck. -} +-- | For quickcheck. prop_idempotent_shellEscape :: String -> Bool prop_idempotent_shellEscape s = [s] == (shellUnEscape . shellEscape) s prop_idempotent_shellEscape_multiword :: [String] -> Bool prop_idempotent_shellEscape_multiword s = s == (shellUnEscape . unwords . map shellEscape) s -{- Segments a list of filenames into groups that are all below the maximum - - command-line length limit. -} +-- | Segments a list of filenames into groups that are all below the maximum +-- command-line length limit. segmentXargsOrdered :: [FilePath] -> [[FilePath]] segmentXargsOrdered = reverse . map reverse . segmentXargsUnordered -{- Not preserving data is a little faster, and streams better when - - there are a great many filesnames. -} +-- | Not preserving order is a little faster, and streams better when +-- there are a great many filenames. segmentXargsUnordered :: [FilePath] -> [[FilePath]] segmentXargsUnordered l = go l [] 0 [] where diff --git a/src/Utility/Scheduled.hs b/src/Utility/Scheduled.hs index e077a1f..b381332 100644 --- a/src/Utility/Scheduled.hs +++ b/src/Utility/Scheduled.hs @@ -32,7 +32,6 @@ import Utility.QuickCheck import Utility.PartialPrelude import Utility.Misc -import Control.Applicative import Data.List import Data.Time.Clock import Data.Time.LocalTime @@ -41,6 +40,8 @@ import Data.Time.Calendar.WeekDate import Data.Time.Calendar.OrdinalDate import Data.Tuple.Utils import Data.Char +import Control.Applicative +import Prelude {- Some sort of scheduled event. -} data Schedule = Schedule Recurrance ScheduledTime diff --git a/src/Utility/Tmp.hs b/src/Utility/Tmp.hs index dc55981..de970fe 100644 --- a/src/Utility/Tmp.hs +++ b/src/Utility/Tmp.hs @@ -6,6 +6,7 @@ -} {-# LANGUAGE CPP #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.Tmp where diff --git a/src/Utility/UserInfo.hs b/src/Utility/UserInfo.hs index 5bf8d5c..7e94caf 100644 --- a/src/Utility/UserInfo.hs +++ b/src/Utility/UserInfo.hs @@ -6,6 +6,7 @@ -} {-# LANGUAGE CPP #-} +{-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.UserInfo ( myHomeDir, @@ -13,12 +14,13 @@ module Utility.UserInfo ( myUserGecos, ) where +import Utility.Env + import System.PosixCompat #ifndef mingw32_HOST_OS import Control.Applicative #endif - -import Utility.Env +import Prelude {- Current user's home directory. -