Re: [f2fs-dev] [PATCH v5] f2fs: support dynamic reserve/release for device aliasing
Daeho Jeong <[email protected]> Thu, 30 Jul 2026 07:50:56 -0700
| Newsgroups | net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CACOAw_zKPPhFBo9KSt06pxM-0_40-FRegkEpiRKi+8VvMTQ6Rg@mail.gmail.com> |
T24gV2VkLCBKdWwgMjksIDIwMjYgYXQgMTE6MzLigK9QTSBDaGFvIFl1IDxjaGFvQGtlcm5lbC5v cmc+IHdyb3RlOgo+Cj4gT24gNy8zMC8yNiAwMDo0MywgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gPiBP biBXZWQsIEp1bCAyOSwgMjAyNiBhdCAyOjA54oCvQU0gQ2hhbyBZdSA8Y2hhb0BrZXJuZWwub3Jn PiB3cm90ZToKPiA+Pgo+ID4+IE9uIDcvMjQvMjYgMDQ6MjAsIERhZWhvIEplb25nIHdyb3RlOgo+ ID4+PiBGcm9tOiBEYWVobyBKZW9uZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+ID4+Pgo+ID4+ PiBUaGlzIHBhdGNoIGFkZHMgYSBkeW5hbWljIG1hbmFnZW1lbnQgZmVhdHVyZSB0byB0aGUgZXhp c3RpbmcgZGV2aWNlCj4gPj4+IGFsaWFzaW5nIGZ1bmN0aW9uYWxpdHkuIEl0IGFsbG93cyB1c2Vy cyB0byBkeW5hbWljYWxseSByZXNlcnZlIG9yCj4gPj4+IHJlbGVhc2Ugc3BlY2lmaWMgZGV2aWNl cyBmcm9tIHRoZSBmaWxlc3lzdGVtJ3MgZnJlZSBwb29sIGF0IHJ1bnRpbWUKPiA+Pj4gdGhyb3Vn aCBuZXcgaW9jdGxzLgo+ID4+Pgo+ID4+PiBUbyBzdXBwb3J0IHRoaXMsIHRocmVlIG5ldyBpb2N0 bHMgYXJlIGludHJvZHVjZWQ6Cj4gPj4+IC0gRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVM6IFRo aXMgcmVjbGFpbXMgdGhlIHNwYWNlIG9jY3VwaWVkIGJ5IGEKPiA+Pj4gICBkZXZpY2UgYWxpYXNp bmcgZmlsZS4gSXQgZmlyc3QgcGVyZm9ybXMgYSBjYXBhY2l0eSBjaGVjaywgcmVzZXRzIEdDCj4g Pj4+ICAgdmljdGltIGluZm9ybWF0aW9uIGZvciB0aGUgdGFyZ2V0IHJhbmdlLCBtYXJrcyB0aGUg c2VnbWVudHMgYXMgaW4tdXNlCj4gPj4+ICAgdG8gcHJldmVudCBuZXcgYWxsb2NhdGlvbnMsIGFu ZCB0aGVuIHRyaWdnZXJzIEdDIHRvIG1pZ3JhdGUgZXhpc3RpbmcKPiA+Pj4gICB2YWxpZCBkYXRh IG91dCBvZiB0aGUgcmFuZ2UuIEZpbmFsbHksIGl0IHJlc2VydmVzIHRoZXNlIGJsb2NrcyBpbiB0 aGUKPiA+Pj4gICBTSVQgdG8gZWZmZWN0aXZlbHkgZXhjbHVkZSB0aGUgZGV2aWNlIGZyb20gdGhl IHVzYWJsZSBjYXBhY2l0eS4KPiA+Pj4KPiA+Pj4gLSBGMkZTX0lPQ19SRUxFQVNFX0RFVl9BTElB UzogVGhpcyByZWxlYXNlcyB0aGUgcmVzZXJ2ZWQgc3BhY2Ugb2YgYQo+ID4+PiAgIHByZXZpb3Vz bHkgcmVzZXJ2ZWQgZGV2aWNlIGFsaWFzaW5nIGZpbGUuIEl0IHRydW5jYXRlcyB0aGUgYmxvY2tz Cj4gPj4+ICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlLCB3aGljaCBtYWtlcyB0aGVtIGF2YWls YWJsZSBmb3IgZ2VuZXJhbAo+ID4+PiAgIGZpbGVzeXN0ZW0gYWxsb2NhdGlvbiBhZ2Fpbi4KPiA+ Pj4KPiA+Pj4gLSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX1NUQVRVUzogVGhpcyByZXRyaWV2ZXMg dGhlIGN1cnJlbnQgYWxpYXNpbmcKPiA+Pj4gICBzdGF0dXMgb2YgYSBkZXZpY2UgYWxpYXNpbmcg ZmlsZSwgcmV0dXJuaW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMKPiA+Pj4gICByZWxlYXNlZCAoaW5h Y3RpdmUgYWxpYXMpIG9yIHJlc2VydmVkIChhY3RpdmUgYWxpYXMsIHdpdGggYmxvY2tzCj4gPj4+ ICAgZnVsbHkgYWxsb2NhdGVkIG9uIHRoZSBkZXZpY2UpLgo+ID4+Pgo+ID4+PiBTaWduZWQtb2Zm LWJ5OiBEYWVobyBKZW9uZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+ID4+PiAtLS0KPiA+Pj4g djU6IHByZXZlbnRlZCBuZXcgc2VnbWVudCBhbGxvY2F0aW9uIG9uIGRldmljZXMgdW5kZXJnb2lu ZyByZXNlcnZhdGlvbgo+ID4+PiAgICAgb3Igd2l0aCBhY3RpdmUgYWxpYXNlcy4KPiA+Pj4gICAg IHVzZWQgaW4tbWVtb3J5IHN0cnVjdCB0byByZXNlcnZlIGJsb2NrcyBmb3IgZGV2aWNlIGFsaWFz aW5nLgo+ID4+PiAgICAgY2xlYXJlZCBwcmVmcmVlIChQUkUpIGRpcnR5IHNlZ21lbnQgYml0bWFw Lgo+ID4+PiB2NDogcmVuYW1lZCBpbnRlcmZhY2VzLgo+ID4+PiAgICAgZml4ZWQgcmFjZSBjb25k aXRpb25zIGJldHdlZW4gY2hlY2twb2ludD1kaXNhYmxlIG1vdW50IGFuZCBpb2N0bHMuCj4gPj4+ ICAgICByZWZhY3RvcmVkIHNlZ21lbnQgcmVzZXJ2YXRpb24gcGFydC4KPiA+Pj4gICAgIG1vZGlm aWVkIGxvY2sgdXNhZ2UuCj4gPj4+IHYzOiBhZGQgQ0FQX1NZU19BRE1JTiBhbmQgY2hlY2twb2lu dD1kaXNhYmxlZCBjaGVjay4KPiA+Pj4gICAgIHJlbW92ZSBhIGYyZnMgc3BlY2lmaWMgZmxhZyBl eHBvc2VkIHdpdGggZ2V0ZmxhZ3MuCj4gPj4+IHYyOiBwcmV2ZW50IG9wZXJhdGlvbnMgZHVyaW5n IGNoZWNrcG9pbnQ9ZGlzYWJsZWQuCj4gPj4+IC0tLQo+ID4+PiAtLS0KPiA+Pj4gIERvY3VtZW50 YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QgfCAgMzUgKysrKwo+ID4+PiAgZnMvZjJmcy9mMmZz LmggICAgICAgICAgICAgICAgICAgICB8ICAxMCArLQo+ID4+PiAgZnMvZjJmcy9maWxlLmMgICAg ICAgICAgICAgICAgICAgICB8IDI3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4+ PiAgZnMvZjJmcy9nYy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCArKy0tCj4gPj4+ICBm cy9mMmZzL25hbWVpLmMgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCj4gPj4+ICBmcy9mMmZz L3NlZ21lbnQuYyAgICAgICAgICAgICAgICAgIHwgMTc0ICsrKysrKysrKysrKystLS0tLQo+ID4+ PiAgZnMvZjJmcy9zZWdtZW50LmggICAgICAgICAgICAgICAgICB8ICAyMiArKysKPiA+Pj4gIGZz L2YyZnMvc3VwZXIuYyAgICAgICAgICAgICAgICAgICAgfCAgMzUgKysrKwo+ID4+PiAgaW5jbHVk ZS91YXBpL2xpbnV4L2YyZnMuaCAgICAgICAgICB8ICAgNyArCj4gPj4+ICA5IGZpbGVzIGNoYW5n ZWQsIDU0MiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKPiA+Pj4KPiA+Pj4gZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QgYi9Eb2N1bWVudGF0aW9u L2ZpbGVzeXN0ZW1zL2YyZnMucnN0Cj4gPj4+IGluZGV4IDhjNGExNGFlNDQ0Zi4uMWE1ZmQ0YWZl NjA5IDEwMDY0NAo+ID4+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0 Cj4gPj4+ICsrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QKPiA+Pj4gQEAg LTEwNDUsNiArMTA0NSw0MSBAQCBTbywgdGhlIGtleSBpZGVhIGlzLCB1c2VyIGNhbiBkbyBhbnkg ZmlsZSBvcGVyYXRpb25zIG9uIC9kZXYvdmRjLCBhbmQKPiA+Pj4gIHJlY2xhaW0gdGhlIHNwYWNl IGFmdGVyIHRoZSB1c2UsIHdoaWxlIHRoZSBzcGFjZSBpcyBjb3VudGVkIGFzIC9kYXRhLgo+ID4+ PiAgVGhhdCBkb2Vzbid0IHJlcXVpcmUgbW9kaWZ5aW5nIHBhcnRpdGlvbiBzaXplIGFuZCBmaWxl c3lzdGVtIGZvcm1hdC4KPiA+Pj4KPiA+Pj4gK0R5bmFtaWMgRGV2aWNlIEFsaWFzaW5nIE1hbmFn ZW1lbnQKPiA+Pj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Pj4gKwo+ ID4+PiArSW4gYWRkaXRpb24gdG8gc3RhdGljIGRldmljZSBhbGlhc2luZyBieSBkZWxldGluZyB0 aGUgYWxpYXNpbmcgZmlsZSwgRjJGUwo+ID4+PiArc3VwcG9ydHMgZHluYW1pYyBtYW5hZ2VtZW50 IG9mIGRldmljZSBhbGlhc2luZy4gVGhpcyBtZWNoYW5pc20gYWxsb3dzIHRoZSBzeXN0ZW0KPiA+ Pj4gK3RvIGR5bmFtaWNhbGx5IHRyYW5zaXRpb24gcGFydGl0aW9uIG93bmVyc2hpcCBiZXR3ZWVu IEYyRlMgdXNlcmRhdGEgYW5kIGV4dGVybmFsCj4gPj4+ICtlbnRpdGllcyAoZS5nLiwgelJBTSwg cmF3IHBhcnRpdGlvbikgYmFzZWQgb24gc3lzdGVtIHJlcXVpcmVtZW50cyB3aXRob3V0Cj4gPj4+ ICtkZWxldGluZyB0aGUgbWFzdGVyIGFsaWFzaW5nIGZpbGUgb3IgcmVxdWlyaW5nIHVubW91bnQv cmVtb3VudC4KPiA+Pj4gKwo+ID4+PiArVGhlIG1hc3RlciBhbGlhc2luZyBmaWxlIGlzIGNyZWF0 ZWQgZHVyaW5nIHRoZSBpbml0aWFsIGZvcm1hdCBvZiB0aGUgZmlsZSBzeXN0ZW0KPiA+Pj4gK2Fu ZCByZW1haW5zIGFzIGEgcGVyc2lzdGVudCBjb250cm9sIGVudGl0eSAoaW9jdGwgZ2F0ZXdheSkg aW4gdGhlIHJvb3QgZGlyZWN0b3J5Lgo+ID4+PiArCj4gPj4+ICstIFBhcnRpdGlvbiBSZXNlcnZh dGlvbiAoSW4tc2VydmljZSB0byBBbGlhc2VkKQo+ID4+PiArICBXaGVuIGEgc3BlY2lmaWMgcGFy dGl0aW9uIG5lZWRzIHRvIGJlIGRlZGljYXRlZCB0byBleHRlcm5hbCBzZXJ2aWNlcyAoZS5nLiwg elJBTSksCj4gPj4+ICsgIGEgdXNlciBjYW4gcmVzZXJ2ZSB0aGUgZGV2aWNlIGFsaWFzIHJhbmdl IHZpYSBpb2N0bC4gVGhlIGtlcm5lbCByZXNldHMgR0MgdmljdGltCj4gPj4+ICsgIGluZm9ybWF0 aW9uIGZvciB0aGUgdGFyZ2V0IHJhbmdlLCBtYXJrcyBzZWdtZW50cyBhcyBpbi11c2UgdG8gcHJl dmVudCBuZXcKPiA+Pj4gKyAgYWxsb2NhdGlvbnMsIGFuZCB0cmlnZ2VycyBmb3JjZWQgR0MgdG8g bWlncmF0ZSBleGlzdGluZyB2YWxpZCBkYXRhIG91dCBvZiB0aGUKPiA+Pj4gKyAgcmFuZ2UuIEZp bmFsbHksIGl0IHJlc2VydmVzIHRoZXNlIGJsb2NrcyBpbiB0aGUgU0lUIHRvIGVmZmVjdGl2ZWx5 IGV4Y2x1ZGUgdGhlCj4gPj4+ICsgIGRldmljZSBmcm9tIHRoZSB1c2FibGUgY2FwYWNpdHkuCj4g Pj4+ICsKPiA+Pj4gKy0gUGFydGl0aW9uIFJlbGVhc2UgKEFsaWFzZWQgdG8gSW4tc2VydmljZSkK PiA+Pj4gKyAgV2hlbiBleHRlcm5hbCB1c2FnZSBjb25jbHVkZXMsIHRoZSBzcGFjZSBpcyByZWNs YWltZWQgbm90IGJ5IGRlbGV0aW5nIHRoZSBmaWxlLAo+ID4+PiArICBidXQgdGhyb3VnaCB0aGUg cmVsZWFzZSBpb2N0bC4gVGhlIGtlcm5lbCB0cnVuY2F0ZXMgYmxvY2tzIGFzc29jaWF0ZWQgd2l0 aAo+ID4+PiArICB0aGUgZmlsZSwgcmVsZWFzaW5nIHRoZW0gYmFjayB0byBnZW5lcmFsIGZpbGVz eXN0ZW0gYWxsb2NhdGlvbi4KPiA+Pj4gKwo+ID4+PiArLi4gY29kZS1ibG9jazo6Cj4gPj4+ICsK PiA+Pj4gKyAgICMgZjJmc19pbyBkZXZfYWxpYXMgcmVsZWFzZSAvbW50L2YyZnMvdmRjLmZpbGUK PiA+Pj4gKyAgICMgZGYgLWgKPiA+Pj4gKyAgIC9kZXYvdmRiICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDY0RyAgNzUzTSAgIDY0RyAgIDIlIC9tbnQvZjJmcwo+ID4+PiArCj4gPj4+ICsgICAj IGYyZnNfaW8gZGV2X2FsaWFzIHJlc2VydmUgL21udC9mMmZzL3ZkYy5maWxlCj4gPj4+ICsgICAj IGRmIC1oCj4gPj4+ICsgICAvZGV2L3ZkYiAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NEcg ICAzM0cgICAzMkcgIDUyJSAvbW50L2YyZnMKPiA+Pj4gKwo+ID4+PiAgUGVyLWZpbGUgUmVhZC1P bmx5IExhcmdlIEZvbGlvIFN1cHBvcnQKPiA+Pj4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2Zz L2YyZnMvZjJmcy5oCj4gPj4+IGluZGV4IGYxNzc0ZDRlMThkMi4uNzRjMmQ1OGNlMjcxIDEwMDY0 NAo+ID4+PiAtLS0gYS9mcy9mMmZzL2YyZnMuaAo+ID4+PiArKysgYi9mcy9mMmZzL2YyZnMuaAo+ ID4+PiBAQCAtMTQwNCw2ICsxNDA0LDggQEAgc3RydWN0IGYyZnNfZGV2X2luZm8gewo+ID4+PiAg ICAgICB1bnNpZ25lZCBpbnQgdG90YWxfc2VnbWVudHM7Cj4gPj4+ICAgICAgIGJsb2NrX3Qgc3Rh cnRfYmxrOwo+ID4+PiAgICAgICBibG9ja190IGVuZF9ibGs7Cj4gPj4+ICsgICAgIGJvb2wgaGFz X2FsaWFzOwo+ID4+PiArICAgICBib29sIGlzX3Jlc2VydmluZzsKPiA+Pj4gICNpZmRlZiBDT05G SUdfQkxLX0RFVl9aT05FRAo+ID4+PiAgICAgICB1bnNpZ25lZCBpbnQgbnJfYmxrejsgICAgICAg ICAgIC8qIFRvdGFsIG51bWJlciBvZiB6b25lcyAqLwo+ID4+PiAgICAgICB1bnNpZ25lZCBsb25n ICpibGt6X3NlcTsgICAgICAgIC8qIEJpdG1hcCBpbmRpY2F0aW5nIHNlcXVlbnRpYWwgem9uZXMg Ki8KPiA+Pj4gQEAgLTE4NTcsNiArMTg1OSw3IEBAIHN0cnVjdCBmMmZzX3NiX2luZm8gewo+ID4+ PiAgICAgICBibG9ja190IGxhc3RfdmFsaWRfYmxvY2tfY291bnQ7ICAgICAgICAgLyogZm9yIHJl Y292ZXJ5ICovCj4gPj4+ICAgICAgIGJsb2NrX3QgcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgICAg ICAgICAvKiBjb25maWd1cmFibGUgcmVzZXJ2ZWQgYmxvY2tzICovCj4gPj4+ICAgICAgIGJsb2Nr X3QgY3VycmVudF9yZXNlcnZlZF9ibG9ja3M7ICAgICAgICAvKiBjdXJyZW50IHJlc2VydmVkIGJs b2NrcyAqLwo+ID4+PiArICAgICBibG9ja190IGFsaWFzX3Jlc2VydmVkX2Jsb2NrczsgICAgICAg ICAgLyogcmVzZXJ2ZWQgYmxvY2tzIGZvciBkZXZpY2UgYWxpYXMgKi8KPiA+Pj4KPiA+Pj4gICAg ICAgLyogQWRkaXRpb25hbCB0cmFja2luZyBmb3Igbm8gY2hlY2twb2ludCBtb2RlICovCj4gPj4+ ICAgICAgIGJsb2NrX3QgdW51c2FibGVfYmxvY2tfY291bnQ7ICAgICAgICAgICAvKiAjIG9mIGJs b2NrcyBzYXZlZCBieSBsYXN0IGNwICovCj4gPj4+IEBAIC0yNTU5LDcgKzI1NjIsOCBAQCBzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50KHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4gICAgICAgYmxvY2tfdCBhdmFpbF91c2VyX2Jsb2NrX2Nv dW50Owo+ID4+Pgo+ID4+PiAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50ID0gc2JpLT51c2Vy X2Jsb2NrX2NvdW50IC0KPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzYmktPmN1cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzOwo+ID4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNiaS0+Y3VycmVudF9yZXNlcnZlZF9ibG9ja3MgLQo+ID4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRf YmxvY2tzOwo+ID4+Pgo+ID4+PiAgICAgICBpZiAodGVzdF9vcHQoc2JpLCBSRVNFUlZFX1JPT1Qp ICYmICFfX2FsbG93X3Jlc2VydmVkX3Jvb3Qoc2JpLCBpbm9kZSwgY2FwKSkKPiA+Pj4gICAgICAg ICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50IC09IEYyRlNfT1BUSU9OKHNiaSkucm9vdF9y ZXNlcnZlZF9ibG9ja3M7Cj4gPj4+IEBAIC00MDEwLDYgKzQwMTQsOCBAQCBpbnQgZjJmc19mbHVz aF9kZXZpY2VfY2FjaGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+Pj4gIHZvaWQgZjJm c19kZXN0cm95X2ZsdXNoX2NtZF9jb250cm9sKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYm9v bCBmcmVlKTsKPiA+Pj4gIHZvaWQgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4pOwo+ID4+PiArdm9pZCBmMmZz X3Jlc2VydmVfZGV2aWNlX2FsaWFzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBh ZGRyLAo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IGxlbik7Cj4gPj4+ICBib29sIGYyZnNfaXNfY2hlY2twb2ludGVkX2RhdGEo c3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGJsa2FkZHIpOwo+ID4+PiAgaW50IGYy ZnNfc3RhcnRfZGlzY2FyZF90aHJlYWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+Pj4g IHZvaWQgZjJmc19kcm9wX2Rpc2NhcmRfY21kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSk7Cj4g Pj4+IEBAIC00MjMxLDYgKzQyMzcsOCBAQCB2b2lkIGYyZnNfYnVpbGRfZ2NfbWFuYWdlcihzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmkpOwo+ID4+PiAgaW50IGYyZnNfZ2NfcmFuZ2Uoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydF9z ZWcsIHVuc2lnbmVkIGludCBlbmRfc2VnLAo+ID4+PiAgICAgICAgICAgICAgIGJvb2wgZHJ5X3J1 biwgdW5zaWduZWQgaW50IGRyeV9ydW5fc2VjdGlvbnMpOwo+ID4+PiArdm9pZCBmMmZzX3Jlc2V0 X2djX3ZpY3RpbV9yZXNvdXJjZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPj4+ICsgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5kKTsKPiA+Pj4gIGlu dCBmMmZzX3Jlc2l6ZV9mcyhzdHJ1Y3QgZmlsZSAqZmlscCwgX191NjQgYmxvY2tfY291bnQpOwo+ ID4+PiAgaW50IF9faW5pdCBmMmZzX2NyZWF0ZV9nYXJiYWdlX2NvbGxlY3Rpb25fY2FjaGUodm9p ZCk7Cj4gPj4+ICB2b2lkIGYyZnNfZGVzdHJveV9nYXJiYWdlX2NvbGxlY3Rpb25fY2FjaGUodm9p ZCk7Cj4gPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMvZmlsZS5jCj4g Pj4+IGluZGV4IDRiNTJjNTZkNzFmMC4uNjQyZjA2ZjJmYWVhIDEwMDY0NAo+ID4+PiAtLS0gYS9m cy9mMmZzL2ZpbGUuYwo+ID4+PiArKysgYi9mcy9mMmZzL2ZpbGUuYwo+ID4+PiBAQCAtODEzLDEz ICs4MTMsMTkgQEAgaW50IGYyZnNfZG9fdHJ1bmNhdGVfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHU2NCBmcm9tLCBib29sIGxvY2spCj4gPj4+Cj4gPj4+ICAgICAgIGlmIChJU19ERVZJQ0Vf QUxJQVNJTkcoaW5vZGUpKSB7Cj4gPj4+ICAgICAgICAgICAgICAgc3RydWN0IGV4dGVudF90cmVl ICpldCA9IEYyRlNfSShpbm9kZSktPmV4dGVudF90cmVlW0VYX1JFQURdOwo+ID4+PiAtICAgICAg ICAgICAgIHN0cnVjdCBleHRlbnRfaW5mbyBlaSA9IGV0LT5sYXJnZXN0Owo+ID4+PiArICAgICAg ICAgICAgIHN0cnVjdCBleHRlbnRfaW5mbyBlaTsKPiA+Pj4gKwo+ID4+PiArICAgICAgICAgICAg IHJlYWRfbG9jaygmZXQtPmxvY2spOwo+ID4+PiArICAgICAgICAgICAgIGVpID0gZXQtPmxhcmdl c3Q7Cj4gPj4+ICsgICAgICAgICAgICAgcmVhZF91bmxvY2soJmV0LT5sb2NrKTsKPiA+Pj4KPiA+ Pj4gICAgICAgICAgICAgICBmMmZzX2ludmFsaWRhdGVfYmxvY2tzKHNiaSwgZWkuYmxrLCBlaS5s ZW4pOwo+ID4+Pgo+ID4+PiAgICAgICAgICAgICAgIGRlY192YWxpZF9ibG9ja19jb3VudChzYmks IGlub2RlLCBlaS5sZW4pOwo+ID4+PiAgICAgICAgICAgICAgIGYyZnNfdXBkYXRlX3RpbWUoc2Jp LCBSRVFfVElNRSk7Cj4gPj4+Cj4gPj4+ICsgICAgICAgICAgICAgZjJmc19kcm9wX2V4dGVudF90 cmVlKGlub2RlKTsKPiA+Pj4gKwo+ID4+PiAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGlm b2xpbywgdHJ1ZSk7Cj4gPj4+ICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPj4+ICAgICAgIH0K PiA+Pj4gQEAgLTExMDAsOCArMTEwNiw5IEBAIGludCBmMmZzX3NldGF0dHIoc3RydWN0IG1udF9p ZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKPiA+Pj4gICAgICAgaWYgKChhdHRy LT5pYV92YWxpZCAmIEFUVFJfU0laRSkpIHsKPiA+Pj4gICAgICAgICAgICAgICBpZiAobWFwcGlu Z19sYXJnZV9mb2xpb19zdXBwb3J0KGlub2RlLT5pX21hcHBpbmcpKQo+ID4+PiAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+ID4+PiAtICAgICAgICAgICAgIGlmICgh ZjJmc19pc19jb21wcmVzc19iYWNrZW5kX3JlYWR5KGlub2RlKSB8fAo+ID4+PiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4+PiArICAg ICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+Pj4gKyAgICAgICAgICAgICBpZiAoIWYyZnNf aXNfY29tcHJlc3NfYmFja2VuZF9yZWFkeShpbm9kZSkpCj4gPj4+ICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPj4+ICAgICAgICAgICAgICAgaWYgKGlzX2lub2Rl X2ZsYWdfc2V0KGlub2RlLCBGSV9DT01QUkVTU19SRUxFQVNFRCkgJiYKPiA+Pj4gICAgICAgICAg ICAgICAgICAgICAgICFJU19BTElHTkVEKGF0dHItPmlhX3NpemUsCj4gPj4+IEBAIC0yMTMwLDYg KzIxMzcsOSBAQCBzdGF0aWMgaW50IGYyZnNfc2V0ZmxhZ3NfY29tbW9uKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHUzMiBpZmxhZ3MsIHUzMiBtYXNrKQo+ID4+PiAgICAgICBpZiAoSVNfTk9RVU9UQShp bm9kZSkpCj4gPj4+ICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+Pj4KPiA+Pj4gKyAg ICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4gPj4+ICsgICAgICAgICAgICAgcmV0 dXJuIC1FUEVSTTsKPiA+Pj4gKwo+ID4+PiAgICAgICBpZiAoKGlmbGFncyBeIG1hc2tlZF9mbGFn cykgJiBGMkZTX0NBU0VGT0xEX0ZMKSB7Cj4gPj4+ICAgICAgICAgICAgICAgaWYgKCFmMmZzX3Ni X2hhc19jYXNlZm9sZChGMkZTX0lfU0IoaW5vZGUpKSkKPiA+Pj4gICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtRU9QTk9UU1VQUDsKPiA+Pj4gQEAgLTI2NzgsNiArMjY4OCwxNyBAQCBzdGF0 aWMgaW50IGYyZnNfaW9jX2dldF9lbmNyeXB0aW9uX3BvbGljeShzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgbG9uZyBhcmcpCj4gPj4+ICAgICAgIHJldHVybiBmc2NyeXB0X2lvY3RsX2dldF9w b2xpY3koZmlscCwgKHZvaWQgX191c2VyICopYXJnKTsKPiA+Pj4gIH0KPiA+Pj4KPiA+Pj4gK3N0 YXRpYyBpbnQgZjJmc19pb2NfZ2V0X2Rldl9hbGlhc19zdGF0dXMoc3RydWN0IGZpbGUgKmZpbHAs IHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+PiArewo+ID4+PiArICAgICBzdHJ1Y3QgaW5vZGUgKmlu b2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoIUlTX0RFVklD RV9BTElBU0lORyhpbm9kZSkpCj4gPj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g Pj4+ICsKPiA+Pj4gKyAgICAgcmV0dXJuIHB1dF91c2VyKEYyRlNfSEFTX0JMT0NLUyhpbm9kZSkg PyBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVTRVJWRUQgOgo+ID4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVMRUFTRUQsICh1MzIgX191c2Vy ICopYXJnKTsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAgc3RhdGljIGludCBmMmZzX2lvY19nZXRf ZW5jcnlwdGlvbl9wd3NhbHQoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ ID4+PiAgewo+ID4+PiAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxw KTsKPiA+Pj4gQEAgLTM2MTYsNiArMzYzNywyNDggQEAgc3RhdGljIGludCBmMmZzX2lvY19nZXRf ZGV2X2FsaWFzX2ZpbGUoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+ PiAgICAgICAgICAgICAgICAgICAgICAgKHUzMiBfX3VzZXIgKilhcmcpOwo+ID4+PiAgfQo+ID4+ Pgo+ID4+PiArc3RhdGljIGJvb2wgZjJmc19nZXRfZGV2X2FsaWFzX2V4dGVudChzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gKmVpKQo+ID4+PiArewo+ID4+PiArICAgICBp bnQgaTsKPiA+Pj4gKwo+ID4+PiArICAgICBmb3IgKGkgPSAxOyBpIDwgc2JpLT5zX25kZXZzOyBp KyspIHsKPiA+Pj4gKyAgICAgICAgICAgICBjaGFyICpuYW1lID0gc3RycmNocihGREVWKGkpLnBh dGgsICcvJyk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAgICBuYW1lID0gbmFtZSA/IG5hbWUg KyAxIDogRkRFVihpKS5wYXRoOwo+ID4+PiArICAgICAgICAgICAgIGlmICghc3RyY21wKG5hbWUs IGRlbnRyeS0+ZF9uYW1lLm5hbWUpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBlaS0+ YmxrID0gRkRFVihpKS5zdGFydF9ibGs7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBlaS0+ bGVuID0gRkRFVihpKS50b3RhbF9zZWdtZW50cyA8PCBzYmktPmxvZ19ibG9ja3NfcGVyX3NlZzsK PiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGVpLT5mb2ZzID0gMDsKPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4+PiArICAgICAgICAgICAgIH0KPiA+Pgo+ID4+ IFRyaXZpYWwgY2xlYW51cCB0byBhdm9pZCBsb25nIGxpbmU6Cj4gPj4KPiA+PiAgICAgICAgICAg ICAgICAgaWYgKHN0cmNtcChuYW1lLCBkZW50cnktPmRfbmFtZS5uYW1lKSkKPiA+PiAgICAgICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+Pgo+ID4+ICAgICAgICAgICAgICAgICBlaS0+ YmxrID0gRkRFVihpKS5zdGFydF9ibGs7Cj4gPj4gICAgICAgICAgICAgICAgIGVpLT5sZW4gPSBG REVWKGkpLnRvdGFsX3NlZ21lbnRzIDw8IHNiaS0+bG9nX2Jsb2Nrc19wZXJfc2VnOwo+ID4+ICAg ICAgICAgICAgICAgICBlaS0+Zm9mcyA9IDA7Cj4gPj4gICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOwo+ID4+Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKyAgICAgcmV0dXJuIGZhbHNlOwo+ID4+PiAr fQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgaW50IGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFzKHN0 cnVjdCBmaWxlICpmaWxwKQo+ID4+PiArewo+ID4+PiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2Rl ID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4gKyAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp ID0gRjJGU19JX1NCKGlub2RlKTsKPiA+Pj4gKyAgICAgc3RydWN0IGV4dGVudF90cmVlICpldCA9 IEYyRlNfSShpbm9kZSktPmV4dGVudF90cmVlW0VYX1JFQURdOwo+ID4+PiArICAgICBzdHJ1Y3Qg ZXh0ZW50X2luZm8gZWk7Cj4gPj4+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9IHsgQ1Bf U1lOQywgMCwgMCwgMCB9Owo+ID4+PiArICAgICBzdHJ1Y3QgZjJmc19sb2NrX2NvbnRleHQgbGMs IGdsYzsKPiA+Pj4gKyAgICAgYmxrY250X3QgY291bnQ7Cj4gPj4+ICsgICAgIHVuc2lnbmVkIGlu dCBzdGFydCwgZW5kOwo+ID4+PiArICAgICBpbnQgdHlwZSwgZXJyOwo+ID4+PiArCj4gPj4+ICsg ICAgIGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKPiA+Pj4gKyAgICAgICAgICAgICByZXR1 cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19z ZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkKPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPiA+Pj4gKwo+ID4+PiArICAgICBlcnIgPSBtbnRfd2FudF93cml0ZV9maWxlKGZpbHAp Owo+ID4+PiArICAgICBpZiAoZXJyKQo+ID4+PiArICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4g Pj4+ICsKPiA+Pj4gKyAgICAgaW5vZGVfbG9jayhpbm9kZSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAg aWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgZXJy ID0gLUVJTlZBTDsKPiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4g Pj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoRjJGU19IQVNfQkxPQ0tTKGlub2Rl KSkgewo+ID4+PiArICAgICAgICAgICAgIGVyciA9IDA7Cj4gPj4+ICsgICAgICAgICAgICAgZ290 byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4+PiArICAgICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaWYg KCFmMmZzX2dldF9kZXZfYWxpYXNfZXh0ZW50KHNiaSwgZmlscC0+Zl9wYXRoLmRlbnRyeSwgJmVp KSkgewo+ID4+PiArICAgICAgICAgICAgIGYyZnNfd2FybihzYmksICJkZXZpY2UgYWxpYXMgZmls ZSAoJXMsIGlubz0lbGx1KSBoYXMgbm8gbWF0Y2hpbmcgZGV2aWNlIiwKPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZmlscC0+Zl9wYXRoLmRlbnRyeS0+ZF9uYW1lLm5hbWUsCj4gPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpaW5vZGUtPmlfaW5vKTsK PiA+Pj4gKyAgICAgICAgICAgICBzZXRfc2JpX2ZsYWcoc2JpLCBTQklfTkVFRF9GU0NLKTsKPiA+ Pj4gKyAgICAgICAgICAgICBmMmZzX2hhbmRsZV9lcnJvcihzYmksIEVSUk9SX0NPUlJVUFRFRF9J Tk9ERSk7Cj4gPj4+ICsgICAgICAgICAgICAgZXJyID0gLUVGU0NPUlJVUFRFRDsKPiA+Pj4gKyAg ICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ ID4+PiArICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9sb2NrKTsKPiA+Pj4gKyAgICAgaWYgKHNi aS0+dG90YWxfdmFsaWRfYmxvY2tfY291bnQgKyBlaS5sZW4gPgo+ID4+PiArICAgICAgICAgICAg ICAgICAgICAgZ2V0X2F2YWlsYWJsZV9ibG9ja19jb3VudChzYmksIGlub2RlLCB0cnVlKSkgewo+ ID4+PiArICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPj4+ICsg ICAgICAgICAgICAgZXJyID0gLUVOT1NQQzsKPiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9p bm9kZV91bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKyAgICAgc2JpLT5hbGlhc19yZXNlcnZl ZF9ibG9ja3MgKz0gZWkubGVuOwo+ID4+PiArICAgICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xv Y2spOwo+ID4+PiArCj4gPj4+ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9s b2NrKTsKPiA+Pj4gKyAgICAgRkRFVihmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBlaS5i bGspKS5pc19yZXNlcnZpbmcgPSB0cnVlOwo+ID4+PiArICAgICBzcGluX3VubG9jaygmRlJFRV9J KHNiaSktPnNlZ21hcF9sb2NrKTsKPiA+Pj4gKwo+ID4+PiArICAgICBzdGFydCA9IEdFVF9TRUdO TyhzYmksIGVpLmJsayk7Cj4gPj4+ICsgICAgIGVuZCA9IEdFVF9TRUdOTyhzYmksIGVpLmJsayAr IGVpLmxlbiAtIDEpOwo+ID4+PiArCj4gPj4+ICsgICAgIC8qIEFjcXVpcmUgZ2NfbG9jayBmb3Ig dmljdGltIHJlc2V0LCBjdXJzZWcgcmVzaXplLCBhbmQgcmFuZ2UgR0MgKi8KPiA+Pj4gKyAgICAg ZjJmc19kb3duX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4+PiArCj4gPj4+ ICsgICAgIC8qIFJlc2V0IHRoZSB2aWN0aW0gaW5mb3JtYXRpb24gdG8gcHJldmVudCBHQyBmcm9t IHRhcmdldGluZyB0aGUgcmFuZ2UgKi8KPiA+Pj4gKyAgICAgZjJmc19yZXNldF9nY192aWN0aW1f cmVzb3VyY2Uoc2JpLCBzdGFydCwgZW5kKTsKPiA+Pj4gKwo+ID4+PiArICAgICAvKiBNb3ZlIG91 dCBjdXJzZWdzIGZyb20gdGhlIHRhcmdldCByYW5nZSAqLwo+ID4+PiArICAgICBmb3IgKHR5cGUg PSBDVVJTRUdfSE9UX0RBVEE7IHR5cGUgPCBOUl9DVVJTRUdfUEVSU0lTVF9UWVBFOyB0eXBlKysp IHsKPiA+Pj4gKyAgICAgICAgICAgICBlcnIgPSBmMmZzX2FsbG9jYXRlX3NlZ21lbnRfZm9yX3Jl c2l6ZShzYmksIHR5cGUsIHN0YXJ0LCBlbmQpOwo+ID4+PiArICAgICAgICAgICAgIGlmIChlcnIp Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9nY191bmxvY2s7Cj4gPj4+ICsg ICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICBmMmZzX2xvY2tfb3Aoc2JpLCAmbGMpOwo+ID4+PiAr Cj4gPj4+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElT QUJMRUQpKSkgewo+ID4+PiArICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4gPj4+ICsgICAg ICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4+PiArICAgICAgICAgICAgIGdv dG8gb3V0X2djX3VubG9jazsKPiA+Pj4gKyAgICAgfQo+ID4+PiArCj4gPj4+ICsgICAgIC8qIGRv IEdDIHRvIG1vdmUgb3V0IHZhbGlkIGJsb2NrcyBpbiB0aGUgcmFuZ2UgYWxsIGF0IG9uY2UhICov Cj4gPj4+ICsgICAgIGVyciA9IGYyZnNfZ2NfcmFuZ2Uoc2JpLCBzdGFydCwgZW5kLCBmYWxzZSwg MCk7Cj4gPj4+ICsgICAgIGlmIChlcnIpIHsKPiA+Pj4gKyAgICAgICAgICAgICBmMmZzX3VubG9j a19vcChzYmksICZsYyk7Cj4gPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+ ID4+PiArICAgICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAgY291bnQgPSBlaS5sZW47Cj4gPj4+ICsg ICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGlub2RlLCAmY291bnQsIGZhbHNl KTsKPiA+Pgo+ID4+IEhtbS4uIHNlZW1zIGlmIGRldmljZSBhbGlhcyBmaWxlIGlzIDRHQiwgd2Ug aGF2ZSByZXNlcnZlZCA0R0IgYnkgc2V0Cj4gPj4gYWxpYXNfcmVzZXJ2ZWRfYmxvY2tzIHRvIDRH QiwgaGVyZSB3ZSB3YW50IHRvIGFsbG9jYXRlIGFub3RoZXIgNEdCPwo+ID4+IEl0IHdpbGwgZmFp bCBpZiB0aGUgbGVmdCBzcGFjZSBpcyBsZXNzIHRoYW4gNEdCLCBzZWVtcyBub3QgbWFrZSBzZW5z ZS4KPiA+Pgo+ID4+IE1heWJlIHdlIGNhbiBhZGQgYW5vdGhlciBwYXJhbWV0ZXIgdG8gbGV0IGlu Y192YWxpZF9ibG9ja19jb3VudCB0byAxKQo+ID4+IGluY3JlYXNlIHRvdGFsX3ZhbGlkX2Jsb2Nr X2NvdW50IGFuZCAyKSBkZWNyZWFzZSBhbGlhc19yZXNlcnZlZF9ibG9ja3MKPiA+PiBhdG9taWNh bGx5IHVuZGVyIHByb3RldGlvbiBvZiBzdGF0X2xvY2s/IFRob3VnaHRzPwo+ID4+Cj4gPj4KPiA+ Pj4gKyAgICAgaWYgKGVycikgewo+ID4+PiArICAgICAgICAgICAgIGYyZnNfdW5sb2NrX29wKHNi aSwgJmxjKTsKPiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9nY191bmxvY2s7Cj4gPj4+ICsg ICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9sb2NrKTsKPiA+ Pj4gKyAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgLT0gZWkubGVuOwo+ID4+PiArICAg ICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+ID4+PiArCj4gPj4+ICsgICAgIGlmIChl dCkgewo+ID4+Cj4gPj4gQW55IGNhc2UgdGhhdCBldCBpcyBOVUxMPwo+ID4+Cj4gPj4+ICsgICAg ICAgICAgICAgd3JpdGVfbG9jaygmZXQtPmxvY2spOwo+ID4+PiArICAgICAgICAgICAgIGV0LT5s YXJnZXN0ID0gZWk7Cj4gPj4+ICsgICAgICAgICAgICAgd3JpdGVfdW5sb2NrKCZldC0+bG9jayk7 Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKyAgICAgY2xlYXJfaW5vZGVfZmxhZyhpbm9kZSwgRklfTk9f RVhURU5UKTsKPiA+Pj4gKwo+ID4+PiArICAgICBmMmZzX3Jlc2VydmVfZGV2aWNlX2FsaWFzKHNi aSwgZWkuYmxrLCBlaS5sZW4pOwo+ID4+PiArCj4gPj4+ICsgICAgIGlfc2l6ZV93cml0ZShpbm9k ZSwgKGxvZmZfdCllaS5sZW4gPDwgUEFHRV9TSElGVCk7Cj4gPj4KPiA+PiA8PCBzYmktPmJsb2Nr c2l6ZT8gaW4gY2FzZSBwYWdlX3NpemUgaXMgbm90IGVxdWFscyB0byBibG9ja3NpemUuCj4gPj4K PiA+Pj4gKyAgICAgZjJmc191cGRhdGVfaW5vZGVfcGFnZShpbm9kZSk7Cj4gPj4+ICsKPiA+Pj4g KyAgICAgc3Bpbl9sb2NrKCZGUkVFX0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4+PiArICAgICBG REVWKGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIGVpLmJsaykpLmlzX3Jlc2VydmluZyA9 IGZhbHNlOwo+ID4+PiArICAgICBzcGluX3VubG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2Nr KTsKPiA+Pj4gKwo+ID4+PiArICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPj4+ICsg ICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPj4+ICsKPiA+ Pj4gKyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPiA+Pj4gKyAgICAgbW50X2Ryb3Bfd3JpdGVf ZmlsZShmaWxwKTsKPiA+Pj4gKwo+ID4+PiArICAgICBlcnIgPSBmMmZzX3dyaXRlX2NoZWNrcG9p bnQoc2JpLCAmY3BjKTsKPiA+Pj4gKyAgICAgcmV0dXJuIGVycjsKPiA+Pj4gKwo+ID4+PiArb3V0 X2djX3VubG9jazoKPiA+Pj4gKyAgICAgc3Bpbl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPj4+ ICsgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzIC09IGVpLmxlbjsKPiA+Pj4gKyAgICAg c3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsKPiA+Pj4gKwo+ID4+PiArICAgICBzcGluX2xv Y2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7Cj4gPj4+ICsgICAgIEZERVYoZjJmc190YXJn ZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSkuaXNfcmVzZXJ2aW5nID0gZmFsc2U7Cj4gPj4+ ICsgICAgIHNwaW5fdW5sb2NrKCZGUkVFX0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4+PiArICAg ICBmMmZzX3VwX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4+PiArCj4gPj4K PiA+PiBvdXRfaW5vZGVfdW5sb2NrOgo+ID4+Cj4gPj4+ICsgICAgIGlub2RlX3VubG9jayhpbm9k ZSk7Cj4gPj4+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlscCk7Cj4gPj4+ICsgICAgIHJl dHVybiBlcnI7Cj4gPj4+ICsKPiA+Pj4gK291dF9pbm9kZV91bmxvY2s6Cj4gPj4+ICsgICAgIGlu b2RlX3VubG9jayhpbm9kZSk7Cj4gPj4+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlscCk7 Cj4gPj4+ICsgICAgIHJldHVybiBlcnI7Cj4gPj4KPiA+PiBDYW4gYmUgcmVtb3ZlZC4KPiA+Pgo+ ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgaW50IGYyZnNfaW9jX3JlbGVhc2VfZGV2X2Fs aWFzKHN0cnVjdCBmaWxlICpmaWxwKQo+ID4+PiArewo+ID4+PiArICAgICBzdHJ1Y3QgaW5vZGUg Kmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4gKyAgICAgc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPiA+Pj4gKyAgICAgc3RydWN0IGV4dGVudF90cmVl ICpldCA9IEYyRlNfSShpbm9kZSktPmV4dGVudF90cmVlW0VYX1JFQURdOwo+ID4+PiArICAgICBz dHJ1Y3QgZXh0ZW50X2luZm8gZWkgPSB7MCwgfTsKPiA+Pj4gKyAgICAgc3RydWN0IGNwX2NvbnRy b2wgY3BjID0geyBDUF9TWU5DLCAwLCAwLCAwIH07Cj4gPj4+ICsgICAgIHN0cnVjdCBmMmZzX2xv Y2tfY29udGV4dCBsYywgZ2xjOwo+ID4+PiArICAgICBpbnQgZXJyOwo+ID4+PiArCj4gPj4+ICsg ICAgIGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKPiA+Pj4gKyAgICAgICAgICAgICByZXR1 cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19z ZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkKPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPiA+Pj4gKwo+ID4+PiArICAgICBlcnIgPSBtbnRfd2FudF93cml0ZV9maWxlKGZpbHAp Owo+ID4+PiArICAgICBpZiAoZXJyKQo+ID4+PiArICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4g Pj4+ICsKPiA+Pj4gKyAgICAgaW5vZGVfbG9jayhpbm9kZSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAg aWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgZXJy ID0gLUVJTlZBTDsKPiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4g Pj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoIUYyRlNfSEFTX0JMT0NLUyhpbm9k ZSkpIHsKPiA+Pj4gKyAgICAgICAgICAgICBlcnIgPSAwOwo+ID4+PiArICAgICAgICAgICAgIGdv dG8gb3V0X2lub2RlX3VubG9jazsKPiA+Pj4gKyAgICAgfQo+ID4+PiArCj4gPj4+ICsgICAgIGVy ciA9IGZpbGVtYXBfd3JpdGVfYW5kX3dhaXQoaW5vZGUtPmlfbWFwcGluZyk7Cj4gPj4+ICsgICAg IGlmIChlcnIpCj4gPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4+ PiArCj4gPj4+ICsgICAgIHJlYWRfbG9jaygmZXQtPmxvY2spOwo+ID4+PiArICAgICBlaSA9IGV0 LT5sYXJnZXN0Owo+ID4+PiArICAgICByZWFkX3VubG9jaygmZXQtPmxvY2spOwo+ID4+Cj4gPj4g RG8gd2UgbmVlZCB0byBkbyBzYW5pdHkgY2hlY2sgb24gd2hldGhlciBzdGFydC9lbmQgb2YgZGV2 aWNlIGFsaWFzIGZpbGUKPiA+PiBhcmUgYWxpZ25lZCB0byBzZWN0aW9uLXNpemU/IG1heSBiZSBp biBzYW5pdHlfY2hlY2tfZXh0ZW50X2NhY2hlKCk/Cj4gPgo+ID4gVGhhbmtzIGZvciBhbGwgdGhl IGNvbW1lbnRzLiBJIGFjY2VwdGVkIGFsbCBvdGhlciBjb21tZW50cy4KPiA+Cj4gPiBJbiBzYW5p dHlfY2hlY2tfZXh0ZW50X2NhY2hlKCksIHdlIGFscmVhZHkgdmVyaWZ5IHRoYXQgdGhlIGV4dGVu dAo+ID4gcmFuZ2Ugb2YgYSBkZXZpY2UgYWxpYXMgaW5vZGUgKGVpLmJsayBhbmQgZWkubGVuKSBt YXRjaGVzIHRoZSBleGFjdAo+ID4gc3RhcnQgYW5kIGVuZCBibG9jayBvZiBhIHNlY29uZGFyeSBk ZXZpY2UgKEZERVYoZGV2aSkuc3RhcnRfYmxrIGFuZAo+ID4gRkRFVihkZXZpKS5lbmRfYmxrKToK PiA+IFNpbmNlIGV2ZXJ5IHNlY29uZGFyeSBibG9jayBkZXZpY2UgaW4gRjJGUyBpcyBhbHJlYWR5 IGd1YXJhbnRlZWQgdG8gYmUKPiA+IGFsaWduZWQgdG8gc2VjdGlvbiBib3VuZGFyaWVzLCBtYXRj aGluZyB0aGUgZXh0ZW50IGFnYWluc3QgRkRFVihkZXZpKQo+ID4gaW5oZXJlbnRseSBndWFyYW50 ZWVzIHNlY3Rpb24gYWxpZ25tZW50IGZvciB0aGUgZGV2aWNlIGFsaWFzIGZpbGUgYXMKPiA+IHdl bGwuCj4KPiBJSVVDLCBmb3IgdGhlIHdvcnN0IGNhc2UsIHdlIG1heSBzdWZmZXIgaXNzdWUgKHBv dGVudGlhbGx5IEdDIG9uIHVuYWxpZ25lZAo+IHBpbmZpbGVzKSB3aGVuIG1vdW50aW5nIGFuIGlt YWdlIGNvbnRhaW5pbmcgdW5hbGlnbmVkIGRldmljZSBhbGlhcyBmaWxlIHdoaWNoCj4gaXMgZnV6 emVkIGJ5IHN5emthbGxlcj8KPgo+IEFsc28sIEknbSB3b3JyeSBhYm91dCB3aGV0aGVyIHRoZXJl IGlzIGFueSBjb2RlIGZsYXcgY2FuIGNhdXNlIHRvIG1pc3MgdG8ga2VlcAo+IHRoZSBhbGlnbm1l bnQsIHNpbmNlIHJlY2VudGx5IEkgZm91bmQgYSBidWcgdGhhdCBwaW5maWxlIG1heSBub3QgYmUg YWxpbmdlZAo+IHRvIHNlY3Rpb24sIHNlZSBkZXRhaWxzIGluIGNvbW1pdCBkMGE0ODFmYWQ1Yzcg KCJmMmZzOiBmaXggdG8gYXZvaWQgcG90ZW50aWFsCj4gc2VjdGlvbi11bmFsaWduZWQgcGluZmls ZSIpLCBzbyBJIHByb3Bvc2VkIHRvIGFkZCBzdWNoIHNhbml0eSBjaGVjayB0byBkZXRlY3QKPiBp dC4gOikKCkdvdCBpdC4gTGV0IG1lIGNvdmVyIHRoZSBjYXNlLgoKVGhhbmtzLAoKPgo+IFRob3Vn aHRzPwo+Cj4gVGhhbmtzLAo+Cj4gPgo+ID4gVGhlcmVmb3JlLCBhZGRpbmcgYW4gZXhwbGljaXQg c2VjdGlvbiBhbGlnbm1lbnQgY2hlY2sgaW4KPiA+IHNhbml0eV9jaGVja19leHRlbnRfY2FjaGUo KSBzZWVtcyByZWR1bmRhbnQuCj4gPgo+ID4+Cj4gPj4+ICsKPiA+Pj4gKyAgICAgZjJmc19kb3du X3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4+PiArICAgICBmMmZzX2xvY2tf b3Aoc2JpLCAmbGMpOwo+ID4+PiArCj4gPj4+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxh Z19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkgewo+ID4+PiArICAgICAgICAgICAgIGVyciA9 IC1FSU5WQUw7Cj4gPj4+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ ID4+PiArICAgICAgICAgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmds Yyk7Cj4gPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4+PiArICAg ICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAgdHJ1bmNhdGVfc2V0c2l6ZShpbm9kZSwgMCk7Cj4gPj4+ ICsKPiA+Pgo+ID4+IFRvIGF2b2lkIHJhY2luZyB3LyBtbWFwPwo+ID4+Cj4gPj4gZmlsZW1hcF9p bnZhbGlkYXRlX2xvY2soaW5vZGUtPmlfbWFwcGluZyk7Cj4gPj4KPiA+Pj4gKyAgICAgZXJyID0g ZjJmc190cnVuY2F0ZV9ibG9ja3MoaW5vZGUsIDAsIGZhbHNlKTsKPiA+Pgo+ID4+IGZpbGVtYXBf aW52YWxpZGF0ZV91bmxvY2soaW5vZGUtPmlfbWFwcGluZyk7Cj4gPj4KPiA+Pj4gKyAgICAgaWYg KGVycikgewo+ID4+PiArICAgICAgICAgICAgIGlfc2l6ZV93cml0ZShpbm9kZSwgKGxvZmZfdCll aS5sZW4gPDwgUEFHRV9TSElGVCk7Cj4gPj4KPiA+PiA8PCBzYmktPmJsb2Nrc2l6ZT8gaW4gY2Fz ZSBwYWdlX3NpemUgaXMgbm90IGVxdWFscyB0byBibG9ja3NpemUuCj4gPj4KPiA+Pj4gKyAgICAg ICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPj4+ICsgICAgICAgICAgICAgZjJm c191cF93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPiA+Pj4gKyAgICAgICAgICAg ICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAg ICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2RlKTsKPiA+Pj4gKwo+ID4+PiArICAgICBmMmZz X3VubG9ja19vcChzYmksICZsYyk7Cj4gPj4+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNi aS0+Z2NfbG9jaywgJmdsYyk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaW5vZGVfdW5sb2NrKGlub2Rl KTsKPiA+Pj4gKyAgICAgbW50X2Ryb3Bfd3JpdGVfZmlsZShmaWxwKTsKPiA+Pj4gKwo+ID4+PiAr ICAgICBlcnIgPSBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKTsKPiA+Pgo+ID4+IHJl dHVybiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKTsKPiA+Pgo+ID4+PiArICAgICBy ZXR1cm4gZXJyOwo+ID4+PiArCj4gPj4+ICtvdXRfaW5vZGVfdW5sb2NrOgo+ID4+PiArICAgICBp bm9kZV91bmxvY2soaW5vZGUpOwo+ID4+PiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZpbHAp Owo+ID4+PiArICAgICByZXR1cm4gZXJyOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICBzdGF0aWMg aW50IGYyZnNfaW9jX2lvX3ByaW8oc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJn KQo+ID4+PiAgewo+ID4+PiAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShm aWxwKTsKPiA+Pj4gQEAgLTQ3NDIsOCArNTAwNSwxNCBAQCBzdGF0aWMgbG9uZyBfX2YyZnNfaW9j dGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJn KQo+ID4+PiAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19jb21wcmVzc19maWxlKGZpbHAp Owo+ID4+PiAgICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfRklMRToKPiA+Pj4gICAg ICAgICAgICAgICByZXR1cm4gZjJmc19pb2NfZ2V0X2Rldl9hbGlhc19maWxlKGZpbHAsIGFyZyk7 Cj4gPj4+ICsgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6Cj4gPj4+ICsg ICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2dldF9kZXZfYWxpYXNfc3RhdHVzKGZpbHAsIGFy Zyk7Cj4gPj4+ICAgICAgIGNhc2UgRjJGU19JT0NfSU9fUFJJTzoKPiA+Pj4gICAgICAgICAgICAg ICByZXR1cm4gZjJmc19pb2NfaW9fcHJpbyhmaWxwLCBhcmcpOwo+ID4+PiArICAgICBjYXNlIEYy RlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTOgo+ID4+PiArICAgICAgICAgICAgIHJldHVybiBmMmZz X2lvY19yZXNlcnZlX2Rldl9hbGlhcyhmaWxwKTsKPiA+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19S RUxFQVNFX0RFVl9BTElBUzoKPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZjJmc19pb2NfcmVs ZWFzZV9kZXZfYWxpYXMoZmlscCk7Cj4gPj4+ICAgICAgIGRlZmF1bHQ6Cj4gPj4+ICAgICAgICAg ICAgICAgcmV0dXJuIC1FTk9UVFk7Cj4gPj4+ICAgICAgIH0KPiA+Pj4gQEAgLTU1MzAsNyArNTc5 OSwxMCBAQCBsb25nIGYyZnNfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25l ZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+Pj4gICAgICAgY2FzZSBGMkZTX0lPQ19E RUNPTVBSRVNTX0ZJTEU6Cj4gPj4+ICAgICAgIGNhc2UgRjJGU19JT0NfQ09NUFJFU1NfRklMRToK PiA+Pj4gICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX0ZJTEU6Cj4gPj4+ICsgICAg IGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6Cj4gPj4+ICAgICAgIGNhc2UgRjJG U19JT0NfSU9fUFJJTzoKPiA+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19SRVNFUlZFX0RFVl9BTElB UzoKPiA+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19SRUxFQVNFX0RFVl9BTElBUzoKPiA+Pj4gICAg ICAgICAgICAgICBicmVhazsKPiA+Pj4gICAgICAgZGVmYXVsdDoKPiA+Pj4gICAgICAgICAgICAg ICByZXR1cm4gLUVOT0lPQ1RMQ01EOwo+ID4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9nYy5jIGIv ZnMvZjJmcy9nYy5jCj4gPj4+IGluZGV4IGZmYWE3YmE3NmExYi4uOTNiY2IzNWE1YjVkIDEwMDY0 NAo+ID4+PiAtLS0gYS9mcy9mMmZzL2djLmMKPiA+Pj4gKysrIGIvZnMvZjJmcy9nYy5jCj4gPj4+ IEBAIC0yMTk3LDI5ICsyMTk3LDM3IEBAIGludCBmMmZzX2djX3JhbmdlKHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSwKPiA+Pj4gICAgICAgcmV0dXJuIDA7Cj4gPj4+ICB9Cj4gPj4+Cj4gPj4+ICt2 b2lkIGYyZnNfcmVzZXRfZ2NfdmljdGltX3Jlc291cmNlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWdu ZWQgaW50IGVuZCkKPiA+Pj4gK3sKPiA+Pj4gKyAgICAgaW50IGk7Cj4gPj4+ICsKPiA+Pj4gKyAg ICAgbXV0ZXhfbG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2spOwo+ID4+PiArICAgICBm b3IgKGkgPSAwOyBpIDwgTUFYX0dDX1BPTElDWTsgaSsrKQo+ID4+PiArICAgICAgICAgICAgIGlm IChTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtpXSA+PSBzdGFydCAmJgo+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgU0lUX0koc2JpKS0+bGFzdF92aWN0aW1baV0gPD0gZW5kKQo+ID4+PiArICAg ICAgICAgICAgICAgICAgICAgU0lUX0koc2JpKS0+bGFzdF92aWN0aW1baV0gPSAwOwo+ID4+PiAr Cj4gPj4+ICsgICAgIGZvciAoaSA9IEJHX0dDOyBpIDw9IEZHX0dDOyBpKyspCj4gPj4+ICsgICAg ICAgICAgICAgaWYgKHNiaS0+bmV4dF92aWN0aW1fc2VnW2ldID49IHN0YXJ0ICYmCj4gPj4+ICsg ICAgICAgICAgICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tpXSA8PSBlbmQpCj4gPj4+ ICsgICAgICAgICAgICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tpXSA9IE5VTExfU0VH Tk87Cj4gPj4+ICsgICAgIG11dGV4X3VubG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2sp Owo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICBzdGF0aWMgaW50IGZyZWVfc2VnbWVudF9yYW5nZShz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBzZWNzLCBib29sIGRyeV9ydW4pCj4gPj4+ICB7Cj4gPj4+ICAgICAg IHVuc2lnbmVkIGludCBuZXh0X2ludXNlLCBzdGFydCwgZW5kOwo+ID4+PiAgICAgICBzdHJ1Y3Qg Y3BfY29udHJvbCBjcGMgPSB7IENQX1JFU0laRSwgMCwgMCwgMCB9Owo+ID4+PiAtICAgICBpbnQg Z2NfbW9kZSwgZ2NfdHlwZTsKPiA+Pj4gICAgICAgaW50IGVyciA9IDA7Cj4gPj4+ICAgICAgIGlu dCB0eXBlOwo+ID4+Pgo+ID4+PiAtICAgICAvKiBGb3JjZSBibG9jayBhbGxvY2F0aW9uIGZvciBH QyAqLwo+ID4+PiAgICAgICBNQUlOX1NFQ1Moc2JpKSAtPSBzZWNzOwo+ID4+PiAgICAgICBzdGFy dCA9IE1BSU5fU0VDUyhzYmkpICogU0VHU19QRVJfU0VDKHNiaSk7Cj4gPj4+ICAgICAgIGVuZCA9 IE1BSU5fU0VHUyhzYmkpIC0gMTsKPiA+Pj4KPiA+Pj4gLSAgICAgbXV0ZXhfbG9jaygmRElSVFlf SShzYmkpLT5zZWdsaXN0X2xvY2spOwo+ID4+PiAtICAgICBmb3IgKGdjX21vZGUgPSAwOyBnY19t b2RlIDwgTUFYX0dDX1BPTElDWTsgZ2NfbW9kZSsrKQo+ID4+PiAtICAgICAgICAgICAgIGlmIChT SVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtnY19tb2RlXSA+PSBzdGFydCkKPiA+Pj4gLSAgICAgICAg ICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3RfdmljdGltW2djX21vZGVdID0gMDsKPiA+Pj4g LQo+ID4+PiAtICAgICBmb3IgKGdjX3R5cGUgPSBCR19HQzsgZ2NfdHlwZSA8PSBGR19HQzsgZ2Nf dHlwZSsrKQo+ID4+PiAtICAgICAgICAgICAgIGlmIChzYmktPm5leHRfdmljdGltX3NlZ1tnY190 eXBlXSA+PSBzdGFydCkKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHNiaS0+bmV4dF92aWN0 aW1fc2VnW2djX3R5cGVdID0gTlVMTF9TRUdOTzsKPiA+Pj4gLSAgICAgbXV0ZXhfdW5sb2NrKCZE SVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4gPj4+ICsgICAgIGYyZnNfcmVzZXRfZ2Nfdmlj dGltX3Jlc291cmNlKHNiaSwgc3RhcnQsIGVuZCk7Cj4gPj4+Cj4gPj4+ICAgICAgIC8qIE1vdmUg b3V0IGN1cnNlZ3MgZnJvbSB0aGUgdGFyZ2V0IHJhbmdlICovCj4gPj4+ICAgICAgIGZvciAodHlw ZSA9IENVUlNFR19IT1RfREFUQTsgdHlwZSA8IE5SX0NVUlNFR19QRVJTSVNUX1RZUEU7IHR5cGUr Kykgewo+ID4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9uYW1laS5jIGIvZnMvZjJmcy9uYW1laS5j Cj4gPj4+IGluZGV4IGNhYzAzYjhlOTFhMS4uOGMzYjU3OTg3ZjZjIDEwMDY0NAo+ID4+PiAtLS0g YS9mcy9mMmZzL25hbWVpLmMKPiA+Pj4gKysrIGIvZnMvZjJmcy9uYW1laS5jCj4gPj4+IEBAIC00 MjUsNiArNDI1LDkgQEAgc3RhdGljIGludCBmMmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkX2Rl bnRyeSwgc3RydWN0IGlub2RlICpkaXIsCj4gPj4+ICAgICAgIGlmICghZjJmc19pc19jaGVja3Bv aW50X3JlYWR5KHNiaSkpCj4gPj4+ICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7Cj4gPj4+ Cj4gPj4+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4+PiArICAgICAg ICAgICAgIHJldHVybiAtRVBFUk07Cj4gPj4+ICsKPiA+Pj4gICAgICAgZXJyID0gZnNjcnlwdF9w cmVwYXJlX2xpbmsob2xkX2RlbnRyeSwgZGlyLCBkZW50cnkpOwo+ID4+PiAgICAgICBpZiAoZXJy KQo+ID4+PiAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+IEBAIC01NjgsNiArNTcxLDkg QEAgc3RhdGljIGludCBmMmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRy eSAqZGVudHJ5KQo+ID4+Pgo+ID4+PiAgICAgICB0cmFjZV9mMmZzX3VubGlua19lbnRlcihkaXIs IGRlbnRyeSk7Cj4gPj4+Cj4gPj4+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUp KQo+ID4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPj4+ICsKPiA+Pj4gICAgICAg aWYgKHVubGlrZWx5KGYyZnNfY3BfZXJyb3Ioc2JpKSkpIHsKPiA+Pj4gICAgICAgICAgICAgICBl cnIgPSAtRUlPOwo+ID4+PiAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4+PiBAQCAtOTQ2LDYg Kzk1Miw5IEBAIHN0YXRpYyBpbnQgZjJmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAs IHN0cnVjdCBpbm9kZSAqb2xkX2RpciwKPiA+Pj4gICAgICAgYm9vbCBvbGRfaXNfZGlyID0gU19J U0RJUihvbGRfaW5vZGUtPmlfbW9kZSk7Cj4gPj4+ICAgICAgIGludCBlcnI7Cj4gPj4+Cj4gPj4+ ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcob2xkX2lub2RlKSkKPiA+Pj4gKyAgICAgICAg ICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICAgICAgIGlmICh1bmxpa2VseShmMmZz X2NwX2Vycm9yKHNiaSkpKQo+ID4+PiAgICAgICAgICAgICAgIHJldHVybiAtRUlPOwo+ID4+PiAg ICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+ID4+PiBAQCAtMTAxNiw2 ICsxMDI1LDggQEAgc3RhdGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1h cCwgc3RydWN0IGlub2RlICpvbGRfZGlyLAo+ID4+PiAgICAgICB9Cj4gPj4+Cj4gPj4+ICAgICAg IGlmIChuZXdfaW5vZGUpIHsKPiA+Pj4gKyAgICAgICAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFT SU5HKG5ld19pbm9kZSkpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJN Owo+ID4+Pgo+ID4+PiAgICAgICAgICAgICAgIGVyciA9IC1FTk9URU1QVFk7Cj4gPj4+ICAgICAg ICAgICAgICAgaWYgKG9sZF9pc19kaXIgJiYgIWYyZnNfZW1wdHlfZGlyKG5ld19pbm9kZSkpCj4g Pj4+IEBAIC0xMTQzLDYgKzExNTQsOSBAQCBzdGF0aWMgaW50IGYyZnNfY3Jvc3NfcmVuYW1lKHN0 cnVjdCBpbm9kZSAqb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwKPiA+Pj4gICAg ICAgaW50IG9sZF9ubGluayA9IDAsIG5ld19ubGluayA9IDA7Cj4gPj4+ICAgICAgIGludCBlcnI7 Cj4gPj4+Cj4gPj4+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcob2xkX2lub2RlKSB8fCBJ U19ERVZJQ0VfQUxJQVNJTkcobmV3X2lub2RlKSkKPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4g LUVQRVJNOwo+ID4+PiArCj4gPj4+ICAgICAgIGlmICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNi aSkpKQo+ID4+PiAgICAgICAgICAgICAgIHJldHVybiAtRUlPOwo+ID4+PiAgICAgICBpZiAoIWYy ZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+ID4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9z ZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4+PiBpbmRleCBkNzFkZGIzZWU5MTguLjEy MDJiZGUzMzkwYSAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmMKPiA+Pj4gKysr IGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+Pj4gQEAgLTI1MDIsMzUgKzI1MDIsNDIgQEAgc3RhdGlj IGludCB1cGRhdGVfc2l0X2VudHJ5X2Zvcl9hbGxvYyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks IHN0cnVjdCBzZWdfZW50cnkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHNlZ25vLCBibG9ja190IGJsa2FkZHIsIHVuc2lnbmVkIGludCBvZmZzZXQsIGlu dCBkZWwpCj4gPj4+ICB7Cj4gPj4+ICAgICAgIGJvb2wgZXhpc3Q7Cj4gPj4+ICsgICAgIGludCBk ZWxfY291bnQgPSBkZWw7Cj4gPj4+ICsgICAgIGludCBpOwo+ID4+Pgo+ID4+PiAtICAgICBleGlz dCA9IGYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQsIHNlLT5jdXJfdmFsaWRfbWFwKTsKPiA+ Pj4gLSAgICAgaWYgKHVubGlrZWx5KGV4aXN0KSkgewo+ID4+PiAtICAgICAgICAgICAgIGYyZnNf ZXJyKHNiaSwgIkJpdG1hcCB3YXMgd3JvbmdseSBzZXQsIGJsazoldSIsIGJsa2FkZHIpOwo+ID4+ PiAtICAgICAgICAgICAgIGYyZnNfYnVnX29uKHNiaSwgMSk7Cj4gPj4+IC0gICAgICAgICAgICAg c2UtPnZhbGlkX2Jsb2Nrcy0tOwo+ID4+PiAtICAgICAgICAgICAgIGRlbCA9IDA7Cj4gPj4+IC0g ICAgIH0KPiA+Pj4gKyAgICAgZjJmc19idWdfb24oc2JpLCBHRVRfU0VHTk8oc2JpLCBibGthZGRy KSAhPSBHRVRfU0VHTk8oc2JpLCBibGthZGRyICsgZGVsX2NvdW50IC0gMSkpOwo+ID4+Pgo+ID4+ PiAtICAgICBpZiAoZjJmc19ibG9ja191bml0X2Rpc2NhcmQoc2JpKSAmJgo+ID4+PiAtICAgICAg ICAgICAgICAgICAgICAgIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQsIHNlLT5kaXNjYXJk X21hcCkpCj4gPj4+IC0gICAgICAgICAgICAgc2JpLT5kaXNjYXJkX2Jsa3MtLTsKPiA+Pj4gKyAg ICAgZm9yIChpID0gMDsgaSA8IGRlbF9jb3VudDsgaSsrKSB7Cj4gPj4+ICsgICAgICAgICAgICAg ZXhpc3QgPSBmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0ICsgaSwgc2UtPmN1cl92YWxpZF9t YXApOwo+ID4+PiArICAgICAgICAgICAgIGlmICh1bmxpa2VseShleGlzdCkpIHsKPiA+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIGYyZnNfZXJyKHNiaSwgIkJpdG1hcCB3YXMgd3JvbmdseSBzZXQs IGJsazoldSIsIGJsa2FkZHIgKyBpKTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNf YnVnX29uKHNiaSwgMSk7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBzZS0+dmFsaWRfYmxv Y2tzLS07Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBkZWwgLT0gMTsKPiA+Pj4gKyAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4+PiArICAgICAgICAgICAgIH0KPiA+Pj4KPiA+ Pj4gLSAgICAgLyoKPiA+Pj4gLSAgICAgICogU1NSIHNob3VsZCBuZXZlciByZXVzZSBibG9jayB3 aGljaCBpcyBjaGVja3BvaW50ZWQKPiA+Pj4gLSAgICAgICogb3IgbmV3bHkgaW52YWxpZGF0ZWQu Cj4gPj4+IC0gICAgICAqLwo+ID4+PiAtICAgICBpZiAoIWlzX3NiaV9mbGFnX3NldChzYmksIFNC SV9DUF9ESVNBQkxFRCkpIHsKPiA+Pj4gLSAgICAgICAgICAgICBpZiAoIWYyZnNfdGVzdF9hbmRf c2V0X2JpdChvZmZzZXQsIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPiA+Pj4gLSAgICAgICAgICAg ICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcysrOwo+ID4+PiAtICAgICAgICAgICAgICAg ICAgICAgaWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+ID4+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5ja3B0X3ZhbGlkX2Jsb2Nr cysrOwo+ID4+PiArICAgICAgICAgICAgIGlmIChmMmZzX2Jsb2NrX3VuaXRfZGlzY2FyZChzYmkp ICYmCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFmMmZzX3Rlc3RfYW5kX3Nl dF9iaXQob2Zmc2V0ICsgaSwgc2UtPmRpc2NhcmRfbWFwKSkKPiA+Pj4gKyAgICAgICAgICAgICAg ICAgICAgIHNiaS0+ZGlzY2FyZF9ibGtzLS07Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAgICAv Kgo+ID4+PiArICAgICAgICAgICAgICAqIFNTUiBzaG91bGQgbmV2ZXIgcmV1c2UgYmxvY2sgd2hp Y2ggaXMgY2hlY2twb2ludGVkCj4gPj4+ICsgICAgICAgICAgICAgICogb3IgbmV3bHkgaW52YWxp ZGF0ZWQuCj4gPj4+ICsgICAgICAgICAgICAgICovCj4gPj4+ICsgICAgICAgICAgICAgaWYgKCFp c19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSB7Cj4gPj4+ICsgICAgICAgICAg ICAgICAgICAgICBpZiAoIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQgKyBpLCBzZS0+Y2tw dF92YWxpZF9tYXApKSB7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlLT5j a3B0X3ZhbGlkX2Jsb2NrcysrOwo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9j a3MrKzsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH0KPiA+Pj4gICAgICAgICAgICAgICB9 Cj4gPj4+IC0gICAgIH0KPiA+Pj4KPiA+Pj4gLSAgICAgaWYgKCFmMmZzX3Rlc3RfYml0KG9mZnNl dCwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4+PiAtICAgICAgICAgICAgIHNlLT5ja3B0X3Zh bGlkX2Jsb2NrcyArPSBkZWw7Cj4gPj4+IC0gICAgICAgICAgICAgaWYgKF9faXNfbGFyZ2Vfc2Vj dGlvbihzYmkpKQo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmks IHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gZGVsOwo+ID4+PiArICAgICAgICAgICAgIGlm ICghZjJmc190ZXN0X2JpdChvZmZzZXQgKyBpLCBzZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4gPj4+ ICsgICAgICAgICAgICAgICAgICAgICBzZS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gMTsKPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmksIHNlZ25vKS0+ Y2twdF92YWxpZF9ibG9ja3MgKz0gMTsKPiA+Pj4gKyAgICAgICAgICAgICB9Cj4gPj4+ICAgICAg IH0KPiA+Pj4KPiA+Pj4gICAgICAgaWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+ID4+PiBA QCAtMjU4NSw5ICsyNTkyLDE0IEBAIHZvaWQgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPiA+Pj4gICAgICAgdW5zaWduZWQgaW50 IHNlZ25vID0gR0VUX1NFR05PKHNiaSwgYWRkcik7Cj4gPj4+ICAgICAgIHN0cnVjdCBzaXRfaW5m byAqc2l0X2kgPSBTSVRfSShzYmkpOwo+ID4+PiAgICAgICBibG9ja190IGFkZHJfc3RhcnQgPSBh ZGRyLCBhZGRyX2VuZCA9IGFkZHIgKyBsZW4gLSAxOwo+ID4+PiAtICAgICB1bnNpZ25lZCBpbnQg c2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJfZW5kKSAtIHNlZ25vICsgMTsKPiA+Pj4gKyAg ICAgdW5zaWduZWQgaW50IHNlZ19udW07Cj4gPj4+ICAgICAgIHVuc2lnbmVkIGludCBpID0gMSwg bWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Blcl9zZWcsIGNudDsKPiA+Pj4KPiA+Pj4gKyAgICAg aWYgKGxlbiA9PSAwKQo+ID4+PiArICAgICAgICAgICAgIHJldHVybjsKPiA+Pj4gKwo+ID4+PiAr ICAgICBzZWdfbnVtID0gR0VUX1NFR05PKHNiaSwgYWRkcl9lbmQpIC0gc2Vnbm8gKyAxOwo+ID4+ PiArCj4gPj4+ICAgICAgIGYyZnNfYnVnX29uKHNiaSwgYWRkciA9PSBOVUxMX0FERFIpOwo+ID4+ PiAgICAgICBpZiAoYWRkciA9PSBORVdfQUREUiB8fCBhZGRyID09IENPTVBSRVNTX0FERFIpCj4g Pj4+ICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4+PiBAQCAtMjYyMCw2ICsyNjMyLDUyIEBAIHZv aWQgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2Nr X3QgYWRkciwKPiA+Pj4gICAgICAgdXBfd3JpdGUoJnNpdF9pLT5zZW50cnlfbG9jayk7Cj4gPj4+ ICB9Cj4gPj4+Cj4gPj4+ICt2b2lkIGYyZnNfcmVzZXJ2ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4gPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4pCj4gPj4+ICt7Cj4gPj4+ICsgICAgIHVuc2lnbmVk IGludCBzZWdubyA9IEdFVF9TRUdOTyhzYmksIGFkZHIpOwo+ID4+PiArICAgICBzdHJ1Y3Qgc2l0 X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPiA+Pj4gKyAgICAgYmxvY2tfdCBhZGRyX3N0YXJ0 ID0gYWRkciwgYWRkcl9lbmQgPSBhZGRyICsgbGVuIC0gMTsKPiA+Pj4gKyAgICAgdW5zaWduZWQg aW50IHNlZ19udW07Cj4gPj4+ICsgICAgIHVuc2lnbmVkIGludCBpID0gMSwgbWF4X2Jsb2NrcyA9 IHNiaS0+YmxvY2tzX3Blcl9zZWcsIGNudDsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAobGVuID09 IDApCj4gPj4+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4+PiArCj4gPj4+ICsgICAgIHNlZ19u dW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkgLSBzZWdubyArIDE7Cj4gPj4+ICsKPiA+Pj4g KyAgICAgZG93bl93cml0ZSgmc2l0X2ktPnNlbnRyeV9sb2NrKTsKPiA+Pj4gKwo+ID4+PiArICAg ICBpZiAoc2VnX251bSA9PSAxKQo+ID4+PiArICAgICAgICAgICAgIGNudCA9IGxlbjsKPiA+Pj4g KyAgICAgZWxzZQo+ID4+PiArICAgICAgICAgICAgIGNudCA9IG1heF9ibG9ja3MgLSBHRVRfQkxL T0ZGX0ZST01fU0VHMChzYmksIGFkZHIpOwo+ID4+PiArCj4gPj4+ICsgICAgIGRvIHsKPiA+Pj4g KyAgICAgICAgICAgICB1cGRhdGVfc2VnbWVudF9tdGltZShzYmksIGFkZHJfc3RhcnQsIDApOwo+ ID4+PiArICAgICAgICAgICAgIHVwZGF0ZV9zaXRfZW50cnkoc2JpLCBhZGRyX3N0YXJ0LCBjbnQp Owo+ID4+PiArICAgICAgICAgICAgIF9fc2V0X3Rlc3RfYW5kX2ludXNlKHNiaSwgc2Vnbm8pOwo+ ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAgLyogUmVtb3ZlIHRoZSBzZWdtZW50IGZyb20gUFJF IChwcmVmcmVlKSB0byBwcmV2ZW50IGNoZWNrcG9pbnQgZnJvbSBmcmVlaW5nIGl0ISAqLwo+ID4+ PiArICAgICAgICAgICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9sb2NrKTsK PiA+Pj4gKyAgICAgICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KHNlZ25vLCBESVJUWV9J KHNiaSktPmRpcnR5X3NlZ21hcFtQUkVdKSkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIERJ UlRZX0koc2JpKS0+bnJfZGlydHlbUFJFXS0tOwo+ID4+PiArICAgICAgICAgICAgIG11dGV4X3Vu bG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2spOwo+ID4+PiArCj4gPj4+ICsgICAgICAg ICAgICAgLyogYWRkIGl0IGludG8gZGlydHkgc2VnbGlzdCAqLwo+ID4+PiArICAgICAgICAgICAg IGxvY2F0ZV9kaXJ0eV9zZWdtZW50KHNiaSwgc2Vnbm8pOwo+ID4+PiArCj4gPj4+ICsgICAgICAg ICAgICAgLyogdXBkYXRlIEBhZGRyX3N0YXJ0IGFuZCBAY250IGFuZCBAc2Vnbm8gKi8KPiA+Pj4g KyAgICAgICAgICAgICBhZGRyX3N0YXJ0ID0gU1RBUlRfQkxPQ0soc2JpLCArK3NlZ25vKTsKPiA+ Pj4gKyAgICAgICAgICAgICBpZiAoKytpID09IHNlZ19udW0pCj4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICBjbnQgPSBHRVRfQkxLT0ZGX0ZST01fU0VHMChzYmksIGFkZHJfZW5kKSArIDE7Cj4g Pj4+ICsgICAgICAgICAgICAgZWxzZQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgY250ID0g bWF4X2Jsb2NrczsKPiA+Pj4gKyAgICAgfSB3aGlsZSAoaSA8PSBzZWdfbnVtKTsKPiA+Pj4gKwo+ ID4+PiArICAgICB1cF93cml0ZSgmc2l0X2ktPnNlbnRyeV9sb2NrKTsKPiA+Pj4gK30KPiA+Pj4g Kwo+ID4+PiAgYm9vbCBmMmZzX2lzX2NoZWNrcG9pbnRlZF9kYXRhKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKQo+ID4+PiAgewo+ID4+PiAgICAgICBzdHJ1Y3Qgc2l0 X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPiA+Pj4gQEAgLTI3NTgsOCArMjgxNiwxMyBAQCBz dGF0aWMgaW50IGlzX25leHRfc2VnbWVudF9mcmVlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwK PiA+Pj4gICAgICAgdW5zaWduZWQgaW50IHNlZ25vID0gY3Vyc2VnLT5zZWdubyArIDE7Cj4gPj4+ ICAgICAgIHN0cnVjdCBmcmVlX3NlZ21hcF9pbmZvICpmcmVlX2kgPSBGUkVFX0koc2JpKTsKPiA+ Pj4KPiA+Pj4gLSAgICAgaWYgKHNlZ25vIDwgTUFJTl9TRUdTKHNiaSkgJiYgc2Vnbm8gJSBTRUdT X1BFUl9TRUMoc2JpKSkKPiA+Pj4gKyAgICAgaWYgKHNlZ25vIDwgTUFJTl9TRUdTKHNiaSkgJiYg c2Vnbm8gJSBTRUdTX1BFUl9TRUMoc2JpKSkgewo+ID4+PiArICAgICAgICAgICAgIGludCBkZXZp ID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdubykp Owo+ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNfZGV2X2lzX3Jlc2VydmluZyhz YmksIGRldmkpKQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPj4+ICAg ICAgICAgICAgICAgcmV0dXJuICF0ZXN0X2JpdChzZWdubywgZnJlZV9pLT5mcmVlX3NlZ21hcCk7 Cj4gPj4+ICsgICAgIH0KPiA+Pj4gICAgICAgcmV0dXJuIDA7Cj4gPj4+ICB9Cj4gPj4+Cj4gPj4+ IEBAIC0yNzc4LDcgKzI4NDEsOCBAQCBzdGF0aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksCj4gPj4+ICAgICAgIHVuc2lnbmVkIGludCBhbGxvY19wb2xpY3kg PSBzYmktPmFsbG9jYXRlX3NlY3Rpb25fcG9saWN5Owo+ID4+PiAgICAgICB1bnNpZ25lZCBpbnQg YWxsb2NfaGludCA9IHNiaS0+YWxsb2NhdGVfc2VjdGlvbl9oaW50Owo+ID4+PiAgICAgICBib29s IGluaXQgPSB0cnVlOwo+ID4+PiAtICAgICBpbnQgaTsKPiA+Pj4gKyAgICAgYm9vbCBsb29wZWQg PSBmYWxzZTsKPiA+Pj4gKyAgICAgaW50IGksIGRldmk7Cj4gPj4+ICAgICAgIGludCByZXQgPSAw Owo+ID4+Pgo+ID4+PiAgICAgICBzcGluX2xvY2soJmZyZWVfaS0+c2VnbWFwX2xvY2spOwo+ID4+ PiBAQCAtMjc5MSw4ICsyODU1LDEzIEBAIHN0YXRpYyBpbnQgZ2V0X25ld19zZWdtZW50KHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4gICAgICAgaWYgKCFuZXdfc2VjICYmICgoKm5ld3Nl ZyArIDEpICUgU0VHU19QRVJfU0VDKHNiaSkpKSB7Cj4gPj4+ICAgICAgICAgICAgICAgc2Vnbm8g PSBmaW5kX25leHRfemVyb19iaXQoZnJlZV9pLT5mcmVlX3NlZ21hcCwKPiA+Pj4gICAgICAgICAg ICAgICAgICAgICAgIEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBoaW50ICsgMSksICpuZXdzZWcgKyAx KTsKPiA+Pj4gLSAgICAgICAgICAgICBpZiAoc2Vnbm8gPCBHRVRfU0VHX0ZST01fU0VDKHNiaSwg aGludCArIDEpKQo+ID4+PiArICAgICAgICAgICAgIGlmIChzZWdubyA8IEdFVF9TRUdfRlJPTV9T RUMoc2JpLCBoaW50ICsgMSkpIHsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRldmkgPSBm MmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBTVEFSVF9CTE9DSyhzYmksIHNlZ25vKSk7Cj4g Pj4+ICsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChmMmZzX2Rldl9pc19hbGxvY19i bG9ja2VkKHNiaSwgZGV2aSwgcGlubmluZykpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAg Z290byBnb3RfaXQ7Cj4gPj4+ICsgICAgICAgICAgICAgfQo+ID4+PiAgICAgICB9Cj4gPj4+Cj4g Pj4+ICAjaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+Pj4gQEAgLTI4MjgsMzMgKzI4OTcs NDIgQEAgc3RhdGljIGludCBnZXRfbmV3X3NlZ21lbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp LAo+ID4+PiAgZmluZF9vdGhlcl96b25lOgo+ID4+PiAgICAgICBzZWNubyA9IGZpbmRfbmV4dF96 ZXJvX2JpdChmcmVlX2ktPmZyZWVfc2VjbWFwLCBNQUlOX1NFQ1Moc2JpKSwgaGludCk7Cj4gPj4+ Cj4gPj4+IC0jaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+Pj4gLSAgICAgaWYgKHNlY25v ID49IE1BSU5fU0VDUyhzYmkpICYmIGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkpIHsKPiA+Pj4g LSAgICAgICAgICAgICAvKiBXcml0ZSBvbmx5IHRvIHNlcXVlbnRpYWwgem9uZXMgKi8KPiA+Pj4g LSAgICAgICAgICAgICBpZiAoc2JpLT5ibGt6b25lX2FsbG9jX3BvbGljeSA9PSBCTEtaT05FX0FM TE9DX09OTFlfU0VRKSB7Cj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICBoaW50ID0gR0VUX1NF Q19GUk9NX1NFRyhzYmksIHNiaS0+Zmlyc3Rfc2VxX3pvbmVfc2Vnbm8pOwo+ID4+PiAtICAgICAg ICAgICAgICAgICAgICAgc2Vjbm8gPSBmaW5kX25leHRfemVyb19iaXQoZnJlZV9pLT5mcmVlX3Nl Y21hcCwgTUFJTl9TRUNTKHNiaSksIGhpbnQpOwo+ID4+PiAtICAgICAgICAgICAgIH0gZWxzZQo+ ID4+PiAtICAgICAgICAgICAgICAgICAgICAgc2Vjbm8gPSBmaW5kX2ZpcnN0X3plcm9fYml0KGZy ZWVfaS0+ZnJlZV9zZWNtYXAsCj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFJTl9TRUNTKHNiaSkpOwo+ID4+PiAtICAg ICAgICAgICAgIGlmIChzZWNubyA+PSBNQUlOX1NFQ1Moc2JpKSkgewo+ID4+PiAtICAgICAgICAg ICAgICAgICAgICAgcmV0ID0gLUVOT1NQQzsKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGYy ZnNfYnVnX29uKHNiaSwgMSk7Cj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF91 bmxvY2s7Cj4gPj4+IC0gICAgICAgICAgICAgfQo+ID4+PiAtICAgICB9Cj4gPj4+IC0jZW5kaWYK PiA+Pj4gLQo+ID4+PiAgICAgICBpZiAoc2Vjbm8gPj0gTUFJTl9TRUNTKHNiaSkpIHsKPiA+Pj4g LSAgICAgICAgICAgICBzZWNubyA9IGZpbmRfZmlyc3RfemVyb19iaXQoZnJlZV9pLT5mcmVlX3Nl Y21hcCwKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTUFJTl9TRUNTKHNiaSkpOwo+ID4+PiAtICAgICAgICAgICAgIGlmIChzZWNubyA+ PSBNQUlOX1NFQ1Moc2JpKSkgewo+ID4+PiArICAgICAgICAgICAgIGlmIChsb29wZWQpIHsKPiA+ Pj4gICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FTk9TUEM7Cj4gPj4+ICAgICAgICAgICAg ICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksICFwaW5uaW5nKTsKPiA+Pj4gICAgICAgICAgICAg ICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKPiA+Pj4gICAgICAgICAgICAgICB9Cj4gPj4+ICsg ICAgICAgICAgICAgaGludCA9IDA7Cj4gPj4+ICsjaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQK PiA+Pj4gKyAgICAgICAgICAgICAvKiBXcml0ZSBvbmx5IHRvIHNlcXVlbnRpYWwgem9uZXMgKi8K PiA+Pj4gKyAgICAgICAgICAgICBpZiAoZjJmc19zYl9oYXNfYmxrem9uZWQoc2JpKSAmJgo+ID4+ PiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5ibGt6b25lX2FsbG9jX3BvbGljeSA9PSBCTEta T05FX0FMTE9DX09OTFlfU0VRKQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdF VF9TRUNfRlJPTV9TRUcoc2JpLCBzYmktPmZpcnN0X3NlcV96b25lX3NlZ25vKTsKPiA+Pj4gKyNl bmRpZgo+ID4+PiArICAgICAgICAgICAgIGxvb3BlZCA9IHRydWU7Cj4gPj4+ICsgICAgICAgICAg ICAgZ290byBmaW5kX290aGVyX3pvbmU7Cj4gPj4+ICAgICAgIH0KPiA+Pj4gKwo+ID4+PiAgICAg ICBzZWdubyA9IEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBzZWNubyk7Cj4gPj4+ICsKPiA+Pj4gKyAg ICAgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIFNUQVJUX0JMT0NLKHNiaSwg c2Vnbm8pKTsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoZjJmc19kZXZfaXNfYWxsb2NfYmxvY2tl ZChzYmksIGRldmksIHBpbm5pbmcpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgd2hpbGUgKGRldmkg PCBzYmktPnNfbmRldnMgJiYKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNfZGV2X2lz X2FsbG9jX2Jsb2NrZWQoc2JpLCBkZXZpLCBwaW5uaW5nKSkgewo+ID4+PiArICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGVuZF9zZWdubyA9IEdFVF9TRUdOTyhzYmksIEZERVYoZGV2 aSkuZW5kX2Jsayk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGhpbnQgPSBH RVRfU0VDX0ZST01fU0VHKHNiaSwgZW5kX3NlZ25vKSArIDE7Cj4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICBkZXZpKys7Cj4gPj4+ICsgICAgICAgICAgICAgfQo+ID4+PiArICAgICAgICAgICAg IGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4+PiArICAgICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAg aWYgKHNlY191c2FnZV9jaGVjayhzYmksIHNlY25vKSkgewo+ID4+PiArICAgICAgICAgICAgIGhp bnQgPSBzZWNubyArIDE7Cj4gPj4+ICsgICAgICAgICAgICAgZ290byBmaW5kX290aGVyX3pvbmU7 Cj4gPj4+ICsgICAgIH0KPiA+Pj4gICAgICAgem9uZW5vID0gR0VUX1pPTkVfRlJPTV9TRUMoc2Jp LCBzZWNubyk7Cj4gPj4+Cj4gPj4+ICAgICAgIC8qIGdpdmUgdXAgb24gZmluZGluZyBhbm90aGVy IHpvbmUgKi8KPiA+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc2VnbWVudC5oIGIvZnMvZjJmcy9z ZWdtZW50LmgKPiA+Pj4gaW5kZXggYjBjMDZiMzU4MGI0Li4xMDc1MDhhZTdlYjMgMTAwNjQ0Cj4g Pj4+IC0tLSBhL2ZzL2YyZnMvc2VnbWVudC5oCj4gPj4+ICsrKyBiL2ZzL2YyZnMvc2VnbWVudC5o Cj4gPj4+IEBAIC05NTQsMTAgKzk1NCwzMiBAQCBzdGF0aWMgaW5saW5lIGJsb2NrX3Qgc3VtX2Js a19hZGRyKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50IGJhc2UsIGludCB0eXBlKQo+ID4+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIChiYXNlICsgMSkgKyB0eXBlOwo+ID4+ PiAgfQo+ID4+Pgo+ID4+PiArc3RhdGljIGlubGluZSBib29sIGYyZnNfZGV2X2lzX3Jlc2Vydmlu ZyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBkZXZpKQo+ID4+PiArewo+ID4+PiArICAg ICBpZiAoIWYyZnNfc2JfaGFzX2RldmljZV9hbGlhcyhzYmkpKQo+ID4+PiArICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKPiA+Pj4gKyAgICAgcmV0dXJuIEZERVYoZGV2aSkuaXNfcmVzZXJ2aW5n Owo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZjJmc19kZXZfaXNf YWxsb2NfYmxvY2tlZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldmksIGJvb2wgcGlubmluZykKPiA+Pj4g K3sKPiA+Pj4gKyAgICAgaWYgKCFmMmZzX3NiX2hhc19kZXZpY2VfYWxpYXMoc2JpKSkKPiA+Pj4g KyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPj4+ICsgICAgIHJldHVybiAocGlubmluZyAm JiBGREVWKGRldmkpLmhhc19hbGlhcykgfHwgRkRFVihkZXZpKS5pc19yZXNlcnZpbmc7Cj4gPj4+ ICt9Cj4gPj4+ICsKPiA+Pj4gIHN0YXRpYyBpbmxpbmUgYm9vbCBzZWNfdXNhZ2VfY2hlY2soc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBpbnQgc2Vjbm8pCj4gPj4+ICB7Cj4gPj4+ ICAgICAgIGlmIChpc19jdXJzZWMoc2JpLCBzZWNubykgfHwgKHNiaS0+Y3VyX3ZpY3RpbV9zZWMg PT0gc2Vjbm8pKQo+ID4+PiAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4+PiArICAgICBp ZiAoZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpIHsKPiA+Pj4gKyAgICAgICAgICAgICBi bG9ja190IHN0YXJ0X2JsayA9IFNUQVJUX0JMT0NLKHNiaSwgR0VUX1NFR19GUk9NX1NFQyhzYmks IHNlY25vKSk7Cj4gPj4+ICsgICAgICAgICAgICAgaW50IGRldmkgPSBmMmZzX3RhcmdldF9kZXZp Y2VfaW5kZXgoc2JpLCBzdGFydF9ibGspOwo+ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAgaWYg KGYyZnNfZGV2X2lzX3Jlc2VydmluZyhzYmksIGRldmkpKQo+ID4+PiArICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gICAgICAgcmV0dXJuIGZhbHNl Owo+ID4+PiAgfQo+ID4+Pgo+ID4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zdXBlci5jIGIvZnMv ZjJmcy9zdXBlci5jCj4gPj4+IGluZGV4IGM0NDhkOTkyZmYyYS4uYmNhMTQ3NWNiNTczIDEwMDY0 NAo+ID4+PiAtLS0gYS9mcy9mMmZzL3N1cGVyLmMKPiA+Pj4gKysrIGIvZnMvZjJmcy9zdXBlci5j Cj4gPj4+IEBAIC01MDAxLDYgKzUwMDEsMzggQEAgc3RhdGljIHZvaWQgZjJmc190dW5pbmdfcGFy YW1ldGVycyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPj4+ICAgICAgIHNiaS0+cmVhZGRp cl9yYSA9IHRydWU7Cj4gPj4+ICB9Cj4gPj4+Cj4gPj4+ICtzdGF0aWMgdm9pZCBmMmZzX3Jlc3Rv cmVfZGV2aWNlX2FsaWFzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+Pj4gK3sKPiA+Pj4g KyAgICAgc3RydWN0IGlub2RlICpyb290ID0gZF9pbm9kZShzYmktPnNiLT5zX3Jvb3QpOwo+ID4+ PiArICAgICBzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmRlOwo+ID4+PiArICAgICBzdHJ1Y3QgZm9s aW8gKmZvbGlvOwo+ID4+PiArICAgICBpbnQgaTsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoIWYy ZnNfc2JfaGFzX2RldmljZV9hbGlhcyhzYmkpKQo+ID4+PiArICAgICAgICAgICAgIHJldHVybjsK PiA+Pj4gKwo+ID4+PiArICAgICBmb3IgKGkgPSAxOyBpIDwgc2JpLT5zX25kZXZzOyBpKyspIHsK PiA+Pj4gKyAgICAgICAgICAgICBjaGFyICpuYW1lID0gc3RycmNocihGREVWKGkpLnBhdGgsICcv Jyk7Cj4gPj4+ICsgICAgICAgICAgICAgc3RydWN0IHFzdHIgcXN0cjsKPiA+Pj4gKwo+ID4+PiAr ICAgICAgICAgICAgIG5hbWUgPSBuYW1lID8gbmFtZSArIDEgOiBGREVWKGkpLnBhdGg7Cj4gPj4+ ICsgICAgICAgICAgICAgcXN0ci5uYW1lID0gbmFtZTsKPiA+Pj4gKyAgICAgICAgICAgICBxc3Ry LmxlbiA9IHN0cmxlbihuYW1lKTsKPiA+Pj4gKwo+ID4+PiArICAgICAgICAgICAgIGRlID0gZjJm c19maW5kX2VudHJ5KHJvb3QsICZxc3RyLCAmZm9saW8pOwo+ID4+PiArICAgICAgICAgICAgIGlm IChkZSkgewo+ID4+Cj4gPj4gVHJpdmlhbCBjbGVhdXAgdG8gYXZvaWQgbG9uZyBsaW5lLgo+ID4+ Cj4gPj4gaWYgKCFkZSkKPiA+PiAgICAgICAgIGNvbnRpbnVlOwo+ID4+Cj4gPj4gVGhhbmtzLAo+ ID4+Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZjJm c19pZ2V0KHNiaS0+c2IsIGxlMzJfdG9fY3B1KGRlLT5pbm8pKTsKPiA+Pj4gKwo+ID4+PiArICAg ICAgICAgICAgICAgICAgICAgaWYgKCFJU19FUlIoaW5vZGUpKSB7Cj4gPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZERVYoaSkuaGFzX2FsaWFzID0g dHJ1ZTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB1dChpbm9kZSk7Cj4g Pj4+ICsgICAgICAgICAgICAgICAgICAgICB9Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBm MmZzX2ZvbGlvX3B1dChmb2xpbywgMCk7Cj4gPj4+ICsgICAgICAgICAgICAgfQo+ID4+PiArICAg ICB9Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gIHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPiA+Pj4gIHsKPiA+ Pj4gICAgICAgc3RydWN0IGYyZnNfZnNfY29udGV4dCAqY3R4ID0gZmMtPmZzX3ByaXZhdGU7Cj4g Pj4+IEBAIC01MjA5LDYgKzUyNDEsNyBAQCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4gPj4+ICAgICAgIHNi aS0+bGFzdF92YWxpZF9ibG9ja19jb3VudCA9IHNiaS0+dG90YWxfdmFsaWRfYmxvY2tfY291bnQ7 Cj4gPj4+ICAgICAgIHNiaS0+cmVzZXJ2ZWRfYmxvY2tzID0gMDsKPiA+Pj4gICAgICAgc2JpLT5j dXJyZW50X3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4gPj4+ICsgICAgIHNiaS0+YWxpYXNfcmVzZXJ2 ZWRfYmxvY2tzID0gMDsKPiA+Pj4gICAgICAgbGltaXRfcmVzZXJ2ZV9yb290KHNiaSk7Cj4gPj4+ ICAgICAgIGFkanVzdF91bnVzYWJsZV9jYXBfcGVyYyhzYmkpOwo+ID4+Pgo+ID4+PiBAQCAtNTQz Niw2ICs1NDY5LDggQEAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Js b2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQo+ID4+PiAgICAgICBmMmZzX3VwZGF0ZV90 aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4+PiAgICAgICBjbGVhcl9zYmlfZmxhZyhzYmksIFNCSV9D UF9ESVNBQkxFRF9RVUlDSyk7Cj4gPj4+Cj4gPj4+ICsgICAgIGYyZnNfcmVzdG9yZV9kZXZpY2Vf YWxpYXMoc2JpKTsKPiA+Pj4gKwo+ID4+PiAgICAgICBzYmktPnVtb3VudF9sb2NrX2hvbGRlciA9 IE5VTEw7Cj4gPj4+ICAgICAgIHJldHVybiAwOwo+ID4+Pgo+ID4+PiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS91YXBpL2xpbnV4L2YyZnMuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9mMmZzLmgKPiA+Pj4g aW5kZXggNzk1ZTI2MjU4MzU1Li40NDA5YWRhMmZlY2IgMTAwNjQ0Cj4gPj4+IC0tLSBhL2luY2x1 ZGUvdWFwaS9saW51eC9mMmZzLmgKPiA+Pj4gKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMu aAo+ID4+PiBAQCAtNDUsNiArNDUsOSBAQAo+ID4+PiAgI2RlZmluZSBGMkZTX0lPQ19TVEFSVF9B VE9NSUNfUkVQTEFDRSAgICAgICAgX0lPKEYyRlNfSU9DVExfTUFHSUMsIDI1KQo+ID4+PiAgI2Rl ZmluZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX0ZJTEUgIF9JT1IoRjJGU19JT0NUTF9NQUdJQywg MjYsIF9fdTMyKQo+ID4+PiAgI2RlZmluZSBGMkZTX0lPQ19JT19QUklPICAgICAgICAgICAgIF9J T1coRjJGU19JT0NUTF9NQUdJQywgMjcsIF9fdTMyKQo+ID4+PiArI2RlZmluZSBGMkZTX0lPQ19S RVNFUlZFX0RFVl9BTElBUyAgIF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyOCkKPiA+Pj4gKyNkZWZp bmUgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVMgICBfSU8oRjJGU19JT0NUTF9NQUdJQywgMjkp Cj4gPj4+ICsjZGVmaW5lIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTICAgICAgICBfSU9S KEYyRlNfSU9DVExfTUFHSUMsIDMwLCBfX3UzMikKPiA+Pj4KPiA+Pj4gIC8qCj4gPj4+ICAgKiBz aG91bGQgYmUgc2FtZSBhcyBYRlNfSU9DX0dPSU5HRE9XTi4KPiA+Pj4gQEAgLTcwLDYgKzczLDEw IEBAIGVudW0gewo+ID4+PiAgICAgICBGMkZTX0lPUFJJT19NQVgsCj4gPj4+ICB9Owo+ID4+Pgo+ ID4+PiArLyogZm9yIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTICovCj4gPj4+ICsjZGVm aW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNFRCAgICAgICAwCj4gPj4+ICsjZGVmaW5l IEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRVNFUlZFRCAgICAgICAxCj4gPj4+ICsKPiA+Pj4gIHN0 cnVjdCBmMmZzX2djX3JhbmdlIHsKPiA+Pj4gICAgICAgX191MzIgc3luYzsKPiA+Pj4gICAgICAg X191NjQgc3RhcnQ7Cj4gPj4KPgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2 ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xp c3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK