From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-il1-f169.google.com (mail-il1-f169.google.com [209.85.166.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 94D8E15EFC7 for ; Wed, 24 Apr 2024 15:14:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713971659; cv=none; b=K4ZRbZTmKEhJYmAUqvpZVZRVVica+Ly6/9C/o6c3BWWVe2pWMARP8c6lD92n/zO+7KIHRsxbi/dJW7yXLVgEk2UlGYZGF2aJ43jvRvZ58k8mS1yKGq25lEQi1lzeYYonVQUWF3tHJoeCeZQmB4FOL5s9q+oXkGrq9NM89Wd7I/E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713971659; c=relaxed/simple; bh=9ApGTsY8uxB5PcD5HHBxIE2iGBtDP6lO/IMIeZfW83Y=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=bD46+RcI1+nZsyVyKqWJumGkr08YQpwCztYx/PPDjPvXiMOX6ZQnoMIYhWQzx5CMX7lXwK/Y+lMNPXv9FyffbFyD+LypzeQw9pBzwgRIvbeSPzO/sEweaubB1JjWkMd7QlDascrjQ8CRoBjTsYEPmQILiDhu6Xv3L84FnRkJcnY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Cz/AbNt1; arc=none smtp.client-ip=209.85.166.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Cz/AbNt1" Received: by mail-il1-f169.google.com with SMTP id e9e14a558f8ab-36a0c8c5f18so109645ab.0 for ; Wed, 24 Apr 2024 08:14:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1713971657; x=1714576457; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=l96CL3C0CMjmESU5d/Yu/i0e8lRRnuduS9TzRkrFrs8=; b=Cz/AbNt1Xdf4OUbM6wP0UmJ/lTr//CYR2z5BhFNhyUKcx89V29c8HbcaMdwjVB3WR3 dGwqUT0n3lcvVyM0QYhqapM1NcN0r/pe+E+El2XgREoZOLnP5IzHc9pbIflScsYJbTE5 uYJLBKjJMHjPKCZXIBRVvZH2iota/vPeI4VyNiYFFVEN38iEMsYreIH7ztJ/8Qj+l1J/ 40UmBiHA7h+rHPpVCxUeqbD0rXL9/duwhYjophMvdbqqpgPgrnKeEbsoVmoywz8PQEQk JtFbubS6RDJzaVJK/4kfv31RKmFauUpjDdwUHy40MJCnUfg9wtJ6obdT6j601oqR/N0z kvew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713971657; x=1714576457; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l96CL3C0CMjmESU5d/Yu/i0e8lRRnuduS9TzRkrFrs8=; b=BUqV8zTcnxBM6m8jAaAWH/CIuU+nBQ+SQmbwotFUHJ6k4A9+7E2SBuNV3/a5yt1waT 3/2+CM+SDqSLtZ9CukP+8A4Fap7oIylNUDXyXrWxH1d59Qex09ir2D+bI9/I0Dc8SXO1 0UxU+hexC3KZMb0RsieIBXru3/DW0W+u73YunLU4nS82GQmC8qjA3J5HxZDShL1VUoeW WW9Fmge3nMINpHPdFHUDn4AXc53Kd7XVNCU9LPD6sNdvxGahg/5DoS0uOu1SbCS8eS+j NVBOidBtiXWXX1r4Raxlg9EkUEGi+Vih5uoMhjWMsy373kJHA0khStjifH0DU909CSS1 /M1A== X-Forwarded-Encrypted: i=1; AJvYcCVvbBpDtoe2EgnHwOXM9UF3RvkuB/79/cmJBwjAMFzDv31CQh8Yulut5PCp4YdkhRjuBDq/Viq1bkkEGP2MQ5fu5/anLbvuI4gJsMrJ X-Gm-Message-State: AOJu0YzMf5PtH2QFhpplA7ql5Mx/GoOarP1jrVSSFAQEllW59RzDBxVo 2f+yycj7nvQ9iDCjwwzmdgWx76MLKC88tlb9Wvn0zVDKo/Ajy4q94zarpbJB1Pu2hC21aaUWofV w1L+i5SMRAeUShE2F0yM1WFWfzfTNUZ7yBM36 X-Google-Smtp-Source: AGHT+IF1c/EmZd9psYA18Gea/5hrwJliRY1WEl7Zid/rcAB2YtofHNqZVPhKqZjEnOZaG/rK0JCnXz3rEn7q6LLfybA= X-Received: by 2002:a92:c9c9:0:b0:36b:fbb3:2e96 with SMTP id k9-20020a92c9c9000000b0036bfbb32e96mr227535ilq.22.1713971656469; Wed, 24 Apr 2024 08:14:16 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20240416061533.921723-1-irogers@google.com> In-Reply-To: From: Ian Rogers Date: Wed, 24 Apr 2024 08:14:02 -0700 Message-ID: Subject: Re: [PATCH v2 00/16] Consistently prefer sysfs/json events To: Atish Kumar Patra Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , James Clark , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-riscv@lists.infradead.org, Beeman Strong Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 23, 2024 at 5:28=E2=80=AFPM Atish Kumar Patra wrote: > > On Mon, Apr 15, 2024 at 11:15=E2=80=AFPM Ian Rogers = wrote: > > > > As discussed in: > > https://lore.kernel.org/lkml/20240217005738.3744121-1-atishp@rivosinc.c= om/ > > preferring sysfs/json events consistently (with or without a given > > PMU) will enable RISC-V's hope to customize legacy events in the perf > > tool. > > > > Thanks for remapping legacy events in a generic way. This looks great > and got rid of my > ugly arch specific way of remapping. Is there a good way for the > driver (e.g via sysfs) to tell the perf tool > whether to remap the legacy event or not ? > > In RISC-V the legacy systems without the new ISA extension may not > want to remap if running > the latest kernel. > > I described the problem in detail in the original thread as well. > https://lore.kernel.org/lkml/63d73f09-84e5-49e1-99f5-60f414b22d70@rivosin= c.com/ So the sysfs/json events have priority over the legacy hardware events with this patch series. I'm not clear on your question but here are some scenarios: 1) for a vendor/model with a CPUID json files want to be used: 1.1) the driver shouldn't advertise the events /sys/devices//even= ts 1.2) the json in the perf tool needs to have a mapfile.csv entry for the cpuid to a model directory containing the event json. In the directory the legacy events should be defined. 2) for a vendor/model with a CPUID the driver files should be used: 2.1) the driver should advertise the events in /sys/devices//even= ts 2.2) in the json for the CPUID avoid redefining the events 3) for a vendor/model with a CPUID the legacy events should be used: 3.1) the driver shouldn't advertise the events in /sys/devices//e= vents 3.2) in the json for the CPUID avoid defining the events Are you asking to have both sysfs and json events for a model? In this case, which have priority over the other? It's possible in the pmu.c code to have a prioritized lookup either from json then sysfs or vice-versa, at the moment it is first come first served. To some extent this can be seen on Intel uncore events where there are both sysfs and json events with the same config, when we reverse map if the sysfs name is loaded then it is reverse mapped in verbose log or by perf trace, whilst typically I think the json name is reverse mapped. Are you asking for the search order to be configurable by the driver? In the past I've considered that the search order may be configured in the tool and the user may want to provide their own directory containing additional events and metrics. > FWIW, for the entire series. > Tested-by: Atish Patra Thanks, I think we can go ahead to land this. Kan's comment was to ask for a follow up changing max_precise behavior and I'm hesitant to do two behavior changes in 1 patch series. Ian > > Some minor clean-up is performed on the way. > > > > v2. Additional cleanup particularly adding better error messages. Fix > > some line length issues on the earlier patches. > > > > Ian Rogers (16): > > perf parse-events: Factor out '/.../' parsing > > perf parse-events: Directly pass PMU to parse_events_add_pmu > > perf parse-events: Avoid copying an empty list > > perf pmu: Refactor perf_pmu__match > > perf tests parse-events: Use branches rather than cache-references > > perf parse-events: Legacy cache names on all PMUs and lower priority > > perf parse-events: Handle PE_TERM_HW in name_or_raw > > perf parse-events: Constify parse_events_add_numeric > > perf parse-events: Prefer sysfs/json hardware events over legacy > > perf parse-events: Inline parse_events_update_lists > > perf parse-events: Improve error message for bad numbers > > perf parse-events: Inline parse_events_evlist_error > > perf parse-events: Improvements to modifier parsing > > perf parse-event: Constify event_symbol arrays > > perf parse-events: Minor grouping tidy up > > perf parse-events: Tidy the setting of the default event name > > > > tools/perf/tests/parse-events.c | 6 +- > > tools/perf/util/parse-events.c | 482 ++++++++++++++++---------------- > > tools/perf/util/parse-events.h | 49 ++-- > > tools/perf/util/parse-events.l | 196 +++++++++---- > > tools/perf/util/parse-events.y | 261 +++++++---------- > > tools/perf/util/pmu.c | 27 +- > > tools/perf/util/pmu.h | 2 +- > > 7 files changed, 540 insertions(+), 483 deletions(-) > > > > -- > > 2.44.0.683.g7961c838ac-goog > > 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 8C917C4345F for ; Wed, 24 Apr 2024 15:14:27 +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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=BRaaQo47J5dvMz74TxG1hSK0Vu/d+Q7IQR+dBbsyF44=; b=v+ikWzK7VglamH lyKF2bD0RoTsr1DwJYDjIw/JW0D/4hiIvJkot3ixixoKLwEnsDto7bZn9MVSJ0HaEHCE8Ld/yP/7u VwmrYu2XWWhSNxwqbyKFL/YGSGNVtXk2G6amFVZXXeePzgIbh3jzHWGMc+vX+gS74vUBlgho0T//o qZ8YyXXf7ddmBCwgZgUa2nEaR0L4lwmw7Hk9lHKxuqJim85DyNUlOA6uiUon5f76M74xppVfKYO+n bQbtPQC8txBiOF03zavKV89pI0fn/i21Kth2bhbuBJdsUfmO/GQNytvr0aDNhYp8v50Ic0tN95kxY 1LePCWFBrR5o1qrDFLRA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rzeKE-00000004eSC-1vRU; Wed, 24 Apr 2024 15:14:22 +0000 Received: from mail-il1-x134.google.com ([2607:f8b0:4864:20::134]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rzeKA-00000004eQk-3Hde for linux-riscv@lists.infradead.org; Wed, 24 Apr 2024 15:14:20 +0000 Received: by mail-il1-x134.google.com with SMTP id e9e14a558f8ab-36a0c8c5f18so109655ab.0 for ; Wed, 24 Apr 2024 08:14:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1713971657; x=1714576457; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=l96CL3C0CMjmESU5d/Yu/i0e8lRRnuduS9TzRkrFrs8=; b=VDydcwFz5PEhGKLVif5/PRE8kvn7MweDRVx9JFG2yYiq5lppmzrCbjB5L7A0G6SPAt nzHYHn6Yfr8GqBRCtHYtwTC8D6BdTEFYaFSKZO/ZyOC7V3XFeRYoa9P3sQtLPmVt0Mis FYc7itOCY1TheeEF0rZII4Z3na4dL+1Bbb+v5UJSGfyf7pvR8qaW61f3ivnfjBVMWRg3 0f4qOWvPIuUpycyY0POtnNUXdAb+Hv7e/OLmFNZBq19SLxUUgJNGzPqLb0dnRdjpBZs6 kk0mo/ytSjvghyzm3EPDlo8A6KfDIJ/3Njb0vor0OSKsjPrqmmxlQPzhwM4cWKYEtBgV YisA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713971657; x=1714576457; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l96CL3C0CMjmESU5d/Yu/i0e8lRRnuduS9TzRkrFrs8=; b=T3ziV077RCF0uFFLeT5P0BgebhV6o1YoXvFjBWhyKlavtQOK2+KmiC0jwqOSd0OWCh DJLyMs8ojouTScx2FmQSZT2MM0R2iD6+4PSaF44IiY+a54/2BDQc9RDcqc/jOBpSSdHE pGbApHBoqbfKZkDzlBbzFjhe9J1C9k59HMov2qStFbN/COLzeVW0fra1DEhFaCpj9I11 C6Bjnf+X/ydsLvLeOrrueqr5Bx4axiwMKStgyu5ghiVc0VVYzLbi+PGCZ3gBK5wMuFkO UF4i6aWerAsYSDVsgHrDDH9dEI7SjT53EodX/trFSYvW9DvrSH+KzsoQbqLFGsCKZzFQ /iYg== X-Forwarded-Encrypted: i=1; AJvYcCVTxMfqoA28wSOv4JhexSU5y/dv6N9zW22F3lRPtOdUJRTDSQdF4JPkZ3kdlKQMNLmBX5pVBLsOOzszgotVNL4Om3SE/O+AZa80I8TSzbAJ X-Gm-Message-State: AOJu0YwBTy6K0MwnBFHXbaiYhZHkhUszhY+XOkXh3UWy4RO1skHL2dYd MJ9ArBCt3Zoo7bfJMi5jj0M1DLtlbFuP6O39yIys2qCO4O24098O1fYh1f7MMsn9EUDTfS2FymJ V8oSa1Bdjr5oEFo/Ftr2uqgutLAc5ZDKNjLDTH8lQd+J5bu0Wpuz9yek= X-Google-Smtp-Source: AGHT+IF1c/EmZd9psYA18Gea/5hrwJliRY1WEl7Zid/rcAB2YtofHNqZVPhKqZjEnOZaG/rK0JCnXz3rEn7q6LLfybA= X-Received: by 2002:a92:c9c9:0:b0:36b:fbb3:2e96 with SMTP id k9-20020a92c9c9000000b0036bfbb32e96mr227535ilq.22.1713971656469; Wed, 24 Apr 2024 08:14:16 -0700 (PDT) MIME-Version: 1.0 References: <20240416061533.921723-1-irogers@google.com> In-Reply-To: From: Ian Rogers Date: Wed, 24 Apr 2024 08:14:02 -0700 Message-ID: Subject: Re: [PATCH v2 00/16] Consistently prefer sysfs/json events To: Atish Kumar Patra Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , James Clark , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-riscv@lists.infradead.org, Beeman Strong X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240424_081418_872297_D1F20160 X-CRM114-Status: GOOD ( 30.33 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVHVlLCBBcHIgMjMsIDIwMjQgYXQgNToyOOKAr1BNIEF0aXNoIEt1bWFyIFBhdHJhIDxhdGlz aHBAcml2b3NpbmMuY29tPiB3cm90ZToKPgo+IE9uIE1vbiwgQXByIDE1LCAyMDI0IGF0IDExOjE1 4oCvUE0gSWFuIFJvZ2VycyA8aXJvZ2Vyc0Bnb29nbGUuY29tPiB3cm90ZToKPiA+Cj4gPiBBcyBk aXNjdXNzZWQgaW46Cj4gPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMjQwMjE3MDA1 NzM4LjM3NDQxMjEtMS1hdGlzaHBAcml2b3NpbmMuY29tLwo+ID4gcHJlZmVycmluZyBzeXNmcy9q c29uIGV2ZW50cyBjb25zaXN0ZW50bHkgKHdpdGggb3Igd2l0aG91dCBhIGdpdmVuCj4gPiBQTVUp IHdpbGwgZW5hYmxlIFJJU0MtVidzIGhvcGUgdG8gY3VzdG9taXplIGxlZ2FjeSBldmVudHMgaW4g dGhlIHBlcmYKPiA+IHRvb2wuCj4gPgo+Cj4gVGhhbmtzIGZvciByZW1hcHBpbmcgbGVnYWN5IGV2 ZW50cyBpbiBhIGdlbmVyaWMgd2F5LiBUaGlzIGxvb2tzIGdyZWF0Cj4gYW5kIGdvdCByaWQgb2Yg bXkKPiB1Z2x5IGFyY2ggc3BlY2lmaWMgd2F5IG9mIHJlbWFwcGluZy4gIElzIHRoZXJlIGEgZ29v ZCB3YXkgZm9yIHRoZQo+IGRyaXZlciAoZS5nIHZpYSBzeXNmcykgdG8gdGVsbCB0aGUgcGVyZiB0 b29sCj4gd2hldGhlciB0byByZW1hcCB0aGUgbGVnYWN5IGV2ZW50IG9yIG5vdCA/Cj4KPiBJbiBS SVNDLVYgdGhlIGxlZ2FjeSBzeXN0ZW1zIHdpdGhvdXQgdGhlIG5ldyBJU0EgZXh0ZW5zaW9uIG1h eSBub3QKPiB3YW50IHRvIHJlbWFwIGlmIHJ1bm5pbmcKPiB0aGUgbGF0ZXN0IGtlcm5lbC4KPgo+ IEkgZGVzY3JpYmVkIHRoZSBwcm9ibGVtIGluIGRldGFpbCBpbiB0aGUgb3JpZ2luYWwgdGhyZWFk IGFzIHdlbGwuCj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC82M2Q3M2YwOS04NGU1LTQ5 ZTEtOTlmNS02MGY0MTRiMjJkNzBAcml2b3NpbmMuY29tLwoKU28gdGhlIHN5c2ZzL2pzb24gZXZl bnRzIGhhdmUgcHJpb3JpdHkgb3ZlciB0aGUgbGVnYWN5IGhhcmR3YXJlIGV2ZW50cwp3aXRoIHRo aXMgcGF0Y2ggc2VyaWVzLiBJJ20gbm90IGNsZWFyIG9uIHlvdXIgcXVlc3Rpb24gYnV0IGhlcmUg YXJlCnNvbWUgc2NlbmFyaW9zOgoKMSkgZm9yIGEgdmVuZG9yL21vZGVsIHdpdGggYSBDUFVJRCBq c29uIGZpbGVzIHdhbnQgdG8gYmUgdXNlZDoKMS4xKSB0aGUgZHJpdmVyIHNob3VsZG4ndCBhZHZl cnRpc2UgdGhlIGV2ZW50cyAvc3lzL2RldmljZXMvPHBtdSBuYW1lPi9ldmVudHMKMS4yKSB0aGUg anNvbiBpbiB0aGUgcGVyZiB0b29sIG5lZWRzIHRvIGhhdmUgYSBtYXBmaWxlLmNzdiBlbnRyeSBm b3IKdGhlIGNwdWlkIHRvIGEgbW9kZWwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV2ZW50IGpz b24uIEluIHRoZQpkaXJlY3RvcnkgdGhlIGxlZ2FjeSBldmVudHMgc2hvdWxkIGJlIGRlZmluZWQu CgoyKSBmb3IgYSB2ZW5kb3IvbW9kZWwgd2l0aCBhIENQVUlEIHRoZSBkcml2ZXIgZmlsZXMgc2hv dWxkIGJlIHVzZWQ6CjIuMSkgdGhlIGRyaXZlciBzaG91bGQgYWR2ZXJ0aXNlIHRoZSBldmVudHMg aW4gL3N5cy9kZXZpY2VzLzxwbXUgbmFtZT4vZXZlbnRzCjIuMikgaW4gdGhlIGpzb24gZm9yIHRo ZSBDUFVJRCBhdm9pZCByZWRlZmluaW5nIHRoZSBldmVudHMKCjMpIGZvciBhIHZlbmRvci9tb2Rl bCB3aXRoIGEgQ1BVSUQgdGhlIGxlZ2FjeSBldmVudHMgc2hvdWxkIGJlIHVzZWQ6CjMuMSkgdGhl IGRyaXZlciBzaG91bGRuJ3QgYWR2ZXJ0aXNlIHRoZSBldmVudHMgaW4gL3N5cy9kZXZpY2VzLzxw bXUgbmFtZT4vZXZlbnRzCjMuMikgaW4gdGhlIGpzb24gZm9yIHRoZSBDUFVJRCBhdm9pZCBkZWZp bmluZyB0aGUgZXZlbnRzCgpBcmUgeW91IGFza2luZyB0byBoYXZlIGJvdGggc3lzZnMgYW5kIGpz b24gZXZlbnRzIGZvciBhIG1vZGVsPyBJbiB0aGlzCmNhc2UsIHdoaWNoIGhhdmUgcHJpb3JpdHkg b3ZlciB0aGUgb3RoZXI/IEl0J3MgcG9zc2libGUgaW4gdGhlIHBtdS5jCmNvZGUgdG8gaGF2ZSBh IHByaW9yaXRpemVkIGxvb2t1cCBlaXRoZXIgZnJvbSBqc29uIHRoZW4gc3lzZnMgb3IKdmljZS12 ZXJzYSwgYXQgdGhlIG1vbWVudCBpdCBpcyBmaXJzdCBjb21lIGZpcnN0IHNlcnZlZC4gVG8gc29t ZQpleHRlbnQgdGhpcyBjYW4gYmUgc2VlbiBvbiBJbnRlbCB1bmNvcmUgZXZlbnRzIHdoZXJlIHRo ZXJlIGFyZSBib3RoCnN5c2ZzIGFuZCBqc29uIGV2ZW50cyB3aXRoIHRoZSBzYW1lIGNvbmZpZywg d2hlbiB3ZSByZXZlcnNlIG1hcCBpZiB0aGUKc3lzZnMgbmFtZSBpcyBsb2FkZWQgdGhlbiBpdCBp cyByZXZlcnNlIG1hcHBlZCBpbiB2ZXJib3NlIGxvZyBvciBieQpwZXJmIHRyYWNlLCB3aGlsc3Qg dHlwaWNhbGx5IEkgdGhpbmsgdGhlIGpzb24gbmFtZSBpcyByZXZlcnNlIG1hcHBlZC4KQXJlIHlv dSBhc2tpbmcgZm9yIHRoZSBzZWFyY2ggb3JkZXIgdG8gYmUgY29uZmlndXJhYmxlIGJ5IHRoZSBk cml2ZXI/CkluIHRoZSBwYXN0IEkndmUgY29uc2lkZXJlZCB0aGF0IHRoZSBzZWFyY2ggb3JkZXIg bWF5IGJlIGNvbmZpZ3VyZWQgaW4KdGhlIHRvb2wgYW5kIHRoZSB1c2VyIG1heSB3YW50IHRvIHBy b3ZpZGUgdGhlaXIgb3duIGRpcmVjdG9yeQpjb250YWluaW5nIGFkZGl0aW9uYWwgZXZlbnRzIGFu ZCBtZXRyaWNzLgoKPiBGV0lXLCBmb3IgdGhlIGVudGlyZSBzZXJpZXMuCj4gVGVzdGVkLWJ5OiBB dGlzaCBQYXRyYSA8YXRpc2hwQHJpdm9zaW5jLmNvbT4KClRoYW5rcywgSSB0aGluayB3ZSBjYW4g Z28gYWhlYWQgdG8gbGFuZCB0aGlzLiBLYW4ncyBjb21tZW50IHdhcyB0byBhc2sKZm9yIGEgZm9s bG93IHVwIGNoYW5naW5nIG1heF9wcmVjaXNlIGJlaGF2aW9yIGFuZCBJJ20gaGVzaXRhbnQgdG8g ZG8KdHdvIGJlaGF2aW9yIGNoYW5nZXMgaW4gMSBwYXRjaCBzZXJpZXMuCgpJYW4KCj4gPiBTb21l IG1pbm9yIGNsZWFuLXVwIGlzIHBlcmZvcm1lZCBvbiB0aGUgd2F5Lgo+ID4KPiA+IHYyLiBBZGRp dGlvbmFsIGNsZWFudXAgcGFydGljdWxhcmx5IGFkZGluZyBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMu IEZpeAo+ID4gICAgIHNvbWUgbGluZSBsZW5ndGggaXNzdWVzIG9uIHRoZSBlYXJsaWVyIHBhdGNo ZXMuCj4gPgo+ID4gSWFuIFJvZ2VycyAoMTYpOgo+ID4gICBwZXJmIHBhcnNlLWV2ZW50czogRmFj dG9yIG91dCAnPGV2ZW50X29yX3BtdT4vLi4uLycgcGFyc2luZwo+ID4gICBwZXJmIHBhcnNlLWV2 ZW50czogRGlyZWN0bHkgcGFzcyBQTVUgdG8gcGFyc2VfZXZlbnRzX2FkZF9wbXUKPiA+ICAgcGVy ZiBwYXJzZS1ldmVudHM6IEF2b2lkIGNvcHlpbmcgYW4gZW1wdHkgbGlzdAo+ID4gICBwZXJmIHBt dTogUmVmYWN0b3IgcGVyZl9wbXVfX21hdGNoCj4gPiAgIHBlcmYgdGVzdHMgcGFyc2UtZXZlbnRz OiBVc2UgYnJhbmNoZXMgcmF0aGVyIHRoYW4gY2FjaGUtcmVmZXJlbmNlcwo+ID4gICBwZXJmIHBh cnNlLWV2ZW50czogTGVnYWN5IGNhY2hlIG5hbWVzIG9uIGFsbCBQTVVzIGFuZCBsb3dlciBwcmlv cml0eQo+ID4gICBwZXJmIHBhcnNlLWV2ZW50czogSGFuZGxlIFBFX1RFUk1fSFcgaW4gbmFtZV9v cl9yYXcKPiA+ICAgcGVyZiBwYXJzZS1ldmVudHM6IENvbnN0aWZ5IHBhcnNlX2V2ZW50c19hZGRf bnVtZXJpYwo+ID4gICBwZXJmIHBhcnNlLWV2ZW50czogUHJlZmVyIHN5c2ZzL2pzb24gaGFyZHdh cmUgZXZlbnRzIG92ZXIgbGVnYWN5Cj4gPiAgIHBlcmYgcGFyc2UtZXZlbnRzOiBJbmxpbmUgcGFy c2VfZXZlbnRzX3VwZGF0ZV9saXN0cwo+ID4gICBwZXJmIHBhcnNlLWV2ZW50czogSW1wcm92ZSBl cnJvciBtZXNzYWdlIGZvciBiYWQgbnVtYmVycwo+ID4gICBwZXJmIHBhcnNlLWV2ZW50czogSW5s aW5lIHBhcnNlX2V2ZW50c19ldmxpc3RfZXJyb3IKPiA+ICAgcGVyZiBwYXJzZS1ldmVudHM6IElt cHJvdmVtZW50cyB0byBtb2RpZmllciBwYXJzaW5nCj4gPiAgIHBlcmYgcGFyc2UtZXZlbnQ6IENv bnN0aWZ5IGV2ZW50X3N5bWJvbCBhcnJheXMKPiA+ICAgcGVyZiBwYXJzZS1ldmVudHM6IE1pbm9y IGdyb3VwaW5nIHRpZHkgdXAKPiA+ICAgcGVyZiBwYXJzZS1ldmVudHM6IFRpZHkgdGhlIHNldHRp bmcgb2YgdGhlIGRlZmF1bHQgZXZlbnQgbmFtZQo+ID4KPiA+ICB0b29scy9wZXJmL3Rlc3RzL3Bh cnNlLWV2ZW50cy5jIHwgICA2ICstCj4gPiAgdG9vbHMvcGVyZi91dGlsL3BhcnNlLWV2ZW50cy5j ICB8IDQ4MiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ID4gIHRvb2xzL3BlcmYv dXRpbC9wYXJzZS1ldmVudHMuaCAgfCAgNDkgKystLQo+ID4gIHRvb2xzL3BlcmYvdXRpbC9wYXJz ZS1ldmVudHMubCAgfCAxOTYgKysrKysrKysrLS0tLQo+ID4gIHRvb2xzL3BlcmYvdXRpbC9wYXJz ZS1ldmVudHMueSAgfCAyNjEgKysrKysrKy0tLS0tLS0tLS0KPiA+ICB0b29scy9wZXJmL3V0aWwv cG11LmMgICAgICAgICAgIHwgIDI3ICstCj4gPiAgdG9vbHMvcGVyZi91dGlsL3BtdS5oICAgICAg ICAgICB8ICAgMiArLQo+ID4gIDcgZmlsZXMgY2hhbmdlZCwgNTQwIGluc2VydGlvbnMoKyksIDQ4 MyBkZWxldGlvbnMoLSkKPiA+Cj4gPiAtLQo+ID4gMi40NC4wLjY4My5nNzk2MWM4MzhhYy1nb29n Cj4gPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=