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 5CA07C64EC7 for ; Tue, 14 Feb 2023 07:54:41 +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=0pS0pa1krsxs2LV6Ag54cJUdXt91g02L+lPGmCDTf18=; b=0CAg25cNCJzl1M kpDW+dn1owuKGh5RlsQW59q5y5sS/AMS0QeoWVPsQYsIjlvfXznsbAlcKkLy5Q46OCbda3dB+JZbn mmO0g7Cet7Pzi/DiG/udHWTf2lQNgY2IDKU53CBNsiQwOyGIffpMDq7zmPN9Q7GzgussXE29XIr8U ZXewxzwW5dCOJ9n9EYOnZfgT2FO1reawZeYFGdLFEgj+NRJhsLb2yZaBELknDm8hqOCZURKYAiofi eQ50LtwKOLztaeH4iC5XRdztoEUPZsUWuXlmiCeWAWx7FSWS+KhtCCwq66FeeXzZ2IneKIe7zq1ND w/5MU2+MU2Ckj2LV8www==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pRq80-000MOW-Nl; Tue, 14 Feb 2023 07:53:28 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pRq7v-000MJj-FX for linux-arm-kernel@lists.infradead.org; Tue, 14 Feb 2023 07:53:25 +0000 Received: by mail-pl1-x636.google.com with SMTP id e17so7357865plg.12 for ; Mon, 13 Feb 2023 23:53:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=7q20+SNXT2AMtnhltu6WLGIIunSDfG6EAHJrNxTXkcc=; b=RQfRhtsBF00rc7XBryAEKIPojZtinvL6x3xfeKP2z704501dj2CDpFne1Rb+gkY6y+ wQ6BeU18myH7bpAhqoOtMEypP9sy9SzVjefDJFKTcZgWwuS1lSpwADKMCU768o5H7Xvv KGD/bcsxkWRQWIdKwj6Q1djiKeGiy6qhb4qHVeVLcGB1fPDM3sC/OXeSyxVHk0IXh4YS EPLZKos4xMDabM+X5/iuMqeZkxv+4j2emVS/+WwgEN66s9dxLvFAjdvNwu9s+tu9bEgR rVjjp0dF/Vh03nZvjpJ7n2+DxW8NlwcH0ZgKD5NOTsv9HzSuJdOg+sslUAUFe/22GUUo VSSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7q20+SNXT2AMtnhltu6WLGIIunSDfG6EAHJrNxTXkcc=; b=4TvJRr2ZWplEWejTaS9bqIk0t+D4YrLc0wUmUhPI7oYsz4pc2Fu6YgKGVpPJ6uEThZ PkSE+uTjy/7t6D1kc7mFuFP/mRX7L6DN8kIbGZNuPjxLwvyDKr9vqO6Wwh/mhTD7H72w mDsZy8QayNzBhpkRsgCruMkIKmMvtSmi2Z5Tjuix4dagd+GWgpOv+TCL8P/ne6VCplTI CBAEGNqoGSM7nNovhbKYqWTIJ/zlMC64jmvl4fqdWEyQwiSq2xBogH+EYWhe4h+aOYsy Uj/zB5DnS0wO5BlOx/REdtI6/0/5ufqyDRjGUmcOtgpxl46FIdrWn/KxG6IUcaLVlkyb ovKQ== X-Gm-Message-State: AO0yUKVYi80W7hCKjA0YkbNb4L6xZUyQW3hQA35hRfNqISMlGQS186c/ 6Dp0oi85b8h3CJXvqAFhT8Tm X-Google-Smtp-Source: AK7set+eT6+n3qyGsgE7ZX/AJoq2siIymbp5DKA1AsgWDfgj/m9HcIoZBdJgfq0nYmeThBKMXx909A== X-Received: by 2002:a17:902:d485:b0:19a:b4f9:6cd with SMTP id c5-20020a170902d48500b0019ab4f906cdmr1895882plg.48.1676361199523; Mon, 13 Feb 2023 23:53:19 -0800 (PST) Received: from thinkpad ([117.217.179.87]) by smtp.gmail.com with ESMTPSA id jn3-20020a170903050300b00180033438a0sm9524798plb.106.2023.02.13.23.53.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Feb 2023 23:53:19 -0800 (PST) Date: Tue, 14 Feb 2023 13:23:12 +0530 From: Manivannan Sadhasivam To: Johan Hovold Cc: will@kernel.org, joro@8bytes.org, robin.murphy@arm.com, andersson@kernel.org, johan+linaro@kernel.org, steev@kali.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH] iommu/arm-smmu-qcom: Rework the logic finding the bypass quirk Message-ID: <20230214075312.GB4981@thinkpad> References: <20230201082500.61656-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230213_235323_564485_2E94104E X-CRM114-Status: GOOD ( 44.68 ) 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 T24gTW9uLCBGZWIgMTMsIDIwMjMgYXQgMDU6NDM6NTZQTSArMDEwMCwgSm9oYW4gSG92b2xkIHdy b3RlOgo+IE9uIFdlZCwgRmViIDAxLCAyMDIzIGF0IDAxOjU1OjAwUE0gKzA1MzAsIE1hbml2YW5u YW4gU2FkaGFzaXZhbSB3cm90ZToKPiA+IFRoZSBsb2dpYyB1c2VkIHRvIGZpbmQgdGhlIHF1aXJr eSBmaXJtd2FyZSB0aGF0IGludGVyY2VwdHMgdGhlIHdyaXRlcyB0bwo+ID4gUzJDUiByZWdpc3Rl ciB0byByZXBsYWNlIGJ5cGFzcyB0eXBlIHN0cmVhbXMgd2l0aCBhIGZhdWx0LCBhbmQgaWdub3Jl IHRoZQo+ID4gZmF1bHQgdHlwZSwgaXMgbm90IHdvcmtpbmcgd2l0aCB0aGUgZmlybXdhcmUgb24g bmV3ZXIgU29DcyBsaWtlIFNDODI4MFhQLgo+ID4gCj4gPiBUaGUgY3VycmVudCBsb2dpYyB1c2Vz IHRoZSBsYXN0IHN0cmVhbSBtYXBwaW5nIGdyb3VwIChudW1fbWFwcGluZ19ncm91cHMKPiA+IC0g MSkgYXMgYW4gaW5kZXggZm9yIGZpbmRpbmcgcXVpcmt5IGZpcm13YXJlLiBCdXQgb24gU0M4Mjgw WFAsIHRoaXMKPiA+IGxvZ2ljIGlzIG5vdCB3b3JraW5nIGFzIHRoZSBudW1iZXIgb2Ygc3RyZWFt IG1hcHBpbmcgZ3JvdXBzIHJlcG9ydGVkIGJ5Cj4gPiB0aGUgU01NVSAoMTYzIGFzIG9uIHRoZSBT QzgyODBYUC1DUkQgZGV2aWNlKSBpcyBub3QgdmFsaWQgZm9yIHNvbWUgcmVhc29uLgo+IAo+IE5V TVNNUkcgcmVhZCBiYWNrIGFzIDE2MiBoZXJlLCBib3RoIG9uIG15IENSRCBhbmQgWDEzcy4gV2Fz ICcxNjMnIGEgdHlwbwo+IG9yIGEgcmVhbCBkaWZmZXJlbmNlPwo+IAoKQWggeWVzLCBpdCBpcyAx NjIgaW5kZWVkLiBTb3JyeSwgdHlwbyEKCj4gPiBTbyB0aGUgY3VycmVudCBsb2dpYyB0aGF0IGNo ZWNrcyB0aGUgKDE2My0xKSBTMkNSIGVudHJ5IGZhaWxzIHRvIGRldGVjdAo+ID4gdGhlIHF1aXJr eSBmaXJtd2FyZSBvbiB0aGVzZSBkZXZpY2VzIGFuZCB0cmlnZ2VycyBpbnZhbGlkIGNvbnRleHQg ZmF1bHQKPiA+IGZvciBieXBhc3Mgc3RyZWFtcy4KPiA+IAo+ID4gVG8gZml4IHRoaXMgaXNzdWUs IHJld29yayB0aGUgbG9naWMgdG8gZmluZCB0aGUgZmlyc3Qgbm9uLXZhbGlkIChmcmVlKQo+ID4g c3RyZWFtIG1hcHBpbmcgcmVnaXN0ZXIgZ3JvdXAgKFNNUikgYW5kIHVzZSB0aGF0IGluZGV4IHRv IGFjY2VzcyBTMkNSCj4gPiBmb3IgZGV0ZWN0aW5nIHRoZSBieXBhc3MgcXVpcmsuCj4gCj4gU28g d2hpbGUgdGhpcyB3b3JrcyBmb3IgdGhlIHF1aXJrIGRldGVjdGlvbiwgc2hvdWxkbid0IHdlIGFs c28gZG8KPiBzb21ldGhpbmcgYWJvdXQgdGhhdCBib2d1cyBOVU1TTVJHIHZhbHVlPyBBdCBsZWFz dCBjYXAgaXQgYXQgMTI4LCB3aGljaAo+IGFwcGVhcnMgdG8gYmUgdGhlIG1heGltdW0gYWNjb3Jk aW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBmb3IgZXhhbXBsZSwKPiBieSBjbGVhcmluZyBiaXQg NyB3aGVuIGFueSBvZiB0aGUgbG93ZXIgYml0cyBhcmUgc2V0Pwo+IAo+IFRoYXQgd291bGQgZ2l2 ZSB1cyAzNSAob3IgMzYpIGdyb3VwcyBhbmQgd29ya2luZyBxdWlyayBkZXRlY3Rpb24gd2l0aAo+ IGp1c3QgdGhlIGZvbGxvd2luZyBzbWFsbGVyIHBhdGNoOgo+IAoKSSdtIG5vdCBjZXJ0YWluIGlm IHRoZSB2YWx1ZSBpcyBib2d1cyBvciBub3QuIEl0IGlzIGNsZWFyIHRoYXQgdGhlIHNwZWMKc3Bl Y2lmaWVzIDEyOCBhcyB0aGUgbWF4IGJ1dCBpbnRlcm5hbCBxY29tIGRvY3VtZW50IHNob3dzIHRo YXQgdGhleSBpbmRlZWQKc2V0IDE2MiBvbiBwdXJwb3NlIGluIHRoZSBoeXBlcnZpc29yLgoKU28g dW50aWwgd2UgZ2V0IGEgY2xlYXIgdmlldyBvbiB0aGF0LCBJJ2Qgbm90IGNhcCBpdC4KCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11L2FybS1zbW11LmMgYi9kcml2ZXJz L2lvbW11L2FybS9hcm0tc21tdS9hcm0tc21tdS5jCj4gaW5kZXggMmZmN2E3MmNmMzc3Li4wZjU2 NGE4NmMzNTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUvYXJtLXNt bXUuYwo+ICsrKyBiL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11L2FybS1zbW11LmMKPiBAQCAt MTc0NCw2ICsxNzQ0LDEyIEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfZGV2aWNlX2NmZ19wcm9iZShz dHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtRU5PREVWOwo+ICAgICAgICAgICAgICAgICB9Cj4gIAo+ICsgICAgICAgICAgICAgICBp ZiAoc2l6ZSA+IDB4ODApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybihzbW11 LT5kZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbnVtYmVy IG9mIFNNUiBncm91cHMsIGNsZWFyaW5nIGJpdCA3XG4iKTsKPiArICAgICAgICAgICAgICAgICAg ICAgICBzaXplIC09IDB4ODA7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gICAgICAgICAgICAg ICAgIC8qIFplcm8taW5pdGlhbGlzZWQgdG8gbWFyayBhcyBpbnZhbGlkICovCj4gICAgICAgICAg ICAgICAgIHNtbXUtPnNtcnMgPSBkZXZtX2tjYWxsb2Moc21tdS0+ZGV2LCBzaXplLCBzaXplb2Yo KnNtbXUtPnNtcnMpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdGUF9LRVJORUwpOwo+IAo+IEkgYWxzbyB2ZXJpZmllZCB0aGF0IHVzaW5nIGluZGV4IDEyNyAo Z3JvdXAgMTI4KSBmb3IgdGhlIHF1aXJrIGRldGVjdGlvbgo+IHdvcmtzIG9uIG15IENSRCwgd2hp bGUgdGhlIGludmFsaWQgaW5kZXggMTI4IGZhaWxzIChhcyBkbyBpbmRleCAxNjEKPiB3aGljaCB3 b3VsZCBjdXJyZW50bHkgYmUgdXNlZCkuCj4gCj4gPiBUaGlzIGFsc28gd2FycmFudHMgYSBjaGFu Z2UgaW4gdmFyaWFibGUgbmFtZSBmcm9tIGxhc3RfczJjciB0byBmcmVlX3MyY3IuCj4gPiAKPiA+ IFNpZ25lZC1vZmYtYnk6IE1hbml2YW5uYW4gU2FkaGFzaXZhbSA8bWFuaXZhbm5hbi5zYWRoYXNp dmFtQGxpbmFyby5vcmc+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS9h cm0tc21tdS1xY29tLmMgfCAyNCArKysrKysrKysrKysrKysrKy0tLS0tCj4gPiAgMSBmaWxlIGNo YW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS9hcm0tc21tdS1xY29tLmMgYi9kcml2ZXJz L2lvbW11L2FybS9hcm0tc21tdS9hcm0tc21tdS1xY29tLmMKPiA+IGluZGV4IDc4ZmMwZTFiZjIx NS4uNDEwNGY4MWI4ZDhmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNt bXUvYXJtLXNtbXUtcWNvbS5jCj4gPiArKysgYi9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS9h cm0tc21tdS1xY29tLmMKPiA+IEBAIC0yNjcsMjMgKzI2NywzNyBAQCBzdGF0aWMgaW50IHFjb21f c21tdV9pbml0X2NvbnRleHQoc3RydWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9kb21haW4sCj4g PiAgCj4gPiAgc3RhdGljIGludCBxY29tX3NtbXVfY2ZnX3Byb2JlKHN0cnVjdCBhcm1fc21tdV9k ZXZpY2UgKnNtbXUpCj4gPiAgewo+ID4gLQl1bnNpZ25lZCBpbnQgbGFzdF9zMmNyID0gQVJNX1NN TVVfR1IwX1MyQ1Ioc21tdS0+bnVtX21hcHBpbmdfZ3JvdXBzIC0gMSk7Cj4gPiAgCXN0cnVjdCBx Y29tX3NtbXUgKnFzbW11ID0gdG9fcWNvbV9zbW11KHNtbXUpOwo+ID4gKwl1MzIgZnJlZV9zMmNy Owo+ID4gIAl1MzIgcmVnOwo+ID4gIAl1MzIgc21yOwo+ID4gIAlpbnQgaTsKPiA+ICAKPiA+ICsJ LyoKPiA+ICsJICogRmluZCB0aGUgZmlyc3Qgbm9uLXZhbGlkIChmcmVlKSBzdHJlYW0gbWFwcGlu ZyByZWdpc3RlciBncm91cCBhbmQKPiA+ICsJICogdXNlIHRoYXQgaW5kZXggdG8gYWNjZXNzIFMy Q1IgZm9yIGRldGVjdGluZyB0aGUgYnlwYXNzIHF1aXJrLgo+ID4gKwkgKi8KPiA+ICsJZm9yIChp ID0gMDsgaSA8IHNtbXUtPm51bV9tYXBwaW5nX2dyb3VwczsgaSsrKSB7Cj4gPiArCQlzbXIgPSBh cm1fc21tdV9ncjBfcmVhZChzbW11LCBBUk1fU01NVV9HUjBfU01SKGkpKTsKPiA+ICsKPiA+ICsJ CWlmICghRklFTERfR0VUKEFSTV9TTU1VX1NNUl9WQUxJRCwgc21yKSkKPiA+ICsJCQlicmVhazsK PiA+ICsJfQo+ID4gKwo+ID4gKwlmcmVlX3MyY3IgPSBBUk1fU01NVV9HUjBfUzJDUihpKTsKPiAK PiBJbiB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCB0aGVyZSBpcyBubyBmcmVlIGdyb3VwIHRoaXMg d291bGQgYWNjZXNzIGFuCj4gaW52YWxpZCBpbmRleC4KPiAKCkhtbSwgdGhlb3JldGljYWxseSB5 ZXMuIEJ1dCB3aGF0IHdvdWxkIGJlIHRoZSBwbGFuIG9mIGFjdGlvbiBpZiB0aGF0IGhhcHBlbnM/ ClNob3VsZCB3ZSBqdXN0IGJhaWwgb3V0IHdpdGggZXJyb3Igb3Igc2tpcCB0aGUgcXVpcmsgZGV0 ZWN0aW9uPwoKVGhhbmtzLApNYW5pCgo+ID4gKwo+ID4gIAkvKgo+ID4gIAkgKiBXaXRoIHNvbWUg ZmlybXdhcmUgdmVyc2lvbnMgd3JpdGVzIHRvIFMyQ1Igb2YgdHlwZSBGQVVMVCBhcmUKPiA+ICAJ ICogaWdub3JlZCwgYW5kIHdyaXRpbmcgQllQQVNTIHdpbGwgZW5kIHVwIHdyaXR0ZW4gYXMgRkFV TFQgaW4gdGhlCj4gPiAtCSAqIHJlZ2lzdGVyLiBQZXJmb3JtIGEgd3JpdGUgdG8gUzJDUiB0byBk ZXRlY3QgaWYgdGhpcyBpcyB0aGUgY2FzZSBhbmQKPiA+IC0JICogaWYgc28gcmVzZXJ2ZSBhIGNv bnRleHQgYmFuayB0byBlbXVsYXRlIGJ5cGFzcyBzdHJlYW1zLgo+ID4gKwkgKiByZWdpc3Rlci4g UGVyZm9ybSBhIHdyaXRlIHRvIHRoZSBmaXJzdCBmcmVlIFMyQ1IgdG8gZGV0ZWN0IGlmCj4gPiAr CSAqIHRoaXMgaXMgdGhlIGNhc2UgYW5kIGlmIHNvIHJlc2VydmUgYSBjb250ZXh0IGJhbmsgdG8g ZW11bGF0ZQo+ID4gKwkgKiBieXBhc3Mgc3RyZWFtcy4KPiA+ICAJICovCj4gPiAgCXJlZyA9IEZJ RUxEX1BSRVAoQVJNX1NNTVVfUzJDUl9UWVBFLCBTMkNSX1RZUEVfQllQQVNTKSB8Cj4gPiAgCSAg ICAgIEZJRUxEX1BSRVAoQVJNX1NNTVVfUzJDUl9DQk5EWCwgMHhmZikgfAo+ID4gIAkgICAgICBG SUVMRF9QUkVQKEFSTV9TTU1VX1MyQ1JfUFJJVkNGRywgUzJDUl9QUklWQ0ZHX0RFRkFVTFQpOwo+ ID4gLQlhcm1fc21tdV9ncjBfd3JpdGUoc21tdSwgbGFzdF9zMmNyLCByZWcpOwo+ID4gLQlyZWcg PSBhcm1fc21tdV9ncjBfcmVhZChzbW11LCBsYXN0X3MyY3IpOwo+ID4gKwlhcm1fc21tdV9ncjBf d3JpdGUoc21tdSwgZnJlZV9zMmNyLCByZWcpOwo+ID4gKwlyZWcgPSBhcm1fc21tdV9ncjBfcmVh ZChzbW11LCBmcmVlX3MyY3IpOwo+ID4gIAlpZiAoRklFTERfR0VUKEFSTV9TTU1VX1MyQ1JfVFlQ RSwgcmVnKSAhPSBTMkNSX1RZUEVfQllQQVNTKSB7Cj4gPiAgCQlxc21tdS0+YnlwYXNzX3F1aXJr ID0gdHJ1ZTsKPiA+ICAJCXFzbW11LT5ieXBhc3NfY2JuZHggPSBzbW11LT5udW1fY29udGV4dF9i YW5rcyAtIDE7Cj4gCj4gSm9oYW4KCi0tIArgrq7grqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a 4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2Vy bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==