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=-14.0 required=3.0 tests=BAYES_00,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable 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 00A12C433FE for ; Fri, 11 Dec 2020 16:52:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A55752310E for ; Fri, 11 Dec 2020 16:52:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728647AbgLKPwm convert rfc822-to-8bit (ORCPT ); Fri, 11 Dec 2020 10:52:42 -0500 Received: from mail-wr1-f66.google.com ([209.85.221.66]:41969 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388637AbgLKPwe (ORCPT ); Fri, 11 Dec 2020 10:52:34 -0500 Received: by mail-wr1-f66.google.com with SMTP id a12so9502291wrv.8; Fri, 11 Dec 2020 07:52:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=J7fcE0FENj78WD0WD0FAW2QvhAhKSbHLyC4gTCtkJlw=; b=Dnv0/f0W92D/tj1hHIMIlhCVF5erZIEWcz2BDHVkwc6FgcJhejKsI1dYYSvNNMA6TR UN0RWihNcxItvlA5Iqfm2ar2yShM3RMbK/JMGk6gImEm5N4Hwj1WrBnHqEX+RpIbNFLc IXmcDaOhFzga5VRfYX+mVhgXRPvk/qoSE/5OAekMqDHk0dx50lU/xvjLDU8D+LoyR7En VBZswG7Q8WPd7r2k334SfXCaSmIxM8JF/mQWPRy08cimjchRTH/rv2J9pxFkzAGzdRtT wFPZetq2b81dfMZIEMaVKLgtOTB78XWD37fTnWhPKWjzpzOf7PA4wxcMXxGydjlt9XSi +KwA== X-Gm-Message-State: AOAM533b1MeAVzeZ4faYynEsTdmriql1g5M/AFBjXfpJDMAfVKoV5dlM vFiKNRcaaDXFMMd6P/JV3Bk= X-Google-Smtp-Source: ABdhPJz7D8U+j4gEfci2HdyqdoNrhC+P/LecmgdYR4fAygHIEvJvMXFU+xo1bWvYdsuq5i6Z4xJvgQ== X-Received: by 2002:adf:f94b:: with SMTP id q11mr14872438wrr.351.1607701910528; Fri, 11 Dec 2020 07:51:50 -0800 (PST) Received: from kozik-lap (adsl-84-226-167-205.adslplus.ch. [84.226.167.205]) by smtp.googlemail.com with ESMTPSA id h2sm15998667wme.45.2020.12.11.07.51.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Dec 2020 07:51:49 -0800 (PST) Date: Fri, 11 Dec 2020 16:51:47 +0100 From: Krzysztof Kozlowski To: Iskren Chernev Cc: Chanwoo Choi , Bartlomiej Zolnierkiewicz , Michael Turquette , Stephen Boyd , Rob Herring , Lee Jones , Sebastian Reichel , Liam Girdwood , Mark Brown , Andy Gross , Bjorn Andersson , Alessandro Zummo , Alexandre Belloni , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-rtc@vger.kernel.org, Matheus Castello , Sebastian Krzyszkowiak , Angus Ainslie , Hans de Goede Subject: Re: [RFC 18/18] power: supply: max17040: Do not enforce (incorrect) interrupt trigger type Message-ID: <20201211155147.GA9732@kozik-lap> References: <20201210212534.216197-1-krzk@kernel.org> <20201210212534.216197-18-krzk@kernel.org> <20201211074755.GA4346@kozik-lap> <6f1cd4f0-21a7-ed8c-aafa-ba217c05ea5f@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8BIT In-Reply-To: <6f1cd4f0-21a7-ed8c-aafa-ba217c05ea5f@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On Fri, Dec 11, 2020 at 05:44:26PM +0200, Iskren Chernev wrote: > > On 12/11/20 9:47 AM, Krzysztof Kozlowski wrote: > > On Thu, Dec 10, 2020 at 10:25:34PM +0100, Krzysztof Kozlowski wrote: > >> Interrupt line can be configured on different hardware in different way, > >> even inverted.  Therefore driver should not enforce specific trigger > >> type - edge falling - but instead rely on Devicetree to configure it. > >> > >> The Maxim 14577/77836 datasheets describe the interrupt line as active > >> low with a requirement of acknowledge from the CPU therefore the edge > >> falling is not correct. > >> > >> Signed-off-by: Krzysztof Kozlowski > >> > >> --- > >> > >> This patch should wait till DTS changes are merged, as it relies on > >> proper Devicetree. > >> --- > >> .../devicetree/bindings/power/supply/max17040_battery.txt       | 2 +- > >> drivers/power/supply/max17040_battery.c                         | 2 +- > >>  2 files changed, 2 insertions(+), 2 deletions(-) > >> > >> diff --git > a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt > b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt > >> index c802f664b508..194eb9fe574d 100644 > >> --- a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt > >> +++ b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt > >> @@ -39,7 +39,7 @@ Example: > >>          reg = <0x36>; > >>          maxim,alert-low-soc-level = <10>; > >>          interrupt-parent = <&gpio7>; > >> -        interrupts = <2 IRQ_TYPE_EDGE_FALLING>; > >> +        interrupts = <2 IRQ_TYPE_LEVEL_LOW>; > >>          wakeup-source; > >>      }; > >> > >> diff --git a/drivers/power/supply/max17040_battery.c > b/drivers/power/supply/max17040_battery.c > >> index d956c67d5155..f737de0470de 100644 > >> --- a/drivers/power/supply/max17040_battery.c > >> +++ b/drivers/power/supply/max17040_battery.c > >> @@ -367,7 +367,7 @@ static int max17040_enable_alert_irq(struct > max17040_chip *chip) > >> > >>      flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT; > > > > This has to be removed. I will fix it in v2. > > > > Best regards, > > Krzysztof > > I removed the IRQF_TRIGGER_FALLING, tweaked the DT as per the DT patch, and > it worked on the samsung klte. > > I don't understand how the DT irq flag ends up being used by the kernel. It > is never explicitly read from DT or passed to interrupt API, only i2c->irq, > which is a pure int. The core __setup_irq() calls irqd_get_trigger_type() on IRQ data matching the IRQ. Best regards, Krzysztof 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=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 4B11BC433FE for ; Fri, 11 Dec 2020 15:53:08 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 D78B423329 for ; Fri, 11 Dec 2020 15:53:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D78B423329 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=merlin.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:References:Message-ID: Subject: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=RJ9rQzF6SO6DZEZYcT8ygtNdFBWymwb8+DdEIAv17WQ=; b=jTa1VnquMnn7JtsLmSPHis+pF 86r3dqS9uUYQ82vRcPlLSZh9hAzfGLuyUNMQz5oqPPszdnOaOh+FAvCTmpQdippTyAKQGaEhFzy6s a/huH5lh1MoGZtlq7YooI3FhzBvAC2uIkHAzGqgNW59gnDF6eFabv6VTzs+iGkMGv9vBXI/2hT6vl ttILx1BUTFxyUsdjI/IR4nZqSfizqptoCwNEXOIMjjKutZs9fl9xwzb3yfqA0W0AmSdMaIwscfpzY S2v5mVyMukO7ZlNt1XfWvVs4qmNaY9tFuMv1EfMd+1jN6RAQa5ofio6PWu0adbJDZx2aIiWlP6U5N 23K+ipzbA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1knki3-0007Ce-WE; Fri, 11 Dec 2020 15:51:56 +0000 Received: from mail-wr1-f68.google.com ([209.85.221.68]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1knki1-0007Bn-BD for linux-arm-kernel@lists.infradead.org; Fri, 11 Dec 2020 15:51:54 +0000 Received: by mail-wr1-f68.google.com with SMTP id a12so9502298wrv.8 for ; Fri, 11 Dec 2020 07:51:51 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=J7fcE0FENj78WD0WD0FAW2QvhAhKSbHLyC4gTCtkJlw=; b=HLB4lHoGjWmHQ01iOb+4WVSQf0+9AQDqNMtxYDlGgp6sPxJkl3D/lR6ZGsaNaLkP3j lUYq8XIEnVljddY4vzcGJQ57Cxeroj+RYRRJ7HaX9BHxrQ//h91K3IhJ+KevCxxqLdRe iEHdqLPWHhJCVaYTLG2Wyb8i0AU3FOxeWtWGmjB0kFuCIHaKwI4rj/3KNUDru6gPyC6G 3Uo0x2qIFtwq50WY54WlPQ46kY6JVXlW2sx6vFXP8ZAfTjpGEz00L6dTvhPu6U7t1tQy Sx7TBIinsQGbjrnWhPQeCNUrd5pfs//0CXPKqifGjRl3RQGdwAuXpFqqcSUhdF26fwPP S4Lg== X-Gm-Message-State: AOAM531tlh+iK5ykqzno5UDVQM+tmfhVfEsk8uBAhMeuR3E0xrETFruv 2qj68MU6XJECl2w5ZW4o09Y= X-Google-Smtp-Source: ABdhPJz7D8U+j4gEfci2HdyqdoNrhC+P/LecmgdYR4fAygHIEvJvMXFU+xo1bWvYdsuq5i6Z4xJvgQ== X-Received: by 2002:adf:f94b:: with SMTP id q11mr14872438wrr.351.1607701910528; Fri, 11 Dec 2020 07:51:50 -0800 (PST) Received: from kozik-lap (adsl-84-226-167-205.adslplus.ch. [84.226.167.205]) by smtp.googlemail.com with ESMTPSA id h2sm15998667wme.45.2020.12.11.07.51.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Dec 2020 07:51:49 -0800 (PST) Date: Fri, 11 Dec 2020 16:51:47 +0100 From: Krzysztof Kozlowski To: Iskren Chernev Subject: Re: [RFC 18/18] power: supply: max17040: Do not enforce (incorrect) interrupt trigger type Message-ID: <20201211155147.GA9732@kozik-lap> References: <20201210212534.216197-1-krzk@kernel.org> <20201210212534.216197-18-krzk@kernel.org> <20201211074755.GA4346@kozik-lap> <6f1cd4f0-21a7-ed8c-aafa-ba217c05ea5f@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <6f1cd4f0-21a7-ed8c-aafa-ba217c05ea5f@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201211_105153_401532_E1515D11 X-CRM114-Status: GOOD ( 27.07 ) 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: Alexandre Belloni , Liam Girdwood , Michael Turquette , Angus Ainslie , Sebastian Reichel , Lee Jones , linux-clk@vger.kernel.org, linux-rtc@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-pm@vger.kernel.org, Chanwoo Choi , Andy Gross , devicetree@vger.kernel.org, Bartlomiej Zolnierkiewicz , linux-arm-msm@vger.kernel.org, Hans de Goede , Rob Herring , Matheus Castello , Bjorn Andersson , linux-arm-kernel@lists.infradead.org, Alessandro Zummo , Stephen Boyd , linux-kernel@vger.kernel.org, Mark Brown , Sebastian Krzyszkowiak 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 T24gRnJpLCBEZWMgMTEsIDIwMjAgYXQgMDU6NDQ6MjZQTSArMDIwMCwgSXNrcmVuIENoZXJuZXYg d3JvdGU6Cj4gCj4gT24gMTIvMTEvMjAgOTo0NyBBTSwgS3J6eXN6dG9mIEtvemxvd3NraSB3cm90 ZToKPiA+IE9uIFRodSwgRGVjIDEwLCAyMDIwIGF0IDEwOjI1OjM0UE0gKzAxMDAsIEtyenlzenRv ZiBLb3psb3dza2kgd3JvdGU6Cj4gPj4gSW50ZXJydXB0IGxpbmUgY2FuIGJlIGNvbmZpZ3VyZWQg b24gZGlmZmVyZW50IGhhcmR3YXJlIGluIGRpZmZlcmVudCB3YXksCj4gPj4gZXZlbiBpbnZlcnRl ZC7CoCBUaGVyZWZvcmUgZHJpdmVyIHNob3VsZCBub3QgZW5mb3JjZSBzcGVjaWZpYyB0cmlnZ2Vy Cj4gPj4gdHlwZSAtIGVkZ2UgZmFsbGluZyAtIGJ1dCBpbnN0ZWFkIHJlbHkgb24gRGV2aWNldHJl ZSB0byBjb25maWd1cmUgaXQuCj4gPj4KPiA+PiBUaGUgTWF4aW0gMTQ1NzcvNzc4MzYgZGF0YXNo ZWV0cyBkZXNjcmliZSB0aGUgaW50ZXJydXB0IGxpbmUgYXMgYWN0aXZlCj4gPj4gbG93IHdpdGgg YSByZXF1aXJlbWVudCBvZiBhY2tub3dsZWRnZSBmcm9tIHRoZSBDUFUgdGhlcmVmb3JlIHRoZSBl ZGdlCj4gPj4gZmFsbGluZyBpcyBub3QgY29ycmVjdC4KPiA+Pgo+ID4+IFNpZ25lZC1vZmYtYnk6 IEtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KPiA+Pgo+ID4+IC0tLQo+ID4+ Cj4gPj4gVGhpcyBwYXRjaCBzaG91bGQgd2FpdCB0aWxsIERUUyBjaGFuZ2VzIGFyZSBtZXJnZWQs IGFzIGl0IHJlbGllcyBvbgo+ID4+IHByb3BlciBEZXZpY2V0cmVlLgo+ID4+IC0tLQo+ID4+IC4u Li9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3N1cHBseS9tYXgxNzA0MF9iYXR0ZXJ5LnR4dMKg wqDCoMKgwqDCoCB8IDIgKy0KPiA+PiBkcml2ZXJzL3Bvd2VyL3N1cHBseS9tYXgxNzA0MF9iYXR0 ZXJ5LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAy ICstCj4gPj7CoCAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKPiA+Pgo+ID4+IGRpZmYgLS1naXQKPiBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy9wb3dlci9zdXBwbHkvbWF4MTcwNDBfYmF0dGVyeS50eHQKPiBiL0RvY3VtZW50YXRpb24v ZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9zdXBwbHkvbWF4MTcwNDBfYmF0dGVyeS50eHQKPiA+ PiBpbmRleCBjODAyZjY2NGI1MDguLjE5NGViOWZlNTc0ZCAxMDA2NDQKPiA+PiAtLS0gYS9Eb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvc3VwcGx5L21heDE3MDQwX2JhdHRl cnkudHh0Cj4gPj4gKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2Vy L3N1cHBseS9tYXgxNzA0MF9iYXR0ZXJ5LnR4dAo+ID4+IEBAIC0zOSw3ICszOSw3IEBAIEV4YW1w bGU6Cj4gPj4gwqDCoMKgIMKgwqDCoCDCoHJlZyA9IDwweDM2PjsKPiA+PiDCoMKgwqAgwqDCoMKg IMKgbWF4aW0sYWxlcnQtbG93LXNvYy1sZXZlbCA9IDwxMD47Cj4gPj4gwqDCoMKgIMKgwqDCoCDC oGludGVycnVwdC1wYXJlbnQgPSA8JmdwaW83PjsKPiA+PiAtwqDCoCDCoMKgwqAgwqBpbnRlcnJ1 cHRzID0gPDIgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsKPiA+PiArwqDCoCDCoMKgwqAgwqBpbnRl cnJ1cHRzID0gPDIgSVJRX1RZUEVfTEVWRUxfTE9XPjsKPiA+PiDCoMKgwqAgwqDCoMKgIMKgd2Fr ZXVwLXNvdXJjZTsKPiA+PiDCoMKgwqAgwqB9Owo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvcG93ZXIvc3VwcGx5L21heDE3MDQwX2JhdHRlcnkuYwo+IGIvZHJpdmVycy9wb3dlci9zdXBw bHkvbWF4MTcwNDBfYmF0dGVyeS5jCj4gPj4gaW5kZXggZDk1NmM2N2Q1MTU1Li5mNzM3ZGUwNDcw ZGUgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9wb3dlci9zdXBwbHkvbWF4MTcwNDBfYmF0dGVy eS5jCj4gPj4gKysrIGIvZHJpdmVycy9wb3dlci9zdXBwbHkvbWF4MTcwNDBfYmF0dGVyeS5jCj4g Pj4gQEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0aWMgaW50IG1heDE3MDQwX2VuYWJsZV9hbGVydF9p cnEoc3RydWN0Cj4gbWF4MTcwNDBfY2hpcCAqY2hpcCkKPiA+Pgo+ID4+IMKgwqDCoCDCoGZsYWdz ID0gSVJRRl9UUklHR0VSX0ZBTExJTkcgfCBJUlFGX09ORVNIT1Q7Cj4gPgo+ID4gVGhpcyBoYXMg dG8gYmUgcmVtb3ZlZC4gSSB3aWxsIGZpeCBpdCBpbiB2Mi4KPiA+Cj4gPiBCZXN0IHJlZ2FyZHMs Cj4gPiBLcnp5c3p0b2YKPiAKPiBJIHJlbW92ZWQgdGhlIElSUUZfVFJJR0dFUl9GQUxMSU5HLCB0 d2Vha2VkIHRoZSBEVCBhcyBwZXIgdGhlIERUIHBhdGNoLCBhbmQKPiBpdCB3b3JrZWQgb24gdGhl IHNhbXN1bmcga2x0ZS4KPiAKPiBJIGRvbid0IHVuZGVyc3RhbmQgaG93IHRoZSBEVCBpcnEgZmxh ZyBlbmRzIHVwIGJlaW5nIHVzZWQgYnkgdGhlIGtlcm5lbC4gSXQKPiBpcyBuZXZlciBleHBsaWNp dGx5IHJlYWQgZnJvbSBEVCBvciBwYXNzZWQgdG8gaW50ZXJydXB0IEFQSSwgb25seSBpMmMtPmly cSwKPiB3aGljaCBpcyBhIHB1cmUgaW50LgoKVGhlIGNvcmUgX19zZXR1cF9pcnEoKSBjYWxscyBp cnFkX2dldF90cmlnZ2VyX3R5cGUoKSBvbiBJUlEgZGF0YQptYXRjaGluZyB0aGUgSVJRLgoKQmVz dCByZWdhcmRzLApLcnp5c3p0b2YKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK