From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1E309A034F; Mon, 7 Jun 2021 22:39:26 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 939084068B; Mon, 7 Jun 2021 22:39:25 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 846744067E for ; Mon, 7 Jun 2021 22:39:24 +0200 (CEST) Received: from [192.168.45.100] (unknown [188.242.7.54]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id 7F33A7F51A; Mon, 7 Jun 2021 23:39:23 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 7F33A7F51A DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=oktetlabs.ru; s=default; t=1623098363; bh=eMWa8o6GsNGKJeO3QRP0Kw3pfkpBMsv+PqL8mh3yrKs=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=Xq6zvmnpWIC81+ZZJElC2AM7mVdk2ADP+nk6Bk2OhWzP7OP8aqRNfrwEhH1p+izL9 A588Cv6yl4Rpd0bVYINHGunAMo/Np4gmA/P+CgZW/A2Hn3LYC/FPOHFivYgEb1CnXE AHHWHmgCl0I9OBFIt+3uS62VSYdZs7Z1JM7hwQss= To: Ilya Maximets , Andrew Rybchenko , dev@dpdk.org Cc: Eli Britstein , Smadar Fuks , Hyong Youb Kim , Ori Kam , Jerin Jacob , John Daley , Thomas Monjalon , Ferruh Yigit References: <20210601111420.5549-1-ivan.malov@oktetlabs.ru> <8c4f559e-3430-e2d5-1199-f1d4f4a8546d@ovn.org> <4ffdb830-53ce-6ae6-7271-3eeb546b78de@oktetlabs.ru> <87d9d57c-b41c-b594-b80e-aa8af3deeefe@ovn.org> <23336d09-32fd-54a6-9750-cb90ff638f87@ovn.org> <5d65f18e-6016-160f-3683-659162b56dfd@oktetlabs.ru> <839d80d6-8a2d-5b72-7686-ffe77a758f82@ovn.org> From: Ivan Malov Message-ID: <62830c67-0d37-422b-9786-af2f31dcae4b@oktetlabs.ru> Date: Mon, 7 Jun 2021 23:39:11 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 MIME-Version: 1.0 In-Reply-To: <839d80d6-8a2d-5b72-7686-ffe77a758f82@ovn.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: base64 Subject: Re: [dpdk-dev] [RFC PATCH] ethdev: clarify flow action PORT ID semantics X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" T24gMDcvMDYvMjAyMSAyMjoyNywgSWx5YSBNYXhpbWV0cyB3cm90ZToNCj4gT24gNi8zLzIx IDE6MjkgUE0sIEl2YW4gTWFsb3Ygd3JvdGU6DQo+PiBPbiAwMy8wNi8yMDIxIDEyOjI5LCBJ bHlhIE1heGltZXRzIHdyb3RlOg0KPj4+IE9uIDYvMi8yMSA5OjM1IFBNLCBJdmFuIE1hbG92 IHdyb3RlOg0KPj4+PiBPbiAwMi8wNi8yMDIxIDIwOjM1LCBJbHlhIE1heGltZXRzIHdyb3Rl Og0KPj4+Pj4gKERyb3BwZWQgQnJvYWRjb20gZm9sa3MgZnJvbSBDQy7CoCBNYWlsIHNlcnZl ciByZWZ1c2VzIHRvIGFjY2VwdCB0aGVpcg0KPj4+Pj4gZW1haWxzIGZvciBzb21lIHJlYXNv bjogIlJlY2lwaWVudCBhZGRyZXNzIHJlamVjdGVkOiBEb21haW4gbm90IGZvdW5kLiINCj4+ Pj4+IFBsZWFzZSwgdHJ5IHRvIGFkIHRoZW0gYmFjayBvbiByZXBseS4pDQo+Pj4+Pg0KPj4+ Pj4gT24gNi8yLzIxIDY6MjYgUE0sIEFuZHJldyBSeWJjaGVua28gd3JvdGU6DQo+Pj4+Pj4g T24gNi8yLzIxIDM6NDYgUE0sIElseWEgTWF4aW1ldHMgd3JvdGU6DQo+Pj4+Pj4+IE9uIDYv MS8yMSA0OjI4IFBNLCBJdmFuIE1hbG92IHdyb3RlOg0KPj4+Pj4+Pj4gSGkgSWx5YSwNCj4+ Pj4+Pj4+DQo+Pj4+Pj4+PiBUaGFuayB5b3UgZm9yIHJldmlld2luZyB0aGUgcHJvcG9zYWwg YXQgc3VjaCBzaG9ydCBub3RpY2UuIEknbSBhZnJhaWQgdGhhdCBwcmlvciBkaXNjdXNzaW9u cyBvdmVybG9vayB0aGUgc2ltcGxlIGZhY3QgdGhhdCB0aGUgd2hvbGUgcHJvYmxlbSBpcyBu b3QgbGltaXRlZCB0byBqdXN0IFZGIHJlcHJlc2VudG9ycy4gQWN0aW9uIFBPUlRfSUQgaXMg YWxzbyB1c2VkIHdpdGggcmVzcGVjdCB0byB0aGUgYWRtaW4gUEYncyBldGhkZXYsIHdoaWNo ICJyZXByZXNlbnRzIGl0c2VsZiIgKGFuZCBieSBubyBtZWFucyBpdCByZXByZXNlbnRzIHRo ZSB1bmRlcmx5aW5nIHBoeXNpY2FsL25ldHdvcmsgcG9ydCkuIEluIHRoaXMgY2FzZSwgb25l IGNhbm5vdCBzdGF0ZSB0aGF0IHRoZSBhcHBsaWNhdGlvbiB0cmVhdHMgaXQgYXMgYSBwaHlz aWNhbCBwb3J0LCBqdXN0IGxpa2Ugb25lIHN0YXRlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBw ZXJjZWl2ZXMgcmVwcmVzZW50b3JzIGFzIFZGcyB0aGVtc2VsdmVzLg0KPj4+Pj4+Pg0KPj4+ Pj4+Pg0KPj4+Pj4+PiBJIGRvbid0IHRoaW5rIHRoYXQgaXQgd2FzIG92ZXJsb29rZWQuwqAg SWYgZGV2aWNlIGlzIGluIGEgc3dpdGNoZGV2IG1vZGUgdGhhbg0KPj4+Pj4+PiB0aGVyZSBp cyBhIFBGIHJlcHJlc2VudG9yIGFuZCBWRiByZXByZXNlbnRvcnMuwqAgQXBwbGljYXRpb24g dHlwaWNhbGx5IHdvcmtzDQo+Pj4+Pj4+IG9ubHkgd2l0aCByZXByZXNlbnRvcnMgaW4gdGhp cyBjYXNlIGlzIGl0IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIGhhdmUNCj4+Pj4+Pj4g cmVwcmVzZW50b3IgYW5kIHRoZSB1cHN0cmVhbSBwb3J0IGF0dGFjaGVkIHRvIHRoZSBzYW1l IGFwcGxpY2F0aW9uIGF0IHRoZQ0KPj4+Pj4+PiBzYW1lIHRpbWUuwqAgQ29uZmlndXJhdGlv biB0aGF0IGlzIGFwcGxpZWQgYnkgYXBwbGljYXRpb24gdG8gdGhlIHJlcHJlc2VudG9yDQo+ Pj4+Pj4+IChQRiBvciBWRiwgaXQgZG9lc24ndCBtYXR0ZXIpIGFwcGxpZXMgdG8gdGhlIGNv cnJlc3BvbmRpbmcgdXBzdHJlYW0gcG9ydA0KPj4+Pj4+PiAoYWN0dWFsIFBGIG9yIFZGKSBi eSBkZWZhdWx0Lg0KPj4+Pj4+DQo+Pj4+Pj4gUEYgaXMgbm90IG5lY2Vzc2FyaWx5IGFzc29j aWF0ZWQgd2l0aCBhIG5ldHdvcmsgcG9ydC4gSXQNCj4+Pj4+PiBjb3VsZMKgIGJlIG1hbnkg UEZzIGFuZCBqdXN0IG9uZSBuZXR3b3JrIHBvcnQgb24gTklDLg0KPj4+Pj4+IEV4dHJhIFBG cyBhcmUgbGlrZSBWRnMgaW4gdGhpcyBjYXNlLiBUaGVzZSBQRnMgbWF5IGJlDQo+Pj4+Pj4g cGFzc2VkIHRvIGEgVk0gaW4gYSBzaW1pbGFyIHdheS4gU28sIHdlIGNhbiBoYXZlIFBGDQo+ Pj4+Pj4gcmVwcmVzZW50b3JzIHNpbWlsYXIgdG8gVkYgcmVwcmVzZW50b3JzLiBJLmUuIGl0 IGlzDQo+Pj4+Pj4gaW5jb3JyZWN0IHRvIHNheSB0aGF0IFBGIGluIHRoZSBjYXNlIG9mIHN3 aXRjaGRldiBpcw0KPj4+Pj4+IGEgcmVwcmVzZW50b3Igb2YgYSBuZXR3b3JrIHBvcnQuDQo+ Pj4+Pj4NCj4+Pj4+PiBJZiB3ZSBwcmVmZXIgdG8gdGFsayBpbiByZXByZXNlbnRvcnMgdGVy bWlub2xvZ3ksIHdlDQo+Pj4+Pj4gbmVlZCA0IHR5cGVzIG9mIHByZXByZXNlbnRvcnM6DQo+ Pj4+Pj4gIMKgwqAgLSBQRiByZXByZXNlbnRvciBmb3IgUENJZSBwaHlzaWNhbCBmdW5jdGlv bg0KPj4+Pj4+ICDCoMKgIC0gVkYgcmVwcmVzZW50b3IgZm9yIFBDSWUgdmlydHVhbCBmdW5j dGlvbg0KPj4+Pj4+ICDCoMKgIC0gU0YgcmVwcmVzZW50b3IgZm9yIFBDSWUgc3ViLWZ1bmN0 aW9uIChQQVNJRCkNCj4+Pj4+PiAgwqDCoCAtIG5ldHdvcmsgcG9ydCByZXByZXNlbnRvcg0K Pj4+Pj4+IEluIGZhY3QgYWJvdmUgaXMgUENJZSBvcmllbnRlZCwgYnV0IHRoZXJlIGFyZQ0K Pj4+Pj4+IG90aGVyIGJ1c2VzIGFuZCB3YXlzIHRvIGRlbGl2ZXIgdHJhZmZpYyB0byBhcHBs aWNhdGlvbnMuDQo+Pj4+Pj4gQmFzaWNhbGx5IHJlcHJlc2VudG9yIGZvciBhbnkgdmlydHVh bCBwb3J0IGluIHZpcnR1YWwNCj4+Pj4+PiBzd2l0Y2ggd2hpY2ggRFBESyBhcHAgY2FuIGNv bnRyb2wgdXNpbmcgdHJhbnNmZXIgcnVsZXMuDQo+Pj4+Pj4NCj4+Pj4+Pj4gRXhhY3RseSBz YW1lIHRoaW5nIGhlcmUgd2l0aCBQT1JUX0lEIGFjdGlvbi7CoCBZb3UgaGF2ZSBhIHBhY2tl dCBhbmQgYWN0aW9uDQo+Pj4+Pj4+IHRvIHNlbmQgaXQgdG8gdGhlIHBvcnQsIGJ1dCBpdCdz IG5vdCBzcGVjaWZpZWQgaWYgSFcgbmVlZHMgdG8gc2VuZCBpdCB0bw0KPj4+Pj4+PiB0aGUg cmVwcmVzZW50b3Igb3IgdGhlIHVwc3RyZWFtIHBvcnQgKGFnYWluLCBWRiBvciBQRiwgaXQg ZG9lc24ndCBtYXR0ZXIpLg0KPj4+Pj4+PiBTaW5jZSB0aGVyZSBpcyBubyBleHRyYSBpbmZv cm1hdGlvbiwgSFcgc2hvdWxkIHNlbmQgaXQgdG8gdGhlIHVwc3RyZWFtDQo+Pj4+Pj4+IHBv cnQgYnkgZGVmYXVsdC7CoCBUaGUgc2FtZSBhcyBjb25maWd1cmF0aW9uIGFwcGxpZXMgYnkg ZGVmYXVsdCB0byB0aGUNCj4+Pj4+Pj4gdXBzdHJlYW0gcG9ydC4NCj4+Pj4+Pj4NCj4+Pj4+ Pj4gTGV0J3MgbG9vayBhdCBzb21lIHdvcmtmbG93IGV4YW1wbGVzOg0KPj4+Pj4+Pg0KPj4+ Pj4+PiAgwqDCoMKgwqDCoMKgwqAgRFBESyBBcHBsaWNhdGlvbg0KPj4+Pj4+PiAgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHwNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+Pj4+ICDCoMKgwqDCoCArLS1QRi1y ZXAtLS0tLS1WRi1yZXAtLS0rDQo+Pj4+Pj4+ICDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4+PiAgwqDCoMKgwqAgfMKg wqDCoCBOSUMgKHN3aXRjaGRldinCoMKgwqAgfA0KPj4+Pj4+PiAgwqDCoMKgwqAgfMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+Pj4+Pj4gIMKg wqDCoMKgICstLS1QRi0tLS0tLS0tLVZGLS0tLS0tLSsNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDC oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKg IHzCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4+PiAgwqDCoMKgwqAgRXh0ZXJuYWzCoMKg wqDCoMKgwqAgVk0gb3Igd2hhdGV2ZXINCj4+Pj4+Pj4gIMKgwqDCoMKgIE5ldHdvcmsNCj4+ Pj4+Pg0KPj4+Pj4+IFNlZSBhYm92ZS4gUEYgPC0+IEV4dGVybmFsIE5ldHdvcmsgaXMgaW5j b3JyZWN0IGFib3ZlDQo+Pj4+Pj4gc2luY2UgaXQgbm90IGFsd2F5cyB0aGUgY2FzZS4gSXQg c2hvdWxkIGJlDQo+Pj4+Pj4gIk5QIDwtPiBFeHRlcm5hbCBuZXR3b3JrIiBhbmQgIk5QLXJl cCIgYWJvdmUgKE5QIC0NCj4+Pj4+PiBuZXR3b3JrIHBvcnQpLiBTb21ldGltZXMgUEYgaXMg YW4gTlAtcmVwLCBidXQgc29tZXRpbWVzDQo+Pj4+Pj4gaXQgaXMgbm90LiBJdCBpcyBqdXN0 IGEgcXVlc3Rpb24gb2YgZGVmYXVsdCBydWxlcyBpbg0KPj4+Pj4+IHN3aXRjaGRldiBvbiB3 aGF0IHRvIGRvIHdpdGggdHJhZmZpYyBpbmNvbWluZyBmcm9tDQo+Pj4+Pj4gbmV0d29yayBw b3J0Lg0KPj4+Pj4+DQo+Pj4+Pj4gQSBiaXQgbW9yZSBjb21wbGljYXRlZCBwaWN0dXJlIGlz Og0KPj4+Pj4+DQo+Pj4+Pj4gIMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rDQo+Pj4+Pj4gIMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgRFBESyBBcHBsaWNhdGlvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+ Pj4+ICDCoMKgwqDCoMKgICstLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tKw0KPj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8UEYwwqDCoMKgwqDCoCB8UEYx wqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKg wqDCoMKgIHwNCj4+Pj4+PiAgwqDCoMKgwqDCoCArLS1OUDEtcmVwLS0tTlAyLXJlcC0tLVBG Mi1yZXAtLS1WRi1yZXAtLSsNCj4+Pj4+PiAgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwNCj4+Pj4+PiAgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIE5JQyAoc3dpdGNoZGV2KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4+ICDC oMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4+ICDCoMKgwqDC oMKgICstLS1OUDEtLS0tLS0tTlAyLS0tLS0tLVBGMi0tLS0tLS0tVkYtLS0tKw0KPj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKg IHwNCj4+Pj4+PiAgwqDCoMKgwqDCoMKgIEV4dGVybmFswqDCoCBFeHRlcm5hbMKgwqDCoCBW TSBvcsKgwqDCoMKgIFZNIG9yDQo+Pj4+Pj4gIMKgwqDCoMKgwqAgTmV0d29yayAxwqAgTmV0 d29yayAywqAgd2hhdGV2ZXLCoMKgIHdoYXRldmVyDQo+Pj4+Pj4NCj4+Pj4+PiBTbywgc29t ZXRpbWVzIFBGIHBsYXlzIG5ldHdvcmsgcG9ydCByZXByZXNlbnRvciByb2xlIChQRjAsDQo+ Pj4+Pj4gUEYxKSwgc29tZXRpbWVzIGl0IHJlcXVpcmVzIHJlcHJlc2VudG9yIGl0c2VsZiAo UEYyKS4NCj4+Pj4+PiBXaGF0IHRvIGRvIGlmIFBGMiBpdHNlbGYgaXMgYXR0YWNoZWQgdG8g YXBwbGljYXRpb24/DQo+Pj4+Pj4gQ2FuIHdlIHJvdXRlIHRyYWZmaWMgdG8gaXQgdXNpbmcg UE9SVF9JRCBhY3Rpb24/DQo+Pj4+Pj4gSXQgaGFzIERQREsgZXRoZGV2IHBvcnQuIEl0IGlz IG9uZSBvZiBhcmd1bWVudHMgd2h5DQo+Pj4+Pj4gcGxhaW4gUE9SVF9JRCBzaG91bGQgcm91 dGUgRFBESyBhcHBsaWNhdGlvbi4NCj4+Pj4+DQo+Pj4+PiBPSy7CoCBUaGlzIGlzIG5vdCB2 ZXJ5IGRpZmZlcmVudCBmcm9tIG15IHVuZGVyc3RhbmRpbmcuwqAgVGhlIGtleQ0KPj4+Pj4g aXMgdGhhdCB0aGVyZSBpcyBhIHBhaXIgb2YgaW50ZXJmYWNlcywgb25lIGlzIG1vcmUgdmlz aWJsZSB0aGFuDQo+Pj4+PiB0aGUgb3RoZXIgb25lLg0KPj4+Pj4NCj4+Pj4+Pg0KPj4+Pj4+ IE9mIGNvdXJzZSwgc29tZSBhcHBsaWNhdGlvbnMgd291bGQgbGlrZSB0byBzZWUgaXQgYXMN Cj4+Pj4+PiAoc2ltcGxlciBpcyBiZXR0ZXIpOg0KPj4+Pj4+DQo+Pj4+Pj4gIMKgwqDCoMKg wqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+Pj4+Pj4g IMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFBESyBBcHBsaWNhdGlvbsKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4+ICDCoMKgwqDCoMKgIHzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4+ICDCoMKgwqDCoMKgICstLS1QRjAtLS0tLS0tUEYx LS0tLS0tUEYyLXJlcC0tLVZGLXJlcC0tKw0KPj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDC oCB8DQo+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHzC oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHwNCj4+Pj4+PiAgwqDCoMKgwqDC oMKgIEV4dGVybmFswqDCoCBFeHRlcm5hbMKgwqDCoCBWTSBvcsKgwqDCoMKgIFZNIG9yDQo+ Pj4+Pj4gIMKgwqDCoMKgwqAgTmV0d29yayAxwqAgTmV0d29yayAywqAgd2hhdGV2ZXLCoMKg IHdoYXRldmVyDQo+Pj4+Pj4NCj4+Pj4+PiBidXQgc29tZSwgSSBiZWxpZXZlLCByZXF1aXJl IGZ1bGwgcGljdHVyZS4gRm9yIGV4YW1wbGVzLA0KPj4+Pj4+IEknZCByZWFsbHkgbGlrZSB0 byBrbm93IGhvdyBtdWNoIHRyYWZmaWMgZ29lcyB2aWEgYWxsIDgNCj4+Pj4+PiBzd2l0Y2hk ZXYgcG9ydHMgYW5kIHJ1bm5pbmcgcnRlX2V0aF9zdGF0c19nZXQoMCwgLi4uKQ0KPj4+Pj4+ IChpLmUuIERQREsgcG9ydCAwIGF0dGFjaGVkIHRvIFBGMCkgSSdkIGxpa2UgdG8gZ2V0DQo+ Pj4+Pj4gTlAxLXJlcCBzdGF0cyAobm90IE5QMSBzdGF0cykuIEl0IHdpbGwgbWF0Y2ggZXhh Y3RseQ0KPj4+Pj4+IHdoYXQgSSBzZWUgaW4gRFBESyBhcHBsaWNhdGlvbi4gSXQgaXMgYW4g YXJndW1lbnQgd2h5DQo+Pj4+Pj4gcGxhaW4gUE9SVF9JRCBzaG91bGQgYmUgdHJlYXRlZCBh cyBhIERQREsgZXRoZGV2IHBvcnQsDQo+Pj4+Pj4gbm90IGEgcmVwcmVzZW50ZWQgKHVwc3Ry ZWFtKSBlbnRpdHkuDQo+Pj4+Pg0KPj4+Pj4gVGhlIHBvaW50IGlzIHRoYXQgaWYgYXBwbGlj YXRpb24gZG9lc24ndCByZXF1aXJlIGZ1bGwgcGljdHVyZSwNCj4+Pj4+IGl0IHNob3VsZCBu b3QgY2FyZS7CoCBJZiBhcHBsaWNhdGlvbiByZXF1aXJlcyB0aGUgZnVsbCBwaWN0dXJlLA0K Pj4+Pj4gaXQgY291bGQgdGFrZSBleHRyYSBzdGVwcyBieSBzZXR0aW5nIGV4dHJhIGJpdHMu wqAgSSBkb24ndA0KPj4+Pj4gdW5kZXJzdGFuZCB3aHkgd2UgbmVlZCB0byBmb3JjZSBhbGwg YXBwbGljYXRpb25zIHRvIGNhcmUgYWJvdXQNCj4+Pj4+IHRoZSBmdWxsIHBpY3R1cmUgaWYg d2UgY2FuIGF2b2lkIHRoYXQ/DQo+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pj4+IGEuIFdvcmtmbG93 IGZvciAiRFBESyBBcHBsaWNhdGlvbiIgdG8gc2V0IE1BQyB0byBWRjoNCj4+Pj4+Pj4NCj4+ Pj4+Pj4gMS4gIkRQREsgQXBwbGljYXRpb24iIGNhbGxzIHJ0ZV9zZXRfZXRoZXJhZGRyKCJW Ri1yZXAiLCBuZXdfbWFjKTsNCj4+Pj4+Pj4gMi7CoCBEUERLIHNldHMgTUFDIGZvciAiVkYi Lg0KPj4+Pj4+Pg0KPj4+Pj4+PiBiLiBXb3JrZmxvdyBmb3IgIkRQREsgQXBwbGljYXRpb24i IHRvIHNldCBNQUMgdG8gUEY6DQo+Pj4+Pj4+DQo+Pj4+Pj4+IDEuICJEUERLIEFwcGxpY2F0 aW9uIiBjYWxscyBydGVfc2V0X2V0aGVyYWRkcigiUEYtcmVwIiwgbmV3X21hYyk7DQo+Pj4+ Pj4+IDIuwqAgRFBESyBzZXRzIE1BQyBmb3IgIlBGIi4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gYy4g V29ya2Zsb3cgZm9yICJEUERLIEFwcGxpY2F0aW9uIiB0byBzZW5kIHBhY2tldCB0byB0aGUg ZXh0ZXJuYWwgbmV0d29yazoNCj4+Pj4+Pj4NCj4+Pj4+Pj4gMS4gIkRQREsgQXBwbGljYXRp b24iIGNhbGxzIHJ0ZV9ldGhfdHhfYnVyc3QoIlBGLXJlcCIsIHBhY2tldCk7DQo+Pj4+Pj4+ IDIuIE5JQyByZWNlaXZlcyB0aGUgcGFja2V0IGZyb20gIlBGLXJlcCIgYW5kIHNlbmRzIGl0 IHRvICJQRiIuDQo+Pj4+Pj4+IDMuIHBhY2tldCBlZ3Jlc3NlcyB0byB0aGUgZXh0ZXJuYWwg bmV0d29yayBmcm9tICJQRiIuDQo+Pj4+Pj4+DQo+Pj4+Pj4+IGQuIFdvcmtmbG93IGZvciAi RFBESyBBcHBsaWNhdGlvbiIgdG8gc2VuZCBwYWNrZXQgdG8gdGhlICJWTSBvciB3aGF0ZXZl ciI6DQo+Pj4+Pj4+DQo+Pj4+Pj4+IDEuICJEUERLIEFwcGxpY2F0aW9uIiBjYWxscyBydGVf ZXRoX3R4X2J1cnN0KCJWRi1yZXAiLCBwYWNrZXQpOw0KPj4+Pj4+PiAyLiBOSUMgcmVjZWl2 ZXMgdGhlIHBhY2tldCBmcm9tICJWRi1yZXAiIGFuZCBzZW5kcyBpdCB0byAiVkYiLg0KPj4+ Pj4+PiAzLiAiVk0gb3Igd2hhdGV2ZXIiIHJlY2VpdmVzIHRoZSBwYWNrZXQgZnJvbSAiVkYi Lg0KPj4+Pj4+Pg0KPj4+Pj4+PiBJbiB0d28gd29ya2Zsb3dzIGFib3ZlIHRoZXJlIGlzIG5v IHJ0ZV9mbG93IHByb2Nlc3Npbmcgb24gc3RlcCAyLCBpLmUuLA0KPj4+Pj4+PiBOSUMgZG9l cyBub3QgcGVyZm9ybSBhbnkgbG9va3Vwcy9tYXRjaGVzL2FjdGlvbnMsIGJlY2F1c2UgaXQn cyBub3QgcG9zc2libGUNCj4+Pj4+Pj4gdG8gY29uZmlndXJlIGFjdGlvbnMgZm9yIHBhY2tl dHMgcmVjZWl2ZWQgZnJvbSAiUEYtcmVwIiBvcg0KPj4+Pj4+PiAiVkYtcmVwIiBhcyB0aGVz ZSBwb3J0cyBkb2Vzbid0IG93biBhIHBvcnQgaWQgYW5kIGFsbCB0aGUgY29uZmlndXJhdGlv bg0KPj4+Pj4+PiBhbmQgcnRlX2Zsb3cgYWN0aW9ucyB0cmFuc2xhdGVkIGFuZCBhcHBsaWVk IGZvciB0aGUgZGV2aWNlcyB0aGF0IHRoZXNlDQo+Pj4+Pj4+IHBvcnRzIHJlcHJlc2VudHMg KCJQRiIgYW5kICJWRiIpIGFuZCBub3QgcmVwcmVzZW50b3JzIHRoZW1zZWx2ZXMgKCJQRi1y ZXAiDQo+Pj4+Pj4+IG9yICJWRi1yZXAiKS4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gZS4gV29ya2Zs b3cgZm9yIHRoZSBwYWNrZXQgcmVjZWl2ZWQgb24gUEYgYW5kIFBPUlRfSUQgYWN0aW9uOg0K Pj4+Pj4+Pg0KPj4+Pj4+PiAxLiAiRFBESyBBcHBsaWNhdGlvbiIgY29uZmlndXJlcyBydGVf ZmxvdyBmb3IgYWxsIHBhY2tldHMgZnJvbSAiUEYtcmVwIg0KPj4+Pj4+PiAgwqDCoMKgwqAg dG8gZXhlY3V0ZSBQT1JUX0lEICJWRi1yZXAiLg0KPj4+Pj4+PiAyLiBOSUMgcmVjZWl2ZXMg cGFja2V0IG9uICJQRiIuDQo+Pj4+Pj4+IDMuIE5JQyBleGVjdXRlcyAnUE9SVF9JRCAiVkYt cmVwIicgYWN0aW9uIGJ5IHNlbmRpbmcgcGFja2V0IHRvICJWRiIuDQo+Pj4+Pj4+IDQuICJW TSBvciB3aGF0ZXZlciIgcmVjZWl2ZXMgdGhlIHBhY2tldCBmcm9tICJWRiIuDQo+Pj4+Pj4+ DQo+Pj4+Pj4+IGYuIFdvcmtmbG93IGZvciB0aGUgcGFja2V0IHJlY2VpdmVkIG9uIFZGIGFu ZCBQT1JUX0lEIGFjdGlvbjoNCj4+Pj4+Pj4NCj4+Pj4+Pj4gMS4gIkRQREsgQXBwbGljYXRp b24iIGNvbmZpZ3VyZXMgcnRlX2Zsb3cgZm9yIGFsbCBwYWNrZXRzIGZyb20gIlZGLXJlcCIN Cj4+Pj4+Pj4gIMKgwqDCoMKgIHRvIGV4ZWN1dGUgJ1BPUlRfSUQgIlBGLXJlcCInLg0KPj4+ Pj4+PiAyLiBOSUMgcmVjZWl2ZXMgcGFja2V0IG9uICJWRiIuDQo+Pj4+Pj4+IDMuIE5JQyBl eGVjdXRlcyAnUE9SVF9JRCAiUEYtcmVwIicgYWN0aW9uIGJ5IHNlbmRpbmcgcGFja2V0IHRv ICJQRiIuDQo+Pj4+Pj4+IDQuIFBhY2tldCBlZ3Jlc3NlcyBmcm9tIHRoZSAiUEYiIHRvIHRo ZSBleHRlcm5hbCBuZXR3b3JrLg0KPj4+Pj4+Pg0KPj4+Pj4+PiBBYm92ZSBpcyB3aGF0LCBJ TUhPLCB0aGUgbG9naWMgc2hvdWxkIGxvb2sgbGlrZSBhbmQgdGhpcyBtYXRjaGVzIHdpdGgN Cj4+Pj4+Pj4gdGhlIG92ZXJhbGwgc3dpdGNoZGV2IGRlc2lnbiBpbiBrZXJuZWwuDQo+Pj4+ Pj4+DQo+Pj4+Pj4+IEkgdW5kZXJzdGFuZCB0aGF0IHRoaXMgbG9naWMgY291bGQgc2VlbSBm bGlwcGVkLW92ZXIgZnJvbSB0aGUgSFcgcG9pbnQNCj4+Pj4+Pj4gb2YgdmlldywgYnV0IGl0 J3MgcGVyZmVjdGx5IGxvZ2ljYWwgZnJvbSB0aGUgdXNlcidzIHBlcnNwZWN0aXZlLCBiZWNh dXNlDQo+Pj4+Pj4+IHVzZXIgc2hvdWxkIG5vdCBjYXJlIGlmIHRoZSBhcHBsaWNhdGlvbiB3 b3JrcyB3aXRoIHJlcHJlc2VudG9ycyBvcg0KPj4+Pj4+PiBzb21lIHJlYWwgZGV2aWNlcy7C oCBJZiBhcHBsaWNhdGlvbiBjb25maWd1cmVzIHRoYXQgYWxsIHBhY2tldHMgZnJvbSBwb3J0 DQo+Pj4+Pj4+IEEgc2hvdWxkIGJlIHNlbnQgdG8gcG9ydCBCLCB1c2VyIHdpbGwgZXhwZWN0 IHRoYXQgdGhlc2UgcGFja2V0cyB3aWxsDQo+Pj4+Pj4+IGVncmVzcyBmcm9tIHBvcnQgQiBv bmNlIHJlY2VpdmVkIGZyb20gcG9ydCBBLsKgIFRoYXQgd2lsbCBiZSBoaWdobHkNCj4+Pj4+ Pj4gaW5jb252ZW5pZW50IGlmIHRoZSBwYWNrZXQgd2lsbCBpbmdyZXNzIGZyb20gcG9ydCBC IGJhY2sgdG8gdGhlDQo+Pj4+Pj4+IGFwcGxpY2F0aW9uIGluc3RlYWQuDQo+Pj4+Pj4+DQo+ Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCBEUERLIEFwcGxpY2F0aW9uDQo+Pj4+Pj4+ICDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+Pj4+ICDCoMKgwqDCoMKg wqAgcG9ydCBBwqDCoMKgwqAgcG9ydCBCDQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCAqKioqKk1B R0lDKioqKioNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDC oMKgIHwNCj4+Pj4+Pj4gIMKgwqDCoMKgIEV4dGVybmFswqDCoMKgwqDCoCBBbm90aGVyIE5l dHdvcmsNCj4+Pj4+Pj4gIMKgwqDCoMKgIE5ldHdvcmvCoMKgwqDCoMKgwqAgb3IgVk0gb3Ig d2hhdGV2ZXINCj4+Pj4+Pj4NCj4+Pj4+Pj4gSXQgc2hvdWxkIG5vdCBtYXR0ZXIgaWYgdGhl cmUgaXMgYW4gZXh0cmEgbGF5ZXIgYmV0d2VlbiBwb3J0cyBBIGFuZCBCDQo+Pj4+Pj4+IGFu ZCB0aGUgZXh0ZXJuYWwgbmV0d29yayBhbmQgVk0uwqAgRXZlcnl0aGluZyBzaG91bGQgd29y ayBpbiBleGFjdGx5IHRoZQ0KPj4+Pj4+PiBzYW1lIHdheSwgdHJhbnNwYXJlbnRseSBmb3Ig dGhlIGFwcGxpY2F0aW9uLg0KPj4+Pj4+Pg0KPj4+Pj4+PiBUaGUgcG9pbnQgb2YgaGFyZHdh cmUgb2ZmbG9hZGluZywgYW5kIHRoZXJlZm9yZSBydGVfZmxvdyBBUEksIGlzIHRvIHRha2UN Cj4+Pj4+Pj4gd2hhdCB1c2VyIGRvZXMgaW4gc29mdHdhcmUgYW5kIG1ha2UgdGhpcyAibWFn aWNhbGx5IiB3b3JrIGluIGhhcmR3YXJlIGluDQo+Pj4+Pj4+IHRoZSBleGFjdGx5IHNhbWUg d2F5LsKgIEFuZCB0aGlzIHdpbGwgYmUgYnJva2VuIGlmIHVzZXIgd2lsbCBoYXZlIHRvDQo+ Pj4+Pj4+IHVzZSBkaWZmZXJlbnQgbG9naWMgYmFzZWQgb24gdGhlIG1vZGUgdGhlIGhhcmR3 YXJlIHdvcmtzIGluLCBpLmUuIGJhc2VkIG9uDQo+Pj4+Pj4+IHRoZSBmYWN0IGlmIHRoZSBh cHBsaWNhdGlvbiB3b3JrcyB3aXRoIHBvcnRzIG9yIHRoZWlyIHJlcHJlc2VudG9ycy4NCj4+ Pj4+Pj4NCj4+Pj4+Pj4gSWYgc29tZSBzcGVjaWZpYyB1c2UgY2FzZSByZXF1aXJlcyBhcHBs aWNhdGlvbiB0byBrbm93IGlmIGl0J3MgYW4NCj4+Pj4+Pj4gdXBzdHJlYW0gcG9ydCBvciB0 aGUgcmVwcmVzZW50b3IgYW5kIGRlbXlzdGlmeSB0aGUgaW50ZXJuYWxzIG9mIHRoZSBzd2l0 Y2hkZXYNCj4+Pj4+Pj4gTklDLCB0aGVyZSBzaG91bGQgYmUgYSBkaWZmZXJlbnQgcG9ydCBp ZCBmb3IgdGhlIHJlcHJlc2VudG9yIGl0c2VsZiB0aGF0DQo+Pj4+Pj4+IGNvdWxkIGJlIHVz ZWQgaW4gYWxsIERQREsgQVBJcyBpbmNsdWRpbmcgcnRlX2Zsb3cgQVBJIG9yIGEgc3BlY2lh bCBiaXQgZm9yDQo+Pj4+Pj4+IHRoYXQgbWF0dGVyLsKgIElJUkMsIHRoZXJlIHdhcyBhbiBp ZGVhIHRvIGFkZCBhIGJpdCBkaXJlY3RseSB0byB0aGUgcG9ydF9pZA0KPj4+Pj4+PiBmb3Ig dGhhdCBwdXJwb3NlIHRoYXQgd2lsbCBmbGlwIG92ZXIgYmVoYXZpb3IgaW4gYWxsIHRoZSB3 b3JrZmxvdyBzY2VuYXJpb3MNCj4+Pj4+Pj4gdGhhdCBJIGRlc2NyaWJlZCBhYm92ZS4NCj4+ Pj4+Pg0KPj4+Pj4+IEFzIEkgdW5kZXJzdGFuZCB3ZSdyZSBiYXNpY2FsbHkgb24gdGhlIHNh bWUgcGFnZSwgYnV0IGp1c3QNCj4+Pj4+PiBmaWdodGluZyBmb3IgZGVmYXVsdHMgaW4gRFBE Sy4NCj4+Pj4+DQo+Pj4+PiBZZXAuDQo+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pj4+Pg0KPj4+Pj4+ Pj4gR2l2ZW4gdGhlc2UgZmFjdHMsIGl0IHdvdWxkIG5vdCBiZSBxdWl0ZSByaWdodCB0byBq dXN0IGFsaWduIHRoZSBkb2N1bWVudGF0aW9uIHdpdGggdGhlIGRlLWZhY3RvIGFjdGlvbiBt ZWFuaW5nIGFzc3VtZWQgYnkgT3ZTLg0KPj4+Pj4+Pg0KPj4+Pj4+PiBJdCdzIG5vdCBhICJt ZWFuaW5nIGFzc3VtZWQgYnkgT3ZTIiwgaXQncyB0aGUgb3JpZ2luYWwgZGVzaWduIGFuZCB0 aGUNCj4+Pj4+Pj4gbWFpbiBpZGVhIG9mIGEgc3dpdGNoZGV2IGJhc2VkIG9uIGEgY29tbW9u IHNlbnNlLg0KPj4+Pj4+DQo+Pj4+Pj4gSWYgc28sIGNvbW1vbiBzZW5zZSBpcyBub3QgdGhh dCBjb21tb24gOikNCj4+Pj4+PiBNeSAiY29tbW9uIHNlbnNlIiBzYXlzIG1lIHRoYXQgUE9S VF9JRCBhY3Rpb24NCj4+Pj4+PiBzaG91bGQgcm91dGUgdHJhZmZpYyB0byBEUERLIGV0aGRl diBwb3J0IHRvIGJlDQo+Pj4+Pj4gcmVjZWl2ZWQgYnkgdGhlIERQREsgYXBwbGljYXRpb24u DQo+Pj4+Pg0KPj4+Pj4gQnkgdGhpcyBsb2dpYyBydGVfZXRoX3R4X2J1cnN0KCJWRi1yZXAi LCBwYWNrZXQpIHNob3VsZCBzZW5kIGEgcGFja2V0DQo+Pj4+PiB0byAiVkYtcmVwIiwgaS5l LiB0aGlzIHBhY2tldCB3aWxsIGJlIHJlY2VpdmVkIGJhY2sgYnkgdGhlIGFwcGxpY2F0aW9u DQo+Pj4+PiBvbiB0aGlzIHNhbWUgaW50ZXJmYWNlLsKgIEJ1dCB0aGF0IGlzIGNvdW50ZXIt aW50dWl0aXZlIGFuZCB0aGlzIGlzIG5vdA0KPj4+Pj4gaG93IGl0IHdvcmtzIGluIGxpbnV4 IGtlcm5lbCBpZiB5b3UncmUgb3BlbmluZyBzb2NrZXQgYW5kIHNlbmRpbmcgYQ0KPj4+Pj4g cGFja2V0IHRvIHRoZSAiVkYtcmVwIiBuZXR3b3JrIGludGVyZmFjZS4NCj4+Pj4+DQo+Pj4+ PiBBbmQgaWYgcnRlX2V0aF90eF9idXJzdCgiVkYtcmVwIiwgcGFja2V0KSBzZW5kcyBwYWNr ZXQgdG8gIlZGIiBhbmQgbm90DQo+Pj4+PiB0byAiVkYtcmVwIiwgdGhhbiBJIGRvbid0IHVu ZGVyc3RhbmQgd2h5IFBPUlRfSUQgYWN0aW9uIHNob3VsZCB3b3JrIGluDQo+Pj4+PiB0aGUg b3Bwb3NpdGUgd2F5Lg0KPj4+Pg0KPj4+PiBUaGVyZSdzIG5vIGNvbnRyYWRpY3Rpb24gaGVy ZS4NCj4+Pj4NCj4+Pj4gSW4gcnRlX2V0aF90eF9idXJzdChYLCBwYWNrZXQpIGV4YW1wbGUs ICJYIiBpcyB0aGUgcG9ydCB3aGljaCB0aGUgYXBwbGljYXRpb24gc2l0cyBvbiBhbmQgZnJv bSB3aGVyZSBpdCBzZW5kcyB0aGUgcGFja2V0LiBJbiBvdGhlciB3b3JkcywgaXQncyB0aGUg cG9pbnQgd2hlcmUgdGhlIHBhY2tldCBvcmlnaW5hdGVzIGZyb20sIGFuZCBub3Qgd2hlcmUg aXQgZ29lcyB0by4NCj4+Pj4NCj4+Pj4gQXQgdGhlIHNhbWUgdGltZSwgZmxvdyAqYWN0aW9u KiBQT1JUX0lEIChJRCA9ICJYIikgaXMgY2xlYXJseSB0aGUgb3Bwb3NpdGU6IGl0IHNwZWNp ZmllcyB3aGVyZSB0aGUgcGFja2V0IHdpbGwgZ28uIFBvcnQgSUQgaXMgdGhlIGNoYXJhY3Rl cmlzdGljIG9mIGEgRFBESyBldGhkZXYuIFNvIHRoZSBwYWNrZXQgZ29lcyAqdG8qIGFuIGV0 aGRldiB3aXRoIHRoZSBnaXZlbiBJRCAoIlgiKS4NCj4+Pj4NCj4+Pj4gUGVyaGFwcyBjb25z aWRlciBhY3Rpb24gUEhZX1BPUlQ6IHRoZSBpbmRleCBpcyB0aGUgY2hhcmFjdGVyaXN0aWMg b2YgdGhlIG5ldHdvcmsgcG9ydC4gVGhlIHBhY2tldCBnb2VzICp0byogbmV0d29yayB0aHJv dWdoIHRoaXMgTlAuIEFuZCBub3QgdGhlIG9wcG9zaXRlIHdheS4gSG9wZWZ1bGx5LCBub2Jv ZHkgaXMgZ29pbmcgdG8gY2xhaW0gdGhhdCBhY3Rpb24gUEhZX1BPUlQgc2hvdWxkIG1lYW4g cmUtaW5qZWN0aW5nIHRoZSBwYWNrZXQgYmFjayB0byB0aGUgSFcgZmxvdyBlbmdpbmUgImFz IGlmIGl0IGp1c3QgY2FtZSBmcm9tIHRoZSBuZXR3b3JrIHBvcnQiLiBUaGVuIHdoeSBkb2Vz IG9uZSB0cnkgdG8gc2tldyB0aGUgUE9SVF9JRCBtZWFuaW5nIHRoaXMgd2F5PyBQT1JUX0lE IHBvaW50cyB0byBhbiBldGhkZXYgLSB0aGUgcGFja2V0IGdvZXMgKnRvKiB0aGUgZXRoZGV2 LiBJc24ndCB0aGF0IHNpbXBsZT8NCj4+Pg0KPj4+IEl0J3Mgbm90IHNpbXBsZS7CoCBBbmQg UEhZX1BPUlQgYWN0aW9uIHdvdWxkIGJlIGhhcmQgdG8gdXNlIGZyb20gdGhlDQo+Pj4gYXBw bGljYXRpb24gdGhhdCBkb2Vzbid0IHJlYWxseSBuZWVkIHRvIGtub3cgaG93IHVuZGVybHlp bmcgaGFyZHdhcmUNCj4+PiBzdHJ1Y3R1cmVkLg0KPj4NCj4+IEknbSBub3QgdHJ5aW5nIHRv IHN1Z2dlc3QgdXNpbmcgUEhZX1BPUlQuIEkgcHJvdmlkZSBpdCBhcyBhbiBleGFtcGxlIHRv IHBvaW50IG91dCB0aGUgaW5jb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZXNlIGFjdGlvbnMgYW5k IGFjdGlvbiBQT1JUX0lEIGluIGl0cyBkZS1mYWN0byBzZW5zZSBhc3N1bWVkIGJ5IGFwcHMg bGlrZSBPdlMuIFNvcnJ5Lg0KPj4NCj4+Pg0KPj4+Pg0KPj4+Pj4NCj4+Pj4+IEFwcGxpY2F0 aW9uIHJlY2VpdmVzIGEgcGFja2V0IGZyb20gcG9ydCBBIGFuZCBwdXRzIGl0IHRvIHRoZSBw b3J0IEIuDQo+Pj4+PiBUQyBydWxlIHRvIGZvcndhcmQgcGFja2V0cyBmcm9tIHBvcnQgQSB0 byBwb3J0IEIgd2lsbCBwcm92aWRlIHNhbWUgcmVzdWx0Lg0KPj4+Pj4gU28sIHdoeSB0aGUg c2ltaWxhciBydGVfZmxvdyBzaG91bGQgZG8gdGhlIG9wcG9zaXRlIGFuZCBzZW5kIHRoZSBw YWNrZXQNCj4+Pj4+IGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9uPw0KPj4+Pg0KPj4+PiBQbGVh c2Ugc2VlIGFib3ZlLiBBY3Rpb24gVkYgc2VuZHMgdGhlIHBhY2tldCAqdG8qIFZGIGFuZCAq bm90KiB0byB0aGUgdXBzdHJlYW0gZW50aXR5IHdoaWNoIHRoaXMgVkYgaXMgY29ubmVjdGVk IHRvLiBBY3Rpb24gUEhZX1BPUlQgc2VuZHMgdGhlIHBhY2tldCAqdG8qIG5ldHdvcmsgYW5k IGRvZXMgKm5vdCogbWFrZSBpdCBhcHBlYXIgYXMgaWYgaXQgZW50ZXJlZCB0aGUgTklDIGZy b20gdGhlIG5ldHdvcmsgc2lkZS4gQWN0aW9uIFFVRVVFIHNlbmRzIHRoZSBwYWNrZXQgKnRv KiB0aGUgUnggcXVldWUgYW5kIGRvZXMgKm5vdCogbWFrZSBpdCBhcHBlYXIgYXMgaWYgaXQg anVzdCBlZ3Jlc3NlZCBmcm9tIHRoZSBUeCBxdWV1ZSB3aXRoIHRoZSBzYW1lIGluZGV4LiBB Y3Rpb24gUE9SVF9JRCBzZW5kcyB0aGUgcGFja2V0ICp0byogYW4gZXRoZGV2IHdpdGggdGhl IGdpdmVuIElEIGFuZCAqbm90KiB0byB0aGUgdXBzdHJlYW0gZW50aXR5IHdoaWNoIHRoaXMg ZXRoZGV2IGlzIGNvbm5lY3RlZCB0by4gSXQncyBqdXN0IHRoYXQgdHJhbnNwYXJlbnQuIEl0 J3MganVzdCAiZG8gd2hhdCB0aGUgbmFtZSBzdWdnZXN0cyIuDQo+Pj4+DQo+Pj4+IFllcywg YW4gYXBwbGljYXRpb24gKHNheSwgT3ZTKSBtaWdodCBoYXZlIGEgaGlnaCBsZXZlbCBkZXNp Z24gd2hpY2ggcGVyY2VpdmVzIHRoZSAiaGlnaC1sZXZlbCIgcG9ydHMgcGx1Z2dlZCB0byBp dCBhcyBhICJwYXRjaC1wYW5lbCIgb2Ygc29ydHMuIFllcywgd2hlbiBhIGhpZ2gtbGV2ZWwg bWVjaGFuaXNtL2xvZ2ljIG9mIHN1Y2ggYXBwbGljYXRpb24gaW52b2tlcyBhICpkYXRhcGF0 aC11bmF3YXJlKiB3cmFwcGVyIHRvIG9mZmxvYWQgYSBydWxlIGFuZCByZXF1ZXN0IHRoYXQg dGhlIHBhY2tldCBiZSBkZWxpdmVyZWQgdG8gdGhlIGdpdmVuICJoaWdoLWxldmVsIiBwb3J0 LCBpdCB0aGVyZWZvcmUgcmVxdWVzdHMgdGhhdCB0aGUgcGFja2V0IGJlIGRlbGl2ZXJlZCB0 byB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSB3aXJlLiBCdXQgdGhlbiB0aGUgbG93ZXItbGV2 ZWwgZGF0YXBhdGgtc3BlY2lmaWMgKERQREspIGhhbmRsZXIga2lja3MgaW4uIFNpbmNlIGl0 J3MgRFBESy1zcGVjaWZpYywgaXQga25vd3MgKmV2ZXJ5dGhpbmcqIGFib3V0IHRoZSB1bmRl cmx5aW5nIGZsb3cgbGlicmFyeSBpdCB3b3JrcyB3aXRoLiBJbiBwYXJ0aWN1bGFyIGl0IGtu b3dzIHRoYXQgYWN0aW9uIFBPUlRfSUQgZGVsaXZlcnMgdGhlIHBhY2tldCB0byBhbiAqZXRo ZGV2KiwgYXQgdGhlIHNhbWUgdGltZSwgaXQga25vd3MgdGhhdCB0aGUgdXBwZXIgY2FsbGVy IChoaWdoLWxldmVsIGxvZ2ljKSBmb3Igc3VyZSB3YW50cyB0aGUgb3Bwb3NpdGUsIHNvIGl0 ICh0aGUgbG93ZXItbGV2ZWwgRFBESyBjb21wb25lbnQpIHNldHMgdGhlICJ1cHN0cmVhbSIg Yml0IHdoZW4gdHJhbnNsYXRpbmcgdGhlIGhpZ2hlci1sZXZlbCBwb3J0IGFjdGlvbiB0byBh biBSVEUgYWN0aW9uICJQT1JUX0lEIi4NCj4+Pg0KPj4+IEkgZG9uJ3QgdW5kZXJzdGFuZCB0 aGF0LsKgIERQREsgdXNlciBpcyB0aGUgYXBwbGljYXRpb24gYW5kIERQREsNCj4+PiBkb2Vz bid0IHRyYW5zbGF0ZSBhbnl0aGluZywgYXBwbGljYXRpb24gY3JlYXRlcyBQT1JUX0lEIGFj dGlvbg0KPj4+IGRpcmVjdGx5IGFuZCBwYXNzZXMgaXQgdG8gRFBESy7CoCBTbywgeW91J3Jl IGZvcmNpbmcgdGhlICplbmQgdXNlcioNCj4+PiAoYS5rLmEuIGFwcGxpY2F0aW9uKSB0byBr bm93ICpldmVyeXRoaW5nKiBhYm91dCB0aGUgaGFyZHdhcmUgdGhlDQo+Pj4gYXBwbGljYXRp b24gcnVucyBvbi7CoCBPZiBjb3Vyc2UsIGl0IGdldHMgdGhpcyBpbmZvcm1hdGlvbiBhYm91 dA0KPj4+IHRoZSBoYXJkd2FyZSBmcm9tIHRoZSBEUERLIGxpYnJhcnkgKG90aGVyd2lzZSB0 aGlzIHdvdWxkIGJlDQo+Pj4gY29tcGxldGVseSByaWRpY3Vsb3VzKSwgYnV0IHRoaXMgZG9l c24ndCBjaGFuZ2UgdGhlIGZhY3QgdGhhdCBpdCdzDQo+Pj4gdGhlIGFwcGxpY2F0aW9uIHRo YXQgbmVlZHMgdG8gdGhpbmsgYWJvdXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUNCj4+PiB1bmRl cmx5aW5nIGhhcmR3YXJlIHdoaWxlIGl0J3MgYWJzb2x1dGVseSBub3QgbmVjZXNzYXJ5IGlu IHZhc3QNCj4+PiBtYWpvcml0eSBvZiBjYXNlcy4NCj4+DQo+PiBNZSBmb3JjaW5nIHRoZSBh cHBsaWNhdGlvbiB0byBrbm93IGV2ZXJ5dGhpbmcgYWJvdXQgdGhlIGhhcmR3YXJlPyBJIGRv IG5vIHN1Y2ggdGhpbmcuIFdoYXQgSSBtZWFuIGlzIHZlcnkgc2ltcGxlOiB0aGUgYXBwbGlj YXRpb24gZGV2ZWxvcGVyIGlzIGV4cGVjdGVkIHRvIHJlYWQgRFBESyBkb2N1bWVudGF0aW9u IGNhcmVmdWxseSBiZWZvcmUgdXNpbmcgYSBmbG93IHByaW1pdGl2ZSBsaWtlIFBPUlRfSUQu IElmIHRoZXkgdW5kZXJzdG9vZCBpdCwgdGhleSB3b3VsZCByZWFsaXNlIHRoZSB1bmZpdG5l c3Mgb2YgdGhlIGV4aXN0aW5nIGFjdGlvbiBiZWhhdmlvdXIgZm9yIHRoZWlyIG5lZWRzLiBU aGUgZGV2ZWxvcGVyIHdvdWxkIHRoZW4gcmFpc2UgdGhlIGlzc3VlIGFuZCBleHRlbmQgdGhl IGFjdGlvbiBpbiBvbmUgd2F5ICgidXBzdHJlYW0iIGJpdCkgb3IgYW5vdGhlciAoImVncmVz cyIgYml0KS4gQW5kIG9ubHkgKnRoZW4qIHRoZXkgd291bGQgaGF2ZSBldmVyeXRoaW5nIGlu IHBsYWNlIHRvIGZpbmFsbHkgcHV0IHRoZSBhY3Rpb24gaW50byB1c2FnZSBieSB0aGUgYXBw bGljYXRpb24uIEJ1dCB3aGF0IHdlIGhhdmUgaW4gcmVhbGl0eSBpcyB0aGUgb3Bwb3NpdGUu IExldCdzIGp1c3QgZmFjZSBpdC4NCj4+DQo+Pj4NCj4+Pj4gVGhlbiB0aGUgcmVzdWx0aW5n IGFjdGlvbiBpcyBjb3JyZWN0LCBhbmQgdGhlIHBhY2tldCBpbmRlZWQgZG9lc24ndCBlbmQg dXAgaW4gdGhlIGV0aGRldiBidXQgZ29lcw0KPj4+PiB0byB0aGUgb3Bwb3NpdGUgZW5kIG9m IHRoZSB3aXJlLiBUaGF0J3MgaXQuDQo+Pj4+DQo+Pj4+IEkgaGF2ZSBhbiBpbXByZXNzaW9u IHRoYXQgZm9yIHNvbWUgcmVhc29uIHBlb3BsZSBhcmUgdGVtcHRlZCB0byBpZ25vcmUgdGhl IHR3byBub21pbmFsICJsYXllcnMiIGluIHN1Y2ggYXBwbGljYXRpb25zIChnZW5lcmljLCBv ciBoaWdoLWxldmVsIG9uZSBhbmQgRFBESy1zcGVjaWZpYyBvbmUpIHRodXMgdHJ5aW5nIHRv IGFsaWduIERQREsgbG9naWMgd2l0aCBoaWdoLWxldmVsIGxvZ2ljIG9mIHRoZSBhcHBsaWNh dGlvbnMuIFRoYXQncyBzaW1wbHkgbm90IHJpZ2h0LiBXaGF0IEknbSB0cnlpbmcgdG8gcG9p bnQgb3V0IGlzIHRoYXQgaXQgKmlzKiB0aGUgdHJ1ZSBqb2Igb2YgRFBESy1zcGVjaWZpYyBk YXRhIHBhdGggaGFuZGxlciBpbiBzdWNoIGFwcGxpY2F0aW9uIC0gdG8gcHJvcGVybHkgdHJh bnNsYXRlIGdlbmVyaWMgZmxvdyBhY3Rpb25zIHRvIERQREstc3BlY2lmaWMgb25lcy4gSXQn cyB0aGUgZHV0eSBvZiBEUERLIGNvbXBvbmVudCBpbiBzdWNoIGFwcGxpY2F0aW9ucyB0byBi ZSBhd2FyZSBvZiB0aGUgZ2VudWluZSBtZWFuaW5nIG9mIGFjdGlvbiBQT1JUX0lELg0KPj4+ DQo+Pj4gVGhlIHJlYXNvbiBpcyB2ZXJ5IHNpbXBsZTogaWYgYXBwbGljYXRpb24gZG9uJ3Qg bmVlZCB0byBrbm93IHRoZQ0KPj4+IGZ1bGwgcGljdHVyZSAoaG93IHRoZSBoYXJkd2FyZSBz dHJ1Y3R1cmVkIGluc2lkZSkgaXQgc2hvdWxkbid0DQo+Pj4gY2FyZSBhbmQgaXQncyBhIGR1 dHkgb2YgRFBESyB0byBhYnN0cmFjdCB0aGUgaGFyZHdhcmUgYW5kIHByb3ZpZGUNCj4+PiBw cm9ncmFtbWluZyBpbnRlcmZhY2VzIHRoYXQgY291bGQgYmUgZWFzaWx5IHVzZWQgYnkgYXBw bGljYXRpb24NCj4+PiBkZXZlbG9wZXJzIHdobyBhcmUgbm90IGV4cGVydHMgaW4gdGhlIGFy Y2hpdGVjdHVyZSBvZiBhIGhhcmR3YXJlDQo+Pj4gdGhhdCB0aGV5IHdhbnQgdG8gdXNlIChi YXNpY2FsbHksIGFwcGxpY2F0aW9uIGRldmVsb3BlciBzaG91bGQgbm90DQo+Pj4gY2FyZSBh dCBhbGwgaW4gbW9zdCBjYXNlcyBvbiB3aGljaCBoYXJkd2FyZSBhcHBsaWNhdGlvbiB3aWxs IHdvcmspLg0KPj4+IEl0J3MgYmFzaWNhbGx5IGluIGFsbW9zdCBldmVyeSBzaW5nbGUgRFBE SyBBUEksIEVBTCBtZWFucyBlbnZpcm9ubWVudA0KPj4+ICphYnN0cmFjdGlvbiogbGF5ZXIs IG5vdCBhbiBlbnZpcm9ubWVudCAqcHJveHkvcGFzc3Rocm91Z2gqIGxheWVyLg0KPj4+IFdl IGNhbid0IGFzc3VtZSB0aGF0IERQREstc3BlY2lmaWMgbGF5ZXJzIGluIGFwcGxpY2F0aW9u cyBhcmUgYWx3YXlzDQo+Pj4gd3JpdHRlbiBieSBoYXJkd2FyZSBleHBlcnRzIGFuZCwgSU1I TywgRFBESyBzaG91bGQgbm90IGZvcmNlIHVzZXJzDQo+Pj4gdG8gbGVhcm4gdW5kZXJseWlu ZyBzdHJ1Y3R1cmVzIG9mIHN3aXRjaGRldiBkZXZpY2VzLsKgIFRoZXkgbWlnaHQgbm90DQo+ Pj4gZXZlbiBoYXZlIHN1Y2ggZGV2aWNlcyBmb3IgdGVzdGluZywgc28gdGhlIGFwcGxpY2F0 aW9uIHRoYXQgd29ya3MNCj4+PiBvbiBzaW1wbGUgTklDcyBzaG91bGQgYmUgYWJsZSB0byBy dW4gY29ycmVjdGx5IG9uIHN3aXRjaGRldi1jYXBhYmxlDQo+Pj4gTklDcyB0b28uDQo+Pj4N Cj4+PiBJIHRoaW5rIHRoYXQgIioqKk1BR0lDKioqIiBhYnN0cmFjdGlvbiAoc2VlIG9uZSBv ZiBteSBwcmV2aW91cyBhc2NpaQ0KPj4+IGdyYXBoaWNzKSBpcyB2ZXJ5IGltcG9ydGFudCBo ZXJlLg0KPj4NCj4+IExvb2suIEltYWdpbmUgdGhhdCB0aGUgaHlwb3RoZXRpY2FsICJvYnNl cnZlciIgc2l0cyBpbnNpZGUgdGhlIGFwcGxpY2F0aW9uLiBUaGUgYXBwbGljYXRpb24gcmVj ZWl2ZXMgcGFja2V0cyBvbiBvbmUgcG9ydCBYIGFuZCBzZW5kcyB0aGVtIHVzaW5nIFR4IGJ1 cnN0IEFQSSBvbiBwb3J0IFkuIE5vdyBpdCB3YW50cyB0byBvZmZsb2FkIHRoaXMgd29yayBh bmQgdXNlIElEPVkgdG8gcmVmZXJlbmNlIGxvY2F0aW9uIHdoZXJlIHRoZSBwYWNrZXQgc2hv dWxkIGdvICJhcyBpZiBpdCB3YXMgc2VudCB1c2luZyBUeCBidXJzdCBvbiBwb3J0IFkiLiBP Sy4gQnV0IHRoZSBhcHBsaWNhdGlvbiB1c2VzIGF0dHJpYnV0ZSAidHJhbnNmZXIiLiBBbmQg dGhhdCByZWFsbHkgbWFrZXMgZGlmZmVyZW5jZSBiZWNhdXNlIGl0ICJ0ZWxlcG9ydHMiIChv ciAidHJhbnNmZXJzIikgdGhlICJvYnNlcnZlciIgZnJvbSB0aGUgYXBwbGljYXRpb24gZG93 biB0byB0aGUgSFcgZVN3aXRjaCBsZXZlbC4gWWVzLCB0aGUgYXBwbGljYXRpb24gZG9lc24n dCBrbm93IGFueXRoaW5nIGFib3V0IEhXIGVTd2l0Y2ggc3RydWN0dXJlIGJ1dCBpdCBhdCBs ZWFzIGtub3dzIGFib3V0IGl0cyB2ZXJ5IGV4aXN0ZW5jZTsgb3RoZXJ3aXNlLCBpdCB3b3Vs ZG4ndCB1c2UgYXR0cmlidXRlICJ0cmFuc2ZlciIgYXQgYWxsLiBBbmQgbm93LCB3aGVuIHRo ZSAib2JzZXJ2ZXIiIHNpdHMgaW5zaWRlIHRoZSBIVyBlU3dpdGNoLCBmcm9tIHRoYXQgc3Rh bmRwb2ludCwgUE9SVF9JRCBJRD1ZIGxvb2tzIGxpa2UgZGVsaXZlcnkgdG8gdGhlIGV0aGRl diBwb3J0LiBUaGUgIm9ic2VydmVyIidzIGxvY2F0aW9uIGNoYW5nZXMgdGhlIHBlcmNlaXZl ZCBkaXJlY3Rpb24uIEluIHRoaXMgY2FzZSwgY29ycmVjdCBkZWZhdWx0IGJlaGF2aW91ciBp cyBkZWxpdmVyeSB0byB0aGUgZXRoZGV2LiBTby4gaWYgdGhlIGFwcGxpY2F0aW9uIGRldmVs b3BlciB3YXMgY2FwYWJsZSB0byBjb3JyZWN0bHkNCj4+IHB1dCBhdHRyaWJ1dGUgInRyYW5z ZmVyIiBpbiB1c2UsIHdoeSB3b3VsZG4ndCB0aGV5IGJlIGNhcGFibGUgdG8gYWxzbyBwdXQg ZmxhZyAidXBzdHJlYW0iIG9mIHRoZSBhY3Rpb24gUE9SVF9JRCBpbiB1c2UsIHRvbz8NCj4g DQo+IEkgZG9uJ3QgYWdyZWUgd2l0aCB0aGUgc3RhdGVtZW50IHRoYXQgInRyYW5zZmVyIiBj aGFuZ2VzIHRoZSBwb2ludA0KPiBvZiB2aWV3IGZyb20gdGhlIGFwcGxpY2F0aW9uIHRvIHRo ZSBwb2ludCBpbnNpZGUgdGhlIGVTd2l0Y2guDQo+IEZvciBtZSBpdCBzaW1wbHkgbWVhbnMg Im1vdmUiLCB0aGVyZWZvcmUgbWVhbnMgbW92aW5nIG9mIHRoZSBwYWNrZXQNCj4gZnJvbSBv bmUgcG9ydCB0byBhbm90aGVyIGFuZCBJIHdvdWxkIGFzc3VtZSB0aGF0IHRoaXMgaGFwcGVu cyBpbiB0aGUNCj4gc2FtZSB3YXkgYXMgaXQgaGFwcGVucyBpZiBhcHBsaWNhdGlvbiByZWNl aXZlcyB0aGUgcGFja2V0IGFuZCB0aGVuDQo+IHNlbmRzIGl0IHRvIGEgZGlmZmVyZW50IHBv cnQuICBTbyB0aGlzIGFyZ3VtZW50IGlzIG5vdCB2YWxpZC4NCg0KSSBoYXRlIHRvIHNheSBp dCwgYnV0IHNpbXBseSBkaXNhZ3JlZWluZyB3aXRoIHRoaXMgYXJndW1lbnQgaXMgbm90IA0K aGVscGZ1bC4gRG9pbmcgc28gZG9lc24ndCBtYWtlIHRoZSBhcmd1bWVudCBpbnZhbGlkIHVu bGVzcyB0aGUgDQpkb2N1bWVudGF0aW9uIGlzIGZpeGVkIHRvIHNheSBzdXBlci1jbGVhcmx5 IHdoYXQgaW4gZmFjdCAidHJhbnNmZXIiIA0KYXR0cmlidXRlIGlzIGFuZCB3aGF0IHBvaW50 IG9mIHZpZXcgKGFwcGxpY2F0aW9uIG9yIGVTd2l0Y2gpIHByZXZhaWxzLg0KDQpIZXJlJ3Mg d2hhdCBleGlzdGluZyBkb2N1bWVudGF0aW9uIHNheXM6DQoNCiJJbnN0ZWFkIG9mIHNpbXBs eSBtYXRjaGluZyB0aGUgcHJvcGVydGllcyBvZiB0cmFmZmljIGFzIGl0IHdvdWxkIGFwcGVh ciANCm9uIGEgZ2l2ZW4gRFBESyBwb3J0IElELCBlbmFibGluZyB0aGlzIGF0dHJpYnV0ZSB0 cmFuc2ZlcnMgYSBmbG93IHJ1bGUgDQp0byB0aGUgbG93ZXN0IHBvc3NpYmxlIGxldmVsIG9m IGFueSBkZXZpY2UgZW5kcG9pbnRzIGZvdW5kIGluIHRoZSBwYXR0ZXJuIi4NCg0KWW91IHRh bGsgYWJvdXQgIm1vdmluZyBhIHBhY2tldCIgd2hpbGUgdGhpcyBwYXJhZ3JhcGggdGFsa3Mg YWJvdXQgDQoidHJhbnNmZXJyaW5nIGEgcnVsZSIgLSBpdCdzIGFsbCB2YWd1ZSwgY29uZnVz aW5nLCBhbmQsIGFmdGVyIGFsbCwgaXQgaXMgDQp0aGUgcmVhc29uIHdoeSB3ZSBoYXZlIHRo ZSBwcm9ibGVtIHdpdGggYWN0aW9uIFBPUlRfSUQgc2VtYW50aWNzIGFuZCB0aGUgDQpsaWtl cy4gVGhlIGRvY3VtZW50YXRpb24gc2hvdWxkIG5vdCB1c2Ugd2Vhc2VsIHdvcmRzIGJ1dCBy YXRoZXIgd3JpdGUgDQpvdXQgaW4gZnVsbCB3aGF0IHBvaW50IG9mIHZpZXcgaXMsIGFuZCB3 aGVyZSB0aGluZ3Mgc3RhcnQgdG8gYmVjb21lIA0KSFctc3BlY2lmaWMuIElmIGFjdGlvbiBQ T1JUX0lEIGlzIG5vdCBmb3IgZGVsaXZlcnkgb2YgcGFja2V0cyB0byBhbiANCmV0aGRldiwg b25lIHNob3VsZCBoYXZlIGV4cGxhaW5lZCB0aGlzIGluIHRoZSBjb21tZW50Lg0KDQpJZiBJ IHVuZGVyc3RhbmQgY29ycmVjdGx5LCBub3Qgb25seSBkb2VzIERQREsgaW50ZW5kIHRvIGJl IGhlbHBmdWwgdG8gDQplbmQgdXNlcnMsIGl0IGFsc28gdHJpZXMgdG8gYmUgY2xlYXIgYW5k IGNvbmNpc2UgdG8gTklDIGRyaXZlcnMuIFNvLCBmb3IgDQpzdXJlLCBvbmUgc2hvdWxkIGFk bWl0IHRoZSBwcm9ibGVtIGV4aXN0ZW5jZS4gU2Vjb25kbHksIGFsbCBwYXJ0aWVzIA0Kc2hv dWxkIGZpbmFsbHkgYWdyZWUgb24gdGhlIHByZXZhaWxpbmcgcG9pbnQgb2YgdmlldyAoZW5k IHVzZXIgb3IgDQpQTUQvZVN3aXRjaCkgd2l0aCByZXNwZWN0IHRvIGF0dHJpYnV0ZSAidHJh bnNmZXIiIGFuZCBhY3Rpb24gUE9SVF9JRC4gDQpBbmQgYWxsIG9mIHRoYXQgc2hvdWxkIHJl c3VsdCBpbiBkb2N1bWVudGF0aW9uIGZpeC91cGRhdGUgb3Igc2VtYW50aWNzIA0KY2hhbmdl ICh3aGF0ZXZlciBpcyBtb3JlIGNvcnJlY3QpLg0KDQpTaW1wbHkgaWdub3JpbmcgdGhlIHBy b2JsZW0gb3IgYXNzdW1pbmcgdW5kb2N1bWVudGVkIG1lYW5pbmdzIChsaWtlIHRoaXMgDQoi ZW5kIHVzZXIiIHBvaW50IG9mIHZpZXcpIHdoaWxlIGxlYXZpbmcgdGhlIGRvY3VtZW50YXRp b24gcG9vciBkb2Vzbid0IA0KYmVhciBmcnVpdC4gVGhlIHJhaXNlZCBpc3N1ZXMgYXJlIG5v dCBqdXN0IHNvbWUgcGV0dHkgY29uY2VybnMgYnV0IA0KcmF0aGVyIHJlYWwgc2lnbmlmaWNh bnQgaXNzdWVzLCBhbmQgcHJldGVuZGluZyB0aGF0IHRoZXkgZG9u4oCZdCBleGlzdCBpcyAN Cm5vdCByaWdodC4NCg0KTW92aW5nIGF3YXkgZnJvbSBvcGluaW9uLWRyaXZlbiBhcHByb2Fj aCBhbmQgZml4aW5nIHRoZSBkb2N1bWVudGF0aW9uIGlzIA0Kd2hhdCB3ZSBhbGwgbWlnaHQg YmVuZWZpdCBmcm9tLg0KDQo+IA0KPiBGb3IgbWUgaGF2aW5nIGFuICJvYnNlcnZlciIgaW5z aWRlIHRoZSBlU3dpdGNoIG1ha2VzIG5vIHNlbnNlIGlmIGl0J3MNCj4gbm90IGEgcmVhbCBz d2l0Y2guICBBbmQgaXQncyBhIG5vdCBhIHJlYWwgc3dpdGNoIGp1c3QgYmVjYXVzZSBpdCBo YXMNCj4gdG9vIG1hbnkgc2hvcnRjdXRzIGFuZCBpbXBsaWNpdCBydWxlcyB0aGF0IGNhbiBu b3QgYmUgY29udHJvbGxlZCBieQ0KPiB0aGUgdXNlciwgZS5nLiB0aGUgdGhpbmcgdGhhdCBw YWNrZXQgc2VudCB0byBWRi1yZXAgYnlwYXNzZXMgdGhlDQo+IHJ0ZV9mbG93IHByb2Nlc3Np bmcgYW5kIGdvZXMgZGlyZWN0bHkgb3V0IGZyb20gdGhlIFZGIHBvcnQuDQo+IA0KPiBVbmxl c3MgaXQncyBhIGZ1bGx5IHByb2dyYW1tYWJsZSBzd2l0Y2ggKHdoaWNoIGl0IGlzIG5vdCks IEkgcHJlZmVyDQo+IHRvIGhhdmUgaXQgZnVsbHkgaGlkZGVuIGZyb20gZW5kIHVzZXJzIGFz IGEgbWFnaWMgYm94LiAgTWFraW5nIGl0DQo+IGZ1bGx5IHByb2dyYW1tYWJsZSB3aWxsIG1h a2UgYXBwbGljYXRpb25zIHZlcnkgY29tcGxleCwgc28gSSdkIHByZWZlcg0KPiB0byBub3Qg ZGVhbCB3aXRoIHRoaXMgdG9vLg0KPiANCj4+DQo+Pj4NCj4+Pj4NCj4+Pj4gVGhpcyB3YXks IG1peGluZyB1cCB0aGUgdHdvIG1lYW5pbmdzIGlzIHJ1bGVkIG91dC4NCj4+Pg0KPj4+IExv b2tpbmcgY2xvc2VyIHRvIGhvdyB0YyBmbG93ZXIgcnVsZXMgY29uZmlndXJlZCBJIG5vdGlj ZWQgdGhhdA0KPj4+ICdtaXJyZWQnIGFjdGlvbiByZXF1aXJlcyB1c2VyIHRvIHNwZWNpZnkg dGhlIGRpcmVjdGlvbiBpbiB3aGljaA0KPj4+IHRoZSBwYWNrZXQgd2lsbCBhcHBlYXIgb24g dGhlIGRlc3RpbmF0aW9uIHBvcnQuwqAgQW5kIEkgc3VwcG9zZQ0KPj4+IHRoaXMgd2lsbCBz b2x2ZSB5b3VyIGlzc3VlcyB3aXRoIFBPUlRfSUQgYWN0aW9uIHdpdGhvdXQgZXhwb3NpbmcN Cj4+PiB0aGUgImZ1bGwgcGljdHVyZSIgb2YgdGhlIGFyY2hpdGVjdHVyZSBvZiBhbiB1bmRl cmx5aW5nIGhhcmR3YXJlLg0KPj4+DQo+Pj4gSXQgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhp czoNCj4+Pg0KPj4+ICDCoMKgIHRjIGZpbHRlciBhZGQgZGV2IEEgLi4uIGFjdGlvbiBtaXJy ZWQgZWdyZXNzIHJlZGlyZWN0IGRldiBCDQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIF5eXl5eXg0KPj4+DQo+Pj4gRGlyZWN0aW9uIGNvdWxkIGJlICdpbmdyZXNzJyBvciAn ZWdyZXNzJywgc28gdGhlIHBhY2tldCB3aWxsDQo+Pj4gaW5ncmVzcyBmcm9tIHRoZSBwb3J0 IEIgYmFjayB0byBhcHBsaWNhdGlvbi9rZXJuZWwgb3IgaXQgd2lsbA0KPj4+IGVncmVzcyBm cm9tIHRoaXMgcG9ydCB0byB0aGUgZXh0ZXJuYWwgbmV0d29yay7CoCBTYW1lIHRoaW5nDQo+ Pj4gY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gcnRlX2Zsb3cgbGlrZSB0aGlzOg0KPj4+DQo+ Pj4gIMKgwqAgZmxvdyBjcmVhdGUgQSBpbmdyZXNzIHRyYW5zZmVyIHBhdHRlcm4gZXRoIC8g ZW5kDQo+Pj4gIMKgwqDCoMKgwqDCoCBhY3Rpb24gcG9ydF9pZCBpZCBCIGVncmVzcyAvIGVu ZA0KPj4+DQo+Pj4gU28sIGFwcGxpY2F0aW9uIHRoYXQgbmVlZHMgdG8gcmVjZWl2ZSB0aGUg cGFja2V0IGZyb20gdGhlIHBvcnQgQg0KPj4+IHdpbGwgc3BlY2lmeSAnaW5ncmVzcycsIG90 aGVycyB0aGF0IGp1c3Qgd2FudCB0byBzZW5kIHBhY2tldCBmcm9tDQo+Pj4gdGhlIHBvcnQg QiB3aWxsIHNwZWNpZnkgJ2VncmVzcycuwqAgV2lsbCB0aGF0IHdvcmsgZm9yIHlvdT8NCj4+ Pg0KPj4+IChCVFcsICdpbmdyZXNzJyBzZWVtcyB0byBiZSBub3QgaW1wbGVtZW50ZWQgaW4g VEMgYW5kIHRoYXQga2luZA0KPj4+IG9mIHN1Z2dlc3RzIHRoYXQgaXQncyBub3QgdmVyeSB1 c2VmdWwgYXQgbGVhc3QgZm9yIGtlcm5lbCB1c2UgY2FzZXMpDQo+Pj4NCj4+PiBPbmUgbWln aHQgc2F5IHRoYXQgaXQncyBhY3R1YWxseSB0aGUgc2FtZSB3aGF0IGlzIHByb3Bvc2VkIGlu DQo+Pj4gdGhpcyBSRkMsIGJ1dCBJIHdpbGwgYXJndWUgdGhhdCAnaW5ncmVzcy9lZ3Jlc3Mn IHNjaGVtYSBkb2Vzbid0DQo+Pj4gYnJlYWsgdGhlICIqKipNQUdJQyoqKiIgYWJzdHJhY3Rp b24gYmVjYXVzZSB1c2VyIGlzIG5vdCBvYmxpZ2F0ZWQNCj4+PiB0byBrbm93IHRoZSBzdHJ1 Y3R1cmUgb2YgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIHdoaWxlICd1cHN0cmVhbScNCj4+ PiBmbGFnIGlzIHNvbWV0aGluZyB2ZXJ5IHVuY2xlYXIgZnJvbSB0aGF0IHBlcnNwZWN0aXZl IGFuZCBtYWtlcw0KPj4+IG5vIHNlbnNlIGZvciBwbGFuZSBwb3J0cyAobm9uLXJlcHJlc2Vu dG9ycykuDQo+Pg0KPj4gUGVyaGFwcyBpbmRlZWQgInVwc3RyZWFtIiBpcyBiYXJlbHkgdGhl IGJlc3QgY2hvaWNlLCBhbmQgSSdkIGJlIHRlbXB0ZWQgdG8gYWNjZXB0IHRoZSAiZWdyZXNz IiBwcm9wb3NhbCwgYnV0IEkgc3Ryb25nbHkgZGlzYWdyZWUgd2l0aCB0aGUgc3VnZ2VzdGlv biB0aGF0ICJ1cHN0cmVhbSIgcHVycG9ydGVkbHkgaW1wbGllcyBzb21lIEhXIGtub3dsZWRn ZS4gSXQgc2ltcGx5IG1lYW5zIHRoYXQgdGhlIHBhY2tldCBnb2VzIHRvIHRoZSBsb2NhdGlv biB3aGVyZSB0aGUgd2lyZSBsZWFkcyB0byBhbmQgbm90IGJhY2sgdG8gdGhlIGFwcGxpY2F0 aW9uJ3Mgb3duIGVuZCBvZiB0aGUgd2lyZS4gTXVzdCB0aGUgcG9ydCBiZSBjb25uZWN0ZWQg dG8gc29tZSBsb2NhdGlvbi4gQW5kIGZvciBub24tcmVwcmVzZW50b3JzLCBsaWtlIGFkbWlu J3MgUEYgKGlzbid0IHRoYXQgd2hhdCB5b3UgY2FsbCBhIHBsYW5lIHBvcnQ/KSBpdCBwZXJm ZWN0bHkgbWFrZXMgc2Vuc2UgYmVjYXVzZSBzYXlpbmcgIlBPUlRfSUQgaWQgMCB1cHN0cmVh bSIgbWVhbnMgKG5vdCB0byB0aGUgYXBwbGljYXRpb24sIGJ1dCB0byB1cykgdGhhdCB0aGUg cGFja2V0IHdpbGwgYmUgc2VudCB0byBuZXR3b3JrIHRocm91Z2ggdGhlIG5ldHdvcmsgcG9y dCBjb25uZWN0ZWQgdG8gdGhpcyBQRi4gVGhhdCdzIGl0Lg0KPj4NCj4+Pg0KPj4+Pg0KPj4+ Pj4NCj4+Pj4+Pg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IE9uIDAxLzA2LzIwMjEgMTU6MTAsIEls eWEgTWF4aW1ldHMgd3JvdGU6DQo+Pj4+Pj4+Pj4gT24gNi8xLzIxIDE6MTQgUE0sIEl2YW4g TWFsb3Ygd3JvdGU6DQo+Pj4+Pj4+Pj4+IEJ5IGl0cyB2ZXJ5IG5hbWUsIGFjdGlvbiBQT1JU X0lEIG1lYW5zIHRoYXQgcGFja2V0cyBoaXQgYW4gZXRoZGV2IHdpdGggdGhlDQo+Pj4+Pj4+ Pj4+IGdpdmVuIERQREsgcG9ydCBJRC4gQXQgbGVhc3QgdGhlIGN1cnJlbnQgY29tbWVudHMg ZG9uJ3Qgc3RhdGUgdGhlIG9wcG9zaXRlLg0KPj4+Pj4+Pj4+PiBUaGF0IHNhaWQsIHNpbmNl IHBvcnQgcmVwcmVzZW50b3JzIGhhZCBiZWVuIGFkb3B0ZWQsIGFwcGxpY2F0aW9ucyBsaWtl IE92Uw0KPj4+Pj4+Pj4+PiBoYXZlIGJlZW4gbWlzdXNpbmcgdGhlIGFjdGlvbi4gVGhleSBt aXNyZWFkIGl0cyBwdXJwb3NlIGFzIHNlbmRpbmcgcGFja2V0cw0KPj4+Pj4+Pj4+PiB0byB0 aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSAid2lyZSIgcGx1Z2dlZCB0byB0aGUgZ2l2ZW4gZXRo ZGV2LCBmb3IgZXhhbXBsZSwNCj4+Pj4+Pj4+Pj4gcmVkaXJlY3RpbmcgcGFja2V0cyB0byB0 aGUgVkYgaXRzZWxmIHJhdGhlciB0aGFuIHRvIGl0cyByZXByZXNlbnRvciBldGhkZXYuDQo+ Pj4+Pj4+Pj4+IEFub3RoZXIgZXhhbXBsZTogT3ZTIHJlbGllcyBvbiB0aGlzIGFjdGlvbiB3 aXRoIHRoZSBhZG1pbiBQRidzIGV0aGRldiBwb3J0DQo+Pj4+Pj4+Pj4+IElEIHNwZWNpZmll ZCBpbiBpdCBpbiBvcmRlciB0byBzZW5kIG9mZmxvYWRlZCBwYWNrZXRzIHRvIHRoZSBwaHlz aWNhbCBwb3J0Lg0KPj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+PiBTaW5jZSB0aGVyZSBtaWdodCBi ZSBhcHBsaWNhdGlvbnMgd2hpY2ggdXNlIHRoaXMgYWN0aW9uIGluIGl0cyB2YWxpZCBzZW5z ZSwNCj4+Pj4+Pj4+Pj4gb25lIGNhbid0IGp1c3QgY2hhbmdlIHRoZSBkb2N1bWVudGF0aW9u IHRvIGdyZWVubGlnaHQgdGhlIG9wcG9zaXRlIG1lYW5pbmcuDQo+Pj4+Pj4+Pj4+IFRoaXMg cGF0Y2ggYWRkcyBhbiBleHBsaWNpdCBiaXQgdG8gdGhlIGFjdGlvbiBjb25maWd1cmF0aW9u IHdoaWNoIHdpbGwgbGV0DQo+Pj4+Pj4+Pj4+IGFwcGxpY2F0aW9ucywgZGVwZW5kaW5nIG9u IHRoZWlyIG5lZWRzLCBsZXZlcmFnZSB0aGUgdHdvIG1lYW5pbmdzIHByb3Blcmx5Lg0KPj4+ Pj4+Pj4+PiBBcHBsaWNhdGlvbnMgbGlrZSBPdlMsIGFzIHdlbGwgYXMgUE1Ecywgd2lsbCBo YXZlIHRvIGJlIGNvcnJlY3RlZCB3aGVuIHRoZQ0KPj4+Pj4+Pj4+PiBwYXRjaCBoYXMgYmVl biBhcHBsaWVkLiBCdXQgdGhlIGltcHJvdmVkIGNsYXJpdHkgb2YgdGhlIGFjdGlvbiBpcyB3 b3J0aCBpdC4NCj4+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4gVGhlIHByb3Bvc2VkIGNoYW5nZSBp cyBub3QgdGhlIG9ubHkgb3B0aW9uLiBPbmUgY291bGQgYXZvaWQgY2hhbmdlcyBpbiBPdlMN Cj4+Pj4+Pj4+Pj4gYW5kIFBNRHMgaWYgdGhlIG5ldyBjb25maWd1cmF0aW9uIGZpZWxkIGhh ZCB0aGUgb3Bwb3NpdGUgbWVhbmluZywgd2l0aCB0aGUNCj4+Pj4+Pj4+Pj4gYWN0aW9uIGl0 c2VsZiBtZWFuaW5nIGRlbGl2ZXJ5IHRvIHRoZSByZXByZXNlbnRlZCBwb3J0IGFuZCBub3Qg dG8gRFBESyBvbmUuDQo+Pj4+Pj4+Pj4+IEFsdGVybmF0aXZlbHksIG9uZSBjb3VsZCBkZWZp bmUgYSBicmFuZCBuZXcgYWN0aW9uIHdpdGggdGhlIHNhaWQgYmVoYXZpb3VyLg0KPj4+Pj4+ Pj4+DQo+Pj4+Pj4+Pj4gV2UgaGFkIGFscmVhZHkgdmVyeSBzaW1pbGFyIGRpc2N1c3Npb25z IHJlZ2FyZGluZyB0aGUgdW5kZXJzdGFuZGluZyBvZiB3aGF0DQo+Pj4+Pj4+Pj4gdGhlIHJl cHJlc2VudG9yIHJlYWxseSBpcyBmcm9tIHRoZSBEUERLIEFQSSdzIHBvaW50IG9mIHZpZXcs IGFuZCB0aGUgbGFzdA0KPj4+Pj4+Pj4+IHRpbWUsIElJVUMsIGl0IHdhcyBjb25jbHVkZWQg YnkgYSB0ZWNoLiBib2FyZCB0aGF0IHJlcHJlc2VudG9yIHNob3VsZCBiZQ0KPj4+Pj4+Pj4+ IGEgImdob3N0IG9mIGEgVkYiLCBpLmUuIERQREsgQVBJcyBzaG91bGQgYXBwbHkgY29uZmln dXJhdGlvbiBieSBkZWZhdWx0IHRvDQo+Pj4+Pj4+Pj4gVkYgYW5kIG5vdCB0byB0aGUgcmVw cmVzZW50b3IgZGV2aWNlOg0KPj4+Pj4+Pj4+ICDCoMKgwqDCoCBodHRwczovL3BhdGNoZXMu ZHBkay5vcmcvcHJvamVjdC9kcGRrL2NvdmVyLzIwMTkxMDI5MTg1MDUxLjMyMjAzLTEtdGhv bWFzQG1vbmphbG9uLm5ldC8jMTA0Mzc2DQo+Pj4+Pj4+Pj4gVGhpcyB3YXNuJ3QgZW5mb3Jj ZWQgdGhvdWdoLCBJSVVDLCBmb3IgZXhpc3RpbmcgY29kZSBhbmQgc2VtYW50aWNzIGlzIHN0 aWxsIG1peGVkLg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gSSBzdGlsbCB0aGluayB0aGF0IGNv bmZpZ3VyYXRpb24gc2hvdWxkIGJlIGFwcGxpZWQgdG8gVkYsIGFuZCB0aGUgc2FtZSBhcHBs aWVzDQo+Pj4+Pj4+Pj4gdG8gcnRlX2Zsb3cgQVBJLsKgIElNSE8sIGF2ZXJhZ2UgYXBwbGlj YXRpb24gc2hvdWxkIG5vdCBjYXJlIGlmIGRldmljZSBpcw0KPj4+Pj4+Pj4+IGEgVkYgaXRz ZWxmIG9yIGl0cyByZXByZXNlbnRvci7CoCBFdmVyeXRoaW5nIHNob3VsZCB3b3JrIGV4YWN0 bHkgdGhlIHNhbWUuDQo+Pj4+Pj4+Pj4gSSB0aGluayB0aGlzIG1hdGNoZXMgd2l0aCB0aGUg b3JpZ2luYWwgaWRlYS9kZXNpZ24gb2YgdGhlIHN3aXRjaGRldiBmdW5jdGlvbmFsaXR5DQo+ Pj4+Pj4+Pj4gaW4gdGhlIGxpbnV4IGtlcm5lbCBhbmQgYWxzbyBtYXRjaGVzIHdpdGggaG93 IHRoZSBhdmVyYWdlIHVzZXIgdGhpbmtzIGFib3V0DQo+Pj4+Pj4+Pj4gcmVwcmVzZW50b3Ig ZGV2aWNlcy4NCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IElmIHNvbWUgc3BlY2lmaWMgdXNlLWNh c2UgcmVxdWlyZXMgdG8gZGlzdGluZ3Vpc2ggVkYgZnJvbSB0aGUgcmVwcmVzZW50b3IsDQo+ Pj4+Pj4+Pj4gdGhlcmUgc2hvdWxkIHByb2JhYmx5IGJlIGEgc2VwYXJhdGUgc3BlY2lhbCBB UEkvZmxhZyBmb3IgdGhhdC4NCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IEJlc3QgcmVnYXJkcywg SWx5YSBNYXhpbWV0cy4NCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4NCj4+Pj4+Pg0KPj4+Pg0KPj4N Cg0KLS0gDQpJdmFuIE0NCg==