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=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 D4252C00449 for ; Fri, 5 Oct 2018 09:49:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9FE6D20652 for ; Fri, 5 Oct 2018 09:49:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9FE6D20652 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727808AbeJEQrC (ORCPT ); Fri, 5 Oct 2018 12:47:02 -0400 Received: from metis.ext.pengutronix.de ([85.220.165.71]:32931 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727036AbeJEQrC (ORCPT ); Fri, 5 Oct 2018 12:47:02 -0400 Received: from lupine.hi.pengutronix.de ([2001:67c:670:100:3ad5:47ff:feaf:1a17] helo=lupine) by metis.ext.pengutronix.de with esmtp (Exim 4.89) (envelope-from ) id 1g8MjB-0005fs-Rt; Fri, 05 Oct 2018 11:48:57 +0200 Message-ID: <1538732937.3545.8.camel@pengutronix.de> Subject: Re: [PATCH v4 03/11] gpu: ipu-v3: Add planar support to interlaced scan From: Philipp Zabel To: Steve Longerbeam , linux-media@vger.kernel.org Cc: Mauro Carvalho Chehab , Greg Kroah-Hartman , Bartlomiej Zolnierkiewicz , "open list:DRM DRIVERS FOR FREESCALE IMX" , open list , "open list:STAGING SUBSYSTEM" , "open list:FRAMEBUFFER LAYER" Date: Fri, 05 Oct 2018 11:48:57 +0200 In-Reply-To: <20181004185401.15751-4-slongerbeam@gmail.com> References: <20181004185401.15751-1-slongerbeam@gmail.com> <20181004185401.15751-4-slongerbeam@gmail.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-SA-Exim-Connect-IP: 2001:67c:670:100:3ad5:47ff:feaf:1a17 X-SA-Exim-Mail-From: p.zabel@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2018-10-04 at 11:53 -0700, Steve Longerbeam wrote: > To support interlaced scan with planar formats, cpmem SLUV must > be programmed with the correct chroma line stride. For full and > partial planar 4:2:2 (YUV422P, NV16), chroma line stride must > be doubled. For full and partial planar 4:2:0 (YUV420, YVU420, NV12), > chroma line stride must _not_ be doubled, since a single chroma line > is shared by two luma lines. > > Signed-off-by: Steve Longerbeam > --- > drivers/gpu/ipu-v3/ipu-cpmem.c | 26 +++++++++++++++++++-- > drivers/staging/media/imx/imx-ic-prpencvf.c | 3 ++- > drivers/staging/media/imx/imx-media-csi.c | 3 ++- > include/video/imx-ipu-v3.h | 3 ++- > 4 files changed, 30 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/ipu-v3/ipu-cpmem.c b/drivers/gpu/ipu-v3/ipu-cpmem.c > index a9d2501500a1..d41df8034c5b 100644 > --- a/drivers/gpu/ipu-v3/ipu-cpmem.c > +++ b/drivers/gpu/ipu-v3/ipu-cpmem.c > @@ -273,9 +273,10 @@ void ipu_cpmem_set_uv_offset(struct ipuv3_channel *ch, u32 u_off, u32 v_off) > } > EXPORT_SYMBOL_GPL(ipu_cpmem_set_uv_offset); > > -void ipu_cpmem_interlaced_scan(struct ipuv3_channel *ch, int stride) > +void ipu_cpmem_interlaced_scan(struct ipuv3_channel *ch, int stride, > + u32 pixelformat) > { > - u32 ilo, sly; > + u32 ilo, sly, sluv; > > if (stride < 0) { > stride = -stride; > @@ -286,9 +287,30 @@ void ipu_cpmem_interlaced_scan(struct ipuv3_channel *ch, int stride) > > sly = (stride * 2) - 1; > > + switch (pixelformat) { > + case V4L2_PIX_FMT_YUV420: > + case V4L2_PIX_FMT_YVU420: > + sluv = stride / 2 - 1; > + break; > + case V4L2_PIX_FMT_NV12: > + sluv = stride - 1; > + break; > + case V4L2_PIX_FMT_YUV422P: > + sluv = stride - 1; > + break; > + case V4L2_PIX_FMT_NV16: > + sluv = stride * 2 - 1; > + break; > + default: > + sluv = 0; > + break; > + } > + > ipu_ch_param_write_field(ch, IPU_FIELD_SO, 1); > ipu_ch_param_write_field(ch, IPU_FIELD_ILO, ilo); > ipu_ch_param_write_field(ch, IPU_FIELD_SLY, sly); > + if (sluv) > + ipu_ch_param_write_field(ch, IPU_FIELD_SLUV, sluv); > }; > EXPORT_SYMBOL_GPL(ipu_cpmem_interlaced_scan); [...] Reviewed-by: Philipp Zabel and Acked-by: Philipp Zabel to be merged with the rest of the series via the media tree. I'll take care not to introduce nontrivial conflicts in imx-drm. regards Philipp From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([85.220.165.71]:59295 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727036AbeJEQq6 (ORCPT ); Fri, 5 Oct 2018 12:46:58 -0400 Message-ID: <1538732937.3545.8.camel@pengutronix.de> Subject: Re: [PATCH v4 03/11] gpu: ipu-v3: Add planar support to interlaced scan From: Philipp Zabel To: Steve Longerbeam , linux-media@vger.kernel.org Cc: Mauro Carvalho Chehab , Greg Kroah-Hartman , Bartlomiej Zolnierkiewicz , "open list:DRM DRIVERS FOR FREESCALE IMX" , open list , "open list:STAGING SUBSYSTEM" , "open list:FRAMEBUFFER LAYER" Date: Fri, 05 Oct 2018 11:48:57 +0200 In-Reply-To: <20181004185401.15751-4-slongerbeam@gmail.com> References: <20181004185401.15751-1-slongerbeam@gmail.com> <20181004185401.15751-4-slongerbeam@gmail.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-media-owner@vger.kernel.org List-ID: On Thu, 2018-10-04 at 11:53 -0700, Steve Longerbeam wrote: > To support interlaced scan with planar formats, cpmem SLUV must > be programmed with the correct chroma line stride. For full and > partial planar 4:2:2 (YUV422P, NV16), chroma line stride must > be doubled. For full and partial planar 4:2:0 (YUV420, YVU420, NV12), > chroma line stride must _not_ be doubled, since a single chroma line > is shared by two luma lines. > > Signed-off-by: Steve Longerbeam > --- > drivers/gpu/ipu-v3/ipu-cpmem.c | 26 +++++++++++++++++++-- > drivers/staging/media/imx/imx-ic-prpencvf.c | 3 ++- > drivers/staging/media/imx/imx-media-csi.c | 3 ++- > include/video/imx-ipu-v3.h | 3 ++- > 4 files changed, 30 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/ipu-v3/ipu-cpmem.c b/drivers/gpu/ipu-v3/ipu-cpmem.c > index a9d2501500a1..d41df8034c5b 100644 > --- a/drivers/gpu/ipu-v3/ipu-cpmem.c > +++ b/drivers/gpu/ipu-v3/ipu-cpmem.c > @@ -273,9 +273,10 @@ void ipu_cpmem_set_uv_offset(struct ipuv3_channel *ch, u32 u_off, u32 v_off) > } > EXPORT_SYMBOL_GPL(ipu_cpmem_set_uv_offset); > > -void ipu_cpmem_interlaced_scan(struct ipuv3_channel *ch, int stride) > +void ipu_cpmem_interlaced_scan(struct ipuv3_channel *ch, int stride, > + u32 pixelformat) > { > - u32 ilo, sly; > + u32 ilo, sly, sluv; > > if (stride < 0) { > stride = -stride; > @@ -286,9 +287,30 @@ void ipu_cpmem_interlaced_scan(struct ipuv3_channel *ch, int stride) > > sly = (stride * 2) - 1; > > + switch (pixelformat) { > + case V4L2_PIX_FMT_YUV420: > + case V4L2_PIX_FMT_YVU420: > + sluv = stride / 2 - 1; > + break; > + case V4L2_PIX_FMT_NV12: > + sluv = stride - 1; > + break; > + case V4L2_PIX_FMT_YUV422P: > + sluv = stride - 1; > + break; > + case V4L2_PIX_FMT_NV16: > + sluv = stride * 2 - 1; > + break; > + default: > + sluv = 0; > + break; > + } > + > ipu_ch_param_write_field(ch, IPU_FIELD_SO, 1); > ipu_ch_param_write_field(ch, IPU_FIELD_ILO, ilo); > ipu_ch_param_write_field(ch, IPU_FIELD_SLY, sly); > + if (sluv) > + ipu_ch_param_write_field(ch, IPU_FIELD_SLUV, sluv); > }; > EXPORT_SYMBOL_GPL(ipu_cpmem_interlaced_scan); [...] Reviewed-by: Philipp Zabel and Acked-by: Philipp Zabel to be merged with the rest of the series via the media tree. I'll take care not to introduce nontrivial conflicts in imx-drm. regards Philipp From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Date: Fri, 05 Oct 2018 09:48:57 +0000 Subject: Re: [PATCH v4 03/11] gpu: ipu-v3: Add planar support to interlaced scan Message-Id: <1538732937.3545.8.camel@pengutronix.de> List-Id: References: <20181004185401.15751-1-slongerbeam@gmail.com> <20181004185401.15751-4-slongerbeam@gmail.com> In-Reply-To: <20181004185401.15751-4-slongerbeam@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Steve Longerbeam , linux-media@vger.kernel.org Cc: "open list:STAGING SUBSYSTEM" , "open list:FRAMEBUFFER LAYER" , Bartlomiej Zolnierkiewicz , Greg Kroah-Hartman , open list , "open list:DRM DRIVERS FOR FREESCALE IMX" , Mauro Carvalho Chehab On Thu, 2018-10-04 at 11:53 -0700, Steve Longerbeam wrote: > To support interlaced scan with planar formats, cpmem SLUV must > be programmed with the correct chroma line stride. For full and > partial planar 4:2:2 (YUV422P, NV16), chroma line stride must > be doubled. For full and partial planar 4:2:0 (YUV420, YVU420, NV12), > chroma line stride must _not_ be doubled, since a single chroma line > is shared by two luma lines. > > Signed-off-by: Steve Longerbeam > --- > drivers/gpu/ipu-v3/ipu-cpmem.c | 26 +++++++++++++++++++-- > drivers/staging/media/imx/imx-ic-prpencvf.c | 3 ++- > drivers/staging/media/imx/imx-media-csi.c | 3 ++- > include/video/imx-ipu-v3.h | 3 ++- > 4 files changed, 30 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/ipu-v3/ipu-cpmem.c b/drivers/gpu/ipu-v3/ipu-cpmem.c > index a9d2501500a1..d41df8034c5b 100644 > --- a/drivers/gpu/ipu-v3/ipu-cpmem.c > +++ b/drivers/gpu/ipu-v3/ipu-cpmem.c > @@ -273,9 +273,10 @@ void ipu_cpmem_set_uv_offset(struct ipuv3_channel *ch, u32 u_off, u32 v_off) > } > EXPORT_SYMBOL_GPL(ipu_cpmem_set_uv_offset); > > -void ipu_cpmem_interlaced_scan(struct ipuv3_channel *ch, int stride) > +void ipu_cpmem_interlaced_scan(struct ipuv3_channel *ch, int stride, > + u32 pixelformat) > { > - u32 ilo, sly; > + u32 ilo, sly, sluv; > > if (stride < 0) { > stride = -stride; > @@ -286,9 +287,30 @@ void ipu_cpmem_interlaced_scan(struct ipuv3_channel *ch, int stride) > > sly = (stride * 2) - 1; > > + switch (pixelformat) { > + case V4L2_PIX_FMT_YUV420: > + case V4L2_PIX_FMT_YVU420: > + sluv = stride / 2 - 1; > + break; > + case V4L2_PIX_FMT_NV12: > + sluv = stride - 1; > + break; > + case V4L2_PIX_FMT_YUV422P: > + sluv = stride - 1; > + break; > + case V4L2_PIX_FMT_NV16: > + sluv = stride * 2 - 1; > + break; > + default: > + sluv = 0; > + break; > + } > + > ipu_ch_param_write_field(ch, IPU_FIELD_SO, 1); > ipu_ch_param_write_field(ch, IPU_FIELD_ILO, ilo); > ipu_ch_param_write_field(ch, IPU_FIELD_SLY, sly); > + if (sluv) > + ipu_ch_param_write_field(ch, IPU_FIELD_SLUV, sluv); > }; > EXPORT_SYMBOL_GPL(ipu_cpmem_interlaced_scan); [...] Reviewed-by: Philipp Zabel and Acked-by: Philipp Zabel to be merged with the rest of the series via the media tree. I'll take care not to introduce nontrivial conflicts in imx-drm. regards Philipp From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: Re: [PATCH v4 03/11] gpu: ipu-v3: Add planar support to interlaced scan Date: Fri, 05 Oct 2018 11:48:57 +0200 Message-ID: <1538732937.3545.8.camel@pengutronix.de> References: <20181004185401.15751-1-slongerbeam@gmail.com> <20181004185401.15751-4-slongerbeam@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8F62E6E794 for ; Fri, 5 Oct 2018 09:49:01 +0000 (UTC) In-Reply-To: <20181004185401.15751-4-slongerbeam@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Steve Longerbeam , linux-media@vger.kernel.org Cc: "open list:STAGING SUBSYSTEM" , "open list:FRAMEBUFFER LAYER" , Bartlomiej Zolnierkiewicz , Greg Kroah-Hartman , open list , "open list:DRM DRIVERS FOR FREESCALE IMX" , Mauro Carvalho Chehab List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCAyMDE4LTEwLTA0IGF0IDExOjUzIC0wNzAwLCBTdGV2ZSBMb25nZXJiZWFtIHdyb3Rl Ogo+IFRvIHN1cHBvcnQgaW50ZXJsYWNlZCBzY2FuIHdpdGggcGxhbmFyIGZvcm1hdHMsIGNwbWVt IFNMVVYgbXVzdAo+IGJlIHByb2dyYW1tZWQgd2l0aCB0aGUgY29ycmVjdCBjaHJvbWEgbGluZSBz dHJpZGUuIEZvciBmdWxsIGFuZAo+IHBhcnRpYWwgcGxhbmFyIDQ6MjoyIChZVVY0MjJQLCBOVjE2 KSwgY2hyb21hIGxpbmUgc3RyaWRlIG11c3QKPiBiZSBkb3VibGVkLiBGb3IgZnVsbCBhbmQgcGFy dGlhbCBwbGFuYXIgNDoyOjAgKFlVVjQyMCwgWVZVNDIwLCBOVjEyKSwKPiBjaHJvbWEgbGluZSBz dHJpZGUgbXVzdCBfbm90XyBiZSBkb3VibGVkLCBzaW5jZSBhIHNpbmdsZSBjaHJvbWEgbGluZQo+ IGlzIHNoYXJlZCBieSB0d28gbHVtYSBsaW5lcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBM b25nZXJiZWFtIDxzbG9uZ2VyYmVhbUBnbWFpbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2lw dS12My9pcHUtY3BtZW0uYyAgICAgICAgICAgICAgfCAyNiArKysrKysrKysrKysrKysrKysrLS0K PiAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2lteC9pbXgtaWMtcHJwZW5jdmYuYyB8ICAzICsrLQo+ ICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaW14L2lteC1tZWRpYS1jc2kuYyAgIHwgIDMgKystCj4g IGluY2x1ZGUvdmlkZW8vaW14LWlwdS12My5oICAgICAgICAgICAgICAgICAgfCAgMyArKy0KPiAg NCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWNwbWVtLmMgYi9kcml2ZXJzL2dwdS9p cHUtdjMvaXB1LWNwbWVtLmMKPiBpbmRleCBhOWQyNTAxNTAwYTEuLmQ0MWRmODAzNGM1YiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWNwbWVtLmMKPiArKysgYi9kcml2ZXJz L2dwdS9pcHUtdjMvaXB1LWNwbWVtLmMKPiBAQCAtMjczLDkgKzI3MywxMCBAQCB2b2lkIGlwdV9j cG1lbV9zZXRfdXZfb2Zmc2V0KHN0cnVjdCBpcHV2M19jaGFubmVsICpjaCwgdTMyIHVfb2ZmLCB1 MzIgdl9vZmYpCj4gIH0KPiAgRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2NwbWVtX3NldF91dl9vZmZz ZXQpOwo+ICAKPiAtdm9pZCBpcHVfY3BtZW1faW50ZXJsYWNlZF9zY2FuKHN0cnVjdCBpcHV2M19j aGFubmVsICpjaCwgaW50IHN0cmlkZSkKPiArdm9pZCBpcHVfY3BtZW1faW50ZXJsYWNlZF9zY2Fu KHN0cnVjdCBpcHV2M19jaGFubmVsICpjaCwgaW50IHN0cmlkZSwKPiArCQkJICAgICAgIHUzMiBw aXhlbGZvcm1hdCkKPiAgewo+IC0JdTMyIGlsbywgc2x5Owo+ICsJdTMyIGlsbywgc2x5LCBzbHV2 Owo+ICAKPiAgCWlmIChzdHJpZGUgPCAwKSB7Cj4gIAkJc3RyaWRlID0gLXN0cmlkZTsKPiBAQCAt Mjg2LDkgKzI4NywzMCBAQCB2b2lkIGlwdV9jcG1lbV9pbnRlcmxhY2VkX3NjYW4oc3RydWN0IGlw dXYzX2NoYW5uZWwgKmNoLCBpbnQgc3RyaWRlKQo+ICAKPiAgCXNseSA9IChzdHJpZGUgKiAyKSAt IDE7Cj4gIAo+ICsJc3dpdGNoIChwaXhlbGZvcm1hdCkgewo+ICsJY2FzZSBWNEwyX1BJWF9GTVRf WVVWNDIwOgo+ICsJY2FzZSBWNEwyX1BJWF9GTVRfWVZVNDIwOgo+ICsJCXNsdXYgPSBzdHJpZGUg LyAyIC0gMTsKPiArCQlicmVhazsKPiArCWNhc2UgVjRMMl9QSVhfRk1UX05WMTI6Cj4gKwkJc2x1 diA9IHN0cmlkZSAtIDE7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFY0TDJfUElYX0ZNVF9ZVVY0MjJQ Ogo+ICsJCXNsdXYgPSBzdHJpZGUgLSAxOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBWNEwyX1BJWF9G TVRfTlYxNjoKPiArCQlzbHV2ID0gc3RyaWRlICogMiAtIDE7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZh dWx0Ogo+ICsJCXNsdXYgPSAwOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiAgCWlwdV9jaF9wYXJh bV93cml0ZV9maWVsZChjaCwgSVBVX0ZJRUxEX1NPLCAxKTsKPiAgCWlwdV9jaF9wYXJhbV93cml0 ZV9maWVsZChjaCwgSVBVX0ZJRUxEX0lMTywgaWxvKTsKPiAgCWlwdV9jaF9wYXJhbV93cml0ZV9m aWVsZChjaCwgSVBVX0ZJRUxEX1NMWSwgc2x5KTsKPiArCWlmIChzbHV2KQo+ICsJCWlwdV9jaF9w YXJhbV93cml0ZV9maWVsZChjaCwgSVBVX0ZJRUxEX1NMVVYsIHNsdXYpOwo+ICB9Owo+ICBFWFBP UlRfU1lNQk9MX0dQTChpcHVfY3BtZW1faW50ZXJsYWNlZF9zY2FuKTsKWy4uLl0KClJldmlld2Vk LWJ5OiBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgoKYW5kCgpBY2tlZC1i eTogUGhpbGlwcCBaYWJlbCA8cC56YWJlbEBwZW5ndXRyb25peC5kZT4KCnRvIGJlIG1lcmdlZCB3 aXRoIHRoZSByZXN0IG9mIHRoZSBzZXJpZXMgdmlhIHRoZSBtZWRpYSB0cmVlLiBJJ2xsIHRha2UK Y2FyZSBub3QgdG8gaW50cm9kdWNlIG5vbnRyaXZpYWwgY29uZmxpY3RzIGluIGlteC1kcm0uCgpy ZWdhcmRzClBoaWxpcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==