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 20A4AC77B7A for ; Mon, 17 Apr 2023 15:39:07 +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:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=j9AV+VRL4DNdmjZJC8HtYxUWjwY5eLKkROYcP/5N5Yk=; b=h+8pPRTMMIm2iL 3ijk8QFZDMcwKICF37qwzNpzLThM3381F8kpRPUe7nhCw1/ghyN7V5sFzwSkZPBJ8TZOFWXLGHVaU ovMpLhv9bkX0lkVeHAI387YIhi2J6QFDsblI5WQmH/s4A1kGIONDM70zrlmiV10824PbSCdYesYrw 00mmgLaeXpzE3HrUsI7QkhOAuNnOsrxI35x8BVUKj8q2q11gYBdq7wRmjkj5ORbg6r05sgX2kLrot a3St4z4Ljvfx9fTHpjskHO4o19VrV59ij4HaTklTk4OP7hHhi3AAWAvlE9m4Eq+VYz7VY+VRGtfvN JFrfNtLMWF5aLsVK8+cQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1poQvn-00Gv9F-0j; Mon, 17 Apr 2023 15:38:15 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1poQvi-00Gv7F-0Q for linux-arm-kernel@lists.infradead.org; Mon, 17 Apr 2023 15:38:13 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7BDBF1691; Mon, 17 Apr 2023 08:38:52 -0700 (PDT) Received: from [10.57.68.227] (unknown [10.57.68.227]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C756B3F6C4; Mon, 17 Apr 2023 08:38:07 -0700 (PDT) Message-ID: Date: Mon, 17 Apr 2023 16:38:06 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [RFC v2 PATCH 00/17] variable-order, large folios for anonymous memory Content-Language: en-US To: David Hildenbrand , Andrew Morton , "Matthew Wilcox (Oracle)" , Yu Zhao , "Yin, Fengwei" Cc: linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org References: <20230414130303.2345383-1-ryan.roberts@arm.com> <13969045-4e47-ae5d-73f4-dad40fe631be@arm.com> <568b5b73-f0e9-c385-f628-93e45825fb7b@redhat.com> From: Ryan Roberts In-Reply-To: <568b5b73-f0e9-c385-f628-93e45825fb7b@redhat.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230417_083810_264854_9DACB1EB X-CRM114-Status: GOOD ( 55.10 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMTcvMDQvMjAyMyAxNTowNSwgRGF2aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4gWy4uLl0KPiAK Pj4+IEp1c3QgYSBub3RlICh0aGF0IHlvdSBtYXliZSBhbHJlYWR5IGtub3cpIHRoYXQgd2UgaGF2 ZSB0byBiZSBhIGJpdCBjYXJlZnVsIGluCj4+PiB0aGUgd3BfY29weSBwYXRoIHdpdGggcmVwbGFj aW5nIHN1Yi1wYWdlcyB0aGF0IGFyZSBtYXJrZWQgZXhjbHVzaXZlLgo+Pgo+PiBBaGgsIG5vIEkg d2Fzbid0IGF3YXJlIG9mIHRoaXMgLSB0aGFua3MgZm9yIHRha2luZyB0aGUgdGltZSB0byBleHBs YWluIGl0LiBJCj4+IHRoaW5rIEkgaGF2ZSBhIGJ1Zy4KPj4KPj4gKEknbSBndWVzc2luZyB0aGUg R1VQIGZhc3QgcGF0aCBhc3N1bWVzIHRoYXQgaWYgaXQgc2VlcyBhbiBleGNsdXNpdmUgcGFnZSB0 aGVuCj4+IHRoYXQgcGFnZSBjYW4ndCBnbyBhd2F5PyBBbmQgaWYgSSB0aGVuIHdwX2NvcHkgaXQs IEknbSBicmVha2luZyB0aGUgYXNzdW1wdGlvbj8KPj4gQnV0IHN1cmVseSB1c2VyIHNwYWNlIGNh biBtdW5tYXAgaXQgYXQgYW55IHRpbWUgYW5kIHRoZSBjb25zZXF1ZW5jZXMgYXJlCj4+IHNpbWls YXI/IEl0J3MgcHJvYmFibHkgY2xlYXIgdGhhdCBJIGRvbid0IGtub3cgbXVjaCBhYm91dCB0aGUg R1VQIGltcGxlbWVudGF0aW9uCj4+IGRldGFpbHMuLi4pCj4gCj4gSWYgR1VQIGZpbmRzIGEgcmVh ZC1vbmx5IFBURSBwb2ludGluZyBhdCBhbiBleGNsdXNpdmUgc3VicGFnZSwgaXQgYXNzdW1lcyB0 aGF0Cj4gdGhpcyBwYWdlIGNhbm5vdCByYW5kb21seSBiZSByZXBsYWNlZCBieSBjb3JlIE1NIGR1 ZSB0byBDT1cuIFNlZQo+IGd1cF9tdXN0X3Vuc2hhcmUoKS4gU28gaXQgY2FuIGdvIGFoZWFkIGFu ZCBwaW4gdGhlIHBhZ2UuIEFzIGxvbmcgYXMgdXNlciBzcGFjZQo+IGRvZXNuJ3QgZG8gc29tZXRo aW5nIHN0dXBpZCB3aXRoIHRoZSBtYXBwaW5nIChNQURWX0RPTlRORUVELCBtdW5tYXAoKSkgdGhl Cj4gcGlubmVkIHBhZ2UgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBtYXBwZWQgcGFnZS4KPiAKPiBJ ZiBHVVAgZmluZHMgYSB3cml0ZWFibGUgUFRFLCBpdCBhc3N1bWVzIHRoYXQgdGhpcyBwYWdlIGNh bm5vdCByYW5kb21seSBiZQo+IHJlcGxhY2VkIGJ5IGNvcmUgTU0gZHVlIHRvIENPVyAtLSBiZWNh dXNlIHdyaXRhYmxlIGltcGxpZXMgZXhjbHVzaXZlLiBTZWUsIGZvcgo+IGV4YW1wbGUgdGhlIFZN X0JVR19PTl9QQUdFKCkgaW4gZm9sbG93X3BhZ2VfcHRlKCkuIFNvLCBzaW1pbGFybHksIEdVUCBj YW4gc2ltcGx5Cj4gZ28gYWhlYWQgYW5kIHBpbiB0aGUgcGFnZS4KPiAKPiBHVVAtZmFzdCBydW5z IGxvY2tsZXNzLCBub3QgZXZlbiB0YWtpbmcgdGhlIFBUIGxvY2tzLiBJdCBzeW5jcyBhZ2FpbnN0 Cj4gY29uY3VycmVudCBmb3JrKCkgdXNpbmcgYSBzcGVjaWFsIHNlcWxvY2ssIGFuZCBlc3NlbnRp YWxseSB1bnBpbnMgd2hhdGV2ZXIgaXQKPiB0ZW1wb3JhcmlseSBwaW5uZWQgd2hlbiBpdCBkZXRl Y3RzIHRoYXQgZm9yaygpIHdhcyBydW5uaW5nIGNvbmN1cnJlbnRseS4gQnV0IGl0Cj4gbWlnaHQg cmVzdWx0IGluIHNvbWUgcGFnZXMgdGVtcG9yYXJpbHkgYmVpbmcgZmxhZ2dlZCBhcyAibWF5YmUg cGlubmVkIi4KPiAKPiBJbiBvdGhlciBjYXNlcyAoIWZvcmsoKSksIEdVUC1mYXN0IHN5bmNocm9u aXplcyBhZ2FpbnN0IGNvbmN1cnJlbnQgc2hhcmluZyAoS1NNKQo+IG9yIHVubWFwcGluZyAobWln cmF0aW9uLCBzd2Fwb3V0KSB0aGF0IGltcGxpZXMgY2xlYXJpbmcgb2YgdGhlIFBHX2Fub25fZmxh ZyBvZgo+IHRoZSBzdWJwYWdlIGJ5IGZpcnN0IHVubWFwcGluZyB0aGUgUFRFIGFuZCBjb25kaXRp b25hbGx5IHJlbWFwcGluZyBpdC4gU2VlCj4gbW0va3NtLmM6d3JpdGVfcHJvdGVjdF9wYWdlKCkg YXMgYW4gZXhhbXBsZSBmb3IgdGhlIHNoYXJpbmcgc2lkZSAoZXNwZWNpYWxseTogaWYKPiBwYWdl X3RyeV9zaGFyZV9hbm9uX3JtYXAoKSBmYWlscyBiZWNhdXNlIHRoZSBwYWdlIG1heSBiZSBwaW5u ZWQpLgo+IAo+IExvbmcgc3Rvcnkgc2hvcnQ6IHJlcGxhY2luZyBhIHItbyAibWF5YmUgc2hhcmVk IiAoIWV4Y2x1c2l2ZSkgUFRFIGlzIGVhc3kuCj4gUmVwbGFjaW5nIGFuIGV4Y2x1c2l2ZSBQVEUg KGluY2x1ZGluZyB3cml0YWJsZSBQVEVzKSByZXF1aXJlcyBzb21lIHdvcmsgdG8gc3luYwo+IHdp dGggR1VQLWZhc3QgYW5kIGdvZXMgcmF0aGVyIGluIHRoZSAibWF5YmUganVzdCBkb24ndCBib3Ro ZXIiIHRlcnJpcm90eS4KClllcCBhZ3JlZWQuIEknbGwgcGxhbiB0byBmaXggdGhpcyBieSBhZGRp bmcgdGhlIGNvbnN0cmFpbnQgdGhhdCBhbGwgcGFnZXMgb2YgdGhlCmNvcHkgcmFuZ2UgKGNhbGNf YW5vbl9mb2xpb19vcmRlcl9jb3B5KCkpIG11c3QgYmUgIm1heWJlIHNoYXJlZCIuCgo+IAo+Pgo+ PiBNeSBjdXJyZW50IHBhdGNoIGFsd2F5cyBwcmVmZXJzIHJldXNlIG92ZXIgY29weSwgYW5kIGV4 cGFuZHMgdGhlIHNpemUgb2YgdGhlCj4+IHJldXNlIHRvIHRoZSBiaWdnZXN0IHNldCBvZiBwYWdl cyB0aGF0IGFyZSBhbGwgZXhjbHVzaXZlIChkZXRlcm1pbmVkIGVpdGhlciBieQo+PiB0aGUgcHJl c2VuY2Ugb2YgdGhlIGFub25fZXhjbHVzaXZlIGZsYWcgb3IgZnJvbSB0aGUgcmVmY291bnQpLCBh bmQgY292ZXJlZCBieQo+PiB0aGUgc2FtZSBmb2xpbyAoYW5kIGEgZmV3IG90aGVyIGJvdW5kcyBj b25zdHJhaW50cyAtIHNlZQo+PiBjYWxjX2Fub25fZm9saW9fcmFuZ2VfcmV1c2UoKSkuCj4+Cj4+ IElmIEkgZGV0ZXJtaW5lIEkgbXVzdCBjb3B5IChiZWNhdXNlIHRoZSAiYW5jaG9yIiBwYWdlIGlz IG5vdCBleGNsdXNpdmUpLCB0aGVuIEkKPj4gZGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSBjb3B5 IHJlZ2lvbiBiYXNlZCBvbiBhIGZldyBjb25zdHJhaW50cyAoc2VlCj4+IGNhbGNfYW5vbl9mb2xp b19vcmRlcl9jb3B5KCkpLiBCdXQgSSB0aGluayB5b3UgYXJlIHNheWluZyB0aGF0IG5vIHBhZ2Vz IGluIHRoYXQKPj4gcmVnaW9uIGFyZSBhbGxvd2VkIHRvIGhhdmUgdGhlIGFub25fZXhjbHVzaXZl IGZsYWcgc2V0PyBJbiB3aGljaCBjYXNlLCB0aGlzCj4+IGNvdWxkIGJlIGZpeGVkIGJ5IGFkZGlu ZyB0aGF0IGNoZWNrIGluIHRoZSBmdW5jdGlvbi4KPiAKPiBZZXMsIGNoYW5naW5nIGEgUFRFIHRo YXQgcG9pbnRzIGF0IGFuIGFub255bW91cyBzdWJwYWdlIHRoYXQgaGFzIHRoZSAiZXhjbHVzaXZl Igo+IGZsYWcgc2V0IHJlcXVpcmVzIG1vcmUgY2FyZS4KPiAKPj4KPj4+Cj4+PiBDdXJyZW50bHks IHdlIGFsd2F5cyBvbmx5IHJlcGxhY2UgYSBzaW5nbGUgc2hhcmVkIGFub24gKHN1YilwYWdlIGJ5 IGEgZnJlc2gKPj4+IGV4Y2x1c2l2ZSBiYXNlLXBhZ2UgZHVyaW5nIGEgd3JpdGUtZmF1bHQvdW5z aGFyaW5nLiBBcyB0aGUgc3ViLXBhZ2UgaXMgYWxyZWFkeQo+Pj4gbWFya2VkICJtYXliZSBzaGFy ZWQiLCBpdCBjYW5ub3QgZ2V0IHBpbm5lZCBjb25jdXJyZW50bHkgYW5kIGV2ZXJ5Ym9keSBpcyBo YXBweS4KPj4KPj4gV2hlbiB5b3Ugc2F5LCAibWF5YmUgc2hhcmVkIiBpcyB0aGF0IGRldGVybWlu ZWQgYnkgdGhlIGFic2VuY2Ugb2YgdGhlCj4+ICJleGNsdXNpdmUiIGZsYWc/Cj4gCj4gWWVzLiBT ZW1hbnRpY3Mgb2YgUEdfYW5vbl9leGNsdXNpdmUgYXJlICJleGNsdXNpdmUiIHZzLiAibWF5YmUg c2hhcmVkIi4gT25jZQo+ICJtYXliZSBzaGFyZWQiLCB3ZSBtdXN0IG9ubHkgZ28gYmFjayB0byAi ZXhjbHVzaXZlIChzZXQgdGhlIGZsYWcpIGlmIHdlIGFyZSBzdXJlCj4gdGhhdCB0aGVyZSBhcmUg bm8gb3RoZXIgcmVmZXJlbmNlcyB0byB0aGUgcGFnZS4KPiAKPj4KPj4+Cj4+PiBJZiB5b3Ugbm93 IGRlY2lkZSB0byByZXBsYWNlIG1vcmUgc3VicGFnZXMsIHlvdSBoYXZlIHRvIGJlIGNhcmVmdWwg dGhhdCBub25lIG9mCj4+PiB0aGVtIGFyZSBzdGlsbCBleGNsdXNpdmUgLS0gYmVjYXVzZSB0aGV5 IGNvdWxkIGdldCBwaW5uZWQgY29uY3VycmVudGx5IGFuZAo+Pj4gcmVwbGFjaW5nIHRoZW0gd291 bGQgcmVzdWx0IGluIG1lbW9yeSBjb3JydXB0aW9ucy4KPj4+Cj4+PiBUaGVyZSBhcmUgc2NlbmFy aW9zIChtb3N0IHByb21pbmVudGx5OiBNQURWX1dJUEVPTkZPUkspLCBidXQgYWxzbyBmYWlsZWQg cGFydGlhbAo+Pj4gZm9yaygpIHRoYXQgY291bGQgcmVzdWx0IGluIHNvbWV0aGluZyBsaWtlIHRo YXQuCj4+Cj4+IEFyZSB0aGVyZSBhbnkgdGVzdCBjYXNlcyB0aGF0IHN0cmVzcyB0aGUga2VybmVs IGluIHRoaXMgYXJlYSB0aGF0IEkgY291bGQgdXNlIHRvCj4+IHZhbGlkYXRlIG15IGZpeD8KPiAK PiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb3cuYyBkb2VzIGV4Y2Vzc2l2ZSB0ZXN0cyAo aW5jbHVkaW5nIHNvbWUKPiBNQURWX0RPTlRGT1JLIC0tIHRoYXQncyB3aGF0IEkgYWN0dWFsbHkg bWVhbnQgLS3CoCBhbmQgcGFydGlhbCBtcmVtYXAgdGVzdHMpLCBidXQKPiBtb3N0bHkgZm9jdXNl cyBvbiBvcmRpbmFyeSBiYXNlIHBhZ2VzIChvcmRlci0wKSwgVEhQLCBhbmQgaHVnZXRsYi4KPiAK PiBXZSBkb24ndCBoYXZlIGFueSAiR1VQLWZhc3QgcmFjaW5nIHdpdGggZm9yaygpIiB0ZXN0cyBv ciBzaW1pbGFyIHlldCAodGVzdHMgdGhhdAo+IHJlbHkgb24gcmFjZXMgYXJlIG5vdCBhIGdvb2Qg Y2FuZGlkYXRlIGZvciBzZWxmdGVzdHMpLgo+IAo+IFdlIG1pZ2h0IHdhbnQgdG8gZXh0ZW5kIHRv b2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2Nvdy5jIHRvIHRlc3QgZm9yIHNvbWUgb2YgdGhlCj4g Y2FzZXMgeW91IGV4dGVuZC4KPiAKPiBXZSBtYXkgYWxzbyBjaGFuZ2UgdGhlIGRldGVjdGlvbiBv ZiBUSFAgKEkgdGhpbmssIGJ5IGx1Y2ssIGl0IHdvdWxkIGN1cnJlbnRseQo+IGFsc28gdGVzdCB5 b3VyIHBhdGNoZXMgdG8gc29tZSBkZWdyZWUgc2V0IHRoZSB3YXkgaXQgdGVzdHMgZm9yIFRIUCkK PiAKPiBpZiAoIXBhZ2VtYXBfaXNfcG9wdWxhdGVkKHBhZ2VtYXBfZmQsIG1lbSArIHBhZ2VzaXpl KSkgewo+IMKgwqDCoMKga3NmdF90ZXN0X3Jlc3VsdF9za2lwKCJEaWQgbm90IGdldCBhIFRIUCBw b3B1bGF0ZWRcbiIpOwo+IMKgwqDCoMKgZ290byBtdW5tYXA7Cj4gfQo+IAo+IFdvdWxkIGhhdmUg dG8gYmUsIGZvciBleGFtcGxlLAo+IAo+IGlmICghcGFnZW1hcF9pc19wb3B1bGF0ZWQocGFnZW1h cF9mZCwgbWVtICsgdGhwc2l6ZSAtIHBhZ2VzaXplKSkgewo+IMKgwqDCoMKga3NmdF90ZXN0X3Jl c3VsdF9za2lwKCJEaWQgbm90IGdldCBhIFRIUCBwb3B1bGF0ZWRcbiIpOwo+IMKgwqDCoMKgZ290 byBtdW5tYXA7Cj4gfQo+IAo+IEJlY2F1c2Ugd2UgdG91Y2ggdGhlIGZpcnN0IFBURSBpbiBhIFBN RCBhbmQgd2FudCB0byB0ZXN0IGlmIGNvcmUtbW0gZ2F2ZSB1cyBhCj4gZnVsbCBUSFAgKGxhc3Qg UFRFIGFsc28gcG9wdWxhdGVkKS4KPiAKPiAKPiBFeHRlbmRpbmcgdGhlIHRlc3RzIHRvIGNvdmVy IG90aGVyIGFub24gVEhQIHNpemVzIGNvdWxkIHdvcmsgYnkgYWxpZ25pbmcgYSBWTUEKPiB0byBU SFAvMiBzaXplIChzbyB3ZSdyZSBzdXJlIHdlIGRvbid0IGdldCBhIGZ1bGwgVEhQKSwgYW5kIHRo ZW4gdGVzdGluZyBpZiB3ZQo+IGdldCBtb3JlIFBURXMgcG9wdWxhdGVkIC0+IHlvdXIgY29kZSBh Y3RpdmUuCgpUaGFua3MuIEknbGwgcnVuIGFsbCB0aGVzZSBhbmQgbWFrZSBzdXJlIHRoZXkgcGFz cyBhbmQgbG9vayBhdCBhZGRpbmcgbmV3CnZhcmlhbnRzIGZvciB0aGUgbmV4dCByZXYuCgo+IAo+ Pgo+Pj4KPj4+IEZ1cnRoZXIsIHdlIGhhdmUgdG8gYmUgYSBiaXQgY2FyZWZ1bCByZWdhcmRpbmcg cmVwbGFjaW5nIHJhbmdlcyB0aGF0IGFyZSBiYWNrZWQKPj4+IGJ5IGRpZmZlcmVudCBhbm9uIHBh Z2VzIChmb3IgZXhhbXBsZSwgZHVlIHRvIGZvcmsoKSBkZWNpZGluZyB0byBjb3B5IHNvbWUKPj4+ IHN1Yi1wYWdlcyBvZiBhIFBURS1tYXBwZWQgZm9saW8gaW5zdGVhZCBvZiBzaGFyaW5nIGFsbCBz dWItcGFnZXMpLgo+Pgo+PiBJIGRvbid0IHVuZGVyc3RhbmQgdGhpcyBzdGF0ZW1lbnQ7IGRvIHlv dSBtZWFuICJkaWZmZXJlbnQgYW5vbiBfZm9saW9zXyI/IEkgYW0KPj4gc2Nhbm5pbmcgdGhlIHBh Z2UgdGFibGUgdG8gZXhwYW5kIHRoZSByZWdpb24gdGhhdCBJIHJldXNlL2NvcHkgYW5kIGFzIHBh cnQgb2YKPj4gdGhhdCBzY2FuLCBtYWtlIHN1cmUgdGhhdCBJIG9ubHkgY292ZXIgYSBzaW5nbGUg Zm9saW8uIFNvIEkgdGhpbmsgSSBjb25mb3JtIGhlcmUKPj4gLSB0aGUgc2NhbiB3b3VsZCBnaXZl IHVwIG9uY2UgaXQgZ2V0cyB0byB0aGUgaG9sZS4KPiAKPiBEdXJpbmcgZm9yaygpLCB3aGF0IGNv dWxkIGhhcHBlbiAodGVtcG9yYXJ5IGRldGVjdGlvbiBvZiBwaW5uZWQgcGFnZSByZXN1bHRpbmcK PiBpbiBhIGNvcHkpIGlzIHNvbWV0aGluZyB3ZWlyZCBsaWtlOgo+IAo+IFBURSAwOiBzdWJwYWdl MCBvZiBhbm9uIHBhZ2UgIzEgKG1heWJlIHNoYXJlZCkKPiBQVEUgMTogc3VicGFnZTEgb2YgYW5v biBwYWdlICMxIChtYXliZSBzaGFyZWQKPiBQVEUgMjogYW5vbiBwYWdlICMyIChleGNsdXNpdmUp Cj4gUFRFIDM6IHN1YnBhZ2UyIG9mIGFub24gcGFnZSAjMSAobWF5YmUgc2hhcmVkCgpIbW0uLi4g SSBjYW4gc2VlIGhvdyB0aGlzIGNvdWxkIGhhcHBlbiBpZiB5b3UgbXJlbWFwIFBURTIgdG8gUFRF MywgdGhlbiBtbWFwCnNvbWV0aGluZyBuZXcgaW4gUFRFMi4gQnV0IEkgZG9uJ3Qgc2VlIGhvdyBp dCBoYXBwZW5zIGF0IGZvcmsuIEZvciBQVEUzLCBkaWQgeW91Cm1lYW4gc3VicGFnZSBfM18/Cgo+ IAo+IE9mIGNvdXJzZSwgYW55IGNvbWJpbmF0aW9uIG9mIGFib3ZlLgo+IAo+IEZ1cnRoZXIsIHdp dGggbXJlbWFwKCkgd2UgbWlnaHQgZ2V0IGNvbXBsZXRlbHkgY3JhenkgbGF5b3V0cywgcmFuZG9t bHkgbWFwcGluZwo+IHN1Yi1wYWdlcyBvZiBhbm9uIHBhZ2VzLCBtaXhlZCB3aXRoIG90aGVyIHN1 Yi1wYWdlcyBvciBiYXNlLXBhZ2UgZm9saW9zLgo+IAo+IE1heWJlIGl0J3MgYWxsIGhhbmRsZWQg YWxyZWFkeSBieSB5b3VyIGNvZGUsIGp1c3QgcG9pbnRpbmcgb3V0IHdoaWNoIGtpbmQgb2YKPiBt ZXNzIHdlIG1pZ2h0IGdldCA6KQoKWWVwLCB0aGlzIGlzIGFscmVhZHkgaGFuZGxlZDsgdGhlIHNj YW4gdG8gZXhwYW5kIHRoZSByYW5nZSBlbnN1cmVzIHRoYXQgYWxsIHRoZQpQVEVzIG1hcCB0byB0 aGUgZXhwZWN0ZWQgY29udGlndW91cyBwYWdlcyBpbiB0aGUgc2FtZSBmb2xpby4KCj4gCj4+Cj4+ Pgo+Pj4KPj4+IFNvIHdoYXQgc2hvdWxkIGJlIHNhZmUgaXMgcmVwbGFjaW5nIGFsbCBzdWItcGFn ZXMgb2YgYSBmb2xpbyB0aGF0IGFyZSBtYXJrZWQKPj4+ICJtYXliZSBzaGFyZWQiIGJ5IGEgbmV3 IGZvbGlvIHVuZGVyIFBUIGxvY2suIEhvd2V2ZXIsIEkgd29uZGVyIGlmIGl0J3MgcmVhbGx5Cj4+ PiB3b3J0aCB0aGUgY29tcGxleGl0eS4gRm9yIFRIUCB3ZSB3ZXJlIGhhcHB5IHNvIGZhciB0byAq bm90KiBvcHRpbWl6ZSB0aGlzLAo+Pj4gaW1wbHlpbmcgdGhhdCBtYXliZSB3ZSBzaG91bGRuJ3Qg d29ycnkgYWJvdXQgb3B0aW1pemluZyB0aGUgZm9yaygpIGNhc2UgZm9yIG5vdwo+Pj4gdGhhdCBo ZWF2aWx5Lgo+Pgo+PiBJIGRvbid0IGhhdmUgdGhlIGV4YWN0IG51bWJlcnMgdG8gaGFuZCwgYnV0 IEknbSBwcmV0dHkgc3VyZSBJIHJlbWVtYmVyIGVuYWJsaW5nCj4+IGxhcmdlIGNvcGllcyB3YXMg Y29udHJpYnV0aW5nIGEgbWVhc3VyYWJsZSBhbW91bnQgdG8gdGhlIHBlcmZvcm1hbmNlCj4+IGlt cHJvdmVtZW50LiAoQ2VydGFpbmx5LCB0aGUgemVyby1wYWdlIGNvcHkgY2FzZSwgaXMgZGVmaW5p dGVseSBhIGJpZwo+PiBjb250cmlidXRlcikuIEkgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIEhX IGF0IHRoZSBtb21lbnQgYnV0IGNhbiByZXJ1biBsYXRlcgo+PiB3aXRoIGFuZCB3aXRob3V0IHRv IGRvdWJsZSBjaGVjay4KPiAKPiBJbiB3aGljaCB0ZXN0IGV4YWN0bHk/IFNvbWUgbWljcm8tYmVu Y2htYXJrPwoKVGhlIGtlcm5lbCBjb21waWxlIGJlbmNobWFyayB0aGF0IEkgcXVvdGVkIG51bWJl cnMgZm9yIGluIHRoZSBjb3ZlciBsZXR0ZXIuIEkKaGF2ZSBzb21lIHRyYWNlIHBvaW50cyAobm90 IHBhcnQgb2YgdGhlIHN1Ym1pdHRlZCBzZXJpZXMpIHRoYXQgdGVsbCBtZSBob3cgbWFueQptYXBw aW5ncyBvZiBlYWNoIG9yZGVyIHdlIGdldCBmb3IgZWFjaCBjb2RlIHBhdGguIEknbSBwcmV0dHkg c3VyZSBJIHJlbWVtYmVyIGFsbApvZiB0aGVzZSA0IGNvZGUgcGF0aHMgY29udHJpYnV0aW5nIG5v bi1uZWdsaWdpYmxlIGFtb3VudHMuCgo+IAo+Pgo+Pj4KPj4+Cj4+PiBPbmUgb3B0aW1pemF0aW9u IG9uY2UgY291bGQgdGhpbmsgb2YgaW5zdGVhZCAodGhhdCBJIHJhaXNlZCBwcmV2aW91c2x5IGlu IG90aGVyCj4+PiBjb250ZXh0KSBpcyB0aGUgZGV0ZWN0aW9uIG9mIGV4Y2x1c2l2aXR5IGFmdGVy IGZvcmsoKStleGl0IGluIHRoZSBjaGlsZCAoSU9XLAo+Pj4gb25seSB0aGUgcGFyZW50IGNvbnRp bnVlcyB0byBleGlzdCkuIE9uY2UgUEdfYW5vbl9leGNsdXNpdmUgd2FzIGNsZWFyZWQgZm9yIGFs bAo+Pj4gc3ViLXBhZ2VzIG9mIHRoZSBUSFAtbWFwcGVkIGZvbGlvIGR1cmluZyBmb3JrKCksIHdl J2QgYWx3YXlzIGRlY2lkZSB0byBjb3B5Cj4+PiBpbnN0ZWFkIG9mIHJldXNlIChiZWNhdXNlIHBh Z2VfY291bnQoKSA+IDEsIGFzIHRoZSBmb2xpbyBpcyBQVEUgbWFwcGVkKS4KPj4+IFNjYW5uaW5n IHRoZSBzdXJyb3VuZGluZyBwYWdlIHRhYmxlIGlmIGl0IG1ha2VzIHNlbnNlIChlLmcuLCBwYWdl X2NvdW50KCkgPD0KPj4+IGZvbGlvX25yX3BhZ2VzKCkpLCB0byB0ZXN0IGlmIGFsbCBwYWdlIHJl ZmVyZW5jZXMgYXJlIGZyb20gdGhlIGN1cnJlbnQgcHJvY2Vzcwo+Pj4gd291bGQgYWxsb3cgZm9y IHJldXNpbmcgdGhlIGZvbGlvIChzZXR0aW5nIFBHX2Fub25fZXhjbHVzaXZlKSBmb3IgdGhlIHN1 Yi1wYWdlcy4KPj4+IFRoZSBzbWFsbGVyIHRoZSBmb2xpbyBvcmRlciwgdGhlIGNoZWFwZXIgdGhp cyAic2NhbiBzdXJyb3VuZGluZyBQVEVzIiBzY2FuIGlzLgo+Pj4gRm9yIFRIUCwgd2hpY2ggYXJl IHVzdWFsbHkgUE1ELW1hcHBlZCBldmVuIGFmdGVyIGZvcmsoKStleGl0LCB3ZSBkaWRuJ3QgYWRk IHRoaXMKPj4+IG9wdGltaXphdGlvbi4KPj4KPj4gWWVzLCBJIGhhdmUgYWxyZWFkeSBpbXBsZW1l bnRlZCB0aGlzIGluIG15IHNlcmllczsgc2VlIHBhdGNoIDEwLgo+IAo+IE9oLCBnb29kISBUaGF0 J3MgdGhlIG1vc3QgaW1wb3J0YW50IHBhcnQuCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=