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=-9.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED 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 CCB72C4727E for ; Thu, 1 Oct 2020 18:12:20 +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 36D8B206C9 for ; Thu, 1 Oct 2020 18:12:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="BOVD5+0x"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=google.com header.i=@google.com header.b="D9G7o9e5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 36D8B206C9 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=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-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=WMHlTMEoxk656COo7YIq3ruX30F4Q6SXal10OV+7rxI=; b=BOVD5+0xdR9spnn3atCmusr3S 5nXv6uMhIpXVZxqL/i4ANYX9ZoZnFALLKAqh3ezfExU2XCbXI7I+6S0Hj+lY9rekp4EDLQ8HXkdAJ dxudIz0SQUx4jwr4TrfyX/2JKKpm2kiwCub2BFnN7zt9a+7/qWnzbzKNZT+650ij7zNdwb12cQlGY hkmr0/KSCAl7XeQphY8fTsaFaXYcS+e//Ueb5CzVe4/yUwwtd9xDt+TRE7pfXVzNy+ZVvcuP0hlbg OKy9bpEZEFmwYCvZRUXwPRlaCUrlA7CrFWDYWmXcPH5UZGwD3ATLi6z29qBzrfpH3wnGI311dcRRR 8MQQ+NmTA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kO32V-0002UI-UH; Thu, 01 Oct 2020 18:10:47 +0000 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kO32S-0002SW-DP for linux-arm-kernel@lists.infradead.org; Thu, 01 Oct 2020 18:10:46 +0000 Received: by mail-pg1-x544.google.com with SMTP id t14so4626758pgl.10 for ; Thu, 01 Oct 2020 11:10:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=5k48lXNCpXrvc//iysJwDBgdFvSGnGwhyGrPtUgyDYg=; b=D9G7o9e5VA684K9qsYwR6hPwEgX/cIjeS8ETcdfwUHesCS4dSmieZiYf1Vv2ZCwHzE ravrrUwiTqvexHirj+tvedRXPtVaEqvWMs+1gAAWNX3I9v5dXCNvRwm8lwFgF114RnnN dTSb3wTofiOBupGiyTk2DRA3P9RFUtIABSc7+Uve7qzCvIn5W2ylnC7ma+425GndZx1u dmFNmw6aVR4G4+NPy5WXcVN43ffnqKKL4db6GwzBSxFOD9lx1Iv+hYMhVBte4TFv908Q 2m3pgVsxG2qY9m8PFbD58T6xuXHpePEdvnQhi0H7FagcKuiBDV/FrW9/Gg3nJuxoZDq+ wL7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=5k48lXNCpXrvc//iysJwDBgdFvSGnGwhyGrPtUgyDYg=; b=D7EVJ3/60+5r2mrP1SSMQ02BWJoXv6ntvPbh0F/BExvY6jGarMZoKPJt4sE6X0yumk iTKjaBeF1PNqx+lEWb4O4XrZa9t/S3OVVDQWAuxAryxmsUsidU076VWF+nn+n2+SNKJN 51YNPsv+yU/noDlI+j9ygLN/pw2HZcDxPVVq7afYHgUmnQFJ9VHjHX20Cb4gEcgJBY9r zTIeg6K2+UJJA7E/bK04POe4U0sIj+hyJPWLBkwVP6A02ueyrex89thXjTMBu1a7Pp83 +u6uTi6Gm75Xn7sOXUrsZyENDRs8VPOcTmT9NGu6bFlbG2+8zd2jYiooYaVqn+YOLGGH NT8A== X-Gm-Message-State: AOAM532J+/YVfpdxKWTWiS90aECX63qLUlrLr1itTAKf+EYiZjlO12Mo TaSt2crUbqawwI+JGOE6LqIMyXmacjRAbbPyK/945A== X-Google-Smtp-Source: ABdhPJxccLIPcOzpBV4N/j8IEnFgMupXhkI/8ckY2PjBTKBGzFs0D63OmD8v4Ll/W7SRgv0QPdGARiJNoFWEF3P8rQ4= X-Received: by 2002:a65:4481:: with SMTP id l1mr6978077pgq.19.1601575842139; Thu, 01 Oct 2020 11:10:42 -0700 (PDT) MIME-Version: 1.0 References: <20200930222130.4175584-1-kaleshsingh@google.com> <20200930222130.4175584-4-kaleshsingh@google.com> <20201001123651.arcr5gqtia2myt22@black.fi.intel.com> In-Reply-To: From: Kalesh Singh Date: Thu, 1 Oct 2020 14:10:31 -0400 Message-ID: Subject: Re: [PATCH 3/5] mm: Speedup mremap on 1GB or larger regions To: "Kirill A. Shutemov" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201001_141044_516385_90BBDCF8 X-CRM114-Status: GOOD ( 43.43 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Joel Fernandes , Mark Rutland , Gavin Shan , Brian Geffon , Peter Zijlstra , Catalin Marinas , Ram Pai , "open list:MEMORY MANAGEMENT" , Dave Hansen , Will Deacon , Lokesh Gidra , "open list:KERNEL SELFTEST FRAMEWORK" , "H. Peter Anvin" , Christian Brauner , Shuah Khan , Mina Almasry , Jia He , Arnd Bergmann , "Aneesh Kumar K.V" , Masahiro Yamada , the arch/x86 maintainers , Krzysztof Kozlowski , Ingo Molnar , Sami Tolvanen , "Cc: Android Kernel" , Hassan Naveed , Ralph Campbell , Kees Cook , Minchan Kim , Zhenyu Ye , John Hubbard , Frederic Weisbecker , Mark Brown , Borislav Petkov , Thomas Gleixner , Suren Baghdasaryan , "moderated list:ARM64 PORT \(AARCH64 ARCHITECTURE\)" , Chris von Recklinghausen , William Kucharski , Stephen Boyd , SeongJae Park , LKML , Masami Hiramatsu , Andrew Morton , Mike Rapoport , Sandipan Das Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCBPY3QgMSwgMjAyMCBhdCAxMjo0MCBQTSBLYWxlc2ggU2luZ2ggPGthbGVzaHNpbmdo QGdvb2dsZS5jb20+IHdyb3RlOgo+Cj4gT24gVGh1LCBPY3QgMSwgMjAyMCBhdCA4OjM3IEFNIEtp cmlsbCBBLiBTaHV0ZW1vdgo+IDxraXJpbGwuc2h1dGVtb3ZAbGludXguaW50ZWwuY29tPiB3cm90 ZToKPiA+Cj4gPiBPbiBXZWQsIFNlcCAzMCwgMjAyMCBhdCAxMDoyMToyMFBNICswMDAwLCBLYWxl c2ggU2luZ2ggd3JvdGU6Cj4gPiA+IEFuZHJvaWQgbmVlZHMgdG8gbW92ZSBsYXJnZSBtZW1vcnkg cmVnaW9ucyBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uLgo+ID4gPiBPcHRpbWl6ZSBtcmVtYXAgZm9y ID49IDFHQi1zaXplZCByZWdpb25zIGJ5IG1vdmluZyBhdCB0aGUgUFVEL1BHRAo+ID4gPiBsZXZl bCBpZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgYXJlIFBVRC1hbGlnbmVk Lgo+ID4gPiBGb3IgQ09ORklHX1BHVEFCTEVfTEVWRUxTID09IDMsIG1vdmluZyBhdCB0aGUgUFVE IGxldmVsIGluIGVmZmVjdCBtb3Zlcwo+ID4gPiBQR0QgZW50cmllcywgc2luY2UgdGhlIFBVRCBl bnRyeSBpcyDigJxmb2xkZWQgYmFja+KAnSBvbnRvIHRoZSBQR0QgZW50cnkuCj4gPiA+IEFkZCBI QVZFX01PVkVfUFVEIHNvIHRoYXQgYXJjaGl0ZWN0dXJlcyB3aGVyZSBtb3ZpbmcgYXQgdGhlIFBV RCBsZXZlbAo+ID4gPiBpc24ndCBzdXBwb3J0ZWQvdGVzdGVkIGNhbiB0dXJuIHRoaXMgb2ZmIGJ5 IG5vdCBzZWxlY3RpbmcgdGhlIGNvbmZpZy4KPiA+ID4KPiA+ID4gU2lnbmVkLW9mZi1ieTogS2Fs ZXNoIFNpbmdoIDxrYWxlc2hzaW5naEBnb29nbGUuY29tPgo+ID4gPiAtLS0KPiA+ID4gIGFyY2gv S2NvbmZpZyAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsKPiA+ID4gIGFyY2gvYXJtNjQvaW5j bHVkZS9hc20vcGd0YWJsZS5oIHwgICAxICsKPiA+ID4gIG1tL21yZW1hcC5jICAgICAgICAgICAg ICAgICAgICAgIHwgMjExICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPiA+ID4gIDMg ZmlsZXMgY2hhbmdlZCwgMTg5IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQo+ID4gPgo+ ID4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9LY29uZmlnIGIvYXJjaC9LY29uZmlnCj4gPiA+IGluZGV4 IGFmMTRhNTY3YjQ5My4uNWVhYmFhMDBiZjliIDEwMDY0NAo+ID4gPiAtLS0gYS9hcmNoL0tjb25m aWcKPiA+ID4gKysrIGIvYXJjaC9LY29uZmlnCj4gPiA+IEBAIC02MDIsNiArNjAyLDEzIEBAIGNv bmZpZyBIQVZFX0lSUV9USU1FX0FDQ09VTlRJTkcKPiA+ID4gICAgICAgICBBcmNocyBuZWVkIHRv IGVuc3VyZSB0aGV5IHVzZSBhIGhpZ2ggZW5vdWdoIHJlc29sdXRpb24gY2xvY2sgdG8KPiA+ID4g ICAgICAgICBzdXBwb3J0IGlycSB0aW1lIGFjY291bnRpbmcgYW5kIHRoZW4gY2FsbCBlbmFibGVf c2NoZWRfY2xvY2tfaXJxdGltZSgpLgo+ID4gPgo+ID4gPiArY29uZmlnIEhBVkVfTU9WRV9QVUQK PiA+ID4gKyAgICAgYm9vbAo+ID4gPiArICAgICBoZWxwCj4gPiA+ICsgICAgICAgQXJjaGl0ZWN0 dXJlcyB0aGF0IHNlbGVjdCB0aGlzIGFyZSBhYmxlIHRvIG1vdmUgcGFnZSB0YWJsZXMgYXQgdGhl Cj4gPiA+ICsgICAgICAgUFVEIGxldmVsLiBJZiB0aGVyZSBhcmUgb25seSAzIHBhZ2UgdGFibGUg bGV2ZWxzLCB0aGUgbW92ZSBlZmZlY3RpdmVseQo+ID4gPiArICAgICAgIGhhcHBlbnMgYXQgdGhl IFBHRCBsZXZlbC4KPiA+ID4gKwo+ID4gPiAgY29uZmlnIEhBVkVfTU9WRV9QTUQKPiA+ID4gICAg ICAgYm9vbAo+ID4gPiAgICAgICBoZWxwCj4gPiA+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oCj4g PiA+IGluZGV4IGQ1ZDNmYmU3Mzk1My4uODg0ODEyNWUzMDI0IDEwMDY0NAo+ID4gPiAtLS0gYS9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaAo+ID4gPiArKysgYi9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL3BndGFibGUuaAo+ID4gPiBAQCAtNDE1LDYgKzQxNSw3IEBAIHN0YXRpYyBpbmxp bmUgcG1kX3QgcG1kX21rZGV2bWFwKHBtZF90IHBtZCkKPiA+ID4gICNkZWZpbmUgcGZuX3B1ZChw Zm4scHJvdCkgICAgX19wdWQoX19waHlzX3RvX3B1ZF92YWwoKHBoeXNfYWRkcl90KShwZm4pIDw8 IFBBR0VfU0hJRlQpIHwgcGdwcm90X3ZhbChwcm90KSkKPiA+ID4KPiA+ID4gICNkZWZpbmUgc2V0 X3BtZF9hdChtbSwgYWRkciwgcG1kcCwgcG1kKSAgICAgIHNldF9wdGVfYXQobW0sIGFkZHIsIChw dGVfdCAqKXBtZHAsIHBtZF9wdGUocG1kKSkKPiA+ID4gKyNkZWZpbmUgc2V0X3B1ZF9hdChtbSwg YWRkciwgcHVkcCwgcHVkKSAgICAgIHNldF9wdGVfYXQobW0sIGFkZHIsIChwdGVfdCAqKXB1ZHAs IHB1ZF9wdGUocHVkKSkKPiA+ID4KPiA+ID4gICNkZWZpbmUgX19wNGRfdG9fcGh5cyhwNGQpICAg X19wdGVfdG9fcGh5cyhwNGRfcHRlKHA0ZCkpCj4gPiA+ICAjZGVmaW5lIF9fcGh5c190b19wNGRf dmFsKHBoeXMpICAgICAgX19waHlzX3RvX3B0ZV92YWwocGh5cykKPiA+Cj4gPiBUaGlzIGRvZXNu J3QgYmVsb25nIHRvIHRoZSBwYXRjaC4KPiBHb29kIGNhdGNoLiBJJ2xsIG1vdmUgdGhpcyBpbnRv IGEgc2VwYXJhdGUgcGF0Y2guCj4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvbW0vbXJlbWFwLmMgYi9t bS9tcmVtYXAuYwo+ID4gPiBpbmRleCAxMzhhYmJhZTRmNzUuLmE1YTE0NDBiZDM2NiAxMDA2NDQK PiA+ID4gLS0tIGEvbW0vbXJlbWFwLmMKPiA+ID4gKysrIGIvbW0vbXJlbWFwLmMKPiA+ID4gQEAg LTI0OSwxNCArMjQ5LDE2NyBAQCBzdGF0aWMgYm9vbCBtb3ZlX25vcm1hbF9wbWQoc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsCj4gPiA+Cj4gPiA+ICAg ICAgIHJldHVybiB0cnVlOwo+ID4gPiAgfQo+ID4gPiArI2Vsc2UKPiA+ID4gK3N0YXRpYyBpbmxp bmUgYm9vbCBtb3ZlX25vcm1hbF9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2ln bmVkIGxvbmcgb2xkX2FkZHIsCj4gPiA+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5l d19hZGRyLCBwbWRfdCAqb2xkX3BtZCwgcG1kX3QgKm5ld19wbWQpCj4gPiA+ICt7Cj4gPiA+ICsg ICAgIHJldHVybiBmYWxzZTsKPiA+ID4gK30KPiA+ID4gICNlbmRpZgo+ID4gPgo+ID4gPiArI2lm ZGVmIENPTkZJR19IQVZFX01PVkVfUFVECj4gPiA+ICtzdGF0aWMgcHVkX3QgKmdldF9vbGRfcHVk KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIpCj4gPiA+ICt7Cj4gPiA+ ICsgICAgIHBnZF90ICpwZ2Q7Cj4gPiA+ICsgICAgIHA0ZF90ICpwNGQ7Cj4gPiA+ICsgICAgIHB1 ZF90ICpwdWQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAgcGdkID0gcGdkX29mZnNldChtbSwgYWRkcik7 Cj4gPiA+ICsgICAgIGlmIChwZ2Rfbm9uZV9vcl9jbGVhcl9iYWQocGdkKSkKPiA+ID4gKyAgICAg ICAgICAgICByZXR1cm4gTlVMTDsKPiA+ID4gKwo+ID4gPiArICAgICBwNGQgPSBwNGRfb2Zmc2V0 KHBnZCwgYWRkcik7Cj4gPiA+ICsgICAgIGlmIChwNGRfbm9uZV9vcl9jbGVhcl9iYWQocDRkKSkK PiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ID4gKwo+ID4gPiArICAgICBwdWQg PSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcik7Cj4gPiA+ICsgICAgIGlmIChwdWRfbm9uZV9vcl9jbGVh cl9iYWQocHVkKSkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ID4gKwo+ID4g PiArICAgICByZXR1cm4gcHVkOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgcHVkX3Qg KmFsbG9jX25ld19wdWQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRk cikKPiA+ID4gK3sKPiA+ID4gKyAgICAgcGdkX3QgKnBnZDsKPiA+ID4gKyAgICAgcDRkX3QgKnA0 ZDsKPiA+ID4gKyAgICAgcHVkX3QgKnB1ZDsKPiA+ID4gKwo+ID4gPiArICAgICBwZ2QgPSBwZ2Rf b2Zmc2V0KG1tLCBhZGRyKTsKPiA+ID4gKyAgICAgcDRkID0gcDRkX2FsbG9jKG1tLCBwZ2QsIGFk ZHIpOwo+ID4gPiArICAgICBpZiAoIXA0ZCkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gTlVM TDsKPiA+ID4gKyAgICAgcHVkID0gcHVkX2FsbG9jKG1tLCBwNGQsIGFkZHIpOwo+ID4gPiArICAg ICBpZiAoIXB1ZCkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ID4gKwo+ID4g PiArICAgICByZXR1cm4gcHVkOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgYm9vbCBt b3ZlX25vcm1hbF9wdWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcg b2xkX2FkZHIsCj4gPiA+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5ld19hZGRyLCBw dWRfdCAqb2xkX3B1ZCwgcHVkX3QgKm5ld19wdWQpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHNwaW5s b2NrX3QgKm9sZF9wdGwsICpuZXdfcHRsOwo+ID4gPiArICAgICBzdHJ1Y3QgbW1fc3RydWN0ICpt bSA9IHZtYS0+dm1fbW07Cj4gPiA+ICsgICAgIHB1ZF90IHB1ZDsKPiA+ID4gKwo+ID4gPiArICAg ICAvKgo+ID4gPiArICAgICAgKiBUaGUgZGVzdGluYXRpb24gcHVkIHNob3VsZG4ndCBiZSBlc3Rh Ymxpc2hlZCwgZnJlZV9wZ3RhYmxlcygpCj4gPiA+ICsgICAgICAqIHNob3VsZCBoYXZlIHJlbGVh c2VkIGl0Lgo+ID4gPiArICAgICAgKi8KPiA+ID4gKyAgICAgaWYgKFdBUk5fT05fT05DRSghcHVk X25vbmUoKm5ld19wdWQpKSkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ ICsKPiA+ID4gKyAgICAgLyoKPiA+ID4gKyAgICAgICogV2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBh Ym91dCB0aGUgb3JkZXJpbmcgb2Ygc3JjIGFuZCBkc3QKPiA+ID4gKyAgICAgICogcHRsb2NrcyBi ZWNhdXNlIGV4Y2x1c2l2ZSBtbWFwX2xvY2sgcHJldmVudHMgZGVhZGxvY2suCj4gPiA+ICsgICAg ICAqLwo+ID4gPiArICAgICBvbGRfcHRsID0gcHVkX2xvY2sodm1hLT52bV9tbSwgb2xkX3B1ZCk7 Cj4gPiA+ICsgICAgIG5ld19wdGwgPSBwdWRfbG9ja3B0cihtbSwgbmV3X3B1ZCk7Cj4gPiA+ICsg ICAgIGlmIChuZXdfcHRsICE9IG9sZF9wdGwpCj4gPiA+ICsgICAgICAgICAgICAgc3Bpbl9sb2Nr X25lc3RlZChuZXdfcHRsLCBTSU5HTEVfREVQVEhfTkVTVElORyk7Cj4gPiA+ICsKPiA+ID4gKyAg ICAgLyogQ2xlYXIgdGhlIHB1ZCAqLwo+ID4gPiArICAgICBwdWQgPSAqb2xkX3B1ZDsKPiA+ID4g KyAgICAgcHVkX2NsZWFyKG9sZF9wdWQpOwo+ID4gPiArCj4gPiA+ICsgICAgIFZNX0JVR19PTigh cHVkX25vbmUoKm5ld19wdWQpKTsKPiA+ID4gKwo+ID4gPiArICAgICAvKiBTZXQgdGhlIG5ldyBw dWQgKi8KPiA+ID4gKyAgICAgc2V0X3B1ZF9hdChtbSwgbmV3X2FkZHIsIG5ld19wdWQsIHB1ZCk7 Cj4gPiA+ICsgICAgIGZsdXNoX3RsYl9yYW5nZSh2bWEsIG9sZF9hZGRyLCBvbGRfYWRkciArIFBV RF9TSVpFKTsKPiA+ID4gKyAgICAgaWYgKG5ld19wdGwgIT0gb2xkX3B0bCkKPiA+ID4gKyAgICAg ICAgICAgICBzcGluX3VubG9jayhuZXdfcHRsKTsKPiA+ID4gKyAgICAgc3Bpbl91bmxvY2sob2xk X3B0bCk7Cj4gPiA+ICsKPiA+ID4gKyAgICAgcmV0dXJuIHRydWU7Cj4gPiA+ICt9Cj4gPiA+ICsj ZWxzZQo+ID4gPiArc3RhdGljIGlubGluZSBib29sIG1vdmVfbm9ybWFsX3B1ZChzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBvbGRfYWRkciwKPiA+ID4gKyAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbmV3X2FkZHIsIHB1ZF90ICpvbGRfcHVkLCBwdWRfdCAqbmV3 X3B1ZCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgcmV0dXJuIGZhbHNlOwo+ID4gPiArfQo+ID4gPiAr I2VuZGlmCj4gPiA+ICsKPiA+ID4gK2VudW0gcGd0X2VudHJ5IHsKPiA+ID4gKyAgICAgTk9STUFM X1BNRCwKPiA+ID4gKyAgICAgSFBBR0VfUE1ELAo+ID4gPiArICAgICBOT1JNQUxfUFVELAo+ID4g PiArfTsKPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAqIFJldHVybnMgYW4gZXh0ZW50IG9mIHRo ZSBjb3JyZXNwb25kaW5nIHNpemUgZm9yIHRoZSBwZ3RfZW50cnkgc3BlY2lmaWVkIGlmIHZhbGlk Lgo+ID4gPiArICogRWxzZSByZXR1cm5zIGEgc21hbGxlciBleHRlbnQgYm91bmRlZCBieSB0aGUg ZW5kIG9mIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uCj4gPiA+ICsgKiBwZ3RfZW50cnkuIFJl dHVybnMgMCBpZiBhbiBpbnZhbGlkIHBndF9lbnRyeSBpcyBzcGVjaWZpZWQuCj4gPiA+ICsgKi8K PiA+ID4gK3N0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9leHRlbnQoZW51bSBwZ3RfZW50cnkgZW50 cnksIHVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIG9sZF9lbmQsIHVuc2lnbmVkIGxvbmcgbmV3X2FkZHIpCj4gPiA+ICt7Cj4g PiA+ICsgICAgIHVuc2lnbmVkIGxvbmcgbmV4dCwgZXh0ZW50LCBtYXNrLCBzaXplOwo+ID4gPiAr Cj4gPiA+ICsgICAgIGlmIChlbnRyeSA9PSBOT1JNQUxfUE1EIHx8IGVudHJ5ID09IEhQQUdFX1BN RCkgewo+ID4gPiArICAgICAgICAgICAgIG1hc2sgPSBQTURfTUFTSzsKPiA+ID4gKyAgICAgICAg ICAgICBzaXplID0gUE1EX1NJWkU7Cj4gPiA+ICsgICAgIH0gZWxzZSBpZiAoZW50cnkgPT0gTk9S TUFMX1BVRCkgewo+ID4gPiArICAgICAgICAgICAgIG1hc2sgPSBQVURfTUFTSzsKPiA+ID4gKyAg ICAgICAgICAgICBzaXplID0gUFVEX1NJWkU7Cj4gPiA+ICsgICAgIH0gZWxzZQo+ID4gPiArICAg ICAgICAgICAgIHJldHVybiAwOwo+ID4gPiArCj4gPiA+ICsgICAgIG5leHQgPSAob2xkX2FkZHIg KyBzaXplKSAmIG1hc2s7Cj4gPiA+ICsgICAgIC8qIGV2ZW4gaWYgbmV4dCBvdmVyZmxvd2VkLCBl eHRlbnQgYmVsb3cgd2lsbCBiZSBvayAqLwo+ID4gPiArICAgICBleHRlbnQgPSAobmV4dCA+IG9s ZF9lbmQpID8gb2xkX2VuZCAtIG9sZF9hZGRyIDogbmV4dCAtIG9sZF9hZGRyOwo+ID4gPiArICAg ICBuZXh0ID0gKG5ld19hZGRyICsgc2l6ZSkgJiBtYXNrOwo+ID4gPiArICAgICBpZiAoZXh0ZW50 ID4gbmV4dCAtIG5ld19hZGRyKQo+ID4gPiArICAgICAgICAgICAgIGV4dGVudCA9IG5leHQgLSBu ZXdfYWRkcjsKPiA+ID4gKyAgICAgcmV0dXJuIGV4dGVudDsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArLyoKPiA+ID4gKyAqIEF0dGVtcHRzIHRvIHNwZWVkdXAgdGhlIG1vdmUgYnkgbW92aW5nIGVu dHJ5IGF0IHRoZSBsZXZlbCBjb3JyZXNwb25kaW5nIHRvCj4gPiA+ICsgKiBwZ3RfZW50cnkuIFJl dHVybnMgdHJ1ZSBpZiB0aGUgbW92ZSB3YXMgc3VjY2Vzc2Z1bCwgZWxzZSBmYWxzZS4KPiA+ID4g KyAqLwo+ID4gPiArc3RhdGljIGJvb2wgbW92ZV9wZ3RfZW50cnkoZW51bSBwZ3RfZW50cnkgZW50 cnksIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBvbGRfYWRkciwgdW5zaWduZWQgbG9uZyBuZXdfYWRkciwgdm9pZCAq b2xkX2VudHJ5LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgdm9pZCAqbmV3X2VudHJ5LCBi b29sIG5lZWRfcm1hcF9sb2NrcykKPiA+ID4gK3sKPiA+ID4gKyAgICAgYm9vbCBtb3ZlZCA9IGZh bHNlOwo+ID4gPiArCj4gPiA+ICsgICAgIC8qIFNlZSBjb21tZW50IGluIG1vdmVfcHRlcygpICov Cj4gPiA+ICsgICAgIGlmIChuZWVkX3JtYXBfbG9ja3MpCj4gPiA+ICsgICAgICAgICAgICAgdGFr ZV9ybWFwX2xvY2tzKHZtYSk7Cj4gPiA+ICsgICAgIGlmIChlbnRyeSA9PSBOT1JNQUxfUE1EKQo+ ID4gPiArICAgICAgICAgICAgIG1vdmVkID0gIG1vdmVfbm9ybWFsX3BtZCh2bWEsIG9sZF9hZGRy LCBuZXdfYWRkciwgb2xkX2VudHJ5LCBuZXdfZW50cnkpOwo+ID4gPiArICAgICBlbHNlIGlmIChl bnRyeSA9PSBOT1JNQUxfUFVEKQo+ID4gPiArICAgICAgICAgICAgIG1vdmVkID0gIG1vdmVfbm9y bWFsX3B1ZCh2bWEsIG9sZF9hZGRyLCBuZXdfYWRkciwgb2xkX2VudHJ5LCBuZXdfZW50cnkpOwo+ ID4gPiArICAgICBlbHNlIGlmIChlbnRyeSA9PSBIUEFHRV9QTUQpCj4gPiA+ICsgICAgICAgICAg ICAgbW92ZWQgPSAgbW92ZV9odWdlX3BtZCh2bWEsIG9sZF9hZGRyLCBuZXdfYWRkciwgb2xkX2Vu dHJ5LCBuZXdfZW50cnkpOwo+ID4gPiArICAgICBlbHNlCj4gPiA+ICsgICAgICAgICAgICAgV0FS Tl9PTl9PTkNFKDEpOwo+ID4KPiA+IEJVSUxEX0JVRygpIHNob3VsZCB3b3JrLgpQbGVhc2UgaWdu b3JlIHRoZSBwcmV2aW91cyBjb21tZW50LiBZb3UgYXJlIHJpZ2h0LCBCVUlMRF9CVUcoKSB3b3Vs ZCB3b3JrLgo+IFRoaXMgZG9lc24ndCBnZXQgY2F1Z2h0IGF0IGNvbXBpbGUgdGltZSBzaW5jZSBl bnRyeSBpc24ndCBhIGNvbnN0YW50Lgo+ID4KPiA+IEFuZCB3aHkgbm90IHVzZSBzd2l0Y2goKSBp bnN0ZWFkIG9mIGlmcy4KPiBJJ2xsIG1vdmUgdG8gc3dpdGNoKCkgaW4gdGhlIG5leHQgdmVyc2lv bi4KPiBUaGFua3MsIEthbGVzaAo+ID4KPiA+ID4gKyAgICAgaWYgKG5lZWRfcm1hcF9sb2NrcykK PiA+ID4gKyAgICAgICAgICAgICBkcm9wX3JtYXBfbG9ja3Modm1hKTsKPiA+ID4gKwo+ID4gPiAr ICAgICByZXR1cm4gbW92ZWQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gIHVuc2lnbmVkIGxvbmcg bW92ZV9wYWdlX3RhYmxlcyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPiA+ID4gICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIG9sZF9hZGRyLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKm5l d192bWEsCj4gPiA+ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXdfYWRkciwgdW5zaWdu ZWQgbG9uZyBsZW4sCj4gPiA+ICAgICAgICAgICAgICAgYm9vbCBuZWVkX3JtYXBfbG9ja3MpCj4g PiA+ICB7Cj4gPiA+IC0gICAgIHVuc2lnbmVkIGxvbmcgZXh0ZW50LCBuZXh0LCBvbGRfZW5kOwo+ ID4gPiArICAgICB1bnNpZ25lZCBsb25nIGV4dGVudCwgb2xkX2VuZDsKPiA+ID4gICAgICAgc3Ry dWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsKPiA+ID4gICAgICAgcG1kX3QgKm9sZF9wbWQs ICpuZXdfcG1kOwo+ID4gPgo+ID4gPiBAQCAtMjY5LDE0ICs0MjIsMjcgQEAgdW5zaWduZWQgbG9u ZyBtb3ZlX3BhZ2VfdGFibGVzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+ID4gPgo+ID4g PiAgICAgICBmb3IgKDsgb2xkX2FkZHIgPCBvbGRfZW5kOyBvbGRfYWRkciArPSBleHRlbnQsIG5l d19hZGRyICs9IGV4dGVudCkgewo+ID4gPiAgICAgICAgICAgICAgIGNvbmRfcmVzY2hlZCgpOwo+ ID4gPiAtICAgICAgICAgICAgIG5leHQgPSAob2xkX2FkZHIgKyBQTURfU0laRSkgJiBQTURfTUFT SzsKPiA+ID4gLSAgICAgICAgICAgICAvKiBldmVuIGlmIG5leHQgb3ZlcmZsb3dlZCwgZXh0ZW50 IGJlbG93IHdpbGwgYmUgb2sgKi8KPiA+ID4gLSAgICAgICAgICAgICBleHRlbnQgPSBuZXh0IC0g b2xkX2FkZHI7Cj4gPiA+IC0gICAgICAgICAgICAgaWYgKGV4dGVudCA+IG9sZF9lbmQgLSBvbGRf YWRkcikKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIGV4dGVudCA9IG9sZF9lbmQgLSBvbGRf YWRkcjsKPiA+ID4gLSAgICAgICAgICAgICBuZXh0ID0gKG5ld19hZGRyICsgUE1EX1NJWkUpICYg UE1EX01BU0s7Cj4gPiA+IC0gICAgICAgICAgICAgaWYgKGV4dGVudCA+IG5leHQgLSBuZXdfYWRk cikKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIGV4dGVudCA9IG5leHQgLSBuZXdfYWRkcjsK PiA+ID4gKyNpZmRlZiBDT05GSUdfSEFWRV9NT1ZFX1BVRAo+ID4gPiArICAgICAgICAgICAgIC8q Cj4gPiA+ICsgICAgICAgICAgICAgICogSWYgZXh0ZW50IGlzIFBVRC1zaXplZCB0cnkgdG8gc3Bl ZWQgdXAgdGhlIG1vdmUgYnkgbW92aW5nIGF0IHRoZQo+ID4gPiArICAgICAgICAgICAgICAqIFBV RCBsZXZlbCBpZiBwb3NzaWJsZS4KPiA+ID4gKyAgICAgICAgICAgICAgKi8KPiA+ID4gKyAgICAg ICAgICAgICBleHRlbnQgPSBnZXRfZXh0ZW50KE5PUk1BTF9QVUQsIG9sZF9hZGRyLCBvbGRfZW5k LCBuZXdfYWRkcik7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKGV4dGVudCA9PSBQVURfU0laRSkg ewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcHVkX3QgKm9sZF9wdWQsICpuZXdfcHVkOwo+ ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBvbGRfcHVkID0gZ2V0X29sZF9wdWQo dm1hLT52bV9tbSwgb2xkX2FkZHIpOwo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFv bGRfcHVkKQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIG5ld19wdWQgPSBhbGxvY19uZXdfcHVkKHZtYS0+dm1f bW0sIHZtYSwgbmV3X2FkZHIpOwo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXdf cHVkKQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgIGlmIChtb3ZlX3BndF9lbnRyeShOT1JNQUxfUFVELCB2bWEsIG9s ZF9hZGRyLCBuZXdfYWRkciwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvbGRfcHVkLCBuZXdfcHVkLCBuZWVkX3JtYXBfbG9ja3MpKQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gKyAgICAgICAgICAgICB9Cj4g PiA+ICsjZW5kaWYKPiA+ID4gKyAgICAgICAgICAgICBleHRlbnQgPSBnZXRfZXh0ZW50KE5PUk1B TF9QTUQsIG9sZF9hZGRyLCBvbGRfZW5kLCBuZXdfYWRkcik7Cj4gPiA+ICAgICAgICAgICAgICAg b2xkX3BtZCA9IGdldF9vbGRfcG1kKHZtYS0+dm1fbW0sIG9sZF9hZGRyKTsKPiA+ID4gICAgICAg ICAgICAgICBpZiAoIW9sZF9wbWQpCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPiA+ID4gQEAgLTI4NCwxOCArNDUwLDEwIEBAIHVuc2lnbmVkIGxvbmcgbW92ZV9wYWdlX3Rh YmxlcyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPiA+ID4gICAgICAgICAgICAgICBpZiAo IW5ld19wbWQpCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ID4gICAgICAg ICAgICAgICBpZiAoaXNfc3dhcF9wbWQoKm9sZF9wbWQpIHx8IHBtZF90cmFuc19odWdlKCpvbGRf cG1kKSB8fCBwbWRfZGV2bWFwKCpvbGRfcG1kKSkgewo+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgaWYgKGV4dGVudCA9PSBIUEFHRV9QTURfU0laRSkgewo+ID4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIG1vdmVkOwo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBTZWUgY29tbWVudCBpbiBtb3ZlX3B0ZXMoKSAqLwo+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAobmVlZF9ybWFwX2xvY2tzKQo+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vfcm1hcF9sb2Nrcyh2bWEpOwo+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlZCA9IG1vdmVfaHVnZV9wbWQodm1hLCBvbGRf YWRkciwgbmV3X2FkZHIsCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvbGRfcG1kLCBuZXdfcG1kKTsKPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKG5lZWRfcm1hcF9sb2NrcykKPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkcm9wX3JtYXBfbG9ja3Modm1hKTsKPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vdmVkKQo+ID4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgfQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dGVudCA9PSBIUEFHRV9QTURf U0laRSAmJgo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfcGd0X2VudHJ5KEhQ QUdFX1BNRCwgdm1hLCBvbGRfYWRkciwgbmV3X2FkZHIsIG9sZF9wbWQsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3BtZCwgbmVlZF9ybWFwX2xvY2tz KSkKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICBzcGxpdF9odWdlX3BtZCh2bWEsIG9sZF9wbWQsIG9sZF9hZGRy KTsKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgIGlmIChwbWRfdHJhbnNfdW5zdGFibGUob2xk X3BtZCkpCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4g PiBAQCAtMzA1LDE1ICs0NjMsOCBAQCB1bnNpZ25lZCBsb25nIG1vdmVfcGFnZV90YWJsZXMoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgKiBJ ZiB0aGUgZXh0ZW50IGlzIFBNRC1zaXplZCwgdHJ5IHRvIHNwZWVkIHRoZSBtb3ZlIGJ5Cj4gPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgKiBtb3ZpbmcgYXQgdGhlIFBNRCBsZXZlbCBpZiBwb3Nz aWJsZS4KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAqLwo+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgYm9vbCBtb3ZlZDsKPiA+ID4gLQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAg aWYgKG5lZWRfcm1hcF9sb2NrcykKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFrZV9ybWFwX2xvY2tzKHZtYSk7Cj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBtb3ZlZCA9 IG1vdmVfbm9ybWFsX3BtZCh2bWEsIG9sZF9hZGRyLCBuZXdfYWRkciwKPiA+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9wbWQsIG5ld19wbWQpOwo+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZWRfcm1hcF9sb2NrcykKPiA+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9ybWFwX2xvY2tzKHZtYSk7Cj4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICBpZiAobW92ZWQpCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICBpZiAobW92ZV9wZ3RfZW50cnkoTk9STUFMX1BNRCwgdm1hLCBvbGRfYWRkciwgbmV3X2FkZHIs IG9sZF9wbWQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmV3X3BtZCwgbmVlZF9ybWFwX2xvY2tzKSkKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7Cj4gPiA+ICAjZW5kaWYKPiA+ID4gICAgICAgICAgICAgICB9Cj4gPiA+ IC0tCj4gPiA+IDIuMjguMC43MDkuZ2IwODE2YjZlYjAtZ29vZwo+ID4gPgo+ID4KPiA+IC0tCj4g PiAgS2lyaWxsIEEuIFNodXRlbW92Cj4gPgo+ID4gLS0KPiA+IFRvIHVuc3Vic2NyaWJlIGZyb20g dGhpcyBncm91cCBhbmQgc3RvcCByZWNlaXZpbmcgZW1haWxzIGZyb20gaXQsIHNlbmQgYW4gZW1h aWwgdG8ga2VybmVsLXRlYW0rdW5zdWJzY3JpYmVAYW5kcm9pZC5jb20uCj4gPgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=