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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C95AEC004D4 for ; Thu, 19 Jan 2023 12:43:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230321AbjASMn4 (ORCPT ); Thu, 19 Jan 2023 07:43:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229767AbjASMnS (ORCPT ); Thu, 19 Jan 2023 07:43:18 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6069344BF3; Thu, 19 Jan 2023 04:42:01 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id EF2B360DE9; Thu, 19 Jan 2023 12:42:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 080DAC433EF; Thu, 19 Jan 2023 12:42:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1674132120; bh=292KzxUJN9VdU7M1zGSDQFahnk68KzKp/8zQpV+/Qwo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=bOzOefUiKR8aX+FEeId4evHN7e/JgrqWImv4P5WaA5/ZM8s5CXfpJUVruBJnzMmBV 9p01WozxvRhSlWnVUKWN7oIgihNxJ8GLQuD3krjykWvODiYdNrKkep5YAQtetr/kU0 PfgSqCJKmE0vpZ3SxIrxEJ05z1PGPLUSfDMaNJbYZvOGfR8aB/DrAwq2aOn9u06HPG npDNwR01lVQALNdAw5phf/f+R/XJq9KRyPu4d84udalZjhHD7frq0n+qDqB25uprPc JU6jdK6rvEDFS25eGFyJ1T8gzdU+soOmh8JUFyqdfY1VJqlh10CAQVgVxpVA0twXjN F90PWoCfBMY8g== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 7BCA1405BE; Thu, 19 Jan 2023 09:41:57 -0300 (-03) Date: Thu, 19 Jan 2023 09:41:57 -0300 From: Arnaldo Carvalho de Melo To: Jing Zhang Cc: John Garry , Ian Rogers , Xing Zhengjun , Will Deacon , James Clark , Mike Leach , Leo Yan , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Andrew Kilroy , Shuai Xue , Zhuo Song Subject: Re: [PATCH v8 0/9] Add metrics for neoverse-n2-v2 Message-ID: References: <1673940573-90503-1-git-send-email-renyu.zj@linux.alibaba.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1673940573-90503-1-git-send-email-renyu.zj@linux.alibaba.com> X-Url: http://acmel.wordpress.com Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org Em Tue, Jan 17, 2023 at 03:29:24PM +0800, Jing Zhang escreveu: > Changes since v7: > - Change pmu_core__find_same to pmu__find_core_pmu as suggested by Ian. > - Returned NAN when can't find a pmu or the value from */caps/slots is > zero, in perf_pmu__cpu_slots_per_cycle, as suggested by John. > - Link: https://lore.kernel.org/all/1673601740-122788-1-git-send-email-renyu.zj@linux.alibaba.com/ Thanks, applied. - Arnaldo > Changes since v6: > - Split patch 1 into 3 smaller patches as suggested by Ian. > - Change perf_pmu__get_slots to perf_pmu__cpu_slots_per_cycle, > per John's suggestion; > - Return NAN instead of 0 in perf_pmu__cpu_slots_per_cycle weak > function, per John's suggestion; > - Factor out pmu_core__find_same function, per John's suggestion. > - Link: https://lore.kernel.org/all/1673017529-1429208-1-git-send-email-renyu.zj@linux.alibaba.com/ > > Changes since v5: > - Add common topdownL1 metrics in sbsa.json as suggested by John; > - Correct PKI/MPKI ScaleUnit to 1PKI/1MPKI; > - Link: https://lore.kernel.org/all/1672745976-2800146-1-git-send-email-renyu.zj@linux.alibaba.com/ > > Changes since v4: > - Add MPKI/PKI “ScaleUnit”; > - Add acked-by from Ian Rogers; > - Link: https://lore.kernel.org/all/1671799045-1108027-1-git-send-email-renyu.zj@linux.alibaba.com/ > > Changes since v3: > - Add ipc_rate metric; > - Drop the PublicDescription; > - Describe PEutilization metrics in more detail; > - Link: https://lore.kernel.org/all/1669310088-13482-1-git-send-email-renyu.zj@linux.alibaba.com/ > > Changes since v2: > - Correct the furmula of Branch metrics; > - Add more PE utilization metrics; > - Add more TLB metrics; > - Add “ScaleUnit” for some metrics; > - Add a newline at the end of the file; > - Link: https://lore.kernel.org/all/1668411720-3581-1-git-send-email-renyu.zj@linux.alibaba.com/ > > Changes since v1: > - Corrected formula for topdown L1 due to wrong counts for stall_slot > and stall_slot_frontend; > - Link: https://lore.kernel.org/all/1667214694-89839-1-git-send-email-renyu.zj@linux.alibaba.com/ > > This series does the following things: > > The slots in each architecture may be different, so add #slots literal > to obtain the slots of different architectures, and the #slots can be > applied in the topdown metric. Currently, The #slots just support for > arm64, and other architectures will return NAN. > > The metrics of topdown L1 are from ARM sbsa7.0 platform design doc[0], > D37-38, which are standard. So put them in the common file sbsa.json of > arm64 and add general metric support, so that other cores besides n2/v2 > can also be reused. > > Then add topdownL1 metric for neoverse-n2-v2, and due to the wrong count > of stall_slot and stall_slot_frontend on neoverse-n2, the real stall_slot > and real stall_slot_frontend need to subtract cpu_cycles, so overwrite > the "MetricExpr" for neoverse-n2. > Reference from ARM neoverse-n2 errata notice [1], D117. > > Since neoverse-n2/neoverse-v2 does not yet support topdown L2, metricgroups > such as Cache, TLB, Branch, InstructionsMix, and PEutilization will be added > to further analysis of performance bottlenecks in the following patches. > Reference from ARM PMU guide [2][3]. > > [0] https://documentation-service.arm.com/static/60250c7395978b529036da86?token= > [1] https://documentation-service.arm.com/static/636a66a64e6cf12278ad89cb?token= > [2] https://documentation-service.arm.com/static/628f8fa3dfaf015c2b76eae8?token= > [3] https://documentation-service.arm.com/static/62cfe21e31ea212bb6627393?token= > > Tested in neoverse-n2: > > $./perf list > ... > Metric Groups: > > Branch: > branch_miss_pred_rate > [The rate of branches mis-predited to the overall branches] > branch_mpki > [The rate of branches mis-predicted per kilo instructions] > branch_pki > [The rate of branches retired per kilo instructions] > Cache: > l1d_cache_miss_rate > [The rate of L1 D-Cache misses to the overall L1 D-Cache] > l1d_cache_mpki > [The rate of L1 D-Cache misses per kilo instructions] > ... > > > $sudo ./perf stat -M TLB false_sharing 2 > > Performance counter stats for 'false_sharing 2': > > 29,940 L2D_TLB # 20.0 % l2_tlb_miss_rate (42.36%) > 5,998 L2D_TLB_REFILL (42.36%) > 1,753 L1I_TLB_REFILL # 0.1 % l1i_tlb_miss_rate (43.17%) > 2,173,957 L1I_TLB (43.17%) > 327,944,763 L1D_TLB # 0.0 % l1d_tlb_miss_rate (43.98%) > 22,485 L1D_TLB_REFILL (43.98%) > 497,210 L1I_TLB # 0.0 % itlb_walk_rate (44.83%) > 28 ITLB_WALK (44.83%) > 821,488,762 INST_RETIRED # 0.0 MPKI itlb_mpki (43.97%) > 122 ITLB_WALK (43.97%) > 744 DTLB_WALK # 0.0 % dtlb_walk_rate (43.01%) > 263,913,146 L1D_TLB (43.01%) > 779,073,875 INST_RETIRED # 0.0 MPKI dtlb_mpki (42.07%) > 1,050 DTLB_WALK (42.07%) > > 0.435864901 seconds time elapsed > > 1.201384000 seconds user > 0.000000000 seconds sys > > > $sudo ./perf stat -M TopDownL1 false_sharing 2 > > Performance counter stats for 'false_sharing 2': > > 3,408,960,257 cpu_cycles # 0.0 % bad_speculation > # 5.1 % retiring (66.79%) > 19,576,079,610 stall_slot (66.79%) > 877,673,452 op_spec (66.79%) > 876,324,270 op_retired (66.79%) > 3,406,548,064 cpu_cycles # 26.7 % frontend_bound (67.08%) > 7,961,814,801 stall_slot_frontend (67.08%) > 3,415,528,440 cpu_cycles # 68.8 % backend_bound (66.43%) > 11,746,647,747 stall_slot_backend (66.43%) > > 0.455229807 seconds time elapsed > > 1.243216000 seconds user > 0.000000000 seconds sys > > $sudo ./perf stat -M branch sleep 1 > > Performance counter stats for 'sleep 1': > > 901,495 INST_RETIRED # 223.6 PKI branch_pki > 201,603 BR_RETIRED > 901,495 INST_RETIRED # 10.0 MPKI branch_mpki > 9,004 BR_MIS_PRED_RETIRED > 9,004 BR_MIS_PRED_RETIRED # 4.5 % branch_miss_pred_rate > 201,603 BR_RETIRED > > 1.000794467 seconds time elapsed > > 0.000905000 seconds user > 0.000000000 seconds sys > > > Jing Zhang (9): > perf pmu: Add #slots literal support for arm64 > perf jevent: Add general metrics support > perf vendor events arm64: Add common topdown L1 metrics > perf vendor events arm64: Add topdown L1 metrics for neoverse-n2-v2 > perf vendor events arm64: Add TLB metrics for neoverse-n2-v2 > perf vendor events arm64: Add cache metrics for neoverse-n2-v2 > perf vendor events arm64: Add branch metrics for neoverse-n2-v2 > perf vendor events arm64: Add PE utilization metrics for > neoverse-n2-v2 > perf vendor events arm64: Add instruction mix metrics for > neoverse-n2-v2 > > tools/perf/arch/arm64/util/pmu.c | 35 ++- > .../arch/arm64/arm/neoverse-n2-v2/metrics.json | 273 +++++++++++++++++++++ > tools/perf/pmu-events/arch/arm64/sbsa.json | 30 +++ > tools/perf/pmu-events/jevents.py | 2 + > tools/perf/util/expr.c | 5 + > tools/perf/util/pmu.c | 6 + > tools/perf/util/pmu.h | 1 + > 7 files changed, 350 insertions(+), 2 deletions(-) > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/metrics.json > create mode 100644 tools/perf/pmu-events/arch/arm64/sbsa.json > > -- > 1.8.3.1 -- - Arnaldo 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 61198C004D4 for ; Thu, 19 Jan 2023 12:43:54 +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=na7P/xTHm36MiJnPJdL1ig99t6PyVBPa8pwSkK9m/88=; b=VZlkH2O2b0F3n8 k0RrZw3mk1dAzvqy3zvyehAYEN9DP3++df7q5ybx1pqVpAhgNq3ElmVbLsitX8KFiLlBF8Tn3ynEl AuQWHgJsAb1IbtUrnL/3c8WAYnGSrZRGae4uDzvmmvS066wiZ/Pb7c95GZVdOOwOUUwC8BNQF6V7o tNI/19LVxFQr8rXV4c2i+PeW+Ortbs3dePoaumcAjezUsieOKOlFfEAOtTaqzOOTGhoynksKvQbrU msFNbgBtJ8Eijt59L5E9HjWrDCI+sTFe/z7kHcctvfdedXvuyYhPL1KdcOX1+znzTgBttsvEEjeJM Id/6kLYzCXCdYlL//EIg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pIUF2-004qO4-2W; Thu, 19 Jan 2023 12:42:04 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pIUF0-004qNp-Bk for linux-arm-kernel@bombadil.infradead.org; Thu, 19 Jan 2023 12:42:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=7xeUn9GSJGoQmOI5Z9n4abB9HYB/hjJ8+Iyo2rwD+7U=; b=bTm3pVE4I5kGw06deEennMO2ou WOQmahE0hrU/SFrItXzzXR53mQxfpXk+xG/O+HISRLbyb7YsuacNATw5QHog0SRXVLKz3wTuYTsf+ cEkyUqIpFOXv2mkC4oK9PToBhHz7impBginWNQIgsReioaqSynrQhUGLFSKqV/o7dJhk7ytN0d9rZ nnHgACCMqHOo4GuQV16xpt/FAjFFX1oe7arpZXeU0cuoI2joAzd/b/ZlE1RQG1Rgz9xHEnNCTL1TG 3oXwASuNVk0jIrp80IJHQT4krZHFhLH7spbJ+kVOI7UMWVj16h9BLLYYrbir3w0jrGJo9Ct8XKdEh 99zu02ng==; Received: from [187.19.237.165] (helo=quaco.ghostprotocols.net) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1pIUEx-000xhx-QV; Thu, 19 Jan 2023 12:42:00 +0000 Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 7BCA1405BE; Thu, 19 Jan 2023 09:41:57 -0300 (-03) Date: Thu, 19 Jan 2023 09:41:57 -0300 From: Arnaldo Carvalho de Melo To: Jing Zhang Cc: John Garry , Ian Rogers , Xing Zhengjun , Will Deacon , James Clark , Mike Leach , Leo Yan , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Andrew Kilroy , Shuai Xue , Zhuo Song Subject: Re: [PATCH v8 0/9] Add metrics for neoverse-n2-v2 Message-ID: References: <1673940573-90503-1-git-send-email-renyu.zj@linux.alibaba.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1673940573-90503-1-git-send-email-renyu.zj@linux.alibaba.com> X-Url: http://acmel.wordpress.com 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 RW0gVHVlLCBKYW4gMTcsIDIwMjMgYXQgMDM6Mjk6MjRQTSArMDgwMCwgSmluZyBaaGFuZyBlc2Ny ZXZldToKPiBDaGFuZ2VzIHNpbmNlIHY3Ogo+IC0gQ2hhbmdlIHBtdV9jb3JlX19maW5kX3NhbWUg dG8gcG11X19maW5kX2NvcmVfcG11IGFzIHN1Z2dlc3RlZCBieSBJYW4uCj4gLSBSZXR1cm5lZCBO QU4gd2hlbiBjYW4ndCBmaW5kIGEgcG11IG9yIHRoZSB2YWx1ZSBmcm9tICovY2Fwcy9zbG90cyBp cwo+ICAgemVybywgaW4gcGVyZl9wbXVfX2NwdV9zbG90c19wZXJfY3ljbGUsIGFzIHN1Z2dlc3Rl ZCBieSBKb2huLgo+IC0gTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzE2NzM2MDE3 NDAtMTIyNzg4LTEtZ2l0LXNlbmQtZW1haWwtcmVueXUuempAbGludXguYWxpYmFiYS5jb20vCgpU aGFua3MsIGFwcGxpZWQuCgotIEFybmFsZG8KCiAKPiBDaGFuZ2VzIHNpbmNlIHY2Ogo+IC0gU3Bs aXQgcGF0Y2ggMSBpbnRvIDMgc21hbGxlciBwYXRjaGVzIGFzIHN1Z2dlc3RlZCBieSBJYW4uCj4g LSBDaGFuZ2UgcGVyZl9wbXVfX2dldF9zbG90cyB0byBwZXJmX3BtdV9fY3B1X3Nsb3RzX3Blcl9j eWNsZSwKPiAgIHBlciBKb2huJ3Mgc3VnZ2VzdGlvbjsKPiAtIFJldHVybiBOQU4gaW5zdGVhZCBv ZiAwIGluIHBlcmZfcG11X19jcHVfc2xvdHNfcGVyX2N5Y2xlIHdlYWsKPiAgIGZ1bmN0aW9uLCBw ZXIgSm9obidzIHN1Z2dlc3Rpb247Cj4gLSBGYWN0b3Igb3V0IHBtdV9jb3JlX19maW5kX3NhbWUg ZnVuY3Rpb24sIHBlciBKb2huJ3Mgc3VnZ2VzdGlvbi4KPiAtIExpbms6IGh0dHBzOi8vbG9yZS5r ZXJuZWwub3JnL2FsbC8xNjczMDE3NTI5LTE0MjkyMDgtMS1naXQtc2VuZC1lbWFpbC1yZW55dS56 akBsaW51eC5hbGliYWJhLmNvbS8KPiAKPiBDaGFuZ2VzIHNpbmNlIHY1Ogo+IC0gQWRkIGNvbW1v biB0b3Bkb3duTDEgbWV0cmljcyBpbiBzYnNhLmpzb24gYXMgc3VnZ2VzdGVkIGJ5IEpvaG47Cj4g LSBDb3JyZWN0IFBLSS9NUEtJIFNjYWxlVW5pdCB0byAxUEtJLzFNUEtJOwo+IC0gTGluazogaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzE2NzI3NDU5NzYtMjgwMDE0Ni0xLWdpdC1zZW5kLWVt YWlsLXJlbnl1LnpqQGxpbnV4LmFsaWJhYmEuY29tLwo+IAo+IENoYW5nZXMgc2luY2UgdjQ6Cj4g LSBBZGQgTVBLSS9QS0kg4oCcU2NhbGVVbml04oCdOwo+IC0gQWRkIGFja2VkLWJ5IGZyb20gSWFu IFJvZ2VyczsKPiAtIExpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8xNjcxNzk5MDQ1 LTExMDgwMjctMS1naXQtc2VuZC1lbWFpbC1yZW55dS56akBsaW51eC5hbGliYWJhLmNvbS8KPiAK PiBDaGFuZ2VzIHNpbmNlIHYzOgo+IC0gQWRkIGlwY19yYXRlIG1ldHJpYzsKPiAtIERyb3AgdGhl IFB1YmxpY0Rlc2NyaXB0aW9uOwo+IC0gRGVzY3JpYmUgUEV1dGlsaXphdGlvbiBtZXRyaWNzIGlu IG1vcmUgZGV0YWlsOwo+IC0gTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzE2Njkz MTAwODgtMTM0ODItMS1naXQtc2VuZC1lbWFpbC1yZW55dS56akBsaW51eC5hbGliYWJhLmNvbS8K PiAKPiBDaGFuZ2VzIHNpbmNlIHYyOgo+IC0gQ29ycmVjdCB0aGUgZnVybXVsYSBvZiBCcmFuY2gg bWV0cmljczsKPiAtIEFkZCBtb3JlIFBFIHV0aWxpemF0aW9uIG1ldHJpY3M7Cj4gLSBBZGQgbW9y ZSBUTEIgbWV0cmljczsKPiAtIEFkZCDigJxTY2FsZVVuaXTigJ0gZm9yIHNvbWUgbWV0cmljczsK PiAtIEFkZCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZTsKPiAtIExpbms6IGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2FsbC8xNjY4NDExNzIwLTM1ODEtMS1naXQtc2VuZC1lbWFpbC1y ZW55dS56akBsaW51eC5hbGliYWJhLmNvbS8KPiAKPiBDaGFuZ2VzIHNpbmNlIHYxOgo+IC0gQ29y cmVjdGVkIGZvcm11bGEgZm9yIHRvcGRvd24gTDEgZHVlIHRvIHdyb25nIGNvdW50cyBmb3Igc3Rh bGxfc2xvdAo+ICAgYW5kIHN0YWxsX3Nsb3RfZnJvbnRlbmQ7IAo+IC0gTGluazogaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvYWxsLzE2NjcyMTQ2OTQtODk4MzktMS1naXQtc2VuZC1lbWFpbC1yZW55 dS56akBsaW51eC5hbGliYWJhLmNvbS8KPiAKPiBUaGlzIHNlcmllcyBkb2VzIHRoZSBmb2xsb3dp bmcgdGhpbmdzOgo+IAo+IFRoZSBzbG90cyBpbiBlYWNoIGFyY2hpdGVjdHVyZSBtYXkgYmUgZGlm ZmVyZW50LCBzbyBhZGQgI3Nsb3RzIGxpdGVyYWwKPiB0byBvYnRhaW4gdGhlIHNsb3RzIG9mIGRp ZmZlcmVudCBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlICNzbG90cyBjYW4gYmUKPiBhcHBsaWVkIGlu IHRoZSB0b3Bkb3duIG1ldHJpYy4gQ3VycmVudGx5LCBUaGUgI3Nsb3RzIGp1c3Qgc3VwcG9ydCBm b3IKPiBhcm02NCwgYW5kIG90aGVyIGFyY2hpdGVjdHVyZXMgd2lsbCByZXR1cm4gTkFOLgo+IAo+ IFRoZSBtZXRyaWNzIG9mIHRvcGRvd24gTDEgYXJlIGZyb20gQVJNIHNic2E3LjAgcGxhdGZvcm0g ZGVzaWduIGRvY1swXSwKPiBEMzctMzgsIHdoaWNoIGFyZSBzdGFuZGFyZC4gU28gcHV0IHRoZW0g aW4gdGhlIGNvbW1vbiBmaWxlIHNic2EuanNvbiBvZgo+IGFybTY0IGFuZCBhZGQgZ2VuZXJhbCBt ZXRyaWMgc3VwcG9ydCwgc28gdGhhdCBvdGhlciBjb3JlcyBiZXNpZGVzIG4yL3YyCj4gY2FuIGFs c28gYmUgcmV1c2VkLgo+IAo+IFRoZW4gYWRkIHRvcGRvd25MMSBtZXRyaWMgZm9yIG5lb3ZlcnNl LW4yLXYyLCBhbmQgZHVlIHRvIHRoZSB3cm9uZyBjb3VudAo+IG9mIHN0YWxsX3Nsb3QgYW5kIHN0 YWxsX3Nsb3RfZnJvbnRlbmQgb24gbmVvdmVyc2UtbjIsIHRoZSByZWFsIHN0YWxsX3Nsb3QKPiBh bmQgcmVhbCBzdGFsbF9zbG90X2Zyb250ZW5kIG5lZWQgdG8gc3VidHJhY3QgY3B1X2N5Y2xlcywg c28gb3ZlcndyaXRlCj4gdGhlICJNZXRyaWNFeHByIiBmb3IgbmVvdmVyc2UtbjIuCj4gUmVmZXJl bmNlIGZyb20gQVJNIG5lb3ZlcnNlLW4yIGVycmF0YSBub3RpY2UgWzFdLCBEMTE3Lgo+IAo+IFNp bmNlIG5lb3ZlcnNlLW4yL25lb3ZlcnNlLXYyIGRvZXMgbm90IHlldCBzdXBwb3J0IHRvcGRvd24g TDIsIG1ldHJpY2dyb3Vwcwo+IHN1Y2ggYXMgQ2FjaGUsIFRMQiwgQnJhbmNoLCBJbnN0cnVjdGlv bnNNaXgsIGFuZCBQRXV0aWxpemF0aW9uIHdpbGwgYmUgYWRkZWQKPiB0byBmdXJ0aGVyIGFuYWx5 c2lzIG9mIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGluIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcy4K PiBSZWZlcmVuY2UgZnJvbSBBUk0gUE1VIGd1aWRlIFsyXVszXS4KPiAKPiBbMF0gaHR0cHM6Ly9k b2N1bWVudGF0aW9uLXNlcnZpY2UuYXJtLmNvbS9zdGF0aWMvNjAyNTBjNzM5NTk3OGI1MjkwMzZk YTg2P3Rva2VuPQo+IFsxXSBodHRwczovL2RvY3VtZW50YXRpb24tc2VydmljZS5hcm0uY29tL3N0 YXRpYy82MzZhNjZhNjRlNmNmMTIyNzhhZDg5Y2I/dG9rZW49Cj4gWzJdIGh0dHBzOi8vZG9jdW1l bnRhdGlvbi1zZXJ2aWNlLmFybS5jb20vc3RhdGljLzYyOGY4ZmEzZGZhZjAxNWMyYjc2ZWFlOD90 b2tlbj0KPiBbM10gaHR0cHM6Ly9kb2N1bWVudGF0aW9uLXNlcnZpY2UuYXJtLmNvbS9zdGF0aWMv NjJjZmUyMWUzMWVhMjEyYmI2NjI3MzkzP3Rva2VuPQo+IAo+IFRlc3RlZCBpbiBuZW92ZXJzZS1u MjoKPiAKPiAkLi9wZXJmIGxpc3QKPiAuLi4KPiBNZXRyaWMgR3JvdXBzOgo+IAo+IEJyYW5jaDoK PiAgIGJyYW5jaF9taXNzX3ByZWRfcmF0ZQo+ICAgICAgICBbVGhlIHJhdGUgb2YgYnJhbmNoZXMg bWlzLXByZWRpdGVkIHRvIHRoZSBvdmVyYWxsIGJyYW5jaGVzXQo+ICAgYnJhbmNoX21wa2kKPiAg ICAgICAgW1RoZSByYXRlIG9mIGJyYW5jaGVzIG1pcy1wcmVkaWN0ZWQgcGVyIGtpbG8gaW5zdHJ1 Y3Rpb25zXQo+ICAgYnJhbmNoX3BraQo+ICAgICAgICBbVGhlIHJhdGUgb2YgYnJhbmNoZXMgcmV0 aXJlZCBwZXIga2lsbyBpbnN0cnVjdGlvbnNdCj4gQ2FjaGU6Cj4gICBsMWRfY2FjaGVfbWlzc19y YXRlCj4gICAgICAgIFtUaGUgcmF0ZSBvZiBMMSBELUNhY2hlIG1pc3NlcyB0byB0aGUgb3ZlcmFs bCBMMSBELUNhY2hlXQo+ICAgbDFkX2NhY2hlX21wa2kKPiAgICAgICAgW1RoZSByYXRlIG9mIEwx IEQtQ2FjaGUgbWlzc2VzIHBlciBraWxvIGluc3RydWN0aW9uc10KPiAuLi4KPiAKPiAKPiAkc3Vk byAuL3BlcmYgc3RhdCAtTSBUTEIgZmFsc2Vfc2hhcmluZyAyCj4gCj4gIFBlcmZvcm1hbmNlIGNv dW50ZXIgc3RhdHMgZm9yICdmYWxzZV9zaGFyaW5nIDInOgo+IAo+ICAgICAgICAgICAgIDI5LDk0 MCAgICAgIEwyRF9UTEIgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIDIwLjAgJSAgbDJf dGxiX21pc3NfcmF0ZSAgICAgICAgICg0Mi4zNiUpCj4gICAgICAgICAgICAgIDUsOTk4ICAgICAg TDJEX1RMQl9SRUZJTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKDQyLjM2JSkKPiAgICAgICAgICAgICAgMSw3NTMgICAgICBMMUlfVExC X1JFRklMTCAgICAgICAgICAgICAgICAgICAjICAgICAgMC4xICUgIGwxaV90bGJfbWlzc19yYXRl ICAgICAgICAoNDMuMTclKQo+ICAgICAgICAgIDIsMTczLDk1NyAgICAgIEwxSV9UTEIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICg0My4xNyUpCj4gICAgICAgIDMyNyw5NDQsNzYzICAgICAgTDFEX1RMQiAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICAgIDAuMCAlICBsMWRfdGxiX21pc3NfcmF0ZSAgICAgICAgKDQzLjk4 JSkKPiAgICAgICAgICAgICAyMiw0ODUgICAgICBMMURfVExCX1JFRklMTCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNDMuOTglKQo+ICAg ICAgICAgICAgNDk3LDIxMCAgICAgIEwxSV9UTEIgICAgICAgICAgICAgICAgICAgICAgICAgICMg ICAgICAwLjAgJSAgaXRsYl93YWxrX3JhdGUgICAgICAgICAgICg0NC44MyUpCj4gICAgICAgICAg ICAgICAgIDI4ICAgICAgSVRMQl9XQUxLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQ0LjgzJSkKPiAgICAgICAgODIxLDQ4OCw3 NjIgICAgICBJTlNUX1JFVElSRUQgICAgICAgICAgICAgICAgICAgICAjICAgICAgMC4wIE1QS0kg IGl0bGJfbXBraSAgICAgICAgICAgICAoNDMuOTclKQo+ICAgICAgICAgICAgICAgIDEyMiAgICAg IElUTEJfV0FMSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICg0My45NyUpCj4gICAgICAgICAgICAgICAgNzQ0ICAgICAgRFRMQl9X QUxLICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgIDAuMCAlICBkdGxiX3dhbGtfcmF0ZSAg ICAgICAgICAgKDQzLjAxJSkKPiAgICAgICAgMjYzLDkxMywxNDYgICAgICBMMURfVExCICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoNDMuMDElKQo+ICAgICAgICA3NzksMDczLDg3NSAgICAgIElOU1RfUkVUSVJFRCAgICAgICAg ICAgICAgICAgICAgICMgICAgICAwLjAgTVBLSSAgZHRsYl9tcGtpICAgICAgICAgICAgICg0Mi4w NyUpCj4gICAgICAgICAgICAgIDEsMDUwICAgICAgRFRMQl9XQUxLICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQyLjA3JSkKPiAK PiAgICAgICAgMC40MzU4NjQ5MDEgc2Vjb25kcyB0aW1lIGVsYXBzZWQKPiAKPiAgICAgICAgMS4y MDEzODQwMDAgc2Vjb25kcyB1c2VyCj4gICAgICAgIDAuMDAwMDAwMDAwIHNlY29uZHMgc3lzCj4g Cj4gCj4gJHN1ZG8gLi9wZXJmIHN0YXQgLU0gVG9wRG93bkwxIGZhbHNlX3NoYXJpbmcgMgo+IAo+ ICBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAnZmFsc2Vfc2hhcmluZyAyJzoKPiAKPiAg ICAgIDMsNDA4LDk2MCwyNTcgICAgICBjcHVfY3ljbGVzICAgICAgICAgICAgICAgICAgICAgICAj ICAgICAgMC4wICUgIGJhZF9zcGVjdWxhdGlvbgo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgIDUuMSAlICByZXRpcmluZyAgICAgICAgICAg ICAgICAgKDY2Ljc5JSkKPiAgICAgMTksNTc2LDA3OSw2MTAgICAgICBzdGFsbF9zbG90ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo NjYuNzklKQo+ICAgICAgICA4NzcsNjczLDQ1MiAgICAgIG9wX3NwZWMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg2Ni43OSUp Cj4gICAgICAgIDg3NiwzMjQsMjcwICAgICAgb3BfcmV0aXJlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDY2Ljc5JSkKPiAgICAg IDMsNDA2LDU0OCwwNjQgICAgICBjcHVfY3ljbGVzICAgICAgICAgICAgICAgICAgICAgICAjICAg ICAyNi43ICUgIGZyb250ZW5kX2JvdW5kICAgICAgICAgICAoNjcuMDglKQo+ICAgICAgNyw5NjEs ODE0LDgwMSAgICAgIHN0YWxsX3Nsb3RfZnJvbnRlbmQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICg2Ny4wOCUpCj4gICAgICAzLDQxNSw1MjgsNDQw ICAgICAgY3B1X2N5Y2xlcyAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgNjguOCAlICBiYWNr ZW5kX2JvdW5kICAgICAgICAgICAgKDY2LjQzJSkKPiAgICAgMTEsNzQ2LDY0Nyw3NDcgICAgICBz dGFsbF9zbG90X2JhY2tlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoNjYuNDMlKQo+IAo+ICAgICAgICAwLjQ1NTIyOTgwNyBzZWNvbmRzIHRp bWUgZWxhcHNlZAo+IAo+ICAgICAgICAxLjI0MzIxNjAwMCBzZWNvbmRzIHVzZXIKPiAgICAgICAg MC4wMDAwMDAwMDAgc2Vjb25kcyBzeXMKPiAKPiAkc3VkbyAuL3BlcmYgc3RhdCAtTSBicmFuY2gg c2xlZXAgMQo+IAo+ICBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAnc2xlZXAgMSc6Cj4g Cj4gICAgICAgICAgICA5MDEsNDk1ICAgICAgSU5TVF9SRVRJUkVEICAgICAgICAgICAgICAgICAg ICAgIyAgICAyMjMuNiBQS0kgIGJyYW5jaF9wa2kKPiAgICAgICAgICAgIDIwMSw2MDMgICAgICBC Ul9SRVRJUkVECj4gICAgICAgICAgICA5MDEsNDk1ICAgICAgSU5TVF9SRVRJUkVEICAgICAgICAg ICAgICAgICAgICAgIyAgICAgMTAuMCBNUEtJICBicmFuY2hfbXBraQo+ICAgICAgICAgICAgICA5 LDAwNCAgICAgIEJSX01JU19QUkVEX1JFVElSRUQKPiAgICAgICAgICAgICAgOSwwMDQgICAgICBC Ul9NSVNfUFJFRF9SRVRJUkVEICAgICAgICAgICAgICAjICAgICAgNC41ICUgIGJyYW5jaF9taXNz X3ByZWRfcmF0ZQo+ICAgICAgICAgICAgMjAxLDYwMyAgICAgIEJSX1JFVElSRUQKPiAKPiAgICAg ICAgMS4wMDA3OTQ0Njcgc2Vjb25kcyB0aW1lIGVsYXBzZWQKPiAKPiAgICAgICAgMC4wMDA5MDUw MDAgc2Vjb25kcyB1c2VyCj4gICAgICAgIDAuMDAwMDAwMDAwIHNlY29uZHMgc3lzCj4gCj4gCj4g SmluZyBaaGFuZyAoOSk6Cj4gICBwZXJmIHBtdTogQWRkICNzbG90cyBsaXRlcmFsIHN1cHBvcnQg Zm9yIGFybTY0Cj4gICBwZXJmIGpldmVudDogQWRkIGdlbmVyYWwgbWV0cmljcyBzdXBwb3J0Cj4g ICBwZXJmIHZlbmRvciBldmVudHMgYXJtNjQ6IEFkZCBjb21tb24gdG9wZG93biBMMSBtZXRyaWNz Cj4gICBwZXJmIHZlbmRvciBldmVudHMgYXJtNjQ6IEFkZCB0b3Bkb3duIEwxIG1ldHJpY3MgZm9y IG5lb3ZlcnNlLW4yLXYyCj4gICBwZXJmIHZlbmRvciBldmVudHMgYXJtNjQ6IEFkZCBUTEIgbWV0 cmljcyBmb3IgbmVvdmVyc2UtbjItdjIKPiAgIHBlcmYgdmVuZG9yIGV2ZW50cyBhcm02NDogQWRk IGNhY2hlIG1ldHJpY3MgZm9yIG5lb3ZlcnNlLW4yLXYyCj4gICBwZXJmIHZlbmRvciBldmVudHMg YXJtNjQ6IEFkZCBicmFuY2ggbWV0cmljcyBmb3IgbmVvdmVyc2UtbjItdjIKPiAgIHBlcmYgdmVu ZG9yIGV2ZW50cyBhcm02NDogQWRkIFBFIHV0aWxpemF0aW9uIG1ldHJpY3MgZm9yCj4gICAgIG5l b3ZlcnNlLW4yLXYyCj4gICBwZXJmIHZlbmRvciBldmVudHMgYXJtNjQ6IEFkZCBpbnN0cnVjdGlv biBtaXggbWV0cmljcyBmb3IKPiAgICAgbmVvdmVyc2UtbjItdjIKPiAKPiAgdG9vbHMvcGVyZi9h cmNoL2FybTY0L3V0aWwvcG11LmMgICAgICAgICAgICAgICAgICAgfCAgMzUgKystCj4gIC4uLi9h cmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMi12Mi9tZXRyaWNzLmpzb24gICAgIHwgMjczICsrKysr KysrKysrKysrKysrKysrKwo+ICB0b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9zYnNh Lmpzb24gICAgICAgICB8ICAzMCArKysKPiAgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2pldmVudHMu cHkgICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICB0b29scy9wZXJmL3V0aWwvZXhwci5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCj4gIHRvb2xzL3BlcmYvdXRpbC9wbXUu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKPiAgdG9vbHMvcGVyZi91dGls L3BtdS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICA3IGZpbGVzIGNo YW5nZWQsIDM1MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4yLXYy L21ldHJpY3MuanNvbgo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9wbXUtZXZlbnRz L2FyY2gvYXJtNjQvc2JzYS5qc29uCj4gCj4gLS0gCj4gMS44LjMuMQoKLS0gCgotIEFybmFsZG8K Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwK