From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 9/9] drm/i915: Address broxton phy registers based on phy and channel number Date: Thu, 06 Oct 2016 12:29:52 +0300 Message-ID: <1475746192.7087.8.camel@intel.com> References: <1475669354-22622-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1475669354-22622-10-git-send-email-ander.conselvan.de.oliveira@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id E285C6E8C5 for ; Thu, 6 Oct 2016 09:29:55 +0000 (UTC) In-Reply-To: <1475669354-22622-10-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org Cc: m.deepak@intel.com List-Id: intel-gfx@lists.freedesktop.org T24ga2UsIDIwMTYtMTAtMDUgYXQgMTU6MDkgKzAzMDAsIEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2 ZWlyYSB3cm90ZToKPiBUaGUgcG9ydCByZWdpc3RlcnMgcmVsYXRlZCB0byB0aGUgcGh5cyBpbiBi cm94dG9uIG1hcCB0byBkaWZmZXJlbnQKPiBjaGFubmVscyBhbmQgc3BlY2lmaWMgcGh5cy4gTWFr ZSB0aGF0IG1hcHBpbmcgZXhwbGljaXQuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kZXIgQ29uc2Vs dmFuIGRlIE9saXZlaXJhIAo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgKwo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaMKgwqDCoMKgwqDCoMKgfCAyMTEgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYyB8IDEzMSArKysrKysr KysrKysrKystLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMg fMKgwqA4NCArKysrKysrKy0tLS0tLQo+IMKgNCBmaWxlcyBjaGFuZ2VkLCAyMjIgaW5zZXJ0aW9u cygrKSwgMjA2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4 IDc3ZjEzNzQuLmMzZmEyOWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzcz NSw2ICszNzM1LDggQEAgdTMyIHZsdl9mbGlzZHNpX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1MzIgcmVnKTsKPiDCoHZvaWQgdmx2X2ZsaXNkc2lfd3JpdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIgdmFsKTsKPiDCoAo+IMKg LyogaW50ZWxfZHBpb19waHkuYyAqLwo+ICt2b2lkIGJ4dF9wb3J0X3RvX3BoeV9jaGFubmVsKGVu dW0gcG9ydCBwb3J0LAo+ICsJCQnCoMKgwqDCoMKgdTMyICpwaHksIGVudW0gZHBpb19jaGFubmVs ICpjaCk7Cj4gwqB2b2lkIGJ4dF9kZGlfcGh5X3NldF9zaWduYWxfbGV2ZWwoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQkJCcKgwqBlbnVtIHBvcnQgcG9ydCwgdTMyIG1h cmdpbiwgdTMyIHNjYWxlLAo+IMKgCQkJCcKgwqB1MzIgZW5hYmxlLCB1MzIgZGVlbXBoYXNpcyk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggZDM4MDJjNi4uNDE2Y2JiMSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC0xMTg3LDYgKzExODcsOSBAQCBlbnVtIHNrbF9k aXNwX3Bvd2VyX3dlbGxzIHsKPiDCoCNkZWZpbmXCoMKgwqBEUElPX1VQQVJfU0hJRlQJCTMwCj4g wqAKPiDCoC8qIEJYVCBQSFkgcmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgQlhUX1BIWTFfQkFTRQkJ CTB4MTYyMDAwCj4gKyNkZWZpbmUgQlhUX1BIWTBfQkFTRQkJCTB4NkMwMDAKPiArCj4gwqAjZGVm aW5lIF9CWFRfUEhZKHBoeSwgYSwgYikJCV9NTUlPX1BJUEUoKHBoeSksIChhKSwgKGIpKQo+IMKg Cj4gwqAjZGVmaW5lIEJYVF9QX0NSX0dUX0RJU1BfUFdST04JCV9NTUlPKDB4MTM4MDkwKQo+IEBA IC0xMjE2LDMxICsxMjE5LDI2IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+IMKgI2Rl ZmluZcKgwqDCoFBPUlRfUExMX1JFRl9TRUwJCSgxIDw8IDI3KQo+IMKgI2RlZmluZSBCWFRfUE9S VF9QTExfRU5BQkxFKHBvcnQpCV9NTUlPX1BPUlQocG9ydCwgX1BPUlRfUExMX0EsIF9QT1JUX1BM TF9CKQo+IMKgCj4gLSNkZWZpbmUgX1BPUlRfUExMX0VCQl8wX0EJCTB4MTYyMDM0Cj4gLSNkZWZp bmUgX1BPUlRfUExMX0VCQl8wX0IJCTB4NkMwMzQKPiAtI2RlZmluZSBfUE9SVF9QTExfRUJCXzBf QwkJMHg2QzM0MAo+ICsjZGVmaW5lIF9QT1JUX1BMTF9FQkJfMF9DSDAJCTB4MzQKPiArI2RlZmlu ZSBfUE9SVF9QTExfRUJCXzBfQ0gxCQkweDM0MAo+IMKgI2RlZmluZcKgwqDCoFBPUlRfUExMX1Ax X1NISUZUCQkxMwo+IMKgI2RlZmluZcKgwqDCoFBPUlRfUExMX1AxX01BU0sJCSgweDA3IDw8IFBP UlRfUExMX1AxX1NISUZUKQo+IMKgI2RlZmluZcKgwqDCoFBPUlRfUExMX1AxKHgpCQkoKHgpwqDC oDw8IFBPUlRfUExMX1AxX1NISUZUKQo+IMKgI2RlZmluZcKgwqDCoFBPUlRfUExMX1AyX1NISUZU CQk4Cj4gwqAjZGVmaW5lwqDCoMKgUE9SVF9QTExfUDJfTUFTSwkJKDB4MWYgPDwgUE9SVF9QTExf UDJfU0hJRlQpCj4gwqAjZGVmaW5lwqDCoMKgUE9SVF9QTExfUDIoeCkJCSgoeCnCoMKgPDwgUE9S VF9QTExfUDJfU0hJRlQpCj4gLSNkZWZpbmUgQlhUX1BPUlRfUExMX0VCQl8wKHBvcnQpCV9NTUlP X1BPUlQzKHBvcnQsIF9QT1JUX1BMTF9FQkJfMF9BLCBcCj4gLQkJCQkJCV9QT1JUX1BMTF9FQkJf MF9CLAlcCj4gLQkJCQkJCV9QT1JUX1BMTF9FQkJfMF9DKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1BM TF9FQkJfMChiYXNlLCBjaCkJXAo+ICsJX01NSU8oKGJhc2UpICsgX1BJUEUoKGNoKSwgX1BPUlRf UExMX0VCQl8wX0NIMCwgX1BPUlRfUExMX0VCQl8wX0NIMSkpCgpQYXNzaW5nIHRoZSBwaHkgYW5k IGNhbGN1bGF0aW5nIHRoZSBiYXNlIGhlcmUgd291bGQgYmUgbW9yZSBuYXR1cmFsLgpBbHNvIHdl IHNob3VsZCB0cnkgdG8gcHJlc2VydmUgYnNwZWMgcmVnIG5hbWVzIGFuZCBhZGRyZXNzZXMgdG8g bWFrZQpsb29rdXAgZWFzaWVyLiBZb3UgY291bGQgZG8gdGhhdCBieSB1c2luZyBfUE9SVF9QTExf RUJCXzBfQgphbmTCoF9QT1JUX1BMTF9FQkJfMF9DIGhlcmUgYW5kIGFkanVzdGluZyB0aGUgYmFz ZSBieSAtQlhUX1BIWTBfQkFTRS4KSSdkIGFsc28gbGVhdmXCoF9QT1JUX1BMTF9FQkJfMF9BIGFy b3VuZCBmb3IgcmVmZXJlbmNlLgoKPiDCoAo+IC0jZGVmaW5lIF9QT1JUX1BMTF9FQkJfNF9BCQkw eDE2MjAzOAo+IC0jZGVmaW5lIF9QT1JUX1BMTF9FQkJfNF9CCQkweDZDMDM4Cj4gLSNkZWZpbmUg X1BPUlRfUExMX0VCQl80X0MJCTB4NkMzNDQKPiArI2RlZmluZSBfUE9SVF9QTExfRUJCXzRfQ0gw CQkweDM4Cj4gKyNkZWZpbmUgX1BPUlRfUExMX0VCQl80X0NIMQkJMHgzNDQKPiDCoCNkZWZpbmXC oMKgwqBQT1JUX1BMTF8xMEJJVF9DTEtfRU5BQkxFCSgxIDw8IDEzKQo+IMKgI2RlZmluZcKgwqDC oFBPUlRfUExMX1JFQ0FMSUJSQVRFCQkoMSA8PCAxNCkKPiAtI2RlZmluZSBCWFRfUE9SVF9QTExf RUJCXzQocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRfUExMX0VCQl80X0EsIFwKPiAtCQkJ CQkJX1BPUlRfUExMX0VCQl80X0IsCVwKPiAtCQkJCQkJX1BPUlRfUExMX0VCQl80X0MpCj4gKyNk ZWZpbmUgQlhUX1BPUlRfUExMX0VCQl80KGJhc2UsIGNoKQlcCj4gKwlfTU1JTygoYmFzZSkgKyBf UElQRSgoY2gpLCBfUE9SVF9QTExfRUJCXzRfQ0gwLCBfUE9SVF9QTExfRUJCXzRfQ0gxKSkKPiDC oAo+IC0jZGVmaW5lIF9QT1JUX1BMTF8wX0EJCQkweDE2MjEwMAo+IC0jZGVmaW5lIF9QT1JUX1BM TF8wX0IJCQkweDZDMTAwCj4gLSNkZWZpbmUgX1BPUlRfUExMXzBfQwkJCTB4NkMzODAKPiArI2Rl ZmluZSBfUE9SVF9QTExfMF9DSDAJCQkweDEwMAo+ICsjZGVmaW5lIF9QT1JUX1BMTF8wX0NIMQkJ CTB4MzgwCj4gwqAvKiBQT1JUX1BMTF8wX0EgKi8KPiDCoCNkZWZpbmXCoMKgwqBQT1JUX1BMTF9N Ml9NQVNLCQkweEZGCj4gwqAvKiBQT1JUX1BMTF8xX0EgKi8KPiBAQCAtMTI2Nyw2NSArMTI2NSw0 MyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiDCoCNkZWZpbmXCoMKgUE9SVF9QTExf RENPX0FNUF9ERUZBVUxUCTE1Cj4gwqAjZGVmaW5lwqDCoFBPUlRfUExMX0RDT19BTVBfTUFTSwkJ MHgzYzAwCj4gwqAjZGVmaW5lwqDCoFBPUlRfUExMX0RDT19BTVAoeCkJCSgoeCk8PDEwKQo+IC0j ZGVmaW5lIF9QT1JUX1BMTF9CQVNFKHBvcnQpCQlfUE9SVDMocG9ydCwgX1BPUlRfUExMXzBfQSwJ XAo+IC0JCQkJCQlfUE9SVF9QTExfMF9CLAkJXAo+IC0JCQkJCQlfUE9SVF9QTExfMF9DKQo+IC0j ZGVmaW5lIEJYVF9QT1JUX1BMTChwb3J0LCBpZHgpCQlfTU1JTyhfUE9SVF9QTExfQkFTRShwb3J0 KSArIChpZHgpICogNCkKPiArI2RlZmluZSBfUE9SVF9QTExfQkFTRShiYXNlLCBjaCkJXAo+ICsJ KChiYXNlKSArIF9QSVBFKChjaCksIF9QT1JUX1BMTF8wX0NIMCwgX1BPUlRfUExMXzBfQ0gxKSkK PiArI2RlZmluZSBCWFRfUE9SVF9QTEwoYmFzZSwgY2gsIGlkeCkJXAo+ICsJX01NSU8oX1BPUlRf UExMX0JBU0UoYmFzZSwgY2gpICsgKGlkeCkgKiA0KQo+IMKgCj4gwqAvKiBCWFQgUEhZIGNvbW1v biBsYW5lIHJlZ2lzdGVycyAqLwo+IC0jZGVmaW5lIF9QT1JUX0NMMUNNX0RXMF9BCQkweDE2MjAw MAo+IC0jZGVmaW5lIF9QT1JUX0NMMUNNX0RXMF9CQwkJMHg2QzAwMAo+ICsjZGVmaW5lIEJYVF9Q T1JUX0NMMUNNX0RXMChiYXNlKQlfTU1JTygoYmFzZSkgKyAweDApCj4gwqAjZGVmaW5lwqDCoMKg UEhZX1BPV0VSX0dPT0QJCSgxIDw8IDE2KQo+IMKgI2RlZmluZcKgwqDCoFBIWV9SRVNFUlZFRAkJ CSgxIDw8IDcpCj4gLSNkZWZpbmUgQlhUX1BPUlRfQ0wxQ01fRFcwKHBoeSkJCV9CWFRfUEhZKChw aHkpLCBfUE9SVF9DTDFDTV9EVzBfQkMsIFwKPiAtCQkJCQkJCV9QT1JUX0NMMUNNX0RXMF9BKQo+ IMKgCj4gLSNkZWZpbmUgX1BPUlRfQ0wxQ01fRFc5X0EJCTB4MTYyMDI0Cj4gLSNkZWZpbmUgX1BP UlRfQ0wxQ01fRFc5X0JDCQkweDZDMDI0Cj4gKyNkZWZpbmUgQlhUX1BPUlRfQ0wxQ01fRFc5KGJh c2UpCV9NTUlPKChiYXNlKSArIDB4MjQpCj4gwqAjZGVmaW5lwqDCoMKgSVJFRjBSQ19PRkZTRVRf U0hJRlQJCTgKPiDCoCNkZWZpbmXCoMKgwqBJUkVGMFJDX09GRlNFVF9NQVNLCQkoMHhGRiA8PCBJ UkVGMFJDX09GRlNFVF9TSElGVCkKPiAtI2RlZmluZSBCWFRfUE9SVF9DTDFDTV9EVzkocGh5KQkJ X0JYVF9QSFkoKHBoeSksIF9QT1JUX0NMMUNNX0RXOV9CQywgXAo+IC0JCQkJCQkJX1BPUlRfQ0wx Q01fRFc5X0EpCj4gwqAKPiAtI2RlZmluZSBfUE9SVF9DTDFDTV9EVzEwX0EJCTB4MTYyMDI4Cj4g LSNkZWZpbmUgX1BPUlRfQ0wxQ01fRFcxMF9CQwkJMHg2QzAyOAo+ICsjZGVmaW5lIEJYVF9QT1JU X0NMMUNNX0RXMTAoYmFzZSkJX01NSU8oKGJhc2UpICsgMHgyOCkKPiDCoCNkZWZpbmXCoMKgwqBJ UkVGMVJDX09GRlNFVF9TSElGVAkJOAo+IMKgI2RlZmluZcKgwqDCoElSRUYxUkNfT0ZGU0VUX01B U0sJCSgweEZGIDw8IElSRUYxUkNfT0ZGU0VUX1NISUZUKQo+IC0jZGVmaW5lIEJYVF9QT1JUX0NM MUNNX0RXMTAocGh5KQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wxQ01fRFcxMF9CQywgXAo+IC0J CQkJCQkJX1BPUlRfQ0wxQ01fRFcxMF9BKQo+IMKgCj4gLSNkZWZpbmUgX1BPUlRfQ0wxQ01fRFcy OF9BCQkweDE2MjA3MAo+IC0jZGVmaW5lIF9QT1JUX0NMMUNNX0RXMjhfQkMJCTB4NkMwNzAKPiAr I2RlZmluZSBCWFRfUE9SVF9DTDFDTV9EVzI4KGJhc2UpCV9NTUlPKChiYXNlKSArIDB4NzApCj4g wqAjZGVmaW5lwqDCoMKgT0NMMV9QT1dFUl9ET1dOX0VOCQkoMSA8PCAyMykKPiDCoCNkZWZpbmXC oMKgwqBEVzI4X09MRE9fRFlOX1BXUl9ET1dOX0VOCSgxIDw8IDIyKQo+IMKgI2RlZmluZcKgwqDC oFNVU19DTEtfQ09ORklHCQkweDMKPiAtI2RlZmluZSBCWFRfUE9SVF9DTDFDTV9EVzI4KHBoeSkJ X0JYVF9QSFkoKHBoeSksIF9QT1JUX0NMMUNNX0RXMjhfQkMsIFwKPiAtCQkJCQkJCV9QT1JUX0NM MUNNX0RXMjhfQSkKPiDCoAo+IC0jZGVmaW5lIF9QT1JUX0NMMUNNX0RXMzBfQQkJMHgxNjIwNzgK PiAtI2RlZmluZSBfUE9SVF9DTDFDTV9EVzMwX0JDCQkweDZDMDc4Cj4gKyNkZWZpbmUgQlhUX1BP UlRfQ0wxQ01fRFczMChiYXNlKQlfTU1JTygoYmFzZSkgKyAweDc4KQo+IMKgI2RlZmluZcKgwqDC oE9DTDJfTERPRlVTRV9QV1JfRElTCQkoMSA8PCA2KQo+IC0jZGVmaW5lIEJYVF9QT1JUX0NMMUNN X0RXMzAocGh5KQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wxQ01fRFczMF9CQywgXAo+IC0JCQkJ CQkJX1BPUlRfQ0wxQ01fRFczMF9BKQo+IMKgCj4gwqAvKiBUaGUgc3BlYyBkZWZpbmVzIHRoaXMg b25seSBmb3IgQlhUIFBIWTAsIGJ1dCBsZXRzIGFzc3VtZSB0aGF0IHRoaXMKPiDCoCAqIHdvdWxk IGV4aXN0IGZvciBQSFkxIHRvbyBpZiBpdCBoYWQgYSBzZWNvbmQgY2hhbm5lbC4KPiDCoCAqLwo+ IC0jZGVmaW5lIF9QT1JUX0NMMkNNX0RXNl9BCQkweDE2MjM1OAo+IC0jZGVmaW5lIF9QT1JUX0NM MkNNX0RXNl9CQwkJMHg2QzM1OAo+IC0jZGVmaW5lIEJYVF9QT1JUX0NMMkNNX0RXNihwaHkpCQlf QlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wyQ01fRFc2X0JDLCBcCj4gLQkJCQkJCQlfUE9SVF9DTDJD TV9EVzZfQSkKPiArI2RlZmluZSBCWFRfUE9SVF9DTDJDTV9EVzYoYmFzZSkJX01NSU8oKGJhc2Up ICsgMHgzNTgpCj4gwqAjZGVmaW5lwqDCoMKgRFc2X09MRE9fRFlOX1BXUl9ET1dOX0VOCSgxIDw8 IDI4KQo+IMKgCj4gwqAvKiBCWFQgUEhZIFJlZiByZWdpc3RlcnMgKi8KPiAtI2RlZmluZSBfUE9S VF9SRUZfRFczX0EJCQkweDE2MjE4Qwo+IC0jZGVmaW5lIF9QT1JUX1JFRl9EVzNfQkMJCTB4NkMx OEMKPiArI2RlZmluZSBCWFRfUE9SVF9SRUZfRFczKGJhc2UpCQlfTU1JTygoYmFzZSkgKyAweDE4 YykKPiDCoCNkZWZpbmXCoMKgwqBHUkNfRE9ORQkJCSgxIDw8IDIyKQo+IC0jZGVmaW5lIEJYVF9Q T1JUX1JFRl9EVzMocGh5KQkJX0JYVF9QSFkoKHBoeSksIF9QT1JUX1JFRl9EVzNfQkMsIFwKPiAt CQkJCQkJCV9QT1JUX1JFRl9EVzNfQSkKPiDCoAo+IC0jZGVmaW5lIF9QT1JUX1JFRl9EVzZfQQkJ CTB4MTYyMTk4Cj4gLSNkZWZpbmUgX1BPUlRfUkVGX0RXNl9CQwkJMHg2QzE5OAo+ICsjZGVmaW5l IEJYVF9QT1JUX1JFRl9EVzYoYmFzZSkJCV9NTUlPKChiYXNlKSArIDB4MTk4KQo+IMKgI2RlZmlu ZcKgwqDCoEdSQ19DT0RFX1NISUZUCQkyNAo+IMKgI2RlZmluZcKgwqDCoEdSQ19DT0RFX01BU0sJ CQkoMHhGRiA8PCBHUkNfQ09ERV9TSElGVCkKPiDCoCNkZWZpbmXCoMKgwqBHUkNfQ09ERV9GQVNU X1NISUZUCQkxNgo+IEBAIC0xMzMzLDExMyArMTMwOSw4OCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2Vy X3dlbGxzIHsKPiDCoCNkZWZpbmXCoMKgwqBHUkNfQ09ERV9TTE9XX1NISUZUCQk4Cj4gwqAjZGVm aW5lwqDCoMKgR1JDX0NPREVfU0xPV19NQVNLCQkoMHhGRiA8PCBHUkNfQ09ERV9TTE9XX1NISUZU KQo+IMKgI2RlZmluZcKgwqDCoEdSQ19DT0RFX05PTV9NQVNLCQkweEZGCj4gLSNkZWZpbmUgQlhU X1BPUlRfUkVGX0RXNihwaHkpCQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfUkVGX0RXNl9CQywJXAo+ IC0JCQkJCQnCoMKgwqDCoMKgwqBfUE9SVF9SRUZfRFc2X0EpCj4gwqAKPiAtI2RlZmluZSBfUE9S VF9SRUZfRFc4X0EJCQkweDE2MjFBMAo+IC0jZGVmaW5lIF9QT1JUX1JFRl9EVzhfQkMJCTB4NkMx QTAKPiArI2RlZmluZSBCWFRfUE9SVF9SRUZfRFc4KGJhc2UpCQlfTU1JTygoYmFzZSkgKyAweDFh MCkKPiDCoCNkZWZpbmXCoMKgwqBHUkNfRElTCQkJKDEgPDwgMTUpCj4gwqAjZGVmaW5lwqDCoMKg R1JDX1JEWV9PVlJECQkJKDEgPDwgMSkKPiAtI2RlZmluZSBCWFRfUE9SVF9SRUZfRFc4KHBoeSkJ CV9CWFRfUEhZKChwaHkpLCBfUE9SVF9SRUZfRFc4X0JDLAlcCj4gLQkJCQkJCcKgwqDCoMKgwqDC oF9QT1JUX1JFRl9EVzhfQSkKPiDCoAo+IMKgLyogQlhUIFBIWSBQQ1MgcmVnaXN0ZXJzICovCj4g LSNkZWZpbmUgX1BPUlRfUENTX0RXMTBfTE4wMV9BCQkweDE2MjQyOAo+IC0jZGVmaW5lIF9QT1JU X1BDU19EVzEwX0xOMDFfQgkJMHg2QzQyOAo+IC0jZGVmaW5lIF9QT1JUX1BDU19EVzEwX0xOMDFf QwkJMHg2QzgyOAo+IC0jZGVmaW5lIF9QT1JUX1BDU19EVzEwX0dSUF9BCQkweDE2MkMyOAo+IC0j ZGVmaW5lIF9QT1JUX1BDU19EVzEwX0dSUF9CCQkweDZDQzI4Cj4gLSNkZWZpbmUgX1BPUlRfUENT X0RXMTBfR1JQX0MJCTB4NkNFMjgKPiAtI2RlZmluZSBCWFRfUE9SVF9QQ1NfRFcxMF9MTjAxKHBv cnQpCV9NTUlPX1BPUlQzKHBvcnQsIF9QT1JUX1BDU19EVzEwX0xOMDFfQSwgXAo+IC0JCQkJCQnC oMKgwqDCoMKgX1BPUlRfUENTX0RXMTBfTE4wMV9CLCBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9S VF9QQ1NfRFcxMF9MTjAxX0MpCj4gLSNkZWZpbmUgQlhUX1BPUlRfUENTX0RXMTBfR1JQKHBvcnQp CV9NTUlPX1BPUlQzKHBvcnQsIF9QT1JUX1BDU19EVzEwX0dSUF9BLMKgwqBcCj4gLQkJCQkJCcKg wqDCoMKgwqBfUE9SVF9QQ1NfRFcxMF9HUlBfQizCoMKgXAo+IC0JCQkJCQnCoMKgwqDCoMKgX1BP UlRfUENTX0RXMTBfR1JQX0MpCj4gKyNkZWZpbmUgX1BPUlRfUENTX0RXMTBfTE4wMV9DSDAJCTB4 NDI4Cj4gKyNkZWZpbmUgX1BPUlRfUENTX0RXMTBfTE4wMV9DSDEJCTB4ODI4Cj4gKyNkZWZpbmUg X1BPUlRfUENTX0RXMTBfR1JQX0NIMAkJMHhDMjgKPiArI2RlZmluZSBfUE9SVF9QQ1NfRFcxMF9H UlBfQ0gxCQkweEUyOAo+IMKgI2RlZmluZcKgwqDCoFRYMl9TV0lOR19DQUxDX0lOSVQJCSgxIDw8 IDMxKQo+IMKgI2RlZmluZcKgwqDCoFRYMV9TV0lOR19DQUxDX0lOSVQJCSgxIDw8IDMwKQo+IC0K PiAtI2RlZmluZSBfUE9SVF9QQ1NfRFcxMl9MTjAxX0EJCTB4MTYyNDMwCj4gLSNkZWZpbmUgX1BP UlRfUENTX0RXMTJfTE4wMV9CCQkweDZDNDMwCj4gLSNkZWZpbmUgX1BPUlRfUENTX0RXMTJfTE4w MV9DCQkweDZDODMwCj4gLSNkZWZpbmUgX1BPUlRfUENTX0RXMTJfTE4yM19BCQkweDE2MjYzMAo+ IC0jZGVmaW5lIF9QT1JUX1BDU19EVzEyX0xOMjNfQgkJMHg2QzYzMAo+IC0jZGVmaW5lIF9QT1JU X1BDU19EVzEyX0xOMjNfQwkJMHg2Q0EzMAo+IC0jZGVmaW5lIF9QT1JUX1BDU19EVzEyX0dSUF9B CQkweDE2MmMzMAo+IC0jZGVmaW5lIF9QT1JUX1BDU19EVzEyX0dSUF9CCQkweDZDQzMwCj4gLSNk ZWZpbmUgX1BPUlRfUENTX0RXMTJfR1JQX0MJCTB4NkNFMzAKPiArI2RlZmluZSBCWFRfUE9SVF9Q Q1NfRFcxMF9MTjAxKGJhc2UsIGNoKQlcCj4gKwlfTU1JTygoYmFzZSkgKyBfUElQRShjaCwgX1BP UlRfUENTX0RXMTBfTE4wMV9DSDAsCQlcCj4gKwkJCcKgwqDCoMKgwqBfUE9SVF9QQ1NfRFcxMF9M TjAxX0NIMSkpCj4gKyNkZWZpbmUgQlhUX1BPUlRfUENTX0RXMTBfR1JQKGJhc2UsIGNoKQlcCj4g KwlfTU1JTygoYmFzZSkgKyBfUElQRShjaCwgX1BPUlRfUENTX0RXMTBfR1JQX0NIMCwJCVwKPiAr CQkJwqDCoMKgwqDCoF9QT1JUX1BDU19EVzEwX0dSUF9DSDEpKQo+ICsKPiArI2RlZmluZSBfUE9S VF9QQ1NfRFcxMl9MTjAxX0NIMAkJMHg0MzAKPiArI2RlZmluZSBfUE9SVF9QQ1NfRFcxMl9MTjAx X0NIMQkJMHg4MzAKPiArI2RlZmluZSBfUE9SVF9QQ1NfRFcxMl9MTjIzX0NIMAkJMHg2MzAKPiAr I2RlZmluZSBfUE9SVF9QQ1NfRFcxMl9MTjIzX0NIMQkJMHhBMzAKPiArI2RlZmluZSBfUE9SVF9Q Q1NfRFcxMl9HUlBfQ0gwCQkweEMzMAo+ICsjZGVmaW5lIF9QT1JUX1BDU19EVzEyX0dSUF9DSDEJ CTB4RTMwCj4gwqAjZGVmaW5lwqDCoMKgTEFORVNUQUdHRVJfU1RSQVBfT1ZSRAkoMSA8PCA2KQo+ IMKgI2RlZmluZcKgwqDCoExBTkVfU1RBR0dFUl9NQVNLCQkweDFGCj4gLSNkZWZpbmUgQlhUX1BP UlRfUENTX0RXMTJfTE4wMShwb3J0KQlfTU1JT19QT1JUMyhwb3J0LCBfUE9SVF9QQ1NfRFcxMl9M TjAxX0EsIFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1BDU19EVzEyX0xOMDFfQiwgXAo+IC0J CQkJCQnCoMKgwqDCoMKgX1BPUlRfUENTX0RXMTJfTE4wMV9DKQo+IC0jZGVmaW5lIEJYVF9QT1JU X1BDU19EVzEyX0xOMjMocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRfUENTX0RXMTJfTE4y M19BLCBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9QQ1NfRFcxMl9MTjIzX0IsIFwKPiAtCQkJ CQkJwqDCoMKgwqDCoF9QT1JUX1BDU19EVzEyX0xOMjNfQykKPiAtI2RlZmluZSBCWFRfUE9SVF9Q Q1NfRFcxMl9HUlAocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRfUENTX0RXMTJfR1JQX0Es IFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1BDU19EVzEyX0dSUF9CLCBcCj4gLQkJCQkJCcKg wqDCoMKgwqBfUE9SVF9QQ1NfRFcxMl9HUlBfQykKPiArI2RlZmluZSBCWFRfUE9SVF9QQ1NfRFcx Ml9MTjAxKGJhc2UsIGNoKQlcCj4gKwlfTU1JTygoYmFzZSkgKyBfUElQRShjaCwgX1BPUlRfUENT X0RXMTJfTE4wMV9DSDAsIF9QT1JUX1BDU19EVzEyX0xOMDFfQ0gxKSkKPiArI2RlZmluZSBCWFRf UE9SVF9QQ1NfRFcxMl9MTjIzKGJhc2UsIGNoKQlcCj4gKwlfTU1JTygoYmFzZSkgKyBfUElQRShj aCwgX1BPUlRfUENTX0RXMTJfTE4yM19DSDAsIF9QT1JUX1BDU19EVzEyX0xOMjNfQ0gxKSkKPiAr I2RlZmluZSBCWFRfUE9SVF9QQ1NfRFcxMl9HUlAoYmFzZSwgY2gpCVwKPiArCV9NTUlPKChiYXNl KSArIF9QSVBFKGNoLCBfUE9SVF9QQ1NfRFcxMl9HUlBfQ0gwLCBfUE9SVF9QQ1NfRFcxMl9HUlBf Q0gxKSkKPiDCoAo+IMKgLyogQlhUIFBIWSBUWCByZWdpc3RlcnMgKi8KPiDCoCNkZWZpbmUgX0JY VF9MQU5FX09GRlNFVChsYW5lKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoKChsYW5lKSA+PiAxKSAq IDB4MjAwICsJXAo+IMKgCQkJCQnCoMKgKChsYW5lKSAmIDEpICogMHg4MCkKPiDCoAo+IC0jZGVm aW5lIF9QT1JUX1RYX0RXMl9MTjBfQQkJMHgxNjI1MDgKPiAtI2RlZmluZSBfUE9SVF9UWF9EVzJf TE4wX0IJCTB4NkM1MDgKPiAtI2RlZmluZSBfUE9SVF9UWF9EVzJfTE4wX0MJCTB4NkM5MDgKPiAt I2RlZmluZSBfUE9SVF9UWF9EVzJfR1JQX0EJCTB4MTYyRDA4Cj4gLSNkZWZpbmUgX1BPUlRfVFhf RFcyX0dSUF9CCQkweDZDRDA4Cj4gLSNkZWZpbmUgX1BPUlRfVFhfRFcyX0dSUF9DCQkweDZDRjA4 Cj4gLSNkZWZpbmUgQlhUX1BPUlRfVFhfRFcyX0dSUChwb3J0KQlfTU1JT19QT1JUMyhwb3J0LCBf UE9SVF9UWF9EVzJfR1JQX0EswqDCoFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1RYX0RXMl9H UlBfQizCoMKgXAo+IC0JCQkJCQnCoMKgwqDCoMKgX1BPUlRfVFhfRFcyX0dSUF9DKQo+IC0jZGVm aW5lIEJYVF9QT1JUX1RYX0RXMl9MTjAocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRfVFhf RFcyX0xOMF9BLMKgwqBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9UWF9EVzJfTE4wX0IswqDC oFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1RYX0RXMl9MTjBfQykKPiArI2RlZmluZSBfUE9S VF9UWF9EVzJfTE4wX0NIMAkJMHg1MDgKPiArI2RlZmluZSBfUE9SVF9UWF9EVzJfTE4wX0NIMQkJ MHg5MDgKPiArI2RlZmluZSBfUE9SVF9UWF9EVzJfR1JQX0NIMAkJMHhEMDgKPiArI2RlZmluZSBf UE9SVF9UWF9EVzJfR1JQX0NIMQkJMHhGMDgKPiDCoCNkZWZpbmXCoMKgwqBNQVJHSU5fMDAwX1NI SUZUCQkxNgo+IMKgI2RlZmluZcKgwqDCoE1BUkdJTl8wMDAJCQkoMHhGRiA8PCBNQVJHSU5fMDAw X1NISUZUKQo+IMKgI2RlZmluZcKgwqDCoFVOSVFfVFJBTlNfU0NBTEVfU0hJRlQJOAo+IMKgI2Rl ZmluZcKgwqDCoFVOSVFfVFJBTlNfU0NBTEUJCSgweEZGIDw8IFVOSVFfVFJBTlNfU0NBTEVfU0hJ RlQpCj4gLQo+IC0jZGVmaW5lIF9QT1JUX1RYX0RXM19MTjBfQQkJMHgxNjI1MEMKPiAtI2RlZmlu ZSBfUE9SVF9UWF9EVzNfTE4wX0IJCTB4NkM1MEMKPiAtI2RlZmluZSBfUE9SVF9UWF9EVzNfTE4w X0MJCTB4NkM5MEMKPiAtI2RlZmluZSBfUE9SVF9UWF9EVzNfR1JQX0EJCTB4MTYyRDBDCj4gLSNk ZWZpbmUgX1BPUlRfVFhfRFczX0dSUF9CCQkweDZDRDBDCj4gLSNkZWZpbmUgX1BPUlRfVFhfRFcz X0dSUF9DCQkweDZDRjBDCj4gLSNkZWZpbmUgQlhUX1BPUlRfVFhfRFczX0dSUChwb3J0KQlfTU1J T19QT1JUMyhwb3J0LCBfUE9SVF9UWF9EVzNfR1JQX0EswqDCoFwKPiAtCQkJCQkJwqDCoMKgwqDC oF9QT1JUX1RYX0RXM19HUlBfQizCoMKgXAo+IC0JCQkJCQnCoMKgwqDCoMKgX1BPUlRfVFhfRFcz X0dSUF9DKQo+IC0jZGVmaW5lIEJYVF9QT1JUX1RYX0RXM19MTjAocG9ydCkJX01NSU9fUE9SVDMo cG9ydCwgX1BPUlRfVFhfRFczX0xOMF9BLMKgwqBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9U WF9EVzNfTE4wX0IswqDCoFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1RYX0RXM19MTjBfQykK PiArI2RlZmluZSBCWFRfUE9SVF9UWF9EVzJfR1JQKGJhc2UsIGNoKQlcCj4gKwlfTU1JTygoYmFz ZSkgKyBfUElQRSgoY2gpLCBfUE9SVF9UWF9EVzJfR1JQX0NIMCwgX1BPUlRfVFhfRFcyX0dSUF9D SDEpKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1RYX0RXMl9MTjAoYmFzZSwgY2gpCVwKPiArCV9NTUlP KChiYXNlKSArIF9QSVBFKChjaCksIF9QT1JUX1RYX0RXMl9MTjBfQ0gwLCBfUE9SVF9UWF9EVzJf TE4wX0NIMSkpCj4gKwo+ICsjZGVmaW5lIF9QT1JUX1RYX0RXM19MTjBfQ0gwCQkweDUwQwo+ICsj ZGVmaW5lIF9QT1JUX1RYX0RXM19MTjBfQ0gxCQkweDkwQwo+ICsjZGVmaW5lIF9QT1JUX1RYX0RX M19HUlBfQ0gwCQkweEQwQwo+ICsjZGVmaW5lIF9QT1JUX1RYX0RXM19HUlBfQ0gxCQkweEYwQwo+ IMKgI2RlZmluZcKgwqDCoFNDQUxFX0RDT01QX01FVEhPRAkJKDEgPDwgMjYpCj4gwqAjZGVmaW5l wqDCoMKgVU5JUVVFX1RSQU5HRV9FTl9NRVRIT0QJKDEgPDwgMjcpCj4gKyNkZWZpbmUgQlhUX1BP UlRfVFhfRFczX0dSUChiYXNlLCBjaCkJXAo+ICsJX01NSU8oKGJhc2UpICsgX1BJUEUoKGNoKSwg X1BPUlRfVFhfRFczX0dSUF9DSDAsIF9QT1JUX1RYX0RXM19HUlBfQ0gxKSkKPiArI2RlZmluZSBC WFRfUE9SVF9UWF9EVzNfTE4wKGJhc2UsIGNoKQlcCj4gKwlfTU1JTygoYmFzZSkgKyBfUElQRSgo Y2gpLCBfUE9SVF9UWF9EVzNfTE4wX0NIMCwgX1BPUlRfVFhfRFczX0xOMF9DSDEpKQo+ICsKPiDC oAo+IC0jZGVmaW5lIF9QT1JUX1RYX0RXNF9MTjBfQQkJMHgxNjI1MTAKPiAtI2RlZmluZSBfUE9S VF9UWF9EVzRfTE4wX0IJCTB4NkM1MTAKPiAtI2RlZmluZSBfUE9SVF9UWF9EVzRfTE4wX0MJCTB4 NkM5MTAKPiAtI2RlZmluZSBfUE9SVF9UWF9EVzRfR1JQX0EJCTB4MTYyRDEwCj4gLSNkZWZpbmUg X1BPUlRfVFhfRFc0X0dSUF9CCQkweDZDRDEwCj4gLSNkZWZpbmUgX1BPUlRfVFhfRFc0X0dSUF9D CQkweDZDRjEwCj4gLSNkZWZpbmUgQlhUX1BPUlRfVFhfRFc0X0xOMChwb3J0KQlfTU1JT19QT1JU Myhwb3J0LCBfUE9SVF9UWF9EVzRfTE4wX0EswqDCoFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JU X1RYX0RXNF9MTjBfQizCoMKgXAo+IC0JCQkJCQnCoMKgwqDCoMKgX1BPUlRfVFhfRFc0X0xOMF9D KQo+IC0jZGVmaW5lIEJYVF9QT1JUX1RYX0RXNF9HUlAocG9ydCkJX01NSU9fUE9SVDMocG9ydCwg X1BPUlRfVFhfRFc0X0dSUF9BLMKgwqBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9UWF9EVzRf R1JQX0IswqDCoFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1RYX0RXNF9HUlBfQykKPiArI2Rl ZmluZSBfUE9SVF9UWF9EVzRfTE4wX0NIMAkJMHg1MTAKPiArI2RlZmluZSBfUE9SVF9UWF9EVzRf TE4wX0NIMQkJMHg5MTAKPiArI2RlZmluZSBfUE9SVF9UWF9EVzRfR1JQX0NIMAkJMHhEMTAKPiAr I2RlZmluZSBfUE9SVF9UWF9EVzRfR1JQX0NIMQkJMHhGMTAKPiDCoCNkZWZpbmXCoMKgwqBERUVN UEhfU0hJRlQJCQkyNAo+IMKgI2RlZmluZcKgwqDCoERFX0VNUEhBU0lTCQkJKDB4RkYgPDwgREVF TVBIX1NISUZUKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1RYX0RXNF9HUlAoYmFzZSwgY2gpCVwKPiAr CV9NTUlPKChiYXNlKSArIF9QSVBFKChjaCksIF9QT1JUX1RYX0RXNF9HUlBfQ0gwLCBfUE9SVF9U WF9EVzRfR1JQX0NIMSkpCj4gKyNkZWZpbmUgQlhUX1BPUlRfVFhfRFc0X0xOMChiYXNlLCBjaCkJ XAo+ICsJX01NSU8oKGJhc2UpICsgX1BJUEUoKGNoKSwgX1BPUlRfVFhfRFc0X0xOMF9DSDAsIF9Q T1JUX1RYX0RXNF9MTjBfQ0gxKSkKPiDCoAo+IC0jZGVmaW5lIF9QT1JUX1RYX0RXMTRfTE4wX0EJ CTB4MTYyNTM4Cj4gLSNkZWZpbmUgX1BPUlRfVFhfRFcxNF9MTjBfQgkJMHg2QzUzOAo+IC0jZGVm aW5lIF9QT1JUX1RYX0RXMTRfTE4wX0MJCTB4NkM5MzgKPiArI2RlZmluZSBfUE9SVF9UWF9EVzE0 X0xOMF9DSDAJCTB4NTM4Cj4gKyNkZWZpbmUgX1BPUlRfVFhfRFcxNF9MTjBfQ0gxCQkweDkzOAo+ IMKgI2RlZmluZcKgwqDCoExBVEVOQ1lfT1BUSU1fU0hJRlQJCTMwCj4gwqAjZGVmaW5lwqDCoMKg TEFURU5DWV9PUFRJTQkJCSgxIDw8IExBVEVOQ1lfT1BUSU1fU0hJRlQpCj4gLSNkZWZpbmUgQlhU X1BPUlRfVFhfRFcxNF9MTihwb3J0LCBsYW5lKQlfTU1JTyhfUE9SVDMoKHBvcnQpLCBfUE9SVF9U WF9EVzE0X0xOMF9BLMKgwqDCoFwKPiAtCQkJCQkJCV9QT1JUX1RYX0RXMTRfTE4wX0IswqDCoMKg XAo+IC0JCQkJCQkJX1BPUlRfVFhfRFcxNF9MTjBfQykgKyBcCj4gLQkJCQkJwqBfQlhUX0xBTkVf T0ZGU0VUKGxhbmUpKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1RYX0RXMTRfTE4oYmFzZSwgY2gsIGxh bmUpCVwKPiArCV9NTUlPKChiYXNlKSArIF9QSVBFKChjaCksIF9QT1JUX1RYX0RXMTRfTE4wX0NI MCwJXAo+ICsJCQkJwqDCoMKgX1BPUlRfVFhfRFcxNF9MTjBfQ0gxKSArwqAJXAo+ICsJwqDCoMKg wqDCoMKgX0JYVF9MQU5FX09GRlNFVChsYW5lKSkKPiDCoAo+IMKgLyogVUFJTUkgc2NyYXRjaCBw YWQgcmVnaXN0ZXIgMSAqLwo+IMKgI2RlZmluZSBVQUlNSV9TUFIxCQkJX01NSU8oMHg0RjA3NCkK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMKPiBpbmRleCBlOGE3NWZkLi4wN2Vm MTU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gQEAgLTEyNCw2 ICsxMjQsMTEgQEAgc3RydWN0IGJ4dF9kZGlfcGh5X2luZm8gewo+IMKgCWJvb2wgZHVhbF9jaGFu bmVsOwo+IMKgCj4gwqAJLyoqCj4gKwnCoCogQG1taW9fYmFzZTogYmFzZSBhZGRlc3MgZm9yIGFj Y2Vzc2luZyB0aGlzIFBIWSB0aHJvdWdoIG1taW8uCj4gKwnCoCovCj4gKwl1MzIgbW1pb19iYXNl Owo+ICsKPiArCS8qKgo+IMKgCcKgKiBAcmNvbXBfcGh5OiBJZiAtMSwgaW5kaWNhdGVzIHRoaXMg cGh5IGhhcyBpdHMgb3duIHJjb21wIHJlc2lzdG9yLgo+IMKgCcKgKiBPdGhlcndpc2UgdGhlIEdS QyB2YWx1ZSB3aWxsIGJlIGNvcGllZCBmcm9tIHRoZSBwaHkgaW5kaWNhdGVkIGJ5Cj4gwqAJwqAq IHRoaXMgZmllbGQuCj4gQEAgLTE0Myw2ICsxNDgsNyBAQCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5m byB7Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyBieHRfZGRp X3BoeV9pbmZvW10gPSB7Cj4gwqAJW0RQSU9fUEhZMF0gPSB7Cj4gKwkJLm1taW9fYmFzZSA9IEJY VF9QSFkwX0JBU0UsCj4gwqAJCS5kdWFsX2NoYW5uZWwgPSB0cnVlLAo+IMKgCQkucmNvbXBfcGh5 ID0gRFBJT19QSFkxLAo+IMKgCj4gQEAgLTE1Miw2ICsxNTgsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGJ4dF9kZGlfcGh5X2luZm8gYnh0X2RkaV9waHlfaW5mb1tdID0gewo+IMKgCQl9Cj4gwqAJ fSwKPiDCoAlbRFBJT19QSFkxXSA9IHsKPiArCQkubW1pb19iYXNlID0gQlhUX1BIWTFfQkFTRSwK PiDCoAkJLmR1YWxfY2hhbm5lbCA9IGZhbHNlLAo+IMKgCQkucmNvbXBfcGh5ID0gLTEsCj4gwqAK PiBAQCAtMTY3LDI2ICsxNzQsNTggQEAgc3RhdGljIHUzMiBieHRfcGh5X3BvcnRfbWFzayhjb25z dCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyAqcGh5X2luZm8pCj4gwqAJCUJJVChwaHlfaW5mby0+ Y2hhbm5lbFtEUElPX0NIMF0ucG9ydCk7Cj4gwqB9Cj4gwqAKPiArdm9pZCBieHRfcG9ydF90b19w aHlfY2hhbm5lbChlbnVtIHBvcnQgcG9ydCwKPiArCQkJwqDCoMKgwqDCoHUzMiAqbW1pb19iYXNl LCBlbnVtIGRwaW9fY2hhbm5lbCAqY2gpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBieHRfZGRpX3Bo eV9pbmZvICpwaHlfaW5mbzsKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGJ4dF9kZGlfcGh5X2luZm8pOyBpKyspIHsKPiArCQlwaHlfaW5mbyA9ICZieHRfZGRp X3BoeV9pbmZvW2ldOwo+ICsKPiArCQlpZiAocG9ydCA9PSBwaHlfaW5mby0+Y2hhbm5lbFtEUElP X0NIMF0ucG9ydCkgewo+ICsJCQkqbW1pb19iYXNlID0gcGh5X2luZm8tPm1taW9fYmFzZTsKPiAr CQkJKmNoID0gRFBJT19DSDA7Cj4gKwkJCXJldHVybjsKPiArCQl9Cj4gKwo+ICsJCWlmIChwaHlf aW5mby0+ZHVhbF9jaGFubmVsICYmCj4gKwkJwqDCoMKgwqBwb3J0ID09IHBoeV9pbmZvLT5jaGFu bmVsW0RQSU9fQ0gxXS5wb3J0KSB7Cj4gKwkJCSptbWlvX2Jhc2UgPSBwaHlfaW5mby0+bW1pb19i YXNlOwo+ICsJCQkqY2ggPSBEUElPX0NIMTsKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCX0KPiAr Cj4gKwlXQVJOKDEsICJQSFkgbm90IGZvdW5kIGZvciBQT1JUICVjIiwgcG9ydF9uYW1lKHBvcnQp KTsKPiArCSptbWlvX2Jhc2UgPSBCWFRfUEhZMF9CQVNFOwo+ICsJKmNoID0gRFBJT19DSDA7Cj4g K30KPiArCj4gwqB2b2lkIGJ4dF9kZGlfcGh5X3NldF9zaWduYWxfbGV2ZWwoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQkJCcKgwqBlbnVtIHBvcnQgcG9ydCwgdTMyIG1h cmdpbiwgdTMyIHNjYWxlLAo+IMKgCQkJCcKgwqB1MzIgZW5hYmxlLCB1MzIgZGVlbXBoYXNpcykK PiDCoHsKPiDCoAl1MzIgdmFsOwo+ICsJdTMyIHBoeTsKPiArCWVudW0gZHBpb19jaGFubmVsIGNo Owo+ICsKPiArCWJ4dF9wb3J0X3RvX3BoeV9jaGFubmVsKHBvcnQsICZwaHksICZjaCk7Cj4gwqAK PiDCoAkvKgo+IMKgCcKgKiBXaGlsZSB3ZSB3cml0ZSB0byB0aGUgZ3JvdXAgcmVnaXN0ZXIgdG8g cHJvZ3JhbSBhbGwgbGFuZXMgYXQgb25jZSB3ZQo+IMKgCcKgKiBjYW4gcmVhZCBvbmx5IGxhbmUg cmVnaXN0ZXJzIGFuZCB3ZSBwaWNrIGxhbmVzIDAvMSBmb3IgdGhhdC4KPiDCoAnCoCovCj4gLQl2 YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUENTX0RXMTBfTE4wMShwb3J0KSk7Cj4gKwl2YWwgPSBJ OTE1X1JFQUQoQlhUX1BPUlRfUENTX0RXMTBfTE4wMShwaHksIGNoKSk7Cj4gwqAJdmFsICY9IH4o VFgyX1NXSU5HX0NBTENfSU5JVCB8IFRYMV9TV0lOR19DQUxDX0lOSVQpOwo+IC0JSTkxNV9XUklU RShCWFRfUE9SVF9QQ1NfRFcxMF9HUlAocG9ydCksIHZhbCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9Q T1JUX1BDU19EVzEwX0dSUChwaHksIGNoKSwgdmFsKTsKPiDCoAo+IC0JdmFsID0gSTkxNV9SRUFE KEJYVF9QT1JUX1RYX0RXMl9MTjAocG9ydCkpOwo+ICsJdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JU X1RYX0RXMl9MTjAocGh5LCBjaCkpOwo+IMKgCXZhbCAmPSB+KE1BUkdJTl8wMDAgfCBVTklRX1RS QU5TX1NDQUxFKTsKPiDCoAl2YWwgfD0gbWFyZ2luIDw8IE1BUkdJTl8wMDBfU0hJRlQgfCBzY2Fs ZSA8PCBVTklRX1RSQU5TX1NDQUxFX1NISUZUOwo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9UWF9E VzJfR1JQKHBvcnQpLCB2YWwpOwo+ICsJSTkxNV9XUklURShCWFRfUE9SVF9UWF9EVzJfR1JQKHBo eSwgY2gpLCB2YWwpOwo+IMKgCj4gLQl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfVFhfRFczX0xO MChwb3J0KSk7Cj4gKwl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfVFhfRFczX0xOMChwaHksIGNo KSk7Cj4gwqAJdmFsICY9IH5TQ0FMRV9EQ09NUF9NRVRIT0Q7Cj4gwqAJaWYgKGVuYWJsZSkKPiDC oAkJdmFsIHw9IFNDQUxFX0RDT01QX01FVEhPRDsKPiBAQCAtMTk0LDE2ICsyMzMsMTYgQEAgdm9p ZCBieHRfZGRpX3BoeV9zZXRfc2lnbmFsX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiDCoAlpZiAoKHZhbCAmIFVOSVFVRV9UUkFOR0VfRU5fTUVUSE9EKSAmJiAhKHZh bCAmIFNDQUxFX0RDT01QX01FVEhPRCkpCj4gwqAJCURSTV9FUlJPUigiRGlzYWJsZWQgc2NhbGlu ZyB3aGlsZSBvdW5pcWV0cmFuZ2VubWV0aG9kIHdhcyBzZXQiKTsKPiDCoAo+IC0JSTkxNV9XUklU RShCWFRfUE9SVF9UWF9EVzNfR1JQKHBvcnQpLCB2YWwpOwo+ICsJSTkxNV9XUklURShCWFRfUE9S VF9UWF9EVzNfR1JQKHBoeSwgY2gpLCB2YWwpOwo+IMKgCj4gLQl2YWwgPSBJOTE1X1JFQUQoQlhU X1BPUlRfVFhfRFc0X0xOMChwb3J0KSk7Cj4gKwl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfVFhf RFc0X0xOMChwaHksIGNoKSk7Cj4gwqAJdmFsICY9IH5ERV9FTVBIQVNJUzsKPiDCoAl2YWwgfD0g ZGVlbXBoYXNpcyA8PCBERUVNUEhfU0hJRlQ7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1RYX0RX NF9HUlAocG9ydCksIHZhbCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1RYX0RXNF9HUlAocGh5 LCBjaCksIHZhbCk7Cj4gwqAKPiAtCXZhbCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QQ1NfRFcxMF9M TjAxKHBvcnQpKTsKPiArCXZhbCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QQ1NfRFcxMF9MTjAxKHBo eSwgY2gpKTsKPiDCoAl2YWwgfD0gVFgyX1NXSU5HX0NBTENfSU5JVCB8IFRYMV9TV0lOR19DQUxD X0lOSVQ7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BDU19EVzEwX0dSUChwb3J0KSwgdmFsKTsK PiArCUk5MTVfV1JJVEUoQlhUX1BPUlRfUENTX0RXMTBfR1JQKHBoeSwgY2gpLCB2YWwpOwo+IMKg fQo+IMKgCj4gwqBib29sIGJ4dF9kZGlfcGh5X2lzX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+IEBAIC0yMTUsNyArMjU0LDcgQEAgYm9vbCBieHRfZGRpX3BoeV9p c19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAlpZiAoIShJ OTE1X1JFQUQoQlhUX1BfQ1JfR1RfRElTUF9QV1JPTikgJiBHVF9ESVNQTEFZX1BPV0VSX09OKHBo eSkpKQo+IMKgCQlyZXR1cm4gZmFsc2U7Cj4gwqAKPiAtCWlmICgoSTkxNV9SRUFEKEJYVF9QT1JU X0NMMUNNX0RXMChwaHkpKSAmCj4gKwlpZiAoKEk5MTVfUkVBRChCWFRfUE9SVF9DTDFDTV9EVzAo cGh5X2luZm8tPm1taW9fYmFzZSkpICYKPiDCoAnCoMKgwqDCoMKgKFBIWV9QT1dFUl9HT09EIHwg UEhZX1JFU0VSVkVEKSkgIT0gUEhZX1BPV0VSX0dPT0QpIHsKPiDCoAkJRFJNX0RFQlVHX0RSSVZF UigiRERJIFBIWSAlZCBwb3dlcmVkLCBidXQgcG93ZXIgaGFzbid0IHNldHRsZWRcbiIsCj4gwqAJ CQkJwqBwaHkpOwo+IEBAIC0yMjQsNyArMjYzLDcgQEAgYm9vbCBieHRfZGRpX3BoeV9pc19lbmFi bGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAl9Cj4gwqAKPiDCoAlp ZiAocGh5X2luZm8tPnJjb21wX3BoeSA9PSAtMSAmJgo+IC0JwqDCoMKgwqAhKEk5MTVfUkVBRChC WFRfUE9SVF9SRUZfRFczKHBoeSkpICYgR1JDX0RPTkUpKSB7Cj4gKwnCoMKgwqDCoCEoSTkxNV9S RUFEKEJYVF9QT1JUX1JFRl9EVzMocGh5X2luZm8tPm1taW9fYmFzZSkpICYgR1JDX0RPTkUpKSB7 Cj4gwqAJCURSTV9ERUJVR19EUklWRVIoIkRESSBQSFkgJWQgcG93ZXJlZCwgYnV0IEdSQyBpc24n dCBkb25lXG4iLAo+IMKgCQkJCcKgcGh5KTsKPiDCoAo+IEBAIC0yNTYsNyArMjk1LDExIEBAIGJv b2wgYnh0X2RkaV9waHlfaXNfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gwqAKPiDCoHN0YXRpYyB1MzIgYnh0X2dldF9ncmMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBlbnVtIGRwaW9fcGh5IHBoeSkKPiDCoHsKPiAtCXUzMiB2YWwgPSBJOTE1 X1JFQUQoQlhUX1BPUlRfUkVGX0RXNihwaHkpKTsKPiArCWNvbnN0IHN0cnVjdCBieHRfZGRpX3Bo eV9pbmZvICpwaHlfaW5mbzsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJcGh5X2luZm8gPSAmYnh0X2Rk aV9waHlfaW5mb1twaHldOwo+ICsJdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1JFRl9EVzYocGh5 X2luZm8tPm1taW9fYmFzZSkpOwo+IMKgCj4gwqAJcmV0dXJuICh2YWwgJiBHUkNfQ09ERV9NQVNL KSA+PiBHUkNfQ09ERV9TSElGVDsKPiDCoH0KPiBAQCAtMjY0LDggKzMwNywxMiBAQCBzdGF0aWMg dTMyIGJ4dF9nZXRfZ3JjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBk cGlvX3BoeSBwaHkpCj4gwqBzdGF0aWMgdm9pZCBieHRfcGh5X3dhaXRfZ3JjX2RvbmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQkJCcKgwqBlbnVtIGRwaW9fcGh5IHBo eSkKPiDCoHsKPiArCWNvbnN0IHN0cnVjdCBieHRfZGRpX3BoeV9pbmZvICpwaHlfaW5mbzsKPiAr Cj4gKwlwaHlfaW5mbyA9ICZieHRfZGRpX3BoeV9pbmZvW3BoeV07Cj4gKwo+IMKgCWlmIChpbnRl bF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiAtCQkJCcKgwqDCoMKgQlhUX1BPUlRfUkVG X0RXMyhwaHkpLAo+ICsJCQkJwqDCoMKgwqBCWFRfUE9SVF9SRUZfRFczKHBoeV9pbmZvLT5tbWlv X2Jhc2UpLAo+IMKgCQkJCcKgwqDCoMKgR1JDX0RPTkUsIEdSQ19ET05FLAo+IMKgCQkJCcKgwqDC oMKgMTApKQo+IMKgCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgUEhZJWQgR1JDXG4i LCBwaHkpOwo+IEBAIC0zMDUsMzUgKzM1MiwzNSBAQCBzdGF0aWMgdm9pZCBfYnh0X2RkaV9waHlf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJwqAqIEhXIHRlYW0g Y29uZmlybWVkIHRoYXQgdGhlIHRpbWUgdG8gcmVhY2ggcGh5cG93ZXJnb29kIHN0YXR1cyBpcwo+ IMKgCcKgKiBhbnl3aGVyZSBiZXR3ZWVuIDUwIHVzIGFuZCAxMDB1cy4KPiDCoAnCoCovCj4gLQlp ZiAod2FpdF9mb3JfdXMoKChJOTE1X1JFQUQoQlhUX1BPUlRfQ0wxQ01fRFcwKHBoeSkpICYKPiAr CWlmICh3YWl0X2Zvcl91cygoKEk5MTVfUkVBRChCWFRfUE9SVF9DTDFDTV9EVzAocGh5X2luZm8t Pm1taW9fYmFzZSkpICYKPiDCoAkJKFBIWV9SRVNFUlZFRCB8IFBIWV9QT1dFUl9HT09EKSkgPT0g UEhZX1BPV0VSX0dPT0QpLCAxMDApKSB7Cj4gwqAJCURSTV9FUlJPUigidGltZW91dCBkdXJpbmcg UEhZJWQgcG93ZXIgb25cbiIsIHBoeSk7Cj4gwqAJfQo+IMKgCj4gwqAJLyogUHJvZ3JhbSBQTEwg UmNvbXAgY29kZSBvZmZzZXQgKi8KPiAtCXZhbCA9IEk5MTVfUkVBRChCWFRfUE9SVF9DTDFDTV9E VzkocGh5KSk7Cj4gKwl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfQ0wxQ01fRFc5KHBoeV9pbmZv LT5tbWlvX2Jhc2UpKTsKPiDCoAl2YWwgJj0gfklSRUYwUkNfT0ZGU0VUX01BU0s7Cj4gwqAJdmFs IHw9IDB4RTQgPDwgSVJFRjBSQ19PRkZTRVRfU0hJRlQ7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JU X0NMMUNNX0RXOShwaHkpLCB2YWwpOwo+ICsJSTkxNV9XUklURShCWFRfUE9SVF9DTDFDTV9EVzko cGh5X2luZm8tPm1taW9fYmFzZSksIHZhbCk7Cj4gwqAKPiAtCXZhbCA9IEk5MTVfUkVBRChCWFRf UE9SVF9DTDFDTV9EVzEwKHBoeSkpOwo+ICsJdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX0NMMUNN X0RXMTAocGh5X2luZm8tPm1taW9fYmFzZSkpOwo+IMKgCXZhbCAmPSB+SVJFRjFSQ19PRkZTRVRf TUFTSzsKPiDCoAl2YWwgfD0gMHhFNCA8PCBJUkVGMVJDX09GRlNFVF9TSElGVDsKPiAtCUk5MTVf V1JJVEUoQlhUX1BPUlRfQ0wxQ01fRFcxMChwaHkpLCB2YWwpOwo+ICsJSTkxNV9XUklURShCWFRf UE9SVF9DTDFDTV9EVzEwKHBoeV9pbmZvLT5tbWlvX2Jhc2UpLCB2YWwpOwo+IMKgCj4gwqAJLyog UHJvZ3JhbSBwb3dlciBnYXRpbmcgKi8KPiAtCXZhbCA9IEk5MTVfUkVBRChCWFRfUE9SVF9DTDFD TV9EVzI4KHBoeSkpOwo+ICsJdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX0NMMUNNX0RXMjgocGh5 X2luZm8tPm1taW9fYmFzZSkpOwo+IMKgCXZhbCB8PSBPQ0wxX1BPV0VSX0RPV05fRU4gfCBEVzI4 X09MRE9fRFlOX1BXUl9ET1dOX0VOIHwKPiDCoAkJU1VTX0NMS19DT05GSUc7Cj4gLQlJOTE1X1dS SVRFKEJYVF9QT1JUX0NMMUNNX0RXMjgocGh5KSwgdmFsKTsKPiArCUk5MTVfV1JJVEUoQlhUX1BP UlRfQ0wxQ01fRFcyOChwaHlfaW5mby0+bW1pb19iYXNlKSwgdmFsKTsKPiDCoAo+IMKgCWlmIChw aHlfaW5mby0+ZHVhbF9jaGFubmVsKSB7Cj4gLQkJdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX0NM MkNNX0RXNihwaHkpKTsKPiArCQl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfQ0wyQ01fRFc2KHBo eV9pbmZvLT5tbWlvX2Jhc2UpKTsKPiDCoAkJdmFsIHw9IERXNl9PTERPX0RZTl9QV1JfRE9XTl9F TjsKPiAtCQlJOTE1X1dSSVRFKEJYVF9QT1JUX0NMMkNNX0RXNihwaHkpLCB2YWwpOwo+ICsJCUk5 MTVfV1JJVEUoQlhUX1BPUlRfQ0wyQ01fRFc2KHBoeV9pbmZvLT5tbWlvX2Jhc2UpLCB2YWwpOwo+ IMKgCX0KPiDCoAo+IC0JdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX0NMMUNNX0RXMzAocGh5KSk7 Cj4gKwl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfQ0wxQ01fRFczMChwaHlfaW5mby0+bW1pb19i YXNlKSk7Cj4gwqAJdmFsICY9IH5PQ0wyX0xET0ZVU0VfUFdSX0RJUzsKPiDCoAkvKgo+IMKgCcKg KiBPbiBQSFkxIGRpc2FibGUgcG93ZXIgb24gdGhlIHNlY29uZCBjaGFubmVsLCBzaW5jZSBubyBw b3J0IGlzCj4gQEAgLTM0Nyw3ICszOTQsNyBAQCBzdGF0aWMgdm9pZCBfYnh0X2RkaV9waHlfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJwqAqLwo+IMKgCWlmICgh cGh5X2luZm8tPmR1YWxfY2hhbm5lbCkKPiDCoAkJdmFsIHw9IE9DTDJfTERPRlVTRV9QV1JfRElT Owo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9DTDFDTV9EVzMwKHBoeSksIHZhbCk7Cj4gKwlJOTE1 X1dSSVRFKEJYVF9QT1JUX0NMMUNNX0RXMzAocGh5X2luZm8tPm1taW9fYmFzZSksIHZhbCk7Cj4g wqAKPiDCoAlpZiAocGh5X2luZm8tPnJjb21wX3BoeSAhPSAtMSkgewo+IMKgCQl1aW50MzJfdCBn cmNfY29kZTsKPiBAQCAtMzYxLDExICs0MDgsMTEgQEAgc3RhdGljIHZvaWQgX2J4dF9kZGlfcGh5 X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQlncmNfY29kZSA9 IHZhbCA8PCBHUkNfQ09ERV9GQVNUX1NISUZUIHwKPiDCoAkJCcKgwqDCoHZhbCA8PCBHUkNfQ09E RV9TTE9XX1NISUZUIHwKPiDCoAkJCcKgwqDCoHZhbDsKPiAtCQlJOTE1X1dSSVRFKEJYVF9QT1JU X1JFRl9EVzYocGh5KSwgZ3JjX2NvZGUpOwo+ICsJCUk5MTVfV1JJVEUoQlhUX1BPUlRfUkVGX0RX NihwaHlfaW5mby0+bW1pb19iYXNlKSwgZ3JjX2NvZGUpOwo+IMKgCj4gLQkJdmFsID0gSTkxNV9S RUFEKEJYVF9QT1JUX1JFRl9EVzgocGh5KSk7Cj4gKwkJdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JU X1JFRl9EVzgocGh5X2luZm8tPm1taW9fYmFzZSkpOwo+IMKgCQl2YWwgfD0gR1JDX0RJUyB8IEdS Q19SRFlfT1ZSRDsKPiAtCQlJOTE1X1dSSVRFKEJYVF9QT1JUX1JFRl9EVzgocGh5KSwgdmFsKTsK PiArCQlJOTE1X1dSSVRFKEJYVF9QT1JUX1JFRl9EVzgocGh5X2luZm8tPm1taW9fYmFzZSksIHZh bCk7Cj4gwqAJfQo+IMKgCj4gwqAJdmFsID0gSTkxNV9SRUFEKEJYVF9QSFlfQ1RMX0ZBTUlMWShw aHkpKTsKPiBAQCAtNDYxLDIwICs1MDgsMjAgQEAgYm9vbCBieHRfZGRpX3BoeV92ZXJpZnlfc3Rh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCW9rID0gdHJ1ZTsKPiDC oAo+IMKgCS8qIFBMTCBSY29tcCBjb2RlIG9mZnNldCAqLwo+IC0Jb2sgJj0gX0NISyhCWFRfUE9S VF9DTDFDTV9EVzkocGh5KSwKPiArCW9rICY9IF9DSEsoQlhUX1BPUlRfQ0wxQ01fRFc5KHBoeV9p bmZvLT5tbWlvX2Jhc2UpLAo+IMKgCQnCoMKgwqDCoElSRUYwUkNfT0ZGU0VUX01BU0ssIDB4ZTQg PDwgSVJFRjBSQ19PRkZTRVRfU0hJRlQsCj4gwqAJCcKgwqDCoMKgIkJYVF9QT1JUX0NMMUNNX0RX OSglZCkiLCBwaHkpOwo+IC0Jb2sgJj0gX0NISyhCWFRfUE9SVF9DTDFDTV9EVzEwKHBoeSksCj4g KwlvayAmPSBfQ0hLKEJYVF9QT1JUX0NMMUNNX0RXMTAocGh5X2luZm8tPm1taW9fYmFzZSksCj4g wqAJCcKgwqDCoMKgSVJFRjFSQ19PRkZTRVRfTUFTSywgMHhlNCA8PCBJUkVGMVJDX09GRlNFVF9T SElGVCwKPiDCoAkJwqDCoMKgwqAiQlhUX1BPUlRfQ0wxQ01fRFcxMCglZCkiLCBwaHkpOwo+IMKg Cj4gwqAJLyogUG93ZXIgZ2F0aW5nICovCj4gwqAJbWFzayA9IE9DTDFfUE9XRVJfRE9XTl9FTiB8 IERXMjhfT0xET19EWU5fUFdSX0RPV05fRU4gfCBTVVNfQ0xLX0NPTkZJRzsKPiAtCW9rICY9IF9D SEsoQlhUX1BPUlRfQ0wxQ01fRFcyOChwaHkpLCBtYXNrLCBtYXNrLAo+ICsJb2sgJj0gX0NISyhC WFRfUE9SVF9DTDFDTV9EVzI4KHBoeV9pbmZvLT5tbWlvX2Jhc2UpLCBtYXNrLCBtYXNrLAo+IMKg CQnCoMKgwqDCoCJCWFRfUE9SVF9DTDFDTV9EVzI4KCVkKSIsIHBoeSk7Cj4gwqAKPiDCoAlpZiAo cGh5X2luZm8tPmR1YWxfY2hhbm5lbCkKPiAtCQlvayAmPSBfQ0hLKEJYVF9QT1JUX0NMMkNNX0RX NihwaHkpLAo+ICsJCW9rICY9IF9DSEsoQlhUX1BPUlRfQ0wyQ01fRFc2KHBoeV9pbmZvLT5tbWlv X2Jhc2UpLAo+IMKgCQkJwqDCoMKgRFc2X09MRE9fRFlOX1BXUl9ET1dOX0VOLCBEVzZfT0xET19E WU5fUFdSX0RPV05fRU4sCj4gwqAJCQnCoMKgwqAiQlhUX1BPUlRfQ0wyQ01fRFc2KCVkKSIsIHBo eSk7Cj4gwqAKPiBAQCAtNDkxLDExICs1MzgsMTEgQEAgYm9vbCBieHRfZGRpX3BoeV92ZXJpZnlf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQkJwqDCoMKgZ3Jj X2NvZGU7Cj4gwqAJCW1hc2sgPSBHUkNfQ09ERV9GQVNUX01BU0sgfCBHUkNfQ09ERV9TTE9XX01B U0sgfAo+IMKgCQnCoMKgwqDCoMKgwqDCoEdSQ19DT0RFX05PTV9NQVNLOwo+IC0JCW9rICY9IF9D SEsoQlhUX1BPUlRfUkVGX0RXNihwaHkpLCBtYXNrLCBncmNfY29kZSwKPiAtCQkJwqDCoMKgwqAi QlhUX1BPUlRfUkVGX0RXNiglZCkiLCBwaHkpOwo+ICsJCW9rICY9IF9DSEsoQlhUX1BPUlRfUkVG X0RXNihwaHlfaW5mby0+bW1pb19iYXNlKSwgbWFzaywKPiArCQkJwqDCoMKgZ3JjX2NvZGUsICJC WFRfUE9SVF9SRUZfRFc2KCVkKSIsIHBoeSk7Cj4gwqAKPiDCoAkJbWFzayA9IEdSQ19ESVMgfCBH UkNfUkRZX09WUkQ7Cj4gLQkJb2sgJj0gX0NISyhCWFRfUE9SVF9SRUZfRFc4KHBoeSksIG1hc2ss IG1hc2ssCj4gKwkJb2sgJj0gX0NISyhCWFRfUE9SVF9SRUZfRFc4KHBoeV9pbmZvLT5tbWlvX2Jh c2UpLCBtYXNrLCBtYXNrLAo+IMKgCQkJwqDCoMKgwqAiQlhUX1BPUlRfUkVGX0RXOCglZCkiLCBw aHkpOwo+IMKgCX0KPiDCoAo+IEBAIC01MjcsMTAgKzU3NCwxNCBAQCB2b2lkIGJ4dF9kZGlfcGh5 X3NldF9sYW5lX29wdGltX21hc2soc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gwqAJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29k ZXItPmJhc2UpOwo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZHBvcnQtPmJhc2UuYmFzZS5kZXYpOwo+IMKgCWVudW0gcG9ydCBwb3J0ID0gZHBvcnQtPnBv cnQ7Cj4gKwl1MzIgcGh5Owo+ICsJZW51bSBkcGlvX2NoYW5uZWwgY2g7Cj4gwqAJaW50IGxhbmU7 Cj4gwqAKPiArCWJ4dF9wb3J0X3RvX3BoeV9jaGFubmVsKHBvcnQsICZwaHksICZjaCk7Cj4gKwo+ IMKgCWZvciAobGFuZSA9IDA7IGxhbmUgPCA0OyBsYW5lKyspIHsKPiAtCQl1MzIgdmFsID0gSTkx NV9SRUFEKEJYVF9QT1JUX1RYX0RXMTRfTE4ocG9ydCwgbGFuZSkpOwo+ICsJCXUzMiB2YWwgPSBJ OTE1X1JFQUQoQlhUX1BPUlRfVFhfRFcxNF9MTihwaHksIGNoLCBsYW5lKSk7Cj4gwqAKPiDCoAkJ LyoKPiDCoAkJwqAqIE5vdGUgdGhhdCBvbiBDSFYgdGhpcyBmbGFnIGlzIGNhbGxlZCBVUEFSLCBi dXQgaGFzCj4gQEAgLTU0MCw3ICs1OTEsNyBAQCB2b2lkIGJ4dF9kZGlfcGh5X3NldF9sYW5lX29w dGltX21hc2soc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gwqAJCWlmIChsYW5lX2xh dF9vcHRpbV9tYXNrICYgQklUKGxhbmUpKQo+IMKgCQkJdmFsIHw9IExBVEVOQ1lfT1BUSU07Cj4g wqAKPiAtCQlJOTE1X1dSSVRFKEJYVF9QT1JUX1RYX0RXMTRfTE4ocG9ydCwgbGFuZSksIHZhbCk7 Cj4gKwkJSTkxNV9XUklURShCWFRfUE9SVF9UWF9EVzE0X0xOKHBoeSwgY2gsIGxhbmUpLCB2YWwp Owo+IMKgCX0KPiDCoH0KPiDCoAo+IEBAIC01NTAsMTIgKzYwMSwxNiBAQCBieHRfZGRpX3BoeV9n ZXRfbGFuZV9sYXRfb3B0aW1fbWFzayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiDC oAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5j b2Rlci0+YmFzZSk7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gwqAJZW51bSBwb3J0IHBvcnQgPSBkcG9ydC0+ cG9ydDsKPiArCXUzMiBwaHk7Cj4gKwllbnVtIGRwaW9fY2hhbm5lbCBjaDsKPiDCoAlpbnQgbGFu ZTsKPiDCoAl1aW50OF90IG1hc2s7Cj4gwqAKPiArCWJ4dF9wb3J0X3RvX3BoeV9jaGFubmVsKHBv cnQsICZwaHksICZjaCk7Cj4gKwo+IMKgCW1hc2sgPSAwOwo+IMKgCWZvciAobGFuZSA9IDA7IGxh bmUgPCA0OyBsYW5lKyspIHsKPiAtCQl1MzIgdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RX MTRfTE4ocG9ydCwgbGFuZSkpOwo+ICsJCXUzMiB2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfVFhf RFcxNF9MTihwaHksIGNoLCBsYW5lKSk7Cj4gwqAKPiDCoAkJaWYgKHZhbCAmIExBVEVOQ1lfT1BU SU0pCj4gwqAJCQltYXNrIHw9IEJJVChsYW5lKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw bGxfbWdyLmMKPiBpbmRleCAxYzU5Y2E1Li5hNGE5ZjA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcGxsX21nci5jCj4gQEAgLTEzNzEsNiArMTM3MSwxMCBAQCBzdGF0aWMgdm9pZCBi eHRfZGRpX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKg ewo+IMKgCXVpbnQzMl90IHRlbXA7Cj4gwqAJZW51bSBwb3J0IHBvcnQgPSAoZW51bSBwb3J0KXBs bC0+aWQ7CS8qIDE6MSBwb3J0LT5QTEwgbWFwcGluZyAqLwo+ICsJdTMyIHBoeTsKPiArCWVudW0g ZHBpb19jaGFubmVsIGNoOwo+ICsKPiArCWJ4dF9wb3J0X3RvX3BoeV9jaGFubmVsKHBvcnQsICZw aHksICZjaCk7Cj4gwqAKPiDCoAkvKiBOb24tU1NDIHJlZmVyZW5jZSAqLwo+IMKgCXRlbXAgPSBJ OTE1X1JFQUQoQlhUX1BPUlRfUExMX0VOQUJMRShwb3J0KSk7Cj4gQEAgLTEzNzgsNzIgKzEzODIs NzIgQEAgc3RhdGljIHZvaWQgYnh0X2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiDCoAlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTF9FTkFCTEUocG9ydCks IHRlbXApOwo+IMKgCj4gwqAJLyogRGlzYWJsZSAxMCBiaXQgY2xvY2sgKi8KPiAtCXRlbXAgPSBJ OTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl80KHBvcnQpKTsKPiArCXRlbXAgPSBJOTE1X1JFQUQo QlhUX1BPUlRfUExMX0VCQl80KHBoeSwgY2gpKTsKPiDCoAl0ZW1wICY9IH5QT1JUX1BMTF8xMEJJ VF9DTEtfRU5BQkxFOwo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9QTExfRUJCXzQocG9ydCksIHRl bXApOwo+ICsJSTkxNV9XUklURShCWFRfUE9SVF9QTExfRUJCXzQocGh5LCBjaCksIHRlbXApOwo+ IMKgCj4gwqAJLyogV3JpdGUgUDEgJiBQMiAqLwo+IC0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9S VF9QTExfRUJCXzAocG9ydCkpOwo+ICsJdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTExfRUJC XzAocGh5LCBjaCkpOwo+IMKgCXRlbXAgJj0gfihQT1JUX1BMTF9QMV9NQVNLIHwgUE9SVF9QTExf UDJfTUFTSyk7Cj4gwqAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5lYmIwOwo+IC0JSTkx NV9XUklURShCWFRfUE9SVF9QTExfRUJCXzAocG9ydCksIHRlbXApOwo+ICsJSTkxNV9XUklURShC WFRfUE9SVF9QTExfRUJCXzAocGh5LCBjaCksIHRlbXApOwo+IMKgCj4gwqAJLyogV3JpdGUgTTIg aW50ZWdlciAqLwo+IC0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwgMCkpOwo+ ICsJdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgMCkpOwo+IMKgCXRlbXAg Jj0gflBPUlRfUExMX00yX01BU0s7Cj4gwqAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5w bGwwOwo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9QTEwocG9ydCwgMCksIHRlbXApOwo+ICsJSTkx NV9XUklURShCWFRfUE9SVF9QTEwocGh5LCBjaCwgMCksIHRlbXApOwo+IMKgCj4gwqAJLyogV3Jp dGUgTiAqLwo+IC0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwgMSkpOwo+ICsJ dGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgMSkpOwo+IMKgCXRlbXAgJj0g flBPUlRfUExMX05fTUFTSzsKPiDCoAl0ZW1wIHw9IHBsbC0+Y29uZmlnLmh3X3N0YXRlLnBsbDE7 Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwb3J0LCAxKSwgdGVtcCk7Cj4gKwlJOTE1X1dS SVRFKEJYVF9QT1JUX1BMTChwaHksIGNoLCAxKSwgdGVtcCk7Cj4gwqAKPiDCoAkvKiBXcml0ZSBN MiBmcmFjdGlvbiAqLwo+IC0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwgMikp Owo+ICsJdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgMikpOwo+IMKgCXRl bXAgJj0gflBPUlRfUExMX00yX0ZSQUNfTUFTSzsKPiDCoAl0ZW1wIHw9IHBsbC0+Y29uZmlnLmh3 X3N0YXRlLnBsbDI7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwb3J0LCAyKSwgdGVtcCk7 Cj4gKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwaHksIGNoLCAyKSwgdGVtcCk7Cj4gwqAKPiDC oAkvKiBXcml0ZSBNMiBmcmFjdGlvbiBlbmFibGUgKi8KPiAtCXRlbXAgPSBJOTE1X1JFQUQoQlhU X1BPUlRfUExMKHBvcnQsIDMpKTsKPiArCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBo eSwgY2gsIDMpKTsKPiDCoAl0ZW1wICY9IH5QT1JUX1BMTF9NMl9GUkFDX0VOQUJMRTsKPiDCoAl0 ZW1wIHw9IHBsbC0+Y29uZmlnLmh3X3N0YXRlLnBsbDM7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JU X1BMTChwb3J0LCAzKSwgdGVtcCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwaHksIGNo LCAzKSwgdGVtcCk7Cj4gwqAKPiDCoAkvKiBXcml0ZSBjb2VmZiAqLwo+IC0JdGVtcCA9IEk5MTVf UkVBRChCWFRfUE9SVF9QTEwocG9ydCwgNikpOwo+ICsJdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9S VF9QTEwocGh5LCBjaCwgNikpOwo+IMKgCXRlbXAgJj0gflBPUlRfUExMX1BST1BfQ09FRkZfTUFT SzsKPiDCoAl0ZW1wICY9IH5QT1JUX1BMTF9JTlRfQ09FRkZfTUFTSzsKPiDCoAl0ZW1wICY9IH5Q T1JUX1BMTF9HQUlOX0NUTF9NQVNLOwo+IMKgCXRlbXAgfD0gcGxsLT5jb25maWcuaHdfc3RhdGUu cGxsNjsKPiAtCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBvcnQsIDYpLCB0ZW1wKTsKPiArCUk5 MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDYpLCB0ZW1wKTsKPiDCoAo+IMKgCS8qIFdy aXRlIGNhbGlicmF0aW9uIHZhbCAqLwo+IC0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwo cG9ydCwgOCkpOwo+ICsJdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgOCkp Owo+IMKgCXRlbXAgJj0gflBPUlRfUExMX1RBUkdFVF9DTlRfTUFTSzsKPiDCoAl0ZW1wIHw9IHBs bC0+Y29uZmlnLmh3X3N0YXRlLnBsbDg7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwb3J0 LCA4KSwgdGVtcCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwaHksIGNoLCA4KSwgdGVt cCk7Cj4gwqAKPiAtCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQsIDkpKTsKPiAr CXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDkpKTsKPiDCoAl0ZW1wICY9 IH5QT1JUX1BMTF9MT0NLX1RIUkVTSE9MRF9NQVNLOwo+IMKgCXRlbXAgfD0gcGxsLT5jb25maWcu aHdfc3RhdGUucGxsOTsKPiAtCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBvcnQsIDkpLCB0ZW1w KTsKPiArCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDkpLCB0ZW1wKTsKPiDCoAo+ IC0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwgMTApKTsKPiArCXRlbXAgPSBJ OTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDEwKSk7Cj4gwqAJdGVtcCAmPSB+UE9SVF9Q TExfRENPX0FNUF9PVlJfRU5fSDsKPiDCoAl0ZW1wICY9IH5QT1JUX1BMTF9EQ09fQU1QX01BU0s7 Cj4gwqAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5wbGwxMDsKPiAtCUk5MTVfV1JJVEUo QlhUX1BPUlRfUExMKHBvcnQsIDEwKSwgdGVtcCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BM TChwaHksIGNoLCAxMCksIHRlbXApOwo+IMKgCj4gwqAJLyogUmVjYWxpYnJhdGUgd2l0aCBuZXcg c2V0dGluZ3MgKi8KPiAtCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl80KHBvcnQp KTsKPiArCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl80KHBoeSwgY2gpKTsKPiDC oAl0ZW1wIHw9IFBPUlRfUExMX1JFQ0FMSUJSQVRFOwo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9Q TExfRUJCXzQocG9ydCksIHRlbXApOwo+ICsJSTkxNV9XUklURShCWFRfUE9SVF9QTExfRUJCXzQo cGh5LCBjaCksIHRlbXApOwo+IMKgCXRlbXAgJj0gflBPUlRfUExMXzEwQklUX0NMS19FTkFCTEU7 Cj4gwqAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5lYmI0Owo+IC0JSTkxNV9XUklURShC WFRfUE9SVF9QTExfRUJCXzQocG9ydCksIHRlbXApOwo+ICsJSTkxNV9XUklURShCWFRfUE9SVF9Q TExfRUJCXzQocGh5LCBjaCksIHRlbXApOwo+IMKgCj4gwqAJLyogRW5hYmxlIFBMTCAqLwo+IMKg CXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VOQUJMRShwb3J0KSk7Cj4gQEAgLTE0NTks MTEgKzE0NjMsMTEgQEAgc3RhdGljIHZvaWQgYnh0X2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAnCoCogV2hpbGUgd2Ugd3JpdGUgdG8gdGhlIGdy b3VwIHJlZ2lzdGVyIHRvIHByb2dyYW0gYWxsIGxhbmVzIGF0IG9uY2Ugd2UKPiDCoAnCoCogY2Fu IHJlYWQgb25seSBsYW5lIHJlZ2lzdGVycyBhbmQgd2UgcGljayBsYW5lcyAwLzEgZm9yIHRoYXQu Cj4gwqAJwqAqLwo+IC0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QQ1NfRFcxMl9MTjAxKHBv cnQpKTsKPiArCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUENTX0RXMTJfTE4wMShwaHksIGNo KSk7Cj4gwqAJdGVtcCAmPSB+TEFORV9TVEFHR0VSX01BU0s7Cj4gwqAJdGVtcCAmPSB+TEFORVNU QUdHRVJfU1RSQVBfT1ZSRDsKPiDCoAl0ZW1wIHw9IHBsbC0+Y29uZmlnLmh3X3N0YXRlLnBjc2R3 MTI7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BDU19EVzEyX0dSUChwb3J0KSwgdGVtcCk7Cj4g KwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BDU19EVzEyX0dSUChwaHksIGNoKSwgdGVtcCk7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIGJ4dF9kZGlfcGxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+IEBAIC0xNDg1LDYgKzE0ODksMTAgQEAgc3RhdGljIGJvb2wg Ynh0X2RkaV9wbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiDCoAllbnVtIHBvcnQgcG9ydCA9IChlbnVtIHBvcnQpcGxsLT5pZDsJLyogMToxIHBvcnQt PlBMTCBtYXBwaW5nICovCj4gwqAJdWludDMyX3QgdmFsOwo+IMKgCWJvb2wgcmV0Owo+ICsJdTMy IHBoeTsKPiArCWVudW0gZHBpb19jaGFubmVsIGNoOwo+ICsKPiArCWJ4dF9wb3J0X3RvX3BoeV9j aGFubmVsKHBvcnQsICZwaHksICZjaCk7Cj4gwqAKPiDCoAlpZiAoIWludGVsX2Rpc3BsYXlfcG93 ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExTKSkKPiDCoAkJcmV0 dXJuIGZhbHNlOwo+IEBAIC0xNDk1LDM2ICsxNTAzLDM2IEBAIHN0YXRpYyBib29sIGJ4dF9kZGlf cGxsX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJ aWYgKCEodmFsICYgUE9SVF9QTExfRU5BQkxFKSkKPiDCoAkJZ290byBvdXQ7Cj4gwqAKPiAtCWh3 X3N0YXRlLT5lYmIwID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FQkJfMChwb3J0KSk7Cj4gKwlo d19zdGF0ZS0+ZWJiMCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTExfRUJCXzAocGh5LCBjaCkpOwo+ IMKgCWh3X3N0YXRlLT5lYmIwICY9IFBPUlRfUExMX1AxX01BU0sgfCBQT1JUX1BMTF9QMl9NQVNL Owo+IMKgCj4gLQlod19zdGF0ZS0+ZWJiNCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTExfRUJCXzQo cG9ydCkpOwo+ICsJaHdfc3RhdGUtPmViYjQgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl80 KHBoeSwgY2gpKTsKPiDCoAlod19zdGF0ZS0+ZWJiNCAmPSBQT1JUX1BMTF8xMEJJVF9DTEtfRU5B QkxFOwo+IMKgCj4gLQlod19zdGF0ZS0+cGxsMCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9y dCwgMCkpOwo+ICsJaHdfc3RhdGUtPnBsbDAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwg Y2gsIDApKTsKPiDCoAlod19zdGF0ZS0+cGxsMCAmPSBQT1JUX1BMTF9NMl9NQVNLOwo+IMKgCj4g LQlod19zdGF0ZS0+cGxsMSA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwgMSkpOwo+ICsJ aHdfc3RhdGUtPnBsbDEgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDEpKTsKPiDC oAlod19zdGF0ZS0+cGxsMSAmPSBQT1JUX1BMTF9OX01BU0s7Cj4gwqAKPiAtCWh3X3N0YXRlLT5w bGwyID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCAyKSk7Cj4gKwlod19zdGF0ZS0+cGxs MiA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgMikpOwo+IMKgCWh3X3N0YXRlLT5w bGwyICY9IFBPUlRfUExMX00yX0ZSQUNfTUFTSzsKPiDCoAo+IC0JaHdfc3RhdGUtPnBsbDMgPSBJ OTE1X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQsIDMpKTsKPiArCWh3X3N0YXRlLT5wbGwzID0gSTkx NV9SRUFEKEJYVF9QT1JUX1BMTChwaHksIGNoLCAzKSk7Cj4gwqAJaHdfc3RhdGUtPnBsbDMgJj0g UE9SVF9QTExfTTJfRlJBQ19FTkFCTEU7Cj4gwqAKPiAtCWh3X3N0YXRlLT5wbGw2ID0gSTkxNV9S RUFEKEJYVF9QT1JUX1BMTChwb3J0LCA2KSk7Cj4gKwlod19zdGF0ZS0+cGxsNiA9IEk5MTVfUkVB RChCWFRfUE9SVF9QTEwocGh5LCBjaCwgNikpOwo+IMKgCWh3X3N0YXRlLT5wbGw2ICY9IFBPUlRf UExMX1BST1BfQ09FRkZfTUFTSyB8Cj4gwqAJCQnCoMKgUE9SVF9QTExfSU5UX0NPRUZGX01BU0sg fAo+IMKgCQkJwqDCoFBPUlRfUExMX0dBSU5fQ1RMX01BU0s7Cj4gwqAKPiAtCWh3X3N0YXRlLT5w bGw4ID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCA4KSk7Cj4gKwlod19zdGF0ZS0+cGxs OCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgOCkpOwo+IMKgCWh3X3N0YXRlLT5w bGw4ICY9IFBPUlRfUExMX1RBUkdFVF9DTlRfTUFTSzsKPiDCoAo+IC0JaHdfc3RhdGUtPnBsbDkg PSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQsIDkpKTsKPiArCWh3X3N0YXRlLT5wbGw5ID0g STkxNV9SRUFEKEJYVF9QT1JUX1BMTChwaHksIGNoLCA5KSk7Cj4gwqAJaHdfc3RhdGUtPnBsbDkg Jj0gUE9SVF9QTExfTE9DS19USFJFU0hPTERfTUFTSzsKPiDCoAo+IC0JaHdfc3RhdGUtPnBsbDEw ID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCAxMCkpOwo+ICsJaHdfc3RhdGUtPnBsbDEw ID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwaHksIGNoLCAxMCkpOwo+IMKgCWh3X3N0YXRlLT5w bGwxMCAmPSBQT1JUX1BMTF9EQ09fQU1QX09WUl9FTl9IIHwKPiDCoAkJCcKgwqDCoFBPUlRfUExM X0RDT19BTVBfTUFTSzsKPiDCoAo+IEBAIC0xNTMzLDExICsxNTQxLDExIEBAIHN0YXRpYyBib29s IGJ4dF9kZGlfcGxsX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gwqAJwqAqIGNhbiByZWFkIG9ubHkgbGFuZSByZWdpc3RlcnMuIFdlIGNvbmZpZ3VyZSBh bGwgbGFuZXMgdGhlIHNhbWUgd2F5LCBzbwo+IMKgCcKgKiBoZXJlIGp1c3QgcmVhZCBvdXQgbGFu ZXMgMC8xIGFuZCBvdXRwdXQgYSBub3RlIGlmIGxhbmVzIDIvMyBkaWZmZXIuCj4gwqAJwqAqLwo+ IC0JaHdfc3RhdGUtPnBjc2R3MTIgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUENTX0RXMTJfTE4wMShw b3J0KSk7Cj4gLQlpZiAoSTkxNV9SRUFEKEJYVF9QT1JUX1BDU19EVzEyX0xOMjMocG9ydCkpICE9 IGh3X3N0YXRlLT5wY3NkdzEyKQo+ICsJaHdfc3RhdGUtPnBjc2R3MTIgPSBJOTE1X1JFQUQoQlhU X1BPUlRfUENTX0RXMTJfTE4wMShwaHksIGNoKSk7Cj4gKwlpZiAoSTkxNV9SRUFEKEJYVF9QT1JU X1BDU19EVzEyX0xOMjMocGh5LCBjaCkpICE9IGh3X3N0YXRlLT5wY3NkdzEyKQo+IMKgCQlEUk1f REVCVUdfRFJJVkVSKCJsYW5lIHN0YWdnZXIgY29uZmlnIGRpZmZlcmVudCBmb3IgbGFuZSAwMSAo JTA4eCkgYW5kIDIzICglMDh4KVxuIiwKPiDCoAkJCQnCoGh3X3N0YXRlLT5wY3NkdzEyLAo+IC0J CQkJwqBJOTE1X1JFQUQoQlhUX1BPUlRfUENTX0RXMTJfTE4yMyhwb3J0KSkpOwo+ICsJCQkJwqBJ OTE1X1JFQUQoQlhUX1BPUlRfUENTX0RXMTJfTE4yMyhwaHksIGNoKSkpOwo+IMKgCWh3X3N0YXRl LT5wY3NkdzEyICY9IExBTkVfU1RBR0dFUl9NQVNLIHwgTEFORVNUQUdHRVJfU1RSQVBfT1ZSRDsK PiDCoAo+IMKgCXJldCA9IHRydWU7Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=