--0016e6d9a25be6f8060488452587
Content-Type: multipart/alternative; boundary=0016e6d9a25be6f7f60488452585
--0016e6d9a25be6f7f60488452585
Content-Type: text/plain; charset=ISO-8859-1
These are pretty basic fixes, but should get rid of annoying build warnings
for kdebase.
I opened bug 240173 and attached the patch, but apparently that is not the
best way to get things reviwed and checked in.
This is mostly:
1) Initializing variables in all code paths
2) Checking return values of write() read() pipe()
3) Adding Q_UNUSED(param) for unused parameters
Thanks for reviewing and any tips.
--0016e6d9a25be6f7f60488452585
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
These are pretty basic fixes, but should get rid of annoying build warnings=
for kdebase.
I=A0 opened bug 240173 and attached the patch, but apparen=
tly that is not the best way to get things reviwed and checked in.
--0016e6d9a25be6f7f60488452585--
--0016e6d9a25be6f8060488452587
Content-Type: text/plain; charset=US-ASCII; name="kdebase.diff"
Content-Disposition: attachment; filename="kdebase.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ga28xczl0
SW5kZXg6IGFwcHMvbnNwbHVnaW5zL3ZpZXdlci92aWV3ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGFw
cHMvbnNwbHVnaW5zL3ZpZXdlci92aWV3ZXIuY3BwCShyZXZpc2lvbiAxMTMyNTcwKQorKysgYXBw
cy9uc3BsdWdpbnMvdmlld2VyL3ZpZXdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsx
MTMsMTAgQEAKICAgICAgIEtDb25maWdHcm91cCBjZmcoJl9jZmcsICJNaXNjIik7CiAgICAgICBp
bnQgdiA9IHFCb3VuZCgwLCBjZmcucmVhZEVudHJ5KCJOaWNlIExldmVsIiwgMCksIDE5KTsKICAg
ICAgIGlmICh2ID4gMCkgewotICAgICAgICAgbmljZSh2KTsKKyAgICAgICAgIGlmICgtMSA9PSBu
aWNlKHYpKQorICAgICAgICAgeworICAgICAgICAgICAgIC8vIElnbm9yZTogbmljZSBmYWlsZWQK
KyAgICAgICAgIH0KICAgICAgIH0KICAgICAgIHYgPSBjZmcucmVhZEVudHJ5KCJNYXggTWVtb3J5
IiwgMCk7CiAgICAgICBpZiAodiA+IDApIHsKSW5kZXg6IGFwcHMva2RlcGFzc3dkL3Bhc3N3ZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gYXBwcy9rZGVwYXNzd2QvcGFzc3dkLmNwcAkocmV2aXNpb24gMTEz
MjU3MCkKKysrIGFwcHMva2RlcGFzc3dkL3Bhc3N3ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSw2ICsxNDUsNyBAQAogICAgICAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBoYXZlIHRvIHN0YXJ0
IGF0IHN0YXRlPTIuCiAgICAgICAgICAgICBzdGF0ZT0yOwogCisgICAgICAgIGludCBjb3VudCA9
IDA7CiAgICAgICAgIHN3aXRjaCAoc3RhdGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNhc2Ug
MDoKQEAgLTE1Myw4ICsxNTQsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoaXNQcm9tcHQobGlu
ZSwgInBhc3N3b3JkIikpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBX
YWl0U2xhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoZmQoKSwgb2xkcGFzcywgc3Ry
bGVuKG9sZHBhc3MpKTsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoZmQoKSwgIlxuIiwgMSk7
CisgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCA9IHN0cmxlbihvbGRwYXNzKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvdW50ICE9IHdyaXRlKGZkKCksIG9sZHBhc3MsIGNvdW50KSkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3Jl
OiB3cml0ZSBmYWlsZWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKDEgIT0gd3JpdGUoZmQoKSwgIlxuIiwgMSkpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZTog
d3JpdGUgZmFpbGVkCisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
c3RhdGUrKzsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMjA0LDggKzIxMywxNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgV2FpdFNsYXZlKCk7Ci0gICAgICAgICAgICAg
ICAgd3JpdGUoZmQoKSwgbmV3cGFzcywgc3RybGVuKG5ld3Bhc3MpKTsKLSAgICAgICAgICAgICAg
ICB3cml0ZShmZCgpLCAiXG4iLCAxKTsKKyAgICAgICAgICAgICAgICBjb3VudCA9IHN0cmxlbihu
ZXdwYXNzKTsKKyAgICAgICAgICAgICAgICBpZiAoY291bnQgIT0gd3JpdGUoZmQoKSwgbmV3cGFz
cywgY291bnQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWdu
b3JlOiB3cml0ZSBmYWlsZWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgaWYgKDEgIT0gd3JpdGUoZmQoKSwgIlxuIiwgMSkpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmU6IHdyaXRlIGZhaWxlZAorICAg
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHN0YXRlKys7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKQEAgLTIxNCw4ICsyMzIsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoaXNQ
cm9tcHQobGluZSwgInJlIikpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICBXYWl0U2xhdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoZmQoKSwgbmV3cGFzcywg
c3RybGVuKG5ld3Bhc3MpKTsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoZmQoKSwgIlxuIiwg
MSk7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gc3RybGVuKG5ld3Bhc3MpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoY291bnQgIT0gd3JpdGUoZmQoKSwgbmV3cGFzcywgY291bnQpKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmU6
IHdyaXRlIGZhaWxlZAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBpZiAoMSAhPSB3cml0ZShmZCgpLCAiXG4iLCAxKSkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlOiB3
cml0ZSBmYWlsZWQKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBz
dGF0ZSArPSAyOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CkBAIC0yMzEsOCArMjU3LDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKGlzUHJvbXB0KGxpbmUs
ICJyZSIpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgV2FpdFNsYXZl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKGZkKCksIG5ld3Bhc3MsIHN0cmxlbihuZXdw
YXNzKSk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKGZkKCksICJcbiIsIDEpOworICAgICAg
ICAgICAgICAgICAgICBjb3VudCA9IHN0cmxlbihuZXdwYXNzKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGNvdW50ICE9IHdyaXRlKGZkKCksIG5ld3Bhc3MsIGNvdW50KSkKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlOiB3cml0ZSBmYWls
ZWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKDEgIT0gd3JpdGUoZmQoKSwgIlxuIiwgMSkpCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZTogd3JpdGUgZmFpbGVk
CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc3RhdGUrKzsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogYXBwcy9r
ZGVwYXNzd2Qva2NtL2NoZm5wcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhcHBzL2tkZXBhc3N3
ZC9rY20vY2hmbnByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMTMyNTcwKQorKysgYXBwcy9rZGVwYXNz
d2Qva2NtL2NoZm5wcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsMTYgQEAK
ICAgICBpZiAoIGxpbmUuY29udGFpbnMoICJQYXNzd29yZDogIiApLyppc1Byb21wdCggbGluZSwg
InBhc3N3b3JkIiApKi8gKQogICAgIHsKICAgICAgIFdhaXRTbGF2ZSgpOwotICAgICAgd3JpdGUo
ZmQoKSwgcGFzcywgc3RybGVuKHBhc3MpKTsKLSAgICAgIHdyaXRlKGZkKCksICJcbiIsIDEpOwor
ICAgICAgaW50IGNvdW50ID0gc3RybGVuKHBhc3MpOworICAgICAgaWYgKGNvdW50ICE9IHdyaXRl
KGZkKCksIHBhc3MsIGNvdW50KSkKKyAgICAgIHsKKyAgICAgICAgICAvLyBJZ25vcmU6IHdyaXRl
IGZhaWxlZAorICAgICAgfQorICAgICAgCisgICAgICBpZiAoMSAhPSB3cml0ZShmZCgpLCAiXG4i
LCAxKSkKKyAgICAgIHsKKyAgICAgICAgICAvLyBJZ25vcmU6IHdyaXRlIGZhaWxlZAorICAgICAg
fQogICAgIH0KIAogICAgIGxpbmUgPSByZWFkTGluZSgpOyAvLyBMZXQncyBzZWUgd2hhdCB0aGUg
b3V0Y29tZSB3YXMKSW5kZXg6IGFwcHMva29ucXVlcm9yL3NoZWxsY21kcGx1Z2luL2tzaGVsbGNt
ZGV4ZWN1dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhcHBzL2tvbnF1ZXJvci9zaGVsbGNtZHBsdWdp
bi9rc2hlbGxjbWRleGVjdXRvci5jcHAJKHJldmlzaW9uIDExMzI1NzApCisrKyBhcHBzL2tvbnF1
ZXJvci9zaGVsbGNtZHBsdWdpbi9rc2hlbGxjbWRleGVjdXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNSw4ICsxMjUsMTUgQEAKICAgIGlmICggb2sgKQogICAgewogICAgICAgUUJ5dGVBcnJh
eSBpbnB1dD1zdHIudG9Mb2NhbDhCaXQoKTsKLSAgICAgIDo6d3JpdGUobV9zaGVsbFByb2Nlc3Mt
PmZkKCksaW5wdXQsaW5wdXQubGVuZ3RoKCkpOwotICAgICAgOjp3cml0ZShtX3NoZWxsUHJvY2Vz
cy0+ZmQoKSwiXG4iLDEpOworICAgICAgaWYgKDo6d3JpdGUobV9zaGVsbFByb2Nlc3MtPmZkKCks
aW5wdXQsaW5wdXQubGVuZ3RoKCkpIDwgaW5wdXQubGVuZ3RoKCkpCisgICAgICB7CisgICAgICAg
ICAgLy8gSWdub3JlOiBXcml0ZSBmYWlsZWQuCisgICAgICB9CisgICAgICAKKyAgICAgIGlmICg6
OndyaXRlKG1fc2hlbGxQcm9jZXNzLT5mZCgpLCJcbiIsMSkgPCAxKQorICAgICAgeworICAgICAg
ICAgIC8vIElnbm9yZTogd3JpdGUgZmFpbGVkLgorICAgICAgfQogICAgfQogICAgZWxzZQogICAg
ICAgc2xvdEZpbmlzaGVkKCk7CkluZGV4OiBydW50aW1lL2tub3RpZnkva3NvbGlkbm90aWZ5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBydW50aW1lL2tub3RpZnkva3NvbGlkbm90aWZ5LmNwcAkocmV2aXNp
b24gMTEzMjU3MCkKKysrIHJ1bnRpbWUva25vdGlmeS9rc29saWRub3RpZnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzMsNiArMTczLDggQEAKIAogdm9pZCBLU29saWROb3RpZnk6OnNsb3RTZXJ2
aWNlT3duZXJDaGFuZ2VkKCBjb25zdCBRU3RyaW5nICYgc2VydmljZU5hbWUsIGNvbnN0IFFTdHJp
bmcgJiBvbGRPd25lciwgY29uc3QgUVN0cmluZyAmIG5ld093bmVyICkKIHsKKyAgICBRX1VOVVNF
RChzZXJ2aWNlTmFtZSk7CisgICAgCiAJaWYgKG5ld093bmVyLmlzRW1wdHkoKSkKIAkJbV9kYnVz
U2VydmljZUV4aXN0cyA9IGZhbHNlOwogCWVsc2UgaWYgKG9sZE93bmVyLmlzRW1wdHkoKSkKSW5k
ZXg6IHJ1bnRpbWUva2lvc2xhdmUvYm9va21hcmtzL2tpb19ib29rbWFya3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHJ1bnRpbWUva2lvc2xhdmUvYm9va21hcmtzL2tpb19ib29rbWFya3MuY3BwCShyZXZp
c2lvbiAxMTMyNTcwKQorKysgcnVudGltZS9raW9zbGF2ZS9ib29rbWFya3Mva2lvX2Jvb2ttYXJr
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQsNyBAQAogCiBleHRlcm4gIkMiIGlu
dCBLREVfRVhQT1JUIGtkZW1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogeworICBRX1VOVVNF
RChhcmdjKTsKICAgS0Fib3V0RGF0YSBhYm91dCgia2lvX2Jvb2ttYXJrcyIsIDAsIGtpMThuKCJN
eSBib29rbWFya3MiKSwgIjAuMi4yIik7CiAgIGFib3V0LmFkZExpY2Vuc2UoS0Fib3V0RGF0YTo6
TGljZW5zZV9HUExfVjIpOwogICBhYm91dC5hZGRBdXRob3Ioa2kxOG4oIlhhdmllciBWZWxsbyIp
LCBraTE4bigiSW5pdGlhbCBkZXZlbG9wZXIiKSwgInhhdmllci52ZWxsb0BnbWFpbC5jb20iLCBR
Qnl0ZUFycmF5KCkpOwpJbmRleDogcnVudGltZS9raW9zbGF2ZS9uZXR3b3JrL25ldHdvcmsvYnVp
bGRlci91cG5wL3VwbnBuZXR3b3JrYnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnVudGltZS9r
aW9zbGF2ZS9uZXR3b3JrL25ldHdvcmsvYnVpbGRlci91cG5wL3VwbnBuZXR3b3JrYnVpbGRlci5j
cHAJKHJldmlzaW9uIDExMzI1NzApCisrKyBydW50aW1lL2tpb3NsYXZlL25ldHdvcmsvbmV0d29y
ay9idWlsZGVyL3VwbnAvdXBucG5ldHdvcmtidWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTEwLDcgKzExMCw3IEBACiAgICAgICAgIGNvbnN0IFFTdHJpbmcgaXBBZGRyZXNzID0gdXBucERl
dmljZS5pcEFkZHJlc3MoKTsKIAogICAgICAgICBOZXREZXZpY2VQcml2YXRlKiBkID0gMDsKLSAg
ICAgICAgY29uc3QgTmV0RGV2aWNlKiBkZXZpY2VPZlNlcnZpY2U7CisgICAgICAgIGNvbnN0IE5l
dERldmljZSogZGV2aWNlT2ZTZXJ2aWNlID0gTlVMTDsKICAgICAgICAgZm9yZWFjaCggY29uc3Qg
TmV0RGV2aWNlJiBkZXZpY2UsIGRldmljZUxpc3QgKQogICAgICAgICB7CiAgICAgICAgIGNvbnN0
IGJvb2wgaXNTYW1lQWRkcmVzcyA9ICggZGV2aWNlLmlwQWRkcmVzcygpID09IGlwQWRkcmVzcyAp
OwpJbmRleDogcnVudGltZS9raW9zbGF2ZS9uZXR3b3JrL25ldHdvcmsvYnVpbGRlci9kbnNzZC9k
bnNzZG5ldHdvcmtidWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBydW50aW1lL2tpb3NsYXZlL25l
dHdvcmsvbmV0d29yay9idWlsZGVyL2Ruc3NkL2Ruc3NkbmV0d29ya2J1aWxkZXIuY3BwCShyZXZp
c2lvbiAxMTMyNTcwKQorKysgcnVudGltZS9raW9zbGF2ZS9uZXR3b3JrL25ldHdvcmsvYnVpbGRl
ci9kbnNzZC9kbnNzZG5ldHdvcmtidWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcg
KzEyOCw3IEBACiAKICAgICAvLyBkZXZpY2UgVE9ETzogb25seSBzZWFyY2ggZm9yIGlmIHdlIGNh
biBjcmVhdGUgdGhlIHNlcnZpY2U/CiAgICAgTmV0RGV2aWNlUHJpdmF0ZSogZCA9IDA7Ci0gICAg
Y29uc3QgTmV0RGV2aWNlKiBkZXZpY2VPZlNlcnZpY2U7CisgICAgY29uc3QgTmV0RGV2aWNlKiBk
ZXZpY2VPZlNlcnZpY2UgPSBOVUxMOwogICAgIGZvcmVhY2goIGNvbnN0IE5ldERldmljZSYgZGV2
aWNlLCBkZXZpY2VMaXN0ICkKICAgICB7CiAgICAgICAgIGNvbnN0IFFTdHJpbmcgZGV2aWNlSG9z
dE5hbWUgPSBkZXZpY2UuaG9zdE5hbWUoKTsKSW5kZXg6IHJ1bnRpbWUva2lvc2xhdmUvZmxvcHB5
L3Byb2dyYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJ1bnRpbWUva2lvc2xhdmUvZmxvcHB5L3Byb2dy
YW0uY3BwCShyZXZpc2lvbiAxMTMyNTcwKQorKysgcnVudGltZS9raW9zbGF2ZS9mbG9wcHkvcHJv
Z3JhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsMTEgQEAKICAgICAgIHB1dGVu
dihzdHJkdXAoIkxBTkc9QyIpKTsKICAgICAgIGV4ZWN2cChhcmdsaXN0WzBdLCBhcmdsaXN0KTsK
ICAgICAgIC8vd2Ugb25seSBnZXQgaGVyZSBpZiBleGVjdnAoKSBmYWlsZWQKLSAgICAgIDo6d3Jp
dGUobm90aWZpY2F0aW9uUGlwZVsxXSwiZmFpbGVkIixzdHJsZW4oImZhaWxlZCIpKTsKKyAgICAg
IGludCBjb3VudCA9IHN0cmxlbigiZmFpbGVkIik7CisgICAgICBpZiAoOjp3cml0ZShub3RpZmlj
YXRpb25QaXBlWzFdLCJmYWlsZWQiLGNvdW50KSAhPSBjb3VudCkKKyAgICAgIHsKKyAgICAgICAg
ICAvLyBJZ25vcmUgZXJyb3IKKyAgICAgIH0KICAgICAgIDo6Y2xvc2Uobm90aWZpY2F0aW9uUGlw
ZVsxXSk7CiAgICAgICBfZXhpdCgtMSk7CiAgICB9OwpJbmRleDogcnVudGltZS9raW9zbGF2ZS9t
YW4vbWFuMmh0bWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJ1bnRpbWUva2lvc2xhdmUvbWFuL21hbjJo
dG1sLmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHJ1bnRpbWUva2lvc2xhdmUvbWFuL21hbjJo
dG1sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyNyw3ICsyMDI3LDcgQEAKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIH0KLSAgICBpZiAoKmM9PScuJykgd2hpbGUgKCpjKyshPSdcbicpOwor
ICAgIGlmICgqYz09Jy4nKSB3aGlsZSAoKmMrKyE9J1xuJykgOwogICAgICptYXhjb2w9MDsKICAg
ICBjdXJyb3c9bGF5b3V0OwogICAgIHdoaWxlIChjdXJyb3cpIHsKQEAgLTIwNjgsNyArMjA2OCw3
IEBACiAgICAgY2hhciBpdGVtc2VwPSdcdCc7CiAgICAgVEFCTEVST1cgKmxheW91dD1OVUxMLCAq
Y3Vycm93OwogICAgIGludCBjdXJmaWVsZCA9IC0xOwotICAgIHdoaWxlICgqYysrIT0nXG4nKTsK
KyAgICB3aGlsZSAoKmMrKyE9J1xuJykgOwogICAgIGg9YzsKICAgICBpZiAoKmg9PScuJykgcmV0
dXJuIGMtMTsKICAgICBvbGRmb250PWN1cnJlbnRfZm9udDsKQEAgLTIwODUsNyArMjA4NSw3IEBA
CiAgICAgLyogc2NhbiB0YWJsZSBvcHRpb25zICovCiAgICAgd2hpbGUgKGM8aCkgewogICAgICAg
ICB3aGlsZSAoaXNzcGFjZSgqYykpIGMrKzsKLSAgICAgICAgZm9yIChpPTA7IHRhYmxlb3B0W2ld
ICYmIHFzdHJuY21wKHRhYmxlb3B0W2ldLGMsdGFibGVvcHRsW2ldKTtpKyspOworICAgICAgICBm
b3IgKGk9MDsgdGFibGVvcHRbaV0gJiYgcXN0cm5jbXAodGFibGVvcHRbaV0sYyx0YWJsZW9wdGxb
aV0pO2krKykgOwogICAgICAgICBjPWMrdGFibGVvcHRsW2ldOwogICAgICAgICBzd2l0Y2ggKGkp
IHsKICAgICAgICAgY2FzZSAwOiBjZW50ZXI9MTsgYnJlYWs7CkBAIC0yMDkzLDggKzIwOTMsOCBA
QAogICAgICAgICBjYXNlIDI6IGJveD0xOyBicmVhazsKICAgICAgICAgY2FzZSAzOiBib3JkZXI9
MTsgYnJlYWs7CiAgICAgICAgIGNhc2UgNDogYm94PTI7IGJyZWFrOwotICAgICAgICBjYXNlIDU6
IHdoaWxlICgqYysrIT0nKCcpOyBpdGVtc2VwPSpjKys7IGJyZWFrOwotICAgICAgICBjYXNlIDY6
IHdoaWxlICgqYysrIT0nKCcpOyBsaW5lc2l6ZT0wOworICAgICAgICBjYXNlIDU6IHdoaWxlICgq
YysrIT0nKCcpIDsgaXRlbXNlcD0qYysrOyBicmVhazsKKyAgICAgICAgY2FzZSA2OiB3aGlsZSAo
KmMrKyE9JygnKSA7IGxpbmVzaXplPTA7CiAgICAgICAgIHdoaWxlIChpc2RpZ2l0KCpjKSkgbGlu
ZXNpemU9bGluZXNpemUqMTArKCpjKyspLScwJzsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgNzogd2hpbGUgKCpjIT0nKScpIGMrKzsKQEAgLTIxNjMsNyArMjE2Myw3IEBACiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKCpjPT0nLicgJiYgY1sxXT09J1QnICYmIGNbMl09PScmJyAmJiBj
Wy0xXT09J1xuJykgewogICAgICAgICBUQUJMRVJPVyAqaHI7Ci0gICAgICAgIHdoaWxlICgqYysr
IT0nXG4nKTsKKyAgICAgICAgd2hpbGUgKCpjKyshPSdcbicpIDsKICAgICAgICAgaHI9Y3Vycm93
OwogICAgICAgICBjdXJyb3c9Y3Vycm93LT5wcmV2OwogICAgICAgICBoci0+cHJldj1OVUxMOwpA
QCAtMjE3NSw3ICsyMTc1LDcgQEAKICAgICAgICAgY3VyZmllbGQ9MDsKICAgICB9IGVsc2UgaWYg
KCpjPT0nLicgJiYgY1sxXT09J1QnICYmIGNbMl09PSdFJyAmJiBjWy0xXT09J1xuJykgewogICAg
ICAgICBmaW5pc2hlZD0xOwotICAgICAgICB3aGlsZSAoKmMrKyE9J1xuJyk7CisgICAgICAgIHdo
aWxlICgqYysrIT0nXG4nKSA7CiAgICAgICAgIGlmIChjdXJyb3ctPnByZXYpCiAgICAgICAgIGN1
cnJvdy0+cHJldi0+bmV4dD1OVUxMOwogICAgICAgICBjdXJyb3ctPnByZXY9TlVMTDsKQEAgLTIx
ODMsNyArMjE4Myw3IEBACiAgICAgICAgICAgICBjdXJyb3cgPSAwOwogICAgICAgICB9IGVsc2Ug
aWYgKCpjPT0nLicgJiYgY1stMV09PSdcbicgJiYgIWlzZGlnaXQoY1sxXSkpIHsKICAgICAgICAg
Lyogc2tpcCB0cm9mZiByZXF1ZXN0IGluc2lkZSB0YWJsZSAodXN1YWxseSBvbmx5IC5zcCApICov
Ci0gICAgICAgIHdoaWxlICgqYysrIT0nXG4nKTsKKyAgICAgICAgd2hpbGUgKCpjKyshPSdcbicp
IDsKICAgICB9IGVsc2UgewogICAgICAgICBoPWM7CiAgICAgICAgIHdoaWxlICgqYyAmJiAoKmMh
PWl0ZW1zZXAgfHwgY1stMV09PSdcXCcpICYmCkBAIC0zMjQzLDcgKzMyNDMsNyBAQAogICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAoKmMgJiYgKmMhPSdcbicpIGMrKzsKICAgICAgICAgICAgICAg
ICAgICAgYysrOwogICAgICAgICAgICAgICAgICAgICBoPWM7Ci0gICAgICAgICAgICAgICAgICAg
IHdoaWxlICgqYyAmJiBxc3RybmNtcChjLCIuZGkiLDMpKSB3aGlsZSAoKmMgJiYgKmMrKyE9J1xu
Jyk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgqYyAmJiBxc3RybmNtcChjLCIuZGkiLDMp
KSB3aGlsZSAoKmMgJiYgKmMrKyE9J1xuJykgOwogICAgICAgICAgICAgICAgICAgICAqYz0nXDAn
OwogICAgICAgICAgICAgICAgICAgICBjaGFyKiByZXN1bHQ9MDsKICAgICAgICAgICAgICAgICAg
ICAgc2Nhbl90cm9mZihoLDAsJnJlc3VsdCk7CkBAIC0zNDk1LDggKzM0OTUsOCBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKCpjICYmICpjIT0nXG4nKSBjKyssaSsrOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGMrKzsKLSAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKCpjICYmIHFzdHJuY21wKGMsZW5kd2l0aCxpKSkgd2hpbGUgKCpjKyshPSdc
bicpOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKmMgJiYgKmMrKyE9J1xuJyk7CisgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICgqYyAmJiBxc3RybmNtcChjLGVuZHdpdGgsaSkpIHdoaWxl
ICgqYysrIT0nXG4nKSA7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgqYyAmJiAqYysrIT0n
XG4nKSA7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBjYXNlIFJFUV9uZjogLy8gZ3JvZmYoNykgIk5vIEZpbGxpbmciCkluZGV4
OiBydW50aW1lL3NvbGlkdWlzZXJ2ZXIvc29saWR1aXNlcnZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cnVudGltZS9zb2xpZHVpc2VydmVyL3NvbGlkdWlzZXJ2ZXIuY3BwCShyZXZpc2lvbiAxMTMyNTcw
KQorKysgcnVudGltZS9zb2xpZHVpc2VydmVyL3NvbGlkdWlzZXJ2ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTEsNiArMTkxLDggQEAKIAogdm9pZCBTb2xpZFVpU2VydmVyOjpyZXBhcmVudERp
YWxvZyhRV2lkZ2V0ICpkaWFsb2csIFdJZCB3SWQsIGNvbnN0IFFTdHJpbmcgJmFwcElkLCBib29s
IG1vZGFsKQogeworICAgIFFfVU5VU0VEKGFwcElkKTsKKyAgICAKICAgICAvLyBDb2RlIGJvcnJv
d2VkIGZyb20ga3dhbGxldGQKIAogICAgIEtXaW5kb3dTeXN0ZW06OnNldE1haW5XaW5kb3coZGlh
bG9nLCB3SWQpOyAvLyBjb3JyZWN0LCBzZXQgZGlhbG9nIHBhcmVudApJbmRleDogcnVudGltZS9r
Z2xvYmFsYWNjZWwvZ2xvYmFsc2hvcnRjdXRzcmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJ1
bnRpbWUva2dsb2JhbGFjY2VsL2dsb2JhbHNob3J0Y3V0c3JlZ2lzdHJ5LmNwcAkocmV2aXNpb24g
MTEzMjU3MCkKKysrIHJ1bnRpbWUva2dsb2JhbGFjY2VsL2dsb2JhbHNob3J0Y3V0c3JlZ2lzdHJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDE0ICsyMTUsMTQgQEAKICAgICBkYXRhLmFwcGVu
ZChzaG9ydGN1dC0+ZnJpZW5kbHlOYW1lKCkpOwogI2lmZGVmIFFfV1NfWDExCiAgICAgLy8gcGFz
cyBYMTEgdGltZXN0YW1wCi0gICAgbG9uZyB0aW1lc3RhbXAgPSBRWDExSW5mbzo6YXBwVGltZSgp
OworLy8gICAgbG9uZyB0aW1lc3RhbXAgPSBRWDExSW5mbzo6YXBwVGltZSgpOwogICAgIC8vIE1h
a2Ugc3VyZSBrZ2xvYmFsYWNjZWxkIGhhcyB1bmdyYWJiZWQgdGhlIGtleWJvYXJkIGFmdGVyIHJl
Y2VpdmluZyB0aGUKICAgICAvLyBrZXlwcmVzcywgb3RoZXJ3aXNlIGFjdGlvbnMgaW4gYXBwbGlj
YXRpb24gdGhhdCB0cnkgdG8gZ3JhYiB0aGUKICAgICAvLyBrZXlib2FyZCAoZS5nLiBpbiBrd2lu
KSBtYXkgZmFpbCB0byBkbyBzby4gVGhlcmUgaXMgc3RpbGwgYSBzbWFsbCByYWNlCiAgICAgLy8g
Y29uZGl0aW9uIHdpdGggdGhpcyBiZWluZyBvdXQtb2YtcHJvY2Vzcy4KICAgICBxQXBwLT5zeW5j
WCgpOwogI2Vsc2UKLSAgICBsb25nIHRpbWVzdGFtcCA9IDA7CisvLyAgICBsb25nIHRpbWVzdGFt
cCA9IDA7CiAjZW5kaWYKIAogICAgIC8vIDFzdCBJbnZva2UgdGhlIGFjdGlvbgpJbmRleDogcnVu
dGltZS9hdHRpY2Eva2RlcGx1Z2luL2tkZXBsYXRmb3JtZGVwZW5kZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBydW50aW1lL2F0dGljYS9rZGVwbHVnaW4va2RlcGxhdGZvcm1kZXBlbmRlbnQuY3BwCShy
ZXZpc2lvbiAxMTMyNTcwKQorKysgcnVudGltZS9hdHRpY2Eva2RlcGx1Z2luL2tkZXBsYXRmb3Jt
ZGVwZW5kZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDYgKzE5MywxMCBAQAogCiBib29s
IEF0dGljYTo6S2RlUGxhdGZvcm1EZXBlbmRlbnQ6OmFza0ZvckNyZWRlbnRpYWxzKGNvbnN0IFFV
cmwmIGJhc2VVcmwsIFFTdHJpbmcmIHVzZXIsIFFTdHJpbmcmIHBhc3N3b3JkKQogeworICAgIFFf
VU5VU0VEKGJhc2VVcmwpOworICAgIFFfVU5VU0VEKHVzZXIpOworICAgIFFfVU5VU0VEKHBhc3N3
b3JkKTsKKyAgICAKICAgICBrRGVidWcoKSA8PCAiQXR0ZW1wdGluZyB0byBzdGFydCBLQ00gZm9y
IGNyZWRlbnRpYWxzIjsKICAgICBLQ011bHRpRGlhbG9nIEtDTTsKICAgICBLQ00uc2V0V2luZG93
VGl0bGUoIGkxOG4oICJPcGVuIENvbGxhYm9yYXRpb24gUHJvdmlkZXJzIiApICk7CkluZGV4OiBy
dW50aW1lL2tkZS1tZW51L2tkZS1tZW51LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBydW50aW1lL2tkZS1t
ZW51L2tkZS1tZW51LmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHJ1bnRpbWUva2RlLW1lbnUv
a2RlLW1lbnUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDEwIEBACiAgICAgICAg
ICBxV2FybmluZygiQ2FuIG5vdCB0YWxrIHRvIGtsYXVuY2hlciEiKTsKICAgICAgICAgIGNvbW1h
bmQgPSBLR2xvYmFsOjpkaXJzKCktPmZpbmRFeGUoY29tbWFuZCk7CiAgICAgICAgICBjb21tYW5k
ICs9ICcgJyArIGFyZ3Muam9pbigiICIpOwotICAgICAgICAgc3lzdGVtKGNvbW1hbmQudG9Mb2Nh
bDhCaXQoKSk7CisgICAgICAgICBpZiAoc3lzdGVtKGNvbW1hbmQudG9Mb2NhbDhCaXQoKSkgPCAw
KQorICAgICAgICAgeworICAgICAgICAgICAgIGVycm9yKDEsIGkxOG4oIkZhaWxlZCB0byBsYXVu
Y2ggY29tbWFuZC4iKSk7CisgICAgICAgICB9CiAgICAgICB9CiAgICB9CiAKSW5kZXg6IHJ1bnRp
bWUva2Rlc3Uva2Rlc3VkL2tkZXN1ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnVudGltZS9rZGVzdS9r
ZGVzdWQva2Rlc3VkLmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHJ1bnRpbWUva2Rlc3Uva2Rl
c3VkL2tkZXN1ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsMTAgQEAKIHZvaWQg
c2lnY2hsZF9oYW5kbGVyKGludCkKIHsKICAgICBjaGFyIGMgPSAnICc7Ci0gICAgd3JpdGUocGlw
ZU9mRGVhdGhbMV0sICZjLCAxKTsKKyAgICBpZiAod3JpdGUocGlwZU9mRGVhdGhbMV0sICZjLCAx
KSAhPSAxKQorICAgIHsKKyAgICAgICAgLy8gV3JpdGUgZmFpbGVkLiAgIAorICAgIH0KIH0KIAog
LyoqCkBAIC0zMTAsNyArMzEzLDEyIEBACiAgICAgcmVwbyA9IG5ldyBSZXBvc2l0b3J5OwogICAg
IFFWZWN0b3I8Q29ubmVjdGlvbkhhbmRsZXIgKj4gaGFuZGxlcjsKIAotICAgIHBpcGUocGlwZU9m
RGVhdGgpOworICAgIGlmIChwaXBlKHBpcGVPZkRlYXRoKSAhPSAwKQorICAgIHsKKyAgICAgICAg
a0Vycm9yKDEyMDUpIDw8ICJwaXBlKCk6IiA8PCBFUlIgPDwgIlxuIjsKKyAgICAgICAga2Rlc3Vk
X2NsZWFudXAoKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CiAgICAgbWF4ZmQgPSBxTWF4KG1h
eGZkLCBwaXBlT2ZEZWF0aFswXSk7CiAKICAgICAvLyBTaWduYWwgaGFuZGxlcnMKQEAgLTM2Niw3
ICszNzQsMTAgQEAKICAgICAgICAgICAgIGlmIChpID09IHBpcGVPZkRlYXRoWzBdKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIGNoYXIgYnVmWzEwMV07Ci0gICAgICAgICAgICAgICAg
cmVhZChwaXBlT2ZEZWF0aFswXSwgYnVmLCAxMDApOworICAgICAgICAgICAgICAgIGlmIChyZWFk
KHBpcGVPZkRlYXRoWzBdLCBidWYsIDEwMCkgPD0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIElnbm9yZSByZWFkIGZhaWx1cmUuCisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIHBpZF90IHJlc3VsdDsKICAgICAgICAgICAgICAgICBkbwogICAg
ICAgICAgICAgICAgIHsKSW5kZXg6IHdvcmtzcGFjZS9rY2hlY2twYXNzL2tjaGVja3Bhc3MuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB3b3Jrc3BhY2Uva2NoZWNrcGFzcy9rY2hlY2twYXNzLmMJKHJldmlzaW9u
IDExMzI1NzApCisrKyB3b3Jrc3BhY2Uva2NoZWNrcGFzcy9rY2hlY2twYXNzLmMJKHdvcmtpbmcg
Y29weSkKQEAgLTQyMCw3ICs0MjAsMTIgQEAKICAgICB9CiAKICAgICBsc2VlayhsZmQsIDAsIFNF
RUtfU0VUKTsKLSAgICB3cml0ZShsZmQsIGZjb250LCBzcHJpbnRmKGZjb250LCAiJWx1XG4iLCB0
aW1lKDApICsgVEhST1RUTEUpKTsKKyAgICBpbnQgY291bnQgPSBzcHJpbnRmKGZjb250LCAiJWx1
XG4iLCB0aW1lKDApICsgVEhST1RUTEUpOworICAgIGlmICh3cml0ZShsZmQsIGZjb250LCBjb3Vu
dCkgIT0gY291bnQpCisgICAgeworICAgICAgICBtZXNzYWdlKCJGYWlsZWQgdG8gd3JpdGUgZW50
aXJlIGJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIEF1dGhFcnJvcjsKKyAgICB9CiAKICAgICBj
bG9zZShsZmQpOwogICB9CkluZGV4OiB3b3Jrc3BhY2Uva2NvbnRyb2wva2ZvbnRpbnN0L2tjbWZv
bnRpbnN0L0tDbUZvbnRJbnN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3b3Jrc3BhY2Uva2NvbnRyb2wv
a2ZvbnRpbnN0L2tjbWZvbnRpbnN0L0tDbUZvbnRJbnN0LmNwcAkocmV2aXNpb24gMTEzMjU3MCkK
KysrIHdvcmtzcGFjZS9rY29udHJvbC9rZm9udGluc3Qva2NtZm9udGluc3QvS0NtRm9udEluc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzMsNyArOTczLDkgQEAKICAgICAgICAgYm9vbCBzeXN0
ZW07CiAKICAgICAgICAgaWYoTWlzYzo6cm9vdCgpKQorICAgICAgICB7CiAgICAgICAgICAgICBz
eXN0ZW09dHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHN3aXRjaChpdHNHcm91cExpc3RWaWV3LT5nZXRUeXBlKCkpCkluZGV4OiB3b3Jrc3BhY2Uv
a2NvbnRyb2wva2ZvbnRpbnN0L2tjbWZvbnRpbnN0L0ZvbnRMaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB3b3Jrc3BhY2Uva2NvbnRyb2wva2ZvbnRpbnN0L2tjbWZvbnRpbnN0L0ZvbnRMaXN0LmNwcAko
cmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtzcGFjZS9rY29udHJvbC9rZm9udGluc3Qva2NtZm9u
dGluc3QvRm9udExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsNyArNTYwLDkgQEAKICAg
ICBRRGF0YVN0cmVhbSAgICAgICAgICAgICAgICAgICAgZHMoJmVuY29kZWREYXRhLCBRSU9EZXZp
Y2U6OldyaXRlT25seSk7CiAKICAgICBmb3IoOyBpdCE9ZW5kOyArK2l0KQorICAgIHsKICAgICAg
ICAgaWYoKCppdCkuaXNWYWxpZCgpKQorICAgICAgICB7CiAgICAgICAgICAgICBpZigoc3RhdGlj
X2Nhc3Q8Q0ZvbnRNb2RlbEl0ZW0gKj4oKCppdCkuaW50ZXJuYWxQb2ludGVyKCkpKS0+aXNGb250
KCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ0ZvbnRJdGVtICpmb250PXN0YXRp
Y19jYXN0PENGb250SXRlbSAqPigoKml0KS5pbnRlcm5hbFBvaW50ZXIoKSk7CkBAIC01NzMsNyAr
NTc1LDggQEAKIAogICAgICAgICAgICAgICAgIGZhbWlsaWVzLmluc2VydChmYW0tPm5hbWUoKSk7
CiAgICAgICAgICAgICB9Ci0KKyAgICAgICAgfQorICAgIH0KICAgICBkcyA8PCBmYW1pbGllczsK
ICAgICBtaW1lRGF0YS0+c2V0RGF0YShLRklfRk9OVF9EUkFHX01JTUUsIGVuY29kZWREYXRhKTsK
ICAgICByZXR1cm4gbWltZURhdGE7CkBAIC05OTgsNiArMTAwMSw3IEBACiAgICAgICAgIGNhc2Ug
UXQ6OlRvb2xUaXBSb2xlOgogICAgICAgICAgICAgaWYoQ0ZvbnRGaWx0ZXI6OkNSSVRfRklMRU5B
TUU9PWl0c0ZpbHRlckNyaXRlcmlhIHx8IENGb250RmlsdGVyOjpDUklUX0xPQ0FUSU9OPT1pdHNG
aWx0ZXJDcml0ZXJpYSB8fAogICAgICAgICAgICAgICAgQ0ZvbnRGaWx0ZXI6OkNSSVRfRk9OVENP
TkZJRz09aXRzRmlsdGVyQ3JpdGVyaWEpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
aWYobWktPmlzRmFtaWx5KCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICBDRmFtaWx5SXRlbSAgICAgICAgICAgICAgICAgICpmYW09c3RhdGljX2Nhc3Q8Q0ZhbWlseUl0
ZW0gKj4oaW5kZXguaW50ZXJuYWxQb2ludGVyKCkpOwpAQCAtMTA1MCw2ICsxMDU0LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgdGlwKz0iPC90YWJsZT48L3A+IjsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRpcDsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBRdDo6Rm9udFJvbGU6CiAgICAgICAgICAgICBpZihD
T0xfRk9OVD09aW5kZXguY29sdW1uKCkgJiYgbWktPmlzU3lzdGVtKCkpCkBAIC0xMDY3LDYgKzEw
NzIsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUXQ6OkRpc3BsYXlSb2xl
OgogICAgICAgICAgICAgaWYoQ09MX0ZPTlQ9PWluZGV4LmNvbHVtbigpKQorICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIGlmKG1pLT5pc0ZhbWlseSgpKQogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgQ0ZhbWlseUl0ZW0gKmZhbT1zdGF0aWNfY2FzdDxDRmFtaWx5
SXRlbSAqPihpbmRleC5pbnRlcm5hbFBvaW50ZXIoKSk7CkBAIC0xMDc1LDYgKzEwODEsNyBAQAog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8Q0ZvbnRJdGVtICo+KGluZGV4LmludGVybmFsUG9pbnRl
cigpKSktPnN0eWxlKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBRdDo6RGVjb3JhdGlvblJvbGU6CiAgICAgICAgICAgICBpZihtaS0+aXNGYW1pbHko
KSkKQEAgLTE0MTMsNiArMTQyMCw3IEBACiAgICAgICAgICAgICBRTW9kZWxJbmRleCByZWFsSW5k
ZXgoaXRzUHJveHktPm1hcFRvU291cmNlKGluZGV4KSk7CiAKICAgICAgICAgICAgIGlmKHJlYWxJ
bmRleC5pc1ZhbGlkKCkpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYoKHN0YXRp
Y19jYXN0PENGb250TW9kZWxJdGVtICo+KHJlYWxJbmRleC5pbnRlcm5hbFBvaW50ZXIoKSkpLT5p
c0ZvbnQoKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIENGb250SXRl
bSAqZm9udD1zdGF0aWNfY2FzdDxDRm9udEl0ZW0gKj4ocmVhbEluZGV4LmludGVybmFsUG9pbnRl
cigpKTsKQEAgLTE0MzgsNiArMTQ0Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgIGZvbnROYW1lcz1DRm9udExpc3Q6OmNvbXBhY3QoZm9udE5hbWVzKTsK
QEAgLTE0OTUsNiArMTUwNCw3IEBACiAgICAgICAgICAgICBRTW9kZWxJbmRleCByZWFsSW5kZXgo
aXRzUHJveHktPm1hcFRvU291cmNlKGluZGV4KSk7CiAKICAgICAgICAgICAgIGlmKHJlYWxJbmRl
eC5pc1ZhbGlkKCkpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYoKHN0YXRpY19j
YXN0PENGb250TW9kZWxJdGVtICo+KHJlYWxJbmRleC5pbnRlcm5hbFBvaW50ZXIoKSkpLT5pc0Zv
bnQoKSkKICAgICAgICAgICAgICAgICAgICAgZm9udD1zdGF0aWNfY2FzdDxDRm9udEl0ZW0gKj4o
cmVhbEluZGV4LmludGVybmFsUG9pbnRlcigpKTsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC0x
NTAyLDYgKzE1MTIsNyBAQAogICAgICAgICAgICAgICAgICAgICBDRmFtaWx5SXRlbSAqZmFtPXN0
YXRpY19jYXN0PENGYW1pbHlJdGVtICo+KHJlYWxJbmRleC5pbnRlcm5hbFBvaW50ZXIoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGZvbnQ9ZmFtLT5yZWd1bGFyRm9udCgpOwogICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmKGZvbnQgJiYgIWZv
bnQtPmlzQml0bWFwKCkgJiYgZm9udC0+aXNFbmFibGVkKCkpCkBAIC0xNjEyLDcgKzE2MjMsOSBA
QAogICAgICAgICBRTW9kZWxJbmRleCByZWFsSW5kZXgoaXRzUHJveHktPm1hcFRvU291cmNlKGlu
ZGV4KSk7CiAKICAgICAgICAgaWYocmVhbEluZGV4LmlzVmFsaWQoKSkKKyAgICAgICAgewogICAg
ICAgICAgICAgaWYoKHN0YXRpY19jYXN0PENGb250TW9kZWxJdGVtICo+KHJlYWxJbmRleC5pbnRl
cm5hbFBvaW50ZXIoKSkpLT5pc0ZhbWlseSgpKQorICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIHN3aXRjaCgoc3RhdGljX2Nhc3Q8Q0ZhbWlseUl0ZW0gKj4ocmVhbEluZGV4LmludGVybmFs
UG9pbnRlcigpKSktPnN0YXR1cygpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDRmFtaWx5SXRlbTo6RU5BQkxFRDoKQEAgLTE2MjYsMTEgKzE2MzksMTUgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXRydWU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYoKHN0YXRpY19jYXN0
PENGb250SXRlbSAqPihyZWFsSW5kZXguaW50ZXJuYWxQb2ludGVyKCkpKS0+aXNFbmFibGVkKCkp
CiAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ9dHJ1ZTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KICAgICAgICAgaWYoZW5hYmxlZCAmJiBkaXNhYmxlZCkKICAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTE3MDAsNiArMTcxNyw3IEBACiAgICAgICAgICAgICBRTW9kZWxJbmRleCBy
ZWFsSW5kZXgoaXRzUHJveHktPm1hcFRvU291cmNlKGluZGV4KSk7CiAKICAgICAgICAgICAgIGlm
KHJlYWxJbmRleC5pc1ZhbGlkKCkpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYo
KHN0YXRpY19jYXN0PENGb250TW9kZWxJdGVtICo+KHJlYWxJbmRleC5pbnRlcm5hbFBvaW50ZXIo
KSkpLT5pc0ZvbnQoKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIENG
b250SXRlbSAqZm9udD1zdGF0aWNfY2FzdDxDRm9udEl0ZW0gKj4ocmVhbEluZGV4LmludGVybmFs
UG9pbnRlcigpKTsKQEAgLTE3MTksNiArMTczNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKChzdGF0aWNfY2FzdDxDRmFtaWx5SXRlbSAq
PihyZWFsSW5kZXguaW50ZXJuYWxQb2ludGVyKCkpKS0+c3RhdHVzKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ0ZhbWlseUl0ZW06OkVOQUJM
RUQ6CkBAIC0xNzMxLDYgKzE3NTAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
PWRpcz10cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICBpZihkZXNlbGVjdExpc3QuY291bnQoKSkKQEAgLTE3OTcsNiArMTgxOCw3IEBACiAg
ICAgICAgIFFNb2RlbEluZGV4IHJlYWxJbmRleChpdHNQcm94eS0+bWFwVG9Tb3VyY2UoaW5kZXgp
KTsKIAogICAgICAgICBpZihyZWFsSW5kZXguaXNWYWxpZCgpKQorICAgICAgICB7CiAgICAgICAg
ICAgICBpZigoc3RhdGljX2Nhc3Q8Q0ZvbnRNb2RlbEl0ZW0gKj4ocmVhbEluZGV4LmludGVybmFs
UG9pbnRlcigpKSktPmlzRm9udCgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIENG
b250SXRlbSAqZm9udChzdGF0aWNfY2FzdDxDRm9udEl0ZW0gKj4ocmVhbEluZGV4LmludGVybmFs
UG9pbnRlcigpKSk7CkBAIC0xODEwLDYgKzE4MzIsNyBAQAogICAgICAgICAgICAgICAgIGlmKGZv
bnQpCiAgICAgICAgICAgICAgICAgICAgIGZvbnRzLmluc2VydChmb250KTsKICAgICAgICAgICAg
IH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmKGZvbnRzLmNvdW50KCkgJiYKQEAgLTE4MjMs
NyArMTg0Niw3IEBACiAgICAgICAgIGZvcig7IGl0IT1lbmQ7ICsraXQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIFFTdHJpbmcgZmlsZTsKLSAgICAgICAgICAgIGludCAgICAgaW5kZXg7CisgICAg
ICAgICAgICBpbnQgICAgIGluZGV4ID0gMDsKIAogICAgICAgICAgICAgaWYoISgqaXQpLT5pc0Vu
YWJsZWQoKSkKICAgICAgICAgICAgIHsKQEAgLTE5NjYsNiArMTk4OSw3IEBACiAgICAgICAgIFFN
b2RlbEluZGV4IHJlYWxJbmRleChpdHNQcm94eS0+bWFwVG9Tb3VyY2UoaW5kZXgpKTsKIAogICAg
ICAgICBpZihyZWFsSW5kZXguaXNWYWxpZCgpKQorICAgICAgICB7CiAgICAgICAgICAgICBpZigo
c3RhdGljX2Nhc3Q8Q0ZvbnRNb2RlbEl0ZW0gKj4ocmVhbEluZGV4LmludGVybmFsUG9pbnRlcigp
KSktPmlzRm9udCgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmKChzdGF0aWNf
Y2FzdDxDRm9udEl0ZW0gKj4ocmVhbEluZGV4LmludGVybmFsUG9pbnRlcigpKS0+aXNFbmFibGVk
KCkpKQpAQCAtMTk3NCw2ICsxOTk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGlzPXRydWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgc3dpdGNoKChzdGF0aWNfY2FzdDxDRmFtaWx5SXRlbSAqPihyZWFsSW5kZXguaW50
ZXJuYWxQb2ludGVyKCkpKS0+c3RhdHVzKCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICBjYXNlIENGYW1pbHlJdGVtOjpFTkFCTEVEOgpAQCAtMTk4Niw2ICsyMDExLDgg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVuPWRpcz10cnVlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CiAgICAgICAgIGlmKGVuICYmIGRpcykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KSW5k
ZXg6IHdvcmtzcGFjZS9rY29udHJvbC9rZm9udGluc3Qva2NtZm9udGluc3QvUHJldmlld0xpc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB3b3Jrc3BhY2Uva2NvbnRyb2wva2ZvbnRpbnN0L2tjbWZvbnRpbnN0
L1ByZXZpZXdMaXN0LmgJKHJldmlzaW9uIDExMzI1NzApCisrKyB3b3Jrc3BhY2Uva2NvbnRyb2wv
a2ZvbnRpbnN0L2tjbWZvbnRpbnN0L1ByZXZpZXdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDggKzY4LDggQEAKICAgICBRTW9kZWxJbmRleCAgICAgaW5kZXgoaW50IHJvdywgaW50IGNvbHVt
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCA9
IFFNb2RlbEluZGV4KCkpIGNvbnN0OwogICAgIFFNb2RlbEluZGV4ICAgICBwYXJlbnQoY29uc3Qg
UU1vZGVsSW5kZXggJmluZGV4KSBjb25zdDsKLSAgICBpbnQgICAgICAgICAgICAgcm93Q291bnQo
Y29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCA9IFFNb2RlbEluZGV4KCkpIGNvbnN0IHsgcmV0dXJu
IGl0c0l0ZW1zLmNvdW50KCk7IH0KLSAgICBpbnQgICAgICAgICAgICAgY29sdW1uQ291bnQoY29u
c3QgUU1vZGVsSW5kZXggJnBhcmVudCA9IFFNb2RlbEluZGV4KCkpIGNvbnN0IHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgICAgICAgICAgICAgcm93Q291bnQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVu
dCA9IFFNb2RlbEluZGV4KCkpIGNvbnN0IHsgUV9VTlVTRUQocGFyZW50KTsgcmV0dXJuIGl0c0l0
ZW1zLmNvdW50KCk7IH0KKyAgICBpbnQgICAgICAgICAgICAgY29sdW1uQ291bnQoY29uc3QgUU1v
ZGVsSW5kZXggJnBhcmVudCA9IFFNb2RlbEluZGV4KCkpIGNvbnN0IHsgUV9VTlVTRUQocGFyZW50
KTsgcmV0dXJuIDE7IH0KICAgICB2b2lkICAgICAgICAgICAgY2xlYXIoKTsKICAgICB2b2lkICAg
ICAgICAgICAgc2hvd0ZvbnRzKGNvbnN0IFFNb2RlbEluZGV4TGlzdCAmZm9udCk7CiAKSW5kZXg6
IHdvcmtzcGFjZS9rY29udHJvbC9rZm9udGluc3Qva2NtZm9udGluc3QvR3JvdXBMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB3b3Jrc3BhY2Uva2NvbnRyb2wva2ZvbnRpbnN0L2tjbWZvbnRpbnN0L0dy
b3VwTGlzdC5jcHAJKHJldmlzaW9uIDExMzI1NzApCisrKyB3b3Jrc3BhY2Uva2NvbnRyb2wva2Zv
bnRpbnN0L2tjbWZvbnRpbnN0L0dyb3VwTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3Miw2
ICs5NzIsNyBAQAogICAgICAgICBkcyA+PiBmYW1pbGllczsKICAgICAgICAgLy8gQXJlIHdlIG12
b2VpbmcvY29weWluZywgcmVtb3ZpbmcgYSBmb250IGZyb20gdGhlIGN1cnJlbnQgZ3JvdXA/CiAg
ICAgICAgIGlmKHRvLmlzVmFsaWQoKSAmJiBmcm9tLmlzVmFsaWQoKSkKKyAgICAgICAgewogICAg
ICAgICAgICAgaWYoICgoc3RhdGljX2Nhc3Q8Q0dyb3VwTGlzdEl0ZW0gKj4oZnJvbS5pbnRlcm5h
bFBvaW50ZXIoKSkpLT5pc1N5c3RlbSgpICYmCiAgICAgICAgICAgICAgICAgIChzdGF0aWNfY2Fz
dDxDR3JvdXBMaXN0SXRlbSAqPih0by5pbnRlcm5hbFBvaW50ZXIoKSkpLT5pc1BlcnNvbmFsKCkp
IHx8CiAgICAgICAgICAgICAgICAgKChzdGF0aWNfY2FzdDxDR3JvdXBMaXN0SXRlbSAqPihmcm9t
LmludGVybmFsUG9pbnRlcigpKSktPmlzUGVyc29uYWwoKSAmJgpAQCAtOTgyLDcgKzk4Myw4IEBA
CiAgICAgICAgICAgICAgICAgZW1pdCByZW1vdmVGYW1pbGllcyhmcm9tLCBmYW1pbGllcyk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZW1pdCBhZGRGYW1pbGllcyh0bywgZmFt
aWxpZXMpOwotCisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmKGlzVW5jbGFzc2lmaWVk
KCkpCiAgICAgICAgICAgICBlbWl0IHVuY2xhc3NpZmllZENoYW5nZWQoKTsKICAgICB9CkluZGV4
OiB3b3Jrc3BhY2Uva2NvbnRyb2wva2ZvbnRpbnN0L2tjbWZvbnRpbnN0L0R1cGxpY2F0ZXNEaWFs
b2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9rY29udHJvbC9rZm9udGluc3Qva2NtZm9u
dGluc3QvRHVwbGljYXRlc0RpYWxvZy5jcHAJKHJldmlzaW9uIDExMzI1NzApCisrKyB3b3Jrc3Bh
Y2Uva2NvbnRyb2wva2ZvbnRpbnN0L2tjbWZvbnRpbnN0L0R1cGxpY2F0ZXNEaWFsb2cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgUVRyZWVXaWRnZXRJdGVtICppdGVtPTBMOwotICAgICAgICAgICAgZm9yKGludCBpPTA7
IGl0ZW09aXRzVmlldy0+dG9wTGV2ZWxJdGVtKGkpOyArK2kpCisgICAgICAgICAgICBmb3IoaW50
IGk9MDsgKGl0ZW09aXRzVmlldy0+dG9wTGV2ZWxJdGVtKGkpKSAhPSBOVUxMOyArK2kpCiAgICAg
ICAgICAgICAgICAgaXRlbS0+c2V0RXhwYW5kZWQodHJ1ZSk7CiAKICAgICAgICAgICAgIGl0c1Zp
ZXctPnNldFNvcnRpbmdFbmFibGVkKHRydWUpOwpAQCAtNjI1LDExICs2MjUsMTMgQEAKICAgICAg
ICAgZm9yZWFjaChpdGVtLCBpdGVtcykKICAgICAgICAgewogICAgICAgICAgICAgaWYoaXRlbS0+
cGFyZW50KCkgJiYgaXRlbS0+aXNTZWxlY3RlZCgpKQorICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGlmKGlzTWFya2VkKGl0ZW0pKQogICAgICAgICAgICAgICAgICAgICBoYXZlTWFrZWQ9
dHJ1ZTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGhhdmVVbm1h
cmtlZD10cnVlOwotCisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
KGhhdmVVbm1hcmtlZCAmJiBoYXZlTWFrZWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKSW5k
ZXg6IHdvcmtzcGFjZS9rY29udHJvbC9rZm9udGluc3QvZGJ1cy9Gb250SW5zdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gd29ya3NwYWNlL2tjb250cm9sL2tmb250aW5zdC9kYnVzL0ZvbnRJbnN0LmNwcAko
cmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtzcGFjZS9rY29udHJvbC9rZm9udGluc3QvZGJ1cy9G
b250SW5zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNSw2ICs1MDUsNyBAQAogICAgICAgICB0
aGVGb2xkZXJzW0ZPTERFUl9VU0VSXS5jb25maWd1cmUoKTsKIAogICAgIGlmKHN5c01vZGlmaWVk
KQorICAgIHsKICAgICAgICAgaWYoaXNTeXN0ZW0pCiAgICAgICAgICAgICB0aGVGb2xkZXJzW0ZP
TERFUl9TWVNdLmNvbmZpZ3VyZSgpOwogICAgICAgICBlbHNlCkBAIC01MTQsNyArNTE1LDggQEAK
ICAgICAgICAgICAgIHBlcmZvcm1BY3Rpb24oYXJncyk7CiAgICAgICAgICAgICB0aGVGb2xkZXJz
W0ZPTERFUl9TWVNdLmNsZWFyTW9kaWZpZWQoKTsKICAgICAgICAgfQotCisgICAgfQorICAgIAog
ICAgIGl0c0Nvbm5lY3Rpb25zVGltZXItPnN0YXJ0KGNvbnN0Q29ubmVjdGlvbnNUaW1lb3V0KTsK
ICAgICBpdHNGb250TGlzdFRpbWVyLT5zdGFydChjb25zdEZvbnRMaXN0VGltZW91dCk7CiAKQEAg
LTczNiwxMCArNzM4LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiBNaXNjOjpoaWRlKE1pc2M6OmdldEZpbGUoKmFpdCkpKTsKIAogICAgICAgICAgICAg
ICAgICAgICBpZih0byE9KmFpdCkKKyAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYoKGluU3lzdGVtICYmICFpc1N5c3RlbSkgfHwgcmVuYW1lRm9udEZpbGUo
KmFpdCwgdG8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVkQXNzb2NbKmFpdF09
dG87CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0PUtJTzo6RVJSX1dSSVRFX0FDQ0VTU19ERU5JRUQ7CisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBl
bHNlCkBAIC04NTUsNiArODU5LDcgQEAKICAgICBkZWNvbXBvc2UoZm9udCwgZmFtaWx5LCBzdHls
ZSk7CiAKICAgICBpZighZmluZEZvbnRSZWFsKGZhbWlseSwgc3R5bGUsIGZvbGRlciwgZmFtLCBz
dCkpCisgICAgewogICAgICAgICBpZih1cGRhdGVMaXN0KQogICAgICAgICB7CiAgICAgICAgICAg
ICAvLyBOb3QgZm91bmQsIHNvIHJlZnJlc2ggZm9udCBsaXN0IGFuZCB0cnkgYWdhaW4uLi4KQEAg
LTg2Myw3ICs4NjgsOCBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQorICAgIH0KKyAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODg5
LDYgKzg5NSw3IEBACiB7CiAgICAgS0ZJX0RCVUc7CiAgICAgaWYoIWZpbmRGb250UmVhbChmYW1p
bHksIHN0eWxlLCBmb2xkZXIsIGZhbSwgc3QpKQorICAgIHsKICAgICAgICAgaWYodXBkYXRlTGlz
dCkKICAgICAgICAgewogICAgICAgICAgICAgLy8gTm90IGZvdW5kLCBzbyByZWZyZXNoIGZvbnQg
bGlzdCBhbmQgdHJ5IGFnYWluLi4uCkBAIC04OTcsNiArOTA0LDcgQEAKICAgICAgICAgfQogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC05MTgsNyArOTI2LDkgQEAKICAgICAgICAgICAgIHJldHVybiBLSU86OkVS
Ul9DT1VMRF9OT1RfQVVUSEVOVElDQVRFOwogICAgICAgICBjYXNlIEtBdXRoOjpBY3Rpb25SZXBs
eTo6SGVscGVyRXJyb3I6CiAgICAgICAgICAgICBLRklfREJVRyA8PCAiSGVscGVyIGZhaWxlZCAt
IGVycm9yIGNvZGU6IiA8PCByZXBseS5lcnJvckNvZGUoKTsKLSAgICAgICAgICAgIHJldHVybiAo
aW50KXJlcGx5LmVycm9yQ29kZSgpOworICAgICAgICAgICAgcmV0dXJuIChpbnQpcmVwbHkuZXJy
b3JDb2RlKCk7ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgS0F1dGg6OkFjdGlvblJlcGx5OjpT
dWNjZXNzOgorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAogICAgIEtGSV9EQlVHIDw8
ICJTdWNjZXNzISI7CkluZGV4OiB3b3Jrc3BhY2Uva2NvbnRyb2wvaW5wdXQveGN1cnNvci90aGVt
ZW1vZGVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3b3Jrc3BhY2Uva2NvbnRyb2wvaW5wdXQveGN1cnNv
ci90aGVtZW1vZGVsLmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtzcGFjZS9rY29udHJv
bC9pbnB1dC94Y3Vyc29yL3RoZW1lbW9kZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNyAr
MzE0LDcgQEAKICAgICAgICAgYm9vbCBmb3VuZEN1cnNvclRoZW1lID0gZmFsc2U7CiAKICAgICAg
ICAgZm9yZWFjaCAoY29uc3QgUVN0cmluZyAmbmFtZSwgdGhlbWUtPmluaGVyaXRzKCkpCi0gICAg
ICAgICAgICBpZiAoZm91bmRDdXJzb3JUaGVtZSA9IGlzQ3Vyc29yVGhlbWUobmFtZSkpCisgICAg
ICAgICAgICBpZiAoKGZvdW5kQ3Vyc29yVGhlbWUgPSBpc0N1cnNvclRoZW1lKG5hbWUpKSkKICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAoIWZvdW5kQ3Vyc29yVGhlbWUpIHsK
SW5kZXg6IHdvcmtzcGFjZS9rY29udHJvbC9yYW5kci9rdGltZXJkaWFsb2cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHdvcmtzcGFjZS9rY29udHJvbC9yYW5kci9rdGltZXJkaWFsb2cuY3BwCShyZXZpc2lv
biAxMTMyNTcwKQorKysgd29ya3NwYWNlL2tjb250cm9sL3JhbmRyL2t0aW1lcmRpYWxvZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNiw1ICsyMTYsOCBAQAogICAgICAgICBjYXNlIE5vRGVmYXVs
dDoKICAgICAgICAgICAgIHNsb3RCdXR0b25DbGlja2VkKEtEaWFsb2c6Ok5vRGVmYXVsdCk7CiAg
ICAgICAgICAgICBicmVhazsgICAgIAorICAgICAgICBjYXNlIFJlc2V0OgorICAgICAgICAgICAg
c2xvdEJ1dHRvbkNsaWNrZWQoS0RpYWxvZzo6RGVmYXVsdCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICB9CiB9CkluZGV4OiB3b3Jrc3BhY2Uva2NtaW5pdC9tYWluLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB3b3Jrc3BhY2Uva2NtaW5pdC9tYWluLmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtz
cGFjZS9rY21pbml0L21haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCwxMCBAQAog
ICBpZiggcmVhZHlbIDEgXSA9PSAtMSApCiAgICAgcmV0dXJuOwogICBjaGFyIGMgPSAwOwotICB3
cml0ZSggcmVhZHlbIDEgXSwgJmMsIDEgKTsKKyAgaWYgKDEgIT0gd3JpdGUoIHJlYWR5WyAxIF0s
ICZjLCAxICkpCisgIHsKKyAgICAgIC8vIElnbm9yZTogd3JpdGUgZmFpbGVkCisgIH0KICAgY2xv
c2UoIHJlYWR5WyAxIF0gKTsKICAgcmVhZHlbIDEgXSA9IC0xOwogfQpAQCAtNjMsNyArNjYsMTAg
QEAKIHsKICAgY2hhciBjID0gMTsKICAgY2xvc2UoIHJlYWR5WyAxIF0gKTsKLSAgcmVhZCggcmVh
ZHlbIDAgXSwgJmMsIDEgKTsKKyAgaWYgKDEgIT0gcmVhZCggcmVhZHlbIDAgXSwgJmMsIDEgKSkK
KyAgeworICAgICAgLy8gSWdub3JlOiByZWFkIGZhaWxlZAorICB9CiAgIGNsb3NlKCByZWFkeVsg
MCBdICk7CiB9CiAKQEAgLTI0NSw3ICsyNTEsMTAgQEAKICAgLy8ga2RlaW5pdCB3YWl0cyBmb3Ig
a2NtaW5pdCB0byBmaW5pc2gsIGJ1dCBkdXJpbmcgS0RFIHN0YXJ0dXAKICAgLy8gb25seSBpbXBv
cnRhbnQga2NtJ3MgYXJlIHN0YXJ0ZWQgdmVyeSBlYXJseSBpbiB0aGUgbG9naW4gcHJvY2VzcywK
ICAgLy8gdGhlIHJlc3QgaXMgZGVsYXllZCwgc28gZm9yayBhbmQgbWFrZSBwYXJlbnQgcmV0dXJu
IGFmdGVyIHRoZSBpbml0aWFsIHBoYXNlCi0gIHBpcGUoIHJlYWR5ICk7CisgIGlmICgtMSA9PSBw
aXBlKCByZWFkeSApKQorICB7CisgICAgICAvLyBJZ25vcmU6IHBpcGUgZmFpbGVkCisgIH0KICAg
aWYoIGZvcmsoKSAhPSAwICkKICAgewogICAgICAgd2FpdEZvclJlYWR5KCk7CkluZGV4OiB3b3Jr
c3BhY2UvUG9saWN5S2l0LWtkZS9tYW5hZ2VyL3Byb2Nlc3N3YXRjaGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB3b3Jrc3BhY2UvUG9saWN5S2l0LWtkZS9tYW5hZ2VyL3Byb2Nlc3N3YXRjaGVyLmNwcAko
cmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtzcGFjZS9Qb2xpY3lLaXQta2RlL21hbmFnZXIvcHJv
Y2Vzc3dhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCwxMCBAQAogI2lmZGVm
IFFfT1NfSVJJWAogICAgIDo6c29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCwgcGlw
ZSk7CiAjZWxzZQotICAgIDo6cGlwZShkZWF0aFBpcGUpOworICAgIGlmICgtMSA9PSA6OnBpcGUo
ZGVhdGhQaXBlKSkKKyAgICB7CisgICAgICAgIC8vIElnbm9yZTogcGlwZSBmYWlsZWQKKyAgICB9
CiAjZW5kaWYKICAgICA6OmZjbnRsKGRlYXRoUGlwZVswXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7
CiAgICAgOjpmY250bChkZWF0aFBpcGVbMV0sIEZfU0VURkQsIEZEX0NMT0VYRUMpOwpAQCAtMTQy
LDcgKzE0NSwxMCBAQAogICAgIC8vIGluaXRpYWxpemUgdGhlIGRlYWQgY2hpbGQgcGlwZSBhbmQg
bWFrZSBpdCBub24tYmxvY2tpbmcuIGluIHRoZQogICAgIC8vIGV4dHJlbWVseSB1bmxpa2VseSBl
dmVudCB0aGF0IHRoZSBwaXBlIGZpbGxzIHVwLCB3ZSBkbyBub3QgdW5kZXIgYW55CiAgICAgLy8g
Y2lyY3Vtc3RhbmNlcyB3YW50IHRvIGJsb2NrLgotICAgIDo6cGlwZShkZWFkY2hpbGRfcGlwZSk7
CisgICAgaWYgKC0xID09IDo6cGlwZShkZWFkY2hpbGRfcGlwZSkpCisgICAgeworICAgICAgICAv
LyBJZ25vcmU6IHBpcGUgZmFpbGVkCisgICAgfQogICAgIDo6ZmNudGwoZGVhZGNoaWxkX3BpcGVb
MF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpOwogICAgIDo6ZmNudGwoZGVhZGNoaWxkX3BpcGVbMV0s
IEZfU0VURkQsIEZEX0NMT0VYRUMpOwogICAgIDo6ZmNudGwoZGVhZGNoaWxkX3BpcGVbMF0sIEZf
U0VURkwsCkluZGV4OiB3b3Jrc3BhY2Uvc29saWQvbmV0d29ya21hbmFnZXItMC43L3dpcmVsZXNz
bmV0d29ya2ludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd29ya3NwYWNlL3NvbGlkL25ldHdv
cmttYW5hZ2VyLTAuNy93aXJlbGVzc25ldHdvcmtpbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAxMTMy
NTcwKQorKysgd29ya3NwYWNlL3NvbGlkL25ldHdvcmttYW5hZ2VyLTAuNy93aXJlbGVzc25ldHdv
cmtpbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAKIAogU29s
aWQ6OkNvbnRyb2w6OldpcmVsZXNzTmV0d29ya0ludGVyZmFjZTo6T3BlcmF0aW9uTW9kZSBOTVdp
cmVsZXNzTmV0d29ya0ludGVyZmFjZTo6Y29udmVydE9wZXJhdGlvbk1vZGUodWludCB0aGVpck1v
ZGUpCiB7Ci0gICAgU29saWQ6OkNvbnRyb2w6OldpcmVsZXNzTmV0d29ya0ludGVyZmFjZTo6T3Bl
cmF0aW9uTW9kZSBvdXJNb2RlOworICAgIFNvbGlkOjpDb250cm9sOjpXaXJlbGVzc05ldHdvcmtJ
bnRlcmZhY2U6Ok9wZXJhdGlvbk1vZGUgb3VyTW9kZSA9IFNvbGlkOjpDb250cm9sOjpXaXJlbGVz
c05ldHdvcmtJbnRlcmZhY2U6OlVuYXNzb2NpYXRlZDsKICAgICBzd2l0Y2ggKCB0aGVpck1vZGUg
KSB7CiAgICAgICAgIGNhc2UgTk1fODAyXzExX01PREVfVU5LTk9XTjoKICAgICAgICAgICAgIG91
ck1vZGUgPSBTb2xpZDo6Q29udHJvbDo6V2lyZWxlc3NOZXR3b3JrSW50ZXJmYWNlOjpVbmFzc29j
aWF0ZWQ7CkluZGV4OiB3b3Jrc3BhY2Uvc29saWQvbmV0d29ya21hbmFnZXItMC43L21hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9zb2xpZC9uZXR3b3JrbWFuYWdlci0wLjcvbWFu
YWdlci5jcHAJKHJldmlzaW9uIDExMzI1NzApCisrKyB3b3Jrc3BhY2Uvc29saWQvbmV0d29ya21h
bmFnZXItMC43L21hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBACiAK
IE5NTmV0d29ya01hbmFnZXI6Ok5NTmV0d29ya01hbmFnZXIoUU9iamVjdCAqIHBhcmVudCwgY29u
c3QgUVZhcmlhbnRMaXN0ICYpIAogeworICAgIFFfVU5VU0VEKHBhcmVudCk7CisgICAgCiAgICAg
cURCdXNSZWdpc3Rlck1ldGFUeXBlPFFMaXN0PFFEQnVzT2JqZWN0UGF0aD4gPigpOwogICAgIGRf
cHRyID0gbmV3IE5NTmV0d29ya01hbmFnZXJQcml2YXRlOwogICAgIFFfRChOTU5ldHdvcmtNYW5h
Z2VyKTsKSW5kZXg6IHdvcmtzcGFjZS9zb2xpZC9uZXR3b3JrbWFuYWdlci0wLjcvbm1wcm9wZXJ0
eWhlbHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gd29ya3NwYWNlL3NvbGlkL25ldHdvcmttYW5hZ2Vy
LTAuNy9ubXByb3BlcnR5aGVscGVyLmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtzcGFj
ZS9zb2xpZC9uZXR3b3JrbWFuYWdlci0wLjcvbm1wcm9wZXJ0eWhlbHBlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDkgQEAKIAogdm9pZCBHZW5lcmljRGVzZXJpYWxpemVyOjpkZXNl
cmlhbGl6ZShjb25zdCBRU3RyaW5nICYgcHJvcGVydHlOYW1lLCBjb25zdCBRVmFyaWFudCAmIHZh
bHVlLCBRT2JqZWN0ICogcmVjaXBpZW50KQogeworICAgIFFfVU5VU0VEKHByb3BlcnR5TmFtZSk7
CisgICAgUV9VTlVTRUQodmFsdWUpOworICAgIFFfVU5VU0VEKHJlY2lwaWVudCk7CiAgICAgLyoK
ICAgICByZWNpcGllbnQtPnNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAg
ICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHJlY2lwaWVudCwgc2lnbmFsTmFtZSk7CkluZGV4
OiB3b3Jrc3BhY2Uva3J1bm5lci9sb2NrL2xvY2twcm9jZXNzLmNjCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdv
cmtzcGFjZS9rcnVubmVyL2xvY2svbG9ja3Byb2Nlc3MuY2MJKHJldmlzaW9uIDExMzI1NzApCisr
KyB3b3Jrc3BhY2Uva3J1bm5lci9sb2NrL2xvY2twcm9jZXNzLmNjCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjgsMTMgKzIyOCwxOSBAQAogc3RhdGljIHZvaWQgc2lndGVybV9oYW5kbGVyKGludCkKIHsK
ICAgICBjaGFyIHRtcCA9ICdUJzsKLSAgICA6OndyaXRlKCBzaWduYWxfcGlwZVsxXSwgJnRtcCwg
MSk7CisgICAgaWYgKDo6d3JpdGUoIHNpZ25hbF9waXBlWzFdLCAmdG1wLCAxKSAhPSAxKQorICAg
IHsKKyAgICAgICAgLy8gSWdub3JlOiB3cml0ZSBmYWlsZWQKKyAgICB9CiB9CiAKIHN0YXRpYyB2
b2lkIHNpZ2h1cF9oYW5kbGVyKGludCkKIHsKICAgICBjaGFyIHRtcCA9ICdIJzsKLSAgICA6Ondy
aXRlKCBzaWduYWxfcGlwZVsxXSwgJnRtcCwgMSk7CisgICAgaWYgKDo6d3JpdGUoIHNpZ25hbF9w
aXBlWzFdLCAmdG1wLCAxKSAhPSAxKQorICAgIHsKKyAgICAgICAgLy8gSWdub3JlOiB3cml0ZSBm
YWlsZWQKKyAgICB9CiB9CiAKIHZvaWQgTG9ja1Byb2Nlc3M6OnRpbWVyRXZlbnQoUVRpbWVyRXZl
bnQgKmV2KQpAQCAtMjY0LDcgKzI3MCwxMSBAQAogICAgIGFjdC5zYV9oYW5kbGVyPSBzaWdodXBf
aGFuZGxlcjsKICAgICBzaWdhY3Rpb24oU0lHSFVQLCAmYWN0LCAwTCk7CiAKLSAgICBwaXBlKHNp
Z25hbF9waXBlKTsKKyAgICBpZiAoLTEgPT0gcGlwZShzaWduYWxfcGlwZSkpCisgICAgeworICAg
ICAgICAvLyBJZ25vcmU6IHBpcGUgZmFpbGVkCisgICAgfQorICAgIAogICAgIFFTb2NrZXROb3Rp
Zmllciogbm90aWYgPSBuZXcgUVNvY2tldE5vdGlmaWVyKHNpZ25hbF9waXBlWzBdLCBRU29ja2V0
Tm90aWZpZXI6OlJlYWQsIHRoaXMpOwogICAgIGNvbm5lY3QoIG5vdGlmLCBTSUdOQUwoYWN0aXZh
dGVkKGludCkpLCBTTE9UKHNpZ25hbFBpcGVTaWduYWwoKSkpOwogfQpAQCAtMjczLDcgKzI4Mywx
MCBAQAogdm9pZCBMb2NrUHJvY2Vzczo6c2lnbmFsUGlwZVNpZ25hbCgpCiB7CiAgICAgY2hhciB0
bXA7Ci0gICAgOjpyZWFkKCBzaWduYWxfcGlwZVswXSwgJnRtcCwgMSk7CisgICAgaWYgKDo6cmVh
ZCggc2lnbmFsX3BpcGVbMF0sICZ0bXAsIDEpICE9IDEpCisgICAgeworICAgICAgICAvLyBJZ25v
cmU6IHJlYWQgZmFpbGVkCisgICAgfQogICAgIGlmKCB0bXAgPT0gJ1QnICkKICAgICAgICAgcXVp
dFNhdmVyKCk7CiAgICAgZWxzZSBpZiggdG1wID09ICdIJyApIHsKSW5kZXg6IHdvcmtzcGFjZS9s
aWJzL2tlcGhhbC9zZXJ2aWNlL3hyYW5kcm91dHB1dHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdvcmtz
cGFjZS9saWJzL2tlcGhhbC9zZXJ2aWNlL3hyYW5kcm91dHB1dHMuY3BwCShyZXZpc2lvbiAxMTMy
NTcwKQorKysgd29ya3NwYWNlL2xpYnMva2VwaGFsL3NlcnZpY2UveHJhbmRyb3V0cHV0cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsOSBAQAogICAgIH0KIAogICAgIHZvaWQgWFJh
bmRST3V0cHV0OjpvdXRwdXRDaGFuZ2VkKFJST3V0cHV0IGlkLCBpbnQgY2hhbmdlcykgeworICAg
ICAgICBRX1VOVVNFRChpZCk7CisgICAgICAgIFFfVU5VU0VEKGNoYW5nZXMpOworICAgICAgICAK
ICAgICAgICAgUV9BU1NFUlQoaWQgPT0gbV9ycklkKTsKICAgICAgICAga0RlYnVnKCkgPDwgaXND
b25uZWN0ZWQoKSA8PCBpc0FjdGl2YXRlZCgpIDw8IGdlb20oKTsKICAgICAgICAgaWYgKGlzQ29u
bmVjdGVkKCkgIT0gbV9wcmV2aW91c0Nvbm5lY3RlZCkgewpJbmRleDogd29ya3NwYWNlL2xpYnMv
c29saWQvY29udHJvbC9uZXR3b3JrY2RtYWludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd29y
a3NwYWNlL2xpYnMvc29saWQvY29udHJvbC9uZXR3b3JrY2RtYWludGVyZmFjZS5jcHAJKHJldmlz
aW9uIDExMzI1NzApCisrKyB3b3Jrc3BhY2UvbGlicy9zb2xpZC9jb250cm9sL25ldHdvcmtjZG1h
aW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogCiB2b2lkIFNv
bGlkOjpDb250cm9sOjpDZG1hTmV0d29ya0ludGVyZmFjZTo6bWFrZUNvbm5lY3Rpb25zKFFPYmpl
Y3QgKiBzb3VyY2UpCiB7CisgICAgUV9VTlVTRUQoc291cmNlKTsKIH0KIAogdm9pZCBTb2xpZDo6
Q29udHJvbDo6Q2RtYU5ldHdvcmtJbnRlcmZhY2VQcml2YXRlOjpzZXRCYWNrZW5kT2JqZWN0KFFP
YmplY3QgKm9iamVjdCkKSW5kZXg6IHdvcmtzcGFjZS9saWJzL3NvbGlkL2NvbnRyb2wvbmV0d29y
a2dzbWludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd29ya3NwYWNlL2xpYnMvc29saWQvY29u
dHJvbC9uZXR3b3JrZ3NtaW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtz
cGFjZS9saWJzL3NvbGlkL2NvbnRyb2wvbmV0d29ya2dzbWludGVyZmFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDYgKzY0LDcgQEAKIAogdm9pZCBTb2xpZDo6Q29udHJvbDo6R3NtTmV0d29y
a0ludGVyZmFjZTo6bWFrZUNvbm5lY3Rpb25zKFFPYmplY3QgKiBzb3VyY2UpCiB7CisgICAgUV9V
TlVTRUQoc291cmNlKTsKIH0KIAogdm9pZCBTb2xpZDo6Q29udHJvbDo6R3NtTmV0d29ya0ludGVy
ZmFjZVByaXZhdGU6OnNldEJhY2tlbmRPYmplY3QoUU9iamVjdCAqb2JqZWN0KQpJbmRleDogd29y
a3NwYWNlL2xpYnMva3N5c2d1YXJkL3Byb2Nlc3Njb3JlL3Byb2Nlc3Nlc19yZW1vdGVfcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gd29ya3NwYWNlL2xpYnMva3N5c2d1YXJkL3Byb2Nlc3Njb3JlL3Byb2Nl
c3Nlc19yZW1vdGVfcC5jcHAJKHJldmlzaW9uIDExMzI1NzApCisrKyB3b3Jrc3BhY2UvbGlicy9r
c3lzZ3VhcmQvcHJvY2Vzc2NvcmUvcHJvY2Vzc2VzX3JlbW90ZV9wLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgxLDYgKzE4MSw5IEBACiB9CiAKIGJvb2wgUHJvY2Vzc2VzUmVtb3RlOjpzZXRTY2hl
ZHVsZXIobG9uZyBwaWQsIGludCBwcmlvcml0eUNsYXNzLCBpbnQgcHJpb3JpdHkpIHsKKyAgICBR
X1VOVVNFRChwaWQpOworICAgIFFfVU5VU0VEKHByaW9yaXR5Q2xhc3MpOworICAgIFFfVU5VU0VE
KHByaW9yaXR5KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IHdvcmtzcGFjZS9rc3Bs
YXNoL2tzcGxhc2h4L3FpbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd29ya3NwYWNlL2tzcGxhc2gv
a3NwbGFzaHgvcWltYWdlLmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtzcGFjZS9rc3Bs
YXNoL2tzcGxhc2h4L3FpbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNzIsNyArNjA3Miw3
IEBACiAgICAgaWYgKCBoYXZlU2FtZVBhbGV0dGUoKmRzdCwqc3JjKQogCSAmJiAoIGRzdC0+ZGVw
dGgoKSAhPSAxIHx8CiAJICAgICAgISggKGR4JjcpIHx8IChzeCY3KSB8fAotCQkgKChzdyY3KSAm
JiAoc3grc3cgPCBzcmMtPndpZHRoKCkpIHx8CisJCSAoKChzdyY3KSAmJiAoc3grc3cgPCBzcmMt
PndpZHRoKCkpKSB8fAogCQkgIChkeCtzdyA8IGRzdC0+d2lkdGgoKSkgKSApICkgKQogCXsKIAkg
ICAgLy8gZWFzeSB0byBjb3B5CkBAIC02MDkxLDcgKzYwOTEsNyBAQAogICAgIC8vIE5vdyBhc3N1
bWUgcGFsZXR0ZSBjYW4gYmUgaWdub3JlZAogCiAgICAgaWYgKCBkc3QtPmRlcHRoKCkgIT0gc3Jj
LT5kZXB0aCgpICkgewotCWlmICggc3cgPT0gc3JjLT53aWR0aCgpICYmIHNoID09IHNyYy0+aGVp
Z2h0KCkgfHwgZHN0LT5kZXB0aCgpPT0zMiApIHsKKwlpZiAoIChzdyA9PSBzcmMtPndpZHRoKCkg
JiYgc2ggPT0gc3JjLT5oZWlnaHQoKSkgfHwgZHN0LT5kZXB0aCgpPT0zMiApIHsKIAkgICAgUUlt
YWdlIHNyY2NvbnYgPSBzcmMtPmNvbnZlcnREZXB0aCggZHN0LT5kZXB0aCgpLCBjb252ZXJzaW9u
X2ZsYWdzICk7CiAJICAgIGJpdEJsdCggZHN0LCBkeCwgZHksICZzcmNjb252LCBzeCwgc3ksIHN3
LCBzaCwgY29udmVyc2lvbl9mbGFncyApOwogCX0gZWxzZSB7CkluZGV4OiB3b3Jrc3BhY2Uva3Nw
bGFzaC9rc3BsYXNoeC9waXhtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9rc3BsYXNo
L2tzcGxhc2h4L3BpeG1hcC5jcHAJKHJldmlzaW9uIDExMzI1NzApCisrKyB3b3Jrc3BhY2Uva3Nw
bGFzaC9rc3BsYXNoeC9waXhtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBA
CiAgICAgaW50IGk7CiAgICAgdW5zaWduZWQgbG9uZyBsYjsKICAgICBsYiA9IDE7Ci0gICAgZm9y
IChpPTA7ICgodiAmIGxiKSA9PSAwKSAmJiBpPDMyOyAgaSsrLCBsYjw8PTEpOworICAgIGZvciAo
aT0wOyAoKHYgJiBsYikgPT0gMCkgJiYgaTwzMjsgIGkrKywgbGI8PD0xKSA7CiAgICAgcmV0dXJu
IGk9PTMyID8gLTEgOiBpOwogfQogCkluZGV4OiB3b3Jrc3BhY2Uva3NwbGFzaC9rc3BsYXNoeC9z
cGxhc2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9rc3BsYXNoL2tzcGxhc2h4L3NwbGFz
aC5jcHAJKHJldmlzaW9uIDExMzI1NzApCisrKyB3b3Jrc3BhY2Uva3NwbGFzaC9rc3BsYXNoeC9z
cGxhc2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNyArMzE2LDEwIEBACiAgICAgICAgICAg
ICAgZiA8IG1heGY7CiAgICAgICAgICAgICAgKytmICkKICAgICAgICAgICAgIGNsb3NlKCBmICk7
Ci0gICAgICAgIG5pY2UoIDEwICk7CisgICAgICAgIGlmIChuaWNlKCAxMCApID09IC0xKQorICAg
ICAgICB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5pY2UoKSBmYWlsZWQiKTsKKyAg
ICAgICAgfQogICAgICAgICBzbGVlcCggMzAgKTsKICAgICAgICAgY2hhciogYXJnc1sgMjAgXTsK
ICAgICAgICAgYXJnc1sgMCBdID0gY29uc3RfY2FzdDwgY2hhciogPiggImtzcGxhc2h4X3NjYWxl
IiApOwpAQCAtNTY5LDcgKzU3MiwxMCBAQAogICAgICAgICB7IC8vIHdhaXQgZm9yIHBhaW50IGJl
aW5nIGZpbmlzaGVkLCBhbmQgdGVsbCBwYXJlbnQgdG8gZXhpdAogICAgICAgICBYU3luYyggcXRf
eGRpc3BsYXkoKSwgRmFsc2UgKTsKICAgICAgICAgY2hhciBidWYgPSAnXDAnOwotICAgICAgICB3
cml0ZSggcGFyZW50X3BpcGUsICZidWYsIDEgKTsKKyAgICAgICAgaWYgKHdyaXRlKCBwYXJlbnRf
cGlwZSwgJmJ1ZiwgMSApICE9IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiVW5hYmxlIHRvIHNpZ25hbCBwYXJlbnQgdG8gZXhpdC4iKTsgICAKKyAgICAgICAgfQog
ICAgICAgICBjbG9zZSggcGFyZW50X3BpcGUgKTsKICAgICAgICAgcGFyZW50X3BpcGUgPSAtMTsK
ICAgICAgICAgfQpJbmRleDogd29ya3NwYWNlL2t3aW4va2Nta3dpbi9rd2lucnVsZXMvcnVsZXN3
aWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9rd2luL2tjbWt3aW4va3dpbnJ1bGVz
L3J1bGVzd2lkZ2V0LmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtzcGFjZS9rd2luL2tj
bWt3aW4va3dpbnJ1bGVzL3J1bGVzd2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDE2
ICs1MDIsMTYgQEAKICAgICAgICAgcnVsZXMtPnR5cGVzID0gTkVUOjpBbGxUeXBlc01hc2s7CiAg
ICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgIHJ1bGVzLT50eXBlcyB8PSB0eXBlcy0+aXRlbSgw
KS0+aXNTZWxlY3RlZCgpID8gTkVUOjpOb3JtYWxNYXNrIDogMFU7Ci0gICAgICAgIHJ1bGVzLT50
eXBlcyB8PSB0eXBlcy0+aXRlbSgxKS0+aXNTZWxlY3RlZCgpID8gTkVUOjpEaWFsb2dNYXNrIDog
MFU7Ci0gICAgICAgIHJ1bGVzLT50eXBlcyB8PSB0eXBlcy0+aXRlbSgyKS0+aXNTZWxlY3RlZCgp
ID8gTkVUOjpVdGlsaXR5TWFzayA6IDBVOwotICAgICAgICBydWxlcy0+dHlwZXMgfD0gdHlwZXMt
Pml0ZW0oMyktPmlzU2VsZWN0ZWQoKSA/IE5FVDo6RG9ja01hc2sgOiAwVTsKLSAgICAgICAgcnVs
ZXMtPnR5cGVzIHw9IHR5cGVzLT5pdGVtKDQpLT5pc1NlbGVjdGVkKCkgPyBORVQ6OlRvb2xiYXJN
YXNrIDogMFU7Ci0gICAgICAgIHJ1bGVzLT50eXBlcyB8PSB0eXBlcy0+aXRlbSg1KS0+aXNTZWxl
Y3RlZCgpID8gTkVUOjpNZW51TWFzayA6IDBVOwotICAgICAgICBydWxlcy0+dHlwZXMgfD0gdHlw
ZXMtPml0ZW0oNiktPmlzU2VsZWN0ZWQoKSA/IE5FVDo6U3BsYXNoTWFzayA6IDBVOwotICAgICAg
ICBydWxlcy0+dHlwZXMgfD0gdHlwZXMtPml0ZW0oNyktPmlzU2VsZWN0ZWQoKSA/IE5FVDo6RGVz
a3RvcE1hc2sgOiAwVTsKLSAgICAgICAgcnVsZXMtPnR5cGVzIHw9IHR5cGVzLT5pdGVtKDgpLT5p
c1NlbGVjdGVkKCkgPyBORVQ6Ok92ZXJyaWRlTWFzayA6IDBVOwotICAgICAgICBydWxlcy0+dHlw
ZXMgfD0gdHlwZXMtPml0ZW0oOSktPmlzU2VsZWN0ZWQoKSA/IE5FVDo6VG9wTWVudU1hc2sgOiAw
VTsKKyAgICAgICAgcnVsZXMtPnR5cGVzIHw9IHR5cGVzLT5pdGVtKDApLT5pc1NlbGVjdGVkKCkg
PyBORVQ6Ok5vcm1hbE1hc2sgOiAoTkVUOjpXaW5kb3dUeXBlTWFzaykwVTsKKyAgICBydWxlcy0+
dHlwZXMgfD0gdHlwZXMtPml0ZW0oMSktPmlzU2VsZWN0ZWQoKSA/IE5FVDo6RGlhbG9nTWFzayA6
IChORVQ6OldpbmRvd1R5cGVNYXNrKTBVOworICAgIHJ1bGVzLT50eXBlcyB8PSB0eXBlcy0+aXRl
bSgyKS0+aXNTZWxlY3RlZCgpID8gTkVUOjpVdGlsaXR5TWFzayA6IChORVQ6OldpbmRvd1R5cGVN
YXNrKTBVOworICAgIHJ1bGVzLT50eXBlcyB8PSB0eXBlcy0+aXRlbSgzKS0+aXNTZWxlY3RlZCgp
ID8gTkVUOjpEb2NrTWFzayA6IChORVQ6OldpbmRvd1R5cGVNYXNrKTBVOworICAgIHJ1bGVzLT50
eXBlcyB8PSB0eXBlcy0+aXRlbSg0KS0+aXNTZWxlY3RlZCgpID8gTkVUOjpUb29sYmFyTWFzayA6
IChORVQ6OldpbmRvd1R5cGVNYXNrKTBVOworICAgIHJ1bGVzLT50eXBlcyB8PSB0eXBlcy0+aXRl
bSg1KS0+aXNTZWxlY3RlZCgpID8gTkVUOjpNZW51TWFzayA6IChORVQ6OldpbmRvd1R5cGVNYXNr
KTBVOworICAgIHJ1bGVzLT50eXBlcyB8PSB0eXBlcy0+aXRlbSg2KS0+aXNTZWxlY3RlZCgpID8g
TkVUOjpTcGxhc2hNYXNrIDogKE5FVDo6V2luZG93VHlwZU1hc2spMFU7CisgICAgcnVsZXMtPnR5
cGVzIHw9IHR5cGVzLT5pdGVtKDcpLT5pc1NlbGVjdGVkKCkgPyBORVQ6OkRlc2t0b3BNYXNrIDog
KE5FVDo6V2luZG93VHlwZU1hc2spMFU7CisgICAgcnVsZXMtPnR5cGVzIHw9IHR5cGVzLT5pdGVt
KDgpLT5pc1NlbGVjdGVkKCkgPyBORVQ6Ok92ZXJyaWRlTWFzayA6IChORVQ6OldpbmRvd1R5cGVN
YXNrKTBVOworICAgIHJ1bGVzLT50eXBlcyB8PSB0eXBlcy0+aXRlbSg5KS0+aXNTZWxlY3RlZCgp
ID8gTkVUOjpUb3BNZW51TWFzayA6IChORVQ6OldpbmRvd1R5cGVNYXNrKTBVOwogICAgICAgICB9
CiAgICAgcnVsZXMtPnRpdGxlID0gdGl0bGUtPnRleHQoKTsKICAgICBydWxlcy0+dGl0bGVtYXRj
aCA9IHN0YXRpY19jYXN0PCBSdWxlczo6U3RyaW5nTWF0Y2ggPiggdGl0bGVfbWF0Y2gtPmN1cnJl
bnRJbmRleCgpKTsKSW5kZXg6IHdvcmtzcGFjZS9rZG0vYmFja2VuZC9jbGllbnQuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB3b3Jrc3BhY2Uva2RtL2JhY2tlbmQvY2xpZW50LmMJKHJldmlzaW9uIDExMzI1NzAp
CisrKyB3b3Jrc3BhY2Uva2RtL2JhY2tlbmQvY2xpZW50LmMJKHdvcmtpbmcgY29weSkKQEAgLTE3
NTcsNyArMTc1NywxMCBAQAogCQlpZiAoaG9tZSAmJiBjaGRpciggaG9tZSApIDwgMCkgewogCQkJ
bG9nRXJyb3IoICJDYW5ub3QgY2hkaXIgdG8gJXMncyBob21lICVzOiAlbVxuIiwgY3VydXNlciwg
aG9tZSApOwogCQkJc2VuZFN0ciggVl9NU0dfRVJSLCAiQ2Fubm90IGVudGVyIGhvbWUgZGlyZWN0
b3J5LiBVc2luZyAvLlxuIiApOwotCQkJY2hkaXIoICIvIiApOworCQkJaWYgKC0xID09IGNoZGly
KCAiLyIgKSkKKwkJCXsKKyAgICAgICAgICAgICAgICAvKiBJZ25vcmVkICovCisgICAgICAgICAg
ICB9CiAJCQl1c2VyRW52aXJvbiA9IHNldEVudiggdXNlckVudmlyb24sICJIT01FIiwgIi8iICk7
CiAJCQlob21lID0gMDsKIAkJfQpAQCAtMjAwNCwxMiArMjAwNywyMiBAQAogCQkJZXhpdCggMCAp
OwogCQlpZiAoIShkYXRhID0gaW5pTG9hZCggZm5hbWUgKSkpIHsKIAkJCXN0YXRpYyBjb25zdCBp
bnQgbTEgPSAtMTsKLQkJCXdyaXRlKCBwZmRbMV0sICZtMSwgc2l6ZW9mKGludCkgKTsKKwkJCWlm
IChzaXplb2YoaW50KSAhPSB3cml0ZSggcGZkWzFdLCAmbTEsIHNpemVvZihpbnQpICkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogSWdub3JlIGVycm9yICovCisgICAgICAgICAg
ICB9CiAJCQlleGl0KCAwICk7CiAJCX0KIAkJbGVuID0gc3RybGVuKCBkYXRhICk7Ci0JCXdyaXRl
KCBwZmRbMV0sICZsZW4sIHNpemVvZihpbnQpICk7Ci0JCXdyaXRlKCBwZmRbMV0sIGRhdGEsIGxl
biArIDEgKTsKKwkJaWYgKHNpemVvZihpbnQpICE9IHdyaXRlKCBwZmRbMV0sICZsZW4sIHNpemVv
ZihpbnQpICkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIElnbm9yZSBlcnJvciAqLworICAg
ICAgICB9CisgICAgICAgIAorCQlpZiAobGVuKzEgIT0gd3JpdGUoIHBmZFsxXSwgZGF0YSwgbGVu
ICsgMSApKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBJZ25vcmUgZXJyb3IgKi8KKyAgICAg
ICAgfQogCQlleGl0KCAwICk7CiAJfQogCWNsb3NlKCBwZmRbMV0gKTsKSW5kZXg6IHdvcmtzcGFj
ZS9rZG0va2Zyb250ZW5kL2tkbWN0bC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9rZG0va2Zy
b250ZW5kL2tkbWN0bC5jCShyZXZpc2lvbiAxMTMyNTcwKQorKysgd29ya3NwYWNlL2tkbS9rZnJv
bnRlbmQva2RtY3RsLmMJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDExIEBACiAJfQogCWlm
IChsZW4gPT0gc2l6ZW9mKGJ1ZikgJiYgYnVmW3NpemVvZihidWYpIC0gMV0gIT0gJ1xuJykKIAkJ
ZnByaW50Ziggc3RkZXJyLCAiV2FybmluZzogcmVwbHkgaXMgdG9vIGxvbmdcbiIgKTsKLQlmd3Jp
dGUoIGJ1ZiwgMSwgbGVuLCBzdGRvdXQgKTsKKwlpZiAoZndyaXRlKCBidWYsIDEsIGxlbiwgc3Rk
b3V0ICkgIT0gbGVuKQorICAgIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW5ub3Qgd3Jp
dGUgYnVmZmVyIHRvIHN0ZG91dC4iKTsKKyAgICB9CisgICAgCiAJaWYgKGxlbiA9PSBzaXplb2Yo
YnVmKSAmJiBidWZbc2l6ZW9mKGJ1ZikgLSAxXSAhPSAnXG4nKQogCQlwdXRzKCAiWy4uLl0iICk7
CiAJcmV0dXJuIDA7CkluZGV4OiB3b3Jrc3BhY2UvcGxhc21hL25ldGJvb2svY29udGFpbm1lbnRz
L3NhbC9pdGVtdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd29ya3NwYWNlL3BsYXNtYS9uZXRib29r
L2NvbnRhaW5tZW50cy9zYWwvaXRlbXZpZXcuY3BwCShyZXZpc2lvbiAxMTMyNTcwKQorKysgd29y
a3NwYWNlL3BsYXNtYS9uZXRib29rL2NvbnRhaW5tZW50cy9zYWwvaXRlbXZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDYgQEAKICAgICAgICAgICAgIG1faXRlbUNvbnRhaW5l
ci0+c2V0Q3VycmVudEl0ZW0oaWNvbik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHdhdGNo
ZWQgPT0gbV9pdGVtQ29udGFpbmVyICYmIGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpHcmFwaGlj
c1NjZW5lUmVzaXplKSB7Ci0gICAgICAgIFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQgKnJlID0g
c3RhdGljX2Nhc3Q8UUdyYXBoaWNzU2NlbmVSZXNpemVFdmVudCAqPihldmVudCk7CiAKICAgICAg
ICAgU2Nyb2xsQmFyRmxhZ3Mgc2Nyb2xsQmFycyA9IE5vU2Nyb2xsQmFyOwogICAgICAgICBpZiAo
bV9pdGVtQ29udGFpbmVyLT5wb3MoKS54KCkgPCAwIHx8IG1faXRlbUNvbnRhaW5lci0+Z2VvbWV0
cnkoKS5yaWdodCgpID4gc2l6ZSgpLndpZHRoKCkpIHsKSW5kZXg6IHdvcmtzcGFjZS9wbGFzbWEv
bmV0Ym9vay9jb250YWlubWVudHMvY29tbW9uL2xpbmVhcmFwcGxldG92ZXJsYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHdvcmtzcGFjZS9wbGFzbWEvbmV0Ym9vay9jb250YWlubWVudHMvY29tbW9uL2xp
bmVhcmFwcGxldG92ZXJsYXkuY3BwCShyZXZpc2lvbiAxMTMyNTcwKQorKysgd29ya3NwYWNlL3Bs
YXNtYS9uZXRib29rL2NvbnRhaW5tZW50cy9jb21tb24vbGluZWFyYXBwbGV0b3ZlcmxheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQAogICAgIGRpc2Nvbm5lY3QobV9hcHBs
ZXQsIFNJR05BTChkZXN0cm95ZWQoKSksIHRoaXMsIFNMT1QoYXBwbGV0RGVzdHJveWVkKCkpKTsK
ICAgICBtX2FwcGxldCA9IDA7CiAKLSAgICBQbGFzbWE6OkFwcGxldCAqb2xkQXBwbGV0OworICAg
IFBsYXNtYTo6QXBwbGV0ICpvbGRBcHBsZXQgPSBOVUxMOwogCiAgICAgLy9GSVhNRTogaXMgdGhl
cmUgYSB3YXkgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGlzIGxpbmVhciBvbmU/IHNjZW5lKClpdGVt
QXQoKSB3b24ndCB3b3JrIGJlY2F1c2UgaXQgd291bGQgYWx3YXlzIGJlID09IHRoaXMKICAgICBm
b3JlYWNoIChQbGFzbWE6OkFwcGxldCAqYXBwbGV0LCBtX2NvbnRhaW5tZW50LT5hcHBsZXRzKCkp
IHsKSW5kZXg6IHdvcmtzcGFjZS9wbGFzbWEvZGVza3RvcC9jb250YWlubWVudHMvZGVza3RvcC9p
dGVtc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9wbGFzbWEvZGVza3RvcC9jb250
YWlubWVudHMvZGVza3RvcC9pdGVtc3BhY2UuY3BwCShyZXZpc2lvbiAxMTMyNTcwKQorKysgd29y
a3NwYWNlL3BsYXNtYS9kZXNrdG9wL2NvbnRhaW5tZW50cy9kZXNrdG9wL2l0ZW1zcGFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2Niw3ICs0NjYsNyBAQAogICAgICAgICAvLyBsaW1pdCBwdXNo
IHRvIG5vdCBwdXNoIHRoZSBpdGVtIGF3YXkgZnJvbSBpdHMgcHJlZmVycmVkIHBvc2l0aW9uCiAg
ICAgICAgIGlmICghKGl0ZW1TcGFjZS0+bV9wb3dlciAmIFB1c2hBd2F5RnJvbVByZWZlcnJlZCkg
JiYgaXRlbS5wdXNoQmFjaykgewogICAgICAgICAgICAgUVJlY3RGIHByZWZlcnJlZEdlb21ldHJ5
ID0gUVJlY3RGKGl0ZW0ucHJlZmVycmVkUG9zaXRpb24sIGl0ZW0ubGFzdEdlb21ldHJ5LnNpemUo
KSk7Ci0gICAgICAgICAgICBxcmVhbCBsaW1pdDsKKyAgICAgICAgICAgIHFyZWFsIGxpbWl0ID0g
MDsKICAgICAgICAgICAgIHN3aXRjaCAoaXRlbVNwYWNlLT5tX2RpcmVjdGlvbikgewogICAgICAg
ICAgICAgICAgIGNhc2UgRGlyTGVmdDoKICAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBvcmln
R2VvbS5sZWZ0KCkgLSBwcmVmZXJyZWRHZW9tZXRyeS5sZWZ0KCk7CkBAIC01MDIsNyArNTAyLDcg
QEAKICAgICAgICAgICAgICAgICBJdGVtU3BhY2VJdGVtICZ0ZXN0SXRlbSA9IHRlc3RHcm91cC5t
X2dyb3VwSXRlbXNbdGVzdEl0ZW1JZF07CiAKICAgICAgICAgICAgICAgICBRUmVjdEYgbmV3bHlU
YWtlblNwYWNlOwotICAgICAgICAgICAgICAgIHFyZWFsIHB1c2g7CisgICAgICAgICAgICAgICAg
cXJlYWwgcHVzaCA9IDA7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtU3BhY2UtPm1fZGly
ZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBEaXJMZWZ0OgogICAgICAgICAgICAgICAg
ICAgICBuZXdseVRha2VuU3BhY2UgPSBRUmVjdEYoZnVsbEdlb20ubGVmdCgpIC0gZ3JvdXAtPm1f
cHVzaEF2YWlsYWJsZSwgZnVsbEdlb20udG9wKCksIGdyb3VwLT5tX3B1c2hBdmFpbGFibGUsIGZ1
bGxHZW9tLmhlaWdodCgpKTsKSW5kZXg6IHdvcmtzcGFjZS9wbGFzbWEvZGVza3RvcC9zaGVsbC9w
YW5lbHZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9wbGFzbWEvZGVza3RvcC9zaGVs
bC9wYW5lbHZpZXcuY3BwCShyZXZpc2lvbiAxMTMyNTcwKQorKysgd29ya3NwYWNlL3BsYXNtYS9k
ZXNrdG9wL3NoZWxsL3BhbmVsdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw2ICsyNDAs
OCBAQAogCiAgICAgdm9pZCBwYWludEV2ZW50KFFQYWludEV2ZW50KiBlKQogICAgIHsKKyAgICAg
ICAgUV9VTlVTRUQoZSk7CisgICAgICAgIAogICAgICAgICBRUGFpbnRlciBwKHRoaXMpOwogICAg
ICAgICAvL3Auc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291
cmNlKTsKICAgICAgICAgbV9zaGFkb3ctPnBhaW50RnJhbWUoJnApOwpJbmRleDogd29ya3NwYWNl
L3BsYXNtYS9kZXNrdG9wL3NoZWxsL3BsYXNtYWFwcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd29ya3Nw
YWNlL3BsYXNtYS9kZXNrdG9wL3NoZWxsL3BsYXNtYWFwcC5jcHAJKHJldmlzaW9uIDExMzI1NzAp
CisrKyB3b3Jrc3BhY2UvcGxhc21hL2Rlc2t0b3Avc2hlbGwvcGxhc21hYXBwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxNSw2ICsxMjE1LDcgQEAKIAogdm9pZCBQbGFzbWFBcHA6OnVwZGF0ZUFj
dGlvbnMoUGxhc21hOjpJbW11dGFiaWxpdHlUeXBlIGltbXV0YWJpbGl0eSkKIHsKKyAgICBRX1VO
VVNFRChpbW11dGFiaWxpdHkpOwogfQogCiB2b2lkIFBsYXNtYUFwcDo6cmVtb3RlUGxhc21vaWRB
ZGRlZChQbGFzbWE6OlBhY2thZ2VNZXRhZGF0YSBtZXRhZGF0YSkKSW5kZXg6IHdvcmtzcGFjZS9w
bGFzbWEvZ2VuZXJpYy9hcHBsZXRzL2ljb24vaWNvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd29ya3Nw
YWNlL3BsYXNtYS9nZW5lcmljL2FwcGxldHMvaWNvbi9pY29uLmNwcAkocmV2aXNpb24gMTEzMjU3
MCkKKysrIHdvcmtzcGFjZS9wbGFzbWEvZ2VuZXJpYy9hcHBsZXRzL2ljb24vaWNvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQAogUVNpemVGIEljb25BcHBsZXQ6OnNpemVI
aW50KFF0OjpTaXplSGludCB3aGljaCwgY29uc3QgUVNpemVGICYgY29uc3RyYWludCkgY29uc3QK
IHsKICAgICBpZiAod2hpY2ggPT0gUXQ6OlByZWZlcnJlZFNpemUpIHsKLSAgICAgICAgaW50IGlj
b25TaXplOworICAgICAgICBpbnQgaWNvblNpemUgPSAwOwogCiAgICAgICAgIHN3aXRjaCAoZm9y
bUZhY3RvcigpKSB7CiAgICAgICAgICAgICBjYXNlIFBsYXNtYTo6UGxhbmFyOgpJbmRleDogd29y
a3NwYWNlL3BsYXNtYS9nZW5lcmljL2FwcGxldHMvcXVpY2tsYXVuY2gvaWNvbmdyaWRsYXlvdXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9wbGFzbWEvZ2VuZXJpYy9hcHBsZXRzL3F1aWNr
bGF1bmNoL2ljb25ncmlkbGF5b3V0LmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtzcGFj
ZS9wbGFzbWEvZ2VuZXJpYy9hcHBsZXRzL3F1aWNrbGF1bmNoL2ljb25ncmlkbGF5b3V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQyLDYgKzI0Miw5IEBACiBRU2l6ZUYgSWNvbkdyaWRMYXlvdXQ6
OnNpemVIaW50KAogICAgIFF0OjpTaXplSGludCB3aGljaCwgY29uc3QgUVNpemVGICZjb25zdHJh
aW50KSBjb25zdAogeworICAgIFFfVU5VU0VEKHdoaWNoKTsKKyAgICBRX1VOVVNFRChjb25zdHJh
aW50KTsKKyAgICAKICAgICByZXR1cm4gUVNpemVGKCk7CiB9CiAKSW5kZXg6IHdvcmtzcGFjZS9w
bGFzbWEvZ2VuZXJpYy9hcHBsZXRzL25vdGlmaWNhdGlvbnMvdWkvYnVzeXdpZGdldC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gd29ya3NwYWNlL3BsYXNtYS9nZW5lcmljL2FwcGxldHMvbm90aWZpY2F0aW9u
cy91aS9idXN5d2lkZ2V0LmNwcAkocmV2aXNpb24gMTEzMjU3MCkKKysrIHdvcmtzcGFjZS9wbGFz
bWEvZ2VuZXJpYy9hcHBsZXRzL25vdGlmaWNhdGlvbnMvdWkvYnVzeXdpZGdldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3Nyw2ICsxNzcsOCBAQAogCiB2b2lkIEJ1c3lXaWRnZXQ6OnJlc2l6ZUV2
ZW50KFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQgKmV2ZW50KQogeworICAgIFFfVU5VU0VEKGV2
ZW50KTsKKyAgICAKICAgICAvL3JlZ2VuZXJhdGUgcGl4bWFwcwogICAgIG1fc3ZnLT5yZXNpemUo
Y29udGVudHNSZWN0KCkuc2l6ZSgpKTsKICAgICBtX2ZhZGVJbkFuaW1hdGlvbi0+c2V0UHJvcGVy
dHkoInRhcmdldFBpeG1hcCIsIG1fc3ZnLT5waXhtYXAoIm5vdGlmaWNhdGlvbi1hY3RpdmUiKSk7
CkluZGV4OiB3b3Jrc3BhY2UvcGxhc21hL2dlbmVyaWMvYXBwbGV0cy9iYXR0ZXJ5L2JyaWdodG5l
c3Nvc2R3aWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdvcmtzcGFjZS9wbGFzbWEvZ2VuZXJpYy9h
cHBsZXRzL2JhdHRlcnkvYnJpZ2h0bmVzc29zZHdpZGdldC5jcHAJKHJldmlzaW9uIDExMzI1NzAp
CisrKyB3b3Jrc3BhY2UvcGxhc21hL2dlbmVyaWMvYXBwbGV0cy9iYXR0ZXJ5L2JyaWdodG5lc3Nv
c2R3aWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDcgQEAKIAogdm9pZCBC
cmlnaHRuZXNzT1NEV2lkZ2V0OjpzaG93RXZlbnQoUVNob3dFdmVudCAqZXZlbnQpCiB7CisgICAg
UV9VTlVTRUQoZXZlbnQpOwogICAgIFBsYXNtYTo6V2luZG93RWZmZWN0czo6b3ZlcnJpZGVTaGFk
b3cod2luSWQoKSwgdHJ1ZSk7CiB9CiAK
--0016e6d9a25be6f8060488452587--