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 E8FA76E215 for ; Tue, 7 May 2019 10:42:45 +0000 (UTC) From: "Ser, Simon" Date: Tue, 7 May 2019 10:42:42 +0000 Message-ID: References: <20190405125216.6133-2-maarten.lankhorst@linux.intel.com> In-Reply-To: <20190405125216.6133-2-maarten.lankhorst@linux.intel.com> Content-Language: en-US Content-ID: <6D5C189FD52007448135B813E1E4CC34@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [i-g-t, 2/2] tests/kms_chamelium: Fix *-cmp-random and *-crc-random tests, v3. 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" , "maarten.lankhorst@linux.intel.com" List-ID: SGksDQoNCk9uIEZyaSwgMjAxOS0wNC0wNSBhdCAxNDo1MiArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6DQo+IFRoZSByYW5kb20gdGVzdHMgYWxsb3dlZCBwb3RlbnRpYWxseSBpbnZhbGlk IHRoaW5nczoNCj4gLSAxeDEgZmIncyB0byBiZSBjcmVhdGVkLiBGb3JjZSBhIG1pbmltdW0gb2Yg MzIgb24gWVVWIHNvIGEgc2NhbGVkDQo+ICAgcGxhbmFyIGZvcm1hdCBwbGFuZSB3aWxsIGJlIGF0 IGxlYXN0IDE2eDE2LiBUaGlzIHdpbGwgZml4DQo+ICAgc2NhbGVkL3BsYW5hciBmb3JtYXQgc3Vw cG9ydCBpbiBpOTE1IGFuZCBhdm9pZCBhIGRpdiBieSB6ZXJvIHdoZW4NCj4gICBjYWxjdWxhdGlu ZyBhIHZhbHVlIG1vZHVsbyBoLzIgYW5kIHcvMi4NCj4gLSBEb3duc2NhbGluZyB0byBhbnkgYW1v dW50LCByZXN0cmljdCBpdCB0byAyeCB0byBtYWtlIHRoZSB0ZXN0IHBhc3MuDQo+IC0gU29tZSBo dyBtYXkgbm90IGFsbG93IHNjYWxpbmcsIGluIHRob3NlIGNhc2VzIHdlIHNob3VsZCBmYWxsYmFj aw0KPiAgIHRvIG5vIHNjYWxpbmcgYXQgYWxsLg0KPiAtIEF0dGVtcHRpbmcgdG8gY29uZmlndXJl IGEgbWluaW11bSBvZiA0IHBsYW5lcywgaW5zdGVhZCBvZiBhIG1heGltdW0uDQo+ICAgVGhpcyBm YWlscyB3aXRoIGEgbnVsbCBwb2ludGVyIGRlcmVmIGlmIHRoZSBodyBkb2Vzbid0IGhhdmUgNA0K PiAgIGNvbmZpZ3VyYWJsZSBvdmVybGF5IHBsYW5lcy4NCj4gDQo+IENoYW5nZXMgc2luY2UgdjE6 DQo+IC0gRW5mb3JjZSBhIG1pbmltdW0gZGlzcGxheWVkIHNpemUgb2YgMTZ4MTYgZm9yIGludGVs IG9ubHksDQo+ICAgb3RoZXJ3aXNlIGl0J3MgMXgxLg0KPiAtIEZpeCBjb21tZW50cy4NCj4gQ2hh bmdlcyBzaW5jZSB2MjoNCj4gLSBGaXggY29tbWVudHMgaGFyZGVyLg0KPiAtIFBpY2sgYSByYW5k b20gZm9ybWF0IGFuZCBpdHMgbW9kaWZpZXIgZnJvbSB0aGUgcGxhbmUgaXRzZWxmLA0KPiAgIGlu c3RlYWQgb2YgdXNpbmcgaWd0X2Zvcm1hdF9hcnJheV9maWxsKCkuIFRoaXMgd2lsbCBjYXVzZSB0 aGUgdGVzdA0KPiAgIHRvIHVzZSBhbGwgdmFsaWQgY29tYmluYXRpb25zIG9mIG1vZGlmaWVycyBh bmQgZm9ybWF0cy4NCj4gLSBTZXQgbWluaW11bSBkaW1lbnNpb24gdG8gOCBmb3IgIXl1diwgYW5k IDE2IGZvciBZVVYuDQo+IC0gR2VuZXJhdGUgZm9ybWF0IC8gbW9kaWZpZXIgYmVmb3JlDQo+IA0K PiBDYzogUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4uY29tPg0K PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGlu dXguaW50ZWwuY29tPg0KPiAtLS0NCj4gIHRlc3RzL2ttc19jaGFtZWxpdW0uYyB8IDMxOCArKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0NCj4gIDEgZmlsZSBjaGFuZ2Vk LCAxOTMgaW5zZXJ0aW9ucygrKSwgMTI1IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBh L3Rlc3RzL2ttc19jaGFtZWxpdW0uYyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYw0KPiBpbmRleCAy ZGMxMDQ5ZDJkZGEuLmE1NWJkODZjNzdmNSAxMDA2NDQNCj4gLS0tIGEvdGVzdHMva21zX2NoYW1l bGl1bS5jDQo+ICsrKyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYw0KPiBAQCAtNzEwLDE3ICs3MTAs NDggQEAgdGVzdF9kaXNwbGF5X2ZyYW1lX2R1bXAoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVs aXVtX3BvcnQgKnBvcnQpDQo+ICAJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsNCj4g IH0NCj4gIA0KPiAtc3RhdGljIHZvaWQgc2VsZWN0X3RpbGVkX21vZGlmaWVyKGlndF9wbGFuZV90 ICpwbGFuZSwgdWludDMyX3Qgd2lkdGgsDQo+ICsNCj4gK3N0YXRpYyB2b2lkIHJhbmRvbWl6ZV9w bGFuZV9zdHJpZGUoZGF0YV90ICpkYXRhLA0KPiArCQkJCSAgIHVpbnQzMl90IHdpZHRoLCB1aW50 MzJfdCBoZWlnaHQsDQo+ICsJCQkJICAgdWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmll ciwNCj4gKwkJCQkgICBzaXplX3QgKnN0cmlkZSkNCj4gK3sNCj4gKwlzaXplX3Qgc3RyaWRlX21p bjsNCj4gKwl1aW50MzJfdCBtYXhfdGlsZV93ID0gNCwgdGlsZV93LCB0aWxlX2g7DQo+ICsJaW50 IGk7DQo+ICsJc3RydWN0IGlndF9mYiBkdW1teTsNCj4gKw0KPiArCXN0cmlkZV9taW4gPSB3aWR0 aCAqIGlndF9mb3JtYXRfcGxhbmVfYnBwKGZvcm1hdCwgMCkgLyA4Ow0KPiArDQo+ICsJLyogUmFu ZG9taXplIHRoZSBzdHJpZGUgdG8gbGVzcyB0aGFuIHR3aWNlIHRoZSBtaW5pbXVtLiAqLw0KPiAr CSpzdHJpZGUgPSAocmFuZCgpICUgc3RyaWRlX21pbikgKyBzdHJpZGVfbWluOw0KPiArDQo+ICsJ LyoNCj4gKwkgKiBDcmVhdGUgYSBkdW1teSBGQiB0byBkZXRlcm1pbmUgYnBwIGZvciBlYWNoIHBs YW5lLCBhbmQgY2FsY3VsYXRlDQo+ICsJICogdGhlIG1heGltdW0gdGlsZSB3aWR0aCBmcm9tIHRo YXQuDQo+ICsJICovDQo+ICsJaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsIDY0LCA2NCwgZm9y bWF0LCBtb2RpZmllciwgJmR1bW15KTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZHVtbXkubnVtX3Bs YW5lczsgaSsrKSB7DQo+ICsJCWlndF9nZXRfZmJfdGlsZV9zaXplKGRhdGEtPmRybV9mZCwgbW9k aWZpZXIsIGR1bW15LnBsYW5lX2JwcFtpXSwgJnRpbGVfdywgJnRpbGVfaCk7DQo+ICsNCj4gKwkJ aWYgKHRpbGVfdyA+IG1heF90aWxlX3cpDQo+ICsJCQltYXhfdGlsZV93ID0gdGlsZV93Ow0KPiAr CX0NCj4gKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmR1bW15KTsNCj4gKw0KPiArCS8q DQo+ICsJICogUGl4bWFuIHJlcXVpcmVzIHRoZSBzdHJpZGUgdG8gYmUgYWxpZ25lZCB0byAzMi1i aXRzLCB3aGljaCBpcw0KPiArCSAqIHJlZmxlY3RlZCBpbiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBt YXhfdGlsZV93IGFuZCB0aGUgaHcNCj4gKwkgKiBtYXkgcmVxdWlyZSBhIG11bHRpcGxlIG9mIHRp bGUgd2lkdGgsIGNob29zZSBiaWdnZXN0IG9mIHRoZSAyLg0KPiArCSAqLw0KPiArCSpzdHJpZGUg PSBBTElHTigqc3RyaWRlLCBtYXhfdGlsZV93KTsNCg0KSXMgbWF4X3RpbGVfdyBndWFyYW50ZWVk IHRvIGJlIGEgbXVsdGlwbGUgb2YgND8NCg0KVGhlIHBhdGNoIExHVE0gb3RoZXJ3aXNlLCBidXQg SSdtIG5vdCBjb21mb3J0YWJsZSBlbm91Z2ggd2l0aCB0aGUNCmNvZGViYXNlIHlldCB0byBtYXJr IGl0IGFzIHJldmlld2VkLiBUaHVzLCB3aXRoIHRoaXMgZml4ZWQ6DQoNCkFja2VkLWJ5OiBTaW1v biBTZXIgPHNpbW9uLnNlckBpbnRlbC5jb20+DQoNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQg dXBkYXRlX3RpbGVkX21vZGlmaWVyKGlndF9wbGFuZV90ICpwbGFuZSwgdWludDMyX3Qgd2lkdGgs DQo+ICAJCQkJICB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwNCj4gIAkJCQkgIHVp bnQ2NF90ICptb2RpZmllcikNCj4gIHsNCj4gLQlpZiAoaWd0X3BsYW5lX2hhc19mb3JtYXRfbW9k KHBsYW5lLCBmb3JtYXQsDQo+IC0JCQkJICAgICBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9WQzRf VF9USUxFRCkpIHsNCj4gLQkJaWd0X2RlYnVnKCJTZWxlY3RpbmcgVkM0IFQtdGlsaW5nXG4iKTsN Cj4gLQ0KPiAtCQkqbW9kaWZpZXIgPSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9WQzRfVF9USUxF RDsNCj4gLQl9IGVsc2UgaWYgKGlndF9wbGFuZV9oYXNfZm9ybWF0X21vZChwbGFuZSwgZm9ybWF0 LA0KPiAtCQkJCQkgICAgRFJNX0ZPUk1BVF9NT0RfQlJPQURDT01fU0FORDI1NikpIHsNCj4gKwlp ZiAoKm1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0JST0FEQ09NX1NBTkQyNTYpIHsNCj4gIAkJ LyogUmFuZG9taXplIHRoZSBjb2x1bW4gaGVpZ2h0IHRvIGxlc3MgdGhhbiB0d2ljZSB0aGUgbWlu aW11bS4gKi8NCj4gIAkJc2l6ZV90IGNvbHVtbl9oZWlnaHQgPSAocmFuZCgpICUgaGVpZ2h0KSAr IGhlaWdodDsNCj4gIA0KPiBAQCAtNzI4LDkwICs3NTksODQgQEAgc3RhdGljIHZvaWQgc2VsZWN0 X3RpbGVkX21vZGlmaWVyKGlndF9wbGFuZV90ICpwbGFuZSwgdWludDMyX3Qgd2lkdGgsDQo+ICAJ CQkgIGNvbHVtbl9oZWlnaHQpOw0KPiAgDQo+ICAJCSptb2RpZmllciA9IERSTV9GT1JNQVRfTU9E X0JST0FEQ09NX1NBTkQyNTZfQ09MX0hFSUdIVChjb2x1bW5faGVpZ2h0KTsNCj4gLQl9IGVsc2Ug ew0KPiAtCQkqbW9kaWZpZXIgPSBEUk1fRk9STUFUX01PRF9MSU5FQVI7DQo+ICAJfQ0KPiAgfQ0K PiAgDQo+IC1zdGF0aWMgdm9pZCByYW5kb21pemVfcGxhbmVfZm9ybWF0X3N0cmlkZShpZ3RfcGxh bmVfdCAqcGxhbmUsDQo+IC0JCQkJCSAgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwN Cj4gLQkJCQkJICB1aW50MzJfdCAqZm9ybWF0LCB1aW50NjRfdCAqbW9kaWZpZXIsDQo+IC0JCQkJ CSAgc2l6ZV90ICpzdHJpZGUsIGJvb2wgYWxsb3dfeXV2KQ0KPiArc3RhdGljIHZvaWQgcmFuZG9t aXplX3BsYW5lX3NldHVwKGRhdGFfdCAqZGF0YSwgaWd0X3BsYW5lX3QgKnBsYW5lLA0KPiArCQkJ CSAgZHJtTW9kZU1vZGVJbmZvICptb2RlLA0KPiArCQkJCSAgdWludDMyX3QgKndpZHRoLCB1aW50 MzJfdCAqaGVpZ2h0LA0KPiArCQkJCSAgdWludDMyX3QgKmZvcm1hdCwgdWludDY0X3QgKm1vZGlm aWVyLA0KPiArCQkJCSAgYm9vbCBhbGxvd195dXYpDQo+ICB7DQo+IC0Jc2l6ZV90IHN0cmlkZV9t aW47DQo+IC0JdWludDMyX3QgKmZvcm1hdHNfYXJyYXk7DQo+IC0JdW5zaWduZWQgaW50IGZvcm1h dHNfY291bnQ7DQo+ICsJaW50IG1pbl9kaW07DQo+ICsJdWludDMyX3QgaWR4W3BsYW5lLT5mb3Jt YXRfbW9kX2NvdW50XTsNCj4gIAl1bnNpZ25lZCBpbnQgY291bnQgPSAwOw0KPiAgCXVuc2lnbmVk IGludCBpOw0KPiAtCWJvb2wgdGlsZWQ7DQo+IC0JaW50IGluZGV4Ow0KPiAtDQo+IC0JaWd0X2Zv cm1hdF9hcnJheV9maWxsKCZmb3JtYXRzX2FycmF5LCAmZm9ybWF0c19jb3VudCwgYWxsb3dfeXV2 KTsNCj4gIA0KPiAgCS8qIEZpcnN0IHBhc3MgdG8gY291bnQgdGhlIHN1cHBvcnRlZCBmb3JtYXRz LiAqLw0KPiAtCWZvciAoaSA9IDA7IGkgPCBmb3JtYXRzX2NvdW50OyBpKyspDQo+IC0JCWlmIChp Z3RfcGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUsIGZvcm1hdHNfYXJyYXlbaV0sDQo+IC0JCQkJ CSAgICAgRFJNX0ZPUk1BVF9NT0RfTElORUFSKSkNCj4gLQkJCWNvdW50Kys7DQo+ICsJZm9yIChp ID0gMDsgaSA8IHBsYW5lLT5mb3JtYXRfbW9kX2NvdW50OyBpKyspDQo+ICsJCWlmIChpZ3RfZmJf c3VwcG9ydGVkX2Zvcm1hdChwbGFuZS0+Zm9ybWF0c1tpXSkgJiYNCj4gKwkJICAgIChhbGxvd195 dXYgfHwgIWlndF9mb3JtYXRfaXNfeXV2KHBsYW5lLT5mb3JtYXRzW2ldKSkpDQo+ICsJCQlpZHhb Y291bnQrK10gPSBpOw0KPiAgDQo+ICAJaWd0X2Fzc2VydChjb3VudCA+IDApOw0KPiAgDQo+IC0J aW5kZXggPSByYW5kKCkgJSBjb3VudDsNCj4gLQ0KPiAtCS8qIFNlY29uZCBwYXNzIHRvIGdldCB0 aGUgaW5kZXgtdGggc3VwcG9ydGVkIGZvcm1hdC4gKi8NCj4gLQlmb3IgKGkgPSAwOyBpIDwgZm9y bWF0c19jb3VudDsgaSsrKSB7DQo+IC0JCWlmICghaWd0X3BsYW5lX2hhc19mb3JtYXRfbW9kKHBs YW5lLCBmb3JtYXRzX2FycmF5W2ldLA0KPiAtCQkJCQkgICAgICBEUk1fRk9STUFUX01PRF9MSU5F QVIpKQ0KPiAtCQkJY29udGludWU7DQo+IC0NCj4gLQkJaWYgKCFpbmRleC0tKSB7DQo+IC0JCQkq Zm9ybWF0ID0gZm9ybWF0c19hcnJheVtpXTsNCj4gLQkJCWJyZWFrOw0KPiAtCQl9DQo+IC0JfQ0K PiAtDQo+IC0JZnJlZShmb3JtYXRzX2FycmF5KTsNCj4gKwlpID0gaWR4W3JhbmQoKSAlIGNvdW50 XTsNCj4gKwkqZm9ybWF0ID0gcGxhbmUtPmZvcm1hdHNbaV07DQo+ICsJKm1vZGlmaWVyID0gcGxh bmUtPm1vZGlmaWVyc1tpXTsNCj4gIA0KPiAtCWlndF9hc3NlcnQoaW5kZXggPCAwKTsNCj4gKwl1 cGRhdGVfdGlsZWRfbW9kaWZpZXIocGxhbmUsICp3aWR0aCwgKmhlaWdodCwgKmZvcm1hdCwgbW9k aWZpZXIpOw0KPiAgDQo+IC0Jc3RyaWRlX21pbiA9IHdpZHRoICogaWd0X2Zvcm1hdF9wbGFuZV9i cHAoKmZvcm1hdCwgMCkgLyA4Ow0KPiArCS8qDQo+ICsJICogUmFuZG9taXplIHdpZHRoIGFuZCBo ZWlnaHQgaW4gdGhlIG1vZGUgZGltZW5zaW9ucyByYW5nZS4NCj4gKwkgKg0KPiArCSAqIFJlc3Ry aWN0IHRvIGEgbWluIG9mIDIgKiBtaW5fZGltLCB0aGlzIHdheSBzcmNfdy9oIGFyZSBhbHdheXMg YXQNCj4gKwkgKiBsZWFzdCBtaW5fZGltLCBiZWNhdXNlIHNyY193ID0gd2lkdGggLSAocmFuZCAl IHcgLyAyKS4NCj4gKwkgKg0KPiArCSAqIFVzZSBhIG1pbmltdW0gZGltZW5zaW9uIG9mIDE2IGZv ciBZVVYsIGJlY2F1c2UgcGxhbmFyIFlVVg0KPiArCSAqIHN1YnNhbXBsZXMgdGhlIFVWIHBsYW5l Lg0KPiArCSAqLw0KPiArCW1pbl9kaW0gPSBpZ3RfZm9ybWF0X2lzX3l1digqZm9ybWF0KSA/IDE2 IDogODsNCj4gIA0KPiAtCS8qIFJhbmRvbWl6ZSB0aGUgc3RyaWRlIHRvIGxlc3MgdGhhbiB0d2lj ZSB0aGUgbWluaW11bS4gKi8NCj4gLQkqc3RyaWRlID0gKHJhbmQoKSAlIHN0cmlkZV9taW4pICsg c3RyaWRlX21pbjsNCj4gKwkqd2lkdGggPSBtYXgoKHJhbmQoKSAlIG1vZGUtPmhkaXNwbGF5KSAr IDEsIDIgKiBtaW5fZGltKTsNCj4gKwkqaGVpZ2h0ID0gbWF4KChyYW5kKCkgJSBtb2RlLT52ZGlz cGxheSkgKyAxLCAyICogbWluX2RpbSk7DQo+ICt9DQo+ICANCj4gLQkvKiBQaXhtYW4gcmVxdWly ZXMgdGhlIHN0cmlkZSB0byBiZSBhbGlnbmVkIHRvIDMyLWJ5dGUgd29yZHMuICovDQo+IC0JKnN0 cmlkZSA9IEFMSUdOKCpzdHJpZGUsIHNpemVvZih1aW50MzJfdCkpOw0KPiArc3RhdGljIHZvaWQg Y29uZmlndXJlX3BsYW5lKGlndF9wbGFuZV90ICpwbGFuZSwgdWludDMyX3Qgc3JjX3csIHVpbnQz Ml90IHNyY19oLA0KPiArCQkJICAgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwgdWlu dDMyX3QgY3J0Y193LA0KPiArCQkJICAgIHVpbnQzMl90IGNydGNfaCwgaW50MzJfdCBjcnRjX3gs IGludDMyX3QgY3J0Y195LA0KPiArCQkJICAgIHN0cnVjdCBpZ3RfZmIgKmZiKQ0KPiArew0KPiAr CWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIGZiKTsNCj4gIA0KPiAtCS8qIFJhbmRvbWl6ZSB0aGUg dXNlIG9mIGEgdGlsZWQgbW9kZSB3aXRoIGEgMS80IHByb2JhYmlsaXR5LiAqLw0KPiAtCXRpbGVk ID0gKChyYW5kKCkgJSA0KSA9PSAwKTsNCj4gKwlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5l LCBjcnRjX3gsIGNydGNfeSk7DQo+ICsJaWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCBjcnRjX3cs IGNydGNfaCk7DQo+ICANCj4gLQlpZiAodGlsZWQpDQo+IC0JCXNlbGVjdF90aWxlZF9tb2RpZmll cihwbGFuZSwgd2lkdGgsIGhlaWdodCwgKmZvcm1hdCwgbW9kaWZpZXIpOw0KPiAtCWVsc2UNCj4g LQkJKm1vZGlmaWVyID0gRFJNX0ZPUk1BVF9NT0RfTElORUFSOw0KPiArCWlndF9mYl9zZXRfcG9z aXRpb24oZmIsIHBsYW5lLCBzcmNfeCwgc3JjX3kpOw0KPiArCWlndF9mYl9zZXRfc2l6ZShmYiwg cGxhbmUsIHNyY193LCBzcmNfaCk7DQo+ICB9DQo+ICANCj4gLXN0YXRpYyB2b2lkIHJhbmRvbWl6 ZV9wbGFuZV9kaW1lbnNpb25zKGRybU1vZGVNb2RlSW5mbyAqbW9kZSwNCj4gLQkJCQkgICAgICAg dWludDMyX3QgKndpZHRoLCB1aW50MzJfdCAqaGVpZ2h0LA0KPiAtCQkJCSAgICAgICB1aW50MzJf dCAqc3JjX3csIHVpbnQzMl90ICpzcmNfaCwNCj4gLQkJCQkgICAgICAgdWludDMyX3QgKnNyY194 LCB1aW50MzJfdCAqc3JjX3ksDQo+IC0JCQkJICAgICAgIHVpbnQzMl90ICpjcnRjX3csIHVpbnQz Ml90ICpjcnRjX2gsDQo+IC0JCQkJICAgICAgIGludDMyX3QgKmNydGNfeCwgaW50MzJfdCAqY3J0 Y195LA0KPiAtCQkJCSAgICAgICBib29sIGFsbG93X3NjYWxpbmcpDQo+ICtzdGF0aWMgdm9pZCBy YW5kb21pemVfcGxhbmVfY29vcmRpbmF0ZXMoZGF0YV90ICpkYXRhLCBpZ3RfcGxhbmVfdCAqcGxh bmUsDQo+ICsJCQkJCWRybU1vZGVNb2RlSW5mbyAqbW9kZSwNCj4gKwkJCQkJc3RydWN0IGlndF9m YiAqZmIsDQo+ICsJCQkJCXVpbnQzMl90ICpzcmNfdywgdWludDMyX3QgKnNyY19oLA0KPiArCQkJ CQl1aW50MzJfdCAqc3JjX3gsIHVpbnQzMl90ICpzcmNfeSwNCj4gKwkJCQkJdWludDMyX3QgKmNy dGNfdywgdWludDMyX3QgKmNydGNfaCwNCj4gKwkJCQkJaW50MzJfdCAqY3J0Y194LCBpbnQzMl90 ICpjcnRjX3ksDQo+ICsJCQkJCWJvb2wgYWxsb3dfc2NhbGluZykNCj4gIHsNCj4gKwlib29sIGlz X3l1diA9IGlndF9mb3JtYXRfaXNfeXV2KGZiLT5kcm1fZm9ybWF0KTsNCj4gKwl1aW50MzJfdCB3 aWR0aCA9IGZiLT53aWR0aCwgaGVpZ2h0ID0gZmItPmhlaWdodDsNCj4gIAlkb3VibGUgcmF0aW87 DQo+IC0NCj4gLQkvKiBSYW5kb21pemUgd2lkdGggYW5kIGhlaWdodCBpbiB0aGUgbW9kZSBkaW1l bnNpb25zIHJhbmdlLiAqLw0KPiAtCSp3aWR0aCA9IChyYW5kKCkgJSBtb2RlLT5oZGlzcGxheSkg KyAxOw0KPiAtCSpoZWlnaHQgPSAocmFuZCgpICUgbW9kZS0+dmRpc3BsYXkpICsgMTsNCj4gKwlp bnQgcmV0Ow0KPiAgDQo+ICAJLyogUmFuZG9taXplIHNvdXJjZSBvZmZzZXQgaW4gdGhlIGZpcnN0 IGhhbGYgb2YgdGhlIG9yaWdpbmFsIHNpemUuICovDQo+IC0JKnNyY194ID0gcmFuZCgpICUgKCp3 aWR0aCAvIDIpOw0KPiAtCSpzcmNfeSA9IHJhbmQoKSAlICgqaGVpZ2h0IC8gMik7DQo+ICsJKnNy Y194ID0gcmFuZCgpICUgKHdpZHRoIC8gMik7DQo+ICsJKnNyY195ID0gcmFuZCgpICUgKGhlaWdo dCAvIDIpOw0KPiAgDQo+ICAJLyogVGhlIHNvdXJjZSBzaXplIG9ubHkgaW5jbHVkZXMgdGhlIGFj dGl2ZSBzb3VyY2UgYXJlYS4gKi8NCj4gLQkqc3JjX3cgPSAqd2lkdGggLSAqc3JjX3g7DQo+IC0J KnNyY19oID0gKmhlaWdodCAtICpzcmNfeTsNCj4gKwkqc3JjX3cgPSB3aWR0aCAtICpzcmNfeDsN Cj4gKwkqc3JjX2ggPSBoZWlnaHQgLSAqc3JjX3k7DQo+ICANCj4gIAlpZiAoYWxsb3dfc2NhbGlu Zykgew0KPiAgCQkqY3J0Y193ID0gKHJhbmQoKSAlIG1vZGUtPmhkaXNwbGF5KSArIDE7DQo+IEBA IC04MjEsMTcgKzg0NiwyMiBAQCBzdGF0aWMgdm9pZCByYW5kb21pemVfcGxhbmVfZGltZW5zaW9u cyhkcm1Nb2RlTW9kZUluZm8gKm1vZGUsDQo+ICAJCSAqIERvbid0IGJvdGhlciB3aXRoIHNjYWxp bmcgaWYgZGltZW5zaW9ucyBhcmUgcXVpdGUgY2xvc2UgaW4NCj4gIAkJICogb3JkZXIgdG8gZ2V0 IG5vbi1zY2FsaW5nIGNhc2VzIG1vcmUgZnJlcXVlbnRseS4gQWxzbyBsaW1pdA0KPiAgCQkgKiBz Y2FsaW5nIHRvIDN4IHRvIGF2b2lkIGFncmVzc2l2ZSBmaWx0ZXJpbmcgdGhhdCBtYWtlcw0KPiAt CQkgKiBjb21wYXJpc29uIGxlc3MgcmVsaWFibGUuDQo+ICsJCSAqIGNvbXBhcmlzb24gbGVzcyBy ZWxpYWJsZSwgYW5kIGRvbid0IGdvIGFib3ZlIDJ4IGRvd25zYW1wbGluZw0KPiArCQkgKiB0byBh dm9pZCBwb3NzaWJsZSBodyBsaW1pdGF0aW9ucy4NCj4gIAkJICovDQo+ICANCj4gIAkJcmF0aW8g PSAoKGRvdWJsZSkgKmNydGNfdyAvICpzcmNfdyk7DQo+IC0JCWlmIChyYXRpbyA+IDAuOCAmJiBy YXRpbyA8IDEuMikNCj4gKwkJaWYgKHJhdGlvIDwgMC41KQ0KPiArCQkJKnNyY193ID0gKmNydGNf dyAqIDI7DQo+ICsJCWVsc2UgaWYgKHJhdGlvID4gMC44ICYmIHJhdGlvIDwgMS4yKQ0KPiAgCQkJ KmNydGNfdyA9ICpzcmNfdzsNCj4gIAkJZWxzZSBpZiAocmF0aW8gPiAzLjApDQo+ICAJCQkqY3J0 Y193ID0gKnNyY193ICogMzsNCj4gIA0KPiAgCQlyYXRpbyA9ICgoZG91YmxlKSAqY3J0Y19oIC8g KnNyY19oKTsNCj4gLQkJaWYgKHJhdGlvID4gMC44ICYmIHJhdGlvIDwgMS4yKQ0KPiArCQlpZiAo cmF0aW8gPCAwLjUpDQo+ICsJCQkqc3JjX2ggPSAqY3J0Y19oICogMjsNCj4gKwkJZWxzZSBpZiAo cmF0aW8gPiAwLjggJiYgcmF0aW8gPCAxLjIpDQo+ICAJCQkqY3J0Y19oID0gKnNyY19oOw0KPiAg CQllbHNlIGlmIChyYXRpbyA+IDMuMCkNCj4gIAkJCSpjcnRjX2ggPSAqc3JjX2ggKiAzOw0KPiBA QCAtODQ2LDggKzg3NiwxNSBAQCBzdGF0aWMgdm9pZCByYW5kb21pemVfcGxhbmVfZGltZW5zaW9u cyhkcm1Nb2RlTW9kZUluZm8gKm1vZGUsDQo+ICAJCSAqIHNjYWxlZCBjbGlwcGluZyBtYXkgcmVz dWx0IGluIGRlY2ltYWwgZGltZW5zaW9ucywgdGhhdCBtb3N0DQo+ICAJCSAqIGRyaXZlcnMgZG9u J3Qgc3VwcG9ydC4NCj4gIAkJICovDQo+IC0JCSpjcnRjX3ggPSByYW5kKCkgJSAobW9kZS0+aGRp c3BsYXkgLSAqY3J0Y193KTsNCj4gLQkJKmNydGNfeSA9IHJhbmQoKSAlIChtb2RlLT52ZGlzcGxh eSAtICpjcnRjX2gpOw0KPiArCQlpZiAoKmNydGNfdyA8IG1vZGUtPmhkaXNwbGF5KQ0KPiArCQkJ KmNydGNfeCA9IHJhbmQoKSAlIChtb2RlLT5oZGlzcGxheSAtICpjcnRjX3cpOw0KPiArCQllbHNl DQo+ICsJCQkqY3J0Y194ID0gMDsNCj4gKw0KPiArCQlpZiAoKmNydGNfaCA8IG1vZGUtPnZkaXNw bGF5KQ0KPiArCQkJKmNydGNfeSA9IHJhbmQoKSAlIChtb2RlLT52ZGlzcGxheSAtICpjcnRjX2gp Ow0KPiArCQllbHNlDQo+ICsJCQkqY3J0Y195ID0gMDsNCj4gIAl9IGVsc2Ugew0KPiAgCQkvKg0K PiAgCQkgKiBSYW5kb21pemUgdGhlIG9uLWNydGMgcG9zaXRpb24gYW5kIGFsbG93IHRoZSBwbGFu ZSB0byBnbw0KPiBAQCAtODU2LDYgKzg5Myw2MiBAQCBzdGF0aWMgdm9pZCByYW5kb21pemVfcGxh bmVfZGltZW5zaW9ucyhkcm1Nb2RlTW9kZUluZm8gKm1vZGUsDQo+ICAJCSpjcnRjX3ggPSAocmFu ZCgpICUgbW9kZS0+aGRpc3BsYXkpIC0gKmNydGNfdyAvIDI7DQo+ICAJCSpjcnRjX3kgPSAocmFu ZCgpICUgbW9kZS0+dmRpc3BsYXkpIC0gKmNydGNfaCAvIDI7DQo+ICAJfQ0KPiArDQo+ICsJY29u ZmlndXJlX3BsYW5lKHBsYW5lLCAqc3JjX3csICpzcmNfaCwgKnNyY194LCAqc3JjX3ksDQo+ICsJ CQkqY3J0Y193LCAqY3J0Y19oLCAqY3J0Y194LCAqY3J0Y195LCBmYik7DQo+ICsJcmV0ID0gaWd0 X2Rpc3BsYXlfdHJ5X2NvbW1pdF9hdG9taWMoJmRhdGEtPmRpc3BsYXksDQo+ICsJCQkJCSAgICBE Uk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwNCj4gKwkJCQkJICAgIERSTV9NT0RFX0FUT01JQ19B TExPV19NT0RFU0VULA0KPiArCQkJCQkgICAgTlVMTCk7DQo+ICsJaWYgKCFyZXQpDQo+ICsJCXJl dHVybjsNCj4gKw0KPiArCS8qIENvb3JkaW5hdGVzIGFyZSBsb2dnZWQgaW4gdGhlIGR1bXBlZCBk ZWJ1ZyBsb2csIHNvIG9ubHkgcmVwb3J0IHcvaCBvbiBmYWlsdXJlIGhlcmUuICovDQo+ICsJaWd0 X2Fzc2VydF9mKHJldCAhPSAtRU5PU1BDLCJGYWlsdXJlIGluIHRlc3RjYXNlLCBpbnZhbGlkIGNv b3JkaW5hdGVzIG9uIGEgJXV4JXUgZmJcbiIsIHdpZHRoLCBoZWlnaHQpOw0KPiArDQo+ICsJLyog TWFrZSBZVVYgY29vcmRpbmF0ZXMgYSBtdWx0aXBsZSBvZiAyIGFuZCByZXRyeSB0aGUgbWF0aC4g Ki8NCj4gKwlpZiAoaXNfeXV2KSB7DQo+ICsJCSpzcmNfeCAmPSB+MTsNCj4gKwkJKnNyY195ICY9 IH4xOw0KPiArCQkqc3JjX3cgJj0gfjE7DQo+ICsJCSpzcmNfaCAmPSB+MTsNCj4gKwkJLyogVG8g aGFuZGxlIDE6MSBzY2FsaW5nLCBjbGVhciBjcnRjX3cvaCB0b28uICovDQo+ICsJCSpjcnRjX3cg Jj0gfjE7DQo+ICsJCSpjcnRjX2ggJj0gfjE7DQo+ICsNCj4gKwkJaWYgKCpjcnRjX3ggPCAwICYm ICgqY3J0Y194ICYgMSkpDQo+ICsJCQkoKmNydGNfeCkrKzsNCj4gKwkJZWxzZQ0KPiArCQkJKmNy dGNfeCAmPSB+MTsNCj4gKw0KPiArCQkvKiBJZiBuZWdhdGl2ZSwgcm91bmQgdXAgdG8gMCBpbnN0 ZWFkIG9mIGRvd24gKi8NCj4gKwkJaWYgKCpjcnRjX3kgPCAwICYmICgqY3J0Y195ICYgMSkpDQo+ ICsJCQkoKmNydGNfeSkrKzsNCj4gKwkJZWxzZQ0KPiArCQkJKmNydGNfeSAmPSB+MTsNCj4gKw0K PiArCQljb25maWd1cmVfcGxhbmUocGxhbmUsICpzcmNfdywgKnNyY19oLCAqc3JjX3gsICpzcmNf eSwgKmNydGNfdywNCj4gKwkJCQkqY3J0Y19oLCAqY3J0Y194LCAqY3J0Y195LCBmYik7DQo+ICsJ CXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXRfYXRvbWljKCZkYXRhLT5kaXNwbGF5LA0KPiAr CQkJCQkJRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSB8DQo+ICsJCQkJCQlEUk1fTU9ERV9BVE9N SUNfQUxMT1dfTU9ERVNFVCwNCj4gKwkJCQkJCU5VTEwpOw0KPiArCQlpZiAoIXJldCkNCj4gKwkJ CXJldHVybjsNCj4gKwl9DQo+ICsNCj4gKwlpZ3RfYXNzZXJ0KCFyZXQgfHwgYWxsb3dfc2NhbGlu Zyk7DQo+ICsJaWd0X2luZm8oIlNjYWxpbmcgcmF0aW8gJWcgLyAlZyBmYWlsZWQsIHRyeWluZyB3 aXRob3V0IHNjYWxpbmcuXG4iLA0KPiArCQkgICgoZG91YmxlKSAqY3J0Y193IC8gKnNyY193KSwg KChkb3VibGUpICpjcnRjX2ggLyAqc3JjX2gpKTsNCj4gKw0KPiArCSpjcnRjX3cgPSAqc3JjX3c7 DQo+ICsJKmNydGNfaCA9ICpzcmNfaDsNCj4gKw0KPiArCWNvbmZpZ3VyZV9wbGFuZShwbGFuZSwg KnNyY193LCAqc3JjX2gsICpzcmNfeCwgKnNyY195LCAqY3J0Y193LA0KPiArCQkJKmNydGNfaCwg KmNydGNfeCwgKmNydGNfeSwgZmIpOw0KPiArCWlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoJmRh dGEtPmRpc3BsYXksDQo+ICsJCQkJICBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwNCj4gKwkJ CQkgIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULCBOVUxMKTsNCj4gIH0NCj4gIA0KPiAg c3RhdGljIHZvaWQgYmxpdF9wbGFuZV9jYWlybyhkYXRhX3QgKmRhdGEsIGNhaXJvX3N1cmZhY2Vf dCAqcmVzdWx0LA0KPiBAQCAtOTE0LDIwICsxMDA3LDYgQEAgc3RhdGljIHZvaWQgYmxpdF9wbGFu ZV9jYWlybyhkYXRhX3QgKmRhdGEsIGNhaXJvX3N1cmZhY2VfdCAqcmVzdWx0LA0KPiAgCWNhaXJv X2Rlc3Ryb3koY3IpOw0KPiAgfQ0KPiAgDQo+IC1zdGF0aWMgdm9pZCBjb25maWd1cmVfcGxhbmUo aWd0X3BsYW5lX3QgKnBsYW5lLCB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gsDQo+IC0J CQkgICAgdWludDMyX3Qgc3JjX3gsIHVpbnQzMl90IHNyY195LCB1aW50MzJfdCBjcnRjX3csDQo+ IC0JCQkgICAgdWludDMyX3QgY3J0Y19oLCBpbnQzMl90IGNydGNfeCwgaW50MzJfdCBjcnRjX3ks DQo+IC0JCQkgICAgc3RydWN0IGlndF9mYiAqZmIpDQo+IC17DQo+IC0JaWd0X3BsYW5lX3NldF9m YihwbGFuZSwgZmIpOw0KPiAtDQo+IC0JaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFuZSwgY3J0 Y194LCBjcnRjX3kpOw0KPiAtCWlndF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgY3J0Y193LCBjcnRj X2gpOw0KPiAtDQo+IC0JaWd0X2ZiX3NldF9wb3NpdGlvbihmYiwgcGxhbmUsIHNyY194LCBzcmNf eSk7DQo+IC0JaWd0X2ZiX3NldF9zaXplKGZiLCBwbGFuZSwgc3JjX3csIHNyY19oKTsNCj4gLX0N Cj4gLQ0KPiAgc3RhdGljIHZvaWQgcHJlcGFyZV9yYW5kb21pemVkX3BsYW5lKGRhdGFfdCAqZGF0 YSwNCj4gIAkJCQkgICAgIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwNCj4gIAkJCQkgICAgIGlndF9w bGFuZV90ICpwbGFuZSwNCj4gQEAgLTk0OCw1MSArMTAyNyw0OSBAQCBzdGF0aWMgdm9pZCBwcmVw YXJlX3JhbmRvbWl6ZWRfcGxhbmUoZGF0YV90ICpkYXRhLA0KPiAgCWJvb2wgdGlsZWQ7DQo+ICAJ aW50IGZiX2lkOw0KPiAgDQo+IC0JcmFuZG9taXplX3BsYW5lX2RpbWVuc2lvbnMobW9kZSwgJm92 ZXJsYXlfZmJfdywgJm92ZXJsYXlfZmJfaCwNCj4gLQkJCQkgICAmb3ZlcmxheV9zcmNfdywgJm92 ZXJsYXlfc3JjX2gsDQo+IC0JCQkJICAgJm92ZXJsYXlfc3JjX3gsICZvdmVybGF5X3NyY195LA0K PiAtCQkJCSAgICZvdmVybGF5X2NydGNfdywgJm92ZXJsYXlfY3J0Y19oLA0KPiAtCQkJCSAgICZv dmVybGF5X2NydGNfeCwgJm92ZXJsYXlfY3J0Y195LA0KPiAtCQkJCSAgIGFsbG93X3NjYWxpbmcp Ow0KPiArCXJhbmRvbWl6ZV9wbGFuZV9zZXR1cChkYXRhLCBwbGFuZSwgbW9kZSwgJm92ZXJsYXlf ZmJfdywgJm92ZXJsYXlfZmJfaCwNCj4gKwkJCSAgICAgICZmb3JtYXQsICZtb2RpZmllciwgYWxs b3dfeXV2KTsNCj4gIA0KPiAtCWlndF9kZWJ1ZygiUGxhbmUgJWQ6IGZyYW1lYnVmZmVyIHNpemUg JWR4JWRcbiIsIGluZGV4LA0KPiAtCQkgIG92ZXJsYXlfZmJfdywgb3ZlcmxheV9mYl9oKTsNCj4g LQlpZ3RfZGVidWcoIlBsYW5lICVkOiBvbi1jcnRjIHNpemUgJWR4JWRcbiIsIGluZGV4LA0KPiAt CQkgIG92ZXJsYXlfY3J0Y193LCBvdmVybGF5X2NydGNfaCk7DQo+IC0JaWd0X2RlYnVnKCJQbGFu ZSAlZDogb24tY3J0YyBwb3NpdGlvbiAlZHglZFxuIiwgaW5kZXgsDQo+IC0JCSAgb3ZlcmxheV9j cnRjX3gsIG92ZXJsYXlfY3J0Y195KTsNCj4gLQlpZ3RfZGVidWcoIlBsYW5lICVkOiBpbi1mcmFt ZWJ1ZmZlciBzaXplICVkeCVkXG4iLCBpbmRleCwNCj4gLQkJICBvdmVybGF5X3NyY193LCBvdmVy bGF5X3NyY19oKTsNCj4gLQlpZ3RfZGVidWcoIlBsYW5lICVkOiBpbi1mcmFtZWJ1ZmZlciBwb3Np dGlvbiAlZHglZFxuIiwgaW5kZXgsDQo+IC0JCSAgb3ZlcmxheV9zcmNfeCwgb3ZlcmxheV9zcmNf eSk7DQo+ICsJdGlsZWQgPSAobW9kaWZpZXIgIT0gTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSk7 DQo+ICsJaWd0X2RlYnVnKCJQbGFuZSAlZDogZnJhbWVidWZmZXIgc2l6ZSAlZHglZCAlcyBmb3Jt YXQgKCVzKVxuIiwNCj4gKwkJICBpbmRleCwgb3ZlcmxheV9mYl93LCBvdmVybGF5X2ZiX2gsDQo+ ICsJCSAgaWd0X2Zvcm1hdF9zdHIoZm9ybWF0KSwgdGlsZWQgPyAidGlsZWQiIDogImxpbmVhciIp Ow0KPiAgDQo+ICAJLyogR2V0IGEgcGF0dGVybiBmcmFtZWJ1ZmZlciBmb3IgdGhlIG92ZXJsYXkg cGxhbmUuICovDQo+ICAJZmJfaWQgPSBjaGFtZWxpdW1fZ2V0X3BhdHRlcm5fZmIoZGF0YSwgb3Zl cmxheV9mYl93LCBvdmVybGF5X2ZiX2gsDQo+ICAJCQkJCSBEUk1fRk9STUFUX1hSR0I4ODg4LCAz MiwgJnBhdHRlcm5fZmIpOw0KPiAgCWlndF9hc3NlcnQoZmJfaWQgPiAwKTsNCj4gIA0KPiAtCXJh bmRvbWl6ZV9wbGFuZV9mb3JtYXRfc3RyaWRlKHBsYW5lLCBvdmVybGF5X2ZiX3csIG92ZXJsYXlf ZmJfaCwNCj4gLQkJCQkgICAgICAmZm9ybWF0LCAmbW9kaWZpZXIsICZzdHJpZGUsIGFsbG93X3l1 dik7DQo+IC0NCj4gLQl0aWxlZCA9IChtb2RpZmllciAhPSBMT0NBTF9EUk1fRk9STUFUX01PRF9O T05FKTsNCj4gKwlyYW5kb21pemVfcGxhbmVfc3RyaWRlKGRhdGEsIG92ZXJsYXlfZmJfdywgb3Zl cmxheV9mYl9oLA0KPiArCQkJICAgICAgIGZvcm1hdCwgbW9kaWZpZXIsICZzdHJpZGUpOw0KPiAg DQo+IC0JaWd0X2RlYnVnKCJQbGFuZSAlZDogJXMgZm9ybWF0ICglcykgd2l0aCBzdHJpZGUgJWxk XG4iLCBpbmRleCwNCj4gLQkJICBpZ3RfZm9ybWF0X3N0cihmb3JtYXQpLCB0aWxlZCA/ICJ0aWxl ZCIgOiAibGluZWFyIiwgc3RyaWRlKTsNCj4gKwlpZ3RfZGVidWcoIlBsYW5lICVkOiBzdHJpZGUg JWxkXG4iLCBpbmRleCwgc3RyaWRlKTsNCj4gIA0KPiAgCWZiX2lkID0gaWd0X2ZiX2NvbnZlcnRf d2l0aF9zdHJpZGUob3ZlcmxheV9mYiwgJnBhdHRlcm5fZmIsIGZvcm1hdCwNCj4gIAkJCQkJICAg bW9kaWZpZXIsIHN0cmlkZSk7DQo+ICAJaWd0X2Fzc2VydChmYl9pZCA+IDApOw0KPiAgDQo+ICsJ cmFuZG9taXplX3BsYW5lX2Nvb3JkaW5hdGVzKGRhdGEsIHBsYW5lLCBtb2RlLCBvdmVybGF5X2Zi LA0KPiArCQkJCSAgICAmb3ZlcmxheV9zcmNfdywgJm92ZXJsYXlfc3JjX2gsDQo+ICsJCQkJICAg ICZvdmVybGF5X3NyY194LCAmb3ZlcmxheV9zcmNfeSwNCj4gKwkJCQkgICAgJm92ZXJsYXlfY3J0 Y193LCAmb3ZlcmxheV9jcnRjX2gsDQo+ICsJCQkJICAgICZvdmVybGF5X2NydGNfeCwgJm92ZXJs YXlfY3J0Y195LA0KPiArCQkJCSAgICBhbGxvd19zY2FsaW5nKTsNCj4gKw0KPiArCWlndF9kZWJ1 ZygiUGxhbmUgJWQ6IGluLWZyYW1lYnVmZmVyIHNpemUgJWR4JWRcbiIsIGluZGV4LA0KPiArCQkg IG92ZXJsYXlfc3JjX3csIG92ZXJsYXlfc3JjX2gpOw0KPiArCWlndF9kZWJ1ZygiUGxhbmUgJWQ6 IGluLWZyYW1lYnVmZmVyIHBvc2l0aW9uICVkeCVkXG4iLCBpbmRleCwNCj4gKwkJICBvdmVybGF5 X3NyY194LCBvdmVybGF5X3NyY195KTsNCj4gKwlpZ3RfZGVidWcoIlBsYW5lICVkOiBvbi1jcnRj IHNpemUgJWR4JWRcbiIsIGluZGV4LA0KPiArCQkgIG92ZXJsYXlfY3J0Y193LCBvdmVybGF5X2Ny dGNfaCk7DQo+ICsJaWd0X2RlYnVnKCJQbGFuZSAlZDogb24tY3J0YyBwb3NpdGlvbiAlZHglZFxu IiwgaW5kZXgsDQo+ICsJCSAgb3ZlcmxheV9jcnRjX3gsIG92ZXJsYXlfY3J0Y195KTsNCj4gKw0K PiAgCWJsaXRfcGxhbmVfY2Fpcm8oZGF0YSwgcmVzdWx0X3N1cmZhY2UsIG92ZXJsYXlfc3JjX3cs IG92ZXJsYXlfc3JjX2gsDQo+ICAJCQkgb3ZlcmxheV9zcmNfeCwgb3ZlcmxheV9zcmNfeSwNCj4g IAkJCSBvdmVybGF5X2NydGNfdywgb3ZlcmxheV9jcnRjX2gsDQo+ICAJCQkgb3ZlcmxheV9jcnRj X3gsIG92ZXJsYXlfY3J0Y195LCAmcGF0dGVybl9mYik7DQo+ICANCj4gLQljb25maWd1cmVfcGxh bmUocGxhbmUsIG92ZXJsYXlfc3JjX3csIG92ZXJsYXlfc3JjX2gsDQo+IC0JCQlvdmVybGF5X3Ny Y194LCBvdmVybGF5X3NyY195LA0KPiAtCQkJb3ZlcmxheV9jcnRjX3csIG92ZXJsYXlfY3J0Y19o LA0KPiAtCQkJb3ZlcmxheV9jcnRjX3gsIG92ZXJsYXlfY3J0Y195LCBvdmVybGF5X2ZiKTsNCj4g LQ0KPiAgCS8qIFJlbW92ZSB0aGUgb3JpZ2luYWwgcGF0dGVybiBmcmFtZWJ1ZmZlci4gKi8NCj4g IAlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJnBhdHRlcm5fZmIpOw0KPiAgfQ0KPiBAQCAt MTA2OCw3ICsxMTQ1LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9kaXNwbGF5X3BsYW5lc19yYW5kb20o ZGF0YV90ICpkYXRhLA0KPiAgCQlpZ3Rfb3V0cHV0X2NvdW50X3BsYW5lX3R5cGUob3V0cHV0LCBE Uk1fUExBTkVfVFlQRV9PVkVSTEFZKTsNCj4gIA0KPiAgCS8qIExpbWl0IHRoZSBudW1iZXIgb2Yg cGxhbmVzIHRvIGEgcmVhc29uYWJsZSBzY2VuZS4gKi8NCj4gLQlvdmVybGF5X3BsYW5lc19tYXgg PSBtYXgob3ZlcmxheV9wbGFuZXNfbWF4LCA0KTsNCj4gKwlvdmVybGF5X3BsYW5lc19tYXggPSBt aW4ob3ZlcmxheV9wbGFuZXNfbWF4LCA0KTsNCj4gIA0KPiAgCW92ZXJsYXlfcGxhbmVzX2NvdW50 ID0gKHJhbmQoKSAlIG92ZXJsYXlfcGxhbmVzX21heCkgKyAxOw0KPiAgCWlndF9kZWJ1ZygiVXNp bmcgJWQgb3ZlcmxheSBwbGFuZXNcbiIsIG92ZXJsYXlfcGxhbmVzX2NvdW50KTsNCj4gQEAgLTEx MjEsMTcgKzExOTgsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Rpc3BsYXlfcGxhbmVzX3JhbmRvbShk YXRhX3QgKmRhdGEsDQo+ICAJCWNoYW1lbGl1bV9kZXN0cm95X2ZyYW1lX2R1bXAoZHVtcCk7DQo+ ICAJfQ0KPiAgDQo+IC0JZm9yIChpID0gMDsgaSA8IG92ZXJsYXlfcGxhbmVzX2NvdW50OyBpKysp IHsNCj4gLQkJc3RydWN0IGlndF9mYiAqb3ZlcmxheV9mYiA9ICZvdmVybGF5X2Zic1tpXTsNCj4g LQkJaWd0X3BsYW5lX3QgKnBsYW5lOw0KPiAtDQo+IC0JCXBsYW5lID0gaWd0X291dHB1dF9nZXRf cGxhbmVfdHlwZV9pbmRleChvdXRwdXQsDQo+IC0JCQkJCQkJRFJNX1BMQU5FX1RZUEVfT1ZFUkxB WSwNCj4gLQkJCQkJCQlpKTsNCj4gLQkJaWd0X2Fzc2VydChwbGFuZSk7DQo+IC0NCj4gLQkJaWd0 X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsIG92ZXJsYXlfZmIpOw0KPiAtCX0NCj4gKwlmb3IgKGkg PSAwOyBpIDwgb3ZlcmxheV9wbGFuZXNfY291bnQ7IGkrKykNCj4gKwkJaWd0X3JlbW92ZV9mYihk YXRhLT5kcm1fZmQsICZvdmVybGF5X2Zic1tpXSk7DQo+ICANCj4gIAlmcmVlKG92ZXJsYXlfZmJz KTsNCj4gIA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2