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 ESMTP id AD3A64210D
	for <ffmpegdev@gitmailbox.com>; Sat, 28 May 2022 13:25:45 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BE4B768B5CE;
	Sat, 28 May 2022 16:25:35 +0300 (EEST)
Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com
 [209.85.210.169])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A02E268B488
 for <ffmpeg-devel@ffmpeg.org>; Sat, 28 May 2022 16:25:28 +0300 (EEST)
Received: by mail-pf1-f169.google.com with SMTP id c65so6073477pfb.1
 for <ffmpeg-devel@ffmpeg.org>; Sat, 28 May 2022 06:25:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=message-id:in-reply-to:references:from:date:subject:fcc
 :content-transfer-encoding:mime-version:to:cc;
 bh=kSS9saIN/fQa2fPCVDIdRvNwnWyuN2/RcTs13txtHjI=;
 b=YQjxZoW2nNOkqu4KfKJjn9JeAuOmioGDbIdi9VfFv5XqzPzVBUpEwPzHrx+VWMMp4H
 ObwzSanJ3s2BykNLPCT7ayYZ/u5PSPVovmkvMhgTq8wVEPFSXuOJaxpBa4EfmHB6KjEa
 faKfAVllXvI5DE27raaRyQh/ihza+ZpIJ0iCjDG8IE6fxi0V/i3jjksD7Wps5WLBsyYv
 AWBTAxGpqzox9xSpmFJHKZ1NDZOFA1hSX+XCZ4+jUnsC8bf6Q/VbFHXXFviXRaZ7ps1s
 hE8i0DjOm3FprO+woDp7fw5r9J+s3udheLGJTdyzjlpke8OGAuAf0qdp+AVEZ7Zk74nN
 2j1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:message-id:in-reply-to:references:from:date
 :subject:fcc:content-transfer-encoding:mime-version:to:cc;
 bh=kSS9saIN/fQa2fPCVDIdRvNwnWyuN2/RcTs13txtHjI=;
 b=pLOk5ZLIarEmmg/cOi6ScVTcnJd84c2sxN1IAyKleG/BLpRar0hMgapObvuOIEurFr
 QCvTyaHAgF5Ny3TdeN1Il3eS9t9bhIb3GGeN3oEO/X6jjSIzHxzQhuuKGQB9dWXjKANQ
 4NymwqvS4uuGr3qyivI+smhFW911WIKwER+eu+pJ4XNrGoJ+uJYqZKuOR0YgfoFgDrFl
 1TEbA3fbX1ReTLgoNw3z2MvvIVwxqpLMu61W/9w9XukXCaljuQJ0BlKDUPcrn9kkkz17
 XA9mbX+DaWbiUn7hP85mSJJsSHSAuP4Y3LJF5mTfbbq7VQTR9fWV2xICLNOwsRocpKfv
 FZRg==
X-Gm-Message-State: AOAM530vgcCIEv+AzTBvduWeu0PFuvpNU9qf0sdPVPBX3JLf5jf75wb2
 pPrzkXu5lLUsjP87j0+EccJZ64B2w5iDAw==
X-Google-Smtp-Source: ABdhPJw515nH3rrXJkD3v2hhIPbY+6TpWYGX/BlQjP1rJFePic42pGjRlOotxY44ocLouvyvTzksxg==
X-Received: by 2002:aa7:9047:0:b0:519:36a2:9f63 with SMTP id
 n7-20020aa79047000000b0051936a29f63mr7921494pfo.60.1653744325612; 
 Sat, 28 May 2022 06:25:25 -0700 (PDT)
Received: from [127.0.0.1] (master.gitmailbox.com. [34.83.118.50])
 by smtp.gmail.com with ESMTPSA id
 e25-20020aa78c59000000b005182d0a3d5csm5368572pfd.7.2022.05.28.06.25.24
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 28 May 2022 06:25:24 -0700 (PDT)
Message-Id: <pull.18.v4.ffstaging.FFmpeg.1653744323.ffmpegagent@gmail.com>
In-Reply-To: <pull.18.v3.ffstaging.FFmpeg.1642649134.ffmpegagent@gmail.com>
References: <pull.18.v3.ffstaging.FFmpeg.1642649134.ffmpegagent@gmail.com>
From: ffmpegagent <ffmpegagent@gmail.com>
Date: Sat, 28 May 2022 13:25:00 +0000
Fcc: Sent
MIME-Version: 1.0
To: ffmpeg-devel@ffmpeg.org
Subject: [FFmpeg-devel] [PATCH v4 00/23] Subtitle Filtering 2022
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: Michael Niedermayer <michael@niedermayer.cc>,
 softworkz <softworkz@hotmail.com>, Andriy Gelman <andriy.gelman@gmail.com>,
 Andreas Rheinhardt <andreas.rheinhardt@outlook.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/pull.18.v4.ffstaging.FFmpeg.1653744323.ffmpegagent@gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

ClN1YnRpdGxlIEZpbHRlcmluZyAyMDIyCj09PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIGlz
IGEgc3Vic3RhbnRpYWwgdXBkYXRlIHRvIHRoZSBlYXJsaWVyIHN1YnRpdGxlIGZpbHRlcmluZyBw
YXRjaCBzZXJpZXMuCkEgcHJpbWFyeSBnb2FsIGhhcyBiZWVuIHRvIGFkZHJlc3Mgb3RoZXJzJyBj
b25jZXJucyBhcyBtdWNoIGFzIHBvc3NpYmxlIG9uCm9uZSBzaWRlIGFuZCB0byBwcm92aWRlIG1v
cmUgY2xhcml0eSBhbmQgY29udHJvbCBvdmVyIHRoZSB3YXkgdGhpbmdzIGFyZQp3b3JraW5nLiBD
bGFyaXR5IGlzIGlzIHNwZWNpZmljYWxseSBpbXBvcnRhbnQgdG8gYWxsb3cgZm9yIGEgYmV0dGVy
CnVuZGVyc3RhbmRpbmcgb2YgdGhlIG5lZWQgZm9yIGEgc3VidGl0bGUgc3RhcnQgcHRzIHZhbHVl
IHRoYXQgY2FuIGJlCmRpZmZlcmVudCBmcm9tIHRoZSBmcmFtZSdzIHB0cyB2YWx1ZS4gVGhpcyBp
cyBkb25lIGJ5IHJlZmFjdG9yaW5nIHRoZQpzdWJ0aXRsZSB0aW1pbmcgZmllbGRzIGluIEFWRnJh
bWUsIGFkZGluZyBhIGZyYW1lIGZpZWxkIHRvIGluZGljYXRlIHJlcGVhdGVkCnN1YnRpdGxlIGZy
YW1lcywgYW5kIGZpbmFsbHkgdGhlIGZ1bGwgcmVtb3ZhbCBvZiB0aGUgaGVhcnRiZWF0CmZ1bmN0
aW9uYWxpdHksIHJlcGxhY2VkIGJ5IGEgbmV3ICdzdWJmZWVkJyBmaWx0ZXIgdGhhdCBwcm92aWRl
cyBkaWZmZXJlbnQKbW9kZXMgZm9yIGFyYml0cmF0aW5nIHN1YnRpdGxlIGZyYW1lcyBpbiBhIGZp
bHRlciBncmFwaC4gRmluYWxseSwgZWFjaApzdWJ0aXRsZSBmaWx0ZXIncyBkb2N1bWVudGF0aW9u
IGhhcyBiZWVuIGFtZW5kZWQgYnkgYSBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlCmZpbHRlcidzIHRp
bWVsaW5lIGJlaGF2aW9yIChpbiB2MyB1cGRhdGUpLgoKVGhlIHVwZGF0ZSBhbHNvIGluY2x1ZGVz
IG1ham9yIGltcHJvdmVtZW50cyB0byBncmFwaGljc3ViMnRleHQgYW5kIGxvdHMgb2YKb3RoZXIg
ZGV0YWlscy4KClZlcnNpb25pbmcgaXMgcmVzdGFydGluZyBhdCB2MSBkdWUgdG8gdGhlIG5ldyBz
dWJtaXNzaW9uIHByb2NlZHVyZS4KCgp2NCAtIFF1YWxpdHkgSW1wcm92ZW1lbnRzCj09PT09PT09
PT09PT09PT09PT09PT09PT0KCiAqIGZpbmFsbHkgYW4gdXBkYXRlZCB2ZXJzaW9uCiAqIGluY2x1
ZGVzIG1hbnkgaW1wcm92ZW1lbnRzIGZyb20gaW50ZXJuYWwgdGVzdGluZwogKiBhbGwgRkFURSB0
ZXN0cyBwYXNzZWQKICogYWxsIGV4YW1wbGUgY29tbWFuZHMgZnJvbSB0aGUgZG9jcyB2ZXJpZmll
ZCB0byB3b3JrCiAqIGNhbid0IGxpc3QgYWxsIHRoZSBkZXRhaWwgY2hhbmdlcy4uCiAqIEkgaGF2
ZSBsZWZ0IG91dCB0aGUgZXh0cmEgY29tbWl0cyB3aGljaCBjYW4gYmUgaGFuZGxlZCBzZXBhcmF0
ZWx5LCBqdXN0CiAgIGluIGNhc2Ugc29tZWJvZHkgd29uZGVycyB3aHkgdGhlc2UgYXJlIG1pc3Np
bmc6CiAgICogYXZjb2RlYy93ZWJ2dHRlbmM6IERvbid0IGVuY29kZSBkcmF3aW5nIGNvZGVzIGFu
ZCBlbXB0eSBsaW5lcwogICAqIGF2Y29kZWMvd2VidnR0ZW5jOiBjb252ZXJ0IGhhcmQtc3BhY2Ug
dGFncyB0byDCoAogICAqIGF2dXRpbC9hc3Nfc3BsaXQ6IEFkZCBwYXJzaW5nIG9mIGhhcmQtc3Bh
Y2UgdGFncyAoXGgpCiAgICogYXZ1dGlsL2Fzc19zcGxpdDogVHJlYXQgYWxsIGNvbnRlbnQgaW4g
Y3VybHkgYnJhY2VzIGFzIGhpZGRlbgogICAqIGF2dXRpbC9hc3Nfc3BsaXQ6IEZpeCBhc3MgcGFy
c2luZyBvZiBzdHlsZSBjb2RlcyB3aXRoIGNvbW1lbnRzCgoKdjMgLSBSZWJhc2UKPT09PT09PT09
PT0KCmR1ZSB0byBtZXJnZSBjb25mbGljdHMgLSBhcG9sb2dpZXMuCgoKQ2hhbmdlcyBpbiB2Mgo9
PT09PT09PT09PT09CgogKiBhZGRlZCAuZ2l0YXR0cmlidXRlcyBmaWxlIHRvIGVuZm9yY2UgYmlu
YXJ5IGRpZmZzIGZvciB0aGUgdGVzdCByZWZzIHRoYXQKICAgY2Fubm90IGJlIGFwcGxpZWQgd2hl
biBiZWluZyBzZW50IHZpYSBlLW1haWwKICogcGVyZm9ybSBmaWx0ZXIgZ3JhcGggcmUtaW5pdCBk
dWUgdG8gc3VidGl0bGUgImZyYW1lIHNpemUiIGNoYW5nZSBvbmx5CiAgIHdoZW4gdGhlIHNpemUg
d2FzIHVua25vd24gYmVmb3JlIGFuZCBub3Qgc2V0IHZpYSAtY2FudmFzX3NpemUKICogb3Zlcmxh
eXRleHRzdWJzOiBNYWtlIHN1cmUgdG8gcmVxdWVzdCBmcmFtZXMgb24gdGhlIHN1YnRpdGxlIGlu
cHV0CiAqIGF2ZmlsdGVyL3NwbGl0Y2M6IFN0YXJ0IHBhcnNpbmcgY2MgZGF0YSBvbiBrZXkgZnJh
bWVzIG9ubHkKICogYXZjb2RlYy93ZWJ2dHRlbmM6IERvbid0IGVuY29kZSBhc3MgZHJhd2luZyBj
b2RlcyBhbmQgZW1wdHkgbGluZXMKICogc3RyaXBzdHlsZXM6IGZpeCBtZW0gbGVhawogKiBnczJ0
OiBpbXByb3ZlIGNvbG9yIGRldGVjdGlvbgogKiBnczJ0OiBlbXB0eSBmcmFtZXMgbXVzdCBub3Qg
YmUgc2tpcHBlZAogKiBzdWJmZWVkOiBmaXggbmFtZQogKiB0ZXh0bW9kOiBwcmVzZXJ2ZSBtYXJn
aW5zCiAqIGFkZGVkIC5naXRhdHRyaWJ1dGVzIGZpbGUgdG8gZW5mb3JjZSBiaW5hcnkgZGlmZnMg
Zm9yIHRoZSB0ZXN0IHJlZnMgdGhhdAogICBjYW5ub3QgYmUgYXBwbGllZCB3aGVuIGJlaW5nIHNl
bnQgdmlhIGUtbWFpbAogKiBwZXJmb3JtIGZpbHRlciBncmFwaCByZS1pbml0IGR1ZSB0byBzdWJ0
aXRsZSAiZnJhbWUgc2l6ZSIgY2hhbmdlIG9ubHkKICAgd2hlbiB0aGUgc2l6ZSB3YXMgdW5rbm93
biBiZWZvcmUgYW5kIG5vdCBzZXQgdmlhIC1jYW52YXNfc2l6ZQogKiBhdmNvZGVjL2R2YnN1YmRl
YzogRml4IGNvbmRpdGlvbnMgZm9yIGZhbGxiYWNrIHRvIGRlZmF1bHQgcmVzb2x1dGlvbgogKiBN
YWRlIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IEFuZHJlYXMKICogRml4ZWQgZmFpbGluZyBjb21tYW5k
IGxpbmUgcmVwb3J0ZWQgYnkgTWljaGFlbAoKQ2hhbmdlcyBmcm9tIHByZXZpb3VzIHZlcnNpb24g
djI0OgoKCkFWRnJhbWUKPT09PT09PQoKICogUmVtb3ZlZCBzdWJfc3RhcnRfdGltZSBUaGUgc3Rh
cnQgdGltZSBpcyBub3cgYWRkZWQgdG8gdGhlIHN1YnRpdGxlCiAgIHN0YXJ0X3B0cyBkdXJpbmcg
ZGVjb2RpbmcgVGhlIHN1Yl9lbmRfdGltZSBmaWVsZCBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseQog
KiBSZW5hbWVkIHN1Yl9lbmRfdGltZSB0byBkdXJhdGlvbiB3aGljaCBpdCBpcyBlZmZlY3RpdmVs
eSBhZnRlciByZW1vdmluZwogICB0aGUgc3RhcnRfdGltZQogKiBBZGRlZCBhIHN1Yi1zdHJ1Y3Qg
J3N1YnRpdGxlX3RpbWluZycgdG8gYXYgZnJhbWUgQ29udGFpbnMgc3VidGl0bGVfcHRzCiAgIHJl
bmFtZWQgdG8gJ3N1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMnIGFuZCAnc3VidGl0bGVfdGltaW5n
LmR1cmF0aW9uJwogKiBDaGFuZ2UgYm90aCBmaWVsZHMgdG8gKGZpeGVkKSB0aW1lX2Jhc2UgQVZf
VElNRUJBU0UKICogYWRkIHJlcGVhdF9zdWIgZmllbGQgcHJvdmlkZXMgYSBjbGVhciBpbmRpY2F0
aW9uIHdoZXRoZXIgYSBzdWJ0aXRsZSBmcmFtZQogICBpcyBhbiBhY3R1YWwgc3VidGl0bGUgZXZl
bnQgb3IgYSByZXBlYXRlZCBzdWJ0aXRsZSBmcmFtZSBpbiBhIGZpbHRlcgogICBncmFwaAoKCkhl
YXJ0YmVhdCBSZW1vdmFsCj09PT09PT09PT09PT09PT09CgogKiBjb21wbGV0ZWx5IHJlbW92ZWQg
dGhlIGVhcmxpZXIgaGVhcnRiZWF0IGltcGxlbWVudGF0aW9uCiAqIGZpbHRlcmluZyBhcmJpdHJh
dGlvbiBpcyBub3cgaW1wbGVtZW50ZWQgaW4gYSBuZXcgZmlsdGVyOiAnc3ViZmVlZCcKICogc3Vi
ZmVlZCB3aWxsIGJlIGF1dG8taW5zZXJ0ZWQgZm9yIGNvbXBhdGlibGl0eSB3aXRoIHN1YjJ2aWRl
byBjb21tYW5kCiAgIGxpbmVzCiAqIHRoZSBuZXcgYmVoYXZpb3IgaXMgbm90IGV4YWN0bHkgaWRl
bnRpY2FsIHRvIHRoZSBlYXJsaWVyIGJlaGF2aW9yLCBidXQgaXQKICAgYmFzaWNhbGx5IGFsbG93
cyB0byBhY2hpZXZlIHRoZSBzYW1lIHJlc3VsdHMKICogdGhlcmUncyBhIHNtYWxsIHJlbWFpbmRl
ciwgbm93IG5hbWVkIHN1YnRpdGxlIGtpY2tvZmYgd2hpY2ggc2VydmVzIHRvIGdldAogICB0aGlu
Z3MgKGluIHRoZSBmaWx0ZXIgZ3JhcGgpIGdvaW5nIHJpZ2h0IGZyb20gdGhlIHN0YXJ0CgoKTmV3
ICdzdWJmZWVkJyBGaWx0ZXIKPT09PT09PT09PT09PT09PT09PT0KCiAqIGEgdmVyc2F0aWxlIGZp
bHRlciBmb3Igc29sdmluZyBhbGwga2luZHMgb2YgcHJvYmxlbXMgd2l0aCBzdWJ0aWxlIGZyYW1l
CiAgIGZsb3cgaW4gZmlsdGVyIGdyYXBocwogKiBDYW4gYmUgaW5zZXJ0ZWQgYXQgYW55IHBvc2l0
aW9uIGluIGEgZ3JhcGgKICogQXV0by1pbnNlcnRlZCBmb3Igc3ViMnZpZGVvIGNvbW1hbmQgbGlu
ZXMgKGluIHJlcGVhdC1tb2RlKQogKiBBbGxvd3MgZHVyYXRpb24gZml4dXAgZGVsYXkgaW5wdXQg
ZnJhbWVzIHdpdGggdW5rbm93biBkdXJhdGlvbiBhbmQgaW5mZXIKICAgZHVyYXRpb24gZnJvbSBz
dGFydCBvZiBzdWJzZXF1ZW50IGZyYW1lCiAqIFByb3ZpZGVzIG11bHRpcGxlIG1vZGVzIG9mIG9w
ZXJhdGlvbjoKICAgKiByZXBlYXQgbW9kZSAoZGVmYXVsdCkgUXVldWVzIGlucHV0IGZyYW1lcyBP
dXRwdXRzIGZyYW1lcyBhdCBhIGZpeGVkCiAgICAgKGNvbmZpZ3VyYWJsZSkgcmF0ZSBFaXRoZXIg
c2VuZHMgYSBtYXRjaGluZyBpbnB1dCBmcmFtZSAocmVwZWF0ZWRseSkgb3IKICAgICBlbXB0eSBm
cmFtZXMgb3RoZXJ3aXNlCiAgICogc2NhdHRlciBtb2RlIHNpbWlsYXIgdG8gcmVwZWF0IG1vZGUs
IGJ1dCBzcGxpdHMgaW5wdXQgZnJhbWVzIGJ5CiAgICAgZHVyYXRpb24gaW50byBzbWFsbCBzZWdt
ZW50cyB3aXRoIHNhbWUgY29udGVudAogICAqIGZvcndhcmQgbW9kZSBObyBmaXhlZCBvdXRwdXQg
cmF0ZSBVc2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCBkdXJhdGlvbgogICAgIGZpeHVwIG9yIG92
ZXJsYXAgZml4dXAKCgpmZm1wZWcgVG9vbCBDaGFuZ2VzCj09PT09PT09PT09PT09PT09PT0KCiAq
IGRlbGF5IHN1YnRpdGxlIG91dHB1dCBzdHJlYW0gaW5pdGlhbGl6YXRpb24gKGxpa2UgZm9yIGF1
ZGlvIGFuZCB2aWRlbykKICAgVGhpcyBpcyBuZWVkZWQgZm9yIGV4YW1wbGUgd2hlbiBhIGZvcm1h
dCBoZWFkZXIgZGVwZW5kcyBvbiBoYXZpbmcKICAgcmVjZWl2ZWQgYW4gaW5pdGlhbCBmcmFtZSB0
byBkZXJpdmUgY2VydGFpbiBoZWFkZXIgdmFsdWVzIGZyb20KICogZGVjb2Rpbmc6IHNldCBzdWJ0
aXRsZSBmcmFtZSBzaXplIGZyb20gZGVjb2RpbmcgY29udGV4dAogKiByZS1pbml0IGdyYXBoIHdo
ZW4gc3VidGl0bGUgc2l6ZSBjaGFuZ2VzCiAqIGFsd2F5cyBpbnNlcnQgc3Vic2NhbGUgZmlsdGVy
IGZvciBzdWIydmlkZW8gY29tbWFuZCBsaW5lcyAodG8gZW5zdXJlCiAgIGNvcnJlY3Qgc2NhbGlu
ZykKCgpTdWJ0aXRsZSBFbmNvZGluZwo9PT09PT09PT09PT09PT09PQoKICogaWdub3JlIHJlcGVh
dGVkIGZyYW1lcyBmb3IgZW5jb2RpbmcgYmFzZWQgb24gcmVwZWF0X3N1YiBmaWVsZCBpbiBBVkZy
YW1lCiAqIHN1cHBvcnQgbXVsdGktYXJlYSBlbmNvZGluZyBmb3IgdGV4dCBzdWJ0aXRsZXMgU3Vi
dGl0bGUgT0NSIGNhbiBjcmVhdGUKICAgbXVsdGlwbGUgYXJlYXMgYXQgZGlmZmVyZW50IHBvc2l0
aW9ucy4gUHJldmlvdXNseSwgdGhlIHRleHRzIHdlcmUgYWx3YXlzCiAgIHNxdWFzaGVkIGludG8g
YSBzaW5nbGUgYXJlYSAoJ3N1YnRpdGxlIHJlY3QnKSwgd2hpY2ggd2FzIG5vdCBpZGVhbC4KICAg
TXVsdGlwbGUgdGV4dCBhcmVhcyBhcmUgbm93IGdlbmVyYWxseSBzdXBwb3J0ZWQ6CiAgICogQVNT
IEVuY29kZXIgQ2hhbmdlZCB0byB1c2UgdGhlICdyZWNlaXZlX3BhY2tldCcgZW5jb2RpbmcgQVBJ
IEEgc2luZ2xlCiAgICAgZnJhbWUgd2l0aCBtdWx0aXBsZSB0ZXh0IGFyZWFzIHdpbGwgY3JlYXRl
IG11bHRpcGxlIHBhY2tldHMgbm93CiAgICogQWxsIG90aGVyIHRleHQgc3VidGl0bGUgZW5jb2Rl
cnMgQSBuZXdsaW5lIGlzIGluc2VydGVkIGJldHdlZW4gdGhlIHRleHQKICAgICBmcm9tIG11bHRp
cGxlIGFyZWFzCgoKZ3JhcGhpY3N1YjJ0ZXh0IChPQ1IpCj09PT09PT09PT09PT09PT09PT09PQoK
ICogZW5oYW5jZWQgcHJlcHJvY2Vzc2luZwogICAqIHVzaW5nIGVsYmcgYWxnb3JpdGhtIGZvciBj
b2xvciBxdWFudGl6YXRpb24KICAgKiBkZXRlY3Rpb24gYW5kIHJlbW92YWwgb2YgdGV4dCBvdXRs
aW5lcwogICAqIG1hcC1iYXNlZCBpZGVudGlmaWNhdGlvbiBvZiBjb2xvcnMgcGVyIHdvcmQgKHRl
eHQsIG91dGxpbmUsIGJhY2tncm91bmQpCiAqIGFkZCBvcHRpb24gZm9yIGR1cmF0aW9uIGZpeHVw
CiAqIGFkZCBvcHRpb24gdG8gZHVtcCBwcmVwcm9jZXNzaW5nIGJpdG1hcHMKICogUmVjb2duaXpl
IGZvcm1hdHRpbmcgYW5kIGFwcGx5IGFzIEFTUyBpbmxpbmUgc3R5bGVzCiAgICogcGVyIHdvcmQo
ISkKICAgKiBwYXJhZ3JhcGggYWxpZ25tZW50CiAgICogcG9zaXRpb25pbmcKICAgKiBmb250IG5h
bWVzCiAgICogZm9udCBzaXplCiAgICogZm9udCBzdHlsZSAoaXRhbGljLCB1bmRlcmxpbmUsIGJv
bGQpCiAgICogdGV4dCBjb2xvciwgb3V0bGluZSBjb2xvcgoKCk90aGVyIEZpbHRlciBDaGFuZ2Vz
Cj09PT09PT09PT09PT09PT09PT09CgogKiBhbGw6IE1ha2Ugc3VyZSB0byBmb3J3YXJkIGFsbCBs
aW5rIHByb3BlcnRpZXMgKHRpbWUgYmFzZSwgZnJhbWUgcmF0ZSwgdywKICAgaCkgd2hlcmUgYXBw
cm9wcmlhdGUKICogb3ZlcmxheXRleHRzdWJzOiByZXF1ZXN0IGZyYW1lcyBvbiB0aGUgc3VidGl0
bGUgaW5wdXQKICogb3ZlcmxheXRleHRzdWJzOiBkaXNhYmxlIHJlYWQtb3JkZXIgY2hlY2tpbmcK
ICogb3ZlcmxheXRleHRzdWJzOiBpbXByb3ZlIGltcGxlbWVudGF0aW9uIG9mIHJlbmRlcl9sYXRl
c3Rfb25seQogKiBvdmVybGF5dGV4dHN1YnM6IGVuc3VyZSBlcXVhbCBpbi9vdXQgdmlkZW8gZm9y
bWF0cwogKiBzcGxpdGNjOiBkZXJpdmUgZnJhbWVyYXRlIGZyb20gcmVhbHRpbWVfbGF0ZW5jeQog
KiBncmFwaGljc3ViMnZpZGVvOiBpbXBsZW1lbnQgY2FjaGluZyBvZiBjb252ZXJ0ZWQgZnJhbWVz
CiAqIGdyYXBoaWNzdWIydmlkZW86IHVzZSAxeDEgb3V0cHV0IGZyYW1lIHNpemUgYXMgbG9uZyBh
cyBzdWJ0aXRsZSBzaXplIGlzCiAgIHVua25vd24gKDB4MCkKClBsdXMgYSBkb3plbiBvZiB0aGlu
Z3MgSSBmb3Jnb3QuLgoKc29mdHdvcmt6ICgyMyk6CiAgYXZjb2RlYyxhdnV0aWw6IE1vdmUgZW51
bSBBVlN1YnRpdGxlVHlwZSB0byBhdnV0aWwsIGFkZCBuZXcgYW5kCiAgICBkZXByZWNhdGUgb2xk
IHZhbHVlcwogIGF2dXRpbC9mcmFtZTogUHJlcGFyZSBBVkZyYW1lIGZvciBzdWJ0aXRsZSBoYW5k
bGluZwogIGF2Y29kZWMvc3VidGl0bGVzOiBJbnRyb2R1Y2UgbmV3IGZyYW1lLWJhc2VkIHN1YnRp
dGxlIGRlY29kaW5nIEFQSQogIGF2Y29kZWMvbGlienZiaTogc2V0IHN1YnRpdGxlIHR5cGUKICBh
dmZpbHRlci9zdWJ0aXRsZXM6IFVwZGF0ZSB2Zl9zdWJ0aXRsZXMgdG8gdXNlIG5ldyBkZWNvZGlu
ZyBhcGkKICBhdmNvZGVjLGF2dXRpbDogTW92ZSBhc3MgaGVscGVyIGZ1bmN0aW9ucyB0byBhdnV0
aWwgYXMgYXZwcml2XyBhbmQKICAgIGV4dGVuZCBhc3MgZGlhbG9nIHBhcnNpbmcKICBhdmNvZGVj
L3N1YnRpdGxlczogUmVwbGFjZSBkZXByZWNhdGVkIGVudW0gdmFsdWVzCiAgZmZ0b29scy9wbGF5
LHByb2JlOiBBZGp1c3QgZm9yIHN1YnRpdGxlIGNoYW5nZXMKICBhdmZpbHRlci9zdWJ0aXRsZXM6
IEFkZCBzdWJ0aXRsZXMuYyBmb3Igc3VidGl0bGUgZnJhbWUgYWxsb2NhdGlvbgogIGF2ZmlsdGVy
L2F2ZmlsdGVyOiBIYW5kbGUgc3VidGl0bGUgZnJhbWVzCiAgYXZmaWx0ZXIvYXZmaWx0ZXI6IEZp
eCBoYXJkY29kZWQgaW5wdXQgaW5kZXgKICBhdmZpbHRlci9zYnVmZmVyOiBBZGQgc2J1ZmZlcnNy
YyBhbmQgc2J1ZmZlcnNpbmsgZmlsdGVycwogIGF2ZmlsdGVyL292ZXJsYXlncmFwaGljc3Viczog
QWRkIG92ZXJsYXlncmFwaGljc3VicyBhbmQKICAgIGdyYXBoaWNzdWIydmlkZW8gZmlsdGVycwog
IGF2ZmlsdGVyL292ZXJsYXl0ZXh0c3ViczogQWRkIG92ZXJsYXl0ZXh0c3VicyBhbmQgdGV4dHN1
YnMydmlkZW8KICAgIGZpbHRlcnMKICBhdmZpbHRlci90ZXh0bW9kOiBBZGQgdGV4dG1vZCwgY2Vu
c29yIGFuZCBzaG93X3NwZWFrZXIgZmlsdGVycwogIGF2ZmlsdGVyL3N0cmlwc3R5bGVzOiBBZGQg
c3RyaXBzdHlsZXMgZmlsdGVyCiAgYXZmaWx0ZXIvc3BsaXRjYzogQWRkIHNwbGl0Y2MgZmlsdGVy
IGZvciBjbG9zZWQgY2FwdGlvbiBoYW5kbGluZwogIGF2ZmlsdGVyL2dyYXBoaWNzdWIydGV4dDog
QWRkIG5ldyBncmFwaGljc3ViMnRleHQgZmlsdGVyIChPQ1IpCiAgYXZmaWx0ZXIvc3Vic2NhbGU6
IEFkZCBmaWx0ZXIgZm9yIHNjYWxpbmcgYW5kL29yIHJlLWFycmFuZ2luZwogICAgZ3JhcGhpY2Fs
IHN1YnRpdGxlcwogIGF2ZmlsdGVyL3N1YmZlZWQ6IGFkZCBzdWJ0aXRsZSBmZWVkIGZpbHRlcgog
IGF2Y29kZWMvc3VidGl0bGVzOiBNaWdyYXRlIHN1YnRpdGxlIGVuY29kZXJzIHRvIGZyYW1lLWJh
c2VkIEFQSQogIGZmdG9vbHMvZmZtcGVnOiBJbnRyb2R1Y2Ugc3VidGl0bGUgZmlsdGVyaW5nIGFu
ZCBuZXcgZnJhbWUtYmFzZWQKICAgIHN1YnRpdGxlIGVuY29kaW5nCiAgYXZjb2RlYy9kdmJzdWJk
ZWM6IEZpeCBjb25kaXRpb25zIGZvciBmYWxsYmFjayB0byBkZWZhdWx0IHJlc29sdXRpb24KCiBj
b25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCiBk
b2MvZmlsdGVycy50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNzU2ICsrKysr
KysrKysKIGZmdG9vbHMvZmZtcGVnLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2
MTAgKysrKy0tLS0KIGZmdG9vbHMvZmZtcGVnLmggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTcgKy0KIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jICAgICAgICAgICAgICAgICAgICAg
ICB8ICAyNDMgKysrLQogZmZ0b29scy9mZm1wZWdfaHcuYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogZmZ0b29scy9mZm1wZWdfb3B0LmMgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgNCArLQogZmZ0b29scy9mZnBsYXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDEwMiArLQogZmZ0b29scy9mZnByb2JlLmMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA0NyArLQogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA1NiArLQogbGliYXZjb2RlYy9hc3MuaCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDE1MSArLQogbGliYXZjb2RlYy9hc3NkZWMuYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgNCArLQogbGliYXZjb2RlYy9hc3NlbmMuYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDE5MSArKy0KIGxpYmF2Y29kZWMvYXZjb2RlYy5jICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDggKwogbGliYXZjb2RlYy9hdmNvZGVjLmggICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAzNCArLQogbGliYXZjb2RlYy9jY2FwdGlvbl9kZWMuYyAgICAgICAgICAgICAgICAg
ICAgIHwgICAyMCArLQogbGliYXZjb2RlYy9jb2RlY19pbnRlcm5hbC5oICAgICAgICAgICAgICAg
ICAgIHwgICAxMiAtCiBsaWJhdmNvZGVjL2RlY29kZS5jICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDYwICstCiBsaWJhdmNvZGVjL2R2YnN1YmRlYy5jICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDUzICstCiBsaWJhdmNvZGVjL2R2YnN1YmVuYy5jICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDk2ICstCiBsaWJhdmNvZGVjL2R2ZHN1YmRlYy5jICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICstCiBsaWJhdmNvZGVjL2R2ZHN1YmVuYy5jICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgMTAyICstCiBsaWJhdmNvZGVjL2VuY29kZS5jICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDYxICstCiBsaWJhdmNvZGVjL2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE2ICsKIGxpYmF2Y29kZWMvamFjb3N1YmRlYy5jICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvbGliYXJpYmIyNC5jICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvbGlienZiaS10ZWxldGV4dGRlYy5jICAgICAgICAgICAg
ICB8ICAgMTcgKy0KIGxpYmF2Y29kZWMvbWljcm9kdmRkZWMuYyAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDcgKy0KIGxpYmF2Y29kZWMvbW92dGV4dGRlYy5jICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDMgKy0KIGxpYmF2Y29kZWMvbW92dGV4dGVuYy5jICAgICAgICAgICAgICAgICAgICAg
ICB8ICAxMjYgKy0KIGxpYmF2Y29kZWMvbXBsMmRlYy5jICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvcGdzc3ViZGVjLmMgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvcmVhbHRleHRkZWMuYyAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvc2FtaWRlYy5jICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvc3J0ZGVjLmMgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvc3J0ZW5jLmMgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAxMTYgKy0KIGxpYmF2Y29kZWMvc3Vidmlld2VyZGVjLmMgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvdGVzdHMvYXZjb2RlYy5jICAgICAgICAgICAgICAgICAg
ICB8ICAgIDUgKy0KIGxpYmF2Y29kZWMvdGV4dGRlYy5jICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDQgKy0KIGxpYmF2Y29kZWMvdHRtbGVuYy5jICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAxMTQgKy0KIGxpYmF2Y29kZWMvdXRpbHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAxODUgKystCiBsaWJhdmNvZGVjL3dlYnZ0dGRlYy5jICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICstCiBsaWJhdmNvZGVjL3dlYnZ0dGVuYy5jICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDk0ICstCiBsaWJhdmNvZGVjL3hzdWJkZWMuYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICstCiBsaWJhdmNvZGVjL3hzdWJlbmMuYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDg4ICstCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE1ICsKIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTQgKwogbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAzNCArLQogbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMSArCiBsaWJhdmZpbHRlci9hdmZpbHRlcmdyYXBoLmMgICAgICAgICAgICAgICAgICAg
fCAgICA1ICsKIGxpYmF2ZmlsdGVyL2J1ZmZlcnNpbmsuYyAgICAgICAgICAgICAgICAgICAgICB8
ICAgNTQgKwogbGliYXZmaWx0ZXIvYnVmZmVyc2luay5oICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgNyArCiBsaWJhdmZpbHRlci9idWZmZXJzcmMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDcyICsKIGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDEgKwogbGliYXZmaWx0ZXIvZm9ybWF0cy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx
NiArCiBsaWJhdmZpbHRlci9mb3JtYXRzLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAz
ICsKIGxpYmF2ZmlsdGVyL2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkg
Ky0KIGxpYmF2ZmlsdGVyL3NmX2dyYXBoaWNzdWIydGV4dC5jICAgICAgICAgICAgICB8IDExMzIg
KysrKysrKysrKysrKysrCiBsaWJhdmZpbHRlci9zZl9zcGxpdGNjLmMgICAgICAgICAgICAgICAg
ICAgICAgfCAgMzk1ICsrKysrKwogbGliYXZmaWx0ZXIvc2Zfc3RyaXBzdHlsZXMuYyAgICAgICAg
ICAgICAgICAgIHwgIDIxMSArKysKIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAgICAgICAgICAg
ICAgICAgICAgICB8ICA0MDIgKysrKysrCiBsaWJhdmZpbHRlci9zZl9zdWJzY2FsZS5jICAgICAg
ICAgICAgICAgICAgICAgfCAgODg0ICsrKysrKysrKysrKwogbGliYXZmaWx0ZXIvc2ZfdGV4dG1v
ZC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDcxMCArKysrKysrKysrCiBsaWJhdmZpbHRlci9z
dWJ0aXRsZXMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYzICsKIGxpYmF2ZmlsdGVyL3N1
YnRpdGxlcy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDQgKwogbGliYXZmaWx0ZXIvdmZf
b3ZlcmxheWdyYXBoaWNzdWJzLmMgICAgICAgICAgIHwgIDc2NSArKysrKysrKysrCiBsaWJhdmZp
bHRlci92Zl9vdmVybGF5dGV4dHN1YnMuYyAgICAgICAgICAgICAgfCAgNjgwICsrKysrKysrKwog
bGliYXZmaWx0ZXIvdmZfc3VidGl0bGVzLmMgICAgICAgICAgICAgICAgICAgIHwgICA2NyArLQog
bGliYXZ1dGlsL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiB7
bGliYXZjb2RlYyA9PiBsaWJhdnV0aWx9L2Fzcy5jICAgICAgICAgICAgICAgfCAgMTE1ICstCiBs
aWJhdnV0aWwvYXNzX2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgfCAgMTM1ICsrCiB7
bGliYXZjb2RlYyA9PiBsaWJhdnV0aWx9L2Fzc19zcGxpdC5jICAgICAgICAgfCAgIDMwICstCiAu
Li4vYXNzX3NwbGl0X2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDMyICstCiBs
aWJhdnV0aWwvZnJhbWUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjExICsrLQog
bGliYXZ1dGlsL2ZyYW1lLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4NSArLQog
bGliYXZ1dGlsL3N1YmZtdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NSArCiBs
aWJhdnV0aWwvc3ViZm10LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTE1ICsrCiBs
aWJhdnV0aWwvdmVyc2lvbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHRl
c3RzL3JlZi9mYXRlL2ZpbHRlci1vdmVybGF5LWR2ZHN1Yi0yMzk3ICAgICB8ICAxODIgKy0tCiB0
ZXN0cy9yZWYvZmF0ZS9zdWItZHZiICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYyICsrLQog
dGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvICAgICAgICAgICAgICAgICAgICAgIHwgMTA5MSArKysr
KysrKysrKysrKy0KIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlb19iYXNpYyAgICAgICAgICAgICAg
ICB8IDEyMzggKysrKysrKysrKysrKysrLS0KIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlb190aW1l
X2xpbWl0ZWQgICAgICAgICB8ICAgNzggKy0KIDgzIGZpbGVzIGNoYW5nZWQsIDExMTQ5IGluc2Vy
dGlvbnMoKyksIDE0MTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0
ZXIvc2ZfZ3JhcGhpY3N1YjJ0ZXh0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9z
Zl9zcGxpdGNjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9zZl9zdHJpcHN0eWxl
cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvc2Zfc3ViZmVlZC5jCiBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvc2Zfc3Vic2NhbGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0
IGxpYmF2ZmlsdGVyL3NmX3RleHRtb2QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVy
L3N1YnRpdGxlcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvc3VidGl0bGVzLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci92Zl9vdmVybGF5Z3JhcGhpY3N1YnMuYwog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL3ZmX292ZXJsYXl0ZXh0c3Vicy5jCiByZW5h
bWUge2xpYmF2Y29kZWMgPT4gbGliYXZ1dGlsfS9hc3MuYyAoNTklKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IGxpYmF2dXRpbC9hc3NfaW50ZXJuYWwuaAogcmVuYW1lIHtsaWJhdmNvZGVjID0+IGxpYmF2
dXRpbH0vYXNzX3NwbGl0LmMgKDk0JSkKIHJlbmFtZSBsaWJhdmNvZGVjL2Fzc19zcGxpdC5oID0+
IGxpYmF2dXRpbC9hc3Nfc3BsaXRfaW50ZXJuYWwuaCAoODYlKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IGxpYmF2dXRpbC9zdWJmbXQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2dXRpbC9zdWJmbXQu
aAoKCmJhc2UtY29tbWl0OiA5ZmJhMGI4YThjNzU0YTAxMmZjNzRjOTBmZmI3YzI2YTU2YmU4Y2Ew
ClB1Ymxpc2hlZC1BczogaHR0cHM6Ly9naXRodWIuY29tL2Zmc3RhZ2luZy9GRm1wZWcvcmVsZWFz
ZXMvdGFnL3ByLWZmc3RhZ2luZy0xOCUyRnNvZnR3b3JreiUyRnN1Ym1pdF9zdWJmaWx0ZXJpbmct
djQKRmV0Y2gtSXQtVmlhOiBnaXQgZmV0Y2ggaHR0cHM6Ly9naXRodWIuY29tL2Zmc3RhZ2luZy9G
Rm1wZWcgcHItZmZzdGFnaW5nLTE4L3NvZnR3b3Jrei9zdWJtaXRfc3ViZmlsdGVyaW5nLXY0ClB1
bGwtUmVxdWVzdDogaHR0cHM6Ly9naXRodWIuY29tL2Zmc3RhZ2luZy9GRm1wZWcvcHVsbC8xOAoK
UmFuZ2UtZGlmZiB2cyB2MzoKCiAgMTogIDc3Njc5MzMyMzUgISAgMTogIDJmM2JhMTcxZjUgYXZj
b2RlYyxhdnV0aWw6IE1vdmUgZW51bSBBVlN1YnRpdGxlVHlwZSB0byBhdnV0aWwsIGFkZCBuZXcg
YW5kIGRlcHJlY2F0ZSBvbGQgdmFsdWVzCiAgICAgQEAgbGliYXZ1dGlsL3N1YmZtdC5oIChuZXcp
CiAgICAgIAogICAgICAgIyMgbGliYXZ1dGlsL3ZlcnNpb24uaCAjIwogICAgICBAQAogICAgIC0g
I2RlZmluZSBGRl9BUElfQ09MT1JTUEFDRV9OQU1FICAgICAgICAgIChMSUJBVlVUSUxfVkVSU0lP
Tl9NQUpPUiA8IDU4KQogICAgIC0gI2RlZmluZSBGRl9BUElfQVZfTUFMTE9DWl9BUlJBWSAgICAg
ICAgIChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiA8IDU4KQogICAgIC0gI2RlZmluZSBGRl9BUElf
RklGT19QRUVLMiAgICAgICAgICAgICAgIChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiA8IDU4KQog
ICAgICsgI2RlZmluZSBGRl9BUElfWFZNQyAgICAgICAgICAgICAgICAgICAgIChMSUJBVlVUSUxf
VkVSU0lPTl9NQUpPUiA8IDU4KQogICAgICsgI2RlZmluZSBGRl9BUElfT0xEX0NIQU5ORUxfTEFZ
T1VUICAgICAgIChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiA8IDU4KQogICAgICsgI2RlZmluZSBG
Rl9BUElfQVZfRk9QRU5fVVRGOCAgICAgICAgICAgIChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiA8
IDU4KQogICAgICArI2RlZmluZSBGRl9BUElfT0xEX1NVQlRJVExFUyAgICAgICAgICAgIChMSUJB
VlVUSUxfVkVSU0lPTl9NQUpPUiA8IDU4KQogICAgICAgCiAgICAgICAvKioKICAyOiAgZTkyMmYx
NDFiYSAhICAyOiAgZmYxMDFmOGE3NiBhdnV0aWwvZnJhbWU6IFByZXBhcmUgQVZGcmFtZSBmb3Ig
c3VidGl0bGUgaGFuZGxpbmcKICAgICBAQCBsaWJhdnV0aWwvZnJhbWUuYwogICAgICArI2luY2x1
ZGUgInN1YmZtdC5oIgogICAgICAgI2luY2x1ZGUgImh3Y29udGV4dC5oIgogICAgICAgCiAgICAg
LSAjZGVmaW5lIENIRUNLX0NIQU5ORUxTX0NPTlNJU1RFTkNZKGZyYW1lKSBcCiAgICAgKyAjaWYg
RkZfQVBJX09MRF9DSEFOTkVMX0xBWU9VVAogICAgICBAQCBsaWJhdnV0aWwvZnJhbWUuYzogY29u
c3QgY2hhciAqYXZfZ2V0X2NvbG9yc3BhY2VfbmFtZShlbnVtIEFWQ29sb3JTcGFjZSB2YWwpCiAg
ICAgICAgICAgcmV0dXJuIG5hbWVbdmFsXTsKICAgICAgIH0KICAgICBAQCBsaWJhdnV0aWwvZnJh
bWUuYzogc3RhdGljIHZvaWQgZ2V0X2ZyYW1lX2RlZmF1bHRzKEFWRnJhbWUgKmZyYW1lKQogICAg
ICAgfQogICAgICAgCiAgICAgICBzdGF0aWMgdm9pZCBmcmVlX3NpZGVfZGF0YShBVkZyYW1lU2lk
ZURhdGEgKipwdHJfc2QpCiAgICAgLUBAIGxpYmF2dXRpbC9mcmFtZS5jOiBzdGF0aWMgaW50IGdl
dF9hdWRpb19idWZmZXIoQVZGcmFtZSAqZnJhbWUsIGludCBhbGlnbikKICAgICArQEAgbGliYXZ1
dGlsL2ZyYW1lLmM6IEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAgICAgCiAgICAg
ICB9CiAgICAgICAKICAgICBAQCBsaWJhdnV0aWwvZnJhbWUuYzogc3RhdGljIGludCBnZXRfYXVk
aW9fYnVmZmVyKEFWRnJhbWUgKmZyYW1lLCBpbnQgYWxpZ24pCiAgICAgICt9CiAgICAgICsKICAg
ICAgIGludCBhdl9mcmFtZV9nZXRfYnVmZmVyKEFWRnJhbWUgKmZyYW1lLCBpbnQgYWxpZ24pCiAg
ICAgLSt7CiAgICAgLSsgICAgaWYgKGZyYW1lLT53aWR0aCA+IDAgJiYgZnJhbWUtPmhlaWdodCA+
IDApCiAgICAgKyB7CiAgICAgKyAgICAgaWYgKGZyYW1lLT5mb3JtYXQgPCAwKQogICAgICtAQCBs
aWJhdnV0aWwvZnJhbWUuYzogaW50IGF2X2ZyYW1lX2dldF9idWZmZXIoQVZGcmFtZSAqZnJhbWUs
IGludCBhbGlnbikKICAgICArIAogICAgICsgRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5H
UwogICAgICsgICAgIGlmIChmcmFtZS0+d2lkdGggPiAwICYmIGZyYW1lLT5oZWlnaHQgPiAwKQog
ICAgICstICAgICAgICByZXR1cm4gZ2V0X3ZpZGVvX2J1ZmZlcihmcmFtZSwgYWxpZ24pOwogICAg
ICArICAgICAgICBmcmFtZS0+dHlwZSA9IEFWTUVESUFfVFlQRV9WSURFTzsKICAgICAtKyAgICBl
bHNlIGlmIChmcmFtZS0+bmJfc2FtcGxlcyA+IDAgJiYgKGZyYW1lLT5jaGFubmVsX2xheW91dCB8
fCBmcmFtZS0+Y2hhbm5lbHMgPiAwKSkKICAgICArICAgICBlbHNlIGlmIChmcmFtZS0+bmJfc2Ft
cGxlcyA+IDAgJiYKICAgICArICAgICAgICAgICAgICAoYXZfY2hhbm5lbF9sYXlvdXRfY2hlY2so
JmZyYW1lLT5jaF9sYXlvdXQpCiAgICAgKyAjaWYgRkZfQVBJX09MRF9DSEFOTkVMX0xBWU9VVAog
ICAgICsgICAgICAgICAgICAgICB8fCBmcmFtZS0+Y2hhbm5lbF9sYXlvdXQgfHwgZnJhbWUtPmNo
YW5uZWxzID4gMAogICAgICsgI2VuZGlmCiAgICAgKyAgICAgICAgICAgICAgKSkKICAgICArLSAg
ICAgICAgcmV0dXJuIGdldF9hdWRpb19idWZmZXIoZnJhbWUsIGFsaWduKTsKICAgICAgKyAgICAg
ICAgZnJhbWUtPnR5cGUgPSBBVk1FRElBX1RZUEVfQVVESU87CiAgICAgLSsKICAgICArIEZGX0VO
QUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAgICsgCiAgICAgKy0gICAgcmV0dXJuIEFWRVJS
T1IoRUlOVkFMKTsKICAgICAgKyAgICByZXR1cm4gYXZfZnJhbWVfZ2V0X2J1ZmZlcjIoZnJhbWUs
IGFsaWduKTsKICAgICAgK30KICAgICAgKwogICAgICAraW50IGF2X2ZyYW1lX2dldF9idWZmZXIy
KEFWRnJhbWUgKmZyYW1lLCBpbnQgYWxpZ24pCiAgICAgLSB7CiAgICAgLSAgICAgaWYgKGZyYW1l
LT5mb3JtYXQgPCAwKQogICAgIC0gICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAg
IC0gCiAgICAgLS0gICAgaWYgKGZyYW1lLT53aWR0aCA+IDAgJiYgZnJhbWUtPmhlaWdodCA+IDAp
CiAgICAgLSsgICAgc3dpdGNoKGZyYW1lLT50eXBlKSB7CiAgICAgKyt7CiAgICAgKysgICAgaWYg
KGZyYW1lLT5mb3JtYXQgPCAwKQogICAgICsrICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp
OwogICAgICsrCiAgICAgKysgICAgc3dpdGNoIChmcmFtZS0+dHlwZSkgewogICAgICArICAgIGNh
c2UgQVZNRURJQV9UWVBFX1ZJREVPOgogICAgIC0gICAgICAgICByZXR1cm4gZ2V0X3ZpZGVvX2J1
ZmZlcihmcmFtZSwgYWxpZ24pOwogICAgIC0tICAgIGVsc2UgaWYgKGZyYW1lLT5uYl9zYW1wbGVz
ID4gMCAmJiAoZnJhbWUtPmNoYW5uZWxfbGF5b3V0IHx8IGZyYW1lLT5jaGFubmVscyA+IDApKQog
ICAgICsrICAgICAgICByZXR1cm4gZ2V0X3ZpZGVvX2J1ZmZlcihmcmFtZSwgYWxpZ24pOwogICAg
ICArICAgIGNhc2UgQVZNRURJQV9UWVBFX0FVRElPOgogICAgIC0gICAgICAgICByZXR1cm4gZ2V0
X2F1ZGlvX2J1ZmZlcihmcmFtZSwgYWxpZ24pOwogICAgIC0tCiAgICAgLS0gICAgcmV0dXJuIEFW
RVJST1IoRUlOVkFMKTsKICAgICArKyAgICAgICAgcmV0dXJuIGdldF9hdWRpb19idWZmZXIoZnJh
bWUsIGFsaWduKTsKICAgICAgKyAgICBjYXNlIEFWTUVESUFfVFlQRV9TVUJUSVRMRToKICAgICAg
KyAgICAgICAgcmV0dXJuIGdldF9zdWJ0aXRsZV9idWZmZXIoZnJhbWUpOwogICAgICArICAgIGRl
ZmF1bHQ6CiAgICAgQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IHN0YXRpYyBpbnQgZnJhbWVfY29weV9w
cm9wcyhBVkZyYW1lICpkc3QsIGNvbnN0IEFWRnJhbWUgKnNyYywKICAgICAgIAogICAgICAgICAg
IGF2X2RpY3RfY29weSgmZHN0LT5tZXRhZGF0YSwgc3JjLT5tZXRhZGF0YSwgMCk7CiAgICAgICAK
ICAgICAtQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IGludCBhdl9mcmFtZV9yZWYoQVZGcmFtZSAqZHN0
LCBjb25zdCBBVkZyYW1lICpzcmMpCiAgICAgLSAgICAgYXZfYXNzZXJ0MShkc3QtPndpZHRoID09
IDAgJiYgZHN0LT5oZWlnaHQgPT0gMCk7CiAgICAgLSAgICAgYXZfYXNzZXJ0MShkc3QtPmNoYW5u
ZWxzID09IDApOwogICAgICtAQCBsaWJhdnV0aWwvZnJhbWUuYzogRkZfRU5BQkxFX0RFUFJFQ0FU
SU9OX1dBUk5JTkdTCiAgICAgKyAgICAgYXZfYXNzZXJ0MShkc3QtPmNoX2xheW91dC5uYl9jaGFu
bmVscyA9PSAwICYmCiAgICAgKyAgICAgICAgICAgICAgICBkc3QtPmNoX2xheW91dC5vcmRlciA9
PSBBVl9DSEFOTkVMX09SREVSX1VOU1BFQyk7CiAgICAgICAKICAgICAgKyAgICBkc3QtPnR5cGUg
ICAgICAgICAgID0gc3JjLT50eXBlOwogICAgICAgICAgIGRzdC0+Zm9ybWF0ICAgICAgICAgPSBz
cmMtPmZvcm1hdDsKICAgICAgICAgICBkc3QtPndpZHRoICAgICAgICAgID0gc3JjLT53aWR0aDsK
ICAgICAgICAgICBkc3QtPmhlaWdodCAgICAgICAgID0gc3JjLT5oZWlnaHQ7CiAgICAgLUBAIGxp
YmF2dXRpbC9mcmFtZS5jOiBpbnQgYXZfZnJhbWVfcmVmKEFWRnJhbWUgKmRzdCwgY29uc3QgQVZG
cmFtZSAqc3JjKQogICAgICtAQCBsaWJhdnV0aWwvZnJhbWUuYzogRkZfRU5BQkxFX0RFUFJFQ0FU
SU9OX1dBUk5JTkdTCiAgICAgICAKICAgICAgICAgICAvKiBkdXBsaWNhdGUgdGhlIGZyYW1lIGRh
dGEgaWYgaXQncyBub3QgcmVmY291bnRlZCAqLwogICAgICAgICAgIGlmICghc3JjLT5idWZbMF0p
IHsKICAgICBAQCBsaWJhdnV0aWwvZnJhbWUuYzogaW50IGF2X2ZyYW1lX3JlZihBVkZyYW1lICpk
c3QsIGNvbnN0IEFWRnJhbWUgKnNyYykKICAgICAgICAgICAgICAgaWYgKHJldCA8IDApCiAgICAg
ICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAKICAgICAtQEAgbGliYXZ1dGlsL2ZyYW1l
LmM6IGludCBhdl9mcmFtZV9yZWYoQVZGcmFtZSAqZHN0LCBjb25zdCBBVkZyYW1lICpzcmMpCiAg
ICAgK0BAIGxpYmF2dXRpbC9mcmFtZS5jOiBGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MK
ICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgIAogICAgIEBAIGxpYmF2dXRpbC9m
cmFtZS5jOiB2b2lkIGF2X2ZyYW1lX3VucmVmKEFWRnJhbWUgKmZyYW1lKQogICAgICAgICAgIGlm
IChmcmFtZS0+ZXh0ZW5kZWRfZGF0YSAhPSBmcmFtZS0+ZGF0YSkKICAgICAgICAgICAgICAgYXZf
ZnJlZXAoJmZyYW1lLT5leHRlbmRlZF9kYXRhKTsKICAgICAgIAogICAgIC1AQCBsaWJhdnV0aWwv
ZnJhbWUuYzogdm9pZCBhdl9mcmFtZV9tb3ZlX3JlZihBVkZyYW1lICpkc3QsIEFWRnJhbWUgKnNy
YykKICAgICArQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJO
SU5HUwogICAgICAgCiAgICAgICBpbnQgYXZfZnJhbWVfaXNfd3JpdGFibGUoQVZGcmFtZSAqZnJh
bWUpCiAgICAgICB7CiAgICAgQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IGludCBhdl9mcmFtZV9tYWtl
X3dyaXRhYmxlKEFWRnJhbWUgKmZyYW1lKQogICAgICAgICAgIHRtcC5mb3JtYXQgICAgICAgICA9
IGZyYW1lLT5mb3JtYXQ7CiAgICAgICAgICAgdG1wLndpZHRoICAgICAgICAgID0gZnJhbWUtPndp
ZHRoOwogICAgICAgICAgIHRtcC5oZWlnaHQgICAgICAgICA9IGZyYW1lLT5oZWlnaHQ7CiAgICAg
LUBAIGxpYmF2dXRpbC9mcmFtZS5jOiBpbnQgYXZfZnJhbWVfbWFrZV93cml0YWJsZShBVkZyYW1l
ICpmcmFtZSkKICAgICArQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IEZGX0VOQUJMRV9ERVBSRUNBVElP
Tl9XQVJOSU5HUwogICAgICAgICAgIGlmIChmcmFtZS0+aHdfZnJhbWVzX2N0eCkKICAgICAgICAg
ICAgICAgcmV0ID0gYXZfaHdmcmFtZV9nZXRfYnVmZmVyKGZyYW1lLT5od19mcmFtZXNfY3R4LCAm
dG1wLCAwKTsKICAgICAgICAgICBlbHNlCiAgICAgQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IEFWQnVm
ZmVyUmVmICphdl9mcmFtZV9nZXRfcGxhbmVfYnVmZmVyKEFWRnJhbWUgKmZyYW1lLCBpbnQgcGwK
ICAgICAgICAgICBpbnQgcGxhbmVzLCBpOwogICAgICAgCiAgICAgIC0gICAgaWYgKGZyYW1lLT5u
Yl9zYW1wbGVzKSB7CiAgICAgLS0gICAgICAgIGludCBjaGFubmVscyA9IGZyYW1lLT5jaGFubmVs
czsKICAgICAtLSAgICAgICAgaWYgKCFjaGFubmVscykKICAgICAtLSAgICAgICAgICAgIHJldHVy
biBOVUxMOwogICAgIC0tICAgICAgICBDSEVDS19DSEFOTkVMU19DT05TSVNURU5DWShmcmFtZSk7
CiAgICAgLS0gICAgICAgIHBsYW5lcyA9IGF2X3NhbXBsZV9mbXRfaXNfcGxhbmFyKGZyYW1lLT5m
b3JtYXQpID8gY2hhbm5lbHMgOiAxOwogICAgIC0tICAgIH0gZWxzZQogICAgICArICAgIHN3aXRj
aChmcmFtZS0+dHlwZSkgewogICAgICArICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgogICAg
IC0gICAgICAgICBwbGFuZXMgPSA0OwogICAgICsrICAgICAgICBwbGFuZXMgPSA0OwogICAgICAr
ICAgICAgICBicmVhazsKICAgICAgKyAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKICAgICAg
KyAgICAgICAgewogICAgIC0rICAgICAgICAgICAgaW50IGNoYW5uZWxzID0gZnJhbWUtPmNoYW5u
ZWxzOwogICAgIC0rICAgICAgICAgICAgaWYgKCFjaGFubmVscykKICAgICAtKyAgICAgICAgICAg
ICAgICByZXR1cm4gTlVMTDsKICAgICAtKyAgICAgICAgICAgIENIRUNLX0NIQU5ORUxTX0NPTlNJ
U1RFTkNZKGZyYW1lKTsKICAgICAtKyAgICAgICAgICAgIHBsYW5lcyA9IGF2X3NhbXBsZV9mbXRf
aXNfcGxhbmFyKGZyYW1lLT5mb3JtYXQpID8gY2hhbm5lbHMgOiAxOwogICAgIC0rICAgICAgICAg
ICAgYnJlYWs7CiAgICAgKyAgICAgICAgIGludCBjaGFubmVscyA9IGZyYW1lLT5jaF9sYXlvdXQu
bmJfY2hhbm5lbHM7CiAgICAgKyAKICAgICArICNpZiBGRl9BUElfT0xEX0NIQU5ORUxfTEFZT1VU
CiAgICAgK0BAIGxpYmF2dXRpbC9mcmFtZS5jOiBGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklO
R1MKICAgICArICAgICAgICAgaWYgKCFjaGFubmVscykKICAgICArICAgICAgICAgICAgIHJldHVy
biBOVUxMOwogICAgICsgICAgICAgICBwbGFuZXMgPSBhdl9zYW1wbGVfZm10X2lzX3BsYW5hcihm
cmFtZS0+Zm9ybWF0KSA/IGNoYW5uZWxzIDogMTsKICAgICArLSAgICB9IGVsc2UKICAgICArLSAg
ICAgICAgcGxhbmVzID0gNDsKICAgICArKyAgICAgICAgYnJlYWs7CiAgICAgICsgICAgICAgIH0K
ICAgICAgKyAgICBkZWZhdWx0OgogICAgICArICAgICAgICByZXR1cm4gTlVMTDsKICAgICBAQCBs
aWJhdnV0aWwvZnJhbWUuYzogQVZCdWZmZXJSZWYgKmF2X2ZyYW1lX2dldF9wbGFuZV9idWZmZXIo
QVZGcmFtZSAqZnJhbWUsIGludCBwbAogICAgICAgCiAgICAgICAgICAgaWYgKHBsYW5lIDwgMCB8
fCBwbGFuZSA+PSBwbGFuZXMgfHwgIWZyYW1lLT5leHRlbmRlZF9kYXRhW3BsYW5lXSkKICAgICAg
ICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLUBAIGxpYmF2dXRpbC9mcmFtZS5jOiBzdGF0aWMg
aW50IGZyYW1lX2NvcHlfYXVkaW8oQVZGcmFtZSAqZHN0LCBjb25zdCBBVkZyYW1lICpzcmMpCiAg
ICAgK0BAIGxpYmF2dXRpbC9mcmFtZS5jOiBGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MK
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgIH0KICAgICAgIAogICAgIEBAIGxpYmF2dXRpbC9m
cmFtZS5jOiBzdGF0aWMgaW50IGZyYW1lX2NvcHlfYXVkaW8oQVZGcmFtZSAqZHN0LCBjb25zdCBB
VkZyYW1lICpzcmMpCiAgICAgICAgICAgaWYgKGRzdC0+Zm9ybWF0ICE9IHNyYy0+Zm9ybWF0IHx8
IGRzdC0+Zm9ybWF0IDwgMCkKICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK
ICAgICAgIAogICAgICstRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAgICAtICAg
IGlmIChkc3QtPndpZHRoID4gMCAmJiBkc3QtPmhlaWdodCA+IDApCiAgICAgICsgICAgc3dpdGNo
KGRzdC0+dHlwZSkgewogICAgICArICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgogICAgICAg
ICAgICAgICByZXR1cm4gZnJhbWVfY29weV92aWRlbyhkc3QsIHNyYyk7CiAgICAgLS0gICAgZWxz
ZSBpZiAoZHN0LT5uYl9zYW1wbGVzID4gMCAmJiBkc3QtPmNoYW5uZWxzID4gMCkKICAgICArLSAg
ICBlbHNlIGlmIChkc3QtPm5iX3NhbXBsZXMgPiAwICYmCiAgICAgKy0gICAgICAgICAgICAgKGF2
X2NoYW5uZWxfbGF5b3V0X2NoZWNrKCZkc3QtPmNoX2xheW91dCkKICAgICArLSNpZiBGRl9BUElf
T0xEX0NIQU5ORUxfTEFZT1VUCiAgICAgKy0gICAgICAgICAgICAgIHx8IGRzdC0+Y2hhbm5lbF9s
YXlvdXQgfHwgZHN0LT5jaGFubmVscwogICAgICstI2VuZGlmCiAgICAgKy0gICAgICAgICAgICAp
KQogICAgICArICAgIGNhc2UgQVZNRURJQV9UWVBFX0FVRElPOgogICAgICAgICAgICAgICByZXR1
cm4gZnJhbWVfY29weV9hdWRpbyhkc3QsIHNyYyk7CiAgICAgKy1GRl9FTkFCTEVfREVQUkVDQVRJ
T05fV0FSTklOR1MKICAgICAgLQogICAgICAtICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAg
ICAgICsgICAgY2FzZSBBVk1FRElBX1RZUEVfU1VCVElUTEU6CiAgICAgQEAgbGliYXZ1dGlsL2Zy
YW1lLmg6IHR5cGVkZWYgc3RydWN0IEFWRnJhbWUgewogICAgICAgICAgIGludCBmb3JtYXQ7CiAg
ICAgICAKICAgICAgQEAgbGliYXZ1dGlsL2ZyYW1lLmg6IHR5cGVkZWYgc3RydWN0IEFWRnJhbWUg
ewogICAgIC0gICAgICAqIGZvciB0aGUgdGFyZ2V0IGZyYW1lJ3MgcHJpdmF0ZV9yZWYgZmllbGQu
CiAgICAgKyAgICAgICogQ2hhbm5lbCBsYXlvdXQgb2YgdGhlIGF1ZGlvIGRhdGEuCiAgICAgICAg
ICAgICovCiAgICAgLSAgICAgQVZCdWZmZXJSZWYgKnByaXZhdGVfcmVmOwogICAgICsgICAgIEFW
Q2hhbm5lbExheW91dCBjaF9sYXlvdXQ7CiAgICAgICsKICAgICAgKyAgICAvKioKICAgICAgKyAg
ICAgKiBNZWRpYSB0eXBlIG9mIHRoZSBmcmFtZSAoYXVkaW8sIHZpZGVvLCBzdWJ0aXRsZXMuLikK
ICAzOiAgZWMyNjI5MTRiMCAhICAzOiAgYjg5MzVkNWU2OCBhdmNvZGVjL3N1YnRpdGxlczogSW50
cm9kdWNlIG5ldyBmcmFtZS1iYXNlZCBzdWJ0aXRsZSBkZWNvZGluZyBBUEkKICAgICBAQCBDb21t
aXQgbWVzc2FnZQogICAgICAKICAgICAgICAgIFNpZ25lZC1vZmYtYnk6IHNvZnR3b3JreiA8c29m
dHdvcmt6QGhvdG1haWwuY29tPgogICAgICAKICAgICArICMjIGxpYmF2Y29kZWMvYXZjb2RlYy5j
ICMjCiAgICAgK0BAIGxpYmF2Y29kZWMvYXZjb2RlYy5jOiBGRl9ESVNBQkxFX0RFUFJFQ0FUSU9O
X1dBUk5JTkdTCiAgICAgKyBGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MKICAgICArICNl
bmRpZgogICAgICsgCiAgICAgKysgICAgICAgIC8vIFNldCB0aGUgc3VidGl0bGUgdHlwZSBmcm9t
IHRoZSBjb2RlYyBkZXNjcmlwdG9yIGluIGNhc2UgdGhlIGRlY29kZXIgaGFzbid0IGRvbmUgaXRz
ZWxmCiAgICAgKysgICAgICAgIGlmIChhdmN0eC0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf
U1VCVElUTEUgJiYgYXZjdHgtPnN1YnRpdGxlX3R5cGUgPT0gQVZfU1VCVElUTEVfRk1UX1VOS05P
V04pIHsKICAgICArKyAgICAgICAgICAgIGlmKGF2Y3R4LT5jb2RlY19kZXNjcmlwdG9yLT5wcm9w
cyAmIEFWX0NPREVDX1BST1BfQklUTUFQX1NVQikKICAgICArKyAgICAgICAgICAgICAgICBhdmN0
eC0+c3VidGl0bGVfdHlwZSA9IEFWX1NVQlRJVExFX0ZNVF9CSVRNQVA7CiAgICAgKysgICAgICAg
ICAgICBpZihhdmN0eC0+Y29kZWNfZGVzY3JpcHRvci0+cHJvcHMgJiBBVl9DT0RFQ19QUk9QX1RF
WFRfU1VCKQogICAgICsrICAgICAgICAgICAgICAgICBhdmN0eC0+c3VidGl0bGVfdHlwZSA9IEFW
X1NVQlRJVExFX0ZNVF9BU1M7CiAgICAgKysgICAgICAgIH0KICAgICArKwogICAgICsgI2lmIEZG
X0FQSV9BVkNUWF9USU1FQkFTRQogICAgICsgICAgICAgICBpZiAoYXZjdHgtPmZyYW1lcmF0ZS5u
dW0gPiAwICYmIGF2Y3R4LT5mcmFtZXJhdGUuZGVuID4gMCkKICAgICArICAgICAgICAgICAgIGF2
Y3R4LT50aW1lX2Jhc2UgPSBhdl9pbnZfcShhdl9tdWxfcShhdmN0eC0+ZnJhbWVyYXRlLCAoQVZS
YXRpb25hbCl7YXZjdHgtPnRpY2tzX3Blcl9mcmFtZSwgMX0pKTsKICAgICArCiAgICAgICAjIyBs
aWJhdmNvZGVjL2F2Y29kZWMuaCAjIwogICAgICBAQCBsaWJhdmNvZGVjL2F2Y29kZWMuaDogdHlw
ZWRlZiBzdHJ1Y3QgQVZDb2RlY0NvbnRleHQgewogICAgICAgCiAgICAgQEAgbGliYXZjb2RlYy9h
dmNvZGVjLmg6IHR5cGVkZWYgc3RydWN0IEFWQ29kZWNDb250ZXh0IHsKICAgICAgICAgICAgKiBb
U2NyaXB0IEluZm9dIGFuZCBbVjQrIFN0eWxlc10gc2VjdGlvbiwgcGx1cyB0aGUgW0V2ZW50c10g
bGluZSBhbmQKICAgICAgICAgICAgKiB0aGUgRm9ybWF0IGxpbmUgZm9sbG93aW5nLiBJdCBzaG91
bGRuJ3QgaW5jbHVkZSBhbnkgRGlhbG9ndWUgbGluZS4KICAgICAgICAgICAgKiAtIGVuY29kaW5n
OiBTZXQvYWxsb2NhdGVkL2ZyZWVkIGJ5IHVzZXIgKGJlZm9yZSBhdmNvZGVjX29wZW4yKCkpCiAg
ICAgK0BAIGxpYmF2Y29kZWMvYXZjb2RlYy5oOiB0eXBlZGVmIHN0cnVjdCBBVkNvZGVjQ29udGV4
dCB7CiAgICAgKyAgICAgICogICAgICAgICAgICAgVGhlIGRlY29kZXIgY2FuIHRoZW4gb3ZlcnJp
ZGUgZHVyaW5nIGRlY29kaW5nIGFzIG5lZWRlZC4KICAgICArICAgICAgKi8KICAgICArICAgICBB
VkNoYW5uZWxMYXlvdXQgY2hfbGF5b3V0OwogICAgICsrCiAgICAgKysgICAgZW51bSBBVlN1YnRp
dGxlVHlwZSBzdWJ0aXRsZV90eXBlOwogICAgICsgfSBBVkNvZGVjQ29udGV4dDsKICAgICArIAog
ICAgICsgLyoqCiAgICAgIEBAIGxpYmF2Y29kZWMvYXZjb2RlYy5oOiBpbnQgYXZjb2RlY19jbG9z
ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpOwogICAgICAgICogRnJlZSBhbGwgYWxsb2NhdGVkIGRh
dGEgaW4gdGhlIGdpdmVuIHN1YnRpdGxlIHN0cnVjdC4KICAgICAgICAqCiAgICAgQEAgbGliYXZj
b2RlYy9hdmNvZGVjLmg6IGVudW0gQVZDaHJvbWFMb2NhdGlvbiBhdmNvZGVjX2Nocm9tYV9wb3Nf
dG9fZW51bShpbnQgeHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
KmdvdF9zdWJfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWUGFja2V0
ICphdnBrdCk7CiAgICAgIAogICAgIC0gIyMgbGliYXZjb2RlYy9jb2RlY19kZXNjLmMgIyMKICAg
ICAtQEAgbGliYXZjb2RlYy9jb2RlY19kZXNjLmM6IGVudW0gQVZNZWRpYVR5cGUgYXZjb2RlY19n
ZXRfdHlwZShlbnVtIEFWQ29kZWNJRCBjb2RlY19pZCkKICAgICAtICAgICBjb25zdCBBVkNvZGVj
RGVzY3JpcHRvciAqZGVzYyA9IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXQoY29kZWNfaWQpOwogICAg
IC0gICAgIHJldHVybiBkZXNjID8gZGVzYy0+dHlwZSA6IEFWTUVESUFfVFlQRV9VTktOT1dOOwog
ICAgIC0gfQogICAgIC0rCiAgICAgLStlbnVtIEFWU3VidGl0bGVUeXBlIGF2Y29kZWNfZGVzY3Jp
cHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9yICpjb2RlY19k
ZXNjcmlwdG9yKQogICAgIC0rewogICAgIC0rICAgIGlmKGNvZGVjX2Rlc2NyaXB0b3ItPnByb3Bz
ICYgQVZfQ09ERUNfUFJPUF9CSVRNQVBfU1VCKQogICAgIC0rICAgICAgICByZXR1cm4gQVZfU1VC
VElUTEVfRk1UX0JJVE1BUDsKICAgICAtKwogICAgIC0rICAgIGlmKGNvZGVjX2Rlc2NyaXB0b3It
PnByb3BzICYgQVZfQ09ERUNfUFJPUF9URVhUX1NVQikKICAgICAtKyAgICAgICAgcmV0dXJuIEFW
X1NVQlRJVExFX0ZNVF9BU1M7CiAgICAgLSsKICAgICAtKyAgICByZXR1cm4gQVZfU1VCVElUTEVf
Rk1UX1VOS05PV047CiAgICAgLSt9CiAgICAgLQogICAgIC0gIyMgbGliYXZjb2RlYy9jb2RlY19k
ZXNjLmggIyMKICAgICAtQEAgbGliYXZjb2RlYy9jb2RlY19kZXNjLmg6IGNvbnN0IEFWQ29kZWNE
ZXNjcmlwdG9yICphdmNvZGVjX2Rlc2NyaXB0b3JfbmV4dChjb25zdCBBVkNvZGVjRGVzY3JpcHRv
ciAqcHJldik7CiAgICAgLSAgKi8KICAgICAtIGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9yICphdmNv
ZGVjX2Rlc2NyaXB0b3JfZ2V0X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSk7CiAgICAgLSAKICAg
ICAtKy8qKgogICAgIC0rICogUmV0dXJuIHN1YnRpdGxlIGZvcm1hdCBmcm9tIGEgY29kZWMgZGVz
Y3JpcHRvcgogICAgIC0rICoKICAgICAtKyAqIEBwYXJhbSBjb2RlY19kZXNjcmlwdG9yIGNvZGVj
IGRlc2NyaXB0b3IKICAgICAtKyAqIEByZXR1cm4gICAgICAgICAgICAgICAgIHRoZSBzdWJ0aXRs
ZSB0eXBlIChlLmcuIGJpdG1hcCwgdGV4dCkKICAgICAtKyAqLwogICAgIC0rZW51bSBBVlN1YnRp
dGxlVHlwZSBhdmNvZGVjX2Rlc2NyaXB0b3JfZ2V0X3N1YnRpdGxlX2Zvcm1hdChjb25zdCBBVkNv
ZGVjRGVzY3JpcHRvciAqY29kZWNfZGVzY3JpcHRvcik7CiAgICAgLSsKICAgICAtIC8qKgogICAg
IC0gICogQH0KICAgICAtICAqLwogICAgIC0KICAgICAgICMjIGxpYmF2Y29kZWMvZGVjb2RlLmMg
IyMKICAgICAgQEAgbGliYXZjb2RlYy9kZWNvZGUuYzogc3RhdGljIGludCBkZWNvZGVfcmVjZWl2
ZV9mcmFtZV9pbnRlcm5hbChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lKQog
ICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgQEAgbGliYXZjb2RlYy9kZWNvZGUuYzogaW50IGF0
dHJpYnV0ZV9hbGlnbl9hcmcgYXZjb2RlY19zZW5kX3BhY2tldChBVkNvZGVjQ29udGV4dAogICAg
ICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgICAgCiAgICAgICsgICAgaWYg
KGF2Y3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkKICAgICAtKwkJLy8g
dGhpcyBkb2VzIG5vdCBleGFjdGx5IGltcGxlbWVudCB0aGUgYXZjb2RlY19zZW5kX3BhY2tldC9h
dmNvZGVjX3JlY2VpdmVfZnJhbWUgQVBJIAogICAgICsrCQkvLyB0aGlzIGRvZXMgbm90IGV4YWN0
bHkgaW1wbGVtZW50IHRoZSBhdmNvZGVjX3NlbmRfcGFja2V0L2F2Y29kZWNfcmVjZWl2ZV9mcmFt
ZSBBUEkKICAgICAgKwkgICAgLy8gYnV0IHdlIGtub3cgdGhhdCBubyBzdWJ0aXRsZSBkZWNvZGVy
IHByb2R1Y2VzIG11bHRpcGxlIEFWU3VidGl0bGVzIHBlciBwYWNrZXQgdGhyb3VnaAogICAgICAr
CQkvLyB0aGUgbGVnYWN5IEFQSSwgYW5kIHRoaXMgd2lsbCBiZSBjaGFuZ2VkIHdoZW4gbWlncmF0
aW5nIHRoZSBzdWJ0aXRsZSBkZWNvZGVycwogICAgICArCQkvLyB0byB0aGUgZnJhbWUgYmFzZWQg
ZGVjb2RpbmcgYXBpCiAgICAgQEAgbGliYXZjb2RlYy9kZWNvZGUuYzogaW50IGF2Y29kZWNfZGVj
b2RlX3N1YnRpdGxlMihBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGkKICAgICAgLSAgICAg
ICAgICAgIHN1Yi0+Zm9ybWF0ID0gMDsKICAgICAgLSAgICAgICAgZWxzZSBpZiAoYXZjdHgtPmNv
ZGVjX2Rlc2NyaXB0b3ItPnByb3BzICYgQVZfQ09ERUNfUFJPUF9URVhUX1NVQikKICAgICAgLSAg
ICAgICAgICAgIHN1Yi0+Zm9ybWF0ID0gMTsKICAgICAtKyAgICAgICAgc3ViLT5mb3JtYXQgPSBh
dmNvZGVjX2Rlc2NyaXB0b3JfZ2V0X3N1YnRpdGxlX2Zvcm1hdChhdmN0eC0+Y29kZWNfZGVzY3Jp
cHRvcik7CiAgICAgKysgICAgICAgIHN1Yi0+Zm9ybWF0ID0gKHVpbnQxNl90KWF2Y3R4LT5zdWJ0
aXRsZV90eXBlOwogICAgICAgCiAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzdWItPm51bV9yZWN0czsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICBpZiAoYXZjdHgtPnN1
Yl9jaGFyZW5jX21vZGUgIT0gRkZfU1VCX0NIQVJFTkNfTU9ERV9JR05PUkUgJiYKICAgICBAQCBs
aWJhdmNvZGVjL2ludGVybmFsLmg6IGludCBmZl9pbnRfZnJvbV9saXN0X29yX2RlZmF1bHQodm9p
ZCAqY3R4LCBjb25zdCBjaGFyICogdgogICAgICAgI2VuZGlmIC8qIEFWQ09ERUNfSU5URVJOQUxf
SCAqLwogICAgICAKICAgICAgICMjIGxpYmF2Y29kZWMvdXRpbHMuYyAjIwogICAgIC1AQCBsaWJh
dmNvZGVjL3V0aWxzLmM6IGludCBhdl9nZXRfYXVkaW9fZnJhbWVfZHVyYXRpb24oQVZDb2RlY0Nv
bnRleHQgKmF2Y3R4LCBpbnQgZnJhbWVfYnl0ZXMpCiAgICAgK0BAIGxpYmF2Y29kZWMvdXRpbHMu
YzogRkZfRU5BQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCiAgICAgICAgICAgcmV0dXJuIEZGTUFY
KDAsIGR1cmF0aW9uKTsKICAgICAgIH0KICAgICAgIAogICAgIEBAIGxpYmF2Y29kZWMvdXRpbHMu
YzogaW50IGF2X2dldF9hdWRpb19mcmFtZV9kdXJhdGlvbihBVkNvZGVjQ29udGV4dCAqYXZjdHgs
IGludCBmCiAgICAgICsKICAgICAgIGludCBhdl9nZXRfYXVkaW9fZnJhbWVfZHVyYXRpb24yKEFW
Q29kZWNQYXJhbWV0ZXJzICpwYXIsIGludCBmcmFtZV9ieXRlcykKICAgICAgIHsKICAgICAtICAg
ICBpbnQgZHVyYXRpb24gPSBnZXRfYXVkaW9fZnJhbWVfZHVyYXRpb24ocGFyLT5jb2RlY19pZCwg
cGFyLT5zYW1wbGVfcmF0ZSwKICAgICArICAgIGludCBjaGFubmVscyA9IHBhci0+Y2hfbGF5b3V0
Lm5iX2NoYW5uZWxzOwogIC06ICAtLS0tLS0tLS0tID4gIDQ6ICA0YjQ0NzMyZTA3IGF2Y29kZWMv
bGlienZiaTogc2V0IHN1YnRpdGxlIHR5cGUKICA0OiAgNzdiZDY3ZWUzNyAhICA1OiAgOGZhYTdh
NDA0MyBhdmZpbHRlci9zdWJ0aXRsZXM6IFVwZGF0ZSB2Zl9zdWJ0aXRsZXMgdG8gdXNlIG5ldyBk
ZWNvZGluZyBhcGkKICAgICBAQCBsaWJhdmZpbHRlci92Zl9zdWJ0aXRsZXMuYzogc3RhdGljIGlu
dCBhdHRhY2htZW50X2lzX2ZvbnQoQVZTdHJlYW0gKiBzdCkKICAgICAgKwogICAgICAgQVZGSUxU
RVJfREVGSU5FX0NMQVNTKHN1YnRpdGxlcyk7CiAgICAgICAKICAgICArK3N0YXRpYyBlbnVtIEFW
U3VidGl0bGVUeXBlIGdldF9zdWJ0aXRsZV9mb3JtYXQoY29uc3QgQVZDb2RlY0Rlc2NyaXB0b3Ig
KmNvZGVjX2Rlc2NyaXB0b3IpCiAgICAgKyt7CiAgICAgKysgICAgaWYoY29kZWNfZGVzY3JpcHRv
ci0+cHJvcHMgJiBBVl9DT0RFQ19QUk9QX0JJVE1BUF9TVUIpCiAgICAgKysgICAgICAgIHJldHVy
biBBVl9TVUJUSVRMRV9GTVRfQklUTUFQOwogICAgICsrCiAgICAgKysgICAgaWYoY29kZWNfZGVz
Y3JpcHRvci0+cHJvcHMgJiBBVl9DT0RFQ19QUk9QX1RFWFRfU1VCKQogICAgICsrICAgICAgICBy
ZXR1cm4gQVZfU1VCVElUTEVfRk1UX0FTUzsKICAgICArKwogICAgICsrICAgIHJldHVybiBBVl9T
VUJUSVRMRV9GTVRfVU5LTk9XTjsKICAgICArK30KICAgICArKwogICAgICAgc3RhdGljIGF2X2Nv
bGQgaW50IGluaXRfc3VidGl0bGVzKEFWRmlsdGVyQ29udGV4dCAqY3R4KQogICAgICsgewogICAg
ICsgICAgIGludCBqLCByZXQsIHNpZDsKICAgICAgQEAgbGliYXZmaWx0ZXIvdmZfc3VidGl0bGVz
LmM6IHN0YXRpYyBhdl9jb2xkIGludCBpbml0X3N1YnRpdGxlcyhBVkZpbHRlckNvbnRleHQgKmN0
eCkKICAgICAgICAgICBBVlN0cmVhbSAqc3Q7CiAgICAgICAgICAgQVZQYWNrZXQgcGt0OwogICAg
IEBAIGxpYmF2ZmlsdGVyL3ZmX3N1YnRpdGxlcy5jOiBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9z
dWJ0aXRsZXMoQVZGaWx0ZXJDb250ZXh0ICpjCiAgICAgICsKICAgICAgICAgICBkZWNfZGVzYyA9
IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXQoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCk7CiAgICAgIC0g
ICAgaWYgKGRlY19kZXNjICYmICEoZGVjX2Rlc2MtPnByb3BzICYgQVZfQ09ERUNfUFJPUF9URVhU
X1NVQikpIHsKICAgICAtKyAgICBzdWJ0aXRsZV9mb3JtYXQgPSBhdmNvZGVjX2Rlc2NyaXB0b3Jf
Z2V0X3N1YnRpdGxlX2Zvcm1hdChkZWNfZGVzYyk7CiAgICAgKysgICAgc3VidGl0bGVfZm9ybWF0
ID0gZ2V0X3N1YnRpdGxlX2Zvcm1hdChkZWNfZGVzYyk7CiAgICAgICsKICAgICAgKyAgICBpZiAo
c3VidGl0bGVfZm9ybWF0ICE9IEFWX1NVQlRJVExFX0ZNVF9BU1MpIHsKICAgICAgICAgICAgICAg
YXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAogIDU6ICAyNmJhZDBjMDg4ICEgIDY6ICAxNjY0MDI2
ZDdjIGF2Y29kZWMsYXZ1dGlsOiBNb3ZlIGFzcyBoZWxwZXIgZnVuY3Rpb25zIHRvIGF2dXRpbCBh
cyBhdnByaXZfIGFuZCBleHRlbmQgYXNzIGRpYWxvZyBwYXJzaW5nCiAgICAgQEAgbGliYXZjb2Rl
Yy9hc3MuaAogICAgICArc3RhdGljIGlubGluZSBpbnQgZmZfYXNzX3N1YnRpdGxlX2hlYWRlcl9k
ZWZhdWx0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICAgK3sKICAgICAgKyAgICBhdmN0eC0+
c3VidGl0bGVfaGVhZGVyID0gKHVpbnQ4X3QgKilhdnByaXZfYXNzX2dldF9zdWJ0aXRsZV9oZWFk
ZXJfZGVmYXVsdCghKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQklURVhBQ1QpKTsKICAg
ICAtKwogICAgICsgCiAgICAgKy0vKioKICAgICArLSAqIEFkZCBhbiBBU1MgZGlhbG9nIHRvIGEg
c3VidGl0bGUuCiAgICAgKy0gKi8KICAgICArLWludCBmZl9hc3NfYWRkX3JlY3QoQVZTdWJ0aXRs
ZSAqc3ViLCBjb25zdCBjaGFyICpkaWFsb2csCiAgICAgKy0gICAgICAgICAgICAgICAgICAgIGlu
dCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAgICAgKy0gICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNwZWFrZXIpOwogICAgICArICAgIGlmICghYXZjdHgt
PnN1YnRpdGxlX2hlYWRlcikKICAgICAgKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsK
ICAgICAgKyAgICBhdmN0eC0+c3VidGl0bGVfaGVhZGVyX3NpemUgPSBzdHJsZW4oKGNoYXIgKilh
dmN0eC0+c3VidGl0bGVfaGVhZGVyKTsKICAgICBAQCBsaWJhdmNvZGVjL2Fzcy5oCiAgICAgICAv
KioKICAgICAgICAqIEFkZCBhbiBBU1MgZGlhbG9nIHRvIGEgc3VidGl0bGUuCiAgICAgICAgKi8K
ICAgICAtLWludCBmZl9hc3NfYWRkX3JlY3QoQVZTdWJ0aXRsZSAqc3ViLCBjb25zdCBjaGFyICpk
aWFsb2csCiAgICAgKy1pbnQgZmZfYXNzX2FkZF9yZWN0MihBVlN1YnRpdGxlICpzdWIsIGNvbnN0
IGNoYXIgKmRpYWxvZywKICAgICArLSAgICAgICAgICAgICAgICAgICAgIGludCByZWFkb3JkZXIs
IGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAgICAgKy0gICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpzcGVha2VyLCB1bnNpZ25lZCAqbmJfcmVjdF9hbGxvY2F0ZWQpOwogICAg
ICArc3RhdGljIGlubGluZSBpbnQgYXZwcml2X2Fzc19hZGRfcmVjdChBVlN1YnRpdGxlICpzdWIs
IGNvbnN0IGNoYXIgKmRpYWxvZywKICAgICAtICAgICAgICAgICAgICAgICAgICAgaW50IHJlYWRv
cmRlciwgaW50IGxheWVyLCBjb25zdCBjaGFyICpzdHlsZSwKICAgICAtLSAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqc3BlYWtlcik7CiAgICAgKysgICAgICAgICAgICAgICAgICAgIGlu
dCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAgICAgICsgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNwZWFrZXIpCiAgICAgICt7CiAgICAgICsgICAgY2hh
ciAqYXNzX3N0cjsKICAgICBAQCBsaWJhdmNvZGVjL2Fzc2RlYy5jCiAgICAgICAKICAgICAgICNp
bmNsdWRlICJhdmNvZGVjLmgiCiAgICAgIC0jaW5jbHVkZSAiYXNzLmgiCiAgICAgKyAjaW5jbHVk
ZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICArICNpbmNsdWRlICJjb25maWdfY29tcG9uZW50cy5o
IgogICAgICArI2luY2x1ZGUgImxpYmF2dXRpbC9hc3NfaW50ZXJuYWwuaCIKICAgICAtICNpbmNs
dWRlICJpbnRlcm5hbC5oIgogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRlcm5hbC5oIgog
ICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKICAgICArIAogICAgICAKICAgICAgICMj
IGxpYmF2Y29kZWMvYXNzZW5jLmMgIyMKICAgICAgQEAKICAgICBAQCBsaWJhdmNvZGVjL2Fzc2Vu
Yy5jCiAgICAgICAKICAgICAgICNpbmNsdWRlICJhdmNvZGVjLmgiCiAgICAgIC0jaW5jbHVkZSAi
YXNzLmgiCiAgICAgKyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRl
ICJsaWJhdnV0aWwvYXNzX2ludGVybmFsLmgiCiAgICAgLSAjaW5jbHVkZSAiaW50ZXJuYWwuaCIK
ICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKICAgICAgICNpbmNsdWRlICJs
aWJhdnV0aWwvaW50ZXJuYWwuaCIKICAgICArICNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCiAg
ICAgIAogICAgICAgIyMgbGliYXZjb2RlYy9jY2FwdGlvbl9kZWMuYyAjIwogICAgICBAQCBsaWJh
dmNvZGVjL2NjYXB0aW9uX2RlYy5jOiBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9kZWNvZGVyKEFW
Q29kZWNDb250ZXh0ICphdmN0eCkKICAgICBAQCBsaWJhdmNvZGVjL2NjYXB0aW9uX2RlYy5jOiBz
dGF0aWMgYXZfY29sZCBpbnQgaW5pdF9kZWNvZGVyKEFWQ29kZWNDb250ZXh0ICphdmN0eAogICAg
ICAgICAgIGlmIChyZXQgPCAwKSB7CiAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAg
ICAgfQogICAgIC1AQCBsaWJhdmNvZGVjL2NjYXB0aW9uX2RlYy5jOiBzdGF0aWMgaW50IGRlY29k
ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZvaWQgKmRhdGEsIGludCAqZ290X3N1YiwgQVZQYWNr
ZXQgKmF2cAogICAgICtAQCBsaWJhdmNvZGVjL2NjYXB0aW9uX2RlYy5jOiBzdGF0aWMgaW50IGRl
Y29kZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAgICArICAgICBp
bnQgbGVuID0gYXZwa3QtPnNpemU7CiAgICAgKyAgICAgaW50IHJldCA9IDA7CiAgICAgKyAgICAg
aW50IGk7CiAgICAgKy0gICAgdW5zaWduZWQgbmJfcmVjdF9hbGxvY2F0ZWQgPSAwOwogICAgICsg
CiAgICAgKyAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSAzKSB7CiAgICAgKyAgICAgICAg
IHVpbnQ4X3QgaGksIGNjX3R5cGUgPSBicHRyW2ldICYgMTsKICAgICArQEAgbGliYXZjb2RlYy9j
Y2FwdGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBB
VlN1YnRpdGxlICpzdWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFWX1RJTUVfQkFTRV9RLCBtc190Yik7CiAgICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgc3ViLT5lbmRfZGlzcGxheV90aW1lID0g
LTE7CiAgICAgLS0gICAgICAgICAgICByZXQgPSBmZl9hc3NfYWRkX3JlY3Qoc3ViLCBjdHgtPmJ1
ZmZlcltiaWR4XS5zdHIsIGN0eC0+cmVhZG9yZGVyKyssIDAsIE5VTEwsIE5VTEwpOwogICAgICst
ICAgICAgICAgICAgcmV0ID0gZmZfYXNzX2FkZF9yZWN0MihzdWIsIGN0eC0+YnVmZmVyW2JpZHhd
LnN0ciwgY3R4LT5yZWFkb3JkZXIrKywgMCwgTlVMTCwgTlVMTCwgJm5iX3JlY3RfYWxsb2NhdGVk
KTsKICAgICAgKyAgICAgICAgICAgIHJldCA9IGF2cHJpdl9hc3NfYWRkX3JlY3Qoc3ViLCBjdHgt
PmJ1ZmZlcltiaWR4XS5zdHIsIGN0eC0+cmVhZG9yZGVyKyssIDAsIE5VTEwsIE5VTEwpOwogICAg
ICAgICAgICAgICAgICAgaWYgKHJldCA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJldDsKICAgICAgICAgICAgICAgICAgIGN0eC0+bGFzdF9yZWFsX3RpbWUgPSBzdWItPnB0czsK
ICAgICAtQEAgbGliYXZjb2RlYy9jY2FwdGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUoQVZD
b2RlY0NvbnRleHQgKmF2Y3R4LCB2b2lkICpkYXRhLCBpbnQgKmdvdF9zdWIsIEFWUGFja2V0ICph
dnAKICAgICArQEAgbGliYXZjb2RlYy9jY2FwdGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUo
QVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlN1YnRpdGxlICpzdWIsCiAgICAgICAKICAgICAgICAg
ICBpZiAoIWJwdHIgJiYgIWN0eC0+cmVhbF90aW1lICYmIGN0eC0+YnVmZmVyWyFjdHgtPmJ1ZmZl
cl9pbmRleF0uc3RyWzBdKSB7CiAgICAgICAgICAgICAgIGJpZHggPSAhY3R4LT5idWZmZXJfaW5k
ZXg7CiAgICAgLS0gICAgICAgIHJldCA9IGZmX2Fzc19hZGRfcmVjdChzdWIsIGN0eC0+YnVmZmVy
W2JpZHhdLnN0ciwgY3R4LT5yZWFkb3JkZXIrKywgMCwgTlVMTCwgTlVMTCk7CiAgICAgKy0gICAg
ICAgIHJldCA9IGZmX2Fzc19hZGRfcmVjdDIoc3ViLCBjdHgtPmJ1ZmZlcltiaWR4XS5zdHIsIGN0
eC0+cmVhZG9yZGVyKyssIDAsIE5VTEwsIE5VTEwsICZuYl9yZWN0X2FsbG9jYXRlZCk7CiAgICAg
ICsgICAgICAgIHJldCA9IGF2cHJpdl9hc3NfYWRkX3JlY3Qoc3ViLCBjdHgtPmJ1ZmZlcltiaWR4
XS5zdHIsIGN0eC0+cmVhZG9yZGVyKyssIDAsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICBp
ZiAocmV0IDwgMCkKICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICAgICAg
IHN1Yi0+cHRzID0gY3R4LT5idWZmZXJfdGltZVsxXTsKICAgICAtQEAgbGliYXZjb2RlYy9jY2Fw
dGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2b2lk
ICpkYXRhLCBpbnQgKmdvdF9zdWIsIEFWUGFja2V0ICphdnAKICAgICArQEAgbGliYXZjb2RlYy9j
Y2FwdGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBB
VlN1YnRpdGxlICpzdWIsCiAgICAgICAgICAgICAgIGNhcHR1cmVfc2NyZWVuKGN0eCk7CiAgICAg
ICAgICAgICAgIGN0eC0+YnVmZmVyX2NoYW5nZWQgPSAwOwogICAgICAgCiAgICAgLS0gICAgICAg
IHJldCA9IGZmX2Fzc19hZGRfcmVjdChzdWIsIGN0eC0+YnVmZmVyW2JpZHhdLnN0ciwgY3R4LT5y
ZWFkb3JkZXIrKywgMCwgTlVMTCwgTlVMTCk7CiAgICAgKy0gICAgICAgIHJldCA9IGZmX2Fzc19h
ZGRfcmVjdDIoc3ViLCBjdHgtPmJ1ZmZlcltiaWR4XS5zdHIsIGN0eC0+cmVhZG9yZGVyKyssIDAs
IE5VTEwsIE5VTEwsICZuYl9yZWN0X2FsbG9jYXRlZCk7CiAgICAgICsgICAgICAgIHJldCA9IGF2
cHJpdl9hc3NfYWRkX3JlY3Qoc3ViLCBjdHgtPmJ1ZmZlcltiaWR4XS5zdHIsIGN0eC0+cmVhZG9y
ZGVyKyssIDAsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICAgICAgIHN1Yi0+ZW5kX2Rpc3BsYXlf
dGltZSA9IC0xOwogICAgICAKICAgICAgICMjIGxpYmF2Y29kZWMvamFjb3N1YmRlYy5jICMjCiAg
ICAgLUBAIGxpYmF2Y29kZWMvamFjb3N1YmRlYy5jOiBzdGF0aWMgaW50IGphY29zdWJfZGVjb2Rl
X2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKICAgICArQEAgbGliYXZjb2RlYy9qYWNvc3Vi
ZGVjLmM6IHN0YXRpYyBpbnQgamFjb3N1Yl9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2
Y3R4LCBBVlN1YnRpdGxlICpzdWIsCiAgICAgICAKICAgICAgICAgICAgICAgYXZfYnByaW50X2lu
aXQoJmJ1ZmZlciwgSlNTX01BWF9MSU5FU0laRSwgSlNTX01BWF9MSU5FU0laRSk7CiAgICAgICAg
ICAgICAgIGphY29zdWJfdG9fYXNzKGF2Y3R4LCAmYnVmZmVyLCBwdHIpOwogICAgIEBAIGxpYmF2
Y29kZWMvbGlienZiaS10ZWxldGV4dGRlYy5jOiBzdGF0aWMgaW50IGdlbl9zdWJfYml0bWFwKFRl
bGV0ZXh0Q29udGV4dCAqY3R4CiAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgIH0K
ICAgICAgIAogICAgIC1AQCBsaWJhdmNvZGVjL2xpYnp2YmktdGVsZXRleHRkZWMuYzogc3RhdGlj
IGludCB0ZWxldGV4dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2b2lkICpk
YXRhLCBpbnQgKmdvdF9zdWIKICAgICArQEAgbGliYXZjb2RlYy9saWJ6dmJpLXRlbGV0ZXh0ZGVj
LmM6IHN0YXRpYyBpbnQgdGVsZXRleHRfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0
eCwgQVZTdWJ0aXRsZSAqc3ViLAogICAgICAgICAgICAgICBzdWItPm51bV9yZWN0cyA9IDA7CiAg
ICAgICAgICAgICAgIHN1Yi0+cHRzID0gY3R4LT5wYWdlcy0+cHRzOwogICAgICAgCiAgICAgQEAg
bGliYXZjb2RlYy9saWJ6dmJpLXRlbGV0ZXh0ZGVjLmM6IHN0YXRpYyBpbnQgdGVsZXRleHRfZGVj
b2RlX2ZyYW1lKEFWQ29kZWNDb250ZXgKICAgICAgICAgICAgICAgICAgICAgICBzdWItPm51bV9y
ZWN0cyA9IDE7CiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy9taWNyb2R2ZGRlYy5jICMjCiAg
ICAgLUBAIGxpYmF2Y29kZWMvbWljcm9kdmRkZWMuYzogc3RhdGljIGludCBtaWNyb2R2ZF9kZWNv
ZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICtAQCBsaWJhdmNvZGVjL21pY3Jv
ZHZkZGVjLmM6IHN0YXRpYyBpbnQgbWljcm9kdmRfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0
ICphdmN0eCwgQVZTdWJ0aXRsZSAqc3ViLAogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQog
ICAgICAgICAgIGlmIChuZXdfbGluZS5sZW4pIHsKICAgICBAQCBsaWJhdmNvZGVjL21vdnRleHRk
ZWMuYwogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIKICAgICAgICNpbmNsdWRl
ICJsaWJhdnV0aWwvYnByaW50LmgiCiAgICAgICAjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3
cml0ZS5oIgogICAgIC1AQCBsaWJhdmNvZGVjL21vdnRleHRkZWMuYzogc3RhdGljIGludCBtb3Zf
dGV4dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICtAQCBsaWJhdmNv
ZGVjL21vdnRleHRkZWMuYzogc3RhdGljIGludCBtb3ZfdGV4dF9kZWNvZGVfZnJhbWUoQVZDb2Rl
Y0NvbnRleHQgKmF2Y3R4LCBBVlN1YnRpdGxlICpzdWIsCiAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgIHRleHRfdG9fYXNzKCZidWYsIHB0ciwgZW5kLCBhdmN0eCk7CiAgICAgICAKICAg
ICBAQCBsaWJhdmNvZGVjL21vdnRleHRlbmMuYwogICAgICArI2luY2x1ZGUgImxpYmF2dXRpbC9h
c3Nfc3BsaXRfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX2ludGVy
bmFsLmgiCiAgICAgICAjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgogICAgIC0gI2luY2x1ZGUgImlu
dGVybmFsLmgiCiAgICAgKyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgIAogICAg
ICBAQCBsaWJhdmNvZGVjL21vdnRleHRlbmMuYzogc3RhdGljIGludCBtb3ZfdGV4dF9lbmNvZGVf
Y2xvc2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAgewogICAgIEBAIGxpYmF2Y29kZWMv
bW92dGV4dGVuYy5jOiBzdGF0aWMgaW50IG1vdl90ZXh0X2VuY29kZV9mcmFtZShBVkNvZGVjQ29u
dGV4dCAqYXZjdHgsCiAgICAgICAgICAgaWYgKHMtPmJ1ZmZlci5sZW4gPiBVSU5UMTZfTUFYKQog
ICAgICAKICAgICAgICMjIGxpYmF2Y29kZWMvbXBsMmRlYy5jICMjCiAgICAgLUBAIGxpYmF2Y29k
ZWMvbXBsMmRlYy5jOiBzdGF0aWMgaW50IG1wbDJfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0
ICphdmN0eCwgdm9pZCAqZGF0YSwKICAgICArQEAgbGliYXZjb2RlYy9tcGwyZGVjLmM6IHN0YXRp
YyBpbnQgbXBsMl9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlN1YnRpdGxl
ICpzdWIsCiAgICAgICAKICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnVmLCAwLCBBVl9CUFJJ
TlRfU0laRV9VTkxJTUlURUQpOwogICAgICAgICAgIGlmIChwdHIgJiYgYXZwa3QtPnNpemUgPiAw
ICYmICpwdHIgJiYgIW1wbDJfZXZlbnRfdG9fYXNzKCZidWYsIHB0cikpCiAgICAgQEAgbGliYXZj
b2RlYy9tcGwyZGVjLmM6IHN0YXRpYyBpbnQgbXBsMl9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRl
eHQgKmF2Y3R4LCB2b2lkICoKICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgCiAgICAg
ICAjIyBsaWJhdmNvZGVjL3JlYWx0ZXh0ZGVjLmMgIyMKICAgICAtQEAgbGliYXZjb2RlYy9yZWFs
dGV4dGRlYy5jOiBzdGF0aWMgaW50IHJlYWx0ZXh0X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4
dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMvcmVhbHRleHRkZWMuYzogc3RhdGljIGludCBy
ZWFsdGV4dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlN1YnRpdGxlICpz
dWIsCiAgICAgICAKICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnVmLCAwLCA0MDk2KTsKICAg
ICAgICAgICBpZiAocHRyICYmIGF2cGt0LT5zaXplID4gMCAmJiAhcnRfZXZlbnRfdG9fYXNzKCZi
dWYsIHB0cikpCiAgICAgQEAgbGliYXZjb2RlYy9yZWFsdGV4dGRlYy5jOiBzdGF0aWMgaW50IHJl
YWx0ZXh0X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgKICAgICAgICAgICAgICAg
cmV0dXJuIHJldDsKICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL3NhbWlkZWMuYyAjIwogICAg
IC1AQCBsaWJhdmNvZGVjL3NhbWlkZWMuYzogc3RhdGljIGludCBzYW1pX2RlY29kZV9mcmFtZShB
VkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMvc2FtaWRlYy5jOiBzdGF0
aWMgaW50IHNhbWlfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZTdWJ0aXRs
ZSAqc3ViLAogICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgICAgICAgICAgIHJl
dHVybiByZXQ7CiAgICAgICAgICAgICAgIC8vIFRPRE86IHBhc3MgZXNjYXBlZCBzYW1pLT5lbmNv
ZGVkX3NvdXJjZS5zdHIgYXMgc291cmNlCiAgICAgQEAgbGliYXZjb2RlYy9zYW1pZGVjLmM6IHN0
YXRpYyBpbnQgc2FtaV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICAg
ICAgIH0KICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL3NydGRlYy5jICMjCiAgICAgLUBAIGxp
YmF2Y29kZWMvc3J0ZGVjLmM6IHN0YXRpYyBpbnQgc3J0X2RlY29kZV9mcmFtZShBVkNvZGVjQ29u
dGV4dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMvc3J0ZGVjLmM6IHN0YXRpYyBpbnQgc3J0
X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAg
ICAgIAogICAgICAgICAgIHJldCA9IHNydF90b19hc3MoYXZjdHgsICZidWZmZXIsIGF2cGt0LT5k
YXRhLCB4MSwgeTEsIHgyLCB5Mik7CiAgICAgICAgICAgaWYgKHJldCA+PSAwKQogICAgIEBAIGxp
YmF2Y29kZWMvc3J0ZW5jLmMKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYnByaW50LmgiCiAg
ICAgIC0jaW5jbHVkZSAiYXNzX3NwbGl0LmgiCiAgICAgIC0jaW5jbHVkZSAiYXNzLmgiCiAgICAg
KyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRlICJsaWJhdnV0aWwv
YXNzX3NwbGl0X2ludGVybmFsLmgiCiAgICAgICsjaW5jbHVkZSAibGliYXZ1dGlsL2Fzc19pbnRl
cm5hbC5oIgogICAgIC0gI2luY2x1ZGUgImludGVybmFsLmgiCiAgICAgICAKICAgICAgIAogICAg
ICsgI2RlZmluZSBTUlRfU1RBQ0tfU0laRSA2NAogICAgICBAQCBsaWJhdmNvZGVjL3NydGVuYy5j
OiBzdGF0aWMgdm9pZCBzcnRfc3RhY2tfcHVzaF9wb3AoU1JUQ29udGV4dCAqcywgY29uc3QgY2hh
ciBjLCBpbnQgY2xvc2UpCiAgICAgICAKICAgICAgIHN0YXRpYyB2b2lkIHNydF9zdHlsZV9hcHBs
eShTUlRDb250ZXh0ICpzLCBjb25zdCBjaGFyICpzdHlsZSkKICAgICBAQCBsaWJhdmNvZGVjL3Ny
dGVuYy5jOiBzdGF0aWMgaW50IHRleHRfZW5jb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0
eCwKICAgICAgIH0KICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL3N1YnZpZXdlcmRlYy5jICMj
CiAgICAgLUBAIGxpYmF2Y29kZWMvc3Vidmlld2VyZGVjLmM6IHN0YXRpYyBpbnQgc3Vidmlld2Vy
X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMv
c3Vidmlld2VyZGVjLmM6IHN0YXRpYyBpbnQgc3Vidmlld2VyX2RlY29kZV9mcmFtZShBVkNvZGVj
Q29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAgICAgIAogICAgICAgICAgIGF2X2Jw
cmludF9pbml0KCZidWYsIDAsIEFWX0JQUklOVF9TSVpFX1VOTElNSVRFRCk7CiAgICAgICAgICAg
aWYgKHB0ciAmJiBhdnBrdC0+c2l6ZSA+IDAgJiYgIXN1YnZpZXdlcl9ldmVudF90b19hc3MoJmJ1
ZiwgcHRyKSkKICAgICBAQCBsaWJhdmNvZGVjL3N1YnZpZXdlcmRlYy5jOiBzdGF0aWMgaW50IHN1
YnZpZXdlcl9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2YwogICAgICAgICAgICAgICBy
ZXR1cm4gcmV0OwogICAgICAKICAgICAgICMjIGxpYmF2Y29kZWMvdGV4dGRlYy5jICMjCiAgICAg
LUBAIGxpYmF2Y29kZWMvdGV4dGRlYy5jOiBzdGF0aWMgaW50IHRleHRfZGVjb2RlX2ZyYW1lKEFW
Q29kZWNDb250ZXh0ICphdmN0eCwgdm9pZCAqZGF0YSwKICAgICArQEAgbGliYXZjb2RlYy90ZXh0
ZGVjLmM6IHN0YXRpYyBpbnQgdGV4dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4
LCBBVlN1YnRpdGxlICpzdWIsCiAgICAgICAKICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnVm
LCAwLCBBVl9CUFJJTlRfU0laRV9VTkxJTUlURUQpOwogICAgICAgICAgIGlmIChwdHIgJiYgYXZw
a3QtPnNpemUgPiAwICYmICpwdHIpIHsKICAgICBAQCBsaWJhdmNvZGVjL3R0bWxlbmMuYzogc3Rh
dGljIGF2X2NvbGQgaW50IHR0bWxfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQog
ICAgICAgCiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy93ZWJ2dHRkZWMuYyAjIwogICAgIC1A
QCBsaWJhdmNvZGVjL3dlYnZ0dGRlYy5jOiBzdGF0aWMgaW50IHdlYnZ0dF9kZWNvZGVfZnJhbWUo
QVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICtAQCBsaWJhdmNvZGVjL3dlYnZ0dGRlYy5jOiBz
dGF0aWMgaW50IHdlYnZ0dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlN1
YnRpdGxlICpzdWIsCiAgICAgICAKICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnVmLCAwLCBB
Vl9CUFJJTlRfU0laRV9VTkxJTUlURUQpOwogICAgICAgICAgIGlmIChwdHIgJiYgYXZwa3QtPnNp
emUgPiAwICYmICF3ZWJ2dHRfZXZlbnRfdG9fYXNzKCZidWYsIHB0cikpCiAgICAgQEAgbGliYXZj
b2RlYy93ZWJ2dHRlbmMuYwogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9icHJpbnQuaCIKICAg
ICAgLSNpbmNsdWRlICJhc3Nfc3BsaXQuaCIKICAgICAgLSNpbmNsdWRlICJhc3MuaCIKICAgICAr
ICNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgogICAgICArI2luY2x1ZGUgImxpYmF2dXRpbC9h
c3Nfc3BsaXRfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX2ludGVy
bmFsLmgiCiAgICAgLSAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICAgICAgIAogICAgICAgI2RlZmlu
ZSBXRUJWVFRfU1RBQ0tfU0laRSA2NAogICAgICsgdHlwZWRlZiBzdHJ1Y3QgewogICAgICBAQCBs
aWJhdmNvZGVjL3dlYnZ0dGVuYy5jOiBzdGF0aWMgdm9pZCB3ZWJ2dHRfc3RhY2tfcHVzaF9wb3Ao
V2ViVlRUQ29udGV4dCAqcywgY29uc3QgY2hhciBjLCBpbnQgY2xvc2UpCiAgICAgICAKICAgICAg
IHN0YXRpYyB2b2lkIHdlYnZ0dF9zdHlsZV9hcHBseShXZWJWVFRDb250ZXh0ICpzLCBjb25zdCBj
aGFyICpzdHlsZSkKICAgICBAQCBsaWJhdnV0aWwvYXNzLmM6IGNoYXIgKmZmX2Fzc19nZXRfZGlh
bG9nKGludCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqcwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVha2VyID8gc3BlYWtlciA6ICIiLCB0ZXh0KTsKICAgICAgIH0K
ICAgICAgIAogICAgIC0taW50IGZmX2Fzc19hZGRfcmVjdChBVlN1YnRpdGxlICpzdWIsIGNvbnN0
IGNoYXIgKmRpYWxvZywKICAgICArLWludCBmZl9hc3NfYWRkX3JlY3QyKEFWU3VidGl0bGUgKnN1
YiwgY29uc3QgY2hhciAqZGlhbG9nLAogICAgICAtICAgICAgICAgICAgICAgICAgICBpbnQgcmVh
ZG9yZGVyLCBpbnQgbGF5ZXIsIGNvbnN0IGNoYXIgKnN0eWxlLAogICAgIC0tICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpzcGVha2VyKQogICAgIC0rY2hhciAqYXZwcml2X2Fzc19nZXRf
ZGlhbG9nX2V4KGludCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAg
ICAgLSsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcGVha2VyLCBpbnQgbWFy
Z2luX2wsIGludCBtYXJnaW5fciwKICAgICAtKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
YXJnaW5fdiwgY29uc3QgY2hhciAqdGV4dCkKICAgICAtIHsKICAgICAtLSAgICBBVlN1YnRpdGxl
UmVjdCAqKnJlY3RzLCAqcmVjdDsKICAgICArLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqc3BlYWtlciwgdW5zaWduZWQgKm5iX3JlY3RfYWxsb2NhdGVkKQogICAgICstewogICAgICst
ICAgIEFWU3VidGl0bGVSZWN0ICoqcmVjdHMgPSBzdWItPnJlY3RzLCAqcmVjdDsKICAgICAgLSAg
ICBjaGFyICphc3Nfc3RyOwogICAgICstICAgIHVpbnQ2NF90IG5ld19uYiA9IDA7CiAgICAgIC0K
ICAgICAtLSAgICByZWN0cyA9IGF2X3JlYWxsb2NfYXJyYXkoc3ViLT5yZWN0cywgc3ViLT5udW1f
cmVjdHMrMSwgc2l6ZW9mKCpzdWItPnJlY3RzKSk7CiAgICAgLS0gICAgaWYgKCFyZWN0cykKICAg
ICArLSAgICBpZiAoc3ViLT5udW1fcmVjdHMgPj0gVUlOVF9NQVgpCiAgICAgIC0gICAgICAgIHJl
dHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgLS0gICAgc3ViLT5yZWN0cyA9IHJlY3RzOwogICAg
ICstCiAgICAgKy0gICAgaWYgKG5iX3JlY3RfYWxsb2NhdGVkICYmICpuYl9yZWN0X2FsbG9jYXRl
ZCA8PSBzdWItPm51bV9yZWN0cykgewogICAgICstICAgICAgICBpZiAoc3ViLT5udW1fcmVjdHMg
PCBVSU5UX01BWCAvIDE3ICogMTYpIHsKICAgICArLSAgICAgICAgICAgIG5ld19uYiA9IHN1Yi0+
bnVtX3JlY3RzICsgc3ViLT5udW1fcmVjdHMvMTYgKyAxOwogICAgICstICAgICAgICB9IGVsc2UK
ICAgICArLSAgICAgICAgICAgIG5ld19uYiA9IFVJTlRfTUFYOwogICAgICstICAgIH0gZWxzZSBp
ZiAoIW5iX3JlY3RfYWxsb2NhdGVkKQogICAgICstICAgICAgICBuZXdfbmIgPSBzdWItPm51bV9y
ZWN0cyArIDE7CiAgICAgKy0KICAgICArLSAgICBpZiAobmV3X25iKSB7CiAgICAgKy0gICAgICAg
IHJlY3RzID0gYXZfcmVhbGxvY19hcnJheShyZWN0cywgbmV3X25iLCBzaXplb2YoKnN1Yi0+cmVj
dHMpKTsKICAgICArLSAgICAgICAgaWYgKCFyZWN0cykKICAgICArLSAgICAgICAgICAgIHJldHVy
biBBVkVSUk9SKEVOT01FTSk7CiAgICAgKy0gICAgICAgIGlmIChuYl9yZWN0X2FsbG9jYXRlZCkK
ICAgICArLSAgICAgICAgICAgICpuYl9yZWN0X2FsbG9jYXRlZCA9IG5ld19uYjsKICAgICArLSAg
ICAgICAgc3ViLT5yZWN0cyA9IHJlY3RzOwogICAgICstICAgIH0KICAgICArLQogICAgICAtICAg
IHJlY3QgICAgICAgPSBhdl9tYWxsb2N6KHNpemVvZigqcmVjdCkpOwogICAgICAtICAgIGlmICgh
cmVjdCkKICAgICAgLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICBAQCBsaWJh
dnV0aWwvYXNzLmM6IGNoYXIgKmZmX2Fzc19nZXRfZGlhbG9nKGludCByZWFkb3JkZXIsIGludCBs
YXllciwgY29uc3QgY2hhciAqcwogICAgICAtICAgIHJldHVybiAwOwogICAgICAtfQogICAgICAt
CiAgICAgKy1pbnQgZmZfYXNzX2FkZF9yZWN0KEFWU3VidGl0bGUgKnN1YiwgY29uc3QgY2hhciAq
ZGlhbG9nLAogICAgICstICAgICAgICAgICAgICAgICAgICBpbnQgcmVhZG9yZGVyLCBpbnQgbGF5
ZXIsIGNvbnN0IGNoYXIgKnN0eWxlLAogICAgICstICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpzcGVha2VyKQogICAgICsrY2hhciAqYXZwcml2X2Fzc19nZXRfZGlhbG9nX2V4KGludCBy
ZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAgICAgKysgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcGVha2VyLCBpbnQgbWFyZ2luX2wsIGludCBtYXJn
aW5fciwKICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXJnaW5fdiwgY29uc3Qg
Y2hhciAqdGV4dCkKICAgICArIHsKICAgICArLSAgICByZXR1cm4gZmZfYXNzX2FkZF9yZWN0Mihz
dWIsIGRpYWxvZywgcmVhZG9yZGVyLCBsYXllciwgc3R5bGUsIHNwZWFrZXIsIE5VTEwpOwogICAg
ICstfQogICAgICstCiAgICAgIC12b2lkIGZmX2Fzc19kZWNvZGVyX2ZsdXNoKEFWQ29kZWNDb250
ZXh0ICphdmN0eCkKICAgICAgLXsKICAgICAgLSAgICBGRkFTU0RlY29kZXJDb250ZXh0ICpzID0g
YXZjdHgtPnByaXZfZGF0YTsKICAgICBAQCBsaWJhdnV0aWwvYXNzX2ludGVybmFsLmggKG5ldykK
ICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL2Fzc19zcGxpdC5jID0+IGxpYmF2dXRpbC9hc3Nf
c3BsaXQuYyAjIwogICAgICBAQAogICAgIC0gI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIK
ICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvZXJyb3IuaCIKICAgICArICNpbmNsdWRlICJsaWJh
dnV0aWwvbWFjcm9zLmgiCiAgICAgICAjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIgogICAgICAt
I2luY2x1ZGUgImFzc19zcGxpdC5oIgogICAgICArI2luY2x1ZGUgImFzc19zcGxpdF9pbnRlcm5h
bC5oIgogIDY6ICBjNmZiNzhlMDM4ICEgIDc6ICAwOWQ4Y2Y3ODgwIGF2Y29kZWMvc3VidGl0bGVz
OiBSZXBsYWNlIGRlcHJlY2F0ZWQgZW51bSB2YWx1ZXMKICAgICBAQCBsaWJhdmNvZGVjL2Fzcy5o
OiBzdGF0aWMgaW5saW5lIGludCBhdnByaXZfYXNzX2FkZF9yZWN0KEFWU3VidGl0bGUgKnN1Yiwg
Y29uc3QgYwogICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogICAgICAKICAg
ICAgICMjIGxpYmF2Y29kZWMvYXNzZGVjLmMgIyMKICAgICAtQEAgbGliYXZjb2RlYy9hc3NkZWMu
Yzogc3RhdGljIGludCBhc3NfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdm9p
ZCAqZGF0YSwgaW50ICpnb3Rfc3ViX3B0ciwKICAgICArQEAgbGliYXZjb2RlYy9hc3NkZWMuYzog
c3RhdGljIGludCBhc3NfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZTdWJ0
aXRsZSAqc3ViLAogICAgICAgICAgIGlmICghc3ViLT5yZWN0c1swXSkKICAgICAgICAgICAgICAg
cmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICAgICAgICBzdWItPm51bV9yZWN0cyA9IDE7CiAg
ICAgQEAgbGliYXZjb2RlYy9kdmRzdWJlbmMuYzogc3RhdGljIGludCBlbmNvZGVfZHZkX3N1YnRp
dGxlcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgICAgICAgICAgIH0KICAgICAgCiAgICAg
ICAjIyBsaWJhdmNvZGVjL3Bnc3N1YmRlYy5jICMjCiAgICAgLUBAIGxpYmF2Y29kZWMvcGdzc3Vi
ZGVjLmM6IHN0YXRpYyBpbnQgZGlzcGxheV9lbmRfc2VnbWVudChBVkNvZGVjQ29udGV4dCAqYXZj
dHgsIHZvaWQgKmRhdGEsCiAgICAgK0BAIGxpYmF2Y29kZWMvcGdzc3ViZGVjLmM6IHN0YXRpYyBp
bnQgZGlzcGxheV9lbmRfc2VnbWVudChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUg
KnN1YiwKICAgICAgICAgICAgICAgaWYgKCFyZWN0KQogICAgICAgICAgICAgICAgICAgcmV0dXJu
IEFWRVJST1IoRU5PTUVNKTsKICAgICAgICAgICAgICAgc3ViLT5yZWN0c1tzdWItPm51bV9yZWN0
cysrXSA9IHJlY3Q7CiAgICAgQEAgbGliYXZjb2RlYy9wZ3NzdWJkZWMuYzogc3RhdGljIGludCBk
aXNwbGF5X2VuZF9zZWdtZW50KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdm8KICAgICAgICAgICAg
ICAgb2JqZWN0ID0gZmluZF9vYmplY3QoY3R4LT5wcmVzZW50YXRpb24ub2JqZWN0c1tpXS5pZCwg
JmN0eC0+b2JqZWN0cyk7CiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy94c3ViZGVjLmMgIyMK
ICAgICAtQEAgbGliYXZjb2RlYy94c3ViZGVjLmM6IHN0YXRpYyBpbnQgZGVjb2RlX2ZyYW1lKEFW
Q29kZWNDb250ZXh0ICphdmN0eCwgdm9pZCAqZGF0YSwgaW50ICpnb3Rfc3ViX3B0ciwKICAgICAr
QEAgbGliYXZjb2RlYy94c3ViZGVjLmM6IHN0YXRpYyBpbnQgZGVjb2RlX2ZyYW1lKEFWQ29kZWND
b250ZXh0ICphdmN0eCwgQVZTdWJ0aXRsZSAqc3ViLAogICAgICAgICAgIHN1Yi0+bnVtX3JlY3Rz
ID0gMTsKICAgICAgICAgICByZWN0LT54ID0geDsgcmVjdC0+eSA9IHk7CiAgICAgICAgICAgcmVj
dC0+dyA9IHc7IHJlY3QtPmggPSBoOwogIDc6ICAzZDg2NzM5MTlmID0gIDg6ICA4OTcyOTliZjdm
IGZmdG9vbHMvcGxheSxwcm9iZTogQWRqdXN0IGZvciBzdWJ0aXRsZSBjaGFuZ2VzCiAgODogIGJh
OGI2NzUzMjYgISAgOTogIGNhNTgwYzZkMjEgYXZmaWx0ZXIvc3VidGl0bGVzOiBBZGQgc3VidGl0
bGVzLmMgZm9yIHN1YnRpdGxlIGZyYW1lIGFsbG9jYXRpb24KICAgICBAQCBsaWJhdmZpbHRlci9N
YWtlZmlsZTogT0JKUyA9IGFsbGZpbHRlcnMubwogICAgICAgICAgICAgIGdyYXBoZHVtcC5vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICAgICAgIGdyYXBocGFyc2VyLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgICArICAgICAgIHN1YnRpdGxlcy5vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICsgICAgICAg
IHZlcnNpb24ubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgICAgICAgICAgIHZpZGVvLm8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgCiAgICAgLSBPQkpTLSQo
SEFWRV9USFJFQURTKSAgICAgICAgICAgICAgICAgICAgICAgICArPSBwdGhyZWFkLm8KICAgICAg
CiAgICAgICAjIyBsaWJhdmZpbHRlci9hdmZpbHRlci5jICMjCiAgICAgIEBACiAgICAgQEAgbGli
YXZmaWx0ZXIvYXZmaWx0ZXIuYwogICAgICAgI2luY2x1ZGUgImludGVybmFsLmgiCiAgICAgICsj
aW5jbHVkZSAic3VidGl0bGVzLmgiCiAgICAgICAKICAgICAtICNpbmNsdWRlICJsaWJhdnV0aWwv
ZmZ2ZXJzaW9uLmgiCiAgICAgLSBjb25zdCBjaGFyIGF2X2ZpbHRlcl9mZnZlcnNpb25bXSA9ICJG
Rm1wZWcgdmVyc2lvbiAiIEZGTVBFR19WRVJTSU9OOwogICAgICsgc3RhdGljIHZvaWQgdGxvZ19y
ZWYodm9pZCAqY3R4LCBBVkZyYW1lICpyZWYsIGludCBlbmQpCiAgICAgKyB7CiAgICAgIEBAIGxp
YmF2ZmlsdGVyL2F2ZmlsdGVyLmM6IGludCBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0YWJsZShB
VkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKipyZnJhbWUpCiAgICAgICAgICAgY2FzZSBBVk1F
RElBX1RZUEVfQVVESU86CiAgICAgICAgICAgICAgIG91dCA9IGZmX2dldF9hdWRpb19idWZmZXIo
bGluaywgZnJhbWUtPm5iX3NhbXBsZXMpOwogIDk6ICBlYjA5ZGIwZTAwICEgMTA6ICAwNzgxZTk3
NGEyIGF2ZmlsdGVyL2F2ZmlsdGVyOiBIYW5kbGUgc3VidGl0bGUgZnJhbWVzCiAgICAgQEAgbGli
YXZmaWx0ZXIvYXZmaWx0ZXIuYzogc3RhdGljIHZvaWQgdGxvZ19yZWYodm9pZCAqY3R4LCBBVkZy
YW1lICpyZWYsIGludCBlbmQpCiAgICAgICAgICAgfQogICAgICAgCiAgICAgICAgICAgZmZfdGxv
ZyhjdHgsICJdJXMiLCBlbmQgPyAiXG4iIDogIiIpOwogICAgICtAQCBsaWJhdmZpbHRlci9hdmZp
bHRlci5jOiBpbnQgZmZfZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAq
ZnJhbWUpCiAgICAgKyAgICAgICAgICAgICBhdl9hc3NlcnQxKGZyYW1lLT53aWR0aCAgICAgICAg
ICAgICAgID09IGxpbmstPncpOwogICAgICsgICAgICAgICAgICAgYXZfYXNzZXJ0MShmcmFtZS0+
aGVpZ2h0ICAgICAgICAgICAgICAgPT0gbGluay0+aCk7CiAgICAgKyAgICAgICAgIH0KICAgICAr
KyAgICB9IGVsc2UgaWYgKGxpbmstPnR5cGUgPT0gQVZNRURJQV9UWVBFX1NVQlRJVExFKSB7CiAg
ICAgKysgICAgICAgIGlmIChmcmFtZS0+Zm9ybWF0ICE9IGxpbmstPmZvcm1hdCkgewogICAgICsr
ICAgICAgICAgICAgYXZfbG9nKGxpbmstPmRzdCwgQVZfTE9HX1dBUk5JTkcsICJTdWJ0aXRsZSBm
b3JtYXQgY2hhbmdlIGZyb20gJWQgdG8gJWRcbiIsIGxpbmstPmZvcm1hdCwgZnJhbWUtPmZvcm1h
dCk7CiAgICAgKysgICAgICAgIH0KICAgICArICAgICB9IGVsc2UgewogICAgICsgICAgICAgICBp
ZiAoZnJhbWUtPmZvcm1hdCAhPSBsaW5rLT5mb3JtYXQpIHsKICAgICArICAgICAgICAgICAgIGF2
X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19FUlJPUiwgIkZvcm1hdCBjaGFuZ2UgaXMgbm90IHN1cHBv
cnRlZFxuIik7CiAgICAgIAogICAgICAgIyMgbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCAjIwogICAg
ICBAQAogICAgIEBAIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgKICAgICAgKyNpbmNsdWRlICJsaWJh
dnV0aWwvc3ViZm10LmgiCiAgICAgICAjaW5jbHVkZSAibGliYXZ1dGlsL3JhdGlvbmFsLmgiCiAg
ICAgICAKICAgICAtICNpbmNsdWRlICJsaWJhdmZpbHRlci92ZXJzaW9uLmgiCiAgICAgKyAjaW5j
bHVkZSAibGliYXZmaWx0ZXIvdmVyc2lvbl9tYWpvci5oIgogICAgICBAQCBsaWJhdmZpbHRlci9h
dmZpbHRlci5oOiB0eXBlZGVmIHN0cnVjdCBBVkZpbHRlciB7CiAgICAgICAgICAgICAgICAqIGFu
ZCBvdXRwdXRzIHVzZSB0aGUgc2FtZSBzYW1wbGUgcmF0ZSBhbmQgY2hhbm5lbCBjb3VudC9sYXlv
dXQuCiAgICAgICAgICAgICAgICAqLwogICAgIEBAIGxpYmF2ZmlsdGVyL2Zvcm1hdHMuYwogICAg
ICAgI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgogICAgICAgI2luY2x1ZGUgImxpYmF2
dXRpbC9jaGFubmVsX2xheW91dC5oIgogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24u
aCIKICAgICAtQEAgbGliYXZmaWx0ZXIvZm9ybWF0cy5jOiBpbnQgZmZfYWRkX2NoYW5uZWxfbGF5
b3V0KEFWRmlsdGVyQ2hhbm5lbExheW91dHMgKipsLCB1aW50NjRfdCBjaGFubmVsX2xheW91dCkK
ICAgICAtICAgICByZXR1cm4gMDsKICAgICAtIH0KICAgICAtIAogICAgIC0raW50IGZmX2FkZF9z
dWJ0aXRsZV90eXBlKEFWRmlsdGVyRm9ybWF0cyAqKmF2ZmYsIGludDY0X3QgZm10KQogICAgIC0r
ewogICAgIC0rICAgIEFERF9GT1JNQVQoYXZmZiwgZm10LCBmZl9mb3JtYXRzX3VucmVmLCBpbnQs
IGZvcm1hdHMsIG5iX2Zvcm1hdHMpOwogICAgIC0rICAgIHJldHVybiAwOwogICAgIC0rfQogICAg
IC0rCiAgICAgLSBBVkZpbHRlckZvcm1hdHMgKmZmX21ha2VfZm9ybWF0c19saXN0X3NpbmdsZXRv
bihpbnQgZm10KQogICAgIC0gewogICAgIC0gICAgIGludCBmbXRzWzJdID0geyBmbXQsIC0xIH07
CiAgICAgIEBAIGxpYmF2ZmlsdGVyL2Zvcm1hdHMuYzogQVZGaWx0ZXJGb3JtYXRzICpmZl9hbGxf
Zm9ybWF0cyhlbnVtIEFWTWVkaWFUeXBlIHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICBmbXQrKzsKICAgICAgICAgICAgICAgfQogICAg
ICArICAgIH0gZWxzZSBpZiAodHlwZSA9PSBBVk1FRElBX1RZUEVfU1VCVElUTEUpIHsKICAgICAt
KyAgICAgICAgaWYgKGZmX2FkZF9zdWJ0aXRsZV90eXBlKCZyZXQsIEFWX1NVQlRJVExFX0ZNVF9C
SVRNQVApIDwgMCkKICAgICArKyAgICAgICAgaWYgKGZmX2FkZF9mb3JtYXQoJnJldCwgQVZfU1VC
VElUTEVfRk1UX0JJVE1BUCkgPCAwKQogICAgICArICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAg
ICAgLSsgICAgICAgIGlmIChmZl9hZGRfc3VidGl0bGVfdHlwZSgmcmV0LCBBVl9TVUJUSVRMRV9G
TVRfQVNTKSA8IDApCiAgICAgKysgICAgICAgIGlmIChmZl9hZGRfZm9ybWF0KCZyZXQsIEFWX1NV
QlRJVExFX0ZNVF9BU1MpIDwgMCkKICAgICAgKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAg
IC0rICAgICAgICBpZiAoZmZfYWRkX3N1YnRpdGxlX3R5cGUoJnJldCwgQVZfU1VCVElUTEVfRk1U
X1RFWFQpIDwgMCkKICAgICArKyAgICAgICAgaWYgKGZmX2FkZF9mb3JtYXQoJnJldCwgQVZfU1VC
VElUTEVfRk1UX1RFWFQpIDwgMCkKICAgICAgKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAg
ICAgICAgIH0KICAgICAgIAogICAgIEBAIGxpYmF2ZmlsdGVyL2Zvcm1hdHMuYzogaW50IGZmX2Rl
ZmF1bHRfcXVlcnlfZm9ybWF0cyhBVkZpbHRlckNvbnRleHQgKmN0eCkKICAgICAgICAgICAvKiBJ
bnRlbmRlZCBmYWxsdGhyb3VnaCAqLwogICAgICAKICAgICAgICMjIGxpYmF2ZmlsdGVyL2Zvcm1h
dHMuaCAjIwogICAgIC1AQCBsaWJhdmZpbHRlci9mb3JtYXRzLmg6IGludCBmZl9zZXRfY29tbW9u
X2Zvcm1hdHNfZnJvbV9saXN0KEFWRmlsdGVyQ29udGV4dCAqY3R4LCBjb25zdCBpbnQgKmZtdHMp
OwogICAgIC0gYXZfd2Fybl91bnVzZWRfcmVzdWx0CiAgICAgLSBpbnQgZmZfYWRkX2NoYW5uZWxf
bGF5b3V0KEFWRmlsdGVyQ2hhbm5lbExheW91dHMgKipsLCB1aW50NjRfdCBjaGFubmVsX2xheW91
dCk7CiAgICAgK0BAIGxpYmF2ZmlsdGVyL2Zvcm1hdHMuaDogYXZfd2Fybl91bnVzZWRfcmVzdWx0
CiAgICAgKyBpbnQgZmZfYWRkX2NoYW5uZWxfbGF5b3V0KEFWRmlsdGVyQ2hhbm5lbExheW91dHMg
KipsLAogICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVkNoYW5uZWxMYXlv
dXQgKmNoYW5uZWxfbGF5b3V0KTsKICAgICAgIAogICAgICArYXZfd2Fybl91bnVzZWRfcmVzdWx0
CiAgICAgICtpbnQgZmZfYWRkX3N1YnRpdGxlX3R5cGUoQVZGaWx0ZXJGb3JtYXRzICoqYXZmZiwg
aW50NjRfdCBmbXQpOwogMTA6ICBiMzFhOTkxMzIwID0gMTE6ICBkOWQ5ZjQyNTU4IGF2ZmlsdGVy
L2F2ZmlsdGVyOiBGaXggaGFyZGNvZGVkIGlucHV0IGluZGV4CiAxMTogIDU5YWJlYTc2OTMgISAx
MjogIGFmNjlhNGIzMjEgYXZmaWx0ZXIvc2J1ZmZlcjogQWRkIHNidWZmZXJzcmMgYW5kIHNidWZm
ZXJzaW5rIGZpbHRlcnMKICAgICBAQCBsaWJhdmZpbHRlci9idWZmZXJzaW5rLmM6IHN0YXRpYyBp
bnQgYXNpbmtfcXVlcnlfZm9ybWF0cyhBVkZpbHRlckNvbnRleHQgKmN0eCkKICAgICAgKyAgICBD
SEVDS19MSVNUX1NJWkUoc3VidGl0bGVfdHlwZXMpCiAgICAgICsgICAgaWYgKGJ1Zi0+c3VidGl0
bGVfdHlwZXNfc2l6ZSkgewogICAgICArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkJfSVRFTVMo
YnVmLT5zdWJ0aXRsZV90eXBlcyk7IGkrKykKICAgICAtKyAgICAgICAgICAgIGlmICgocmV0ID0g
ZmZfYWRkX3N1YnRpdGxlX3R5cGUoJmZvcm1hdHMsIGJ1Zi0+c3VidGl0bGVfdHlwZXNbaV0pKSA8
IDApCiAgICAgKysgICAgICAgICAgICBpZiAoKHJldCA9IGZmX2FkZF9mb3JtYXQoJmZvcm1hdHMs
IGJ1Zi0+c3VidGl0bGVfdHlwZXNbaV0pKSA8IDApCiAgICAgICsgICAgICAgICAgICAgICAgcmV0
dXJuIHJldDsKICAgICAgKyAgICAgICAgaWYgKChyZXQgPSBmZl9zZXRfY29tbW9uX2Zvcm1hdHMo
Y3R4LCBmb3JtYXRzKSkgPCAwKQogICAgICArICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICBA
QCBsaWJhdmZpbHRlci9idWZmZXJzcmMuYwogICAgICAgdHlwZWRlZiBzdHJ1Y3QgQnVmZmVyU291
cmNlQ29udGV4dCB7CiAgICAgICAgICAgY29uc3QgQVZDbGFzcyAgICAqY2xhc3M7CiAgICAgIEBA
IGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5jOiB0eXBlZGVmIHN0cnVjdCBCdWZmZXJTb3VyY2VDb250
ZXh0IHsKICAgICAtICAgICB1aW50NjRfdCBjaGFubmVsX2xheW91dDsKICAgICAgICAgICBjaGFy
ICAgICpjaGFubmVsX2xheW91dF9zdHI7CiAgICAgKyAgICAgQVZDaGFubmVsTGF5b3V0IGNoX2xh
eW91dDsKICAgICAgIAogICAgICArICAgIC8qIHN1YnRpdGxlIG9ubHkgKi8KICAgICAgKyAgICBl
bnVtIEFWU3VidGl0bGVUeXBlIHN1YnRpdGxlX3R5cGU7CiAgICAgQEAgbGliYXZmaWx0ZXIvYnVm
ZmVyc3JjLmM6IHR5cGVkZWYgc3RydWN0IEJ1ZmZlclNvdXJjZUNvbnRleHQgewogICAgICAgICAg
IGludCBlb2Y7CiAgICAgICB9IEJ1ZmZlclNvdXJjZUNvbnRleHQ7CiAgICAgICAKICAgICAtQEAg
bGliYXZmaWx0ZXIvYnVmZmVyc3JjLmM6IGludCBhdl9idWZmZXJzcmNfcGFyYW1ldGVyc19zZXQo
QVZGaWx0ZXJDb250ZXh0ICpjdHgsIEFWQnVmZmVyU3JjUGFyYW1ldGVycyAqcGFyCiAgICAgLSAg
ICAgICAgIGlmIChwYXJhbS0+Y2hhbm5lbF9sYXlvdXQpCiAgICAgLSAgICAgICAgICAgICBzLT5j
aGFubmVsX2xheW91dCA9IHBhcmFtLT5jaGFubmVsX2xheW91dDsKICAgICArQEAgbGliYXZmaWx0
ZXIvYnVmZmVyc3JjLmM6IEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAgICsgICAg
ICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgKyAgICAgICAgIH0KICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICsgICAgY2FzZSBBVk1FRElBX1RZUEVfU1VCVElUTEU6CiAgICAgICsgICAg
ICAgIHMtPnN1YnRpdGxlX3R5cGUgPSBwYXJhbS0+Zm9ybWF0OwogICAgIEBAIGxpYmF2ZmlsdGVy
L2J1ZmZlcnNyYy5jOiBpbnQgYXZfYnVmZmVyc3JjX3BhcmFtZXRlcnNfc2V0KEFWRmlsdGVyQ29u
dGV4dCAqY3R4LCBBCiAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgcmV0dXJuIEFW
RVJST1JfQlVHOwogICAgICAgICAgIH0KICAgICAtQEAgbGliYXZmaWx0ZXIvYnVmZmVyc3JjLmM6
IGludCBhdHRyaWJ1dGVfYWxpZ25fYXJnIGF2X2J1ZmZlcnNyY19hZGRfZnJhbWVfZmxhZ3MoQVZG
aWx0ZXJDb250ZXh0ICpjdHgsIEFWRnJhCiAgICAgLSAgICAgICAgICAgICBDSEVDS19BVURJT19Q
QVJBTV9DSEFOR0UoY3R4LCBzLCBmcmFtZS0+c2FtcGxlX3JhdGUsIGZyYW1lLT5jaGFubmVsX2xh
eW91dCwKICAgICAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
Y2hhbm5lbHMsIGZyYW1lLT5mb3JtYXQsIGZyYW1lLT5wdHMpOwogICAgICtAQCBsaWJhdmZpbHRl
ci9idWZmZXJzcmMuYzogRkZfRU5BQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCiAgICAgKyAgICAg
ICAgICAgICBDSEVDS19BVURJT19QQVJBTV9DSEFOR0UoY3R4LCBzLCBmcmFtZS0+c2FtcGxlX3Jh
dGUsIGZyYW1lLT5jaF9sYXlvdXQsCiAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmZvcm1hdCwgZnJhbWUtPnB0cyk7CiAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgKyAgICAgICAgY2FzZSBBVk1FRElBX1RZUEVfU1VCVElUTEU6CiAgICAgICsg
ICAgICAgICAgICBicmVhazsKICAgICBAQCBsaWJhdmZpbHRlci9idWZmZXJzcmMuYzogc3RhdGlj
IGNvbnN0IEFWT3B0aW9uIGFidWZmZXJfb3B0aW9uc1tdID0gewogICAgICAgc3RhdGljIGF2X2Nv
bGQgaW50IGluaXRfYXVkaW8oQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiAgICAgICB7CiAgICAgICAg
ICAgQnVmZmVyU291cmNlQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKICAgICAtQEAgbGliYXZmaWx0
ZXIvYnVmZmVyc3JjLmM6IHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2F1ZGlvKEFWRmlsdGVyQ29u
dGV4dCAqY3R4KQogICAgICtAQCBsaWJhdmZpbHRlci9idWZmZXJzcmMuYzogRkZfRU5BQkxFX0RF
UFJFQ0FUSU9OX1dBUk5JTkdTCiAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgIH0KICAgICAg
IAogICAgIEBAIGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5jOiBzdGF0aWMgaW50IHF1ZXJ5X2Zvcm1h
dHMoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ
TlZBTCk7CiAgICAgICAgICAgfQogICAgICBAQCBsaWJhdmZpbHRlci9idWZmZXJzcmMuYzogc3Rh
dGljIGludCBjb25maWdfcHJvcHMoQVZGaWx0ZXJMaW5rICpsaW5rKQogICAgIC0gICAgICAgICBp
ZiAoIWMtPmNoYW5uZWxfbGF5b3V0KQogICAgIC0gICAgICAgICAgICAgYy0+Y2hhbm5lbF9sYXlv
dXQgPSBsaW5rLT5jaGFubmVsX2xheW91dDsKICAgICArICAgICAgICAgICAgICAgICByZXR1cm4g
cmV0OwogICAgICsgICAgICAgICB9CiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICArICAgIGNh
c2UgQVZNRURJQV9UWVBFX1NVQlRJVExFOgogICAgICArICAgICAgICBsaW5rLT5mb3JtYXQgPSBj
LT5zdWJ0aXRsZV90eXBlOwogICAgIEBAIGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5jOiBjb25zdCBB
VkZpbHRlciBmZl9hc3JjX2FidWZmZXIgPSB7CiAgICAgICAgICAgLnByaXZfY2xhc3MgPSAmYWJ1
ZmZlcl9jbGFzcywKICAgICAgIH07CiAgICAgICsKICAgICAtK3N0YXRpYyBjb25zdCBBVkZpbHRl
clBhZCBzc3JjX3NidWZmZXJfb3V0cHV0c1tdID0gewogICAgICsrc3RhdGljIGNvbnN0IEFWRmls
dGVyUGFkIGF2ZmlsdGVyX3NzcmNfc2J1ZmZlcl9vdXRwdXRzW10gPSB7CiAgICAgICsgICAgewog
ICAgICArICAgICAgICAubmFtZSAgICAgICAgICA9ICJkZWZhdWx0IiwKICAgICAgKyAgICAgICAg
LnR5cGUgICAgICAgICAgPSBBVk1FRElBX1RZUEVfU1VCVElUTEUsCiAgICAgQEAgbGliYXZmaWx0
ZXIvYnVmZmVyc3JjLmM6IGNvbnN0IEFWRmlsdGVyIGZmX2FzcmNfYWJ1ZmZlciA9IHsKICAgICAg
KyAgICAudW5pbml0ICAgID0gdW5pbml0LAogICAgICArCiAgICAgICsgICAgLmlucHV0cyAgICA9
IE5VTEwsCiAgICAgLSsgICAgRklMVEVSX09VVFBVVFMoc3NyY19zYnVmZmVyX291dHB1dHMpLAog
ICAgICsrICAgIEZJTFRFUl9PVVRQVVRTKGF2ZmlsdGVyX3NzcmNfc2J1ZmZlcl9vdXRwdXRzKSwK
ICAgICAgKyAgICBGSUxURVJfUVVFUllfRlVOQyhxdWVyeV9mb3JtYXRzKSwKICAgICAgKyAgICAu
cHJpdl9jbGFzcyA9ICZzYnVmZmVyX2NsYXNzLAogICAgICArfTsKIDEyOiAgODY3YjYwYzYwZCAh
IDEzOiAgZjdlNWI1OTBhMiBhdmZpbHRlci9vdmVybGF5Z3JhcGhpY3N1YnM6IEFkZCBvdmVybGF5
Z3JhcGhpY3N1YnMgYW5kIGdyYXBoaWNzdWIydmlkZW8gZmlsdGVycwogICAgIEBAIGRvYy9maWx0
ZXJzLnRleGk6IHRvb2xzLgogICAgICArVGhpcyBmaWx0ZXIgcmVwbGFjZXMgdGhlIHByZXZpb3Vz
ICJzdWIydmlkZW8iIGhhY2sgd2hpY2ggZGlkIHRoZSBjb252ZXJzaW9uIGltcGxpY2l0bHkgYW5k
IHVwLWZyb250IGFzIHN1YnRpdGxlIGZpbHRlcmluZyB3YXNuJ3QgcG9zc2libGUgYXQgdGhhdCB0
aW1lLgogICAgICArVG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIHN1YjJ2aWRl
byBjb21tYW5kIGxpbmVzLCB0aGlzIGZpbHRlciBpcyBiZWluZyBhdXRvLWluc2VydGVkIGluIHRo
b3NlIGNhc2VzLgogICAgICArCiAgICAgLStGb3Igb3ZlcmxheWluZyBncmFwaGljc2FsIHN1YnRp
dGxlcyBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlICdvdmVybGF5X2dyYXBoaWNzdWJzJyBm
aWx0ZXIgd2hpY2ggaXMgbW9yZSBlZmZpY2llbnQgYW5kIHRha2VzIGxlc3MgcHJvY2Vzc2luZyBy
ZXNvdXJjZXMuCiAgICAgKytGb3Igb3ZlcmxheWluZyBncmFwaGljc2FsIHN1YnRpdGxlcyBpdCBp
cyByZWNvbW1lbmRlZCB0byB1c2UgdGhlICdvdmVybGF5Z3JhcGhpY3N1YnMnIGZpbHRlciB3aGlj
aCBpcyBtb3JlIGVmZmljaWVudCBhbmQgdGFrZXMgbGVzcyBwcm9jZXNzaW5nIHJlc291cmNlcy4K
ICAgICAgKwogICAgICArVGhpcyBmaWx0ZXIgaXMgc3RpbGwgdXNlZnVsIGluIGNhc2VzIHdoZXJl
IHRoZSBvdmVybGF5IGlzIGRvbmUgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gKGUuZy4gb3Zl
cmxheV9xc3YsIG92ZXJsYXlfdmFhcGksIG92ZXJsYXlfY3VkYSkgZm9yIHByZXBhcmluZyB0aGUg
b3ZlcmxheSBmcmFtZXMuCiAgICAgICsKICAgICBAQCBkb2MvZmlsdGVycy50ZXhpOiB0b29scy4K
ICAgICAgK0BpdGVtaXplCiAgICAgICtAaXRlbQogICAgICArT3ZlcmxheSBQR1Mgc3VidGl0bGVz
CiAgICAgLSsobm90IHJlY29tbWVuZGVkIC0gYmV0dGVyIHVzZSBvdmVybGF5X2dyYXBoaWNzdWJz
KQogICAgICsrKG5vdCByZWNvbW1lbmRlZCAtIGJldHRlciB1c2Ugb3ZlcmxheWdyYXBoaWNzdWJz
KQogICAgICArQGV4YW1wbGUKICAgICAgK2ZmbXBlZyAtaSAiaHR0cHM6Ly9zdHJlYW1zLnZpZGVv
bGFuLm9yZy9zYW1wbGVzL3N1Yi9QR1MvR2lybF9XaXRoX1RoZV9EcmFnb25fVGF0dG9vXzIlM0Ey
MyUzQTU2Lm1rdiIgLWZpbHRlcl9jb21wbGV4ICJbMDoxXWdyYXBoaWNzdWIydmlkZW9bc3Vic107
WzA6MF1bc3Vic11vdmVybGF5IiBvdXRwdXQubXA0CiAgICAgICtAZW5kIGV4YW1wbGUKICAgICBA
QCBsaWJhdmZpbHRlci9NYWtlZmlsZTogT0JKUy0kKENPTkZJR19PVkVSTEFZX09QRU5DTF9GSUxU
RVIpICAgICAgICAgKz0gdmZfb3ZlcmxheQogICAgICAgT0JKUy0kKENPTkZJR19QQURfT1BFTkNM
X0ZJTFRFUikgICAgICAgICAgICAgKz0gdmZfcGFkX29wZW5jbC5vIG9wZW5jbC5vIG9wZW5jbC9w
YWQubwogICAgICAKICAgICAgICMjIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAjIwogICAgIC1A
QCBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmM6IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9v
c2NpbGxvc2NvcGU7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheTsK
ICAgICAtIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9vdmVybGF5X29wZW5jbDsKICAgICAt
IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9vdmVybGF5X3FzdjsKICAgICAtK2V4dGVybiBj
b25zdCBBVkZpbHRlciBmZl92Zl9vdmVybGF5Z3JhcGhpY3N1YnM7CiAgICAgK0BAIGxpYmF2Zmls
dGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlfcXN2
OwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlfdmFhcGk7CiAgICAg
ICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheV92dWxrYW47CiAgICAgICBleHRl
cm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheV9jdWRhOwogICAgICsrZXh0ZXJuIGNvbnN0
IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlncmFwaGljc3ViczsKICAgICArIGV4dGVybiBjb25zdCBB
VkZpbHRlciBmZl92Zl9vd2Rlbm9pc2U7CiAgICAgKyBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZf
dmZfcGFkOwogICAgICsgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3BhZF9vcGVuY2w7CiAg
ICAgIEBAIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZm
X2F2Zl9zaG93dm9sdW1lOwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93
d2F2ZXM7CiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZmX3Nob3d3YXZlc3BpYzsK
ICAgICBAQCBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmM6IGV4dGVybiBjb25zdCBBVkZpbHRlciBm
Zl9hdmZfc2hvd3ZvbHVtZTsKICAgICAgK2V4dGVybiBjb25zdCBBVkZpbHRlciBmZl9zdmZfZ3Jh
cGhpY3N1YjJ2aWRlbzsKICAgICAgIAogICAgICAgLyogbXVsdGltZWRpYSBzb3VyY2VzICovCiAg
ICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZzcmNfYW1vdmllOwogICAgICsgZXh0ZXJu
IGNvbnN0IEFWRmlsdGVyIGZmX2F2c3JjX2F2c3luY3Rlc3Q7CiAgICAgIAogICAgICAgIyMgbGli
YXZmaWx0ZXIvdmZfb3ZlcmxheWdyYXBoaWNzdWJzLmMgKG5ldykgIyMKICAgICAgQEAKIDEzOiAg
Zjg4YTU2NjdlMSAhIDE0OiAgNGM4MDkyMzU3ZiBhdmZpbHRlci9vdmVybGF5dGV4dHN1YnM6IEFk
ZCBvdmVybGF5dGV4dHN1YnMgYW5kIHRleHRzdWJzMnZpZGVvIGZpbHRlcnMKICAgICBAQCBjb25m
aWd1cmU6IG92ZXJsYXlfcXN2X2ZpbHRlcl9kZXBzPSJsaWJtZngiCiAgICAgICBvd2Rlbm9pc2Vf
ZmlsdGVyX2RlcHM9ImdwbCIKICAgICAgIHBhZF9vcGVuY2xfZmlsdGVyX2RlcHM9Im9wZW5jbCIK
ICAgICAgIHBhbl9maWx0ZXJfZGVwcz0ic3dyZXNhbXBsZSIKICAgICAtQEAgY29uZmlndXJlOiBz
dXBlcmVxdWFsaXplcl9maWx0ZXJfZGVwcz0iYXZjb2RlYyIKICAgICAtIHN1cGVyZXF1YWxpemVy
X2ZpbHRlcl9zZWxlY3Q9InJkZnQiCiAgICAgLSBzdXJyb3VuZF9maWx0ZXJfZGVwcz0iYXZjb2Rl
YyIKICAgICAtIHN1cnJvdW5kX2ZpbHRlcl9zZWxlY3Q9InJkZnQiCiAgICAgK0BAIGNvbmZpZ3Vy
ZTogc3RlcmVvM2RfZmlsdGVyX2RlcHM9ImdwbCIKICAgICArIHN1YnRpdGxlc19maWx0ZXJfZGVw
cz0iYXZmb3JtYXQgYXZjb2RlYyBsaWJhc3MiCiAgICAgKyBzdXBlcjJ4c2FpX2ZpbHRlcl9kZXBz
PSJncGwiCiAgICAgKyBwaXhmbXRzX3N1cGVyMnhzYWlfdGVzdF9kZXBzPSJzdXBlcjJ4c2FpX2Zp
bHRlciIKICAgICAgK3RleHRzdWIydmlkZW9fZmlsdGVyX2RlcHM9ImF2Y29kZWMgbGliYXNzIgog
ICAgICAgdGludGVybGFjZV9maWx0ZXJfZGVwcz0iZ3BsIgogICAgICAgdGludGVybGFjZV9tZXJn
ZV90ZXN0X2RlcHM9InRpbnRlcmxhY2VfZmlsdGVyIgogICAgIEBAIGRvYy9maWx0ZXJzLnRleGk6
IE92ZXJsYXkgUEdTIHN1YnRpdGxlcwogICAgICArCiAgICAgICtDb252ZXJ0cyB0ZXh0IHN1YnRp
dGxlcyB0byB2aWRlbyBmcmFtZXMuCiAgICAgICsKICAgICAtK0ZvciBvdmVybGF5aW5nIHRleHQg
c3VidGl0bGVzIG9udG8gdmlkZW8gZnJhbWVzIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUg
b3ZlcmxheV90ZXh0c3VicyBmaWx0ZXIuCiAgICAgKytGb3Igb3ZlcmxheWluZyB0ZXh0IHN1YnRp
dGxlcyBvbnRvIHZpZGVvIGZyYW1lcyBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIG92ZXJs
YXl0ZXh0c3VicyBmaWx0ZXIuCiAgICAgICtUaGUgdGV4dHN1YjJ2aWRlbyBpcyB1c2VmdWwgZm9y
IGZvciBjcmVhdGluZyB0cmFuc3BhcmVudCB0ZXh0LWZyYW1lcyB3aGVuIG92ZXJsYXkgaXMgZG9u
ZSB2aWEgaHcgYWNjZWxlcmF0aW9uCiAgICAgICsKICAgICAgK0lucHV0czoKICAgICBAQCBsaWJh
dmZpbHRlci9NYWtlZmlsZTogT0JKUy0kKENPTkZJR19TV0FQUkVDVF9GSUxURVIpICAgICAgICAg
ICAgICAgKz0gdmZfc3dhcHJlYwogICAgICAgT0JKUy0kKENPTkZJR19USFVNQk5BSUxfRklMVEVS
KSAgICAgICAgICAgICAgKz0gdmZfdGh1bWJuYWlsLm8KICAgICAgCiAgICAgICAjIyBsaWJhdmZp
bHRlci9hbGxmaWx0ZXJzLmMgIyMKICAgICAtQEAgbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jOiBl
eHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3NjaWxsb3Njb3BlOwogICAgIC0gZXh0ZXJuIGNv
bnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXk7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIg
ZmZfdmZfb3ZlcmxheV9vcGVuY2w7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZf
b3ZlcmxheV9xc3Y7CiAgICAgLS1leHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheWdy
YXBoaWNzdWJzOwogICAgIC0tZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlfdmFh
cGk7CiAgICAgK0BAIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNvbnN0IEFWRmls
dGVyIGZmX3ZmX292ZXJsYXlfdmFhcGk7CiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZf
dmZfb3ZlcmxheV92dWxrYW47CiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3Zl
cmxheV9jdWRhOwogICAgIC0rZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlncmFw
aGljc3ViczsKICAgICArIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9vdmVybGF5Z3JhcGhp
Y3N1YnM7CiAgICAgICtleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheXRleHRzdWJz
OwogICAgIC0rZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlfdmFhcGk7CiAgICAg
ICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3dkZW5vaXNlOwogICAgICAgZXh0ZXJuIGNv
bnN0IEFWRmlsdGVyIGZmX3ZmX3BhZDsKICAgICAgIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92
Zl9wYWRfb3BlbmNsOwogICAgIEBAIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNv
bnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93d2F2ZXM7CiAgICAgICtleHRlcm4gY29uc3QgQVZGaWx0
ZXIgZmZfc3ZmX3RleHRzdWIydmlkZW87CiAgICAgICAKICAgICAgIC8qIG11bHRpbWVkaWEgc291
cmNlcyAqLwogICAgIC0gZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2F2c3JjX2Ftb3ZpZTsKICAg
ICArIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hdnNyY19hdnN5bmN0ZXN0OwogICAgICAKICAg
ICAgICMjIGxpYmF2ZmlsdGVyL3ZmX292ZXJsYXl0ZXh0c3Vicy5jIChuZXcpICMjCiAgICAgIEBA
CiAgICAgQEAgbGliYXZmaWx0ZXIvdmZfb3ZlcmxheXRleHRzdWJzLmMgKG5ldykKICAgICAgKyAq
IG92ZXJsYXkgdGV4dCBzdWJ0aXRsZXMgb24gdG9wIG9mIGEgdmlkZW8gZnJhbWUKICAgICAgKyAq
LwogICAgICArCiAgICAgKysjaW5jbHVkZSAiY29uZmlnX2NvbXBvbmVudHMuaCIKICAgICArKwog
ICAgICArI2luY2x1ZGUgPGFzcy9hc3MuaD4KICAgICAgKyNpbmNsdWRlICJsaWJhdnV0aWwvYXNz
X2ludGVybmFsLmgiCiAgICAgICsjaW5jbHVkZSAibGliYXZ1dGlsL3RocmVhZC5oIgogMTQ6ICAy
NWNkYTIxOTcwICEgMTU6ICA4ZmRiZGY3YzVmIGF2ZmlsdGVyL3RleHRtb2Q6IEFkZCB0ZXh0bW9k
LCBjZW5zb3IgYW5kIHNob3dfc3BlYWtlciBmaWx0ZXJzCiAgICAgQEAgZG9jL2ZpbHRlcnMudGV4
aTogZmZtcGVnIC1pICJodHRwOi8vc3RyZWFtcy52aWRlb2xhbi5vcmcvc2FtcGxlcy9zdWIvU1NB
L3N1YnRpdGwKICAgICAgK0BpdGVtCiAgICAgICtQcmVwZW5kIHNwZWFrZXIgbmFtZXMgd2l0aCBi
bHVlIHRleHQsIHNtb290aCBlZGdlcyBhbmQgYmxlbmQvb3ZlcmxheSB0aGF0IG9udG8gdGhlIHZp
ZGVvLgogICAgICArQGV4YW1wbGUKICAgICAtK2ZmbXBlZyAtaSBJTlBVVCAtZmlsdGVyX2NvbXBs
ZXggInNob3dzcGVha2VyPWZvcm1hdD1jb2xvbjpzdHlsZT0nQHtcXGMmSEREMDAwMCZcXGJlMUB9
JyxbMDp2XW92ZXJsYXlfdGV4dHN1YnMiCiAgICAgKytmZm1wZWcgLWkgSU5QVVQgLWZpbHRlcl9j
b21wbGV4ICJzaG93c3BlYWtlcj1mb3JtYXQ9Y29sb246c3R5bGU9J0B7XFxjJkhERDAwMDAmXFxi
ZTFAfScsWzA6dl1vdmVybGF5dGV4dHN1YnMiCiAgICAgICtAZW5kIGV4YW1wbGUKICAgICAgK0Bl
bmQgaXRlbWl6ZQogICAgICArCiAxNTogIDI5NmYxZjY5N2IgPSAxNjogIGQ0NGIyMmYxNWIgYXZm
aWx0ZXIvc3RyaXBzdHlsZXM6IEFkZCBzdHJpcHN0eWxlcyBmaWx0ZXIKIDE2OiAgNTA5ZDZjNjdi
YSA9IDE3OiAgMjhkNzVkYzk4MiBhdmZpbHRlci9zcGxpdGNjOiBBZGQgc3BsaXRjYyBmaWx0ZXIg
Zm9yIGNsb3NlZCBjYXB0aW9uIGhhbmRsaW5nCiAxNzogIDFkN2FjYmEzOWYgISAxODogIDQyZDFk
MWM4MTkgYXZmaWx0ZXIvZ3JhcGhpY3N1YjJ0ZXh0OiBBZGQgbmV3IGdyYXBoaWNzdWIydGV4dCBm
aWx0ZXIgKE9DUikKICAgICBAQCBkb2MvZmlsdGVycy50ZXhpOiBmZm1wZWcgLWkgImh0dHBzOi8v
c3RyZWFtcy52aWRlb2xhbi5vcmcvZmZtcGVnL21rdl9zdWJ0aXRsZXMubQogICAgICAgUmVuZGVy
cyBncmFwaGljIHN1YnRpdGxlcyBhcyB2aWRlbyBmcmFtZXMuCiAgICAgIAogICAgICAgIyMgbGli
YXZmaWx0ZXIvTWFrZWZpbGUgIyMKICAgICAtQEAgbGliYXZmaWx0ZXIvTWFrZWZpbGU6IE9CSlMt
JChDT05GSUdfR0JMVVJfVlVMS0FOX0ZJTFRFUikgICAgICAgICAgICs9IHZmX2dibHVyX3Z1bGth
bi5vIHZ1bGthbi5vIHZ1bGthCiAgICAgK0BAIGxpYmF2ZmlsdGVyL01ha2VmaWxlOiBPQkpTLSQo
Q09ORklHX0dCTFVSX0ZJTFRFUikgICAgICAgICAgICAgICAgICArPSB2Zl9nYmx1ci5vCiAgICAg
KyBPQkpTLSQoQ09ORklHX0dCTFVSX1ZVTEtBTl9GSUxURVIpICAgICAgICAgICArPSB2Zl9nYmx1
cl92dWxrYW4ubyB2dWxrYW4ubyB2dWxrYW5fZmlsdGVyLm8KICAgICAgIE9CSlMtJChDT05GSUdf
R0VRX0ZJTFRFUikgICAgICAgICAgICAgICAgICAgICs9IHZmX2dlcS5vCiAgICAgICBPQkpTLSQo
Q09ORklHX0dSQURGVU5fRklMVEVSKSAgICAgICAgICAgICAgICArPSB2Zl9ncmFkZnVuLm8KICAg
ICAtIE9CSlMtJChDT05GSUdfR1JBUEhJQ1NVQjJWSURFT19GSUxURVIpICAgICAgICs9IHZmX292
ZXJsYXlncmFwaGljc3Vicy5vIGZyYW1lc3luYy5vCiAgICAgICtPQkpTLSQoQ09ORklHX0dSQVBI
SUNTVUIyVEVYVF9GSUxURVIpICAgICAgICArPSBzZl9ncmFwaGljc3ViMnRleHQubwogICAgIC0r
T0JKUy0kKENPTkZJR19HUkFQSElDU1VCMlZJREVPX0ZJTFRFUikgICAgICAgKz0gdmZfb3Zlcmxh
eWdyYXBoaWNzdWJzLm8gZnJhbWVzeW5jLm8KICAgICArIE9CSlMtJChDT05GSUdfR1JBUEhJQ1NV
QjJWSURFT19GSUxURVIpICAgICAgICs9IHZmX292ZXJsYXlncmFwaGljc3Vicy5vIGZyYW1lc3lu
Yy5vCiAgICAgICBPQkpTLSQoQ09ORklHX0dSQVBITU9OSVRPUl9GSUxURVIpICAgICAgICAgICAr
PSBmX2dyYXBobW9uaXRvci5vCiAgICAgICBPQkpTLSQoQ09ORklHX0dSQVlXT1JMRF9GSUxURVIp
ICAgICAgICAgICAgICArPSB2Zl9ncmF5d29ybGQubwogICAgIC0gT0JKUy0kKENPTkZJR19HUkVZ
RURHRV9GSUxURVIpICAgICAgICAgICAgICAgKz0gdmZfY29sb3Jjb25zdGFuY3kubwogICAgICAK
ICAgICAgICMjIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAjIwogICAgICBAQCBsaWJhdmZpbHRl
ci9hbGxmaWx0ZXJzLmM6IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hdmZfc2hvd3dhdmVzOwog
MTg6ICAyNDRkZDZkZTMzICEgMTk6ICA3MDk1ZThhYTI2IGF2ZmlsdGVyL3N1YnNjYWxlOiBBZGQg
ZmlsdGVyIGZvciBzY2FsaW5nIGFuZC9vciByZS1hcnJhbmdpbmcgZ3JhcGhpY2FsIHN1YnRpdGxl
cwogICAgIEBAIGRvYy9maWx0ZXJzLnRleGk6IFNldCB0aGUgcmVuZGVyaW5nIG1hcmdpbiBpbiBw
aXhlbHMuCiAgICAgICtpbnNpZGUgdGhlIHZpZGVvIGFyZWEgd2l0aG91dCBzY2FsaW5nLCB0aGVu
IG92ZXJsYXkKICAgICAgK3N1YnRpdGxlcyBvbnRvIHRoZSB2aWRlby4KICAgICAgK0BleGFtcGxl
CiAgICAgLStmZm1wZWcgLXkgLWxvZ2xldmVsIHZlcmJvc2UgLXNzIDMyIC1pICJodHRwczovL3N0
cmVhbXMudmlkZW9sYW4ub3JnL3NhbXBsZXMvc3ViL2xhcmdlcmVzX3ZvYnN1Yi5ta3YiIC1maWx0
ZXJfY29tcGxleCAiWzA6MF1zY2FsZT0xOTIweDQwMCxzZXRzYXI9MVt2aWQxXTtbMDoxMF1zdWJz
Y2FsZT13PTE5MjA6aD00MDA6c2NhbGVfbW9kZT1ub25lOm1hcmdpbl9oPTUwOmFycmFuZ2VfaD1t
YXJnaW5fbm9fc2NhbGU6YXJyYW5nZV92PW1hcmdpbl9ub19zY2FsZTptYXJnaW5fdj01MDpudW1f
Y29sb3JzPTI1NltzdWIxXTtbdmlkMV1bc3ViMV1vdmVybGF5X2dyYXBoaWNzdWJzIiAtYzp2IGxp
YngyNjUgb3V0cHV0LnRzCiAgICAgKytmZm1wZWcgLXkgLWxvZ2xldmVsIHZlcmJvc2UgLXNzIDMy
IC1pICJodHRwczovL3N0cmVhbXMudmlkZW9sYW4ub3JnL3NhbXBsZXMvc3ViL2xhcmdlcmVzX3Zv
YnN1Yi5ta3YiIC1maWx0ZXJfY29tcGxleCAiWzA6MF1zY2FsZT0xOTIweDQwMCxzZXRzYXI9MVt2
aWQxXTtbMDoxMF1zdWJzY2FsZT13PTE5MjA6aD00MDA6c2NhbGVfbW9kZT1ub25lOm1hcmdpbl9o
PTUwOmFycmFuZ2VfaD1tYXJnaW5fbm9fc2NhbGU6YXJyYW5nZV92PW1hcmdpbl9ub19zY2FsZTpt
YXJnaW5fdj01MDpudW1fY29sb3JzPTI1NltzdWIxXTtbdmlkMV1bc3ViMV1vdmVybGF5Z3JhcGhp
Y3N1YnMiIC1jOnYgbGlieDI2NSBvdXRwdXQudHMKICAgICAgK0BlbmQgZXhhbXBsZQogICAgICAr
QGl0ZW0KICAgICAgK1NjYWxlIGJvdGgsIGEgdmlkZW8gYW5kIGl0cyBlbWJlZGRlZCBWT0Igc3Vi
cywgdGhlbiBlbmNvZGUgdGhlbSBhcyBzZXBhcmF0ZSBzdHJlYW1zIGludG8gYW4gTUtWLgogMTk6
ICBhODc4MTJiZDNjICEgMjA6ICA2OTc5Mzk0NTFlIGF2ZmlsdGVyL3N1YmZlZWQ6IGFkZCBzdWJ0
aXRsZSBmZWVkIGZpbHRlcgogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KQog
ICAgICArICAgICAgICBuZXh0X3B0cyA9IDA7CiAgICAgICsKICAgICAgKyAgICBpZiAocy0+bmV4
dF9wdHNfb2Zmc2V0KSB7CiAgICAgKysgICAgICAgIGF2X2xvZyhvdXRsaW5rLT5zcmMsIEFWX0xP
R19WRVJCT1NFLCAiU3VidHJhY3RpbmcgbmV4dF9wdHNfb2Zmc2V0OiAlIlBSSWQ2NCIgXG4iLCBz
LT5uZXh0X3B0c19vZmZzZXQpOwogICAgICArICAgICAgICBuZXh0X3B0cyAtPSBzLT5uZXh0X3B0
c19vZmZzZXQ7CiAgICAgICsgICAgICAgIHMtPm5leHRfcHRzX29mZnNldCA9IDA7CiAgICAgICsg
ICAgfQogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KQogICAgICArICAgICAg
ICBjb25zdCBBVkZyYW1lICpjdXJyZW50X2ZyYW1lID0gZmZfZnJhbWVxdWV1ZV9wZWVrKCZzLT5m
aWZvLCAwKTsKICAgICAgKyAgICAgICAgY29uc3QgaW50NjRfdCBzdWJfZW5kX3RpbWUgICA9IGN1
cnJlbnRfZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMgKyBjdXJyZW50X2ZyYW1lLT5z
dWJ0aXRsZV90aW1pbmcuZHVyYXRpb247CiAgICAgICsKICAgICAtKyAgICAgICAgaWYgKG5leHRf
cHRzID4gc3ViX2VuZF90aW1lKSB7CiAgICAgLSsgICAgICAgICAgICBBVkZyYW1lICpyZW1vdmVf
ZnJhbWUgPSBmZl9mcmFtZXF1ZXVlX3Rha2UoJnMtPmZpZm8pOwogICAgIC0rICAgICAgICAgICAg
YXZfZnJhbWVfZnJlZSgmcmVtb3ZlX2ZyYW1lKTsKICAgICAtKwogICAgIC0rICAgICAgICAgICAg
aWYgKGZmX2ZyYW1lcXVldWVfcXVldWVkX2ZyYW1lcygmcy0+ZmlmbykpIHsKICAgICArKyAgICAg
ICAgaWYgKGZmX2ZyYW1lcXVldWVfcXVldWVkX2ZyYW1lcygmcy0+ZmlmbykgPiAxKSB7CiAgICAg
KysgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpuZXh0X2ZyYW1lID0gZmZfZnJhbWVxdWV1ZV9w
ZWVrKCZzLT5maWZvLCAxKTsKICAgICArKyAgICAgICAgICAgIGlmIChuZXh0X3B0cyArIGludGVy
dmFsID4gbmV4dF9mcmFtZS0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cykgewogICAgICsrICAg
ICAgICAgICAgICAgIEFWRnJhbWUgKnJlbW92ZV9mcmFtZSA9IGZmX2ZyYW1lcXVldWVfdGFrZSgm
cy0+Zmlmbyk7CiAgICAgKysgICAgICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmcmVtb3ZlX2Zy
YW1lKTsKICAgICAgKyAgICAgICAgICAgICAgICBzLT5jdXJyZW50X2ZyYW1lX2lzbmV3ID0gMTsK
ICAgICAgKyAgICAgICAgICAgICAgICBnb3RvIHJldHJ5OwogICAgICArICAgICAgICAgICAgfQog
ICAgICArICAgICAgICB9CiAgICAgKysKICAgICArKyAgICAgICAgaWYgKG5leHRfcHRzID4gc3Vi
X2VuZF90aW1lKSB7CiAgICAgKysgICAgICAgICAgICBBVkZyYW1lICpyZW1vdmVfZnJhbWUgPSBm
Zl9mcmFtZXF1ZXVlX3Rha2UoJnMtPmZpZm8pOwogICAgICsrICAgICAgICAgICAgYXZfZnJhbWVf
ZnJlZSgmcmVtb3ZlX2ZyYW1lKTsKICAgICArKyAgICAgICAgICAgIHMtPmN1cnJlbnRfZnJhbWVf
aXNuZXcgPSAxOwogICAgICsrICAgICAgICAgICAgZ290byByZXRyeTsKICAgICArKyAgICAgICAg
fQogICAgICArICAgIH0KICAgICAgKwogICAgICArICAgIGlmIChmZl9mcmFtZXF1ZXVlX3F1ZXVl
ZF9mcmFtZXMoJnMtPmZpZm8pKSB7CiAgICAgQEAgbGliYXZmaWx0ZXIvc2Zfc3ViZmVlZC5jIChu
ZXcpCiAgICAgICsgICAgICAgICAgICBzLT5jdXJyZW50X2ZyYW1lX2lzbmV3ID0gMDsKICAgICAg
KyAgICAgICAgICAgIHMtPnJlY2VudF9zdWJ0aXRsZV9wdHMgPSBvdXQtPnN1YnRpdGxlX3RpbWlu
Zy5zdGFydF9wdHM7CiAgICAgICsKICAgICArKyAgICAgICAgICAgIGF2X2xvZyhvdXRsaW5rLT5z
cmMsIEFWX0xPR19ERUJVRywgIk91dHB1dDEgZnJhbWUgcHRzOiAlIlBSSWQ2NCIgIHN1YnRpdGxl
X3B0czogJSJQUklkNjQiICByZXBlYXRfZnJhbWU6ICVkXG4iLAogICAgICsrICAgICAgICAgICAg
ICAgIG91dC0+cHRzLCBvdXQtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMsIG91dC0+cmVwZWF0
X3N1Yik7CiAgICAgKysKICAgICAgKyAgICAgICAgICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUo
b3V0bGluaywgb3V0KTsKICAgICAgKyAgICAgICAgfQogICAgICArICAgIH0KICAgICBAQCBsaWJh
dmZpbHRlci9zZl9zdWJmZWVkLmMgKG5ldykKICAgICAgKyAgICBvdXQtPnJlcGVhdF9zdWIgPSAx
OwogICAgICArICAgIG91dC0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cyA9IHMtPnJlY2VudF9z
dWJ0aXRsZV9wdHM7CiAgICAgICsKICAgICArKyAgICBhdl9sb2cob3V0bGluay0+c3JjLCBBVl9M
T0dfREVCVUcsICJPdXRwdXQyIGZyYW1lIHB0czogJSJQUklkNjQiICBzdWJ0aXRsZV9wdHM6ICUi
UFJJZDY0IiAgcmVwZWF0X2ZyYW1lOiAlZFxuIiwKICAgICArKyAgICAgICAgb3V0LT5wdHMsIG91
dC0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cywgb3V0LT5yZXBlYXRfc3ViKTsKICAgICArKwog
ICAgICArICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgb3V0KTsKICAgICAgK30K
ICAgICAgKwogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KQogICAgICArICAg
IFN1YkZlZWRDb250ZXh0ICpzICAgICAgICAgICA9IGlubGluay0+ZHN0LT5wcml2OwogICAgICAr
ICAgIEFWRmlsdGVyTGluayAqb3V0bGluayAgICAgICA9IGlubGluay0+ZHN0LT5vdXRwdXRzWzBd
OwogICAgICArICAgIGNvbnN0IGludDY0X3QgaW5kZXggICAgICAgICA9IChpbnQ2NF90KWZmX2Zy
YW1lcXVldWVfcXVldWVkX2ZyYW1lcygmcy0+ZmlmbykgLSAxOwogICAgICsrICAgIHNpemVfdCBu
Yl9xdWV1ZWRfZnJhbWVzOwogICAgICArICAgIGludCByZXQgPSAwOwogICAgICArCiAgICAgKysg
ICAgYXZfbG9nKGN0eCwgQVZfTE9HX1ZFUkJPU0UsICJmcmFtZS5wdHM6ICUiUFJJZDY0IiAoQVZU
QjogJSJQUklkNjQiKSAtICBzdWJ0aXRsZV90aW1pbmcuc3RhcnRfcHRzOiAlIlBSSWQ2NCIgc3Vi
dGl0bGVfdGltaW5nLmR1cmF0aW9uOiAlIlBSSWQ2NCIgLSBmb3JtYXQ6ICVkXG4iLAogICAgICsr
ICAgICAgICBmcmFtZS0+cHRzLCBhdl9yZXNjYWxlX3EoZnJhbWUtPnB0cywgaW5saW5rLT50aW1l
X2Jhc2UsIEFWX1RJTUVfQkFTRV9RKSwgZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMs
IGZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVyYXRpb24sIGZyYW1lLT5mb3JtYXQpOwogICAgICsr
CiAgICAgICsgICAgZnJhbWUtPnB0cyA9IGF2X3Jlc2NhbGVfcShmcmFtZS0+cHRzLCBpbmxpbmst
PnRpbWVfYmFzZSwgQVZfVElNRV9CQVNFX1EpOwogICAgICArCiAgICAgICsgICAgaWYgKGluZGV4
IDwgMCkgewogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KQogICAgICArICAg
IH0gZWxzZSBpZiAocy0+Zml4X2R1cmF0aW9ucyB8fCBzLT5maXhfb3ZlcmxhcCkgewogICAgICAr
ICAgICAgICBBVkZyYW1lICpwcmV2aW91c19mcmFtZSA9IGZmX2ZyYW1lcXVldWVfcGVlaygmcy0+
ZmlmbywgaW5kZXgpOwogICAgICArICAgICAgICBjb25zdCBpbnQ2NF90IHB0c19kaWZmID0gZnJh
bWUtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMgLSBwcmV2aW91c19mcmFtZS0+c3VidGl0bGVf
dGltaW5nLnN0YXJ0X3B0czsKICAgICArKyAgICAgICAgbmJfcXVldWVkX2ZyYW1lcyA9IGZmX2Zy
YW1lcXVldWVfcXVldWVkX2ZyYW1lcygmcy0+Zmlmbyk7CiAgICAgICsKICAgICAtKyAgICAgICAg
aWYgKHMtPmZpeF9kdXJhdGlvbnMgJiYgcHRzX2RpZmYgPiAwICYmIHByZXZpb3VzX2ZyYW1lLT5z
dWJ0aXRsZV90aW1pbmcuZHVyYXRpb24gPiBtc190b19hdnRiKDI5MDAwKSkKICAgICAtKyAgICAg
ICAgICAgICAgICAgICAgcHJldmlvdXNfZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5kdXJhdGlvbiA9
IGZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuc3RhcnRfcHRzIC0gcHJldmlvdXNfZnJhbWUtPnN1YnRp
dGxlX3RpbWluZy5zdGFydF9wdHM7CiAgICAgKysgICAgICAgIGlmIChzLT5maXhfZHVyYXRpb25z
ICYmIHB0c19kaWZmID4gMCAmJiBwcmV2aW91c19mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0
aW9uID4gbXNfdG9fYXZ0YigyOTAwMCkpIHsKICAgICArKyAgICAgICAgICAgIGF2X2xvZyhjdHgs
IEFWX0xPR19WRVJCT1NFLCAiUHJldmlvdXMgZnJhbWUgKGluZGV4ICMlIlBSSWQ2NCIpIGhhcyBh
IGR1cmF0aW9uIG9mICUiUFJJZDY0IiBtcywgc2V0dGluZyB0byAgJSJQUklkNjQiIG1zXG4iLAog
ICAgICsrICAgICAgICAgICAgICAgIGluZGV4LCBhdnRiX3RvX21zKHByZXZpb3VzX2ZyYW1lLT5z
dWJ0aXRsZV90aW1pbmcuZHVyYXRpb24pLCBhdnRiX3RvX21zKGZyYW1lLT5zdWJ0aXRsZV90aW1p
bmcuc3RhcnRfcHRzIC0gcHJldmlvdXNfZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMp
KTsKICAgICArKyAgICAgICAgICAgIHByZXZpb3VzX2ZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVy
YXRpb24gPSBmcmFtZS0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cyAtIHByZXZpb3VzX2ZyYW1l
LT5zdWJ0aXRsZV90aW1pbmcuc3RhcnRfcHRzOwogICAgICsrICAgICAgICB9CiAgICAgKysKICAg
ICArKyAgICAgICAgaWYgKHMtPmZpeF9vdmVybGFwICYmIHB0c19kaWZmID4gMCAmJiBwcmV2aW91
c19mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uID4gcHRzX2RpZmYpIHsKICAgICArKyAg
ICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19WRVJCT1NFLCAiRGV0ZWN0ZWQgb3ZlcmxhcCBm
cm9tIHByZXZpb3VzIGZyYW1lIChpbmRleCAjJSJQUklkNjQiKSB3aGljaCBoYWQgYSBkdXJhdGlv
biBvZiAlIlBSSWQ2NCIgbXMsIHNldHRpbmcgdG8gdGhlIHB0c19kaWZmIHdoaWNoIGlzICUiUFJJ
ZDY0IiBtc1xuIiwKICAgICArKyAgICAgICAgICAgICAgICBpbmRleCwgYXZ0Yl90b19tcyhwcmV2
aW91c19mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uKSwgYXZ0Yl90b19tcyhwdHNfZGlm
ZikpOwogICAgICsrICAgICAgICAgICAgcHJldmlvdXNfZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5k
dXJhdGlvbiA9IHB0c19kaWZmOwogICAgICsrICAgICAgICB9CiAgICAgICsKICAgICAtKyAgICAg
ICAgaWYgKHMtPmZpeF9vdmVybGFwICYmIHB0c19kaWZmID4gMCAmJiBwcmV2aW91c19mcmFtZS0+
c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uID4gcHRzX2RpZmYpCiAgICAgLSsgICAgICAgICAgICAg
ICAgICAgIHByZXZpb3VzX2ZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVyYXRpb24gPSBwdHNfZGlm
ZjsKICAgICArKyAgICAgICAgaWYgKHB0c19kaWZmIDw9IDApIHsKICAgICArKyAgICAgICAgICAg
IGF2X2xvZyhjdHgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIHB0c19kaWZmIHRvIHRoZSBwcmV2aW91
cyBmcmFtZSAoaW5kZXggIyUiUFJJZDY0IikgIGlzIDw9IDA6ICUiUFJJZDY0IiBtcy4gVGhlIHBy
ZXZpb3VzIGZyYW1lIGR1cmF0aW9uIGlzICUiUFJJZDY0IiBtcy5cbiIsCiAgICAgKysgICAgICAg
ICAgICAgICAgaW5kZXgsIGF2dGJfdG9fbXMocHRzX2RpZmYpLCAgYXZ0Yl90b19tcyhwcmV2aW91
c19mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uKSk7CiAgICAgKysgICAgICAgIH0KICAg
ICAgKyAgICB9CiAgICAgICsKICAgICAgKyAgICBmZl9mcmFtZXF1ZXVlX2FkZCgmcy0+Zmlmbywg
ZnJhbWUpOwogICAgICArCiAgICAgLSsgICAgaWYgKGluZGV4ID4gMykKICAgICAtKyAgICAgICAg
YXZfbG9nKGN0eCwgQVZfTE9HX1dBUk5JTkcsICJmcmFtZSBxdWV1ZSBjb3VudDogJWRcbiIsIChp
bnQpaW5kZXgpOwogICAgICsrICAgIG5iX3F1ZXVlZF9mcmFtZXMgPSBmZl9mcmFtZXF1ZXVlX3F1
ZXVlZF9mcmFtZXMoJnMtPmZpZm8pOwogICAgICsrCiAgICAgKysgICAgaWYgKG5iX3F1ZXVlZF9m
cmFtZXMgPiAzKQogICAgICsrICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfV0FSTklORywgImZy
YW1lIHF1ZXVlIGNvdW50OiAlenVcbiIsIG5iX3F1ZXVlZF9mcmFtZXMpOwogICAgICArCiAgICAg
LSsgICAgaWYgKHMtPm1vZGUgPT0gRk1fRk9SV0FSRCAmJiBmZl9mcmFtZXF1ZXVlX3F1ZXVlZF9m
cmFtZXMoJnMtPmZpZm8pKSB7CiAgICAgKysgICAgaWYgKHMtPm1vZGUgPT0gRk1fRk9SV0FSRCAm
JiBuYl9xdWV1ZWRfZnJhbWVzKSB7CiAgICAgICsKICAgICAgKyAgICAgICAgQVZGcmFtZSAqZmly
c3RfZnJhbWUgPSBmZl9mcmFtZXF1ZXVlX3BlZWsoJnMtPmZpZm8sIDApOwogICAgICArCiAgICAg
LSsgICAgICAgIGlmIChzLT5maXhfb3ZlcmxhcCAmJiBmZl9mcmFtZXF1ZXVlX3F1ZXVlZF9mcmFt
ZXMoJnMtPmZpZm8pIDwgMikKICAgICAtKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICsrICAg
ICAgICBpZiAocy0+Zml4X292ZXJsYXAgJiYgbmJfcXVldWVkX2ZyYW1lcyA8IDIpIHsKICAgICAr
KyAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfVkVSQk9TRSwgIlJldHVybiBubyBmcmFtZSBz
aW5jZSB3ZSBoYXZlIGxlc3MgdGhhbiAyXG4iKTsKICAgICArKyAgICAgICAgICByZXR1cm4gMDsK
ICAgICArKyAgICAgICAgfQogICAgICArCiAgICAgLSsgICAgICAgIGlmIChzLT5maXhfZHVyYXRp
b25zICYmIGZpcnN0X2ZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVyYXRpb24gPiBtc190b19hdnRi
KDI5MDAwKSkKICAgICArKyAgICAgICAgaWYgKHMtPmZpeF9kdXJhdGlvbnMgJiYgZmlyc3RfZnJh
bWUtPnN1YnRpdGxlX3RpbWluZy5kdXJhdGlvbiA+IG1zX3RvX2F2dGIoMjkwMDApKSB7CiAgICAg
KysgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfVkVSQk9TRSwgIlJldHVybiBubyBmcmFt
ZSBiZWNhdXNlIGZpcnN0IGZyYW1lIGR1cmF0aW9uIGlzICUiUFJJZDY0IiBtc1xuIiwgYXZ0Yl90
b19tcyhmaXJzdF9mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uKSk7CiAgICAgICsgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICArKyAgICAgICAgfQogICAgICArCiAgICAgICsgICAgICAg
IGZpcnN0X2ZyYW1lID0gZmZfZnJhbWVxdWV1ZV90YWtlKCZzLT5maWZvKTsKICAgICAgKyAgICAg
ICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShvdXRsaW5rLCBmaXJzdF9mcmFtZSk7CiAyMDogIGFl
YThhY2IwNTcgISAyMTogIDMyZTlhZjA4MDYgYXZjb2RlYy9zdWJ0aXRsZXM6IE1pZ3JhdGUgc3Vi
dGl0bGUgZW5jb2RlcnMgdG8gZnJhbWUtYmFzZWQgQVBJCiAgICAgQEAgQ29tbWl0IG1lc3NhZ2UK
ICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL2Fzc2VuYy5jICMjCiAgICAgIEBACiAgICAgLSAj
aW5jbHVkZSA8c3RyaW5nLmg+CiAgICAgICAKICAgICAgICNpbmNsdWRlICJhdmNvZGVjLmgiCiAg
ICAgKyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRlICJlbmNvZGUu
aCIKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX2ludGVybmFsLmgiCiAgICAgLSAjaW5j
bHVkZSAiaW50ZXJuYWwuaCIKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIK
ICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKICAgICAgICNpbmNsdWRlICJs
aWJhdnV0aWwvbWVtLmgiCiAgICAgQEAgbGliYXZjb2RlYy9hc3NlbmMuYwogICAgICAgfQogICAg
ICAgCiAgICAgICAjaWYgQ09ORklHX1NTQV9FTkNPREVSCiAgICAgLSBjb25zdCBBVkNvZGVjIGZm
X3NzYV9lbmNvZGVyID0gewogICAgIC0tICAgIC5uYW1lICAgICAgICAgPSAic3NhIiwKICAgICAt
LSAgICAubG9uZ19uYW1lICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkFTUyAoQWR2YW5jZWQg
U3ViU3RhdGlvbiBBbHBoYSkgc3VidGl0bGUiKSwKICAgICAtLSAgICAudHlwZSAgICAgICAgID0g
QVZNRURJQV9UWVBFX1NVQlRJVExFLAogICAgIC0tICAgIC5pZCAgICAgICAgICAgPSBBVl9DT0RF
Q19JRF9BU1MsCiAgICAgKyBjb25zdCBGRkNvZGVjIGZmX3NzYV9lbmNvZGVyID0gewogICAgICst
ICAgIC5wLm5hbWUgICAgICAgPSAic3NhIiwKICAgICArLSAgICAucC5sb25nX25hbWUgID0gTlVM
TF9JRl9DT05GSUdfU01BTEwoIkFTUyAoQWR2YW5jZWQgU3ViU3RhdGlvbiBBbHBoYSkgc3VidGl0
bGUiKSwKICAgICArLSAgICAucC50eXBlICAgICAgID0gQVZNRURJQV9UWVBFX1NVQlRJVExFLAog
ICAgICstICAgIC5wLmlkICAgICAgICAgPSBBVl9DT0RFQ19JRF9BU1MsCiAgICAgIC0gICAgLmlu
aXQgICAgICAgICA9IGFzc19lbmNvZGVfaW5pdCwKICAgICAtLSAgICAuZW5jb2RlX3N1YiAgID0g
YXNzX2VuY29kZV9mcmFtZSwKICAgICAtKyAgICAubmFtZSAgICAgICAgICAgPSAic3NhIiwKICAg
ICAtKyAgICAubG9uZ19uYW1lICAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiQVNTIChBZHZh
bmNlZCBTdWJTdGF0aW9uIEFscGhhKSBzdWJ0aXRsZSIpLAogICAgIC0rICAgIC50eXBlICAgICAg
ICAgICA9IEFWTUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICAtKyAgICAuaWQgICAgICAgICAgICAg
PSBBVl9DT0RFQ19JRF9BU1MsCiAgICAgKy0gICAgRkZfQ09ERUNfRU5DT0RFX1NVQl9DQihhc3Nf
ZW5jb2RlX2ZyYW1lKSwKICAgICArKyAgICAucC5uYW1lICAgICAgICAgICA9ICJzc2EiLAogICAg
ICsrICAgIC5wLmxvbmdfbmFtZSAgICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkFTUyAoQWR2
YW5jZWQgU3ViU3RhdGlvbiBBbHBoYSkgc3VidGl0bGUiKSwKICAgICArKyAgICAucC50eXBlICAg
ICAgICAgICA9IEFWTUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICArKyAgICAucC5pZCAgICAgICAg
ICAgICA9IEFWX0NPREVDX0lEX0FTUywKICAgICAgKyAgICAucHJpdl9kYXRhX3NpemUgPSBzaXpl
b2YoQXNzRW5jQ29udGV4dCksCiAgICAgICsgICAgLmluaXQgICAgICAgICAgID0gYXNzX2VuY29k
ZV9pbml0LAogICAgICArICAgIC5jbG9zZSAgICAgICAgICA9IGFzc19lbmNvZGVfY2xvc2UsCiAg
ICAgLSsgICAgLnJlY2VpdmVfcGFja2V0ID0gYXNzX3JlY2VpdmVfcGFja2V0LAogICAgICsrICAg
IEZGX0NPREVDX1JFQ0VJVkVfUEFDS0VUX0NCKGFzc19yZWNlaXZlX3BhY2tldCksCiAgICAgICAg
ICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX0lOSVRfVEhSRUFEU0FGRSwKICAgICAg
IH07CiAgICAgICAjZW5kaWYKICAgICAgIAogICAgICAgI2lmIENPTkZJR19BU1NfRU5DT0RFUgog
ICAgIC0gY29uc3QgQVZDb2RlYyBmZl9hc3NfZW5jb2RlciA9IHsKICAgICAtLSAgICAubmFtZSAg
ICAgICAgID0gImFzcyIsCiAgICAgLS0gICAgLmxvbmdfbmFtZSAgICA9IE5VTExfSUZfQ09ORklH
X1NNQUxMKCJBU1MgKEFkdmFuY2VkIFN1YlN0YXRpb24gQWxwaGEpIHN1YnRpdGxlIiksCiAgICAg
LS0gICAgLnR5cGUgICAgICAgICA9IEFWTUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICAtLSAgICAu
aWQgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVNTLAogICAgICsgY29uc3QgRkZDb2RlYyBmZl9h
c3NfZW5jb2RlciA9IHsKICAgICArLSAgICAucC5uYW1lICAgICAgID0gImFzcyIsCiAgICAgKy0g
ICAgLnAubG9uZ19uYW1lICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJBU1MgKEFkdmFuY2VkIFN1
YlN0YXRpb24gQWxwaGEpIHN1YnRpdGxlIiksCiAgICAgKy0gICAgLnAudHlwZSAgICAgICA9IEFW
TUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICArLSAgICAucC5pZCAgICAgICAgID0gQVZfQ09ERUNf
SURfQVNTLAogICAgICAtICAgIC5pbml0ICAgICAgICAgPSBhc3NfZW5jb2RlX2luaXQsCiAgICAg
LS0gICAgLmVuY29kZV9zdWIgICA9IGFzc19lbmNvZGVfZnJhbWUsCiAgICAgLSsgICAgLm5hbWUg
ICAgICAgICAgID0gImFzcyIsCiAgICAgLSsgICAgLmxvbmdfbmFtZSAgICAgID0gTlVMTF9JRl9D
T05GSUdfU01BTEwoIkFTUyAoQWR2YW5jZWQgU3ViU3RhdGlvbiBBbHBoYSkgc3VidGl0bGUiKSwK
ICAgICAtKyAgICAudHlwZSAgICAgICAgICAgPSBBVk1FRElBX1RZUEVfU1VCVElUTEUsCiAgICAg
Ky0gICAgRkZfQ09ERUNfRU5DT0RFX1NVQl9DQihhc3NfZW5jb2RlX2ZyYW1lKSwKICAgICArKyAg
ICAucC5uYW1lICAgICAgICAgICA9ICJhc3MiLAogICAgICsrICAgIC5wLmxvbmdfbmFtZSAgICAg
ID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkFTUyAoQWR2YW5jZWQgU3ViU3RhdGlvbiBBbHBoYSkg
c3VidGl0bGUiKSwKICAgICArKyAgICAucC50eXBlICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9T
VUJUSVRMRSwKICAgICAgKyAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoQXNzRW5jQ29udGV4
dCksCiAgICAgLSsgICAgLmlkICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVNTLAogICAgICsr
ICAgIC5wLmlkICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVNTLAogICAgICArICAgIC5pbml0
ICAgICAgICAgICA9IGFzc19lbmNvZGVfaW5pdCwKICAgICAgKyAgICAuY2xvc2UgICAgICAgICAg
PSBhc3NfZW5jb2RlX2Nsb3NlLAogICAgIC0rICAgIC5yZWNlaXZlX3BhY2tldCA9IGFzc19yZWNl
aXZlX3BhY2tldCwKICAgICArKyAgICBGRl9DT0RFQ19SRUNFSVZFX1BBQ0tFVF9DQihhc3NfcmVj
ZWl2ZV9wYWNrZXQpLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9J
TklUX1RIUkVBRFNBRkUsCiAgICAgICB9OwogICAgICAgI2VuZGlmCiAgICAgQEAgbGliYXZjb2Rl
Yy9hdmNvZGVjLmg6IHZvaWQgYXZfcGFyc2VyX2Nsb3NlKEFWQ29kZWNQYXJzZXJDb250ZXh0ICpz
KTsKICAgICAgICAqIEB9CiAgICAgICAgKi8KICAgICAgCiAgICAgKyAjIyBsaWJhdmNvZGVjL2Nv
ZGVjX2ludGVybmFsLmggIyMKICAgICArQEAgbGliYXZjb2RlYy9jb2RlY19pbnRlcm5hbC5oOiBl
bnVtIEZGQ29kZWNUeXBlIHsKICAgICArICAgICAvKiBUaGUgY29kZWMgaXMgYW4gZW5jb2RlciB1
c2luZyB0aGUgZW5jb2RlIGNhbGxiYWNrOwogICAgICsgICAgICAqIGF1ZGlvIGFuZCB2aWRlbyBj
b2RlY3Mgb25seS4gKi8KICAgICArICAgICBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERSwKICAgICAr
LSAgICAvKiBUaGUgY29kZWMgaXMgYW4gZW5jb2RlciB1c2luZyB0aGUgZW5jb2RlX3N1YiBjYWxs
YmFjazsKICAgICArLSAgICAgKiBzdWJ0aXRsZSBjb2RlY3Mgb25seS4gKi8KICAgICArLSAgICBG
Rl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUIsCiAgICAgKyAgICAgLyogVGhlIGNvZGVjIGlzIGFu
IGVuY29kZXIgdXNpbmcgdGhlIHJlY2VpdmVfcGFja2V0IGNhbGxiYWNrOwogICAgICsgICAgICAq
IGF1ZGlvIGFuZCB2aWRlbyBjb2RlY3Mgb25seS4gKi8KICAgICArICAgICBGRl9DT0RFQ19DQl9U
WVBFX1JFQ0VJVkVfUEFDS0VULAogICAgICtAQCBsaWJhdmNvZGVjL2NvZGVjX2ludGVybmFsLmg6
IHR5cGVkZWYgc3RydWN0IEZGQ29kZWMgewogICAgICsgICAgICAgICAgKi8KICAgICArICAgICAg
ICAgaW50ICgqZW5jb2RlKShzdHJ1Y3QgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBzdHJ1Y3QgQVZQ
YWNrZXQgKmF2cGt0LAogICAgICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBB
VkZyYW1lICpmcmFtZSwgaW50ICpnb3RfcGFja2V0X3B0cik7CiAgICAgKy0gICAgICAgIC8qKgog
ICAgICstICAgICAgICAgKiBFbmNvZGUgc3VidGl0bGVzIHRvIGEgcmF3IGJ1ZmZlci4KICAgICAr
LSAgICAgICAgICogY2IgaXMgaW4gdGhpcyBzdGF0ZSBpZiBjYl90eXBlIGlzIEZGX0NPREVDX0NC
X1RZUEVfRU5DT0RFX1NVQi4KICAgICArLSAgICAgICAgICovCiAgICAgKy0gICAgICAgIGludCAo
KmVuY29kZV9zdWIpKHN0cnVjdCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHVpbnQ4X3QgKmJ1ZiwK
ICAgICArLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1Zl9zaXplLCBjb25zdCBzdHJ1
Y3QgQVZTdWJ0aXRsZSAqc3ViKTsKICAgICArICAgICAgICAgLyoqCiAgICAgKyAgICAgICAgICAq
IEVuY29kZSBBUEkgd2l0aCBkZWNvdXBsZWQgZnJhbWUvcGFja2V0IGRhdGFmbG93LgogICAgICsg
ICAgICAgICAgKiBjYiBpcyBpbiB0aGlzIHN0YXRlIGlmIGNiX3R5cGUgaXMgRkZfQ09ERUNfQ0Jf
VFlQRV9SRUNFSVZFX1BBQ0tFVC4KICAgICArQEAgbGliYXZjb2RlYy9jb2RlY19pbnRlcm5hbC5o
OiB0eXBlZGVmIHN0cnVjdCBGRkNvZGVjIHsKICAgICArICNkZWZpbmUgRkZfQ09ERUNfRU5DT0RF
X0NCKGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKyAgICAgLmNiX3R5cGUg
ICAgICAgICAgID0gRkZfQ09ERUNfQ0JfVFlQRV9FTkNPREUsICAgICAgICAgXAogICAgICsgICAg
IC5jYi5lbmNvZGUgICAgICAgICA9IChmdW5jKQogICAgICstI2RlZmluZSBGRl9DT0RFQ19FTkNP
REVfU1VCX0NCKGZ1bmMpICAgICAgICAgICAgICAgICAgICAgIFwKICAgICArLSAgICAuY2JfdHlw
ZSAgICAgICAgICAgPSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUIsICAgICBcCiAgICAgKy0g
ICAgLmNiLmVuY29kZV9zdWIgICAgID0gKGZ1bmMpCiAgICAgKyAjZGVmaW5lIEZGX0NPREVDX1JF
Q0VJVkVfUEFDS0VUX0NCKGZ1bmMpICAgICAgICAgICAgICAgICAgXAogICAgICsgICAgIC5jYl90
eXBlICAgICAgICAgICA9IEZGX0NPREVDX0NCX1RZUEVfUkVDRUlWRV9QQUNLRVQsIFwKICAgICAr
ICAgICAuY2IucmVjZWl2ZV9wYWNrZXQgPSAoZnVuYykKICAgICArCiAgICAgICAjIyBsaWJhdmNv
ZGVjL2R2YnN1YmVuYy5jICMjCiAgICAgIEBACiAgICAgLSAgKi8KICAgICAgICNpbmNsdWRlICJh
dmNvZGVjLmgiCiAgICAgICAjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgogICAgICsgI2luY2x1ZGUg
ImNvZGVjX2ludGVybmFsLmgiCiAgICAgICsjaW5jbHVkZSAiZW5jb2RlLmgiCiAgICAgICAjaW5j
bHVkZSAibGliYXZ1dGlsL2NvbG9yc3BhY2UuaCIKICAgICAgIAogICAgIEBAIGxpYmF2Y29kZWMv
ZHZic3ViZW5jLmM6IHN0YXRpYyBpbnQgZHZic3ViX2VuY29kZShBVkNvZGVjQ29udGV4dCAqYXZj
dHgsIHVpbnQ4X3QKICAgICAgKyAgICByZXR1cm4gMDsKICAgICAgIH0KICAgICAgIAogICAgIC0g
Y29uc3QgQVZDb2RlYyBmZl9kdmJzdWJfZW5jb2RlciA9IHsKICAgICAtQEAgbGliYXZjb2RlYy9k
dmJzdWJlbmMuYzogY29uc3QgQVZDb2RlYyBmZl9kdmJzdWJfZW5jb2RlciA9IHsKICAgICAtICAg
ICAudHlwZSAgICAgICAgICAgPSBBVk1FRElBX1RZUEVfU1VCVElUTEUsCiAgICAgLSAgICAgLmlk
ICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfRFZCX1NVQlRJVExFLAogICAgICsgY29uc3QgRkZD
b2RlYyBmZl9kdmJzdWJfZW5jb2RlciA9IHsKICAgICArQEAgbGliYXZjb2RlYy9kdmJzdWJlbmMu
YzogY29uc3QgRkZDb2RlYyBmZl9kdmJzdWJfZW5jb2RlciA9IHsKICAgICArICAgICAucC50eXBl
ICAgICAgICAgPSBBVk1FRElBX1RZUEVfU1VCVElUTEUsCiAgICAgKyAgICAgLnAuaWQgICAgICAg
ICAgID0gQVZfQ09ERUNfSURfRFZCX1NVQlRJVExFLAogICAgICAgICAgIC5wcml2X2RhdGFfc2l6
ZSA9IHNpemVvZihEVkJTdWJ0aXRsZUNvbnRleHQpLAogICAgIC0tICAgIC5lbmNvZGVfc3ViICAg
ICA9IGR2YnN1Yl9lbmNvZGUsCiAgICAgLSsgICAgLmVuY29kZTIgICAgICAgID0gZHZic3ViX2Vu
Y29kZSwKICAgICArLSAgICBGRl9DT0RFQ19FTkNPREVfU1VCX0NCKGR2YnN1Yl9lbmNvZGUpLAog
ICAgICsrICAgIEZGX0NPREVDX0VOQ09ERV9DQihkdmJzdWJfZW5jb2RlKSwKICAgICAgIH07CiAg
ICAgIAogICAgICAgIyMgbGliYXZjb2RlYy9kdmRzdWJlbmMuYyAjIwogICAgICBAQAogICAgIC0g
ICovCiAgICAgICAjaW5jbHVkZSAiYXZjb2RlYy5oIgogICAgICAgI2luY2x1ZGUgImJ5dGVzdHJl
YW0uaCIKICAgICArICNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgogICAgICArI2luY2x1ZGUg
ImVuY29kZS5oIgogICAgICAgI2luY2x1ZGUgImludGVybmFsLmgiCiAgICAgICAjaW5jbHVkZSAi
bGliYXZ1dGlsL2F2YXNzZXJ0LmgiCiAgICAgQEAgbGliYXZjb2RlYy9kdmRzdWJlbmMuYzogc3Rh
dGljIGludCBkdmRzdWJfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgICAgcmV0
dXJuIHJldDsKICAgICAgIH0KICAgICAgIAogICAgIC1AQCBsaWJhdmNvZGVjL2R2ZHN1YmVuYy5j
OiBjb25zdCBBVkNvZGVjIGZmX2R2ZHN1Yl9lbmNvZGVyID0gewogICAgIC0gICAgIC50eXBlICAg
ICAgICAgICA9IEFWTUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICAtICAgICAuaWQgICAgICAgICAg
ICAgPSBBVl9DT0RFQ19JRF9EVkRfU1VCVElUTEUsCiAgICAgK0BAIGxpYmF2Y29kZWMvZHZkc3Vi
ZW5jLmM6IGNvbnN0IEZGQ29kZWMgZmZfZHZkc3ViX2VuY29kZXIgPSB7CiAgICAgKyAgICAgLnAu
dHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1NVQlRJVExFLAogICAgICsgICAgIC5wLmlkICAg
ICAgICAgICA9IEFWX0NPREVDX0lEX0RWRF9TVUJUSVRMRSwKICAgICAgICAgICAuaW5pdCAgICAg
ICAgICAgPSBkdmRzdWJfaW5pdCwKICAgICAtLSAgICAuZW5jb2RlX3N1YiAgICAgPSBkdmRzdWJf
ZW5jb2RlLAogICAgIC0rICAgIC5lbmNvZGUyICAgICAgICA9IGR2ZHN1Yl9lbmNvZGUsCiAgICAg
LSAgICAgLnByaXZfY2xhc3MgICAgID0gJmR2ZHN1YmVuY19jbGFzcywKICAgICArLSAgICBGRl9D
T0RFQ19FTkNPREVfU1VCX0NCKGR2ZHN1Yl9lbmNvZGUpLAogICAgICsrICAgIEZGX0NPREVDX0VO
Q09ERV9DQihkdmRzdWJfZW5jb2RlKSwKICAgICArICAgICAucC5wcml2X2NsYXNzICAgPSAmZHZk
c3ViZW5jX2NsYXNzLAogICAgICAgICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihEVkRTdWJ0
aXRsZUNvbnRleHQpLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9J
TklUX1RIUkVBRFNBRkUsCiAgICAgIAogICAgIEBAIGxpYmF2Y29kZWMvZW5jb2RlLmM6IGZhaWw6
CiAgICAgICtpbnQgYXZjb2RlY19lbmNvZGVfc3VidGl0bGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4
LCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSwgY29uc3QgQVZTdWJ0aXRsZSAqc3ViKQogICAg
ICAgewogICAgICAtICAgIGludCByZXQ7CiAgICAgLSsgICAgaW50IHJldCA9IDAsIGdvdF9wYWNr
ZXQgPSAwOwogICAgICsrICAgIGludCByZXQgPSAwOwogICAgICArICAgIEFWRnJhbWUgKmZyYW1l
ID0gTlVMTDsKICAgICAgKyAgICBBVlBhY2tldCogYXZwa3QgPSBOVUxMOwogICAgICArCiAgICAg
QEAgbGliYXZjb2RlYy9lbmNvZGUuYzogZmFpbDoKICAgICAgICAgICAgICAgcmV0dXJuIC0xOwog
ICAgICAgICAgIH0KICAgICAgIAogICAgIC0tICAgIHJldCA9IGF2Y3R4LT5jb2RlYy0+ZW5jb2Rl
X3N1YihhdmN0eCwgYnVmLCBidWZfc2l6ZSwgc3ViKTsKICAgICArLSAgICByZXQgPSBmZmNvZGVj
KGF2Y3R4LT5jb2RlYyktPmNiLmVuY29kZV9zdWIoYXZjdHgsIGJ1ZiwgYnVmX3NpemUsIHN1Yik7
CiAgICAgICsgICAgbWVtc2V0KGJ1ZiwgMCwgYnVmX3NpemUpOwogICAgICArICAgIC8vIENyZWF0
ZSBhIHRlbXBvcmFyeSBmcmFtZSBmb3IgY2FsbGluZyB0aGUgcmVndWxhciBhcGk6CiAgICAgICsg
ICAgZnJhbWUgPSBhdl9mcmFtZV9hbGxvYygpOwogICAgIEBAIGxpYmF2Y29kZWMvZW5jb2RlLmM6
IGZhaWw6CiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy9tb3Z0ZXh0ZW5jLmMgIyMKICAgICAg
QEAKICAgICAtICNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX3NwbGl0X2ludGVybmFsLmgiCiAgICAg
ICAjaW5jbHVkZSAibGliYXZ1dGlsL2Fzc19pbnRlcm5hbC5oIgogICAgICAgI2luY2x1ZGUgImJ5
dGVzdHJlYW0uaCIKICAgICArICNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgogICAgICArI2lu
Y2x1ZGUgImVuY29kZS5oIgogICAgIC0gI2luY2x1ZGUgImludGVybmFsLmgiCiAgICAgICAKICAg
ICAgICNkZWZpbmUgU1RZTEVfRkxBR19CT0xEICAgICAgICAgKDE8PDApCiAgICAgKyAjZGVmaW5l
IFNUWUxFX0ZMQUdfSVRBTElDICAgICAgICgxPDwxKQogICAgICBAQCBsaWJhdmNvZGVjL21vdnRl
eHRlbmMuYzogdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICAgIEFWQ29kZWNDb250ZXh0ICphdmN0
eDsKICAgICAgIAogICAgIEBAIGxpYmF2Y29kZWMvbW92dGV4dGVuYy5jOiBzdGF0aWMgY29uc3Qg
QVNTQ29kZXNDYWxsYmFja3MgbW92X3RleHRfY2FsbGJhY2tzID0gewogICAgICAgfQogICAgICAg
CiAgICAgICAjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihNb3ZUZXh0Q29udGV4dCwgeCkKICAg
ICAtQEAgbGliYXZjb2RlYy9tb3Z0ZXh0ZW5jLmM6IGNvbnN0IEFWQ29kZWMgZmZfbW92dGV4dF9l
bmNvZGVyID0gewogICAgICtAQCBsaWJhdmNvZGVjL21vdnRleHRlbmMuYzogY29uc3QgRkZDb2Rl
YyBmZl9tb3Z0ZXh0X2VuY29kZXIgPSB7CiAgICAgICAgICAgLnByaXZfZGF0YV9zaXplID0gc2l6
ZW9mKE1vdlRleHRDb250ZXh0KSwKICAgICAtICAgICAucHJpdl9jbGFzcyAgICAgPSAmbW92X3Rl
eHRfZW5jb2Rlcl9jbGFzcywKICAgICArICAgICAucC5wcml2X2NsYXNzICAgPSAmbW92X3RleHRf
ZW5jb2Rlcl9jbGFzcywKICAgICAgICAgICAuaW5pdCAgICAgICAgICAgPSBtb3ZfdGV4dF9lbmNv
ZGVfaW5pdCwKICAgICAtLSAgICAuZW5jb2RlX3N1YiAgICAgPSBtb3ZfdGV4dF9lbmNvZGVfZnJh
bWUsCiAgICAgLSsgICAgLmVuY29kZTIgICAgICAgID0gbW92X3RleHRfZW5jb2RlX2ZyYW1lLAog
ICAgICstICAgIEZGX0NPREVDX0VOQ09ERV9TVUJfQ0IobW92X3RleHRfZW5jb2RlX2ZyYW1lKSwK
ICAgICArKyAgICBGRl9DT0RFQ19FTkNPREVfQ0IobW92X3RleHRfZW5jb2RlX2ZyYW1lKSwKICAg
ICAgICAgICAuY2xvc2UgICAgICAgICAgPSBtb3ZfdGV4dF9lbmNvZGVfY2xvc2UsCiAgICAgICAg
ICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX0lOSVRfVEhSRUFEU0FGRSB8IEZGX0NP
REVDX0NBUF9JTklUX0NMRUFOVVAsCiAgICAgICB9OwogICAgIEBAIGxpYmF2Y29kZWMvc3J0ZW5j
LmMKICAgICAgKyNpbmNsdWRlICJlbmNvZGUuaCIKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwv
YXZzdHJpbmcuaCIKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYnByaW50LmgiCiAgICAgLSAj
aW5jbHVkZSAibGliYXZ1dGlsL2Fzc19zcGxpdF9pbnRlcm5hbC5oIgogICAgICsgI2luY2x1ZGUg
ImNvZGVjX2ludGVybmFsLmgiCiAgICAgIEBACiAgICAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAg
ICAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4OwogICAgIEBAIGxpYmF2Y29kZWMvc3J0ZW5jLmM6
IHN0YXRpYyBjb25zdCBBU1NDb2Rlc0NhbGxiYWNrcyB0ZXh0X2NhbGxiYWNrcyA9IHsKICAgICAg
IH0KICAgICAgIAogICAgICAgc3RhdGljIGludCBzcnRfZW5jb2RlX2Nsb3NlKEFWQ29kZWNDb250
ZXh0ICphdmN0eCkKICAgICAtQEAgbGliYXZjb2RlYy9zcnRlbmMuYzogY29uc3QgQVZDb2RlYyBm
Zl9zcnRfZW5jb2RlciA9IHsKICAgICAtICAgICAuaWQgICAgICAgICAgICAgPSBBVl9DT0RFQ19J
RF9TVUJSSVAsCiAgICAgK0BAIGxpYmF2Y29kZWMvc3J0ZW5jLmM6IGNvbnN0IEZGQ29kZWMgZmZf
c3J0X2VuY29kZXIgPSB7CiAgICAgKyAgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNfSURf
U1VCUklQLAogICAgICAgICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihTUlRDb250ZXh0KSwK
ICAgICAgICAgICAuaW5pdCAgICAgICAgICAgPSBzcnRfZW5jb2RlX2luaXQsCiAgICAgLS0gICAg
LmVuY29kZV9zdWIgICAgID0gc3J0X2VuY29kZV9mcmFtZSwKICAgICAtKyAgICAuZW5jb2RlMiAg
ICAgICAgPSBzcnRfZW5jb2RlX2ZyYW1lLAogICAgICstICAgIEZGX0NPREVDX0VOQ09ERV9TVUJf
Q0Ioc3J0X2VuY29kZV9mcmFtZSksCiAgICAgKysgICAgRkZfQ09ERUNfRU5DT0RFX0NCKHNydF9l
bmNvZGVfZnJhbWUpLAogICAgICAgICAgIC5jbG9zZSAgICAgICAgICA9IHNydF9lbmNvZGVfY2xv
c2UsCiAgICAgICAgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX0lOSVRfVEhSRUFE
U0FGRSwKICAgICAgIH07CiAgICAgLUBAIGxpYmF2Y29kZWMvc3J0ZW5jLmM6IGNvbnN0IEFWQ29k
ZWMgZmZfc3VicmlwX2VuY29kZXIgPSB7CiAgICAgLSAgICAgLmlkICAgICAgICAgICAgID0gQVZf
Q09ERUNfSURfU1VCUklQLAogICAgICtAQCBsaWJhdmNvZGVjL3NydGVuYy5jOiBjb25zdCBGRkNv
ZGVjIGZmX3N1YnJpcF9lbmNvZGVyID0gewogICAgICsgICAgIC5wLmlkICAgICAgICAgICA9IEFW
X0NPREVDX0lEX1NVQlJJUCwKICAgICAgICAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoU1JU
Q29udGV4dCksCiAgICAgICAgICAgLmluaXQgICAgICAgICAgID0gc3J0X2VuY29kZV9pbml0LAog
ICAgIC0tICAgIC5lbmNvZGVfc3ViICAgICA9IHNydF9lbmNvZGVfZnJhbWUsCiAgICAgLSsgICAg
LmVuY29kZTIgICAgICAgID0gc3J0X2VuY29kZV9mcmFtZSwKICAgICArLSAgICBGRl9DT0RFQ19F
TkNPREVfU1VCX0NCKHNydF9lbmNvZGVfZnJhbWUpLAogICAgICsrICAgIEZGX0NPREVDX0VOQ09E
RV9DQihzcnRfZW5jb2RlX2ZyYW1lKSwKICAgICAgICAgICAuY2xvc2UgICAgICAgICAgPSBzcnRf
ZW5jb2RlX2Nsb3NlLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9J
TklUX1RIUkVBRFNBRkUsCiAgICAgICB9OwogICAgIC1AQCBsaWJhdmNvZGVjL3NydGVuYy5jOiBj
b25zdCBBVkNvZGVjIGZmX3RleHRfZW5jb2RlciA9IHsKICAgICAtICAgICAuaWQgICAgICAgICAg
ICAgPSBBVl9DT0RFQ19JRF9URVhULAogICAgICtAQCBsaWJhdmNvZGVjL3NydGVuYy5jOiBjb25z
dCBGRkNvZGVjIGZmX3RleHRfZW5jb2RlciA9IHsKICAgICArICAgICAucC5pZCAgICAgICAgICAg
PSBBVl9DT0RFQ19JRF9URVhULAogICAgICAgICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihT
UlRDb250ZXh0KSwKICAgICAgICAgICAuaW5pdCAgICAgICAgICAgPSBzcnRfZW5jb2RlX2luaXQs
CiAgICAgLS0gICAgLmVuY29kZV9zdWIgICAgID0gdGV4dF9lbmNvZGVfZnJhbWUsCiAgICAgLSsg
ICAgLmVuY29kZTIgICAgICAgID0gdGV4dF9lbmNvZGVfZnJhbWUsCiAgICAgKy0gICAgRkZfQ09E
RUNfRU5DT0RFX1NVQl9DQih0ZXh0X2VuY29kZV9mcmFtZSksCiAgICAgKysgICAgRkZfQ09ERUNf
RU5DT0RFX0NCKHRleHRfZW5jb2RlX2ZyYW1lKSwKICAgICAgICAgICAuY2xvc2UgICAgICAgICAg
PSBzcnRfZW5jb2RlX2Nsb3NlLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVD
X0NBUF9JTklUX1RIUkVBRFNBRkUsCiAgICAgICB9OwogICAgICAKICAgICAgICMjIGxpYmF2Y29k
ZWMvdGVzdHMvYXZjb2RlYy5jICMjCiAgICAgIEBAIGxpYmF2Y29kZWMvdGVzdHMvYXZjb2RlYy5j
OiBpbnQgbWFpbih2b2lkKXsKICAgICAtICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICsgICAg
ICAgICAgICAgaXNfZGVjb2RlciA9IDE7CiAgICAgKyAgICAgICAgICAgICBicmVhazsKICAgICAr
ICAgICAgICAgY2FzZSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERToKICAgICArLSAgICAgICAgY2Fz
ZSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUI6CiAgICAgKyAgICAgICAgIGNhc2UgRkZfQ09E
RUNfQ0JfVFlQRV9SRUNFSVZFX1BBQ0tFVDoKICAgICArICAgICAgICAgICAgIGlzX2VuY29kZXIg
PSAxOwogICAgICsgICAgICAgICAgICAgYnJlYWs7CiAgICAgK0BAIGxpYmF2Y29kZWMvdGVzdHMv
YXZjb2RlYy5jOiBpbnQgbWFpbih2b2lkKXsKICAgICArICNkZWZpbmUgQ0hFQ0soVFlQRSwgdHlw
ZSkgKGNvZGVjMi0+Y2JfdHlwZSA9PSBGRl9DT0RFQ19DQl9UWVBFXyAjIyBUWVBFICYmICFjb2Rl
YzItPmNiLnR5cGUpCiAgICAgKyAgICAgICAgIGlmIChDSEVDSyhERUNPREUsIGRlY29kZSkgfHwg
Q0hFQ0soREVDT0RFX1NVQiwgZGVjb2RlX3N1YikgfHwKICAgICArICAgICAgICAgICAgIENIRUNL
KFJFQ0VJVkVfUEFDS0VULCByZWNlaXZlX3BhY2tldCkgfHwKICAgICArLSAgICAgICAgICAgIENI
RUNLKEVOQ09ERSwgZW5jb2RlKSB8fCBDSEVDSyhFTkNPREVfU1VCLCBlbmNvZGVfc3ViKSB8fAog
ICAgICsrICAgICAgICAgICAgQ0hFQ0soRU5DT0RFLCBlbmNvZGUpIHx8CiAgICAgKyAgICAgICAg
ICAgICBDSEVDSyhSRUNFSVZFX0ZSQU1FLCByZWNlaXZlX2ZyYW1lKSkgewogICAgICsgICAgICAg
ICAgICAgRVJSX0VYVCgiQ29kZWMgJXMgZG9lcyBub3QgaW1wbGVtZW50IGl0cyAlcyBjYWxsYmFj
ay5cbiIsCiAgICAgKyAgICAgICAgICAgICAgICAgICAgIGlzX2RlY29kZXIgPyAiZGVjb2Rpbmci
IDogImVuY29kaW5nIik7CiAgICAgICAgICAgICAgIH0KICAgICArICN1bmRlZiBDSEVDSwogICAg
ICAgICAgICAgICBpZiAoaXNfZW5jb2RlcikgewogICAgIC0tICAgICAgICAgICAgaWYgKGNvZGVj
LT50eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSBeICEhY29kZWMtPmVuY29kZV9zdWIpCiAg
ICAgKy0gICAgICAgICAgICBpZiAoKGNvZGVjLT50eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRM
RSkgIT0gKGNvZGVjMi0+Y2JfdHlwZSA9PSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUIpKQog
ICAgICAtICAgICAgICAgICAgICAgIEVSUigiRW5jb2RlciAlcyBpcyBib3RoIHN1YnRpdGxlIGVu
Y29kZXIgYW5kIG5vdCBzdWJ0aXRsZSBlbmNvZGVyLiIpOwogICAgIC0gICAgICAgICAgICAgaWYg
KCEhY29kZWMtPmVuY29kZV9zdWIgKyAhIWNvZGVjLT5lbmNvZGUyICsgISFjb2RlYy0+cmVjZWl2
ZV9wYWNrZXQgIT0gMSkKICAgICAtICAgICAgICAgICAgICAgICBFUlIoIkVuY29kZXIgJXMgZG9l
cyBub3QgaW1wbGVtZW50IGV4YWN0bHkgb25lIGVuY29kZSBBUEkuXG4iKTsKICAgICAtICAgICAg
ICAgICAgIGlmIChjb2RlYy0+dXBkYXRlX3RocmVhZF9jb250ZXh0IHx8IGNvZGVjLT51cGRhdGVf
dGhyZWFkX2NvbnRleHRfZm9yX3VzZXIgfHwgY29kZWMtPmJzZnMpCiAgICAgKyAgICAgICAgICAg
ICBpZiAoY29kZWMyLT51cGRhdGVfdGhyZWFkX2NvbnRleHQgfHwgY29kZWMyLT51cGRhdGVfdGhy
ZWFkX2NvbnRleHRfZm9yX3VzZXIgfHwgY29kZWMyLT5ic2ZzKQogICAgICsgICAgICAgICAgICAg
ICAgIEVSUigiRW5jb2RlciAlcyBoYXMgZGVjb2Rlci1vbmx5IHRocmVhZCBmdW5jdGlvbnMgb3Ig
YnNmLlxuIik7CiAgICAgKyAgICAgICAgICAgICBpZiAoY29kZWMtPnR5cGUgPT0gQVZNRURJQV9U
WVBFX0FVRElPKSB7CiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy90dG1sZW5jLmMgIyMKICAg
ICAgQEAKICAgICBAQCBsaWJhdmNvZGVjL3R0bWxlbmMuYzogc3RhdGljIGF2X2NvbGQgaW50IHR0
bWxfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAgICAgIH0KICAgICAg
IAogICAgICAgICAgIHJldHVybiAwOwogICAgIC1AQCBsaWJhdmNvZGVjL3R0bWxlbmMuYzogY29u
c3QgQVZDb2RlYyBmZl90dG1sX2VuY29kZXIgPSB7CiAgICAgLSAgICAgLmlkICAgICAgICAgICAg
ID0gQVZfQ09ERUNfSURfVFRNTCwKICAgICArQEAgbGliYXZjb2RlYy90dG1sZW5jLmM6IGNvbnN0
IEZGQ29kZWMgZmZfdHRtbF9lbmNvZGVyID0gewogICAgICsgICAgIC5wLmlkICAgICAgICAgICA9
IEFWX0NPREVDX0lEX1RUTUwsCiAgICAgICAgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKFRU
TUxDb250ZXh0KSwKICAgICAgICAgICAuaW5pdCAgICAgICAgICAgPSB0dG1sX2VuY29kZV9pbml0
LAogICAgIC0tICAgIC5lbmNvZGVfc3ViICAgICA9IHR0bWxfZW5jb2RlX2ZyYW1lLAogICAgIC0r
ICAgIC5lbmNvZGUyICAgICAgICA9IHR0bWxfZW5jb2RlX2ZyYW1lLAogICAgICstICAgIEZGX0NP
REVDX0VOQ09ERV9TVUJfQ0IodHRtbF9lbmNvZGVfZnJhbWUpLAogICAgICsrICAgIEZGX0NPREVD
X0VOQ09ERV9DQih0dG1sX2VuY29kZV9mcmFtZSksCiAgICAgICAgICAgLmNsb3NlICAgICAgICAg
ID0gdHRtbF9lbmNvZGVfY2xvc2UsCiAgICAgICAgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09E
RUNfQ0FQX0lOSVRfVEhSRUFEU0FGRSB8IEZGX0NPREVDX0NBUF9JTklUX0NMRUFOVVAsCiAgICAg
ICB9OwogICAgICAKICAgICArICMjIGxpYmF2Y29kZWMvdXRpbHMuYyAjIwogICAgICtAQCBsaWJh
dmNvZGVjL3V0aWxzLmM6IGludCBhdl9jb2RlY19pc19lbmNvZGVyKGNvbnN0IEFWQ29kZWMgKmF2
Y29kZWMpCiAgICAgKyB7CiAgICAgKyAgICAgY29uc3QgRkZDb2RlYyAqY29uc3QgY29kZWMgPSBm
ZmNvZGVjKGF2Y29kZWMpOwogICAgICsgICAgIHJldHVybiBjb2RlYyAmJiAoY29kZWMtPmNiX3R5
cGUgPT0gRkZfQ09ERUNfQ0JfVFlQRV9FTkNPREUgICAgIHx8CiAgICAgKy0gICAgICAgICAgICAg
ICAgICAgICBjb2RlYy0+Y2JfdHlwZSA9PSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUIgfHwK
ICAgICArICAgICAgICAgICAgICAgICAgICAgIGNvZGVjLT5jYl90eXBlID09IEZGX0NPREVDX0NC
X1RZUEVfUkVDRUlWRV9QQUNLRVQpOwogICAgICsgfQogICAgICsgCiAgICAgKwogICAgICAgIyMg
bGliYXZjb2RlYy93ZWJ2dHRlbmMuYyAjIwogICAgICBAQAogICAgICAgCiAgICAgQEAgbGliYXZj
b2RlYy93ZWJ2dHRlbmMuYwogICAgICArI2luY2x1ZGUgImVuY29kZS5oIgogICAgICAgI2luY2x1
ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9icHJp
bnQuaCIKICAgICAtICNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX3NwbGl0X2ludGVybmFsLmgiCiAg
ICAgKyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgQEAKICAgICAgIHR5cGVkZWYg
c3RydWN0IHsKICAgICAgICAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHg7CiAgICAgQEAgbGliYXZj
b2RlYy93ZWJ2dHRlbmMuYzogc3RhdGljIGNvbnN0IEFTU0NvZGVzQ2FsbGJhY2tzIHdlYnZ0dF9j
YWxsYmFja3MgPSB7CiAgICAgICsKICAgICAgKyAgICAvLyBUaGUgZnJhbWUgaGFzIGNvbnRlbnQs
IHNvIHdlIG5lZWQgdG8gc2V0IHVwIGEgY29udGV4dAogICAgICArICAgIGlmIChmcmFtZS0+c3Vi
dGl0bGVfaGVhZGVyICYmIGZyYW1lLT5zdWJ0aXRsZV9oZWFkZXItPnNpemUgPiAwKSB7CiAgICAg
LSsgICAgICAgIGF2cHJpdl9hc3Nfc3BsaXRfZnJlZShzLT5hc3NfY3R4KTsKICAgICAgKyAgICAg
ICAgY29uc3QgY2hhciogc3VidGl0bGVfaGVhZGVyID0gKGNoYXIqKWZyYW1lLT5zdWJ0aXRsZV9o
ZWFkZXItPmRhdGE7CiAgICAgKysgICAgICAgIGF2cHJpdl9hc3Nfc3BsaXRfZnJlZShzLT5hc3Nf
Y3R4KTsKICAgICAgKyAgICAgICAgcy0+YXNzX2N0eCA9IGF2cHJpdl9hc3Nfc3BsaXQoc3VidGl0
bGVfaGVhZGVyKTsKICAgICAgKyAgICAgICAgcy0+aXNfZGVmYXVsdF9hc3NfY29udGV4dCA9IDA7
CiAgICAgICsgICAgfQogICAgIEBAIGxpYmF2Y29kZWMvd2VidnR0ZW5jLmM6IHN0YXRpYyBhdl9j
b2xkIGludCB3ZWJ2dHRfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2CiAgICAgICsgICAg
cmV0dXJuIDA7CiAgICAgICB9CiAgICAgICAKICAgICAtIGNvbnN0IEFWQ29kZWMgZmZfd2VidnR0
X2VuY29kZXIgPSB7CiAgICAgLUBAIGxpYmF2Y29kZWMvd2VidnR0ZW5jLmM6IGNvbnN0IEFWQ29k
ZWMgZmZfd2VidnR0X2VuY29kZXIgPSB7CiAgICAgLSAgICAgLmlkICAgICAgICAgICAgID0gQVZf
Q09ERUNfSURfV0VCVlRULAogICAgICsgY29uc3QgRkZDb2RlYyBmZl93ZWJ2dHRfZW5jb2RlciA9
IHsKICAgICArQEAgbGliYXZjb2RlYy93ZWJ2dHRlbmMuYzogY29uc3QgRkZDb2RlYyBmZl93ZWJ2
dHRfZW5jb2RlciA9IHsKICAgICArICAgICAucC5pZCAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9X
RUJWVFQsCiAgICAgICAgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKFdlYlZUVENvbnRleHQp
LAogICAgICAgICAgIC5pbml0ICAgICAgICAgICA9IHdlYnZ0dF9lbmNvZGVfaW5pdCwKICAgICAt
LSAgICAuZW5jb2RlX3N1YiAgICAgPSB3ZWJ2dHRfZW5jb2RlX2ZyYW1lLAogICAgIC0rICAgIC5l
bmNvZGUyICAgICAgICA9IHdlYnZ0dF9lbmNvZGVfZnJhbWUsCiAgICAgKy0gICAgRkZfQ09ERUNf
RU5DT0RFX1NVQl9DQih3ZWJ2dHRfZW5jb2RlX2ZyYW1lKSwKICAgICArKyAgICBGRl9DT0RFQ19F
TkNPREVfQ0Iod2VidnR0X2VuY29kZV9mcmFtZSksCiAgICAgICAgICAgLmNsb3NlICAgICAgICAg
ID0gd2VidnR0X2VuY29kZV9jbG9zZSwKICAgICAgICAgICAuY2Fwc19pbnRlcm5hbCAgPSBGRl9D
T0RFQ19DQVBfSU5JVF9USFJFQURTQUZFLAogICAgICAgfTsKICAgICAgCiAgICAgICAjIyBsaWJh
dmNvZGVjL3hzdWJlbmMuYyAjIwogICAgICBAQAogICAgIC0gCiAgICAgICAjaW5jbHVkZSAiYXZj
b2RlYy5oIgogICAgICAgI2luY2x1ZGUgImJ5dGVzdHJlYW0uaCIKICAgICArICNpbmNsdWRlICJj
b2RlY19pbnRlcm5hbC5oIgogICAgICArI2luY2x1ZGUgImVuY29kZS5oIgogICAgIC0gI2luY2x1
ZGUgImludGVybmFsLmgiCiAgICAgICAjaW5jbHVkZSAicHV0X2JpdHMuaCIKICAgICAgIAogICAg
ICsgLyoqCiAgICAgIEBAIGxpYmF2Y29kZWMveHN1YmVuYy5jOiBzdGF0aWMgaW50IG1ha2VfdGMo
dWludDY0X3QgbXMsIGludCAqdGMpCiAgICAgICAgICAgcmV0dXJuIG1zID4gOTk7CiAgICAgICB9
CiAgICAgQEAgbGliYXZjb2RlYy94c3ViZW5jLmM6IHN0YXRpYyBpbnQgeHN1Yl9lbmNvZGUoQVZD
b2RlY0NvbnRleHQgKmF2Y3R4LCB1bnNpZ25lZCBjaGEKICAgICAgIH0KICAgICAgIAogICAgICAg
c3RhdGljIGF2X2NvbGQgaW50IHhzdWJfZW5jb2Rlcl9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0
eCkKICAgICAtQEAgbGliYXZjb2RlYy94c3ViZW5jLmM6IGNvbnN0IEFWQ29kZWMgZmZfeHN1Yl9l
bmNvZGVyID0gewogICAgIC0gICAgIC50eXBlICAgICAgID0gQVZNRURJQV9UWVBFX1NVQlRJVExF
LAogICAgIC0gICAgIC5pZCAgICAgICAgID0gQVZfQ09ERUNfSURfWFNVQiwKICAgICArQEAgbGli
YXZjb2RlYy94c3ViZW5jLmM6IGNvbnN0IEZGQ29kZWMgZmZfeHN1Yl9lbmNvZGVyID0gewogICAg
ICsgICAgIC5wLnR5cGUgICAgID0gQVZNRURJQV9UWVBFX1NVQlRJVExFLAogICAgICsgICAgIC5w
LmlkICAgICAgID0gQVZfQ09ERUNfSURfWFNVQiwKICAgICAgICAgICAuaW5pdCAgICAgICA9IHhz
dWJfZW5jb2Rlcl9pbml0LAogICAgIC0tICAgIC5lbmNvZGVfc3ViID0geHN1Yl9lbmNvZGUsCiAg
ICAgLSsgICAgLmVuY29kZTIgICAgPSB4c3ViX2VuY29kZSwKICAgICArLSAgICBGRl9DT0RFQ19F
TkNPREVfU1VCX0NCKHhzdWJfZW5jb2RlKSwKICAgICArKyAgICBGRl9DT0RFQ19FTkNPREVfQ0Io
eHN1Yl9lbmNvZGUpLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsID0gRkZfQ09ERUNfQ0FQX0lO
SVRfVEhSRUFEU0FGRSwKICAgICAgIH07CiAyMTogIDMxNGQxZGE1MDUgISAyMjogIGZhMGI1YzIw
NzcgZmZ0b29scy9mZm1wZWc6IEludHJvZHVjZSBzdWJ0aXRsZSBmaWx0ZXJpbmcgYW5kIG5ldyBm
cmFtZS1iYXNlZCBzdWJ0aXRsZSBlbmNvZGluZwogICAgIEBAIENvbW1pdCBtZXNzYWdlCiAgICAg
ICAgICBKdXN0aWZpY2F0aW9uIGZvciBjaGFuZ2VkIHRlc3QgcmVmczoKICAgICAgCiAgICAgICAg
ICAtIHN1YjJ2aWRlbwogICAgIC0gICAgICBUaGUgbmV3IHJlc3VsdHMgYXJlIGlkZW50aWNhbCBl
eGNlcHRpbmcgdGhlIGxhc3QgZnJhbWUgd2hpY2gKICAgICAtICAgICAgaXMgZHVlIHRvIHRoZSBp
bXBsZW1lbnRhdGlvbiBjaGFuZ2VzCiAgICAgKyAgICAgIFRoZSBwcmV2aW91cyByZXN1bHRzIHdl
cmUgaW5jb3JyZWN0LiBUaGUgY29tbWFuZCBsaW5lIGZvciB0aGlzIHRlc3QKICAgICArICAgICAg
c3BlY2lmaWVzIC1yIDUgKDUgZnJhbWVzIHBlciBzZWNvbmQpLCB3aGljaCBpcyBub3cgZnVsZmls
bGVkIGJ5IHRoZQogICAgICsgICAgICBhZGRpdGlvbmFsIGZyYW1lcyBpbiB0aGUgcmVmZXJlbmNl
IG91dHB1dC4KICAgICArICAgICAgRXhhbXBsZTogVGhlIGZpcnN0IHN1YnRpdGxlIHRpbWUgaXMg
NDk5MDAwLCB0aGUgc2Vjb25kIGlzIDE1MzU1MDAwLAogICAgICsgICAgICB3aGljaCBtZWFucyAw
LjVzIGFuZCAxNS4zNXMgd2l0aCBhIGRpZmZlcmVuY2Ugb2YgMTQuODVzLgogICAgICsgICAgICAx
NXMgKiA1ZnBzID0gNzUgZnJhbWVzIGFuZCB0aGF0J3Mgbm93IHRoZSBleGFjdCBudW1iZXIgb2Yg
dmlkZW8KICAgICArICAgICAgZnJhbWVzIGJldHdlZW4gdGhlc2UgdHdvIHN1YnRpdGxlIGV2ZW50
cy4KICAgICAgCiAgICAgICAgICAtIHN1YjJ2aWRlb19iYXNpYwogICAgICAgICAgICBUaGUgcHJl
dmlvdXMgcmVzdWx0cyBoYWQgc29tZSBpbmNvcnJlY3Qgb3V0cHV0IGJlY2F1c2UgbXVsdGlwbGUK
ICAgICBAQCBDb21taXQgbWVzc2FnZQogICAgICAgICAgICBDUkMgaXMgZHVlIHRvIHRoZSBkaWZm
ZXJlbnQgYmxlbmRpbmcgYWxnb3JpdGhtIHRoYXQgaXMgYmVpbmcgdXNlZC4KICAgICAgCiAgICAg
ICAgICAtIHN1YjJ2aWRlb190aW1lX2xpbWl0ZWQKICAgICAtICAgICAgVGhlIHRoaXJkIGZyYW1l
IGluIHRoZSBwcmV2aW91cyByZWYgd2FzIGEgcmVwZXRpdGlvbiwgd2hpY2ggZG9lc24ndAogICAg
IC0gICAgICBoYXBwZW4gYW55bW9yZSB3aXRoIHRoZSBuZXcgc3VidGl0bGUgZmlsdGVyaW5nLgog
ICAgICsgICAgICBTdWJ0aXRsZSBmcmFtZXMgYXJlIGVtaXR0ZWQgdG8gdGhlIGZpbHRlciBncmFw
aHMgYXQgYSA1IGZwcyByYXRlCiAgICAgKyAgICAgIGJ5IGRlZmF1bHQuIFRoZSB0aW1lIGxpbWl0
IGZvciB0aGlzIHRlc3QgaXMgMTVzICogNWZwcyA9IDc1IGZyYW1lcwogICAgICsgICAgICB3aGlj
aCBtYXRjaGVzIHRoZSBjb3VudCBpbiB0aGUgbmV3IHJlZi4KICAgICAgCiAgICAgICAgICAtIHN1
Yi1kdmIKICAgICAgICAgICAgUnVubmluZyBmZnByb2JlIC1zaG93X2ZyYW1lcyBvbiB0aGUgc291
cmNlIGZpbGUgc2hvd3MgdGhhdCB0aGVyZQogICAgIEBAIENvbW1pdCBtZXNzYWdlCiAgICAgICAg
ICBTaWduZWQtb2ZmLWJ5OiBzb2Z0d29ya3ogPHNvZnR3b3JrekBob3RtYWlsLmNvbT4KICAgICAg
CiAgICAgICAjIyBmZnRvb2xzL2ZmbXBlZy5jICMjCiAgICAgLUBAIGZmdG9vbHMvZmZtcGVnLmM6
IHN0YXRpYyBpbnQgd2FudF9zZHAgPSAxOwogICAgICtAQCBmZnRvb2xzL2ZmbXBlZy5jOiBpbnQg
d2FudF9zZHAgPSAxOwogICAgICAgc3RhdGljIEJlbmNobWFya1RpbWVTdGFtcHMgY3VycmVudF90
aW1lOwogICAgICAgQVZJT0NvbnRleHQgKnByb2dyZXNzX2F2aW8gPSBOVUxMOwogICAgICAgCiAg
ICAgQEAgZmZ0b29scy9mZm1wZWcuYzogc3RhdGljIHZvaWQgZmZtcGVnX2NsZWFudXAoaW50IHJl
dCkKICAgICAgICAgICAgICAgICAgIElucHV0RmlsdGVyICppZmlsdGVyID0gZmctPmlucHV0c1tq
XTsKICAgICAgLSAgICAgICAgICAgIHN0cnVjdCBJbnB1dFN0cmVhbSAqaXN0ID0gaWZpbHRlci0+
aXN0OwogICAgICAgCiAgICAgLSAgICAgICAgICAgICB3aGlsZSAoYXZfZmlmb19zaXplKGlmaWx0
ZXItPmZyYW1lX3F1ZXVlKSkgewogICAgICsgICAgICAgICAgICAgaWYgKGlmaWx0ZXItPmZyYW1l
X3F1ZXVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgQVZGcmFtZSAqZnJhbWU7CiAgICAgIEBA
IGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyB2b2lkIGZmbXBlZ19jbGVhbnVwKGludCByZXQpCiAg
ICAgKyAgICAgICAgICAgICAgICAgYXZfZmlmb19mcmVlcDIoJmlmaWx0ZXItPmZyYW1lX3F1ZXVl
KTsKICAgICAgICAgICAgICAgICAgIH0KICAgICAtICAgICAgICAgICAgIGF2X2ZpZm9fZnJlZXAo
JmlmaWx0ZXItPmZyYW1lX3F1ZXVlKTsKICAgICAgICAgICAgICAgICAgIGF2X2ZyZWVwKCZpZmls
dGVyLT5kaXNwbGF5bWF0cml4KTsKICAgICAgLSAgICAgICAgICAgIGlmIChpc3QtPnN1YjJ2aWRl
by5zdWJfcXVldWUpIHsKICAgICAtLSAgICAgICAgICAgICAgICB3aGlsZSAoYXZfZmlmb19zaXpl
KGlzdC0+c3ViMnZpZGVvLnN1Yl9xdWV1ZSkpIHsKICAgICAtLSAgICAgICAgICAgICAgICAgICAg
QVZTdWJ0aXRsZSBzdWI7CiAgICAgLS0gICAgICAgICAgICAgICAgICAgIGF2X2ZpZm9fZ2VuZXJp
Y19yZWFkKGlzdC0+c3ViMnZpZGVvLnN1Yl9xdWV1ZSwKICAgICAtLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnN1Yiwgc2l6ZW9mKHN1YiksIE5VTEwpOwogICAgICst
ICAgICAgICAgICAgICAgIEFWU3VidGl0bGUgc3ViOwogICAgICstICAgICAgICAgICAgICAgIHdo
aWxlIChhdl9maWZvX3JlYWQoaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlLCAmc3ViLCAxKSA+PSAw
KQogICAgICAtICAgICAgICAgICAgICAgICAgICBhdnN1YnRpdGxlX2ZyZWUoJnN1Yik7CiAgICAg
LS0gICAgICAgICAgICAgICAgfQogICAgIC0tICAgICAgICAgICAgICAgIGF2X2ZpZm9fZnJlZXAo
JmlzdC0+c3ViMnZpZGVvLnN1Yl9xdWV1ZSk7CiAgICAgKy0gICAgICAgICAgICAgICAgYXZfZmlm
b19mcmVlcDIoJmlzdC0+c3ViMnZpZGVvLnN1Yl9xdWV1ZSk7CiAgICAgIC0gICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICBhdl9idWZmZXJfdW5yZWYoJmlmaWx0ZXItPmh3X2ZyYW1lc19j
dHgpOwogICAgICAgICAgICAgICAgICAgYXZfZnJlZXAoJmlmaWx0ZXItPm5hbWUpOwogICAgIEBA
IGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyB2b2lkIGZmbXBlZ19jbGVhbnVwKGludCByZXQpCiAg
ICAgICsgICAgLy8vL2F2X2ZyZWVwKCZzdWJ0aXRsZV9vdXQpOwogICAgICAgCiAgICAgICAgICAg
LyogY2xvc2UgZmlsZXMgKi8KICAgICAtICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfb3V0cHV0X2Zp
bGVzOyBpKyspIHsKICAgICArICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfb3V0cHV0X2ZpbGVzOyBp
KyspCiAgICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyB2b2lkIGZmbXBlZ19jbGVhbnVw
KGludCByZXQpCiAgICAgKyAgICAgZm9yIChpID0gMDsgaSA8IG5iX2lucHV0X3N0cmVhbXM7IGkr
KykgewogICAgICsgICAgICAgICBJbnB1dFN0cmVhbSAqaXN0ID0gaW5wdXRfc3RyZWFtc1tpXTsK
ICAgICArIAogICAgICsrICAgICAgICBpZiAoaXN0LT5wcmV2X3N1Yi5zdWJ0aXRsZSA9PSBpc3Qt
PmRlY29kZWRfZnJhbWUpCiAgICAgKysgICAgICAgICAgICAvLyBQcmV2ZW50IGRvdWJsZS1mcmVl
CiAgICAgKysgICAgICAgICAgICBpc3QtPnByZXZfc3ViLnN1YnRpdGxlID0gTlVMTDsKICAgICAr
KwogICAgICAgICAgICAgICBhdl9mcmFtZV9mcmVlKCZpc3QtPmRlY29kZWRfZnJhbWUpOwogICAg
ICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmaXN0LT5wa3QpOwogICAgICAgICAgICAgICBhdl9k
aWN0X2ZyZWUoJmlzdC0+ZGVjb2Rlcl9vcHRzKTsKICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBz
dGF0aWMgdm9pZCBmZm1wZWdfY2xlYW51cChpbnQgcmV0KQogICAgICAgICAgICAgICBhdmNvZGVj
X2ZyZWVfY29udGV4dCgmaXN0LT5kZWNfY3R4KTsKICAgICAgIAogICAgICAgICAgICAgICBhdl9m
cmVlcCgmaW5wdXRfc3RyZWFtc1tpXSk7CiAgICAgLUBAIGZmdG9vbHMvZmZtcGVnLmM6IGVycm9y
OgogICAgIC0gICAgIGV4aXRfcHJvZ3JhbSgxKTsKICAgICArQEAgZmZ0b29scy9mZm1wZWcuYzog
c3RhdGljIHZvaWQgZG9fYXVkaW9fb3V0KE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9z
dCwKICAgICArICAgICAgICAgZXhpdF9wcm9ncmFtKDEpOwogICAgICAgfQogICAgICAgCiAgICAg
IC1zdGF0aWMgdm9pZCBkb19zdWJ0aXRsZV9vdXQoT3V0cHV0RmlsZSAqb2YsCiAgICAgIC0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0U3RyZWFtICpvc3QsCiAgICAgIC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQVZTdWJ0aXRsZSAqc3ViKQogICAgICArc3RhdGljIHZvaWQg
ZW5jb2RlX3N1YnRpdGxlX2ZyYW1lKE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwg
QVZGcmFtZSAqZnJhbWUsIEFWUGFja2V0ICpwa3QsIGludDY0X3QgcHRzX29mZnNldCkKICAgICAt
IHsKICAgICAtLSAgICBpbnQgc3VidGl0bGVfb3V0X21heF9zaXplID0gMTAyNCAqIDEwMjQ7CiAg
ICAgLS0gICAgaW50IHN1YnRpdGxlX291dF9zaXplLCBuYiwgaTsKICAgICArK3sKICAgICAgKyAg
ICBBVkNvZGVjQ29udGV4dCAqZW5jID0gb3N0LT5lbmNfY3R4OwogICAgICArICAgIGludCByZXQ7
CiAgICAgICsKICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBlcnJvcjoKICAgICAgK30KICAgICAg
KwogICAgICArc3RhdGljIHZvaWQgZG9fc3VidGl0bGVfb3V0KE91dHB1dEZpbGUgKm9mLCBPdXRw
dXRTdHJlYW0gKm9zdCwgQVZGcmFtZSAqZnJhbWUpCiAgICAgLSt7CiAgICAgKyB7CiAgICAgKy0g
ICAgaW50IHN1YnRpdGxlX291dF9tYXhfc2l6ZSA9IDEwMjQgKiAxMDI0OwogICAgICstICAgIGlu
dCBzdWJ0aXRsZV9vdXRfc2l6ZSwgbmIsIGk7CiAgICAgICsgICAgaW50IG5iLCBpOwogICAgICAg
ICAgIEFWQ29kZWNDb250ZXh0ICplbmM7CiAgICAgICAgICAgQVZQYWNrZXQgKnBrdCA9IG9zdC0+
cGt0OwogICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IGVycm9yOgogICAgICArICAgICAgICByZXR1
cm47CiAgICAgICAgICAgfQogICAgICAgCiAgICAgKysgICAgLy8vL2lmIChvc3QtPmxhc3Rfc3Vi
dGl0bGVfcHRzICYmIG9zdC0+bGFzdF9zdWJ0aXRsZV9wdHMgPT0gZnJhbWUtPnN1YnRpdGxlX3Rp
bWluZy5zdGFydF9wdHMpIHsKICAgICArKyAgICAvLy8vICAgIGF2X2xvZyhOVUxMLCBBVl9MT0df
REVCVUcsICJJZ25vcmluZyBzdWJ0aXRsZSBmcmFtZSB3aXRoIGR1cGxpY2F0ZSBzdWJ0aXRsZV9w
dHNcbiIpOwogICAgICsrICAgIC8vLy8gICAgcmV0dXJuOwogICAgICsrICAgIC8vLy99CiAgICAg
KysKICAgICArKyAgICBvc3QtPmxhc3Rfc3VidGl0bGVfcHRzID0gZnJhbWUtPnN1YnRpdGxlX3Rp
bWluZy5zdGFydF9wdHM7CiAgICAgKysKICAgICAgKyAgICBpbml0X291dHB1dF9zdHJlYW1fd3Jh
cHBlcihvc3QsIGZyYW1lLCAxKTsKICAgICAgKwogICAgICArICAgIGVuYyA9IG9zdC0+ZW5jX2N0
eDsKICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgaW50IGlmaWx0ZXJfc2VuZF9mcmFt
ZShJbnB1dEZpbHRlciAqaWZpbHRlciwgQVZGcmFtZSAqZgogICAgICAgICAgIH0KICAgICAgIAog
ICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgaW50IGlmaWx0ZXJfc2VuZF9lb2YoSW5w
dXRGaWx0ZXIgKmlmaWx0ZXIsIGludDY0X3QgcHRzKQogICAgICsgICAgICAgICAgICAgcmV0dXJu
IHJldDsKICAgICArICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAvLyB0aGUgZmlsdGVyZ3Jh
cGggd2FzIG5ldmVyIGNvbmZpZ3VyZWQKICAgICAtICAgICAgICAgaWYgKGlmaWx0ZXItPmZvcm1h
dCA8IDApCiAgICAgLSAgICAgICAgICAgICBpZmlsdGVyX3BhcmFtZXRlcnNfZnJvbV9jb2RlY3Bh
cihpZmlsdGVyLCBpZmlsdGVyLT5pc3QtPnN0LT5jb2RlY3Bhcik7CiAgICAgKy0gICAgICAgIGlm
IChpZmlsdGVyLT5mb3JtYXQgPCAwKSB7CiAgICAgKy0gICAgICAgICAgICByZXQgPSBpZmlsdGVy
X3BhcmFtZXRlcnNfZnJvbV9jb2RlY3BhcihpZmlsdGVyLCBpZmlsdGVyLT5pc3QtPnN0LT5jb2Rl
Y3Bhcik7CiAgICAgKy0gICAgICAgICAgICBpZiAocmV0IDwgMCkKICAgICArLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmV0OwogICAgICstICAgICAgICB9CiAgICAgIC0gICAgICAgIGlmIChpZmls
dGVyLT5mb3JtYXQgPCAwICYmIChpZmlsdGVyLT50eXBlID09IEFWTUVESUFfVFlQRV9BVURJTyB8
fCBpZmlsdGVyLT50eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykpIHsKICAgICArKyAgICAgICAg
aWYgKGlmaWx0ZXItPmZvcm1hdCA8IDApCiAgICAgKysgICAgICAgICAgICBpZmlsdGVyX3BhcmFt
ZXRlcnNfZnJvbV9jb2RlY3BhcihpZmlsdGVyLCBpZmlsdGVyLT5pc3QtPnN0LT5jb2RlY3Bhcik7
CiAgICAgICsgICAgICAgIGlmIChpZmlsdGVyLT5mb3JtYXQgPCAwICYmIChpZmlsdGVyLT50eXBl
ID09IEFWTUVESUFfVFlQRV9BVURJTyB8fCBpZmlsdGVyLT50eXBlID09IEFWTUVESUFfVFlQRV9W
SURFTyB8fCBpZmlsdGVyLT50eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkpIHsKICAgICAg
ICAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJDYW5ub3QgZGV0ZXJtaW5l
IGZvcm1hdCBvZiBpbnB1dCBzdHJlYW0gJWQ6JWQgYWZ0ZXIgRU9GXG4iLCBpZmlsdGVyLT5pc3Qt
PmZpbGVfaW5kZXgsIGlmaWx0ZXItPmlzdC0+c3QtPmluZGV4KTsKICAgICAgICAgICAgICAgICAg
IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwogICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IGZh
aWw6CiAgICAgICB9CiAgICAgICAKICAgICAgLXN0YXRpYyBpbnQgdHJhbnNjb2RlX3N1YnRpdGxl
cyhJbnB1dFN0cmVhbSAqaXN0LCBBVlBhY2tldCAqcGt0LCBpbnQgKmdvdF9vdXRwdXQsCiAgICAg
KytzdGF0aWMgdm9pZCBzdWJ0aXRsZV9zZW5kX2tpY2tvZmYoSW5wdXRTdHJlYW0gKmlzdCwgaW50
NjRfdCBoZWFydGJlYXRfcHRzKQogICAgICsrewogICAgICsrICAgIEFWRnJhbWUgKmZyYW1lOwog
ICAgICsrICAgIGludDY0X3QgcHRzOwogICAgICsrCiAgICAgKysgICAgZnJhbWUgPSBhdl9mcmFt
ZV9hbGxvYygpOwogICAgICsrICAgIGlmICghZnJhbWUpIHsKICAgICArKyAgICAgICAgYXZfbG9n
KGlzdC0+ZGVjX2N0eCwgQVZfTE9HX0VSUk9SLCAiVW5hYmxlIHRvIGFsbG9jIGZyYW1lIChvdXQg
b2YgbWVtb3J5KS5cbiIpOwogICAgICsrICAgICAgICByZXR1cm47CiAgICAgKysgICAgfQogICAg
ICsrCiAgICAgKysgICAgZnJhbWUtPnR5cGUgPSBBVk1FRElBX1RZUEVfU1VCVElUTEU7CiAgICAg
KysgICAgYXZfZnJhbWVfZ2V0X2J1ZmZlcjIoZnJhbWUsIDApOwogICAgICsrCiAgICAgKysgICAg
ZnJhbWUtPmZvcm1hdCA9ICh1aW50MTZfdClpc3QtPmRlY19jdHgtPnN1YnRpdGxlX3R5cGU7CiAg
ICAgKysKICAgICArKyAgICBwdHMgPSBGRk1BWChoZWFydGJlYXRfcHRzLCBpc3QtPnN1YnRpdGxl
X2tpY2tvZmYubGFzdF9wdHMpICsgYXZfcmVzY2FsZV9xKDEwLCAoQVZSYXRpb25hbCl7IDEsIDEw
MDAgfSwgaXN0LT5zdC0+dGltZV9iYXNlKTsKICAgICArKwogICAgICsrICAgIGZyYW1lLT53aWR0
aCA9IGlzdC0+c3VidGl0bGVfa2lja29mZi53OwogICAgICsrICAgIGZyYW1lLT5oZWlnaHQgPSBp
c3QtPnN1YnRpdGxlX2tpY2tvZmYuaDsKICAgICArKyAgICBmcmFtZS0+c3VidGl0bGVfdGltaW5n
LnN0YXJ0X3B0cyA9IGF2X3Jlc2NhbGVfcShwdHMsIGlzdC0+c3QtPnRpbWVfYmFzZSwgQVZfVElN
RV9CQVNFX1EpOwogICAgICsrICAgIGZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVyYXRpb24gPSAg
YXZfcmVzY2FsZV9xKDEwLCAoQVZSYXRpb25hbCl7IDEsIDEwMDAgfSwgQVZfVElNRV9CQVNFX1Ep
OwogICAgICsrICAgIGZyYW1lLT5wdHMgPSBwdHM7CiAgICAgKysKICAgICArKyAgICBhdl9sb2co
TlVMTCwgQVZfTE9HX1dBUk5JTkcsICJzdWJ0aXRsZV9raWNrb2ZmOiBjYWxsIHN1YnRpdGxlX3Jl
c2VuZF9jdXJyZW50ICUiUFJJZDY0IiBmcmFtZS0+Zm9ybWF0OiAlZFxuIiwgcHRzLCBmcmFtZS0+
Zm9ybWF0KTsKICAgICArKwogICAgICsrICAgIGlzdC0+c3VidGl0bGVfa2lja29mZi5sYXN0X3B0
cyA9IHB0czsKICAgICArKwogICAgICsrICAgIHNlbmRfZnJhbWVfdG9fZmlsdGVycyhpc3QsIGZy
YW1lKTsKICAgICArKwogICAgICsrICAgIGF2X2ZyYW1lX2ZyZWUoJmZyYW1lKTsKICAgICArK30K
ICAgICArKwogICAgICsrLy8gT3Bwb3NlZCB0byB0aGUgZWFybGllciAic3VidGl0bGUgaGVhcmJl
YXQiLCB0aGlzIGlzIHByaW1hcmlseSBhaW1lZCBhdAogICAgICsrLy8gc2VuZGluZyBhbiBpbml0
aWFsIHN1YnRpdGxlIGZyYW1lIHRvIHRoZSBmaWx0ZXJzIGZvciBwcm9wYWdhdGluZyB0aGUgaW5p
dGlhbAogICAgICsrLy8gdGltaW5nIHZhbHVlcyBhbmQgdG8gYXZvaWQgdGhhdCB0b28gbXVjaCB0
aW1lIGlzIHNwZW50IG9uIGEgc2luZ2xlICJIVyIgZGVjb2RlcgogICAgICsrLy8gd2hpY2ggY291
bGQgb3ZlcmZsb3cgaXRzIGJ1ZmZlciBwb29sIG90aGVyd2lzZQogICAgICsrc3RhdGljIHZvaWQg
c3VidGl0bGVfa2lja29mZihJbnB1dFN0cmVhbSAqaXN0LCBpbnQ2NF90IHB0cykKICAgICArK3sK
ICAgICArKyAgICBpbnQgaTsKICAgICArKyAgICBpbnQ2NF90IHB0czI7CiAgICAgKysgICAgaW50
NjRfdCBkaWZmOwogICAgICsrCiAgICAgKysgICAgaWYgKGlzdC0+c3QtPmNvZGVjcGFyLT5jb2Rl
Y190eXBlICE9IEFWTUVESUFfVFlQRV9WSURFTykKICAgICArKyAgICAgICAgcmV0dXJuOwogICAg
ICsrCiAgICAgKysgICAgZm9yIChpID0gMDsgaSA8IG5iX2lucHV0X3N0cmVhbXM7IGkrKykgewog
ICAgICsrICAgICAgICBJbnB1dFN0cmVhbSAqaXN0MiA9IGlucHV0X3N0cmVhbXNbaV07CiAgICAg
KysgICAgICAgIHVuc2lnbmVkIGosIG5iX3JlcXM7CiAgICAgKysKICAgICArKyAgICAgICAgaWYg
KCFpc3QyLT5zdWJ0aXRsZV9raWNrb2ZmLmlzX2FjdGl2ZSkKICAgICArKyAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICsrICAgICAgICAvKiBJdCdzIHByaW1hcmlseSB0aGUgaW5pdGlhbCBzZW5k
IHRoYXQgbWF0dGVycyBhbmQgd2hpY2ggcHJvcGFnYXRlcwogICAgICsrICAgICAgICAgKiB0aGUg
cmlnaHQgc3RhcnQgdGltZXMgdG8gc3VidGl0bGUgZmlsdGVycyBkZXBlbmRpbmcgb24gaW5wdXQg
ZnJvbSBkZWNvZGluZyAqLwogICAgICsrICAgICAgICBkaWZmID0gYXZfcmVzY2FsZV9xKDUwMDAs
IChBVlJhdGlvbmFsKXsgMSwgMTAwMCB9LCBpc3QyLT5zdC0+dGltZV9iYXNlKTsKICAgICArKyAg
ICAgICAgcHRzMiA9IGF2X3Jlc2NhbGVfcShwdHMsIGlzdC0+c3QtPnRpbWVfYmFzZSwgaXN0Mi0+
c3QtPnRpbWVfYmFzZSk7CiAgICAgKysKICAgICArKyAgICAgICAgLyogZG8gbm90IHNlbmQgYSBr
aWNrb2ZmIGZyYW1lIGlmIHRoZSBzdWJ0aXRsZSBpcyBhbHJlYWR5IGFoZWFkICovCiAgICAgKysg
ICAgICAgIGlmIChwdHMyIC0gZGlmZiA8PSBpc3QyLT5zdWJ0aXRsZV9raWNrb2ZmLmxhc3RfcHRz
KQogICAgICsrICAgICAgICAgICAgY29udGludWU7CiAgICAgKysKICAgICArKyAgICAgICAgZm9y
IChqID0gMCwgbmJfcmVxcyA9IDA7IGogPCBpc3QyLT5uYl9maWx0ZXJzOyBqKyspIHsKICAgICAr
KyAgICAgICAgICAgIGlmIChpc3QyLT5maWx0ZXJzW2pdLT5maWx0ZXIgPT0gTlVMTCkgewogICAg
ICsrICAgICAgICAgICAgICAgIHN1YnRpdGxlX3NlbmRfa2lja29mZihpc3QyLCBwdHMyKTsKICAg
ICArKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgKysgICAgICAgICAgICB9CiAgICAgKysg
ICAgICAgICAgICBuYl9yZXFzICs9IGF2X2J1ZmZlcnNyY19nZXRfbmJfZmFpbGVkX3JlcXVlc3Rz
KGlzdDItPmZpbHRlcnNbal0tPmZpbHRlcik7CiAgICAgKysgICAgICAgIH0KICAgICArKyAgICAg
ICAgaWYgKG5iX3JlcXMpIHsKICAgICArKyAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0df
V0FSTklORywgInN1YnRpdGxlX2tpY2tvZmY6IHJlc2VuZCAtIHB0czogJSJQUklpNjQiXG4iLCBw
dHMyKTsKICAgICArKyAgICAgICAgICAgIHN1YnRpdGxlX3NlbmRfa2lja29mZihpc3QyLCBwdHMy
KTsKICAgICArKyAgICAgICAgfQogICAgICsrICAgIH0KICAgICArK30KICAgICArKwogICAgICAr
c3RhdGljIElucHV0U3RyZWFtICpnZXRfaW5wdXRfc3RyZWFtKE91dHB1dFN0cmVhbSAqb3N0KQog
ICAgICArewogICAgICArICAgIGlmIChvc3QtPnNvdXJjZV9pbmRleCA+PSAwKQogICAgIEBAIGZm
dG9vbHMvZmZtcGVnLmM6IGZhaWw6CiAgICAgICsgICAgQVZGcmFtZSAqZGVjb2RlZF9mcmFtZTsK
ICAgICAgKyAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHggPSBpc3QtPmRlY19jdHg7CiAgICAgICsg
ICAgaW50IGkgPSAwLCByZXQgPSAwLCBlcnIgPSAwOwogICAgICsrICAgIGludDY0X3QgcHRzOwog
ICAgICArCiAgICAgLSsgICAgaWYgKCFpc3QtPmRlY29kZWRfZnJhbWUgJiYgIShpc3QtPmRlY29k
ZWRfZnJhbWUgPSBhdl9mcmFtZV9hbGxvYygpKSkKICAgICArKyAgICBpZiAoIWlzdC0+ZGVjb2Rl
ZF9mcmFtZSAmJiAhKChpc3QtPmRlY29kZWRfZnJhbWUgPSBhdl9mcmFtZV9hbGxvYygpKSkpCiAg
ICAgICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgICsgICAgZGVjb2RlZF9m
cmFtZSA9IGlzdC0+ZGVjb2RlZF9mcmFtZTsKICAgICAgKyAgICBkZWNvZGVkX2ZyYW1lLT50eXBl
ID0gQVZNRURJQV9UWVBFX1NVQlRJVExFOwogICAgIC0rICAgIGRlY29kZWRfZnJhbWUtPmZvcm1h
dCA9IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KGF2Y3R4LT5jb2RlY19k
ZXNjcmlwdG9yKTsKICAgICAtIAogICAgIC0tICAgIGNoZWNrX2RlY29kZV9yZXN1bHQoTlVMTCwg
Z290X291dHB1dCwgcmV0KTsKICAgICArKyAgICBkZWNvZGVkX2ZyYW1lLT5mb3JtYXQgPSAodWlu
dDE2X3QpYXZjdHgtPnN1YnRpdGxlX3R5cGU7CiAgICAgKysKICAgICAgKyAgICBpZiAoIWlzdC0+
c3VidGl0bGVfaGVhZGVyICYmIGF2Y3R4LT5zdWJ0aXRsZV9oZWFkZXIgJiYgYXZjdHgtPnN1YnRp
dGxlX2hlYWRlcl9zaXplID4gMCkgewogICAgICArICAgICAgICBpc3QtPnN1YnRpdGxlX2hlYWRl
ciA9IGF2X2J1ZmZlcl9hbGxvY3ooYXZjdHgtPnN1YnRpdGxlX2hlYWRlcl9zaXplICsgMSk7CiAg
ICAgICsgICAgICAgIGlmICghaXN0LT5zdWJ0aXRsZV9oZWFkZXIpCiAgICAgQEAgZmZ0b29scy9m
Zm1wZWcuYzogZmFpbDoKICAgICAgKyAgICB9CiAgICAgICsKICAgICAgKyAgICByZXQgPSBkZWNv
ZGUoYXZjdHgsIGRlY29kZWRfZnJhbWUsIGdvdF9vdXRwdXQsIHBrdCk7CiAgICAgLSsKICAgICAr
IAogICAgICstICAgIGNoZWNrX2RlY29kZV9yZXN1bHQoTlVMTCwgZ290X291dHB1dCwgcmV0KTsK
ICAgICAgKyAgICBpZiAocmV0ICE9IEFWRVJST1JfRU9GKQogICAgICArICAgICAgICBjaGVja19k
ZWNvZGVfcmVzdWx0KE5VTEwsIGdvdF9vdXRwdXQsIHJldCk7CiAgICAgICAKICAgICBAQCBmZnRv
b2xzL2ZmbXBlZy5jOiBmYWlsOgogICAgICArICAgICAgICBpZiAoIXBrdC0+c2l6ZSkgewogICAg
ICArICAgICAgICAgICAgLy8gRmx1c2gKICAgICAgKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg
PCBpc3QtPm5iX2ZpbHRlcnM7IGkrKykgewogICAgIC0rICAgICAgICAgICAgICAgIHJldCA9IGF2
X2J1ZmZlcnNyY19hZGRfZnJhbWUoaXN0LT5maWx0ZXJzW2ldLT5maWx0ZXIsIE5VTEwpOwogICAg
IC0rICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gQVZFUlJPUl9FT0YgJiYgcmV0IDwgMCkKICAg
ICAtKyAgICAgICAgICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19XQVJOSU5HLCAiRmx1
c2ggdGhlIGZyYW1lIGVycm9yLlxuIik7CiAgICAgKysgICAgICAgICAgICAgICAgaWYgKGlzdC0+
ZmlsdGVyc1tpXS0+ZmlsdGVyICE9IE5VTEwpIHsKICAgICArKyAgICAgICAgICAgICAgICAgICAg
cmV0ID0gYXZfYnVmZmVyc3JjX2FkZF9mcmFtZShpc3QtPmZpbHRlcnNbaV0tPmZpbHRlciwgTlVM
TCk7CiAgICAgKysgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gQVZFUlJPUl9FT0YgJiYg
cmV0IDwgMCkKICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9M
T0dfV0FSTklORywgIkZsdXNoIHRoZSBmcmFtZSBlcnJvci5cbiIpOwogICAgICsrICAgICAgICAg
ICAgICAgIH0KICAgICAgKyAgICAgICAgICAgIH0KICAgICAgKyAgICAgICAgfQogICAgICAgICAg
ICAgICByZXR1cm4gcmV0OwogICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IGZhaWw6CiAgICAgIC0g
ICAgICAgIEZGU1dBUChpbnQsICAgICAgICAqZ290X291dHB1dCwgaXN0LT5wcmV2X3N1Yi5nb3Rf
b3V0cHV0KTsKICAgICAgLSAgICAgICAgRkZTV0FQKGludCwgICAgICAgIHJldCwgICAgICAgICBp
c3QtPnByZXZfc3ViLnJldCk7CiAgICAgIC0gICAgICAgIEZGU1dBUChBVlN1YnRpdGxlLCBzdWJ0
aXRsZSwgICAgaXN0LT5wcmV2X3N1Yi5zdWJ0aXRsZSk7CiAgICAgLSsgICAgICAgIEZGU1dBUChp
bnQsICAgICAgICAqZ290X291dHB1dCwgICBpc3QtPnByZXZfc3ViLmdvdF9vdXRwdXQpOwogICAg
IC0rICAgICAgICBGRlNXQVAoaW50LCAgICAgICAgcmV0LCAgICAgICAgICAgaXN0LT5wcmV2X3N1
Yi5yZXQpOwogICAgIC0rICAgICAgICBGRlNXQVAoQVZGcmFtZSosICAgZGVjb2RlZF9mcmFtZSwg
aXN0LT5wcmV2X3N1Yi5zdWJ0aXRsZSk7CiAgICAgKysgICAgICAgIEZGU1dBUChpbnQsICAgICAg
ICAqZ290X291dHB1dCwgICAgICAgIGlzdC0+cHJldl9zdWIuZ290X291dHB1dCk7CiAgICAgKysg
ICAgICAgIEZGU1dBUChpbnQsICAgICAgICByZXQsICAgICAgICAgICAgICAgIGlzdC0+cHJldl9z
dWIucmV0KTsKICAgICArKyAgICAgICAgRkZTV0FQKEFWRnJhbWUqLCAgIGlzdC0+ZGVjb2RlZF9m
cmFtZSwgaXN0LT5wcmV2X3N1Yi5zdWJ0aXRsZSk7CiAgICAgKysgICAgICAgIGRlY29kZWRfZnJh
bWUgPSBpc3QtPmRlY29kZWRfZnJhbWU7CiAgICAgICAgICAgICAgIGlmIChlbmQgPD0gMCkKICAg
ICAgLSAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICArICAgICAgICAgICAgcmV0dXJuIChpbnQp
ZW5kOwogICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IGZhaWw6CiAgICAgIC0gICAgICAgIHN1YjJ2
aWRlb191cGRhdGUoaXN0LCBJTlQ2NF9NSU4sICZzdWJ0aXRsZSk7CiAgICAgIC0gICAgfSBlbHNl
IGlmIChpc3QtPm5iX2ZpbHRlcnMpIHsKICAgICAgLSAgICAgICAgaWYgKCFpc3QtPnN1YjJ2aWRl
by5zdWJfcXVldWUpCiAgICAgLS0gICAgICAgICAgICBpc3QtPnN1YjJ2aWRlby5zdWJfcXVldWUg
PSBhdl9maWZvX2FsbG9jKDggKiBzaXplb2YoQVZTdWJ0aXRsZSkpOwogICAgICstICAgICAgICAg
ICAgaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlID0gYXZfZmlmb19hbGxvYzIoOCwgc2l6ZW9mKEFW
U3VidGl0bGUpLCBBVl9GSUZPX0ZMQUdfQVVUT19HUk9XKTsKICAgICAgLSAgICAgICAgaWYgKCFp
c3QtPnN1YjJ2aWRlby5zdWJfcXVldWUpCiAgICAgIC0gICAgICAgICAgICBleGl0X3Byb2dyYW0o
MSk7CiAgICAgLS0gICAgICAgIGlmICghYXZfZmlmb19zcGFjZShpc3QtPnN1YjJ2aWRlby5zdWJf
cXVldWUpKSB7CiAgICAgLS0gICAgICAgICAgICByZXQgPSBhdl9maWZvX3JlYWxsb2MyKGlzdC0+
c3ViMnZpZGVvLnN1Yl9xdWV1ZSwgMiAqIGF2X2ZpZm9fc2l6ZShpc3QtPnN1YjJ2aWRlby5zdWJf
cXVldWUpKTsKICAgICAtLSAgICAgICAgICAgIGlmIChyZXQgPCAwKQogICAgIC0tICAgICAgICAg
ICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKICAgICAgKyAgICBkZWNvZGVkX2ZyYW1lLT50eXBlID0g
QVZNRURJQV9UWVBFX1NVQlRJVExFOwogICAgIC0rICAgIGRlY29kZWRfZnJhbWUtPmZvcm1hdCA9
IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KGF2Y3R4LT5jb2RlY19kZXNj
cmlwdG9yKTsKICAgICArIAogICAgICstICAgICAgICByZXQgPSBhdl9maWZvX3dyaXRlKGlzdC0+
c3ViMnZpZGVvLnN1Yl9xdWV1ZSwgJnN1YnRpdGxlLCAxKTsKICAgICArLSAgICAgICAgaWYgKHJl
dCA8IDApCiAgICAgKy0gICAgICAgICAgICBleGl0X3Byb2dyYW0oMSk7CiAgICAgKy0gICAgICAg
IGZyZWVfc3ViID0gMDsKICAgICArLSAgICB9CiAgICAgKysgICAgaWYgKGRlY29kZWRfZnJhbWUt
PmZvcm1hdCA9PSBBVl9TVUJUSVRMRV9GTVRfVU5LTk9XTikKICAgICArKyAgICAgICAgZGVjb2Rl
ZF9mcmFtZS0+Zm9ybWF0ID0gKHVpbnQxNl90KWF2Y3R4LT5zdWJ0aXRsZV90eXBlOwogICAgICAr
CiAgICAgICsgICAgaWYgKChyZXQgPSBhdl9idWZmZXJfcmVwbGFjZSgmZGVjb2RlZF9mcmFtZS0+
c3VidGl0bGVfaGVhZGVyLCBpc3QtPnN1YnRpdGxlX2hlYWRlcikpIDwgMCkKICAgICAgKyAgICAg
ICAgcmV0dXJuIHJldDsKICAgICAtKwogICAgICsgCiAgICAgKy0gICAgaWYgKCFzdWJ0aXRsZS5u
dW1fcmVjdHMpCiAgICAgKy0gICAgICAgIGdvdG8gb3V0OwogICAgICArICAgIGRlY29kZWRfZnJh
bWUtPnB0cyA9IGF2X3Jlc2NhbGVfcShkZWNvZGVkX2ZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuc3Rh
cnRfcHRzLCBBVl9USU1FX0JBU0VfUSwgaXN0LT5zdC0+dGltZV9iYXNlKTsKICAgICAtKwogICAg
ICsgCiAgICAgKy0gICAgaXN0LT5mcmFtZXNfZGVjb2RlZCsrOwogICAgICsrICAgIHB0cyAgICAg
PSBhdl9yZXNjYWxlX3EoZGVjb2RlZF9mcmFtZS0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cywK
ICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX1RJTUVfQkFTRV9RLCBpc3QtPnN0
LT50aW1lX2Jhc2UpOwogICAgICsgCiAgICAgKy0gICAgZm9yIChpID0gMDsgaSA8IG5iX291dHB1
dF9zdHJlYW1zOyBpKyspIHsKICAgICArLSAgICAgICAgT3V0cHV0U3RyZWFtICpvc3QgPSBvdXRw
dXRfc3RyZWFtc1tpXTsKICAgICArKyAgICBpc3QtPnN1YnRpdGxlX2tpY2tvZmYubGFzdF9wdHMg
PSBkZWNvZGVkX2ZyYW1lLT5wdHMgPSBwdHM7CiAgICAgKyAKICAgICArLSAgICAgICAgaWYgKCFj
aGVja19vdXRwdXRfY29uc3RyYWludHMoaXN0LCBvc3QpIHx8ICFvc3QtPmVuY29kaW5nX25lZWRl
ZAogICAgICstICAgICAgICAgICAgfHwgb3N0LT5lbmMtPnR5cGUgIT0gQVZNRURJQV9UWVBFX1NV
QlRJVExFKQogICAgICstICAgICAgICAgICAgY29udGludWU7CiAgICAgICsgICAgaWYgKGlzdC0+
bmJfZmlsdGVycyA+IDApIHsKICAgICAgKyAgICAgICAgQVZGcmFtZSAqZmlsdGVyX2ZyYW1lID0g
YXZfZnJhbWVfY2xvbmUoZGVjb2RlZF9mcmFtZSk7CiAgICAgICsgICAgICAgIGlmICghZmlsdGVy
X2ZyYW1lKSB7CiAgICAgICsgICAgICAgICAgICBlcnIgPSBBVkVSUk9SKEVOT01FTSk7CiAgICAg
ICsgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAtICAgICAgICAgfQogICAgIC0tICAgICAgICBh
dl9maWZvX2dlbmVyaWNfd3JpdGUoaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlLCAmc3VidGl0bGUs
IHNpemVvZihzdWJ0aXRsZSksIE5VTEwpOwogICAgIC0tICAgICAgICBmcmVlX3N1YiA9IDA7CiAg
ICAgLS0gICAgfQogICAgICsrICAgICAgICB9CiAgICAgICAKICAgICAtLSAgICBpZiAoIXN1YnRp
dGxlLm51bV9yZWN0cykKICAgICAtLSAgICAgICAgZ290byBvdXQ7CiAgICAgKy0gICAgICAgIGRv
X3N1YnRpdGxlX291dChvdXRwdXRfZmlsZXNbb3N0LT5maWxlX2luZGV4XSwgb3N0LCAmc3VidGl0
bGUpOwogICAgICArICAgICAgICBlcnIgPSBzZW5kX2ZyYW1lX3RvX2ZpbHRlcnMoaXN0LCBmaWx0
ZXJfZnJhbWUpOwogICAgICArICAgICAgICBhdl9mcmFtZV9mcmVlKCZmaWx0ZXJfZnJhbWUpOwog
ICAgIC0rICAgIH0KICAgICArICAgICB9CiAgICAgICAKICAgICAtLSAgICBpc3QtPmZyYW1lc19k
ZWNvZGVkKys7CiAgICAgKy1vdXQ6CiAgICAgKy0gICAgaWYgKGZyZWVfc3ViKQogICAgICstICAg
ICAgICBhdnN1YnRpdGxlX2ZyZWUoJnN1YnRpdGxlKTsKICAgICArLSAgICByZXR1cm4gcmV0Owog
ICAgICArICAgIGlmIChlcnIgPj0gMCkgewogICAgICArICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
bmJfb3V0cHV0X3N0cmVhbXM7IGkrKykgewogICAgICArICAgICAgICAgICAgT3V0cHV0U3RyZWFt
ICpvc3QgPSBvdXRwdXRfc3RyZWFtc1tpXTsKICAgICAgKyAgICAgICAgICAgIElucHV0U3RyZWFt
ICppc3Rfc3JjID0gZ2V0X2lucHV0X3N0cmVhbShvc3QpOwogICAgIC0gCiAgICAgLS0gICAgZm9y
IChpID0gMDsgaSA8IG5iX291dHB1dF9zdHJlYW1zOyBpKyspIHsKICAgICAtLSAgICAgICAgT3V0
cHV0U3RyZWFtICpvc3QgPSBvdXRwdXRfc3RyZWFtc1tpXTsKICAgICArKwogICAgICArICAgICAg
ICAgICAgaWYgKCFpc3Rfc3JjIHx8ICFjaGVja19vdXRwdXRfY29uc3RyYWludHMoaXN0LCBvc3Qp
CiAgICAgICsgICAgICAgICAgICAgICAgfHwgaXN0X3NyYyAhPSBpc3QKICAgICAgKyAgICAgICAg
ICAgICAgICB8fCAhb3N0LT5lbmNvZGluZ19uZWVkZWQKICAgICAgKyAgICAgICAgICAgICAgICB8
fCBvc3QtPmVuYy0+dHlwZSAhPSBBVk1FRElBX1RZUEVfU1VCVElUTEUpCiAgICAgICsgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgLSAKICAgICAtLSAgICAgICAgaWYgKCFjaGVja19vdXRw
dXRfY29uc3RyYWludHMoaXN0LCBvc3QpIHx8ICFvc3QtPmVuY29kaW5nX25lZWRlZAogICAgIC0t
ICAgICAgICAgICAgfHwgb3N0LT5lbmMtPnR5cGUgIT0gQVZNRURJQV9UWVBFX1NVQlRJVExFKQog
ICAgIC0tICAgICAgICAgICAgY29udGludWU7CiAgICAgKysKICAgICAgKyAgICAgICAgICAgIGlm
IChvc3QtPmZpbHRlciAmJiBvc3QtPmZpbHRlci0+ZmlsdGVyLT5uYl9pbnB1dHMgPiAwKQogICAg
ICArICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgIC0gCiAgICAgLS0gICAgICAgIGRvX3N1
YnRpdGxlX291dChvdXRwdXRfZmlsZXNbb3N0LT5maWxlX2luZGV4XSwgb3N0LCAmc3VidGl0bGUp
OwogICAgICsrCiAgICAgICsgICAgICAgICAgICBkb19zdWJ0aXRsZV9vdXQob3V0cHV0X2ZpbGVz
W29zdC0+ZmlsZV9pbmRleF0sIG9zdCwgZGVjb2RlZF9mcmFtZSk7CiAgICAgICsgICAgICAgIH0K
ICAgICAtICAgICB9CiAgICAgLSAKICAgICAtLW91dDoKICAgICAtLSAgICBpZiAoZnJlZV9zdWIp
CiAgICAgLS0gICAgICAgIGF2c3VidGl0bGVfZnJlZSgmc3VidGl0bGUpOwogICAgIC0tICAgIHJl
dHVybiByZXQ7CiAgICAgKysgICAgfQogICAgICsrCiAgICAgICtlbmQ6CiAgICAgICsgICAgYXZf
ZnJhbWVfdW5yZWYoZGVjb2RlZF9mcmFtZSk7CiAgICAgICsgICAgcmV0dXJuIGVyciA8IDAgPyBl
cnIgOiByZXQ7CiAgICAgQEAgZmZ0b29scy9mZm1wZWcuYzogc3RhdGljIGludCBwcm9jZXNzX2lu
cHV0X3BhY2tldChJbnB1dFN0cmVhbSAqaXN0LCBjb25zdCBBVlBhY2sKICAgICAgICAgICAgICAg
ICAgIGlmICghcGt0ICYmIHJldCA+PSAwKQogICAgICAgICAgICAgICAgICAgICAgIHJldCA9IEFW
RVJST1JfRU9GOwogICAgICAgICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKGF2cGt0KTsKICAg
ICAtQEAgZmZ0b29scy9mZm1wZWcuYzogRkZfRU5BQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCiAg
ICAgK0BAIGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyBpbnQgaW5pdF9pbnB1dF9zdHJlYW0oaW50
IGlzdF9pbmRleCwgY2hhciAqZXJyb3IsIGludCBlcnJvcl9sZW4pCiAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICB9CiAgICAgICAKICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgaW50
IGluaXRfb3V0cHV0X3N0cmVhbV9lbmNvZGUoT3V0cHV0U3RyZWFtICpvc3QsIEFWRnJhbQogICAg
ICAgICAgICAgICAgICAgZW5jX2N0eC0+d2lkdGggICAgID0gaW5wdXRfc3RyZWFtc1tvc3QtPnNv
dXJjZV9pbmRleF0tPnN0LT5jb2RlY3Bhci0+d2lkdGg7CiAgICAgICAgICAgICAgICAgICBlbmNf
Y3R4LT5oZWlnaHQgICAgPSBpbnB1dF9zdHJlYW1zW29zdC0+c291cmNlX2luZGV4XS0+c3QtPmNv
ZGVjcGFyLT5oZWlnaHQ7CiAgICAgICAgICAgICAgIH0KICAgICArQEAgZmZ0b29scy9mZm1wZWcu
Yzogc3RhdGljIGludCBpbml0X291dHB1dF9zdHJlYW1fZW5jb2RlKE91dHB1dFN0cmVhbSAqb3N0
LCBBVkZyYW1lICpmcmFtZSkKICAgICArICAgICByZXR1cm4gMDsKICAgICArIH0KICAgICArIAog
ICAgICsrc3RhdGljIGVudW0gQVZTdWJ0aXRsZVR5cGUgZ2V0X3N1YnRpdGxlX2Zvcm1hdChjb25z
dCBBVkNvZGVjRGVzY3JpcHRvciAqY29kZWNfZGVzY3JpcHRvcikKICAgICArK3sKICAgICArKyAg
ICBpZihjb2RlY19kZXNjcmlwdG9yLT5wcm9wcyAmIEFWX0NPREVDX1BST1BfQklUTUFQX1NVQikK
ICAgICArKyAgICAgICAgcmV0dXJuIEFWX1NVQlRJVExFX0ZNVF9CSVRNQVA7CiAgICAgKysKICAg
ICArKyAgICBpZihjb2RlY19kZXNjcmlwdG9yLT5wcm9wcyAmIEFWX0NPREVDX1BST1BfVEVYVF9T
VUIpCiAgICAgKysgICAgICAgIHJldHVybiBBVl9TVUJUSVRMRV9GTVRfQVNTOwogICAgICsrCiAg
ICAgKysgICAgcmV0dXJuIEFWX1NVQlRJVExFX0ZNVF9VTktOT1dOOwogICAgICsrfQogICAgICsr
CiAgICAgKyBzdGF0aWMgaW50IGluaXRfb3V0cHV0X3N0cmVhbShPdXRwdXRTdHJlYW0gKm9zdCwg
QVZGcmFtZSAqZnJhbWUsCiAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICplcnJvciwgaW50IGVycm9yX2xlbikKICAgICArIHsKICAgICAgQEAgZmZ0b29scy9mZm1wZWcu
Yzogc3RhdGljIGludCBpbml0X291dHB1dF9zdHJlYW0oT3V0cHV0U3RyZWFtICpvc3QsIEFWRnJh
bWUgKmZyYW1lLAogICAgICAgICAgICAgICB9CiAgICAgICAKICAgICBAQCBmZnRvb2xzL2ZmbXBl
Zy5jOiBzdGF0aWMgaW50IGluaXRfb3V0cHV0X3N0cmVhbShPdXRwdXRTdHJlYW0gKm9zdCwgQVZG
cmFtZSAqZnJhbQogICAgICAtICAgICAgICAgICAgICAgIHNucHJpbnRmKGVycm9yLCBlcnJvcl9s
ZW4sCiAgICAgIC0gICAgICAgICAgICAgICAgICAgICAgICAgIlN1YnRpdGxlIGVuY29kaW5nIGN1
cnJlbnRseSBvbmx5IHBvc3NpYmxlIGZyb20gdGV4dCB0byB0ZXh0ICIKICAgICAgLSAgICAgICAg
ICAgICAgICAgICAgICAgICAib3IgYml0bWFwIHRvIGJpdG1hcCIpOwogICAgIC0rICAgICAgICAg
ICAgQVZDb2RlY0Rlc2NyaXB0b3IgY29uc3QgKmlucHV0X2Rlc2NyaXB0b3IgICAgID0gYXZjb2Rl
Y19kZXNjcmlwdG9yX2dldChkZWMtPmNvZGVjX2lkKTsKICAgICAgKyAgICAgICAgICAgIEFWQ29k
ZWNEZXNjcmlwdG9yIGNvbnN0ICpvdXRwdXRfZGVzY3JpcHRvciAgICA9IGF2Y29kZWNfZGVzY3Jp
cHRvcl9nZXQob3N0LT5lbmNfY3R4LT5jb2RlY19pZCk7CiAgICAgLSsgICAgICAgICAgICBjb25z
dCBlbnVtIEFWU3VidGl0bGVUeXBlIGluX3N1YnRpdGxlX2Zvcm1hdCAgPSBvdXRwdXRfZGVzY3Jp
cHRvciA/IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KGlucHV0X2Rlc2Ny
aXB0b3IpIDogQVZfU1VCVElUTEVfRk1UX1VOS05PV047CiAgICAgLSsgICAgICAgICAgICBjb25z
dCBlbnVtIEFWU3VidGl0bGVUeXBlIG91dF9zdWJ0aXRsZV9mb3JtYXQgPSBvdXRwdXRfZGVzY3Jp
cHRvciA/IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KG91dHB1dF9kZXNj
cmlwdG9yKSA6IEFWX1NVQlRJVExFX0ZNVF9VTktOT1dOOwogICAgICsrICAgICAgICAgICAgY29u
c3QgZW51bSBBVlN1YnRpdGxlVHlwZSBpbl9zdWJ0aXRsZV9mb3JtYXQgID0gKHVpbnQxNl90KWRl
Yy0+c3VidGl0bGVfdHlwZTsKICAgICArKyAgICAgICAgICAgIGNvbnN0IGVudW0gQVZTdWJ0aXRs
ZVR5cGUgb3V0X3N1YnRpdGxlX2Zvcm1hdCA9IG91dHB1dF9kZXNjcmlwdG9yID8gZ2V0X3N1YnRp
dGxlX2Zvcm1hdChvdXRwdXRfZGVzY3JpcHRvcikgOiBBVl9TVUJUSVRMRV9GTVRfVU5LTk9XTjsK
ICAgICAgKwogICAgICArICAgICAgICAgICAgaWYgKGlzdC0+bmJfZmlsdGVycyA9PSAwICYmIGlu
X3N1YnRpdGxlX2Zvcm1hdCAhPSBBVl9TVUJUSVRMRV9GTVRfVU5LTk9XTiAmJiBvdXRfc3VidGl0
bGVfZm9ybWF0ICE9IEFWX1NVQlRJVExFX0ZNVF9VTktOT1dOCiAgICAgICsgICAgICAgICAgICAg
ICAgJiYgaW5fc3VidGl0bGVfZm9ybWF0ICE9IG91dF9zdWJ0aXRsZV9mb3JtYXQpIHsKICAgICBA
QCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgaW50IGluaXRfb3V0cHV0X3N0cmVhbShPdXRwdXRT
dHJlYW0gKm9zdCwgQVZGcmFtZSAqZnJhbQogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBB
VkVSUk9SX0lOVkFMSUREQVRBOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9
CiAgICAgLUBAIGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyBpbnQgdHJhbnNjb2RlX2luaXQodm9p
ZCkKICAgICAtICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfb3V0cHV0X3N0cmVhbXM7IGkrKykgewog
ICAgIC0gICAgICAgICBpZiAoIW91dHB1dF9zdHJlYW1zW2ldLT5zdHJlYW1fY29weSAmJgogICAg
IC0gICAgICAgICAgICAgKG91dHB1dF9zdHJlYW1zW2ldLT5lbmNfY3R4LT5jb2RlY190eXBlID09
IEFWTUVESUFfVFlQRV9WSURFTyB8fAogICAgIC0tICAgICAgICAgICAgIG91dHB1dF9zdHJlYW1z
W2ldLT5lbmNfY3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykpCiAgICAgLSsg
ICAgICAgICAgICAgb3V0cHV0X3N0cmVhbXNbaV0tPmVuY19jdHgtPmNvZGVjX3R5cGUgPT0gQVZN
RURJQV9UWVBFX0FVRElPIHx8CiAgICAgLSsgICAgICAgICAgICAgb3V0cHV0X3N0cmVhbXNbaV0t
PmVuY19jdHgtPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1NVQlRJVExFKSkKICAgICAtICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICtAQCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgT3V0
cHV0U3RyZWFtICpjaG9vc2Vfb3V0cHV0KHZvaWQpCiAgICAgKyAgICAgICAgICAgICAgICAgICAg
ICAgIGF2X3Jlc2NhbGVfcShvc3QtPmxhc3RfbXV4X2R0cywgb3N0LT5zdC0+dGltZV9iYXNlLAog
ICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfVElNRV9CQVNFX1Ep
OwogICAgICsgICAgICAgICBpZiAob3N0LT5sYXN0X211eF9kdHMgPT0gQVZfTk9QVFNfVkFMVUUp
CiAgICAgKy0gICAgICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX0RFQlVHLAogICAgICsrICAg
ICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19JTkZPLAogICAgICsgICAgICAgICAgICAgICAg
ICJjdXJfZHRzIGlzIGludmFsaWQgc3Q6JWQgKCVkKSBbaW5pdDolZCBpX2RvbmU6JWQgZmluaXNo
OiVkXSAodGhpcyBpcyBoYXJtbGVzcyBpZiBpdCBvY2N1cnMgb25jZSBhdCB0aGUgc3RhcnQgcGVy
IHN0cmVhbSlcbiIsCiAgICAgKyAgICAgICAgICAgICAgICAgb3N0LT5zdC0+aW5kZXgsIG9zdC0+
c3QtPmlkLCBvc3QtPmluaXRpYWxpemVkLCBvc3QtPmlucHV0c19kb25lLCBvc3QtPmZpbmlzaGVk
KTsKICAgICAgIAogICAgIC0gICAgICAgICByZXQgPSBpbml0X291dHB1dF9zdHJlYW1fd3JhcHBl
cihvdXRwdXRfc3RyZWFtc1tpXSwgTlVMTCwgMCk7CiAgICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6
IHN0YXRpYyBpbnQgcHJvY2Vzc19pbnB1dChpbnQgZmlsZV9pbmRleCkKICAgICAgICAgICAgICAg
ICAgICAgIGF2X3RzMnRpbWVzdHIoaW5wdXRfZmlsZXNbaXN0LT5maWxlX2luZGV4XS0+dHNfb2Zm
c2V0LCAmQVZfVElNRV9CQVNFX1EpKTsKICAgICAgICAgICB9CiAgICAgICAKICAgICAgLSAgICBz
dWIydmlkZW9faGVhcnRiZWF0KGlzdCwgcGt0LT5wdHMpOwogICAgIC0tCiAgICAgKysgICAgc3Vi
dGl0bGVfa2lja29mZihpc3QsIHBrdC0+cHRzKTsKICAgICArIAogICAgICAgICAgIHByb2Nlc3Nf
aW5wdXRfcGFja2V0KGlzdCwgcGt0LCAwKTsKICAgICAgIAogICAgIC0gZGlzY2FyZF9wYWNrZXQ6
CiAgICAgK0BAIGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyBpbnQgdHJhbnNjb2RlKHZvaWQpCiAg
ICAgKyAgICAgLyogYXQgdGhlIGVuZCBvZiBzdHJlYW0sIHdlIG11c3QgZmx1c2ggdGhlIGRlY29k
ZXIgYnVmZmVycyAqLwogICAgICsgICAgIGZvciAoaSA9IDA7IGkgPCBuYl9pbnB1dF9zdHJlYW1z
OyBpKyspIHsKICAgICArICAgICAgICAgaXN0ID0gaW5wdXRfc3RyZWFtc1tpXTsKICAgICArKyAg
ICAgICAgaXN0LT5zdWJ0aXRsZV9raWNrb2ZmLmlzX2FjdGl2ZSA9IDA7CiAgICAgKyAgICAgICAg
IGlmICghaW5wdXRfZmlsZXNbaXN0LT5maWxlX2luZGV4XS0+ZW9mX3JlYWNoZWQpIHsKICAgICAr
ICAgICAgICAgICAgIHByb2Nlc3NfaW5wdXRfcGFja2V0KGlzdCwgTlVMTCwgMCk7CiAgICAgKyAg
ICAgICAgIH0KICAgICAgCiAgICAgICAjIyBmZnRvb2xzL2ZmbXBlZy5oICMjCiAgICAgIEBAIGZm
dG9vbHMvZmZtcGVnLmg6IHR5cGVkZWYgc3RydWN0IElucHV0U3RyZWFtIHsKICAgICBAQCBmZnRv
b2xzL2ZmbXBlZy5oOiB0eXBlZGVmIHN0cnVjdCBJbnB1dFN0cmVhbSB7CiAgICAgICAgICAgfSBw
cmV2X3N1YjsKICAgICAgIAogICAgICAtICAgIHN0cnVjdCBzdWIydmlkZW8gewogICAgIC0tICAg
ICAgICBpbnQ2NF90IGxhc3RfcHRzOwogICAgICsrICAgIHN0cnVjdCBzdWJ0aXRsZV9raWNrb2Zm
IHsKICAgICArKyAgICAgICAgaW50IGlzX2FjdGl2ZTsKICAgICArICAgICAgICAgaW50NjRfdCBs
YXN0X3B0czsKICAgICAgLSAgICAgICAgaW50NjRfdCBlbmRfcHRzOwogICAgIC0tICAgICAgICBB
VkZpZm9CdWZmZXIgKnN1Yl9xdWV1ZTsgICAgLy8vPCBxdWV1ZSBvZiBBVlN1YnRpdGxlKiBiZWZv
cmUgZmlsdGVyIGluaXQKICAgICArLSAgICAgICAgQVZGaWZvICpzdWJfcXVldWU7ICAgIC8vLzwg
cXVldWUgb2YgQVZTdWJ0aXRsZSogYmVmb3JlIGZpbHRlciBpbml0CiAgICAgIC0gICAgICAgIEFW
RnJhbWUgKmZyYW1lOwogICAgIC0tICAgICAgICBpbnQgdywgaDsKICAgICArICAgICAgICAgaW50
IHcsIGg7CiAgICAgIC0gICAgICAgIHVuc2lnbmVkIGludCBpbml0aWFsaXplOyAvLy88IG1hcmtz
IGlmIHN1YjJ2aWRlb191cGRhdGUgc2hvdWxkIGZvcmNlIGFuIGluaXRpYWxpemF0aW9uCiAgICAg
IC0gICAgfSBzdWIydmlkZW87CiAgICAgKysgICAgfSBzdWJ0aXRsZV9raWNrb2ZmOwogICAgICsr
CiAgICAgICsgICAgQVZCdWZmZXJSZWYgKnN1YnRpdGxlX2hlYWRlcjsKICAgICAgIAogICAgICAg
ICAgIC8qIGRlY29kZWQgZGF0YSBmcm9tIHRoaXMgc3RyZWFtIGdvZXMgaW50byBhbGwgdGhvc2Ug
ZmlsdGVycwogICAgICAgICAgICAqIGN1cnJlbnRseSB2aWRlbyBhbmQgYXVkaW8gb25seSAqLwog
ICAgICtAQCBmZnRvb2xzL2ZmbXBlZy5oOiB0eXBlZGVmIHN0cnVjdCBPdXRwdXRTdHJlYW0gewog
ICAgICsgICAgIGludDY0X3QgZmlyc3RfcHRzOwogICAgICsgICAgIC8qIGR0cyBvZiB0aGUgbGFz
dCBwYWNrZXQgc2VudCB0byB0aGUgbXV4ZXIgKi8KICAgICArICAgICBpbnQ2NF90IGxhc3RfbXV4
X2R0czsKICAgICArKyAgICAvKiBzdWJ0aXRsZV9wdHMgdmFsdWVzIG9mIHRoZSBsYXN0IHN1YnRp
dGxlIGZyYW1lIGhhdmluZyBhcnJpdmVkIGZvciBlbmNvZGluZyAqLwogICAgICsrICAgIGludDY0
X3QgbGFzdF9zdWJ0aXRsZV9wdHM7CiAgICAgKyAgICAgLy8gdGhlIHRpbWViYXNlIG9mIHRoZSBw
YWNrZXRzIHNlbnQgdG8gdGhlIG11eGVyCiAgICAgKyAgICAgQVZSYXRpb25hbCBtdXhfdGltZWJh
c2U7CiAgICAgKyAgICAgQVZSYXRpb25hbCBlbmNfdGltZWJhc2U7CiAgICAgIEBAIGZmdG9vbHMv
ZmZtcGVnLmg6IGludCBmaWx0ZXJncmFwaF9pc19zaW1wbGUoRmlsdGVyR3JhcGggKmZnKTsKICAg
ICAgIGludCBpbml0X3NpbXBsZV9maWx0ZXJncmFwaChJbnB1dFN0cmVhbSAqaXN0LCBPdXRwdXRT
dHJlYW0gKm9zdCk7CiAgICAgICBpbnQgaW5pdF9jb21wbGV4X2ZpbHRlcmdyYXBoKEZpbHRlckdy
YXBoICpmZyk7CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IHN0YXRpYyB2b2lkIGlu
aXRfaW5wdXRfZmlsdGVyKEZpbHRlckdyYXBoICpmZywgQVZGaWx0ZXIKICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgIGlmIChjaGVja19zdHJlYW1fc3Bl
Y2lmaWVyKHMsIHMtPnN0cmVhbXNbaV0sICpwID09ICc6JyA/IHAgKyAxIDogcCkgPT0gMSkgewog
ICAgICAgICAgICAgICAgICAgICAgIHN0ID0gcy0+c3RyZWFtc1tpXTsKICAgICAtQEAgZmZ0b29s
cy9mZm1wZWdfZmlsdGVyLmM6IHN0YXRpYyB2b2lkIGluaXRfaW5wdXRfZmlsdGVyKEZpbHRlckdy
YXBoICpmZywgQVZGaWx0ZXJJbk91dCAqaW4pCiAgICAgLSAgICAgaWZpbHRlci0+dHlwZSAgID0g
aXN0LT5zdC0+Y29kZWNwYXItPmNvZGVjX3R5cGU7CiAgICAgLSAgICAgaWZpbHRlci0+bmFtZSAg
ID0gZGVzY3JpYmVfZmlsdGVyX2xpbmsoZmcsIGluLCAxKTsKICAgICAtIAogICAgIC0rICAgIGlm
IChpc3QtPnN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfU1VCVElUTEUg
JiYgaXN0LT5kZWNfY3R4KSB7CiAgICAgLSsgICAgICAgIGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9y
ICpjb2RlY19kZXNjcmlwdG9yID0gaXN0LT5kZWNfY3R4LT5jb2RlY19kZXNjcmlwdG9yOwogICAg
IC0rICAgICAgICBpZiAoIWNvZGVjX2Rlc2NyaXB0b3IpCiAgICAgLSsgICAgICAgICAgICBjb2Rl
Y19kZXNjcmlwdG9yID0gYXZjb2RlY19kZXNjcmlwdG9yX2dldChpc3QtPmRlY19jdHgtPmNvZGVj
X2lkKTsKICAgICAtKwogICAgIC0rICAgICAgICAvLyBGb3Igc3VidGl0bGVzLCB3ZSBuZWVkIHRv
IHNldCB0aGUgZm9ybWF0IGhlcmUuIFdvdWxkIHdlIGxlYXZlIHRoZSBmb3JtYXQKICAgICAtKyAg
ICAgICAgLy8gYXQgLTEsIGl0IHdvdWxkIGRlbGF5IHByb2Nlc3NpbmcgKGlmaWx0ZXJfaGFzX2Fs
bF9pbnB1dF9mb3JtYXRzKCkpIHVudGlsCiAgICAgLSsgICAgICAgIC8vIHRoZSBmaXJzdCBzdWJ0
aWxlIGZyYW1lIGFycml2ZXMsIHdoaWNoIGNvdWxkIG5ldmVyIGhhcHBlbiBpbiB0aGUgd29yc3Qg
Y2FzZQogICAgIC0rICAgICAgICBmZy0+aW5wdXRzW2ZnLT5uYl9pbnB1dHMgLSAxXS0+Zm9ybWF0
ID0gYXZjb2RlY19kZXNjcmlwdG9yX2dldF9zdWJ0aXRsZV9mb3JtYXQoY29kZWNfZGVzY3JpcHRv
cik7CiAgICAgLSsgICAgfQogICAgIC0rCiAgICAgLSAgICAgaWZpbHRlci0+ZnJhbWVfcXVldWUg
PSBhdl9maWZvX2FsbG9jKDggKiBzaXplb2YoQVZGcmFtZSopKTsKICAgICAtICAgICBpZiAoIWlm
aWx0ZXItPmZyYW1lX3F1ZXVlKQogICAgIC0gICAgICAgICBleGl0X3Byb2dyYW0oMSk7CiAgICAg
IEBAIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jOiBzdGF0aWMgaW50IGluc2VydF9maWx0ZXIoQVZG
aWx0ZXJDb250ZXh0ICoqbGFzdF9maWx0ZXIsIGludCAqcGFkX2lkeCwKICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgIH0KICAgICBAQCBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYzogdm9pZCBjaGVj
a19maWx0ZXJfb3V0cHV0cyh2b2lkKQogICAgICArICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZB
TCk7CiAgICAgICsgICAgICAgIGdvdG8gZmFpbDsKICAgICAgKyAgICB9CiAgICAgKysKICAgICAr
KyAgICBpZiAoaXN0LT5zdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1NV
QlRJVExFICYmIGlzdC0+ZGVjX2N0eCkgewogICAgICsrICAgICAgICAvLyBGb3Igc3VidGl0bGVz
LCB3ZSBuZWVkIHRvIHNldCB0aGUgZm9ybWF0IGhlcmUuIFdvdWxkIHdlIGxlYXZlIHRoZSBmb3Jt
YXQKICAgICArKyAgICAgICAgLy8gYXQgLTEsIGl0IHdvdWxkIGRlbGF5IHByb2Nlc3NpbmcgKGlm
aWx0ZXJfaGFzX2FsbF9pbnB1dF9mb3JtYXRzKCkpIHVudGlsCiAgICAgKysgICAgICAgIC8vIHRo
ZSBmaXJzdCBzdWJ0aWxlIGZyYW1lIGFycml2ZXMsIHdoaWNoIGNvdWxkIG5ldmVyIGhhcHBlbiBp
biB0aGUgd29yc3QgY2FzZQogICAgICsrICAgICAgICBpZmlsdGVyLT5mb3JtYXQgPSAodWludDE2
X3QpaXN0LT5kZWNfY3R4LT5zdWJ0aXRsZV90eXBlOwogICAgICsrICAgIH0KICAgICArKwogICAg
ICsrICAgIGlzdC0+c3VidGl0bGVfa2lja29mZi5pc19hY3RpdmUgPSAxOwogICAgICAgCiAgICAg
IC0gICAgLyogQ29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgY2FudmFzIGZvciB0aGUgc3VidGl0bGVz
IHN0cmVhbS4KICAgICAgLSAgICAgICBJZiB0aGUgc3VidGl0bGVzIGNvZGVjcGFyIGhhcyBzZXQg
YSBzaXplLCB1c2UgaXQuIE90aGVyd2lzZSB1c2UgdGhlCiAgICAgQEAgZmZ0b29scy9mZm1wZWdf
ZmlsdGVyLmM6IHZvaWQgY2hlY2tfZmlsdGVyX291dHB1dHModm9pZCkKICAgICAgLSAgICAgICAg
YXZfbG9nKGF2ZiwgQVZfTE9HX0lORk8sICJzdWIydmlkZW86IHVzaW5nICVkeCVkIGNhbnZhc1xu
IiwgdywgaCk7CiAgICAgICsgICAgICAgIHcgPSBpc3QtPmRlY19jdHgtPndpZHRoOwogICAgICAr
ICAgICAgICBoID0gaXN0LT5kZWNfY3R4LT5oZWlnaHQ7CiAgICAgLSAgICAgfQogICAgIC0tICAg
IGlzdC0+c3ViMnZpZGVvLncgPSBpZmlsdGVyLT53aWR0aCAgPSB3OwogICAgIC0tICAgIGlzdC0+
c3ViMnZpZGVvLmggPSBpZmlsdGVyLT5oZWlnaHQgPSBoOwogICAgIC0gCiAgICAgLS0gICAgaWZp
bHRlci0+d2lkdGggID0gaXN0LT5kZWNfY3R4LT53aWR0aCAgPyBpc3QtPmRlY19jdHgtPndpZHRo
ICA6IGlzdC0+c3ViMnZpZGVvLnc7CiAgICAgLS0gICAgaWZpbHRlci0+aGVpZ2h0ID0gaXN0LT5k
ZWNfY3R4LT5oZWlnaHQgPyBpc3QtPmRlY19jdHgtPmhlaWdodCA6IGlzdC0+c3ViMnZpZGVvLmg7
CiAgICAgKysgICAgfQogICAgICsrCiAgICAgICsgICAgaWYgKCEodyAmJiBoKSAmJiBpc3QtPmRl
Y19jdHgtPnN1YnRpdGxlX2hlYWRlcikgewogICAgICArICAgICAgICBBU1NTcGxpdENvbnRleHQg
KmFzc19jdHggPSBhdnByaXZfYXNzX3NwbGl0KChjaGFyICopaXN0LT5kZWNfY3R4LT5zdWJ0aXRs
ZV9oZWFkZXIpOwogICAgICArICAgICAgICBBU1MgKmFzcyA9IChBU1MgKilhc3NfY3R4OwogICAg
ICArICAgICAgICB3ID0gYXNzLT5zY3JpcHRfaW5mby5wbGF5X3Jlc194OwogICAgICArICAgICAg
ICBoID0gYXNzLT5zY3JpcHRfaW5mby5wbGF5X3Jlc195OwogICAgICArICAgICAgICBhdnByaXZf
YXNzX3NwbGl0X2ZyZWUoYXNzX2N0eCk7CiAgICAgLSsgICAgfQogICAgICsgICAgIH0KICAgICAr
LSAgICBpc3QtPnN1YjJ2aWRlby53ID0gaWZpbHRlci0+d2lkdGggID0gdzsKICAgICArLSAgICBp
c3QtPnN1YjJ2aWRlby5oID0gaWZpbHRlci0+aGVpZ2h0ID0gaDsKICAgICArIAogICAgICstICAg
IGlmaWx0ZXItPndpZHRoICA9IGlzdC0+ZGVjX2N0eC0+d2lkdGggID8gaXN0LT5kZWNfY3R4LT53
aWR0aCAgOiBpc3QtPnN1YjJ2aWRlby53OwogICAgICstICAgIGlmaWx0ZXItPmhlaWdodCA9IGlz
dC0+ZGVjX2N0eC0+aGVpZ2h0ID8gaXN0LT5kZWNfY3R4LT5oZWlnaHQgOiBpc3QtPnN1YjJ2aWRl
by5oOwogICAgICsrICAgIGlzdC0+c3VidGl0bGVfa2lja29mZi53ID0gdzsKICAgICArKyAgICBp
c3QtPnN1YnRpdGxlX2tpY2tvZmYuaCA9IGg7CiAgICAgKysgICAgYXZfbG9nKGlmaWx0ZXIsIEFW
X0xPR19JTkZPLCAic3VidGl0bGUgaW5wdXQgZmlsdGVyOiBkZWNvZGluZyBzaXplICVkeCVkXG4i
LCBpc3QtPnN1YnRpdGxlX2tpY2tvZmYudywgaXN0LT5zdWJ0aXRsZV9raWNrb2ZmLmgpOwogICAg
ICAgCiAgICAgIC0gICAgLyogcmVjdGFuZ2xlcyBhcmUgQVZfUElYX0ZNVF9QQUw4LCBidXQgd2Ug
aGF2ZSBubyBndWFyYW50ZWUgdGhhdCB0aGUKICAgICAgLSAgICAgICBwYWxldHRlcyBmb3IgYWxs
IHJlY3RhbmdsZXMgYXJlIGlkZW50aWNhbCBvciBjb21wYXRpYmxlICovCiAgICAgQEAgZmZ0b29s
cy9mZm1wZWdfZmlsdGVyLmM6IHZvaWQgY2hlY2tfZmlsdGVyX291dHB1dHModm9pZCkKICAgICAg
LSAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICAgLSAgICBpc3QtPnN1YjJ2aWRl
by5sYXN0X3B0cyA9IElOVDY0X01JTjsKICAgICAgLSAgICBpc3QtPnN1YjJ2aWRlby5lbmRfcHRz
ICA9IElOVDY0X01JTjsKICAgICArKyAgICBpc3QtPnN1YnRpdGxlX2tpY2tvZmYubGFzdF9wdHMg
PSBJTlQ2NF9NSU47CiAgICAgKysKICAgICAgKyAgICBzbnByaW50ZihuYW1lLCBzaXplb2YobmFt
ZSksICJncmFwaCAlZCBzdWJ0aXRsZSBpbnB1dCBmcm9tIHN0cmVhbSAlZDolZCIsIGZnLT5pbmRl
eCwKICAgICAgKyAgICAgICAgICAgICBpc3QtPmZpbGVfaW5kZXgsIGlzdC0+c3QtPmluZGV4KTsK
ICAgICAgKwogICAgIEBAIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jOiB2b2lkIGNoZWNrX2ZpbHRl
cl9vdXRwdXRzKHZvaWQpCiAgICAgICsgICAgaWYgKChyZXQgPSBhdmZpbHRlcl9ncmFwaF9jcmVh
dGVfZmlsdGVyKCZpZmlsdGVyLT5maWx0ZXIsIGJ1ZmZlcl9maWx0LCBuYW1lLAogICAgICArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnN0ciwgTlVMTCwg
ZmctPmdyYXBoKSkgPCAwKQogICAgICArICAgICAgICBnb3RvIGZhaWw7CiAgICAgLSsKICAgICAr
IAogICAgICstICAgIC8qIHN1YjJ2aWRlbyBzdHJ1Y3R1cmUgaGFzIGJlZW4gKHJlLSlpbml0aWFs
aXplZC4KICAgICArLSAgICAgICBNYXJrIGl0IGFzIHN1Y2ggc28gdGhhdCB0aGUgc3lzdGVtIHdp
bGwgYmUKICAgICArLSAgICAgICBpbml0aWFsaXplZCB3aXRoIHRoZSBmaXJzdCByZWNlaXZlZCBo
ZWFydGJlYXQuICovCiAgICAgKy0gICAgaXN0LT5zdWIydmlkZW8uaW5pdGlhbGl6ZSA9IDE7CiAg
ICAgICsgICAgcGFyLT5od19mcmFtZXNfY3R4ID0gaWZpbHRlci0+aHdfZnJhbWVzX2N0eDsKICAg
ICAgKyAgICBwYXItPmZvcm1hdCA9IGlmaWx0ZXItPmZvcm1hdDsKICAgICAgKyAgICBwYXItPndp
ZHRoID0gaWZpbHRlci0+d2lkdGg7CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IHZv
aWQgY2hlY2tfZmlsdGVyX291dHB1dHModm9pZCkKICAgICAgKyAgICAgICAgICAgIGlmIChyZXQg
PCAwKQogICAgICArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICsgICAgICAgIH0K
ICAgICAtIAogICAgIC0tICAgIC8qIHN1YjJ2aWRlbyBzdHJ1Y3R1cmUgaGFzIGJlZW4gKHJlLSlp
bml0aWFsaXplZC4KICAgICAtLSAgICAgICBNYXJrIGl0IGFzIHN1Y2ggc28gdGhhdCB0aGUgc3lz
dGVtIHdpbGwgYmUKICAgICAtLSAgICAgICBpbml0aWFsaXplZCB3aXRoIHRoZSBmaXJzdCByZWNl
aXZlZCBoZWFydGJlYXQuICovCiAgICAgLS0gICAgaXN0LT5zdWIydmlkZW8uaW5pdGlhbGl6ZSA9
IDE7CiAgICAgKysKICAgICAgKyAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19JTkZPLCAiQXV0
by1pbnNlcnRpbmcgZ3JhcGhpY3N1YjJ2aWRlbyBmaWx0ZXJcbiIpOwogICAgICArICAgICAgICBy
ZXQgPSBpbnNlcnRfZmlsdGVyKCZsYXN0X2ZpbHRlciwgJnBhZF9pZHgsICJncmFwaGljc3ViMnZp
ZGVvIiwgTlVMTCk7CiAgICAgICsgICAgICAgIGlmIChyZXQgPCAwKQogICAgIEBAIGZmdG9vbHMv
ZmZtcGVnX2ZpbHRlci5jOiBzdGF0aWMgaW50IGNvbmZpZ3VyZV9pbnB1dF9maWx0ZXIoRmlsdGVy
R3JhcGggKmZnLCBJbnB1CiAgICAgICAgICAgZGVmYXVsdDogYXZfYXNzZXJ0MCgwKTsgcmV0dXJu
IDA7CiAgICAgICAgICAgfQogICAgICAgfQogICAgICtAQCBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIu
Yzogc3RhdGljIHZvaWQgY2xlYW51cF9maWx0ZXJncmFwaChGaWx0ZXJHcmFwaCAqZmcpCiAgICAg
KyBzdGF0aWMgaW50IGZpbHRlcl9pc19idWZmZXJzcmMoY29uc3QgQVZGaWx0ZXJDb250ZXh0ICpm
KQogICAgICsgewogICAgICsgICAgIHJldHVybiBmLT5uYl9pbnB1dHMgPT0gMCAmJgogICAgICst
ICAgICAgICAgICAoIXN0cmNtcChmLT5maWx0ZXItPm5hbWUsICJidWZmZXIiKSB8fAogICAgICst
ICAgICAgICAgICAgIXN0cmNtcChmLT5maWx0ZXItPm5hbWUsICJhYnVmZmVyIikpOwogICAgICsr
ICAgICAgICAgICAoIXN0cmNtcChmLT5maWx0ZXItPm5hbWUsICJidWZmZXJzcmMiKSB8fAogICAg
ICsrICAgICAgICAgICAgIXN0cmNtcChmLT5maWx0ZXItPm5hbWUsICJhYnVmZmVyc3JjIikgfHwK
ICAgICArKyAgICAgICAgICAgICFzdHJjbXAoZi0+ZmlsdGVyLT5uYW1lLCAic2J1ZmZlcnNyYyIp
KTsKICAgICArIH0KICAgICArIAogICAgICsgc3RhdGljIGludCBncmFwaF9pc19tZXRhKEFWRmls
dGVyR3JhcGggKmdyYXBoKQogICAgICBAQCBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYzogaW50IGNv
bmZpZ3VyZV9maWx0ZXJncmFwaChGaWx0ZXJHcmFwaCAqZmcpCiAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICB9CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IGludCBjb25maWd1cmVf
ZmlsdGVyZ3JhcGgoRmlsdGVyR3JhcGggKmZnKQogICAgICAtICAgIGZvciAoaSA9IDA7IGkgPCBm
Zy0+bmJfaW5wdXRzOyBpKyspIHsKICAgICAgLSAgICAgICAgSW5wdXRTdHJlYW0gKmlzdCA9IGZn
LT5pbnB1dHNbaV0tPmlzdDsKICAgICAgLSAgICAgICAgaWYgKGlzdC0+c3ViMnZpZGVvLnN1Yl9x
dWV1ZSAmJiBpc3QtPnN1YjJ2aWRlby5mcmFtZSkgewogICAgIC0tICAgICAgICAgICAgd2hpbGUg
KGF2X2ZpZm9fc2l6ZShpc3QtPnN1YjJ2aWRlby5zdWJfcXVldWUpKSB7CiAgICAgLS0gICAgICAg
ICAgICAgICAgQVZTdWJ0aXRsZSB0bXA7CiAgICAgLS0gICAgICAgICAgICAgICAgYXZfZmlmb19n
ZW5lcmljX3JlYWQoaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlLCAmdG1wLCBzaXplb2YodG1wKSwg
TlVMTCk7CiAgICAgKy0gICAgICAgICAgICBBVlN1YnRpdGxlIHRtcDsKICAgICArLSAgICAgICAg
ICAgIHdoaWxlIChhdl9maWZvX3JlYWQoaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlLCAmdG1wLCAx
KSA+PSAwKSB7CiAgICAgIC0gICAgICAgICAgICAgICAgc3ViMnZpZGVvX3VwZGF0ZShpc3QsIElO
VDY0X01JTiwgJnRtcCk7CiAgICAgIC0gICAgICAgICAgICAgICAgYXZzdWJ0aXRsZV9mcmVlKCZ0
bXApOwogICAgICAtICAgICAgICAgICAgfQogICAgIEBAIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5j
OiBpbnQgY29uZmlndXJlX2ZpbHRlcmdyYXBoKEZpbHRlckdyYXBoICpmZykKICAgICAgIAogICAg
ICAgZmFpbDoKICAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IGludCBpZmlsdGVyX3Bh
cmFtZXRlcnNfZnJvbV9mcmFtZShJbnB1dEZpbHRlciAqaWZpbHRlciwgY29uc3QgQVZGcmFtZSAq
ZnJhbWUpCiAgICAgLSAgICAgaWZpbHRlci0+c2FtcGxlX3JhdGUgICAgICAgICA9IGZyYW1lLT5z
YW1wbGVfcmF0ZTsKICAgICAtICAgICBpZmlsdGVyLT5jaGFubmVscyAgICAgICAgICAgID0gZnJh
bWUtPmNoYW5uZWxzOwogICAgIC0gICAgIGlmaWx0ZXItPmNoYW5uZWxfbGF5b3V0ICAgICAgPSBm
cmFtZS0+Y2hhbm5lbF9sYXlvdXQ7CiAgICAgKyAgICAgaWZpbHRlci0+d2lkdGggICAgICAgICAg
ICAgICA9IGZyYW1lLT53aWR0aDsKICAgICArICAgICBpZmlsdGVyLT5oZWlnaHQgICAgICAgICAg
ICAgID0gZnJhbWUtPmhlaWdodDsKICAgICArICAgICBpZmlsdGVyLT5zYW1wbGVfYXNwZWN0X3Jh
dGlvID0gZnJhbWUtPnNhbXBsZV9hc3BlY3RfcmF0aW87CiAgICAgICsgICAgaWZpbHRlci0+dHlw
ZSAgICAgICAgICAgICAgICA9IGZyYW1lLT50eXBlOwogICAgICAgCiAgICAgLSAgICAgYXZfZnJl
ZXAoJmlmaWx0ZXItPmRpc3BsYXltYXRyaXgpOwogICAgIC0gICAgIHNkID0gYXZfZnJhbWVfZ2V0
X3NpZGVfZGF0YShmcmFtZSwgQVZfRlJBTUVfREFUQV9ESVNQTEFZTUFUUklYKTsKICAgICArICAg
ICBpZmlsdGVyLT5zYW1wbGVfcmF0ZSAgICAgICAgID0gZnJhbWUtPnNhbXBsZV9yYXRlOwogICAg
ICsgICAgIHJldCA9IGF2X2NoYW5uZWxfbGF5b3V0X2NvcHkoJmlmaWx0ZXItPmNoX2xheW91dCwg
JmZyYW1lLT5jaF9sYXlvdXQpOwogICAgICAKICAgICAgICMjIGZmdG9vbHMvZmZtcGVnX2h3LmMg
IyMKICAgICAgQEAgZmZ0b29scy9mZm1wZWdfaHcuYzogaW50IGh3X2RldmljZV9zZXR1cF9mb3Jf
ZW5jb2RlKE91dHB1dFN0cmVhbSAqb3N0KQogICAgIEBAIGZmdG9vbHMvZmZtcGVnX2h3LmM6IGlu
dCBod19kZXZpY2Vfc2V0dXBfZm9yX2VuY29kZShPdXRwdXRTdHJlYW0gKm9zdCkKICAgICAgICAg
ICAgICAgICAgICgoQVZIV0ZyYW1lc0NvbnRleHQqKWZyYW1lc19yZWYtPmRhdGEpLT5mb3JtYXQg
PT0KICAgICAgCiAgICAgICAjIyBmZnRvb2xzL2ZmbXBlZ19vcHQuYyAjIwogICAgICtAQCBmZnRv
b2xzL2ZmbXBlZ19vcHQuYzogc3RhdGljIHZvaWQgYWRkX2lucHV0X3N0cmVhbXMoT3B0aW9uc0Nv
bnRleHQgKm8sIEFWRm9ybWF0Q29udGV4dCAqaWMpCiAgICAgKyAgICAgICAgICAgICAgICAgYXZf
bG9nKE5VTEwsIEFWX0xPR19GQVRBTCwgIkludmFsaWQgY2FudmFzIHNpemU6ICVzLlxuIiwgY2Fu
dmFzX3NpemUpOwogICAgICsgICAgICAgICAgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKICAgICAr
ICAgICAgICAgICAgIH0KICAgICArKyAgICAgICAgICAgIGlzdC0+c3VidGl0bGVfa2lja29mZi5p
c19hY3RpdmUgPSAxOwogICAgICsgICAgICAgICAgICAgYnJlYWs7CiAgICAgKyAgICAgICAgIH0K
ICAgICArICAgICAgICAgY2FzZSBBVk1FRElBX1RZUEVfQVRUQUNITUVOVDoKICAgICAgQEAgZmZ0
b29scy9mZm1wZWdfb3B0LmM6IHN0YXRpYyB2b2lkIGluaXRfb3V0cHV0X2ZpbHRlcihPdXRwdXRG
aWx0ZXIgKm9maWx0ZXIsIE9wdGlvbnNDb250ZXh0ICpvLAogICAgICAgICAgIHN3aXRjaCAob2Zp
bHRlci0+dHlwZSkgewogICAgICAgICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOiBvc3QgPSBu
ZXdfdmlkZW9fc3RyZWFtKG8sIG9jLCAtMSk7IGJyZWFrOwogICAgIEBAIHRlc3RzL3JlZi9mYXRl
L3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDI1NCwgICAgICAgIDI1NCwgICAgICAgIDEsICAg
NTE4NDAwLCAweDdhMTFjODEyCiAgICAgICswLCAgICAgICAgMjU1LCAgICAgICAgMjU1LCAgICAg
ICAgMSwgICA1MTg0MDAsIDB4N2ExMWM4MTIKICAgICAgKzAsICAgICAgICAyNTYsICAgICAgICAy
NTYsICAgICAgICAxLCAgIDUxODQwMCwgMHg3YTExYzgxMgogICAgIC0rMCwgICAgICAgIDI1Nywg
ICAgICAgIDI1NywgICAgICAgIDEsICAgNTE4NDAwLCAweDdhMTFjODEyCiAgICAgKyswLCAgICAg
ICAgMjU3LCAgICAgICAgMjU3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MzRjZGRkZWUKICAgICAg
IDEsICAgNTE0MzMwMDAsICAgNTE0MzMwMDAsICAyMzY2MDAwLCAgICAgMzA1OSwgMHhjOTViOGEw
NQogICAgICAgMCwgICAgICAgIDI1OCwgICAgICAgIDI1OCwgICAgICAgIDEsICAgNTE4NDAwLCAw
eDM0Y2RkZGVlCiAgICAgIC0wLCAgICAgICAgMjY5LCAgICAgICAgMjY5LCAgICAgICAgMSwgICA1
MTg0MDAsIDB4YmFiMTk3ZWEKICAgICBAQCB0ZXN0cy9yZWYvZmF0ZS9zdWIydmlkZW8KICAgICAg
KzAsICAgICAgICAyODAsICAgICAgICAyODAsICAgICAgICAxLCAgIDUxODQwMCwgMHg0ZGI0Y2U1
MQogICAgICArMCwgICAgICAgIDI4MSwgICAgICAgIDI4MSwgICAgICAgIDEsICAgNTE4NDAwLCAw
eDRkYjRjZTUxCiAgICAgICswLCAgICAgICAgMjgyLCAgICAgICAgMjgyLCAgICAgICAgMSwgICA1
MTg0MDAsIDB4NGRiNGNlNTEKICAgICAtKzAsICAgICAgICAyODMsICAgICAgICAyODMsICAgICAg
ICAxLCAgIDUxODQwMCwgMHg0ZGI0Y2U1MQogICAgICsrMCwgICAgICAgIDI4MywgICAgICAgIDI4
MywgICAgICAgIDEsICAgNTE4NDAwLCAweGU2YmMwZWE5CiAgICAgICAxLCAgIDU2NjYzMDAwLCAg
IDU2NjYzMDAwLCAgMTI2MjAwMCwgICAgIDEwMTMsIDB4YzlhZTg5YjcKICAgICAgIDAsICAgICAg
ICAyODQsICAgICAgICAyODQsICAgICAgICAxLCAgIDUxODQwMCwgMHhlNmJjMGVhOQogICAgICAt
MCwgICAgICAgIDI5MCwgICAgICAgIDI5MCwgICAgICAgIDEsICAgNTE4NDAwLCAweGJhYjE5N2Vh
CiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvCiAgICAgICswLCAgICAgICAgMjg3LCAg
ICAgICAgMjg3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4ZTZiYzBlYTkKICAgICAgKzAsICAgICAg
ICAyODgsICAgICAgICAyODgsICAgICAgICAxLCAgIDUxODQwMCwgMHhlNmJjMGVhOQogICAgICAr
MCwgICAgICAgIDI4OSwgICAgICAgIDI4OSwgICAgICAgIDEsICAgNTE4NDAwLCAweGU2YmMwZWE5
CiAgICAgLSswLCAgICAgICAgMjkwLCAgICAgICAgMjkwLCAgICAgICAgMSwgICA1MTg0MDAsIDB4
ZTZiYzBlYTkKICAgICArKzAsICAgICAgICAyOTAsICAgICAgICAyOTAsICAgICAgICAxLCAgIDUx
ODQwMCwgMHhhODY0M2FmNwogICAgICAgMSwgICA1ODAxNDAwMCwgICA1ODAxNDAwMCwgIDE2NjEw
MDAsICAgICAgOTY5LCAweGUwMTg3OGYwCiAgICAgICAwLCAgICAgICAgMjkxLCAgICAgICAgMjkx
LCAgICAgICAgMSwgICA1MTg0MDAsIDB4YTg2NDNhZjcKICAgICAgLTAsICAgICAgICAyOTgsICAg
ICAgICAyOTgsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIxOTdlYQogICAgIEBAIHRlc3RzL3Jl
Zi9mYXRlL3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDM1MSwgICAgICAgIDM1MSwgICAgICAg
IDEsICAgNTE4NDAwLCAweDM3OGUzZmQwCiAgICAgICswLCAgICAgICAgMzUyLCAgICAgICAgMzUy
LCAgICAgICAgMSwgICA1MTg0MDAsIDB4Mzc4ZTNmZDAKICAgICAgKzAsICAgICAgICAzNTMsICAg
ICAgICAzNTMsICAgICAgICAxLCAgIDUxODQwMCwgMHgzNzhlM2ZkMAogICAgIC0rMCwgICAgICAg
IDM1NCwgICAgICAgIDM1NCwgICAgICAgIDEsICAgNTE4NDAwLCAweDM3OGUzZmQwCiAgICAgKysw
LCAgICAgICAgMzU0LCAgICAgICAgMzU0LCAgICAgICAgMSwgICA1MTg0MDAsIDB4YTM3ODI0NjkK
ICAgICAgIDEsICAgNzA4MTkwMDAsICAgNzA4MTkwMDAsICAxODY1MDAwLCAgICAgMTcwOSwgMHhi
NGQ1YTFiZAogICAgICAgMCwgICAgICAgIDM1NSwgICAgICAgIDM1NSwgICAgICAgIDEsICAgNTE4
NDAwLCAweGEzNzgyNDY5CiAgICAgIC0wLCAgICAgICAgMzYzLCAgICAgICAgMzYzLCAgICAgICAg
MSwgICA1MTg0MDAsIDB4YmFiMTk3ZWEKICAgICBAQCB0ZXN0cy9yZWYvZmF0ZS9zdWIydmlkZW8K
ICAgICAgKzAsICAgICAgICAzNzEsICAgICAgICAzNzEsICAgICAgICAxLCAgIDUxODQwMCwgMHhi
YTIzYTBkNQogICAgICArMCwgICAgICAgIDM3MiwgICAgICAgIDM3MiwgICAgICAgIDEsICAgNTE4
NDAwLCAweGJhMjNhMGQ1CiAgICAgICswLCAgICAgICAgMzczLCAgICAgICAgMzczLCAgICAgICAg
MSwgICA1MTg0MDAsIDB4YmEyM2EwZDUKICAgICAtKzAsICAgICAgICAzNzQsICAgICAgICAzNzQs
ICAgICAgICAxLCAgIDUxODQwMCwgMHhiYTIzYTBkNQogICAgICsrMCwgICAgICAgIDM3NCwgICAg
ICAgIDM3NCwgICAgICAgIDEsICAgNTE4NDAwLCAweDEyOWRlMmY4CiAgICAgICAxLCAgIDc0ODA2
MDAwLCAgIDc0ODA2MDAwLCAgMTgzMTAwMCwgICAgIDIxMTYsIDB4OTY1MTQwOTcKICAgICAgIDAs
ICAgICAgICAzNzUsICAgICAgICAzNzUsICAgICAgICAxLCAgIDUxODQwMCwgMHgxMjlkZTJmOAog
ICAgICAtMCwgICAgICAgIDM4MywgICAgICAgIDM4MywgICAgICAgIDEsICAgNTE4NDAwLCAweGJh
YjE5N2VhCiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvCiAgICAgICswLCAgICAgICAg
Mzg3LCAgICAgICAgMzg3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MTk3NzJmMGYKICAgICAgKzAs
ICAgICAgICAzODgsICAgICAgICAzODgsICAgICAgICAxLCAgIDUxODQwMCwgMHgxOTc3MmYwZgog
ICAgICArMCwgICAgICAgIDM4OSwgICAgICAgIDM4OSwgICAgICAgIDEsICAgNTE4NDAwLCAweDE5
NzcyZjBmCiAgICAgLSswLCAgICAgICAgMzkwLCAgICAgICAgMzkwLCAgICAgICAgMSwgICA1MTg0
MDAsIDB4MTk3NzJmMGYKICAgICArKzAsICAgICAgICAzOTAsICAgICAgICAzOTAsICAgICAgICAx
LCAgIDUxODQwMCwgMHg1NmY1NGU3MwogICAgICAgMSwgICA3ODA1MTAwMCwgICA3ODA1MTAwMCwg
IDE1MjQwMDAsICAgICAgOTg3LCAweDdiOTI3YTI3CiAgICAgICAwLCAgICAgICAgMzkxLCAgICAg
ICAgMzkxLCAgICAgICAgMSwgICA1MTg0MDAsIDB4NTZmNTRlNzMKICAgICAgLTAsICAgICAgICAz
OTgsICAgICAgICAzOTgsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIxOTdlYQogICAgIEBAIHRl
c3RzL3JlZi9mYXRlL3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDM5NSwgICAgICAgIDM5NSwg
ICAgICAgIDEsICAgNTE4NDAwLCAweDU2ZjU0ZTczCiAgICAgICswLCAgICAgICAgMzk2LCAgICAg
ICAgMzk2LCAgICAgICAgMSwgICA1MTg0MDAsIDB4NTZmNTRlNzMKICAgICAgKzAsICAgICAgICAz
OTcsICAgICAgICAzOTcsICAgICAgICAxLCAgIDUxODQwMCwgMHg1NmY1NGU3MwogICAgIC0rMCwg
ICAgICAgIDM5OCwgICAgICAgIDM5OCwgICAgICAgIDEsICAgNTE4NDAwLCAweDU2ZjU0ZTczCiAg
ICAgKyswLCAgICAgICAgMzk4LCAgICAgICAgMzk4LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MzAw
YjUyNDcKICAgICAgIDEsICAgNzk2NDQwMDAsICAgNzk2NDQwMDAsICAyNjYyMDAwLCAgICAgMjk1
NiwgMHgxOTA3NzhmNwogICAgICAgMCwgICAgICAgIDM5OSwgICAgICAgIDM5OSwgICAgICAgIDEs
ICAgNTE4NDAwLCAweDMwMGI1MjQ3CiAgICAgICswLCAgICAgICAgNDAwLCAgICAgICAgNDAwLCAg
ICAgICAgMSwgICA1MTg0MDAsIDB4MzAwYjUyNDcKICAgICBAQCB0ZXN0cy9yZWYvZmF0ZS9zdWIy
dmlkZW8KICAgICAgKzAsICAgICAgICA0MTEsICAgICAgICA0MTEsICAgICAgICAxLCAgIDUxODQw
MCwgMHgzMDBiNTI0NwogICAgICAgMSwgICA4MjM4MDAwMCwgICA4MjM4MDAwMCwgIDI3NjQwMDAs
ICAgICAzMDk0LCAweGMwMjFiN2QzCiAgICAgIC0wLCAgICAgICAgNDEyLCAgICAgICAgNDEyLCAg
ICAgICAgMSwgICA1MTg0MDAsIDB4YmFiMTk3ZWEKICAgICAtKzAsICAgICAgICA0MTIsICAgICAg
ICA0MTIsICAgICAgICAxLCAgIDUxODQwMCwgMHgzMDBiNTI0NwogICAgICsrMCwgICAgICAgIDQx
MiwgICAgICAgIDQxMiwgICAgICAgIDEsICAgNTE4NDAwLCAweDZmZDAyOGZhCiAgICAgICAwLCAg
ICAgICAgNDEzLCAgICAgICAgNDEzLCAgICAgICAgMSwgICA1MTg0MDAsIDB4NmZkMDI4ZmEKICAg
ICAgLTAsICAgICAgICA0MjYsICAgICAgICA0MjYsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIx
OTdlYQogICAgICArMCwgICAgICAgIDQxNCwgICAgICAgIDQxNCwgICAgICAgIDEsICAgNTE4NDAw
LCAweDZmZDAyOGZhCiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvCiAgICAgICswLCAg
ICAgICAgNDIzLCAgICAgICAgNDIzLCAgICAgICAgMSwgICA1MTg0MDAsIDB4NmZkMDI4ZmEKICAg
ICAgKzAsICAgICAgICA0MjQsICAgICAgICA0MjQsICAgICAgICAxLCAgIDUxODQwMCwgMHg2ZmQw
MjhmYQogICAgICArMCwgICAgICAgIDQyNSwgICAgICAgIDQyNSwgICAgICAgIDEsICAgNTE4NDAw
LCAweDZmZDAyOGZhCiAgICAgLSswLCAgICAgICAgNDI2LCAgICAgICAgNDI2LCAgICAgICAgMSwg
ICA1MTg0MDAsIDB4NmZkMDI4ZmEKICAgICArKzAsICAgICAgICA0MjYsICAgICAgICA0MjYsICAg
ICAgICAxLCAgIDUxODQwMCwgMHgwMWY4MGU5ZAogICAgICAgMSwgICA4NTIyNTAwMCwgICA4NTIy
NTAwMCwgIDIzNjYwMDAsICAgICAyNTg1LCAweDc0ZDAwNDhmCiAgICAgICAwLCAgICAgICAgNDI3
LCAgICAgICAgNDI3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MDFmODBlOWQKICAgICAgLTAsICAg
ICAgICA0MzgsICAgICAgICA0MzgsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIxOTdlYQogICAg
IEBAIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDQzNSwgICAgICAg
IDQzNSwgICAgICAgIDEsICAgNTE4NDAwLCAweDAxZjgwZTlkCiAgICAgICswLCAgICAgICAgNDM2
LCAgICAgICAgNDM2LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MDFmODBlOWQKICAgICAgKzAsICAg
ICAgICA0MzcsICAgICAgICA0MzcsICAgICAgICAxLCAgIDUxODQwMCwgMHgwMWY4MGU5ZAogICAg
IC0rMCwgICAgICAgIDQzOCwgICAgICAgIDQzOCwgICAgICAgIDEsICAgNTE4NDAwLCAweDAxZjgw
ZTlkCiAgICAgKyswLCAgICAgICAgNDM4LCAgICAgICAgNDM4LCAgICAgICAgMSwgICA1MTg0MDAs
IDB4YjQ4ZDkwYzAKICAgICAgIDEsICAgODc2NTIwMDAsICAgODc2NTIwMDAsICAxODMxMDAwLCAg
ICAgIDYzNCwgMHg4ODMyZmRhMQogICAgICAgMCwgICAgICAgIDQzOSwgICAgICAgIDQzOSwgICAg
ICAgIDEsICAgNTE4NDAwLCAweGI0OGQ5MGMwCiAgICAgIC0wLCAgICAgICAgNDQ3LCAgICAgICAg
NDQ3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4YmFiMTk3ZWEKICAgICBAQCB0ZXN0cy9yZWYvZmF0
ZS9zdWIydmlkZW8KICAgICAgKzAsICAgICAgICA0OTEsICAgICAgICA0OTEsICAgICAgICAxLCAg
IDUxODQwMCwgMHhiOGEzMjNlNAogICAgICArMCwgICAgICAgIDQ5MiwgICAgICAgIDQ5MiwgICAg
ICAgIDEsICAgNTE4NDAwLCAweGI4YTMyM2U0CiAgICAgICswLCAgICAgICAgNDkzLCAgICAgICAg
NDkzLCAgICAgICAgMSwgICA1MTg0MDAsIDB4YjhhMzIzZTQKICAgICAtKzAsICAgICAgICA0OTQs
ICAgICAgICA0OTQsICAgICAgICAxLCAgIDUxODQwMCwgMHhiOGEzMjNlNAogICAgICsrMCwgICAg
ICAgIDQ5NCwgICAgICAgIDQ5NCwgICAgICAgIDEsICAgNTE4NDAwLCAweGM0MzUxOGJhCiAgICAg
ICAxLCAgIDk4ODcyMDAwLCAgIDk4ODcyMDAwLCAgMjE2MTAwMCwgICAgIDE4NzUsIDB4OTAwMmVm
NzEKICAgICAgIDAsICAgICAgICA0OTUsICAgICAgICA0OTUsICAgICAgICAxLCAgIDUxODQwMCwg
MHhjNDM1MThiYQogICAgICAtMCwgICAgICAgIDUwNSwgICAgICAgIDUwNSwgICAgICAgIDEsICAg
NTE4NDAwLCAweGJhYjE5N2VhCiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvCiAgICAg
ICswLCAgICAgICAgODQ3LCAgICAgICAgODQ3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MDNlYTBl
OTAKICAgICAgKzAsICAgICAgICA4NDgsICAgICAgICA4NDgsICAgICAgICAxLCAgIDUxODQwMCwg
MHgwM2VhMGU5MAogICAgICArMCwgICAgICAgIDg0OSwgICAgICAgIDg0OSwgICAgICAgIDEsICAg
NTE4NDAwLCAweDAzZWEwZTkwCiAgICAgLSswLCAgICAgICAgODUwLCAgICAgICAgODUwLCAgICAg
ICAgMSwgICA1MTg0MDAsIDB4MDNlYTBlOTAKICAgICArKzAsICAgICAgICA4NTAsICAgICAgICA4
NTAsICAgICAgICAxLCAgIDUxODQwMCwgMHg4NzgwMjM5ZQogICAgICAgMSwgIDE3MDAzNTAwMCwg
IDE3MDAzNTAwMCwgIDE1MjQwMDAsICAgICAxMjc5LCAweGI2YzJkYWZlCiAgICAgICAwLCAgICAg
ICAgODUxLCAgICAgICAgODUxLCAgICAgICAgMSwgICA1MTg0MDAsIDB4ODc4MDIzOWUKICAgICAg
LTAsICAgICAgICA4NTgsICAgICAgICA4NTgsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIxOTdl
YQogICAgIEBAIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDk2MCwg
ICAgICAgIDk2MCwgICAgICAgIDEsICAgNTE4NDAwLCAweDU5ZjRlNzJmCiAgICAgICswLCAgICAg
ICAgOTYxLCAgICAgICAgOTYxLCAgICAgICAgMSwgICA1MTg0MDAsIDB4NTlmNGU3MmYKICAgICAg
KzAsICAgICAgICA5NjIsICAgICAgICA5NjIsICAgICAgICAxLCAgIDUxODQwMCwgMHg1OWY0ZTcy
ZgogICAgIC0rMCwgICAgICAgIDk2MywgICAgICAgIDk2MywgICAgICAgIDEsICAgNTE4NDAwLCAw
eDU5ZjRlNzJmCiAgICAgKyswLCAgICAgICAgOTYzLCAgICAgICAgOTYzLCAgICAgICAgMSwgICA1
MTg0MDAsIDB4OWQ1YjlkNjkKICAgICAgIDEsICAxOTI2NDAwMDAsICAxOTI2NDAwMDAsICAxNzYz
MDAwLCAgICAgMjUwNiwgMHhhNDU4ZDZkNAogICAgICAgMCwgICAgICAgIDk2NCwgICAgICAgIDk2
NCwgICAgICAgIDEsICAgNTE4NDAwLCAweDlkNWI5ZDY5CiAgICAgIC0wLCAgICAgICAgOTcyLCAg
ICAgICAgOTcyLCAgICAgICAgMSwgICA1MTg0MDAsIDB4YmFiMTk3ZWEKICAgICBAQCB0ZXN0cy9y
ZWYvZmF0ZS9zdWIydmlkZW8KICAgICAgKzAsICAgICAgICA5OTMsICAgICAgICA5OTMsICAgICAg
ICAxLCAgIDUxODQwMCwgMHgyNTExMzk2NgogICAgICArMCwgICAgICAgIDk5NCwgICAgICAgIDk5
NCwgICAgICAgIDEsICAgNTE4NDAwLCAweDI1MTEzOTY2CiAgICAgICswLCAgICAgICAgOTk1LCAg
ICAgICAgOTk1LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MjUxMTM5NjYKICAgICAtKzAsICAgICAg
ICA5OTYsICAgICAgICA5OTYsICAgICAgICAxLCAgIDUxODQwMCwgMHgyNTExMzk2NgogICAgICsr
MCwgICAgICAgIDk5NiwgICAgICAgIDk5NiwgICAgICAgIDEsICAgNTE4NDAwLCAweDJkYzgzNjA5
CiAgICAgICAxLCAgMTk5MjMwMDAwLCAgMTk5MjMwMDAwLCAgMTYyNzAwMCwgICAgIDE4NDYsIDB4
ZWVhOGM1OTkKICAgICAgIDAsICAgICAgICA5OTcsICAgICAgICA5OTcsICAgICAgICAxLCAgIDUx
ODQwMCwgMHgyZGM4MzYwOQogICAgICAtMCwgICAgICAgMTAwNCwgICAgICAgMTAwNCwgICAgICAg
IDEsICAgNTE4NDAwLCAweGJhYjE5N2VhCiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVv
CiAgICAgICswLCAgICAgICAxMTM2LCAgICAgICAxMTM2LCAgICAgICAgMSwgICA1MTg0MDAsIDB4
ODFlOTc3YjIKICAgICAgKzAsICAgICAgIDExMzcsICAgICAgIDExMzcsICAgICAgICAxLCAgIDUx
ODQwMCwgMHg4MWU5NzdiMgogICAgICArMCwgICAgICAgMTEzOCwgICAgICAgMTEzOCwgICAgICAg
IDEsICAgNTE4NDAwLCAweDgxZTk3N2IyCiAgICAgLSswLCAgICAgICAxMTM5LCAgICAgICAxMTM5
LCAgICAgICAgMSwgICA1MTg0MDAsIDB4ODFlOTc3YjIKICAgICArKzAsICAgICAgIDExMzksICAg
ICAgIDExMzksICAgICAgICAxLCAgIDUxODQwMCwgMHhiMDQ2ZGQzMAogICAgICAgMSwgIDIyNzgz
NDAwMCwgIDIyNzgzNDAwMCwgIDEyNjIwMDAsICAgICAxMjY0LCAweGMxZDlmYzU3CiAgICAgICAw
LCAgICAgICAxMTQwLCAgICAgICAxMTQwLCAgICAgICAgMSwgICA1MTg0MDAsIDB4YjA0NmRkMzAK
ICAgICAgLTAsICAgICAgIDExNDUsICAgICAgIDExNDUsICAgICAgICAxLCAgIDUxODQwMCwgMHhi
YWIxOTdlYQogICAgIEBAIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlb19iYXNpYwogICAgICAtMCwg
ICAgICAgODk5NiwgICAgICAgODk5NiwgICAgICAgIDEsICAxMzgyNDAwLCAweGRhMmNlYjU1CiAg
ICAgIC0wLCAgICAgICA5MDI3LCAgICAgICA5MDI3LCAgICAgICAgMSwgIDEzODI0MDAsIDB4MDAw
MDAwMDAKICAgICAgKyNzYXIgMDogMS8xCiAgICAgLSswLCAgICAgICAgICAwLCAgICAgICAgICAw
LCAgICAgICAgMSwgIDEzODI0MDAsIDB4MDAwMDAwMDAKICAgICAgKzAsICAgICAgICA2NjIsICAg
ICAgICA2NjIsICAgICAgICAxLCAgMTM4MjQwMCwgMHhjNjM3Yjg5MwogICAgICArMCwgICAgICAg
IDY2MywgICAgICAgIDY2MywgICAgICAgIDEsICAxMzgyNDAwLCAweGM2MzdiODkzCiAgICAgICsw
LCAgICAgICAgNjY0LCAgICAgICAgNjY0LCAgICAgICAgMSwgIDEzODI0MDAsIDB4YzYzN2I4OTMK
ICAgICBAQCB0ZXN0cy9yZWYvZmF0ZS9zdWIydmlkZW9fdGltZV9saW1pdGVkCiAgICAgIC0jc2Fy
IDA6IDAvMQogICAgICAtMCwgICAgICAgICAgMiwgICAgICAgICAgMiwgICAgICAgIDEsICA4Mjk0
NDAwLCAweDAwMDAwMDAwCiAgICAgICsjc2FyIDA6IDEvMQogICAgIC0rMCwgICAgICAgICAgMCwg
ICAgICAgICAgMCwgICAgICAgIDEsICA4Mjk0NDAwLCAweDAwMDAwMDAwCiAgICAgLSswLCAgICAg
ICAgICAxLCAgICAgICAgICAxLCAgICAgICAgMSwgIDgyOTQ0MDAsIDB4MDAwMDAwMDAKICAgICAr
KzAsICAgICAgICAgIDAsICAgICAgICAgIDAsICAgICAgICAxLCAgODI5NDQwMCwgMHhhODdjNTE4
ZgogICAgICsrMCwgICAgICAgICAgMSwgICAgICAgICAgMSwgICAgICAgIDEsICA4Mjk0NDAwLCAw
eGE4N2M1MThmCiAgICAgICAwLCAgICAgICAgICAyLCAgICAgICAgICAyLCAgICAgICAgMSwgIDgy
OTQ0MDAsIDB4YTg3YzUxOGYKICAgICAgKzAsICAgICAgICAgIDMsICAgICAgICAgIDMsICAgICAg
ICAxLCAgODI5NDQwMCwgMHhhODdjNTE4ZgogICAgICArMCwgICAgICAgICAgNCwgICAgICAgICAg
NCwgICAgICAgIDEsICA4Mjk0NDAwLCAweGE4N2M1MThmCiAyMjogIGQzY2RkMmEwZTIgPCAgLTog
IC0tLS0tLS0tLS0gYXZ1dGlsL2Fzc19zcGxpdDogQWRkIHBhcnNpbmcgb2YgaGFyZC1zcGFjZSB0
YWdzIChcaCkKIDIzOiAgNWZjYTU2Njc0OSA8ICAtOiAgLS0tLS0tLS0tLSBhdmNvZGVjL3dlYnZ0
dGVuYzogY29udmVydCBoYXJkLXNwYWNlIHRhZ3MgdG8gJm5ic3A7CiAyNDogIDkzYjQ2OWI4ZDAg
PCAgLTogIC0tLS0tLS0tLS0gZG9jL0FQSWNoYW5nZXM6IHVwZGF0ZSBmb3Igc3VidGl0bGUgZmls
dGVyaW5nIGNoYW5nZXMKIDI1OiAgMGMyNzk1NTBkNiA8ICAtOiAgLS0tLS0tLS0tLSBhdmNvZGVj
L3dlYnZ0dGVuYzogRG9uJ3QgZW5jb2RlIGRyYXdpbmcgY29kZXMgYW5kIGVtcHR5IGxpbmVzCiAy
NjogIDAzZTFhOThlMDggISAyMzogIGE2NmRlYmQ5NmUgYXZjb2RlYy9kdmJzdWJkZWM6IEZpeCBj
b25kaXRpb25zIGZvciBmYWxsYmFjayB0byBkZWZhdWx0IHJlc29sdXRpb24KICAgICBAQCBsaWJh
dmNvZGVjL2R2YnN1YmRlYy5jCiAgICAgICAKICAgICAgICNkZWZpbmUgY20gKGZmX2Nyb3BfdGFi
ICsgTUFYX05FR19DUk9QKQogICAgICAgCiAgICAgLUBAIGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6
IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BA
IGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVj
Q29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAgICAgICAgICBpbnQgc2VnbWVudF9s
ZW5ndGg7CiAgICAgICAgICAgaW50IGk7CiAgICAgICAgICAgaW50IHJldCA9IDA7CiAgICAgQEAg
bGliYXZjb2RlYy9kdmJzdWJkZWMuYzogc3RhdGljIGludCBkdmJzdWJfZGVjb2RlKEFWQ29kZWND
b250ZXh0ICphdmN0eCwKICAgICAgIAogICAgICAgICAgIGZmX2Rsb2coYXZjdHgsICJEVkIgc3Vi
IHBhY2tldDpcbiIpOwogICAgICAgCiAgICAgLUBAIGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0
YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BAIGxp
YmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29u
dGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
c2VnbWVudF90eXBlKSB7CiAgICAgICAgICAgICAgICAgICBjYXNlIERWQlNVQl9QQUdFX1NFR01F
TlQ6CiAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZHZic3ViX3BhcnNlX3BhZ2Vfc2VnbWVu
dChhdmN0eCwgcCwgc2VnbWVudF9sZW5ndGgsIHN1YiwgZ290X3N1Yl9wdHIpOwogICAgIEBAIGxp
YmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29u
dGV4dCAqYXZjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgIGZmX2Rsb2coYXZjdHgsICJTdWJ0
aXRsaW5nIHNlZ21lbnQgdHlwZSAweCV4LCBwYWdlIGlkICVkLCBsZW5ndGggJWRcbiIsCiAgICAg
LUBAIGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNv
ZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRp
YyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1
YiwKICAgICAgIAogICAgICAgICAgICAgICBwICs9IHNlZ21lbnRfbGVuZ3RoOwogICAgICAgICAg
IH0KCi0tIApmZm1wZWctY29kZWJvdApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1w
ZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoK
VG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1y
ZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==