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 BFDE389054 for ; Tue, 23 Apr 2019 07:41:25 +0000 (UTC) References: <20190417124359.12293-1-simon.ser@intel.com> <20190417124359.12293-4-simon.ser@intel.com> From: Martin Peres Message-ID: Date: Tue, 23 Apr 2019 10:41:21 +0300 MIME-Version: 1.0 In-Reply-To: <20190417124359.12293-4-simon.ser@intel.com> Content-Language: en-GB 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: Simon Ser , igt-dev@lists.freedesktop.org List-ID: T24gMTcvMDQvMjAxOSAxNTo0MywgU2ltb24gU2VyIHdyb3RlOgo+IFRoaXMgY29tbWl0IHVwZGF0 ZXMgdGhlIGF1ZGlvIHRlc3QgdG8gbWFrZSBzdXJlIHdlIHJlY2VpdmUgYSBzaWduYWwgZnJvbSBi b3RoCj4gYXVkaW8gY2hhbm5lbHMuIEhvd2V2ZXIgdGhpcyBjb21taXQgZG9lc24ndCBjaGVjayB0 aGF0IGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWxzCj4gYXJlIG5vdCBzd2FwcGVkLiBTdWNoIGEgY2hl Y2sgcmVxdWlyZXMgc29tZSBtb3JlIHdvcmsgKGJlY2F1c2UgdGhlIENoYW1lbGl1bQo+IGRldmlj ZSBkb2VzIHN3YXAgbGVmdCBhbmQgcmlnaHQgY2hhbm5lbHMpIGFuZCB3aWxsIGJlIGltcGxlbWVu dGVkIGluIGEgZnV0dXJlCj4gY29tbWl0Lgo+IAo+IFRoaXMgY29tbWl0IGFkZHMgYSBuZXcgY2hh bm5lbCBhcmd1bWVudCB0byBhdWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5jeSwgdG8gYWRkCj4gYSBm cmVxdWVuY3kgdG8gYSBzaW5nbGUgY2hhbm5lbCBvbmx5Lgo+IAo+IFNvbWUgbGlnaHQgcmVmYWN0 b3JpbmcgaGFzIGJlZW4gcGVyZm9ybWVkIChhIHByb3BlciBhdWRpb19zaWduYWxfZGVpbml0Cj4g ZnVuY3Rpb24gaGFzIGJlZW4gaW50cm9kdWNlZCkgYW5kIGxvZ2dpbmcgaGFzIGJlZW4gaW1wcm92 ZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2ltb24gU2VyIDxzaW1vbi5zZXJAaW50ZWwuY29tPgo+ IC0tLQo+ICBsaWIvaWd0X2Fsc2EuYyAgICAgICAgfCAgMjYgKysrKysrKy0tCj4gIGxpYi9pZ3Rf YXVkaW8uYyAgICAgICB8IDExOSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0KPiAgbGliL2lndF9hdWRpby5oICAgICAgIHwgIDExICsrLS0KPiAgdGVzdHMva21zX2No YW1lbGl1bS5jIHwgIDU2ICsrKysrKysrKysrKy0tLS0tLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwg MTM3IGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIv aWd0X2Fsc2EuYyBiL2xpYi9pZ3RfYWxzYS5jCj4gaW5kZXggZmM2ZDMzNmIuLmE0Nzg2ODZhIDEw MDY0NAo+IC0tLSBhL2xpYi9pZ3RfYWxzYS5jCj4gKysrIGIvbGliL2lndF9hbHNhLmMKPiBAQCAt MTgyLDYgKzE4Miw4IEBAIHN0YXRpYyBjaGFyICphbHNhX3Jlc29sdmVfaW5kZW50aWZpZXIoY29u c3QgY2hhciAqZGV2aWNlX25hbWUsIGludCBza2lwKQo+ICAJCQkJCWNvbnRpbnVlOwo+ICAJCQkJ fQo+ICAKPiArCQkJCWlndF9kZWJ1ZygiTWF0Y2hlZCBkZXZpY2UgXCIlc1wiXG4iLCBwY21fbmFt ZSk7Cj4gKwoKU2hvdWxkIGhhdmUgYmVlbiBhIHNlcGFyYXRlIGNvbW1pdC4KCj4gIAkJCQlzbnBy aW50ZihuYW1lLCBzaXplb2YobmFtZSksICJodzolZCwlZCIsIGNhcmQsCj4gIAkJCQkJIGRldik7 Cj4gIAo+IEBAIC0zMjksNiArMzMxLDkgQEAgc3RhdGljIGJvb2wgYWxzYV90ZXN0X2NvbmZpZ3Vy YXRpb24oc25kX3BjbV90ICpoYW5kbGUsIGludCBjaGFubmVscywKPiAgewo+ICAJc25kX3BjbV9o d19wYXJhbXNfdCAqcGFyYW1zOwo+ICAJaW50IHJldDsKPiArCXVuc2lnbmVkIGludCBtaW5fY2hh bm5lbHMsIG1heF9jaGFubmVsczsKPiArCXVuc2lnbmVkIGludCBtaW5fcmF0ZSwgbWF4X3JhdGU7 Cj4gKwlpbnQgbWluX3JhdGVfZGlyLCBtYXhfcmF0ZV9kaXI7Cj4gIAo+ICAJc25kX3BjbV9od19w YXJhbXNfYWxsb2NhKCZwYXJhbXMpOwo+ICAKPiBAQCAtMzM3LDEyICszNDIsMjQgQEAgc3RhdGlj IGJvb2wgYWxzYV90ZXN0X2NvbmZpZ3VyYXRpb24oc25kX3BjbV90ICpoYW5kbGUsIGludCBjaGFu bmVscywKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJcmV0ID0gc25kX3BjbV9od19wYXJhbXNf dGVzdF9yYXRlKGhhbmRsZSwgcGFyYW1zLCBzYW1wbGluZ19yYXRlLCAwKTsKPiAtCWlmIChyZXQg PCAwKQo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlzbmRfcGNtX2h3X3BhcmFtc19nZXRfcmF0ZV9t aW4ocGFyYW1zLCAmbWluX3JhdGUsICZtaW5fcmF0ZV9kaXIpOwo+ICsJCXNuZF9wY21faHdfcGFy YW1zX2dldF9yYXRlX21heChwYXJhbXMsICZtYXhfcmF0ZSwgJm1heF9yYXRlX2Rpcik7Cj4gKwkJ aWd0X2RlYnVnKCJPdXRwdXQgZGV2aWNlIHN1cHBvcnRzIHJhdGVzIGJldHdlZW4gJXUgYW5kICV1 LCAiCj4gKwkJCSAgInJlcXVlc3RlZCAlZFxuIiwKPiArCQkJICBtaW5fcmF0ZSwgbWF4X3JhdGUs IHNhbXBsaW5nX3JhdGUpOwo+ICAJCXJldHVybiBmYWxzZTsKPiArCX0KClRoaXMgbGlrZWx5IHNo b3VsZCBiZSBpbiBwYXRjaCA1LzcuCgo+ICAKPiAgCXJldCA9IHNuZF9wY21faHdfcGFyYW1zX3Rl c3RfY2hhbm5lbHMoaGFuZGxlLCBwYXJhbXMsIGNoYW5uZWxzKTsKPiAtCWlmIChyZXQgPCAwKQo+ ICsJaWYgKHJldCA8IDApIHsKPiArCQlzbmRfcGNtX2h3X3BhcmFtc19nZXRfY2hhbm5lbHNfbWlu KHBhcmFtcywgJm1pbl9jaGFubmVscyk7Cj4gKwkJc25kX3BjbV9od19wYXJhbXNfZ2V0X2NoYW5u ZWxzX21heChwYXJhbXMsICZtYXhfY2hhbm5lbHMpOwo+ICsJCWlndF9kZWJ1ZygiT3V0cHV0IGRl dmljZSBzdXBwb3J0cyBiZXR3ZWVuICV1IGFuZCAiCj4gKwkJCSAgIiV1IGNoYW5uZWxzLCByZXF1 ZXN0ZWQgJWRcbiIsCj4gKwkJCSAgbWluX2NoYW5uZWxzLCBtYXhfY2hhbm5lbHMsIGNoYW5uZWxz KTsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gIAo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiBA QCAtNDA5LDEzICs0MjYsMTYgQEAgdm9pZCBhbHNhX2NvbmZpZ3VyZV9vdXRwdXQoc3RydWN0IGFs c2EgKmFsc2EsIGludCBjaGFubmVscywKPiAgCXNuZF9wY21fdCAqaGFuZGxlOwo+ICAJaW50IHJl dDsKPiAgCWludCBpOwo+ICsJaW50IHNvZnRfcmVzYW1wbGUgPSAwOyAvKiBEb24ndCBhbGxvdyBB TFNBIHRvIHJlc2FtcGxlICovCj4gKwl1bnNpZ25lZCBpbnQgbGF0ZW5jeSA9IDA7Cj4gIAo+ICAJ Zm9yIChpID0gMDsgaSA8IGFsc2EtPm91dHB1dF9oYW5kbGVzX2NvdW50OyBpKyspIHsKPiAgCQlo YW5kbGUgPSBhbHNhLT5vdXRwdXRfaGFuZGxlc1tpXTsKPiAgCj4gIAkJcmV0ID0gc25kX3BjbV9z ZXRfcGFyYW1zKGhhbmRsZSwgU05EX1BDTV9GT1JNQVRfUzE2X0xFLAo+ICAJCQkJCSBTTkRfUENN X0FDQ0VTU19SV19JTlRFUkxFQVZFRCwKPiAtCQkJCQkgY2hhbm5lbHMsIHNhbXBsaW5nX3JhdGUs IDAsIDApOwo+ICsJCQkJCSBjaGFubmVscywgc2FtcGxpbmdfcmF0ZSwKPiArCQkJCQkgc29mdF9y ZXNhbXBsZSwgbGF0ZW5jeSk7CgpQcm9iYWJseSBzaG91bGQgaGF2ZSBiZWVuIGEgc2VwYXJhdGUg Y29tbWl0IGFnYWluIDspCgo+ICAJCWlndF9hc3NlcnQocmV0ID49IDApOwo+ICAJfQo+ICAKPiBk aWZmIC0tZ2l0IGEvbGliL2lndF9hdWRpby5jIGIvbGliL2lndF9hdWRpby5jCj4gaW5kZXggNzYy NGY1NjUuLmEyYTVjNTk0IDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3RfYXVkaW8uYwo+ICsrKyBiL2xp Yi9pZ3RfYXVkaW8uYwo+IEBAIC0zNSw3ICszNSw3IEBACj4gICNpbmNsdWRlICJpZ3RfYXVkaW8u aCIKPiAgI2luY2x1ZGUgImlndF9jb3JlLmgiCj4gIAo+IC0jZGVmaW5lIEZSRVFTX01BWAk4Cj4g KyNkZWZpbmUgRlJFUVNfTUFYIDY0Cj4gIAo+ICAvKioKPiAgICogU0VDVElPTjppZ3RfYXVkaW8K PiBAQCAtNDksOSArNDksMTAgQEAKPiAgCj4gIHN0cnVjdCBhdWRpb19zaWduYWxfZnJlcSB7Cj4g IAlpbnQgZnJlcTsKPiArCWludCBjaGFubmVsOwo+ICAKPiAtCXNob3J0ICpwZXJpb2Q7Cj4gLQlp bnQgZnJhbWVzOwo+ICsJaW50MTZfdCAqcGVyaW9kOwo+ICsJc2l6ZV90IHBlcmlvZF9sZW47Cj4g IAlpbnQgb2Zmc2V0Owo+ICB9Owo+ICAKPiBAQCAtNjAsNyArNjEsNyBAQCBzdHJ1Y3QgYXVkaW9f c2lnbmFsIHsKPiAgCWludCBzYW1wbGluZ19yYXRlOwo+ICAKPiAgCXN0cnVjdCBhdWRpb19zaWdu YWxfZnJlcSBmcmVxc1tGUkVRU19NQVhdOwo+IC0JaW50IGZyZXFzX2NvdW50Owo+ICsJc2l6ZV90 IGZyZXFzX2NvdW50Owo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTg5LDIxICs5MCwyOCBAQCBzdHJ1 Y3QgYXVkaW9fc2lnbmFsICphdWRpb19zaWduYWxfaW5pdChpbnQgY2hhbm5lbHMsIGludCBzYW1w bGluZ19yYXRlKQo+ICAgKiBhdWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5jeToKPiAgICogQHNpZ25h bDogVGhlIHRhcmdldCBzaWduYWwgc3RydWN0dXJlCj4gICAqIEBmcmVxdWVuY3k6IFRoZSBmcmVx dWVuY3kgdG8gYWRkIHRvIHRoZSBzaWduYWwKPiArICogQGNoYW5uZWw6IFRoZSBjaGFubmVsIHRv IGFkZCB0aGlzIGZyZXF1ZW5jeSB0bywgb3IgLTEgdG8gYWRkIGl0IHRvIGFsbAo+ICsgKiBjaGFu bmVscwo+ICAgKgo+ICAgKiBBZGQgYSBmcmVxdWVuY3kgdG8gdGhlIHNpZ25hbC4KPiAgICoKPiAg ICogUmV0dXJuczogQW4gaW50ZWdlciBlcXVhbCB0byB6ZXJvIGZvciBzdWNjZXNzIGFuZCBuZWdh dGl2ZSBmb3IgZmFpbHVyZQo+ICAgKi8KPiAtaW50IGF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5 KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50IGZyZXF1ZW5jeSkKPiAraW50IGF1ZGlv X3NpZ25hbF9hZGRfZnJlcXVlbmN5KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50IGZy ZXF1ZW5jeSwKPiArCQkJICAgICAgIGludCBjaGFubmVsKQoKSXMgdGhlIGFsaWdubWVudCBjb3Jy ZWN0IGhlcmU/IERvZXNuJ3QgbG9vayBsaWtlIGl0IQoKPiAgewo+IC0JaW50IGluZGV4ID0gc2ln bmFsLT5mcmVxc19jb3VudDsKPiArCXNpemVfdCBpbmRleCA9IHNpZ25hbC0+ZnJlcXNfY291bnQ7 Cj4gKwlzdHJ1Y3QgYXVkaW9fc2lnbmFsX2ZyZXEgKmZyZXE7Cj4gIAo+IC0JaWYgKGluZGV4ID09 IEZSRVFTX01BWCkKPiAtCQlyZXR1cm4gLTE7Cj4gKwlpZ3RfYXNzZXJ0KGluZGV4IDwgRlJFUVNf TUFYKTsKPiArCWlndF9hc3NlcnQoY2hhbm5lbCA8IHNpZ25hbC0+Y2hhbm5lbHMpOwo+ICAKPiAg CS8qIFN0YXkgd2l0aGluIHRoZSBOeXF1aXN04oCTU2hhbm5vbiBzYW1wbGluZyB0aGVvcmVtLiAq Lwo+IC0JaWYgKGZyZXF1ZW5jeSA+IHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAvIDIpCj4gKwlpZiAo ZnJlcXVlbmN5ID4gc2lnbmFsLT5zYW1wbGluZ19yYXRlIC8gMikgewo+ICsJCWlndF9kZWJ1Zygi U2tpcHBpbmcgZnJlcXVlbmN5ICVkOiB0b28gaGlnaCBmb3IgYSAlZCBIeiAiCj4gKwkJCSAgInNh bXBsaW5nIHJhdGVcbiIsIGZyZXF1ZW5jeSwgc2lnbmFsLT5zYW1wbGluZ19yYXRlKTsKPiAgCQly ZXR1cm4gLTE7Cj4gKwl9CgpTaG91bGQgaGF2ZSBiZWVuIGEgc2VwYXJhdGUgY29tbWl0LgoKPiAg Cj4gIAkvKiBDbGlwIHRoZSBmcmVxdWVuY3kgdG8gYW4gaW50ZWdlciBtdWx0aXBsZSBvZiB0aGUg c2FtcGxpbmcgcmF0ZS4KPiAgCSAqIFRoaXMgdG8gYmUgYWJsZSB0byBzdG9yZSBhIGZ1bGwgcGVy aW9kIG9mIGl0IGFuZCB1c2UgdGhhdCBmb3IKPiBAQCAtMTExLDExICsxMTksMTQgQEAgaW50IGF1 ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50 IGZyZXF1ZW5jeSkKPiAgCSAqLwo+ICAJZnJlcXVlbmN5ID0gc2lnbmFsLT5zYW1wbGluZ19yYXRl IC8gKHNpZ25hbC0+c2FtcGxpbmdfcmF0ZSAvIGZyZXF1ZW5jeSk7Cj4gIAo+IC0JaWd0X2RlYnVn KCJBZGRpbmcgdGVzdCBmcmVxdWVuY3kgJWRcbiIsIGZyZXF1ZW5jeSk7Cj4gKwlpZ3RfZGVidWco IkFkZGluZyB0ZXN0IGZyZXF1ZW5jeSAlZCB0byBjaGFubmVsICVkXG4iLAo+ICsJCSAgZnJlcXVl bmN5LCBjaGFubmVsKTsKPiArCj4gKwlmcmVxID0gJnNpZ25hbC0+ZnJlcXNbaW5kZXhdOwo+ICsJ bWVtc2V0KGZyZXEsIDAsIHNpemVvZigqZnJlcSkpOwo+ICsJZnJlcS0+ZnJlcSA9IGZyZXF1ZW5j eTsKPiArCWZyZXEtPmNoYW5uZWwgPSBjaGFubmVsOwo+ICAKPiAtCXNpZ25hbC0+ZnJlcXNbaW5k ZXhdLmZyZXEgPSBmcmVxdWVuY3k7Cj4gLQlzaWduYWwtPmZyZXFzW2luZGV4XS5mcmFtZXMgPSAw Owo+IC0Jc2lnbmFsLT5mcmVxc1tpbmRleF0ub2Zmc2V0ID0gMDsKPiAgCXNpZ25hbC0+ZnJlcXNf Y291bnQrKzsKPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMTMzLDIwICsxNDQsMTcgQEAgdm9pZCBh dWRpb19zaWduYWxfc3ludGhlc2l6ZShzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwpCj4gIHsK PiAgCWludDE2X3QgKnBlcmlvZDsKPiAgCWRvdWJsZSB2YWx1ZTsKPiAtCWludCBmcmFtZXM7Cj4g KwlzaXplX3QgcGVyaW9kX2xlbjsKPiAgCWludCBmcmVxOwo+ICAJaW50IGksIGo7Cj4gIAo+IC0J aWYgKHNpZ25hbC0+ZnJlcXNfY291bnQgPT0gMCkKPiAtCQlyZXR1cm47Cj4gLQo+ICAJZm9yIChp ID0gMDsgaSA8IHNpZ25hbC0+ZnJlcXNfY291bnQ7IGkrKykgewo+ICAJCWZyZXEgPSBzaWduYWwt PmZyZXFzW2ldLmZyZXE7Cj4gLQkJZnJhbWVzID0gc2lnbmFsLT5zYW1wbGluZ19yYXRlIC8gZnJl cTsKPiArCQlwZXJpb2RfbGVuID0gc2lnbmFsLT5zYW1wbGluZ19yYXRlIC8gZnJlcTsKPiAgCj4g LQkJcGVyaW9kID0gY2FsbG9jKDEsIGZyYW1lcyAqIHNpemVvZihzaG9ydCkpOwo+ICsJCXBlcmlv ZCA9IGNhbGxvYygxLCBwZXJpb2RfbGVuICogc2l6ZW9mKGludDE2X3QpKTsKPiAgCj4gLQkJZm9y IChqID0gMDsgaiA8IGZyYW1lczsgaisrKSB7Cj4gKwkJZm9yIChqID0gMDsgaiA8IHBlcmlvZF9s ZW47IGorKykgewo+ICAJCQl2YWx1ZSA9IDIuMCAqIE1fUEkgKiBmcmVxIC8gc2lnbmFsLT5zYW1w bGluZ19yYXRlICogajsKPiAgCQkJdmFsdWUgPSBzaW4odmFsdWUpICogSU5UMTZfTUFYIC8gc2ln bmFsLT5mcmVxc19jb3VudDsKPiAgCj4gQEAgLTE1NCwyNiArMTYyLDM0IEBAIHZvaWQgYXVkaW9f c2lnbmFsX3N5bnRoZXNpemUoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsKQo+ICAJCX0KPiAg Cj4gIAkJc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2QgPSBwZXJpb2Q7Cj4gLQkJc2lnbmFsLT5mcmVx c1tpXS5mcmFtZXMgPSBmcmFtZXM7Cj4gKwkJc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2RfbGVuID0g cGVyaW9kX2xlbjsKPiAgCX0KPiAgfQo+ICAKPiAgLyoqCj4gLSAqIGF1ZGlvX3NpZ25hbF9zeW50 aGVzaXplOgo+ICsgKiBhdWRpb19zaWduYWxfZGVpbml0Ogo+ICsgKgo+ICsgKiBSZWxlYXNlIHRo ZSBzaWduYWwuCj4gKyAqLwo+ICt2b2lkIGF1ZGlvX3NpZ25hbF9kZWluaXQoc3RydWN0IGF1ZGlv X3NpZ25hbCAqc2lnbmFsKQoKSXMgdGhlIGNvZGluZyBzdHlsZSB0byB1c2UgZGVpbml0IG9yIGZp bmk/Cgo+ICt7Cj4gKwlhdWRpb19zaWduYWxfcmVzZXQoc2lnbmFsKTsKPiArCWZyZWUoc2lnbmFs KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGF1ZGlvX3NpZ25hbF9yZXNldDoKPiAgICogQHNpZ25h bDogVGhlIHRhcmdldCBzaWduYWwgc3RydWN0dXJlCj4gICAqCj4gICAqIEZyZWUgdGhlIHJlc291 cmNlcyBhbGxvY2F0ZWQgYnkgYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUgYW5kIHJlbW92ZQo+ICAg KiB0aGUgcHJldmlvdXNseS1hZGRlZCBmcmVxdWVuY2llcy4KPiAgICovCj4gLXZvaWQgYXVkaW9f c2lnbmFsX2NsZWFuKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCkKPiArdm9pZCBhdWRpb19z aWduYWxfcmVzZXQoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsKQo+ICB7Cj4gLQlpbnQgaTsK PiArCXNpemVfdCBpOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2NvdW50 OyBpKyspIHsKPiAtCQlpZiAoc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2QpCj4gLQkJCWZyZWUoc2ln bmFsLT5mcmVxc1tpXS5wZXJpb2QpOwo+IC0KPiAtCQltZW1zZXQoJnNpZ25hbC0+ZnJlcXNbaV0s IDAsIHNpemVvZihzdHJ1Y3QgYXVkaW9fc2lnbmFsX2ZyZXEpKTsKPiArCQlmcmVlKHNpZ25hbC0+ ZnJlcXNbaV0ucGVyaW9kKTsKPiAgCX0KPiAgCj4gIAlzaWduYWwtPmZyZXFzX2NvdW50ID0gMDsK PiBAQCAtMTgzLDQ0ICsxOTksNDUgQEAgdm9pZCBhdWRpb19zaWduYWxfY2xlYW4oc3RydWN0IGF1 ZGlvX3NpZ25hbCAqc2lnbmFsKQo+ICAgKiBhdWRpb19zaWduYWxfZmlsbDoKPiAgICogQHNpZ25h bDogVGhlIHRhcmdldCBzaWduYWwgc3RydWN0dXJlCj4gICAqIEBidWZmZXI6IFRoZSB0YXJnZXQg YnVmZmVyIHRvIGZpbGwKPiAtICogQGZyYW1lczogVGhlIG51bWJlciBvZiBmcmFtZXMgdG8gZmls bAo+ICsgKiBAc2FtcGxlczogVGhlIG51bWJlciBvZiBzYW1wbGVzIHRvIGZpbGwKPiAgICoKPiAt ICogRmlsbCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBmcmFtZXMgdG8gdGhlIHRhcmdldCBidWZm ZXIgd2l0aCB0aGUgYXVkaW8KPiArICogRmlsbCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBzYW1w bGVzIHRvIHRoZSB0YXJnZXQgYnVmZmVyIHdpdGggdGhlIGF1ZGlvCj4gICAqIHNpZ25hbCBkYXRh IChpbiBpbnRlcmxlYXZlZCBTMTZfTEUgZm9ybWF0KSwgYXQgdGhlIHJlcXVlc3RlZCBzYW1wbGlu ZyByYXRlCj4gICAqIGFuZCBudW1iZXIgb2YgY2hhbm5lbHMuCj4gICAqLwo+IC12b2lkIGF1ZGlv X3NpZ25hbF9maWxsKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50MTZfdCAqYnVmZmVy LCBpbnQgZnJhbWVzKQo+ICt2b2lkIGF1ZGlvX3NpZ25hbF9maWxsKHN0cnVjdCBhdWRpb19zaWdu YWwgKnNpZ25hbCwgaW50MTZfdCAqYnVmZmVyLAo+ICsJCSAgICAgICBzaXplX3QgYnVmZmVyX2xl bikKPiAgewo+ICAJaW50MTZfdCAqZGVzdGluYXRpb24sICpzb3VyY2U7Cj4gKwlzdHJ1Y3QgYXVk aW9fc2lnbmFsX2ZyZXEgKmZyZXE7Cj4gIAlpbnQgdG90YWw7Cj4gLQlpbnQgZnJlcV9mcmFtZXM7 Cj4gLQlpbnQgZnJlcV9vZmZzZXQ7Cj4gIAlpbnQgY291bnQ7Cj4gIAlpbnQgaSwgaiwgazsKPiAg Cj4gLQltZW1zZXQoYnVmZmVyLCAwLCBzaXplb2YoaW50MTZfdCkgKiBzaWduYWwtPmNoYW5uZWxz ICogZnJhbWVzKTsKPiArCW1lbXNldChidWZmZXIsIDAsIHNpemVvZihpbnQxNl90KSAqIHNpZ25h bC0+Y2hhbm5lbHMgKiBidWZmZXJfbGVuKTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgc2lnbmFs LT5mcmVxc19jb3VudDsgaSsrKSB7Cj4gKwkJZnJlcSA9ICZzaWduYWwtPmZyZXFzW2ldOwo+ICAJ CXRvdGFsID0gMDsKPiAgCj4gLQkJd2hpbGUgKHRvdGFsIDwgZnJhbWVzKSB7Cj4gLQkJCWZyZXFf ZnJhbWVzID0gc2lnbmFsLT5mcmVxc1tpXS5mcmFtZXM7Cj4gLQkJCWZyZXFfb2Zmc2V0ID0gc2ln bmFsLT5mcmVxc1tpXS5vZmZzZXQ7Cj4gKwkJaWd0X2Fzc2VydChmcmVxLT5wZXJpb2QpOwo+ICAK PiAtCQkJc291cmNlID0gc2lnbmFsLT5mcmVxc1tpXS5wZXJpb2QgKyBmcmVxX29mZnNldDsKPiAr CQl3aGlsZSAodG90YWwgPCBidWZmZXJfbGVuKSB7Cj4gKwkJCXNvdXJjZSA9IGZyZXEtPnBlcmlv ZCArIGZyZXEtPm9mZnNldDsKPiAgCQkJZGVzdGluYXRpb24gPSBidWZmZXIgKyB0b3RhbCAqIHNp Z25hbC0+Y2hhbm5lbHM7Cj4gIAo+IC0JCQljb3VudCA9IGZyZXFfZnJhbWVzIC0gZnJlcV9vZmZz ZXQ7Cj4gLQkJCWlmIChjb3VudCA+IChmcmFtZXMgLSB0b3RhbCkpCj4gLQkJCQljb3VudCA9IGZy YW1lcyAtIHRvdGFsOwo+ICsJCQljb3VudCA9IGZyZXEtPnBlcmlvZF9sZW4gLSBmcmVxLT5vZmZz ZXQ7Cj4gKwkJCWlmIChjb3VudCA+IGJ1ZmZlcl9sZW4gLSB0b3RhbCkKPiArCQkJCWNvdW50ID0g YnVmZmVyX2xlbiAtIHRvdGFsOwo+ICAKPiAtCQkJZnJlcV9vZmZzZXQgKz0gY291bnQ7Cj4gLQkJ CWZyZXFfb2Zmc2V0ICU9IGZyZXFfZnJhbWVzOwo+IC0KPiAtCQkJc2lnbmFsLT5mcmVxc1tpXS5v ZmZzZXQgPSBmcmVxX29mZnNldDsKPiArCQkJZnJlcS0+b2Zmc2V0ICs9IGNvdW50Owo+ICsJCQlm cmVxLT5vZmZzZXQgJT0gZnJlcS0+cGVyaW9kX2xlbjsKPiAgCj4gIAkJCWZvciAoaiA9IDA7IGog PCBjb3VudDsgaisrKSB7Cj4gIAkJCQlmb3IgKGsgPSAwOyBrIDwgc2lnbmFsLT5jaGFubmVsczsg aysrKSB7Cj4gKwkJCQkJaWYgKGZyZXEtPmNoYW5uZWwgPj0gMCAmJgo+ICsJCQkJCSAgICBmcmVx LT5jaGFubmVsICE9IGspCj4gKwkJCQkJCWNvbnRpbnVlOwo+ICAJCQkJCWRlc3RpbmF0aW9uW2og KiBzaWduYWwtPmNoYW5uZWxzICsga10gKz0gc291cmNlW2pdOwo+ICAJCQkJfQo+ICAJCQl9Cj4g QEAgLTIzNywxMSArMjU0LDExIEBAIHZvaWQgYXVkaW9fc2lnbmFsX2ZpbGwoc3RydWN0IGF1ZGlv X3NpZ25hbCAqc2lnbmFsLCBpbnQxNl90ICpidWZmZXIsIGludCBmcmFtZXMpCj4gICAqIHNhbXBs aW5nX3JhdGUgaXMgZ2l2ZW4gaW4gSHouIGRhdGFfbGVuIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVu dHMgaW4gZGF0YS4KPiAgICovCj4gIGJvb2wgYXVkaW9fc2lnbmFsX2RldGVjdChzdHJ1Y3QgYXVk aW9fc2lnbmFsICpzaWduYWwsIGludCBzYW1wbGluZ19yYXRlLAo+IC0JCQkgZG91YmxlICpkYXRh LCBzaXplX3QgZGF0YV9sZW4pCj4gKwkJCSBpbnQgY2hhbm5lbCwgZG91YmxlICpkYXRhLCBzaXpl X3QgZGF0YV9sZW4pCj4gIHsKPiAgCXNpemVfdCBiaW5fcG93ZXJfbGVuID0gZGF0YV9sZW4gLyAy ICsgMTsKPiAgCWRvdWJsZSBiaW5fcG93ZXJbYmluX3Bvd2VyX2xlbl07Cj4gLQlib29sIGRldGVj dGVkW3NpZ25hbC0+ZnJlcXNfY291bnRdOwo+ICsJYm9vbCBkZXRlY3RlZFtGUkVRU19NQVhdOwo+ ICAJaW50IHJldCwgZnJlcV9hY2N1cmFjeSwgZnJlcSwgbG9jYWxfbWF4X2ZyZXE7Cj4gIAlkb3Vi bGUgbWF4LCBsb2NhbF9tYXgsIHRocmVzaG9sZDsKPiAgCXNpemVfdCBpLCBqOwo+IEBAIC0zMDgs NiArMzI1LDEwIEBAIGJvb2wgYXVkaW9fc2lnbmFsX2RldGVjdChzdHJ1Y3QgYXVkaW9fc2lnbmFs ICpzaWduYWwsIGludCBzYW1wbGluZ19yYXRlLAo+ICAJCSAqIGludmFsaWQuICovCj4gIAkJaWYg KGJpbl9wb3dlcltpXSA8IHRocmVzaG9sZCkgewo+ICAJCQlmb3IgKGogPSAwOyBqIDwgc2lnbmFs LT5mcmVxc19jb3VudDsgaisrKSB7Cj4gKwkJCQlpZiAoc2lnbmFsLT5mcmVxc1tqXS5jaGFubmVs ID49IDAgJiYKPiArCQkJCSAgICBzaWduYWwtPmZyZXFzW2pdLmNoYW5uZWwgIT0gY2hhbm5lbCkK PiArCQkJCQljb250aW51ZTsKPiArCj4gIAkJCQlpZiAoc2lnbmFsLT5mcmVxc1tqXS5mcmVxID4K PiAgCQkJCSAgICBsb2NhbF9tYXhfZnJlcSAtIGZyZXFfYWNjdXJhY3kgJiYKPiAgCQkJCSAgICBz aWduYWwtPmZyZXFzW2pdLmZyZXEgPAo+IEBAIC0zNDAsNiArMzYxLDEwIEBAIGJvb2wgYXVkaW9f c2lnbmFsX2RldGVjdChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludCBzYW1wbGluZ19y YXRlLAo+ICAKPiAgCS8qIENoZWNrIHRoYXQgYWxsIGZyZXF1ZW5jaWVzIHdlIGdlbmVyYXRlZCBo YXZlIGJlZW4gZGV0ZWN0ZWQuICovCj4gIAlmb3IgKGkgPSAwOyBpIDwgc2lnbmFsLT5mcmVxc19j b3VudDsgaSsrKSB7Cj4gKwkJaWYgKHNpZ25hbC0+ZnJlcXNbaV0uY2hhbm5lbCA+PSAwICYmCj4g KwkJICAgIHNpZ25hbC0+ZnJlcXNbaV0uY2hhbm5lbCAhPSBjaGFubmVsKQo+ICsJCQljb250aW51 ZTsKPiArCj4gIAkJaWYgKCFkZXRlY3RlZFtpXSkgewo+ICAJCQlpZ3RfZGVidWcoIk1pc3Npbmcg ZnJlcXVlbmN5OiAlZFxuIiwKPiAgCQkJCSAgc2lnbmFsLT5mcmVxc1tpXS5mcmVxKTsKPiBkaWZm IC0tZ2l0IGEvbGliL2lndF9hdWRpby5oIGIvbGliL2lndF9hdWRpby5oCj4gaW5kZXggNGFhNDNl NjkuLmZlMjZiYjU3IDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3RfYXVkaW8uaAo+ICsrKyBiL2xpYi9p Z3RfYXVkaW8uaAo+IEBAIC0zNSwxMiArMzUsMTUgQEAKPiAgc3RydWN0IGF1ZGlvX3NpZ25hbDsK PiAgCj4gIHN0cnVjdCBhdWRpb19zaWduYWwgKmF1ZGlvX3NpZ25hbF9pbml0KGludCBjaGFubmVs cywgaW50IHNhbXBsaW5nX3JhdGUpOwo+IC1pbnQgYXVkaW9fc2lnbmFsX2FkZF9mcmVxdWVuY3ko c3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgZnJlcXVlbmN5KTsKPiArdm9pZCBhdWRp b19zaWduYWxfZGVpbml0KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCk7Cj4gK2ludCBhdWRp b19zaWduYWxfYWRkX2ZyZXF1ZW5jeShzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludCBm cmVxdWVuY3ksCj4gKwkJCSAgICAgICBpbnQgY2hhbm5lbCk7Cj4gIHZvaWQgYXVkaW9fc2lnbmFs X3N5bnRoZXNpemUoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsKTsKPiAtdm9pZCBhdWRpb19z aWduYWxfY2xlYW4oc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsKTsKPiAtdm9pZCBhdWRpb19z aWduYWxfZmlsbChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludDE2X3QgKmJ1ZmZlciwg aW50IGZyYW1lcyk7Cj4gK3ZvaWQgYXVkaW9fc2lnbmFsX3Jlc2V0KHN0cnVjdCBhdWRpb19zaWdu YWwgKnNpZ25hbCk7Cj4gK3ZvaWQgYXVkaW9fc2lnbmFsX2ZpbGwoc3RydWN0IGF1ZGlvX3NpZ25h bCAqc2lnbmFsLCBpbnQxNl90ICpidWZmZXIsCj4gKwkJICAgICAgIHNpemVfdCBidWZmZXJfbGVu KTsKPiAgYm9vbCBhdWRpb19zaWduYWxfZGV0ZWN0KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25h bCwgaW50IHNhbXBsaW5nX3JhdGUsCj4gLQkJCSBkb3VibGUgKmRhdGEsIHNpemVfdCBkYXRhX2xl bik7Cj4gKwkJCSBpbnQgY2hhbm5lbCwgZG91YmxlICpkYXRhLCBzaXplX3QgZGF0YV9sZW4pOwo+ ICBzaXplX3QgYXVkaW9fZXh0cmFjdF9jaGFubmVsX3MzMl9sZShkb3VibGUgKmRzdCwgc2l6ZV90 IGRzdF9jYXAsCj4gIAkJCQkgICAgaW50MzJfdCAqc3JjLCBzaXplX3Qgc3JjX2xlbiwKPiAgCQkJ CSAgICBpbnQgbl9jaGFubmVscywgaW50IGNoYW5uZWwpOwo+IGRpZmYgLS1naXQgYS90ZXN0cy9r bXNfY2hhbWVsaXVtLmMgYi90ZXN0cy9rbXNfY2hhbWVsaXVtLmMKPiBpbmRleCAwMTRhMjJiMy4u ZDMzNjYxMmYgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMva21zX2NoYW1lbGl1bS5jCj4gKysrIGIvdGVz dHMva21zX2NoYW1lbGl1bS5jCj4gQEAgLTc3NywxNiArNzc3LDE2IEBAIGRvX3Rlc3RfZGlzcGxh eV9hdWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKPiAgCQkg ICAgICBzdHJ1Y3QgYWxzYSAqYWxzYSwgaW50IHBsYXliYWNrX2NoYW5uZWxzLAo+ICAJCSAgICAg IGludCBwbGF5YmFja19yYXRlKQo+ICB7Cj4gLQlpbnQgcmV0LCBjYXB0dXJlX3JhdGUsIGNhcHR1 cmVfY2hhbm5lbHMsIG1zZWM7Cj4gKwlpbnQgcmV0LCBjYXB0dXJlX3JhdGUsIGNhcHR1cmVfY2hh bm5lbHMsIG1zZWMsIGZyZXE7Cj4gIAlzdHJ1Y3QgY2hhbWVsaXVtX2F1ZGlvX2ZpbGUgKmF1ZGlv X2ZpbGU7Cj4gIAlzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqc3RyZWFtOwo+ICAJZW51bSBjaGFt ZWxpdW1fc3RyZWFtX3JlYWx0aW1lX21vZGUgc3RyZWFtX21vZGU7Cj4gIAlzdHJ1Y3QgYXVkaW9f c2lnbmFsICpzaWduYWw7Cj4gIAlpbnQzMl90ICpyZWN2LCAqYnVmOwo+ICAJZG91YmxlICpjaGFu bmVsOwo+IC0Jc2l6ZV90IGksIHN0cmVhaywgcGFnZV9jb3VudDsKPiArCXNpemVfdCBpLCBqLCBz dHJlYWssIHBhZ2VfY291bnQ7Cj4gIAlzaXplX3QgcmVjdl9sZW4sIGJ1Zl9sZW4sIGJ1Zl9jYXAs IGJ1Zl9zaXplLCBjaGFubmVsX2xlbjsKPiAtCWJvb2wgb2s7Cj4gKwlib29sIG9rLCBzdWNjZXNz Owo+ICAJY2hhciBkdW1wX3N1ZmZpeFs2NF07Cj4gIAljaGFyICpkdW1wX3BhdGggPSBOVUxMOwo+ ICAJaW50IGR1bXBfZmQgPSAtMTsKPiBAQCAtNzk0LDEwICs3OTQsMTUgQEAgZG9fdGVzdF9kaXNw bGF5X2F1ZGlvKGRhdGFfdCAqZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAo+ICAJ c3RydWN0IGF1ZGlvX3N0YXRlIHN0YXRlID0ge307Cj4gIAo+ICAJaWYgKCFhbHNhX3Rlc3Rfb3V0 cHV0X2NvbmZpZ3VyYXRpb24oYWxzYSwgcGxheWJhY2tfY2hhbm5lbHMsCj4gLQkJCQkJICAgIHBs YXliYWNrX3JhdGUpKQo+ICsJCQkJCSAgICBwbGF5YmFja19yYXRlKSkgewo+ICsJCWlndF9kZWJ1 ZygiU2tpcHBpbmcgdGVzdCB3aXRoIHNhbXBsZSByYXRlICVkIGFuZCAlZCBjaGFubmVscyAiCj4g KwkJCSAgImJlY2F1c2Ugc2VsZWN0ZWQgb3V0cHV0IGRldmljZXMgZG9uJ3Qgc3VwcG9ydCB0aGlz ICIKPiArCQkJICAiY29uZmlndXJhdGlvblxuIiwgcGxheWJhY2tfcmF0ZSwgcGxheWJhY2tfY2hh bm5lbHMpOwo+ICAJCXJldHVybiBmYWxzZTsKPiArCX0KPiAgCj4gLQlpZ3RfZGVidWcoIlRlc3Rp bmcgd2l0aCBwbGF5YmFjayBzYW1wbGluZyByYXRlICVkXG4iLCBwbGF5YmFja19yYXRlKTsKPiAr CWlndF9kZWJ1ZygiVGVzdGluZyB3aXRoIHBsYXliYWNrIHNhbXBsaW5nIHJhdGUgJWQgYW5kICVk IGNoYW5uZWxzXG4iLAo+ICsJCSAgcGxheWJhY2tfcmF0ZSwgcGxheWJhY2tfY2hhbm5lbHMpOwo+ ICAJYWxzYV9jb25maWd1cmVfb3V0cHV0KGFsc2EsIHBsYXliYWNrX2NoYW5uZWxzLCBwbGF5YmFj a19yYXRlKTsKPiAgCj4gIAljaGFtZWxpdW1fc3RhcnRfY2FwdHVyaW5nX2F1ZGlvKGRhdGEtPmNo YW1lbGl1bSwgcG9ydCwgZmFsc2UpOwo+IEBAIC04MjUsOCArODMwLDEyIEBAIGRvX3Rlc3RfZGlz cGxheV9hdWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKPiAg CXNpZ25hbCA9IGF1ZGlvX3NpZ25hbF9pbml0KHBsYXliYWNrX2NoYW5uZWxzLCBwbGF5YmFja19y YXRlKTsKPiAgCWlndF9hc3NlcnQoc2lnbmFsKTsKPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgdGVz dF9mcmVxdWVuY2llc19jb3VudDsgaSsrKQo+IC0JCWF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5 KHNpZ25hbCwgdGVzdF9mcmVxdWVuY2llc1tpXSk7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgdGVzdF9m cmVxdWVuY2llc19jb3VudDsgaSsrKSB7Cj4gKwkJZm9yIChqID0gMDsgaiA8IHBsYXliYWNrX2No YW5uZWxzOyBqKyspIHsKPiArCQkJZnJlcSA9IHRlc3RfZnJlcXVlbmNpZXNbaV07Cj4gKwkJCWF1 ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHNpZ25hbCwgZnJlcSwgaik7Cj4gKwkJfQo+ICsJfQo+ ICAJYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUoc2lnbmFsKTsKPiAgCj4gIAlzdGF0ZS5zaWduYWwg PSBzaWduYWw7Cj4gQEAgLTg1MSwxMCArODYwLDExIEBAIGRvX3Rlc3RfZGlzcGxheV9hdWRpbyhk YXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKPiAgCXJlY3YgPSBOVUxM Owo+ICAJcmVjdl9sZW4gPSAwOwo+ICAKPiArCXN1Y2Nlc3MgPSBmYWxzZTsKPiAgCXN0cmVhayA9 IDA7Cj4gIAltc2VjID0gMDsKPiAgCWkgPSAwOwo+IC0Jd2hpbGUgKHN0cmVhayA8IE1JTl9TVFJF QUsgJiYgbXNlYyA8IEFVRElPX1RJTUVPVVQpIHsKPiArCXdoaWxlICghc3VjY2VzcyAmJiBtc2Vj IDwgQVVESU9fVElNRU9VVCkgewo+ICAJCW9rID0gY2hhbWVsaXVtX3N0cmVhbV9yZWNlaXZlX3Jl YWx0aW1lX2F1ZGlvKHN0cmVhbSwKPiAgCQkJCQkJCSAgICAgJnBhZ2VfY291bnQsCj4gIAkJCQkJ CQkgICAgICZyZWN2LCAmcmVjdl9sZW4pOwo+IEBAIC04NzIsMjEgKzg4MiwyNyBAQCBkb190ZXN0 X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQs Cj4gIAkJCWlndF9hc3NlcnQod3JpdGUoZHVtcF9mZCwgYnVmLCBidWZfc2l6ZSkgPT0gYnVmX3Np emUpOwo+ICAJCX0KPiAgCj4gLQkJLyogVE9ETzogY2hlY2sgb3RoZXIgY2hhbm5lbHMgdG9vLCBu b3QganVzdCB0aGUgZmlyc3Qgb25lICovCj4gLQkJYXVkaW9fZXh0cmFjdF9jaGFubmVsX3MzMl9s ZShjaGFubmVsLCBjaGFubmVsX2xlbiwgYnVmLCBidWZfbGVuLAo+IC0JCQkJCSAgICAgY2FwdHVy ZV9jaGFubmVscywgMCk7Cj4gLQo+ICAJCW1zZWMgPSBpICogY2hhbm5lbF9sZW4gLyAoZG91Ymxl KSBjYXB0dXJlX3JhdGUgKiAxMDAwOwo+ICAJCWlndF9kZWJ1ZygiRGV0ZWN0aW5nIGF1ZGlvIHNp Z25hbCwgdD0lZCBtc2VjXG4iLCBtc2VjKTsKPiAgCj4gLQkJaWYgKGF1ZGlvX3NpZ25hbF9kZXRl Y3Qoc2lnbmFsLCBjYXB0dXJlX3JhdGUsIGNoYW5uZWwsCj4gLQkJCQkJY2hhbm5lbF9sZW4pKQo+ IC0JCQlzdHJlYWsrKzsKPiAtCQllbHNlCj4gLQkJCXN0cmVhayA9IDA7Cj4gKwkJZm9yIChqID0g MDsgaiA8IHBsYXliYWNrX2NoYW5uZWxzOyBqKyspIHsKPiArCQkJaWd0X2RlYnVnKCJQcm9jZXNz aW5nIGNoYW5uZWwgJXp1XG4iLCBqKTsKPiArCj4gKwkJCWF1ZGlvX2V4dHJhY3RfY2hhbm5lbF9z MzJfbGUoY2hhbm5lbCwgY2hhbm5lbF9sZW4sCj4gKwkJCQkJCSAgICAgYnVmLCBidWZfbGVuLAo+ ICsJCQkJCQkgICAgIGNhcHR1cmVfY2hhbm5lbHMsIGopOwo+ICsKPiArCQkJaWYgKGF1ZGlvX3Np Z25hbF9kZXRlY3Qoc2lnbmFsLCBjYXB0dXJlX3JhdGUsIGosCj4gKwkJCQkJCWNoYW5uZWwsIGNo YW5uZWxfbGVuKSkKPiArCQkJCXN0cmVhaysrOwo+ICsJCQllbHNlCj4gKwkJCQlzdHJlYWsgPSAw Owo+ICsJCX0KPiAgCj4gIAkJYnVmX2xlbiA9IDA7Cj4gIAkJaSsrOwo+ICsKPiArCQlzdWNjZXNz ID0gc3RyZWFrID09IE1JTl9TVFJFQUsgKiBwbGF5YmFja19jaGFubmVsczsKPiAgCX0KPiAgCj4g IAlpZ3RfZGVidWcoIlN0b3BwaW5nIGF1ZGlvIHBsYXliYWNrXG4iKTsKPiBAQCAtOTIxLDEyICs5 MzcsMTAgQEAgZG9fdGVzdF9kaXNwbGF5X2F1ZGlvKGRhdGFfdCAqZGF0YSwgc3RydWN0IGNoYW1l bGl1bV9wb3J0ICpwb3J0LAo+ICAJCWNoYW1lbGl1bV9kZXN0cm95X2F1ZGlvX2ZpbGUoYXVkaW9f ZmlsZSk7Cj4gIAl9Cj4gIAo+IC0JYXVkaW9fc2lnbmFsX2NsZWFuKHNpZ25hbCk7Cj4gLQlmcmVl KHNpZ25hbCk7Cj4gLQo+ICsJYXVkaW9fc2lnbmFsX2RlaW5pdChzaWduYWwpOwo+ICAJY2hhbWVs aXVtX3N0cmVhbV9kZWluaXQoc3RyZWFtKTsKPiAgCj4gLQlpZ3RfYXNzZXJ0KHN0cmVhayA9PSBN SU5fU1RSRUFLKTsKPiArCWlndF9hc3NlcnQoc3VjY2Vzcyk7Cj4gIAlyZXR1cm4gdHJ1ZTsKPiAg fQo+ICAKCldpdGggdGhlIGNvZGluZyBzdHlsZSBpc3N1ZXMgZml4ZWQ6CgpSZXZpZXdlZC1ieTog TWFydGluIFBlcmVzIDxtYXJ0aW4ucGVyZXNAbGludXguaW50ZWwuY29tPgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=