Re: [SPAM] valias remove alias

Drew Wells <[email protected]> Fri, 18 Sep 2015 12:45:54 +0100
Newsgroups gmane.mail.vpopmail
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------080707010203050507050500
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

On 09/17/2015 04:55 PM, Matt Brookings wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 09/17/2015 10:52 AM, Drew Wells wrote:
>>>> I basically did a diff from 5.4.29 to 5.4.33 and implemented that diff to 5.5.0, some of it
>>>> had already been done to 5.5.0 and alot of it centered around the snprintf tidy up's and the
>>>> string_list implementation. The attached patch does not include any of the changes I
>>>> recently sent to the mailing list, just the changes from 5.4.[29->33].
>> This patch was generated from the 5.5.0 .tar.bz2, I had a look at SVN trunk and from what I could
>> see, it was 5.4.34.
> The trunk on Sourceforge is the current 5.5.0.  The 5.4 series only appears in the tags and branches
> area now.  I'll look over this patch and get it applied.  Thanks for putting it together!
>
I've just noticed a tiny problem with the previous patch I sent, so here 
is an updated version, this version also includes the missing '#include 
"pwstr.h"' in vadduser.c which causes a segfault on my dev environment 
so thought I should just include it.
The tiny problem was "string_list *aliases" instead of "string_list 
aliases" in vadddomain() in vpopmail.c.


!DSPAM:55fbf97841551215118515!

--------------080707010203050507050500
Content-Type: text/plain; charset=UTF-8;
 name="vpopmail-5.5.0-5.4.x.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="vpopmail-5.5.0-5.4.x.patch"

ZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvYmFja2VuZHMvbXlzcWwvdm15c3FsLmMg
dnBvcG1haWwtNS41LjAvYmFja2VuZHMvbXlzcWwvdm15c3FsLmMKLS0tIHZwb3BtYWlsLTUu
NS4wLm9yaWcvYmFja2VuZHMvbXlzcWwvdm15c3FsLmMJMjAxMC0xMS0wNSAxODozNzoyMy4w
MDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL2JhY2tlbmRzL215c3FsL3ZteXNx
bC5jCTIwMTUtMDktMTggMTI6MzY6MDcuNTYxMDkyOTg4ICswMTAwCkBAIC0xNzg1LDEwICsx
Nzg1LDEwIEBACiAgICAgICAgIGxpbWl0cy0+bWF4Zm9yd2FyZHMgPSBhdG9pKHJvd1syXSk7
CiAgICAgICAgIGxpbWl0cy0+bWF4YXV0b3Jlc3BvbmRlcnMgPSBhdG9pKHJvd1szXSk7CiAg
ICAgICAgIGxpbWl0cy0+bWF4bWFpbGluZ2xpc3RzID0gYXRvaShyb3dbNF0pOwotICAgICAg
ICBsaW1pdHMtPmRpc2txdW90YSA9IGF0b2kocm93WzVdKTsKLSAgICAgICAgbGltaXRzLT5t
YXhtc2djb3VudCA9IGF0b2kocm93WzZdKTsKLSAgICAgICAgbGltaXRzLT5kZWZhdWx0cXVv
dGEgPSBhdG9pKHJvd1s3XSk7Ci0gICAgICAgIGxpbWl0cy0+ZGVmYXVsdG1heG1zZ2NvdW50
ID0gYXRvaShyb3dbOF0pOworICAgICAgICBsaW1pdHMtPmRpc2txdW90YSA9IHN0cnRvbGwo
cm93WzVdLCBOVUxMLCAxMCk7CisgICAgICAgIGxpbWl0cy0+bWF4bXNnY291bnQgPSBzdHJ0
b2xsKHJvd1s2XSwgTlVMTCwgMTApOworICAgICAgICBsaW1pdHMtPmRlZmF1bHRxdW90YSA9
IHN0cnRvbGwocm93WzddLCBOVUxMLCAxMCk7CisgICAgICAgIGxpbWl0cy0+ZGVmYXVsdG1h
eG1zZ2NvdW50ID0gc3RydG9sbChyb3dbOF0sIE5VTEwsIDEwKTsKICAgICAgICAgbGltaXRz
LT5kaXNhYmxlX3BvcCA9IGF0b2kocm93WzldKTsKICAgICAgICAgbGltaXRzLT5kaXNhYmxl
X2ltYXAgPSBhdG9pKHJvd1sxMF0pOwogICAgICAgICBsaW1pdHMtPmRpc2FibGVfZGlhbHVw
ID0gYXRvaShyb3dbMTFdKTsKQEAgLTE4MDgsOCArMTgwOCw4IEBACiAgICAgICAgIGxpbWl0
cy0+cGVybV9tYWlsbGlzdF91c2VycyA9IHBlcm0gJiBWTElNSVRfRElTQUJMRV9BTEw7CiAg
ICAgICAgIHBlcm0gPj49IFZMSU1JVF9ESVNBQkxFX0JJVFM7CiAgICAgICAgIGxpbWl0cy0+
cGVybV9tYWlsbGlzdF9tb2RlcmF0b3JzID0gcGVybSAmIFZMSU1JVF9ESVNBQkxFX0FMTDsK
LSAgICAgICAgbGltaXRzLT5wZXJtX3F1b3RhID0gYXRvaShyb3dbMjNdKTsKLSAgICAgICAg
bGltaXRzLT5wZXJtX2RlZmF1bHRxdW90YSA9IGF0b2kocm93WzI0XSk7CisgICAgICAgIGxp
bWl0cy0+cGVybV9xdW90YSA9IHN0cnRvbGwocm93WzIzXSwgTlVMTCwgMTApOworICAgICAg
ICBsaW1pdHMtPnBlcm1fZGVmYXVsdHF1b3RhID0gc3RydG9sbChyb3dbMjRdLCBOVUxMLCAx
MCk7CiAgICAgfQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KHJlc19yZWFkKTsKIApAQCAtMTgz
MCw3ICsxODMwLDcgQEAKICAgICAgICAgImRpc2txdW90YSA9ICVkLCBtYXhtc2djb3VudCA9
ICVkLCBkZWZhdWx0cXVvdGEgPSAlZCwgZGVmYXVsdG1heG1zZ2NvdW50ID0gJWQsICIKICAg
ICAgICAgImRpc2FibGVfcG9wID0gJWQsIGRpc2FibGVfaW1hcCA9ICVkLCBkaXNhYmxlX2Rp
YWx1cCA9ICVkLCAiCiAgICAgICAgICJkaXNhYmxlX3Bhc3N3b3JkY2hhbmdpbmcgPSAlZCwg
ZGlzYWJsZV93ZWJtYWlsID0gJWQsIGRpc2FibGVfcmVsYXkgPSAlZCwgIgotICAgICAgICAi
ZGlzYWJsZV9zbXRwID0gJWQsIGRpc2FibGVfc3BhbWFzc2Fzc2luID0gJWQsIGRlbGV0ZV9z
cGFtID0gJWQsIHBlcm1fYWNjb3VudCA9ICVkLCAiCisgICAgICAgICJkaXNhYmxlX3NtdHAg
PSAlZCwgZGlzYWJsZV9zcGFtYXNzYXNzaW4gPSAlZCwgZGVsZXRlX3NwYW0gPSAlZCwgZGlz
YWJsZV9tYWlsZHJvcCA9ICVkLCBwZXJtX2FjY291bnQgPSAlZCwgIgogICAgICAgICAicGVy
bV9hbGlhcyA9ICVkLCBwZXJtX2ZvcndhcmQgPSAlZCwgcGVybV9hdXRvcmVzcG9uZGVyID0g
JWQsIHBlcm1fbWFpbGxpc3QgPSAlZCwgIgogICAgICAgICAicGVybV9xdW90YSA9ICVkLCBw
ZXJtX2RlZmF1bHRxdW90YSA9ICVkICIKICAgICAgICAgIk9OIERVUExJQ0FURSBLRVkgVVBE
QVRFICIKQEAgLTE4NDcsNyArMTg0Nyw3IEBACiAgICAgICAgIGxpbWl0cy0+ZGlza3F1b3Rh
LCBsaW1pdHMtPm1heG1zZ2NvdW50LCBsaW1pdHMtPmRlZmF1bHRxdW90YSwgbGltaXRzLT5k
ZWZhdWx0bWF4bXNnY291bnQsCiAgICAgICAgIGxpbWl0cy0+ZGlzYWJsZV9wb3AsIGxpbWl0
cy0+ZGlzYWJsZV9pbWFwLCBsaW1pdHMtPmRpc2FibGVfZGlhbHVwLAogICAgICAgICBsaW1p
dHMtPmRpc2FibGVfcGFzc3dvcmRjaGFuZ2luZywgbGltaXRzLT5kaXNhYmxlX3dlYm1haWws
IGxpbWl0cy0+ZGlzYWJsZV9yZWxheSwKLSAgICAgICAgbGltaXRzLT5kaXNhYmxlX3NtdHAs
IGxpbWl0cy0+ZGlzYWJsZV9zcGFtYXNzYXNzaW4sIGxpbWl0cy0+ZGVsZXRlX3NwYW0sIGxp
bWl0cy0+cGVybV9hY2NvdW50LAorICAgICAgICBsaW1pdHMtPmRpc2FibGVfc210cCwgbGlt
aXRzLT5kaXNhYmxlX3NwYW1hc3Nhc3NpbiwgbGltaXRzLT5kZWxldGVfc3BhbSwgbGltaXRz
LT5kaXNhYmxlX21haWxkcm9wLCBsaW1pdHMtPnBlcm1fYWNjb3VudCwKICAgICAgICAgbGlt
aXRzLT5wZXJtX2FsaWFzLCBsaW1pdHMtPnBlcm1fZm9yd2FyZCwgbGltaXRzLT5wZXJtX2F1
dG9yZXNwb25kZXIsCiAgICAgICAgIChsaW1pdHMtPnBlcm1fbWFpbGxpc3QgfAogICAgICAg
ICAgICAgKGxpbWl0cy0+cGVybV9tYWlsbGlzdF91c2VycyA8PCBWTElNSVRfRElTQUJMRV9C
SVRTKSB8CmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL2JhY2tlbmRzL215c3FsL3Zt
eXNxbC5oLmluIHZwb3BtYWlsLTUuNS4wL2JhY2tlbmRzL215c3FsL3ZteXNxbC5oLmluCi0t
LSB2cG9wbWFpbC01LjUuMC5vcmlnL2JhY2tlbmRzL215c3FsL3ZteXNxbC5oLmluCTIwMTAt
MTEtMDUgMTg6Mzc6MjMuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9iYWNr
ZW5kcy9teXNxbC92bXlzcWwuaC5pbgkyMDE1LTA5LTE4IDEyOjM2OjA3LjU2MTA5Mjk4OCAr
MDEwMApAQCAtMjY4LDEwICsyNjgsMTAgQEAKICAgICAgIG1heGZvcndhcmRzICAgICAgICAg
ICAgICBJTlQoMTApIE5PVCBOVUxMIERFRkFVTFQgLTEsIFwKICAgICAgIG1heGF1dG9yZXNw
b25kZXJzICAgICAgICBJTlQoMTApIE5PVCBOVUxMIERFRkFVTFQgLTEsIFwKICAgICAgIG1h
eG1haWxpbmdsaXN0cyAgICAgICAgICBJTlQoMTApIE5PVCBOVUxMIERFRkFVTFQgLTEsIFwK
LSAgICAgIGRpc2txdW90YSAgICAgICAgICAgICAgICBJTlQoMTIpIE5PVCBOVUxMIERFRkFV
TFQgMCwgXAotICAgICAgbWF4bXNnY291bnQgICAgICAgICAgICAgIElOVCgxMikgTk9UIE5V
TEwgREVGQVVMVCAwLCBcCi0gICAgICBkZWZhdWx0cXVvdGEgICAgICAgICAgICAgSU5UKDEy
KSBOT1QgTlVMTCBERUZBVUxUIDAsIFwKLSAgICAgIGRlZmF1bHRtYXhtc2djb3VudCAgICAg
ICBJTlQoMTIpIE5PVCBOVUxMIERFRkFVTFQgMCwgXAorICAgICAgZGlza3F1b3RhICAgICAg
ICAgICAgICAgIEJJR0lOVCBVTlNJR05FRCBOT1QgTlVMTCBERUZBVUxUIDAsIFwKKyAgICAg
IG1heG1zZ2NvdW50ICAgICAgICAgICAgICBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVG
QVVMVCAwLCBcCisgICAgICBkZWZhdWx0cXVvdGEgICAgICAgICAgICAgQklHSU5UIFVOU0lH
TkVEIE5PVCBOVUxMIERFRkFVTFQgMCwgXAorICAgICAgZGVmYXVsdG1heG1zZ2NvdW50ICAg
ICAgIEJJR0lOVCBVTlNJR05FRCBOT1QgTlVMTCBERUZBVUxUIDAsIFwKICAgICAgIGRpc2Fi
bGVfcG9wICAgICAgICAgICAgICBUSU5ZSU5UKDEpIE5PVCBOVUxMIERFRkFVTFQgMCwgXAog
ICAgICAgZGlzYWJsZV9pbWFwICAgICAgICAgICAgIFRJTllJTlQoMSkgTk9UIE5VTEwgREVG
QVVMVCAwLCBcCiAgICAgICBkaXNhYmxlX2RpYWx1cCAgICAgICAgICAgVElOWUlOVCgxKSBO
T1QgTlVMTCBERUZBVUxUIDAsIFwKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvYmFj
a2ZpbGwuYyB2cG9wbWFpbC01LjUuMC9iYWNrZmlsbC5jCi0tLSB2cG9wbWFpbC01LjUuMC5v
cmlnL2JhY2tmaWxsLmMJMjAxMC0xMS0wNSAxODozNzoyMi4wMDAwMDAwMDAgKzAwMDAKKysr
IHZwb3BtYWlsLTUuNS4wL2JhY2tmaWxsLmMJMjAxNS0wOS0xOCAxMjozNjowNy41NjIwOTMw
NTQgKzAxMDAKQEAgLTEzLDcgKzEzLDkgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZj
bnRsLmg+CiAjaW5jbHVkZSAidnBvcG1haWwuaCIKKyNpbmNsdWRlICJmaWxlX2xvY2suaCIK
ICNpbmNsdWRlICJ2YXV0aC5oIgogI2luY2x1ZGUgInZhdXRobW9kdWxlLmgiCiAKQEAgLTM3
LDYgKzM5LDcgQEAKIAlpbnQgICAgICAgICAgICAgZmQ7CiAjaWZkZWYgRklMRV9MT0NLSU5H
CiAJaW50ICAgICAgICAgICAgIGxvY2tmZDsKKwljaGFyCQlsb2NrZmlsZVtNQVhfQlVGRl07
CiAjZW5kaWYKIAogCWlmIChzdGF0KGZpbGVuYW1lLCAmc3RhdGJ1ZikpCmRpZmYgLXVQciB2
cG9wbWFpbC01LjUuMC5vcmlnL2NsaWVudC5jIHZwb3BtYWlsLTUuNS4wL2NsaWVudC5jCi0t
LSB2cG9wbWFpbC01LjUuMC5vcmlnL2NsaWVudC5jCTIwMTAtMTEtMDUgMTg6Mzc6MjIuMDAw
MDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9jbGllbnQuYwkyMDE1LTA5LTE4IDEy
OjM2OjA3LjU2MjA5MzA1NCArMDEwMApAQCAtNzgsNjYgKzc4LDY0IEBACiAKICAgIGNvbmZp
ZyA9IGNvbmZpZ19iZWdpbigidnVzYWdlYy5jb25mIik7CiAgICBpZiAoY29uZmlnID09IE5V
TEwpCi0JICBmcHJpbnRmKHN0ZGVyciwgImNsaWVudF9jb25uZWN0OiB3YXJuaW5nOiBjb25m
aWdfYmVnaW4gZmFpbGVkXG4iKTsKKwkgIHJldHVybiBOVUxMOwogCiAgICAvKgogCSAgRGlz
YWJsZWQgY2hlY2sKICAgICovCiAKLSAgIGVsc2UgewotCSAgc3RyID0gY29uZmlnX2ZldGNo
X2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIkRpc2FibGUiKTsKLQkgIGlmICgoc3RyKSAm
JiAoKnN0cikpIHsKLQkJIGlmICghKHN0cmNhc2VjbXAoc3RyLCAiVHJ1ZSIpKSkgewotCQkJ
Y29uZmlnX2tpbGwoY29uZmlnKTsKLQkJCXJldHVybiBOVUxMOwotCQkgfQotCSAgfQorICAg
c3RyID0gY29uZmlnX2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIkRpc2FibGUi
KTsKKyAgIGlmICgoc3RyKSAmJiAoKnN0cikpIHsKKwlpZiAoIShzdHJjYXNlY21wKHN0ciwg
IlRydWUiKSkpIHsKKwkgICAgY29uZmlnX2tpbGwoY29uZmlnKTsKKwkgICAgcmV0dXJuIE5V
TEw7CisJIH0KKyAgIH0KIAotCSAgLyoKLQkJIEdldCB0aW1lb3V0Ci0JICAqLwotCi0JICBz
dHIgPSBjb25maWdfZmV0Y2hfYnlfbmFtZShjb25maWcsICJTZXJ2ZXIiLCAiVGltZW91dCIp
OwotCSAgaWYgKHN0cikgewotCQkgZmwgPSBhdG9pKHN0cik7Ci0JCSBpZiAoKGZsID09IC0x
KSB8fCAoZmwgPT0gMCkpCi0JCQlmcHJpbnRmKHN0ZGVyciwgImNsaWVudF9jb25uZWN0OiBj
b25maWd1cmF0aW9uIGVycm9yOiBTZXJ2ZXI6OlRpbWVvdXQ6ICVzXG4iLCBzdHIpOwotCQkg
ZWxzZQotCQkJdGltZW91dCA9IGZsOwotCSAgfQorICAgLyoKKwkgIEdldCB0aW1lb3V0Cisg
ICAqLwogCi0JICAvKgotCQkgRGV0ZXJtaW5lIGNvbm5lY3Rpb24gdHlwZQotCSAgKi8KLQot
CSAgc3RyID0gY29uZmlnX2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIlJlbW90
ZSIpOwotCSAgaWYgKHN0cikgewotCQkgcmV0ID0gaXBwcF9wYXJzZShzdHIsICZhZGRyKTsK
LQkJIGlmICghcmV0KSB7Ci0JCQljb25maWdfa2lsbChjb25maWcpOwotCQkJZnByaW50Zihz
dGRlcnIsICJjbGllbnRfY29ubmVjdDogY29uZmlndXJhdGlvbiBlcnJvcjogU2VydmVyOjpS
ZW1vdGU6ICVzXG4iLCBzdHIpOwotCQkJcmV0dXJuIE5VTEw7Ci0JCSB9Ci0JICB9CisgICBz
dHIgPSBjb25maWdfZmV0Y2hfYnlfbmFtZShjb25maWcsICJTZXJ2ZXIiLCAiVGltZW91dCIp
OworICAgaWYgKHN0cikgeworCWZsID0gYXRvaShzdHIpOworCWlmICgoZmwgPT0gLTEpIHx8
IChmbCA9PSAwKSkKKwkgICAgZnByaW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDogY29u
ZmlndXJhdGlvbiBlcnJvcjogU2VydmVyOjpUaW1lb3V0OiAlc1xuIiwgc3RyKTsKKwllbHNl
CisJICAgIHRpbWVvdXQgPSBmbDsKKwl9CiAKLQkgIGVsc2UgewotCQkgc3RyID0gY29uZmln
X2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIkZpbGVuYW1lIik7Ci0JCSBpZiAo
c3RyKSB7Ci0JCQlpZiAoISgqc3RyKSkgewotCQkJICAgY29uZmlnX2tpbGwoY29uZmlnKTsK
LQkJCSAgIGZwcmludGYoc3RkZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNvbmZpZ3VyYXRpb24g
ZXJyb3I6IFNlcnZlcjo6RmlsZW5hbWVcbiIpOwotCQkJICAgcmV0dXJuIE5VTEw7Ci0JCQl9
Ci0KLQkJCWZsID0gc3RybGVuKHN0cik7Ci0JCQlpZiAoZmwgPj0gc2l6ZW9mKHNvY2tldF9m
aWxlKSkKLQkJCSAgIGZsID0gKHNpemVvZihzb2NrZXRfZmlsZSkgLSAxKTsKKyAgIC8qCisJ
ICBEZXRlcm1pbmUgY29ubmVjdGlvbiB0eXBlCisgICAqLwogCi0JCQltZW1jcHkoc29ja2V0
X2ZpbGUsIHN0ciwgZmwpOwotCQkgfQotCSAgfQorICAgc3RyID0gY29uZmlnX2ZldGNoX2J5
X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIlJlbW90ZSIpOworICAgaWYgKHN0cikgeworCXJl
dCA9IGlwcHBfcGFyc2Uoc3RyLCAmYWRkcik7CisJaWYgKCFyZXQpIHsKKwkgICAgY29uZmln
X2tpbGwoY29uZmlnKTsKKwkgICAgZnByaW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDog
Y29uZmlndXJhdGlvbiBlcnJvcjogU2VydmVyOjpSZW1vdGU6ICVzXG4iLCBzdHIpOworCSAg
ICByZXR1cm4gTlVMTDsKKwl9CisgICB9CisKKyAgIGVsc2UgeworCXN0ciA9IGNvbmZpZ19m
ZXRjaF9ieV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJGaWxlbmFtZSIpOworCWlmIChzdHIp
IHsKKwkgICAgaWYgKCEoKnN0cikpIHsKKwkJY29uZmlnX2tpbGwoY29uZmlnKTsKKwkJZnBy
aW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDogY29uZmlndXJhdGlvbiBlcnJvcjogU2Vy
dmVyOjpGaWxlbmFtZVxuIik7CisJCXJldHVybiBOVUxMOworCSAgICB9CisKKwkgICAgZmwg
PSBzdHJsZW4oc3RyKTsKKwkgICAgaWYgKGZsID49IHNpemVvZihzb2NrZXRfZmlsZSkpCisJ
CWZsID0gKHNpemVvZihzb2NrZXRfZmlsZSkgLSAxKTsKKworCSAgICBtZW1jcHkoc29ja2V0
X2ZpbGUsIHN0ciwgZmwpOworCX0KIAotCSAgY29uZmlnX2tpbGwoY29uZmlnKTsKKwljb25m
aWdfa2lsbChjb25maWcpOwogICAgfQogCiAgICAvKgpkaWZmIC11UHIgdnBvcG1haWwtNS41
LjAub3JpZy9jb25mLmMgdnBvcG1haWwtNS41LjAvY29uZi5jCi0tLSB2cG9wbWFpbC01LjUu
MC5vcmlnL2NvbmYuYwkyMDEwLTExLTA1IDE4OjM3OjIyLjAwMDAwMDAwMCArMDAwMAorKysg
dnBvcG1haWwtNS41LjAvY29uZi5jCTIwMTUtMDktMTggMTI6MzY6MDcuNTYzMDkzMTE4ICsw
MTAwCkBAIC03ODcsMTMgKzc4NywxMiBAQAogY2hhciAqY29uZmlnX2ZldGNoX2J5X251bShj
b25maWdfdCAqYywgY2hhciAqbGFiZWwsIGludCBudW0pCiB7ICAKICAgaW50IGN1ciA9IDA7
CisgIGNvbmZpZ19sYWJlbF90ICpsID0gTlVMTDsKKyAgY29uZmlnX2F0b21fdCAqYSA9IE5V
TEw7CiAKICAgaWYgKGMgPT0gTlVMTCkKIAkgcmV0dXJuIE5VTEw7CiAKLSAgY29uZmlnX2xh
YmVsX3QgKmwgPSBOVUxMOwotICBjb25maWdfYXRvbV90ICphID0gTlVMTDsKLQogICBpZiAo
Yy0+bGFiZWxzID09IE5VTEwpCiAgICAgIHJldHVybiBOVUxMOwogCmRpZmYgLXVQciB2cG9w
bWFpbC01LjUuMC5vcmlnL2RvYy9VUEdSQURFIHZwb3BtYWlsLTUuNS4wL2RvYy9VUEdSQURF
Ci0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL2RvYy9VUEdSQURFCTIwMTAtMTEtMDUgMTg6Mzc6
MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9kb2MvVVBHUkFERQkyMDE1
LTA5LTE4IDEyOjM2OjA3LjU2NDA5MzE4MCArMDEwMApAQCAtNCw2ICs0LDE1IEBACiBpbnRv
IHRoZSB2cG9wbWFpbCBsaWJyYXJpZXMuICBUaGVzZSBpbmNsdWRlIFFtYWlsQWRtaW4sIHFt
YWlsLXNtdHBkIChpZiAKIHlvdSBoYXZlIHRoZSBjaGt1c2VyIHBhdGNoIGFwcGxpZWQpLCBD
b3VyaWVyLUlNQVAgZXRjLgogCisrVXBncmFkaW5nIHRvIHZwb3BtYWlsLTUuNC4zMworKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKytJZiB5b3UgYXJlIHN0b3JpbmcgbGltaXRz
IGluIE15U1FMLCB0aGUgZm9sbG93aW5nIHNjaGVtYSBjaGFuZ2VzIG11c3QgYmUgbWFkZToK
KysKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBBREQgYGRpc2FibGVfbWFpbGRyb3BgIFRJTllJ
TlQoMSkgREVGQVVMVCAnMCcgTk9UIE5VTEwgQUZURVIgYGRpc2FibGVfc3BhbWFzc2Fzc2lu
YDsKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJRlkgYGRpc2txdW90YWAgQklHSU5UIFVO
U0lHTkVEIE5PVCBOVUxMIERFRkFVTFQgMDsKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJ
RlkgYG1heG1zZ2NvdW50YCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOwor
K0FMVEVSIFRBQkxFIGBsaW1pdHNgIE1PRElGWSBgZGVmYXVsdHF1b3RhYCBCSUdJTlQgVU5T
SUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOworK0FMVEVSIFRBQkxFIGBsaW1pdHNgIE1PRElG
WSBgZGVmYXVsdG1heG1zZ2NvdW50YCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVM
VCAwOwogCiBVcGdyYWRpbmcgdG8gdnBvcG1haWwtNS40LjE4CiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL21haWxkaXJxdW90
YS5jIHZwb3BtYWlsLTUuNS4wL21haWxkaXJxdW90YS5jCi0tLSB2cG9wbWFpbC01LjUuMC5v
cmlnL21haWxkaXJxdW90YS5jCTIwMTAtMTEtMDUgMTg6Mzc6MjIuMDAwMDAwMDAwICswMDAw
CisrKyB2cG9wbWFpbC01LjUuMC9tYWlsZGlycXVvdGEuYwkyMDE1LTA5LTE4IDEyOjM2OjA3
LjU2NTA5MzI0MCArMDEwMApAQCAtNDIsMTYgKzQyLDE2IEBACiAKIC8qIHByaXZhdGUgZnVu
Y3Rpb25zIC0gbm8gbmFtZSBjbGFzaGVzIHdpdGggY291cmllciAqLwogc3RhdGljIGNoYXIg
Km1ha2VuZXdtYWlsZGlyc2l6ZW5hbWUoY29uc3QgY2hhciAqLCBpbnQgKik7Ci1zdGF0aWMg
aW50IGNvdW50Y3VybmV3KGNvbnN0IGNoYXIgKmRpciwgdGltZV90ICptYXh0aW1lLCBvZmZf
dCAqc2l6ZXAsIGludCAqY250cCk7Ci1zdGF0aWMgaW50IGNvdW50c3ViZGlyKGNvbnN0IGNo
YXIgKmRpciwgY29uc3QgY2hhciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUsIG9mZl90ICpz
aXplcCwgaW50ICpjbnRwKTsKK3N0YXRpYyBpbnQgY291bnRjdXJuZXcoY29uc3QgY2hhciAq
ZGlyLCB0aW1lX3QgKm1heHRpbWUsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250
cCk7CitzdGF0aWMgaW50IGNvdW50c3ViZGlyKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hh
ciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2Vf
dCAqY250cCk7CiBzdGF0aWMgaW50IHN0YXRjdXJuZXcoY29uc3QgY2hhciAqZGlyLCB0aW1l
X3QgKm1heHRpbWVzdGFtcCk7CiBzdGF0aWMgaW50IHN0YXRzdWJkaXIoY29uc3QgY2hhciAq
ZGlyLCBjb25zdCBjaGFyICpzdWJkaXIsIHRpbWVfdCAqbWF4dGltZSk7CiBzdGF0aWMgaW50
IGRvYWRkcXVvdGEoY29uc3QgY2hhciAqZGlyLCBpbnQgbWFpbGRpcnNpemVfZmQsIGNvbnN0
IGNoYXIgKnF1b3RhX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbWFpbGRp
cnNpemVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCwgaW50IGlzbmV3KTsKKyAgICAgICAg
ICAgICAgICAgICAgICBzdG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1h
aWxkaXJzaXplX2NudCwgaW50IGlzbmV3KTsKIHN0YXRpYyBpbnQgZG9jaGVja3F1b3RhKGNv
bnN0IGNoYXIgKmRpciwgaW50ICptYWlsZGlyc2l6ZV9mZHB0ciwgY29uc3QgY2hhciAqcXVv
dGFfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBsb25nIHh0cmFfc2l6ZSwgaW50
IHh0cmFfY250LCBpbnQgKnBlcmNlbnRhZ2UpOwotc3RhdGljIGludCBkb2NvdW50KGNvbnN0
IGNoYXIgKmRpciwgdGltZV90ICpkaXJzdGFtcCwgb2ZmX3QgKnNpemVwLCBpbnQgKmNudHAp
Owotc3RhdGljIGludCBtYWlsZGlyX2NoZWNrcXVvdGEoY29uc3QgY2hhciAqZGlyLCBpbnQg
Km1haWxkaXJzaXplX2ZkcHRyLCBjb25zdCBjaGFyICpxdW90YV90eXBlLCBsb25nIHh0cmFf
c2l6ZSwgaW50IHh0cmFfY250KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Vf
dCB4dHJhX3NpemUsIHN0b3JhZ2VfdCB4dHJhX2NudCwgaW50ICpwZXJjZW50YWdlKTsKK3N0
YXRpYyBpbnQgZG9jb3VudChjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAqZGlyc3RhbXAsIHN0
b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCk7CitzdGF0aWMgaW50IG1haWxkaXJf
Y2hlY2txdW90YShjb25zdCBjaGFyICpkaXIsIGludCAqbWFpbGRpcnNpemVfZmRwdHIsIGNv
bnN0IGNoYXIgKnF1b3RhX3R5cGUsIHN0b3JhZ2VfdCB4dHJhX3NpemUsIHN0b3JhZ2VfdCB4
dHJhX2NudCk7CiAvKiAgbW92ZWQgaW50byBtYWlsZGlycXVvdGEuaCBhcyBub24tc3RhdGlj
CiBzdGF0aWMgaW50IG1haWxkaXJfYWRkcXVvdGEoY29uc3QgY2hhciAqZGlyLCBpbnQgbWFp
bGRpcnNpemVfZmQsCiAJY29uc3QgY2hhciAqcXVvdGFfdHlwZSwgbG9uZyBtYWlsZGlyc2l6
ZV9zaXplLCBpbnQgbWFpbGRpcnNpemVfY250KTsKQEAgLTU5LDcgKzU5LDcgQEAKIHN0YXRp
YyBpbnQgbWFpbGRpcl9zYWZlb3Blbihjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSwgaW50
IHBlcm0pOwogc3RhdGljIGNoYXIgKnN0cl9waWRfdChwaWRfdCB0LCBjaGFyICphcmcpOwog
c3RhdGljIGNoYXIgKnN0cl90aW1lX3QodGltZV90IHQsIGNoYXIgKmFyZyk7Ci1zdGF0aWMg
aW50IG1haWxkaXJfcGFyc2VxdW90YShjb25zdCBjaGFyICpuLCB1bnNpZ25lZCBsb25nICpz
KTsKK3N0YXRpYyBpbnQgbWFpbGRpcl9wYXJzZXF1b3RhKGNvbnN0IGNoYXIgKm4sIHN0b3Jh
Z2VfdCAqcyk7CiAKICNkZWZpbmUgIE5VTUJVRlNJWkUgICAgICA2MAogI2RlZmluZQlNRFFV
T1RBX1NJWkUJJ1MnCS8qIFRvdGFsIHNpemUgb2YgYWxsIG1lc3NhZ2VzIGluIG1haWxkaXIg
Ki8KQEAgLTc1LDEwICs3NSwxMSBAQAogY2hhcglkb21kaXJbTUFYX1BXX0RJUl07CiBjaGFy
CSpwOwogY2hhcglkb21haW5bMjU2XSwgcWJbMjU2XSA9IHsgMCB9OwotbG9uZyAgICBzaXpl
ID0gMDsKLXVuc2lnbmVkIGxvbmcgbWF4c2l6ZSA9IDA7Ci1pbnQJY250ID0gMCwgcmV0ID0g
MDsKLWludAltYXhjbnQgPSAwOworc3RvcmFnZV90IHNpemUgPSAwOworc3RvcmFnZV90IG1h
eHNpemUgPSAwOworc3RvcmFnZV90IGNudCA9IDA7CitpbnQgcmV0ID0gMDsKK3N0b3JhZ2Vf
dCBtYXhjbnQgPSAwOwogc3RydWN0IHZsaW1pdHMgbGltaXRzOwogICAgc3RvcmFnZV90IHN1
c2FnZSA9IDAsIGN1c2FnZSA9IDA7CiAKQEAgLTE0NCw3ICsxNDUsNyBAQAogICAgICAgICBy
ZXR1cm4gMDsKIH0KIAotaW50IHJlYWRkb21haW5xdW90YShjb25zdCBjaGFyICpkaXIsIGxv
bmcgKnNpemVwLCBpbnQgKmNudHApCitpbnQgcmVhZGRvbWFpbnF1b3RhKGNvbnN0IGNoYXIg
KmRpciwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKQogewogaW50IHRyaWVz
OwogY2hhcgljaGVja2RpclsyNTZdOwpAQCAtMjA1LDcgKzIwNiw3IEBACiAJcmV0dXJuIDA7
CiB9CiAKLWludCB3cmFwcmVhZHVzZXJxdW90YShjb25zdCBjaGFyKiBkaXIsIG9mZl90ICpz
aXplcCwgaW50ICpjbnRwKQoraW50IHdyYXByZWFkdXNlcnF1b3RhKGNvbnN0IGNoYXIqIGRp
ciwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKQogewogdGltZV90CXRtOwog
dGltZV90CW1heHRpbWU7CkBAIC0yODQsMTAgKzI4NSwxMCBAQAogCiAJcmV0dXJuIDA7CiB9
Ci1pbnQgcmVhZHVzZXJxdW90YShjb25zdCBjaGFyKiBkaXIsIGxvbmcgKnNpemVwLCBpbnQg
KmNudHApCitpbnQgcmVhZHVzZXJxdW90YShjb25zdCBjaGFyKiBkaXIsIHN0b3JhZ2VfdCAq
c2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIAlpbnQgcmV0dmFsOwotCW9mZl90IHM7CisJ
c3RvcmFnZV90IHM7CiAJCiAJcyA9IChvZmZfdCkgKnNpemVwOwogCXJldHZhbCA9IHdyYXBy
ZWFkdXNlcnF1b3RhKGRpciwgJnMsIGNudHApOwpAQCAtMzE1LDcgKzMxNiw3IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocXVvdGFmZCA+PSAwKSAgICAgICBjbG9zZShxdW90
YWZkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldF92YWx1ZSA9IDE7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1haWxkaXJfYWRk
cXVvdGEoZGlyLCBxdW90YWZkLCBxLCBzdGF0X2J1Zi5zdF9zaXplLCAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vbWFpbGRpcl9hZGRxdW90YShkaXIsIHF1b3RhZmQsIHEsIHN0
YXRfYnVmLnN0X3NpemUsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1b3Rh
ZmQgPj0gMCkgICAgICAgY2xvc2UocXVvdGFmZCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXRfdmFsdWUgPSAwOwogICAgICAgICAgICAgICAgIH0KQEAgLTM0OSw4ICszNTAsOCBA
QAogCiBzdGF0aWMgaW50IG1haWxkaXJzaXplX3JlYWQoY29uc3QgY2hhciAqZmlsZW5hbWUs
CS8qIFRoZSBmaWxlbmFtZSAqLwogCWludCAqZmRwdHIsCS8qIEtlZXAgdGhlIGZpbGUgZGVz
Y3JpcHRvciBvcGVuICovCi0Jb2ZmX3QgKnNpemVwdHIsCS8qIEdyYW5kIHRvdGFsIG9mIG1h
aWxkaXIgc2l6ZSAqLwotCWludCAqY250cHRyLCAvKiBHcmFuZCB0b3RhbCBvZiBtZXNzYWdl
IGNvdW50ICovCisJc3RvcmFnZV90ICpzaXplcHRyLCAvKiBHcmFuZCB0b3RhbCBvZiBtYWls
ZGlyIHNpemUgKi8KKwlzdG9yYWdlX3QgKmNudHB0ciwgLyogR3JhbmQgdG90YWwgb2YgbWVz
c2FnZSBjb3VudCAqLwogCXVuc2lnbmVkICpubGluZXMsIC8qICMgb2YgbGluZXMgaW4gbWFp
bGRpcnNpemUgKi8KIAlzdHJ1Y3Qgc3RhdCAqc3RhdHB0cikJLyogVGhlIHN0YXRzIG9uIG1h
aWxkaXJzaXplICovCiB7CkBAIC0zNTgsOCArMzU5LDkgQEAKICBpbnQgZjsKICBjaGFyICpw
OwogIHVuc2lnbmVkIGw7Ci0gaW50IG47Cisgc3RvcmFnZV90IG47CiAgaW50IGZpcnN0Owor
IGludCByZXQgPSAwOwogCiAgICAvKgogCSAgT2xkLXN0eWxlCkBAIC0zNzIsNiArMzc0LDE4
IEBACiAJcD1idWY7CiAJbD1zaXplb2YoYnVmKTsKIAorCS8qCisJCU1haWxkaXIrKyBzcGVj
aWZpY2F0aW9uIHNheXMgdG8gcmVidWlsZCB0aGUgbWFpbGRpcnNpemUgZmlsZSBpZiB0aGUK
KwkJZmlsZSBpcyA1MTIwIG9yIG1vcmUgYnl0ZXMsIG9yIGlzIG1vcmUgdGhhbiAxNSBtaW51
dGVzIG9sZAorCSovCisKKwlyZXQgPSBmc3RhdChmLCBzdGF0cHRyKTsKKwlpZiAoKHJldCAh
PSAtMSkgJiYgKChzdGF0cHRyLT5zdF9zaXplID49IDUxMjApIHx8ICh0aW1lKE5VTEwpID4g
c3RhdHB0ci0+c3RfbXRpbWUgKyAoMTUqNjApKSkpIHsKKwkgICB1bmxpbmsoZmlsZW5hbWUp
OworCSAgIGNsb3NlKGYpOworCSAgIHJldHVybiAtMTsKKwl9CisKIAl3aGlsZSAobCkKIAl7
CiAJCW49cmVhZChmLCBwLCBsKTsKQEAgLTM4NCw3ICszOTgsNyBAQAogCQlwICs9IG47CiAJ
CWwgLT0gbjsKIAl9Ci0JaWYgKGwgPT0gMCB8fCBmc3RhdChmLCBzdGF0cHRyKSkJLyogbWFp
bGRpciB0b28gYmlnICovCisJaWYgKGwgPT0gMCB8fCByZXQpCS8qIG1haWxkaXIgdG9vIGJp
ZyAqLwogCXsKIAkJY2xvc2UoZik7CiAJCXJldHVybiAoLTEpOwpAQCAtMzk4LDggKzQxMiw4
IEBACiAJZmlyc3Q9MTsKIAl3aGlsZSAoKnApCiAJewotCWxvbmcgbj0wOwotCWludCBjPTA7
CisJc3RvcmFnZV90IG49MDsKKwlzdG9yYWdlX3QgYz0wOwogCWNoYXIJKnE9cDsKIAogCQl3
aGlsZSAoKnApCkBAIC00MTQsNyArNDI4LDcgQEAKIAkJCWZpcnN0PTA7CiAJCQljb250aW51
ZTsKIAkJfQotCQlzc2NhbmYocSwgIiVsZCAlZCIsICZuLCAmYyk7CisJCXNzY2FuZihxLCAi
JWxsdSAlbGx1IiwgJm4sICZjKTsKIAkJKnNpemVwdHIgKz0gbjsKIAkJKmNudHB0ciArPSBj
OwogCQkrKyAqbmxpbmVzOwpAQCAtNDIzLDkgKzQzNyw5IEBACiAJcmV0dXJuICgwKTsKIH0K
IAotc3RhdGljIGludCBxY2FsYyhvZmZfdCBzLCB1bnNpZ25lZCBuLCBjb25zdCBjaGFyICpx
dW90YSwgaW50ICpwZXJjZW50YWdlKQorc3RhdGljIGludCBxY2FsYyhzdG9yYWdlX3Qgcywg
c3RvcmFnZV90IG4sIGNvbnN0IGNoYXIgKnF1b3RhLCBpbnQgKnBlcmNlbnRhZ2UpCiB7Ci1v
ZmZfdCBpOworc3RvcmFnZV90IGk7CiBpbnQJc3BlcmNlbnRhZ2U9MDsKIGludAlucGVyY2Vu
dGFnZT0wOwogCkBAIC00NTAsNiArNDY0LDcgQEAKIAkJCQlyZXR1cm4gKC0xKTsKIAkJCX0K
IAorI2lmIDAKIAkJCS8qCiAJCQkqKiBGb3IgaHVnZSBxdW90YXMsIG92ZXIgMjBtYiwKIAkJ
CSoqIGRpdmlkZSBudW1lcmF0b3IgJiBkZW5vbWluYXRvciBieSAxMDI0IHRvIHByZXZlbnQK
QEAgLTQ1OCw2ICs0NzMsNyBAQAogCiAJCQl4PTE7CiAJCQlpZiAoaSA+IDIwMDAwMDAwKSB4
PTEwMjQ7CisjZW5kaWYKIAogCQkJc3BlcmNlbnRhZ2UgPSBpID8gKHMveCkgKiAxMDAgLyAo
aS94KToxMDA7CiAJCQlicmVhazsKQEAgLTQ2OSwxMCArNDg1LDEyIEBACiAJCQkJcmV0dXJu
ICgtMSk7CiAJCQl9CiAKKyNpZiAwCiAJCQkvKiBEaXR0byAqLwogCiAJCQl4PTE7CiAJCQlp
ZiAoaSA+IDIwMDAwMDAwKSB4PTEwMjQ7CisjZW5kaWYKIAogCQkJbnBlcmNlbnRhZ2UgPSBp
ID8gKChvZmZfdCluL3gpICogMTAwIC8gKGkveCk6MTAwOwogCQkJYnJlYWs7CkBAIC00ODUs
OCArNTAzLDggQEAKIHN0YXRpYyBpbnQgbWFpbGRpcl9jaGVja3F1b3RhKGNvbnN0IGNoYXIg
KmRpciwKIAlpbnQgKm1haWxkaXJzaXplX2ZkcHRyLAogCWNvbnN0IGNoYXIgKnF1b3RhX3R5
cGUsCi0JbG9uZyB4dHJhX3NpemUsCi0JaW50IHh0cmFfY250KQorCXN0b3JhZ2VfdCB4dHJh
X3NpemUsCisJc3RvcmFnZV90IHh0cmFfY250KQogewogaW50CWR1bW15LCByZXQgPSAwOwog
CkBAIC00OTYsMTMgKzUxNCwyMSBAQAogCiAgICBmcHJpbnRmKHN0ZGVyciwgIndhcm5pbmc6
IHByb2dyYW0gdXNpbmcgZGVwcmVjYXRlZCBxdW90YSBmdW5jdGlvbiBhdCAlczolZFxuIiwg
X19GSUxFX18sIF9fTElORV9fKTsKIAorICAgaWYgKCh4dHJhX3NpemUgPT0gMCkgfHwgKHh0
cmFfY250ID09IDApKQorCXJldHVybiAwOworCiAgICAvKgogCSAgUGluZyB0aGUgZGFlbW9u
CiAgICAqLwogCiAgICByZXQgPSBjbGllbnRfcXVlcnlfcXVpY2soIiAiLCBOVUxMLCBOVUxM
KTsKLSAgIGlmIChyZXQpCi0gICAgICByZXR1cm4gdm1haWxkaXJfcmVhZHF1b3RhKGRpciwg
cXVvdGFfdHlwZSk7CisgICBpZiAocmV0KSB7CisgICAgICByZXQgPSB2bWFpbGRpcl9yZWFk
cXVvdGEoZGlyLCBxdW90YV90eXBlKTsKKyAgICAgIGlmIChyZXQgPj0gMTAwKQorICAgICAg
ICAgIHJldHVybiAtMTsKKworICAgICAgcmV0dXJuIDA7CisgICB9CiAKICAgIC8qCiAJICBG
YWxsIGJhY2sKQEAgLTU3MCwxNiArNTk2LDE2IEBACiBzdGF0aWMgaW50IGRvY2hlY2txdW90
YShjb25zdCBjaGFyICpkaXIsCiAJaW50ICptYWlsZGlyc2l6ZV9mZHB0ciwKIAljb25zdCBj
aGFyICpxdW90YV90eXBlLAotCWxvbmcgeHRyYV9zaXplLAotCWludCB4dHJhX2NudCwKKwlz
dG9yYWdlX3QgeHRyYV9zaXplLAorCXN0b3JhZ2VfdCB4dHJhX2NudCwKIAlpbnQgKnBlcmNl
bnRhZ2UpCiB7CiBjaGFyCSpjaGVja2ZvbGRlcj0oY2hhciAqKW1hbGxvYyhzdHJsZW4oZGly
KStzaXplb2YoIi9tYWlsZGlyZm9sZGVyIikpOwogY2hhcgkqbmV3bWFpbGRpcnNpemVuYW1l
Owogc3RydWN0IHN0YXQgc3RhdF9idWY7CiBpbnQJbWFpbGRpcnNpemVfZmQgPSAtMTsKLW9m
Zl90CW1haWxkaXJzaXplX3NpemU7Ci1pbnQgICAgIG1haWxkaXJzaXplX2NudDsKK3N0b3Jh
Z2VfdCBtYWlsZGlyc2l6ZV9zaXplOworc3RvcmFnZV90IG1haWxkaXJzaXplX2NudDsKIHVu
c2lnbmVkIG1haWxkaXJzaXplX25saW5lczsKIGludAluOwogdGltZV90CXRtOwpAQCAtNzQ3
LDcgKzc3Myw3IEBACiB9CiAKIGludAltYWlsZGlyX2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRp
ciwgaW50IG1haWxkaXJzaXplX2ZkLAotCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxvbmcg
bWFpbGRpcnNpemVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCkKKwljb25zdCBjaGFyICpx
dW90YV90eXBlLCBzdG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1haWxk
aXJzaXplX2NudCkKIHsKICAgIGludCByZXQgPSAwOwogCkBAIC03NzYsNyArODAyLDcgQEAK
IH0KIAogc3RhdGljIGludCBkb2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRpciwgaW50IG1haWxk
aXJzaXplX2ZkLAotCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxvbmcgbWFpbGRpcnNpemVf
c2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCwKKwljb25zdCBjaGFyICpxdW90YV90eXBlLCBz
dG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1haWxkaXJzaXplX2NudCwK
IAlpbnQgaXNuZXcpCiB7CiB1bmlvbgl7CkBAIC04NDUsOCArODcxLDcgQEAKIAkJbmlvdj0y
OwogCX0KIAotCi0Jc3ByaW50Zih1LmJ1ZiwgIiVsZCAlZFxuIiwgbWFpbGRpcnNpemVfc2l6
ZSwgbWFpbGRpcnNpemVfY250KTsKKwlzcHJpbnRmKHUuYnVmLCAiJWxsdSAlbHVcbiIsIG1h
aWxkaXJzaXplX3NpemUsIG1haWxkaXJzaXplX2NudCk7CiAJaW92W25pb3ZdLmlvdl9iYXNl
PXUuYnVmOwogCWlvdltuaW92XS5pb3ZfbGVuPXN0cmxlbih1LmJ1Zik7CiAKQEAgLTk3NCw3
ICs5OTksNyBAQAogCXJldHVybiAobik7CiB9CiAKLXN0YXRpYyBpbnQgY291bnRjdXJuZXco
Y29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKm1heHRpbWUsIG9mZl90ICpzaXplcCwgaW50ICpj
bnRwKQorc3RhdGljIGludCBjb3VudGN1cm5ldyhjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAq
bWF4dGltZSwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKQogewogY2hhcgkq
cD0oY2hhciAqKW1hbGxvYyhzdHJsZW4oZGlyKSs1KTsKIGludAluOwpAQCAtOTkxLDcgKzEw
MTYsNyBAQAogCXJldHVybiAobik7CiB9CiAKLXN0YXRpYyBpbnQgY291bnRzdWJkaXIoY29u
c3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpzdWJkaXIsIHRpbWVfdCAqbWF4dGltZSwgb2Zm
X3QgKnNpemVwLCBpbnQgKmNudHApCitzdGF0aWMgaW50IGNvdW50c3ViZGlyKGNvbnN0IGNo
YXIgKmRpciwgY29uc3QgY2hhciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUsIHN0b3JhZ2Vf
dCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIGNoYXIJKnA7CiBpbnQJbjsKQEAgLTEw
MDgsMTMgKzEwMzMsMTMgQEAKIAlyZXR1cm4gKG4pOwogfQogCi1zdGF0aWMgaW50IGRvY291
bnQoY29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKmRpcnN0YW1wLCBvZmZfdCAqc2l6ZXAsIGlu
dCAqY250cCkKK3N0YXRpYyBpbnQgZG9jb3VudChjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAq
ZGlyc3RhbXAsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIHN0cnVj
dAlzdGF0CXN0YXRfYnVmOwogY2hhcgkqcDsKIERJUgkqZGlycDsKIHN0cnVjdCBkaXJlbnQg
KmRlOwotdW5zaWduZWQgbG9uZwlzOworc3RvcmFnZV90IHM7CiAKIAlpZiAoc3RhdChkaXIs
ICZzdGF0X2J1ZikpCXJldHVybiAoMCk7CS8qIElnbm9yZSAqLwogCWlmIChzdGF0X2J1Zi5z
dF9tdGltZSA+ICpkaXJzdGFtcCkJKmRpcnN0YW1wPXN0YXRfYnVmLnN0X210aW1lOwpAQCAt
MTA0NCw3ICsxMDY5LDcgQEAKIAogCiAJCWlmIChtYWlsZGlyX3BhcnNlcXVvdGEobiwgJnMp
ID09IDApCi0JCQlzdGF0X2J1Zi5zdF9zaXplPXM7CisJCQkqc2l6ZXAgKz0gczsKIAkJZWxz
ZQogCQl7CiAJCQlwPShjaGFyICopbWFsbG9jKHN0cmxlbihkaXIpK3N0cmxlbihuKSsyKTsK
QEAgLTEwNjAsOCArMTA4NSw4IEBACiAJCQkJY29udGludWU7CiAJCQl9CiAJCQlmcmVlKHAp
OworCQkJKnNpemVwICs9IHN0YXRfYnVmLnN0X3NpemU7CiAJCX0KLQkJKnNpemVwICs9IHN0
YXRfYnVmLnN0X3NpemU7CiAJCSsrKmNudHA7CiAJfQogCkBAIC0xMTMyLDcgKzExNTcsNyBA
QAogICAgICAgICByZXR1cm4gKHN0cmNweShhcmcsIHApKTsKIH0KIAotc3RhdGljIGludCBt
YWlsZGlyX3BhcnNlcXVvdGEoY29uc3QgY2hhciAqbiwgdW5zaWduZWQgbG9uZyAqcykKK3N0
YXRpYyBpbnQgbWFpbGRpcl9wYXJzZXF1b3RhKGNvbnN0IGNoYXIgKm4sIHN0b3JhZ2VfdCAq
cykKIHsKIGNvbnN0IGNoYXIgKm87CiBpbnQgICAgIHllczsKQEAgLTExNjQsNiArMTE4OSw3
IEBACiAgICAgICAgICAgICAgICAgKnM9MDsKICAgICAgICAgICAgICAgICB3aGlsZSAoKm8g
Pj0gJzAnICYmICpvIDw9ICc5JykKICAgICAgICAgICAgICAgICAgICAgICAgICpzPSAqcyox
MCArICgqbysrIC0gJzAnKTsKKwogICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuICgtMSk7CmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5v
cmlnL21haWxkaXJxdW90YS5oIHZwb3BtYWlsLTUuNS4wL21haWxkaXJxdW90YS5oCi0tLSB2
cG9wbWFpbC01LjUuMC5vcmlnL21haWxkaXJxdW90YS5oCTIwMTAtMTEtMDUgMTg6Mzc6MjIu
MDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9tYWlsZGlycXVvdGEuaAkyMDE1
LTA5LTE4IDEyOjM2OjA3LjU2NTA5MzI0MCArMDEwMApAQCAtOCw2ICs4LDggQEAKICAgIC1C
aWxsIFNodXBwCiAgKi8KIAorI2luY2x1ZGUgInN0b3JhZ2UuaCIKKwogI2RlZmluZSBRVU9U
QV9XQVJOX1BFUkNFTlQgOTAKIAogLyogSSd2ZSByZW1vdmVkIHByZXR0eSBtdWNoIHRoZSB3
aG9sZSBmaWxlIGV4ZWNlcHQgZm9yCkBAIC0xNSw4ICsxNyw4IEBACiAgICBJInZlIG1hZGUg
dGhlIGNvdXJpZXIgZnVuY3Rpb25zIHN0YXRpYy4KICAgIC0gQnJpYW4gS29sYWNpCiAqLwot
aW50IHJlYWRkb21haW5xdW90YShjb25zdCBjaGFyICpkaXIsIGxvbmcgKnNpemVwLCBpbnQg
KmNudHApOwotaW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGlyLCBsb25nICpzaXpl
cCwgaW50ICpjbnRwKTsKK2ludCByZWFkZG9tYWlucXVvdGEoY29uc3QgY2hhciAqZGlyLCBz
dG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApOworaW50IHJlYWR1c2VycXVvdGEo
Y29uc3QgY2hhciogZGlyLCBzdG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApOwog
aW50IGRvbWFpbl9vdmVyX21haWxkaXJxdW90YShjb25zdCBjaGFyICp1c2VyZGlyKTsKIGlu
dCB1c2VyX292ZXJfbWFpbGRpcnF1b3RhKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAq
cXVvdGEpOwogaW50IHZtYWlsZGlyX3JlYWRxdW90YShjb25zdCBjaGFyICpkaXIsCWNvbnN0
IGNoYXIgKnF1b3RhKTsKQEAgLTI0LDUgKzI2LDUgQEAKIGludCBtYWlsZGlyX2FkZHF1b3Rh
KGNvbnN0IGNoYXIgKiwJLyogUG9pbnRlciB0byB0aGUgbWFpbGRpciAqLwogCWludCwJLyog
TXVzdCBiZSB0aGUgaW50IHBvaW50ZWQgdG8gYnkgMm5kIGFyZyB0byBjaGVja3F1b3RhICov
CiAJY29uc3QgY2hhciAqLAkvKiBUaGUgcXVvdGEgKi8KLQlsb25nLAkvKiArLy0gYnl0ZXMg
Ki8KLQlpbnQpOwkvKiArLy0gZmlsZXMgKi8KKwlzdG9yYWdlX3QsCS8qICsvLSBieXRlcyAq
LworCXN0b3JhZ2VfdCk7CS8qICsvLSBmaWxlcyAqLwpkaWZmIC11UHIgdnBvcG1haWwtNS41
LjAub3JpZy92YWRkdXNlci5jIHZwb3BtYWlsLTUuNS4wL3ZhZGR1c2VyLmMKLS0tIHZwb3Bt
YWlsLTUuNS4wLm9yaWcvdmFkZHVzZXIuYwkyMDEwLTExLTA1IDE4OjM3OjIyLjAwMDAwMDAw
MCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdmFkZHVzZXIuYwkyMDE1LTA5LTE4IDEyOjM3
OjA4LjM1NTA5NTExOCArMDEwMApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgInZwb3Bt
YWlsLmgiCiAjaW5jbHVkZSAidmF1dGguaCIKICNpbmNsdWRlICJ2YXV0aG1vZHVsZS5oIgor
I2luY2x1ZGUgInB3c3RyLmgiCiAKIGNoYXIgRW1haWxbTUFYX0JVRkZdOwogY2hhciBQYXNz
d2RbTUFYX0JVRkZdOwpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92Y2hrcHcuYyB2
cG9wbWFpbC01LjUuMC92Y2hrcHcuYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92Y2hrcHcu
YwkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41
LjAvdmNoa3B3LmMJMjAxNS0wOS0xOCAxMjozNjowNy41NjYwOTMyOTggKzAxMDAKQEAgLTcz
MywyNiArNzMzLDI2IEBACiAKICAgaWYgKCAodmVycm9yID09IFZMT0dfRVJST1JfUEFTU1dE
KSAmJiAoIEVOQUJMRV9MT0dHSU5HPT0xIHx8IEVOQUJMRV9MT0dHSU5HPT0yIHx8IEVOQUJM
RV9MT0dHSU5HPT0zIHx8IEVOQUJMRV9MT0dHSU5HPT00ICkgKSB7CiAgICAgICBpZiAoIChs
b2dzcWwodmVycm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElw
QWRkciwgTG9nTGluZSkgKSAhPSAwICkgewotICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNF
LCJ2Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CisgICAgICAgICAgc3lzbG9nKExP
R19OT1RJQ0UsIiVzIiwidmNoa3B3OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOwogICAgICAg
fQogICAgICAgaWYgKCAobG9nc3FsKHZlcnJvciwgVGhlVXNlciwgVGhlRG9tYWluLCBUaGVQ
YXNzLCBUaGVOYW1lLCBJcEFkZHIsIExvZ0xpbmUpICkgIT0gMCApIHsKLSAgICAgICAgICBz
eXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOworICAg
ICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIlcyIsInZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FM
IGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNlIGlmICggdmVycm9yID09IFZMT0dfRVJST1Jf
SU5URVJOQUwgKSB7CiAgICAgICBpZiAoIChsb2dzcWwodmVycm9yLCBUaGVVc2VyLCBUaGVE
b21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRkciwgTG9nTGluZSkgKSAhPSAwICkgewot
ICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBjYW4ndCB3cml0ZSBTUUwgbG9n
cyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIlcyIsInZjaGtwdzogY2FuJ3Qg
d3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNlIGlmICggdmVycm9yID09IFZM
T0dfRVJST1JfTE9HT04gKSB7CiAgICAgICBpZiAoIChsb2dzcWwodmVycm9yLCBUaGVVc2Vy
LCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRkciwgTG9nTGluZSkgKSAhPSAw
ICkgewotICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBjYW4ndCB3cml0ZSBT
UUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIlcyIsInZjaGtwdzog
Y2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNlIGlmICggdmVycm9y
ID09IFZMT0dfRVJST1JfQUNDRVNTICkgewogICAgICAgaWYgKCAobG9nc3FsKHZlcnJvciwg
VGhlVXNlciwgVGhlRG9tYWluLCBUaGVQYXNzLCBUaGVOYW1lLCBJcEFkZHIsIExvZ0xpbmUp
ICkgIT0gMCApIHsKLSAgICAgICAgc3lzbG9nKExPR19OT1RJQ0UsInZjaGtwdzogY2FuJ3Qg
d3JpdGUgU1FMIGxvZ3MiKTsKKyAgICAgICAgICBzeXNsb2coTE9HX05PVElDRSwiJXMiLCJ2
Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CiAgICAgICB9CiAgIH0gZWxzZSBpZiAo
IHZlcnJvciA9PSBWTE9HX0FVVEggJiYgKCBFTkFCTEVfTE9HR0lORyA9PSAxIHx8IEVOQUJM
RV9MT0dHSU5HID09IDQgKSApIHsKICAgICAgIGlmICggKGxvZ3NxbCh2ZXJyb3IsIFRoZVVz
ZXIsIFRoZURvbWFpbiwgVGhlUGFzcywgVGhlTmFtZSwgSXBBZGRyLCBMb2dMaW5lKSApICE9
IDAgKSB7Ci0gICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCJ2Y2hrcHc6IGNhbid0IHdyaXRl
IFNRTCBsb2dzIik7CisgICAgICAgICAgc3lzbG9nKExPR19OT1RJQ0UsIiVzIiwidmNoa3B3
OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOwogICAgICAgfQogICB9CiAjZW5kaWYKZGlmZiAt
dVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmRlbGRvbWFpbi5jIHZwb3BtYWlsLTUuNS4wL3Zk
ZWxkb21haW4uYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92ZGVsZG9tYWluLmMJMjAxMC0x
MS0wNSAxODozNzoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3ZkZWxk
b21haW4uYwkyMDE1LTA5LTE4IDEyOjM2OjA3LjU2NjA5MzI5OCArMDEwMApAQCAtNDMsOSAr
NDMsOSBAQAogIGludCBlcnI9MDsKIAogIGRvbWFpbl9lbnRyeSAqZW50cnk7Ci0gY2hhciAq
YWxpYXNlc1tNQVhfRE9NX0FMSUFTXTsKKyBzdHJpbmdfbGlzdCBhbGlhc2VzOwogIGNoYXIg
cGFyZW50W01BWF9CVUZGXTsKLSBpbnQgIGksIGFsaWFzY291bnQ9MCwgZG9pdD0xOworIGlu
dCAgaSwgZG9pdD0xOwogCiAgICBlcnIgPSB2YXV0aF9sb2FkX21vZHVsZShOVUxMKTsKICAg
IGlmICghZXJyKQpAQCAtNjksOSArNjksMTEgQEAKIAkJfQogCX0KIAorCXN0cmluZ19saXN0
X2luaXQoJmFsaWFzZXMsIDEwKTsKKwogCXdoaWxlKCBlbnRyeSApIHsKIAkJaWYgKHN0cmNt
cChlbnRyeS0+ZG9tYWluLCBlbnRyeS0+cmVhbGRvbWFpbikgIT0gMCkgewotCQkJYWxpYXNl
c1thbGlhc2NvdW50KytdID0gc3RyZHVwKGVudHJ5LT5kb21haW4pOworCQkJc3RyaW5nX2xp
c3RfYWRkKCZhbGlhc2VzLCBlbnRyeS0+ZG9tYWluKTsKIAkJfSBlbHNlIHsKIAkJCXNucHJp
bnRmKHBhcmVudCxzaXplb2YocGFyZW50KSwiJXMiLGVudHJ5LT5kb21haW4pOwogCQl9CkBA
IC03OSw3ICs4MSw3IEBACiAJCWVudHJ5ID0gZ2V0X2RvbWFpbl9lbnRyaWVzKE5VTEwpOwog
CX0KIAotCWlmKCBhbGlhc2NvdW50ID4gMCAmJiAwID09IHN0cm5jbXAoRG9tYWluLHBhcmVu
dCxNQVhfQlVGRikpIHsgIAorCWlmKCBhbGlhc2VzLmNvdW50ID4gMCAmJiAwID09IHN0cm5j
bXAoRG9tYWluLHBhcmVudCxNQVhfQlVGRikpIHsgIAogCQkvLyAgSGF2ZSBhbGlhc2VzCiAJ
CWlmKCBmb3JjZSApIHsKIAkJCXByaW50ZigiV2FybmluZzogQWxpYXMgZG9tYWlucyBkZWxl
dGVkOlxuIik7CkBAIC04OCwxMiArOTAsMTMgQEAKIAkJCWRvaXQ9MDsKIAkJfQogCi0JCWZv
cihpPTA7aTxhbGlhc2NvdW50O2krKykgewotCQkJcHJpbnRmICgiICAgJXNcbiIsIGFsaWFz
ZXNbaV0pOwotCQkJZnJlZSggYWxpYXNlc1tpXSApOworCQlmb3IoaT0wO2k8YWxpYXNlcy5j
b3VudDtpKyspIHsKKwkJCXByaW50ZiAoIiAgICVzXG4iLCBhbGlhc2VzLnZhbHVlc1tpXSk7
CiAJCX0gCiAJfQogCisJc3RyaW5nX2xpc3RfZnJlZSgmYWxpYXNlcyk7CisKICAgICAgICAg
aWYoIGRvaXQgKSB7CiAJaWYgKCAoZXJyPXZkZWxkb21haW4oRG9tYWluKSkgIT0gVkFfU1VD
Q0VTUykgewogCQlwcmludGYoIkVycm9yOiAlc1xuIiwgdmVycm9yKGVycikpOwpkaWZmIC11
UHIgdnBvcG1haWwtNS41LjAub3JpZy92ZG9taW5mby5jIHZwb3BtYWlsLTUuNS4wL3Zkb21p
bmZvLmMKLS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmRvbWluZm8uYwkyMDEwLTExLTA1IDE4
OjM3OjIzLjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdmRvbWluZm8uYwky
MDE1LTA5LTE4IDEyOjM2OjA3LjU2NzA5MzM1NSArMDEwMApAQCAtMjQ4LDggKzI0OCw4IEBA
CiB2b2lkIGRpc3BsYXlfb25lX2RvbWFpbiggY2hhciAqIERvbWFpbiApCiB7CiAgZG9tYWlu
X2VudHJ5ICplbnRyeTsKLSBjaGFyICphbGlhc2VzW01BWF9ET01fQUxJQVNdOwotIGludCAg
aSwgYWxpYXNjb3VudD0wOworIHN0cmluZ19saXN0IGFsaWFzZXM7CisgaW50ICBpOwogCiAg
ICAgZW50cnkgPSBnZXRfZG9tYWluX2VudHJpZXMoIERvbWFpbiApOwogICAgIGlmIChlbnRy
eT09TlVMTCkgewpAQCAtMjYyLDExICsyNjIsMTMgQEAKICAgICAgIH0KICAgICB9CiAKKyAg
ICBzdHJpbmdfbGlzdF9pbml0KCZhbGlhc2VzLCAxMCk7CisKICAgICB3aGlsZSggZW50cnkg
KSB7CiAJaWYgKHN0cmNtcChlbnRyeS0+ZG9tYWluLCBlbnRyeS0+cmVhbGRvbWFpbikgIT0g
MCkgewogLy8gCQlwcmludGYgKCJOb3RlOiAgICVzIGlzIGFuIGFsaWFzIGZvciAlc1xuIiwK
IC8vICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5kb21haW4sIGVudHJ5LT5yZWFs
ZG9tYWluKTsKLSAgICAgICAgICAgICAgICBhbGlhc2VzW2FsaWFzY291bnQrK10gPSBzdHJk
dXAoZW50cnktPmRvbWFpbik7CisgICAgICAgICAgICAgICAgc3RyaW5nX2xpc3RfYWRkKCZh
bGlhc2VzLCBlbnRyeS0+ZG9tYWluKTsKIAogICAgICAgICB9IGVsc2UgewogCQlkaXNwbGF5
X2RvbWFpbihlbnRyeS0+ZG9tYWluLCBlbnRyeS0+cGF0aCwgZW50cnktPnVpZCwgCkBAIC0y
NzYsOSArMjc4LDkgQEAKICAgICAgICAgZW50cnkgPSBnZXRfZG9tYWluX2VudHJpZXMoTlVM
TCk7CiAgICAgfQogCi0gICAgZm9yKGk9MDtpPGFsaWFzY291bnQ7aSsrKSB7Ci0gCXByaW50
ZiAoImFsaWFzOiAgJXNcbiIsIGFsaWFzZXNbaV0pOwotICAgICAgICBmcmVlKCBhbGlhc2Vz
W2ldICk7Ci0gICAgfSAKKyAgICBmb3IoaT0wO2k8YWxpYXNlcy5jb3VudDtpKyspIHsKKyAJ
cHJpbnRmICgiYWxpYXM6ICAlc1xuIiwgYWxpYXNlcy52YWx1ZXNbaV0pOworICAgIH0KKyAg
ICBzdHJpbmdfbGlzdF9mcmVlKCZhbGlhc2VzKTsgCiB9CiAKZGlmZiAtdVByIHZwb3BtYWls
LTUuNS4wLm9yaWcvdmxpbWl0cy5jIHZwb3BtYWlsLTUuNS4wL3ZsaW1pdHMuYwotLS0gdnBv
cG1haWwtNS41LjAub3JpZy92bGltaXRzLmMJMjAxMC0xMS0wNSAxODozNzoyMy4wMDAwMDAw
MDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3ZsaW1pdHMuYwkyMDE1LTA5LTE4IDEyOjM2
OjA3LjU2NzA5MzM1NSArMDEwMApAQCAtMTg3LDIyICsxODcsMjIgQEAKIAogCQkJZWxzZSBp
ZiAoIXN0cmNtcChzMSwgInF1b3RhIikpIHsKICAgICAgICAgICAgICAgICBpZiAoczIpCi0g
ICAgICAgICAgICAgICAgbGltaXRzLT5kaXNrcXVvdGEgPSBhdG9pKHMyKTsKKyAgICAgICAg
ICAgICAgICBsaW1pdHMtPmRpc2txdW90YSA9IHN0cnRvbGwoczIsIE5VTEwsIDEwKTsKICAg
ICAgICAgICAgIH0KIAogCQkJZWxzZSBpZiAoIXN0cmNtcChzMSwgIm1heG1zZ2NvdW50Iikp
IHsKICAgICAgICAgICAgICAgICBpZiAoczIpCi0gICAgICAgICAgICAgICAgbGltaXRzLT5t
YXhtc2djb3VudCA9IGF0b2koczIpOworICAgICAgICAgICAgICAgIGxpbWl0cy0+bWF4bXNn
Y291bnQgPSBzdHJ0b2xsKHMyLCBOVUxMLCAxMCk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICghc3RyY21wKHMxLCAiZGVmYXVsdF9xdW90YSIpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHMyKQotICAgICAgICAgICAgICAgIGxpbWl0cy0+ZGVmYXVsdHF1b3RhID0g
YXRvaShzMik7CisgICAgICAgICAgICAgICAgbGltaXRzLT5kZWZhdWx0cXVvdGEgPSBzdHJ0
b2xsKHMyLCBOVUxMLCAxMCk7CiAgICAgICAgICAgICB9CiAKIAkJCWVsc2UgaWYgKCFzdHJj
bXAoczEsICJkZWZhdWx0X21heG1zZ2NvdW50IikpIHsKICAgICAgICAgICAgICAgICBpZiAo
czIpCi0gICAgICAgICAgICAgICAgbGltaXRzLT5kZWZhdWx0bWF4bXNnY291bnQgPSBhdG9p
KHMyKTsKKyAgICAgICAgICAgICAgICBsaW1pdHMtPmRlZmF1bHRtYXhtc2djb3VudCA9IHN0
cnRvbGwoczIsIE5VTEwsIDEwKTsKICAgICAgICAgICAgIH0KIAogCQkJZWxzZSBpZiAoIXN0
cmNtcChzMSwgImRpc2FibGVfcG9wIikpIHsKQEAgLTQ4MCwxMCArNDgwLDEwIEBACiAgICAg
ICAgIGZwcmludGYoZnMsICJtYXhmb3J3YXJkczogJWRcbiIsIGxpbWl0cy0+bWF4Zm9yd2Fy
ZHMpOwogICAgICAgICBmcHJpbnRmKGZzLCAibWF4YXV0b3Jlc3BvbmRlcnM6ICVkXG4iLCBs
aW1pdHMtPm1heGF1dG9yZXNwb25kZXJzKTsKICAgICAgICAgZnByaW50ZihmcywgIm1heG1h
aWxpbmdsaXN0czogJWRcbiIsIGxpbWl0cy0+bWF4bWFpbGluZ2xpc3RzKTsKLSAgICAgICAg
ZnByaW50ZihmcywgInF1b3RhOiAlZFxuIiwgbGltaXRzLT5kaXNrcXVvdGEpOwotICAgICAg
ICBmcHJpbnRmKGZzLCAibWF4bXNnY291bnQ6ICVkXG4iLCBsaW1pdHMtPm1heG1zZ2NvdW50
KTsKLSAgICAgICAgZnByaW50ZihmcywgImRlZmF1bHRfcXVvdGE6ICVkXG4iLCBsaW1pdHMt
PmRlZmF1bHRxdW90YSk7Ci0gICAgICAgIGZwcmludGYoZnMsICJkZWZhdWx0X21heG1zZ2Nv
dW50OiAlZFxuIiwgbGltaXRzLT5kZWZhdWx0bWF4bXNnY291bnQpOworICAgICAgICBmcHJp
bnRmKGZzLCAicXVvdGE6ICVsbHVcbiIsIGxpbWl0cy0+ZGlza3F1b3RhKTsKKyAgICAgICAg
ZnByaW50ZihmcywgIm1heG1zZ2NvdW50OiAlbGx1XG4iLCBsaW1pdHMtPm1heG1zZ2NvdW50
KTsKKyAgICAgICAgZnByaW50ZihmcywgImRlZmF1bHRfcXVvdGE6ICVsbHVcbiIsIGxpbWl0
cy0+ZGVmYXVsdHF1b3RhKTsKKyAgICAgICAgZnByaW50ZihmcywgImRlZmF1bHRfbWF4bXNn
Y291bnQ6ICVsbHVcbiIsIGxpbWl0cy0+ZGVmYXVsdG1heG1zZ2NvdW50KTsKICAgICAgICAg
aWYgKGxpbWl0cy0+ZGlzYWJsZV9wb3ApIGZwcmludGYoZnMsICJkaXNhYmxlX3BvcFxuIik7
CiAgICAgICAgIGlmIChsaW1pdHMtPmRpc2FibGVfaW1hcCkgZnByaW50ZihmcywgImRpc2Fi
bGVfaW1hcFxuIik7CiAgICAgICAgIGlmIChsaW1pdHMtPmRpc2FibGVfZGlhbHVwKSBmcHJp
bnRmKGZzLCAiZGlzYWJsZV9kaWFsdXBcbiIpOwpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAu
b3JpZy92bGltaXRzLmggdnBvcG1haWwtNS41LjAvdmxpbWl0cy5oCi0tLSB2cG9wbWFpbC01
LjUuMC5vcmlnL3ZsaW1pdHMuaAkyMDEwLTExLTA1IDE4OjM3OjIyLjAwMDAwMDAwMCArMDAw
MAorKysgdnBvcG1haWwtNS41LjAvdmxpbWl0cy5oCTIwMTUtMDktMTggMTI6MzY6MDcuNTY4
MDkzNDEwICswMTAwCkBAIC0yMCw2ICsyMCw4IEBACiAjZGVmaW5lIFZMSU1JVF9ESVNBQkxF
X0FMTCAoVkxJTUlUX0RJU0FCTEVfQ1JFQVRFfFZMSU1JVF9ESVNBQkxFX01PRElGWXxWTElN
SVRfRElTQUJMRV9ERUxFVEUpCiAjZGVmaW5lIFZMSU1JVF9ESVNBQkxFX0JJVFMgMwogCisj
aW5jbHVkZSAic3RvcmFnZS5oIgorCiBzdHJ1Y3QgdmxpbWl0cyB7CiAgICAgICAvKiBtYXgg
c2VydmljZSBsaW1pdHMgKi8KICAgICAgIGludCAgICAgICBtYXhwb3BhY2NvdW50czsKQEAg
LTI5LDEwICszMSwxMCBAQAogICAgICAgaW50ICAgICAgIG1heG1haWxpbmdsaXN0czsKIAog
ICAgICAgLyogcXVvdGEgJiBtZXNzYWdlIGNvdW50IGxpbWl0cyAqLwotICAgICAgaW50ICAg
ICAgIGRpc2txdW90YTsKLSAgICAgIGludCAgICAgICBtYXhtc2djb3VudDsKLSAgICAgIGlu
dCAgICAgICBkZWZhdWx0cXVvdGE7Ci0gICAgICBpbnQgICAgICAgZGVmYXVsdG1heG1zZ2Nv
dW50OworICAgICAgc3RvcmFnZV90IGRpc2txdW90YTsKKyAgICAgIHN0b3JhZ2VfdCBtYXht
c2djb3VudDsKKyAgICAgIHN0b3JhZ2VfdCBkZWZhdWx0cXVvdGE7CisgICAgICBzdG9yYWdl
X3QgZGVmYXVsdG1heG1zZ2NvdW50OwogCiAgICAgICAvKiB0aGUgZm9sbG93aW5nIGFyZSAw
IChmYWxzZSkgb3IgMSAodHJ1ZSkgKi8KICAgICAgIHNob3J0ICAgICBkaXNhYmxlX3BvcDsK
ZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmxpc3RsaWIuYyB2cG9wbWFpbC01LjUu
MC92bGlzdGxpYi5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3ZsaXN0bGliLmMJMjAxMC0x
MS0wNSAxODozNzoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3ZsaXN0
bGliLmMJMjAxNS0wOS0xOCAxMjozNjowNy41NjgwOTM0MTAgKzAxMDAKQEAgLTE5Myw4ICsx
OTMsOCBAQAogCiAgICAgaWYoIERvbWFpbk9ubHkgKSB7ICAgIC8vICAgSGF2ZSBkb21haW4K
ICAgICAgICAgaWYgKCBzdHJzdHIoIEFkZHJlc3MsICJAIikgIT0gTlVMTCApIHJldHVybig0
KTsKLSAgICAgICAgc25wcmludGYoIExJLT5OYW1lLCAgIE1BWF9GSUxFX05BTUUsICIlcyIs
ICIiICk7Ci0gICAgICAgIHNucHJpbnRmKCBMSS0+RG9tYWluLCBNQVhfRklMRV9OQU1FLCAi
JXMiLCBBZGRyZXNzICk7CisgICAgICAgIHNucHJpbnRmKCBMSS0+TmFtZSwgICBzaXplb2Yo
TEktPk5hbWUpLCAiJXMiLCAiIiApOworICAgICAgICBzbnByaW50ZiggTEktPkRvbWFpbiwg
c2l6ZW9mKExJLT5Eb21haW4pLCAiJXMiLCBBZGRyZXNzICk7CiAgICAgfQogCiAgICAgZWxz
ZSB7ICAgICAgICAgICAgICAgIC8vICAgSGF2ZSBtYWlsIGxpc3QKQEAgLTIwNiwxMyArMjA2
LDEzIEBACiAKICAgICBpZigoIExJLT5lbnRyeSA9IGdldF9kb21haW5fZW50cmllcyggTEkt
PkRvbWFpbiApKSA9PSBOVUxMICkgcmV0dXJuKDMpOwogCi0gICAgc25wcmludGYoIExJLT5P
d25lckVtYWlsLCAgIE1BWF9GSUxFX05BTUUsICJwb3N0bWFzdGVyQCVzIiwgTEktPkRvbWFp
biApOyAKLSAgICBzbnByaW50ZiggTEktPlJlcGx5VG9fQWRkciwgTUFYX0ZJTEVfTkFNRSwg
IiVzIiwgIiIgKTsKLSAgICBzbnByaW50ZiggTEktPlNRTEJhc2UsICAgICAgTUFYX0ZJTEVf
TkFNRSwgImV6bWxtIiApOwotICAgIHNucHJpbnRmKCBMSS0+U1FMSG9zdCwgICAgICBNQVhf
RklMRV9OQU1FLCAibG9jYWxob3N0IiApOwotICAgIHNucHJpbnRmKCBMSS0+U1FMUGFzcywg
ICAgICBNQVhfRklMRV9OQU1FLCAiZGJwYXNzIiApOwotICAgIHNucHJpbnRmKCBMSS0+U1FM
VGFibGUsICAgICBNQVhfRklMRV9OQU1FLCAiZXptbG0iICk7Ci0gICAgc25wcmludGYoIExJ
LT5TUUxVc2VyLCAgICAgIE1BWF9GSUxFX05BTUUsICJkYlVzZXIiICk7CisgICAgc25wcmlu
dGYoIExJLT5Pd25lckVtYWlsLCAgIHNpemVvZihMSS0+T3duZXJFbWFpbCksICJwb3N0bWFz
dGVyQCVzIiwgTEktPkRvbWFpbiApOyAKKyAgICBzbnByaW50ZiggTEktPlJlcGx5VG9fQWRk
ciwgc2l6ZW9mKExJLT5SZXBseVRvX0FkZHIpLCAiJXMiLCAiIiApOworICAgIHNucHJpbnRm
KCBMSS0+U1FMQmFzZSwgICAgICBzaXplb2YoTEktPlNRTEJhc2UpLCAiZXptbG0iICk7Cisg
ICAgc25wcmludGYoIExJLT5TUUxIb3N0LCAgICAgIHNpemVvZihMSS0+U1FMSG9zdCksICJs
b2NhbGhvc3QiICk7CisgICAgc25wcmludGYoIExJLT5TUUxQYXNzLCAgICAgIHNpemVvZihM
SS0+U1FMUGFzcyksICJkYnBhc3MiICk7CisgICAgc25wcmludGYoIExJLT5TUUxUYWJsZSwg
ICAgIHNpemVvZihMSS0+U1FMVGFibGUpLCAiZXptbG0iICk7CisgICAgc25wcmludGYoIExJ
LT5TUUxVc2VyLCAgICAgIHNpemVvZihMSS0+U1FMVXNlciksICJkYlVzZXIiICk7CiAKIC8v
ICAgIHByaW50ZiggImJlZm9yZSBtYWtlIG5hbWVcbiIgKTsKIApkaWZmIC11UHIgdnBvcG1h
aWwtNS41LjAub3JpZy92bW9kZG9tbGltaXRzLmMgdnBvcG1haWwtNS41LjAvdm1vZGRvbWxp
bWl0cy5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Ztb2Rkb21saW1pdHMuYwkyMDEwLTEx
LTA1IDE4OjM3OjIyLjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdm1vZGRv
bWxpbWl0cy5jCTIwMTUtMDktMTggMTI6MzY6MDcuNTY5MDkzNDYzICswMTAwCkBAIC0yMTIs
MTAgKzIxMiwxMCBAQAogICAgICAgICAgICAgcHJpbnRmICgobGltaXRzLnBlcm1fZGVmYXVs
dHF1b3RhICYgVkxJTUlUX0RJU0FCTEVfREVMRVRFID8gIkRFTllfREVMRVRFICAiIDoiQUxM
T1dfREVMRVRFICIpICk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHByaW50ZigiXG4i
KTsKLSAgICAgICAgICAgIHByaW50ZigiRG9tYWluIFF1b3RhOiAlZCBNQlxuIiwgbGltaXRz
LmRpc2txdW90YSk7Ci0gICAgICAgICAgICBwcmludGYoIkRlZmF1bHQgVXNlciBRdW90YTog
JWQgYnl0ZXNcbiIsIGxpbWl0cy5kZWZhdWx0cXVvdGEpOwotICAgICAgICAgICAgcHJpbnRm
KCJNYXggRG9tYWluIE1lc3NhZ2VzOiAlZFxuIiwgbGltaXRzLm1heG1zZ2NvdW50KTsKLSAg
ICAgICAgICAgIHByaW50ZigiRGVmYXVsdCBNYXggTWVzc2FnZXMgcGVyIFVzZXI6ICVkXG4i
LCBsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsKKyAgICAgICAgICAgIHByaW50ZigiRG9t
YWluIFF1b3RhOiAlbGx1IE1CXG4iLCBsaW1pdHMuZGlza3F1b3RhKTsKKyAgICAgICAgICAg
IHByaW50ZigiRGVmYXVsdCBVc2VyIFF1b3RhOiAlbGx1IGJ5dGVzXG4iLCBsaW1pdHMuZGVm
YXVsdHF1b3RhKTsKKyAgICAgICAgICAgIHByaW50ZigiTWF4IERvbWFpbiBNZXNzYWdlczog
JWxsdVxuIiwgbGltaXRzLm1heG1zZ2NvdW50KTsKKyAgICAgICAgICAgIHByaW50ZigiRGVm
YXVsdCBNYXggTWVzc2FnZXMgcGVyIFVzZXI6ICVsbHVcbiIsIGxpbWl0cy5kZWZhdWx0bWF4
bXNnY291bnQpOwogICAgICAgICAgICAgcmV0dXJuKHZleGl0KDApKTsKICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIApAQCAtMjM3LDE2ICsyMzcsMTYgQEAKICAgICAgICAgCiAgICAg
ICAgIC8qIHF1b3RhICYgbWVzc2FnZSBjb3VudCBsaW1pdHMgKi8KICAgICAgICAgaWYgKERv
bWFpblF1b3RhWzBdICE9IDApIHsKLSAgICAgICAgICAgIGxpbWl0cy5kaXNrcXVvdGEgPSBh
dG9pKERvbWFpblF1b3RhKTsKKyAgICAgICAgICAgIGxpbWl0cy5kaXNrcXVvdGEgPSBzdHJ0
b2xsKERvbWFpblF1b3RhLCBOVUxMLCAxMCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKERv
bWFpbk1heE1zZ0NvdW50WzBdICE9IDApIHsKLSAgICAgICAgICAgIGxpbWl0cy5tYXhtc2dj
b3VudCA9IGF0b2koRG9tYWluTWF4TXNnQ291bnQpOworICAgICAgICAgICAgbGltaXRzLm1h
eG1zZ2NvdW50ID0gc3RydG9sbChEb21haW5NYXhNc2dDb3VudCwgTlVMTCwgMTApOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChEZWZhdWx0VXNlclF1b3RhWzBdICE9IDApIHsKLSAgICAg
ICAgICAgIGxpbWl0cy5kZWZhdWx0cXVvdGEgPSBhdG9pKGZvcm1hdF9tYWlsZGlycXVvdGEo
RGVmYXVsdFVzZXJRdW90YSkpOworICAgICAgICAgICAgbGltaXRzLmRlZmF1bHRxdW90YSA9
IHN0cnRvbGwoZm9ybWF0X21haWxkaXJxdW90YShEZWZhdWx0VXNlclF1b3RhKSwgTlVMTCwg
MTApOwogICAgICAgICB9CiAgICAgICAgIGlmIChEZWZhdWx0VXNlck1heE1zZ0NvdW50WzBd
ICE9IDApIHsKLSAgICAgICAgICAgIGxpbWl0cy5kZWZhdWx0bWF4bXNnY291bnQgPSBhdG9p
KERlZmF1bHRVc2VyTWF4TXNnQ291bnQpOworICAgICAgICAgICAgbGltaXRzLmRlZmF1bHRt
YXhtc2djb3VudCA9IHN0cnRvbGwoRGVmYXVsdFVzZXJNYXhNc2dDb3VudCwgTlVMTCwgMTAp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoR2lkRmxhZyA9PSAxKSB7CmRp
ZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Zwb3BtYWlsLmMgdnBvcG1haWwtNS41LjAv
dnBvcG1haWwuYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92cG9wbWFpbC5jCTIwMTAtMTEt
MDUgMTg6Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC92cG9wbWFp
bC5jCTIwMTUtMDktMTggMTI6MzY6MDcuNTcxMDkzNTYyICswMTAwCkBAIC00Miw2ICs0Miw3
IEBACiAjaW5jbHVkZSAidmF1dGguaCIKICNpbmNsdWRlICJ2bGltaXRzLmgiCiAjaW5jbHVk
ZSAibWFpbGRpcnF1b3RhLmgiCisjaW5jbHVkZSAic3RvcmFnZS5oIgogI2luY2x1ZGUgInZh
dXRobW9kdWxlLmgiCiAjaW5jbHVkZSAicHdzdHIuaCIKIApAQCAtODUsNiArODYsNDQgQEAK
ICAgIGNoYXIgKnZhbHVlOwogIH0gc29ydHJlYzsKIAorLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
Kwordm9pZCBzdHJpbmdfbGlzdF9pbml0KHN0cmluZ19saXN0ICphLCBpbnQgaW5pdGlhbCkg
eworICBhLT5jb3VudCA9IDA7CisgIGEtPnNpemUgPSAoKGluaXRpYWwgKyAzKSAvIDQpICog
NDsKKyAgaWYgKGEtPnNpemUgPD0gMCkgYS0+c2l6ZSA9IDQ7CisgIGEtPnZhbHVlcyA9IGNh
bGxvYyhhLT5zaXplLCBzaXplb2YoY2hhciAqKikpOworICBpZiAoYS0+dmFsdWVzID09IE5V
TEwpIGEtPnNpemUgPSAwOworfQorCitpbnQgc3RyaW5nX2xpc3RfYWRkKHN0cmluZ19saXN0
ICphLCBjaGFyICp2YWx1ZSkgeworICBpZiAoYS0+Y291bnQgPj0gKGEtPnNpemUgLSAyKSkg
eworICAgIGNoYXIgKipuZXc7CisKKyAgICBhLT5zaXplICs9IDg7CisgICAgbmV3ID0gcmVh
bGxvYyhhLT52YWx1ZXMsIGEtPnNpemUgKiBzaXplb2YoY2hhciAqKikpOworICAgIGlmIChu
ZXcgIT0gTlVMTCkgeworICAgICAgYS0+dmFsdWVzID0gbmV3OworICAgICAgcmV0dXJuIGEt
PnNpemU7CisgICAgfQorICAgIHJldHVybiAwOworICB9CisKKyAgaWYgKChhLT52YWx1ZXNb
YS0+Y291bnRdID0gc3RyZHVwKHZhbHVlKSkgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKyAg
YS0+Y291bnQrKzsKKyAgcmV0dXJuIDE7Cit9CisKK3ZvaWQgc3RyaW5nX2xpc3RfZnJlZShz
dHJpbmdfbGlzdCAqYSkgeworIGludCBpOworCisgIGlmIChhLT52YWx1ZXMgPT0gTlVMTCkg
cmV0dXJuOworICBmb3IgKGkgPSAwOyBpIDwgYS0+Y291bnQ7IGkrKykKKyAgICBmcmVlKGEt
PnZhbHVlc1tpXSk7CisgIGZyZWUoYS0+dmFsdWVzKTsKK30KKwogCiAvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLwogCkBAIC0xMDQsMjQgKzE0MywxNiBAQAogIGNoYXIgZGlyX2NvbnRyb2xfZm9y
X3VpZFtNQVhfQlVGRl07CiAgY2hhciB0bXBidWZbTUFYX0JVRkZdOwogIGNoYXIgRGlyW01B
WF9CVUZGXTsKLSBjaGFyIGNhbGxpbmdfZGlyW01BWF9CVUZGXTsKKyBpbnQgY2FsbF9kaXI7
CiAgY2hhciBkZGlyWzUxMl0gPSB7IDAgfTsKIAotIGNoYXIgKmFsaWFzZXNbMV07Ci0gaW50
IGFsaWFzY291bnQ9MDsKKyBzdHJpbmdfbGlzdCBhbGlhc2VzOwogCiAjaWZkZWYgT05DSEFO
R0VfU0NSSVBUCiAgIC8qICBEb24ndCBleGVjdXRlIGFueSBpbXBsaWVkIG9uY2hhbmdlIGlu
IGNhbGxlZCBmdW5jdGlvbnMgICovCiAgIGFsbG93X29uY2hhbmdlID0gMDsKICNlbmRpZgog
Ci0gIC8qCi0gICAqIEluIGNhc2Ugd2UgbmVlZCB0byB1c2UgZGVsZXRlX2xpbmUsIGJ1aWxk
IGFuIGFycmF5IGFuZCBjb3VudCAKLSAgICogdG8gdXNlIGFzIGl0cyBwYXJhbWV0ZXJzIAot
ICAgKgotICAgKi8KLSAgYWxpYXNlc1thbGlhc2NvdW50KytdPXN0cmR1cChkb21haW4pOwot
CiAgIC8qIHdlIG9ubHkgZG8gbG93ZXIgY2FzZSAqLwogICBsb3dlcml0KGRvbWFpbik7CiAK
QEAgLTE1Niw3ICsxODcsNyBAQAogICB1bWFzayhWUE9QTUFJTF9VTUFTSyk7CiAKICAgLyog
c3RvcmUgdGhlIGNhbGxpbmcgZGlyZWN0b3J5ICovCi0gIGdldGN3ZChjYWxsaW5nX2Rpciwg
c2l6ZW9mKGNhbGxpbmdfZGlyKSk7CisgIGNhbGxfZGlyID0gb3BlbigiLiIsIE9fUkRPTkxZ
KTsKIAogICBpZiAoKGRpciA9PSBOVUxMKSB8fCAoKGNvbnN0IGNoYXIgKilkaXIgPT0gKGNv
bnN0IGNoYXIgKilWUE9QTUFJTF9ESVJfRE9NQUlOUykgfHwgKCEoKmRpcikpKSB7CiAJIG1l
bXNldChkZGlyLCAwLCBzaXplb2YoZGRpcikpOwpAQCAtMTc2LDcgKzIwNyw3IEBACiAKICAg
ICAvKiBpZiBpdCdzIG5vdCB0aGVyZSwgbm8gcHJvYmxlbSwganVzdCB0cnkgdG8gY3JlYXRl
IGl0ICovCiAgICAgaWYgKCBta2RpcihkaXIsIFZQT1BNQUlMX0RJUl9NT0RFKSAhPSAwICkg
ewotICAgICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgICAgZmNoZGlyKGNhbGxfZGlyKTsg
Y2xvc2UoY2FsbF9kaXIpOwogICAgICAgcmV0dXJuKFZBX0NBTl9OT1RfTUFLRV9ET01BSU5T
X0RJUik7CiAgICAgfQogCkBAIC0xODUsNyArMjE2LDcgQEAKIAogICAgIC8qIG5vdyB0cnkg
bW92aW5nIGludG8gdGhlIERvbWFpbnMgc3ViZGlyIGFnYWluICovCiAgICAgaWYgKCBjaGRp
cihkaXIpICE9IDAgKSB7Ci0gICAgICBjaGRpcihjYWxsaW5nX2Rpcik7CisgICAgICBmY2hk
aXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgICByZXR1cm4oVkFfQkFEX0Rf
RElSKTsKICAgICB9CiAgIH0KQEAgLTIxOCw3ICsyNDksNyBAQAogICBpZiAoc3RybGVuKGRp
cikrc3RybGVuKERvbWFpblN1YkRpcikgPiBNQVhfUFdfRElSKSB7CiAgICAgLyogYmFjayBv
dXQgb2YgY2hhbmdlcyBtYWRlIHNvIGZhciAqLwogICAgIGRlY19kaXJfY29udHJvbChkaXJf
Y29udHJvbF9mb3JfdWlkLCB1aWQsIGdpZCk7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOwor
ICAgIGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICByZXR1cm4oVkFf
RElSX1RPT19MT05HKTsKICAgfQogCkBAIC0yMjYsNyArMjU3LDcgQEAKICAgaWYgKCByX21r
ZGlyKERvbWFpblN1YkRpciwgdWlkLCBnaWQgKSAhPSAwICkgewogICAgIC8qIGJhY2sgb3V0
IG9mIGNoYW5nZXMgbWFkZSBzbyBmYXIgKi8KICAgICBkZWNfZGlyX2NvbnRyb2woZGlyX2Nv
bnRyb2xfZm9yX3VpZCwgdWlkLCBnaWQpOwotICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAg
ICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgcmV0dXJuKFZBX0NP
VUxEX05PVF9NQUtFX0RPTUFJTl9ESVIpOwogICB9CiAgIApAQCAtMjM0LDcgKzI2NSw3IEBA
CiAgICAgLyogYmFjayBvdXQgb2YgY2hhbmdlcyBtYWRlIHNvIGZhciAqLwogICAgIHZkZWxm
aWxlcyhEb21haW5TdWJEaXIpOwogICAgIGRlY19kaXJfY29udHJvbChkaXJfY29udHJvbF9m
b3JfdWlkLCB1aWQsIGdpZCk7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRp
cihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICByZXR1cm4oVkFfQkFEX0RfRElS
KTsKICAgfQogCkBAIC0yNDcsNyArMjc4LDcgQEAKICAgICAgIGZwcmludGYoc3RkZXJyLCAi
RmFpbGVkIHRvIGRlbGV0ZSBkaXJlY3RvcnkgdHJlZTogJXNcbiIsIERvbWFpblN1YkRpcik7
CiAgICAgfQogICAgIGRlY19kaXJfY29udHJvbChkaXJfY29udHJvbF9mb3JfdWlkLCB1aWQs
IGdpZCk7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRpcihjYWxsX2Rpcik7
IGNsb3NlKGNhbGxfZGlyKTsKICAgICByZXR1cm4oVkFfQ09VTERfTk9UX09QRU5fUU1BSUxf
REVGQVVMVCk7CiAgIH0gZWxzZSB7CiAgICAgZnByaW50ZihmcywgInwgJXMvdmRlbGl2ZXJt
YWlsICcnIGJvdW5jZS1uby1tYWlsYm94XG4iLCBWUE9QTUFJTF9ESVJfQklOKTsKQEAgLTI2
Miw3ICsyOTMsNyBAQAogICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZGVsZXRl
IGRpcmVjdG9yeSB0cmVlOiAlc1xuIiwgRG9tYWluU3ViRGlyKTsKICAgICB9CiAgICAgZGVj
X2Rpcl9jb250cm9sKGRpcl9jb250cm9sX2Zvcl91aWQsIHVpZCwgZ2lkKTsKLSAgICBjaGRp
cihjYWxsaW5nX2Rpcik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIp
OwogICAgIGZwcmludGYgKHN0ZGVyciwgIkVycm9yLiBGYWlsZWQgdG8gYWRkIGRvbWFpbiB0
byBhc3NpZ24gZmlsZVxuIik7CiAgICAgcmV0dXJuIChWQV9DT1VMRF9OT1RfVVBEQVRFX0ZJ
TEUpOwogICB9CkBAIC0yOTIsMTEgKzMyMywxNCBAQAogCiAgICAgdmdldF9hc3NpZ24oZG9t
YWluLCBEaXIsIHNpemVvZihEaXIpLCAmdWlkLCAmZ2lkICk7CiAKLSAgICBpZiAoIGRlbF9k
b21haW5fYXNzaWduKGFsaWFzZXMsIGFsaWFzY291bnQsIGRvbWFpbiwgRGlyLCB1aWQsIGdp
ZCkgIT0gMCkgeworICAgIHN0cmluZ19saXN0X2luaXQoJmFsaWFzZXMsIDEpOworICAgIHN0
cmluZ19saXN0X2FkZCgmYWxpYXNlcywgZG9tYWluKTsKKworICAgIGlmICggZGVsX2RvbWFp
bl9hc3NpZ24oYWxpYXNlcy52YWx1ZXMsIGFsaWFzZXMuY291bnQsIGRvbWFpbiwgRGlyLCB1
aWQsIGdpZCkgIT0gMCkgewogICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgd2hpbGUg
YXR0ZW1wdGluZyB0byByZW1vdmUgZG9tYWluIGZyb20gYXNzaWduIGZpbGVcbiIpOwogICAg
IH0KIAotICAgIGlmIChkZWxfY29udHJvbChhbGlhc2VzLGFsaWFzY291bnQpICE9MCkgewor
ICAgIGlmIChkZWxfY29udHJvbChhbGlhc2VzLnZhbHVlcyxhbGlhc2VzLmNvdW50KSAhPTAp
IHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHdoaWxlIGF0dGVtcHRpbmcgdG8g
ZGVsZXRlIGRvbWFpbiBmcm9tIHRoZSBxbWFpbCBjb250cm9sIGZpbGVzXG4iKTsKICAgICB9
CiAKQEAgLTMwOSw2ICszNDMsOSBAQAogICAgIC8qIHNlbmQgYSBIVVAgc2lnbmFsIHRvIHFt
YWlsLXNlbmQgcHJvY2VzcyB0byByZXJlYWQgY29udHJvbCBmaWxlcyAqLwogICAgIHNpZ25h
bF9wcm9jZXNzKCJxbWFpbC1zZW5kIiwgU0lHSFVQKTsKIAorICAgIGZjaGRpcihjYWxsX2Rp
cik7IGNsb3NlKGNhbGxfZGlyKTsKKyAgICBzdHJpbmdfbGlzdF9mcmVlKCZhbGlhc2VzKTsK
KwogICAgIHJldHVybiAoVkFfTk9fQVVUSF9DT05ORUNUSU9OKTsKICAgfQkKICAKQEAgLTMy
Nyw5ICszNjQsNyBAQAogI2VuZGlmCiAKICAgLyogcmV0dXJuIGJhY2sgdG8gdGhlIGNhbGxl
cnMgZGlyZWN0b3J5IGFuZCByZXR1cm4gc3VjY2VzcyAqLwotICBjaGRpcihjYWxsaW5nX2Rp
cik7Ci0KLSAgZnJlZSggYWxpYXNlc1swXSApOworICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9z
ZShjYWxsX2Rpcik7CiAKICAgcmV0dXJuKFZBX1NVQ0NFU1MpOwogfQpAQCAtMzUyLDkgKzM4
NywxMCBAQAogIGNoYXIgZGlyY29udHJvbFtNQVhfQlVGRl07CiAgdWlkX3QgdWlkOwogIGdp
ZF90IGdpZDsKLSBjaGFyICphbGlhc2VzW01BWF9ET01fQUxJQVNdOworIHN0cmluZ19saXN0
IGFsaWFzZXM7CiAgZG9tYWluX2VudHJ5ICplbnRyeTsKLSBpbnQgaT0wLCBhbGlhc2NvdW50
PTA7CisgaW50IGk9MDsKKyBpbnQgY2FsbF9kaXI7CiAKICAgLyogd2UgYWx3YXlzIGNvbnZl
cnQgZG9tYWlucyB0byBsb3dlciBjYXNlICovCiAgIGxvd2VyaXQoZG9tYWluKTsKQEAgLTM4
OSw3ICs0MjUsOCBAQAogICAgICAgKiAgdGhhdCBhcmUgYWJvdXQgdG8gYmUgZGVsZXRlZC4g
IEl0IHdpbGwgYmUgdGhlIG9ubHkgb25lCiAgICAgICAqICBidXQgSSB3aWxsIHVzZSB0aGUg
c2FtZSBjb2RlIGFzIG11bHRpIGRvbWFpbnMgYW55d2F5LgogICAgICAgKi8KLSAgICAgYWxp
YXNlc1thbGlhc2NvdW50KytdID0gc3RyZHVwKCBkb21haW5fdG9fZGVsICk7CisgICAgIHN0
cmluZ19saXN0X2luaXQoJmFsaWFzZXMsIDEpOworICAgICBzdHJpbmdfbGlzdF9hZGQoJmFs
aWFzZXMsIGRvbWFpbl90b19kZWwpOwogCiAjaWZkZWYgT05DSEFOR0VfU0NSSVBUCiAgICAg
IC8qIHRlbGwgb3RoZXIgcHJvZ3JhbXMgdGhhdCBkYXRhIGhhcyBjaGFuZ2VkICovCkBAIC00
MzcsMTQgKzQ3NCwxNiBAQAogICAgICAgIH0KICAgICAgfQogCisgICAgIHN0cmluZ19saXN0
X2luaXQoJmFsaWFzZXMsIDEwKTsKKwogICAgICB3aGlsZSggZW50cnkgKSB7Ci0gICAgICAg
YWxpYXNlc1thbGlhc2NvdW50KytdID0gc3RyZHVwKGVudHJ5LT5kb21haW4pOworICAgICAg
IHN0cmluZ19saXN0X2FkZCgmYWxpYXNlcywgZW50cnktPmRvbWFpbik7CiAgICAgICAgZW50
cnkgPSBnZXRfZG9tYWluX2VudHJpZXMoTlVMTCk7CiAgICAgIH0KIAogLy8gICBEdW1wIHRo
ZSBhbGlhcyBsaXN0Ci0vLyAgICAgZm9yKGk9MDtpPGFsaWFzY291bnQ7aSsrKSB7Ci0vLyAg
ICAgICBmcHJpbnRmKHN0ZGVyciwiYWxpYXMgJXNcbiIsIGFsaWFzZXNbaV0pOworLy8gICAg
IGZvcihpPTA7aTxhbGlhc2VzLmNvdW50O2krKykgeworLy8gICAgICAgZnByaW50ZihzdGRl
cnIsImFsaWFzICVzXG4iLCBhbGlhc2VzLnZhbHVlc1tpXSk7CiAvLyAgICAgfQogCiAKQEAg
LTQ5MCwyMCArNTI5LDIwIEBACiAKICAgICAvKiBOb3cgcmVtb3ZlIGRvbWFpbiBmcm9tIGZp
bGVzeXN0ZW0gKi8KICAgICAvKiBpZiBpdCdzIGEgc3ltYm9saWMgbGluayBqdXN0IHJlbW92
ZSB0aGUgbGluayAqLwotICAgIGlmICggU19JU0xOSyhzdGF0YnVmLnN0X21vZGUpICkgewor
ICAgIGlmICggcmVhZGxpbmsoRGlyLCAoY2hhciAqKSAmY2FsbF9kaXIsIHNpemVvZihjYWxs
X2RpcikpICE9IC0xKSB7CiAgICAgICBpZiAoIHVubGluayhEaXIpICE9MCkgewogICAgICAg
ICBmcHJpbnRmIChzdGRlcnIsICJXYXJuaW5nOiBGYWlsZWQgdG8gcmVtb3ZlIHN5bWxpbmsg
Zm9yICVzXG4iLCBkb21haW4pOwogICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICBjaGFy
IGN3ZGJ1ZmZbTUFYX0JVRkZdOwotICAgICAgY2hhciAqY3dkOwogICAgICAgLyogTm90IGEg
c3ltbGluay4uIHNvIHdlIGhhdmUgdG8gZGVsIHNvbWUgZmlsZXMgc3RydWN0dXJlIG5vdyAq
LwogICAgICAgLyogemFwIHRoZSBkb21haW4ncyBkaXJlY3RvcnkgdHJlZSAqLwotICAgICAg
Y3dkID0gZ2V0Y3dkIChjd2RidWZmLCBzaXplb2YoY3dkYnVmZikpOyAgLyogc2F2ZSBjYWxs
aW5nIGRpcmVjdG9yeSAqLworICAgICAgY2FsbF9kaXIgPSBvcGVuKCIuIiwgT19SRE9OTFkp
OworCiAgICAgICBpZiAoIHZkZWxmaWxlcyhEaXIpICE9IDAgKSB7CiAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiV2FybmluZzogRmFpbGVkIHRvIGRlbGV0ZSBkaXJlY3RvcnkgdHJlZTog
JXNcbiIsIGRvbWFpbik7CiAgICAgICB9Ci0gICAgICBpZiAoY3dkICE9IE5VTEwpIGNoZGly
IChjd2QpOworCisgICAgICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAg
ICAgfQogCiAgICAgLyogZGVjcmVtZW50IHRoZSBtYXN0ZXIgZG9tYWluIGNvbnRyb2wgaW5m
byAqLwpAQCAtNTE2LDEyICs1NTUsMTIgQEAKICAgLyogZGVsZXRlIHRoZSBlbWFpbCBkb21h
aW4gZnJvbSB0aGUgcW1haWwgY29udHJvbCBmaWxlcyA6CiAgICAqIHJjcHRob3N0cywgbW9y
ZXJjcHRob3N0cywgdmlydHVhbGRvbWFpbnMKICAgICovCi0gIGlmIChkZWxfY29udHJvbChh
bGlhc2VzLGFsaWFzY291bnQpICE9IDApIHsKKyAgaWYgKGRlbF9jb250cm9sKGFsaWFzZXMu
dmFsdWVzLGFsaWFzZXMuY291bnQpICE9IDApIHsKICAgICBmcHJpbnRmIChzdGRlcnIsICJX
YXJuaW5nOiBGYWlsZWQgdG8gZGVsZXRlIGRvbWFpbiBmcm9tIHFtYWlsJ3MgY29udHJvbCBm
aWxlc1xuIik7CiAgIH0KIAogICAvKiBkZWxldGUgdGhlIGFzc2lnbiBmaWxlIGxpbmUgKi8K
LSAgaWYgKGRlbF9kb21haW5fYXNzaWduKGFsaWFzZXMsIGFsaWFzY291bnQsIGRvbWFpbiwg
RGlyLCB1aWQsIGdpZCkgIT0gMCkgeworICBpZiAoZGVsX2RvbWFpbl9hc3NpZ24oYWxpYXNl
cy52YWx1ZXMsIGFsaWFzZXMuY291bnQsIGRvbWFpbiwgRGlyLCB1aWQsIGdpZCkgIT0gMCkg
ewogICAgIGZwcmludGYgKHN0ZGVyciwgIldhcm5pbmc6IEZhaWxlZCB0byBkZWxldGUgZG9t
YWluIGZyb20gdGhlIGFzc2lnbiBmaWxlXG4iKTsKICAgfQogCkBAIC01MjksMTMgKzU2OCw5
IEBACiAgIHNpZ25hbF9wcm9jZXNzKCJxbWFpbC1zZW5kIiwgU0lHSFVQKTsKIAogICAvKiAg
Y2xlYW4gdXAgbWVtb3J5IHVzZWQgYnkgdGhlIGFsaWFzIGxpc3QgICovCi0gIGZvcihpPTA7
aTxhbGlhc2NvdW50O2krKykgewotICAgIGZyZWUoIGFsaWFzZXNbaV0gKTsKLSAgfQotCisg
IHN0cmluZ19saXN0X2ZyZWUoJmFsaWFzZXMpOwogCiAgIHJldHVybihWQV9TVUNDRVNTKTsK
LQogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtNjM5LDcgKzY3NCw3IEBACiAgICBp
bnQgcmV0OwogIGNoYXIgRGlyW01BWF9CVUZGXTsKICBjaGFyICp1c2VyX2hhc2g7Ci0gY2hh
ciBjYWxsaW5nX2RpciBbTUFYX0JVRkZdOworIGludCBjYWxsX2RpcjsKICB1aWRfdCB1aWQg
PSAtMTsKICBnaWRfdCBnaWQgPSAtMTsKICBzdHJ1Y3QgdmxpbWl0cyBsaW1pdHM7CkBAIC02
ODYsOSArNzIxLDYgQEAKICAgaWYgKHJldCAhPSAxKQogCSByZXR1cm4gcmV0OwogCi0gIC8q
IHJlY29yZCB0aGUgZGlyIHdoZXJlIHRoZSB2YWRkdXNlciBjb21tYW5kIHdhcyBydW4gZnJv
bSAqLwotICBnZXRjd2QoY2FsbGluZ19kaXIsIHNpemVvZihjYWxsaW5nX2RpcikpOwotCiAg
IC8qIGxvb2t1cCB0aGUgaG9tZSBkaXIsIHVpZCBhbmQgZ2lkIGZvciB0aGUgZG9tYWluICov
CiAgIGlmICggdmdldF9hc3NpZ24oZG9tYWluLCBEaXIsIHNpemVvZihEaXIpLCAmdWlkLCAm
Z2lkKT09TlVMTCkgewogICAgIHJldHVybihWQV9ET01BSU5fRE9FU19OT1RfRVhJU1QpOwpA
QCAtNjk5LDE1ICs3MzEsMTkgQEAKICAgICByZXR1cm4oVkFfQ0FOTk9UX1JFQURfTElNSVRT
KTsKICAgfQogCisgIC8qIHJlY29yZCB0aGUgZGlyIHdoZXJlIHRoZSB2YWRkdXNlciBjb21t
YW5kIHdhcyBydW4gZnJvbSAqLworICBjYWxsX2RpciA9IG9wZW4oIi4iLCBPX1JET05MWSk7
CisKICAgLyogZ28gdG8gdGhlIGRvbWFpbidzIGhvbWUgZGlyIChpZSB0ZXN0IGl0IGV4aXN0
cykgKi8KICAgLyogd291bGQgYSBzdGF0IGJlIGEgYmV0dGVyIG9wdGlvbiBoZXJlPyAqLwog
ICBpZiAoIGNoZGlyKERpcikgIT0gMCApIHsKKyAgICBjbG9zZShjYWxsX2Rpcik7CiAgICAg
cmV0dXJuKFZBX0JBRF9EX0RJUik7CiAgIH0KIAogICAvKiBjcmVhdGUgZGlyIGZvciB0aGUg
dGhlIHVzZXIgKi8gCiAgIGlmICggKHVzZXJfaGFzaD1tYWtlX3VzZXJfZGlyKHVzZXJuYW1l
LCBkb21haW4sIHVpZCwgZ2lkKSkgPT0gTlVMTCApIHsKLSAgICBjaGRpcihjYWxsaW5nX2Rp
cik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogICAgIGlmICh2
ZXJyb3JpICE9IDAgKSByZXR1cm4odmVycm9yaSk7CiAgICAgZWxzZSByZXR1cm4oVkFfQkFE
X1VfRElSKTsKICAgfQpAQCAtNzE4LDE5ICs3NTQsMTkgQEAKICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkZhaWxlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGFkZCB1c2VyIHRvIGF1dGggYmFja2Vu
ZFxuIik7CiAgICAgLyogYmFjayBvdXQgb2YgY2hhbmdlcyBtYWRlIHNvIGZhciAqLwogICAg
IGNoZGlyKERpcik7IGlmIChzdHJsZW4odXNlcl9oYXNoKT4wKSB7IGNoZGlyKHVzZXJfaGFz
aCk7fSB2ZGVsZmlsZXModXNlcm5hbWUpOwotICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAg
ICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgcmV0dXJuKFZBX05P
X0FVVEhfQ09OTkVDVElPTik7CiAgIH0KIAogICBpZiAobGltaXRzLmRlZmF1bHRxdW90YSA+
IDApIHsKICAgICBpZiAobGltaXRzLmRlZmF1bHRtYXhtc2djb3VudCA+IDApCi0gICAgICBz
bnByaW50ZiAocXVvdGEsIHNpemVvZihxdW90YSksICIlZFMsJWRDIiwgbGltaXRzLmRlZmF1
bHRxdW90YSwKKyAgICAgIHNucHJpbnRmIChxdW90YSwgc2l6ZW9mKHF1b3RhKSwgIiVsbHVT
LCVsbHVDIiwgbGltaXRzLmRlZmF1bHRxdW90YSwKICAgICAgICAgbGltaXRzLmRlZmF1bHRt
YXhtc2djb3VudCk7CiAgICAgZWxzZQotICAgICAgc25wcmludGYgKHF1b3RhLCBzaXplb2Yo
cXVvdGEpLCAiJWRTIiwgbGltaXRzLmRlZmF1bHRxdW90YSk7CisgICAgICBzbnByaW50ZiAo
cXVvdGEsIHNpemVvZihxdW90YSksICIlbGx1UyIsIGxpbWl0cy5kZWZhdWx0cXVvdGEpOwog
ICB9IGVsc2UgewogICAgIGlmIChsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50ID4gMCkKLSAg
ICAgIHNucHJpbnRmIChxdW90YSwgc2l6ZW9mKHF1b3RhKSwgIiVkQyIsIGxpbWl0cy5kZWZh
dWx0bWF4bXNnY291bnQpOworICAgICAgc25wcmludGYgKHF1b3RhLCBzaXplb2YocXVvdGEp
LCAiJWxsdUMiLCBsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsKICAgICBlbHNlCiAgICAg
ICBzdHJjcHkgKHF1b3RhLCAiTk9RVU9UQSIpOwogICB9CkBAIC03NTcsMTQgKzc5MywxNCBA
QAogICBpZiAodmF1dGhfbW9kdWxlX2ZlYXR1cmUoIkFVVEhfTE9HR0lORyIpKSB7CiAJICBp
ZiAodnNldF9sYXN0YXV0aCh1c2VybmFtZSxkb21haW4sTlVMTF9SRU1PVEVfSVApICE9MCkg
ewogCQkgLyogc2hvdWxkIHdlIGJhY2sgb3V0IG9mIGFsbCB0aGUgd29yayB3ZSBoYXZlIGRv
bmUgc28gZmFyPyAqLwotCQkgY2hkaXIoY2FsbGluZ19kaXIpOworCQkgZmNoZGlyKGNhbGxf
ZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogCQkgZnByaW50ZiAoc3RkZXJyLCAiRmFpbGVkIHRv
IGNyZWF0ZSBjcmVhdGUgbGFzdGF1dGggZW50cnlcbiIpOwogCQkgcmV0dXJuIChWQV9OT19B
VVRIX0NPTk5FQ1RJT04pOwogCSAgfQogICB9CiAKICAgLyoganVtcCBiYWNrIGludG8gdGhl
IGRpciBmcm9tIHdoaWNoIHRoZSB2YWRkdXNlciB3YXMgcnVuICovCi0gIGNoZGlyKGNhbGxp
bmdfZGlyKTsKKyAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogCiAjaWZk
ZWYgT05DSEFOR0VfU0NSSVBUCiAgIGFsbG93X29uY2hhbmdlID0gdGVtcF9vbmNoYW5nZTsK
QEAgLTEwMTIsMTAgKzEwNDgsMTAgQEAKICBzdHJ1Y3Qgc3RhdCBteXN0YXQ7CiAgY2hhciB0
bXBzdHIxW01BWF9CVUZGXTsKICBjaGFyIHRtcHN0cjJbTUFYX0JVRkZdOwotIGNoYXIgKmFs
aWFzZXNbMV07Ci0gaW50IGFsaWFzY291bnQ9MDsKKyBzdHJpbmdfbGlzdCBhbGlhc2VzOwog
Ci0gYWxpYXNlc1thbGlhc2NvdW50KytdPXN0cmR1cChhbGlhc19kb21haW4pOworICBzdHJp
bmdfbGlzdF9pbml0KCZhbGlhc2VzLCAxKTsKKyAgc3RyaW5nX2xpc3RfYWRkKCZhbGlhc2Vz
LGFsaWFzX2RvbWFpbik7CiAKICAgc25wcmludGYodG1wc3RyMSwgc2l6ZW9mKHRtcHN0cjEp
LCAiJXMvdXNlcnMvYXNzaWduIiwgUU1BSUxESVIpOwogCkBAIC0xMDg2LDEzICsxMTIyLDEz
IEBACiAKICAgLyogbWFrZSBzdXJlIGl0J3Mgbm90IGluIGxvY2FscyBhbmQgc2V0IG1vZGUg
Ki8KICAgc25wcmludGYodG1wc3RyMSwgc2l6ZW9mKHRtcHN0cjEpLCAiJXMvY29udHJvbC9s
b2NhbHMiLCBRTUFJTERJUik7Ci0gIGlmIChyZW1vdmVfbGluZXMoIHRtcHN0cjEsIGFsaWFz
ZXMsIGFsaWFzY291bnQpIDwgMCkgeworICBpZiAocmVtb3ZlX2xpbmVzKCB0bXBzdHIxLCBh
bGlhc2VzLnZhbHVlcywgYWxpYXNlcy5jb3VudCkgPCAwKSB7CiAgICAgZnByaW50ZiAoc3Rk
ZXJyLCAiRmFpbHVyZSB3aGlsZSBhdHRlbXB0aW5nIHRvIHJlbW92ZV9saW5lcygpIHRoZSBs
b2NhbHMgZmlsZVxuIik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQogICBjaG1vZCh0bXBzdHIx
LCBWUE9QTUFJTF9RTUFJTF9NT0RFICk7IAogCi0gIGZyZWUoIGFsaWFzZXNbMF0gKTsKKyAg
c3RyaW5nX2xpc3RfZnJlZSgmYWxpYXNlcyk7CiAKICAgcmV0dXJuKDApOwogfQpAQCAtMTEw
NSwxMiArMTE0MSwxMiBAQAogICogLSAvdmFyL3FtYWlsL2NvbnRyb2wvcmNwdGhvc3RzCiAg
KiAtIC92YXIvcW1haWwvY29udHJvbC92aXJ0dWFsZG9tYWlucwogICovCi1pbnQgZGVsX2Nv
bnRyb2woY2hhciAqYWxpYXNlc1tNQVhfRE9NX0FMSUFTXSwgaW50IGFsaWFzY291bnQgKSAK
K2ludCBkZWxfY29udHJvbChjaGFyICoqYWxpYXNlcywgaW50IGFsaWFzY291bnQgKSAKIHsK
ICBjaGFyIHRtcGJ1ZjFbTUFYX0JVRkZdOwogIGNoYXIgdG1wYnVmMltNQVhfQlVGRl07CiAg
c3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSBjaGFyICp2aXJ0aG9zdHNbTUFYX0RPTV9BTElBU107
Cisgc3RyaW5nX2xpc3QgdmlydGhvc3RzOwogCiAgaW50IHByb2JsZW1fb2NjdXJyZWQgPSAw
LCBpPTA7CiAKQEAgLTExNjgsMjEgKzEyMDQsMjAgQEAKICAgfSAvKiBzd2l0Y2ggZm9yIHJj
cHRob3N0cyAqLwogCiAgIC8qIGRlbGV0ZSBlbnRyeSBmcm9tIGNvbnRyb2wvdmlydHVhbGRv
bWFpbnMgKGlmIGl0IGV4aXN0cykgKi8KKyAgc3RyaW5nX2xpc3RfaW5pdCgmdmlydGhvc3Rz
LCAxMCk7CiAgIAogICBmb3IoaT0wO2k8YWxpYXNjb3VudDtpKyspIHsKICAgICBzbnByaW50
Zih0bXBidWYxLCBzaXplb2YodG1wYnVmMSksICIlczolcyIsIGFsaWFzZXNbaV0sIGFsaWFz
ZXNbaV0pOwotICAgIHZpcnRob3N0c1tpXT1zdHJkdXAodG1wYnVmMSk7CisgICAgc3RyaW5n
X2xpc3RfYWRkKCZ2aXJ0aG9zdHMsIHRtcGJ1ZjEpOwogICB9CiAKICAgc25wcmludGYodG1w
YnVmMiwgc2l6ZW9mKHRtcGJ1ZjIpLCAiJXMvY29udHJvbC92aXJ0dWFsZG9tYWlucyIsIFFN
QUlMRElSKTsKLSAgaWYgKHJlbW92ZV9saW5lcyggdG1wYnVmMiwgdmlydGhvc3RzLCBhbGlh
c2NvdW50KSA8IDAgKSB7CisgIGlmIChyZW1vdmVfbGluZXMoIHRtcGJ1ZjIsIHZpcnRob3N0
cy52YWx1ZXMsIHZpcnRob3N0cy5jb3VudCkgPCAwICkgewogICAgIGZwcmludGYoc3RkZXJy
LCAiRmFpbGVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gcmVtb3ZlX2xpbmVzKCkgdGhlIHZpcnR1
YWxkb21haW5zIGZpbGVcbiIpOyAKICAgICBwcm9ibGVtX29jY3VycmVkID0gMTsgCiAgIH0K
IAotICBmb3IoaT0wO2k8YWxpYXNjb3VudDtpKyspIHsKLSAgICBmcmVlKCB2aXJ0aG9zdHNb
aV0gKTsKLSAgfQorICBzdHJpbmdfbGlzdF9mcmVlKCZ2aXJ0aG9zdHMpOwogCiAgIC8qIG1h
a2Ugc3VyZSBjb3JyZWN0IHBlcm1pc3Npb25zIGFyZSBzZXQgb24gdmlydHVhbGRvbWFpbnMg
Ki8KICAgY2htb2QodG1wYnVmMiwgVlBPUE1BSUxfUU1BSUxfTU9ERSApOyAKQEAgLTEyMDUs
MzEgKzEyNDAsMzYgQEAKICAqICAgICAgICAgIGdyZWF0ZXIgdGhhbiAwID0gbnVtYmVyIG9m
IGFsaWFzZXMgZGVsZXRlZAogICoKICAqLwotaW50IGRlbF9kb21haW5fYXNzaWduKCBjaGFy
ICphbGlhc2VzW01BWF9ET01fQUxJQVNdLCBpbnQgYWxpYXNjb3VudCwgCitpbnQgZGVsX2Rv
bWFpbl9hc3NpZ24oIGNoYXIgKiphbGlhc2VzLCBpbnQgYWxpYXNjb3VudCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKnJlYWxfZG9tYWluLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqZGlyLCBnaWRfdCB1aWQsIGdpZF90IGdpZCApICAKIHsKICBjaGFyIHNl
YXJjaF9zdHJpbmdbTUFYX0JVRkZdOwogIGNoYXIgYXNzaWduX2ZpbGVbTUFYX0JVRkZdOwot
IGNoYXIgKnZpcnRob3N0c1tNQVhfRE9NX0FMSUFTXTsKKyBzdHJpbmdfbGlzdCB2aXJ0aG9z
dHM7CiAgaW50IGk7CiAKKyAgc3RyaW5nX2xpc3RfaW5pdCgmdmlydGhvc3RzLCAxMCk7CisK
ICAgLyogZm9ybWF0IHRoZSByZW1vdmFsIHN0cmluZyAqLyAKICAgZm9yKGk9MDtpPGFsaWFz
Y291bnQ7aSsrKSB7CiAgIHNucHJpbnRmKHNlYXJjaF9zdHJpbmcsIHNpemVvZihzZWFyY2hf
c3RyaW5nKSwgIislcy06JXM6JWx1OiVsdTolczotOjoiLAogICAgICAgYWxpYXNlc1tpXSwg
cmVhbF9kb21haW4sIChsb25nIHVuc2lnbmVkKXVpZCwgKGxvbmcgdW5zaWduZWQpZ2lkLCBk
aXIpOwotICAgIHZpcnRob3N0c1tpXSA9IHN0cmR1cCggc2VhcmNoX3N0cmluZyApOworICAg
IHN0cmluZ19saXN0X2FkZCgmdmlydGhvc3RzLCBzZWFyY2hfc3RyaW5nKTsKICAgfQogCiAg
IC8qIGZvcm1hdCB0aGUgYXNzaWduIGZpbGUgbmFtZSAqLwogICBzbnByaW50Zihhc3NpZ25f
ZmlsZSwgc2l6ZW9mKGFzc2lnbl9maWxlKSwgIiVzL3VzZXJzL2Fzc2lnbiIsIFFNQUlMRElS
KTsKIAogICAvKiByZW1vdmUgdGhlIGZvcm1hdHRlZCBzdHJpbmcgZnJvbSB0aGUgZmlsZSAq
LwotICBpZiAocmVtb3ZlX2xpbmVzKCBhc3NpZ25fZmlsZSwgdmlydGhvc3RzLCBhbGlhc2Nv
dW50ICkgPCAwKSB7CisgIGlmIChyZW1vdmVfbGluZXMoIGFzc2lnbl9maWxlLCB2aXJ0aG9z
dHMudmFsdWVzLCB2aXJ0aG9zdHMuY291bnQgKSA8IDApIHsKICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkZhaWxlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHJlbW92ZV9saW5lcygpIHRoZSBhc3Np
Z24gZmlsZVxuIik7CisgICAgc3RyaW5nX2xpc3RfZnJlZSgmdmlydGhvc3RzKTsKICAgICBy
ZXR1cm4gKC0xKTsKICAgfQogCisgIHN0cmluZ19saXN0X2ZyZWUoJnZpcnRob3N0cyk7CisK
ICAgLyogZm9yY2UgdGhlIHBlcm1pc3Npb24gb24gdGhlIGZpbGUgKi8KICAgY2htb2QoYXNz
aWduX2ZpbGUsIFZQT1BNQUlMX1FNQUlMX01PREUgKTsgCiAKQEAgLTEyNTEsNyArMTI5MSw3
IEBACiAgKiAgICAgICAgICAwIG9uIHN1Y2Nlc3MsIG5vIG1hdGNoIGZvdW5kCiAgKiAgICAg
ICAgICAxIG9uIHN1Y2Nlc3MsIG1hdGNoIHdhcyBmb3VuZAogICovCi1pbnQgcmVtb3ZlX2xp
bmVzKCBjaGFyICpmaWxlbmFtZSwgY2hhciAqYWxpYXNlc1tNQVhfRE9NX0FMSUFTXSwgaW50
IGFsaWFzY291bnQgKQoraW50IHJlbW92ZV9saW5lcyggY2hhciAqZmlsZW5hbWUsIGNoYXIg
KiphbGlhc2VzLCBpbnQgYWxpYXNjb3VudCApCiB7CiAgRklMRSAqZnMgPSBOVUxMOwogIEZJ
TEUgKmZzMSA9IE5VTEw7CkBAIC0xODE2LDcgKzE4NTYsNyBAQAogIGNoYXIgRGlyW01BWF9C
VUZGXTsKICB1aWRfdCB1aWQ7CiAgZ2lkX3QgZ2lkOwotIGNoYXIgY2FsbGluZ19kaXJbTUFY
X0JVRkZdOworIGludCBjYWxsX2RpcjsKIAogICBpZiAoIHVzZXIgPT0gMCB8fCBzdHJsZW4o
dXNlcik8PTApIHJldHVybihWQV9JTExFR0FMX1VTRVJOQU1FKTsKIApAQCAtMTg0NSw3ICsx
ODg1LDcgQEAKICAgbG93ZXJpdChkb21haW4pOwogCiAgIC8qIGJhY2t1cCB0aGUgZGlyIHdo
ZXJlIHRoZSB2ZGVsdXNlciB3YXMgcnVuIGZyb20gKi8KLSAgZ2V0Y3dkKGNhbGxpbmdfZGly
LCBzaXplb2YoY2FsbGluZ19kaXIpKTsKKyAgY2FsbF9kaXIgPSBvcGVuKCIuIiwgT19SRE9O
TFkpOwogCiAgIC8qIGxvb2t1cCB0aGUgbG9jYXRpb24gb2YgdGhpcyBkb21haW4ncyBkaXJl
Y3RvcnkgKi8KICAgaWYgKCB2Z2V0X2Fzc2lnbihkb21haW4sIERpciwgc2l6ZW9mKERpciks
ICZ1aWQsICZnaWQgKSA9PSBOVUxMICkgewpAQCAtMTg1NCw3ICsxODk0LDcgQEAKIAogICAv
KiBjaGFuZ2UgaW50byB0aGF0IGRpcmVjdG9yeSAqLwogICBpZiAoIGNoZGlyKERpcikgIT0g
MCApIHsKLSAgICBjaGRpcihjYWxsaW5nX2Rpcik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsg
Y2xvc2UoY2FsbF9kaXIpOwogICAgIHJldHVybihWQV9CQURfRF9ESVIpOwogICB9CiAKQEAg
LTE4NzgsNyArMTkxOCw3IEBACiAgIC8qIGRlbCB0aGUgdXNlciBmcm9tIHRoZSBhdXRoIHN5
c3RlbSAqLwogICBpZiAodmF1dGhfZGVsdXNlciggdXNlciwgZG9tYWluICkgIT0wICkgewog
ICAgIGZwcmludGYgKHN0ZGVyciwgIkZhaWxlZCB0byBkZWxldGUgdXNlciBmcm9tIGF1dGgg
YmFja2VuZFxuIik7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRpcihjYWxs
X2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICByZXR1cm4gKC0xKTsKICAgfQogCkBAIC0x
ODkxLDEyICsxOTMxLDEyIEBACiAgICAqLwogICBpZiAoIHZkZWxmaWxlcyhteXB3LT5wd19k
aXIpICE9IDAgKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3QgcmVtb3ZlICVz
XG4iLCBteXB3LT5wd19kaXIpOwotICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgICBmY2hk
aXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgcmV0dXJuKFZBX0JBRF9ESVIp
OwogICB9CiAKICAgLyogZ28gYmFjayB0byB0aGUgY2FsbGVycyBkaXJlY3RvcnkgKi8KLSAg
Y2hkaXIoY2FsbGluZ19kaXIpOworICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rp
cik7CiAgIHJldHVybihWQV9TVUNDRVNTKTsKIAogfQpAQCAtMjQ2MywxNSArMjUwMywxMyBA
QAogewogIGNoYXIgKnVzZXJfaGFzaDsKICBzdHJ1Y3QgdnFwYXNzd2QgKm15cHc7Ci0gY2hh
ciBjYWxsaW5nX2RpcltNQVhfQlVGRl07CisgaW50IGNhbGxfZGlyOwogIGNoYXIgZG9tYWlu
X2RpcltNQVhfQlVGRl07CiAgY29uc3QgY2hhciAqZGlybmFtZXNbXSA9IHsiTWFpbGRpciIs
ICJNYWlsZGlyL25ldyIsICJNYWlsZGlyL2N1ciIsIAogCSJNYWlsZGlyL3RtcCJ9OwogIGlu
dCBpOwogCiAgIHZlcnJvcmkgPSAwOwotICAvKiByZWNvcmQgdGhlIGRpciB3aGVyZSB0aGUg
Y29tbWFuZCB3YXMgcnVuIGZyb20gKi8KLSAgZ2V0Y3dkKGNhbGxpbmdfZGlyLCBzaXplb2Yo
Y2FsbGluZ19kaXIpKTsKIAogICAvKiByZXRyaWV2ZSB0aGUgZGlyIHRoYXQgc3RvcmVzIHRo
aXMgZG9tYWluICovCiAgIGlmICh2Z2V0X2Fzc2lnbihkb21haW4sIGRvbWFpbl9kaXIsIHNp
emVvZihkb21haW5fZGlyKSwgTlVMTCwgTlVMTCkgPT0gTlVMTCkgewpAQCAtMjQ3OSw2ICsy
NTE3LDkgQEAKICAgICByZXR1cm4oTlVMTCk7CiAgIH0KIAorICAvKiByZWNvcmQgdGhlIGRp
ciB3aGVyZSB0aGUgY29tbWFuZCB3YXMgcnVuIGZyb20gKi8KKyAgY2FsbF9kaXIgPSBvcGVu
KCIuIiwgT19SRE9OTFkpOworCiAgIC8qIGdvIHRvIHRoZSBkaXIgZm9yIG91ciBjaG9zZW4g
ZG9tYWluICovCiAgIGNoZGlyKGRvbWFpbl9kaXIpOyAKIApAQCAtMjQ5OCw3ICsyNTM5LDcg
QEAKICAgICAgbG9uZyB0byBzYXZlIGJhY2sgdG8gdGhlIGF1dGggYmFja2VuZCAqLwogICBp
ZiAoKHN0cmxlbihkb21haW5fZGlyKStzdHJsZW4odXNlcl9oYXNoKStzdHJsZW4odXNlcm5h
bWUpKSA+IE1BWF9QV19ESVIpIHsKICAgICBmcHJpbnRmIChzdGRlcnIsICJFcnJvci4gUGF0
aCBleGNlZWRzIG1heGltdW0gcGVybWl0dGVkIGxlbmd0aFxuIik7Ci0gICAgY2hkaXIoY2Fs
bGluZ19kaXIpOworICAgIGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAg
ICByZXR1cm4gKE5VTEwpOwogICB9CiAKQEAgLTI1MDYsMTQgKzI1NDcsMTQgQEAKICAgaWYg
KCBta2Rpcih1c2VybmFtZSwgVlBPUE1BSUxfRElSX01PREUpICE9IDAgKSB7CiAgICAgLyog
bmVlZCB0byBhZGQgc29tZSBjb2RlIHRvIHJlbW92ZSB0aGUgaGFzaGVkIGRpcnMgd2UgY3Jl
YXRlZCBhYm92ZS4uLiAqLwogICAgIHZlcnJvcmkgPSBWQV9FWElTVF9VX0RJUjsKLSAgICBj
aGRpcihjYWxsaW5nX2Rpcik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9k
aXIpOwogICAgIHJldHVybihOVUxMKTsKICAgfQogCiAgIGlmICggY2hkaXIodXNlcm5hbWUp
ICE9IDAgKSB7CiAgICAgLyogYmFjayBvdXQgb2YgY2hhbmdlcyBtYWRlIGFib3ZlICovCiAg
ICAgY2hkaXIoZG9tYWluX2Rpcik7IGNoZGlyKHVzZXJfaGFzaCk7IHZkZWxmaWxlcyh1c2Vy
bmFtZSk7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRpcihjYWxsX2Rpcik7
IGNsb3NlKGNhbGxfZGlyKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIm1ha2VfdXNlcl9kaXI6
IGVycm9yIDJcbiIpOwogICAgIHJldHVybihOVUxMKTsKICAgfQpAQCAtMjUyNCw3ICsyNTY1
LDcgQEAKICAgICAgIC8qIGJhY2sgb3V0IG9mIGNoYW5nZXMgbWFkZSBhYm92ZSAqLwogICAg
ICAgY2hkaXIoIi4uIik7CiAgICAgICB2ZGVsZmlsZXModXNlcm5hbWUpOwotICAgICAgY2hk
aXIoY2FsbGluZ19kaXIpOworICAgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9k
aXIpOwogICAgICAgcmV0dXJuKE5VTEwpOwogICAgIH0KICAgfQpAQCAtMjU1Miw3ICsyNTkz
LDcgQEAKICAgICBmcmVlIChteXB3LT5wd19kaXIpOwogICB9CiAKLSAgY2hkaXIoY2FsbGlu
Z19kaXIpOworICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgIHJldHVy
bih1c2VyX2hhc2gpOwogfQogCkBAIC0zMjczLDE4ICszMzE0LDEyIEBACiBpbnQgdm1ha2Vf
bWFpbGRpcihjaGFyICpkb21haW4sIGNoYXIgKmRpciApCiB7CiAgY2hhciB0bXBidWZbTUFY
X0JVRkZdOwotIGNoYXIgY2FsbGluZ19kaXJbTUFYX0JVRkZdOworIGludCBjYWxsX2RpcjsK
ICB1aWRfdCB1aWQ7CiAgZ2lkX3QgZ2lkOwogIGNoYXIgKnRtcHN0cjsKICBpbnQgaTsKIAot
ICAvKiByZWNvcmQgd2hpY2ggZGlyIHRoZSBjb21tYW5kIHdhcyBsYXVuY2hlZCBmcm9tICov
Ci0gIGdldGN3ZChjYWxsaW5nX2Rpciwgc2l6ZW9mKGNhbGxpbmdfZGlyKSk7Ci0KLSAgLyog
c2V0IHRoZSBtYXNrIGZvciBmaWxlIGNyZWF0aW9uICovCi0gIHVtYXNrKFZQT1BNQUlMX1VN
QVNLKTsKLSAKICAgLyogY2hlY2sgaWYgZG9tYWluIGV4aXN0cy4KICAgICogaWYgZG9tYWlu
IGV4aXN0cywgc3RvcmUgdGhlIGRpciBpbnRvIHRtcGJ1ZiwgYW5kIHN0b3JlIHVpZCBhbmQg
Z2lkCiAgICAqLwpAQCAtMzI5Miw2ICszMzI3LDEyIEBACiAgICAgcmV0dXJuKCBWQV9ET01B
SU5fRE9FU19OT1RfRVhJU1QgKTsKICAgfQogCisgIC8qIHJlY29yZCB3aGljaCBkaXIgdGhl
IGNvbW1hbmQgd2FzIGxhdW5jaGVkIGZyb20gKi8KKyAgY2FsbF9kaXIgPSBvcGVuKCIuIiwg
T19SRE9OTFkpOworCisgIC8qIHNldCB0aGUgbWFzayBmb3IgZmlsZSBjcmVhdGlvbiAqLwor
ICB1bWFzayhWUE9QTUFJTF9VTUFTSyk7CisgCiAgIC8qIHNvLCB3ZSBzaG91bGQgaGF2ZSBz
b21lIHZhcmlhYmxlcyBsaWtlIHRoaXMgbm93IDoKICAgICogICBkaXI6ICAgIC9ob21lL3Zw
b3BtYWlsL2RvbWFpbnMvW3hdL3NvbWVkb21haW4uY29tL1t4XS9zb21ldXNlcgogICAgKiAg
IHRtcGJ1ZjogL2hvbWUvdnBvcG1haWwvZG9tYWlucy9beF0vc29tZWRvbWFpbi5jb20KQEAg
LTMzMDYsNyArMzM0Nyw3IEBACiAgIC8qIHRtcHN0ciBzaG91bGQgbm93IGNvbnRhaW4gOiBb
eF0vc29tZXVzZXIgKi8KIAogICAvKiBzbyAxc3QgY2QgaW50byB0aGUgZG9tYWluIGRpciAo
d2hpY2ggc2hvdWxkIGFscmVhZHkgZXhpc3QpICovCi0gIGlmICggY2hkaXIodG1wYnVmKSA9
PSAtMSApIHsgY2hkaXIoY2FsbGluZ19kaXIpOyByZXR1cm4oIFZBX0JBRF9ESVIpOyB9Cisg
IGlmICggY2hkaXIodG1wYnVmKSA9PSAtMSApIHsgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2Uo
Y2FsbF9kaXIpOyByZXR1cm4oIFZBX0JBRF9ESVIpOyB9CiAKICAgLyogTmV4dCwgY3JlYXRl
IHRoZSB1c2VyJ3MgZGlyCiAgICAqIGllIFt4XS9zb21ldXNlcgpAQCAtMzMxNCwyMSArMzM1
NSwyMiBAQAogICByX21rZGlyKHRtcHN0ciwgdWlkLCBnaWQpOwogCiAgIC8qIHdlIHNob3Vs
ZCBub3cgYmUgYWJsZSB0byBjZCBpbnRvIHRoZSB1c2VyJ3MgZGlyICovCi0gIGlmICggY2hk
aXIoZGlyKSAhPSAwICkgeyBjaGRpcihjYWxsaW5nX2Rpcik7IHJldHVybigtMSk7IH0KKyAg
aWYgKCBjaGRpcihkaXIpICE9IDAgKSB7IGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxf
ZGlyKTsgcmV0dXJuKC0xKTsgfQogCiAgIC8qIG5vdyBjcmVhdGUgdGhlIE1haWxkaXIgKi8K
LSAgaWYgKG1rZGlyKCJNYWlsZGlyIixWUE9QTUFJTF9ESVJfTU9ERSkgPT0gLTEpIHsgY2hk
aXIoY2FsbGluZ19kaXIpOyByZXR1cm4oLTEpOyB9Ci0gIGlmIChjaGRpcigiTWFpbGRpciIp
ID09IC0xKSB7IGNoZGlyKGNhbGxpbmdfZGlyKTsgcmV0dXJuKC0xKTsgfQotICBpZiAobWtk
aXIoImN1ciIsVlBPUE1BSUxfRElSX01PREUpID09IC0xKSB7IGNoZGlyKGNhbGxpbmdfZGly
KTsgcmV0dXJuKC0xKTsgfQotICBpZiAobWtkaXIoIm5ldyIsVlBPUE1BSUxfRElSX01PREUp
ID09IC0xKSB7IGNoZGlyKGNhbGxpbmdfZGlyKTsgcmV0dXJuKC0xKTsgfQotICBpZiAobWtk
aXIoInRtcCIsVlBPUE1BSUxfRElSX01PREUpID09IC0xKSB7IGNoZGlyKGNhbGxpbmdfZGly
KTsgcmV0dXJuKC0xKTsgfQorICBpZiAobWtkaXIoIk1haWxkaXIiLFZQT1BNQUlMX0RJUl9N
T0RFKSA9PSAtMSkgeyBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7IHJldHVy
bigtMSk7IH0KKyAgaWYgKGNoZGlyKCJNYWlsZGlyIikgPT0gLTEpIHsgZmNoZGlyKGNhbGxf
ZGlyKTsgY2xvc2UoY2FsbF9kaXIpOyByZXR1cm4oLTEpOyB9CisgIGlmIChta2RpcigiY3Vy
IixWUE9QTUFJTF9ESVJfTU9ERSkgPT0gLTEpIHsgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2Uo
Y2FsbF9kaXIpOyByZXR1cm4oLTEpOyB9CisgIGlmIChta2RpcigibmV3IixWUE9QTUFJTF9E
SVJfTU9ERSkgPT0gLTEpIHsgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOyBy
ZXR1cm4oLTEpOyB9CisgIGlmIChta2RpcigidG1wIixWUE9QTUFJTF9ESVJfTU9ERSkgPT0g
LTEpIHsgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOyByZXR1cm4oLTEpOyB9
CiAKICAgLyogc2V0IHBlcm1pc3Npb25zIG9uIHRoZSB1c2VyJ3MgZGlyICovCiAgIGNoZGly
KGRpcik7CiAgIHJfY2hvd24oZGlyLCB1aWQsIGdpZCk7CiAKICAgLyogY2hhbmdlIGJhY2sg
dG8gdGhlIG9yaWduYWwgZGlyICovCi0gIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgZmNoZGly
KGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOworCiAgIHJldHVybigwKTsKIH0KIApAQCAt
MzkyMyw4ICszOTY1LDggQEAKIAogY2hhciAqZm9ybWF0X21haWxkaXJxdW90YShjb25zdCBj
aGFyICpxKSB7CiBpbnQgICAgIGk7Ci1kb3VibGUJcXVvdGFfc2l6ZTsKLWxvbmcJcXVvdGFf
Y291bnQ7CitzdG9yYWdlX3QgcXVvdGFfc2l6ZTsKK3N0b3JhZ2VfdCBxdW90YV9jb3VudDsK
IGNoYXIJKnA7CiBzdGF0aWMgY2hhciAgICB0ZW1wcXVvdGFbMTI4XTsKIApAQCAtMzkzNCwz
NCArMzk3NiwzNCBAQAogICAgIH0KIAogICAgIC8qIHRyYW5zbGF0ZSB0aGUgcXVvdGEgdG8g
YSBudW1iZXIsIG9yIGxlYXZlIGl0ICovCi0gICAgcXVvdGFfc2l6ZSA9IC0xLjA7Ci0gICAg
cXVvdGFfY291bnQgPSAtMTsKKyAgICBxdW90YV9zaXplID0gMDsKKyAgICBxdW90YV9jb3Vu
dCA9IDA7CiAgICAgc25wcmludGYgKHRlbXBxdW90YSwgc2l6ZW9mKHRlbXBxdW90YSksICIl
cyIsIHEpOwogICAgIHAgPSBzdHJ0b2sgKHRlbXBxdW90YSwgIiwiKTsKICAgICB3aGlsZSAo
cCAhPSBOVUxMKSB7CiAgICAgICBpID0gc3RybGVuKHApIC0gMTsKICAgICAgIGlmIChwW2ld
ID09ICdDJykgeyAvKiBzcGVjaWZ5IGEgbGltaXQgb24gdGhlIG51bWJlciBvZiBtZXNzYWdl
cyAoQ09VTlQpICovCi0gICAgICAgIHF1b3RhX2NvdW50ID0gYXRvbChwKTsKKyAgICAgICAg
cXVvdGFfY291bnQgPSBzdHJ0b2xsKHAsIE5VTEwsIDEwKTsKICAgICAgIH0gZWxzZSB7IC8q
IHNwZWNpZnkgYSBsaW1pdCBvbiB0aGUgc2l6ZSAqLwogICAgICAgICAvKiBzdHJpcCBvcHRp
b25hbCB0cmFpbGluZyBTICovCiAgICAgICAgIGlmICgocFtpXSA9PSAnUycpIHx8IChwW2ld
ID09ICdzJykpIHBbaS0tXSA9ICdcMCc7CiAgICAgICAgIC8qIHN0cmlwIG9wdGlvbmFsIHRy
YWlsaW5nIEIgKGZvciBLQiwgTUIpICovCiAgICAgICAgIGlmICgocFtpXSA9PSAnQicpIHx8
IChwW2ldID09ICdiJykpIHBbaS0tXSA9ICdcMCc7CiAKLSAgICAgICAgcXVvdGFfc2l6ZSA9
IGF0b2YocCk7CisgICAgICAgIHF1b3RhX3NpemUgPSBzdHJ0b2xsKHAsIE5VTEwsIDEwKTsK
ICAgICAgICAgaWYgKChwW2ldID09ICdNJykgfHwgKHBbaV0gPT0gJ20nKSkgcXVvdGFfc2l6
ZSAqPSAxMDI0ICogMTAyNDsKICAgICAgICAgaWYgKChwW2ldID09ICdLJykgfHwgKHBbaV0g
PT0gJ2snKSkgcXVvdGFfc2l6ZSAqPSAxMDI0OwogICAgICAgfQogICAgICAgcCA9IHN0cnRv
ayAoTlVMTCwgIiwiKTsKICAgICB9CiAKLSAgICBpZiAocXVvdGFfY291bnQgPT0gLTEpCi0g
ICAgICBpZiAocXVvdGFfc2l6ZSA9PSAtMS4wKSBzdHJjcHkgKHRlbXBxdW90YSwgIiIpOyAv
KiBpbnZhbGlkIHF1b3RhICovCi0gICAgICBlbHNlIHNwcmludGYgKHRlbXBxdW90YSwgIiUu
MGZTIiwgcXVvdGFfc2l6ZSk7Ci0gICAgZWxzZSBpZiAocXVvdGFfc2l6ZSA9PSAtMS4wKQot
ICAgICAgc3ByaW50ZiAodGVtcHF1b3RhLCAiJWx1QyIsIHF1b3RhX2NvdW50KTsKKyAgICBp
ZiAocXVvdGFfY291bnQgPT0gMCkKKyAgICAgIGlmIChxdW90YV9zaXplID09IDApIHN0cmNw
eSAodGVtcHF1b3RhLCAiIik7IC8qIGludmFsaWQgcXVvdGEgKi8KKyAgICAgIGVsc2Ugc3By
aW50ZiAodGVtcHF1b3RhLCAiJWxsdVMiLCBxdW90YV9zaXplKTsKKyAgICBlbHNlIGlmIChx
dW90YV9zaXplID09IDApCisgICAgICBzcHJpbnRmICh0ZW1wcXVvdGEsICIlbGx1QyIsIHF1
b3RhX2NvdW50KTsKICAgICBlbHNlCi0gICAgICBzcHJpbnRmICh0ZW1wcXVvdGEsICIlLjBm
UywlbHVDIiwgcXVvdGFfc2l6ZSwgcXVvdGFfY291bnQpOworICAgICAgc3ByaW50ZiAodGVt
cHF1b3RhLCAiJWxsdVMsJWxsdUMiLCBxdW90YV9zaXplLCBxdW90YV9jb3VudCk7CiAKICAg
ICByZXR1cm4gdGVtcHF1b3RhOwogfQpAQCAtNDAyNywxNiArNDA2OSwyOCBAQAogY2hhciAq
bWFpbGRpcl90b19lbWFpbCAoY29uc3QgY2hhciAqbWFpbGRpcikKIHsKIAlzdGF0aWMgY2hh
ciBlbWFpbFsyNTZdOworCWNoYXIgY2FsbGluZ19kaXJbTUFYX0JVRkZdOwogCWludCBpOwog
CWNoYXIgKnBudCwgKmxhc3Q7CiAJY2hhciAqbWRjb3B5OwogCWNoYXIgKnVzZXI7CiAJaW50
IHNhd2RvdDsKIAkKLQltZGNvcHkgPSBtYWxsb2MgKHN0cmxlbiAobWFpbGRpcikgKyAxKTsK
LQlpZiAobWRjb3B5ID09IE5VTEwpIHJldHVybiAiIjsKLQlzdHJjcHkgKG1kY29weSwgbWFp
bGRpcik7Ci0JCisJLyogcHJlcGVuZCB0aGUgY3dkIGlmIHRoZSBtYWlsZGlyIHN0YXJ0cyB3
aXRoIC4vICovCisJaWYgKHN0cmxlbiAobWFpbGRpcikgPiAxICYmIG1haWxkaXJbMF0gPT0g
Jy4nICYmIG1haWxkaXJbMV0gPT0gJy8nKQorCXsKKwkJZ2V0Y3dkKGNhbGxpbmdfZGlyLCBz
aXplb2YoY2FsbGluZ19kaXIpKTsKKwkJbWRjb3B5ID0gbWFsbG9jIChzdHJsZW4gKG1haWxk
aXIpICsgc3RybGVuIChjYWxsaW5nX2RpcikgKyAxKTsKKwkJaWYgKG1kY29weSA9PSBOVUxM
KSByZXR1cm4gIiI7CisJCXN0cmNhdCAoc3RyY3B5IChtZGNvcHksIGNhbGxpbmdfZGlyKSwg
bWFpbGRpciArIDEpOworCX0KKwllbHNlCisJeworCQltZGNvcHkgPSBtYWxsb2MgKHN0cmxl
biAobWFpbGRpcikgKyAxKTsKKwkJaWYgKG1kY29weSA9PSBOVUxMKSByZXR1cm4gIiI7CisJ
CXN0cmNweSAobWRjb3B5LCBtYWlsZGlyKTsKKwl9CisKIAkvKiBmaW5kIHRoZSBsYXN0IG9j
Y3VycmVuY2Ugb2YgL01haWxkaXIvICovCiAJcG50ID0gbWRjb3B5OwogCWRvIHsKQEAgLTQx
OTIsNyArNDI0Niw3IEBACiAJaW50IHByaW50ZWQ7ICAgLyogbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgcHJpbnRlZCAqLwogCWNvbnN0IGNoYXIgKmY7IC8qIGN1cnJlbnQgcG9zaXRpb24gaW4g
Zm9ybWF0IHN0cmluZyAqLwogCWNoYXIgKmI7ICAgICAgIC8qIGN1cnJlbnQgcG9zaXRpb24g
aW4gb3V0cHV0IGJ1ZmZlciAqLwotCWNoYXIgblsyMF07ICAgIC8qIGJ1ZmZlciB0byBob2xk
IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBudW1iZXIgKi8KKwljaGFyIG5bNjBdOyAgICAv
KiBidWZmZXIgdG8gaG9sZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbnVtYmVyICovCiAJ
CiAgICAgICAgIGludCBhcmduID0gMDsgIC8qIHVzZWQgZm9yIG51bWJlcmVkIGFyZ3VtZW50
cyAqLwogICAgICAgICBjaGFyIGFyZ3N0clsxMF07CkBAIC00MjI0LDkgKzQyNzgsMTQgQEAK
IAkJCQljYXNlICd1JzoKIAkJCQkJc25wcmludGYgKG4sIHNpemVvZihuKSwgIiV1IiwgdmFf
YXJnIChhcCwgdW5zaWduZWQgaW50KSk7CiAJCQkJCWJyZWFrOworCisJCQkJY2FzZSAnUyc6
CisJCQkJCXNucHJpbnRmIChuLCBzaXplb2YobiksICIlbGx1IiwgdmFfYXJnIChhcCwgc3Rv
cmFnZV90KSk7CisJCQkJCWJyZWFrOwogCQkJCQkKIAkJCQljYXNlICdsJzoKIAkJCQkJZisr
OworCiAJCQkJCXN3aXRjaCAoKmYpIHsKIAkJCQkJCWNhc2UgJ2QnOgogCQkJCQkJY2FzZSAn
aSc6CmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Zwb3BtYWlsZC5jIHZwb3BtYWls
LTUuNS4wL3Zwb3BtYWlsZC5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Zwb3BtYWlsZC5j
CTIwMTAtMTEtMDUgMTg6Mzc6MjMuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUu
MC92cG9wbWFpbGQuYwkyMDE1LTA5LTE4IDEyOjM2OjA3LjU3MzA5MzY1NSArMDEwMApAQCAt
MjQ1LDggKzI0NSw4IEBACiAKICAgbWVtc2V0KFJlYWRCdWYsMCxzaXplb2YoUmVhZEJ1Zikp
OwogICBpZiAoc2VsZWN0KDIsJnJmZHMsKGZkX3NldCAqKSAwLChmZF9zZXQgKikwLCZ0dik+
PTEpIHsKLSAgICBmZ2V0cyhSZWFkQnVmLHNpemVvZihSZWFkQnVmKSxzdGRpbik7Ci0gICAg
cmV0dXJuKDEpOworICAgIGlmIChmZ2V0cyhSZWFkQnVmLHNpemVvZihSZWFkQnVmKSxzdGRp
bikgIT0gTlVMTCkKKyAgICAgIHJldHVybigxKTsKICAgfQogICByZXR1cm4oLTEpOwogfQpA
QCAtMzAxLDcgKzMwMSw3IEBACiAgICAgZXhpdCggLTEgKTsKICAgfQogCi0gIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PSyk7CisgIHNucHJpbnRmKFdyaXRl
QnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PSyk7CiAgIHdhaXRfd3JpdGUoKTsK
IAogICAvKiBhdXRoZW50aWNhdGUgZmlyc3Qgb3IgZHJvcCBjb25uZWN0aW9uICovCkBAIC0x
MjAyLDggKzEyMDIsOCBAQAogewogIGNoYXIgKmRvbWFpbjsKICBkb21haW5fZW50cnkgKmVu
dHJ5OwotIGNoYXIgKmFsaWFzZXNbTUFYX0RPTV9BTElBU107Ci0gaW50ICBpLCBhbGlhc2Nv
dW50PTA7Cisgc3RyaW5nX2xpc3QgYWxpYXNlczsKKyBpbnQgaTsKIAogICBpZiAoICEoQXV0
aFZwdy5wd19naWQgJiBTQV9BRE1JTikgKSB7CiAgICAgc2hvd19lcnJvciggRVJSX05PVF9B
VVRIT1JJWkVELCAxNDAxICk7CkBAIC0xMjMyLDEwICsxMjMyLDExIEBACiAgIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKICAgd2FpdF93cml0
ZSgpOwogCisgIHN0cmluZ19saXN0X2luaXQoJmFsaWFzZXMsIDEwKTsKKwogICB3aGlsZSgg
ZW50cnkgKSB7CiAgICAgaWYgKHN0cmNtcChlbnRyeS0+ZG9tYWluLCBlbnRyeS0+cmVhbGRv
bWFpbikgIT0gMCkgewotICAgICAgYWxpYXNlc1thbGlhc2NvdW50KytdID0gc3RyZHVwKGVu
dHJ5LT5kb21haW4pOwotCisgICAgICBzdHJpbmdfbGlzdF9hZGQoJmFsaWFzZXMsIGVudHJ5
LT5kb21haW4pOwogICAgIH0gZWxzZSB7CiAgICAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCJkb21haW4gJXMiIFJFVF9DUkxGLCAKICAgICAgICAgICAgICAgIGVu
dHJ5LT5kb21haW4pOwpAQCAtMTI1OCwxNCArMTI1OSwxMyBAQAogICAgIGVudHJ5ID0gZ2V0
X2RvbWFpbl9lbnRyaWVzKE5VTEwpOwogICB9CiAKLSAgZm9yKGk9MDtpPGFsaWFzY291bnQ7
aSsrKSB7CisgIGZvcihpPTA7aTxhbGlhc2VzLmNvdW50O2krKykgewogICAgIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksImFsaWFzICVzIiBSRVRfQ1JMRiwgCi0gICAg
ICAgICAgICAgYWxpYXNlc1tpXSk7CisgICAgICAgICAgICAgYWxpYXNlcy52YWx1ZXNbaV0p
OwogICAgIHdhaXRfd3JpdGUoKTsKLSAgICBmcmVlKCBhbGlhc2VzW2ldICk7CiAgIH0gCiAK
LQorICBzdHJpbmdfbGlzdF9mcmVlKCZhbGlhc2VzKTsKIAogICBzbnByaW50ZihXcml0ZUJ1
Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKICAgcmV0dXJuKDApOwpAQCAt
MTQyMCw3ICsxNDIwLDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmludGYoV3JpdGVC
dWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgcmV0dXJuKDApOwogfQog
CkBAIC0xNDQ0LDcgKzE0NDQsNyBAQAogICAgICAgc3RyZXJyb3IoZXJybm8pKTsKICAgICBy
ZXR1cm4oLTEpOwogICB9Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks
IFJFVF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs
IFJFVF9PSyk7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTQ3Niw3ICsxNDc2LDcgQEAKICAg
ICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl
QnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVC
dWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICB3aGlsZSgo
bXlkaXJlbnQ9cmVhZGRpcihteWRpcikpIT1OVUxMKXsKQEAgLTE1MTQsNyArMTUxNCw3IEBA
CiAgICAgLyogb2ggd2VsbCwgYXQgbGVhc3Qgd2UgbWlnaHQgZGllIHNvb24gKi8KICAgfQog
Ci0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYp
OworICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJF
VF9DUkxGKTsKICAgcmV0dXJuKDApOwogfQogCkBAIC0xNTQ1LDkgKzE1NDUsOCBAQAogICAg
IHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVC
dWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi
JXMiLCBSRVRfT0spOwogICByZXR1cm4oMCk7Ci0KIH0KIAogCkBAIC0xNTcyLDcgKzE1NzEs
NyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE2MDUsNyAr
MTYwNCw3IEBACiAgIH0KICAgZmNsb3NlKGZzKTsKIAotICBzbnByaW50ZihXcml0ZUJ1Zixz
aXplb2YoV3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE2MzAs
NyArMTYyOSw3IEBACiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRl
QnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25wcmludGYoV3JpdGVC
dWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dyaXRl
KCk7CiAKICAgd2hpbGUoZmdldHModG1wYnVmLHNpemVvZih0bXBidWYpLGZzKSE9TlVMTCl7
CkBAIC0xNjQ1LDcgKzE2NDQsNyBAQAogICBmY2xvc2UoZnMpOwogCiAgIGlmICggdG1wYnVm
WzBdICE9IDAgJiYgdG1wYnVmW3N0cmxlbih0bXBidWYpLTFdICE9ICdcbicgKSB7Ci0gICAg
c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX0NSTEYgIi4iIFJFVF9D
UkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBS
RVRfQ1JMRiAiLiIgUkVUX0NSTEYpOwogICB9IGVsc2UgewogICAgIHNucHJpbnRmKFdyaXRl
QnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CiAgIH0KQEAgLTE2NzIsMTEg
KzE2NzEsMTEgQEAKICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiAgICAgcmV0dXJuKC0xKTsK
ICAgfQotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9S
RSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9P
S19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwogICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAidWlkOiAlZFxuIiwgbXlzdGF0LnN0X3VpZCk7IAogICB3YWl0X3dyaXRl
KCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JM
Rik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBS
RVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTc0MSw3ICsxNzQwLDcgQEAKICAg
ICBlbnRyeT1nZXRfZG9tYWluX2VudHJpZXMoTlVMTCk7CiAgICAgCiAgIH0KLSAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAg
cmV0dXJuKDApOwogfQogCkBAIC0xNzc4LDcgKzE3NzcsNyBAQAogICAgIHJldHVybigtMSk7
CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tf
TU9SRSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJF
VF9PS19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGNvdW50ID0gMDsKQEAgLTE3OTYs
NyArMTc5NSw3IEBACiAgIH0KIAogICBpZiggbWlzcyApIHsKLSAgICBzbnByaW50ZihXcml0
ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdy
aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgICAgcmV0
dXJuKDApOwogICB9IGVsc2UgaWYoIHBlcl9wYWdlID4gMCApIHsKICAgICBwYWdlID0gKCBj
b3VudCAvIHBlcl9wYWdlICkgKyAxOwpAQCAtMTgwNyw3ICsxODA2LDcgQEAKICAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgInBhZ2UgJWkiIFJFVF9DUkxGLCBwYWdl
ICk7CiAgIHdhaXRfd3JpdGUoKTsKIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE4
MjgsNyArMTgyNyw3IEBACiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdy
aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dy
aXRlKCk7CiAKICAgY291bnQgPSAwOwpAQCAtMTg0MCw3ICsxODM5LDcgQEAKICAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImNvdW50ICVpIiBSRVRfQ1JMRiwgY291
bnQpOwogICB3YWl0X3dyaXRlKCk7CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy
aXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy
aXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgcmV0dXJuKDApOwogfQogCkBAIC0x
ODczLDcgKzE4NzIsNyBAQAogICAgICByZXR1cm4oLTEpOwogICAgfQogIAotICAgc25wcmlu
dGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgIHNucHJp
bnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAg
ICB3YWl0X3dyaXRlKCk7CiAgCiAgICBmaXJzdD0xOwpAQCAtMTg4NSw3ICsxODg0LDcgQEAK
IAogICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImNvdW50ICVpIiBS
RVRfQ1JMRiwgY291bnQpOwogICAgd2FpdF93cml0ZSgpOwotICAgc25wcmludGYoV3JpdGVC
dWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgIHNucHJpbnRmKFdyaXRl
QnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgICByZXR1cm4o
MCk7CiAgfQogICAJIApAQCAtMTkzOSw3ICsxOTM4LDcgQEAKICAgICByZXR1cm4oLTEpOwog
ICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19N
T1JFKTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJF
VF9PS19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGZpcnN0PTE7CkBAIC0xOTU2LDEz
ICsxOTU1LDEzIEBACiAgICAgICBzZW5kX3VzZXJfaW5mbyh0bXB2cHcpOwogICAgIH0KIAot
ICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCBSRVRfQ1JMRiApOwor
ICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfQ1JM
RiApOwogICAgIHdhaXRfd3JpdGUoKTsKIAogICAgICsrY291bnQ7CiAgIH0KIAotICBzbnBy
aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnBy
aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwog
ICByZXR1cm4oMCk7CiB9CiAKQEAgLTIwMTcsNyArMjAxNiw3IEBACiAgIC8qICBwcmludCBh
bGwgYWxpYXNlcyAgKi8KICAgaWYgKHN0cnN0cihFbWFpbCwgIkAiKSA9PSBOVUxMKSB7CiAg
ICAgdG1wYWxpYXMgPSB2YWxpYXNfc2VsZWN0X2FsbChBbGlhcywgRW1haWwpOwotICAgIHNu
cHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgICAg
c25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JF
KTsKICAgICB3YWl0X3dyaXRlKCk7CiAgICAgICAKICAgICB3aGlsZSAodG1wYWxpYXMgIT0g
TlVMTCkgewpAQCAtMjAzMCw5ICsyMDI5LDkgQEAKICAgfSBlbHNlIHsKICAgICB0bXBhbGlh
cyA9IHZhbGlhc19zZWxlY3QoQWxpYXMsIERvbWFpbik7CiAgICAgaWYgKHRtcGFsaWFzID09
IE5VTEwpIHsKLSAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCBS
RVRfT0spOworICAgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIl
cyIsIFJFVF9PSyk7CiAgICAgfSBlbHNlIHsKLSAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBz
aXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgICAgICBzbnByaW50ZihXcml0ZUJ1
Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICAgICAgd2FpdF93
cml0ZSgpOwogICAgICAgCiAgICAgICB3aGlsZSAodG1wYWxpYXMgIT0gTlVMTCkgewpAQCAt
MjA0Myw3ICsyMDQyLDcgQEAKICAgICB9CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1Zixz
aXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnByaW50ZihXcml0ZUJ1Zixz
aXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwogICByZXR1cm4oMCk7CiB9
CiAKQEAgLTIxMDYsNyArMjEwNSw3IEBACiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNu
cHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgIHNu
cHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7
CiAgIHdhaXRfd3JpdGUoKTsKIAogICBqID0gYmtzY2FuZGlyKCIuIiwgJm5hbWVsaXN0LCAw
LCBxYV9zb3J0KTsKQEAgLTIxMzUsNyArMjEzNCw3IEBACiAgICAgfQogICAgICsrY291bnQ7
CiAgIH0KLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9D
UkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4i
IFJFVF9DUkxGKTsKICAgcmV0dXJuKDApOwogfQogCkBAIC0yMTU3LDE2ICsyMTU2LDE2IEBA
CiAKICAgaWYgKHZhdXRoX21vZHVsZV9mZWF0dXJlKCJJUF9BTElBU19ET01BSU5TIikpIHsK
ICAgaWYgKCB2Z2V0X2lwX21hcChpcCx0bXBkb21haW4sc2l6ZW9mKHRtcGRvbWFpbikpIDwg
MCApIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfRVJS
ICIwLjMwMDMgZXJyb3IiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfRVJSICIwLjMwMDMgZXJyb3IiIFJFVF9DUkxGKTsK
ICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy
aXRlQnVmKSxSRVRfT0tfTU9SRSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0
ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwogIAogICBzbnBy
aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCIlcyAlcyIgUkVUX0NSTEYsIGlwLCB0
bXBkb21haW4pOwogICB3YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv
ZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv
ZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIH0KIAogICBlbHNlCkBAIC0y
MjAyLDExICsyMjAxLDExIEBACiAgIH0KIAogICBpZiAoIHZhZGRfaXBfbWFwKGlwLGRvbWFp
bikgPCAwICkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJF
VF9FUlIgIjAuMzEwNSBlcnJvciIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVm
LHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9FUlIgIjAuMzEwNSBlcnJvciIgUkVUX0NS
TEYpOwogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLFJFVF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0
ZUJ1ZiksICIlcyIsIFJFVF9PSyk7CiAgICB9CiAKICAgIGVsc2UKQEAgLTIyNDEsNyArMjI0
MCw3IEBACiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNp
emVvZihXcml0ZUJ1ZiksUkVUX09LKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy
aXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgfQogCiAgIGVsc2UKQEAgLTIyNjIsNyArMjI2
MSw3IEBACiAgIH0KIAogICBpZiAodmF1dGhfbW9kdWxlX2ZlYXR1cmUoIklQX0FMSUFTX0RP
TUFJTlMiKSkgewotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRf
T0tfTU9SRSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs
IFJFVF9PS19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGZpcnN0ID0gMTsKQEAgLTIy
NzIsNyArMjI3MSw3IEBACiAgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1
ZiksICIlcyAlcyIgUkVUX0NSTEYsIHJfaXAsIHJfZG9tYWluKTsKICAgICB3YWl0X3dyaXRl
KCk7CiAgIH0KLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJF
VF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwg
Ii4iIFJFVF9DUkxGKTsKICAgfQogCiAgIGVsc2UKQEAgLTIzMDIsNyArMjMwMSw3IEBACiAg
ICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0
ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl
QnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIm1heF9wb3BhY2NvdW50cyAlZCIgUkVU
X0NSTEYsIApAQCAtMjMxNSw3NCArMjMxNCw3NCBAQAogICAgIG15bGltaXRzLm1heGF1dG9y
ZXNwb25kZXJzKTsgd2FpdF93cml0ZSgpOwogICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAibWF4X21haWxpbmdsaXN0cyAlZCIgUkVUX0NSTEYsIAogICAgIG15bGlt
aXRzLm1heG1haWxpbmdsaXN0cyk7IHdhaXRfd3JpdGUoKTsKLSAgc25wcmludGYoV3JpdGVC
dWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2tfcXVvdGEgJWQiIFJFVF9DUkxGLCAKKyAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2tfcXVvdGEgJWxsdSIgUkVU
X0NSTEYsIAogICAgIG15bGltaXRzLmRpc2txdW90YSk7IHdhaXRfd3JpdGUoKTsKLSAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIm1heF9tc2djb3VudCAlZCIgUkVU
X0NSTEYsIAorICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAibWF4X21z
Z2NvdW50ICVsbHUiIFJFVF9DUkxGLCAKICAgICBteWxpbWl0cy5tYXhtc2djb3VudCk7IHdh
aXRfd3JpdGUoKTsKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRl
ZmF1bHRfcXVvdGEgJWQiIFJFVF9DUkxGLCAKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgImRlZmF1bHRfcXVvdGEgJWxsdSIgUkVUX0NSTEYsIAogICAgIG15bGlt
aXRzLmRlZmF1bHRxdW90YSk7IHdhaXRfd3JpdGUoKTsKLSAgc25wcmludGYoV3JpdGVCdWYs
c2l6ZW9mKFdyaXRlQnVmKSwgImRlZmF1bHRfbWF4bXNnY291bnQgJWQiIFJFVF9DUkxGLCAK
KyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRlZmF1bHRfbWF4bXNn
Y291bnQgJWxsdSIgUkVUX0NSTEYsIAogICAgIG15bGltaXRzLmRlZmF1bHRtYXhtc2djb3Vu
dCk7IHdhaXRfd3JpdGUoKTsKIAogICBpZiAobXlsaW1pdHMuZGlzYWJsZV9wb3ApIAotICAg
IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3BvcCAxIiBS
RVRfQ1JMRik7IAorICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIl
cyIsICJkaXNhYmxlX3BvcCAxIiBSRVRfQ1JMRik7IAogICBlbHNlIAotICAgIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3BvcCAwIiBSRVRfQ1JMRik7
IAorICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJkaXNh
YmxlX3BvcCAwIiBSRVRfQ1JMRik7IAogCiAgIHdhaXRfd3JpdGUoKTsKIAogICBpZiAobXls
aW1pdHMuZGlzYWJsZV9pbWFwKSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiZGlzYWJsZV9pbWFwIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0
ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9pbWFwIDEiIFJFVF9DUkxG
KTsKICAgZWxzZQotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJk
aXNhYmxlX2ltYXAgMCIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv
ZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX2ltYXAgMCIgUkVUX0NSTEYpOwogICB3YWl0
X3dyaXRlKCk7CiAKICAgaWYgKG15bGltaXRzLmRpc2FibGVfZGlhbHVwKSAKLSAgICBzbnBy
aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9kaWFsdXAgMSIgUkVU
X0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs
ICJkaXNhYmxlX2RpYWx1cCAxIiBSRVRfQ1JMRik7CiAgIGVsc2UgCi0gICAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfZGlhbHVwIDAiIFJFVF9DUkxG
KTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlz
YWJsZV9kaWFsdXAgMCIgUkVUX0NSTEYpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgaWYgKG15
bGltaXRzLmRpc2FibGVfcGFzc3dvcmRjaGFuZ2luZykgCi0gICAgc25wcmludGYoV3JpdGVC
dWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfcGFzc3dvcmRfY2hhbmdpbmcgMSIgUkVU
X0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs
ICJkaXNhYmxlX3Bhc3N3b3JkX2NoYW5naW5nIDEiIFJFVF9DUkxGKTsKICAgZWxzZSAKLSAg
ICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9wYXNzd29y
ZF9jaGFuZ2luZyAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfcGFzc3dvcmRfY2hhbmdpbmcgMCIgUkVUX0NS
TEYpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgaWYgKG15bGltaXRzLmRpc2FibGVfd2VibWFp
bCkKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV93
ZWJtYWlsIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiJXMiLCAiZGlzYWJsZV93ZWJtYWlsIDEiIFJFVF9DUkxGKTsKICAgZWxzZQot
ICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3dlYm1h
aWwgMCIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1
ZiksICIlcyIsICJkaXNhYmxlX3dlYm1haWwgMCIgUkVUX0NSTEYpOwogICB3YWl0X3dyaXRl
KCk7CiAKICAgaWYgKG15bGltaXRzLmRpc2FibGVfcmVsYXkpCi0gICAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfZXh0ZXJuYWxfcmVsYXkgMSIgUkVU
X0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs
ICJkaXNhYmxlX2V4dGVybmFsX3JlbGF5IDEiIFJFVF9DUkxGKTsKICAgZWxzZQotICAgIHNu
cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX2V4dGVybmFsX3Jl
bGF5IDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVC
dWYpLCAiJXMiLCAiZGlzYWJsZV9leHRlcm5hbF9yZWxheSAwIiBSRVRfQ1JMRik7CiAgIHdh
aXRfd3JpdGUoKTsKIAogICBpZiAobXlsaW1pdHMuZGlzYWJsZV9zbXRwKQotICAgIHNucHJp
bnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3NtdHAgMSIgUkVUX0NS
TEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJk
aXNhYmxlX3NtdHAgMSIgUkVUX0NSTEYpOwogICBlbHNlCi0gICAgc25wcmludGYoV3JpdGVC
dWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfc210cCAwIiBSRVRfQ1JMRik7CisgICAg
c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfc210
cCAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBpZiAobXlsaW1pdHMuZGlz
YWJsZV9zcGFtYXNzYXNzaW4pIAotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0
ZUJ1ZiksICJkaXNhYmxlX3NwYW1hc3Nhc3NpbiAxIiBSRVRfQ1JMRik7CisgICAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfc3BhbWFzc2Fz
c2luIDEiIFJFVF9DUkxGKTsKICAgZWxzZSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9zcGFtYXNzYXNzaW4gMCIgUkVUX0NSTEYpOworICAg
IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX3Nw
YW1hc3Nhc3NpbiAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBpZiAobXls
aW1pdHMuZGVsZXRlX3NwYW0pCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl
QnVmKSwgImRlbGV0ZV9zcGFtIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGVsZXRlX3NwYW0gMSIgUkVUX0NSTEYpOwog
ICBlbHNlCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRlbGV0
ZV9zcGFtIDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiJXMiLCAiZGVsZXRlX3NwYW0gMCIgUkVUX0NSTEYpOwogICB3YWl0X3dyaXRl
KCk7CiAKICAgaWYgKG15bGltaXRzLmRpc2FibGVfbWFpbGRyb3ApIAotICAgIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX21haWxkcm9wIDEiIFJFVF9D
UkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAi
ZGlzYWJsZV9tYWlsZHJvcCAxIiBSRVRfQ1JMRik7CiAgIGVsc2UgCi0gICAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfbWFpbGRyb3AgMCIgUkVUX0NS
TEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJk
aXNhYmxlX21haWxkcm9wIDAiIFJFVF9DUkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIHNu
cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJwZXJtX2FjY291bnQgJWQiIFJF
VF9DUkxGLCAKQEAgLTI0MDUsNyArMjQwNCw3IEBACiAgICAgbXlsaW1pdHMucGVybV9kZWZh
dWx0cXVvdGEpOyB3YWl0X3dyaXRlKCk7CiAgIHdhaXRfd3JpdGUoKTsKIAotICBzbnByaW50
ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnByaW50
ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwogICBy
ZXR1cm4oMCk7CiB9CiAKQEAgLTI0MzQsNyArMjQzMyw3IEBACiAgICAgcmV0dXJuKC0xKTsK
ICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PSyk7
CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PSyk7
CiAgIHdhaXRfd3JpdGUoKTsKIAogICB3aGlsZShmZ2V0cyhSZWFkQnVmLHNpemVvZihSZWFk
QnVmKSxzdGRpbikhPU5VTEwgKSB7CkBAIC0yNDQyLDcgKzI0NDEsNyBAQAogCiAgICAgaWYg
KCAocGFyYW0gPSBzdHJ0b2soUmVhZEJ1ZixQQVJBTV9UT0tFTlMpKSA9PSBOVUxMICkgY29u
dGludWU7CiAgICAgaWYgKCAodmFsdWUgPSBzdHJ0b2soTlVMTCxQQVJBTV9UT0tFTlMpKSA9
PSBOVUxMICkgIHsKLSAgICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks
IAorICAgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAg
ICAgICAgIiAgV2FybmluZzogbWlzc2luZyB2YWx1ZSIgUkVUX0NSTEYpOwogICAgICAgd2Fp
dF93cml0ZSgpOwogICAgICAgY29udGludWU7CkBAIC0yNTA1LDcgKzI1MDQsNyBAQAogICAg
IH0gZWxzZSBpZiAoIHN0cmNtcChwYXJhbSwicGVybV9kZWZhdWx0cXVvdGEiKSA9PSAwICkg
ewogICAgICAgbXlsaW1pdHMucGVybV9kZWZhdWx0cXVvdGEgPSBhdG9pKHZhbHVlKTsKICAg
ICB9IGVsc2UgewotICAgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwg
CisgICAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLAogICAg
ICAgICAiICBXYXJuaW5nOiBpbnZhbGlkIG9wdGlvbiIgUkVUX0NSTEYpOwogICAgICAgd2Fp
dF93cml0ZSgpOwogICAgIH0KQEAgLTI1MTUsNyArMjUxNCw3IEBACiAgIGlmICggdnNldF9s
aW1pdHMoZG9tYWluLCZteWxpbWl0cykgPCAwICkgewogICAgIHNob3dfZXJyb3IoIEVSUl9O
T19TRVRfTElNSVRTLCAzNTA0ICk7CiAgIH0gZWxzZSB7Ci0gICAgc25wcmludGYoV3JpdGVC
dWYsc2l6ZW9mKFdyaXRlQnVmKSxSRVRfT0spOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNp
emVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PSyk7CiAgIH0KICAgcmV0dXJuKDApOwogfQpA
QCAtMjU0MSw3ICsyNTQwLDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgcmV0dXJuKDApOwog
fQogCkBAIC0yNTc2LDEwICsyNTc1LDEwIEBACiAgIH0gCiAKICAgaWYgKCEodmF1dGhfbW9k
dWxlX2ZlYXR1cmUoIkFVVEhfTE9HR0lORyIpKSkKLQkgIHNucHJpbnRmKFdyaXRlQnVmLHNp
emVvZihXcml0ZUJ1ZiksIFJFVF9PSyk7CisJICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogCiAgIGVsc2UgewotCSAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworCSAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogCSAgd2FpdF93
cml0ZSgpOwogCiAJICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgInRp
bWUgJWxkIiBSRVRfQ1JMRiwKQEAgLTI1OTAsNyArMjU4OSw3IEBACiAJCSB2Z2V0X2xhc3Rh
dXRoaXAodG1wdnB3LCBUbXBEb21haW4pKTsKIAkgIHdhaXRfd3JpdGUoKTsKIAotCSAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKwkgIHNu
cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7
CiAgIH0KIAogICByZXR1cm4oMCk7CkBAIC0yNjE3LDM1ICsyNjE2LDM2IEBACiBpbnQgZ2V0
X3VzZXJfc2l6ZSgpCiB7CiAgIGNoYXIgKmVtYWlsX2FkZHJlc3M7Ci0gIGludCByZXQsIGNu
dDsKLSAgbG9uZyBieXRlczsKKyAgaW50IHJldDsKKyAgc3RvcmFnZV90IGNudDsKKyAgc3Rv
cmFnZV90IGJ5dGVzOwogCiAgIGlmICghKEF1dGhWcHcucHdfZ2lkICYgUUFfQURNSU4pICYm
ICEoQXV0aFZwdy5wd19naWQgJiBTQV9BRE1JTikpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1
Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX0VSUiAiMzgwMSBub3QgYXV0aG9yaXplZCIgUkVU
X0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMi
LCBSRVRfRVJSICIzODAxIG5vdCBhdXRob3JpemVkIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJu
KC0xKTsKICAgfQogCiAgIGlmICgoZW1haWxfYWRkcmVzcyA9IHN0cnRvayhOVUxMLCBUT0tF
TlMpKSA9PSBOVUxMKSB7Ci0gICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1
ZiksIAorICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLAog
ICAgICAgUkVUX0VSUiAiMzgwMiBlbWFpbF9hZGRyZXNzIHJlcXVpcmVkIiBSRVRfQ1JMRik7
CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCiAgIGlmIChwYXJzZV9lbWFpbChlbWFpbF9hZGRy
ZXNzLCBUbXBVc2VyLCBUbXBEb21haW4sIEFVVEhfU0laRSkgIT0gMCkgewotICAgIHNucHJp
bnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBzbnByaW50ZihXcml0ZUJ1
Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9FUlIgIjM4MDMgaW52YWxp
ZCBlbWFpbCBhZGRyZXNzIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCiAg
IGlmICghKEF1dGhWcHcucHdfZ2lkICYgU0FfQURNSU4pICYmIChBdXRoVnB3LnB3X2dpZCAm
IFFBX0FETUlOKSAKICAgICAmJiAoc3RyY21wKFRoZURvbWFpbiwgVG1wRG9tYWluKSAhPSAw
KSkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBz
bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9F
UlIgIjM4MDQgbm90IGF1dGhvcml6ZWQgZm9yIGRvbWFpbiIgUkVUX0NSTEYpOwogICAgIHJl
dHVybigtMSk7CiAgIH0KIAogICBpZiAoKHRtcHZwdyA9IHZhdXRoX2dldHB3KFRtcFVzZXIs
IFRtcERvbWFpbikpID09IE5VTEwpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m
KFdyaXRlQnVmKSwgCisgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1Ziks
ICIlcyIsCiAgICAgICBSRVRfRVJSICIzODA1IHVzZXIgZG9lcyBub3QgZXhpc3QiIFJFVF9D
UkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CkBAIC0yNjUzLDE4ICsyNjUzLDE4IEBACiAg
IGJ5dGVzID0gMDsKICAgY250ID0gMDsKICAgaWYgKChyZXQgPSByZWFkdXNlcnF1b3RhKHRt
cHZwdy0+cHdfZGlyLCAmYnl0ZXMsICZjbnQpKSAhPSAwKSB7Ci0gICAgc25wcmludGYoV3Jp
dGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIAorICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLAogICAgICAgUkVUX0VSUiAiMzgwNiB1bmFibGUgdG8gZmV0
Y2ggc2l6ZSBvZiB1c2VyIGFjY291bnQiIFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwog
ICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19N
T1JFKTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJF
VF9PS19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6
ZW9mKFdyaXRlQnVmKSwgInNpemUgJWxkIiBSRVRfQ1JMRiwgYnl0ZXMpOworICBzbnByaW50
ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgInNpemUgJWxsdSIgUkVUX0NSTEYsIGJ5
dGVzKTsKICAgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdy
aXRlQnVmKSwgImNvdW50ICVkIiBSRVRfQ1JMRiwgY250KTsKKyAgc25wcmludGYoV3JpdGVC
dWYsIHNpemVvZihXcml0ZUJ1ZiksICJjb3VudCAlbHUiIFJFVF9DUkxGLCBjbnQpOwogICB3
YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAi
LiIgUkVUX0NSTEYpOworICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwg
IiVzIiwgIi4iIFJFVF9DUkxGKTsKIAogICByZXR1cm4oMCk7CiB9CkBAIC0yNjcyLDMxICsy
NjcyLDMyIEBACiBpbnQgZ2V0X2RvbWFpbl9zaXplKCkKIHsKICAgY2hhciAqZG9tYWluLCB0
bXBkaXJbMjU2XTsKLSAgaW50IHJldCwgY250LCBmaXJzdDsKLSAgbG9uZyBieXRlczsKLSAg
dW5zaWduZWQgaW50IHRvdGFsY250OwotICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxieXRl
czsKKyAgaW50IHJldCwgZmlyc3Q7CisgIHN0b3JhZ2VfdCBjbnQ7CisgIHN0b3JhZ2VfdCBi
eXRlczsKKyAgc3RvcmFnZV90IHRvdGFsY250OworICBzdG9yYWdlX3QgdG90YWxieXRlczsK
IAogICBpZiAoIShBdXRoVnB3LnB3X2dpZCAmIFFBX0FETUlOKSAmJiAhKEF1dGhWcHcucHdf
Z2lkICYgU0FfQURNSU4pKSB7Ci0gICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0
ZUJ1ZiksIAorICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMi
LAogICAgICAgUkVUX0VSUiAiMzkwMSBub3QgYXV0aG9yaXplZCIgUkVUX0NSTEYpOwogICAg
IHJldHVybigtMSk7CiAgIH0KIAogICBpZiAoKGRvbWFpbiA9IHN0cnRvayhOVUxMLCBUT0tF
TlMpKSA9PSBOVUxMKSB7Ci0gICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1
ZiksIAorICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLAog
ICAgICAgUkVUX0VSUiAiMzkwMiBkb21haW4gcmVxdWlyZWQiIFJFVF9DUkxGKTsKICAgICBy
ZXR1cm4oLTEpOwogICB9CiAKICAgaWYgKCEoQXV0aFZwdy5wd19naWQgJiBTQV9BRE1JTikg
JiYgKEF1dGhWcHcucHdfZ2lkICYgUUFfQURNSU4pIAogICAgICYmIChzdHJjbXAoVGhlRG9t
YWluLCBkb21haW4pICE9IDApKSB7Ci0gICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihX
cml0ZUJ1ZiksCisgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIl
cyIsCiAgICAgICBSRVRfRVJSICIzOTAzIG5vdCBhdXRob3JpemVkIGZvciBkb21haW4iIFJF
VF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYs
IHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25wcmludGYoV3JpdGVCdWYs
IHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsKICAgd2FpdF93cml0ZSgp
OwogCiAgIHRvdGFsYnl0ZXMgPSAwOwpAQCAtMjcxNCwxMiArMjcxNSwxMiBAQAogICAgIH0g
ZWxzZSB7CiAgICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgInVz
ZXIgJXNAJXMiIFJFVF9DUkxGLCB0bXB2cHctPnB3X25hbWUsIGRvbWFpbik7CiAgICAgICB3
YWl0X3dyaXRlKCk7Ci0gICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVm
KSwgInNpemUgJWxkIiBSRVRfQ1JMRiwgYnl0ZXMpOworICAgICAgc25wcmludGYoV3JpdGVC
dWYsIHNpemVvZihXcml0ZUJ1ZiksICJzaXplICVsbHUiIFJFVF9DUkxGLCBieXRlcyk7CiAg
ICAgICB3YWl0X3dyaXRlKCk7Ci0gICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdy
aXRlQnVmKSwgImNvdW50ICVkIiBSRVRfQ1JMRiwgY250KTsKKyAgICAgIHNucHJpbnRmKFdy
aXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiY291bnQgJWxsdSIgUkVUX0NSTEYsIGNudCk7
CiAgICAgICB3YWl0X3dyaXRlKCk7Ci0gICAgICB0b3RhbGJ5dGVzICs9ICh1bnNpZ25lZCBs
b25nKWJ5dGVzOwotICAgICAgdG90YWxjbnQgKz0gKHVuc2lnbmVkIGludCljbnQ7CisgICAg
ICB0b3RhbGJ5dGVzICs9IGJ5dGVzOworICAgICAgdG90YWxjbnQgKz0gY250OwogICAgIH0K
ICAgfQogCkBAIC0yNzI3LDE2ICsyNzI4LDE2IEBACiAgIHdhaXRfd3JpdGUoKTsKICAgc25w
cmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJzaXplICVsbHUiIFJFVF9DUkxG
LCB0b3RhbGJ5dGVzKTsKICAgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1Ziwg
c2l6ZW9mKFdyaXRlQnVmKSwgImNvdW50ICV1IiBSRVRfQ1JMRiwgdG90YWxjbnQpOworICBz
bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgImNvdW50ICVsbHUiIFJFVF9D
UkxGLCB0b3RhbGNudCk7CiAgIHdhaXRfd3JpdGUoKTsKLSAgc25wcmludGYoV3JpdGVCdWYs
IHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVm
LCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwogCiAgIHJldHVybigw
KTsKIH0KIAogaW50IHF1aXQoKQogewotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYp
LCAiJXMiLCBSRVRfT0spOwogICB3YWl0X3dyaXRlKCk7CiAgIHZjbG9zZSgpOwogCkBAIC0y
NzQ3LDcgKzI3NDgsNyBAQAogewogIGludCBpOwogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNp
emVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6
ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dyaXRlKCk7CiAK
ICAgZm9yKGk9MDtMb2dpbkZ1bmN0aW9uc1tpXS5jb21tYW5kIT1OVUxMOysraSApIHsKQEAg
LTI3NjIsNyArMjc2Myw3IEBACiAgICAgfQogICAgIHdhaXRfd3JpdGUoKTsKICAgfQotICBz
bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBz
bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYp
OwogICAKICAgcmV0dXJuKDEpOyAKIH0KZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcv
dnBvcG1haWwuaCB2cG9wbWFpbC01LjUuMC92cG9wbWFpbC5oCi0tLSB2cG9wbWFpbC01LjUu
MC5vcmlnL3Zwb3BtYWlsLmgJMjAxMC0xMS0wNSAxODozNzoyNC4wMDAwMDAwMDAgKzAwMDAK
KysrIHZwb3BtYWlsLTUuNS4wL3Zwb3BtYWlsLmgJMjAxNS0wOS0xOCAxMjozNjowNy41NzQw
OTM3MDAgKzAxMDAKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAj
aW5jbHVkZSA8c3lzL3R5cGVzLmg+CQkvLyBmb3IgdWlkX3QKKyNpbmNsdWRlICJzdG9yYWdl
LmgiCiAjaW5jbHVkZSAidmF1dGguaCIKIAogLyogIEVuYWJsZSBleHBhbmRlZCBkZWJ1ZyBp
bmZvcm1hdGlvbi4gIENvbnNpZGVyIHRoZXNlIGZvciAuL2NvbmZpZ3VyZSBvcHRpb25zICAq
LwpAQCAtMzUsNyArMzYsNiBAQAogCiAvKiBtYXggYnVmZmVyIHNpemVzICovCiAjZGVmaW5l
IE1BWF9CVUZGIDMwMAotI2RlZmluZSBNQVhfRE9NX0FMSUFTIDEwMAogCiAvKiBtYXggZmll
bGQgc2l6ZXMgKi8KICNkZWZpbmUgTUFYX1BXX05BTUUgICAgICAgICAgMzIKQEAgLTE2Niw2
ICsxNjYsMTYgQEAKICNkZWZpbmUgUkVQTFlUT19MSVNUIDIKICNkZWZpbmUgUkVQTFlUT19B
RERSRVNTIDMKIAorLyogICBMaXN0IG9mIHN0cmluZ3MgKi8KK3R5cGVkZWYgc3RydWN0IHN0
cmluZ19saXN0IHsKKyAgICBpbnQgc2l6ZTsKKyAgICBpbnQgY291bnQ7CisgICAgY2hhciAq
KnZhbHVlczsKK30gc3RyaW5nX2xpc3Q7CisKK3ZvaWQgc3RyaW5nX2xpc3RfaW5pdChzdHJp
bmdfbGlzdCAqYSwgaW50IGZpcnN0KTsKK2ludCBzdHJpbmdfbGlzdF9hZGQoc3RyaW5nX2xp
c3QgKmEsIGNoYXIgKnZhbHVlKTsKK3ZvaWQgc3RyaW5nX2xpc3RfZnJlZShzdHJpbmdfbGlz
dCAqYSk7CiAKIC8qICAgRG9tYWluIGVudHJ5ICAqLwogdHlwZWRlZiBzdHJ1Y3QgZG9tYWlu
X2VudHJ5IHsKQEAgLTE3NCwxMSArMTg0LDggQEAKICAgICAgICAgaW50ICAgICAgICAgICAg
IHVpZDsKICAgICAgICAgaW50ICAgICAgICAgICAgIGdpZDsKICAgICAgICAgY2hhciAgICAq
cGF0aDsKLSAgICAgICAgY2hhciAgICAqYWxpYXNlc1tNQVhfRE9NX0FMSUFTXTsKIH0gZG9t
YWluX2VudHJ5OwogCi0KLQogLyogICBTdHJ1Y3R1cmUgZm9yIG1haWxpbmcgbGlzdCBkYXRh
ICAqLwogdHlwZWRlZiBzdHJ1Y3QgbGlzdEluZm9UeXBlIHsKICAgIGRvbWFpbl9lbnRyeSAq
ZW50cnk7CkBAIC0yOTUsMTEgKzMwMiwxMSBAQAogaW50IGFkZF9kb21haW5fYXNzaWduKCBj
aGFyICphbGlhc19kb21haW4sIGNoYXIgKnJlYWxfZG9tYWluLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqZGlyLCB1aWRfdCB1aWQsIGdpZF90IGdpZCk7CiAvL2ludCBkZWxf
Y29udHJvbCggY2hhciAqKTsKLWludCBkZWxfY29udHJvbCggY2hhciAqYWxpYXNlc1tNQVhf
RE9NX0FMSUFTXSwgaW50IGFsaWFzY291bnQpOwotaW50IGRlbF9kb21haW5fYXNzaWduKCBj
aGFyICphbGlhc2llc1tNQVhfRE9NX0FMSUFTXSwgaW50IGFsaWFzY291bnQsIAoraW50IGRl
bF9jb250cm9sKCBjaGFyICoqYWxpYXNlcywgaW50IGFsaWFzY291bnQpOworaW50IGRlbF9k
b21haW5fYXNzaWduKCBjaGFyICoqYWxpYXNpZXMsIGludCBhbGlhc2NvdW50LCAKICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqcmVhbF9kb21haW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKmRpciwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpOwotaW50IHJlbW92ZV9s
aW5lcyggY2hhciAqZmlsZW5hbWUsIGNoYXIgKmFsaWFzZXNbTUFYX0RPTV9BTElBU10sIGlu
dCBhbGlhc2NvdW50KTsKK2ludCByZW1vdmVfbGluZXMoIGNoYXIgKmZpbGVuYW1lLCBjaGFy
ICoqYWxpYXNlcywgaW50IGFsaWFzY291bnQpOwogaW50IHNpZ25hbF9wcm9jZXNzKCBjaGFy
ICosIGludCApOwogaW50IHVwZGF0ZV9uZXd1KCk7CiBpbnQgYWRkX3VzZXJfYXNzaWduKCBj
aGFyICosIGNoYXIgKik7CkBAIC0zMzYsNyArMzQzLDcgQEAKIGNoYXIgKmZvcm1hdF9tYWls
ZGlycXVvdGEoY29uc3QgY2hhciAqcSk7CiBjaGFyICpkYXRlX2hlYWRlcigpOwogaW50IHFu
cHJpbnRmIChjaGFyICpidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmb3JtYXQs
IC4uLik7Ci1pbnQgcmVhZHVzZXJxdW90YShjb25zdCBjaGFyKiBkaXIsIGxvbmcgKnNpemVw
LCBpbnQgKmNudHApOworaW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGlyLCBzdG9y
YWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApOwogI2lmbmRlZiBIQVZFX1dBUk4KICNk
ZWZpbmUgd2FybiguLi4pIGZwcmludGYoc3RkZXJyLCBfX1ZBX0FSR1NfXykKICNlbmRpZgpk
aWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2VkL2RpcmVjdG9yeS5jIHZwb3Bt
YWlsLTUuNS4wL3Z1c2FnZWQvZGlyZWN0b3J5LmMKLS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcv
dnVzYWdlZC9kaXJlY3RvcnkuYwkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAwMCArMDAw
MAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC9kaXJlY3RvcnkuYwkyMDE1LTA5LTE4IDEy
OjM2OjA3LjU3NDA5MzcwMCArMDEwMApAQCAtMzIsNyArMzIsNyBAQAogICAgI2luY2x1ZGUg
PGFzc2VydC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8Y29uZi5oPgotI2luY2x1ZGUgPHN0b3Jh
Z2UuaD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSAicGF0aC5oIgogI2lu
Y2x1ZGUgImRpcmVjdG9yeS5oIgogCmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1
c2FnZWQvZGlyZWN0b3J5LmggdnBvcG1haWwtNS41LjAvdnVzYWdlZC9kaXJlY3RvcnkuaAot
LS0gdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2VkL2RpcmVjdG9yeS5oCTIwMTAtMTEtMDUg
MTg6Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL2Rp
cmVjdG9yeS5oCTIwMTUtMDktMTggMTI6MzY6MDcuNTc0MDkzNzAwICswMTAwCkBAIC0yNCw3
ICsyNCw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAj
aW5jbHVkZSAiY29uZi5oIgotI2luY2x1ZGUgInN0b3JhZ2UuaCIKKyNpbmNsdWRlICIuLi9z
dG9yYWdlLmgiCiAKIC8qCiAgICBBIHNpbmdsZSBkaXJlY3Rvcnkgc3RydWN0dXJlCmRpZmYg
LXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvZG9tYWluLmMgdnBvcG1haWwtNS41
LjAvdnVzYWdlZC9kb21haW4uYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2VkL2Rv
bWFpbi5jCTIwMTAtMTEtMDUgMTg6Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFp
bC01LjUuMC92dXNhZ2VkL2RvbWFpbi5jCTIwMTUtMDktMTggMTI6MzY6MDcuNTc1MDkzNzQy
ICswMTAwCkBAIC0yNSw3ICsyNSw3IEBACiAgICAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjZW5k
aWYKICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jaW5jbHVkZSA8c3RvcmFnZS5oPgorI2luY2x1
ZGUgIi4uL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImRvbWFp
bi5oIgogCmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvZG9tYWluLmgg
dnBvcG1haWwtNS41LjAvdnVzYWdlZC9kb21haW4uaAotLS0gdnBvcG1haWwtNS41LjAub3Jp
Zy92dXNhZ2VkL2RvbWFpbi5oCTIwMTAtMTEtMDUgMTg6Mzc6MjQuMDAwMDAwMDAwICswMDAw
CisrKyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL2RvbWFpbi5oCTIwMTUtMDktMTggMTI6MzY6
MDcuNTc1MDkzNzQyICswMTAwCkBAIC0yMiw3ICsyMiw3IEBACiAgICAjZGVmaW5lIF9fRE9N
QUlOX0hfCiAKICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jaW5jbHVkZSAic3RvcmFnZS5oIgor
I2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKIAogLyoKICAgIE1heGltdW0gbGVuZ3RoIG9mIGEg
ZG9tYWluIG5hbWUKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC9xdW90
YS5oIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvcXVvdGEuaAotLS0gdnBvcG1haWwtNS41LjAu
b3JpZy92dXNhZ2VkL3F1b3RhLmgJMjAxMC0xMS0wNSAxODozNzoyNC4wMDAwMDAwMDAgKzAw
MDAKKysrIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvcXVvdGEuaAkyMDE1LTA5LTE4IDEyOjM2
OjA3LjU3NjA5Mzc4NCArMDEwMApAQCAtMjEsNyArMjEsNyBAQAogI2lmbmRlZiBfX1FVT1RB
X0hfCiAgICAjZGVmaW5lIF9fUVVPVEFfSF8KIAotI2luY2x1ZGUgInN0b3JhZ2UuaCIKKyNp
bmNsdWRlICIuLi9zdG9yYWdlLmgiCiAKIC8qCiAgICBRdW90YSBzaXplIGluIGJ5dGVzCmRp
ZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNlci5jIHZwb3BtYWlsLTUu
NS4wL3Z1c2FnZWQvdXNlci5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNl
ci5jCTIwMTAtMTEtMDUgMTg6Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01
LjUuMC92dXNhZ2VkL3VzZXIuYwkyMDE1LTA5LTE4IDEyOjM2OjA3LjU3NjA5Mzc4NCArMDEw
MApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPHZhdXRoLmg+CiAjaW5jbHVkZSA8dmF1
dGhtb2R1bGUuaD4KICNpbmNsdWRlIDxjb25mLmg+Ci0jaW5jbHVkZSA8c3RvcmFnZS5oPgor
I2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJwYXRoLmgiCiAjaW5jbHVkZSAi
Y2FjaGUuaCIKICNpbmNsdWRlICJ1c2Vyc3RvcmUuaCIKZGlmZiAtdVByIHZwb3BtYWlsLTUu
NS4wLm9yaWcvdnVzYWdlZC91c2VyLmggdnBvcG1haWwtNS41LjAvdnVzYWdlZC91c2VyLmgK
LS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC91c2VyLmgJMjAxMC0xMS0wNSAxODoz
NzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvdXNlci5o
CTIwMTUtMDktMTggMTI6MzY6MDcuNTc3MDkzODIzICswMTAwCkBAIC0yNCw3ICsyNCw3IEBA
CiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNpbmNsdWRlICIu
Li9jb25mLmgiCi0jaW5jbHVkZSAic3RvcmFnZS5oIgorI2luY2x1ZGUgIi4uL3N0b3JhZ2Uu
aCIKICNpbmNsdWRlICJkb21haW4uaCIKICNpbmNsdWRlICJ1c2Vyc3RvcmUuaCIKICNpbmNs
dWRlICIuLi92YXV0aC5oIgpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2Vk
L3VzZXJzdG9yZS5jIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvdXNlcnN0b3JlLmMKLS0tIHZw
b3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC91c2Vyc3RvcmUuYwkyMDEwLTExLTA1IDE4OjM3
OjI0LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC91c2Vyc3Rv
cmUuYwkyMDE1LTA5LTE4IDEyOjM2OjA3LjU3NzA5MzgyMyArMDEwMApAQCAtMjksNyArMjks
NyBAQAogI2lmZGVmIEFTU0VSVF9ERUJVRwogICAgI2luY2x1ZGUgPGFzc2VydC5oPgogI2Vu
ZGlmCi0jaW5jbHVkZSA8c3RvcmFnZS5oPgorI2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKICNp
bmNsdWRlIDxjb25mLmg+CiAjaW5jbHVkZSAicGF0aC5oIgogI2luY2x1ZGUgImRpcmVjdG9y
eS5oIgpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2VkL3VzZXJzdG9yZS5o
IHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvdXNlcnN0b3JlLmgKLS0tIHZwb3BtYWlsLTUuNS4w
Lm9yaWcvdnVzYWdlZC91c2Vyc3RvcmUuaAkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAw
MCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC91c2Vyc3RvcmUuaAkyMDE1LTA5
LTE4IDEyOjM2OjA3LjU3ODA5Mzg2MiArMDEwMApAQCAtMjEsNyArMjEsNyBAQAogI2lmbmRl
ZiBfX1VTRVJTVE9SRV9IXwogICAgI2RlZmluZSBfX1VTRVJTVE9SRV9IXwogCi0jaW5jbHVk
ZSAic3RvcmFnZS5oIgorI2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJkaXJl
Y3RvcnkuaCIKICNpbmNsdWRlICJjb25mLmgiCiAjaW5jbHVkZSA8cHRocmVhZC5oPgpkaWZm
IC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2VkL3ZkYi5jIHZwb3BtYWlsLTUuNS4w
L3Z1c2FnZWQvdmRiLmMKLS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC92ZGIuYwky
MDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAv
dnVzYWdlZC92ZGIuYwkyMDE1LTA5LTE4IDEyOjM2OjA3LjU3ODA5Mzg2MiArMDEwMApAQCAt
MTMsNyArMTMsNyBAQAogI2lmZGVmIEFTU0VSVF9ERUJVRwogICAgI2luY2x1ZGUgPGFzc2Vy
dC5oPgogI2VuZGlmCi0jaW5jbHVkZSA8c3RvcmFnZS5oPgorI2luY2x1ZGUgIi4uL3N0b3Jh
Z2UuaCIKICNpbmNsdWRlIDxjb25mLmg+CiAjaW5jbHVkZSA8dnBvcG1haWwuaD4KICNpbmNs
dWRlICJwYXRoLmgiCmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdmRi
LmggdnBvcG1haWwtNS41LjAvdnVzYWdlZC92ZGIuaAotLS0gdnBvcG1haWwtNS41LjAub3Jp
Zy92dXNhZ2VkL3ZkYi5oCTIwMTAtMTEtMDUgMTg6Mzc6MjQuMDAwMDAwMDAwICswMDAwCisr
KyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3ZkYi5oCTIwMTUtMDktMTggMTI6MzY6MDcuNTc5
MDkzOTAwICswMTAwCkBAIC01LDcgKzUsNyBAQAogI2lmbmRlZiBfX1ZEQl9IXwogICAgI2Rl
ZmluZSBfX1ZEQl9IXwogCi0jaW5jbHVkZSA8c3RvcmFnZS5oPgorI2luY2x1ZGUgIi4uL3N0
b3JhZ2UuaCIKICNpbmNsdWRlIDxjb25mLmg+CiAKIC8qCg==
--------------080707010203050507050500--