From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haneen Mohammed Subject: Re: [PATCH V2 1/5] drm/vkms: Add dumb operations Date: Thu, 5 Jul 2018 23:21:19 +0300 Message-ID: <20180705202119.GA1678@haneen-vb> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1D52B6EF04 for ; Thu, 5 Jul 2018 20:21:25 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id u7-v6so2067132wrn.12 for ; Thu, 05 Jul 2018 13:21:25 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rodrigo Siqueira Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdW4gMjEsIDIwMTggYXQgMDk6MTY6MTNBTSAtMDMwMCwgUm9kcmlnbyBTaXF1ZWly YSB3cm90ZToKPiBWS01TIGN1cnJlbnRseSBkb2VzIG5vdCBoYW5kbGUgZHVtYiBkYXRhLCBhbmQg YXMgYSBjb25zZXF1ZW5jZSwgaXQgZG9lcwo+IG5vdCBwcm92aWRlIG1lY2hhbmlzbXMgZm9yIGhh bmRsaW5nIGdlbS4gVGhpcyBjb21taXQgYWRkcyB0aGUgbmVjZXNzYXJ5Cj4gc3VwcG9ydCBmb3Ig Z2VtIG9iamVjdC9oYW5kbGVyIGFuZCB0aGUgZHVtYiBmdW5jdGlvbnMuCj4gCj4gU2lnbmVkLW9m Zi1ieTogUm9kcmlnbyBTaXF1ZWlyYSA8cm9kcmlnb3NpcXVlaXJhbWVsb0BnbWFpbC5jb20+Cj4g LS0tCgpUaGlzIGxvb2tzIGdvb2QgdG8gbWUgZXhjZXB0IHdpdGggbWlzc2luZyBnZW1fZnJlZV9v YmplY3RfdW5sb2NrZWQgY2FsbGJhY2ssCndoaWNoIGNhdXNlcyB3YXJuaW5nOiBNZW1vcnkgbWFu YWdlciBub3QgY2xlYW4gZHVyaW5nIHRha2Vkb3duLiAKCk1heWJlIGl0IHdpbGwgYmUgZWFzaWVy IGlmIHdlIGFkZCB0aGlzIGluIGFub3RoZXIgcGF0Y2ggaW5zdGVhZCBvZiBjcmVhdGluZyB2MyBv Zgp0aGlzIHBhdGNoc2V0PwoKPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUgICB8ICAg MiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jIHwgICA5ICsrCj4gIGRyaXZl cnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmggfCAgMjEgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0v dmttcy92a21zX2dlbS5jIHwgMTY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g IDQgZmlsZXMgY2hhbmdlZCwgMTk5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZ2VtLmMKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v dmttcy9NYWtlZmlsZQo+IGluZGV4IDNmNzc0YTZhOWM1OC4uOTg2Mjk3ZGE1MWJmIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3ZrbXMvTWFrZWZpbGUKPiBAQCAtMSwzICsxLDMgQEAKPiAtdmttcy15IDo9IHZrbXNfZHJ2 Lm8gdmttc19wbGFuZS5vIHZrbXNfb3V0cHV0Lm8gdmttc19jcnRjLm8KPiArdmttcy15IDo9IHZr bXNfZHJ2Lm8gdmttc19wbGFuZS5vIHZrbXNfb3V0cHV0Lm8gdmttc19jcnRjLm8gdmttc19nZW0u bwo+ICAKPiAgb2JqLSQoQ09ORklHX0RSTV9WS01TKSArPSB2a21zLm8KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3Zr bXNfZHJ2LmMKPiBpbmRleCA3NDBhNGNiZmVkOTEuLjYzOGJhYjkwODNiNSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19kcnYuYwo+IEBAIC0zNyw2ICszNywxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGZpbGVfb3BlcmF0aW9ucyB2a21zX2RyaXZlcl9mb3BzID0gewo+ICAJLnJlbGVhc2UJPSBkcm1f cmVsZWFzZSwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19z dHJ1Y3Qgdmttc19nZW1fdm1fb3BzID0gewo+ICsJLmZhdWx0ID0gdmttc19nZW1fZmF1bHQsCj4g Kwkub3BlbiA9IGRybV9nZW1fdm1fb3BlbiwKPiArCS5jbG9zZSA9IGRybV9nZW1fdm1fY2xvc2Us Cj4gK307Cj4gKwo+ICBzdGF0aWMgdm9pZCB2a21zX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgewo+ICAJc3RydWN0IHZrbXNfZGV2aWNlICp2a21zID0gY29udGFpbmVyX29mKGRl diwgc3RydWN0IHZrbXNfZGV2aWNlLCBkcm0pOwo+IEBAIC01MCw2ICs1Niw5IEBAIHN0YXRpYyBz dHJ1Y3QgZHJtX2RyaXZlciB2a21zX2RyaXZlciA9IHsKPiAgCS5kcml2ZXJfZmVhdHVyZXMJPSBE UklWRVJfTU9ERVNFVCB8IERSSVZFUl9BVE9NSUMgfCBEUklWRVJfR0VNLAo+ICAJLnJlbGVhc2UJ CT0gdmttc19yZWxlYXNlLAo+ICAJLmZvcHMJCQk9ICZ2a21zX2RyaXZlcl9mb3BzLAo+ICsJLmR1 bWJfY3JlYXRlCQk9IHZrbXNfZHVtYl9jcmVhdGUsCj4gKwkuZHVtYl9tYXBfb2Zmc2V0CT0gdmtt c19kdW1iX21hcCwKPiArCS5nZW1fdm1fb3BzCQk9ICZ2a21zX2dlbV92bV9vcHMsCj4gIAo+ICAJ Lm5hbWUJCQk9IERSSVZFUl9OQU1FLAo+ICAJLmRlc2MJCQk9IERSSVZFUl9ERVNDLAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19kcnYuaAo+IGluZGV4IGIwZjlkMmU2MWE0Mi4uNTRiYjNkZDJiMmMxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gQEAgLTMsNiArMyw3IEBACj4gIAo+ICAjaW5jbHVk ZSA8ZHJtL2RybVAuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm0uaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fZ2VtLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4KPiAgCj4gIHN0YXRpYyBj b25zdCB1MzIgdmttc19mb3JtYXRzW10gPSB7Cj4gQEAgLTIxLDYgKzIyLDEyIEBAIHN0cnVjdCB2 a21zX2RldmljZSB7Cj4gIAlzdHJ1Y3Qgdmttc19vdXRwdXQgb3V0cHV0Owo+ICB9Owo+ICAKPiAr c3RydWN0IHZrbXNfZ2VtX29iamVjdCB7Cj4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgZ2VtOwo+ ICsJc3RydWN0IG11dGV4IHBhZ2VzX2xvY2s7IC8qIFBhZ2UgbG9jayB1c2VkIGluIHBhZ2UgZmF1 bHQgaGFuZGxlciAqLwo+ICsJc3RydWN0IHBhZ2UgKipwYWdlczsKPiArfTsKPiArCj4gIGludCB2 a21zX2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAkJICAgc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwgc3RydWN0IGRybV9wbGFuZSAq Y3Vyc29yKTsKPiAgCj4gQEAgLTI4LDQgKzM1LDE4IEBAIGludCB2a21zX291dHB1dF9pbml0KHN0 cnVjdCB2a21zX2RldmljZSAqdmttc2Rldik7Cj4gIAo+ICBzdHJ1Y3QgZHJtX3BsYW5lICp2a21z X3BsYW5lX2luaXQoc3RydWN0IHZrbXNfZGV2aWNlICp2a21zZGV2KTsKPiAgCj4gKy8qIEdlbSBz dHVmZiAqLwo+ICtzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnZrbXNfZ2VtX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiAr CQkJCSAgICAgICB1MzIgKmhhbmRsZSwKPiArCQkJCSAgICAgICB1NjQgc2l6ZSk7Cj4gKwo+ICtp bnQgdmttc19nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpOwo+ICsKPiAraW50IHZrbXNf ZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICsJCSAgICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKTsKPiArCj4gK2lu dCB2a21zX2R1bWJfbWFwKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiArCQkgIHUzMiBoYW5kbGUsIHU2NCAqb2Zmc2V0KTsKPiArCj4gICNlbmRpZiAvKiBf VktNU19EUlZfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZ2VtLmMKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOWY4MjBmNTZiOWUwCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZ2VtLmMKPiBAQCAtMCwwICsxLDE2OCBA QAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9z aG1lbV9mcy5oPgo+ICsKPiArI2luY2x1ZGUgInZrbXNfZHJ2LmgiCj4gKwo+ICtzdGF0aWMgc3Ry dWN0IHZrbXNfZ2VtX29iamVjdCAqX192a21zX2dlbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiArCQkJCQkJIHU2NCBzaXplKQo+ICt7Cj4gKwlzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0 ICpvYmo7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW9iaiA9IGt6YWxsb2Moc2l6ZW9mKCpvYmopLCBH RlBfS0VSTkVMKTsKPiArCWlmICghb2JqKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ ICsKPiArCXNpemUgPSByb3VuZHVwKHNpemUsIFBBR0VfU0laRSk7Cj4gKwlyZXQgPSBkcm1fZ2Vt X29iamVjdF9pbml0KGRldiwgJm9iai0+Z2VtLCBzaXplKTsKPiArCWlmIChyZXQpIHsKPiArCQlr ZnJlZShvYmopOwo+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gKwl9Cj4gKwo+ICsJbXV0ZXhf aW5pdCgmb2JqLT5wYWdlc19sb2NrKTsKPiArCj4gKwlyZXR1cm4gb2JqOwo+ICt9Cj4gKwo+ICtp bnQgdmttc19nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gK3sKPiArCXN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLT52bWE7Cj4gKwlzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0 ICpvYmogPSB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKPiArCXVuc2lnbmVkIGxvbmcgdmFkZHIgPSB2 bWYtPmFkZHJlc3M7Cj4gKwlwZ29mZl90IHBhZ2Vfb2Zmc2V0Owo+ICsJbG9mZl90IG51bV9wYWdl czsKPiArCWludCByZXQ7Cj4gKwo+ICsJcGFnZV9vZmZzZXQgPSAodmFkZHIgLSB2bWEtPnZtX3N0 YXJ0KSA+PiBQQUdFX1NISUZUOwo+ICsJbnVtX3BhZ2VzID0gRElWX1JPVU5EX1VQKG9iai0+Z2Vt LnNpemUsIFBBR0VfU0laRSk7Cj4gKwo+ICsJaWYgKHBhZ2Vfb2Zmc2V0ID4gbnVtX3BhZ2VzKQo+ ICsJCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7Cj4gKwo+ICsJcmV0ID0gLUVOT0VOVDsKPiArCW11 dGV4X2xvY2soJm9iai0+cGFnZXNfbG9jayk7Cj4gKwlpZiAob2JqLT5wYWdlcykgewo+ICsJCWdl dF9wYWdlKG9iai0+cGFnZXNbcGFnZV9vZmZzZXRdKTsKPiArCQl2bWYtPnBhZ2UgPSBvYmotPnBh Z2VzW3BhZ2Vfb2Zmc2V0XTsKPiArCQlyZXQgPSAwOwo+ICsJfQo+ICsJbXV0ZXhfdW5sb2NrKCZv YmotPnBhZ2VzX2xvY2spOwo+ICsJaWYgKHJldCkgewo+ICsJCXN0cnVjdCBwYWdlICpwYWdlOwo+ ICsJCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwo+ICsKPiArCQltYXBwaW5nID0gZmls ZV9pbm9kZShvYmotPmdlbS5maWxwKS0+aV9tYXBwaW5nOwo+ICsJCXBhZ2UgPSBzaG1lbV9yZWFk X21hcHBpbmdfcGFnZShtYXBwaW5nLCBwYWdlX29mZnNldCk7Cj4gKwo+ICsJCWlmICghSVNfRVJS KHBhZ2UpKSB7Cj4gKwkJCXZtZi0+cGFnZSA9IHBhZ2U7Cj4gKwkJCXJldCA9IDA7Cj4gKwkJfSBl bHNlIHsKPiArCQkJc3dpdGNoIChQVFJfRVJSKHBhZ2UpKSB7Cj4gKwkJCWNhc2UgLUVOT1NQQzoK PiArCQkJY2FzZSAtRU5PTUVNOgo+ICsJCQkJcmV0ID0gVk1fRkFVTFRfT09NOwo+ICsJCQkJYnJl YWs7Cj4gKwkJCWNhc2UgLUVCVVNZOgo+ICsJCQkJcmV0ID0gVk1fRkFVTFRfUkVUUlk7Cj4gKwkJ CQlicmVhazsKPiArCQkJY2FzZSAtRUZBVUxUOgo+ICsJCQljYXNlIC1FSU5WQUw6Cj4gKwkJCQly ZXQgPSBWTV9GQVVMVF9TSUdCVVM7Cj4gKwkJCQlicmVhazsKPiArCQkJZGVmYXVsdDoKPiArCQkJ CVdBUk5fT04oUFRSX0VSUihwYWdlKSk7Cj4gKwkJCQlyZXQgPSBWTV9GQVVMVF9TSUdCVVM7Cj4g KwkJCQlicmVhazsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCXJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqdmttc19nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICsJCQkJICAg ICAgIHUzMiAqaGFuZGxlLAo+ICsJCQkJICAgICAgIHU2NCBzaXplKQo+ICt7Cj4gKwlzdHJ1Y3Qg dmttc19nZW1fb2JqZWN0ICpvYmo7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghZmlsZSB8fCAh ZGV2IHx8ICFoYW5kbGUpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwo+ICsJb2Jq ID0gX192a21zX2dlbV9jcmVhdGUoZGV2LCBzaXplKTsKPiArCWlmIChJU19FUlIob2JqKSkKPiAr CQlyZXR1cm4gRVJSX0NBU1Qob2JqKTsKPiArCj4gKwlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVh dGUoZmlsZSwgJm9iai0+Z2VtLCBoYW5kbGUpOwo+ICsJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9j a2VkKCZvYmotPmdlbSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZHJtX2dlbV9vYmplY3RfcmVsZWFz ZSgmb2JqLT5nZW0pOwo+ICsJCWtmcmVlKG9iaik7Cj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsK PiArCX0KPiArCj4gKwlyZXR1cm4gJm9iai0+Z2VtOwo+ICt9Cj4gKwo+ICtpbnQgdmttc19kdW1i X2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g KwkJICAgICBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpCj4gK3sKPiArCXN0cnVj dCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iajsKPiArCXU2NCBwaXRjaCwgc2l6ZTsKPiArCj4gKwlp ZiAoIWFyZ3MgfHwgIWRldiB8fCAhZmlsZSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlw aXRjaCA9IGFyZ3MtPndpZHRoICogRElWX1JPVU5EX1VQKGFyZ3MtPmJwcCwgOCk7Cj4gKwlzaXpl ID0gcGl0Y2ggKiBhcmdzLT5oZWlnaHQ7Cj4gKwo+ICsJaWYgKCFzaXplKQo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsKPiArCWdlbV9vYmogPSB2a21zX2dlbV9jcmVhdGUoZGV2LCBmaWxlLCAmYXJn cy0+aGFuZGxlLCBzaXplKTsKPiArCWlmIChJU19FUlIoZ2VtX29iaikpCj4gKwkJcmV0dXJuIFBU Ul9FUlIoZ2VtX29iaik7Cj4gKwo+ICsJYXJncy0+c2l6ZSA9IGdlbV9vYmotPnNpemU7Cj4gKwlh cmdzLT5waXRjaCA9IHBpdGNoOwo+ICsKPiArCURSTV9ERUJVR19EUklWRVIoIkNyZWF0ZWQgb2Jq ZWN0IG9mIHNpemUgJWxsZFxuIiwgc2l6ZSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K2ludCB2a21zX2R1bWJfbWFwKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiArCQkgIHUzMiBoYW5kbGUsIHU2NCAqb2Zmc2V0KQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iajsKPiArCWludCByZXQ7Cj4gKwo+ICsJb2JqID0gZHJtX2dlbV9v YmplY3RfbG9va3VwKGZpbGUsIGhhbmRsZSk7Cj4gKwlpZiAoIW9iaikKPiArCQlyZXR1cm4gLUVO T0VOVDsKPiArCj4gKwlpZiAoIW9iai0+ZmlscCkgewo+ICsJCXJldCA9IC1FSU5WQUw7Cj4gKwkJ Z290byB1bnJlZjsKPiArCX0KPiArCj4gKwlyZXQgPSBkcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNl dChvYmopOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIHVucmVmOwo+ICsKPiArCSpvZmZzZXQgPSBk cm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoJm9iai0+dm1hX25vZGUpOwo+ICt1bnJlZjoKPiArCWRy bV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30K PiAtLSAKPiAyLjE3LjEKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==