From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 57910496F6
	for <ffmpegdev@gitmailbox.com>; Wed, 23 Apr 2025 14:12:36 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A04A9687DDE;
	Wed, 23 Apr 2025 17:12:34 +0300 (EEST)
Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com
 [210.118.77.11])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BAEEA687D29
 for <ffmpeg-devel@ffmpeg.org>; Wed, 23 Apr 2025 17:12:31 +0300 (EEST)
Received: from eucas1p2.samsung.com (unknown [182.198.249.207])
 by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id
 20250423141231euoutp01c7105ea831c8494384d88aecf4312f3b~4_APmjWMf2674726747euoutp01L
 for <ffmpeg-devel@ffmpeg.org>; Wed, 23 Apr 2025 14:12:31 +0000 (GMT)
DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com
 20250423141231euoutp01c7105ea831c8494384d88aecf4312f3b~4_APmjWMf2674726747euoutp01L
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com;
 s=mail20170921; t=1745417551;
 bh=qy16GxupPqWAmt/Tf96mW7HSi9O/1x/tJtlOknB9U98=;
 h=From:To:Cc:Subject:Date:References:From;
 b=gIVOpsjAj3RDhIrE/owOETcd9ZJM/fhI6nCMCu0lNwsgAdvI72uND9/fCeTO2DH0G
 FbJ8h+jfM0CGN8juDiI4gUM3GQRN2EZfOo0p0Nx3YoasxwRBH4PkXH4cBV4aEPJxiW
 GCzuHuYyFrbkM1ZGjsjNtSrUNbaivkrhiWXQa0Fg=
Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by
 eucas1p1.samsung.com (KnoxPortal) with ESMTP id
 20250423141231eucas1p1a78c69837f58e058155730216290b18f~4_APbLCa62616026160eucas1p1g;
 Wed, 23 Apr 2025 14:12:31 +0000 (GMT)
Received: from eucas1p1.samsung.com ( [182.198.249.206]) by
 eusmges2new.samsung.com (EUCPMTA) with SMTP id BD.38.17807.E45F8086; Wed, 23
 Apr 2025 15:12:30 +0100 (BST)
Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by
 eucas1p1.samsung.com (KnoxPortal) with ESMTPA id
 20250423141230eucas1p1962c2698d09aced37fa5551493a693b8~4_AO016OX2816128161eucas1p1T;
 Wed, 23 Apr 2025 14:12:30 +0000 (GMT)
Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by
 eusmtrp2.samsung.com (KnoxPortal) with ESMTP id
 20250423141230eusmtrp2962f459ab4bf0f113fb505e67d90d936~4_AO0XlX40771107711eusmtrp2l;
 Wed, 23 Apr 2025 14:12:30 +0000 (GMT)
X-AuditID: cbfec7f4-1fbfe7000000458f-09-6808f54edc37
Received: from eusmtip2.samsung.com ( [203.254.199.222]) by
 eusmgms2.samsung.com (EUCPMTA) with SMTP id 5C.D7.19654.E45F8086; Wed, 23
 Apr 2025 15:12:30 +0100 (BST)
Received: from AMDC5021.local (unknown [106.120.41.33]) by
 eusmtip2.samsung.com (KnoxPortal) with ESMTPA id
 20250423141230eusmtip2fc2785b9d482ba60db7574d00881d5b2~4_AOhACMe2743827438eusmtip2G;
 Wed, 23 Apr 2025 14:12:30 +0000 (GMT)
From: Dawid Kozinski <d.kozinski@samsung.com>
To: ffmpeg-devel@ffmpeg.org
Date: Wed, 23 Apr 2025 16:12:26 +0200
Message-Id: <20250423141226.1857892-1-d.kozinski@samsung.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djPc7p+XzkyDLovmVms/PabxeLbpzPM
 DkwefxZtZvHo27KKMYApissmJTUnsyy1SN8ugStjVa9vwY29TBUzLwg2MM58w9jFyMkhIWAi
 sbD3IGsXIxeHkMAKRokXh06zQDhfGCU2vXvIBOF8ZpQ483sHXMuRWbfYIRLLGSX2zv0P1f+G
 UeLx6u2sIFVsAroSLz88YgKxRQSkJSbt3cEMYjMLaEusu/udDcQWFoiQeLl8J5jNIqAqcWj6
 QbB6XgFbiY+L1zJBbJOX2H/wLDNEXFDi5MwnLBBz5CWat85mBlksIfCTXeL9lnVQ57lIHL08
 E6pZWOLV8S3sELaMxP+d84HiHEB2scShfgcIs0bi0I90iApribeNxxlBwswCmhLrd+lDhB0l
 9iw/yQ5RzSdx460gxAF8EpO2TWeGCPNKdLQJQZgqEn2dYhCNUhJPl81hhrA9JLa8Og92iZBA
 rMSz5Y3MExgVZiH5ahaSr2YhnLCAkXkVo3hqaXFuemqxUV5quV5xYm5xaV66XnJ+7iZGYFo4
 /e/4lx2My1991DvEyMTBeIhRgoNZSYT3lxt7hhBvSmJlVWpRfnxRaU5q8SFGaQ4WJXHeRftb
 04UE0hNLUrNTUwtSi2CyTBycUg1MzNWu/8qf8/UeKko02HPA+CvXneIi99JdPkY9FxRWZgQU
 nquJeWx97tLmK69TbAVl2Pjn75Zb+SFsTkTV5G02Bydq3gzo+ySw9bJi2bIpC2olvRo/xTQ0
 MmbcaO5g6BW/l61zVXm2UK5nh47JIff/J0+5e5zSNsoweLjI5MqP/TUf/89haIne9GDpaobO
 lolbBF2kP+X4biotWuQfMk82+/nuSWtkjRmOxk9WqFGrXMNhnruUp2pftnOCxZ01jIs2OE7e
 lLHG0LuaTaFW6UFCpPviWrdbCSuakzWf6dvYssc/Szh9pkA9aKpF++b53l1z1/51eNGR7RLU
 rbNkxgS5ol6pYzt3Gsa9CfnO+kKJpTgj0VCLuag4EQDhzUYDegMAAA==
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOLMWRmVeSWpSXmKPExsVy+t/xe7p+XzkyDCbNE7ZY+e03i8W3T2eY
 HZg8/izazOLRt2UVYwBTlJ5NUX5pSapCRn5xia1StKGFkZ6hpYWekYmlnqGxeayVkamSvp1N
 SmpOZllqkb5dgl7Gql7fght7mSpmXhBsYJz5hrGLkZNDQsBE4sisW+xdjFwcQgJLGSXWb18N
 lZCSWLp0EZQtLPHnWhcbRNErRonP818xgyTYBHQlXn54xARiiwhIS0zauwMsziygLbHu7nc2
 EFtYIEzi+qaz7CA2i4CqxKHpB8HqeQVsJT4uXssEsUBeYv/Bs8wQcUGJkzOfsHQxcgDNUZdY
 P08IYqS8RPPW2cwTGPlnIamahVA1C0nVAkbmVYwiqaXFuem5xUZ6xYm5xaV56XrJ+bmbGIEh
 vO3Yzy07GFe++qh3iJGJg/EQowQHs5II7y839gwh3pTEyqrUovz4otKc1OJDjKZAV09klhJN
 zgdGUV5JvKGZgamhiZmlgamlmbGSOC/blfNpQgLpiSWp2ampBalFMH1MHJxSDUxR746+/BjP
 f9FtzaNNAR+3T7h0sqjjwFYmwYr5fbWfmOeo7FM894E5d5fvtLliPQeqv6++etD9w8L1sUVX
 tXu+b1jwSuXFO9bVOaJ9jtJ8at+rbqx+cWNzmWrbAo8Mvh9CCfpNjywlW8RCxPdqmilv86me
 6HZZclGIVvubm9FCkyqK4tYq3bN6+LyMue7p6k9bY19GWrjNOrVhR8q0tR4Jm2+de/Li5brA
 aLY4dtlcpoYZ9pvuTurJmCq6/1P+xNCMmjaPVx3Vp/2va4vab3diCTMPzTbbnpXFtFb9ybWw
 tZ+ds/QFnhW/KJzy3s927dcrns/FvlRtNZBcsSrjyJJnOz65ek3dzvBZ+yrPQl8hJZbijERD
 Leai4kQAmhn3AOoCAAA=
X-CMS-MailID: 20250423141230eucas1p1962c2698d09aced37fa5551493a693b8
X-Msg-Generator: CA
X-RootMTR: 20250423141230eucas1p1962c2698d09aced37fa5551493a693b8
X-EPHeader: CA
CMS-TYPE: 201P
X-CMS-RootMailID: 20250423141230eucas1p1962c2698d09aced37fa5551493a693b8
References: <CGME20250423141230eucas1p1962c2698d09aced37fa5551493a693b8@eucas1p1.samsung.com>
Subject: [FFmpeg-devel] [PATCH v1 2/8] avcodec/apv_parser: Added parser
 implementation for APV format
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: Dawid Kozinski <d.kozinski@samsung.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250423141226.1857892-1-d.kozinski@samsung.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

