From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oscar Mateo Lozano Subject: Re: [RFC PATCH] drm/i915/guc: New interface files for GuC starting in Gen11 Date: Wed, 13 Jun 2018 15:08:07 -0700 Message-ID: <61120134-ce9a-4e1c-ea05-fba847e02251@intel.com> References: <1527285575-19898-1-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id D01B86E17B for ; Wed, 13 Jun 2018 22:08:09 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michal Wajdeczko , intel-gfx@lists.freedesktop.org Cc: Jalpa Patel , Kevin Rogovin , Sujaritha Sundaresan List-Id: intel-gfx@lists.freedesktop.org CgpPbiA1LzI5LzIwMTggNzo1OSBBTSwgTWljaGFsIFdhamRlY3prbyB3cm90ZToKPiBIaSwKPgo+ IE9uIEZyaSwgMjUgTWF5IDIwMTggMjM6NTk6MzUgKzAyMDAsIE9zY2FyIE1hdGVvIDxvc2Nhci5t YXRlb0BpbnRlbC5jb20+Cj4gd3JvdGU6Cj4KPj4gR3VDIGludGVyZmFjZSBoYXMgYmVlbiByZWRl c2lnbmVkIChvciBjbGVhbmVkIHVwLCByYXRoZXIpIHN0YXJ0aW5nCj4+IHdpdGggR2VuMTEsIGFz IGEgc3RlcHBpbmcgc3RvbmUgdG93YXJkcyBhIG5ldyBicmFuY2hpbmcgc3RyYXRlZ3kKPj4gdGhh dCBoZWxwcyBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIEdl bnMsIGFzCj4+IHdlbGwgYXMgc2lkZXdhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIE9TZXMu Cj4+Cj4+IFRoZSBpbnRlcmZhY2UgaXMgc3BsaXQgaW4gdHdvIGhlYWRlciBmaWxlczogb25lIGZv ciB0aGUgS01EIGFuZCBvbmUKPj4gZm9yIGNsaWVudHMgb2YgdGhlIEd1QyAod2hpY2gsIGluIG91 ciBjYXNlLCBoYXBwZW5zIHRvIGJlIHRoZSBLTUQKPj4gYXMgd2VsbCkuIFNMUEMgaW50ZXJmYWNl IGZpbGVzIHdpbGwgY29tZSBhdCBhIGxhdGVyIGRhdGUuCj4+Cj4+IENvdWxkIHdlIGdldCBleWVz IG9uIHRoZSBuZXcgaW50ZXJmYWNlIGhlYWRlciBmaWxlcywgdG8gbWFrZSBzdXJlIHRoZQo+PiBH dUMgdGVhbSBpcyBtb3ZpbmcgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbj8KPj4KPj4gU2lnbmVkLW9m Zi1ieTogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KPj4gQ2M6IEpvb25hcyBM YWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPj4gQ2M6IEtldmluIFJv Z292aW4gPGtldmluLnJvZ292aW5AaW50ZWwuY29tPgo+PiBDYzogSm9obiBBIFNwb3Rzd29vZCA8 am9obi5hLnNwb3Rzd29vZEBpbnRlbC5jb20+Cj4+IENjOiBBbnVzaGEgU3JpdmF0c2EgPGFudXNo YS5zcml2YXRzYUBpbnRlbC5jb20+Cj4+IENjOiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5p ZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+PiBDYzogTWljaGFsIFdhamRlY3prbyA8bWlj aGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4+IENjOiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRo aWVycnlAaW50ZWwuY29tPgo+PiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+Cj4+IENjOiBNaWNoYcWCIFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5j b20+Cj4+IENjOiBUb21hc3ogTGlzIDx0b21hc3oubGlzQGludGVsLmNvbT4KPj4gQ2M6IEpvbiBF d2lucyA8am9uLmV3aW5zQGludGVsLmNvbT4KPj4gQ2M6IFN1amFyaXRoYSBTdW5kYXJlc2FuIDxz dWphcml0aGEuc3VuZGFyZXNhbkBpbnRlbC5jb20+Cj4+IENjOiBKYWxwYSBQYXRlbCA8amFscGEu cGF0ZWxAaW50ZWwuY29tPgo+PiBDYzogSmFja2llIExpIDx5YW9kb25nLmxpQGludGVsLmNvbT4K Pj4gLS0tCj4+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2NsaWVudF9pbnRlcmZh Y2UuaCB8IDI1NSArKysrKysrCj4+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2tt ZF9pbnRlcmZhY2UuaMKgwqDCoCB8IDg0NyAKPj4gKysrKysrKysrKysrKysrKysrKysrKwo+PiDC oDIgZmlsZXMgY2hhbmdlZCwgMTEwMiBpbnNlcnRpb25zKCspCj4+IMKgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19jbGllbnRfaW50ZXJmYWNlLmgKPj4g wqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2ttZF9p bnRlcmZhY2UuaAo+Cj4gY2FuIHdlIG5hbWUgdGhlc2UgZmlsZXMgYXM6Cj4KPiDCoMKgwqDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19pbnRlcmZhY2UuaAo+IMKgwqDCoMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2ludGVyZmFjZV9jbGllbnQuaAo+IG9yCj4gwqDCoMKg wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZGVmcy5oCj4gwqDCoMKgwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZGVmc19jbGllbnQuaAo+IG9yCj4gwqDCoMKgwqBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndWMvZ3VjLmgKPiDCoMKgwqDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d1Yy9ndWNfY2xpZW50LmgKCkknbSBmaW5lIHdpdGggYW55IG9mIHRoZXNlIG5hbWVzLgoKPgo+ Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2NsaWVudF9p bnRlcmZhY2UuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfY2xpZW50X2lu dGVyZmFjZS5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjFlZjkx YTcKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfY2xpZW50X2ludGVyZmFjZS5oCj4+IEBAIC0wLDAgKzEsMjU1IEBACj4+ICsvKgo+PiArICog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+PiArICoKPj4gKyAqIENvcHlyaWdodCDCqSAy MDE4IEludGVsIENvcnBvcmF0aW9uCj4+ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBfSU5URUxfR1VD X0NMSUVOVF9JTlRFUkZBQ0VfSF8KPj4gKyNkZWZpbmUgX0lOVEVMX0dVQ19DTElFTlRfSU5URVJG QUNFX0hfCj4+ICsKPgo+IG5lZWQgdG8gaW5jbHVkZSB0eXBlcy5oIGZvciB1MzIKCldpbGwgZG8u Cgo+Cj4+ICsjcHJhZ21hIHBhY2soMSkKPj4gKwo+PiArLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIAo+ Pgo+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRW5naW5lcyAKPj4gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+PiArIAo+PiAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KPgo+IG5vIGZhbmN5IG1hcmt1cHMsIHBsZWFzZQo+CgpPay4KCj4+ICsKPj4gKyNkZWZp bmUgR1VDX01BWF9FTkdJTkVfSU5TVEFOQ0VfUEVSX0NMQVNTwqDCoMKgIDQKPj4gKyNkZWZpbmUg R1VDX01BWF9TQ0hFRFVMQUJMRV9FTkdJTkVfQ0xBU1PCoMKgwqAgNQo+PiArI2RlZmluZSBHVUNf TUFYX0VOR0lORV9DTEFTU19DT1VOVMKgwqDCoMKgwqDCoMKgIDYKPj4gKyNkZWZpbmUgR1VDX0VO R0lORV9JTlZBTElEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA2Cj4KPiBobW0sIHdoeSBub3QgNyBv ciAxMjcgPwo+IG1heWJlIGlmIHdlIG5lZWQgdmFsdWUgZm9yIElOVkFMSUQgd2Ugc2hvdWxkIHVz ZSAwIG9yIC0xICh+MCkKCkknbGwgcGFzcyB0aGlzIGNvbW1lbnQgdG8gdGhlIEd1QyB0ZWFtLgoK Pgo+PiArCj4+ICsvKiBFbmdpbmUgQ2xhc3MgdGhhdCB1S2VybmVsIGNhbiBzY2hlZHVsZSBvbi4g VGhpcyBpcyBqdXN0IGEgU1cgCj4+IGVudW1lcmF0aW9uLgo+PiArICogSFcgY29uZmlndXJhdGlv biB3aWxsIGRlcGVuZCBvbiB0aGUgUGxhdGZvcm0gYW5kIFNLVQo+PiArICovCj4+ICtlbnVtIHVr X2VuZ2luZV9jbGFzcyB7Cj4KPiB3aHkgdGhlcmUgaXMgbmV3IHByZWZpeCAidWsiID8KCnVrIHN0 YW5kcyBmb3IgdUtlcm5lbC4gSW4gdGhpcyBjYXNlLCBJJ20gZ3Vlc3NpbmcgaXQgaXMgdXNlZCB0 byAKZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSBlbmdpbmUgY2xhc3MgZGVmaW5lZCBieSBoYXJk d2FyZSB2cy4gdGhlIG9uZSAKZGVmaW5lZCBieSB0aGUgdUtlcm5lbC4KPgo+PiArwqDCoMKgIFVL X1JFTkRFUl9FTkdJTkVfQ0xBU1MgPSAwLAo+PiArwqDCoMKgIFVLX1ZERUNFTkNfRU5HSU5FX0NM QVNTID0gMSwKPj4gK8KgwqDCoCBVS19WRV9FTkdJTkVfQ0xBU1MgPSAyLAo+PiArwqDCoMKgIFVL X0JMVF9DT1BZX0VOR0lORV9DTEFTUyA9IDMsCj4+ICvCoMKgwqAgVUtfUkVTRVJWRURfRU5HSU5F X0NMQVNTID0gNCwKPj4gK8KgwqDCoCBVS19PVEhFUl9FTkdJTkVfQ0xBU1MgPSA1LAo+Cj4gZWl0 aGVyIHVzZSB2YWxpZCBuYW1lcyBvciBkcm9wIFJFU0VSVkVEL09USEVSIGFzIHZhbHVlcwo+IMKg IGZyb20gMCB0byBHVUNfTUFYX0VOR0lORV9DTEFTU19DT1VOVCBhcmUgJ3Jlc2VydmVkJyBieQo+ IGRlZmluaXRpb24gdW5sZXNzIGV4cGxpY2l0bHkgZGVmaW5lZCA7KQoKSSdsbCBkcm9wIHRoZW0u Cgo+Cj4+ICt9Owo+Cj4gYXMgd2UgZG9uJ3QgdXNlIGVudW0gaW4gYmluYXJ5IHN0cnVjdCBkZWZp bml0aW9ucywgdGhlbiBtYXliZSB3ZQo+IHNob3VsZCBkZWZpbmUgYWxsIGVuZ2luZSBjbGFzc2Vz IHdpdGggI2RlZmluZSBhczoKPgo+IMKgwqDCoMKgI2RlZmluZSBFTkdJTkVfQ0xBU1NfSU5WQUxJ RMKgIDAKPiDCoMKgwqDCoCNkZWZpbmUgRU5HSU5FX0NMQVNTX0FMTMKgwqDCoMKgwqAgMAo+IMKg wqDCoMKgI2RlZmluZSBFTkdJTkVfQ0xBU1NfUkVOREVSwqDCoCAxCj4gwqDCoMKgwqAjZGVmaW5l IEVOR0lORV9DTEFTU19WREVDRU5DwqAgMgo+IMKgwqDCoMKgLi4uCj4gwqDCoMKgwqAjZGVmaW5l IEVOR0lORV9DTEFTU19NQVjCoMKgwqDCoMKgIDcKPgoKSSBjYW4gcGFzcyB0aGlzIGNvbW1lbnQg dG8gdGhlIEd1QyB0ZWFtLiBPciB3ZSBjYW4gdXNlIGRlZmluZXMgZm9yIHRoZSAKTGludXggaGVh ZGVyIGZpbGVzLCBidXQgdGhlbiB3ZSBtaWdodCBzdGFydCBkZXZpYXRpbmcgYWdhaW4gZnJvbSBh IApjb21tb24gaW50ZXJmYWNlIG5hbWluZy4KCj4gd2hhdCBpZiBmdXR1cmUgSFcgd2lsbCBzdXBw b3J0IG1vcmUgdGhhbiA3IGVuZ2luZSBjbGFzc2VzCj4gb3IgdGhleSB3aWxsIGJlIHNvIGRpZmZl cmVudCB0aGF0IHRoZXkgZGVzZXJ2ZSBzZXBhcmF0ZSBpZD8KPiB3aHkKCkkgaW1hZ2luZSB0aGF0 J3Mgd2hhdCB0aGUgcmVzZXJ2ZWQgaXMgZm9yLiBJIGNhbm5vdCB0aGluayBvZiBtYW55IG1vcmUg CmVuZ2luZSBjbGFzc2VzLCBidXQgSSBwcm9iYWJseSBsYWNrIGltYWdpbmF0aW9uLgoKPgo+PiAr Cj4+ICsvKiBFbmdpbmUgSW5zdGFuY2UgdGhhdCB1S2VybmVsIGNhbiBzY2hlZHVsZSBvbiAqLwo+ PiArZW51bSB1a19lbmdpbmVfaW5zdGFuY2Ugewo+PiArwqDCoMKgIFVLX0VOR0lORV9JTlNUQU5D RV8wID0gMCwKPj4gK8KgwqDCoCBVS19FTkdJTkVfSU5TVEFOQ0VfMSA9IDEsCj4+ICvCoMKgwqAg VUtfRU5HSU5FX0lOU1RBTkNFXzIgPSAyLAo+PiArwqDCoMKgIFVLX0VOR0lORV9JTlNUQU5DRV8z ID0gMywKPj4gK8KgwqDCoCBVS19JTlZBTElEX0VOR0lORV9JTlNUQU5DRSA9IEdVQ19NQVhfRU5H SU5FX0lOU1RBTkNFX1BFUl9DTEFTUywKPj4gK8KgwqDCoCBVS19FTkdJTkVfQUxMX0lOU1RBTkNF UyA9IFVLX0lOVkFMSURfRU5HSU5FX0lOU1RBTkNFCj4+ICt9Owo+Cj4gSSdtIG5vdCBzdXJlIHdo eSB3ZSB3b3VsZCBuZWVkIHRoaXMgZW51bSBhcyB3ZSBhbHJlYWR5IGhhdmUKPiBHVUNfTUFYX0VO R0lORV9JTlNUQU5DRV9QRVJfQ0xBU1MgYW5kIGNhbiBlYXNpbHkgaWRlbnRpZnkKPiBpbnN0YW5j ZSBhcyBbMCAuLi4gR1VDX01BWF9FTkdJTkVfSU5TVEFOQ0VfUEVSX0NMQVNTKSwgb3IKPiBtYXli ZSBtb3JlIGludHVpdGl2ZSB3b3VsZCBiZSB1c2Ugbm9ybWFsIGluZGV4aW5nIGFuZCB1c2UgMAo+ IHRvIGluZGljYXRlIElOVkFMSUQvQVVUTy9BTEwgaW5zdGFuY2UgPwo+Cj4gwqDCoMKgwqAjZGVm aW5lIEVOR0lORV9JTlNUQU5DRV9JTlZBTElEwqAgMAo+IMKgwqDCoMKgI2RlZmluZSBFTkdJTkVf SU5TVEFOQ0VfQUxMwqDCoMKgwqDCoCAwCj4gwqDCoMKgwqAjZGVmaW5lIEVOR0lORV9JTlNUQU5D RV9NQVjCoMKgwqDCoMKgIDQKPgoKSSBjYW4gcGFzcyB0aGlzIGNvbW1lbnQgYWxvbmcuCgo+PiAr Cj4+ICsvKiBUYXJnZXQgRW5naW5lIGZpZWxkIHVzZWQgaW4gV0kgaGVhZGVyIGFuZCBHdWMySG9z dCAqLwo+PiArc3RydWN0IGd1Y190YXJnZXRfZW5naW5lIHsKPj4gK8KgwqDCoCB1bmlvbiB7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBP bmUgb2YgZW51bSB1a19lbmdpbmVfY2xhc3MgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dTggZW5naW5lX2NsYXNzIDogMzsKPgo+IGVudW0gZGVmaW5lcyBvbmx5IDAuLjUgd2hpbGUgaW4g dGhlc2UgMyBiaXRzIHdlIGNhbiBwYXNzIDAuLjcKPgoKU28/IFlvdSBjYW4gcGFzcyA2IGFuZCA3 IGlmIHlvdSB3YW50LCBidXQgaXQgd291bGQgYmUgaW52YWxpZCAoYXMgdGhlIAplbnVtIHNob3dz KS4KCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE9uZSBvZiBlbnVtIHVrX2VuZ2luZV9p bnN0YW5jZSAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1OCBlbmdpbmVfaW5zdGFuY2Ug OiA0Owo+Cj4gYWdhaW4sIG1pc21hdGNoIGJldHdlZW4gJ2VudW0nIGFuZCBiaXRmaWVsZHMuCgpB Z2FpbiwgSSBkb24ndCB1bmRlcnN0YW5kIHRoZSBwcm9ibGVtLgoKPgo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAvKiBBbGwgZW5hYmxlZCBlbmdpbmUgY2xhc3NlcyBhbmQgaW5zdGFuY2VzICov Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHU4IGFsbF9lbmdpbmVzIDogMTsKPgo+IGluY29u c2lzdGVuY3kgYXMgdGhlcmUgaXMgZGVkaWNhdGVkIHZhbHVlIFVLX0VOR0lORV9BTExfSU5TVEFO Q0VTCj4gZm9yIGVuZ2luZV9pbnN0YW5jZSBidXQgZm9yIGVuZ2luZV9jbGFzcyB0aGVyZSBpcyBz ZXBhcmF0ZSBiaXQuCgpJJ2xsIHBhc3MgdGhpcyBjb21tZW50IGFsb25nLgoKPgo+PiArwqDCoMKg wqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgIHU4IHZhbHVlOwo+PiArwqDCoMKgIH07Cj4+ ICt9Owo+PiArCj4+ICtzdHJ1Y3QgZ3VjX2VuZ2luZV9jbGFzc19iaXRfbWFwIHsKPj4gK8KgwqDC oCB1bmlvbiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBCaXQgcG9zaXRpb25zIG11c3QgbWF0Y2gg ZW51bSB1a19lbmdpbmVfY2xhc3MgdmFsdWUgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZW5kZXJfZW5naW5lX2NsYXNzIDogMTsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHZkZWNlbmNfZW5naW5lX2NsYXNzIDogMTsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHZlX2VuZ2luZV9jbGFzcyA6IDE7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBibHRfY29weV9lbmdpbmVfY2xhc3MgOiAxOwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcmVzZXJ2ZWRfZW5naW5lX2NsYXNzIDogMTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIG90aGVyX2VuZ2luZV9jbGFzcyA6IDE7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDI2Owo+Cj4gYnR3LCBpaXJjIG5hbWVsZXNzIGJp dCBmaWVsZHMgbWF5IG5vdCBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgb24gc29tZQo+IGNvbXBpbGVy cywgc28gYmV0dGVyIHRvIGF2b2lkIHRoZW0uCj4gYWxzbywgZG8gd2Ugd2FudCB0byB1c2UgYml0 ZmllbGRzIG9yIHN0YXkgd2l0aCBfU0hJRlQvX01BU0sgbWFjcm9zPwoKQXQgc29tZSBwb2ludCB3 ZSBhZ3JlZWQgdGhhdCB3ZSB3ZXJlIHRyeWluZyB0byBrZWVwIHRoZSBoZWFkZXIgZmlsZXMgCmZy b20gZGlmZmVyZW50IE9TZXMgYXMgY2xvc2UgYXMgcG9zc2libGUuCklJUkMsIEkgcmFpc2VkIHRo ZSBwb2ludCB0aGF0IF9TSElGVC9fTUFTSyBtYWNyb3MgYXJlIHRoZSBwcmVmZXJyZWQgCmFwcHJv YWNoIGluIGk5MTUsIGFuZCBJIHdhcyB0b2xkIHRoaXMgaXMgYW4gZXhjZXB0aW9uYWwgY2lyY3Vt c3RhbmNlLgoKPgo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgIHUzMiB2 YWx1ZTsKPj4gK8KgwqDCoCB9Owo+PiArfTsKPj4gKwo+PiArc3RydWN0IGd1Y19lbmdpbmVfaW5z dGFuY2VfYml0X21hcCB7Cj4+ICvCoMKgwqAgdW5pb24gewo+PiArwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGVuZ2luZTAgOiAxOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZW5naW5lMSA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiBlbmdpbmUyIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGVu Z2luZTMgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZW5naW5lNCA6IDE7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBlbmdpbmU1IDogMTsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdTMyIGVuZ2luZTYgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 MzIgZW5naW5lNyA6IDE7Cj4KPiAiZW5naW5lIiA/IG1heWJlIHRoZXkgbWVhbiAiaW5zdGFuY2Ui ID8KPiBhbmQgaWYgaW5zdGFuY2UsIHRoZW4gZW51bSBhYm92ZSBkZWZpbmVzIG9ubHkgMC4uMwo+ CgpJJ2xsIHBhc3MgdGhlIGNvbW1lbnQgYWxvbmcuCgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1MzIgOiAyNDsKPj4gK8KgwqDCoMKgwqDCoMKgIH07Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIg dmFsdWU7Cj4+ICvCoMKgwqAgfTsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBndWNfZW5naW5lX2Jp dF9tYXAgewo+PiArwqDCoMKgIHN0cnVjdCBndWNfZW5naW5lX2NsYXNzX2JpdF9tYXAgZW5naW5l X2NsYXNzX2JpdF9tYXA7Cj4+ICvCoMKgwqAgc3RydWN0IGd1Y19lbmdpbmVfaW5zdGFuY2VfYml0 X21hcAo+PiArwqDCoMKgwqDCoMKgwqAgZW5naW5lX2luc3RhbmNlX2JpdF9tYXBbR1VDX01BWF9F TkdJTkVfQ0xBU1NfQ09VTlRdOwo+PiArfTsKPj4gKwo+PiArLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq IAo+Pgo+PiArICoqKioqKioqKioqKioqKioqKioqKiBQcm9jZXNzIERlc2NyaXB0b3IgYW5kIFdv cmsgUXVldWUgCj4+ICoqKioqKioqKioqKioqKioqKioqKgo+PiArIAo+PiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KPj4gKwo+PiArLyogU3RhdHVzIG9mIGEgV29yayBRdWV1ZSAqLwo+PiArZW51bSBn dWNfcXVldWVfc3RhdHVzIHsKPj4gK8KgwqDCoCBHVUNfUVVFVUVfU1RBVFVTX0FDVElWRSA9IDEs Cj4+ICvCoMKgwqAgR1VDX1FVRVVFX1NUQVRVU19TVVNQRU5ERUQgPSAyLAo+PiArwqDCoMKgIEdV Q19RVUVVRV9TVEFUVVNfQ01EX0VSUk9SID0gMywKPj4gK8KgwqDCoCBHVUNfUVVFVUVfU1RBVFVT X0VOR0lORV9JRF9OT1RfVVNFRCA9IDQsCj4+ICvCoMKgwqAgR1VDX1FVRVVFX1NUQVRVU19TVVNQ RU5ERURfRlJPTV9FTkdJTkVfUkVTRVQgPSA1LAo+PiArwqDCoMKgIEdVQ19RVUVVRV9TVEFUVVNf SU5WQUxJRF9TVEFUVVMgPSA2LAo+Cj4gd2h5IG5vdCAwID8gd2hhdCAwIG1lYW5zID8KCklQVENB IChJJ2xsIHBhc3MgdGhlIGNvbW1lbnQgYWxvbmcpCgo+Cj4+ICt9Owo+PiArCj4+ICsvKiBQcmlv cml0eSBvZiBndWNfY29udGV4dF9kZXNjcmlwdG9yICovCj4+ICtlbnVtIGd1Y19jb250ZXh0X3By aW9yaXR5IHsKPj4gK8KgwqDCoCBHVUNfQ09OVEVYVF9QUklPUklUWV9LTURfSElHSCA9IDAsCj4+ ICvCoMKgwqAgR1VDX0NPTlRFWFRfUFJJT1JJVFlfSElHSCA9IDEsCj4+ICvCoMKgwqAgR1VDX0NP TlRFWFRfUFJJT1JJVFlfS01EX05PUk1BTCA9IDIsCj4+ICvCoMKgwqAgR1VDX0NPTlRFWFRfUFJJ T1JJVFlfTk9STUFMID0gMywKPj4gK8KgwqDCoCBHVUNfQ09OVEVYVF9QUklPUklUWV9BQlNPTFVU RV9NQVhfQ09VTlQgPSA0LAo+PiArwqDCoMKgIEdVQ19DT05URVhUX1BSSU9SSVRZX0lOVkFMSUQg PSAKPj4gR1VDX0NPTlRFWFRfUFJJT1JJVFlfQUJTT0xVVEVfTUFYX0NPVU5UCj4+ICt9Owo+PiAr Cj4+ICsvKiBBIHNoYXJlZCBzdHJ1Y3R1cmUgYmV0d2VlbiBhcHAgYW5kIHVLZXJuZWwgZm9yIGNv bW11bmljYXRpb24gKi8KPj4gK3N0cnVjdCBndWNfc2NoZWRfcHJvY2Vzc19kZXNjcmlwdG9yIHsK Pj4gK8KgwqDCoCAvKiBJbmRleCBpbiB0aGUgR3VDIENvbnRleHQgRGVzY3JpcHRvciBQb29sICov Cj4+ICvCoMKgwqAgdTMyIGNvbnRleHRfaWQ7Cj4+ICsKPj4gK8KgwqDCoCAvKiBQb2ludGVyIHRv IGRvb3JiZWxsIGNhY2hlbGluZS4gQlNwZWM6IDExMTYgKi8KPj4gK8KgwqDCoCB1NjQgcF9kb29y YmVsbDsKPgo+IHBvaW50ZXIgPyBtYXliZSBzL3BfZG9vcmJlbGwvZG9vcmJlbGxfYWRkciBhcyB0 aGlzIGxpa2VseSBpcyBwaHkgYWRkcgo+CgpJUFRDQQoKPj4gKwo+PiArwqDCoMKgIC8qIFdRIEhl YWQgQnl0ZSBPZmZzZXQgLSBDbGllbnQgbXVzdCBub3Qgd3JpdGUgaGVyZSAqLwo+PiArwqDCoMKg IHUzMiBoZWFkX29mZnNldDsKPj4gKwo+PiArwqDCoMKgIC8qIFdRIFRhaWwgQnl0ZSBPZmZzZXQg LSB1S2VybmVsIHdpbGwgbm90IHdyaXRlIGhlcmUgKi8KPj4gK8KgwqDCoCB1MzIgdGFpbF9vZmZz ZXQ7Cj4+ICsKPj4gK8KgwqDCoCAvKiBXUSBFcnJvciBCeXRlIG9mZnNldCAqLwo+PiArwqDCoMKg IHUzMiBlcnJvcl9vZmZzZXRfYnl0ZTsKPj4gKwo+PiArwqDCoMKgIC8qIFdRIHBWaXJ0IGJhc2Ug YWRkcmVzcyBpbiBDbGllbnQuIEZvciB1c2Ugb25seSBieSBDbGllbnQgKi8KPj4gK8KgwqDCoCB1 NjQgd3F2X2Jhc2VfYWRkcmVzczsKPgo+IGNsaWVudCB2aXJ0dWFsIGFkZHJlc3Mgc2hhbGwgbm90 IGJlIHBhcnQgb2YgdGhlIEd1QyBBQkkKCkhtbW0uLi4gaWYgSSB1bmRlcnN0YW5kIHRoaXMgY29y cmVjdGx5LCB0aGlzIGlzIGludGVuZGVkIGZvciBEaXJlY3QgClN1Ym1pc3Npb24uCgo+Cj4+ICsK Pj4gK8KgwqDCoCAvKiBXUSBTaXplIGluIEJ5dGVzICovCj4+ICvCoMKgwqAgdTMyIHdxX3NpemVf Ynl0ZXM7Cj4+ICsKPj4gK8KgwqDCoCAvKiBXUSBTdGF0dXMuIFJlYWQgYnkgQ2xpZW50LiBXcml0 dGVuIGJ5IHVLZXJuZWwvS01EICovCj4+ICvCoMKgwqAgZW51bSBndWNfcXVldWVfc3RhdHVzIHdx X3N0YXR1czsKPgo+IHdlIGhhdmUgbWFueSBkaXNjdXNzaW9ucyBhYm91dCBub3QgdXNpbmcgZW51 bXMgaW4gcGFja2VkIHN0cnVjdHMKClllcywgYW5kIHRoZXkgd2VyZSBub3RlZCBhbmQgdGlja2V0 cyBvcGVuZWQuIFRoZXkgc2ltcGx5IGhhdmVuJ3QgCmhhcHBlbmVkIHlldC4KCj4KPj4gKwo+PiAr wqDCoMKgIC8qIENvbnRleHQgcHJpb3JpdHkuIFJlYWQgb25seSBieSBDbGllbnQgKi8KPj4gK8Kg wqDCoCBlbnVtIGd1Y19jb250ZXh0X3ByaW9yaXR5IHByaW9yaXR5X2Fzc2lnbmVkOwo+Cj4gc2Ft ZSBoZXJlCgpTYW1lIGhlcmUuCgo+Cj4+ICsKPj4gK8KgwqDCoCB1MzIgZnV0dXJlOwo+Cj4gaWYg d2UgcmVhbGx5IG5lZWQgdGhpcywgY2FuIGl0IGJlIG1lcmdlZCB3aXRoIHJlc2VydmVkMCA/CgpJ dCBjb3VsZCwgYnV0IHRoaXMgaGVscHMga2VlcCBoZWFkZXIgZmlsZXMgZnJvbSBkaWZmZXJlbnQg T1NlcyBhcyBjbG9zZSAKYXMgcG9zc2libGUuCgo+Cj4+ICsKPj4gK8KgwqDCoCBzdHJ1Y3QgZ3Vj X2VuZ2luZV9jbGFzc19iaXRfbWFwIHF1ZXVlX2VuZ2luZV9lcnJvcjsKPj4gKwo+PiArwqDCoMKg IHUzMiByZXNlcnZlZDBbM107Cj4+ICsKPj4gK8KgwqDCoCAvKiB1S2VybmVsIHNpZGUgdHJhY2tp bmcgZm9yIGRlYnVnICovCj4KPiB0aGlzIHNob3VsZCBiZSBzZXBhcmF0ZSBzdHJ1Y3QgZGVmaW5p dGlvbgoKSVBUQ0EKCj4KPj4gKwo+PiArwqDCoMKgIC8qIFdyaXR0ZW4gYnkgdUtlcm5lbCBhdCB0 aGUgdGltZSBvZiBwYXJzaW5nIGFuZCBzdWNjZXNzZnVsIHJlbW92YWwKPj4gK8KgwqDCoMKgICog ZnJvbSBXUSAoaW1wbGllcyByaW5nIHRhaWwgd2FzIHVwZGF0ZWQpCj4+ICvCoMKgwqDCoCAqLwo+ PiArwqDCoMKgIHUzMiB0b3RhbF93b3JrX2l0ZW1zX3BhcnNlZF9ieV9ndWM7Cj4+ICsKPj4gK8Kg wqDCoCAvKiBXcml0dGVuIGJ5IHVLZXJuZWwgaWYgYSBXSSB3YXMgY29sbGFwc2VkIGlmIG5leHQg V0kgaXMgdGhlIHNhbWUKPj4gK8KgwqDCoMKgICogTFJDQSAob3B0aW1pemF0aW9uIGFwcGxpZXMg b25seSB0byBTZWN1cmUvS01EIGNvbnRleHRzKQo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCB1 MzIgdG90YWxfd29ya19pdGVtc19jb2xsYXBzZWRfYnlfZ3VjOwo+PiArCj4+ICvCoMKgwqAgLyog VGVsbHMgaWYgdGhlIGNvbnRleHQgaXMgYWZmZWN0ZWQgYnkgRW5naW5lIFJlc2V0LiBVTUQgbmVl ZHMgdG8KPj4gK8KgwqDCoMKgICogY2xlYXIgaXQgYWZ0ZXIgdGFraW5nIGFwcHJvcHJpYXRlIEFj dGlvbiAoVEJEKQo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCB1MzIgaXNfY29udGV4dF9pbl9l bmdpbmVfcmVzZXQ7Cj4+ICsKPj4gK8KgwqDCoCAvKiBXUSBTYW1wbGVkIHRhaWwgYXQgRW5naW5l IFJlc2V0IFRpbWUuIFZhbGlkIG9ubHkgaWYKPj4gK8KgwqDCoMKgICogaXNfY29udGV4dF9pbl9l bmdpbmVfcmVzZXQgPSB0cnVlCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIHUzMiBlbmdpbmVf cmVzZXRfc2FtcGxlZF93cV90YWlsOwo+PiArCj4+ICvCoMKgwqAgLyogVmFsaWQgZnJvbSBlbmdp bmUgcmVzZXQgdW50aWwgYWxsIHRoZSBhZmZlY3RlZCBXb3JrIEl0ZW1zIGFyZQo+PiArwqDCoMKg wqAgKiBwcm9jZXNzZWQKPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgdTMyIGVuZ2luZV9yZXNl dF9zYW1wbGVkX3dxX3RhaWxfdmFsaWQ7Cj4+ICsKPj4gK8KgwqDCoCB1MzIgcmVzZXJ2ZWQxWzE1 XTsKPj4gK307Cj4+ICsKPj4gKy8qIFdvcmsgSXRlbSBmb3Igc3VibWl0dGluZyBLTUQgd29ya2xv YWRzIGludG8gV29yayBRdWV1ZSBmb3IgR3VDICovCj4+ICtzdHJ1Y3QgZ3VjX3NjaGVkX3dvcmtf cXVldWVfa21kX2VsZW1lbnRfaW5mbyB7Cj4+ICvCoMKgwqAgLyogRXhlY2xpc3QgY29udGV4dCBk ZXNjcmlwdG9yJ3MgbG93ZXIgRFcuIEJTcGVjOiAxMjI1NCAqLwo+PiArwqDCoMKgIHUzMiBlbGVt ZW50X2xvd19kdzsKPj4gK8KgwqDCoCB1bmlvbiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg ewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBTVyBDb250ZXh0IElELiBCU3BlYzogMTIy NTQgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHN3X2NvbnRleHRfaW5kZXggOiAx MTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogU1cgQ291bnRlci4gQlNwZWM6IDEyMjU0 ICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBzd19jb250ZXh0X2NvdW50ZXIgOiA2 Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBJZiB0aGlzIHdvcmtsb2FkIG5lZWRzIHRv IGJlIHN5bmNlZCBwcmlvcgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogdG8gc3VibWlz c2lvbiB1c2UgY29udGV4dF9zdWJtaXRfc3luY192YWx1ZSBhbmQKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIGNvbnRleHRfc3VibWl0X3N5bmNfYWRkcmVzcwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBuZWVkc19zeW5j IDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogUVcgQWxpZ25lZCwgVGFpbFZhbHVl IDw9IDIwNDgKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIChhZGRyZXNzZXMgNCBwYWdl cyBtYXgpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdTMyIHJpbmdfdGFpbF9xd19pbmRleCA6IDExOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1MzIgOiAyOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBCaXQgdG8gaW5k aWNhdGUgaWYgUE9DUyBuZWVkcyB0byBiZSBpbiBGUkVFWkUgc3RhdGUKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqIGZvciB0aGlzIFdJIHN1Ym1pc3Npb24KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgd2lfZnJlZXplX3Bv Y3MgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgIHUzMiB2YWx1 ZTsKPj4gK8KgwqDCoCB9IGVsZW1lbnRfaGlnaF9kdzsKPj4gK307Cj4+ICsKPj4gKy8qIFdvcmsg SXRlbSBpbnN0cnVjdGlvbiB0eXBlICovCj4+ICtlbnVtIGd1Y19zY2hlZF9pbnN0cnVjdGlvbl90 eXBlIHsKPj4gK8KgwqDCoCBHVUNfU0NIRURfSU5TVFJVQ1RJT05fQkFUQ0hfQlVGRkVSX1NUQVJU ID0gMHgxLAo+PiArwqDCoMKgIEdVQ19TQ0hFRF9JTlNUUlVDVElPTl9HVUNfQ01EX1BTRVVETyA9 IDB4MiwKPj4gK8KgwqDCoCBHVUNfU0NIRURfSU5TVFJVQ1RJT05fR1VDX0NNRF9LTUQgPSAweDMs Cj4+ICvCoMKgwqAgR1VDX1NDSEVEX0lOU1RSVUNUSU9OX0dVQ19DTURfTk9PUCA9IDB4NCwKPj4g K8KgwqDCoCBHVUNfU0NIRURfSU5TVFJVQ1RJT05fUkVTVU1FX0VOR0lORV9XUV9QQVJTSU5HID0g MHg1LAo+PiArwqDCoMKgIEdVQ19TQ0hFRF9JTlNUUlVDVElPTl9JTlZBTElEID0gMHg2LAo+PiAr fTsKPj4gKwo+PiArLyogSGVhZGVyIGZvciBldmVyeSBXb3JrIEl0ZW0gcHV0IGluIHRoZSBXb3Jr IFF1ZXVlICovCj4+ICtzdHJ1Y3QgZ3VjX3NjaGVkX3dvcmtfcXVldWVfaXRlbV9oZWFkZXIgewo+ PiArwqDCoMKgIHVuaW9uIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8qIE9uZSBvZiBlbnVtIGd1Y19zY2hlZF9pbnN0cnVjdGlvbl90eXBl ICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB3b3JrX2luc3RydWN0aW9uX3R5cGUg OiA4Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBzdHJ1Y3QgZ3VjX3RhcmdldF9lbmdp bmUgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHRhcmdldF9lbmdpbmUgOiA4Owo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBMZW5ndGggaW4gbnVtYmVyIG9mIGR3b3JkcyBm b2xsb3dpbmcgdGhpcyBoZWFkZXIgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNv bW1hbmRfbGVuZ3RoX2R3b3JkcyA6IDExOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIg OiA1Owo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgIHUzMiB2YWx1ZTsK Pj4gK8KgwqDCoCB9Owo+PiArfTsKPj4gKwo+PiArLyogV29yayBpdGVtIGZvciBzdWJtaXR0aW5n IEtNRCB3b3JrbG9hZHMgaW50byB3b3JrIHF1ZXVlIGZvciBHdUMgKi8KPj4gK3N0cnVjdCBndWNf c2NoZWRfd29ya19xdWV1ZV9pdGVtIHsKPj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX3NjaGVkX3dvcmtf cXVldWVfaXRlbV9oZWFkZXIgaGVhZGVyOwo+PiArwqDCoMKgIHN0cnVjdCBndWNfc2NoZWRfd29y a19xdWV1ZV9rbWRfZWxlbWVudF9pbmZvIAo+PiBrbWRfc3VibWl0X2VsZW1lbnRfaW5mbzsKPj4g K8KgwqDCoCAvKiBEZWJ1ZyBvbmx5ICovCj4+ICvCoMKgwqAgdTMyIGZlbmNlX2lkOwo+PiArfTsK Pj4gKwo+PiArc3RydWN0IGttX2dlbjExX3Jlc3VtZV93b3JrX3F1ZXVlX3Byb2Nlc3NpbmdfaXRl bSB7Cj4+ICvCoMKgwqAgc3RydWN0IGd1Y19zY2hlZF93b3JrX3F1ZXVlX2l0ZW0gaGVhZGVyOwo+ PiArfTsKPj4gKwo+PiArI3ByYWdtYSBwYWNrKCkKPj4gKwo+PiArI2VuZGlmCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfa21kX2ludGVyZmFjZS5oIAo+PiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19rbWRfaW50ZXJmYWNlLmgKPj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uNGM2NDNhZAo+PiAtLS0gL2Rldi9udWxs Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19rbWRfaW50ZXJmYWNlLmgK Pj4gQEAgLTAsMCArMSw4NDcgQEAKPj4gKy8qCj4+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogTUlUCj4+ICsgKgo+PiArICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24K Pj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9JTlRFTF9HVUNfS01EX0lOVEVSRkFDRV9IXwo+PiAr I2RlZmluZSBfSU5URUxfR1VDX0tNRF9JTlRFUkZBQ0VfSF8KPj4gKwo+PiArI2luY2x1ZGUgImlu dGVsX2d1Y19jbGllbnRfaW50ZXJmYWNlLmgiCj4+ICsKPj4gKyNwcmFnbWEgcGFjaygxKQo+PiAr Cj4+ICsvKiBNYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBHdUMgQ29udGV4dCBEZXNj cmlwdG9yIFBvb2wuIAo+PiBVcHBlciBsaW1pdAo+PiArICogcmVzdHJpY3RlZCBieSBudW1iZXIg b2YgJ1NXIENvbnRleHQgSUQnIGJpdHMgaW4gdGhlIENvbnRleHQgCj4+IERlc2NyaXB0b3IKPj4g KyAqIChCU3BlYzogMTIyNTQpIG1pbnVzIHNvbWUgcmVzZXJ2ZWQgZW50cmllcwo+PiArICovCj4+ ICsjZGVmaW5lIEdVQ19NQVhfR1VDX0NPTlRFWFRfREVTQ1JJUFRPUl9FTlRSSUVTwqDCoMKgIDIw MzIKPj4gKwo+PiArLyogTGltaXRlZCBieSAnU1cgQ291bnRlcicgYml0cy4gQlNwZWM6IDEyMjU0 ICovCj4+ICsjZGVmaW5lIEdVQ19NQVhfU1dfQ09OVEVYVF9DT1VOVEVSwqDCoMKgIDY0Cj4+ICsK Pj4gKy8qIE1heGltdW0gZGVwdGggb2YgSFcgRXhlY2xpc3QgU3VibWlzc2lvbiBRdWV1ZS4gQlNw ZWM6IDE4OTM0ICovCj4+ICsjZGVmaW5lIEdVQ19NQVhfU1VCTUlTU0lPTl9RX0RFUFRIwqDCoMKg IDgKPj4gKwo+PiArLyogTWluaW11bSBkZXB0aCBvZiBIVyBFeGVjbGlzdCBTdWJtaXNzaW9uIFF1 ZXVlLiBCU3BlYzogMTg5MzQgKi8KPj4gKyNkZWZpbmUgR1VDX01JTl9TVUJNSVNTSU9OX1FfREVQ VEjCoMKgwqAgMgo+PiArCj4+ICsvKiBEZWZhdWx0IGRlcHRoIG9mIEhXIEV4ZWNsaXN0IFN1Ym1p c3Npb24gUXVldWUuIEJTcGVjOiAxODkzNCAqLwo+PiArI2RlZmluZSBHVUNfREVGQVVMVF9FTEVN X0lOX1NVQk1JU1NJT05fUSBHVUNfTUlOX1NVQk1JU1NJT05fUV9ERVBUSAo+PiArCj4+ICsvKiAx IENhY2hlbGluZSA9IDY0IEJ5dGVzICovCj4+ICsjZGVmaW5lIEdVQ19ETUFfQ0FDSEVMSU5FX1NJ WkVfQllURVPCoMKgwqAgNjQKPj4gKwo+PiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIAo+Pgo+PiAr ICoqKioqKioqKioqKioqKioqKioqKioqKioqIEVuZ2luZXMgYW5kIFN5c3RlbSBJbmZvIAo+PiAq KioqKioqKioqKioqKioqKioqKioqKioqKgo+PiArIAo+PiAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Pj4gKwo+PiArLyogR1Qgc3lzdGVtIGluZm8gcGFzc2VkIGRvd24gYnkgS01EIGFmdGVyIHJlYWRp bmcgZnVzZSByZWdpc3RlcnMgKi8KPj4gK3N0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8gewo+PiAr wqDCoMKgIHUzMiBzbGljZV9lbmFibGVkOwo+PiArwqDCoMKgIHUzMiByY3NfZW5hYmxlZDsKPj4g K8KgwqDCoCB1MzIgZnV0dXJlMDsKPj4gK8KgwqDCoCB1MzIgYmNzX2VuYWJsZWQ7Cj4+ICvCoMKg wqAgdTMyIHZkX2JveF9lbmFibGVfbWFzazsKPj4gK8KgwqDCoCB1MzIgZnV0dXJlMTsKPj4gK8Kg wqDCoCB1MzIgdmVfYm94X2VuYWJsZV9tYXNrOwo+PiArwqDCoMKgIHUzMiBmdXR1cmUyOwo+PiAr wqDCoMKgIHUzMiByZXNlcnZlZFs4XTsKPgo+IHdoYXQncyB0aGUgZm9ybWF0IG9mIHRoZXNlIHUz MiA/Cj4gbWF5YmUgZ3VjX2VuZ2luZV9iaXRfbWFzayBjYW4gYmUgcmV1c2VkIGhlcmUgPwoKTW9z dCBvZiB0aGVtIGFyZSBqdXN0IGJvb2xlYW5zLiBZZXMsIGd1Y19lbmdpbmVfYml0X21hc2sgY2Fu IHByb2JhYmx5IGJlIApyZXVzZWQuIElQVENBCgo+Cj4+ICt9Owo+PiArCj4+ICsvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiogCj4+Cj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqIEd1QyBDb250ZXh0 IERlc2NyaXB0b3IgUG9vbCAKPj4gKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsgCj4+ICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwo+PiArCj4+ICsvKiBTdGF0ZSBvZiB0aGUgY29udGV4dCAqLwo+ PiArc3RydWN0IGd1Y19lbmdpbmVfY29udGV4dF9zdGF0ZSB7Cj4+ICvCoMKgwqAgdW5pb24gewo+ PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMy IHdhaXRfZm9yX2Rpc3BsYXlfZXZlbnQgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 MzIgd2FpdF9mb3Jfc2VtYXBob3JlIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMy IHJlX2VucXVldWVfdG9fc3VibWl0X3F1ZXVlIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdTMyIDogMjk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+PiArwqDCoMKgwqDCoMKgwqAgdTMy IHdhaXRfdmFsdWU7Cj4+ICvCoMKgwqAgfTsKPj4gK8KgwqDCoCB1MzIgcmVzZXJ2ZWQ7Cj4+ICt9 Owo+PiArCj4+ICsvKiBUbyBkZXNjcmliZSBzdGF0dXMgYW5kIGFjY2VzcyBpbmZvcm1hdGlvbiBv ZiBjdXJyZW50IHJpbmcgYnVmZmVyIGZvcgo+PiArICogYSBnaXZlbiBndWNfZXhlY2xpc3RfY29u dGV4dAo+PiArICovCj4+ICtzdHJ1Y3QgZ3VjX2V4ZWNsaXN0X3JpbmdfYnVmZmVyIHsKPj4gK8Kg wqDCoCB1MzIgcF9leGVjbGlzdF9yaW5nX2NvbnRleHQ7Cj4+ICsKPj4gK8KgwqDCoCAvKiB1S2Vy bmVsIGFkZHJlc3MgZm9yIHRoZSByaW5nIGJ1ZmZlciAqLwo+PiArwqDCoMKgIHUzMiBwX3Jpbmdf YmVnaW47Cj4+ICvCoMKgwqAgLyogdUtlcm5lbCBmaW5hbCBieXRlIGFkZHJlc3MgdGhhdCBpcyB2 YWxpZCBmb3IgdGhpcyByaW5nICovCj4+ICvCoMKgwqAgdTMyIHBfcmluZ19lbmQ7Cj4+ICvCoMKg wqAgLyogdUtlcm5lbCBhZGRyZXNzIGZvciBuZXh0IGxvY2F0aW9uIGluIHJpbmcgKi8KPj4gK8Kg wqDCoCB1MzIgcF9uZXh0X2ZyZWVfbG9jYXRpb247Cj4KPiBobW0sIHVLZXJuZWwgcHJpdmF0ZSBh ZGRyZXNzZXMgYXJlIHBhcnQgb2YgdGhlIEFCSSA/CgpUaGlzIHNpbXBseSBtZWFucyBHR1RUIGFk ZHJlc3NlcyAodGhlcmUgaXMgbm90aGluZyByZWFsbHkgcHJpdmF0ZSB0byB0aGUgCnVLZXJuZWwp Cgo+Cj4+ICsKPj4gK8KgwqDCoCAvKiBMYXN0IHZhbHVlIHdyaXR0ZW4gYnkgc29mdHdhcmUgZm9y IHRyYWNraW5nIChqdXN0IGluIGNhc2UKPj4gK8KgwqDCoMKgICogSFcgY29ycnVwdHMgdGhlIHRh aWwgaW4gaXRzIGNvbnRleHQpCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIHUzMiBjdXJyZW50 X3RhaWxfcG9pbnRlcl92YWx1ZTsKPj4gK307Cj4+ICsKPj4gKy8qIFRoZSBlbnRpcmUgZXhlY2xp c3QgY29udGV4dCBpbmNsdWRpbmcgc29mdHdhcmUgYW5kIEhXIGluZm9ybWF0aW9uICovCj4+ICtz dHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHQgewo+PiArwqDCoMKgIC8qIDIgRFdzIG9mIENvbnRl eHQgRGVzY3JpcHRvci4gQlNwZWM6IDEyMjU0ICovCj4+ICvCoMKgwqAgdTMyIGh3X2NvbnRleHRf ZGVzY19kd1syXTsKPj4gK8KgwqDCoCB1MzIgcmVzZXJ2ZWQwOwo+PiArCj4+ICvCoMKgwqAgc3Ry dWN0IGd1Y19leGVjbGlzdF9yaW5nX2J1ZmZlciByaW5nX2J1ZmZlcl9vYmo7Cj4+ICvCoMKgwqAg c3RydWN0IGd1Y19lbmdpbmVfY29udGV4dF9zdGF0ZSBzdGF0ZTsKPj4gKwo+PiArwqDCoMKgIC8q IEZsYWcgdG8gdHJhY2sgaWYgZXhlY2xpc3QgY29udGV4dCBleGlzdHMgaW4gc3VibWl0IHF1ZXVl Cj4+ICvCoMKgwqDCoCAqIFZhbGlkIHZhbHVlcyAwIG9yIDEKPj4gK8KgwqDCoMKgICovCj4+ICvC oMKgwqAgdTMyIGlzX3ByZXNlbnRfaW5fc3E7Cj4+ICsKPj4gK8KgwqDCoCAvKiBJZiBuZWVkc19z eW5jIGlzIHNldCBpbiBXSSwgc3luYyAqY29udGV4dF9zdWJtaXRfc3luY19hZGRyZXNzID09Cj4+ ICvCoMKgwqDCoCAqIGNvbnRleHRfc3VibWl0X3N5bmNfdmFsdWUgYmVmb3JlIHN1Ym1pdHRpbmcg dGhlIGNvbnRleHQgdG8gSFcKPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgdTMyIGNvbnRleHRf c3VibWl0X3N5bmNfdmFsdWU7Cj4+ICvCoMKgwqAgdTMyIGNvbnRleHRfc3VibWl0X3N5bmNfYWRk cmVzczsKPj4gKwo+PiArwqDCoMKgIC8qIFJlc2VydmVkIGZvciBTTFBDIGhpbnRzIChjdXJyZW50 bHkgdXNlZCBmb3IgR1QgdGhyb3R0bGUgCj4+IG1vZGVzKSAqLwo+PiArwqDCoMKgIHUzMiBzbHBj X2NvbnRleHRfaGludHM7Cj4KPiB5b3Ugc2FpZCB0aGF0IFNMUEMgd2lsbCBiZSBsYXRlciAuLi4g aXMgaXQgbmVjZXNzYXJ5IHRvIHB1dCBwYXJ0IG9mIGl0Cj4gaGVyZT8KCiJ1MzIgZnV0dXJlOyIg dGhlbj8KCj4KPj4gKwo+PiArwqDCoMKgIHUzMiByZXNlcnZlZDFbNF07Cj4+ICt9Owo+PiArCj4+ ICsvKiBCaXRtYXAgdG8gdHJhY2sgYWxsb2NhdGVkIGFuZCBmcmVlIGNvbnRleHRzCj4+ICsgKiBj b250ZXh0X2FsbG9jdF9iaXRfbWFwW25dID0gMDsgQ29udGV4dCAnbicgZnJlZQo+PiArICogY29u dGV4dF9hbGxvY3RfYml0X21hcFtuXSA9IDE7IENvbnRleHQgJ24nIGFsbG9jYXRlZAo+PiArICov Cj4+ICtzdHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHRfYWxsb2NfbWFwIHsKPj4gK8KgwqDCoCAv KiBCaXQgbWFwIGZvciBleGVjbGlzdCBjb250ZXh0cywgYml0cyAwIHRvCj4+ICvCoMKgwqDCoCAq IChHVUNfTUFYX1NXX0NPTlRFWFRfQ09VTlRFUiAtIDEpIGFyZSB2YWxpZAo+PiArwqDCoMKgwqAg Ki8KPj4gK8KgwqDCoCB1NjQgY29udGV4dF9hbGxvY3RfYml0X21hcDsKPgo+IG1heWJlIHdlIHNo b3VsZCB1c2UgR1VDX01BWF9TV19DT05URVhUX0NPVU5URVIgaGVyZToKPgo+IMKgwqDCoMKgdTMy IGJpdG1hcFtHVUNfTUFYX1NXX0NPTlRFWFRfQ09VTlRFUiAvIHNpemVvZih1MzIpXTsKPgoKSVBU Q0EKCj4+ICvCoMKgwqAgdTMyIHJlc2VydmVkOwo+PiArfTsKPj4gKwo+PiArZW51bSBndWNfY29u dGV4dF9kZXNjcmlwdG9yX3R5cGUgewo+PiArwqDCoMKgIC8qIFdvcmsgd2lsbCBiZSBzdWJtaXR0 ZWQgdGhyb3VnaCBkb29yYmVsbCBhbmQgV1Egb2YgYQo+PiArwqDCoMKgwqAgKiBQcm94eSBTdWJt aXNzaW9uIGRlc2NyaXB0b3IgaW4gdGhlIGNvbnRleHQgZGVzYyBwb29sCj4+ICvCoMKgwqDCoCAq Lwo+PiArwqDCoMKgIEdVQ19DT05URVhUX0RFU0NSSVBUT1JfVFlQRV9QUk9YWV9FTlRSWSA9IDB4 MDAsCj4+ICsKPj4gK8KgwqDCoCAvKiBXb3JrIHdpbGwgYmUgc3VibWl0dGVkIHVzaW5nIGRvb3Ji ZWxsIGFuZCB3b3JrcXVldWUKPj4gK8KgwqDCoMKgICogb2YgdGhpcyBkZXNjcmlwdG9yIG9uIGJl aGFsZiBvZiBvdGhlciBwcm94eSBFbnRyaWVzCj4+ICvCoMKgwqDCoCAqIGluIHRoZSBjb250ZXh0 IGRlc2MgcG9vbAo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCBHVUNfQ09OVEVYVF9ERVNDUklQ VE9SX1RZUEVfUFJPWFlfU1VCTUlTU0lPTiA9IDB4MDEsCj4+ICsKPj4gK8KgwqDCoCAvKiBXb3Jr IGlzIHN1Ym1pdHRlZCB0aHJvdWdoIGl0cyBvd24gZG9vcmJlbGwgYW5kIFdRICovCj4+ICvCoMKg wqAgR1VDX0NPTlRFWFRfREVTQ1JJUFRPUl9UWVBFX1JFQUwgPSAweDAyLAo+PiArfTsKPj4gKwo+ PiArLyogQ1BVLCBHcmFwaGljcyBhbmQgcGh5c2ljYWwgYWRkcmVzc2VzICovCj4+ICtzdHJ1Y3Qg Z3VjX2FkZHJlc3Mgewo+PiArwqDCoMKgIC8qIENwdSBhZGRyZXNzICh2aXJ0dWFsKSAqLwo+PiAr wqDCoMKgIHU2NCBwX2NwdV9hZGRyZXNzOwo+PiArwqDCoMKgIC8qIHVLZXJuZWwgYWRkcmVzcyAo Z2Z4KSAqLwo+PiArwqDCoMKgIHUzMiBwX3VrX2FkZHJlc3M7Cj4KPiBkbyB3ZSBuZWVkIHRvIHNo YXJlIGNwdS91ayBhZGRyZXNzZXMgb3ZlciBBQkkgPwoKV2hhdCBpcyB0aGUgYWx0ZXJuYXRpdmU/ Cgo+Cj4+ICvCoMKgwqAgLyogUGh5c2ljYWwgYWRkcmVzcyAqLwo+PiArwqDCoMKgIHU2NCBwX2Fk ZHJlc3NfZ3BhOwo+Cj4gcGxlYXNlIGRyb3AgcF8gcHJlZml4CgpJUFRDQQoKPgo+PiArfTsKPj4g Kwo+PiArLyogQ29udGV4dCBkZXNjcmlwdG9yIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gdUtl cm5lbCBhbmQgS01EICovCj4+ICtzdHJ1Y3QgZ3VjX2NvbnRleHRfZGVzY3JpcHRvciB7Cj4+ICvC oMKgwqAgLyogQ1BVIGJhY2sgcG9pbnRlciBmb3IgZ2VuZXJhbCBLTUQgdXNhZ2UgKi8KPj4gK8Kg wqDCoCB1NjQgYXNzaWduZWRfZ3VjX2dwdV9kZXNjOwo+Cj4gcHJpdmF0ZSBwb2ludGVycyBzaGFs bCBub3QgYmUgcGFydCBvZiB0aGUgQUJJCgpBZ3JlZWQgaW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2Uu IFdvdWxkIHlvdSBiZSBPSyB3aXRoIHNvbWV0aGluZyBsaWtlICJ1NjQgCnByaXZhdGVfZmllbGQi IGhlcmU/Cgo+Cj4+ICsKPj4gK8KgwqDCoCAvKiBJbmRleCBpbiB0aGUgcG9vbCAqLwo+PiArwqDC oMKgIHUzMiBndWNfY29udGV4dF9kZXNjX3Bvb2xfaW5kZXg7Cj4+ICsKPj4gK8KgwqDCoCAvKiBG b3IgYSBQcm94eSBFbnRyeSwgdGhpcyBpcyB0aGUgaW5kZXggb2YgaXQncyBwcm94eSBzdWJtaXNz aW9uIAo+PiBlbnRyeS4KPj4gK8KgwqDCoMKgICogRm9yIG90aGVycyB0aGlzIGlzIHRoZSBzYW1l IGFzIGd1Y19jb250ZXh0X2Rlc2NfcG9vbF9pbmRleCBhYm92ZQo+PiArwqDCoMKgwqAgKi8KPj4g K8KgwqDCoCB1MzIgcHJveHlfc3VibWlzc2lvbl9ndWNfY29udGV4dF9kZXNjX3Bvb2xfaW5kZXg7 Cj4+ICsKPj4gK8KgwqDCoCAvKiBUaGUgZG9vcmJlbGwgcGFnZSdzIHRyaWdnZXIgY2FjaGVsaW5l ICovCj4+ICvCoMKgwqAgc3RydWN0IGd1Y19hZGRyZXNzIGRvb3JiZWxsX3RyaWdnZXJfYWRkcmVz czsKPj4gKwo+PiArwqDCoMKgIC8qIEFzc2lnbmVkIGRvb3JiZWxsICovCj4+ICvCoMKgwqAgdTMy IGRvb3JiZWxsX2lkOwo+PiArCj4+ICvCoMKgwqAgLyogQXJyYXkgb2YgZXhlY2xpc3QgY29udGV4 dHMgKi8KPj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHQKPj4gK8KgwqDCoMKg wqDCoMKgIHVrX2V4ZWNfbGlzdF9jb250ZXh0W0dVQ19NQVhfU0NIRURVTEFCTEVfRU5HSU5FX0NM QVNTXQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgW0dVQ19NQVhf U1dfQ09OVEVYVF9DT1VOVEVSXTsKPj4gKwo+PiArwqDCoMKgIC8qIEFsbG9jYXRpb24gbWFwIHRv IHRyYWNrIHdoaWNoIGV4ZWNsaXN0IGNvbnRleHRzIGFyZSBpbiB1c2UgKi8KPj4gK8KgwqDCoCBz dHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHRfYWxsb2NfbWFwCj4+ICsgdWtfZXhlY2xpc3RfY29u dGV4dF9hbGxvY19tYXBbR1VDX01BWF9TQ0hFRFVMQUJMRV9FTkdJTkVfQ0xBU1NdOwo+Cj4gaG1t LCBtYXliZSB0byBtYWtlIGl0IGZ1dHVyZSBwcm9vZiwgd2Ugc2hvdWxkIGRlZmluZSBhcnJheSBh cyBsYXN0IAo+IG1lbWJlcj8KClRoYXQgd291bGQgaGVscCB2ZXJ5IGxpdHRsZSwgc2luY2UgdGhp cyB3aG9sZSBzdHJ1Y3QgaXMgYWxzbyBzdG9yZWQgaW4gCmFuIGFycmF5IChzb21ldGhpbmcgdGhh dCB3ZSBzdGlsbCBoYXZlIHRvIGltcHJvdmUpLCBidXQgSVBUQ0EuCgo+Cj4+ICsKPj4gK8KgwqDC oCAvKiBOdW1iZXIgb2YgYWN0aXZlIGV4ZWNsaXN0IGNvbnRleHRzICovCj4+ICvCoMKgwqAgdTMy IHVrX2V4ZWNsaXN0X2NvbnRleHRfYWxsb2NfY291bnQ7Cj4+ICsKPj4gK8KgwqDCoCAvKiBPcHRp bWl6YXRpb24gdG8gcmVkdWNlIHRoZSBtYXhpbXVtIGV4ZWNsaXN0IGNvbnRleHQgY291bnQgZm9y Cj4+ICvCoMKgwqDCoCAqIHRoaXMgR3VDIGNvbnRleHQgZGVzY3JpcHRvci4gU2hvdWxkIGJlIGxl c3MgdGhhbgo+PiArwqDCoMKgwqAgKiBHVUNfTUFYX1NXX0NPTlRFWFRfQ09VTlRFUgo+PiArwqDC oMKgwqAgKi8KPj4gK8KgwqDCoCB1MzIgbWF4X3VrX2V4ZWNsaXN0X2NvbnRleHRfcGVyX2VuZ2lu ZV9jbGFzczsKPj4gKwo+PiArwqDCoMKgIHVuaW9uIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVj dCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIElzIHRoaXMgY29udGV4dCBhY3RpdmVs eSBhc3NpZ25lZCB0byBhbiBhcHA/ICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBp c19jb250ZXh0X2FjdGl2ZSA6IDE7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyog SXMgdGhpcyBhIHByb3h5IGVudHJ5LCBwcmluY2lwYWwgb3IgcmVhbCBlbnRyeT8gKi8KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNvbnRleHRfdHlwZSA6IDI7Cj4+ICsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdTMyIGlzX2ttZF9jcmVhdGVkX2NvbnRleHQgOiAxOwo+Cj4gY2Fu IGl0IGJlIG1vZGlmaWVkIGZyb20vb3IgdGhlIGttZCA/CgpUaGUgS01EIHNldHMgdGhpcy4gSSB0 aGluayB0aGlzIG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbiBEaXJlY3QgU3VibWlzc2lvbiAKaXMgdXNl ZC4KCj4KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBDb250ZXh0IHdhcyBwYXJ0 IG9mIGFuIGVuZ2luZSByZXNldC4gS01EIG11c3QgdGFrZQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICogYXBwcm9wcmlhdGUgYWN0aW9uICh0aGlzIGNvbnRleHQgd2lsbCBub3QgYmUKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHJlc3VibWl0dGVkIHVudGlsIHRoaXMgYml0IGlz IGNsZWFyZWQpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdTMyIGlzX2NvbnRleHRfZW5nX3Jlc2V0IDogMTsKPj4gKwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIFNldCBpdCB0byAxIHRvIHByZXZlbnQgb3RoZXIgY29kZSBw YXRocyB0byBkbyB3b3JrCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHF1ZXVlIHBy b2Nlc3NpbmcgYXMgd2UgdXNlIHNhbXBsZWQgdmFsdWVzIGZvciBXUQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiBwcm9jZXNzaW5nLiBBbGxvd2luZyBtdWx0aXBsZSBjb2RlIHBhdGhz IHRvIGRvIFdRCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHByb2Nlc3Npbmcgd2ls bCBjYXVzZSBzYW1lIHdvcmtsb2FkIHRvIGV4ZWN1dGUKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICogbXVsdGlwbGUgdGltZXMKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICov Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB3cV9wcm9jZXNzaW5nX2xvY2tlZCA6IDE7 Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGZ1dHVyZSA6IDE7Cj4+ICsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogSWYgc2V0IHRvIDEsIHRoZSBjb250ZXh0IGlzIHRl cm1pbmF0ZWQgYnkgR3VDLiBBbGwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHRoZSBw ZW5kaW5nIHdvcmsgaXMgZHJvcHBlZCwgaXRzIGRvb3JiZWxsIGlzIGV2aWN0ZWQKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFuZCBldmVudHVhbGx5IHRoaXMgY29udGV4dCB3aWxsIGJl IHJlbW92ZWQKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1MzIgaXNfY29udGV4dF90ZXJtaW5hdGVkIDogMTsKPj4gKwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAyNDsKPj4gK8KgwqDCoMKgwqDCoMKgIH07Cj4+ICvCoMKg wqDCoMKgwqDCoCB1MzIgYm9vbF92YWx1ZXM7Cj4+ICvCoMKgwqAgfTsKPj4gKwo+PiArwqDCoMKg IGVudW0gZ3VjX2NvbnRleHRfcHJpb3JpdHkgcHJpb3JpdHk7Cj4KPiBhZ2FpbiwgZW51bSBpbiBw YWNrZWQgc3RydWN0CgpZdXAsIHdlIGFscmVhZHkga25ldyBhYm91dCB0aGlzLgoKPgo+PiArCj4+ ICvCoMKgwqAgLyogV1EgdGFpbCBTYW1wbGVkIGFuZCBzZXQgZHVyaW5nIGRvb3JiZWxsIElTUiBo YW5kbGVyICovCj4+ICvCoMKgwqAgdTMyIHdxX3NhbXBsZWRfdGFpbF9vZmZzZXQ7Cj4+ICsKPj4g K8KgwqDCoCAvKiBHbG9iYWwgKGFjcm9zcyBhbGwgc3VibWl0IHF1ZXVlcykuIEZvciBwcmluY2lw YWxzCj4+ICvCoMKgwqDCoCAqIChwcm94eSBlbnRyeSksIHRoaXMgd2lsbCBiZSB6ZXJvIGFuZCB0 cnVlIGNvdW50Cj4+ICvCoMKgwqDCoCAqIHdpbGwgYmUgcmVmbGVjdGVkIGluIGl0cyBwcm94eSAo cHJveHkgc3VibWlzc2lvbikKPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgdTMyIHRvdGFsX3N1 Ym1pdF9xdWV1ZV9lbnF1ZXVlczsKPj4gKwo+PiArwqDCoMKgIC8qIFBvaW50ZXIgdG8gc3RydWN0 IGd1Y19zY2hlZF9wcm9jZXNzX2Rlc2NyaXB0b3IgKi8KPj4gK8KgwqDCoCB1MzIgcF9wcm9jZXNz X2Rlc2NyaXB0b3I7Cj4+ICsKPj4gK8KgwqDCoCAvKiBTZWN1cmUgY29weSBvZiBXUSBhZGRyZXNz IGFuZCBzaXplLiB1S2VybmVsIGNhbiBub3QKPj4gK8KgwqDCoMKgICogdHJ1c3QgZGF0YSBpbiBz dHJ1Y3QgZ3VjX3NjaGVkX3Byb2Nlc3NfZGVzY3JpcHRvcgo+PiArwqDCoMKgwqAgKi8KPj4gK8Kg wqDCoCB1MzIgcF93b3JrX3F1ZXVlX2FkZHJlc3M7Cj4+ICvCoMKgwqAgdTMyIHdvcmtfcXVldWVf c2l6ZV9ieXRlczsKPj4gKwo+PiArwqDCoMKgIHUzMiBmdXR1cmUwOwo+PiArwqDCoMKgIHUzMiBm dXR1cmUxOwo+Cj4gZHJvcCBvciBrZWVwIHRvZ2V0aGVyIHdpdGggcmVzZXJ2ZWQKCkFnYWluLCBp dCB3YXMgZG9uZSBsaWtlIHRoaXMgdG8ga2VlcCBkaWZmZXJlbmNlcyB0byBhIG1pbmltdW0uCgo+ Cj4+ICsKPj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX2VuZ2luZV9jbGFzc19iaXRfbWFwIHF1ZXVlX2Vu Z2luZV9lcnJvcjsKPgo+IGlzIHRoaXMgZXJyb3IgbWFwIHBlciBjb250ZXh0PyBpcyB0aGVyZSBn bG9iYWwgZXJyb3IgbWFwIGF2YWlsYWJsZT8KCkknbSBub3QgdmVyeSBmYW1pbGlhciB3aXRoIHRo ZSBHdUMgcmVzZXQgcHJvY2VkdXJlLCBidXQgdGhpcyBzaW5jZSB0byBiZSAKcGVyLWNvbnRleHQg YW5kIEkgZG9uJ3Qgc2VlIGFueSBnbG9iYWwgZXF1aXZhbGVudCB0aGluZy4KCj4KPj4gKwo+PiAr wqDCoMKgIHUzMiByZXNlcnZlZDBbM107Cj4+ICvCoMKgwqAgdTY0IHJlc2VydmVkMVsxMl07Cj4+ ICt9Owo+PiArCj4+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogCj4+Cj4+ICsgKioqKioqKioqKioq KioqKioqKioqKioqKioqIEhvc3QyR3VDIGFuZCBHdUMySG9zdCAKPj4gKioqKioqKioqKioqKioq KioqKioqKioqKioqCj4+ICsgCj4+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo+PiArCj4+ICsvKiBI b3N0IDIgR3VDIGFjdGlvbnMgKi8KPj4gK2VudW0gZ3VjX2hvc3QyZ3VjX2FjdGlvbiB7Cj4KPiB0 byBiZSBmdXR1cmUgcmVhZHk6Cj4KPiBzL2d1Y19ob3N0Mmd1Y19hY3Rpb24vZ3VjX2FjdGlvbgo+ IHMvR1VDX0hPU1QyR1VDX0FDVElPTi9HVUNfQUNUSU9OCj4gb3IKPiBzL2d1Y19ob3N0Mmd1Y19h Y3Rpb24vZ3VjX21zZ19hY3Rpb24KPiBzL0dVQ19IT1NUMkdVQ19BQ1RJT04vR1VDX01TR19BQ1RJ T04KPiBvcgo+IHMvZ3VjX2hvc3QyZ3VjX2FjdGlvbi9ndWNfcmVxdWVzdF9hY3Rpb24KPiBzL0dV Q19IT1NUMkdVQ19BQ1RJT04vR1VDX1JFUVVFU1RfQUNUSU9OCgpJUFRDQQoKPgo+Cj4+ICvCoMKg wqAgR1VDX0hPU1QyR1VDX0FDVElPTl9ERUZBVUxUID0gMHgwLAo+PiArwqDCoMKgIEdVQ19IT1NU MkdVQ19BQ1RJT05fUkVRVUVTVF9JTklUX0RPTkVfSU5URVJSVVBUID0gMHgxLAo+PiArwqDCoMKg IEdVQ19IT1NUMkdVQ19BQ1RJT05fUkVRVUVTVF9QUkVFTVBUSU9OID0gMHgyLAo+PiArwqDCoMKg IEdVQ19IT1NUMkdVQ19BQ1RJT05fUkVRVUVTVF9FTkdJTkVfUkVTRVQgPSAweDMsCj4+ICvCoMKg wqAgR1VDX0hPU1QyR1VDX0FDVElPTl9QQVVTRV9TQ0hFRFVMSU5HID0gMHg0LAo+PiArwqDCoMKg IEdVQ19IT1NUMkdVQ19BQ1RJT05fUkVTVU1FX1NDSEVEVUxJTkcgPSAweDUsCj4+ICsKPj4gK8Kg wqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0FMTE9DQVRFX0RPT1JCRUxMID0gMHgxMCwKPj4gK8Kg wqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0RFQUxMT0NBVEVfRE9PUkJFTEwgPSAweDIwLAo+PiAr wqDCoMKgIEdVQ19IT1NUMkdVQ19BQ1RJT05fTE9HX0JVRkZFUl9GSUxFX0ZMVVNIX0NPTVBMRVRF ID0gMHgzMCwKPj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0VOQUJMRV9MT0dHSU5HID0g MHg0MCwKPj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0NBQ0hFX0NSQVNIX0RVTVAgPSAw eDIwMCwKPj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0RFQlVHX1JJTkdfREIgPSAweDMw MCwKPj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX1BFUkZPUk1fR0xPQkFMX0RFQlVHX0FD VElPTlMgPSAweDMwMSwKPj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX0ZPUkNFX0xPR0JV RkZFUkZMVVNIID0gMHgzMDIsCj4+ICvCoMKgwqAgR1VDX0hPU1QyR1VDX0FDVElPTl9MT0dfVkVS Qk9TSVRZX0xPR09VVFBVVF9TRUxFQ1QgPSAweDQwMCwKPj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNf QUNUSU9OX0VOVEVSX1NfU1RBVEUgPSAweDUwMSwKPj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNU SU9OX0VYSVRfU19TVEFURSA9IDB4NTAyLAo+PiArwqDCoMKgIEdVQ19IT1NUMkdVQ19BQ1RJT05f U0VUX1NDSEVEVUxJTkdfTU9ERSA9IDB4NTA0LAo+PiArwqDCoMKgIEdVQ19IT1NUMkdVQ19BQ1RJ T05fU0NIRURfUE9MSUNZX0NIQU5HRSA9IDB4NTA2LAo+PiArCj4+ICvCoMKgwqAgLyogQWN0aW9u cyBmb3IgUG93ciBDb25zZXJ2YXRpb24gOiAweDMwMDAtMHgzRkZGICovCj4+ICvCoMKgwqAgR1VD X0hPU1QyR1VDX0FDVElPTl9QQ19TTFBNX1JFUVVFU1QgPSAweDMwMDMsCj4+ICvCoMKgwqAgR1VD X0hPU1QyR1VDX0FDVElPTl9QQ19TRVRVUF9HVUNSQyA9IDB4MzAwNCwKPj4gK8KgwqDCoCBHVUNf SE9TVDJHVUNfQUNUSU9OX1NBTVBMRV9GT1JDRVdBS0VfRkVBVFVSRV9SRUdJU1RFUiA9IDB4MzAw NSwKPj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfQUNUSU9OX1NFVFVQX0dVQ1JDID0gMHgzMDA2LAo+ PiArCj4+ICvCoMKgwqAgR1VDX0hPU1QyR1VDX0FDVElPTl9BVVRIRU5USUNBVEVfSFVDID0gMHg0 MDAwLAo+PiArCj4+ICvCoMKgwqAgR1VDX0hPU1QyR1VDX0FDVElPTl9SRUdJU1RFUl9DT01NQU5E X1RSQU5TUE9SVF9CVUZGRVIgPSAweDQ1MDUsCj4+ICvCoMKgwqAgR1VDX0hPU1QyR1VDX0FDVElP Tl9ERVJFR0lTVEVSX0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUiA9IDB4NDUwNiwKPj4gKwo+PiAr wqDCoMKgIEdVQ19IT1NUMkdVQ19BQ1RJT05fTUFYID0gMHhGRkZGCj4+ICt9Owo+PiArCj4+ICtl bnVtIGd1Y19ob3N0Mmd1Y19yZXNwb25zZV9zdGF0dXMgewo+PiArwqDCoMKgIEdVQ19IT1NUMkdV Q19SRVNQT05TRV9TVEFUVVNfU1VDQ0VTUyA9IDB4MCwKPj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNf UkVTUE9OU0VfU1RBVFVTX1VOS05PV05fQUNUSU9OID0gMHgzMCwKPj4gK8KgwqDCoCBHVUNfSE9T VDJHVUNfUkVTUE9OU0VfU1RBVFVTX0xPR19IT1NUX0FERFJFU1NfTk9UX1ZBTElEID0gMHg4MCwK Pj4gK8KgwqDCoCBHVUNfSE9TVDJHVUNfUkVTUE9OU0VfU1RBVFVTX0dFTkVSSUNfRkFJTCA9IDB4 RjAwMCwKPgo+IHMvZ3VjX2hvc3QyZ3VjX3Jlc3BvbnNlX3N0YXR1cy9ndWNfc3RhdHVzCj4gcy9H VUNfSE9TVDJHVUNfUkVTUE9OU0VfU1RBVFVTL0dVQ19TVEFUVVMKPiBvcgo+IHMvZ3VjX2hvc3Qy Z3VjX3Jlc3BvbnNlX3N0YXR1cy9ndWNfbXNnX3N0YXR1cwo+IHMvR1VDX0hPU1QyR1VDX1JFU1BP TlNFX1NUQVRVUy9HVUNfTVNHX1NUQVRVUwo+IG9yCj4gcy9ndWNfaG9zdDJndWNfcmVzcG9uc2Vf c3RhdHVzL2d1Y19yZXNwb25zZV9zdGF0dXMKPiBzL0dVQ19IT1NUMkdVQ19SRVNQT05TRV9TVEFU VVMvR1VDX1JFU1BPTlNFX1NUQVRVUwo+CgpJUFRDQQoKPj4gK307Cj4+ICsKPj4gK2VudW0gewo+ PiArwqDCoMKgIC8qIEhvc3Qgb3JpZ2luYXRpbmcgdHlwZXMgKi8KPj4gK8KgwqDCoCBHVUNfTVNH X1RZUEVfSE9TVDJHVUNfUkVRVUVTVCA9IDB4MCwKPj4gKwo+PiArwqDCoMKgIC8qIEd1QyBvcmln aW5hdGluZyB0eXBlcyAqLwo+PiArwqDCoMKgIEdVQ19NU0dfVFlQRV9IT1NUMkdVQ19SRVNQT05T RSA9IDB4RiwKPj4gK30gR1VDX0dVQ19NU0dfVFlQRTsKPiDCoMKgwqDCoMKgwqAgXl5eXl5eXgo+ IHR5cG8/CgpQcm9ibGVtIHdpdGggdGhlIGF1dG9tYXRpYyBjb252ZXJzaW9uLCBJJ2xsIGZpeCBp dC4KCj4gYW5kIEhPU1QyR1VDIHNob3VsZCBiZSBkcm9wcGVkCj4KPiDCoMKgwqDCoEdVQ19NU0df VFlQRV9SRVFVRVNUID0gMHgwLAo+IMKgwqDCoMKgR1VDX01TR19UWVBFX1JFU1BPTlNFID0gMHhG LAo+Cj4gYW5kIGl0IHNob3VsZCBkZWZpbmVkIGJlZm9yZSBBQ1RJT04vU1RBVFVTCj4KPj4gKwo+ PiArLyogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgdmFyaW91cyBmb3JtYXRzIG9mIHZh bHVlcyBwdXQgaW4KPj4gKyAqIFNPRlRfU0NSQVRDSF8wLiBUaGUgIlR5cGUiIGZpZWxkIGlzIHRv IGRldGVybWluZSB3aGljaCByZWdpc3Rlcgo+PiArICogZGVmaW5pdGlvbiB0byB1c2UsIHNvIGl0 IG11c3QgYmUgY29tbW9uIGFtb25nIGFsbCB1bmlvbmVkCj4+ICsgKiBzdHJ1Y3RzLgo+PiArICov Cj4+ICtzdHJ1Y3QgZ3VjX21zZ19mb3JtYXQgewo+PiArwqDCoMKgIHVuaW9uIHsKPj4gK8KgwqDC oMKgwqDCoMKgIHN0cnVjdCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBhY3Rpb24g OiAxNjsgLyogZW51bSBndWNfaG9zdDJndWNfYWN0aW9uICovCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiByZXNlcnZlZCA6IDEyOyAvKiBNQlogKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdTMyIHR5cGUgOiA0OyAvKiBHVUNfTVNHX1RZUEVfSE9TVDJHVUNfUkVRVUVTVCAqLwo+ PiArwqDCoMKgwqDCoMKgwqAgfSBob3N0Mmd1Y19hY3Rpb247Cj4+ICsKPj4gK8KgwqDCoMKgwqDC oMKgIHN0cnVjdCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBzdGF0dXMgOiAxNjsg LyogZW51bSBndWNfaG9zdDJndWNfcmVzcG9uc2Vfc3RhdHVzICovCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiByZXR1cm5fZGF0YSA6IDEyOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1MzIgdHlwZSA6IDQ7IC8qIEdVQ19NU0dfVFlQRV9IT1NUMkdVQ19SRVNQT05TRSAqLwo+PiAr wqDCoMKgwqDCoMKgwqAgfSBob3N0Mmd1Y19yZXNwb25zZTsKPj4gKwo+PiArwqDCoMKgwqDCoMKg wqAgdTMyIGR3b3JkX3ZhbHVlOwo+PiArwqDCoMKgIH07Cj4+ICt9Owo+Cj4gd2VsbCwgd2UgbmVl ZCBqdXN0IHNpbmdsZSBzdHJ1Y3QgZGVmaW5pdGlvbjoKPgo+IMKgwqDCoMKgdW5pb24gZ3VjX21z Z19oZWFkZXIgewo+IMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgY29kZSA6IDE2Owo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGRhdGEgOiAx MjsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB0eXBlIDogNDsgLyogR1VDX01TR19UWVBF ICovCj4gwqDCoMKgwqDCoMKgwqAgfTsKPiDCoMKgwqDCoMKgwqDCoCB1MzIgdmFsdWU7Cj4gwqDC oMKgwqB9Owo+Cj4gYXMgdmFsdWUgb2YgJ3R5cGUnIGZpZWxkIGluZGljYXRlcyBob3cgdG8gaW50 ZXJwcmV0ICdjb2RlL2RhdGEnIGZpZWxkczoKPgo+IGlmIChtc2cudHlwZSA9PSBHVUNfTVNHX1RZ UEVfUkVRVUVTVCkgewo+IMKgwqDCoMKgR1VDX1JFUVVFU1RfQUNUSU9OIGFjdGlvbiA9IG1zZy5j b2RlOwo+IH0gZWxzZSBpZiAodHlwZSA9PSBHVUNfTVNHX1RZUEVfUkVTUE9OU0UpIHsKPiDCoMKg wqDCoEdVQ19SRVNQT05TRV9TVEFUVVMgc3RhdHVzID0gbXNnLmNvZGU7Cj4gfQo+CgpJUFRDQQoK Pj4gKwo+PiArI2RlZmluZSBHVUNfTUFLRV9IT1NUMkdVQ19SRVNQT05TRShfc3RhdHVzLCBfcmV0 dXJuX2RhdGEpwqDCoMKgIFwKPj4gK8KgwqDCoCAoKEdVQ19NU0dfVFlQRV9IT1NUMkdVQ19SRVNQ T05TRSA8PCAyOCkgfMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCAoKF9yZXR1cm5fZGF0YSAm IDB4RkZGKSA8PCAxNikgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIChfc3Rh dHVzICYgMHhGRkZGKSkKPj4gKyNkZWZpbmUgR1VDX01BS0VfSE9TVDJHVUNfU1RBVFVTKGEpIChH VUNfTUFLRV9IT1NUMkdVQ19SRVNQT05TRShhLCAwKSkKPgo+IEknbSBub3Qgc3VyZSB3ZSBuZWVk IGhlbHBlciBtYWNyb3MgdG8gYmUgcGFydCBvZiB0aGUgQUJJIGRlZmluaXRpb24KCkFncmVlZCwg SSB3aWxsIHJlbW92ZSB0aGlzLgoKPgo+PiArCj4+ICtlbnVtIGd1Y19jbWRfdHJhbnNwb3J0X2J1 ZmZlcl90eXBlIHsKPj4gK8KgwqDCoCBHVUNfQ01EX1RSQU5TUE9SVF9CVUZGRVJfSE9TVDJHVUMg PSAweDAwLAo+PiArwqDCoMKgIEdVQ19DTURfVFJBTlNQT1JUX0JVRkZFUl9HVUMySE9TVCA9IDB4 MDEsCj4+ICvCoMKgwqAgR1VDX0NNRF9UUkFOU1BPUlRfQlVGRkVSX01BWF9UWVBFID0gMHgwMiwK Pgo+IHdoZXJlIHdvdWxkIHdlIG5lZWQgTUFYX1RZUEUgPwoKTm8gaWRlYSwgeW91IGFyZSB0aGUg Y21kIHRyYW5zcG9ydCBidWZmZXIgZXhwZXJ0IDopCklQVENBCgo+Cj4+ICt9Owo+PiArCj4+ICtz dHJ1Y3QgZ3VjX2NtZF90cmFuc3BvcnRfYnVmZmVyX2Rlc2Mgewo+PiArwqDCoMKgIHUzMiBidWZm ZXJfYmVnaW5fZ2Z4X2FkZHJlc3M7Cj4+ICvCoMKgwqAgdTY0IGJ1ZmZlcl9iZWdpbl92aXJ0dWFs X2FkZHJlc3M7Cj4KPiB2aXJ0dWFsIGFkZHJlc3MgaW4gQUJJIGFnYWluID8KPgo+PiArwqDCoMKg IHUzMiBidWZmZXJfc2l6ZV9pbl9ieXRlczsKPj4gK8KgwqDCoCAvKiBHdUMgdUtlcm5lbCB1cGRh dGVzIHRoaXMgKi8KPj4gK8KgwqDCoCB1MzIgaGVhZF9vZmZzZXQ7Cj4+ICvCoMKgwqAgLyogR3VD IGNsaWVudCB1cGRhdGVzIHRoaXMgKi8KPj4gK8KgwqDCoCB1MzIgdGFpbF9vZmZzZXQ7Cj4+ICvC oMKgwqAgdTMyIGlzX2luX2Vycm9yOwo+PiArwqDCoMKgIC8qIEEgRFcgcHJvdmlkZWQgYnkgSDJH IGl0ZW0gdGhhdCB3YXMgcmVxdWVzdGVkIHRvIGJlIHdyaXR0ZW4gKi8KPj4gK8KgwqDCoCB1MzIg ZmVuY2VfcmVwb3J0X2R3Owo+PiArwqDCoMKgIC8qIFN0YXR1cyBhc3NvY2lhdGVkIHdpdGggYWJv dmUgZmVuY2VfcmVwb3J0X2R3ICovCj4+ICvCoMKgwqAgdTMyIHN0YXR1c19yZXBvcnRfZHc7Cj4K PiBobW0sIGFzIHdlIHVzdWFsbHkgc2V0dXAgYm90aCBIMkcgYW5kIEcySCBidWZmZXJzIGZvciBy ZXEvcmVzcCwgd2h5IGRvIAo+IHdlIG5lZWQKPiB0aGlzIGFkZGl0aW9uYWwgbWVjaGFuaXNtIHRv IGxldCBHdUMgd3JpdGUgZmVuY2Uvc3RhdHVzIGludG8gZGVzY3JpcHRvciA/CgpJUFRDQQoKPgo+ PiArwqDCoMKgIC8qIElEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1ZmZlciAoYXNzaWduZWQgYnkg R3VDIG1hc3RlcikgKi8KPj4gK8KgwqDCoCB1MzIgY2xpZW50X2lkOwo+PiArwqDCoMKgIC8qIFVz ZWQgJiBzZXQgYnkgdGhlIGNsaWVudCBmb3IgZnVydGhlciB0cmFja2luZyBvZiBpbnRlcm5hbCAK Pj4gY2xpZW50cyAqLwo+PiArwqDCoMKgIHUzMiBjbGllbnRfc3ViX3RyYWNraW5nX2lkOwo+PiAr wqDCoMKgIHUzMiByZXNlcnZlZFs1XTsKPj4gK307Cj4+ICsKPj4gKy8qIFBlciBjbGllbnQgY29t bWFuZCB0cmFuc3BvcnQgYnVmZmVyIGFsbG9jYXRlZCBieSBHdUMgbWFzdGVyICovCj4+ICtzdHJ1 Y3QgZ3VjX21hc3Rlcl9jbWRfdHJhbnNwb3J0X2J1ZmZlcl9hbGxvYyB7Cj4+ICvCoMKgwqAgLyog VGhpcyBpcyB0aGUgY29weSB0aGF0IEd1QyB0cnVzdHMgKi8KPj4gK8KgwqDCoCBzdHJ1Y3QgZ3Vj X2NtZF90cmFuc3BvcnRfYnVmZmVyX2Rlc2MgYnVmZmVyX2Rlc2M7Cj4+ICvCoMKgwqAgdTMyIGZ1 dHVyZTsKPj4gK8KgwqDCoCB1NjQgcmVzZXJ2ZWQwOwo+Cj4gcGxlYXNlIGtlZXAgZnV0dXJlL3Jl c2VydmVkIGZpZWxkcyB0b2dldGhlciBhdCB0aGUgZW5kIG9mIHN0cnVjdAoKSSdsbCBwYXNzIGEg Z2VuZXJhbCBjb21tZW50IGFib3V0IHRoaXMKPgo+PiArwqDCoMKgIHUzMiB1c2FnZV9zcGVjaWFs X2luZm87Cj4KPiB3aGF0J3MgdGhlIGZvcm1hdCBvZiB0aGlzID8KCk5vIGlkZWEuIElQVENBCgo+ Cj4+ICvCoMKgwqAgdTMyIHZhbGlkOwo+Cj4gMzJiIGZvciBzaW5nbGUgZmxhZyA/CgpJUFRDQQoK Pgo+PiArwqDCoMKgIHUzMiBhc3NvY2lhdGVkX2cyaF9pbmRleDsKPj4gK8KgwqDCoCB1MzIgcmVz ZXJ2ZWQxOwo+PiArfTsKPj4gKwo+PiArLyrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBIb3N0IDIgR3VDIFdvcmsgSXRlbQo+PiArICogCj4+ IFYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLVYKPj4gKyAqIAo+PiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsgKiAqwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICrCoMKgwqAgRFcwL8KgwqAgKsKgwqDC oMKgwqDCoMKgwqDCoMKgICogKsKgwqDCoMKgwqDCoMKgwqDCoMKgICoKPj4gKyAqICogSDJHIEl0 ZW0gSGVhZGVywqDCoCAqwqAgUmV0dXJuRFcgKsKgIERXMcKgwqDCoMKgwqAgKsKgwqDCoMKgwqAg Li4uICrCoCBEV27CoMKgwqDCoMKgICoKPj4gKyAqIAo+PiAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsg Ki8KPj4gKwo+PiArLyogQ29tbWFuZCBidWZmZXIgaGVhZGVyICovCj4+ICtzdHJ1Y3QgZ3VjX2Nt ZF9idWZmZXJfaXRlbV9oZWFkZXIgewo+PiArwqDCoMKgIHVuaW9uIHsKPj4gK8KgwqDCoMKgwqDC oMKgIHN0cnVjdCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE51bWJlciBvZiBkd29y ZHMgdGhhdCBhcmUgcGFyYW1ldGVycyBvZiB0aGlzCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKiBIb3N0Mkd1QyBhY3Rpb24uIE1heCBvZiAzMS4gRS5nLjogaWYgdGhlcmUgYXJlIDIgRFdz Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBmb2xsb3dpbmcgdGhpcyBoZWFkZXIsIHRo aXMgZmllbGQgaXMgc2V0IHRvIDIKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbnVtX2R3b3JkcyA6IDU7Cj4+ICsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMzsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAvKiBUaGUgdUtlcm5lbCB3aWxsIHdyaXRlIHRoZSB2YWx1ZSBmcm9tIERXMCAoYWthCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBSZXR1cm5EVykgdG8gZmVuY2VfcmVwb3J0X2R3IGlu IHN0cnVjdAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZ3VjX2NtZF90cmFuc3BvcnRf YnVmZmVyX2Rlc2MKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MzIgd3JpdGVfZmVuY2VfZnJvbV9kdzBfdG9fZGVzY3JpcHRvciA6IDE7 Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogV3JpdGUgdGhlIHN0YXR1cyBvZiB0 aGUgYWN0aW9uIHRvIERXMCBmb2xsb3dpbmcgdGhpcwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICogaGVhZGVyCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIHdyaXRlX3N0YXR1c190b19kdzAgOiAxOwo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIFNlbmQgYSBHdUMySG9zdCB3aXRoIFN0YXR1cyBvZiB0aGUg YWN0aW9uIGFuZCB0aGUKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGZlbmNlIElEIGZv dW5kIGluIERXMCB2aWEgdGhlIGJ1ZmZlciB1c2VkIGZvciBHdUMgdG8KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqIEhvc3QgY29tbXVuaWNhdGlvbgo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBzZW5kX3N0YXR1c193aXRo X2R3MF92aWFfZ3VjX3RvX2hvc3QgOiAxOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHUzMiA6IDU7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyrCoCBUaGlzIGlzIHRo ZSB2YWx1ZSBvZiB0aGUgZW51bSBndWNfaG9zdDJndWNfYWN0aW9uCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKiB0aGF0IG5lZWRzIHRvIGJlIGRvbmUgYnkgdGhlIHVLZXJuZWwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIg aG9zdDJndWNfYWN0aW9uIDogMTY7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9IGgyZ19jbWRfYnVmZmVy X2l0ZW1faGVhZGVyOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvKiBOdW1iZXIgb2YgZHdvcmRzIHRoYXQgYXJlIHBhcmFtZXRlcnMg b2YgdGhpcyBHdUMySG9zdAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYWN0aW9uCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dTMyIG51bV9kd29yZHMgOiA1Owo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6 IDM7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogSW5kaWNhdGVzIHRoYXQgdGhp cyBHdUMySG9zdCBhY3Rpb24gaXMgYSByZXNwb25zZSBvZgo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICogYSBIb3N0Mkd1YyByZXF1ZXN0Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ki8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGhvc3QyX2d1Y19yZXNwb25zZSA6IDE7 Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHJlc2VydmVkIDogNzsKPj4gKwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBzdHJ1Y3QgZ3VjX3RvX2hvc3RfbWVzc2FnZSAq Lwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZ3VjMmhvc3RfYWN0aW9uIDogMTY7Cj4+ ICvCoMKgwqDCoMKgwqDCoCB9IGcyaF9jbWRfYnVmZmVyX2l0ZW1faGVhZGVyOwo+PiArCj4+ICvC oMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbnVt X2R3b3JkcyA6IDU7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZCA6IDM7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmcmVlX2Zvcl9jbGllbnRfdXNlIDogMjQ7 Cj4+ICvCoMKgwqDCoMKgwqDCoCB9IGdlbmVyaWNfY21kX2J1ZmZlcl9pdGVtX2hlYWRlcjsKPj4g Kwo+PiArwqDCoMKgwqDCoMKgwqAgdTMyIGhlYWRlcl92YWx1ZTsKPj4gK8KgwqDCoCB9Owo+Cj4g aG1tLCB0aGVyZSB3YXMgYSBsb25nIGRpc2N1c3Npb24gYWJvdXQgdW5pZnlpbmcgQ1RCIEgyRyBh bmQgRzJIIG1lc3NhZ2VzLAo+IGFuZCBmaW5hbCBwcm9wb3NhbC9hZ3JlZW1lbnQgd2FzIHRvIHVz ZToKPgo+IMKgwqDCoMKgc3RydWN0IGd1Y19jdGJfaGVhZGVyIHsKPiDCoMKgwqDCoMKgwqDCoCB1 MzIgbnVtX2R3b3JkcyA6IDg7Cj4gwqDCoMKgwqDCoMKgwqAgdTMyIGZsYWdzIDogODsKPiDCoMKg wqDCoMKgwqDCoCB1MzIgYWN0aW9uX2NvZGUgOiAxNjsKPiDCoMKgwqDCoH07Cj4gYW5kCj4gwqDC oMKgwqAjZGVmaW5lIENUQl9GTEFHU19OT05FwqDCoMKgwqDCoMKgwqDCoMKgIDAKPiDCoMKgwqDC oCNkZWZpbmUgQ1RCX0ZMQUdfRkVOQ0VfUFJFU0VOVCAxCj4gYW5kCj4gwqDCoMKgwqAjZGVmaW5l IEdVQ19BQ1RJT05fUkVTUE9OU0XCoMKgwqAgR1VDX0FDVElPTl9ERUZBVUxUCj4KPiB0aGVuCj4g dG8gc2VuZCBIMkcgcmVxdWVzdDoKPiDCoMKgwqDCoC5hY3Rpb24gPSBBQ1RJT04gKCE9IFJFU1BP TlNFKQo+IMKgwqDCoMKgLmZsYWdzIHw9IEZFTkNFX1BSRVNFTlQKPiB0byBzZW5kIEgyRyBub3Rp ZmljYXRpb246Cj4gwqDCoMKgwqAuYWN0aW9uID0gQUNUSU9OICghPSBSRVNQT05TRSkKPiDCoMKg wqDCoC5mbGFncyA9IEZMQUdTX05PTkUKPiB0byBzZW5kIEcySCBub3RpZmljYXRpb246Cj4gwqDC oMKgwqAuYWN0aW9uID0gQUNUSU9OICghPSBSRVNQT05TRSkKPiDCoMKgwqDCoC5mbGFncyA9IEZM QUdTX05PTkUKPiB0byBzZW5kIEcySCByZXNwb25zZToKPiDCoMKgwqDCoC5hY3Rpb24gPSBBQ1RJ T05fUkVTUE9OU0UKPiDCoMKgwqDCoC5mbGFncyB8PSBGRU5DRV9QUkVTRU5UCj4KCklQVENBCgo+ PiArCj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgZ3VjX3RvX2hvc3RfbWVzc2FnZSB7Cj4+ICvCoMKg wqAgdW5pb24gewo+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdTMyIHVrX2luaXRfZG9uZSA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHUzMiBjcmFzaF9kdW1wX3Bvc3RlZCA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUz MiA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmbHVzaF9sb2dfYnVmZmVyX3Rv X2ZpbGUgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcHJlZW1wdF9yZXF1ZXN0 X29sZF9wcmVlbXB0X3BlbmRpbmcgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIg cHJlZW1wdF9yZXF1ZXN0X3RhcmdldF9jb250ZXh0X2JhZCA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBzbGVlcF9l bnRyeV9pbl9wcm9ncmVzcyA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBndWNf aW5fZGVidWdfaGFsdCA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBndWNfcmVw b3J0X2VuZ2luZV9yZXNldF9jb250ZXh0X2lkIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdTMyIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGhvc3RfcHJlZW1wdGlv bl9jb21wbGV0ZSA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZDAg OiA0Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZ3BhX3RvX2hwYV94bGF0aW9uX2Vy cm9yIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGRvb3JiZWxsX2lkX2FsbG9j YXRpb25fZXJyb3IgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZG9vcmJlbGxf aWRfYWxsb2NhdGlvbl9pbnZhbGlkX2N0eF9pZCA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHUzMiA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmb3JjZV93YWtlX3Rp bWVkX291dCA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmb3JjZV93YWtlX3Rp bWVfb3V0X2NvdW50ZXIgOiAyOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAxOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgaW9tbXVfY2F0X3BhZ2VfZmF1bHRlZCA6IDE7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBob3N0Mmd1Y19lbmdpbmVfcmVzZXRfY29t cGxldGUgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcmVzZXJ2ZWQxIDogMjsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGRvb3JiZWxsX3NlbGVjdGlvbl9lcnJvciA6 IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBkb29yYmVsbF9pZF9yZWxlYXNlX2Vy cm9yIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHVrX2V4Y2VwdGlvbiA6IDE7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9 Owo+PiArwqDCoMKgwqDCoMKgwqAgdTMyIGR3Owo+PiArwqDCoMKgIH07Cj4KPiB0aGlzIGVycm9y IGJpdG1hcCBkZWZpbml0aW9uIGlzIG1vcmUgYXBwbGljYWJsZSB0byBNTUlPIGJhc2VkCj4gbm90 aWZpY2F0aW9uLCBmb3IgQ1RCIHdlIGNvdWxkIGludHJvZHVjZSBzb21ldGhpbmcgbW9yZSBmbGV4 aWJsZQo+Cj4gYnR3LCBldmVuIGZvciBNTUlPIGJhc2VkIG5vdGlmaWNhdGlvbiB3ZSBjYW4gcmV1 c2U6Cj4KPiDCoMKgwqDCoHVuaW9uIGd1Y19tc2dfaGVhZGVyIHsKPiDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3Qgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNvZGUgOiAxNjsKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHUzMiBkYXRhIDogMTI7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 MzIgdHlwZSA6IDQ7IC8qIEdVQ19NU0dfVFlQRSAqLwo+IMKgwqDCoMKgwqDCoMKgIH07Cj4gwqDC oMKgwqDCoMKgwqAgdTMyIHZhbHVlOwo+IMKgwqDCoMKgfTsKPgo+IGluIFNDUkFUQ0goMTUpIHdp dGggbmV3Ogo+Cj4gwqDCoMKgwqB0eXBlID0gR1VDX01TR19UWVBFX05PVElGID0gMHgxLAo+IMKg wqDCoMKgdHlwZSA9IEdVQ19NU0dfVFlQRV9FUlJPUiA9IDB4RSwKPgo+IHdoZXJlIGNvZGUvZGF0 YSBjYW4gaG9sZCBleHRyYSBkZXRhaWxzLCBmb3IgTk9USUY6Cj4gwqDCoMKgwqB1a19pbml0X2Rv bmUgPSAxLAo+IMKgwqDCoMKgY3Jhc2hfZHVtcF9wb3N0ZWQsCj4gwqDCoMKgwqBwcmVlbXB0X3Jl cXVlc3Rfb2xkX3ByZWVtcHRfcGVuZGluZywKPiDCoMKgwqDCoGhvc3RfcHJlZW1wdGlvbl9jb21w bGV0ZSwKPiBmb3IgRVJST1I6Cj4gwqDCoMKgwqBwcmVlbXB0X3JlcXVlc3RfdGFyZ2V0X2NvbnRl eHRfYmFkLAo+IMKgwqDCoMKgZG9vcmJlbGxfc2VsZWN0aW9uX2Vycm9yLAo+IGJ0dywgc29tZSBv ZiB0aGVzZSBlcnJvcnMgc2VlbSB0byBiZSBhY3Rpb24gc3BlY2lmaWMsCj4gc28gbWF5YmUgdGhl eSBzaG91bGQgYmUgcmVwb3J0ZWQgYmFjayBpbiBTVEFUVVMgPwoKSVBUQ0EKCj4KPj4gKwo+PiAr fTsKPj4gKwo+PiArLyogU2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHNhdmUgR3VDJ3Mgc3RhdGUgYmVm b3JlIFMzLiBUaGUgZGRyZXNzIG9mIAo+PiB0aGUgYnVmZmVyCj4+ICsgKiBnb2VzIGluIGd1Y19h ZGRpdGlvbmFsX2RhdGFfc3RydWN0cwo+PiArICovCj4+ICsjZGVmaW5lIEdVQ19NQVhfR1VDX1Mz X1NBVkVfU1BBQ0VfUEFHRVPCoMKgwqAgMTAKPj4gKwo+PiArLyogTU1JTyBPZmZzZXQgZm9yIHN0 YXR1cyBvZiBzbGVlcCBzdGF0ZSBlbnRlciByZXF1ZXN0ICovCj4+ICsjZGVmaW5lIEdVQ19TTEVF UF9TVEFURV9FTlRFUl9TVEFUVVPCoMKgwqAgMHhDMUI4Cj4KPiBobW0sIHdlIHVzZWQgU0NSQVRD SCgxNCkgZm9yIEgyRywgZ29vZCB0byBrbm93IHRoYXQgaXQgd2lsbCBiZSB1c2VkIAo+IGZvciBH MkgKPgo+PiArCj4+ICsvKiBTdGF0dXMgb2Ygc2xlZXAgcmVxdWVzdC4gVmFsdWUgdXBkYXRlZCBp biAKPj4gR1VDX1NMRUVQX1NUQVRFX0VOVEVSX1NUQVRVUyAqLwo+PiArZW51bSBndWNfc2xlZXBf c3RhdGVfZW50ZXJfc3RhdHVzIHsKPj4gK8KgwqDCoCBHVUNfU0xFRVBfU1RBVEVfRU5URVJfU1VD Q0VTUyA9IDEsCj4+ICvCoMKgwqAgR1VDX1NMRUVQX1NUQVRFX0VOVEVSX1BSRUVNUFRfVE9fSURM RV9GQUlMRUQgPSAyLAo+PiArwqDCoMKgIEdVQ19TTEVFUF9TVEFURV9FTlRFUl9FTkdfUkVTRVRf RkFJTEVEID0gMywKPj4gK307Cj4+ICsKPj4gKwo+PiArLyogRW51bSB0byBkZXRlcm1pbmUgd2hh dCBtb2RlIHRoZSBzY2hlZHVsZXIgaXMgaW4gKi8KPj4gK2VudW0gZ3VjX3NjaGVkdWxlcl9tb2Rl IHsKPj4gK8KgwqDCoCBHVUNfU0NIRURVTEVSX01PREVfTk9STUFMLAo+PiArwqDCoMKgIEdVQ19T Q0hFRFVMRVJfTU9ERV9TVEFMTF9JTU1FRElBVEUsCj4+ICt9Owo+PiArCj4+ICsvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiogCj4+Cj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBM b2dnaW5nIAo+PiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsgCj4+ICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwo+PiArCj4KPiBtYXliZSBsb2cgaW50ZXJmYWNlIGNhbiBiZSBk ZWZpbmVkIGluIHNlcGFyYXRlIGZpbGUgPwoKSVBUQ0EKCj4KPj4gK2VudW0gZ3VjX2xvZ19idWZm ZXJfdHlwZSB7Cj4+ICvCoMKgwqAgR1VDX0xPR19CVUZGRVJfVFlQRV9JU1IgPSAweDAsCj4+ICvC oMKgwqAgR1VDX0xPR19CVUZGRVJfVFlQRV9EUEMgPSAweDEsCj4+ICvCoMKgwqAgR1VDX0xPR19C VUZGRVJfVFlQRV9DUkFTSCA9IDB4MiwKPj4gK8KgwqDCoCBHVUNfTE9HX0JVRkZFUl9UWVBFX01B WCA9IDB4MywKPj4gK307Cj4+ICsKPj4gK2VudW0gZ3VjX2xvZ192ZXJib3NpdHkgewo+PiArwqDC oMKgIEdVQ19MT0dfVkVSQk9TSVRZX0xPVyA9IDB4MCwKPj4gK8KgwqDCoCBHVUNfTE9HX1ZFUkJP U0lUWV9NRUQgPSAweDEsCj4+ICvCoMKgwqAgR1VDX0xPR19WRVJCT1NJVFlfSElHSCA9IDB4MiwK Pj4gK8KgwqDCoCBHVUNfTE9HX1ZFUkJPU0lUWV9VTFRSQSA9IDB4MywKPj4gK8KgwqDCoCBHVUNf TE9HX1ZFUkJPU0lUWV9NQVggPSAweDQsCj4+ICt9Owo+PiArCj4+ICsvKiBUaGlzIGVudW0gY29u dHJvbHMgdGhlIHR5cGUgb2YgbG9nZ2luZyBvdXRwdXQuIENhbiBiZSBjaGFuZ2VkIAo+PiBkeW5h bWljYWxseQo+PiArICogdXNpbmcgR1VDX0hPU1QyR1VDX0FDVElPTl9MT0dfVkVSQk9TSVRZX0xP R09VVFBVVF9TRUxFQ1QKPj4gKyAqLwo+PiArZW51bSBndWNfbG9nb3V0cHV0X3NlbGVjdGlvbiB7 Cj4+ICvCoMKgwqAgR1VDX0xPR09VVFBVVF9MT0dCVUZGRVJfT05MWSA9IDB4MCwKPj4gK8KgwqDC oCBHVUNfTE9HT1VUUFVUX05QS19PTkxZID0gMHgxLAo+PiArwqDCoMKgIEdVQ19MT0dPVVRQVVRf TE9HQlVGRkVSX0FORF9OUEsgPSAweDIsCj4+ICvCoMKgwqAgR1VDX0xPR09VVFBVVF9NQVgKPj4g K307Cj4+ICsKPj4gKy8qIEZpbGxlZCBieSBLTUQgZXhjZXB0IHZlcnNpb24gYW5kIG1hcmtlciB0 aGF0IGFyZSBpbml0aWFsaXplZCBieSAKPj4gdUtlcm5lbCAqLwo+PiArc3RydWN0IGd1Y19rbV9s b2dfYnVmZmVyX3N0YXRlIHsKPj4gK8KgwqDCoCAvKiBNYXJrcyB0aGUgYmVnaW5uaW5nIG9mIEJ1 ZmZlciBGbHVzaCAoc2V0IGJ5IHVLZXJuZWwgYXQgTG9nIAo+PiBCdWZmZXIKPj4gK8KgwqDCoMKg ICogSW5pdCkKPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgdTMyIG1hcmtlclsyXTsKPj4gKwo+ PiArwqDCoMKgIC8qIFRoaXMgaXMgdGhlIGxhc3QgYnl0ZSBvZmZzZXQgbG9jYXRpb24gdGhhdCB3 YXMgcmVhZCBieSBLTUQuIAo+PiBLTUQgd2lsbAo+PiArwqDCoMKgwqAgKiB3cml0ZSB0byB0aGlz IGFuZCB1S2VybmVsIHdpbGwgcmVhZCBpdAo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCB1MzIg bG9nX2J1Zl9yZF9wdHI7Cj4+ICsKPj4gK8KgwqDCoCAvKiBUaGlzIGlzIHRoZSBieXRlIG9mZnNl dCBsb2NhdGlvbiB0aGF0IHdpbGwgYmUgd3JpdHRlbiBieSAKPj4gdUtlcm5lbCAqLwo+PiArwqDC oMKgIHUzMiBsb2dfYnVmX3dyX3B0cjsKPj4gKwo+PiArwqDCoMKgIHUzMiBsb2dfYnVmX3NpemU7 Cj4+ICsKPj4gK8KgwqDCoCAvKiBUaGlzIGlzIHdyaXR0ZW4gYnkgdUtlcm5lbCB3aGVuIGl0IHNl ZXMgdGhlIGxvZyBidWZmZXIgCj4+IGJlY29taW5nIGhhbGYKPj4gK8KgwqDCoMKgICogZnVsbC4g S01EIHdyaXRlcyB0aGlzIHZhbHVlIGluIHRoZSBsb2cgZmlsZSB0byBhdm9pZCBzdGFsZSBkYXRh Cj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIHUzMiBzYW1wbGVkX2xvZ19idWZfd3JwdHI7Cj4+ ICsKPj4gK8KgwqDCoCB1bmlvbiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAvKiB1S2VybmVsIHNldHMgdGhpcyB3aGVuIGxvZyBidWZmZXIg aXMgaGFsZiBmdWxsIG9yCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB3aGVuIGEgZm9y Y2VkIGZsdXNoIGhhcyBiZWVuIHJlcXVlc3RlZCB0aHJvdWdoCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKiBIb3N0Mkd1Yy4gdUtlcm5lbCB3aWxsIHNlbmQgR3VjMkhvc3Qgb25seSBpZiB0 aGlzCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBiaXQgaXMgY2xlYXJlZC4gVGhpcyBp cyB0byBhdm9pZCB1bm5lY2Vzc2FyeQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaW50 ZXJydXB0cyBmcm9tIEd1Qwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBsb2dfYnVmX2ZsdXNoX3RvX2ZpbGUgOiAxOwo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIHVLZXJuZWwgaW5jcmVtZW50cyB0aGlzIHdoZW4g bG9nIGJ1ZmZlciBvdmVyZmxvd3MgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGJ1 ZmZlcl9mdWxsX2NvdW50IDogNDsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIg OiAyNzsKPj4gK8KgwqDCoMKgwqDCoMKgIH07Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgbG9nX2J1 Zl9mbGFnczsKPj4gK8KgwqDCoCB9Owo+PiArCj4+ICvCoMKgwqAgdTMyIHZlcnNpb247Cj4+ICt9 Owo+PiArCj4+ICsvKiBMb2dnaW5nIFBhcmFtZXRlcnMgc2VudCB2aWEgc3RydWN0IHNjaGVkX2Nv bnRyb2xfZGF0YS4gTWFpbnRhaW5lZCAKPj4gYXMgc2VwYXJhdGUKPj4gKyAqIHN0cnVjdHVyZSB0 byBhbGxvdyBkZWJ1ZyB0b29scyB0byBhY2Nlc3MgbG9ncyB3aXRob3V0IGNvbnRhY3RpbmcgCj4+ IEd1QyAoZm9yCj4+ICsgKiB3aGVuIEd1QyBpcyBzdHVjayBpbiBJU1IpCj4+ICsgKi8KPj4gK3N0 cnVjdCBndWNfbG9nX2luaXRfcGFyYW1zIHsKPj4gK8KgwqDCoCB1bmlvbiB7Cj4+ICvCoMKgwqDC oMKgwqDCoCBzdHJ1Y3Qgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgaXNfbG9nX2J1 ZmZlcl92YWxpZCA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFJhaXNlIEd1QzJI b3N0IGludGVycnVwdCB3aGVuIGJ1ZmZlciBpcyBoYWxmIGZ1bGwgKi8KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdTMyIG5vdGlmeV9vbl9sb2dfaGFsZl9mdWxsIDogMTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogMCA9 IFBhZ2VzLCAxID0gTWVnYWJ5dGVzICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBh bGxvY2F0ZWRfY291bnRfdW5pdHMgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBO by4gb2YgdW5pdHMgYWxsb2NhdGVkIC0xIChNQVggNCBVbml0cykgKi8KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdTMyIGNyYXNoX2R1bXBfbG9nX2FsbG9jYXRlZF9jb3VudCA6IDI7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE5vLiBvZiB1bml0cyBhbGxvY2F0ZWQgLTEgKE1BWCA4 IFVuaXRzKSAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZHBjX2xvZ19hbGxvY2F0 ZWRfY291bnQgOiAzOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBOby4gb2YgdW5pdHMg YWxsb2NhdGVkIC0xIChNQVggOCBVbml0cykgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dTMyIGlzcl9sb2dfYWxsb2NhdGVkX2NvdW50IDogMzsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyogUGFnZSBhbGlnbmVkIGFkZHJlc3MgZm9yIGxvZyBidWZmZXIgKi8KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIGxvZ19idWZmZXJfZ2Z4X2FkZHJlc3MgOiAyMDsKPj4gK8KgwqDC oMKgwqDCoMKgIH07Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgbG9nX2R3b3JkX3ZhbHVlOwo+PiAr wqDCoMKgIH07Cj4+ICt9Owo+PiArCj4+ICsvKiBQYXNzIGluZm8gZm9yIGRvaW5nIGEgSG9zdDJH dUMgcmVxdWVzdCAKPj4gKEdVQ19IT1NUMkdVQ19BQ1RJT05fRU5BQkxFX0xPR0dJTkcpCj4+ICsg KiBpbiBvcmRlciB0byBlbmFibGUvZGlzYWJsZSBHdUMgbG9nZ2luZwo+PiArICovCj4+ICtzdHJ1 Y3QgZ3VjX2xvZ19lbmFibGVfcGFyYW1zIHsKPj4gK8KgwqDCoCB1bmlvbiB7Cj4+ICvCoMKgwqDC oMKgwqDCoCBzdHJ1Y3Qgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbG9nZ2luZ19l bmFibGVkIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHByb2ZpbGVfbG9nZ2lu Z19lbmFibGVkIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGxvZ19vdXRwdXRf c2VsZWN0aW9uIDogMjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGxvZ192ZXJib3Np dHkgOiA0Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZGVmYXVsdF9sb2dnaW5nX2Vu YWJsZWQgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAyMzsKPj4gK8KgwqDC oMKgwqDCoMKgIH07Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgbG9nX2VuYWJsZV9kd29yZF92YWx1 ZTsKPj4gK8KgwqDCoCB9Owo+PiArCj4+ICt9Owo+PiArCj4+ICsvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiogCj4+Cj4+ICsgKioqKioqKioqKioqKiogU2NoZWQgQ29udHJvbCBEYXRhIGFuZCBBZGR0aW9u YWwgRGF0YSBTdHJ1Y3R1cmVzIAo+PiAqKioqKioqKioqKioqCj4+ICsgCj4+ICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwo+PiArCj4+ICsvKiBIb2xkcyB0aGUgaW5pdCB2YWx1ZXMgb2YgdmFyaW91cyBw YXJhbWV0ZXJzIHVzZWQgYnkgdGhlIHVLZXJuZWwgKi8KPj4gK3N0cnVjdCBndWNfc2NoZWRfY29u dHJvbF9kYXRhIHsKPgo+IGlzIHRoaXMgZ29vZCBuYW1lPyBJIGNhbiBzZWUgbG9nIHJlbGF0ZWQg cGFyYW1zIGJlbG93Li4uCgpBZ3JlZWQsIHRoZSBuYW1lIGNob2ljZSBpcyB0ZXJyaWJsZS4gSVBU Q0EuCgo+Cj4+ICvCoMKgwqAgLyogRHdvcmQgMCAqLwo+PiArwqDCoMKgIHVuaW9uIHsKPj4gK8Kg wqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE51bSBv ZiBjb250ZXh0cyBpbiBwb29sIGluIGJsb2NrcyBvZiAxNiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIEUuZy46IG51bV9jb250ZXh0c19pbl9wb29sMTZfYmxvY2tzID0gMSBpZiAxNgo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogY29udGV4dHMsIDY0IGlmIDEwMjQgY29udGV4 dHMgYWxsb2NhdGVkCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIG51bV9jb250ZXh0c19pbl9wb29sMTZfYmxvY2tzIDogMTI7Cj4+ ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogQWxpZ25lZCBiaXRzIFszMToxMl0gb2Yg dGhlIEdGWCBhZGRyZXNzIHdoZXJlIHRoZQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog cG9vbCBiZWdpbnMKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MzIgY29udGV4dF9wb29sX2dmeF9hZGRyZXNzX2JlZ2luIDogMjA7Cj4+ ICvCoMKgwqDCoMKgwqDCoCB9Owo+PiArwqDCoMKgIH07Cj4+ICsKPj4gK8KgwqDCoCAvKiBEd29y ZCAxICovCj4+ICvCoMKgwqAgc3RydWN0IGd1Y19sb2dfaW5pdF9wYXJhbXMgbG9nX2luaXRfcGFy YW1zOwo+Cj4gY2FuIHdlIGtlZXAgcmVsYXRlZCBkYXRhIHRvZ2V0aGVyID8gZHc0IGFsc28gaGFz IGxvZyBwYXJhbXMKCkkgYWxyZWFkeSBtYWRlIHRoaXMgc2FtZSBjb21tZW50IGluIHRoZSBwYXN0 LiBJdCBzaW1wbHkgaGFzbid0IGJlZW4gCmluY29ycG9yYXRlZCB5ZXQuCj4KPj4gKwo+PiArCj4+ ICvCoMKgwqAgLyogRHdvcmQgMiAqLwo+PiArwqDCoMKgIHVuaW9uIHsKPj4gK8KgwqDCoMKgwqDC oMKgIHN0cnVjdCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZCA6IDE7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB3YV9kaXNhYmxlX2R1bW15X2FsbF9lbmdp bmVfZmF1bHRfZml4IDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMzA7Cj4+ ICvCoMKgwqDCoMKgwqDCoCB9Owo+PiArwqDCoMKgwqDCoMKgwqAgdTMyIHdvcmthcm91bmRfZHc7 Cj4+ICvCoMKgwqAgfTsKPj4gKwo+PiArwqDCoMKgIC8qIER3b3JkIDMgKi8KPj4gK8KgwqDCoCB1 bmlvbiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgZnRyX2VuYWJsZV9wcmVlbXB0aW9uX2RhdGFfbG9nZ2luZyA6IDE7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmdHJfZW5hYmxlX2d1Y19wYXZwX2NvbnRyb2wgOiAxOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZnRyX2VuYWJsZV9ndWNfc2xwbSA6IDE7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmdHJfZW5hYmxlX2VuZ2luZV9yZXNldF9vbl9w cmVlbXB0X2ZhaWx1cmUgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZnRyX2xp dGVfcmVzdG9yZSA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmdHJfZHJpdmVy X2ZsciA6IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBmdXR1cmUgOiAxOwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZnRyX2VuYWJsZV9wc21pX2xvZ2dpbmcgOiAxOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAxOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 MzIgOiAxOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgOiAxOwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MzIgOiAxODsKPj4gK8KgwqDCoMKgwqDCoMKgIH07Cj4+ICvCoMKgwqDC oMKgwqDCoCB1MzIgZmVhdHVyZV9kd29yZDsKPj4gK8KgwqDCoCB9Owo+PiArCj4+ICvCoMKgwqAg LyogRHdvcmQgNCAqLwo+PiArwqDCoMKgIHVuaW9uIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVj dCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE9uZSBvZiBlbnVtIGd1Y19sb2dfdmVy Ym9zaXR5ICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBsb2dnaW5nX3ZlcmJvc2l0 eSA6IDQ7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE9uZSBvZiBlbnVtIGd1Y19sb2dv dXRwdXRfc2VsZWN0aW9uICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBsb2dfb3V0 cHV0X3NlbGVjdGlvbiA6IDI7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBsb2dnaW5n X2Rpc2FibGVkIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHByb2ZpbGVfbG9n Z2luZ19lbmFibGVkIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMjQ7Cj4+ ICvCoMKgwqDCoMKgwqDCoCB9Owo+PiArwqDCoMKgIH07Cj4+ICsKPj4gK8KgwqDCoCAvKiBEd29y ZCA1ICovCj4+ICvCoMKgwqAgdW5pb24gewo+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdTMyIGdmeF9hZGRyZXNzX2FkZGl0aW9uYWxfZGF0YV9zdHJ1Y3RzIDogMjE7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDEwOwo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8Kg wqDCoCB9Owo+PiArCj4+ICt9Owo+PiArCj4+ICsvKiBTdHJ1Y3R1cmUgdG8gcGFzcyBhZGRpdGlv bmFsIGluZm9ybWF0aW9uIGFuZCBzdHJ1Y3R1cmUgcG9pbnRlcnMgCj4+IHRvICovCj4+ICtzdHJ1 Y3QgZ3VjX2FkZGl0aW9uYWxfZGF0YV9zdHJ1Y3RzIHsKPj4gK8KgwqDCoCAvKiBHZnggcHRyIHRv IHN0cnVjdCBndWNfbW1pb19zYXZlX3Jlc3RvcmVfbGlzdCAocGVyc2lzdGVudCkgKi8KPj4gK8Kg wqDCoCB1MzIgZ2Z4X2FkZHJlc3NfbW1pb19zYXZlX3Jlc3RvcmVfbGlzdDsKPj4gKwo+PiArwqDC oMKgIC8qIEJ1ZmZlciBvZiBzaXplIEdVQ19NQVhfR1VDX1MzX1NBVkVfU1BBQ0VfUEFHRVMgKHBl cnNpc3RlbnQpICovCj4+ICvCoMKgwqAgdTMyIGdmeF9wdHJfdG9fZ3Vjc19zdGF0ZV9zYXZlX2J1 ZmZlcjsKPj4gKwo+PiArwqDCoMKgIC8qIEdmeCBhZGRyZXNzZXMgb2Ygc3RydWN0IGd1Y19zY2hl ZHVsaW5nX3BvbGljaWVzIAo+PiAobm9uLXBlcnNpc3RlbnQsIG1heQo+PiArwqDCoMKgwqAgKiBi ZSByZWxlYXNlZCBhZnRlciBpbml0aWFsIGxvYWQpLCBOVUxMIG9yIHZhbGlkID0gMCBmbGFnIHZh bHVlIAo+PiB3aWxsCj4+ICvCoMKgwqDCoCAqIGNhdXNlIGRlZmF1bHQgcG9saWNpZXMgdG8gYmUg bG9hZGVkCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIHUzMiBnZnhfc2NoZWR1bGVyX3BvbGlj aWVzOwo+PiArCj4+ICvCoMKgwqAgLyogR2Z4IGFkZHJlc3Mgb2Ygc3RydWN0IGd1Y19ndF9zeXN0 ZW1faW5mbyAqLwo+PiArwqDCoMKgIHUzMiBndF9zeXN0ZW1faW5mbzsKPj4gKwo+PiArwqDCoMKg IHUzMiBmdXR1cmU7Cj4+ICsKPj4gK8KgwqDCoCB1MzIgZ2Z4X3B0cl90b19wc21pX2xvZ19jb250 cm9sX2RhdGE7Cj4+ICsKPj4gK8KgwqDCoCAvKiBMUkNBIGFkZHJlc3NlcyBhbmQgc2l6ZXMgb2Yg Z29sZGVuIGNvbnRleHRzIChwZXJzaXN0ZW50KSAqLwo+PiArwqDCoMKgIHUzMiBnZnhfZ29sZGVu X2NvbnRleHRfbHJjYVtHVUNfTUFYX1NDSEVEVUxBQkxFX0VOR0lORV9DTEFTU107Cj4+ICvCoMKg wqAgdTMyIAo+PiBnb2xkZW5fY29udGV4dF9lbmdfc3RhdGVfc2l6ZV9pbl9ieXRlc1tHVUNfTUFY X1NDSEVEVUxBQkxFX0VOR0lORV9DTEFTU107Cj4KPiBtYXliZSB0aGlzIGlzIGNvdWxkIGJlIG1v cmUgZnV0dXJlIGZyaWVuZGx5IGlmIHdlIGRlZmluZSBpdCBhcyB0aGUgbGFzdAo+IG1lbWJlcjoK Pgo+IMKgwqDCoMKgc3RydWN0IHsKPiDCoMKgwqDCoMKgwqDCoCB1MzIgbHJjYV9hZGRyczsKPiDC oMKgwqDCoMKgwqDCoCB1MzIgZW5nX3N0YXRlX3NpemVfaW5fYnl0ZXM7Cj4gwqDCoMKgwqB9IGdm eF9nb2xkZW5fY29udGV4dFtHVUNfTUFYX1NDSEVEVUxBQkxFX0VOR0lORV9DTEFTU107CgpJUFRD QQoKPgo+PiArCj4+ICvCoMKgwqAgdTMyIHJlc2VydmVkWzE2XTsKPj4gK307Cj4+ICsKPj4gKy8q IE1heCBudW1iZXIgb2YgbW1pbyBwZXIgZW5naW5lIGNsYXNzIHBlciBlbmdpbmUgaW5zdGFuY2Ug Ki8KPj4gKyNkZWZpbmUgR1VDX01BWF9NTUlPX1BFUl9TRVTCoMKgwqAgNjQKPj4gKwo+PiArc3Ry dWN0IGd1Y19tbWlvX2ZsYWdzIHsKPj4gK8KgwqDCoCB1bmlvbiB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBzdHJ1Y3Qgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbWFza2VkIDogMTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIDogMzE7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Owo+ PiArwqDCoMKgwqDCoMKgwqAgdTMyIGZsYWdzX3ZhbHVlOwo+PiArwqDCoMKgIH07Cj4+ICt9Owo+ PiArCj4+ICtzdHJ1Y3QgZ3VjX21taW8gewo+PiArwqDCoMKgIHUzMiBvZmZzZXQ7Cj4+ICvCoMKg wqAgdTMyIHZhbHVlOwo+PiArwqDCoMKgIHN0cnVjdCBndWNfbW1pb19mbGFncyBmbGFnczsKPj4g K307Cj4+ICsKPj4gK3N0cnVjdCBndWNfbW1pb19zZXQgewo+PiArwqDCoMKgIC8qIEFycmF5IG9m IG1taW8gdG8gYmUgc2F2ZWQvcmVzdG9yZWQgKi8KPj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX21taW8g bW1pb1tHVUNfTUFYX01NSU9fUEVSX1NFVF07Cj4+ICvCoMKgwqAgLyogU2V0IGFmdGVyIHNhdmlu ZyBtbWlvIHZhbHVlLCBjbGVhcmVkIGFmdGVyIHJlc3RvcmUuICovCj4+ICvCoMKgwqAgdTMyIG1t aW9fdmFsdWVzX3ZhbGlkOwo+PiArwqDCoMKgwqAgLyogTnVtYmVyIG9mIG1taW8gaW4gdGhlIHNl dCAqLwo+PiArwqDCoMKgIHUzMiBudW1iZXJfb2ZfbW1pbzsKPj4gK307Cj4+ICsKPj4gK3N0cnVj dCBndWNfbW1pb19zYXZlX3Jlc3RvcmVfbGlzdCB7Cj4+ICvCoMKgwqAgc3RydWN0IGd1Y19tbWlv X3NldAo+PiArwqDCoMKgwqDCoMKgwqAgbm9kZV9tbWlvX3NldFtHVUNfTUFYX1NDSEVEVUxBQkxF X0VOR0lORV9DTEFTU10KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFtHVUNf TUFYX0VOR0lORV9JTlNUQU5DRV9QRVJfQ0xBU1NdOwo+PiArwqDCoMKgIHUzMiByZXNlcnZlZFs5 OF07Cj4+ICt9Owo+PiArCj4+ICsvKiBQb2xpY3kgZmxhZ3MgdG8gY29udHJvbCBzY2hlZHVsaW5n IGRlY2lzaW9ucyAqLwo+PiArc3RydWN0IGd1Y19zY2hlZHVsaW5nX3BvbGljeV9mbGFncyB7Cj4+ ICvCoMKgwqAgdW5pb24gewo+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLyogU2hvdWxkIHdlIHJlc2V0IGVuZ2luZSB3aGVuIHByZWVtcHRpb24g ZmFpbGVkIHdpdGhpbgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaXRzIHRpbWUgcXVh bnR1bQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiByZXNldF9lbmdpbmVfdXBvbl9wcmVlbXB0X2ZhaWx1cmUgOiAxOwo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFNob3VsZCB3ZSBwcmVlbXB0IHRvIGlkbGUgdW5j b25kaXRpb25hbGx5IGZvciB0aGUKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGV4ZWN1 dGlvbiBxdWFudHVtIGV4cGlyeQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBwcmVlbXB0X3RvX2lkbGVfb25fcXVhbnR1bV9leHBp cnkgOiAxOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiA6IDMwOwo+PiArwqDC oMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBwb2xpY3lfZHdvcmQ7Cj4+ICvC oMKgwqAgfTsKPj4gK307Cj4+ICsKPj4gKy8qIFBlci1lbmdpbmUgY2xhc3MgYW5kIHBlci1wcmlv cml0eSBzdHJ1Y3QgZm9yIHNjaGVkdWxpbmcgcG9saWN5wqAgKi8KPj4gK3N0cnVjdCBndWNfc2No ZWR1bGluZ19wb2xpY3kgewo+PiArwqDCoMKgIC8qIFRpbWUgZm9yIG9uZSB3b3JrbG9hZCB0byBl eGVjdXRlIChtaWNybyBzZWNvbmRzKSAqLwo+PiArwqDCoMKgIHUzMiBleGVjdXRpb25fcXVhbnR1 bTsKPj4gKwo+PiArwqDCoMKgIC8qIFRpbWUgdG8gd2FpdCBmb3IgYSBwcmVlbXB0aW9uIHJlcXVl c3QgdG8gY29tcGxldGVkIGJlZm9yZSAKPj4gaXNzdWluZyBhCj4+ICvCoMKgwqDCoCAqIHJlc2V0 IChtaWNybyBzZWNvbmRzKQo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCB1MzIgd2FpdF9mb3Jf cHJlZW1wdGlvbl9jb21wbGV0aW9uX3RpbWU7Cj4+ICsKPj4gK8KgwqDCoCAvKiBIb3cgbXVjaCB0 aW1lIHRvIGFsbG93IHRvIHJ1biBhZnRlciB0aGUgZmlyc3QgZmF1bHQgaXMgb2JzZXJ2ZWQuCj4+ ICvCoMKgwqDCoCAqIFRoZW4gcHJlZW1wdCBhZnRlcndhcmRzIChtaWNybyBzZWNvbmRzKQo+PiAr wqDCoMKgwqAgKi8KPj4gK8KgwqDCoCB1MzIgcXVhbnR1bV91cG9uX2ZpcnN0X2ZhdWx0X3RpbWU7 Cj4+ICsKPj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX3NjaGVkdWxpbmdfcG9saWN5X2ZsYWdzIHBvbGlj eV9mbGFnczsKPj4gKwo+PiArwqDCoMKgIHUzMiByZXNlcnZlZFs4XTsKPj4gK307Cj4+ICsKPj4g Ky8qIEtNRCBzaG91bGQgcG9wdWxhdGUgdGhpcyBzdHJ1Y3QgYW5kIHBhc3MgaW5mbyB0aHJvdWdo IHN0cnVjdAo+PiArICogZ3VjX2FkZGl0aW9uYWxfZGF0YV9zdHJ1Y3RzLSBJZiBLTUQgZG9lcyBu b3Qgc2V0IHRoZSBzY2hlZHVsZXIgCj4+IHBvbGljeSwKPj4gKyAqIHVLZXJuZWwgd2lsbCBmYWxs IGJhY2sgdG8gZGVmYXVsdCBzY2hlZHVsaW5nIHBvbGljaWVzCj4+ICsgKi8KPj4gK3N0cnVjdCBn dWNfc2NoZWR1bGluZ19wb2xpY2llcyB7Cj4+ICvCoMKgwqAgc3RydWN0IGd1Y19zY2hlZHVsaW5n X3BvbGljeQo+PiArIHBlcl9zdWJtaXRfcXVldWVfcG9saWN5W0dVQ19DT05URVhUX1BSSU9SSVRZ X0FCU09MVVRFX01BWF9DT1VOVF0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFtHVUNfTUFYX1NDSEVEVUxBQkxFX0VOR0lORV9DTEFTU107Cj4+ICsKPj4g K8KgwqDCoCAvKiBTdWJtaXNzaW9uIHF1ZXVlIGRlcHRoLCBtaW4gMiwgbWF4IDguIElmIG91dHNp ZGUgdGhlIHZhbGlkIAo+PiByYW5nZSwKPj4gK8KgwqDCoMKgICogZGVmYXVsdCB2YWx1ZSBpcyB1 c2VkCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIHUzMiBzdWJtaXNzaW9uX3F1ZXVlX2RlcHRo W0dVQ19NQVhfU0NIRURVTEFCTEVfRU5HSU5FX0NMQVNTXTsKPgo+IGFzIGl0IGxvb2tzIHRoYXQg bW9zdCBvZiB0aGUgYXJyYXlzIGFyZSBpbmRleGVkIGJ5Cj4gR1VDX01BWF9TQ0hFRFVMQUJMRV9F TkdJTkVfQ0xBU1MgdGhlbiBtYXliZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzCj4gc2hvdWxkIGJlIGRl c2lnbmVkIGFyb3VuZCBlbmdpbmUgbGlrZToKPgo+IMKgwqDCoMKgc3RydWN0IGd1Y19lbmdpbmUg ewo+IMKgwqDCoMKgwqDCoMKgIHU4IGNsYXNzOwo+IMKgwqDCoMKgwqDCoMKgIHU4IGluc3RhbmNl Owo+Cj4gwqDCoMKgwqDCoMKgwqAgdTMyIHN1Ym1pc3Npb25fcXVldWVfZGVwdGg7Cj4gwqDCoMKg wqDCoMKgwqAgc3RydWN0IGd1Y19zY2hlZHVsaW5nX3BvbGljeQo+IHBvbGljeVtHVUNfQ09OVEVY VF9QUklPUklUWV9BQlNPTFVURV9NQVhfQ09VTlRdOwo+IMKgwqDCoMKgfTsKCklQVENBCgo+PiAr Cj4+ICvCoMKgwqAgLyogSG93IG11Y2ggdGltZSB0byBhbGxvdyBiZWZvcmUgRFBDIHByb2Nlc3Np bmcgaXMgY2FsbGVkIGJhY2sgdmlhCj4+ICvCoMKgwqDCoCAqIGludGVycnVwdCAodG8gcHJldmVu dCBEUEMgcXVldWUgZHJhaW4gc3RhcnZpbmcpIElOIG1pY3JvIAo+PiBzZWNvbmRzLgo+PiArwqDC oMKgwqAgKiBUeXBpY2FsbHkgaW4gdGhlIDEwMDBzIChleGFtcGxlIG9ubHksIG5vdCBncmFudWxh cml0eSkKPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgdTMyIGRwY19wcm9tb3RlX3RpbWU7Cj4+ ICsKPj4gK8KgwqDCoCAvKiBNdXN0IGJlIHNldCB0byB0YWtlIHRoZXNlIG5ldyB2YWx1ZXMgKi8K Pj4gK8KgwqDCoCB1MzIgaXNfdmFsaWQ7Cj4+ICsKPj4gK8KgwqDCoCAvKiBOdW1iZXIgb2YgV0lz IHRvIHByb2Nlc3MgcGVyIGNhbGwgdG8gcHJvY2VzcyBzaW5nbGUuIFByb2Nlc3MgCj4+IHNpbmds ZQo+PiArwqDCoMKgwqAgKiBjb3VsZCBoYXZlIGEgbGFyZ2UgTWF4IFRhaWwgdmFsdWUgd2hpY2gg bWF5IGtlZXAgQ1MgaWRsZS4gCj4+IFByb2Nlc3MKPj4gK8KgwqDCoMKgICogbWF4X251bV93b3Jr X2l0ZW1zX3Blcl9kcGNfY2FsbCBXSXMgYW5kIHRyeSBmYXN0IHNjaGVkdWxlCj4+ICvCoMKgwqDC oCAqLwo+PiArwqDCoMKgIHUzMiBtYXhfbnVtX3dvcmtfaXRlbXNfcGVyX2RwY19jYWxsOwo+PiAr Cj4+ICvCoMKgwqAgdTMyIHJlc2VydmVkWzRdOwo+PiArfTsKPj4gKwo+PiArI3ByYWdtYSBwYWNr KCkKPj4gKwo+PiArI2VuZGlmCj4KPgo+IFRoYW5rcywKPiBNaWNoYWwKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=