From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/3] drm/i915: fix CFB size calculation Date: Thu, 1 Oct 2015 21:11:50 +0300 Message-ID: <20151001181150.GM26517@intel.com> References: <1443023547-19896-1-git-send-email-paulo.r.zanoni@intel.com> <1443643545-3603-1-git-send-email-paulo.r.zanoni@intel.com> <1443643545-3603-2-git-send-email-paulo.r.zanoni@intel.com> <20151001121413.GE26517@intel.com> <20151001122308.GG26517@intel.com> <1443721629.2442.14.camel@intel.com> 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 649AF6E044 for ; Thu, 1 Oct 2015 11:11:54 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1443721629.2442.14.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Zanoni, Paulo R" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMDEsIDIwMTUgYXQgMDU6NDc6MTFQTSArMDAwMCwgWmFub25pLCBQYXVsbyBS IHdyb3RlOgo+IEVtIFF1aSwgMjAxNS0xMC0wMSDDoHMgMTU6MjMgKzAzMDAsIFZpbGxlIFN5cmrD pGzDpCBlc2NyZXZldToKPiA+IE9uIFRodSwgT2N0IDAxLCAyMDE1IGF0IDAzOjE0OjEzUE0gKzAz MDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ID4gT24gV2VkLCBTZXAgMzAsIDIwMTUgYXQg MDU6MDU6NDRQTSAtMDMwMCwgUGF1bG8gWmFub25pIHdyb3RlOgo+ID4gPiA+IFdlIHdlcmUgY29u c2lkZXJpbmcgdGhlIHdob2xlIGZyYW1lYnVmZmVyIGhlaWdodCwgYnV0IHRoZSBzcGVjCj4gPiA+ ID4gc2F5cyB3ZQo+ID4gPiA+IHNob3VsZCBvbmx5IGNvbnNpZGVyIHRoZSBhY3RpdmUgZGlzcGxh eSBoZWlnaHQgc2l6ZS4gVGhlcmUgd2VyZQo+ID4gPiA+IHN0aWxsCj4gPiA+ID4gc29tZSB1bmNs ZWFyIHF1ZXN0aW9ucyBiYXNlZCBvbiB0aGUgc3BlYywgYnV0IHRoZSBoYXJkd2FyZSBndXlzCj4g PiA+ID4gY2xhcmlmaWVkIHRoZW0gZm9yIHVzLiBBY2NvcmRpbmcgdG8gdGhlbToKPiA+ID4gPiAK PiA+ID4gPiAtIENGQiBzaXplID0gQ0ZCIHN0cmlkZSAqIE51bWJlciBvZiBsaW5lcyBGQkMgd3Jp dGVzIHRvIENGQgo+ID4gPiA+IC0gQ0ZCIHN0cmlkZSA9IHBsYW5lIHN0cmlkZSAvIGNvbXByZXNz aW9uIGxpbWl0Cj4gPiA+ID4gLSBOdW1iZXIgb2YgbGluZXMgRkJDIHdyaXRlcyB0byBDRkIgPSBN SU4ocGxhbmUgc291cmNlIGhlaWdodCwKPiA+ID4gPiBtYXhpbXVtCj4gPiA+ID4gICBudW1iZXIg b2YgbGluZXMgRkJDIHdyaXRlcyB0byBDRkIpCj4gPiA+ID4gLSBQbGFuZSBzb3VyY2UgaGVpZ2h0 ID0KPiA+ID4gPiAgIC0gcGlwZSBzb3VyY2UgaGVpZ2h0IChQSVBFX1NSQ1NaIHJlZ2lzdGVyKSAo YmVmb3JlIFNLTCkKPiA+ID4gPiAgIC0gcGxhbmUgc2l6ZSByZWdpc3RlciBoZWlnaHQgKFBMQU5F X1NJWkUgcmVnaXN0ZXIpIChTS0wrKQo+ID4gPiA+IC0gTWF4aW11bSBudW1iZXIgb2YgbGluZXMg RkJDIHdyaXRlcyB0byBDRkIgPQo+ID4gPiA+ICAgLSBwbGFuZSBzb3VyY2UgaGVpZ2h0IChiZWZv cmUgSFNXKQo+ID4gPiA+ICAgLSAyMDQ4IChIU1crKQo+ID4gPiA+IAo+ID4gPiA+IEZvciB0aGUg cGxhbmUgc291cmNlIGhlaWdodCwgSSBjb3VsZCBqdXN0IGhhdmUgbWFkZSBvdXIgY29kZSBkbwo+ ID4gPiA+IEk5MTVfUkVBRCgpIGluIG9yZGVyIHRvIGJlIG1vcmUgZnV0dXJlIHByb29mLCBidXQg c2luY2UgaXQncyBub3QKPiA+ID4gPiBjb29sCj4gPiA+ID4gdG8gZG8gcmVnaXN0ZXIgcmVhZHMg SSBkZWNpZGVkIHRvIGp1c3QgcmVjYWxjdWxhdGUgdGhlIHZhbHVlcyB3ZQo+ID4gPiA+IHVzZQo+ ID4gPiA+IHdoZW4gd2UgYWN0dWFsbHkgd3JpdGUgdG8gdGhvc2UgcmVnaXN0ZXJzLgo+ID4gPiA+ IAo+ID4gPiA+IFdpdGggdGhpcyBwYXRjaCwgZGVwZW5kaW5nIG9uIHlvdXIgbWFjaGluZSBjb25m aWd1cmF0aW9uLCBhIGxvdAo+ID4gPiA+IG9mIHRoZQo+ID4gPiA+IGttc19mcm9udGJ1ZmZlcl90 cmFja2luZyBzdWJ0ZXN0cyB0aGF0IHVzZWQgdG8gcmVzdWx0IGluIGEgU0tJUAo+ID4gPiA+IGR1 ZSB0bwo+ID4gPiA+IG5vdCBlbm91Z2ggc3RvbGVuIG1lbW9yeSBzdGlsbCBzdGFydCByZXN1bHRp bmcgaW4gYSBQQVNTLgo+ID4gPiA+IAo+ID4gPiA+IHYyOiBVc2UgdGhlIGNsaXBwZWQgc3JjIHNp emUgaW5zdGVhZCBvZiBwaXBlX3NyY19oIChWaWxsZSkuCj4gPiA+ID4gdjM6IFVzZSB0aGUgYXBw cm9wcmlhdGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgdGhlIGhhcmR3YXJlCj4gPiA+ID4gZ3V5 cy4KPiA+ID4gPiAKPiA+ID4gPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxv LnIuemFub25pQGludGVsLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmJjLmMgfCA1OAo+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0KPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pCj4gPiA+ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYwo+ID4gPiA+IGluZGV4IDFiMmViYjIuLmQ1M2Y3M2YgMTAwNjQ0Cj4gPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiA+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ID4gPiA+IEBAIC02OTgsOSArNjk4LDYwIEBAIHZv aWQgaW50ZWxfZmJjX2NsZWFudXBfY2ZiKHN0cnVjdAo+ID4gPiA+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ID4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwo+ ID4gPiA+ICB9Cj4gPiA+ID4gIAo+ID4gPiA+IC1zdGF0aWMgaW50IGludGVsX2ZiY19zZXR1cF9j ZmIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gPiAqZGV2X3ByaXYsIGludCBzaXplLAo+ ID4gPiA+IC0JCQkgICAgICAgaW50IGZiX2NwcCkKPiA+ID4gPiArLyoKPiA+ID4gPiArICogRm9y IFNLTCssIHRoZSBwbGFuZSBzb3VyY2Ugc2l6ZSB1c2VkIGJ5IHRoZSBoYXJkd2FyZSBpcyBiYXNl ZAo+ID4gPiA+IG9uIHRoZSB2YWx1ZSB3ZQo+ID4gPiA+ICsgKiB3cml0ZSB0byB0aGUgUElQRV9T SVpFIHJlZ2lzdGVyLiBGb3IgQkRXLSwgdGhlIGhhcmR3YXJlIGxvb2tzCj4gPiA+ID4gYXQgdGhl IHZhbHVlIHdlCj4gPiA+ID4gKyAqIHdyb3RlIHRvIFBJUEVTUkMuCj4gPiA+ID4gKyAqLwo+ID4g PiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJjZV9zaXplcyhzdHJ1Y3Qg aW50ZWxfY3J0Ywo+ID4gPiA+ICpjcnRjLAo+ID4gPiA+ICsJCQkJCSAgICAgaW50ICp3aWR0aCwg aW50Cj4gPiA+ID4gKmhlaWdodCkKPiA+ID4gCj4gPiA+IHNpemUgaW4gbXkgbWluZCBhbHJlYWR5 IGluY2x1ZGVzIHdpZHRoIGFuZCBoZWlnaHQsIHNvIHBsdXJhbCBfc2l6ZXMKPiA+ID4gZG9lc24n dCBtYWtlIG11Y2ggc2Vuc2UgdG8gbWUuCj4gPiA+IAo+ID4gPiA+ICB7Cj4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNlLmRldgo+ID4gPiA+IC0+ ZGV2X3ByaXZhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlID0KPiA+ID4gPiArCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUoY3J0Yy0+YmFzZS5wcmltYXJ5 Cj4gPiA+ID4gLT5zdGF0ZSk7Cj4gPiA+ID4gKwlpbnQgdywgaDsKPiA+ID4gPiArCj4gPiA+ID4g KwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KSB7Cj4gPiA+ID4gKwkJaWYgKGlu dGVsX3JvdGF0aW9uXzkwX29yXzI3MChwbGFuZV9zdGF0ZQo+ID4gPiA+IC0+YmFzZS5yb3RhdGlv bikpIHsKPiA+ID4gPiArCQkJdyA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnNyYykK PiA+ID4gPiA+PiAxNjsKPiA+ID4gPiArCQkJaCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+c3JjKSA+Pgo+ID4gPiA+IDE2Owo+ID4gPiA+ICsJCX0gZWxzZSB7Cj4gPiA+ID4gKwkJCXcg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNyYykgPj4KPiA+ID4gPiAxNjsKPiA+ID4g PiArCQkJaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnNyYykKPiA+ID4gPiA+PiAx NjsKPiA+ID4gPiArCQl9Cj4gPiA+IAo+ID4gPiBZb3UgY2FuIGp1c3QgdXNlIHRoaXMgc2FtZSBj b2RlIGZvciBhbGwgcGxhdGZvcm1zLgo+IAo+IFRoaXMgY29kZSBpcyB0cnlpbmcgdG8gcmVjYWxj dWxhdGUgdGhlIHZhbHVlcyB3ZSB1c2UgdG8gd3JpdGUgdG8KPiBQSVBFU1JDIGFuZCBQSVBFX1NJ WkUgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0aGUgSFcgaXMgdXNpbmcuIFNpbmNlIG9uIHRoZQo+IG9s ZGVyIHBsYXRmb3JtcyB3ZSB1c2UgY3J0Yy0+cGlwZV9zcmNfeCBmb3IgUElQRVNSQywgSSB0aGlu ayB0aGUKPiBjb3JyZWN0IHRoaW5nIHRvIGRvIGlzIHRvIGNoZWNrIHRob3NlIHZhbHVlcy4KClRo ZSBwbGFuZSBzcmMgc2l6ZSBpcyBzdGlsbCB3aGF0IG1hdHRlcnMuIE9sZGVyIHBsYXRmb3JtcyBq dXN0IGRpZG4ndApzdXBwb3J0IHdpbmRvd2luZyBvciBzY2FsaW5nIG9uIHRoZSBwcmltYXJ5IHBs YW5lLiBBbmQgc28gdGhlcmUgd2FzIG5vCm5lZWQgdG8gaGF2ZSBhIGRlZGljYXRlZCByZWdpc3Rl ciBmb3IgcGxhbmUgc2l6ZSBzaW5jZSBQSVBFU1JDIHdvdWxkCmFueXdheSBjb250YWluIHRoZSBz YW1lIG51bWJlcnMuCgpJIGNhbid0IHJlY2FsbCBvZmYgdGhlIHRvcCBvZiBteSBoZWFkIHdoZXRo ZXIgZ2VuMi8zIHN1cHBvcnRlZCBGQkMgb24KdGhlIHBsYW5lcyB0aGF0IGhhZCB3aW5kb3dpbmcg KHBsYW5lICE9IEEpLiBQZXJoYXBzIG5vdC4KCj4gPiA+IAo+ID4gPiBBY3R1YWxseSBJJ20gbm90 IHN1cmUgd2hhdCB3ZSBzaG91bGQgZG8gd3J0LiByb3RhdGlvbi4gRG8gd2UKPiA+ID4gc3VwcG9y dAo+ID4gPiBGQkMgd2l0aCA5MC8yNzAgZGVncmVlIHJvdGF0aW9uPyBUaGUgc2Nhbm91dCBoYXBw ZW5zIGluIGEgcm90YXRlZAo+ID4gPiBmYXNoaW9uLCBzbyBzd2FwcGluZyB0aGUgZGltZW5zaW9u cyBsaWtlIHlvdSBkbyB3b3VsZCBzZWVtIGxpa2UgdGhlCj4gPiA+IHJpZ2h0IHRoaW5nLiBCdXQg bm90IHN1cmUuCj4gPiAKPiA+IFdoaWxlIHdyaXRpbmcgbXkgcmVwbHkgdG90aGUgR1RUIHRyYWNr aW5nIG9mZnNldCBwYXRjaCwgSSByZWFsaXplZAo+ID4gdGhhdAo+ID4gOTAvMjcwIGRlZ3JlZSBy b3RhdGlvbiByZXF1aXJlcyBZLXRpbGluZywgc28gc2luY2Ugd2UncmUgY3VycmVudGx5Cj4gPiBs aW1pdGluZyBGQkMgdG8gWC10aWxpbmcgd2UgY2FuIG5ldmVyIGdldCBoZXJlIHdpdGggOTAvMjcw IGRlZ3JlZQo+ID4gcm90YXRpb24uCj4gCj4gQnV0IFNLTCBGQkMgZG9lcyBzdXBwb3J0IFkgdGls aW5nIChldmVuIHRob3VnaCBvdXIgY29kZSBkb2Vzbid0KSwgc28KPiBrZWVwaW5nIHRoZSBjaGVj a3MgYXMgdGhleSBhcmUgd291bGQgaGVscCBwcmV2ZW50aW5nIGZ1dHVyZSBwcm9ibGVtcy4KCkkg c3VwcG9zZS4gQWx0aG91Z2ggcmVtb3ZpbmcgdGhlIGRlcGVuZGVuY3kgb24gaHcgdHJhY2tpbmcg d291bGQgYmUKcmVxdWlyZWQgaW4gYW55IGNhc2UgZm9yIFkgdGlsaW5nLgoKPiAKPiA+IAo+ID4g PiAKPiA+ID4gPiArCX0gZWxzZSB7Cj4gPiA+ID4gKwkJdyA9IGNydGMtPmNvbmZpZy0+cGlwZV9z cmNfdzsKPiA+ID4gPiArCQloID0gY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oOwo+ID4gPiA+ICsJ fQo+ID4gPiA+ICsKPiA+ID4gPiArCWlmICh3aWR0aCkKPiA+ID4gPiArCQkqd2lkdGggPSB3Owo+ ID4gPiA+ICsJaWYgKGhlaWdodCkKPiA+ID4gPiArCQkqaGVpZ2h0ID0gaDsKPiA+ID4gPiArfQo+ ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBpbnRlbF9mYmNfY2FsY3VsYXRlX2NmYl9zaXpl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNlLmRldgo+ID4gPiA+IC0+ZGV2X3By aXZhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2Uu cHJpbWFyeS0+ZmI7Cj4gPiA+ID4gKwlpbnQgbGluZXM7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaW50 ZWxfZmJjX2dldF9wbGFuZV9zb3VyY2Vfc2l6ZXMoY3J0YywgTlVMTCwgJmxpbmVzKTsKPiA+ID4g PiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDcpCj4gPiA+ID4gKwkJbGluZXMg PSBtaW4obGluZXMsIDIwNDgpOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiBsaW5lcyAqIGZi LT5waXRjaGVzWzBdOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IGlu dGVsX2ZiY19zZXR1cF9jZmIoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPiA+ID4gK3sKPiA+ ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2 Cj4gPiA+ID4gLT5kZXZfcHJpdmF0ZTsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYjsKPiA+ID4gPiArCWludCBzaXplLCBmYl9jcHA7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc2l6ZSA9IGludGVsX2ZiY19jYWxjdWxhdGVfY2ZiX3NpemUo Y3J0Yyk7Cj4gPiA+ID4gKwlmYl9jcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxf Zm9ybWF0LCAwKTsKPiA+ID4gCj4gPiA+IENhbiB3ZSBqdXN0IGFsbCBpdCAnY3BwJyBwbGVhc2Uu IFdlIGFscmVhZHkgaGF2ZSB0b28gbWFueSBuYW1lcyBmb3IKPiA+ID4gdGhlCj4gCj4gSSB3YXMg anVzdCBtb3ZpbmcgdGhpbmdzIGFyb3VuZC4uLiAKPiAKPiA+ID4gc2FtZSB0aGluZy4gU29tZW9u ZSBjb3VsZCBhbHNvIGRvIGEgc21hbGwgc2VhcmNoJnJlcGxhY2UgdG8gdW5pZnkKPiA+ID4gdGhl Cj4gPiA+IHdoYXRldmVyIHdlIGhhdmUgY3VycmVudGx5Lgo+IAo+IAo+IFNvbWVvbmUgY291bGQg cGF0Y2ggdGhlIGRybV9mb3JtYXRfcGxhbmVfY3BwKCkgZnVuY3Rpb24gc28gdGhhdCBpdCBhdAo+ IGxlYXN0IGV4cGxhaW5zIHdoYXQgQ1BQIGlzIHN1cHBvc2VkIHRvIG1lYW4gaW4gdGhpcyBjb250 ZXh0IChDb2xvcnMgUGVyCj4gUGl4ZWw/IENvdW50b2ZieXRlcyBQZXIgUGl4ZWw/KS4gT3IgcmVu YW1lIHRoZSBmdW5jdGlvbiB0bwo+IGRybV9mb3JtYXRfcGFuZV9icHAoKSB0byBtYWtlIHRoZSBu YW1lIG1hdGNoIHRoZSBkZXNjcmlwdGlvbi4KCiJjaGFycyBwZXIgcGl4ZWwiIEkgc3VwcG9zZS4g T3IgbWF5YmUgImJwcCIgd2FzIGFscmVhZHkgdGFrZW4KYW5kICdjJyB3YXMganVzdCB0aGUgbmV4 dCBsZXR0ZXIgZnJvbSAnYicuIE5vIG9uZSBrbm93cyBmb3Igc3VyZQpwZXJoYXBzIDspCgpCdXQg aW4gYW55IGNhc2UsIHN0aWxsIGEgZmFpcmx5IHN0YW5kYXJkIHdheSB0byBjYWxsIGl0LgoKPiAK PiA+ID4gCj4gPiA+ID4gKwo+ID4gPiA+ICAJaWYgKHNpemUgPD0gZGV2X3ByaXYtPmZiYy51bmNv bXByZXNzZWRfc2l6ZSkKPiA+ID4gPiAgCQlyZXR1cm4gMDsKPiA+ID4gPiAgCj4gPiA+ID4gQEAg LTg5Nyw4ICs5NDgsNyBAQCBzdGF0aWMgdm9pZCBfX2ludGVsX2ZiY191cGRhdGUoc3RydWN0Cj4g PiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ID4gIAkJZ290byBvdXRfZGlz YWJsZTsKPiA+ID4gPiAgCX0KPiA+ID4gPiAgCj4gPiA+ID4gLQlpZiAoaW50ZWxfZmJjX3NldHVw X2NmYihkZXZfcHJpdiwgb2JqLT5iYXNlLnNpemUsCj4gPiA+ID4gLQkJCQlkcm1fZm9ybWF0X3Bs YW5lX2NwcChmYgo+ID4gPiA+IC0+cGl4ZWxfZm9ybWF0LCAwKSkpIHsKPiA+ID4gPiArCWlmIChp bnRlbF9mYmNfc2V0dXBfY2ZiKGludGVsX2NydGMpKSB7Cj4gPiA+ID4gIAkJc2V0X25vX2ZiY19y ZWFzb24oZGV2X3ByaXYsCj4gPiA+ID4gRkJDX1NUT0xFTl9UT09fU01BTEwpOwo+ID4gPiA+ICAJ CWdvdG8gb3V0X2Rpc2FibGU7Cj4gPiA+ID4gIAl9Cj4gPiA+ID4gLS0gCj4gPiA+ID4gMi41LjMK PiA+ID4gCj4gPiA+IC0tIAo+ID4gPiBWaWxsZSBTeXJqw6Rsw6QKPiA+ID4gSW50ZWwgT1RDCj4g PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+ID4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cj4gPiAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==