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 4BEBFC001DE for ; Thu, 3 Aug 2023 02:40:20 +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=DqRKSFczq2CGS+QB8FWX+cDb6iIaoa6RwmXH1Y32fcU=; b=Zk4pbHZ6vU7YnC /5kJnfvzz6+wJBiOEV4b8rr+RjWgIVjWO3QDpR1vIfMtZ1TgIPOCjd9BAqA+A6edQQ9ZJiPD5NxLi vv0Aw9IHvdc4AA2i+8r4LInVGnt96dp6/lwFXg/wxF3/UdJcb/NujsuxRE7kNr4k8+ZNlQbBX5Yvt b/jyVVm6VMI5A6w4NmlpjB5MhjprrQJ1lmsT0zCWMvL3n+knender6AADhriE7XJOPAXBEMw8wQ4X 9HBvRlM7upvkVXAp+laZ+41eZdv1Q4ogAIQxjPoXO2OYzHhgdmJFo6jZSrWVRXahuDbg/hzG/PzUs CvVUdwv1AhvYO55AUE8g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qROFm-006TP1-2s; Thu, 03 Aug 2023 02:39:54 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qROFi-006TO4-2T for linux-arm-kernel@lists.infradead.org; Thu, 03 Aug 2023 02:39:53 +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 E3D1B113E; Wed, 2 Aug 2023 19:40:28 -0700 (PDT) Received: from [10.162.42.10] (unknown [10.162.42.10]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 363523F5A1; Wed, 2 Aug 2023 19:39:40 -0700 (PDT) Message-ID: Date: Thu, 3 Aug 2023 08:09:38 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH V13 - RESEND 06/10] arm64/perf: Enable branch stack events via FEAT_BRBE Content-Language: en-US To: Suzuki K Poulose , Yang Shen , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com Cc: Mark Brown , James Clark , Rob Herring , Marc Zyngier , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org References: <20230711082455.215983-1-anshuman.khandual@arm.com> <20230711082455.215983-7-anshuman.khandual@arm.com> <5c7c1ff3-1e2a-1258-7fa0-c82a9ab62646@huawei.com> <9d07e82a-06fb-a5f8-6f4f-f3c16784b9b7@arm.com> <3873f3b6-5e0b-360f-2f01-4584e15e960a@arm.com> <8b9d860f-f235-651e-3e48-34cdc489440d@arm.com> <6e8d5f13-865d-e39f-1e2e-96f2b447219b@arm.com> From: Anshuman Khandual In-Reply-To: <6e8d5f13-865d-e39f-1e2e-96f2b447219b@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230802_193950_927758_14239140 X-CRM114-Status: GOOD ( 30.67 ) 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 CgpPbiA4LzIvMjMgMTg6MTAsIFN1enVraSBLIFBvdWxvc2Ugd3JvdGU6Cj4gT24gMjYvMDcvMjAy MyAwNjozMiwgQW5zaHVtYW4gS2hhbmR1YWwgd3JvdGU6Cj4+Cj4+Cj4+IE9uIDcvMjUvMjMgMTg6 NTksIFN1enVraSBLIFBvdWxvc2Ugd3JvdGU6Cj4+PiBPbiAyNS8wNy8yMDIzIDEyOjQyLCBBbnNo dW1hbiBLaGFuZHVhbCB3cm90ZToKPj4+PiBIZWxsbyBZYW5nLAo+Pj4+Cj4+Pj4gT24gNy8yNS8y MyAxMjo0MiwgWWFuZyBTaGVuIHdyb3RlOgo+Pj4+Pj4gK8KgwqDCoCBpZiAoIShicmFuY2hfdHlw ZSAmIFBFUkZfU0FNUExFX0JSQU5DSF9OT19DWUNMRVMpKQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg IGJyYmNyIHw9IEJSQkNSX0VMMV9DQzsKPj4+Pj4KPj4+Pj4gSGkgQW5zaHVtYW4sCj4+Pj4+Cj4+ Pj4+IEhlcmUgaXMgcHJvYmxlbSBhYm91dCBlbmFibGUgQ1lDTEVTX0NPVU5ULiBUaGUgU1BFQyBk ZWZpbmVzIHRoYXQgdGhlIENZQ0xFU19DT1VOVCBpcyBvbmx5Cj4+Pj4+Cj4+Pj4+IHZhbGlkIHdo ZW4gdGhlIEJSRUNSX0VMMS5DQyAmIEJSQkNSX0VMMi5DQyBpcyB0cnVlLiBBbmQgaGVyZSB0aGUg U1BFQyBhbHNvIGRlZmluZXMgdGhhdAo+Pj4+Pgo+Pj4+PiB3aGVuIFBTVEFURS5FTCA9PSBFTDIg YW5kIEhDUl9FTDIuRTJoID09ICcxJywgJ01TUiBCUkJDUl9FTDEsIDxYdD4nIG1lYW5zIHdyaXRp bmcgdG8KPj4+Pj4KPj4+Pj4gQlJCQ1JfRUwyIGFjdHVhbGx5LiBTbyAnYXJtdjhwbXVfYnJhbmNo X2VuYWJsZScgY2FuIG9ubHkgc2V0IHRoZSBCUkJDUl9FTDIuQ0MsIHdoaWxlIHRoZQo+Pj4+Pgo+ Pj4+PiBCUkVDUl9FTDEuQ0MgaXMgc3RpbGwgMC4gVGhlIENZQ0xFU19DT1VOVCB3aWxsIGJlIGFs d2F5cyAwIGluIHJlY29yZHMuCj4+Pj4KPj4+Pgo+Pj4+IEFncmVlZCwgdGhpcyBpcyBhIHZhbGlk IHByb2JsZW0gaS5lIEJSQkNSX0VMMS5DQyBhbmQgQlJCQ1JfRUwyLkNDIGJvdGggbmVlZHMgdG8g YmUgc2V0Cj4+Pj4gZm9yIHZhbGlkIGN5Y2xlIGNvdW50IGluZm9ybWF0aW9uIHJlZ2FyZGxlc3Mg aWYgdGhlIGtlcm5lbCBydW5zIGluIEVMMSBvciBFTDIuIEEgc2ltcGxlCj4+Pj4gaGFjayBpbiB0 aGUgY3VycmVudCBjb2RlIHNldHRpbmcgQlJCQ1JfRUwxMi5DLCB3aGljaCBpbiB0dXJuIHNldHMg QlJCQ1JfRUwxLkNDIHdoZW4gdGhlCj4+Pj4ga2VybmVsIHJ1bnMgaW4gRUwyIHNvbHZlcyB0aGUg cHJvYmxlbS4KPj4+Pgo+Pj4+Pgo+Pj4+PiBBcyBhIHNvbHV0aW9uLCBtYXliZSBCUkJDUl9FTDEy IHNob3VsZCBiZSBhZGRlZCBmb3IgZHJpdmVyIGFjY29yZGluZyB0byB0aGUgcmVnaXN0ZXJzIGRl ZmluaXRpb24uCj4+Pj4KPj4+PiBSaWdodCwgd2lsbCBhZGQgdGhlIGRlZmluaXRpb24gZm9yIEJS QkNSX0VMMTIgaW4gYXJjaC9hcm02NC90b29scy9zeXNyZWcKPj4+Pgo+Pj4+Pgo+Pj4+PiBPciwg ZG8geW91IGhhdmUgYSBtb3JlIHN0YW5kYXJkIHNvbHV0aW9uPwo+Pj4+Cj4+Pj4gUmlnaHQsIHRo ZXJlIGFyZSBzb21lIG51YW5jZXMgaW52b2x2ZWQgaGVyZS4KPj4+Pgo+Pj4+IEtlcm5lbCBjb3Vs ZCBib290Cj4+Pj4gwqDCoMKgwqAgYS4gRGlyZWN0bHkgaW50byBFTDIgYW5kIHN0YXlzIGluIEVM MiBmb3IgZ29vZAo+Pj4+IGIuIERpcmVjdGx5IGludG8gRUwyIGJ1dCBzd2l0Y2hlcyBpbnRvIEVM MQo+Pj4+IGMuIERpcmVjdGx5IGludG8gRUwxIHdpdGhvdXQgZXZlciBnb2luZyBpbnRvIEVMMgo+ Pj4+Cj4+Pj4gSW4gYWxsIHRoZSBhYm92ZSBjYXNlcyBCUkJDUl9FTDEuQ0MgYW5kIEJSQkNSX0VM Mi5DQyBuZWVkcyB0byBiZSBzZXQgd2hlbiBjeWNsZSBjb3VudAo+Pj4+IGlzIHJlcXVlc3RlZCBp biB0aGUgcGVyZiBldmVudCBpbnRlcmZhY2UgKGV2ZW50LT5hdHRyLmJyYW5jaF9zYW1wbGVfdHlw ZSkgdmlhIGNsZWFyaW5nCj4+Pj4gUEVSRl9TQU1QTEVfQlJBTkNIX05PX0NZQ0xFUy4KPj4+Pgo+ Pj4+Cj4+Pj4gLSBGb3IgdGhlIGNhc2UgYXMgaW4gKGMpIHdoZXJlIGtlcm5lbCBib290cyBpbnRv IEVMMSBkaXJlY3RseSBhbmQgaGVuY2UgY2Fubm90IGV2ZXIgc2V0Cj4+Pj4gwqDCoMKgIEVMMiBy ZWdpc3RlciwgQlJCQ1JfRUwyLkNDIHdvdWxkIGJlIGEgYm9vdGluZyByZXF1aXJlbWVudCAtIHVw ZGF0ZWQgaW4gYm9vdGluZy5yc3QKPj4+Pgo+Pj4+IC0gRm9yIHRoZSBjYXNlcyBhcyBpbiAoYSkg YW5kIChiKSBrZXJuZWwgYm9vdHMgdmlhIEVMMiwgaGVuY2UgdGhlcmUgaXMgYW4gb3Bwb3J0dW5p dHkKPj4+PiDCoMKgwqAgdG8gc2V0IGJvdGggQlJCQ1JfRUwxLkNDICh2aWEgYWNjZXNzZWQgQlJC Q1JfRUwxMi5DQykgYW5kIEJSQkNSX0VMMi5DQy4gRGVwZW5kaW5nIG9uCj4+Pgo+Pj4gWW91IGRv bid0IG5lZWQgdG8gdXNlIEJSQkNSX0VMMTIsIGlmIHlvdSBkbyBpdCBlYXJseSBlbm91Z2gsIGJl Zm9yZQo+Pj4gSENSX0VMMi5FMkggPT0gMSBpcyBhcHBsaWVkLgo+Pgo+PiBBZ3JlZWQuIFBsZWFz ZSBmaW5kIHRoZSBjb2RlIGNoYW5nZSB3aGljaCBzb2x2ZXMgdGhpcyByZXBvcnRlZCBwcm9ibGVt LCBwbGVhc2UKPj4gaGF2ZSBhIGxvb2sgYW5kIGxldCBtZSBrbm93IGlmIGFueXRoaW5nIG5lZWRz IGNoYW5naW5nLgo+Pgo+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gwqAgRG9jdW1lbnRhdGlv bi9hcmNoL2FybTY0L2Jvb3RpbmcucnN0IHzCoCA2ICsrKysKPj4gwqAgYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9lbDJfc2V0dXAuaMKgwqAgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4+IMKgIGFyY2gvYXJtNjQvdG9vbHMvc3lzcmVnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCAzOCArKysrKysrKysrKysrKysrKysrKysrKwo+PiDCoCAzIGZpbGVzIGNoYW5nZWQsIDg5IGlu c2VydGlvbnMoKykKPj4KPj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJjaC9hcm02NC9i b290aW5nLnJzdCBiL0RvY3VtZW50YXRpb24vYXJjaC9hcm02NC9ib290aW5nLnJzdAo+PiBpbmRl eCBiNTc3NzZhNjhmMTUuLjIyNzZkZjI4NWU4MyAxMDA2NDQKPj4gLS0tIGEvRG9jdW1lbnRhdGlv bi9hcmNoL2FybTY0L2Jvb3RpbmcucnN0Cj4+ICsrKyBiL0RvY3VtZW50YXRpb24vYXJjaC9hcm02 NC9ib290aW5nLnJzdAo+PiBAQCAtMzQ5LDYgKzM0OSwxMiBAQCBCZWZvcmUganVtcGluZyBpbnRv IHRoZSBrZXJuZWwsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBtdXN0IGJlIG1ldDoKPj4gwqAg wqDCoMKgwqDCoCAtIEhXRkdXVFJfRUwyLm5TTVBSSV9FTDEgKGJpdCA1NCkgbXVzdCBiZSBpbml0 aWFsaXNlZCB0byAwYjAxLgo+PiDCoCArwqAgRm9yIENQVXMgd2l0aCBmZWF0dXJlIEJyYW5jaCBS ZWNvcmQgQnVmZmVyIEV4dGVuc2lvbiAoRkVBVF9CUkJFKToKPj4gKwo+PiArwqAgLSBJZiB0aGUg a2VybmVsIGlzIGVudGVyZWQgYXQgRUwxIGFuZCBFTDIgaXMgcHJlc2VudDoKPj4gKwo+PiArwqDC oMKgIC0gQlJCQ1JfRUwyLkNDIChiaXQgMykgbXVzdCBiZSBpbml0aWFsaXNlZCB0byAwYjEuCj4+ ICsKPj4gwqDCoMKgIEZvciBDUFVzIHdpdGggdGhlIFNjYWxhYmxlIE1hdHJpeCBFeHRlbnNpb24g RkE2NCBmZWF0dXJlIChGRUFUX1NNRV9GQTY0KToKPj4gwqAgwqDCoMKgIC0gSWYgRUwzIGlzIHBy ZXNlbnQ6Cj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsMl9zZXR1cC5o IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lbDJfc2V0dXAuaAo+PiBpbmRleCA4ZTVmZmI1OGY4 M2UuLjc1YjA0ZWZmMmRjNyAxMDA2NDQKPj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9l bDJfc2V0dXAuaAo+PiArKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsMl9zZXR1cC5oCj4+ IEBAIC0xNTAsNiArMTUwLDUwIEBACj4+IMKgwqDCoMKgwqAgbXNywqDCoMKgIGNwdHJfZWwyLCB4 MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gRGlzYWJsZSBjb3Byby4gdHJhcHMgdG8gRUwyCj4+ IMKgIC5lbmRtCj4+IMKgICsvKgo+PiArICogRW5hYmxlIEJSQkUgY3ljbGUgY291bnQKPj4gKyAq Cj4+ICsgKiBCUkJFIHJlcXVpcmVzIGJvdGggQlJCQ1JfRUwxLkNDIGFuZCBCUkJDUl9FTDIuQ0Mg ZmllbGRzLCBiZSBzZXQKPj4gKyAqIGZvciB0aGUgY3ljbGUgY291bnRzIHRvIGJlIGF2YWlsYWJs ZSBpbiBCUkJJTkY8Tj5fRUwxLkNDIGR1cmluZwo+PiArICogYnJhbmNoIHJlY29yZCBwcm9jZXNz aW5nIGFmdGVyIGEgUE1VIGludGVycnVwdC4gVGhpcyBlbmFibGVzIENDCj4+ICsgKiBmaWVsZCBv biBib3RoIHRoZXNlIHJlZ2lzdGVycyB3aGlsZSBzdGlsbCBleGVjdXRpbmcgaW5zaWRlIEVMMi4K Pj4gKyAqCj4+ICsgKiBCUkJFIGRyaXZlciB3b3VsZCBzdGlsbCBiZSBhYmxlIHRvIHRvZ2dsZSBi cmFuY2ggcmVjb3JkcyBjeWNsZQo+PiArICogY291bnQgc3VwcG9ydCB2aWEgQlJCQ1JfRUwxLkND IGZpZWxkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUKPj4gKyAqIGtlcm5lbCBlbmQgdXAgZXhl Y3V0aW5nIGluIEVMMSBvciBFTDIuCj4+ICsgKi8KPj4gKy5tYWNybyBfX2luaXRfZWwyX2JyYmUK Pj4gK8KgwqDCoCBtcnPCoMKgwqAgeDEsIGlkX2FhNjRkZnIwX2VsMQo+PiArwqDCoMKgIHViZnjC oMKgwqAgeDEsIHgxLCAjSURfQUE2NERGUjBfRUwxX0JSQkVfU0hJRlQsICM0Cj4+ICvCoMKgwqAg Y2J6wqDCoMKgIHgxLCAuTHNraXBfYnJiZV9jY19cQAo+PiArCj4+ICvCoMKgwqAgbXJzX3PCoMKg wqAgeDAsIFNZU19CUkJDUl9FTDIKPj4gK8KgwqDCoCBvcnLCoMKgwqAgeDAsIHgwLCBCUkJDUl9F TDJfQ0MKPj4gK8KgwqDCoCBtc3Jfc8KgwqDCoCBTWVNfQlJCQ1JfRUwyLCB4MAo+PiArCj4+ICvC oMKgwqAgLyoKPj4gK8KgwqDCoMKgICogQWNjZXNzaW5nIEJSQkNSX0VMMSByZWdpc3RlciBoZXJl IGRvZXMgbm90IHJlcXVpcmUKPj4gK8KgwqDCoMKgICogQlJCQ1JfRUwxMiBhZGRyZXNzaW5nIG1v ZGUgYXMgSENSX0VMMi5FMkggaXMgc3RpbGwKPj4gK8KgwqDCoMKgICogY2xlYXIuIFJlZ2FyZGxl c3MsIGNoZWNrIGZvciBIQ1JfRTJIIGFuZCBiZSBvbiB0aGUKPj4gK8KgwqDCoMKgICogc2FmZXIg c2lkZS4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgbXJzwqDCoMKgIHgxLCBoY3JfZWwyCj4+ ICvCoMKgwqAgYW5kwqDCoMKgIHgxLCB4MSwgI0hDUl9FMkgKPj4gK8KgwqDCoCBjYnrCoMKgwqAg eDEsIC5Mc2V0X2JyYmVfZWwxX2RpcmVjdF9cQAo+PiArCj4+ICvCoMKgwqAgbXJzX3PCoMKgwqAg eDAsIFNZU19CUkJDUl9FTDEyCj4+ICvCoMKgwqAgb3JywqDCoMKgIHgwLCB4MCwgQlJCQ1JfRUwx Ml9DQwo+PiArwqDCoMKgIG1zcl9zwqDCoMKgIFNZU19CUkJDUl9FTDEyLCB4MAo+PiArwqDCoMKg IGLCoMKgwqAgLkxza2lwX2JyYmVfY2NfXEAKPj4gKwo+PiArLkxzZXRfYnJiZV9lbDFfZGlyZWN0 X1xAOgo+PiArwqDCoMKgIG1yc19zwqDCoMKgIHgwLCBTWVNfQlJCQ1JfRUwxCj4+ICvCoMKgwqAg b3JywqDCoMKgIHgwLCB4MCwgQlJCQ1JfRUwxX0NDCj4+ICvCoMKgwqAgbXNyX3PCoMKgwqAgU1lT X0JSQkNSX0VMMSwgeDAKPj4gKwo+PiArLkxza2lwX2JyYmVfY2NfXEA6Cj4+ICsuZW5kbQo+PiAr Cj4+IMKgIC8qIERpc2FibGUgYW55IGZpbmUgZ3JhaW5lZCB0cmFwcyAqLwo+PiDCoCAubWFjcm8g X19pbml0X2VsMl9mZ3QKPj4gwqDCoMKgwqDCoCBtcnPCoMKgwqAgeDEsIGlkX2FhNjRtbWZyMF9l bDEKPj4gQEAgLTIyNCw2ICsyNjgsNyBAQAo+PiDCoMKgwqDCoMKgIF9faW5pdF9lbDJfbnZoZV9p ZHJlZ3MKPj4gwqDCoMKgwqDCoCBfX2luaXRfZWwyX2NwdHIKPj4gwqDCoMKgwqDCoCBfX2luaXRf ZWwyX2ZndAo+PiArwqDCoMKgIF9faW5pdF9lbDJfYnJiZQo+PiDCoCAuZW5kbQo+PiDCoCDCoCAj aWZuZGVmIF9fS1ZNX05WSEVfSFlQRVJWSVNPUl9fCj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0 L3Rvb2xzL3N5c3JlZyBiL2FyY2gvYXJtNjQvdG9vbHMvc3lzcmVnCj4+IGluZGV4IDk4OTJhZjk2 MjYyZi4uN2QxZDZiMzk3NmI0IDEwMDY0NAo+PiAtLS0gYS9hcmNoL2FybTY0L3Rvb2xzL3N5c3Jl Zwo+PiArKysgYi9hcmNoL2FybTY0L3Rvb2xzL3N5c3JlZwo+PiBAQCAtMTA0OCw2ICsxMDQ4LDQ0 IEBAIEVudW3CoMKgwqAgMTowwqDCoMKgIFZBTElECj4+IMKgIEVuZEVudW0KPj4gwqAgRW5kU3lz cmVnRmllbGRzCj4+IMKgICtTeXNyZWfCoMKgwqAgQlJCQ1JfRUwxMsKgwqDCoCAywqDCoMKgIDXC oMKgwqAgOcKgwqDCoCAwwqDCoMKgIDAKPj4gK1JlczDCoMKgwqAgNjM6MjQKPj4gK0ZpZWxkwqDC oMKgIDIzwqDCoMKgwqAgRVhDRVBUSU9OCj4+ICtGaWVsZMKgwqDCoCAyMsKgwqDCoMKgIEVSVE4K Pj4gK1JlczDCoMKgwqAgMjE6OQo+PiArRmllbGTCoMKgwqAgOMKgwqDCoMKgIEZaUAo+PiArUmVz MMKgwqDCoCA3Cj4+ICtFbnVtwqDCoMKgIDY6NcKgwqDCoCBUUwo+PiArwqDCoMKgIDBiMDHCoMKg wqAgVklSVFVBTAo+PiArwqDCoMKgIDBiMTDCoMKgwqAgR1VFU1RfUEhZU0lDQUwKPj4gK8KgwqDC oCAwYjExwqDCoMKgIFBIWVNJQ0FMCj4+ICtFbmRFbnVtCj4+ICtGaWVsZMKgwqDCoCA0wqDCoMKg IE1QUkVECj4+ICtGaWVsZMKgwqDCoCAzwqDCoMKgIENDCj4+ICtSZXMwwqDCoMKgIDIKPj4gK0Zp ZWxkwqDCoMKgIDHCoMKgwqAgRTFCUkUKPj4gK0ZpZWxkwqDCoMKgIDDCoMKgwqAgRTBCUkUKPj4g K0VuZFN5c3JlZwo+IAo+IEFzIHRoaXMgaXMgZXhhY3RseSBzYW1lIGFzIEJSQkNSX0VMMSwgcGxl YXNlIGNvdWxkIHdlIHVzZSBTeXNyZWdGaWVsZHMKPiBmb3IgQlJCQ1JfRUwxIGFuZCByZXVzZSBp dCBoZXJlID8KClN1cmUsIHdpbGwgYWRkICdTeXNyZWdGaWVsZHMgQlJCQ1JfRUx4JyBlbmxpc3Rp bmcgdGhlIHJlZ2lzdGVyIGZpZWxkcyB0bwpiZSB1c2VkIGFzICdGaWVsZHMgQlJCQ1JfRUx4JyBi b3RoIGZvciBCUkJDUl9FTDEgYW5kIEJSQkNSX0VMMTIuIEkgZ3Vlc3MKQlJCQ1JfRUwyIHN0aWxs IHJlbWFpbnMgdW5jaGFuZ2VkIGFzIGl0IGhhcyAnRTJCUkUnIGFuZCAnRTBIQlJFJyBmaWVsZHMu CgpCdXQgYXMgYSBjb25zZXF1ZW5jZSBhbGwgQlJCQ1JfRUwxX1hYWCBmaWVsZHMgdXNlZCBpbiB0 aGUgZHJpdmVyIGFuZCBpdHMKaGVhZGVyIG5lZWQgdG8gYmUgY29udmVydGVkIGFzIEJSQkNSX0VM eF9YWFguIFdpbGwgZG8gdGhlc2UgY2hhbmdlcy4KCj4gCj4gCj4gCj4+ICsKPj4gK1N5c3JlZ8Kg wqDCoCBCUkJDUl9FTDLCoMKgwqAgMsKgwqDCoCA0wqDCoMKgIDnCoMKgwqAgMMKgwqDCoCAwCj4+ ICtSZXMwwqDCoMKgIDYzOjI0Cj4+ICtGaWVsZMKgwqDCoCAyM8KgwqDCoMKgIEVYQ0VQVElPTgo+ PiArRmllbGTCoMKgwqAgMjLCoMKgwqDCoCBFUlROCj4+ICtSZXMwwqDCoMKgIDIxOjkKPj4gK0Zp ZWxkwqDCoMKgIDjCoMKgwqDCoCBGWlAKPj4gK1JlczDCoMKgwqAgNwo+PiArRW51bcKgwqDCoCA2 OjXCoMKgwqAgVFMKPj4gK8KgwqDCoCAwYjAxwqDCoMKgIFZJUlRVQUwKPj4gK8KgwqDCoCAwYjEw wqDCoMKgIEdVRVNUX1BIWVNJQ0FMCj4+ICvCoMKgwqAgMGIxMcKgwqDCoCBQSFlTSUNBTAo+PiAr RW5kRW51bQo+PiArRmllbGTCoMKgwqAgNMKgwqDCoCBNUFJFRAo+PiArRmllbGTCoMKgwqAgM8Kg wqDCoCBDQwo+PiArUmVzMMKgwqDCoCAyCj4+ICtGaWVsZMKgwqDCoCAxwqDCoMKgIEUxQlJFCj4g Cj4gRTJCUkU/Cj4+ICtGaWVsZMKgwqDCoCAwwqDCoMKgIEUwQlJFCj4gCj4gRTBIQlJFPwoKU3Vy ZSwgSSBoYXZlIGFscmVhZHkgdXBkYXRlZCB0aGlzIGluIHRoZSBkZXZlbG9wbWVudCB0cmVlLiBU aGlzIHdhcyBqdXN0IGEKaGFjayBmb3IgdGhlIGRpc2N1c3Npb24gcHVycG9zZS4KCj4gCj4gUmVz dCBsb29rcyBnb29kIHRvIG1lCj4gCj4gU3V6dWtpCj4gCj4+ICtFbmRTeXNyZWcKPj4gKwo+PiDC oCBTeXNyZWfCoMKgwqAgQlJCQ1JfRUwxwqDCoMKgIDLCoMKgwqAgMcKgwqDCoCA5wqDCoMKgIDDC oMKgwqAgMAo+PiDCoCBSZXMwwqDCoMKgIDYzOjI0Cj4+IMKgIEZpZWxkwqDCoMKgIDIzwqDCoMKg wqAgRVhDRVBUSU9OCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==