From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8882B892F2 for ; Fri, 22 Mar 2019 07:47:05 +0000 (UTC) References: <20190321160528.4131-1-andi.shyti@intel.com> <20190321160528.4131-5-andi.shyti@intel.com> From: Tvrtko Ursulin Message-ID: <6b531677-8e74-c51c-535a-bb5e1c1f2ac7@linux.intel.com> Date: Fri, 22 Mar 2019 07:47:02 +0000 MIME-Version: 1.0 In-Reply-To: <20190321160528.4131-5-andi.shyti@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v15 4/5] lib/i915: add gem_engine_topology library and for_each loop definition List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Andi Shyti , IGT dev Cc: Andi Shyti List-ID: Ck9uIDIxLzAzLzIwMTkgMTY6MDUsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gVGhlIGdlbV9lbmdpbmVf dG9wb2xvZ3kgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdAo+IGludGVyZmFjZSB3 aXRoIHRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgo+IAo+IFRoZSBsaWJy YXJ5J3MgYWNjZXNzIHBvaW50IGlzIHRoZSAnaW50ZWxfaW5pdF9lbmdpbmVfbGlzdCgpJwo+IGZ1 bmN0aW9uIHRoYXQsIGV2ZXJ5dGltZSBpcyBjYWxsZWQsIGdlbmVyYXRlcyB0aGUgbGlzdCBvZiBh Y3RpdmUKPiBlbmdpbmVzIGFuZCByZXR1cm5zIHRoZW0gaW4gYSAnc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhJy4gVGhlCj4gc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgdGhlIGVuZ2luZXMgdGhhdCBh cmUgYWN0aXZlbHkgcHJlc2VudCBpbgo+IHRoZSBHUFUuCj4gCj4gVGhlIGZ1bmN0aW9uIGNhbiB3 b3JrIGluIGJvdGggdGhlIGNhc2VzIHRoYXQgdGhlIHF1ZXJ5IGFuZAo+IGdldHBhcmFtIGlvY3Rs cyBhcmUgaW1wbGVtZW50ZWQgb3Igbm90IGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSW4KPiBjYXNl IHRoZXkgYXJlIGltcGxlbWVudGVkLCBhIHF1ZXJ5IGlzIG1hZGUgdG8gdGhlIGRyaXZlciB0byBm ZXRjaAo+IHRoZSBsaXN0IG9mIGFjdGl2ZSBlbmdpbmVzLiBJbiBjYXNlIHRoZXkgYXJlIG5vdCBp bXBsZW1lbnRlZCwgdGhlCj4gbGlzdCBpcyB0YWtlbiBmcm9tIHRoZSAnaW50ZWxfZXhlY3V0aW9u X2VuZ2luZXMyJyBhcnJheSBhbmQKPiBzdG9yZWQgb25seSBhZnRlciBjaGVja2luZyB0aGVpciBw cmVzZW5jZS4KPiAKPiBUaGUgZ2VtX2VuZ2luZV90b3BvbG9neSBsaWJyYXJ5IHByb3ZpZGVzIHNv bWUgaXRlcmF0aW9uIGhlbHBlcnM6Cj4gCj4gICAtIGludGVsX2dldF9jdXJyZW50X2VuZ2luZSgp OiBwcm92aWRlcyB0aGUgY3VycmVudCBlbmdpbmUgaW4gdGhlCj4gICAgIGl0ZXJhdGlvbi4KPiAK PiAgIC0gaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKCk6IHByb3ZpZGVzIHRoZSBj dXJyZW50Cj4gICAgIHBoeXNpY2FsIGVuZ2luZSwgaWYgdGhlIGN1cnJlbnQgZW5naW5lIGlzIGEg dmlydHVhbCBlbmdpbmUsCj4gICAgIGl0IG1vdmVzIGZvcndhcmQgdW50aWwgaXQgZmluZHMgYSBw aHlzaWNhbCBlbmdpbmUuCj4gCj4gICAtIGludGVsX25leHRfZW5naW5lKCkgaXQganVzdCBpbmNy ZW1lbnRzIHRoZSBjb3VudGVyIHNvIHRoYXQgaXQKPiAgICAgcG9pbnRzIHRvIHRoZSBuZXh0IGVu Z2luZS4KPiAKPiBFeHRlbmQgdGhlICdmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UnIHNv IHRoYXQgaXQgY2FuIGxvb3AKPiB1c2luZyB0aGUgbmV3ICdpbnRlbF9pbml0X2VuZ2luZV9saXN0 KCknIGFuZCByZW5hbWUgaXQgdG8KPiAnZm9yX2VhY2hfY29udGV4dF9lbmdpbmUnLgo+IAo+IE1v dmUgJ19fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlJyB0byBnZW1fZW5naW5lX3RvcG9s b2d5LmgKPiBhbmQgcmVuYW1lIGl0IHRvICdfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUnLgo+IAo+ IFVwZGF0ZSBhY2NvcmRpbmdseSB0ZXN0cy9wZXJmX3BtdS5jIHRvIHVzZSBjb3JyZWN0bHkgdGhl IG5ldwo+IGZvcl9lYWNoIGxvcHBzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFu ZGkuc2h5dGlAaW50ZWwuY29tPgo+IC0tLQo+ICAgbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAg ICAgIHwgICAyICsKPiAgIGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyB8IDIyMiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9w b2xvZ3kuaCB8ICA2MyArKysrKysrKysrCj4gICBsaWIvaWd0LmggICAgICAgICAgICAgICAgICAg ICAgfCAgIDEgKwo+ICAgbGliL2lndF9ndC5oICAgICAgICAgICAgICAgICAgIHwgICA4ICstCj4g ICBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICAgdGVzdHMvcGVyZl9w bXUuYyAgICAgICAgICAgICAgIHwgIDEyICstCj4gICA3IGZpbGVzIGNoYW5nZWQsIDI5NiBpbnNl cnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkx NS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9n ZW1fZW5naW5lX3RvcG9sb2d5LmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJj ZXMgYi9saWIvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IGNmMjcyMDk4MTcwNy4uNzU3YmQ3YTE3 ZWJlIDEwMDY0NAo+IC0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvbGliL01ha2Vm aWxlLnNvdXJjZXMKPiBAQCAtMTMsNiArMTMsOCBAQCBsaWJfc291cmNlX2xpc3QgPQkgCVwKPiAg IAlpOTE1L2dlbV9yaW5nLmMJXAo+ICAgCWk5MTUvZ2VtX21tYW4uYwlcCj4gICAJaTkxNS9nZW1f bW1hbi5oCVwKPiArCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKPiArCWk5MTUvZ2VtX2Vu Z2luZV90b3BvbG9neS5oCVwKPiAgIAlpOTE1XzNkLmgJCVwKPiAgIAlpOTE1X3JlZy5oCQlcCj4g ICAJaTkxNV9wY2lpZHMuaAkJXAo+IGRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5lX3Rv cG9sb2d5LmMgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMTE0NGM0OWExOTkzCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwo+IEBAIC0wLDAgKzEsMjIy IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAq Cj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4g KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImRybXRlc3QuaCIK PiArI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCj4gKwo+ICsjaW5jbHVkZSAiaTkxNS9nZW1f ZW5naW5lX3RvcG9sb2d5LmgiCj4gKwo+ICsjZGVmaW5lIFNJWkVPRl9DVFhfUEFSQU0Jb2Zmc2V0 b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzLCBcCj4gKwkJCQkJY2xhc3NfaW5z dGFuY2VbSTkxNV9FWEVDX1JJTkdfTUFTSyArIDFdKQo+ICsjZGVmaW5lIFNJWkVPRl9RVUVSWQkJ b2Zmc2V0b2Yoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvLCBcCj4gKwkJCQkJZW5n aW5lc1tJOTE1X0VYRUNfUklOR19NQVNLICsgMV0pCgpTaW5jZSB3ZSBub3cgaGF2ZSBmb3VyIGlu c3RhbmNlcyBvZiBJOTE1X0VYRUNfUklOR19NQVNLICsgMSwgYW5kIEkgCmRpc2xpa2UgaXQgYW55 d2F5LCBJIHN1Z2dlc3QgeW91IGFkZCBzb21ldGhpbmcgbGlrZToKCi8qCiAgKiBMaW1pdCB3aGF0 IHdlIHN1cHBvcnQgZm9yIHNpbXBsaWNpdHkgZHVlIGxpbWl0YXRpb24gaW4gaG93IG11Y2ggd2UK ICAqIGNhbiBhZGRyZXNzIHZpYSBleGVjYnVmMi4KICAqLwojZGVmaW5lIF9fTUFYX0VOR0lORV9E QVRBIChJOTE1X0VYRUNfUklOR19NQVNLICsgMSkKCj4gKwo+ICtzdGF0aWMgaW50IF9fZ2VtX3F1 ZXJ5KGludCBmZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5ICpxKQo+ICt7Cj4gKwlpbnQgZXJyID0g MDsKPiArCj4gKwlpZiAoaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9RVUVSWSwgcSkpCj4g KwkJZXJyID0gLWVycm5vOwo+ICsKPiArCWVycm5vID0gMDsKPiArCXJldHVybiBlcnI7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGdlbV9xdWVyeShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVy eSAqcSkKPiArewo+ICsJaWd0X2Fzc2VydF9lcShfX2dlbV9xdWVyeShmZCwgcSksIDApOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBxdWVyeV9lbmdpbmVzKGludCBmZCwKPiArCQkJICBzdHJ1Y3Qg ZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKnF1ZXJ5X2VuZ2luZXMsCj4gKwkJCSAgaW50IGxl bmd0aCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gaXRlbSA9IHsgfTsKPiAr CXN0cnVjdCBkcm1faTkxNV9xdWVyeSBxdWVyeSA9IHsgfTsKPiArCj4gKwlpdGVtLnF1ZXJ5X2lk ID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX0lORk87Cj4gKwlxdWVyeS5pdGVtc19wdHIgPSB0b191 c2VyX3BvaW50ZXIoJml0ZW0pOwo+ICsJcXVlcnkubnVtX2l0ZW1zID0gMTsKPiArCWl0ZW0ubGVu Z3RoID0gbGVuZ3RoOwo+ICsKPiArCWl0ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50ZXIocXVl cnlfZW5naW5lcyk7Cj4gKwo+ICsJZ2VtX3F1ZXJ5KGZkLCAmcXVlcnkpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBjdHhfbWFwX2VuZ2luZXMoaW50IGZkLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Rh dGEgKmVkLAo+ICsJCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICpjdHhf cGFyYW0pCj4gK3sKPiArCXN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqY3R4X2Vu Z2luZSA9Cj4gKwkJCShzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMqKSBjdHhfcGFy YW0tPnZhbHVlOwo+ICsJaW50IGkgPSAwOwo+ICsKPiArCWZvciAodHlwZW9mKGN0eF9lbmdpbmUt PmNsYXNzX2luc3RhbmNlWzBdKSAqcCA9Cj4gKwkJCSZjdHhfZW5naW5lLT5jbGFzc19pbnN0YW5j ZVswXTsKPiArCQkJCQkJaSA8IGVkLT5uZW5naW5lczsgaSsrLCBwKyspIHsKPiArCQlwLT5lbmdp bmVfY2xhc3MgPSBlZC0+ZW5naW5lc1tpXS5jbGFzczsKPiArCQlwLT5lbmdpbmVfaW5zdGFuY2Ug PSBlZC0+ZW5naW5lc1tpXS5pbnN0YW5jZTsKPiArCX0KPiArCj4gKwljdHhfcGFyYW0tPnNpemUg PSBvZmZzZXRvZih0eXBlb2YoKmN0eF9lbmdpbmUpLCBjbGFzc19pbnN0YW5jZVtpXSk7Cj4gKwo+ ICsJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCBjdHhfcGFyYW0pOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBpbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyLCBj b25zdCBjaGFyICpuYW1lLAo+ICsJCQl1aW50MTZfdCBjbGFzcywgdWludDE2X3QgaW5zdGFuY2Us IHVpbnQ2NF90IGZsYWdzKQoKWW91IGFyZSBrZWVwaW5nIG5hbWUgZm9yIHRoZSBmdXR1cmU/IChJ dCBpcyB1bnVzZWQgYXQgdGhlIG1vbWVudC4pCgo+ICt7Cj4gKwlzdGF0aWMgY29uc3QgY2hhciAq dW5rbm93bl9uYW1lID0gInVua25vd24iLAo+ICsJCQkgICp2aXJ0dWFsX25hbWUgPSAidmlydHVh bCI7CgpVbnVzdWFsIHN0eWxlIGJ1dCBpdCBpcyBhY3R1YWxseSByZWFkYWJsZSBzbyBJIHRoaW5r IEkgbGlrZSBpdC4KCj4gKwo+ICsJZTItPmNsYXNzICAgID0gY2xhc3M7Cj4gKwllMi0+aW5zdGFu Y2UgPSBpbnN0YW5jZTsKPiArCWUyLT5mbGFncyAgICA9IGZsYWdzOwo+ICsKPiArCWlmIChjbGFz cyA8IDAgJiYgaW5zdGFuY2UgPCAwKSB7Cj4gKwkJZTItPm5hbWUgPSB2aXJ0dWFsX25hbWU7Cj4g Kwl9IGVsc2Ugewo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqX19l MjsKPiArCj4gKwkJX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKF9fZTIpCj4gKwkJCWlmIChfX2Uy LT5jbGFzcyA9PSBjbGFzcyAmJiBfX2UyLT5pbnN0YW5jZSA9PSBpbnN0YW5jZSkKPiArCQkJCWJy ZWFrOwo+ICsKPiArCQllMi0+bmFtZSA9IF9fZTItPm5hbWUgPyBfX2UyLT5uYW1lIDogdW5rbm93 bl9uYW1lOwoKSSd2ZSBub3cgc3RhcnRlZCB0byB3b3JyeSBhYm91dCBob3cgd2lsbCBDSS9idWds b2cgaGFuZGxlIHVzIGZvcmdldHRpbmcgCnRvIGV4cGFuZCB0aGUgc3RhdGljIGxpc3QuIChNb3Jl IHRoYW4gb25lIHN1YnRlc3Qgb2YgYSBzYW1lIG5hbWUgZm9yIAoidGVzdC0kZW5naW5lX25hbWUi IG9uZXM/KSBEbyB3ZSB3YW50IGFuZCBpZ3Rfd2FybiBvbiB1bmtub3duIGVuZ2luZXMgdG8gCm1h a2UgaXQgbW9yZSB2aXNpYmxlPyBPciBldmVuIGp1c3QgY3Jhc2g/Cgo+ICsJfQo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBxdWVyeV9lbmdpbmVfbGlzdChpbnQgZmQsIHN0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSAqZWQpCj4gK3sKPiArCXVpbnQ4X3QgcXVlcnlfYnVmZmVyW1NJWkVPRl9RVUVSWV0g PSB7IH07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKnF1ZXJ5X2VuZ2lu ZSA9Cj4gKwkJCShzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKikgcXVlcnlfYnVm ZmVyOwo+ICsJaW50IGk7Cj4gKwo+ICsJcXVlcnlfZW5naW5lcyhmZCwgcXVlcnlfZW5naW5lLCBT SVpFT0ZfUVVFUlkpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBxdWVyeV9lbmdpbmUtPm51bV9l bmdpbmVzOyBpKyspCj4gKwkJaW5pdF9lbmdpbmUoJmVkLT5lbmdpbmVzW2ldLCBOVUxMLAo+ICsJ CQkgICBxdWVyeV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lX2NsYXNzLAo+ICsJCQkgICBxdWVy eV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lX2luc3RhbmNlLCBpKTsKPiArCj4gKwllZC0+bmVu Z2luZXMgPSBxdWVyeV9lbmdpbmUtPm51bV9lbmdpbmVzOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgaW50 ZWxfZW5naW5lX2RhdGEgaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChpbnQgZmQsIHVpbnQzMl90IGN0 eF9pZCkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGVuZ2luZV9kYXRhID0geyB9 Owo+ICsJdWludDhfdCBidWZmW1NJWkVPRl9DVFhfUEFSQU1dID0geyB9Owo+ICsKPiArCXN0cnVj dCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqZW5naW5lcyA9Cj4gKwkJKHN0cnVjdCBpOTE1 X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqKSBidWZmOwo+ICsKPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbSBwYXJhbSA9IHsKPiArCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFS QU1fRU5HSU5FUywKPiArCQkuY3R4X2lkID0gY3R4X2lkLAo+ICsJCS5zaXplID0gU0laRU9GX0NU WF9QQVJBTSwKPiArCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoZW5naW5lcyksCj4gKwl9Owo+ ICsKPiArCWludCBpLCByZXQ7Cj4gKwl1bnNpZ25lZCBpbnQgbmVuZ2luZXM7Cj4gKwo+ICsJcmV0 ID0gX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZwYXJhbSk7Cj4gKwo+ICsJbmVuZ2luZXMg PSBwYXJhbS5zaXplID4gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcykg Pwo+ICsJCSAgIChwYXJhbS5zaXplIC0gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1f ZW5naW5lcykpIC8KPiArCQkgICBzaXplb2YoZW5naW5lcy0+Y2xhc3NfaW5zdGFuY2VbMF0pIDoK PiArCQkgICAwOwo+ICsKPiArCWlmIChuZW5naW5lcyA+IEk5MTVfRVhFQ19SSU5HX01BU0sgKyAx KSB7Cj4gKwkJZW5naW5lX2RhdGEuZXJyb3IgPSByZXQgPyByZXQgOiAtRUlOVkFMOwo+ICsJCXJl dHVybiBlbmdpbmVfZGF0YTsKPiArCX0KCklmIHdlIG9uZSBkYXkgYWxsb3cgbW9yZSBlbmdpbmVz IGluIHRoZSBtYXAgdGhhbiB0aGUgY3VycmVudCBsaW1pdD8KCkl0IGxvb2tzIHRoaXMgd291bGQg bWFrZSB0aGUgaXRlcmF0b3Igbm90IHdvcmsuIFdhcyB0aGF0IHRoZSBpbnRlbnRpb24/IApXaGF0 IGlzIHRoZSBwb2ludCBvZiBjb250aW51aW5nIHRoZW4gcmF0aGVyIHRoYW4ganVzdCBhc3NlcnRp bmc/Cgo+ICsKPiArCWlmIChfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJnBhcmFtKSkgewo+ ICsJCS8qIGlmIGtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IGVuZ2luZS9jb250ZXh0IG1hcHBpbmcg Ki8KPiArCQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyOwo+ICsKPiAr CQlpZ3RfZGVidWcoInVzaW5nIHByZS1hbGxvY2F0ZWQgZW5naW5lIGxpc3RcbiIpOwo+ICsKPiAr CQlfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoZTIpIHsKPiArCQkJc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICpfX2UyOwo+ICsKPiArCQkJX19lMiA9ICZlbmdpbmVfZGF0YS5lbmdpbmVz W2VuZ2luZV9kYXRhLm5lbmdpbmVzXTsKPiArCQkJX19lMi0+ZmxhZ3MgPSBnZW1fY2xhc3NfaW5z dGFuY2VfdG9fZWJfZmxhZ3MoZmQsCj4gKwkJCQkJCWUyLT5jbGFzcywgZTItPmluc3RhbmNlKTsK PiArCj4gKwkJCWlmICghZ2VtX2hhc19yaW5nKGZkLCBfX2UyLT5mbGFncykpCj4gKwkJCQljb250 aW51ZTsKPiArCj4gKwkJCV9fZTItPm5hbWUgPSBlMi0+bmFtZTsKPiArCQkJX19lMi0+aW5zdGFu Y2UgPSBlMi0+aW5zdGFuY2U7Cj4gKwkJCV9fZTItPmNsYXNzID0gZTItPmNsYXNzOwo+ICsJCQll bmdpbmVfZGF0YS5uZW5naW5lcysrOwo+ICsJCX0KPiArCj4gKwl9IGVsc2UgaWYgKCFwYXJhbS5z aXplKSB7Cj4gKwkJLyogZWxzZSBpZiBjb250ZXh0IGRvZXNuJ3QgaGF2ZSBtYXBwZWQgZW5naW5l cyAqLwo+ICsJCXF1ZXJ5X2VuZ2luZV9saXN0KGZkLCAmZW5naW5lX2RhdGEpOwo+ICsJCWN0eF9t YXBfZW5naW5lcyhmZCwgJmVuZ2luZV9kYXRhLCAmcGFyYW0pOwo+ICsKPiArCX0gZWxzZSB7Cj4g KwkJLyogY29udGV4dCBoYXMgYSBsaXN0IG9mIG1hcHBlZCBlbmdpbmVzICovCj4gKwo+ICsJCWZv ciAoaSA9IDA7IGkgPCBuZW5naW5lczsgaSsrKQo+ICsJCQlpbml0X2VuZ2luZSgmZW5naW5lX2Rh dGEuZW5naW5lc1tpXSwgTlVMTCwKPiArCQkJCSAgICBlbmdpbmVzLT5jbGFzc19pbnN0YW5jZVtp XS5lbmdpbmVfY2xhc3MsCj4gKwkJCQkgICAgZW5naW5lcy0+Y2xhc3NfaW5zdGFuY2VbaV0uZW5n aW5lX2luc3RhbmNlLAo+ICsJCQkJICAgIGkpOwo+ICsKPiArCQllbmdpbmVfZGF0YS5uZW5naW5l cyA9IGk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGVuZ2luZV9kYXRhOwo+ICt9Cj4gKwo+ICtzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKPiArCSppbnRlbF9nZXRfY3VycmVudF9lbmdpbmUo c3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKClVudXN1YWwgY29kaW5nIHN0eWxlLCB3ZSB1 c2U6Cgp0eXBlCmZ1bmMocGFyYW1zKQoKb3I6Cgp0eXBlIGZ1bmMocGFyYW1zKQoKPiArewo+ICsJ cmV0dXJuIChlZC0+biA8IGVkLT5uZW5naW5lcykgJiYgIWVkLT5lcnJvciA/Cj4gKwkJJmVkLT5l bmdpbmVzW2VkLT5uXSA6Cj4gKwkJTlVMTDsKClNvIGNvdWxkIHN0b3JlIHRoZSBwb2ludGVyIHRv IGN1cnJlbnQgZW5naW5lIGluIHRoZSBpdGVyYXRvcj8KCj4gK30KPiArCj4gK3ZvaWQgaW50ZWxf bmV4dF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKPiArewo+ICsJZWQtPm4r KzsKPiArfQo+ICsKPiArc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyCj4gKwkqaW50ZWxf Z2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQp Cj4gK3sKPiArCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKPiArCj4gKwlmb3Ig KGUgPSBpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoZWQpOwo+ICsJICAgICBlICYmICFJU19QSFlT SUNBTF9FTkdJTkUoZSk7Cj4gKwkgICAgIGludGVsX25leHRfZW5naW5lKGVkKSkKPiArCQk7Cj4g Kwo+ICsJcmV0dXJuIGU7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90 b3BvbG9neS5oIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmY2NjJhNDYwMWVjZAo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKPiBAQCAtMCwwICsxLDYz IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAq Cj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4g KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBHRU1fRU5HSU5FX1RP UE9MT0dZX0gKPiArI2RlZmluZSBHRU1fRU5HSU5FX1RPUE9MT0dZX0gKPiArCj4gKyNpbmNsdWRl ICJpZ3RfZ3QuaCIKPiArI2luY2x1ZGUgImk5MTVfZHJtLmgiCj4gKwo+ICtzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEgewo+ICsJdWludDMyX3QgbmVuZ2luZXM7Cj4gKwl1aW50MzJfdCBuOwo+ICsJ aW50IGVycm9yOwo+ICsJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGVuZ2luZXNbSTkx NV9FWEVDX1JJTkdfTUFTSyArIDFdOwo+ICt9Owo+ICsKPiArc3RydWN0IGludGVsX2VuZ2luZV9k YXRhIGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJfdCBjdHhfaWQpOwo+ICsK PiArLyogaXRlcmF0aW9uIGZ1bmN0aW9ucyAqLwo+ICtzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIKPiArCSppbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9k YXRhICplZCk7Cj4gK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMgo+ICsJKmludGVsX2dl dF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsK ClNhbWUgY29kaW5nIHN0eWxlIGlzc3VlIHRvIGNvcnJlY3QuCgo+ICt2b2lkIGludGVsX25leHRf ZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpOwo+ICsKPiArI2RlZmluZSBJU19Q SFlTSUNBTF9FTkdJTkUoZTIpICgoZTItPmNsYXNzID49IDApICYmIChlMi0+aW5zdGFuY2UgPj0g MCkpCgpDaHJpcywgZG8geW91IHRoaW5rIHRoaXMgd2lsbCBiZSBmdXR1cmUgcHJvb2YgZW5vdWdo PwoKSSByZW1lbWJlcmVkIGhvdyBhdCBvbmUgcG9pbnQgSSBoYWQgIklTX1BIWVNJQ0FMIiBhcyBh IGZsYWcgaW4gZW5naW5lIHF1ZXJ5LgoKT3Igd2UgbWFrZSB0aGlzIGhlcmUgbW9yZSBleHBsaWNp dCBieSBiZWluZyAiSVNfVklSVFVBTCIgYW5kIGludmVydCB0aGUgCnRlc3QgaW4gdGhlIGNhbGxl cj8KCj4gKwo+ICsvKiBuZWVkcyB0byByZXBsYWNlICJfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19p bnN0YW5jZSIgd2hlbiBjb25mbGljdHMgYXJlIGZpeGVkICovCj4gKyNkZWZpbmUgX19mb3JfZWFj aF9zdGF0aWNfZW5naW5lKGVfXykgXAo+ICsJZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlvbl9l bmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspCj4gKwo+ICsjZGVmaW5lIGZvcl9lYWNoX2Nv bnRleHRfZW5naW5lKGZkX18sIGN0eF9fLCBlX18pIFwKPiArCWZvciAoc3RydWN0IGludGVsX2Vu Z2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRfZW5naW5lX2xpc3QoZmRfXywgY3R4X18pOyBcCj4g KwkgICAgICgoZV9fKSA9IGludGVsX2dldF9jdXJyZW50X2VuZ2luZSgmaV9fKSk7IFwKPiArCSAg ICAgaW50ZWxfbmV4dF9lbmdpbmUoJmlfXykpCj4gKwo+ICsvKiBuZWVkcyB0byByZXBsYWNlICJm b3JfZWFjaF9waHlzaWNhbF9lbmdpbmUiIHdoZW4gY29uZmxpY3RzIGFyZSBmaXhlZCAqLwo+ICsj ZGVmaW5lIF9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lX18oZmRfXywgZV9fKSBcCj4gKwlmb3Ig KHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpX18gPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZk X18sIDApOyBcCj4gKwkgICAgICgoZV9fKSA9IGludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2Vu Z2luZSgmaV9fKSk7IFwKPiArCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoJmlfXykpCj4gKwo+ICsj ZW5kaWYgLyogR0VNX0VOR0lORV9UT1BPTE9HWV9IICovCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Qu aCBiL2xpYi9pZ3QuaAo+IGluZGV4IDY2NTRhNjU5YzA2Mi4uMDNmMTljYTJkZmI2IDEwMDY0NAo+ IC0tLSBhL2xpYi9pZ3QuaAo+ICsrKyBiL2xpYi9pZ3QuaAo+IEBAIC01Myw1ICs1Myw2IEBACj4g ICAjaW5jbHVkZSAibWVkaWFfc3Bpbi5oIgo+ICAgI2luY2x1ZGUgInJlbmRlcmNvcHkuaCIKPiAg ICNpbmNsdWRlICJpOTE1L2dlbV9tbWFuLmgiCj4gKyNpbmNsdWRlICJpOTE1L2dlbV9lbmdpbmVf dG9wb2xvZ3kuaCIKPiAgIAo+ICAgI2VuZGlmIC8qIElHVF9IICovCj4gZGlmZiAtLWdpdCBhL2xp Yi9pZ3RfZ3QuaCBiL2xpYi9pZ3RfZ3QuaAo+IGluZGV4IDQ3NWMwYjNjM2NjNi4uMmE3MDMyZDRi MjYyIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3RfZ3QuaAo+ICsrKyBiL2xpYi9pZ3RfZ3QuaAo+IEBA IC05NSw2ICs5NSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgewo+ICAgCWNvbnN0IGNoYXIgKm5hbWU7Cj4gICAJaW50IGNsYXNzOwo+ICAgCWludCBpbnN0 YW5jZTsKPiArCXVpbnQ2NF90IGZsYWdzOwo+ICAgfSBpbnRlbF9leGVjdXRpb25fZW5naW5lczJb XTsKPiAgIAo+ICAgdW5zaWduZWQgaW50Cj4gQEAgLTExNCwxMSArMTE1LDQgQEAgdm9pZCBnZW1f cmVxdWlyZV9lbmdpbmUoaW50IGdlbV9mZCwKPiAgIAlpZ3RfcmVxdWlyZShnZW1faGFzX2VuZ2lu ZShnZW1fZmQsIGNsYXNzLCBpbnN0YW5jZSkpOwo+ICAgfQo+ICAgCj4gLSNkZWZpbmUgX19mb3Jf ZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZV9fKSBcCj4gLQlmb3IgKChlX18pID0gaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKPiAtCj4gLSNkZWZpbmUg Zm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGZkX18sIGVfXykgXAo+IC0JZm9yICgoZV9f KSA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspIFwKPiAt CQlmb3JfaWYgKGdlbV9oYXNfZW5naW5lKChmZF9fKSwgKGVfXyktPmNsYXNzLCAoZV9fKS0+aW5z dGFuY2UpKQo+IC0KPiAgICNlbmRpZiAvKiBJR1RfR1RfSCAqLwo+IGRpZmYgLS1naXQgYS9saWIv bWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKPiBpbmRleCAwZWI1NTg1ZDcyYjkuLjNjYzUy Zjk3YzhiZiAxMDA2NDQKPiAtLS0gYS9saWIvbWVzb24uYnVpbGQKPiArKysgYi9saWIvbWVzb24u YnVpbGQKPiBAQCAtNSw2ICs1LDcgQEAgbGliX3NvdXJjZXMgPSBbCj4gICAJJ2k5MTUvZ2VtX3N1 Ym1pc3Npb24uYycsCj4gICAJJ2k5MTUvZ2VtX3JpbmcuYycsCj4gICAJJ2k5MTUvZ2VtX21tYW4u YycsCj4gKwknaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMnLAo+ICAgCSdpZ3RfY29sb3JfZW5j b2RpbmcuYycsCj4gICAJJ2lndF9kZWJ1Z2ZzLmMnLAo+ICAgCSdpZ3RfZGV2aWNlLmMnLAo+IGRp ZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9wbXUuYwo+IGluZGV4IDRm NTUyYmMyYWUyOC4uMGUxMGJjZmQxNjkzIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL3BlcmZfcG11LmMK PiArKysgYi90ZXN0cy9wZXJmX3BtdS5jCj4gQEAgLTQzNCw3ICs0MzQsNyBAQCBidXN5X2NoZWNr X2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUs Cj4gICAKPiAgIAlpID0gMDsKPiAgIAlmZFswXSA9IC0xOwo+IC0JZm9yX2VhY2hfZW5naW5lX2Ns YXNzX2luc3RhbmNlKGdlbV9mZCwgZV8pIHsKPiArCWZvcl9lYWNoX2NvbnRleHRfZW5naW5lKGdl bV9mZCwgMCwgZV8pIHsKCk1ha2UgcGVyZl9wbXUgdXNlIGZvcl9lYWNoX3BoeXNpY2FsX2VuZ2lu ZSwgYXBhcnQgZnJvbSB0aGUgdGVzdCBlbnVtZXJhdGlvbi4KCj4gICAJCWlmIChlID09IGVfKQo+ ICAgCQkJYnVzeV9pZHggPSBpOwo+ICAgCj4gQEAgLTQ5Nyw3ICs0OTcsNyBAQCBtb3N0X2J1c3lf Y2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZSwKPiAgIAl1bnNpZ25lZCBpbnQgaWRsZV9pZHgsIGk7Cj4gICAKPiAgIAlpID0gMDsKPiAt CWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7Cj4gKwlmb3JfZWFj aF9jb250ZXh0X2VuZ2luZShnZW1fZmQsIDAsIGVfKSB7Cj4gICAJCWlmIChlID09IGVfKQo+ICAg CQkJaWRsZV9pZHggPSBpOwo+ICAgCQllbHNlIGlmIChzcGluKQo+IEBAIC01NTQsNyArNTU0LDcg QEAgYWxsX2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHVuc2lnbmVkIGludCBudW1f ZW5naW5lcywKPiAgIAl1bnNpZ25lZCBpbnQgaTsKPiAgIAo+ICAgCWkgPSAwOwo+IC0JZm9yX2Vh Y2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGdlbV9mZCwgZSkgewo+ICsJZm9yX2VhY2hfY29udGV4 dF9lbmdpbmUoZ2VtX2ZkLCAwLCBlKSB7Cj4gICAJCWlmIChzcGluKQo+ICAgCQkJX19zdWJtaXRf c3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGUsIDY0KTsKPiAgIAkJZWxzZQo+IEBAIC0xNjgzLDcg KzE2ODMsNyBAQCBpZ3RfbWFpbgo+ICAgCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOwo+ICAgCQlpZ3Rf cmVxdWlyZShpOTE1X3R5cGVfaWQoKSA+IDApOwo+ICAgCj4gLQkJZm9yX2VhY2hfZW5naW5lX2Ns YXNzX2luc3RhbmNlKGZkLCBlKQo+ICsJCWZvcl9lYWNoX2NvbnRleHRfZW5naW5lKGZkLCAwLCBl KQo+ICAgCQkJbnVtX2VuZ2luZXMrKzsKPiAgIAl9Cj4gICAKPiBAQCAtMTY5Myw3ICsxNjkzLDcg QEAgaWd0X21haW4KPiAgIAlpZ3Rfc3VidGVzdCgiaW52YWxpZC1pbml0IikKPiAgIAkJaW52YWxp ZF9pbml0KCk7Cj4gICAKPiAtCV9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGUpIHsK PiArCV9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShlKSB7Cj4gICAJCWNvbnN0IHVuc2lnbmVkIGlu dCBwY3RbXSA9IHsgMiwgNTAsIDk4IH07Cj4gICAKPiAgIAkJLyoqCj4gQEAgLTE4OTcsNyArMTg5 Nyw3IEBAIGlndF9tYWluCj4gICAJCQlnZW1fcXVpZXNjZW50X2dwdShmZCk7Cj4gICAJCX0KPiAg IAo+IC0JCV9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGUpIHsKPiArCQlfX2Zvcl9l YWNoX3N0YXRpY19lbmdpbmUoZSkgewo+ICAgCQkJaWd0X3N1YnRlc3RfZ3JvdXAgewo+ICAgCQkJ CWlndF9maXh0dXJlIHsKPiAgIAkJCQkJZ2VtX3JlcXVpcmVfZW5naW5lKHJlbmRlcl9mZCwKPiAK ClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2