From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: Re: [PATCH 3/4] drm/amdgpu: Remove wrapper layer of amdgpu_powerplay Date: Tue, 13 Mar 2018 12:02:25 -0400 Message-ID: References: <1520858050-7338-1-git-send-email-Rex.Zhu@amd.com> <1520858050-7338-3-git-send-email-Rex.Zhu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1520858050-7338-3-git-send-email-Rex.Zhu-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Rex Zhu Cc: amd-gfx list T24gTW9uLCBNYXIgMTIsIDIwMTggYXQgODozNCBBTSwgUmV4IFpodSA8UmV4LlpodUBhbWQuY29t PiB3cm90ZToKPiBkZWxldGUgc3RydWN0IHBwX2luc3RhbmNlLAo+IG1ha2Ugc3RydWN0IGh3bWdy IGFzIHRoZSBzbXUgaHcgY29udGV4dC4KPgo+IENoYW5nZS1JZDogSTQ0NGFhYmUyMDQ3N2ZjMmZj MTI4ODU0MmQ0NWJmODg3ZDQ1YmYwY2QKPiBTaWduZWQtb2ZmLWJ5OiBSZXggWmh1IDxSZXguWmh1 QGFtZC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlICAg ICAgICAgICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5o ICAgICAgICAgICAgIHwgICAyIC0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3BtLmMgICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3Bvd2VycGxheS5jICAgfCAyODUgLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3Bvd2VycGxheS5oICAgfCAgMzMgLS0KPiAgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvY2lfZHBtLmMgICAgICAgICAgICAgfCAgMTYgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvY2lrLmMgICAgICAgICAgICAgICAgfCAgMTUgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvY2lrX2RwbS5oICAgICAgICAgICAgfCAgIDcgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUva3ZfZHBtLmMgICAgICAgICAgICAgfCAgMTYgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYyAgICAgICAgICAgICAgICAgfCAgIDggKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfZHBtLmMgICAgICAgICAgICAgfCAgMTYgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfZHBtLmggICAgICAgICAgICAgfCAgIDMg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc29jMTUuYyAgICAgICAgICAgICAgfCAg IDUgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYyAgICAgICAgICAgICAgICAg fCAgMTMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9wcF9pbnRlcmZhY2Uu aCAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxh eS5jICAgfCA2MTEgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdyLmMgICAgIHwgIDUwICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L2luYy9od21nci5oICAgICAgIHwgIDE2ICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2luYy9wcF9pbnN0YW5jZS5oIHwgIDM2IC0tCj4gIDE5IGZpbGVz IGNoYW5nZWQsIDMzNiBpbnNlcnRpb25zKCspLCA4MDQgZGVsZXRpb25zKC0pCj4gIGRlbGV0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5LmMK PiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9w b3dlcnBsYXkuaAo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvaW5jL3BwX2luc3RhbmNlLmgKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxl Cj4gaW5kZXggMzUzYzkzNy4uOTRkYjM1YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01h a2VmaWxlCj4gQEAgLTg3LDggKzg3LDcgQEAgYW1kZ3B1LXkgKz0gXAo+Cj4gICMgYWRkIFNNQyBi bG9jawo+ICBhbWRncHUteSArPSBcCj4gLSAgICAgICBhbWRncHVfZHBtLm8gXAo+IC0gICAgICAg YW1kZ3B1X3Bvd2VycGxheS5vCj4gKyAgICAgICBhbWRncHVfZHBtLm8KPgo+ICAjIGFkZCBEQ0Ug YmxvY2sKPiAgYW1kZ3B1LXkgKz0gXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4g aW5kZXggOTZiY2RiOS4uNjI3NzNiNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dS5oCj4gQEAgLTEzOTgsOSArMTM5OCw3IEBAIGVudW0gYW1kX2h3X2lwX2Jsb2NrX3R5cGUgewo+ ICAjZGVmaW5lIEhXSVBfTUFYX0lOU1RBTkNFICAgICAgNgo+Cj4gIHN0cnVjdCBhbWRfcG93ZXJw bGF5IHsKPiAtICAgICAgIHN0cnVjdCBjZ3NfZGV2aWNlICpjZ3NfZGV2aWNlOwo+ICAgICAgICAg dm9pZCAqcHBfaGFuZGxlOwo+IC0gICAgICAgY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyAqaXBf ZnVuY3M7Cj4gICAgICAgICBjb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jczsKPiAg fTsKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0u YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbS5jCj4gaW5kZXggNjMyYjE4 Ni4uMzYxOTc1YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbS5jCj4g QEAgLTExNTQsNyArMTE1NCw3IEBAIHN0YXRpYyB1bW9kZV90IGh3bW9uX2F0dHJpYnV0ZXNfdmlz aWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwKPiAgICAgICAgIHVtb2RlX3QgZWZmZWN0aXZlX21v ZGUgPSBhdHRyLT5tb2RlOwo+Cj4gICAgICAgICAvKiBoYW5kbGUgbm9uLXBvd2VycGxheSBsaW1p dGF0aW9ucyAqLwo+IC0gICAgICAgaWYgKCFhZGV2LT5wb3dlcnBsYXkuY2dzX2RldmljZSkgewo+ ICsgICAgICAgaWYgKCFhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKSB7Cj4gICAgICAgICAgICAg ICAgIC8qIFNraXAgZmFuIGF0dHJpYnV0ZXMgaWYgZmFuIGlzIG5vdCBwcmVzZW50ICovCj4gICAg ICAgICAgICAgICAgIGlmIChhZGV2LT5wbS5ub19mYW4gJiYKPiAgICAgICAgICAgICAgICAgICAg IChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcHdtMS5kZXZfYXR0ci5hdHRyIHx8Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wb3dlcnBsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wb3dlcnBsYXkuYwo+IGRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDgyNWM5YjkuLjAwMDAwMDAKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5LmMKPiArKysgL2Rldi9udWxsCj4gQEAg LTEsMjg1ICswLDAgQEAKPiAtLyoKPiAtICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8g RGV2aWNlcywgSW5jLgo+IC0gKgo+IC0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+IC0gKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAo+IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gLSAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+IC0g KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKPiAtICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiAtICoKPiAtICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk ZWQgaW4KPiAtICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCj4gLSAqCj4gLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gLSAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAo+IC0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiAtICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1Ig QVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCj4gLSAqIE9USEVS IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLAo+IC0gKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiAtICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLgo+IC0gKgo+IC0gKiBBdXRob3JzOiBBTUQKPiAtICoKPiAtICovCj4gLSNpbmNsdWRl ICJhdG9tLmgiCj4gLSNpbmNsdWRlICJhbWRncHUuaCIKPiAtI2luY2x1ZGUgImFtZF9zaGFyZWQu aCIKPiAtI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+IC0jaW5jbHVkZSA8bGludXgvbW9kdWxl cGFyYW0uaD4KPiAtI2luY2x1ZGUgImFtZGdwdV9wbS5oIgo+IC0jaW5jbHVkZSA8ZHJtL2FtZGdw dV9kcm0uaD4KPiAtI2luY2x1ZGUgImFtZGdwdV9wb3dlcnBsYXkuaCIKPiAtI2luY2x1ZGUgInNp X2RwbS5oIgo+IC0jaW5jbHVkZSAiY2lrX2RwbS5oIgo+IC0jaW5jbHVkZSAidmlfZHBtLmgiCj4g LQo+IC1zdGF0aWMgaW50IGFtZGdwdV9wcF9lYXJseV9pbml0KHZvaWQgKmhhbmRsZSkKPiAtewo+ IC0gICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKiloYW5kbGU7Cj4gLSAgICAgICBzdHJ1Y3QgYW1kX3Bvd2VycGxheSAqYW1kX3BwOwo+IC0g ICAgICAgaW50IHJldCA9IDA7Cj4gLQo+IC0gICAgICAgYW1kX3BwID0gJihhZGV2LT5wb3dlcnBs YXkpOwo+IC0gICAgICAgYW1kX3BwLT5wcF9oYW5kbGUgPSAodm9pZCAqKWFkZXY7Cj4gLQo+IC0g ICAgICAgc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUpIHsKPiAtICAgICAgIGNhc2UgQ0hJUF9QT0xB UklTMTE6Cj4gLSAgICAgICBjYXNlIENISVBfUE9MQVJJUzEwOgo+IC0gICAgICAgY2FzZSBDSElQ X1BPTEFSSVMxMjoKPiAtICAgICAgIGNhc2UgQ0hJUF9UT05HQToKPiAtICAgICAgIGNhc2UgQ0hJ UF9GSUpJOgo+IC0gICAgICAgY2FzZSBDSElQX1RPUEFaOgo+IC0gICAgICAgY2FzZSBDSElQX0NB UlJJWk86Cj4gLSAgICAgICBjYXNlIENISVBfU1RPTkVZOgo+IC0gICAgICAgY2FzZSBDSElQX1ZF R0ExMDoKPiAtICAgICAgIGNhc2UgQ0hJUF9SQVZFTjoKPiAtICAgICAgICAgICAgICAgYW1kX3Bw LT5jZ3NfZGV2aWNlID0gYW1kZ3B1X2Nnc19jcmVhdGVfZGV2aWNlKGFkZXYpOwo+IC0gICAgICAg ICAgICAgICBhbWRfcHAtPmlwX2Z1bmNzID0gJnBwX2lwX2Z1bmNzOwo+IC0gICAgICAgICAgICAg ICBhbWRfcHAtPnBwX2Z1bmNzID0gJnBwX2RwbV9mdW5jczsKPiAtICAgICAgICAgICAgICAgYnJl YWs7Cj4gLSAgICAgICAvKiBUaGVzZSBjaGlwcyBkb24ndCBoYXZlIHBvd2VycGxheSBpbXBsZW1l bmF0aW9ucyAqLwo+IC0jaWZkZWYgQ09ORklHX0RSTV9BTURHUFVfU0kKPiAtICAgICAgIGNhc2Ug Q0hJUF9UQUhJVEk6Cj4gLSAgICAgICBjYXNlIENISVBfUElUQ0FJUk46Cj4gLSAgICAgICBjYXNl IENISVBfVkVSREU6Cj4gLSAgICAgICBjYXNlIENISVBfT0xBTkQ6Cj4gLSAgICAgICBjYXNlIENI SVBfSEFJTkFOOgo+IC0gICAgICAgICAgICAgICBhbWRfcHAtPmlwX2Z1bmNzID0gJnNpX2RwbV9p cF9mdW5jczsKPiAtICAgICAgICAgICAgICAgYW1kX3BwLT5wcF9mdW5jcyA9ICZzaV9kcG1fZnVu Y3M7Cj4gLSAgICAgICBicmVhazsKPiAtI2VuZGlmCj4gLSNpZmRlZiBDT05GSUdfRFJNX0FNREdQ VV9DSUsKPiAtICAgICAgIGNhc2UgQ0hJUF9CT05BSVJFOgo+IC0gICAgICAgY2FzZSBDSElQX0hB V0FJSToKPiAtICAgICAgICAgICAgICAgaWYgKGFtZGdwdV9kcG0gPT0gLTEpIHsKPiAtICAgICAg ICAgICAgICAgICAgICAgICBhbWRfcHAtPmlwX2Z1bmNzID0gJmNpX2RwbV9pcF9mdW5jczsKPiAt ICAgICAgICAgICAgICAgICAgICAgICBhbWRfcHAtPnBwX2Z1bmNzID0gJmNpX2RwbV9mdW5jczsK PiAtICAgICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICBhbWRf cHAtPmNnc19kZXZpY2UgPSBhbWRncHVfY2dzX2NyZWF0ZV9kZXZpY2UoYWRldik7Cj4gLSAgICAg ICAgICAgICAgICAgICAgICAgYW1kX3BwLT5pcF9mdW5jcyA9ICZwcF9pcF9mdW5jczsKPiAtICAg ICAgICAgICAgICAgICAgICAgICBhbWRfcHAtPnBwX2Z1bmNzID0gJnBwX2RwbV9mdW5jczsKPiAt ICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgIGNhc2Ug Q0hJUF9LQUJJTkk6Cj4gLSAgICAgICBjYXNlIENISVBfTVVMTElOUzoKPiAtICAgICAgIGNhc2Ug Q0hJUF9LQVZFUkk6Cj4gLSAgICAgICAgICAgICAgIGFtZF9wcC0+aXBfZnVuY3MgPSAma3ZfZHBt X2lwX2Z1bmNzOwo+IC0gICAgICAgICAgICAgICBhbWRfcHAtPnBwX2Z1bmNzID0gJmt2X2RwbV9m dW5jczsKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSNlbmRpZgo+IC0gICAgICAgZGVmYXVs dDoKPiAtICAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiAtICAgICAgICAgICAgICAgYnJl YWs7Cj4gLSAgICAgICB9Cj4gLQo+IC0gICAgICAgaWYgKGFkZXYtPnBvd2VycGxheS5pcF9mdW5j cy0+ZWFybHlfaW5pdCkKPiAtICAgICAgICAgICAgICAgcmV0ID0gYWRldi0+cG93ZXJwbGF5Lmlw X2Z1bmNzLT5lYXJseV9pbml0KGFkZXYpOwo+IC0KPiAtICAgICAgIHJldHVybiByZXQ7Cj4gLX0K PiAtCj4gLQo+IC1zdGF0aWMgaW50IGFtZGdwdV9wcF9sYXRlX2luaXQodm9pZCAqaGFuZGxlKQo+ IC17Cj4gLSAgICAgICBpbnQgcmV0ID0gMDsKPiAtICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+IC0KPiAtICAgICAgIGlm IChhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPmxhdGVfaW5pdCkKPiAtICAgICAgICAgICAgICAg cmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5sYXRlX2luaXQoCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwo+ IC0KPiAtICAgICAgIHJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgYW1kZ3B1X3Bw X3N3X2luaXQodm9pZCAqaGFuZGxlKQo+IC17Cj4gLSAgICAgICBpbnQgcmV0ID0gMDsKPiAtICAg ICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICop aGFuZGxlOwo+IC0KPiAtICAgICAgIGlmIChhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnN3X2lu aXQpCj4gLSAgICAgICAgICAgICAgIHJldCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+c3df aW5pdCgKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSk7Cj4gLQo+IC0gICAgICAgcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAt c3RhdGljIGludCBhbWRncHVfcHBfc3dfZmluaSh2b2lkICpoYW5kbGUpCj4gLXsKPiAtICAgICAg IGludCByZXQgPSAwOwo+IC0gICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4gLQo+IC0gICAgICAgaWYgKGFkZXYtPnBvd2Vy cGxheS5pcF9mdW5jcy0+c3dfZmluaSkKPiAtICAgICAgICAgICAgICAgcmV0ID0gYWRldi0+cG93 ZXJwbGF5LmlwX2Z1bmNzLT5zd19maW5pKAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKPiAtICAgICAgIGlmIChyZXQp Cj4gLSAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gLQo+IC0gICAgICAgcmV0dXJuIHJldDsK PiAtfQo+IC0KPiAtc3RhdGljIGludCBhbWRncHVfcHBfaHdfaW5pdCh2b2lkICpoYW5kbGUpCj4g LXsKPiAtICAgICAgIGludCByZXQgPSAwOwo+IC0gICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4gLQo+IC0gICAgICAgaWYg KGFkZXYtPmZpcm13YXJlLmxvYWRfdHlwZSA9PSBBTURHUFVfRldfTE9BRF9TTVUpCj4gLSAgICAg ICAgICAgICAgIGFtZGdwdV91Y29kZV9pbml0X2JvKGFkZXYpOwo+IC0KPiAtICAgICAgIGlmIChh ZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPmh3X2luaXQpCj4gLSAgICAgICAgICAgICAgIHJldCA9 IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+aHdfaW5pdCgKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7Cj4gLQo+IC0g ICAgICAgcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBhbWRncHVfcHBfaHdfZmlu aSh2b2lkICpoYW5kbGUpCj4gLXsKPiAtICAgICAgIGludCByZXQgPSAwOwo+IC0gICAgICAgc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7 Cj4gLQo+IC0gICAgICAgaWYgKGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+aHdfZmluaSkKPiAt ICAgICAgICAgICAgICAgcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5od19maW5pKAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlKTsKPiAtCj4gLSAgICAgICByZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1zdGF0aWMg dm9pZCBhbWRncHVfcHBfbGF0ZV9maW5pKHZvaWQgKmhhbmRsZSkKPiAtewo+IC0gICAgICAgc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7 Cj4gLQo+IC0gICAgICAgaWYgKGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+bGF0ZV9maW5pKQo+ IC0gICAgICAgICAgICAgICBhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPmxhdGVfZmluaSgKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwo+IC0K PiAtICAgICAgIGlmIChhZGV2LT5wb3dlcnBsYXkuY2dzX2RldmljZSkKPiAtICAgICAgICAgICAg ICAgYW1kZ3B1X2Nnc19kZXN0cm95X2RldmljZShhZGV2LT5wb3dlcnBsYXkuY2dzX2RldmljZSk7 Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgYW1kZ3B1X3BwX3N1c3BlbmQodm9pZCAqaGFuZGxlKQo+ IC17Cj4gLSAgICAgICBpbnQgcmV0ID0gMDsKPiAtICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+IC0KPiAtICAgICAgIGlm IChhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnN1c3BlbmQpCj4gLSAgICAgICAgICAgICAgIHJl dCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+c3VzcGVuZCgKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwo+IC0g ICAgICAgcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBhbWRncHVfcHBfcmVzdW1l KHZvaWQgKmhhbmRsZSkKPiAtewo+IC0gICAgICAgaW50IHJldCA9IDA7Cj4gLSAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsK PiAtCj4gLSAgICAgICBpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5yZXN1bWUpCj4gLSAg ICAgICAgICAgICAgIHJldCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+cmVzdW1lKAo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlKTsKPiAtICAgICAgIHJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgYW1k Z3B1X3BwX3NldF9jbG9ja2dhdGluZ19zdGF0ZSh2b2lkICpoYW5kbGUsCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gYW1kX2Nsb2NrZ2F0aW5nX3N0YXRlIHN0 YXRlKQo+IC17Cj4gLSAgICAgICBpbnQgcmV0ID0gMDsKPiAtICAgICAgIHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+IC0KPiAtICAg ICAgIGlmIChhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnNldF9jbG9ja2dhdGluZ19zdGF0ZSkK PiAtICAgICAgICAgICAgICAgcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5zZXRfY2xv Y2tnYXRpbmdfc3RhdGUoCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLCBzdGF0ZSk7Cj4gLSAgICAgICByZXR1cm4gcmV0Owo+IC19Cj4g LQo+IC1zdGF0aWMgaW50IGFtZGdwdV9wcF9zZXRfcG93ZXJnYXRpbmdfc3RhdGUodm9pZCAqaGFu ZGxlLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGFtZF9w b3dlcmdhdGluZ19zdGF0ZSBzdGF0ZSkKPiAtewo+IC0gICAgICAgaW50IHJldCA9IDA7Cj4gLSAg ICAgICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq KWhhbmRsZTsKPiAtCj4gLSAgICAgICBpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5zZXRf cG93ZXJnYXRpbmdfc3RhdGUpCj4gLSAgICAgICAgICAgICAgIHJldCA9IGFkZXYtPnBvd2VycGxh eS5pcF9mdW5jcy0+c2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHN0YXRlKTsKPiAtICAgICAg IHJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLQo+IC1zdGF0aWMgYm9vbCBhbWRncHVfcHBfaXNfaWRs ZSh2b2lkICpoYW5kbGUpCj4gLXsKPiAtICAgICAgIGJvb2wgcmV0ID0gdHJ1ZTsKPiAtICAgICAg IHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFu ZGxlOwo+IC0KPiAtICAgICAgIGlmIChhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPmlzX2lkbGUp Cj4gLSAgICAgICAgICAgICAgIHJldCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+aXNfaWRs ZSgKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSk7Cj4gLSAgICAgICByZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1zdGF0aWMg aW50IGFtZGdwdV9wcF93YWl0X2Zvcl9pZGxlKHZvaWQgKmhhbmRsZSkKPiAtewo+IC0gICAgICAg aW50IHJldCA9IDA7Cj4gLSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPiAtCj4gLSAgICAgICBpZiAoYWRldi0+cG93ZXJw bGF5LmlwX2Z1bmNzLT53YWl0X2Zvcl9pZGxlKQo+IC0gICAgICAgICAgICAgICByZXQgPSBhZGV2 LT5wb3dlcnBsYXkuaXBfZnVuY3MtPndhaXRfZm9yX2lkbGUoCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwo+IC0gICAg ICAgcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBhbWRncHVfcHBfc29mdF9yZXNl dCh2b2lkICpoYW5kbGUpCj4gLXsKPiAtICAgICAgIGludCByZXQgPSAwOwo+IC0gICAgICAgc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7 Cj4gLQo+IC0gICAgICAgaWYgKGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+c29mdF9yZXNldCkK PiAtICAgICAgICAgICAgICAgcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5zb2Z0X3Jl c2V0KAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlKTsKPiAtICAgICAgIHJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLXN0YXRp YyBjb25zdCBzdHJ1Y3QgYW1kX2lwX2Z1bmNzIGFtZGdwdV9wcF9pcF9mdW5jcyA9IHsKPiAtICAg ICAgIC5uYW1lID0gImFtZGdwdV9wb3dlcnBsYXkiLAo+IC0gICAgICAgLmVhcmx5X2luaXQgPSBh bWRncHVfcHBfZWFybHlfaW5pdCwKPiAtICAgICAgIC5sYXRlX2luaXQgPSBhbWRncHVfcHBfbGF0 ZV9pbml0LAo+IC0gICAgICAgLnN3X2luaXQgPSBhbWRncHVfcHBfc3dfaW5pdCwKPiAtICAgICAg IC5zd19maW5pID0gYW1kZ3B1X3BwX3N3X2ZpbmksCj4gLSAgICAgICAuaHdfaW5pdCA9IGFtZGdw dV9wcF9od19pbml0LAo+IC0gICAgICAgLmh3X2ZpbmkgPSBhbWRncHVfcHBfaHdfZmluaSwKPiAt ICAgICAgIC5sYXRlX2ZpbmkgPSBhbWRncHVfcHBfbGF0ZV9maW5pLAo+IC0gICAgICAgLnN1c3Bl bmQgPSBhbWRncHVfcHBfc3VzcGVuZCwKPiAtICAgICAgIC5yZXN1bWUgPSBhbWRncHVfcHBfcmVz dW1lLAo+IC0gICAgICAgLmlzX2lkbGUgPSBhbWRncHVfcHBfaXNfaWRsZSwKPiAtICAgICAgIC53 YWl0X2Zvcl9pZGxlID0gYW1kZ3B1X3BwX3dhaXRfZm9yX2lkbGUsCj4gLSAgICAgICAuc29mdF9y ZXNldCA9IGFtZGdwdV9wcF9zb2Z0X3Jlc2V0LAo+IC0gICAgICAgLnNldF9jbG9ja2dhdGluZ19z dGF0ZSA9IGFtZGdwdV9wcF9zZXRfY2xvY2tnYXRpbmdfc3RhdGUsCj4gLSAgICAgICAuc2V0X3Bv d2VyZ2F0aW5nX3N0YXRlID0gYW1kZ3B1X3BwX3NldF9wb3dlcmdhdGluZ19zdGF0ZSwKPiAtfTsK PiAtCj4gLWNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBhbWRncHVfcHBfaXBf YmxvY2sgPQo+IC17Cj4gLSAgICAgICAudHlwZSA9IEFNRF9JUF9CTE9DS19UWVBFX1NNQywKPiAt ICAgICAgIC5tYWpvciA9IDEsCj4gLSAgICAgICAubWlub3IgPSAwLAo+IC0gICAgICAgLnJldiA9 IDAsCj4gLSAgICAgICAuZnVuY3MgPSAmYW1kZ3B1X3BwX2lwX2Z1bmNzLAo+IC19Owo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5LmggYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5LmgKPiBkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCBjMGM0YmZkLi4wMDAwMDAwCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bvd2VycGxheS5oCj4gKysrIC9kZXYvbnVsbAo+IEBA IC0xLDMzICswLDAgQEAKPiAtLyoKPiAtICogIENvcHlyaWdodCAyMDE1IEFkdmFuY2VkIE1pY3Jv IERldmljZXMsIEluYy4KPiAtICoKPiAtICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiAtICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKPiAtICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiAt ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCj4gLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gLSAqCj4gLSAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1 ZGVkIGluCj4gLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv ZnR3YXJlLgo+IC0gKgo+IC0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+IC0gKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gLSAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9S IEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgo+IC0gKiBPVEhF UiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwKPiAtICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCj4gLSAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KPiAtICoKPiAtICogQXV0aG9yczogQU1ECj4gLSAqCj4gLSAqLwo+IC0KPiAtI2lm bmRlZiBfX0FNREdQVV9QT1dFUlBMQVlfSF9fCj4gLSNkZWZpbmUgX19BTURHUFVfUE9XRVJQTEFZ X0hfXwo+IC0KPiAtI2luY2x1ZGUgImFtZF9zaGFyZWQuaCIKPiAtCj4gLWV4dGVybiBjb25zdCBz dHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gYW1kZ3B1X3BwX2lwX2Jsb2NrOwo+IC0KPiAt I2VuZGlmIC8qIF9fQU1ER1BVX1BPV0VSUExBWV9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvY2lfZHBtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9jaV9kcG0uYwo+IGluZGV4IGRkYjgxNGYuLmZhMTUxZjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvY2lfZHBtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9jaV9kcG0uYwo+IEBAIC02NSw2ICs2NSw4IEBACj4gICNkZWZpbmUgVk9MVEFHRV9W SURfT0ZGU0VUX1NDQUxFMSAgICA2MjUKPiAgI2RlZmluZSBWT0xUQUdFX1ZJRF9PRkZTRVRfU0NB TEUyICAgIDEwMAo+Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzIGNpX2RwbV9m dW5jczsKPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2lfcHRfZGVmYXVsdHMgZGVmYXVsdHNf aGF3YWlpX3h0ID0KPiAgewo+ICAgICAgICAgMSwgMHhGLCAweEZELCAweDE5LCA1LCAweDE0LCAw LCAweEIwMDAwLAo+IEBAIC02MjQxLDYgKzYyNDMsNyBAQCBzdGF0aWMgaW50IGNpX2RwbV9lYXJs eV9pbml0KHZvaWQgKmhhbmRsZSkKPiAgewo+ICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4KPiArICAgICAgIGFkZXYt PnBvd2VycGxheS5wcF9mdW5jcyA9ICZjaV9kcG1fZnVuY3M7Cj4gICAgICAgICBjaV9kcG1fc2V0 X2lycV9mdW5jcyhhZGV2KTsKPgo+ICAgICAgICAgcmV0dXJuIDA7Cj4gQEAgLTY3NjAsNyArNjc2 Myw3IEBAIHN0YXRpYyBpbnQgY2lfZHBtX3JlYWRfc2Vuc29yKHZvaWQgKmhhbmRsZSwgaW50IGlk eCwKPiAgICAgICAgIH0KPiAgfQo+Cj4gLWNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3MgY2lfZHBt X2lwX2Z1bmNzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBjaV9kcG1f aXBfZnVuY3MgPSB7Cj4gICAgICAgICAubmFtZSA9ICJjaV9kcG0iLAo+ICAgICAgICAgLmVhcmx5 X2luaXQgPSBjaV9kcG1fZWFybHlfaW5pdCwKPiAgICAgICAgIC5sYXRlX2luaXQgPSBjaV9kcG1f bGF0ZV9pbml0LAo+IEBAIC02Nzc3LDcgKzY3ODAsMTYgQEAgc3RhdGljIGludCBjaV9kcG1fcmVh ZF9zZW5zb3Iodm9pZCAqaGFuZGxlLCBpbnQgaWR4LAo+ICAgICAgICAgLnNldF9wb3dlcmdhdGlu Z19zdGF0ZSA9IGNpX2RwbV9zZXRfcG93ZXJnYXRpbmdfc3RhdGUsCj4gIH07Cj4KPiAtY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyBjaV9kcG1fZnVuY3MgPSB7Cj4gK2NvbnN0IHN0cnVjdCBhbWRn cHVfaXBfYmxvY2tfdmVyc2lvbiBjaV9zbXVfaXBfYmxvY2sgPQo+ICt7Cj4gKyAgICAgICAudHlw ZSA9IEFNRF9JUF9CTE9DS19UWVBFX1NNQywKPiArICAgICAgIC5tYWpvciA9IDEsCgpGb3IgY29y cmVjdG5lc3MsIHRoaXMgc2hvdWxkIGJlIG1ham9yID0gNy4KCj4gKyAgICAgICAubWlub3IgPSAw LAo+ICsgICAgICAgLnJldiA9IDAsCj4gKyAgICAgICAuZnVuY3MgPSAmY2lfZHBtX2lwX2Z1bmNz LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgY2lfZHBtX2Z1 bmNzID0gewo+ICAgICAgICAgLnByZV9zZXRfcG93ZXJfc3RhdGUgPSAmY2lfZHBtX3ByZV9zZXRf cG93ZXJfc3RhdGUsCj4gICAgICAgICAuc2V0X3Bvd2VyX3N0YXRlID0gJmNpX2RwbV9zZXRfcG93 ZXJfc3RhdGUsCj4gICAgICAgICAucG9zdF9zZXRfcG93ZXJfc3RhdGUgPSAmY2lfZHBtX3Bvc3Rf c2V0X3Bvd2VyX3N0YXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9jaWsuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jCj4gaW5kZXggNDMyNDE4 NC4uYjIyOTAyOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jCj4gQEAgLTY3LDcgKzY3 LDYgQEAKPgo+ICAjaW5jbHVkZSAiYW1kZ3B1X2RtLmgiCj4gICNpbmNsdWRlICJhbWRncHVfYW1k a2ZkLmgiCj4gLSNpbmNsdWRlICJhbWRncHVfcG93ZXJwbGF5LmgiCj4gICNpbmNsdWRlICJkY2Vf dmlydHVhbC5oIgo+Cj4gIC8qCj4gQEAgLTIwMDAsNyArMTk5OSwxMCBAQCBpbnQgY2lrX3NldF9p cF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAgICAgICAgICAgICAgIGFt ZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZjaWtfY29tbW9uX2lwX2Jsb2NrKTsKPiAg ICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmdtY192N18w X2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQo YWRldiwgJmNpa19paF9pcF9ibG9jayk7Cj4gLSAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2Vf aXBfYmxvY2tfYWRkKGFkZXYsICZhbWRncHVfcHBfaXBfYmxvY2spOwo+ICsgICAgICAgICAgICAg ICBpZiAoYW1kZ3B1X2RwbSA9PSAtMSkKPiArICAgICAgICAgICAgICAgICAgICAgICBhbWRncHVf ZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmY2lfc211X2lwX2Jsb2NrKTsKPiArICAgICAgICAg ICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxv Y2tfYWRkKGFkZXYsICZwcF9zbXVfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBpZiAoYWRl di0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBhbWRn cHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmZGNlX3ZpcnR1YWxfaXBfYmxvY2spOwo+ICAj aWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykKPiBAQCAtMjAxOCw3ICsyMDIwLDEwIEBAIGlu dCBjaWtfc2V0X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgICAgICAg ICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmNpa19jb21tb25faXBf YmxvY2spOwo+ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2 LCAmZ21jX3Y3XzBfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lw X2Jsb2NrX2FkZChhZGV2LCAmY2lrX2loX2lwX2Jsb2NrKTsKPiAtICAgICAgICAgICAgICAgYW1k Z3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7Cj4gKyAg ICAgICAgICAgICAgIGlmIChhbWRncHVfZHBtID09IC0xKQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZjaV9zbXVfaXBfYmxvY2spOwo+ ICsgICAgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYW1kZ3B1X2Rl dmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnBwX3NtdV9pcF9ibG9jayk7Cj4gICAgICAgICAgICAg ICAgIGlmIChhZGV2LT5lbmFibGVfdmlydHVhbF9kaXNwbGF5KQo+ICAgICAgICAgICAgICAgICAg ICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9i bG9jayk7Cj4gICNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKQo+IEBAIC0yMDM2LDcgKzIw NDEsNyBAQCBpbnQgY2lrX3NldF9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp Cj4gICAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZjaWtf Y29tbW9uX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9j a19hZGQoYWRldiwgJmdtY192N18wX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1 X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmNpa19paF9pcF9ibG9jayk7Cj4gLSAgICAgICAg ICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZhbWRncHVfcHBfaXBfYmxv Y2spOwo+ICsgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAm a3Zfc211X2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgaWYgKGFkZXYtPmVuYWJsZV92aXJ0 dWFsX2Rpc3BsYXkpCj4gICAgICAgICAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9i bG9ja19hZGQoYWRldiwgJmRjZV92aXJ0dWFsX2lwX2Jsb2NrKTsKPiAgI2lmIGRlZmluZWQoQ09O RklHX0RSTV9BTURfREMpCj4gQEAgLTIwNTUsNyArMjA2MCw3IEBAIGludCBjaWtfc2V0X2lwX2Js b2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgICAgICAgICAgICAgICAgYW1kZ3B1 X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmNpa19jb21tb25faXBfYmxvY2spOwo+ICAgICAg ICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmZ21jX3Y3XzBfaXBf YmxvY2spOwo+ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2 LCAmY2lrX2loX2lwX2Jsb2NrKTsKPiAtICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9i bG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7Cj4gKyAgICAgICAgICAgICAgIGFt ZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZrdl9zbXVfaXBfYmxvY2spOwo+ICAgICAg ICAgICAgICAgICBpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKPiAgICAgICAgICAg ICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmZGNlX3ZpcnR1 YWxfaXBfYmxvY2spOwo+ICAjaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrX2RwbS5oIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvY2lrX2RwbS5oCj4gaW5kZXggYzdiNDM0OS4uMmEwODY2MSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfZHBtLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfZHBtLmgKPiBAQCAtMjQsOCArMjQsNyBAQAo+ICAj aWZuZGVmIF9fQ0lLX0RQTV9IX18KPiAgI2RlZmluZSBfX0NJS19EUE1fSF9fCj4KPiAtZXh0ZXJu IGNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3MgY2lfZHBtX2lwX2Z1bmNzOwo+IC1leHRlcm4gY29u c3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBrdl9kcG1faXBfZnVuY3M7Cj4gLWV4dGVybiBjb25zdCBz dHJ1Y3QgYW1kX3BtX2Z1bmNzIGNpX2RwbV9mdW5jczsKPiAtZXh0ZXJuIGNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3Mga3ZfZHBtX2Z1bmNzOwo+ICtleHRlcm4gY29uc3Qgc3RydWN0IGFtZGdwdV9p cF9ibG9ja192ZXJzaW9uIGNpX3NtdV9pcF9ibG9jazsKPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCBh bWRncHVfaXBfYmxvY2tfdmVyc2lvbiBrdl9zbXVfaXBfYmxvY2s7Cj4gKwo+ICAjZW5kaWYKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUva3ZfZHBtLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9rdl9kcG0uYwo+IGluZGV4IDg3NjY2ODEuLjgxYmFiZTAgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUva3ZfZHBtLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9rdl9kcG0uYwo+IEBAIC00Miw2ICs0Miw4IEBACj4g ICNkZWZpbmUgS1ZfTUlOSU1VTV9FTkdJTkVfQ0xPQ0sgICAgICAgICA4MDAKPiAgI2RlZmluZSBT TUNfUkFNX0VORCAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAKPgo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyBrdl9kcG1fZnVuY3M7Cj4gKwo+ICBzdGF0aWMgdm9pZCBrdl9k cG1fc2V0X2lycV9mdW5jcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7Cj4gIHN0YXRpYyBp bnQga3ZfZW5hYmxlX25iX2RwbShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGUpOwo+IEBAIC0yOTYwLDYgKzI5NjIsNyBA QCBzdGF0aWMgaW50IGt2X2RwbV9lYXJseV9pbml0KHZvaWQgKmhhbmRsZSkKPiAgewo+ICAgICAg ICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKilo YW5kbGU7Cj4KPiArICAgICAgIGFkZXYtPnBvd2VycGxheS5wcF9mdW5jcyA9ICZrdl9kcG1fZnVu Y3M7Cj4gICAgICAgICBrdl9kcG1fc2V0X2lycV9mdW5jcyhhZGV2KTsKPgo+ICAgICAgICAgcmV0 dXJuIDA7Cj4gQEAgLTMzMDEsNyArMzMwNCw3IEBAIHN0YXRpYyBpbnQga3ZfZHBtX3JlYWRfc2Vu c29yKHZvaWQgKmhhbmRsZSwgaW50IGlkeCwKPiAgICAgICAgIH0KPiAgfQo+Cj4gLWNvbnN0IHN0 cnVjdCBhbWRfaXBfZnVuY3Mga3ZfZHBtX2lwX2Z1bmNzID0gewo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGFtZF9pcF9mdW5jcyBrdl9kcG1faXBfZnVuY3MgPSB7Cj4gICAgICAgICAubmFtZSA9ICJr dl9kcG0iLAo+ICAgICAgICAgLmVhcmx5X2luaXQgPSBrdl9kcG1fZWFybHlfaW5pdCwKPiAgICAg ICAgIC5sYXRlX2luaXQgPSBrdl9kcG1fbGF0ZV9pbml0LAo+IEBAIC0zMzE4LDcgKzMzMjEsMTYg QEAgc3RhdGljIGludCBrdl9kcG1fcmVhZF9zZW5zb3Iodm9pZCAqaGFuZGxlLCBpbnQgaWR4LAo+ ICAgICAgICAgLnNldF9wb3dlcmdhdGluZ19zdGF0ZSA9IGt2X2RwbV9zZXRfcG93ZXJnYXRpbmdf c3RhdGUsCj4gIH07Cj4KPiAtY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyBrdl9kcG1fZnVuY3Mg PSB7Cj4gK2NvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBrdl9zbXVfaXBfYmxv Y2sgPQo+ICt7Cj4gKyAgICAgICAudHlwZSA9IEFNRF9JUF9CTE9DS19UWVBFX1NNQywKPiArICAg ICAgIC5tYWpvciA9IDEsCgptYWpvciBzaG91bGQgYmUgNyBoZXJlIGFzIHdlbGwuCgo+ICsgICAg ICAgLm1pbm9yID0gMCwKPiArICAgICAgIC5yZXYgPSAwLAo+ICsgICAgICAgLmZ1bmNzID0gJmt2 X2RwbV9pcF9mdW5jcywKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1 bmNzIGt2X2RwbV9mdW5jcyA9IHsKPiAgICAgICAgIC5wcmVfc2V0X3Bvd2VyX3N0YXRlID0gJmt2 X2RwbV9wcmVfc2V0X3Bvd2VyX3N0YXRlLAo+ICAgICAgICAgLnNldF9wb3dlcl9zdGF0ZSA9ICZr dl9kcG1fc2V0X3Bvd2VyX3N0YXRlLAo+ICAgICAgICAgLnBvc3Rfc2V0X3Bvd2VyX3N0YXRlID0g Jmt2X2RwbV9wb3N0X3NldF9wb3dlcl9zdGF0ZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMKPiBp bmRleCA2ZTYxYjU2Li5iMTU0NjY3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L3NpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jCj4gQEAg LTMyLDcgKzMyLDcgQEAKPiAgI2luY2x1ZGUgImFtZGdwdV92Y2UuaCIKPiAgI2luY2x1ZGUgImF0 b20uaCIKPiAgI2luY2x1ZGUgImFtZF9wY2llLmgiCj4gLSNpbmNsdWRlICJhbWRncHVfcG93ZXJw bGF5LmgiCj4gKyNpbmNsdWRlICJzaV9kcG0uaCIKPiAgI2luY2x1ZGUgInNpZC5oIgo+ICAjaW5j bHVkZSAic2lfaWguaCIKPiAgI2luY2x1ZGUgImdmeF92Nl8wLmgiCj4gQEAgLTE5ODMsNyArMTk4 Myw3IEBAIGludCBzaV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmc2lfY29t bW9uX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19h ZGQoYWRldiwgJmdtY192Nl8wX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2Rl dmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnNpX2loX2lwX2Jsb2NrKTsKPiAtICAgICAgICAgICAg ICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7 Cj4gKyAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZzaV9z bXVfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxf ZGlzcGxheSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2Nr X2FkZChhZGV2LCAmZGNlX3ZpcnR1YWxfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBlbHNl Cj4gQEAgLTE5OTcsNyArMTk5Nyw3IEBAIGludCBzaV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQo+ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2Nr X2FkZChhZGV2LCAmc2lfY29tbW9uX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1 X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmdtY192Nl8wX2lwX2Jsb2NrKTsKPiAgICAgICAg ICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnNpX2loX2lwX2Jsb2Nr KTsKPiAtICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFt ZGdwdV9wcF9pcF9ibG9jayk7Cj4gKyAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxv Y2tfYWRkKGFkZXYsICZzaV9zbXVfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBpZiAoYWRl di0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBhbWRn cHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmZGNlX3ZpcnR1YWxfaXBfYmxvY2spOwo+ICAg ICAgICAgICAgICAgICBlbHNlCj4gQEAgLTIwMTEsNyArMjAxMSw3IEBAIGludCBzaV9zZXRfaXBf YmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgICAgICAgICAgICAgICBhbWRn cHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmc2lfY29tbW9uX2lwX2Jsb2NrKTsKPiAgICAg ICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmdtY192Nl8wX2lw X2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRl diwgJnNpX2loX2lwX2Jsb2NrKTsKPiAtICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9i bG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7Cj4gKyAgICAgICAgICAgICAgIGFt ZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZzaV9zbXVfaXBfYmxvY2spOwo+ICAgICAg ICAgICAgICAgICBpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKPiAgICAgICAgICAg ICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmZGNlX3ZpcnR1 YWxfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2Fk ZChhZGV2LCAmZ2Z4X3Y2XzBfaXBfYmxvY2spOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9zaV9kcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2Rw bS5jCj4gaW5kZXggODEzN2MwMi4uNmQ2OGJjZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9zaV9kcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L3NpX2RwbS5jCj4gQEAgLTY3LDYgKzY3LDggQEAKPiAgTU9EVUxFX0ZJUk1XQVJFKCJyYWRlb24v aGFpbmFuX2tfc21jLmJpbiIpOwo+ICBNT0RVTEVfRklSTVdBUkUoInJhZGVvbi9iYW5rc19rXzJf c21jLmJpbiIpOwo+Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzIHNpX2RwbV9m dW5jczsKPiArCj4gIHVuaW9uIHBvd2VyX2luZm8gewo+ICAgICAgICAgc3RydWN0IF9BVE9NX1BP V0VSUExBWV9JTkZPIGluZm87Cj4gICAgICAgICBzdHJ1Y3QgX0FUT01fUE9XRVJQTEFZX0lORk9f VjIgaW5mb18yOwo+IEBAIC03OTE0LDYgKzc5MTYsNyBAQCBzdGF0aWMgaW50IHNpX2RwbV9lYXJs eV9pbml0KHZvaWQgKmhhbmRsZSkKPgo+ICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Cj4KPiArICAgICAgIGFkZXYtPnBv d2VycGxheS5wcF9mdW5jcyA9ICZzaV9kcG1fZnVuY3M7Cj4gICAgICAgICBzaV9kcG1fc2V0X2ly cV9mdW5jcyhhZGV2KTsKPiAgICAgICAgIHJldHVybiAwOwo+ICB9Cj4gQEAgLTgwMTQsNyArODAx Nyw3IEBAIHN0YXRpYyBpbnQgc2lfZHBtX3JlYWRfc2Vuc29yKHZvaWQgKmhhbmRsZSwgaW50IGlk eCwKPiAgICAgICAgIH0KPiAgfQo+Cj4gLWNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3Mgc2lfZHBt X2lwX2Z1bmNzID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBzaV9kcG1f aXBfZnVuY3MgPSB7Cj4gICAgICAgICAubmFtZSA9ICJzaV9kcG0iLAo+ICAgICAgICAgLmVhcmx5 X2luaXQgPSBzaV9kcG1fZWFybHlfaW5pdCwKPiAgICAgICAgIC5sYXRlX2luaXQgPSBzaV9kcG1f bGF0ZV9pbml0LAo+IEBAIC04MDMxLDcgKzgwMzQsMTYgQEAgc3RhdGljIGludCBzaV9kcG1fcmVh ZF9zZW5zb3Iodm9pZCAqaGFuZGxlLCBpbnQgaWR4LAo+ICAgICAgICAgLnNldF9wb3dlcmdhdGlu Z19zdGF0ZSA9IHNpX2RwbV9zZXRfcG93ZXJnYXRpbmdfc3RhdGUsCj4gIH07Cj4KPiAtY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyBzaV9kcG1fZnVuY3MgPSB7Cj4gK2NvbnN0IHN0cnVjdCBhbWRn cHVfaXBfYmxvY2tfdmVyc2lvbiBzaV9zbXVfaXBfYmxvY2sgPQo+ICt7Cj4gKyAgICAgICAudHlw ZSA9IEFNRF9JUF9CTE9DS19UWVBFX1NNQywKPiArICAgICAgIC5tYWpvciA9IDEsCgptYWpvciA9 IDYuCgo+ICsgICAgICAgLm1pbm9yID0gMCwKPiArICAgICAgIC5yZXYgPSAwLAo+ICsgICAgICAg LmZ1bmNzID0gJnNpX2RwbV9pcF9mdW5jcywKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzIHNpX2RwbV9mdW5jcyA9IHsKPiAgICAgICAgIC5wcmVfc2V0X3Bvd2Vy X3N0YXRlID0gJnNpX2RwbV9wcmVfc2V0X3Bvd2VyX3N0YXRlLAo+ICAgICAgICAgLnNldF9wb3dl cl9zdGF0ZSA9ICZzaV9kcG1fc2V0X3Bvd2VyX3N0YXRlLAo+ICAgICAgICAgLnBvc3Rfc2V0X3Bv d2VyX3N0YXRlID0gJnNpX2RwbV9wb3N0X3NldF9wb3dlcl9zdGF0ZSwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfZHBtLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9zaV9kcG0uaAo+IGluZGV4IDlmZTM0M2QuLjZiN2QyOTIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfZHBtLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9zaV9kcG0uaAo+IEBAIC0yNDUsOCArMjQ1LDcgQEAgZW51bSBzaV9kaXNw bGF5X2dhcAo+ICAgICAgU0lfUE1fRElTUExBWV9HQVBfSUdOT1JFICAgICAgID0gMywKPiAgfTsK Pgo+IC1leHRlcm4gY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBzaV9kcG1faXBfZnVuY3M7Cj4g LWV4dGVybiBjb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzIHNpX2RwbV9mdW5jczsKPiArZXh0ZXJu IGNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBzaV9zbXVfaXBfYmxvY2s7Cj4K PiAgc3RydWN0IG5pX2xlYWthZ2VfY29lZmZpZW50cwo+ICB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NvYzE1LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9zb2MxNS5jCj4gaW5kZXggOGRjOGI3Mi4uZmViMzgzYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9zb2MxNS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvc29jMTUuYwo+IEBAIC01Nyw3ICs1Nyw2IEBACj4gICNpbmNsdWRlICJ1dmRfdjdfMC5o Igo+ICAjaW5jbHVkZSAidmNlX3Y0XzAuaCIKPiAgI2luY2x1ZGUgInZjbl92MV8wLmgiCj4gLSNp bmNsdWRlICJhbWRncHVfcG93ZXJwbGF5LmgiCj4gICNpbmNsdWRlICJkY2VfdmlydHVhbC5oIgo+ ICAjaW5jbHVkZSAibXhncHVfYWkuaCIKPgo+IEBAIC01MzQsNyArNTMzLDcgQEAgaW50IHNvYzE1 X3NldF9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAgICAgICAgICAg ICAgIGlmIChhbWRncHVfZndfbG9hZF90eXBlID09IDIgfHwgYW1kZ3B1X2Z3X2xvYWRfdHlwZSA9 PSAtMSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2Fk ZChhZGV2LCAmcHNwX3YzXzFfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBpZiAoIWFtZGdw dV9zcmlvdl92ZihhZGV2KSkKPiAtICAgICAgICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNl X2lwX2Jsb2NrX2FkZChhZGV2LCAmYW1kZ3B1X3BwX2lwX2Jsb2NrKTsKPiArICAgICAgICAgICAg ICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmcHBfc211X2lwX2Js b2NrKTsKPiAgICAgICAgICAgICAgICAgaWYgKGFkZXYtPmVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkg fHwgYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGFtZGdw dV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9ibG9jayk7Cj4gICNp ZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKQo+IEBAIC01NTMsNyArNTUyLDcgQEAgaW50IHNv YzE1X3NldF9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAgICAgICAg ICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZnbWNfdjlfMF9pcF9ibG9j ayk7Cj4gICAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZ2 ZWdhMTBfaWhfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Js b2NrX2FkZChhZGV2LCAmcHNwX3YxMF8wX2lwX2Jsb2NrKTsKPiAtICAgICAgICAgICAgICAgYW1k Z3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7Cj4gKyAg ICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZwcF9zbXVfaXBf YmxvY2spOwo+ICAgICAgICAgICAgICAgICBpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxh eSB8fCBhbWRncHVfc3Jpb3ZfdmYoYWRldikpCj4gICAgICAgICAgICAgICAgICAgICAgICAgYW1k Z3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmRjZV92aXJ0dWFsX2lwX2Jsb2NrKTsKPiAg I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L3ZpLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jCj4g aW5kZXggNjEzNjBhMS4uN2YwMTY1MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS92aS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYwo+IEBA IC03MSw3ICs3MSw2IEBACj4gICNpbmNsdWRlICJ1dmRfdjVfMC5oIgo+ICAjaW5jbHVkZSAidXZk X3Y2XzAuaCIKPiAgI2luY2x1ZGUgInZjZV92M18wLmgiCj4gLSNpbmNsdWRlICJhbWRncHVfcG93 ZXJwbGF5LmgiCj4gICNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0FDUCkKPiAgI2luY2x1ZGUg ImFtZGdwdV9hY3AuaCIKPiAgI2VuZGlmCj4gQEAgLTE1MTYsNyArMTUxNSw3IEBAIGludCB2aV9z ZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgICAgICAgICAgICAg ICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmdmlfY29tbW9uX2lwX2Jsb2NrKTsK PiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmdtY192 N180X2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19h ZGQoYWRldiwgJmljZWxhbmRfaWhfaXBfYmxvY2spOwo+IC0gICAgICAgICAgICAgICBhbWRncHVf ZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmYW1kZ3B1X3BwX2lwX2Jsb2NrKTsKPiArICAgICAg ICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnBwX3NtdV9pcF9ibG9j ayk7Cj4gICAgICAgICAgICAgICAgIGlmIChhZGV2LT5lbmFibGVfdmlydHVhbF9kaXNwbGF5KQo+ ICAgICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYs ICZkY2VfdmlydHVhbF9pcF9ibG9jayk7Cj4gICAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2Vf aXBfYmxvY2tfYWRkKGFkZXYsICZnZnhfdjhfMF9pcF9ibG9jayk7Cj4gQEAgLTE1MjYsNyArMTUy NSw3IEBAIGludCB2aV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmdmlfY29t bW9uX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19h ZGQoYWRldiwgJmdtY192OF81X2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2Rl dmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnRvbmdhX2loX2lwX2Jsb2NrKTsKPiAtICAgICAgICAg ICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9j ayk7Cj4gKyAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZw cF9zbXVfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1 YWxfZGlzcGxheSB8fCBhbWRncHVfc3Jpb3ZfdmYoYWRldikpCj4gICAgICAgICAgICAgICAgICAg ICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmRjZV92aXJ0dWFsX2lwX2Js b2NrKTsKPiAgI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpCj4gQEAgLTE1NDYsNyArMTU0 NSw3IEBAIGludCB2aV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmdmlfY29t bW9uX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19h ZGQoYWRldiwgJmdtY192OF8wX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2Rl dmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnRvbmdhX2loX2lwX2Jsb2NrKTsKPiAtICAgICAgICAg ICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9j ayk7Cj4gKyAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZw cF9zbXVfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1 YWxfZGlzcGxheSB8fCBhbWRncHVfc3Jpb3ZfdmYoYWRldikpCj4gICAgICAgICAgICAgICAgICAg ICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmRjZV92aXJ0dWFsX2lwX2Js b2NrKTsKPiAgI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpCj4gQEAgLTE1NjgsNyArMTU2 Nyw3IEBAIGludCB2aV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmdmlfY29t bW9uX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19h ZGQoYWRldiwgJmdtY192OF8xX2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2Rl dmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnRvbmdhX2loX2lwX2Jsb2NrKTsKPiAtICAgICAgICAg ICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9j ayk7Cj4gKyAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZw cF9zbXVfaXBfYmxvY2spOwo+ICAgICAgICAgICAgICAgICBpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1 YWxfZGlzcGxheSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Js b2NrX2FkZChhZGV2LCAmZGNlX3ZpcnR1YWxfaXBfYmxvY2spOwo+ICAjaWYgZGVmaW5lZChDT05G SUdfRFJNX0FNRF9EQykKPiBAQCAtMTU4Niw3ICsxNTg1LDcgQEAgaW50IHZpX3NldF9pcF9ibG9j a3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAgICAgICAgICAgICAgIGFtZGdwdV9k ZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZ2aV9jb21tb25faXBfYmxvY2spOwo+ICAgICAgICAg ICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmZ21jX3Y4XzBfaXBfYmxv Y2spOwo+ICAgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAm Y3pfaWhfaXBfYmxvY2spOwo+IC0gICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2Nr X2FkZChhZGV2LCAmYW1kZ3B1X3BwX2lwX2Jsb2NrKTsKPiArICAgICAgICAgICAgICAgYW1kZ3B1 X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnBwX3NtdV9pcF9ibG9jayk7Cj4gICAgICAgICAg ICAgICAgIGlmIChhZGV2LT5lbmFibGVfdmlydHVhbF9kaXNwbGF5KQo+ICAgICAgICAgICAgICAg ICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9p cF9ibG9jayk7Cj4gICNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKQo+IEBAIC0xNjA3LDcg KzE2MDYsNyBAQCBpbnQgdmlfc2V0X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKPiAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnZp X2NvbW1vbl9pcF9ibG9jayk7Cj4gICAgICAgICAgICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxv Y2tfYWRkKGFkZXYsICZnbWNfdjhfMF9pcF9ibG9jayk7Cj4gICAgICAgICAgICAgICAgIGFtZGdw dV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZjel9paF9pcF9ibG9jayk7Cj4gLSAgICAgICAg ICAgICAgIGFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZhbWRncHVfcHBfaXBfYmxv Y2spOwo+ICsgICAgICAgICAgICAgICBhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAm cHBfc211X2lwX2Jsb2NrKTsKPiAgICAgICAgICAgICAgICAgaWYgKGFkZXYtPmVuYWJsZV92aXJ0 dWFsX2Rpc3BsYXkpCj4gICAgICAgICAgICAgICAgICAgICAgICAgYW1kZ3B1X2RldmljZV9pcF9i bG9ja19hZGQoYWRldiwgJmRjZV92aXJ0dWFsX2lwX2Jsb2NrKTsKPiAgI2lmIGRlZmluZWQoQ09O RklHX0RSTV9BTURfREMpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVk ZS9rZ2RfcHBfaW50ZXJmYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dkX3Bw X2ludGVyZmFjZS5oCj4gaW5kZXggMTViZDBmOS4uNWM4NDBjMCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dkX3BwX2ludGVyZmFjZS5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9wcF9pbnRlcmZhY2UuaAo+IEBAIC0yNCw4ICsyNCw3 IEBACj4gICNpZm5kZWYgX19LR0RfUFBfSU5URVJGQUNFX0hfXwo+ICAjZGVmaW5lIF9fS0dEX1BQ X0lOVEVSRkFDRV9IX18KPgo+IC1leHRlcm4gY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBwcF9p cF9mdW5jczsKPiAtZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgcHBfZHBtX2Z1bmNz Owo+ICtleHRlcm4gY29uc3Qgc3RydWN0IGFtZGdwdV9pcF9ibG9ja192ZXJzaW9uIHBwX3NtdV9p cF9ibG9jazsKPgo+ICBzdHJ1Y3QgYW1kX3ZjZV9zdGF0ZSB7Cj4gICAgICAgICAvKiB2Y2UgY2xv Y2tzICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9w b3dlcnBsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9wb3dlcnBsYXku Ywo+IGluZGV4IGI5ODliZjMuLmE1YmM1MmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jCj4gQEAgLTI3LDcgKzI3LDYgQEAKPiAgI2luY2x1 ZGUgPGxpbnV4L3NsYWIuaD4KPiAgI2luY2x1ZGUgImFtZF9zaGFyZWQuaCIKPiAgI2luY2x1ZGUg ImFtZF9wb3dlcnBsYXkuaCIKPiAtI2luY2x1ZGUgInBwX2luc3RhbmNlLmgiCj4gICNpbmNsdWRl ICJwb3dlcl9zdGF0ZS5oIgo+ICAjaW5jbHVkZSAiYW1kZ3B1LmgiCj4gICNpbmNsdWRlICJod21n ci5oIgo+IEBAIC0zNywxOCArMzYsMTQgQEAKPiAgc3RhdGljIGludCBwcF9kcG1fZGlzcGF0Y2hf dGFza3Modm9pZCAqaGFuZGxlLCBlbnVtIGFtZF9wcF90YXNrIHRhc2tfaWQsCj4gICAgICAgICAg ICAgICAgIGVudW0gYW1kX3BtX3N0YXRlX3R5cGUgKnVzZXJfc3RhdGUpOwo+Cj4gLXN0YXRpYyBp bmxpbmUgaW50IHBwX2NoZWNrKHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKQo+IC17Cj4gLSAg ICAgICBpZiAoaGFuZGxlID09IE5VTEwpCj4gLSAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyBwcF9kcG1fZnVuY3M7Cj4KPiAt ICAgICAgIGlmIChoYW5kbGUtPmh3bWdyID09IE5VTEwgfHwgaGFuZGxlLT5od21nci0+c211bWdy X2Z1bmNzID09IE5VTEwpCj4gK3N0YXRpYyBpbmxpbmUgaW50IHBwX2NoZWNrKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IpCj4gK3sKPiArICAgICAgIGlmIChod21nciA9PSBOVUxMIHx8IGh3bWdyLT5z bXVtZ3JfZnVuY3MgPT0gTlVMTCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4K PiAtICAgICAgIGlmIChoYW5kbGUtPnBtX2VuID09IDApCj4gLSAgICAgICAgICAgICAgIHJldHVy biBQUF9EUE1fRElTQUJMRUQ7Cj4gLQo+IC0gICAgICAgaWYgKGhhbmRsZS0+aHdtZ3ItPmh3bWdy X2Z1bmMgPT0gTlVMTCkKPiArICAgICAgIGlmIChod21nci0+cG1fZW4gPT0gMCB8fCBod21nci0+ aHdtZ3JfZnVuYyA9PSBOVUxMKQo+ICAgICAgICAgICAgICAgICByZXR1cm4gUFBfRFBNX0RJU0FC TEVEOwo+Cj4gICAgICAgICByZXR1cm4gMDsKPiBAQCAtNTYsNTQgKzUxLDUyIEBAIHN0YXRpYyBp bmxpbmUgaW50IHBwX2NoZWNrKHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKQo+Cj4gIHN0YXRp YyBpbnQgYW1kX3Bvd2VycGxheV9jcmVhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4g IHsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqaW5zdGFuY2U7Cj4gKyAgICAgICBzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyOwo+Cj4gICAgICAgICBpZiAoYWRldiA9PSBOVUxMKQo+ICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPgo+IC0gICAgICAgaW5zdGFuY2UgPSBremFsbG9j KHNpemVvZihzdHJ1Y3QgcHBfaW5zdGFuY2UpLCBHRlBfS0VSTkVMKTsKPiAtICAgICAgIGlmIChp bnN0YW5jZSA9PSBOVUxMKQo+ICsgICAgICAgaHdtZ3IgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qg cHBfaHdtZ3IpLCBHRlBfS0VSTkVMKTsKPiArICAgICAgIGlmIChod21nciA9PSBOVUxMKQo+ICAg ICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPgo+IC0gICAgICAgaW5zdGFuY2UtPnBhcmVu dCA9IGFkZXY7Cj4gLSAgICAgICBpbnN0YW5jZS0+cG1fZW4gPSAoYW1kZ3B1X2RwbSAhPSAwICYm ICFhbWRncHVfc3Jpb3ZfdmYoYWRldikpID8gdHJ1ZSA6IGZhbHNlOwo+IC0gICAgICAgaW5zdGFu Y2UtPmRldmljZSA9IGFkZXYtPnBvd2VycGxheS5jZ3NfZGV2aWNlOwo+IC0gICAgICAgbXV0ZXhf aW5pdCgmaW5zdGFuY2UtPnBwX2xvY2spOwo+IC0gICAgICAgYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSA9IGluc3RhbmNlOwo+IC0KPiArICAgICAgIGh3bWdyLT5hZGV2ID0gYWRldjsKPiArICAg ICAgIGh3bWdyLT5wbV9lbiA9IChhbWRncHVfZHBtICE9IDAgJiYgIWFtZGdwdV9zcmlvdl92Zihh ZGV2KSkgPyB0cnVlIDogZmFsc2U7Cj4gKyAgICAgICBod21nci0+ZGV2aWNlID0gYW1kZ3B1X2Nn c19jcmVhdGVfZGV2aWNlKGFkZXYpOwo+ICsgICAgICAgbXV0ZXhfaW5pdCgmaHdtZ3ItPnNtdV9s b2NrKTsKPiArICAgICAgIGh3bWdyLT5jaGlwX2ZhbWlseSA9IGFkZXYtPmZhbWlseTsKPiArICAg ICAgIGh3bWdyLT5jaGlwX2lkID0gYWRldi0+YXNpY190eXBlOwo+ICsgICAgICAgaHdtZ3ItPmZl YXR1cmVfbWFzayA9IGFtZGdwdV9wcF9mZWF0dXJlX21hc2s7Cj4gKyAgICAgICBhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlID0gaHdtZ3I7Cj4gKyAgICAgICBhZGV2LT5wb3dlcnBsYXkucHBfZnVu Y3MgPSAmcHBfZHBtX2Z1bmNzOwo+ICAgICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+Cj4gLXN0YXRp YyBpbnQgYW1kX3Bvd2VycGxheV9kZXN0cm95KHZvaWQgKmhhbmRsZSkKPiArc3RhdGljIGludCBh bWRfcG93ZXJwbGF5X2Rlc3Ryb3koc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gIHsKPiAt ICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqaW5zdGFuY2UgPSAoc3RydWN0IHBwX2luc3RhbmNl ICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGU7Cj4KPiAtICAgICAgIGtmcmVlKGluc3RhbmNlLT5od21nci0+aGFyZGNv ZGVfcHBfdGFibGUpOwo+IC0gICAgICAgaW5zdGFuY2UtPmh3bWdyLT5oYXJkY29kZV9wcF90YWJs ZSA9IE5VTEw7Cj4gKyAgICAgICBrZnJlZShod21nci0+aGFyZGNvZGVfcHBfdGFibGUpOwo+ICsg ICAgICAgaHdtZ3ItPmhhcmRjb2RlX3BwX3RhYmxlID0gTlVMTDsKPgo+IC0gICAgICAga2ZyZWUo aW5zdGFuY2UtPmh3bWdyKTsKPiAtICAgICAgIGluc3RhbmNlLT5od21nciA9IE5VTEw7Cj4gKyAg ICAgICBrZnJlZShod21ncik7Cj4gKyAgICAgICBod21nciA9IE5VTEw7Cj4KPiAtICAgICAgIGtm cmVlKGluc3RhbmNlKTsKPiAtICAgICAgIGluc3RhbmNlID0gTlVMTDsKPiAgICAgICAgIHJldHVy biAwOwo+ICB9Cj4KPiAgc3RhdGljIGludCBwcF9lYXJseV9pbml0KHZvaWQgKmhhbmRsZSkKPiAg ewo+ICAgICAgICAgaW50IHJldDsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFu ZGxlID0gTlVMTDsKPiAtICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVj dCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSBoYW5kbGU7Cj4KPiAgICAgICAgIHJldCA9IGFtZF9wb3dlcnBsYXlfY3JlYXRlKGFk ZXYpOwo+Cj4gICAgICAgICBpZiAocmV0ICE9IDApCj4gICAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4KPiAtICAgICAgIHBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Cj4g LQo+IC0gICAgICAgcmV0ID0gaHdtZ3JfZWFybHlfaW5pdChwcF9oYW5kbGUpOwo+ICsgICAgICAg cmV0ID0gaHdtZ3JfZWFybHlfaW5pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKPiAgICAg ICAgIGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gQEAgLTEx MiwxNSArMTA1LDEzIEBAIHN0YXRpYyBpbnQgcHBfZWFybHlfaW5pdCh2b2lkICpoYW5kbGUpCj4K PiAgc3RhdGljIGludCBwcF9zd19pbml0KHZvaWQgKmhhbmRsZSkKPiAgewo+IC0gICAgICAgc3Ry dWN0IHBwX2h3bWdyICpod21ncjsKPiArICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPiAtICAgICAgIHN0cnVjdCBw cF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPgo+ IC0gICAgICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2No ZWNrKGh3bWdyKTsKPgo+ICAgICAgICAgaWYgKHJldCA+PSAwKSB7Cj4gLSAgICAgICAgICAgICAg IGh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAgICAgICAgICAgIGlmIChod21n ci0+c211bWdyX2Z1bmNzLT5zbXVfaW5pdCA9PSBOVUxMKQo+ICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gQEAgLTEyOCw1NSArMTE5LDUzIEBAIHN0YXRpYyBpbnQg cHBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCj4KPiAgICAgICAgICAgICAgICAgcHJfZGVidWcoImFt ZGdwdTogcG93ZXJwbGF5IHN3IGluaXRpYWxpemVkXG4iKTsKPiAgICAgICAgIH0KPiArCj4gICAg ICAgICByZXR1cm4gcmV0Owo+ICB9Cj4KPiAgc3RhdGljIGludCBwcF9zd19maW5pKHZvaWQgKmhh bmRsZSkKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICpod21ncjsKPiArICAgICAgIHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3 bWdyICpod21nciA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0 ID0gMDsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBw cF9pbnN0YW5jZSAqKWhhbmRsZTsKPgo+IC0gICAgICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxl KTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPiAgICAgICAgIGlmIChyZXQgPj0g MCkgewo+IC0gICAgICAgICAgICAgICBod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Cj4gLQo+IC0g ICAgICAgICAgICAgICBpZiAoaHdtZ3ItPnNtdW1ncl9mdW5jcy0+c211X2ZpbmkgPT0gTlVMTCkK PiAtICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAtCj4gLSAgICAgICAg ICAgICAgIHJldCA9IGh3bWdyLT5zbXVtZ3JfZnVuY3MtPnNtdV9maW5pKHBwX2hhbmRsZS0+aHdt Z3IpOwo+ICsgICAgICAgICAgICAgICBpZiAoaHdtZ3ItPnNtdW1ncl9mdW5jcy0+c211X2Zpbmkg IT0gTlVMTCkKPiArICAgICAgICAgICAgICAgICAgICAgICBod21nci0+c211bWdyX2Z1bmNzLT5z bXVfZmluaShod21ncik7Cj4gICAgICAgICB9Cj4gLSAgICAgICByZXR1cm4gcmV0Owo+ICsgICAg ICAgcmV0dXJuIDA7Cj4gIH0KPgo+ICBzdGF0aWMgaW50IHBwX2h3X2luaXQodm9pZCAqaGFuZGxl KQo+ICB7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5j ZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiAtICAgICAgIHN0 cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gKyAgICAgICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IGhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlOwo+Cj4gLSAgICAgICByZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ ICsgICAgICAgaWYgKGFkZXYtPmZpcm13YXJlLmxvYWRfdHlwZSA9PSBBTURHUFVfRldfTE9BRF9T TVUpCj4gKyAgICAgICAgICAgICAgIGFtZGdwdV91Y29kZV9pbml0X2JvKGFkZXYpOwo+Cj4gLSAg ICAgICBpZiAocmV0ID49IDApIHsKPiAtICAgICAgICAgICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUt Pmh3bWdyOwo+ICsgICAgICAgcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwo+Cj4gKyAgICAgICBpZiAo cmV0ID49IDApIHsKPiAgICAgICAgICAgICAgICAgaWYgKGh3bWdyLT5zbXVtZ3JfZnVuY3MtPnN0 YXJ0X3NtdSA9PSBOVUxMKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+Cj4gLSAgICAgICAgICAgICAgIGlmKGh3bWdyLT5zbXVtZ3JfZnVuY3MtPnN0YXJ0X3NtdShw cF9oYW5kbGUtPmh3bWdyKSkgewo+ICsgICAgICAgICAgICAgICBpZiAoaHdtZ3ItPnNtdW1ncl9m dW5jcy0+c3RhcnRfc211KGh3bWdyKSkgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIHByX2Vy cigic21jIHN0YXJ0IGZhaWxlZFxuIik7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgaHdtZ3It PnNtdW1ncl9mdW5jcy0+c211X2ZpbmkocHBfaGFuZGxlLT5od21ncik7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgaHdtZ3ItPnNtdW1ncl9mdW5jcy0+c211X2ZpbmkoaHdtZ3IpOwo+ICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICAgICAgICAgICAgICAgICB9Cj4g ICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gUFBfRFBNX0RJU0FCTEVEKQo+ICAgICAgICAgICAg ICAgICAgICAgICAgIGdvdG8gZXhpdDsKPiAtICAgICAgICAgICAgICAgcmV0ID0gaHdtZ3JfaHdf aW5pdChwcF9oYW5kbGUpOwo+ICsgICAgICAgICAgICAgICByZXQgPSBod21ncl9od19pbml0KGh3 bWdyKTsKPiAgICAgICAgICAgICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgICAgICAg ICBnb3RvIGV4aXQ7Cj4gICAgICAgICB9Cj4gICAgICAgICByZXR1cm4gcmV0Owo+ICBleGl0Ogo+ IC0gICAgICAgcHBfaGFuZGxlLT5wbV9lbiA9IDA7Cj4gKyAgICAgICBod21nci0+cG1fZW4gPSAw Owo+ICAgICAgICAgY2dzX25vdGlmeV9kcG1fZW5hYmxlZChod21nci0+ZGV2aWNlLCBmYWxzZSk7 Cj4gICAgICAgICByZXR1cm4gMDsKPgo+IEBAIC0xODQsMjQgKzE3MywyNyBAQCBzdGF0aWMgaW50 IHBwX2h3X2luaXQodm9pZCAqaGFuZGxlKQo+Cj4gIHN0YXRpYyBpbnQgcHBfaHdfZmluaSh2b2lk ICpoYW5kbGUpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0g KHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2ID0gaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAg ICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3 bWdyKTsKPiAgICAgICAgIGlmIChyZXQgPT0gMCkKPiAtICAgICAgICAgICAgICAgaHdtZ3JfaHdf ZmluaShwcF9oYW5kbGUpOwo+ICsgICAgICAgICAgICAgICBod21ncl9od19maW5pKGh3bWdyKTsK Pgo+ICAgICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+ICBzdGF0aWMgaW50IHBwX2xhdGVfaW5pdCh2 b2lkICpoYW5kbGUpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxl ID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2ID0gaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9 IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0g ICAgICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNr KGh3bWdyKTsKPiArCj4gICAgICAgICBpZiAocmV0ID09IDApCj4gLSAgICAgICAgICAgICAgIHBw X2RwbV9kaXNwYXRjaF90YXNrcyhwcF9oYW5kbGUsCj4gKyAgICAgICAgICAgICAgIHBwX2RwbV9k aXNwYXRjaF90YXNrcyhod21nciwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQU1EX1BQX1RBU0tfQ09NUExFVEVfSU5JVCwgTlVMTCk7Cj4KPiAgICAgICAgIHJldHVy biAwOwo+IEBAIC0yMzEsMTcgKzIyMywxNSBAQCBzdGF0aWMgaW50IHBwX3N3X3Jlc2V0KHZvaWQg KmhhbmRsZSkKPiAgc3RhdGljIGludCBwcF9zZXRfcG93ZXJnYXRpbmdfc3RhdGUodm9pZCAqaGFu ZGxlLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gYW1kX3Bvd2Vy Z2F0aW5nX3N0YXRlIHN0YXRlKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgICpod21n cjsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9p bnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g aGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBf Y2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPgo+ICAg ICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0gICAgICAg aHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21nci0+aHdtZ3Jf ZnVuYy0+ZW5hYmxlX3Blcl9jdV9wb3dlcl9nYXRpbmcgPT0gTlVMTCkgewo+ICAgICAgICAgICAg ICAgICBwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwo+ICAg ICAgICAgICAgICAgICByZXR1cm4gMDsKPiBAQCAtMjU0LDQ0ICsyNDQsNDMgQEAgc3RhdGljIGlu dCBwcF9zZXRfcG93ZXJnYXRpbmdfc3RhdGUodm9pZCAqaGFuZGxlLAo+Cj4gIHN0YXRpYyBpbnQg cHBfc3VzcGVuZCh2b2lkICpoYW5kbGUpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5j ZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3 bWdyICpod21nciA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0 ID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJl dCA9IHBwX2NoZWNrKGh3bWdyKTsKPiAgICAgICAgIGlmIChyZXQgPT0gMCkKPiAtICAgICAgICAg ICAgICAgaHdtZ3JfaHdfc3VzcGVuZChwcF9oYW5kbGUpOwo+ICsgICAgICAgICAgICAgICBod21n cl9od19zdXNwZW5kKGh3bWdyKTsKPiAgICAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiAgc3RhdGlj IGludCBwcF9yZXN1bWUodm9pZCAqaGFuZGxlKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdt Z3IgICpod21ncjsKPiArICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaGFuZGxl Owo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGU7Cj4gICAgICAgICBpbnQgcmV0Owo+IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpw cF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+Cj4gLSAgICAgICByZXQg PSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAgICAgcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwo+ Cj4gICAgICAgICBpZiAocmV0IDwgMCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+ IC0gICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21n ci0+c211bWdyX2Z1bmNzLT5zdGFydF9zbXUgPT0gTlVMTCkKPiAgICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4KPiAtICAgICAgIGlmIChod21nci0+c211bWdyX2Z1bmNzLT5zdGFydF9z bXUocHBfaGFuZGxlLT5od21ncikpIHsKPiArICAgICAgIGlmIChod21nci0+c211bWdyX2Z1bmNz LT5zdGFydF9zbXUoaHdtZ3IpKSB7Cj4gICAgICAgICAgICAgICAgIHByX2Vycigic21jIHN0YXJ0 IGZhaWxlZFxuIik7Cj4gLSAgICAgICAgICAgICAgIGh3bWdyLT5zbXVtZ3JfZnVuY3MtPnNtdV9m aW5pKHBwX2hhbmRsZS0+aHdtZ3IpOwo+ICsgICAgICAgICAgICAgICBod21nci0+c211bWdyX2Z1 bmNzLT5zbXVfZmluaShod21ncik7Cj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ICAgICAgICAgfQo+Cj4gICAgICAgICBpZiAocmV0ID09IFBQX0RQTV9ESVNBQkxFRCkKPiAgICAg ICAgICAgICAgICAgcmV0dXJuIDA7Cj4KPiAtICAgICAgIHJldHVybiBod21ncl9od19yZXN1bWUo cHBfaGFuZGxlKTsKPiArICAgICAgIHJldHVybiBod21ncl9od19yZXN1bWUoaHdtZ3IpOwo+ICB9 Cj4KPiAtY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBwcF9pcF9mdW5jcyA9IHsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3MgcHBfaXBfZnVuY3MgPSB7Cj4gICAgICAgICAubmFt ZSA9ICJwb3dlcnBsYXkiLAo+ICAgICAgICAgLmVhcmx5X2luaXQgPSBwcF9lYXJseV9pbml0LAo+ ICAgICAgICAgLmxhdGVfaW5pdCA9IHBwX2xhdGVfaW5pdCwKPiBAQCAtMzA5LDYgKzI5OCwxNSBA QCBzdGF0aWMgaW50IHBwX3Jlc3VtZSh2b2lkICpoYW5kbGUpCj4gICAgICAgICAuc2V0X3Bvd2Vy Z2F0aW5nX3N0YXRlID0gcHBfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlLAo+ICB9Owo+Cj4gK2NvbnN0 IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBwcF9zbXVfaXBfYmxvY2sgPQo+ICt7Cj4g KyAgICAgICAudHlwZSA9IEFNRF9JUF9CTE9DS19UWVBFX1NNQywKPiArICAgICAgIC5tYWpvciA9 IDEsCj4gKyAgICAgICAubWlub3IgPSAwLAo+ICsgICAgICAgLnJldiA9IDAsCj4gKyAgICAgICAu ZnVuY3MgPSAmcHBfaXBfZnVuY3MsCj4gK307CgpJbiB0aGVvcnkgd2UgY291bGQgYWRkIG11bHRp cGxlIGlwX2Jsb2NrIGRlZmluaXRpb25zIHdpdGggdGhlIHNhbWUKZnVuY3MsIG9uZSBmb3IgZWFj aCBJUCB2ZXJzaW9uICg3LCA4LCA5KSBhbmQgYXNzaWduIHRoZW0gYXMKYXBwcm9wcmlhdGUgc28g dGhhdCB0aGUgdmVyc2lvbiByZXBvcnRpbmcgaXMgY29ycmVjdCwgYnV0IHRoYXQgY291bGQKYmUg YSBmb2xsb3cgdXAgcGF0Y2guCgpXaXRoIHRoZSBhYm92ZSBhZGRyZXNzZWQ6ClJldmlld2VkLWJ5 OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+CgoKPiArCj4gIHN0YXRp YyBpbnQgcHBfZHBtX2xvYWRfZncodm9pZCAqaGFuZGxlKQo+ICB7Cj4gICAgICAgICByZXR1cm4g MDsKPiBAQCAtMzIxLDE3ICszMTksMTQgQEAgc3RhdGljIGludCBwcF9kcG1fZndfbG9hZGluZ19j b21wbGV0ZSh2b2lkICpoYW5kbGUpCj4KPiAgc3RhdGljIGludCBwcF9zZXRfY2xvY2tnYXRpbmdf Ynlfc211KHZvaWQgKmhhbmRsZSwgdWludDMyX3QgbXNnX2lkKQo+ICB7Cj4gLSAgICAgICBzdHJ1 Y3QgcHBfaHdtZ3IgICpod21ncjsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFu ZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9o d21nciAqaHdtZ3IgPSBoYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAg cmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdy KTsKPgo+ICAgICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+ IC0gICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21n ci0+aHdtZ3JfZnVuYy0+dXBkYXRlX2Nsb2NrX2dhdGluZ3MgPT0gTlVMTCkgewo+ICAgICAgICAg ICAgICAgICBwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwo+ ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiBAQCAtMzc5LDI1ICszNzQsMjIgQEAgc3RhdGlj IHZvaWQgcHBfZHBtX2VuX3VtZF9wc3RhdGUoc3RydWN0IHBwX2h3bWdyICAqaHdtZ3IsCj4gIHN0 YXRpYyBpbnQgcHBfZHBtX2ZvcmNlX3BlcmZvcm1hbmNlX2xldmVsKHZvaWQgKmhhbmRsZSwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBhbWRfZHBtX2ZvcmNl ZF9sZXZlbCBsZXZlbCkKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7Cj4g LSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFu Y2UgKiloYW5kbGU7Cj4gKyAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ ICAgICAgICAgaW50IHJldCA9IDA7Cj4KPiAtICAgICAgIHJldCA9IHBwX2NoZWNrKHBwX2hhbmRs ZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVjayhod21ncik7Cj4KPiAgICAgICAgIGlmIChyZXQp Cj4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4KPiAtICAgICAgIGh3bWdyID0gcHBfaGFu ZGxlLT5od21ncjsKPiAtCj4gICAgICAgICBpZiAobGV2ZWwgPT0gaHdtZ3ItPmRwbV9sZXZlbCkK PiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hh bmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+ ICAgICAgICAgcHBfZHBtX2VuX3VtZF9wc3RhdGUoaHdtZ3IsICZsZXZlbCk7Cj4gICAgICAgICBo d21nci0+cmVxdWVzdF9kcG1fbGV2ZWwgPSBsZXZlbDsKPiAtICAgICAgIGh3bWdyX2hhbmRsZV90 YXNrKHBwX2hhbmRsZSwgQU1EX1BQX1RBU0tfUkVBREpVU1RfUE9XRVJfU1RBVEUsIE5VTEwpOwo+ IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgaHdt Z3JfaGFuZGxlX3Rhc2soaHdtZ3IsIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLCBO VUxMKTsKPiArICAgICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPgo+ICAgICAg ICAgcmV0dXJuIDA7Cj4gIH0KPiBAQCAtNDA1LDE1MiArMzk3LDEzNSBAQCBzdGF0aWMgaW50IHBw X2RwbV9mb3JjZV9wZXJmb3JtYW5jZV9sZXZlbCh2b2lkICpoYW5kbGUsCj4gIHN0YXRpYyBlbnVt IGFtZF9kcG1fZm9yY2VkX2xldmVsIHBwX2RwbV9nZXRfcGVyZm9ybWFuY2VfbGV2ZWwoCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZvaWQgKmhhbmRsZSkKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7 Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5z dGFuY2UgKiloYW5kbGU7Cj4gKyAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxl Owo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4gICAgICAgICBlbnVtIGFtZF9kcG1fZm9yY2VkX2xl dmVsIGxldmVsOwo+Cj4gLSAgICAgICByZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAg ICAgcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwo+Cj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+Cj4gLSAgICAgICBod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7 Cj4gLSAgICAgICBtdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0 ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIGxldmVsID0gaHdtZ3ItPmRwbV9s ZXZlbDsKPiAtICAgICAgIG11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAg ICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIHJldHVybiBsZXZl bDsKPiAgfQo+Cj4gIHN0YXRpYyB1aW50MzJfdCBwcF9kcG1fZ2V0X3NjbGsodm9pZCAqaGFuZGxl LCBib29sIGxvdykKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7Cj4gLSAg ICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2Ug KiloYW5kbGU7Cj4gKyAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAg ICAgICAgaW50IHJldCA9IDA7Cj4gICAgICAgICB1aW50MzJfdCBjbGsgPSAwOwo+Cj4gLSAgICAg ICByZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAgICAgcmV0ID0gcHBfY2hlY2soaHdt Z3IpOwo+Cj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ Cj4gLSAgICAgICBod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Cj4gLQo+ICAgICAgICAgaWYgKGh3 bWdyLT5od21ncl9mdW5jLT5nZXRfc2NsayA9PSBOVUxMKSB7Cj4gICAgICAgICAgICAgICAgIHBy X2luZm8oIiVzIHdhcyBub3QgaW1wbGVtZW50ZWQuXG4iLCBfX2Z1bmNfXyk7Cj4gICAgICAgICAg ICAgICAgIHJldHVybiAwOwo+ICAgICAgICAgfQo+IC0gICAgICAgbXV0ZXhfbG9jaygmcHBfaGFu ZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4g ICAgICAgICBjbGsgPSBod21nci0+aHdtZ3JfZnVuYy0+Z2V0X3NjbGsoaHdtZ3IsIGxvdyk7Cj4g LSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRl eF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gICAgICAgICByZXR1cm4gY2xrOwo+ICB9Cj4K PiAgc3RhdGljIHVpbnQzMl90IHBwX2RwbV9nZXRfbWNsayh2b2lkICpoYW5kbGUsIGJvb2wgbG93 KQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgICpod21ncjsKPiAtICAgICAgIHN0cnVj dCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsK PiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7Cj4gICAgICAgICBpbnQg cmV0ID0gMDsKPiAgICAgICAgIHVpbnQzMl90IGNsayA9IDA7Cj4KPiAtICAgICAgIHJldCA9IHBw X2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVjayhod21ncik7Cj4KPiAg ICAgICAgIGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4KPiAtICAgICAg IGh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAgICBpZiAoaHdtZ3ItPmh3bWdy X2Z1bmMtPmdldF9tY2xrID09IE5VTEwpIHsKPiAgICAgICAgICAgICAgICAgcHJfaW5mbygiJXMg d2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKPiAgICAgICAgICAgICAgICAgcmV0 dXJuIDA7Cj4gICAgICAgICB9Cj4gLSAgICAgICBtdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xv Y2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIGNs ayA9IGh3bWdyLT5od21ncl9mdW5jLT5nZXRfbWNsayhod21nciwgbG93KTsKPiAtICAgICAgIG11 dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X3VubG9jaygm aHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIHJldHVybiBjbGs7Cj4gIH0KPgo+ICBzdGF0aWMg dm9pZCBwcF9kcG1fcG93ZXJnYXRlX3ZjZSh2b2lkICpoYW5kbGUsIGJvb2wgZ2F0ZSkKPiAgewo+ IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5z dGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7Cj4gKyAgICAg ICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgaW50IHJldCA9IDA7 Cj4KPiAtICAgICAgIHJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBw cF9jaGVjayhod21ncik7Cj4KPiAgICAgICAgIGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJl dHVybjsKPgo+IC0gICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAg IGlmIChod21nci0+aHdtZ3JfZnVuYy0+cG93ZXJnYXRlX3ZjZSA9PSBOVUxMKSB7Cj4gICAgICAg ICAgICAgICAgIHByX2luZm8oIiVzIHdhcyBub3QgaW1wbGVtZW50ZWQuXG4iLCBfX2Z1bmNfXyk7 Cj4gICAgICAgICAgICAgICAgIHJldHVybjsKPiAgICAgICAgIH0KPiAtICAgICAgIG11dGV4X2xv Y2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211 X2xvY2spOwo+ICAgICAgICAgaHdtZ3ItPmh3bWdyX2Z1bmMtPnBvd2VyZ2F0ZV92Y2UoaHdtZ3Is IGdhdGUpOwo+IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsg ICAgICAgbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwo+ICB9Cj4KPiAgc3RhdGljIHZv aWQgcHBfZHBtX3Bvd2VyZ2F0ZV91dmQodm9pZCAqaGFuZGxlLCBib29sIGdhdGUpCj4gIHsKPiAt ICAgICAgIHN0cnVjdCBwcF9od21nciAgKmh3bWdyOwo+IC0gICAgICAgc3RydWN0IHBwX2luc3Rh bmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+ICsgICAgICAg c3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKPiAgICAgICAgIGludCByZXQgPSAwOwo+ Cj4gLSAgICAgICByZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAgICAgcmV0ID0gcHBf Y2hlY2soaHdtZ3IpOwo+Cj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICByZXR1 cm47Cj4KPiAtICAgICAgIGh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAgICBp ZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPnBvd2VyZ2F0ZV91dmQgPT0gTlVMTCkgewo+ICAgICAgICAg ICAgICAgICBwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwo+ ICAgICAgICAgICAgICAgICByZXR1cm47Cj4gICAgICAgICB9Cj4gLSAgICAgICBtdXRleF9sb2Nr KCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9s b2NrKTsKPiAgICAgICAgIGh3bWdyLT5od21ncl9mdW5jLT5wb3dlcmdhdGVfdXZkKGh3bWdyLCBn YXRlKTsKPiAtICAgICAgIG11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAg ICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgfQo+Cj4gIHN0YXRpYyBpbnQg cHBfZHBtX2Rpc3BhdGNoX3Rhc2tzKHZvaWQgKmhhbmRsZSwgZW51bSBhbWRfcHBfdGFzayB0YXNr X2lkLAo+ICAgICAgICAgICAgICAgICBlbnVtIGFtZF9wbV9zdGF0ZV90eXBlICp1c2VyX3N0YXRl KQo+ICB7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5j ZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0 cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7Cj4KPiAtICAgICAgIHJldCA9IHBwX2NoZWNr KHBwX2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVjayhod21ncik7Cj4KPiAgICAgICAg IGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4KPiAtICAgICAgIG11dGV4 X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gLSAgICAgICByZXQgPSBod21ncl9oYW5kbGVf dGFzayhwcF9oYW5kbGUsIHRhc2tfaWQsIHVzZXJfc3RhdGUpOwo+IC0gICAgICAgbXV0ZXhfdW5s b2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNt dV9sb2NrKTsKPiArICAgICAgIHJldCA9IGh3bWdyX2hhbmRsZV90YXNrKGh3bWdyLCB0YXNrX2lk LCB1c2VyX3N0YXRlKTsKPiArICAgICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsK Pgo+ICAgICAgICAgcmV0dXJuIHJldDsKPiAgfQo+Cj4gIHN0YXRpYyBlbnVtIGFtZF9wbV9zdGF0 ZV90eXBlIHBwX2RwbV9nZXRfY3VycmVudF9wb3dlcl9zdGF0ZSh2b2lkICpoYW5kbGUpCj4gIHsK PiAtICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gKyAgICAgICBzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgc3RydWN0IHBwX3Bvd2VyX3N0YXRlICpzdGF0 ZTsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9p bnN0YW5jZSAqKWhhbmRsZTsKPiAgICAgICAgIGludCByZXQgPSAwOwo+ICAgICAgICAgZW51bSBh bWRfcG1fc3RhdGVfdHlwZSBwbV90eXBlOwo+Cj4gLSAgICAgICByZXQgPSBwcF9jaGVjayhwcF9o YW5kbGUpOwo+ICsgICAgICAgcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwo+Cj4gICAgICAgICBpZiAo cmV0KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Cj4gLSAgICAgICBod21nciA9IHBw X2hhbmRsZS0+aHdtZ3I7Cj4gLQo+ICAgICAgICAgaWYgKGh3bWdyLT5jdXJyZW50X3BzID09IE5V TEwpCj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gLSAgICAgICBtdXRleF9s b2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNt dV9sb2NrKTsKPgo+ICAgICAgICAgc3RhdGUgPSBod21nci0+Y3VycmVudF9wczsKPgo+IEBAIC01 NzEsMTQ3ICs1NDYsMTI5IEBAIHN0YXRpYyBlbnVtIGFtZF9wbV9zdGF0ZV90eXBlIHBwX2RwbV9n ZXRfY3VycmVudF9wb3dlcl9zdGF0ZSh2b2lkICpoYW5kbGUpCj4gICAgICAgICAgICAgICAgICAg ICAgICAgcG1fdHlwZSA9IFBPV0VSX1NUQVRFX1RZUEVfREVGQVVMVDsKPiAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4gICAgICAgICB9Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+ cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4KPiAg ICAgICAgIHJldHVybiBwbV90eXBlOwo+ICB9Cj4KPiAgc3RhdGljIHZvaWQgcHBfZHBtX3NldF9m YW5fY29udHJvbF9tb2RlKHZvaWQgKmhhbmRsZSwgdWludDMyX3QgbW9kZSkKPiAgewo+IC0gICAg ICAgc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2Ug KnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7Cj4gKyAgICAgICBzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4KPiAt ICAgICAgIHJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVj ayhod21ncik7Cj4KPiAgICAgICAgIGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJldHVybjsK Pgo+IC0gICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmICho d21nci0+aHdtZ3JfZnVuYy0+c2V0X2Zhbl9jb250cm9sX21vZGUgPT0gTlVMTCkgewo+ICAgICAg ICAgICAgICAgICBwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18p Owo+ICAgICAgICAgICAgICAgICByZXR1cm47Cj4gICAgICAgICB9Cj4gLSAgICAgICBtdXRleF9s b2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNt dV9sb2NrKTsKPiAgICAgICAgIGh3bWdyLT5od21ncl9mdW5jLT5zZXRfZmFuX2NvbnRyb2xfbW9k ZShod21nciwgbW9kZSk7Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9j ayk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gIH0KPgo+ICBz dGF0aWMgdWludDMyX3QgcHBfZHBtX2dldF9mYW5fY29udHJvbF9tb2RlKHZvaWQgKmhhbmRsZSkK PiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7Cj4gLSAgICAgICBzdHJ1Y3Qg cHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7Cj4g KyAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgaW50IHJl dCA9IDA7Cj4gICAgICAgICB1aW50MzJfdCBtb2RlID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBf Y2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPgo+ICAg ICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0gICAgICAg aHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21nci0+aHdtZ3Jf ZnVuYy0+Z2V0X2Zhbl9jb250cm9sX21vZGUgPT0gTlVMTCkgewo+ICAgICAgICAgICAgICAgICBw cl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwo+ICAgICAgICAg ICAgICAgICByZXR1cm4gMDsKPiAgICAgICAgIH0KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hh bmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+ ICAgICAgICAgbW9kZSA9IGh3bWdyLT5od21ncl9mdW5jLT5nZXRfZmFuX2NvbnRyb2xfbW9kZSho d21ncik7Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAg ICAgICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gICAgICAgICByZXR1cm4gbW9k ZTsKPiAgfQo+Cj4gIHN0YXRpYyBpbnQgcHBfZHBtX3NldF9mYW5fc3BlZWRfcGVyY2VudCh2b2lk ICpoYW5kbGUsIHVpbnQzMl90IHBlcmNlbnQpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBwcF9od21n ciAgKmh3bWdyOwo+IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3Ry dWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21n ciA9IGhhbmRsZTsKPiAgICAgICAgIGludCByZXQgPSAwOwo+Cj4gLSAgICAgICByZXQgPSBwcF9j aGVjayhwcF9oYW5kbGUpOwo+ICsgICAgICAgcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwo+Cj4gICAg ICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Cj4gLSAgICAgICBo d21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Cj4gLQo+ICAgICAgICAgaWYgKGh3bWdyLT5od21ncl9m dW5jLT5zZXRfZmFuX3NwZWVkX3BlcmNlbnQgPT0gTlVMTCkgewo+ICAgICAgICAgICAgICAgICBw cl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwo+ICAgICAgICAg ICAgICAgICByZXR1cm4gMDsKPiAgICAgICAgIH0KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hh bmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+ ICAgICAgICAgcmV0ID0gaHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9mYW5fc3BlZWRfcGVyY2VudCho d21nciwgcGVyY2VudCk7Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9j ayk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gICAgICAgICBy ZXR1cm4gcmV0Owo+ICB9Cj4KPiAgc3RhdGljIGludCBwcF9kcG1fZ2V0X2Zhbl9zcGVlZF9wZXJj ZW50KHZvaWQgKmhhbmRsZSwgdWludDMyX3QgKnNwZWVkKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3Qg cHBfaHdtZ3IgICpod21ncjsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxl ID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21n ciAqaHdtZ3IgPSBoYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0 ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsK Pgo+ICAgICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0g ICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21nci0+ aHdtZ3JfZnVuYy0+Z2V0X2Zhbl9zcGVlZF9wZXJjZW50ID09IE5VTEwpIHsKPiAgICAgICAgICAg ICAgICAgcHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKPiAg ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICAgICB9Cj4KPiAtICAgICAgIG11dGV4X2xv Y2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211 X2xvY2spOwo+ICAgICAgICAgcmV0ID0gaHdtZ3ItPmh3bWdyX2Z1bmMtPmdldF9mYW5fc3BlZWRf cGVyY2VudChod21nciwgc3BlZWQpOwo+IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUt PnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAg ICAgICAgcmV0dXJuIHJldDsKPiAgfQo+Cj4gIHN0YXRpYyBpbnQgcHBfZHBtX2dldF9mYW5fc3Bl ZWRfcnBtKHZvaWQgKmhhbmRsZSwgdWludDMyX3QgKnJwbSkKPiAgewo+IC0gICAgICAgc3RydWN0 IHBwX2h3bWdyICpod21ncjsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxl ID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21n ciAqaHdtZ3IgPSBoYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0 ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsK Pgo+ICAgICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0g ICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21nci0+ aHdtZ3JfZnVuYy0+Z2V0X2Zhbl9zcGVlZF9ycG0gPT0gTlVMTCkKPiAgICAgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9j ayk7Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAgICAgICAgcmV0 ID0gaHdtZ3ItPmh3bWdyX2Z1bmMtPmdldF9mYW5fc3BlZWRfcnBtKGh3bWdyLCBycG0pOwo+IC0g ICAgICAgbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhf dW5sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAgICAgICAgcmV0dXJuIHJldDsKPiAgfQo+Cj4g IHN0YXRpYyBpbnQgcHBfZHBtX2dldF9wcF9udW1fc3RhdGVzKHZvaWQgKmhhbmRsZSwKPiAgICAg ICAgICAgICAgICAgc3RydWN0IHBwX3N0YXRlc19pbmZvICpkYXRhKQo+ICB7Cj4gLSAgICAgICBz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9 IGhhbmRsZTsKPiAgICAgICAgIGludCBpOwo+IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpw cF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+ICAgICAgICAgaW50IHJl dCA9IDA7Cj4KPiAgICAgICAgIG1lbXNldChkYXRhLCAwLCBzaXplb2YoKmRhdGEpKTsKPgo+IC0g ICAgICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNr KGh3bWdyKTsKPgo+ICAgICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPgo+IC0gICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlm IChod21nci0+cHMgPT0gTlVMTCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4K PiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRl eF9sb2NrKCZod21nci0+c211X2xvY2spOwo+Cj4gICAgICAgICBkYXRhLT5udW1zID0gaHdtZ3It Pm51bV9wczsKPgo+IEBAIC03MzUsNzMgKzY5Miw2OCBAQCBzdGF0aWMgaW50IHBwX2RwbV9nZXRf cHBfbnVtX3N0YXRlcyh2b2lkICpoYW5kbGUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhLT5zdGF0ZXNbaV0gPSBQT1dFUl9TVEFURV9UWVBFX0RFRkFVTFQ7Cj4gICAgICAg ICAgICAgICAgIH0KPiAgICAgICAgIH0KPiAtICAgICAgIG11dGV4X3VubG9jaygmcHBfaGFuZGxl LT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAg ICAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiAgc3RhdGljIGludCBwcF9kcG1fZ2V0X3BwX3RhYmxl KHZvaWQgKmhhbmRsZSwgY2hhciAqKnRhYmxlKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyOwo+IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3Ry dWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21n ciA9IGhhbmRsZTsKPiAgICAgICAgIGludCByZXQgPSAwOwo+ICAgICAgICAgaW50IHNpemUgPSAw Owo+Cj4gLSAgICAgICByZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAgICAgcmV0ID0g cHBfY2hlY2soaHdtZ3IpOwo+Cj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+Cj4gLSAgICAgICBod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Cj4gLQo+ICAg ICAgICAgaWYgKCFod21nci0+c29mdF9wcF90YWJsZSkKPiAgICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7Cj4KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4g KyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAgICAgICAgKnRhYmxlID0g KGNoYXIgKilod21nci0+c29mdF9wcF90YWJsZTsKPiAgICAgICAgIHNpemUgPSBod21nci0+c29m dF9wcF90YWJsZV9zaXplOwo+IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xv Y2spOwo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAgICAgICAg cmV0dXJuIHNpemU7Cj4gIH0KPgo+ICBzdGF0aWMgaW50IGFtZF9wb3dlcnBsYXlfcmVzZXQodm9p ZCAqaGFuZGxlKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2UgKmluc3RhbmNlID0g KHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAq aHdtZ3IgPSBoYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0Owo+Cj4gLSAgICAgICByZXQgPSBwcF9j aGVjayhpbnN0YW5jZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVjayhod21ncik7Cj4gICAgICAg ICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Cj4gLSAgICAgICByZXQg PSBwcF9od19maW5pKGluc3RhbmNlKTsKPiArICAgICAgIHJldCA9IHBwX2h3X2ZpbmkoaHdtZ3Ip Owo+ICAgICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0g ICAgICAgcmV0ID0gaHdtZ3JfaHdfaW5pdChpbnN0YW5jZSk7Cj4gKyAgICAgICByZXQgPSBod21n cl9od19pbml0KGh3bWdyKTsKPiAgICAgICAgIGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4KPiAtICAgICAgIHJldHVybiBod21ncl9oYW5kbGVfdGFzayhpbnN0YW5jZSwg QU1EX1BQX1RBU0tfQ09NUExFVEVfSU5JVCwgTlVMTCk7Cj4gKyAgICAgICByZXR1cm4gaHdtZ3Jf aGFuZGxlX3Rhc2soaHdtZ3IsIEFNRF9QUF9UQVNLX0NPTVBMRVRFX0lOSVQsIE5VTEwpOwo+ICB9 Cj4KPiAgc3RhdGljIGludCBwcF9kcG1fc2V0X3BwX3RhYmxlKHZvaWQgKmhhbmRsZSwgY29uc3Qg Y2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICpo d21ncjsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBw cF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBo YW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBfY2hlY2so cHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPgo+ICAgICAgICAg aWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0gICAgICAgaHdtZ3Ig PSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0gICAgICAgbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9s b2NrKTsKPiArICAgICAgIG11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gICAgICAgICBp ZiAoIWh3bWdyLT5oYXJkY29kZV9wcF90YWJsZSkgewo+ICAgICAgICAgICAgICAgICBod21nci0+ aGFyZGNvZGVfcHBfdGFibGUgPSBrbWVtZHVwKGh3bWdyLT5zb2Z0X3BwX3RhYmxlLAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3bWdyLT5zb2Z0 X3BwX3RhYmxlX3NpemUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0ZQX0tFUk5FTCk7Cj4gICAgICAgICAgICAgICAgIGlmICghaHdtZ3ItPmhh cmRjb2RlX3BwX3RhYmxlKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2Nr KCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIG11dGV4X3Vu bG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g LUVOT01FTTsKPiAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgfQo+IEBAIC04MDksNyArNzYx LDcgQEAgc3RhdGljIGludCBwcF9kcG1fc2V0X3BwX3RhYmxlKHZvaWQgKmhhbmRsZSwgY29uc3Qg Y2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkKPiAgICAgICAgIG1lbWNweShod21nci0+aGFyZGNvZGVf cHBfdGFibGUsIGJ1Ziwgc2l6ZSk7Cj4KPiAgICAgICAgIGh3bWdyLT5zb2Z0X3BwX3RhYmxlID0g aHdtZ3ItPmhhcmRjb2RlX3BwX3RhYmxlOwo+IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZwcF9oYW5k bGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwo+ Cj4gICAgICAgICByZXQgPSBhbWRfcG93ZXJwbGF5X3Jlc2V0KGhhbmRsZSk7Cj4gICAgICAgICBp ZiAocmV0KQo+IEBAIC04MjcsMTYzICs3NzksMTQyIEBAIHN0YXRpYyBpbnQgcHBfZHBtX3NldF9w cF90YWJsZSh2b2lkICpoYW5kbGUsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCj4gIHN0 YXRpYyBpbnQgcHBfZHBtX2ZvcmNlX2Nsb2NrX2xldmVsKHZvaWQgKmhhbmRsZSwKPiAgICAgICAg ICAgICAgICAgZW51bSBwcF9jbG9ja190eXBlIHR5cGUsIHVpbnQzMl90IG1hc2spCj4gIHsKPiAt ICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFu Y2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7Cj4gKyAgICAgICBz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4K PiAtICAgICAgIHJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBwcF9j aGVjayhod21ncik7Cj4KPiAgICAgICAgIGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJldHVy biByZXQ7Cj4KPiAtICAgICAgIGh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAg ICBpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPmZvcmNlX2Nsb2NrX2xldmVsID09IE5VTEwpIHsKPiAg ICAgICAgICAgICAgICAgcHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVu Y19fKTsKPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICAgICB9Cj4gLSAgICAgICBt dXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdt Z3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIGlmIChod21nci0+ZHBtX2xldmVsID09IEFNRF9EUE1f Rk9SQ0VEX0xFVkVMX01BTlVBTCkKPiAgICAgICAgICAgICAgICAgcmV0ID0gaHdtZ3ItPmh3bWdy X2Z1bmMtPmZvcmNlX2Nsb2NrX2xldmVsKGh3bWdyLCB0eXBlLCBtYXNrKTsKPiAgICAgICAgIGVs c2UKPiAgICAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiAtICAgICAgIG11dGV4X3VubG9j aygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNt dV9sb2NrKTsKPiAgICAgICAgIHJldHVybiByZXQ7Cj4gIH0KPgo+ICBzdGF0aWMgaW50IHBwX2Rw bV9wcmludF9jbG9ja19sZXZlbHModm9pZCAqaGFuZGxlLAo+ICAgICAgICAgICAgICAgICBlbnVt IHBwX2Nsb2NrX3R5cGUgdHlwZSwgY2hhciAqYnVmKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyOwo+IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAo c3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpo d21nciA9IGhhbmRsZTsKPiAgICAgICAgIGludCByZXQgPSAwOwo+Cj4gLSAgICAgICByZXQgPSBw cF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAgICAgcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwo+Cj4g ICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Cj4gLSAgICAg ICBod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Cj4gLQo+ICAgICAgICAgaWYgKGh3bWdyLT5od21n cl9mdW5jLT5wcmludF9jbG9ja19sZXZlbHMgPT0gTlVMTCkgewo+ICAgICAgICAgICAgICAgICBw cl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwo+ICAgICAgICAg ICAgICAgICByZXR1cm4gMDsKPiAgICAgICAgIH0KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hh bmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+ ICAgICAgICAgcmV0ID0gaHdtZ3ItPmh3bWdyX2Z1bmMtPnByaW50X2Nsb2NrX2xldmVscyhod21n ciwgdHlwZSwgYnVmKTsKPiAtICAgICAgIG11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2Nr KTsKPiArICAgICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIHJl dHVybiByZXQ7Cj4gIH0KPgo+ICBzdGF0aWMgaW50IHBwX2RwbV9nZXRfc2Nsa19vZCh2b2lkICpo YW5kbGUpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gLSAgICAgICBz dHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5k bGU7Cj4gKyAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAg aW50IHJldCA9IDA7Cj4KPiAtICAgICAgIHJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAg ICAgICByZXQgPSBwcF9jaGVjayhod21ncik7Cj4KPiAgICAgICAgIGlmIChyZXQpCj4gICAgICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4KPiAtICAgICAgIGh3bWdyID0gcHBfaGFuZGxlLT5od21n cjsKPiAtCj4gICAgICAgICBpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPmdldF9zY2xrX29kID09IE5V TEwpIHsKPiAgICAgICAgICAgICAgICAgcHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5c biIsIF9fZnVuY19fKTsKPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICAgICB9Cj4g LSAgICAgICBtdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhf bG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIHJldCA9IGh3bWdyLT5od21ncl9mdW5j LT5nZXRfc2Nsa19vZChod21ncik7Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+ cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gICAg ICAgICByZXR1cm4gcmV0Owo+ICB9Cj4KPiAgc3RhdGljIGludCBwcF9kcG1fc2V0X3NjbGtfb2Qo dm9pZCAqaGFuZGxlLCB1aW50MzJfdCB2YWx1ZSkKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3 bWdyICpod21ncjsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0 cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdt Z3IgPSBoYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBf Y2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPgo+ICAg ICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0gICAgICAg aHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21nci0+aHdtZ3Jf ZnVuYy0+c2V0X3NjbGtfb2QgPT0gTlVMTCkgewo+ICAgICAgICAgICAgICAgICBwcl9pbmZvKCIl cyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwo+ICAgICAgICAgICAgICAgICBy ZXR1cm4gMDsKPiAgICAgICAgIH0KPgo+IC0gICAgICAgbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5w cF9sb2NrKTsKPiArICAgICAgIG11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gICAgICAg ICByZXQgPSBod21nci0+aHdtZ3JfZnVuYy0+c2V0X3NjbGtfb2QoaHdtZ3IsIHZhbHVlKTsKPiAt ICAgICAgIG11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4 X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIHJldHVybiByZXQ7Cj4gIH0KPgo+ ICBzdGF0aWMgaW50IHBwX2RwbV9nZXRfbWNsa19vZCh2b2lkICpoYW5kbGUpCj4gIHsKPiAtICAg ICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2Ug KnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7Cj4gKyAgICAgICBzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4KPiAt ICAgICAgIHJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVj ayhod21ncik7Cj4KPiAgICAgICAgIGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4KPiAtICAgICAgIGh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAgICBp ZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPmdldF9tY2xrX29kID09IE5VTEwpIHsKPiAgICAgICAgICAg ICAgICAgcHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKPiAg ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICAgICB9Cj4gLSAgICAgICBtdXRleF9sb2Nr KCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9s b2NrKTsKPiAgICAgICAgIHJldCA9IGh3bWdyLT5od21ncl9mdW5jLT5nZXRfbWNsa19vZChod21n cik7Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAg ICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gICAgICAgICByZXR1cm4gcmV0Owo+ ICB9Cj4KPiAgc3RhdGljIGludCBwcF9kcG1fc2V0X21jbGtfb2Qodm9pZCAqaGFuZGxlLCB1aW50 MzJfdCB2YWx1ZSkKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICpod21ncjsKPiAtICAg ICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAq KWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7Cj4gICAg ICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsK PiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPgo+ICAgICAgICAgaWYgKHJldCkKPiAg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0gICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUt Pmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21nci0+aHdtZ3JfZnVuYy0+c2V0X21jbGtfb2Qg PT0gTlVMTCkgewo+ICAgICAgICAgICAgICAgICBwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVu dGVkLlxuIiwgX19mdW5jX18pOwo+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiAgICAgICAg IH0KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBt dXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAgICAgICAgcmV0ID0gaHdtZ3ItPmh3bWdy X2Z1bmMtPnNldF9tY2xrX29kKGh3bWdyLCB2YWx1ZSk7Cj4gLSAgICAgICBtdXRleF91bmxvY2so JnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVf bG9jayk7Cj4gICAgICAgICByZXR1cm4gcmV0Owo+ICB9Cj4KPiAgc3RhdGljIGludCBwcF9kcG1f cmVhZF9zZW5zb3Iodm9pZCAqaGFuZGxlLCBpbnQgaWR4LAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKnZhbHVlLCBpbnQgKnNpemUpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBw cF9od21nciAqaHdtZ3I7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9 IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7Cj4gKyAgICAgICBzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4KPiAtICAgICAgIHJldCA9 IHBwX2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVjayhod21ncik7Cj4g ICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Cj4gICAgICAg ICBpZiAodmFsdWUgPT0gTlVMTCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4K PiAtICAgICAgIGh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAgICBzd2l0Y2gg KGlkeCkgewo+ICAgICAgICAgY2FzZSBBTURHUFVfUFBfU0VOU09SX1NUQUJMRV9QU1RBVEVfU0NM SzoKPiAgICAgICAgICAgICAgICAgKigodWludDMyX3QgKil2YWx1ZSkgPSBod21nci0+cHN0YXRl X3NjbGs7Cj4gQEAgLTk5Miw5ICs5MjMsOSBAQCBzdGF0aWMgaW50IHBwX2RwbV9yZWFkX3NlbnNv cih2b2lkICpoYW5kbGUsIGludCBpZHgsCj4gICAgICAgICAgICAgICAgICooKHVpbnQzMl90ICop dmFsdWUpID0gaHdtZ3ItPnBzdGF0ZV9tY2xrOwo+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsK PiAgICAgICAgIGRlZmF1bHQ6Cj4gLSAgICAgICAgICAgICAgIG11dGV4X2xvY2soJnBwX2hhbmRs ZS0+cHBfbG9jayk7Cj4gKyAgICAgICAgICAgICAgIG11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9j ayk7Cj4gICAgICAgICAgICAgICAgIHJldCA9IGh3bWdyLT5od21ncl9mdW5jLT5yZWFkX3NlbnNv cihod21nciwgaWR4LCB2YWx1ZSwgc2l6ZSk7Cj4gLSAgICAgICAgICAgICAgIG11dGV4X3VubG9j aygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZo d21nci0+c211X2xvY2spOwo+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgICAgICAg fQo+ICB9Cj4gQEAgLTEwMDIsMTcgKzkzMywxNCBAQCBzdGF0aWMgaW50IHBwX2RwbV9yZWFkX3Nl bnNvcih2b2lkICpoYW5kbGUsIGludCBpZHgsCj4gIHN0YXRpYyBzdHJ1Y3QgYW1kX3ZjZV9zdGF0 ZSoKPiAgcHBfZHBtX2dldF92Y2VfY2xvY2tfc3RhdGUodm9pZCAqaGFuZGxlLCB1bnNpZ25lZCBp ZHgpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gLSAgICAgICBzdHJ1 Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7 Cj4gKyAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgaW50 IHJldCA9IDA7Cj4KPiAtICAgICAgIHJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAgICAg ICByZXQgPSBwcF9jaGVjayhod21ncik7Cj4KPiAgICAgICAgIGlmIChyZXQpCj4gICAgICAgICAg ICAgICAgIHJldHVybiBOVUxMOwo+Cj4gLSAgICAgICBod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7 Cj4gLQo+ICAgICAgICAgaWYgKGh3bWdyICYmIGlkeCA8IGh3bWdyLT5udW1fdmNlX3N0YXRlX3Rh YmxlcykKPiAgICAgICAgICAgICAgICAgcmV0dXJuICZod21nci0+dmNlX3N0YXRlc1tpZHhdOwo+ ICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gQEAgLTEwMjAsMTQgKzk0OCwxMSBAQCBzdGF0aWMgaW50 IHBwX2RwbV9yZWFkX3NlbnNvcih2b2lkICpoYW5kbGUsIGludCBpZHgsCj4KPiAgc3RhdGljIGlu dCBwcF9nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKHZvaWQgKmhhbmRsZSwgY2hhciAqYnVmKQo+ICB7 Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwo+IC0gICAgICAgc3RydWN0IHBwX2lu c3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+ICsgICAg ICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKPgo+IC0gICAgICAgaWYgKCFidWYg fHwgcHBfY2hlY2socHBfaGFuZGxlKSkKPiArICAgICAgIGlmICghYnVmIHx8IHBwX2NoZWNrKGh3 bWdyKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4KPiAtICAgICAgIGh3bWdy ID0gcHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAgICBpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMt PmdldF9wb3dlcl9wcm9maWxlX21vZGUgPT0gTlVMTCkgewo+ICAgICAgICAgICAgICAgICBwcl9p bmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwo+ICAgICAgICAgICAg ICAgICByZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICJcbiIpOwo+IEBAIC0xMDM4LDM2 ICs5NjMsMzAgQEAgc3RhdGljIGludCBwcF9nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKHZvaWQgKmhh bmRsZSwgY2hhciAqYnVmKQo+Cj4gIHN0YXRpYyBpbnQgcHBfc2V0X3Bvd2VyX3Byb2ZpbGVfbW9k ZSh2b2lkICpoYW5kbGUsIGxvbmcgKmlucHV0LCB1aW50MzJfdCBzaXplKQo+ICB7Cj4gLSAgICAg ICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwo+IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpw cF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0 IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKPiAgICAgICAgIGludCByZXQgPSAtRUlOVkFMOwo+ Cj4gLSAgICAgICBpZiAocHBfY2hlY2socHBfaGFuZGxlKSkKPiArICAgICAgIGlmIChwcF9jaGVj ayhod21ncikpCj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gLSAgICAgICBo d21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Cj4gLQo+ICAgICAgICAgaWYgKGh3bWdyLT5od21ncl9m dW5jLT5zZXRfcG93ZXJfcHJvZmlsZV9tb2RlID09IE5VTEwpIHsKPiAgICAgICAgICAgICAgICAg cHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKPiAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gICAgICAgICB9Cj4gLSAgICAgICBtdXRleF9sb2Nr KCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9s b2NrKTsKPiAgICAgICAgIGlmIChod21nci0+ZHBtX2xldmVsID09IEFNRF9EUE1fRk9SQ0VEX0xF VkVMX01BTlVBTCkKPiAgICAgICAgICAgICAgICAgcmV0ID0gaHdtZ3ItPmh3bWdyX2Z1bmMtPnNl dF9wb3dlcl9wcm9maWxlX21vZGUoaHdtZ3IsIGlucHV0LCBzaXplKTsKPiAtICAgICAgIG11dGV4 X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X3VubG9jaygmaHdt Z3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIHJldHVybiByZXQ7Cj4gIH0KPgo+ICBzdGF0aWMgaW50 IHBwX29kbl9lZGl0X2RwbV90YWJsZSh2b2lkICpoYW5kbGUsIHVpbnQzMl90IHR5cGUsIGxvbmcg KmlucHV0LCB1aW50MzJfdCBzaXplKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyOwo+IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBw X2luc3RhbmNlICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhh bmRsZTsKPgo+IC0gICAgICAgaWYgKHBwX2NoZWNrKHBwX2hhbmRsZSkpCj4gKyAgICAgICBpZiAo cHBfY2hlY2soaHdtZ3IpKQo+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPgo+IC0g ICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21nci0+ aHdtZ3JfZnVuYy0+b2RuX2VkaXRfZHBtX3RhYmxlID09IE5VTEwpIHsKPiAgICAgICAgICAgICAg ICAgcHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKPiAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTEwNzksMTYgKzk5OCwxMyBAQCBzdGF0 aWMgaW50IHBwX29kbl9lZGl0X2RwbV90YWJsZSh2b2lkICpoYW5kbGUsIHVpbnQzMl90IHR5cGUs IGxvbmcgKmlucHV0LCB1aW50Mwo+ICBzdGF0aWMgaW50IHBwX2RwbV9zd2l0Y2hfcG93ZXJfcHJv ZmlsZSh2b2lkICpoYW5kbGUsCj4gICAgICAgICAgICAgICAgIGVudW0gUFBfU01DX1BPV0VSX1BS T0ZJTEUgdHlwZSwgYm9vbCBlbikKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICpod21n cjsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9p bnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5k bGU7Cj4gICAgICAgICBsb25nIHdvcmtsb2FkOwo+ICAgICAgICAgdWludDMyX3QgaW5kZXg7Cj4K PiAtICAgICAgIGlmIChwcF9jaGVjayhwcF9oYW5kbGUpKQo+ICsgICAgICAgaWYgKHBwX2NoZWNr KGh3bWdyKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4KPiAtICAgICAgIGh3 bWdyID0gcHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAgICBpZiAoaHdtZ3ItPmh3bWdyX2Z1 bmMtPnNldF9wb3dlcl9wcm9maWxlX21vZGUgPT0gTlVMTCkgewo+ICAgICAgICAgICAgICAgICBw cl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwo+ICAgICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTA5Nyw3ICsxMDEzLDcgQEAgc3RhdGljIGlu dCBwcF9kcG1fc3dpdGNoX3Bvd2VyX3Byb2ZpbGUodm9pZCAqaGFuZGxlLAo+ICAgICAgICAgaWYg KCEodHlwZSA8IFBQX1NNQ19QT1dFUl9QUk9GSUxFX0NVU1RPTSkpCj4gICAgICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOwo+Cj4gLSAgICAgICBtdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xv Y2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPgo+ICAgICAgICAg aWYgKCFlbikgewo+ICAgICAgICAgICAgICAgICBod21nci0+d29ya2xvYWRfbWFzayAmPSB+KDEg PDwgaHdtZ3ItPndvcmtsb2FkX3Byb3JpdHlbdHlwZV0pOwo+IEBAIC0xMTEzLDcgKzEwMjksNyBA QCBzdGF0aWMgaW50IHBwX2RwbV9zd2l0Y2hfcG93ZXJfcHJvZmlsZSh2b2lkICpoYW5kbGUsCj4K PiAgICAgICAgIGlmIChod21nci0+ZHBtX2xldmVsICE9IEFNRF9EUE1fRk9SQ0VEX0xFVkVMX01B TlVBTCkKPiAgICAgICAgICAgICAgICAgaHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9wb3dlcl9wcm9m aWxlX21vZGUoaHdtZ3IsICZ3b3JrbG9hZCwgMCk7Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBw X2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9j ayk7Cj4KPiAgICAgICAgIHJldHVybiAwOwo+ICB9Cj4gQEAgLTExMjUsNDYgKzEwNDEsNDAgQEAg c3RhdGljIGludCBwcF9kcG1fbm90aWZ5X3NtdV9tZW1vcnlfaW5mbyh2b2lkICpoYW5kbGUsCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1jX2FkZHJf aGksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNp emUpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBwcF9od21nciAgKmh3bWdyOwo+IC0gICAgICAgc3Ry dWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxl Owo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKPiAgICAgICAgIGlu dCByZXQgPSAwOwo+Cj4gLSAgICAgICByZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAg ICAgcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwo+Cj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+Cj4gLSAgICAgICBod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7 Cj4gLQo+ICAgICAgICAgaWYgKGh3bWdyLT5od21ncl9mdW5jLT5ub3RpZnlfY2FjX2J1ZmZlcl9p bmZvID09IE5VTEwpIHsKPiAgICAgICAgICAgICAgICAgcHJfaW5mbygiJXMgd2FzIG5vdCBpbXBs ZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4gICAgICAgICB9Cj4KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7 Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+Cj4gICAgICAgICByZXQg PSBod21nci0+aHdtZ3JfZnVuYy0+bm90aWZ5X2NhY19idWZmZXJfaW5mbyhod21nciwgdmlydHVh bF9hZGRyX2xvdywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmly dHVhbF9hZGRyX2hpLCBtY19hZGRyX2xvdywgbWNfYWRkcl9oaSwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7Cj4KPiAtICAgICAgIG11dGV4X3VubG9jaygm cHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9s b2NrKTsKPgo+ICAgICAgICAgcmV0dXJuIHJldDsKPiAgfQo+Cj4gIHN0YXRpYyBpbnQgcHBfc2V0 X3Bvd2VyX2xpbWl0KHZvaWQgKmhhbmRsZSwgdWludDMyX3QgbGltaXQpCj4gIHsKPiAtICAgICAg IHN0cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBw X2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7Cj4gKyAgICAgICBzdHJ1Y3Qg cHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4KPiAtICAg ICAgIHJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVjayho d21ncik7Cj4KPiAgICAgICAgIGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4KPiAtICAgICAgIGh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAgICBpZiAo aHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9wb3dlcl9saW1pdCA9PSBOVUxMKSB7Cj4gICAgICAgICAg ICAgICAgIHByX2luZm8oIiVzIHdhcyBub3QgaW1wbGVtZW50ZWQuXG4iLCBfX2Z1bmNfXyk7Cj4g ICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IEBAIC0xMTc2LDIwICsxMDg2LDE5IEBA IHN0YXRpYyBpbnQgcHBfc2V0X3Bvd2VyX2xpbWl0KHZvaWQgKmhhbmRsZSwgdWludDMyX3QgbGlt aXQpCj4gICAgICAgICBpZiAobGltaXQgPiBod21nci0+ZGVmYXVsdF9wb3dlcl9saW1pdCkKPiAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4KPiAtICAgICAgIG11dGV4X2xvY2soJnBw X2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2sp Owo+ICAgICAgICAgaHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9wb3dlcl9saW1pdChod21nciwgbGlt aXQpOwo+ICAgICAgICAgaHdtZ3ItPnBvd2VyX2xpbWl0ID0gbGltaXQ7Cj4gLSAgICAgICBtdXRl eF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmh3 bWdyLT5zbXVfbG9jayk7Cj4gICAgICAgICByZXR1cm4gcmV0Owo+ICB9Cj4KPiAgc3RhdGljIGlu dCBwcF9nZXRfcG93ZXJfbGltaXQodm9pZCAqaGFuZGxlLCB1aW50MzJfdCAqbGltaXQsIGJvb2wg ZGVmYXVsdF9saW1pdCkKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICpod21ncjsKPiAt ICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5j ZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7Cj4g ICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxl KTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPgo+ICAgICAgICAgaWYgKHJldCkK PiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiBAQCAtMTE5NywxNiArMTEwNiwxNCBAQCBz dGF0aWMgaW50IHBwX2dldF9wb3dlcl9saW1pdCh2b2lkICpoYW5kbGUsIHVpbnQzMl90ICpsaW1p dCwgYm9vbCBkZWZhdWx0X2xpbWl0KQo+ICAgICAgICAgaWYgKGxpbWl0ID09IE5VTEwpCj4gICAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gLSAgICAgICBod21nciA9IHBwX2hhbmRs ZS0+aHdtZ3I7Cj4gLQo+IC0gICAgICAgbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsK PiArICAgICAgIG11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4KPiAgICAgICAgIGlmIChk ZWZhdWx0X2xpbWl0KQo+ICAgICAgICAgICAgICAgICAqbGltaXQgPSBod21nci0+ZGVmYXVsdF9w b3dlcl9saW1pdDsKPiAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAgICAgKmxpbWl0ID0gaHdt Z3ItPnBvd2VyX2xpbWl0Owo+Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBf bG9jayk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4KPiAgICAg ICAgIHJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMTIxNCw0MiArMTEyMSwzNyBAQCBzdGF0aWMgaW50 IHBwX2dldF9wb3dlcl9saW1pdCh2b2lkICpoYW5kbGUsIHVpbnQzMl90ICpsaW1pdCwgYm9vbCBk ZWZhdWx0X2xpbWl0KQo+ICBzdGF0aWMgaW50IHBwX2Rpc3BsYXlfY29uZmlndXJhdGlvbl9jaGFu Z2Uodm9pZCAqaGFuZGxlLAo+ICAgICAgICAgY29uc3Qgc3RydWN0IGFtZF9wcF9kaXNwbGF5X2Nv bmZpZ3VyYXRpb24gKmRpc3BsYXlfY29uZmlnKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdt Z3IgICpod21ncjsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0 cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdt Z3IgPSBoYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBf Y2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPgo+ICAg ICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0gICAgICAg aHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0gICAgICAgbXV0ZXhfbG9jaygmcHBfaGFuZGxl LT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gICAg ICAgICBwaG1fc3RvcmVfZGFsX2NvbmZpZ3VyYXRpb25fZGF0YShod21nciwgZGlzcGxheV9jb25m aWcpOwo+IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAg ICAgbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAgICAgICAgcmV0dXJuIDA7Cj4g IH0KPgo+ICBzdGF0aWMgaW50IHBwX2dldF9kaXNwbGF5X3Bvd2VyX2xldmVsKHZvaWQgKmhhbmRs ZSwKPiAgICAgICAgICAgICAgICAgc3RydWN0IGFtZF9wcF9zaW1wbGVfY2xvY2tfaW5mbyAqb3V0 cHV0KQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgICpod21ncjsKPiAtICAgICAgIHN0 cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRs ZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7Cj4gICAgICAgICBp bnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAg ICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPgo+ICAgICAgICAgaWYgKHJldCkKPiAgICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0gICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdy Owo+IC0KPiAgICAgICAgIGlmIChvdXRwdXQgPT0gTlVMTCkKPiAgICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7 Cj4gKyAgICAgICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAgICAgICAgcmV0ID0g cGhtX2dldF9kYWxfcG93ZXJfbGV2ZWwoaHdtZ3IsIG91dHB1dCk7Cj4gLSAgICAgICBtdXRleF91 bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJmh3bWdy LT5zbXVfbG9jayk7Cj4gICAgICAgICByZXR1cm4gcmV0Owo+ICB9Cj4KPiBAQCAtMTI1OCwxOCAr MTE2MCwxNSBAQCBzdGF0aWMgaW50IHBwX2dldF9jdXJyZW50X2Nsb2Nrcyh2b2lkICpoYW5kbGUs Cj4gIHsKPiAgICAgICAgIHN0cnVjdCBhbWRfcHBfc2ltcGxlX2Nsb2NrX2luZm8gc2ltcGxlX2Ns b2NrczsKPiAgICAgICAgIHN0cnVjdCBwcF9jbG9ja19pbmZvIGh3X2Nsb2NrczsKPiAtICAgICAg IHN0cnVjdCBwcF9od21nciAgKmh3bWdyOwo+IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpw cF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0 IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKPiAgICAgICAgIGludCByZXQgPSAwOwo+Cj4gLSAg ICAgICByZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAgICAgcmV0ID0gcHBfY2hlY2so aHdtZ3IpOwo+Cj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0 Owo+Cj4gLSAgICAgICBod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Cj4gLQo+IC0gICAgICAgbXV0 ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X2xvY2soJmh3bWdy LT5zbXVfbG9jayk7Cj4KPiAgICAgICAgIHBobV9nZXRfZGFsX3Bvd2VyX2xldmVsKGh3bWdyLCAm c2ltcGxlX2Nsb2Nrcyk7Cj4KPiBAQCAtMTI4Myw3ICsxMTgyLDcgQEAgc3RhdGljIGludCBwcF9n ZXRfY3VycmVudF9jbG9ja3Modm9pZCAqaGFuZGxlLAo+Cj4gICAgICAgICBpZiAocmV0KSB7Cj4g ICAgICAgICAgICAgICAgIHByX2luZm8oIkVycm9yIGluIHBobV9nZXRfY2xvY2tfaW5mbyBcbiIp Owo+IC0gICAgICAgICAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4g KyAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gICAgICAgICB9Cj4KPiBAQCAtMTMwMywyOSArMTIw MiwyNiBAQCBzdGF0aWMgaW50IHBwX2dldF9jdXJyZW50X2Nsb2Nrcyh2b2lkICpoYW5kbGUsCj4g ICAgICAgICAgICAgICAgIGNsb2Nrcy0+bWF4X2VuZ2luZV9jbG9ja19pbl9zciA9IGh3X2Nsb2Nr cy5tYXhfZW5nX2NsazsKPiAgICAgICAgICAgICAgICAgY2xvY2tzLT5taW5fZW5naW5lX2Nsb2Nr X2luX3NyID0gaHdfY2xvY2tzLm1pbl9lbmdfY2xrOwo+ICAgICAgICAgfQo+IC0gICAgICAgbXV0 ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZo d21nci0+c211X2xvY2spOwo+ICAgICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+ICBzdGF0aWMgaW50 IHBwX2dldF9jbG9ja19ieV90eXBlKHZvaWQgKmhhbmRsZSwgZW51bSBhbWRfcHBfY2xvY2tfdHlw ZSB0eXBlLCBzdHJ1Y3QgYW1kX3BwX2Nsb2NrcyAqY2xvY2tzKQo+ICB7Cj4gLSAgICAgICBzdHJ1 Y3QgcHBfaHdtZ3IgICpod21ncjsKPiAtICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFu ZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9o d21nciAqaHdtZ3IgPSBoYW5kbGU7Cj4gICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAg cmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdy KTsKPgo+ICAgICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+ IC0gICAgICAgaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChjbG9j a3MgPT0gTlVMTCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4KPiAtICAgICAg IG11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAgICBtdXRleF9sb2NrKCZo d21nci0+c211X2xvY2spOwo+ICAgICAgICAgcmV0ID0gcGhtX2dldF9jbG9ja19ieV90eXBlKGh3 bWdyLCB0eXBlLCBjbG9ja3MpOwo+IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBw X2xvY2spOwo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAgICAg ICAgcmV0dXJuIHJldDsKPiAgfQo+Cj4gQEAgLTEzMzMsMjEgKzEyMjksMTkgQEAgc3RhdGljIGlu dCBwcF9nZXRfY2xvY2tfYnlfdHlwZV93aXRoX2xhdGVuY3kodm9pZCAqaGFuZGxlLAo+ICAgICAg ICAgICAgICAgICBlbnVtIGFtZF9wcF9jbG9ja190eXBlIHR5cGUsCj4gICAgICAgICAgICAgICAg IHN0cnVjdCBwcF9jbG9ja19sZXZlbHNfd2l0aF9sYXRlbmN5ICpjbG9ja3MpCj4gIHsKPiAtICAg ICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2Ug KnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7Cj4gKyAgICAgICBzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4KPiAt ICAgICAgIHJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVj ayhod21ncik7Cj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0 Owo+Cj4gICAgICAgICBpZiAoIWNsb2NrcykKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4KPiAtICAgICAgIG11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gLSAgICAg ICBod21nciA9ICgoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlKS0+aHdtZ3I7Cj4gKyAgICAg ICBtdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwo+ICAgICAgICAgcmV0ID0gcGhtX2dldF9j bG9ja19ieV90eXBlX3dpdGhfbGF0ZW5jeShod21nciwgdHlwZSwgY2xvY2tzKTsKPiAtICAgICAg IG11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X3VubG9j aygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIHJldHVybiByZXQ7Cj4gIH0KPgo+IEBAIC0x MzU1LDQ3ICsxMjQ5LDQxIEBAIHN0YXRpYyBpbnQgcHBfZ2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF92 b2x0YWdlKHZvaWQgKmhhbmRsZSwKPiAgICAgICAgICAgICAgICAgZW51bSBhbWRfcHBfY2xvY2tf dHlwZSB0eXBlLAo+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHBfY2xvY2tfbGV2ZWxzX3dpdGhf dm9sdGFnZSAqY2xvY2tzKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwo+ IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3Rh bmNlICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsK PiAgICAgICAgIGludCByZXQgPSAwOwo+Cj4gLSAgICAgICByZXQgPSBwcF9jaGVjayhwcF9oYW5k bGUpOwo+ICsgICAgICAgcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwo+ICAgICAgICAgaWYgKHJldCkK PiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+ICAgICAgICAgaWYgKCFjbG9ja3MpCj4g ICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gLSAgICAgICBod21nciA9ICgoc3Ry dWN0IHBwX2luc3RhbmNlICopaGFuZGxlKS0+aHdtZ3I7Cj4gLQo+IC0gICAgICAgbXV0ZXhfbG9j aygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X2xvY2soJmh3bWdyLT5zbXVf bG9jayk7Cj4KPiAgICAgICAgIHJldCA9IHBobV9nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3ZvbHRh Z2UoaHdtZ3IsIHR5cGUsIGNsb2Nrcyk7Cj4KPiAtICAgICAgIG11dGV4X3VubG9jaygmcHBfaGFu ZGxlLT5wcF9sb2NrKTsKPiArICAgICAgIG11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsK PiAgICAgICAgIHJldHVybiByZXQ7Cj4gIH0KPgo+ICBzdGF0aWMgaW50IHBwX3NldF93YXRlcm1h cmtzX2Zvcl9jbG9ja3NfcmFuZ2VzKHZvaWQgKmhhbmRsZSwKPiAgICAgICAgICAgICAgICAgc3Ry dWN0IHBwX3dtX3NldHNfd2l0aF9jbG9ja19yYW5nZXNfc29jMTUgKndtX3dpdGhfY2xvY2tfcmFu Z2VzKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwo+IC0gICAgICAgc3Ry dWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxl Owo+ICsgICAgICAgc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKPiAgICAgICAgIGlu dCByZXQgPSAwOwo+Cj4gLSAgICAgICByZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAg ICAgcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwo+ICAgICAgICAgaWYgKHJldCkKPiAgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPgo+ICAgICAgICAgaWYgKCF3bV93aXRoX2Nsb2NrX3JhbmdlcykK PiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4KPiAtICAgICAgIGh3bWdyID0gKChz dHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGUpLT5od21ncjsKPiAtCj4gLSAgICAgICBtdXRleF9s b2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNt dV9sb2NrKTsKPiAgICAgICAgIHJldCA9IHBobV9zZXRfd2F0ZXJtYXJrc19mb3JfY2xvY2tzX3Jh bmdlcyhod21nciwKPiAgICAgICAgICAgICAgICAgICAgICAgICB3bV93aXRoX2Nsb2NrX3Jhbmdl cyk7Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4gKyAgICAg ICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4KPiAgICAgICAgIHJldHVybiByZXQ7 Cj4gIH0KPiBAQCAtMTQwMywyMiArMTI5MSwxOSBAQCBzdGF0aWMgaW50IHBwX3NldF93YXRlcm1h cmtzX2Zvcl9jbG9ja3NfcmFuZ2VzKHZvaWQgKmhhbmRsZSwKPiAgc3RhdGljIGludCBwcF9kaXNw bGF5X2Nsb2NrX3ZvbHRhZ2VfcmVxdWVzdCh2b2lkICpoYW5kbGUsCj4gICAgICAgICAgICAgICAg IHN0cnVjdCBwcF9kaXNwbGF5X2Nsb2NrX3JlcXVlc3QgKmNsb2NrKQo+ICB7Cj4gLSAgICAgICBz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwo+IC0gICAgICAgc3RydWN0IHBwX2luc3RhbmNlICpwcF9o YW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwo+ICsgICAgICAgc3RydWN0IHBw X2h3bWdyICpod21nciA9IGhhbmRsZTsKPiAgICAgICAgIGludCByZXQgPSAwOwo+Cj4gLSAgICAg ICByZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOwo+ICsgICAgICAgcmV0ID0gcHBfY2hlY2soaHdt Z3IpOwo+ICAgICAgICAgaWYgKHJldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+ ICAgICAgICAgaWYgKCFjbG9jaykKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4K PiAtICAgICAgIGh3bWdyID0gKChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGUpLT5od21ncjsK PiAtCj4gLSAgICAgICBtdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAg bXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKPiAgICAgICAgIHJldCA9IHBobV9kaXNwbGF5 X2Nsb2NrX3ZvbHRhZ2VfcmVxdWVzdChod21nciwgY2xvY2spOwo+IC0gICAgICAgbXV0ZXhfdW5s b2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZod21nci0+ c211X2xvY2spOwo+Cj4gICAgICAgICByZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTE0MjYsNDIgKzEz MTEsMzYgQEAgc3RhdGljIGludCBwcF9kaXNwbGF5X2Nsb2NrX3ZvbHRhZ2VfcmVxdWVzdCh2b2lk ICpoYW5kbGUsCj4gIHN0YXRpYyBpbnQgcHBfZ2V0X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Ns b2Nrcyh2b2lkICpoYW5kbGUsCj4gICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRfcHBfc2ltcGxl X2Nsb2NrX2luZm8gKmNsb2NrcykKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICAqaHdt Z3I7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBf aW5zdGFuY2UgKiloYW5kbGU7Cj4gKyAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFu ZGxlOwo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4KPiAtICAgICAgIHJldCA9IHBwX2NoZWNrKHBw X2hhbmRsZSk7Cj4gKyAgICAgICByZXQgPSBwcF9jaGVjayhod21ncik7Cj4KPiAgICAgICAgIGlm IChyZXQpCj4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4KPiAtICAgICAgIGh3bWdyID0g cHBfaGFuZGxlLT5od21ncjsKPiAtCj4gICAgICAgICBpZiAoY2xvY2tzID09IE5VTEwpCj4gICAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gLSAgICAgICBtdXRleF9sb2NrKCZwcF9o YW5kbGUtPnBwX2xvY2spOwo+ICsgICAgICAgbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsK Pgo+ICAgICAgICAgaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRv ci5wbGF0Zm9ybUNhcHMsIFBITV9QbGF0Zm9ybUNhcHNfRHluYW1pY1BhdGNoUG93ZXJTdGF0ZSkp Cj4gICAgICAgICAgICAgICAgIHJldCA9IHBobV9nZXRfbWF4X2hpZ2hfY2xvY2tzKGh3bWdyLCBj bG9ja3MpOwo+Cj4gLSAgICAgICBtdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7Cj4g KyAgICAgICBtdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7Cj4gICAgICAgICByZXR1cm4g cmV0Owo+ICB9Cj4KPiAgc3RhdGljIGludCBwcF9zZXRfbW1odWJfcG93ZXJnYXRpbmdfYnlfc211 KHZvaWQgKmhhbmRsZSkKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICpod21ncjsKPiAt ICAgICAgIHN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5j ZSAqKWhhbmRsZTsKPiArICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7Cj4g ICAgICAgICBpbnQgcmV0ID0gMDsKPgo+IC0gICAgICAgcmV0ID0gcHBfY2hlY2socHBfaGFuZGxl KTsKPiArICAgICAgIHJldCA9IHBwX2NoZWNrKGh3bWdyKTsKPgo+ICAgICAgICAgaWYgKHJldCkK PiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+IC0gICAgICAgaHdtZ3IgPSBwcF9oYW5k bGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIGlmIChod21nci0+aHdtZ3JfZnVuYy0+c2V0X21taHVi X3Bvd2VyZ2F0aW5nX2J5X3NtdSA9PSBOVUxMKSB7Cj4gICAgICAgICAgICAgICAgIHByX2luZm8o IiVzIHdhcyBub3QgaW1wbGVtZW50ZWQuXG4iLCBfX2Z1bmNfXyk7Cj4gICAgICAgICAgICAgICAg IHJldHVybiAwOwo+IEBAIC0xNDcwLDcgKzEzNDksNyBAQCBzdGF0aWMgaW50IHBwX3NldF9tbWh1 Yl9wb3dlcmdhdGluZ19ieV9zbXUodm9pZCAqaGFuZGxlKQo+ICAgICAgICAgcmV0dXJuIGh3bWdy LT5od21ncl9mdW5jLT5zZXRfbW1odWJfcG93ZXJnYXRpbmdfYnlfc211KGh3bWdyKTsKPiAgfQo+ Cj4gLWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgcHBfZHBtX2Z1bmNzID0gewo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyBwcF9kcG1fZnVuY3MgPSB7Cj4gICAgICAgICAubG9h ZF9maXJtd2FyZSA9IHBwX2RwbV9sb2FkX2Z3LAo+ICAgICAgICAgLndhaXRfZm9yX2Z3X2xvYWRp bmdfY29tcGxldGUgPSBwcF9kcG1fZndfbG9hZGluZ19jb21wbGV0ZSwKPiAgICAgICAgIC5mb3Jj ZV9wZXJmb3JtYW5jZV9sZXZlbCA9IHBwX2RwbV9mb3JjZV9wZXJmb3JtYW5jZV9sZXZlbCwKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvaHdtZ3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdyLmMKPiBpbmRleCA1NTYz YjY1Li4yMzhkZDU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2h3bWdyL2h3bWdyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21n ci9od21nci5jCj4gQEAgLTExNiwyMyArMTE2LDExIEBAIHN0YXRpYyB2b2lkIGh3bWdyX2luaXRf d29ya2xvYWRfcHJvcml0eShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQo+ICAgICAgICAgaHdtZ3It Pndvcmtsb2FkX3NldHRpbmdbNF0gPSBQUF9TTUNfUE9XRVJfUFJPRklMRV9DT01QVVRFOwo+ICB9 Cj4KPiAtaW50IGh3bWdyX2Vhcmx5X2luaXQoc3RydWN0IHBwX2luc3RhbmNlICpoYW5kbGUpCj4g K2ludCBod21ncl9lYXJseV9pbml0KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCj4gIHsKPiAtICAg ICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gLQo+IC0gICAgICAgaWYgKGhhbmRsZSA9PSBO VUxMKQo+ICsgICAgICAgaWYgKGh3bWdyID09IE5VTEwpCj4gICAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+Cj4gLSAgICAgICBod21nciA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBwcF9o d21nciksIEdGUF9LRVJORUwpOwo+IC0gICAgICAgaWYgKGh3bWdyID09IE5VTEwpCj4gLSAgICAg ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+IC0KPiAtICAgICAgIGhhbmRsZS0+aHdtZ3IgPSBo d21ncjsKPiAtICAgICAgIGh3bWdyLT5hZGV2ID0gaGFuZGxlLT5wYXJlbnQ7Cj4gLSAgICAgICBo d21nci0+ZGV2aWNlID0gaGFuZGxlLT5kZXZpY2U7Cj4gLSAgICAgICBod21nci0+Y2hpcF9mYW1p bHkgPSAoKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlLT5wYXJlbnQpLT5mYW1pbHk7Cj4g LSAgICAgICBod21nci0+Y2hpcF9pZCA9ICgoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGUt PnBhcmVudCktPmFzaWNfdHlwZTsKPiAtICAgICAgIGh3bWdyLT5mZWF0dXJlX21hc2sgPSBhbWRn cHVfcHBfZmVhdHVyZV9tYXNrOwo+ICAgICAgICAgaHdtZ3ItPnVzZWNfdGltZW91dCA9IEFNRF9N QVhfVVNFQ19USU1FT1VUOwo+ICAgICAgICAgaHdtZ3ItPnBvd2VyX3NvdXJjZSA9IFBQX1Bvd2Vy U291cmNlX0FDOwo+ICAgICAgICAgaHdtZ3ItPnBwX3RhYmxlX3ZlcnNpb24gPSBQUF9UQUJMRV9W MTsKPiBAQCAtMjIwLDE2ICsyMDgsMTMgQEAgaW50IGh3bWdyX2Vhcmx5X2luaXQoc3RydWN0IHBw X2luc3RhbmNlICpoYW5kbGUpCj4gICAgICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gLWludCBod21n cl9od19pbml0KHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKQo+ICtpbnQgaHdtZ3JfaHdfaW5p dChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyOwo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4KPiAtICAgICAgIGlmIChoYW5kbGUgPT0g TlVMTCkKPiArICAgICAgIGlmIChod21nciA9PSBOVUxMKQo+ICAgICAgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPgo+IC0gICAgICAgaHdtZ3IgPSBoYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAg ICAgIGlmIChod21nci0+cHB0YWJsZV9mdW5jID09IE5VTEwgfHwKPiAgICAgICAgICAgICBod21n ci0+cHB0YWJsZV9mdW5jLT5wcHRhYmxlX2luaXQgPT0gTlVMTCB8fAo+ICAgICAgICAgICAgIGh3 bWdyLT5od21ncl9mdW5jLT5iYWNrZW5kX2luaXQgPT0gTlVMTCkKPiBAQCAtMjc1LDE1ICsyNjAs MTEgQEAgaW50IGh3bWdyX2h3X2luaXQoc3RydWN0IHBwX2luc3RhbmNlICpoYW5kbGUpCj4gICAg ICAgICByZXR1cm4gcmV0Owo+ICB9Cj4KPiAtaW50IGh3bWdyX2h3X2Zpbmkoc3RydWN0IHBwX2lu c3RhbmNlICpoYW5kbGUpCj4gK2ludCBod21ncl9od19maW5pKHN0cnVjdCBwcF9od21nciAqaHdt Z3IpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBwcF9od21nciAqaHdtZ3I7Cj4gLQo+IC0gICAgICAg aWYgKGhhbmRsZSA9PSBOVUxMIHx8IGhhbmRsZS0+aHdtZ3IgPT0gTlVMTCkKPiArICAgICAgIGlm IChod21nciA9PSBOVUxMKQo+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPgo+IC0g ICAgICAgaHdtZ3IgPSBoYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIHBobV9zdG9wX3RoZXJt YWxfY29udHJvbGxlcihod21ncik7Cj4gICAgICAgICBwc21fc2V0X2Jvb3Rfc3RhdGVzKGh3bWdy KTsKPiAgICAgICAgIHBzbV9hZGp1c3RfcG93ZXJfc3RhdGVfZHluYW1pYyhod21nciwgZmFsc2Us IE5VTEwpOwo+IEBAIC0yOTcsMTUgKzI3OCwxMyBAQCBpbnQgaHdtZ3JfaHdfZmluaShzdHJ1Y3Qg cHBfaW5zdGFuY2UgKmhhbmRsZSkKPiAgICAgICAgIHJldHVybiBwc21fZmluaV9wb3dlcl9zdGF0 ZV90YWJsZShod21ncik7Cj4gIH0KPgo+IC1pbnQgaHdtZ3JfaHdfc3VzcGVuZChzdHJ1Y3QgcHBf aW5zdGFuY2UgKmhhbmRsZSkKPiAraW50IGh3bWdyX2h3X3N1c3BlbmQoc3RydWN0IHBwX2h3bWdy ICpod21ncikKPiAgewo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICpod21ncjsKPiAgICAgICAg IGludCByZXQgPSAwOwo+Cj4gLSAgICAgICBpZiAoaGFuZGxlID09IE5VTEwgfHwgaGFuZGxlLT5o d21nciA9PSBOVUxMKQo+ICsgICAgICAgaWYgKGh3bWdyID09IE5VTEwpCj4gICAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gLSAgICAgICBod21nciA9IGhhbmRsZS0+aHdtZ3I7Cj4g ICAgICAgICBwaG1fZGlzYWJsZV9zbWNfZmlybXdhcmVfY3RmKGh3bWdyKTsKPiAgICAgICAgIHJl dCA9IHBzbV9zZXRfYm9vdF9zdGF0ZXMoaHdtZ3IpOwo+ICAgICAgICAgaWYgKHJldCkKPiBAQCAt MzE4LDE1ICsyOTcsMTMgQEAgaW50IGh3bWdyX2h3X3N1c3BlbmQoc3RydWN0IHBwX2luc3RhbmNl ICpoYW5kbGUpCj4gICAgICAgICByZXR1cm4gcmV0Owo+ICB9Cj4KPiAtaW50IGh3bWdyX2h3X3Jl c3VtZShzdHJ1Y3QgcHBfaW5zdGFuY2UgKmhhbmRsZSkKPiAraW50IGh3bWdyX2h3X3Jlc3VtZShz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyOwo+ICAgICAgICAgaW50IHJldCA9IDA7Cj4KPiAtICAgICAgIGlmIChoYW5kbGUgPT0gTlVM TCB8fCBoYW5kbGUtPmh3bWdyID09IE5VTEwpCj4gKyAgICAgICBpZiAoaHdtZ3IgPT0gTlVMTCkK PiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4KPiAtICAgICAgIGh3bWdyID0gaGFu ZGxlLT5od21ncjsKPiAgICAgICAgIHJldCA9IHBobV9zZXR1cF9hc2ljKGh3bWdyKTsKPiAgICAg ICAgIGlmIChyZXQpCj4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gQEAgLTM2MSwxNyAr MzM4LDE0IEBAIHN0YXRpYyBlbnVtIFBQX1N0YXRlVUlMYWJlbCBwb3dlcl9zdGF0ZV9jb252ZXJ0 KGVudW0gYW1kX3BtX3N0YXRlX3R5cGUgIHN0YXRlKQo+ICAgICAgICAgfQo+ICB9Cj4KPiAtaW50 IGh3bWdyX2hhbmRsZV90YXNrKHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlLCBlbnVtIGFtZF9w cF90YXNrIHRhc2tfaWQsCj4gK2ludCBod21ncl9oYW5kbGVfdGFzayhzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyLCBlbnVtIGFtZF9wcF90YXNrIHRhc2tfaWQsCj4gICAgICAgICAgICAgICAgIGVudW0g YW1kX3BtX3N0YXRlX3R5cGUgKnVzZXJfc3RhdGUpCj4gIHsKPiAgICAgICAgIGludCByZXQgPSAw Owo+IC0gICAgICAgc3RydWN0IHBwX2h3bWdyICpod21ncjsKPgo+IC0gICAgICAgaWYgKGhhbmRs ZSA9PSBOVUxMIHx8IGhhbmRsZS0+aHdtZ3IgPT0gTlVMTCkKPiArICAgICAgIGlmIChod21nciA9 PSBOVUxMKQo+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPgo+IC0gICAgICAgaHdt Z3IgPSBoYW5kbGUtPmh3bWdyOwo+IC0KPiAgICAgICAgIHN3aXRjaCAodGFza19pZCkgewo+ICAg ICAgICAgY2FzZSBBTURfUFBfVEFTS19ESVNQTEFZX0NPTkZJR19DSEFOR0U6Cj4gICAgICAgICAg ICAgICAgIHJldCA9IHBobV9zZXRfY3B1X3Bvd2VyX3N0YXRlKGh3bWdyKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2h3bWdyLmggYi9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvaHdtZ3IuaAo+IGluZGV4IDJlMmU0ZDAuLjg1YjQ2YWQg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2h3bWdyLmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvaHdtZ3IuaAo+IEBAIC0y NSw3ICsyNSw2IEBACj4KPiAgI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+Cj4gICNpbmNsdWRl ICJhbWRfcG93ZXJwbGF5LmgiCj4gLSNpbmNsdWRlICJwcF9pbnN0YW5jZS5oIgo+ICAjaW5jbHVk ZSAiaGFyZHdhcmVtYW5hZ2VyLmgiCj4gICNpbmNsdWRlICJwcF9wb3dlcl9zb3VyY2UuaCIKPiAg I2luY2x1ZGUgImh3bWdyX3BwdC5oIgo+IEBAIC0zNCw3ICszMyw2IEBACj4gICNpbmNsdWRlICJw b3dlcl9zdGF0ZS5oIgo+ICAjaW5jbHVkZSAic211X2hlbHBlci5oIgo+Cj4gLXN0cnVjdCBwcF9p bnN0YW5jZTsKPiAgc3RydWN0IHBwX2h3bWdyOwo+ICBzdHJ1Y3QgcGhtX2Zhbl9zcGVlZF9pbmZv Owo+ICBzdHJ1Y3QgcHBfYXRvbWN0cmxfdm9sdGFnZV90YWJsZTsKPiBAQCAtNzAzLDYgKzcwMSw4 IEBAIHN0cnVjdCBwcF9od21nciB7Cj4gICAgICAgICB1aW50MzJfdCBjaGlwX2ZhbWlseTsKPiAg ICAgICAgIHVpbnQzMl90IGNoaXBfaWQ7Cj4gICAgICAgICB1aW50MzJfdCBzbXVfdmVyc2lvbjsK PiArICAgICAgIGJvb2wgcG1fZW47Cj4gKyAgICAgICBzdHJ1Y3QgbXV0ZXggc211X2xvY2s7Cj4K PiAgICAgICAgIHVpbnQzMl90IHBwX3RhYmxlX3ZlcnNpb247Cj4gICAgICAgICB2b2lkICpkZXZp Y2U7Cj4gQEAgLTc2OSwxMiArNzY5LDEyIEBAIHN0cnVjdCBjZ3NfaXJxX3NyY19mdW5jcyB7Cj4g ICAgICAgICBjZ3NfaXJxX2hhbmRsZXJfZnVuY190IGhhbmRsZXI7Cj4gIH07Cj4KPiAtZXh0ZXJu IGludCBod21ncl9lYXJseV9pbml0KHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKTsKPiAtZXh0 ZXJuIGludCBod21ncl9od19pbml0KHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKTsKPiAtZXh0 ZXJuIGludCBod21ncl9od19maW5pKHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKTsKPiAtZXh0 ZXJuIGludCBod21ncl9od19zdXNwZW5kKHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKTsKPiAt ZXh0ZXJuIGludCBod21ncl9od19yZXN1bWUoc3RydWN0IHBwX2luc3RhbmNlICpoYW5kbGUpOwo+ IC1leHRlcm4gaW50IGh3bWdyX2hhbmRsZV90YXNrKHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxl LAo+ICtleHRlcm4gaW50IGh3bWdyX2Vhcmx5X2luaXQoc3RydWN0IHBwX2h3bWdyICpod21ncik7 Cj4gK2V4dGVybiBpbnQgaHdtZ3JfaHdfaW5pdChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKPiAr ZXh0ZXJuIGludCBod21ncl9od19maW5pKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOwo+ICtleHRl cm4gaW50IGh3bWdyX2h3X3N1c3BlbmQoc3RydWN0IHBwX2h3bWdyICpod21ncik7Cj4gK2V4dGVy biBpbnQgaHdtZ3JfaHdfcmVzdW1lKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOwo+ICtleHRlcm4g aW50IGh3bWdyX2hhbmRsZV90YXNrKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGFtZF9wcF90YXNrIHRhc2tfaWQsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGFtZF9wbV9zdGF0ZV90eXBlICp1c2VyX3N0 YXRlKTsKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMv cHBfaW5zdGFuY2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9wcF9pbnN0 YW5jZS5oCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggNmMyZmEzMy4uMDAwMDAw MAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9wcF9pbnN0YW5jZS5o Cj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDM2ICswLDAgQEAKPiAtLyoKPiAtICogQ29weXJpZ2h0 IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgo+IC0gKgo+IC0gKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYQo+IC0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gLSAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLAo+IC0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiAtICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiAt ICoKPiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KPiAtICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4gLSAqCj4gLSAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S Cj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+IC0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiAtICogVEhFIENP UFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SCj4gLSAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+IC0gKiBBUklTSU5HIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiAtICogT1RI RVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+IC0gKgo+IC0gKi8KPiAtI2lmbmRlZiBfUFBf SU5TVEFOQ0VfSF8KPiAtI2RlZmluZSBfUFBfSU5TVEFOQ0VfSF8KPiAtCj4gLXN0cnVjdCBwcF9o d21ncjsKPiAtCj4gLXN0cnVjdCBwcF9pbnN0YW5jZSB7Cj4gLSAgICAgICB2b2lkICpwYXJlbnQ7 IC8qIGUuZy4gYW1kZ3B1X2RldmljZSAqLwo+IC0gICAgICAgdm9pZCAqZGV2aWNlOyAvKiBlLmcu IGNnc19kZXZpY2UgKi8KPiAtICAgICAgIGJvb2wgcG1fZW47Cj4gLSAgICAgICBzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyOwo+IC0gICAgICAgc3RydWN0IG11dGV4IHBwX2xvY2s7Cj4gLX07Cj4gLQo+ IC0jZW5kaWYKPiAtLQo+IDEuOS4xCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4gYW1kLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2FtZC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==