LSBBZGRlZCBjb25zdGFudHMgZGVmaW5pdGlvbnMgZm9yIEFQViBwYXJzZXIKLSBQcm92aWRlZCBw
YXJzaW5nIGZvbGxvd2luZyBBUFYgUkZDCi0gQVBWIHBhcnNlciByZWdpc3RyYXRpb24KClNpZ25l
ZC1vZmYtYnk6IERhd2lkIEtvemluc2tpIDxkLmtvemluc2tpQHNhbXN1bmcuY29tPgotLS0KIGNv
bmZpZ3VyZSAgICAgICAgICAgICAgIHwgICAyICsKIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgIHwg
ICAyICsKIGxpYmF2Y29kZWMvYXB2LmggICAgICAgIHwgIDkzICsrKysrKysrCiBsaWJhdmNvZGVj
L2Fwdl9wYXJzZS5jICB8ICAzMiArKysKIGxpYmF2Y29kZWMvYXB2X3BhcnNlLmggIHwgIDgxICsr
KysrKysKIGxpYmF2Y29kZWMvYXB2X3BhcnNlci5jIHwgMTQxICsrKysrKysrKysrCiBsaWJhdmNv
ZGVjL2Fwdl9wcy5jICAgICB8IDUwMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrCiBsaWJhdmNvZGVjL2Fwdl9wcy5oICAgICB8IDE4OCArKysrKysrKysrKysrKysKIGxp
YmF2Y29kZWMvcGFyc2Vycy5jICAgIHwgICAxICsKIDkgZmlsZXMgY2hhbmdlZCwgMTA0MyBpbnNl
cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hcHYuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYXB2X3BhcnNlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh
dmNvZGVjL2Fwdl9wYXJzZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hcHZfcGFy
c2VyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Fwdl9wcy5jCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliYXZjb2RlYy9hcHZfcHMuaAoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2Nv
bmZpZ3VyZQppbmRleCBjOTRiOGVhYzQzLi4yOTRmN2U0YTlkIDEwMDc1NQotLS0gYS9jb25maWd1
cmUKKysrIGIvY29uZmlndXJlCkBAIC0yNTU1LDYgKzI1NTUsNyBAQCBDT05GSUdfRVhUUkE9Igog
ICAgIGFhbmRjdHRhYmxlcwogICAgIGFjM2RzcAogICAgIGFkdHNfaGVhZGVyCisgICAgYXB2cGFy
c2UKICAgICBhdHNjX2E1MwogICAgIGF1ZGlvX2ZyYW1lX3F1ZXVlCiAgICAgYXVkaW9kc3AKQEAg
LTM0ODEsNiArMzQ4Miw3IEBAIHZ2Y19xc3ZfZGVjb2Rlcl9zZWxlY3Q9InZ2Y19tcDR0b2FubmV4
Yl9ic2YgcXN2ZGVjIgogCiAjIHBhcnNlcnMKIGFhY19wYXJzZXJfc2VsZWN0PSJhZHRzX2hlYWRl
ciBtcGVnNGF1ZGlvIgorYXB2X3BhcnNlcl9zZWxlY3Q9ImFwdnBhcnNlIgogYXYxX3BhcnNlcl9z
ZWxlY3Q9ImNic19hdjEiCiBldmNfcGFyc2VyX3NlbGVjdD0iZXZjcGFyc2UiCiBmZnYxX3BhcnNl
cl9zZWxlY3Q9InJhbmdlY29kZXIiCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIv
bGliYXZjb2RlYy9NYWtlZmlsZQppbmRleCA3YmQxZGJlYzlhLi4zYWU2ZGQxN2VhIDEwMDY0NAot
LS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKQEAgLTc2
LDYgKzc2LDcgQEAgT0JKUy0kKENPTkZJR19BQU5EQ1RUQUJMRVMpICAgICAgICAgICAgKz0gYWFu
ZGN0dGFiLm8KIE9CSlMtJChDT05GSUdfQUMzRFNQKSAgICAgICAgICAgICAgICAgICs9IGFjM2Rz
cC5vIGFjMy5vIGFjM3RhYi5vCiBPQkpTLSQoQ09ORklHX0FEVFNfSEVBREVSKSAgICAgICAgICAg
ICArPSBhZHRzX2hlYWRlci5vIG1wZWc0YXVkaW9fc2FtcGxlX3JhdGVzLm8KIE9CSlMtJChDT05G
SUdfQU1GKSAgICAgICAgICAgICAgICAgICAgICs9IGFtZmVuYy5vIGFtZmRlYy5vCitPQkpTLSQo
Q09ORklHX0FQVlBBUlNFKSAgICAgICAgICAgICAgICArPSBhcHZfcGFyc2UubyBhcHZfcHMubwog
T0JKUy0kKENPTkZJR19BVURJT19GUkFNRV9RVUVVRSkgICAgICAgKz0gYXVkaW9fZnJhbWVfcXVl
dWUubwogT0JKUy0kKENPTkZJR19BVFNDX0E1MykgICAgICAgICAgICAgICAgKz0gYXRzY19hNTMu
bwogT0JKUy0kKENPTkZJR19BVURJT0RTUCkgICAgICAgICAgICAgICAgKz0gYXVkaW9kc3AubwpA
QCAtMTE5Niw2ICsxMTk3LDcgQEAgT0JKUy0kKENPTkZJR19BQzNfUEFSU0VSKSAgICAgICAgICAg
ICAgKz0gYWFjX2FjM19wYXJzZXIubyBhYzN0YWIubyBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhYzNfY2hhbm5lbF9sYXlvdXRfdGFiLm8KIE9CSlMtJChDT05G
SUdfQURYX1BBUlNFUikgICAgICAgICAgICAgICs9IGFkeF9wYXJzZXIubwogT0JKUy0kKENPTkZJ
R19BTVJfUEFSU0VSKSAgICAgICAgICAgICAgKz0gYW1yX3BhcnNlci5vCitPQkpTLSQoQ09ORklH
X0FQVl9QQVJTRVIpICAgICAgICAgICAgICArPSBhcHZfcGFyc2VyLm8KIE9CSlMtJChDT05GSUdf
QVYxX1BBUlNFUikgICAgICAgICAgICAgICs9IGF2MV9wYXJzZXIubyBhdjFfcGFyc2UubwogT0JK
Uy0kKENPTkZJR19BVlMyX1BBUlNFUikgICAgICAgICAgICAgKz0gYXZzMi5vIGF2czJfcGFyc2Vy
Lm8KIE9CSlMtJChDT05GSUdfQVZTM19QQVJTRVIpICAgICAgICAgICAgICs9IGF2czNfcGFyc2Vy
Lm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXB2LmggYi9saWJhdmNvZGVjL2Fwdi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmY0MDUxNTQ0MGIKLS0tIC9kZXYvbnVs
bAorKysgYi9saWJhdmNvZGVjL2Fwdi5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBBUFYgZGVm
aW5pdGlvbnMgYW5kIGVudW1zCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI1IERhd2lkIEtvemlu
c2tpIDxkLmtvemluc2tpQHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBl
ZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1w
ZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSBVU0EKKyAqLworCisjaWZuZGVmIEFWQ09ERUNfQVBWX0gKKyNkZWZpbmUgQVZDT0RFQ19BUFZf
SAorCisvLyBUaGUgbGVuZ3RoIGZpZWxkIHRoYXQgaW5kaWNhdGVzIHRoZSBsZW5ndGggaW4gYnl0
ZXMgb2YgdGhlIGZvbGxvd2luZyBGcmFtZSBEYXRhIGlzIGNvbmZpZ3VyZWQgdG8gYmUgb2YgNCBi
eXRlcworLy8gQSBmb3VyLWJ5dGUgbGVuZ3RoIEZyYW1lIERhdGEgU2l6ZSBzeW50YXggZWxlbWVu
dCwgd2hpY2ggaW5kaWNhdGVzIHRoZSBzaXplIG9mIHRoZSBGcmFtZSBEYXRhIGluIGJ5dGVzLCBt
YXkgcHJlY2VkZSB0aGUgRnJhbWUgRGF0YSwgZGVwZW5kaW5nIG9uIHRoZSBhcHBsaWNhdGlvbi4K
KyNkZWZpbmUgQVBWX0FVX1NJWkVfUFJFRklYX0xFTkdUSCAgICAgICAgICAgKDQpICAvKiBieXRl
ICovCisjZGVmaW5lIEFQVl9QQlVfU0laRV9QUkVGSVhfTEVOR1RIICAgICAgICAgICg0KSAgLyog
Ynl0ZSAqLworI2RlZmluZSBBUFZfU0lHTkFUVVJFX0xFTkdUSCAgICAgICAgICAgICAgICAoNCkg
IC8qIGJ5dGUgKi8KKworLy8gQGRlcHJlY2F0ZWQKKyNkZWZpbmUgQVBWX0ZSQU1FX0RBVEFfU0la
RV9QUkVGSVhfTEVOR1RIICAgKDQpICAvKiBieXRlICovCisKKy8vIEBzZWUgaHR0cHM6Ly93d3cu
aWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjc2VjdGlvbi01LjMuMwor
I2RlZmluZSBBUFZfUEJVX0hFQURFUl9TSVpFICAgICAgICAgICAgICAgICAoNCkgIC8qIGJ5dGUg
Ki8KKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1h
cHYtMDQuaHRtbCNzZWN0aW9uLTUuMy42CisjZGVmaW5lIEFQVl9GUkFNRV9JTkZPX1NJWkUgICAg
ICAgICAgICAgICAgICgxNCkgIC8qIGJ5dGUgKi8KKworLyogc2l6ZSBvZiBtYWNyb2Jsb2NrICov
CisjZGVmaW5lIEFQVl9MT0cyX01CICAgICAgICAgICAgICAgICAgICAgKDQpCisjZGVmaW5lIEFQ
Vl9NQiAgICAgICAgICAgICAgICAgICAgICAgICAgKDE8PEFQVl9MT0cyX01CKQorI2RlZmluZSBB
UFZfTUJfVyAgICAgICAgICAgICAgICAgICAgICAgICgxPDxBUFZfTE9HMl9NQikKKyNkZWZpbmUg
QVBWX01CX0ggICAgICAgICAgICAgICAgICAgICAgICAoMTw8QVBWX0xPRzJfTUIpCisjZGVmaW5l
IEFQVl9NQl9EICAgICAgICAgICAgICAgICAgICAgICAgKEFQVl9NQl9XICogQVBWX01CX0gpCisK
Ky8qIHNpemUgb2YgYmxvY2sgKi8KKyNkZWZpbmUgQVBWX0xPRzJfQkxPQ0sgICAgICAgICAgICAg
ICAgICAoMykKKyNkZWZpbmUgQVBWX0JMT0NLICAgICAgICAgICAgICAgICAgICAgICAoMTw8QVBW
X0xPRzJfQkxPQ0spCisjZGVmaW5lIEFQVl9CTE9DS19XICAgICAgICAgICAgICAgICAgICAgKDE8
PEFQVl9MT0cyX0JMT0NLKQorI2RlZmluZSBBUFZfQkxPQ0tfSCAgICAgICAgICAgICAgICAgICAg
ICgxPDxBUFZfTE9HMl9CTE9DSykKKyNkZWZpbmUgQVBWX0JMT0NLX0QgICAgICAgICAgICAgICAg
ICAgICAoQVBWX0JMT0NLX1cgKiBBUFZfQkxPQ0tfSCkKKworLyogQHNlZSBXRDEgQVBWIHNwZWMg
c2VjdGlvbiA3LjMuMi4yKi8KKyNkZWZpbmUgQVBWX1BSRVZfRENfRElGRiA0MAorCisvKiBzaXpl
IG9mIG1hY3JvYmxvY2sgKi8KK2VudW0geworICAgIEFQVl9NQl9XSURUSCAgICA9IDE2LAorICAg
IEFQVl9NQl9IRUlHSFQgICA9IDE2LAorfTsKKworLyogQ29sb3IgY29tcG9uZW50cyAqLworZW51
bSB7IAorICAgIEFQVl9DT0xPUl9DT01QX1kgICAgPSAwLCAgICAvKiBZIGx1bWEgKi8KKyAgICBB
UFZfQ09MT1JfQ09NUF9VICAgID0gMSwgICAgLyogQ2IgQ2hyb21hICovCisgICAgQVBWX0NPTE9S
X0NPTVBfViAgICA9IDIsICAgIC8qIENyIENocm9tYSAqLworICAgIEFQVl9DT0xPUl9DT01QX0Eg
ICAgPSAzLCAgICAvKiBBbHBoYSAqLworICAgIEFQVl9DT0xPUl9DT01QX05VTSAgPSA0ICAgICAv
KiBudW1iZXIgb2YgY29sb3IgY29tcG9uZW50ICovCit9OworCisvKiBzaXplIG9mIGJsb2NrICov
CisjZGVmaW5lIExPRzJfQkxLICAgICAgICAgICAgICAgICAgICgzKQorI2RlZmluZSBMT0cyX0JM
S19XICAgICAgICAgICAgICAgICAoMykKKyNkZWZpbmUgTE9HMl9CTEtfSCAgICAgICAgICAgICAg
ICAgKDMpCisjZGVmaW5lIEJMS19XICAgICAgICAgICAgICAgICAgICAgICgxIDw8IExPRzJfQkxL
KQorI2RlZmluZSBCTEtfSCAgICAgICAgICAgICAgICAgICAgICAoMSA8PCBMT0cyX0JMSykKKyNk
ZWZpbmUgQkxLX0QgICAgICAgICAgICAgICAgICAgICAgKEJMS19XICogQkxLX0gpCisKK2NvbnN0
IHN0YXRpYyB1aW50MTZfdCBTY2FuT3JkZXJbQkxLX0RdID0KK3sKKyAgICAwLCAgICAxLCAgICA4
LCAgIDE2LCAgICA5LCAgICAyLCAgICAzLCAgIDEwLAorICAgIDE3LCAgIDI0LCAgIDMyLCAgIDI1
LCAgIDE4LCAgIDExLCAgICA0LCAgICA1LAorICAgIDEyLCAgIDE5LCAgIDI2LCAgIDMzLCAgIDQw
LCAgIDQ4LCAgIDQxLCAgIDM0LAorICAgIDI3LCAgIDIwLCAgIDEzLCAgICA2LCAgICA3LCAgIDE0
LCAgIDIxLCAgIDI4LAorICAgIDM1LCAgIDQyLCAgIDQ5LCAgIDU2LCAgIDU3LCAgIDUwLCAgIDQz
LCAgIDM2LAorICAgIDI5LCAgIDIyLCAgIDE1LCAgIDIzLCAgIDMwLCAgIDM3LCAgIDQ0LCAgIDUx
LAorICAgIDU4LCAgIDU5LCAgIDUyLCAgIDQ1LCAgIDM4LCAgIDMxLCAgIDM5LCAgIDQ2LAorICAg
IDUzLCAgIDYwLCAgIDYxLCAgIDU0LCAgIDQ3LCAgIDU1LCAgIDYyLCAgIDYzLAorfTsKKworI2Vu
ZGlmIC8vIEFWQ09ERUNfQVBWX0gKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXB2X3BhcnNlLmMg
Yi9saWJhdmNvZGVjL2Fwdl9wYXJzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAuLmM2YjE2Njc5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL2Fwdl9wYXJz
ZS5jCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUgRGF3aWQgS296
aW5za2kgPGQua296aW5za2lAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQg
b2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZt
cGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZG
bXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0x
MzAxIFVTQQorICovCisKKyNpbmNsdWRlICJwYXJzZXIuaCIKKworI2luY2x1ZGUgImFwdi5oIgor
I2luY2x1ZGUgImFwdl9wYXJzZS5oIgorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2Fy
Y2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtZnJhbWUKK2ludCBmZl9hcHZfcGFy
c2VfZnJhbWVfZGF0YShHZXRCaXRDb250ZXh0ICpnYiwgQVBWRnJhbWVEYXRhICpmZCkKK3sKKyAg
ICBmZl9hcHZfcGFyc2VfZnJhbWVfaGVhZGVyKGdiLCAmZmQtPmZyYW1lX2RhdGFfaGVhZGVyKTsK
KworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hcHZfcGFyc2UuaCBi
L2xpYmF2Y29kZWMvYXB2X3BhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMC4uNzhhZjlkOGY4OQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvYXB2X3BhcnNl
LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyNSBEYXdpZCBLb3pp
bnNraSA8ZC5rb3ppbnNraUBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBv
ZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1w
ZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZt
cGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEz
MDEgVVNBCisgKi8KKworLyoqCisgKiBAZmlsZQorICogQVBWIGRlY29kZXIvcGFyc2VyIHNoYXJl
ZCBjb2RlCisgKi8KKworI2lmbmRlZiBBVkNPREVDX0FQVl9QQVJTRV9ICisjZGVmaW5lIEFWQ09E
RUNfQVBWX1BBUlNFX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAibGliYXZ1
dGlsL2xvZy5oIgorI2luY2x1ZGUgImFwdi5oIgorI2luY2x1ZGUgImFwdl9wcy5oIgorCitzdGF0
aWMgaW5saW5lIHVpbnQzMl90IGFwdl9yZWFkX2ZyYW1lX2RhdGFfc2l6ZShjb25zdCB1aW50OF90
ICpiaXRzLCBpbnQgYml0c19zaXplLCB2b2lkICpsb2djdHgpCit7CisgICAgdWludDMyX3QgZnJh
bWVfZGF0YV9zaXplID0gMDsKKworICAgIGlmIChiaXRzX3NpemUgPCBBUFZfRlJBTUVfREFUQV9T
SVpFX1BSRUZJWF9MRU5HVEgpIHsKKyAgICAgICAgYXZfbG9nKGxvZ2N0eCwgQVZfTE9HX0VSUk9S
LCAiQ2FuJ3QgcmVhZCBGcmFtZSBEYXRhIHNpemVcbiIpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBmcmFtZV9kYXRhX3NpemUgPSBBVl9SQjMyKGJpdHMpOworCisgICAgcmV0dXJu
IGZyYW1lX2RhdGFfc2l6ZTsKK30KKworLy8gQHNlZSAxMi4xLiBSYXcgYml0c3RyZWFtIGZvcm1h
dCBbaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwj
c2VjdGlvbi0xMi4xXQorc3RhdGljIGlubGluZSB1aW50MzJfdCBhcHZfcmVhZF9hdV9zaXplKGNv
bnN0IHVpbnQ4X3QgKmJpdHMsIGludCBiaXRzX3NpemUsIHZvaWQgKmxvZ2N0eCkKK3sKKyAgICB1
aW50MzJfdCBhdV9zaXplID0gMDsKKworICAgIGlmIChiaXRzX3NpemUgPCBBUFZfQVVfU0laRV9Q
UkVGSVhfTEVOR1RIKSB7CisgICAgICAgIGF2X2xvZyhsb2djdHgsIEFWX0xPR19FUlJPUiwgIkNh
bid0IHJlYWQgQWNjZXNzIFVuaXQgc2l6ZVxuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KworICAgIGF1X3NpemUgPSBBVl9SQjMyKGJpdHMpOworCisgICAgcmV0dXJuIGF1X3NpemU7Cit9
CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYXB2X3JlYWRfcGJ1X3NpemUoY29uc3QgdWludDhf
dCAqYml0cywgaW50IGJpdHNfc2l6ZSwgdm9pZCAqbG9nY3R4KQoreworICAgIHVpbnQzMl90IHBi
dV9zaXplID0gMDsKKworICAgIGlmIChiaXRzX3NpemUgPCBBUFZfUEJVX1NJWkVfUFJFRklYX0xF
TkdUSCkgeworICAgICAgICBhdl9sb2cobG9nY3R4LCBBVl9MT0dfRVJST1IsICJDYW4ndCByZWFk
IFBCVSAocHJpbWl0aXZlIGJpdHN0cmVhbSB1bml0KSBzaXplXG4iKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgcGJ1X3NpemUgPSBBVl9SQjMyKGJpdHMpOworCisgICAgcmV0dXJu
IHBidV9zaXplOworfQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hpdmUvaWQv
ZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtZnJhbWUKK2ludCBmZl9hcHZfcGFyc2VfZnJhbWVf
ZGF0YShHZXRCaXRDb250ZXh0ICpnYiwgQVBWRnJhbWVEYXRhICpmZCk7CisKKyNlbmRpZiAvKiBB
VkNPREVDX0FQVl9QQVJTRV9IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Fwdl9wYXJzZXIu
YyBiL2xpYmF2Y29kZWMvYXB2X3BhcnNlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAuLmNjNWI1OWUyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL2Fwdl9w
YXJzZXIuYwpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIEFQViBmb3JtYXQgcGFyc2VyCisgKgor
ICogQ29weXJpZ2h0IChDKSAyMDI1IERhd2lkIEtvemluc2tpIDxkLmtvemluc2tpQHNhbXN1bmcu
Y29tPgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAi
cGFyc2VyLmgiCisjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgorI2luY2x1ZGUgImFwdi5oIgorI2lu
Y2x1ZGUgImFwdl9wYXJzZS5oIgorCit0eXBlZGVmIHN0cnVjdCBBUFZQYXJzZXJDb250ZXh0IHsK
KyAgICBBUFZQYXJhbVNldHMgcHM7CisKKyAgICBpbnQgcGFyc2VkX2V4dHJhZGF0YTsKK30gQVBW
UGFyc2VyQ29udGV4dDsKKworLyoqCisgKiBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp
dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI3NlY3Rpb24tMTIuMQorICogCisgKiBQYXJzZSBB
UFYgYml0c3RyZWFtCisgKgorICogQHBhcmFtIHMgY29kZWMgcGFyc2VyIGNvbnRleHQKKyAqIEBw
YXJhbSBhdmN0eCBjb2RlYyBjb250ZXh0CisgKiBAcGFyYW0gYnVmIGJ1ZmZlciB3aXRoIGZpZWxk
L2ZyYW1lIGRhdGEKKyAqIEBwYXJhbSBidWZfc2l6ZSBzaXplIG9mIHRoZSBidWZmZXIKKyAqLwor
c3RhdGljIGludCBwYXJzZV9hcHZfYml0c3RyZWFtKEFWQ29kZWNQYXJzZXJDb250ZXh0ICpzLCBB
VkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGJ1Zl9zaXplKQor
eworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSBidWY7CisgICAgaW50IGRhdGFfc2l6ZSA9IGJ1
Zl9zaXplOworCisgICAgaWYgKGRhdGFfc2l6ZSA+IDApIHsKKyAgICAgICAgaW50IGF1X3NpemUg
PSAwOworICAgICAgICAKKyAgICAgICAgLy8gQnVmZmVyIHNpemUgaXMgbm90IGVub3VnaCBmb3Ig
YnVmZmVyIHRvIHN0b3JlIEZyYW1lIERhdGEgNC1ieXRlcyBwcmVmaXggKGxlbmd0aCkKKyAgICAg
ICAgaWYgKGRhdGFfc2l6ZSA8IEFQVl9BVV9TSVpFX1BSRUZJWF9MRU5HVEgpCisgICAgICAgICAg
ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICBhdV9zaXplID0gYXB2X3Jl
YWRfYXVfc2l6ZShkYXRhLCBBUFZfQVVfU0laRV9QUkVGSVhfTEVOR1RILCBhdmN0eCk7CisKKyAg
ICAgICAgaWYgKCFhdV9zaXplIHx8IGF1X3NpemUgPiBJTlRfTUFYKQorICAgICAgICAgICAgcmV0
dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgZGF0YSArPSBBUFZfQVVfU0laRV9Q
UkVGSVhfTEVOR1RIOworICAgICAgICBkYXRhX3NpemUgLT0gQVBWX0FVX1NJWkVfUFJFRklYX0xF
TkdUSDsKKworICAgICAgICBpZiAoZGF0YV9zaXplIDwgYXVfc2l6ZSkKKyAgICAgICAgICAgIHJl
dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLy8g
RGVjb2RpbmcgRnJhbWUgRGF0YSBmcm9tIGFwdkMgKEFQVkRlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKQorc3RhdGljIGludCBkZWNvZGVfZXh0cmFkYXRhKEFWQ29kZWNQYXJzZXJDb250ZXh0ICpz
LCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpCit7CisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IGF2
Y3R4LT5leHRyYWRhdGE7CisgICAgaW50IHNpemUgPSBhdmN0eC0+ZXh0cmFkYXRhX3NpemU7Cisg
ICAgaW50IHJldCA9IDA7CisgICAgaWYgKCFkYXRhIHx8IHNpemUgPD0gMCkKKyAgICAgICAgcmV0
dXJuIC0xOworICAgIAorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXB2X3BhcnNl
KEFWQ29kZWNQYXJzZXJDb250ZXh0ICpzLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICoqcG91dGJ1ZiwgaW50ICpwb3V0YnVmX3NpemUs
CisgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkK
K3sKKyAgICBpbnQgbmV4dDsKKyAgICBpbnQgcmV0OworICAgIEFQVlBhcnNlckNvbnRleHQgKmN0
eCA9IHMtPnByaXZfZGF0YTsKKworICAgIHMtPnBpY3R1cmVfc3RydWN0dXJlID0gQVZfUElDVFVS
RV9TVFJVQ1RVUkVfRlJBTUU7CisgICAgcy0+a2V5X2ZyYW1lID0gMTsKKworICAgIGlmIChhdmN0
eC0+ZXh0cmFkYXRhICYmICFjdHgtPnBhcnNlZF9leHRyYWRhdGEpIHsKKyAgICAgICAgZGVjb2Rl
X2V4dHJhZGF0YShzLCBhdmN0eCk7CisgICAgICAgIGN0eC0+cGFyc2VkX2V4dHJhZGF0YSA9IDE7
CisgICAgfQorCisgICAgbmV4dCA9IGJ1Zl9zaXplOworCisgICAgcmV0ID0gcGFyc2VfYXB2X2Jp
dHN0cmVhbShzLCBhdmN0eCwgYnVmLCBidWZfc2l6ZSk7CisgICAgaWYocmV0IDwgMCkgeworICAg
ICAgICAqcG91dGJ1ZiAgICAgID0gTlVMTDsKKyAgICAgICAgKnBvdXRidWZfc2l6ZSA9IDA7Cisg
ICAgICAgIHJldHVybiBidWZfc2l6ZTsKKyAgICB9CisKKyAgICAvLyBwb3V0YnVmIGNvbnRhaW5z
IGp1c3Qgb25lIEFjY2VzcyBVbml0CisgICAgKnBvdXRidWYgICAgICA9IGJ1ZjsKKyAgICAqcG91
dGJ1Zl9zaXplID0gYnVmX3NpemU7CisKKyAgICByZXR1cm4gbmV4dDsKK30KKworc3RhdGljIHZv
aWQgYXB2X3BhcnNlcl9jbG9zZShBVkNvZGVjUGFyc2VyQ29udGV4dCAqcykKK3sKKyAgICBBUFZQ
YXJzZXJDb250ZXh0ICpjdHggPSBzLT5wcml2X2RhdGE7CisKKyAgICBpZihjdHgtPnBzLmZyYW1l
X2RhdGEuZnJhbWVfZGF0YV9oZWFkZXIudGlsZV9pbmZvLkNvbFN0YXJ0cykgeworICAgICAgICBm
cmVlKGN0eC0+cHMuZnJhbWVfZGF0YS5mcmFtZV9kYXRhX2hlYWRlci50aWxlX2luZm8uQ29sU3Rh
cnRzKTsKKyAgICAgICAgY3R4LT5wcy5mcmFtZV9kYXRhLmZyYW1lX2RhdGFfaGVhZGVyLnRpbGVf
aW5mby5Db2xTdGFydHMgPSBOVUxMOworICAgIH0KKworICAgIGlmKGN0eC0+cHMuZnJhbWVfZGF0
YS5mcmFtZV9kYXRhX2hlYWRlci50aWxlX2luZm8uUm93U3RhcnRzKSB7CisgICAgICAgIGZyZWUo
Y3R4LT5wcy5mcmFtZV9kYXRhLmZyYW1lX2RhdGFfaGVhZGVyLnRpbGVfaW5mby5Sb3dTdGFydHMp
OworICAgICAgICBjdHgtPnBzLmZyYW1lX2RhdGEuZnJhbWVfZGF0YV9oZWFkZXIudGlsZV9pbmZv
LlJvd1N0YXJ0cyA9IE5VTEw7CisgICAgfQorICAgIAorICAgIGlmKGN0eC0+cHMuZnJhbWVfZGF0
YS5mcmFtZV9kYXRhX2hlYWRlci50aWxlX2luZm8udGlsZV9zaXplX2luX2ZoKSB7CisgICAgICAg
IGZyZWUoY3R4LT5wcy5mcmFtZV9kYXRhLmZyYW1lX2RhdGFfaGVhZGVyLnRpbGVfaW5mby50aWxl
X3NpemVfaW5fZmgpOworICAgICAgICBjdHgtPnBzLmZyYW1lX2RhdGEuZnJhbWVfZGF0YV9oZWFk
ZXIudGlsZV9pbmZvLnRpbGVfc2l6ZV9pbl9maCA9IE5VTEw7CisgICAgfQorCisgICAgZmZfYXB2
X3BzX2ZyZWUoJmN0eC0+cHMpOworfQorCitjb25zdCBBVkNvZGVjUGFyc2VyIGZmX2Fwdl9wYXJz
ZXIgPSB7CisgICAgLmNvZGVjX2lkcyAgICAgID0geyBBVl9DT0RFQ19JRF9BUFYgfSwKKyAgICAu
cHJpdl9kYXRhX3NpemUgPSBzaXplb2YoQVBWUGFyc2VyQ29udGV4dCksCisgICAgLnBhcnNlcl9w
YXJzZSAgID0gYXB2X3BhcnNlLAorICAgIC5wYXJzZXJfY2xvc2UgICA9IGFwdl9wYXJzZXJfY2xv
c2UsCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hcHZfcHMuYyBiL2xpYmF2Y29kZWMvYXB2
X3BzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYTlmYTBjODAzMAot
LS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvYXB2X3BzLmMKQEAgLTAsMCArMSw1MDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUgRGF3aWQgS296aW5za2kgPGQua296aW5za2lAc2Ft
c3VuZy5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZG
bXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNs
dWRlICJnb2xvbWIuaCIKKyNpbmNsdWRlICJwYXJzZXIuaCIKKyNpbmNsdWRlICJhcHYuaCIKKyNp
bmNsdWRlICJhcHZfcHMuaCIKKworI2RlZmluZSBmZmFwdl9tYXgoYSxiKSAgICAgICAgICAgICBc
CisoeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfX3R5cGVvZl9fIChhKSBfYSA9
IChhKTsgXAorICAgIF9fdHlwZW9mX18gKGIpIF9iID0gKGIpOyBcCisgICAgX2EgPiBfYiA/IF9h
IDogX2I7ICAgICAgIFwKK30pCisKKyNkZWZpbmUgZmZhcHZfbWluKGEsYikgICAgICAgICAgICAg
XAorKHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX190eXBlb2ZfXyAoYSkgX2Eg
PSAoYSk7IFwKKyAgICBfX3R5cGVvZl9fIChiKSBfYiA9IChiKTsgXAorICAgIF9hIDwgX2IgPyBf
YSA6IF9iOyAgICAgICBcCit9KQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp
dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtYXJpdGhtZXRpYy1vcGVyYXRvcnMKKyNk
ZWZpbmUgZmZhcHZfY2xpcDMobWluLCBtYXgsIHZhbCkgZmZhcHZfbWF4KCAobWluKSwgZmZhcHZf
bWluKChtYXgpLCAodmFsKSkgKQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp
dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI3NlY3Rpb24tNS4zLjMKKy8vIEBzZWUgaHR0cHM6
Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1wcmlt
aXRpdmUtYml0c3RyZWFtLXVuaXQtaGUKK2ludCBmZl9hcHZfcGFyc2VfcGJ1X2hlYWRlcihHZXRC
aXRDb250ZXh0ICpnYiwgQVBWUEJVSGVhZGVyICpwYnVoKQoreworICAgIHBidWgtPnBidV90eXBl
ICAgICAgICAgICAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDgpOworICAgIHBidWgtPmdyb3Vw
X2lkICAgICAgICAgICAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKyAgICBwYnVoLT5y
ZXNlcnZlZF96ZXJfOGJpdHMgICAgICAgICAgICA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICAgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2
ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS10aWxlLWluZm8KK2ludCBmZl9hcHZfdGls
ZV9pbmZvKEdldEJpdENvbnRleHQgKmdiLCBjb25zdCBBUFZGcmFtZURhdGFIZWFkZXIgKmZkaCwg
QVBWVGlsZUluZm8gKnRpKQoreworICAgIC8vIEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJj
aGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1zb3VyY2UtZGVjb2RlZC1hbmQtb3V0
cHV0LWYKKyAgICBpbnQgTWJXaWR0aCA9IEFQVl9NQl9XSURUSDsKKyAgICBpbnQgTWJIZWlnaHQg
PSBBUFZfTUJfSEVJR0hUOworCisgICAgaW50IEZyYW1lV2lkdGhJblNhbXBsZXNZOworICAgIGlu
dCBGcmFtZUhlaWdodEluU2FtcGxlc1k7CisgICAgaW50IEZyYW1lV2lkdGhJbk1ic1k7CisgICAg
aW50IEZyYW1lSGVpZ2h0SW5NYnNZOworCisgICAgaW50IHN0YXJ0TWIgPSAwOworICAgIGludCBp
ID0gMDsKKworICAgIHRpLT50aWxlX3dpZHRoX2luX21icyA9IGdldF9iaXRzKGdiLCAyMCk7Cisg
ICAgdGktPnRpbGVfaGVpZ2h0X2luX21icyA9IGdldF9iaXRzKGdiLCAyMCk7CisKKyAgICBGcmFt
ZVdpZHRoSW5TYW1wbGVzWSA9IGZkaC0+ZnJhbWVfaW5mby5mcmFtZV93aWR0aDsKKyAgICBGcmFt
ZUhlaWdodEluU2FtcGxlc1kgPSBmZGgtPmZyYW1lX2luZm8uZnJhbWVfaGVpZ2h0OworICAgIEZy
YW1lV2lkdGhJbk1ic1kgPSBjZWlsKCBGcmFtZVdpZHRoSW5TYW1wbGVzWSAvIE1iV2lkdGggKTsK
KyAgICBGcmFtZUhlaWdodEluTWJzWSA9IGNlaWwoIEZyYW1lSGVpZ2h0SW5TYW1wbGVzWSAvIE1i
SGVpZ2h0ICk7CisKKyAgICBpZighdGktPkNvbFN0YXJ0cykKKyAgICAgICAgZnJlZSh0aS0+Q29s
U3RhcnRzKTsKKworICAgIC8vIEB0b2RvIHJlbWVtYmVyIHRvIGZyZWUgaXQKKyAgICB0aS0+Q29s
U3RhcnRzID0gbWFsbG9jKHNpemVvZihpbnQpICogRnJhbWVXaWR0aEluTWJzWSk7CisKKyAgICBm
b3IoIGkgPSAwOyBzdGFydE1iIDwgRnJhbWVXaWR0aEluTWJzWTsgaSsrICkgeworICAgICAgICB0
aS0+Q29sU3RhcnRzWyBpIF0gPSBzdGFydE1iICogTWJXaWR0aDsKKyAgICAgICAgc3RhcnRNYiAr
PSB0aS0+dGlsZV93aWR0aF9pbl9tYnM7CisgICAgfQorCisgICAgdGktPkNvbFN0YXJ0c1sgaSBd
ID0gRnJhbWVXaWR0aEluTWJzWSAqIE1iV2lkdGg7CisgICAgdGktPlRpbGVDb2xzID0gaTsKKwor
ICAgIHN0YXJ0TWIgPSAwOworCisgICAgaWYoIXRpLT5Sb3dTdGFydHMpCisgICAgICAgIGZyZWUo
dGktPlJvd1N0YXJ0cyk7CisKKyAgICAvLyBAdG9kbyByZW1lbWJlciB0byBmcmVlIGl0CisgICAg
dGktPlJvd1N0YXJ0cyA9IG1hbGxvYyhzaXplb2YoaW50KSAqIEZyYW1lSGVpZ2h0SW5NYnNZKTsK
KworICAgIGZvciggaSA9IDA7IHN0YXJ0TWIgPCBGcmFtZUhlaWdodEluTWJzWTsgaSsrICkgewor
ICAgICAgICB0aS0+Um93U3RhcnRzWyBpIF0gPSBzdGFydE1iICogTWJIZWlnaHQ7CisgICAgICAg
IHN0YXJ0TWIgKz0gdGktPnRpbGVfaGVpZ2h0X2luX21icyArIDE7CisgICAgfQorCisgICAgdGkt
PlJvd1N0YXJ0c1sgaSBdID0gRnJhbWVIZWlnaHRJbk1ic1kgKiBNYkhlaWdodDsKKyAgICB0aS0+
VGlsZVJvd3MgPSBpOworICAgIHRpLT5OdW1UaWxlcyA9IHRpLT5UaWxlQ29scyAqIHRpLT5UaWxl
Um93czsKKworICAgIGlmKCF0aS0+dGlsZV9zaXplX2luX2ZoKQorICAgICAgICBmcmVlKHRpLT50
aWxlX3NpemVfaW5fZmgpOworCisgICAgLy8gQHRvZG8gcmVtZW1iZXIgdG8gZnJlZSBpdAorICAg
IHRpLT50aWxlX3NpemVfaW5fZmggPSBtYWxsb2Moc2l6ZW9mKHVpbnQzMl90KSAqIHRpLT5OdW1U
aWxlcyk7CisKKyAgICBmb3IoIGkgPSAwOyBpIDwgdGktPk51bVRpbGVzIDsgaSsrICkKKyAgICAg
ICAgdGktPnRpbGVfc2l6ZV9pbl9maFtpXSA9IGdldF9iaXRzKGdiLCAzMik7CisKKyAgICByZXR1
cm4gMDsKK30KKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0
LWxpbS1hcHYtMDQuaHRtbCNuYW1lLWJ5dGVfYWxpZ25lZAorLy8gYnl0ZV9hbGlnbmVkKCApIGlz
IHNwZWNpZmllZCBhcyBmb2xsb3dzOgorLy8g4oCUIElmIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlu
IHRoZSBiaXRzdHJlYW0gaXMgb24gYSBieXRlIGJvdW5kYXJ5LCBpLmUuLCB0aGUgbmV4dCBiaXQg
aW4gdGhlIGJpdHN0cmVhbSBpcyB0aGUgZmlyc3QgYml0IGluIGEgYnl0ZSwgdGhlIHJldHVybiB2
YWx1ZSBvZiBieXRlX2FsaWduZWQoICkgaXMgZXF1YWwgdG8gVFJVRS4KKy8vIOKAlCBPdGhlcndp
c2UsIHRoZSByZXR1cm4gdmFsdWUgb2YgYnl0ZV9hbGlnbmVkKCApIGlzIGVxdWFsIHRvIEZBTFNF
LgorLy8KK3N0YXRpYyBpbnQgYnl0ZV9hbGlnbmVkKEdldEJpdENvbnRleHQgKmdiKQoreworICAg
IGludCBiaXRzX2NvdW50ID0gZ2V0X2JpdHNfY291bnQoZ2IpOworICAgIGlmIChiaXRzX2NvdW50
ICUgOCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30K
KworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYt
MDQuaHRtbCNuYW1lLWJ5dGUtYWxpZ25tZW50CitpbnQgZmZfYXB2X2J5dGVfYWxpZ25tZW50KEdl
dEJpdENvbnRleHQgKmdiLCBBUFZCeXRlQWxpZ25lbW50ICpiYSkKK3sKKyAgICB3aGlsZSghYnl0
ZV9hbGlnbmVkKGdiKSkKKyAgICAgICAgYmEtPmFsaWdubWVudF9iaXRfZXF1YWxfdG9femVybyA9
IGdldF9iaXRzMShnYik7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEBzZWUgaHR0cHM6Ly93d3cu
aWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1xdWFudGl6YXRp
b24tbWF0cml4CitpbnQgZmZfYXB2X3F1YW50aXphdGlvbl9tYXRyaXgoR2V0Qml0Q29udGV4dCAq
Z2IsIGludCBudW1fY29tcCwgQVBWUXVhbnRpemF0aW9uTWF0cml4ICpxbSkKK3sKKyAgICBmb3Io
IGludCBjSWR4ID0gMDsgY0lkeCA8IG51bV9jb21wOyBjSWR4ICsrICkgeworICAgICAgICBmb3Io
IGludCB5ID0gMDsgeSA8IDg7IHkgKysgKSB7CisgICAgICAgICAgICBmb3IoIGludCB4ID0gMDsg
eCA8IDg7IHggKysgKQorICAgICAgICAgICAgICAgIHFtLT5xX21hdHJpeFsgY0lkeCBdWyB4IF1b
IHkgXSA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKworLy8gaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0
Lmh0bWwjbmFtZS1mcmFtZS1pbmZvcm1hdGlvbgoraW50IGZmX2Fwdl9wYXJzZV9mcmFtZV9pbmZv
KEdldEJpdENvbnRleHQgKmdiLCBBUFZGcmFtZUluZm8gKmZyYW1lX2luZm8pCit7CisgICAgZnJh
bWVfaW5mby0+cHJvZmlsZV9pZGMgICAgICAgICAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDgp
OworICAgIGZyYW1lX2luZm8tPmxldmVsX2lkYyAgICAgICAgICAgICAgICAgICAgICA9IGdldF9i
aXRzKGdiLCA4KTsKKyAgICBmcmFtZV9pbmZvLT5iYW5kX2lkYyAgICAgICAgICAgICAgICAgICAg
ICAgPSBnZXRfYml0cyhnYiwgMyk7CisgICAgZnJhbWVfaW5mby0+cmVzZXJ2ZWRfemVyb181Yml0
cyAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDUpOworICAgIGZyYW1lX2luZm8tPmZyYW1lX3dp
ZHRoICAgICAgICAgICAgICAgICAgICA9IGdldF9iaXRzKGdiLCAyNCk7CisgICAgZnJhbWVfaW5m
by0+ZnJhbWVfaGVpZ2h0ICAgICAgICAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDI0KTsKKyAg
ICBmcmFtZV9pbmZvLT5jaHJvbWFfZm9ybWF0X2lkYyAgICAgICAgICAgICAgPSBnZXRfYml0cyhn
YiwgNCk7CisgICAgZnJhbWVfaW5mby0+Yml0X2RlcHRoX21pbnVzOCAgICAgICAgICAgICAgID0g
Z2V0X2JpdHMoZ2IsIDQpOworICAgIGZyYW1lX2luZm8tPmNhcHR1cmVfdGltZV9kaXN0YW5jZSAg
ICAgICAgICA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICBmcmFtZV9pbmZvLT5yZXNlcnZlZF96ZXJv
XzhiaXRzICAgICAgICAgICAgPSBnZXRfYml0cyhnYiwgOCk7CisgICAgCisgICAgcmV0dXJuIDA7
Cit9CisKK3N0YXRpYyBpbnQgbnVtX2NvbXBvbmVudChpbnQgY2hyb21hX2Zvcm1hdF9pZGMpIHsK
KyAgICBpbnQgTnVtQ29tcHMgPSAwOworICAgIAorICAgIHN3aXRjaCAoY2hyb21hX2Zvcm1hdF9p
ZGMpCisgICAgeworICAgIGNhc2UgMDoKKyAgICAgICAgTnVtQ29tcHMgPSAxOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDI6CisgICAgY2FzZSAzOgorICAgICAgICBOdW1Db21wcyA9IDM7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgTnVtQ29tcHMgPSA0OworICAgICAg
ICBicmVhazsKKyAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIE51bUNvbXBzOworfQorCitzdGF0aWMgaW50IHN1Yl93aWR0aF9jKGludCBjaHJvbWFf
Zm9ybWF0X2lkYykgeworICAgIGludCBTdWJXaWR0aEMgPSAwOworICAgIAorICAgIHN3aXRjaCAo
Y2hyb21hX2Zvcm1hdF9pZGMpCisgICAgeworICAgIGNhc2UgMDoKKyAgICAgICAgU3ViV2lkdGhD
ID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBTdWJXaWR0aEMgPSAy
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIFN1YldpZHRoQyA9IDE7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgU3ViV2lkdGhDID0gMTsKKyAgICAg
ICAgYnJlYWs7CisgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiBTdWJXaWR0aEM7Cit9CisKK3N0YXRpYyBpbnQgYXB2X3BhcnNlX3BidV9oZWFkZXIo
R2V0Qml0Q29udGV4dCAqZ2IsIEFQVlBCVUhlYWRlciAqcGJ1aCkKK3sKKyAgICBwYnVoLT5wYnVf
dHlwZSAgICAgICAgICAgICAgICAgICAgICA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICBwYnVoLT5n
cm91cF9pZCAgICAgICAgICAgICAgICAgICAgICA9IGdldF9iaXRzKGdiLCAxNik7CisgICAgcGJ1
aC0+cmVzZXJ2ZWRfemVyXzhiaXRzICAgICAgICAgICAgPSBnZXRfYml0cyhnYiwgOCk7CisgICAg
ICAgIAorICAgIHJldHVybiAwOworfQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2Fy
Y2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtZnJhbWUtaGVhZGVyCisKK2ludCBm
Zl9hcHZfcGFyc2VfZnJhbWVfaGVhZGVyKEdldEJpdENvbnRleHQgKmdiLCBBUFZGcmFtZURhdGFI
ZWFkZXIgKmZyYW1lX2hlYWRlcikKK3sKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBpbnQgTnVtQ29t
cHMgPSBBUFZfQ09MT1JfQ09NUF9OVU07CisKKyAgICByZXQgPSBmZl9hcHZfcGFyc2VfZnJhbWVf
aW5mbyhnYiwgJmZyYW1lX2hlYWRlci0+ZnJhbWVfaW5mbyk7CisgICAgCisgICAgZnJhbWVfaGVh
ZGVyLT5yZXNlcnZlZF96ZXJvXzhiaXRzID0gZ2V0X2JpdHMoZ2IsIDgpOworICAgIGZyYW1lX2hl
YWRlci0+Y29sb3JfZGVzY3JpcHRpb25fcHJlc2VudF9mbGFnID0gZ2V0X2JpdHMoZ2IsIDEpOwor
CisgICAgaWYoZnJhbWVfaGVhZGVyLT5jb2xvcl9kZXNjcmlwdGlvbl9wcmVzZW50X2ZsYWcpIHsK
KyAgICAgICAgZnJhbWVfaGVhZGVyLT5jb2xvcl9wcmltYXJpZXMgPSBnZXRfYml0cyhnYiwgOCk7
CisgICAgICAgIGZyYW1lX2hlYWRlci0+dHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzID0gZ2V0X2Jp
dHMoZ2IsIDgpOworICAgICAgICBmcmFtZV9oZWFkZXItPm1hdHJpeF9jb2VmZmljaWVudHMgPSBn
ZXRfYml0cyhnYiwgOCk7CisgICAgfQorICAgIAorICAgIGZyYW1lX2hlYWRlci0+dXNlX3FfbWF0
cml4ID0gZ2V0X2JpdHMoZ2IsIDEpOworCisgICAgTnVtQ29tcHMgPSBudW1fY29tcG9uZW50KGZy
YW1lX2hlYWRlci0+ZnJhbWVfaW5mby5jaHJvbWFfZm9ybWF0X2lkYyk7CisgICAgaWYoTnVtQ29t
cHMgPT0gMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIGlmKGZyYW1l
X2hlYWRlci0+dXNlX3FfbWF0cml4KQorICAgICAgICByZXQgPSBmZl9hcHZfcXVhbnRpemF0aW9u
X21hdHJpeChnYiwgTnVtQ29tcHMsICZmcmFtZV9oZWFkZXItPnF1YW50aXphdGlvbl9tYXRyaXgp
OworCisgICAgZmZfYXB2X3RpbGVfaW5mbyhnYiwgZnJhbWVfaGVhZGVyLCAmZnJhbWVfaGVhZGVy
LT50aWxlX2luZm8pOworICAgIGZyYW1lX2hlYWRlci0+cmVzZXJ2ZWRfemVyb184Yml0c18yID0g
Z2V0X2JpdHMoZ2IsIDgpOworCisgICAgZmZfYXB2X2J5dGVfYWxpZ25tZW50KGdiLCAmZnJhbWVf
aGVhZGVyLT5ieXRlX2FsaWduZW50KTsKKworICAgIHJldHVybiByZXQ7Cit9CisKKy8vIEBzZWUg
aHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFt
ZS1wcm9jZXNzLWZvci12YXJpYWJsZS1sZW5ndGgtCitzdGF0aWMgaW50IHJlYWRfdmxjKEdldEJp
dENvbnRleHQgKmdiLCB1aW50MzJfdCBrUGFyYW0pCit7CisKKyAgICB1aW50MzJfdCBzeW1ib2xW
YWx1ZSA9IDA7CisgICAgdWludDhfdCBwYXJzZUV4cEdvbG9tYiA9IDE7CisgICAgdWludDMyX3Qg
ayA9IGtQYXJhbTsKKyAgICB1aW50MzJfdCBzdG9wTG9vcCA9IDA7CisKKyAgICBpZiggZ2V0X2Jp
dHMoZ2IsIDEpID09IDEgKQorICAgICAgICBwYXJzZUV4cEdvbG9tYiA9IDA7CisgICAgZWxzZSB7
CisgICAgICAgIGlmKCBnZXRfYml0cyhnYiwgMSkgPT0gMCApIHsKKyAgICAgICAgICAgIHN5bWJv
bFZhbHVlICs9ICggMSA8PCBrICk7CisgICAgICAgICAgICBwYXJzZUV4cEdvbG9tYiA9IDA7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzeW1ib2xWYWx1ZSArPSAoIDIgPDwgayApOwor
ICAgICAgICAgICAgcGFyc2VFeHBHb2xvbWIgPSAxOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYoIHBhcnNlRXhwR29sb21iICkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiggZ2V0
X2JpdHMoZ2IsIDEpID09IDEgKQorICAgICAgICAgICAgICAgIHN0b3BMb29wID0gMTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHN5bWJvbFZhbHVlICs9ICggMSA8PCBrICk7
CisgICAgICAgICAgICAgICAgaysrOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlKCAh
c3RvcExvb3AgKTsKKyAgICB9CisKKyAgICBpZiggayA+IDAgKQorICAgICAgICBzeW1ib2xWYWx1
ZSArPSBnZXRfYml0cyhnYiwgayk7CisKKyAgICByZXR1cm4gc3ltYm9sVmFsdWU7Cit9CisKKy8v
IEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0
bWwjbmFtZS1hYy1jb2VmZmljaWVudC1jb2RpbmcKK3N0YXRpYyB2b2lkIGFjX2NvZWZmX2NvZGlu
ZyggR2V0Qml0Q29udGV4dCAqZ2IsIHVpbnQzMl90IFByZXYxc3RBY0xldmVsLCBpbnQzMl90IFRy
YW5zQ29lZmZbQVBWX0NPTE9SX0NPTVBfTlVNXVtBUFZfTUJfV0lEVEhdW0FQVl9NQl9IRUlHSFRd
LCB1aW50MzJfdCB4MCwgdWludDMyX3QgeTAsIGludCBsb2cyQmxrV2lkdGgsIGludCBsb2cyQmxr
SGVpZ2h0LCBpbnQgY0lkeCApCit7CisgICAgaW50IHNjYW5Qb3MgPSAxOworICAgIGludCBmaXJz
dEFDID0gMTsKKyAgICBpbnQgUHJldkxldmVsID0gUHJldjFzdEFjTGV2ZWw7CisgICAgaW50IFBy
ZXZSdW4gPSAwOworCisgICAgZG8geworICAgICAgICBpbnQga1BhcmFtID0gZmZhcHZfY2xpcDMo
IDAsIDIsIFByZXZSdW4gPj4gMiApOworICAgICAgICBpbnQgY29lZmZfemVyb19ydW4gPSByZWFk
X3ZsYyhnYiwga1BhcmFtKTsgLy8gaCh2KQorCisgICAgICAgIGZvciggaW50IGkgPSAwOyBpIDwg
Y29lZmZfemVyb19ydW47IGkrKyApIHsKKyAgICAgICAgICAgIGludCBibGtQb3MgPSBTY2FuT3Jk
ZXJbIHNjYW5Qb3MgXTsKKyAgICAgICAgICAgIGludCB4QyA9IGJsa1BvcyAmICggKCAxIDw8IGxv
ZzJCbGtXaWR0aCApIC0gMSApOworICAgICAgICAgICAgaW50IHlDID0gYmxrUG9zID4+IGxvZzJC
bGtXaWR0aDsKKyAgICAgICAgICAgIFRyYW5zQ29lZmZbIGNJZHggXVsgeDAgKyB4QyBdWyB5MCAr
IHlDIF0gPSAwOworICAgICAgICAgICAgc2NhblBvcysrOworICAgICAgICB9CisgICAgICAgIFBy
ZXZSdW4gPSBjb2VmZl96ZXJvX3J1bjsKKyAgICAgICAgaWYoIHNjYW5Qb3MgPCAoIDEgPDwgKCBs
b2cyQmxrV2lkdGggKyBsb2cyQmxrSGVpZ2h0ICkgKSApIHsKKyAgICAgICAgICAgIGludCBrUGFy
YW0gPSBmZmFwdl9jbGlwMyggMCwgNCwgUHJldkxldmVsID4+IDIgKTsKKyAgICAgICAgICAgIGlu
dCBhYnNfYWNfY29lZmZfbWludXMxID0gcmVhZF92bGMoZ2IsIGtQYXJhbSk7CisKKyAgICAgICAg
ICAgIHVpbnQ4X3Qgc2lnbl9hY19jb2VmZiA9IGdldF9iaXRzMShnYik7CisgICAgICAgICAgICBp
bnQgbGV2ZWwgPSAoIGFic19hY19jb2VmZl9taW51czEgKyAxICkgKiAoIDEgLSAyICogc2lnbl9h
Y19jb2VmZiApOworICAgICAgICAgICAgdWludDE2X3QgYmxrUG9zID0gU2Nhbk9yZGVyWyBzY2Fu
UG9zIF07CisgICAgICAgICAgICBpbnQgeEMgPSBibGtQb3MgJiAoICggMSA8PCBsb2cyQmxrV2lk
dGggKSAtIDEgKTsKKyAgICAgICAgICAgIGludCB5QyA9IGJsa1BvcyA+PiBsb2cyQmxrV2lkdGg7
CisgICAgICAgICAgICBUcmFuc0NvZWZmWyBjSWR4IF1bIHgwICsgeEMgXVsgeTAgKyB5QyBdID0g
bGV2ZWw7CisgICAgICAgICAgICBzY2FuUG9zKys7CisgICAgICAgICAgICBQcmV2TGV2ZWwgPSBh
YnNfYWNfY29lZmZfbWludXMxICsgMTsKKyAgICAgICAgICAgIGlmKCBmaXJzdEFDID09IDEgKSB7
CisgICAgICAgICAgICAgICAgZmlyc3RBQyA9IDA7CisgICAgICAgICAgICAgICAgUHJldjFzdEFj
TGV2ZWwgPSBQcmV2TGV2ZWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IHdoaWxl
ICggc2NhblBvcyA8ICggMSA8PCAoIGxvZzJCbGtXaWR0aCArIGxvZzJCbGtIZWlnaHQgKSApICk7
Cit9CisKKy8vIEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0t
YXB2LTA0Lmh0bWwjbmFtZS1tYWNyb2Jsb2NrLWxheWVyCitzdGF0aWMgaW50IG1hY3JvYmxvY2tf
bGF5ZXIoIEdldEJpdENvbnRleHQgKmdiLCBjb25zdCBBUFZGcmFtZURhdGFIZWFkZXIgKmZkaCwg
dWludDMyX3QgUHJldjFzdEFjTGV2ZWwsICB1aW50MzJfdCB4TWIsIHVpbnQzMl90IHlNYiwgdWlu
dDMyX3QgY0lkeCApCit7CisKKyAgICB1aW50MzJfdCBNYldpZHRoID0gQVBWX01CX1dJRFRIOwor
ICAgIHVpbnQzMl90IE1iSGVpZ2h0ID0gQVBWX01CX0hFSUdIVDsKKworICAgIC8vIEBzZWUgNi4y
IFNvdXJjZSwgZGVjb2RlZCBhbmQgb3V0cHV0IGZyYW1lIGZvcm1hdHMKKyAgICAvLyBAc2VlIFRh
YmxlIDIg4oCUIFN1YldpZHRoQyBhbmQgU3ViSGVpZ2h0QyB2YWx1ZXMgZGVyaXZlZCBmcm9tIGNo
cm9tYV9mb3JtYXRfaWRjCisgICAgdWludDMyX3QgU3ViV2lkdGhDID0gKGZkaC0+ZnJhbWVfaW5m
by5jaHJvbWFfZm9ybWF0X2lkYyA9PSAyKSA/IDIgOiAxOworICAgIHVpbnQzMl90IFN1YkhlaWdo
dEMgPSAxOworCisgICAgLy8gQHNlZSA2LjIgU291cmNlLCBkZWNvZGVkIGFuZCBvdXRwdXQgZnJh
bWUgZm9ybWF0cworICAgIHVpbnQzMl90IE1iV2lkdGhDID0gTWJXaWR0aCAvIFN1YldpZHRoQzsK
KyAgICB1aW50MzJfdCBNYkhlaWdodEMgPSBNYkhlaWdodCAvIFN1YkhlaWdodEM7CisKKyAgICB1
aW50MzJfdCBzdWJXID0gKCBjSWR4ID09IDAgKSA/IDEgOiBTdWJXaWR0aEM7CisgICAgdWludDMy
X3Qgc3ViSCA9ICggY0lkeCA9PSAwICkgPyAxIDogU3ViSGVpZ2h0QzsKKyAgICB1aW50MzJfdCBi
bGtXaWR0aCA9ICggY0lkeCA9PSAwICkgPyBNYldpZHRoIDogTWJXaWR0aEM7CisgICAgdWludDMy
X3QgYmxrSGVpZ2h0ID0gKCBjSWR4ID09IDAgKSA/IE1iSGVpZ2h0IDogTWJIZWlnaHRDOworCisg
ICAgdWludDMyX3QgVHJTaXplID0gODsKKworICAgIC8vIG1vdmVkIGZyb20gdGlsZV9kYXRhCisg
ICAgdWludDMyX3QgUHJldkRDID0gMDsKKyAgICB1aW50MzJfdCBQcmV2RGNEaWZmID0gQVBWX1BS
RVZfRENfRElGRjsKKworICAgIGludDMyX3QgVHJhbnNDb2VmZltBUFZfQ09MT1JfQ09NUF9OVU1d
W0FQVl9NQl9XSURUSF1bQVBWX01CX0hFSUdIVF07CisKKyAgICBmb3IoIGludCB5ID0gMDsgeSA8
IGJsa0hlaWdodDsgeSArPSBUclNpemUgKSB7CisgICAgICAgIGZvciggaW50IHggPSAwOyB4IDwg
YmxrV2lkdGg7IHggKz0gVHJTaXplICkgeworCisgICAgICAgICAgICBpbnQga1BhcmFtID0gZmZh
cHZfY2xpcDMoIDAsIDUsIFByZXZEY0RpZmYgPj4gMiApOworICAgICAgICAgICAgaW50IGFic19k
Y19jb2VmZl9kaWZmID0gcmVhZF92bGMoZ2IsIGtQYXJhbSk7IC8vICBoKHYpCisgICAgICAgICAg
ICBpbnQgc2lnbl9kY19jb2VmZl9kaWZmOyAvLyB1KDEpCisKKyAgICAgICAgICAgIGlmKCBhYnNf
ZGNfY29lZmZfZGlmZiApCisgICAgICAgICAgICAgICAgc2lnbl9kY19jb2VmZl9kaWZmID0gZ2V0
X2JpdHMxKGdiKTsgLy8gdSgxKQorCisgICAgICAgICAgICBUcmFuc0NvZWZmWyBjSWR4IF1bIHhN
YiAvIHN1YlcgKyB4IF1bIHlNYiAvIHN1YkggKyB5IF0gPSBQcmV2REMgKyBhYnNfZGNfY29lZmZf
ZGlmZiAqICggMSAtIDIgKiBzaWduX2RjX2NvZWZmX2RpZmYgKTsKKyAgICAgICAgICAgIFByZXZE
QyA9IFRyYW5zQ29lZmZbIGNJZHggXVsgeE1iIC8gc3ViVyArIHggXVsgeU1iIC8gc3ViSCArIHkg
XTsKKyAgICAgICAgICAgIFByZXZEY0RpZmYgPSBhYnNfZGNfY29lZmZfZGlmZjsKKyAgICAgICAg
ICAgIGFjX2NvZWZmX2NvZGluZyggZ2IsIFByZXYxc3RBY0xldmVsLCBUcmFuc0NvZWZmLCB4TWIg
LyBzdWJXICsgeCwgeU1iIC8gc3ViSCArIHksIGxvZzIoIFRyU2l6ZSApLCBsb2cyKCBUclNpemUg
KSwgY0lkeCApOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvLyBAc2Vl
IGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25h
bWUtdGlsZS1oZWFkZXIKK3N0YXRpYyBpbnQgdGlsZV9oZWFkZXIoR2V0Qml0Q29udGV4dCAqZ2Is
ICBjb25zdCBBUFZGcmFtZURhdGFIZWFkZXIgKmZkaCwgQVBWVGlsZUhlYWRlciAqdGgpCit7Cisg
ICAgaW50IE51bUNvbXBzID0gbnVtX2NvbXBvbmVudChmZGgtPmZyYW1lX2luZm8uY2hyb21hX2Zv
cm1hdF9pZGMpOworICAgIAorICAgIHRoLT50aWxlX2hlYWRlcl9zaXplID0gZ2V0X2JpdHMoZ2Is
IDE2KTsKKyAgICB0aC0+dGlsZV9pbmRleCA9IGdldF9iaXRzKGdiLCAxNik7CisgICAgCisgICAg
Zm9yKGludCBpPTA7IGk8TnVtQ29tcHM7IGkrKykgeworICAgICAgICB0aC0+dGlsZV9kYXRhX3Np
emVbaV0gPSBnZXRfYml0cyhnYiwgMzIpOworICAgIH0KKyAgICAKKyAgICBmb3IoaW50IGk9MDsg
aTxOdW1Db21wczsgaSsrKSB7CisgICAgICAgIHRoLT50aWxlX3FwW2ldID0gZ2V0X2JpdHMoZ2Is
IDgpOworICAgIH0KKworICAgIHRoLT5yZXNlcnZlZF96ZXJvXzhiaXRzID0gZ2V0X2JpdHMoZ2Is
IDgpOworICAgIAorICAgIGZmX2Fwdl9ieXRlX2FsaWdubWVudChnYiwgJnRoLT5ieXRlX2FsaWdu
ZW50KTsKKworICAgIHJldHVybiAwOworfQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3Jn
L2FyY2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtdGlsZS1kYXRhCisKKy8vIEBw
YXJhbSBjSWR4IHNwZWNpZnlpbmcgdGhlIGNvbG9yIGNvbXBvbmVudCBvZiB0aGUgY3VycmVudCBi
bG9jaywKK3N0YXRpYyBpbnQgdGlsZV9kYXRhKEdldEJpdENvbnRleHQgKmdiLCBjb25zdCBBUFZG
cmFtZURhdGFIZWFkZXIgKmZkaCwgQVBWVGlsZSAqdGlsZSwgdWludDhfdCB0aWxlSWR4LCB1aW50
OF90IGNJZHgpCit7CisgICAgaW50IE1iV2lkdGggPSBBUFZfTUJfV0lEVEg7CisgICAgaW50IE1i
SGVpZ2h0ID0gQVBWX01CX0hFSUdIVDsKKworICAgIHVpbnQzMl90IHgwID0gZmRoLT50aWxlX2lu
Zm8uQ29sU3RhcnRzWyB0aWxlSWR4ICUgZmRoLT50aWxlX2luZm8uVGlsZUNvbHMgXTsKKyAgICB1
aW50MzJfdCB5MCA9IGZkaC0+dGlsZV9pbmZvLlJvd1N0YXJ0c1sgdGlsZUlkeCAvIGZkaC0+dGls
ZV9pbmZvLlRpbGVDb2xzIF07CisKKyAgICB1aW50MzJfdCBudW1NYkNvbHNJblRpbGUgPSAoIGZk
aC0+dGlsZV9pbmZvLkNvbFN0YXJ0c1sgdGlsZUlkeCAlIGZkaC0+dGlsZV9pbmZvLlRpbGVDb2xz
ICsgMSBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGZkaC0+dGlsZV9pbmZv
LkNvbFN0YXJ0c1sgdGlsZUlkeCAlIGZkaC0+dGlsZV9pbmZvLlRpbGVDb2xzIF0gKSAvIE1iV2lk
dGg7CisKKyAgICB1aW50MzJfdCBudW1NYlJvd3NJblRpbGUgPSAoIGZkaC0+dGlsZV9pbmZvLlJv
d1N0YXJ0c1sgdGlsZUlkeCAvIGZkaC0+dGlsZV9pbmZvLlRpbGVDb2xzICsgMSBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtIGZkaC0+dGlsZV9pbmZvLlJvd1N0YXJ0c1sgdGls
ZUlkeCAvIGZkaC0+dGlsZV9pbmZvLlRpbGVDb2xzXSApIC8gTWJIZWlnaHQ7CisKKyAgICB1aW50
MzJfdCBudW1NYnNJblRpbGUgPSBudW1NYkNvbHNJblRpbGUgKiBudW1NYlJvd3NJblRpbGU7CisK
KyAgICB1aW50MzJfdCBQcmV2MXN0QWNMZXZlbCA9IDA7CisgICAgZm9yKCBpbnQgaSA9IDA7IGkg
PCBudW1NYnNJblRpbGU7IGkrKyApIHsKKyAgICAgICAgdWludDMyX3QgeE1iID0geDAgKyAoIGkg
JSBudW1NYkNvbHNJblRpbGUgKSAqIE1iV2lkdGg7CisgICAgICAgIHVpbnQzMl90IHlNYiA9IHkw
ICsgKCBpIC8gbnVtTWJDb2xzSW5UaWxlICkgKiBNYkhlaWdodDsKKyAgICAgICAgbWFjcm9ibG9j
a19sYXllciggZ2IsIGZkaCwgUHJldjFzdEFjTGV2ZWwsIHhNYiwgeU1iLCBjSWR4ICk7CisgICAg
fQorICAgIGZmX2Fwdl9ieXRlX2FsaWdubWVudChnYiwgJnRpbGUtPnRpbGVfZGF0YS0+Ynl0ZV9h
bGlnbmVudCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRm
Lm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNuYW1lLXRpbGUKK2ludCBmZl9h
cHZfcGFyc2VfdGlsZShHZXRCaXRDb250ZXh0ICpnYiwgY29uc3QgQVBWRnJhbWVEYXRhSGVhZGVy
ICpmZGgsIEFQVlRpbGUgKnRpbGUsIHVpbnQ4X3QgdGlsZUlkeCkKK3sKKyAgICBpbnQgcmV0ID0g
MDsKKyAgICBpbnQgTnVtQ29tcHMgPSBudW1fY29tcG9uZW50KGZkaC0+ZnJhbWVfaW5mby5jaHJv
bWFfZm9ybWF0X2lkYyk7CisKKyAgICB0aWxlX2hlYWRlcihnYiwgZmRoLCAmdGlsZS0+dGlsZV9o
ZWFkZXIpOworCisgICAgZm9yKGludCBpPTA7IGk8TnVtQ29tcHM7IGkrKykgeworICAgICAgICB0
aWxlX2RhdGEoZ2IsIGZkaCwgdGlsZSwgdGlsZUlkeCwgaSk7CisgICAgfQorCisgICAgcmV0dXJu
IHJldDsKK30KKwordm9pZCBmZl9hcHZfcHNfZnJlZShBUFZQYXJhbVNldHMgKnBzKQoreworICAg
IEFQVkZyYW1lRGF0YSogZmQgPSAmcHMtPmZyYW1lX2RhdGE7CisgICAgaW50IG51bV90aWxlcyA9
IGZkLT5mcmFtZV9kYXRhX2hlYWRlci50aWxlX2luZm8uTnVtVGlsZXM7CisKKyAgICBmb3IoIGlu
dCBpID0gMDsgaSA8IG51bV90aWxlczsgaSsrICkKKyAgICAgICAgZnJlZShmZC0+dGlsZXNbaV0p
OworCisgICAgZnJlZShmZC0+dGlsZXMpOworfQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYu
b3JnL2FyY2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtbWV0YWRhdGEtcGF5bG9h
ZC1zeW50YXgKK3N0YXRpYyBpbnQgbWV0YWRhdGFfcGF5bG9hZCggR2V0Qml0Q29udGV4dCAqZ2Is
IHVpbnQzMl90IG1ldGFkYXRhU2l6ZSApCit7CisgICAgZG8geworICAgICAgICB1aW50MTZfdCBz
aXplOworCisgICAgICAgIHNraXBfYml0cyhnYiwgMTYpOyAgICAgICAgICAvLyB1KDE2KQorCisg
ICAgICAgIHNpemUgPSBnZXRfYml0cyhnYiwgMTYpOyAgICAvLyB1KDE2KQorCisgICAgICAgIHNr
aXBfYml0cyhnYiwgc2l6ZSAqIDgpOyAgICAvLyB2YWx1ZSB1KHNpemUqOCk7CisKKyAgICB9IHdo
aWxlIChnZXRfYml0cyhnYiwgMTYpICE9IDB4RkZGRik7CisKKyAgICByZXR1cm4gMDsKK30KKwor
Ly8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQu
aHRtbCNuYW1lLW1ldGFkYXRhCitpbnQgZmZfYXB2X3BhcnNlX21ldGFkYXRhKEdldEJpdENvbnRl
eHQgKmdiLCBBUFZGcmFtZURhdGEgKmZkKQoreworICAgIHVpbnQxNl90IG1ldGFkYXRhX251bSA9
IGdldF9iaXRzKGdiLCAxNik7IC8vIHUoMTYpCisgICAgZm9yKGludCBpID0gMDsgaSA8IG1ldGFk
YXRhX251bTsgaSsrICkgeworICAgICAgICB1aW50MzJfdCBtZXRhZGF0YV9zaXplX21pbnVzMSA9
IGdldF9iaXRzX2xvbmcoZ2IsIDMyKTsgLy8gdSgzMikKKyAgICAgICAgbWV0YWRhdGFfcGF5bG9h
ZCggZ2IsIG1ldGFkYXRhX3NpemVfbWludXMxICsgMSApOworICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1h
cHYtMDQuaHRtbCNuYW1lLWZpbGxlcgoraW50IGZmX2Fwdl9wYXJzZV9maWxsZXJfZGF0YShHZXRC
aXRDb250ZXh0ICpnYiwgQVBWRnJhbWVEYXRhICpmZCkKK3sKKyAgICB1aW50OF90IGZmX2J5dGUg
PSAwOworICAgIHdoaWxlKCAgZ2V0X2JpdHMoZ2IsIDgpID09IDB4RkYgKQorICAgICAgICBmZl9i
eXRlID0gMHhmZjsgLy8gZXF1YWwgdG8gMHhGRgorCisgICAgcmV0dXJuIGZmX2J5dGU7Cit9CmRp
ZmYgLS1naXQgYS9saWJhdmNvZGVjL2Fwdl9wcy5oIGIvbGliYXZjb2RlYy9hcHZfcHMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xNzgwOWRkNmJmCi0tLSAvZGV2L251
bGwKKysrIGIvbGliYXZjb2RlYy9hcHZfcHMuaApAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAyNSBEYXdpZCBLb3ppbnNraSA8ZC5rb3ppbnNraUBzYW1zdW5nLmNvbT4K
KyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworLyoqCisgKiBAZmlsZQor
ICogQVBWIGRlY29kZXIvcGFyc2VyIHNoYXJlZCBjb2RlCisgKi8KKworI2lmbmRlZiBBVkNPREVD
X0FQVl9QU19ICisjZGVmaW5lIEFWQ09ERUNfQVBWX1BTX0gKKworI2luY2x1ZGUgPHN0ZGludC5o
PgorCisjaW5jbHVkZSAiYXB2LmgiCisjaW5jbHVkZSAiZ2V0X2JpdHMuaCIKKworLyogc2l6ZSBv
ZiBibG9jayAqLworI2RlZmluZSBBUFZfTE9HMl9CTE9DSyAgICAgICAgICAgICAgICAgICgzKQor
I2RlZmluZSBBUFZfQkxPQ0sgICAgICAgICAgICAgICAgICAgICAgICgxPDxBUFZfTE9HMl9CTE9D
SykKKyNkZWZpbmUgQVBWX0JMT0NLX1cgICAgICAgICAgICAgICAgICAgICAoMTw8QVBWX0xPRzJf
QkxPQ0spCisjZGVmaW5lIEFQVl9CTE9DS19IICAgICAgICAgICAgICAgICAgICAgKDE8PEFQVl9M
T0cyX0JMT0NLKQorI2RlZmluZSBBUFZfQkxPQ0tfRCAgICAgICAgICAgICAgICAgICAgIChBUFZf
QkxPQ0tfVyAqIEFQVl9CTE9DS19IKQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2Fy
Y2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI3NlY3Rpb24tNS4zLjE3Cit0eXBlZGVmIHN0
cnVjdCBBUFZCeXRlQWxpZ25lbW50IHsKKyAgICB1aW50OF90IGFsaWdubWVudF9iaXRfZXF1YWxf
dG9femVybzsgLyogZXF1YWwgdG8gMCovIC8vIGYoMSkKK30gQVBWQnl0ZUFsaWduZW1udDsKKwor
Ly8gVGhlIHN0dXJjdHVyZSByZWZsZWN0cyBUaWxlIEhlYWRlciBsYXlvdXQKKy8vIEBzZWUgaHR0
cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjc2VjdGlv
bi01LjMuMTMKKworLy8gVGhlIGZvbGxvd2luZyBkZXNjcmlwdG9ycyBzcGVjaWZ5IHRoZSBwYXJz
aW5nIHByb2Nlc3Mgb2YgZWFjaCBlbGVtZW50CisvLyB1KG4pIC0gdW5zaWduZWQgaW50ZWdlciB1
c2luZyBuIGJpdHMKKy8vIHVlKHYpIC0gdW5zaWduZWQgaW50ZWdlciAwLXRoIG9yZGVyIEV4cF9H
b2xvbWItY29kZWQgc3ludGF4IGVsZW1lbnQgd2l0aCB0aGUgbGVmdCBiaXQgZmlyc3QKK3R5cGVk
ZWYgc3RydWN0IEFQVlRpbGVIZWFkZXIgeworICAgIHVpbnQxNl90IHRpbGVfaGVhZGVyX3NpemU7
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1KDE2KQorICAgIHVpbnQxNl90IHRpbGVfaW5k
ZXg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1KDE2KQorCisgICAgdWludDMy
X3QgdGlsZV9kYXRhX3NpemVbQVBWX0NPTE9SX0NPTVBfTlVNXTsgICAgICAgIC8vIHUoMzIpCisK
KworICAgIHVpbnQ4X3QgdGlsZV9xcFtBUFZfQ09MT1JfQ09NUF9OVU1dOyAgICAgICAgICAgICAg
ICAvLyB1KDgpCisgICAgdWludDhfdCByZXNlcnZlZF96ZXJvXzhiaXRzOyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHUoOCkKKyAgICAKKyAgICBBUFZCeXRlQWxpZ25lbW50IGJ5dGVfYWxpZ25l
bnQ7CisKK30gQVBWVGlsZUhlYWRlcjsKKworLy8gVGhlIHN0dXJjdHVyZSByZWZsZWN0cyBUaWxl
IEluZm8gc3R1cmN0dXJlIGxheW91dAorLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNo
aXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNzZWN0aW9uLTUuMy44CisvLworLy8gVGhlIGZv
bGxvd2luZyBkZXNjcmlwdG9ycyBzcGVjaWZ5IHRoZSBwYXJzaW5nIHByb2Nlc3Mgb2YgZWFjaCBl
bGVtZW50CisvLyB1KG4pIC0gdW5zaWduZWQgaW50ZWdlciB1c2luZyBuIGJpdHMKKy8vIHVlKHYp
IC0gdW5zaWduZWQgaW50ZWdlciAwLXRoIG9yZGVyIEV4cF9Hb2xvbWItY29kZWQgc3ludGF4IGVs
ZW1lbnQgd2l0aCB0aGUgbGVmdCBiaXQgZmlyc3QKK3R5cGVkZWYgc3RydWN0IEFQVlRpbGVJbmZv
IHsKKyAgICB1aW50MzJfdCB0aWxlX3dpZHRoX2luX21iczsgICAgICAgICAgICAgICAgICAgICAv
LyB1KDIwKQorICAgIHVpbnQzMl90IHRpbGVfaGVpZ2h0X2luX21iczsgICAgICAgICAgICAgICAg
ICAgIC8vIHUoMjApCisgICAgdWludDhfdCAgdGlsZV9zaXplX3ByZXNlbnRfaW5fZmhfZmxhZzsg
ICAgICAgICAgLy8gdSgxKQorICAgIHVpbnQzMl90ICp0aWxlX3NpemVfaW5fZmg7ICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRhYmxlIG9mIHNpemUgTnVtVGlsZXM7IGVsZW1lbnRzIG9mIHUoMzIp
IHR5cGUKKworICAgIHVpbnQzMl90ICpDb2xTdGFydHM7IC8vIHRhYmxlIG9mIHNpemUgRnJhbWVX
aWR0aEluTWJzWQorICAgIHVpbnQzMl90ICpSb3dTdGFydHM7IC8vIHRhYmxlIG9mIHNpemUgRnJh
bWVIZWlnaHRJbk1ic1kKKyAgICB1aW50MzJfdCBUaWxlQ29sczsKKyAgICB1aW50MzJfdCBUaWxl
Um93czsKKyAgICB1aW50MzJfdCBOdW1UaWxlczsKKworfSBBUFZUaWxlSW5mbzsKKworLy8gQHNl
ZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNu
YW1lLXF1YW50aXphdGlvbi1tYXRyaXgKK3R5cGVkZWYgc3RydWN0IEFQVlF1YW50aXphdGlvbk1h
dHJpeCB7CisgICAgdWludDhfdCBxX21hdHJpeFszXVs4XVs4XTsKK30gQVBWUXVhbnRpemF0aW9u
TWF0cml4OworCisvLyBAc2VlICBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0
LWxpbS1hcHYtMDQuaHRtbCNuYW1lLWZyYW1lLWluZm9ybWF0aW9uCisvLyA1LjMuNi4gRnJhbWUg
aW5mb3JtYXRpb24KK3R5cGVkZWYgc3RydWN0IEFQVkZyYW1lSW5mbyB7CisgICAgdWludDhfdCBw
cm9maWxlX2lkYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHUoOCkKKyAgICB1aW50
OF90IGxldmVsX2lkYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdSg4KQorICAg
IHVpbnQ4X3QgYmFuZF9pZGM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1KDMp
CisgICAgdWludDhfdCByZXNlcnZlZF96ZXJvXzViaXRzOyAgICAgICAgICAgICAgICAgICAgIC8v
IHUoNSkKKyAgICB1aW50MzJfdCBmcmFtZV93aWR0aDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdSgyNCkKKyAgICB1aW50MzJfdCBmcmFtZV9oZWlnaHQ7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdSgyNCkKKyAgICB1aW50OF90IGNocm9tYV9mb3JtYXRfaWRjOyAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdSg0KQorICAgIHVpbnQ4X3QgYml0X2RlcHRoX21pbnVzODsgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB1KDQpCisgICAgdWludDhfdCBjYXB0dXJlX3RpbWVfZGlz
dGFuY2U7ICAgICAgICAgICAgICAgICAgIC8vIHUoOCkKKyAgICB1aW50MTZfdCByZXNlcnZlZF96
ZXJvXzhiaXRzOyAgICAgICAgICAgICAgICAgICAgLy8gdSg4KQorfSBBUFZGcmFtZUluZm87CisK
K3R5cGVkZWYgc3RydWN0IEFQVkZyYW1lRGF0YUhlYWRlciB7CisgICAgCisgICAgc3RydWN0IEFQ
VkZyYW1lSW5mbyBmcmFtZV9pbmZvOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRfemVyb184Yml0czsg
ICAgICAgICAgICAgICAgICAgIC8vIHUoOCkKKworICAgIHVpbnQ4X3QgY29sb3JfZGVzY3JpcHRp
b25fcHJlc2VudF9mbGFnOyAgICAgICAgIC8vIHUoMSkKKyAgICB1aW50OF90IGNvbG9yX3ByaW1h
cmllczsgICAgICAgICAgICAgICAgICAgICAgICAvLyB1KDgpCisgICAgdWludDhfdCB0cmFuc2Zl
cl9jaGFyYWN0ZXJpc3RpY3M7ICAgICAgICAgICAgICAgLy8gdSg4KQorICAgIHVpbnQ4X3QgbWF0
cml4X2NvZWZmaWNpZW50czsgICAgICAgICAgICAgICAgICAgIC8vIHUoOCkKKworICAgIHVpbnQ4
X3QgdXNlX3FfbWF0cml4OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHUoMSkKKworICAg
IEFQVlF1YW50aXphdGlvbk1hdHJpeCBxdWFudGl6YXRpb25fbWF0cml4OworICAgIEFQVlRpbGVJ
bmZvIHRpbGVfaW5mbzsKKworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRfemVyb184Yml0c18yOyAgICAg
ICAgICAgICAgICAgIC8vIHUoOCkKKworICAgIEFQVkJ5dGVBbGlnbmVtbnQgYnl0ZV9hbGlnbmVu
dDsKKworfSBBUFZGcmFtZURhdGFIZWFkZXI7CisKKy8vIEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5v
cmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjc2VjdGlvbi01LjMuMwordHlwZWRl
ZiBzdHJ1Y3QgQVBWUEJVSGVhZGVyIHsKKyAgICB1aW50OF90IHBidV90eXBlOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB1KDgpCisgICAgdWludDhfdCBncm91cF9pZDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdSgxNikKKyAgICB1aW50OF90IHJlc2VydmVkX3pl
cl84Yml0czsgICAgICAgICAgICAgICAgICAgICAvLyB1KDgpCit9IEFQVlBCVUhlYWRlcjsKKwor
dHlwZWRlZiBzdHJ1Y3QgQVBWVGlsZURhdGEgeworICAgIHVpbnQzMl90IFByZXZEYzsKKyAgICB1
aW50MzJfdCBQcmV2RGNEaWZmOworICAgIHVpbnQzMl90IG51bU1iQ29sc0luVGlsZTsKKyAgICB1
aW50MzJfdCBudW1NYlJvd3NJblRpbGU7CisgICAgdWludDMyX3QgbnVtTWJzSW5UaWxlOworICAg
IHVpbnQzMl90IFByZXYxc3RBY0xldmVsOworCisgICAgQVBWQnl0ZUFsaWduZW1udCBieXRlX2Fs
aWduZW50OworfSBBUFZUaWxlRGF0YTsKKwordHlwZWRlZiBzdHJ1Y3QgQVBWVGlsZSB7CisgICAg
QVBWVGlsZUhlYWRlciB0aWxlX2hlYWRlcjsKKyAgICBBUFZUaWxlRGF0YSB0aWxlX2RhdGFbM107
Cit9IEFQVlRpbGU7CisKK3R5cGVkZWYgc3RydWN0IEFQVkZyYW1lRGF0YSB7CisgICAgQVBWRnJh
bWVEYXRhSGVhZGVyIGZyYW1lX2RhdGFfaGVhZGVyOworICAgIEFQVlRpbGUgKip0aWxlczsgLy8g
dGFibGUgb2YgcG9pbnRlcnMgdG8gZWxlbWVudHMgb2YgdHlwZSBBUFZUaWxlOyB0aGUgc2l6ZSBv
ZiB0YWJsZSBpcyBOdW1UaWxlcworfSBBUFZGcmFtZURhdGE7CisKK3R5cGVkZWYgc3RydWN0IEFQ
VlBhcmFtU2V0cyB7CisgICAgQVBWRnJhbWVEYXRhIGZyYW1lX2RhdGE7Cit9IEFQVlBhcmFtU2V0
czsKKworLy8gaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0
Lmh0bWwjbmFtZS1wcmltaXRpdmUtYml0c3RyZWFtLXVuaXQtaGUKK2ludCBmZl9hcHZfcGFyc2Vf
cGJ1X2hlYWRlcihHZXRCaXRDb250ZXh0ICpnYiwgQVBWUEJVSGVhZGVyICpmZGgpOworCisvLyBo
dHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNuYW1l
LWZyYW1lLWhlYWRlcgoraW50IGZmX2Fwdl9wYXJzZV9mcmFtZV9oZWFkZXIoR2V0Qml0Q29udGV4
dCAqZ2IsIEFQVkZyYW1lRGF0YUhlYWRlciAqZmRoKTsKKworLy8gaHR0cHM6Ly93d3cuaWV0Zi5v
cmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1mcmFtZS1pbmZvcm1hdGlv
bgoraW50IGZmX2Fwdl9wYXJzZV9mcmFtZV9pbmZvKEdldEJpdENvbnRleHQgKmdiLCBBUFZGcmFt
ZUluZm8gKmZyYW1lX2luZm8pOworCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp
dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtZnJhbWUtaW5mb3JtYXRpb24KK2ludCBm
Zl9hcHZfdGlsZV9pbmZvKEdldEJpdENvbnRleHQgKmdiLCBjb25zdCBBUFZGcmFtZURhdGFIZWFk
ZXIgKmZkaCwgQVBWVGlsZUluZm8gKnRpKTsKKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9y
Zy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNuYW1lLXRpbGUKK2ludCBmZl9hcHZf
cGFyc2VfdGlsZShHZXRCaXRDb250ZXh0ICpnYiwgY29uc3QgQVBWRnJhbWVEYXRhSGVhZGVyICpm
ZGgsIEFQVlRpbGUgKnRpbGUsIHVpbnQ4X3QgdGlsZUlkeCk7CisKKy8vIEBzZWUgaHR0cHM6Ly93
d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1ieXRlLWFs
aWdubWVudAoraW50IGZmX2Fwdl9ieXRlX2FsaWdubWVudChHZXRCaXRDb250ZXh0ICpnYiwgQVBW
Qnl0ZUFsaWduZW1udCAqYmEpOworCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp
dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtcXVhbnRpemF0aW9uLW1hdHJpeAoraW50
IGZmX2Fwdl9xdWFudGl6YXRpb25fbWF0cml4KEdldEJpdENvbnRleHQgKmdiLCBpbnQgbnVtX2Nv
bXAsIEFQVlF1YW50aXphdGlvbk1hdHJpeCAqcW0pOworCisvLyBAc2VlIGh0dHBzOi8vd3d3Lmll
dGYub3JnL2FyY2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtbWV0YWRhdGEKK2lu
dCBmZl9hcHZfcGFyc2VfbWV0YWRhdGEoR2V0Qml0Q29udGV4dCAqZ2IsIEFQVkZyYW1lRGF0YSAq
ZmQpOworCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hpdmUvaWQvZHJhZnQtbGlt
LWFwdi0wNC5odG1sI25hbWUtZmlsbGVyCitpbnQgZmZfYXB2X3BhcnNlX2ZpbGxlcl9kYXRhKEdl
dEJpdENvbnRleHQgKmdiLCBBUFZGcmFtZURhdGEgKmZkKTsKKwordm9pZCBmZl9hcHZfcHNfZnJl
ZShBUFZQYXJhbVNldHMgKnBzKTsKKworI2VuZGlmIC8qIEFWQ09ERUNfQVBWX1BTX0ggKi8KZGlm
ZiAtLWdpdCBhL2xpYmF2Y29kZWMvcGFyc2Vycy5jIGIvbGliYXZjb2RlYy9wYXJzZXJzLmMKaW5k
ZXggNTM4NzM1MWZkMC4uMjExNjRmMzc1MSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9wYXJzZXJz
LmMKKysrIGIvbGliYXZjb2RlYy9wYXJzZXJzLmMKQEAgLTI1LDYgKzI1LDcgQEAgZXh0ZXJuIGNv
bnN0IEFWQ29kZWNQYXJzZXIgZmZfYWFjX2xhdG1fcGFyc2VyOwogZXh0ZXJuIGNvbnN0IEFWQ29k
ZWNQYXJzZXIgZmZfYWMzX3BhcnNlcjsKIGV4dGVybiBjb25zdCBBVkNvZGVjUGFyc2VyIGZmX2Fk
eF9wYXJzZXI7CiBleHRlcm4gY29uc3QgQVZDb2RlY1BhcnNlciBmZl9hbXJfcGFyc2VyOworZXh0
ZXJuIGNvbnN0IEFWQ29kZWNQYXJzZXIgZmZfYXB2X3BhcnNlcjsKIGV4dGVybiBjb25zdCBBVkNv
ZGVjUGFyc2VyIGZmX2F2MV9wYXJzZXI7CiBleHRlcm4gY29uc3QgQVZDb2RlY1BhcnNlciBmZl9h
dnMyX3BhcnNlcjsKIGV4dGVybiBjb25zdCBBVkNvZGVjUGFyc2VyIGZmX2F2czNfcGFyc2VyOwot
LSAKMi4zNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBz
Oi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3Jp
YmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl
Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==