From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: Re: [PATCH i-g-t v2 12/14] tests/kms_color: Rework tests slightly to work better with new atomic api Date: Fri, 20 Oct 2017 10:14:10 +0300 Message-ID: <1508483650.3274.136.camel@intel.com> References: <20171012115435.18880-1-maarten.lankhorst@linux.intel.com> <20171012115435.18880-13-maarten.lankhorst@linux.intel.com> Reply-To: mika.kahola@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6024E6EBD9 for ; Fri, 20 Oct 2017 07:21:04 +0000 (UTC) In-Reply-To: <20171012115435.18880-13-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmV2aWV3ZWQtYnk6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+CgpPbiBUaHUs IDIwMTctMTAtMTIgYXQgMTM6NTQgKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+IGln dF9waXBlX2dldF9wcm9wZXJ0eSBpcyBhYm91dCB0byBiZSByZW1vdmVkLCBzbyB1c2UKPiBpZ3Rf cGlwZV9vYmpfZ2V0X3Byb3AgaW5zdGVhZC4gVGhpcyByZXF1aXJlcyBhZGRpbmcgMiBtb3JlIHBy b3BlcnRpZXMKPiB0byB0aGUgY3J0YyBwcm9wZXJ0eSBsaXN0LiBBbHNvIGdldCByaWQgb2YgdGhl IEJyb2FkY2FzdCBSR0IgY2FsbCwKPiB0aGlzIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBpZ3Rfa21z Lgo+IAo+IENoYW5nZSBvcmRlciBmb3IgREVHQU1NQV9MVVQgYW5kIEdBTU1BX0xVVCBhcm91bmQs IGVsc2UgdGhpcyB0ZXN0Cj4gd2lsbAo+IGZhaWwgaWYgbGVnYWN5IGdhbW1hIGlzIHNldC4gSW4g dGhlIGxlZ2FjeSBwYXRoLCB0aGlzIHdpbGwgdXBkYXRlCj4gR0FNTUFfTFVUIHRvIHRoZSBuZXcg c2l6ZSBiZWZvcmUgREVHQU1NQV9MVVQgaXMgc2V0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0 ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4g wqBsaWIvaWd0X2ttcy5jwqDCoMKgwqDCoHzCoMKgwqA0ICstCj4gwqBsaWIvaWd0X2ttcy5owqDC oMKgwqDCoHzCoMKgwqA0ICstCj4gwqB0ZXN0cy9rbXNfY29sb3IuYyB8IDIxNyArKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tLS0tLS0KPiDCoDMgZmls ZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMTQyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwo+IGluZGV4IDljZjRiNjhmNDE5 MS4uY2IyYmMyYjhkZjk4IDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmMKPiArKysgYi9saWIv aWd0X2ttcy5jCj4gQEAgLTE3Nyw4ICsxNzcsMTAgQEAgY29uc3QgY2hhcgo+ICppZ3RfcGxhbmVf cHJvcF9uYW1lc1tJR1RfTlVNX1BMQU5FX1BST1BTXSA9IHsKPiDCoGNvbnN0IGNoYXIgKmlndF9j cnRjX3Byb3BfbmFtZXNbSUdUX05VTV9DUlRDX1BST1BTXSA9IHsKPiDCoAkiYmFja2dyb3VuZF9j b2xvciIsCj4gwqAJIkNUTSIsCj4gLQkiREVHQU1NQV9MVVQiLAo+IMKgCSJHQU1NQV9MVVQiLAo+ ICsJIkdBTU1BX0xVVF9TSVpFIiwKPiArCSJERUdBTU1BX0xVVCIsCj4gKwkiREVHQU1NQV9MVVRf U0laRSIsCj4gwqAJIk1PREVfSUQiLAo+IMKgCSJBQ1RJVkUiLAo+IMKgCSJPVVRfRkVOQ0VfUFRS Igo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2lndF9rbXMuaAo+IGluZGV4IGU3 MjJmMGJlMzc1Ny4uMjAwZjM1ZTYzMzA4IDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmgKPiAr KysgYi9saWIvaWd0X2ttcy5oCj4gQEAgLTk1LDggKzk1LDEwIEBAIHZvaWQga21zdGVzdF9yZXN0 b3JlX3Z0X21vZGUodm9pZCk7Cj4gwqBlbnVtIGlndF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVzIHsK PiDCoMKgwqDCoMKgwqDCoMKgSUdUX0NSVENfQkFDS0dST1VORCA9IDAsCj4gwqDCoMKgwqDCoMKg wqDCoElHVF9DUlRDX0NUTSwKPiAtwqDCoMKgwqDCoMKgwqBJR1RfQ1JUQ19ERUdBTU1BX0xVVCwK PiDCoMKgwqDCoMKgwqDCoMKgSUdUX0NSVENfR0FNTUFfTFVULAo+ICvCoMKgwqDCoMKgwqDCoElH VF9DUlRDX0dBTU1BX0xVVF9TSVpFLAo+ICvCoMKgwqDCoMKgwqDCoElHVF9DUlRDX0RFR0FNTUFf TFVULAo+ICvCoMKgwqDCoMKgwqDCoElHVF9DUlRDX0RFR0FNTUFfTFVUX1NJWkUsCj4gwqDCoMKg wqDCoMKgwqDCoElHVF9DUlRDX01PREVfSUQsCj4gwqDCoMKgwqDCoMKgwqDCoElHVF9DUlRDX0FD VElWRSwKPiDCoMKgwqDCoMKgwqDCoMKgSUdUX0NSVENfT1VUX0ZFTkNFX1BUUiwKPiBkaWZmIC0t Z2l0IGEvdGVzdHMva21zX2NvbG9yLmMgYi90ZXN0cy9rbXNfY29sb3IuYwo+IGluZGV4IGUzMGU2 YmY0ZTQwOS4uZGNkYTEyZGUzYTM5IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2ttc19jb2xvci5jCj4g KysrIGIvdGVzdHMva21zX2NvbG9yLmMKPiBAQCAtMjMxLDQxICsyMzEsNiBAQCBzdGF0aWMgdm9p ZCBzZXRfY3RtKGlndF9waXBlX3QgKnBpcGUsIGNvbnN0Cj4gZG91YmxlICpjb2VmZmljaWVudHMp Cj4gwqAjZGVmaW5lIGRpc2FibGVfZ2FtbWEocGlwZSkgaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJv cF9ibG9iKHBpcGUsCj4gSUdUX0NSVENfR0FNTUFfTFVULCBOVUxMLCAwKQo+IMKgI2RlZmluZSBk aXNhYmxlX2N0bShwaXBlKSBpZ3RfcGlwZV9vYmpfcmVwbGFjZV9wcm9wX2Jsb2IocGlwZSwKPiBJ R1RfQ1JUQ19DVE0sIE5VTEwsIDApCj4gwqAKPiAtc3RhdGljIHZvaWQgb3V0cHV0X3NldF9wcm9w ZXJ0eV9lbnVtKGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+IC0JCQkJwqDCoMKgwqDCoGNvbnN0IGNo YXIgKnByb3BlcnR5LAo+IC0JCQkJwqDCoMKgwqDCoGNvbnN0IGNoYXIgKmVudW1fdmFsdWUpCj4g LXsKPiAtCWludCBpOwo+IC0JaW50MzJfdCB2YWx1ZSA9IC0xOwo+IC0JdWludDMyX3QgcHJvcF9p ZDsKPiAtCWRybU1vZGVQcm9wZXJ0eVB0ciBwcm9wOwo+IC0KPiAtCWlmICgha21zdGVzdF9nZXRf cHJvcGVydHkob3V0cHV0LT5kaXNwbGF5LT5kcm1fZmQsCj4gLQkJCQnCoMKgb3V0cHV0LT5pZCwK PiAtCQkJCcKgwqBEUk1fTU9ERV9PQkpFQ1RfQ09OTkVDVE9SLAo+IC0JCQkJwqDCoHByb3BlcnR5 LAo+IC0JCQkJwqDCoCZwcm9wX2lkLCBOVUxMLCAmcHJvcCkpCj4gLQkJcmV0dXJuOwo+IC0KPiAt CWlndF9hc3NlcnQocHJvcC0+ZmxhZ3MgJiBEUk1fTU9ERV9QUk9QX0VOVU0pOwo+IC0KPiAtCWZv ciAoaSA9IDA7IGkgPCBwcm9wLT5jb3VudF9lbnVtczsgaSsrKSB7Cj4gLQkJaWYgKCFzdHJjbXAo cHJvcC0+ZW51bXNbaV0ubmFtZSwgZW51bV92YWx1ZSkpIHsKPiAtCQkJdmFsdWUgPSBwcm9wLT5l bnVtc1tpXS52YWx1ZTsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0JfQo+IC0JaWd0X2Fzc2VydF9u ZXEodmFsdWUsIC0xKTsKPiAtCj4gLQlpZ3RfYXNzZXJ0X2VxKGRybU1vZGVPYmplY3RTZXRQcm9w ZXJ0eShvdXRwdXQtPmRpc3BsYXktCj4gPmRybV9mZCwKPiAtCQkJCQnCoMKgwqDCoMKgwqDCoG91 dHB1dC0+aWQsCj4gLQkJCQkJwqDCoMKgwqDCoMKgwqBEUk1fTU9ERV9PQkpFQ1RfQ09OTkUKPiBD VE9SLAo+IC0JCQkJCcKgwqDCoMKgwqDCoMKgcHJvcF9pZCwgdmFsdWUpLCAwKTsKPiAtCj4gLQo+ IC0JZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKPiAtfQo+IC0KPiDCoC8qCj4gwqAgKiBEcmF3 IDMgZ3JhZGllbnQgcmVjdGFuZ2xlcyBpbiByZWQsIGdyZWVuIGFuZCBibHVlLCB3aXRoIGEgbWF4 ZWQKPiBvdXQKPiDCoCAqIGRlZ2FtbWEgTFVUIGFuZCB2ZXJpZnkgd2UgaGF2ZSB0aGUgc2FtZSBD UkMgYXMgZHJhd2luZyBzb2xpZAo+IGNvbG9yCj4gQEAgLTUzMSwyMyArNDk2LDE2IEBAIHN0YXRp YyB2b2lkIHRlc3RfcGlwZV9sZWdhY3lfZ2FtbWEoZGF0YV90Cj4gKmRhdGEsCj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBkcm1Nb2RlUHJvcGVydHlCbG9iUHRyCj4gLWdldF9ibG9iKGRhdGFfdCAqZGF0 YSwgaWd0X3BpcGVfdCAqcGlwZSwgY29uc3QgY2hhciAqcHJvcGVydHlfbmFtZSkKPiArZ2V0X2Js b2IoZGF0YV90ICpkYXRhLCBpZ3RfcGlwZV90ICpwaXBlLCBlbnVtCj4gaWd0X2F0b21pY19jcnRj X3Byb3BlcnRpZXMgcHJvcCkKPiDCoHsKPiDCoAl1aW50NjRfdCBwcm9wX3ZhbHVlOwo+IC0JZHJt TW9kZVByb3BlcnR5UHRyIHByb3A7Cj4gLQlkcm1Nb2RlUHJvcGVydHlCbG9iUHRyIGJsb2I7Cj4g wqAKPiAtCWlndF9hc3NlcnQoaWd0X3BpcGVfZ2V0X3Byb3BlcnR5KHBpcGUsIHByb3BlcnR5X25h bWUsCj4gLQkJCQkJwqBOVUxMLCAmcHJvcF92YWx1ZSwgJnByb3ApKTsKPiArCXByb3BfdmFsdWUg PSBpZ3RfcGlwZV9vYmpfZ2V0X3Byb3AocGlwZSwgcHJvcCk7Cj4gwqAKPiDCoAlpZiAocHJvcF92 YWx1ZSA9PSAwKQo+IMKgCQlyZXR1cm4gTlVMTDsKPiDCoAo+IC0JaWd0X2Fzc2VydChwcm9wLT5m bGFncyAmIERSTV9NT0RFX1BST1BfQkxPQik7Cj4gLQlibG9iID0gZHJtTW9kZUdldFByb3BlcnR5 QmxvYihkYXRhLT5kcm1fZmQsIHByb3BfdmFsdWUpOwo+IC0JZHJtTW9kZUZyZWVQcm9wZXJ0eShw cm9wKTsKPiAtCj4gLQlyZXR1cm4gYmxvYjsKPiArCXJldHVybiBkcm1Nb2RlR2V0UHJvcGVydHlC bG9iKGRhdGEtPmRybV9mZCwgcHJvcF92YWx1ZSk7Cj4gwqB9Cj4gwqAKPiDCoC8qCj4gQEAgLTU5 MCwxOCArNTQ4LDE4IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGlwZV9sZWdhY3lfZ2FtbWFfcmVzZXQo ZGF0YV90Cj4gKmRhdGEsCj4gwqAJCXNldF9nYW1tYShkYXRhLCBwcmltYXJ5LT5waXBlLCBnYW1t YV96ZXJvKTsKPiDCoAkJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsKPiDCoAo+ IC0JCWJsb2IgPSBnZXRfYmxvYihkYXRhLCBwcmltYXJ5LT5waXBlLCAiREVHQU1NQV9MVVQiKTsK PiArCQlibG9iID0gZ2V0X2Jsb2IoZGF0YSwgcHJpbWFyeS0+cGlwZSwKPiBJR1RfQ1JUQ19ERUdB TU1BX0xVVCk7Cj4gwqAJCWlndF9hc3NlcnQoYmxvYiAmJgo+IMKgCQkJwqDCoMKgYmxvYi0+bGVu Z3RoID09IChzaXplb2Yoc3RydWN0Cj4gX2RybV9jb2xvcl9sdXQpICoKPiDCoAkJCQkJwqDCoMKg wqBkYXRhLQo+ID5kZWdhbW1hX2x1dF9zaXplKSk7Cj4gwqAJCWRybU1vZGVGcmVlUHJvcGVydHlC bG9iKGJsb2IpOwo+IMKgCj4gLQkJYmxvYiA9IGdldF9ibG9iKGRhdGEsIHByaW1hcnktPnBpcGUs ICJDVE0iKTsKPiArCQlibG9iID0gZ2V0X2Jsb2IoZGF0YSwgcHJpbWFyeS0+cGlwZSwgSUdUX0NS VENfQ1RNKTsKPiDCoAkJaWd0X2Fzc2VydChibG9iICYmCj4gwqAJCQnCoMKgwqBibG9iLT5sZW5n dGggPT0gc2l6ZW9mKHN0cnVjdAo+IF9kcm1fY29sb3JfY3RtKSk7Cj4gwqAJCWRybU1vZGVGcmVl UHJvcGVydHlCbG9iKGJsb2IpOwo+IMKgCj4gLQkJYmxvYiA9IGdldF9ibG9iKGRhdGEsIHByaW1h cnktPnBpcGUsICJHQU1NQV9MVVQiKTsKPiArCQlibG9iID0gZ2V0X2Jsb2IoZGF0YSwgcHJpbWFy eS0+cGlwZSwKPiBJR1RfQ1JUQ19HQU1NQV9MVVQpOwo+IMKgCQlpZ3RfYXNzZXJ0KGJsb2IgJiYK PiDCoAkJCcKgwqDCoGJsb2ItPmxlbmd0aCA9PSAoc2l6ZW9mKHN0cnVjdAo+IF9kcm1fY29sb3Jf bHV0KSAqCj4gwqAJCQkJCcKgwqDCoMKgZGF0YS0+Z2FtbWFfbHV0X3NpemUpKTsKPiBAQCAtNjM0 LDEwICs1OTIsMTAgQEAgc3RhdGljIHZvaWQgdGVzdF9waXBlX2xlZ2FjeV9nYW1tYV9yZXNldChk YXRhX3QKPiAqZGF0YSwKPiDCoAkJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsK PiDCoAo+IMKgCQlpZ3RfYXNzZXJ0KGdldF9ibG9iKGRhdGEsIHByaW1hcnktPnBpcGUsCj4gLQkJ CQnCoMKgwqDCoCJERUdBTU1BX0xVVCIpID09IE5VTEwpOwo+IC0JCWlndF9hc3NlcnQoZ2V0X2Js b2IoZGF0YSwgcHJpbWFyeS0+cGlwZSwgIkNUTSIpID09Cj4gTlVMTCk7Cj4gKwkJCQnCoMKgwqDC oElHVF9DUlRDX0RFR0FNTUFfTFVUKSA9PSBOVUxMKTsKPiArCQlpZ3RfYXNzZXJ0KGdldF9ibG9i KGRhdGEsIHByaW1hcnktPnBpcGUsCj4gSUdUX0NSVENfQ1RNKSA9PSBOVUxMKTsKPiDCoAo+IC0J CWJsb2IgPSBnZXRfYmxvYihkYXRhLCBwcmltYXJ5LT5waXBlLCAiR0FNTUFfTFVUIik7Cj4gKwkJ YmxvYiA9IGdldF9ibG9iKGRhdGEsIHByaW1hcnktPnBpcGUsCj4gSUdUX0NSVENfR0FNTUFfTFVU KTsKPiDCoAkJaWd0X2Fzc2VydChibG9iICYmCj4gwqAJCQnCoMKgwqBibG9iLT5sZW5ndGggPT0g KHNpemVvZihzdHJ1Y3QKPiBfZHJtX2NvbG9yX2x1dCkgKgo+IMKgCQkJCQnCoMKgwqDCoGxlZ2Fj eV9sdXRfc2l6ZSkpOwo+IEBAIC03NzcsNiArNzM1LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9waXBl X2xpbWl0ZWRfcmFuZ2VfY3RtKGRhdGFfdAo+ICpkYXRhLAo+IMKgCQkJMC4wLCAwLjAsIDEuMCB9 Owo+IMKgCWRvdWJsZSAqZGVnYW1tYV9saW5lYXIsICpnYW1tYV9saW5lYXI7Cj4gwqAJaWd0X291 dHB1dF90ICpvdXRwdXQ7Cj4gKwlib29sIGhhc19icm9hZGNhc3RfcmdiX291dHB1dCA9IGZhbHNl Owo+IMKgCj4gwqAJZGVnYW1tYV9saW5lYXIgPSBnZW5lcmF0ZV90YWJsZShkYXRhLT5kZWdhbW1h X2x1dF9zaXplLAo+IDEuMCk7Cj4gwqAJZ2FtbWFfbGluZWFyID0gZ2VuZXJhdGVfdGFibGUoZGF0 YS0+Z2FtbWFfbHV0X3NpemUsIDEuMCk7Cj4gQEAgLTc4Nyw2ICs3NDYsMTEgQEAgc3RhdGljIHZv aWQgdGVzdF9waXBlX2xpbWl0ZWRfcmFuZ2VfY3RtKGRhdGFfdAo+ICpkYXRhLAo+IMKgCQlpZ3Rf Y3JjX3QgY3JjX2Z1bGwsIGNyY19saW1pdGVkOwo+IMKgCQlpbnQgZmJfaWQsIGZiX21vZGVzZXRf aWQ7Cj4gwqAKPiArCQlpZiAoIWlndF9vdXRwdXRfaGFzX3Byb3Aob3V0cHV0LAo+IElHVF9DT05O RUNUT1JfQlJPQURDQVNUX1JHQikpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQloYXNfYnJvYWRj YXN0X3JnYl9vdXRwdXQgPSB0cnVlOwo+ICsKPiDCoAkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRw dXQsIHByaW1hcnktPnBpcGUtPnBpcGUpOwo+IMKgCQltb2RlID0gaWd0X291dHB1dF9nZXRfbW9k ZShvdXRwdXQpOwo+IMKgCj4gQEAgLTgxMiw3ICs3NzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3Bp cGVfbGltaXRlZF9yYW5nZV9jdG0oZGF0YV90Cj4gKmRhdGEsCj4gwqAJCXNldF9nYW1tYShkYXRh LCBwcmltYXJ5LT5waXBlLCBnYW1tYV9saW5lYXIpOwo+IMKgCQlzZXRfY3RtKHByaW1hcnktPnBp cGUsIGN0bSk7Cj4gwqAKPiAtCQlvdXRwdXRfc2V0X3Byb3BlcnR5X2VudW0ob3V0cHV0LCAiQnJv YWRjYXN0IFJHQiIsCj4gIkZ1bGwiKTsKPiArCQlpZ3Rfb3V0cHV0X3NldF9wcm9wX3ZhbHVlKG91 dHB1dCwKPiBJR1RfQ09OTkVDVE9SX0JST0FEQ0FTVF9SR0IsIEJST0FEQ0FTVF9SR0JfRlVMTCk7 Cj4gwqAJCXBhaW50X3JlY3RhbmdsZXMoZGF0YSwgbW9kZSwgcmVkX2dyZWVuX2JsdWVfbGltaXRl ZCwKPiAmZmIpOwo+IMKgCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZmYik7Cj4gwqAJCWln dF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7Cj4gQEAgLTgyMCwzMSArNzg0LDM0IEBA IHN0YXRpYyB2b2lkIHRlc3RfcGlwZV9saW1pdGVkX3JhbmdlX2N0bShkYXRhX3QKPiAqZGF0YSwK PiDCoAkJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjX2Z1bGwp Owo+IMKgCj4gwqAJCS8qIFNldCB0aGUgb3V0cHV0IGludG8gbGltaXRlZCByYW5nZS4gKi8KPiAt CQlvdXRwdXRfc2V0X3Byb3BlcnR5X2VudW0ob3V0cHV0LCAiQnJvYWRjYXN0IFJHQiIsCj4gIkxp bWl0ZWQgMTY6MjM1Iik7Cj4gKwkJaWd0X291dHB1dF9zZXRfcHJvcF92YWx1ZShvdXRwdXQsCj4g SUdUX0NPTk5FQ1RPUl9CUk9BRENBU1RfUkdCLCBCUk9BRENBU1RfUkdCXzE2XzIzNSk7Cj4gwqAJ CXBhaW50X3JlY3RhbmdsZXMoZGF0YSwgbW9kZSwgcmVkX2dyZWVuX2JsdWVfZnVsbCwKPiAmZmIp Owo+IMKgCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZmYik7Cj4gwqAJCWlndF9kaXNwbGF5 X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7Cj4gwqAJCWlndF93YWl0X2Zvcl92YmxhbmsoZGF0YS0+ ZHJtX2ZkLCBwcmltYXJ5LT5waXBlLQo+ID5waXBlKTsKPiDCoAkJaWd0X3BpcGVfY3JjX2NvbGxl Y3RfY3JjKGRhdGEtPnBpcGVfY3JjLAo+ICZjcmNfbGltaXRlZCk7Cj4gwqAKPiArCQkvKiBBbmQg cmVzZXQuLiAqLwo+ICsJCWlndF9vdXRwdXRfc2V0X3Byb3BfdmFsdWUob3V0cHV0LAo+IElHVF9D T05ORUNUT1JfQlJPQURDQVNUX1JHQiwgQlJPQURDQVNUX1JHQl9GVUxMKTsKPiArCQlpZ3RfcGxh bmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOwo+ICsJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0 LCBQSVBFX05PTkUpOwo+ICsKPiDCoAkJLyogVmVyaWZ5IHRoYXQgdGhlIENSQyBvZiB0aGUgc29m dHdhcmUgY29tcHV0ZWQKPiBvdXRwdXQgaXMKPiDCoAkJwqAqIGVxdWFsIHRvIHRoZSBDUkMgb2Yg dGhlIENUTSBtYXRyaXggdHJhbnNmb3JtYXRpb24KPiBvdXRwdXQuCj4gwqAJCcKgKi8KPiDCoAkJ aWd0X2Fzc2VydF9jcmNfZXF1YWwoJmNyY19mdWxsLCAmY3JjX2xpbWl0ZWQpOwo+IC0KPiAtCQlp Z3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOwo+IC0JCWlndF9vdXRwdXRfc2V0X3BpcGUo b3V0cHV0LCBQSVBFX05PTkUpOwo+IMKgCX0KPiDCoAo+IMKgCWZyZWUoZ2FtbWFfbGluZWFyKTsK PiDCoAlmcmVlKGRlZ2FtbWFfbGluZWFyKTsKPiArCj4gKwlpZ3RfcmVxdWlyZShoYXNfYnJvYWRj YXN0X3JnYl9vdXRwdXQpOwo+IMKgfQo+IMKgI2VuZGlmCj4gwqAKPiDCoHN0YXRpYyB2b2lkCj4g wqBydW5fdGVzdHNfZm9yX3BpcGUoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcCkKPiDCoHsKPiAt CWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+IMKgCWlndF9waXBlX3QgKnBpcGU7Cj4gwqAJaWd0X3Bs YW5lX3QgKnByaW1hcnk7Cj4gwqAJZG91YmxlIGRlbHRhOwo+IEBAIC04NTYsOCArODIzLDYgQEAg cnVuX3Rlc3RzX2Zvcl9waXBlKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHApCj4gwqAJfTsKPiDC oAo+IMKgCWlndF9maXh0dXJlIHsKPiAtCQlpbnQgdmFsaWRfdGVzdHMgPSAwOwo+IC0KPiDCoAkJ aWd0X3JlcXVpcmVfcGlwZV9jcmMoZGF0YS0+ZHJtX2ZkKTsKPiDCoAo+IMKgCQlpZ3RfcmVxdWly ZShwIDwgZGF0YS0+ZGlzcGxheS5uX3BpcGVzKTsKPiBAQCAtODcxLDIzICs4MzYsMTggQEAgcnVu X3Rlc3RzX2Zvcl9waXBlKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHApCj4gwqAJCQkJCQnCoMKg cHJpbWFyeS0+cGlwZS0KPiA+cGlwZSwKPiDCoAkJCQkJCcKgwqBJTlRFTF9QSVBFX0NSQ19TT1UK PiBSQ0VfQVVUTyk7Cj4gwqAKPiAtCQlpZ3RfcmVxdWlyZShpZ3RfcGlwZV9nZXRfcHJvcGVydHko JmRhdGEtCj4gPmRpc3BsYXkucGlwZXNbcF0sCj4gLQkJCQkJCcKgwqAiREVHQU1NQV9MVVRfU0la RSIKPiAsCj4gLQkJCQkJCcKgwqBOVUxMLAo+IC0JCQkJCQnCoMKgJmRhdGEtCj4gPmRlZ2FtbWFf bHV0X3NpemUsCj4gLQkJCQkJCcKgwqBOVUxMKSk7Cj4gLQkJaWd0X3JlcXVpcmUoaWd0X3BpcGVf Z2V0X3Byb3BlcnR5KCZkYXRhLQo+ID5kaXNwbGF5LnBpcGVzW3BdLAo+IC0JCQkJCQnCoMKgIkdB TU1BX0xVVF9TSVpFIiwKPiAtCQkJCQkJwqDCoE5VTEwsCj4gLQkJCQkJCcKgwqAmZGF0YS0KPiA+ Z2FtbWFfbHV0X3NpemUsCj4gLQkJCQkJCcKgwqBOVUxMKSk7Cj4gLQo+IC0JCWZvcl9lYWNoX3Zh bGlkX291dHB1dF9vbl9waXBlKCZkYXRhLT5kaXNwbGF5LCBwLAo+IG91dHB1dCkgewo+IC0JCQlv dXRwdXRfc2V0X3Byb3BlcnR5X2VudW0ob3V0cHV0LCAiQnJvYWRjYXN0Cj4gUkdCIiwgIkZ1bGwi KTsKPiAtCj4gLQkJCXZhbGlkX3Rlc3RzKys7Cj4gLQkJfQo+IC0JCWlndF9yZXF1aXJlX2YodmFs aWRfdGVzdHMsICJubyB2YWxpZCBjcnRjL2Nvbm5lY3Rvcgo+IGNvbWJpbmF0aW9ucyBmb3VuZFxu Iik7Cj4gKwkJaWd0X3JlcXVpcmUoaWd0X3BpcGVfb2JqX2hhc19wcm9wKCZkYXRhLQo+ID5kaXNw bGF5LnBpcGVzW3BdLCBJR1RfQ1JUQ19ERUdBTU1BX0xVVF9TSVpFKSk7Cj4gKwkJaWd0X3JlcXVp cmUoaWd0X3BpcGVfb2JqX2hhc19wcm9wKCZkYXRhLQo+ID5kaXNwbGF5LnBpcGVzW3BdLCBJR1Rf Q1JUQ19HQU1NQV9MVVRfU0laRSkpOwo+ICsKPiArCQlkYXRhLT5kZWdhbW1hX2x1dF9zaXplID0K PiArCQkJaWd0X3BpcGVfb2JqX2dldF9wcm9wKCZkYXRhLQo+ID5kaXNwbGF5LnBpcGVzW3BdLAo+ ICsJCQkJCcKgwqDCoMKgwqDCoElHVF9DUlRDX0RFR0FNTUFfTFVUX1MKPiBJWkUpOwo+ICsKPiAr CQlkYXRhLT5nYW1tYV9sdXRfc2l6ZSA9Cj4gKwkJCWlndF9waXBlX29ial9nZXRfcHJvcCgmZGF0 YS0KPiA+ZGlzcGxheS5waXBlc1twXSwKPiArCQkJCQnCoMKgwqDCoMKgwqBJR1RfQ1JUQ19HQU1N QV9MVVRfU0laCj4gRSk7Cj4gKwo+ICsJCWlndF9kaXNwbGF5X3JlcXVpcmVfb3V0cHV0X29uX3Bp cGUoJmRhdGEtPmRpc3BsYXksCj4gcCk7Cj4gwqAJfQo+IMKgCj4gwqAJLyogV2UgYXNzdW1lIGFu IDhiaXRzIGRlcHRoIHBlciBjb2xvciBmb3IgZGVnYW1tYS9nYW1tYSBMVVRzCj4gQEAgLTEwNTAs OSArMTAxMCw2IEBAIHJ1bl90ZXN0c19mb3JfcGlwZShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBw KQo+IMKgCQl0ZXN0X3BpcGVfbGVnYWN5X2dhbW1hX3Jlc2V0KGRhdGEsIHByaW1hcnkpOwo+IMKg Cj4gwqAJaWd0X2ZpeHR1cmUgewo+IC0JCWZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoJmRhdGEt PmRpc3BsYXksIG91dHB1dCkKPiAtCQkJb3V0cHV0X3NldF9wcm9wZXJ0eV9lbnVtKG91dHB1dCwg IkJyb2FkY2FzdAo+IFJHQiIsICJGdWxsIik7Cj4gLQo+IMKgCQlkaXNhYmxlX2RlZ2FtbWEocHJp bWFyeS0+cGlwZSk7Cj4gwqAJCWRpc2FibGVfZ2FtbWEocHJpbWFyeS0+cGlwZSk7Cj4gwqAJCWRp c2FibGVfY3RtKHByaW1hcnktPnBpcGUpOwo+IEBAIC0xMDY0LDkzICsxMDIxLDc2IEBAIHJ1bl90 ZXN0c19mb3JfcGlwZShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwKQo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgaW50Cj4gLXBpcGVfc2V0X3Byb3BlcnR5X2Jsb2JfaWQoaWd0X3BpcGVfdCAqcGlwZSwg Y29uc3QgY2hhciAqcHJvcGVydHksCj4gdWludDMyX3QgYmxvYl9pZCkKPiArcGlwZV9zZXRfcHJv cGVydHlfYmxvYl9pZChpZ3RfcGlwZV90ICpwaXBlLCBlbnVtCj4gaWd0X2F0b21pY19jcnRjX3By b3BlcnRpZXMgcHJvcCwgdWludDMyX3QgYmxvYl9pZCkKPiDCoHsKPiAtCXVpbnQzMl90IHByb3Bf aWQ7Cj4gLQo+IC0JaWd0X2Fzc2VydChrbXN0ZXN0X2dldF9wcm9wZXJ0eShwaXBlLT5kaXNwbGF5 LT5kcm1fZmQsCj4gLQkJCQkJcGlwZS0+Y3J0Y19pZCwKPiAtCQkJCQlEUk1fTU9ERV9PQkpFQ1Rf Q1JUQywKPiAtCQkJCQlwcm9wZXJ0eSwKPiAtCQkJCQkmcHJvcF9pZCwgTlVMTCwgTlVMTCkpOwo+ IC0KPiAtCXJldHVybiBkcm1Nb2RlT2JqZWN0U2V0UHJvcGVydHkocGlwZS0+ZGlzcGxheS0+ZHJt X2ZkLAo+IC0JCQkJCXBpcGUtPmNydGNfaWQsCj4gLQkJCQkJRFJNX01PREVfT0JKRUNUX0NSVEMs Cj4gLQkJCQkJcHJvcF9pZCwgYmxvYl9pZCk7Cj4gLX0KPiArCWludCByZXQ7Cj4gwqAKPiAtc3Rh dGljIGludAo+IC1waXBlX3NldF9wcm9wZXJ0eV9ibG9iKGlndF9waXBlX3QgKnBpcGUsIGNvbnN0 IGNoYXIgKnByb3BlcnR5LCB2b2lkCj4gKnB0ciwgc2l6ZV90IGxlbmd0aCkKPiAtewo+IC0JaW50 IHJldCA9IDA7Cj4gLQl1aW50MzJfdCBibG9iX2lkID0gMDsKPiArCWlndF9waXBlX29ial9yZXBs YWNlX3Byb3BfYmxvYihwaXBlLCBwcm9wLCBOVUxMLCAwKTsKPiDCoAo+IC0JaWYgKGxlbmd0aCA+ IDApCj4gLQkJaWd0X2Fzc2VydF9lcShkcm1Nb2RlQ3JlYXRlUHJvcGVydHlCbG9iKHBpcGUtCj4g PmRpc3BsYXktPmRybV9mZCwKPiAtCQkJCQkJCXB0ciwgbGVuZ3RoLAo+IC0JCQkJCQkJJmJsb2Jf aWQpLAo+IDApOwo+ICsJaWd0X3BpcGVfb2JqX3NldF9wcm9wX3ZhbHVlKHBpcGUsIHByb3AsIGJs b2JfaWQpOwo+IMKgCj4gLQlyZXQgPSBwaXBlX3NldF9wcm9wZXJ0eV9ibG9iX2lkKHBpcGUsIHBy b3BlcnR5LCBibG9iX2lkKTsKPiArCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKHBpcGUt PmRpc3BsYXksIHBpcGUtPmRpc3BsYXktCj4gPmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBD T01NSVRfTEVHQUNZKTsKPiDCoAo+IC0JaWYgKGJsb2JfaWQgIT0gMCkKPiAtCQlpZ3RfYXNzZXJ0 X2VxKGRybU1vZGVEZXN0cm95UHJvcGVydHlCbG9iKHBpcGUtCj4gPmRpc3BsYXktPmRybV9mZCwg YmxvYl9pZCksIDApOwo+ICsJaWd0X3BpcGVfb2JqX3NldF9wcm9wX3ZhbHVlKHBpcGUsIHByb3As IDApOwo+IMKgCj4gwqAJcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgaW50Cj4gK3Bp cGVfc2V0X3Byb3BlcnR5X2Jsb2IoaWd0X3BpcGVfdCAqcGlwZSwgZW51bQo+IGlndF9hdG9taWNf Y3J0Y19wcm9wZXJ0aWVzIHByb3AsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbmd0aCkKPiArewo+ICsJ aWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9ibG9iKHBpcGUsIHByb3AsIHB0ciwgbGVuZ3RoKTsK PiArCj4gKwlyZXR1cm4gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdDIocGlwZS0+ZGlzcGxheSwgcGlw ZS0+ZGlzcGxheS0KPiA+aXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kp Owo+ICt9Cj4gKwo+IMKgc3RhdGljIHZvaWQKPiDCoGludmFsaWRfbHV0X3NpemVzKGRhdGFfdCAq ZGF0YSkKPiDCoHsKPiAtCWlndF9waXBlX3QgKnBpcGUgPSAmZGF0YS0+ZGlzcGxheS5waXBlc1sw XTsKPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiArCWlndF9w aXBlX3QgKnBpcGUgPSAmZGlzcGxheS0+cGlwZXNbMF07Cj4gwqAJc2l6ZV90IGRlZ2FtbWFfbHV0 X3NpemUgPSBkYXRhLT5kZWdhbW1hX2x1dF9zaXplICoKPiBzaXplb2Yoc3RydWN0IF9kcm1fY29s b3JfbHV0KTsKPiDCoAlzaXplX3QgZ2FtbWFfbHV0X3NpemUgPSBkYXRhLT5nYW1tYV9sdXRfc2l6 ZSAqIHNpemVvZihzdHJ1Y3QKPiBfZHJtX2NvbG9yX2x1dCk7Cj4gwqAKPiDCoAlzdHJ1Y3QgX2Ry bV9jb2xvcl9sdXQgKmRlZ2FtbWFfbHV0ID0gbWFsbG9jKGRhdGEtCj4gPmRlZ2FtbWFfbHV0X3Np emUgKiBzaXplb2Yoc3RydWN0IF9kcm1fY29sb3JfbHV0KSAqIDIpOwo+IMKgCXN0cnVjdCBfZHJt X2NvbG9yX2x1dCAqZ2FtbWFfbHV0ID0gbWFsbG9jKGRhdGEtCj4gPmdhbW1hX2x1dF9zaXplICog c2l6ZW9mKHN0cnVjdCBfZHJtX2NvbG9yX2x1dCkgKiAyKTsKPiDCoAo+IC0JaWYgKGttc3Rlc3Rf Z2V0X3Byb3BlcnR5KHBpcGUtPmRpc3BsYXktPmRybV9mZCwKPiAtCQkJCcKgcGlwZS0+Y3J0Y19p ZCwKPiAtCQkJCcKgRFJNX01PREVfT0JKRUNUX0NSVEMsCj4gLQkJCQnCoCJERUdBTU1BX0xVVCIs Cj4gLQkJCQnCoE5VTEwsIE5VTEwsIE5VTEwpKSB7Cj4gLQkJaWd0X2Fzc2VydF9lcShwaXBlX3Nl dF9wcm9wZXJ0eV9ibG9iKHBpcGUsCj4gIkRFR0FNTUFfTFVUIiwKPiArCWlndF9kaXNwbGF5X2Nv bW1pdDIoZGlzcGxheSwgZGlzcGxheS0+aXNfYXRvbWljID8KPiBDT01NSVRfQVRPTUlDIDogQ09N TUlUX0xFR0FDWSk7Cj4gKwo+ICsJaWYgKGlndF9waXBlX29ial9oYXNfcHJvcChwaXBlLCBJR1Rf Q1JUQ19ERUdBTU1BX0xVVCkpIHsKPiArCQlpZ3RfYXNzZXJ0X2VxKHBpcGVfc2V0X3Byb3BlcnR5 X2Jsb2IocGlwZSwKPiBJR1RfQ1JUQ19ERUdBTU1BX0xVVCwKPiDCoAkJCQkJCcKgwqDCoMKgwqBk ZWdhbW1hX2x1dCwKPiAxKSwgLUVJTlZBTCk7Cj4gLQkJaWd0X2Fzc2VydF9lcShwaXBlX3NldF9w cm9wZXJ0eV9ibG9iKHBpcGUsCj4gIkRFR0FNTUFfTFVUIiwKPiArCQlpZ3RfYXNzZXJ0X2VxKHBp cGVfc2V0X3Byb3BlcnR5X2Jsb2IocGlwZSwKPiBJR1RfQ1JUQ19ERUdBTU1BX0xVVCwKPiDCoAkJ CQkJCcKgwqDCoMKgwqBkZWdhbW1hX2x1dCwKPiBkZWdhbW1hX2x1dF9zaXplICsgMSksCj4gwqAJ CQnCoMKgwqDCoMKgwqAtRUlOVkFMKTsKPiAtCQlpZ3RfYXNzZXJ0X2VxKHBpcGVfc2V0X3Byb3Bl cnR5X2Jsb2IocGlwZSwKPiAiREVHQU1NQV9MVVQiLAo+ICsJCWlndF9hc3NlcnRfZXEocGlwZV9z ZXRfcHJvcGVydHlfYmxvYihwaXBlLAo+IElHVF9DUlRDX0RFR0FNTUFfTFVULAo+IMKgCQkJCQkJ wqDCoMKgwqDCoGRlZ2FtbWFfbHV0LAo+IGRlZ2FtbWFfbHV0X3NpemUgLSAxKSwKPiDCoAkJCcKg wqDCoMKgwqDCoC1FSU5WQUwpOwo+IC0JCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlf YmxvYihwaXBlLAo+ICJERUdBTU1BX0xVVCIsCj4gKwkJaWd0X2Fzc2VydF9lcShwaXBlX3NldF9w cm9wZXJ0eV9ibG9iKHBpcGUsCj4gSUdUX0NSVENfREVHQU1NQV9MVVQsCj4gwqAJCQkJCQnCoMKg wqDCoMKgZGVnYW1tYV9sdXQsCj4gZGVnYW1tYV9sdXRfc2l6ZSArIHNpemVvZihzdHJ1Y3QgX2Ry bV9jb2xvcl9sdXQpKSwKPiDCoAkJCcKgwqDCoMKgwqDCoC1FSU5WQUwpOwo+IC0JCWlndF9hc3Nl cnRfZXEocGlwZV9zZXRfcHJvcGVydHlfYmxvYl9pZChwaXBlLAo+ICJERUdBTU1BX0xVVCIsIHBp cGUtPmNydGNfaWQpLAo+ICsJCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlfYmxvYl9p ZChwaXBlLAo+IElHVF9DUlRDX0RFR0FNTUFfTFVULCBwaXBlLT5jcnRjX2lkKSwKPiDCoAkJCcKg wqDCoMKgwqDCoC1FSU5WQUwpOwo+IC0JCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlf YmxvYl9pZChwaXBlLAo+ICJERUdBTU1BX0xVVCIsIDQwOTYgKiA0MDk2KSwKPiArCQlpZ3RfYXNz ZXJ0X2VxKHBpcGVfc2V0X3Byb3BlcnR5X2Jsb2JfaWQocGlwZSwKPiBJR1RfQ1JUQ19ERUdBTU1B X0xVVCwgNDA5NiAqIDQwOTYpLAo+IMKgCQkJwqDCoMKgwqDCoMKgLUVJTlZBTCk7Cj4gwqAJfQo+ IMKgCj4gLQlpZiAoa21zdGVzdF9nZXRfcHJvcGVydHkocGlwZS0+ZGlzcGxheS0+ZHJtX2ZkLAo+ IC0JCQkJwqBwaXBlLT5jcnRjX2lkLAo+IC0JCQkJwqBEUk1fTU9ERV9PQkpFQ1RfQ1JUQywKPiAt CQkJCcKgIkdBTU1BX0xVVCIsCj4gLQkJCQnCoE5VTEwsIE5VTEwsIE5VTEwpKSB7Cj4gLQkJaWd0 X2Fzc2VydF9lcShwaXBlX3NldF9wcm9wZXJ0eV9ibG9iKHBpcGUsCj4gIkdBTU1BX0xVVCIsCj4g KwlpZiAoaWd0X3BpcGVfb2JqX2hhc19wcm9wKHBpcGUsIElHVF9DUlRDX0dBTU1BX0xVVCkpIHsK PiArCQlpZ3RfYXNzZXJ0X2VxKHBpcGVfc2V0X3Byb3BlcnR5X2Jsb2IocGlwZSwKPiBJR1RfQ1JU Q19HQU1NQV9MVVQsCj4gwqAJCQkJCQnCoMKgwqDCoMKgZ2FtbWFfbHV0LCAxKSwKPiDCoAkJCcKg wqDCoMKgwqDCoC1FSU5WQUwpOwo+IC0JCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlf YmxvYihwaXBlLAo+ICJHQU1NQV9MVVQiLAo+ICsJCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJv cGVydHlfYmxvYihwaXBlLAo+IElHVF9DUlRDX0dBTU1BX0xVVCwKPiDCoAkJCQkJCcKgwqDCoMKg wqBnYW1tYV9sdXQsCj4gZ2FtbWFfbHV0X3NpemUgKyAxKSwKPiDCoAkJCcKgwqDCoMKgwqDCoC1F SU5WQUwpOwo+IC0JCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlfYmxvYihwaXBlLAo+ ICJHQU1NQV9MVVQiLAo+ICsJCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlfYmxvYihw aXBlLAo+IElHVF9DUlRDX0dBTU1BX0xVVCwKPiDCoAkJCQkJCcKgwqDCoMKgwqBnYW1tYV9sdXQs Cj4gZ2FtbWFfbHV0X3NpemUgLSAxKSwKPiDCoAkJCcKgwqDCoMKgwqDCoC1FSU5WQUwpOwo+IC0J CWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlfYmxvYihwaXBlLAo+ICJHQU1NQV9MVVQi LAo+ICsJCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlfYmxvYihwaXBlLAo+IElHVF9D UlRDX0dBTU1BX0xVVCwKPiDCoAkJCQkJCcKgwqDCoMKgwqBnYW1tYV9sdXQsCj4gZ2FtbWFfbHV0 X3NpemUgKyBzaXplb2Yoc3RydWN0IF9kcm1fY29sb3JfbHV0KSksCj4gwqAJCQnCoMKgwqDCoMKg wqAtRUlOVkFMKTsKPiAtCQlpZ3RfYXNzZXJ0X2VxKHBpcGVfc2V0X3Byb3BlcnR5X2Jsb2JfaWQo cGlwZSwKPiAiR0FNTUFfTFVUIiwgcGlwZS0+Y3J0Y19pZCksCj4gKwkJaWd0X2Fzc2VydF9lcShw aXBlX3NldF9wcm9wZXJ0eV9ibG9iX2lkKHBpcGUsCj4gSUdUX0NSVENfR0FNTUFfTFVULCBwaXBl LT5jcnRjX2lkKSwKPiDCoAkJCcKgwqDCoMKgwqDCoC1FSU5WQUwpOwo+IC0JCWlndF9hc3NlcnRf ZXEocGlwZV9zZXRfcHJvcGVydHlfYmxvYl9pZChwaXBlLAo+ICJHQU1NQV9MVVQiLCA0MDk2ICog NDA5NiksCj4gKwkJaWd0X2Fzc2VydF9lcShwaXBlX3NldF9wcm9wZXJ0eV9ibG9iX2lkKHBpcGUs Cj4gSUdUX0NSVENfR0FNTUFfTFVULCA0MDk2ICogNDA5NiksCj4gwqAJCQnCoMKgwqDCoMKgwqAt RUlOVkFMKTsKPiDCoAl9Cj4gwqAKPiBAQCAtMTE2MSwzMiArMTEwMSwyOSBAQCBpbnZhbGlkX2x1 dF9zaXplcyhkYXRhX3QgKmRhdGEpCj4gwqBzdGF0aWMgdm9pZAo+IMKgaW52YWxpZF9jdG1fbWF0 cml4X3NpemVzKGRhdGFfdCAqZGF0YSkKPiDCoHsKPiAtCWlndF9waXBlX3QgKnBpcGUgPSAmZGF0 YS0+ZGlzcGxheS5waXBlc1swXTsKPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ ZGlzcGxheTsKPiArCWlndF9waXBlX3QgKnBpcGUgPSAmZGlzcGxheS0+cGlwZXNbMF07Cj4gwqAJ dm9pZCAqcHRyOwo+IMKgCj4gLQlpZiAoIWttc3Rlc3RfZ2V0X3Byb3BlcnR5KHBpcGUtPmRpc3Bs YXktPmRybV9mZCwKPiAtCQkJCcKgwqBwaXBlLT5jcnRjX2lkLAo+IC0JCQkJwqDCoERSTV9NT0RF X09CSkVDVF9DUlRDLAo+IC0JCQkJwqDCoCJDVE0iLAo+IC0JCQkJwqDCoE5VTEwsIE5VTEwsIE5V TEwpKQo+ICsJaWYgKCFpZ3RfcGlwZV9vYmpfaGFzX3Byb3AocGlwZSwgSUdUX0NSVENfQ1RNKSkK PiDCoAkJcmV0dXJuOwo+IMKgCj4gwqAJcHRyID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgX2RybV9j b2xvcl9jdG0pICogNCk7Cj4gwqAKPiAtCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlf YmxvYihwaXBlLCAiQ1RNIiwgcHRyLCAxKSwKPiArCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJv cGVydHlfYmxvYihwaXBlLCBJR1RfQ1JUQ19DVE0sCj4gcHRyLCAxKSwKPiDCoAkJwqDCoMKgwqDC oMKgLUVJTlZBTCk7Cj4gLQlpZ3RfYXNzZXJ0X2VxKHBpcGVfc2V0X3Byb3BlcnR5X2Jsb2IocGlw ZSwgIkNUTSIsIHB0ciwKPiArCWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlfYmxvYihw aXBlLCBJR1RfQ1JUQ19DVE0sCj4gcHRyLAo+IMKgCQkJCQnCoMKgwqDCoMKgc2l6ZW9mKHN0cnVj dAo+IF9kcm1fY29sb3JfY3RtKSArIDEpLAo+IMKgCQnCoMKgwqDCoMKgwqAtRUlOVkFMKTsKPiAt CWlndF9hc3NlcnRfZXEocGlwZV9zZXRfcHJvcGVydHlfYmxvYihwaXBlLCAiQ1RNIiwgcHRyLAo+ ICsJaWd0X2Fzc2VydF9lcShwaXBlX3NldF9wcm9wZXJ0eV9ibG9iKHBpcGUsIElHVF9DUlRDX0NU TSwKPiBwdHIsCj4gwqAJCQkJCcKgwqDCoMKgwqBzaXplb2Yoc3RydWN0Cj4gX2RybV9jb2xvcl9j dG0pIC0gMSksCj4gwqAJCcKgwqDCoMKgwqDCoC1FSU5WQUwpOwo+IC0JaWd0X2Fzc2VydF9lcShw aXBlX3NldF9wcm9wZXJ0eV9ibG9iKHBpcGUsICJDVE0iLCBwdHIsCj4gKwlpZ3RfYXNzZXJ0X2Vx KHBpcGVfc2V0X3Byb3BlcnR5X2Jsb2IocGlwZSwgSUdUX0NSVENfQ1RNLAo+IHB0ciwKPiDCoAkJ CQkJwqDCoMKgwqDCoHNpemVvZihzdHJ1Y3QKPiBfZHJtX2NvbG9yX2N0bSkgKiAyKSwKPiDCoAkJ wqDCoMKgwqDCoMKgLUVJTlZBTCk7Cj4gLQlpZ3RfYXNzZXJ0X2VxKHBpcGVfc2V0X3Byb3BlcnR5 X2Jsb2JfaWQocGlwZSwgIkNUTSIsIHBpcGUtCj4gPmNydGNfaWQpLAo+ICsJaWd0X2Fzc2VydF9l cShwaXBlX3NldF9wcm9wZXJ0eV9ibG9iX2lkKHBpcGUsIElHVF9DUlRDX0NUTSwKPiBwaXBlLT5j cnRjX2lkKSwKPiDCoAkJwqDCoMKgwqDCoMKgLUVJTlZBTCk7Cj4gLQlpZ3RfYXNzZXJ0X2VxKHBp cGVfc2V0X3Byb3BlcnR5X2Jsb2JfaWQocGlwZSwgIkNUTSIsIDQwOTYgKgo+IDQwOTYpLAo+ICsJ aWd0X2Fzc2VydF9lcShwaXBlX3NldF9wcm9wZXJ0eV9ibG9iX2lkKHBpcGUsIElHVF9DUlRDX0NU TSwKPiA0MDk2ICogNDA5NiksCj4gwqAJCcKgwqDCoMKgwqDCoC1FSU5WQUwpOwo+IMKgCj4gwqAJ ZnJlZShwdHIpOwotLSAKTWlrYSBLYWhvbGEgLSBJbnRlbCBPVEMKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=