From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 17/22] drm/i915: Pull i915_gem_active into the i915_active family Date: Mon, 4 Feb 2019 18:50:19 +0000 Message-ID: References: <20190204132214.9459-1-chris@chris-wilson.co.uk> <20190204132214.9459-18-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id A788B890E9 for ; Mon, 4 Feb 2019 18:50:14 +0000 (UTC) In-Reply-To: <20190204132214.9459-18-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDA0LzAyLzIwMTkgMTM6MjIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBMb29raW5nIGZvcndh cmQsIHdlIG5lZWQgdG8gYnJlYWsgdGhlIHN0cnVjdF9tdXRleCBkZXBlbmRlbmN5IG9uCj4gaTkx NV9nZW1fYWN0aXZlLiBJbiB0aGUgbWVhbnRpbWUsIGV4dGVybmFsIHVzZSBvZiBpOTE1X2dlbV9h Y3RpdmUgaXMKPiBxdWl0ZSBiZWd1aWxpbmcsIGxpdHRsZSBkbyBuZXcgdXNlcnMgc3VzcGVjdCB0 aGF0IGl0IGltcGxpZXMgYSBiYXJyaWVyCj4gYXMgZWFjaCByZXF1ZXN0IGl0IHRyYWNrcyBtdXN0 IGJlIG9yZGVyZWQgd3J0IHRoZSBwcmV2aW91cyBvbmUuIEFzIG9uZQo+IG9mIG1hbnksIGl0IGNh biBiZSB1c2VkIHRvIHRyYWNrIGFjdGl2aXR5IGFjcm9zcyBtdWx0aXBsZSB0aW1lbGluZXMsIGEK PiBzaGFyZWQgZmVuY2UsIHdoaWNoIGZpdHMgb3VyIHVub3JkZXJlZCByZXF1ZXN0IHN1Ym1pc3Np b24gbXVjaCBiZXR0ZXIuIFdlCj4gbmVlZCB0byBzdGVlciBleHRlcm5hbCB1c2VycyBhd2F5IGZy b20gdGhlIHNpbmd1bGFyLCBleGNsdXNpdmUgZmVuY2UKPiBpbXBvc2VkIGJ5IGk5MTVfZ2VtX2Fj dGl2ZSB0byBpOTE1X2FjdGl2ZSBpbnN0ZWFkLiBBcyBwYXJ0IG9mIHRoYXQKPiBwcm9jZXNzLCB3 ZSBtb3ZlIGk5MTVfZ2VtX2FjdGl2ZSBvdXQgb2YgaTkxNV9yZXF1ZXN0LmMgaW50bwo+IGk5MTVf YWN0aXZlLmMgdG8gc3RhcnQgc2VwYXJhdGluZyB0aGUgdHdvIGNvbmNlcHRzLCBhbmQgcmVuYW1l IGl0IHRvCj4gaTkxNV9hY3RpdmVfcmVxdWVzdCAoYm90aCB0byB0aWUgaXQgdG8gdGhlIGNvbmNl cHQgb2YgdHJhY2tpbmcganVzdCBvbmUKPiByZXF1ZXN0LCBhbmQgdG8gZ2l2ZSBpdCBhIGxvbmdl ciwgbGVzcyBhcHBlYWxpbmcgbmFtZSkuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29u IDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpBc3N1bWluZyB0aGUgcGF0Y2ggd2FzIHVuY2hh bmdlZCwgSSdsbCBjb3B5JnBhc3RlIGZyb20gbGFzdCByb3VuZDoKClJldmlld2VkLWJ5OiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwoK PiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMgICAgICAgICAgICB8 ICA2MiArKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmggICAgICAgICAg ICB8IDM0OSArKysrKysrKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Fj dGl2ZV90eXBlcy5oICAgICAgfCAgMTYgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jICAgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyAgICAgICAgICAgICAgIHwgIDEwICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jICAgICB8ICAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9vYmplY3QuaCAgICAgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICAgICB8ICAxMCArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICAgIHwgIDM1ICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCAgICAgICAgICAgfCAzODMgLS0tLS0tLS0tLS0tLS0t LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMgICAgICAgICAgICAgfCAg IDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYyAgICAgICAgICB8 ICAyNSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oICAgICAgICAg IHwgIDE0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jICAgICAgICAgICAg ICAgfCAgMTIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggICAgICAgICAg ICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMg ICAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMg ICAgICAgICAgfCAgMzMgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF9scmMuYyAgICB8ICAgNCArLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja190 aW1lbGluZS5jICAgIHwgICA0ICstCj4gICAyMSBmaWxlcyBjaGFuZ2VkLCA0NzQgaW5zZXJ0aW9u cygrKSwgNTAzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2FjdGl2ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwo+ IGluZGV4IGQyMzA5MmQ4Yzg5Zi4uODQ2OTAwNTM1ZDEwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2FjdGl2ZS5jCj4gQEAgLTIxLDcgKzIxLDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2dsb2Jh bF9hY3RpdmUgewo+ICAgfSBnbG9iYWw7Cj4gICAKPiAgIHN0cnVjdCBhY3RpdmVfbm9kZSB7Cj4g LQlzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlIGJhc2U7Cj4gKwlzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVx dWVzdCBiYXNlOwo+ICAgCXN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmOwo+ICAgCXN0cnVjdCByYl9u b2RlIG5vZGU7Cj4gICAJdTY0IHRpbWVsaW5lOwo+IEBAIC0zMyw3ICszMyw3IEBAIF9fYWN0aXZl X3Bhcmsoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpCj4gICAJc3RydWN0IGFjdGl2ZV9ub2RlICpp dCwgKm47Cj4gICAKPiAgIAlyYnRyZWVfcG9zdG9yZGVyX2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXQs IG4sICZyZWYtPnRyZWUsIG5vZGUpIHsKPiAtCQlHRU1fQlVHX09OKGk5MTVfZ2VtX2FjdGl2ZV9p c3NldCgmaXQtPmJhc2UpKTsKPiArCQlHRU1fQlVHX09OKGk5MTVfYWN0aXZlX3JlcXVlc3RfaXNz ZXQoJml0LT5iYXNlKSk7Cj4gICAJCWttZW1fY2FjaGVfZnJlZShnbG9iYWwuc2xhYl9jYWNoZSwg aXQpOwo+ICAgCX0KPiAgIAlyZWYtPnRyZWUgPSBSQl9ST09UOwo+IEBAIC01MywxOCArNTMsMTgg QEAgX19hY3RpdmVfcmV0aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQo+ICAgfQo+ICAgCj4g ICBzdGF0aWMgdm9pZAo+IC1ub2RlX3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICpiYXNl LCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiArbm9kZV9yZXRpcmUoc3RydWN0IGk5MTVfYWN0 aXZlX3JlcXVlc3QgKmJhc2UsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgewo+ICAgCV9f YWN0aXZlX3JldGlyZShjb250YWluZXJfb2YoYmFzZSwgc3RydWN0IGFjdGl2ZV9ub2RlLCBiYXNl KS0+cmVmKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQKPiAtbGFzdF9yZXRpcmUoc3RydWN0 IGk5MTVfZ2VtX2FjdGl2ZSAqYmFzZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK2xhc3Rf cmV0aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICpiYXNlLCBzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKPiAgIHsKPiAgIAlfX2FjdGl2ZV9yZXRpcmUoY29udGFpbmVyX29mKGJhc2UsIHN0 cnVjdCBpOTE1X2FjdGl2ZSwgbGFzdCkpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkx NV9nZW1fYWN0aXZlICoKPiArc3RhdGljIHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICoKPiAg IGFjdGl2ZV9pbnN0YW5jZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwgdTY0IGlkeCkKPiAgIHsK PiAgIAlzdHJ1Y3QgYWN0aXZlX25vZGUgKm5vZGU7Cj4gQEAgLTg1LDcgKzg1LDcgQEAgYWN0aXZl X2luc3RhbmNlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLCB1NjQgaWR4KQo+ICAgCSAqIHR3aWNl IGZvciB0aGUgc2FtZSB0aW1lbGluZSAoYXMgdGhlIG9sZGVyIHJidHJlZSBlbGVtZW50IHdpbGwg YmUKPiAgIAkgKiByZXRpcmVkIGJlZm9yZSB0aGUgbmV3IHJlcXVlc3QgYWRkZWQgdG8gbGFzdCku Cj4gICAJICovCj4gLQlvbGQgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZyZWYtPmxhc3QsIEJLTChy ZWYpKTsKPiArCW9sZCA9IGk5MTVfYWN0aXZlX3JlcXVlc3RfcmF3KCZyZWYtPmxhc3QsIEJLTChy ZWYpKTsKPiAgIAlpZiAoIW9sZCB8fCBvbGQtPmZlbmNlLmNvbnRleHQgPT0gaWR4KQo+ICAgCQln b3RvIG91dDsKPiAgIAo+IEBAIC0xMTAsNyArMTEwLDcgQEAgYWN0aXZlX2luc3RhbmNlKHN0cnVj dCBpOTE1X2FjdGl2ZSAqcmVmLCB1NjQgaWR4KQo+ICAgCW5vZGUgPSBrbWVtX2NhY2hlX2FsbG9j KGdsb2JhbC5zbGFiX2NhY2hlLCBHRlBfS0VSTkVMKTsKPiAgIAo+ICAgCS8qIGttYWxsb2MgbWF5 IHJldGlyZSB0aGUgcmVmLT5sYXN0ICh0aGFua3Mgc2hyaW5rZXIpISAqLwo+IC0JaWYgKHVubGlr ZWx5KCFpOTE1X2dlbV9hY3RpdmVfcmF3KCZyZWYtPmxhc3QsIEJLTChyZWYpKSkpIHsKPiArCWlm ICh1bmxpa2VseSghaTkxNV9hY3RpdmVfcmVxdWVzdF9yYXcoJnJlZi0+bGFzdCwgQktMKHJlZikp KSkgewo+ICAgCQlrbWVtX2NhY2hlX2ZyZWUoZ2xvYmFsLnNsYWJfY2FjaGUsIG5vZGUpOwo+ICAg CQlnb3RvIG91dDsKPiAgIAl9Cj4gQEAgLTExOCw3ICsxMTgsNyBAQCBhY3RpdmVfaW5zdGFuY2Uo c3RydWN0IGk5MTVfYWN0aXZlICpyZWYsIHU2NCBpZHgpCj4gICAJaWYgKHVubGlrZWx5KCFub2Rl KSkKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gICAKPiAtCWluaXRfcmVxdWVzdF9h Y3RpdmUoJm5vZGUtPmJhc2UsIG5vZGVfcmV0aXJlKTsKPiArCWk5MTVfYWN0aXZlX3JlcXVlc3Rf aW5pdCgmbm9kZS0+YmFzZSwgTlVMTCwgbm9kZV9yZXRpcmUpOwo+ICAgCW5vZGUtPnJlZiA9IHJl ZjsKPiAgIAlub2RlLT50aW1lbGluZSA9IGlkeDsKPiAgIAo+IEBAIC0xMzMsNyArMTMzLDcgQEAg YWN0aXZlX2luc3RhbmNlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLCB1NjQgaWR4KQo+ICAgCSAq IGNhbGxiYWNrIG5vdCB0d28sIGFuZCBzbyBtdWNoIHVuZG8gdGhlIGFjdGl2ZSBjb3VudGluZyBm b3IgdGhlCj4gICAJICogb3ZlcndyaXR0ZW4gc2xvdC4KPiAgIAkgKi8KPiAtCWlmIChpOTE1X2dl bV9hY3RpdmVfaXNzZXQoJm5vZGUtPmJhc2UpKSB7Cj4gKwlpZiAoaTkxNV9hY3RpdmVfcmVxdWVz dF9pc3NldCgmbm9kZS0+YmFzZSkpIHsKPiAgIAkJLyogUmV0aXJlIG91cnNlbHZlcyBmcm9tIHRo ZSBvbGQgcnEtPmFjdGl2ZV9saXN0ICovCj4gICAJCV9fbGlzdF9kZWxfZW50cnkoJm5vZGUtPmJh c2UubGluayk7Cj4gICAJCXJlZi0+Y291bnQtLTsKPiBAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQg aTkxNV9hY3RpdmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAlyZWYt Pmk5MTUgPSBpOTE1Owo+ICAgCXJlZi0+cmV0aXJlID0gcmV0aXJlOwo+ICAgCXJlZi0+dHJlZSA9 IFJCX1JPT1Q7Cj4gLQlpbml0X3JlcXVlc3RfYWN0aXZlKCZyZWYtPmxhc3QsIGxhc3RfcmV0aXJl KTsKPiArCWk5MTVfYWN0aXZlX3JlcXVlc3RfaW5pdCgmcmVmLT5sYXN0LCBOVUxMLCBsYXN0X3Jl dGlyZSk7Cj4gICAJcmVmLT5jb3VudCA9IDA7Cj4gICB9Cj4gICAKPiBAQCAtMTYyLDE1ICsxNjIs MTUgQEAgaW50IGk5MTVfYWN0aXZlX3JlZihzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwKPiAgIAkJ ICAgIHU2NCB0aW1lbGluZSwKPiAgIAkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAg ewo+IC0Jc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlOwo+ICsJc3RydWN0IGk5MTVfYWN0 aXZlX3JlcXVlc3QgKmFjdGl2ZTsKPiAgIAo+ICAgCWFjdGl2ZSA9IGFjdGl2ZV9pbnN0YW5jZShy ZWYsIHRpbWVsaW5lKTsKPiAgIAlpZiAoSVNfRVJSKGFjdGl2ZSkpCj4gICAJCXJldHVybiBQVFJf RVJSKGFjdGl2ZSk7Cj4gICAKPiAtCWlmICghaTkxNV9nZW1fYWN0aXZlX2lzc2V0KGFjdGl2ZSkp Cj4gKwlpZiAoIWk5MTVfYWN0aXZlX3JlcXVlc3RfaXNzZXQoYWN0aXZlKSkKPiAgIAkJcmVmLT5j b3VudCsrOwo+IC0JaTkxNV9nZW1fYWN0aXZlX3NldChhY3RpdmUsIHJxKTsKPiArCV9faTkxNV9h Y3RpdmVfcmVxdWVzdF9zZXQoYWN0aXZlLCBycSk7Cj4gICAKPiAgIAlHRU1fQlVHX09OKCFyZWYt PmNvdW50KTsKPiAgIAlyZXR1cm4gMDsKPiBAQCAtMTk2LDEyICsxOTYsMTIgQEAgaW50IGk5MTVf YWN0aXZlX3dhaXQoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpCj4gICAJaWYgKGk5MTVfYWN0aXZl X2FjcXVpcmUocmVmKSkKPiAgIAkJZ290byBvdXRfcmVsZWFzZTsKPiAgIAo+IC0JcmV0ID0gaTkx NV9nZW1fYWN0aXZlX3JldGlyZSgmcmVmLT5sYXN0LCBCS0wocmVmKSk7Cj4gKwlyZXQgPSBpOTE1 X2FjdGl2ZV9yZXF1ZXN0X3JldGlyZSgmcmVmLT5sYXN0LCBCS0wocmVmKSk7Cj4gICAJaWYgKHJl dCkKPiAgIAkJZ290byBvdXRfcmVsZWFzZTsKPiAgIAo+ICAgCXJidHJlZV9wb3N0b3JkZXJfZm9y X2VhY2hfZW50cnlfc2FmZShpdCwgbiwgJnJlZi0+dHJlZSwgbm9kZSkgewo+IC0JCXJldCA9IGk5 MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoJml0LT5iYXNlLCBCS0wocmVmKSk7Cj4gKwkJcmV0ID0gaTkx NV9hY3RpdmVfcmVxdWVzdF9yZXRpcmUoJml0LT5iYXNlLCBCS0wocmVmKSk7Cj4gICAJCWlmIChy ZXQpCj4gICAJCQlicmVhazsKPiAgIAl9Cj4gQEAgLTIxMSwxMSArMjExLDExIEBAIGludCBpOTE1 X2FjdGl2ZV93YWl0KHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQo+ICAgCXJldHVybiByZXQ7Cj4g ICB9Cj4gICAKPiAtc3RhdGljIGludCBfX2k5MTVfcmVxdWVzdF9hd2FpdF9hY3RpdmUoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsCj4gLQkJCQkgICAgICAgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAq YWN0aXZlKQo+ICtpbnQgaTkxNV9yZXF1ZXN0X2F3YWl0X2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLAo+ICsJCQkJICAgICAgc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3Qg KmFjdGl2ZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpiYXJyaWVyID0KPiAtCQlp OTE1X2dlbV9hY3RpdmVfcmF3KGFjdGl2ZSwgJnJxLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiArCQlpOTE1X2FjdGl2ZV9yZXF1ZXN0X3JhdyhhY3RpdmUsICZycS0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gICAKPiAgIAlyZXR1cm4gYmFycmllciA/IGk5MTVfcmVxdWVzdF9hd2FpdF9k bWFfZmVuY2UocnEsICZiYXJyaWVyLT5mZW5jZSkgOiAwOwo+ICAgfQo+IEBAIC0yMjUsMTIgKzIy NSwxMiBAQCBpbnQgaTkxNV9yZXF1ZXN0X2F3YWl0X2FjdGl2ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwgc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpCj4gICAJc3RydWN0IGFjdGl2ZV9ub2RlICpp dCwgKm47Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0gX19pOTE1X3JlcXVlc3RfYXdhaXRf YWN0aXZlKHJxLCAmcmVmLT5sYXN0KTsKPiArCXJldCA9IGk5MTVfcmVxdWVzdF9hd2FpdF9hY3Rp dmVfcmVxdWVzdChycSwgJnJlZi0+bGFzdCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJl dDsKPiAgIAo+ICAgCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShpdCwgbiwg JnJlZi0+dHJlZSwgbm9kZSkgewo+IC0JCXJldCA9IF9faTkxNV9yZXF1ZXN0X2F3YWl0X2FjdGl2 ZShycSwgJml0LT5iYXNlKTsKPiArCQlyZXQgPSBpOTE1X3JlcXVlc3RfYXdhaXRfYWN0aXZlX3Jl cXVlc3QocnEsICZpdC0+YmFzZSk7Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+ ICAgCX0KPiBAQCAtMjQxLDEyICsyNDEsMzIgQEAgaW50IGk5MTVfcmVxdWVzdF9hd2FpdF9hY3Rp dmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQo+ICAg I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkKPiAgIHZvaWQgaTkxNV9h Y3RpdmVfZmluaShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiAgIHsKPiAtCUdFTV9CVUdfT04o aTkxNV9nZW1fYWN0aXZlX2lzc2V0KCZyZWYtPmxhc3QpKTsKPiArCUdFTV9CVUdfT04oaTkxNV9h Y3RpdmVfcmVxdWVzdF9pc3NldCgmcmVmLT5sYXN0KSk7Cj4gICAJR0VNX0JVR19PTighUkJfRU1Q VFlfUk9PVCgmcmVmLT50cmVlKSk7Cj4gICAJR0VNX0JVR19PTihyZWYtPmNvdW50KTsKPiAgIH0K PiAgICNlbmRpZgo+ICAgCj4gK2ludCBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldChzdHJ1Y3QgaTkx NV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlLAo+ICsJCQkgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJLyogTXVzdCBtYWludGFpbiBvcmRlcmluZyB3 cnQgcHJldmlvdXMgYWN0aXZlIHJlcXVlc3RzICovCj4gKwllcnIgPSBpOTE1X3JlcXVlc3RfYXdh aXRfYWN0aXZlX3JlcXVlc3QocnEsIGFjdGl2ZSk7Cj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiBl cnI7Cj4gKwo+ICsJX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldChhY3RpdmUsIHJxKTsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfYWN0aXZlX3JldGlyZV9ub29wKHN0cnVjdCBp OTE1X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUsCj4gKwkJCSAgICAgc3RydWN0IGk5MTVfcmVxdWVz dCAqcmVxdWVzdCkKPiArewo+ICsJLyogU3BhY2UgbGVmdCBpbnRlbnRpb25hbGx5IGJsYW5rICov Cj4gK30KPiArCj4gICAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCj4g ICAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMiCj4gICAjZW5kaWYKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfYWN0aXZlLmgKPiBpbmRleCA2YzU2ZDEwYjFmNTkuLjVmYmQ5MTAyMzg0YiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaAo+IEBAIC03LDcgKzcsMzU0IEBACj4g ICAjaWZuZGVmIF9JOTE1X0FDVElWRV9IXwo+ICAgI2RlZmluZSBfSTkxNV9BQ1RJVkVfSF8KPiAg IAo+ICsjaW5jbHVkZSA8bGludXgvbG9ja2RlcC5oPgo+ICsKPiAgICNpbmNsdWRlICJpOTE1X2Fj dGl2ZV90eXBlcy5oIgo+ICsjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gKwo+ICsvKgo+ICsg KiBXZSB0cmVhdCByZXF1ZXN0cyBhcyBmZW5jZXMuIFRoaXMgaXMgbm90IGJlIHRvIGNvbmZ1c2Vk IHdpdGggb3VyCj4gKyAqICJmZW5jZSByZWdpc3RlcnMiIGJ1dCBwaXBlbGluZSBzeW5jaHJvbmlz YXRpb24gb2JqZWN0cyBhbGEgR0xfQVJCX3N5bmMuCj4gKyAqIFdlIHVzZSB0aGUgZmVuY2VzIHRv IHN5bmNocm9uaXplIGFjY2VzcyBmcm9tIHRoZSBDUFUgd2l0aCBhY3Rpdml0eSBvbiB0aGUKPiAr ICogR1BVLCBmb3IgZXhhbXBsZSwgd2Ugc2hvdWxkIG5vdCByZXdyaXRlIGFuIG9iamVjdCdzIFBU RSB3aGlsc3QgdGhlIEdQVQo+ICsgKiBpcyByZWFkaW5nIHRoZW0uIFdlIGFsc28gdHJhY2sgZmVu Y2VzIGF0IGEgaGlnaGVyIGxldmVsIHRvIHByb3ZpZGUKPiArICogaW1wbGljaXQgc3luY2hyb25p c2F0aW9uIGFyb3VuZCBHRU0gb2JqZWN0cywgZS5nLiBzZXQtZG9tYWluIHdpbGwgd2FpdAo+ICsg KiBmb3Igb3V0c3RhbmRpbmcgR1BVIHJlbmRlcmluZyBiZWZvcmUgbWFya2luZyB0aGUgb2JqZWN0 IHJlYWR5IGZvciBDUFUKPiArICogYWNjZXNzLCBvciBhIHBhZ2VmbGlwIHdpbGwgd2FpdCB1bnRp bCB0aGUgR1BVIGlzIGNvbXBsZXRlIGJlZm9yZSBzaG93aW5nCj4gKyAqIHRoZSBmcmFtZSBvbiB0 aGUgc2Nhbm91dC4KPiArICoKPiArICogSW4gb3JkZXIgdG8gdXNlIGEgZmVuY2UsIHRoZSBvYmpl Y3QgbXVzdCB0cmFjayB0aGUgZmVuY2UgaXQgbmVlZHMgdG8KPiArICogc2VyaWFsaXNlIHdpdGgu IEZvciBleGFtcGxlLCBHRU0gb2JqZWN0cyB3YW50IHRvIHRyYWNrIGJvdGggcmVhZCBhbmQKPiAr ICogd3JpdGUgYWNjZXNzIHNvIHRoYXQgd2UgY2FuIHBlcmZvcm0gY29uY3VycmVudCByZWFkIG9w ZXJhdGlvbnMgYmV0d2Vlbgo+ICsgKiB0aGUgQ1BVIGFuZCBHUFUgZW5naW5lcywgYXMgd2VsbCBh cyB3YWl0aW5nIGZvciBhbGwgcmVuZGVyaW5nIHRvCj4gKyAqIGNvbXBsZXRlLCBvciB3YWl0aW5n IGZvciB0aGUgbGFzdCBHUFUgdXNlciBvZiBhICJmZW5jZSByZWdpc3RlciIuIFRoZQo+ICsgKiBv YmplY3QgdGhlbiBlbWJlZHMgYSAjaTkxNV9hY3RpdmVfcmVxdWVzdCB0byB0cmFjayB0aGUgbW9z dCByZWNlbnQgKGluCj4gKyAqIHJldGlyZW1lbnQgb3JkZXIpIHJlcXVlc3QgcmVsZXZhbnQgZm9y IHRoZSBkZXNpcmVkIG1vZGUgb2YgYWNjZXNzLgo+ICsgKiBUaGUgI2k5MTVfYWN0aXZlX3JlcXVl c3QgaXMgdXBkYXRlZCB3aXRoIGk5MTVfYWN0aXZlX3JlcXVlc3Rfc2V0KCkgdG8KPiArICogdHJh Y2sgdGhlIG1vc3QgcmVjZW50IGZlbmNlIHJlcXVlc3QsIHR5cGljYWxseSB0aGlzIGlzIGRvbmUg YXMgcGFydCBvZgo+ICsgKiBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSgpLgo+ICsgKgo+ICsgKiBX aGVuIHRoZSAjaTkxNV9hY3RpdmVfcmVxdWVzdCBjb21wbGV0ZXMgKGlzIHJldGlyZWQpLCBpdCB3 aWxsCj4gKyAqIHNpZ25hbCBpdHMgY29tcGxldGlvbiB0byB0aGUgb3duZXIgdGhyb3VnaCBhIGNh bGxiYWNrIGFzIHdlbGwgYXMgbWFyawo+ICsgKiBpdHNlbGYgYXMgaWRsZSAoaTkxNV9hY3RpdmVf cmVxdWVzdC5yZXF1ZXN0ID09IE5VTEwpLiBUaGUgb3duZXIKPiArICogY2FuIHRoZW4gcGVyZm9y bSBhbnkgYWN0aW9uLCBzdWNoIGFzIGRlbGF5ZWQgZnJlZWluZyBvZiBhbiBhY3RpdmUKPiArICog cmVzb3VyY2UgaW5jbHVkaW5nIGl0c2VsZi4KPiArICovCj4gKwo+ICt2b2lkIGk5MTVfYWN0aXZl X3JldGlyZV9ub29wKHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUsCj4gKwkJCSAg ICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCk7Cj4gKwo+ICsvKioKPiArICogaTkxNV9h Y3RpdmVfcmVxdWVzdF9pbml0IC0gcHJlcGFyZXMgdGhlIGFjdGl2aXR5IHRyYWNrZXIgZm9yIHVz ZQo+ICsgKiBAYWN0aXZlIC0gdGhlIGFjdGl2ZSB0cmFja2VyCj4gKyAqIEBycSAtIGluaXRpYWwg cmVxdWVzdCB0byB0cmFjaywgY2FuIGJlIE5VTEwKPiArICogQGZ1bmMgLSBhIGNhbGxiYWNrIHdo ZW4gdGhlbiB0aGUgdHJhY2tlciBpcyByZXRpcmVkIChiZWNvbWVzIGlkbGUpLAo+ICsgKiAgICAg ICAgIGNhbiBiZSBOVUxMCj4gKyAqCj4gKyAqIGk5MTVfYWN0aXZlX3JlcXVlc3RfaW5pdCgpIHBy ZXBhcmVzIHRoZSBlbWJlZGRlZCBAYWN0aXZlIHN0cnVjdCBmb3IgdXNlIGFzCj4gKyAqIGFuIGFj dGl2aXR5IHRyYWNrZXIsIHRoYXQgaXMgZm9yIHRyYWNraW5nIHRoZSBsYXN0IGtub3duIGFjdGl2 ZSByZXF1ZXN0Cj4gKyAqIGFzc29jaWF0ZWQgd2l0aCBpdC4gV2hlbiB0aGUgbGFzdCByZXF1ZXN0 IGJlY29tZXMgaWRsZSwgd2hlbiBpdCBpcyByZXRpcmVkCj4gKyAqIGFmdGVyIGNvbXBsZXRpb24s IHRoZSBvcHRpb25hbCBjYWxsYmFjayBAZnVuYyBpcyBpbnZva2VkLgo+ICsgKi8KPiArc3RhdGlj IGlubGluZSB2b2lkCj4gK2k5MTVfYWN0aXZlX3JlcXVlc3RfaW5pdChzdHJ1Y3QgaTkxNV9hY3Rp dmVfcmVxdWVzdCAqYWN0aXZlLAo+ICsJCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gKwkJ CSBpOTE1X2FjdGl2ZV9yZXRpcmVfZm4gcmV0aXJlKQo+ICt7Cj4gKwlSQ1VfSU5JVF9QT0lOVEVS KGFjdGl2ZS0+cmVxdWVzdCwgcnEpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmFjdGl2ZS0+bGluayk7 Cj4gKwlhY3RpdmUtPnJldGlyZSA9IHJldGlyZSA/OiBpOTE1X2FjdGl2ZV9yZXRpcmVfbm9vcDsK PiArfQo+ICsKPiArI2RlZmluZSBJTklUX0FDVElWRV9SRVFVRVNUKG5hbWUpIGk5MTVfYWN0aXZl X3JlcXVlc3RfaW5pdCgobmFtZSksIE5VTEwsIE5VTEwpCj4gKwo+ICsvKioKPiArICogaTkxNV9h Y3RpdmVfcmVxdWVzdF9zZXQgLSB1cGRhdGVzIHRoZSB0cmFja2VyIHRvIHdhdGNoIHRoZSBjdXJy ZW50IHJlcXVlc3QKPiArICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJhY2tlcgo+ICsgKiBAcmVx dWVzdCAtIHRoZSByZXF1ZXN0IHRvIHdhdGNoCj4gKyAqCj4gKyAqIF9faTkxNV9hY3RpdmVfcmVx dWVzdF9zZXQoKSB3YXRjaGVzIHRoZSBnaXZlbiBAcmVxdWVzdCBmb3IgY29tcGxldGlvbi4gV2hp bHN0Cj4gKyAqIHRoYXQgQHJlcXVlc3QgaXMgYnVzeSwgdGhlIEBhY3RpdmUgcmVwb3J0cyBidXN5 LiBXaGVuIHRoYXQgQHJlcXVlc3QgaXMKPiArICogcmV0aXJlZCwgdGhlIEBhY3RpdmUgdHJhY2tl ciBpcyB1cGRhdGVkIHRvIHJlcG9ydCBpZGxlLgo+ICsgKi8KPiArc3RhdGljIGlubGluZSB2b2lk Cj4gK19faTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3Qg KmFjdGl2ZSwKPiArCQkJICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICt7Cj4gKwls aXN0X21vdmUoJmFjdGl2ZS0+bGluaywgJnJlcXVlc3QtPmFjdGl2ZV9saXN0KTsKPiArCXJjdV9h c3NpZ25fcG9pbnRlcihhY3RpdmUtPnJlcXVlc3QsIHJlcXVlc3QpOwo+ICt9Cj4gKwo+ICtpbnQg X19tdXN0X2NoZWNrCj4gK2k5MTVfYWN0aXZlX3JlcXVlc3Rfc2V0KHN0cnVjdCBpOTE1X2FjdGl2 ZV9yZXF1ZXN0ICphY3RpdmUsCj4gKwkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKPiArCj4g Ky8qKgo+ICsgKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldF9yZXRpcmVfZm4gLSB1cGRhdGVzIHRo ZSByZXRpcmVtZW50IGNhbGxiYWNrCj4gKyAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIK PiArICogQGZuIC0gdGhlIHJvdXRpbmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgaXMgcmV0aXJl ZAo+ICsgKiBAbXV0ZXggLSBzdHJ1Y3RfbXV0ZXggdXNlZCB0byBndWFyZCByZXRpcmVtZW50cwo+ ICsgKgo+ICsgKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldF9yZXRpcmVfZm4oKSB1cGRhdGVzIHRo ZSBmdW5jdGlvbiBwb2ludGVyIHRoYXQKPiArICogaXMgY2FsbGVkIHdoZW4gdGhlIGZpbmFsIHJl cXVlc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBAYWN0aXZlIHRyYWNrZXIKPiArICogaXMgcmV0aXJl ZC4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgdm9pZAo+ICtpOTE1X2FjdGl2ZV9yZXF1ZXN0X3Nl dF9yZXRpcmVfZm4oc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSwKPiArCQkJCSAg aTkxNV9hY3RpdmVfcmV0aXJlX2ZuIGZuLAo+ICsJCQkJICBzdHJ1Y3QgbXV0ZXggKm11dGV4KQo+ ICt7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKG11dGV4KTsKPiArCWFjdGl2ZS0+cmV0aXJlID0g Zm4gPzogaTkxNV9hY3RpdmVfcmV0aXJlX25vb3A7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUg c3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gK19faTkxNV9hY3RpdmVfcmVxdWVzdF9wZWVrKGNvbnN0 IHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUpCj4gK3sKPiArCS8qCj4gKwkgKiBJ bnNpZGUgdGhlIGVycm9yIGNhcHR1cmUgKHJ1bm5pbmcgd2l0aCB0aGUgZHJpdmVyIGluIGFuIHVu a25vd24KPiArCSAqIHN0YXRlKSwgd2Ugd2FudCB0byBiZW5kIHRoZSBydWxlcyBzbGlnaHRseSAo YSBsb3QpLgo+ICsJICoKPiArCSAqIFdvcmsgaXMgaW4gcHJvZ3Jlc3MgdG8gbWFrZSBpdCBzYWZl ciwgaW4gdGhlIG1lYW50aW1lIHRoaXMga2VlcHMKPiArCSAqIHRoZSBrbm93biBpc3N1ZSBmcm9t IHNwYW1taW5nIHRoZSBsb2dzLgo+ICsJICovCj4gKwlyZXR1cm4gcmN1X2RlcmVmZXJlbmNlX3By b3RlY3RlZChhY3RpdmUtPnJlcXVlc3QsIDEpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9h Y3RpdmVfcmVxdWVzdF9yYXcgLSByZXR1cm4gdGhlIGFjdGl2ZSByZXF1ZXN0Cj4gKyAqIEBhY3Rp dmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIKPiArICoKPiArICogaTkxNV9hY3RpdmVfcmVxdWVzdF9y YXcoKSByZXR1cm5zIHRoZSBjdXJyZW50IHJlcXVlc3QgYmVpbmcgdHJhY2tlZCwgb3IgTlVMTC4K PiArICogSXQgZG9lcyBub3Qgb2J0YWluIGEgcmVmZXJlbmNlIG9uIHRoZSByZXF1ZXN0IGZvciB0 aGUgY2FsbGVyLCBzbyB0aGUgY2FsbGVyCj4gKyAqIG11c3QgaG9sZCBzdHJ1Y3RfbXV0ZXguCj4g KyAqLwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgo+ICtpOTE1X2FjdGl2 ZV9yZXF1ZXN0X3Jhdyhjb25zdCBzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlLAo+ ICsJCQlzdHJ1Y3QgbXV0ZXggKm11dGV4KQo+ICt7Cj4gKwlyZXR1cm4gcmN1X2RlcmVmZXJlbmNl X3Byb3RlY3RlZChhY3RpdmUtPnJlcXVlc3QsCj4gKwkJCQkJIGxvY2tkZXBfaXNfaGVsZChtdXRl eCkpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9hY3RpdmVfcmVxdWVzdF9wZWVrIC0gcmVw b3J0IHRoZSBhY3RpdmUgcmVxdWVzdCBiZWluZyBtb25pdG9yZWQKPiArICogQGFjdGl2ZSAtIHRo ZSBhY3RpdmUgdHJhY2tlcgo+ICsgKgo+ICsgKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3BlZWsoKSBy ZXR1cm5zIHRoZSBjdXJyZW50IHJlcXVlc3QgYmVpbmcgdHJhY2tlZCBpZgo+ICsgKiBzdGlsbCBh Y3RpdmUsIG9yIE5VTEwuIEl0IGRvZXMgbm90IG9idGFpbiBhIHJlZmVyZW5jZSBvbiB0aGUgcmVx dWVzdAo+ICsgKiBmb3IgdGhlIGNhbGxlciwgc28gdGhlIGNhbGxlciBtdXN0IGhvbGQgc3RydWN0 X211dGV4Lgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAr aTkxNV9hY3RpdmVfcmVxdWVzdF9wZWVrKGNvbnN0IHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0 ICphY3RpdmUsCj4gKwkJCSBzdHJ1Y3QgbXV0ZXggKm11dGV4KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICsKPiArCXJlcXVlc3QgPSBpOTE1X2FjdGl2ZV9yZXF1ZXN0 X3JhdyhhY3RpdmUsIG11dGV4KTsKPiArCWlmICghcmVxdWVzdCB8fCBpOTE1X3JlcXVlc3RfY29t cGxldGVkKHJlcXVlc3QpKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCXJldHVybiByZXF1ZXN0 Owo+ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9hY3RpdmVfcmVxdWVzdF9nZXQgLSByZXR1cm4g YSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSByZXF1ZXN0Cj4gKyAqIEBhY3RpdmUgLSB0aGUgYWN0 aXZlIHRyYWNrZXIKPiArICoKPiArICogaTkxNV9hY3RpdmVfcmVxdWVzdF9nZXQoKSByZXR1cm5z IGEgcmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgcmVxdWVzdCwgb3IgTlVMTAo+ICsgKiBpZiB0aGUg YWN0aXZlIHRyYWNrZXIgaXMgaWRsZS4gVGhlIGNhbGxlciBtdXN0IGhvbGQgc3RydWN0X211dGV4 Lgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAraTkxNV9h Y3RpdmVfcmVxdWVzdF9nZXQoY29uc3Qgc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2 ZSwKPiArCQkJc3RydWN0IG11dGV4ICptdXRleCkKPiArewo+ICsJcmV0dXJuIGk5MTVfcmVxdWVz dF9nZXQoaTkxNV9hY3RpdmVfcmVxdWVzdF9wZWVrKGFjdGl2ZSwgbXV0ZXgpKTsKPiArfQo+ICsK PiArLyoqCj4gKyAqIF9faTkxNV9hY3RpdmVfcmVxdWVzdF9nZXRfcmN1IC0gcmV0dXJuIGEgcmVm ZXJlbmNlIHRvIHRoZSBhY3RpdmUgcmVxdWVzdAo+ICsgKiBAYWN0aXZlIC0gdGhlIGFjdGl2ZSB0 cmFja2VyCj4gKyAqCj4gKyAqIF9faTkxNV9hY3RpdmVfcmVxdWVzdF9nZXQoKSByZXR1cm5zIGEg cmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgcmVxdWVzdCwKPiArICogb3IgTlVMTCBpZiB0aGUgYWN0 aXZlIHRyYWNrZXIgaXMgaWRsZS4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIFJDVSByZWFkCj4g KyAqIGxvY2ssIGJ1dCB0aGUgcmV0dXJuZWQgcG9pbnRlciBpcyBzYWZlIHRvIHVzZSBvdXRzaWRl IG9mIFJDVS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4g K19faTkxNV9hY3RpdmVfcmVxdWVzdF9nZXRfcmN1KGNvbnN0IHN0cnVjdCBpOTE1X2FjdGl2ZV9y ZXF1ZXN0ICphY3RpdmUpCj4gK3sKPiArCS8qCj4gKwkgKiBQZXJmb3JtaW5nIGEgbG9ja2xlc3Mg cmV0cmlldmFsIG9mIHRoZSBhY3RpdmUgcmVxdWVzdCBpcyBzdXBlcgo+ICsJICogdHJpY2t5LiBT TEFCX1RZUEVTQUZFX0JZX1JDVSBtZXJlbHkgZ3VhcmFudGVlcyB0aGF0IHRoZSBiYWNraW5nCj4g KwkgKiBzbGFiIG9mIHJlcXVlc3Qgb2JqZWN0cyB3aWxsIG5vdCBiZSBmcmVlZCB3aGlsc3Qgd2Ug aG9sZCB0aGUKPiArCSAqIFJDVSByZWFkIGxvY2suIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0 IHRoZSByZXF1ZXN0IGl0c2VsZgo+ICsJICogd2lsbCBub3QgYmUgZnJlZWQgYW5kIHRoZW4gKnJl dXNlZCouIFZpeiwKPiArCSAqCj4gKwkgKiBUaHJlYWQgQQkJCVRocmVhZCBCCj4gKwkgKgo+ICsJ ICogcnEgPSBhY3RpdmUucmVxdWVzdAo+ICsJICoJCQkJcmV0aXJlKHJxKSAtPiBmcmVlKHJxKTsK PiArCSAqCQkJCShycSBpcyBub3cgZmlyc3Qgb24gdGhlIHNsYWIgZnJlZWxpc3QpCj4gKwkgKgkJ CQlhY3RpdmUucmVxdWVzdCA9IE5VTEwKPiArCSAqCj4gKwkgKgkJCQlycSA9IG5ldyBzdWJtaXNz aW9uIG9uIGEgbmV3IG9iamVjdAo+ICsJICogcmVmKHJxKQo+ICsJICoKPiArCSAqIFRvIHByZXZl bnQgdGhlIHJlcXVlc3QgZnJvbSBiZWluZyByZXVzZWQgd2hpbHN0IHRoZSBjYWxsZXIKPiArCSAq IHVzZXMgaXQsIHdlIHRha2UgYSByZWZlcmVuY2UgbGlrZSBub3JtYWwuIFdoaWxzdCBhY3F1aXJp bmcKPiArCSAqIHRoZSByZWZlcmVuY2Ugd2UgY2hlY2sgdGhhdCBpdCBpcyBub3QgaW4gYSBkZXN0 cm95ZWQgc3RhdGUKPiArCSAqIChyZWZjbnQgPT0gMCkuIFRoYXQgcHJldmVudHMgdGhlIHJlcXVl c3QgYmVpbmcgcmVhbGxvY2F0ZWQKPiArCSAqIHdoaWxzdCB0aGUgY2FsbGVyIGhvbGRzIG9uIHRv IGl0LiBUbyBjaGVjayB0aGF0IHRoZSByZXF1ZXN0Cj4gKwkgKiB3YXMgbm90IHJlYWxsb2NhdGVk IGFzIHdlIGFjcXVpcmVkIHRoZSByZWZlcmVuY2Ugd2UgaGF2ZSB0bwo+ICsJICogY2hlY2sgdGhh dCBvdXIgcmVxdWVzdCByZW1haW5zIHRoZSBhY3RpdmUgcmVxdWVzdCBhY3Jvc3MKPiArCSAqIHRo ZSBsb29rdXAsIGluIHRoZSBzYW1lIG1hbm5lciBhcyBhIHNlcWxvY2suIFRoZSB2aXNpYmlsaXR5 Cj4gKwkgKiBvZiB0aGUgcG9pbnRlciB2ZXJzdXMgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBpcyBj b250cm9sbGVkCj4gKwkgKiBieSB1c2luZyBSQ1UgYmFycmllcnMgKHJjdV9kZXJlZmVyZW5jZSBh bmQgcmN1X2Fzc2lnbl9wb2ludGVyKS4KPiArCSAqCj4gKwkgKiBJbiB0aGUgbWlkZGxlIG9mIGFs bCB0aGF0LCB3ZSBpbnNwZWN0IHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMKPiArCSAqIGNvbXBsZXRl LiBSZXRpcmluZyBpcyBsYXp5IHNvIHRoZSByZXF1ZXN0IG1heSBiZSBjb21wbGV0ZWQgbG9uZwo+ ICsJICogYmVmb3JlIHRoZSBhY3RpdmUgdHJhY2tlciBpcyB1cGRhdGVkLiBRdWVyeWluZyB3aGV0 aGVyIHRoZQo+ICsJICogcmVxdWVzdCBpcyBjb21wbGV0ZSBpcyBmYXIgY2hlYXBlciAoYXMgaXQg aW52b2x2ZXMgbm8gbG9ja2VkCj4gKwkgKiBpbnN0cnVjdGlvbnMgc2V0dGluZyBjYWNoZWxpbmVz IHRvIGV4Y2x1c2l2ZSkgdGhhbiBhY3F1aXJpbmcKPiArCSAqIHRoZSByZWZlcmVuY2UsIHNvIHdl IGRvIGl0IGZpcnN0LiBUaGUgUkNVIHJlYWQgbG9jayBlbnN1cmVzIHRoZQo+ICsJICogcG9pbnRl ciBkZXJlZmVyZW5jZSBpcyB2YWxpZCwgYnV0IGRvZXMgbm90IGVuc3VyZSB0aGF0IHRoZQo+ICsJ ICogc2Vxbm8gbm9yIEhXUyBpcyB0aGUgcmlnaHQgb25lISBIb3dldmVyLCBpZiB0aGUgcmVxdWVz dCB3YXMKPiArCSAqIHJlYWxsb2NhdGVkLCB0aGF0IG1lYW5zIHRoZSBhY3RpdmUgdHJhY2tlcidz IHJlcXVlc3Qgd2FzIGNvbXBsZXRlLgo+ICsJICogSWYgdGhlIG5ldyByZXF1ZXN0IGlzIGFsc28g Y29tcGxldGUsIHRoZW4gYm90aCBhcmUgYW5kIHdlIGNhbgo+ICsJICoganVzdCByZXBvcnQgdGhl IGFjdGl2ZSB0cmFja2VyIGlzIGlkbGUuIElmIHRoZSBuZXcgcmVxdWVzdCBpcwo+ICsJICogaW5j b21wbGV0ZSwgdGhlbiB3ZSBhY3F1aXJlIGEgcmVmZXJlbmNlIG9uIGl0IGFuZCBjaGVjayB0aGF0 Cj4gKwkgKiBpdCByZW1haW5lZCB0aGUgYWN0aXZlIHJlcXVlc3QuCj4gKwkgKgo+ICsJICogSXQg aXMgdGhlbiBpbXBlcmF0aXZlIHRoYXQgd2UgZG8gbm90IHplcm8gdGhlIHJlcXVlc3Qgb24KPiAr CSAqIHJlYWxsb2NhdGlvbiwgc28gdGhhdCB3ZSBjYW4gY2hhc2UgdGhlIGRhbmdsaW5nIHBvaW50 ZXJzIQo+ICsJICogU2VlIGk5MTVfcmVxdWVzdF9hbGxvYygpLgo+ICsJICovCj4gKwlkbyB7Cj4g KwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdDsKPiArCj4gKwkJcmVxdWVzdCA9IHJjdV9k ZXJlZmVyZW5jZShhY3RpdmUtPnJlcXVlc3QpOwo+ICsJCWlmICghcmVxdWVzdCB8fCBpOTE1X3Jl cXVlc3RfY29tcGxldGVkKHJlcXVlc3QpKQo+ICsJCQlyZXR1cm4gTlVMTDsKPiArCj4gKwkJLyoK PiArCQkgKiBBbiBlc3BlY2lhbGx5IHNpbGx5IGNvbXBpbGVyIGNvdWxkIGRlY2lkZSB0byByZWNv bXB1dGUgdGhlCj4gKwkJICogcmVzdWx0IG9mIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQsIG1vcmUg c3BlY2lmaWNhbGx5Cj4gKwkJICogcmUtZW1pdCB0aGUgbG9hZCBmb3IgcmVxdWVzdC0+ZmVuY2Uu c2Vxbm8uIEEgcmFjZSB3b3VsZCBjYXRjaAo+ICsJCSAqIGEgbGF0ZXIgc2Vxbm8gdmFsdWUsIHdo aWNoIGNvdWxkIGZsaXAgdGhlIHJlc3VsdCBmcm9tIHRydWUgdG8KPiArCQkgKiBmYWxzZS4gV2hp Y2ggbWVhbnMgcGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb25zIGJlbG93IG1pZ2h0IG5vdAo+ICsJCSAq IGJlIGV4ZWN1dGVkLCB3aGlsZSBsYXRlciBvbiBpbnN0cnVjdGlvbnMgYXJlIGV4ZWN1dGVkLiBE dWUgdG8KPiArCQkgKiBiYXJyaWVycyB3aXRoaW4gdGhlIHJlZmNvdW50aW5nIHRoZSBpbmNvbnNp c3RlbmN5IGNhbid0IHJlYWNoCj4gKwkJICogcGFzdCB0aGUgY2FsbCB0byBpOTE1X3JlcXVlc3Rf Z2V0X3JjdSwgYnV0IG5vdCBleGVjdXRpbmcKPiArCQkgKiB0aGF0IHdoaWxlIHN0aWxsIGV4ZWN1 dGluZyBpOTE1X3JlcXVlc3RfcHV0KCkgY3JlYXRlcwo+ICsJCSAqIGhhdm9jIGVub3VnaC4gIFBy ZXZlbnQgdGhpcyB3aXRoIGEgY29tcGlsZXIgYmFycmllci4KPiArCQkgKi8KPiArCQliYXJyaWVy KCk7Cj4gKwo+ICsJCXJlcXVlc3QgPSBpOTE1X3JlcXVlc3RfZ2V0X3JjdShyZXF1ZXN0KTsKPiAr Cj4gKwkJLyoKPiArCQkgKiBXaGF0IHN0b3BzIHRoZSBmb2xsb3dpbmcgcmN1X2FjY2Vzc19wb2lu dGVyKCkgZnJvbSBvY2N1cnJpbmcKPiArCQkgKiBiZWZvcmUgdGhlIGFib3ZlIGk5MTVfcmVxdWVz dF9nZXRfcmN1KCk/IElmIHdlIHdlcmUKPiArCQkgKiB0byByZWFkIHRoZSB2YWx1ZSBiZWZvcmUg cGF1c2luZyB0byBnZXQgdGhlIHJlZmVyZW5jZSB0bwo+ICsJCSAqIHRoZSByZXF1ZXN0LCB3ZSBt YXkgbm90IG5vdGljZSBhIGNoYW5nZSBpbiB0aGUgYWN0aXZlCj4gKwkJICogdHJhY2tlci4KPiAr CQkgKgo+ICsJCSAqIFRoZSByY3VfYWNjZXNzX3BvaW50ZXIoKSBpcyBhIG1lcmUgY29tcGlsZXIg YmFycmllciwgd2hpY2gKPiArCQkgKiBtZWFucyBib3RoIHRoZSBDUFUgYW5kIGNvbXBpbGVyIGFy ZSBmcmVlIHRvIHBlcmZvcm0gdGhlCj4gKwkJICogbWVtb3J5IHJlYWQgd2l0aG91dCBjb25zdHJh aW50LiBUaGUgY29tcGlsZXIgb25seSBoYXMgdG8KPiArCQkgKiBlbnN1cmUgdGhhdCBhbnkgb3Bl cmF0aW9ucyBhZnRlciB0aGUgcmN1X2FjY2Vzc19wb2ludGVyKCkKPiArCQkgKiBvY2N1ciBhZnRl cndhcmRzIGluIHByb2dyYW0gb3JkZXIuIFRoaXMgbWVhbnMgdGhlIHJlYWQgbWF5Cj4gKwkJICog YmUgcGVyZm9ybWVkIGVhcmxpZXIgYnkgYW4gb3V0LW9mLW9yZGVyIENQVSwgb3IgYWR2ZW50dXJv dXMKPiArCQkgKiBjb21waWxlci4KPiArCQkgKgo+ICsJCSAqIFRoZSBhdG9taWMgb3BlcmF0aW9u IGF0IHRoZSBoZWFydCBvZgo+ICsJCSAqIGk5MTVfcmVxdWVzdF9nZXRfcmN1KCksIHNlZSBkbWFf ZmVuY2VfZ2V0X3JjdSgpLCBpcwo+ICsJCSAqIGF0b21pY19pbmNfbm90X3plcm8oKSB3aGljaCBp cyBvbmx5IGEgZnVsbCBtZW1vcnkgYmFycmllcgo+ICsJCSAqIHdoZW4gc3VjY2Vzc2Z1bC4gVGhh dCBpcywgaWYgaTkxNV9yZXF1ZXN0X2dldF9yY3UoKQo+ICsJCSAqIHJldHVybnMgdGhlIHJlcXVl c3QgKGFuZCBzbyB3aXRoIHRoZSByZWZlcmVuY2UgY291bnRlZAo+ICsJCSAqIGluY3JlbWVudGVk KSB0aGVuIHRoZSBmb2xsb3dpbmcgcmVhZCBmb3IgcmN1X2FjY2Vzc19wb2ludGVyKCkKPiArCQkg KiBtdXN0IG9jY3VyIGFmdGVyIHRoZSBhdG9taWMgb3BlcmF0aW9uIGFuZCBzbyBjb25maXJtCj4g KwkJICogdGhhdCB0aGlzIHJlcXVlc3QgaXMgdGhlIG9uZSBjdXJyZW50bHkgYmVpbmcgdHJhY2tl ZC4KPiArCQkgKgo+ICsJCSAqIFRoZSBjb3JyZXNwb25kaW5nIHdyaXRlIGJhcnJpZXIgaXMgcGFy dCBvZgo+ICsJCSAqIHJjdV9hc3NpZ25fcG9pbnRlcigpLgo+ICsJCSAqLwo+ICsJCWlmICghcmVx dWVzdCB8fCByZXF1ZXN0ID09IHJjdV9hY2Nlc3NfcG9pbnRlcihhY3RpdmUtPnJlcXVlc3QpKQo+ ICsJCQlyZXR1cm4gcmN1X3BvaW50ZXJfaGFuZG9mZihyZXF1ZXN0KTsKPiArCj4gKwkJaTkxNV9y ZXF1ZXN0X3B1dChyZXF1ZXN0KTsKPiArCX0gd2hpbGUgKDEpOwo+ICt9Cj4gKwo+ICsvKioKPiAr ICogaTkxNV9hY3RpdmVfcmVxdWVzdF9nZXRfdW5sb2NrZWQgLSByZXR1cm4gYSByZWZlcmVuY2Ug dG8gdGhlIGFjdGl2ZSByZXF1ZXN0Cj4gKyAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIK PiArICoKPiArICogaTkxNV9hY3RpdmVfcmVxdWVzdF9nZXRfdW5sb2NrZWQoKSByZXR1cm5zIGEg cmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgcmVxdWVzdCwKPiArICogb3IgTlVMTCBpZiB0aGUgYWN0 aXZlIHRyYWNrZXIgaXMgaWRsZS4gVGhlIHJlZmVyZW5jZSBpcyBvYnRhaW5lZCB1bmRlciBSQ1Us Cj4gKyAqIHNvIG5vIGxvY2tpbmcgaXMgcmVxdWlyZWQgYnkgdGhlIGNhbGxlci4KPiArICoKPiAr ICogVGhlIHJlZmVyZW5jZSBzaG91bGQgYmUgZnJlZWQgd2l0aCBpOTE1X3JlcXVlc3RfcHV0KCku Cj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgo+ICtpOTE1X2Fj dGl2ZV9yZXF1ZXN0X2dldF91bmxvY2tlZChjb25zdCBzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVz dCAqYWN0aXZlKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICsKPiAr CXJjdV9yZWFkX2xvY2soKTsKPiArCXJlcXVlc3QgPSBfX2k5MTVfYWN0aXZlX3JlcXVlc3RfZ2V0 X3JjdShhY3RpdmUpOwo+ICsJcmN1X3JlYWRfdW5sb2NrKCk7Cj4gKwo+ICsJcmV0dXJuIHJlcXVl c3Q7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X2lzc2V0IC0gcmVw b3J0IHdoZXRoZXIgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGFzc2lnbmVkCj4gKyAqIEBhY3RpdmUg LSB0aGUgYWN0aXZlIHRyYWNrZXIKPiArICoKPiArICogaTkxNV9hY3RpdmVfcmVxdWVzdF9pc3Nl dCgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgYWN0aXZlIHRyYWNrZXIgaXMgY3VycmVudGx5Cj4gKyAq IGFzc2lnbmVkIHRvIGEgcmVxdWVzdC4gRHVlIHRvIHRoZSBsYXp5IHJldGlyaW5nLCB0aGF0IHJl cXVlc3QgbWF5IGJlIGlkbGUKPiArICogYW5kIHRoaXMgbWF5IHJlcG9ydCBzdGFsZSBpbmZvcm1h dGlvbi4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+ICtpOTE1X2FjdGl2ZV9yZXF1ZXN0 X2lzc2V0KGNvbnN0IHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUpCj4gK3sKPiAr CXJldHVybiByY3VfYWNjZXNzX3BvaW50ZXIoYWN0aXZlLT5yZXF1ZXN0KTsKPiArfQo+ICsKPiAr LyoqCj4gKyAqIGk5MTVfYWN0aXZlX3JlcXVlc3RfcmV0aXJlIC0gd2FpdHMgdW50aWwgdGhlIHJl cXVlc3QgaXMgcmV0aXJlZAo+ICsgKiBAYWN0aXZlIC0gdGhlIGFjdGl2ZSByZXF1ZXN0IG9uIHdo aWNoIHRvIHdhaXQKPiArICoKPiArICogaTkxNV9hY3RpdmVfcmVxdWVzdF9yZXRpcmUoKSB3YWl0 cyB1bnRpbCB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWQsCj4gKyAqIGFuZCB0aGVuIGVuc3VyZXMg dGhhdCBhdCBsZWFzdCB0aGUgcmV0aXJlbWVudCBoYW5kbGVyIGZvciB0aGlzCj4gKyAqIEBhY3Rp dmUgdHJhY2tlciBpcyBjYWxsZWQgYmVmb3JlIHJldHVybmluZy4gSWYgdGhlIEBhY3RpdmUKPiAr ICogdHJhY2tlciBpcyBpZGxlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpbW1lZGlhdGVseS4KPiAr ICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IF9fbXVzdF9jaGVjawo+ICtpOTE1X2FjdGl2ZV9yZXF1 ZXN0X3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlLAo+ICsJCQkgICBz dHJ1Y3QgbXV0ZXggKm11dGV4KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0 Owo+ICsJbG9uZyByZXQ7Cj4gKwo+ICsJcmVxdWVzdCA9IGk5MTVfYWN0aXZlX3JlcXVlc3RfcmF3 KGFjdGl2ZSwgbXV0ZXgpOwo+ICsJaWYgKCFyZXF1ZXN0KQo+ICsJCXJldHVybiAwOwo+ICsKPiAr CXJldCA9IGk5MTVfcmVxdWVzdF93YWl0KHJlcXVlc3QsCj4gKwkJCQlJOTE1X1dBSVRfSU5URVJS VVBUSUJMRSB8IEk5MTVfV0FJVF9MT0NLRUQsCj4gKwkJCQlNQVhfU0NIRURVTEVfVElNRU9VVCk7 Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWxpc3RfZGVsX2luaXQo JmFjdGl2ZS0+bGluayk7Cj4gKwlSQ1VfSU5JVF9QT0lOVEVSKGFjdGl2ZS0+cmVxdWVzdCwgTlVM TCk7Cj4gKwo+ICsJYWN0aXZlLT5yZXRpcmUoYWN0aXZlLCByZXF1ZXN0KTsKPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICAgCj4gICAvKgo+ICAgICogR1BVIGFjdGl2aXR5IHRyYWNraW5nCj4gQEAg LTQ3LDYgKzM5NCw4IEBAIGludCBpOTE1X2FjdGl2ZV93YWl0KHN0cnVjdCBpOTE1X2FjdGl2ZSAq cmVmKTsKPiAgIAo+ICAgaW50IGk5MTVfcmVxdWVzdF9hd2FpdF9hY3RpdmUoc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsCj4gICAJCQkgICAgICBzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZik7Cj4gK2lu dCBpOTE1X3JlcXVlc3RfYXdhaXRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEsCj4gKwkJCQkgICAgICBzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlKTsKPiAg IAo+ICAgYm9vbCBpOTE1X2FjdGl2ZV9hY3F1aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKTsK PiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZV90eXBl cy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVfdHlwZXMuaAo+IGluZGV4IDQx MWU1MDJlZDhkZC4uYjY3OTI1M2I1M2E1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfYWN0aXZlX3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2FjdGl2ZV90eXBlcy5oCj4gQEAgLTgsMTYgKzgsMjYgQEAKPiAgICNkZWZpbmUgX0k5MTVfQUNU SVZFX1RZUEVTX0hfCj4gICAKPiAgICNpbmNsdWRlIDxsaW51eC9yYnRyZWUuaD4KPiAtCj4gLSNp bmNsdWRlICJpOTE1X3JlcXVlc3QuaCIKPiArI2luY2x1ZGUgPGxpbnV4L3JjdXBkYXRlLmg+Cj4g ICAKPiAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ICtzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVx dWVzdDsKPiArc3RydWN0IGk5MTVfcmVxdWVzdDsKPiArCj4gK3R5cGVkZWYgdm9pZCAoKmk5MTVf YWN0aXZlX3JldGlyZV9mbikoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKiwKPiArCQkJCSAg ICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKik7Cj4gKwo+ICtzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVx dWVzdCB7Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0IF9fcmN1ICpyZXF1ZXN0Owo+ICsJc3RydWN0 IGxpc3RfaGVhZCBsaW5rOwo+ICsJaTkxNV9hY3RpdmVfcmV0aXJlX2ZuIHJldGlyZTsKPiArfTsK PiAgIAo+ICAgc3RydWN0IGk5MTVfYWN0aXZlIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNTsKPiAgIAo+ICAgCXN0cnVjdCByYl9yb290IHRyZWU7Cj4gLQlzdHJ1Y3QgaTkxNV9n ZW1fYWN0aXZlIGxhc3Q7Cj4gKwlzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCBsYXN0Owo+ICAg CXVuc2lnbmVkIGludCBjb3VudDsKPiAgIAo+ICAgCXZvaWQgKCpyZXRpcmUpKHN0cnVjdCBpOTE1 X2FjdGl2ZSAqcmVmKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDU0 ZTQyNjg4MzUyOS4uYTI3MGFmMTg0MDRmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPiBAQCAtMjA3LDcgKzIwNyw3IEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJCWlmICh2bWEtPmZlbmNl KQo+ICAgCQkJc2VxX3ByaW50ZihtLCAiICwgZmVuY2U6ICVkJXMiLAo+ICAgCQkJCSAgIHZtYS0+ ZmVuY2UtPmlkLAo+IC0JCQkJICAgaTkxNV9nZW1fYWN0aXZlX2lzc2V0KCZ2bWEtPmxhc3RfZmVu Y2UpID8gIioiIDogIiIpOwo+ICsJCQkJICAgaTkxNV9hY3RpdmVfcmVxdWVzdF9pc3NldCgmdm1h LT5sYXN0X2ZlbmNlKSA/ICIqIiA6ICIiKTsKPiAgIAkJc2VxX3B1dHMobSwgIikiKTsKPiAgIAl9 Cj4gICAJaWYgKG9iai0+c3RvbGVuKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IGQ4 MmU0Zjk5MDU4Ni4uODFhYTM3NTA4YmM0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4g QEAgLTI5ODcsNyArMjk4Nyw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9rZXJuZWxfY29udGV4dF9p c19jdXJyZW50KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCj4gICAJR0VNX0JV R19PTihpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGk5MTUsIGlkKSB7Cj4gLQkJR0VNX0JVR19PTihfX2k5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZl bmdpbmUtPnRpbWVsaW5lLmxhc3RfcmVxdWVzdCkpOwo+ICsJCUdFTV9CVUdfT04oX19pOTE1X2Fj dGl2ZV9yZXF1ZXN0X3BlZWsoJmVuZ2luZS0+dGltZWxpbmUubGFzdF9yZXF1ZXN0KSk7Cj4gICAJ CUdFTV9CVUdfT04oZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCAhPQo+ICAgCQkJICAgdG9f aW50ZWxfY29udGV4dChpOTE1LT5rZXJuZWxfY29udGV4dCwgZW5naW5lKSk7Cj4gICAJfQo+IEBA IC0zMjMzLDcgKzMyMzMsNyBAQCB3YWl0X2Zvcl90aW1lbGluZXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bCwgJmd0LT5hY3RpdmVfbGlz dCwgbGluaykgewo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAgIAo+IC0JCXJxID0g aTkxNV9nZW1fYWN0aXZlX2dldF91bmxvY2tlZCgmdGwtPmxhc3RfcmVxdWVzdCk7Cj4gKwkJcnEg PSBpOTE1X2FjdGl2ZV9yZXF1ZXN0X2dldF91bmxvY2tlZCgmdGwtPmxhc3RfcmVxdWVzdCk7Cj4g ICAJCWlmICghcnEpCj4gICAJCQljb250aW51ZTsKPiAgIAo+IEBAIC00MTM0LDcgKzQxMzQsOCBA QCBpOTE1X2dlbV9tYWR2aXNlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkCj4gLWZyb250YnVmZmVyX3JldGlyZShzdHJ1 Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Qp Cj4gK2Zyb250YnVmZmVyX3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZl LAo+ICsJCSAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICB7Cj4gICAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9Cj4gICAJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5 cGVvZigqb2JqKSwgZnJvbnRidWZmZXJfd3JpdGUpOwo+IEBAIC00MTYxLDcgKzQxNjIsOCBAQCB2 b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gICAJb2JqLT5yZXN2ID0gJm9iai0+X19idWlsdGluX3Jlc3Y7Cj4gICAKPiAgIAlvYmotPmZy b250YnVmZmVyX2dndHRfb3JpZ2luID0gT1JJR0lOX0dUVDsKPiAtCWluaXRfcmVxdWVzdF9hY3Rp dmUoJm9iai0+ZnJvbnRidWZmZXJfd3JpdGUsIGZyb250YnVmZmVyX3JldGlyZSk7Cj4gKwlpOTE1 X2FjdGl2ZV9yZXF1ZXN0X2luaXQoJm9iai0+ZnJvbnRidWZmZXJfd3JpdGUsCj4gKwkJCQkgTlVM TCwgZnJvbnRidWZmZXJfcmV0aXJlKTsKPiAgIAo+ICAgCW9iai0+bW0ubWFkdiA9IEk5MTVfTUFE Vl9XSUxMTkVFRDsKPiAgIAlJTklUX1JBRElYX1RSRUUoJm9iai0+bW0uZ2V0X3BhZ2UucmFkaXgs IEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKPiBpbmRleCA2ZmFmMWY2ZmFhYjUuLmVhOGU4MThkMjJiZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNjUzLDggKzY1Myw4IEBA IGxhc3RfcmVxdWVzdF9vbl9lbmdpbmUoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lLAo+ ICAgCj4gICAJR0VNX0JVR19PTih0aW1lbGluZSA9PSAmZW5naW5lLT50aW1lbGluZSk7Cj4gICAK PiAtCXJxID0gaTkxNV9nZW1fYWN0aXZlX3JhdygmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKPiAt CQkJCSAmZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCXJxID0gaTkxNV9hY3Rp dmVfcmVxdWVzdF9yYXcoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCj4gKwkJCQkgICAgICZlbmdp bmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWlmIChycSAmJiBycS0+ZW5naW5lID09 IGVuZ2luZSkgewo+ICAgCQlHRU1fVFJBQ0UoImxhc3QgcmVxdWVzdCBmb3IgJXMgb24gZW5naW5l ICVzOiAlbGx4OiVsbHVcbiIsCj4gICAJCQkgIHRpbWVsaW5lLT5uYW1lLCBlbmdpbmUtPm5hbWUs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiBpbmRleCBiZDBk NWI4ZDZjOTYuLjM2ZDU0OGZhM2FhMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2ZlbmNlX3JlZy5jCj4gQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW50IGZlbmNlX3Vw ZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAgIAkJCSBpOTE1X2dlbV9v YmplY3RfZ2V0X3RpbGluZyh2bWEtPm9iaikpKQo+ICAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gICAK PiAtCQlyZXQgPSBpOTE1X2dlbV9hY3RpdmVfcmV0aXJlKCZ2bWEtPmxhc3RfZmVuY2UsCj4gKwkJ cmV0ID0gaTkxNV9hY3RpdmVfcmVxdWVzdF9yZXRpcmUoJnZtYS0+bGFzdF9mZW5jZSwKPiAgIAkJ CQkJICAgICAmdm1hLT5vYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCQlpZiAocmV0 KQo+ICAgCQkJcmV0dXJuIHJldDsKPiBAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyBpbnQgZmVu Y2VfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ICAgCWlmIChmZW5j ZS0+dm1hKSB7Cj4gICAJCXN0cnVjdCBpOTE1X3ZtYSAqb2xkID0gZmVuY2UtPnZtYTsKPiAgIAo+ IC0JCXJldCA9IGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoJm9sZC0+bGFzdF9mZW5jZSwKPiArCQly ZXQgPSBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3JldGlyZSgmb2xkLT5sYXN0X2ZlbmNlLAo+ICAgCQkJ CQkgICAgICZvbGQtPm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJCWlmIChyZXQp Cj4gICAJCQlyZXR1cm4gcmV0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5k ZXggZTYyNTY1OWMwM2EyLi5kNjQ2ZDM3ZWVjMmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+IEBAIC0xOTE4LDcgKzE5MTgsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1h ICpwZF92bWFfY3JlYXRlKHN0cnVjdCBnZW42X2h3X3BwZ3R0ICpwcGd0dCwgaW50IHNpemUpCj4g ICAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICAgCj4gICAJaTkxNV9hY3RpdmVfaW5pdChp OTE1LCAmdm1hLT5hY3RpdmUsIE5VTEwpOwo+IC0JaW5pdF9yZXF1ZXN0X2FjdGl2ZSgmdm1hLT5s YXN0X2ZlbmNlLCBOVUxMKTsKPiArCUlOSVRfQUNUSVZFX1JFUVVFU1QoJnZtYS0+bGFzdF9mZW5j ZSk7Cj4gICAKPiAgIAl2bWEtPnZtID0gJmdndHQtPnZtOwo+ICAgCXZtYS0+b3BzID0gJnBkX3Zt YV9vcHM7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX29iamVj dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fb2JqZWN0LmgKPiBpbmRleCA3M2Zl YzkxN2QwOTcuLmZhYjA0MDMzMWNkYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9vYmplY3QuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X29iamVjdC5oCj4gQEAgLTE3NSw3ICsxNzUsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCB7Cj4gICAKPiAgIAlhdG9taWNfdCBmcm9udGJ1ZmZlcl9iaXRzOwo+ICAgCXVuc2lnbmVkIGlu dCBmcm9udGJ1ZmZlcl9nZ3R0X29yaWdpbjsgLyogd3JpdGUgb25jZSAqLwo+IC0Jc3RydWN0IGk5 MTVfZ2VtX2FjdGl2ZSBmcm9udGJ1ZmZlcl93cml0ZTsKPiArCXN0cnVjdCBpOTE1X2FjdGl2ZV9y ZXF1ZXN0IGZyb250YnVmZmVyX3dyaXRlOwo+ICAgCj4gICAJLyoqIEN1cnJlbnQgdGlsaW5nIHN0 cmlkZSBmb3IgdGhlIG9iamVjdCwgaWYgaXQncyB0aWxlZC4gKi8KPiAgIAl1bnNpZ25lZCBpbnQg dGlsaW5nX2FuZF9zdHJpZGU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4g aW5kZXggNmUyZTVlZDJiZDBhLi45YTY1MzQxZmVjMDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3B1X2Vycm9yLmMKPiBAQCAtMTA2MiwyMyArMTA2MiwyMyBAQCBpOTE1X2Vycm9yX29i amVjdF9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICB9Cj4gICAKPiAg IC8qIFRoZSBlcnJvciBjYXB0dXJlIGlzIHNwZWNpYWwgYXMgdHJpZXMgdG8gcnVuIHVuZGVybmVh dGggdGhlIG5vcm1hbAo+IC0gKiBsb2NraW5nIHJ1bGVzIC0gc28gd2UgdXNlIHRoZSByYXcgdmVy c2lvbiBvZiB0aGUgaTkxNV9nZW1fYWN0aXZlIGxvb2t1cC4KPiArICogbG9ja2luZyBydWxlcyAt IHNvIHdlIHVzZSB0aGUgcmF3IHZlcnNpb24gb2YgdGhlIGk5MTVfYWN0aXZlX3JlcXVlc3QgbG9v a3VwLgo+ICAgICovCj4gICBzdGF0aWMgaW5saW5lIHUzMgo+IC1fX2FjdGl2ZV9nZXRfc2Vxbm8o c3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQo+ICtfX2FjdGl2ZV9nZXRfc2Vxbm8oc3Ry dWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpyZXF1ZXN0Owo+ICAgCj4gLQlyZXF1ZXN0ID0gX19pOTE1X2dlbV9hY3RpdmVfcGVl ayhhY3RpdmUpOwo+ICsJcmVxdWVzdCA9IF9faTkxNV9hY3RpdmVfcmVxdWVzdF9wZWVrKGFjdGl2 ZSk7Cj4gICAJcmV0dXJuIHJlcXVlc3QgPyByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8gOiAwOwo+ICAg fQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIGludAo+IC1fX2FjdGl2ZV9nZXRfZW5naW5lX2lkKHN0 cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSkKPiArX19hY3RpdmVfZ2V0X2VuZ2luZV9pZChz dHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJlcXVlc3Q7Cj4gICAKPiAtCXJlcXVlc3QgPSBfX2k5MTVfZ2VtX2FjdGl2ZV9w ZWVrKGFjdGl2ZSk7Cj4gKwlyZXF1ZXN0ID0gX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X3BlZWsoYWN0 aXZlKTsKPiAgIAlyZXR1cm4gcmVxdWVzdCA/IHJlcXVlc3QtPmVuZ2luZS0+aWQgOiAtMTsKPiAg IH0KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXggZjViMmM5NTEy NWJhLi5lZDlmMTZiY2E0ZmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+ IEBAIC0yOSw2ICsyOSw3IEBACj4gICAjaW5jbHVkZSA8bGludXgvc2NoZWQvc2lnbmFsLmg+Cj4g ICAKPiAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaTkxNV9hY3RpdmUuaCIK PiAgICNpbmNsdWRlICJpOTE1X3Jlc2V0LmgiCj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9n bG9iYWxfcmVxdWVzdCB7Cj4gQEAgLTEzMCwxMiArMTMxLDYgQEAgc3RhdGljIHZvaWQgdW5yZXNl cnZlX2d0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCQlpOTE1X2dlbV9wYXJr KGk5MTUpOwo+ICAgfQo+ICAgCj4gLXZvaWQgaTkxNV9nZW1fcmV0aXJlX25vb3Aoc3RydWN0IGk5 MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAo+IC0JCQkgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVl c3QpCj4gLXsKPiAtCS8qIFNwYWNlIGxlZnQgaW50ZW50aW9uYWxseSBibGFuayAqLwo+IC19Cj4g LQo+ICAgc3RhdGljIHZvaWQgYWR2YW5jZV9yaW5nKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVl c3QpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwo+ IEBAIC0yNDksNyArMjQ0LDcgQEAgc3RhdGljIHZvaWQgX19yZXRpcmVfZW5naW5lX3VwdG8oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCj4gICBzdGF0aWMgdm9pZCBpOTE1X3Jl cXVlc3RfcmV0aXJlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICB7Cj4gLQlzdHJ1 Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsICpuZXh0Owo+ICsJc3RydWN0IGk5MTVfYWN0aXZl X3JlcXVlc3QgKmFjdGl2ZSwgKm5leHQ7Cj4gICAKPiAgIAlHRU1fVFJBQ0UoIiVzIGZlbmNlICVs bHg6JWxsZCwgZ2xvYmFsPSVkLCBjdXJyZW50ICVkOiVkXG4iLAo+ICAgCQkgIHJlcXVlc3QtPmVu Z2luZS0+bmFtZSwKPiBAQCAtMjgzLDEwICsyNzgsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXF1 ZXN0X3JldGlyZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCQkgKiB3ZSBtYXkg c3BlbmQgYW4gaW5vcmRpbmF0ZSBhbW91bnQgb2YgdGltZSBzaW1wbHkgaGFuZGxpbmcKPiAgIAkJ ICogdGhlIHJldGlyZW1lbnQgb2YgcmVxdWVzdHMgYW5kIHByb2Nlc3NpbmcgdGhlaXIgY2FsbGJh Y2tzLgo+ICAgCQkgKiBPZiB3aGljaCwgdGhpcyBsb29wIGl0c2VsZiBpcyBwYXJ0aWN1bGFybHkg aG90IGR1ZSB0byB0aGUKPiAtCQkgKiBjYWNoZSBtaXNzZXMgd2hlbiBqdW1waW5nIGFyb3VuZCB0 aGUgbGlzdCBvZiBpOTE1X2dlbV9hY3RpdmUuCj4gLQkJICogU28gd2UgdHJ5IHRvIGtlZXAgdGhp cyBsb29wIGFzIHN0cmVhbWxpbmVkIGFzIHBvc3NpYmxlIGFuZAo+IC0JCSAqIGFsc28gcHJlZmV0 Y2ggdGhlIG5leHQgaTkxNV9nZW1fYWN0aXZlIHRvIHRyeSBhbmQgaGlkZQo+IC0JCSAqIHRoZSBs aWtlbHkgY2FjaGUgbWlzcy4KPiArCQkgKiBjYWNoZSBtaXNzZXMgd2hlbiBqdW1waW5nIGFyb3Vu ZCB0aGUgbGlzdCBvZgo+ICsJCSAqIGk5MTVfYWN0aXZlX3JlcXVlc3QuICBTbyB3ZSB0cnkgdG8g a2VlcCB0aGlzIGxvb3AgYXMKPiArCQkgKiBzdHJlYW1saW5lZCBhcyBwb3NzaWJsZSBhbmQgYWxz byBwcmVmZXRjaCB0aGUgbmV4dAo+ICsJCSAqIGk5MTVfYWN0aXZlX3JlcXVlc3QgdG8gdHJ5IGFu ZCBoaWRlIHRoZSBsaWtlbHkgY2FjaGUgbWlzcy4KPiAgIAkJICovCj4gICAJCXByZWZldGNodyhu ZXh0KTsKPiAgIAo+IEBAIC01NDMsMTcgKzUzOCw5IEBAIGk5MTVfcmVxdWVzdF9hbGxvY19zbG93 KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgIAlyZXR1cm4ga21lbV9jYWNoZV9hbGxvYyhn bG9iYWwuc2xhYl9yZXF1ZXN0cywgR0ZQX0tFUk5FTCk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGlu dCBhZGRfYmFycmllcihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGk5MTVfZ2VtX2Fj dGl2ZSAqYWN0aXZlKQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpiYXJyaWVyID0KPiAt CQlpOTE1X2dlbV9hY3RpdmVfcmF3KGFjdGl2ZSwgJnJxLT5pOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtCj4gLQlyZXR1cm4gYmFycmllciA/IGk5MTVfcmVxdWVzdF9hd2FpdF9kbWFfZmVuY2Uo cnEsICZiYXJyaWVyLT5mZW5jZSkgOiAwOwo+IC19Cj4gLQo+ICAgc3RhdGljIGludCBhZGRfdGlt ZWxpbmVfYmFycmllcihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAtCXJldHVybiBh ZGRfYmFycmllcihycSwgJnJxLT50aW1lbGluZS0+YmFycmllcik7Cj4gKwlyZXR1cm4gaTkxNV9y ZXF1ZXN0X2F3YWl0X2FjdGl2ZV9yZXF1ZXN0KHJxLCAmcnEtPnRpbWVsaW5lLT5iYXJyaWVyKTsK PiAgIH0KPiAgIAo+ICAgLyoqCj4gQEAgLTYxMiw3ICs1OTksNyBAQCBpOTE1X3JlcXVlc3RfYWxs b2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4KQo+ICAgCSAqIFdlIHVzZSBSQ1UgdG8gbG9vayB1cCByZXF1ZXN0cyBpbiBmbGlnaHQu IFRoZSBsb29rdXBzIG1heQo+ICAgCSAqIHJhY2Ugd2l0aCB0aGUgcmVxdWVzdCBiZWluZyBhbGxv Y2F0ZWQgZnJvbSB0aGUgc2xhYiBmcmVlbGlzdC4KPiAgIAkgKiBUaGF0IGlzIHRoZSByZXF1ZXN0 IHdlIGFyZSB3cml0aW5nIHRvIGhlcmUsIG1heSBiZSBpbiB0aGUgcHJvY2Vzcwo+IC0JICogb2Yg YmVpbmcgcmVhZCBieSBfX2k5MTVfZ2VtX2FjdGl2ZV9nZXRfcmN1KCkuIEFzIHN1Y2gsCj4gKwkg KiBvZiBiZWluZyByZWFkIGJ5IF9faTkxNV9hY3RpdmVfcmVxdWVzdF9nZXRfcmN1KCkuIEFzIHN1 Y2gsCj4gICAJICogd2UgaGF2ZSB0byBiZSB2ZXJ5IGNhcmVmdWwgd2hlbiBvdmVyd3JpdGluZyB0 aGUgY29udGVudHMuIER1cmluZwo+ICAgCSAqIHRoZSBSQ1UgbG9va3VwLCB3ZSBjaGFuZ2UgY2hh c2UgdGhlIHJlcXVlc3QtPmVuZ2luZSBwb2ludGVyLAo+ICAgCSAqIHJlYWQgdGhlIHJlcXVlc3Qt Pmdsb2JhbF9zZXFubyBhbmQgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQuCj4gQEAgLTk1 Miw4ICs5MzksOCBAQCB2b2lkIGk5MTVfcmVxdWVzdF9hZGQoc3RydWN0IGk5MTVfcmVxdWVzdCAq cmVxdWVzdCkKPiAgIAkgKiBzZWUgYSBtb3JlIHJlY2VudCB2YWx1ZSBpbiB0aGUgaHdzIHRoYW4g d2UgYXJlIHRyYWNraW5nLgo+ICAgCSAqLwo+ICAgCj4gLQlwcmV2ID0gaTkxNV9nZW1fYWN0aXZl X3JhdygmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKPiAtCQkJCSAgICZyZXF1ZXN0LT5pOTE1LT5k cm0uc3RydWN0X211dGV4KTsKPiArCXByZXYgPSBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3JhdygmdGlt ZWxpbmUtPmxhc3RfcmVxdWVzdCwKPiArCQkJCSAgICAgICAmcmVxdWVzdC0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gICAJaWYgKHByZXYgJiYgIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocHJl dikpIHsKPiAgIAkJaTkxNV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZSgmcmVxdWVzdC0+c3VibWl0 LCAmcHJldi0+c3VibWl0LAo+ICAgCQkJCQkgICAgICZyZXF1ZXN0LT5zdWJtaXRxKTsKPiBAQCAt OTY5LDcgKzk1Niw3IEBAIHZvaWQgaTkxNV9yZXF1ZXN0X2FkZChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0KQo+ICAgCXNwaW5fdW5sb2NrX2lycSgmdGltZWxpbmUtPmxvY2spOwo+ICAgCj4g ICAJR0VNX0JVR19PTih0aW1lbGluZS0+c2Vxbm8gIT0gcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8pOwo+ IC0JaTkxNV9nZW1fYWN0aXZlX3NldCgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwgcmVxdWVzdCk7 Cj4gKwlfX2k5MTVfYWN0aXZlX3JlcXVlc3Rfc2V0KCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0LCBy ZXF1ZXN0KTsKPiAgIAo+ICAgCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPnJpbmdfbGluaywgJnJp bmctPnJlcXVlc3RfbGlzdCk7Cj4gICAJaWYgKGxpc3RfaXNfZmlyc3QoJnJlcXVlc3QtPnJpbmdf bGluaywgJnJpbmctPnJlcXVlc3RfbGlzdCkpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuaAo+IGluZGV4IDA1NGJkMzAwOTg0Yi4uMDcxZmYxMDY0NTc5IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiBAQCAtNDA5LDM4OSArNDA5LDYgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfcmVxdWVzdF9tYXJrX2NvbXBsZXRlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KQo+ICAgCj4gICB2b2lkIGk5MTVfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KTsKPiAgIAo+IC0vKgo+IC0gKiBXZSB0cmVhdCByZXF1ZXN0cyBhcyBmZW5jZXMu IFRoaXMgaXMgbm90IGJlIHRvIGNvbmZ1c2VkIHdpdGggb3VyCj4gLSAqICJmZW5jZSByZWdpc3Rl cnMiIGJ1dCBwaXBlbGluZSBzeW5jaHJvbmlzYXRpb24gb2JqZWN0cyBhbGEgR0xfQVJCX3N5bmMu Cj4gLSAqIFdlIHVzZSB0aGUgZmVuY2VzIHRvIHN5bmNocm9uaXplIGFjY2VzcyBmcm9tIHRoZSBD UFUgd2l0aCBhY3Rpdml0eSBvbiB0aGUKPiAtICogR1BVLCBmb3IgZXhhbXBsZSwgd2Ugc2hvdWxk IG5vdCByZXdyaXRlIGFuIG9iamVjdCdzIFBURSB3aGlsc3QgdGhlIEdQVQo+IC0gKiBpcyByZWFk aW5nIHRoZW0uIFdlIGFsc28gdHJhY2sgZmVuY2VzIGF0IGEgaGlnaGVyIGxldmVsIHRvIHByb3Zp ZGUKPiAtICogaW1wbGljaXQgc3luY2hyb25pc2F0aW9uIGFyb3VuZCBHRU0gb2JqZWN0cywgZS5n LiBzZXQtZG9tYWluIHdpbGwgd2FpdAo+IC0gKiBmb3Igb3V0c3RhbmRpbmcgR1BVIHJlbmRlcmlu ZyBiZWZvcmUgbWFya2luZyB0aGUgb2JqZWN0IHJlYWR5IGZvciBDUFUKPiAtICogYWNjZXNzLCBv ciBhIHBhZ2VmbGlwIHdpbGwgd2FpdCB1bnRpbCB0aGUgR1BVIGlzIGNvbXBsZXRlIGJlZm9yZSBz aG93aW5nCj4gLSAqIHRoZSBmcmFtZSBvbiB0aGUgc2Nhbm91dC4KPiAtICoKPiAtICogSW4gb3Jk ZXIgdG8gdXNlIGEgZmVuY2UsIHRoZSBvYmplY3QgbXVzdCB0cmFjayB0aGUgZmVuY2UgaXQgbmVl ZHMgdG8KPiAtICogc2VyaWFsaXNlIHdpdGguIEZvciBleGFtcGxlLCBHRU0gb2JqZWN0cyB3YW50 IHRvIHRyYWNrIGJvdGggcmVhZCBhbmQKPiAtICogd3JpdGUgYWNjZXNzIHNvIHRoYXQgd2UgY2Fu IHBlcmZvcm0gY29uY3VycmVudCByZWFkIG9wZXJhdGlvbnMgYmV0d2Vlbgo+IC0gKiB0aGUgQ1BV IGFuZCBHUFUgZW5naW5lcywgYXMgd2VsbCBhcyB3YWl0aW5nIGZvciBhbGwgcmVuZGVyaW5nIHRv Cj4gLSAqIGNvbXBsZXRlLCBvciB3YWl0aW5nIGZvciB0aGUgbGFzdCBHUFUgdXNlciBvZiBhICJm ZW5jZSByZWdpc3RlciIuIFRoZQo+IC0gKiBvYmplY3QgdGhlbiBlbWJlZHMgYSAjaTkxNV9nZW1f YWN0aXZlIHRvIHRyYWNrIHRoZSBtb3N0IHJlY2VudCAoaW4KPiAtICogcmV0aXJlbWVudCBvcmRl cikgcmVxdWVzdCByZWxldmFudCBmb3IgdGhlIGRlc2lyZWQgbW9kZSBvZiBhY2Nlc3MuCj4gLSAq IFRoZSAjaTkxNV9nZW1fYWN0aXZlIGlzIHVwZGF0ZWQgd2l0aCBpOTE1X2dlbV9hY3RpdmVfc2V0 KCkgdG8gdHJhY2sgdGhlCj4gLSAqIG1vc3QgcmVjZW50IGZlbmNlIHJlcXVlc3QsIHR5cGljYWxs eSB0aGlzIGlzIGRvbmUgYXMgcGFydCBvZgo+IC0gKiBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSgp Lgo+IC0gKgo+IC0gKiBXaGVuIHRoZSAjaTkxNV9nZW1fYWN0aXZlIGNvbXBsZXRlcyAoaXMgcmV0 aXJlZCksIGl0IHdpbGwKPiAtICogc2lnbmFsIGl0cyBjb21wbGV0aW9uIHRvIHRoZSBvd25lciB0 aHJvdWdoIGEgY2FsbGJhY2sgYXMgd2VsbCBhcyBtYXJrCj4gLSAqIGl0c2VsZiBhcyBpZGxlIChp OTE1X2dlbV9hY3RpdmUucmVxdWVzdCA9PSBOVUxMKS4gVGhlIG93bmVyCj4gLSAqIGNhbiB0aGVu IHBlcmZvcm0gYW55IGFjdGlvbiwgc3VjaCBhcyBkZWxheWVkIGZyZWVpbmcgb2YgYW4gYWN0aXZl Cj4gLSAqIHJlc291cmNlIGluY2x1ZGluZyBpdHNlbGYuCj4gLSAqLwo+IC1zdHJ1Y3QgaTkxNV9n ZW1fYWN0aXZlOwo+IC0KPiAtdHlwZWRlZiB2b2lkICgqaTkxNV9nZW1fcmV0aXJlX2ZuKShzdHJ1 Y3QgaTkxNV9nZW1fYWN0aXZlICosCj4gLQkJCQkgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICopOwo+ IC0KPiAtc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSB7Cj4gLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0IF9f cmN1ICpyZXF1ZXN0Owo+IC0Jc3RydWN0IGxpc3RfaGVhZCBsaW5rOwo+IC0JaTkxNV9nZW1fcmV0 aXJlX2ZuIHJldGlyZTsKPiAtfTsKPiAtCj4gLXZvaWQgaTkxNV9nZW1fcmV0aXJlX25vb3Aoc3Ry dWN0IGk5MTVfZ2VtX2FjdGl2ZSAqLAo+IC0JCQkgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVl c3QpOwo+IC0KPiAtLyoqCj4gLSAqIGluaXRfcmVxdWVzdF9hY3RpdmUgLSBwcmVwYXJlcyB0aGUg YWN0aXZpdHkgdHJhY2tlciBmb3IgdXNlCj4gLSAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNr ZXIKPiAtICogQGZ1bmMgLSBhIGNhbGxiYWNrIHdoZW4gdGhlbiB0aGUgdHJhY2tlciBpcyByZXRp cmVkIChiZWNvbWVzIGlkbGUpLAo+IC0gKiAgICAgICAgIGNhbiBiZSBOVUxMCj4gLSAqCj4gLSAq IGluaXRfcmVxdWVzdF9hY3RpdmUoKSBwcmVwYXJlcyB0aGUgZW1iZWRkZWQgQGFjdGl2ZSBzdHJ1 Y3QgZm9yIHVzZSBhcwo+IC0gKiBhbiBhY3Rpdml0eSB0cmFja2VyLCB0aGF0IGlzIGZvciB0cmFj a2luZyB0aGUgbGFzdCBrbm93biBhY3RpdmUgcmVxdWVzdAo+IC0gKiBhc3NvY2lhdGVkIHdpdGgg aXQuIFdoZW4gdGhlIGxhc3QgcmVxdWVzdCBiZWNvbWVzIGlkbGUsIHdoZW4gaXQgaXMgcmV0aXJl ZAo+IC0gKiBhZnRlciBjb21wbGV0aW9uLCB0aGUgb3B0aW9uYWwgY2FsbGJhY2sgQGZ1bmMgaXMg aW52b2tlZC4KPiAtICovCj4gLXN0YXRpYyBpbmxpbmUgdm9pZAo+IC1pbml0X3JlcXVlc3RfYWN0 aXZlKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKPiAtCQkgICAgaTkxNV9nZW1fcmV0 aXJlX2ZuIHJldGlyZSkKPiAtewo+IC0JUkNVX0lOSVRfUE9JTlRFUihhY3RpdmUtPnJlcXVlc3Qs IE5VTEwpOwo+IC0JSU5JVF9MSVNUX0hFQUQoJmFjdGl2ZS0+bGluayk7Cj4gLQlhY3RpdmUtPnJl dGlyZSA9IHJldGlyZSA/OiBpOTE1X2dlbV9yZXRpcmVfbm9vcDsKPiAtfQo+IC0KPiAtLyoqCj4g LSAqIGk5MTVfZ2VtX2FjdGl2ZV9zZXQgLSB1cGRhdGVzIHRoZSB0cmFja2VyIHRvIHdhdGNoIHRo ZSBjdXJyZW50IHJlcXVlc3QKPiAtICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJhY2tlcgo+IC0g KiBAcmVxdWVzdCAtIHRoZSByZXF1ZXN0IHRvIHdhdGNoCj4gLSAqCj4gLSAqIGk5MTVfZ2VtX2Fj dGl2ZV9zZXQoKSB3YXRjaGVzIHRoZSBnaXZlbiBAcmVxdWVzdCBmb3IgY29tcGxldGlvbi4gV2hp bHN0Cj4gLSAqIHRoYXQgQHJlcXVlc3QgaXMgYnVzeSwgdGhlIEBhY3RpdmUgcmVwb3J0cyBidXN5 LiBXaGVuIHRoYXQgQHJlcXVlc3QgaXMKPiAtICogcmV0aXJlZCwgdGhlIEBhY3RpdmUgdHJhY2tl ciBpcyB1cGRhdGVkIHRvIHJlcG9ydCBpZGxlLgo+IC0gKi8KPiAtc3RhdGljIGlubGluZSB2b2lk Cj4gLWk5MTVfZ2VtX2FjdGl2ZV9zZXQoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAo+ IC0JCSAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+IC17Cj4gLQlsaXN0X21vdmUo JmFjdGl2ZS0+bGluaywgJnJlcXVlc3QtPmFjdGl2ZV9saXN0KTsKPiAtCXJjdV9hc3NpZ25fcG9p bnRlcihhY3RpdmUtPnJlcXVlc3QsIHJlcXVlc3QpOwo+IC19Cj4gLQo+IC0vKioKPiAtICogaTkx NV9nZW1fYWN0aXZlX3NldF9yZXRpcmVfZm4gLSB1cGRhdGVzIHRoZSByZXRpcmVtZW50IGNhbGxi YWNrCj4gLSAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIKPiAtICogQGZuIC0gdGhlIHJv dXRpbmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgaXMgcmV0aXJlZAo+IC0gKiBAbXV0ZXggLSBz dHJ1Y3RfbXV0ZXggdXNlZCB0byBndWFyZCByZXRpcmVtZW50cwo+IC0gKgo+IC0gKiBpOTE1X2dl bV9hY3RpdmVfc2V0X3JldGlyZV9mbigpIHVwZGF0ZXMgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGhh dAo+IC0gKiBpcyBjYWxsZWQgd2hlbiB0aGUgZmluYWwgcmVxdWVzdCBhc3NvY2lhdGVkIHdpdGgg dGhlIEBhY3RpdmUgdHJhY2tlcgo+IC0gKiBpcyByZXRpcmVkLgo+IC0gKi8KPiAtc3RhdGljIGlu bGluZSB2b2lkCj4gLWk5MTVfZ2VtX2FjdGl2ZV9zZXRfcmV0aXJlX2ZuKHN0cnVjdCBpOTE1X2dl bV9hY3RpdmUgKmFjdGl2ZSwKPiAtCQkJICAgICAgaTkxNV9nZW1fcmV0aXJlX2ZuIGZuLAo+IC0J CQkgICAgICBzdHJ1Y3QgbXV0ZXggKm11dGV4KQo+IC17Cj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxk KG11dGV4KTsKPiAtCWFjdGl2ZS0+cmV0aXJlID0gZm4gPzogaTkxNV9nZW1fcmV0aXJlX25vb3A7 Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gLV9faTkx NV9nZW1fYWN0aXZlX3BlZWsoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQo+ IC17Cj4gLQkvKgo+IC0JICogSW5zaWRlIHRoZSBlcnJvciBjYXB0dXJlIChydW5uaW5nIHdpdGgg dGhlIGRyaXZlciBpbiBhbiB1bmtub3duCj4gLQkgKiBzdGF0ZSksIHdlIHdhbnQgdG8gYmVuZCB0 aGUgcnVsZXMgc2xpZ2h0bHkgKGEgbG90KS4KPiAtCSAqCj4gLQkgKiBXb3JrIGlzIGluIHByb2dy ZXNzIHRvIG1ha2UgaXQgc2FmZXIsIGluIHRoZSBtZWFudGltZSB0aGlzIGtlZXBzCj4gLQkgKiB0 aGUga25vd24gaXNzdWUgZnJvbSBzcGFtbWluZyB0aGUgbG9ncy4KPiAtCSAqLwo+IC0JcmV0dXJu IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYWN0aXZlLT5yZXF1ZXN0LCAxKTsKPiAtfQo+IC0K PiAtLyoqCj4gLSAqIGk5MTVfZ2VtX2FjdGl2ZV9yYXcgLSByZXR1cm4gdGhlIGFjdGl2ZSByZXF1 ZXN0Cj4gLSAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIKPiAtICoKPiAtICogaTkxNV9n ZW1fYWN0aXZlX3JhdygpIHJldHVybnMgdGhlIGN1cnJlbnQgcmVxdWVzdCBiZWluZyB0cmFja2Vk LCBvciBOVUxMLgo+IC0gKiBJdCBkb2VzIG5vdCBvYnRhaW4gYSByZWZlcmVuY2Ugb24gdGhlIHJl cXVlc3QgZm9yIHRoZSBjYWxsZXIsIHNvIHRoZSBjYWxsZXIKPiAtICogbXVzdCBob2xkIHN0cnVj dF9tdXRleC4KPiAtICovCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4g LWk5MTVfZ2VtX2FjdGl2ZV9yYXcoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZl LCBzdHJ1Y3QgbXV0ZXggKm11dGV4KQo+IC17Cj4gLQlyZXR1cm4gcmN1X2RlcmVmZXJlbmNlX3By b3RlY3RlZChhY3RpdmUtPnJlcXVlc3QsCj4gLQkJCQkJIGxvY2tkZXBfaXNfaGVsZChtdXRleCkp Owo+IC19Cj4gLQo+IC0vKioKPiAtICogaTkxNV9nZW1fYWN0aXZlX3BlZWsgLSByZXBvcnQgdGhl IGFjdGl2ZSByZXF1ZXN0IGJlaW5nIG1vbml0b3JlZAo+IC0gKiBAYWN0aXZlIC0gdGhlIGFjdGl2 ZSB0cmFja2VyCj4gLSAqCj4gLSAqIGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKCkgcmV0dXJucyB0aGUg Y3VycmVudCByZXF1ZXN0IGJlaW5nIHRyYWNrZWQgaWYKPiAtICogc3RpbGwgYWN0aXZlLCBvciBO VUxMLiBJdCBkb2VzIG5vdCBvYnRhaW4gYSByZWZlcmVuY2Ugb24gdGhlIHJlcXVlc3QKPiAtICog Zm9yIHRoZSBjYWxsZXIsIHNvIHRoZSBjYWxsZXIgbXVzdCBob2xkIHN0cnVjdF9tdXRleC4KPiAt ICovCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gLWk5MTVfZ2VtX2Fj dGl2ZV9wZWVrKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwgc3RydWN0IG11 dGV4ICptdXRleCkKPiAtewo+IC0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdDsKPiAtCj4g LQlyZXF1ZXN0ID0gaTkxNV9nZW1fYWN0aXZlX3JhdyhhY3RpdmUsIG11dGV4KTsKPiAtCWlmICgh cmVxdWVzdCB8fCBpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QpKQo+IC0JCXJldHVybiBO VUxMOwo+IC0KPiAtCXJldHVybiByZXF1ZXN0Owo+IC19Cj4gLQo+IC0vKioKPiAtICogaTkxNV9n ZW1fYWN0aXZlX2dldCAtIHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJlcXVlc3QK PiAtICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJhY2tlcgo+IC0gKgo+IC0gKiBpOTE1X2dlbV9h Y3RpdmVfZ2V0KCkgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJlcXVlc3QsIG9y IE5VTEwKPiAtICogaWYgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGlkbGUuIFRoZSBjYWxsZXIgbXVz dCBob2xkIHN0cnVjdF9tdXRleC4KPiAtICovCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVf cmVxdWVzdCAqCj4gLWk5MTVfZ2VtX2FjdGl2ZV9nZXQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2Fj dGl2ZSAqYWN0aXZlLCBzdHJ1Y3QgbXV0ZXggKm11dGV4KQo+IC17Cj4gLQlyZXR1cm4gaTkxNV9y ZXF1ZXN0X2dldChpOTE1X2dlbV9hY3RpdmVfcGVlayhhY3RpdmUsIG11dGV4KSk7Cj4gLX0KPiAt Cj4gLS8qKgo+IC0gKiBfX2k5MTVfZ2VtX2FjdGl2ZV9nZXRfcmN1IC0gcmV0dXJuIGEgcmVmZXJl bmNlIHRvIHRoZSBhY3RpdmUgcmVxdWVzdAo+IC0gKiBAYWN0aXZlIC0gdGhlIGFjdGl2ZSB0cmFj a2VyCj4gLSAqCj4gLSAqIF9faTkxNV9nZW1fYWN0aXZlX2dldCgpIHJldHVybnMgYSByZWZlcmVu Y2UgdG8gdGhlIGFjdGl2ZSByZXF1ZXN0LCBvciBOVUxMCj4gLSAqIGlmIHRoZSBhY3RpdmUgdHJh Y2tlciBpcyBpZGxlLiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgUkNVIHJlYWQgbG9jaywgYnV0 Cj4gLSAqIHRoZSByZXR1cm5lZCBwb2ludGVyIGlzIHNhZmUgdG8gdXNlIG91dHNpZGUgb2YgUkNV Lgo+IC0gKi8KPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAtX19pOTE1 X2dlbV9hY3RpdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUp Cj4gLXsKPiAtCS8qCj4gLQkgKiBQZXJmb3JtaW5nIGEgbG9ja2xlc3MgcmV0cmlldmFsIG9mIHRo ZSBhY3RpdmUgcmVxdWVzdCBpcyBzdXBlcgo+IC0JICogdHJpY2t5LiBTTEFCX1RZUEVTQUZFX0JZ X1JDVSBtZXJlbHkgZ3VhcmFudGVlcyB0aGF0IHRoZSBiYWNraW5nCj4gLQkgKiBzbGFiIG9mIHJl cXVlc3Qgb2JqZWN0cyB3aWxsIG5vdCBiZSBmcmVlZCB3aGlsc3Qgd2UgaG9sZCB0aGUKPiAtCSAq IFJDVSByZWFkIGxvY2suIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IHRoZSByZXF1ZXN0IGl0 c2VsZgo+IC0JICogd2lsbCBub3QgYmUgZnJlZWQgYW5kIHRoZW4gKnJldXNlZCouIFZpeiwKPiAt CSAqCj4gLQkgKiBUaHJlYWQgQQkJCVRocmVhZCBCCj4gLQkgKgo+IC0JICogcnEgPSBhY3RpdmUu cmVxdWVzdAo+IC0JICoJCQkJcmV0aXJlKHJxKSAtPiBmcmVlKHJxKTsKPiAtCSAqCQkJCShycSBp cyBub3cgZmlyc3Qgb24gdGhlIHNsYWIgZnJlZWxpc3QpCj4gLQkgKgkJCQlhY3RpdmUucmVxdWVz dCA9IE5VTEwKPiAtCSAqCj4gLQkgKgkJCQlycSA9IG5ldyBzdWJtaXNzaW9uIG9uIGEgbmV3IG9i amVjdAo+IC0JICogcmVmKHJxKQo+IC0JICoKPiAtCSAqIFRvIHByZXZlbnQgdGhlIHJlcXVlc3Qg ZnJvbSBiZWluZyByZXVzZWQgd2hpbHN0IHRoZSBjYWxsZXIKPiAtCSAqIHVzZXMgaXQsIHdlIHRh a2UgYSByZWZlcmVuY2UgbGlrZSBub3JtYWwuIFdoaWxzdCBhY3F1aXJpbmcKPiAtCSAqIHRoZSBy ZWZlcmVuY2Ugd2UgY2hlY2sgdGhhdCBpdCBpcyBub3QgaW4gYSBkZXN0cm95ZWQgc3RhdGUKPiAt CSAqIChyZWZjbnQgPT0gMCkuIFRoYXQgcHJldmVudHMgdGhlIHJlcXVlc3QgYmVpbmcgcmVhbGxv Y2F0ZWQKPiAtCSAqIHdoaWxzdCB0aGUgY2FsbGVyIGhvbGRzIG9uIHRvIGl0LiBUbyBjaGVjayB0 aGF0IHRoZSByZXF1ZXN0Cj4gLQkgKiB3YXMgbm90IHJlYWxsb2NhdGVkIGFzIHdlIGFjcXVpcmVk IHRoZSByZWZlcmVuY2Ugd2UgaGF2ZSB0bwo+IC0JICogY2hlY2sgdGhhdCBvdXIgcmVxdWVzdCBy ZW1haW5zIHRoZSBhY3RpdmUgcmVxdWVzdCBhY3Jvc3MKPiAtCSAqIHRoZSBsb29rdXAsIGluIHRo ZSBzYW1lIG1hbm5lciBhcyBhIHNlcWxvY2suIFRoZSB2aXNpYmlsaXR5Cj4gLQkgKiBvZiB0aGUg cG9pbnRlciB2ZXJzdXMgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBpcyBjb250cm9sbGVkCj4gLQkg KiBieSB1c2luZyBSQ1UgYmFycmllcnMgKHJjdV9kZXJlZmVyZW5jZSBhbmQgcmN1X2Fzc2lnbl9w b2ludGVyKS4KPiAtCSAqCj4gLQkgKiBJbiB0aGUgbWlkZGxlIG9mIGFsbCB0aGF0LCB3ZSBpbnNw ZWN0IHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMKPiAtCSAqIGNvbXBsZXRlLiBSZXRpcmluZyBpcyBs YXp5IHNvIHRoZSByZXF1ZXN0IG1heSBiZSBjb21wbGV0ZWQgbG9uZwo+IC0JICogYmVmb3JlIHRo ZSBhY3RpdmUgdHJhY2tlciBpcyB1cGRhdGVkLiBRdWVyeWluZyB3aGV0aGVyIHRoZQo+IC0JICog cmVxdWVzdCBpcyBjb21wbGV0ZSBpcyBmYXIgY2hlYXBlciAoYXMgaXQgaW52b2x2ZXMgbm8gbG9j a2VkCj4gLQkgKiBpbnN0cnVjdGlvbnMgc2V0dGluZyBjYWNoZWxpbmVzIHRvIGV4Y2x1c2l2ZSkg dGhhbiBhY3F1aXJpbmcKPiAtCSAqIHRoZSByZWZlcmVuY2UsIHNvIHdlIGRvIGl0IGZpcnN0LiBU aGUgUkNVIHJlYWQgbG9jayBlbnN1cmVzIHRoZQo+IC0JICogcG9pbnRlciBkZXJlZmVyZW5jZSBp cyB2YWxpZCwgYnV0IGRvZXMgbm90IGVuc3VyZSB0aGF0IHRoZQo+IC0JICogc2Vxbm8gbm9yIEhX UyBpcyB0aGUgcmlnaHQgb25lISBIb3dldmVyLCBpZiB0aGUgcmVxdWVzdCB3YXMKPiAtCSAqIHJl YWxsb2NhdGVkLCB0aGF0IG1lYW5zIHRoZSBhY3RpdmUgdHJhY2tlcidzIHJlcXVlc3Qgd2FzIGNv bXBsZXRlLgo+IC0JICogSWYgdGhlIG5ldyByZXF1ZXN0IGlzIGFsc28gY29tcGxldGUsIHRoZW4g Ym90aCBhcmUgYW5kIHdlIGNhbgo+IC0JICoganVzdCByZXBvcnQgdGhlIGFjdGl2ZSB0cmFja2Vy IGlzIGlkbGUuIElmIHRoZSBuZXcgcmVxdWVzdCBpcwo+IC0JICogaW5jb21wbGV0ZSwgdGhlbiB3 ZSBhY3F1aXJlIGEgcmVmZXJlbmNlIG9uIGl0IGFuZCBjaGVjayB0aGF0Cj4gLQkgKiBpdCByZW1h aW5lZCB0aGUgYWN0aXZlIHJlcXVlc3QuCj4gLQkgKgo+IC0JICogSXQgaXMgdGhlbiBpbXBlcmF0 aXZlIHRoYXQgd2UgZG8gbm90IHplcm8gdGhlIHJlcXVlc3Qgb24KPiAtCSAqIHJlYWxsb2NhdGlv biwgc28gdGhhdCB3ZSBjYW4gY2hhc2UgdGhlIGRhbmdsaW5nIHBvaW50ZXJzIQo+IC0JICogU2Vl IGk5MTVfcmVxdWVzdF9hbGxvYygpLgo+IC0JICovCj4gLQlkbyB7Cj4gLQkJc3RydWN0IGk5MTVf cmVxdWVzdCAqcmVxdWVzdDsKPiAtCj4gLQkJcmVxdWVzdCA9IHJjdV9kZXJlZmVyZW5jZShhY3Rp dmUtPnJlcXVlc3QpOwo+IC0JCWlmICghcmVxdWVzdCB8fCBpOTE1X3JlcXVlc3RfY29tcGxldGVk KHJlcXVlc3QpKQo+IC0JCQlyZXR1cm4gTlVMTDsKPiAtCj4gLQkJLyoKPiAtCQkgKiBBbiBlc3Bl Y2lhbGx5IHNpbGx5IGNvbXBpbGVyIGNvdWxkIGRlY2lkZSB0byByZWNvbXB1dGUgdGhlCj4gLQkJ ICogcmVzdWx0IG9mIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQsIG1vcmUgc3BlY2lmaWNhbGx5Cj4g LQkJICogcmUtZW1pdCB0aGUgbG9hZCBmb3IgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8uIEEgcmFjZSB3 b3VsZCBjYXRjaAo+IC0JCSAqIGEgbGF0ZXIgc2Vxbm8gdmFsdWUsIHdoaWNoIGNvdWxkIGZsaXAg dGhlIHJlc3VsdCBmcm9tIHRydWUgdG8KPiAtCQkgKiBmYWxzZS4gV2hpY2ggbWVhbnMgcGFydCBv ZiB0aGUgaW5zdHJ1Y3Rpb25zIGJlbG93IG1pZ2h0IG5vdAo+IC0JCSAqIGJlIGV4ZWN1dGVkLCB3 aGlsZSBsYXRlciBvbiBpbnN0cnVjdGlvbnMgYXJlIGV4ZWN1dGVkLiBEdWUgdG8KPiAtCQkgKiBi YXJyaWVycyB3aXRoaW4gdGhlIHJlZmNvdW50aW5nIHRoZSBpbmNvbnNpc3RlbmN5IGNhbid0IHJl YWNoCj4gLQkJICogcGFzdCB0aGUgY2FsbCB0byBpOTE1X3JlcXVlc3RfZ2V0X3JjdSwgYnV0IG5v dCBleGVjdXRpbmcKPiAtCQkgKiB0aGF0IHdoaWxlIHN0aWxsIGV4ZWN1dGluZyBpOTE1X3JlcXVl c3RfcHV0KCkgY3JlYXRlcwo+IC0JCSAqIGhhdm9jIGVub3VnaC4gIFByZXZlbnQgdGhpcyB3aXRo IGEgY29tcGlsZXIgYmFycmllci4KPiAtCQkgKi8KPiAtCQliYXJyaWVyKCk7Cj4gLQo+IC0JCXJl cXVlc3QgPSBpOTE1X3JlcXVlc3RfZ2V0X3JjdShyZXF1ZXN0KTsKPiAtCj4gLQkJLyoKPiAtCQkg KiBXaGF0IHN0b3BzIHRoZSBmb2xsb3dpbmcgcmN1X2FjY2Vzc19wb2ludGVyKCkgZnJvbSBvY2N1 cnJpbmcKPiAtCQkgKiBiZWZvcmUgdGhlIGFib3ZlIGk5MTVfcmVxdWVzdF9nZXRfcmN1KCk/IElm IHdlIHdlcmUKPiAtCQkgKiB0byByZWFkIHRoZSB2YWx1ZSBiZWZvcmUgcGF1c2luZyB0byBnZXQg dGhlIHJlZmVyZW5jZSB0bwo+IC0JCSAqIHRoZSByZXF1ZXN0LCB3ZSBtYXkgbm90IG5vdGljZSBh IGNoYW5nZSBpbiB0aGUgYWN0aXZlCj4gLQkJICogdHJhY2tlci4KPiAtCQkgKgo+IC0JCSAqIFRo ZSByY3VfYWNjZXNzX3BvaW50ZXIoKSBpcyBhIG1lcmUgY29tcGlsZXIgYmFycmllciwgd2hpY2gK PiAtCQkgKiBtZWFucyBib3RoIHRoZSBDUFUgYW5kIGNvbXBpbGVyIGFyZSBmcmVlIHRvIHBlcmZv cm0gdGhlCj4gLQkJICogbWVtb3J5IHJlYWQgd2l0aG91dCBjb25zdHJhaW50LiBUaGUgY29tcGls ZXIgb25seSBoYXMgdG8KPiAtCQkgKiBlbnN1cmUgdGhhdCBhbnkgb3BlcmF0aW9ucyBhZnRlciB0 aGUgcmN1X2FjY2Vzc19wb2ludGVyKCkKPiAtCQkgKiBvY2N1ciBhZnRlcndhcmRzIGluIHByb2dy YW0gb3JkZXIuIFRoaXMgbWVhbnMgdGhlIHJlYWQgbWF5Cj4gLQkJICogYmUgcGVyZm9ybWVkIGVh cmxpZXIgYnkgYW4gb3V0LW9mLW9yZGVyIENQVSwgb3IgYWR2ZW50dXJvdXMKPiAtCQkgKiBjb21w aWxlci4KPiAtCQkgKgo+IC0JCSAqIFRoZSBhdG9taWMgb3BlcmF0aW9uIGF0IHRoZSBoZWFydCBv Zgo+IC0JCSAqIGk5MTVfcmVxdWVzdF9nZXRfcmN1KCksIHNlZSBkbWFfZmVuY2VfZ2V0X3JjdSgp LCBpcwo+IC0JCSAqIGF0b21pY19pbmNfbm90X3plcm8oKSB3aGljaCBpcyBvbmx5IGEgZnVsbCBt ZW1vcnkgYmFycmllcgo+IC0JCSAqIHdoZW4gc3VjY2Vzc2Z1bC4gVGhhdCBpcywgaWYgaTkxNV9y ZXF1ZXN0X2dldF9yY3UoKQo+IC0JCSAqIHJldHVybnMgdGhlIHJlcXVlc3QgKGFuZCBzbyB3aXRo IHRoZSByZWZlcmVuY2UgY291bnRlZAo+IC0JCSAqIGluY3JlbWVudGVkKSB0aGVuIHRoZSBmb2xs b3dpbmcgcmVhZCBmb3IgcmN1X2FjY2Vzc19wb2ludGVyKCkKPiAtCQkgKiBtdXN0IG9jY3VyIGFm dGVyIHRoZSBhdG9taWMgb3BlcmF0aW9uIGFuZCBzbyBjb25maXJtCj4gLQkJICogdGhhdCB0aGlz IHJlcXVlc3QgaXMgdGhlIG9uZSBjdXJyZW50bHkgYmVpbmcgdHJhY2tlZC4KPiAtCQkgKgo+IC0J CSAqIFRoZSBjb3JyZXNwb25kaW5nIHdyaXRlIGJhcnJpZXIgaXMgcGFydCBvZgo+IC0JCSAqIHJj dV9hc3NpZ25fcG9pbnRlcigpLgo+IC0JCSAqLwo+IC0JCWlmICghcmVxdWVzdCB8fCByZXF1ZXN0 ID09IHJjdV9hY2Nlc3NfcG9pbnRlcihhY3RpdmUtPnJlcXVlc3QpKQo+IC0JCQlyZXR1cm4gcmN1 X3BvaW50ZXJfaGFuZG9mZihyZXF1ZXN0KTsKPiAtCj4gLQkJaTkxNV9yZXF1ZXN0X3B1dChyZXF1 ZXN0KTsKPiAtCX0gd2hpbGUgKDEpOwo+IC19Cj4gLQo+IC0vKioKPiAtICogaTkxNV9nZW1fYWN0 aXZlX2dldF91bmxvY2tlZCAtIHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJlcXVl c3QKPiAtICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJhY2tlcgo+IC0gKgo+IC0gKiBpOTE1X2dl bV9hY3RpdmVfZ2V0X3VubG9ja2VkKCkgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZl IHJlcXVlc3QsCj4gLSAqIG9yIE5VTEwgaWYgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGlkbGUuIFRo ZSByZWZlcmVuY2UgaXMgb2J0YWluZWQgdW5kZXIgUkNVLAo+IC0gKiBzbyBubyBsb2NraW5nIGlz IHJlcXVpcmVkIGJ5IHRoZSBjYWxsZXIuCj4gLSAqCj4gLSAqIFRoZSByZWZlcmVuY2Ugc2hvdWxk IGJlIGZyZWVkIHdpdGggaTkxNV9yZXF1ZXN0X3B1dCgpLgo+IC0gKi8KPiAtc3RhdGljIGlubGlu ZSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAtaTkxNV9nZW1fYWN0aXZlX2dldF91bmxvY2tlZChj b25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUpCj4gLXsKPiAtCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJlcXVlc3Q7Cj4gLQo+IC0JcmN1X3JlYWRfbG9jaygpOwo+IC0JcmVxdWVzdCA9 IF9faTkxNV9nZW1fYWN0aXZlX2dldF9yY3UoYWN0aXZlKTsKPiAtCXJjdV9yZWFkX3VubG9jaygp Owo+IC0KPiAtCXJldHVybiByZXF1ZXN0Owo+IC19Cj4gLQo+IC0vKioKPiAtICogaTkxNV9nZW1f YWN0aXZlX2lzc2V0IC0gcmVwb3J0IHdoZXRoZXIgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGFzc2ln bmVkCj4gLSAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIKPiAtICoKPiAtICogaTkxNV9n ZW1fYWN0aXZlX2lzc2V0KCkgcmV0dXJucyB0cnVlIGlmIHRoZSBhY3RpdmUgdHJhY2tlciBpcyBj dXJyZW50bHkKPiAtICogYXNzaWduZWQgdG8gYSByZXF1ZXN0LiBEdWUgdG8gdGhlIGxhenkgcmV0 aXJpbmcsIHRoYXQgcmVxdWVzdCBtYXkgYmUgaWRsZQo+IC0gKiBhbmQgdGhpcyBtYXkgcmVwb3J0 IHN0YWxlIGluZm9ybWF0aW9uLgo+IC0gKi8KPiAtc3RhdGljIGlubGluZSBib29sCj4gLWk5MTVf Z2VtX2FjdGl2ZV9pc3NldChjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUpCj4g LXsKPiAtCXJldHVybiByY3VfYWNjZXNzX3BvaW50ZXIoYWN0aXZlLT5yZXF1ZXN0KTsKPiAtfQo+ IC0KPiAtLyoqCj4gLSAqIGk5MTVfZ2VtX2FjdGl2ZV93YWl0IC0gd2FpdHMgdW50aWwgdGhlIHJl cXVlc3QgaXMgY29tcGxldGVkCj4gLSAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHJlcXVlc3Qgb24g d2hpY2ggdG8gd2FpdAo+IC0gKiBAZmxhZ3MgLSBob3cgdG8gd2FpdAo+IC0gKiBAdGltZW91dCAt IGhvdyBsb25nIHRvIHdhaXQgYXQgbW9zdAo+IC0gKiBAcnBzIC0gdXNlcnNwYWNlIGNsaWVudCB0 byBjaGFyZ2UgZm9yIGEgd2FpdGJvb3N0Cj4gLSAqCj4gLSAqIGk5MTVfZ2VtX2FjdGl2ZV93YWl0 KCkgd2FpdHMgdW50aWwgdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkIGJlZm9yZQo+IC0gKiByZXR1 cm5pbmcsIHdpdGhvdXQgcmVxdWlyaW5nIGFueSBsb2NrcyB0byBiZSBoZWxkLiBOb3RlIHRoYXQg aXQgZG9lcyBub3QKPiAtICogcmV0aXJlIGFueSByZXF1ZXN0cyBiZWZvcmUgcmV0dXJuaW5nLgo+ IC0gKgo+IC0gKiBUaGlzIGZ1bmN0aW9uIHJlbGllcyBvbiBSQ1UgaW4gb3JkZXIgdG8gYWNxdWly ZSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUKPiAtICogcmVxdWVzdCB3aXRob3V0IGhvbGRp bmcgYW55IGxvY2tzLiBTZWUgX19pOTE1X2dlbV9hY3RpdmVfZ2V0X3JjdSgpIGZvciB0aGUKPiAt ICogZ2xvcnkgZGV0YWlscyBvbiBob3cgdGhhdCBpcyBtYW5hZ2VkLiBPbmNlIHRoZSByZWZlcmVu Y2UgaXMgYWNxdWlyZWQsIHdlCj4gLSAqIGNhbiB0aGVuIHdhaXQgdXBvbiB0aGUgcmVxdWVzdCwg YW5kIGFmdGVyd2FyZHMgcmVsZWFzZSBvdXIgcmVmZXJlbmNlLAo+IC0gKiBmcmVlIG9mIGFueSBs b2NraW5nLgo+IC0gKgo+IC0gKiBUaGlzIGZ1bmN0aW9uIHdyYXBzIGk5MTVfcmVxdWVzdF93YWl0 KCksIHNlZSBpdCBmb3IgdGhlIGZ1bGwgZGV0YWlscyBvbgo+IC0gKiB0aGUgYXJndW1lbnRzLgo+ IC0gKgo+IC0gKiBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCwgb3IgYSBuZWdhdGl2ZSBlcnJvciBj b2RlLgo+IC0gKi8KPiAtc3RhdGljIGlubGluZSBpbnQKPiAtaTkxNV9nZW1fYWN0aXZlX3dhaXQo Y29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp Cj4gLXsKPiAtCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Q7Cj4gLQlsb25nIHJldCA9IDA7 Cj4gLQo+IC0JcmVxdWVzdCA9IGk5MTVfZ2VtX2FjdGl2ZV9nZXRfdW5sb2NrZWQoYWN0aXZlKTsK PiAtCWlmIChyZXF1ZXN0KSB7Cj4gLQkJcmV0ID0gaTkxNV9yZXF1ZXN0X3dhaXQocmVxdWVzdCwg ZmxhZ3MsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiAtCQlpOTE1X3JlcXVlc3RfcHV0KHJlcXVl c3QpOwo+IC0JfQo+IC0KPiAtCXJldHVybiByZXQgPCAwID8gcmV0IDogMDsKPiAtfQo+IC0KPiAt LyoqCj4gLSAqIGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUgLSB3YWl0cyB1bnRpbCB0aGUgcmVxdWVz dCBpcyByZXRpcmVkCj4gLSAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHJlcXVlc3Qgb24gd2hpY2gg dG8gd2FpdAo+IC0gKgo+IC0gKiBpOTE1X2dlbV9hY3RpdmVfcmV0aXJlKCkgd2FpdHMgdW50aWwg dGhlIHJlcXVlc3QgaXMgY29tcGxldGVkLAo+IC0gKiBhbmQgdGhlbiBlbnN1cmVzIHRoYXQgYXQg bGVhc3QgdGhlIHJldGlyZW1lbnQgaGFuZGxlciBmb3IgdGhpcwo+IC0gKiBAYWN0aXZlIHRyYWNr ZXIgaXMgY2FsbGVkIGJlZm9yZSByZXR1cm5pbmcuIElmIHRoZSBAYWN0aXZlCj4gLSAqIHRyYWNr ZXIgaXMgaWRsZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHkuCj4gLSAqLwo+IC1z dGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKPiAtaTkxNV9nZW1fYWN0aXZlX3JldGlyZShz dHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCj4gLQkJICAgICAgIHN0cnVjdCBtdXRleCAq bXV0ZXgpCj4gLXsKPiAtCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Q7Cj4gLQlsb25nIHJl dDsKPiAtCj4gLQlyZXF1ZXN0ID0gaTkxNV9nZW1fYWN0aXZlX3JhdyhhY3RpdmUsIG11dGV4KTsK PiAtCWlmICghcmVxdWVzdCkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlyZXQgPSBpOTE1X3JlcXVl c3Rfd2FpdChyZXF1ZXN0LAo+IC0JCQkJSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfCBJOTE1X1dB SVRfTE9DS0VELAo+IC0JCQkJTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+IC0JaWYgKHJldCA8IDAp Cj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlsaXN0X2RlbF9pbml0KCZhY3RpdmUtPmxpbmspOwo+ IC0JUkNVX0lOSVRfUE9JTlRFUihhY3RpdmUtPnJlcXVlc3QsIE5VTEwpOwo+IC0KPiAtCWFjdGl2 ZS0+cmV0aXJlKGFjdGl2ZSwgcmVxdWVzdCk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4g LSNkZWZpbmUgZm9yX2VhY2hfYWN0aXZlKG1hc2ssIGlkeCkgXAo+IC0JZm9yICg7IG1hc2sgPyBp ZHggPSBmZnMobWFzaykgLSAxLCAxIDogMDsgbWFzayAmPSB+QklUKGlkeCkpCj4gLQo+ICAgaW50 IGk5MTVfZ2xvYmFsX3JlcXVlc3RfaW5pdCh2b2lkKTsKPiAgIHZvaWQgaTkxNV9nbG9iYWxfcmVx dWVzdF9zaHJpbmsodm9pZCk7Cj4gICB2b2lkIGk5MTVfZ2xvYmFsX3JlcXVlc3RfZXhpdCh2b2lk KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jCj4gaW5kZXggY2ExOWZjZjI5YzViLi44NmQ5 YzQ2YWVmMTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jCj4gQEAgLTg4Nyw3ICs4 ODcsNyBAQCBzdGF0aWMgYm9vbCBfX2k5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRsLCAmaTkxNS0+Z3Qu dGltZWxpbmVzLmFjdGl2ZV9saXN0LCBsaW5rKSB7Cj4gICAJCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxOwo+ICAgCj4gLQkJcnEgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0X3VubG9ja2VkKCZ0bC0+bGFz dF9yZXF1ZXN0KTsKPiArCQlycSA9IGk5MTVfYWN0aXZlX3JlcXVlc3RfZ2V0X3VubG9ja2VkKCZ0 bC0+bGFzdF9yZXF1ZXN0KTsKPiAgIAkJaWYgKCFycSkKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYwo+IGluZGV4IGIzNTQ4NDNhNTA0MC4uYjIy MDJkMmU1OGEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxp bmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYwo+IEBAIC0x NjMsOCArMTYzLDggQEAgaW50IGk5MTVfdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKPiAgIAo+ICAgCXNwaW5fbG9ja19pbml0KCZ0aW1lbGluZS0+bG9jayk7Cj4g ICAKPiAtCWluaXRfcmVxdWVzdF9hY3RpdmUoJnRpbWVsaW5lLT5iYXJyaWVyLCBOVUxMKTsKPiAt CWluaXRfcmVxdWVzdF9hY3RpdmUoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsIE5VTEwpOwo+ICsJ SU5JVF9BQ1RJVkVfUkVRVUVTVCgmdGltZWxpbmUtPmJhcnJpZXIpOwo+ICsJSU5JVF9BQ1RJVkVf UkVRVUVTVCgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJnRp bWVsaW5lLT5yZXF1ZXN0cyk7Cj4gICAKPiAgIAlpOTE1X3N5bmNtYXBfaW5pdCgmdGltZWxpbmUt PnN5bmMpOwo+IEBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBpOTE1X3RpbWVsaW5lX2Zpbmkoc3Ry dWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lKQo+ICAgewo+ICAgCUdFTV9CVUdfT04odGltZWxp bmUtPnBpbl9jb3VudCk7Cj4gICAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmdGltZWxpbmUtPnJl cXVlc3RzKSk7Cj4gLQlHRU1fQlVHX09OKGk5MTVfZ2VtX2FjdGl2ZV9pc3NldCgmdGltZWxpbmUt PmJhcnJpZXIpKTsKPiArCUdFTV9CVUdfT04oaTkxNV9hY3RpdmVfcmVxdWVzdF9pc3NldCgmdGlt ZWxpbmUtPmJhcnJpZXIpKTsKPiAgIAo+ICAgCWk5MTVfc3luY21hcF9mcmVlKCZ0aW1lbGluZS0+ c3luYyk7Cj4gICAJaHdzcF9mcmVlKHRpbWVsaW5lKTsKPiBAQCAtMjY4LDI1ICsyNjgsNiBAQCBp OTE1X3RpbWVsaW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAly ZXR1cm4gdGltZWxpbmU7Cj4gICB9Cj4gICAKPiAtaW50IGk5MTVfdGltZWxpbmVfc2V0X2JhcnJp ZXIoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAt ewo+IC0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqb2xkOwo+IC0JaW50IGVycjsKPiAtCj4gLQlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZycS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+IC0JLyog TXVzdCBtYWludGFpbiBvcmRlcmluZyB3cnQgZXhpc3RpbmcgYmFycmllcnMgKi8KPiAtCW9sZCA9 IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJnRsLT5iYXJyaWVyLCAmcnEtPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+IC0JaWYgKG9sZCkgewo+IC0JCWVyciA9IGk5MTVfcmVxdWVzdF9hd2FpdF9kbWFf ZmVuY2UocnEsICZvbGQtPmZlbmNlKTsKPiAtCQlpZiAoZXJyKQo+IC0JCQlyZXR1cm4gZXJyOwo+ IC0JfQo+IC0KPiAtCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJnRsLT5iYXJyaWVyLCBycSk7Cj4gLQly ZXR1cm4gMDsKPiAtfQo+IC0KPiAgIGludCBpOTE1X3RpbWVsaW5lX3BpbihzdHJ1Y3QgaTkxNV90 aW1lbGluZSAqdGwpCj4gICB7Cj4gICAJaW50IGVycjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90 aW1lbGluZS5oCj4gaW5kZXggZDE2N2UwNDA3M2M1Li43YmVjN2QyZTQ1YmYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oCj4gQEAgLTI4LDYgKzI4LDcgQEAKPiAgICNpbmNs dWRlIDxsaW51eC9saXN0Lmg+Cj4gICAjaW5jbHVkZSA8bGludXgva3JlZi5oPgo+ICAgCj4gKyNp bmNsdWRlICJpOTE1X2FjdGl2ZS5oIgo+ICAgI2luY2x1ZGUgImk5MTVfcmVxdWVzdC5oIgo+ICAg I2luY2x1ZGUgImk5MTVfc3luY21hcC5oIgo+ICAgI2luY2x1ZGUgImk5MTVfdXRpbHMuaCIKPiBA QCAtNTgsMTAgKzU5LDEwIEBAIHN0cnVjdCBpOTE1X3RpbWVsaW5lIHsKPiAgIAo+ICAgCS8qIENv bnRhaW5zIGFuIFJDVSBndWFyZGVkIHBvaW50ZXIgdG8gdGhlIGxhc3QgcmVxdWVzdC4gTm8gcmVm ZXJlbmNlIGlzCj4gICAJICogaGVsZCB0byB0aGUgcmVxdWVzdCwgdXNlcnMgbXVzdCBjYXJlZnVs bHkgYWNxdWlyZSBhIHJlZmVyZW5jZSB0bwo+IC0JICogdGhlIHJlcXVlc3QgdXNpbmcgaTkxNV9n ZW1fYWN0aXZlX2dldF9yZXF1ZXN0X3JjdSgpLCBvciBob2xkIHRoZQo+ICsJICogdGhlIHJlcXVl c3QgdXNpbmcgaTkxNV9hY3RpdmVfcmVxdWVzdF9nZXRfcmVxdWVzdF9yY3UoKSwgb3IgaG9sZCB0 aGUKPiAgIAkgKiBzdHJ1Y3RfbXV0ZXguCj4gICAJICovCj4gLQlzdHJ1Y3QgaTkxNV9nZW1fYWN0 aXZlIGxhc3RfcmVxdWVzdDsKPiArCXN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0IGxhc3RfcmVx dWVzdDsKPiAgIAo+ICAgCS8qKgo+ICAgCSAqIFdlIHRyYWNrIHRoZSBtb3N0IHJlY2VudCBzZXFu byB0aGF0IHdlIHdhaXQgb24gaW4gZXZlcnkgY29udGV4dCBzbwo+IEBAIC04Miw3ICs4Myw3IEBA IHN0cnVjdCBpOTE1X3RpbWVsaW5lIHsKPiAgIAkgKiBzdWJzZXF1ZW50IHN1Ym1pc3Npb25zIHRv IHRoaXMgdGltZWxpbmUgYmUgZXhlY3V0ZWQgb25seSBhZnRlciB0aGUKPiAgIAkgKiBiYXJyaWVy IGhhcyBiZWVuIGNvbXBsZXRlZC4KPiAgIAkgKi8KPiAtCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUg YmFycmllcjsKPiArCXN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0IGJhcnJpZXI7Cj4gICAKPiAg IAlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4gICAJY29uc3QgY2hhciAqbmFtZTsKPiBAQCAtMTc0 LDcgKzE3NSwxMCBAQCB2b2lkIGk5MTVfdGltZWxpbmVzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpOwo+ICAgICogc3VibWlzc2lvbnMgb24gQHRpbWVsaW5lLiBTdWJzZXF1ZW50 IHJlcXVlc3RzIHdpbGwgbm90IGJlIHN1Ym1pdHRlZCB0byBHUFUKPiAgICAqIHVudGlsIHRoZSBi YXJyaWVyIGhhcyBiZWVuIGNvbXBsZXRlZC4KPiAgICAqLwo+IC1pbnQgaTkxNV90aW1lbGluZV9z ZXRfYmFycmllcihzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUsCj4gLQkJCSAgICAgIHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKPiArc3RhdGljIGlubGluZSBpbnQKPiAraTkxNV90aW1l bGluZV9zZXRfYmFycmllcihzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsIHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxKQo+ICt7Cj4gKwlyZXR1cm4gaTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoJnRsLT5i YXJyaWVyLCBycSk7Cj4gK30KPiAgIAo+ICAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5j Cj4gaW5kZXggZDQ3NzIwNjFlNjQyLi5iNzEzYmVkMjBjMzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdm1hLmMKPiBAQCAtMTIwLDcgKzEyMCw3IEBAIHZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gICAKPiAg IAlpOTE1X2FjdGl2ZV9pbml0KHZtLT5pOTE1LCAmdm1hLT5hY3RpdmUsIF9faTkxNV92bWFfcmV0 aXJlKTsKPiAtCWluaXRfcmVxdWVzdF9hY3RpdmUoJnZtYS0+bGFzdF9mZW5jZSwgTlVMTCk7Cj4g KwlJTklUX0FDVElWRV9SRVFVRVNUKCZ2bWEtPmxhc3RfZmVuY2UpOwo+ICAgCj4gICAJdm1hLT52 bSA9IHZtOwo+ICAgCXZtYS0+b3BzID0gJnZtLT52bWFfb3BzOwo+IEBAIC04MDgsNyArODA4LDcg QEAgc3RhdGljIHZvaWQgX19pOTE1X3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ ICAgCUdFTV9CVUdfT04odm1hLT5ub2RlLmFsbG9jYXRlZCk7Cj4gICAJR0VNX0JVR19PTih2bWEt PmZlbmNlKTsKPiAgIAo+IC0JR0VNX0JVR19PTihpOTE1X2dlbV9hY3RpdmVfaXNzZXQoJnZtYS0+ bGFzdF9mZW5jZSkpOwo+ICsJR0VNX0JVR19PTihpOTE1X2FjdGl2ZV9yZXF1ZXN0X2lzc2V0KCZ2 bWEtPmxhc3RfZmVuY2UpKTsKPiAgIAo+ICAgCW11dGV4X2xvY2soJnZtYS0+dm0tPm11dGV4KTsK PiAgIAlsaXN0X2RlbCgmdm1hLT52bV9saW5rKTsKPiBAQCAtOTQyLDE0ICs5NDIsMTQgQEAgaW50 IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAgCQlvYmot PndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4gICAKPiAgIAkJaWYgKGlu dGVsX2ZiX29ial9pbnZhbGlkYXRlKG9iaiwgT1JJR0lOX0NTKSkKPiAtCQkJaTkxNV9nZW1fYWN0 aXZlX3NldCgmb2JqLT5mcm9udGJ1ZmZlcl93cml0ZSwgcnEpOwo+ICsJCQlfX2k5MTVfYWN0aXZl X3JlcXVlc3Rfc2V0KCZvYmotPmZyb250YnVmZmVyX3dyaXRlLCBycSk7Cj4gICAKPiAgIAkJb2Jq LT5yZWFkX2RvbWFpbnMgPSAwOwo+ICAgCX0KPiAgIAlvYmotPnJlYWRfZG9tYWlucyB8PSBJOTE1 X0dFTV9HUFVfRE9NQUlOUzsKPiAgIAo+ICAgCWlmIChmbGFncyAmIEVYRUNfT0JKRUNUX05FRURT X0ZFTkNFKQo+IC0JCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJnZtYS0+bGFzdF9mZW5jZSwgcnEpOwo+ ICsJCV9faTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoJnZtYS0+bGFzdF9mZW5jZSwgcnEpOwo+ICAg Cj4gICAJZXhwb3J0X2ZlbmNlKHZtYSwgcnEsIGZsYWdzKTsKPiAgIAlyZXR1cm4gMDsKPiBAQCAt OTg2LDggKzk4Niw4IEBAIGludCBpOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEp Cj4gICAJCWlmIChyZXQpCj4gICAJCQlnb3RvIHVucGluOwo+ICAgCj4gLQkJcmV0ID0gaTkxNV9n ZW1fYWN0aXZlX3JldGlyZSgmdm1hLT5sYXN0X2ZlbmNlLAo+IC0JCQkJCSAgICAgJnZtYS0+dm0t Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJCXJldCA9IGk5MTVfYWN0aXZlX3JlcXVlc3Rf cmV0aXJlKCZ2bWEtPmxhc3RfZmVuY2UsCj4gKwkJCQkJICAgICAgJnZtYS0+dm0tPmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgdW5waW46Cj4gICAJCV9faTkxNV92bWFfdW5waW4odm1hKTsK PiAgIAkJaWYgKHJldCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 bWEuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKPiBpbmRleCAzYzAzZDQ1Njk0 ODEuLjdjNzQyMDI3Zjg2NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3ZtYS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAo+IEBAIC0xMTAs NyArMTEwLDcgQEAgc3RydWN0IGk5MTVfdm1hIHsKPiAgICNkZWZpbmUgSTkxNV9WTUFfR0dUVF9X UklURQlCSVQoMTUpCj4gICAKPiAgIAlzdHJ1Y3QgaTkxNV9hY3RpdmUgYWN0aXZlOwo+IC0Jc3Ry dWN0IGk5MTVfZ2VtX2FjdGl2ZSBsYXN0X2ZlbmNlOwo+ICsJc3RydWN0IGk5MTVfYWN0aXZlX3Jl cXVlc3QgbGFzdF9mZW5jZTsKPiAgIAo+ICAgCS8qKgo+ICAgCSAqIFN1cHBvcnQgZGlmZmVyZW50 IEdHVFQgdmlld3MgaW50byB0aGUgc2FtZSBvYmplY3QuCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZW5naW5lX2NzLmMKPiBpbmRleCBlYzJjYmJlMDcwYTQuLjBkYmQ2ZDdjMTY5MyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTExMjQsNyArMTEyNCw3 IEBAIGJvb2wgaW50ZWxfZW5naW5lX2hhc19rZXJuZWxfY29udGV4dChjb25zdCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJICogdGhlIGxhc3QgcmVxdWVzdCB0aGF0IHJlbWFp bnMgaW4gdGhlIHRpbWVsaW5lLiBXaGVuIGlkbGUsIGl0IGlzCj4gICAJICogdGhlIGxhc3QgZXhl Y3V0ZWQgY29udGV4dCBhcyB0cmFja2VkIGJ5IHJldGlyZW1lbnQuCj4gICAJICovCj4gLQlycSA9 IF9faTkxNV9nZW1fYWN0aXZlX3BlZWsoJmVuZ2luZS0+dGltZWxpbmUubGFzdF9yZXF1ZXN0KTsK PiArCXJxID0gX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X3BlZWsoJmVuZ2luZS0+dGltZWxpbmUubGFz dF9yZXF1ZXN0KTsKPiAgIAlpZiAocnEpCj4gICAJCXJldHVybiBycS0+aHdfY29udGV4dCA9PSBr ZXJuZWxfY29udGV4dDsKPiAgIAllbHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXku Ywo+IGluZGV4IGE5MjM4ZmQwN2UzMC4uYzBkZjFkYmIwMDY5IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuYwo+IEBAIC0xODYsNyArMTg2LDcgQEAgc3RydWN0IGludGVsX292 ZXJsYXkgewo+ICAgCXN0cnVjdCBvdmVybGF5X3JlZ2lzdGVycyBfX2lvbWVtICpyZWdzOwo+ICAg CXUzMiBmbGlwX2FkZHI7Cj4gICAJLyogZmxpcCBoYW5kbGluZyAqLwo+IC0Jc3RydWN0IGk5MTVf Z2VtX2FjdGl2ZSBsYXN0X2ZsaXA7Cj4gKwlzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCBsYXN0 X2ZsaXA7Cj4gICB9Owo+ICAgCj4gICBzdGF0aWMgdm9pZCBpODMwX292ZXJsYXlfY2xvY2tfZ2F0 aW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtMjE0LDIzICsyMTQs MjMgQEAgc3RhdGljIHZvaWQgaTgzMF9vdmVybGF5X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAKPiAgIHN0YXRpYyB2b2lkIGludGVsX292ZXJsYXlf c3VibWl0X3JlcXVlc3Qoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4gICAJCQkJCSBz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAtCQkJCQkgaTkxNV9nZW1fcmV0aXJlX2ZuIHJldGly ZSkKPiArCQkJCQkgaTkxNV9hY3RpdmVfcmV0aXJlX2ZuIHJldGlyZSkKPiAgIHsKPiAtCUdFTV9C VUdfT04oaTkxNV9nZW1fYWN0aXZlX3BlZWsoJm92ZXJsYXktPmxhc3RfZmxpcCwKPiAtCQkJCQkm b3ZlcmxheS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCkpOwo+IC0JaTkxNV9nZW1fYWN0aXZlX3Nl dF9yZXRpcmVfZm4oJm92ZXJsYXktPmxhc3RfZmxpcCwgcmV0aXJlLAo+IC0JCQkJICAgICAgJm92 ZXJsYXktPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaTkxNV9nZW1fYWN0aXZlX3NldCgm b3ZlcmxheS0+bGFzdF9mbGlwLCBycSk7Cj4gKwlHRU1fQlVHX09OKGk5MTVfYWN0aXZlX3JlcXVl c3RfcGVlaygmb3ZlcmxheS0+bGFzdF9mbGlwLAo+ICsJCQkJCSAgICAmb3ZlcmxheS0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCkpOwo+ICsJaTkxNV9hY3RpdmVfcmVxdWVzdF9zZXRfcmV0aXJlX2Zu KCZvdmVybGF5LT5sYXN0X2ZsaXAsIHJldGlyZSwKPiArCQkJCQkgICZvdmVybGF5LT5pOTE1LT5k cm0uc3RydWN0X211dGV4KTsKPiArCV9faTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoJm92ZXJsYXkt Pmxhc3RfZmxpcCwgcnEpOwo+ICAgCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICAgfQo+ICAgCj4g ICBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9v dmVybGF5ICpvdmVybGF5LAo+ICAgCQkJCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gLQkJ CQkJIGk5MTVfZ2VtX3JldGlyZV9mbiByZXRpcmUpCj4gKwkJCQkJIGk5MTVfYWN0aXZlX3JldGly ZV9mbiByZXRpcmUpCj4gICB7Cj4gICAJaW50ZWxfb3ZlcmxheV9zdWJtaXRfcmVxdWVzdChvdmVy bGF5LCBycSwgcmV0aXJlKTsKPiAtCXJldHVybiBpOTE1X2dlbV9hY3RpdmVfcmV0aXJlKCZvdmVy bGF5LT5sYXN0X2ZsaXAsCj4gLQkJCQkgICAgICAmb3ZlcmxheS0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gKwlyZXR1cm4gaTkxNV9hY3RpdmVfcmVxdWVzdF9yZXRpcmUoJm92ZXJsYXktPmxh c3RfZmxpcCwKPiArCQkJCQkgICZvdmVybGF5LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAg IH0KPiAgIAo+ICAgc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmFsbG9jX3JlcXVlc3Qoc3Ry dWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gQEAgLTM1MSw4ICszNTEsOSBAQCBzdGF0aWMg dm9pZCBpbnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZtYShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAq b3ZlcmxheSkKPiAgIAlpOTE1X3ZtYV9wdXQodm1hKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9p ZCBpbnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZF90YWlsKHN0cnVjdCBpOTE1X2dlbV9hY3Rp dmUgKmFjdGl2ZSwKPiAtCQkJCQkgICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3N0 YXRpYyB2b2lkCj4gK2ludGVsX292ZXJsYXlfcmVsZWFzZV9vbGRfdmlkX3RhaWwoc3RydWN0IGk5 MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSwKPiArCQkJCSAgIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5ID0KPiAgIAkJY29u dGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpvdmVybGF5KSwgbGFzdF9mbGlwKTsKPiBAQCAtMzYw LDcgKzM2MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX292ZXJsYXlfcmVsZWFzZV9vbGRfdmlkX3Rh aWwoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAo+ICAgCWludGVsX292ZXJsYXlfcmVs ZWFzZV9vbGRfdm1hKG92ZXJsYXkpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIGludGVsX292 ZXJsYXlfb2ZmX3RhaWwoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAo+ICtzdGF0aWMg dm9pZCBpbnRlbF9vdmVybGF5X29mZl90YWlsKHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICph Y3RpdmUsCj4gICAJCQkJICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICB7Cj4gICAJc3Ry dWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkgPQo+IEBAIC00MjMsOCArNDI0LDggQEAgc3RhdGlj IGludCBpbnRlbF9vdmVybGF5X29mZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKPiAg ICAqIFdlIGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gcmVwZWF0IHdvcmsgZm9yZXZlciBhbiBt YWtlIGZvcndhcmQgcHJvZ2Vzcy4gKi8KPiAgIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9yZWNv dmVyX2Zyb21faW50ZXJydXB0KHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+ICAgewo+ IC0JcmV0dXJuIGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoJm92ZXJsYXktPmxhc3RfZmxpcCwKPiAt CQkJCSAgICAgICZvdmVybGF5LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCXJldHVybiBp OTE1X2FjdGl2ZV9yZXF1ZXN0X3JldGlyZSgmb3ZlcmxheS0+bGFzdF9mbGlwLAo+ICsJCQkJCSAg Jm92ZXJsYXktPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgfQo+ICAgCj4gICAvKiBXYWl0 IGZvciBwZW5kaW5nIG92ZXJsYXkgZmxpcCBhbmQgcmVsZWFzZSBvbGQgZnJhbWUuCj4gQEAgLTEz NTcsNyArMTM1OCw3IEBAIHZvaWQgaW50ZWxfb3ZlcmxheV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJb3ZlcmxheS0+Y29udHJhc3QgPSA3NTsKPiAgIAlvdmVy bGF5LT5zYXR1cmF0aW9uID0gMTQ2Owo+ICAgCj4gLQlpbml0X3JlcXVlc3RfYWN0aXZlKCZvdmVy bGF5LT5sYXN0X2ZsaXAsIE5VTEwpOwo+ICsJSU5JVF9BQ1RJVkVfUkVRVUVTVCgmb3ZlcmxheS0+ bGFzdF9mbGlwKTsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMK PiBpbmRleCAzMGFiMGUwNGE2NzQuLjcyMTUxYWFiMjA4ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKPiBAQCAtNTAxLDggKzUwMSw4IEBAIHN0YXRp YyBpbnQgbGl2ZV9zdXBwcmVzc193YWl0X3ByZWVtcHQodm9pZCAqYXJnKQo+ICAgCQkJCX0KPiAg IAo+ICAgCQkJCS8qIERpc2FibGUgTkVXQ0xJRU5UIHByb21vdGlvbiAqLwo+IC0JCQkJaTkxNV9n ZW1fYWN0aXZlX3NldCgmcnFbaV0tPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCj4gLQkJCQkJCSAg ICBkdW1teSk7Cj4gKwkJCQlfX2k5MTVfYWN0aXZlX3JlcXVlc3Rfc2V0KCZycVtpXS0+dGltZWxp bmUtPmxhc3RfcmVxdWVzdCwKPiArCQkJCQkJCSAgZHVtbXkpOwo+ICAgCQkJCWk5MTVfcmVxdWVz dF9hZGQocnFbaV0pOwo+ICAgCQkJfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja190aW1lbGluZS5jCj4gaW5kZXggZTU2NTlhYWE4NTZkLi5kMmRlOWVjZTIx MTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfdGlt ZWxpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVs aW5lLmMKPiBAQCAtMTUsOCArMTUsOCBAQCB2b2lkIG1vY2tfdGltZWxpbmVfaW5pdChzdHJ1Y3Qg aTkxNV90aW1lbGluZSAqdGltZWxpbmUsIHU2NCBjb250ZXh0KQo+ICAgCj4gICAJc3Bpbl9sb2Nr X2luaXQoJnRpbWVsaW5lLT5sb2NrKTsKPiAgIAo+IC0JaW5pdF9yZXF1ZXN0X2FjdGl2ZSgmdGlt ZWxpbmUtPmJhcnJpZXIsIE5VTEwpOwo+IC0JaW5pdF9yZXF1ZXN0X2FjdGl2ZSgmdGltZWxpbmUt Pmxhc3RfcmVxdWVzdCwgTlVMTCk7Cj4gKwlJTklUX0FDVElWRV9SRVFVRVNUKCZ0aW1lbGluZS0+ YmFycmllcik7Cj4gKwlJTklUX0FDVElWRV9SRVFVRVNUKCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0 KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmdGltZWxpbmUtPnJlcXVlc3RzKTsKPiAgIAo+ICAgCWk5 MTVfc3luY21hcF9pbml0KCZ0aW1lbGluZS0+c3luYyk7Cj4gCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=