From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14D085398 for ; Mon, 28 Feb 2022 09:47:21 +0000 (UTC) Received: by mail-wr1-f47.google.com with SMTP id r10so14462468wrp.3 for ; Mon, 28 Feb 2022 01:47:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kynesim-co-uk.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:references:in-reply-to :user-agent:mime-version:content-transfer-encoding; bh=WOsjPChuIl+kUePfrAPa71neh0lHex3RttBKXvPfdoQ=; b=TLq5hpkPHku3PLxi7HJbuJQsDP5Wa7qmaxuH26hMsQgWK2StXMrHE79lPn12BYrQyn 36Ckju9r6Hg7T6NbCnE8YfIgER8Ni5YGmcs9hOo7u4MwKQBxmrAK257ZQkgoawpWdRwJ DlGl1bAHqToyAi3tVc+kngINC02Nv/oewNYInyNN/iFxs5sVEWMcYJeJSidWEPmgMgJW VRhhtweBy8BSnG5qDSak01L4h4ZAhijRKIluKCCOY4NsVuvOIqxQS//H6BAqX97/OOuf AK4MvT1gl3aaMEO01QZM4uV+WrNRAVoZaAcp234fHj7KPR8tQVTl/oUXvpvPoEQvLCNk qD4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:references :in-reply-to:user-agent:mime-version:content-transfer-encoding; bh=WOsjPChuIl+kUePfrAPa71neh0lHex3RttBKXvPfdoQ=; b=V3Y/UKUNoKlNVgIOfe/75J6yklDS0M9+8b8Pz7TiDFqFW/q+7s8iaaSAYnbBkUnRdk h7DvhgzYJEr28dUj4XGGeBxQ4etePxq5Tw8H0D5nXXgtsevzePHLleQrZgctuVG8FyVj 9bKG92L8exLGLyboxNlAaLnwkGrGUik80tcgGMCNiULNZwfjBW+ZTQIhyt0bql8Kd4kF c2g+EAiN3FNoX8HDLSD8Ycm9bv4PlmFTx09ujAuCq2AldL3fdxuQ8ehI82fbe7BzE+oM 3RDfIuCxKRYWdfAnFeX0B5UNw6mKoiswOB5sdGO8FImb5/rNP0U/Vt3gvGgSIbH5a+gH 9IzA== X-Gm-Message-State: AOAM530Gb4kQ48GX5BvHDwkp0GPVsVB5REluT6lySr1gn6QsS0BfIkF1 K71eG6tNo/jZutjQ8P0tfr6O3w== X-Google-Smtp-Source: ABdhPJzp3i6tmpmN3z5O/ACtJUvC9C0191qzOsrE2xxczwXXbQmhrl6UAPBNDXyzNtGo0jFeNgtLww== X-Received: by 2002:adf:e0ce:0:b0:1ef:706d:d6b9 with SMTP id m14-20020adfe0ce000000b001ef706dd6b9mr11022135wri.71.1646041640166; Mon, 28 Feb 2022 01:47:20 -0800 (PST) Received: from CTHALPA.outer.uphall.net (cpc1-cmbg20-2-0-cust759.5-4.cable.virginm.net. [86.21.218.248]) by smtp.gmail.com with ESMTPSA id f21-20020a7bcd15000000b0034efd01ee16sm10388339wmj.42.2022.02.28.01.47.19 (version=TLS1 cipher=ECDHE-ECDSA-AES128-SHA bits=128/128); Mon, 28 Feb 2022 01:47:19 -0800 (PST) From: John Cox To: =?utf-8?Q?Jernej_=C5=A0krabec?= Cc: mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jonas@kwiboo.se, nicolas@ndufresne.ca, Benjamin Gaignard , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, kernel@collabora.com, knaerzche@gmail.com Subject: Re: [PATCH v3 09/14] media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSET control Date: Mon, 28 Feb 2022 09:47:18 +0000 Message-ID: References: <20220225164600.1044663-1-benjamin.gaignard@collabora.com> <4378293.LvFx2qVVIh@kista> <1884298.PYKUYFuaPT@kista> <7348885.EvYhyI6sBW@kista> In-Reply-To: <7348885.EvYhyI6sBW@kista> User-Agent: ForteAgent/8.00.32.1272 Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Sat, 26 Feb 2022 19:17:46 +0100, you wrote: >Dne sobota, 26. februar 2022 ob 18:59:18 CET je Jernej =C5=A0krabec = napisal(a): >> Hi! >>=20 >> Dne petek, 25. februar 2022 ob 20:30:20 CET je Jernej =C5=A0krabec = napisal(a): >> > Hi! >> >=20 >> > Dne petek, 25. februar 2022 ob 17:45:55 CET je Benjamin Gaignard=20 >napisal(a): >> > > The number of 'entry point offset' could be very variable. >> > > Rather than use a large static array define a v4l2 dynamic array >> > > of integer control. >> >=20 >> > I suggest we should be more specific and say U32 = (V4L2_CTRL_TYPE_U32). >> >=20 >> > > The number of entry point offsets is reported by the elems field. >>=20 >> I did few more tests and these are my findings: >> 1. dynamic array can't be set over size, specified in .dims array >> 2. entry point offsets are per slice, so if we make slices dynamic = array,=20 >then=20 >> entry points would become two dimensional dynamic array >> 3. num_entry_point_offsets must be part of slice control, because it = can be=20 >> zero, but size of array can't be > >Clarification: num_entry_point_offsets is needed in any case, even = without entry=20 >point list. I thought that at least one decoder wanted the entry points or have we decided that we don't? Whilst they aren't required for decode, what they give you, if your h/w supports it, is the ability to decode multiple lines of CTBs in parallel (with a 2 CTB offset between lines), so they aren't useless. If we do decided we want the entry point offset control, now or later, then num_entry_points in the slice_param allows you to determine which offsets apply to which slices without the complexity of a variable array of variable arrays. But whether or not we end up supporting entry point offsets, the Pi h/w requires me to generate 1 table entry for each CTB line and num_entry_points is the parameter I need for that, so I really want it in the slice_params. Regards John Cox >> 4. fortunately, not setting entry points doesn't impact decoding=20 >correctness.=20 >> This is in line what John told me about them. >>=20 >> Hans, can you comment points 1-3? I might misunderstand point 1. >>=20 >> In short, it seems like we don't really need entry points, even if = they are=20 >> used in BSP library. In both cases, I got fluster score 119/138 = (10-bit=20 >> excluded), so we can just drop this patch, although I'm a bit uneasy = not=20 >> setting entry points... >>=20 >> Best regards, >> Jernej >>=20 >> > >=20 >> > > Signed-off-by: Benjamin Gaignard >> > > --- >> > > .../userspace-api/media/v4l/ext-ctrls-codec.rst | 9 = +++++++++ >> > > include/media/hevc-ctrls.h | 1 + >> > > 2 files changed, 10 insertions(+) >> > >=20 >> > > diff --git = a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/ >> > Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >> > > index 44a268a948c0..71f7dc1c1ccd 100644 >> > > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >> > > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >> > > @@ -3128,6 +3128,15 @@ enum = v4l2_mpeg_video_hevc_size_of_length_field - >> > > =20 >> > > \normalsize >> > > =20 >> > > +``V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (integer)`` >> >=20 >> > Here you have OFFSETS (plural) ... >> >=20 >> > > + Specifies the i-th entry point offset in bytes and is = represented by >> > > + offset_len_minus1 plus 1 bits. >> >=20 >> > You probably mean entry_point_offset_minus1? offset_len_minus1 just = tells=20 >how=20 >> > much bits need to be read for each element and it's not important = for=20 >actual=20 >> > decoding. >> >=20 >> > > + This control is a dynamically sized array. The number of = entry=20 >point >> > > + offsets is reported by the ``elems`` field. >> > > + This bitstream parameter is defined according to :ref:`hevc`. >> > > + They are described in section 7.4.7.1 "General slice segment = header >> > > + semantics" of the specification. >> > > + >> > > ``V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (struct)`` >> > > Specifies the HEVC scaling matrix parameters used for the = scaling=20 >> > process >> > > for transform coefficients. >> > > diff --git a/include/media/hevc-ctrls.h = b/include/media/hevc-ctrls.h >> > > index 3016c1abb1d0..3f8a67924df3 100644 >> > > --- a/include/media/hevc-ctrls.h >> > > +++ b/include/media/hevc-ctrls.h >> > > @@ -20,6 +20,7 @@ >> > > #define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS = (V4L2_CID_CODEC_BASE +=20 >> > 1012) >> > > #define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_BASE = +=20 >> > 1015) >> > > #define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_BASE=20 >+=20 >> 1016) >> > > +#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSET = (V4L2_CID_CODEC_BASE=20 >+=20 >> > 1017) >> >=20 >> > ... and here you have OFFSET (singlular). I suggest plural form to = be used=20 >> in=20 >> > all places, including subject line of this commit. >> >=20 >> > Additionally, it would be nice if control is initialized, like so: >> > https://github.com/jernejsk/linux-1/commit/ >> > f938e162cd8dd77c9f6f1b248d80144840a37bce >> >=20 >> > Best regards, >> > Jernej >> >=20 >> > > =20 >> > > /* enum v4l2_ctrl_type type values */ >> > > #define V4L2_CTRL_TYPE_HEVC_SPS 0x0120 >> > > --=20 >> > > 2.32.0 >> > >=20 >> > >=20 >> >=20 >> >=20 >> >=20 >>=20 >>=20 >>=20 > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 133A7C433F5 for ; Mon, 28 Feb 2022 09:48:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=5m+GFYQ3MHW4/t6yYExPh5hP6QwRFYlOD3bngPeibow=; b=lf5jNoKVSM+/sq 4Vdwbx2VMUt8unirDXMu+xzCgOhDwncZfUqFSYzxLlYZd4SCfuzrvr8EVp+n2MWQBHeYrZAfeH7RL f3pM974ydnOKHJUpb13PIKVTXDgFMbRlr4w8oAHelwmNUqpUpSL8Hgp3YflNShTPHP0/3lVxgh2HP tgHA+1TCsSoP84Thpfh3q1u6LKpZZVxRHGdXVo+ipgc8zn/u6ergjT8Da2Fus9QI/PWMhQ9TpKjMU YdT6kBzbG3bu8DDrm6emWy6V97ra2NDnvrQLX42TXSbF/3odLv0Z6PQDNhWursnsJYp4elFyyU7AI ltnkNAwdOG8E0H19NvMQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nOccp-00BKAB-FE; Mon, 28 Feb 2022 09:47:27 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nOccl-00BK9F-C3 for linux-arm-kernel@lists.infradead.org; Mon, 28 Feb 2022 09:47:25 +0000 Received: by mail-wr1-x42f.google.com with SMTP id j17so14510682wrc.0 for ; Mon, 28 Feb 2022 01:47:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kynesim-co-uk.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:references:in-reply-to :user-agent:mime-version:content-transfer-encoding; bh=WOsjPChuIl+kUePfrAPa71neh0lHex3RttBKXvPfdoQ=; b=TLq5hpkPHku3PLxi7HJbuJQsDP5Wa7qmaxuH26hMsQgWK2StXMrHE79lPn12BYrQyn 36Ckju9r6Hg7T6NbCnE8YfIgER8Ni5YGmcs9hOo7u4MwKQBxmrAK257ZQkgoawpWdRwJ DlGl1bAHqToyAi3tVc+kngINC02Nv/oewNYInyNN/iFxs5sVEWMcYJeJSidWEPmgMgJW VRhhtweBy8BSnG5qDSak01L4h4ZAhijRKIluKCCOY4NsVuvOIqxQS//H6BAqX97/OOuf AK4MvT1gl3aaMEO01QZM4uV+WrNRAVoZaAcp234fHj7KPR8tQVTl/oUXvpvPoEQvLCNk qD4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:references :in-reply-to:user-agent:mime-version:content-transfer-encoding; bh=WOsjPChuIl+kUePfrAPa71neh0lHex3RttBKXvPfdoQ=; b=x9otGu1lRFPsrHj8y3lHiEBcyFnlG8nwkr+9DkB44Ez/eF8JLQORNyFBieMRX8heOC jn8v46v/6rm3OUvj7Cyr+uXf3In9T+C6jM+RRHIK6oktKnxc3ko4N1aKlDKhOhAwXX7k YpAL7CjfJzYILCt4yD+PFWnYcc5ET7kmaF2OZSBmm9473maOOvvHnYB3dB6/5b9nk+NI iX3LaLv2HMTzLvYWqSGv+pbd/kLu8DXfycFWHlqJCeQVKcGCVBlVt0PumtLSll+FE+77 JjXf9Et0S0K6pjPajTQkp4ow8XubHiCFTZdY25Eflyz++tXg9fi1Wd4Vj9vOjNANzoLR Xvnw== X-Gm-Message-State: AOAM530oP0/w24SpSGtRHPFjOpvgGNov6xeA8q2aqTp8KSkaFp30tmOy mYi6qbzLYH+2MC1IbJnDO3uxqQ== X-Google-Smtp-Source: ABdhPJzp3i6tmpmN3z5O/ACtJUvC9C0191qzOsrE2xxczwXXbQmhrl6UAPBNDXyzNtGo0jFeNgtLww== X-Received: by 2002:adf:e0ce:0:b0:1ef:706d:d6b9 with SMTP id m14-20020adfe0ce000000b001ef706dd6b9mr11022135wri.71.1646041640166; Mon, 28 Feb 2022 01:47:20 -0800 (PST) Received: from CTHALPA.outer.uphall.net (cpc1-cmbg20-2-0-cust759.5-4.cable.virginm.net. [86.21.218.248]) by smtp.gmail.com with ESMTPSA id f21-20020a7bcd15000000b0034efd01ee16sm10388339wmj.42.2022.02.28.01.47.19 (version=TLS1 cipher=ECDHE-ECDSA-AES128-SHA bits=128/128); Mon, 28 Feb 2022 01:47:19 -0800 (PST) From: John Cox To: =?utf-8?Q?Jernej_=C5=A0krabec?= Cc: mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jonas@kwiboo.se, nicolas@ndufresne.ca, Benjamin Gaignard , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, kernel@collabora.com, knaerzche@gmail.com Subject: Re: [PATCH v3 09/14] media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSET control Date: Mon, 28 Feb 2022 09:47:18 +0000 Message-ID: References: <20220225164600.1044663-1-benjamin.gaignard@collabora.com> <4378293.LvFx2qVVIh@kista> <1884298.PYKUYFuaPT@kista> <7348885.EvYhyI6sBW@kista> In-Reply-To: <7348885.EvYhyI6sBW@kista> User-Agent: ForteAgent/8.00.32.1272 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220228_014723_534494_9A7C6D52 X-CRM114-Status: GOOD ( 29.16 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gU2F0LCAyNiBGZWIgMjAyMiAxOToxNzo0NiArMDEwMCwgeW91IHdyb3RlOgoKPkRuZSBzb2Jv dGEsIDI2LiBmZWJydWFyIDIwMjIgb2IgMTg6NTk6MTggQ0VUIGplIEplcm5laiDFoGtyYWJlYyBu YXBpc2FsKGEpOgo+PiBIaSEKPj4gCj4+IERuZSBwZXRlaywgMjUuIGZlYnJ1YXIgMjAyMiBvYiAy MDozMDoyMCBDRVQgamUgSmVybmVqIMWga3JhYmVjIG5hcGlzYWwoYSk6Cj4+ID4gSGkhCj4+ID4g Cj4+ID4gRG5lIHBldGVrLCAyNS4gZmVicnVhciAyMDIyIG9iIDE3OjQ1OjU1IENFVCBqZSBCZW5q YW1pbiBHYWlnbmFyZCAKPm5hcGlzYWwoYSk6Cj4+ID4gPiBUaGUgbnVtYmVyIG9mICdlbnRyeSBw b2ludCBvZmZzZXQnIGNvdWxkIGJlIHZlcnkgdmFyaWFibGUuCj4+ID4gPiBSYXRoZXIgdGhhbiB1 c2UgYSBsYXJnZSBzdGF0aWMgYXJyYXkgZGVmaW5lIGEgdjRsMiBkeW5hbWljIGFycmF5Cj4+ID4g PiBvZiBpbnRlZ2VyIGNvbnRyb2wuCj4+ID4gCj4+ID4gSSBzdWdnZXN0IHdlIHNob3VsZCBiZSBt b3JlIHNwZWNpZmljIGFuZCBzYXkgVTMyIChWNEwyX0NUUkxfVFlQRV9VMzIpLgo+PiA+IAo+PiA+ ID4gVGhlIG51bWJlciBvZiBlbnRyeSBwb2ludCBvZmZzZXRzIGlzIHJlcG9ydGVkIGJ5IHRoZSBl bGVtcyBmaWVsZC4KPj4gCj4+IEkgZGlkIGZldyBtb3JlIHRlc3RzIGFuZCB0aGVzZSBhcmUgbXkg ZmluZGluZ3M6Cj4+IDEuIGR5bmFtaWMgYXJyYXkgY2FuJ3QgYmUgc2V0IG92ZXIgc2l6ZSwgc3Bl Y2lmaWVkIGluIC5kaW1zIGFycmF5Cj4+IDIuIGVudHJ5IHBvaW50IG9mZnNldHMgYXJlIHBlciBz bGljZSwgc28gaWYgd2UgbWFrZSBzbGljZXMgZHluYW1pYyBhcnJheSwgCj50aGVuIAo+PiBlbnRy eSBwb2ludHMgd291bGQgYmVjb21lIHR3byBkaW1lbnNpb25hbCBkeW5hbWljIGFycmF5Cj4+IDMu IG51bV9lbnRyeV9wb2ludF9vZmZzZXRzIG11c3QgYmUgcGFydCBvZiBzbGljZSBjb250cm9sLCBi ZWNhdXNlIGl0IGNhbiBiZSAKPj4gemVybywgYnV0IHNpemUgb2YgYXJyYXkgY2FuJ3QgYmUKPgo+ Q2xhcmlmaWNhdGlvbjogbnVtX2VudHJ5X3BvaW50X29mZnNldHMgaXMgbmVlZGVkIGluIGFueSBj YXNlLCBldmVuIHdpdGhvdXQgZW50cnkgCj5wb2ludCBsaXN0LgoKSSB0aG91Z2h0IHRoYXQgYXQg bGVhc3Qgb25lIGRlY29kZXIgd2FudGVkIHRoZSBlbnRyeSBwb2ludHMgb3IgaGF2ZSB3ZQpkZWNp ZGVkIHRoYXQgd2UgZG9uJ3Q/IFdoaWxzdCB0aGV5IGFyZW4ndCByZXF1aXJlZCBmb3IgZGVjb2Rl LCB3aGF0IHRoZXkKZ2l2ZSB5b3UsIGlmIHlvdXIgaC93IHN1cHBvcnRzIGl0LCBpcyB0aGUgYWJp bGl0eSB0byBkZWNvZGUgbXVsdGlwbGUKbGluZXMgb2YgQ1RCcyBpbiBwYXJhbGxlbCAod2l0aCBh IDIgQ1RCIG9mZnNldCBiZXR3ZWVuIGxpbmVzKSwgc28gdGhleQphcmVuJ3QgdXNlbGVzcy4KCklm IHdlIGRvIGRlY2lkZWQgd2Ugd2FudCB0aGUgZW50cnkgcG9pbnQgb2Zmc2V0IGNvbnRyb2wsIG5v dyBvciBsYXRlciwKdGhlbiBudW1fZW50cnlfcG9pbnRzIGluIHRoZSBzbGljZV9wYXJhbSBhbGxv d3MgeW91IHRvIGRldGVybWluZSB3aGljaApvZmZzZXRzIGFwcGx5IHRvIHdoaWNoIHNsaWNlcyB3 aXRob3V0IHRoZSBjb21wbGV4aXR5IG9mIGEgdmFyaWFibGUgYXJyYXkKb2YgdmFyaWFibGUgYXJy YXlzLgoKQnV0IHdoZXRoZXIgb3Igbm90IHdlIGVuZCB1cCBzdXBwb3J0aW5nIGVudHJ5IHBvaW50 IG9mZnNldHMsIHRoZSBQaSBoL3cKcmVxdWlyZXMgbWUgdG8gZ2VuZXJhdGUgMSB0YWJsZSBlbnRy eSBmb3IgZWFjaCBDVEIgbGluZSBhbmQKbnVtX2VudHJ5X3BvaW50cyBpcyB0aGUgcGFyYW1ldGVy IEkgbmVlZCBmb3IgdGhhdCwgc28gSSByZWFsbHkgd2FudCBpdAppbiB0aGUgc2xpY2VfcGFyYW1z LgoKUmVnYXJkcwoKSm9obiBDb3gKCj4+IDQuIGZvcnR1bmF0ZWx5LCBub3Qgc2V0dGluZyBlbnRy eSBwb2ludHMgZG9lc24ndCBpbXBhY3QgZGVjb2RpbmcgCj5jb3JyZWN0bmVzcy4gCj4+IFRoaXMg aXMgaW4gbGluZSB3aGF0IEpvaG4gdG9sZCBtZSBhYm91dCB0aGVtLgo+PiAKPj4gSGFucywgY2Fu IHlvdSBjb21tZW50IHBvaW50cyAxLTM/IEkgbWlnaHQgbWlzdW5kZXJzdGFuZCBwb2ludCAxLgo+ PiAKPj4gSW4gc2hvcnQsIGl0IHNlZW1zIGxpa2Ugd2UgZG9uJ3QgcmVhbGx5IG5lZWQgZW50cnkg cG9pbnRzLCBldmVuIGlmIHRoZXkgYXJlIAo+PiB1c2VkIGluIEJTUCBsaWJyYXJ5LiBJbiBib3Ro IGNhc2VzLCBJIGdvdCBmbHVzdGVyIHNjb3JlIDExOS8xMzggKDEwLWJpdCAKPj4gZXhjbHVkZWQp LCBzbyB3ZSBjYW4ganVzdCBkcm9wIHRoaXMgcGF0Y2gsIGFsdGhvdWdoIEknbSBhIGJpdCB1bmVh c3kgbm90IAo+PiBzZXR0aW5nIGVudHJ5IHBvaW50cy4uLgo+PiAKPj4gQmVzdCByZWdhcmRzLAo+ PiBKZXJuZWoKPj4gCj4+ID4gPiAKPj4gPiA+IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWdu YXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBjb2xsYWJvcmEuY29tPgo+PiA+ID4gLS0tCj4+ID4gPiAg Li4uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1jb2RlYy5yc3QgICAgICAgICAg fCA5ICsrKysrKysrKwo+PiA+ID4gIGluY2x1ZGUvbWVkaWEvaGV2Yy1jdHJscy5oICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMSArCj4+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMCBp bnNlcnRpb25zKCspCj4+ID4gPiAKPj4gPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Vz ZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1jb2RlYy5yc3QgYi8KPj4gPiBEb2N1bWVu dGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1jb2RlYy5yc3QKPj4gPiA+ IGluZGV4IDQ0YTI2OGE5NDhjMC4uNzFmN2RjMWMxY2NkIDEwMDY0NAo+PiA+ID4gLS0tIGEvRG9j dW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9leHQtY3RybHMtY29kZWMucnN0Cj4+ ID4gPiArKysgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJs cy1jb2RlYy5yc3QKPj4gPiA+IEBAIC0zMTI4LDYgKzMxMjgsMTUgQEAgZW51bSB2NGwyX21wZWdf dmlkZW9faGV2Y19zaXplX29mX2xlbmd0aF9maWVsZCAtCj4+ID4gPiAgCj4+ID4gPiAgICAgIFxu b3JtYWxzaXplCj4+ID4gPiAgCj4+ID4gPiArYGBWNEwyX0NJRF9TVEFURUxFU1NfSEVWQ19FTlRS WV9QT0lOVF9PRkZTRVRTIChpbnRlZ2VyKWBgCj4+ID4gCj4+ID4gSGVyZSB5b3UgaGF2ZSBPRkZT RVRTIChwbHVyYWwpIC4uLgo+PiA+IAo+PiA+ID4gKyAgICBTcGVjaWZpZXMgdGhlIGktdGggZW50 cnkgcG9pbnQgb2Zmc2V0IGluIGJ5dGVzIGFuZCBpcyByZXByZXNlbnRlZCBieQo+PiA+ID4gKyAg ICBvZmZzZXRfbGVuX21pbnVzMSBwbHVzIDEgYml0cy4KPj4gPiAKPj4gPiBZb3UgcHJvYmFibHkg bWVhbiBlbnRyeV9wb2ludF9vZmZzZXRfbWludXMxPyBvZmZzZXRfbGVuX21pbnVzMSBqdXN0IHRl bGxzIAo+aG93IAo+PiA+IG11Y2ggYml0cyBuZWVkIHRvIGJlIHJlYWQgZm9yIGVhY2ggZWxlbWVu dCBhbmQgaXQncyBub3QgaW1wb3J0YW50IGZvciAKPmFjdHVhbCAKPj4gPiBkZWNvZGluZy4KPj4g PiAKPj4gPiA+ICsgICAgVGhpcyBjb250cm9sIGlzIGEgZHluYW1pY2FsbHkgc2l6ZWQgYXJyYXku IFRoZSBudW1iZXIgb2YgZW50cnkgCj5wb2ludAo+PiA+ID4gKyAgICBvZmZzZXRzIGlzIHJlcG9y dGVkIGJ5IHRoZSBgYGVsZW1zYGAgZmllbGQuCj4+ID4gPiArICAgIFRoaXMgYml0c3RyZWFtIHBh cmFtZXRlciBpcyBkZWZpbmVkIGFjY29yZGluZyB0byA6cmVmOmBoZXZjYC4KPj4gPiA+ICsgICAg VGhleSBhcmUgZGVzY3JpYmVkIGluIHNlY3Rpb24gNy40LjcuMSAiR2VuZXJhbCBzbGljZSBzZWdt ZW50IGhlYWRlcgo+PiA+ID4gKyAgICBzZW1hbnRpY3MiIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgo+ PiA+ID4gKwo+PiA+ID4gIGBgVjRMMl9DSURfU1RBVEVMRVNTX0hFVkNfU0NBTElOR19NQVRSSVgg KHN0cnVjdClgYAo+PiA+ID4gICAgICBTcGVjaWZpZXMgdGhlIEhFVkMgc2NhbGluZyBtYXRyaXgg cGFyYW1ldGVycyB1c2VkIGZvciB0aGUgc2NhbGluZyAKPj4gPiBwcm9jZXNzCj4+ID4gPiAgICAg IGZvciB0cmFuc2Zvcm0gY29lZmZpY2llbnRzLgo+PiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv bWVkaWEvaGV2Yy1jdHJscy5oIGIvaW5jbHVkZS9tZWRpYS9oZXZjLWN0cmxzLmgKPj4gPiA+IGlu ZGV4IDMwMTZjMWFiYjFkMC4uM2Y4YTY3OTI0ZGYzIDEwMDY0NAo+PiA+ID4gLS0tIGEvaW5jbHVk ZS9tZWRpYS9oZXZjLWN0cmxzLmgKPj4gPiA+ICsrKyBiL2luY2x1ZGUvbWVkaWEvaGV2Yy1jdHJs cy5oCj4+ID4gPiBAQCAtMjAsNiArMjAsNyBAQAo+PiA+ID4gICNkZWZpbmUgVjRMMl9DSURfU1RB VEVMRVNTX0hFVkNfREVDT0RFX1BBUkFNUwkoVjRMMl9DSURfQ09ERUNfQkFTRSArIAo+PiA+IDEw MTIpCj4+ID4gPiAgI2RlZmluZSBWNEwyX0NJRF9TVEFURUxFU1NfSEVWQ19ERUNPREVfTU9ERQko VjRMMl9DSURfQ09ERUNfQkFTRSArIAo+PiA+IDEwMTUpCj4+ID4gPiAgI2RlZmluZSBWNEwyX0NJ RF9TVEFURUxFU1NfSEVWQ19TVEFSVF9DT0RFCShWNEwyX0NJRF9DT0RFQ19CQVNFIAo+KyAKPj4g MTAxNikKPj4gPiA+ICsjZGVmaW5lIFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX0VOVFJZX1BPSU5U X09GRlNFVCAoVjRMMl9DSURfQ09ERUNfQkFTRSAKPisgCj4+ID4gMTAxNykKPj4gPiAKPj4gPiAu Li4gYW5kIGhlcmUgeW91IGhhdmUgT0ZGU0VUIChzaW5nbHVsYXIpLiBJIHN1Z2dlc3QgcGx1cmFs IGZvcm0gdG8gYmUgdXNlZCAKPj4gaW4gCj4+ID4gYWxsIHBsYWNlcywgaW5jbHVkaW5nIHN1Ympl Y3QgbGluZSBvZiB0aGlzIGNvbW1pdC4KPj4gPiAKPj4gPiBBZGRpdGlvbmFsbHksIGl0IHdvdWxk IGJlIG5pY2UgaWYgY29udHJvbCBpcyBpbml0aWFsaXplZCwgbGlrZSBzbzoKPj4gPiBodHRwczov L2dpdGh1Yi5jb20vamVybmVqc2svbGludXgtMS9jb21taXQvCj4+ID4gZjkzOGUxNjJjZDhkZDc3 YzlmNmYxYjI0OGQ4MDE0NDg0MGEzN2JjZQo+PiA+IAo+PiA+IEJlc3QgcmVnYXJkcywKPj4gPiBK ZXJuZWoKPj4gPiAKPj4gPiA+ICAKPj4gPiA+ICAvKiBlbnVtIHY0bDJfY3RybF90eXBlIHR5cGUg dmFsdWVzICovCj4+ID4gPiAgI2RlZmluZSBWNEwyX0NUUkxfVFlQRV9IRVZDX1NQUyAweDAxMjAK Pj4gPiA+IC0tIAo+PiA+ID4gMi4zMi4wCj4+ID4gPiAKPj4gPiA+IAo+PiA+IAo+PiA+IAo+PiA+ IAo+PiAKPj4gCj4+IAo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==