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=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 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 42B69C2BA2B for ; Fri, 10 Apr 2020 10:00:32 +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 1141220753 for ; Fri, 10 Apr 2020 10:00:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="NOPEmewh"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="OUgkoroF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1141220753 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=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:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=/axalts52UShswsGo7wjZ4R0/w6XktGN74r2X6rz3q4=; b=NOPEmewhFb33G3 GVjvLKzrkd8J8Eluj1qDQDVg4/fNG1B4ohEkXYD7iAEaxv2kz8/dTmmc5I0Tp0NVxs+8UeNnvP5+7 b/yhiRzn1Vnl0c7PfznwoNWBQlQnvVgXn4s9Lf+wUTesi18iKy9EzfXk4Z2ETpyYRDliFSF08W3ui cPKzbpOUGSihHzuWxCew4DhS7vJgpJ6PS/BP34N35jhJYsqX7FEU3bI4B9leeRZ+ILXKMgVHCBLFf F/aS8EODnU+soIn7FTib6j5AtO3vgmTxH9wBmiA6T288kA0627sPMvxRwK5+hyWkgWeBlg7jjaIR8 B2FMXDFZeGGExVp/vbWQ==; 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 1jMqSU-0000XS-0J; Fri, 10 Apr 2020 10:00:22 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jMqSQ-0000Wm-Aj; Fri, 10 Apr 2020 10:00:21 +0000 X-UUID: db160af8eba04377a60f0e5ab31c79e3-20200410 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=dBHxmfTdIkE3bGLGDEM6BvHcVdkJIsDzzt+sqqsKpbc=; b=OUgkoroFLAdM9kTQFNATUAURpNReklUTUvC6fR2sArm64nE913JLn/9jWYcoI8ynUKOhCt2SBDqvbErQCWO9zDtoU+ebbpB46avEU3K4BP7XFO+G1u9tFjOju7K61GqdTC4qMEKNyaBLcrG/IKcKc5bIT9M/kULAiMcVDbaLNI4=; X-UUID: db160af8eba04377a60f0e5ab31c79e3-20200410 Received: from mtkcas67.mediatek.inc [(172.29.193.45)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 25559541; Fri, 10 Apr 2020 02:00:05 -0800 Received: from mtkmbs07n1.mediatek.inc (172.21.101.16) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 10 Apr 2020 03:00:10 -0700 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 10 Apr 2020 18:00:08 +0800 Received: from [172.21.84.99] (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 10 Apr 2020 18:00:09 +0800 Message-ID: <1586512810.8406.97.camel@mtksdccf07> Subject: Re: [v6, 4/5] media: platform: Add Mediatek ISP P1 image & meta formats From: Jungo Lin To: Laurent Pinchart Date: Fri, 10 Apr 2020 18:00:10 +0800 In-Reply-To: <20200403023031.GH4745@pendragon.ideasonboard.com> References: <20191219054930.29513-1-jungo.lin@mediatek.com> <20191219054930.29513-5-jungo.lin@mediatek.com> <20200403023031.GH4745@pendragon.ideasonboard.com> X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200410_030018_393560_B93933EB X-CRM114-Status: GOOD ( 21.42 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ryan.yu@mediatek.com, frankie.chiu@mediatek.com, robh@kernel.org, Rynn.Wu@mediatek.com, suleiman@chromium.org, Jerry-ch.Chen@mediatek.com, frederic.chen@mediatek.com, linux-media@vger.kernel.org, devicetree@vger.kernel.org, hverkuil-cisco@xs4all.nl, shik@chromium.org, yuzhao@chromium.org, linux-mediatek@lists.infradead.org, matthias.bgg@gmail.com, mchehab@kernel.org, linux-arm-kernel@lists.infradead.org, Sean.Cheng@mediatek.com, srv_heupstream@mediatek.com, sj.huang@mediatek.com, tfiga@chromium.org, zwisler@chromium.org, ddavenport@chromium.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Hi, Laurent: Thanks for your comments. On Fri, 2020-04-03 at 05:30 +0300, Laurent Pinchart wrote: > Hi Jungo, > > Thank you for the patch. > > On Thu, Dec 19, 2019 at 01:49:29PM +0800, Jungo Lin wrote: > > Add packed/full-g bayer formats with 8/10/12/14 bit > > for image output. Add Pass 1 (P1) specific meta formats for > > parameter processing and 3A/other statistics. > > > > (The current metadata format used in meta input and partial > > meta nodes is only a temporary solution to kick off the driver > > development and is not ready to be reviewed yet.) > > > > Signed-off-by: Jungo Lin > > --- > > Changes from v6: > > - Remove RGB format definitions in pixfmt-rgb.rst for kernel > > v5.5-rc1 version. > > --- > > .../media/uapi/v4l/pixfmt-mtisp-sbggr10.rst | 65 +++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst | 90 ++++++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr12.rst | 61 ++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst | 110 ++++++++++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr14.rst | 73 ++++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst | 110 ++++++++++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr8.rst | 51 ++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst | 78 +++++++++++++ > > 8 files changed, 638 insertions(+) > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst > > > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst > > new file mode 100644 > > index 000000000000..534edb4f0fd4 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst > > @@ -0,0 +1,65 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr10: > > +.. _v4l2-pix-fmt-mtisp-sgbrg10: > > +.. _v4l2-pix-fmt-mtisp-sgrbg10: > > +.. _v4l2-pix-fmt-mtisp-srggb10: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR10 ('MBBA'), V4L2_PIX_FMT_MTISP_SGBRG10('MBGA'), V4L2_PIX_FMT_MTISP_SGRBG10('MBgA'), V4L2_PIX_FMT_MTISP_SRGGB10('MBRA') > > +******************************* > > + > > +10-bit Packed Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format, meaning all the data bits for a pixel lying > > +next to each other with no padding in memory, with a depth of 10 bits per pixel. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. > > +They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. > > +Below is an example of conventional RGB byte order BGGR. > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +pixels cross the byte boundary and have a ratio of 5 bytes for each 4 pixels. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - G\ :sub:`01low bits 5--0` (bits 7--2) B\ :sub:`00high bits 9--8`\ (bits 1--0) > > + * - start + 2: > > + - B\ :sub:`02low bits 3--0`\ (bits 7--4) G\ :sub:`01high bits 9--6`\ (bits 3--0) > > + - G\ :sub:`03low bits 1--0`\ (bits 7--6) B\ :sub:`02high bits 9--4`\ (bits 5--0) > > + * - start + 4: > > + - G\ :sub:`03high bits 9--2` > > This contradicts the description above, where you mention there's no > padding, and here only 8 bits are used for the two bytes. Which one is > correct ? > These four pixel formats are raw sRGB / Bayer formats with 10 bits per color. Each color component is stored in the 1st byte with bit 0~7, with 2 extra high bits 8~9 will be stored in 2nd byte. For the rest 6 bits of 2nd byte are filled with the next color with bit 0~5. So there is no padding between the consecutive colors. > > + * - start + 6: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 5--0`\ (bits 7--2) G\ :sub:`10high bits 9--8`\ (bits 1--0) > > + * - start + 8: > > + - G\ :sub:`12low bits 3--0`\ (bits 7--4) R\ :sub:`11high bits 9--6`\ (bits 3--0) > > + - R\ :sub:`13low bits 1--0`\ (bits 7--6) G\ :sub:`12high bits 9--4`\ (bits 5--0) > > + * - start + 10: > > + - R\ :sub:`13high bits 9--2` > > + * - start + 12: > > + - B\ :sub:`20low bits 7--0` > > + - G\ :sub:`21low bits 5--0`\ (bits 7--2) B\ :sub:`20high bits 9--8`\ (bits 1--0) > > + * - start + 14: > > + - B\ :sub:`22low bits 3--0`\ (bits 7--4) G\ :sub:`21high bits 9--6`\ (bits 3--0) > > + - G\ :sub:`23low bits 1--0`\ (bits 7--6) B\ :sub:`22high bits 9--4`\ (bits 5--0) > > + * - start + 16: > > + - G\ :sub:`23high bits 9--2` > > + * - start + 18: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 5--0`\ (bits 7--2) G\ :sub:`30high bits 9--8`\ (bits 1--0) > > + * - start + 20: > > + - G\ :sub:`32low bits 3--0`\ (bits 7--4) R\ :sub:`31high bits 9--6`\ (bits 3--0) > > + - R\ :sub:`33low bits 1--0`\ (bits 7--6) G\ :sub:`32high bits 9--4`\ (bits 5--0) > > + * - start + 22: > > + - R\ :sub:`33high bits 9--2` (bits 7--0) > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst > > new file mode 100644 > > index 000000000000..7be527711602 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst > > @@ -0,0 +1,90 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr10f: > > +.. _v4l2-pix-fmt-mtisp-sgbrg10f: > > +.. _v4l2-pix-fmt-mtisp-sgrbg10f: > > +.. _v4l2-pix-fmt-mtisp-srggb10f: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR10F ('MFBA'), V4L2_PIX_FMT_MTISP_SGBRG10F('MFGA'), V4L2_PIX_FMT_MTISP_SGRBG10F('MFgA'), V4L2_PIX_FMT_MTISP_SRGGB10F('MFRA') > > +******************************* > > + > > +10-bit Packed Full-G Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format with a depth of 10 bits per sample with every 4 pixels. > > +Full-G means 1 more pixel for green channel every 2 pixels. > > I think this should describe where the additional green pixel comes > from. > Ok, we will add more descriptions to describe. The Full-G format adopts some of the features of Bayer CFA and RGB. In R and B Channels, only the pixel value of the corresponding position under the CFA arrangement is recorded. And the G Channel has full pixel values. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. They are conventionally > > +described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of conventional > > +RGB byte order BGGR. > > + > > +**Bit-packed representation.** > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - FG\ :sub:`01low bits 5--0`\ (bits 7--2) B\ :sub:`00high bits 9--8`\ (bits 1--0) > > + - G\ :sub:`02low bits 3--0`\ (bits 7--4) FG\ :sub:`01high bits 9--6`\ (bits 3--0) > > + - B\ :sub:`03low bits 1--0`\ (bits 7--6) G\ :sub:`02high bits 9--4`\ (bits 5--0) > > + * - start + 4: > > + - B\ :sub:`03high bits 9--2` > > + - FG\ :sub:`04low bits 7--0` > > + - G\ :sub:`05low bits 5--0`\ (bits 7--2) FG\ :sub:`04high bits 9--8`\ (bits 1--0) > > + - G\ :sub:`05high bits 3--0` > > + * - start + 8: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 5--0`\ (bits 7--2) G\ :sub:`10high bits 9--8`\ (bits 1--0) > > + - FG\ :sub:`12low bits 3--0`\ (bits 7--4) R\ :sub:`11high bits 9--6`\ (bits 3--0) > > + - G\ :sub:`13low bits 1--0`\ (bits 7--6) FG\ :sub:`12high bits 9--4`\ (bits 5--0) > > + * - start + 12: > > + - G\ :sub:`13high bits 9--2` > > + - R\ :sub:`14low bits 7--0` > > + - FG\ :sub:`15low bits 5--0`\ (bits 7--2) R\ :sub:`14high bits 9--8`\ (bits 1--0) > > + - FG\ :sub:`15high bits 3--0` > > + * - start + 16: > > + - B\ :sub:`20low bits 7--0` > > + - FG\ :sub:`21low bits 5--0`\ (bits 7--2) B\ :sub:`20high bits 9--8`\ (bits 1--0) > > + - G\ :sub:`22low bits 3--0`\ (bits 7--4) FG\ :sub:`21high bits 9--6`\ (bits 3--0) > > + - B\ :sub:`23low bits 1--0`\ (bits 7--6) G\ :sub:`22high bits 9--4`\ (bits 5--0) > > + * - start + 20: > > + - B\ :sub:`23high bits 9--2` > > + - FG\ :sub:`24low bits 7--0` > > + - G\ :sub:`25low bits 5--0`\ (bits 7--2) FG\ :sub:`24high bits 9--8`\ (bits 1--0) > > + - G\ :sub:`25high bits 3--0` > > + * - start + 24: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 5--0`\ (bits 7--2) G\ :sub:`30high bits 9--8`\ (bits 1--0) > > + - FG\ :sub:`32low bits 3--0`\ (bits 7--4) R\ :sub:`31high bits 9--6`\ (bits 3--0) > > + - G\ :sub:`33low bits 1--0`\ (bits 7--6) FG\ :sub:`32high bits 9--4`\ (bits 5--0) > > + * - start + 28: > > + - G\ :sub:`33high bits 9--2` > > + - R\ :sub:`34low bits 7--0` > > + - FG\ :sub:`35low bits 5--0`\ (bits 7--2) R\ :sub:`34high bits 9--8`\ (bits 1--0) > > + - FG\ :sub:`35high bits 3--0` > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst > > new file mode 100644 > > index 000000000000..cc888aac42c2 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst > > @@ -0,0 +1,61 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr12: > > +.. _v4l2-pix-fmt-mtisp-sgbrg12: > > +.. _v4l2-pix-fmt-mtisp-sgrbg12: > > +.. _v4l2-pix-fmt-mtisp-srggb12: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR12 ('MBBC'), V4L2_PIX_FMT_MTISP_SGBRG12('MBGC'), V4L2_PIX_FMT_MTISP_SGRBG12('MBgC'), V4L2_PIX_FMT_MTISP_SRGGB12('MBRC') > > +******************************* > > + > > +12-bit Packed Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format, meaning all the data bits for a pixel lying > > +next to each other with no padding in memory, with a depth of 12 bits per pixel. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. > > +They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. > > +Below is an example of conventional RGB byte order BGGR. > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +pixels cross the byte boundary and have a ratio of 6 bytes for each 4 pixels. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00lowbits 7--0` > > + - G\ :sub:`01lowbits 3--0`\ (bits 7--4) B\ :sub:`00highbits 11--8`\ (bits 3--0) > > + - G\ :sub:`01highbits 7--0` > > + - B\ :sub:`02lowbits 7--0` > > + - G\ :sub:`03lowbits 3--0`\ (bits 7--4) B\ :sub:`02highbits 11--8`\ (bits 3--0) > > + - G\ :sub:`03highbits 7--0` > > + * - start + 6: > > + - G\ :sub:`10lowbits 7--0` > > + - R\ :sub:`11lowbits 3--0`\ (bits 7--4) G\ :sub:`10highbits 11--8`\ (bits 3--0) > > + - R\ :sub:`11highbits 7--0` > > + - G\ :sub:`12lowbits 7--0` > > + - R\ :sub:`13lowbits 3--0`\ (bits 7--4) G\ :sub:`12highbits 11--8`\ (bits 3--0) > > + - R\ :sub:`13highbits 7--0` > > + * - start + 12: > > + - B\ :sub:`20lowbits 7--0` > > + - G\ :sub:`21lowbits 3--0`\ (bits 7--4) B\ :sub:`20highbits 11--8`\ (bits 3--0) > > + - G\ :sub:`21highbits 7--0` > > + - B\ :sub:`22lowbits 7--0` > > + - G\ :sub:`23lowbits 3--0`\ (bits 7--4) B\ :sub:`22highbits 11--8`\ (bits 3--0) > > + - G\ :sub:`23highbits 7--0` > > + * - start + 18: > > + - G\ :sub:`30lowbits 7--0` > > + - R\ :sub:`31lowbits 3--0`\ (bits 7--4) G\ :sub:`30highbits 11--8`\ (bits 3--0) > > + - R\ :sub:`31highbits 7--0` > > + - G\ :sub:`32lowbits 7--0` > > + - R\ :sub:`33lowbits 3--0`\ (bits 7--4) G\ :sub:`32highbits 11--8`\ (bits 3--0) > > + - R\ :sub:`33highbits 7--0` > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst > > new file mode 100644 > > index 000000000000..c063de9f9ad8 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst > > @@ -0,0 +1,110 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr12f: > > +.. _v4l2-pix-fmt-mtisp-sgbrg12f: > > +.. _v4l2-pix-fmt-mtisp-sgrbg12f: > > +.. _v4l2-pix-fmt-mtisp-srggb12f: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR12F ('MFBC'), V4L2_PIX_FMT_MTISP_SGBRG12F('MFGC'), V4L2_PIX_FMT_MTISP_SGRBG12F('MFgC'), V4L2_PIX_FMT_MTISP_SRGGB12F('MFRC') > > +******************************* > > + > > +12-bit Packed Full-G Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format with a depth of 12 bits per sample with every 4 pixels. > > +Full-G means 1 more pixel for green channel every 2 pixels. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. They are conventionally > > +described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of conventional > > +RGB byte order BGGR. > > + > > +**Bit-packed representation.** > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - FG\ :sub:`01low bits 3--0`\ (bits 7--4) B\ :sub:`00high bits 11--8`\ (bits 3--0) > > + * - start + 2: > > + - FG\ :sub:`01high bits 7--0` > > + - G\ :sub:`02low bits 7--0` > > + * - start + 4: > > + - B\ :sub:`03low bits 3--0`\ (bits 7--4) G\ :sub:`02high bits 11--8`\ (bits 3--0) > > + - B\ :sub:`03high bits 7--0` > > + * - start + 6: > > + - FG\ :sub:`04low bits 7--0` > > + - G\ :sub:`05low bits 3--0`\ (bits 7--4) FG\ :sub:`04high bits 11--8`\ (bits 3--0) > > + * - start + 8: > > + - G\ :sub:`05high bits 7--0` > > + - > > + * - start + 10: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 3--0`\ (bits 7--4) G\ :sub:`10high bits 11--8`\ (bits 3--0) > > + * - start + 12: > > + - R\ :sub:`11high bits 7--0` > > + - FG\ :sub:`12low bits 7--0` > > + * - start + 14: > > + - G\ :sub:`13low bits 3--0`\ (bits 7--4) FG\ :sub:`12high bits 11--8`\ (bits 3--0) > > + - G\ :sub:`13high bits 7--0` > > + * - start + 16: > > + - R\ :sub:`14low bits 7--0` > > + - FG\ :sub:`15low bits 3--0`\ (bits 7--4) R\ :sub:`14high bits 11--8`\ (bits 3--0) > > + * - start + 18: > > + - FG\ :sub:`15high bits 7--0` > > + - > > + * - start + 20: > > + - B\ :sub:`20low bits 7--0` > > + - FG\ :sub:`21low bits 3--0`\ (bits 7--4) B\ :sub:`20high bits 11--8`\ (bits 3--0) > > + * - start + 22: > > + - FG\ :sub:`21high bits 7--0` > > + - G\ :sub:`22low bits 7--0` > > + * - start + 24: > > + - B\ :sub:`23low bits 3--0`\ (bits 7--4) G\ :sub:`22high bits 11--8`\ (bits 3--0) > > + - B\ :sub:`23high bits 7--0` > > + * - start + 26: > > + - FG\ :sub:`24low bits 7--0` > > + - G\ :sub:`25low bits 3--0`\ (bits 7--4) FG\ :sub:`24high bits 11--8`\ (bits 3--0) > > + * - start + 28: > > + - G\ :sub:`25high bits 7--0` > > + - > > + * - start + 30: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 3--0`\ (bits 7--4) G\ :sub:`30high bits 11--8`\ (bits 3--0) > > + * - start + 32: > > + - R\ :sub:`31high bits 7--0` > > + - FG\ :sub:`32low bits 7--0` > > + * - start + 34: > > + - G\ :sub:`33low bits 3--0`\ (bits 7--4) FG\ :sub:`32high bits 11--8`\ (bits 3--0) > > + - G\ :sub:`33high bits 7--0` > > + * - start + 36: > > + - R\ :sub:`34low bits 7--0` > > + - FG\ :sub:`35low bits 3--0`\ (bits 7--4) R\ :sub:`34high bits 11--8`\ (bits 3--0) > > + * - start + 38: > > + - FG\ :sub:`35high bits 7--0` > > + - > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst > > new file mode 100644 > > index 000000000000..39ea9882a792 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst > > @@ -0,0 +1,73 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr14: > > +.. _v4l2-pix-fmt-mtisp-sgbrg14: > > +.. _v4l2-pix-fmt-mtisp-sgrbg14: > > +.. _v4l2-pix-fmt-mtisp-srggb14: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR14 ('MBBE'), V4L2_PIX_FMT_MTISP_SGBRG14('MBGE'), V4L2_PIX_FMT_MTISP_SGRBG14('MBgE'), V4L2_PIX_FMT_MTISP_SRGGB14('MBRE') > > +******************************* > > + > > +14-bit Packed Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format, meaning all the data bits for a pixel lying > > +next to each other with no padding in memory, with a depth of 14 bits per pixel. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. > > +They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. > > +Below is an example of conventional RGB byte order BGGR. > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +pixels cross the byte boundary and have a ratio of 7 bytes for each 4 pixels. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - G\ :sub:`01low bits 1--0`\ (bits 7--6) B\ :sub:`00high bits 13--8`\ (bits 5--0) > > + - G\ :sub:`01low bits 9--2`\ > > + - B\ :sub:`02low bits 3--0`\ (bits 7--4) G\ :sub:`01high bits 13--10`\ (bits 3--0) > > + * - start + 4: > > + - B\ :sub:`02low bits 11--4`\ > > + - G\ :sub:`03low bits 5--0`\ (bits 7--2) B\ :sub:`02high bits 13--12`\ (bits 1--0) > > + - G\ :sub:`03high bits 13--6`\ > > + - > > + * - start + 8: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 1--0`\ (bits 7--6) G\ :sub:`10high bits 13--8`\ (bits 5--0) > > + - R\ :sub:`11low bits 9--2`\ > > + - G\ :sub:`12low bits 3--0`\ (bits 7--4) R\ :sub:`11high bits 13--10`\ (bits 3--0) > > + * - start + 12: > > + - G\ :sub:`12low bits 11--4`\ > > + - R\ :sub:`13low bits 5--0`\ (bits 7--2) G\ :sub:`12high bits 13--12`\ (bits 1--0) > > + - R\ :sub:`13high bits 13--6`\ > > + - > > + * - start + 16: > > + - B\ :sub:`20low bits 7--0` > > + - G\ :sub:`21low bits 1--0`\ (bits 7--6) B\ :sub:`20high bits 13--8`\ (bits 5--0) > > + - G\ :sub:`21low bits 9--2`\ > > + - B\ :sub:`22low bits 3--0`\ (bits 7--4) G\ :sub:`21high bits 13--10`\ (bits 3--0) > > + * - start + 20: > > + - B\ :sub:`22low bits 11--4`\ > > + - G\ :sub:`23low bits 5--0`\ (bits 7--2) B\ :sub:`22high bits 13--12`\ (bits 1--0) > > + - G\ :sub:`23high bits 13--6`\ > > + - > > + * - start + 24: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 1--0`\ (bits 7--6) G\ :sub:`30high bits 13--8`\ (bits 5--0) > > + - R\ :sub:`31low bits 9--2`\ > > + - G\ :sub:`32low bits 3--0`\ (bits 7--4) R\ :sub:`31high bits 13--10`\ (bits 3--0) > > + * - start + 28: > > + - G\ :sub:`32low bits 11--4`\ > > + - R\ :sub:`33low bits 5--0`\ (bits 7--2) G\ :sub:`32high bits 13--12`\ (bits 1--0) > > + - R\ :sub:`33high bits 13--6`\ > > + - > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst > > new file mode 100644 > > index 000000000000..010b1c190c60 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst > > @@ -0,0 +1,110 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr14f: > > +.. _v4l2-pix-fmt-mtisp-sgbrg14f: > > +.. _v4l2-pix-fmt-mtisp-sgrbg14f: > > +.. _v4l2-pix-fmt-mtisp-srggb14f: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR14F ('MFBE'), V4L2_PIX_FMT_MTISP_SGBRG14F('MFGE'), V4L2_PIX_FMT_MTISP_SGRBG14F('MFgE'), V4L2_PIX_FMT_MTISP_SRGGB14F('MFRE') > > +******************************* > > + > > +14-bit Packed Full-G Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format with a depth of 14 bits per sample with every 4 pixels. > > +Full-G means 1 more pixel for green channel every 2 pixels. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. They are conventionally > > +described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of conventional > > +RGB byte order BGGR. > > + > > +**Bit-packed representation.** > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - FG\ :sub:`01low bits 1--0`\ (bits 7--6) B\ :sub:`00high bits 13--8`\ (bits 5--0) > > + - FG\ :sub:`01low bits 9--2` > > + - G\ :sub:`02low bits 3--0`\ (bits 7--4) FG\ :sub:`01high bits 13--10`\ (bits 3--0) > > + * - start + 4: > > + - G\ :sub:`02low bits 11--4` > > + - B\ :sub:`03low bits 5--0`\ (bits 7--2) G\ :sub:`02high bits 13--12`\ (bits 1--0) > > + - B\ :sub:`03high bits 13--6` > > + - FG\ :sub:`04low bits 7--0` > > + * - start + 8: > > + - G\ :sub:`05low bits 1--0`\ (bits 7--6) FG\ :sub:`04high bits 13--8`\ (bits 5--0) > > + - G\ :sub:`05high bits 9--2` > > + - G\ :sub:`05high bits 13--10` > > + - > > + * - start + 12: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 1--0`\ (bits 7--6) G\ :sub:`10high bits 13--8`\ (bits 5--0) > > + - R\ :sub:`11low bits 9--2` > > + - FG\ :sub:`12low bits 3--0`\ (bits 7--4) R\ :sub:`11high bits 13--10`\ (bits 3--0) > > + * - start + 16: > > + - FG\ :sub:`12low bits 11--4` > > + - G\ :sub:`13low bits 5--0`\ (bits 7--2) FG\ :sub:`12high bits 13--12`\ (bits 1--0) > > + - G\ :sub:`13high bits 13--6` > > + - R\ :sub:`14low bits 7--0` > > + * - start + 20: > > + - FG\ :sub:`15low bits 1--0`\ (bits 7--6) R\ :sub:`14high bits 13--8`\ (bits 5--0) > > + - FG\ :sub:`15high bits 9--2` > > + - FG\ :sub:`15high bits 13--10` > > + - > > + * - start + 24: > > + - B\ :sub:`20low bits 7--0` > > + - FG\ :sub:`21low bits 1--0`\ (bits 7--6) B\ :sub:`20high bits 13--8`\ (bits 5--0) > > + - FG\ :sub:`21low bits 9--2` > > + - G\ :sub:`22low bits 3--0`\ (bits 7--4) FG\ :sub:`21high bits 13--10`\ (bits 3--0) > > + * - start + 28: > > + - G\ :sub:`22low bits 11--4` > > + - B\ :sub:`23low bits 5--0`\ (bits 7--2) G\ :sub:`22high bits 13--12`\ (bits 1--0) > > + - B\ :sub:`23high bits 13--6` > > + - FG\ :sub:`24low bits 7--0` > > + * - start + 32: > > + - G\ :sub:`25low bits 1--0`\ (bits 7--6) FG\ :sub:`24high bits 13--8`\ (bits 5--0) > > + - G\ :sub:`25high bits 9--2` > > + - G\ :sub:`25high bits 13--10` > > + - > > + * - start + 36: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 1--0`\ (bits 7--6) G\ :sub:`30high bits 13--8`\ (bits 5--0) > > + - R\ :sub:`31low bits 9--2` > > + - FG\ :sub:`32low bits 3--0`\ (bits 7--4) R\ :sub:`31high bits 13--10`\ (bits 3--0) > > + * - start + 40: > > + - FG\ :sub:`32low bits 11--4` > > + - G\ :sub:`33low bits 5--0`\ (bits 7--2) FG\ :sub:`32high bits 13--12`\ (bits 1--0) > > + - G\ :sub:`33high bits 13--6` > > + - R\ :sub:`34low bits 7--0` > > + * - start + 44: > > + - FG\ :sub:`35low bits 1--0`\ (bits 7--6) R\ :sub:`34high bits 13--8`\ (bits 5--0) > > + - FG\ :sub:`35high bits 9--2` > > + - FG\ :sub:`35high bits 13--10` > > + - > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst > > new file mode 100644 > > index 000000000000..86cadbf38175 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst > > @@ -0,0 +1,51 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr8: > > +.. _v4l2-pix-fmt-mtisp-sgbrg8: > > +.. _v4l2-pix-fmt-mtisp-sgrbg8: > > +.. _v4l2-pix-fmt-mtisp-srggb8: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR8 ('MBB8'), V4L2_PIX_FMT_MTISP_SGBRG8('MBG8'), V4L2_PIX_FMT_MTISP_SGRBG8('MBg8'), V4L2_PIX_FMT_MTISP_SRGGB8('MBR8') > > +******************************* > > + > > +8-bit Packed Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format, meaning all the data bits for a pixel lying > > +next to each other with no padding in memory, with a depth of 8 bits per pixel. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. > > +They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. > > +Below is an example of conventional RGB byte order BGGR. > > How do these 8-bit formats differ from the V4L2_PIX_FMT_SGBRG8 (and > other variants) ? They seem identical based on the description. > You are right. They are identical. We will move "8-bit packed bayer formats" in next patch. Best regards, Jungo > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00` > > + - G\ :sub:`01` > > + - B\ :sub:`02` > > + - G\ :sub:`03` > > + * - start + 4: > > + - G\ :sub:`10` > > + - R\ :sub:`11` > > + - G\ :sub:`12` > > + - R\ :sub:`13` > > + * - start + 8: > > + - B\ :sub:`20` > > + - G\ :sub:`21` > > + - B\ :sub:`22` > > + - G\ :sub:`23` > > + * - start + 12: > > + - G\ :sub:`30` > > + - R\ :sub:`31` > > + - G\ :sub:`32` > > + - R\ :sub:`33` > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst > > new file mode 100644 > > index 000000000000..ca5151312bca > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst > > @@ -0,0 +1,78 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr8f: > > +.. _v4l2-pix-fmt-mtisp-sgbrg8f: > > +.. _v4l2-pix-fmt-mtisp-sgrbg8f: > > +.. _v4l2-pix-fmt-mtisp-srggb8f: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR8F ('MFB8'), V4L2_PIX_FMT_MTISP_SGBRG8F('MFG8'), V4L2_PIX_FMT_MTISP_SGRBG8F('MFg8'), V4L2_PIX_FMT_MTISP_SRGGB8F('MFR8') > > +******************************* > > + > > +8-bit Packed Full-G Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format with a depth of 8 bits per sample with every 4 pixels. > > +Full-G means 1 more pixel for green channel every 2 pixels. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. They are conventionally > > +described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of conventional > > +RGB byte order BGGR. > > + > > +**Bit-packed representation.** > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - start + 6: > > + - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + * - start + 12: > > + - B\ :sub:`20` > > + - FG\ :sub:`21` > > + - G\ :sub:`22` > > + - B\ :sub:`23` > > + - FG\ :sub:`24` > > + - G\ :sub:`25` > > + * - start + 18: > > + - G\ :sub:`30` > > + - R\ :sub:`31` > > + - FG\ :sub:`32` > > + - G\ :sub:`33` > > + - R\ :sub:`34` > > + - FG\ :sub:`35` > > \ No newline at end of file > _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek 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=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 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 8C0BFC2BA2B for ; Fri, 10 Apr 2020 10:00:23 +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 54E3320753 for ; Fri, 10 Apr 2020 10:00:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="LhwiMx7N"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="OUgkoroF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 54E3320753 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com 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:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=GQILUDwEnED65gvlRk3260PozEC3lB0T9ehz0ll3Wc0=; b=LhwiMx7NcgNCyG MqmcvQ6rrCT5zu0W/7cgwBxuqrtwdWo6ZAHerldsQvYQPoV+5Nw97BjCgfA00NnlY2fqR2I37bSs3 oHf0zehDDAEGlBeIzkxRAxEbLfb8w1sRSrAnfp4FQR/+v86UDBi9nM37oWsHnKQP4w/r/p5v/l24M LY430y+7XhvJwvg4xJHJEGXJ6hYkf1HEyyP7rxi6KsypOOB89liVpyoBOf+S6DkRJUMMLtdS/uaTi nyjqIoRdyyQu2tv2dX8bXrJQNwP4Bl+j3gZuiYlbUMIPacDjpQX1E4HeBKxt31861s18oxv51XsVa O63qSjLGTcnjKmvx3zZw==; 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 1jMqSV-0000YM-0a; Fri, 10 Apr 2020 10:00:23 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jMqSQ-0000Wm-Aj; Fri, 10 Apr 2020 10:00:21 +0000 X-UUID: db160af8eba04377a60f0e5ab31c79e3-20200410 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=dBHxmfTdIkE3bGLGDEM6BvHcVdkJIsDzzt+sqqsKpbc=; b=OUgkoroFLAdM9kTQFNATUAURpNReklUTUvC6fR2sArm64nE913JLn/9jWYcoI8ynUKOhCt2SBDqvbErQCWO9zDtoU+ebbpB46avEU3K4BP7XFO+G1u9tFjOju7K61GqdTC4qMEKNyaBLcrG/IKcKc5bIT9M/kULAiMcVDbaLNI4=; X-UUID: db160af8eba04377a60f0e5ab31c79e3-20200410 Received: from mtkcas67.mediatek.inc [(172.29.193.45)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 25559541; Fri, 10 Apr 2020 02:00:05 -0800 Received: from mtkmbs07n1.mediatek.inc (172.21.101.16) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 10 Apr 2020 03:00:10 -0700 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 10 Apr 2020 18:00:08 +0800 Received: from [172.21.84.99] (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 10 Apr 2020 18:00:09 +0800 Message-ID: <1586512810.8406.97.camel@mtksdccf07> Subject: Re: [v6, 4/5] media: platform: Add Mediatek ISP P1 image & meta formats From: Jungo Lin To: Laurent Pinchart Date: Fri, 10 Apr 2020 18:00:10 +0800 In-Reply-To: <20200403023031.GH4745@pendragon.ideasonboard.com> References: <20191219054930.29513-1-jungo.lin@mediatek.com> <20191219054930.29513-5-jungo.lin@mediatek.com> <20200403023031.GH4745@pendragon.ideasonboard.com> X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200410_030018_393560_B93933EB X-CRM114-Status: GOOD ( 21.42 ) 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: ryan.yu@mediatek.com, frankie.chiu@mediatek.com, robh@kernel.org, Rynn.Wu@mediatek.com, suleiman@chromium.org, Jerry-ch.Chen@mediatek.com, frederic.chen@mediatek.com, linux-media@vger.kernel.org, devicetree@vger.kernel.org, hverkuil-cisco@xs4all.nl, shik@chromium.org, yuzhao@chromium.org, linux-mediatek@lists.infradead.org, matthias.bgg@gmail.com, mchehab@kernel.org, linux-arm-kernel@lists.infradead.org, Sean.Cheng@mediatek.com, srv_heupstream@mediatek.com, sj.huang@mediatek.com, tfiga@chromium.org, zwisler@chromium.org, ddavenport@chromium.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Laurent: Thanks for your comments. On Fri, 2020-04-03 at 05:30 +0300, Laurent Pinchart wrote: > Hi Jungo, > > Thank you for the patch. > > On Thu, Dec 19, 2019 at 01:49:29PM +0800, Jungo Lin wrote: > > Add packed/full-g bayer formats with 8/10/12/14 bit > > for image output. Add Pass 1 (P1) specific meta formats for > > parameter processing and 3A/other statistics. > > > > (The current metadata format used in meta input and partial > > meta nodes is only a temporary solution to kick off the driver > > development and is not ready to be reviewed yet.) > > > > Signed-off-by: Jungo Lin > > --- > > Changes from v6: > > - Remove RGB format definitions in pixfmt-rgb.rst for kernel > > v5.5-rc1 version. > > --- > > .../media/uapi/v4l/pixfmt-mtisp-sbggr10.rst | 65 +++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst | 90 ++++++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr12.rst | 61 ++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst | 110 ++++++++++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr14.rst | 73 ++++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst | 110 ++++++++++++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr8.rst | 51 ++++++++ > > .../media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst | 78 +++++++++++++ > > 8 files changed, 638 insertions(+) > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst > > > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst > > new file mode 100644 > > index 000000000000..534edb4f0fd4 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst > > @@ -0,0 +1,65 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr10: > > +.. _v4l2-pix-fmt-mtisp-sgbrg10: > > +.. _v4l2-pix-fmt-mtisp-sgrbg10: > > +.. _v4l2-pix-fmt-mtisp-srggb10: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR10 ('MBBA'), V4L2_PIX_FMT_MTISP_SGBRG10('MBGA'), V4L2_PIX_FMT_MTISP_SGRBG10('MBgA'), V4L2_PIX_FMT_MTISP_SRGGB10('MBRA') > > +******************************* > > + > > +10-bit Packed Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format, meaning all the data bits for a pixel lying > > +next to each other with no padding in memory, with a depth of 10 bits per pixel. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. > > +They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. > > +Below is an example of conventional RGB byte order BGGR. > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +pixels cross the byte boundary and have a ratio of 5 bytes for each 4 pixels. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - G\ :sub:`01low bits 5--0` (bits 7--2) B\ :sub:`00high bits 9--8`\ (bits 1--0) > > + * - start + 2: > > + - B\ :sub:`02low bits 3--0`\ (bits 7--4) G\ :sub:`01high bits 9--6`\ (bits 3--0) > > + - G\ :sub:`03low bits 1--0`\ (bits 7--6) B\ :sub:`02high bits 9--4`\ (bits 5--0) > > + * - start + 4: > > + - G\ :sub:`03high bits 9--2` > > This contradicts the description above, where you mention there's no > padding, and here only 8 bits are used for the two bytes. Which one is > correct ? > These four pixel formats are raw sRGB / Bayer formats with 10 bits per color. Each color component is stored in the 1st byte with bit 0~7, with 2 extra high bits 8~9 will be stored in 2nd byte. For the rest 6 bits of 2nd byte are filled with the next color with bit 0~5. So there is no padding between the consecutive colors. > > + * - start + 6: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 5--0`\ (bits 7--2) G\ :sub:`10high bits 9--8`\ (bits 1--0) > > + * - start + 8: > > + - G\ :sub:`12low bits 3--0`\ (bits 7--4) R\ :sub:`11high bits 9--6`\ (bits 3--0) > > + - R\ :sub:`13low bits 1--0`\ (bits 7--6) G\ :sub:`12high bits 9--4`\ (bits 5--0) > > + * - start + 10: > > + - R\ :sub:`13high bits 9--2` > > + * - start + 12: > > + - B\ :sub:`20low bits 7--0` > > + - G\ :sub:`21low bits 5--0`\ (bits 7--2) B\ :sub:`20high bits 9--8`\ (bits 1--0) > > + * - start + 14: > > + - B\ :sub:`22low bits 3--0`\ (bits 7--4) G\ :sub:`21high bits 9--6`\ (bits 3--0) > > + - G\ :sub:`23low bits 1--0`\ (bits 7--6) B\ :sub:`22high bits 9--4`\ (bits 5--0) > > + * - start + 16: > > + - G\ :sub:`23high bits 9--2` > > + * - start + 18: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 5--0`\ (bits 7--2) G\ :sub:`30high bits 9--8`\ (bits 1--0) > > + * - start + 20: > > + - G\ :sub:`32low bits 3--0`\ (bits 7--4) R\ :sub:`31high bits 9--6`\ (bits 3--0) > > + - R\ :sub:`33low bits 1--0`\ (bits 7--6) G\ :sub:`32high bits 9--4`\ (bits 5--0) > > + * - start + 22: > > + - R\ :sub:`33high bits 9--2` (bits 7--0) > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst > > new file mode 100644 > > index 000000000000..7be527711602 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst > > @@ -0,0 +1,90 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr10f: > > +.. _v4l2-pix-fmt-mtisp-sgbrg10f: > > +.. _v4l2-pix-fmt-mtisp-sgrbg10f: > > +.. _v4l2-pix-fmt-mtisp-srggb10f: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR10F ('MFBA'), V4L2_PIX_FMT_MTISP_SGBRG10F('MFGA'), V4L2_PIX_FMT_MTISP_SGRBG10F('MFgA'), V4L2_PIX_FMT_MTISP_SRGGB10F('MFRA') > > +******************************* > > + > > +10-bit Packed Full-G Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format with a depth of 10 bits per sample with every 4 pixels. > > +Full-G means 1 more pixel for green channel every 2 pixels. > > I think this should describe where the additional green pixel comes > from. > Ok, we will add more descriptions to describe. The Full-G format adopts some of the features of Bayer CFA and RGB. In R and B Channels, only the pixel value of the corresponding position under the CFA arrangement is recorded. And the G Channel has full pixel values. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. They are conventionally > > +described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of conventional > > +RGB byte order BGGR. > > + > > +**Bit-packed representation.** > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - FG\ :sub:`01low bits 5--0`\ (bits 7--2) B\ :sub:`00high bits 9--8`\ (bits 1--0) > > + - G\ :sub:`02low bits 3--0`\ (bits 7--4) FG\ :sub:`01high bits 9--6`\ (bits 3--0) > > + - B\ :sub:`03low bits 1--0`\ (bits 7--6) G\ :sub:`02high bits 9--4`\ (bits 5--0) > > + * - start + 4: > > + - B\ :sub:`03high bits 9--2` > > + - FG\ :sub:`04low bits 7--0` > > + - G\ :sub:`05low bits 5--0`\ (bits 7--2) FG\ :sub:`04high bits 9--8`\ (bits 1--0) > > + - G\ :sub:`05high bits 3--0` > > + * - start + 8: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 5--0`\ (bits 7--2) G\ :sub:`10high bits 9--8`\ (bits 1--0) > > + - FG\ :sub:`12low bits 3--0`\ (bits 7--4) R\ :sub:`11high bits 9--6`\ (bits 3--0) > > + - G\ :sub:`13low bits 1--0`\ (bits 7--6) FG\ :sub:`12high bits 9--4`\ (bits 5--0) > > + * - start + 12: > > + - G\ :sub:`13high bits 9--2` > > + - R\ :sub:`14low bits 7--0` > > + - FG\ :sub:`15low bits 5--0`\ (bits 7--2) R\ :sub:`14high bits 9--8`\ (bits 1--0) > > + - FG\ :sub:`15high bits 3--0` > > + * - start + 16: > > + - B\ :sub:`20low bits 7--0` > > + - FG\ :sub:`21low bits 5--0`\ (bits 7--2) B\ :sub:`20high bits 9--8`\ (bits 1--0) > > + - G\ :sub:`22low bits 3--0`\ (bits 7--4) FG\ :sub:`21high bits 9--6`\ (bits 3--0) > > + - B\ :sub:`23low bits 1--0`\ (bits 7--6) G\ :sub:`22high bits 9--4`\ (bits 5--0) > > + * - start + 20: > > + - B\ :sub:`23high bits 9--2` > > + - FG\ :sub:`24low bits 7--0` > > + - G\ :sub:`25low bits 5--0`\ (bits 7--2) FG\ :sub:`24high bits 9--8`\ (bits 1--0) > > + - G\ :sub:`25high bits 3--0` > > + * - start + 24: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 5--0`\ (bits 7--2) G\ :sub:`30high bits 9--8`\ (bits 1--0) > > + - FG\ :sub:`32low bits 3--0`\ (bits 7--4) R\ :sub:`31high bits 9--6`\ (bits 3--0) > > + - G\ :sub:`33low bits 1--0`\ (bits 7--6) FG\ :sub:`32high bits 9--4`\ (bits 5--0) > > + * - start + 28: > > + - G\ :sub:`33high bits 9--2` > > + - R\ :sub:`34low bits 7--0` > > + - FG\ :sub:`35low bits 5--0`\ (bits 7--2) R\ :sub:`34high bits 9--8`\ (bits 1--0) > > + - FG\ :sub:`35high bits 3--0` > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst > > new file mode 100644 > > index 000000000000..cc888aac42c2 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst > > @@ -0,0 +1,61 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr12: > > +.. _v4l2-pix-fmt-mtisp-sgbrg12: > > +.. _v4l2-pix-fmt-mtisp-sgrbg12: > > +.. _v4l2-pix-fmt-mtisp-srggb12: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR12 ('MBBC'), V4L2_PIX_FMT_MTISP_SGBRG12('MBGC'), V4L2_PIX_FMT_MTISP_SGRBG12('MBgC'), V4L2_PIX_FMT_MTISP_SRGGB12('MBRC') > > +******************************* > > + > > +12-bit Packed Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format, meaning all the data bits for a pixel lying > > +next to each other with no padding in memory, with a depth of 12 bits per pixel. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. > > +They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. > > +Below is an example of conventional RGB byte order BGGR. > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +pixels cross the byte boundary and have a ratio of 6 bytes for each 4 pixels. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00lowbits 7--0` > > + - G\ :sub:`01lowbits 3--0`\ (bits 7--4) B\ :sub:`00highbits 11--8`\ (bits 3--0) > > + - G\ :sub:`01highbits 7--0` > > + - B\ :sub:`02lowbits 7--0` > > + - G\ :sub:`03lowbits 3--0`\ (bits 7--4) B\ :sub:`02highbits 11--8`\ (bits 3--0) > > + - G\ :sub:`03highbits 7--0` > > + * - start + 6: > > + - G\ :sub:`10lowbits 7--0` > > + - R\ :sub:`11lowbits 3--0`\ (bits 7--4) G\ :sub:`10highbits 11--8`\ (bits 3--0) > > + - R\ :sub:`11highbits 7--0` > > + - G\ :sub:`12lowbits 7--0` > > + - R\ :sub:`13lowbits 3--0`\ (bits 7--4) G\ :sub:`12highbits 11--8`\ (bits 3--0) > > + - R\ :sub:`13highbits 7--0` > > + * - start + 12: > > + - B\ :sub:`20lowbits 7--0` > > + - G\ :sub:`21lowbits 3--0`\ (bits 7--4) B\ :sub:`20highbits 11--8`\ (bits 3--0) > > + - G\ :sub:`21highbits 7--0` > > + - B\ :sub:`22lowbits 7--0` > > + - G\ :sub:`23lowbits 3--0`\ (bits 7--4) B\ :sub:`22highbits 11--8`\ (bits 3--0) > > + - G\ :sub:`23highbits 7--0` > > + * - start + 18: > > + - G\ :sub:`30lowbits 7--0` > > + - R\ :sub:`31lowbits 3--0`\ (bits 7--4) G\ :sub:`30highbits 11--8`\ (bits 3--0) > > + - R\ :sub:`31highbits 7--0` > > + - G\ :sub:`32lowbits 7--0` > > + - R\ :sub:`33lowbits 3--0`\ (bits 7--4) G\ :sub:`32highbits 11--8`\ (bits 3--0) > > + - R\ :sub:`33highbits 7--0` > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst > > new file mode 100644 > > index 000000000000..c063de9f9ad8 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst > > @@ -0,0 +1,110 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr12f: > > +.. _v4l2-pix-fmt-mtisp-sgbrg12f: > > +.. _v4l2-pix-fmt-mtisp-sgrbg12f: > > +.. _v4l2-pix-fmt-mtisp-srggb12f: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR12F ('MFBC'), V4L2_PIX_FMT_MTISP_SGBRG12F('MFGC'), V4L2_PIX_FMT_MTISP_SGRBG12F('MFgC'), V4L2_PIX_FMT_MTISP_SRGGB12F('MFRC') > > +******************************* > > + > > +12-bit Packed Full-G Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format with a depth of 12 bits per sample with every 4 pixels. > > +Full-G means 1 more pixel for green channel every 2 pixels. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. They are conventionally > > +described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of conventional > > +RGB byte order BGGR. > > + > > +**Bit-packed representation.** > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - FG\ :sub:`01low bits 3--0`\ (bits 7--4) B\ :sub:`00high bits 11--8`\ (bits 3--0) > > + * - start + 2: > > + - FG\ :sub:`01high bits 7--0` > > + - G\ :sub:`02low bits 7--0` > > + * - start + 4: > > + - B\ :sub:`03low bits 3--0`\ (bits 7--4) G\ :sub:`02high bits 11--8`\ (bits 3--0) > > + - B\ :sub:`03high bits 7--0` > > + * - start + 6: > > + - FG\ :sub:`04low bits 7--0` > > + - G\ :sub:`05low bits 3--0`\ (bits 7--4) FG\ :sub:`04high bits 11--8`\ (bits 3--0) > > + * - start + 8: > > + - G\ :sub:`05high bits 7--0` > > + - > > + * - start + 10: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 3--0`\ (bits 7--4) G\ :sub:`10high bits 11--8`\ (bits 3--0) > > + * - start + 12: > > + - R\ :sub:`11high bits 7--0` > > + - FG\ :sub:`12low bits 7--0` > > + * - start + 14: > > + - G\ :sub:`13low bits 3--0`\ (bits 7--4) FG\ :sub:`12high bits 11--8`\ (bits 3--0) > > + - G\ :sub:`13high bits 7--0` > > + * - start + 16: > > + - R\ :sub:`14low bits 7--0` > > + - FG\ :sub:`15low bits 3--0`\ (bits 7--4) R\ :sub:`14high bits 11--8`\ (bits 3--0) > > + * - start + 18: > > + - FG\ :sub:`15high bits 7--0` > > + - > > + * - start + 20: > > + - B\ :sub:`20low bits 7--0` > > + - FG\ :sub:`21low bits 3--0`\ (bits 7--4) B\ :sub:`20high bits 11--8`\ (bits 3--0) > > + * - start + 22: > > + - FG\ :sub:`21high bits 7--0` > > + - G\ :sub:`22low bits 7--0` > > + * - start + 24: > > + - B\ :sub:`23low bits 3--0`\ (bits 7--4) G\ :sub:`22high bits 11--8`\ (bits 3--0) > > + - B\ :sub:`23high bits 7--0` > > + * - start + 26: > > + - FG\ :sub:`24low bits 7--0` > > + - G\ :sub:`25low bits 3--0`\ (bits 7--4) FG\ :sub:`24high bits 11--8`\ (bits 3--0) > > + * - start + 28: > > + - G\ :sub:`25high bits 7--0` > > + - > > + * - start + 30: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 3--0`\ (bits 7--4) G\ :sub:`30high bits 11--8`\ (bits 3--0) > > + * - start + 32: > > + - R\ :sub:`31high bits 7--0` > > + - FG\ :sub:`32low bits 7--0` > > + * - start + 34: > > + - G\ :sub:`33low bits 3--0`\ (bits 7--4) FG\ :sub:`32high bits 11--8`\ (bits 3--0) > > + - G\ :sub:`33high bits 7--0` > > + * - start + 36: > > + - R\ :sub:`34low bits 7--0` > > + - FG\ :sub:`35low bits 3--0`\ (bits 7--4) R\ :sub:`34high bits 11--8`\ (bits 3--0) > > + * - start + 38: > > + - FG\ :sub:`35high bits 7--0` > > + - > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst > > new file mode 100644 > > index 000000000000..39ea9882a792 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst > > @@ -0,0 +1,73 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr14: > > +.. _v4l2-pix-fmt-mtisp-sgbrg14: > > +.. _v4l2-pix-fmt-mtisp-sgrbg14: > > +.. _v4l2-pix-fmt-mtisp-srggb14: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR14 ('MBBE'), V4L2_PIX_FMT_MTISP_SGBRG14('MBGE'), V4L2_PIX_FMT_MTISP_SGRBG14('MBgE'), V4L2_PIX_FMT_MTISP_SRGGB14('MBRE') > > +******************************* > > + > > +14-bit Packed Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format, meaning all the data bits for a pixel lying > > +next to each other with no padding in memory, with a depth of 14 bits per pixel. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. > > +They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. > > +Below is an example of conventional RGB byte order BGGR. > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +pixels cross the byte boundary and have a ratio of 7 bytes for each 4 pixels. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - G\ :sub:`01low bits 1--0`\ (bits 7--6) B\ :sub:`00high bits 13--8`\ (bits 5--0) > > + - G\ :sub:`01low bits 9--2`\ > > + - B\ :sub:`02low bits 3--0`\ (bits 7--4) G\ :sub:`01high bits 13--10`\ (bits 3--0) > > + * - start + 4: > > + - B\ :sub:`02low bits 11--4`\ > > + - G\ :sub:`03low bits 5--0`\ (bits 7--2) B\ :sub:`02high bits 13--12`\ (bits 1--0) > > + - G\ :sub:`03high bits 13--6`\ > > + - > > + * - start + 8: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 1--0`\ (bits 7--6) G\ :sub:`10high bits 13--8`\ (bits 5--0) > > + - R\ :sub:`11low bits 9--2`\ > > + - G\ :sub:`12low bits 3--0`\ (bits 7--4) R\ :sub:`11high bits 13--10`\ (bits 3--0) > > + * - start + 12: > > + - G\ :sub:`12low bits 11--4`\ > > + - R\ :sub:`13low bits 5--0`\ (bits 7--2) G\ :sub:`12high bits 13--12`\ (bits 1--0) > > + - R\ :sub:`13high bits 13--6`\ > > + - > > + * - start + 16: > > + - B\ :sub:`20low bits 7--0` > > + - G\ :sub:`21low bits 1--0`\ (bits 7--6) B\ :sub:`20high bits 13--8`\ (bits 5--0) > > + - G\ :sub:`21low bits 9--2`\ > > + - B\ :sub:`22low bits 3--0`\ (bits 7--4) G\ :sub:`21high bits 13--10`\ (bits 3--0) > > + * - start + 20: > > + - B\ :sub:`22low bits 11--4`\ > > + - G\ :sub:`23low bits 5--0`\ (bits 7--2) B\ :sub:`22high bits 13--12`\ (bits 1--0) > > + - G\ :sub:`23high bits 13--6`\ > > + - > > + * - start + 24: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 1--0`\ (bits 7--6) G\ :sub:`30high bits 13--8`\ (bits 5--0) > > + - R\ :sub:`31low bits 9--2`\ > > + - G\ :sub:`32low bits 3--0`\ (bits 7--4) R\ :sub:`31high bits 13--10`\ (bits 3--0) > > + * - start + 28: > > + - G\ :sub:`32low bits 11--4`\ > > + - R\ :sub:`33low bits 5--0`\ (bits 7--2) G\ :sub:`32high bits 13--12`\ (bits 1--0) > > + - R\ :sub:`33high bits 13--6`\ > > + - > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst > > new file mode 100644 > > index 000000000000..010b1c190c60 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst > > @@ -0,0 +1,110 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr14f: > > +.. _v4l2-pix-fmt-mtisp-sgbrg14f: > > +.. _v4l2-pix-fmt-mtisp-sgrbg14f: > > +.. _v4l2-pix-fmt-mtisp-srggb14f: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR14F ('MFBE'), V4L2_PIX_FMT_MTISP_SGBRG14F('MFGE'), V4L2_PIX_FMT_MTISP_SGRBG14F('MFgE'), V4L2_PIX_FMT_MTISP_SRGGB14F('MFRE') > > +******************************* > > + > > +14-bit Packed Full-G Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format with a depth of 14 bits per sample with every 4 pixels. > > +Full-G means 1 more pixel for green channel every 2 pixels. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. They are conventionally > > +described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of conventional > > +RGB byte order BGGR. > > + > > +**Bit-packed representation.** > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00low bits 7--0` > > + - FG\ :sub:`01low bits 1--0`\ (bits 7--6) B\ :sub:`00high bits 13--8`\ (bits 5--0) > > + - FG\ :sub:`01low bits 9--2` > > + - G\ :sub:`02low bits 3--0`\ (bits 7--4) FG\ :sub:`01high bits 13--10`\ (bits 3--0) > > + * - start + 4: > > + - G\ :sub:`02low bits 11--4` > > + - B\ :sub:`03low bits 5--0`\ (bits 7--2) G\ :sub:`02high bits 13--12`\ (bits 1--0) > > + - B\ :sub:`03high bits 13--6` > > + - FG\ :sub:`04low bits 7--0` > > + * - start + 8: > > + - G\ :sub:`05low bits 1--0`\ (bits 7--6) FG\ :sub:`04high bits 13--8`\ (bits 5--0) > > + - G\ :sub:`05high bits 9--2` > > + - G\ :sub:`05high bits 13--10` > > + - > > + * - start + 12: > > + - G\ :sub:`10low bits 7--0` > > + - R\ :sub:`11low bits 1--0`\ (bits 7--6) G\ :sub:`10high bits 13--8`\ (bits 5--0) > > + - R\ :sub:`11low bits 9--2` > > + - FG\ :sub:`12low bits 3--0`\ (bits 7--4) R\ :sub:`11high bits 13--10`\ (bits 3--0) > > + * - start + 16: > > + - FG\ :sub:`12low bits 11--4` > > + - G\ :sub:`13low bits 5--0`\ (bits 7--2) FG\ :sub:`12high bits 13--12`\ (bits 1--0) > > + - G\ :sub:`13high bits 13--6` > > + - R\ :sub:`14low bits 7--0` > > + * - start + 20: > > + - FG\ :sub:`15low bits 1--0`\ (bits 7--6) R\ :sub:`14high bits 13--8`\ (bits 5--0) > > + - FG\ :sub:`15high bits 9--2` > > + - FG\ :sub:`15high bits 13--10` > > + - > > + * - start + 24: > > + - B\ :sub:`20low bits 7--0` > > + - FG\ :sub:`21low bits 1--0`\ (bits 7--6) B\ :sub:`20high bits 13--8`\ (bits 5--0) > > + - FG\ :sub:`21low bits 9--2` > > + - G\ :sub:`22low bits 3--0`\ (bits 7--4) FG\ :sub:`21high bits 13--10`\ (bits 3--0) > > + * - start + 28: > > + - G\ :sub:`22low bits 11--4` > > + - B\ :sub:`23low bits 5--0`\ (bits 7--2) G\ :sub:`22high bits 13--12`\ (bits 1--0) > > + - B\ :sub:`23high bits 13--6` > > + - FG\ :sub:`24low bits 7--0` > > + * - start + 32: > > + - G\ :sub:`25low bits 1--0`\ (bits 7--6) FG\ :sub:`24high bits 13--8`\ (bits 5--0) > > + - G\ :sub:`25high bits 9--2` > > + - G\ :sub:`25high bits 13--10` > > + - > > + * - start + 36: > > + - G\ :sub:`30low bits 7--0` > > + - R\ :sub:`31low bits 1--0`\ (bits 7--6) G\ :sub:`30high bits 13--8`\ (bits 5--0) > > + - R\ :sub:`31low bits 9--2` > > + - FG\ :sub:`32low bits 3--0`\ (bits 7--4) R\ :sub:`31high bits 13--10`\ (bits 3--0) > > + * - start + 40: > > + - FG\ :sub:`32low bits 11--4` > > + - G\ :sub:`33low bits 5--0`\ (bits 7--2) FG\ :sub:`32high bits 13--12`\ (bits 1--0) > > + - G\ :sub:`33high bits 13--6` > > + - R\ :sub:`34low bits 7--0` > > + * - start + 44: > > + - FG\ :sub:`35low bits 1--0`\ (bits 7--6) R\ :sub:`34high bits 13--8`\ (bits 5--0) > > + - FG\ :sub:`35high bits 9--2` > > + - FG\ :sub:`35high bits 13--10` > > + - > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst > > new file mode 100644 > > index 000000000000..86cadbf38175 > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst > > @@ -0,0 +1,51 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr8: > > +.. _v4l2-pix-fmt-mtisp-sgbrg8: > > +.. _v4l2-pix-fmt-mtisp-sgrbg8: > > +.. _v4l2-pix-fmt-mtisp-srggb8: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR8 ('MBB8'), V4L2_PIX_FMT_MTISP_SGBRG8('MBG8'), V4L2_PIX_FMT_MTISP_SGRBG8('MBg8'), V4L2_PIX_FMT_MTISP_SRGGB8('MBR8') > > +******************************* > > + > > +8-bit Packed Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format, meaning all the data bits for a pixel lying > > +next to each other with no padding in memory, with a depth of 8 bits per pixel. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. > > +They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. > > +Below is an example of conventional RGB byte order BGGR. > > How do these 8-bit formats differ from the V4L2_PIX_FMT_SGBRG8 (and > other variants) ? They seem identical based on the description. > You are right. They are identical. We will move "8-bit packed bayer formats" in next patch. Best regards, Jungo > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00` > > + - G\ :sub:`01` > > + - B\ :sub:`02` > > + - G\ :sub:`03` > > + * - start + 4: > > + - G\ :sub:`10` > > + - R\ :sub:`11` > > + - G\ :sub:`12` > > + - R\ :sub:`13` > > + * - start + 8: > > + - B\ :sub:`20` > > + - G\ :sub:`21` > > + - B\ :sub:`22` > > + - G\ :sub:`23` > > + * - start + 12: > > + - G\ :sub:`30` > > + - R\ :sub:`31` > > + - G\ :sub:`32` > > + - R\ :sub:`33` > > \ No newline at end of file > > diff --git a/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst > > new file mode 100644 > > index 000000000000..ca5151312bca > > --- /dev/null > > +++ b/Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst > > @@ -0,0 +1,78 @@ > > +.. -*- coding: utf-8; mode: rst -*- > > + > > +.. _v4l2-pix-fmt-mtisp-sbggr8f: > > +.. _v4l2-pix-fmt-mtisp-sgbrg8f: > > +.. _v4l2-pix-fmt-mtisp-sgrbg8f: > > +.. _v4l2-pix-fmt-mtisp-srggb8f: > > + > > +******************************* > > +V4L2_PIX_FMT_MTISP_SBGGR8F ('MFB8'), V4L2_PIX_FMT_MTISP_SGBRG8F('MFG8'), V4L2_PIX_FMT_MTISP_SGRBG8F('MFg8'), V4L2_PIX_FMT_MTISP_SRGGB8F('MFR8') > > +******************************* > > + > > +8-bit Packed Full-G Bayer formats. > > + > > +Description > > +=========== > > + > > +These four pixel formats are used by Mediatek ISP P1. > > +This is a packed format with a depth of 8 bits per sample with every 4 pixels. > > +Full-G means 1 more pixel for green channel every 2 pixels. > > +The least significant byte is stored at lower memory addresses (little-endian). > > +The RGB byte order follows raw sRGB / Bayer format from sensor. They are conventionally > > +described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of conventional > > +RGB byte order BGGR. > > + > > +**Bit-packed representation.** > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + > > +**Byte Order.** > > +Each cell is one byte. > > + > > +.. flat-table:: > > + :header-rows: 0 > > + :stub-columns: 0 > > + > > + * - start + 0: > > + - B\ :sub:`00` > > + - FG\ :sub:`01` > > + - G\ :sub:`02` > > + - B\ :sub:`03` > > + - FG\ :sub:`04` > > + - G\ :sub:`05` > > + * - start + 6: > > + - G\ :sub:`10` > > + - R\ :sub:`11` > > + - FG\ :sub:`12` > > + - G\ :sub:`13` > > + - R\ :sub:`14` > > + - FG\ :sub:`15` > > + * - start + 12: > > + - B\ :sub:`20` > > + - FG\ :sub:`21` > > + - G\ :sub:`22` > > + - B\ :sub:`23` > > + - FG\ :sub:`24` > > + - G\ :sub:`25` > > + * - start + 18: > > + - G\ :sub:`30` > > + - R\ :sub:`31` > > + - FG\ :sub:`32` > > + - G\ :sub:`33` > > + - R\ :sub:`34` > > + - FG\ :sub:`35` > > \ No newline at end of file > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 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=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 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 C355DC2BB55 for ; Fri, 10 Apr 2020 10:00:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6F27920753 for ; Fri, 10 Apr 2020 10:00:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="OUgkoroF" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725913AbgDJKA0 (ORCPT ); Fri, 10 Apr 2020 06:00:26 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:13537 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725861AbgDJKA0 (ORCPT ); Fri, 10 Apr 2020 06:00:26 -0400 X-UUID: 91bc48d0c1d6479181cac2a4567420c4-20200410 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=dBHxmfTdIkE3bGLGDEM6BvHcVdkJIsDzzt+sqqsKpbc=; b=OUgkoroFLAdM9kTQFNATUAURpNReklUTUvC6fR2sArm64nE913JLn/9jWYcoI8ynUKOhCt2SBDqvbErQCWO9zDtoU+ebbpB46avEU3K4BP7XFO+G1u9tFjOju7K61GqdTC4qMEKNyaBLcrG/IKcKc5bIT9M/kULAiMcVDbaLNI4=; X-UUID: 91bc48d0c1d6479181cac2a4567420c4-20200410 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1910654780; Fri, 10 Apr 2020 18:00:12 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 10 Apr 2020 18:00:08 +0800 Received: from [172.21.84.99] (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 10 Apr 2020 18:00:09 +0800 Message-ID: <1586512810.8406.97.camel@mtksdccf07> Subject: Re: [v6, 4/5] media: platform: Add Mediatek ISP P1 image & meta formats From: Jungo Lin To: Laurent Pinchart CC: , , , , , , , , , , , , , , , , , , , , , Date: Fri, 10 Apr 2020 18:00:10 +0800 In-Reply-To: <20200403023031.GH4745@pendragon.ideasonboard.com> References: <20191219054930.29513-1-jungo.lin@mediatek.com> <20191219054930.29513-5-jungo.lin@mediatek.com> <20200403023031.GH4745@pendragon.ideasonboard.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org SGksIExhdXJlbnQ6DQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cy4NCg0KT24gRnJpLCAyMDIw LTA0LTAzIGF0IDA1OjMwICswMzAwLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOg0KPiBIaSBKdW5n bywNCj4gDQo+IFRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoLg0KPiANCj4gT24gVGh1LCBEZWMgMTks IDIwMTkgYXQgMDE6NDk6MjlQTSArMDgwMCwgSnVuZ28gTGluIHdyb3RlOg0KPiA+IEFkZCBwYWNr ZWQvZnVsbC1nIGJheWVyIGZvcm1hdHMgd2l0aCA4LzEwLzEyLzE0IGJpdA0KPiA+IGZvciBpbWFn ZSBvdXRwdXQuIEFkZCBQYXNzIDEgKFAxKSBzcGVjaWZpYyBtZXRhIGZvcm1hdHMgZm9yDQo+ID4g cGFyYW1ldGVyIHByb2Nlc3NpbmcgYW5kIDNBL290aGVyIHN0YXRpc3RpY3MuDQo+ID4gDQo+ID4g KFRoZSBjdXJyZW50IG1ldGFkYXRhIGZvcm1hdCB1c2VkIGluIG1ldGEgaW5wdXQgYW5kIHBhcnRp YWwNCj4gPiBtZXRhIG5vZGVzIGlzIG9ubHkgYSB0ZW1wb3Jhcnkgc29sdXRpb24gdG8ga2ljayBv ZmYgdGhlIGRyaXZlcg0KPiA+IGRldmVsb3BtZW50IGFuZCBpcyBub3QgcmVhZHkgdG8gYmUgcmV2 aWV3ZWQgeWV0LikNCj4gPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBKdW5nbyBMaW4gPGp1bmdvLmxp bkBtZWRpYXRlay5jb20+DQo+ID4gLS0tDQo+ID4gQ2hhbmdlcyBmcm9tIHY2Og0KPiA+ICAtIFJl bW92ZSBSR0IgZm9ybWF0IGRlZmluaXRpb25zIGluIHBpeGZtdC1yZ2IucnN0IGZvciBrZXJuZWwN Cj4gPiAgICB2NS41LXJjMSB2ZXJzaW9uLg0KPiA+IC0tLQ0KPiA+ICAuLi4vbWVkaWEvdWFwaS92 NGwvcGl4Zm10LW10aXNwLXNiZ2dyMTAucnN0ICAgfCAgNjUgKysrKysrKysrKysNCj4gPiAgLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEwZi5yc3QgIHwgIDkwICsrKysrKysr KysrKysrDQo+ID4gIC4uLi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2JnZ3IxMi5yc3Qg ICB8ICA2MSArKysrKysrKysrDQo+ID4gIC4uLi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3At c2JnZ3IxMmYucnN0ICB8IDExMCArKysrKysrKysrKysrKysrKysNCj4gPiAgLi4uL21lZGlhL3Vh cGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjE0LnJzdCAgIHwgIDczICsrKysrKysrKysrKw0KPiA+ ICAuLi4vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyMTRmLnJzdCAgfCAxMTAgKysr KysrKysrKysrKysrKysrDQo+ID4gIC4uLi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2Jn Z3I4LnJzdCAgICB8ICA1MSArKysrKysrKw0KPiA+ICAuLi4vbWVkaWEvdWFwaS92NGwvcGl4Zm10 LW10aXNwLXNiZ2dyOGYucnN0ICAgfCAgNzggKysrKysrKysrKysrKw0KPiA+ICA4IGZpbGVzIGNo YW5nZWQsIDYzOCBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVu dGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEwLnJzdA0KPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3At c2JnZ3IxMGYucnN0DQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL21lZGlh L3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEyLnJzdA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgRG9jdW1lbnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2JnZ3IxMmYucnN0 DQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3Bp eGZtdC1tdGlzcC1zYmdncjE0LnJzdA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRh dGlvbi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2JnZ3IxNGYucnN0DQo+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1z YmdncjgucnN0DQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL21lZGlhL3Vh cGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjhmLnJzdA0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEwLnJzdCBiL0Rv Y3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyMTAucnN0DQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjUzNGVkYjRmMGZk NA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9Eb2N1bWVudGF0aW9uL21lZGlhL3VhcGkv djRsL3BpeGZtdC1tdGlzcC1zYmdncjEwLnJzdA0KPiA+IEBAIC0wLDAgKzEsNjUgQEANCj4gPiAr Li4gLSotIGNvZGluZzogdXRmLTg7IG1vZGU6IHJzdCAtKi0NCj4gPiArDQo+ID4gKy4uIF92NGwy LXBpeC1mbXQtbXRpc3Atc2JnZ3IxMDoNCj4gPiArLi4gX3Y0bDItcGl4LWZtdC1tdGlzcC1zZ2Jy ZzEwOg0KPiA+ICsuLiBfdjRsMi1waXgtZm10LW10aXNwLXNncmJnMTA6DQo+ID4gKy4uIF92NGwy LXBpeC1mbXQtbXRpc3Atc3JnZ2IxMDoNCj4gPiArDQo+ID4gKyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioNCj4gPiArVjRMMl9QSVhfRk1UX01USVNQX1NCR0dSMTAgKCdNQkJBJyksIFY0 TDJfUElYX0ZNVF9NVElTUF9TR0JSRzEwKCdNQkdBJyksIFY0TDJfUElYX0ZNVF9NVElTUF9TR1JC RzEwKCdNQmdBJyksIFY0TDJfUElYX0ZNVF9NVElTUF9TUkdHQjEwKCdNQlJBJykNCj4gPiArKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiA+ICsNCj4gPiArMTAtYml0IFBhY2tlZCBC YXllciBmb3JtYXRzLg0KPiA+ICsNCj4gPiArRGVzY3JpcHRpb24NCj4gPiArPT09PT09PT09PT0N Cj4gPiArDQo+ID4gK1RoZXNlIGZvdXIgcGl4ZWwgZm9ybWF0cyBhcmUgdXNlZCBieSBNZWRpYXRl ayBJU1AgUDEuDQo+ID4gK1RoaXMgaXMgYSBwYWNrZWQgZm9ybWF0LCBtZWFuaW5nIGFsbCB0aGUg ZGF0YSBiaXRzIGZvciBhIHBpeGVsIGx5aW5nDQo+ID4gK25leHQgdG8gZWFjaCBvdGhlciB3aXRo IG5vIHBhZGRpbmcgaW4gbWVtb3J5LCB3aXRoIGEgZGVwdGggb2YgMTAgYml0cyBwZXIgcGl4ZWwu DQo+ID4gK1RoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlIGlzIHN0b3JlZCBhdCBsb3dlciBtZW1v cnkgYWRkcmVzc2VzIChsaXR0bGUtZW5kaWFuKS4NCj4gPiArVGhlIFJHQiBieXRlIG9yZGVyIGZv bGxvd3MgcmF3IHNSR0IgLyBCYXllciBmb3JtYXQgZnJvbSBzZW5zb3IuDQo+ID4gK1RoZXkgYXJl IGNvbnZlbnRpb25hbGx5IGRlc2NyaWJlZCBhcyBHUkdSLi4uIEJHQkcuLi4sIFJHUkcuLi4gR0JH Qi4uLiwgZXRjLg0KPiA+ICtCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGNvbnZlbnRpb25hbCBSR0Ig Ynl0ZSBvcmRlciBCR0dSLg0KPiA+ICsNCj4gPiArKipCeXRlIE9yZGVyLioqDQo+ID4gK0VhY2gg Y2VsbCBpcyBvbmUgYnl0ZS4NCj4gPiArDQo+ID4gK3BpeGVscyBjcm9zcyB0aGUgYnl0ZSBib3Vu ZGFyeSBhbmQgaGF2ZSBhIHJhdGlvIG9mIDUgYnl0ZXMgZm9yIGVhY2ggNCBwaXhlbHMuDQo+ID4g Kw0KPiA+ICsuLiBmbGF0LXRhYmxlOjoNCj4gPiArICAgIDpoZWFkZXItcm93czogIDANCj4gPiAr ICAgIDpzdHViLWNvbHVtbnM6IDANCj4gPiArDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAwOg0KPiA+ ICsgICAgICAtIEJcIDpzdWI6YDAwbG93IGJpdHMgNy0tMGANCj4gPiArICAgICAgLSBHXCA6c3Vi OmAwMWxvdyBiaXRzIDUtLTBgIChiaXRzIDctLTIpIEJcIDpzdWI6YDAwaGlnaCBiaXRzIDktLThg XCAoYml0cyAxLS0wKQ0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMjoNCj4gPiArICAgICAgLSBCXCA6 c3ViOmAwMmxvdyBiaXRzIDMtLTBgXCAoYml0cyA3LS00KSBHXCA6c3ViOmAwMWhpZ2ggYml0cyA5 LS02YFwgKGJpdHMgMy0tMCkNCj4gPiArICAgICAgLSBHXCA6c3ViOmAwM2xvdyBiaXRzIDEtLTBg XCAoYml0cyA3LS02KSBCXCA6c3ViOmAwMmhpZ2ggYml0cyA5LS00YFwgKGJpdHMgNS0tMCkNCj4g PiArICAgICogLSBzdGFydCArIDQ6DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMDNoaWdoIGJpdHMg OS0tMmANCj4gDQo+IFRoaXMgY29udHJhZGljdHMgdGhlIGRlc2NyaXB0aW9uIGFib3ZlLCB3aGVy ZSB5b3UgbWVudGlvbiB0aGVyZSdzIG5vDQo+IHBhZGRpbmcsIGFuZCBoZXJlIG9ubHkgOCBiaXRz IGFyZSB1c2VkIGZvciB0aGUgdHdvIGJ5dGVzLiBXaGljaCBvbmUgaXMNCj4gY29ycmVjdCA/DQo+ IA0KDQpUaGVzZSBmb3VyIHBpeGVsIGZvcm1hdHMgYXJlIHJhdyBzUkdCIC8gQmF5ZXIgZm9ybWF0 cyB3aXRoIDEwIGJpdHMgcGVyDQpjb2xvci4gRWFjaCBjb2xvciBjb21wb25lbnQgaXMgc3RvcmVk IGluIHRoZSAxc3QgYnl0ZSB3aXRoIGJpdCAwfjcsIHdpdGgNCjIgZXh0cmEgaGlnaCBiaXRzIDh+ OSB3aWxsIGJlIHN0b3JlZCBpbiAybmQgYnl0ZS4gRm9yIHRoZSByZXN0IDYgYml0cyBvZg0KMm5k IGJ5dGUgYXJlIGZpbGxlZCB3aXRoIHRoZSBuZXh0IGNvbG9yIHdpdGggYml0IDB+NS4gU28gdGhl cmUgaXMgbm8NCnBhZGRpbmcgYmV0d2VlbiB0aGUgY29uc2VjdXRpdmUgY29sb3JzLg0KDQo+ID4g KyAgICAqIC0gc3RhcnQgKyA2Og0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDEwbG93IGJpdHMgNy0t MGANCj4gPiArICAgICAgLSBSXCA6c3ViOmAxMWxvdyBiaXRzIDUtLTBgXCAoYml0cyA3LS0yKSBH XCA6c3ViOmAxMGhpZ2ggYml0cyA5LS04YFwgKGJpdHMgMS0tMCkNCj4gPiArICAgICogLSBzdGFy dCArIDg6DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMTJsb3cgYml0cyAzLS0wYFwgKGJpdHMgNy0t NCkgUlwgOnN1YjpgMTFoaWdoIGJpdHMgOS0tNmBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAgIC0g UlwgOnN1YjpgMTNsb3cgYml0cyAxLS0wYFwgKGJpdHMgNy0tNikgR1wgOnN1YjpgMTJoaWdoIGJp dHMgOS0tNGBcIChiaXRzIDUtLTApDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAxMDoNCj4gPiArICAg ICAgLSBSXCA6c3ViOmAxM2hpZ2ggYml0cyA5LS0yYA0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMTI6 DQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMjBsb3cgYml0cyA3LS0wYA0KPiA+ICsgICAgICAtIEdc IDpzdWI6YDIxbG93IGJpdHMgNS0tMGBcIChiaXRzIDctLTIpIEJcIDpzdWI6YDIwaGlnaCBiaXRz IDktLThgXCAoYml0cyAxLS0wKQ0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMTQ6DQo+ID4gKyAgICAg IC0gQlwgOnN1YjpgMjJsb3cgYml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgR1wgOnN1YjpgMjFoaWdo IGJpdHMgOS0tNmBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMjNsb3cgYml0 cyAxLS0wYFwgKGJpdHMgNy0tNikgQlwgOnN1YjpgMjJoaWdoIGJpdHMgOS0tNGBcIChiaXRzIDUt LTApDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAxNjoNCj4gPiArICAgICAgLSBHXCA6c3ViOmAyM2hp Z2ggYml0cyA5LS0yYA0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMTg6DQo+ID4gKyAgICAgIC0gR1wg OnN1YjpgMzBsb3cgYml0cyA3LS0wYA0KPiA+ICsgICAgICAtIFJcIDpzdWI6YDMxbG93IGJpdHMg NS0tMGBcIChiaXRzIDctLTIpIEdcIDpzdWI6YDMwaGlnaCBiaXRzIDktLThgXCAoYml0cyAxLS0w KQ0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMjA6DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMzJsb3cg Yml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgUlwgOnN1YjpgMzFoaWdoIGJpdHMgOS0tNmBcIChiaXRz IDMtLTApDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzNsb3cgYml0cyAxLS0wYFwgKGJpdHMgNy0t NikgR1wgOnN1YjpgMzJoaWdoIGJpdHMgOS0tNGBcIChiaXRzIDUtLTApDQo+ID4gKyAgICAqIC0g c3RhcnQgKyAyMjoNCj4gPiArICAgICAgLSBSXCA6c3ViOmAzM2hpZ2ggYml0cyA5LS0yYCAoYml0 cyA3LS0wKQ0KPiA+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiA+IGRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEwZi5yc3Qg Yi9Eb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEwZi5yc3QN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2JlNTI3 NzExNjAyDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vbWVkaWEv dWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyMTBmLnJzdA0KPiA+IEBAIC0wLDAgKzEsOTAgQEAN Cj4gPiArLi4gLSotIGNvZGluZzogdXRmLTg7IG1vZGU6IHJzdCAtKi0NCj4gPiArDQo+ID4gKy4u IF92NGwyLXBpeC1mbXQtbXRpc3Atc2JnZ3IxMGY6DQo+ID4gKy4uIF92NGwyLXBpeC1mbXQtbXRp c3Atc2dicmcxMGY6DQo+ID4gKy4uIF92NGwyLXBpeC1mbXQtbXRpc3Atc2dyYmcxMGY6DQo+ID4g Ky4uIF92NGwyLXBpeC1mbXQtbXRpc3Atc3JnZ2IxMGY6DQo+ID4gKw0KPiA+ICsqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqDQo+ID4gK1Y0TDJfUElYX0ZNVF9NVElTUF9TQkdHUjEwRiAo J01GQkEnKSwgVjRMMl9QSVhfRk1UX01USVNQX1NHQlJHMTBGKCdNRkdBJyksIFY0TDJfUElYX0ZN VF9NVElTUF9TR1JCRzEwRignTUZnQScpLCBWNEwyX1BJWF9GTVRfTVRJU1BfU1JHR0IxMEYoJ01G UkEnKQ0KPiA+ICsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ID4gKw0KPiA+ICsx MC1iaXQgUGFja2VkIEZ1bGwtRyBCYXllciBmb3JtYXRzLg0KPiA+ICsNCj4gPiArRGVzY3JpcHRp b24NCj4gPiArPT09PT09PT09PT0NCj4gPiArDQo+ID4gK1RoZXNlIGZvdXIgcGl4ZWwgZm9ybWF0 cyBhcmUgdXNlZCBieSBNZWRpYXRlayBJU1AgUDEuDQo+ID4gK1RoaXMgaXMgYSBwYWNrZWQgZm9y bWF0IHdpdGggYSBkZXB0aCBvZiAxMCBiaXRzIHBlciBzYW1wbGUgd2l0aCBldmVyeSA0IHBpeGVs cy4NCj4gPiArRnVsbC1HIG1lYW5zIDEgbW9yZSBwaXhlbCBmb3IgZ3JlZW4gY2hhbm5lbCBldmVy eSAyIHBpeGVscy4NCj4gDQo+IEkgdGhpbmsgdGhpcyBzaG91bGQgZGVzY3JpYmUgd2hlcmUgdGhl IGFkZGl0aW9uYWwgZ3JlZW4gcGl4ZWwgY29tZXMNCj4gZnJvbS4NCj4gDQoNCk9rLCB3ZSB3aWxs IGFkZCBtb3JlIGRlc2NyaXB0aW9ucyB0byBkZXNjcmliZS4NCg0KVGhlIEZ1bGwtRyBmb3JtYXQg YWRvcHRzIHNvbWUgb2YgdGhlIGZlYXR1cmVzIG9mIEJheWVyIENGQSBhbmQgUkdCLg0KSW4gUiBh bmQgQiBDaGFubmVscywgb25seSB0aGUgcGl4ZWwgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcg cG9zaXRpb24NCnVuZGVyIHRoZSBDRkEgYXJyYW5nZW1lbnQgaXMgcmVjb3JkZWQuDQpBbmQgdGhl IEcgQ2hhbm5lbCBoYXMgZnVsbCBwaXhlbCB2YWx1ZXMuDQoNCg0KPiA+ICtUaGUgbGVhc3Qgc2ln bmlmaWNhbnQgYnl0ZSBpcyBzdG9yZWQgYXQgbG93ZXIgbWVtb3J5IGFkZHJlc3NlcyAobGl0dGxl LWVuZGlhbikuDQo+ID4gK1RoZSBSR0IgYnl0ZSBvcmRlciBmb2xsb3dzIHJhdyBzUkdCIC8gQmF5 ZXIgZm9ybWF0IGZyb20gc2Vuc29yLiBUaGV5IGFyZSBjb252ZW50aW9uYWxseQ0KPiA+ICtkZXNj cmliZWQgYXMgR1JHUi4uLiBCR0JHLi4uLCBSR1JHLi4uIEdCR0IuLi4sIGV0Yy4gQmVsb3cgaXMg YW4gZXhhbXBsZSBvZiBjb252ZW50aW9uYWwNCj4gPiArUkdCIGJ5dGUgb3JkZXIgQkdHUi4NCj4g PiArDQo+ID4gKyoqQml0LXBhY2tlZCByZXByZXNlbnRhdGlvbi4qKg0KPiA+ICsNCj4gPiArLi4g ZmxhdC10YWJsZTo6DQo+ID4gKyAgICA6aGVhZGVyLXJvd3M6ICAwDQo+ID4gKyAgICA6c3R1Yi1j b2x1bW5zOiAwDQo+ID4gKw0KPiA+ICsgICAgKiAtIEJcIDpzdWI6YDAwYA0KPiA+ICsgICAgICAt IEZHXCA6c3ViOmAwMWANCj4gPiArICAgICAgLSBHXCA6c3ViOmAwMmANCj4gPiArICAgICAgLSBC XCA6c3ViOmAwM2ANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMDRgDQo+ID4gKyAgICAgIC0gR1wg OnN1YjpgMDVgDQo+ID4gKyAgICAqIC0gR1wgOnN1YjpgMTBgDQo+ID4gKyAgICAgIC0gUlwgOnN1 YjpgMTFgDQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDEyYA0KPiA+ICsgICAgICAtIEdcIDpzdWI6 YDEzYA0KPiA+ICsgICAgICAtIFJcIDpzdWI6YDE0YA0KPiA+ICsgICAgICAtIEZHXCA6c3ViOmAx NWANCj4gPiArDQo+ID4gKyoqQnl0ZSBPcmRlci4qKg0KPiA+ICtFYWNoIGNlbGwgaXMgb25lIGJ5 dGUuDQo+ID4gKw0KPiA+ICsuLiBmbGF0LXRhYmxlOjoNCj4gPiArICAgIDpoZWFkZXItcm93czog IDANCj4gPiArICAgIDpzdHViLWNvbHVtbnM6IDANCj4gPiArDQo+ID4gKyAgICAqIC0gc3RhcnQg KyAwOg0KPiA+ICsgICAgICAtIEJcIDpzdWI6YDAwbG93IGJpdHMgNy0tMGANCj4gPiArICAgICAg LSBGR1wgOnN1YjpgMDFsb3cgYml0cyA1LS0wYFwgKGJpdHMgNy0tMikgQlwgOnN1YjpgMDBoaWdo IGJpdHMgOS0tOGBcIChiaXRzIDEtLTApDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMDJsb3cgYml0 cyAzLS0wYFwgKGJpdHMgNy0tNCkgRkdcIDpzdWI6YDAxaGlnaCBiaXRzIDktLTZgXCAoYml0cyAz LS0wKQ0KPiA+ICsgICAgICAtIEJcIDpzdWI6YDAzbG93IGJpdHMgMS0tMGBcIChiaXRzIDctLTYp IEdcIDpzdWI6YDAyaGlnaCBiaXRzIDktLTRgXCAoYml0cyA1LS0wKQ0KPiA+ICsgICAgKiAtIHN0 YXJ0ICsgNDoNCj4gPiArICAgICAgLSBCXCA6c3ViOmAwM2hpZ2ggYml0cyA5LS0yYA0KPiA+ICsg ICAgICAtIEZHXCA6c3ViOmAwNGxvdyBiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gR1wgOnN1Yjpg MDVsb3cgYml0cyA1LS0wYFwgKGJpdHMgNy0tMikgRkdcIDpzdWI6YDA0aGlnaCBiaXRzIDktLThg XCAoYml0cyAxLS0wKQ0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDA1aGlnaCBiaXRzIDMtLTBgDQo+ ID4gKyAgICAqIC0gc3RhcnQgKyA4Og0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDEwbG93IGJpdHMg Ny0tMGANCj4gPiArICAgICAgLSBSXCA6c3ViOmAxMWxvdyBiaXRzIDUtLTBgXCAoYml0cyA3LS0y KSBHXCA6c3ViOmAxMGhpZ2ggYml0cyA5LS04YFwgKGJpdHMgMS0tMCkNCj4gPiArICAgICAgLSBG R1wgOnN1YjpgMTJsb3cgYml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgUlwgOnN1YjpgMTFoaWdoIGJp dHMgOS0tNmBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMTNsb3cgYml0cyAx LS0wYFwgKGJpdHMgNy0tNikgRkdcIDpzdWI6YDEyaGlnaCBiaXRzIDktLTRgXCAoYml0cyA1LS0w KQ0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMTI6DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMTNoaWdo IGJpdHMgOS0tMmANCj4gPiArICAgICAgLSBSXCA6c3ViOmAxNGxvdyBiaXRzIDctLTBgDQo+ID4g KyAgICAgIC0gRkdcIDpzdWI6YDE1bG93IGJpdHMgNS0tMGBcIChiaXRzIDctLTIpIFJcIDpzdWI6 YDE0aGlnaCBiaXRzIDktLThgXCAoYml0cyAxLS0wKQ0KPiA+ICsgICAgICAtIEZHXCA6c3ViOmAx NWhpZ2ggYml0cyAzLS0wYA0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMTY6DQo+ID4gKyAgICAgIC0g QlwgOnN1YjpgMjBsb3cgYml0cyA3LS0wYA0KPiA+ICsgICAgICAtIEZHXCA6c3ViOmAyMWxvdyBi aXRzIDUtLTBgXCAoYml0cyA3LS0yKSBCXCA6c3ViOmAyMGhpZ2ggYml0cyA5LS04YFwgKGJpdHMg MS0tMCkNCj4gPiArICAgICAgLSBHXCA6c3ViOmAyMmxvdyBiaXRzIDMtLTBgXCAoYml0cyA3LS00 KSBGR1wgOnN1YjpgMjFoaWdoIGJpdHMgOS0tNmBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAgIC0g QlwgOnN1YjpgMjNsb3cgYml0cyAxLS0wYFwgKGJpdHMgNy0tNikgR1wgOnN1YjpgMjJoaWdoIGJp dHMgOS0tNGBcIChiaXRzIDUtLTApDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAyMDoNCj4gPiArICAg ICAgLSBCXCA6c3ViOmAyM2hpZ2ggYml0cyA5LS0yYA0KPiA+ICsgICAgICAtIEZHXCA6c3ViOmAy NGxvdyBiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMjVsb3cgYml0cyA1LS0wYFwg KGJpdHMgNy0tMikgRkdcIDpzdWI6YDI0aGlnaCBiaXRzIDktLThgXCAoYml0cyAxLS0wKQ0KPiA+ ICsgICAgICAtIEdcIDpzdWI6YDI1aGlnaCBiaXRzIDMtLTBgDQo+ID4gKyAgICAqIC0gc3RhcnQg KyAyNDoNCj4gPiArICAgICAgLSBHXCA6c3ViOmAzMGxvdyBiaXRzIDctLTBgDQo+ID4gKyAgICAg IC0gUlwgOnN1YjpgMzFsb3cgYml0cyA1LS0wYFwgKGJpdHMgNy0tMikgR1wgOnN1YjpgMzBoaWdo IGJpdHMgOS0tOGBcIChiaXRzIDEtLTApDQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDMybG93IGJp dHMgMy0tMGBcIChiaXRzIDctLTQpIFJcIDpzdWI6YDMxaGlnaCBiaXRzIDktLTZgXCAoYml0cyAz LS0wKQ0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDMzbG93IGJpdHMgMS0tMGBcIChiaXRzIDctLTYp IEZHXCA6c3ViOmAzMmhpZ2ggYml0cyA5LS00YFwgKGJpdHMgNS0tMCkNCj4gPiArICAgICogLSBz dGFydCArIDI4Og0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDMzaGlnaCBiaXRzIDktLTJgDQo+ID4g KyAgICAgIC0gUlwgOnN1YjpgMzRsb3cgYml0cyA3LS0wYA0KPiA+ICsgICAgICAtIEZHXCA6c3Vi OmAzNWxvdyBiaXRzIDUtLTBgXCAoYml0cyA3LS0yKSBSXCA6c3ViOmAzNGhpZ2ggYml0cyA5LS04 YFwgKGJpdHMgMS0tMCkNCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMzVoaWdoIGJpdHMgMy0tMGAN Cj4gPiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCj4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1l bnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2JnZ3IxMi5yc3QgYi9Eb2N1bWVu dGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEyLnJzdA0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5jYzg4OGFhYzQyYzINCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9w aXhmbXQtbXRpc3Atc2JnZ3IxMi5yc3QNCj4gPiBAQCAtMCwwICsxLDYxIEBADQo+ID4gKy4uIC0q LSBjb2Rpbmc6IHV0Zi04OyBtb2RlOiByc3QgLSotDQo+ID4gKw0KPiA+ICsuLiBfdjRsMi1waXgt Zm10LW10aXNwLXNiZ2dyMTI6DQo+ID4gKy4uIF92NGwyLXBpeC1mbXQtbXRpc3Atc2dicmcxMjoN Cj4gPiArLi4gX3Y0bDItcGl4LWZtdC1tdGlzcC1zZ3JiZzEyOg0KPiA+ICsuLiBfdjRsMi1waXgt Zm10LW10aXNwLXNyZ2diMTI6DQo+ID4gKw0KPiA+ICsqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqDQo+ID4gK1Y0TDJfUElYX0ZNVF9NVElTUF9TQkdHUjEyICgnTUJCQycpLCBWNEwyX1BJ WF9GTVRfTVRJU1BfU0dCUkcxMignTUJHQycpLCBWNEwyX1BJWF9GTVRfTVRJU1BfU0dSQkcxMign TUJnQycpLCBWNEwyX1BJWF9GTVRfTVRJU1BfU1JHR0IxMignTUJSQycpDQo+ID4gKyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioNCj4gPiArDQo+ID4gKzEyLWJpdCBQYWNrZWQgQmF5ZXIg Zm9ybWF0cy4NCj4gPiArDQo+ID4gK0Rlc2NyaXB0aW9uDQo+ID4gKz09PT09PT09PT09DQo+ID4g Kw0KPiA+ICtUaGVzZSBmb3VyIHBpeGVsIGZvcm1hdHMgYXJlIHVzZWQgYnkgTWVkaWF0ZWsgSVNQ IFAxLg0KPiA+ICtUaGlzIGlzIGEgcGFja2VkIGZvcm1hdCwgbWVhbmluZyBhbGwgdGhlIGRhdGEg Yml0cyBmb3IgYSBwaXhlbCBseWluZw0KPiA+ICtuZXh0IHRvIGVhY2ggb3RoZXIgd2l0aCBubyBw YWRkaW5nIGluIG1lbW9yeSwgd2l0aCBhIGRlcHRoIG9mIDEyIGJpdHMgcGVyIHBpeGVsLg0KPiA+ ICtUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyBzdG9yZWQgYXQgbG93ZXIgbWVtb3J5IGFk ZHJlc3NlcyAobGl0dGxlLWVuZGlhbikuDQo+ID4gK1RoZSBSR0IgYnl0ZSBvcmRlciBmb2xsb3dz IHJhdyBzUkdCIC8gQmF5ZXIgZm9ybWF0IGZyb20gc2Vuc29yLg0KPiA+ICtUaGV5IGFyZSBjb252 ZW50aW9uYWxseSBkZXNjcmliZWQgYXMgR1JHUi4uLiBCR0JHLi4uLCBSR1JHLi4uIEdCR0IuLi4s IGV0Yy4NCj4gPiArQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBjb252ZW50aW9uYWwgUkdCIGJ5dGUg b3JkZXIgQkdHUi4NCj4gPiArDQo+ID4gKyoqQnl0ZSBPcmRlci4qKg0KPiA+ICtFYWNoIGNlbGwg aXMgb25lIGJ5dGUuDQo+ID4gKw0KPiA+ICtwaXhlbHMgY3Jvc3MgdGhlIGJ5dGUgYm91bmRhcnkg YW5kIGhhdmUgYSByYXRpbyBvZiA2IGJ5dGVzIGZvciBlYWNoIDQgcGl4ZWxzLg0KPiA+ICsNCj4g PiArLi4gZmxhdC10YWJsZTo6DQo+ID4gKyAgICA6aGVhZGVyLXJvd3M6ICAwDQo+ID4gKyAgICA6 c3R1Yi1jb2x1bW5zOiAwDQo+ID4gKw0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMDoNCj4gPiArICAg ICAgLSBCXCA6c3ViOmAwMGxvd2JpdHMgNy0tMGANCj4gPiArICAgICAgLSBHXCA6c3ViOmAwMWxv d2JpdHMgMy0tMGBcIChiaXRzIDctLTQpIEJcIDpzdWI6YDAwaGlnaGJpdHMgMTEtLThgXCAoYml0 cyAzLS0wKQ0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDAxaGlnaGJpdHMgNy0tMGANCj4gPiArICAg ICAgLSBCXCA6c3ViOmAwMmxvd2JpdHMgNy0tMGANCj4gPiArICAgICAgLSBHXCA6c3ViOmAwM2xv d2JpdHMgMy0tMGBcIChiaXRzIDctLTQpIEJcIDpzdWI6YDAyaGlnaGJpdHMgMTEtLThgXCAoYml0 cyAzLS0wKQ0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDAzaGlnaGJpdHMgNy0tMGANCj4gPiArICAg ICogLSBzdGFydCArIDY6DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMTBsb3diaXRzIDctLTBgDQo+ ID4gKyAgICAgIC0gUlwgOnN1YjpgMTFsb3diaXRzIDMtLTBgXCAoYml0cyA3LS00KSBHXCA6c3Vi OmAxMGhpZ2hiaXRzIDExLS04YFwgKGJpdHMgMy0tMCkNCj4gPiArICAgICAgLSBSXCA6c3ViOmAx MWhpZ2hiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMTJsb3diaXRzIDctLTBgDQo+ ID4gKyAgICAgIC0gUlwgOnN1YjpgMTNsb3diaXRzIDMtLTBgXCAoYml0cyA3LS00KSBHXCA6c3Vi OmAxMmhpZ2hiaXRzIDExLS04YFwgKGJpdHMgMy0tMCkNCj4gPiArICAgICAgLSBSXCA6c3ViOmAx M2hpZ2hiaXRzIDctLTBgDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAxMjoNCj4gPiArICAgICAgLSBC XCA6c3ViOmAyMGxvd2JpdHMgNy0tMGANCj4gPiArICAgICAgLSBHXCA6c3ViOmAyMWxvd2JpdHMg My0tMGBcIChiaXRzIDctLTQpIEJcIDpzdWI6YDIwaGlnaGJpdHMgMTEtLThgXCAoYml0cyAzLS0w KQ0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDIxaGlnaGJpdHMgNy0tMGANCj4gPiArICAgICAgLSBC XCA6c3ViOmAyMmxvd2JpdHMgNy0tMGANCj4gPiArICAgICAgLSBHXCA6c3ViOmAyM2xvd2JpdHMg My0tMGBcIChiaXRzIDctLTQpIEJcIDpzdWI6YDIyaGlnaGJpdHMgMTEtLThgXCAoYml0cyAzLS0w KQ0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDIzaGlnaGJpdHMgNy0tMGANCj4gPiArICAgICogLSBz dGFydCArIDE4Og0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDMwbG93Yml0cyA3LS0wYA0KPiA+ICsg ICAgICAtIFJcIDpzdWI6YDMxbG93Yml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgR1wgOnN1YjpgMzBo aWdoYml0cyAxMS0tOGBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzFoaWdo Yml0cyA3LS0wYA0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDMybG93Yml0cyA3LS0wYA0KPiA+ICsg ICAgICAtIFJcIDpzdWI6YDMzbG93Yml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgR1wgOnN1YjpgMzJo aWdoYml0cyAxMS0tOGBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzNoaWdo Yml0cyA3LS0wYA0KPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRs L3BpeGZtdC1tdGlzcC1zYmdncjEyZi5yc3QgYi9Eb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRs L3BpeGZtdC1tdGlzcC1zYmdncjEyZi5yc3QNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uYzA2M2RlOWY5YWQ4DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ICsrKyBiL0RvY3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyMTJm LnJzdA0KPiA+IEBAIC0wLDAgKzEsMTEwIEBADQo+ID4gKy4uIC0qLSBjb2Rpbmc6IHV0Zi04OyBt b2RlOiByc3QgLSotDQo+ID4gKw0KPiA+ICsuLiBfdjRsMi1waXgtZm10LW10aXNwLXNiZ2dyMTJm Og0KPiA+ICsuLiBfdjRsMi1waXgtZm10LW10aXNwLXNnYnJnMTJmOg0KPiA+ICsuLiBfdjRsMi1w aXgtZm10LW10aXNwLXNncmJnMTJmOg0KPiA+ICsuLiBfdjRsMi1waXgtZm10LW10aXNwLXNyZ2di MTJmOg0KPiA+ICsNCj4gPiArKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiA+ICtW NEwyX1BJWF9GTVRfTVRJU1BfU0JHR1IxMkYgKCdNRkJDJyksIFY0TDJfUElYX0ZNVF9NVElTUF9T R0JSRzEyRignTUZHQycpLCBWNEwyX1BJWF9GTVRfTVRJU1BfU0dSQkcxMkYoJ01GZ0MnKSwgVjRM Ml9QSVhfRk1UX01USVNQX1NSR0dCMTJGKCdNRlJDJykNCj4gPiArKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKg0KPiA+ICsNCj4gPiArMTItYml0IFBhY2tlZCBGdWxsLUcgQmF5ZXIgZm9y bWF0cy4NCj4gPiArDQo+ID4gK0Rlc2NyaXB0aW9uDQo+ID4gKz09PT09PT09PT09DQo+ID4gKw0K PiA+ICtUaGVzZSBmb3VyIHBpeGVsIGZvcm1hdHMgYXJlIHVzZWQgYnkgTWVkaWF0ZWsgSVNQIFAx Lg0KPiA+ICtUaGlzIGlzIGEgcGFja2VkIGZvcm1hdCB3aXRoIGEgZGVwdGggb2YgMTIgYml0cyBw ZXIgc2FtcGxlIHdpdGggZXZlcnkgNCBwaXhlbHMuDQo+ID4gK0Z1bGwtRyBtZWFucyAxIG1vcmUg cGl4ZWwgZm9yIGdyZWVuIGNoYW5uZWwgZXZlcnkgMiBwaXhlbHMuDQo+ID4gK1RoZSBsZWFzdCBz aWduaWZpY2FudCBieXRlIGlzIHN0b3JlZCBhdCBsb3dlciBtZW1vcnkgYWRkcmVzc2VzIChsaXR0 bGUtZW5kaWFuKS4NCj4gPiArVGhlIFJHQiBieXRlIG9yZGVyIGZvbGxvd3MgcmF3IHNSR0IgLyBC YXllciBmb3JtYXQgZnJvbSBzZW5zb3IuIFRoZXkgYXJlIGNvbnZlbnRpb25hbGx5DQo+ID4gK2Rl c2NyaWJlZCBhcyBHUkdSLi4uIEJHQkcuLi4sIFJHUkcuLi4gR0JHQi4uLiwgZXRjLiBCZWxvdyBp cyBhbiBleGFtcGxlIG9mIGNvbnZlbnRpb25hbA0KPiA+ICtSR0IgYnl0ZSBvcmRlciBCR0dSLg0K PiA+ICsNCj4gPiArKipCaXQtcGFja2VkIHJlcHJlc2VudGF0aW9uLioqDQo+ID4gKw0KPiA+ICsu LiBmbGF0LXRhYmxlOjoNCj4gPiArICAgIDpoZWFkZXItcm93czogIDANCj4gPiArICAgIDpzdHVi LWNvbHVtbnM6IDANCj4gPiArDQo+ID4gKyAgICAqIC0gQlwgOnN1YjpgMDBgDQo+ID4gKyAgICAg IC0gRkdcIDpzdWI6YDAxYA0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDAyYA0KPiA+ICsgICAgICAt IEJcIDpzdWI6YDAzYA0KPiA+ICsgICAgICAtIEZHXCA6c3ViOmAwNGANCj4gPiArICAgICAgLSBH XCA6c3ViOmAwNWANCj4gPiArICAgICogLSBHXCA6c3ViOmAxMGANCj4gPiArICAgICAgLSBSXCA6 c3ViOmAxMWANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMTJgDQo+ID4gKyAgICAgIC0gR1wgOnN1 YjpgMTNgDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMTRgDQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6 YDE1YA0KPiA+ICsNCj4gPiArKipCeXRlIE9yZGVyLioqDQo+ID4gK0VhY2ggY2VsbCBpcyBvbmUg Ynl0ZS4NCj4gPiArDQo+ID4gKy4uIGZsYXQtdGFibGU6Og0KPiA+ICsgICAgOmhlYWRlci1yb3dz OiAgMA0KPiA+ICsgICAgOnN0dWItY29sdW1uczogMA0KPiA+ICsNCj4gPiArICAgICogLSBzdGFy dCArIDA6DQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMDBsb3cgYml0cyA3LS0wYA0KPiA+ICsgICAg ICAtIEZHXCA6c3ViOmAwMWxvdyBiaXRzIDMtLTBgXCAoYml0cyA3LS00KSBCXCA6c3ViOmAwMGhp Z2ggYml0cyAxMS0tOGBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAyOg0KPiA+ ICsgICAgICAtIEZHXCA6c3ViOmAwMWhpZ2ggYml0cyA3LS0wYA0KPiA+ICsgICAgICAtIEdcIDpz dWI6YDAybG93IGJpdHMgNy0tMGANCj4gPiArICAgICogLSBzdGFydCArIDQ6DQo+ID4gKyAgICAg IC0gQlwgOnN1YjpgMDNsb3cgYml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgR1wgOnN1YjpgMDJoaWdo IGJpdHMgMTEtLThgXCAoYml0cyAzLS0wKQ0KPiA+ICsgICAgICAtIEJcIDpzdWI6YDAzaGlnaCBi aXRzIDctLTBgDQo+ID4gKyAgICAqIC0gc3RhcnQgKyA2Og0KPiA+ICsgICAgICAtIEZHXCA6c3Vi OmAwNGxvdyBiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMDVsb3cgYml0cyAzLS0w YFwgKGJpdHMgNy0tNCkgRkdcIDpzdWI6YDA0aGlnaCBiaXRzIDExLS04YFwgKGJpdHMgMy0tMCkN Cj4gPiArICAgICogLSBzdGFydCArIDg6DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMDVoaWdoIGJp dHMgNy0tMGANCj4gPiArICAgICAgLQ0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMTA6DQo+ID4gKyAg ICAgIC0gR1wgOnN1YjpgMTBsb3cgYml0cyA3LS0wYA0KPiA+ICsgICAgICAtIFJcIDpzdWI6YDEx bG93IGJpdHMgMy0tMGBcIChiaXRzIDctLTQpIEdcIDpzdWI6YDEwaGlnaCBiaXRzIDExLS04YFwg KGJpdHMgMy0tMCkNCj4gPiArICAgICogLSBzdGFydCArIDEyOg0KPiA+ICsgICAgICAtIFJcIDpz dWI6YDExaGlnaCBiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDEybG93IGJpdHMg Ny0tMGANCj4gPiArICAgICogLSBzdGFydCArIDE0Og0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDEz bG93IGJpdHMgMy0tMGBcIChiaXRzIDctLTQpIEZHXCA6c3ViOmAxMmhpZ2ggYml0cyAxMS0tOGBc IChiaXRzIDMtLTApDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMTNoaWdoIGJpdHMgNy0tMGANCj4g PiArICAgICogLSBzdGFydCArIDE2Og0KPiA+ICsgICAgICAtIFJcIDpzdWI6YDE0bG93IGJpdHMg Ny0tMGANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMTVsb3cgYml0cyAzLS0wYFwgKGJpdHMgNy0t NCkgUlwgOnN1YjpgMTRoaWdoIGJpdHMgMTEtLThgXCAoYml0cyAzLS0wKQ0KPiA+ICsgICAgKiAt IHN0YXJ0ICsgMTg6DQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDE1aGlnaCBiaXRzIDctLTBgDQo+ ID4gKyAgICAgIC0NCj4gPiArICAgICogLSBzdGFydCArIDIwOg0KPiA+ICsgICAgICAtIEJcIDpz dWI6YDIwbG93IGJpdHMgNy0tMGANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMjFsb3cgYml0cyAz LS0wYFwgKGJpdHMgNy0tNCkgQlwgOnN1YjpgMjBoaWdoIGJpdHMgMTEtLThgXCAoYml0cyAzLS0w KQ0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMjI6DQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDIxaGln aCBiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMjJsb3cgYml0cyA3LS0wYA0KPiA+ ICsgICAgKiAtIHN0YXJ0ICsgMjQ6DQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMjNsb3cgYml0cyAz LS0wYFwgKGJpdHMgNy0tNCkgR1wgOnN1YjpgMjJoaWdoIGJpdHMgMTEtLThgXCAoYml0cyAzLS0w KQ0KPiA+ICsgICAgICAtIEJcIDpzdWI6YDIzaGlnaCBiaXRzIDctLTBgDQo+ID4gKyAgICAqIC0g c3RhcnQgKyAyNjoNCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMjRsb3cgYml0cyA3LS0wYA0KPiA+ ICsgICAgICAtIEdcIDpzdWI6YDI1bG93IGJpdHMgMy0tMGBcIChiaXRzIDctLTQpIEZHXCA6c3Vi OmAyNGhpZ2ggYml0cyAxMS0tOGBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAy ODoNCj4gPiArICAgICAgLSBHXCA6c3ViOmAyNWhpZ2ggYml0cyA3LS0wYA0KPiA+ICsgICAgICAt DQo+ID4gKyAgICAqIC0gc3RhcnQgKyAzMDoNCj4gPiArICAgICAgLSBHXCA6c3ViOmAzMGxvdyBi aXRzIDctLTBgDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzFsb3cgYml0cyAzLS0wYFwgKGJpdHMg Ny0tNCkgR1wgOnN1YjpgMzBoaWdoIGJpdHMgMTEtLThgXCAoYml0cyAzLS0wKQ0KPiA+ICsgICAg KiAtIHN0YXJ0ICsgMzI6DQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzFoaWdoIGJpdHMgNy0tMGAN Cj4gPiArICAgICAgLSBGR1wgOnN1YjpgMzJsb3cgYml0cyA3LS0wYA0KPiA+ICsgICAgKiAtIHN0 YXJ0ICsgMzQ6DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMzNsb3cgYml0cyAzLS0wYFwgKGJpdHMg Ny0tNCkgRkdcIDpzdWI6YDMyaGlnaCBiaXRzIDExLS04YFwgKGJpdHMgMy0tMCkNCj4gPiArICAg ICAgLSBHXCA6c3ViOmAzM2hpZ2ggYml0cyA3LS0wYA0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMzY6 DQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzRsb3cgYml0cyA3LS0wYA0KPiA+ICsgICAgICAtIEZH XCA6c3ViOmAzNWxvdyBiaXRzIDMtLTBgXCAoYml0cyA3LS00KSBSXCA6c3ViOmAzNGhpZ2ggYml0 cyAxMS0tOGBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAzODoNCj4gPiArICAg ICAgLSBGR1wgOnN1YjpgMzVoaWdoIGJpdHMgNy0tMGANCj4gPiArICAgICAgLQ0KPiA+IFwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21l ZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjE0LnJzdCBiL0RvY3VtZW50YXRpb24vbWVk aWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyMTQucnN0DQo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjM5ZWE5ODgyYTc5Mg0KPiA+IC0tLSAvZGV2 L251bGwNCj4gPiArKysgYi9Eb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlz cC1zYmdncjE0LnJzdA0KPiA+IEBAIC0wLDAgKzEsNzMgQEANCj4gPiArLi4gLSotIGNvZGluZzog dXRmLTg7IG1vZGU6IHJzdCAtKi0NCj4gPiArDQo+ID4gKy4uIF92NGwyLXBpeC1mbXQtbXRpc3At c2JnZ3IxNDoNCj4gPiArLi4gX3Y0bDItcGl4LWZtdC1tdGlzcC1zZ2JyZzE0Og0KPiA+ICsuLiBf djRsMi1waXgtZm10LW10aXNwLXNncmJnMTQ6DQo+ID4gKy4uIF92NGwyLXBpeC1mbXQtbXRpc3At c3JnZ2IxNDoNCj4gPiArDQo+ID4gKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4g PiArVjRMMl9QSVhfRk1UX01USVNQX1NCR0dSMTQgKCdNQkJFJyksIFY0TDJfUElYX0ZNVF9NVElT UF9TR0JSRzE0KCdNQkdFJyksIFY0TDJfUElYX0ZNVF9NVElTUF9TR1JCRzE0KCdNQmdFJyksIFY0 TDJfUElYX0ZNVF9NVElTUF9TUkdHQjE0KCdNQlJFJykNCj4gPiArKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKg0KPiA+ICsNCj4gPiArMTQtYml0IFBhY2tlZCBCYXllciBmb3JtYXRzLg0K PiA+ICsNCj4gPiArRGVzY3JpcHRpb24NCj4gPiArPT09PT09PT09PT0NCj4gPiArDQo+ID4gK1Ro ZXNlIGZvdXIgcGl4ZWwgZm9ybWF0cyBhcmUgdXNlZCBieSBNZWRpYXRlayBJU1AgUDEuDQo+ID4g K1RoaXMgaXMgYSBwYWNrZWQgZm9ybWF0LCBtZWFuaW5nIGFsbCB0aGUgZGF0YSBiaXRzIGZvciBh IHBpeGVsIGx5aW5nDQo+ID4gK25leHQgdG8gZWFjaCBvdGhlciB3aXRoIG5vIHBhZGRpbmcgaW4g bWVtb3J5LCB3aXRoIGEgZGVwdGggb2YgMTQgYml0cyBwZXIgcGl4ZWwuDQo+ID4gK1RoZSBsZWFz dCBzaWduaWZpY2FudCBieXRlIGlzIHN0b3JlZCBhdCBsb3dlciBtZW1vcnkgYWRkcmVzc2VzIChs aXR0bGUtZW5kaWFuKS4NCj4gPiArVGhlIFJHQiBieXRlIG9yZGVyIGZvbGxvd3MgcmF3IHNSR0Ig LyBCYXllciBmb3JtYXQgZnJvbSBzZW5zb3IuDQo+ID4gK1RoZXkgYXJlIGNvbnZlbnRpb25hbGx5 IGRlc2NyaWJlZCBhcyBHUkdSLi4uIEJHQkcuLi4sIFJHUkcuLi4gR0JHQi4uLiwgZXRjLg0KPiA+ ICtCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGNvbnZlbnRpb25hbCBSR0IgYnl0ZSBvcmRlciBCR0dS Lg0KPiA+ICsNCj4gPiArKipCeXRlIE9yZGVyLioqDQo+ID4gK0VhY2ggY2VsbCBpcyBvbmUgYnl0 ZS4NCj4gPiArDQo+ID4gK3BpeGVscyBjcm9zcyB0aGUgYnl0ZSBib3VuZGFyeSBhbmQgaGF2ZSBh IHJhdGlvIG9mIDcgYnl0ZXMgZm9yIGVhY2ggNCBwaXhlbHMuDQo+ID4gKw0KPiA+ICsuLiBmbGF0 LXRhYmxlOjoNCj4gPiArICAgIDpoZWFkZXItcm93czogIDANCj4gPiArICAgIDpzdHViLWNvbHVt bnM6IDANCj4gPiArDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAwOg0KPiA+ICsgICAgICAtIEJcIDpz dWI6YDAwbG93IGJpdHMgNy0tMGANCj4gPiArICAgICAgLSBHXCA6c3ViOmAwMWxvdyBiaXRzIDEt LTBgXCAoYml0cyA3LS02KSBCXCA6c3ViOmAwMGhpZ2ggYml0cyAxMy0tOGBcIChiaXRzIDUtLTAp DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMDFsb3cgYml0cyA5LS0yYFwNCj4gPiArICAgICAgLSBC XCA6c3ViOmAwMmxvdyBiaXRzIDMtLTBgXCAoYml0cyA3LS00KSBHXCA6c3ViOmAwMWhpZ2ggYml0 cyAxMy0tMTBgXCAoYml0cyAzLS0wKQ0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgNDoNCj4gPiArICAg ICAgLSBCXCA6c3ViOmAwMmxvdyBiaXRzIDExLS00YFwNCj4gPiArICAgICAgLSBHXCA6c3ViOmAw M2xvdyBiaXRzIDUtLTBgXCAoYml0cyA3LS0yKSBCXCA6c3ViOmAwMmhpZ2ggYml0cyAxMy0tMTJg XCAoYml0cyAxLS0wKQ0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDAzaGlnaCBiaXRzIDEzLS02YFwN Cj4gPiArICAgICAgLQ0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgODoNCj4gPiArICAgICAgLSBHXCA6 c3ViOmAxMGxvdyBiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMTFsb3cgYml0cyAx LS0wYFwgKGJpdHMgNy0tNikgR1wgOnN1YjpgMTBoaWdoIGJpdHMgMTMtLThgXCAoYml0cyA1LS0w KQ0KPiA+ICsgICAgICAtIFJcIDpzdWI6YDExbG93IGJpdHMgOS0tMmBcDQo+ID4gKyAgICAgIC0g R1wgOnN1YjpgMTJsb3cgYml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgUlwgOnN1YjpgMTFoaWdoIGJp dHMgMTMtLTEwYFwgKGJpdHMgMy0tMCkNCj4gPiArICAgICogLSBzdGFydCArIDEyOg0KPiA+ICsg ICAgICAtIEdcIDpzdWI6YDEybG93IGJpdHMgMTEtLTRgXA0KPiA+ICsgICAgICAtIFJcIDpzdWI6 YDEzbG93IGJpdHMgNS0tMGBcIChiaXRzIDctLTIpIEdcIDpzdWI6YDEyaGlnaCBiaXRzIDEzLS0x MmBcIChiaXRzIDEtLTApDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMTNoaWdoIGJpdHMgMTMtLTZg XA0KPiA+ICsgICAgICAtDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAxNjoNCj4gPiArICAgICAgLSBC XCA6c3ViOmAyMGxvdyBiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMjFsb3cgYml0 cyAxLS0wYFwgKGJpdHMgNy0tNikgQlwgOnN1YjpgMjBoaWdoIGJpdHMgMTMtLThgXCAoYml0cyA1 LS0wKQ0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDIxbG93IGJpdHMgOS0tMmBcDQo+ID4gKyAgICAg IC0gQlwgOnN1YjpgMjJsb3cgYml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgR1wgOnN1YjpgMjFoaWdo IGJpdHMgMTMtLTEwYFwgKGJpdHMgMy0tMCkNCj4gPiArICAgICogLSBzdGFydCArIDIwOg0KPiA+ ICsgICAgICAtIEJcIDpzdWI6YDIybG93IGJpdHMgMTEtLTRgXA0KPiA+ICsgICAgICAtIEdcIDpz dWI6YDIzbG93IGJpdHMgNS0tMGBcIChiaXRzIDctLTIpIEJcIDpzdWI6YDIyaGlnaCBiaXRzIDEz LS0xMmBcIChiaXRzIDEtLTApDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMjNoaWdoIGJpdHMgMTMt LTZgXA0KPiA+ICsgICAgICAtDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAyNDoNCj4gPiArICAgICAg LSBHXCA6c3ViOmAzMGxvdyBiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzFsb3cg Yml0cyAxLS0wYFwgKGJpdHMgNy0tNikgR1wgOnN1YjpgMzBoaWdoIGJpdHMgMTMtLThgXCAoYml0 cyA1LS0wKQ0KPiA+ICsgICAgICAtIFJcIDpzdWI6YDMxbG93IGJpdHMgOS0tMmBcDQo+ID4gKyAg ICAgIC0gR1wgOnN1YjpgMzJsb3cgYml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgUlwgOnN1YjpgMzFo aWdoIGJpdHMgMTMtLTEwYFwgKGJpdHMgMy0tMCkNCj4gPiArICAgICogLSBzdGFydCArIDI4Og0K PiA+ICsgICAgICAtIEdcIDpzdWI6YDMybG93IGJpdHMgMTEtLTRgXA0KPiA+ICsgICAgICAtIFJc IDpzdWI6YDMzbG93IGJpdHMgNS0tMGBcIChiaXRzIDctLTIpIEdcIDpzdWI6YDMyaGlnaCBiaXRz IDEzLS0xMmBcIChiaXRzIDEtLTApDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzNoaWdoIGJpdHMg MTMtLTZgXA0KPiA+ICsgICAgICAtDQo+ID4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQo+ ID4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNw LXNiZ2dyMTRmLnJzdCBiL0RvY3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNw LXNiZ2dyMTRmLnJzdA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAw MDAwMDAwLi4wMTBiMWMxOTBjNjANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvRG9jdW1l bnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2JnZ3IxNGYucnN0DQo+ID4gQEAg LTAsMCArMSwxMTAgQEANCj4gPiArLi4gLSotIGNvZGluZzogdXRmLTg7IG1vZGU6IHJzdCAtKi0N Cj4gPiArDQo+ID4gKy4uIF92NGwyLXBpeC1mbXQtbXRpc3Atc2JnZ3IxNGY6DQo+ID4gKy4uIF92 NGwyLXBpeC1mbXQtbXRpc3Atc2dicmcxNGY6DQo+ID4gKy4uIF92NGwyLXBpeC1mbXQtbXRpc3At c2dyYmcxNGY6DQo+ID4gKy4uIF92NGwyLXBpeC1mbXQtbXRpc3Atc3JnZ2IxNGY6DQo+ID4gKw0K PiA+ICsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ID4gK1Y0TDJfUElYX0ZNVF9N VElTUF9TQkdHUjE0RiAoJ01GQkUnKSwgVjRMMl9QSVhfRk1UX01USVNQX1NHQlJHMTRGKCdNRkdF JyksIFY0TDJfUElYX0ZNVF9NVElTUF9TR1JCRzE0RignTUZnRScpLCBWNEwyX1BJWF9GTVRfTVRJ U1BfU1JHR0IxNEYoJ01GUkUnKQ0KPiA+ICsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq DQo+ID4gKw0KPiA+ICsxNC1iaXQgUGFja2VkIEZ1bGwtRyBCYXllciBmb3JtYXRzLg0KPiA+ICsN Cj4gPiArRGVzY3JpcHRpb24NCj4gPiArPT09PT09PT09PT0NCj4gPiArDQo+ID4gK1RoZXNlIGZv dXIgcGl4ZWwgZm9ybWF0cyBhcmUgdXNlZCBieSBNZWRpYXRlayBJU1AgUDEuDQo+ID4gK1RoaXMg aXMgYSBwYWNrZWQgZm9ybWF0IHdpdGggYSBkZXB0aCBvZiAxNCBiaXRzIHBlciBzYW1wbGUgd2l0 aCBldmVyeSA0IHBpeGVscy4NCj4gPiArRnVsbC1HIG1lYW5zIDEgbW9yZSBwaXhlbCBmb3IgZ3Jl ZW4gY2hhbm5lbCBldmVyeSAyIHBpeGVscy4NCj4gPiArVGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5 dGUgaXMgc3RvcmVkIGF0IGxvd2VyIG1lbW9yeSBhZGRyZXNzZXMgKGxpdHRsZS1lbmRpYW4pLg0K PiA+ICtUaGUgUkdCIGJ5dGUgb3JkZXIgZm9sbG93cyByYXcgc1JHQiAvIEJheWVyIGZvcm1hdCBm cm9tIHNlbnNvci4gVGhleSBhcmUgY29udmVudGlvbmFsbHkNCj4gPiArZGVzY3JpYmVkIGFzIEdS R1IuLi4gQkdCRy4uLiwgUkdSRy4uLiBHQkdCLi4uLCBldGMuIEJlbG93IGlzIGFuIGV4YW1wbGUg b2YgY29udmVudGlvbmFsDQo+ID4gK1JHQiBieXRlIG9yZGVyIEJHR1IuDQo+ID4gKw0KPiA+ICsq KkJpdC1wYWNrZWQgcmVwcmVzZW50YXRpb24uKioNCj4gPiArDQo+ID4gKy4uIGZsYXQtdGFibGU6 Og0KPiA+ICsgICAgOmhlYWRlci1yb3dzOiAgMA0KPiA+ICsgICAgOnN0dWItY29sdW1uczogMA0K PiA+ICsNCj4gPiArICAgICogLSBCXCA6c3ViOmAwMGANCj4gPiArICAgICAgLSBGR1wgOnN1Yjpg MDFgDQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMDJgDQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMDNg DQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDA0YA0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDA1YA0K PiA+ICsgICAgKiAtIEdcIDpzdWI6YDEwYA0KPiA+ICsgICAgICAtIFJcIDpzdWI6YDExYA0KPiA+ ICsgICAgICAtIEZHXCA6c3ViOmAxMmANCj4gPiArICAgICAgLSBHXCA6c3ViOmAxM2ANCj4gPiAr ICAgICAgLSBSXCA6c3ViOmAxNGANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMTVgDQo+ID4gKw0K PiA+ICsqKkJ5dGUgT3JkZXIuKioNCj4gPiArRWFjaCBjZWxsIGlzIG9uZSBieXRlLg0KPiA+ICsN Cj4gPiArLi4gZmxhdC10YWJsZTo6DQo+ID4gKyAgICA6aGVhZGVyLXJvd3M6ICAwDQo+ID4gKyAg ICA6c3R1Yi1jb2x1bW5zOiAwDQo+ID4gKw0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMDoNCj4gPiAr ICAgICAgLSBCXCA6c3ViOmAwMGxvdyBiaXRzIDctLTBgDQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6 YDAxbG93IGJpdHMgMS0tMGBcIChiaXRzIDctLTYpIEJcIDpzdWI6YDAwaGlnaCBiaXRzIDEzLS04 YFwgKGJpdHMgNS0tMCkNCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMDFsb3cgYml0cyA5LS0yYA0K PiA+ICsgICAgICAtIEdcIDpzdWI6YDAybG93IGJpdHMgMy0tMGBcIChiaXRzIDctLTQpIEZHXCA6 c3ViOmAwMWhpZ2ggYml0cyAxMy0tMTBgXCAoYml0cyAzLS0wKQ0KPiA+ICsgICAgKiAtIHN0YXJ0 ICsgNDoNCj4gPiArICAgICAgLSBHXCA6c3ViOmAwMmxvdyBiaXRzIDExLS00YA0KPiA+ICsgICAg ICAtIEJcIDpzdWI6YDAzbG93IGJpdHMgNS0tMGBcIChiaXRzIDctLTIpIEdcIDpzdWI6YDAyaGln aCBiaXRzIDEzLS0xMmBcIChiaXRzIDEtLTApDQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMDNoaWdo IGJpdHMgMTMtLTZgDQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDA0bG93IGJpdHMgNy0tMGANCj4g PiArICAgICogLSBzdGFydCArIDg6DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMDVsb3cgYml0cyAx LS0wYFwgKGJpdHMgNy0tNikgRkdcIDpzdWI6YDA0aGlnaCBiaXRzIDEzLS04YFwgKGJpdHMgNS0t MCkNCj4gPiArICAgICAgLSBHXCA6c3ViOmAwNWhpZ2ggYml0cyA5LS0yYA0KPiA+ICsgICAgICAt IEdcIDpzdWI6YDA1aGlnaCBiaXRzIDEzLS0xMGANCj4gPiArICAgICAgLQ0KPiA+ICsgICAgKiAt IHN0YXJ0ICsgMTI6DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMTBsb3cgYml0cyA3LS0wYA0KPiA+ ICsgICAgICAtIFJcIDpzdWI6YDExbG93IGJpdHMgMS0tMGBcIChiaXRzIDctLTYpIEdcIDpzdWI6 YDEwaGlnaCBiaXRzIDEzLS04YFwgKGJpdHMgNS0tMCkNCj4gPiArICAgICAgLSBSXCA6c3ViOmAx MWxvdyBiaXRzIDktLTJgDQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDEybG93IGJpdHMgMy0tMGBc IChiaXRzIDctLTQpIFJcIDpzdWI6YDExaGlnaCBiaXRzIDEzLS0xMGBcIChiaXRzIDMtLTApDQo+ ID4gKyAgICAqIC0gc3RhcnQgKyAxNjoNCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMTJsb3cgYml0 cyAxMS0tNGANCj4gPiArICAgICAgLSBHXCA6c3ViOmAxM2xvdyBiaXRzIDUtLTBgXCAoYml0cyA3 LS0yKSBGR1wgOnN1YjpgMTJoaWdoIGJpdHMgMTMtLTEyYFwgKGJpdHMgMS0tMCkNCj4gPiArICAg ICAgLSBHXCA6c3ViOmAxM2hpZ2ggYml0cyAxMy0tNmANCj4gPiArICAgICAgLSBSXCA6c3ViOmAx NGxvdyBiaXRzIDctLTBgDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAyMDoNCj4gPiArICAgICAgLSBG R1wgOnN1YjpgMTVsb3cgYml0cyAxLS0wYFwgKGJpdHMgNy0tNikgUlwgOnN1YjpgMTRoaWdoIGJp dHMgMTMtLThgXCAoYml0cyA1LS0wKQ0KPiA+ICsgICAgICAtIEZHXCA6c3ViOmAxNWhpZ2ggYml0 cyA5LS0yYA0KPiA+ICsgICAgICAtIEZHXCA6c3ViOmAxNWhpZ2ggYml0cyAxMy0tMTBgDQo+ID4g KyAgICAgIC0NCj4gPiArICAgICogLSBzdGFydCArIDI0Og0KPiA+ICsgICAgICAtIEJcIDpzdWI6 YDIwbG93IGJpdHMgNy0tMGANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMjFsb3cgYml0cyAxLS0w YFwgKGJpdHMgNy0tNikgQlwgOnN1YjpgMjBoaWdoIGJpdHMgMTMtLThgXCAoYml0cyA1LS0wKQ0K PiA+ICsgICAgICAtIEZHXCA6c3ViOmAyMWxvdyBiaXRzIDktLTJgDQo+ID4gKyAgICAgIC0gR1wg OnN1YjpgMjJsb3cgYml0cyAzLS0wYFwgKGJpdHMgNy0tNCkgRkdcIDpzdWI6YDIxaGlnaCBiaXRz IDEzLS0xMGBcIChiaXRzIDMtLTApDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAyODoNCj4gPiArICAg ICAgLSBHXCA6c3ViOmAyMmxvdyBiaXRzIDExLS00YA0KPiA+ICsgICAgICAtIEJcIDpzdWI6YDIz bG93IGJpdHMgNS0tMGBcIChiaXRzIDctLTIpIEdcIDpzdWI6YDIyaGlnaCBiaXRzIDEzLS0xMmBc IChiaXRzIDEtLTApDQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMjNoaWdoIGJpdHMgMTMtLTZgDQo+ ID4gKyAgICAgIC0gRkdcIDpzdWI6YDI0bG93IGJpdHMgNy0tMGANCj4gPiArICAgICogLSBzdGFy dCArIDMyOg0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDI1bG93IGJpdHMgMS0tMGBcIChiaXRzIDct LTYpIEZHXCA6c3ViOmAyNGhpZ2ggYml0cyAxMy0tOGBcIChiaXRzIDUtLTApDQo+ID4gKyAgICAg IC0gR1wgOnN1YjpgMjVoaWdoIGJpdHMgOS0tMmANCj4gPiArICAgICAgLSBHXCA6c3ViOmAyNWhp Z2ggYml0cyAxMy0tMTBgDQo+ID4gKyAgICAgIC0NCj4gPiArICAgICogLSBzdGFydCArIDM2Og0K PiA+ICsgICAgICAtIEdcIDpzdWI6YDMwbG93IGJpdHMgNy0tMGANCj4gPiArICAgICAgLSBSXCA6 c3ViOmAzMWxvdyBiaXRzIDEtLTBgXCAoYml0cyA3LS02KSBHXCA6c3ViOmAzMGhpZ2ggYml0cyAx My0tOGBcIChiaXRzIDUtLTApDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzFsb3cgYml0cyA5LS0y YA0KPiA+ICsgICAgICAtIEZHXCA6c3ViOmAzMmxvdyBiaXRzIDMtLTBgXCAoYml0cyA3LS00KSBS XCA6c3ViOmAzMWhpZ2ggYml0cyAxMy0tMTBgXCAoYml0cyAzLS0wKQ0KPiA+ICsgICAgKiAtIHN0 YXJ0ICsgNDA6DQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDMybG93IGJpdHMgMTEtLTRgDQo+ID4g KyAgICAgIC0gR1wgOnN1YjpgMzNsb3cgYml0cyA1LS0wYFwgKGJpdHMgNy0tMikgRkdcIDpzdWI6 YDMyaGlnaCBiaXRzIDEzLS0xMmBcIChiaXRzIDEtLTApDQo+ID4gKyAgICAgIC0gR1wgOnN1Yjpg MzNoaWdoIGJpdHMgMTMtLTZgDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMzRsb3cgYml0cyA3LS0w YA0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgNDQ6DQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDM1bG93 IGJpdHMgMS0tMGBcIChiaXRzIDctLTYpIFJcIDpzdWI6YDM0aGlnaCBiaXRzIDEzLS04YFwgKGJp dHMgNS0tMCkNCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMzVoaWdoIGJpdHMgOS0tMmANCj4gPiAr ICAgICAgLSBGR1wgOnN1YjpgMzVoaWdoIGJpdHMgMTMtLTEwYA0KPiA+ICsgICAgICAtDQo+ID4g XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQo+ID4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyOC5yc3QgYi9Eb2N1bWVudGF0aW9u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjgucnN0DQo+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjg2Y2FkYmYzODE3NQ0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9Eb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1t dGlzcC1zYmdncjgucnN0DQo+ID4gQEAgLTAsMCArMSw1MSBAQA0KPiA+ICsuLiAtKi0gY29kaW5n OiB1dGYtODsgbW9kZTogcnN0IC0qLQ0KPiA+ICsNCj4gPiArLi4gX3Y0bDItcGl4LWZtdC1tdGlz cC1zYmdncjg6DQo+ID4gKy4uIF92NGwyLXBpeC1mbXQtbXRpc3Atc2dicmc4Og0KPiA+ICsuLiBf djRsMi1waXgtZm10LW10aXNwLXNncmJnODoNCj4gPiArLi4gX3Y0bDItcGl4LWZtdC1tdGlzcC1z cmdnYjg6DQo+ID4gKw0KPiA+ICsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ID4g K1Y0TDJfUElYX0ZNVF9NVElTUF9TQkdHUjggKCdNQkI4JyksIFY0TDJfUElYX0ZNVF9NVElTUF9T R0JSRzgoJ01CRzgnKSwgVjRMMl9QSVhfRk1UX01USVNQX1NHUkJHOCgnTUJnOCcpLCBWNEwyX1BJ WF9GTVRfTVRJU1BfU1JHR0I4KCdNQlI4JykNCj4gPiArKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKg0KPiA+ICsNCj4gPiArOC1iaXQgUGFja2VkIEJheWVyIGZvcm1hdHMuDQo+ID4gKw0K PiA+ICtEZXNjcmlwdGlvbg0KPiA+ICs9PT09PT09PT09PQ0KPiA+ICsNCj4gPiArVGhlc2UgZm91 ciBwaXhlbCBmb3JtYXRzIGFyZSB1c2VkIGJ5IE1lZGlhdGVrIElTUCBQMS4NCj4gPiArVGhpcyBp cyBhIHBhY2tlZCBmb3JtYXQsIG1lYW5pbmcgYWxsIHRoZSBkYXRhIGJpdHMgZm9yIGEgcGl4ZWwg bHlpbmcNCj4gPiArbmV4dCB0byBlYWNoIG90aGVyIHdpdGggbm8gcGFkZGluZyBpbiBtZW1vcnks IHdpdGggYSBkZXB0aCBvZiA4IGJpdHMgcGVyIHBpeGVsLg0KPiA+ICtUaGUgbGVhc3Qgc2lnbmlm aWNhbnQgYnl0ZSBpcyBzdG9yZWQgYXQgbG93ZXIgbWVtb3J5IGFkZHJlc3NlcyAobGl0dGxlLWVu ZGlhbikuDQo+ID4gK1RoZSBSR0IgYnl0ZSBvcmRlciBmb2xsb3dzIHJhdyBzUkdCIC8gQmF5ZXIg Zm9ybWF0IGZyb20gc2Vuc29yLg0KPiA+ICtUaGV5IGFyZSBjb252ZW50aW9uYWxseSBkZXNjcmli ZWQgYXMgR1JHUi4uLiBCR0JHLi4uLCBSR1JHLi4uIEdCR0IuLi4sIGV0Yy4NCj4gPiArQmVsb3cg aXMgYW4gZXhhbXBsZSBvZiBjb252ZW50aW9uYWwgUkdCIGJ5dGUgb3JkZXIgQkdHUi4NCj4gDQo+ IEhvdyBkbyB0aGVzZSA4LWJpdCBmb3JtYXRzIGRpZmZlciBmcm9tIHRoZSBWNEwyX1BJWF9GTVRf U0dCUkc4IChhbmQNCj4gb3RoZXIgdmFyaWFudHMpID8gVGhleSBzZWVtIGlkZW50aWNhbCBiYXNl ZCBvbiB0aGUgZGVzY3JpcHRpb24uDQo+IA0KDQpZb3UgYXJlIHJpZ2h0LiBUaGV5IGFyZSBpZGVu dGljYWwuDQpXZSB3aWxsIG1vdmUgIjgtYml0IHBhY2tlZCBiYXllciBmb3JtYXRzIiBpbiBuZXh0 IHBhdGNoLg0KDQpCZXN0IHJlZ2FyZHMsDQoNCkp1bmdvDQoNCj4gPiArDQo+ID4gKyoqQnl0ZSBP cmRlci4qKg0KPiA+ICtFYWNoIGNlbGwgaXMgb25lIGJ5dGUuDQo+ID4gKw0KPiA+ICsuLiBmbGF0 LXRhYmxlOjoNCj4gPiArICAgIDpoZWFkZXItcm93czogIDANCj4gPiArICAgIDpzdHViLWNvbHVt bnM6IDANCj4gPiArDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAwOg0KPiA+ICsgICAgICAtIEJcIDpz dWI6YDAwYA0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDAxYA0KPiA+ICsgICAgICAtIEJcIDpzdWI6 YDAyYA0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDAzYA0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgNDoN Cj4gPiArICAgICAgLSBHXCA6c3ViOmAxMGANCj4gPiArICAgICAgLSBSXCA6c3ViOmAxMWANCj4g PiArICAgICAgLSBHXCA6c3ViOmAxMmANCj4gPiArICAgICAgLSBSXCA6c3ViOmAxM2ANCj4gPiAr ICAgICogLSBzdGFydCArIDg6DQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMjBgDQo+ID4gKyAgICAg IC0gR1wgOnN1YjpgMjFgDQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMjJgDQo+ID4gKyAgICAgIC0g R1wgOnN1YjpgMjNgDQo+ID4gKyAgICAqIC0gc3RhcnQgKyAxMjoNCj4gPiArICAgICAgLSBHXCA6 c3ViOmAzMGANCj4gPiArICAgICAgLSBSXCA6c3ViOmAzMWANCj4gPiArICAgICAgLSBHXCA6c3Vi OmAzMmANCj4gPiArICAgICAgLSBSXCA6c3ViOmAzM2ANCj4gPiBcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUNCj4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9w aXhmbXQtbXRpc3Atc2JnZ3I4Zi5yc3QgYi9Eb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3Bp eGZtdC1tdGlzcC1zYmdncjhmLnJzdA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5k ZXggMDAwMDAwMDAwMDAwLi5jYTUxNTEzMTJiY2ENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr IGIvRG9jdW1lbnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2JnZ3I4Zi5yc3QN Cj4gPiBAQCAtMCwwICsxLDc4IEBADQo+ID4gKy4uIC0qLSBjb2Rpbmc6IHV0Zi04OyBtb2RlOiBy c3QgLSotDQo+ID4gKw0KPiA+ICsuLiBfdjRsMi1waXgtZm10LW10aXNwLXNiZ2dyOGY6DQo+ID4g Ky4uIF92NGwyLXBpeC1mbXQtbXRpc3Atc2dicmc4ZjoNCj4gPiArLi4gX3Y0bDItcGl4LWZtdC1t dGlzcC1zZ3JiZzhmOg0KPiA+ICsuLiBfdjRsMi1waXgtZm10LW10aXNwLXNyZ2diOGY6DQo+ID4g Kw0KPiA+ICsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ID4gK1Y0TDJfUElYX0ZN VF9NVElTUF9TQkdHUjhGICgnTUZCOCcpLCBWNEwyX1BJWF9GTVRfTVRJU1BfU0dCUkc4RignTUZH OCcpLCBWNEwyX1BJWF9GTVRfTVRJU1BfU0dSQkc4RignTUZnOCcpLCBWNEwyX1BJWF9GTVRfTVRJ U1BfU1JHR0I4RignTUZSOCcpDQo+ID4gKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN Cj4gPiArDQo+ID4gKzgtYml0IFBhY2tlZCBGdWxsLUcgQmF5ZXIgZm9ybWF0cy4NCj4gPiArDQo+ ID4gK0Rlc2NyaXB0aW9uDQo+ID4gKz09PT09PT09PT09DQo+ID4gKw0KPiA+ICtUaGVzZSBmb3Vy IHBpeGVsIGZvcm1hdHMgYXJlIHVzZWQgYnkgTWVkaWF0ZWsgSVNQIFAxLg0KPiA+ICtUaGlzIGlz IGEgcGFja2VkIGZvcm1hdCB3aXRoIGEgZGVwdGggb2YgOCBiaXRzIHBlciBzYW1wbGUgd2l0aCBl dmVyeSA0IHBpeGVscy4NCj4gPiArRnVsbC1HIG1lYW5zIDEgbW9yZSBwaXhlbCBmb3IgZ3JlZW4g Y2hhbm5lbCBldmVyeSAyIHBpeGVscy4NCj4gPiArVGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUg aXMgc3RvcmVkIGF0IGxvd2VyIG1lbW9yeSBhZGRyZXNzZXMgKGxpdHRsZS1lbmRpYW4pLg0KPiA+ ICtUaGUgUkdCIGJ5dGUgb3JkZXIgZm9sbG93cyByYXcgc1JHQiAvIEJheWVyIGZvcm1hdCBmcm9t IHNlbnNvci4gVGhleSBhcmUgY29udmVudGlvbmFsbHkNCj4gPiArZGVzY3JpYmVkIGFzIEdSR1Iu Li4gQkdCRy4uLiwgUkdSRy4uLiBHQkdCLi4uLCBldGMuIEJlbG93IGlzIGFuIGV4YW1wbGUgb2Yg Y29udmVudGlvbmFsDQo+ID4gK1JHQiBieXRlIG9yZGVyIEJHR1IuDQo+ID4gKw0KPiA+ICsqKkJp dC1wYWNrZWQgcmVwcmVzZW50YXRpb24uKioNCj4gPiArDQo+ID4gKy4uIGZsYXQtdGFibGU6Og0K PiA+ICsgICAgOmhlYWRlci1yb3dzOiAgMA0KPiA+ICsgICAgOnN0dWItY29sdW1uczogMA0KPiA+ ICsNCj4gPiArICAgICogLSBCXCA6c3ViOmAwMGANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMDFg DQo+ID4gKyAgICAgIC0gR1wgOnN1YjpgMDJgDQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMDNgDQo+ ID4gKyAgICAgIC0gRkdcIDpzdWI6YDA0YA0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDA1YA0KPiA+ ICsgICAgKiAtIEdcIDpzdWI6YDEwYA0KPiA+ICsgICAgICAtIFJcIDpzdWI6YDExYA0KPiA+ICsg ICAgICAtIEZHXCA6c3ViOmAxMmANCj4gPiArICAgICAgLSBHXCA6c3ViOmAxM2ANCj4gPiArICAg ICAgLSBSXCA6c3ViOmAxNGANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMTVgDQo+ID4gKw0KPiA+ ICsqKkJ5dGUgT3JkZXIuKioNCj4gPiArRWFjaCBjZWxsIGlzIG9uZSBieXRlLg0KPiA+ICsNCj4g PiArLi4gZmxhdC10YWJsZTo6DQo+ID4gKyAgICA6aGVhZGVyLXJvd3M6ICAwDQo+ID4gKyAgICA6 c3R1Yi1jb2x1bW5zOiAwDQo+ID4gKw0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMDoNCj4gPiArICAg ICAgLSBCXCA6c3ViOmAwMGANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMDFgDQo+ID4gKyAgICAg IC0gR1wgOnN1YjpgMDJgDQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMDNgDQo+ID4gKyAgICAgIC0g RkdcIDpzdWI6YDA0YA0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDA1YA0KPiA+ICsgICAgKiAtIHN0 YXJ0ICsgNjoNCj4gPiArICAgICAgLSBHXCA6c3ViOmAxMGANCj4gPiArICAgICAgLSBSXCA6c3Vi OmAxMWANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMTJgDQo+ID4gKyAgICAgIC0gR1wgOnN1Yjpg MTNgDQo+ID4gKyAgICAgIC0gUlwgOnN1YjpgMTRgDQo+ID4gKyAgICAgIC0gRkdcIDpzdWI6YDE1 YA0KPiA+ICsgICAgKiAtIHN0YXJ0ICsgMTI6DQo+ID4gKyAgICAgIC0gQlwgOnN1YjpgMjBgDQo+ ID4gKyAgICAgIC0gRkdcIDpzdWI6YDIxYA0KPiA+ICsgICAgICAtIEdcIDpzdWI6YDIyYA0KPiA+ ICsgICAgICAtIEJcIDpzdWI6YDIzYA0KPiA+ICsgICAgICAtIEZHXCA6c3ViOmAyNGANCj4gPiAr ICAgICAgLSBHXCA6c3ViOmAyNWANCj4gPiArICAgICogLSBzdGFydCArIDE4Og0KPiA+ICsgICAg ICAtIEdcIDpzdWI6YDMwYA0KPiA+ICsgICAgICAtIFJcIDpzdWI6YDMxYA0KPiA+ICsgICAgICAt IEZHXCA6c3ViOmAzMmANCj4gPiArICAgICAgLSBHXCA6c3ViOmAzM2ANCj4gPiArICAgICAgLSBS XCA6c3ViOmAzNGANCj4gPiArICAgICAgLSBGR1wgOnN1YjpgMzVgDQo+ID4gXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlDQo+IA0KDQo=