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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3E360C77B6F for ; Mon, 10 Apr 2023 04:47:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229503AbjDJEre (ORCPT ); Mon, 10 Apr 2023 00:47:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49242 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229475AbjDJErc (ORCPT ); Mon, 10 Apr 2023 00:47:32 -0400 Received: from lelv0142.ext.ti.com (lelv0142.ext.ti.com [198.47.23.249]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9EC1E30C6; Sun, 9 Apr 2023 21:47:30 -0700 (PDT) Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id 33A4lBoH101478; Sun, 9 Apr 2023 23:47:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1681102031; bh=Ytx9fQ9Ub8uG529ZrD4BPGXjS5WsbtxTltwVymlI5EY=; h=Date:Subject:To:CC:References:From:In-Reply-To; b=di9uad7g8o6mc+SUeEMjwQE0pHDJHpuClOwJxovDPrJkU0RjNyL39zYmd+1QdurFL fS7jwdU5OjbhyxeObxRDj5eVQ4ORkuQJ5Ww2Y8D40ygmfPnSKtWkO1I6jF1ykeoRKU 3PCJPNZLIdG6swmUz59g7BAks0ZhZSBsF9+bgZcQ= Received: from DLEE113.ent.ti.com (dlee113.ent.ti.com [157.170.170.24]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 33A4lBhe020480 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Sun, 9 Apr 2023 23:47:11 -0500 Received: from DLEE109.ent.ti.com (157.170.170.41) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.16; Sun, 9 Apr 2023 23:47:10 -0500 Received: from fllv0039.itg.ti.com (10.64.41.19) by DLEE109.ent.ti.com (157.170.170.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.16 via Frontend Transport; Sun, 9 Apr 2023 23:47:10 -0500 Received: from [10.24.69.114] (ileaxei01-snat2.itg.ti.com [10.180.69.6]) by fllv0039.itg.ti.com (8.15.2/8.15.2) with ESMTP id 33A4l5pl079918; Sun, 9 Apr 2023 23:47:06 -0500 Message-ID: <08c07263-f4d4-1264-dd67-b377c3b6a048@ti.com> Date: Mon, 10 Apr 2023 10:17:05 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [EXTERNAL] Re: [PATCH v7 0/4] Introduce PRU platform consumer API To: Mathieu Poirier CC: MD Danish Anwar , "Andrew F. Davis" , Suman Anna , Roger Quadros , Vignesh Raghavendra , Tero Kristo , Bjorn Andersson , Santosh Shilimkar , Nishanth Menon , , , , , , , References: <20230404115336.599430-1-danishanwar@ti.com> <86ee5333-6d65-d28b-0dd5-40dfe485d48b@ti.com> Content-Language: en-US From: Md Danish Anwar Organization: Texas Instruments In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org On 06/04/23 18:45, Mathieu Poirier wrote: > On Thu, 6 Apr 2023 at 00:54, Md Danish Anwar wrote: >> >> On 04/04/23 17:23, MD Danish Anwar wrote: >>> Hi All, >>> The Programmable Real-Time Unit and Industrial Communication Subsystem (PRU-ICSS >>> or simply PRUSS) on various TI SoCs consists of dual 32-bit RISC cores >>> (Programmable Real-Time Units, or PRUs) for program execution. >>> >>> There are 3 foundation components for TI PRUSS subsystem: the PRUSS platform >>> driver, the PRUSS INTC driver and the PRUSS remoteproc driver. All of them have >>> already been merged and can be found under: >>> 1) drivers/soc/ti/pruss.c >>> Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml >>> 2) drivers/irqchip/irq-pruss-intc.c >>> Documentation/devicetree/bindings/interrupt-controller/ti,pruss-intc.yaml >>> 3) drivers/remoteproc/pru_rproc.c >>> Documentation/devicetree/bindings/remoteproc/ti,pru-consumer.yaml >>> >>> The programmable nature of the PRUs provide flexibility to implement custom >>> peripheral interfaces, fast real-time responses, or specialized data handling. >>> Example of a PRU consumer drivers will be: >>> - Software UART over PRUSS >>> - PRU-ICSS Ethernet EMAC >>> >>> In order to make usage of common PRU resources and allow the consumer drivers >>> to configure the PRU hardware for specific usage the PRU API is introduced. >>> >>> This is the v7 of the old patch series [9]. >>> >> >> Hi Mathieu, Can you please review this series. I have addressed comments made >> by you in v5. I have also addressed Simon's comment in v6 and removed redundant >> macros from pruss.h header file. >> > > You are pushing me to review your code 19 hours after sending the last > revision? Are you serious? > I am really sorry for this. Thursday was last working day last week (as Friday was holiday in India), so I thought I should ping you so that this series would be reviewed by Monday. From now on I would try to keep a gap a week (or whatever is appropriate) before pinging you for review. I am really sorry for this again. >>> Changes from v6 [9] to v7: >>> *) Addressed Simon's comment on patch 3 of this series and dropped unnecassary >>> macros from the patch. >>> >>> Changes from v5 [1] to v6: >>> *) Added Reviewed by tags of Roger and Tony to the patches. >>> *) Added Acked by tag of Mathieu to patch 2 of this series. >>> *) Added NULL check for @mux in pruss_cfg_get_gpmux() API. >>> *) Added comment to the pruss_get() function documentation mentioning it is >>> expected the caller will have done a pru_rproc_get() on @rproc. >>> *) Fixed compilation warning "warning: ‘pruss_cfg_update’ defined but not used" >>> in patch 3 by squashing patch 3 [7] and patch 5 [8] of previous revision >>> together. Squashed patch 5 instead of patch 4 with patch 3 because patch 5 uses >>> both read() and update() APIs where as patch 4 only uses update() API. >>> Previously pruss_cfg_read()/update() APIs were intoroduced in patch 3 >>> and used in patch 4 and 5. Now these APIs are introduced as well as used in >>> patch 3. >>> >> >> >> -- >> Thanks and Regards, >> Danish. -- Thanks and Regards, Danish. 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 D04A3C76196 for ; Mon, 10 Apr 2023 04:48:57 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=njqj+KuGLN8TUR6KDcZ2ApvM2nstZCo5qWRTHsQNYpI=; b=yTjR/bZjRK4R9m PTR6agCEfsA/ar5wZ+glzO8wHRHXLrJUzAn1XJZsApb4kqPhKeXcwXdIWNQtAkDOPZMxngrh3rAwa BYhPmkb1Zc94YCdWxcPls680rQHAFwZBEZqoXH/X2jIxjfKKs6o05DsoPjyjY+Db1jrzYgJ62owZ/ kYxtgn3Omf3CrDNl8yM5Vc5dLcMUXhvIOUSpflCoqvtZ1nvJmBT8mc/osmyWhaf99HgHj9RhXe4Gn Tnbteg2Xikyeno/k/5GgBIo/oWOd4xWDbaBKNwaVGx56MpV4Mj3/MW4w9iwLRsLXTHD3Uw+ypiwN8 +Azl5rs4nLAlUQva1B9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pljRC-00EZG5-16; Mon, 10 Apr 2023 04:47:30 +0000 Received: from lelv0142.ext.ti.com ([198.47.23.249]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pljR9-00EZF8-0Q for linux-arm-kernel@lists.infradead.org; Mon, 10 Apr 2023 04:47:28 +0000 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id 33A4lBoH101478; Sun, 9 Apr 2023 23:47:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1681102031; bh=Ytx9fQ9Ub8uG529ZrD4BPGXjS5WsbtxTltwVymlI5EY=; h=Date:Subject:To:CC:References:From:In-Reply-To; b=di9uad7g8o6mc+SUeEMjwQE0pHDJHpuClOwJxovDPrJkU0RjNyL39zYmd+1QdurFL fS7jwdU5OjbhyxeObxRDj5eVQ4ORkuQJ5Ww2Y8D40ygmfPnSKtWkO1I6jF1ykeoRKU 3PCJPNZLIdG6swmUz59g7BAks0ZhZSBsF9+bgZcQ= Received: from DLEE113.ent.ti.com (dlee113.ent.ti.com [157.170.170.24]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 33A4lBhe020480 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Sun, 9 Apr 2023 23:47:11 -0500 Received: from DLEE109.ent.ti.com (157.170.170.41) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.16; Sun, 9 Apr 2023 23:47:10 -0500 Received: from fllv0039.itg.ti.com (10.64.41.19) by DLEE109.ent.ti.com (157.170.170.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.16 via Frontend Transport; Sun, 9 Apr 2023 23:47:10 -0500 Received: from [10.24.69.114] (ileaxei01-snat2.itg.ti.com [10.180.69.6]) by fllv0039.itg.ti.com (8.15.2/8.15.2) with ESMTP id 33A4l5pl079918; Sun, 9 Apr 2023 23:47:06 -0500 Message-ID: <08c07263-f4d4-1264-dd67-b377c3b6a048@ti.com> Date: Mon, 10 Apr 2023 10:17:05 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [EXTERNAL] Re: [PATCH v7 0/4] Introduce PRU platform consumer API To: Mathieu Poirier References: <20230404115336.599430-1-danishanwar@ti.com> <86ee5333-6d65-d28b-0dd5-40dfe485d48b@ti.com> Content-Language: en-US From: Md Danish Anwar Organization: Texas Instruments In-Reply-To: X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230409_214727_342923_FD427EA6 X-CRM114-Status: GOOD ( 18.28 ) 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: , Cc: Nishanth Menon , srk@ti.com, linux-omap@vger.kernel.org, Vignesh Raghavendra , Tero Kristo , devicetree@vger.kernel.org, netdev@vger.kernel.org, Bjorn Andersson , linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, MD Danish Anwar , "Andrew F. Davis" , Roger Quadros , Santosh Shilimkar , 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+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAwNi8wNC8yMyAxODo0NSwgTWF0aGlldSBQb2lyaWVyIHdyb3RlOgo+IE9uIFRodSwgNiBB cHIgMjAyMyBhdCAwMDo1NCwgTWQgRGFuaXNoIEFud2FyIDxhMDUwMTE3OUB0aS5jb20+IHdyb3Rl Ogo+Pgo+PiBPbiAwNC8wNC8yMyAxNzoyMywgTUQgRGFuaXNoIEFud2FyIHdyb3RlOgo+Pj4gSGkg QWxsLAo+Pj4gVGhlIFByb2dyYW1tYWJsZSBSZWFsLVRpbWUgVW5pdCBhbmQgSW5kdXN0cmlhbCBD b21tdW5pY2F0aW9uIFN1YnN5c3RlbSAoUFJVLUlDU1MKPj4+IG9yIHNpbXBseSBQUlVTUykgb24g dmFyaW91cyBUSSBTb0NzIGNvbnNpc3RzIG9mIGR1YWwgMzItYml0IFJJU0MgY29yZXMKPj4+IChQ cm9ncmFtbWFibGUgUmVhbC1UaW1lIFVuaXRzLCBvciBQUlVzKSBmb3IgcHJvZ3JhbSBleGVjdXRp b24uCj4+Pgo+Pj4gVGhlcmUgYXJlIDMgZm91bmRhdGlvbiBjb21wb25lbnRzIGZvciBUSSBQUlVT UyBzdWJzeXN0ZW06IHRoZSBQUlVTUyBwbGF0Zm9ybQo+Pj4gZHJpdmVyLCB0aGUgUFJVU1MgSU5U QyBkcml2ZXIgYW5kIHRoZSBQUlVTUyByZW1vdGVwcm9jIGRyaXZlci4gQWxsIG9mIHRoZW0gaGF2 ZQo+Pj4gYWxyZWFkeSBiZWVuIG1lcmdlZCBhbmQgY2FuIGJlIGZvdW5kIHVuZGVyOgo+Pj4gMSkg ZHJpdmVycy9zb2MvdGkvcHJ1c3MuYwo+Pj4gICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp bmRpbmdzL3NvYy90aS90aSxwcnVzcy55YW1sCj4+PiAyKSBkcml2ZXJzL2lycWNoaXAvaXJxLXBy dXNzLWludGMuYwo+Pj4gICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVy cnVwdC1jb250cm9sbGVyL3RpLHBydXNzLWludGMueWFtbAo+Pj4gMykgZHJpdmVycy9yZW1vdGVw cm9jL3BydV9ycHJvYy5jCj4+PiAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv cmVtb3RlcHJvYy90aSxwcnUtY29uc3VtZXIueWFtbAo+Pj4KPj4+IFRoZSBwcm9ncmFtbWFibGUg bmF0dXJlIG9mIHRoZSBQUlVzIHByb3ZpZGUgZmxleGliaWxpdHkgdG8gaW1wbGVtZW50IGN1c3Rv bQo+Pj4gcGVyaXBoZXJhbCBpbnRlcmZhY2VzLCBmYXN0IHJlYWwtdGltZSByZXNwb25zZXMsIG9y IHNwZWNpYWxpemVkIGRhdGEgaGFuZGxpbmcuCj4+PiBFeGFtcGxlIG9mIGEgUFJVIGNvbnN1bWVy IGRyaXZlcnMgd2lsbCBiZToKPj4+ICAgLSBTb2Z0d2FyZSBVQVJUIG92ZXIgUFJVU1MKPj4+ICAg LSBQUlUtSUNTUyBFdGhlcm5ldCBFTUFDCj4+Pgo+Pj4gSW4gb3JkZXIgdG8gbWFrZSB1c2FnZSBv ZiBjb21tb24gUFJVIHJlc291cmNlcyBhbmQgYWxsb3cgdGhlIGNvbnN1bWVyIGRyaXZlcnMKPj4+ IHRvIGNvbmZpZ3VyZSB0aGUgUFJVIGhhcmR3YXJlIGZvciBzcGVjaWZpYyB1c2FnZSB0aGUgUFJV IEFQSSBpcyBpbnRyb2R1Y2VkLgo+Pj4KPj4+IFRoaXMgaXMgdGhlIHY3IG9mIHRoZSBvbGQgcGF0 Y2ggc2VyaWVzIFs5XS4KPj4+Cj4+Cj4+IEhpIE1hdGhpZXUsIENhbiB5b3UgcGxlYXNlIHJldmll dyB0aGlzIHNlcmllcy4gSSBoYXZlIGFkZHJlc3NlZCBjb21tZW50cyBtYWRlCj4+IGJ5IHlvdSBp biB2NS4gSSBoYXZlIGFsc28gYWRkcmVzc2VkIFNpbW9uJ3MgY29tbWVudCBpbiB2NiBhbmQgcmVt b3ZlZCByZWR1bmRhbnQKPj4gbWFjcm9zIGZyb20gcHJ1c3MuaCBoZWFkZXIgZmlsZS4KPj4KPiAK PiBZb3UgYXJlIHB1c2hpbmcgbWUgdG8gcmV2aWV3IHlvdXIgY29kZSAxOSBob3VycyBhZnRlciBz ZW5kaW5nIHRoZSBsYXN0Cj4gcmV2aXNpb24/ICBBcmUgeW91IHNlcmlvdXM/Cj4gCgpJIGFtIHJl YWxseSBzb3JyeSBmb3IgdGhpcy4gVGh1cnNkYXkgd2FzIGxhc3Qgd29ya2luZyBkYXkgbGFzdCB3 ZWVrIChhcyBGcmlkYXkKd2FzIGhvbGlkYXkgaW4gSW5kaWEpLCBzbyBJIHRob3VnaHQgSSBzaG91 bGQgcGluZyB5b3Ugc28gdGhhdCB0aGlzIHNlcmllcyB3b3VsZApiZSByZXZpZXdlZCBieSBNb25k YXkuIEZyb20gbm93IG9uIEkgd291bGQgdHJ5IHRvIGtlZXAgYSBnYXAgYSB3ZWVrIChvcgp3aGF0 ZXZlciBpcyBhcHByb3ByaWF0ZSkgYmVmb3JlIHBpbmdpbmcgeW91IGZvciByZXZpZXcuCgpJIGFt IHJlYWxseSBzb3JyeSBmb3IgdGhpcyBhZ2Fpbi4KCj4+PiBDaGFuZ2VzIGZyb20gdjYgWzldIHRv IHY3Ogo+Pj4gKikgQWRkcmVzc2VkIFNpbW9uJ3MgY29tbWVudCBvbiBwYXRjaCAzIG9mIHRoaXMg c2VyaWVzIGFuZCBkcm9wcGVkIHVubmVjYXNzYXJ5Cj4+PiBtYWNyb3MgZnJvbSB0aGUgcGF0Y2gu Cj4+Pgo+Pj4gQ2hhbmdlcyBmcm9tIHY1IFsxXSB0byB2NjoKPj4+ICopIEFkZGVkIFJldmlld2Vk IGJ5IHRhZ3Mgb2YgUm9nZXIgYW5kIFRvbnkgdG8gdGhlIHBhdGNoZXMuCj4+PiAqKSBBZGRlZCBB Y2tlZCBieSB0YWcgb2YgTWF0aGlldSB0byBwYXRjaCAyIG9mIHRoaXMgc2VyaWVzLgo+Pj4gKikg QWRkZWQgTlVMTCBjaGVjayBmb3IgQG11eCBpbiBwcnVzc19jZmdfZ2V0X2dwbXV4KCkgQVBJLgo+ Pj4gKikgQWRkZWQgY29tbWVudCB0byB0aGUgcHJ1c3NfZ2V0KCkgZnVuY3Rpb24gZG9jdW1lbnRh dGlvbiBtZW50aW9uaW5nIGl0IGlzCj4+PiBleHBlY3RlZCB0aGUgY2FsbGVyIHdpbGwgaGF2ZSBk b25lIGEgcHJ1X3Jwcm9jX2dldCgpIG9uIEBycHJvYy4KPj4+ICopIEZpeGVkIGNvbXBpbGF0aW9u IHdhcm5pbmcgIndhcm5pbmc6IOKAmHBydXNzX2NmZ191cGRhdGXigJkgZGVmaW5lZCBidXQgbm90 IHVzZWQiCj4+PiBpbiBwYXRjaCAzIGJ5IHNxdWFzaGluZyBwYXRjaCAzIFs3XSBhbmQgcGF0Y2gg NSBbOF0gb2YgcHJldmlvdXMgcmV2aXNpb24KPj4+IHRvZ2V0aGVyLiBTcXVhc2hlZCBwYXRjaCA1 IGluc3RlYWQgb2YgcGF0Y2ggNCB3aXRoIHBhdGNoIDMgYmVjYXVzZSBwYXRjaCA1IHVzZXMKPj4+ IGJvdGggcmVhZCgpIGFuZCB1cGRhdGUoKSBBUElzIHdoZXJlIGFzIHBhdGNoIDQgb25seSB1c2Vz IHVwZGF0ZSgpIEFQSS4KPj4+IFByZXZpb3VzbHkgcHJ1c3NfY2ZnX3JlYWQoKS91cGRhdGUoKSBB UElzIHdlcmUgaW50b3JvZHVjZWQgaW4gcGF0Y2ggMwo+Pj4gYW5kIHVzZWQgaW4gcGF0Y2ggNCBh bmQgNS4gTm93IHRoZXNlIEFQSXMgYXJlIGludHJvZHVjZWQgYXMgd2VsbCBhcyB1c2VkIGluCj4+ PiBwYXRjaCAzLgo+Pj4KPj4KPj4KPj4gLS0KPj4gVGhhbmtzIGFuZCBSZWdhcmRzLAo+PiBEYW5p c2guCgotLSAKVGhhbmtzIGFuZCBSZWdhcmRzLApEYW5pc2guCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==