From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id 2FakBNWJG2Og/QAAbAwnHQ (envelope-from ) for ; Fri, 09 Sep 2022 20:45:41 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id ABulA9WJG2PeBwEAG6o9tA (envelope-from ) for ; Fri, 09 Sep 2022 20:45:41 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 5D0DA3C931 for ; Fri, 9 Sep 2022 20:45:40 +0200 (CEST) Received: from localhost ([::1]:41200 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oWj0Q-0001Fn-0C for larch@yhetil.org; Fri, 09 Sep 2022 14:45:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43232) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oWizu-0001FQ-I7 for guix-patches@gnu.org; Fri, 09 Sep 2022 14:45:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:46757) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oWizu-0001Ru-9i for guix-patches@gnu.org; Fri, 09 Sep 2022 14:45:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oWizt-0007PI-Vf for guix-patches@gnu.org; Fri, 09 Sep 2022 14:45:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#57598] [PATCH] doc: Update contribution guidelines on patches, etc. Resent-From: Maxime Devos Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 09 Sep 2022 18:45:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 57598 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Liliana Marie Prikler , 57598@debbugs.gnu.org Received: via spool by 57598-submit@debbugs.gnu.org id=B57598.166274906828412 (code B ref 57598); Fri, 09 Sep 2022 18:45:01 +0000 Received: (at 57598) by debbugs.gnu.org; 9 Sep 2022 18:44:28 +0000 Received: from localhost ([127.0.0.1]:35456 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oWizJ-0007O1-GS for submit@debbugs.gnu.org; Fri, 09 Sep 2022 14:44:27 -0400 Received: from andre.telenet-ops.be ([195.130.132.53]:58758) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oWizF-0007Nr-EG for 57598@debbugs.gnu.org; Fri, 09 Sep 2022 14:44:24 -0400 Received: from [IPV6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16] ([IPv6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16]) by andre.telenet-ops.be with bizsmtp id HukH2800D20ykKC01ukHhx; Fri, 09 Sep 2022 20:44:18 +0200 Message-ID: Date: Fri, 9 Sep 2022 20:44:16 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Content-Language: en-US References: <20220905160048.18173-1-maximedevos@telenet.be> <0f78953d57d8f66a934baf518b7c9e3247b580fd.camel@ist.tugraz.at> <44573c52ae3781b85f76d113735f3f85b82548bf.camel@ist.tugraz.at> <1e707c8e345af7b2fb0353c5f1c0e37d716e3308.camel@ist.tugraz.at> From: Maxime Devos In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------b304Y9bejnymBhUvwnTF0ap0" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22; t=1662749058; bh=0aADSMKUBU0fzd5tekJnVsAmdaUV9xOfGxfaDG9HTMk=; h=Date:To:References:From:Subject:In-Reply-To; b=TvH5hWTI4Y0BceTANeve4Q2BypLqxRgPXGP4T/ITvlQPJPDslCbl6lw2P8VwYGAgp ogX5MGtvVBwARKhVnWxJ1tsjy04teNje65/oVRJ609OW2XY8eXjj8OlKSeSMvUPqk9 VMKsXnwtKYhSe6dmgiuh2bXzGpJYVheq+G6VQU5E5WIM9YVr38tZHxQvSNAnLRpkOj waJZNWIe8/9f3TjHiZzNEbIYB518W9mSpQ2uYPwyJPblG8aXFuZfo9NlMzH5NMBzlg FL4T9r0BjczBp3B54/TrZ3eFHBkDN1rOU1blOEocoihnbb5Uh/1m/Jn1sZcAkaRGWj iJXuzsuWpLOyg== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1662749140; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=0aADSMKUBU0fzd5tekJnVsAmdaUV9xOfGxfaDG9HTMk=; b=WiIQC9d2wZ+uRIavKZuRyLd3q2b3BGlb1xOQP8nS/qK7hvKmBn4Ds3/ZTrIXKTsw2il30C KCAwyw2HhFio9jvtGZBtG30CMl18N3rMdv2OCe2sPMdCr4WJ2EvFtY4aqve5lCv+ibAflV VmSqR3uFCUaJowJciAwYZVR9WYVL7QUSQwUe4qkfJ23vdGwXdS2n9V/G4Ly3UzlBRo2WwJ oDgpzwflWeksAEFeKcbeolQLHKkNM2yVZ2E6wu+4+ms8L7fAJfIMlhCn7rkkjwv956x/nf 7OjSLNJwUmGz9eKmr0QwY6QLFIJwFHFwKtidY9Ew86D81r8hM3pXPiB7Zrgf2g== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1662749140; a=rsa-sha256; cv=none; b=BLqf6jskJUARX7jqE5p0/xFauNJdkdUYc2Z9xG92q9DEwjVRaRkyuqhFmh8KA8nZCuR8cU mAdFl7yG7Z9SIlajFWhzrUrLxNF4ctBRF+HscrOCHzYRy+rFnrZc4Yzu6vQPTXfo+R7/2c 4dIyKLH10ioGX4GY9RtLy9avqCix8tMCRRmz0N+SI510AxLzPPNdPJjyvrdzQw/0jFjWup RAlahQFmLdwWvjwUCHV92flKOml3zDTpuXF37QhDgJG1KUdKWE3OHAV7bjIJAItnSdqYeQ CaHT/OclIlIy1ckKDS1O7MVXJ+6rT1gwpkGzOtGUeTRi0nJU5oKqxXSyNMMC2w== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=telenet.be header.s=r22 header.b=TvH5hWTI; dmarc=fail reason="SPF not aligned (relaxed)" header.from=telenet.be (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 5.70 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=telenet.be header.s=r22 header.b=TvH5hWTI; dmarc=fail reason="SPF not aligned (relaxed)" header.from=telenet.be (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 5D0DA3C931 X-Spam-Score: 5.70 X-Migadu-Scanner: scn1.migadu.com X-TUID: tvnjuU0xysrF This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------b304Y9bejnymBhUvwnTF0ap0 Content-Type: multipart/mixed; boundary="------------A60oN2LySqwFEM12Dd7BpjjC"; protected-headers="v1" From: Maxime Devos To: Liliana Marie Prikler , 57598@debbugs.gnu.org Message-ID: Subject: Re: [PATCH] doc: Update contribution guidelines on patches, etc. References: <20220905160048.18173-1-maximedevos@telenet.be> <0f78953d57d8f66a934baf518b7c9e3247b580fd.camel@ist.tugraz.at> <44573c52ae3781b85f76d113735f3f85b82548bf.camel@ist.tugraz.at> <1e707c8e345af7b2fb0353c5f1c0e37d716e3308.camel@ist.tugraz.at> In-Reply-To: --------------A60oN2LySqwFEM12Dd7BpjjC Content-Type: multipart/mixed; boundary="------------RneJSr4rW60YFuWvSkivYcO6" --------------RneJSr4rW60YFuWvSkivYcO6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 DQoNCk9uIDA5LTA5LTIwMjIgMTU6MzIsIExpbGlhbmEgTWFyaWUgUHJpa2xlciB3cm90ZToN Cj4+IEFsc28sIHRoaXMgaXMgdGhlIHBhY2thZ2Ugc291cmNlIGZpZWxkLCBub3QgdGhlIGRl c2NyaXB0aW9uLCBJIGRvbid0DQo+PiBzZWUgaG93IHRoZSAiaGVscHMgc29mdHdhcmUgc3Rh bmQgb24gaXRzIG93biBtZXJpdHMiIGFwcGxpZXMgdG8NCj4+IHNuaXBwZXRzIG9mIHRoZSBw YWNrYWdlIHNvdXJjZS4NCj4gUG9pbnQgdGFrZW4sIGJ1dCBpbWhvIGl0IHN0aWxsIG1ha2Vz IHNlbnNlIHRvIHByZWZlciBrZWVwIGxpc3RzIG92ZXINCj4gcmVtb3ZlIGxpc3RzLiAgVGhl IEdOVSBwcm9qZWN0IGVuY291cmFnZXMgcGVvcGxlIHRvIHJlYWQgdGhlIHNvdXJjZXMNCj4g YWZ0ZXIgYWxsLg0KDQpJIGRvIG5vdCBzZWUgaG93IHRoZSBmb3JtZXIgZm9sbG93cyBmcm9t IHRoZSBsYXR0ZXIsIEkgd291bGQgZXhwZWN0IHRoZSANCm9wcG9zaXRlLiAgR05VIHByb2pl Y3QgZW5jb3VyYWdlcyByZWFkaW5nIHNvdXJjZSBjb2RlLCB3ZSBwdXQgdXNlZnVsIA0KaW5m b3JtYXRpb24gaW4gdGhlIHNvdXJjZSBjb2RlIChlLmcuIHJlY29yZHMgb24gd2hhdCBub24t ZnJlZSBwYXJ0cw0KaGF2ZW4ndCBiZWVuIHJlcGxhY2VkIHlldCkuDQoNCj4+Pj4NCj4+Pj4+ IFRoZXJlIHN0aWxsIGlzIHRoZSBkaWZmZXJlbmNlIHRoYXQgcGhhc2VzIGFyZSBjbGVhcmx5 IGRlbGltaXRlZA0KPj4+Pj4gd2hpbGUgc25pcHBldHMgYXJlIGEgYmxvY2sgb2YgY29kZSB0 aGF0IHNob3VsZG4ndCBnZXQgdG9vDQo+Pj4+PiBsYXJnZS4NCj4+Pj4gU25pcHBldHMgYXJl IGRlbGltaXRlZCBjbGVhcmx5IGFzIHdlbGwsIHRob3VnaCwgd2l0aCB0aGUNCj4+Pj4gJ3Nu aXBwZXQnIGZpZWxkPw0KPj4+PiBBbmQgdGhlIGxpbWl0YXRpb25zIG9mIHNuaXBwZXQgbGVu Z3RoIGFuZCBwaGFzZXMgbGVuZ3RoIGFyZSB0aGUNCj4+Pj4gc2FtZcKgLS0gbm8gbGltaXRz LCB0aG91Z2ggY29uY2lzZW5lc3MgaXMgYXBwcmVjaWF0ZSBhcyBhbHdheXMuDQo+Pj4gVHJ1 ZSwgYnV0IHBoYXNlcyBjYW4gYmUgbWFkZSB0byBkbyBqdXN0IG9uZSB0aGluZywgd2hlcmVh cyBzbmlwcGV0cw0KPj4+IGhhdmUgdG8gZml4IGV2ZXJ5dGhpbmcgdGhhdCdzIHdyb25nIGlu IG1vcmUgb3IgbGVzcyBvbmUgKGJlZ2luDQo+Pj4gLi4uKS4NCj4+PiBUaGlzIGlzIGEgbm90 aWNhYmxlIGRpc3RpbmN0aW9uLj4NCj4+DQo+PiBZb3UgY2FuIGRvIHRoYXQgaW4gc25pcHBl dHMgdG9vLCB3aXRoIGNvbW1lbnRzOg0KPj4NCj4+IChzbmlwcGV0DQo+PiAgwqDCoCAjfihi ZWdpbg0KPj4gIMKgwqDCoMKgwqDCoCA7OyBEbyB0aGUgZm9vIHRoaW5nDQo+PiAgwqDCoMKg wqDCoMKgIChmb28pDQo+PiAgwqDCoMKgwqDCoMKgIChmb28tMiBbLi4uXSkNCj4+ICDCoMKg wqDCoMKgwqAgWy4uLl0NCj4+ICDCoMKgwqDCoMKgwqAgOzsgRG8gdGhlIGJhciB0aGluZw0K Pj4gIMKgwqDCoMKgwqDCoCAoYmFyKQ0KPj4gIMKgwqDCoMKgwqDCoCAoYmFyLTIgWy4uLl0p DQo+PiAgwqDCoMKgwqDCoMKgIFsuLi5dKSkNCj4gWW91IGNhbiwgYnV0IGl0J3Mgc3RpbGwg d2lzZXIgdG8ganVzdCBrZWVwIHRoZSBzbmlwcGV0IHNob3J0IGVub3VnaCBzbw0KPiB5b3Ug ZG9uJ3QgaGF2ZSB0by4NCg0KVGhhdCdzIGFsc28gdGhlIGNhc2UgZm9yIHBoYXNlcywgdGhv dWdoPyAgQ29uY2lzZW5lc3MgaXMgYm90aCBnb29kIGZvciANCnBoYXNlcyBhbmQgc25pcHBl dHMuDQo+PiAgwqAgSSB3b3VsZCBob3dldmVyIHZlcnkNCj4+PiBtdWNoIHByZWZlciBhIHdv cmRpbmcgdGhhdCBwb2ludHMgcGVvcGxlIHRvd2FyZCB0aGlzIHByYWN0aWNlDQo+Pj4gZXhp c3RpbmcsDQo+Pj4gZXZlbiBpZiB0aGV5IGhhdmUgdG8gZ28gbG9vayBpbiB0aGUgY29kZSBm b3IgZXhhbXBsZXMuDQo+Pj4gQWx0ZXJuYXRpdmVseSwNCj4+PiBhIGZvb3Rub3RlIGZvciB0 aGUgbW9zdCBjb21tb24gY2FzZSAoc2VhcmNoLWlucHV0LWZpbGUgaW5wdXRzDQo+Pj4gImJp bi9jb21tYW5kIikgb3VnaHQgdG8gc3VmZmljZSBmb3IgdGhlIHRpbWUgYmVpbmcuDQo+Pg0K Pj4gQXNpZGUgZnJvbSB0aGUgdHlwbydzIGFuZCBhIGZldyByZXBocmFzaW5ncywgSSdtIGRv bmUgd2l0aCB0aGUNCj4+IGRvY3VtZW50YXRpb24uwqAgSWYgc29tZW9uZSB3YW50cyB0byBl eHRlbmQgdGhlIHNlY3Rpb24gd2l0aCBzdWNoDQo+PiBpbmZvcm1hdGlvbiwgdGhleSBjYW4g YWx3YXlzIGRvIHNvIGxhdGVyLg0KPiBJIGhhdmVuJ3Qgc2VlbiBhIHYyIHRob3VnaC4gIEFt IEkgY29ycmVjdCBpbiBhc3N1bWluZyB0aGF0IG5vbmUgb2YgdGhlDQo+IHBvaW50cyB3ZSBk aXNjdXNzZWQgaW4gdGhlIGxhc3QgZmV3IG1haWxzIGFyZSBnb2luZyB0byBiZSBhZGRyZXNz ZWQ/DQoNCkkgZGlkIHNlbnQgYSB2MjogPGh0dHBzOi8vaXNzdWVzLmd1aXguZ251Lm9yZy81 NzU5OCM4Pi4NCkFuZCBtb3N0IHdlcmUgYWRkcmVzc2VkLCBldmVuIGlmIG9ubHkgYXMgbWUg bm90IGNvbnNpZGVyaW5nIGl0IGFuIGlzc3VlLg0KDQo+Pj4NCj4+PiBJTUhPLCBJIHRoaW5r IGEgcmVhZGVyIHdobyByZW1lbWJlcnMgdGhlIGd1aWRpbmcgcHJpbmNpcGxlcyBzaG91bGQN Cj4+PiBzZWUgdGhhdCBpdCBhcHBsaWVzLg0KPj4NCj4+IExpa2VseS4gQnV0IHJlbW92aW5n IHRoZSBleHBsaWNpdCBtZW50aW9uIG9mIHRoZSBndWlkaW5nIHByaW5jaXBsZQ0KPj4gc3Rp bGwgbWFrZXMgdGhlIGxvZ2ljYWwgcmVhc29uaW5nIGluY29tcGxldGUsIHJlbWVtYmVyaW5n IGhhcyBub3RoaW5nDQo+PiB0byBkbyB3aXRoIGl0LsKgIEFzIEkndmUgd3JpdHRlbiBwcmV2 aW91c2x5OiDigJhUaGlzIGhhcyBub3RoaW5nIGRvIGRvDQo+PiB3aXRoIFsuLi5dIGFuZCBy ZW1lbWJlcmluZywgYnV0IHJhdGhlciB3aXRoIFsuLi5d4oCZLg0KPiBJbiB0aGF0IGNhc2Us IGxldCBtZSByZXBocmFzZSBteSBjcml0aWNpc206ICJJdCBwYXNzZXMgdGhlIGd1aWRlbGlu ZXMiDQo+IHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGUgbG9naWNhbCByZWFzb25pbmcgaGVy ZS4gIE90aGVyd2lzZSwgd2h5IG5vdA0KPiBoYXZlIGEgZ3VpZGVsaW5lIGNoZWNrbGlzdCBh dCB0aGUgZW5kIG9mIGVhY2ggc3Vic2VjdGlvbiAod2hpY2ggd291bGQNCj4gYmUgc2lsbHks IG9idmlvdXNseSwgYnV0IHRoYXQncyB0aGUgcG9pbnQpLg0KDQpCZWNhdXNlLCBhcyB5b3Ug bm90ZSwgdGhhdCdzIGEgc2lsbHkgc3RydWN0dXJlLCBwdXR0aW5nIHRoZSBwcmVtaXNlcyAo PSANCmd1aWRpbmcgcHJpbmNpcGxlcykgYWZ0ZXIgdGhlIGNvbmNsdXNpb25zICg9IHdvcmtl ZC1vdXQgY2FzZXMpIGlzIGFuIA0KaWxsb2dpY2FsIHN0cnVjdHVyZSwgd2hlcmVhcyBwdXR0 aW5nIHRoZSBwcmVtaXNlcyBfYmVmb3JlXyB0aGUgDQpjb25jbHVzaW9ucyBpcyBsb2dpY2Fs DQoNCj4+Pj4NCj4+PiBBbHNvLCB5b3VyIGd1aWRpbmcgcHJpbmNpcGxlcyBhcmUgKHdpdGgg b25lIGV4Y2VwdGlvbikgcmVhbGx5IGp1c3QNCj4+PiBpbnZhcmlhbnRzIHRoYXQgb3VnaHQg dG8gaG9sZCBmb3IgdGhlIHNvdXJjZSBmaWVsZCBvZiBhIHBhY2thZ2UuDQo+Pg0KPj4gSSBk b24ndCBrbm93IGFib3V0IHRoZSBleGNlcHRpb25zIChJIGhhdmVuJ3QgY291bnRlZCB0aGVt KSwgYnV0IHllcywNCj4+IGluZGVlZC7CoCBJIGRvIG5vdCBzZWUgdGhlIHByb2JsZW0gb2Yg dGhpcy4NCj4gRm9yIHRoZSByZWNvcmQsIHRoZSBleGNlcHRpb24gaXMgdGhlICJtb3N0IGNv bnZlbmllbnQiIGJpdCB5b3UndmUNCj4gY29waWVkIGZyb20gbXkgcGF0Y2ggOikNCg0KVGhh dCBndWlkZWxpbmUgYWN0dWFsbHkgcHJlZGF0ZXMgeW91ciBwYXRjaCwgaXQncyBwYXJ0IG9m IHRoZSBvcmlnaW5hbCANCnByb3Bvc2FsIChvZiB3aGljaCB0aGUgd29yZGluZyBjaGFuZ2Vk IGxhdGVyKToNCg0KID4gaHR0cHM6Ly95aGV0aWwub3JnL2d1aXgvYzRjMGEwNzEtMmUwMy1k NGQ2LTY3MTgtMDU0MjRkMjFkMTQ2QHRlbGVuZXQuYmUvDQo+IFNvbWV0aW1lcywgdGhlcmUg cmVtYWlucyBtb3JlIHRoYW4gb25lIGFjY2VwdGFibGUgd2F5IHRvIGFjY29tcGxpc2ggdGhl IA0KPiBnb2FsLiBJbiB0aGF0IGNhc2UsIGNob29zZSB3aGF0ZXZlciBhcHBlYXJzIHRvIGJl IG1vc3QgY29udmVuaWVudC4NCg0KDQoNCg0KPj4+IEFzIHN1Y2gsIEkgdGhpbmsgaXQgd291 bGQgYmUgZWFzaWVyIHRvIHN0YXRlICJBIHBhY2thZ2UncyBzb3VyY2UNCj4+PiBzaG91bGQN Cj4+PiBiZSB0aGUgc21hbGxlc3QgY29ycmVzcG9uZGluZyBzb3VyY2UgaW4gdGVybXMgb2Yg dW5jb21wcmVzc2VkIGZpbGUNCj4+PiBzaXplLsKgIFRoaXMgY29ycmVzcG9uZGluZyBzb3Vy Y2UgbXVzdCBjb25zaXN0IG9ubHkgb2YgZnJlZSBzb2Z0d2FyZQ0KPj4+IChub3RlIEZyZWUg U29mdHdhcmUpIGFuZCBzaG91bGQgYnVpbGQgb24gYWxsIHBsYXRmb3JtcyBzdXBwb3J0ZWQg YnkNCj4+PiB1cHN0cmVhbS4iwqAgTm90ZSBob3cgc21hbGxlc3QgbmF0dXJhbGx5IGltcGxp ZXMgdW5idW5kbGluZyBidW5kbGVkDQo+Pj4gc291cmNlcy4NCj4+DQo+PiBUaGlzIGNyaXRl cml1bSBvbiBvdmVybHkgc21hbGwgc291cmNlcy7CoCBPZnRlbiwgYSBwYWNrYWdlJ3Mgc291 cmNlDQo+PiBjb250YWlucyB0aGluZ3MgdGhhdCBpcyBub3QgdXNlZCBmb3IgdGhlIGJ1aWxk IG9yIG91dHB1dHMgYW5kIGhlbmNlDQo+PiBpcyBub3QgcGFydCBvZiB0aGUgY29ycmVzcG9u ZGluZyBzb3VyY2UuwqAgRXhhbXBsZXM6DQo+IE5vdGUgInNob3VsZCIgcmF0aGVyIHRoYW4g InNoYWxsIiBvciAibXVzdCIsIG1lYW5pbmcgdGhhdCBzbGlnaHRseQ0KPiBsYXJnZXIgdGFy YmFsbHMgYXJlIHN0aWxsIGFjY2VwdGFibGUuDQpPSy4gIFRoZSBjcml0ZXJpdW0gcmVtYWlu cyBvdmVybHkgdGlnaHQgdGhvdWdoIC0tIGJ5IHRoYXQgY3JpdGVyaXVtLCANCnNsaWdodGx5 IGxhcmdlciB0YXJiYWxscyBhcmUgY29uc2lkZXJlZCB1bmRlc2lyYWJsZSwgZXZlbiB3aGVu IHRoZXkgaGF2ZSANCnVzZWZ1bCAoYW5kIGhlbmNlLCBkZXNpcmVkKSB0aGluZ3M6DQoNCj4g DQo+PiAqIHRoZSBzb3VyY2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbiB0aGF0IGNvdWxkIGJl IGJ1aWx0IGFuZA0KPj4gaW5zdGFsbGVkLA0KPj4gIMKgwqAgYnV0IEd1aXggZG9lc24ndCBk byBzbyB5ZXQuwqAgLS0+IHNob3VsZCBiZSBrZXB0ICh1bmxlc3Mgbm9uLWZyZWUpDQo+PiAq IGRvY3VtZW50YXRpb24gdGhhdCBpc24ndCBtZWFudCB0byBiZSBidWlsdCBvciBpbnN0YWxs ZWQNCj4+ICDCoMKgIChlLmcuIEhBQ0tJTkcsIFBBQ0tBR0VSUywgLi4uKSAtLT4gdXNlZnVs LCBzaG91bGRuJ3QgYmUgcmVtb3ZlZC4NCj4+ICogLmdpdGlnbm9yZSwgLmdpdGh1YiwgLi4u IC0tPiBub3RoaW5nIHdyb25nIHdpdGggcmVtb3ZpbmcgdGhvc2UsDQo+PiAgwqDCoCBidXQg cG9pbnRsZXNzLCBsZXQncyBub3Qgd2FzdGUgb3VyIHRpbWUgd2l0aCBsb29raW5nIGZvciB0 aG9zZQ0KPj4gIMKgwqAgYW5kIHJlbW92aW5nIHRoZW0sIGV2ZW4gdGhvdWdoIGRvaW5nIHNv IHdvdWxkIG1ha2UgaXQgc21hbGxlci4NCj4+ICogc291cmNlIGZpbGVzIGZvciBwbGF0Zm9y bXMgdGhlIHVwc3RyZWFtIGRvZXMgbm90IHN1cHBvcnQNCj4+IHlldC9hbnltb3JlDQo+PiAg wqDCoCAoYnV0IHdpdGggc29tZSB2b2x1bnRlZXIgZWZmb3J0IChlLmcuIGJ1Z2ZpeGVzKSwg aXQgbWlnaHQgYmVjb21lDQo+PiAgwqDCoCBhIHN1cHBvcnRlZCBzeXN0ZW0gYWdhaW4pDQo+ PiAgwqDCoCAtLT4gcmVtb3ZpbmcgdGhlbSAoZS5nLiBhcyBwYXJ0IG9mIGFuIG92ZXJseS1i cm9hZA0KPj4gKGRlbGV0ZS1maWxlLXJlY3Vyc2l2ZWx5DQo+PiAidGhpcy1kaXItaGFzLWJ1 bmRsaW5nLWFsYmVpdC1ub3QtYWxsLW9mLWl0LWlzLWJ1bmRsaW5nIikpDQo+PiAgwqDCoMKg wqDCoMKgIGNhbiBiZSBPSy1pc2gsIGJ1dCByZW1vdmluZyB0aGVtIGZvciAnbWluaW1hbGl0 eScgaXMNCj4+IHBvaW50bGVzcy4NCg0KPiBJIHNlZSB5b3UncmUgbml0cGlja2luZyBmb3Ig dGhlIHNha2Ugb2YgdGhlIGFyZ3VtZW50LA0KDQpJJ20gbm90LiAgSXQncyBuaXRwaWNraW5n IGZvciB0aGUgc2FrZSBvZiB0aGUgZm91ciAqIGV4YW1wbGVzIGFib3ZlLg0KDQo+IGJ1dCBu b25lIG9mIHRoZQ0KPiBleGFtcGxlcyB5b3UgcHJvdmlkZSAoc2FmZSBmb3IgdGhlIGJ1bmRs aW5nIG9uZSkgYWRkIG11Y2ggY29zdCB0bw0KPiBlaXRoZXIgcGFja2luZyBvciB1bnBhY2tp bmcuDQoNCk5vdCB0aGUgcG9pbnQsIHRoZSBwb2ludCBpcyB0aGF0IGhhdmluZyB0byB0cmVh dCB0aG9zZSBleGFtcGxlcyANCnNlcmlvdXNseSAgaXMgYSB3YXN0ZSBvZiB0aW1lIGFuZCBl dmVuIHNvbWV3aGF0IGhhcm1mdWwgKHJlbW92aW5nIHVzZWZ1bCANCnN0dWZmKS4NCg0KPiBU aHVzLCBJJ20gcHJldHR5IHN1cmUgd2UgY2FuIGlnbm9yZSB0aGVtDQo+IGZvciBwcmFjdGlj YWwgcHVycG9zZXMuDQoNCkFzIEkndmUgZXhwbGFpbmVkLCB0aGlzIGd1aWRlbGluZSBpcyBp bmNvbnNpc3RlbnQgd2l0aCB3aGF0IGlzIGFjdHVhbGx5IA0KcmVjb21tZW5kZWQuICBIZXJl IGFyZSBzb21lIHByYWN0aWNhbCBwdXJwb3NlczoNCg0KKiBtaW5pbWFsIGRpc3NvbmFuY2Ug YmV0d2VlbiAnYXBwcmVjaWF0ZWQgYnkgcG9saWN5JyBhbmQgJ2FwcHJlY2lhdGVkIGJ5DQog ICByZXZpZXdlcnMsIHBhY2thZ2VycywgdXNlcnMnLg0KKiBub3QgaGF2aW5nIHRvIHJldmll dyBhbmQgYWNjZXB0IHBvaW50bGVzcyBwYXRjaGVzIHRvIEd1aXggZm9yIGRlbGV0aW5nDQog ICAuZ2l0aHViLCAuZ2l0aWdub3JlLCB1bmluc3RhbGxlZCBkb2N1bWVudGF0aW9uIHRoYXQg d2VyZSB3cml0dGVuDQogICBmb3IgdGhlIHNha2Ugb2YgbWluaW1hbGl0eQ0KKiBub3QgaGF2 aW5nIHRvIChpbiB0aGUgc2Vuc2Ugb2Y6IGl0IHdvdWxkIGJlIGFwcHJlY2lhdGVkIGlmIHlv dSdkIGRvDQogICB0aGF0KSB3cml0ZSBzdWNoIHBhdGNoZXMNCg0KICAgVGhhdCBiZWluZyBz YWlkLCBpZiB5b3UgaGF2ZSBhIGJldHRlcg0KPiBmb3JtdWxhdGlvbiwgcGxlYXNlIGRvIHRl bGwuDQoNClRoZSBmb3VyIGd1aWRpbmcgcHJpbmNpcGxlcy4NCg0KPiANCj4+DQo+Pj4+PiBJ IHN0aWxsIGZpbmQgdGhpcyB3b3JkaW5nIHZlcnkgY29uZnVzaW5nLiBQZXJoYXBzICJUbyBh ZGQgbmV3DQo+Pj4+PiBmdW5jdGlvbmFsaXR5LCBhIHBhdGNoIGlzIGFsbW9zdCBhbHdheXMg dGhlIGJlc3QgY2hvaWNlLiBGb3INCj4+Pj4+IG9uZSwNCj4+Pj4+IGl0IGlzIGxpa2VseSB0 aGF0IHRoZSBuZXcgZnVuY3Rpb25hbGl0eSByZXF1aXJlcyBjaGFuZ2luZw0KPj4+Pj4gbXVs dGlwbGUNCj4+Pj4+IGxpbmVzIG9mIHNvdXJjZSBjb2RlLCB3aGljaCBpcyBtb3JlIGNvbnZl bmllbnQgdG8gZG8gd2l0aCBhDQo+Pj4+PiBwYXRjaA0KPj4+Pj4gdGhhbiB3aXRoIGEgc25p cHBldC4gRnVydGhlciwgcGF0Y2hlcyBjYW4gYmUgdGFrZW4gZnJvbSBhbmQNCj4+Pj4+IHN1 Ym1pdHRlZCB0byB1cHN0cmVhbXMgbW9yZSBlYXNpbHkuIElmIHlvdXIgcGF0Y2ggaGFzIG5v dCBiZWVuDQo+Pj4+PiBzdWJtaXR0ZWQgdG8gdXBzdHJlYW0sIGNvbnNpZGVyIGRvaW5nIHNv LiINCj4+Pj4gSXQgbG9zZXMgc29tZSBpbmZvcm1hdGlvbiAodGhhdCBwYXRjaGVzIGFyZSBw cmVmZXJyZWQpIGFuZA0KPj4+PiAoYWZ0ZXIgcmUtYWRkaW5nIHRoZSBjb25jbHVzaW9uKSBp cyBtb3JlIHZlcmJvc2UsIHdoaWNoIGFwcGVhcnMNCj4+Pj4gdG8gYmUgY29uc2lkZXJlZCB2 ZXJ5IGltcG9ydGFudC4NCj4+PiBXaGljaCBjb25jbHVzaW9uIGlzIHRoZXJlIHRvIHJlLWFk ZD8NCj4+DQo+PiAicGF0Y2hlcyBhcmUgcHJlZmVycmVkIg0KPj4NCj4+ICDCoMKgIFRoZSBj b25jbHVzaW9uIGlzIGFscmVhZHkgc3RhdGVkDQo+Pj4gaW4gdGhlIGJlZ2lubmluZzogcGF0 Y2hlcyBhcmUgYWxtb3N0IGFsd2F5cyB0aGUgYmVzdCBjaG9pY2UuwqAgVGhlbg0KPj4+IHR3 bw0KPj4+IHJlYXNvbnMgYXMgZm9yIHdoeS7CoCBUaGUgcGFydCB3LnIudC4gdXBzdHJlYW1p bmcgY2hhbmdlcyBoYXMgYWxzbw0KPj4+IGJlZW4NCj4+PiBhZGRyZXNzZWQuDQo+Pg0KPj4g V2hpbGUgSSBjb25zaWRlciB0aGF0IHBvbGljaWVzIHNob3VsZCBoYXZlICJiZXN0IGNob2lj ZXMiIGNvaW5jaWRpbmcNCj4+IHdpdGggInByZWZlcnJlZCIgYW5kIHRoYXQgbm90IGRvaW5n IHNvIHdvdWxkIGJlIGlsbG9naWNhbCwgcGVvcGxlLA0KPj4gcHJvamVjdHMsIGRlY2lzaW9u cyAuLi4gYXJlIGZhciBmcm9tIGFsd2F5cyBsb2dpY2FsLg0KPj4NCj4+IEJlY2F1c2Ugb2Yg dGhpcywgcGVvcGxlIGNhbm5vdCBhc3N1bWUgdGhhdCB0aGUgJ2Jlc3QgY2hvaWNlcycgYXJl DQo+PiAncHJlZmVycmVkJywgc28gaXQgbmVlZHMgdG8gYmUgbWVudGlvbmVkIGV4cGxpY2l0 bHkgdGhhdCB0aGVzZSAnYmVzdA0KPj4gY2hvaWNlcycgYXJlIGFjdHVhbGx5ICdwcmVmZXJy ZWQnLg0KPiBJbiB0aGF0IGNhc2UsIHNpbXBseSB3cml0ZSBwcmVmZXJyZWQgY2hvaWNlPw0K DQpJdCBpcyBhbHJlYWR5IG1lbnRpb25lZCB0aGF0IHRoZXkgYXJlIHByZWZlcnJlZDoNCg0K PiDigJhBcyBzdWNoLCBwYXRjaGVzIGFyZSBwcmVmZXJyZWTigJkNCg0KQnkgcmVtb3Zpbmcg dGhlIGluZm9ybWF0aW9uIHRoYXQgJ3BhdGNoZXMgYXJlIHRoZSBtb3N0IGNvbnZlbmllbnQg DQpjaG9pY2UnIChieSByZXBsYWNpbmcgaXQgd2l0aCDigJhwYXRjaGVzIGFyZSB0aGUgcHJl ZmVycmVkIGNob2ljZeKAmSksIHRoZSANCmxvZ2ljYWwgc3RydWN0dXJlIGJlY29tZXMgd2Vh a2VyOyBhIHBhcnQgb2YgdGhlIGV4cGxhbmF0aW9uIG9uIHRoZSDigJh3aHnigJkgDQpiZWNv bWVzIG1pc3NpbmcuDQoNCj4gDQo+Pj4gSSdtIHVzaW5nIGVudW1lcmF0aW9uIGFzIGEgc3Vw ZXIgdGVybSBoZXJlLCB3aGljaCBjYW4gYmUNCj4+PiAoKHN1YilzdWIpc2VjdGlvbnMsIGNo YXB0ZXJzLCBsaXN0IGVsZW1lbnRzLCB3aGF0ZXZlciwgYW5kIG15IGNsYWltDQo+Pj4gaXMg dGhhdCB3ZSBiYXJlbHkgaGF2ZSBlbm91Z2ggcHJpbmNpcGxlcyB0byBhbGxvdyB0aGUgdXNl IG9mIGENCj4+PiBwbHVyYWwuDQo+Pg0KPj4gSW4gRW5nbGlzaCwgdGhpbmdzIGFyZSBlaXRo ZXIgcGx1cmFsIG9yIHNpbmd1bGFyLsKgIEV2ZXJ5dGhpbmcgPj0gMiBpcw0KPj4gcGx1cmFs LsKgIFRoZXJlIG51bWJlciBvZiBwcmluY2lwbGVzLCBob3dldmVyIHdlIGNvdW50IHRoZW0s IGlzLCBhdA0KPj4gbGVhc3QsIDIuwqAgQ29uc2VxdWVudGx5LCB0aGUgcHJpbmNpcGxlcyBh cmUgcGx1cmFsLCBub3Qgc2luZ3VsYXIuDQo+PiBUcmVhdGluZyB0aGUgcHJpbmNpcGxlcyBh cyBzaW5ndWxhciBpcyBzaW1wbHkgZ3JhbW1hdGljYWxseQ0KPj4gaW5jb3JyZWN0Lg0KPiBD b3JyZWN0aW9uOiBFdmVyeXRoaW5nIHRoYXQgaXNuJ3QgZXhhY3RseSAxIGlzIHBsdXJhbCBp biBFbmdsaXNoLA0KPiBpbmNsdWRpbmcgMCwgd2l0aCBwZXJoYXBzIHRoZSBleGNlcHRpb24g b2YgLTEgYWxzbyB1c2luZyBzaW5ndWxhci4NCj4gDQo+PiBNYXliZSBpdCBpcyBiYXJlbHkg YWxsb3dlZCB0byBiZSBwbHVyYWwsIGJ1dCBFbmdsaXNoIGdyYW1tYXIgZG9lc24ndA0KPj4g Y2FyZSBhYm91dCB0aGF0IC0tIGl0IGlzIGRlZmluaXRpdmVseSBkaXNhbGxvd2VkIHRvIGJl IHNpbmd1bGFyLCBvbmx5DQo+PiBwbHVyYWwgcmVtYWlucy4NCj4gTm90ZSB0aGF0IG15IGFy Z3VtZW50IGlzbid0IGFib3V0IEVuZ2xpc2ggZ3JhbW1hciwgaXQgdXNlcyBFbmdsaXNoDQo+ IGdyYW1tYXIuDQoNCllvdXIgYXJndW1lbnQgaXMgdGhhdCDigJh0aGVyZSBhcmVuJ3QgYSBz dWZmaWNpZW50IGFtb3VudCBvZiBwcmluY2lwbGVzIHRvIA0KYWxsb3cgdGhlIHVzZSBvZiBh IHBsdXJhbOKAmS4gICdQbHVyYWwnIGlzIGEgY29uY2VwdCBvZiBFbmdsaXNoIGdyYW1tYXIu DQpBcyBzdWNoLCB5b3UgaGF2ZSB3cml0dGVuIGFuIGFyZ3VtZW50IGFib3V0IEVuZ2xpc2gg Z3JhbW1hci4NCg0KWW91IGFwcGVhciB0byBoYXZlIG1lYW50IHNvbWUgZGlmZmVyZW50IGFy Z3VtZW50LCBidXQgYWxsIHRoZSBhcmd1bWVudHMgDQpvbiDigJhhcmUgdGhleSBndWlkaW5n IHByaW5jaXBsZXMgb3Igbm904oCZIEkndmUgcmVhZCBhcmUgYmFzZWQgb24gdGhlIA0KbnVt YmVyIG9mIHByaW5jaXBsZXMgb3Igb24gd2hhdCAnZ3VpZGluZyBwcmluY2lwbGUnIG1lYW5z LCB3aGljaCBhcmUgDQppc3N1ZXMgb2YgZ3JhbW1hciBhbmQgdm9jYWJ1bGFyeSByZXNwZWN0 aXZlbHkuDQoNCkknbSBzdGlsbCBub3Qgc2VlaW5nIGhvdyB0aGV5IGFyZW4ndCBndWlkaW5n IHByaW5jaXBsZXMuICBNYXliZSB5b3UgaGF2ZSANCmEgZGlmZmVyZW50IG1lYW5pbmcgb2Yg 4oCYZ3VpZGluZyBwcmluY2lwbGVz4oCZIGluIG1pbmQ/ICBPciBtYXliZSB5b3Ugd291bGQN Cmxpa2UgdG8gbmFtZSB0aGVtICdndWlkZWxpbmVzJyBvciAnZ2VuZXJhbCByZWNvbW1lbmRh dGlvbnMnIGluc3RlYWQuDQoNCj4+PiBBZGRpbmcgdG8gdGhhdCwgbm93IHRoYXQgSSB0aGlu ayBvZiBpdCwgSSBhbHNvIGRvdWJ0IHRoZWlyDQo+Pj4gdXNlZnVsbmVzcyBpbiBndWlkaW5n LsKgICJVc2Ugd2hhdGV2ZXIgZmVlbHMgY29udmVuaWVudCwgYnV0IG5vdGUNCj4+PiB0aGF0 IHRoYXQgbWlnaHQgYmUgc3ViamVjdGl2ZSIgaXMgbW9yZSB1c2VmdWwgYXQgdGhlIGVuZCBv ZiB0aGUNCj4+PiBzZWN0aW9uIHdoZW4gYSB1c2VyIGRpZG4ndCBmaW5kIHdoYXQgdGhleSB3 ZXJlIGxvb2tpbmcgZm9yIHRoYW4gYXQNCj4+PiB0aGUgc3RhcnQuDQo+Pg0KPj4gVGhlIGlu dHJvZHVjdGlvbiBoYXMgYSBzZXQgb2YgZ3VpZGluZyBwcmluY2lwbGVzLCBmcm9tIHdpdGgg Y29uY3JldGUNCj4+IGNhc2VzIGFyZSBidWlsdC7CoCBCeSBhZGRpbmcgYW5vdGhlciBwcmlu Y2lwbGUgYXQgdGhlIGVuZCwgdGhlIGNhc2VzDQo+PiBjYW5ub3QgbWFrZSB1c2Ugb2YgdGhl ICJ1c2UgWy4uLl0gY29udmVuaWVudCIgcHJpbmNpcGxlLg0KPj4NCj4+IEFkZGl0aW9uYWxs eSwgbm93IHRoZSB1c2VyIGhhcyB0byBsb29rIGF0IF90d29fIHBsYWNlcyB0byBmaW5kIHRo ZQ0KPj4gZ3VpZGluZyBwcmluY2lwbGVzIC0tIGF0IHRoZSBiZWdpbm5pbmcsIGFuZCBhdCB0 aGUgZW5kLsKgIFdvcnNlLA0KPj4gdGhlIGJlZ2lubmluZyBkb2VzIG5vdCBoYXZlIGEgY3Jv c3MtcmVmZXJlbmNlIHRvIHRoZSBlbmQsIHNvIHNpbmNlDQo+PiB0aGUgc2V0IGF0IHRoZSBi ZWdpbm5pbmcgaXMgcHJlc2VudGVkIGFzIGV4aGF1c3RpdmUsIHRoZSB1c2VyIG1pZ2h0DQo+ PiBub3Qga25vdyB0aGVyZSBpcyBhbm90aGVyIGd1aWRpbmcgcHJpbmNpcGxlLg0KPj4NCj4+ IEFuZCBldmVuIGlmIHRoZXkgZGlkIHJlYWQgdGhyb3VnaCB0aGUgd2hvbGUgc2VjdGlvbiAo ZXZlbiB0aG91Z2ggdGhleQ0KPj4gc2hvdWxkIG9ubHkgaGF2ZSB0byByZWFkIHRoZSBpbnRy b2R1Y3Rpb24gYW5kIHRoZSByZWxldmFudCB3b3JrZWQtb3V0DQo+PiBjYXNlKSwgYXNzdW1p bmcgdGhleSByZWFkIHRocm91Z2ggaXQgaW4gYSBsaW5lYXIgZmFzaGlvbiwgZHVlIHRvIHRo ZQ0KPj4gbmV3IGd1aWRpbmcgcHJpbmNpcGxlIHRoYXQgd2Fzbid0IGFsbHVkZWQgdG8gYXQg dGhlIGJlZ2lubmluZywgdGhleQ0KPj4gaGF2ZSB0byByZWRvIHRoZWlyIG1lbnRhbCBtb2Rl bCBvZiAiTW9kaWZ5aW5nIFNvdXJjZXMiIGFzIHRoaXMNCj4+IHByaW5jaXBsZSBjb3VsZCBp bnZhbGlkYXRlIHRoaW5ncy4NCj4gVGhpcyBzaG93cyBib3RoIGEgcHJvYmxlbSB3aXRoIHlv dXIgc3RydWN0dXJlLA0KDQpJJ20gbm90IHNlZWluZyB0aGUgcHJvYmxlbS4gIEhvdyBkb2Vz IHRoaXMgc2hvdyBhIHByb2JsZW0/DQoNCj4gYnV0IG1vcmUgaW1wb3J0YW50bHksIGENCj4g ZmFpbHVyZSB0byB1bmRlcnN0YW5kIHdoYXQgSSBtZWFudCB3aGVuIEkgd3JvdGUgInVzZSB3 aGF0ZXZlciBpcw0KPiBjb252ZW5pZW50IiBpbiBteSBvd24gcGF0Y2guICBUaGlzIHByaW5j aXBsZSAqY2FuKiBvbmx5IHdvcmsgZm9yIGNhc2VzDQo+IGluIHdoaWNoIHRoZXJlIGlzICpu byBjbGVhcmx5IGVzdGFibGlzaGVkIHByYWN0aWNlKiwgdGh1cyBwdXR0aW5nIGl0IGF0DQo+ IHRoZSBlbmQgKmFmdGVyIGhhdmluZyBlbnVtZXJhdGVkIGFsbCBwcmFjdGljZXMqIGlzIHRo ZSBsb2dpY2FsIGNob2ljZS4NCj4gV2l0aCB5b3VyIHN0cnVjdHVyZSwgeW91IGhhdmUgdG8g YmVuZCBpdCBzaWRld2F5cyB0byBzaG9laG9ybiBpdCBpbg0KPiB3aXRoIHRoZSBvdGhlciBw cmluY2lwbGVzLg0KDQpZb3UgYXBwZWFyIHRvIGhhdmUgbWVhbnQgaXQgYXMgYSBraW5kIG9m IOKAmGZhbGxiYWNrIHByaW5jaXBsZeKAmSwgaW4gd2hpY2ggDQpjYXNlIHB1dHRpbmcgaXQg YXQgdGhlIGVuZCBkb2VzIGluZGVlZCBtYWtlIHNlbnNlLg0KDQpJbiBteSBwYXRjaCwgdGhl IHByaW5jaXBsZSB3b3JrcyBkaWZmZXJlbnRseSwgaXQgaXMgYWxzbyB1c2VkIGZvciANCmV4 cGxhaW5pbmcgYWxyZWFkeSBlc3RhYmxpc2hlZCBwcmFjdGljZXMsIGZvciB0aGUgY2FzZXMg d2hlcmUgdGhlcmUgYXJlIA0KbXVsdGlwbGUgdGVjaG5pY2FsbHkgYWxsb3dlZCBwcmluY2lw bGVzIGJ1dCBzdGlsbCBvZnRlbiBhIHNpbmdsZSANCl9yZWNvbW1lbmRlZF8gcHJpbmNpcGxl LiAgRS5nLjoNCg0KPiBVc3VhbGx5LCBhIGJ1ZyBmaXggY29tZXMgaW4gdGhlIGZvcm0gb2Yg YSBwYXRjaCBjb3BpZWQgZnJvbSB1cHN0cmVhbSBvcg0KPiBhbm90aGVyIGRpc3RyaWJ1dGlv bi4gIEluIHRoYXQgY2FzZSwgc2ltcGx5IGFkZGluZyB0aGUgcGF0Y2ggdG8gdGhlDQo+IEBj b2Rle3BhdGNoZXN9IGZpZWxkIGlzIHRoZSBtb3N0IGNvbnZlbmllbnQgYW5kIHVzdWFsbHkg ZG9lcyBub3QgY2F1c2UNCj4gYW55IHByb2JsZW1zOyB0aGVyZSBpcyBubyBuZWVkIHRvIHJl d3JpdGUgaXQgYXMgYSBzbmlwcGV0IG9yIGEgcGhhc2UuDQo+IA0KPiBJZiBubyByZWFkeS1t YWRlIHBhdGNoIGFscmVhZHkgZXhpc3RzLCB0aGVuIC4uLl0NCg0KYW5kDQoNCj4gVG8gYWRk IG5ldyBmdW5jdGlvbmFsaXR5LCBhIHBhdGNoIGlzIGFsbW9zdCBhbHdheXMgdGhlIG1vc3Qg Y29udmVuaWVudA0KPiBjaG9pY2Ugb2YgdGhlIHRocmVlIA0KDQouDQoNClRvIGdvIGZyb20g dGhlIHByaW5jaXBsZSBhcyB1c2VkIGluIHlvdXIgcGF0Y2ggdG8gdGhlIHByaW5jaXBsZSBh cyB1c2VkIA0KaW4gbXkgcGF0Y2gsIHBlcmhhcHMgaW4gdGhlIHByb2Nlc3MgaXQgaXMgYmVu dCBzaWRld2F5cyBhbmQgc2hvZWhvcm5lZC4NCkJ1dCBhZnRlciBhbGwgdGhlIGJlbmRpbmcg YW5kIHNob2Vob3JuaW5nLCBpdCBzZWVtcyB0byBmaXQgd2VsbCBub3cgaW4gDQp0aGUgYmVn aW5uaW5nIChhbmQgbm90IHdlbGwgYXQgYWxsIHRoZSBlbmQpLCBzbyBJJ20gbm90IHNlZWlu ZyBhbnkgDQpwcm9ibGVtcyBoZXJlLg0KDQo+IA0KPj4+IEF0IHRoZSByaXNrIG9mIHJlc3Bv bmRpbmcgam9raW5nbHkgdG8gd2hhdCB3YXMgbWVhbnQgc2VyaW91czogSQ0KPj4+IGRpZG4n dCBrbm93IHdlIHN1ZGRlbmx5IGdhaW5lZCAyMCBndWlkaW5nIHByaW5jaXBsZXMuDQo+Pg0K Pj4gMjUgbGluZXMgYXJlIGZvciB0aGUgZ3VpZGluZyBwcmluY2lwbGVzIChzb21ldGltZXMg cmVmZXJyaW5nIHRvIGENCj4+IHByaW5jaXBsZSBvZiBlbHNld2hlcmUgaW4gR3VpeCwgc29t ZXRpbWVzIGEgbmV3IHByaW5jaXBsZSBmb3INCj4+ICJNb2RpZnlpbmcgU291cmNlcyIpLsKg IFlvdSBwcm9wb3NlZCB0byAnY2FjaGUnIHRoZW0gc29tZWhvdy7CoCBJbg0KPj4gR3VpbGUs IHRvIGNhY2hlIHNvbWV0aGluZywgeW91IGNhbiB1c2UgJ2RlbGF5L2ZvcmNlJy7CoCBCdXQg dGhpcw0KPj4gaW5jcmVhc2VzIHRoZSBhbW91bnQgb2YgY29kZSAoZHVlIHRvIHRoZSBhZGRp dGlvbmFsIHVzZSBvZiAnZGVsYXknKSwNCj4+IGluc3RlYWQgb2YgZGVjcmVhc2luZy4NCj4+ DQo+PiBUaGUgZG9jdW1lbnRhdGlvbiBlcXVpdmFsZW50ICh3aGF0ZXZlciB0aGF0IG1pZ2h0 IGJlLCBJIGFtIG5vdCBzZWVpbmcNCj4+IG9uZSBteXNlbGYpIHdvdWxkIHRoZW4gYWxzbyBi ZSBhdCBsZWFzdCBhcyBsb25nLCBtYXliZSBldmVuIGEgbGl0dGxlDQo+PiBsb25nZXIgZHVl IHRvIHRoZSB1c2Ugb2YgJ2RlbGF5Jy4NCj4gT2theSwgc28gSSBkaWQgbWlzdW5kZXJzdGFu ZCB0aG9zZSAyNSBsaW5lcyBhcyAyNSBsaW5lcyB3aXRoaW4gdGhlIHRleHQNCj4gY2FsbGlu ZyBiYWNrIHRvIHRob3NlIGd1aWRpbmcgcHJpbmNpcGxlcyByYXRoZXIgdGhhbiAyNSBsaW5l cyBmb3IgdGhlDQo+IGd1aWRpbmcgcHJpbmNpcGxlcyB0aGVtc2VsdmVzLiAgU3RpbGwsIDI1 IGxpbmVzIGFyZSBhIGxpdHRsZSBtdWNoLA0KPiBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgdGhl IGJ1bGsgb2YgaXQgZXhwbGFpbnMgdGhlIHNlbWFudGljcyBvZiB0aGUNCj4gcGFja2FnZXMn IHNvdXJjZSBmaWVsZC4NCg0KSSB0aGluayB3ZSdsbCBoYXZlIHRvIGFncmVlIHRvIGRpc2Fn cmVlIG9uIHRoYXQuDQoNCj4gDQo+Pj4+IEkgc3VwcG9zZSB0YWJsZSBpdGVtcyBtaWdodCB0 YWtlIHR3byBsZXNzIGxpbmUgb3Igc28gbGVzcyB0aGFuDQo+Pj4+IHN1YnN1YnNlY3Rpb25z LCBidXQgSSBkb24ndCB0aGluayB0aGF0J3Mgc3VmZmljaWVudCByZWFzb24gdG8NCj4+Pj4g c3RlcCBhd2F5IGZyb20gYSBuaWNlIHNlY3Rpb24gc3RydWN0dXJlLg0KPj4+IEFub3RoZXIg cmVhc29uIGlzIHRoYXQgeW91IGNhbiBlbmQgYSB0YWJsZSBpbiB0aGUgbWlkZGxlIG9mIGEN Cj4+PiBzZWN0aW9uLCB3aGljaCB5b3UgY2FuJ3QgZG8gd2l0aCBzdWJzZWN0aW9ucy7CoCBI ZW5jZSB3aHkgSSdtIGFibGUNCj4+PiB0byBwdXQgYSByZW1hcmsgYXQgdGhlIGJvdHRvbSwg d2hpY2ggeW91IGhhdmUgdG8gY2x1bXNpbHkgZml0IGludG8NCj4+PiB0aGUgdG9wLg0KPj4N Cj4+IEkgY2FuLCBpbmRlZWQsIG5vdCBwdXQgdGhlICdjb252ZW5pZW5jZSBwcmluY2lwbGUn IGF0IHRoZSBib3R0b20sDQo+PiBleGNlcHQgcGVyaGFwcyBieSBhZGRpbmcgYSBuZXcgc3Vi c3Vic2VjdGlvbiwgYW5kIGZvciB0YWJsZXMgYWRkaW5nDQo+PiBzdWNoIGEgcmVtYXJrIGF0 IHRoZSBib3R0b20gaXMgaW5kZWVkIG1vcmUgY29udmVuaWVudC4NCj4+DQo+PiBIb3dldmVy LCBJIGRvbid0IHNlZSB0aGUgJ2hhdmUgdG8gY2x1bXNpbHknIGhlcmUgLS0gYXMgZXhwbGFp bmVkDQo+PiBlbHNld2hlcmUsIEkgYmVsaWV2ZSB0aGF0IHRoZSAnY29udmVuaWVuY2UgcHJp bmNpcGxlJyBzaG91bGRuJ3QgYmUNCj4+IHNlcGFyYXRlZCBmcm9tIHRoZSBvdGhlciBwcmlu Y2lwbGVzIGFuZCB0aGF0IGl0IGZpdHMgbmljZWx5IG5leHQgdG8NCj4+IHRoZSB0aGUgcHJp bmNpcGxlcyAtLS0gdGhlcmUgaXMgbm8gJ2hhdmUgdG8nLCBiZWNhdXNlIEkgY2hvb3NlIGZv cg0KPj4gdGhpcywgYW5kIEkgYW0gbm90IHNlZWluZyBhbnkgJ2NsdW1zaW5lc3MnIGhlcmUu DQo+IEkgdGhpbmsgd2UnZCBoYXZlIHRvIGRlYmF0ZSBjaG9pY2UgdnMuIGZvcmNlIGhlcmUg d2hpY2ggd291bGQgYmUgYQ0KPiByYXRoZXIgbG9uZyBhc2lkZSwgYnV0IHRvIG1ha2UgbXkg YXJndW1lbnQgc2hvcnQsIHlvdXIgY2hvaWNlIG9mIGhvdyB0bw0KPiBzdHJ1Y3R1cmUgdGhp cyBzZWN0aW9uICh0YWJsZSB2cyBzdWJzZWN0aW9ucykgZGlyZWN0bHkgaW5mbHVlbmNlcyB5 b3VyDQo+ICJjaG9pY2UiIHdoZXJlIHRvIHBsYWNlIHBhcnRpY3VsYXIgaW5mb3JtYXRpb24N Cg0KU3VyZS4NCg0KPiBpbiBhIHdheSB0aGF0IG1pZ2h0DQo+IGluaGliaXQgbmF0dXJhbCBp bmZvcm1hdGlvbiBmbG93Lg0KDQpJJ20gbm90IHNlZWluZyBpdC4gIEFzIEkndmUgZXhwbGFp bmVkIHByZXZpb3VzbHksIHB1dHRpbmcgdGhlIHByZW1pc2VzIA0KKD0gZ3VpZGluZyBwcmlu Y2lwbGVzKSBiZWZvcmUgdGhlIGNvbmNsdXNpb25zICg9IHdvcmtlZCBvdXQgY2FzZXMgLyAN CnNvbHV0aW9ucykgaXMgYSBsb2dpY2FsIChoZW5jZSwgbmF0dXJhbCkgaW5mb3JtYXRpb24g ZmxvdywgYW5kIA0KaW50cm9kdWNpbmcgdGhlbSBvbi10aGUtd2F5IG9yIGltcGxpY2l0bHkg aXMgYWQtaG9jICh1bm5hdHVyYWwpLg0KPj4+PiBUaGUgcGF0Y2ggZG9lcyB0aGlzLCBjdXJy ZW50bHkuwqAgSXQgYWxyZWFkeSBwcm9wb3NlcyBhIG51bWJlciBvZg0KPj4+PiBoYW1tZXJz IChwYXRjaGVzLCBzbmlwcGV0cyBhbmQgcGhhc2VzKSBhbmQgcHVycG9zZXMgKGFkZGluZyBu ZXcNCj4+Pj4gZnVuY3Rpb25hbGl0eSwgZml4aW5nIHRlY2huaWNhbCBpc3N1ZXMsIHVuYnVu ZGxpbmcsIC4uLikuDQo+Pj4+IEFsc28sIHRoZSBzY2VuYXJpbyAib2ggbm8sIGhvd2V2ZXIg d2lsbCBJIHB1dCB0aGlzIG5haWwgaW50byBhDQo+Pj4+IHdhbGwiDQo+Pj4+IGFjdHVhbGx5 IGhhcHBlbmVkIC0tIHNlZSB0aGUgU2hlcGhlcmQgZGlzY3Vzc2lvbiwgd2hlcmUgdGhlcmUg d2FzDQo+Pj4+IGEgbG90IG9mIGRpc2FncmVlbWVudCBvbiBob3cgbmFpbHMgKD0gc21hbGwg d29yay1hcm91bmQgaW4gdGhlDQo+Pj4+IE1ha2VmaWxlKSBzaG91bGQgYmUgcHV0IGluIHdh bGxzICg9IHBhdGNoZXMsIHNuaXBwZXQsIHBoYXNlPykuDQo+Pj4+IEl0DQo+Pj4+IHdhcyB0 aGUgd2hvbGXCoHJlYXNvbiB0byBzdGFydCB3cml0aW5nIGEgZG9jdW1lbnRhdGlvbiBwYXRj aC4NCj4+PiBZb3UgbWlnaHQgd2FudCB0byBhZGQgYSBsaW5rIGhlcmUgaWYgaXQgc3VwcG9y dHMgeW91ciBhcmd1bWVudCwgYnV0DQo+Pj4gd2l0aG91dCBsb29raW5nIGF0IHRoZSBkaXNj dXNzaW9uIHRoaXMgcmF0aGVyIHNvdW5kcyBsaWtlICJvaCBubywgSQ0KPj4+IGhhdmUgdGhy ZWUgaGFtbWVycywgd2hpY2ggb25lIGRvIEkgcGljaz8iIOKAkyB3aGljaCwgZmFpciBlbm91 Z2gsIGlzDQo+Pj4gc3RpbGwgYSBwcm9ibGVtLCBidXQgb25lIHRoYXQgbmVpdGhlciBvZiBv dXIgcGF0Y2hlcyB3b3VsZCBjYXVzZQ0KPj4+IGltaG8uDQo+Pg0KPj4gQXMgSSB0aGluayBJ J3ZlIHdyaXR0ZW4gcHJldmlvdXNseSwgdGhlIHdob2xlIHBvaW50IHdhcyB0byBzb2x2ZSB0 aGF0DQo+PiBwcm9ibGVtLiBGb3IgdGhlIGRpc2N1c3Npb24sIHNlZToNCj4+DQo+PiAqIGh0 dHBzOi8vaXNzdWVzLmd1aXguZ251Lm9yZy81NDIxNg0KPj4gKg0KPj4gaHR0cHM6Ly95aGV0 aWwub3JnL2d1aXgvYzRjMGEwNzEtMmUwMy1kNGQ2LTY3MTgtMDU0MjRkMjFkMTQ2QHRlbGVu ZXQuYmUvDQo+PiAqDQo+PiBodHRwczovL3loZXRpbC5vcmcvZ3VpeC1kZXZlbC84NGUxM2Vm N2Q0MzcwNjJkZjVjY2E1MWExMmU2ZGE1NDkyOWUwMTc2LmNhbWVsQHRlbGVuZXQuYmUvDQo+ Pg0KPj4gTm90IHNvbHZpbmcgdGhlIHByb2JsZW0gZGVmZWF0cyB0aGUgd2hvbGUgcG9pbnQs IGFzIHRoZSBwdXJwb3NlIGlzIHRvDQo+PiBzb2x2ZSB0aGF0IHByb2JsZW0uDQo+IEkgdGhp bmsgd2UgbWlnaHQgYmUgZGlzYWdyZWVpbmcgYWJvdXQgd2hhdCBjb25zdGl0dXRlcyAic29s dmluZyB0aGUNCj4gcHJvYmxlbSIgaGVyZS4gIENvcnJlY3QgbWUgaWYgSSdtIHdyb25nLCBi dXQgdG8gbWUgaXQgc2VlbXMgYW55DQo+IHNjZW5hcmlvIHRoYXQgaXMgbm90IGNvdmVyZWQg Ynkgd2hhdGV2ZXIgcGF0Y2ggaXMgYXBwbGllZCBjb3VudHMgYXMNCj4gIm5vdCBoYXZpbmcg c29sdmVkIHRoZSBwcm9ibGVtIi4NCg0KSXQgZG9lc24ndCAtLSBJIGNvbnNpZGVyIHRoZSBT aGVwaGVyZCBwcm9ibGVtIHRvIGJlIHNvbHZlZCBieSBteSBwYXRjaCANCihhbGJlaXQgcmF0 aGVyIHdlYWtseSwgc2VlIGxhdGVyKSwgYW5kIHRoZSB3aWRlciBwcm9ibGVtIG9mIHVuY2xl YXIgDQpndWlkZWxpbmVzIGFuZCBwb2xpY3kgb24gc25pcHBldC9waGFzZS9wYXRjaCB0byBi ZSwgcGVyaGFwcyBub3QgcmVhbGx5IA0Kc29sdmVkLCBidXQgc3RpbGwgbXVjaCBpbXByb3Zl ZCAodGhpcyB0aW1lIG5vdCB3ZWFrbHkpLg0KDQo+IEkgcGVyc29uYWxseSBmaW5kIHRoaXMg bGluZSBvZg0KPiByZWFzb25pbmcgcXVlc3Rpb25hYmxlLCBhcyB0aGVyZSBhcmUgcGVyZmVj dGx5IHZhbGlkIHJlYXNvbnMgd2h5DQo+IG11bHRpcGxlIHRvb2xzIGNvdWxkIGFwcGx5Lg0K DQpTZWUgcHJldmlvdXMgcGFyYWdyYXBoLg0KDQo+IFRha2UgdGhlIHByb2JsZW0gb2YgZW1i ZWRkaW5nIGEgc3RvcmUgcGF0aC4gIFlvdSBjb3VsZCBmb3IgaW5zdGFuY2UNCj4gcmVwbGFj ZSBhbGwgb2NjdXJlbmNlcyBvZiAic2giIHdpdGggL2dudS9zdG9yZS8uLi4vYmluL3NoLCBv ciB5b3UgY291bGQNCj4gZmlyc3QgcmVwbGFjZSB0aGVtIGluIGEgcGF0Y2ggd2l0aCAiQHNo QCIgYW5kIHRoZW4gcmVwbGFjZSB0aGF0IHdpdGgNCj4gL2dudS9zdG9yZS8uLi4vYmluL3No LiAgT2YgY291cnNlLCB5b3UgcmFyZWx5IGhhdmUgdG8gZG8gdGhlIGxhdHRlciBhbmQNCj4g dGhlIGZvcm1lciBpcyBzaW1wbGVyLCBoZW5jZSB3aHkgeW91IHdpbGwgb2Z0ZW4gc2VlIHRo ZSBmb3JtZXIsIGJ1dA0KPiB0aGF0IGRvZXNuJ3QgbWVhbiB0aGUgbGF0dGVyIGlzIGludmFs aWQuDQoNCkl0J3MgY29udHJhcnkgdG8gJ0l0IHByZWZlcmFibHkgc2hvdWxkIGFsc28gd29y ayBvbiBub24tR3VpeCBzeXN0ZW1z4oCZIC0tIA0Kbm90IGludmFsaWQsIGJ1dCBzdGlsbCB1 c3VhbGx5ICgqKSBhZ2FpbnN0IChwcm9wb3NlZCkgcG9saWN5IGJlY2F1c2UgYSANCmRpcmVj dCBzdWJzdGl0dXRlKiBpcyBhdCB0aGUgc2FtZSB0aW1lIG1vcmUgY29udmVuaWVudCBhbmQg Zm9sbG93cyBhbGwgDQp0aGUgdGhlIHByaW5jaXBsZXMuDQoNCigqKSBzb21ldGltZXMsIGlu IGNhc2Ugb2Ygc2hlbGwgc2NyaXB0cywgYSBzdWJzdGl0dXRlKiBpcyBmcmFnaWxlIA0KKHN1 YnN0aXR1dGluZyB0b28gbXVjaCksIGluIHdoaWNoIGNhc2UgYSAic2giIC0+ICJAc2hAIiBi ZWNvbWVzIG1vcmUgDQpjb252ZW5pZW50IGFuZCBoZW5jZSB0aGUgdmlvbGF0aW9uIG9mIHRo ZSAnbm9uLUd1aXggc3lzdGVtJyBydWxlcyANCmJlY29tZXMgYWNjZXB0YWJsZS4NCg0KPj4+ Pj4gQW5kIGlmIHRoZXkgZG9uJ3QgZmluZCBhbnl0aGluZywgdGhleSBzZWUgdGhlIGhhbmR5 IGxpdHRsZSBsaW5lDQo+Pj4+PiBhdCB0aGUgYm90dG9tIHNheWluZyAidXNlIHdoYXRldmVy IHlvdSB0aGluayBpcyBjb252ZW5pZW50Ii4NCj4+Pj4gTm93aGVyZSBkaWQgdGhlIHBhdGNo IGltcGx5IHRoYXQgdGhlIGxpc3RlZCBjYXNlcyB3ZXJlIGFsbCBjYXNlcy4NCj4+Pj4gSW4g ZmFjdCwgaW4gdHdvIHBsYWNlcyBpbiB0aGUgaW50cm9kdWN0aW9uIGl0IGlzIGltcGxpZWQg dGhhdCB0aGUNCj4+Pj4gZXhhbXBsZXMgYXJlIG5vdCBleGhhdXN0aXZlLCBhbmQgdGhhdCB0 aGV5IGNhbiBjaG9vc2UgYWNjb3JkaW5nDQo+Pj4+IHRvIGNvbnZlbmllbmNlwqAgWy4uLl0N Cj4+PiBFbXBoYXNpcyBvbiBoYW5keSBsaXR0bGUgbGluZSByYXRoZXIgdGhhbiBuZWVkaW5n IHRvIGJlIHRvbGQgdHdpY2UNCj4+PiAocGFydGljdWxhcmx5IGlmIHBlb3BsZSBoYXZlIG5v IGlkZWEgd2hhdCB0byBleHBlY3QgZHVlIHRvIG5vdA0KPj4+IGhhdmluZyBsb29rZWQgYXQg dGhlIHdvcmtlZC1vdXQgY2FzZXMgeWV0KS4NCj4+DQo+PiBUaGV5IGRvbid0IG5lZWQgdG8g YmUgdG9sZCB0d2ljZS7CoCBBbHNvLCBteSBwYXRjaCBhbHNvIGhhcyB0aGF0IGhhbmR5DQo+ PiBsaXR0bGUgbGluZSAoYWxiZWl0IGRpZmZlcmVudGx5IHdvcmRlZCksIHNlZSB0aGUgJ2d1 aWRpbmcNCj4+IHByaW5jaXBsZXMnLg0KPj4NCj4+IEFsc28sIG9uIHRoZSAnbm8gaWRlYSB3 aGF0IHRvIGV4cGVjdCcgLS0gdGhpcyBpcyBleGFjdGx5IHRoZSBzYW1lIGZvcg0KPj4geW91 ciBwYXRjaCB0b28/wqAgSW4gYm90aCBwYXRjaGVzLCBpZiB0aGUgdXNlciBvbmx5IHJlYWRz IHRoZQ0KPj4gaW50cm9kdWN0aW9uIGFuZCBjb25jbHVzaW9uIChpZiBhbnkpIGFuZCBkb2Vz bid0IHJlYWQgdGhlIGFjdHVhbA0KPj4gKHJlbGV2YW50IGV4YW1wbGVzKS8oZXhwbGFuYXRp b24gb2YgcGF0Y2hlcywgc25pcHBldHMsIHBoYXNlcyksIHRoZW4NCj4+IHRoYXQncyB0aGVp ciBwcm9ibGVtLg0KPiBJIGRvIHRoaW5rIGEgdGFibGUgaW4gdGhlIG1pZGRsZSBvZiB0aGUg c2VjdGlvbiBpcyBoYXJkIHRvIGlnbm9yZSwNCg0KSSB0aGluayBzbyB0b28sIGhlbmNlIG15 IHByZXZpb3VzIHJlc3BvbnNlLg0KDQo+IGJ1dCBzdXBwb3NlIGZvciB0aGUgc2FrZSBvZiBh cmd1bWVudCB0aGF0IHRoZXkgZG8sIFsuLi5dDQoNCkdpdmVuIHRoaXMgcmVzcG9uc2UsIEkg YXNzdW1lIEkndmUgbWlzaW50ZXJwcmV0ZWQgd2hhdCB5b3UgbWVhbnQgd2l0aCANCuKAmG5v dCBoYXZpbmcgbG9va2VkIGF0IHRoZSB3b3JrZWQtb3V0IGNhc2VzIHlldOKAmS4NCg0KPj4+ Pg0KPj4+Pj4gSSBhbHNvIGV4cGFuZCBhIGxpdHRsZSBvbiB0aGUgYmVuZWZpdHMgYW5kIGRy YXdiYWNrcyBvZg0KPj4+Pj4gdGhlc2UgYXBwcm9hY2hlcyBhcyB5b3Ugd291bGQgd2hlbiBk ZXNjcmliaW5nIGRlc2lnbiBwYXR0ZXJucy4NCj4+Pj4gVGhpcyBpcyBhbHNvIGRvbmUgaW4g bXkgcGF0Y2guIFsuLi5dDQo+Pj4gVGhpcyBpcyBub3QgYWJvdXQgdGhlIGNvbnRhaW5lZCBp bmZvcm1hdGlvbiwgYnV0IHRoZSBzdHJ1Y3R1cmUgb2YNCj4+PiB0aGUgY29udGFpbmVkIGlu Zm9ybWF0aW9uLg0KPj4+DQo+Pj4gTXkgc29sdXRpb24tPnByb2JsZW0gc3R5bGUgZm9sbG93 cyByb3VnaGx5IHRoaXMgc3R5bGU6DQo+Pj4gMS4gc29sdXRpb24NCj4+PiAyLiBwcm9ibGVt cyBpdCBpcyBrbm93biB0byBzb2x2ZQ0KPj4+IDMuIGhvdyB0byB1c2UNCj4+PiA0LiBwcm9w ZXJ0aWVzLCBjYXZlYXRzLCBldGMuDQo+Pj4NCj4+PiBZb3VyIHByb2JsZW0tPnNvbHV0aW9u IHN0eWxlIHJvdWdobHkgaGFzIHRoZSBmb2xsb3dpbmc6DQo+Pj4gMS4gcHJvYmxlbQ0KPj4+ IDIuIChzZXQgb2YpIHNvbHV0aW9uKHMpDQo+Pj4gMy4gaWYgbW9yZSB0aGFuIG9uZSBzb2x1 dGlvbiwgbWF5YmUgYSBoZWxwIHRvIHNlbGVjdA0KPj4NCj4+IEFsc28sIGluIG5vIHBhcnRp Y3VsYXIgb3JkZXINCj4+DQo+PiAgwqDCoCA0LjogaG93IHRvIHVzZQ0KPj4gIMKgwqAgNS46 IGV4cGxhbmF0aW9uIHdoeSBpdCBpcyBwcmVmZXJyZWQgKHByb3BlcnRpZXMsIGNhdmVhdHM/ KQ0KPiBObyBwYXJ0aWN1bGFyIG9yZGVyIGlzIHByb2JsZW1hdGljLA0KDQpJJ20gbm90IHNl ZWluZyB3aHkuDQoNCiAgYnV0IG1vcmUgaW1wb3J0YW50bHkgaWYgYQ0KPiB0ZWNobm9sb2d5 IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgKGd1YXJhbnRlZWQgYnkgdGhlIHBpZ2VvbmhvbGUN Cj4gcHJpbmNpcGxlKSwgdGhlbiBlaXRoZXIgaXRzIHByb3BlcnRpZXMgZ2V0IHJlcGVhdGVk IChub3QgZ29vZCBmb3INCj4gbGVuZ3RoKSBvciBzY2F0dGVyZWQgKG5vdCBnb29kIGZvciB0 aGUgZmxvdyB5b3Ugd2FudCkuICBBZ2FpbiwgYQ0KPiBzdHJ1Y3R1cmFsIHByb2JsZW0uDQoN ClRoYXQncyBlcXVhbGx5IGFwcGxpZXMgdG8geW91ciBwYXRjaCB0b28sIHRob3VnaD8gIChT d2l0Y2hpbmcgDQoidGVjaG5vbG9neSIgd2l0aCAicHJvYmxlbSIuKQ0KDQpBbHNvLCBJJ3Zl IHJlLXJlYWQgbXkgcGF0Y2gsIGFuZCBJIGRpZG4ndCBmaW5kIGFueSByZXBlYXRlZCBwcm9w ZXJ0aWVzIA0Kb3Igc2NhdHRlcmluZywgZXhjZXB0IGZvciBhIHNpbmdsZSBwcm9wZXJ0eSAo cGF0Y2hlcyBhcmUgdXBzdHJlYW1hYmxlKToNCg0KID4gRmlyc3QsIHdoZW4gdGhlIGZpeCBp cyBub3QgR3VpeC1zcGVjaWZpYywgdXBzdHJlYW1pbmcgdGhlIGZpeCBpcw0KID4gc3Ryb25n bHkgZGVzaXJlZCB0byBhdm9pZCB0aGUgYWRkaXRpb25hbCBtYWludGVuYW5jZSBjb3N0IHRv IEd1aXguDQogPiBbLi4uXQ0KPiBBcyBzdWNoLCBwYXRjaGVzIGFyZSBwcmVmZXJyZWQuICBI b3dldmVyLCBhcyB3aXRoIGJ1Zw0KPiBmaXhlcywgdXBzdHJlYW1pbmcgdGhlIG5ldyBmdW5j dGlvbmFsaXR5IGlzIGRlc2lyZWQuDQoNCkFzIHN1Y2gsIEknbSBub3QgZm9sbG93aW5nIHlv dXIgcG9pbnQgaGVyZS4NCg0KPj4+IFRoaXMgbWFrZXMgaXQgc28gdGhhdCBwZW9wbGUgbWln aHQgaGF2ZSB0byBnbyB0byBhIGRpZmZlcmVudA0KPj4+IHN1YnNlY3Rpb24gdGhhbiB0aGUg b25lIHRoZXkgcmVhZCBmb3IgdGhlaXIgc29sdXRpb24gdG8gZmluZCBvdXQNCj4+PiBhYm91 dCBwb3RlbnRpYWwgY2F2ZWF0cywgZS5nLiBub3QgZW1iZWRkaW5nIHN0b3JlIHBhdGhzIGlu IGENCj4+PiBzbmlwcGV0Lg0KPj4NCj4+IEkgYXNzdW1lIHRoZWlyIHByb2JsZW0gd2FzICJY IGRvZXNuJ3QgZmluZCBZIi7CoCBUaGlzIGJlaW5nIGENCj4+IHRlY2huaWNhbCBpc3N1ZSwg dGhleSBnbyB0byAiRml4aW5nIHRlY2huaWNhbCBpc3N1ZXMiLsKgIEluIHRoYXQNCj4+IHN1 YnN1YnNlY3Rpb24sICB0aGVyZSBhcmUgdGhlIHdvcmRzOg0KPj4NCj4+PiBTZWNvbmRseSwg aWYgdGhlIGZpeCBvZiBhIHRlY2huaWNhbCBpc3N1ZSBlbWJlZHMgYSBzdG9yZSBmaWxlIG5h bWUsDQo+Pj4gdGhlbiBpdCBoYXMgdG8gYmUgYSBwaGFzZS7CoCBPdGhlcndpc2UsIGlmIHRo ZSBzdG9yZSBmaWxlIG5hbWUgd2VyZQ0KPj4+IGVtYmVkZGVkIGluIHRoZSBzb3VyY2UsIHRo ZSByZXN1bHQgb2YgQGNvbW1hbmR7Z3VpeCBidWlsZCAtLXNvdXJjZX0NCj4+PiB3b3VsZCBi ZSB1bnVzYWJsZSBvbiBub24tR3VpeCBzeXN0ZW1zIGFuZCBhbHNvIGxpa2VseSB1bnVzYWJs ZSBvbg0KPj4+IEd1aXggc3lzdGVtcyBvZiBhbm90aGVyIGFyY2hpdGVjdHVyZS4NCj4+DQo+ PiBzbyB0aGV5IGFjdHVhbGx5IGRvIGtub3cgb2YgdGhlIGNhdmVhdCAnZG9uJ3QgZW1iZWQg c3RvcmUgcGF0aHMgaW4gYQ0KPj4gc25pcHBldCwgZG8gaXQgaW4gYSBwaGFzZSBpbnN0ZWFk JywgYW5kIHRoZXkgZGlkIG5vdCBuZWVkIHRvIGdvIHRvIGENCj4+IGRpZmZlcmVudCBzdWJz dWJzZWN0aW9uLg0KPiBUeXBpY2FsIGhhcHB5IHBhdGguDQoNCkluZGVlZCwgaXQncyBhIGhh cHB5IHBhdGghDQoNCj4+Pj4NCj4+Pj4+IFlvdXIgcHJvYmxlbS0+c29sdXRpb24gYXBwcm9h Y2ggaW5zdGVhZCBsZWF2ZXMgcGVvcGxlIHdvbmRlcmluZw0KPj4+Pj4gd2hlbiB0aGVpciBw YXJ0aWN1bGFyIHVzZSBjYXNlIGhhcyBub3QgYmVlbiBkZXNjcmliZWQuDQo+Pj4+IFNlZSBt eSByZXBseSB0byDigJhBbmQgaWYgdGhleSBkb24ndCBmaW5kIGFueXRoaW5nLCB0aGV5IHNl ZSB0aGUNCj4+Pj4gaGFuZHkgbGl0dGxlIGxpbmUgYXQgdGhlIGJvdHRvbSBzYXlpbmcgInVz ZSB3aGF0ZXZlciB5b3UgdGhpbmsgaXMNCj4+Pj4gY29udmVuaWVudOKAmS4NCj4+Pj4+IEl0 IGdpdmVzIHRoZW0gYSBzb2x1dGlvbiByYXRoZXIgdGhhbiB0aGUgdG9vbHMgdG8gYnVpbGQN Cj4+Pj4+IHNvbHV0aW9ucyB3aXRoLg0KPj4+PiBJdCBkb2VzIGdpdmUgdGhlIHRvb2xzOiBz bmlwcGV0cywgcGF0Y2hlcyBhbmQgcGhhc2VzLg0KPj4+IEFzIGZhciBhcyBJIHJlYWQsIGl0 IGRlc2NyaWJlcyBub25lIG9mIHRob3NlLsKgIEl0IHB1dHMgb3V0IGd1aWRpbmcNCj4+PiBw cmluY2lwbGVzIGFuZCBzb21lIGFscmVhZHkgd29ya2VkLW91dCBjYXNlcy4NCj4+IEhlcmUg YXJlIHRoZSBkZXNjcmlwdGlvbnM6DQo+Pg0KPj4+IEd1aXggaGFzIHRyZWUgbWFpbiB3YXlz IG9mIG1vZGlmeWluZyB0aGUgc291cmNlIGNvZGUgb2YgYSBwYWNrYWdlLA0KPj4+IHRoYXQg eW91IGFzIGEgcGFja2FnZXIgbWF5IHVzZS7CoCBUaGVzZSBhcmUgcGF0Y2hlcywgc25pcHBl dHMgYW5kDQo+Pj4gcGhhc2VzDQo+Pg0KPj4gT25jZSB0aGUgdXNlciBrbm93cyBfd2hpY2hf IG9mIHRoZSB0aHJlZSB0aGV5IHNob3VsZCB1c2UgKGJ5DQo+PiBjb25zdWx0aW5nIHRoZSBm b2xsb3dpbmcgc3Vic3Vic2VjdGlvbnMpLCB0aGV5IGNhbiB0aGVuIHNlYXJjaCBmb3INCj4+ ICdwYXRjaCcsICdzbmlwcGV0JyBhbmQgJ3BoYXNlcycgaW4gdGhlIG1hbnVhbCBmb3IgbW9y ZSBpbmZvcm1hdGlvbiwNCj4+IG5vIG5lZWQgdG8gZHVwbGljYXRlIHRoYXQgaW5mb3JtYXRp b24uDQo+IFBvaW50IHRha2VuLCBidXQgaW1obyBjcm9zcy1yZWZlcmVuY2VzIGFyZSBuaWNl IGZvciB0aG9zZSB3aG8ganVzdA0KPiBsZWFybmVkICJva2F5LCBJIG5vdyBrbm93IEkgbmVl ZCB0byBzb2x2ZSBteSB0ZWNobmljYWwgcHJvYmxlbSB3aXRoIGENCj4gcGhhc2UsIGhvdyBk byBJIGRvIHRoYXQ/Ig0KDQpUaGV5IGFyZSBpbmRlZWQuICBCdXQgSSdtIG5vdCBmb2xsb3dp bmcgd2hhdCB5b3UgbWVhbiB3aXRoICJCdXQiIGhlcmUuDQpJIGRpZG4ndCBjbGFpbSBhbnl0 aGluZyBhYm91dCBjcm9zcy1yZWZlcmVuY2VzIHRoZXJlPw0KDQpEbyB5b3Ugd2FudCBtZSB0 byBhZGQgYSBmZXcgY3Jvc3MtcmVmZXJlbmNlcyAoZm9yICdwYXRjaCcsICdzbmlwcGV0JyBh bmQgDQoncGhhc2VzJyk/DQoNCj4+Pj4gQWxzbywgImdpdmluZyB0aGUgdG9vbHMgdG8gYnVp bGQgc29sdXRpb25zIHdpdGgiIGRvZXMgbm90IGhlbHANCj4+Pj4gd2l0aCB0aGXCoHByb2Js ZW0gdGhhdCBJIGFpbWVkIHRvIHNvbHZlIC0tIHRoZXJlIHdhcyBkaXNhZ3JlZW1lbnQNCj4+ Pj4gb24gd2hhdCB0aGXCoGFwcHJvcHJpYXRlIHRvb2xzIGFyZSAoc2VlOiBTaGVwaGVyZCks IHNvIGl0IG5vdCBqdXN0DQo+Pj4+IG5lZWRzIHRvIGdpdmUgdGhlwqB0b29scywgYnV0IGFs c28gdGhlIHNvbHV0aW9ucy4NCj4+PiBJIGRvbid0IHNlZSBob3cgbXkgcGF0Y2ggbGFja3Mg dGhpcyBpbmZvcm1hdGlvbiBob3dldmVyLg0KPj4NCj4+IElJVUMsIHRoZSByYXcgaW5mb3Jt YXRpb24gc2hvdWxkIHVzdWFsbHkgYmUgaW5kZWVkIGFsbCB0aGVyZSwgYnV0IHRoZQ0KPj4g dXNlciBoYXMgdG8gY29uc3VsdCBfYWxsXyBvZiB0aGUgc2VjdGlvbnMgdG8gZGV0ZXJtaW5l IHdoaWNoIG9wdGlvbg0KPj4gKHBhdGNoLCBzbmlwcGV0LCBwaGFzZSkgaXMgYXBwcm9wcmlh dGUsIGhhdmluZyB0byBhc3NlbWJsZSBhbGwgdGhlDQo+PiBpbmZvcm1hdGlvbiBpcyAoYSkg YSB3YXN0ZSBvZiB0aW1lIGFuZCAoYikgY2FuIGxlYWQgdG8gZGlmZmVyZW50DQo+PiBpbnRl cnByZXRhdGlvbnMgYW5kIGNvbmNsdXNpb25zIChzZWU6IFNoZXBoZXJkKS4NCj4+DQo+PiBN b3JlIGNvbmNyZXRlbHksIEkgY2Fubm90IHVzZSB5b3VyIHBhdGNoIHRvIGRlY2lkZSBiZXR3 ZWVuIHBoYXNlcywNCj4+IHNuaXBwZXRzIGFuZCBwYXRjaGVzIGZvciB0aGUgU2hlcGhlcmQg aXNzdWU6DQo+Pg0KPj4gKiBub25lIG9mIHRocmVlIGFwcGVhciB0byBiZSBmb3JiaWRkZW4g YnkgeW91ciBkb2N1bWVudGF0aW9uDQo+PiAqIHRoZXJlIGlzIG5vIHJlY29tbWVuZGF0aW9u IGZvciAncGF0Y2hlcycgKElJUkMgaXQgd2Fzbid0IGFjY2VwdGVkDQo+PiB1cHN0cmVhbSBh bmQgdGhlcmUgd2FzIG5vIGludGVudCB0byBzdWJtaXQgaXQgdXBzdHJlYW0sIGl0IGJlaW5n DQo+PiByZWFsbHkgYSBHdWlsZSBidWcsIG5vdCBhIFNoZXBoZXJkIGJ1ZykNCj4+ICogdGhl cmUgaXMgbm8gcmVjb21tZW5kYXRpb24gZm9yIHNuaXBwZXRzIChpdCdzIGFsbCBmcmVlLCBu bw0KPj4gYnVuZGxpbmcpDQo+PiAqIGJ1aWxkIHBoYXNlcyBhcmUgJ3RvIGJlIGF2b2lkZWQn IChidXQgbm90IGZvcmJpZGRlbiksIGFzIGl0DQo+PiByZXN1bHRlZA0KPj4gIMKgwqAgaW4g b2JzZXJ2YWJseSBkaWZmZXJlbnQgcnVudGltZSBiZWhhdmlvdXIgKGJlaW5nIGEgYnVnIGZp eCkNCj4+DQo+PiAtLSB0aHJlZSAob3IgYXQgYmVzdCwgdHdvLCBpZiBidWlsZCBwaGFzZXMg YXJlIGRpc2NvdW50ZWQpIG9wdGlvbnMNCj4+IHJlbWFpbi7CoCBNeXNlbGYsIEkgd291bGQg dGhlbiBjb25zaWRlciAnc25pcHBldHMnIHRvIGJlIHRoZSBtb3N0DQo+PiBjb252ZW5pZW50 LCBidXQgc29tZSBvdGhlcnMgKHNlZTogU2hlcGhlcmQsIElJUkMpIHdvdWxkIHJlYWxseSB3 YW50IGENCj4+IHBhdGNoIGluc3RlYWQsIGJlY2F1c2UgJ3BhdGNoZXMgY2FuIGJlIHJldmVy dGVkJyBvciBzb21ldGhpbmcgbGlrZQ0KPj4gdGhhdC4NCj4+DQo+PiBBcyBzdWNoLCB5b3Ug YXJlIGdpdmluZyB0aGUgdG9vbHMgKHNuaXBwZXRzIC8gcGF0Y2hlcyAvIHBoYXNlcywgc29t ZQ0KPj4gZG93bnNpZGVzIGFuZCB1cHNpZGVzKSwgYnV0IGRpZmZlcmVudCBwZW9wbGUgY2Fu IGNvbnN0cnVjdCBkaWZmZXJlbnQNCj4+IHNvbHV0aW9ucyBmcm9tIHRob3NlIHRvb2xzIGV2 ZW4gaW4gdGhlIHNhbWUgc2l0dWF0aW9uLCBsZWFkaW5nIHRvDQo+PiBjb25mbGljdHMuDQo+ Pg0KPj4gSWYgSSB1c2UgbXkgcGF0Y2ggaW5zdGVhZCwgSSBnbyB0byAiZml4aW5nIHRlY2hu aWNhbCBpc3N1ZXMiLiBUaGlzDQo+PiBzZWN0aW9uIHRlbGxzIG1lIHRvIHVzZSBhIHBhdGNo IG9yIGEgc25pcHBldC7CoCBBcyB0aGUgZml4IGlzIG5vdA0KPj4gR3VpeC1zcGVjaWZpYywg aXQgcmVjb21tZW5kcyBhIHBhdGNoIHRvIHNhdmUgdGltZSB3aGVuIHVwc3RyZWFtaW5nLg0K Pj4gQ29uY2x1c2lvbjogd3JpdGUgYSBwYXRjaC7CoCBJdCB3YXMgYSBHdWlsZSBidWcsIHNv IHRoZSBmaXggd2FzIGENCj4+IHBhdGNoIHRvIEd1aWxlLsKgIEJ1dCB0aGF0IHdvdWxkIHRh a2UgdGltZSBhbmQgdXBzdHJlYW0gdG9vayB0aGUNCj4+IHJlc3BvbnNpYmlsaXR5IGZvciBh IGZpeCwgc28gdGhlICdlZmZpY2llbnQgdGltZSB0aGluZycgZG9lc24ndA0KPj4gcmVhbGx5 IGFwcGx5IGFuZCBhIHNtYWxsIHdvcmstYXJvdW5kIChzZXR0aW5nIG9wdGltaXNhdGlvbiBm bGFncykNCj4+IHN1ZmZpY2VzLg0KPj4NCj4+IEluIHRoaXMgc2l0dWF0aW9uLCB0aGUgc3Vi c3Vic2VjdGlvbiBkb2Vzbid0IGNhcmUgYXQgYWxsIGlmIHlvdSBnbw0KPj4gZm9yIGEgc25p cHBldCwgc28gYXBwbHkgdGhlIGxhc3QgZ3VpZGluZyBwcmluY2lwbGU6IGdvIGZvciB0aGUN Cj4+IHNpbXBsZXN0IHRoaW5nOiBhIHNuaXBwZXQuIChVbmxlc3MgeW91IGFscmVhZHkgaGF2 ZSBhIHBhdGNoLCB0aGVuIGENCj4+IHBhdGNoIGlzIHNpbXBsZXN0LikNCj4+IERvZXMgc29t ZW9uZSBlbHNlIGhhdmUgYSBkaWZmZXJlbnQgaWRlYSBvbiB3aGF0J3Mgc2ltcGxlc3Q/wqAg RG9lc24ndA0KPj4gcmVhbGx5IG1hdHRlciwg4oCYU29tZXRpbWVzIHRoaXMgaXMgc3ViamVj dGl2ZSwgd2hpY2ggaXMgYWxzbyBmaW5l4oCZLg0KPiBJIGRvIGdldCB0aGUgaW1wcmVzc2lv biB0aGF0IHRoaXMgcGF0Y2ggc2ltcGx5IGNvZGlmaWVzIHdoYXQgeW91IGZlZWwNCj4gaXMg cmlnaHQgYmFzZWQgb24gdGhlIHNoZXBoZXJkIHNpdHVhdGlvbg0KDQpUcnVlLCBleGNlcHQg Zm9yIHRoZSAnc2ltcGx5JywgYXMgSSBhbHNvIGNvbnNpZGVyZWQgc2V2ZXJhbCBvdGhlciAN CnNpdHVhdGlvbnMgKFJlbW92aW5nIGJ1bmRsZWQgbGlicmFyaWVzLCBSZW1vdmluZyBub24t ZnJlZSBzb2Z0d2FyZSwgDQpBZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkpLiAgSSBkbyBub3Qg c2VlIHRoZSBwcm9ibGVtIHdpdGggdGhpcyAtLSB0aGUgDQpwcm9wb3NlZCBwb2xpY3kgd2Fz IGNvbnNpZGVyZWQgd29ya2FibGUgZXZlbiBpZiBzb21lIHdvdWxkIGxpa2UgaXQgdG8gYmUg DQphIGxpdHRsZSBiaXQgZGlmZmVyZW50LCBhbmQgaWYgb3RoZXJzIGZlZWwgc3Ryb25nbHkg YWJvdXQgdGhleSBjb3VsZCwgSSANCmRvbid0LCBtYXliZSBzZXQgdXAgYSB2b3RlIHN5c3Rl bSBvciBzdWNoLg0KDQo+IHJhdGhlciB0aGFuIHRoaW5raW5nIGFib3V0IHRoZSBnZW5lcmFs IGNhc2UsDQoNClNlZTogc2V2ZXJhbCBvdGhlciBjYXNlcyB0aGF0IHNob3VsZCBjb3ZlciBt b3N0IHNpdHVhdGlvbnMgZW5jb3VudGVyZWQgDQppbiBwcmFjdGljZSwgYW5kIGZvciB0aGUg cGFydHMgb2YgdGhlIGdlbmVyYWwgY2FzZSB0aGF0IGFyZW4ndCANCndvcmtlZC1vdXQgeWV0 LCB0aGVyZSBhcmUgdGhlIGd1aWRpbmcgcHJpbmNpcGxlcy4NCg0KPiB3aGljaCBpcyB3aHkg bXkgcGF0Y2ggbWFrZXMgd2Vha2VyIHN0YXRlbWVudHMgaGVyZS4gIElmDQo+IHRoaXMgaXNz dWUgY291bGQgaGF2ZSBiZWVuIGF2b2lkZWQgd2l0aCBhICM6bWFrZS1mbGFnLCB3ZSB3b3Vs ZCBoYXZlDQo+IHVzZWQgdGhhdC4NCj4gDQo+IE1vcmUgaW1wb3J0YW50bHksIEkgZmFpbCB0 byBzZWUgdGhlIHN1cGVyaW9yaXR5IG9mIHlvdXIgcGF0Y2ggaGVyZSA+IElJVUMgbmVpdGhl ciBwYXRjaCBvZmZlcnMgYSB1bmlxdWUgc29sdXRpb24gdG8gdGhlIHNoZXBoZXJkIHRoaW5n LCBzbw0KPiB0aGUgcm9vbSBmb3IgZGViYXRlIHJlbWFpbnMNCg0KSW4gbXkgcGF0Y2gsIG11 bHRpcGxlIG9wdGlvbnMgcmVtYWluLCBidXQgdGhlcmUgaXMgbm8gcmVhbCByb29tIGZvciAN CmRlYmF0ZS4gIE1vcmUgY29uY3JldGVseToNCg0KPiBXaGVuIHRoZXJlIGlzIG1vcmUgdGhh biBvbmUgd2F5IHRvIGRvIHNvbWV0aGluZywgY2hvb3NlIHdoaWNoZXZlciBtZXRob2QNCj4g aXMgdGhlIHNpbXBsZXN0LiAgU29tZXRpbWVzIHRoaXMgaXMgc3ViamVjdGl2ZSwgd2hpY2gg aXMgYWxzbyBmaW5lLg0KPiBXaGF0IG1hdHRlcnMgaXMgdGhhdCB5b3UgdXNlIHRlY2huaXF1 ZXMgdGhhdCBhcmUgY29tbW9uIHdpdGhpbiB0aGUNCj4gY29tbXVuaXR5IChpLmUuLCBwYXR0 ZXJucyB0aGF0IGFwcGVhciB0aHJvdWdob3V0IEBjb2Rle2dudS9wYWNrYWdlcy8uLi59KQ0K PiBhbmQgYXJlIHRodXMgY2xlYXJseSBsZWdpYmxlIGZvciByZXZpZXdlcnMuDQoNCml0IGlz IGNvbnNpZGVyZWQgc3ViamVjdGl2ZSwgaGF2aW5nIG11bHRpcGxlIG9wdGlvbnMgaWYgZmlu ZSEgIFRvIA0KY29ycmVjdCBhIHBhY2thZ2luZyBmb2xsb3dpbmcgdGhlIG90aGVyIG9wdGlv biAodG8gaGVscCB3aXRoIGZvbGxvd2luZyANCnRoZSBwb2xpY2llcyksIHlvdSBkb24ndCBo YXZlIHRvIGRlYmF0ZSBvbiB3aGF0J3MgdGhlIHByb3BlciBvcHRpb24gdG8gDQpnZXQgYSBm aXggaW4sIGFzIGJvdGggYXJlIGNvbnNpZGVyZWQgYWNjZXB0YWJsZS4gIEluIG1hbnkgY2Fz ZXMsIG5vIG5lZWQgDQpmb3IgZGViYXRlLCBqdXN0IHBpY2sgb25lIGFuZCBtb3ZlIG9uLiAg KEFsc28gdGhlIGNhc2UgZm9yIHlvdXIgcGF0Y2ggSUlVQy4pDQoNClRoaW5ncyBhcmUgYWxz byBwaHJhc2VkIHJlY29uY2lsaWF0b3J5LCBlO2cuOg0KDQo+IFRvIG1ha2UgdGhpbmdzIG1v cmUgY29uY3JldGUgYW5kIHRvIHJlc29sdmUgY29uZmxpY3RzIGJldHdlZW4gdGhlDQo+IHBy aW5jaXBsZXMsIGEgZmV3IGNhc2VzIGhhdmUgYmVlbiB3b3JrZWQgb3V0Og0KDQpIb3dldmVy LCBpbiB5b3VyIHBhdGNoLCB0aGVyZSBpcyBtb3JlIG9wcG9ydHVuaXR5IGZvciBjb25mbGlj dHMuIEUuZy46DQoNCj4gRWFjaCBvbmUgaGFzIGl0cyBzdHJlbmd0aHMgYW5kIGRyYXdiYWNr cywgYWxvbmcgd2l0aCBpbnRlbmRlZCBhbmRoaXN0b3JpY2FsbHkgZGVyaXZlZCB1c2UgY2Fz ZXMuDQoNCkJ5IHRoaXMgbGluZSwgYXJndW1lbnRzIGxpa2UgJ1ggd2FzIGhpc3RvcmljYWxs eSB0aGUgaW50ZW5kZWQgcHVycG9zZSBvZiANClksIHVzaW5nIFkgZm9yIFogaXMgaW5jb3Jy ZWN0JyBiZWNvbWUgcmVhc29uYWJsZSwgd2hpY2ggbWFrZXMgDQpkaXNhZ3JlZW1lbnRzIG1v cmUgZGlmZmljdWx0IHRvIHJlc29sdmUgKGFzIHlvdSBrbm93IG5lZWQgdG8gY29uc3VsdCAN Cmhpc3RvcnkgYW5kIGJlY2F1c2UgaGlzdG9yeSBpcyBmaXhlZCwgc28gbm8gaW1wcm92ZW1l bnRzIHdvdWxkIGJlIA0KcG9zc2libGUgYW55bW9yZSBpbiBhcmVhcyB3aGVyZSB0aGVyZSBp cyBhIGhpc3RvcmljYWxseSBpbnRlbmRlZCB1c2UgY2FzZSkuDQoNCj4gWW91IGNvdWxkIGNs YWltIHRoYXQgbXkgcGF0Y2ggb2ZmZXJzIG1vcmUNCj4gcm9vbSwgd2hpY2ggZmFpciBlbm91 Z2gsIGl0IGRvZXMsIGJ1dCBvbiB0aGUgc2FtZSB0b2tlbiBpdCBhbGxvd3MNCj4gcGVvcGxl IHRvIHNlZSB0aGF0IHRoZSBndWlkZWxpbmVzIGhhdmUgYmVlbiBmb2xsb3dlZCBhbmQgdGhl IHBhdGNoIGNhbg0KPiBiZSBhcHBsaWVkLg0KPiANCj4+PiBJbiBwYXJ0aWN1bGFyLCBmb3Ig cmV2aWV3IHB1cnBvc2VzLCBtaW5lIHNob3VsZCBiZSBlYXNpZXIgdG8gd29yaw0KPj4+IHdp dGguICBGb3IgaW5zdGFuY2UsIHRoZSByZXZpZXdlciBzZWVzIGEgaGFzaCBlbWJlZGRlZCBp biBhDQo+Pj4gc25pcHBldCwgc2VlcyBpbiB0aGUgc25pcHBldCBlbnRyeSB0aGF0IHlvdSBz aG91bGRuJ3QgZG8gdGhhdCwgYW5kDQo+Pj4gY2FuIHRodXMgc2F5ICJub3BlLCBkb24ndCBk byBhIHNuaXBwZXQgaGVyZSIuDQoNClRoYXQgaXMgYWxzbyB0aGUgY2FzZSBmb3IgcHJvYmxl bS0+c29sdXRpb24/ICBBICJzaCIgLT4gIyQoZmlsZS1hcHBlbmQgDQpiYXNoLW1pbmltYWwg Ii9iaW4vc2giKSBzdWJzdGl0dXRpb24gY2FuIGJlIHJlY29nbmlzZWQgb24gc2lnaHQgYXMg bm90IA0KcG9zc2libHkgYmVpbmcgYW55dGhpbmcgZWxzZSB0aGFuIGEgdGVjaG5pY2FsIGZp eCwgYW5kIHRoZW4gdGhlIA0Kc3Vic3Vic2VjdGlvbiBvbiB0ZWNobmljYWwgZml4ZXMgbWVu dGlvbnMgdGhhdCB0aG9zZSBtdXN0IGJlIGRvbmUgaW4gcGhhc2VzLg0KDQpPciwgYW5vdGhl ciBleHBsYW5hdGlvbjogcmV2aWV3ZXJzIHVzdWFsbHkgaGF2ZSBzZWVuIGEgbG90IG9mIG1v cmUgDQpwYWNrYWdlcyB0aGFuIGEgbmV3IHBhY2thZ2VyLiAgQmVjYXVzZSBvZiB0aGF0LCBh bmQgYmVjYXVzZSB0aGV5IGhhdmUgDQpmYW1pbGlhcmlzZWQgdGhlaXJzZWx2ZXMgd2l0aCBw b2xpY3ksIHRoZXkgaGF2ZSBvdmVyIHRpbWUgYXV0b21hdGljYWxseSANCmJ1aWx0IGEgbWVu dGFsICdyZXZlcnNlIGluZGV4JyBvZiBzb2x1dGlvbnMtPnByb2JsZW1zLg0KPj4gSSB0aGlu ayB3ZSBzaG91bGQgb3B0aW1pc2UgZm9yIHBhY2thZ2VycyBiZWZvcmUgcmV2aWV3ZXJzDQo+ IENvZGUgaXMgbW9yZSBvZnRlbiByZWFkIHRoYW4gd3JpdHRlbiwgc28gb3B0aW1pc2luZyBm b3IgdGhlIHJlYWRlciBpcw0KPiBvcHRpbWl6aW5nIGZvciB0aGUgcGFja2FnZXIgYXMgd2Vs bC4NCg0KV2hpbGUgYWxsIHJldmlld2VycyBhcmUgcmVhZGVycywgbm90IGFsbCByZWFkZXJz IGFyZSByZXZpZXdlcnMsIGFuZCANCnJldmlld2luZyB1c3VhbGx5IGhhcHBlbnMgb25seSBv bmNlLCBtYXliZSB0d2ljZSBwZXIgcGF0Y2guDQoNCj4+PiBSZWdhcmRsZXNzIG9mIHdoaWNo IHBhdGNoIHdlIHBpY2ssIGl0IHNob3VsZCBub3QgbWFuZGF0ZSBhDQo+Pj4gcGFydGljdWxh ciBzb2x1dGlvbiBpbiBwb3RlbnRpYWxseSBjb250ZW50aW91cyBjYXNlcywNCj4+DQo+PiBB Y3R1YWxseSB0aGUgd2hvbGUgcG9pbnQgd2FzIHRvIG1hbmRhdGUgYSBwYXJ0aWN1bGFyIHNv bHV0aW9uIGZvciB0aGUNCj4+IGNvbnRlbnRpb3VzIGNhc2VzLCBzZWUgU2hlcGhlcmQuDQo+ IEJ1dCBJIGRpc2FncmVlLg0KPiANCj4gTWVtZXMgYXNpZGUsIHBsZWFzZSByZWZyYWluIGZy b20gdGhlICJJJ20gcmlnaHQsIGRvIHRoaXMiIHN0eWxlICh3aGljaA0KPiBpcyBhbm90aGVy IHByb2JsZW0gd2l0aCB0aGUgInByb2JsZW0tY2VudHJpYyIgYXBwcm9hY2gpLA0KDQpJcyB0 aGlzIHJlZmVycmluZyB0byB0aGUgc3R5bGUgb2YgdGhlIGRvY3VtZW50YXRpb24gcGF0Y2g/ ICBJZiBzbzogaXQgDQpkb2VzIGV4cGxhaW4gd2h5IHRoZSAiZG8gdGhpcyIgaXMgcmlnaHQs IHNvIEkgZG9uJ3Qgc2VlIHRoZSBwcm9ibGVtLiAgRG8gDQp5b3UgaGF2ZSBhIHBhcnRpY3Vs YXIgcG9pbnQgb2YgdGhlIGRvY3VtZW50YXRpb24gaW4gbWluZCB5b3UgY29uc2lkZXIgDQp3 cm9uZyAoKik/DQoNCigqKSBwb2ludHMgSSBrbm93IG9mOg0KKiBrZWVwIGxpc3RzIC8gcmVt b3ZlIGxpc3RzIChmb3IgdGhlIGZvb3Rub3RlIGFib3V0IG5vdC15ZXQtcG9saWN5IG9uIA0K cmVtb3ZpbmcgdGhpbmdzIGluIHBhdGNoZXMpDQoqIHRoZSBndWlkaW5nIHByaW5jaXBsZXMg YXJlbid0IGd1aWRpbmcgcHJpbmNpcGxlcw0KDQo+IGJ1dCByYXRoZXINCj4gZm9jdXMgb24g d3JpdGluZyBhIHBhdGNoIHRoYXQgbWFrZXMgcmV2aWV3ZXJzIG5vdCBkaXNjYXJkIGEgcGF0 Y2ggZHVlDQo+IHRvIGZvcm1hbGl0aWVzLg0KDQpJIHRoaW5rIHRoZSBwYXRjaCAodjEgYW5k IHYyKSBzYXRpc2ZpZXMgdGhhdC4NCg0KPiBJZiB0aGUgc2hlcGhlcmQgdGhpbmcgaGFkIG5l ZWRlZCBhbiB1cHN0cmVhbSBwYXRjaCwNCj4gZXZlbiB3aXRoIGEgc25pcHBldCB0aGF0IHBh dGNoIGNvdWxkIGhhdmUgZWFzaWx5IGJlZW4gY3JlYXRlZCBieQ0KPiBjb252ZXJ0aW5nIHRo YXQgc25pcHBldCB0byBhIHNlZCwgc28gbW9yZSB0aW1lIHdhcyB3YXN0ZWQgZGViYXRpbmcg dGhhbg0KPiBvdmVyd29ya2luZy4NCg0KSSBkbyBub3Qgc2VlIHlvdXIgcG9pbnQgaGVyZSAt LSAjNTc1OTggaXMgYWJvdXQgZG9jdW1lbnRhdGluZy9tYWtpbmcgDQpwb2xpY3ksIG5vdCAn c2hvdWxkIHdlIHNwZW50IHRpbWUgb24gY29ycmVjdGluZyB0aGUgc2hlcGhlcmQgcGFja2Fn ZSB0byANCm1hdGNoIHBvbGljeSAvIGNvbnZpbmNpbmcgdGhlIG90aGVyIHBhcnR5IHRoYXQg dGhlIHN0YXR1cyBxdW8gbWF0Y2hlcyANCnBvbGljeScuDQoNCj4+PiBhbmQgYWxzbyBwb2lu dCB0b3dhcmRzIHRoZSByaWdodCBzb2x1dGlvbi7CoCBTZWUgb3VyIGRpc2N1c3Npb25zIG9u DQo+Pj4gdGhlIGluZGl2aWR1YWwgc29sdXRpb25zIG9uIHBvaW50cyBpbiB3aGljaCBJIGJl bGlldmUgeW91J3ZlDQo+Pj4gZXJyb3JlZC4NCj4+DQo+PiBUaGVzZSBhcmU6DQo+Pg0KPj4g KiB0aGUgdHlwbydzDQo+PiAqIGluY2x1ZGluZyAic2tpcHBpbmcgdGVzdHMgaW5kaWNhdGlu ZyBmYWlsdXJlIHVuZGVyIOKAmEZpeGluZw0KPj4gdGVjaG5pY2FsIGlzc3Vlc+KAmSINCj4+ ICogImRvbid0IG1lbnRpb24gZmlsZSBuYW1lcyBvZiBub24tZnJlZSB0aGluZ3MgaW4gcGF0 Y2hlcyINCj4+DQo+PiBEaWQgSSBtaXNzIGFueT8NCj4gSSdtIHByZXR0eSBzdXJlIHRoZXJl J3MgYWxzbyBhIGRpc2N1c3Npb24gb24gc3RvcmUgcGF0aCBlbWJlZGRpbmdzIGF0DQo+IHRo ZSB2ZXJ5IGxlYXN0LiAgRm9yZ2l2ZSBtZSBpZiBJIHRvbyBtaXNzZWQgc29tZXRoaW5nLg0K VGhlcmUgd2FzIGEgZGlzY3Vzc2lvbiBvbiBzdG9yZSBmaWxlIG5hbWUgZW1iZWRkaW5ncy4g IFRoZXJlIHdhcyBubyANCm1lbnRpb24gb2YgYW55IGVycm9ycyBpbiB0aGUgZG9jdW1lbnRh dGlvbiBvZiBzdG9yZSBmaWxlIG5hbWVzLiAgSUlSQywgDQp3ZSBhZ3JlZSBvbiBob3cgc3Rv cmUgZmlsZSBuYW1lIGVtYmVkZGluZ3MgbXVzdCBiZSBkb25lLiAgVGhlcmUgd2VyZSwgDQpo b3dldmVyLCBwcm9wb3NhbHMgdG8gZXh0ZW5kIHRoZSBkb2N1bWVudGF0aW9uIHRvIGNvdmVy IOKAmGhvdyB0byBlbWJlZOKAmSANCmluIG1vcmUgZGV0YWlsIChzdWJzdGl0dXRlKiArIHNl YXJjaC1pbnB1dC1maWxlIC4uLiksIGJ1dCBubyBlcnJvcnMuDQoNCkdyZWV0aW5ncywNCk1h eGltZS4NCg== --------------RneJSr4rW60YFuWvSkivYcO6 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----- --------------RneJSr4rW60YFuWvSkivYcO6-- --------------A60oN2LySqwFEM12Dd7BpjjC-- --------------b304Y9bejnymBhUvwnTF0ap0 Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wnsEABYIACMWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYxuJgAUDAAAAAAAKCRBJ4+4iGRcl7op3 AQCYF8cmXphoV90U1eiSpXMlv1ETCRG9s0Prpbm/bTfHPQEAr76d7Ou/26rqpoEkxxsU+Hb6Ubc9 B3HI+QwSS8wO9g4= =BW3S -----END PGP SIGNATURE----- --------------b304Y9bejnymBhUvwnTF0ap0--