From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20190508100958.32637-1-chris@chris-wilson.co.uk> <20190508100958.32637-5-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Message-ID: <4793727f-54f1-9d2d-f971-83b2dc391847@linux.intel.com> Date: Tue, 14 May 2019 13:27:38 +0100 MIME-Version: 1.0 In-Reply-To: <20190508100958.32637-5-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 05/16] i915/gem_ctx_create: Basic checks for constructor properties 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: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: Ck9uIDA4LzA1LzIwMTkgMTE6MDksIENocmlzIFdpbHNvbiB3cm90ZToKPiBDaGVjayB0aGF0IHRo ZSBleHRlbmRlZCBjcmVhdGUgaW50ZXJmYWNlIGFjY2VwdHMgc2V0cGFyYW0uCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4g ICB0ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMgfCAyMjUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCj4gICAxIGZpbGUgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDEy IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRl LmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMKPiBpbmRleCBhNjY0MDcwZGIuLjliNGZk ZGJlNyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMKPiArKysgYi90 ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMKPiBAQCAtMzMsNiArMzMsNyBAQAo+ICAgI2luY2x1 ZGUgPHRpbWUuaD4KPiAgIAo+ICAgI2luY2x1ZGUgImlndF9yYW5kLmgiCj4gKyNpbmNsdWRlICJz d19zeW5jLmgiCj4gICAKPiAgICNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVCAgICAg ICgxMykKPiAgICNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9NQVNLICAgICAgICgzIDw8IExP Q0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQpCj4gQEAgLTQ1LDEyICs0NiwzMyBAQCBzdGF0aWMgdW5z aWduZWQgYWxsX25lbmdpbmU7Cj4gICBzdGF0aWMgdW5zaWduZWQgcHBndHRfZW5naW5lc1sxNl07 Cj4gICBzdGF0aWMgdW5zaWduZWQgcHBndHRfbmVuZ2luZTsKPiAgIAo+IC1zdGF0aWMgaW50IF9f Z2VtX2NvbnRleHRfY3JlYXRlX2xvY2FsKGludCBmZCwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZSAqYXJnKQo+ICtzdGF0aWMgaW50IGNyZWF0ZV9pb2N0bChpbnQgZmQsIHN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUgKmFyZykKPiAgIHsKPiAtCWludCByZXQgPSAw Owo+IC0JaWYgKGRybUlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUs IGFyZykpCj4gLQkJcmV0ID0gLWVycm5vOwo+IC0JcmV0dXJuIHJldDsKPiArCWludCBlcnI7Cj4g Kwo+ICsJZXJyID0gMDsKPiArCWlmIChpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9D T05URVhUX0NSRUFURSwgYXJnKSkgewo+ICsJCWVyciA9IC1lcnJubzsKPiArCQlpZ3RfYXNzZXJ0 KGVycik7Cj4gKwl9Cj4gKwo+ICsJZXJybm8gPSAwOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsK PiArc3RhdGljIGludCBjcmVhdGVfZXh0X2lvY3RsKGludCBpOTE1LAo+ICsJCQkgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQgKmFyZykKPiArewo+ICsJaW50IGVycjsK PiArCj4gKwllcnIgPSAwOwo+ICsJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExfSTkxNV9H RU1fQ09OVEVYVF9DUkVBVEVfRVhULCBhcmcpKSB7Cj4gKwkJZXJyID0gLWVycm5vOwo+ICsJCWln dF9hc3N1bWUoZXJyKTsKPiArCX0KPiArCj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ ICAgfQo+ICAgCj4gICBzdGF0aWMgZG91YmxlIGVsYXBzZWQoY29uc3Qgc3RydWN0IHRpbWVzcGVj ICpzdGFydCwKPiBAQCAtMzA4LDYgKzMzMCwxODcgQEAgc3RhdGljIHZvaWQgbWF4aW11bShpbnQg ZmQsIGludCBuY3B1cywgdW5zaWduZWQgbW9kZSkKPiAgIAlmcmVlKGNvbnRleHRzKTsKPiAgIH0K PiAgIAo+ICtzdGF0aWMgdm9pZCBiYXNpY19leHRfcGFyYW0oaW50IGk5MTUpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIGV4dCA9IHsKPiAr CQl7IC5uYW1lID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU0gfSwKPiArCX07Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCBjcmVhdGUgPSB7Cj4gKwkJ LmZsYWdzID0gSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUwo+ICsJfTsK PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBnZXQ7Cj4gKwo+ICsJaWd0X3Jl cXVpcmUoY3JlYXRlX2V4dF9pb2N0bChpOTE1LCAmY3JlYXRlKSA9PSAwKTsKPiArCWdlbV9jb250 ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwo+ICsJY3JlYXRlLmV4dGVuc2lv bnMgPSAtMXVsbDsKPiArCWlndF9hc3NlcnRfZXEoY3JlYXRlX2V4dF9pb2N0bChpOTE1LCAmY3Jl YXRlKSwgLUVGQVVMVCk7Cj4gKwo+ICsJY3JlYXRlLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50 ZXIoJmV4dCk7Cj4gKwlpZ3RfYXNzZXJ0X2VxKGNyZWF0ZV9leHRfaW9jdGwoaTkxNSwgJmNyZWF0 ZSksIC1FSU5WQUwpOwoKSSB0aGluayB0aGlzIGlzIHRoZSB1bmtub3duIHBhcmFtLCByaWdodD8K Ck5lZWQgYW5vdGhlciAtRUlOVkFMIHRlc3QgZm9yIG5vbi16ZXJvIGV4dC5jdHhfaWQuCgpSZWdh cmRzLAoKVHZydGtvCgo+ICsKPiArCWV4dC5wYXJhbS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJB TV9QUklPUklUWTsKPiArCWlmIChjcmVhdGVfZXh0X2lvY3RsKGk5MTUsICZjcmVhdGUpICE9IC1F Tk9ERVYpIHsKPiArCQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+ ICsKPiArCQlleHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IC0xdWxsOwo+ICsJCWlndF9hc3NlcnRf ZXEoY3JlYXRlX2V4dF9pb2N0bChpOTE1LCAmY3JlYXRlKSwgLUVGQVVMVCk7Cj4gKwkJZXh0LmJh c2UubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50ZXIoJmV4dCk7Cj4gKwkJaWd0X2Fzc2Vy dF9lcShjcmVhdGVfZXh0X2lvY3RsKGk5MTUsICZjcmVhdGUpLCAtRTJCSUcpOwo+ICsJCWV4dC5i YXNlLm5leHRfZXh0ZW5zaW9uID0gMDsKPiArCj4gKwkJZXh0LnBhcmFtLnZhbHVlID0gMzI7Cj4g KwkJaWd0X2Fzc2VydF9lcShjcmVhdGVfZXh0X2lvY3RsKGk5MTUsICZjcmVhdGUpLCAwKTsKPiAr Cj4gKwkJbWVtc2V0KCZnZXQsIDAsIHNpemVvZihnZXQpKTsKPiArCQlnZXQuY3R4X2lkID0gY3Jl YXRlLmN0eF9pZDsKPiArCQlnZXQucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk7 Cj4gKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZnZXQpOwo+ICsJCWlndF9hc3NlcnRf ZXEoZ2V0LnZhbHVlLCBleHQucGFyYW0udmFsdWUpOwo+ICsKPiArCQlnZW1fY29udGV4dF9kZXN0 cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBj aGVja19zaW5nbGVfdGltZWxpbmUoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwgaW50IG51bV9lbmdp bmVzKQo+ICt7Cj4gKyNkZWZpbmUgUkNTX1RJTUVTVEFNUCAoMHgyMDAwICsgMHgzNTgpCj4gKwlj b25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSkpOwo+ICsJ Y29uc3QgaW50IGhhc182NGJpdF9yZWxvYyA9IGdlbiA+PSA4Owo+ICsJc3RydWN0IGRybV9pOTE1 X2dlbV9leGVjX29iamVjdDIgcmVzdWx0cyA9IHsgLmhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwg NDA5NikgfTsKPiArCWNvbnN0IHVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4g KwlpbnQgdGltZWxpbmUgPSBzd19zeW5jX3RpbWVsaW5lX2NyZWF0ZSgpOwo+ICsJdWludDMyX3Qg bGFzdCwgKm1hcDsKPiArCj4gKwl7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVy MiBleGVjYnVmID0gewo+ICsJCQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlc3Vs dHMpLAo+ICsJCQkuYnVmZmVyX2NvdW50ID0gMSwKPiArCQkJLnJzdmQxID0gY3R4LAo+ICsJCX07 Cj4gKwkJZ2VtX3dyaXRlKGk5MTUsIHJlc3VsdHMuaGFuZGxlLCAwLCAmYmJlLCBzaXplb2YoYmJl KSk7Cj4gKwkJZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpOwo+ICsJCXJlc3VsdHMuZmxhZ3Mg PSBFWEVDX09CSkVDVF9QSU5ORUQ7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fZW5naW5lczsgaSsrKSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg b2JqWzJdID0gewo+ICsJCQlyZXN1bHRzLCAvKiB3cml0ZSBoYXphcmQgbGllcyEgKi8KPiArCQkJ eyAuaGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KSB9LAo+ICsJCX07Cj4gKwkJc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmID0gewo+ICsJCQkuYnVmZmVyc19wdHIg PSB0b191c2VyX3BvaW50ZXIob2JqKSwKPiArCQkJLmJ1ZmZlcl9jb3VudCA9IDIsCj4gKwkJCS5y c3ZkMSA9IGN0eCwKPiArCQkJLnJzdmQyID0gc3dfc3luY190aW1lbGluZV9jcmVhdGVfZmVuY2Uo dGltZWxpbmUsIG51bV9lbmdpbmVzIC0gaSksCj4gKwkJCS5mbGFncyA9IGkgfCBJOTE1X0VYRUNf RkVOQ0VfSU4sCj4gKwkJfTsKPiArCQl1aW50NjRfdCBvZmZzZXQgPSByZXN1bHRzLm9mZnNldCAr IDQgKiBpOwo+ICsJCXVpbnQzMl90ICpjczsKPiArCQlpbnQgaiA9IDA7Cj4gKwo+ICsJCWNzID0g Z2VtX21tYXBfX2NwdShpOTE1LCBvYmpbMV0uaGFuZGxlLCAwLCA0MDk2LCBQUk9UX1dSSVRFKTsK PiArCj4gKwkJY3Nbal0gPSAweDI0IDw8IDIzIHwgMTsgLyogU1JNICovCj4gKwkJaWYgKGhhc182 NGJpdF9yZWxvYykKPiArCQkJY3Nbal0rKzsKPiArCQlqKys7Cj4gKwkJY3NbaisrXSA9IFJDU19U SU1FU1RBTVA7Cj4gKwkJY3NbaisrXSA9IG9mZnNldDsKPiArCQlpZiAoaGFzXzY0Yml0X3JlbG9j KQo+ICsJCQljc1tqKytdID0gb2Zmc2V0ID4+IDMyOwo+ICsJCWNzW2orK10gPSBNSV9CQVRDSF9C VUZGRVJfRU5EOwo+ICsKPiArCQltdW5tYXAoY3MsIDQwOTYpOwo+ICsKPiArCQlnZW1fZXhlY2J1 ZihpOTE1LCAmZXhlY2J1Zik7Cj4gKwkJZ2VtX2Nsb3NlKGk5MTUsIG9ialsxXS5oYW5kbGUpOwo+ ICsJCWNsb3NlKGV4ZWNidWYucnN2ZDIpOwo+ICsJfQo+ICsJY2xvc2UodGltZWxpbmUpOwo+ICsJ Z2VtX3N5bmMoaTkxNSwgcmVzdWx0cy5oYW5kbGUpOwo+ICsKPiArCW1hcCA9IGdlbV9tbWFwX19j cHUoaTkxNSwgcmVzdWx0cy5oYW5kbGUsIDAsIDQwOTYsIFBST1RfUkVBRCk7Cj4gKwlnZW1fc2V0 X2RvbWFpbihpOTE1LCByZXN1bHRzLmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7Cj4g KwlnZW1fY2xvc2UoaTkxNSwgcmVzdWx0cy5oYW5kbGUpOwo+ICsKPiArCWxhc3QgPSBtYXBbMF07 Cj4gKwlmb3IgKGludCBpID0gMTsgaSA8IG51bV9lbmdpbmVzOyBpKyspIHsKPiArCQlpZ3RfYXNz ZXJ0X2YoKG1hcFtpXSAtIGxhc3QpID4gMCwKPiArCQkJICAgICAiRW5naW5lIGluc3RhbmNlIFsl ZF0gZXhlY3V0ZWQgdG9vIGVhcmx5OiB0aGlzOiV4LCBsYXN0OiV4XG4iLAo+ICsJCQkgICAgIGks IG1hcFtpXSwgbGFzdCk7Cj4gKwkJbGFzdCA9IG1hcFtpXTsKPiArCX0KPiArCW11bm1hcChtYXAs IDQwOTYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpcmlzX3BpcGVsaW5lKGludCBpOTE1KQo+ ICt7Cj4gKyNpZmRlZiBJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VOR0lORVMKPiArI2RlZmlu ZSBSQ1MwIHswLCAwfQo+ICsJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2lu ZXMsIDIpID0gewo+ICsJCS5lbmdpbmVzID0geyBSQ1MwLCBSQ1MwIH0KPiArCX07Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBwX2VuZ2luZXMgPSB7 Cj4gKwkJLmJhc2UgPSB7Cj4gKwkJCS5uYW1lID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfU0VU UEFSQU0sCj4gKwkJCS5uZXh0X2V4dGVuc2lvbiA9IDAsIC8qIGVuZCBvZiBjaGFpbiAqLwo+ICsJ CX0sCj4gKwkJLnBhcmFtID0gewo+ICsJCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5H SU5FUywKPiArCQkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZlbmdpbmVzKSwKPiArCQkJLnNp emUgPSBzaXplb2YoZW5naW5lcyksCj4gKwkJfSwKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBwX3JlY292ZXIgPSB7Cj4gKwkJLmJhc2Ug PSB7Cj4gKwkJCS5uYW1lID1JOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSwKPiArCQkJ Lm5leHRfZXh0ZW5zaW9uID0gdG9fdXNlcl9wb2ludGVyKCZwX2VuZ2luZXMpLAo+ICsJCX0sCj4g KwkJLnBhcmFtID0gewo+ICsJCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fUkVDT1ZFUkFC TEUsCj4gKwkJCS52YWx1ZSA9IDAsCj4gKwkJfSwKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBwX3ByaW8gPSB7Cj4gKwkJLmJhc2UgPSB7 Cj4gKwkJCS5uYW1lID1JOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSwKPiArCQkJLm5l eHRfZXh0ZW5zaW9uID0gdG9fdXNlcl9wb2ludGVyKCZwX3JlY292ZXIpLAo+ICsJCX0sCj4gKwkJ LnBhcmFtID0gewo+ICsJCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFksCj4g KwkJCS52YWx1ZSA9IDc2OCwKPiArCQl9LAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsKPiArCQkuZmxhZ3MgPSAoSTkxNV9DT05URVhU X0NSRUFURV9GTEFHU19TSU5HTEVfVElNRUxJTkUgfAo+ICsJCQkgIEk5MTVfQ09OVEVYVF9DUkVB VEVfRkxBR1NfVVNFX0VYVEVOU0lPTlMpLAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbSBnZXQ7Cj4gKwo+ICsJaWd0X3JlcXVpcmUoY3JlYXRlX2V4dF9pb2N0bChp OTE1LCAmY3JlYXRlKSA9PSAwKTsKPiArCj4gKwljcmVhdGUuZXh0ZW5zaW9ucyA9IHRvX3VzZXJf cG9pbnRlcigmcF9wcmlvKTsKPiArCWlndF9hc3NlcnRfZXEoY3JlYXRlX2V4dF9pb2N0bChpOTE1 LCAmY3JlYXRlKSwgMCk7Cj4gKwo+ICsJbWVtc2V0KCZnZXQsIDAsIHNpemVvZihnZXQpKTsKPiAr CWdldC5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOwo+ICsJZ2V0LnBhcmFtID0gSTkxNV9DT05URVhU X1BBUkFNX1BSSU9SSVRZOwo+ICsJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZnZXQpOwo+ ICsJaWd0X2Fzc2VydF9lcShnZXQudmFsdWUsIHBfcHJpby5wYXJhbS52YWx1ZSk7Cj4gKwo+ICsJ bWVtc2V0KCZnZXQsIDAsIHNpemVvZihnZXQpKTsKPiArCWdldC5jdHhfaWQgPSBjcmVhdGUuY3R4 X2lkOwo+ICsJZ2V0LnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1JFQ09WRVJBQkxFOwo+ICsJ Z2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZnZXQpOwo+ICsJaWd0X2Fzc2VydF9lcShnZXQu dmFsdWUsIDApOwo+ICsKPiArCWNoZWNrX3NpbmdsZV90aW1lbGluZShpOTE1LCBjcmVhdGUuY3R4 X2lkLCAyKTsKPiArCj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQp Owo+ICsjZW5kaWYgLyogSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTICovCj4gK30K PiArCj4gICBpZ3RfbWFpbgo+ICAgewo+ICAgCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1ND X05QUk9DRVNTT1JTX09OTE4pOwo+IEBAIC0zNDAsMTcgKzU0MywxNSBAQCBpZ3RfbWFpbgo+ICAg CQltZW1zZXQoJmNyZWF0ZSwgMCwgc2l6ZW9mKGNyZWF0ZSkpOwo+ICAgCQljcmVhdGUuY3R4X2lk ID0gcmFuZCgpOwo+ICAgCQljcmVhdGUucGFkID0gMDsKPiAtCQlpZ3RfYXNzZXJ0X2VxKF9fZ2Vt X2NvbnRleHRfY3JlYXRlX2xvY2FsKGZkLCAmY3JlYXRlKSwgMCk7Cj4gKwkJaWd0X2Fzc2VydF9l cShjcmVhdGVfaW9jdGwoZmQsICZjcmVhdGUpLCAwKTsKPiAgIAkJaWd0X2Fzc2VydChjcmVhdGUu Y3R4X2lkICE9IDApOwo+ICAgCQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjcmVhdGUuY3R4X2lk KTsKPiAgIAl9Cj4gICAKPiAtCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLXBhZCIpIHsKPiAtCQltZW1z ZXQoJmNyZWF0ZSwgMCwgc2l6ZW9mKGNyZWF0ZSkpOwo+IC0JCWNyZWF0ZS5jdHhfaWQgPSByYW5k KCk7Cj4gLQkJY3JlYXRlLnBhZCA9IDE7Cj4gLQkJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0 X2NyZWF0ZV9sb2NhbChmZCwgJmNyZWF0ZSksIC1FSU5WQUwpOwo+IC0JfQo+ICsJaWd0X3N1YnRl c3QoImV4dC1wYXJhbSIpCj4gKwkJYmFzaWNfZXh0X3BhcmFtKGZkKTsKPiArCWlndF9zdWJ0ZXN0 KCJpcmlzLXBpcGVsaW5lIikKPiArCQlpcmlzX3BpcGVsaW5lKGZkKTsKPiAgIAo+ICAgCWlndF9z dWJ0ZXN0KCJtYXhpbXVtLW1lbSIpCj4gICAJCW1heGltdW0oZmQsIG5jcHVzLCBDSEVDS19SQU0p Owo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=