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 C9200C433EF for ; Mon, 22 Nov 2021 09:41:16 +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=f5yKtwvF0QFXXfdh4VMmbYmKBm3f+KzgFsd9Z0Q2UpE=; b=sX1Zmfudq4tjN5 qAQA4T4/X/FIhzGHyTC02wnAafbiDG6x81sNWRaRb/gOyHmJ1UayZ6lI2LLw0Kw3p4SsJ5oUMTkc2 7q62yejKVei3npa2GGRf58FaWXHU55A4+sTkc4UX2Ixqa2uhQkOCYs5YrDE4vDb67lfqGy3ciyqAb S4HWx+lK9AwpcGx66HmX33uE2pa+NzHAMB0c/YLy6eyXlXnVHhO+EXzTp3EU2vS9xPrlupzIblnK7 ZMGI/n4MkbOi0b+Ur3tKbdwv71YhqQr6rp1b5+JpjgiSJKE6FK4ThxXnzfJ3NyUOSgg6FLyYHcH9q INwT4UciQ59wM9Ft3w9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mp5o5-00Fe7L-Vo; Mon, 22 Nov 2021 09:40:14 +0000 Received: from relay9-d.mail.gandi.net ([217.70.183.199]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mp5W3-00FXyf-CJ for linux-mtd@lists.infradead.org; Mon, 22 Nov 2021 09:21:37 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 1BCD2FF80D; Mon, 22 Nov 2021 09:21:32 +0000 (UTC) Date: Mon, 22 Nov 2021 10:21:32 +0100 From: Miquel Raynal To: Zhengxun Li Cc: linux-mtd@lists.infradead.org, zhengxunli@mxic.com.tw Subject: Re: [PATCH 3/4] mtd: spinand: Add support continuous read operation Message-ID: <20211122102132.1af7b572@xps13> In-Reply-To: References: <1633676279-29708-1-git-send-email-zhengxunli.mxic@gmail.com> <1633676279-29708-4-git-send-email-zhengxunli.mxic@gmail.com> <20211109121036.01376b0c@xps13> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; 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-20211122_012135_748703_2CABF3A9 X-CRM114-Status: GOOD ( 39.95 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGVsbG8sCgp6aGVuZ3h1bmxpLm14aWNAZ21haWwuY29tIHdyb3RlIG9uIFdlZCwgMTcgTm92IDIw MjEgMTc6MzA6NTIgKzA4MDA6Cgo+IEhpIE1pcXVlbCwKPiAKPiAKPiA+IEhlbGxvLAo+ID4KPiA+ IHpoZW5neHVubGkubXhpY0BnbWFpbC5jb20gd3JvdGUgb24gRnJpLCAgOCBPY3QgMjAyMSAxNDo1 Nzo1OCArMDgwMDoKPiA+Cj4gPiA+IFRoZSBwYXRjaCBhZGRzIGEgY29udGludW91cyByZWFkIHN0 YXJ0IGZsYWcgdG8gc3VwcG9ydCBjb250aW51b3VzCj4gPiA+IHJlYWQgb3BlcmF0aW9ucy4gVGhl IGNvbnRpbnVvdXMgcmVhZCBvcGVyYXRpb24gb25seSBpc3N1ZXMgYSBwYWdlCj4gPiA+IHJlYWQg Y29tbWFuZCAoMTNoKSwgaXNzdWVzIG11bHRpcGxlIHJlYWQgY29tbWFuZHMgZnJvbSB0aGUgY2Fj aGUKPiA+ID4gKDAzaC8wQmgvM0JoLzZCaC9CQmgvRUJoKSB0byByZWFkIGNvbnRpbnVvdXMgYWRk cmVzcyBkYXRhLCBhbmQKPiA+ID4gZmluYWxseSBpc3N1ZXMgYW4gZXhpdCBjb250aW51b3VzIHJl YWQgY29tbWFuZCAoNjNoKSB0byB0ZXJtaW5hdGUKPiA+ID4gdGhpcyBjb250aW51b3VzIHJlYWQg b3BlcmF0aW9uLgo+ID4gPgo+ID4gPiBTaW5jZSB0aGUgY29udGludW91cyByZWFkIG1vZGUgY2Fu IG9ubHkgcmVhZCB0aGUgZW50aXJlIHBhZ2Ugb2YgZGF0YQo+ID4gPiAoMktCKQo+ID4KPiA+IFJl bW92ZSB0aGlzIHNpemUsIGl0IGlzIGhpZ2hseSB1bmxpa2VseSB0aGF0IGFsbCBTUEkgTkFORCBk ZXZpY2VzIHdpbGwKPiA+IGV2ZXIgYmUgcmVzdHJpY3RlZCB0byAya2lCIHJpZ2h0Pwo+IAo+IE9r YXkuCj4gCj4gPiA+IGFuZCBjYW5ub3QgcmVhZCB0aGUgb29iIGRhdGEsCj4gPgo+ID4gVGhpcyBp cyBzb21ldGhpbmcgdGhhdCB5b3Ugc2VlbSB0byBza2lwIHRvIGNoZWNrIGluIHlvdXIgc2VyaWVz Lgo+IAo+IEluIGZhY3QsIG9ubHkgRUNDLUZyZWUgU1BJLU5BTkQgc3VwcG9ydCBjb250aW51b3Vz IHJlYWQgbW9kZSBub3cuCj4gCj4gPiA+IHRoZSBkeW5hbWljIGNoYW5nZSBtb2RlIGlzIGFkZGVk Cj4gPiA+IHRvIGVuYWJsZSBjb250aW51b3VzIHJlYWQgbW9kZSBhbmQgZGlzYWJsZSBjb250aW51 b3VzIHJlYWQgbW9kZSBpbgo+ID4gPiBzcGluYW5kX210ZF9yZWFkIHRvIGF2b2lkIHdyaXRpbmcg YW5kIGVyYXNpbmcgb3BlcmF0aW9uIGlzIGFibm9ybWFsLgo+ID4gPgo+ID4gPiBTaWduZWQtb2Zm LWJ5OiBaaGVuZ3h1biA8emhlbmd4dW5saS5teGljQGdtYWlsLmNvbT4KPiA+ID4gLS0tCj4gPiA+ ICBkcml2ZXJzL210ZC9uYW5kL3NwaS9jb3JlLmMgfCAzOCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLQo+ID4gPiAgaW5jbHVkZS9saW51eC9tdGQvc3BpbmFuZC5oIHwgIDIg KysKPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMo LSkKPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvc3BpL2NvcmUuYyBi L2RyaXZlcnMvbXRkL25hbmQvc3BpL2NvcmUuYwo+ID4gPiBpbmRleCAwZDk2MzJmLi4wMzY5NDUz IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3NwaS9jb3JlLmMKPiA+ID4gKysr IGIvZHJpdmVycy9tdGQvbmFuZC9zcGkvY29yZS5jCj4gPiA+IEBAIC0xOTUsNiArMTk1LDggQEAg c3RhdGljIGludCBzcGluYW5kX2luaXRfcXVhZF9lbmFibGUoc3RydWN0IHNwaW5hbmRfZGV2aWNl ICpzcGluYW5kKQo+ID4gPgo+ID4gPiAgc3RhdGljIGludCBzcGluYW5kX2NvbnRpbnVvdXNfcmVh ZF9lbmFibGUoc3RydWN0IHNwaW5hbmRfZGV2aWNlICpzcGluYW5kKQo+ID4gPiAgewo+ID4gPiAr ICAgICBzcGluYW5kLT5jb250X3JlYWRfc3RhcnQgPSBmYWxzZTsKPiA+Cj4gPiBJIHJlYWxseSBk b24ndCBsaWtlIHRoZSAiPSBmYWxzZSIgaW4gdGhlICJyZWFkX2VuYWJsZSIgaG9vay4gV2h5IG5v dAo+ID4ganVzdCBjaGVja2luZyBkaXJlY3RseSBpbiBtdGRfcmVhZCBhbmQgZHJvcCB0aGF0IGJv b2xlYW4gPwo+IAo+IE9rYXksIEkgd2lsbCBkZWxldCBpdC4KPiAKPiA+ID4gKwo+ID4gPiAgICAg ICBpZiAoIShzcGluYW5kLT5mbGFncyAmIFNQSU5BTkRfSEFTX0NPTlRfUkVBRF9CSVQpKQo+ID4g PiAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gPgo+ID4gPiBAQCAtNTk4LDE2ICs2MDAsMjIg QEAgc3RhdGljIGludCBzcGluYW5kX3JlYWRfcGFnZShzdHJ1Y3Qgc3BpbmFuZF9kZXZpY2UgKnNw aW5hbmQsCj4gPiA+ICAgICAgIGlmIChyZXQpCj4gPiA+ICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPiA+ID4KPiA+ID4gLSAgICAgcmV0ID0gc3BpbmFuZF9sb2FkX3BhZ2Vfb3Aoc3BpbmFuZCwg cmVxKTsKPiA+ID4gLSAgICAgaWYgKHJldCkKPiA+ID4gLSAgICAgICAgICAgICByZXR1cm4gcmV0 Owo+ID4gPiArICAgICBpZiAoIXNwaW5hbmQtPmNvbnRfcmVhZF9zdGFydCkgewo+ID4KPiA+IEkg ZG9uJ3QgZ2V0IHRoaXMgY2hlY2suIFRoaXMgY29uZGl0aW9uIHdpbGwgYWx3YXlzIGJlIHRydWUu IFlvdSBjYW4KPiA+IGRyb3AgaXQuCj4gCj4gVGhpcyBjb25kaXRpb24gaXMgaGVscCB0byBhdm9p ZCBpc3N1ZSBwYWdlIHJlYWQKPiBjb21tYW5kIGFnYWluLiBUaGUgY29udGludW91cyByZWFkIG1v ZGUgaGVscAo+IFNQSS1OQU5EIHByZXZlbnQgYWx3YXlzIGlzc3VlIHBhZ2UgcmVhZCgxM2gpCj4g Y29tbWFuZCBpbiBjb250aW51b3VzIGFkZHJlc3MuCgpZZXMgSSB1bmRlcnN0YW5kIHdoYXQgeW91 IHRyeSB0byBhY2hpZXZlIGJ1dCBJIGJlbGlldmUgSSBvdmVybG9va2VkIGF0CnRoYXQgc2VjdGlv bi4KCkkgYmVsaWV2ZSB3ZSBzaG91bGQgaGF2ZSBzb21ldGhpbmcganVzdCBhIGxpdHRsZSBiaXQg bW9yZSBjbGVhbiBsaWtlOgoKbXRkX2lvKCl7CglfZW5hYmxlKCkgeyBpZiAoPHVzZWZ1bD4gJiYg c3VwcG9ydGVkKSB1c2VfY29udGludW91c19yZWFkID0gdHJ1ZTsgfQoJbG9vcCB7CgkJcmVhZCgp OwoJfQoJX2Rpc2FibGUoKSB7IHVzZV9jb250aW51b3VzX3JlYWQgPSBmYWxzZTsgfQp9CgpyZWFk KCl7CglfZW50ZXIoKSB7IGlmICh1c2VfY29udGludW91c19yZWFkKSBlbnRlcigpOyB9Cglkb19p bygpOwoJX2V4aXQoKSB7IGlmICh1c2VfY29udGludW91c19yZWFkKSBleGl0KCk7IH0KCj4gCj4g PiA+Cj4gPiA+IC0gICAgIHJldCA9IHNwaW5hbmRfd2FpdChzcGluYW5kLAo+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgU1BJTkFORF9SRUFEX0lOSVRJQUxfREVMQVlfVVMsCj4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICBTUElOQU5EX1JFQURfUE9MTF9ERUxBWV9VUywKPiA+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0dXMpOwo+ID4gPiAtICAgICBpZiAocmV0IDwg MCkKPiA+ID4gLSAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiArICAgICAgICAgICAgIHJl dCA9IHNwaW5hbmRfbG9hZF9wYWdlX29wKHNwaW5hbmQsIHJlcSk7Cj4gPiA+ICsgICAgICAgICAg ICAgaWYgKHJldCkKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ ICsKPiA+ID4gKyAgICAgICAgICAgICByZXQgPSBzcGluYW5kX3dhaXQoc3BpbmFuZCwKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BJTkFORF9SRUFEX0lOSVRJQUxfREVM QVlfVVMsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQSU5BTkRfUkVB RF9QT0xMX0RFTEFZX1VTLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm c3RhdHVzKTsKPiA+ID4gKyAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICBpZiAo c3BpbmFuZC0+ZmxhZ3MgJiBTUElOQU5EX0hBU19DT05UX1JFQURfQklUKQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgc3BpbmFuZC0+Y29udF9yZWFkX3N0YXJ0ID0gdHJ1ZTsKPiA+ID4gKyAg ICAgfQo+ID4gPgo+ID4gPiAgICAgICBzcGluYW5kX29uZGllX2VjY19zYXZlX3N0YXR1cyhuYW5k LCBzdGF0dXMpOwo+ID4gPgo+ID4gPiBAQCAtNjY3LDYgKzY3NSwxMCBAQCBzdGF0aWMgaW50IHNw aW5hbmRfbXRkX3JlYWQoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLAo+ID4gPgo+ ID4gPiAgICAgICBtdXRleF9sb2NrKCZzcGluYW5kLT5sb2NrKTsKPiA+ID4KPiA+ID4gKyAgICAg cmV0ID0gc3BpbmFuZF9jb250aW51b3VzX3JlYWRfZW5hYmxlKHNwaW5hbmQpOwo+ID4gPiArICAg ICBpZiAocmV0KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICsKPiA+ID4g ICAgICAgbmFuZGRldl9pb19mb3JfZWFjaF9wYWdlKG5hbmQsIE5BTkRfUEFHRV9SRUFELCBmcm9t LCBvcHMsICZpdGVyKSB7Cj4gPiA+ICAgICAgICAgICAgICAgaWYgKGRpc2FibGVfZWNjKQo+ID4g PiAgICAgICAgICAgICAgICAgICAgICAgaXRlci5yZXEubW9kZSA9IE1URF9PUFNfUkFXOwo+ID4g PiBAQCAtNjg5LDYgKzcwMSwxNCBAQCBzdGF0aWMgaW50IHNwaW5hbmRfbXRkX3JlYWQoc3RydWN0 IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLAo+ID4gPiAgICAgICAgICAgICAgIG9wcy0+b29i cmV0bGVuICs9IGl0ZXIucmVxLm9vYmxlbjsKPiA+ID4gICAgICAgfQo+ID4gPgo+ID4gPiArICAg ICByZXQgPSBzcGluYW5kX2NvbnRpbnVvdXNfcmVhZF9leGl0KHNwaW5hbmQpOwo+ID4gPiArICAg ICBpZiAocmV0KQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICsKPiA+ID4g KyAgICAgcmV0ID0gc3BpbmFuZF9jb250aW51b3VzX3JlYWRfZGlzYWJsZShzcGluYW5kKTsKPiA+ ID4gKyAgICAgaWYgKHJldCkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4KPiA+ IFRoZSBhc3ltbWV0cnkgaGVyZSBsb29rcyBzdHJhbmdlLiBXaGVyZSBkbyB3ZSBhY3R1YWxseSBl bnRlciB0aGUKPiA+IGNvbnRpbnVvdXMgcmVhZCBtb2RlPwo+IAo+IEluIHRoaXMgc2VyaWVzLCBl YWNoIHJlYWQgYWx3YXlzIGVudGVyIHRoZSBjb250aW51b3VzIHJlYWQgbW9kZS4KClRoaXMgaXMg ZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gaW1wcm92ZS4gWW91IG5lZWQgdG8gYmVuY2htYXJrIGEg bGl0dGxlCmJpdCBhbmQgdHJ5IHRvIHJlYWQgMSwgMiwgMywgNCwuLi4gcGFnZXMgdW50aWwgd2Ug YXJlIHN1cmUgdGhhdAplbmFibGluZyB0aGlzIGFuZCB0aGUgb3ZlcmFsbCBwZW5hbHR5IGlzIGJh Y2tlZCBieSB0aGUgYWRkaXRpb25hbApwZXJmb3JtYW5jZXMuCgo+IAo+ID4KPiA+IERvIHlvdSBo YXZlIGFueSBpbmRpY2F0b3JzIHRoYXQgdGhpcyBjaGFuZ2UgaW1wcm92ZXMgdGhlIHBlcmZvcm1h bmNlcz8KPiA+IEl0IHdvdWxkIGJlIGdvb2QgdG8gc2hhcmUgdGhlbSBpbiB0aGUgY29tbWl0IGxv Zy4KPiAKPiBJIHdpbGwgc2hhcmUgdGhlIHBlcmZvcm1hbmNlcyBvZiBjb250aW51b3VzIHJlYWQg bW9kZS4KClllcyBwbGVhc2UuCgo+IAo+ID4gPiArCj4gPiA+ICAgICAgIG11dGV4X3VubG9jaygm c3BpbmFuZC0+bG9jayk7Cj4gPiA+Cj4gPiA+ICAgICAgIGlmIChlY2NfZmFpbGVkICYmICFyZXQp Cj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L210ZC9zcGluYW5kLmggYi9pbmNsdWRl L2xpbnV4L210ZC9zcGluYW5kLmgKPiA+ID4gaW5kZXggZTA0NGFiYS4uYzJhNDFhMyAxMDA2NDQK PiA+ID4gLS0tIGEvaW5jbHVkZS9saW51eC9tdGQvc3BpbmFuZC5oCj4gPiA+ICsrKyBiL2luY2x1 ZGUvbGludXgvbXRkL3NwaW5hbmQuaAo+ID4gPiBAQCAtNDIyLDYgKzQyMiw3IEBAIHN0cnVjdCBz cGluYW5kX2Rpcm1hcCB7Cj4gPiA+ICAgKiAgICAgICAgICAgYmVjYXVzZSB0aGUgc3BpLW1lbSBp bnRlcmZhY2UgZXhwbGljaXRseSByZXF1ZXN0cyB0aGF0IGJ1ZmZlcnMKPiA+ID4gICAqICAgICAg ICAgICBwYXNzZWQgaW4gc3BpX21lbV9vcCBiZSBETUEtYWJsZSwgc28gd2UgY2FuJ3QgYmFzZWQg dGhlIGJ1ZnMgb24KPiA+ID4gICAqICAgICAgICAgICB0aGUgc3RhY2sKPiA+ID4gKyAqIEBjb250 X3JlYWRfc3RhcnQ6IHJlY29yZCB0aGUgY29udGludW91cyByZWFkIHN0YXR1cwo+ID4gPiAgICog QG1hbnVmYWN0dXJlcjogU1BJIE5BTkQgbWFudWZhY3R1cmVyIGluZm9ybWF0aW9uCj4gPiA+ICAg KiBAcHJpdjogbWFudWZhY3R1cmVyIHByaXZhdGUgZGF0YQo+ID4gPiAgICovCj4gPiA+IEBAIC00 NTAsNiArNDUxLDcgQEAgc3RydWN0IHNwaW5hbmRfZGV2aWNlIHsKPiA+ID4gICAgICAgdTggKmRh dGFidWY7Cj4gPiA+ICAgICAgIHU4ICpvb2JidWY7Cj4gPiA+ICAgICAgIHU4ICpzY3JhdGNoYnVm Owo+ID4gPiArICAgICBib29sIGNvbnRfcmVhZF9zdGFydDsKPiA+ID4gICAgICAgY29uc3Qgc3Ry dWN0IHNwaW5hbmRfbWFudWZhY3R1cmVyICptYW51ZmFjdHVyZXI7Cj4gPiA+ICAgICAgIHZvaWQg KnByaXY7Cj4gPiA+ICB9Owo+ID4KPiA+Cj4gPiBUaGFua3MsCj4gPiBNaXF1w6hsCj4gCj4gQWxs IGluIGFsbCwgdGhlIGNvbnRpbnVvdXMgcmVhZCBtb2RlIGNhbiBpbXByb3ZlCj4gdGhlIHJlYWQg cGVyZm9ybWFuY2Ugb2YgY29udGludW91cyBhZGRyZXNzZXMKPiBhbmQgYXZvaWQgcmUtaXNzdWlu ZyBwYWdlIHJlYWQgY29tbWFuZHMgdGhyb3VnaAo+IGVhY2ggcGFnZS4KPiAKPiBEbyB5b3UgaGF2 ZSBhbnkgc3VnZ2VzdGlvbnMgZm9yIHRoaXMgc2VyaWVzPwo+IAo+IFRoYW5rcywKPiBaaGVuZ3h1 bgoKClRoYW5rcywKTWlxdcOobAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K