From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 05/15] drm/i915/skl: Simplify wm structures slightly (v2) Date: Wed, 30 Sep 2015 17:13:48 +0200 Message-ID: <20150930151348.GL3383@phenom.ffwll.local> References: <1443135200-9870-1-git-send-email-matthew.d.roper@intel.com> <1443135200-9870-6-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f179.google.com (mail-wi0-f179.google.com [209.85.212.179]) by gabe.freedesktop.org (Postfix) with ESMTPS id EFFA26EC22 for ; Wed, 30 Sep 2015 08:10:54 -0700 (PDT) Received: by wicfx3 with SMTP id fx3so202498214wic.1 for ; Wed, 30 Sep 2015 08:10:53 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1443135200-9870-6-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBTZXAgMjQsIDIwMTUgYXQgMDM6NTM6MTBQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBBIGJ1bmNoIG9mIFNLTCB3YXRlcm1hcmstcmVsYXRlZCBzdHJ1Y3R1cmVzIGhhdmUgdGhl IGN1cnNvciBwbGFuZSBhcyBhCj4gc2VwYXJhdGUgZW50cnkgZnJvbSB0aGUgcmVzdCBvZiB0aGUg cGxhbmVzLiAgU2luY2UgYSBwcmV2aW91cyBwYXRjaAo+IHVwZGF0ZWQgSTkxNV9NQVhfUExBTkVT IHN1Y2ggdGhhdCB0aG9zZSBwbGFuZSBhcnJheXMgbm93IGhhdmUgYSBzbG90IGZvcgo+IHRoZSBj dXJzb3IsIHVwZGF0ZSB0aGUgY29kZSB0byB1c2UgdGhlIG5ldyBzbG90IGluIHRoZSBleGlzdGlu ZyBwbGFuZQo+IGFycmF5cyBhbmQga2lsbCBvZmYgdGhlIGN1cnNvci1zcGVjaWZpYyBzdHJ1Y3R1 cmVzLgo+IAo+IFRoZXJlIHNob3VsZG4ndCBiZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZTsg dGhpcyBpcyBqdXN0IHNodWZmbGluZwo+IGFyb3VuZCBob3cgdGhlIGRhdGEgaXMgc3RvcmVkIGlu IHNvbWUgb2YgdGhlIGRhdGEgc3RydWN0dXJlcy4gIFRoZSB3aG9sZQo+IHBhdGNoIGlzIGdlbmVy YXRlZCB3aXRoIENvY2NpbmVsbGUgdmlhIHRoZSBmb2xsb3dpbmcgc2VtYW50aWMgcGF0Y2g6Cj4g Cj4gICAgICAgICBAQCBzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFyYW1ldGVycyBXTVA7IEBACj4gICAg ICAgICAtIFdNUC5jdXJzb3IKPiAgICAgICAgICsgV01QLnBsYW5lW1BMQU5FX0NVUlNPUl0KPiAK PiAgICAgICAgIEBAIHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzICpXTVA7IEBACj4gICAg ICAgICAtIFdNUC0+Y3Vyc29yCj4gICAgICAgICArIFdNUC0+cGxhbmVbUExBTkVfQ1VSU09SXQo+ IAo+ICAgICAgICAgQEAgQEAKPiAgICAgICAgIHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJz IHsKPiAgICAgICAgIC4uLgo+ICAgICAgICAgLSBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1l dGVycyBjdXJzb3I7Cj4gICAgICAgICAuLi4KPiAgICAgICAgIH07Cj4gCj4gICAgICAgICBAQAo+ ICAgICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiBEREI7Cj4gICAgICAgICBleHByZXNz aW9uIEU7Cj4gICAgICAgICBAQAo+ICAgICAgICAgLSBEREIuY3Vyc29yW0VdCj4gICAgICAgICAr IEREQi5wbGFuZVtFXVtQTEFORV9DVVJTT1JdCj4gCj4gICAgICAgICBAQAo+ICAgICAgICAgc3Ry dWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqRERCOwo+ICAgICAgICAgZXhwcmVzc2lvbiBFOwo+ICAg ICAgICAgQEAKPiAgICAgICAgIC0gRERCLT5jdXJzb3JbRV0KPiAgICAgICAgICsgRERCLT5wbGFu ZVtFXVtQTEFORV9DVVJTT1JdCj4gCj4gICAgICAgICBAQCBAQAo+ICAgICAgICAgc3RydWN0IHNr bF9kZGJfYWxsb2NhdGlvbiB7Cj4gICAgICAgICAuLi4KPiAgICAgICAgIC0gc3RydWN0IHNrbF9k ZGJfZW50cnkgY3Vyc29yW0k5MTVfTUFYX1BJUEVTXTsKPiAgICAgICAgIC4uLgo+ICAgICAgICAg fTsKPiAKPiAgICAgICAgIEBACj4gICAgICAgICBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyBXTVY7Cj4g ICAgICAgICBleHByZXNzaW9uIEUxLCBFMjsKPiAgICAgICAgIEBACj4gICAgICAgICAoCj4gICAg ICAgICAtIFdNVi5jdXJzb3JbRTFdW0UyXQo+ICAgICAgICAgKyBXTVYucGxhbmVbRTFdW1BMQU5F X0NVUlNPUl1bRTJdCj4gICAgICAgICB8Cj4gICAgICAgICAtIFdNVi5jdXJzb3JfdHJhbnNbRTFd Cj4gICAgICAgICArIFdNVi5wbGFuZV90cmFuc1tFMV1bUExBTkVfQ1VSU09SXQo+ICAgICAgICAg KQo+IAo+ICAgICAgICAgQEAKPiAgICAgICAgIHN0cnVjdCBza2xfd21fdmFsdWVzICpXTVY7Cj4g ICAgICAgICBleHByZXNzaW9uIEUxLCBFMjsKPiAgICAgICAgIEBACj4gICAgICAgICAoCj4gICAg ICAgICAtIFdNVi0+Y3Vyc29yW0UxXVtFMl0KPiAgICAgICAgICsgV01WLT5wbGFuZVtFMV1bUExB TkVfQ1VSU09SXVtFMl0KPiAgICAgICAgIHwKPiAgICAgICAgIC0gV01WLT5jdXJzb3JfdHJhbnNb RTFdCj4gICAgICAgICArIFdNVi0+cGxhbmVfdHJhbnNbRTFdW1BMQU5FX0NVUlNPUl0KPiAgICAg ICAgICkKPiAKPiAgICAgICAgIEBAIEBACj4gICAgICAgICBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyB7 Cj4gICAgICAgICAuLi4KPiAgICAgICAgIC0gdWludDMyX3QgY3Vyc29yW0k5MTVfTUFYX1BJUEVT XVs4XTsKPiAgICAgICAgIC4uLgo+ICAgICAgICAgLSB1aW50MzJfdCBjdXJzb3JfdHJhbnNbSTkx NV9NQVhfUElQRVNdOwo+ICAgICAgICAgLi4uCj4gICAgICAgICB9Owo+IAo+ICAgICAgICAgQEAg c3RydWN0IHNrbF93bV9sZXZlbCBXTUw7IEBACj4gICAgICAgICAoCj4gICAgICAgICAtIFdNTC5j dXJzb3JfZW4KPiAgICAgICAgICsgV01MLnBsYW5lX2VuW1BMQU5FX0NVUlNPUl0KPiAgICAgICAg IHwKPiAgICAgICAgIC0gV01MLmN1cnNvcl9yZXNfYgo+ICAgICAgICAgKyBXTUwucGxhbmVfcmVz X2JbUExBTkVfQ1VSU09SXQo+ICAgICAgICAgfAo+ICAgICAgICAgLSBXTUwuY3Vyc29yX3Jlc19s Cj4gICAgICAgICArIFdNTC5wbGFuZV9yZXNfbFtQTEFORV9DVVJTT1JdCj4gICAgICAgICApCj4g Cj4gICAgICAgICBAQCBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpXTUw7IEBACj4gICAgICAgICAoCj4g ICAgICAgICAtIFdNTC0+Y3Vyc29yX2VuCj4gICAgICAgICArIFdNTC0+cGxhbmVfZW5bUExBTkVf Q1VSU09SXQo+ICAgICAgICAgfAo+ICAgICAgICAgLSBXTUwtPmN1cnNvcl9yZXNfYgo+ICAgICAg ICAgKyBXTUwtPnBsYW5lX3Jlc19iW1BMQU5FX0NVUlNPUl0KPiAgICAgICAgIHwKPiAgICAgICAg IC0gV01MLT5jdXJzb3JfcmVzX2wKPiAgICAgICAgICsgV01MLT5wbGFuZV9yZXNfbFtQTEFORV9D VVJTT1JdCj4gICAgICAgICApCj4gCj4gICAgICAgICBAQCBAQAo+ICAgICAgICAgc3RydWN0IHNr bF93bV9sZXZlbCB7Cj4gICAgICAgICAuLi4KPiAgICAgICAgIC0gYm9vbCBjdXJzb3JfZW47Cj4g ICAgICAgICAuLi4KPiAgICAgICAgIC0gdWludDE2X3QgY3Vyc29yX3Jlc19iOwo+ICAgICAgICAg LSB1aW50OF90IGN1cnNvcl9yZXNfbDsKPiAgICAgICAgIC4uLgo+ICAgICAgICAgfTsKPiAKPiB2 MjogVXNlIGEgUExBTkVfQ1VSU09SIGVudW0gZW50cnkgcmF0aGVyIHRoYW4gbWFraW5nIHRoZSBj b2RlIHJlZmVyZW5jZQo+ICAgICBJOTE1X01BWF9QTEFORVMgb3IgSTkxNV9NQVhfUExBTkVTKzEs IHdoaWNoIHdhcyBjb25mdXNpbmcuICAoQW5kZXIpCj4gCj4gU2lnbmVkLW9mZi1ieTogTWF0dCBS b3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogTWFhcnRlbiBM YW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KCk1lcmdlZCB1cCB0 byB0aGlzIG9uZSBoZXJlLgotRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgfCAgOCArLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8 ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDkzICsrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDUyIGlu c2VydGlvbnMoKyksIDU1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gaW5kZXggNTYxNWQzZC4uMDNjMTk2ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gQEAgLTMxNDQsNyArMzE0NCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kZGJf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQkJCSAgIHNrbF9kZGJf ZW50cnlfc2l6ZShlbnRyeSkpOwo+ICAJCX0KPiAgCj4gLQkJZW50cnkgPSAmZGRiLT5jdXJzb3Jb cGlwZV07Cj4gKwkJZW50cnkgPSAmZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdOwo+ICAJ CXNlcV9wcmludGYobSwgIiAgJS0xM3MlOHUlOHUlOHVcbiIsICJDdXJzb3IiLCBlbnRyeS0+c3Rh cnQsCj4gIAkJCSAgIGVudHJ5LT5lbmQsIHNrbF9kZGJfZW50cnlfc2l6ZShlbnRyeSkpOwo+ICAJ fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGVhYzk0MTQuLmJkNTQyY2IgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTU4OCw4ICsxNTg4LDcgQEAgc3RhdGljIGlu bGluZSBib29sIHNrbF9kZGJfZW50cnlfZXF1YWwoY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkg KmUxLAo+ICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uIHsKPiAgCXN0cnVjdCBza2xfZGRiX2Vu dHJ5IHBpcGVbSTkxNV9NQVhfUElQRVNdOwo+ICAJc3RydWN0IHNrbF9kZGJfZW50cnkgcGxhbmVb STkxNV9NQVhfUElQRVNdW0k5MTVfTUFYX1BMQU5FU107IC8qIHBhY2tlZC91diAqLwo+IC0Jc3Ry dWN0IHNrbF9kZGJfZW50cnkgeV9wbGFuZVtJOTE1X01BWF9QSVBFU11bSTkxNV9NQVhfUExBTkVT XTsgLyogeS1wbGFuZSAqLwo+IC0Jc3RydWN0IHNrbF9kZGJfZW50cnkgY3Vyc29yW0k5MTVfTUFY X1BJUEVTXTsKPiArCXN0cnVjdCBza2xfZGRiX2VudHJ5IHlfcGxhbmVbSTkxNV9NQVhfUElQRVNd W0k5MTVfTUFYX1BMQU5FU107Cj4gIH07Cj4gIAo+ICBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyB7Cj4g QEAgLTE1OTcsMTggKzE1OTYsMTMgQEAgc3RydWN0IHNrbF93bV92YWx1ZXMgewo+ICAJc3RydWN0 IHNrbF9kZGJfYWxsb2NhdGlvbiBkZGI7Cj4gIAl1aW50MzJfdCB3bV9saW5ldGltZVtJOTE1X01B WF9QSVBFU107Cj4gIAl1aW50MzJfdCBwbGFuZVtJOTE1X01BWF9QSVBFU11bSTkxNV9NQVhfUExB TkVTXVs4XTsKPiAtCXVpbnQzMl90IGN1cnNvcltJOTE1X01BWF9QSVBFU11bOF07Cj4gIAl1aW50 MzJfdCBwbGFuZV90cmFuc1tJOTE1X01BWF9QSVBFU11bSTkxNV9NQVhfUExBTkVTXTsKPiAtCXVp bnQzMl90IGN1cnNvcl90cmFuc1tJOTE1X01BWF9QSVBFU107Cj4gIH07Cj4gIAo+ICBzdHJ1Y3Qg c2tsX3dtX2xldmVsIHsKPiAgCWJvb2wgcGxhbmVfZW5bSTkxNV9NQVhfUExBTkVTXTsKPiAtCWJv b2wgY3Vyc29yX2VuOwo+ICAJdWludDE2X3QgcGxhbmVfcmVzX2JbSTkxNV9NQVhfUExBTkVTXTsK PiAgCXVpbnQ4X3QgcGxhbmVfcmVzX2xbSTkxNV9NQVhfUExBTkVTXTsKPiAtCXVpbnQxNl90IGN1 cnNvcl9yZXNfYjsKPiAtCXVpbnQ4X3QgY3Vyc29yX3Jlc19sOwo+ICB9Owo+ICAKPiAgLyoKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggZGVhMWYyMy4uYTNlNjJiYyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTI1NjQsOCArMTI1 NjQsOCBAQCBzdGF0aWMgdm9pZCBjaGVja193bV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJCX0KPiAgCj4gIAkJLyogY3Vyc29yICovCj4gLQkJaHdfZW50cnkgPSAmaHdfZGRiLmN1 cnNvcltwaXBlXTsKPiAtCQlzd19lbnRyeSA9ICZzd19kZGItPmN1cnNvcltwaXBlXTsKPiArCQlo d19lbnRyeSA9ICZod19kZGIucGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXTsKPiArCQlzd19lbnRy eSA9ICZzd19kZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl07Cj4gIAo+ICAJCWlmIChza2xf ZGRiX2VudHJ5X2VxdWFsKGh3X2VudHJ5LCBzd19lbnRyeSkpCj4gIAkJCWNvbnRpbnVlOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDllNmU5YzIuLjg4MjkwNDcgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMTc5Miw3ICsxNzkyLDYgQEAgc3RydWN0IHNrbF9waXBl X3dtX3BhcmFtZXRlcnMgewo+ICAJdWludDMyX3QgcGlwZV9odG90YWw7Cj4gIAl1aW50MzJfdCBw aXhlbF9yYXRlOyAvKiBpbiBLSHogKi8KPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV93bV9wYXJhbWV0 ZXJzIHBsYW5lW0k5MTVfTUFYX1BMQU5FU107Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFy YW1ldGVycyBjdXJzb3I7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaWxrX3dtX21heGltdW1zIHsKPiBA QCAtMjkwNiw3ICsyOTA1LDggQEAgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJfQo+ICAKPiAgCQl2YWwgPSBJOTE1X1JFQUQo Q1VSX0JVRl9DRkcocGlwZSkpOwo+IC0JCXNrbF9kZGJfZW50cnlfaW5pdF9mcm9tX2h3KCZkZGIt PmN1cnNvcltwaXBlXSwgdmFsKTsKPiArCQlza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odygmZGRi LT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLAo+ICsJCQkJCSAgIHZhbCk7Cj4gIAl9Cj4gIH0K PiAgCj4gQEAgLTI5NzUsMTMgKzI5NzUsMTQgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiAgCWFsbG9jX3NpemUgPSBza2xfZGRiX2VudHJ5X3NpemUoYWxs b2MpOwo+ICAJaWYgKGFsbG9jX3NpemUgPT0gMCkgewo+ICAJCW1lbXNldChkZGItPnBsYW5lW3Bp cGVdLCAwLCBzaXplb2YoZGRiLT5wbGFuZVtwaXBlXSkpOwo+IC0JCW1lbXNldCgmZGRiLT5jdXJz b3JbcGlwZV0sIDAsIHNpemVvZihkZGItPmN1cnNvcltwaXBlXSkpOwo+ICsJCW1lbXNldCgmZGRi LT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLCAwLAo+ICsJCSAgICAgICBzaXplb2YoZGRiLT5w bGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdKSk7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiAgCWN1 cnNvcl9ibG9ja3MgPSBza2xfY3Vyc29yX2FsbG9jYXRpb24oY29uZmlnKTsKPiAtCWRkYi0+Y3Vy c29yW3BpcGVdLnN0YXJ0ID0gYWxsb2MtPmVuZCAtIGN1cnNvcl9ibG9ja3M7Cj4gLQlkZGItPmN1 cnNvcltwaXBlXS5lbmQgPSBhbGxvYy0+ZW5kOwo+ICsJZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9D VVJTT1JdLnN0YXJ0ID0gYWxsb2MtPmVuZCAtIGN1cnNvcl9ibG9ja3M7Cj4gKwlkZGItPnBsYW5l W3BpcGVdW1BMQU5FX0NVUlNPUl0uZW5kID0gYWxsb2MtPmVuZDsKPiAgCj4gIAlhbGxvY19zaXpl IC09IGN1cnNvcl9ibG9ja3M7Cj4gIAlhbGxvYy0+ZW5kIC09IGN1cnNvcl9ibG9ja3M7Cj4gQEAg LTMxMjAsOCArMzEyMSw4IEBAIHN0YXRpYyBib29sIHNrbF9kZGJfYWxsb2NhdGlvbl9jaGFuZ2Vk KGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5ld19kZGIsCj4gIAkJICAgc2l6ZW9m KG5ld19kZGItPnBsYW5lW3BpcGVdKSkpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+IC0JaWYgKG1l bWNtcCgmbmV3X2RkYi0+Y3Vyc29yW3BpcGVdLCAmY3VyX2RkYi0+Y3Vyc29yW3BpcGVdLAo+IC0J CSAgICBzaXplb2YobmV3X2RkYi0+Y3Vyc29yW3BpcGVdKSkpCj4gKwlpZiAobWVtY21wKCZuZXdf ZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLCAmY3VyX2RkYi0+cGxhbmVbcGlwZV1bUExB TkVfQ1VSU09SXSwKPiArCQkgICAgc2l6ZW9mKG5ld19kZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NV UlNPUl0pKSkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCj4gIAlyZXR1cm4gZmFsc2U7Cj4gQEAgLTMx ODEsMTcgKzMxODIsMTcgQEAgc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVfd21fcGlwZV9wYXJhbWV0 ZXJzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlwLT5wbGFuZVswXS5yb3RhdGlvbiA9IGNy dGMtPnByaW1hcnktPnN0YXRlLT5yb3RhdGlvbjsKPiAgCj4gIAkJZmIgPSBjcnRjLT5jdXJzb3It PnN0YXRlLT5mYjsKPiAtCQlwLT5jdXJzb3IueV9ieXRlc19wZXJfcGl4ZWwgPSAwOwo+ICsJCXAt PnBsYW5lW1BMQU5FX0NVUlNPUl0ueV9ieXRlc19wZXJfcGl4ZWwgPSAwOwo+ICAJCWlmIChmYikg ewo+IC0JCQlwLT5jdXJzb3IuZW5hYmxlZCA9IHRydWU7Cj4gLQkJCXAtPmN1cnNvci5ieXRlc19w ZXJfcGl4ZWwgPSBmYi0+Yml0c19wZXJfcGl4ZWwgLyA4Owo+IC0JCQlwLT5jdXJzb3IuaG9yaXpf cGl4ZWxzID0gY3J0Yy0+Y3Vyc29yLT5zdGF0ZS0+Y3J0Y193Owo+IC0JCQlwLT5jdXJzb3IudmVy dF9waXhlbHMgPSBjcnRjLT5jdXJzb3ItPnN0YXRlLT5jcnRjX2g7Cj4gKwkJCXAtPnBsYW5lW1BM QU5FX0NVUlNPUl0uZW5hYmxlZCA9IHRydWU7Cj4gKwkJCXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0u Ynl0ZXNfcGVyX3BpeGVsID0gZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKPiArCQkJcC0+cGxhbmVb UExBTkVfQ1VSU09SXS5ob3Jpel9waXhlbHMgPSBjcnRjLT5jdXJzb3ItPnN0YXRlLT5jcnRjX3c7 Cj4gKwkJCXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0udmVydF9waXhlbHMgPSBjcnRjLT5jdXJzb3It PnN0YXRlLT5jcnRjX2g7Cj4gIAkJfSBlbHNlIHsKPiAtCQkJcC0+Y3Vyc29yLmVuYWJsZWQgPSBm YWxzZTsKPiAtCQkJcC0+Y3Vyc29yLmJ5dGVzX3Blcl9waXhlbCA9IDA7Cj4gLQkJCXAtPmN1cnNv ci5ob3Jpel9waXhlbHMgPSA2NDsKPiAtCQkJcC0+Y3Vyc29yLnZlcnRfcGl4ZWxzID0gNjQ7Cj4g KwkJCXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0uZW5hYmxlZCA9IGZhbHNlOwo+ICsJCQlwLT5wbGFu ZVtQTEFORV9DVVJTT1JdLmJ5dGVzX3Blcl9waXhlbCA9IDA7Cj4gKwkJCXAtPnBsYW5lW1BMQU5F X0NVUlNPUl0uaG9yaXpfcGl4ZWxzID0gNjQ7Cj4gKwkJCXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0u dmVydF9waXhlbHMgPSA2NDsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC0zMzA1LDExICszMzA2LDEy IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3dtX2xldmVsKGNvbnN0IHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCQkJJnJlc3VsdC0+cGxhbmVfcmVzX2xbaV0pOwo+ ICAJfQo+ICAKPiAtCWRkYl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0+Y3Vyc29y W3BpcGVdKTsKPiAtCXJlc3VsdC0+Y3Vyc29yX2VuID0gc2tsX2NvbXB1dGVfcGxhbmVfd20oZGV2 X3ByaXYsIHAsICZwLT5jdXJzb3IsCj4gKwlkZGJfYmxvY2tzID0gc2tsX2RkYl9lbnRyeV9zaXpl KCZkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0pOwo+ICsJcmVzdWx0LT5wbGFuZV9lbltQ TEFORV9DVVJTT1JdID0gc2tsX2NvbXB1dGVfcGxhbmVfd20oZGV2X3ByaXYsIHAsCj4gKwkJCQkJ CSAmcC0+cGxhbmVbUExBTkVfQ1VSU09SXSwKPiAgCQkJCQkJIGRkYl9ibG9ja3MsIGxldmVsLAo+ IC0JCQkJCQkgJnJlc3VsdC0+Y3Vyc29yX3Jlc19iLAo+IC0JCQkJCQkgJnJlc3VsdC0+Y3Vyc29y X3Jlc19sKTsKPiArCQkJCQkJICZyZXN1bHQtPnBsYW5lX3Jlc19iW1BMQU5FX0NVUlNPUl0sCj4g KwkJCQkJCSAmcmVzdWx0LT5wbGFuZV9yZXNfbFtQTEFORV9DVVJTT1JdKTsKPiAgfQo+ICAKPiAg c3RhdGljIHVpbnQzMl90Cj4gQEAgLTMzMzcsNyArMzMzOSw3IEBAIHN0YXRpYyB2b2lkIHNrbF9j b21wdXRlX3RyYW5zaXRpb25fd20oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJLyogVW50aWwg d2Uga25vdyBtb3JlLCBqdXN0IGRpc2FibGUgdHJhbnNpdGlvbiBXTXMgKi8KPiAgCWZvciAoaSA9 IDA7IGkgPCBpbnRlbF9udW1fcGxhbmVzKGludGVsX2NydGMpOyBpKyspCj4gIAkJdHJhbnNfd20t PnBsYW5lX2VuW2ldID0gZmFsc2U7Cj4gLQl0cmFuc193bS0+Y3Vyc29yX2VuID0gZmFsc2U7Cj4g Kwl0cmFuc193bS0+cGxhbmVfZW5bUExBTkVfQ1VSU09SXSA9IGZhbHNlOwo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZCBza2xfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiBA QCAtMzM4NiwxMyArMzM4OCwxMyBAQCBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV93bV9yZXN1bHRz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJCXRlbXAgPSAwOwo+ICAKPiAtCQl0ZW1w IHw9IHBfd20tPndtW2xldmVsXS5jdXJzb3JfcmVzX2wgPDwgUExBTkVfV01fTElORVNfU0hJRlQ7 Cj4gLQkJdGVtcCB8PSBwX3dtLT53bVtsZXZlbF0uY3Vyc29yX3Jlc19iOwo+ICsJCXRlbXAgfD0g cF93bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19sW1BMQU5FX0NVUlNPUl0gPDwgUExBTkVfV01fTElO RVNfU0hJRlQ7Cj4gKwkJdGVtcCB8PSBwX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2JbUExBTkVf Q1VSU09SXTsKPiAgCj4gLQkJaWYgKHBfd20tPndtW2xldmVsXS5jdXJzb3JfZW4pCj4gKwkJaWYg KHBfd20tPndtW2xldmVsXS5wbGFuZV9lbltQTEFORV9DVVJTT1JdKQo+ICAJCQl0ZW1wIHw9IFBM QU5FX1dNX0VOOwo+ICAKPiAtCQlyLT5jdXJzb3JbcGlwZV1bbGV2ZWxdID0gdGVtcDsKPiArCQly LT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdW2xldmVsXSA9IHRlbXA7Cj4gIAo+ICAJfQo+ICAK PiBAQCAtMzQwOCwxMiArMzQxMCwxMiBAQCBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV93bV9yZXN1 bHRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAl9Cj4gIAo+ICAJdGVtcCA9IDA7Cj4gLQl0 ZW1wIHw9IHBfd20tPnRyYW5zX3dtLmN1cnNvcl9yZXNfbCA8PCBQTEFORV9XTV9MSU5FU19TSElG VDsKPiAtCXRlbXAgfD0gcF93bS0+dHJhbnNfd20uY3Vyc29yX3Jlc19iOwo+IC0JaWYgKHBfd20t PnRyYW5zX3dtLmN1cnNvcl9lbikKPiArCXRlbXAgfD0gcF93bS0+dHJhbnNfd20ucGxhbmVfcmVz X2xbUExBTkVfQ1VSU09SXSA8PCBQTEFORV9XTV9MSU5FU19TSElGVDsKPiArCXRlbXAgfD0gcF93 bS0+dHJhbnNfd20ucGxhbmVfcmVzX2JbUExBTkVfQ1VSU09SXTsKPiArCWlmIChwX3dtLT50cmFu c193bS5wbGFuZV9lbltQTEFORV9DVVJTT1JdKQo+ICAJCXRlbXAgfD0gUExBTkVfV01fRU47Cj4g IAo+IC0Jci0+Y3Vyc29yX3RyYW5zW3BpcGVdID0gdGVtcDsKPiArCXItPnBsYW5lX3RyYW5zW3Bp cGVdW1BMQU5FX0NVUlNPUl0gPSB0ZW1wOwo+ICAKPiAgCXItPndtX2xpbmV0aW1lW3BpcGVdID0g cF93bS0+bGluZXRpbWU7Cj4gIH0KPiBAQCAtMzQ0NywxMiArMzQ0OSwxMyBAQCBzdGF0aWMgdm9p ZCBza2xfd3JpdGVfd21fdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgCQkJCUk5MTVfV1JJVEUoUExBTkVfV00ocGlwZSwgaSwgbGV2ZWwpLAo+ICAJCQkJCSAgIG5l dy0+cGxhbmVbcGlwZV1baV1bbGV2ZWxdKTsKPiAgCQkJSTkxNV9XUklURShDVVJfV00ocGlwZSwg bGV2ZWwpLAo+IC0JCQkJICAgbmV3LT5jdXJzb3JbcGlwZV1bbGV2ZWxdKTsKPiArCQkJCSAgIG5l dy0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXVtsZXZlbF0pOwo+ICAJCX0KPiAgCQlmb3IgKGkg PSAwOyBpIDwgaW50ZWxfbnVtX3BsYW5lcyhjcnRjKTsgaSsrKQo+ICAJCQlJOTE1X1dSSVRFKFBM QU5FX1dNX1RSQU5TKHBpcGUsIGkpLAo+ICAJCQkJICAgbmV3LT5wbGFuZV90cmFuc1twaXBlXVtp XSk7Cj4gLQkJSTkxNV9XUklURShDVVJfV01fVFJBTlMocGlwZSksIG5ldy0+Y3Vyc29yX3RyYW5z W3BpcGVdKTsKPiArCQlJOTE1X1dSSVRFKENVUl9XTV9UUkFOUyhwaXBlKSwKPiArCQkJICAgbmV3 LT5wbGFuZV90cmFuc1twaXBlXVtQTEFORV9DVVJTT1JdKTsKPiAgCj4gIAkJZm9yIChpID0gMDsg aSA8IGludGVsX251bV9wbGFuZXMoY3J0Yyk7IGkrKykgewo+ICAJCQlza2xfZGRiX2VudHJ5X3dy aXRlKGRldl9wcml2LAo+IEBAIC0zNDY0LDcgKzM0NjcsNyBAQCBzdGF0aWMgdm9pZCBza2xfd3Jp dGVfd21fdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQl9Cj4g IAo+ICAJCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIENVUl9CVUZfQ0ZHKHBpcGUpLAo+ IC0JCQkJICAgICZuZXctPmRkYi5jdXJzb3JbcGlwZV0pOwo+ICsJCQkJICAgICZuZXctPmRkYi5w bGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtMzY3NywxMCAr MzY4MCw5IEBAIHN0YXRpYyB2b2lkIHNrbF9jbGVhcl93bShzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAq d2F0ZXJtYXJrcywgZW51bSBwaXBlIHBpcGUpCj4gIAl3YXRlcm1hcmtzLT53bV9saW5ldGltZVtw aXBlXSA9IDA7Cj4gIAltZW1zZXQod2F0ZXJtYXJrcy0+cGxhbmVbcGlwZV0sIDAsCj4gIAkgICAg ICAgc2l6ZW9mKHVpbnQzMl90KSAqIDggKiBJOTE1X01BWF9QTEFORVMpOwo+IC0JbWVtc2V0KHdh dGVybWFya3MtPmN1cnNvcltwaXBlXSwgMCwgc2l6ZW9mKHVpbnQzMl90KSAqIDgpOwo+ICAJbWVt c2V0KHdhdGVybWFya3MtPnBsYW5lX3RyYW5zW3BpcGVdLAo+ICAJICAgICAgIDAsIHNpemVvZih1 aW50MzJfdCkgKiBJOTE1X01BWF9QTEFORVMpOwo+IC0Jd2F0ZXJtYXJrcy0+Y3Vyc29yX3RyYW5z W3BpcGVdID0gMDsKPiArCXdhdGVybWFya3MtPnBsYW5lX3RyYW5zW3BpcGVdW1BMQU5FX0NVUlNP Ul0gPSAwOwo+ICAKPiAgCS8qIENsZWFyIGRkYiBlbnRyaWVzIGZvciBwaXBlICovCj4gIAltZW1z ZXQoJndhdGVybWFya3MtPmRkYi5waXBlW3BpcGVdLCAwLCBzaXplb2Yoc3RydWN0IHNrbF9kZGJf ZW50cnkpKTsKPiBAQCAtMzY4OCw3ICszNjkwLDggQEAgc3RhdGljIHZvaWQgc2tsX2NsZWFyX3dt KHN0cnVjdCBza2xfd21fdmFsdWVzICp3YXRlcm1hcmtzLCBlbnVtIHBpcGUgcGlwZSkKPiAgCSAg ICAgICBzaXplb2Yoc3RydWN0IHNrbF9kZGJfZW50cnkpICogSTkxNV9NQVhfUExBTkVTKTsKPiAg CW1lbXNldCgmd2F0ZXJtYXJrcy0+ZGRiLnlfcGxhbmVbcGlwZV0sIDAsCj4gIAkgICAgICAgc2l6 ZW9mKHN0cnVjdCBza2xfZGRiX2VudHJ5KSAqIEk5MTVfTUFYX1BMQU5FUyk7Cj4gLQltZW1zZXQo JndhdGVybWFya3MtPmRkYi5jdXJzb3JbcGlwZV0sIDAsIHNpemVvZihzdHJ1Y3Qgc2tsX2RkYl9l bnRyeSkpOwo+ICsJbWVtc2V0KCZ3YXRlcm1hcmtzLT5kZGIucGxhbmVbcGlwZV1bUExBTkVfQ1VS U09SXSwgMCwKPiArCSAgICAgICBzaXplb2Yoc3RydWN0IHNrbF9kZGJfZW50cnkpKTsKPiAgCj4g IH0KPiAgCj4gQEAgLTM4NDQsMTAgKzM4NDcsMTAgQEAgc3RhdGljIHZvaWQgc2tsX3BpcGVfd21f YWN0aXZlX3N0YXRlKHVpbnQzMl90IHZhbCwKPiAgCQkJCQkodmFsID4+IFBMQU5FX1dNX0xJTkVT X1NISUZUKSAmCj4gIAkJCQkJCVBMQU5FX1dNX0xJTkVTX01BU0s7Cj4gIAkJfSBlbHNlIHsKPiAt CQkJYWN0aXZlLT53bVtsZXZlbF0uY3Vyc29yX2VuID0gaXNfZW5hYmxlZDsKPiAtCQkJYWN0aXZl LT53bVtsZXZlbF0uY3Vyc29yX3Jlc19iID0KPiArCQkJYWN0aXZlLT53bVtsZXZlbF0ucGxhbmVf ZW5bUExBTkVfQ1VSU09SXSA9IGlzX2VuYWJsZWQ7Cj4gKwkJCWFjdGl2ZS0+d21bbGV2ZWxdLnBs YW5lX3Jlc19iW1BMQU5FX0NVUlNPUl0gPQo+ICAJCQkJCXZhbCAmIFBMQU5FX1dNX0JMT0NLU19N QVNLOwo+IC0JCQlhY3RpdmUtPndtW2xldmVsXS5jdXJzb3JfcmVzX2wgPQo+ICsJCQlhY3RpdmUt PndtW2xldmVsXS5wbGFuZV9yZXNfbFtQTEFORV9DVVJTT1JdID0KPiAgCQkJCQkodmFsID4+IFBM QU5FX1dNX0xJTkVTX1NISUZUKSAmCj4gIAkJCQkJCVBMQU5FX1dNX0xJTkVTX01BU0s7Cj4gIAkJ fQo+IEBAIC0zODYwLDEwICszODYzLDEwIEBAIHN0YXRpYyB2b2lkIHNrbF9waXBlX3dtX2FjdGl2 ZV9zdGF0ZSh1aW50MzJfdCB2YWwsCj4gIAkJCQkJKHZhbCA+PiBQTEFORV9XTV9MSU5FU19TSElG VCkgJgo+ICAJCQkJCQlQTEFORV9XTV9MSU5FU19NQVNLOwo+ICAJCX0gZWxzZSB7Cj4gLQkJCWFj dGl2ZS0+dHJhbnNfd20uY3Vyc29yX2VuID0gaXNfZW5hYmxlZDsKPiAtCQkJYWN0aXZlLT50cmFu c193bS5jdXJzb3JfcmVzX2IgPQo+ICsJCQlhY3RpdmUtPnRyYW5zX3dtLnBsYW5lX2VuW1BMQU5F X0NVUlNPUl0gPSBpc19lbmFibGVkOwo+ICsJCQlhY3RpdmUtPnRyYW5zX3dtLnBsYW5lX3Jlc19i W1BMQU5FX0NVUlNPUl0gPQo+ICAJCQkJCXZhbCAmIFBMQU5FX1dNX0JMT0NLU19NQVNLOwo+IC0J CQlhY3RpdmUtPnRyYW5zX3dtLmN1cnNvcl9yZXNfbCA9Cj4gKwkJCWFjdGl2ZS0+dHJhbnNfd20u cGxhbmVfcmVzX2xbUExBTkVfQ1VSU09SXSA9Cj4gIAkJCQkJKHZhbCA+PiBQTEFORV9XTV9MSU5F U19TSElGVCkgJgo+ICAJCQkJCQlQTEFORV9XTV9MSU5FU19NQVNLOwo+ICAJCX0KPiBAQCAtMzg4 OSwxMiArMzg5MiwxMiBAQCBzdGF0aWMgdm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9udW1fcGxhbmVz KGludGVsX2NydGMpOyBpKyspCj4gIAkJCWh3LT5wbGFuZVtwaXBlXVtpXVtsZXZlbF0gPQo+ICAJ CQkJCUk5MTVfUkVBRChQTEFORV9XTShwaXBlLCBpLCBsZXZlbCkpOwo+IC0JCWh3LT5jdXJzb3Jb cGlwZV1bbGV2ZWxdID0gSTkxNV9SRUFEKENVUl9XTShwaXBlLCBsZXZlbCkpOwo+ICsJCWh3LT5w bGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdW2xldmVsXSA9IEk5MTVfUkVBRChDVVJfV00ocGlwZSwg bGV2ZWwpKTsKPiAgCX0KPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfbnVtX3BsYW5lcyhp bnRlbF9jcnRjKTsgaSsrKQo+ICAJCWh3LT5wbGFuZV90cmFuc1twaXBlXVtpXSA9IEk5MTVfUkVB RChQTEFORV9XTV9UUkFOUyhwaXBlLCBpKSk7Cj4gLQlody0+Y3Vyc29yX3RyYW5zW3BpcGVdID0g STkxNV9SRUFEKENVUl9XTV9UUkFOUyhwaXBlKSk7Cj4gKwlody0+cGxhbmVfdHJhbnNbcGlwZV1b UExBTkVfQ1VSU09SXSA9IEk5MTVfUkVBRChDVVJfV01fVFJBTlMocGlwZSkpOwo+ICAKPiAgCWlm ICghaW50ZWxfY3J0Yy0+YWN0aXZlKQo+ICAJCXJldHVybjsKPiBAQCAtMzkwOSw3ICszOTEyLDcg QEAgc3RhdGljIHZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiAgCQkJc2tsX3BpcGVfd21fYWN0aXZlX3N0YXRlKHRlbXAsIGFjdGl2ZSwgZmFsc2Us Cj4gIAkJCQkJCWZhbHNlLCBpLCBsZXZlbCk7Cj4gIAkJfQo+IC0JCXRlbXAgPSBody0+Y3Vyc29y W3BpcGVdW2xldmVsXTsKPiArCQl0ZW1wID0gaHctPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl1b bGV2ZWxdOwo+ICAJCXNrbF9waXBlX3dtX2FjdGl2ZV9zdGF0ZSh0ZW1wLCBhY3RpdmUsIGZhbHNl LCB0cnVlLCBpLCBsZXZlbCk7Cj4gIAl9Cj4gIAo+IEBAIC0zOTE4LDcgKzM5MjEsNyBAQCBzdGF0 aWMgdm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ ICAJCXNrbF9waXBlX3dtX2FjdGl2ZV9zdGF0ZSh0ZW1wLCBhY3RpdmUsIHRydWUsIGZhbHNlLCBp LCAwKTsKPiAgCX0KPiAgCj4gLQl0ZW1wID0gaHctPmN1cnNvcl90cmFuc1twaXBlXTsKPiArCXRl bXAgPSBody0+cGxhbmVfdHJhbnNbcGlwZV1bUExBTkVfQ1VSU09SXTsKPiAgCXNrbF9waXBlX3dt X2FjdGl2ZV9zdGF0ZSh0ZW1wLCBhY3RpdmUsIHRydWUsIHRydWUsIGksIDApOwo+ICB9Cj4gIAo+ IC0tIAo+IDIuMS40Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBD b3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=