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 X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7E31C433DF for ; Sat, 27 Jun 2020 07:27:15 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 760352081A for ; Sat, 27 Jun 2020 07:27:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="iLvITafP" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 760352081A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=csgroup.eu Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-snps-arc-bounces+linux-snps-arc=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=rq5j+fHSd9nfmd+QXtvmCXsfWF85TcdaetzDHBiDLuY=; b=iLvITafPpBHjDM1pFvM5mazmA hF5rWKR9qc386LMzymDRJgEgD1phCC7AmiAToLOSzXHXJEMN/C4K8JkGAD9rGieRS1XxVXsOvNBn/ XpwckOhGSyc5NT5rZGrRJTu1BspC/L1MCiV70YtFVnpgalGBGith8+whU4PsrtQEgdbNs7Pj3tX8v ICl/ZXhW47srmEIcwbtOyNM9lfJJv3gEfbV9r98l5DN0kWFeEcpYTL9Eho6OEQIzBpWzfTJBw694I +zfAwZToAIjSMtEv1tkKn22Kqcvd+gUKMPx8SAudNv8UZb8+XS8aKepwo3LwSxPcSUlokL3KkPt+h /FtGEA5+g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jp5F3-0000cG-Tz; Sat, 27 Jun 2020 07:27:14 +0000 Received: from pegase1.c-s.fr ([93.17.236.30]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jp5Ex-0000bD-Pp; Sat, 27 Jun 2020 07:27:09 +0000 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 49v50y2n7Lz9tyWd; Sat, 27 Jun 2020 09:26:58 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id pXgL3pLy5jWH; Sat, 27 Jun 2020 09:26:58 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 49v50y1hbJz9tyWZ; Sat, 27 Jun 2020 09:26:58 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 6F5AE8B772; Sat, 27 Jun 2020 09:26:59 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id A0nwexkhePdw; Sat, 27 Jun 2020 09:26:59 +0200 (CEST) Received: from [192.168.4.90] (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 3D7FC8B75B; Sat, 27 Jun 2020 09:26:57 +0200 (CEST) Subject: Re: [PATCH V3 2/4] mm/debug_vm_pgtable: Add tests validating advanced arch page table helpers To: Anshuman Khandual , linux-mm@kvack.org References: <1592192277-8421-1-git-send-email-anshuman.khandual@arm.com> <1592192277-8421-3-git-send-email-anshuman.khandual@arm.com> From: Christophe Leroy Message-ID: <4da41eee-5ce0-2a5e-40eb-4424655b3489@csgroup.eu> Date: Sat, 27 Jun 2020 09:26:55 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 MIME-Version: 1.0 In-Reply-To: <1592192277-8421-3-git-send-email-anshuman.khandual@arm.com> Content-Language: fr X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Benjamin Herrenschmidt , Heiko Carstens , Paul Mackerras , "H. Peter Anvin" , linux-riscv@lists.infradead.org, Will Deacon , linux-arch@vger.kernel.org, linux-s390@vger.kernel.org, Michael Ellerman , x86@kernel.org, Mike Rapoport , Christian Borntraeger , Ingo Molnar , gerald.schaefer@de.ibm.com, ziy@nvidia.com, Catalin Marinas , linux-snps-arc@lists.infradead.org, Vasily Gorbik , Borislav Petkov , Paul Walmsley , "Kirill A . Shutemov" , Thomas Gleixner , linux-arm-kernel@lists.infradead.org, Vineet Gupta , linux-kernel@vger.kernel.org, Palmer Dabbelt , Andrew Morton , linuxppc-dev@lists.ozlabs.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+linux-snps-arc=archiver.kernel.org@lists.infradead.org CgpMZSAxNS8wNi8yMDIwIMOgIDA1OjM3LCBBbnNodW1hbiBLaGFuZHVhbCBhIMOpY3JpdMKgOgo+ IFRoaXMgYWRkcyBuZXcgdGVzdHMgdmFsaWRhdGluZyBmb3IgdGhlc2UgZm9sbG93aW5nIGFyY2gg YWR2YW5jZWQgcGFnZSB0YWJsZQo+IGhlbHBlcnMuIFRoZXNlIHRlc3RzIGNyZWF0ZSBhbmQgdGVz dCBzcGVjaWZpYyBtYXBwaW5nIHR5cGVzIGF0IHZhcmlvdXMgcGFnZQo+IHRhYmxlIGxldmVscy4K PiAKPiAxLiBweHhwX3NldF93cnByb3RlY3QoKQo+IDIuIHB4eHBfZ2V0X2FuZF9jbGVhcigpCj4g My4gcHh4cF9zZXRfYWNjZXNzX2ZsYWdzKCkKPiA0LiBweHhwX2dldF9hbmRfY2xlYXJfZnVsbCgp Cj4gNS4gcHh4cF90ZXN0X2FuZF9jbGVhcl95b3VuZygpCj4gNi4gcHh4X2xlYWYoKQo+IDcuIHB4 eF9zZXRfaHVnZSgpCj4gOC4gcHh4XyhjbGVhcnxtaylfc2F2ZWR3cml0ZSgpCj4gOS4gaHVnZV9w eHhwX3h4eCgpCj4gCj4gQ2M6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5v cmc+Cj4gQ2M6IE1pa2UgUmFwb3BvcnQgPHJwcHRAbGludXguaWJtLmNvbT4KPiBDYzogVmluZWV0 IEd1cHRhIDx2Z3VwdGFAc3lub3BzeXMuY29tPgo+IENjOiBDYXRhbGluIE1hcmluYXMgPGNhdGFs aW4ubWFyaW5hc0Bhcm0uY29tPgo+IENjOiBXaWxsIERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgo+ IENjOiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+Cj4g Q2M6IFBhdWwgTWFja2VycmFzIDxwYXVsdXNAc2FtYmEub3JnPgo+IENjOiBNaWNoYWVsIEVsbGVy bWFuIDxtcGVAZWxsZXJtYW4uaWQuYXU+Cj4gQ2M6IEhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJz dGVuc0BkZS5pYm0uY29tPgo+IENjOiBWYXNpbHkgR29yYmlrIDxnb3JAbGludXguaWJtLmNvbT4K PiBDYzogQ2hyaXN0aWFuIEJvcm50cmFlZ2VyIDxib3JudHJhZWdlckBkZS5pYm0uY29tPgo+IENj OiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KPiBDYzogSW5nbyBNb2xuYXIg PG1pbmdvQHJlZGhhdC5jb20+Cj4gQ2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRlPgo+ IENjOiAiSC4gUGV0ZXIgQW52aW4iIDxocGFAenl0b3IuY29tPgo+IENjOiBLaXJpbGwgQS4gU2h1 dGVtb3YgPGtpcmlsbEBzaHV0ZW1vdi5uYW1lPgo+IENjOiBQYXVsIFdhbG1zbGV5IDxwYXVsLndh bG1zbGV5QHNpZml2ZS5jb20+Cj4gQ2M6IFBhbG1lciBEYWJiZWx0IDxwYWxtZXJAZGFiYmVsdC5j b20+Cj4gQ2M6IGxpbnV4LXNucHMtYXJjQGxpc3RzLmluZnJhZGVhZC5vcmcKPiBDYzogbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4gQ2M6IGxpbnV4cHBjLWRldkBsaXN0cy5v emxhYnMub3JnCj4gQ2M6IGxpbnV4LXMzOTBAdmdlci5rZXJuZWwub3JnCj4gQ2M6IGxpbnV4LXJp c2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKPiBDYzogeDg2QGtlcm5lbC5vcmcKPiBDYzogbGludXgt bW1Aa3ZhY2sub3JnCj4gQ2M6IGxpbnV4LWFyY2hAdmdlci5rZXJuZWwub3JnCj4gQ2M6IGxpbnV4 LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKPiBTdWdnZXN0ZWQtYnk6IENhdGFsaW4gTWFyaW5hcyA8 Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQW5zaHVtYW4gS2hhbmR1 YWwgPGFuc2h1bWFuLmtoYW5kdWFsQGFybS5jb20+Cj4gLS0tCj4gICBtbS9kZWJ1Z192bV9wZ3Rh YmxlLmMgfCAzMDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g ICAxIGZpbGUgY2hhbmdlZCwgMzA2IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvbW0v ZGVidWdfdm1fcGd0YWJsZS5jIGIvbW0vZGVidWdfdm1fcGd0YWJsZS5jCj4gaW5kZXggZmZhMTYz ZDRjNjNjLi5lM2Y5ZjgzMTdhOTggMTAwNjQ0Cj4gLS0tIGEvbW0vZGVidWdfdm1fcGd0YWJsZS5j Cj4gKysrIGIvbW0vZGVidWdfdm1fcGd0YWJsZS5jCj4gQEAgLTIxLDYgKzIxLDcgQEAKPiAgICNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiAgICNpbmNsdWRlIDxsaW51eC9wZm5fdC5oPgo+ICAg I2luY2x1ZGUgPGxpbnV4L3ByaW50ay5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGd0YWJsZS5oPgo+ ICAgI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2Nr Lmg+Cj4gICAjaW5jbHVkZSA8bGludXgvc3dhcC5oPgo+IEBAIC0yOCw2ICsyOSw3IEBACj4gICAj aW5jbHVkZSA8bGludXgvc3RhcnRfa2VybmVsLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvc2NoZWQv bW0uaD4KPiAgICNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPgo+ICsjaW5jbHVkZSA8YXNtL3RsYmZs dXNoLmg+Cj4gICAKPiAgICNkZWZpbmUgVk1GTEFHUwkoVk1fUkVBRHxWTV9XUklURXxWTV9FWEVD KQo+ICAgCj4gQEAgLTU1LDYgKzU3LDU0IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwdGVfYmFzaWNf dGVzdHModW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHByb3QpCj4gICAJV0FSTl9PTihwdGVf d3JpdGUocHRlX3dycHJvdGVjdChwdGVfbWt3cml0ZShwdGUpKSkpOwo+ICAgfQo+ICAgCj4gK3N0 YXRpYyB2b2lkIF9faW5pdCBwdGVfYWR2YW5jZWRfdGVzdHMoc3RydWN0IG1tX3N0cnVjdCAqbW0s Cj4gKwkJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBwdGVfdCAqcHRlcCwKPiArCQkJdW5z aWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgdmFkZHIsIHBncHJvdF90IHByb3QpCgpBbGln biBhcmdzIHByb3Blcmx5LgoKPiArewo+ICsJcHRlX3QgcHRlID0gcGZuX3B0ZShwZm4sIHByb3Qp Owo+ICsKPiArCXB0ZSA9IHBmbl9wdGUocGZuLCBwcm90KTsKPiArCXNldF9wdGVfYXQobW0sIHZh ZGRyLCBwdGVwLCBwdGUpOwo+ICsJcHRlcF9zZXRfd3Jwcm90ZWN0KG1tLCB2YWRkciwgcHRlcCk7 Cj4gKwlwdGUgPSBSRUFEX09OQ0UoKnB0ZXApOwo+ICsJV0FSTl9PTihwdGVfd3JpdGUocHRlKSk7 Cj4gKwo+ICsJcHRlID0gcGZuX3B0ZShwZm4sIHByb3QpOwo+ICsJc2V0X3B0ZV9hdChtbSwgdmFk ZHIsIHB0ZXAsIHB0ZSk7Cj4gKwlwdGVwX2dldF9hbmRfY2xlYXIobW0sIHZhZGRyLCBwdGVwKTsK PiArCXB0ZSA9IFJFQURfT05DRSgqcHRlcCk7Cj4gKwlXQVJOX09OKCFwdGVfbm9uZShwdGUpKTsK PiArCj4gKwlwdGUgPSBwZm5fcHRlKHBmbiwgcHJvdCk7Cj4gKwlwdGUgPSBwdGVfd3Jwcm90ZWN0 KHB0ZSk7Cj4gKwlwdGUgPSBwdGVfbWtjbGVhbihwdGUpOwo+ICsJc2V0X3B0ZV9hdChtbSwgdmFk ZHIsIHB0ZXAsIHB0ZSk7Cj4gKwlwdGUgPSBwdGVfbWt3cml0ZShwdGUpOwo+ICsJcHRlID0gcHRl X21rZGlydHkocHRlKTsKPiArCXB0ZXBfc2V0X2FjY2Vzc19mbGFncyh2bWEsIHZhZGRyLCBwdGVw LCBwdGUsIDEpOwo+ICsJcHRlID0gUkVBRF9PTkNFKCpwdGVwKTsKPiArCVdBUk5fT04oIShwdGVf d3JpdGUocHRlKSAmJiBwdGVfZGlydHkocHRlKSkpOwo+ICsKPiArCXB0ZSA9IHBmbl9wdGUocGZu LCBwcm90KTsKPiArCXNldF9wdGVfYXQobW0sIHZhZGRyLCBwdGVwLCBwdGUpOwo+ICsJcHRlcF9n ZXRfYW5kX2NsZWFyX2Z1bGwobW0sIHZhZGRyLCBwdGVwLCAxKTsKPiArCXB0ZSA9IFJFQURfT05D RSgqcHRlcCk7Cj4gKwlXQVJOX09OKCFwdGVfbm9uZShwdGUpKTsKPiArCj4gKwlwdGUgPSBwdGVf bWt5b3VuZyhwdGUpOwo+ICsJc2V0X3B0ZV9hdChtbSwgdmFkZHIsIHB0ZXAsIHB0ZSk7Cj4gKwlw dGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHZtYSwgdmFkZHIsIHB0ZXApOwo+ICsJcHRlID0gUkVB RF9PTkNFKCpwdGVwKTsKPiArCVdBUk5fT04ocHRlX3lvdW5nKHB0ZSkpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBfX2luaXQgcHRlX3NhdmVkd3JpdGVfdGVzdHModW5zaWduZWQgbG9uZyBwZm4s IHBncHJvdF90IHByb3QpCj4gK3sKPiArCXB0ZV90IHB0ZSA9IHBmbl9wdGUocGZuLCBwcm90KTsK PiArCj4gKwlXQVJOX09OKCFwdGVfc2F2ZWR3cml0ZShwdGVfbWtfc2F2ZWR3cml0ZShwdGVfY2xl YXJfc2F2ZWR3cml0ZShwdGUpKSkpOwo+ICsJV0FSTl9PTihwdGVfc2F2ZWR3cml0ZShwdGVfY2xl YXJfc2F2ZWR3cml0ZShwdGVfbWtfc2F2ZWR3cml0ZShwdGUpKSkpOwo+ICt9Cj4gICAjaWZkZWYg Q09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFCj4gICBzdGF0aWMgdm9pZCBfX2luaXQgcG1kX2Jh c2ljX3Rlc3RzKHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwcm90KQo+ICAgewo+IEBAIC03 Nyw2ICsxMjcsODkgQEAgc3RhdGljIHZvaWQgX19pbml0IHBtZF9iYXNpY190ZXN0cyh1bnNpZ25l ZCBsb25nIHBmbiwgcGdwcm90X3QgcHJvdCkKPiAgIAlXQVJOX09OKCFwbWRfYmFkKHBtZF9ta2h1 Z2UocG1kKSkpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIF9faW5pdCBwbWRfYWR2YW5jZWRf dGVzdHMoc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gKwkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEsIHBtZF90ICpwbWRwLAo+ICsJCXVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIHZh ZGRyLCBwZ3Byb3RfdCBwcm90KQoKQWxpZ24gYXJncyBwcm9wZXJseQoKPiArewo+ICsJcG1kX3Qg cG1kID0gcGZuX3BtZChwZm4sIHByb3QpOwo+ICsKPiArCWlmICghaGFzX3RyYW5zcGFyZW50X2h1 Z2VwYWdlKCkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCS8qIEFsaWduIHRoZSBhZGRyZXNzIHdydCBI UEFHRV9QTURfU0laRSAqLwo+ICsJdmFkZHIgPSAodmFkZHIgJiBIUEFHRV9QTURfTUFTSykgKyBI UEFHRV9QTURfU0laRTsKPiArCj4gKwlwbWQgPSBwZm5fcG1kKHBmbiwgcHJvdCk7Cj4gKwlzZXRf cG1kX2F0KG1tLCB2YWRkciwgcG1kcCwgcG1kKTsKPiArCXBtZHBfc2V0X3dycHJvdGVjdChtbSwg dmFkZHIsIHBtZHApOwo+ICsJcG1kID0gUkVBRF9PTkNFKCpwbWRwKTsKPiArCVdBUk5fT04ocG1k X3dyaXRlKHBtZCkpOwo+ICsKPiArCXBtZCA9IHBmbl9wbWQocGZuLCBwcm90KTsKPiArCXNldF9w bWRfYXQobW0sIHZhZGRyLCBwbWRwLCBwbWQpOwo+ICsJcG1kcF9odWdlX2dldF9hbmRfY2xlYXIo bW0sIHZhZGRyLCBwbWRwKTsKPiArCXBtZCA9IFJFQURfT05DRSgqcG1kcCk7Cj4gKwlXQVJOX09O KCFwbWRfbm9uZShwbWQpKTsKPiArCj4gKwlwbWQgPSBwZm5fcG1kKHBmbiwgcHJvdCk7Cj4gKwlw bWQgPSBwbWRfd3Jwcm90ZWN0KHBtZCk7Cj4gKwlwbWQgPSBwbWRfbWtjbGVhbihwbWQpOwo+ICsJ c2V0X3BtZF9hdChtbSwgdmFkZHIsIHBtZHAsIHBtZCk7Cj4gKwlwbWQgPSBwbWRfbWt3cml0ZShw bWQpOwo+ICsJcG1kID0gcG1kX21rZGlydHkocG1kKTsKPiArCXBtZHBfc2V0X2FjY2Vzc19mbGFn cyh2bWEsIHZhZGRyLCBwbWRwLCBwbWQsIDEpOwo+ICsJcG1kID0gUkVBRF9PTkNFKCpwbWRwKTsK PiArCVdBUk5fT04oIShwbWRfd3JpdGUocG1kKSAmJiBwbWRfZGlydHkocG1kKSkpOwo+ICsKPiAr CXBtZCA9IHBtZF9ta2h1Z2UocGZuX3BtZChwZm4sIHByb3QpKTsKPiArCXNldF9wbWRfYXQobW0s IHZhZGRyLCBwbWRwLCBwbWQpOwo+ICsJcG1kcF9odWdlX2dldF9hbmRfY2xlYXJfZnVsbCh2bWEs IHZhZGRyLCBwbWRwLCAxKTsKPiArCXBtZCA9IFJFQURfT05DRSgqcG1kcCk7Cj4gKwlXQVJOX09O KCFwbWRfbm9uZShwbWQpKTsKPiArCj4gKwlwbWQgPSBwbWRfbWt5b3VuZyhwbWQpOwo+ICsJc2V0 X3BtZF9hdChtbSwgdmFkZHIsIHBtZHAsIHBtZCk7Cj4gKwlwbWRwX3Rlc3RfYW5kX2NsZWFyX3lv dW5nKHZtYSwgdmFkZHIsIHBtZHApOwo+ICsJcG1kID0gUkVBRF9PTkNFKCpwbWRwKTsKPiArCVdB Uk5fT04ocG1kX3lvdW5nKHBtZCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2luaXQgcG1k X2xlYWZfdGVzdHModW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHByb3QpCj4gK3sKPiArCXBt ZF90IHBtZCA9IHBmbl9wbWQocGZuLCBwcm90KTsKPiArCj4gKwkvKgo+ICsJICogUE1EIGJhc2Vk IFRIUCBpcyBhIGxlYWYgZW50cnkuCj4gKwkgKi8KPiArCXBtZCA9IHBtZF9ta2h1Z2UocG1kKTsK PiArCVdBUk5fT04oIXBtZF9sZWFmKHBtZCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2lu aXQgcG1kX2h1Z2VfdGVzdHMocG1kX3QgKnBtZHAsIHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3Rf dCBwcm90KQo+ICt7Cj4gKwlwbWRfdCBwbWQ7Cj4gKwo+ICsJaWYgKCFJU19FTkFCTEVEKENPTkZJ R19IQVZFX0FSQ0hfSFVHRV9WTUFQKSkKPiArCQlyZXR1cm47Cj4gKwkvKgo+ICsJICogWDg2IGRl ZmluZWQgcG1kX3NldF9odWdlKCkgdmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4KPiArCSAqIFBNRCBp cyBub3QgYSBwb3B1bGF0ZWQgbm9uLWxlYWYgZW50cnkuCj4gKwkgKi8KPiArCVdSSVRFX09OQ0Uo KnBtZHAsIF9fcG1kKDApKTsKPiArCVdBUk5fT04oIXBtZF9zZXRfaHVnZShwbWRwLCBfX3Bmbl90 b19waHlzKHBmbiksIHByb3QpKTsKPiArCVdBUk5fT04oIXBtZF9jbGVhcl9odWdlKHBtZHApKTsK PiArCXBtZCA9IFJFQURfT05DRSgqcG1kcCk7Cj4gKwlXQVJOX09OKCFwbWRfbm9uZShwbWQpKTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19pbml0IHBtZF9zYXZlZHdyaXRlX3Rlc3RzKHVuc2ln bmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwcm90KQo+ICt7Cj4gKwlwbWRfdCBwbWQgPSBwZm5fcG1k KHBmbiwgcHJvdCk7Cj4gKwo+ICsJV0FSTl9PTighcG1kX3NhdmVkd3JpdGUocG1kX21rX3NhdmVk d3JpdGUocG1kX2NsZWFyX3NhdmVkd3JpdGUocG1kKSkpKTsKPiArCVdBUk5fT04ocG1kX3NhdmVk d3JpdGUocG1kX2NsZWFyX3NhdmVkd3JpdGUocG1kX21rX3NhdmVkd3JpdGUocG1kKSkpKTsKPiAr fQo+ICsKPiAgICNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFX1BV RAo+ICAgc3RhdGljIHZvaWQgX19pbml0IHB1ZF9iYXNpY190ZXN0cyh1bnNpZ25lZCBsb25nIHBm biwgcGdwcm90X3QgcHJvdCkKPiAgIHsKPiBAQCAtMTAwLDEyICsyMzMsMTE1IEBAIHN0YXRpYyB2 b2lkIF9faW5pdCBwdWRfYmFzaWNfdGVzdHModW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBy b3QpCj4gICAJICovCj4gICAJV0FSTl9PTighcHVkX2JhZChwdWRfbWtodWdlKHB1ZCkpKTsKPiAg IH0KPiArCj4gK3N0YXRpYyB2b2lkIHB1ZF9hZHZhbmNlZF90ZXN0cyhzdHJ1Y3QgbW1fc3RydWN0 ICptbSwKPiArCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcHVkX3QgKnB1ZHAsCj4gKwkJ dW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgdmFkZHIsIHBncHJvdF90IHByb3QpCgpB bGlnbiBhcmdzIHByb3Blcmx5Cgo+ICt7Cj4gKwlwdWRfdCBwdWQgPSBwZm5fcHVkKHBmbiwgcHJv dCk7Cj4gKwo+ICsJaWYgKCFoYXNfdHJhbnNwYXJlbnRfaHVnZXBhZ2UoKSkKPiArCQlyZXR1cm47 Cj4gKwo+ICsJLyogQWxpZ24gdGhlIGFkZHJlc3Mgd3J0IEhQQUdFX1BVRF9TSVpFICovCj4gKwl2 YWRkciA9ICh2YWRkciAmIEhQQUdFX1BVRF9NQVNLKSArIEhQQUdFX1BVRF9TSVpFOwo+ICsKPiAr CXNldF9wdWRfYXQobW0sIHZhZGRyLCBwdWRwLCBwdWQpOwo+ICsJcHVkcF9zZXRfd3Jwcm90ZWN0 KG1tLCB2YWRkciwgcHVkcCk7Cj4gKwlwdWQgPSBSRUFEX09OQ0UoKnB1ZHApOwo+ICsJV0FSTl9P TihwdWRfd3JpdGUocHVkKSk7Cj4gKwo+ICsjaWZuZGVmIF9fUEFHRVRBQkxFX1BNRF9GT0xERUQK PiArCXB1ZCA9IHBmbl9wdWQocGZuLCBwcm90KTsKPiArCXNldF9wdWRfYXQobW0sIHZhZGRyLCBw dWRwLCBwdWQpOwo+ICsJcHVkcF9odWdlX2dldF9hbmRfY2xlYXIobW0sIHZhZGRyLCBwdWRwKTsK PiArCXB1ZCA9IFJFQURfT05DRSgqcHVkcCk7Cj4gKwlXQVJOX09OKCFwdWRfbm9uZShwdWQpKTsK PiArCj4gKwlwdWQgPSBwZm5fcHVkKHBmbiwgcHJvdCk7Cj4gKwlzZXRfcHVkX2F0KG1tLCB2YWRk ciwgcHVkcCwgcHVkKTsKPiArCXB1ZHBfaHVnZV9nZXRfYW5kX2NsZWFyX2Z1bGwobW0sIHZhZGRy LCBwdWRwLCAxKTsKPiArCXB1ZCA9IFJFQURfT05DRSgqcHVkcCk7Cj4gKwlXQVJOX09OKCFwdWRf bm9uZShwdWQpKTsKPiArI2VuZGlmIC8qIF9fUEFHRVRBQkxFX1BNRF9GT0xERUQgKi8KPiArCXB1 ZCA9IHBmbl9wdWQocGZuLCBwcm90KTsKPiArCXB1ZCA9IHB1ZF93cnByb3RlY3QocHVkKTsKPiAr CXB1ZCA9IHB1ZF9ta2NsZWFuKHB1ZCk7Cj4gKwlzZXRfcHVkX2F0KG1tLCB2YWRkciwgcHVkcCwg cHVkKTsKPiArCXB1ZCA9IHB1ZF9ta3dyaXRlKHB1ZCk7Cj4gKwlwdWQgPSBwdWRfbWtkaXJ0eShw dWQpOwo+ICsJcHVkcF9zZXRfYWNjZXNzX2ZsYWdzKHZtYSwgdmFkZHIsIHB1ZHAsIHB1ZCwgMSk7 Cj4gKwlwdWQgPSBSRUFEX09OQ0UoKnB1ZHApOwo+ICsJV0FSTl9PTighKHB1ZF93cml0ZShwdWQp ICYmIHB1ZF9kaXJ0eShwdWQpKSk7Cj4gKwo+ICsJcHVkID0gcHVkX21reW91bmcocHVkKTsKPiAr CXNldF9wdWRfYXQobW0sIHZhZGRyLCBwdWRwLCBwdWQpOwo+ICsJcHVkcF90ZXN0X2FuZF9jbGVh cl95b3VuZyh2bWEsIHZhZGRyLCBwdWRwKTsKPiArCXB1ZCA9IFJFQURfT05DRSgqcHVkcCk7Cj4g KwlXQVJOX09OKHB1ZF95b3VuZyhwdWQpKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19pbml0 IHB1ZF9sZWFmX3Rlc3RzKHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwcm90KQo+ICt7Cj4g KwlwdWRfdCBwdWQgPSBwZm5fcHVkKHBmbiwgcHJvdCk7Cj4gKwo+ICsJLyoKPiArCSAqIFBVRCBi YXNlZCBUSFAgaXMgYSBsZWFmIGVudHJ5Lgo+ICsJICovCj4gKwlwdWQgPSBwdWRfbWtodWdlKHB1 ZCk7Cj4gKwlXQVJOX09OKCFwdWRfbGVhZihwdWQpKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg X19pbml0IHB1ZF9odWdlX3Rlc3RzKHB1ZF90ICpwdWRwLCB1bnNpZ25lZCBsb25nIHBmbiwgcGdw cm90X3QgcHJvdCkKPiArewo+ICsJcHVkX3QgcHVkOwo+ICsKPiArCWlmICghSVNfRU5BQkxFRChD T05GSUdfSEFWRV9BUkNIX0hVR0VfVk1BUCkpCj4gKwkJcmV0dXJuOwo+ICsJLyoKPiArCSAqIFg4 NiBkZWZpbmVkIHB1ZF9zZXRfaHVnZSgpIHZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuCj4gKwkgKiBQ VUQgaXMgbm90IGEgcG9wdWxhdGVkIG5vbi1sZWFmIGVudHJ5Lgo+ICsJICovCj4gKwlXUklURV9P TkNFKCpwdWRwLCBfX3B1ZCgwKSk7Cj4gKwlXQVJOX09OKCFwdWRfc2V0X2h1Z2UocHVkcCwgX19w Zm5fdG9fcGh5cyhwZm4pLCBwcm90KSk7Cj4gKwlXQVJOX09OKCFwdWRfY2xlYXJfaHVnZShwdWRw KSk7Cj4gKwlwdWQgPSBSRUFEX09OQ0UoKnB1ZHApOwo+ICsJV0FSTl9PTighcHVkX25vbmUocHVk KSk7Cj4gK30KPiAgICNlbHNlICAvKiAhQ09ORklHX0hBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdF UEFHRV9QVUQgKi8KPiAgIHN0YXRpYyB2b2lkIF9faW5pdCBwdWRfYmFzaWNfdGVzdHModW5zaWdu ZWQgbG9uZyBwZm4sIHBncHJvdF90IHByb3QpIHsgfQo+ICtzdGF0aWMgdm9pZCBwdWRfYWR2YW5j ZWRfdGVzdHMoc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gKwkJc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEsIHB1ZF90ICpwdWRwLAo+ICsJCXVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25n IHZhZGRyLCBwZ3Byb3RfdCBwcm90KQoKQWxpZ24gYXJncyBwcm9wZXJseQoKPiArewo+ICt9Cj4g K3N0YXRpYyB2b2lkIF9faW5pdCBwdWRfbGVhZl90ZXN0cyh1bnNpZ25lZCBsb25nIHBmbiwgcGdw cm90X3QgcHJvdCkgeyB9Cj4gK3N0YXRpYyB2b2lkIF9faW5pdCBwdWRfaHVnZV90ZXN0cyhwdWRf dCAqcHVkcCwgdW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHByb3QpCj4gK3sKPiArfQo+ICAg I2VuZGlmIC8qIENPTkZJR19IQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEICovCj4g ICAjZWxzZSAgLyogIUNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqLwo+ICAgc3RhdGljIHZv aWQgX19pbml0IHBtZF9iYXNpY190ZXN0cyh1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcHJv dCkgeyB9Cj4gICBzdGF0aWMgdm9pZCBfX2luaXQgcHVkX2Jhc2ljX3Rlc3RzKHVuc2lnbmVkIGxv bmcgcGZuLCBwZ3Byb3RfdCBwcm90KSB7IH0KPiArc3RhdGljIHZvaWQgX19pbml0IHBtZF9hZHZh bmNlZF90ZXN0cyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiArCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnZtYSwgcG1kX3QgKnBtZHAsCj4gKwkJdW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxv bmcgdmFkZHIsIHBncHJvdF90IHByb3QpCgpBbGlnbiBhcmdzIHByb3Blcmx5Cgo+ICt7Cj4gK30K PiArc3RhdGljIHZvaWQgX19pbml0IHB1ZF9hZHZhbmNlZF90ZXN0cyhzdHJ1Y3QgbW1fc3RydWN0 ICptbSwKPiArCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcHVkX3QgKnB1ZHAsCj4gKwkJ dW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgdmFkZHIsIHBncHJvdF90IHByb3QpCgpB bGlnbiBhcmdzIHByb3Blcmx5Cgo+ICt7Cj4gK30KPiArc3RhdGljIHZvaWQgX19pbml0IHBtZF9s ZWFmX3Rlc3RzKHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwcm90KSB7IH0KPiArc3RhdGlj IHZvaWQgX19pbml0IHB1ZF9sZWFmX3Rlc3RzKHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBw cm90KSB7IH0KPiArc3RhdGljIHZvaWQgX19pbml0IHBtZF9odWdlX3Rlc3RzKHBtZF90ICpwbWRw LCB1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcHJvdCkKPiArewo+ICt9Cj4gK3N0YXRpYyB2 b2lkIF9faW5pdCBwdWRfaHVnZV90ZXN0cyhwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBwZm4s IHBncHJvdF90IHByb3QpCj4gK3sKPiArfQo+ICtzdGF0aWMgdm9pZCBfX2luaXQgcG1kX3NhdmVk d3JpdGVfdGVzdHModW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHByb3QpIHsgfQo+ICAgI2Vu ZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqLwo+ICAgCj4gICBzdGF0aWMgdm9p ZCBfX2luaXQgcDRkX2Jhc2ljX3Rlc3RzKHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwcm90 KQo+IEBAIC00OTUsOCArNzMxLDU2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2Jhc2lj X3Rlc3RzKHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwcm90KQo+ICAgCVdBUk5fT04oIXB0 ZV9odWdlKHB0ZV9ta2h1Z2UocHRlKSkpOwo+ICAgI2VuZGlmIC8qIENPTkZJR19BUkNIX1dBTlRf R0VORVJBTF9IVUdFVExCICovCj4gICB9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRs Yl9hZHZhbmNlZF90ZXN0cyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiArCQkJCQkgIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hLAo+ICsJCQkJCSAgcHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcg cGZuLAo+ICsJCQkJCSAgdW5zaWduZWQgbG9uZyB2YWRkciwgcGdwcm90X3QgcHJvdCkKPiArewo+ ICsJc3RydWN0IHBhZ2UgKnBhZ2UgPSBwZm5fdG9fcGFnZShwZm4pOwo+ICsJcHRlX3QgcHRlID0g UkVBRF9PTkNFKCpwdGVwKTsKPiArCXVuc2lnbmVkIGxvbmcgcGFkZHIgPSAoX19wZm5fdG9fcGh5 cyhwZm4pIHwgUkFORE9NX09SVkFMVUUpICYgUE1EX01BU0s7Cj4gKwo+ICsJcHRlID0gcHRlX21r aHVnZShta19wdGUocGZuX3RvX3BhZ2UoUEhZU19QRk4ocGFkZHIpKSwgcHJvdCkpOwo+ICsJc2V0 X2h1Z2VfcHRlX2F0KG1tLCB2YWRkciwgcHRlcCwgcHRlKTsKPiArCWJhcnJpZXIoKTsKPiArCVdB Uk5fT04oIXB0ZV9zYW1lKHB0ZSwgaHVnZV9wdGVwX2dldChwdGVwKSkpOwo+ICsJaHVnZV9wdGVf Y2xlYXIobW0sIHZhZGRyLCBwdGVwLCBQTURfU0laRSk7Cj4gKwlwdGUgPSBodWdlX3B0ZXBfZ2V0 KHB0ZXApOwo+ICsJV0FSTl9PTighaHVnZV9wdGVfbm9uZShwdGUpKTsKPiArCj4gKwlwdGUgPSBt a19odWdlX3B0ZShwYWdlLCBwcm90KTsKPiArCXNldF9odWdlX3B0ZV9hdChtbSwgdmFkZHIsIHB0 ZXAsIHB0ZSk7Cj4gKwliYXJyaWVyKCk7Cj4gKwlodWdlX3B0ZXBfc2V0X3dycHJvdGVjdChtbSwg dmFkZHIsIHB0ZXApOwo+ICsJcHRlID0gaHVnZV9wdGVwX2dldChwdGVwKTsKPiArCVdBUk5fT04o aHVnZV9wdGVfd3JpdGUocHRlKSk7Cj4gKwo+ICsJcHRlID0gbWtfaHVnZV9wdGUocGFnZSwgcHJv dCk7Cj4gKwlzZXRfaHVnZV9wdGVfYXQobW0sIHZhZGRyLCBwdGVwLCBwdGUpOwo+ICsJYmFycmll cigpOwo+ICsJaHVnZV9wdGVwX2dldF9hbmRfY2xlYXIobW0sIHZhZGRyLCBwdGVwKTsKPiArCXB0 ZSA9IGh1Z2VfcHRlcF9nZXQocHRlcCk7Cj4gKwlXQVJOX09OKCFodWdlX3B0ZV9ub25lKHB0ZSkp Owo+ICsKPiArCXB0ZSA9IG1rX2h1Z2VfcHRlKHBhZ2UsIHByb3QpOwo+ICsJcHRlID0gaHVnZV9w dGVfd3Jwcm90ZWN0KHB0ZSk7Cj4gKwlzZXRfaHVnZV9wdGVfYXQobW0sIHZhZGRyLCBwdGVwLCBw dGUpOwo+ICsJYmFycmllcigpOwo+ICsJcHRlID0gaHVnZV9wdGVfbWt3cml0ZShwdGUpOwo+ICsJ cHRlID0gaHVnZV9wdGVfbWtkaXJ0eShwdGUpOwo+ICsJaHVnZV9wdGVwX3NldF9hY2Nlc3NfZmxh Z3Modm1hLCB2YWRkciwgcHRlcCwgcHRlLCAxKTsKPiArCXB0ZSA9IGh1Z2VfcHRlcF9nZXQocHRl cCk7Cj4gKwlXQVJOX09OKCEoaHVnZV9wdGVfd3JpdGUocHRlKSAmJiBodWdlX3B0ZV9kaXJ0eShw dGUpKSk7Cj4gK30KPiAgICNlbHNlICAvKiAhQ09ORklHX0hVR0VUTEJfUEFHRSAqLwo+ICAgc3Rh dGljIHZvaWQgX19pbml0IGh1Z2V0bGJfYmFzaWNfdGVzdHModW5zaWduZWQgbG9uZyBwZm4sIHBn cHJvdF90IHByb3QpIHsgfQo+ICtzdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9hZHZhbmNlZF90 ZXN0cyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiArCQkJCQkgIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hLAo+ICsJCQkJCSAgcHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcgcGZuLAo+ICsJCQkJ CSAgdW5zaWduZWQgbG9uZyB2YWRkciwgcGdwcm90X3QgcHJvdCkKPiArewo+ICt9Cj4gICAjZW5k aWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqLwo+ICAgCj4gICAjaWZkZWYgQ09ORklHX1RSQU5T UEFSRU5UX0hVR0VQQUdFCj4gQEAgLTU2OCw2ICs4NTIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9u ZyBfX2luaXQgZ2V0X3JhbmRvbV92YWRkcih2b2lkKQo+ICAgCj4gICBzdGF0aWMgaW50IF9faW5p dCBkZWJ1Z192bV9wZ3RhYmxlKHZvaWQpCj4gICB7Cj4gKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYTsKPiAgIAlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKPiAgIAlwZ2RfdCAqcGdkcDsKPiAgIAlw NGRfdCAqcDRkcCwgKnNhdmVkX3A0ZHA7Cj4gQEAgLTU5Niw2ICs4ODEsMTIgQEAgc3RhdGljIGlu dCBfX2luaXQgZGVidWdfdm1fcGd0YWJsZSh2b2lkKQo+ICAgCSAqLwo+ICAgCXByb3Rub25lID0g X19QMDAwOwo+ICAgCj4gKwl2bWEgPSB2bV9hcmVhX2FsbG9jKG1tKTsKPiArCWlmICghdm1hKSB7 Cj4gKwkJcHJfZXJyKCJ2bWEgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwo+ICsJCXJldHVybiAxOwo+ ICsJfQo+ICsKPiAgIAkvKgo+ICAgCSAqIFBGTiBmb3IgbWFwcGluZyBhdCBQVEUgbGV2ZWwgaXMg ZGV0ZXJtaW5lZCBmcm9tIGEgc3RhbmRhcmQga2VybmVsCj4gICAJICogdGV4dCBzeW1ib2wuIEJ1 dCBwZm5zIGZvciBoaWdoZXIgcGFnZSB0YWJsZSBsZXZlbHMgYXJlIGRlcml2ZWQgYnkKPiBAQCAt NjQ0LDYgKzkzNSwyMCBAQCBzdGF0aWMgaW50IF9faW5pdCBkZWJ1Z192bV9wZ3RhYmxlKHZvaWQp Cj4gICAJcDRkX2NsZWFyX3Rlc3RzKG1tLCBwNGRwKTsKPiAgIAlwZ2RfY2xlYXJfdGVzdHMobW0s IHBnZHApOwo+ICAgCj4gKwlwdGVfYWR2YW5jZWRfdGVzdHMobW0sIHZtYSwgcHRlcCwgcHRlX2Fs aWduZWQsIHZhZGRyLCBwcm90KTsKPiArCXBtZF9hZHZhbmNlZF90ZXN0cyhtbSwgdm1hLCBwbWRw LCBwbWRfYWxpZ25lZCwgdmFkZHIsIHByb3QpOwo+ICsJcHVkX2FkdmFuY2VkX3Rlc3RzKG1tLCB2 bWEsIHB1ZHAsIHB1ZF9hbGlnbmVkLCB2YWRkciwgcHJvdCk7Cj4gKwlodWdldGxiX2FkdmFuY2Vk X3Rlc3RzKG1tLCB2bWEsIHB0ZXAsIHB0ZV9hbGlnbmVkLCB2YWRkciwgcHJvdCk7Cj4gKwo+ICsJ cG1kX2xlYWZfdGVzdHMocG1kX2FsaWduZWQsIHByb3QpOwo+ICsJcHVkX2xlYWZfdGVzdHMocHVk X2FsaWduZWQsIHByb3QpOwo+ICsKPiArCXBtZF9odWdlX3Rlc3RzKHBtZHAsIHBtZF9hbGlnbmVk LCBwcm90KTsKPiArCXB1ZF9odWdlX3Rlc3RzKHB1ZHAsIHB1ZF9hbGlnbmVkLCBwcm90KTsKPiAr Cj4gKwlwdGVfc2F2ZWR3cml0ZV90ZXN0cyhwdGVfYWxpZ25lZCwgcHJvdCk7Cj4gKwlwbWRfc2F2 ZWR3cml0ZV90ZXN0cyhwbWRfYWxpZ25lZCwgcHJvdCk7Cj4gKwo+ICAgCXB0ZV91bm1hcF91bmxv Y2socHRlcCwgcHRsKTsKPiAgIAo+ICAgCXBtZF9wb3B1bGF0ZV90ZXN0cyhtbSwgcG1kcCwgc2F2 ZWRfcHRlcCk7Cj4gQEAgLTY3OCw2ICs5ODMsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBkZWJ1Z192 bV9wZ3RhYmxlKHZvaWQpCj4gICAJcG1kX2ZyZWUobW0sIHNhdmVkX3BtZHApOwo+ICAgCXB0ZV9m cmVlKG1tLCBzYXZlZF9wdGVwKTsKPiAgIAo+ICsJdm1fYXJlYV9mcmVlKHZtYSk7Cj4gICAJbW1f ZGVjX25yX3B1ZHMobW0pOwo+ICAgCW1tX2RlY19ucl9wbWRzKG1tKTsKPiAgIAltbV9kZWNfbnJf cHRlcyhtbSk7Cj4gCgpDaHJpc3RvcGhlCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1zbnBzLWFyYyBtYWlsaW5nIGxpc3QKbGludXgtc25wcy1h cmNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LXNucHMtYXJjCg==