AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 23 Oct 2025 15:25:32 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 59NEKe46024940; Thu, 23 Oct 2025 15:25:31 GMT Received: from smtprelay05.wdc07v.mail.ibm.com ([172.16.1.72]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49vpqk6dja-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 23 Oct 2025 15:25:31 +0000 Received: from smtpav05.dal12v.mail.ibm.com (smtpav05.dal12v.mail.ibm.com [10.241.53.104]) by smtprelay05.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 59NFPTgN18678322 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 23 Oct 2025 15:25:29 GMT Received: from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 77D4F58068; Thu, 23 Oct 2025 15:25:29 +0000 (GMT) Received: from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9A30858052; Thu, 23 Oct 2025 15:25:27 +0000 (GMT) Received: from [9.111.75.188] (unknown [9.111.75.188]) by smtpav05.dal12v.mail.ibm.com (Postfix) with ESMTP; Thu, 23 Oct 2025 15:25:27 +0000 (GMT) Message-ID: <163456ca8cf900e24fe3b9ce71fdad7b68398058.camel@linux.ibm.com> Subject: Re: Potential issue with hypervisor_isolated_pci_functions() handling From: Niklas Schnelle To: Huacai Chen Cc: Jan Kiszka , Bjorn Helgaas , linux-pci , jailhouse-dev@googlegroups.com, linux-s390 , loongarch@lists.linux.dev, Farhan Ali , Matthew Rosato , Tianrui Zhao , Gerd Bayer Date: Thu, 23 Oct 2025 17:25:26 +0200 In-Reply-To: References: Autocrypt: addr=schnelle@linux.ibm.com; prefer-encrypt=mutual; keydata=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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.56.2 (3.56.2-2.fc42) Precedence: bulk X-Mailing-List: linux-s390@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=FMYWBuos c=1 sm=1 tr=0 ts=68fa48ec cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=uhtPpr09aKWp3gP-ho0A:9 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-GUID: ZBgHrv1JQDBXENfk-qIC_lEA0Wtq6V72 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDE4MDAyMiBTYWx0ZWRfXzMjW0m/1vB95 2MaFFBa4iLTkdbp912zRW7gFiblNMEJD0oLuVqwHlST+XlBE0WyAuy0XPYrmBCuyr5JI8RbYwHQ ZPU4MMT4U3YS6gd6dy+T4KjYW6rMigztVzkiobKsmbKK1gX7IvVn3N2XNxsMVyYAQn2Zp9cXGYB w0UljYwuvC2QTjPTY476pQuoY7uhNfkj3mRASxX2lBlysgROUHY3DrefgJv3eUjclEjwPaH7mPw JbbMYbkSHywvbxRSmpf1nrB3aTv+3T09rCBt00tycm/ToS02S7bfRdV7ueXc1EwlcKONeW/KlPd 4PN3MVrIxeoiYSUTirmL/a+jTbTrJ0GqQKv9gIo+CK2oCg1wlXKWk3g402SEDvmjUJ0vpSqt1mH +ekX41uszhHUGZOzzCnsXDUmCogeGg== X-Proofpoint-ORIG-GUID: ZBgHrv1JQDBXENfk-qIC_lEA0Wtq6V72 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-23_01,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 priorityscore=1501 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 spamscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510180022 X-DKIM: signer='ibm.com' status='pass' reason='' DKIMCheck: Server passes DKIM test, 0 Spam score X-Spam-Score: 0.5 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (0.5 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [213.196.21.55 listed in list.dnswl.org] 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager SpamTally: Final spam score: 5 On Wed, 2025-10-22 at 22:49 +0800, Huacai Chen wrote: > Hi, Niklas, >=20 > On Wed, Oct 22, 2025 at 7:40=E2=80=AFPM Niklas Schnelle wrote: > >=20 > > Hi Huacai, Hi Jan, Hi Bjorn, > >=20 > > I noticed that with commit a02fd05661d7 ("PCI: Extend isolated function > > probing to LoongArch") LoongArch now also makes use of the isolated > > function probing. First, nice to see this sees more users and that the > > interface is useful to you. > >=20 > > Seeing this, I was reminded of an issue I ran into when using this > > mechanism with SR-IOV capable devices. In that case VFs with devfn > 7 > > and PCI_SLOT(devfn) !=3D 0 wouldn't get probed. > > This is because if a device is found next_fn() will check whether dev- > > > multifunction is set. So if for example devfn =3D=3D 8 is found (fn = =3D=3D 0) > > dev->multifunction won't be set in pci_scan_slot() and for VFs it's > > also not set via PCI_HEADER_TYPE_MFD. So we won't check for devfn =3D= =3D 9 > > even though that could very well be there. > >=20 > > Now for s390 this currently doesn't cause issues because for all > > multifunction devices we have, we either get a VF alone and then since > > commit 25f39d3dcb48 ("s390/pci: Ignore RID for isolated VFs") use devfn > > =3D=3D 0, or we have the parent PF passed-through and then VFs always g= et > > hot plugged after SR-IOV enable, which then uses > > pci_scan_single_device(). And for non VFs we always have devfn =3D=3D 0 > > and/or devfn =3D=3D 1 and multifunction via the header. So in a sense t= he > > above commit works around the issue, though that wasn't its primary > > intention. > >=20 > > Did either of you also run into this issue or can reproduce it? > >=20 > > Somewhat related, if ARI is enabled this would also break the isolated > > function case including on s390 where ARI is used by the platform > > firmware, but detected as off by Linux because there is no struct > > pci_dev associated with the PCI bus. If I patch Linux to correctly > > detect ARI, it no longer finds an isolated PF with devfn =3D=3D 1. > LoongArch do have some problems after commit a02fd05661d7 ("PCI: > Extend isolated function probing to LoongArch"). Please see: > https://lore.kernel.org/linux-pci/20251014074100.2149737-1-chenhuacai@loo= ngson.cn/ >=20 > Now we don't know what happens exactly, so I haven't answered Bjorn's > question... >=20 > Huacai >=20 Hi Huacai, I have now send[0] a fix proposal together with correctly exposing ARI enablement in s390. I also reproduced both the issue I saw with SR-IOV and with ARI and confirmed that the first patch in the series fixes them. You're on Cc and I'd highly appreciate if you could test whether this fixes your issues as well. Thanks, Niklas [0] https://lore.kernel.org/linux-pci/20251023-ari_no_bus_dev-v4-0-8482e2ed10bd= @linux.ibm.com/ From - Thu Oct 23 17:32:07 2025 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id ICekBZZm+mjTZQUAYBR5ng (envelope-from ); Thu, 23 Oct 2025 17:32:06 +0000 Return-path: Envelope-to: pfeifferj@archlinux.ch Delivery-date: Thu, 23 Oct 2025 17:32:06 +0000 Received: from outbound250.iterable.com ([69.72.36.250]) by witcher.mxrouting.net with esmtps (TLS1.2) tls TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vBzAT-00000002YcA-2Ona for pfeifferj@archlinux.ch; Thu, 23 Oct 2025 17:32:06 +0000 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=email.claude.com; q=dns/txt; s=mailo; t=1761240724; x=1761247924; h=Message-Id: List-Unsubscribe: X-Feedback-Id: Reply-To: List-Unsubscribe-Post: To: To: From: From: Subject: Subject: Content-Type: Mime-Version: Date: Sender: Sender; bh=/0QPJPUkuGodkSCuXsW5WcDqYhkXhNlcVScDOrAU8ss=; b=6Q3zUxJnEraUA7l7K/XqHiV/YNOc2Nb6QcfzxpEkx04dxlvfXMAy2IUcLp2I0+mRJH5JL6NGZwGEcfXnk0hi0E80TzJpc2PU7mnRR4e9oRU7z/IlXuxdnHQpMX0rwBRQrAeONE9bCKu6+wW5LN5IztOUozGzFXIwOouYilT11qQ= X-Mailgun-Sid: WyJhYTU5MCIsInBmZWlmZmVyakBhcmNobGludXguY2giLCJlMjk4OWQiXQ== Received: by 9b20bc724d97204d6be8033c166f16b1f833ea978dd83a398d8c2c6ede4a477f with HTTP id 68fa66939259b081d9978b14; Thu, 23 Oct 2025 17:32:03 GMT X-Mailgun-Sending-Ip-Pool-Name: Primary Iterable Shared X-Mailgun-Sending-Ip-Pool: 5f5906e148d17eb79438cb88 X-Mailgun-Sending-Ip: 69.72.36.250 Sender: no-reply@email.claude.com Date: Thu, 23 Oct 2025 17:32:03 +0000 Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="6d77d2e856852cddbfc235022aca06770387109b436a13d78adbf5e3f414" Subject: New: Claude now has memory From: Claude Team To: pfeifferj@archlinux.ch Feedback-Id: 20059560:15412749:109689:iterable List-Unsubscribe-Post: List-Unsubscribe=One-Click Reply-To: no-reply@email.claude.com X-Feedback-Id: 20059560:15412749:109689:iterable X-Campaign-Id: 15412749 X-Message-Id: 125a4fb89ded4805bd544781ec7a5aeb List-Unsubscribe: , X-Mailgun-Variables: {"metadata": "{\"messageId\":\"125a4fb89ded4805bd544781ec7a5aeb\",\"templateId\":20059560,\"projectId\":25150,\"campaignId\":15412749}"} Message-Id: <20251023173203.e342ecbec771f407@email.claude.com> X-DKIM: signer='email.claude.com' status='pass' reason='' DKIMCheck: Server passes DKIM test, 0 Spam score X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (2.4 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more FmZWZyYW1lLnVzZXJjb250ZW50Lmdvb2eCGiouc2FuZGJveC51c2VyY29udGVudC5nb29nghYqLnNjZi51c2VyY29udGVudC5nb29nghsqLmlzb2xhdGVkLnVzZXJjb250ZW50Lmdvb2eCGSouc3RhdGljLnVzZXJjb250ZW50Lmdvb2eCHSouYWRzLXN0YXRpYy51c2VyY29udGVudC5nb29ngh8qLmV4ZWN1dGlvbmJveC51c2VyY29udGVudC5nb29ngh4qLmFpcGxheWFibGVzLnVzZXJjb250ZW50Lmdvb2eCJW1hbmlmZXN0LmMubWFpbC5nb29nbGV1c2VyY29udGVudC5jb22CJW1hbmlmZXN0LmxoMy1kYS5nb29nbGV1c2VyY29udGVudC5jb22CJW1hbmlmZXN0LmxoMy1kYi5nb29nbGV1c2VyY29udGVudC5jb22CJW1hbmlmZXN0LmxoMy1kYy5nb29nbGV1c2VyY29udGVudC5jb22CJW1hbmlmZXN0LmxoMy1kZC5nb29nbGV1c2VyY29udGVudC5jb22CJW1hbmlmZXN0LmxoMy1kZS5nb29nbGV1c2VyY29udGVudC5jb22CJW1hbmlmZXN0LmxoMy1kZi5nb29nbGV1c2VyY29udGVudC5jb22CJW1hbmlmZXN0LmxoMy1kZy5nb29nbGV1c2VyY29udGVudC5jb22CJW1hbmlmZXN0LmxoMy1kei5nb29nbGV1c2VyY29udGVudC5jb22CIm1hbmlmZXN0LmxoMy5nb29nbGV1c2VyY29udGVudC5jb22CHm1hbmlmZXN0LmxoMy5waG90b3MuZ29vZ2xlLmNvbYISZ29vZ2xld2VibGlnaHQuY29tghQqLmdvb2dsZXdlYmxpZ2h0LmNvbYIOdHJhbnNsYXRlLmdvb2eCECoudHJhbnNsYXRlLmdvb2eCFyouc2VhcmNoLnRyYW5zbGF0ZS5nb29ngiQqLmRldi5hbXA0bWFpbC5nb29nbGV1c2VyY29udGVudC5jb22CJSoucHJvZC5hbXA0bWFpbC5nb29nbGV1c2VyY29udGVudC5jb22CKyoucGxheWdyb3VuZC5hbXA0bWFpbC5nb29nbGV1c2VyY29udGVudC5jb22CNCoucGxheWdyb3VuZC1pbnRlcm5hbC5hbXA0bWFpbC5nb29nbGV1c2VyY29udGVudC5jb22CKyouYWlwbGF0Zm9ybS1ub3RlYm9vay5nb29nbGV1c2VyY29udGVudC5jb22CKyouYWlwbGF0Zm9ybS10cmFpbmluZy5nb29nbGV1c2VyY29udGVudC5jb22CMSouYWlwbGF0Zm9ybS10cmFpbmluZy5ieW9pZC5nb29nbGV1c2VyY29udGVudC5jb22CPSouYXVkaW9ib29rLWFkZGl0aW9uYWwtbWF0ZXJpYWwtc3RhZ2luZy5nb29nbGV1c2VyY29udGVudC5jb22CNSouYXVkaW9ib29rLWFkZGl0aW9uYWwtbWF0ZXJpYWwuZ29vZ2xldXNlcmNvbnRlbnQuY29tghwqLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tgh8qLnNhZmVudXAuZ29vZ2xldXNlcmNvbnRlbnQuY29tgh8qLnNhbmRib3guZ29vZ2xldXNlcmNvbnRlbnQuY29tgiAqLmJhY2t1cGRyLmdvb2dsZXVzZXJjb250ZW50LmNvbYImKi5iYWNrdXBkci5ieW9pZC5nb29nbGV1c2VyY29udGVudC5jb22CKCouYmFja3VwZHItc3RhZ2luZy5nb29nbGV1c2VyY29udGVudC5jb22CLiouYmFja3VwZHItc3RhZ2luZy5ieW9pZC5nb29nbGV1c2VyY29udGVudC5jb22CKSouYmFja3VwZHItYXV0b3B1c2guZ29vZ2xldXNlcmNvbnRlbnQuY29tgi8qLmJhY2t1cGRyLWF1dG9wdXNoLmJ5b2lkLmdvb2dsZXVzZXJjb250ZW50LmNvbYIkKi5iYWNrdXBkci1kZXYuZ29vZ2xldXNlcmNvbnRlbnQuY29tgioqLmJhY2t1cGRyLWRldi5ieW9pZC5nb29nbGV1c2VyY29udGVudC5jb22CKCouYmFja3VwZHItc2FuZGJveC5nb29nbGV1c2VyY29udGVudC5jb22CLiouYmFja3VwZHItc2FuZGJveC5ieW9pZC5nb29nbGV1c2VyY29udGVudC5jb22CICouY29tcG9zZXIuZ29vZ2xldXNlcmNvbnRlbnQuY29tgiYqLmNvbXBvc2VyLmJ5b2lkLmdvb2dsZXVzZXJjb250ZW50LmNvbYIoKi5jb21wb3Nlci1zdGFnaW5nLmdvb2dsZXVzZXJjb250ZW50LmNvbYIuKi5jb21wb3Nlci1zdGFnaW5nLmJ5b2lkLmdvb2dsZXVzZXJjb250ZW50LmNvbYIjKi5jb21wb3Nlci1xYS5nb29nbGV1c2VyY29udGVudC5jb22CKSouY29tcG9zZXItcWEuYnlvaWQuZ29vZ2xldXNlcmNvbnRlbnQuY29tgiQqLmNvbXBvc2VyLWRldi5nb29nbGV1c2VyY29udGVudC5jb22CKiouY29tcG9zZXItZGV2LmJ5b2lkLmdvb2dsZXVzZXJjb250ZW50LmNvbYIgKi5kYXRhcGxleC5nb29nbGV1c2VyY29udGVudC5jb22CKCouZGF0YXBsZXgtc3RhZ2luZy5nb29nbGV1c2VyY29udGVudC5jb22CJCouZGF0YXBsZXgtZGV2Lmdvb2dsZXVzZXJjb250ZW50LmNvbYIgKi5kYXRhcHJvYy5nb29nbGV1c2VyY29udGVudC5jb22CJiouZGF0YXByb2MuYnlvaWQuZ29vZ2xldXNlcmNvbnRlbnQuY29tgi4qLmRhdGFwcm9jLWltYWdlLXN0YWdpbmcuZ29vZ2xldXNlcmNvbnRlbnQuY29tgjQqLmRhdGFwcm9jLWltYWdlLXN0YWdpbmcuYnlvaWQuZ29vZ2xldXNlcmNvbnRlbnQuY29tgigqLmRhdGFwcm9jLXN0YWdpbmcuZ29vZ2xldXNlcmNvbnRlbnQuY29tgi4qLmRhdGFwcm9jLXN0YWdpbmcuYnlvaWQuZ29vZ2xldXNlcmNvbnRlbnQuY29tgiUqLmRhdGFwcm9jLXRlc3QuZ29vZ2xldXNlcmNvbnRlbnQuY29tgisqLmRhdGFwcm9jLXRlc3QuYnlvaWQuZ29vZ2xldXNlcmNvbnRlbnQuY29tgiIqLmRhdGFmdXNpb24uZ29vZ2xldXNlcmNvbnRlbnQuY29tgigqLmRhdGFmdXNpb24uYnlvaWQuZ29vZ2xldXNlcmNvbnRlbnQuY29tgioqLmRhdGFmdXNpb24tc3RhZ2luZy5nb29nbGV1c2VyY29udGVudC5jb22CMCouZGF0YWZ1c2lvbi1zdGFnaW5nLmJ5b2lkLmdvb2dsZXVzZXJjb250ZW50LmNvbYImKi5kYXRhZnVzaW9uLWRldi5nb29nbGV1c2VyY29udGVudC5jb22CLCouZGF0YWZ1c2lvbi1kZXYuYnlvaWQuZ29vZ2xldXNlcmNvbnRlbnQuY29tgiYqLmRhdGFmdXNpb24tYXBpLmdvb2dsZXVzZXJjb250ZW50LmNvbYIsKi5kYXRhZnVzaW9uLWFwaS5ieW9pZC5nb29nbGV1c2VyY29udGVudC5jb22CLiouZGF0YWZ1c2lvbi1hcGktc3RhZ2luZy5nb29nbGV1c2VyY29udGVudC5jb22CNCouZGF0YWZ1c2lvbi1hcGktc3RhZ2luZy5ieW9pZC5nb29nbGV1c2VyY29udGVudC5jb22CKiouZGF0YWZ1c2lvbi1hcGktZGV2Lmdvb2dsZXVzZXJjb250ZW50LmNvbYIwKi5kYXRhZnVzaW9uLWFwaS1kZXYuYnlvaWQuZ29vZ2xldXNlcmNvbnRlbnQuY29tghsqLmdzYy5nb29nbGV1c2VyY29udGVudC5jb22CGyouZ2NjLmdvb2dsZXVzZXJjb250ZW50LmNvbYIbKi50dWYuZ29vZ2xldXNlcmNvbnRlbnQuY29tgiQqLnR1Zi1hdXRvcHVzaC5nb29nbGV1c2VyY29udGVudC5jb22CHyoudHVmLWRldi5nb29nbGV1c2VyY29udGVudC5jb22CIyoudHVmLXN0YWdpbmcuZ29vZ2xldXNlcmNvbnRlbnQuY29tgicqLmZ1Y2hzaWEtdXBkYXRlcy5nb29nbGV1c2VyY29udGVudC5jb22CMCouZnVjaHNpYS11cGRhdGVzLWF1dG9wdXNoLmdvb2dsZXVzZXJjb250ZW50LmNvbYI1Ki5mdWNoc2lhLXVwZGF0ZXMtYXV0b3B1c2gtcXVhbC5nb29nbGV1c2VyY29udGVudC5jb22CKyouZnVjaHNpYS11cGRhdGVzLWRldi5nb29nbGV1c2VyY29udGVudC5jb22CLyouZnVjaHNpYS11cGRhdGVzLXN0YWdpbmcuZ29vZ2xldXNlcmNvbnRlbnQuY29tgiwqLm1hY2hpbmVsZWFybmluZ3Rvb2xzLmdvb2dsZXVzZXJjb250ZW50LmNvbYI0Ki5tYWNoaW5lbGVhcm5pbmd0b29scy1zdGFnaW5nLmdvb2dsZXVzZXJjb250ZW50LmNvbYI1Ki5tYWNoaW5lbGVhcm5pbmd0b29scy1hdXRvcHVzaC5nb29nbGV1c2VyY29udGVudC5jb22CMCoubWFjaGluZWxlYXJuaW5ndG9vbHMtZGV2Lmdvb2dsZXVzZXJjb250ZW50LmNvbYIjKi5tb3MtdXBkYXRlcy5nb29nbGV1c2VyY29udGVudC5jb22CLCoubW9zLXVwZGF0ZXMtYXV0b3B1c2guZ29vZ2xldXNlcmNvbnRlbnQuY29tgjEqLm1vcy11cGRhdGVzLWF1dG9wdXNoLXF1YWwuZ29vZ2xldXNlcmNvbnRlbnQuY29tgicqLm1vcy11cGRhdGVzLWRldi5nb29nbGV1c2VyY29udGVudC5jb22CKyoubW9zLXVwZGF0ZXMtc3RhZ2luZy5nb29nbGV1c2VyY29udGVudC5jb22CISoubm90ZWJvb2tzLmdvb2dsZXVzZXJjb250ZW50LmNvbYInKi5ub3RlYm9va3MuYnlvaWQuZ29vZ2xldXNlcmNvbnRlbnQuY29tgiEqLnBpcGVsaW5lcy5nb29nbGV1c2VyY29udGVudC5jb22CIyoudGVuc29yYm9hcmQuZ29vZ2xldXNlcmNvbnRlbnQuY29tgiwqLnRlbnNvcmJvYXJkLWF1dG9wdXNoLmdvb2dsZXVzZXJjb250ZW50LmNvbYInKi50ZW5zb3Jib2FyZC1kZXYuZ29vZ2xldXNlcmNvbnRlbnQuY29tgisqLnRlbnNvcmJvYXJkLXN0YWdpbmcuZ29vZ2xldXNlcmNvbnRlbnQuY29tgigqLnRlbnNvcmJvYXJkLXRlc3QuZ29vZ2xldXNlcmNvbnRlbnQuY29tgh8qLmtlcm5lbHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tgicqLmtlcm5lbHMtc3RhZ2luZy5nb29nbGV1c2VyY29udGVudC5jb22CJCoua2VybmVscy10ZXN0Lmdvb2dsZXVzZXJjb250ZW50LmNvbYIiKi5jbG91ZHNoZWxsLmdvb2dsZXVzZXJjb250ZW50LmNvbYIpKi5jbG91ZHdvcmtzdGF0aW9ucy5nb29nbGV1c2VyY29udGVudC5jb20wEwYDVR0gBAwwCjAIBgZngQwBAgEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2MucGtpLmdvb2cvd3IyL29RNm55cjhGMG0wLmNybDCCAQYGCisGAQQB1n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