Index: client/1.0/neutral/pkgd.eagle ================================================================== --- client/1.0/neutral/pkgd.eagle +++ client/1.0/neutral/pkgd.eagle @@ -35,10 +35,20 @@ if {$force || ![info exists loginUrn]} then { set loginUrn pkgd_login } + # + # NOTE: The URN, relative to the base URI, where the list of supported + # platforms for a single package may be found. + # + variable platformsUrn; # DEFAULT: pkgd_platforms + + if {$force || ![info exists platformsUrn]} then { + set platformsUrn pkgd_platforms + } + # # NOTE: The URN, relative to the base URI, where a single package file # may be found. # variable downloadUrn; # DEFAULT: pkgd_file @@ -83,10 +93,20 @@ if {$force || ![info exists loginUri]} then { set loginUri [appendArgs \ {${baseUri}/${loginUrn}?} {[uriEscape name $userName]} & \ {[uriEscape password $password]}] } + + # + # NOTE: The URI where the list of supported platforms for a single + # package may be found. + # + variable platformsUri; # DEFAULT: ${baseUri}/${platformsUrn}?... + + if {$force || ![info exists platformsUri]} then { + set platformsUri {${baseUri}/${platformsUrn}?download&name=trunk} + } # # NOTE: The URI where a single package file may be found. This file will # belong to a specific version of one package. # @@ -391,11 +411,11 @@ return false } set extension [file extension $fileName] - if {$extension eq ".asc"} then { + if {$extension eq ".txt" || $extension eq ".asc"} then { if {!$nameOnly && [file exists $fileName]} then { return [::PackageRepository::isOpenPgpSignature \ [readFile $fileName]] } else { return true @@ -636,33 +656,135 @@ } else { error "unsupported language" } } + # + # NOTE: This procedure returns the name of the current platform. There are + # no arguments. An empty string will be returned if the name of the + # current platform cannot be determined for any reason. + # + proc getPlatform {} { + global tcl_platform + + if {[info exists tcl_platform(platform)]} then { + set platform $tcl_platform(platform) + + if {[info exists tcl_platform(machine)]} then { + set machine $tcl_platform(machine) + } else { + set machine "" + } + + switch -exact -- $platform { + windows { + switch -exact -- $machine { + intel - + ia32_on_win64 { + return win32-x86 + } + arm { + return win32-arm + } + ia64 { + return win64-ia64 + } + amd64 { + return win64-x64 + } + arm64 { + return win64-arm64 + } + } + } + } + } + + return "" + } + # # NOTE: This procedure verifies the platform specified by the caller. The # platform argument must be an empty string -OR- one of the literal # strings "neutral", "win32-arm", "win32-x86", "win64-arm64", # "win64-ia64", or "win64-x64". An empty string means that the - # associated entity does not require a specific platform. Upon - # failure, a script error will be raised. The return value is - # undefined. + # associated entity does not require a specific platform. The + # varName argument is the name of a variable in the context of the + # immediate caller that will receive a modified platform name, if + # applicable. Upon failure, a script error will be raised. The + # return value is undefined. # proc verifyPlatform { platform varName } { + # + # NOTE: The platform name must be matched exactly and case-sensitively. + # switch -exact -- $platform { "" { # - # NOTE: This platform name is supported; however, the name needs - # to be normalized to "neutral". + # NOTE: The empty string means "attempt to automatically detect" the + # necessary platform based on context information that may be + # present in the context of the immediate caller. If this is + # not possible, a script error will be raised. + # + upvar 1 language language + + if {![info exists language]} then { + error "unable to detect language" + } + + upvar 1 version version + + if {![info exists version]} then { + error "unable to detect version" + } + + upvar 1 packageName packageName + + if {[info exists packageName]} then { + set localPackageName $packageName + } else { + set localPackageName "" + } + + upvar 1 usePgp usePgp + + if {[info exists usePgp]} then { + set localUsePgp $usePgp + } else { + set localUsePgp false + } + # - # TODO: In the future, the empty string may mean "automatically - # detect" the necessary platform instead of always being - # mapped to "neutral". + # NOTE: Download the list of platforms associated with this package + # from the package repository server. This may fail and raise + # a script error. # + set platforms [downloadAllPlatforms \ + $language $version $localPackageName $localUsePgp] + if {[string length $varName] > 0} then { - upvar 1 $varName newPlatform; set newPlatform neutral + upvar 1 $varName newPlatform + } + + # + # NOTE: Check the current platform and the neutral platform, in that + # order, to see if that platform is supported by the package + # being saught. If so, return that platform. + # + foreach thisPlatform [list [getPlatform] neutral] { + if {[lsearch -exact $platforms $thisPlatform] != -1} then { + set newPlatform $thisPlatform + return + } } + + # + # NOTE: If this point is reached, there are no supported platforms + # that are compatible with the current one for the specified + # package. + # + error "could not automatically detect platform" } neutral - win32-arm - win32-x86 - win64-arm64 - @@ -934,10 +1056,96 @@ } return [expr {$compare > 0}] } + # + # NOTE: This procedure downloads a manitest from the package file server, + # writing its contents to the specified local file name. It can also + # verify the OpenPGP signature. The language argument must be one of + # the literal strings "eagle", "tcl", or "client". The version + # argument must be one of the literal strings "8.4", "8.5", or "8.6" + # when the language is "tcl" -OR- the literal string "1.0" when the + # language is either "eagle" or "client". The packageName argument + # is a directory name relative to the language and version-specific + # directory on the package file server and may be an empty string. + # The localFileName argument is the file name where the downloaded + # file should be written. The usePgp argument should be non-zero + # when an OpenPGP signature needs to be verified for the downloaded + # file. + # + proc downloadAllPlatforms { language version packageName usePgp } { + variable baseUri + variable platformsUri + variable platformsUrn + variable temporaryRootDirectory + + set temporaryDirectory [file join \ + $temporaryRootDirectory [appendArgs \ + pkgd_plat_ [::PackageRepository::getUniqueSuffix]]] + + set localFileName [file join $temporaryDirectory manifest.txt] + file mkdir [file dirname $localFileName] + + # + # NOTE: First, build the final URI to download from the remote package + # repository. + # + set uri [subst $platformsUri] + + # + # NOTE: Then, in one step, download the file from the package file + # server and write it to the specified local file. + # + writeFile $localFileName [getPackageFile $uri] + + # + # NOTE: Is use of OpenPGP for signature verification enabled? Also, + # did we just download an OpenPGP signature file? + # + if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then { + # + # NOTE: Attempt to verify the OpenPGP signature. If this fails, + # an error is raised. + # + if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then { + error [appendArgs \ + "bad OpenPGP signature \"" $localFileName \"] + } + } + + # + # NOTE: Initialize list of platforms to return. This will be populated + # based on the platform directories available in the downloaded + # manfiest data. + # + set platforms [list] + + # + # NOTE: Read the (OpenPGP verified) Fossil manifest data from the local + # file and split it into lines. + # + set data [readFile $localFileName]; set lines [split $data \n] + + foreach line $lines { + if {[string range $line 0 1] eq "F "} then { + set fileName [lindex [split $line " "] 1] + + if {[string match [file join \ + $language $version * $packageName *] $fileName]} then { + set directory [lindex [file split $fileName] 2] + + if {[string length $directory] > 0} then { + lappend platforms $directory + } + } + } + } + + return [lsort -unique $platforms] + } + # # NOTE: This procedure downloads a single file from the package file server, # writing its contents to the specified local file name. It can also # verify the OpenPGP signatures. When an OpenPGP signature file is # downloaded, this procedure assumes the corresponding data file was @@ -952,12 +1160,12 @@ # string means that the associated package does not require a specific # platform. The fileName argument is a file name relative to the # language and version-specific directory on the package file server. # The localFileName argument is the file name where the downloaded # file should be written. The usePgp argument should be non-zero when - # an OpenPGP signature file needs to be downloaded and verified for - # the downloaded file. + # the OpenPGP signature file needs to be verified for the downloaded + # file. # proc downloadOneFile { language version platform fileName localFileName usePgp } { variable baseUri variable downloadUri Index: client/1.0/neutral/pkgd.eagle.asc ================================================================== --- client/1.0/neutral/pkgd.eagle.asc +++ client/1.0/neutral/pkgd.eagle.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYErSKAAoJEFAslq9JXcLZ5EUP/0XCT6DuFTrXFd8DfZ7cXjgh -x4sE1noukUNCAox48A39jMWacX+PV/ugik938PwCfhycz+dx2RU+eqgW5uhRwP2d -TxAmB+nGAQPD8tzA9Rhyq5CM0SMcaCk8Irk1veRqYdxr9xvMOEr2gOn2jpgghpji -47JMDjrXRT55XBHXdT/+gBeCYzNj+NBiNO8pJyhLG6SF6rha0qRDs34l2CLkF9Rk -mBUriMtOnLAJAoNyXXXPxa6LNepBBk5btVri3Ni1NFbNW83XX4q63tHwUwADuQy5 -fnbVrB5fnQwNobyCIX0YeWUacC28kSShLiOeryfCKyITJmkt/QwuyhVyTBgvpegU -ImYrMd0jZSiLeljJsgbbXlRMPoKOOowxFKEkF5re1fQW88b2BjJlsAIO4ubM6qW2 -e33VertK+/aBu1g6VmMywy+Npp+lTLWEULPYsHWlqcFLI3A+u727ron0qGiKp+7R -9ukJNhw0FMixuE0f4N1/GRDAgm9VMDayUJfUlHttz55EbXSjcCD80D2vJW2jT4fA -WeYk3qLB9z3bvWt/KdUvO/31Efu4njAdE0H8NoJQ9HwHxXX/VJIoCqOjZ52Ub6ZQ -uA3JWO8otT/QjbSU+cc/XfeHPpzlnv5kzoX0vQwa1Nf35LNc6q6n1A383AeZi/Ku -yQ31+8S0voNpiEWdzJsq -=uj6D +iQIcBAABCAAGBQJYEtk1AAoJEFAslq9JXcLZcsQP/20OJlkj118yDCfCoR7Zyhnv +pOFCDXDnIq/ldclVELKg+EK/CrxgmCAH/+pDSLxTWT+/Y1BTTeQ8Kp7fO2IWCFVj +hoizNoUzqaDxYLqhy0FPwRKA0RvsS5VJGhJp8lC9/i8KLy3gjpxo/uMESOwKX+AW +NRbhOP+ngBfPYMnWdKGdjWCQSmGOL/8+DLffmk8VKpmtO4ZJDN4RAArvsrclA1JD +E8lSKq6VmlGeJyUxjMX8LK2RX25m8Pz3tzsDCfOkYW8NbAOAQTMhoRspoJe9J5O3 +5Ldyx0QUR6RJNJfM6FfzGtsYowmV2n9J2jDWzaGB6f599EUBCu5q0r4gaceBU1CC +L8onojsxGxaa9gUF1NgLML3YopvW5KIx2ZGXP+GWvT44kOmOaM8hgJo6+arh7LfU +swQ9nhz1MeVrSbyS3408LHGcCEGzQrC5pNJeYgfE8GWp5jJuukxXkOSnfKhO9H7n +A5+WbHcIAz4qvgMUxDiREXbE8oBHQrt8BhtwPmW6HG9KOUS2oaS4oNJobC8+n2Xu +lzyrch7APqT7Wg5X572TL2A/e7OQO2MIpubr7vHso5C/t22XgMMZy3CVMeJqMLK6 +Db5v70omu+ioKm2zrsDo7I7aRw+KpHJ+HWmF0mO1QsapHPSDZPUdZcLm8Sn55JRJ +h2tZ8pLujJP36P4qSX6N +=KcGx -----END PGP SIGNATURE----- Index: client/1.0/neutral/pkgd.eagle.harpy ================================================================== --- client/1.0/neutral/pkgd.eagle.harpy +++ client/1.0/neutral/pkgd.eagle.harpy @@ -19,50 +19,50 @@ None Mistachkin Systems - a6607832-9a24-45a8-bc82-12209d66f1ca + 5fdc11ef-e852-4689-a69f-af685136081a SHA512 Script - 2016-10-28T02:14:10.5897969Z + 2016-10-28T04:50:36.5976094Z -1.00:00:00 0x9559f6017247e3e2 - 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 Index: client/1.0/neutral/pkgd.eagle.harpy.asc ================================================================== --- client/1.0/neutral/pkgd.eagle.harpy.asc +++ client/1.0/neutral/pkgd.eagle.harpy.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYErSMAAoJEFAslq9JXcLZVSoP/0JKSJ+Wd+RO9CvCjEzlpWL0 -dWkxv7HJHeir66bW0GJaCr+3v+wACyzLT4szqDb47KmP6zpHK/UPb1PO7ZY164LM -eLKc75+OlaQVmft0ArlvqLlG0s+GMJ1Af5SB0NTIJHGam6055d7v2BaMXs69wvD9 -3wT25MuYuL5146ud1x4BkJxq46okDw2RCfHXolqqkMpGWB58dDKGgCwPRT//4ASF -2pwo+3U4JTj2eZUzUPes9OXU+nYbRx8YfokAFFivLvsqkKIVgvJA+CbNhJ7MNJg0 -z/basbrdjkUiAYjiwW73AhvM+r4QT5lktlVEJIe/mwlmyav6aS7POiiZVsJTxgB7 -KkvHeEvFB8DTfk1cC1syCXjq0XW+PhFVtUKAXYVYP+oX6aRpp4+YGzuE3Bp6Wc16 -h0+d4YFXekvSRHu/nV6A4vEoun0DGL8zb39h5w1MlUc/rN0PuNw/RhcqcNatGY+k -viAWEEGQicacgUsJD3OrNogiLCGCOGdmnWQnEBnIpLzlKbjsmglm0pXn43DPCH6H -jFLI9faP62208wLUIRne1hXhKX5C2iC2ykcejo4dUDqmwqGdCACBSNBL9QOEYUsC -s/9RLNsks9P0k+ORlHzyt4XRJ7RcfeaBlor0+Z/DmVPJh4WHkPGFm2r0/cnN9RB/ -r86Sk0dWyUy06FbHu87I -=G2d/ +iQIcBAABCAAGBQJYEtk5AAoJEFAslq9JXcLZ77QQAJCkxCZcry3Ex59M+9OPefBE +D8kE4lZyaBUUWJOUdKMzn2d/J3f7PrnZh4+Jxt0CHBKZ7ITN2tt0XQCVT8eNEU+C +tTXstUNMl0Fn0SkpudDw8iu9GlssVdALvDlIDcTPbzATEjGzywzOYDEbpwlrcBhQ +iWQOXw3nGsU9LHHjpSGa7nPtUuJ6wwS0iEoFJ6dxUl2QIjEvEMueOMU7+pN94TkO +7ULOqVwcUj1QdtPW1TO9PRfWQJKt1Ivi9U+4kPyfH/gQtP7wrY6mZukZ80EbRoRi +BOm9zl+iSHVv9uLtfvgYJ83ViYLvRWBX+OjhVyxpSShBtp7W5jdTmiMRGRzHmVuc +dMu+pu6vBKZkp8gtXGlvBp014PHgvreUxhUdh+i0qfrCrXAp8NMtNlSXV2QolPAo +sRLCnh7gpu/SY3/RqsiKPPA3aJ8bJV/cuWuQn4gHMQqSO2BfjrEytBjs9ltxaQKu +4wZhOQdWEYGmjuF+bXJwS1LvjDyBtV2JanDWgOMhn61HvU0wfs7pVyLMFmTmBZwX +jt/PwD3qiShHKPPZsgRHxM7/MmzdaC1CWHZa3MFdm2sovON6YueaVyuMZls7jzaO +X0iTC0KtJUI+eaD58UZS9laGRkTMWbPrWxac0EKZq54l+xyx5Po+LkZL7rCtzGgd +4ZkMeGBx2HDmVYcJQrlA +=29wH -----END PGP SIGNATURE----- Index: client/1.0/neutral/pkgr.eagle ================================================================== --- client/1.0/neutral/pkgr.eagle +++ client/1.0/neutral/pkgr.eagle @@ -1598,11 +1598,19 @@ if {[string length $script] == 0 || \ ![file exists $script] || ![file isfile $script]} then { return } - foreach prefix [list $tcl_platform(user) ""] { + set prefixes [list] + + if {[info exists tcl_platform(user)]} then { + lappend prefixes $tcl_platform(user) + } + + lappend prefixes "" + + foreach prefix $prefixes { if {[string length $prefix] > 0} then { set prefix [appendArgs . $prefix] } set fileName [appendArgs \ Index: client/1.0/neutral/pkgr.eagle.asc ================================================================== --- client/1.0/neutral/pkgr.eagle.asc +++ client/1.0/neutral/pkgr.eagle.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYEozaAAoJEFAslq9JXcLZXBYP/jix4vbRC7x4EMdHpQ6zBxHf -FCR4EZg6YvXEkHrRGMUFstk1MFeZ5Acc1Iwx57ZF8IhIGrPApe3eE3J5x8v+rlPe -pe8uxJd0sLuIYt23NSIX/ZgIJ4UNBTbmmPpniEJ6+Oa2uWK/ecdtAgNuGGXamKMI -5K8v1WpDfg34kJtLycVLndsZoX6e0rZETkJG9RHwxBLSxYQYEICy6WqlyvNepdAA -2/0GL1FA1BawnNKrxm1uivFIFiMEGyuTKBves9Rvg4EF3FbukngDvgnzlnPQ79h7 -BKXyWDAwmWLhsaKcQcD4mow6uenp1DRExjOpg7TuYCTUYMBBvbKBNKkMLqsd14uw -ZFgcJSzFO6lZR3sfC1rGNzRomvy70tuDEg2NpZMfmyQpKsNbWk2J/m/nReSUG9eJ -RpR85MEmhMcU/5QCSB3J6TY3s5iZzjsPLq04JC7w62VsSfKKFDRP2Tcnmc4ri5sK -cXOSefJzU1sLj9biXYhZumxv3Bd1iuDBdkBiZj4r05OPaZJV0IcVFU3Aj8x3PVEs -QscBZepaVL0ubXk+YgfnjDFC7CL8Eda9OIwl4zaxKkdKERvRnZDPjBUOJcNmHzkL -NNF35XTVp6RTM143oogHsL3PWT/3VjqLV+fjKgwei8qGuPrOEWuLUVPomtX+qMbS -TlfsGkBnfYRc7cCB55T0 -=9Jjy +iQIcBAABCAAGBQJYEtS+AAoJEFAslq9JXcLZGX0P/2xZOWZqH3yuOu+DrzJ7Nsnj +BnMN+pZ2qtNAsyTNFTwJYjKHhGLwk3V9XlHwsBebblTT48OrtLz8yZpZDBkVk9/0 +sgXI8gbUp7Eivv+f47zAIhJ2Qfykc8tIANyF1Q/AA2k1Aen+DD9ZJbtqqKorblbt +izQJ8dIW72Sfrv17WZx7D0w2mmUcSFfb22/+nJ7GhlHmh39KW0IMilG1qtThJJai +62rknx8X6rG3GUGy/CgZYzKwPwQY366CAEfv/N+IafmVPfhstMVHHt5+pVuTvNTs +PkzBZdfFX2SUz57dIdbI5xk704ojXUIxoygFVaeS7HFAW4wa97niqoi5p5/1GFCe +apw+rEvCBbbw2daXuieison8fqNYl5pTIMwesACrXbwadTuPRA24KhnruLu22xE+ +NbEH3OUKRo4ol/HCLIC2avlGrixrjnxG0itkMkSG4pvrwTCfFz0XMUiTGKC8OZZj +OHo4wkLWg/SzCOAXWhphXkHvRDdBjAfbqBXCn7lG3Q9LIX+GUBu4Nc7F4cZHBGQF +kXJs441GeSvr/j3PpgacZBawg06sgpdpy+GGsB0lgdBGGYiWdYWbsnJF5F7WJRcC +GL2/F3b5IMAr3Lv3/3+ItFFWHuTH2KRqeXlnF09PIUST0PRFs28fnsQY61bwsORC +hfhA9cC/Vimsr4zCEDMH +=4fzG -----END PGP SIGNATURE----- Index: client/1.0/neutral/pkgr.eagle.harpy ================================================================== --- client/1.0/neutral/pkgr.eagle.harpy +++ client/1.0/neutral/pkgr.eagle.harpy @@ -19,50 +19,50 @@ None Mistachkin Systems - a5a5aa95-b6d6-4339-a05e-e9ac0515504c + 659beaa3-cb16-4af3-b230-95b60e9aeb3f SHA512 Script - 2016-10-27T23:24:53.9657735Z + 2016-10-28T04:31:35.4159688Z -1.00:00:00 0x9559f6017247e3e2 - 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 Index: client/1.0/neutral/pkgr.eagle.harpy.asc ================================================================== --- client/1.0/neutral/pkgr.eagle.harpy.asc +++ client/1.0/neutral/pkgr.eagle.harpy.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJYEozbAAoJEFAslq9JXcLZH+UQAK4LOLvYBgmYOfkkDvqz7d+2 -tFkp9O5tq19uBmkCDrSH9TRlNjzJG7gR3xL/0LNbr7mcVVas07/m2x8OFaEjGxT6 -b14GTFwWM3Dw910HI9Bq3zJrmeTMfBoB3mNGbal31jMnRIKkxTSZR/ZsTKfHEXkU -2C1c3HU2KkSdn3zWkN2n+CHJz+GmFGwnu0dx4gEzDIT1XZkC3mYBrRjc4rVBTK7O -MnSznnLVMtf2tydu6MS/kfHM1+tkK20SVvy9vHlYTNBcKeOrIArzXhzMCRDn434D -gBYr/iRdrJ2AZTA0urw/Vy6vTVcv2Sk4ANakszzhAj4Gy2Cs4llZaKClEGC4jFrA -8t2oHJXEEltprj+Tl+aAxofNfFvyM4MixmH7vK2LdPYbf2RXT3mwiSs4HsVw46WW -Uah3NPRRjl6w2NfKS9yeDy/8VV+7s107DEs6G8Ewx9Tromy/JFYj4M72umurz/yj -bqn8IlxZjclfNP7S1v58TKnN5zgOD/ptdiOZ9KbC/DswGSsEhhaCT5PF//ea8DY/ -KjciwB1RKS5BbMRRUyQjJx1tjo7svdZcSVuibBsUaJ1dXrdNzPWirE88MYeZpSYC -mEV0VT7P4RtCXiGFJ0UOP2hIL/MjLpw6oGBRdKJDcUtlvChHnL7d7+juZsrMOJtA -dd0OT4qIFZJr/SGABW8+ -=Q3U3 +iQIcBAABCAAGBQJYEtTAAAoJEFAslq9JXcLZCpsP/R8RQKMtThto29k0xhWmXHdv +1IP4B+tvjMQtKPe+DiO+LoiiiYJyn0OMPSyi/gDk73LeJKVMSp3ftVyshuHa9PUL +dvCvyr+hcOivOzqDX3k6fpXqZoI8ZwYP0QBQRPzElYKFM+pOA+m/BkZIdSnZ4Lay +k5mWdELTvPIaCTNixJ4nFi2XYbnpS19Z6kUojvGAy/BVLPTYpfUGieHBP1aov4df +hHEQdgSK6iLZLcfveC0T+YnWjtBpVjZGjxb/3Bvs6MBrZk9JBLL4ppMLEw7xmolC +ttKx2FMeaSfHOTHAfcy+KrSh9Sji6/cQAIUkSwZWkpzGkaCkiEK0kNZDpN41rt8e +yW8iQWYNmiWaivYpfwHWIoxVQTfKfyXZk6FEFowMcU1W5dBAsWh7YAcQ+Hat+coY +T706IJey+lN035MoIeVICyMCaXVLtCZmKGXMCv1ssddZRhrL6OhB7lJmYDKkDqYN +CTH2559BXm1Tv1yO6Af9nL4VWkJmqnlyqWaVXTU4AVC8BY1WVO4uYGEP8DZ/Kvii +glQgc79bnJHiYicr33yOC1/BsGnH5m4DKKwS+ZiAEA/lqIfwYxzALkJrb9hnyIB4 +sXwZzGHA79lmO5o3WRgSp/WhB698+5pLKeckMqB6joUlOMzE3cC0RJF8kzpUs60n +WoTVOH4TFvU30uFcVIei +=lRxs -----END PGP SIGNATURE-----