From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: To: 9fans@cse.psu.edu Subject: Re: [9fans] parallel/distributed computation From: Richard Miller <9fans@hamnavoe.com> Date: Fri, 26 Oct 2007 10:46:38 +0100 In-Reply-To: <13426df10710170939s1efac3ccka61a77a2ecb8aa14@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="upas-mnycmmyeuxdosmcrrwoqlgffca" Topicbox-Message-UUID: da561200-ead2-11e9-9d60-3106f5b1d025 This is a multi-part message in MIME format. --upas-mnycmmyeuxdosmcrrwoqlgffca Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Ron says: > There's a lot of MPI you (well, I) don't need. I would say you need almost none of it. Around 1993 as part of my PhD project I designed a parallel computing library based on the BSP model with exactly six primitives (of which two are housekeeping and one more is arguably redundant) - see attached man page. The simplicity meant that it could be implemented quickly and efficiently on a range of platforms from workstation clusters to the Cray T3D, and users found it easy to use and understand. Sadly BSP was too unconventional (too simple?) to become popular. -- Richard --upas-mnycmmyeuxdosmcrrwoqlgffca Content-Type: multipart/mixed; boundary="upas-jkakwrnmzncesdoukqzfxfnabv" Content-Disposition: inline This is a multi-part message in MIME format. --upas-jkakwrnmzncesdoukqzfxfnabv Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit from postmaster@vt310: The following attachment had content that we can't prove to be harmless. To avoid possible automatic execution, we changed the content headers. The original header was: Content-Type: text/troff Content-Disposition: attachment; filename=bsp.3 Content-Transfer-Encoding: base64 --upas-jkakwrnmzncesdoukqzfxfnabv Content-Type: application/octet-stream Content-Disposition: attachment; filename="bsp.3.suspect" Content-Transfer-Encoding: base64 LlRIIGJzcCAzQlNQICJWZXJzaW9uIDEuMSIgIk94Zm9yZCBCU1AgTGlicmFyeSIKLlNIIE5B TUUKYnNwX3N0YXJ0LCBic3BfZmluaXNoLCBic3Bfc3N0ZXAsIGJzcF9zc3RlcF9lbmQsIGJz cF9mZXRjaCwgYnNwX3N0b3JlIFwoZW0KT3hmb3JkIEJTUCBsaWJyYXJ5IHByaW1pdGl2ZXMK LlNIIEZPUlRSQU4gU1lOT1BTSVMKLm5mCi5CIHN1YnJvdXRpbmUgYnNwX3N0YXJ0IChtYXhw cm9jcywgbnByb2NzLCBteXBpZCkKLkIgaW50ZWdlciBtYXhwcm9jcywgbnByb2NzLCBteXBp ZAouTFAKLkIgc3Vicm91dGluZSBic3BfZmluaXNoCi5MUAoubmYKLkIgc3Vicm91dGluZSBi c3Bfc3N0ZXAgKHN0ZXBpZCkKLkIgaW50ZWdlciBzdGVwaWQKLkxQCi5uZgouQiBzdWJyb3V0 aW5lIGJzcF9zc3RlcF9lbmQgKHN0ZXBpZCkKLkIgaW50ZWdlciBzdGVwaWQKLkxQCi5uZgou QiBzdWJyb3V0aW5lIGJzcF9mZXRjaCAocGlkLCBzcmMsIGRzdCwgbmJ5dGVzKQouQiBpbnRl Z2VyIHBpZCwgbmJ5dGVzCi5JQiBhbnl0eXBlICIgc3JjLCBkc3QiCi5MUAoubmYKLkIgc3Vi cm91dGluZSBic3Bfc3RvcmUgKHBpZCwgc3JjLCBkc3QsIG5ieXRlcykKLkIgaW50ZWdlciBw aWQsIG5ieXRlcwouSUIgYW55dHlwZSAiIHNyYywgZHN0IgouU0ggQyBTWU5PUFNJUwoubmYK LkIgYnNwc3RhcnQgKGFyZ2MsIGFyZ3YsIG1heHByb2NzLCBucHJvY3MsIG15cGlkKQouQiBj aGFyICoqYXJndjsKLkIgaW50ICpucHJvY3MsICpteXBpZDsKLkxQCi5CIGJzcGZpbmlzaCAo XHwpCi5MUAoubmYKLkIgYnNwc3N0ZXAgKHN0ZXBpZCkKLkIgaW50IHN0ZXBpZDsKLkxQCi5u ZgouQiBic3Bzc3RlcF9lbmQgKHN0ZXBpZCkKLkIgaW50IHN0ZXBpZDsKLkxQCi5uZgouQiBi c3BmZXRjaCAocGlkLCBzcmMsIGRzdCwgbmJ5dGVzKQouQiBpbnQgcGlkLCBuYnl0ZXM7Ci5C IHZvaWQgKnNyYywgKmRzdDsKLkxQCi5uZgouQiBic3BzdG9yZSAocGlkLCBzcmMsIGRzdCwg bmJ5dGVzKQouQiBpbnQgcGlkLCBuYnl0ZXM7Ci5CIHZvaWQgKnNyYywgKmRzdDsKLlNIIERF U0NSSVBUSU9OClRoZSBPeGZvcmQgQlNQIGxpYnJhcnkgcHJvdmlkZXMgYQpjb25jaXNlIHNl dCBvZiBiYXNpYyBvcGVyYXRpb25zCmZvciBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgcGFy YWxsZWwgcHJvZ3JhbW1pbmcKYWNjb3JkaW5nIHRvIHRoZQouQiBidWxrLXN5bmNocm9ub3Vz IHBhcmFsbGVsCm1vZGVsIG9mIGNvbXB1dGF0aW9uLgpUaGVyZSBhcmUgaW1wbGVtZW50YXRp b25zIG9mIHRoZSBsaWJyYXJ5IGZvcgpkaXN0cmlidXRlZC1tZW1vcnkgbXVsdGljb21wdXRl cnMsCnNoYXJlZC1tZW1vcnkgbXVsdGlwcm9jZXNzb3JzLAphbmQgbmV0d29ya2VkIHdvcmtz dGF0aW9uIGNsdXN0ZXJzLAp1c2luZwphIHZhcmlldHkgb2YgcGFyYWxsZWwgc29mdHdhcmUg cGxhdGZvcm1zCnRvIHByb3ZpZGUgdGhlIHVuZGVybHlpbmcgY29tbXVuaWNhdGlvbiBhbmQK c3luY2hyb25pc2F0aW9uLgpBbGwgdmVyc2lvbnMgcHJlc2VudCB0aGUKc2FtZSBzZXQgb2Yg cHJpbWl0aXZlcyB0byB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbSwKd2l0aCBpZGVudGljYWwg c3ludGF4IGFuZCBzZW1hbnRpY3MuCi5TUyBQcm9jZXNzIG1hbmFnZW1lbnQKLlRQIDEwCi5C SSAiYnNwX3N0YXJ0ICgiICJtYXhwcm9jcywgbnByb2NzLCBteXBpZCIgKQppbml0aWF0ZXMg dGhlIHBhcmFsbGVsIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBjb3BpZXMKb2YgdGhlIGNhbGxp bmcgcHJvZ3JhbSwgb24gc2VwYXJhdGUgcHJvY2Vzc29ycyBpZiBwb3NzaWJsZS4KVGhlIGNh bGwgdG8KLkIgYnNwX3N0YXJ0Cm11c3QgYmUgdGhlIGZpcnN0IGV4ZWN1dGFibGUgc3RhdGVt ZW50IG9mIHRoZSBwcm9ncmFtLgouVFAKLkIgYnNwX2ZpbmlzaCAoXHwpCm11c3QgYmUgY2Fs bGVkIGF0IHRoZSBlbmQgb2YgdGhlIHByb2dyYW0uCldoZW4gZXZlcnkgcHJvY2VzcyBoYXMg Y2FsbGVkCi5CUiBic3BfZmluaXNoICwKcGFyYWxsZWwgcmVzb3VyY2VzIGFyZSByZWxlYXNl ZCBhbmQgdGhlIGVudGlyZSBwcm9ncmFtIGV4aXRzLgouVFAgMTAKLkkgbWF4cHJvY3MKdGhl IG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHByb2Nlc3NlcyB0byBydW4uCi5JIG1heHBy b2NzID0gMApyZXF1ZXN0cyBhbGwgYXZhaWxhYmxlIHByb2Nlc3NvcnMuCi5UUAouSSBucHJv Y3MKcmV0dXJucyB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHByb2Nlc3NlcyBhY3R1YWxseSBz dGFydGVkLAppbmNsdWRpbmcgdGhlIG9yaWdpbmFsIGNhbGxlci4KVGhlIGRlZ3JlZSBvZiBw YXJhbGxlbGlzbSBtYXkgYmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyIHdoZW4Kc3RhcnRpbmcg dGhlIHByb2dyYW0sIG9yIGluIGEgcHJpb3IgYGNvbmZpZ3VyYXRpb24nIHN0ZXA7CnNlZQou QlIgYnNwICgxKQpmb3IgZGV0YWlscyBvbiBlYWNoIHBhcmFsbGVsIGFyY2hpdGVjdHVyZS4K UHJvZ3JhbXMgc2hvdWxkIGJlIGRlc2lnbmVkIHRvIHdvcmsgY29ycmVjdGx5IGZvciBhbnkg dmFsdWUgb2YKLklSICJucHJvY3MgIiAiYmV0d2VlbiAiICIxICIgImFuZCAiIG1heHByb2Nz IC4KLlRQCi5JIG15cGlkCnJldHVybnMgaW4gZWFjaCBwcm9jZXNzIHRoZQouQiBwcm9jZXNz IGlkZW50aWZpZXIKb2YgdGhhdCBwcm9jZXNzLCB3aGljaAppcyBhbiBpbnRlZ2VyIGJldHdl ZW4KLklSICIwICIgImFuZCAiICJucHJvY3NcLTEiIC4KUHJvY2VzcwouSSAwCmlzIHRoZSBv bmx5CnByb2Nlc3Mgd2hpY2ggY2FuIHJlYWQgZnJvbSBzdGFuZGFyZCBpbnB1dCwKYW5kIG1h eSBiZSB0aGUgb25seSBvbmUgd2hpY2ggaGFzCmFjY2VzcyB0byBwcm9ncmFtIGFyZ3VtZW50 cyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgouVFAKLkkgYXJnYwooQyBpbnRlcmZhY2Ug b25seSkgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvCi5CIG1haW4oXHwpCi5U UAouSSBhcmd2CihDIGludGVyZmFjZSBvbmx5KSB0aGUgbGlzdCBvZiBhcmd1bWVudHMgcGFz c2VkIHRvCi5CIG1haW4oXHwpCi5MUApBbiBPeGZvcmQgQlNQIHByb2dyYW0gaXMgaW4gU1BN RCAoc2luZ2xlIHByb2dyYW0sIG11bHRpcGxlIGRhdGEpCmZvcm06CmFsbCBwcm9jZXNzZXMg ZXhlY3V0ZSB0aGUgc2FtZSBwcm9ncmFtIHRleHQsCmJ1dCBlYWNoIGhhcyBpdHMgb3duIGlu ZGVwZW5kZW50IGNvcHkgb2YgYWxsIHZhcmlhYmxlcy4KVGhlIG1hc3Rlci1zbGF2ZSBwcm9n cmFtbWluZyBzdHlsZSBjYW4gYWxzbyBiZSBhY2NvbW1vZGF0ZWQsIGJ5CnBlcmZvcm1pbmcg YG1hc3Rlcicgb3BlcmF0aW9ucyBvbmx5IGluIHByb2Nlc3MgXGZJMFxmUDsKZ2VuZXJhbGx5 IHByb2Nlc3MgXGZJMFxmUCBjYW4gYWN0IGFzIGEgc2xhdmUgYXMgd2VsbCwKdW5sZXNzIGl0 IGhhcyB1c2VmdWwgd29yayB0byBkbyB3aGlsZSB0aGUgc2xhdmUgY29tcHV0YXRpb24gaXMg cHJvY2VlZGluZy4KClRoZSBtZW1vcnkgbW9kZWwgaXMgYGRpcmVjdCcgQlNQLCByZXF1aXJp bmcgdGhlIGRhdGEgdG8gYmUgZXhwbGljaXRseQpwYXJ0aXRpb25lZCBhbmQgZGlzdHJpYnV0 ZWQuClRoZXJlIGlzIG5vIGdsb2JhbCBzaGFyZWQgZGF0YSwKYnV0IGEgcHJvY2VzcyBjYW4g bWFrZSBleHBsaWNpdCByZXF1ZXN0cyB0byByZWFkIGFuZCB3cml0ZQp0aGUgbG9jYWwgZGF0 YSBvZiBhbm90aGVyIHByb2Nlc3MuCi5TUyBCdWxrIHN5bmNocm9uaXNhdGlvbgouVFAgMTAK LkJJICJic3Bfc3N0ZXAgKCIgc3RlcGlkICkKbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhCi5C IHN1cGVyc3RlcApcKGVtIGEgcGhhc2Ugb2YgdGhlIHBhcmFsbGVsIHByb2dyYW0gZHVyaW5n IHdoaWNoCmVhY2ggcHJvY2VzcyBjYW4gcGVyZm9ybSBhIHNlcmllcyBvZiBjb21wdXRhdGlv biBzdGVwcyBvbgpsb2NhbCBkYXRhLCBhbmQgcmVxdWVzdCB0aGUgYXN5bmNocm9ub3VzIHJl YWRpbmcgb3Igd3JpdGluZyBvZgpub24tbG9jYWwgZGF0YSB0byBiZSB1c2VkIGluIGEgbGF0 ZXIgc3VwZXJzdGVwLgouVFAKLkJJICJic3Bfc3N0ZXBfZW5kICgiIHN0ZXBpZCApCm1hcmtz IHRoZSBlbmQgb2YgYSBzdXBlcnN0ZXAuClRoZXJlIGlzIGFuIGltcGxpY2l0IGdsb2JhbCBi YXJyaWVyIHN5bmNocm9uaXNhdGlvbiwKaW4gd2hpY2ggcHJvY2Vzc2VzIGFyZSBkZWxheWVk IHVudGlsIGV2ZXJ5IHByb2Nlc3MgaGFzCnJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc3VwZXJz dGVwIGFuZCBhbGwgYXN5bmNocm9ub3VzIGRhdGEgYWNjZXNzZXMKaGF2ZSBjb21wbGV0ZWQu Ci5UUCAxMAouSSBzdGVwaWQKYW4gaW50ZWdlciBsYWJlbCB3aGljaApzZXJ2ZXMgdG8gaWRl bnRpZnkgc3VwZXJzdGVwcwppbiB0aGUgcHJvZ3JhbSBmb3IgcHJvZmlsaW5nLCBjb25zaXN0 ZW5jeSBjaGVja2luZyBhbmQgZXJyb3IgcmVwb3J0aW5nLgpUaGUKLkJSIGJzcF9zc3RlcCAi IGFuZCAiIGJzcF9zc3RlcF9lbmQiCmRlbGltaXRpbmcgb25lCnN1cGVyc3RlcCBtdXN0IGhh dmUgdGhlIHNhbWUKbGFiZWwsCndoaWNoIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBhbnkg b3RoZXIgc3VwZXJzdGVwCmluIHRoZSBwcm9ncmFtIHRleHQsCmJ1dCB0aGUgY2hvaWNlIG9m IHN0ZXAgbnVtYmVyaW5nIGlzIG90aGVyd2lzZSBhcmJpdHJhcnkuCi5MUApFeGVjdXRpb24g b24gYWxsIHByb2Nlc3NvcnMgbXVzdCBwcm9jZWVkIHRocm91Z2ggYWxsIHRoZQpzdXBlcnN0 ZXBzIGluIHRoZSBzYW1lIG9yZGVyLgpUaGlzIGltcGxpZXMgdGhhdCBpZiBhIHN1cGVyc3Rl cCBpcyB3cml0dGVuIGluc2lkZSBhIGxvb3Agb3IKLkIgaWYKc3RhdGVtZW50LCB0aGUgbG9v cCBjb250cm9sIHZhcmlhYmxlIG9yIGNvbmRpdGlvbmFsCmV4cHJlc3Npb24gbXVzdCBoYXZl IHRoZSBzYW1lIHZhbHVlIGluIGFsbCBwcm9jZXNzb3JzLgpXaXRoaW4gYSBzdXBlcnN0ZXAs IGVhY2ggcHJvY2Vzc29yIG1heSBwZXJmb3JtIGRpZmZlcmVudCBjb21wdXRhdGlvbnMsCmZv bGxvdyBkaWZmZXJlbnQgY29udHJvbCBwYXRocywgYW5kIGV2ZW4gY2FsbCBkaWZmZXJlbnQg c3Vicm91dGluZXMsCmJ1dCBldmVyeSBwcm9jZXNzb3IgbXVzdCBoYXZlIHJlYWNoZWQgdGhl IGVuZCBvZiB0aGUgY3VycmVudCBzdXBlcnN0ZXAKYmVmb3JlIGFueSBvbmUgY2FuIHByb2Nl ZWQgdG8gdGhlIG5leHQuCi5MUApUaGUgcHJlc2VudCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5 IGRvZXMgbm90IGFsbG93IHN1cGVyc3RlcHMgdG8gYmUgbmVzdGVkLApvciB0byBzeW5jaHJv bmlzZSBvbmx5IGEgc3Vic2V0IG9mIHByb2Nlc3Nlcy4KLlNTIFJlbW90ZSBkYXRhIGFjY2Vz cwouVFAgMTAKLkJJICJic3BfZmV0Y2ggKCIgInBpZCwgc3JjLCBkc3QsIG5ieXRlcyIgKQpy ZXF1ZXN0cyBhbiBhc3luY2hyb25vdXMgdHJhbnNmZXIgb2YgZGF0YSBmcm9tIGFub3RoZXIg cHJvY2Vzcy4KVGhlIGNhbGxlciBtYXkgbm90IGV4YW1pbmUgdGhlCmRhdGEgdW50aWwgYWZ0 ZXIgdGhlIG5leHQKLkJSIGJzcF9zc3RlcF9lbmQgLApiZWNhdXNlIGl0IGlzIG5vdCBjZXJ0 YWluIHRvIGFycml2ZSBiZWZvcmUgdGhlIGJhcnJpZXIgc3luY2hyb25pc2F0aW9uLgouVFAg MTAKLkJJICJic3Bfc3RvcmUgKCIgInBpZCwgc3JjLCBkc3QsIG5ieXRlcyIgKQpyZXF1ZXN0 cyBhbiBhc3luY2hyb25vdXMgdHJhbnNmZXIgb2YgZGF0YSB0byBhbm90aGVyIHByb2Nlc3Mu ClRoZSByZW1vdGUgcHJvY2VzcyBtYXkgbm90IGV4YW1pbmUgdGhlCmRhdGEgdW50aWwgYWZ0 ZXIgdGhlIG5leHQKLkJSIGJzcF9zc3RlcF9lbmQgLgpCdXQgdGhlIGNhbGxpbmcgcHJvY2Vz cyBpcyBwZXJtaXR0ZWQgdG8gbW9kaWZ5IGl0cyBsb2NhbApjb3B5IGFzIHNvb24gYXMgdGhl Ci5CIGJzcF9zdG9yZQpyZXR1cm5zLApzbyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHJldXNl IG9uZSBidWZmZXIgdmFyaWFibGUgYXMgdGhlIHNvdXJjZQpmb3IgbXVsdGlwbGUgc3RvcmVz IGluIHRoZSBzYW1lIHN1cGVyc3RlcC4KLlRQIDEwCi5JIHBpZApwcm9jZXNzIGlkZW50aWZp ZXIgb2YgdGhlIHJlbW90ZSBwcm9jZXNzCi5UUAouSSBzcmMKZGF0YSBzb3VyY2UgbG9jYXRp b24gaW4gdGhlIHJlbW90ZSBwcm9jZXNzIChmZXRjaCkKb3IgdGhlIGNhbGxpbmcgcHJvY2Vz cyAoc3RvcmUpCi5UUAouSSBkc3QKZGF0YSBkZXN0aW5hdGlvbiBsb2NhdGlvbiBpbiB0aGUg Y2FsbGluZyBwcm9jZXNzIChmZXRjaCkKb3IgdGhlIHJlbW90ZSBwcm9jZXNzIChzdG9yZSkK LlRQCi5JIG5ieXRlcwpsZW5ndGggaW4gYnl0ZXMgb2YgdGhlIGRhdGEgdG8gYmUgdHJhbnNm ZXJyZWQKLkxQCkluIFxzLTFGT1JUUkFOXHMrMSwKLklSICJzcmMgIiAiYW5kICIgZHN0Cm1h eSBiZSB2YXJpYWJsZXMsIGFycmF5IG5hbWVzLCBvciBpbmRleGVkIGFycmF5IGV4cHJlc3Np b25zOwphbmQKLkkgc3JjCm1heSBhbHNvIGJlIGFuIGV4cHJlc3Npb24geWllbGRpbmcgYSB2 YWx1ZSBvZiBzaXplCi5JUiBuYnl0ZXMgLgpJbiBDLAouSVIgInNyYyAiICJhbmQgIiBkc3QK YXJlIHBvaW50ZXJzIHRvIGFueSB0eXBlLgouTFAKTm90ZSB0aGF0Ci5CUiBic3BfZmV0Y2gg IiBhbmQgIiBic3Bfc3RvcmUKYXJlIG5vdCBtZXNzYWdlLXBhc3NpbmcgcHJpbWl0aXZlcywg YWx0aG91Z2ggb24Kc29tZSBtYWNoaW5lcyB0aGV5IHdpbGwgYmUgaW1wbGVtZW50ZWQgYnkK bWVhbnMgb2YgbWVzc2FnZXMuClNlbWFudGljYWxseSB0aGV5IGFyZSByZW1vdGUgYXNzaWdu bWVudCBvcGVyYXRpb25zLAp3aGljaCBtYXkgYmUgcGVyZm9ybWVkIG9uIHNvbWUgc2hhcmVk LW1lbW9yeSBtYWNoaW5lcwphcyBhIGRpcmVjdCB0cmFuc2ZlciBvZiBkYXRhIGZyb20gYWRk cmVzcyBzcGFjZSB0byBhbm90aGVyLAp3aXRoIG5vIG5lZWQgZm9yIGV4dHJhIGJ1ZmZlcmlu ZyBvciBwZXItbWVzc2FnZSBzeW5jaHJvbmlzYXRpb24uCi5MUApUaGUgcHJlc2VudCB2ZXJz aW9uIG9mIHRoZSBsaWJyYXJ5IHBlcm1pdHMgbm9uLWxvY2FsIGRhdGEgYWNjZXNzCm9ubHkg dG8gb2JqZWN0cyB3aGljaCBhcmUgc3RhdGljYWxseSBhbGxvY2F0ZWQuClRoYXQgaXMsIHRo ZSBzb3VyY2Ugb2YgYSBmZXRjaCBvciB0aGUgZGVzdGluYXRpb24gb2YgYSBzdG9yZSBtdXN0 IGJlIGEKLkJSICJzdGF0aWMgIiAib3IgIiAiZXh0ZXJuICIKdmFyaWFibGUgaW4gQywKYSBs b2NhbCBvcgouQiBjb21tb24KdmFyaWFibGUgaW4gXHMtMUZPUlRSQU5ccysxLgouU1MgQ29u c2lzdGVuY3kgcnVsZXMKVG8gYXZvaWQgdGhlIG5vbmRldGVybWluaXNtIGNhdXNlZCBieSBj b25jdXJyZW50IGFjY2VzcyB0byBzaGFyZWQgZGF0YSwKdGhlcmUgYXJlIGxvZ2ljYWwgcmVz dHJpY3Rpb25zIG9uIHRoZSB1c2Ugb2YgdGhlCnJlbW90ZSBhc3NpZ25tZW50IHByaW1pdGl2 ZXMuCi5JUCBcKGJ1IDMKVGhlIGRlc3RpbmF0aW9uIGRhdGEgb2JqZWN0IG9mIGEKLkJSIGJz cF9mZXRjaCAiIG9yICIgYnNwX3N0b3JlCm1heSBub3QgYmUgZXhhbWluZWQgb3IgbW9kaWZp ZWQgYnkgYW55IHByb2Nlc3MgZHVyaW5nIHRoZQpzYW1lIHN1cGVyc3RlcCBcKGVtIHRoYXQg aXMsIGl0IG1heSBub3QgYmUgdGhlCnNvdXJjZSBvciBkZXN0aW5hdGlvbiBvZiBhbnkgb3Ro ZXIKLkJSIGJzcF9mZXRjaCAiIG9yICIgYnNwX3N0b3JlCm9yIGFwcGVhciBpbiBhIGxvY2Fs IGV4cHJlc3Npb24gb3IgYXNzaWdubWVudC4KLklQIFwoYnUKQSBkYXRhIG9iamVjdCB3aGlj aCBpcyBtb2RpZmllZCBsb2NhbGx5IGJ5IGEgcHJvY2VzcwooYnkgYW4gYXNzaWdubWVudCBv ciBpbnB1dCBzdGF0ZW1lbnQpCm1heSBub3QgYmUgZmV0Y2hlZCBieSBhbnkgb3RoZXIgcHJv Y2VzcyBpbiB0aGUgc2FtZSBzdXBlcnN0ZXAuCi5MUAouU0ggRklMRVMKLklSICRCU1AgL2xp Yi8gJEFSQ0ggL2xpYmJzcF8gJE1FRElVTSAuYQouYnIKd2hlcmUKLlJTIDMKLlRQIDEwCiRC U1AKZGlyZWN0b3J5IHdoZXJlIHRoZSBPeGZvcmQgQlNQIGxpYnJhcnkgaXMgaW5zdGFsbGVk Cihwb3NzaWJseQouQlIgL3Vzci9sb2NhbC9ic3AgXCkKLlRQCiRBUkNICmFyY2hpdGVjdHVy ZSBvZiBwYXJhbGxlbCBtYWNoaW5lCi5UUAokTUVESVVNCnVuZGVybHlpbmcgY29tbXVuaWNh dGlvbnMgbWVkaXVtCi5SRQouU0ggQVVUSE9SClJpY2hhcmQgTWlsbGVyIDxtaWxsZXJAY29t bGFiLm94LmFjLnVrPgouYnIKT3hmb3JkIFVuaXZlcnNpdHkgQ29tcHV0aW5nIExhYm9yYXRv cnkKLlNIIFNFRSBBTFNPCi5uYQouQlIgYnNwICIoMSksICIgYnNwZjc3ICIoMSksICIgYnNw Y2MgIigxKSwgIiBic3Bwcm9mICIoMSksICIKLkJSIGJzcF90aW1lICIoMyksICIgYnNwX2Jy b2FkY2FzdCAiKDMpLCAiIGJzcF9yZWR1Y2UgKDMpCi5icgouTFAKLkkgIkEgYnJpZGdpbmcg bW9kZWwgZm9yIHBhcmFsbGVsIGNvbXB1dGF0aW9uLCIKTC5HLiBWYWxpYW50LCBDQUNNIDMz KDgpOiAxMDNcLTExMSwgMTk5MC4KLmJyCi5JICJUaGUgT3hmb3JkIEJTUCBMaWJyYXJ5IFVz ZXJzJyBHdWlkZSwiClIuIE1pbGxlciBhbmQgSi4gUmVlZCwKT3hmb3JkIFVuaXZlcnNpdHkg Q29tcHV0aW5nIExhYm9yYXRvcnkKLlNIIENPUFlSSUdIVApUaGUgT3hmb3JkIEJTUCBsaWJy YXJ5IFZlcnNpb24gMS4xIGlzIENvcHlyaWdodCBcKGNvIDE5OTQgYnkgUmljaGFyZCBNaWxs ZXIK --upas-jkakwrnmzncesdoukqzfxfnabv-- --upas-mnycmmyeuxdosmcrrwoqlgffca--