From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 33F18C77B73 for ; Fri, 26 May 2023 17:04:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=vCKw9Ekny9yimklQUaZWLZnDNW3GFPivO26GZRT0ql0=; b=EHZzXbDe4rVxPL fxBpTbxd2sTxO6kTVRHBbAW5AhJBLZ4zg91E3ka+jcFRT/fPLkc+XKjC7c5wr1jKyZTGnsusBRnB+ hdorcblHFU3J4RkDlqywuenUaLyZZ+l/MygZ/om9L/DDQkvsuG7K/N7nK5Z5xdMVs68jMd0xZ1KNB AH05qKSAGbdf3ILpwUEjqQRBwRdH9sSBMdHVhP9sepDuNyYVuVqVqepvpZCRSW723WhAPq9cS6kgo IvDe9GtadGvKE9gWE+VTAfspFrullI5Fk7bZ6Wc2NpgQB0vH9OPfvhLwOfXu96F4zMtfGBtDA5I25 NRISUbPp4p7KztIN+Clw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q2arC-003Dwm-2L; Fri, 26 May 2023 17:04:02 +0000 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q2ar8-003DtZ-2W; Fri, 26 May 2023 17:04:02 +0000 X-GND-Sasl: miquel.raynal@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1685120631; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wZAtIbKobVRsNsvxbSGu/98XFYPX6nWAdRcnWjHYmAc=; b=DWnWEw34M1++02P5eZv/kDxy9QYvXm7LFXTl0Cx9V9dF/KkiP9Q0z6vGT76rIgZuftGwtd soy8mqDa3fYzHl8BhtYghInOVmxbGJaWgtdFCuduC3UYks0rBIBk2Ow3U9lV9JZGN091bR OnRNB2eOTcssbygDV0LzJduArd/TflIb2T2bcGEbUli9kT9dL8TzrSxjZEgHs0kg4AdXrH ++NaOl9zOjA3Ep9ijnE8mm7ZwI1m85f6JaX+U8WKeGqmD2D/9J+m83Wu6CQ4FKxdmRdZ2h BVluWATk1+PduKzVekVvELsVvTs2i3bQp28gmXSq4I8+OJ+NBb8K6/2vLKTeEg== X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 112E1E0005; Fri, 26 May 2023 17:03:48 +0000 (UTC) Date: Fri, 26 May 2023 19:03:47 +0200 From: Miquel Raynal To: Arseniy Krasnov Cc: Liang Yang , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Yixun Lan , Jianxin Pan , , , , , , Subject: Re: [PATCH v4 2/5] mtd: rawnand: meson: move OOB to non-protected ECC area Message-ID: <20230526190347.6e34a2be@xps-13> In-Reply-To: References: <20230515094440.3552094-1-AVKrasnov@sberdevices.ru> <20230515094440.3552094-3-AVKrasnov@sberdevices.ru> <20230522173334.7aa6f917@xps-13> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230526_100359_158773_58E7007D X-CRM114-Status: GOOD ( 56.28 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org SGkgQXJzZW5peSwKCmF2a3Jhc25vdkBzYmVyZGV2aWNlcy5ydSB3cm90ZSBvbiBUdWUsIDIzIE1h eSAyMDIzIDIwOjE3OjE0ICswMzAwOgoKPiBIZWxsbyBNaXF1ZWwhIFRoYW5rcyBmb3IgZGV0YWls ZWQgcmV2aWV3IQo+IAo+IE9uIDIyLjA1LjIwMjMgMTg6MzMsIE1pcXVlbCBSYXluYWwgd3JvdGU6 Cj4gPiBIaSBBcnNlbml5LAo+ID4gCj4gPiBBVktyYXNub3ZAc2JlcmRldmljZXMucnUgd3JvdGUg b24gTW9uLCAxNSBNYXkgMjAyMyAxMjo0NDozNiArMDMwMDoKPiA+IAo+ID4gVGhlIHRpdGxlIHNo b3VsZCBwZXJoYXBzIGJlICJvbmx5IGV4cG9zZSB1bnByb3RlY3RlZCB1c2VyIE9PQiBieXRlcyIu Cj4gPiAgIAo+ID4+IFRoaXMgbW92ZXMgZnJlZSBieXRlcyBvZiBPT0IgdG8gbm9uLXByb3RlY3Rl ZCBFQ0MgYXJlYS4gSXQgaXMgbmVlZGVkIHRvCj4gPj4gbWFrZSBKRkZTMiB3b3JrcyBjb3JyZWN0 bHkgd2l0aCB0aGlzIE5BTkQgY29udHJvbGxlci4gUHJvYmxlbSBmaXJlcyB3aGVuCj4gPj4gSkZG UzIgZHJpdmVyIHdyaXRlcyBjbGVhbm1hcmtlciB0byBzb21lIHBhZ2UgYW5kIGxhdGVyIGl0IHRy aWVzIHRvIHdyaXRlCj4gPj4gdG8gdGhpcyBwYWdlIC0gd3JpdGUgd2lsbCBiZSBkb25lIHN1Y2Nl c3NmdWxseSwgYnV0IGFmdGVyIHRoYXQgc3VjaCBwYWdlCj4gPj4gYmVjb21lcyB1bnJlYWRhYmxl IGR1ZSB0byBpbnZhbGlkIEVDQyBjb2Rlcy4gVGhpcyBoYXBwZW5zIGJlY2F1c2Ugc2Vjb25kCj4g Pj4gd3JpdGUgbmVlZHMgdG8gdXBkYXRlIEVDQyBjb2RlcywgYnV0IGl0IGlzIGltcG9zc2libGUg dG8gZG8gaXQgY29ycmVjdGx5Cj4gPj4gd2l0aG91dCBibG9jayBlcmFzZS4gU28gaWRlYSBvZiB0 aGlzIHBhdGNoIGlzIHRvICAKPiA+IAo+ID4gIi4uLiBpcyB0byB1c2UgdGhlIHVucHJvdGVjdGVk IE9PQiBhcmVhIHRvIHN0b3JlIHRoZSBjbGVhbm1hcmtlcnMsIHNvCj4gPiB0aGF0IHRoZXkgY2Fu IGJlIHdyaXR0ZW4gYnkgdGhlIGZpbGVzeXN0ZW0gd2l0aG91dCBjYXJpbmcgbXVjaCBhYm91dAo+ ID4gdGhlIHBhZ2UgYmVpbmcgZW1wdHkgb3Igbm90OiB0aGUgRUNDIGNvZGVzIHdpbGwgbm90IGJl IHdyaXR0ZW4gYW55d2F5LiIKPiA+ID8gIAo+IAo+IE9rCj4gCj4gPiAKPiA+IEpGRlMyIGlzIG9u bHkgdXNlZnVsIG9uIHRpbnkgTkFORCBkZXZpY2VzLCB3aGVyZSBVQkkgZG9lcyBub3QgZml0LAo+ ID4gd2hpY2ggYXJlIHVzdWFsbHkgdHJ1ZSBTTEMgZmxhc2hlcywgd2l0aCB0aGUgY2FwYWJpbGl0 eSBvZiB3cml0aW5nCj4gPiBhIHBhZ2Ugd2l0aCBlbXB0eSAoMHhGRikgZGF0YSwgYW5kIHN0aWxs IGJlIGFibGUgdG8gd3JpdGUgYWN0dWFsIGRhdGEKPiA+IHRvIGl0IGxhdGVyIGluIGEgc2Vjb25k IHdyaXRlLiAgCj4gCj4gWW91IG1lYW4gdG8gaW5jbHVkZSB0ZXh0IGFib3ZlIHRvIGNvbW1pdCBt ZXNzYWdlIGFsc28/CgpZZXMsIEkgYmVsaWV2ZSB0aGlzIGRlc2VydmVzIHRvIGJlIGluIHRoZSBj b21taXQgbWVzc2FnZSBhcyB3ZWxsIDopCgo+IAo+ID4gICAKPiA+PiBzcGxpdCBhY2Nlc3NlcyB0 byBPT0IKPiA+PiBmcmVlIGJ5dGVzIGFuZCBkYXRhIG9uIGVhY2ggcGFnZSAtIG5vdyBib3RoIG9m IHRoZW0gZG9lcyBub3QgZGVwZW5kcyBvbgo+ID4+IGVhY2ggb3RoZXIuCj4gPj4KPiA+PiBTaWdu ZWQtb2ZmLWJ5OiBBcnNlbml5IEtyYXNub3YgPEFWS3Jhc25vdkBzYmVyZGV2aWNlcy5ydT4KPiA+ PiAtLS0KPiA+PiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jIHwgMTkyICsrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLQo+ID4+ICAxIGZpbGUgY2hhbmdlZCwgMTU1IGluc2Vy dGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bXRkL25hbmQvcmF3L21lc29uX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25h bmQuYwo+ID4+IGluZGV4IDJmNGQ4Yzg0MTg2Yi4uODUyNmE2Yjg3NzIwIDEwMDY0NAo+ID4+IC0t LSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYwo+ID4+ICsrKyBiL2RyaXZlcnMv bXRkL25hbmQvcmF3L21lc29uX25hbmQuYwo+ID4+IEBAIC0xMDgsNiArMTA4LDkgQEAKPiA+PiAg Cj4gPj4gICNkZWZpbmUgUEVSX0lORk9fQllURQkJOAo+ID4+ICAKPiA+PiArI2RlZmluZSBORkNf VVNFUl9CWVRFUwkJMgo+ID4+ICsjZGVmaW5lIE5GQ19PT0JfUEVSX0VDQyhuYW5kKQkoKG5hbmQp LT5lY2MuYnl0ZXMgKyBORkNfVVNFUl9CWVRFUykKPiA+PiArCj4gPj4gIHN0cnVjdCBtZXNvbl9u ZmNfbmFuZF9jaGlwIHsKPiA+PiAgCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKPiA+PiAgCXN0cnVj dCBuYW5kX2NoaXAgbmFuZDsKPiA+PiBAQCAtMTIyLDYgKzEyNSw3IEBAIHN0cnVjdCBtZXNvbl9u ZmNfbmFuZF9jaGlwIHsKPiA+PiAgCXU4ICpkYXRhX2J1ZjsKPiA+PiAgCV9fbGU2NCAqaW5mb19i dWY7Cj4gPj4gIAl1MzIgbnNlbHM7Cj4gPj4gKwl1OCAqb29iX2J1ZjsKPiA+PiAgCXU4IHNlbHNb XTsKPiA+PiAgfTsKPiA+PiAgCj4gPj4gQEAgLTMzOCw3ICszNDIsNyBAQCBzdGF0aWMgdTggKm1l c29uX25mY19vb2JfcHRyKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBpKQo+ID4+ICAJc3Ry dWN0IG1lc29uX25mY19uYW5kX2NoaXAgKm1lc29uX2NoaXAgPSB0b19tZXNvbl9uYW5kKG5hbmQp Owo+ID4+ICAJaW50IGxlbjsKPiA+PiAgCj4gPj4gLQlsZW4gPSBuYW5kLT5lY2Muc2l6ZSAqIChp ICsgMSkgKyAobmFuZC0+ZWNjLmJ5dGVzICsgMikgKiBpOwo+ID4+ICsJbGVuID0gbmFuZC0+ZWNj LnNpemUgKiAoaSArIDEpICsgTkZDX09PQl9QRVJfRUNDKG5hbmQpICogaTsgIAo+ID4gCj4gPiBU aGlzLi4uCj4gPiAgIAo+ID4+ICAKPiA+PiAgCXJldHVybiBtZXNvbl9jaGlwLT5kYXRhX2J1ZiAr IGxlbjsKPiA+PiAgfQo+ID4+IEBAIC0zNDksNyArMzUzLDcgQEAgc3RhdGljIHU4ICptZXNvbl9u ZmNfZGF0YV9wdHIoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IGkpCj4gPj4gIAlpbnQgbGVu LCB0ZW1wOwo+ID4+ICAKPiA+PiAgCXRlbXAgPSBuYW5kLT5lY2Muc2l6ZSArIG5hbmQtPmVjYy5i eXRlczsKPiA+PiAtCWxlbiA9ICh0ZW1wICsgMikgKiBpOwo+ID4+ICsJbGVuID0gKHRlbXAgKyBO RkNfVVNFUl9CWVRFUykgKiBpOyAgCj4gPiAKPiA+IC4uLiBhbmQgdGhpcyAoc2FtZSBiZWxvdykK PiA+IAo+ID4gYXJlIHB1cmVseSBjb3NtZXRpYywgc2hvdWxkIGJlIGluIGEgcGF0Y2ggYXNpZGUu Cj4gPiAgIAo+IAo+IEFjaywgaSdsbCBtb3ZlIGNvc21ldGljIHVwZGF0ZXMgdG8gc2VwYXJhdGUg cGF0Y2guCj4gCj4gPj4gIAo+ID4+ICAJcmV0dXJuIG1lc29uX2NoaXAtPmRhdGFfYnVmICsgbGVu Owo+ID4+ICB9Cj4gPj4gQEAgLTM1NywyOSArMzYxLDQ3IEBAIHN0YXRpYyB1OCAqbWVzb25fbmZj X2RhdGFfcHRyKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBpKQo+ID4+ICBzdGF0aWMgdm9p ZCBtZXNvbl9uZmNfZ2V0X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gPj4gIAkJ CQkgICB1OCAqYnVmLCB1OCAqb29iYnVmKQo+ID4+ICB7Cj4gPj4gKwlzdHJ1Y3QgbWVzb25fbmZj X25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4gPj4gKwlzdHJ1 Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ID4+ICAJaW50IGksIG9vYl9s ZW4gPSAwOwo+ID4+ICAJdTggKmRzcmMsICpvc3JjOwo+ID4+ICsJdTggKm9vYnRhaWw7Cj4gPj4g IAo+ID4+IC0Jb29iX2xlbiA9IG5hbmQtPmVjYy5ieXRlcyArIDI7Cj4gPj4gKwlvb2JfbGVuID0g TkZDX09PQl9QRVJfRUNDKG5hbmQpOwo+ID4+ICAJZm9yIChpID0gMDsgaSA8IG5hbmQtPmVjYy5z dGVwczsgaSsrKSB7Cj4gPj4gIAkJaWYgKGJ1Zikgewo+ID4+ICAJCQlkc3JjID0gbWVzb25fbmZj X2RhdGFfcHRyKG5hbmQsIGkpOwo+ID4+ICAJCQltZW1jcHkoYnVmLCBkc3JjLCBuYW5kLT5lY2Mu c2l6ZSk7Cj4gPj4gIAkJCWJ1ZiArPSBuYW5kLT5lY2Muc2l6ZTsKPiA+PiAgCQl9Cj4gPj4gLQkJ b3NyYyA9IG1lc29uX25mY19vb2JfcHRyKG5hbmQsIGkpOwo+ID4+IC0JCW1lbWNweShvb2JidWYs IG9zcmMsIG9vYl9sZW4pOwo+ID4+IC0JCW9vYmJ1ZiArPSBvb2JfbGVuOwo+ID4+ICsKPiA+PiAr CQlpZiAob29iYnVmKSB7Cj4gPj4gKwkJCW9zcmMgPSBtZXNvbl9uZmNfb29iX3B0cihuYW5kLCBp KTsKPiA+PiArCQkJbWVtY3B5KG9vYmJ1Ziwgb3NyYywgb29iX2xlbik7Cj4gPj4gKwkJCW9vYmJ1 ZiArPSBvb2JfbGVuOwo+ID4+ICsJCX0KPiA+PiAgCX0KPiA+PiArCj4gPj4gKwlpZiAoIW9vYmJ1 ZikKPiA+PiArCQlyZXR1cm47ICAKPiA+IAo+ID4gVGhlIHdob2xlICJpZiAob29iYnVmKSIgbG9n aWMgaXMgbmljZSB0byBoYXZlLCBidXQgc2hvdWxkIGFzIHdlbGwgYmUgaW4KPiA+IGEgZGVkaWNh dGVkIHBhdGNoLiAgCj4gCj4gU29ycnksIFlvdSBtZWFuIHRoYXQgdGhpcyBsb2dpYyBpbXBsZW1l bnRzIHJlYWQgb2YgRUNDIGNvZGVzPyBBbmQgbm90Cj4gcmVsYXRlZCB0byBPT0IgbGF5b3V0IHVw ZGF0ZSBpbiB0aGlzIHBhdGNoPwoKWW91IG5lZWQgdG8gbWFrZSBjb3NtZXRpYyBjaGFuZ2VzIGlu IGEgZmlyc3QgcGF0Y2ggKG9yIGV2ZW4gaW4gc2V2ZXJhbApwYXRjaGVzIGlmIHRoZXkgYXJlIG5v dCByZWxhdGVkKSwgdGhlbiBpbiBhbm90aGVyIHBhdGNoIHlvdSBtaWdodCBtYWtlCmFkZGl0aW9u cyBsaWtlIGEgYmV0dGVyIGhhbmRsaW5nIG9mIHRoZSBPT0IsIGFuZCBhbnkgY2hhbmdlIGluIHRo ZQpsYXlvdXQgbWlnaHQgY29tZSBsYXN0LiBJIGp1c3Qgd2FudCB0byBzcGxpdCB0aGUgcGF0Y2gg dG8gbWFrZQp1bmRlcnN0YW5kYWJsZSBhdG9taWMgY2hhbmdlcyAoYWxzbyBlYXNpZXIgdG8gcmV2 aWV3KS4KCjEgYXRvbWljIGNoYW5nZSA9PSAxIHBhdGNoCgo+ID4gICAKPiA+PiArCj4gPj4gKwlv b2J0YWlsID0gbWVzb25fY2hpcC0+ZGF0YV9idWYgKyBuYW5kLT5lY2Muc3RlcHMgKgo+ID4+ICsJ CSAgKG5hbmQtPmVjYy5zaXplICsgb29iX2xlbik7Cj4gPj4gKwo+ID4+ICsJLyogJ29vYmJ1Zicg aWYgYWxyZWFkeSBzaGlmdGVkIHRvIHRoZSBzdGFydCBvZiB1bnVzZWQgYXJlYS4gKi8gIAo+ID4g Cj4gPiAJCSAgICBpcz8KPiA+IHMvdW51c2VkL3VzZXIvPyBJJ20gbm90IHN1cmUgSSBnZXQgdGhl IGNvbW1lbnQuICAKPiAKPiBZZXMsIG5vdCBjbGVhciBjb21tZW50Lgo+IAo+ID4gICAKPiA+PiAr CW1lbWNweShvb2JidWYsIG9vYnRhaWwsIG10ZC0+b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAq IG9vYl9sZW4pOwo+ID4+ICB9Cj4gPj4gIAo+ID4+ICBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfc2V0 X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gPj4gIAkJCQkgICBjb25zdCB1OCAq YnVmLCB1OCAqb29iYnVmKQo+ID4+ICB7Cj4gPj4gKwlzdHJ1Y3QgbWVzb25fbmZjX25hbmRfY2hp cCAqbWVzb25fY2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4gPj4gKwlzdHJ1Y3QgbXRkX2lu Zm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ID4+ICAJaW50IGksIG9vYl9sZW4gPSAwOwo+ ID4+ICAJdTggKmRzcmMsICpvc3JjOwo+ID4+ICsJdTggKm9vYnRhaWw7Cj4gPj4gIAo+ID4+IC0J b29iX2xlbiA9IG5hbmQtPmVjYy5ieXRlcyArIDI7Cj4gPj4gKwlvb2JfbGVuID0gTkZDX09PQl9Q RVJfRUNDKG5hbmQpOwo+ID4+ICAJZm9yIChpID0gMDsgaSA8IG5hbmQtPmVjYy5zdGVwczsgaSsr KSB7Cj4gPj4gIAkJaWYgKGJ1Zikgewo+ID4+ICAJCQlkc3JjID0gbWVzb25fbmZjX2RhdGFfcHRy KG5hbmQsIGkpOwo+ID4+IEBAIC0zOTAsNiArNDEyLDEyIEBAIHN0YXRpYyB2b2lkIG1lc29uX25m Y19zZXRfZGF0YV9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPiA+PiAgCQltZW1jcHkob3Ny Yywgb29iYnVmLCBvb2JfbGVuKTsKPiA+PiAgCQlvb2JidWYgKz0gb29iX2xlbjsKPiA+PiAgCX0K PiA+PiArCj4gPj4gKwlvb2J0YWlsID0gbWVzb25fY2hpcC0+ZGF0YV9idWYgKyBuYW5kLT5lY2Mu c3RlcHMgKgo+ID4+ICsJCSAgKG5hbmQtPmVjYy5zaXplICsgb29iX2xlbik7Cj4gPj4gKwo+ID4+ ICsJLyogJ29vYmJ1ZicgaWYgYWxyZWFkeSBzaGlmdGVkIHRvIHRoZSBzdGFydCBvZiB1bnVzZWQg YXJlYS4gKi8KPiA+PiArCW1lbWNweShvb2J0YWlsLCBvb2JidWYsIG10ZC0+b29ic2l6ZSAtIG5h bmQtPmVjYy5zdGVwcyAqIG9vYl9sZW4pOwo+ID4+ICB9Cj4gPj4gIAo+ID4+ICBzdGF0aWMgaW50 IG1lc29uX25mY19xdWV1ZV9yYihzdHJ1Y3QgbWVzb25fbmZjICpuZmMsIGludCB0aW1lb3V0X21z LCBpbnQgY21kX3JlYWQwKQo+ID4+IEBAIC00MzYsMjUgKzQ2NCwxMiBAQCBzdGF0aWMgdm9pZCBt ZXNvbl9uZmNfc2V0X3VzZXJfYnl0ZShzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCB1OCAqb29iX2J1 ZikKPiA+PiAgewo+ID4+ICAJc3RydWN0IG1lc29uX25mY19uYW5kX2NoaXAgKm1lc29uX2NoaXAg PSB0b19tZXNvbl9uYW5kKG5hbmQpOwo+ID4+ICAJX19sZTY0ICppbmZvOwo+ID4+IC0JaW50IGks IGNvdW50Owo+ID4+IC0KPiA+PiAtCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8IG5hbmQtPmVj Yy5zdGVwczsgaSsrLCBjb3VudCArPSAyKSB7Cj4gPj4gLQkJaW5mbyA9ICZtZXNvbl9jaGlwLT5p bmZvX2J1ZltpXTsKPiA+PiAtCQkqaW5mbyB8PSBvb2JfYnVmW2NvdW50XTsKPiA+PiAtCQkqaW5m byB8PSBvb2JfYnVmW2NvdW50ICsgMV0gPDwgODsKPiA+PiAtCX0KPiA+PiAtfQo+ID4+IC0KPiA+ PiAtc3RhdGljIHZvaWQgbWVzb25fbmZjX2dldF91c2VyX2J5dGUoc3RydWN0IG5hbmRfY2hpcCAq bmFuZCwgdTggKm9vYl9idWYpCj4gPj4gLXsKPiA+PiAtCXN0cnVjdCBtZXNvbl9uZmNfbmFuZF9j aGlwICptZXNvbl9jaGlwID0gdG9fbWVzb25fbmFuZChuYW5kKTsKPiA+PiAtCV9fbGU2NCAqaW5m bzsKPiA+PiAtCWludCBpLCBjb3VudDsKPiA+PiArCWludCBpOwo+ID4+ICAKPiA+PiAtCWZvciAo aSA9IDAsIGNvdW50ID0gMDsgaSA8IG5hbmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAyKSB7 Cj4gPj4gKwlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyspIHsKPiA+PiAgCQlp bmZvID0gJm1lc29uX2NoaXAtPmluZm9fYnVmW2ldOwo+ID4+IC0JCW9vYl9idWZbY291bnRdID0g KmluZm87Cj4gPj4gLQkJb29iX2J1Zltjb3VudCArIDFdID0gKmluZm8gPj4gODsKPiA+PiArCQkv KiBBbHdheXMgaWdub3JlIHVzZXIgYnl0ZXMgcHJvZ3JhbW1pbmcuICovICAKPiA+IAo+ID4gV2h5 PyAgCj4gCj4gSSB0aGluayBjb21tZW50IG1lc3NhZ2UgaXMgd3JvbmcgYSBsaXR0bGUgYml0LiBI ZXJlICJ1c2VyIGJ5dGVzIiBhcmUKPiB1c2VyIGJ5dGVzIHByb3RlY3RlZCBieSBFQ0MgKGUuZy4g bG9jYXRpb24gb2YgdGhlc2UgYnl0ZXMgZGlmZmVycyBmcm9tIG5ldwo+IE9PQiBsYXlvdXQgaW50 cm9kdWNlZCBieSB0aGlzIHBhdGNoKS4gRHVyaW5nIHBhZ2Ugd3JpdGUgdGhpcyBoYXJkd2FyZQo+ IGFsd2F5cyB3cml0ZXMgdGhlc2UgYnl0ZXMgYWxvbmcgd2l0aCBkYXRhLiBCdXQsIG5ldyBPT0Ig bGF5b3V0IGFsd2F5cyBpZ25vcmVzCj4gdGhlc2UgNCBieXRlcywgc28gc2V0IHRoZW0gdG8gMHhG RiBhbHdheXMuCgpXaGVuIHBlcmZvcm1pbmcgcGFnZSByZWFkcy93cml0ZXMsIHlvdSBuZWVkIHRv IHRha2UgdGhlIGRhdGEgYXMgaXQncwpiZWVuIHByb3ZpZGVkLiBZb3UgbWF5IG1vdmUgdGhlIGRh dGEgYXJvdW5kIGluIHRoZSBidWZmZXIgcHJvdmlkZWQgdG8KdGhlIGNvbnRyb2xsZXIsIHNvIHRo YXQgaXQgZ2V0IHRoZSBFQ0MgZGF0YSBhdCB0aGUgcmlnaHQgbG9jYXRpb24sIGFuZAp5b3UgbmVl ZCBvZiBjb3Vyc2UgdG8gcmVvcmdhbml6ZSB0aGUgZGF0YSB3aGVuIHJlYWRpbmcgYXMgd2VsbCwg c28gdGhhdAp0aGUgdXNlciBzZWVzIFhraUIgb2YgZGF0YSArIFlCIG9mIE9PQi4gVGhhdCdzIGFs bCB5b3UgbmVlZCB0byBkbyBpbgp0aGVzZSBoZWxwZXJzLgoKPiA+IEFsc28sIG1heWJlIEkgc2hv dWxkIG1lbnRpb24gdGhlIGhlbHBlcnM6Cj4gPiBtdGRfb29ibGF5b3V0X2dldF9lY2NieXRlcyBh bmQgY28KPiA+IFRoZXkgYXJlIHZlcnkgdXNlZnVsIHRvIGRlYWwgd2l0aCBPT0IgYnl0ZXMuIEV2 ZXJ5dGhpbmcgc2VlbXMgZXh0cmVtZWx5Cj4gPiBoYXJkY29kZWQgaW4gdGhpcyBkcml2ZXIsIHdo aWxlIHRoZSB1c2VyIGNhbiB0dW5lIHJlYWQvd3JpdGUgT09CCj4gPiBvcGVyYXRpb25zLiAgCj4g Cj4gVGhhbmtzIGZvciBkZXRhaWxzLCBJSVVDIHRoZXNlIGhlbHBlcnMgd2lsbCB3b3JrIGNvcnJl Y3RseSB3aXRoIHRoaXMgZHJpdmVyLgo+IFdoYXQgbWVhbnMgInR1bmUiIGhlcmU/CgpUaGUgdXNl ciBjYW4gcHJvdmlkZSBkYXRhIGZvciB0aGUgT09CIHBhcnQgYW5kIHRlbGwgdGhlIG10ZCBsYXll ciB0bwpwbGFjZSB0aGUgYnl0ZXMgaW4gdGhlIC0+b29iX2J1ZiBmb2xsb3dpbmcgZGlmZmVyZW50 IGNvbnN0cmFpbnRzOgotIHRoZSB1c2VyIGJ5dGVzIGFyZSBhbHJlYWR5IHdoZW4gdGhleSBuZWVk IHRvIGJlIChNVERfT1BTX1BMQUNFX09PQgogIGFuZCBNVERfT1BTX1JBVykKLSB0aGUgdXNlciBi eXRlcyBhcmUgcGFja2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlciwgcGxlYXNlIG1v dmUKICB0aGVtIHdoZXJlIHRoZXkgYmVsb25nIChNVERfT1BTX0FVVE9fT09CKS4KClNvIGluIHRo ZSBjb250cm9sbGVyIGRyaXZlciwgd2hhdCBuZWVkcyB0byBiZSBkb25lIGlzIHRvIG1ha2UgdGhl CnN3aXRjaCBiZXR3ZWVuIHRoZSAiZGF0YTErZGF0YTIrb29iMStvb2IyIiBsYXlvdXQgaW50byB5 b3VyCkVDQyBjb250cm9sbGVyJ3MgbGF5b3V0LCBlZyAiZGF0YTErb29iMStkYXRhMitvb2IyIi4K CkhlbmNlIHlvdSBzaG91bGQgbm90IG5lZWQgYW55dGhpbmcgbGlrZSB0aGF0Ogo+ID4+ICsJCSpp bmZvIHw9IDB4ZmZmZjsKCj4gPj4gIAl9Cj4gPj4gIH0KPiA+PiAgCj4gPj4gQEAgLTY5OCwxOCAr NzEzLDkyIEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3dyaXRlX3BhZ2VfcmF3KHN0cnVjdCBuYW5k X2NoaXAgKm5hbmQsIGNvbnN0IHU4ICpidWYsCj4gPj4gIAlyZXR1cm4gbWVzb25fbmZjX3dyaXRl X3BhZ2Vfc3ViKG5hbmQsIHBhZ2UsIDEpOwo+ID4+ICB9Cj4gPj4gIAo+ID4+ICtzdGF0aWMgdTMy IG1lc29uX25mY19nZXRfb29iX2J5dGVzKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCj4gPj4gK3sK PiA+PiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gPj4gKwo+ ID4+ICsJcmV0dXJuIG10ZC0+b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIE5GQ19PT0JfUEVS X0VDQyhuYW5kKTsKPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGljIGludCBfX21lc29uX25mY193 cml0ZV9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UsIHU4ICpvb2JfYnVmKQo+ ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgbWVzb25fbmZjX25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRv X21lc29uX25hbmQobmFuZCk7Cj4gPj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRfdG9f bXRkKG5hbmQpOwo+ID4+ICsJdTMyIHBhZ2Vfc2l6ZSA9IG10ZC0+d3JpdGVzaXplICsgbXRkLT5v b2JzaXplOwo+ID4+ICsJdTMyIG9vYl9ieXRlcyA9IG1lc29uX25mY19nZXRfb29iX2J5dGVzKG5h bmQpOwo+ID4+ICsJaW50IHJldDsKPiA+PiArCj4gPj4gKwlpZiAoIW9vYl9ieXRlcykKPiA+PiAr CQlyZXR1cm4gMDsKPiA+PiArCj4gPj4gKwlyZXQgPSBuYW5kX3Byb2dfcGFnZV9iZWdpbl9vcChu YW5kLCBwYWdlLCAwLCBOVUxMLCAwKTsKPiA+PiArCWlmIChyZXQpCj4gPj4gKwkJcmV0dXJuIHJl dDsKPiA+PiArCj4gPj4gKwltZW1jcHkobWVzb25fY2hpcC0+b29iX2J1Ziwgb29iX2J1ZiArICht dGQtPm9vYnNpemUgLSBvb2JfYnl0ZXMpLAo+ID4+ICsJICAgICAgIG9vYl9ieXRlcyk7Cj4gPj4g Kwo+ID4+ICsJcmV0ID0gbmFuZF9jaGFuZ2Vfd3JpdGVfY29sdW1uX29wKG5hbmQsIHBhZ2Vfc2l6 ZSAtIG9vYl9ieXRlcywKPiA+PiArCQkJCQkgIG1lc29uX2NoaXAtPm9vYl9idWYsCj4gPj4gKwkJ CQkJICBvb2JfYnl0ZXMsIGZhbHNlKTsKPiA+PiArCWlmIChyZXQpCj4gPj4gKwkJcmV0dXJuIHJl dDsKPiA+PiArCj4gPj4gKwlyZXR1cm4gbmFuZF9wcm9nX3BhZ2VfZW5kX29wKG5hbmQpOwo+ID4+ ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgaW50IF9fbWVzb25fbmZjX3JlYWRfb29iKHN0cnVjdCBu YW5kX2NoaXAgKm5hbmQsIGludCBwYWdlLAo+ID4+ICsJCQkJdTggKm9vYl9idWYpCj4gPj4gK3sK PiA+PiArCXN0cnVjdCBtZXNvbl9uZmNfbmFuZF9jaGlwICptZXNvbl9jaGlwID0gdG9fbWVzb25f bmFuZChuYW5kKTsKPiA+PiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQobmFu ZCk7Cj4gPj4gKwl1MzIgb29iX2J5dGVzOwo+ID4+ICsJdTMyIHBhZ2Vfc2l6ZTsKPiA+PiArCWlu dCByZXQ7Cj4gPj4gKwo+ID4+ICsJb29iX2J5dGVzID0gbWVzb25fbmZjX2dldF9vb2JfYnl0ZXMo bmFuZCk7Cj4gPj4gKwo+ID4+ICsJaWYgKCFvb2JfYnl0ZXMpCj4gPj4gKwkJcmV0dXJuIDA7Cj4g Pj4gKwo+ID4+ICsJcmV0ID0gbmFuZF9yZWFkX3BhZ2Vfb3AobmFuZCwgcGFnZSwgMCwgTlVMTCwg MCk7Cj4gPj4gKwlpZiAocmV0KQo+ID4+ICsJCXJldHVybiByZXQ7Cj4gPj4gKwo+ID4+ICsJcGFn ZV9zaXplID0gbXRkLT53cml0ZXNpemUgKyBtdGQtPm9vYnNpemU7Cj4gPj4gKwo+ID4+ICsJcmV0 ID0gbmFuZF9jaGFuZ2VfcmVhZF9jb2x1bW5fb3AobmFuZCwgcGFnZV9zaXplIC0gb29iX2J5dGVz LAo+ID4+ICsJCQkJCSBtZXNvbl9jaGlwLT5vb2JfYnVmLAo+ID4+ICsJCQkJCSBvb2JfYnl0ZXMs IGZhbHNlKTsKPiA+PiArCj4gPj4gKwlpZiAoIXJldCkKPiA+PiArCQltZW1jcHkob29iX2J1ZiAr IChtdGQtPm9vYnNpemUgLSBvb2JfYnl0ZXMpLAo+ID4+ICsJCSAgICAgICBtZXNvbl9jaGlwLT5v b2JfYnVmLAo+ID4+ICsJCSAgICAgICBvb2JfYnl0ZXMpOwo+ID4+ICsKPiA+PiArCXJldHVybiBy ZXQ7Cj4gPj4gK30KPiA+PiArCj4gPj4gIHN0YXRpYyBpbnQgbWVzb25fbmZjX3dyaXRlX3BhZ2Vf aHdlY2Moc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPiA+PiAgCQkJCSAgICAgIGNvbnN0IHU4ICpi dWYsIGludCBvb2JfcmVxdWlyZWQsIGludCBwYWdlKQo+ID4+ICB7Cj4gPj4gIAlzdHJ1Y3QgbXRk X2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ID4+ICAJc3RydWN0IG1lc29uX25mY19u YW5kX2NoaXAgKm1lc29uX2NoaXAgPSB0b19tZXNvbl9uYW5kKG5hbmQpOwo+ID4+ICAJdTggKm9v Yl9idWYgPSBuYW5kLT5vb2JfcG9pOwo+ID4+ICsJaW50IHJldDsKPiA+PiAgCj4gPj4gIAltZW1j cHkobWVzb25fY2hpcC0+ZGF0YV9idWYsIGJ1ZiwgbXRkLT53cml0ZXNpemUpOwo+ID4+ICAJbWVt c2V0KG1lc29uX2NoaXAtPmluZm9fYnVmLCAwLCBuYW5kLT5lY2Muc3RlcHMgKiBQRVJfSU5GT19C WVRFKTsKPiA+PiAgCW1lc29uX25mY19zZXRfdXNlcl9ieXRlKG5hbmQsIG9vYl9idWYpOwo+ID4+ ICAKPiA+PiAtCXJldHVybiBtZXNvbl9uZmNfd3JpdGVfcGFnZV9zdWIobmFuZCwgcGFnZSwgMCk7 Cj4gPj4gKwlyZXQgPSBtZXNvbl9uZmNfd3JpdGVfcGFnZV9zdWIobmFuZCwgcGFnZSwgMCk7Cj4g Pj4gKwlpZiAocmV0KQo+ID4+ICsJCXJldHVybiByZXQ7Cj4gPj4gKwo+ID4+ICsJaWYgKG9vYl9y ZXF1aXJlZCkKPiA+PiArCQlyZXQgPSBfX21lc29uX25mY193cml0ZV9vb2IobmFuZCwgcGFnZSwg b29iX2J1Zik7ICAKPiA+IAo+ID4gWW91IHNob3VsZCBwcm92aWRlIGFsbCB0aGUgZGF0YSBpbmNs dWRpbmcgT09CIGJ5dGVzIGluIGEgc2luZ2xlIHdyaXRlCj4gPiBjYWxsLCBvdGhlcndpc2UgeW91 IHBlcmZvcm0gdHdvIHdyaXRlcyBvbiB0aGUgc2FtZSBwYWdlLCB0aGF0J3Mgbm90Cj4gPiB3aGF0 IHRoaXMgaGVscGVyIGlzIGV4cGVjdGVkIHRvIGRvLiAgCj4gCj4gSSBzZWUsIHNvIEkgbmVlZCB0 byBjaGVjayAnb29iX3JlcXVpcmVkJyBoZXJlIGJlZm9yZSBwcm9ncmFtbWluZyBwYWdlIGRhdGE/ CgpZZXMhCgo+IElmIGl0IGlzIHNldCAtPiBwbGFjZSBPT0IgZGF0YSB0byBETUEgYnVmZmVyIGFu ZCB0aGVuIGNhbGwgUEFHRVBST0cgb25jZT8KCkV4YWN0bHkuCgo+IAo+ID4gICAKPiA+PiArCj4g Pj4gKwlyZXR1cm4gcmV0Owo+ID4+ICB9Cj4gPj4gIAo+ID4+ICBzdGF0aWMgdm9pZCBtZXNvbl9u ZmNfY2hlY2tfZWNjX3BhZ2VzX3ZhbGlkKHN0cnVjdCBtZXNvbl9uZmMgKm5mYywKPiA+PiBAQCAt NzgzLDcgKzg3Miw3IEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRfcGFnZV9yYXcoc3RydWN0 IG5hbmRfY2hpcCAqbmFuZCwgdTggKmJ1ZiwKPiA+PiAgCWlmIChyZXQpCj4gPj4gIAkJcmV0dXJu IHJldDsKPiA+PiAgCj4gPj4gLQltZXNvbl9uZmNfZ2V0X2RhdGFfb29iKG5hbmQsIGJ1Ziwgb29i X2J1Zik7Cj4gPj4gKwltZXNvbl9uZmNfZ2V0X2RhdGFfb29iKG5hbmQsIGJ1Ziwgb29iX3JlcXVp cmVkID8gb29iX2J1ZiA6IE5VTEwpOwo+ID4+ICAKPiA+PiAgCXJldHVybiAwOwo+ID4+ICB9Cj4g Pj4gQEAgLTgwMywxMiArODkyLDEyIEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRfcGFnZV9o d2VjYyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCB1OCAqYnVmLAo+ID4+ICAJaWYgKHJldCkKPiA+ PiAgCQlyZXR1cm4gcmV0Owo+ID4+ICAKPiA+PiAtCW1lc29uX25mY19nZXRfdXNlcl9ieXRlKG5h bmQsIG9vYl9idWYpOwo+ID4+ICAJcmV0ID0gbWVzb25fbmZjX2VjY19jb3JyZWN0KG5hbmQsICZi aXRmbGlwcywgJmNvcnJlY3RfYml0bWFwKTsKPiA+PiAgCWlmIChyZXQgPT0gRUNDX0NIRUNLX1JF VFVSTl9GRikgewo+ID4+ICAJCWlmIChidWYpCj4gPj4gIAkJCW1lbXNldChidWYsIDB4ZmYsIG10 ZC0+d3JpdGVzaXplKTsKPiA+PiAgCQltZW1zZXQob29iX2J1ZiwgMHhmZiwgbXRkLT5vb2JzaXpl KTsKPiA+PiArCQlyZXR1cm4gYml0ZmxpcHM7ICAKPiA+IAo+ID4gVGhhdCBpcyBzb21ldGhpbmcg ZWxzZSA9PiBvdGhlciBmaXggPT4gb3RoZXIgcGF0Y2g/ICAKPiAKPiBJZGVhIG9mIHRoaXMgJ3Jl dHVybicgaXMgdGhhdCB3aGVuIHJlYWQgZmFpbHMsIHdlIHJldHVybiBmcm9tIHRoaXMgZnVuY3Rp b24KPiB3aXRob3V0IHJlYWRpbmcgT09CIGJlbG93LgoKSXQgc2VlbWVkIGxpa2UgdGhlICJyZXR1 cm4gYml0ZmxpcHMiIHRoaW5nIHdhcyBuZXcsIGlmIGl0J3MganVzdCBkdWUgdG8KdGhlIGRpZmYg bm90IGJlaW5nIHdpZGUgZW5vdWdoLCB0aGVuIGl0J3MgZmluZSwgb3RoZXJ3aXNlIGlmIHRoaXMg aXMKc29tZXRoaW5nIG5ldywgaXQgc2hvdWxkIGJlIGluIGEgZGVkaWNhdGVkIHBhdGNoLgoKPiAK PiA+ICAgCj4gPj4gIAl9IGVsc2UgaWYgKHJldCA8IDApIHsKPiA+PiAgCQlpZiAoKG5hbmQtPm9w dGlvbnMgJiBOQU5EX05FRURfU0NSQU1CTElORykgfHwgIWJ1Zikgewo+ID4+ICAJCQltdGQtPmVj Y19zdGF0cy5mYWlsZWQrKzsKPiA+PiBAQCAtODIwLDEyICs5MDksMTQgQEAgc3RhdGljIGludCBt ZXNvbl9uZmNfcmVhZF9wYWdlX2h3ZWNjKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIHU4ICpidWYs Cj4gPj4gIAo+ID4+ICAJCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5lY2Muc3RlcHMgOyBpKyspIHsK PiA+PiAgCQkJdTggKmRhdGEgPSBidWYgKyBpICogZWNjLT5zaXplOwo+ID4+IC0JCQl1OCAqb29i ID0gbmFuZC0+b29iX3BvaSArIGkgKiAoZWNjLT5ieXRlcyArIDIpOwo+ID4+ICsJCQl1OCAqb29i ID0gbmFuZC0+b29iX3BvaSArIGkgKiBORkNfT09CX1BFUl9FQ0MobmFuZCk7Cj4gPj4gIAo+ID4+ ICAJCQlpZiAoY29ycmVjdF9iaXRtYXAgJiBCSVRfVUxMKGkpKQo+ID4+ICAJCQkJY29udGludWU7 Cj4gPj4gKwo+ID4+ICAJCQlyZXQgPSBuYW5kX2NoZWNrX2VyYXNlZF9lY2NfY2h1bmsoZGF0YSwJ ZWNjLT5zaXplLAo+ID4+IC0JCQkJCQkJICBvb2IsIGVjYy0+Ynl0ZXMgKyAyLAo+ID4+ICsJCQkJ CQkJICBvb2IsCj4gPj4gKwkJCQkJCQkgIE5GQ19PT0JfUEVSX0VDQyhuYW5kKSwKPiA+PiAgCQkJ CQkJCSAgTlVMTCwgMCwKPiA+PiAgCQkJCQkJCSAgZWNjLT5zdHJlbmd0aCk7Cj4gPj4gIAkJCWlm IChyZXQgPCAwKSB7Cj4gPj4gQEAgLTgzOSwxNyArOTMwLDMwIEBAIHN0YXRpYyBpbnQgbWVzb25f bmZjX3JlYWRfcGFnZV9od2VjYyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCB1OCAqYnVmLAo+ID4+ ICAJCW1lbWNweShidWYsIG1lc29uX2NoaXAtPmRhdGFfYnVmLCBtdGQtPndyaXRlc2l6ZSk7Cj4g Pj4gIAl9Cj4gPj4gIAo+ID4+ICsJaWYgKG9vYl9yZXF1aXJlZCkKPiA+PiArCQlfX21lc29uX25m Y19yZWFkX29vYihuYW5kLCBwYWdlLCBvb2JfYnVmKTsgIAo+ID4gCj4gPiBJbiB0aGUgc3RhbmRh bG9uZSAicmVhZF9vb2IiIGhvb2ssIHlvdSBoYXZlIHRvIHNlbmQgYSBSRUFEMCBjb21tYW5kLAo+ ID4gYnV0IG5vdCB3aGVuIHlvdSBhcmUgaW4gdGhlIHJlYWRfcGFnZSBob29rLiBJdCBpcyBhIGJp ZyB3YXN0ZSBvZiB0aW1lLiAgCj4gCj4gSUlVQyBhcHByb2FjaCBoZXJlIG11c3QgYmUgZXhhY3Rs eSB0aGUgc2FtZSBhcyBpbiB3cml0ZT8gRS5nLiBpIG5lZWQgdG8KPiBzZW5kIHNpbmdsZSBSRUFE MCBhbmQgdGhlbiBmaWxsIHByb3ZpZGVkIE9PQiBidWZmZXIgaWYgbmVlZGVkPwoKWWVzLgoKRm9y IGJvdGggcmVhZHMgYW5kIHdyaXRlcywgdGhlIGxvZ2ljIGlzOgotIHRoZXJlIGFyZSBjb21tYW5k cyB3aGljaCBhcmUgYWN0dWFsbHkgdGltZSBjb25zdW1pbmc6IHRoZXJlIGlzCiAgc29tZXRoaW5n IGhhcHBlbmluZyBvbiB0aGUgbmFuZCBhcnJheSB3aGljaCBlaXRoZXIgcmVhZHMgb3Igd3JpdGVz CiAgZGF0YSB0by9mcm9tIHRoZSBpbnRlcm5hbCBzcmFtLgotIHRoZXJlIGFyZSBvdGhlciBjb21t YW5kcyB3aGljaCBqdXN0IGNoYW5nZSB0aGUgInBvaW50ZXIiIGluIHRoZQogIGludGVybmFsIHNy YW0uCgpTbyB5b3UgY2FuIGJhc2ljYWxseSBzYXkgIkkgd2FudCB0byB3cml0ZSBpbnRvIHRoZSBz cmFtIGF0IG9mZnNldCBYLAp0aGVuIGF0IG9mZnNldCBZIiBhbmQgd2hlbiB0aGUgc3JhbSBoYXMg YmVlbiBmaWxsZWQgeW91IGNhbiBjb21taXQgdGhlCndyaXRlIGFuZCB0aGF0J3MgdGhlIG9wZXJh dGlvbiB3aGljaCBzaG91bGQgaGFwcGVuIG9ubHkgb25jZS4gSW4gdGhlCnJlYWQgcGF0aCBpdCdz IHRoZSBvcHBvc2l0ZSwgeW91IHJlcXVlc3QgYSByZWFkIGZyb20gdGhlIE5BTkQgYXJyYXkgaW50 bwp0aGUgc3JhbSBjYWNoZSwgYW5kIHlvdSBjYW4gdGhlbiByZXF1ZXN0IGRhdGEgcmFuZG9tbHku IE9mIGNvdXJzZSBib3RoCm9wZXJhdGlvbnMgY2Fubm90IGJlIHRvbyByYW5kb20gZWl0aGVyLCB5 b3UgbmVlZCB0byBmb2xsb3cgdGhlIEVDQwplbmdpbmUgcGF0dGVybiB3aGljaCBtdXN0IGJlIGZl ZCB3aXRoIFggYnl0ZXMgb2YgZGF0YSBhbmQgdGhlbiB3aWxsCnByb2R1Y2UgdGhlIEVDQyBieXRl cyB0byB3cml0ZS9jb21wYXJlLgoKPiAKPiA+ICAgCj4gPj4gKwo+ID4+ICAJcmV0dXJuIGJpdGZs aXBzOwo+ID4+ICB9Cj4gPj4gIAo+ID4+ICBzdGF0aWMgaW50IG1lc29uX25mY19yZWFkX29vYl9y YXcoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UpCj4gPj4gIHsKPiA+PiAtCXJldHVy biBtZXNvbl9uZmNfcmVhZF9wYWdlX3JhdyhuYW5kLCBOVUxMLCAxLCBwYWdlKTsKPiA+PiArCXJl dHVybiBfX21lc29uX25mY19yZWFkX29vYihuYW5kLCBwYWdlLCBuYW5kLT5vb2JfcG9pKTsKPiA+ PiAgfQo+ID4+ICAKPiA+PiAgc3RhdGljIGludCBtZXNvbl9uZmNfcmVhZF9vb2Ioc3RydWN0IG5h bmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UpCj4gPj4gIHsKPiA+PiAtCXJldHVybiBtZXNvbl9uZmNf cmVhZF9wYWdlX2h3ZWNjKG5hbmQsIE5VTEwsIDEsIHBhZ2UpOwo+ID4+ICsJcmV0dXJuIF9fbWVz b25fbmZjX3JlYWRfb29iKG5hbmQsIHBhZ2UsIG5hbmQtPm9vYl9wb2kpOwo+ID4+ICt9Cj4gPj4g Kwo+ID4+ICtzdGF0aWMgaW50IG1lc29uX25mY193cml0ZV9vb2JfcmF3KHN0cnVjdCBuYW5kX2No aXAgKm5hbmQsIGludCBwYWdlKQo+ID4+ICt7Cj4gPj4gKwlyZXR1cm4gX19tZXNvbl9uZmNfd3Jp dGVfb29iKG5hbmQsIHBhZ2UsIG5hbmQtPm9vYl9wb2kpOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtz dGF0aWMgaW50IG1lc29uX25mY193cml0ZV9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50 IHBhZ2UpCj4gPj4gK3sKPiA+PiArCXJldHVybiBfX21lc29uX25mY193cml0ZV9vb2IobmFuZCwg cGFnZSwgbmFuZC0+b29iX3BvaSk7ICAKPiA+IAo+ID4gRG8gd2UgcmVhbGx5IG5lZWQgdGhlc2Ug aW5kaXJlY3Rpb25zPyAgCj4gCj4gUmlnaHQsIEkgdGhpbmsgSSBjYW4gdXNlIG9ubHkgb25lIGZ1 bmN0aW9uIGZvciBPT0Igd3JpdGUgaW4gYm90aCBFQ0MgYW5kIHJhdyBtb2Rlcy4KPiAKPiA+ICAg Cj4gPj4gIH0KPiA+PiAgCj4gPj4gIHN0YXRpYyBib29sIG1lc29uX25mY19pc19idWZmZXJfZG1h X3NhZmUoY29uc3Qgdm9pZCAqYnVmZmVyKQo+ID4+IEBAIC05ODIsNyArMTA4Niw3IEBAIHN0YXRp YyBpbnQgbWVzb25fb29ibGF5b3V0X2VjYyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNlY3Rp b24sCj4gPj4gIAlpZiAoc2VjdGlvbiA+PSBuYW5kLT5lY2Muc3RlcHMpCj4gPj4gIAkJcmV0dXJu IC1FUkFOR0U7Cj4gPj4gIAo+ID4+IC0Jb29icmVnaW9uLT5vZmZzZXQgPSAgMiArIChzZWN0aW9u ICogKDIgKyBuYW5kLT5lY2MuYnl0ZXMpKTsKPiA+PiArCW9vYnJlZ2lvbi0+b2Zmc2V0ID0gTkZD X1VTRVJfQllURVMgKyBzZWN0aW9uICogTkZDX09PQl9QRVJfRUNDKG5hbmQpOyAgCj4gPiAKPiA+ IFRoZSAoKSBhcmUgc3RpbGwgbmVlZGVkIGFyb3VuZCB0aGUgJyonCj4gPiAgIAo+ID4+ICAJb29i cmVnaW9uLT5sZW5ndGggPSBuYW5kLT5lY2MuYnl0ZXM7Cj4gPj4gIAo+ID4+ICAJcmV0dXJuIDA7 Cj4gPj4gQEAgLTk5MiwxMiArMTA5NiwxNiBAQCBzdGF0aWMgaW50IG1lc29uX29vYmxheW91dF9m cmVlKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgc2VjdGlvbiwKPiA+PiAgCQkJCXN0cnVjdCBt dGRfb29iX3JlZ2lvbiAqb29icmVnaW9uKQo+ID4+ICB7Cj4gPj4gIAlzdHJ1Y3QgbmFuZF9jaGlw ICpuYW5kID0gbXRkX3RvX25hbmQobXRkKTsKPiA+PiArCXUzMiBvb2JfYnl0ZXMgPSBtZXNvbl9u ZmNfZ2V0X29vYl9ieXRlcyhuYW5kKTsKPiA+PiAgCj4gPj4gIAlpZiAoc2VjdGlvbiA+PSBuYW5k LT5lY2Muc3RlcHMpCj4gPj4gIAkJcmV0dXJuIC1FUkFOR0U7Cj4gPj4gIAo+ID4+IC0Jb29icmVn aW9uLT5vZmZzZXQgPSBzZWN0aW9uICogKDIgKyBuYW5kLT5lY2MuYnl0ZXMpOwo+ID4+IC0Jb29i cmVnaW9uLT5sZW5ndGggPSAyOwo+ID4+ICsJLyogU3BsaXQgcmVzdCBvZiBPT0IgYXJlYSAobm90 IGNvdmVyZWQgYnkgRUNDIGVuZ2luZSkgcGVyIGVhY2gKPiA+PiArCSAqIEVDQyBzZWN0aW9uLiBU aGlzIHdpbGwgYmUgT09CIGRhdGEgYXZhaWxhYmxlIHRvIHVzZXIuCj4gPj4gKwkgKi8KPiA+PiAr CW9vYnJlZ2lvbi0+b2Zmc2V0ID0gKHNlY3Rpb24gKyBuYW5kLT5lY2Muc3RlcHMpICogTkZDX09P Ql9QRVJfRUNDKG5hbmQpOwo+ID4+ICsJb29icmVnaW9uLT5sZW5ndGggPSBvb2JfYnl0ZXMgLyBu YW5kLT5lY2Muc3RlcHM7Cj4gPj4gIAo+ID4+ICAJcmV0dXJuIDA7Cj4gPj4gIH0KPiA+PiBAQCAt MTE4NCw2ICsxMjkyLDkgQEAgc3RhdGljIGludCBtZXNvbl9uYW5kX2JjaF9tb2RlKHN0cnVjdCBu YW5kX2NoaXAgKm5hbmQpCj4gPj4gIAo+ID4+ICBzdGF0aWMgdm9pZCBtZXNvbl9uYW5kX2RldGFj aF9jaGlwKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCj4gPj4gIHsKPiA+PiArCXN0cnVjdCBtZXNv bl9uZmNfbmFuZF9jaGlwICptZXNvbl9jaGlwID0gdG9fbWVzb25fbmFuZChuYW5kKTsKPiA+PiAr Cj4gPj4gKwlrZnJlZShtZXNvbl9jaGlwLT5vb2JfYnVmKTsKPiA+PiAgCW1lc29uX25mY19mcmVl X2J1ZmZlcihuYW5kKTsKPiA+PiAgfQo+ID4+ICAKPiA+PiBAQCAtMTIyNSw5ICsxMzM2LDkgQEAg c3RhdGljIGludCBtZXNvbl9uYW5kX2F0dGFjaF9jaGlwKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQp Cj4gPj4gIAluYW5kLT5lY2MuZW5naW5lX3R5cGUgPSBOQU5EX0VDQ19FTkdJTkVfVFlQRV9PTl9I T1NUOwo+ID4+ICAJbmFuZC0+ZWNjLndyaXRlX3BhZ2VfcmF3ID0gbWVzb25fbmZjX3dyaXRlX3Bh Z2VfcmF3Owo+ID4+ICAJbmFuZC0+ZWNjLndyaXRlX3BhZ2UgPSBtZXNvbl9uZmNfd3JpdGVfcGFn ZV9od2VjYzsKPiA+PiAtCW5hbmQtPmVjYy53cml0ZV9vb2JfcmF3ID0gbmFuZF93cml0ZV9vb2Jf c3RkOwo+ID4+IC0JbmFuZC0+ZWNjLndyaXRlX29vYiA9IG5hbmRfd3JpdGVfb29iX3N0ZDsKPiA+ PiAgCj4gPj4gKwluYW5kLT5lY2Mud3JpdGVfb29iX3JhdyA9IG1lc29uX25mY193cml0ZV9vb2Jf cmF3Owo+ID4+ICsJbmFuZC0+ZWNjLndyaXRlX29vYiA9IG1lc29uX25mY193cml0ZV9vb2I7ICAK PiA+IAo+ID4gQWN0dWFsbHkgaWYgeW91IGRlZmluZSB0aGUgcmlnaHQgT09CIGxheW91dHMsIGFy ZSB0aGVzZSByZWFsbHkgbmVlZGVkCj4gPiA/PyBJIHdvdWxkIGV4cGVjdCB0aGUgcmlnaHQgYnl0 ZXMgdG8gYmUgcGlja2VkIHVwIGJ5IHRoZSBkZWZhdWx0Cj4gPiBpbXBsZW1lbnRhdGlvbi4gSSBz ZWUgbm90aGluZyBzcGVjaWZpYyBpbiB5b3VyIGN1cnJlbnQgaW1wbGVtZW50YXRpb24/ICAKPiAK PiBZb3UgbWVhbiB0byB1c2UgJ25hbmRfd3JpdGVfb29iX3N0ZCgpJz8gSWYgc28sIEkgdGhpbmsg aXQgd29uJ3Qgd29yaywKPiBiZWNhdXNlIGl0IHRyaWVzIHRvIHdyaXRlIE9PQiBkYXRhIHJpZ2h0 IGFmdGVyICdtdGQtPndyaXRlc2l6ZScsIGJ1dAo+IHBhZ2UgbGF5b3V0IGZvciB0aGlzIGNvbnRy b2xsZXIgaXMgbGlrZSB0aGlzOgo+IFsgICAgICAgMTAyNCBieXRlcyBvZiBkYXRhICAgICAgICBd Cj4gWyAxNCBieXRlcyBFQ0MgKyAyIGJ5dGVzIGZvciB1c2VyIF0gPC0gd2l0aCBuZXcgbGF5b3V0 IHdlIGRvbid0IHRvdWNoIHRoZXNlIDIgYnl0ZXMKPiBbICAgICAgIDEwMjQgYnl0ZXMgb2YgZGF0 YSAgICAgICAgXQo+IFsgMTQgYnl0ZXMgRUNDICsgMiBieXRlcyBmb3IgdXNlciBdIDwtIHdpdGgg bmV3IGxheW91dCB3ZSBkb24ndCB0b3VjaCB0aGVzZSAyIGJ5dGVzCj4gWyAgICAgIDMyIGJ5dGVz IG9mIHVzZXIgYnl0ZXMgICAgIF0gPC0gd2UgdXNlIHRoZXJlIDMyIGJ5dGVzIGFzIGZyZWUodXNl cikgYnl0ZXMgaW4gT09CCgpSaWdodC4KCj4gCj4gU28gd2l0aCAnbXRkLT53cml0ZXNpemUnIG9m IDIwNDggd2Ugd29uJ3QgZ2V0IGludG8gbGFzdCAzMiBieXRlcyBpbiB0aGUgcGljdHVyZSBhYm92 ZS4KPiBJJ20gbm90IGdvb3QgaW4gTkFORC9NVEQgYXJlYSwgYnV0IEkgdGhpbmsgdGhhdCB3aHkg aSBuZWVkIHNwZWNpYWwgT09CIGFjY2VzcyBjYWxsYmFja3MuCgpPay4KCj4gQWxzbyBpbiBwcmV2 aW91cyBwYXRjaGVzIEBMaWFuZyBzYWlkLCB0aGF0IGRlZmF1bHQgT09CIHJlYWQvd3JpdGUgZnVu Y3Rpb25zIHdvbid0IHdvcmsKPiBvbiB0aGlzIGNvbnRyb2xsZXIgYW5kIGl0IGlzIHdyb25nIHRv IHVzZSB0aGVtIGluIGN1cnJlbnRseSBtZXJnZWQgZHJpdmVyLgo+IAo+ID4gICAKPiA+PiAgCW5h bmQtPmVjYy5yZWFkX3BhZ2VfcmF3ID0gbWVzb25fbmZjX3JlYWRfcGFnZV9yYXc7Cj4gPj4gIAlu YW5kLT5lY2MucmVhZF9wYWdlID0gbWVzb25fbmZjX3JlYWRfcGFnZV9od2VjYzsKPiA+PiAgCW5h bmQtPmVjYy5yZWFkX29vYl9yYXcgPSBtZXNvbl9uZmNfcmVhZF9vb2JfcmF3Owo+ID4+IEBAIC0x MjM3LDkgKzEzNDgsMTYgQEAgc3RhdGljIGludCBtZXNvbl9uYW5kX2F0dGFjaF9jaGlwKHN0cnVj dCBuYW5kX2NoaXAgKm5hbmQpCj4gPj4gIAkJZGV2X2VycihuZmMtPmRldiwgIjE2Yml0cyBidXMg d2lkdGggbm90IHN1cHBvcnRlZCIpOwo+ID4+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4+ICAJfQo+ ID4+ICsKPiA+PiArCW1lc29uX2NoaXAtPm9vYl9idWYgPSBrbWFsbG9jKG5hbmQtPmVjYy5ieXRl cywgR0ZQX0tFUk5FTCk7ICAKPiA+IAo+ID4gZGV2bV9rbWFsbG9jPyAgCj4gCj4gQWNrCj4gCj4g PiAgIAo+ID4+ICsJaWYgKCFtZXNvbl9jaGlwLT5vb2JfYnVmKQo+ID4+ICsJCXJldHVybiAtRU5P TUVNOwo+ID4+ICsKPiA+PiAgCXJldCA9IG1lc29uX2NoaXBfYnVmZmVyX2luaXQobmFuZCk7Cj4g Pj4gLQlpZiAocmV0KQo+ID4+ICsJaWYgKHJldCkgewo+ID4+ICsJCWtmcmVlKG1lc29uX2NoaXAt Pm9vYl9idWYpOwo+ID4+ICAJCXJldHVybiAtRU5PTUVNOwo+ID4+ICsJfQo+ID4+ICAKPiA+PiAg CXJldHVybiByZXQ7Cj4gPj4gIH0gIAo+ID4gCj4gPiAKPiA+IFRoYW5rcywKPiA+IE1pcXXDqGwg IAo+IAo+IFRoYW5rcywgQXJzZW5peQoKClRoYW5rcywKTWlxdcOobAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYW1sb2dpYyBtYWlsaW5nIGxp c3QKbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYW1sb2dpYwo=