From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v3] displif: add ABI for para-virtual display Date: Fri, 10 Feb 2017 16:27:47 -0500 Message-ID: <20170210212747.GA1890@char.us.ORACLE.com> References: <1486711798-32322-1-git-send-email-andr2000@gmail.com> <1486711798-32322-2-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ccIjb-0006hN-V8 for xen-devel@lists.xenproject.org; Fri, 10 Feb 2017 21:28:04 +0000 Content-Disposition: inline In-Reply-To: <1486711798-32322-2-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Andrushchenko Cc: Oleksandr Andrushchenko , vlad.babchuk@gmail.com, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, Oleksandr Grytsov , xen-devel@lists.xenproject.org, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBGZWIgMTAsIDIwMTcgYXQgMDk6Mjk6NThBTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gd3JvdGU6Cj4gRnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5k cl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+IAo+IFRoaXMgaXMgdGhlIEFCSSBmb3IgdGhlIHR3 byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1YWxpemVkCj4gZGlzcGxheSBkcml2ZXIuCj4gCj4gVGhp cyBwcm90b2NvbCBhaW1zIHRvIHByb3ZpZGUgYSB1bmlmaWVkIHByb3RvY29sIHdoaWNoIGZpdHMg bW9yZQo+IHNvcGhpc3RpY2F0ZWQgdXNlLWNhc2VzIHRoYW4gYSBmcmFtZWJ1ZmZlciBkZXZpY2Ug Y2FuIGhhbmRsZS4gQXQgdGhlCj4gbW9tZW50IGJhc2ljIGZ1bmN0aW9uYWxpdHkgaXMgc3VwcG9y dGVkIHdpdGggdGhlIGludGVudGlvbiB0byBleHRlbmQ6Cj4gICBvIG11bHRpcGxlIGR5bmFtaWNh bGx5IGFsbG9jYXRlZC9kZXN0cm95ZWQgZnJhbWVidWZmZXJzCj4gICBvIGJ1ZmZlcnMgb2YgYXJi aXRyYXJ5IHNpemVzCj4gICBvIGJldHRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5n IG11bHRpcGxlIGRpc3BsYXkgc3VwcG9ydAo+IAo+IE5vdGU6IGV4aXN0aW5nIGZiaWYgY2FuIGJl IHVzZWQgdG9nZXRoZXIgd2l0aCBkaXNwbGlmIHJ1bm5pbmcgYXQgdGhlCj4gc2FtZSB0aW1lLCBl LmcuIG9uIExpbnV4IG9uZSBwcm92aWRlcyBmcmFtZWJ1ZmZlciBhbmQgYW5vdGhlciBEUk0vS01T Cj4gCj4gRnV0dXJlIGV4dGVuc2lvbnMgdG8gdGhlIGV4aXN0aW5nIHByb3RvY29sIG1heSBpbmNs dWRlOgo+ICAgbyBhbGxvdyBkaXNwbGF5L2Nvbm5lY3RvciBjbG9uaW5nCj4gICBvIGFsbG93IGFs bG9jYXRpbmcgb2JqZWN0cyBvdGhlciB0aGFuIGRpc3BsYXkgYnVmZmVycwo+ICAgbyBhZGQgcGxh bmVzL292ZXJsYXlzIHN1cHBvcnQKPiAgIG8gc3VwcG9ydCBzY2FsaW5nCj4gICBvIHN1cHBvcnQg cm90YXRpb24KPiAKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQo+IFJhdGlvbmFsZSBmb3IgaW50cm9kdWNpbmcgdGhpcyBwcm90b2NvbCBpbnN0ZWFk IG9mCj4gdXNpbmcgdGhlIGV4aXN0aW5nIGZiaWY6Cj4gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAKPiAxLiBJbi9vdXQgZXZlbnQgc2l6ZXMKPiAg IG8gZmJpZiAtIDQwIG9jdGV0cwo+ICAgbyBkaXNwbGlmIC0gNDAgb2N0ZXRzCj4gVGhpcyBpcyBv bmx5IHRoZSBpbml0aWFsIHZlcnNpb24gb2YgdGhlIGRpc3BsaWYgcHJvdG9jb2wKPiB3aGljaCBt ZWFucyB0aGF0IHRoZXJlIGNvdWxkIGJlIHJlcXVlc3RzIHdoaWNoIHdpbGwgbm90IGZpdAo+IChX UlQgaW50cm9kdWNpbmcgc29tZSBHUFUgcmVsYXRlZCBmdW5jdGlvbmFsaXR5Cj4gbGF0ZXIgb24p LiBJbiB0aGF0IGNhc2Ugd2UgY2Fubm90IGFsdGVyIGZiaWYgc2l6ZXMgYXMgd2UgbmVlZCB0bwo+ IGJlIGJhY2t3YXJkIGNvbXBhdGlibGUgYW4gd2lsbCBiZSBmb3JjZWQgdG8gaGFuZGxlIHRob3Nl Cj4gYXBhcnQgb2YgZmJpZi4KPiAKPiAyLiBTaGFyZWQgcGFnZQo+IERpc3BsaWYgZG9lc24ndCB1 c2UgYW55dGhpbmcgbGlrZSBzdHJ1Y3QgeGVuZmJfcGFnZSwgYnV0Cj4gREVGSU5FX1JJTkdfVFlQ RVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4ZW5kaXNwbF9yZXEsIHN0cnVjdAo+IHhlbmRpc3BsX3Jl c3ApIHdoaWNoIGlzIGEgYmV0dGVyIGFuZCBtb3JlIGNvbW1vbiB3YXkuCj4gT3V0cHV0IGV2ZW50 cyB1c2UgYSBzaGFyZWQgcGFnZSB3aGljaCBvbmx5IGhhcyBpbl9jb25zIGFuZCBpbl9wcm9kCj4g YW5kIGFsbCB0aGUgcmVzdCBpcyB1c2VkIGZvciBpbmNvbWluZyBldmVudHMuIEhlcmUgc3RydWN0 IHhlbmZiX3BhZ2UKPiBjb3VsZCBwcm9iYWJseSBiZSB1c2VkIGFzIGlzIGRlc3BpdGUgdGhlIGZh Y3QgdGhhdCBpdCBvbmx5IGhhcyBhIGhhbGYKPiBvZiBhIHBhZ2UgZm9yIGluY29taW5nIGV2ZW50 cyB3aGljaCBpcyBvbmx5IDUwIGV2ZW50cy4gKGNvbnNpZGVyCj4gc29tZXRoaW5nIGxpa2UgNjBI eiBkaXNwbGF5KQo+IAo+IDMuIEFtb3VudCBvZiBjaGFuZ2VzLgo+IGZiaWYgb25seSBwcm92aWRl cyBYRU5GQl9UWVBFX1VQREFURSBhbmQgWEVORkJfVFlQRV9SRVNJWkUKPiBldmVudHMsIHNvIGl0 IGxvb2tzIGxpa2UgaXQgaXMgZWFzaWVyIHRvIGdldCBmYiBzdXBwb3J0IGludG8gZGlzcGxpZgoK Li4gd291bGQgaXQgbWFrZSBzZW5zZSB0byByZXNlcnZlIHNvbWUgb2YgdGhvc2UgdmFsdWVzICgy LCAzKQppbiB0aGUgWEVORElTUExfT1BfIHZhbHVlcz8gU28gdGhhdCBpZiB0aGlzIGhhcHBlbnMg dGhlcmUgaXMgYSBuaWNlCmZpdCBpbiB0aGVyZT8gVGhvdWdodCBsb29raW5nIGF0IHRoZSBzdHJ1 Y3R1cmUgdGhlcmUgaXMgbm8gZWFzeQp3YXkgdG8gJ292ZXJsYXknIHRoZSB4ZW5mYl9vdXRfZXZl bnQgc3RydWN0dXJlIGFzIGl0IGlzIG1pc3NpbmcgdGhlICdpZCcuCgpJIGd1ZXNzIG9uZSBjYW4g Z2V0IGNyZWF0aXZlLgoKT3IgeW91IGNvdWxkIHN3YXAgcG9zaXRpb25zIG9mICdpZCcgYW5kICd0 eXBlJz8gQW5kIHRoZW4gaXQgd291bGQgZml0IG11Y2gKbmljZXI/Cgo+IHRoYW4gdmljZSB2ZXJz YS4gZGlzcGxpZiBhdCB0aGUgbW9tZW50IGhhcyA2IHJlcXVlc3RzIGFuZCAxIGV2ZW50LAo+IG11 bHRpcGxlIGNvbm5lY3RvciBzdXBwb3J0LCBldGMuCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MjoKPiAg KiB1cGRhdGVkIFhlblN0b3JlIGNvbmZpZ3VyYXRpb24gdGVtcGxhdGUvcGF0dGVybgo+ICAqIGFk ZGVkICJSZWNvdmVyeSBmbG93IiB0byBzdGF0ZSBkaWFncmFtIGRlc2NyaXB0aW9uCj4gICogcmVu YW1lZCBncmVmX2RpcmVjdG9yeV9zdGFydCB0byBncmVmX2RpcmVjdG9yeQo+ICAqIGFkZGVkIG1p c3NpbmcgInZlcnNpb25zIiBhbmQgInZlcnNpb24iIHN0cmluZyBjb25zdGFudHMKPiAKPiBDaGFu Z2VzIHNpbmNlIHYxOgo+ICAqIGZpeGVkIHhlbmRpc3BsX2V2ZW50X3BhZ2UgcGFkZGluZyBzaXpl Cj4gICogYWRkZWQgdmVyc2lvbmluZyBzdXBwb3J0Cj4gICogZXhwbGljaXRseSBkZWZpbmUgdmFs dWUgdHlwZXMgZm9yIFhlblN0b3JlIGZpZWxkcwo+ICAqIHRleHQgZGVjb3JhdGlvbiByZS13b3Jr Cj4gICogYWRkZWQgb2Zmc2V0cyB0byBBU0NJSSBib3ggbm90YXRpb24KPiAKPiBDaGFuZ2VzIHNp bmNlIGluaXRpYWw6Cj4gICogRFJNIGNoYW5nZWQgdG8gRElTUEwsIHByb3RvY29sIG1hZGUgZ2Vu ZXJpYwo+ICAqIG1ham9yIHJlLXdvcmsgYWRkcmVzc2luZyBpc3N1ZXMgcmFpc2VkIGZvciBzbmRp Zgo+IAo+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBHcnl0c292IDxvbGVrc2FuZHJfZ3J5dHNv dkBlcGFtLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xl a3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4gLS0tCj4gIHhlbi9pbmNsdWRlL3B1Ymxp Yy9pby9kaXNwbGlmLmggfCA3NzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+ICAxIGZpbGUgY2hhbmdlZCwgNzc4IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9pby9kaXNwbGlmLmgKPiAKPiBkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvcHVibGljL2lvL2Rpc3BsaWYuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9k aXNwbGlmLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uODQ5 ZjI3ZmU1ZjFkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9k aXNwbGlmLmgKPiBAQCAtMCwwICsxLDc3OCBAQAo+ICsvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4g KyAqIGRpc3BsaWYuaAo+ICsgKgo+ICsgKiBVbmlmaWVkIGRpc3BsYXkgZGV2aWNlIEkvTyBpbnRl cmZhY2UgZm9yIFhlbiBndWVzdCBPU2VzLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5 Cj4gKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLCB0bwo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQo+ICsgKiByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLCBhbmQvb3IKPiArICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKPiArICogZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh bGwgYmUgaW5jbHVkZWQgaW4KPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF Ugo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgRVBBTSBT eXN0ZW1zIEluYy4KPiArICoKPiArICogQXV0aG9yczogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28g PG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+ICsgKiAgICAgICAgICBPbGVrc2Fu ZHIgR3J5dHNvdiA8b2xla3NhbmRyX2dyeXRzb3ZAZXBhbS5jb20+Cj4gKyAqLwo+ICsKPiArI2lm bmRlZiBfX1hFTl9QVUJMSUNfSU9fRElTUExJRl9IX18KPiArI2RlZmluZSBfX1hFTl9QVUJMSUNf SU9fRElTUExJRl9IX18KPiArCj4gKyNpbmNsdWRlICJyaW5nLmgiCj4gKyNpbmNsdWRlICIuLi9n cmFudF90YWJsZS5oIgo+ICsKPiArLyoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAg ICAgICAgICAgICAgICAgIE1haW4gZmVhdHVyZXMgcHJvdmlkZWQgYnkgdGhlIHByb3RvY29sCj4g KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPiArICogVGhpcyBwcm90b2NvbCBhaW1zIHRvIHByb3Zp ZGUgYSB1bmlmaWVkIHByb3RvY29sIHdoaWNoIGZpdHMgbW9yZQo+ICsgKiBzb3BoaXN0aWNhdGVk IHVzZS1jYXNlcyB0aGFuIGEgZnJhbWVidWZmZXIgZGV2aWNlIGNhbiBoYW5kbGUuIEF0IHRoZQo+ ICsgKiBtb21lbnQgYmFzaWMgZnVuY3Rpb25hbGl0eSBpcyBzdXBwb3J0ZWQgd2l0aCB0aGUgaW50 ZW50aW9uIHRvIGJlIGV4dGVuZGVkOgo+ICsgKiAgbyBtdWx0aXBsZSBkeW5hbWljYWxseSBhbGxv Y2F0ZWQvZGVzdHJveWVkIGZyYW1lYnVmZmVycwo+ICsgKiAgbyBidWZmZXJzIG9mIGFyYml0cmFy eSBzaXplcwo+ICsgKiAgbyBidWZmZXIgYWxsb2NhdGlvbiBhdCBlaXRoZXIgYmFjayBvciBmcm9u dCBlbmQKPiArICogIG8gYmV0dGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbmNsdWRpbmcgbXVs dGlwbGUgZGlzcGxheSBzdXBwb3J0Cj4gKyAqCj4gKyAqIE5vdGU6IGV4aXN0aW5nIGZiaWYgY2Fu IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBkaXNwbGlmIHJ1bm5pbmcgYXQgdGhlCj4gKyAqIHNhbWUg dGltZSwgZS5nLiBvbiBMaW51eCBvbmUgcHJvdmlkZXMgZnJhbWVidWZmZXIgYW5kIGFub3RoZXIg RFJNL0tNUwo+ICsgKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAgRGlyZWN0aW9uIG9mIGltcHJvdmVtZW50cwo+ICsgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCj4gKyAqIEZ1dHVyZSBleHRlbnNpb25zIHRvIHRoZSBleGlzdGluZyBwcm90b2NvbCBt YXkgaW5jbHVkZToKPiArICogIG8gZGlzcGxheS9jb25uZWN0b3IgY2xvbmluZwo+ICsgKiAgbyBh bGxvY2F0aW9uIG9mIG9iamVjdHMgb3RoZXIgdGhhbiBkaXNwbGF5IGJ1ZmZlcnMKPiArICogIG8g cGxhbmUvb3ZlcmxheSBzdXBwb3J0Cj4gKyAqICBvIHNjYWxpbmcgc3VwcG9ydAo+ICsgKiAgbyBy b3RhdGlvbiBzdXBwb3J0Cj4gKyAqCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogICAg ICAgICAgICAgICAgICBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVnb3RpYXRpb24KPiArICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgo+ICsgKgo+ICsgKiBGcm9udC0+YmFjayBub3RpZmljYXRpb25zOiB3 aGVuIGVucXVldWluZyBhIG5ldyByZXF1ZXN0LCBzZW5kaW5nIGEKPiArICogbm90aWZpY2F0aW9u IGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHhlbmRpc3BsX3JlcSAoaS5lLiwgdGhlIGdlbmVy aWMKPiArICogaG9sZC1vZmYgbWVjaGFuaXNtIHByb3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3Jvcyku IEJhY2tlbmRzIG11c3Qgc2V0Cj4gKyAqIHhlbmRpc3BsX3JlcSBhcHByb3ByaWF0ZWx5IChlLmcu LCB1c2luZyBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVFVRVNUUygpKS4KPiArICoKPiArICogQmFj ay0+ZnJvbnQgbm90aWZpY2F0aW9uczogd2hlbiBlbnF1ZXVpbmcgYSBuZXcgcmVzcG9uc2UsIHNl bmRpbmcgYQo+ICsgKiBub3RpZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24geGVu ZGlzcGxfcmVzcCAoaS5lLiwgdGhlIGdlbmVyaWMKPiArICogaG9sZC1vZmYgbWVjaGFuaXNtIHBy b3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEZyb250ZW5kcyBtdXN0IHNldAo+ICsgKiB4ZW5k aXNwbF9yZXNwIGFwcHJvcHJpYXRlbHkgKGUuZy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9S X1JFU1BPTlNFUygpKS4KPiArICoKPiArICogVGhlIHR3byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1 YWwgZGlzcGxheSBkcml2ZXIgdXRpbGl6ZSBub2RlcyB3aXRoaW4KPiArICogWGVuU3RvcmUgdG8g Y29tbXVuaWNhdGUgY2FwYWJpbGl0aWVzIGFuZCB0byBuZWdvdGlhdGUgb3BlcmF0aW5nIHBhcmFt ZXRlcnMuCj4gKyAqIFRoaXMgc2VjdGlvbiBlbnVtZXJhdGVzIHRoZXNlIG5vZGVzIHdoaWNoIHJl c2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKPiArICogYmFja2VuZCBwb3J0aW9ucyBv ZiBYZW5TdG9yZSwgZm9sbG93aW5nIHRoZSBYZW5CdXMgY29udmVudGlvbi4KPiArICoKPiArICog QWxsIGRhdGEgaW4gWGVuU3RvcmUgaXMgc3RvcmVkIGFzIHN0cmluZ3MuIE5vZGVzIHNwZWNpZnlp bmcgbnVtZXJpYwo+ICsgKiB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gZGVjaW1hbC4gSW50ZWdlciB2 YWx1ZSByYW5nZXMgbGlzdGVkIGJlbG93IGFyZQo+ICsgKiBleHByZXNzZWQgYXMgZml4ZWQgc2l6 ZWQgaW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIHN0b3JpbmcgdGhlIGNvbnZlcnNpb24KPiArICog b2YgYSBwcm9wZXJseSBmb3JtYXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9mIGluZm9y bWF0aW9uLgo+ICsgKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAgRXhhbXBsZSBjb25maWd1cmF0aW9uCj4gKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKPiArICoKPiArICogTm90ZTogZGVwZW5kaW5nIG9uIHRoZSB1c2UtY2FzZSBiYWNrZW5kIGNh biBleHBvc2UgbW9yZSBkaXNwbGF5IGNvbm5lY3RvcnMKPiArICogdGhhbiB0aGUgdW5kZXJseWlu ZyBIVyBwaHlzaWNhbGx5IGhhcyBieSBlbXBsb3lpbmcgU1cgZ3JhcGhpY3MgY29tcG9zaXRvcnMK PiArICoKPiArICogVGhpcyBpcyBhbiBleGFtcGxlIG9mIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNv bmZpZ3VyYXRpb246Cj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IEJhY2tlbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICog L2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMC9mcm9udGVuZC1pZCA9ICIxIgo+ICsg KiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92ZGlzcGwvMS8wL2Zyb250ZW5kID0gIi9sb2NhbC9k b21haW4vMS9kZXZpY2UvdmRpc3BsLzAiCj4gKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3Zk aXNwbC8xLzAvc3RhdGUgPSAiNCIKPiArICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3Bs LzEvMC92ZXJzaW9ucyA9ICIxLDIiCj4gKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNw bC8xLzAvZmVhdHVyZXMgPSAiYmVfYWxsb2MiCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIEZyb250ZW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KPiArICoKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC9iYWNrZW5kLWlk ID0gIjAiCj4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvYmFja2VuZCA9ICIv bG9jYWwvZG9tYWluLzAvYmFja2VuZC92ZGlzcGwvMS8wIgo+ICsgKiAvbG9jYWwvZG9tYWluLzEv ZGV2aWNlL3ZkaXNwbC8wL3N0YXRlID0gIjQiCj4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2Uv dmRpc3BsLzAvdmVyc2lvbiA9ICIxIgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tIENvbm5lY3RvciAwIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g KyAqCj4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMC9yZXNvbHV0aW9uID0g IjE5MjB4MTA4MCIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8wL2N0cmwt cmluZy1yZWYgPSAiMjgzMiIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8w L2N0cmwtY2hhbm5lbCA9ICIxNSIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwv MC8wL2V2ZW50LXJpbmctcmVmID0gIjM4NyIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 ZGlzcGwvMC8wL2V2ZW50LWNoYW5uZWwgPSAiMTYiCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gQ29ubmVjdG9yIDEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiArICoKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8xL3Jlc29s dXRpb24gPSAiODAweDYwMCIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8x L2N0cmwtcmluZy1yZWYgPSAiMjgzMyIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlz cGwvMC8xL2N0cmwtY2hhbm5lbCA9ICIxNyIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 ZGlzcGwvMC8xL2V2ZW50LXJpbmctcmVmID0gIjM4OCIKPiArICogL2xvY2FsL2RvbWFpbi8xL2Rl dmljZS92ZGlzcGwvMC8xL2V2ZW50LWNoYW5uZWwgPSAiMTgiCj4gKyAqCj4gKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja2VuZCBYZW5C dXMgTm9kZXMKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIFByb3RvY29sIHZlcnNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gKyAqCj4gKyAqIHZlcnNpb25zCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAg IDxzdHJpbmc+Cj4gKyAqCj4gKyAqICAgICAgTGlzdCBvZiBYRU5ESVNQTF9MSVNUX1NFUEFSQVRP UiBzZXBhcmF0ZWQgcHJvdG9jb2wgdmVyc2lvbnMgc3VwcG9ydGVkCj4gKyAqICAgICAgYnkgdGhl IGJhY2tlbmQuIEZvciBleGFtcGxlICIxLDIsMyIuCj4gKyAqCj4gKyAqIGZlYXR1cmVzCj4gKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIDxsaXN0IG9mIHN0cmluZ3M+Cj4gKyAqCj4gKyAqICAgICAg WEVORElTUExfTElTVF9TRVBBUkFUT1Igc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVyZXMKPiArICog ICAgICBYRU5ESVNQTF9GRUFUVVJFX0JFXz8/PyB0aGF0IHRoZSBiYWNrZW5kIHN1cHBvcnRzLgo+ ICsgKgo+ICsgKiAgICAgIGJlX2FsbG9jCj4gKyAqICAgICAgICAgICAgIEJhY2tlbmQgY2FuIGJl IGEgYnVmZmVyIHByb3ZpZGVyL2FsbG9jYXRvciBkdXJpbmcKPiArICogICAgICAgICAgICAgWEVO RElTUExfT1BfREJVRl9DUkVBVEUgb3BlcmF0aW9uIChzZWUgYmVsb3cgZm9yIG5lZ290aWF0aW9u KS4KPiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGcm9udGVuZCBYZW5CdXMgTm9kZXMKPiArICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFkZHJlc3Npbmcg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIGRvbS1pZAo+ICsg KiAgICAgIFZhbHVlczogICAgICAgICA8dWludDE2X3Q+Cj4gKyAqCj4gKyAqICAgICAgRG9tYWlu IGlkZW50aWZpZXIuCj4gKyAqCj4gKyAqIGRldi1pZAo+ICsgKiAgICAgIFZhbHVlczogICAgICAg ICA8dWludDE2X3Q+Cj4gKyAqCj4gKyAqICAgICAgRGV2aWNlIGlkZW50aWZpZXIuCj4gKyAqCj4g KyAqIGNvbm4taWR4Cj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50OF90Pgo+ICsgKgo+ ICsgKiAgICAgIFplcm8gYmFzZWQgY29udGlnb3VzIGluZGV4IG9mIHRoZSBjb25uZWN0b3IuCj4g KyAqICAgICAgL2xvY2FsL2RvbWFpbi88ZG9tLWlkPi9kZXZpY2UvdmRpc3BsLzxkZXYtaWQ+Lzxj b25uLWlkeD4vLi4uCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJv dG9jb2wgdmVyc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICog dmVyc2lvbgo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8c3RyaW5nPgo+ICsgKgo+ICsgKiAg ICAgIFByb3RvY29sIHZlcnNpb24sIGNob3NlbiBhbW9uZyB0aGUgb25lcyBzdXBwb3J0ZWQgYnkg dGhlIGJhY2tlbmQuCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29u bmVjdG9yIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICog cmVzb2x1dGlvbgo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8d2lkdGgsIHVpbnQzMl90Png8 aGVpZ2h0LCB1aW50MzJfdD4KPiArICoKPiArICogICAgICBXaWR0aCBhbmQgaGVpZ2h0IG9mIHRo ZSBjb25uZWN0b3IgaW4gcGl4ZWxzIHNlcGFyYXRlZCBieQo+ICsgKiAgICAgIFhFTkRJU1BMX1JF U09MVVRJT05fU0VQQVJBVE9SLgoKSXMgdGhlcmUgYW4gZGVmYXVsdCBkZXB0aD8gMzI/IE9yIHNo b3VsZCB0aGF0IGFsc28gYmUgbmVnb3RpYXRlZD8KCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0t LS0tIENvbm5lY3RvciBSZXF1ZXN0IFRyYW5zcG9ydCBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0t LS0tLS0KPiArICoKPiArICogY3RybC1jaGFubmVsCgpQbGVhc2UgY2FsbCBpdCAnY3RybC1ldmVu dC1jaGFubmVsJwoKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+ICsgKgo+ ICsgKiAgICAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBYZW4gY29ubmVjdG9yJ3MgY29udHJvbCBl dmVudCBjaGFubmVsCj4gKyAqICAgICAgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkgaW4gdGhlIHJp bmcgYnVmZmVyLgo+ICsgKgo+ICsgKiBjdHJsLXJpbmctcmVmCj4gKyAqICAgICAgVmFsdWVzOiAg ICAgICAgIDx1aW50MzJfdD4KPiArICoKPiArICogICAgICBUaGUgWGVuIGdyYW50IHJlZmVyZW5j ZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFja2VuZCB0byBtYXAKPiArICogICAgICBh IHNvbGUgcGFnZSBpbiBhIHNpbmdsZSBwYWdlIHNpemVkIGNvbm5lY3RvcidzIGNvbnRyb2wgcmlu ZyBidWZmZXIuCj4gKyAqCj4gKyAqIGV2ZW50LWNoYW5uZWwKPiArICogICAgICBWYWx1ZXM6ICAg ICAgICAgPHVpbnQzMl90Pgo+ICsgKgo+ICsgKiAgICAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBY ZW4gY29ubmVjdG9yJ3MgZXZlbnQgY2hhbm5lbAo+ICsgKiAgICAgIHVzZWQgdG8gc2lnbmFsIGFj dGl2aXR5IGluIHRoZSByaW5nIGJ1ZmZlci4KPiArICoKPiArICogZXZlbnQtcmluZy1yZWYKPiAr ICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+ICsgKgo+ICsgKiAgICAgIFRoZSBY ZW4gZ3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRv IG1hcAo+ICsgKiAgICAgIGEgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBhZ2Ugc2l6ZWQgY29ubmVj dG9yJ3MgZXZlbnQgcmluZyBidWZmZXIuCgpTbyB5b3UgYXJlIG1ha2luZyB0d28gcmluZ3MgYW5k IHR3byBldmVudCBjaGFubmVscyAtIGFuZCBpdCBsb29rcyBsaWtlIHRoZQpvcGVyYXRpb25zIGFy ZSBnb2luZyB2aWEgdGhlIGNvbnRyb2wgcmluZy4uIGJ1dCB3aGF0IGdvZXMgdGhyb3VnaCB0aGUK dGhlIG90aGVyIHJpbmcgYnVmZmVyPwoKT3IgaXMgdGhlIG90aGVyIHJpbmcgYnVmZmVyIHRoZSBv bmUgdGhhdCBpcyBjcmVhdGVkIHZpYSAnZ3JlZl9kaXJlY3RvcnknID8KSWYgc28sIHdvdWxkbid0 IHlvdSBuZWVkIG11bGl0cGxlIGV2ZW50IGNoYW5uZWxzPyBBbmQgYWxzbyB0aGUgc2l6ZSBvZiB0 aG9zZQpyaW5ncyBpcyBtdWNoIG11Y2ggYmlnZ2VyLiBCdXQgaXQgaXMgbm90IHJlYWxseSBhIHJp bmcuIEl0IGxvb2tzIHRvIGhvbGQKc29tZSBvcGFxdWUgZGF0YT8KCi1FQ09ORlVTRUQuCj4gKyAq Lwo+ICsKPiArLyoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTVEFURSBESUFHUkFNUwo+ICsgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Cj4gKyAqCj4gKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBmcm9udCBhbmQgYmFjayBzdGF0ZSBub2Rl cyB3aXRoIGluaXRpYWwgc3RhdGUKPiArICogWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcuCj4gKyAq IFRvb2wgc3RhY2sgY3JlYXRlcyBhbmQgc2V0cyB1cCBmcm9udGVuZCBkaXNwbGF5IGNvbmZpZ3Vy YXRpb24KPiArICogbm9kZXMgcGVyIGRvbWFpbi4KPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBOb3JtYWwgZmxvdyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ICsgKgo+ICsgKiBGcm9udCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFj awo+ICsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQo+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyAg ICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcKPiArICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvIFF1ZXJ5IGJhY2tlbmQgZGV2aWNlIGlkZW50aWZpY2F0 aW9uCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLgo+ ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gT3BlbiBhbmQgdmFs aWRhdGUgYmFja2VuZCBkZXZpY2UuCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBWCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBYZW5idXNTdGF0ZUluaXRXYWl0Cj4gKyAqCj4gKyAqIG8gUXVlcnkgZnJvbnRlbmQgY29uZmln dXJhdGlvbgo+ICsgKiBvIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplCj4gKyAqICAgZXZlbnQgY2hh bm5lbHMgcGVyIGNvbmZpZ3VyZWQKPiArICogICBjb25uZWN0b3IuCj4gKyAqIG8gUHVibGlzaCB0 cmFuc3BvcnQgcGFyYW1ldGVycwo+ICsgKiAgIHRoYXQgd2lsbCBiZSBpbiBlZmZlY3QgZHVyaW5n Cj4gKyAqICAgdGhpcyBjb25uZWN0aW9uLgo+ICsgKiAgICAgICAgICAgICAgfAo+ICsgKiAgICAg ICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgVgo+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxp c2VkCj4gKyAqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBR dWVyeSBmcm9udGVuZCB0cmFuc3BvcnQgcGFyYW1ldGVycy4KPiArICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvIENvbm5lY3QgdG8gdGhlIGV2ZW50IGNoYW5uZWxzLgo+ ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiAr ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgo+ICsgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDb25uZWN0ZWQK PiArICoKPiArICogIG8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIE9TCj4gKyAqICAgIHZpcnR1YWwg ZGlzcGxheSBjb25uZWN0b3JzCj4gKyAqICAgIGFzIHBlciBjb25maWd1cmF0aW9uLgo+ICsgKiAg ICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgVgo+ ICsgKiBYZW5idXNTdGF0ZUNvbm5lY3RlZAo+ICsgKgo+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVVbmtub3duCj4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NlZAo+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDbG9zaW5nCj4gKyAqIG8gUmVt b3ZlIHZpcnR1YWwgZGlzcGxheSBkZXZpY2UKPiArICogbyBSZW1vdmUgZXZlbnQgY2hhbm5lbHMK PiArICogICAgICAgICAgICAgIHwKPiArICogICAgICAgICAgICAgIHwKPiArICogICAgICAgICAg ICAgIFYKPiArICogWGVuYnVzU3RhdGVDbG9zZWQKPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIFJlY292ZXJ5IGZsb3cgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ICsgKgo+ICsgKiBJbiBjYXNlIG9mIGZyb250ZW5kIHVucmVjb3ZlcmFibGUgZXJyb3Jz IGJhY2tlbmQgaGFuZGxlcyB0aGF0IGFzCj4gKyAqIGlmIGZyb250ZW5kIGdvZXMgaW50byB0aGUg WGVuYnVzU3RhdGVDbG9zZWQgc3RhdGUuCj4gKyAqCj4gKyAqIEluIGNhc2Ugb2YgYmFja2VuZCB1 bnJlY292ZXJhYmxlIGVycm9ycyBmcm9udGVuZCB0cmllcyByZW1vdmluZwo+ICsgKiB0aGUgZW11 bGF0ZWQgZGV2aWNlLiBJZiB0aGlzIGlzIHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgb2YgZXJyb3Is CgpXaGF0IGVtdWxhdGVkIGRldmljZT8KCj4gKyAqIHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRo ZSBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyBzdGF0ZSBhbmQgaXMgcmVhZHkgZm9yCj4gKyAqIG5l dyBjb25uZWN0aW9uIHdpdGggYmFja2VuZC4gSWYgdGhlIGVtdWxhdGVkIGRldmljZSBpcyBzdGls bCBpbiB1c2UgYW5kCgplbXVsYXRlZCBkZXZpY2U/Cgo+ICsgKiBjYW5ub3QgYmUgcmVtb3ZlZCwg dGhlbiBmcm9udGVuZCBnb2VzIGludG8gdGhlIFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZyBzdGF0 ZQoKLi4gYW5kIHdoYXQgaXMgZG9uZSBpbiBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgc3RhdGU/ CgpJIGFtIGFzc3VtaW5nICdyZXNvbHV0aW9uJyBpcyBleGFtaW5lZD8KCj4gKyAqIHVudGlsIGVp dGhlciB0aGUgZW11bGF0ZWQgZGV2aWNlIHJlbW92ZWQgb3IgYmFja2VuZCBpbml0aWF0ZXMgYSBu ZXcKPiArICogY29ubmVjdGlvbi4gT24gdGhlIGVtdWxhdGVkIGRldmljZSByZW1vdmFsIGZyb250 ZW5kIGdvZXMgaW50byB0aGUKCmVtdWxhdGVkIGRldmljZT8KCj4gKyAqIFhlbmJ1c1N0YXRlSW5p dGlhbGlzaW5nIHN0YXRlLgo+ICsgKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSRVFVRVNUIENPREVTCj4gKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKPiArICovCj4gKyNkZWZpbmUgWEVORElTUExfT1BfREJVRl9DUkVBVEUgICAgICAg MAo+ICsjZGVmaW5lIFhFTkRJU1BMX09QX0RCVUZfREVTVFJPWSAgICAgIDEKPiArI2RlZmluZSBY RU5ESVNQTF9PUF9GQl9BVFRBQ0ggICAgICAgICAyCj4gKyNkZWZpbmUgWEVORElTUExfT1BfRkJf REVUQUNIICAgICAgICAgMwo+ICsjZGVmaW5lIFhFTkRJU1BMX09QX1NFVF9DT05GSUcgICAgICAg IDQKPiArI2RlZmluZSBYRU5ESVNQTF9PUF9QR19GTElQICAgICAgICAgICA1Cj4gKwo+ICsvKgo+ ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRVZFTlQgQ09ERVMKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKi8KPiArI2Rl ZmluZSBYRU5ESVNQTF9FVlRfUEdfRkxJUCAgICAgICAgICAwCj4gKwo+ICsvKgo+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgWEVOU1RPUkUgRklFTEQgQU5EIFBB VEggTkFNRSBTVFJJTkdTLCBIRUxQRVJTCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICov Cj4gKyNkZWZpbmUgWEVORElTUExfRFJJVkVSX05BTUUgICAgICAgICAgInZkaXNwbCIKPiArCj4g KyNkZWZpbmUgWEVORElTUExfTElTVF9TRVBBUkFUT1IgICAgICAgIiwiCj4gKyNkZWZpbmUgWEVO RElTUExfUkVTT0xVVElPTl9TRVBBUkFUT1IgIngiCj4gKy8qIEZpZWxkIG5hbWVzICovCj4gKyNk ZWZpbmUgWEVORElTUExfRklFTERfQkVfVkVSU0lPTlMgICAgInZlcnNpb25zIgo+ICsjZGVmaW5l IFhFTkRJU1BMX0ZJRUxEX0ZFX1ZFUlNJT04gICAgICJ2ZXJzaW9uIgo+ICsjZGVmaW5lIFhFTkRJ U1BMX0ZJRUxEX0ZFQVRVUkVTICAgICAgICJmZWF0dXJlcyIKPiArI2RlZmluZSBYRU5ESVNQTF9G SUVMRF9DVFJMX1JJTkdfUkVGICAiY3RybC1yaW5nLXJlZiIKPiArI2RlZmluZSBYRU5ESVNQTF9G SUVMRF9DVFJMX0NIQU5ORUwgICAiY3RybC1jaGFubmVsIgo+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJ RUxEX0VWVF9SSU5HX1JFRiAgICJldmVudC1yaW5nLXJlZiIKPiArI2RlZmluZSBYRU5ESVNQTF9G SUVMRF9FVlRfQ0hBTk5FTCAgICAiZXZlbnQtY2hhbm5lbCIKPiArI2RlZmluZSBYRU5ESVNQTF9G SUVMRF9SRVNPTFVUSU9OICAgICAicmVzb2x1dGlvbiIKPiArCj4gKyNkZWZpbmUgWEVORElTUExf RkVBVFVSRV9CRV9BTExPQyAgICAgImJlX2FsbG9jIgo+ICsKPiArLyoKPiArICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBVFVTIFJFVFVSTiBD T0RFUwo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqCj4gKyAqIFN0YXR1cyByZXR1cm4g Y29kZSBpcyB6ZXJvIG9uIHN1Y2Nlc3MgYW5kIC1YRU5fRVhYIG9uIGZhaWx1cmUuCj4gKyAqCj4g KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBc3N1bXB0aW9ucwo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIG8gdXNhZ2Ugb2Yg Z3JhbnQgcmVmZXJlbmNlIDAgYXMgaW52YWxpZCBncmFudCByZWZlcmVuY2U6Cj4gKyAqICAgZ3Jh bnQgcmVmZXJlbmNlIDAgaXMgdmFsaWQsIGJ1dCBuZXZlciBleHBvc2VkIHRvIGEgUFYgZHJpdmVy LAo+ICsgKiAgIGJlY2F1c2Ugb2YgdGhlIGZhY3QgaXQgaXMgYWxyZWFkeSBpbiB1c2UvcmVzZXJ2 ZWQgYnkgdGhlIFBWIGNvbnNvbGUuCj4gKyAqIG8gYWxsIHJlZmVyZW5jZXMgaW4gdGhpcyBkb2N1 bWVudCB0byBwYWdlIHNpemVzIG11c3QgYmUgdHJlYXRlZAo+ICsgKiAgIGFzIHBhZ2VzIG9mIHNp emUgWEVOX1BBR0VfU0laRSB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLgo+ICsgKgo+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4gKyAqICAgICAgIERlc2NyaXB0aW9uIG9mIHRoZSBwcm90b2NvbCBi ZXR3ZWVuIGZyb250ZW5kIGFuZCBiYWNrZW5kIGRyaXZlcgo+ICsgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCj4gKyAqCj4gKyAqIFRoZSB0d28gaGFsdmVzIG9mIGEgUGFyYS12aXJ0dWFsIGRpc3BsYXkg ZHJpdmVyIGNvbW11bmljYXRlIHdpdGgKPiArICogZWFjaCBvdGhlciB1c2luZyBzaGFyZWQgcGFn ZXMgYW5kIGV2ZW50IGNoYW5uZWxzLgo+ICsgKiBTaGFyZWQgcGFnZSBjb250YWlucyBhIHJpbmcg d2l0aCByZXF1ZXN0L3Jlc3BvbnNlIHBhY2tldHMuCj4gKyAqCj4gKyAqIEFsbCByZXNlcnZlZCBm aWVsZHMgaW4gdGhlIHN0cnVjdHVyZXMgYmVsb3cgbXVzdCBiZSAwLgo+ICsgKiBEaXNwbGF5IGJ1 ZmZlcnMncyBjb29raWUgb2YgdmFsdWUgMCB0cmVhdGVkIGFzIGludmFsaWQuCj4gKyAqIEZyYW1l YnVmZmVyJ3MgY29va2llIG9mIHZhbHVlIDAgdHJlYXRlZCBhcyBpbnZhbGlkLgo+ICsgKgo+ICsg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVxdWVzdHMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIEFsbCByZXF1ZXN0cy9yZXNwb25zZXMs IHdoaWNoIGFyZSBub3QgY29ubmVjdG9yIHNwZWNpZmljLCBtdXN0IGJlIHNlbnQgb3Zlcgo+ICsg KiBjb250cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3RvciB3aXRoIGluZGV4IDAuCj4gKyAqCj4gKyAq IEZvciBhbGwgcmVxdWVzdC9yZXNwb25zZS9ldmVudCBwYWNrZXRzIHRoYXQgdXNlIGNvb2tpZXM6 Cj4gKyAqICAgZGJ1Zl9jb29raWUgLSB1aW50NjRfdCwgdW5pcXVlIHRvIGd1ZXN0IGRvbWFpbiB2 YWx1ZSB1c2VkIGJ5IHRoZSBiYWNrZW5kCj4gKyAqICAgICB0byBtYXAgcmVtb3RlIGRpc3BsYXkg YnVmZmVyIHRvIGl0cyBsb2NhbCBvbmUKPiArICogICBmYl9jb29raWUgLSB1aW50NjRfdCwgdW5p cXVlIHRvIGd1ZXN0IGRvbWFpbiB2YWx1ZSB1c2VkIGJ5IHRoZSBiYWNrZW5kCj4gKyAqICAgICB0 byBtYXAgcmVtb3RlIGZyYW1lYnVmZmVyIHRvIGl0cyBsb2NhbCBvbmUKPiArICoKPiArICogQWxs IHJlcXVlc3QgcGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoNjQgb2N0ZXRzKQo+ICsgKiBB bGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKPiArICogICAgICAgICAwICAg ICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBv Y3RldAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAg ICAgICAgIHwgICAgb3BlcmF0aW9uICAgfCAgIHJlc2VydmVkICAgICB8IDQKPiArICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAgIGlk IC0gdWludDE2X3QsIHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9lZCBpbiByZXNwb25zZQo+ICsg KiAgIG9wZXJhdGlvbiAtIHVpbnQ4X3QsIG9wZXJhdGlvbiBjb2RlLCBYRU5ESVNQTF9PUF8/Pz8K PiArICoKPiArICogUmVxdWVzdCBkYnVmIGNyZWF0aW9uIC0gcmVxdWVzdCBjcmVhdGlvbiBvZiBh IGRpc3BsYXkgYnVmZmVyLgo+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAg ICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+ICsgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfF9PUF9EQlVGX0NSRUFU RSB8ICAgcmVzZXJ2ZWQgICAgIHwgNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDgKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRi dWZfY29va2llIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+ICsgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgaGlnaCAz Mi1iaXQgICAgICAgICAgICAgICAgICAgICB8IDE2Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMjAKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAo+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4Cj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3ogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMzIKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAzNgo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdyZWZfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwCj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAq IHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cj4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+ICsgKgo+ICsgKiBNdXN0IGJlIHNlbnQgb3ZlciBjb250cm9sIHJp bmcgb2YgdGhlIGNvbm5lY3RvciB3aXRoIGluZGV4IDAuCj4gKyAqCj4gKyAqIHdpZHRoIC0gdWlu dDMyX3QsIHdpZHRoIGluIHBpeGVscwo+ICsgKiBoZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0IGlu IHBpeGVscwoKV2h5PyBJc24ndCB0aGF0IGluIHRoZSAncmVzb2x1dGlvbicgWGVuQnVzIGVudHJ5 PwoKSWYgbm90LCB3aHkgZXZlbiBoYXZlIHRoZSAncmVzb2x1dGlvbicgZmllbGQ/CgpBbmQgYWxz byAtIHdoYXQgaWYgdGhlIHdpZHRoIG9yIGhlaWdodCBhcmUgYmlnZ2VyIHRoYW4gJ3Jlc29sdXRp b24nPwpTaG91bGQgLUVJTlZBTCBiZSByZXR1cm5lZD8KCj4gKyAqIGJwcCAtIHVpbnQzMl90LCBi aXRzIHBlciBwaXhlbAo+ICsgKiBidWZmZXJfc3ogLSB1aW50MzJfdCwgYnVmZmVyIHNpemUgdG8g YmUgYWxsb2NhdGVkLCBvY3RldHMKPiArICogZmxhZ3MgLSB1aW50MzJfdCwgZmxhZ3Mgb2YgdGhl IG9wZXJhdGlvbgo+ICsgKiAgIG8gWEVORElTUExfREJVRl9GTEdfUkVRX0FMTE9DIC0gaWYgc2V0 LCB0aGVuIGJhY2tlbmQgaXMgcmVxdWVzdGVkCj4gKyAqICAgICB0byBhbGxvY2F0ZSB0aGUgYnVm ZmVyIHdpdGggdGhlIHBhcmFtZXRlcnMgcHJvdmlkZWQgaW4gdGhpcyByZXF1ZXN0Lgo+ICsgKiAg ICAgUGFnZSBkaXJlY3RvcnkgaXMgaGFuZGxlZCBhcyBmb2xsb3dzOgo+ICsgKiAgICAgICBGcm9u dGVuZCBvbiByZXF1ZXN0Ogo+ICsgKiAgICAgICAgIG8gYWxsb2NhdGVzIHBhZ2VzIGZvciB0aGUg ZGlyZWN0b3J5Cj4gKyAqICAgICAgICAgbyBncmFudHMgcGVybWlzc2lvbnMgZm9yIHRoZSBwYWdl cyBvZiB0aGUgZGlyZWN0b3J5Cj4gKyAqICAgICAgICAgbyBzZXRzIGdyZWZfZGlyX25leHRfcGFn ZSBmaWVsZHMKPiArICogICAgICAgQmFja2VuZCBvbiByZXNwb25zZToKPiArICogICAgICAgICBv IGdyYW50cyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBhZ2VzIG9mIHRoZSBidWZmZXIgYWxsb2NhdGVk Cgo8c2NyYXRjaGVzIGhpcyBoZWFkPgo+ICsgKiAgICAgICAgIG8gZmlsbHMgaW4gcGFnZSBkaXJl Y3Rvcnkgd2l0aCBncmFudCByZWZlcmVuY2VzCgpUaGUgYmFja2VuZCBwcm92aWRlcyB0aGUgcGFn ZXMgaW5zdGVhZCBvZiB0aGUgZnJvbnRlbmQ/IEJ1dCB5b3Ugc2FpZAonYWxsb2NhdGVkIHBhZ2Vz IGZvciB0aGUgZGlyZWN0b3J5JyBpbiB0aGUgZnJvbnRuZWQgcGFydCAtIGFuZCBzaW5jZSB5b3UK c2F5ICdwYWdlcycgdGhhdCBtZWFucyBtb3JlIHRoYW4gb25lPyBPciBkaWQgeW91IG1lYW4gJ3Ro ZSBncmVmX2RpcmVjdG9yeScKcGFnZSBhbmQgdGhlICdncmVmX2Rpcl9uZXh0X3BhZ2UnIHBhZ2Vz PyBZb3UgbWF5IHdhbnQgdG8gYmUgZXhwbGljaXQuCgoKQW5kIHdoYXQgaWYgdGhlICdmbGFncycg aXMgemVybz8gT3IgMHgzMTQ/IFBlcmhhcHMgYWxzbyBtZW50aW9uCnRoZSBkZWZhdWx0IG9uZSAo MCBJIHByZXN1bWUpIHdoaWNoIHdvdWxkIG1ha2UgdGhlIGJhY2tlbmQgbWFwCnRoZSBmcm9udGVu ZCBwYWdlcyBwcm92aWRlZCBpbiAnZ3JlZl9kaXJlY3RvcnknPwoKPiArICogZ3JlZl9kaXJlY3Rv cnkgLSBncmFudF9yZWZfdCwgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IHNoYXJlZCBwYWdlCj4g KyAqICAgZGVzY3JpYmluZyBzaGFyZWQgYnVmZmVyIHJlZmVyZW5jZXMuIEF0IGxlYXN0IG9uZSBw YWdlIGV4aXN0cy4gSWYgc2hhcmVkCj4gKyAqICAgYnVmZmVyIHNpemUgIChidWZmZXJfc3opIGV4 Y2VlZHMgd2hhdCBjYW4gYmUgYWRkcmVzc2VkIGJ5IHRoaXMgc2luZ2xlIHBhZ2UsCgogICAgICAg ICAgICAgICAgICAgXi0gZXh0cmEgc3BhY2UKPiArICogICB0aGVuIHJlZmVyZW5jZSB0byB0aGUg bmV4dCBwYWdlIG11c3QgYmUgc3VwcGxpZWQgKHNlZSBncmVmX2Rpcl9uZXh0X3BhZ2UKPiArICog ICBiZWxvdykKPiArICovCgoKV2hhdCBhcmUgc29tZSBvZiB0aGUgcmV0dXJuIGVycm9ycyA/IFdv dWxkIGl0IG1ha2Ugc2Vuc2UgdG8gbWVudGlvbgpzb21lPwoKV2hhdCB0byBmb3IgZXhhbXBsZSBp ZiB0aGVyZSBhcmUgbXVsdGlwbGUgIF9PUF9EQlVGX0NSRUFURSAKd2l0aCB0aGUgc2FtZSBkYnVm X2Nvb2tpZSBidXQgd2l0aCBkaWZmZXJlbnQgd2lkdGgvaGVpZ2h0PwoKPiArCj4gKyNkZWZpbmUg WEVORElTUExfREJVRl9GTEdfUkVRX0FMTE9DICAgICAgIDB4MDAwMQo+ICsKPiArc3RydWN0IHhl bmRpc3BsX2RidWZfY3JlYXRlX3JlcSB7Cj4gKyAgICB1aW50NjRfdCBkYnVmX2Nvb2tpZTsKPiAr ICAgIHVpbnQzMl90IHdpZHRoOwo+ICsgICAgdWludDMyX3QgaGVpZ2h0Owo+ICsgICAgdWludDMy X3QgYnBwOwo+ICsgICAgdWludDMyX3QgYnVmZmVyX3N6Owo+ICsgICAgdWludDMyX3QgZmxhZ3M7 Cj4gKyAgICBncmFudF9yZWZfdCBncmVmX2RpcmVjdG9yeTsKPiArfTsKPiArCj4gKy8qCj4gKyAq IFNoYXJlZCBwYWdlIGZvciBYRU5ESVNQTF9PUF9EQlVGX0NSRUFURSBidWZmZXIgZGVzY3JpcHRv ciAoZ3JlZl9kaXJlY3RvcnkgaW4KPiArICogdGhlIHJlcXVlc3QpIGVtcGxveXMgYSBsaXN0IG9m IHBhZ2VzLCBkZXNjcmliaW5nIGFsbCBwYWdlcyBvZiB0aGUgc2hhcmVkCj4gKyAqIGRhdGEgYnVm ZmVyOgo+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAg ICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJfbmV4dF9wYWdlICAgICAgICAgICAgICAgICAg ICAgICAgIHwgNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdyZWZbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPiArICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbaV0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGkqNCs4Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8L1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wK PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdy ZWZbTiAtIDFdICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOKjQrOAo+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPiArICoKPiArICogZ3JlZl9kaXJfbmV4dF9wYWdlIC0gZ3JhbnRfcmVmX3QsIHJlZmVy ZW5jZSB0byB0aGUgbmV4dCBwYWdlIGRlc2NyaWJpbmcKPiArICogICBwYWdlIGRpcmVjdG9yeS4g TXVzdCBiZSAwIGlmIHRoZXJlIGFyZSBubyBtb3JlIHBhZ2VzIGluIHRoZSBsaXN0Lgo+ICsgKiBn cmVmW2ldIC0gZ3JhbnRfcmVmX3QsIHJlZmVyZW5jZSB0byBhIHNoYXJlZCBwYWdlIG9mIHRoZSBi dWZmZXIKPiArICogICBhbGxvY2F0ZWQgYXQgWEVORElTUExfT1BfREJVRl9DUkVBVEUKPiArICoK PiArICogTnVtYmVyIG9mIGdyYW50X3JlZl90IGVudHJpZXMgaW4gdGhlIHdob2xlIHBhZ2UgZGly ZWN0b3J5IGlzIG5vdAo+ICsgKiBwYXNzZWQsIGJ1dCBpbnN0ZWFkIGNhbiBiZSBjYWxjdWxhdGVk IGFzOgo+ICsgKiAgIG51bV9ncmVmc190b3RhbCA9IChYRU5ESVNQTF9PUF9EQlVGX0NSRUFURS5i dWZmZXJfc3ogKyBYRU5fUEFHRV9TSVpFIC0gMSkgLwo+ICsgKiAgICAgICBYRU5fUEFHRV9TSVpF Cj4gKyAqLwo+ICsKPiArc3RydWN0IHhlbmRpc3BsX3BhZ2VfZGlyZWN0b3J5IHsKPiArICAgIGdy YW50X3JlZl90IGdyZWZfZGlyX25leHRfcGFnZTsKPiArICAgIGdyYW50X3JlZl90IGdyZWZbMV07 IC8qIFZhcmlhYmxlIGxlbmd0aCAqLwo+ICt9Owo+ICsKPiArLyoKPiArICogUmVxdWVzdCBkYnVm IGRlc3RydWN0aW9uIC0gZGVzdHJveSBhIHByZXZpb3VzbHkgYWxsb2NhdGVkIGRpc3BsYXkgYnVm ZmVyOgo+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAg ICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAg ICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfF9PUF9EQlVGX0RFU1RST1l8ICAgcmVzZXJ2 ZWQgICAgIHwgNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPiArICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRidWZfY29va2llIGxv dyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAg ICAgICAgICAgICAgICB8IDE2Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MjAKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDY0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKgo+ICsgKiBN dXN0IGJlIHNlbnQgb3ZlciBjb250cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3RvciB3aXRoIGluZGV4 IDAuCj4gKyAqLwo+ICsKPiArc3RydWN0IHhlbmRpc3BsX2RidWZfZGVzdHJveV9yZXEgewo+ICsg ICAgdWludDY0X3QgZGJ1Zl9jb29raWU7Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBSZXF1ZXN0IGZy YW1lYnVmZmVyIGF0dGFjaG1lbnQgLSByZXF1ZXN0IGF0dGFjaG1lbnQgb2YgYSBmcmFtZWJ1ZmZl ciB0bwo+ICsgKiBwcmV2aW91c2x5IGNyZWF0ZWQgZGlzcGxheSBidWZmZXIuCj4gKyAqICAgICAg ICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICBpZCAg ICAgICAgICAgICAgICB8IF9PUF9GQl9BVFRBQ0ggIHwgICByZXNlcnZlZCAgICAgfCA0Cj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZl ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAo+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgbG93IDMyLWJpdCAgICAgICAg ICAgICAgICAgICAgICB8IDEyCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAg ICAgICAgICAgICBkYnVmX2Nvb2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAgICAgICAgICAgIHwg MTYKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9j b29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgfCAyMAo+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdoIDMyLWJp dCAgICAgICAgICAgICAgICAgICAgICB8IDI0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMjgKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMgo+ICsg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF9m b3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2Cj4gKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgNDAKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv fAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+ICsgKgo+ICsgKiBNdXN0IGJlIHNlbnQgb3ZlciBjb250cm9sIHJpbmcgb2YgdGhlIGNv bm5lY3RvciB3aXRoIGluZGV4IDAuCj4gKyAqCj4gKyAqIHdpZHRoIC0gdWludDMyX3QsIHdpZHRo IGluIHBpeGVscwo+ICsgKiBoZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0IGluIHBpeGVscwoKV2h5 PyBUaGUgX09QX0RCVUZfQ1JFQVRFIGFscmVhZHkgc3BlY2lmaWVkIHRoZSBoZWlnaHQvd2lkdGgu IFdoeSBoYXZlIHRoaXM/CgpPciBhcmUgeW91IHRoaW5raW5nIHRvIGhhdmUgYW4gc21hbGxlciAo b3IgYmlnZ2VyPykgcmVzb2x1dGlvbiBmcmFtZWJ1ZmZlcgp0aGFuIHRoZSBkaXNwbGF5PyBJIHN1 cHBvc2UgeW91IGNhbiBkbyB0aGF0IHdoaWNoIHdvdWxkIGltcGx5IHRoYXQgdGhlIGRpc3BsYXkK d291bGQgc3dpdGNoIG1vZGVzPyBQZXJoYXBzIG1lbnRpb24gdGhpcz8KCkFsc28gd2hhdCBpZiB0 aGVzZSB2YWx1ZXMgYXJlIGJpZ2dlciAob3IgbGVzc2VyKSB0aGFuICdyZXNvbHV0aW9uJyA/CgoK PiArICogcGl4ZWxfZm9ybWF0IC0gdWludDMyX3QsIHBpeGVsIGZvcm1hdCBvZiB0aGUgZnJhbWVi dWZmZXIsIEZPVVJDQyBjb2RlCgpZb3UgZGlkIG5vdCBtZW50aW9uIHRoZSBmYl9jb29raWU/Cgo+ ICsgKi8KPiArCj4gK3N0cnVjdCB4ZW5kaXNwbF9mYl9hdHRhY2hfcmVxIHsKPiArICAgIHVpbnQ2 NF90IGRidWZfY29va2llOwo+ICsgICAgdWludDY0X3QgZmJfY29va2llOwo+ICsgICAgdWludDMy X3Qgd2lkdGg7Cj4gKyAgICB1aW50MzJfdCBoZWlnaHQ7Cj4gKyAgICB1aW50MzJfdCBwaXhlbF9m b3JtYXQ7Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBSZXF1ZXN0IGZyYW1lYnVmZmVyIGRldGFjaCAt IGRldGFjaCBhIHByZXZpb3VzbHkKPiArICogYXR0YWNoZWQgZnJhbWVidWZmZXIgZnJvbSB0aGUg ZGlzcGxheSBidWZmZXIgaW4gcmVxdWVzdDoKPiArICogICAgICAgICAwICAgICAgICAgICAgICAg IDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgIF9P UF9GQl9ERVRBQ0ggfCAgIHJlc2VydmVkICAgICB8IDQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCA4Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgZmJfY29va2llIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgIHwgMTIK PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9jb29r aWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAxNgo+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIwCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8L1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL3wKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAo+ICsgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKPiArICoKPiArICogTXVzdCBiZSBzZW50IG92ZXIgY29udHJvbCByaW5nIG9mIHRo ZSBjb25uZWN0b3Igd2l0aCBpbmRleCAwLgo+ICsgKi8KPiArCj4gK3N0cnVjdCB4ZW5kaXNwbF9m Yl9kZXRhY2hfcmVxIHsKPiArICAgIHVpbnQ2NF90IGZiX2Nvb2tpZTsKPiArfTsKPiArCj4gKy8q Cj4gKyAqIFJlcXVlc3QgY29uZmlndXJhdGlvbiBzZXQvcmVzZXQgLSByZXF1ZXN0IHRvIHNldCBv ciByZXNldAo+ICsgKiB0aGUgY29uZmlndXJhdGlvbi9tb2RlIG9mIHRoZSBkaXNwbGF5Ogo+ICsg KiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAg ICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAg ICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfU0VUX0NPTkZJRyB8ICAgcmVzZXJ2ZWQgICAgIHwg NAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgbG93IDMyLWJpdCAg ICAgICAgICAgICAgICAgICAgICAgfCAxMgo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAgICAgICAg ICAgICB8IDE2Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPiArICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI4Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhlaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MzIKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MAo+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDQ0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8L1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL3wKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAo+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPiArICoKPiArICogUGFzcyBhbGwgemVyb3MgdG8gcmVzZXQsIG90aGVyd2lz ZSBjb21tYW5kIGlzIHRyZWF0ZWQgYXMKPiArICogY29uZmlndXJhdGlvbiBzZXQuCgpBbGwgemVy b3M/IEluY2x1ZGluZyBmYl9jb29raWU/Cgo+ICsgKiBJZiB0aGlzIGlzIGEgc2V0IGNvbmZpZ3Vy YXRpb24gcmVxdWVzdCB0aGVuIGZyYW1lYnVmZmVyJ3MgY29va2llIHRlbGxzCgpOb3Qgc3VyZSBp ZiB0aGUgZmlyc3QgcGFydCBvZiB0aGUgc2VudGVuY2UgaXMgbmVlZGVkLiBUaGlzIGlzIGFmdGVy IGFsbAp0aGUgc2VjdGlvbiB0aGF0IHRhbGtzIGFib3V0IHNldHRpbmcgY29uZmlndXJhdGlvbnMu Cgo+ICsgKiB0aGUgZGlzcGxheSB3aGljaCBmcmFtZWJ1ZmZlci9kYnVmIG11c3QgYmUgZGlzcGxh eWVkIHdoaWxlIGVuYWJsaW5nIGRpc3BsYXkKPiArICogKGFwcGx5aW5nIGNvbmZpZ3VyYXRpb24p LgoKQ2FuIHlvdSBkaXNhYmxlIGFuIGRpc3BsYXkgd2l0aG91dCBjaGFuZ2luZyB0aGlzPwo+ICsg Kgo+ICsgKiB4IC0gdWludDMyX3QsIHN0YXJ0aW5nIHBvc2l0aW9uIGluIHBpeGVscyBieSBYIGF4 aXMKPiArICogeSAtIHVpbnQzMl90LCBzdGFydGluZyBwb3NpdGlvbiBpbiBwaXhlbHMgYnkgWSBh eGlzCgpXaGljaCBpcyBib3VuZCBieSAncmVzb2x1dGlvbicgPyBPciBieSB0aGUgZGlzcGxheSBj b21tYW5kPwoKPiArICogd2lkdGggLSB1aW50MzJfdCwgd2lkdGggaW4gcGl4ZWxzCj4gKyAqIGhl aWdodCAtIHVpbnQzMl90LCBoZWlnaHQgaW4gcGl4ZWxzCj4gKyAqIGJwcCAtIHVpbnQzMl90LCBi aXRzIHBlciBwaXhlbAoKU2hvdWxkbid0IHRoZXJlIGJlIGFuIHN0cmlkZSBhcyB3ZWxsPwoKPiAr ICovCj4gKwo+ICtzdHJ1Y3QgeGVuZGlzcGxfc2V0X2NvbmZpZ19yZXEgewo+ICsgICAgdWludDY0 X3QgZmJfY29va2llOwo+ICsgICAgdWludDMyX3QgeDsKPiArICAgIHVpbnQzMl90IHk7Cj4gKyAg ICB1aW50MzJfdCB3aWR0aDsKPiArICAgIHVpbnQzMl90IGhlaWdodDsKPiArICAgIHVpbnQzMl90 IGJwcDsKPiArfTsKPiArCj4gKy8qCj4gKyAqIFJlcXVlc3QgcGFnZSBmbGlwIC0gcmVxdWVzdCB0 byBmbGlwIGEgcGFnZSBpZGVudGlmaWVkIGJ5IHRoZSBmcmFtZWJ1ZmZlcgo+ICsgKiBjb29raWU6 Cj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAg ICAgICAgICAgMyAgICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAg ICAgICAgICBpZCAgICAgICAgICAgICAgICB8IF9PUF9QR19GTElQICAgIHwgICByZXNlcnZlZCAg ICAgfCA0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAo+ICsgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBsb3cgMzIt Yml0ICAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAg ICAgICAgICAgIHwgMTYKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAo+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgNjQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqLwo+ICsKPiArc3Ry dWN0IHhlbmRpc3BsX3BhZ2VfZmxpcF9yZXEgewo+ICsgICAgdWludDY0X3QgZmJfY29va2llOwo+ ICt9Owo+ICsKPiArLyoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJl c3BvbnNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsgKiBBbGwg cmVzcG9uc2UgcGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoNjQgb2N0ZXRzKQo+ICsgKgo+ ICsgKiBBbGwgcmVzcG9uc2UgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6Cj4gKyAqICAgICAg ICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICBpZCAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgfCA0Cj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAo+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDEyCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8L1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wK PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAo+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPiArICoKPiArICogaWQgLSB1aW50MTZfdCwgcHJpdmF0ZSBndWVzdCB2YWx1ZSwgZWNob2Vk IGZyb20gcmVxdWVzdAo+ICsgKiBzdGF0dXMgLSBpbnQzMl90LCByZXNwb25zZSBzdGF0dXMsIHpl cm8gb24gc3VjY2VzcyBhbmQgLVhFTl9FWFggb24gZmFpbHVyZQo+ICsgKgo+ICsgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIEV2ZW50cyBhcmUgc2VudCB2aWEgYSBzaGFyZWQgcGFn ZSBhbGxvY2F0ZWQgYnkgdGhlIGZyb250IGFuZCBwcm9wYWdhdGVkIGJ5Cj4gKyAqICAgZXZlbnQt Y2hhbm5lbC9ldmVudC1yaW5nLXJlZiBYZW5TdG9yZSBlbnRyaWVzCj4gKyAqIEFsbCBldmVudCBw YWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICg2NCBvY3RldHMpCj4gKyAqIEFsbCBldmVudCBw YWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKPiArICogICAgICAgICAwICAgICAgICAgICAgICAg IDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAg ICB0eXBlICAgICAgfCAgIHJlc2VydmVkICAgICB8IDQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCA4Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKgo+ICsgKiBpZCAtIHVpbnQx Nl90LCBldmVudCBpZCwgbWF5IGJlIHVzZWQgYnkgZnJvbnQKPiArICogdHlwZSAtIHVpbnQ4X3Qs IHR5cGUgb2YgdGhlIGV2ZW50Cj4gKyAqCj4gKyAqCj4gKyAqIFBhZ2UgZmxpcCBjb21wbGV0ZSBl dmVudCAtIGV2ZW50IGZyb20gYmFjayB0byBmcm9udCBvbiBwYWdlIGZsaXAgY29tcGxldGVkOgo+ ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAg ICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAg ICAgICAgaWQgICAgICAgICAgICAgICAgfCAgIF9FVlRfUEdfRkxJUCB8ICAgcmVzZXJ2ZWQgICAg IHwgNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPiArICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgbG93IDMyLWJp dCAgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAg ICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAgICAg ICAgICAgICB8IDE2Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPiAr ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDY0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKi8KPiArCj4gK3N0cnVj dCB4ZW5kaXNwbF9wZ19mbGlwX2V2dCB7Cj4gKyAgICB1aW50NjRfdCBmYl9jb29raWU7Cj4gK307 Cj4gKwo+ICtzdHJ1Y3QgeGVuZGlzcGxfcmVxIHsKPiArICAgIHVpbnQxNl90IGlkOwo+ICsgICAg dWludDhfdCBvcGVyYXRpb247Cj4gKyAgICB1aW50OF90IHJlc2VydmVkWzVdOwo+ICsgICAgdW5p b24gewo+ICsgICAgICAgIHN0cnVjdCB4ZW5kaXNwbF9kYnVmX2NyZWF0ZV9yZXEgZGJ1Zl9jcmVh dGU7Cj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX2RidWZfZGVzdHJveV9yZXEgZGJ1Zl9kZXN0 cm95Owo+ICsgICAgICAgIHN0cnVjdCB4ZW5kaXNwbF9mYl9hdHRhY2hfcmVxIGZiX2F0dGFjaDsK PiArICAgICAgICBzdHJ1Y3QgeGVuZGlzcGxfZmJfZGV0YWNoX3JlcSBmYl9kZXRhY2g7Cj4gKyAg ICAgICAgc3RydWN0IHhlbmRpc3BsX3NldF9jb25maWdfcmVxIHNldF9jb25maWc7Cj4gKyAgICAg ICAgc3RydWN0IHhlbmRpc3BsX3BhZ2VfZmxpcF9yZXEgcGdfZmxpcDsKPiArICAgICAgICB1aW50 OF90IHJlc2VydmVkWzU2XTsKPiArICAgIH0gb3A7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgeGVuZGlz cGxfcmVzcCB7Cj4gKyAgICB1aW50MTZfdCBpZDsKPiArICAgIHVpbnQ4X3Qgb3BlcmF0aW9uOwo+ ICsgICAgdWludDhfdCByZXNlcnZlZDsKPiArICAgIGludDMyX3Qgc3RhdHVzOwo+ICsgICAgdWlu dDhfdCByZXNlcnZlZDFbNTZdOwo+ICt9Owo+ICsKPiArc3RydWN0IHhlbmRpc3BsX2V2dCB7Cj4g KyAgICB1aW50MTZfdCBpZDsKPiArICAgIHVpbnQ4X3QgdHlwZTsKPiArICAgIHVpbnQ4X3QgcmVz ZXJ2ZWRbNV07Cj4gKyAgICB1bmlvbiB7Cj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX3BnX2Zs aXBfZXZ0IHBnX2ZsaXA7Cj4gKyAgICAgICAgdWludDhfdCByZXNlcnZlZFs1Nl07Cj4gKyAgICB9 IG9wOwo+ICt9Owo+ICsKPiArREVGSU5FX1JJTkdfVFlQRVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4 ZW5kaXNwbF9yZXEsIHN0cnVjdCB4ZW5kaXNwbF9yZXNwKTsKPiArCj4gKy8qCj4gKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPiArICogICAgICAgICAgICAgICAgICAgICAgICBCYWNrIHRvIGZyb250 IGV2ZW50cyBkZWxpdmVyeQo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIEluIG9yZGVy IHRvIGRlbGl2ZXIgYXN5bmNocm9ub3VzIGV2ZW50cyBmcm9tIGJhY2sgdG8gZnJvbnQgYSBzaGFy ZWQgcGFnZSBpcwo+ICsgKiBhbGxvY2F0ZWQgYnkgZnJvbnQgYW5kIGl0cyBncmVmcyBwcm9wYWdh dGVkIHRvIGJhY2sgdmlhIFhlblN0b3JlIGVudHJpZXMKPiArICogKGV2ZW50LVhYWCkuCgo/CgpZ b3UgbWVhbiBldmVudC1jaGFubmVsID8gT3IgY29udHJvbC1ldmVudC1jaGFubmVsPwoKPiArICog VGhpcyBwYWdlIGhhcyBhIGNvbW1vbiBoZWFkZXIgdXNlZCBieSBib3RoIGZyb250IGFuZCBiYWNr IHRvIHN5bmNocm9uaXplCj4gKyAqIGFjY2VzcyBhbmQgY29udHJvbCBldmVudCdzIHJpbmcgYnVm ZmVyLCB3aGlsZSBiYWNrIGJlaW5nIGEgcHJvZHVjZXIgb2YgdGhlCj4gKyAqIGV2ZW50cyBhbmQg ZnJvbnQgYmVpbmcgYSBjb25zdW1lci4gVGhlIHJlc3Qgb2YgdGhlIHBhZ2UgYWZ0ZXIgdGhlIGhl YWRlcgo+ICsgKiBpcyB1c2VkIGZvciBldmVudCBwYWNrZXRzLgo+ICsgKgo+ICsgKiBVcG9uIHJl Y2VwdGlvbiBvZiBhbiBldmVudChzKSBmcm9udCBtYXkgY29uZmlybSBpdHMgcmVjZXB0aW9uCj4g KyAqIGZvciBlaXRoZXIgZWFjaCBldmVudCwgZ3JvdXAgb2YgZXZlbnRzIG9yIG5vbmUuCj4gKyAq Lwo+ICsKPiArc3RydWN0IHhlbmRpc3BsX2V2ZW50X3BhZ2Ugewo+ICsgICAgdWludDMyX3QgaW5f Y29uczsKPiArICAgIHVpbnQzMl90IGluX3Byb2Q7Cj4gKyAgICB1aW50OF90IHJlc2VydmVkWzU2 XTsKPiArfTsKPiArCj4gKyNkZWZpbmUgWEVORElTUExfRVZFTlRfUEFHRV9TSVpFIDQwOTYKPiAr I2RlZmluZSBYRU5ESVNQTF9JTl9SSU5HX09GRlMgKHNpemVvZihzdHJ1Y3QgeGVuZGlzcGxfZXZl bnRfcGFnZSkpCj4gKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19TSVpFIChYRU5ESVNQTF9FVkVO VF9QQUdFX1NJWkUgLSBYRU5ESVNQTF9JTl9SSU5HX09GRlMpCj4gKyNkZWZpbmUgWEVORElTUExf SU5fUklOR19MRU4gKFhFTkRJU1BMX0lOX1JJTkdfU0laRSAvIHNpemVvZihzdHJ1Y3QgeGVuZGlz cGxfZXZ0KSkKPiArI2RlZmluZSBYRU5ESVNQTF9JTl9SSU5HKHBhZ2UpIFwKPiArCSgoc3RydWN0 IHhlbmRpc3BsX2V2dCAqKSgoY2hhciAqKShwYWdlKSArIFhFTkRJU1BMX0lOX1JJTkdfT0ZGUykp Cj4gKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19SRUYocGFnZSwgaWR4KSBcCj4gKwkoWEVORElT UExfSU5fUklORygocGFnZSkpWyhpZHgpICUgWEVORElTUExfSU5fUklOR19MRU5dKQoKV2h5IG5v dCB1c2UgdGhlIHJpbmcuaCBtYWNyb3M/CgpFc3BlY2lhbGx5IGFzIHRoZSB0b3Agb2YgdGhpcyB0 YWxrcyBhYm91dCAiUklOR19GSU5BTF9DSEVDS19GT1JfUkVRVUVTVFMiPwoKPiArCj4gKyNlbmRp ZiAvKiBfX1hFTl9QVUJMSUNfSU9fRElTUExJRl9IX18gKi8KCkNvdWxkIHdlIGFsc28gaGF2ZSB0 aGlzIGhlYWRlciBpbjoKCgovKgogKiBMb2NhbCB2YXJpYWJsZXM6CiAqIG1vZGU6IEMKICogYy1m aWxlLXN0eWxlOiAiQlNEIgogKiBjLWJhc2ljLW9mZnNldDogNAogKiB0YWItd2lkdGg6IDQKICog aW5kZW50LXRhYnMtbW9kZTogbmlsCiAqIEVuZDoKICovCgpwbGVhc2U/Cj4gLS0gCj4gMi43LjQK PiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=