From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id A3DC689333 for ; Tue, 23 Apr 2019 12:23:15 +0000 (UTC) From: "Ser, Simon" Date: Tue, 23 Apr 2019 12:23:12 +0000 Message-ID: References: <20190417124359.12293-1-simon.ser@intel.com> <20190417124359.12293-4-simon.ser@intel.com> In-Reply-To: Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v6 3/7] tests/kms_chamelium: test we receive a signal from both audio channels List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "igt-dev@lists.freedesktop.org" , "martin.peres@linux.intel.com" List-ID: T24gVHVlLCAyMDE5LTA0LTIzIGF0IDEwOjQxICswMzAwLCBNYXJ0aW4gUGVyZXMgd3JvdGU6DQo+ IE9uIDE3LzA0LzIwMTkgMTU6NDMsIFNpbW9uIFNlciB3cm90ZToNCj4gPiBUaGlzIGNvbW1pdCB1 cGRhdGVzIHRoZSBhdWRpbyB0ZXN0IHRvIG1ha2Ugc3VyZSB3ZSByZWNlaXZlIGEgc2lnbmFsIGZy b20gYm90aA0KPiA+IGF1ZGlvIGNoYW5uZWxzLiBIb3dldmVyIHRoaXMgY29tbWl0IGRvZXNuJ3Qg Y2hlY2sgdGhhdCBsZWZ0IGFuZCByaWdodCBjaGFubmVscw0KPiA+IGFyZSBub3Qgc3dhcHBlZC4g U3VjaCBhIGNoZWNrIHJlcXVpcmVzIHNvbWUgbW9yZSB3b3JrIChiZWNhdXNlIHRoZSBDaGFtZWxp dW0NCj4gPiBkZXZpY2UgZG9lcyBzd2FwIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWxzKSBhbmQgd2ls bCBiZSBpbXBsZW1lbnRlZCBpbiBhIGZ1dHVyZQ0KPiA+IGNvbW1pdC4NCj4gPiANCj4gPiBUaGlz IGNvbW1pdCBhZGRzIGEgbmV3IGNoYW5uZWwgYXJndW1lbnQgdG8gYXVkaW9fc2lnbmFsX2FkZF9m cmVxdWVuY3ksIHRvIGFkZA0KPiA+IGEgZnJlcXVlbmN5IHRvIGEgc2luZ2xlIGNoYW5uZWwgb25s eS4NCj4gPiANCj4gPiBTb21lIGxpZ2h0IHJlZmFjdG9yaW5nIGhhcyBiZWVuIHBlcmZvcm1lZCAo YSBwcm9wZXIgYXVkaW9fc2lnbmFsX2RlaW5pdA0KPiA+IGZ1bmN0aW9uIGhhcyBiZWVuIGludHJv ZHVjZWQpIGFuZCBsb2dnaW5nIGhhcyBiZWVuIGltcHJvdmVkLg0KPiA+IA0KPiA+IFNpZ25lZC1v ZmYtYnk6IFNpbW9uIFNlciA8c2ltb24uc2VyQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgbGli L2lndF9hbHNhLmMgICAgICAgIHwgIDI2ICsrKysrKystLQ0KPiA+ICBsaWIvaWd0X2F1ZGlvLmMg ICAgICAgfCAxMTkgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tDQo+ ID4gIGxpYi9pZ3RfYXVkaW8uaCAgICAgICB8ICAxMSArKy0tDQo+ID4gIHRlc3RzL2ttc19jaGFt ZWxpdW0uYyB8ICA1NiArKysrKysrKysrKystLS0tLS0tLQ0KPiA+ICA0IGZpbGVzIGNoYW5nZWQs IDEzNyBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0 IGEvbGliL2lndF9hbHNhLmMgYi9saWIvaWd0X2Fsc2EuYw0KPiA+IGluZGV4IGZjNmQzMzZiLi5h NDc4Njg2YSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvaWd0X2Fsc2EuYw0KPiA+ICsrKyBiL2xpYi9p Z3RfYWxzYS5jDQo+ID4gQEAgLTE4Miw2ICsxODIsOCBAQCBzdGF0aWMgY2hhciAqYWxzYV9yZXNv bHZlX2luZGVudGlmaWVyKGNvbnN0IGNoYXIgKmRldmljZV9uYW1lLCBpbnQgc2tpcCkNCj4gPiAg CQkJCQljb250aW51ZTsNCj4gPiAgCQkJCX0NCj4gPiAgDQo+ID4gKwkJCQlpZ3RfZGVidWcoIk1h dGNoZWQgZGV2aWNlIFwiJXNcIlxuIiwgcGNtX25hbWUpOw0KPiA+ICsNCj4gDQo+IFNob3VsZCBo YXZlIGJlZW4gYSBzZXBhcmF0ZSBjb21taXQuDQoNClNwbGl0IGludG8gYSBzZXBhcmF0ZSBjb21t aXQuDQoNCj4gPiAgCQkJCXNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgImh3OiVkLCVkIiwg Y2FyZCwNCj4gPiAgCQkJCQkgZGV2KTsNCj4gPiAgDQo+ID4gQEAgLTMyOSw2ICszMzEsOSBAQCBz dGF0aWMgYm9vbCBhbHNhX3Rlc3RfY29uZmlndXJhdGlvbihzbmRfcGNtX3QgKmhhbmRsZSwgaW50 IGNoYW5uZWxzLA0KPiA+ICB7DQo+ID4gIAlzbmRfcGNtX2h3X3BhcmFtc190ICpwYXJhbXM7DQo+ ID4gIAlpbnQgcmV0Ow0KPiA+ICsJdW5zaWduZWQgaW50IG1pbl9jaGFubmVscywgbWF4X2NoYW5u ZWxzOw0KPiA+ICsJdW5zaWduZWQgaW50IG1pbl9yYXRlLCBtYXhfcmF0ZTsNCj4gPiArCWludCBt aW5fcmF0ZV9kaXIsIG1heF9yYXRlX2RpcjsNCj4gPiAgDQo+ID4gIAlzbmRfcGNtX2h3X3BhcmFt c19hbGxvY2EoJnBhcmFtcyk7DQo+ID4gIA0KPiA+IEBAIC0zMzcsMTIgKzM0MiwyNCBAQCBzdGF0 aWMgYm9vbCBhbHNhX3Rlc3RfY29uZmlndXJhdGlvbihzbmRfcGNtX3QgKmhhbmRsZSwgaW50IGNo YW5uZWxzLA0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiAgDQo+ID4gIAlyZXQgPSBzbmRfcGNt X2h3X3BhcmFtc190ZXN0X3JhdGUoaGFuZGxlLCBwYXJhbXMsIHNhbXBsaW5nX3JhdGUsIDApOw0K PiA+IC0JaWYgKHJldCA8IDApDQo+ID4gKwlpZiAocmV0IDwgMCkgew0KPiA+ICsJCXNuZF9wY21f aHdfcGFyYW1zX2dldF9yYXRlX21pbihwYXJhbXMsICZtaW5fcmF0ZSwgJm1pbl9yYXRlX2Rpcik7 DQo+ID4gKwkJc25kX3BjbV9od19wYXJhbXNfZ2V0X3JhdGVfbWF4KHBhcmFtcywgJm1heF9yYXRl LCAmbWF4X3JhdGVfZGlyKTsNCj4gPiArCQlpZ3RfZGVidWcoIk91dHB1dCBkZXZpY2Ugc3VwcG9y dHMgcmF0ZXMgYmV0d2VlbiAldSBhbmQgJXUsICINCj4gPiArCQkJICAicmVxdWVzdGVkICVkXG4i LA0KPiA+ICsJCQkgIG1pbl9yYXRlLCBtYXhfcmF0ZSwgc2FtcGxpbmdfcmF0ZSk7DQo+ID4gIAkJ cmV0dXJuIGZhbHNlOw0KPiA+ICsJfQ0KPiANCj4gVGhpcyBsaWtlbHkgc2hvdWxkIGJlIGluIHBh dGNoIDUvNy4NCg0KU3BsaXQgaW50byBhIHNlcGFyYXRlIGNvbW1pdCBpbnN0ZWFkICh3aXRoIG90 aGVyIGxvZ2dpbmctcmVsYXRlZA0KY2hhbmdlcykuDQoNCj4gPiAgDQo+ID4gIAlyZXQgPSBzbmRf cGNtX2h3X3BhcmFtc190ZXN0X2NoYW5uZWxzKGhhbmRsZSwgcGFyYW1zLCBjaGFubmVscyk7DQo+ ID4gLQlpZiAocmV0IDwgMCkNCj4gPiArCWlmIChyZXQgPCAwKSB7DQo+ID4gKwkJc25kX3BjbV9o d19wYXJhbXNfZ2V0X2NoYW5uZWxzX21pbihwYXJhbXMsICZtaW5fY2hhbm5lbHMpOw0KPiA+ICsJ CXNuZF9wY21faHdfcGFyYW1zX2dldF9jaGFubmVsc19tYXgocGFyYW1zLCAmbWF4X2NoYW5uZWxz KTsNCj4gPiArCQlpZ3RfZGVidWcoIk91dHB1dCBkZXZpY2Ugc3VwcG9ydHMgYmV0d2VlbiAldSBh bmQgIg0KPiA+ICsJCQkgICIldSBjaGFubmVscywgcmVxdWVzdGVkICVkXG4iLA0KPiA+ICsJCQkg IG1pbl9jaGFubmVscywgbWF4X2NoYW5uZWxzLCBjaGFubmVscyk7DQo+ID4gIAkJcmV0dXJuIGZh bHNlOw0KPiA+ICsJfQ0KPiA+ICANCj4gPiAgCXJldHVybiB0cnVlOw0KPiA+ICB9DQo+ID4gQEAg LTQwOSwxMyArNDI2LDE2IEBAIHZvaWQgYWxzYV9jb25maWd1cmVfb3V0cHV0KHN0cnVjdCBhbHNh ICphbHNhLCBpbnQgY2hhbm5lbHMsDQo+ID4gIAlzbmRfcGNtX3QgKmhhbmRsZTsNCj4gPiAgCWlu dCByZXQ7DQo+ID4gIAlpbnQgaTsNCj4gPiArCWludCBzb2Z0X3Jlc2FtcGxlID0gMDsgLyogRG9u J3QgYWxsb3cgQUxTQSB0byByZXNhbXBsZSAqLw0KPiA+ICsJdW5zaWduZWQgaW50IGxhdGVuY3kg PSAwOw0KPiA+ICANCj4gPiAgCWZvciAoaSA9IDA7IGkgPCBhbHNhLT5vdXRwdXRfaGFuZGxlc19j b3VudDsgaSsrKSB7DQo+ID4gIAkJaGFuZGxlID0gYWxzYS0+b3V0cHV0X2hhbmRsZXNbaV07DQo+ ID4gIA0KPiA+ICAJCXJldCA9IHNuZF9wY21fc2V0X3BhcmFtcyhoYW5kbGUsIFNORF9QQ01fRk9S TUFUX1MxNl9MRSwNCj4gPiAgCQkJCQkgU05EX1BDTV9BQ0NFU1NfUldfSU5URVJMRUFWRUQsDQo+ ID4gLQkJCQkJIGNoYW5uZWxzLCBzYW1wbGluZ19yYXRlLCAwLCAwKTsNCj4gPiArCQkJCQkgY2hh bm5lbHMsIHNhbXBsaW5nX3JhdGUsDQo+ID4gKwkJCQkJIHNvZnRfcmVzYW1wbGUsIGxhdGVuY3kp Ow0KPiANCj4gUHJvYmFibHkgc2hvdWxkIGhhdmUgYmVlbiBhIHNlcGFyYXRlIGNvbW1pdCBhZ2Fp biA7KQ0KDQpTcGxpdCBpbnRvIGEgc2VwYXJhdGUgY29tbWl0Lg0KDQo+ID4gIAkJaWd0X2Fzc2Vy dChyZXQgPj0gMCk7DQo+ID4gIAl9DQo+ID4gIA0KPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X2F1 ZGlvLmMgYi9saWIvaWd0X2F1ZGlvLmMNCj4gPiBpbmRleCA3NjI0ZjU2NS4uYTJhNWM1OTQgMTAw NjQ0DQo+ID4gLS0tIGEvbGliL2lndF9hdWRpby5jDQo+ID4gKysrIGIvbGliL2lndF9hdWRpby5j DQo+ID4gQEAgLTM1LDcgKzM1LDcgQEANCj4gPiAgI2luY2x1ZGUgImlndF9hdWRpby5oIg0KPiA+ ICAjaW5jbHVkZSAiaWd0X2NvcmUuaCINCj4gPiAgDQo+ID4gLSNkZWZpbmUgRlJFUVNfTUFYCTgN Cj4gPiArI2RlZmluZSBGUkVRU19NQVggNjQNCj4gPiAgDQo+ID4gIC8qKg0KPiA+ICAgKiBTRUNU SU9OOmlndF9hdWRpbw0KPiA+IEBAIC00OSw5ICs0OSwxMCBAQA0KPiA+ICANCj4gPiAgc3RydWN0 IGF1ZGlvX3NpZ25hbF9mcmVxIHsNCj4gPiAgCWludCBmcmVxOw0KPiA+ICsJaW50IGNoYW5uZWw7 DQo+ID4gIA0KPiA+IC0Jc2hvcnQgKnBlcmlvZDsNCj4gPiAtCWludCBmcmFtZXM7DQo+ID4gKwlp bnQxNl90ICpwZXJpb2Q7DQo+ID4gKwlzaXplX3QgcGVyaW9kX2xlbjsNCj4gPiAgCWludCBvZmZz ZXQ7DQo+ID4gIH07DQo+ID4gIA0KPiA+IEBAIC02MCw3ICs2MSw3IEBAIHN0cnVjdCBhdWRpb19z aWduYWwgew0KPiA+ICAJaW50IHNhbXBsaW5nX3JhdGU7DQo+ID4gIA0KPiA+ICAJc3RydWN0IGF1 ZGlvX3NpZ25hbF9mcmVxIGZyZXFzW0ZSRVFTX01BWF07DQo+ID4gLQlpbnQgZnJlcXNfY291bnQ7 DQo+ID4gKwlzaXplX3QgZnJlcXNfY291bnQ7DQo+ID4gIH07DQo+ID4gIA0KPiA+ICAvKioNCj4g PiBAQCAtODksMjEgKzkwLDI4IEBAIHN0cnVjdCBhdWRpb19zaWduYWwgKmF1ZGlvX3NpZ25hbF9p bml0KGludCBjaGFubmVscywgaW50IHNhbXBsaW5nX3JhdGUpDQo+ID4gICAqIGF1ZGlvX3NpZ25h bF9hZGRfZnJlcXVlbmN5Og0KPiA+ICAgKiBAc2lnbmFsOiBUaGUgdGFyZ2V0IHNpZ25hbCBzdHJ1 Y3R1cmUNCj4gPiAgICogQGZyZXF1ZW5jeTogVGhlIGZyZXF1ZW5jeSB0byBhZGQgdG8gdGhlIHNp Z25hbA0KPiA+ICsgKiBAY2hhbm5lbDogVGhlIGNoYW5uZWwgdG8gYWRkIHRoaXMgZnJlcXVlbmN5 IHRvLCBvciAtMSB0byBhZGQgaXQgdG8gYWxsDQo+ID4gKyAqIGNoYW5uZWxzDQo+ID4gICAqDQo+ ID4gICAqIEFkZCBhIGZyZXF1ZW5jeSB0byB0aGUgc2lnbmFsLg0KPiA+ICAgKg0KPiA+ICAgKiBS ZXR1cm5zOiBBbiBpbnRlZ2VyIGVxdWFsIHRvIHplcm8gZm9yIHN1Y2Nlc3MgYW5kIG5lZ2F0aXZl IGZvciBmYWlsdXJlDQo+ID4gICAqLw0KPiA+IC1pbnQgYXVkaW9fc2lnbmFsX2FkZF9mcmVxdWVu Y3koc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgZnJlcXVlbmN5KQ0KPiA+ICtpbnQg YXVkaW9fc2lnbmFsX2FkZF9mcmVxdWVuY3koc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBp bnQgZnJlcXVlbmN5LA0KPiA+ICsJCQkgICAgICAgaW50IGNoYW5uZWwpDQo+IA0KPiBJcyB0aGUg YWxpZ25tZW50IGNvcnJlY3QgaGVyZT8gRG9lc24ndCBsb29rIGxpa2UgaXQhDQoNCk5vdCBzdXJl IHdoYXQncyBnb2luZyBvbiB3aXRoIHZpbS4gSXQgbG9va3MgZmluZSBpbiB2aW0sIGJ1dCBsb29r cyBiYWQNCmluIGdpdC4gTGV0J3MgdHJ1c3QgZ2l0Lg0KDQo+ID4gIHsNCj4gPiAtCWludCBpbmRl eCA9IHNpZ25hbC0+ZnJlcXNfY291bnQ7DQo+ID4gKwlzaXplX3QgaW5kZXggPSBzaWduYWwtPmZy ZXFzX2NvdW50Ow0KPiA+ICsJc3RydWN0IGF1ZGlvX3NpZ25hbF9mcmVxICpmcmVxOw0KPiA+ICAN Cj4gPiAtCWlmIChpbmRleCA9PSBGUkVRU19NQVgpDQo+ID4gLQkJcmV0dXJuIC0xOw0KPiA+ICsJ aWd0X2Fzc2VydChpbmRleCA8IEZSRVFTX01BWCk7DQo+ID4gKwlpZ3RfYXNzZXJ0KGNoYW5uZWwg PCBzaWduYWwtPmNoYW5uZWxzKTsNCj4gPiAgDQo+ID4gIAkvKiBTdGF5IHdpdGhpbiB0aGUgTnlx dWlzdOKAk1NoYW5ub24gc2FtcGxpbmcgdGhlb3JlbS4gKi8NCj4gPiAtCWlmIChmcmVxdWVuY3kg PiBzaWduYWwtPnNhbXBsaW5nX3JhdGUgLyAyKQ0KPiA+ICsJaWYgKGZyZXF1ZW5jeSA+IHNpZ25h bC0+c2FtcGxpbmdfcmF0ZSAvIDIpIHsNCj4gPiArCQlpZ3RfZGVidWcoIlNraXBwaW5nIGZyZXF1 ZW5jeSAlZDogdG9vIGhpZ2ggZm9yIGEgJWQgSHogIg0KPiA+ICsJCQkgICJzYW1wbGluZyByYXRl XG4iLCBmcmVxdWVuY3ksIHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSk7DQo+ID4gIAkJcmV0dXJuIC0x Ow0KPiA+ICsJfQ0KPiANCj4gU2hvdWxkIGhhdmUgYmVlbiBhIHNlcGFyYXRlIGNvbW1pdC4NCg0K U3BsaXQgaW50byBhIHNlcGFyYXRlIGNvbW1pdCAoYWxvbmcgd2l0aCBvdGhlciBsb2dnaW5nLXJl bGF0ZWQNCmNoYW5nZXMpLg0KDQo+ID4gIA0KPiA+ICAJLyogQ2xpcCB0aGUgZnJlcXVlbmN5IHRv IGFuIGludGVnZXIgbXVsdGlwbGUgb2YgdGhlIHNhbXBsaW5nIHJhdGUuDQo+ID4gIAkgKiBUaGlz IHRvIGJlIGFibGUgdG8gc3RvcmUgYSBmdWxsIHBlcmlvZCBvZiBpdCBhbmQgdXNlIHRoYXQgZm9y DQo+ID4gQEAgLTExMSwxMSArMTE5LDE0IEBAIGludCBhdWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5j eShzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludCBmcmVxdWVuY3kpDQo+ID4gIAkgKi8N Cj4gPiAgCWZyZXF1ZW5jeSA9IHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAvIChzaWduYWwtPnNhbXBs aW5nX3JhdGUgLyBmcmVxdWVuY3kpOw0KPiA+ICANCj4gPiAtCWlndF9kZWJ1ZygiQWRkaW5nIHRl c3QgZnJlcXVlbmN5ICVkXG4iLCBmcmVxdWVuY3kpOw0KPiA+ICsJaWd0X2RlYnVnKCJBZGRpbmcg dGVzdCBmcmVxdWVuY3kgJWQgdG8gY2hhbm5lbCAlZFxuIiwNCj4gPiArCQkgIGZyZXF1ZW5jeSwg Y2hhbm5lbCk7DQo+ID4gKw0KPiA+ICsJZnJlcSA9ICZzaWduYWwtPmZyZXFzW2luZGV4XTsNCj4g PiArCW1lbXNldChmcmVxLCAwLCBzaXplb2YoKmZyZXEpKTsNCj4gPiArCWZyZXEtPmZyZXEgPSBm cmVxdWVuY3k7DQo+ID4gKwlmcmVxLT5jaGFubmVsID0gY2hhbm5lbDsNCj4gPiAgDQo+ID4gLQlz aWduYWwtPmZyZXFzW2luZGV4XS5mcmVxID0gZnJlcXVlbmN5Ow0KPiA+IC0Jc2lnbmFsLT5mcmVx c1tpbmRleF0uZnJhbWVzID0gMDsNCj4gPiAtCXNpZ25hbC0+ZnJlcXNbaW5kZXhdLm9mZnNldCA9 IDA7DQo+ID4gIAlzaWduYWwtPmZyZXFzX2NvdW50Kys7DQo+ID4gIA0KPiA+ICAJcmV0dXJuIDA7 DQo+ID4gQEAgLTEzMywyMCArMTQ0LDE3IEBAIHZvaWQgYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUo c3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsKQ0KPiA+ICB7DQo+ID4gIAlpbnQxNl90ICpwZXJp b2Q7DQo+ID4gIAlkb3VibGUgdmFsdWU7DQo+ID4gLQlpbnQgZnJhbWVzOw0KPiA+ICsJc2l6ZV90 IHBlcmlvZF9sZW47DQo+ID4gIAlpbnQgZnJlcTsNCj4gPiAgCWludCBpLCBqOw0KPiA+ICANCj4g PiAtCWlmIChzaWduYWwtPmZyZXFzX2NvdW50ID09IDApDQo+ID4gLQkJcmV0dXJuOw0KPiA+IC0N Cj4gPiAgCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2NvdW50OyBpKyspIHsNCj4gPiAg CQlmcmVxID0gc2lnbmFsLT5mcmVxc1tpXS5mcmVxOw0KPiA+IC0JCWZyYW1lcyA9IHNpZ25hbC0+ c2FtcGxpbmdfcmF0ZSAvIGZyZXE7DQo+ID4gKwkJcGVyaW9kX2xlbiA9IHNpZ25hbC0+c2FtcGxp bmdfcmF0ZSAvIGZyZXE7DQo+ID4gIA0KPiA+IC0JCXBlcmlvZCA9IGNhbGxvYygxLCBmcmFtZXMg KiBzaXplb2Yoc2hvcnQpKTsNCj4gPiArCQlwZXJpb2QgPSBjYWxsb2MoMSwgcGVyaW9kX2xlbiAq IHNpemVvZihpbnQxNl90KSk7DQo+ID4gIA0KPiA+IC0JCWZvciAoaiA9IDA7IGogPCBmcmFtZXM7 IGorKykgew0KPiA+ICsJCWZvciAoaiA9IDA7IGogPCBwZXJpb2RfbGVuOyBqKyspIHsNCj4gPiAg CQkJdmFsdWUgPSAyLjAgKiBNX1BJICogZnJlcSAvIHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAqIGo7 DQo+ID4gIAkJCXZhbHVlID0gc2luKHZhbHVlKSAqIElOVDE2X01BWCAvIHNpZ25hbC0+ZnJlcXNf Y291bnQ7DQo+ID4gIA0KPiA+IEBAIC0xNTQsMjYgKzE2MiwzNCBAQCB2b2lkIGF1ZGlvX3NpZ25h bF9zeW50aGVzaXplKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCkNCj4gPiAgCQl9DQo+ID4g IA0KPiA+ICAJCXNpZ25hbC0+ZnJlcXNbaV0ucGVyaW9kID0gcGVyaW9kOw0KPiA+IC0JCXNpZ25h bC0+ZnJlcXNbaV0uZnJhbWVzID0gZnJhbWVzOw0KPiA+ICsJCXNpZ25hbC0+ZnJlcXNbaV0ucGVy aW9kX2xlbiA9IHBlcmlvZF9sZW47DQo+ID4gIAl9DQo+ID4gIH0NCj4gPiAgDQo+ID4gIC8qKg0K PiA+IC0gKiBhdWRpb19zaWduYWxfc3ludGhlc2l6ZToNCj4gPiArICogYXVkaW9fc2lnbmFsX2Rl aW5pdDoNCj4gPiArICoNCj4gPiArICogUmVsZWFzZSB0aGUgc2lnbmFsLg0KPiA+ICsgKi8NCj4g PiArdm9pZCBhdWRpb19zaWduYWxfZGVpbml0KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCkN Cj4gDQo+IElzIHRoZSBjb2Rpbmcgc3R5bGUgdG8gdXNlIGRlaW5pdCBvciBmaW5pPw0KDQpJJ3Zl IHVzZWQgZGVpbml0IGFzIHRoZSBjb2RlIEkndmUgc2VlbiAoaWd0X2Fsc2EsIGlndF9jaGFtZWxp dW0pIHVzZXMNCml0LiBncmVwIHNheXMgX2ZpbmkgaXMgdXNlZCBhIGxvdCBtb3JlIG9mdGVuIHRo b3VnaCwgc28gbGV0J3Mgc3dpdGNoIHRvDQp0aGF0IGNvbnZlbnRpb24uDQoNCj4gPiArew0KPiA+ ICsJYXVkaW9fc2lnbmFsX3Jlc2V0KHNpZ25hbCk7DQo+ID4gKwlmcmVlKHNpZ25hbCk7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBhdWRpb19zaWduYWxfcmVzZXQ6DQo+ID4gICAq IEBzaWduYWw6IFRoZSB0YXJnZXQgc2lnbmFsIHN0cnVjdHVyZQ0KPiA+ICAgKg0KPiA+ICAgKiBG cmVlIHRoZSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGF1ZGlvX3NpZ25hbF9zeW50aGVzaXplIGFu ZCByZW1vdmUNCj4gPiAgICogdGhlIHByZXZpb3VzbHktYWRkZWQgZnJlcXVlbmNpZXMuDQo+ID4g ICAqLw0KPiA+IC12b2lkIGF1ZGlvX3NpZ25hbF9jbGVhbihzdHJ1Y3QgYXVkaW9fc2lnbmFsICpz aWduYWwpDQo+ID4gK3ZvaWQgYXVkaW9fc2lnbmFsX3Jlc2V0KHN0cnVjdCBhdWRpb19zaWduYWwg KnNpZ25hbCkNCj4gPiAgew0KPiA+IC0JaW50IGk7DQo+ID4gKwlzaXplX3QgaTsNCj4gPiAgDQo+ ID4gIAlmb3IgKGkgPSAwOyBpIDwgc2lnbmFsLT5mcmVxc19jb3VudDsgaSsrKSB7DQo+ID4gLQkJ aWYgKHNpZ25hbC0+ZnJlcXNbaV0ucGVyaW9kKQ0KPiA+IC0JCQlmcmVlKHNpZ25hbC0+ZnJlcXNb aV0ucGVyaW9kKTsNCj4gPiAtDQo+ID4gLQkJbWVtc2V0KCZzaWduYWwtPmZyZXFzW2ldLCAwLCBz aXplb2Yoc3RydWN0IGF1ZGlvX3NpZ25hbF9mcmVxKSk7DQo+ID4gKwkJZnJlZShzaWduYWwtPmZy ZXFzW2ldLnBlcmlvZCk7DQo+ID4gIAl9DQo+ID4gIA0KPiA+ICAJc2lnbmFsLT5mcmVxc19jb3Vu dCA9IDA7DQo+ID4gQEAgLTE4Myw0NCArMTk5LDQ1IEBAIHZvaWQgYXVkaW9fc2lnbmFsX2NsZWFu KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCkNCj4gPiAgICogYXVkaW9fc2lnbmFsX2ZpbGw6 DQo+ID4gICAqIEBzaWduYWw6IFRoZSB0YXJnZXQgc2lnbmFsIHN0cnVjdHVyZQ0KPiA+ICAgKiBA YnVmZmVyOiBUaGUgdGFyZ2V0IGJ1ZmZlciB0byBmaWxsDQo+ID4gLSAqIEBmcmFtZXM6IFRoZSBu dW1iZXIgb2YgZnJhbWVzIHRvIGZpbGwNCj4gPiArICogQHNhbXBsZXM6IFRoZSBudW1iZXIgb2Yg c2FtcGxlcyB0byBmaWxsDQo+ID4gICAqDQo+ID4gLSAqIEZpbGwgdGhlIHJlcXVlc3RlZCBudW1i ZXIgb2YgZnJhbWVzIHRvIHRoZSB0YXJnZXQgYnVmZmVyIHdpdGggdGhlIGF1ZGlvDQo+ID4gKyAq IEZpbGwgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygc2FtcGxlcyB0byB0aGUgdGFyZ2V0IGJ1ZmZl ciB3aXRoIHRoZSBhdWRpbw0KPiA+ICAgKiBzaWduYWwgZGF0YSAoaW4gaW50ZXJsZWF2ZWQgUzE2 X0xFIGZvcm1hdCksIGF0IHRoZSByZXF1ZXN0ZWQgc2FtcGxpbmcgcmF0ZQ0KPiA+ICAgKiBhbmQg bnVtYmVyIG9mIGNoYW5uZWxzLg0KPiA+ICAgKi8NCj4gPiAtdm9pZCBhdWRpb19zaWduYWxfZmls bChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludDE2X3QgKmJ1ZmZlciwgaW50IGZyYW1l cykNCj4gPiArdm9pZCBhdWRpb19zaWduYWxfZmlsbChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWdu YWwsIGludDE2X3QgKmJ1ZmZlciwNCj4gPiArCQkgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZW4pDQo+ ID4gIHsNCj4gPiAgCWludDE2X3QgKmRlc3RpbmF0aW9uLCAqc291cmNlOw0KPiA+ICsJc3RydWN0 IGF1ZGlvX3NpZ25hbF9mcmVxICpmcmVxOw0KPiA+ICAJaW50IHRvdGFsOw0KPiA+IC0JaW50IGZy ZXFfZnJhbWVzOw0KPiA+IC0JaW50IGZyZXFfb2Zmc2V0Ow0KPiA+ICAJaW50IGNvdW50Ow0KPiA+ ICAJaW50IGksIGosIGs7DQo+ID4gIA0KPiA+IC0JbWVtc2V0KGJ1ZmZlciwgMCwgc2l6ZW9mKGlu dDE2X3QpICogc2lnbmFsLT5jaGFubmVscyAqIGZyYW1lcyk7DQo+ID4gKwltZW1zZXQoYnVmZmVy LCAwLCBzaXplb2YoaW50MTZfdCkgKiBzaWduYWwtPmNoYW5uZWxzICogYnVmZmVyX2xlbik7DQo+ ID4gIA0KPiA+ICAJZm9yIChpID0gMDsgaSA8IHNpZ25hbC0+ZnJlcXNfY291bnQ7IGkrKykgew0K PiA+ICsJCWZyZXEgPSAmc2lnbmFsLT5mcmVxc1tpXTsNCj4gPiAgCQl0b3RhbCA9IDA7DQo+ID4g IA0KPiA+IC0JCXdoaWxlICh0b3RhbCA8IGZyYW1lcykgew0KPiA+IC0JCQlmcmVxX2ZyYW1lcyA9 IHNpZ25hbC0+ZnJlcXNbaV0uZnJhbWVzOw0KPiA+IC0JCQlmcmVxX29mZnNldCA9IHNpZ25hbC0+ ZnJlcXNbaV0ub2Zmc2V0Ow0KPiA+ICsJCWlndF9hc3NlcnQoZnJlcS0+cGVyaW9kKTsNCj4gPiAg DQo+ID4gLQkJCXNvdXJjZSA9IHNpZ25hbC0+ZnJlcXNbaV0ucGVyaW9kICsgZnJlcV9vZmZzZXQ7 DQo+ID4gKwkJd2hpbGUgKHRvdGFsIDwgYnVmZmVyX2xlbikgew0KPiA+ICsJCQlzb3VyY2UgPSBm cmVxLT5wZXJpb2QgKyBmcmVxLT5vZmZzZXQ7DQo+ID4gIAkJCWRlc3RpbmF0aW9uID0gYnVmZmVy ICsgdG90YWwgKiBzaWduYWwtPmNoYW5uZWxzOw0KPiA+ICANCj4gPiAtCQkJY291bnQgPSBmcmVx X2ZyYW1lcyAtIGZyZXFfb2Zmc2V0Ow0KPiA+IC0JCQlpZiAoY291bnQgPiAoZnJhbWVzIC0gdG90 YWwpKQ0KPiA+IC0JCQkJY291bnQgPSBmcmFtZXMgLSB0b3RhbDsNCj4gPiArCQkJY291bnQgPSBm cmVxLT5wZXJpb2RfbGVuIC0gZnJlcS0+b2Zmc2V0Ow0KPiA+ICsJCQlpZiAoY291bnQgPiBidWZm ZXJfbGVuIC0gdG90YWwpDQo+ID4gKwkJCQljb3VudCA9IGJ1ZmZlcl9sZW4gLSB0b3RhbDsNCj4g PiAgDQo+ID4gLQkJCWZyZXFfb2Zmc2V0ICs9IGNvdW50Ow0KPiA+IC0JCQlmcmVxX29mZnNldCAl PSBmcmVxX2ZyYW1lczsNCj4gPiAtDQo+ID4gLQkJCXNpZ25hbC0+ZnJlcXNbaV0ub2Zmc2V0ID0g ZnJlcV9vZmZzZXQ7DQo+ID4gKwkJCWZyZXEtPm9mZnNldCArPSBjb3VudDsNCj4gPiArCQkJZnJl cS0+b2Zmc2V0ICU9IGZyZXEtPnBlcmlvZF9sZW47DQo+ID4gIA0KPiA+ICAJCQlmb3IgKGogPSAw OyBqIDwgY291bnQ7IGorKykgew0KPiA+ICAJCQkJZm9yIChrID0gMDsgayA8IHNpZ25hbC0+Y2hh bm5lbHM7IGsrKykgew0KPiA+ICsJCQkJCWlmIChmcmVxLT5jaGFubmVsID49IDAgJiYNCj4gPiAr CQkJCQkgICAgZnJlcS0+Y2hhbm5lbCAhPSBrKQ0KPiA+ICsJCQkJCQljb250aW51ZTsNCj4gPiAg CQkJCQlkZXN0aW5hdGlvbltqICogc2lnbmFsLT5jaGFubmVscyArIGtdICs9IHNvdXJjZVtqXTsN Cj4gPiAgCQkJCX0NCj4gPiAgCQkJfQ0KPiA+IEBAIC0yMzcsMTEgKzI1NCwxMSBAQCB2b2lkIGF1 ZGlvX3NpZ25hbF9maWxsKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50MTZfdCAqYnVm ZmVyLCBpbnQgZnJhbWVzKQ0KPiA+ICAgKiBzYW1wbGluZ19yYXRlIGlzIGdpdmVuIGluIEh6LiBk YXRhX2xlbiBpcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGRhdGEuDQo+ID4gICAqLw0KPiA+ ICBib29sIGF1ZGlvX3NpZ25hbF9kZXRlY3Qoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBp bnQgc2FtcGxpbmdfcmF0ZSwNCj4gPiAtCQkJIGRvdWJsZSAqZGF0YSwgc2l6ZV90IGRhdGFfbGVu KQ0KPiA+ICsJCQkgaW50IGNoYW5uZWwsIGRvdWJsZSAqZGF0YSwgc2l6ZV90IGRhdGFfbGVuKQ0K PiA+ICB7DQo+ID4gIAlzaXplX3QgYmluX3Bvd2VyX2xlbiA9IGRhdGFfbGVuIC8gMiArIDE7DQo+ ID4gIAlkb3VibGUgYmluX3Bvd2VyW2Jpbl9wb3dlcl9sZW5dOw0KPiA+IC0JYm9vbCBkZXRlY3Rl ZFtzaWduYWwtPmZyZXFzX2NvdW50XTsNCj4gPiArCWJvb2wgZGV0ZWN0ZWRbRlJFUVNfTUFYXTsN Cj4gPiAgCWludCByZXQsIGZyZXFfYWNjdXJhY3ksIGZyZXEsIGxvY2FsX21heF9mcmVxOw0KPiA+ ICAJZG91YmxlIG1heCwgbG9jYWxfbWF4LCB0aHJlc2hvbGQ7DQo+ID4gIAlzaXplX3QgaSwgajsN Cj4gPiBAQCAtMzA4LDYgKzMyNSwxMCBAQCBib29sIGF1ZGlvX3NpZ25hbF9kZXRlY3Qoc3RydWN0 IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgc2FtcGxpbmdfcmF0ZSwNCj4gPiAgCQkgKiBpbnZh bGlkLiAqLw0KPiA+ICAJCWlmIChiaW5fcG93ZXJbaV0gPCB0aHJlc2hvbGQpIHsNCj4gPiAgCQkJ Zm9yIChqID0gMDsgaiA8IHNpZ25hbC0+ZnJlcXNfY291bnQ7IGorKykgew0KPiA+ICsJCQkJaWYg KHNpZ25hbC0+ZnJlcXNbal0uY2hhbm5lbCA+PSAwICYmDQo+ID4gKwkJCQkgICAgc2lnbmFsLT5m cmVxc1tqXS5jaGFubmVsICE9IGNoYW5uZWwpDQo+ID4gKwkJCQkJY29udGludWU7DQo+ID4gKw0K PiA+ICAJCQkJaWYgKHNpZ25hbC0+ZnJlcXNbal0uZnJlcSA+DQo+ID4gIAkJCQkgICAgbG9jYWxf bWF4X2ZyZXEgLSBmcmVxX2FjY3VyYWN5ICYmDQo+ID4gIAkJCQkgICAgc2lnbmFsLT5mcmVxc1tq XS5mcmVxIDwNCj4gPiBAQCAtMzQwLDYgKzM2MSwxMCBAQCBib29sIGF1ZGlvX3NpZ25hbF9kZXRl Y3Qoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgc2FtcGxpbmdfcmF0ZSwNCj4gPiAg DQo+ID4gIAkvKiBDaGVjayB0aGF0IGFsbCBmcmVxdWVuY2llcyB3ZSBnZW5lcmF0ZWQgaGF2ZSBi ZWVuIGRldGVjdGVkLiAqLw0KPiA+ICAJZm9yIChpID0gMDsgaSA8IHNpZ25hbC0+ZnJlcXNfY291 bnQ7IGkrKykgew0KPiA+ICsJCWlmIChzaWduYWwtPmZyZXFzW2ldLmNoYW5uZWwgPj0gMCAmJg0K PiA+ICsJCSAgICBzaWduYWwtPmZyZXFzW2ldLmNoYW5uZWwgIT0gY2hhbm5lbCkNCj4gPiArCQkJ Y29udGludWU7DQo+ID4gKw0KPiA+ICAJCWlmICghZGV0ZWN0ZWRbaV0pIHsNCj4gPiAgCQkJaWd0 X2RlYnVnKCJNaXNzaW5nIGZyZXF1ZW5jeTogJWRcbiIsDQo+ID4gIAkJCQkgIHNpZ25hbC0+ZnJl cXNbaV0uZnJlcSk7DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfYXVkaW8uaCBiL2xpYi9pZ3Rf YXVkaW8uaA0KPiA+IGluZGV4IDRhYTQzZTY5Li5mZTI2YmI1NyAxMDA2NDQNCj4gPiAtLS0gYS9s aWIvaWd0X2F1ZGlvLmgNCj4gPiArKysgYi9saWIvaWd0X2F1ZGlvLmgNCj4gPiBAQCAtMzUsMTIg KzM1LDE1IEBADQo+ID4gIHN0cnVjdCBhdWRpb19zaWduYWw7DQo+ID4gIA0KPiA+ICBzdHJ1Y3Qg YXVkaW9fc2lnbmFsICphdWRpb19zaWduYWxfaW5pdChpbnQgY2hhbm5lbHMsIGludCBzYW1wbGlu Z19yYXRlKTsNCj4gPiAtaW50IGF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHN0cnVjdCBhdWRp b19zaWduYWwgKnNpZ25hbCwgaW50IGZyZXF1ZW5jeSk7DQo+ID4gK3ZvaWQgYXVkaW9fc2lnbmFs X2RlaW5pdChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwpOw0KPiA+ICtpbnQgYXVkaW9fc2ln bmFsX2FkZF9mcmVxdWVuY3koc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgZnJlcXVl bmN5LA0KPiA+ICsJCQkgICAgICAgaW50IGNoYW5uZWwpOw0KPiA+ICB2b2lkIGF1ZGlvX3NpZ25h bF9zeW50aGVzaXplKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCk7DQo+ID4gLXZvaWQgYXVk aW9fc2lnbmFsX2NsZWFuKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCk7DQo+ID4gLXZvaWQg YXVkaW9fc2lnbmFsX2ZpbGwoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQxNl90ICpi dWZmZXIsIGludCBmcmFtZXMpOw0KPiA+ICt2b2lkIGF1ZGlvX3NpZ25hbF9yZXNldChzdHJ1Y3Qg YXVkaW9fc2lnbmFsICpzaWduYWwpOw0KPiA+ICt2b2lkIGF1ZGlvX3NpZ25hbF9maWxsKHN0cnVj dCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50MTZfdCAqYnVmZmVyLA0KPiA+ICsJCSAgICAgICBz aXplX3QgYnVmZmVyX2xlbik7DQo+ID4gIGJvb2wgYXVkaW9fc2lnbmFsX2RldGVjdChzdHJ1Y3Qg YXVkaW9fc2lnbmFsICpzaWduYWwsIGludCBzYW1wbGluZ19yYXRlLA0KPiA+IC0JCQkgZG91Ymxl ICpkYXRhLCBzaXplX3QgZGF0YV9sZW4pOw0KPiA+ICsJCQkgaW50IGNoYW5uZWwsIGRvdWJsZSAq ZGF0YSwgc2l6ZV90IGRhdGFfbGVuKTsNCj4gPiAgc2l6ZV90IGF1ZGlvX2V4dHJhY3RfY2hhbm5l bF9zMzJfbGUoZG91YmxlICpkc3QsIHNpemVfdCBkc3RfY2FwLA0KPiA+ICAJCQkJICAgIGludDMy X3QgKnNyYywgc2l6ZV90IHNyY19sZW4sDQo+ID4gIAkJCQkgICAgaW50IG5fY2hhbm5lbHMsIGlu dCBjaGFubmVsKTsNCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2NoYW1lbGl1bS5jIGIvdGVz dHMva21zX2NoYW1lbGl1bS5jDQo+ID4gaW5kZXggMDE0YTIyYjMuLmQzMzY2MTJmIDEwMDY0NA0K PiA+IC0tLSBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYw0KPiA+ICsrKyBiL3Rlc3RzL2ttc19jaGFt ZWxpdW0uYw0KPiA+IEBAIC03NzcsMTYgKzc3NywxNiBAQCBkb190ZXN0X2Rpc3BsYXlfYXVkaW8o ZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsDQo+ID4gIAkJICAgICAg c3RydWN0IGFsc2EgKmFsc2EsIGludCBwbGF5YmFja19jaGFubmVscywNCj4gPiAgCQkgICAgICBp bnQgcGxheWJhY2tfcmF0ZSkNCj4gPiAgew0KPiA+IC0JaW50IHJldCwgY2FwdHVyZV9yYXRlLCBj YXB0dXJlX2NoYW5uZWxzLCBtc2VjOw0KPiA+ICsJaW50IHJldCwgY2FwdHVyZV9yYXRlLCBjYXB0 dXJlX2NoYW5uZWxzLCBtc2VjLCBmcmVxOw0KPiA+ICAJc3RydWN0IGNoYW1lbGl1bV9hdWRpb19m aWxlICphdWRpb19maWxlOw0KPiA+ICAJc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKnN0cmVhbTsN Cj4gPiAgCWVudW0gY2hhbWVsaXVtX3N0cmVhbV9yZWFsdGltZV9tb2RlIHN0cmVhbV9tb2RlOw0K PiA+ICAJc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsOw0KPiA+ICAJaW50MzJfdCAqcmVjdiwg KmJ1ZjsNCj4gPiAgCWRvdWJsZSAqY2hhbm5lbDsNCj4gPiAtCXNpemVfdCBpLCBzdHJlYWssIHBh Z2VfY291bnQ7DQo+ID4gKwlzaXplX3QgaSwgaiwgc3RyZWFrLCBwYWdlX2NvdW50Ow0KPiA+ICAJ c2l6ZV90IHJlY3ZfbGVuLCBidWZfbGVuLCBidWZfY2FwLCBidWZfc2l6ZSwgY2hhbm5lbF9sZW47 DQo+ID4gLQlib29sIG9rOw0KPiA+ICsJYm9vbCBvaywgc3VjY2VzczsNCj4gPiAgCWNoYXIgZHVt cF9zdWZmaXhbNjRdOw0KPiA+ICAJY2hhciAqZHVtcF9wYXRoID0gTlVMTDsNCj4gPiAgCWludCBk dW1wX2ZkID0gLTE7DQo+ID4gQEAgLTc5NCwxMCArNzk0LDE1IEBAIGRvX3Rlc3RfZGlzcGxheV9h dWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwNCj4gPiAgCXN0 cnVjdCBhdWRpb19zdGF0ZSBzdGF0ZSA9IHt9Ow0KPiA+ICANCj4gPiAgCWlmICghYWxzYV90ZXN0 X291dHB1dF9jb25maWd1cmF0aW9uKGFsc2EsIHBsYXliYWNrX2NoYW5uZWxzLA0KPiA+IC0JCQkJ CSAgICBwbGF5YmFja19yYXRlKSkNCj4gPiArCQkJCQkgICAgcGxheWJhY2tfcmF0ZSkpIHsNCj4g PiArCQlpZ3RfZGVidWcoIlNraXBwaW5nIHRlc3Qgd2l0aCBzYW1wbGUgcmF0ZSAlZCBhbmQgJWQg Y2hhbm5lbHMgIg0KPiA+ICsJCQkgICJiZWNhdXNlIHNlbGVjdGVkIG91dHB1dCBkZXZpY2VzIGRv bid0IHN1cHBvcnQgdGhpcyAiDQo+ID4gKwkJCSAgImNvbmZpZ3VyYXRpb25cbiIsIHBsYXliYWNr X3JhdGUsIHBsYXliYWNrX2NoYW5uZWxzKTsNCj4gPiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4gKwl9 DQo+ID4gIA0KPiA+IC0JaWd0X2RlYnVnKCJUZXN0aW5nIHdpdGggcGxheWJhY2sgc2FtcGxpbmcg cmF0ZSAlZFxuIiwgcGxheWJhY2tfcmF0ZSk7DQo+ID4gKwlpZ3RfZGVidWcoIlRlc3Rpbmcgd2l0 aCBwbGF5YmFjayBzYW1wbGluZyByYXRlICVkIGFuZCAlZCBjaGFubmVsc1xuIiwNCj4gPiArCQkg IHBsYXliYWNrX3JhdGUsIHBsYXliYWNrX2NoYW5uZWxzKTsNCj4gPiAgCWFsc2FfY29uZmlndXJl X291dHB1dChhbHNhLCBwbGF5YmFja19jaGFubmVscywgcGxheWJhY2tfcmF0ZSk7DQo+ID4gIA0K PiA+ICAJY2hhbWVsaXVtX3N0YXJ0X2NhcHR1cmluZ19hdWRpbyhkYXRhLT5jaGFtZWxpdW0sIHBv cnQsIGZhbHNlKTsNCj4gPiBAQCAtODI1LDggKzgzMCwxMiBAQCBkb190ZXN0X2Rpc3BsYXlfYXVk aW8oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsDQo+ID4gIAlzaWdu YWwgPSBhdWRpb19zaWduYWxfaW5pdChwbGF5YmFja19jaGFubmVscywgcGxheWJhY2tfcmF0ZSk7 DQo+ID4gIAlpZ3RfYXNzZXJ0KHNpZ25hbCk7DQo+ID4gIA0KPiA+IC0JZm9yIChpID0gMDsgaSA8 IHRlc3RfZnJlcXVlbmNpZXNfY291bnQ7IGkrKykNCj4gPiAtCQlhdWRpb19zaWduYWxfYWRkX2Zy ZXF1ZW5jeShzaWduYWwsIHRlc3RfZnJlcXVlbmNpZXNbaV0pOw0KPiA+ICsJZm9yIChpID0gMDsg aSA8IHRlc3RfZnJlcXVlbmNpZXNfY291bnQ7IGkrKykgew0KPiA+ICsJCWZvciAoaiA9IDA7IGog PCBwbGF5YmFja19jaGFubmVsczsgaisrKSB7DQo+ID4gKwkJCWZyZXEgPSB0ZXN0X2ZyZXF1ZW5j aWVzW2ldOw0KPiA+ICsJCQlhdWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5jeShzaWduYWwsIGZyZXEs IGopOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiAgCWF1ZGlvX3NpZ25hbF9zeW50aGVzaXplKHNp Z25hbCk7DQo+ID4gIA0KPiA+ICAJc3RhdGUuc2lnbmFsID0gc2lnbmFsOw0KPiA+IEBAIC04NTEs MTAgKzg2MCwxMSBAQCBkb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpkYXRhLCBzdHJ1Y3Qg Y2hhbWVsaXVtX3BvcnQgKnBvcnQsDQo+ID4gIAlyZWN2ID0gTlVMTDsNCj4gPiAgCXJlY3ZfbGVu ID0gMDsNCj4gPiAgDQo+ID4gKwlzdWNjZXNzID0gZmFsc2U7DQo+ID4gIAlzdHJlYWsgPSAwOw0K PiA+ICAJbXNlYyA9IDA7DQo+ID4gIAlpID0gMDsNCj4gPiAtCXdoaWxlIChzdHJlYWsgPCBNSU5f U1RSRUFLICYmIG1zZWMgPCBBVURJT19USU1FT1VUKSB7DQo+ID4gKwl3aGlsZSAoIXN1Y2Nlc3Mg JiYgbXNlYyA8IEFVRElPX1RJTUVPVVQpIHsNCj4gPiAgCQlvayA9IGNoYW1lbGl1bV9zdHJlYW1f cmVjZWl2ZV9yZWFsdGltZV9hdWRpbyhzdHJlYW0sDQo+ID4gIAkJCQkJCQkgICAgICZwYWdlX2Nv dW50LA0KPiA+ICAJCQkJCQkJICAgICAmcmVjdiwgJnJlY3ZfbGVuKTsNCj4gPiBAQCAtODcyLDIx ICs4ODIsMjcgQEAgZG9fdGVzdF9kaXNwbGF5X2F1ZGlvKGRhdGFfdCAqZGF0YSwgc3RydWN0IGNo YW1lbGl1bV9wb3J0ICpwb3J0LA0KPiA+ICAJCQlpZ3RfYXNzZXJ0KHdyaXRlKGR1bXBfZmQsIGJ1 ZiwgYnVmX3NpemUpID09IGJ1Zl9zaXplKTsNCj4gPiAgCQl9DQo+ID4gIA0KPiA+IC0JCS8qIFRP RE86IGNoZWNrIG90aGVyIGNoYW5uZWxzIHRvbywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZSAqLw0K PiA+IC0JCWF1ZGlvX2V4dHJhY3RfY2hhbm5lbF9zMzJfbGUoY2hhbm5lbCwgY2hhbm5lbF9sZW4s IGJ1ZiwgYnVmX2xlbiwNCj4gPiAtCQkJCQkgICAgIGNhcHR1cmVfY2hhbm5lbHMsIDApOw0KPiA+ IC0NCj4gPiAgCQltc2VjID0gaSAqIGNoYW5uZWxfbGVuIC8gKGRvdWJsZSkgY2FwdHVyZV9yYXRl ICogMTAwMDsNCj4gPiAgCQlpZ3RfZGVidWcoIkRldGVjdGluZyBhdWRpbyBzaWduYWwsIHQ9JWQg bXNlY1xuIiwgbXNlYyk7DQo+ID4gIA0KPiA+IC0JCWlmIChhdWRpb19zaWduYWxfZGV0ZWN0KHNp Z25hbCwgY2FwdHVyZV9yYXRlLCBjaGFubmVsLA0KPiA+IC0JCQkJCWNoYW5uZWxfbGVuKSkNCj4g PiAtCQkJc3RyZWFrKys7DQo+ID4gLQkJZWxzZQ0KPiA+IC0JCQlzdHJlYWsgPSAwOw0KPiA+ICsJ CWZvciAoaiA9IDA7IGogPCBwbGF5YmFja19jaGFubmVsczsgaisrKSB7DQo+ID4gKwkJCWlndF9k ZWJ1ZygiUHJvY2Vzc2luZyBjaGFubmVsICV6dVxuIiwgaik7DQo+ID4gKw0KPiA+ICsJCQlhdWRp b19leHRyYWN0X2NoYW5uZWxfczMyX2xlKGNoYW5uZWwsIGNoYW5uZWxfbGVuLA0KPiA+ICsJCQkJ CQkgICAgIGJ1ZiwgYnVmX2xlbiwNCj4gPiArCQkJCQkJICAgICBjYXB0dXJlX2NoYW5uZWxzLCBq KTsNCj4gPiArDQo+ID4gKwkJCWlmIChhdWRpb19zaWduYWxfZGV0ZWN0KHNpZ25hbCwgY2FwdHVy ZV9yYXRlLCBqLA0KPiA+ICsJCQkJCQljaGFubmVsLCBjaGFubmVsX2xlbikpDQo+ID4gKwkJCQlz dHJlYWsrKzsNCj4gPiArCQkJZWxzZQ0KPiA+ICsJCQkJc3RyZWFrID0gMDsNCj4gPiArCQl9DQo+ ID4gIA0KPiA+ICAJCWJ1Zl9sZW4gPSAwOw0KPiA+ICAJCWkrKzsNCj4gPiArDQo+ID4gKwkJc3Vj Y2VzcyA9IHN0cmVhayA9PSBNSU5fU1RSRUFLICogcGxheWJhY2tfY2hhbm5lbHM7DQo+ID4gIAl9 DQo+ID4gIA0KPiA+ICAJaWd0X2RlYnVnKCJTdG9wcGluZyBhdWRpbyBwbGF5YmFja1xuIik7DQo+ ID4gQEAgLTkyMSwxMiArOTM3LDEwIEBAIGRvX3Rlc3RfZGlzcGxheV9hdWRpbyhkYXRhX3QgKmRh dGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwNCj4gPiAgCQljaGFtZWxpdW1fZGVzdHJv eV9hdWRpb19maWxlKGF1ZGlvX2ZpbGUpOw0KPiA+ICAJfQ0KPiA+ICANCj4gPiAtCWF1ZGlvX3Np Z25hbF9jbGVhbihzaWduYWwpOw0KPiA+IC0JZnJlZShzaWduYWwpOw0KPiA+IC0NCj4gPiArCWF1 ZGlvX3NpZ25hbF9kZWluaXQoc2lnbmFsKTsNCj4gPiAgCWNoYW1lbGl1bV9zdHJlYW1fZGVpbml0 KHN0cmVhbSk7DQo+ID4gIA0KPiA+IC0JaWd0X2Fzc2VydChzdHJlYWsgPT0gTUlOX1NUUkVBSyk7 DQo+ID4gKwlpZ3RfYXNzZXJ0KHN1Y2Nlc3MpOw0KPiA+ICAJcmV0dXJuIHRydWU7DQo+ID4gIH0N Cj4gPiAgDQo+IA0KPiBXaXRoIHRoZSBjb2Rpbmcgc3R5bGUgaXNzdWVzIGZpeGVkOg0KPiANCj4g UmV2aWV3ZWQtYnk6IE1hcnRpbiBQZXJlcyA8bWFydGluLnBlcmVzQGxpbnV4LmludGVsLmNvbT4N Cg0KVGhhbmtzIGZvciB0aGUgcmV2aWV3IQ0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pZ3QtZGV2