From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 16/55] drm/i915: Remove obsolete engine->gpu_caches_dirty Date: Tue, 26 Jul 2016 08:06:41 +0300 Message-ID: <1469509601.4681.14.camel@linux.intel.com> References: <1469467954-3920-1-git-send-email-chris@chris-wilson.co.uk> <1469467954-3920-17-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id AA6206E41E for ; Tue, 26 Jul 2016 05:06:43 +0000 (UTC) In-Reply-To: <1469467954-3920-17-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gbWEsIDIwMTYtMDctMjUgYXQgMTg6MzEgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBT cGFjZSBmb3IgZmx1c2hpbmcgdGhlIEdQVSBjYWNoZSBwcmlvciB0byBjb21wbGV0aW5nIHRoZSBy ZXF1ZXN0IGlzCj4gcHJlYWxsb2NhdGVkIGFuZCBzbyBjYW5ub3QgZmFpbCAtIHRoZSBHUFUgY2Fj aGVzIHdpbGwgYWx3YXlzIGJlIGZsdXNoZWQKPiBhbG9uZyB3aXRoIHRoZSBjb21wbGV0ZWQgcmVx dWVzdC4gVGhpcyBtZWFucyB3ZSBubyBsb25nZXIgaGF2ZSB0byB0cmFjawo+IHdoZXRoZXIgdGhl IEdQVSBjYWNoZSBpcyBkaXJ0eSBiZXR3ZWVuIGJhdGNoZXMgbGlrZSB3ZSBoYWQgdG8gd2l0aCB0 aGUKPiBvdXRzdGFuZGluZ19sYXp5X3NlcW5vLgo+IAo+IFdpdGggdGhlIHJlbW92YWwgb2YgdGhl IGR1cGxpY2F0aW9uIGluIHRoZSBwZXItYmFja2VuZCBlbnRyeSBwb2ludHMgZm9yCj4gZW1pdHRp bmcgdGhlIG9ic29sZXRlIGxhenkgZmx1c2gsIHdlIGNhbiB0aGVuIGZ1cnRoZXIgdW5pZnkgdGhl Cj4gZW5naW5lLT5lbWl0X2ZsdXNoLgo+IAo+IHYyOiBFeHBhbmQgYSBiaXQgb24gdGhlIGxlZ2Fj eSBvZiBncHVfY2FjaGVzX2RpcnR5Cj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxq b29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgoKPiBMaW5rOiBodHRwOi8vcGF0Y2h3b3Jr LmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9tc2dpZC8xNDY5NDMyNjg3LTIyNzU2LTE4LWdpdC1zZW5k LWVtYWlsLWNocmlzQGNocmlzLXdpbHNvbi5jby51awo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jwqDCoMKgwqB8wqDCoDIgKy0KPiDCoGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8wqDCoDkgKy0tLQo+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmPCoMKgwqDCoMKgwqDCoMKgfCAxMSArKystLQo+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jwqDCoMKgwqB8wqDCoDggKyst LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfCA0NyArKystLS0tLS0tLS0tLS0tLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDIgLQo+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jwqDCoMKgwqB8IDcyICsrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5owqDC oMKgwqB8wqDCoDcgLS0tCj4gwqA4IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEy MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j Cj4gaW5kZXggMzMzNmE1ZmNkMDI5Li5iZWVjZThmZWI4ZmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTU2OCw3ICs1NjgsNyBAQCBtaV9zZXRfY29u dGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQo+IMKg CcKgKiBpdGxiX2JlZm9yZV9jdHhfc3dpdGNoLgo+IMKgCcKgKi8KPiDCoAlpZiAoSVNfR0VONihk ZXZfcHJpdikpIHsKPiAtCQlyZXQgPSBlbmdpbmUtPmZsdXNoKHJlcSwgSTkxNV9HRU1fR1BVX0RP TUFJTlMsIDApOwo+ICsJCXJldCA9IGVuZ2luZS0+ZW1pdF9mbHVzaChyZXEsIEk5MTVfR0VNX0dQ VV9ET01BSU5TLCAwKTsKPiDCoAkJaWYgKHJldCkKPiDCoAkJCXJldHVybiByZXQ7Cj4gwqAJfQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCBkMGVm Njc1ZmIxNjkuLjM1YzRjNTk1ZTViYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9leGVjYnVmZmVyLmMKPiBAQCAtOTk4LDEwICs5OTgsOCBAQCBpOTE1X2dlbV9leGVjYnVm ZmVyX21vdmVfdG9fZ3B1KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+IMKgCWlm IChmbHVzaF9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlOX0dUVCkKPiDCoAkJd21iKCk7Cj4gwqAK PiAtCS8qIFVuY29uZGl0aW9uYWxseSBpbnZhbGlkYXRlIGdwdSBjYWNoZXMgYW5kIGVuc3VyZSB0 aGF0IHdlIGRvIGZsdXNoCj4gLQnCoCogYW55IHJlc2lkdWFsIHdyaXRlcyBmcm9tIHRoZSBwcmV2 aW91cyBiYXRjaC4KPiAtCcKgKi8KPiAtCXJldHVybiBpbnRlbF9lbmdpbmVfaW52YWxpZGF0ZV9h bGxfY2FjaGVzKHJlcSk7Cj4gKwkvKiBVbmNvbmRpdGlvbmFsbHkgaW52YWxpZGF0ZSBHUFUgY2Fj aGVzIGFuZCBUTEJzLiAqLwo+ICsJcmV0dXJuIHJlcS0+ZW5naW5lLT5lbWl0X2ZsdXNoKHJlcSwg STkxNV9HRU1fR1BVX0RPTUFJTlMsIDApOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgYm9vbAo+IEBA IC0xMTYzLDkgKzExNjEsNiBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX21vdmVfdG9fYWN0aXZlKHN0 cnVjdCBsaXN0X2hlYWQgKnZtYXMsCj4gwqBzdGF0aWMgdm9pZAo+IMKgaTkxNV9nZW1fZXhlY2J1 ZmZlcl9yZXRpcmVfY29tbWFuZHMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFt cykKPiDCoHsKPiAtCS8qIFVuY29uZGl0aW9uYWxseSBmb3JjZSBhZGRfcmVxdWVzdCB0byBlbWl0 IGEgZnVsbCBmbHVzaC4gKi8KPiAtCXBhcmFtcy0+ZW5naW5lLT5ncHVfY2FjaGVzX2RpcnR5ID0g dHJ1ZTsKPiAtCj4gwqAJLyogQWRkIGEgYnJlYWRjcnVtYiBmb3IgdGhlIGNvbXBsZXRpb24gb2Yg dGhlIGJhdGNoIGJ1ZmZlciAqLwo+IMKgCV9faTkxNV9hZGRfcmVxdWVzdChwYXJhbXMtPnJlcXVl c3QsIHBhcmFtcy0+YmF0Y2hfb2JqLCB0cnVlKTsKPiDCoH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+IGluZGV4IGViZmEwNDA2YTZhMS4uMzlmYTllYjEwNTE0IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMTY2Niw3ICsxNjY2LDggQEAgc3RhdGlj IGludCBoc3dfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiDCoAlpbnQg cmV0Owo+IMKgCj4gwqAJLyogTkI6IFRMQnMgbXVzdCBiZSBmbHVzaGVkIGFuZCBpbnZhbGlkYXRl ZCBiZWZvcmUgYSBzd2l0Y2ggKi8KPiAtCXJldCA9IGVuZ2luZS0+Zmx1c2gocmVxLCBJOTE1X0dF TV9HUFVfRE9NQUlOUywgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+ICsJcmV0ID0gZW5naW5lLT5l bWl0X2ZsdXNoKHJlcSwKPiArCQkJCcKgSTkxNV9HRU1fR1BVX0RPTUFJTlMsIEk5MTVfR0VNX0dQ VV9ET01BSU5TKTsKPiDCoAlpZiAocmV0KQo+IMKgCQlyZXR1cm4gcmV0Owo+IMKgCj4gQEAgLTE2 OTMsNyArMTY5NCw4IEBAIHN0YXRpYyBpbnQgZ2VuN19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0LAo+IMKgCWludCByZXQ7Cj4gwqAKPiDCoAkvKiBOQjogVExCcyBtdXN0IGJl IGZsdXNoZWQgYW5kIGludmFsaWRhdGVkIGJlZm9yZSBhIHN3aXRjaCAqLwo+IC0JcmV0ID0gZW5n aW5lLT5mbHVzaChyZXEsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBJOTE1X0dFTV9HUFVfRE9NQUlO Uyk7Cj4gKwlyZXQgPSBlbmdpbmUtPmVtaXRfZmx1c2gocmVxLAo+ICsJCQkJwqBJOTE1X0dFTV9H UFVfRE9NQUlOUywgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+IMKgCWlmIChyZXQpCj4gwqAJCXJl dHVybiByZXQ7Cj4gwqAKPiBAQCAtMTcxMSw4ICsxNzEzLDkgQEAgc3RhdGljIGludCBnZW43X21t X3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gwqAKPiDCoAkvKiBYWFg6IFJD UyBpcyB0aGUgb25seSBvbmUgdG8gYXV0byBpbnZhbGlkYXRlIHRoZSBUTEJzPyAqLwo+IMKgCWlm IChlbmdpbmUtPmlkICE9IFJDUykgewo+IC0JCXJldCA9IGVuZ2luZS0+Zmx1c2gocmVxLAo+IC0J CQkJwqDCoMKgwqBJOTE1X0dFTV9HUFVfRE9NQUlOUywgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+ ICsJCXJldCA9IGVuZ2luZS0+ZW1pdF9mbHVzaChyZXEsCj4gKwkJCQkJwqBJOTE1X0dFTV9HUFVf RE9NQUlOUywKPiArCQkJCQnCoEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKPiDCoAkJaWYgKHJldCkK PiDCoAkJCXJldHVybiByZXQ7Cj4gwqAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmMKPiBpbmRleCA5NDJiNWIxZjE2MDIuLjdlMzIwNjA1MWNlZCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiBAQCAtNDUxLDEyICs0NTEsMTAgQEAg dm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0LAo+IMKgCcKgKiB3aGF0Lgo+IMKgCcKgKi8KPiDCoAlpZiAoZmx1c2hfY2FjaGVzKSB7Cj4g LQkJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiAtCQkJcmV0ID0gbG9naWNhbF9yaW5nX2Zs dXNoX2FsbF9jYWNoZXMocmVxdWVzdCk7Cj4gLQkJZWxzZQo+IC0JCQlyZXQgPSBpbnRlbF9lbmdp bmVfZmx1c2hfYWxsX2NhY2hlcyhyZXF1ZXN0KTsKPiArCQlyZXQgPSBlbmdpbmUtPmVtaXRfZmx1 c2gocmVxdWVzdCwgMCwgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+ICsKPiDCoAkJLyogTm90IGFs bG93ZWQgdG8gZmFpbCEgKi8KPiAtCQlXQVJOKHJldCwgIipfcmluZ19mbHVzaF9hbGxfY2FjaGVz IGZhaWxlZDogJWQhXG4iLCByZXQpOwo+ICsJCVdBUk4ocmV0LCAiZW5naW5lLT5lbWl0X2ZsdXNo KCkgZmFpbGVkOiAlZCFcbiIsIHJldCk7Cj4gwqAJfQo+IMKgCj4gwqAJdHJhY2VfaTkxNV9nZW1f cmVxdWVzdF9hZGQocmVxdWVzdCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA4 NmI4ZjQxYzI1NGQuLmU4ZDk3MWU4MTQ5MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4gQEAgLTY0MiwyNCArNjQyLDYgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfcXVl dWUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+IMKgCXNwaW5fdW5sb2Nr X2JoKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbG9n aWNhbF9yaW5nX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5l bmdpbmU7Cj4gLQl1aW50MzJfdCBmbHVzaF9kb21haW5zOwo+IC0JaW50IHJldDsKPiAtCj4gLQlm bHVzaF9kb21haW5zID0gMDsKPiAtCWlmIChlbmdpbmUtPmdwdV9jYWNoZXNfZGlydHkpCj4gLQkJ Zmx1c2hfZG9tYWlucyA9IEk5MTVfR0VNX0dQVV9ET01BSU5TOwo+IC0KPiAtCXJldCA9IGVuZ2lu ZS0+ZW1pdF9mbHVzaChyZXEsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBmbHVzaF9kb21haW5zKTsK PiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQllbmdpbmUtPmdwdV9jYWNoZXNf ZGlydHkgPSBmYWxzZTsKPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IMKgc3RhdGljIGludCBleGVj bGlzdHNfbW92ZV90b19ncHUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gwqAJ CQkJwqBzdHJ1Y3QgbGlzdF9oZWFkICp2bWFzKQo+IMKgewo+IEBAIC02OTAsNyArNjcyLDcgQEAg c3RhdGljIGludCBleGVjbGlzdHNfbW92ZV90b19ncHUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCj4gwqAJLyogVW5jb25kaXRpb25hbGx5IGludmFsaWRhdGUgZ3B1IGNhY2hlcyBh bmQgZW5zdXJlIHRoYXQgd2UgZG8gZmx1c2gKPiDCoAnCoCogYW55IHJlc2lkdWFsIHdyaXRlcyBm cm9tIHRoZSBwcmV2aW91cyBiYXRjaC4KPiDCoAnCoCovCj4gLQlyZXR1cm4gbG9naWNhbF9yaW5n X2ludmFsaWRhdGVfYWxsX2NhY2hlcyhyZXEpOwo+ICsJcmV0dXJuIHJlcS0+ZW5naW5lLT5lbWl0 X2ZsdXNoKHJlcSwgSTkxNV9HRU1fR1BVX0RPTUFJTlMsIDApOwo+IMKgfQo+IMKgCj4gwqBpbnQg aW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiBAQCAtOTMwLDIyICs5MTIsNiBAQCB2b2lkIGludGVsX2xv Z2ljYWxfcmluZ19zdG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiDCoAlJOTE1 X1dSSVRFX01PREUoZW5naW5lLCBfTUFTS0VEX0JJVF9ESVNBQkxFKFNUT1BfUklORykpOwo+IMKg fQo+IMKgCj4gLWludCBsb2dpY2FsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gcmVxLT5lbmdpbmU7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmICghZW5naW5lLT5ncHVf Y2FjaGVzX2RpcnR5KQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCXJldCA9IGVuZ2luZS0+ZW1pdF9m bHVzaChyZXEsIDAsIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0 dXJuIHJldDsKPiAtCj4gLQllbmdpbmUtPmdwdV9jYWNoZXNfZGlydHkgPSBmYWxzZTsKPiAtCXJl dHVybiAwOwo+IC19Cj4gLQo+IMKgc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X3BpbihzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+IMKgCQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiDCoHsKPiBAQCAtMTAyNiwxNSArOTkyLDE1IEBAIHZvaWQgaW50ZWxfbHJfY29u dGV4dF91bnBpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+IMKgc3RhdGljIGludCBp bnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKPiDCoHsKPiDCoAlpbnQgcmV0LCBpOwo+IC0Jc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4gwqAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcg PSByZXEtPnJpbmc7Cj4gwqAJc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKncgPSAmcmVxLT5pOTE1 LT53b3JrYXJvdW5kczsKPiDCoAo+IMKgCWlmICh3LT5jb3VudCA9PSAwKQo+IMKgCQlyZXR1cm4g MDsKPiDCoAo+IC0JZW5naW5lLT5ncHVfY2FjaGVzX2RpcnR5ID0gdHJ1ZTsKPiAtCXJldCA9IGxv Z2ljYWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHJlcSk7Cj4gKwlyZXQgPSByZXEtPmVuZ2luZS0+ ZW1pdF9mbHVzaChyZXEsCj4gKwkJCQnCoMKgwqDCoMKgwqBJOTE1X0dFTV9HUFVfRE9NQUlOUywK PiArCQkJCcKgwqDCoMKgwqDCoEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKPiDCoAlpZiAocmV0KQo+ IMKgCQlyZXR1cm4gcmV0Owo+IMKgCj4gQEAgLTEwNTEsOCArMTAxNyw5IEBAIHN0YXRpYyBpbnQg aW50ZWxfbG9naWNhbF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpCj4gwqAKPiDCoAlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7Cj4gwqAKPiAt CWVuZ2luZS0+Z3B1X2NhY2hlc19kaXJ0eSA9IHRydWU7Cj4gLQlyZXQgPSBsb2dpY2FsX3Jpbmdf Zmx1c2hfYWxsX2NhY2hlcyhyZXEpOwo+ICsJcmV0ID0gcmVxLT5lbmdpbmUtPmVtaXRfZmx1c2go cmVxLAo+ICsJCQkJwqDCoMKgwqDCoMKgSTkxNV9HRU1fR1BVX0RPTUFJTlMsCj4gKwkJCQnCoMKg wqDCoMKgwqBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7Cj4gwqAJaWYgKHJldCkKPiDCoAkJcmV0dXJu IHJldDsKPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4gaW5kZXggZDI2ZmI0NDU0OWU1 Li4zM2UwMTkzZTU0NTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+IEBAIC03Miw4 ICs3Miw2IEBAIGludCBsb2dpY2FsX3hjc19yaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKPiDCoAo+IMKgaW50IGludGVsX2VuZ2luZXNfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKPiDCoAo+IC1pbnQgbG9naWNhbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+IC0KPiDCoC8qIExvZ2ljYWwgUmluZyBD b250ZXh0cyAqLwo+IMKgCj4gwqAvKiBPbmUgZXh0cmEgcGFnZSBpcyBhZGRlZCBiZWZvcmUgTFJD IGZvciBHdUMgYXMgc2hhcmVkIGRhdGEgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCj4gaW5kZXggZTdhN2Y2N2FiMDZkLi45ZTRiNDk2NDQ1NTMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTY4OCw4ICs2ODgsOSBAQCBz dGF0aWMgaW50IGludGVsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSkKPiDCoAlpZiAody0+Y291bnQgPT0gMCkKPiDCoAkJcmV0dXJuIDA7Cj4g wqAKPiAtCXJlcS0+ZW5naW5lLT5ncHVfY2FjaGVzX2RpcnR5ID0gdHJ1ZTsKPiAtCXJldCA9IGlu dGVsX2VuZ2luZV9mbHVzaF9hbGxfY2FjaGVzKHJlcSk7Cj4gKwlyZXQgPSByZXEtPmVuZ2luZS0+ ZW1pdF9mbHVzaChyZXEsCj4gKwkJCQnCoMKgwqDCoMKgwqBJOTE1X0dFTV9HUFVfRE9NQUlOUywK PiArCQkJCcKgwqDCoMKgwqDCoEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKPiDCoAlpZiAocmV0KQo+ IMKgCQlyZXR1cm4gcmV0Owo+IMKgCj4gQEAgLTcwNiw4ICs3MDcsOSBAQCBzdGF0aWMgaW50IGlu dGVsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSkKPiDCoAo+IMKgCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiDCoAo+IC0JcmVxLT5lbmdp bmUtPmdwdV9jYWNoZXNfZGlydHkgPSB0cnVlOwo+IC0JcmV0ID0gaW50ZWxfZW5naW5lX2ZsdXNo X2FsbF9jYWNoZXMocmVxKTsKPiArCXJldCA9IHJlcS0+ZW5naW5lLT5lbWl0X2ZsdXNoKHJlcSwK PiArCQkJCcKgwqDCoMKgwqDCoEk5MTVfR0VNX0dQVV9ET01BSU5TLAo+ICsJCQkJwqDCoMKgwqDC oMKgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+IMKgCWlmIChyZXQpCj4gwqAJCXJldHVybiByZXQ7 Cj4gwqAKPiBAQCAtMjg2MCwyMSArMjg2MiwyMSBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmlu Z19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IMKgCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDgpIHsKPiDCoAkJZW5naW5lLT5pbml0X2NvbnRleHQgPSBpbnRlbF9y Y3NfY3R4X2luaXQ7Cj4gwqAJCWVuZ2luZS0+YWRkX3JlcXVlc3QgPSBnZW44X3JlbmRlcl9hZGRf cmVxdWVzdDsKPiAtCQllbmdpbmUtPmZsdXNoID0gZ2VuOF9yZW5kZXJfcmluZ19mbHVzaDsKPiAr CQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW44X3JlbmRlcl9yaW5nX2ZsdXNoOwo+IMKgCQlpZiAo aTkxNS5zZW1hcGhvcmVzKQo+IMKgCQkJZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsID0gZ2VuOF9y Y3Nfc2lnbmFsOwo+IMKgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4g wqAJCWVuZ2luZS0+aW5pdF9jb250ZXh0ID0gaW50ZWxfcmNzX2N0eF9pbml0Owo+IC0JCWVuZ2lu ZS0+Zmx1c2ggPSBnZW43X3JlbmRlcl9yaW5nX2ZsdXNoOwo+ICsJCWVuZ2luZS0+ZW1pdF9mbHVz aCA9IGdlbjdfcmVuZGVyX3JpbmdfZmx1c2g7Cj4gwqAJCWlmIChJU19HRU42KGRldl9wcml2KSkK PiAtCQkJZW5naW5lLT5mbHVzaCA9IGdlbjZfcmVuZGVyX3JpbmdfZmx1c2g7Cj4gKwkJCWVuZ2lu ZS0+ZW1pdF9mbHVzaCA9IGdlbjZfcmVuZGVyX3JpbmdfZmx1c2g7Cj4gwqAJfSBlbHNlIGlmIChJ U19HRU41KGRldl9wcml2KSkgewo+IC0JCWVuZ2luZS0+Zmx1c2ggPSBnZW40X3JlbmRlcl9yaW5n X2ZsdXNoOwo+ICsJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjRfcmVuZGVyX3JpbmdfZmx1c2g7 Cj4gwqAJfSBlbHNlIHsKPiDCoAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KQo+IC0JCQll bmdpbmUtPmZsdXNoID0gZ2VuMl9yZW5kZXJfcmluZ19mbHVzaDsKPiArCQkJZW5naW5lLT5lbWl0 X2ZsdXNoID0gZ2VuMl9yZW5kZXJfcmluZ19mbHVzaDsKPiDCoAkJZWxzZQo+IC0JCQllbmdpbmUt PmZsdXNoID0gZ2VuNF9yZW5kZXJfcmluZ19mbHVzaDsKPiArCQkJZW5naW5lLT5lbWl0X2ZsdXNo ID0gZ2VuNF9yZW5kZXJfcmluZ19mbHVzaDsKPiDCoAkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sg PSBJOTE1X1VTRVJfSU5URVJSVVBUOwo+IMKgCX0KPiDCoAo+IEBAIC0yOTExLDEyICsyOTEzLDEy IEBAIGludCBpbnRlbF9pbml0X2JzZF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gwqAJCS8qIGdlbjYgYnNkIG5lZWRzIGEgc3BlY2lhbCB3YSBmb3IgdGFpbCB1 cGRhdGVzICovCj4gwqAJCWlmIChJU19HRU42KGRldl9wcml2KSkKPiDCoAkJCWVuZ2luZS0+d3Jp dGVfdGFpbCA9IGdlbjZfYnNkX3Jpbmdfd3JpdGVfdGFpbDsKPiAtCQllbmdpbmUtPmZsdXNoID0g Z2VuNl9ic2RfcmluZ19mbHVzaDsKPiArCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW42X2JzZF9y aW5nX2ZsdXNoOwo+IMKgCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDgpCj4gwqAJCQllbmdp bmUtPmlycV9lbmFibGVfbWFzayA9IEdUX0JTRF9VU0VSX0lOVEVSUlVQVDsKPiDCoAl9IGVsc2Ug ewo+IMKgCQllbmdpbmUtPm1taW9fYmFzZSA9IEJTRF9SSU5HX0JBU0U7Cj4gLQkJZW5naW5lLT5m bHVzaCA9IGJzZF9yaW5nX2ZsdXNoOwo+ICsJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGJzZF9yaW5n X2ZsdXNoOwo+IMKgCQlpZiAoSVNfR0VONShkZXZfcHJpdikpCj4gwqAJCQllbmdpbmUtPmlycV9l bmFibGVfbWFzayA9IElMS19CU0RfVVNFUl9JTlRFUlJVUFQ7Cj4gwqAJCWVsc2UKPiBAQCAtMjkz NSw3ICsyOTM3LDcgQEAgaW50IGludGVsX2luaXRfYnNkMl9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gwqAKPiDCoAlpbnRlbF9yaW5nX2RlZmF1bHRfdmZ1bmNz KGRldl9wcml2LCBlbmdpbmUpOwo+IMKgCj4gLQllbmdpbmUtPmZsdXNoID0gZ2VuNl9ic2Rfcmlu Z19mbHVzaDsKPiArCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjZfYnNkX3JpbmdfZmx1c2g7Cj4g wqAKPiDCoAlyZXR1cm4gaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihlbmdpbmUpOwo+IMKgfQo+IEBA IC0yOTQ2LDcgKzI5NDgsNyBAQCBpbnQgaW50ZWxfaW5pdF9ibHRfcmluZ19idWZmZXIoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IMKgCj4gwqAJaW50ZWxfcmluZ19kZWZhdWx0X3Zm dW5jcyhkZXZfcHJpdiwgZW5naW5lKTsKPiDCoAo+IC0JZW5naW5lLT5mbHVzaCA9IGdlbjZfcmlu Z19mbHVzaDsKPiArCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjZfcmluZ19mbHVzaDsKPiDCoAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDgpCj4gwqAJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNr ID0gR1RfQkxUX1VTRVJfSU5URVJSVVBUOwo+IMKgCj4gQEAgLTI5NTksNyArMjk2MSw3IEBAIGlu dCBpbnRlbF9pbml0X3ZlYm94X3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiDCoAo+IMKgCWludGVsX3JpbmdfZGVmYXVsdF92ZnVuY3MoZGV2X3ByaXYsIGVuZ2lu ZSk7Cj4gwqAKPiAtCWVuZ2luZS0+Zmx1c2ggPSBnZW42X3JpbmdfZmx1c2g7Cj4gKwllbmdpbmUt PmVtaXRfZmx1c2ggPSBnZW42X3JpbmdfZmx1c2g7Cj4gwqAKPiDCoAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDgpIHsKPiDCoAkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBQTV9WRUJPWF9V U0VSX0lOVEVSUlVQVDsKPiBAQCAtMjk3MCw0NiArMjk3Miw2IEBAIGludCBpbnRlbF9pbml0X3Zl Ym94X3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiDCoAlyZXR1 cm4gaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihlbmdpbmUpOwo+IMKgfQo+IMKgCj4gLWludAo+IC1p bnRlbF9lbmdpbmVfZmx1c2hfYWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdp bmU7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmICghZW5naW5lLT5ncHVfY2FjaGVzX2RpcnR5KQo+ IC0JCXJldHVybiAwOwo+IC0KPiAtCXJldCA9IGVuZ2luZS0+Zmx1c2gocmVxLCAwLCBJOTE1X0dF TV9HUFVfRE9NQUlOUyk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JdHJh Y2VfaTkxNV9nZW1fcmluZ19mbHVzaChyZXEsIDAsIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKPiAt Cj4gLQllbmdpbmUtPmdwdV9jYWNoZXNfZGlydHkgPSBmYWxzZTsKPiAtCXJldHVybiAwOwo+IC19 Cj4gLQo+IC1pbnQKPiAtaW50ZWxfZW5naW5lX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4gLQl1aW50MzJfdCBmbHVzaF9kb21haW5zOwo+IC0J aW50IHJldDsKPiAtCj4gLQlmbHVzaF9kb21haW5zID0gMDsKPiAtCWlmIChlbmdpbmUtPmdwdV9j YWNoZXNfZGlydHkpCj4gLQkJZmx1c2hfZG9tYWlucyA9IEk5MTVfR0VNX0dQVV9ET01BSU5TOwo+ IC0KPiAtCXJldCA9IGVuZ2luZS0+Zmx1c2gocmVxLCBJOTE1X0dFTV9HUFVfRE9NQUlOUywgZmx1 c2hfZG9tYWlucyk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JdHJhY2Vf aTkxNV9nZW1fcmluZ19mbHVzaChyZXEsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBmbHVzaF9kb21h aW5zKTsKPiAtCj4gLQllbmdpbmUtPmdwdV9jYWNoZXNfZGlydHkgPSBmYWxzZTsKPiAtCXJldHVy biAwOwo+IC19Cj4gLQo+IMKgdm9pZCBpbnRlbF9lbmdpbmVfc3RvcChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gwqB7Cj4gwqAJaW50IHJldDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggYmE1NGZmY2RkNTVhLi4wMDcyMzQwMWY5OGMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTIwNiw5ICsy MDYsNiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKPiDCoAo+IMKgCXZvaWQJCSgqd3JpdGVf dGFpbCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IMKgCQkJCcKgwqDCoMKgwqDC oHUzMiB2YWx1ZSk7Cj4gLQlpbnQgX19tdXN0X2NoZWNrICgqZmx1c2gpKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAo+IC0JCQkJwqDCoHUzMglpbnZhbGlkYXRlX2RvbWFpbnMsCj4g LQkJCQnCoMKgdTMyCWZsdXNoX2RvbWFpbnMpOwo+IMKgCWludAkJKCphZGRfcmVxdWVzdCkoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+IMKgCS8qIFNvbWUgY2hpcHNldHMgYXJl IG5vdCBxdWl0ZSBhcyBjb2hlcmVudCBhcyBhZHZlcnRpc2VkIGFuZCBuZWVkCj4gwqAJwqAqIGFu IGV4cGVuc2l2ZSBraWNrIHRvIGZvcmNlIGEgdHJ1ZSByZWFkIG9mIHRoZSB1cC10by1kYXRlIHNl cW5vLgo+IEBAIC0zMjUsOCArMzIyLDYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gwqAJ wqAqLwo+IMKgCXUzMiBsYXN0X3N1Ym1pdHRlZF9zZXFubzsKPiDCoAo+IC0JYm9vbCBncHVfY2Fj aGVzX2RpcnR5Owo+IC0KPiDCoAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqbGFzdF9jb250ZXh0 Owo+IMKgCj4gwqAJc3RydWN0IGludGVsX2VuZ2luZV9oYW5nY2hlY2sgaGFuZ2NoZWNrOwo+IEBA IC00NzQsOCArNDY5LDYgQEAgdm9pZCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyk7Cj4gwqAKPiDCoGludCBfX211c3RfY2hlY2sgaW50ZWxfZW5naW5lX2lk bGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiDCoHZvaWQgaW50ZWxfZW5naW5l X2luaXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pOwo+ IC1pbnQgaW50ZWxfZW5naW5lX2ZsdXNoX2FsbF9jYWNoZXMoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpOwo+IC1pbnQgaW50ZWxfZW5naW5lX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gwqAKPiDCoGludCBpbnRlbF9pbml0 X3BpcGVfY29udHJvbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBzaXplKTsK PiDCoHZvaWQgaW50ZWxfZmluaV9waXBlX2NvbnRyb2woc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKLS0gCkpvb25hcyBMYWh0aW5lbgpPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRl cgpJbnRlbCBDb3Jwb3JhdGlvbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK