From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [DPU PATCH 08/11] drm/msm: Remove hand-rolled out fences Date: Tue, 13 Mar 2018 11:11:37 -0700 Message-ID: References: <20180228191906.185417-1-seanpaul@chromium.org> <20180228191906.185417-9-seanpaul@chromium.org> <1a1c79ddb6ddabbc72e4624b53460188@codeaurora.org> <20180312203028.GD223881@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180312203028.GD223881@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: linux-arm-msm@vger.kernel.org, abhinavk@codeaurora.org, dri-devel@lists.freedesktop.org, hoegsberg@chromium.org, freedreno@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMjAxOC0wMy0xMiAxMzozMCwgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIEZyaSwgTWFyIDAyLCAy MDE4IGF0IDA0OjQ0OjU1UE0gLTA4MDAsIEpleWt1bWFyIFNhbmthcmFuIHdyb3RlOgo+PiBPbiAy MDE4LTAyLTI4IDExOjE5LCBTZWFuIFBhdWwgd3JvdGU6Cj4+ID4gUmVtb3ZlIHJlbGVhc2Uvb3V0 cHV0L3JldGlyZSBmZW5jZXMgZnJvbSB0aGUgZHB1IGRyaXZlci4gVGhlc2UgYXJlCj4+ID4gYWxy ZWFkeSBhdmFpbGFibGUgdmlhIGRybSBjb3JlJ3MgT1VUX0ZFTkNFIHByb3BlcnR5Lgo+PiA+Cj4+ ID4gQ2hhbmdlLUlkOiBJZDQyMzhkMGI1NDU3ZjJjOGVlMmU4N2JiNzgxNGUxODUwYTU3MzYyMwo+ PiA+IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgoKUmV2 aWV3ZWQtYnk6IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fua2FAY29kZWF1cm9yYS5vcmc+Cgo+PiA+ IC0tLQo+PiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMg fCAgNjYgKy0tLS0tLQo+PiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29u bmVjdG9yLmggfCAgMjMgLS0tCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9jcnRjLmMgICAgICB8IDE3OAo+ICsrKy0tLS0tLS0tLS0tLS0tLQo+PiA+ICBkcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oICAgICAgfCAgMjggLS0tCj4+ID4gIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMgICB8ICAgMyAtCj4+ID4gIGRy aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmggICB8ICAgNCArLQo+PiA+ ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaCAgfCAgIDggLQo+ PiA+ICAuLi4vZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYyAgfCAgNzMg Ky0tLS0tLQo+PiA+ICAuLi4vZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQu YyAgfCAgMTkgLS0KPj4gPiAgLi4uL2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNf d2IuYyAgIHwgIDEyICstCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9r bXMuYyAgICAgICB8ICAzMCAtLS0KPj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2Lmgg ICAgICAgICAgICAgICAgIHwgICAzIC0KPj4gPiAgMTIgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0 aW9ucygrKSwgNDExIGRlbGV0aW9ucygtKQo+PiA+Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYwo+PiA+IGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jCj4+ID4gaW5kZXggNTdiODYyN2VmNDE4 Li5jYzViZmE4NjJjYjcgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2Nvbm5lY3Rvci5jCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2Nvbm5lY3Rvci5jCj4+ID4gQEAgLTUyMSw3ICs1MjEsNiBAQCBzdGF0aWMgdm9p ZCBkcHVfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0Cj4+ID4gZHJtX2Nvbm5lY3Rvcgo+PiA+ICpj b25uZWN0b3IpCj4+ID4gIAkJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKGNfY29ubi0+Ymxf ZGV2aWNlKTsKPj4gPiAgCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwo+PiA+ ICAJbXV0ZXhfZGVzdHJveSgmY19jb25uLT5sb2NrKTsKPj4gPiAtCWRwdV9mZW5jZV9kZWluaXQo JmNfY29ubi0+cmV0aXJlX2ZlbmNlKTsKPj4gPiAgCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25u ZWN0b3IpOwo+PiA+ICAJa2ZyZWUoY19jb25uKTsKPj4gPiAgfQo+PiA+IEBAIC05MDYsMTIgKzkw NSw5IEBAIHN0YXRpYyBpbnQKPiBkcHVfY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkoc3Ry dWN0Cj4+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiA+ICAJY19zdGF0ZSA9IHRvX2Rw dV9jb25uZWN0b3Jfc3RhdGUoc3RhdGUpOwo+PiA+Cj4+ID4gIAlpZHggPSBtc21fcHJvcGVydHlf aW5kZXgoJmNfY29ubi0+cHJvcGVydHlfaW5mbywgcHJvcGVydHkpOwo+PiA+IC0JaWYgKGlkeCA9 PSBDT05ORUNUT1JfUFJPUF9SRVRJUkVfRkVOQ0UpCj4+ID4gLQkJcmMgPSBkcHVfZmVuY2VfY3Jl YXRlKCZjX2Nvbm4tPnJldGlyZV9mZW5jZSwgdmFsLCAwKTsKPj4gPiAtCWVsc2UKPj4gPiAtCQkv KiBnZXQgY2FjaGVkIHByb3BlcnR5IHZhbHVlICovCj4+ID4gLQkJcmMgPSBtc21fcHJvcGVydHlf YXRvbWljX2dldCgmY19jb25uLT5wcm9wZXJ0eV9pbmZvLAo+PiA+IC0JCQkJJmNfc3RhdGUtPnBy b3BlcnR5X3N0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKPj4gPiArCS8qIGdldCBjYWNoZWQgcHJvcGVy dHkgdmFsdWUgKi8KPj4gPiArCXJjID0gbXNtX3Byb3BlcnR5X2F0b21pY19nZXQoJmNfY29ubi0+ cHJvcGVydHlfaW5mbywKPj4gPiArCQkJJmNfc3RhdGUtPnByb3BlcnR5X3N0YXRlLCBwcm9wZXJ0 eSwgdmFsKTsKPj4gPgo+PiA+ICAJLyogYWxsb3cgZm9yIGN1c3RvbSBvdmVycmlkZSAqLwo+PiA+ ICAJaWYgKGNfY29ubi0+b3BzLmdldF9wcm9wZXJ0eSkKPj4gPiBAQCAtOTIzLDM5ICs5MTksNiBA QCBzdGF0aWMgaW50Cj4gZHB1X2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdAo+ PiA+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gPiAgCXJldHVybiByYzsKPj4gPiAgfQo+ PiA+Cj4+ID4gLXZvaWQgZHB1X2Nvbm5lY3Rvcl9wcmVwYXJlX2ZlbmNlKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCj4+ID4gLXsKPj4gPiAtCWlmICghY29ubmVjdG9yKSB7Cj4+ID4g LQkJRFBVX0VSUk9SKCJpbnZhbGlkIGNvbm5lY3RvclxuIik7Cj4+ID4gLQkJcmV0dXJuOwo+PiA+ IC0JfQo+PiA+IC0KPj4gPiAtCWRwdV9mZW5jZV9wcmVwYXJlKCZ0b19kcHVfY29ubmVjdG9yKGNv bm5lY3RvciktPnJldGlyZV9mZW5jZSk7Cj4+ID4gLX0KPj4gPiAtCj4+ID4gLXZvaWQgZHB1X2Nv bm5lY3Rvcl9jb21wbGV0ZV9jb21taXQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwK Pj4gPiAtCQlrdGltZV90IHRzKQo+PiA+IC17Cj4+ID4gLQlpZiAoIWNvbm5lY3Rvcikgewo+PiA+ IC0JCURQVV9FUlJPUigiaW52YWxpZCBjb25uZWN0b3JcbiIpOwo+PiA+IC0JCXJldHVybjsKPj4g PiAtCX0KPj4gPiAtCj4+ID4gLQkvKiBzaWduYWwgY29ubmVjdG9yJ3MgcmV0aXJlIGZlbmNlICov Cj4+ID4gLQlkcHVfZmVuY2Vfc2lnbmFsKCZ0b19kcHVfY29ubmVjdG9yKGNvbm5lY3RvciktPnJl dGlyZV9mZW5jZSwgdHMsCj4+ID4gZmFsc2UpOwo+PiA+IC19Cj4+ID4gLQo+PiA+IC12b2lkIGRw dV9jb25uZWN0b3JfY29tbWl0X3Jlc2V0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is Cj4+ID4ga3RpbWVfdAo+PiA+IHRzKQo+PiA+IC17Cj4+ID4gLQlpZiAoIWNvbm5lY3Rvcikgewo+ PiA+IC0JCURQVV9FUlJPUigiaW52YWxpZCBjb25uZWN0b3JcbiIpOwo+PiA+IC0JCXJldHVybjsK Pj4gPiAtCX0KPj4gPiAtCj4+ID4gLQkvKiBzaWduYWwgY29ubmVjdG9yJ3MgcmV0aXJlIGZlbmNl ICovCj4+ID4gLQlkcHVfZmVuY2Vfc2lnbmFsKCZ0b19kcHVfY29ubmVjdG9yKGNvbm5lY3Rvcikt PnJldGlyZV9mZW5jZSwgdHMsCj4+ID4gdHJ1ZSk7Cj4+ID4gLX0KPj4gPiAtCj4+ID4gIHN0YXRp YyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCj4+ID4gIGRwdV9jb25uZWN0b3JfZGV0ZWN0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCj4+ID4gIHsKPj4gPiBA QCAtMTIxNCwyNiArMTE3NywxOSBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcgo+ICpkcHVfY29ubmVj dG9yX2luaXQoc3RydWN0Cj4+ID4gZHJtX2RldmljZSAqZGV2LAo+PiA+ICAJCQkiY29ubiV1IiwK Pj4gPiAgCQkJY19jb25uLT5iYXNlLmJhc2UuaWQpOwo+PiA+Cj4+ID4gLQlyYyA9IGRwdV9mZW5j ZV9pbml0KCZjX2Nvbm4tPnJldGlyZV9mZW5jZSwgY19jb25uLT5uYW1lLAo+PiA+IC0JCQljX2Nv bm4tPmJhc2UuYmFzZS5pZCk7Cj4+ID4gLQlpZiAocmMpIHsKPj4gPiAtCQlEUFVfRVJST1IoImZh aWxlZCB0byBpbml0IGZlbmNlLCAlZFxuIiwgcmMpOwo+PiA+IC0JCWdvdG8gZXJyb3JfY2xlYW51 cF9jb25uOwo+PiA+IC0JfQo+PiA+IC0KPj4gPiAgCW11dGV4X2luaXQoJmNfY29ubi0+bG9jayk7 Cj4+ID4KPj4gPiAgCXJjID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZjX2Nv bm4tPmJhc2UsIGVuY29kZXIpOwo+PiA+ICAJaWYgKHJjKSB7Cj4+ID4gIAkJRFBVX0VSUk9SKCJm YWlsZWQgdG8gYXR0YWNoIGVuY29kZXIgdG8gY29ubmVjdG9yLCAlZFxuIiwKPj4gPiByYyk7Cj4+ ID4gLQkJZ290byBlcnJvcl9jbGVhbnVwX2ZlbmNlOwo+PiA+ICsJCWdvdG8gZXJyb3JfY2xlYW51 cF9jb25uOwo+PiA+ICAJfQo+PiA+Cj4+ID4gICNpZmRlZiBDT05GSUdfRFJNX01TTV9EU0lfU1RB R0lORwo+PiA+ICAJcmMgPSBkcHVfYmFja2xpZ2h0X3NldHVwKGNfY29ubiwgZGV2KTsKPj4gPiAg CWlmIChyYykgewo+PiA+ICAJCURQVV9FUlJPUigiZmFpbGVkIHRvIHNldHVwIGJhY2tsaWdodCwg cmM9JWRcbiIsIHJjKTsKPj4gPiAtCQlnb3RvIGVycm9yX2NsZWFudXBfZmVuY2U7Cj4+ID4gKwkJ Z290byBlcnJvcl9jbGVhbnVwX2Nvbm47Cj4+ID4gIAl9Cj4+ID4gICNlbmRpZgo+PiA+Cj4+ID4g QEAgLTEyNDgsNyArMTIwNCw3IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yICpkcHVfY29ubmVjdG9y X2luaXQoc3RydWN0Cj4+ID4gZHJtX2RldmljZSAqZGV2LAo+PiA+ICAJCWlmICghaW5mbykgewo+ PiA+ICAJCQlEUFVfRVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSBpbmZvIGJ1ZmZlclxuIik7Cj4+ ID4gIAkJCXJjID0gLUVOT01FTTsKPj4gPiAtCQkJZ290byBlcnJvcl9jbGVhbnVwX2ZlbmNlOwo+ PiA+ICsJCQlnb3RvIGVycm9yX2NsZWFudXBfY29ubjsKPj4gPiAgCQl9Cj4+ID4KPj4gPiAgCQlk cHVfa21zX2luZm9fcmVzZXQoaW5mbyk7Cj4+ID4gQEAgLTEyNTYsNyArMTIxMiw3IEBAIHN0cnVj dCBkcm1fY29ubmVjdG9yICpkcHVfY29ubmVjdG9yX2luaXQoc3RydWN0Cj4+ID4gZHJtX2Rldmlj ZSAqZGV2LAo+PiA+ICAJCWlmIChyYykgewo+PiA+ICAJCQlEUFVfRVJST1IoInBvc3QtaW5pdCBm YWlsZWQsICVkXG4iLCByYyk7Cj4+ID4gIAkJCWtmcmVlKGluZm8pOwo+PiA+IC0JCQlnb3RvIGVy cm9yX2NsZWFudXBfZmVuY2U7Cj4+ID4gKwkJCWdvdG8gZXJyb3JfY2xlYW51cF9jb25uOwo+PiA+ ICAJCX0KPj4gPgo+PiA+ICAJCW1zbV9wcm9wZXJ0eV9pbnN0YWxsX2Jsb2IoJmNfY29ubi0+cHJv cGVydHlfaW5mbywKPj4gPiBAQCAtMTMxMCwxMCArMTI2Niw2IEBAIHN0cnVjdCBkcm1fY29ubmVj dG9yICpkcHVfY29ubmVjdG9yX2luaXQoc3RydWN0Cj4+ID4gZHJtX2RldmljZSAqZGV2LAo+PiA+ ICAJCQkJJmNfY29ubi0+cHJvcGVydHlfaW5mbywgImRwdV9kcm1fcm9pX3YxIiwKPj4gPiAweDAs Cj4+ID4gIAkJCQkwLCB+MCwgMCwgQ09OTkVDVE9SX1BST1BfUk9JX1YxKTsKPj4gPiAgCX0KPj4g PiAtCj4+ID4gLQltc21fcHJvcGVydHlfaW5zdGFsbF9yYW5nZSgmY19jb25uLT5wcm9wZXJ0eV9p bmZvLCAiUkVUSVJFX0ZFTkNFIiwKPj4gPiAtCQkJMHgwLCAwLCBJTlJfT1BFTl9NQVgsIDAsCj4+ ID4gQ09OTkVDVE9SX1BST1BfUkVUSVJFX0ZFTkNFKTsKPj4gPiAtCj4+ID4gIAltc21fcHJvcGVy dHlfaW5zdGFsbF9yYW5nZSgmY19jb25uLT5wcm9wZXJ0eV9pbmZvLCAiYXV0b3JlZnJlc2giLAo+ PiA+ICAJCQkweDAsIDAsIEFVVE9SRUZSRVNIX01BWF9GUkFNRV9DTlQsIDAsCj4+ID4gIAkJCUNP Tk5FQ1RPUl9QUk9QX0FVVE9SRUZSRVNIKTsKPj4gPiBAQCAtMTM1NCwxMCArMTMwNiw4IEBAIHN0 cnVjdCBkcm1fY29ubmVjdG9yICpkcHVfY29ubmVjdG9yX2luaXQoc3RydWN0Cj4+ID4gZHJtX2Rl dmljZSAqZGV2LAo+PiA+ICAJCWRybV9wcm9wZXJ0eV9ibG9iX3B1dChjX2Nvbm4tPmJsb2JfZGl0 aGVyKTsKPj4gPgo+PiA+ICAJbXNtX3Byb3BlcnR5X2Rlc3Ryb3koJmNfY29ubi0+cHJvcGVydHlf aW5mbyk7Cj4+ID4gLWVycm9yX2NsZWFudXBfZmVuY2U6Cj4+ID4gLQltdXRleF9kZXN0cm95KCZj X2Nvbm4tPmxvY2spOwo+PiA+IC0JZHB1X2ZlbmNlX2RlaW5pdCgmY19jb25uLT5yZXRpcmVfZmVu Y2UpOwo+PiA+ICBlcnJvcl9jbGVhbnVwX2Nvbm46Cj4+ID4gKwltdXRleF9kZXN0cm95KCZjX2Nv bm4tPmxvY2spOwo+PiA+ICAJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKCZjX2Nvbm4tPmJhc2UpOwo+ PiA+ICBlcnJvcl9mcmVlX2Nvbm46Cj4+ID4gIAlrZnJlZShjX2Nvbm4pOwo+PiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmgKPj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuaAo+PiA+IGluZGV4 IGY2ZjQ4MzdkMTM1OS4uZmRiNGQ4NzY2NTQ5IDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuaAo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuaAo+PiA+IEBAIC0yMSw3ICsyMSw2IEBA Cj4+ID4gICNpbmNsdWRlICJtc21fZHJ2LmgiCj4+ID4gICNpbmNsdWRlICJtc21fcHJvcC5oIgo+ PiA+ICAjaW5jbHVkZSAiZHB1X2ttcy5oIgo+PiA+IC0jaW5jbHVkZSAiZHB1X2ZlbmNlLmgiCj4+ ID4KPj4gPiAgI2RlZmluZSBEUFVfQ09OTkVDVE9SX05BTUVfU0laRQkxNgo+PiA+Cj4+ID4gQEAg LTI0Nyw3ICsyNDYsNiBAQCBzdHJ1Y3QgZHB1X2Nvbm5lY3Rvcl9ldnQgewo+PiA+ICAgKiBAbW11 X3Vuc2VjdXJlOiBNTVUgaWQgZm9yIHVuc2VjdXJlIGJ1ZmZlcnMKPj4gPiAgICogQG5hbWU6IEFT Q0lJIG5hbWUgb2YgY29ubmVjdG9yCj4+ID4gICAqIEBsb2NrOiBNdXRleCBsb2NrIG9iamVjdCBm b3IgdGhpcyBzdHJ1Y3R1cmUKPj4gPiAtICogQHJldGlyZV9mZW5jZTogUmV0aXJlIGZlbmNlIGNv bnRleHQgcmVmZXJlbmNlCj4+ID4gICAqIEBvcHM6IExvY2FsIGNhbGxiYWNrIGZ1bmN0aW9uIHBv aW50ZXIgdGFibGUKPj4gPiAgICogQGRwbXNfbW9kZTogRFBNUyBwcm9wZXJ0eSBzZXR0aW5nIGZy b20gdXNlciBzcGFjZQo+PiA+ICAgKiBAbHBfbW9kZTogTFAgcHJvcGVydHkgc2V0dGluZyBmcm9t IHVzZXIgc3BhY2UKPj4gPiBAQCAtMjc0LDcgKzI3Miw2IEBAIHN0cnVjdCBkcHVfY29ubmVjdG9y IHsKPj4gPiAgCWNoYXIgbmFtZVtEUFVfQ09OTkVDVE9SX05BTUVfU0laRV07Cj4+ID4KPj4gPiAg CXN0cnVjdCBtdXRleCBsb2NrOwo+PiA+IC0Jc3RydWN0IGRwdV9mZW5jZV9jb250ZXh0IHJldGly ZV9mZW5jZTsKPj4gPiAgCXN0cnVjdCBkcHVfY29ubmVjdG9yX29wcyBvcHM7Cj4+ID4gIAlpbnQg ZHBtc19tb2RlOwo+PiA+ICAJaW50IGxwX21vZGU7Cj4+ID4gQEAgLTQ0NywyNiArNDQ0LDYgQEAg c3RydWN0IGRybV9jb25uZWN0b3IgKmRwdV9jb25uZWN0b3JfaW5pdChzdHJ1Y3QKPj4gPiBkcm1f ZGV2aWNlICpkZXYsCj4+ID4gIAkJaW50IGNvbm5lY3Rvcl9wb2xsLAo+PiA+ICAJCWludCBjb25u ZWN0b3JfdHlwZSk7Cj4+ID4KPj4gPiAtLyoqCj4+ID4gLSAqIGRwdV9jb25uZWN0b3JfcHJlcGFy ZV9mZW5jZSAtIHByZXBhcmUgZmVuY2Ugc3VwcG9ydCBmb3IgY3VycmVudAo+PiA+IGNvbW1pdAo+ PiA+IC0gKiBAY29ubmVjdG9yOiBQb2ludGVyIHRvIGRybSBjb25uZWN0b3Igb2JqZWN0Cj4+ID4g LSAqLwo+PiA+IC12b2lkIGRwdV9jb25uZWN0b3JfcHJlcGFyZV9mZW5jZShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKTsKPj4gPiAtCj4+ID4gLS8qKgo+PiA+IC0gKiBkcHVfY29ubmVj dG9yX2NvbXBsZXRlX2NvbW1pdCAtIHNpZ25hbCBjb21wbGV0aW9uIG9mIGN1cnJlbnQKPiBjb21t aXQKPj4gPiAtICogQGNvbm5lY3RvcjogUG9pbnRlciB0byBkcm0gY29ubmVjdG9yIG9iamVjdAo+ PiA+IC0gKiBAdHM6IHRpbWVzdGFtcCB0byBiZSB1cGRhdGVkIGluIHRoZSBmZW5jZSBzaWduYWxs aW5nCj4+ID4gLSAqLwo+PiA+IC12b2lkIGRwdV9jb25uZWN0b3JfY29tcGxldGVfY29tbWl0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ID4ga3RpbWVfdCB0cyk7Cj4+ID4gLQo+ PiA+IC0vKioKPj4gPiAtICogZHB1X2Nvbm5lY3Rvcl9jb21taXRfcmVzZXQgLSByZXNldCB0aGUg Y29tcGxldGlvbiBzaWduYWwKPj4gPiAtICogQGNvbm5lY3RvcjogUG9pbnRlciB0byBkcm0gY29u bmVjdG9yIG9iamVjdAo+PiA+IC0gKiBAdHM6IHRpbWVzdGFtcCB0byBiZSB1cGRhdGVkIGluIHRo ZSBmZW5jZSBzaWduYWxsaW5nCj4+ID4gLSAqLwo+PiA+IC12b2lkIGRwdV9jb25uZWN0b3JfY29t bWl0X3Jlc2V0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ID4ga3RpbWVfdAo+ PiA+IHRzKTsKPj4gPiAtCj4+ID4gIC8qKgo+PiA+ICAgKiBkcHVfY29ubmVjdG9yX2dldF9pbmZv IC0gcXVlcnkgZGlzcGxheSBzcGVjaWZpYyBpbmZvcm1hdGlvbgo+PiA+ICAgKiBAY29ubmVjdG9y OiBQb2ludGVyIHRvIGRybSBjb25uZWN0b3Igb2JqZWN0Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPj4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPj4gPiBpbmRleCBhMjYxMDIxZTVkZWIuLjJkNDQ5 ODlhZGU3YSAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfY3J0Yy5jCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Ny dGMuYwo+PiA+IEBAIC02MjksNyArNjI5LDYgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZGVzdHJv eShzdHJ1Y3QgZHJtX2NydGMKPiAqY3J0YykKPj4gPiAgCWRwdV9jcF9jcnRjX2Rlc3Ryb3lfcHJv cGVydGllcyhjcnRjKTsKPj4gPiAgCV9kcHVfY3J0Y19kZXN0cm95X2Rlc3Rfc2NhbGVyKGRwdV9j cnRjKTsKPj4gPgo+PiA+IC0JZHB1X2ZlbmNlX2RlaW5pdCgmZHB1X2NydGMtPm91dHB1dF9mZW5j ZSk7Cj4+ID4gIAlfZHB1X2NydGNfZGVpbml0X2V2ZW50cyhkcHVfY3J0Yyk7Cj4+ID4KPj4gPiAg CWRybV9jcnRjX2NsZWFudXAoY3J0Yyk7Cj4+ID4gQEAgLTE2NzEsNjUgKzE2NzAsNiBAQCBzdGF0 aWMgdm9pZCBfZHB1X2NydGNfZGVzdF9zY2FsZXJfc2V0dXAoc3RydWN0Cj4+ID4gZHJtX2NydGMg KmNydGMpCj4+ID4gIAl9Cj4+ID4gIH0KPj4gPgo+PiA+IC12b2lkIGRwdV9jcnRjX3ByZXBhcmVf Y29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gPiAtCQlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKm9sZF9zdGF0ZSkKPj4gPiAtewo+PiA+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPj4g PiAtCXN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGM7Cj4+ID4gLQlzdHJ1Y3QgZHB1X2NydGNfc3Rh dGUgKmNzdGF0ZTsKPj4gPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+PiA+IC0Jc3Ry dWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNvbm5faXRlcjsKPj4gPiAtCXN0cnVjdCBkcHVf Y3J0Y19yZXRpcmVfZXZlbnQgKnJldGlyZV9ldmVudCA9IE5VTEw7Cj4+ID4gLQl1bnNpZ25lZCBs b25nIGZsYWdzOwo+PiA+IC0JaW50IGk7Cj4+ID4gLQo+PiA+IC0JaWYgKCFjcnRjIHx8ICFjcnRj LT5zdGF0ZSkgewo+PiA+IC0JCURQVV9FUlJPUigiaW52YWxpZCBjcnRjXG4iKTsKPj4gPiAtCQly ZXR1cm47Cj4+ID4gLQl9Cj4+ID4gLQo+PiA+IC0JZGV2ID0gY3J0Yy0+ZGV2Owo+PiA+IC0JZHB1 X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPj4gPiAtCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0 YXRlKGNydGMtPnN0YXRlKTsKPj4gPiAtCURQVV9FVlQzMl9WRVJCT1NFKERSTUlEKGNydGMpKTsK Pj4gPiAtCj4+ID4gLQkvKiBpZGVudGlmeSBjb25uZWN0b3JzIGF0dGFjaGVkIHRvIHRoaXMgY3J0 YyAqLwo+PiA+IC0JY3N0YXRlLT5udW1fY29ubmVjdG9ycyA9IDA7Cj4+ID4gLQo+PiA+IC0JZHJt X2Nvbm5lY3Rvcl9saXN0X2l0ZXJfYmVnaW4oZGV2LCAmY29ubl9pdGVyKTsKPj4gPiAtCWRybV9m b3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uLCAmY29ubl9pdGVyKQo+PiA+IC0JCWlmIChjb25u LT5zdGF0ZSAmJiBjb25uLT5zdGF0ZS0+Y3J0YyA9PSBjcnRjICYmCj4+ID4gLQkJCQljc3RhdGUt Pm51bV9jb25uZWN0b3JzIDwgTUFYX0NPTk5FQ1RPUlMpIHsKPj4gPiAtCQkJY3N0YXRlLT5jb25u ZWN0b3JzW2NzdGF0ZS0+bnVtX2Nvbm5lY3RvcnMrK10gPQo+PiA+IGNvbm47Cj4+ID4gLQkJCWRw dV9jb25uZWN0b3JfcHJlcGFyZV9mZW5jZShjb25uKTsKPj4gPiAtCQl9Cj4+ID4gLQlkcm1fY29u bmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRlcik7Cj4+ID4gLQo+PiA+IC0JZm9yIChpID0g MDsgaSA8IERQVV9DUlRDX0ZSQU1FX0VWRU5UX1NJWkU7IGkrKykgewo+PiA+IC0JCXJldGlyZV9l dmVudCA9ICZkcHVfY3J0Yy0+cmV0aXJlX2V2ZW50c1tpXTsKPj4gPiAtCQlpZiAobGlzdF9lbXB0 eSgmcmV0aXJlX2V2ZW50LT5saXN0KSkKPj4gPiAtCQkJYnJlYWs7Cj4+ID4gLQkJcmV0aXJlX2V2 ZW50ID0gTlVMTDsKPj4gPiAtCX0KPj4gPiAtCj4+ID4gLQlpZiAocmV0aXJlX2V2ZW50KSB7Cj4+ ID4gLQkJcmV0aXJlX2V2ZW50LT5udW1fY29ubmVjdG9ycyA9IGNzdGF0ZS0+bnVtX2Nvbm5lY3Rv cnM7Cj4+ID4gLQkJZm9yIChpID0gMDsgaSA8IGNzdGF0ZS0+bnVtX2Nvbm5lY3RvcnM7IGkrKykK Pj4gPiAtCQkJcmV0aXJlX2V2ZW50LT5jb25uZWN0b3JzW2ldID0KPj4gPiBjc3RhdGUtPmNvbm5l Y3RvcnNbaV07Cj4+ID4gLQo+PiA+IC0JCXNwaW5fbG9ja19pcnFzYXZlKCZkcHVfY3J0Yy0+c3Bp bl9sb2NrLCBmbGFncyk7Cj4+ID4gLQkJbGlzdF9hZGRfdGFpbCgmcmV0aXJlX2V2ZW50LT5saXN0 LAo+PiA+IC0KPj4gPiAmZHB1X2NydGMtPnJldGlyZV9ldmVudF9saXN0KTsKPj4gPiAtCQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZkcHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Cj4+ID4gLQl9 IGVsc2Ugewo+PiA+IC0JCURQVV9FUlJPUigiY3J0YyVkIHJldGlyZSBldmVudCBvdmVyZmxvd1xu IiwKPj4gPiBjcnRjLT5iYXNlLmlkKTsKPj4gPiAtCQlEUFVfRVZUMzIoRFJNSUQoY3J0YyksIERQ VV9FVlRMT0dfRVJST1IpOwo+PiA+IC0JfQo+PiA+IC0KPj4gPiAtCS8qIHByZXBhcmUgbWFpbiBv dXRwdXQgZmVuY2UgKi8KPj4gPiAtCWRwdV9mZW5jZV9wcmVwYXJlKCZkcHVfY3J0Yy0+b3V0cHV0 X2ZlbmNlKTsKPj4gPiAtfQo+PiA+IC0KPj4gPiAgLyoqCj4+ID4gICAqICBfZHB1X2NydGNfY29t cGxldGVfZmxpcCAtIHNpZ25hbCBwZW5kaW5nIHBhZ2VfZmxpcCBldmVudHMKPj4gPiAgICogQW55 IHBlbmRpbmcgdmJsYW5rIGV2ZW50cyBhcmUgYWRkZWQgdG8gdGhlIHZibGFua19ldmVudF9saXN0 Cj4+ID4gQEAgLTE3OTksNDEgKzE3MzksNiBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y192Ymxhbmtf Y2Iodm9pZCAqZGF0YSkKPj4gPiAgCURQVV9FVlQzMl9WRVJCT1NFKERSTUlEKGNydGMpKTsKPj4g PiAgfQo+PiA+Cj4+ID4gLXN0YXRpYyB2b2lkIF9kcHVfY3J0Y19yZXRpcmVfZXZlbnQoc3RydWN0 IGRybV9jcnRjICpjcnRjLCBrdGltZV90IHRzKQo+PiA+IC17Cj4+ID4gLQlzdHJ1Y3QgZHB1X2Ny dGNfcmV0aXJlX2V2ZW50ICpyZXRpcmVfZXZlbnQ7Cj4+ID4gLQlzdHJ1Y3QgZHB1X2NydGMgKmRw dV9jcnRjOwo+PiA+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gPiAtCWludCBpOwo+PiA+IC0K Pj4gPiAtCWlmICghY3J0Yykgewo+PiA+IC0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbVxuIik7 Cj4+ID4gLQkJcmV0dXJuOwo+PiA+IC0JfQo+PiA+IC0KPj4gPiAtCWRwdV9jcnRjID0gdG9fZHB1 X2NydGMoY3J0Yyk7Cj4+ID4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZHB1X2NydGMtPnNwaW5fbG9j aywgZmxhZ3MpOwo+PiA+IC0JcmV0aXJlX2V2ZW50ID0KPj4gPiBsaXN0X2ZpcnN0X2VudHJ5X29y X251bGwoJmRwdV9jcnRjLT5yZXRpcmVfZXZlbnRfbGlzdCwKPj4gPiAtCQkJCXN0cnVjdCBkcHVf Y3J0Y19yZXRpcmVfZXZlbnQsIGxpc3QpOwo+PiA+IC0JaWYgKHJldGlyZV9ldmVudCkKPj4gPiAt CQlsaXN0X2RlbF9pbml0KCZyZXRpcmVfZXZlbnQtPmxpc3QpOwo+PiA+IC0Jc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZHB1X2NydGMtPnNwaW5fbG9jaywgZmxhZ3MpOwo+PiA+IC0KPj4gPiAtCWlm ICghcmV0aXJlX2V2ZW50KSB7Cj4+ID4gLQkJRFBVX0VSUk9SKCJjcnRjJWQgcmV0aXJlIGV2ZW50 IHdpdGhvdXQga2lja29mZlxuIiwKPj4gPiAtCj4+ID4gY3J0Yy0+YmFzZS5pZCk7Cj4+ID4gLQkJ RFBVX0VWVDMyKERSTUlEKGNydGMpLCBEUFVfRVZUTE9HX0VSUk9SKTsKPj4gPiAtCQlyZXR1cm47 Cj4+ID4gLQl9Cj4+ID4gLQo+PiA+IC0JRFBVX0FUUkFDRV9CRUdJTigic2lnbmFsX3JldGlyZV9m ZW5jZSIpOwo+PiA+IC0JZm9yIChpID0gMDsgKGkgPCByZXRpcmVfZXZlbnQtPm51bV9jb25uZWN0 b3JzKSAmJgo+PiA+IC0JCQkJCXJldGlyZV9ldmVudC0+Y29ubmVjdG9yc1tpXTsgKytpKQo+PiA+ IC0JCWRwdV9jb25uZWN0b3JfY29tcGxldGVfY29tbWl0KAo+PiA+IC0JCQkJCXJldGlyZV9ldmVu dC0+Y29ubmVjdG9yc1tpXSwgdHMpOwo+PiA+IC0JRFBVX0FUUkFDRV9FTkQoInNpZ25hbF9yZXRp cmVfZmVuY2UiKTsKPj4gPiAtfQo+PiA+IC0KPj4gPiAgLyogX2RwdV9jcnRjX2lkbGVfbm90aWZ5 IC0gc2lnbmFsIGlkbGUgdGltZW91dCB0byBjbGllbnQgKi8KPj4gPiAgc3RhdGljIHZvaWQgX2Rw dV9jcnRjX2lkbGVfbm90aWZ5KHN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGMpCj4+ID4gIHsKPj4g PiBAQCAtMTk0NSwxNiArMTg1MCw2IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2ZyYW1lX2V2ZW50 X3dvcmsoc3RydWN0Cj4+ID4ga3RocmVhZF93b3JrICp3b3JrKQo+PiA+ICAJCQlmcmFtZV9kb25l ID0gdHJ1ZTsKPj4gPiAgCX0KPj4gPgo+PiA+IC0JaWYgKGZldmVudC0+ZXZlbnQgJiBEUFVfRU5D T0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxfUkVMRUFTRV9GRU5DRSkKPj4gPiB7Cj4+ID4gLQkJRFBV X0FUUkFDRV9CRUdJTigic2lnbmFsX3JlbGVhc2VfZmVuY2UiKTsKPj4gPiAtCQlkcHVfZmVuY2Vf c2lnbmFsKCZkcHVfY3J0Yy0+b3V0cHV0X2ZlbmNlLCBmZXZlbnQtPnRzLAo+PiA+IGZhbHNlKTsK Pj4gPiAtCQlEUFVfQVRSQUNFX0VORCgic2lnbmFsX3JlbGVhc2VfZmVuY2UiKTsKPj4gPiAtCX0K Pj4gPiAtCj4+ID4gLQlpZiAoZmV2ZW50LT5ldmVudCAmIERQVV9FTkNPREVSX0ZSQU1FX0VWRU5U X1NJR05BTF9SRVRJUkVfRkVOQ0UpCj4+ID4gLQkJLyogdGhpcyBhcGkgc2hvdWxkIGJlIGNhbGxl ZCB3aXRob3V0IHNwaW5fbG9jayAqLwo+PiA+IC0JCV9kcHVfY3J0Y19yZXRpcmVfZXZlbnQoY3J0 YywgZmV2ZW50LT50cyk7Cj4+ID4gLQo+PiA+ICAJaWYgKGZldmVudC0+ZXZlbnQgJiBEUFVfRU5D T0RFUl9GUkFNRV9FVkVOVF9QQU5FTF9ERUFEKQo+PiA+ICAJCURQVV9FUlJPUigiY3J0YyVkIHRz OiVsbGQgcmVjZWl2ZWQgcGFuZWwgZGVhZCBldmVudFxuIiwKPj4gPiAgCQkJCWNydGMtPmJhc2Uu aWQsIGt0aW1lX3RvX25zKGZldmVudC0+dHMpKTsKPj4gPiBAQCAtMTk3MSwxMSArMTg2NiwxMSBA QCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19mcmFtZV9ldmVudF93b3JrKHN0cnVjdAo+PiA+IGt0aHJl YWRfd29yayAqd29yaykKPj4gPiAgLyoKPj4gPiAgICogZHB1X2NydGNfZnJhbWVfZXZlbnRfY2Ig LSBjcnRjIGZyYW1lIGV2ZW50IGNhbGxiYWNrIEFQSS4gQ1JUQwo+IG1vZHVsZQo+PiA+ICAgKiBy ZWdpc3RlcnMgdGhpcyBBUEkgdG8gZW5jb2RlciBmb3IgYWxsIGZyYW1lIGV2ZW50IGNhbGxiYWNr cyBsaWtlCj4+ID4gLSAqIHJlbGVhc2VfZmVuY2UsIHJldGlyZV9mZW5jZSwgZnJhbWVfZXJyb3Is IGZyYW1lX2RvbmUsCj4gaWRsZV90aW1lb3V0LAo+PiA+IC0gKiBldGMuIEVuY29kZXIgbWF5IGNh bGwgZGlmZmVyZW50IGV2ZW50cyBmcm9tIGRpZmZlcmVudCBjb250ZXh0IC0KPiBJUlEsCj4+ID4g LSAqIHVzZXIgdGhyZWFkLCBjb21taXRfdGhyZWFkLCBldGMuIEVhY2ggZXZlbnQgc2hvdWxkIGJl IGNhcmVmdWxseQo+PiA+IC0gKiByZXZpZXdlZCBhbmQgc2hvdWxkIGJlIHByb2Nlc3NlZCBpbiBw cm9wZXIgdGFzayBjb250ZXh0IHRvIGF2b2lkCj4+ID4gc2NoZWR1bGluZwo+PiA+IC0gKiBkZWxh eSBvciBwcm9wZXJseSBtYW5hZ2UgdGhlIGlycSBjb250ZXh0J3MgYm90dG9tIGhhbGYgcHJvY2Vz c2luZy4KPj4gPiArICogZnJhbWVfZXJyb3IsIGZyYW1lX2RvbmUsIGlkbGVfdGltZW91dCwgZXRj LiBFbmNvZGVyIG1heSBjYWxsCj4+ID4gZGlmZmVyZW50Cj4+ID4gZXZlbnRzCj4+ID4gKyAqIGZy b20gZGlmZmVyZW50IGNvbnRleHQgLSBJUlEsIHVzZXIgdGhyZWFkLCBjb21taXRfdGhyZWFkLCBl dGMuCj4gRWFjaAo+PiA+IGV2ZW50Cj4+ID4gKyAqIHNob3VsZCBiZSBjYXJlZnVsbHkgcmV2aWV3 ZWQgYW5kIHNob3VsZCBiZSBwcm9jZXNzZWQgaW4gcHJvcGVyCj4gdGFzawo+PiA+IGNvbnRleHQK Pj4gPiArICogdG8gYXZvaWQgc2NoZWR1bGluIGRlbGF5IG9yIHByb3Blcmx5IG1hbmFnZSB0aGUg aXJxIGNvbnRleHQncwo+IGJvdHRvbQo+PiA+IGhhbGYKPj4gPiArICogcHJvY2Vzc2luZy4KPj4g PiAgICovCj4+ID4gIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2ZyYW1lX2V2ZW50X2NiKHZvaWQgKmRh dGEsIHUzMiBldmVudCkKPj4gPiAgewo+PiA+IEBAIC0zNDg0LDE0ICszMzc5LDYgQEAgc3RhdGlj IHZvaWQgZHB1X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMKPj4gPiAqY3J0YykKPj4gPiAg CQlkcHVfcG93ZXJfaGFuZGxlX3VucmVnaXN0ZXJfZXZlbnQoJnByaXYtPnBoYW5kbGUsCj4+ID4g IAkJCQlkcHVfY3J0Yy0+cG93ZXJfZXZlbnQpOwo+PiA+Cj4+ID4gLQkvKioKPj4gPiAtCSAqIEFs bCBjYWxsYmFja3MgYXJlIHVucmVnaXN0ZXJlZCBhbmQgZnJhbWUgZG9uZSB3YWl0cyBhcmUKPj4g PiBjb21wbGV0ZQo+PiA+IC0JICogYXQgdGhpcyBwb2ludC4gTm8gYnVmZmVycyBhcmUgYWNjZXNz ZWQgYnkgaGFyZHdhcmUuCj4+ID4gLQkgKiByZXNldCB0aGUgZmVuY2UgdGltZWxpbmUgaWYgdGhl cmUgaXMgYW55IGlzc3VlLgo+PiA+IC0JICovCj4+ID4gLQlkcHVfZmVuY2Vfc2lnbmFsKCZkcHVf Y3J0Yy0+b3V0cHV0X2ZlbmNlLCBrdGltZV9nZXQoKSwgdHJ1ZSk7Cj4+ID4gLQlmb3IgKGkgPSAw OyBpIDwgY3N0YXRlLT5udW1fY29ubmVjdG9yczsgKytpKQo+PiA+IC0JCWRwdV9jb25uZWN0b3Jf Y29tbWl0X3Jlc2V0KGNzdGF0ZS0+Y29ubmVjdG9yc1tpXSwKPj4gPiBrdGltZV9nZXQoKSk7Cj4+ ID4KPj4gPiAgCW1lbXNldChkcHVfY3J0Yy0+bWl4ZXJzLCAwLCBzaXplb2YoZHB1X2NydGMtPm1p eGVycykpOwo+PiA+ICAJZHB1X2NydGMtPm51bV9taXhlcnMgPSAwOwo+PiA+IEBAIC0zNzAzLDYg KzM1OTAsOCBAQCBzdGF0aWMgaW50IGRwdV9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Ny dGMKPj4gPiAqY3J0YywKPj4gPiAgCWludCBtdWx0aXJlY3RfY291bnQgPSAwOwo+PiA+ICAJY29u c3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGlwZV9zdGFnZWRbU1NQUF9NQVhdOwo+PiA+ICAJ aW50IGxlZnRfenBvc19jbnQgPSAwLCByaWdodF96cG9zX2NudCA9IDA7Cj4+ID4gKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVyOwo+PiA+ICsJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm47Cj4+ID4KPj4gPiAgCWlmICghY3J0Yykgewo+PiA+ICAJCURQVV9FUlJPUigi aW52YWxpZCBjcnRjXG4iKTsKPj4gPiBAQCAtMzk1Niw2ICszODQ1LDE2IEBAIHN0YXRpYyBpbnQg ZHB1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdAo+IGRybV9jcnRjCj4+ID4gKmNydGMsCj4+ID4g IAkJZ290byBlbmQ7Cj4+ID4gIAl9Cj4+ID4KPj4gPiArCS8qIGlkZW50aWZ5IGNvbm5lY3RvcnMg YXR0YWNoZWQgdG8gdGhpcyBjcnRjICovCj4+ID4gKwljc3RhdGUtPm51bV9jb25uZWN0b3JzID0g MDsKPj4gPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGNydGMtPmRldiwgJmNvbm5f aXRlcik7Cj4+ID4gKwlkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIoY29ubiwgJmNvbm5faXRl cikKPj4gPiArCQlpZiAoY29ubi0+c3RhdGUgJiYgY29ubi0+c3RhdGUtPmNydGMgPT0gY3J0YyAm Jgo+PiA+ICsJCQkJY3N0YXRlLT5udW1fY29ubmVjdG9ycyA8IE1BWF9DT05ORUNUT1JTKSB7Cj4+ ID4gKwkJCWNzdGF0ZS0+Y29ubmVjdG9yc1tjc3RhdGUtPm51bV9jb25uZWN0b3JzKytdID0KPj4g PiBjb25uOwo+PiA+ICsJCX0KPj4gPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29u bl9pdGVyKTsKPj4gPiArCj4+IAo+PiBJcyB0aGlzIGh1bmsgcmVsYXRlZCB0byB0aGlzIGNoYW5n ZT8KPj4gCj4gCj4gVGhpcyBjb2RlIGNhbWUgZnJvbSBkcHVfY3J0Y19wcmVwYXJlX2NvbW1pdC4g V2UgdXNlIAo+IGNzdGF0ZS0+bnVtX2Nvbm5lY3RvcnMKPiBlbHNld2hlcmUsIHNvIGl0IG5lZWRl ZCB0byBiZSBwcmVzZXJ2ZWQuCj4gCj4gU2Vhbgo+IAo+PiA+ICBlbmQ6Cj4+ID4gIAlfZHB1X2Ny dGNfcnBfZnJlZV91bnVzZWQoJmNzdGF0ZS0+cnApOwo+PiA+ICAJcmV0dXJuIHJjOwo+PiA+IEBA IC00MDM0LDEzICszOTMzLDYgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfaW5zdGFsbF9wcm9wZXJ0 aWVzKHN0cnVjdAo+PiA+IGRybV9jcnRjICpjcnRjLAo+PiA+ICAJCSJpbnB1dF9mZW5jZV90aW1l b3V0IiwgMHgwLCAwLAo+PiA+IERQVV9DUlRDX01BWF9JTlBVVF9GRU5DRV9USU1FT1VULAo+PiA+ ICAJCURQVV9DUlRDX0lOUFVUX0ZFTkNFX1RJTUVPVVQsCj4+ID4gQ1JUQ19QUk9QX0lOUFVUX0ZF TkNFX1RJTUVPVVQpOwo+PiA+Cj4+ID4gLQltc21fcHJvcGVydHlfaW5zdGFsbF9yYW5nZSgmZHB1 X2NydGMtPnByb3BlcnR5X2luZm8sCj4+ID4gIm91dHB1dF9mZW5jZSIsCj4+ID4gLQkJCTB4MCwg MCwgSU5SX09QRU5fTUFYLCAweDAsCj4+ID4gQ1JUQ19QUk9QX09VVFBVVF9GRU5DRSk7Cj4+ID4g LQo+PiA+IC0JbXNtX3Byb3BlcnR5X2luc3RhbGxfcmFuZ2UoJmRwdV9jcnRjLT5wcm9wZXJ0eV9p bmZvLAo+PiA+IC0JCQkib3V0cHV0X2ZlbmNlX29mZnNldCIsIDB4MCwgMCwgMSwgMCwKPj4gPiAt CQkJQ1JUQ19QUk9QX09VVFBVVF9GRU5DRV9PRkZTRVQpOwo+PiA+IC0KPj4gPiAgCW1zbV9wcm9w ZXJ0eV9pbnN0YWxsX3JhbmdlKCZkcHVfY3J0Yy0+cHJvcGVydHlfaW5mbywKPj4gPiAgCQkJImNv cmVfY2xrIiwgMHgwLCAwLCBVNjRfTUFYLAo+PiA+ICAJCQlkcHVfa21zLT5wZXJmLm1heF9jb3Jl X2Nsa19yYXRlLAo+PiA+IEBAIC00MzQyLDI5ICs0MjM0LDEyIEBAIHN0YXRpYyBpbnQgZHB1X2Ny dGNfYXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QKPj4gPiBkcm1fY3J0YyAqY3J0YywKPj4gPiAg CQl9Cj4+ID4KPj4gPiAgCQlpID0gbXNtX3Byb3BlcnR5X2luZGV4KCZkcHVfY3J0Yy0+cHJvcGVy dHlfaW5mbywKPj4gPiBwcm9wZXJ0eSk7Cj4+ID4gLQkJaWYgKGkgPT0gQ1JUQ19QUk9QX09VVFBV VF9GRU5DRSkgewo+PiA+IC0JCQl1aW50MzJfdCBvZmZzZXQgPSBkcHVfY3J0Y19nZXRfcHJvcGVy dHkoY3N0YXRlLAo+PiA+IC0JCQkJCUNSVENfUFJPUF9PVVRQVVRfRkVOQ0VfT0ZGU0VUKTsKPj4g PiAtCj4+ID4gLQkJCS8qKgo+PiA+IC0JCQkgKiBzZXQgdGhlIG9mZnNldCB0byAwIG9ubHkgZm9y IGNtZCBtb2RlIHBhbmVscywKPj4gPiBzbwo+PiA+IC0JCQkgKiB0aGUgcmVsZWFzZSBmZW5jZSBm b3IgdGhlIGN1cnJlbnQgZnJhbWUgY2FuIGJlCj4+ID4gLQkJCSAqIHRyaWdnZXJlZCByaWdodCBh ZnRlciBQUF9ET05FIGludGVycnVwdC4KPj4gPiAtCQkJICovCj4+ID4gLQkJCW9mZnNldCA9IGlz X2NtZCA/IDAgOiAob2Zmc2V0ICsgY29ubl9vZmZzZXQpOwo+PiA+IC0KPj4gPiAtCQkJcmV0ID0g ZHB1X2ZlbmNlX2NyZWF0ZSgmZHB1X2NydGMtPm91dHB1dF9mZW5jZSwKPj4gPiB2YWwsCj4+ID4g LQkJCQkJCQkJb2Zmc2V0KTsKPj4gPiAtCQkJaWYgKHJldCkKPj4gPiAtCQkJCURQVV9FUlJPUigi ZmVuY2UgY3JlYXRlIGZhaWxlZFxuIik7Cj4+ID4gLQkJfSBlbHNlIHsKPj4gPiAtCQkJcmV0ID0K Pj4gPiBtc21fcHJvcGVydHlfYXRvbWljX2dldCgmZHB1X2NydGMtPnByb3BlcnR5X2luZm8sCj4+ ID4gLQkJCQkJJmNzdGF0ZS0+cHJvcGVydHlfc3RhdGUsCj4+ID4gLQkJCQkJcHJvcGVydHksIHZh bCk7Cj4+ID4gLQkJCWlmIChyZXQpCj4+ID4gLQkJCQlyZXQgPSBkcHVfY3BfY3J0Y19nZXRfcHJv cGVydHkoY3J0YywKPj4gPiAtCQkJCQlwcm9wZXJ0eSwgdmFsKTsKPj4gPiAtCQl9Cj4+ID4gKwkJ cmV0ID0gbXNtX3Byb3BlcnR5X2F0b21pY19nZXQoJmRwdV9jcnRjLT5wcm9wZXJ0eV9pbmZvLAo+ PiA+ICsJCQkJJmNzdGF0ZS0+cHJvcGVydHlfc3RhdGUsCj4+ID4gKwkJCQlwcm9wZXJ0eSwgdmFs KTsKPj4gPiArCQlpZiAocmV0KQo+PiA+ICsJCQlyZXQgPSBkcHVfY3BfY3J0Y19nZXRfcHJvcGVy dHkoY3J0YywKPj4gPiArCQkJCXByb3BlcnR5LCB2YWwpOwo+PiA+ICAJCWlmIChyZXQpCj4+ID4g IAkJCURSTV9FUlJPUigiZ2V0IHByb3BlcnR5IGZhaWxlZFxuIik7Cj4+ID4gIAl9Cj4+ID4gQEAg LTQ4NTgsMTAgKzQ3MzMsNiBAQCBzdGF0aWMgaW50IF9kcHVfY3J0Y19pbml0X2V2ZW50cyhzdHJ1 Y3QKPiBkcHVfY3J0Ywo+PiA+ICpkcHVfY3J0YykKPj4gPiAgCQlsaXN0X2FkZF90YWlsKCZkcHVf Y3J0Yy0+ZXZlbnRfY2FjaGVbaV0ubGlzdCwKPj4gPiAgCQkJCSZkcHVfY3J0Yy0+ZXZlbnRfZnJl ZV9saXN0KTsKPj4gPgo+PiA+IC0JSU5JVF9MSVNUX0hFQUQoJmRwdV9jcnRjLT5yZXRpcmVfZXZl bnRfbGlzdCk7Cj4+ID4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkcHVfY3J0Yy0+cmV0 aXJlX2V2ZW50cyk7IGkrKykKPj4gPiAtCQlJTklUX0xJU1RfSEVBRCgmZHB1X2NydGMtPnJldGly ZV9ldmVudHNbaV0ubGlzdCk7Cj4+ID4gLQo+PiA+ICAJcmV0dXJuIHJjOwo+PiA+ICB9Cj4+ID4K Pj4gPiBAQCAtNDkyMCw5ICs0NzkxLDYgQEAgc3RydWN0IGRybV9jcnRjICpkcHVfY3J0Y19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlCj4+ID4gKmRldiwgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4+ ID4gIAkJcmV0dXJuIEVSUl9QVFIocmMpOwo+PiA+ICAJfQo+PiA+Cj4+ID4gLQkvKiBpbml0aWFs aXplIG91dHB1dCBmZW5jZSBzdXBwb3J0ICovCj4+ID4gLQlkcHVfZmVuY2VfaW5pdCgmZHB1X2Ny dGMtPm91dHB1dF9mZW5jZSwgZHB1X2NydGMtPm5hbWUsCj4+ID4gY3J0Yy0+YmFzZS5pZCk7Cj4+ ID4gLQo+PiA+ICAJLyogY3JlYXRlIENSVEMgcHJvcGVydGllcyAqLwo+PiA+ICAJbXNtX3Byb3Bl cnR5X2luaXQoJmRwdV9jcnRjLT5wcm9wZXJ0eV9pbmZvLCAmY3J0Yy0+YmFzZSwgZGV2LAo+PiA+ ICAJCQlwcml2LT5jcnRjX3Byb3BlcnR5LCBkcHVfY3J0Yy0+cHJvcGVydHlfZGF0YSwKPj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAo+PiA+ IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAo+PiA+IGluZGV4IGI2 M2RmMjQzYmUzMy4uNzI3YTM0MzRhNGY2IDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCj4+ID4gQEAgLTIyLDcgKzIyLDYgQEAKPj4gPiAgI2luY2x1 ZGUgPGxpbnV4L2t0aHJlYWQuaD4KPj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+PiA+ ICAjaW5jbHVkZSAibXNtX3Byb3AuaCIKPj4gPiAtI2luY2x1ZGUgImRwdV9mZW5jZS5oIgo+PiA+ ICAjaW5jbHVkZSAiZHB1X2ttcy5oIgo+PiA+ICAjaW5jbHVkZSAiZHB1X2NvcmVfcGVyZi5oIgo+ PiA+ICAjaW5jbHVkZSAiZHB1X2h3X2Jsay5oIgo+PiA+IEBAIC04NSwxNyArODQsNiBAQCBzdHJ1 Y3QgZHB1X2NydGNfc21tdV9zdGF0ZV9kYXRhIHsKPj4gPiAgCXVpbnQzMl90IHRyYW5zaXRpb25f ZXJyb3I7Cj4+ID4gIH07Cj4+ID4KPj4gPiAtLyoqCj4+ID4gLSAqIEBjb25uZWN0b3JzICAgIDog Q3VycmVudGx5IGFzc29jaWF0ZWQgZHJtIGNvbm5lY3RvcnMgZm9yIHJldGlyZQo+PiA+IGV2ZW50 Cj4+ID4gLSAqIEBudW1fY29ubmVjdG9yczogTnVtYmVyIG9mIGFzc29jaWF0ZWQgZHJtIGNvbm5l Y3RvcnMgZm9yIHJldGlyZQo+PiA+IGV2ZW50Cj4+ID4gLSAqIEBsaXN0OglldmVudCBsaXN0Cj4+ ID4gLSAqLwo+PiA+IC1zdHJ1Y3QgZHB1X2NydGNfcmV0aXJlX2V2ZW50IHsKPj4gPiAtCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3JzW01BWF9DT05ORUNUT1JTXTsKPj4gPiAtCWludCBu dW1fY29ubmVjdG9yczsKPj4gPiAtCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPj4gPiAtfTsKPj4g PiAtCj4+ID4gIC8qKgo+PiA+ICAgKiBzdHJ1Y3QgZHB1X2NydGNfbWl4ZXI6IHN0b3JlcyB0aGUg bWFwIGZvciBlYWNoIHZpcnR1YWwgcGlwZWxpbmUgaW4KPj4gPiB0aGUKPj4gPiBDUlRDCj4+ID4g ICAqIEBod19sbToJTE0gSFcgRHJpdmVyIGNvbnRleHQKPj4gPiBAQCAtMTY5LDcgKzE1Nyw2IEBA IHN0cnVjdCBkcHVfY3J0Y19ldmVudCB7Cj4+ID4gICAqIEBkcm1fcmVxdWVzdGVkX3ZibGFuayA6 IFdoZXRoZXIgdmJsYW5rcyBoYXZlIGJlZW4gZW5hYmxlZCBpbiB0aGUKPj4gPiBlbmNvZGVyCj4+ ID4gICAqIEBwcm9wZXJ0eV9pbmZvIDogT3BhcXVlIHN0cnVjdHVyZSBmb3IgZ2VuZXJpYyBwcm9w ZXJ0eSBzdXBwb3J0Cj4+ID4gICAqIEBwcm9wZXJ0eV9kZWZhdWx0cyA6IEFycmF5IG9mIGRlZmF1 bHQgdmFsdWVzIGZvciBnZW5lcmljIHByb3BlcnR5Cj4+ID4gc3VwcG9ydAo+PiA+IC0gKiBAb3V0 cHV0X2ZlbmNlICA6IG91dHB1dCByZWxlYXNlIGZlbmNlIGNvbnRleHQKPj4gPiAgICogQHN0YWdl X2NmZyAgICAgOiBIL3cgbWl4ZXIgc3RhZ2UgY29uZmlndXJhdGlvbgo+PiA+ICAgKiBAZGVidWdm c19yb290ICA6IFBhcmVudCBvZiBkZWJ1Z2ZzIG5vZGUKPj4gPiAgICogQHZibGFua19jYl9jb3Vu dCA6IGNvdW50IG9mIHZibGFuayBjYWxsYmFjayBzaW5jZSBsYXN0IHJlc2V0Cj4+ID4gQEAgLTE5 MCw4ICsxNzcsNiBAQCBzdHJ1Y3QgZHB1X2NydGNfZXZlbnQgewo+PiA+ICAgKiBAZnJhbWVfZXZl bnRzICA6IHN0YXRpYyBhbGxvY2F0aW9uIG9mIGluLWZsaWdodCBmcmFtZSBldmVudHMKPj4gPiAg ICogQGZyYW1lX2V2ZW50X2xpc3QgOiBhdmFpbGFibGUgZnJhbWUgZXZlbnQgbGlzdAo+PiA+ICAg KiBAc3Bpbl9sb2NrICAgICA6IHNwaW4gbG9jayBmb3IgZnJhbWUgZXZlbnQsIHRyYW5zYWN0aW9u IHN0YXR1cywKPj4gPiBldGMuLi4KPj4gPiAtICogQHJldGlyZV9ldmVudHMgIDogc3RhdGljIGFs bG9jYXRpb24gb2YgcmV0aXJlIGZlbmNlIGNvbm5lY3Rvcgo+PiA+IC0gKiBAcmV0aXJlX2V2ZW50 X2xpc3QgOiBhdmFpbGFibGUgcmV0aXJlIGZlbmNlIGNvbm5lY3RvciBsaXN0Cj4+ID4gICAqIEBm cmFtZV9kb25lX2NvbXAgICAgOiBmb3IgZnJhbWVfZXZlbnRfZG9uZSBzeW5jaHJvbml6YXRpb24K Pj4gPiAgICogQGV2ZW50X3RocmVhZCAgOiBQb2ludGVyIHRvIGV2ZW50IGhhbmRsZXIgdGhyZWFk Cj4+ID4gICAqIEBldmVudF93b3JrZXIgIDogRXZlbnQgd29ya2VyIHF1ZXVlCj4+ID4gQEAgLTIy Nyw5ICsyMTIsNiBAQCBzdHJ1Y3QgZHB1X2NydGMgewo+PiA+ICAJc3RydWN0IG1zbV9wcm9wZXJ0 eV9kYXRhIHByb3BlcnR5X2RhdGFbQ1JUQ19QUk9QX0NPVU5UXTsKPj4gPiAgCXN0cnVjdCBkcm1f cHJvcGVydHlfYmxvYiAqYmxvYl9pbmZvOwo+PiA+Cj4+ID4gLQkvKiBvdXRwdXQgZmVuY2Ugc3Vw cG9ydCAqLwo+PiA+IC0Jc3RydWN0IGRwdV9mZW5jZV9jb250ZXh0IG91dHB1dF9mZW5jZTsKPj4g PiAtCj4+ID4gIAlzdHJ1Y3QgZHB1X2h3X3N0YWdlX2NmZyBzdGFnZV9jZmc7Cj4+ID4gIAlzdHJ1 Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Jvb3Q7Cj4+ID4KPj4gPiBAQCAtMjUzLDggKzIzNSw2IEBAIHN0 cnVjdCBkcHVfY3J0YyB7Cj4+ID4gIAlzdHJ1Y3QgZHB1X2NydGNfZnJhbWVfZXZlbnQKPj4gPiBm cmFtZV9ldmVudHNbRFBVX0NSVENfRlJBTUVfRVZFTlRfU0laRV07Cj4+ID4gIAlzdHJ1Y3QgbGlz dF9oZWFkIGZyYW1lX2V2ZW50X2xpc3Q7Cj4+ID4gIAlzcGlubG9ja190IHNwaW5fbG9jazsKPj4g PiAtCXN0cnVjdCBkcHVfY3J0Y19yZXRpcmVfZXZlbnQKPj4gPiByZXRpcmVfZXZlbnRzW0RQVV9D UlRDX0ZSQU1FX0VWRU5UX1NJWkVdOwo+PiA+IC0Jc3RydWN0IGxpc3RfaGVhZCByZXRpcmVfZXZl bnRfbGlzdDsKPj4gPiAgCXN0cnVjdCBjb21wbGV0aW9uIGZyYW1lX2RvbmVfY29tcDsKPj4gPgo+ PiA+ICAJLyogZm9yIGhhbmRsaW5nIGludGVybmFsIGV2ZW50IHRocmVhZCAqLwo+PiA+IEBAIC00 NzUsMTQgKzQ1NSw2IEBAIGludCBkcHVfY3J0Y192Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRj LCBib29sCj4+ID4gZW4pOwo+PiA+ICAgKi8KPj4gPiAgdm9pZCBkcHVfY3J0Y19jb21taXRfa2lj a29mZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+PiA+Cj4+ID4gLS8qKgo+PiA+IC0gKiBkcHVf Y3J0Y19wcmVwYXJlX2NvbW1pdCAtIGNhbGxiYWNrIHRvIHByZXBhcmUgZm9yIG91dHB1dCBmZW5j ZXMKPj4gPiAtICogQGNydGM6IFBvaW50ZXIgdG8gZHJtIGNydGMgb2JqZWN0Cj4+ID4gLSAqIEBv bGRfc3RhdGU6IFBvaW50ZXIgdG8gZHJtIGNydGMgb2xkIHN0YXRlIG9iamVjdAo+PiA+IC0gKi8K Pj4gPiAtdm9pZCBkcHVfY3J0Y19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4+ID4gLQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpOwo+PiA+IC0KPj4gPiAg LyoqCj4+ID4gICAqIGRwdV9jcnRjX2NvbXBsZXRlX2NvbW1pdCAtIGNhbGxiYWNrIHNpZ25hbGxp bmcgY29tcGxldGlvbiBvZgo+IGN1cnJlbnQKPj4gPiBjb21taXQKPj4gPiAgICogQGNydGM6IFBv aW50ZXIgdG8gZHJtIGNydGMgb2JqZWN0Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPj4gPiBpbmRleCA0ZDFlMzY1MmRiZjQuLmE1NGFkMmNk NTg1NiAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf ZW5jb2Rlci5jCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Vu Y29kZXIuYwo+PiA+IEBAIC0yNDY1LDkgKzI0NjUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQKPj4g PiBfZHB1X2VuY29kZXJfdHJpZ2dlcl9mbHVzaChzdHJ1Y3QKPj4gPiBkcm1fZW5jb2RlciAqZHJt X2VuYywKPj4gPgo+PiA+ICAJcGVuZGluZ19raWNrb2ZmX2NudCA9IGRwdV9lbmNvZGVyX3BoeXNf aW5jX3BlbmRpbmcocGh5cyk7Cj4+ID4KPj4gPiAtCWlmIChwaHlzLT5vcHMuaXNfbWFzdGVyICYm IHBoeXMtPm9wcy5pc19tYXN0ZXIocGh5cykpCj4+ID4gLQkJYXRvbWljX2luYygmcGh5cy0+cGVu ZGluZ19yZXRpcmVfZmVuY2VfY250KTsKPj4gPiAtCj4+ID4gIAlpZiAoZXh0cmFfZmx1c2hfYml0 cyAmJiBjdGwtPm9wcy51cGRhdGVfcGVuZGluZ19mbHVzaCkKPj4gPiAgCQljdGwtPm9wcy51cGRh dGVfcGVuZGluZ19mbHVzaChjdGwsIGV4dHJhX2ZsdXNoX2JpdHMpOwo+PiA+Cj4+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmgKPj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmgKPj4gPiBpbmRleCA2 OWZiMjZjYjQzYWIuLjg2YTM4MDBhZjY3MyAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5oCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaAo+PiA+IEBAIC0yNyw5ICsyNyw3IEBACj4+ID4g ICNkZWZpbmUgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfRE9ORQkJCUJJVCgwKQo+PiA+ICAjZGVm aW5lIERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0VSUk9SCQkJQklUKDEpCj4+ID4gICNkZWZpbmUg RFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfUEFORUxfREVBRAkJQklUKDIpCj4+ID4gLSNkZWZpbmUg RFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JFTEVBU0VfRkVOQ0UJQklUKDMpCj4+ID4g LSNkZWZpbmUgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JFVElSRV9GRU5DRQlCSVQo NCkKPj4gPiAtI2RlZmluZSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9JRExFCQkJQklUKDUpCj4+ ID4gKyNkZWZpbmUgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfSURMRQkJCUJJVCgzKQo+PiA+Cj4+ ID4gICNkZWZpbmUgSURMRV9USU1FT1VUCSg2NiAtIDE2LzIpCj4+ID4KPj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCj4+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKPj4gPiBp bmRleCAzYjA1NTY5MDA3ZDIuLjcxY2QyZjI1ODk5NCAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKPj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKPj4gPiBAQCAtMjQ1 LDggKzI0NSw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9pcnEgewo+PiA+ICAgKgkJCQlzY2hlZHVs ZWQuIERlY3JlbWVudGVkIGluIGlycSBoYW5kbGVyCj4+ID4gICAqIEBwZW5kaW5nX2N0bHN0YXJ0 X2NudDoJQXRvbWljIGNvdW50ZXIgdHJhY2tpbmcgdGhlIG51bWJlciBvZiBjdGwKPj4gPiBzdGFy dAo+PiA+ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmcuCj4+ID4gLSAq IEBwZW5kaW5nX3JldGlyZV9mZW5jZV9jbnQ6ICAgQXRvbWljIGNvdW50ZXIgdHJhY2tpbmcgdGhl IHBlbmRpbmcKPj4gPiByZXRpcmUKPj4gPiAtICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmZW5jZXMgdGhhdCBoYXZlIHRvIGJlIHNpZ25hbGxlZC4KPj4gPiAgICogQHBlbmRpbmdfa2lj a29mZl93cToJCVdhaXQgcXVldWUgZm9yIGJsb2NraW5nIHVudGlsCj4+ID4ga2lja29mZiBjb21w bGV0ZXMKPj4gPiAgICogQGlycToJCQlJUlEgdHJhY2tpbmcgc3RydWN0dXJlcwo+PiA+ICAgKi8K Pj4gPiBAQCAtMjczLDcgKzI3MSw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzIHsKPj4gPiAg CWF0b21pY190IHVuZGVycnVuX2NudDsKPj4gPiAgCWF0b21pY190IHBlbmRpbmdfY3Rsc3RhcnRf Y250Owo+PiA+ICAJYXRvbWljX3QgcGVuZGluZ19raWNrb2ZmX2NudDsKPj4gPiAtCWF0b21pY190 IHBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudDsKPj4gPiAgCXdhaXRfcXVldWVfaGVhZF90IHBlbmRp bmdfa2lja29mZl93cTsKPj4gPiAgCXN0cnVjdCBkcHVfZW5jb2Rlcl9pcnEgaXJxW0lOVFJfSURY X01BWF07Cj4+ID4gIH07Cj4+ID4gQEAgLTMyMyw5ICszMjAsNiBAQCBzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5c19jbWRfYXV0b3JlZnJlc2ggewo+PiA+ICAgKgkJCWFmdGVyIGN0bF9zdGFydCBpbnN0 ZWFkIG9mIGJlZm9yZSBuZXh0IGZyYW1lCj4+ID4ga2lja29mZgo+PiA+ICAgKiBAcHBfdGltZW91 dF9yZXBvcnRfY250OiBudW1iZXIgb2YgcGluZ3BvbmcgZG9uZSBpcnEgdGltZW91dCBlcnJvcnMK Pj4gPiAgICogQGF1dG9yZWZyZXNoOiBhdXRvcmVmcmVzaCBmZWF0dXJlIHN0YXRlCj4+ID4gLSAq IEBwZW5kaW5nX3JkX3B0cl9jbnQ6IGF0b21pYyBjb3VudGVyIHRvIGluZGljYXRlIGlmIHJldGly ZSBmZW5jZQo+IGNhbgo+PiA+IGJlCj4+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgIHNpZ25h bGVkIGF0IHRoZSBuZXh0IHJkX3B0cl9pcnEKPj4gPiAtICogQHJkX3B0cl90aW1lc3RhbXA6IGxh c3QgcmRfcHRyX2lycSB0aW1lc3RhbXAKPj4gPiAgICogQHBlbmRpbmdfdmJsYW5rX2NudDogQXRv bWljIGNvdW50ZXIgdHJhY2tpbmcgcGVuZGluZyB3YWl0IGZvcgo+IFZCTEFOSwo+PiA+ICAgKiBA cGVuZGluZ192Ymxhbmtfd3E6IFdhaXQgcXVldWUgZm9yIGJsb2NraW5nIHVudGlsIFZCTEFOSyBy ZWNlaXZlZAo+PiA+ICAgKi8KPj4gPiBAQCAtMzM1LDggKzMyOSw2IEBAIHN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzX2NtZCB7Cj4+ID4gIAlib29sIHNlcmlhbGl6ZV93YWl0NHBwOwo+PiA+ICAJaW50 IHBwX3RpbWVvdXRfcmVwb3J0X2NudDsKPj4gPiAgCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2Nt ZF9hdXRvcmVmcmVzaCBhdXRvcmVmcmVzaDsKPj4gPiAtCWF0b21pY190IHBlbmRpbmdfcmRfcHRy X2NudDsKPj4gPiAtCWt0aW1lX3QgcmRfcHRyX3RpbWVzdGFtcDsKPj4gPiAgCWF0b21pY190IHBl bmRpbmdfdmJsYW5rX2NudDsKPj4gPiAgCXdhaXRfcXVldWVfaGVhZF90IHBlbmRpbmdfdmJsYW5r X3dxOwo+PiA+ICB9Owo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCj4+ID4gaW5kZXggZTkyMzgwYTFkNWE0Li42 Y2NmMzc4MjBhYTIgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYwo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMKPj4gPiBAQCAtNDQsMTIgKzQ0LDYgQEAK Pj4gPgo+PiA+ICAjZGVmaW5lIERQVV9FTkNfV1JfUFRSX1NUQVJUX1RJTUVPVVRfVVMgMjAwMDAK Pj4gPgo+PiA+IC0vKgo+PiA+IC0gKiBUaHJlc2hvbGQgZm9yIHNpZ25hbGxpbmcgcmV0aXJlIGZl bmNlcyBpbiBjYXNlcyB3aGVyZQo+PiA+IC0gKiBDVExfU1RBUlRfSVJRIGlzIHJlY2VpdmVkIGp1 c3QgYWZ0ZXIgUkRfUFRSX0lSUQo+PiA+IC0gKi8KPj4gPiAtI2RlZmluZSBEUFVfRU5DX0NUTF9T VEFSVF9USFJFU0hPTERfVVMgNTAwCj4+ID4gLQo+PiA+ICBzdGF0aWMgaW5saW5lIGludCBfZHB1 X2VuY29kZXJfcGh5c19jbWRfZ2V0X2lkbGVfdGltZW91dCgKPj4gPiAgCQlzdHJ1Y3QgZHB1X2Vu Y29kZXJfcGh5c19jbWQgKmNtZF9lbmMpCj4+ID4gIHsKPj4gPiBAQCAtMTcwLDggKzE2NCw3IEBA IHN0YXRpYyB2b2lkCj4gZHB1X2VuY29kZXJfcGh5c19jbWRfcHBfdHhfZG9uZV9pcnEodm9pZAo+ PiA+ICphcmcsIGludCBpcnFfaWR4KQo+PiA+ICAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBo eXNfZW5jID0gYXJnOwo+PiA+ICAJdW5zaWduZWQgbG9uZyBsb2NrX2ZsYWdzOwo+PiA+ICAJaW50 IG5ld19jbnQ7Cj4+ID4gLQl1MzIgZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9ET05F IHwKPj4gPiAtCQkJRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JFTEVBU0VfRkVOQ0U7 Cj4+ID4gKwl1MzIgZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9ET05FOwo+PiA+Cj4+ ID4gIAlpZiAoIXBoeXNfZW5jIHx8ICFwaHlzX2VuYy0+aHdfcHApCj4+ID4gIAkJcmV0dXJuOwo+ PiA+IEBAIC0yMjEsNyArMjE0LDYgQEAgc3RhdGljIHZvaWQKPiBkcHVfZW5jb2Rlcl9waHlzX2Nt ZF9wcF9yZF9wdHJfaXJxKHZvaWQKPj4gPiAqYXJnLCBpbnQgaXJxX2lkeCkKPj4gPiAgewo+PiA+ ICAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jID0gYXJnOwo+PiA+ICAJc3RydWN0 IGRwdV9lbmNvZGVyX3BoeXNfY21kICpjbWRfZW5jOwo+PiA+IC0JdTMyIGV2ZW50ID0gMDsKPj4g Pgo+PiA+ICAJaWYgKCFwaHlzX2VuYyB8fCAhcGh5c19lbmMtPmh3X3BwKQo+PiA+ICAJCXJldHVy bjsKPj4gPiBAQCAtMjI5LDMwICsyMjEsMTAgQEAgc3RhdGljIHZvaWQKPj4gPiBkcHVfZW5jb2Rl cl9waHlzX2NtZF9wcF9yZF9wdHJfaXJxKHZvaWQKPj4gPiAqYXJnLCBpbnQgaXJxX2lkeCkKPj4g PiAgCURQVV9BVFJBQ0VfQkVHSU4oInJkX3B0cl9pcnEiKTsKPj4gPiAgCWNtZF9lbmMgPSB0b19k cHVfZW5jb2Rlcl9waHlzX2NtZChwaHlzX2VuYyk7Cj4+ID4KPj4gPiAtCS8qKgo+PiA+IC0JICog c2lnbmFsIG9ubHkgZm9yIG1hc3Rlciwgd2hlbiB0aGUgY3RsX3N0YXJ0IGlycSBpcwo+PiA+IC0J ICogZG9uZSBhbmQgaW5jcmVtZW50ZWQgdGhlIHBlbmRpbmdfcmRfcHRyX2NudC4KPj4gPiAtCSAq Lwo+PiA+IC0JaWYgKGRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX21hc3RlcihwaHlzX2VuYykKPj4g PiAtCQkgICAgJiYgYXRvbWljX2FkZF91bmxlc3MoJmNtZF9lbmMtPnBlbmRpbmdfcmRfcHRyX2Nu dCwgLTEsCj4+ID4gMCkKPj4gPiAtCQkgICAgJiYgYXRvbWljX2FkZF91bmxlc3MoCj4+ID4gLQkJ CQkmcGh5c19lbmMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCwgLTEsCj4+ID4gMCkpIHsKPj4g PiAtCj4+ID4gLQkJZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxfUkVUSVJF X0ZFTkNFOwo+PiA+IC0JCWlmIChwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVfZnJhbWVfZG9u ZSkKPj4gPiAtCQkJcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUoCj4+ID4g LQkJCQlwaHlzX2VuYy0+cGFyZW50LCBwaHlzX2VuYywgZXZlbnQpOwo+PiA+IC0JfQo+PiA+IC0K Pj4gPiAtCURQVV9FVlQzMl9JUlEoRFJNSUQocGh5c19lbmMtPnBhcmVudCksCj4+ID4gLQkJCXBo eXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCwgZXZlbnQsIDB4ZmZmKTsKPj4gPiAtCj4+ ID4gIAlpZiAocGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX3ZibGFua192aXJ0KQo+PiA+ICAJ CXBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV92YmxhbmtfdmlydChwaHlzX2VuYy0+cGFyZW50 LAo+PiA+ICAJCQlwaHlzX2VuYyk7Cj4+ID4KPj4gPiAtCWNtZF9lbmMtPnJkX3B0cl90aW1lc3Rh bXAgPSBrdGltZV9nZXQoKTsKPj4gPiAtCj4+ID4gIAlhdG9taWNfYWRkX3VubGVzcygmY21kX2Vu Yy0+cGVuZGluZ192YmxhbmtfY250LCAtMSwgMCk7Cj4+ID4gIAl3YWtlX3VwX2FsbCgmY21kX2Vu Yy0+cGVuZGluZ192Ymxhbmtfd3EpOwo+PiA+ICAJRFBVX0FUUkFDRV9FTkQoInJkX3B0cl9pcnEi KTsKPj4gPiBAQCAtMjYyLDkgKzIzNCw2IEBAIHN0YXRpYyB2b2lkCj4gZHB1X2VuY29kZXJfcGh5 c19jbWRfY3RsX3N0YXJ0X2lycSh2b2lkCj4+ID4gKmFyZywgaW50IGlycV9pZHgpCj4+ID4gIHsK Pj4gPiAgCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYyA9IGFyZzsKPj4gPiAgCXN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2NtZCAqY21kX2VuYzsKPj4gPiAtCXN0cnVjdCBkcHVfaHdf Y3RsICpjdGw7Cj4+ID4gLQl1MzIgZXZlbnQgPSAwOwo+PiA+IC0JczY0IHRpbWVfZGlmZl91czsK Pj4gPgo+PiA+ICAJaWYgKCFwaHlzX2VuYyB8fCAhcGh5c19lbmMtPmh3X2N0bCkKPj4gPiAgCQly ZXR1cm47Cj4+ID4gQEAgLTI3Miw0MyArMjQxLDggQEAgc3RhdGljIHZvaWQKPiBkcHVfZW5jb2Rl cl9waHlzX2NtZF9jdGxfc3RhcnRfaXJxKHZvaWQKPj4gPiAqYXJnLCBpbnQgaXJxX2lkeCkKPj4g PiAgCURQVV9BVFJBQ0VfQkVHSU4oImN0bF9zdGFydF9pcnEiKTsKPj4gPiAgCWNtZF9lbmMgPSB0 b19kcHVfZW5jb2Rlcl9waHlzX2NtZChwaHlzX2VuYyk7Cj4+ID4KPj4gPiAtCWN0bCA9IHBoeXNf ZW5jLT5od19jdGw7Cj4+ID4gIAlhdG9taWNfYWRkX3VubGVzcygmcGh5c19lbmMtPnBlbmRpbmdf Y3Rsc3RhcnRfY250LCAtMSwgMCk7Cj4+ID4KPj4gPiAtCXRpbWVfZGlmZl91cyA9IGt0aW1lX3Vz X2RlbHRhKGt0aW1lX2dldCgpLAo+PiA+IGNtZF9lbmMtPnJkX3B0cl90aW1lc3RhbXApOwo+PiA+ IC0KPj4gPiAtCS8qIGhhbmRsZSByZXRpcmUgZmVuY2UgYmFzZWQgb24gb25seSBtYXN0ZXIgKi8K Pj4gPiAtCWlmIChkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpCj4+ID4g LQkJCSYmCj4+ID4gYXRvbWljX3JlYWQoJnBoeXNfZW5jLT5wZW5kaW5nX3JldGlyZV9mZW5jZV9j bnQpKSB7Cj4+ID4gLQkJLyoqCj4+ID4gLQkJICogSGFuZGxlIHJhcmUgY2FzZXMgd2hlcmUgdGhl IGN0bF9zdGFydF9pcnEgaXMgcmVjZWl2ZWQKPj4gPiAtCQkgKiBhZnRlciByZF9wdHJfaXJxLiBJ ZiBpdCBmYWxscyB3aXRoaW4gYSB0aHJlc2hvbGQsIGl0IGlzCj4+ID4gLQkJICogZ3VhcmFudGVl ZCB0aGUgZnJhbWUgd291bGQgYmUgcGlja2VkIHVwIGluIHRoZSBjdXJyZW50Cj4+ID4gVEUuCj4+ ID4gLQkJICogU2lnbmFsIHJldGlyZSBmZW5jZSBpbW1lZGlhdGVseSBpbiBzdWNoIGNhc2UuCj4+ ID4gLQkJICovCj4+ID4gLQkJaWYgKCh0aW1lX2RpZmZfdXMgPD0gRFBVX0VOQ19DVExfU1RBUlRf VEhSRVNIT0xEX1VTKQo+PiA+IC0JCQkgICAgJiYgYXRvbWljX2FkZF91bmxlc3MoCj4+ID4gLQkJ CQkmcGh5c19lbmMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCwgLTEsCj4+ID4gMCkpIHsKPj4g PiAtCj4+ID4gLQkJCWV2ZW50ID0KPj4gPiBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxf UkVUSVJFX0ZFTkNFOwo+PiA+IC0KPj4gPiAtCQkJaWYgKHBoeXNfZW5jLT5wYXJlbnRfb3BzLmhh bmRsZV9mcmFtZV9kb25lKQo+PiA+IC0JCQkJcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2Zy YW1lX2RvbmUoCj4+ID4gLQkJCQkJcGh5c19lbmMtPnBhcmVudCwgcGh5c19lbmMsCj4+ID4gZXZl bnQpOwo+PiA+IC0KPj4gPiAtCQkvKioKPj4gPiAtCQkgKiBJbiBpZGVhbCBjYXNlcywgY3RsX3N0 YXJ0X2lycSBpcyByZWNlaXZlZCBiZWZvcmUgdGhlCj4+ID4gLQkJICogcmRfcHRyX2lycSwgc28g c2V0IHRoZSBhdG9taWMgZmxhZyB0byBpbmRpY2F0ZSB0aGUKPj4gPiBldmVudAo+PiA+IC0JCSAq IGFuZCByZF9wdHJfaXJxIHdpbGwgaGFuZGxlIHNpZ25hbGxpbmcgdGhlIHJldGlyZSBmZW5jZQo+ PiA+IC0JCSAqLwo+PiA+IC0JCX0gZWxzZSB7Cj4+ID4gLQkJCWF0b21pY19pbmMoJmNtZF9lbmMt PnBlbmRpbmdfcmRfcHRyX2NudCk7Cj4+ID4gLQkJfQo+PiA+IC0JfQo+PiA+IC0KPj4gPiAtCURQ VV9FVlQzMl9JUlEoRFJNSUQocGh5c19lbmMtPnBhcmVudCksIGN0bC0+aWR4IC0gQ1RMXzAsCj4+ ID4gLQkJCQl0aW1lX2RpZmZfdXMsIGV2ZW50LCAweGZmZik7Cj4+ID4gLQo+PiA+ICAJLyogU2ln bmFsIGFueSB3YWl0aW5nIGN0bCBzdGFydCBpbnRlcnJ1cHQgKi8KPj4gPiAgCXdha2VfdXBfYWxs KCZwaHlzX2VuYy0+cGVuZGluZ19raWNrb2ZmX3dxKTsKPj4gPiAgCURQVV9BVFJBQ0VfRU5EKCJj dGxfc3RhcnRfaXJxIik7Cj4+ID4gQEAgLTQwOSw4ICszNDMsNyBAQCBzdGF0aWMgaW50Cj4+ID4g X2RwdV9lbmNvZGVyX3BoeXNfY21kX2hhbmRsZV9wcGRvbmVfdGltZW91dCgKPj4gPiAgewo+PiA+ ICAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfY21kICpjbWRfZW5jID0KPj4gPiAgCQkJdG9fZHB1 X2VuY29kZXJfcGh5c19jbWQocGh5c19lbmMpOwo+PiA+IC0JdTMyIGZyYW1lX2V2ZW50ID0gRFBV X0VOQ09ERVJfRlJBTUVfRVZFTlRfRVJST1IKPj4gPiAtCQkJCXwKPj4gPiBEUFVfRU5DT0RFUl9G UkFNRV9FVkVOVF9TSUdOQUxfUkVMRUFTRV9GRU5DRTsKPj4gPiArCXUzMiBmcmFtZV9ldmVudCA9 IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0VSUk9SOwo+PiA+ICAJYm9vbCBkb19sb2cgPSBmYWxz ZTsKPj4gPgo+PiA+ICAJaWYgKCFwaHlzX2VuYyB8fCAhcGh5c19lbmMtPmh3X3BwIHx8ICFwaHlz X2VuYy0+aHdfY3RsKQo+PiA+IEBAIC0xMzQ2LDggKzEyNzksNiBAQCBzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5cwo+PiA+ICpkcHVfZW5jb2Rlcl9waHlzX2NtZF9pbml0KAo+PiA+ICAJYXRvbWljX3Nl dCgmcGh5c19lbmMtPnZibGFua19yZWZjb3VudCwgMCk7Cj4+ID4gIAlhdG9taWNfc2V0KCZwaHlz X2VuYy0+cGVuZGluZ19raWNrb2ZmX2NudCwgMCk7Cj4+ID4gIAlhdG9taWNfc2V0KCZwaHlzX2Vu Yy0+cGVuZGluZ19jdGxzdGFydF9jbnQsIDApOwo+PiA+IC0JYXRvbWljX3NldCgmcGh5c19lbmMt PnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCwgMCk7Cj4+ID4gLQlhdG9taWNfc2V0KCZjbWRfZW5j LT5wZW5kaW5nX3JkX3B0cl9jbnQsIDApOwo+PiA+ICAJYXRvbWljX3NldCgmY21kX2VuYy0+cGVu ZGluZ192YmxhbmtfY250LCAwKTsKPj4gPiAgCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnBoeXNfZW5j LT5wZW5kaW5nX2tpY2tvZmZfd3EpOwo+PiA+ICAJaW5pdF93YWl0cXVldWVfaGVhZCgmY21kX2Vu Yy0+cGVuZGluZ192Ymxhbmtfd3EpOwo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCj4+ID4gYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCj4+ID4gaW5kZXggNjJjNmY1 YzM1NDdhLi5lZGFhZDA0MTM5ODcgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKPj4gPiBAQCAtMzczLDEz ICszNzMsMTAgQEAgc3RhdGljIHZvaWQKPj4gPiBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9zZXR1cF90 aW1pbmdfZW5naW5lKAo+PiA+ICBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF92Ymxh bmtfaXJxKHZvaWQgKmFyZywgaW50IGlycV9pZHgpCj4+ID4gIHsKPj4gPiAgCXN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICpwaHlzX2VuYyA9IGFyZzsKPj4gPiAtCXN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzX3ZpZCAqdmlkX2VuYyA9Cj4+ID4gLQkJCXRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNf ZW5jKTsKPj4gPiAgCXN0cnVjdCBkcHVfaHdfY3RsICpod19jdGw7Cj4+ID4gIAl1bnNpZ25lZCBs b25nIGxvY2tfZmxhZ3M7Cj4+ID4gIAl1MzIgZmx1c2hfcmVnaXN0ZXIgPSAwOwo+PiA+ICAJaW50 IG5ld19jbnQgPSAtMSwgb2xkX2NudCA9IC0xOwo+PiA+IC0JdTMyIGV2ZW50ID0gMDsKPj4gPgo+ PiA+ICAJaWYgKCFwaHlzX2VuYykKPj4gPiAgCQlyZXR1cm47Cj4+ID4gQEAgLTM5MCwxOCArMzg3 LDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfdmJsYW5rX2lycSh2b2lkCj4+ ID4gKmFyZywgaW50IGlycV9pZHgpCj4+ID4KPj4gPiAgCURQVV9BVFJBQ0VfQkVHSU4oInZibGFu a19pcnEiKTsKPj4gPgo+PiA+IC0JLyogc2lnbmFsIG9ubHkgZm9yIG1hc3Rlciwgd2hlcmUgdGhl cmUgaXMgYSBwZW5kaW5nIGtpY2tvZmYgKi8KPj4gPiAtCWlmIChkcHVfZW5jb2Rlcl9waHlzX3Zp ZF9pc19tYXN0ZXIocGh5c19lbmMpCj4+ID4gLQkJCSYmIGF0b21pY19hZGRfdW5sZXNzKAo+PiA+ IC0JCQkJJnBoeXNfZW5jLT5wZW5kaW5nX3JldGlyZV9mZW5jZV9jbnQsIC0xLAo+PiA+IDApKSB7 Cj4+ID4gLQkJZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxfUkVMRUFTRV9G RU5DRQo+PiA+IC0JCQkJfAo+PiA+IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX1NJR05BTF9SRVRJ UkVfRkVOQ0U7Cj4+ID4gLQo+PiA+IC0JCWlmIChwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVf ZnJhbWVfZG9uZSkKPj4gPiAtCj4+ID4gcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1l X2RvbmUocGh5c19lbmMtPnBhcmVudCwKPj4gPiAtCQkJCXBoeXNfZW5jLCBldmVudCk7Cj4+ID4g LQl9Cj4+ID4gLQo+PiA+ICAJaWYgKHBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV92Ymxhbmtf dmlydCkKPj4gPiAgCQlwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVfdmJsYW5rX3ZpcnQocGh5 c19lbmMtPnBhcmVudCwKPj4gPiAgCQkJCXBoeXNfZW5jKTsKPj4gPiBAQCAtNDIyLDkgKzQwNyw2 IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX3ZibGFua19pcnEodm9pZAo+PiA+ ICphcmcsCj4+ID4gaW50IGlycV9pZHgpCj4+ID4gIAkJCQktMSwgMCk7Cj4+ID4gIAlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKHBoeXNfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwo+PiA+ Cj4+ID4gLQlEUFVfRVZUMzJfSVJRKERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLCB2aWRfZW5jLT5o d19pbnRmLT5pZHggLQo+PiA+IElOVEZfMCwKPj4gPiAtCQkJb2xkX2NudCwgbmV3X2NudCwgZmx1 c2hfcmVnaXN0ZXIsIGV2ZW50KTsKPj4gPiAtCj4+ID4gIAkvKiBTaWduYWwgYW55IHdhaXRpbmcg YXRvbWljIGNvbW1pdCB0aHJlYWQgKi8KPj4gPiAgCXdha2VfdXBfYWxsKCZwaHlzX2VuYy0+cGVu ZGluZ19raWNrb2ZmX3dxKTsKPj4gPiAgCURQVV9BVFJBQ0VfRU5EKCJ2YmxhbmtfaXJxIik7Cj4+ ID4gQEAgLTEwMjgsNyArMTAxMCw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzCj4+ID4gKmRw dV9lbmNvZGVyX3BoeXNfdmlkX2luaXQoCj4+ID4KPj4gPiAgCWF0b21pY19zZXQoJnBoeXNfZW5j LT52YmxhbmtfcmVmY291bnQsIDApOwo+PiA+ICAJYXRvbWljX3NldCgmcGh5c19lbmMtPnBlbmRp bmdfa2lja29mZl9jbnQsIDApOwo+PiA+IC0JYXRvbWljX3NldCgmcGh5c19lbmMtPnBlbmRpbmdf cmV0aXJlX2ZlbmNlX2NudCwgMCk7Cj4+ID4gIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZwaHlzX2Vu Yy0+cGVuZGluZ19raWNrb2ZmX3dxKTsKPj4gPiAgCXBoeXNfZW5jLT5lbmFibGVfc3RhdGUgPSBE UFVfRU5DX0RJU0FCTEVEOwo+PiA+Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfd2IuYwo+PiA+IGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c193Yi5jCj4+ID4gaW5kZXggOWE2ZmEzZTFl OGI0Li4yYmM1ODk0ODM5YzQgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c193Yi5jCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c193Yi5jCj4+ID4gQEAgLTY4MCwxMSArNjgw LDggQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c193Yl9kb25lX2lycSh2b2lkCj4gKmFy ZywKPj4gPiBpbnQgaXJxX2lkeCkKPj4gPiAgCWlmIChwaHlzX2VuYy0+ZW5hYmxlX3N0YXRlID09 IERQVV9FTkNfRElTQUJMSU5HKQo+PiA+ICAJCWdvdG8gY29tcGxldGU7Cj4+ID4KPj4gPiAtCWV2 ZW50ID0gRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JFTEVBU0VfRkVOQ0UKPj4gPiAt CQkJfCBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxfUkVUSVJFX0ZFTkNFCj4+ID4gLQkJ CXwgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfRE9ORTsKPj4gPiArCWV2ZW50ID0gRFBVX0VOQ09E RVJfRlJBTUVfRVZFTlRfRE9ORTsKPj4gPgo+PiA+IC0JYXRvbWljX2FkZF91bmxlc3MoJnBoeXNf ZW5jLT5wZW5kaW5nX3JldGlyZV9mZW5jZV9jbnQsIC0xLCAwKTsKPj4gPiAgCWlmIChwaHlzX2Vu Yy0+cGFyZW50X29wcy5oYW5kbGVfZnJhbWVfZG9uZSkKPj4gPiAgCQlwaHlzX2VuYy0+cGFyZW50 X29wcy5oYW5kbGVfZnJhbWVfZG9uZShwaHlzX2VuYy0+cGFyZW50LAo+PiA+ICAJCQkJcGh5c19l bmMsIGV2ZW50KTsKPj4gPiBAQCAtODQ3LDEyICs4NDQsOCBAQCBzdGF0aWMgaW50Cj4+ID4gZHB1 X2VuY29kZXJfcGh5c193Yl93YWl0X2Zvcl9jb21taXRfZG9uZSgKPj4gPiAgCQl9IGVsc2Ugewo+ PiA+ICAJCQlEUFVfRVJST1IoIndiOiVkIGtpY2tvZmYgdGltZWQgb3V0XG4iLAo+PiA+ICAJCQkJ CXdiX2VuYy0+d2JfZGV2LT53Yl9pZHggLSBXQl8wKTsKPj4gPiAtCQkJYXRvbWljX2FkZF91bmxl c3MoCj4+ID4gLQkJCQkmcGh5c19lbmMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCwgLTEsCj4+ ID4gMCk7Cj4+ID4KPj4gPiAtCQkJZXZlbnQgPQo+PiA+IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5U X1NJR05BTF9SRUxFQVNFX0ZFTkNFCj4+ID4gLQkJCQl8Cj4+ID4gRFBVX0VOQ09ERVJfRlJBTUVf RVZFTlRfU0lHTkFMX1JFVElSRV9GRU5DRQo+PiA+IC0JCQkJfCBEUFVfRU5DT0RFUl9GUkFNRV9F VkVOVF9FUlJPUjsKPj4gPiArCQkJZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9FUlJP UjsKPj4gPiAgCQkJaWYgKHBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV9mcmFtZV9kb25lKQo+ PiA+ICAJCQkJcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUoCj4+ID4gIAkJ CQkJcGh5c19lbmMtPnBhcmVudCwgcGh5c19lbmMsCj4+ID4gZXZlbnQpOwo+PiA+IEBAIC0xMzMz LDcgKzEzMjYsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cwo+ICpkcHVfZW5jb2Rlcl9waHlz X3diX2luaXQoCj4+ID4gIAlwaHlzX2VuYy0+aW50Zl9tb2RlID0gSU5URl9NT0RFX1dCX0xJTkU7 Cj4+ID4gIAlwaHlzX2VuYy0+aW50Zl9pZHggPSBwLT5pbnRmX2lkeDsKPj4gPiAgCXBoeXNfZW5j LT5lbmNfc3BpbmxvY2sgPSBwLT5lbmNfc3BpbmxvY2s7Cj4+ID4gLQlhdG9taWNfc2V0KCZwaHlz X2VuYy0+cGVuZGluZ19yZXRpcmVfZmVuY2VfY250LCAwKTsKPj4gPiAgCUlOSVRfTElTVF9IRUFE KCZ3Yl9lbmMtPmlycV9jYi5saXN0KTsKPj4gPgo+PiA+ICAJLyogY3JlYXRlIGludGVybmFsIGJ1 ZmZlciBmb3IgZGlzYWJsZSBsb2dpYyAqLwo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9rbXMuYwo+PiA+IGluZGV4IDNkODMwMzdlODMwNS4uOWQ2ODAzMDM3OGE3IDEw MDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwo+ PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYwo+PiA+IEBA IC01NDUsMzUgKzU0NSw2IEBAIHN0YXRpYyB2b2lkIGRwdV9rbXNfd2FpdF9mb3JfY29tbWl0X2Rv bmUoc3RydWN0Cj4+ID4gbXNtX2ttcyAqa21zLAo+PiA+ICAJfQo+PiA+ICB9Cj4+ID4KPj4gPiAt c3RhdGljIHZvaWQgZHB1X2ttc19wcmVwYXJlX2ZlbmNlKHN0cnVjdCBtc21fa21zICprbXMsCj4+ ID4gLQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPj4gPiAtewo+PiA+IC0J c3RydWN0IGRybV9jcnRjICpjcnRjOwo+PiA+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZTsKPj4gPiAtCWludCBpLCByYzsKPj4gPiAtCj4+ID4gLQlpZiAoIWttcyB8fCAh b2xkX3N0YXRlIHx8ICFvbGRfc3RhdGUtPmRldiB8fAo+PiA+ICFvbGRfc3RhdGUtPmFjcXVpcmVf Y3R4KSB7Cj4+ID4gLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50KHMpXG4iKTsKPj4gPiAt CQlyZXR1cm47Cj4+ID4gLQl9Cj4+ID4gLQo+PiA+IC1yZXRyeToKPj4gPiAtCS8qIGF0dGVtcHQg dG8gYWNxdWlyZSB3dyBtdXRleCBmb3IgY29ubmVjdGlvbiAqLwo+PiA+IC0JcmMgPQo+PiA+IGRy bV9tb2Rlc2V0X2xvY2soJm9sZF9zdGF0ZS0+ZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211 dGV4LAo+PiA+IC0JCQkgICAgICAgb2xkX3N0YXRlLT5hY3F1aXJlX2N0eCk7Cj4+ID4gLQo+PiA+ IC0JaWYgKHJjID09IC1FREVBRExLKSB7Cj4+ID4gLQkJZHJtX21vZGVzZXRfYmFja29mZihvbGRf c3RhdGUtPmFjcXVpcmVfY3R4KTsKPj4gPiAtCQlnb3RvIHJldHJ5Owo+PiA+IC0JfQo+PiA+IC0K Pj4gPiAtCS8qIG9sZF9zdGF0ZSBhY3R1YWxseSBjb250YWlucyB1cGRhdGVkIGNydGMgcG9pbnRl cnMgKi8KPj4gPiAtCWZvcl9lYWNoX29sZF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywg b2xkX2NydGNfc3RhdGUsIGkpIHsKPj4gPiAtCQlpZiAoY3J0Yy0+c3RhdGUtPmFjdGl2ZSkKPj4g PiAtCQkJZHB1X2NydGNfcHJlcGFyZV9jb21taXQoY3J0Yywgb2xkX2NydGNfc3RhdGUpOwo+PiA+ IC0JfQo+PiA+IC19Cj4+ID4gLQo+PiA+ICAvKioKPj4gPiAgICogX2RwdV9rbXNfZ2V0X2Rpc3Bs YXlzIC0gcXVlcnkgZm9yIHVuZGVybHlpbmcgZGlzcGxheSBoYW5kbGVzIGFuZAo+PiA+IGNhY2hl Cj4+ID4gdGhlbQo+PiA+ICAgKiBAZHB1X2ttczogICAgUG9pbnRlciB0byBkcHUga21zIHN0cnVj dHVyZQo+PiA+IEBAIC0xNzM0LDcgKzE3MDUsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1zbV9r bXNfZnVuY3Mga21zX2Z1bmNzID0gewo+PiA+ICAJLmlycV91bmluc3RhbGwgICA9IGRwdV9pcnFf dW5pbnN0YWxsLAo+PiA+ICAJLmlycSAgICAgICAgICAgICA9IGRwdV9pcnEsCj4+ID4gIAkucHJl Y2xvc2UgICAgICAgID0gZHB1X2ttc19wcmVjbG9zZSwKPj4gPiAtCS5wcmVwYXJlX2ZlbmNlICAg PSBkcHVfa21zX3ByZXBhcmVfZmVuY2UsCj4+ID4gIAkucHJlcGFyZV9jb21taXQgID0gZHB1X2tt c19wcmVwYXJlX2NvbW1pdCwKPj4gPiAgCS5jb21taXQgICAgICAgICAgPSBkcHVfa21zX2NvbW1p dCwKPj4gPiAgCS5jb21wbGV0ZV9jb21taXQgPSBkcHVfa21zX2NvbXBsZXRlX2NvbW1pdCwKPj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPj4gPiBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4+ID4gaW5kZXggOGNhYjMzM2RmNzE3Li5lOTIzNzZh Y2JjZmUgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaAo+PiA+IEBAIC0xMzIsOCArMTMy LDYgQEAgZW51bSBtc21fbWRwX2NydGNfcHJvcGVydHkgewo+PiA+Cj4+ID4gIAkvKiByYW5nZSBw cm9wZXJ0aWVzICovCj4+ID4gIAlDUlRDX1BST1BfSU5QVVRfRkVOQ0VfVElNRU9VVCA9IENSVENf UFJPUF9CTE9CQ09VTlQsCj4+ID4gLQlDUlRDX1BST1BfT1VUUFVUX0ZFTkNFLAo+PiA+IC0JQ1JU Q19QUk9QX09VVFBVVF9GRU5DRV9PRkZTRVQsCj4+ID4gIAlDUlRDX1BST1BfRElNX0xBWUVSX1Yx LAo+PiA+ICAJQ1JUQ19QUk9QX0NPUkVfQ0xLLAo+PiA+ICAJQ1JUQ19QUk9QX0NPUkVfQUIsCj4+ ID4gQEAgLTE2Myw3ICsxNjEsNiBAQCBlbnVtIG1zbV9tZHBfY29ubl9wcm9wZXJ0eSB7Cj4+ID4K Pj4gPiAgCS8qIHJhbmdlIHByb3BlcnRpZXMgKi8KPj4gPiAgCUNPTk5FQ1RPUl9QUk9QX09VVF9G QiA9IENPTk5FQ1RPUl9QUk9QX0JMT0JDT1VOVCwKPj4gPiAtCUNPTk5FQ1RPUl9QUk9QX1JFVElS RV9GRU5DRSwKPj4gPiAgCUNPTk5FQ1RPUl9QUk9QX0RTVF9YLAo+PiA+ICAJQ09OTkVDVE9SX1BS T1BfRFNUX1ksCj4+ID4gIAlDT05ORUNUT1JfUFJPUF9EU1RfVywKPj4gCj4+IC0tCj4+IEpleWt1 bWFyIFMKCi0tIApKZXlrdW1hciBTCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=