--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.
This is mostly:
1) Initializing variables in all code paths
2) Check= ing return values of write() read() pipe()
3) Adding Q_UNUSED(param) for= unused parameters

Thanks for reviewing and any tips.



--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--