From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Maxime Devos Newsgroups: gmane.lisp.guile.devel Subject: Re: [PATCH v1 1/6] docs/match: add pattern matching examples + CoC Date: Tue, 31 Jan 2023 03:28:51 +0100 Message-ID: <3298bf35-df3f-7fbd-0754-26e501d28031@telenet.be> References: <20230126185801.19064-1-blake@reproduciblemedia.com> <9a5ee863-c768-4109-3323-908adc277479@telenet.be> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------6Vwud5Cm7Oofc0spr0tkASjt" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25394"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Cc: guile-devel , guix-maintainers@gnu.org To: Blake Shaw Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Tue Jan 31 03:29:32 2023 Return-path: Envelope-to: guile-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pMgOo-0006KL-IN for guile-devel@m.gmane-mx.org; Tue, 31 Jan 2023 03:29:30 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pMgOO-0005dJ-E9; Mon, 30 Jan 2023 21:29:04 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pMgON-0005d6-1E for guile-devel@gnu.org; Mon, 30 Jan 2023 21:29:03 -0500 Original-Received: from xavier.telenet-ops.be ([2a02:1800:120:4::f00:14]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pMgOH-00070d-Tn for guile-devel@gnu.org; Mon, 30 Jan 2023 21:29:02 -0500 Original-Received: from [IPV6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16] ([IPv6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16]) by xavier.telenet-ops.be with bizsmtp id FEUr2900B20ykKC01EUr6n; Tue, 31 Jan 2023 03:28:52 +0100 Content-Language: en-US In-Reply-To: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r23; t=1675132132; bh=EMi8NwTDK60mueyD6/y3h/kb6SosI9VZXZ1Wl8yLP90=; h=Date:From:To:Cc:References:Subject:In-Reply-To; b=C+KUSqU3EGtN7oughArhaAp2wMm3wVgMS2G8JACfk5ZcTHjSj1X5b1Fq2eCzzOeri 5NQ62dFXcSxXrdbjfO04tobmR6sfH0lHA/5jyG3UuS+SM0qM5eZRdCffON/MK1klvN VcE0fAl6EJzlLo6rrvA6dnQl445AIuniDeIlVd5DUAaixogg6txKuxI/tUpEWkQGLk 7iHomgP7BA4LAgs+Xk1rm9qw1LY6Qy1NS7aXYJDasgdZIJMhw8zLg0wDHrnlx22ccb MGAk0IU2/kAVqXSix+8EYPxJ+SQRe4R+rlQlvWGhYTIpvDtoCc45mCDxYYuNr8Q/Bg cfn8kseqYexPg== Received-SPF: pass client-ip=2a02:1800:120:4::f00:14; envelope-from=maximedevos@telenet.be; helo=xavier.telenet-ops.be X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, NICE_REPLY_A=-0.09, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.devel:21666 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------6Vwud5Cm7Oofc0spr0tkASjt Content-Type: multipart/mixed; boundary="------------zxEGTf5ytC7W7SuNliYruA6W"; protected-headers="v1" From: Maxime Devos To: Blake Shaw Cc: guile-devel , guix-maintainers@gnu.org Message-ID: <3298bf35-df3f-7fbd-0754-26e501d28031@telenet.be> Subject: Re: [PATCH v1 1/6] docs/match: add pattern matching examples + CoC References: <20230126185801.19064-1-blake@reproduciblemedia.com> <9a5ee863-c768-4109-3323-908adc277479@telenet.be> In-Reply-To: --------------zxEGTf5ytC7W7SuNliYruA6W Content-Type: multipart/mixed; boundary="------------oHhl0MvKv48yb30axuEibCOf" --------------oHhl0MvKv48yb30axuEibCOf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 T24gMzAtMDEtMjAyMyAwMTo0OSwgQmxha2UgU2hhdyB3cm90ZToNCj4gSGkgTWF4aW1lLA0K PiANCj4gSSBoYXZlIHRvIGJlIHBlcmZlY3RseSB1cC1mcm9udDogcGFzdCBpbnRlcmFjdGlv bnMgbGlrZSB0aGlzLCB3aGljaCANCj4gYXBwZWFyIHRvIG1lIGFzIG1vcmUgb3IgbGVzcyBh IG1lYW5zIHRvIGdhdGVrZWVwIHRoZSBjb250cmlidXRpb24gDQo+IHByb2Nlc3MgYnkgdHlp bmcgdXAgb3RoZXJzJyB0aW1lIGluIGRpc2FncmVlbWVudA0KDQpJdCBpcyBub3QuDQoNCj4g b3ZlciB3aGF0IGlzIHVsdGltYXRlbHkgDQo+IG1pbnV0aWFlIChJJ2xsIGdldCBpbnRvIHNw ZWNpZmljcyBtb21lbnRhcmlseSkNCg0KVGhleSBhcmUsIGFuZCBkZXRhaWxzIGFyZSBuaWNl IHRvIGdldCBjb3JyZWN0IHRvby4gIFlvdSBhcmUgbWlzc2luZyBhIGEgDQpmZXcgc3RlcCBm cm9tICd0aGVyZSByZW1haW5zIGEgZmV3IG1pbnV0aWFlIHRvIGZpeCcgdG8gJ2dhdGVrZWVw aW5nJy4NCg0KPiwgdWx0aW1hdGVseSBkcm92ZSBtZSBhd2F5IA0KPiBmcm9tIGNvbnRyaWJ1 dGluZyB0byBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBHdWlsZSAmIEd1aXggaW4gYW55IGNhcGFj aXR5IA0KPiBmb3IgdGhlIHBhc3QgNiBtb250aHMsIGFuZCBvdGhlcnMgaW4gdGhlIGNvbW11 bml0eSBoYXZlIHNoYXJlZCBzaW1pbGFyIA0KPiBmcnVzdHJhdGlvbnMgdGhhdCBoYXZlIGNh dXNlZCB0aGVtIHRvIGJlY29tZSBkZXRhY2hlZCBmcm9tIHRoZSBwcm9qZWN0IA0KPiBhcyB3 ZWxsLg0KDQpMaWtld2lzZS1pc2ggZm9yIG1lLCB3aXRoIGRpZmZlcmVudCBjYXVzZXMgLS0g YXQgdmFyaW91cyB0aW1lcyBpbiB0aGUgDQpwYXN0LCBwZW9wbGUgaGF2ZSBtYWRlIGZhbHNl IGFjY3VzYXRpb25zIGFnYWluc3QgbWUgb24gdGhlIEd1aXggTUwgDQoodGhyZWUgdGltZXMs IElJUkMpIC0tIGF0IGxlYXN0IHRocmVlIHRpbWVzIGR1cmluZyBwYXRjaCByZXZpZXcsIHRo ZSANCmZpcnN0IHRpbWUgaW4gcmV2aWV3IG9mIGEgWkZTIHBhdGNoIGJ5IHNvbWUgb3V0c2lk ZXIgdGhhdCBjb21wbGV0ZWx5IA0KaWdub3JlZCBwcmV2aW91cyBkaXNjdXNzaW9uIHRvIHN0 YXRlIChub3QgYXJndWUgd2l0aCByZWFzb25hYmxlIA0KYXJndW1lbnRzLCBidXQganVzdCBz dGF0ZSB0aGVpciBwb3NpdGlvbiBhbmQgcXVvdGUgYXJndW1lbnRzIHRoYXQgd2VyZSANCmFs cmVhZHkgcmVmdXRlZCkgdGhlaXIgZGlzYWdyZWVtZW50LCB0aGUgc2Vjb25kIHRpbWUgd2Fz IGEgY2FzZSBvZiANCm1pc2NvbW11bmljYXRpb24gaW4gcmV0cm9zcGVjdCBidXQgc3RpbGwg ZmFsc2UgYWNjdXNhdGlvbiwgYW5kIHRoZSB0aGlyZCANCnRpbWUgYnkgc29tZW9uZSB3aG8g aXNuJ3QgbGl0ZXJhbGx5IGEgbWFpbnRhaW5lciBidXQgaW4gcHJhY3RpY2UgcHJldHR5IA0K Y2xvc2UgdG8gaXQuDQoNCihUaGUgbGFzdCBpcyBpbi1wcm9ncmVzcyB3aXRoIHRoZSBHdWl4 IENvQyBzbyBJIHdpbGwgbm90IGdvIGludG8gYW55IA0KZGV0YWlsLikNCg0KQXMgc3VjaCwg SSBob3BlIHlvdSB1bmRlcnN0YW5kIEknbSBhbm5veWVkIEkgaGF2ZSBhIGZvdXJ0aCB0byBh ZGQgdG8gdGhlIA0KdGFsbHkuDQoNCj4gSWYgd2UgbG9vayBhdCB0aGUgbGFzdCB0aW1lIEkg cG9zdGVkIHRvIHRoZSBsaXN0IDYgbW9udGhzIGFnbywgSSB3YXMgDQo+IGhvcGluZyB0byBv ZmZlciBzb21lIHNpbXBsZSBjb250cmlidXRpb25zOiBwcm9vZiByZWFkaW5nIGVkaXRzIGZv ciANCj4gYWRkaXRpb25zIHRvIHRoZSBkb2NzLCB3aGljaCBJIHdhcyBhY3RpdmVseSB3b3Jr aW5nIG9uIGF0IHRoZSB0aW1lOiANCj4gaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUv aHRtbC9ndWl4LWRldmVsLzIwMjItMDgvbXNnMDAwODcuaHRtbCANCj4gPGh0dHBzOi8vbGlz dHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZ3VpeC1kZXZlbC8yMDIyLTA4L21zZzAwMDg3Lmh0 bWw+DQo+IA0KPiBJbiB5b3VyIHJlc3BvbnNlcyB0byBtZSwgYm90aCB0aGVuIGFuIG5vdywg aXRzIGFzIGlmIHRoZSBhY3R1YWwgY29udGVudCANCj4gb2YgbXkgY29ycmVjdGlvbnMgd2Vy ZSBpZ25vcmVkLiBObyB0aW1lIHdhcyB0YWtlbiB0byBjb25zaWRlciBteSANCj4gcmF0aW9u YWxlLCBvciBldmVuIHRoZSBsaXRlcmFsIG1lYW5pbmcgb2Ygd29yZHMgSSBlbXBsb3llZC4N Cg0KVGhpcyBzb3VuZHMgbGlrZSBHdWl4IENvQyBzdHVmZiwgdGFrZSBpdCB1cCB3aXRoIA0K Z3VpeC1tYWludGFpbmVyc0BnbnUub3JnIGFzIHBlciB0aGUgZmlyc3QgcGFyYWdyYXBoIG9m IHRoZSBDb0MuICBBbHNvLCBJIA0KZGlkbid0IGlnbm9yZSB5b3UsIGluIA0KPGh0dHBzOi8v bGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZ3VpeC1kZXZlbC8yMDIyLTA4L21zZzAwMDc0 Lmh0bWw+IEkgDQp3ZW50IHRocm91Z2ggdGhlIHVuYWRhcHRlZCBwcm9wb3NhbHMgYW5kIGV4 cGxhaW5lZCB3aHkgSSBkaWRuJ3QgYWRhcHQgDQp0aGVtIChtb3N0bHkgYmVjYXVzZSB0aGV5 IG1hZGUgdGhpbmdzIHdvcnNlKS4gIFRoaXMgaXMgYWxsIEknbSBnb2luZyB0byANCnNheSBo ZXJlIGFib3V0IEd1aXggdGhpbmdzIG9uIHRoaXMgR3VpbGUgTUwuDQoNCj4gWW91IGFwcGVh ciB0byBtZSB0byBiZSBtb3RpdmF0ZWQgbW9yZSBieSB0aGUgZGVzaXJlIHRvIGFyZ3VlIHJh dGhlciB0aGFuIHRvIA0KPiBjb2xsYWJvcmF0ZSBvbiBpbXByb3ZpbmcgR3VpeCB0byB0aGUg YmVzdCBvZiBvdXIgYWJpbGl0aWVzLg0KDQpBZ2FpbiwgR3VpeCBDb0Mgc3R1ZmYuICBOb3cg b250byBHdWlsZSAod2hpY2ggZG9lc24ndCBoYXZlIGEgQ29DIHdpdGggYSANCmd1aXgtbWFp bnRhaW5lcnMgZXF1aXZhbGVudCkgc3R1ZmYgLi4uDQoNCj4gWW91IGV2ZW4gDQo+IG1lbnRp b24gaW4geW91ciBmaXJzdCByZXBseSB0aGF0IHRoZSBzZXF1ZW5jZSBvZiBleGFtcGxlcyBp cyANCj4gInByZXN1bWFibHkiIGJldHRlciwgaW1wbHlpbmcgeW91IGRpZG4ndCB0YWtlIHRo ZSB0aW1lIHRvIGV2ZW4gd29yayANCj4gdGhyb3VnaCB0aGUgaW50ZXJsb2NraW5nIGNvbnRl bnRzLCBwcmVmZXJyaW5nIHJhdGhlciB0byBzaG9vdCBkb3duIHRoZSANCj4gY29udHJpYnV0 aW9uLg0KDQpQbGVhc2UgZm9sbG93IHlvdXIgb24gZGVtYW5kIGZvciAnY29uc2lkZXIgLi4u IHRoZSBsaXRlcmFsIG1lYW5pbmcgb2YgDQp3b3JkcyBJIGVtcGxveWVkJy4gICdQcmVzdW1h Ymx5IGJldHRlcicgbGl0ZXJhbGx5IGp1c3QgbWVhbnMgdGhhdCwgDQpwcmVzdW1hYmx5IGJl dHRlci4gIEkgX2RpZF8gbG9vayBhdCB0aGUgc2VyaWVzIG9mIGV4YW1wbGVzLCBhbmQgdGhl IA0Kc2VyaWVzIGFwcGVhcmVkIHJlYXNvbmFibGUsIGFuZCBJIGd1ZXNzIGJldHRlciB0aGFu IHdoYXQgd2UgaGFkIGJlZm9yZSwgDQpoZW5jZSBJIHdyb3RlICdwcmVzdW1hYmx5IGJldHRl cicuDQoNCkkgY291bGQsIGluIHRoZW9yeSwgaGF2ZSB3cml0dGVuICdiZXR0ZXInIHdpdGhv dXQgdGhlIHF1YWxpZmllciwgYnV0IA0KdGhhdCB3b3VsZCBoYXZlIGJlZW4gZGlzaG9uZXN0 IGJlY2F1c2UgSSBkbyBub3QgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIA0KdGhlc2Uga2lu ZCBvZiBzdHlsZSBjaGFuZ2VzIHdlbGwgZW5vdWdoLg0KDQpBcyBzdWNoLCBJIHdlbnQgZm9y IHRoZSBuZXV0cmFsICdwcmVzdW1hYmx5IGJldHRlcicsIGFzIGEga2luZCBvZiANCidwcmVz dW1hYmx5IGlubm9jZW50IG9mIHByb3ZlbiBndWlsdHknIHRoaW5nLg0KDQpBbHNvLCBhdCBu byBwb2ludCBkaWQgSSBzaG9vdCBkb3duIHRoZSBjb250cmlidXRpb24gLS0gSSBkaWRuJ3Qg ZXZlbiANCnJlamVjdCB0aGUgY29udHJpYnV0aW9uOyBJIG9ubHkgaGFkIHNvbWUgbWludXRp YWUgdG8gY29tbWVudCBvbiwgd2hpY2ggDQptZWFudCB0aGF0IHRoZSBwYXRjaCB3YXMgYWxt b3N0IGRvbmUgLS0geW91IG9ubHkgaGFkIHRvIGFkZHJlc3MgYSBmZXcgDQp0aW55IHRoaW5n cyBhbmQgdGhlbiB0aGUgcGF0Y2ggd291bGQgcHJvYmFibHkgYmUgYWNjZXB0ZWQgYnkgR3Vp bGUgDQptYWludGFpbmVycy4gIEFuZCBnaXZlbiB0aGF0IHRoZXkgd2VyZSBtb3N0bHkgbWlu dXRpYWUsIGl0IGlzIGxpa2VseSB5b3UgDQpjb3VsZCBqdXN0IGhhdmUgc2FpZCAnV29yZGlu ZyBpc24ndCBpZGVhbCwgYnV0IGl0J3MgYmV0dGVyIHRoYW4gd2hhdCB3ZSANCmhhZCBiZWZv cmUgYW5kIEkgZG9uJ3Qga25vdyBob3cgdG8gbWFrZSBpdCBwZXJmZWN0LuKAmSBhbmQgdGhh dCB3b3VsZCB0aGVuIA0KaGF2ZSBiZWVuIGl0Lg0KDQpJdCdzIGxpa2UsIGEgcmV2aWV3IHdp dGgganVzdCBzb21lIG1pbnV0aWFlIGFuZCBiaWtlc2hlZGRpbmcgbWVhbnMgdGhhdCANCnRo ZSByZXZpZXdlciB0aGlua3MgaXQncyBhIGdvb2QgcGF0Y2guDQoNCj4gQnV0IGltIHN1cmVs eSBqdXN0IGJlaW5nIGNyYW5reSBvdmVyIGEgb25lIG9mZiBtaW5vciBkaXNwdXRlIGZyb20g NiANCj4gbW9udGhzIGFnbywgcmlnaHQ/IExldCdzIGxvb2sgYmFjayBhdCBteSBwcmV2aW91 cyBwb3N0aW5nIHRvIGd1aXgtZGV2ZWwNCiAgPiBbLi4uXQ0KDQpBZ2FpbiBHdWl4IENvQyBz dHVmZi4NCg0KPiBBbmQgdGhlcmUncyBtb3JlLCBpdHMgYSBwYXR0ZXJuOyBJIGRvbnQga25v dyBpZiB5b3UgdHJvbGwgZXZlcnlvbmUgbGlrZSANCj4gdGhpcw0KDQpJIGRvbid0IHRyb2xs IGFueW9uZSwgZXNwZWNpYWxseSBub3QgZHVyaW5nIHNlcmlvdXMgbWF0dGVycyBzdWNoIGFz IA0KcGF0Y2ggcmV2aWV3LiAgKEkgb2NjYXNpb25hbGx5ICdwb2tlZCBzb21lIGZ1bicgb24g I2d1aXgsIGJ1dCBub3QgDQp0cm9sbGluZyBhbmQgZXNwZWNpYWxseSBub3QgdHJvbGxpbmcg ZHVyaW5nIHNlcmlvdXMgbWF0dGVycy4pDQoNCj4gb3IgaWYgSSByZXByZXNlbnQgc29tZXRo aW5nIHlvdSBmZWVsIG9wcG9zZWQgdG8sDQoNCkknbSBvcHBvc2VkIHRvIGhvdyB5b3UgYXJl IGVxdWF0aW5nICd0aGUgcmV2aWV3ZXIgb25seSBoYWQgc29tZSBtaW51dGlhZQ0KdG8gY29t bWVudCBvbiBhbmQgZG9lc24ndCBoYXZlIGFueXRoaW5nIChuZWl0aGVyIGdvb2Qgbm9yIGJh ZCkgdG8gc2F5DQphYm91dCB0aGlzIGNvb2wgc3RydWN0dXJlIEknbSBmb25kIG9mJyB3aXRo ICd0aGUgcmV2aWV3ZXIgaXMgbWFsaWNpb3VzLCANCmdhdGVrZWVwaW5nIHRyb2xsIHRoYXQg aWdub3JlcyBtZScuDQoNCkknbSBhbHNvIG9wcG9zZWQgeW91ciBoeXBvY3Jpc3kgLS0geW91 IGFzayB0byBjb25zaWRlciB0aGUgbGl0ZXJhbCANCm1lYW5pbmcgb2Ygd29yZHMgdGhhdCB3 ZXJlIGVtcGxveWVkLCBidXQgeW91IGRpZG4ndCBkbyB0aGF0IGZvciB0aGUgDQoncHJlc3Vt YWJseSBiZXR0ZXInLg0KDQpJJ20gYWxzbyBvcHBvc2VkIGhvdyB5b3Uga2VlcCByZXNvcnRp bmcgdG8gdGhlICdhcmd1bWVudCBmcm9tIGF1dGhvcml0eScgDQpmYWxsYWN5LCBhbmQgaG93 IHlvdSBrZWVwIG1haW50YWluaW5nIHRoZSBhdXRob3JpdHkgYXMgY29ycmVjdCBldmVuIHdo ZW4gDQpwcm92aWRlZCBldmlkZW5jZSB0aGF0IHRoZSBhdXRob3JpdHkgaXMgd3JvbmcuICAo TW9yZSBhYm91dCB0aGUgDQonYXV0aG9yaXR5JyBzdHVmZiBsYXRlciAuLi4pDQoNCj4gYnV0 IEkgZG8ga25vdyB0aGF0IA0KPiBpdCB3YXMgZW5vdWdoIGZvciBtZSB0byBiZWNvbWUgYWxs ZXJnaWMgdG8gR3VpbGUvR3VpeCBjb21tdW5pdHkgdW50aWwgSSANCj4gc3RhcnRlZCBoYW5n aW5nIG91dCBvbiBNYXN0b2RvbiBhbmQgZGlzY292ZXJlZCBtYW55IGd1aXggaGF2ZSByZXRy ZWF0ZWQgDQo+IHRoZXJlLg0KPiANCj4gTm93IGxldCdzIGdldCBpbnRvIHRoZSBzcGVjaWZp Y3Mgb2YgdGhlIGN1cnJlbnQgcGF0Y2ggcmV2aWV3IHdoZXJlIEknbGwgDQo+IHNob3cgd2h5 IEkgdGhpbmsgeW91ciBlZmZvcnRzIGFyZW4ndCBpbiBlYXJuZXN0LCBhbmQgZXZlbiBhcHBl YXIgbWFsaWduOg0KPiANCj4gT24gU3VuLCBKYW4gMjksIDIwMjMgYXQgMzozMCBQTSBNYXhp bWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmUgDQo+IDxtYWlsdG86bWF4aW1lZGV2 b3NAdGVsZW5ldC5iZT4+IHdyb3RlOg0KPiANCj4gDQo+IA0KPiAgICAgT24gMjktMDEtMjAy MyAwNDowNCwgQmxha2UgU2hhdyB3cm90ZToNCj4gICAgICA+DQo+ICAgICAgPg0KPiAgICAg ID4NCj4gICAgICA+wqAgwqAgwqBPbiAyNi0wMS0yMDIzIDE5OjU3LCBCbGFrZSBTaGF3IHdy b3RlOg0KPiAgICAgID7CoCDCoCDCoCA+wqAgwqBAZXhhbXBsZQ0KPiAgICAgID7CoCDCoCDC oCA+IC0obWF0Y2ggbHN0DQo+ICAgICAgPsKgIMKgIMKgID4gLcKgICgoKGhlYWRzIHRhaWxz IC4uLikgLi4uKQ0KPiAgICAgID7CoCDCoCDCoCA+IC3CoCDCoGhlYWRzKSkNCj4gICAgICA+ wqAgwqAgwqAgPiArKG1hdGNoICcoKChhIGIgYykgZSBmIGcpIDEgMiAzKQ0KPiAgICAgID7C oCDCoCDCoCA+ICvCoCAoKChoZWFkIC4uLikgdGFpbHMgLi4uKQ0KPiAgICAgID7CoCDCoCDC oCA+ICvCoCDCoGAoLEB0YWlscyAsaGVhZCkpKQ0KPiAgICAgID7CoCDCoCDCoCA+ICtAcmVz dWx0e30gKDEgMiAzICgoYSBiIGMpIGUgZiBnKSkNCj4gICAgICA+wqAgwqAgwqAgPsKgIMKg QGVuZCBleGFtcGxlDQo+ICAgICAgPg0KPiAgICAgID4NCj4gICAgICA+wqAgwqAgwqAgPj5D b250cmFyeSB0byB0aGUgY29tbWl0IG1lc3NhZ2UsIHRoaXMgPj5pc24ndCBhbiBhZGRpdGlv biBvZiBhDQo+ICAgICAgPsKgIMKgIMKgcGF0dGVybg0KPiAgICAgID7CoCDCoCDCoCA+Pm1h dGNoaW5nIGV4YW1wbGUsIGl0J3MgYSBjaGFuZ2UuDQo+ICAgICAgPsKgIMKgIMKgID4+QXNp ZGUgZnJvbSBpbmxpbmluZyAnbHN0Jywgd2hhdCdzIHRoaXMgPj5jaGFuZ2UgZm9yPw0KPiAg ICAgID4NCj4gICAgICA+DQo+ICAgICAgPiBUaGUgb2ZmZXJlZCBleGFtcGxlIGNhbnQgYmUg ZXhlY3V0ZWQuIEl0cyB1cCB0byB0aGUgcmVhZGVyIHRvIGZpZ3VyZQ0KPiAgICAgID4gb3V0 LCB3aGljaCBpc24ndCB2YWx1YWJsZSB0byBhbnlvbmUgdHJ5aW5nIHRvIHVuZGVyc3RhbmQg dGhlDQo+ICAgICBtYXRjaGVyIGluDQo+ICAgICAgPiBmaXJzdCBwbGFjZS4gQWdhaW4sIGVl IHRoZSBsaW5rZWQgcHJlc2VudGF0aW9uIGZvciBtdWNoIG9uIHRoZXNlDQo+ICAgICBtYXR0 ZXJzDQo+ICAgICAgPiBhbmQgbW9yZS4NCj4gDQo+IA0KPiBUaGVyZSdzIGEgbG90IGdvaW5n IG9uIGluIHdoYXQgZm9sbG93cyBzbyBsZXQncyB0YWtlIGEgbG9vay4NCj4gDQo+IA0KPiAg ICAgVGhlIG9mZmVyZWQgZXhhbXBsZSBpbmRlZWQgY2FuJ3QgYmUgZXhlY3V0ZWQuwqAgSG93 ZXZlciwgaW5saW5pbmcgJ2xzdCcNCj4gICAgIGlzIHN1ZmZpY2llbnQgdG8gbWFrZSBpdCBl eGVjdXRlICgqKSwgYW5kIEkgYXNrZWQgZm9yIOKAmCoqYXNpZGUgZnJvbQ0KPiAgICAgaW5s aW5pbmcqKiAnbHN0Jywgd2hhdCdzIHRoaXMgY2hhbmdlIGZvcj/igJkgKGVtcGhhc2lzIGFk ZGVkKQ0KPiANCj4gDQo+IDEuIFlvdSBmaXJzdCBhZG1pdCB0aGF0IHRoZSBvcmlnaW5hbCBl eGFtcGxlIGNhbnQgZXhlY3V0ZS4NCg0KWWVzLCBleGNlcHQgZm9yICdhZG1pdCAtPiBzdGF0 ZScuICAnQWRtaXR0aW5nJyB3b3VsZCBtZWFuIHRoYXQgSSBkaWQgDQpzb21ldGhpbmcgd3Jv bmcgaGVyZSwgb3IgdGhhdCBJIGluIHRoZSBwYXN0IGNsYWltZWQgdGhlIGNvbnRyYXJ5Lg0K DQo+IFdlIGFncmVlZCBvbiANCj4gZ3VpeCBkYXlzIHRoYXQgZXhhbXBsZXMgc2hvdWxkIHdv cmsgd2l0aG91dCB1c2VycyBoYXZpbmcgdG8gcHV0IHRoZSANCj4gcGllY2VzIHRvZ2V0aGVy IHRoZW1zZWx2ZXMuIEl0cyB0aGVyZWZvcmUgb2J2aW91cyB0aGF0IGEgY2hhbmdlIGlzIA0K PiByZXF1aXJlZCwNCg0KQWdyZWVkLg0KDQo+IHdoZXRoZXIgb3Igbm90IHlvdSBzYWlkICoq YXNpZGUgZnJvbSBpbmxpbmluZyoqLg0KDQpBZ3JlZWQsIGFuZCBpcnJlbGV2YW50LCBiZWNh dXNlIGlubGluaW5nIGlzIHN1ZmZpY2llbnQgdG8gcnVuIHRoZSBleGFtcGxlLg0KDQo+IFRo ZSBvbGQgDQo+IGV4YW1wbGVzIHdlcmUgYWdyZWVkIHRvIGJlIHBvb3IgYW5kIGluc3VmZmlj aWVudC4gTXkgY29udHJpYnV0aW9uIGlzIA0KPiBtZWFudCB0byBpbXByb3ZlIHRoZW0sIGFu ZCBJIHRoaW5rIGlmIHdlIGdvdCB0aGUgR3VpeCBjb21tdW5pdHkgdG8gbG9vayANCj4gYXQg dGhlIGJlZm9yZSBhbmQgYWZ0ZXIsIHRoZSAqb3ZlcndoZWxtaW5nIG1ham9yaXR5KiB3b3Vs ZCBhZ3JlZSB0aGUgDQo+IGZpbmFsIHJlc3VsdCBpbXByb3ZlcyB0aGUgcGF0dGVybiBtYXRj aGluZyBzZWN0aW9uIGJ5IGxlYXBzIGFuZCBib3VuZHMuDQoNCkFncmVlZCwgYnV0IGxpa2Us IGlubGluaW5nIHdvdWxkIGhhdmUgc3VmZmljZWQuDQoNCj4gMi4gWW91IGNsYWltIHRoYXQg aXQgd291bGQgYmUgc3VmZmljaWVudCB0byAiaW5saW5lIiBsc3QuIEV2ZW4gaWYgdGhpcyAN Cj4gd2VyZSBjb3JyZWN0LCB3aGljaCBpdCBpc24ndCBiZWNhdXNlIGBALGFueS1ib3VuZC1p ZGVudGlmaWVyIGlzIGFuIA0KPiBpbmNvcnJlY3QgYXBwbGljYXRpb24gb2YgcXVhc2lxdW90 YXRpb24gZXhjZXB0aW5nIGRlZm1hY3JvIChxdWFzaXF1b3RpbmcgDQo+IHRoZSB1bnF1b3Rl LXNwbGljaW5nIG9mIGEgYm91bmQgaWRlbnRpZmllciB2YSBhbHdheXMgcmVzdWx0cyBpbiBh IGxpc3QgDQo+IG9mIHRoZSBmb3JtICh1bnF1b3RlLXNwbGljaW5nIHZhcikNCg0KQWN0dWFs bHkgcnVuIHRoZSBjb2RlIEkgcHJvdmlkZWQsIHBsZWFzZSAtLSBpZiB5b3UgY29weS1wYXN0 ZSBpdCBpbnRvIGEgDQpHdWlsZSBSRVBMLCB5b3UnbGwgZ2V0IGEgcmVzdWx0IHRoYXQgZG9l c24ndCBjb250YWluIGFueSBtZW50aW9uIG9mIA0KJ3VucXVvdGUtc3BsaWNpbmcnOg0KDQoo bWF0Y2ggJygoeCkgKHkgeTApICh6IHoxIHoyKSkNCiAgICgoKGhlYWRzIHRhaWxzIC4uLikg Li4uKQ0KICAgIGhlYWRzKSkNCg0KOzsgLT4gKHggeSB6KQ0KDQo+IGJlY2F1c2UgYXQgdGhh dCBwb2ludCB5b3UgbWVyZWx5IA0KPiBxdW90ZWQgdGhlIGRhdHVtIHVucXVvdGUtc3BsaWNp bmcuIHVucXVvdGUtc3BsaWNpbmcgaGFzIHRvIHNwbGljZSBhdCBhIA0KPiBub250ZXJtaW5h bCBsb2NhdGlvbiBvZiBhbiBvcmRlcmVkIGZvcm0gbGlrZSBsaXN0cyBvciBhcnJheXMgYW5k IHRodXMgDQo+IHBlcmZvcm1zIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHBlcmlvZHMgdGhhdCBh cmVuJ3QgaW4gZG90dGVkIHRhaWwgDQo+IHBvc2l0aW9uKS4uDQpUaGUgb3JpZ2luYWwgZXhh bXBsZSwgYmVmb3JlIHlvdXIgY2hhbmdlLCBkaWQgbm90IGluY2x1ZGUgYW55IA0KcXVhc2lx dW90YXRpb24gLyB1bnF1b3RhdGlvbiAtLSB0aGVyZSBpcyBubyBtZW50aW9uIG9mICcsQCcg YW55d2hlcmUgaW4gDQp0aGlzIGNvZGU6DQoNCiA+IC0gKG1hdGNoIGxzdA0KID4gLSAgKCgo aGVhZHMgdGFpbHMgLi4uKSAuLi4pDQogPiAtICAgaGVhZHMpKQ0KDQpJLmUuLCB0aGUgcXVh c2lxdW90YXRpb24gY29kZSB3YXMgYWRkZWQgYnkgeW91LiAgQXQgbm8gcG9pbnQgZGlkIEkg DQpwcm9wb3NlIGFkZGluZyBleGFtcGxlcyB0aGF0IGRvIHF1YXNpcXVvdGF0aW9uLCBhbmQg YXQgbm8gcG9pbnQgZGlkIEkgDQpwcm9wb3NlIHJldmVydGluZyB0byBvbGQgZXhhbXBsZXMg d2l0aCBxdWFzaXF1b3RhdGlvbi4gIFJhdGhlciwgSSB3YXMgDQp3b25kZXJpbmcgd2h5IHlv dSBfYWRkZWRfIHF1YXNpcXVvdGF0aW9uOg0KDQogPiArKG1hdGNoICcoKChhIGIgYykgZSBm IGcpIDEgMiAzKQ0KID4gICAgICA+ICAgICAgPiArICAoKChoZWFkIC4uLikgdGFpbHMgLi4u KQ0KID4gICAgICA+ICAgICAgPiArICAgYCgsQHRhaWxzICxoZWFkKSkpDQoNCklmIHlvdSB0 aGluayB0aGUgcXVhc2lxdW90ZSBzdHVmZiBpcyB3cm9uZywgd2h5IGFkZCB0aGVtIGlmIHRo ZSBvcmlnaW5hbCANCmNvZGUgZGlkbid0IGRvIHF1YXNpcXVvdGUgc3R1ZmYsIGFuZCB3aHkg Y29tcGxhaW4gdG8gbWUgYWJvdXQgdGhlIGNvZGUgDQp5b3Ugd3JvdGU/DQoNCj4gd2hhdCBp cyB0aGUgcGVkb2dhZ29naWNhbCB2YWx1ZSBvZiBzaG93aW5nIHRoYXQ/IElmIGl0IGRpZCAN Cj4gd29yayBhcyB5b3UgZXhwZWN0LCB3aGF0IHdvdWxkIGl0IGltcGFydCBvbiB0aGUgcmVh ZGVyPyBOb3RoaW5nIGV4Y2VwdCANCj4gcGVyaGFwcyB0aGF0IHVucXVvdGUtc3BsaWNpbmcg ZXhpc3RzLA0KICB3aGlsZSBteSBleGFtcGxlIGFjdHVhbGx5DQo+IGRlbW9uc3RyYXRlcyBp bXBvcnRhbnQsIHN1YnRsZSBwcm9wZXJ0aWVzIG9mIG1hdGNoIHRoYXQgd291bGQgYXBwYXJl bnRseSANCj4gYmUgdmFsdWFibGUgZm9yIHlvdSB0byB0YWtlIHRoZSB0aW1lIHRvIGFjdHVh bGx5IHJlYWQgYW5kIGNvbXByZWhlbmQsIA0KPiB3aGljaCBpcyBwYXJ0IG9mIHlvdXIgZHV0 eSBhcyBhIHJldmlld2VyIGluIHRoZSBmaXJzdCBwbGFjZS4NCg0KU2VlIG15IHByZXZpb3Vz IHJlc3BvbnNlLiAgQWxzbywgSSBkaWQgcmVhZCB0aGUgZXhhbXBsZSwgYW5kIGl0IHNlZW1l ZCBhIA0KbmljZSBleGFtcGxlIHRvIG1lLiAgJ1N1YnRsZScsICdpbXBvcnRhbnQnIGFuZCAn Y29tcHJlaGVuZCcgYXJlIHF1aXRlIA0KdmFndWUgYW5kIHN1YmplY3RpdmUsIHNvIEkgd29u J3QgY29tbWVudCBvbiB0aGF0Lg0KDQo+IA0KPiANCj4gICAgICgqKSBFLmcuIHRha2UgbHN0 ID0gJygoeCkgKHkgeTApICh6IHoxIHoyKSk6DQo+IA0KPiAgICAgKG1hdGNoICcoKHgpICh5 IHkwKSAoeiB6MSB6MikpOg0KPiAgICAgIMKgIMKgKCgoaGVhZHMgdGFpbHMgLi4uKSAuLi4p DQo+ICAgICAgwqAgwqAgaGVhZHMpKQ0KPiANCj4gICAgICA+IElmIHlvdSBsb29rIGF0IHRo ZSBleGFtcGxlLCBpdCBzaG91bGQgYmUgY2xlYXIgd2hhdCB0aGlzIGlsbHVzdHJhdGVzDQo+ ICAgICAgPiB3aGlsZSB0aGUgb3RoZXIgbGFja3MsIGl0IHNlZW1zIG9idmlvdXMgYW5kIGlt IHVuc3VyZSB3aGF0IHlvdXIgYXJlDQo+ICAgICAgPiBtaXNzaW5nIHRiaC4NCj4gDQo+ICAg ICBBc2lkZSBmcm9tIHRoZSBpbmxpbmluZywgaXQgYWJzb2x1dGVseSBpc24ndCBjbGVhci7C oCBBc2lkZSBmcm9tIHRoZQ0KPiAgICAgaW5saW5pbmcsIHlvdXIgbmV3IGV4YW1wbGUgaXMg bGVzcyBjbGVhciB0byBtZSAtLSBlLmcuLCB3aHkgZG9lcw0KPiAgICAgJ3RhaWxzJw0KPiAg ICAgaGF2ZSAsQCBhbmQgJ2hlYWQnIGhhdmUgJywnLCBpbnN0ZWFkIG9mIGJvdGggaGF2aW5n ICcsQCcgb3IgYm90aA0KPiAgICAgaGF2aW5nICcsJz8NCj4gDQo+ICAgICBXaGF0IEknbSBt aXNzaW5nIGlzLCB3aHkgZGlkIHlvdSBjaGFuZ2UNCj4gDQo+ICAgICAgwqAgwqAoKChoZWFk cyB0YWlscyAuLi4pIC4uLikNCj4gICAgICDCoCDCoCBoZWFkcykpDQo+IA0KPiAgICAgdG8N Cj4gDQo+ICAgICAgwqAgwqAoKChoZWFkIC4uLikgdGFpbHMgLi4uKQ0KPiAgICAgIMKgIMKg IGAoLEB0YWlscyAsaGVhZCkpKQ0KPiANCj4gICAgID8NCj4gDQo+IA0KPiAxc3QsIGFuIGFz aWRlOiBub25lIG9mIHRoaXMgYWN0dWFsbHkgbWF0dGVycy4gVGhlc2UgY29tZSBmcm9tIGNv bW1pdHMgYXQgDQo+IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhdGNoIHNldC4gVGhpcyB3YXMg Zmlyc3QgZHJhZnQuIFRoZSBmaW5hbCBleGFtcGxlcyANCj4gaSBwcm9wb3NlZCBmb3IgdGhl IGRvY3MgYXJlIG11Y2ggbmljZXIuDQoNCklmIHlvdSBwb3N0IGEgZHJhZnQgdG8gdGhlIE1M LCBpdCdzIHRoZSBkcmFmdCBJJ2xsIHJldmlldy4NClRvIGdldCBhIHJldmlldyBvbiB5b3Vy IGZpbmFsIHZlcnNpb24sIHNlbmQgaXQgYXMgYSB2MiBwYXRjaCBzZXJpZXMgYW5kIA0KcmVt ZW1iZXIgdG8gc3F1YXNoIGNvbW1pdHMuDQoNCj4gVGhhdCB5b3UgZGVtYW5kIGFuc3dlcnMg YWJvdXQgd2hhdCBjL3NvdWxkIGJlIGF1dG9zcXVhc2hlZCBpbiBhIHJlYmFzZSANCj4gd2l0 aCBubyBsb3NzIG9mIHZhbHVhYmxlIGNvbW1pdHMsIGFsb25nIHdpdGggdGhlIGZhY3QgdGhh dCB0aGlzIHBhdHRlcm4gDQo+IHJlY3VycmVkIGF0IHRoZSBmaXJzdCBzaWdodCBvZiBteSBy ZXR1cm4gbWFrZXMgbWUgdGhpbmsgeW91IGhhdmUgYSBjaGlwIA0KPiBvbiB5b3VyIHNob3Vs ZGVyLg0KDQpNeSBicmFpbiBkb2Vzbid0IGhhdmUgZ2l0IGluc3RhbGxlZCBmb3IgYXV0b3Nx dWFzaGluZyBhbmQgcmViYXNpbmcuDQpXaGVuIEkgcmV2aWV3LCBJIGp1c3QgcmV2aWV3IHBh dGNoZXMgb25lLWJ5LW9uZSAtLSBsb29rIGF0IHBhdGNoIDEgaW4gbXkgDQplLW1haWwgcHJv Z3JhbSwgZGV0ZXJtaW5lIGlmIGl0ICdzZWVtcyByaWdodCcsIHNlbmQgcmV2aWV3LiBMb29r IGF0IA0KcGF0Y2ggMiwgbG9vayBpZiBpdCAnc2VlbXMgcmlnaHQnLCBldGMuLiAgVGhpcyBp cyBhIG1vc3RseSBzdGF0ZWxlc3MgDQpwcm9jZXNzIC0tIHdoaWxlIEknbGwgcmVtZW1iZXIg dGhhdCAncGF0Y2ggMSBhZGRlZCBsb3RzIHRvIG1hdGNoIA0KZG9jdW1lbnRhdGlvbicgd2hl biByZXZpZXdpbmcgcGF0Y2ggMiwgSSBkbyBub3QgcmVjYWxsIHRoYXQgJ3RoaXMgDQpjaGFu Z2VkIGV4YW1wbGUgd2Fzbid0IHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIEd1aWxlIGRvY3Vt ZW50YXRpb24gYnV0IA0KcmF0aGVyIHdhcyBhbiBleGFtcGxlIGZyb20gdGhlIGZpcnN0IHBh dGNoJyAtLSBpdCdzIGEgcmF0aGVyIGxvc3N5IA0KY29tcHJlc3Npb247IEkgbWFkZSB0aGUg c3RhbmRhcmQgYXNzdW1wdGlvbiB0aGF0IHlvdSB3b3VsZCBoYXZlIHNxdWFzaGVkIA0KdGhl IGNvbW1pdCBpZiBpdCB3YXMganVzdCBhIGZpeCB0byB0aGUgcHJldmlvdXMgY29tbWl0Lg0K DQpJIG9ubHkgbm93IHNlZSB0aGF0IHlvdXIgMi82IGNvbW1pdCBtb2RpZmllcyBhbiBleGFt cGxlIGZyb20gdGhlIDEvNiANCmNvbW1pdCAtLSB0aGVyZSBhcmUgbm8gY2hpcHMgb3Igc2hv dWxkZXJzIGludm9sdmVkLiAgWW91IGNvdWxkIGp1c3QgaGF2ZSANCnJlc3BvbmRlZCBhdCB0 aGUgYmVnaW5uaW5nICdUaGlzIGlzIGEgbWlzdGFrZSBJIG1hZGUgaW4gdGhlIGZpcnN0IHBh dGNoIA0KdGhhdCdzIGFtZW5kZWQgYnkgdGhlIHNlY29uZCBwYXRjaDsgdGhpcyBjaGFuZ2Ug c2hvdWxkIG1ha2UgbW9yZSBzZW5zZSANCmlmIHlvdSBjb25zaWRlciB0aGUgZmlyc3QgdHdv IHBhdGNoZXMgdG9nZXRoZXIuJy4NCg0KTG9va2luZyBhdCB5b3VyIHJlc3BvbnNlcyBhZ2Fp biwgaXQgdHVybnMgb3V0IHlvdSBkaWQgd3JpdGUgc29tZXRoaW5nIA0KbGlrZSB0aGF0Og0K DQogPiBUaGFua3MhIFRoZSBuZXcgbGF0ZXN0IGVkaXQgaXMgc3RpbGwgcHJlZmVycmVkIGJ1 dCBJJ2xsIGtlZXAgdGhhdCBpbg0KID4gbWluZCBmb3IgdGhlIGZ1dHVyZS4NCiA+IFsuLi5d DQogPiBCZWNhdXNlIHRoZSByZXN1bHQgaW4gdGhlIGZpbmFsIGNvbW1pdCBpcyBiZXR0ZXIu IFNvcnJ5LCBJIHNob3VsZCBoYXZlDQogPiBhZGRlZCB0aGlzIGNvbW1pdCB0byBmaXh1cCB3 aGVuIEkgd2FzIHJlYmFzaW5nLg0KDQouLi4gYnV0IHRvIG1lIHRoYXQgcmVhZCBsaWtlIOKA mEknbGwgc2VuZCBhIHYyIHBhdGNoIHNlcmllcyBsYXRlciB3aGVyZSANCnRoZSBzZWNvbmQg cGF0Y2ggaXMgcmVwbGFjZWQgYnkgYSBwYXRjaCByZXBsYWNpbmcgdGhlIHVuZXNjYXBlZCBA IGJ5IHRoZSANCmVzY2FwZWQgQEDigJkuDQoNCkFsc28sIGl0J3MgdGhlIHBhdGNoIHNlbmRl cidzIHJlc3BvbnNpYmlsaXR5IHRvIHNxdWFzaCBjb21taXRzIHdpdGhpbiBhIA0KcGF0Y2gg c2VyaWVzIHdoZXJlIGFwcHJvcHJpYXRlLCBub3QgdGhlIHJldmlld2Vycy4NCg0KVGhlcmUg aXMgYWxzbyBubyAncGF0dGVybiByZWN1cnJlZCBhdCB0aGUgZmlyc3Qgc2lnaHQgb2YgbXkg cmV0dXJuJyAtLQ0KSSBhcHBseSB0aGUgc2FtZSByZXZpZXdpbmcgcm91dGluZSAoKikgdG8g ZXZlcnlvbmUsIHRoaXMgaXNuJ3Qgc29tZXRoaW5nIA0KeW91IHNwZWNpZmljLiAoKikgSS5l LjogbW9zdGx5IHN0YXRlbGVzc2x5IHJldmlldyBwYXRjaGVzIG9uZS1ieS1vbmUsIA0KYXNz dW1lIHRoYXQgdGhlIHBhdGNoIHNlbmRlciBzcXVhc2hlZCB0aGluZ3Mgd2hlcmUgYXBwcm9w cmlhdGUsIGFzc3VtZSANCnRoYXQgd2l0aCAnZmluYWwgY29tbWl0IGlzIGJldHRlciAuLi4g c3R1ZmYgYWJvdXQgZml4dXBzJyB0aGV5IG1lYW4gdGhleSANCndpbGwgc2VuZCBhIHYyIHBh dGNoIHNlcmllcy4NCg0KPiBSZWdhcmRsZXNzLCB0aGUgbGVzc29uIGlzIGNsZWFyLiBMZXQg bWUgZXhwbGFpbiwgYmVjYXVzZSBpdCBjb3VsZCBoZWxwIA0KPiB5b3UgdG8gdW5kZXJzdGFu ZCBob3cgdG8gcmVhZCB0aGUgcGF0Y2ggc2V0DQo+IA0KPiBJdCB3b3VsZCBoZWxwIGlmIHlv dSBhY3R1YWxseSBsb29rIGF0IG15IGV4YW1wbGU6DQo+IA0KPiAobWF0Y2ggJygoKGEgYiBj KSBlIGYgZykgMSAyIDMpDQo+ICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAoKChoZWFkIC4u LikgdGFpbHMgLi4uKQ0KPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYCgsQHRhaWxzICxo ZWFkKSkpDQo+IA0KPiAgwqAgwqAgwqAgPT4gKDEgMiAzICgoYSBiIGMpIGUgZiBnKSkNCg0K SSBkaWQgbG9vayBhdCB0aGlzLCBhbmQgdGhlIGxlc3NvbiBpcyB1bmNsZWFyLg0KDQo+IFdo YXQgZG9lcyB0aGlzIGRlbW9uc3RyYXRlPyBMb29rIGF0IHRoZSBiZWZvcmUgYW5kIGFmdGVy LiBJdHMgcHJldHR5IA0KPiBzaW1wbGUuIEl0IHNob3dzIHRoYXQgYSByZXZlcnNlZCBzcGxp Y2UvdW5xdW90ZSBwYXR0ZXJuIGNhbiBiZSB1c2VkIGFzIA0KPiB0aGUgYmFzaXMgZm9yIHJv dGF0aW5nIG5lc3RlZCBmb3JtcyBpbiBwbGFjZSzCoCBhbiBvZnRlbiBkZXNpcmFibGUgDQo+ IG9wZXJhdGlvbiBjb25zaWRlcmluZyBpdCBwcmVzZXJ2ZXMgc29tZSBzdHJ1Y3R1cmUuDQo+ IA0KPiBPbiB0aGUgY29udHJhcnksIHdpdGhvdXQgc3BsaWNpbmcgd2Ugd291bGQgaGF2ZToN Cj4gKCgxIDIgMykgKChhIGIgYykgZSBmIGcpDQoNCkkgZGlkbid0IG5vdGljZSBpdCByb3Rh dGVzIHRoaW5ncywgSSB0aG91Z2h0IGl0IHdhcyBqdXN0IHNvbWUgYXJiaXRyYXJ5IA0KcmVs YXRpdmVseSBzaW1wbGUgJ21hdGNoJyBleGFtcGxlIHRoYXQgc3RpbGwgaGFkIHNvbWUgY29t cGxleGl0eSB3aXRoIA0KJy4uLicgYW5kIHF1YXNpcXVvdGUgLyB1bnF1b3RlIC8gdW5xdW90 ZS1zcGxpY2luZy4NCg0KRm9yIHBlb3BsZSB3aG8gYXJlbid0IGFzIGdvb2QgYXQsIGVyciwg W3BhdHRlcm4gbWF0Y2hpbmcgcGF0dGVybiANCm1hdGNoZXJzIGFuZCBhc3NpZ25pbmcgbWVh bmluZ3MgdG8gcGF0dGVybiBtYXRjaCBwYXR0ZXJuc10gYXMgeW91LA0KSSByZWNvbW1lbmQg YWN0dWFsbHkgc3RhdGluZyB3aGF0IHRoaXMgZXhhbXBsZSBkb2VzLCBldmVuIGlmIGl0J3Mg anVzdCANCmFuIGltcHJlY2lzZSAnOzsgcm90YXRlIGxpc3RzJy4NCg0KPiBCdXQgaXQgZG9l c24ndCByZWFsbHkgbWF0dGVyLCB0aGlzIHNob3VsZCBiZSBhdXRvc3F1YXNoZWQuDQoNClRo ZW4sIHlvdSBrbm93LCBhdXRvc3F1YXNoIGl0IGJlZm9yZSBzZW5kaW5nLg0KDQo+ICAgICBJ ZiBpdCBpcyBjbGVhciBhbmQgb2J2aW91cyB0byB5b3Ugd2hhdCB0aGlzIGNoYW5nZSBpcyBm b3IsIHRoZW4gcGxlYXNlDQo+ICAgICBhY3R1YWxseSBzYXkgd2hhdCBpdCBpcyBmb3IgaW5z dGVhZCBvZiBzdGF0aW5nIHRoYXQgaXQgaXMgb2J2aW91cy4NCj4gDQo+ICAgICBBRkFJSywg dGhlIHByZXNlbnRhdGlvbiBkaWQgbm90IGV4cGxhaW4gd2hhdCB0aGlzICgqbm9uLWlubGlu aW5nKikNCj4gICAgIGNoYW5nZSBpcyBmb3IuwqAgSWYgaXQgZGlkLCB0aGVuIHlvdSBuZWVk IHRvIHNheSBhdCB3aGljaCBtaW51dGUrc2Vjb25kDQo+ICAgICAtLSB1bmxpa2UgdGV4dCwg eW91IGNhbid0IHJlYWxseSBza2ltIHRocm91Z2ggdmlkZW9zLg0KPiANCj4gICAgIDxiPjog dGhlIHByZXNlbnRhdGlvbiBkaWRuJ3Qgc3BlY2lmeSB3aGljaCBmb3JtcyBhcmUgYW5kIGFy ZW4ndA0KPiAgICAgdXNlZCwgaXQgb25seSBzcGVjaWZpZWQgdGhlIGtpbmRzIG9mIGNoYW5n ZXMgdGhhdCB3b3VsZCBiZSBhcHBsaWVkLA0KPiAgICAgd2l0aCBhIGZldyBnZW5lcmFsIGV4 YW1wbGVzIHRoYXQgYXJlbid0IGFzIGdvb2QgYXMgdGhlIG9uZXMgSSd2ZQ0KPiAgICAgcHJl c2VudGVkLg0KPiANCg0KVGhpcyByZXNwb25zZToNCg0KICAgICgxKSB3aGlsZSBpdCBpcyBy ZWxldmFudCB0byB0aGUgc2Vjb25kIHBhcmFncmFwaCwgdGhpcyBzdGlsbCBkb2VzIG5vdA0K ICAgICAgICBhbnN3ZXIgbXkgcmVxdWVzdCBvbiB3aGF0IHRoZSBjaGFuZ2UgaXMgZm9yLg0K DQogICAgKDIpIGl0IGlzIGluZGVudGVkIG9uIHRoZSBzYW1lIGxldmVsIGFzIG15IHRleHQg eW91IHF1b3RlZCwNCiAgICAgICAgYW5kIG15IHRleHQgZGlkbid0IGhhdmUgJz4nIG1hcmtl cnMsIHNvIEkgZ2xvc3NlZCBvdmVyIHRoaXMNCiAgICAgICAgYXQgZmlyc3QuICBGb3IgdGhl IGZ1dHVyZSwgSSByZWNvbW1lbmQgcGlja2luZyBhIHNpbmdsZSBxdW90YXRpb24NCiAgICAg ICAgc3R5bGUgYW5kIHN0aWNraW5nIHdpdGggaXQgd2l0aGluIGEgc2luZ2xlIGUtbWFpbCwg dG8gYWlkIHJlYWRlcg0KICAgICAgICBjb21wcmVoZW5zaW9uIC0tIHRoZSDigJg8Yj464oCZ IG1hcmtlciBpcyBmaW5lIEkgc3VwcG9zZSwgYnV0IG9ubHkNCiAgICAgICAgaWYgeW91IHVz ZSBpdCBjb25zaXN0ZW50bHkuDQoNCj4gICAgICA+wqAgwqAgwqAgPiArQSBwYXR0ZXJuIG1h dGNoZXIgY2FuIG1hdGNoIGFuIG9iamVjdCBhZ2FpbnN0IHNldmVyYWwNCj4gICAgIHBhdHRl cm5zIGFuZA0KPiAgICAgID7CoCDCoCDCoCA+ICtleHRyYWN0IHRoZSBlbGVtZW50cyB0aGF0 IG1ha2UgaXQgdXAuDQo+ICAgICAgPsKgIMKgIMKgID4gKw0KPiAgICAgID7CoCDCoCDCoCA+ ICtAZXhhbXBsZQ0KPiAgICAgID7CoCDCoCDCoCA+ICsobGV0ICgobSAnKChhIC4gYikgKGMg LiBkKSAoZSAuIGYpKSkpDQo+ICAgICAgPsKgIMKgIMKgID4gK8KgIChtYXRjaCBtDQo+ICAg ICAgPsKgIMKgIMKgID4gK8KgIMKgICgoKGxlZnQgLiByaWdodCkgLi4uKSBsZWZ0KSkpDQo+ ICAgICAgPsKgIMKgIMKgID4gK0ByZXN1bHR7fSAoYSBjIGUpDQo+ICAgICAgPsKgIMKgIMKg ID4gK0BlbmQgZXhhbXBsZQ0KPiAgICAgID4NCj4gICAgICA+wqAgwqAgwqBUaGVyZSBpcyBv bmx5IGEgc2luZ2xlIHBhdHRlcm4gaGVyZSwgbm90IHNldmVyYWwgcGF0dGVybnMuDQo+ICAg ICAgPsKgIMKgIMKgU2V2ZXJhbCBwYXR0ZXJucyB3b3VsZCBiZSwgZS5nLiwNCj4gICAgICA+ DQo+ICAgICAgPg0KPiAgICAgID7CoCDCoCDCoChsZXQgKChtICcoIyhhIGIpICMoYyBkKSAj KGUgZikpKQ0KPiAgICAgID7CoCDCoCDCoCDCoCDCoChtYXRjaCBtDQo+ICAgICAgPsKgIMKg IMKgIMKgIMKgIMKgKCgobGVmdCAuIHJpZ2h0KSAuLi4pIGxlZnQpDQo+ICAgICAgPsKgIMKg IMKgIMKgIMKgIMKgKCgjKGxlZnQgcmlnaHQpIC4uLikgbGVmdCkpKS4NCj4gICAgICA+DQo+ ICAgICAgPg0KPiAgICAgID4gU29ycnksIGJ1dCB5b3UgYXJlIHdyb25nLiBXaGF0IHlvdSBh cmUgY2FsbGluZyBwYXR0ZXJucyBhcmUgcGF0dGVybg0KPiAgICAgID4gY2xhdXNlcy4gTGVm dCBhbmQgcmlnaHQgaGVyZSBhcmUgcGF0dGVybiB2YXJpYWJsZXMgYm91bmQgdG8NCj4gICAg IHBhdHRlcm5zLg0KPiAgICAgID4gU2VlIFNSRkktMjA0IG9uIHRoZSBTaGlubiBQYXR0ZXJu IG1hdGNoZXIgd2hpY2ggKGljZS05IG1hdGNoKQ0KPiAgICAgbW9yZSBvcg0KPiAgICAgID4g bGVzcyBpbXBsZW1lbnRzIGh0dHBzOi8vc3JmaS5zY2hlbWVycy5vcmcvc3JmaS0yMDQvc3Jm aS0yMDQuaHRtbA0KPiAgICAgPGh0dHBzOi8vc3JmaS5zY2hlbWVycy5vcmcvc3JmaS0yMDQv c3JmaS0yMDQuaHRtbD4NCj4gICAgICA+IDxodHRwczovL3NyZmkuc2NoZW1lcnMub3JnL3Ny ZmktMjA0L3NyZmktMjA0Lmh0bWwNCj4gICAgIDxodHRwczovL3NyZmkuc2NoZW1lcnMub3Jn L3NyZmktMjA0L3NyZmktMjA0Lmh0bWw+Pg0KPiANCj4gICAgIE9LLCB0ZXJtaW5vbG9neSBk aWZmZXJlbmNlLiANCj4gDQo+IA0KPiBObywgdGhpcyBpcyBhIHByZWNpc2Ugc2VtYW50aWMg ZGlmZmVyZW5jZS4NCg0KVGhpcyBpcyBhbm90aGVyIGluc3RhbmNlIG9mIGh5cG9jcmlzeSAt LSB0aGlzIGlzIGp1c3QgYXJndWluZywgd2hpY2ggeW91IA0Kd2VyZSBuZWdhdGl2ZSBhYm91 dDoNCg0KPj4gWW91IGFwcGVhciB0byBtZSB0byBiZSBtb3RpdmF0ZWQgbW9yZSBieSB0aGUg ZGVzaXJlIHRvIGFyZ3VlIHJhdGhlciB0aGFuIHRvIA0KPj4gY29sbGFib3JhdGUgb24gaW1w cm92aW5nIEd1aXggdG8gdGhlIGJlc3Qgb2Ygb3VyIGFiaWxpdGllcy4NCg0KSWYgeW91IHdh bnQgdG8gZ28gYXJndWluZyBhYm91dCBpcnJlbGV2YW50IHRhbmdlbnRzIChJIGFscmVhZHkg YWdyZWVkIA0KdGhhdCBteSBvcmlnaW5hbCBjbGFpbSB3YXMga2luZGEgd3Jvbmcgd2l0aCAn T0ssIHRlcm1pbm9sb2d5IA0KZGlmZmVyZW5jZScpLCB0aGF0J3MgZmluZTsgbXlzZWxmIEkg ZG8gbG92ZSBnb2luZyBvbiB0YW5nZW50cywgYnV0IA0KcGxlYXNlIGRvbid0IGJlIGh5cG9j cml0aWNhbCBhYm91dCBpdC4NCg0KT3JkaW5hcmlseSBJIHdvdWxkbid0IG1pbmQgY29udGlu dWluZyB0aGlzIHRhbmdlbnQgYnkgc3BlY3VsYXRpbmcgb24gDQp3aGVyZSBvdXIgZGlmZmVy ZW5jZSBpbiB0ZXJtaW5vbG9neSBmb3IgJ3NlbWFudGljcycgYW5kICd0ZXJtaW5vbG9neScg DQpjb21lcyBmcm9tIGFuZCBob3cgd2UgdGhlcmVmb3JlIGFyZSBib3RoIHdyb25nIG9yIHJp Z2h0LCBkZXBlbmRpbmcgb24gDQp3aGF0IGV4YWN0IG1lYW5pbmcgaXMgYXNjcmliZWQgdG8g J3NlbWFudGljcycgYW5kICd0ZXJtaW5vbG9neScgKHRoZXNlIA0KdGVybXMgaGF2ZSBtdWx0 aXBsZSBtZWFuaW5ncyBhZnRlciBhbGwgLi4uKSwgYnV0IGdpdmVuIHRoZSBjaXJjdW1zdGFu Y2VzIA0KSSdtIG5vdCBpbiB0aGUgbW9vZCBmb3IgaXQgYXQgYWxsLg0KDQooSSBndWVzcyBz b21ldGhpbmcgYWJvdXQgZGlmZmVyZW5jZXMgaW4gYmFja2dyb3VuZHMgaW4gbGluZ3Vpc3Rp Y3MgKCopIA0KYW5kIG1hdGhlbWF0aWNzICYgY29tcHNjaTsgaW4gdGhlIGxhdHRlciAndGVy bWlub2xvZ3knIGNhbiBtZWFuIHRoZSANCm1hcHBpbmcgb2Ygd29yZHMgdG8gbWF0aGVtYXRp Y2FsIGNvbmNlcHRzIChtb3JlIHByZWNpc2VseSwgbWFwcGluZyBmcm9tIA0Kd29yZHMgdG8g Zm9ybXVsYWUgcmVwcmVzZW50aW5nIHNvbWUgdmFyaW91cyBraW5kcyBvZiBvYmplY3RzLCBh c3N1bWluZyANCnRoYXQgdGhlIG1hdGhlbWF0aWNhbCBjb25jZXB0cyBoYXZlIHNvbGlkIGZv dW5kYXRpb25zKSkgYW5kIHNlbWFudGljcyANCmNvdWxkIGJlIGFzc2lnbmluZyBhICdtZWFu aW5nJyB0byB0aGVzZSBtYXRoZW1hdGljYWwgb2JqZWN0cyAobm90IHRoZWlyIA0KbmFtZXMs IGJ1dCB0aGUgb2JqZWN0cyAob3IgZm9ybXVsYWUpIHRoZWlyc2VsdmVzKSwgaW4gc29tZSBp bmZvcm1hbCANCnNlbnNlIG9yIHdpdGggc29tZXRoaW5nIGxpa2UgZGVub3RhdGlvbmFsIHNl bWFudGljcywgLi4uKQ0KDQooKikgTG9va2luZyBmdXJ0aGVyIGluIHRoZSBlLW1haWwsIGl0 J3MgYWN0dWFsbHkgcGhpbG9zb3BoeT8gSHVoLg0KDQooSSBrbm93IEkgc2FpZCBJJ20gbm90 IGluIHRoZSBtb29kIGZvciBpdCwgYnV0IG15IHRob3VnaHQgcHJvY2VzcyANCmNvbnRpbnVl ZCBvbiBhbnl3YXksIHNvIEkgcG9zdGVkIHRoZSBzdGFydCBvZiBpdCBoZXJlIHRvIGdldCBp dCBvdXQgb2YgDQpteSBtaW5kLikNCg0KPiANCj4gICAgIEl0J3Mgc3RpbGwgd3JvbmcgdGhv dWdoLCBpbiBhIGRpZmZlcmVudCB3YXkNCj4gICAgIC0tIHlvdSB3cml0ZSB0aGF0IGFuIG9i amVjdCBpcyBtYXRjaGVkIGFnYWluc3Qgc2V2ZXJhbCBwYXR0ZXJucy4NCj4gICAgIEhvd2V2 ZXIsIHRoZXJlIGlzIG5vICdvcicsICdhbmQnIG9yIG11bHRpcGxlIGNsYXVzZXMgYW55d2hl cmUgaW4geW91cg0KPiAgICAgZXhhbXBsZSwgc28gdGhlIG9iamVjdCAoKGEgLiBiKSAoYyAu IGQpIChlIC4gZikpIGlzIG9ubHkgbWF0Y2hlZA0KPiAgICAgYWdhaW5zdA0KPiAgICAgYSBz aW5nbGUgcGF0dGVybiAoKChsZWZ0IC4gcmlnaHQpIC4uLikgbGVmdCksIGFuZCBsaWtld2lz ZSBpdHMgZWxlbWVudHMNCj4gICAgIChhIC4gYiksIChjIC4gZCksIC4uLiBhcmUgb25seSBt YXRjaGVkIGFnYWluc3QgYSBzaW5nbGUgY2xhdXNlIChsZWZ0IC4NCj4gICAgIHJpZ2h0KSwg ZXRjLi4NCj4gDQo+IA0KPiBZb3UncmUgYWdhaW4gY29uZmxhdGluZyBwYXR0ZXJucyB3aXRo IHBhdHRlcm4gY2xhdXNlcy4NCg0KVGhpcyBJIGRpc2FncmVlIHdpdGgsIHNlZSBsYXRlci4N Cg0KPiBMZWZ0IG5hbWVzIGEgDQo+IHBhdHRlcm4gdGhhdCBiaW5kcyB0byB0aGUgbGlzdCBv ZiBhbGwgbGVmdCBhc3NvY2lhdGlvbnMsIHJpZ2h0IGJpbmRzIGEgDQo+IGxpc3Qgb2YgYWxs IG9mIHRoZSByaWdodCBhc3NvY2lhdGlvbnMuDQoNCkFncmVlZCwgZXhjZXB0IGZvciBjYXNp bmcgKFNjaGVtZSBpcyBjYXNlLXNlbnNpdGl2ZSwgTGVmdCAhPSBsZWZ0KSwgd2l0aCANCnRo ZSBjYXZlYXQgdGhhdCAnTGVmdCBuYW1lcyBhIHBhdHRlcm4gLT4gQHZhcntsZWZ0fSBpcyBh IHBhdHRlcm4gDQp2YXJpYWJsZScgd291bGQgYmUgbW9yZSBzcGVjaWZpYyBhbmQgbW9yZSB0 byB0aGUgcG9pbnQuDQoNCj4gQSBwYXR0ZXJuID0gYSBzZXF1ZW5jZSBvZiANCj4gbG9jYXRp b25zOyBpdHMgdGhlIHNlcXVlbmNlIGEgZ2VuZXJpYyBwYXR0ZXJuIHZhcmlhYmxlICJyZXBy ZXNlbnRzIi4NCg0KVGhhdCdzIGNlcnRhaW5seSBfYV8gZGVmaW5pdGlvbiBvZiBwYXR0ZXJu LCBidXQgdGhpcyBpc24ndCB0aGUgbWVhbmluZyANCnRoYXQgU1JGSS0yMDQgYXNjcmliZWQg dG8gcGF0dGVybnMuICBXaGVyZSBhcmUgeW91IGdldHRpbmcgdGhpcyANCm5vbi1zdGFuZGFy ZCBkZWZpbml0aW9uIGZyb20/DQoNCkUuZy4sIGluIHRoZSBpbnRyb2R1Y3Rpb24gaXQgc3Rh dGVzOg0KDQogICBQYXR0ZXJucyBhcmUgd3JpdHRlbiB0byBsb29rIGxpa2UgdGhlIHByaW50 ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlDQogICBvYmplY3RzIHRoZXkgbWF0Y2guIFRoZSBi YXNpYyB1c2FnZSBpcyAobWF0Y2ggZXhwciAocGF0IGJvZHkgLi4uKQ0KICAgLi4uKSB3aGVy ZSB0aGUgcmVzdWx0IG9mIGV4cHIgaXMgbWF0Y2hlZCBhZ2FpbnN0IGVhY2ggcGF0dGVybiBp biB0dXJuLA0KICAgIGFuZCB0aGUgY29ycmVzcG9uZGluZyBib2R5IGlzIGV2YWx1YXRlZCBm b3IgdGhlIGZpcnN0IHRvIHN1Y2NlZWQuDQogICBUaHVzLCBhIGxpc3Qgb2YgdGhyZWUgZWxl bWVudHMgbWF0Y2hlcyBhIGxpc3Qgb2YgdGhyZWUgZWxlbWVudHMuDQoNCiAgIChsZXQgKChs cyAobGlzdCAxIDIgMykpKQ0KICAgICAobWF0Y2ggbHMNCiAgICAgICAoKDEgMiAzKSAjdCkp KQ0KDQogICA9PiAjdA0KDQogRnJvbSAobWF0Y2ggZXhwciAocGF0IGJvZHkgLi4uKSAuLi4p IGFuZCAid2hlcmUgdGhlIHJlc3VsdCBvZiBleHByIGlzIA0KbWF0Y2hlZCBhZ2FpbnN0IGVh Y2ggcGF0dGVybiBpbiB0dXJuIiwgaXQgaXMgY2xlYXIgdGhhdCB0aGUgc3R1ZmYgb24gdGhl IA0KbGVmdCBvZiBib2R5IGlzIGNhbGxlZCBhICdwYXR0ZXJuJyAtLSB0aGUgY29tYmluYXRp b24gKHBhdCBib2R5IC4uLikgaXMgDQpjYWxsZWQgYSBjbGF1c2UsIGJ1dCB0aGUgJ3BhdCcg aXMgYSBwYXR0ZXJuLg0KDQpGdXJ0aGVybW9yZSwgdGhlIGRvY3VtZW50IHN0YXRlczoNCg0K ICAgWy4uLl0gVGhlIGZvbGxvd2luZyB0ZXJtcyB3aWxsIGJlIHVzZWQgaW4gZGVzY3JpYmlu ZyBwYXR0ZXJuIG1hdGNoaW5nOg0KDQogICBwYXR0ZXJuDQogICAgICAgZGF0YSB0aGF0IGlz IHN1cHBvc2VkIHRvIG1hdGNoIGFnYWluc3QgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZQ0K ICAgICAgIG1hdGNoIGZvcm0uDQoNCi0tIHRoZXJlIGlzIG5vIG1lbnRpb24gb2YgJ3NlcXVl bmNlcycsICdsb2NhdGlvbnMnLCBvciAndmFyaWFibGVzJyBoZXJlLg0KDQpJbiBmYWN0LCB0 aGVyZSBpcyBub3QgYSBzaW5nbGUgbWVudGlvbiBvZiAnbG9jYXRpb24nIG9yICdzZXF1ZW5j ZScgaW4gDQpTUkZJLTIwNC4gIE5laXRoZXIgaXMgdGhlcmUgYW55IG1lbnRpb24gb2YgJ2xv Y2F0aW9uJyBpbiAnQSBQcmFjdGljYWwgDQpTb2Z0IFR5cGUgU3lzdGVtIGZvciBTY2hlbWUn ICh3aGVyZSAnbWF0Y2gnIG9yaWdpbmF0ZWQgZnJvbSkuICAoVGhlcmUgaXMgDQphIG1lbnRp b24gb2Ygc2VxdWVuY2VzLCBidXQgb25seSBhcyBwYXJ0IG9mIHRoZSBjb21iaW5hdGlvbiAn cmVkdWN0aW9uIA0Kc2VxdWVuY2VzJywgd2hpY2ggZG9lc24ndCBhcHBlYXIgdG8gaGF2ZSBh bnl0aGluZyB0byBkbyB3aXRoICdtYXRjaCcuDQoNCk1vcmUgdG8gdGhlIHBvaW50LCBsZXQn cyByZXR1cm4gdG8g4oCYSG93ZXZlciwgdGhlcmUgaXMgbm8gJ29yJywgJ2FuZCcgb3IgDQpt dWx0aXBsZSBjbGF1c2VzIFsuLi5d4oCZIGFuZCBob3cgSSdtIG5vdCBjb25mbGF0aW9uIHBh dHRlcm5zIHdpdGggcGF0dGVybiANCmNsYXVzZXMgdGhlcmUuDQoNCkluIHRoZSBzZWN0aW9u ICdFbGxpcHNlcyBhbmQgVGFpbCBQYXR0ZXJucycsIHRoZXJlIGlzOg0KDQogICBBbiBlbGxp cHNpcyB3aWxsIG1hdGNoIGFueSBudW1iZXIgKHplcm8gb3IgbW9yZSkgb2YgYSBwYXR0ZXJu IChsaWtlIGENCiAgIHJlZ2V4IEtsZWVuZSBzdGFyKToNCg0KLiAgVGhpcyBpbXBsaWVzIHRo YXQsIGFjY29yZGluZyB0byBTUkZJLTIwNCwgYXQgbGVhc3Qgc29tZSBwYXR0ZXJucyANCmNv bnNpc3Qgb2Ygc21hbGxlciBwYXR0ZXJucyAobm90IHBhdHRlcm4gY2xhdXNlcyBjb25zaXN0 aW5nIG9mIG11bHRpcGxlIA0KcGF0dGVybnMgb3Igc3VjaCwgYnV0IGxpdGVyYWxseSBwYXR0 ZXJucyBjb25zaXN0aW5nIG9mIHBhdHRlcm5zKS4NCg0KRnVydGhlcm1vcmUsIHRoZSBkb2N1 bWVudGF0aW9uIGZvciAnb3InIGV2ZW4gZHJvcHMgdGhlIHdvcmQgJ3N1YnBhdHRlcm4nIA0K YW5kIHRhbGtzIGFib3V0IG1hdGNoaW5nIGFuIG9iamVjdCBhZ2FpbnN0IHN1YnBhdHRlcm5z Og0KDQogICAgVGhlIG9yIG9wZXJhdG9yIGVuc3VyZXMgdGhhdCBhdCBsZWFzdCBvbmUgc3Vi cGF0dGVybiBtYXRjaGVzLiBJZiB0aGUNCiAgICBzYW1lIGlkZW50aWZpZXIgb2NjdXJzIGlu IGRpZmZlcmVudCBzdWJwYXR0ZXJucywgaXQgaXMgbWF0Y2hlZA0KICAgIGluZGVwZW5kZW50 bHkuIEFsbCBpZGVudGlmaWVycyBmcm9tIGFsbCBzdWJwYXR0ZXJucyBhcmUgYm91bmQgaWYg dGhlDQogICAgb3Igb3BlcmF0b3IgbWF0Y2hlcywgYnV0IHRoZSBiaW5kaW5nIGlzIG9ubHkg ZGVmaW5lZCBmb3IgaWRlbnRpZmllcnMNCiAgICBmcm9tIHRoZSBzdWJwYXR0ZXJuIHdoaWNo IG1hdGNoZWQuDQoNCiAgICAobWF0Y2ggMSAoKG9yKSAjdCkgKGVsc2UgI2YpKSA9PiAjZg0K DQogICAgKG1hdGNoIDEgKChvciB4KSB4KSkgPT4gMQ0KDQogICAgKG1hdGNoIDEgKChvciB4 IDIpIHgpKSA9PiAxDQoNCkkgaGF2ZW4ndCBjaGVja2VkIGJ1dCBJIHdvdWxkIGFzc3VtZSB0 aGUgc2FtZSBob2xkcyBmb3IgdGhlICdhbmQnIA0KY29tYmluYXRpb24gYW5kIHNvbWV0aGlu ZyBzaW1pbGFyIGZvciAnbm90Jy4NCg0KRm9yIGFub3RoZXIgcGVyc3BlY3RpdmUsIHRoZSBT UkZJIGhhcyB0aGUgZm9sbG93aW5nIHRleHQ6DQoNCiAgIEEgcGF0dGVybiBjYW4gaGF2ZSBv bmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtczoNCg0KICAgPHBhdHRlcm4+IC0+ICg8cGF0dGVy bj4gLi4uKSB8DQogICAgICAgICAgICAgICAjKDxwYXR0ZXJuPiAuLi4pIHwNCiAgICAgICAg ICAgICAgICAgIDxwYXR0ZXJuIGlkZW50aWZpZXI+IHwNCiAgICAgICAgICAgICAgICAgIDxw YXR0ZXJuIHMtZXhwcmVzc2lvbj4gfA0KICAgICAgICAgICAgICAgICAgPHRhaWwgcGF0dGVy bj4gfA0KICAgICAgICAgICAgICAgICAgPGVsbGlwc2lzIHBhdHRlcm4+IHwNCiAgICAgICAg ICAgICAgICAgIDxyZWNvcmQgcGF0dGVybj4gfA0KICAgICAgICAgICAgICAgICAgPGdldHRl ciBvciBzZXR0ZXIgcGF0dGVybj4gfA0KICAgICAgICAgICAgICAgICAgPGZpZWxkIHBhdHRl cm4+IHwNCiAgICAgICAgICAgICAgICAgIDxwcmVkaWNhdGUgcGF0dGVybj4gfA0KICAgICAg ICAgICAgICAgICAgPGJvb2xlYW4gcGF0dGVybj4gfA0KICAgICAgICAgICAgICAgICAgPHRy ZWUgcGF0dGVybj4gfA0KICAgICAgICAgICAgICAgICAgPHF1YXNpLXF1b3RlIHBhdHRlcm4+ IHwNCiAgICAgICAgICAgICAgICAgIF8NCg0KV2hhdCBJJ20gc2VlaW5nIGhlcmUsIGlzIHRo YXQgYSBwYXR0ZXJuIGNhbiBjb25zaXN0cyBvZiBzbWFsbGVyIHBhdHRlcm5zIA0KICAoYW5k IG5vdCBuZWNlc3NhcmlseSBhIHNlcXVlbmNlICheKSBvZiAnbG9jYXRpb25zJywgd2hhdGV2 ZXIgdGhhdCANCndvdWxkIG1lYW4gaW4gdGhpcyBjb250ZXh0ICgqKSAtLSB3aGlsZSBhIGxp c3QgKDxwYXR0ZXJuPiAuLi4pIG9mIA0Kc21hbGxlciBzdHVmZiA8cGF0dGVybj4gaXMgcG9z c2libGUsIGl0IGNvdWxkIGluc3RlYWQgYmUgYSBwcmVkaWNhdGUgDQpwYXR0ZXJuLCBvciBh IHZlY3RvciAjKDxwYXR0ZXJuPiAuLi4pKS4gIEJ5IHRoZSAnbm90IG5lY2Vzc2FyaWx5Jywg dGhpcyANCmNvbnRyYWRpY3RzIHlvdXIgZGVmaW5pdGlvbiDigJhBIHBhdHRlcm4gPSBhIHNl cXVlbmNlIG9mIGxvY2F0aW9uc+KAmS4NCg0KKF4pIEFzICdzZXF1ZW5jZScgaXMgbm93aGVy ZSBkZWZpbmVkIGluIHRoZSBTUkZJLCBJIHdpbGwgYXNzdW1lIHlvdSANCm1lYW50ICdsaXN0 Jy4NCigqKSBJJ2QgZ3Vlc3MgeW91IG1lYW4gbG9jYXRpb249cGF0dGVybiB2YXJpYWJsZSBi dXQgdGhhdCBzZWVtcyANCmNvbnRyYWRpY3RlZCBieSBzb21lIG9mIHlvdXIgc3RhdGVtZW50 cyBzbyBJIGR1bm5vLg0KDQpIZW5jZSwgSSBiZWxpZXZlIEkgaGF2ZSBzb2xpZCBldmlkZW5j ZSB0aGF0IHBhdHRlcm5zIGNhbiwgaW4gZmFjdCwgDQpjb25zaXN0IG9mIHNtYWxsZXIgcGF0 dGVybnMsIGFuZCBnaXZlbiB0aGUgJ29yJyBhbmQgJ2FuZCcsIEkgaGF2ZSBzb2xpZCANCmV2 aWRlbmNlIHRoYXQgc29tZXRpbWVzIGEgc2luZ2xlIG9iamVjdCBpcyBtYXRjaGVkIGFnYWlu c3Qgc2V2ZXJhbCANCihzdWIpcGF0dGVybnMuDQoNCj4gVGhlIA0KPiBhIHZhcmlhYmxlIGlu IHRoZSBwb3NpdGlvbiBvZiB0aGUgM3JkIGVsZW1lbnQgb2YgdGhlIGxlZnQgYnJhbmNoIG9m IGEgDQo+IHRyZWUgd2lsbCBiaW5kIHRvIGFsbCB0aGUgb2JqZWN0cyB0aGVyZSBmb3IgZXZl cnkgdHJlZSwgcmVnYXJkbGVzcyBvZiANCj4gdGhlIGRhdGEgdHlwZSBpZiB5b3UgdXNlIGdl bmVyaWMgcGF0dGVybiB2YXJpYWJsZXMuDQoNClllcz8gIEknbSBub3QgZGlzYWdyZWVpbmcg d2l0aCBhbnkgb2YgdGhpcy4gIEkgYWxzbyBhdCBubyBwb2ludCBzdGF0ZWQgDQphbnl0aGlu ZyBhYm91dCBkYXRhIHR5cGVzLg0KDQo+IEEgcGF0dGVybiBjbGF1c2UgaXMgYSBzZXF1ZW5j ZSBvZiBwYXR0ZXJuIHZhcmlhYmxlLg0KDQpXaGF0PyAgTm8uICBJZiB5b3UgaW5zaXN0IG9u IHRoaXMsIHF1b3RlIHlvdXIgc291cmNlcyAtLSBwcm92aWRlIGEgDQpjaXRhdGlvbiBvZiB0 aGUgcmVsZXZhbnQgcGFydCBvZiBTUkZJLTIwNCBvciAnQSBQcmFjdGljYWwgU29mdCBUeXBl IA0KU3lzdGVtIGZvciBTY2hlbWUnLiAgTGF0ZXIgaW4geW91ciBlLW1haWwgeW91IHN0YXJ0 IHRhbGtpbmcgYWJvdXQgaG93IA0KeW91IGRpZCBhIFBoRCBhbmQgcHVibGlzaGVkIGluIGlu dGVybmF0aW9uYWwgcGFwZXJzLCBzbyB5b3Ugc2hvdWxkIA0KYWxyZWFkeSBrbm93IHRoYXQg eW91IG11c3QgcXVvdGUgeW91ciBzb3VyY2VzIGFuZCB3aHkgcXVvdGluZyB5b3VyIA0Kc291 cmNlcyBpcyBpbXBvcnRhbnQuDQoNCkxvb2tpbmcgYXQgdGhlIFNSRkksIGEgJ3BhdHRlcm4g Y2xhdXNlJyBpcyBkZWZpbmVkIGFzOg0KDQogICBwYXR0ZXJuIGNsYXVzZQ0KICAgICBhIHBh dHRlcm4gYW5kIGl0cyBib2R5Lg0KDQpGb3IgZXhhbXBsZSwgaW4gKG1hdGNoIG9iaiAoKCkg Iml0J3MgZW1wdHkiKSAoI2YgIml0J3MgZmFsc2UiKSksIHRoZXJlIA0Kd291bGQgdGhlbiBi ZSB0d28gY2xhdXNlczogKCgpICJpdCdzIGVtcHR5IikgYW5kICgjZiAiaXQncyBmYWxzZSIp Lg0KDQpUaGUgZmlyc3QgcGF0dGVybiBjbGF1c2UgKCgpICJpdCdzIGVtcHR5IikgaXMgYSBz ZXF1ZW5jZSBjb25zaXN0aW5nIG9mIA0KKCkgYW5kICJpdCdzIGVtcHR5IiwgbmVpdGhlciBv ZiB3aGljaCBpcyBhIHBhdHRlcm4gdmFyaWFibGUgKHRoZSBmb3JtZXIgDQppcyBhIHBhdHRl cm4sIHllcywgYnV0IG5vdCBhIHZhcmlhYmxlIGFuZCBub3QgYSBwYXR0ZXJuIHZhcmlhYmxl KS4gDQpMaWtld2lzZSBmb3IgdGhlIG90aGVyIHBhdHRlcm4gY2xhdXNlLg0KDQpUaGlzIGRp cmVjdGx5IGNvbnRyYWRpY3RzIHlvdXIgZGVmaW5pdGlvbiAnYSBwYXR0ZXJuIGNsYXVzZSBp cyBhIA0Kc2VxdWVuY2Ugb2YgcGF0dGVybiB2YXJpYWJsZXMnLg0KDQo+ICAgICBQcm9wb3Nh bDogJ3NldmVyYWwgcGF0dGVybnMgLT4gYSBwYXR0ZXJuJyAod2hpY2ggaGFwcGVucyB0byBj b25zaXN0IG9mDQo+ICAgICBzbWFsbGVyIHBhdHRlcm5zKS4NCj4gDQo+IA0KPiAgICAgfiBX aHk/DQoNCkkgYWxyZWFkeSBleHBsYWluZWQgdGhpczsgaXQncyBiZWNhdXNlIHRoZSBvbGQg c2VudGVuY2UgaXMga2luZCBvZiANCm1pc2xlYWRpbmcsIGJlY2F1c2UgaW4gdGhlIGV4YW1w bGUgdGhhdCBmb2xsb3dzIHRoZSBvYmplY3QgaXMgb25seSANCm1hdGNoZWQgYWdhaW5zdCBh IHNpbmdsZSBwYXR0ZXJuLCBub3Qgc2V2ZXJhbCAoZXhjZXB0IGluIHRoZSBkZWdlbmVyYXRl IA0Kc2Vuc2UgJ3NldmVyYWwgPSAxJywgYnV0IGVyZ2gpLiAgKFRoZXJlIG9mIGNvdXJzZSBh bHNvIGV4aXN0IGFsdGVybmF0aXZlIA0Kc29sdXRpb25zLCBsaWtlIGFkZGluZyBtb3JlIGNs YXVzZXMgdG8gdGhlIG1hdGNoIGV4YW1wbGUgc3VjaCB0aGF0IA0Kb2JqZWN0cyBhcmUgbWF0 Y2hlZCBhZ2FpbnN0IG11bHRpcGxlIHBhdHRlcm5zLCBvciBhZGRpbmcgYSBub3RlIHRoYXQg DQp3aGlsZSBpbiB0aGlzIGV4YW1wbGUgdGhlIG9iamVjdCBpcyBvbmx5IG1hdGNoZWQgYWdh aW5zdCBhIHNpbmdsZSANCnBhdHRlcm4sIHRoZXJlIHdpbGwgYmUgZXhhbXBsZXMgb24gaG93 IG9iamVjdHMgY2FuIGFsc28gYmUgbWF0Y2hlZCANCmFnYWluc3QgbXVsdGlwbGUgcGF0dGVy bnMgbGF0ZXIpLg0KDQpRdW90aW5nIG15IHByZXZpb3VzIHJlcGx5LCB3aGVyZSBJIGFscmVh ZHkgZXhwbGFpbmVkIHRoZSByZWFzb246DQoNCj4gICAgIFRoZXJlIGlzIG9ubHkgYSBzaW5n bGUgcGF0dGVybiBoZXJlLCBub3Qgc2V2ZXJhbCBwYXR0ZXJucy4NCj4gICAgIFNldmVyYWwg cGF0dGVybnMgd291bGQgYmUsIGUuZy4sDQo+IA0KPiANCj4gICAgIChsZXQgKChtICcoIyhh IGIpICMoYyBkKSAjKGUgZikpKQ0KPiAgICAgICAgIChtYXRjaCBtDQo+ICAgICAgICAgICAo KChsZWZ0IC4gcmlnaHQpIC4uLikgbGVmdCkNCj4gICAgICAgICAgICgoIyhsZWZ0IHJpZ2h0 KSAuLi4pIGxlZnQpKSkuIA0KWyBlbmQgb2YgcXVvdGUgXQ0KDQo+IElmIHdlIHN0YXJ0IG1p eGluZyBhbmQgbWF0Y2hpbmcNCj4gDQo+ICAgICB+wqAgYWxsIHRoZXNlIHN1YnRseSBkaWZm ZXJlbnQgdGVybXMNCg0KKDEpIEknbSBpZ25vcmluZyB0aGVzZSB+LCBkdW5ubyB3aGF0J3Mg dXAgd2l0aCB0aG9zZS4NCg0KKDIpIEknbSBub3QgcHJvcG9zaW5nIG1peGluZyBhbnkgdGVy bXMuICBNeSBwcm9wb3NlZCBjaGFuZ2Ugd2FzLCBJIA0KcmVwZWF0LCAnc2V2ZXJhbCBwYXR0 ZXJucyAtPiBhIHBhdHRlcm4nLiAgVGhlcmUgYXJlIG9ubHkgdGhyZWUgdGVybXMgDQpoZXJl OiAnc2V2ZXJhbCcsICdwYXR0ZXJuJyBhbmQgJ2EnLiAgVGhlICdhJyBkb2Vzbid0IGNvdW50 IGJlY2F1c2UgaXQncyANCmp1c3QgYW4gYXJ0aWNsZS4gIFRoZXJlIGFyZSB0aGVuIG9ubHkg dHdvIHJlbWFpbmluZyB0ZXJtcyAnc2V2ZXJhbCcgYW5kIA0KJ3BhdHRlcm4nLCBhbmQgdGhl IGNoYW5nZSB0aGVuIGNvbnNpc3RzIG9mIF9yZW1vdmluZ18gYSBzaW5nbGUgdGVybS4NCg0K SG93IGlzIHJlbW92aW5nIGEgdGVybSBhbmQgZG9pbmcgbm90aGluZyBlbHNlLCBhIGNhc2Ug b2YgJ21peGluZyBhbmQgDQptYXRjaGluZyc/ICBJZiBub3RoaW5nIGVsc2UsIGFzIG9ubHkg YSBzaW5nbGUgdGVybSByZW1haW5zLCBpdCdzIA0KaW1wb3NzaWJsZSBmb3IgdGhlcmUgdG8g YmUgJ2RpZmZlcmVudCB0ZXJtcycsIGFzIHRoZXJlIGlzIG9ubHksIHlvdSANCmtub3csIGEg c2luZ2xlIHRlcm0sIHNvIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gdGVy bXMuDQoNCg0KPiB1c2VkIA0KPiAgICAgfiB0byBzcGVjaWZ5IFNjaGVtZSB0byBzdWl0IG91 cg0KPiAgICAgfiB2aWJlcywgPiAgICAgfiBob3cgYXJlIHdlIGdvaW5nIHRvIGFjdHVhbGx5 DQogPiAgICAgfiBkaXNjdXNzIHRoZSBsYW5ndWFnZSwgaG93IGl0IHdvcmtzDQogPiAgICAg fiBhbmQgaG93IHRvIGdyb3cgaXQ/IFRiaCB0aGlzIGtpbmQNCiA+ICAgICB+IHRoaW5raW5n IGlzIGEgcmVjaXBlIGZvciB1bmNsZWFyIGRvY3MNCg0KSW4gbXkgcHJvcG9zYWwgb2YgJ3Nl dmVyYWwgcGF0dGVybnMgLT4gYSBwYXR0ZXJuJyBhbmQgaXRzIHJhdGlvbmFsZSwgYXQgDQpu byBwb2ludCBkaWQgSSBzdGFydCB0YWxraW5nIGFib3V0IHZpYmVzLiAgSGVuY2UsIGVyciwg bm9uLXNlcXVpdHVyPyANCkluc3RlYWQgb2YgdGFsa2luZyBhYm91dCB2aWJlcyBhbmQgc3Vi dGxldHksIGNvdWxkIHlvdSBtYWtlIHlvdXIgcG9pbnQgDQpkaXJlY3RseSB3aXRob3V0IGFu eSBvZiB0aGlzIHZhZ3VlIHRhbGsgYWJvdXQgdmliZXMgJiBzdHVmZj8NCg0KSXQncyBqdXN0 IGNvZGUgYW5kIGNvZGUgZG9jdW1lbnRhdGlvbiwgdGhpcyBzdHVmZiBjYW4sIGFuZCBzaG91 bGQsIGJlIA0KZG9uZSB3aXRob3V0IHRoZSBlbW90aW9uIHN0dWZmIGFuZCB2YWd1ZW5lc3Mu ICBNb3JlIGV4cGxpY2l0bHksIHN0b3AgaXQgDQp3aXRoIHRoZSB2YWd1ZSB2aWJlIHRhbGss IHBsZWFzZS4NCg0KPiAgICAgID4NCj4gICAgICA+wqAgwqAgwqAgPiArUGF0dGVybnMgY2Fu IHJlcHJlc2VudCBhbnkgU2NoZW1lIG9iamVjdDogbGlzdHMsIHN0cmluZ3MsDQo+ICAgICBz eW1ib2xzLA0KPiAgICAgID7CoCDCoCDCoCA+ICtyZWNvcmRzLCBldGMuDQo+ICAgICAgPg0K PiAgICAgID7CoCDCoCDCoE1pc3NpbmcgZW5kLW9mLXNlbnRlbmNlIHBlcmlvZC4gVGhlIC4g aW4gJ2V0Yy4nIGlzIHBhcnQgb2YgdGhlDQo+ICAgICAgPsKgIMKgIMKgYWJicmV2aWF0aW9u ICdldGMuJywgbm90IGFuIGVuZC1vZi1zZW50ZW5jZSBtYXJrZXIuwqAgSSBrbm93IGl0J3MN Cj4gICAgICA+wqAgwqAgwqAnc3RhbmRhcmQnIEVuZ2xpc2ggKGZvciBzb21lIHZhbHVlIG9m ICdzdGFuZGFyZCcgaW4gRW5nbGlzaCkgdG8NCj4gICAgICA+wqAgwqAgwqBjb25mbGF0ZQ0K PiAgICAgID7CoCDCoCDCoGFsbCB0aGUgZG90cywgYnV0IHdlIGRvbid0IGhhdmUgdG8gZm9s bG93IHN0YW5kYXJkIHdoZW4gdGhleQ0KPiAgICAgYXJlIGJ1Z2d5Lg0KPiAgICAgID4NCj4g ICAgICA+wqAgwqAgwqAoVGhpcyBpcyBsaWtlIHRoZSBleGFtcGxlIGF0DQo+ICAgICAgPsKg IMKgIMKgPGh0dHBzOi8vY2F0Yi5vcmcvamFyZ29uL2h0bWwvd3JpdGluZy1zdHlsZS5odG1s DQo+ICAgICA8aHR0cHM6Ly9jYXRiLm9yZy9qYXJnb24vaHRtbC93cml0aW5nLXN0eWxlLmh0 bWw+DQo+ICAgICAgPsKgIMKgIMKgPGh0dHBzOi8vY2F0Yi5vcmcvamFyZ29uL2h0bWwvd3Jp dGluZy1zdHlsZS5odG1sDQo+ICAgICA8aHR0cHM6Ly9jYXRiLm9yZy9qYXJnb24vaHRtbC93 cml0aW5nLXN0eWxlLmh0bWw+Pj4gYWJvdXQgbm90IG1vdmluZyB0aGUNCj4gICAgICA+wqAg wqAgwqBlbmQtb2Ytc2VudGVuY2UgcGVyaW9kIGluc2lkZSBxdW90YXRpb24gbWFya3M6DQo+ ICAgICAgPg0KPiAgICAgID7CoCDCoCDCoCDCoCDCoCDCoFRoZW4gZGVsZXRlIGEgbGluZSBm cm9tIHRoZSBmaWxlIGJ5IHR5cGluZyDigJxkZOKAnS4NCj4gICAgICA+DQo+ICAgICAgPsKg IMKgIMKgIMKgIMKgIMKgVGhlbiBkZWxldGUgYSBsaW5lIGZyb20gdGhlIGZpbGUgYnkgdHlw aW5nIOKAnGRkLuKAnQ0KPiAgICAgID4NCj4gICAgICA+wqAgwqAgwqAtLSB3aGlsZSBpbiB0 aGlzIHBhcnRpY3VsYXIgY2FzZSAoaS5lLiwgJ2V0Yy4nKSB0aGUNCj4gICAgIGRpc3RpbmN0 aW9uIGlzDQo+ICAgICAgPsKgIMKgIMKgdW5pbXBvcnRhbnQsIGZvciBjb25zaXN0ZW5jeSB3 aXRoIG90aGVyIGNhc2VzIHdoZXJlIHRoZQ0KPiAgICAgZGlzdGluY3Rpb24gaXMNCj4gICAg ICA+wqAgwqAgwqBpbXBvcnRhbnQsIEkgd291bGQgZ28gZm9yICcuLi4sIHN5bWJvbHMsIHJl Y29yZHMsIGV0Yy4uJy4NCj4gDQo+IA0KPiBIdWg/DQoNCkkgdGhvdWdodCBJIG1hZGUgbXkg cG9pbnQgY2xlYXJseS4gR29pbmcgYnkgeW91ciAnSHVoPycgcmVzcG9uc2UsIGl0IA0KYXBw ZWFycyBJIHdhcyB1bnN1Y2Nlc3NmdWwuIFdoaWxlIHVuZm9ydHVuYXRlLCBpdCBpcyBhY2Nl cHRhYmxlIHRvIG5vdCANCnVuZGVyc3RhbmQgd2hhdCB0aGUgb3RoZXIgcGFydHkgaXMgdGFs a2luZyBhYm91dC4gSG93ZXZlciwganVzdCBzdGF0aW5nIA0KdGhhdCB5b3UgZG9uJ3QgdW5k ZXJzdGFuZCB3aXRob3V0IG1ha2luZyBhbnkgaW5kaWNhdGlvbiBvbiBfd2hhdF8gcGFydCAN Cm9mIGl0IHlvdSBkb24ndCB1bmRlcnN0YW5kLCBpcyBjb21wbGV0ZWx5IHVucHJvZHVjdGl2 ZS4NCg0KTW9yZSB0byB0aGUgcG9pbnQsIHlvdSB3aWxsIGhhdmUgdG8gZWxhYm9yYXRlIG9u IHdoYXQgcGFydCBvZiBteSANCmV4cGxhbmF0aW9uIHlvdSBhcmVuJ3QgZm9sbG93aW5nOyBJ J20gbm90IGEgbWluZCByZWFkZXIuDQoNCkFsdGVybmF0aXZlbHksIHBlcmhhcHMgdGhpcyBp cyB5b3Ugc2F5aW5nIHRoYXQgeW91IGRpc2FncmVlIHdpdGggd2hhdCBJIA0Kd3JvdGUsIGJ1 dCB0aGVuIHlvdSB3aWxsIGhhdmUgdG8gYmUgbW9yZSBleHBsaWNpdCBvbiB3aGF0IHBhcnRz IHlvdSANCmRpc2FncmVlIC0tIGFnYWluLCBub3QgYSBtaW5kIHJlYWRlci4NCg0KPiAgICAg ID4NCj4gICAgICA+DQo+ICAgICAgPiBJJ20gc29ycnkgYnV0IGFnYWluLCB0aGlzIGlzIHNp bXBseSBiYWQgc3R5bGUgYW5kIGluY29ycmVjdA0KPiAgICAgc3VnZ2VzdGlvbnMuDQo+ICAg ICAgPiBBY2NvcmRpbmcgdG8gdGhlIE1MQSwgdGhlIGF1dGhvcml0eSBvbiBFbmdsaXNoIHN0 eWxlOg0KPiANCj4gICAgIEl0IGFwcGVhcnMgdG8gYmUgX2FuXyBhdXRob3JpdHksIGJ1dCBj ZXJ0YWlubHkgbm90IF90aGVfIGF1dGhvcml0eS4NCj4gICAgIEkgYmVsaWV2ZSBpdCdzIGNv bW1vbiBrbm93bGVkZ2UgdGhlcmUgaXMgbm8gY2VudHJhbCBhdXRob3JpdHkgb24NCj4gICAg IEVuZ2xpc2guDQo+IA0KPiANCj4g8J+RjQ0KPiANCj4gDQo+ICAgICAgPiAiQSBzZW50ZW5j ZSBzaG91bGQgbmV2ZXIgaGF2ZSB0d28gcGVyaW9kcyBhdCB0aGUgZW5kLiBJZiBhDQo+ICAg ICBzZW50ZW5jZSBlbmRzDQo+ICAgICAgPiB3aXRoIGFuIGFiYnJldmlhdGlvbiBmb2xsb3dl ZCBieSBhIHBlcmlvZCwgZG8gbm90IGFkZCBhbg0KPiAgICAgYWRkaXRpb25hbCBwZXJpb2Q6 DQo+ICAgICAgPg0KPiAgICAgIMKgPg0KPiAgICAgID7CoCDCoCDCoFNoZSBleHBsYWluZWQg dGhlIHJ1bGVzIGZvciBwZXJpb2RzLCBjb21tYXMsIHNlbWljb2xvbnMsIGV0Yy4iDQo+ICAg ICAgPg0KPiAgICAgID4gVGhhdHMgTUxBJ3MgZXhhbXBsZSBvZiB0aGUgY29ycmVjdCB3YXkg b2YgaG93IHRvIGVuZCBhIHNlbnRlbmNlIHdpdGgNCj4gICAgICA+IHB1bmN0dWF0ZWQgYWJi cmV2aWF0aW9uLg0KPiANCj4gICAgIEl0IGFwcGVhcnMgeW91IGRpc2FncmVlIHRoYXQgZG90 cyBzaG91bGRuJ3QgYmUgbWVyZ2VkLCBidXQgeW91IGFyZW4ndA0KPiAgICAgZ2l2aW5nIGEg cHJvcGVyIGFyZ3VtZW50IGZvciB5b3VyIHBvc2l0aW9uIG9yIGEgY291bnRlci1hcmd1bWVu dCB0byBteQ0KPiAgICAgYXJndW1lbnQgLS0gd2l0aCB5b3VyIHJlZmVyZW5jZSB0byBNTEEs IHlvdSB3ZXJlIG1ha2luZyBhbiBhcHBlYWwgdG8NCj4gICAgIGF1dGhvcml0eSwgd2hpY2gg b24gaXRzIG93biBpcyBhbiBhcmd1bWVudCwgYnV0Og0KPiANCj4gDQo+IEl0cyByZWFsbHkg c2ltcGxlIGFjdHVhbGx5LCB3ZSdyZSB3b3JraW5nIG9uIHN0dWZmIG90aGVyIHBlb3BsZSBu ZWVkIHRvIA0KPiByZWFkIGFuZCB0aGVyZWZvcmUgc2hvdWxkbid0IGFkZCBub25zZW5zZSBh ZGhvYyBub3RhdGlvbiBsaWtlIGRkLi4NCg0KSSwgYW5kIHRoZSBzb3VyY2UgSSBxdW90ZWQs IHByZXZpb3VzbHkgZXhwbGFpbmVkIHdoYXQgdGhlIHR3byBkb3RzIGFyZSANCmZvciAtLSB3 aGlsZSBJIGRpZCBub3QgdXNlIHRoZSB0ZXJtICdub25zZW5zZScsIHRoZSBzb3VyY2UgYW5k IEkgZGlkIA0KZXhwbGFpbiBob3cgdGhlIGRvdHMgYXJlIHVzZWZ1bCBhbmQgc2Vuc2libGUg KGhlbmNlLCBub3Qgbm9uc2Vuc2UpLg0KDQpFdmVuIGlmIHlvdSBkaXNsaWtlIHRoZSBkdXBs aWNhdGlvbiBvZiB0aGUgZG90cyBtb3JlIHRoYW4gdGhlIGJlbmVmaXRzIA0KdGhlIGRvdHMg YnJpbmcsIHRoaXMgZG9lcyBub3QgbWFrZSB0aGUgZG90cyAnbm9uLXVuZGVyc3RhbmRhYmxl JyBvciANCidub25zZW5zZScuICBJIG1lYW4sIGV2ZW4gaWYgc29tZW9uZSB0aG91Z2h0IGl0 IHdhcyBhIGdyYW1tYXIgZXJyb3IgKG9yIA0KYSB0eXBvZ3JhcGh5IGVycm9yLCBpZiB5b3Ug YXJlIG9uZSBvZiB0aGUgcGVvcGxlIHRoYXQga2VlcCB0eXBvZ3JhcGh5IA0Kc2VwYXJhdGUg ZnJvbSBvdGhlciBncmFtbWFyKSwgZG91YmxlIGRvdHMgYXJlLCBpbiBmYWN0LCByZWFkYWJs ZS4NCg0KSSBtZWFuLCB5b3UgY2FuIHJlYWQgYW5kIHVuZGVyc3RhbmQgdGhlIGZvbGxvd2lu ZyBzZW50ZW5jZSwgcmlnaHQ/Og0KDQogICAiU2hlIGV4cGxhaW5lZCB0aGUgcnVsZXMgZm9y IHBlcmlvZHMsIGNvbW1hcywgc2VtaWNvbG9ucywgZXRjLi4iDQoNCllvdSBhcmUgYWdhaW4g anVzdCByZXBlYXRpbmcgeW91ciBjbGFpbSB0aGF0IHRoZSBkb3VibGUgcGVyaW9kcyBhcmUg DQpib2d1cyBpbnN0ZWFkIG9mIGFjdHVhbGx5IHByb3ZpZGluZyBuZXcgZXZpZGVuY2U7IGl0 J3MgYmVjb21pbmcgYW4gDQonYXJndW1lbnR1bSBhZCBpbmZpbml0dW0nLg0KDQpHb2luZyBi eSB5b3VyIG1lbnRpb24gb2YgYSBQaEQgd2l0aCBBbGFpbiBCYWRpb3UsIHlvdSBhcHBlYXIg dG8gaGF2ZSANCmRvbmUgc3R1ZGllcyBpbiBwaGlsb3NvcGh5LiAgV2hpbGUgSSdtIG5vdCBm YW1pbGlhciB3aXRoIHRoZSBleGFjdCANCmNvbXBvc2l0aW9uIG9mIHBoaWxvc29waHkgcHJv Z3JhbXMsIEkgd291bGQgYXNzdW1lIHlvdSBoYWQgYSBjb3Vyc2UgDQphYm91dCBsb2dpYyBh bmQgcHJvcGVyIGFyZ3VtZW50YXRpb24gc3RydWN0dXJlcywgcGxlYXNlIHVzZSBpdC4NCg0K PiAgICAgIMKgIMKgKiBJIGFscmVhZHkgYW50aWNpcGF0ZWQgdGhlIHBvdGVudGlhbCBhcmd1 bWVudDoNCj4gICAgICDCoCDCoCDigJhJIGtub3cgaXQncyAnc3RhbmRhcmQnIEVuZ2xpc2gg KGZvciBzb21lIHZhbHVlIG9mICdzdGFuZGFyZCcgaW4NCj4gICAgICDCoCDCoCDCoEVuZ2xp c2gpIHRvIGNvbmZsYXRlIGFsbCB0aGUgZG90cywgYnV0IC4uLuKAmS4NCj4gDQo+ICAgICAg wqAgwqAgwqAoSW4gdGhpcyBjYXNlLCAnc3RhbmRhcmQnID0gJ01MQScsIHRob3VnaCBpdCB3 b3VsZCBhcHBseSB0bw0KPiAgICAgIMKgIMKgIMKgbWFueSBvdGhlciBhdXRob3JpdGllcyB0 b28uKQ0KPiANCj4gICAgICDCoCDCoCDCoC0tIHlvdSBhcmVuJ3Qgc2F5aW5nIGFueXRoaW5n IG5ldyBoZXJlLg0KPiANCj4gDQo+IE5vLCBJJ20gbm90LCA+IEknbSBiZWluZyB0b3RhbGx5 IGJvcmluZyBhbmQgbm9ybWFsIGluIHRoaXMgcmVnYXJkDQoNCk9rLCB0aG91Z2ggSSBkb24n dCBjYXJlIGFib3V0ICdib3JpbmcnIGFuZCAnbm9ybWFsaXR5Jy4gIE5vcm1hbGl0eSBpcyAN Cm92ZXJyYXRlZC4NCg0KPiBiZWNhdXNlIA0KPiBjb2xsZWN0aXZlbHkgYXV0aG9yZWQgZG9j dW1lbnRhdGlvbiBpcyBzb21ldGhpbmcgeW91IHNob3VsZCBuZXZlciBhZG9wdCANCj4gbm9u LXN0YW5kYXJkIHdyaXRpbmcgbm90YXRpb24gaW4gdGhlIGNvdXJzZSBvZiBhdXRob3Jpbmcs DQoNCkZpbmFsbHksIHlvdSBub3cgZ2l2ZSBhbiBhY3R1YWwgbmV3IGFyZ3VtZW50IHRoYXQg aXNuJ3QgYSBmYWxsYWN5Lg0KV2hpbGUgdGhlICduZXZlcicgc2VlbXMgdG9vIHN0cm9uZyB0 byBtZSAoSSBkaWQgcHJvcG9zZSBhZG9wdGluZyBhIA0Kbm9uLXN0YW5kYXJkIG5vdGF0aW9u IGFmdGVyIGFsbCAuLi4pLCB0aGlzIGlzIGFjdHVhbGx5IGEgdmFsaWQgYXJndW1lbnQhIA0K WW91IGNvdWxkIGhhdmUgbWFkZSB0aGlzIGFyZ3VtZW50IGF0IHRoZSBiZWdpbm5pbmcgaW5z dGVhZCBvZiBrZWVwaW5nIA0KaGFtbWVyaW5nIG9uIGF1dGhvcml0eSBhbmQgc3RhdGluZyBt eSBwb3NpdGlvbiB3YXMganVzdCBub25zZW5zZS4NCg0KPiBqdXN0IHRvIG9uZSB1cCBzb21l b25lIG9uIGEgbWFpbGluZyBsaXN0Lg0KDQpBZ3JlZWQuICBZb3UgYXJlIGFsc28gYXNzdW1p bmcgdGhpbmdzIHRoYXQgYXJlbid0IHRydWUgaGVyZS4gIEkgZGlkbid0IA0KZG8gdGhpbmdz ICd0byBvbmUgdXAgc29tZW9uZScuICBBbHNvLCBpdCBiZWluZyBvbiBhIG1haWxpbmcgbGlz dCBpcyANCmlycmVsZXZhbnQuDQoNCj4gVG8gYmUgaG9uZXN0LCBpdCdzIHRoaXMga2luZCBv ZiBhdHRpdHVkZSB0aGF0IGhhcyByZXN1bHRlZCBpbiB0aGUgDQo+IGN1cnJlbnQgZG9jcyB0 aGF0IHNvIG1hbnkgcGVvcGxlIGZpbmQgdXR0ZXJseSBpbmNvbXByZWhlbnNpYmxlLiBUaGUg Y29yZSANCj4gcG9pbnQgb2YgbXkgdGFsayB0aGF0IHdoYXQgbWFrZXMgSW5mbyBHdWlsZSBz byBoYXJkIHRvIHJlYWQgaXMgdGhlIGxhY2sgDQo+IG9mIHN0eWxpc3RpYyBjb25zaXN0ZW5j eS4gRWRpdG9ycyBhbmQgZWRpdGluZyBleGlzdCBmb3IgYSB2ZXJ5IGdvb2QgcmVhc29uLg0K DQpJZiAndGhpcyBraW5kIG9mIGF0dGl0dWRlJyA9ICdvbmUtdXBwaW5nJyAtLSBub3QgcmVs ZXZhbnQgaGVyZSwgc2VlIA0KcHJldmlvdXMgcmVzcG9uc2UuDQoNCklmICd0aGlzIGtpbmQg b2YgYXR0aXR1ZGUnID0gJ2Fkb3B0aW5nIG5vbi1zdGFuZGFyZCBub3RhdGlvbic6IGFkb3B0 aW5nIA0Kbm9uLXN0YW5kYXJkIG5vdGF0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCBzdHlsaXN0 aWMgY29uc2lzdGVuY3kgYW5kIA0KZWRpdG9ycyAtLSBpZiB5b3UgZG8gdGhlICJkb24ndCBt ZXJnZSB0aGUgZG90cyIgY29uc2lzdGVudGx5IHRocm91Z2hvdXQgDQphbGwgdGhlIGRvY3Vt ZW50YXRpb24sIHRoZSByZXN1bHQgd2lsbCBiZSwgd2VsbCwgc3R5bGlzdGljYWxseSBjb25z aXN0ZW50Lg0KDQo+IEknbSBqdXN0IHNheWluZyBiZSBzaG91bGQgdXNlIHNlbnNpYmxlIHN0 YW5kYXJkIHB1bmN0dWF0aW9uLA0KDQonVXNlIHNlbnNpYmxlIHB1bmN0dWF0aW9uJyBzb3Vu ZHMgc2Vuc2libGUgdG8gbWUsIHRoYXQncyB3aHkgSSBwcm9wb3NlZCANCmNoYW5naW5nIHRo ZSBJTU8gbm9uc2Vuc2ljYWwgc3RhbmRhcmQgIm1lcmdlIHRoZSBkb3RzIiB3aXRoIHRoZSBz ZW5zaWNhbCANCm5vbi1zdGFuZGFyZCAiZG9uJ3QgbWVyZ2UgZG90cyIuDQoNCkkgZ2F2ZSBh biBhcmd1bWVudCBmb3Igd2h5IHRoZSBzdGFuZGFyZCBpcyBub25zZW5zaWJsZSBhbmQgd2h5 IHRoZSANCm5vbnN0YW5kYXJkIGlzIHNlbnNpYmxlOyBJJ20gc3RpbGwgd2FpdGluZyBmb3Ig eW91ciBhcmd1bWVudCBvbiB0aGUgDQpvcHBvc2l0ZS4gIChTZW5zaWJsZSBpcyBub3QgYWx3 YXlzIHN0YW5kYXJkLCBhbmQgY29udmVyc2VseS4pDQoNCkkgYWxyZWFkeSByZWFkIHlvdXIg Y2xhaW0gcGxlbnR5IG9mIHRpbWVzIGFuZCBpbiBkaWZmZXJlbnQgZm9ybXMsIHlvdXIgDQpw b3NpdGlvbiBpcyBxdWl0ZSBjbGVhciB0byBtZSwgSSdtIGp1c3Qgd2FpdGluZyBmb3IgYW55 IGFjdHVhbCANCl9hcmd1bWVudHNfIGZvciB5b3VyIHBvc2l0aW9uLiAgQWdhaW4sIHBsZWFz ZSB1c2UgeW91ciBwaGlsb3NvcGh5IGVkdWNhdGlvbi4NCg0KPiBbLi4uXSB3aGVuIA0KPiBz b21lb25lIHNheXMgImkgd2FudCB0byB1c2UgdGhpcyB0aGF0IHdvdWxkDQoNClRoaXMgc2Vu dGVuY2UgaXMgdW5wYXJzYWJsZSwgeW91J2xsIG5lZWQgdG8gcmV0cmFuc21pdCBpdC4NCg0K PiANCj4gICAgICDCoCDCoCogSSBhbHNvIGFscmVhZHkgcmVmdXRlZCBpdCAo4oCYYnV0IC4u LiBUaGlzIGlzIGxpa2UgdGhlIGV4YW1wbGUgYXQNCj4gICAgICDCoCDCoCDCoC4uLuKAmSwg d2l0aCBhIGxpbmsgdG8gYSBkb2N1bWVudCB0aGF0IGV4cGxhaW5zIGluIHNvbWUgZGV0YWls IHRoZQ0KPiAgICAgIMKgIMKgIMKgcmVhc29uaW5nIGJlaGluZCBpdC4pDQo+IA0KPiANCj4g V2h5PyBXaG8gZG9lcyBpdCBldmVuIGJlbmVmaXQgZXhjZXB0IHlvdT8gWW91IGdpdmUgbm8g cmVhc29ucyBmb3IgYW55IG9mIA0KPiB0aGVzZSBiaXphcnJlIGdyaXBzIHlvdSBob3BlIHRv IGtlZXAgdGhlIGRvY3VtZW50YXRpb24gbG9ja2VkIGluLCBiZXlvbmQgDQo+IHRoZSBmYWN0 IHRoYXQgaXRzIGhvdyB1IGRvIGl0Lg0KDQpJIGFscmVhZHkgZ2F2ZSBhIHJlYXNvbiBmb3Ig dGhpcyBjaGFuZ2U7IGl0J3MgZXZlbiAoaW4gYWJicmV2aWF0ZWQgZm9ybSkgDQppbiB0aGUg cGFyYWdyYXBoIHlvdSBqdXN0IHF1b3RlZDog4oCYYnV0IC4uLiBUaGlzIGlzIGxpa2UgdGhl IGV4YW1wbGUgYXQgDQp3aXRoIGEgbGluayB0byBhIGRvY3VtZW50IHRoYXQgZXhwbGFpbnMg aW4gc29tZSBkZXRhaWwgdGhlIHJlYXNvbmluZyANCmJlaGluZCBpdC7igJkuDQoNCkkgZG8g bm90IGFwcHJlY2lhdGUgeW91ciBjbGFpbSB0aGF0IEkgZ2F2ZSBubyByZWFzb25zIHdoZW4g SSBsaXRlcmFsbHkgDQpnYXZlLCBlciwgcmVhc29uczsgZXNwZWNpYWxseSB3aGVuIGFzIGV2 aWRlbmNlIHRoYXQgSSBzdXBwb3NlZGx5IGdhdmUgbm8gDQpyZWFzb25zLCB5b3UgcXVvdGUg YSBwYXJhZ3JhcGggd2hlcmUgSSBqdXN0IGdhdmUgdGhlIHJlYXNvbiEgIFlvdXIgDQonZXZp ZGVuY2UnIGFjdHVhbGx5IGRpc3Byb3ZlcyB5b3VyIGNsYWltLiAgQWdhaW4sIHBsZWFzZSB1 c2Ugd2hhdGV2ZXIgDQpsb2dpYyBhbmQgYXJndW1lbnRhdGlvbiBjb3Vyc2UgeW91IGhhdmUg aGFkOyB5b3UgYXJlIGRlY3JlYXNpbmcgbXkgDQpyZXNwZWN0IGZvciBhY2FkZW1pYyBwaGls b3NvcGh5Lg0KDQpNb3JlIGV4cGxpY2l0bHksIHRoZSBjaGFuZ2UgaXMgdG8gYmVuZWZpdCBy ZWFkZXIgY29tcHJlaGVuc2lvbi4gIFRoaXMgaXMgDQpleHBsYWluZWQgaW4gdGhlIHNvdXJj ZSBJIHF1b3RlZC4gIFBsZWFzZSByZWFkIGl0LCBpbnN0ZWFkIG9mIGFzc3VtaW5nIA0KdGhh dCB0aGUgY2hhbmdlcyBJIHByb3Bvc2UgYXJlIG9idmlvdXNseSBzb21lIG1hbGljaW91cyBw bG90ICgqKSwgYW5kIGRvIA0Kbm90IGNsYWltIEkgZ2F2ZSBubyByZWFzb24uIExpa2V3aXNl LCBpZiB5b3UgZGlkbid0IGRpZCBhY3R1YWxseSByZWFkIGl0IA0KYnV0IGRpZG4ndCBnZXQg dGhlIHBvaW50LCB5b3UgY291bGQganVzdCBhc2sgZm9yIGVsYWJvcmF0aW9uIGluc3RlYWQg b2YgDQp0YWxraW5nIGFib3V0IG1hbGljaW91cyBwbG90cyAoKikuDQoNCigqKSBXaGlsZSB5 b3UgZGlkIG5vdCB1c2UgdGhlIHdvcmRzICdtYWxpY2lvdXMgcGxvdCcsIHlvdXIgcGFyYWdy YXBoIA0KcHJldHR5IG11Y2ggY2xhaW1lZCBJIHBlcmZvcm1lZCBhIHNwZWNpZmljIGtpbmQg b2YgbWFsaWNpb3VzIHBsb3QuDQoNCkFsc28sIHRoZSAnYml6YXJyZSBncmlwcyB5b3UgaG9w ZSB0byBrZWVwIHRoZSBkb2N1bWVudGF0aW9uIGxvY2tlZCBpbicgDQppcyBpbmNvcnJlY3Qu IEl0IG5lZWRzIHRvIGJlIHJlcGxhY2VkIGJ5ICd1bmNvbnZlbnRpb25hbCBwcm9wb3NhbHMg Zm9yIA0KaW1wcm92aW5nIHRoZSBkb2N1bWVudGF0aW9uJy4gKFBlcmhhcHMgdGhlIHByb3Bv c2FscyBhcmUgd3JvbmcsIG9yIHRoZSANCmNvbmNlcm5zIGluIHRoZSByYXRpb25hbGUgb2Yg dGhlIHByb3Bvc2FsIGFyZSBleGNlc3NpdmU7IHRvIGJlIA0KYWJzb2x1dGVseSBjbGVhciBJ J20gbm90IHN0YXRpbmcgeW91IGFyZSByZXF1aXJlZCB0byBiZWxpZXZlIHRoZSANCnByb3Bv c2FscyBhcmUgY29ycmVjdC4pDQoNCj4gDQo+ICAgICAgwqAgwqAqIFlvdSBjYW4ndCBjb3Vu dGVyIGFuIGFyZ3VtZW50IGJ5IGF1dGhvcml0eSAoaW4gbXkgY2FzZSwgdGhlDQo+ICAgICAg wqAgwqAgwqBKYXJnb24gZmlsZSkgYnkgYW5vdGhlciBhcmd1bWVudCBieSBhdXRob3JpdHkg KGluIHlvdXIgY2FzZSwNCj4gICAgICDCoCDCoCDCoHRoZSBNTEEpLsKgIEluc3RlYWQgeW91 IG5lZWQgdG8gYXJndWUgd2hpY2ggb25lIG9mIHRoZSBhdXRob3JpdGllcw0KPiAgICAgIMKg IMKgIMKgaXMgcmlnaHQgb3Igd3JvbmcgLS0gdGhlIGZyYWdtZW50IG9mIHRoZSBKYXJnb24g ZmlsZSBJIHJlZmVycmVkDQo+ICAgICAgwqAgwqAgwqB0byBnaXZlcyBzb21lIGV4cGxhbmF0 aW9uLCB3aGVyZWFzIHlvdXIgcXVvdGUgb2YgdGhlIE1MQSBqdXN0DQo+ICAgICAgwqAgwqAg wqBzdGF0ZXMgdGhpbmdzIHdpdGhvdXQgZXhwbGFpbmluZyBhIHRoaW5nLCBzbyB0aGUgSmFy Z29uIGZpbGUNCj4gICAgICDCoCDCoCDCoCd3aW5zJyBieSBkZWZhdWx0Lg0KPiANCj4gDQo+ IE1lLiBJJ20gY29ycmVjdC4gSSBkaWQgUGhEIHVuZGVyIHRoZSBzdXBlcnZpc2lvbsKgIG9m IEFsYWluIEJhZGlvdSBmb3IgDQo+IENocmlzdCdzIHNha2VzLiBJIHVzZWQgdG8gdGVhY2gg YW5kIGdyYWRlIHBhcGVycy4gSSd2ZSBwdWJsaXNoZWQgaW4gDQo+IGludGVybmF0aW9uYWwg am91cm5hbHMuIFdlIGRvbid0IG5lZWQgdG8gYmUgc3RyaWN0IGJ1dCBjbW9uIG1hbiB0aGlz IA0KPiBkb2Vzbid0IGV2ZW4gbWFrZSBhbnkgc2Vuc2UuDQoNCkFnYWluLCB5b3UgY2FuJ3Qg Y291bnRlciBhbiBhcmd1bWVudCBieSBhdXRob3JpdHkgYnkgYW5vdGhlciBhcmd1bWVudCBi eSANCmF1dGhvcml0eS4gWW91IG5lZWQgdG8gZ2l2ZSBfYWN0dWFsIGFyZ3VtZW50c18uICBH aXZlbiB5b3VyIGxhY2tsdXN0ZXIgDQphcmd1bWVudGF0aW9uIHNvIGZhciwgeW91ciBjbGFp bWVkIGF1dGhvcml0eSBpcyBjb21wbGV0ZWx5IHVuY29udmluY2luZyANCnRvIG1lLiAgSW5z dGVhZCwgZ2l2ZW4geW91ciBsYWNrbHVzdGVyIGFyZ3VtZW50YXRpb24gb24gZ3VpbGUtZGV2 ZWwsIGJ5IA0KaW52b2tpbmcgYXV0aG9yaXR5IChQaEQsIEFsYWluIEJhZGlvdXMsIHRlYWNo aW5nLCBwdWJsaXNoaW5nIGluIA0KaW50ZXJuYXRpb25hbCBqb3VybmFscyksIHlvdSBhcmVu J3QgcmFpc2luZyBteSBvcGluaW9uIG9mIHlvdXIgDQphcmd1bWVudGF0aW9uICgqKSwgYnV0 IHJhdGhlciB5b3UgYXJlIGxvd2VyaW5nIG15IG9waW5pb24gb24gdGhlIFBoRCANCnN5c3Rl bSwgQWxhaW4gQmFkaW91cywgeW91ciBpbnN0aXR1dGlvbiwgaW50ZXJuYXRpb25hbCBqb3Vy bmFscyBhYm91dCANCnBoaWxvc29waHkgYW5kIHRoZSBhY2FkZW1pYyBmaWVsZCBvZiBwaGls b3NvcGh5Lg0KDQooKikgTW9yZSBwcmVjaXNlbHksIHRoZSBsYWNrIHRoZXJlb2YuDQoNCllv dSBhcmUgbm90IHJlcXVpcmVkIHRvIGJlIGltbWVkaWF0ZWx5IDEwMCUgY29tcGV0ZW50IGF0 IHRoaW5nczsgaXQgaXMgDQpmaW5lIHRvIGxlYXJuIG92ZXIgdGltZSwgYnV0IHlvdXIgaW5z aXN0ZW5jZSBvbiAnSSdtIHJpZ2h0IGJlY2F1c2UgDQphdXRob3JpdHkgZXZlbiB3aGVuIEkg cmVjZWl2ZSBldmlkZW5jZSB0aGF0IHRoZSBhdXRob3JpdHkgaXMgd3JvbmcnIA0KaXNuJ3Qg ZG9pbmcgeW91IGFueSBmYXZvdXJzIC0tIHJldmlzaW5nIGNvbW1vbiBjb25zZW5zdXMgYmVj YXVzZSBvZiBuZXcgDQpldmlkZW5jZSBpcyBiYXNpYyBzY2llbmNlIHN0dWZmOyBhdXRob3Jp dHkgaXMgaXJyZWxldmFudCAoZXhjZXB0IGZvciBsYXcgDQpzdHVmZiwgYnV0IHRoYXQncyBu b3QgdGhlIGNhc2UgaGVyZSkuDQoNClRvIGJlIDEwMCUgZXhwbGljaXQsIGFzIHlvdSBrZWVw IGdvaW5nIG9uIGFib3V0IGF1dGhvcml0eSAtLSB3aGVuIA0Kc29tZW9uZSBzZW5kcyBhIHBh dGNoIG9uIHRoZSBtYWlsaW5nIGxpc3QsIEkgZG8gbm90IGNhcmUgYWJvdXQgDQphdXRob3Jp dHkuICBJIGRvbid0IGNhcmUgd2hhdCBhY2NyZWRpdGF0aW9ucyB0aGV5IGhhdmUgb2J0YWlu ZWQuDQpJIGRvIG5vdCBjYXJlIGFib3V0IHRoZWlyIHRpdGxlcyAoYmFjaGVsb3IsIG1hc3Rl ciwgUGhELCBwcm9mZXNzb3IsIA0KcmVjdG9yLCB3aGF0ZXZlcikuICBJIGRvIG5vdCBjYXJl IHdoYXQgc3VwZXJ2aXNvcnMgdGhleSBoYXZlIGhhZC4gIEkgZG8gDQpub3QgY2FyZSBpZiB0 aGV5IHB1Ymxpc2hlZCBhbnkgcGFwZXJzLiAgSSBkbyBub3QgY2FyZSB3aGF0IHBlb3BsZSB0 aGV5IA0KaGF2ZSBtZXQuICBJIGRvIG5vdCBjYXJlIGhvdyBtdWNoIGxpZmUgZXhwZXJpZW5j ZSB0aGV5IGhhdmUgaGFkIG9yIHRoZWlyIA0KYWdlIC0tIGlmIGEgYmFieSB3cml0ZXMgYSBn b29kIHBhdGNoLCBJIHdvdWxkIGFjY2VwdCB0aGF0IHBhdGNoLCBpZiBzb21lIA0Kb2xkIHdp c2UgYW5kIGV4cGVyaWVuY2VkIHBlcnNvbiB3cml0ZXMgbm9uc2Vuc2UsIHRoZWlyIG5vbnNl bnNlIHdvdWxkIGJlIA0KcmVqZWN0ZWQuICBJIGRvIG5vdCBjYXJlIGFib3V0IHRoZWlyIHBv c2l0aW9ucyAtLSB0aGUgQ2hpZWYgR05VaXNhbmNlIA0KYW5kIHRoZSBHdWlsZSBtYWludGFp bmVycyB3b3VsZCBub3Qgb2J0YWluIGFueSBleGNlcHRpb25zIGJ5IHRoZWlyIA0KcG9zaXRp b25zLiAgSSBhbHNvIGRvbid0IGNhcmUgYWJvdXQgJ0NocmlzdCdzIHNha2UnLg0KDQpJbiBz aG9ydCwgSSBkbyBub3QgY2FyZSBhYm91dCBhbnkgc3VjaCB0aGluZywgYmVjYXVzZSB0aGV5 IGFyZSANCnVsdGltYXRlbHkgaXJyZWxldmFudCAtLSBpdCBpcyBub3QgdGhlIHBvc2l0aW9u IG9yIGRpcGxvbWEgdGhhdCBtYXR0ZXJzLCANCmJ1dCByYXRoZXIgdGhlIGtub3dsZWRnZSBh bmQgc2tpbGxzIHRoYXQgc29tZW9uZSBpbiBhIHBvc2l0aW9uIG9yIGluIA0KcG9zc2Vzc2lv biBvZiBhIGRpcGxvbWEgaXMgc3VwcG9zZWQgdG8gaGF2ZS4gIEEgcG9zaXRpb24sIGRpcGxv bWEsIFBoRCANCnRpdGxlLCBldGMuLCBpcyBhIHNpZ24gb2Yga25vd2xlZGdlIGFuZCBza2ls bCwgYnV0IGRvZXMgbm90IGltcGx5IA0Ka25vd2xlZGdlIG9yIHNraWxscywgYW5kIGtub3ds ZWRnZSBhbmQgc2tpbGxzIGNhbiBiZSBvYnRhaW5lZCB3aXRob3V0IA0KY29ycmVzcG9uZGlu ZyBwb3NpdGlvbnMgb3IgdGl0bGVzLg0KDQpXaGF0IEkgY2FyZSBhYm91dCwgaXMgZ29vZCBw YXRjaGVzIGFuZCBjbGVhciBjb21tdW5pY2F0aW9ucywgYW5kIHRoYXQncyANCmFib3V0IGl0 Lg0KDQo+ICAgICBZb3UgY291bGQgaW5zdGVhZCBxdW90ZSBhIHBhcnQgb2YgdGhlIE1MQSBz dHlsZSBndWlkZSB0aGF0IGFjdHVhbGx5DQo+ICAgICBleHBsYWlucyDigJh3aHkgbWVyZ2lu ZyBwZXJpb2RzIGlzIGdvb2TigJkgKEkgZG91YnQgc3VjaCBhbiBleHBsYW5hdGlvbiBpbg0K PiAgICAgdGhlIE1MQSBzdHlsZSBndWlkZSBhY3R1YWxseSBleGlzdHMgYnV0IEkgY291bGQg YmUgcGxlYXNhbnRseQ0KPiAgICAgc3VycHJpc2VkKSwgb3Igc2F5IHNvbWV0aGluZyBsaWtl ICdXaGlsZSBpbiBzb21lIHJhcmUgc2l0dWF0aW9ucywNCj4gICAgIHBvdGVudGlhbCBjb25m dXNpb24gbWlnaHQgZXhpc3QsIEkgc3RpbGwgcHJlZmVyIG1lcmdpbmcgcGVyaW9kcywgYW5k IGluDQo+ICAgICBtYXR0ZXJzIG9mIHRhc3RlIHRoZXJlIGNhbiBiZSBubyBkaXNwdXRlcy4n LCBidXQgbm90IHRoaXMuDQo+IA0KPiANCj4gTm8sIGF0IE1MQSBvciBhbnl3aGVyZSBldmVy IHNhaWQgbWVyZ2VkIHBlcmlvZHMgYXJlIGdvb2QgYmVjYXVzZSBtZXJnZWQgDQo+IHBlcmlv ZHMgYXJlbid0IGEgcmVhbCB0aGluZy4gSSBqdXN0IGdvb2dsZWQgaXQuDQoNCihUaGF0IHNl bnRlbmNlIGlzIHVuZ3JhbW1hdGljYWwsIHNvIEkgbWlnaHQgaGF2ZSBtaXNpbnRlcnByZXRl ZCBpdCBiZWxvdy4pDQoNCllvdSBzdGF0ZSB0aGUgTUxBIGFuZCBhbnl0aGluZyBlbHNlIHNh eXMgdGhhdCBtZXJnZWQgcGVyaW9kcyBhcmVuJ3QgYSANCnJlYWwgdGhpbmcgYmVjYXVzZSBt ZXJnZWQgcGVyaW9kcyBhcmVuJ3QgYSByZWFsIHRoaW5nLg0KDQpUaGlzIGNvbnRyYWRpY3Rz IHlvdXIgZXhhbXBsZSBleHRyYWN0ZWQgZnJvbSB0aGUgTUxBLCB3aGljaCBzdGF0ZXMgdGhh dCANCnBlcmlvZHMgc2hvdWxkIGJlIG1lcmdlZCAobm90IGluIHRob3NlIHdvcmRzLCBidXQg c3RpbGwpLCBzbyAnbWVyZ2VkIA0KcGVyaW9kcycgYXBwZWFyIHRvIHJlYWxseSBleGlzdCBp biBwcmFjdGljZSAoZXZlbiBpZiBub3Qgd2hhdCBJJ2QgDQpyZWNvbW1lbmQsIG1lcmdlZCBw ZXJpb2RzIGRlZmluaXRlbHkgZXhpc3QuIEV4YW1wbGU6ICJFYXQgZnJ1aXQsIHN1Z2FyLCAN CmV0Yy4iKS4NCg0KQXMgc3VjaCwgSSBhc3N1bWUgeW91IG1lYW50Og0KDQrigJhOb2JvZHkg YXQgTUxBLCBvciBhbnkgb3RoZXIgc3R5bGUgZ3VpZGUsIGV2ZXIgc2FpZCB0aGF0IG1lcmdp bmcgcGVyaW9kcyANCmlzIGdvb2QsIGJlY2F1c2UgdW5tZXJnZWQgcGVyaW9kcyBhcmVuJ3Qg YSByZWFsIHRoaW5nLuKAmQ0KDQpUaGlzIGlzIGZhbHNlLCBiZWNhdXNlOiB1bm1lcmdlZCBw ZXJpb2RzIF9hcmVfIGEgcmVhbCB0aGluZy4gIEhlcmUncyBhbiANCmV4YW1wbGU6DQoNCiAg ICAiU2hlIGV4cGxhaW5lZCB0aGUgcnVsZXMgZm9yIHBlcmlvZHMsIGNvbW1hcywgc2VtaWNv bG9ucywgZXRjLi4iDQoNCkFyZSB5b3UgZGVueWluZyB0aGF0IEkgd3JvdGUgdHdvIHBlcmlv ZHMgbmV4dCB0byBlYWNoIG90aGVyLCBhbmQgaGVuY2UgDQpkZW55aW5nIHRoYXQgdW5tZXJn ZWQgcGVyaW9kcyBleGlzdCAtLSBpbiBvdGhlciB3b3JkcywgdGhhdCB1bm1lcmdlZCANCnBl cmlvZHMgYXJlbid0IGEgcmVhbCB0aGluZz8gIEFyZSB5b3UgZGVueWluZyB0aGF0IHVubWVy Z2VkIHBlcmlvZHMgDQpleGlzdCBpbiB0aGUgc291cmNlIEkgZ2F2ZSB5b3U/DQoNCkkgc3Vw cG9zZSB5b3UgY291bGQgZGVueSB0aGF0LCBidXQgeW91J2QgbmVlZCBzb21lICJyZWFsaXR5 IGlzIGZha2UgDQpiZWNhdXNlIGl0J3MgYSBzaW11bGF0aW9uIiBwaGlsb3NvcGh5IG9yICd5 b3VyIGUtbWFpbCBhbmQgdGhhdCBzaXRlIHdhcyANCmhhY2tlZDsgc29tZW9uZSBlZGl0ZWQg dGhhdCBwYWdlIGFuZCB0aGUgZS1tYWlsIHRvIG1lcmdlIHRoZSBkb3RzJyAgZm9yIA0KdGhh dCwgYW5kIHRoZSBmb3JtZXIgc2l0dWF0aW9uIGlzIGlycmVsZXZhbnQgdG8gR3VpbGUgZGV2 ZWxvcG1lbnQgYW5kIA0KdGhlIGxhdHRlciBzaXR1YXRpb24gaXMgbm90IHNvbWV0aGluZyBJ IGNhbiBoZWxwIHlvdSB3aXRoLg0KDQo+IEdvb2RuaWdodCwgc29ycnkgYnV0IEknZCBsaWtl IHRvIGFzayB5b3UgcmVmcmFpbiBmcm9tIHJldmlld2luZyBteSANCj4gcGF0Y2hlcyBpbiB0 aGUgZnV0dXJlLCBJIGRvbnQgaGF2ZSB0aGUgdGltZSB0byBkZWFsIHdpdGggdGhpcyBub25z ZW5zZS4NCg0KSSBhZ2FpbiBjbGFpbSB0aGF0IG5vdGhpbmcgSSBzYWlkIGhhcyBiZWVuIG5v bnNlbnNlIC0tIG1heWJlIHBvc2l0aW9ucyANCnlvdSBkaXNhZ3JlZWQgd2l0aCwgbWF5YmUg dWx0aW1hdGVseSB3aGF0IEkgY2xhaW1lZCB3YXMgd3JvbmcsIGJ1dCBhbGwgDQp0aGlzICdu b25zZW5zZScgeW91IHNwZWFrIG9mIGhhcyBhbiBleHBsYW5hdGlvbiwgYW5kIGhlbmNlIGlz bid0IA0KJ25vbnNlbnNlJyBhbmQgaXMgYXQgd29yc3QgbWVyZWx5IGluY29ycmVjdC4NCg0K QWxzbywgSSBoYXZlIGxpa2V3aXNlLWlzaCBzZW50aW1lbnQgLS0gSSBkbyBub3Qgd2FudCB0 byBkZWFsIHdpdGggeW91ciANCididXQgYXV0aG9yaXR5OyB5b3VyIHJlbGV2YW50IGV2aWRl bmNlIGlzIGJvZ3VzIGJlY2F1c2UgaXQgY29udHJhZGljdHMgDQphdXRob3JpdHknIG5vbnNl bnNlLg0KDQpOby4gIFlvdSBkb24ndCBnZXQgdG8gb3B0LW91dCBvZiBwYXRjaCByZXZpZXcu ICBOb2JvZHkgZ2V0cyBhbiBleGNlcHRpb24gDQpvbiBwYXRjaCByZXZpZXcuICBUaGF0IHdv dWxkIGRlZmVhdCB0aGUgcG9pbnQgb2YgcGF0Y2ggcmV2aWV3Lg0KDQogICAqIERpc2FncmVl aW5nIHdpdGggYSBwYXRjaCByZXZpZXcgaXMgZmluZTsganVzdCBkb24ndCByZXNvcnQgdG8N CiAgICAgcGVyc29uYWwgYXR0YWNrcyBhbmQgc3VjaCwgYW5kIHRyeSB0byBhcnRpY3VsYXRl IHlvdXIgcG9zaXRpb24NCiAgICAgYW5kIHJlYXNvbmluZyBjbGVhcmx5LiAgSW4gcGFydGlj dWxhciwgZG9uJ3QgZ28gaW5zaW51YXRpbmcgdGhhdA0KICAgICB0aGF0IHRoZSByZXZpZXdl ciBpcyBkb2luZyBzb21lIG1hbGljaW91cyBnYXRla2VlcGluZyB0cm9sbGluZyBwbG90LA0K ICAgICBhbmQgZG9uJ3QgY29tbWl0IGZhbGxhY2llcyBsaWtlICdhdXRob3JpdHkgYXV0aG9y aXR5IGF1dGhvcml0eSEnLg0KDQogICAgIFdoZXRoZXIgeW91ciBwYXRjaCB0aGF0IGRvZXMg bm90IGltcGxlbWVudA0KICAgICBzb21lIG9mIHRoZSBwcm9wb3NlZCBjaGFuZ2VzLCBpcyBh Y3R1YWxseSBtZXJnZWQgd2l0aG91dCB0aG9zZQ0KICAgICBjaGFuZ2VzLCB3aWxsIGJlIHVw IHRvIHRoZSBtYWludGFpbmVycy4NCg0KICAgKiBKdXN0IHNlbmRpbmcgcGF0Y2hlcyBhbmQg aWdub3JpbmcgYWxsIHBhdGNoIHJldmlldyBpcyAuLi4NCiAgICAgc3Vib3B0aW1hbCwgYnV0 IGFjY2VwdGFibGUgYXMgbG9uZyBhcyB5b3UgZG8gbm90IGluc2lzdCBvbiB0aGVtDQogICAg IGFjdHVhbGx5IGJlaW5nIG1lcmdlZCBpbiB0aGVpciB1bmVkaXRlZCBzdGF0ZTsgY29udHJp YnV0aW9ucyBhcmUNCiAgICAgY29udHJpYnV0aW9ucy4NCg0KICAgKiBJZiBmb3Igd2hhdGV2 ZXIgcmVhc29uIHlvdSBjYW4ndCBzdGFuZCBhIGNlcnRhaW4gcmV2aWV3ZXIsIEkgc3VwcG9z ZQ0KICAgICB5b3UgY291bGQgaWdub3JlIHRoZW0uIEhvd2V2ZXIsIEF0IHRoZSBzYW1lIHRp bWUsIHRoZSByZXZpZXdlciBtaWdodA0KICAgICBoYXZlIHNvbWUgaW1wb3J0YW50IHBvaW50 cywgc28gaXQncyBxdWl0ZSBsaWtlbHkgdGhhdCB0aGUgR3VpbGUNCiAgICAgbWFpbnRhaW5l ciAnb24gZHV0eScgd2lsbCBzYXkgc29tZXRoaW5nIGxpa2UgJ1doeSBpc24ndCB0aGlzIHBv aW50DQogICAgIGJ5IHJldmlld2VyIEZvbyBhZGRyZXNzZWQ/ICBJdCBzZWVtcyByZWFzb25h YmxlIHRvIG1lLuKAmS4gIFlvdSB3b3VsZA0KICAgICB0aGVuIGhhdmUgdG8gYWN0dWFsbHkg cmVhZCB0aGUgcmV2aWV3LCBvciBpZ25vcmUgdGhlIG1haW50YWluZXIsDQogICAgIGFuZCB0 aGUgbGF0dGVyIHdpbGwgbm90IHJlc3VsdCBpbiB5b3VyIHBhdGNoIGJlaW5nIG1lcmdlZC4N Cg0KR3JlZXRpbmdzLA0KTWF4aW1lLg0K --------------oHhl0MvKv48yb30axuEibCOf Content-Type: application/pgp-keys; name="OpenPGP_0x49E3EE22191725EE.asc" Content-Disposition: attachment; filename="OpenPGP_0x49E3EE22191725EE.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xjMEX4ch6BYJKwYBBAHaRw8BAQdANPb/d6MrGnGi5HyvODCkBUJPRjiFQcRU5V+m xvMaAa/NL01heGltZSBEZXZvcyA8bWF4aW1lLmRldm9zQHN0dWRlbnQua3VsZXV2 ZW4uYmU+wpAEExYIADgWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCX4ch6AIbAwUL CQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRBJ4+4iGRcl7japAQC3opZ2KGWzWmRc /gIWSu0AAcfMwyinFEEPa/QhUt2CogD/e2RdF4CYAgaRHJJmZ9WU7piKbLZ7llB4 LzgezVDHggzNJU1heGltZSBEZXZvcyA8bWF4aW1lZGV2b3NAdGVsZW5ldC5iZT7C kAQTFggAOBYhBMHzPuIMUo/bfdcBH0nj7iIZFyXuBQJf56ycAhsDBQsJCAcDBRUK CQgLBRYCAwEAAh4BAheAAAoJEEnj7iIZFyXujpQBAKV1SwDDl4f24rXciDlB9L8W ycZt30CgbewMSRQk4mvbAP9dFMbVVixYBd6C8cfhR+NsOBGiOJnQABlUmgNuqGFJ Dc44BF+HIegSCisGAQQBl1UBBQEBB0BOlzIWiJzgobMF6/cqwLaLk7jIcFSZ++c0 k9cCNT6YXwMBCAfCeAQYFggAIBYhBMHzPuIMUo/bfdcBH0nj7iIZFyXuBQJfhyHo AhsMAAoJEEnj7iIZFyXuMr0BAJc8cl5PGvVmVuSQVKjleNl4DK1/XAaPAYPe34AE fZJPAP9IqLCQhH/FeJanHqBP8gNdGNI2qn8RnnLVfRJgUjZ1BA=3D=3D =3DOVqp -----END PGP PUBLIC KEY BLOCK----- --------------oHhl0MvKv48yb30axuEibCOf-- --------------zxEGTf5ytC7W7SuNliYruA6W-- --------------6Vwud5Cm7Oofc0spr0tkASjt Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wnsEABYIACMWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCY9h84wUDAAAAAAAKCRBJ4+4iGRcl7hV0 AQDiY67aae0lHY7C064LICz53ux/3XmZqUS+dxWposymawEAgFmP7eWACRRq5k3IcxoXYbbtZbNm eU5vRxjovM2I/As= =XfrQ -----END PGP SIGNATURE----- --------------6Vwud5Cm7Oofc0spr0tkASjt--