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 34262C27C52 for ; Fri, 7 Jun 2024 00:09:49 +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:MIME-Version:References: 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=ydR8X3kHyzfatuWcrPZxg7rh3ohQNjnoATFMcPCEtdY=; b=iRiRjRv8VMwG5s +JjRZWBlVvl9QpXygVtn28CVzNOTjgclLfMJeb/br+u3c0VcEHvP/RDSdRgue2X3Tcu5sVN431wri fJhamzui1q7S4SHY+6GQ4cbxj9JldSp1ZVW9bWc6wrC4GCrhemiYGeRmfP52l3Eayd+prbgOigseJ SKcNq4bO4juwRofjGq9GVqelDgoJF2tA2U31EkM09YllCk+3+FnpQIwN6suU+OI3Yh9RnyfaTVJHL M50hShu2qukBTMz6Gxu+D4Kc0nK92juc/ISQR9hhrWNXL5UHDwDExH2fNdAPS+fP6v6tL1IGZBPYs rOUUC1gREFNQOqSVeJQg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sFNAk-0000000BmYC-0Ipp; Fri, 07 Jun 2024 00:09:34 +0000 Received: from sin.source.kernel.org ([145.40.73.55]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sFNAg-0000000BmXQ-3nU1 for linux-arm-kernel@lists.infradead.org; Fri, 07 Jun 2024 00:09:32 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 97FA1CE0D97; Fri, 7 Jun 2024 00:09:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40BAAC2BD10; Fri, 7 Jun 2024 00:09:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1717718967; bh=P43Z2erwmj8B2vWbpL7QxA/jRM327Bp3f0gHcM9G67E=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=kJHEqC4J7HehJfPWzhQ/cjyAHrYLtAV9X9BmAti3FrMgtKmj680wY62uULiAveCrC rGyTDg8mg+sbhOL+PGPKHPuZPX+aZ5vAWgjSlQEzUwS9jNaCIIUverI2uuj/Mg5E6F GF2v8OlqfdkRc4TWbZt6oFEMLMNUkns4ShGCST3E6oAkd7uFKopa0hFhsmuERO8Q1J dE5xqlrqQSX56NZPGWHRfhPKHdbUSuYCyjzCs8t7nOpj+j37Hntt9dd36IUo8Rgv2I +SIhe8S+ScFZgel8DRvx/d4r6LkYTKpgvhAZe1QTP1yaWGCkOLL/cFwUrkQjdRy7hf +wJI8IUS/l5vg== Date: Thu, 6 Jun 2024 17:09:25 -0700 From: Namhyung Kim To: Ian Rogers Cc: Yicong Yang , will@kernel.org, mark.rutland@arm.com, acme@kernel.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, peterz@infradead.org, mingo@redhat.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, james.clark@arm.com, dongli.zhang@oracle.com, jonathan.cameron@huawei.com, prime.zeng@hisilicon.com, linuxarm@huawei.com, yangyicong@hisilicon.com Subject: Re: [PATCH 1/3] perf pmu: Limit PMU cpumask to online CPUs Message-ID: References: <20240603092812.46616-1-yangyicong@huawei.com> <20240603092812.46616-2-yangyicong@huawei.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240606_170931_304477_83F446F0 X-CRM114-Status: GOOD ( 35.24 ) 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 SGVsbG8sCgpPbiBNb24sIEp1biAwMywgMjAyNCBhdCAwOTo1MjoxNUFNIC0wNzAwLCBJYW4gUm9n ZXJzIHdyb3RlOgo+IE9uIE1vbiwgSnVuIDMsIDIwMjQgYXQgMjozM+KAr0FNIFlpY29uZyBZYW5n IDx5YW5neWljb25nQGh1YXdlaS5jb20+IHdyb3RlOgo+ID4KPiA+IEZyb206IFlpY29uZyBZYW5n IDx5YW5neWljb25nQGhpc2lsaWNvbi5jb20+Cj4gPgo+ID4gV2UnbGwgaW5pdGlhbGl6ZSB0aGUg UE1VJ3MgY3B1bWFzayBmcm9tICJjcHVtYXNrIiBvciAiY3B1cyIgc3lzZnMKPiA+IGF0dHJpYnV0 ZXMgaWYgcHJvdmlkZWQgYnkgdGhlIGRyaXZlciB3aXRob3V0IGNoZWNraW5nIHRoZSBDUFVzCj4g PiBhcmUgb25saW5lIG9yIG5vdC4gSW4gc3VjaCBjYXNlIHRoYXQgQ1BVcyBwcm92aWRlZCBieSB0 aGUgZHJpdmVyCj4gPiBjb250YWlucyB0aGUgb2ZmbGluZSBDUFVzLCB3ZSdsbCB0cnkgdG8gb3Bl biBldmVudCBvbiB0aGUgb2ZmbGluZQo+ID4gQ1BVcyBhbmQgdGhlbiByZWplY3RlZCBieSB0aGUg a2VybmVsOgo+ID4KPiA+IFtyb290QGxvY2FsaG9zdCB5YW5nXSMgZWNobyAwID4gL3N5cy9kZXZp Y2VzL3N5c3RlbS9jcHUvY3B1MC9vbmxpbmUKPiA+IFtyb290QGxvY2FsaG9zdCB5YW5nXSMgLi9w ZXJmX3N0YXRpYyBzdGF0IC1lIGFybXY4X3BtdXYzXzAvY3ljbGVzLyAtLXRpbWVvdXQgMTAwCj4g PiBFcnJvcjoKPiA+IFRoZSBzeXNfcGVyZl9ldmVudF9vcGVuKCkgc3lzY2FsbCByZXR1cm5lZCB3 aXRoIDE5IChObyBzdWNoIGRldmljZSkgZm9yIGV2ZW50IChjcHUtY2xvY2spLgo+ID4gL2Jpbi9k bWVzZyB8IGdyZXAgLWkgcGVyZiBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgo+ ID4KPiA+IFNvIGl0J3MgYmV0dGVyIHRvIGRvIGEgZG91YmxlIGNoZWNrIGluIHRoZSB1c2Vyc3Bh Y2UgYW5kIG9ubHkgaW5jbHVkZQo+ID4gdGhlIG9ubGluZSBDUFVzIGZyb20gImNwdW1hc2siIG9y ICJjcHVzIiB0byBhdm9pZCBvcGVuaW5nIGV2ZW50cyBvbgo+ID4gb2ZmbGluZSBDUFVzLgo+IAo+ IEkgc2VlIHdoZXJlIHlvdSBhcmUgY29taW5nIGZyb20gd2l0aCB0aGlzIGJ1dCBJIHRoaW5rIGl0 IGlzIHdyb25nLiBUaGUKPiBjcHVzIGZvciBhbiB1bmNvcmUgUE1VIGFyZSBhIGhpbnQgb2YgdGhl IENQVSB0byBvcGVuIG9uIHJhdGhlciB0aGFuCj4gdGhlIHNldCBvZiB2YWxpZCBDUFVzLiBGb3Ig ZXhhbXBsZToKPiBgYGAKPiAkIGNhdCAvc3lzL2RldmljZXMvdW5jb3JlX2ltY19mcmVlX3J1bm5p bmdfMC9jcHVtYXNrCj4gMAo+ICQgcGVyZiBzdGF0IC12diAtZSB1bmNvcmVfaW1jX2ZyZWVfcnVu bmluZ18wL2RhdGFfcmVhZC8gLUMgMSAtYSBzbGVlcCAwLjEKPiBVc2luZyBDUFVJRCBHZW51aW5l SW50ZWwtNi04RC0xCj4gQXR0ZW1wdCB0byBhZGQ6IHVuY29yZV9pbWNfZnJlZV9ydW5uaW5nXzAv ZGF0YV9yZWFkLwo+IC4uYWZ0ZXIgcmVzb2x2aW5nIGV2ZW50OiB1bmNvcmVfaW1jX2ZyZWVfcnVu bmluZ18wL2V2ZW50PTB4ZmYsdW1hc2s9MHgyMC8KPiBDb250cm9sIGRlc2NyaXB0b3IgaXMgbm90 IGluaXRpYWxpemVkCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCj4gcGVyZl9ldmVudF9hdHRyOgo+ICAgdHlwZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMjQgKHVuY29yZV9pbWNfZnJlZV9ydW5uaW5nXzApCj4gICBzaXpl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzYKPiAgIGNvbmZpZyAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MjBmZiAoZGF0YV9yZWFkKQo+ICAgc2FtcGxlX3R5cGUgICAgICAgICAg ICAgICAgICAgICAgSURFTlRJRklFUgo+ICAgcmVhZF9mb3JtYXQgICAgICAgICAgICAgICAgICAg ICAgVE9UQUxfVElNRV9FTkFCTEVEfFRPVEFMX1RJTUVfUlVOTklORwo+ICAgZGlzYWJsZWQgICAg ICAgICAgICAgICAgICAgICAgICAgMQo+ICAgaW5oZXJpdCAgICAgICAgICAgICAgICAgICAgICAg ICAgMQo+ICAgZXhjbHVkZV9ndWVzdCAgICAgICAgICAgICAgICAgICAgMQo+IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IHN5c19w ZXJmX2V2ZW50X29wZW46IHBpZCAtMSAgY3B1IDEgIGdyb3VwX2ZkIC0xICBmbGFncyAweDgKPiBz eXNfcGVyZl9ldmVudF9vcGVuIGZhaWxlZCwgZXJyb3IgLTIyCj4gc3dpdGNoaW5nIG9mZiBjbG9l eGVjIGZsYWcKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiBwZXJmX2V2ZW50X2F0dHI6Cj4gICB0eXBlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAyNCAodW5jb3JlX2ltY19mcmVlX3J1bm5pbmdfMCkKPiAgIHNpemUgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEzNgo+ICAgY29uZmlnICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgyMGZmIChkYXRhX3JlYWQpCj4gICBzYW1wbGVfdHlwZSAgICAgICAgICAgICAg ICAgICAgICBJREVOVElGSUVSCj4gICByZWFkX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICBU T1RBTF9USU1FX0VOQUJMRUR8VE9UQUxfVElNRV9SVU5OSU5HCj4gICBkaXNhYmxlZCAgICAgICAg ICAgICAgICAgICAgICAgICAxCj4gICBpbmhlcml0ICAgICAgICAgICAgICAgICAgICAgICAgICAx Cj4gICBleGNsdWRlX2d1ZXN0ICAgICAgICAgICAgICAgICAgICAxCj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gc3lzX3BlcmZf ZXZlbnRfb3BlbjogcGlkIC0xICBjcHUgMSAgZ3JvdXBfZmQgLTEgIGZsYWdzIDAKPiBzeXNfcGVy Zl9ldmVudF9vcGVuIGZhaWxlZCwgZXJyb3IgLTIyCj4gc3dpdGNoaW5nIG9mZiBleGNsdWRlX2d1 ZXN0LCBleGNsdWRlX2hvc3QKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBwZXJmX2V2ZW50X2F0dHI6Cj4gICB0eXBlICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAyNCAodW5jb3JlX2ltY19mcmVlX3J1bm5pbmdfMCkKPiAg IHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNgo+ICAgY29uZmlnICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgyMGZmIChkYXRhX3JlYWQpCj4gICBzYW1wbGVfdHlwZSAgICAg ICAgICAgICAgICAgICAgICBJREVOVElGSUVSCj4gICByZWFkX2Zvcm1hdCAgICAgICAgICAgICAg ICAgICAgICBUT1RBTF9USU1FX0VOQUJMRUR8VE9UQUxfVElNRV9SVU5OSU5HCj4gICBkaXNhYmxl ZCAgICAgICAgICAgICAgICAgICAgICAgICAxCj4gICBpbmhlcml0ICAgICAgICAgICAgICAgICAg ICAgICAgICAxCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj4gc3lzX3BlcmZfZXZlbnRfb3BlbjogcGlkIC0xICBjcHUgMSAgZ3Jv dXBfZmQgLTEgIGZsYWdzIDAgPSAzCj4gdW5jb3JlX2ltY19mcmVlX3J1bm5pbmdfMC9kYXRhX3Jl YWQvOiAxOiA0MDA1OTg0IDEwMjMzODk1NyAxMDIzMzg5NTcKPiB1bmNvcmVfaW1jX2ZyZWVfcnVu bmluZ18wL2RhdGFfcmVhZC86IDQwMDU5ODQgMTAyMzM4OTU3IDEwMjMzODk1Nwo+IAo+ICBQZXJm b3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAnc3lzdGVtIHdpZGUnOgo+IAo+ICAgICAgICAgICAg IDI0NC41MSBNaUIgIHVuY29yZV9pbWNfZnJlZV9ydW5uaW5nXzAvZGF0YV9yZWFkLwo+IAo+ICAg ICAgICAwLjEwMjMyMDM3NiBzZWNvbmRzIHRpbWUgZWxhcHNlZAo+IGBgYAo+IFNvIHRoZSBDUFUg bWFzayBvZiB0aGUgUE1VIHNheXMgdG8gb3BlbiBvbiBDUFUgMCwgYnV0IG9uIHRoZSBjb21tYW5k Cj4gbGluZSB3aGVuIEkgcGFzc2VkICItQyAxIiBpdCBvcGVuZWQgaXQgb24gQ1BVIDEuIElmIHRo ZSBjcHVtYXNrIGZpbGUKPiBjb250YWluZWQgYW4gb2ZmbGluZSBDUFUgdGhlbiB0aGlzIGNoYW5n ZSB3b3VsZCBtYWtlIGl0IHNvIHRoZSBDUFUgbWFwCj4gaW4gdGhlIHRvb2wgd2VyZSBlbXB0eSwg aG93ZXZlciwgYSBkaWZmZXJlbnQgQ1BVIG1heSBiZSBwcm9ncmFtbWFibGUKPiBhbmQgb25saW5l LgoKSSB0aGluayBJbnRlbCB1bmNvcmUgUE1VIGRyaXZlciBpZ25vcmVzIHRoZSBDUFUgcGFyYW1l dGVyIGFuZCBzZXQgaXQgdG8KQ1BVIDAgaW4gdGhpcyBjYXNlIGludGVybmFsbHkuICBTZWUgdW5j b3JlX3BtdV9ldmVudF9pbml0KCkgYXQKaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xp bnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUvYXJjaC94ODYvZXZlbnRzL2lu dGVsL3VuY29yZS5jI243NjEKCj4gCj4gRndpdywgdGhlIHRvb2wgd2lsbCBkZXRlcm1pbmUgd2hl dGhlciB0aGUgbWFzayBpcyBmb3IgYWxsIHZhbGlkIG9yIGEKPiBoaW50IGJ5IHVzaW5nIHRoZSBu b3Rpb24gb2YgYSBQTVUgYmVpbmcgImNvcmUiIG9yIG5vdC4gVGhhdCBub3Rpb24KPiBjb25zaWRl cnMgd2hldGhlciB0aGUgbWFzayB3YXMgbG9hZGluZyBmcm9tIGEgImNwdW1hc2siIG9yICJjcHVz Igo+IGZpbGU6Cj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n aXQvcGVyZi9wZXJmLXRvb2xzLW5leHQuZ2l0L3RyZWUvdG9vbHMvcGVyZi91dGlsL3BtdS5jP2g9 cGVyZi10b29scy1uZXh0I244MTAKPiAKPiBUaGFua3MsCj4gSWFuCj4gCj4gPiBTaWduZWQtb2Zm LWJ5OiBZaWNvbmcgWWFuZyA8eWFuZ3lpY29uZ0BoaXNpbGljb24uY29tPgo+ID4gLS0tCj4gPiAg dG9vbHMvcGVyZi91dGlsL3BtdS5jIHwgMTMgKysrKysrKysrKystLQo+ID4gIDEgZmlsZSBjaGFu Z2VkLCAxMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ID4KPiA+IGRpZmYgLS1naXQg YS90b29scy9wZXJmL3V0aWwvcG11LmMgYi90b29scy9wZXJmL3V0aWwvcG11LmMKPiA+IGluZGV4 IDg4OGNlOTkxMjI3NS4uNTFlOGQxMGVlMjhiIDEwMDY0NAo+ID4gLS0tIGEvdG9vbHMvcGVyZi91 dGlsL3BtdS5jCj4gPiArKysgYi90b29scy9wZXJmL3V0aWwvcG11LmMKPiA+IEBAIC03NzEsOCAr NzcxLDE3IEBAIHN0YXRpYyBzdHJ1Y3QgcGVyZl9jcHVfbWFwICpwbXVfY3B1bWFzayhpbnQgZGly ZmQsIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgaXNfY29yCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsKPiA+ICAgICAgICAgICAgICAgICBjcHVzID0gcGVyZl9jcHVfbWFwX19y ZWFkKGZpbGUpOwo+ID4gICAgICAgICAgICAgICAgIGZjbG9zZShmaWxlKTsKPiA+IC0gICAgICAg ICAgICAgICBpZiAoY3B1cykKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcHVz Owo+ID4gKyAgICAgICAgICAgICAgIGlmIChjcHVzKSB7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcGVyZl9jcHVfbWFwICppbnRlcnNlY3QgX19tYXliZV91bnVzZWQ7Cj4gPiAr Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVyZl9jcHVfbWFwX19pc19zdWJzZXQo Y3B1X21hcF9fb25saW5lKCksIGNwdXMpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gY3B1czsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGludGVy c2VjdCA9IHBlcmZfY3B1X21hcF9faW50ZXJzZWN0KGNwdXMsIGNwdV9tYXBfX29ubGluZSgpKTsK ClNvIElJVUMgdGhpcyBpcyBmb3IgY29yZSBQTVVzIHdpdGggImNwdXMiIGZpbGUsIHJpZ2h0PyAg SSBndWVzcyB1bmNvcmUKZHJpdmVycyBhbHJlYWR5IGhhbmRsZXMgImNwdW1hc2siIHByb3Blcmx5 Li4KClRoYW5rcywKTmFtaHl1bmcKCgo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcGVyZl9j cHVfbWFwX19wdXQoY3B1cyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJz ZWN0KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0 Owo+ID4gKyAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgLyog Tm90aGluZyBmb3VuZCwgZm9yIGNvcmUgUE1VcyBhc3N1bWUgdGhpcyBtZWFucyBhbGwgQ1BVcy4g Ki8KPiA+IC0tCj4gPiAyLjI0LjAKPiA+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==