From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Pandiyan, Dhinakaran" Subject: Re: [PATCH] drm/i915/dp: DP audio API changes for MST Date: Fri, 5 Aug 2016 05:57:17 +0000 Message-ID: <1470377487.8584.15.camel@dk-H97M-D3H> References: <1470190470-32326-1-git-send-email-dhinakaran.pandiyan@intel.com> <1470190470-32326-2-git-send-email-dhinakaran.pandiyan@intel.com> <96A12704CE18D347B625EE2D4A099D19119F934B@SHSMSX103.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <96A12704CE18D347B625EE2D4A099D19119F934B@SHSMSX103.ccr.corp.intel.com> Content-Language: en-US Content-ID: <24D8371D6C3B924E80CB3E32F4CBDD5F@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Yang, Libin" Cc: "tiwai@suse.de" , "intel-gfx@lists.freedesktop.org" , "alsa-devel@alsa-project.org" , "libin.yang@linux.intel.com" List-Id: alsa-devel@alsa-project.org T24gRnJpLCAyMDE2LTA4LTA1IGF0IDAyOjM1ICswMDAwLCBZYW5nLCBMaWJpbiB3cm90ZToNCj4g PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEludGVsLWdmeCBbbWFpbHRv OmludGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24gQmVoYWxmIE9mDQo+ ID4gRGhpbmFrYXJhbiBQYW5kaXlhbg0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXVndXN0IDMsIDIw MTYgMTA6MTUgQU0NCj4gPiBUbzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiA+ IENjOiBhbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmc7IHRpd2FpQHN1c2UuZGU7IGxpYmluLnlh bmdAbGludXguaW50ZWwuY29tOw0KPiA+IFBhbmRpeWFuLCBEaGluYWthcmFuIDxkaGluYWthcmFu LnBhbmRpeWFuQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBbSW50ZWwtZ2Z4XSBbUEFUQ0hdIGRy bS9pOTE1L2RwOiBEUCBhdWRpbyBBUEkgY2hhbmdlcyBmb3IgTVNUDQo+ID4gDQo+ID4gRFAgTVNU IHByb3ZpZGVzIHRoZSBjYXBhYmlsaXR5IHRvIHNlbmQgbXVsdGlwbGUgdmlkZW8gYW5kIGF1ZGlv IHN0cmVhbXMgdmlhDQo+ID4gb25lIHNpbmdsZSBwb3J0LiBUaGlzIHJlcXVpcmVzIHRoZSBBUEkn cyBiZXR3ZWVuIGk5MTUgYW5kIGF1ZGlvIGRyaXZlcnMgdG8NCj4gPiBkaXN0aW5ndWlzaCBiZXR3 ZWVuIGF1ZGlvIGNhcGFibGUgZGlzcGxheXMgY29ubmVjdGVkIHRvIGEgcG9ydC4gVGhpcyBwYXRj aA0KPiA+IGFkZHMgdGhpcyBzdXBwb3J0IHZpYSBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciAnaW50 IGRldl9pZCcuIFRoZSBleGlzdGluZw0KPiA+IHBhcmFtZXRlciAncG9ydCcgZG9lcyBub3QgY2hh bmdlIGl0J3MgbWVhbmluZy4NCj4gPiANCj4gPiBkZXZfaWQgPQ0KPiA+IAlNU1QJOiBwaXBlIHRo YXQgdGhlIHN0cmVhbSBvcmlnaW5hdGVzIGZyb20NCj4gPiAJTm9uLU1TVAk6IC0xDQo+ID4gDQo+ ID4gQWZmZWN0ZWQgQVBJczoNCj4gPiBzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnRfb3BzDQo+ ID4gLSAgICAgICBpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBv cnQsIGludCByYXRlKTsNCj4gPiArCWludCAoKnN5bmNfYXVkaW9fcmF0ZSkoc3RydWN0IGRldmlj ZSAqLCBpbnQgcG9ydCwgaW50IGRldl9pZCwNCj4gPiArCSAgICAgaW50IHJhdGUpOw0KPiA+IA0K PiA+IC0gICAgICAgaW50ICgqZ2V0X2VsZCkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9ydCwgYm9v bCAqZW5hYmxlZCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpi dWYsIGludCBtYXhfYnl0ZXMpOw0KPiA+ICsgICAgICAgaW50ICgqZ2V0X2VsZCkoc3RydWN0IGRl dmljZSAqLCBpbnQgcG9ydCwgaW50IGRldl9pZCwNCj4gPiArCQkgICAgICAgYm9vbCAqZW5hYmxl ZCwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbWF4X2J5dGVzKTsNCj4gPiANCj4gPiBzdHJ1Y3Qg aTkxNV9hdWRpb19jb21wb25lbnRfYXVkaW9fb3BzDQo+ID4gLSAgICAgICB2b2lkICgqcGluX2Vs ZF9ub3RpZnkpKHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQpOw0KPiA+ICsgICAgICAgdm9pZCAo KnBpbl9lbGRfbm90aWZ5KSh2b2lkICphdWRpb19wdHIsIGludCBwb3J0LCBpbnQgZGV2X2lkKTsN Cj4gPiANCj4gPiBUaGlzIHBhdGNoIG1ha2VzIGR1bW15IGNoYW5nZXMgaW4gdGhlIGF1ZGlvIGRy aXZlcnMgZm9yIGJ1aWxkIHRvIHN1Y2NlZWQuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogRGhp bmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+DQo+ID4gLS0t DQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgfCAgMiArLQ0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIHwgODIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLQ0KPiA+IC0tLS0tLS0NCj4gPiAgaW5jbHVkZS9kcm0vaTkxNV9jb21wb25l bnQuaCAgICAgICB8ICA2ICstLQ0KPiA+ICBpbmNsdWRlL3NvdW5kL2hkYV9pOTE1LmggICAgICAg ICAgIHwgMTEgKystLS0NCj4gPiAgc291bmQvaGRhL2hkYWNfaTkxNS5jICAgICAgICAgICAgICB8 ICA5ICsrKy0tDQo+ID4gIHNvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jICAgICAgICAgfCAgNyAr Ky0tDQo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25z KC0pDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggaW5kZXggNjVhZGE1ZC4u OGU0YzhjOCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o DQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+IEBAIC0yMDU0 LDcgKzIwNTQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7DQo+ID4gIAkvKiBwZXJmb3Jt IFBIWSBzdGF0ZSBzYW5pdHkgY2hlY2tzPyAqLw0KPiA+ICAJYm9vbCBjaHZfcGh5X2Fzc2VydFsy XTsNCj4gPiANCj4gPiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICpkaWdfcG9ydF9tYXBbSTkxNV9N QVhfUE9SVFNdOw0KPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmF2X2VuY19tYXBbSTkxNV9N QVhfUElQRVNdOw0KPiANCj4gV2UgbWF5IHN0aWxsIG5lZWQgc2F2ZSB0aGUgcG9ydCBudW1iZXIg aW5mby4NCj4gSW4gbm9uLU1TVCBtb2RlLCBkZXZpY2UgZW50cnkgbWVhbnMgbm90aGluZy4gVGhp cyBtZWFucw0KPiBhdl9lbmNfbWFwW3BpcGVdIG1heSBub3QgZ2V0IHRoZSByaWdodCBpbnRlbF9l bmNvZGVyDQo+IA0KPiBSZWdhcmRzLA0KPiBMaWJpbg0KPiANCldlIGZpbmQgdGhlIGVuY29kZXIg dXNpbmcgcG9ydCBpbiBnZXRfc2F2ZWRfZW5jb2RlcigpDQo+ID4gDQo+ID4gIAkvKg0KPiA+ICAJ ICogTk9URTogVGhpcyBpcyB0aGUgZHJpMS91bXMgZHVuZ2VvbiwgZG9uJ3QgYWRkIHN0dWZmIGhl cmUuIFlvdXINCj4gPiBwYXRjaCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXVkaW8uYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYw0KPiA+ IGluZGV4IDhjNDkzZGUuLmNiZTQ0YzggMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXVkaW8uYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F1ZGlvLmMNCj4gPiBAQCAtNTAwLDYgKzUwMCw5IEBAIHZvaWQgaW50ZWxfYXVkaW9fY29kZWNf ZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ID4gKmludGVsX2VuY29kZXIpDQo+ID4gIAlz dHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYtPmF1ZGlvX2NvbXBv bmVudDsNCj4gPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0g ZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOw0KPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9k aWdfcG9ydC0+cG9ydDsNCj4gPiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsNCj4gPiAr CWludCBkZXZfaWQgPSAtMTsNCj4gPiArDQo+ID4gDQo+ID4gIAljb25uZWN0b3IgPSBkcm1fc2Vs ZWN0X2VsZChlbmNvZGVyKTsNCj4gPiAgCWlmICghY29ubmVjdG9yKQ0KPiA+IEBAIC01MjIsMTQg KzUyNSwxOSBAQCB2b2lkIGludGVsX2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5j b2Rlcg0KPiA+ICppbnRlbF9lbmNvZGVyKQ0KPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlv X2NvZGVjX2VuYWJsZShjb25uZWN0b3IsDQo+ID4gaW50ZWxfZW5jb2RlciwNCj4gPiAgCQkJCQkJ ICAgICBhZGp1c3RlZF9tb2RlKTsNCj4gPiANCj4gPiArCWlmIChpbnRlbF9lbmNvZGVyLT50eXBl ID09IElOVEVMX09VVFBVVF9EUF9NU1QpDQo+ID4gKwkJZGV2X2lkID0gcGlwZTsNCj4gPiArDQo+ ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ICAJaW50ZWxfZW5jb2Rl ci0+YXVkaW9fY29ubmVjdG9yID0gY29ubmVjdG9yOw0KPiA+ICsNCj4gPiAgCS8qIHJlZmVycmVk IGluIGF1ZGlvIGNhbGxiYWNrcyAqLw0KPiA+IC0JZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtwb3J0 XSA9IGludGVsX2VuY29kZXI7DQo+ID4gKwlkZXZfcHJpdi0+YXZfZW5jX21hcFtwaXBlXSA9IGlu dGVsX2VuY29kZXI7DQo+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ ID4gDQo+ID4gIAlpZiAoYWNvbXAgJiYgYWNvbXAtPmF1ZGlvX29wcyAmJiBhY29tcC0+YXVkaW9f b3BzLQ0KPiA+ID5waW5fZWxkX25vdGlmeSkNCj4gPiAtCQlhY29tcC0+YXVkaW9fb3BzLT5waW5f ZWxkX25vdGlmeShhY29tcC0+YXVkaW9fb3BzLQ0KPiA+ID5hdWRpb19wdHIsIChpbnQpIHBvcnQp Ow0KPiA+ICsJCWFjb21wLT5hdWRpb19vcHMtPnBpbl9lbGRfbm90aWZ5KGFjb21wLT5hdWRpb19v cHMtDQo+ID4gPmF1ZGlvX3B0ciwNCj4gPiArCQkJCQkJIChpbnQpIHBvcnQsIGRldl9pZCk7DQo+ ID4gIH0NCj4gPiANCj4gPiAgLyoqDQo+ID4gQEAgLTU0MiwyMiArNTUwLDI5IEBAIHZvaWQgaW50 ZWxfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ID4gKmludGVsX2Vu Y29kZXIpICB2b2lkIGludGVsX2F1ZGlvX2NvZGVjX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29k ZXINCj4gPiAqaW50ZWxfZW5jb2RlcikgIHsNCj4gPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlciA9ICZpbnRlbF9lbmNvZGVyLT5iYXNlOw0KPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMpOw0KPiA+ICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGVuY29kZXItPmRldjsNCj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsNCj4gPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVu dCAqYWNvbXAgPSBkZXZfcHJpdi0+YXVkaW9fY29tcG9uZW50Ow0KPiA+ICAJc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoZW5jb2Rlcik7 DQo+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5wb3J0Ow0KPiA+ICsJZW51 bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOw0KPiA+ICsJaW50IGRldl9pZCA9IC0xOw0KPiA+ICsN Cj4gPiArCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QpDQo+ ID4gKwkJZGV2X2lkID0gcGlwZTsNCj4gPiANCj4gPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5h dWRpb19jb2RlY19kaXNhYmxlKQ0KPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVj X2Rpc2FibGUoaW50ZWxfZW5jb2Rlcik7DQo+ID4gDQo+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJp di0+YXZfbXV0ZXgpOw0KPiA+ICAJaW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yID0gTlVM TDsNCj4gPiAtCWRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9ydF0gPSBOVUxMOw0KPiA+ICsJZGV2 X3ByaXYtPmF2X2VuY19tYXBbcGlwZV0gPSBOVUxMOw0KPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+YXZfbXV0ZXgpOw0KPiA+IA0KPiA+ICAJaWYgKGFjb21wICYmIGFjb21wLT5hdWRpb19v cHMgJiYgYWNvbXAtPmF1ZGlvX29wcy0NCj4gPiA+cGluX2VsZF9ub3RpZnkpDQo+ID4gLQkJYWNv bXAtPmF1ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0NCj4gPiA+YXVk aW9fcHRyLCAoaW50KSBwb3J0KTsNCj4gPiArCQlhY29tcC0+YXVkaW9fb3BzLT5waW5fZWxkX25v dGlmeShhY29tcC0+YXVkaW9fb3BzLQ0KPiA+ID5hdWRpb19wdHIsDQo+ID4gKwkJCQkJCSAoaW50 KSBwb3J0LCBkZXZfaWQpOw0KPiA+ICB9DQo+ID4gDQo+ID4gIC8qKg0KPiA+IEBAIC02MjgsOCAr NjQzLDMyIEBAIHN0YXRpYyBpbnQNCj4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfY2RjbGtf ZnJlcShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gIAlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX2Zy ZXE7DQo+ID4gIH0NCj4gPiANCj4gPiAtc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9z eW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LA0KPiA+IC0JCQkJCQlpbnQgcG9ydCwg aW50IHJhdGUpDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZ2V0X3NhdmVkX2Vu Y29kZXIoc3RydWN0IGludGVsX2VuY29kZXINCj4gPiAqYXZfZW5jX21hcFtdLA0KPiA+ICsJCQkJ CSAgICAgICBpbnQgcG9ydCwgaW50IGRldl9pZCkNCj4gPiArew0KPiA+ICsNCj4gPiArCWVudW0g cGlwZSBwaXBlOw0KPiA+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOw0KPiA+ICsNCj4g PiArCWlmIChkZXZfaWQgPj0gMCAmJiBkZXZfaWQgPCBJOTE1X01BWF9QSVBFUykNCj4gPiArCQly ZXR1cm4gYXZfZW5jX21hcFtkZXZfaWRdOw0KPiA+ICsNCj4gPiArCWZvciAocGlwZSA9IFBJUEVf QTsgcGlwZSA8IEk5MTVfTUFYX1BJUEVTOyBwaXBlKyspIHsNCj4gPiArDQo+ID4gKwkJaWYgKCFh dl9lbmNfbWFwW3BpcGVdKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJZW5jb2Rl ciA9ICZhdl9lbmNfbWFwW3BpcGVdLT5iYXNlOw0KPiA+ICsJCWlmIChwb3J0ID09IGVuY190b19k aWdfcG9ydChlbmNvZGVyKS0+cG9ydCkNCj4gPiArCQkJcmV0dXJuIGF2X2VuY19tYXBbcGlwZV07 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShz dHJ1Y3QgZGV2aWNlICpkZXYsIGludA0KPiA+IHBvcnQsDQo+ID4gKwkJCQkJCWludCBkZXZfaWQs IGludCByYXRlKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXZfdG9faTkxNShkZXYpOw0KPiA+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVs X2VuY29kZXI7DQo+ID4gQEAgLTY0OSwxNSArNjg4LDE2IEBAIHN0YXRpYyBpbnQNCj4gPiBpOTE1 X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LA0KPiA+ ICAJCXJldHVybiAwOw0KPiA+IA0KPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmF2X211dGV4 KTsNCj4gPiArDQo+ID4gIAkvKiAxLiBnZXQgdGhlIHBpcGUgKi8NCj4gPiAtCWludGVsX2VuY29k ZXIgPSBkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdOw0KPiA+IC0JLyogaW50ZWxfZW5jb2Rl ciBtaWdodCBiZSBOVUxMIGZvciBEUCBNU1QgKi8NCj4gPiArCWludGVsX2VuY29kZXIgPSBnZXRf c2F2ZWRfZW5jb2RlcihkZXZfcHJpdi0+YXZfZW5jX21hcCwgcG9ydCwNCj4gPiBkZXZfaWQpOw0K PiA+ICAJaWYgKCFpbnRlbF9lbmNvZGVyIHx8ICFpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMgfHwN Cj4gPiAgCSAgICBpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKSB7DQo+ ID4gIAkJRFJNX0RFQlVHX0tNUygibm8gdmFsaWQgcG9ydCAlY1xuIiwgcG9ydF9uYW1lKHBvcnQp KTsNCj4gPiAgCQllcnIgPSAtRU5PREVWOw0KPiA+ICAJCWdvdG8gdW5sb2NrOw0KPiA+ICAJfQ0K PiA+ICsNCj4gPiAgCWNydGMgPSB0b19pbnRlbF9jcnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0 Yyk7DQo+ID4gIAlwaXBlID0gY3J0Yy0+cGlwZTsNCj4gPiAgCWlmIChwaXBlID09IElOVkFMSURf UElQRSkgew0KPiA+IEBAIC03MDIsNyArNzQyLDcgQEAgc3RhdGljIGludA0KPiA+IGk5MTVfYXVk aW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsICB9DQo+ID4g DQo+ID4gIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfZ2V0X2VsZChzdHJ1Y3QgZGV2 aWNlICpkZXYsIGludCBwb3J0LA0KPiA+IC0JCQkJCWJvb2wgKmVuYWJsZWQsDQo+ID4gKwkJCQkJ aW50IGRldl9pZCwgYm9vbCAqZW5hYmxlZCwNCj4gPiAgCQkJCQl1bnNpZ25lZCBjaGFyICpidWYs IGludCBtYXhfYnl0ZXMpICB7DQo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXZfdG9faTkxNShkZXYpOyBAQCAtNzEwLDE3DQo+ID4gKzc1MCwyMSBAQCBzdGF0aWMg aW50IGk5MTVfYXVkaW9fY29tcG9uZW50X2dldF9lbGQoc3RydWN0IGRldmljZSAqZGV2LCBpbnQN Cj4gPiBwb3J0LA0KPiA+ICAJY29uc3QgdTggKmVsZDsNCj4gPiAgCWludCByZXQgPSAtRUlOVkFM Ow0KPiA+IA0KPiA+ICsNCj4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ ID4gLQlpbnRlbF9lbmNvZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtwb3J0XTsNCj4gPiAt CS8qIGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICovDQo+ID4gLQlpZiAo aW50ZWxfZW5jb2Rlcikgew0KPiA+IC0JCXJldCA9IDA7DQo+ID4gLQkJKmVuYWJsZWQgPSBpbnRl bF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3IgIT0gTlVMTDsNCj4gPiAtCQlpZiAoKmVuYWJsZWQp IHsNCj4gPiAtCQkJZWxkID0gaW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yLT5lbGQ7DQo+ ID4gLQkJCXJldCA9IGRybV9lbGRfc2l6ZShlbGQpOw0KPiA+IC0JCQltZW1jcHkoYnVmLCBlbGQs IG1pbihtYXhfYnl0ZXMsIHJldCkpOw0KPiA+IC0JCX0NCj4gPiArDQo+ID4gKwlpbnRlbF9lbmNv ZGVyID0gZ2V0X3NhdmVkX2VuY29kZXIoZGV2X3ByaXYtPmF2X2VuY19tYXAsIHBvcnQsDQo+ID4g ZGV2X2lkKTsNCj4gPiArCWlmICghaW50ZWxfZW5jb2Rlcikgew0KPiA+ICsJCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmF2X211dGV4KTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCXJldCA9IDA7DQo+ID4gKwkqZW5hYmxlZCA9IGludGVsX2VuY29kZXItPmF1ZGlv X2Nvbm5lY3RvciAhPSBOVUxMOw0KPiA+ICsJaWYgKCplbmFibGVkKSB7DQo+ID4gKwkJZWxkID0g aW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yLT5lbGQ7DQo+ID4gKwkJcmV0ID0gZHJtX2Vs ZF9zaXplKGVsZCk7DQo+ID4gKwkJbWVtY3B5KGJ1ZiwgZWxkLCBtaW4obWF4X2J5dGVzLCByZXQp KTsNCj4gPiAgCX0NCj4gPiANCj4gPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4 KTsNCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCBiL2luY2x1 ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgNCj4gPiBpbmRleCBiNDZmYTBlLi4xNDE5Yzk4IDEwMDY0 NA0KPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgNCj4gPiArKysgYi9pbmNs dWRlL2RybS9pOTE1X2NvbXBvbmVudC5oDQo+ID4gQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IGk5 MTVfYXVkaW9fY29tcG9uZW50X29wcyB7DQo+ID4gIAkgKiBDYWxsZWQgZnJvbSBhdWRpbyBkcml2 ZXIuIEFmdGVyIGF1ZGlvIGRyaXZlciBzZXRzIHRoZQ0KPiA+ICAJICogc2FtcGxlIHJhdGUsIGl0 IHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHNldCBuL2N0cw0KPiA+ICAJICovDQo+ID4gLQlp bnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCByYXRl KTsNCj4gPiArCWludCAoKnN5bmNfYXVkaW9fcmF0ZSkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9y dCwgaW50IGRldl9pZCwgaW50DQo+ID4gK3JhdGUpOw0KPiA+ICAJLyoqDQo+ID4gIAkgKiBAZ2V0 X2VsZDogZmlsbCB0aGUgYXVkaW8gc3RhdGUgYW5kIEVMRCBieXRlcyBmb3IgdGhlIGdpdmVuIHBv cnQNCj4gPiAgCSAqDQo+ID4gQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IGk5MTVfYXVkaW9fY29t cG9uZW50X29wcyB7DQo+ID4gIAkgKiBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHNpemUgbWF5IGJl IG92ZXIgQG1heF9ieXRlcy4gIFRoZW4gaXQNCj4gPiAgCSAqIGltcGxpZXMgdGhhdCBvbmx5IGEg cGFydCBvZiBFTEQgaGFzIGJlZW4gY29waWVkIHRvIHRoZSBidWZmZXIuDQo+ID4gIAkgKi8NCj4g PiAtCWludCAoKmdldF9lbGQpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGJvb2wgKmVuYWJs ZWQsDQo+ID4gKwlpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBpbnQg ZGV2X2lkLCBib29sICplbmFibGVkLA0KPiA+ICAJCSAgICAgICB1bnNpZ25lZCBjaGFyICpidWYs IGludCBtYXhfYnl0ZXMpOyAgfTsNCj4gPiANCj4gPiBAQCAtOTcsNyArOTcsNyBAQCBzdHJ1Y3Qg aTkxNV9hdWRpb19jb21wb25lbnRfYXVkaW9fb3BzIHsNCj4gPiAgCSAqIHN0YXR1cyBhY2NvcmRp bmdseSAoZXZlbiB3aGVuIHRoZSBIREEgY29udHJvbGxlciBpcyBpbiBwb3dlciBzYXZlDQo+ID4g IAkgKiBtb2RlKS4NCj4gPiAgCSAqLw0KPiA+IC0Jdm9pZCAoKnBpbl9lbGRfbm90aWZ5KSh2b2lk ICphdWRpb19wdHIsIGludCBwb3J0KTsNCj4gPiArCXZvaWQgKCpwaW5fZWxkX25vdGlmeSkodm9p ZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCwgaW50IGRldl9pZCk7DQo+ID4gIH07DQo+ID4gDQo+ID4g IC8qKg0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkYV9pOTE1LmggYi9pbmNsdWRl L3NvdW5kL2hkYV9pOTE1LmggaW5kZXgNCj4gPiA3OTZjYWJmLi41YWI5NzJlIDEwMDY0NA0KPiA+ IC0tLSBhL2luY2x1ZGUvc291bmQvaGRhX2k5MTUuaA0KPiA+ICsrKyBiL2luY2x1ZGUvc291bmQv aGRhX2k5MTUuaA0KPiA+IEBAIC0xMCw4ICsxMCw5IEBADQo+ID4gIGludCBzbmRfaGRhY19zZXRf Y29kZWNfd2FrZXVwKHN0cnVjdCBoZGFjX2J1cyAqYnVzLCBib29sIGVuYWJsZSk7ICBpbnQNCj4g PiBzbmRfaGRhY19kaXNwbGF5X3Bvd2VyKHN0cnVjdCBoZGFjX2J1cyAqYnVzLCBib29sIGVuYWJs ZSk7ICB2b2lkDQo+ID4gc25kX2hkYWNfaTkxNV9zZXRfYmNsayhzdHJ1Y3QgaGRhY19idXMgKmJ1 cyk7IC1pbnQNCj4gPiBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNl ICpjb2RlYywgaGRhX25pZF90IG5pZCwgaW50DQo+ID4gcmF0ZSk7IC1pbnQgc25kX2hkYWNfYWNv bXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLA0KPiA+ ICtpbnQgc25kX2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMs IGhkYV9uaWRfdCBuaWQsDQo+ID4gKwkJCSAgICAgaW50IGRldl9pZCwgaW50IHJhdGUpOw0KPiA+ ICtpbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBo ZGFfbmlkX3QgbmlkLA0KPiA+ICtpbnQgZGV2X2lkLA0KPiA+ICAJCQkgICBib29sICphdWRpb19l bmFibGVkLCBjaGFyICpidWZmZXIsIGludCBtYXhfYnl0ZXMpOw0KPiA+IGludCBzbmRfaGRhY19p OTE1X2luaXQoc3RydWN0IGhkYWNfYnVzICpidXMpOyAgaW50IHNuZF9oZGFjX2k5MTVfZXhpdChz dHJ1Y3QNCj4gPiBoZGFjX2J1cyAqYnVzKTsgQEAgLTI5LDEzICszMCwxMyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQNCj4gPiBzbmRfaGRhY19pOTE1X3NldF9iY2xrKHN0cnVjdCBoZGFjX2J1cyAqYnVz KSAgeyAgfSAgc3RhdGljIGlubGluZSBpbnQNCj4gPiBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUo c3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywNCj4gPiAtCQkJCQkgICBoZGFfbmlkX3QgbmlkLCBp bnQgcmF0ZSkNCj4gPiArCQkJCQkgICBoZGFfbmlkX3QgbmlkLCBpbnQgZGV2X2lkLCBpbnQgcmF0 ZSkNCj4gPiAgew0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgc3RhdGljIGlubGluZSBp bnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLA0KPiA+ IGhkYV9uaWRfdCBuaWQsDQo+ID4gLQkJCQkJIGJvb2wgKmF1ZGlvX2VuYWJsZWQsIGNoYXIgKmJ1 ZmZlciwNCj4gPiAtCQkJCQkgaW50IG1heF9ieXRlcykNCj4gPiArCQkJCQkgaW50IGRldl9pZCwg Ym9vbCAqYXVkaW9fZW5hYmxlZCwNCj4gPiArCQkJCQkgY2hhciAqYnVmZmVyLCBpbnQgbWF4X2J5 dGVzKQ0KPiA+ICB7DQo+ID4gIAlyZXR1cm4gLUVOT0RFVjsNCj4gPiAgfQ0KPiA+IGRpZmYgLS1n aXQgYS9zb3VuZC9oZGEvaGRhY19pOTE1LmMgYi9zb3VuZC9oZGEvaGRhY19pOTE1LmMgaW5kZXgN Cj4gPiBjOWFmMDIyLi42ZWE2M2FjIDEwMDY0NA0KPiA+IC0tLSBhL3NvdW5kL2hkYS9oZGFjX2k5 MTUuYw0KPiA+ICsrKyBiL3NvdW5kL2hkYS9oZGFjX2k5MTUuYw0KPiA+IEBAIC0yMDEsNyArMjAx LDggQEAgc3RhdGljIGludCBwaW4ycG9ydChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLA0KPiA+ IGhkYV9uaWRfdCBwaW5fbmlkKQ0KPiA+ICAgKiBUaGlzIGZ1bmN0aW9uIHNldHMgTi9DVFMgdmFs dWUgYmFzZWQgb24gdGhlIGdpdmVuIHNhbXBsZSByYXRlLg0KPiA+ICAgKiBSZXR1cm5zIHplcm8g Zm9yIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4NCj4gPiAgICovDQo+ID4gLWlu dCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRh X25pZF90IG5pZCwgaW50DQo+ID4gcmF0ZSkNCj4gPiAraW50IHNuZF9oZGFjX3N5bmNfYXVkaW9f cmF0ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLA0KPiA+ICsJCQkg ICAgIGludCBkZXZfaWQsIGludCByYXRlKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgaGRhY19idXMg KmJ1cyA9IGNvZGVjLT5idXM7DQo+ID4gIAlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFj b21wID0gYnVzLT5hdWRpb19jb21wb25lbnQ7IEBADQo+ID4gLTIxMiw3ICsyMTMsNyBAQCBpbnQg c25kX2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsDQo+ID4g aGRhX25pZF90IG5pZCwgaW50IHJhdGUpDQo+ID4gIAlwb3J0ID0gcGluMnBvcnQoY29kZWMsIG5p ZCk7DQo+ID4gIAlpZiAocG9ydCA8IDApDQo+ID4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gLQly ZXR1cm4gYWNvbXAtPm9wcy0+c3luY19hdWRpb19yYXRlKGFjb21wLT5kZXYsIHBvcnQsIHJhdGUp Ow0KPiA+ICsJcmV0dXJuIGFjb21wLT5vcHMtPnN5bmNfYXVkaW9fcmF0ZShhY29tcC0+ZGV2LCBw b3J0LCBkZXZfaWQsIHJhdGUpOw0KPiA+ICB9DQo+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKHNuZF9o ZGFjX3N5bmNfYXVkaW9fcmF0ZSk7DQo+ID4gDQo+ID4gQEAgLTIzNiw3ICsyMzcsNyBAQCBFWFBP UlRfU1lNQk9MX0dQTChzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUpOw0KPiA+ICAgKiB0aHVzIGl0 IG1heSBiZSBvdmVyIEBtYXhfYnl0ZXMuICBJZiBpdCdzIG92ZXIgQG1heF9ieXRlcywgaXQgaW1w bGllcw0KPiA+ICAgKiB0aGF0IG9ubHkgYSBwYXJ0IG9mIEVMRCBieXRlcyBoYXZlIGJlZW4gZmV0 Y2hlZC4NCj4gPiAgICovDQo+ID4gLWludCBzbmRfaGRhY19hY29tcF9nZXRfZWxkKHN0cnVjdCBo ZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsDQo+ID4gK2ludCBzbmRfaGRhY19hY29t cF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsDQo+ID4g K2ludCBkZXZfaWQsDQo+ID4gIAkJCSAgIGJvb2wgKmF1ZGlvX2VuYWJsZWQsIGNoYXIgKmJ1ZmZl ciwgaW50IG1heF9ieXRlcykgIHsNCj4gPiAgCXN0cnVjdCBoZGFjX2J1cyAqYnVzID0gY29kZWMt PmJ1czsNCj4gPiBAQCAtMjQ5LDcgKzI1MCw3IEBAIGludCBzbmRfaGRhY19hY29tcF9nZXRfZWxk KHN0cnVjdCBoZGFjX2RldmljZQ0KPiA+ICpjb2RlYywgaGRhX25pZF90IG5pZCwNCj4gPiAgCXBv cnQgPSBwaW4ycG9ydChjb2RlYywgbmlkKTsNCj4gPiAgCWlmIChwb3J0IDwgMCkNCj4gPiAgCQly ZXR1cm4gLUVJTlZBTDsNCj4gPiAtCXJldHVybiBhY29tcC0+b3BzLT5nZXRfZWxkKGFjb21wLT5k ZXYsIHBvcnQsIGF1ZGlvX2VuYWJsZWQsDQo+ID4gKwlyZXR1cm4gYWNvbXAtPm9wcy0+Z2V0X2Vs ZChhY29tcC0+ZGV2LCBwb3J0LCBkZXZfaWQsDQo+ID4gYXVkaW9fZW5hYmxlZCwNCj4gPiAgCQkJ CSAgIGJ1ZmZlciwgbWF4X2J5dGVzKTsNCj4gPiAgfQ0KPiA+ICBFWFBPUlRfU1lNQk9MX0dQTChz bmRfaGRhY19hY29tcF9nZXRfZWxkKTsNCj4gPiBkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9w YXRjaF9oZG1pLmMgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYyBpbmRleA0KPiA+IGQwZDVh ZDguLjA3N2Q0OGEgMTAwNjQ0DQo+ID4gLS0tIGEvc291bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMN Cj4gPiArKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYw0KPiA+IEBAIC0xNDg1LDcgKzE0 ODUsNyBAQCBzdGF0aWMgdm9pZCBzeW5jX2VsZF92aWFfYWNvbXAoc3RydWN0IGhkYV9jb2RlYw0K PiA+ICpjb2RlYywNCj4gPiANCj4gPiAgCW11dGV4X2xvY2soJnBlcl9waW4tPmxvY2spOw0KPiA+ ICAJZWxkLT5tb25pdG9yX3ByZXNlbnQgPSBmYWxzZTsNCj4gPiAtCXNpemUgPSBzbmRfaGRhY19h Y29tcF9nZXRfZWxkKCZjb2RlYy0+Y29yZSwgcGVyX3Bpbi0+cGluX25pZCwNCj4gPiArCXNpemUg PSBzbmRfaGRhY19hY29tcF9nZXRfZWxkKCZjb2RlYy0+Y29yZSwgcGVyX3Bpbi0+cGluX25pZCwg LTEsDQo+ID4gIAkJCQkgICAgICAmZWxkLT5tb25pdG9yX3ByZXNlbnQsIGVsZC0+ZWxkX2J1ZmZl ciwNCj4gPiAgCQkJCSAgICAgIEVMRF9NQVhfU0laRSk7DQo+ID4gIAlpZiAoc2l6ZSA+IDApIHsN Cj4gPiBAQCAtMTczOSw3ICsxNzM5LDggQEAgc3RhdGljIGludA0KPiA+IGdlbmVyaWNfaGRtaV9w bGF5YmFja19wY21fcHJlcGFyZShzdHJ1Y3QgaGRhX3BjbV9zdHJlYW0gKmhpbmZvLA0KPiA+ICAJ LyogQ2FsbCBzeW5jX2F1ZGlvX3JhdGUgdG8gc2V0IHRoZSBOL0NUUy9NIG1hbnVhbGx5IGlmIG5l Y2Vzc2FyeSAqLw0KPiA+ICAJLyogVG9kbzogYWRkIERQMS4yIE1TVCBhdWRpbyBzdXBwb3J0IGxh dGVyICovDQo+ID4gIAlpZiAoY29kZWNfaGFzX2Fjb21wKGNvZGVjKSkNCj4gPiAtCQlzbmRfaGRh Y19zeW5jX2F1ZGlvX3JhdGUoJmNvZGVjLT5jb3JlLCBwaW5fbmlkLCBydW50aW1lLQ0KPiA+ID5y YXRlKTsNCj4gPiArCQlzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoJmNvZGVjLT5jb3JlLCBwaW5f bmlkLCAtMSwNCj4gPiArCQkJCQkgcnVudGltZS0+cmF0ZSk7DQo+ID4gDQo+ID4gIAlub25fcGNt ID0gY2hlY2tfbm9uX3BjbV9wZXJfY3Z0KGNvZGVjLCBjdnRfbmlkKTsNCj4gPiAgCW11dGV4X2xv Y2soJnBlcl9waW4tPmxvY2spOw0KPiA+IEBAIC0yMjg1LDcgKzIyODYsNyBAQCBzdGF0aWMgdm9p ZCBoYXN3ZWxsX3NldF9wb3dlcl9zdGF0ZShzdHJ1Y3QNCj4gPiBoZGFfY29kZWMgKmNvZGVjLCBo ZGFfbmlkX3QgZmcsDQo+ID4gIAlzbmRfaGRhX2NvZGVjX3NldF9wb3dlcl90b19hbGwoY29kZWMs IGZnLCBwb3dlcl9zdGF0ZSk7ICB9DQo+ID4gDQo+ID4gLXN0YXRpYyB2b2lkIGludGVsX3Bpbl9l bGRfbm90aWZ5KHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQpDQo+ID4gK3N0YXRpYyB2b2lkIGlu dGVsX3Bpbl9lbGRfbm90aWZ5KHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQsIGludCBkZXZfaWQp DQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBoZGFfY29kZWMgKmNvZGVjID0gYXVkaW9fcHRyOw0KPiA+ ICAJaW50IHBpbl9uaWQ7DQo+ID4gLS0NCj4gPiAyLjUuMA0KPiA+IA0KPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdA0KPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gPiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA0KPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0DQo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngNCg0KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==