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 X-Spam-Level: X-Spam-Status: No, score=-2.4 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 55840CA9EAE for ; Wed, 23 Oct 2019 07:08:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F18AB214B2 for ; Wed, 23 Oct 2019 07:08:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=rasmusvillemoes.dk header.i=@rasmusvillemoes.dk header.b="D/CIKos7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389865AbfJWHId (ORCPT ); Wed, 23 Oct 2019 03:08:33 -0400 Received: from mail-lf1-f65.google.com ([209.85.167.65]:36717 "EHLO mail-lf1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388218AbfJWHId (ORCPT ); Wed, 23 Oct 2019 03:08:33 -0400 Received: by mail-lf1-f65.google.com with SMTP id u16so15147677lfq.3 for ; Wed, 23 Oct 2019 00:08:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rasmusvillemoes.dk; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=myl9hp8GAdZ10Vh56qyy6JaHhxuDJ9OqLHFd3viE44w=; b=D/CIKos7wpo0yugt6OSXX7bSNd0uG+7P8UyKC6tUPLOGlg3lpLAmJCUCqZRgkpJSmQ /ua9qSJgNrl1LsDsy10IsXdPlR6Fv1rZxxYSOM/ZcCJ0mDG8jrtIdD8yFOK61FPzQ90u hFpSSl11Te5wvXzmj7gDzCd2zmJkM16v/LNQ8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=myl9hp8GAdZ10Vh56qyy6JaHhxuDJ9OqLHFd3viE44w=; b=auZ+0nNsUjphELbzrVkaqkNah6ga3hsQC494Qw08His/Voqg9FnDFUce/M8gWSy3xV 7NDSvnTVkwteYMH0XnX2v+WtgC6pzZysJ4y9uGS40YH5tNj7xRoozHYn+S0N+YaoUYFo R3fUa4pMD6FnsjRGl4cL6t+t057iJIINs8tM5WQ1sWD+x48ThVasUVK2627oWy21TL75 8S0UOWjUV81syVqC8EdxpamYCZA3rLn+yaP4nK5EgK042QbVRWQzeHyQ0gozYjCKUtvT S9CDai7DTW/tSw+Oypho8eF2cFWrfrhjQ8NQJ2nz54ZDScbWbyhBomihiVgNJHcKLYBK KG6g== X-Gm-Message-State: APjAAAUxCPPhTCxwqQehlrTXAIMk0giVCW3Vgjzm4H1q8zEQb3GWNGA4 oy9CkBlydYR4hMcaLW1p3MNRTQ== X-Google-Smtp-Source: APXvYqwRZFXEAB1sX7Quxj/Hpyb451DS8Gl1oBwoo5NLaCgiUg7xN2GoprYTPQVnWp6BHkMtcSr9Mg== X-Received: by 2002:a19:c354:: with SMTP id t81mr13587917lff.179.1571814509700; Wed, 23 Oct 2019 00:08:29 -0700 (PDT) Received: from [172.16.11.28] ([81.216.59.226]) by smtp.gmail.com with ESMTPSA id r6sm9908883ljr.77.2019.10.23.00.08.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 23 Oct 2019 00:08:29 -0700 (PDT) Subject: Re: [PATCH 3/7] soc: fsl: qe: avoid ppc-specific io accessors To: Christophe Leroy , Qiang Zhao , Li Yang Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20191018125234.21825-1-linux@rasmusvillemoes.dk> <20191018125234.21825-4-linux@rasmusvillemoes.dk> <6ee121cf-0e3d-4aa0-2593-fcb00995e429@c-s.fr> From: Rasmus Villemoes Message-ID: <47d45f33-d5aa-b4b5-9b5f-2e86e309a206@rasmusvillemoes.dk> Date: Wed, 23 Oct 2019 09:08:28 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <6ee121cf-0e3d-4aa0-2593-fcb00995e429@c-s.fr> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 22/10/2019 17.01, Christophe Leroy wrote: > > > On 10/18/2019 12:52 PM, Rasmus Villemoes wrote: >> In preparation for allowing to build QE support for architectures >> other than PPC, replace the ppc-specific io accessors. Done via >> > > This patch is not transparent in terms of performance, functions get > changed significantly. > > Before the patch: > > 00000330 : >  330:    81 43 00 04     lwz     r10,4(r3) >  334:    7c 00 04 ac     hwsync >  338:    81 2a 00 00     lwz     r9,0(r10) >  33c:    0c 09 00 00     twi     0,r9,0 >  340:    4c 00 01 2c     isync >  344:    70 88 00 02     andi.   r8,r4,2 >  348:    41 82 00 10     beq     358 >  34c:    39 00 00 01     li      r8,1 >  350:    91 03 00 10     stw     r8,16(r3) >  354:    61 29 00 10     ori     r9,r9,16 >  358:    70 88 00 01     andi.   r8,r4,1 >  35c:    41 82 00 10     beq     36c >  360:    39 00 00 01     li      r8,1 >  364:    91 03 00 14     stw     r8,20(r3) >  368:    61 29 00 20     ori     r9,r9,32 >  36c:    7c 00 04 ac     hwsync >  370:    91 2a 00 00     stw     r9,0(r10) >  374:    4e 80 00 20     blr > > After the patch: > > 0000030c : >  30c:    94 21 ff e0     stwu    r1,-32(r1) >  310:    7c 08 02 a6     mflr    r0 >  314:    bf a1 00 14     stmw    r29,20(r1) >  318:    7c 9f 23 78     mr      r31,r4 >  31c:    90 01 00 24     stw     r0,36(r1) >  320:    7c 7e 1b 78     mr      r30,r3 >  324:    83 a3 00 04     lwz     r29,4(r3) >  328:    7f a3 eb 78     mr      r3,r29 >  32c:    48 00 00 01     bl      32c >             32c: R_PPC_REL24    ioread32be >  330:    73 e9 00 02     andi.   r9,r31,2 >  334:    41 82 00 10     beq     344 >  338:    39 20 00 01     li      r9,1 >  33c:    91 3e 00 10     stw     r9,16(r30) >  340:    60 63 00 10     ori     r3,r3,16 >  344:    73 e9 00 01     andi.   r9,r31,1 >  348:    41 82 00 10     beq     358 >  34c:    39 20 00 01     li      r9,1 >  350:    91 3e 00 14     stw     r9,20(r30) >  354:    60 63 00 20     ori     r3,r3,32 >  358:    80 01 00 24     lwz     r0,36(r1) >  35c:    7f a4 eb 78     mr      r4,r29 >  360:    bb a1 00 14     lmw     r29,20(r1) >  364:    7c 08 03 a6     mtlr    r0 >  368:    38 21 00 20     addi    r1,r1,32 >  36c:    48 00 00 00     b       36c >             36c: R_PPC_REL24    iowrite32be True. Do you know why powerpc uses out-of-line versions of these accessors when !PPC_INDIRECT_PIO, i.e. at least all of PPC32? It's quite a bit beyond the scope of this series, but I'd expect moving most if not all of arch/powerpc/kernel/iomap.c into asm/io.h (guarded by !defined(CONFIG_PPC_INDIRECT_PIO) of course) as static inlines would benefit all ppc32 users of iowrite32 and friends. Is there some other primitive available that (a) is defined on all architectures (or at least both ppc and arm) and (b) expands to good code in both/all cases? Note that a few uses of the the iowrite32be accessors has already appeared in the qe code with the introduction of the qe_clrsetbits() helpers in bb8b2062af. Rasmus 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 X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6E9D1CA9EAE for ; Wed, 23 Oct 2019 07:08:39 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 449AE214B2 for ; Wed, 23 Oct 2019 07:08:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TXXpLGMB"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=rasmusvillemoes.dk header.i=@rasmusvillemoes.dk header.b="D/CIKos7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 449AE214B2 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=rasmusvillemoes.dk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=DK+ZyKjTM35ShdAjMLvCZJ9iBVPgaSKYwFpGJK4GO+U=; b=TXXpLGMBGNstjk Oetvq2agYUz6lkrsZpqhHlD1sqCDHMWorPg1DZKwyKa98kVpXW5OdTHUQJ5az2EDvGRf5SdH73alD jE3Vz/SOoiGV+vMIh98Tn4Ha4EGauRVjsp6M5XhZF4OVgyk3zzInxfmLEP0tdSLTaMd3w1bhyb0pf QuNgnivEA8eAmkjmaCbxgCvQeoVIQfvD4LFIELW6XskkLUlZqCoX5D/gZdbyPZHLpP1rDd3WIt2Ar vJF9EVo3iSSn+7VOGr3kN8vHbZvxCu0yO39dQjzKfD0E2/0C8MtTD75642haW7a1OttAHk0PwEYRB P92TOkPrsUI5psqr391A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iNAl2-0007jX-BT; Wed, 23 Oct 2019 07:08:36 +0000 Received: from mail-lf1-x142.google.com ([2a00:1450:4864:20::142]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iNAkx-0007j4-Qd for linux-arm-kernel@lists.infradead.org; Wed, 23 Oct 2019 07:08:35 +0000 Received: by mail-lf1-x142.google.com with SMTP id g21so14033092lfh.4 for ; Wed, 23 Oct 2019 00:08:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rasmusvillemoes.dk; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=myl9hp8GAdZ10Vh56qyy6JaHhxuDJ9OqLHFd3viE44w=; b=D/CIKos7wpo0yugt6OSXX7bSNd0uG+7P8UyKC6tUPLOGlg3lpLAmJCUCqZRgkpJSmQ /ua9qSJgNrl1LsDsy10IsXdPlR6Fv1rZxxYSOM/ZcCJ0mDG8jrtIdD8yFOK61FPzQ90u hFpSSl11Te5wvXzmj7gDzCd2zmJkM16v/LNQ8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=myl9hp8GAdZ10Vh56qyy6JaHhxuDJ9OqLHFd3viE44w=; b=bH4hnaHAWFivjc97Tuhv8UIcP71zmZoYbNdz9MV4tGRrfscyxAH45ZWe6G0CIWuDAF oswpOrG6TUnOcnBnmMqszyCM6dkQxx/hRME8J1lBvTieA7voCSGKF2Utof0XQDoWsr1D bZ/484AA0J7VkcpRJ3YjoqmuyROBc4bgSz00b7le9mCQUR4jFoAwI5pBmFvxXh0cFvaF 5CaOF7ZTbeXcJFFMeUU8jy0gbYQBKneNPLd0db3XYqcsh2WxwOWyL5z71PAFTNtONYVD 0dfyOWbdaxmVrVDfEZGXJo75aZVjTTdDVBvT03aJ6G4xZATGGWHbBu1fvYVPEUBsdf/V F3Jg== X-Gm-Message-State: APjAAAWYXnGi2jwSfvCBkHeKbyOuTJm9YV0+bBjetM1FS+bcXLLO7RPx 0GJ5t8grMuGdjwWXbNOd+Ap8a+qr7AxyNGJG X-Google-Smtp-Source: APXvYqwRZFXEAB1sX7Quxj/Hpyb451DS8Gl1oBwoo5NLaCgiUg7xN2GoprYTPQVnWp6BHkMtcSr9Mg== X-Received: by 2002:a19:c354:: with SMTP id t81mr13587917lff.179.1571814509700; Wed, 23 Oct 2019 00:08:29 -0700 (PDT) Received: from [172.16.11.28] ([81.216.59.226]) by smtp.gmail.com with ESMTPSA id r6sm9908883ljr.77.2019.10.23.00.08.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 23 Oct 2019 00:08:29 -0700 (PDT) Subject: Re: [PATCH 3/7] soc: fsl: qe: avoid ppc-specific io accessors To: Christophe Leroy , Qiang Zhao , Li Yang References: <20191018125234.21825-1-linux@rasmusvillemoes.dk> <20191018125234.21825-4-linux@rasmusvillemoes.dk> <6ee121cf-0e3d-4aa0-2593-fcb00995e429@c-s.fr> From: Rasmus Villemoes Message-ID: <47d45f33-d5aa-b4b5-9b5f-2e86e309a206@rasmusvillemoes.dk> Date: Wed, 23 Oct 2019 09:08:28 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <6ee121cf-0e3d-4aa0-2593-fcb00995e429@c-s.fr> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191023_000831_870614_47E0596E X-CRM114-Status: GOOD ( 13.69 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjIvMTAvMjAxOSAxNy4wMSwgQ2hyaXN0b3BoZSBMZXJveSB3cm90ZToKPiAKPiAKPiBPbiAx MC8xOC8yMDE5IDEyOjUyIFBNLCBSYXNtdXMgVmlsbGVtb2VzIHdyb3RlOgo+PiBJbiBwcmVwYXJh dGlvbiBmb3IgYWxsb3dpbmcgdG8gYnVpbGQgUUUgc3VwcG9ydCBmb3IgYXJjaGl0ZWN0dXJlcwo+ PiBvdGhlciB0aGFuIFBQQywgcmVwbGFjZSB0aGUgcHBjLXNwZWNpZmljIGlvIGFjY2Vzc29ycy4g RG9uZSB2aWEKPj4KPiAKPiBUaGlzIHBhdGNoIGlzIG5vdCB0cmFuc3BhcmVudCBpbiB0ZXJtcyBv ZiBwZXJmb3JtYW5jZSwgZnVuY3Rpb25zIGdldAo+IGNoYW5nZWQgc2lnbmlmaWNhbnRseS4KPiAK PiBCZWZvcmUgdGhlIHBhdGNoOgo+IAo+IDAwMDAwMzMwIDx1Y2NfZmFzdF9lbmFibGU+Ogo+IMKg MzMwOsKgwqDCoCA4MSA0MyAwMCAwNMKgwqDCoMKgIGx3esKgwqDCoMKgIHIxMCw0KHIzKQo+IMKg MzM0OsKgwqDCoCA3YyAwMCAwNCBhY8KgwqDCoMKgIGh3c3luYwo+IMKgMzM4OsKgwqDCoCA4MSAy YSAwMCAwMMKgwqDCoMKgIGx3esKgwqDCoMKgIHI5LDAocjEwKQo+IMKgMzNjOsKgwqDCoCAwYyAw OSAwMCAwMMKgwqDCoMKgIHR3acKgwqDCoMKgIDAscjksMAo+IMKgMzQwOsKgwqDCoCA0YyAwMCAw MSAyY8KgwqDCoMKgIGlzeW5jCj4gwqAzNDQ6wqDCoMKgIDcwIDg4IDAwIDAywqDCoMKgwqAgYW5k aS7CoMKgIHI4LHI0LDIKPiDCoDM0ODrCoMKgwqAgNDEgODIgMDAgMTDCoMKgwqDCoCBiZXHCoMKg wqDCoCAzNTggPHVjY19mYXN0X2VuYWJsZSsweDI4Pgo+IMKgMzRjOsKgwqDCoCAzOSAwMCAwMCAw McKgwqDCoMKgIGxpwqDCoMKgwqDCoCByOCwxCj4gwqAzNTA6wqDCoMKgIDkxIDAzIDAwIDEwwqDC oMKgwqAgc3R3wqDCoMKgwqAgcjgsMTYocjMpCj4gwqAzNTQ6wqDCoMKgIDYxIDI5IDAwIDEwwqDC oMKgwqAgb3JpwqDCoMKgwqAgcjkscjksMTYKPiDCoDM1ODrCoMKgwqAgNzAgODggMDAgMDHCoMKg wqDCoCBhbmRpLsKgwqAgcjgscjQsMQo+IMKgMzVjOsKgwqDCoCA0MSA4MiAwMCAxMMKgwqDCoMKg IGJlccKgwqDCoMKgIDM2YyA8dWNjX2Zhc3RfZW5hYmxlKzB4M2M+Cj4gwqAzNjA6wqDCoMKgIDM5 IDAwIDAwIDAxwqDCoMKgwqAgbGnCoMKgwqDCoMKgIHI4LDEKPiDCoDM2NDrCoMKgwqAgOTEgMDMg MDAgMTTCoMKgwqDCoCBzdHfCoMKgwqDCoCByOCwyMChyMykKPiDCoDM2ODrCoMKgwqAgNjEgMjkg MDAgMjDCoMKgwqDCoCBvcmnCoMKgwqDCoCByOSxyOSwzMgo+IMKgMzZjOsKgwqDCoCA3YyAwMCAw NCBhY8KgwqDCoMKgIGh3c3luYwo+IMKgMzcwOsKgwqDCoCA5MSAyYSAwMCAwMMKgwqDCoMKgIHN0 d8KgwqDCoMKgIHI5LDAocjEwKQo+IMKgMzc0OsKgwqDCoCA0ZSA4MCAwMCAyMMKgwqDCoMKgIGJs cgo+IAo+IEFmdGVyIHRoZSBwYXRjaDoKPiAKPiAwMDAwMDMwYyA8dWNjX2Zhc3RfZW5hYmxlPjoK PiDCoDMwYzrCoMKgwqAgOTQgMjEgZmYgZTDCoMKgwqDCoCBzdHd1wqDCoMKgIHIxLC0zMihyMSkK PiDCoDMxMDrCoMKgwqAgN2MgMDggMDIgYTbCoMKgwqDCoCBtZmxywqDCoMKgIHIwCj4gwqAzMTQ6 wqDCoMKgIGJmIGExIDAwIDE0wqDCoMKgwqAgc3Rtd8KgwqDCoCByMjksMjAocjEpCj4gwqAzMTg6 wqDCoMKgIDdjIDlmIDIzIDc4wqDCoMKgwqAgbXLCoMKgwqDCoMKgIHIzMSxyNAo+IMKgMzFjOsKg wqDCoCA5MCAwMSAwMCAyNMKgwqDCoMKgIHN0d8KgwqDCoMKgIHIwLDM2KHIxKQo+IMKgMzIwOsKg wqDCoCA3YyA3ZSAxYiA3OMKgwqDCoMKgIG1ywqDCoMKgwqDCoCByMzAscjMKPiDCoDMyNDrCoMKg wqAgODMgYTMgMDAgMDTCoMKgwqDCoCBsd3rCoMKgwqDCoCByMjksNChyMykKPiDCoDMyODrCoMKg wqAgN2YgYTMgZWIgNzjCoMKgwqDCoCBtcsKgwqDCoMKgwqAgcjMscjI5Cj4gwqAzMmM6wqDCoMKg IDQ4IDAwIDAwIDAxwqDCoMKgwqAgYmzCoMKgwqDCoMKgIDMyYyA8dWNjX2Zhc3RfZW5hYmxlKzB4 MjA+Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAzMmM6IFJfUFBDX1JFTDI0wqDCoMKgIGlvcmVh ZDMyYmUKPiDCoDMzMDrCoMKgwqAgNzMgZTkgMDAgMDLCoMKgwqDCoCBhbmRpLsKgwqAgcjkscjMx LDIKPiDCoDMzNDrCoMKgwqAgNDEgODIgMDAgMTDCoMKgwqDCoCBiZXHCoMKgwqDCoCAzNDQgPHVj Y19mYXN0X2VuYWJsZSsweDM4Pgo+IMKgMzM4OsKgwqDCoCAzOSAyMCAwMCAwMcKgwqDCoMKgIGxp wqDCoMKgwqDCoCByOSwxCj4gwqAzM2M6wqDCoMKgIDkxIDNlIDAwIDEwwqDCoMKgwqAgc3R3wqDC oMKgwqAgcjksMTYocjMwKQo+IMKgMzQwOsKgwqDCoCA2MCA2MyAwMCAxMMKgwqDCoMKgIG9yacKg wqDCoMKgIHIzLHIzLDE2Cj4gwqAzNDQ6wqDCoMKgIDczIGU5IDAwIDAxwqDCoMKgwqAgYW5kaS7C oMKgIHI5LHIzMSwxCj4gwqAzNDg6wqDCoMKgIDQxIDgyIDAwIDEwwqDCoMKgwqAgYmVxwqDCoMKg wqAgMzU4IDx1Y2NfZmFzdF9lbmFibGUrMHg0Yz4KPiDCoDM0YzrCoMKgwqAgMzkgMjAgMDAgMDHC oMKgwqDCoCBsacKgwqDCoMKgwqAgcjksMQo+IMKgMzUwOsKgwqDCoCA5MSAzZSAwMCAxNMKgwqDC oMKgIHN0d8KgwqDCoMKgIHI5LDIwKHIzMCkKPiDCoDM1NDrCoMKgwqAgNjAgNjMgMDAgMjDCoMKg wqDCoCBvcmnCoMKgwqDCoCByMyxyMywzMgo+IMKgMzU4OsKgwqDCoCA4MCAwMSAwMCAyNMKgwqDC oMKgIGx3esKgwqDCoMKgIHIwLDM2KHIxKQo+IMKgMzVjOsKgwqDCoCA3ZiBhNCBlYiA3OMKgwqDC oMKgIG1ywqDCoMKgwqDCoCByNCxyMjkKPiDCoDM2MDrCoMKgwqAgYmIgYTEgMDAgMTTCoMKgwqDC oCBsbXfCoMKgwqDCoCByMjksMjAocjEpCj4gwqAzNjQ6wqDCoMKgIDdjIDA4IDAzIGE2wqDCoMKg wqAgbXRscsKgwqDCoCByMAo+IMKgMzY4OsKgwqDCoCAzOCAyMSAwMCAyMMKgwqDCoMKgIGFkZGnC oMKgwqAgcjEscjEsMzIKPiDCoDM2YzrCoMKgwqAgNDggMDAgMDAgMDDCoMKgwqDCoCBiwqDCoMKg wqDCoMKgIDM2YyA8dWNjX2Zhc3RfZW5hYmxlKzB4NjA+Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAzNmM6IFJfUFBDX1JFTDI0wqDCoMKgIGlvd3JpdGUzMmJlCgpUcnVlLiBEbyB5b3Uga25vdyB3 aHkgcG93ZXJwYyB1c2VzIG91dC1vZi1saW5lIHZlcnNpb25zIG9mIHRoZXNlCmFjY2Vzc29ycyB3 aGVuICFQUENfSU5ESVJFQ1RfUElPLCBpLmUuIGF0IGxlYXN0IGFsbCBvZiBQUEMzMj8gSXQncyBx dWl0ZQphIGJpdCBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgc2VyaWVzLCBidXQgSSdkIGV4cGVj dCBtb3ZpbmcgbW9zdCBpZiBub3QKYWxsIG9mIGFyY2gvcG93ZXJwYy9rZXJuZWwvaW9tYXAuYyBp bnRvIGFzbS9pby5oIChndWFyZGVkIGJ5CiFkZWZpbmVkKENPTkZJR19QUENfSU5ESVJFQ1RfUElP KSBvZiBjb3Vyc2UpIGFzIHN0YXRpYyBpbmxpbmVzIHdvdWxkCmJlbmVmaXQgYWxsIHBwYzMyIHVz ZXJzIG9mIGlvd3JpdGUzMiBhbmQgZnJpZW5kcy4KCklzIHRoZXJlIHNvbWUgb3RoZXIgcHJpbWl0 aXZlIGF2YWlsYWJsZSB0aGF0IChhKSBpcyBkZWZpbmVkIG9uIGFsbAphcmNoaXRlY3R1cmVzIChv ciBhdCBsZWFzdCBib3RoIHBwYyBhbmQgYXJtKSBhbmQgKGIpIGV4cGFuZHMgdG8gZ29vZApjb2Rl IGluIGJvdGgvYWxsIGNhc2VzPwoKTm90ZSB0aGF0IGEgZmV3IHVzZXMgb2YgdGhlIHRoZSBpb3dy aXRlMzJiZSBhY2Nlc3NvcnMgaGFzIGFscmVhZHkKYXBwZWFyZWQgaW4gdGhlIHFlIGNvZGUgd2l0 aCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBxZV9jbHJzZXRiaXRzKCkKaGVscGVycyBpbiBiYjhi MjA2MmFmLgoKUmFzbXVzCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==