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 5D20CC4167B for ; Tue, 5 Dec 2023 14:17:34 +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=rUMEkDM8YMKqNowMSftkOIfb2yxnxq/ll3rLqgk3BbA=; b=DIaOlTo0CjCvZm zm3TsO5worbGBCtyajBIx3FPAxbuUyn1JKUZRb4CFp5cs9gGWASJ4quDXkPF6YNsN2iZ1cQm1A37f 1zrgVs408yoAxKog1ZuXda3+zma0xKRgtDGBwEhlX/kpF2kv7jTdFlZ5Y3NMVdW7NiZeorZ8pDPTN SI1o7uJJwdKEsIDtiBTQLGSzhjnIOmJoCrLaDxVqbvGHsWHINL2AMIB8+8f+m+oG+DoK1zxrVjgSc 6CiYFL6U3uxEi0mxsD9saWjhkn0y0UMYE+qZIFGdX+P8NjOvsUYPZ73+9mZi4f21L3lPfboMyz0Ie UrjoRYfdEPVPd2N9JsJg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rAWEU-007Zr1-0j; Tue, 05 Dec 2023 14:17:06 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rAWER-007ZpU-0s for linux-arm-kernel@lists.infradead.org; Tue, 05 Dec 2023 14:17:05 +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 DF00A139F; Tue, 5 Dec 2023 06:17:45 -0800 (PST) Received: from [10.57.73.130] (unknown [10.57.73.130]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 87FDD3F6C4; Tue, 5 Dec 2023 06:16:55 -0800 (PST) Message-ID: <0b48135a-a44b-4b5a-a33b-abd3a3b47ff8@arm.com> Date: Tue, 5 Dec 2023 14:16:53 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 01/15] mm: Batch-copy PTE ranges during fork() Content-Language: en-GB To: David Hildenbrand , Catalin Marinas , Will Deacon , Ard Biesheuvel , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Andrew Morton , Anshuman Khandual , Matthew Wilcox , Yu Zhao , Mark Rutland , Kefeng Wang , John Hubbard , Zi Yan , Barry Song <21cnbao@gmail.com>, Alistair Popple , Yang Shi Cc: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20231204105440.61448-1-ryan.roberts@arm.com> <20231204105440.61448-2-ryan.roberts@arm.com> <104de2d6-ecf9-4b0c-a982-5bd8e1aea758@redhat.com> <5b8b9f8c-8e9b-42a5-b8b2-9b96903f3ada@redhat.com> From: Ryan Roberts In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231205_061703_410178_85EF73AE X-CRM114-Status: GOOD ( 29.08 ) 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 T24gMDUvMTIvMjAyMyAxMjowNCwgRGF2aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4gT24gMDUuMTIu MjMgMTI6MzAsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4gT24gMDQvMTIvMjAyMyAxNzoyNywgRGF2 aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4+Pj4KPj4+PiBXaXRoIHJtYXAgYmF0Y2hpbmcgZnJvbSBb MV0gLS0gcmViYXNlZCtjaGFuZ2VkIG9uIHRvcCBvZiB0aGF0IC0tIHdlIGNvdWxkIHR1cm4KPj4+ PiB0aGF0IGludG8gYW4gZWZmZWN0aXZlICh1bnRlc3RlZCk6Cj4+Pj4KPj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAocGFnZSAmJiBmb2xpb190ZXN0X2Fub24oZm9saW8pKSB7Cj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbnIgPSBmb2xpb19ucl9wYWdlc19jb250X21hcHBl ZChmb2xpbywgcGFnZSwgc3JjX3B0ZSwgYWRkciwKPj4+PiBlbmQsCj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHB0ZSwgZW5mb3JjZV91ZmZkX3dwLAo+Pj4+ICZucl9k aXJ0eSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJm5yX3dyaXRh YmxlKTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIElmIHRoaXMgcGFnZSBtYXkg aGF2ZSBiZWVuIHBpbm5lZCBieSB0aGUgcGFyZW50IHByb2Nlc3MsCj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBjb3B5IHRoZSBwYWdlIGltbWVkaWF0ZWx5IGZv ciB0aGUgY2hpbGQgc28gdGhhdCB3ZSdsbAo+Pj4+IGFsd2F5cwo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZ3VhcmFudGVlIHRoZSBwaW5uZWQgcGFnZSB3b24n dCBiZSByYW5kb21seSByZXBsYWNlZAo+Pj4+IGluIHRoZQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZnV0dXJlLgo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICovCj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Zm9saW9fZ2V0KGZvbGlvKTsKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo dW5saWtlbHkoZm9saW9fdHJ5X2R1cF9hbm9uX3JtYXBfcHRlKGZvbGlvLCBwYWdlLAo+Pj4+IHNy Y192bWEpKSkgewo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvbGlvX3JlZl9h ZGQoZm9saW8sIG5yKTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodW5s aWtlbHkoZm9saW9fdHJ5X2R1cF9hbm9uX3JtYXBfcHRlcyhmb2xpbywgcGFnZSwgbnIsCj4+Pj4g c3JjX3ZtYSkpKSB7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvKiBQYWdlIG1heSBiZSBwaW5uZWQsIHdlIGhhdmUgdG8gY29weS4gKi8K Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9saW9f cHV0KGZvbGlvKTsKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIGNvcHlfcHJlc2VudF9wYWdlKGRzdF92bWEsIHNyY192bWEsIGRzdF9wdGUs Cj4+Pj4gc3JjX3B0ZSwKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBhZGRyLCByc3MsIHByZWFsbG9jLCBwYWdlKTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9saW9fcmVmX3N1Yihmb2xpbywgbnIpOwo+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBjb3B5X3By ZXNlbnRfcGFnZShkc3Rfdm1hLCBzcmNfdm1hLCBkc3RfcHRlLAo+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcmNfcHRlLCBhZGRyLCByc3MsIHByZWFsbG9jLAo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYWdlKTsKPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldCA9PSAwID8g MSA6IHJldDsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJzc1tNTV9BTk9OUEFHRVNdKys7Cj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnNzW01NX0FOT05QQUdFU10gKz0gbnI7Cj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmIChwYWdlKSB7Cj4+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9saW9fZ2V0KGZvbGlvKTsKPj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBmb2xpb19kdXBfZmlsZV9ybWFwX3B0ZShmb2xpbywgcGFnZSk7Cj4+ Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnNzW21tX2NvdW50ZXJfZmlsZShwYWdl KV0rKzsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuciA9IGZvbGlvX25yX3Bh Z2VzX2NvbnRfbWFwcGVkKGZvbGlvLCBwYWdlLCBzcmNfcHRlLCBhZGRyLAo+Pj4+IGVuZCwKPj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHRlLCBlbmZvcmNlX3VmZmRf d3AsCj4+Pj4gJm5yX2RpcnR5LAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAmbnJfd3JpdGFibGUpOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZv bGlvX3JlZl9hZGQoZm9saW8sIG5yKTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBmb2xpb19kdXBfZmlsZV9ybWFwX3B0ZXMoZm9saW8sIHBhZ2UsIG5yKTsKPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByc3NbbW1fY291bnRlcl9maWxlKHBhZ2UpXSArPSBucjsK Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4KPj4+Pgo+Pj4+IFdlJ2xsIGhhdmUgdG8g dGVzdCBwZXJmb3JtYW5jZSwgYnV0IGl0IGNvdWxkIGJlIHRoYXQgd2Ugd2FudCB0byBzcGVjaWFs aXplCj4+Pj4gbW9yZSBvbiAhZm9saW9fdGVzdF9sYXJnZSgpLiBUaGF0IGNvZGUgaXMgdmVyeSBw ZXJmb3JtYW5jZS1zZW5zaXRpdmUuCj4+Pj4KPj4+Pgo+Pj4+IFsxXSBodHRwczovL2xrbWwua2Vy bmVsLm9yZy9yLzIwMjMxMjA0MTQyMTQ2LjkxNDM3LTEtZGF2aWRAcmVkaGF0LmNvbQo+Pj4KPj4+ IFNvLCBvbiB0b3Agb2YgWzFdIHdpdGhvdXQgcm1hcCBiYXRjaGluZyBidXQgd2l0aCBhIHNsaWdo dGx5IG1vZGlmaWVkIHZlcnNpb24gb2YKPj4KPj4gQ2FuIHlvdSBjbGFyaWZ5IHdoYXQgeW91IG1l YW4gYnkgIndpdGhvdXQgcm1hcCBiYXRjaGluZyI/IEkgdGhvdWdodCBbMV0KPj4gaW1wbGljaXRs eSBhZGRzIHJtYXAgYmF0Y2hpbmc/IChlLmcuIGZvbGlvX2R1cF9maWxlX3JtYXBfcHRlcygpLCB3 aGljaCB5b3UndmUKPj4gYWRkZWQgaW4gdGhlIGNvZGUgc25pcHBldCBhYm92ZSkuCj4gCj4gTm90 IGNhbGxpbmcgdGhlIGJhdGNoZWQgdmFyaWFudHMgYnV0IGVzc2VudGlhbGx5IGRvaW5nIHdoYXQg eW91ciBjb2RlIGRvZXMgKHdpdGgKPiBzb21lIG1pbm9yIGltcHJvdmVtZW50cywgbGlrZSB1cGRh dGluZyB0aGUgcnNzIGNvdW50ZXJzIG9ubHkgb25jZSkuCj4gCj4gVGhlIHNuaXBwZWQgYWJvdmUg aXMgb25seSBsaW5rZWQgYmVsb3cuIEkgaGFkIHRoZSBwZXJmb3JtYW5jZSBudW1iZXJzIGZvciBb MV0KPiByZWFkeSwgc28gSSBnYXZlIGl0IGEgdGVzdCBvbiB0b3Agb2YgdGhhdC4KPiAKPiBUbyBr ZWVwIGl0IHNpbXBsZSwgeW91IG1pZ2h0IGp1c3QgYmVuY2htYXJrIHcgYW5kIHcvbyB5b3VyIHBh dGNoZXMuCj4gCj4+Cj4+PiB5b3VycyAodGhhdCBrZWVwcyB0aGUgZXhpc3RpbmcgY29kZSBzdHJ1 Y3R1cmUgYXMgcG9pbnRlZCBvdXQgYW5kIGUuZy4sIHVwZGF0ZXMKPj4+IGNvdW50ZXIgdXBkYXRl cyksIHJ1bm5pbmcgbXkgZm9yaygpIG1pY3JvYmVuY2htYXJrIHdpdGggYSAxIEdpQiBvZiBtZW1v cnk6Cj4+Pgo+Pj4gQ29tcGFyZWQgdG8gWzFdLCB3aXRoIGFsbCBvcmRlci0wIHBhZ2VzIGl0IGdl dHMgMTMtLTE0JSBfc2xvd2VyXyBhbmQgd2l0aCBhbGwKPj4+IFBURS1tYXBwZWQgVEhQIChvcmRl ci05KSBpdCBnZXRzIH4yOS0tMzAlIF9mYXN0ZXJfLgo+Pgo+PiBXaGF0IHRlc3QgYXJlIHlvdSBy dW5uaW5nIC0gSSdkIGxpa2UgdG8gcmVwcm9kdWNlIGlmIHBvc3NpYmxlLCBzaW5jZSBpdCBzb3Vu ZHMKPj4gbGlrZSBJJ3ZlIGdvdCBzb21lIHdvcmsgdG8gZG8gdG8gcmVtb3ZlIHRoZSBvcmRlci0w IHJlZ3Jlc3Npb24uCj4gCj4gRXNzZW50aWFsbHkganVzdCBhbGxvY2F0aW5nIDEgR2lCIG9mIG1l bW9yeSBhbiBtZWFzdXJpbmcgaG93IGxvbmcgaXQgdGFrZXMgdG8KPiBjYWxsIGZvcmsoKS4KPiAK PiBvcmRlci0wIGJlbmNobWFya3M6Cj4gCj4gaHR0cHM6Ly9naXRsYWIuY29tL2RhdmlkaGlsZGVu YnJhbmQvc2NyYXRjaHNwYWNlLy0vcmF3L21haW4vb3JkZXItMC1iZW5jaG1hcmtzLmM/cmVmX3R5 cGU9aGVhZHMKPiAKPiBlLmcuLDogJCAuL29yZGVyLTAtYmVuY2htYXJrcyBmb3JrIDEwMAo+IAo+ IAo+IHB0ZS1tYXBwZWQtdGhwIGJlbmNobWFya3M6Cj4gCj4gaHR0cHM6Ly9naXRsYWIuY29tL2Rh dmlkaGlsZGVuYnJhbmQvc2NyYXRjaHNwYWNlLy0vcmF3L21haW4vcHRlLW1hcHBlZC10aHAtYmVu Y2htYXJrcy5jP3JlZl90eXBlPWhlYWRzCj4gCj4gZS5nLiw6ICQgLi9wdGUtbWFwcGVkLXRocC1i ZW5jaG1hcmtzIGZvcmsgMTAwCj4gCj4gCj4gSWRlYWxseSwgcGluIHRvIG9uZSBDUFUgYW5kIGdl dCBzdGFibGUgcGVyZm9ybWFuY2UgbnVtYmVycyBieSBkaXNhYmxpbmcKPiBTTVQrdHVyYm8gZXRj LgoKVGhpcyBpcyBncmVhdCAtIHRoYW5rcyEgSSdsbCBnZXQgdG8gd29yay4uLgoKPiAKPj4KPj4+ Cj4+PiBTbyBsb29rcyBsaWtlIHdlIHJlYWxseSB3YW50IHRvIGhhdmUgYSBjb21wbGV0ZWx5IHNl cHJhdGUgY29kZSBwYXRoIGZvcgo+Pj4gIiFmb2xpb190ZXN0X2xhcmdlKCkiIHRvIGtlZXAgdGhh dCBjYXNlIGFzIGZhc3QgYXMgcG9zc2libGUuIEFuZCAiTGlrZWx5IiB3ZQo+Pj4gd2FudCB0byB1 c2UgImxpa2VseSghZm9saW9fdGVzdF9sYXJnZSgpIi4gOykKPj4KPj4gWXVrLCBidXQgZmFpciBl bm91Z2guIElmIEkgY2FuIHJlcHJvIHRoZSBwZXJmIG51bWJlcnMsIEknbGwgaGF2ZSBhIGdvIGEK Pj4gcmV3b3JraW5nIHRoaXMuCj4+Cj4+IEkgdGhpbmsgeW91J3JlIGFsc28gaW1wbGljaXRseSBz dWdnZXN0aW5nIHRoYXQgdGhpcyBjaGFuZ2UgbmVlZHMgdG8gZGVwZW5kIG9uCj4+IFsxXT8gV2hp Y2ggaXMgYSBzaGFtZS4uLgo+IAo+IE5vdCBuZWNlc3NhcmlseS4gSXQgY2VydGFpbmx5IGNsZWFu cyB1cCB0aGUgY29kZSwgYnV0IHdlIGNhbiBkbyB0aGF0IGluIGFueQo+IG9yZGVyIHJlYXNvbmFi bGUuCj4gCj4+Cj4+IEkgZ3Vlc3MgSSBzaG91bGQgYWxzbyBnbyB0aHJvdWdoIGEgc2ltaWxhciBl eGVyY2lzZSBmb3IgcGF0Y2ggMiBpbiB0aGlzIHNlcmllcy4KPiAKPiAKPiBZZXMuIFRoZXJlIGFy ZSAidW5tYXAiIGFuZCAicHRlLWRvbnRuZWVkIiBiZW5jaG1hcmtzIGNvbnRhaW5lZCBpbiBib3Ro IGZpbGVzIGFib3ZlLgo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK