Re: [SPAM] valias remove alias

Drew Wells <[email protected]> Thu, 17 Sep 2015 15:57:24 +0100
Newsgroups gmane.mail.vpopmail
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------080504080909080802040003
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

On 09/17/2015 03:37 PM, Matt Brookings wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 09/17/2015 06:23 AM, Drew Wells wrote:
>> I have created a patch for vpopmail-5.5.0 which incoporates all the changes from 5.4.29 to
>> 5.4.33, does anyone want this patch or has work in vpopmail-5.5.0 stalled ?
> Drew, I'd be happy to take a look at this.  What changes did you add?
>
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].


!DSPAM:55fad4d841551123915585!

--------------080504080909080802040003
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
bC5jCTIwMTUtMDktMTcgMTE6NDE6MDIuNzI0MDk1OTIzICswMTAwCkBAIC0xNzg1LDEwICsx
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
ZW5kcy9teXNxbC92bXlzcWwuaC5pbgkyMDE1LTA5LTE3IDExOjQxOjAyLjcyNTA5NTg2MSAr
MDEwMApAQCAtMjY4LDEwICsyNjgsMTAgQEAKICAgICAgIG1heGZvcndhcmRzICAgICAgICAg
ICAgICBJTlQoMTApIE5PVCBOVUxMIERFRkFVTFQgLTEsIFwKICAgICAgIG1heGF1dG9yZXNw
b25kZXJzICAgICAgICBJTlQoMTApIE5PVCBOVUxMIERFRkFVTFQgLTEsIFwKICAgICAgIG1h
eG1haWxpbmdsaXN0cyAgICAgICAgICBJTlQoMTApIE5PVCBOVUxMIERFRkFVTFQgLTEsIFwK
LSAgICAgIGRpc2txdW90YSAgICAgICAgICAgICAgICBJTlQoMTIpIE5PVCBOVUxMIERFRkFV
TFQgMCwgXAotICAgICAgbWF4bXNnY291bnQgICAgICAgICAgICAgIElOVCgxMikgTk9UIE5V
TEwgREVGQVVMVCAwLCBcCi0gICAgICBkZWZhdWx0cXVvdGEgICAgICAgICAgICAgSU5UKDEy
KSBOT1QgTlVMTCBERUZBVUxUIDAsIFwKLSAgICAgIGRlZmF1bHRtYXhtc2djb3VudCAgICAg
ICBJTlQoMTIpIE5PVCBOVUxMIERFRkFVTFQgMCwgXAorICAgICAgZGlza3F1b3RhICAgICAg
ICAgICAgICAgIEJJR0lOVCBVTlNJR05FRCBOT1QgTlVMTCBERUZBVUxUIDAsIFwKKyAgICAg
IG1heG1zZ2NvdW50ICAgICAgICAgICAgICBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVG
QVVMVCAwLCBcCisgICAgICBkZWZhdWx0cXVvdGEgICAgICAgICAgICAgQklHSU5UIFVOU0lH
TkVEIE5PVCBOVUxMIERFRkFVTFQgMCwgXAorICAgICAgZGVmYXVsdG1heG1zZ2NvdW50ICAg
ICAgIEJJR0lOVCBVTlNJR05FRCBOT1QgTlVMTCBERUZBVUxUIDAsIFwKICAgICAgIGRpc2Fi
bGVfcG9wICAgICAgICAgICAgICBUSU5ZSU5UKDEpIE5PVCBOVUxMIERFRkFVTFQgMCwgXAog
ICAgICAgZGlzYWJsZV9pbWFwICAgICAgICAgICAgIFRJTllJTlQoMSkgTk9UIE5VTEwgREVG
QVVMVCAwLCBcCiAgICAgICBkaXNhYmxlX2RpYWx1cCAgICAgICAgICAgVElOWUlOVCgxKSBO
T1QgTlVMTCBERUZBVUxUIDAsIFwKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvYmFj
a2ZpbGwuYyB2cG9wbWFpbC01LjUuMC9iYWNrZmlsbC5jCi0tLSB2cG9wbWFpbC01LjUuMC5v
cmlnL2JhY2tmaWxsLmMJMjAxMC0xMS0wNSAxODozNzoyMi4wMDAwMDAwMDAgKzAwMDAKKysr
IHZwb3BtYWlsLTUuNS4wL2JhY2tmaWxsLmMJMjAxNS0wOS0xNyAxMTo0MTowMi43MjUwOTU4
NjEgKzAxMDAKQEAgLTEzLDcgKzEzLDkgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZj
bnRsLmg+CiAjaW5jbHVkZSAidnBvcG1haWwuaCIKKyNpbmNsdWRlICJmaWxlX2xvY2suaCIK
ICNpbmNsdWRlICJ2YXV0aC5oIgogI2luY2x1ZGUgInZhdXRobW9kdWxlLmgiCiAKQEAgLTM3
LDYgKzM5LDcgQEAKIAlpbnQgICAgICAgICAgICAgZmQ7CiAjaWZkZWYgRklMRV9MT0NLSU5H
CiAJaW50ICAgICAgICAgICAgIGxvY2tmZDsKKwljaGFyCQlsb2NrZmlsZVtNQVhfQlVGRl07
CiAjZW5kaWYKIAogCWlmIChzdGF0KGZpbGVuYW1lLCAmc3RhdGJ1ZikpCmRpZmYgLXVQciB2
cG9wbWFpbC01LjUuMC5vcmlnL2NsaWVudC5jIHZwb3BtYWlsLTUuNS4wL2NsaWVudC5jCi0t
LSB2cG9wbWFpbC01LjUuMC5vcmlnL2NsaWVudC5jCTIwMTAtMTEtMDUgMTg6Mzc6MjIuMDAw
MDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9jbGllbnQuYwkyMDE1LTA5LTE3IDEx
OjQxOjAyLjcyNjA5NTgwMiArMDEwMApAQCAtNzgsNjYgKzc4LDY0IEBACiAKICAgIGNvbmZp
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
dnBvcG1haWwtNS41LjAvY29uZi5jCTIwMTUtMDktMTcgMTE6NDE6MDIuNzI2MDk1ODAyICsw
MTAwCkBAIC03ODcsMTMgKzc4NywxMiBAQAogY2hhciAqY29uZmlnX2ZldGNoX2J5X251bShj
b25maWdfdCAqYywgY2hhciAqbGFiZWwsIGludCBudW0pCiB7ICAKICAgaW50IGN1ciA9IDA7
CisgIGNvbmZpZ19sYWJlbF90ICpsID0gTlVMTDsKKyAgY29uZmlnX2F0b21fdCAqYSA9IE5V
TEw7CiAKICAgaWYgKGMgPT0gTlVMTCkKIAkgcmV0dXJuIE5VTEw7CiAKLSAgY29uZmlnX2xh
YmVsX3QgKmwgPSBOVUxMOwotICBjb25maWdfYXRvbV90ICphID0gTlVMTDsKLQogICBpZiAo
Yy0+bGFiZWxzID09IE5VTEwpCiAgICAgIHJldHVybiBOVUxMOwogCmRpZmYgLXVQciB2cG9w
bWFpbC01LjUuMC5vcmlnL2RvYy9VUEdSQURFIHZwb3BtYWlsLTUuNS4wL2RvYy9VUEdSQURF
Ci0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL2RvYy9VUEdSQURFCTIwMTAtMTEtMDUgMTg6Mzc6
MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9kb2MvVVBHUkFERQkyMDE1
LTA5LTE3IDExOjQxOjAyLjcyNzA5NTc0NyArMDEwMApAQCAtNCw2ICs0LDE1IEBACiBpbnRv
IHRoZSB2cG9wbWFpbCBsaWJyYXJpZXMuICBUaGVzZSBpbmNsdWRlIFFtYWlsQWRtaW4sIHFt
YWlsLXNtdHBkIChpZiAKIHlvdSBoYXZlIHRoZSBjaGt1c2VyIHBhdGNoIGFwcGxpZWQpLCBD
b3VyaWVyLUlNQVAgZXRjLgogCisrVXBncmFkaW5nIHRvIHZwb3BtYWlsLTUuNC4zMworKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKytJZiB5b3UgYXJlIHN0b3JpbmcgbGltaXRz
IGluIE15U1FMLCB0aGUgZm9sbG93aW5nIHNjaGVtYSBjaGFuZ2VzIG11c3QgYmUgbWFkZToK
KysKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBBREQgYGRpc2FibGVfbWFpbGRyb3BgIFRJTllJ
TlQoMSkgREVGQVVMVCAnMCcgTk9UIE5VTEwgQUZURVIgYGRpc2FibGVfc3BhbWFzc2Fzc2lu
YDsKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJRlkgYGRpc2txdW90YWAgQklHSU5UIFVO
U0lHTkVEIE5PVCBOVUxMIERFRkFVTFQgMDsKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJ
RlkgYG1heG1zZ2NvdW50YCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOwor
K0FMVEVSIFRBQkxFIGBsaW1pdHNgIE1PRElGWSBgZGVmYXVsdHF1b3RhYCBCSUdJTlQgVU5T
SUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOworK0FMVEVSIFRBQkxFIGBsaW1pdHNgIE1PRElG
WSBgZGVmYXVsdG1heG1zZ2NvdW50YCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVM
VCAwOwogCiBVcGdyYWRpbmcgdG8gdnBvcG1haWwtNS40LjE4CiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL21haWxkaXJxdW90
YS5jIHZwb3BtYWlsLTUuNS4wL21haWxkaXJxdW90YS5jCi0tLSB2cG9wbWFpbC01LjUuMC5v
cmlnL21haWxkaXJxdW90YS5jCTIwMTAtMTEtMDUgMTg6Mzc6MjIuMDAwMDAwMDAwICswMDAw
CisrKyB2cG9wbWFpbC01LjUuMC9tYWlsZGlycXVvdGEuYwkyMDE1LTA5LTE3IDExOjQxOjAy
LjcyODA5NTY5NiArMDEwMApAQCAtNDIsMTYgKzQyLDE2IEBACiAKIC8qIHByaXZhdGUgZnVu
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
LTA5LTE3IDExOjQxOjAyLjcyODA5NTY5NiArMDEwMApAQCAtOCw2ICs4LDggQEAKICAgIC1C
aWxsIFNodXBwCiAgKi8KIAorI2luY2x1ZGUgInN0b3JhZ2UuaCIKKwogI2RlZmluZSBRVU9U
QV9XQVJOX1BFUkNFTlQgOTAKIAogLyogSSd2ZSByZW1vdmVkIHByZXR0eSBtdWNoIHRoZSB3
aG9sZSBmaWxlIGV4ZWNlcHQgZm9yCkBAIC0xNSw4ICsxNyw4IEBACiAgICBJInZlIG1hZGUg
dGhlIGNvdXJpZXIgZnVuY3Rpb25zIHN0YXRpYy4KICAgIC0gQnJpYW4gS29sYWNpCiAqLwot
aW50IHJlYWRkb21haW5xdW90YShjb25zdCBjaGFyICpkaXIsIGxvbmcgKnNpemVwLCBpbnQg
KmNudHApOwotaW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGlyLCBsb25nICpzaXpl
cCwgaW50ICpjbnRwKTsKK2ludCByZWFkZG9tYWlucXVvdGEoY29uc3QgY2hhciAqZGlyLCBz
dG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApOworaW50IHJlYWR1c2VycXVvdGEo
Y29uc3QgY2hhciogZGlyLCBzdG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApOwog
aW50IGRvbWFpbl9vdmVyX21haWxkaXJxdW90YShjb25zdCBjaGFyICp1c2VyZGlyKTsKIGlu
dCB1c2VyX292ZXJfbWFpbGRpcnF1b3RhKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAq
cXVvdGEpOwogaW50IHZtYWlsZGlyX3JlYWRxdW90YShjb25zdCBjaGFyICpkaXIsCWNvbnN0
IGNoYXIgKnF1b3RhKTsKQEAgLTI0LDUgKzI2LDUgQEAKIGludCBtYWlsZGlyX2FkZHF1b3Rh
KGNvbnN0IGNoYXIgKiwJLyogUG9pbnRlciB0byB0aGUgbWFpbGRpciAqLwogCWludCwJLyog
TXVzdCBiZSB0aGUgaW50IHBvaW50ZWQgdG8gYnkgMm5kIGFyZyB0byBjaGVja3F1b3RhICov
CiAJY29uc3QgY2hhciAqLAkvKiBUaGUgcXVvdGEgKi8KLQlsb25nLAkvKiArLy0gYnl0ZXMg
Ki8KLQlpbnQpOwkvKiArLy0gZmlsZXMgKi8KKwlzdG9yYWdlX3QsCS8qICsvLSBieXRlcyAq
LworCXN0b3JhZ2VfdCk7CS8qICsvLSBmaWxlcyAqLwpkaWZmIC11UHIgdnBvcG1haWwtNS41
LjAub3JpZy92Y2hrcHcuYyB2cG9wbWFpbC01LjUuMC92Y2hrcHcuYwotLS0gdnBvcG1haWwt
NS41LjAub3JpZy92Y2hrcHcuYwkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAwMCArMDAw
MAorKysgdnBvcG1haWwtNS41LjAvdmNoa3B3LmMJMjAxNS0wOS0xNyAxMTo0MTowMi43Mjkw
OTU2NTEgKzAxMDAKQEAgLTczMywyNiArNzMzLDI2IEBACiAKICAgaWYgKCAodmVycm9yID09
IFZMT0dfRVJST1JfUEFTU1dEKSAmJiAoIEVOQUJMRV9MT0dHSU5HPT0xIHx8IEVOQUJMRV9M
T0dHSU5HPT0yIHx8IEVOQUJMRV9MT0dHSU5HPT0zIHx8IEVOQUJMRV9MT0dHSU5HPT00ICkg
KSB7CiAgICAgICBpZiAoIChsb2dzcWwodmVycm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRo
ZVBhc3MsIFRoZU5hbWUsIElwQWRkciwgTG9nTGluZSkgKSAhPSAwICkgewotICAgICAgICAg
IHN5c2xvZyhMT0dfTk9USUNFLCJ2Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7Cisg
ICAgICAgICAgc3lzbG9nKExPR19OT1RJQ0UsIiVzIiwidmNoa3B3OiBjYW4ndCB3cml0ZSBT
UUwgbG9ncyIpOwogICAgICAgfQogICAgICAgaWYgKCAobG9nc3FsKHZlcnJvciwgVGhlVXNl
ciwgVGhlRG9tYWluLCBUaGVQYXNzLCBUaGVOYW1lLCBJcEFkZHIsIExvZ0xpbmUpICkgIT0g
MCApIHsKLSAgICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBjYW4ndCB3cml0
ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIlcyIsInZjaGtw
dzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNlIGlmICggdmVy
cm9yID09IFZMT0dfRVJST1JfSU5URVJOQUwgKSB7CiAgICAgICBpZiAoIChsb2dzcWwodmVy
cm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRkciwgTG9n
TGluZSkgKSAhPSAwICkgewotICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBj
YW4ndCB3cml0ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIl
cyIsInZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNl
IGlmICggdmVycm9yID09IFZMT0dfRVJST1JfTE9HT04gKSB7CiAgICAgICBpZiAoIChsb2dz
cWwodmVycm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRk
ciwgTG9nTGluZSkgKSAhPSAwICkgewotICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNo
a3B3OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9U
SUNFLCIlcyIsInZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAg
fSBlbHNlIGlmICggdmVycm9yID09IFZMT0dfRVJST1JfQUNDRVNTICkgewogICAgICAgaWYg
KCAobG9nc3FsKHZlcnJvciwgVGhlVXNlciwgVGhlRG9tYWluLCBUaGVQYXNzLCBUaGVOYW1l
LCBJcEFkZHIsIExvZ0xpbmUpICkgIT0gMCApIHsKLSAgICAgICAgc3lzbG9nKExPR19OT1RJ
Q0UsInZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKKyAgICAgICAgICBzeXNsb2co
TE9HX05PVElDRSwiJXMiLCJ2Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CiAgICAg
ICB9CiAgIH0gZWxzZSBpZiAoIHZlcnJvciA9PSBWTE9HX0FVVEggJiYgKCBFTkFCTEVfTE9H
R0lORyA9PSAxIHx8IEVOQUJMRV9MT0dHSU5HID09IDQgKSApIHsKICAgICAgIGlmICggKGxv
Z3NxbCh2ZXJyb3IsIFRoZVVzZXIsIFRoZURvbWFpbiwgVGhlUGFzcywgVGhlTmFtZSwgSXBB
ZGRyLCBMb2dMaW5lKSApICE9IDAgKSB7Ci0gICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCJ2
Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CisgICAgICAgICAgc3lzbG9nKExPR19O
T1RJQ0UsIiVzIiwidmNoa3B3OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOwogICAgICAgfQog
ICB9CiAjZW5kaWYKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmRlbGRvbWFpbi5j
IHZwb3BtYWlsLTUuNS4wL3ZkZWxkb21haW4uYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92
ZGVsZG9tYWluLmMJMjAxMC0xMS0wNSAxODozNzoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHZw
b3BtYWlsLTUuNS4wL3ZkZWxkb21haW4uYwkyMDE1LTA5LTE3IDExOjQxOjAyLjcyOTA5NTY1
MSArMDEwMApAQCAtNDMsOSArNDMsOSBAQAogIGludCBlcnI9MDsKIAogIGRvbWFpbl9lbnRy
eSAqZW50cnk7Ci0gY2hhciAqYWxpYXNlc1tNQVhfRE9NX0FMSUFTXTsKKyBzdHJpbmdfbGlz
dCBhbGlhc2VzOwogIGNoYXIgcGFyZW50W01BWF9CVUZGXTsKLSBpbnQgIGksIGFsaWFzY291
bnQ9MCwgZG9pdD0xOworIGludCAgaSwgZG9pdD0xOwogCiAgICBlcnIgPSB2YXV0aF9sb2Fk
X21vZHVsZShOVUxMKTsKICAgIGlmICghZXJyKQpAQCAtNjksOSArNjksMTEgQEAKIAkJfQog
CX0KIAorCXN0cmluZ19saXN0X2luaXQoJmFsaWFzZXMsIDEwKTsKKwogCXdoaWxlKCBlbnRy
eSApIHsKIAkJaWYgKHN0cmNtcChlbnRyeS0+ZG9tYWluLCBlbnRyeS0+cmVhbGRvbWFpbikg
IT0gMCkgewotCQkJYWxpYXNlc1thbGlhc2NvdW50KytdID0gc3RyZHVwKGVudHJ5LT5kb21h
aW4pOworCQkJc3RyaW5nX2xpc3RfYWRkKCZhbGlhc2VzLCBlbnRyeS0+ZG9tYWluKTsKIAkJ
fSBlbHNlIHsKIAkJCXNucHJpbnRmKHBhcmVudCxzaXplb2YocGFyZW50KSwiJXMiLGVudHJ5
LT5kb21haW4pOwogCQl9CkBAIC03OSw3ICs4MSw3IEBACiAJCWVudHJ5ID0gZ2V0X2RvbWFp
bl9lbnRyaWVzKE5VTEwpOwogCX0KIAotCWlmKCBhbGlhc2NvdW50ID4gMCAmJiAwID09IHN0
cm5jbXAoRG9tYWluLHBhcmVudCxNQVhfQlVGRikpIHsgIAorCWlmKCBhbGlhc2VzLmNvdW50
ID4gMCAmJiAwID09IHN0cm5jbXAoRG9tYWluLHBhcmVudCxNQVhfQlVGRikpIHsgIAogCQkv
LyAgSGF2ZSBhbGlhc2VzCiAJCWlmKCBmb3JjZSApIHsKIAkJCXByaW50ZigiV2FybmluZzog
QWxpYXMgZG9tYWlucyBkZWxldGVkOlxuIik7CkBAIC04OCwxMiArOTAsMTMgQEAKIAkJCWRv
aXQ9MDsKIAkJfQogCi0JCWZvcihpPTA7aTxhbGlhc2NvdW50O2krKykgewotCQkJcHJpbnRm
ICgiICAgJXNcbiIsIGFsaWFzZXNbaV0pOwotCQkJZnJlZSggYWxpYXNlc1tpXSApOworCQlm
b3IoaT0wO2k8YWxpYXNlcy5jb3VudDtpKyspIHsKKwkJCXByaW50ZiAoIiAgICVzXG4iLCBh
bGlhc2VzLnZhbHVlc1tpXSk7CiAJCX0gCiAJfQogCisJc3RyaW5nX2xpc3RfZnJlZSgmYWxp
YXNlcyk7CisKICAgICAgICAgaWYoIGRvaXQgKSB7CiAJaWYgKCAoZXJyPXZkZWxkb21haW4o
RG9tYWluKSkgIT0gVkFfU1VDQ0VTUykgewogCQlwcmludGYoIkVycm9yOiAlc1xuIiwgdmVy
cm9yKGVycikpOwpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92ZG9taW5mby5jIHZw
b3BtYWlsLTUuNS4wL3Zkb21pbmZvLmMKLS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmRvbWlu
Zm8uYwkyMDEwLTExLTA1IDE4OjM3OjIzLjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwt
NS41LjAvdmRvbWluZm8uYwkyMDE1LTA5LTE3IDExOjU0OjQyLjE0ODA5NjUwMSArMDEwMApA
QCAtMjQ4LDggKzI0OCw4IEBACiB2b2lkIGRpc3BsYXlfb25lX2RvbWFpbiggY2hhciAqIERv
bWFpbiApCiB7CiAgZG9tYWluX2VudHJ5ICplbnRyeTsKLSBjaGFyICphbGlhc2VzW01BWF9E
T01fQUxJQVNdOwotIGludCAgaSwgYWxpYXNjb3VudD0wOworIHN0cmluZ19saXN0IGFsaWFz
ZXM7CisgaW50ICBpOwogCiAgICAgZW50cnkgPSBnZXRfZG9tYWluX2VudHJpZXMoIERvbWFp
biApOwogICAgIGlmIChlbnRyeT09TlVMTCkgewpAQCAtMjYyLDExICsyNjIsMTMgQEAKICAg
ICAgIH0KICAgICB9CiAKKyAgICBzdHJpbmdfbGlzdF9pbml0KCZhbGlhc2VzLCAxMCk7CisK
ICAgICB3aGlsZSggZW50cnkgKSB7CiAJaWYgKHN0cmNtcChlbnRyeS0+ZG9tYWluLCBlbnRy
eS0+cmVhbGRvbWFpbikgIT0gMCkgewogLy8gCQlwcmludGYgKCJOb3RlOiAgICVzIGlzIGFu
IGFsaWFzIGZvciAlc1xuIiwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5k
b21haW4sIGVudHJ5LT5yZWFsZG9tYWluKTsKLSAgICAgICAgICAgICAgICBhbGlhc2VzW2Fs
aWFzY291bnQrK10gPSBzdHJkdXAoZW50cnktPmRvbWFpbik7CisgICAgICAgICAgICAgICAg
c3RyaW5nX2xpc3RfYWRkKCZhbGlhc2VzLCBlbnRyeS0+ZG9tYWluKTsKIAogICAgICAgICB9
IGVsc2UgewogCQlkaXNwbGF5X2RvbWFpbihlbnRyeS0+ZG9tYWluLCBlbnRyeS0+cGF0aCwg
ZW50cnktPnVpZCwgCkBAIC0yNzYsOSArMjc4LDkgQEAKICAgICAgICAgZW50cnkgPSBnZXRf
ZG9tYWluX2VudHJpZXMoTlVMTCk7CiAgICAgfQogCi0gICAgZm9yKGk9MDtpPGFsaWFzY291
bnQ7aSsrKSB7Ci0gCXByaW50ZiAoImFsaWFzOiAgJXNcbiIsIGFsaWFzZXNbaV0pOwotICAg
ICAgICBmcmVlKCBhbGlhc2VzW2ldICk7Ci0gICAgfSAKKyAgICBmb3IoaT0wO2k8YWxpYXNl
cy5jb3VudDtpKyspIHsKKyAJcHJpbnRmICgiYWxpYXM6ICAlc1xuIiwgYWxpYXNlcy52YWx1
ZXNbaV0pOworICAgIH0KKyAgICBzdHJpbmdfbGlzdF9mcmVlKCZhbGlhc2VzKTsgCiB9CiAK
ZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmxpbWl0cy5jIHZwb3BtYWlsLTUuNS4w
L3ZsaW1pdHMuYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92bGltaXRzLmMJMjAxMC0xMS0w
NSAxODozNzoyMy4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3ZsaW1pdHMu
YwkyMDE1LTA5LTE3IDExOjQxOjAyLjczMDA5NTYwNiArMDEwMApAQCAtMTg3LDIyICsxODcs
MjIgQEAKIAogCQkJZWxzZSBpZiAoIXN0cmNtcChzMSwgInF1b3RhIikpIHsKICAgICAgICAg
ICAgICAgICBpZiAoczIpCi0gICAgICAgICAgICAgICAgbGltaXRzLT5kaXNrcXVvdGEgPSBh
dG9pKHMyKTsKKyAgICAgICAgICAgICAgICBsaW1pdHMtPmRpc2txdW90YSA9IHN0cnRvbGwo
czIsIE5VTEwsIDEwKTsKICAgICAgICAgICAgIH0KIAogCQkJZWxzZSBpZiAoIXN0cmNtcChz
MSwgIm1heG1zZ2NvdW50IikpIHsKICAgICAgICAgICAgICAgICBpZiAoczIpCi0gICAgICAg
ICAgICAgICAgbGltaXRzLT5tYXhtc2djb3VudCA9IGF0b2koczIpOworICAgICAgICAgICAg
ICAgIGxpbWl0cy0+bWF4bXNnY291bnQgPSBzdHJ0b2xsKHMyLCBOVUxMLCAxMCk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghc3RyY21wKHMxLCAiZGVmYXVsdF9xdW90
YSIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHMyKQotICAgICAgICAgICAgICAgIGxpbWl0
cy0+ZGVmYXVsdHF1b3RhID0gYXRvaShzMik7CisgICAgICAgICAgICAgICAgbGltaXRzLT5k
ZWZhdWx0cXVvdGEgPSBzdHJ0b2xsKHMyLCBOVUxMLCAxMCk7CiAgICAgICAgICAgICB9CiAK
IAkJCWVsc2UgaWYgKCFzdHJjbXAoczEsICJkZWZhdWx0X21heG1zZ2NvdW50IikpIHsKICAg
ICAgICAgICAgICAgICBpZiAoczIpCi0gICAgICAgICAgICAgICAgbGltaXRzLT5kZWZhdWx0
bWF4bXNnY291bnQgPSBhdG9pKHMyKTsKKyAgICAgICAgICAgICAgICBsaW1pdHMtPmRlZmF1
bHRtYXhtc2djb3VudCA9IHN0cnRvbGwoczIsIE5VTEwsIDEwKTsKICAgICAgICAgICAgIH0K
IAogCQkJZWxzZSBpZiAoIXN0cmNtcChzMSwgImRpc2FibGVfcG9wIikpIHsKQEAgLTQ4MCwx
MCArNDgwLDEwIEBACiAgICAgICAgIGZwcmludGYoZnMsICJtYXhmb3J3YXJkczogJWRcbiIs
IGxpbWl0cy0+bWF4Zm9yd2FyZHMpOwogICAgICAgICBmcHJpbnRmKGZzLCAibWF4YXV0b3Jl
c3BvbmRlcnM6ICVkXG4iLCBsaW1pdHMtPm1heGF1dG9yZXNwb25kZXJzKTsKICAgICAgICAg
ZnByaW50ZihmcywgIm1heG1haWxpbmdsaXN0czogJWRcbiIsIGxpbWl0cy0+bWF4bWFpbGlu
Z2xpc3RzKTsKLSAgICAgICAgZnByaW50ZihmcywgInF1b3RhOiAlZFxuIiwgbGltaXRzLT5k
aXNrcXVvdGEpOwotICAgICAgICBmcHJpbnRmKGZzLCAibWF4bXNnY291bnQ6ICVkXG4iLCBs
aW1pdHMtPm1heG1zZ2NvdW50KTsKLSAgICAgICAgZnByaW50ZihmcywgImRlZmF1bHRfcXVv
dGE6ICVkXG4iLCBsaW1pdHMtPmRlZmF1bHRxdW90YSk7Ci0gICAgICAgIGZwcmludGYoZnMs
ICJkZWZhdWx0X21heG1zZ2NvdW50OiAlZFxuIiwgbGltaXRzLT5kZWZhdWx0bWF4bXNnY291
bnQpOworICAgICAgICBmcHJpbnRmKGZzLCAicXVvdGE6ICVsbHVcbiIsIGxpbWl0cy0+ZGlz
a3F1b3RhKTsKKyAgICAgICAgZnByaW50ZihmcywgIm1heG1zZ2NvdW50OiAlbGx1XG4iLCBs
aW1pdHMtPm1heG1zZ2NvdW50KTsKKyAgICAgICAgZnByaW50ZihmcywgImRlZmF1bHRfcXVv
dGE6ICVsbHVcbiIsIGxpbWl0cy0+ZGVmYXVsdHF1b3RhKTsKKyAgICAgICAgZnByaW50Zihm
cywgImRlZmF1bHRfbWF4bXNnY291bnQ6ICVsbHVcbiIsIGxpbWl0cy0+ZGVmYXVsdG1heG1z
Z2NvdW50KTsKICAgICAgICAgaWYgKGxpbWl0cy0+ZGlzYWJsZV9wb3ApIGZwcmludGYoZnMs
ICJkaXNhYmxlX3BvcFxuIik7CiAgICAgICAgIGlmIChsaW1pdHMtPmRpc2FibGVfaW1hcCkg
ZnByaW50ZihmcywgImRpc2FibGVfaW1hcFxuIik7CiAgICAgICAgIGlmIChsaW1pdHMtPmRp
c2FibGVfZGlhbHVwKSBmcHJpbnRmKGZzLCAiZGlzYWJsZV9kaWFsdXBcbiIpOwpkaWZmIC11
UHIgdnBvcG1haWwtNS41LjAub3JpZy92bGltaXRzLmggdnBvcG1haWwtNS41LjAvdmxpbWl0
cy5oCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3ZsaW1pdHMuaAkyMDEwLTExLTA1IDE4OjM3
OjIyLjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdmxpbWl0cy5oCTIwMTUt
MDktMTcgMTE6NDE6MDIuNzMxMDk1NTY2ICswMTAwCkBAIC0yMCw2ICsyMCw4IEBACiAjZGVm
aW5lIFZMSU1JVF9ESVNBQkxFX0FMTCAoVkxJTUlUX0RJU0FCTEVfQ1JFQVRFfFZMSU1JVF9E
SVNBQkxFX01PRElGWXxWTElNSVRfRElTQUJMRV9ERUxFVEUpCiAjZGVmaW5lIFZMSU1JVF9E
SVNBQkxFX0JJVFMgMwogCisjaW5jbHVkZSAic3RvcmFnZS5oIgorCiBzdHJ1Y3QgdmxpbWl0
cyB7CiAgICAgICAvKiBtYXggc2VydmljZSBsaW1pdHMgKi8KICAgICAgIGludCAgICAgICBt
YXhwb3BhY2NvdW50czsKQEAgLTI5LDEwICszMSwxMCBAQAogICAgICAgaW50ICAgICAgIG1h
eG1haWxpbmdsaXN0czsKIAogICAgICAgLyogcXVvdGEgJiBtZXNzYWdlIGNvdW50IGxpbWl0
cyAqLwotICAgICAgaW50ICAgICAgIGRpc2txdW90YTsKLSAgICAgIGludCAgICAgICBtYXht
c2djb3VudDsKLSAgICAgIGludCAgICAgICBkZWZhdWx0cXVvdGE7Ci0gICAgICBpbnQgICAg
ICAgZGVmYXVsdG1heG1zZ2NvdW50OworICAgICAgc3RvcmFnZV90IGRpc2txdW90YTsKKyAg
ICAgIHN0b3JhZ2VfdCBtYXhtc2djb3VudDsKKyAgICAgIHN0b3JhZ2VfdCBkZWZhdWx0cXVv
dGE7CisgICAgICBzdG9yYWdlX3QgZGVmYXVsdG1heG1zZ2NvdW50OwogCiAgICAgICAvKiB0
aGUgZm9sbG93aW5nIGFyZSAwIChmYWxzZSkgb3IgMSAodHJ1ZSkgKi8KICAgICAgIHNob3J0
ICAgICBkaXNhYmxlX3BvcDsKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmxpc3Rs
aWIuYyB2cG9wbWFpbC01LjUuMC92bGlzdGxpYi5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmln
L3ZsaXN0bGliLmMJMjAxMC0xMS0wNSAxODozNzoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHZw
b3BtYWlsLTUuNS4wL3ZsaXN0bGliLmMJMjAxNS0wOS0xNyAxMTo0MTowMi43MzIwOTU1Mjgg
KzAxMDAKQEAgLTE5Myw4ICsxOTMsOCBAQAogCiAgICAgaWYoIERvbWFpbk9ubHkgKSB7ICAg
IC8vICAgSGF2ZSBkb21haW4KICAgICAgICAgaWYgKCBzdHJzdHIoIEFkZHJlc3MsICJAIikg
IT0gTlVMTCApIHJldHVybig0KTsKLSAgICAgICAgc25wcmludGYoIExJLT5OYW1lLCAgIE1B
WF9GSUxFX05BTUUsICIlcyIsICIiICk7Ci0gICAgICAgIHNucHJpbnRmKCBMSS0+RG9tYWlu
LCBNQVhfRklMRV9OQU1FLCAiJXMiLCBBZGRyZXNzICk7CisgICAgICAgIHNucHJpbnRmKCBM
SS0+TmFtZSwgICBzaXplb2YoTEktPk5hbWUpLCAiJXMiLCAiIiApOworICAgICAgICBzbnBy
aW50ZiggTEktPkRvbWFpbiwgc2l6ZW9mKExJLT5Eb21haW4pLCAiJXMiLCBBZGRyZXNzICk7
CiAgICAgfQogCiAgICAgZWxzZSB7ICAgICAgICAgICAgICAgIC8vICAgSGF2ZSBtYWlsIGxp
c3QKQEAgLTIwNiwxMyArMjA2LDEzIEBACiAKICAgICBpZigoIExJLT5lbnRyeSA9IGdldF9k
b21haW5fZW50cmllcyggTEktPkRvbWFpbiApKSA9PSBOVUxMICkgcmV0dXJuKDMpOwogCi0g
ICAgc25wcmludGYoIExJLT5Pd25lckVtYWlsLCAgIE1BWF9GSUxFX05BTUUsICJwb3N0bWFz
dGVyQCVzIiwgTEktPkRvbWFpbiApOyAKLSAgICBzbnByaW50ZiggTEktPlJlcGx5VG9fQWRk
ciwgTUFYX0ZJTEVfTkFNRSwgIiVzIiwgIiIgKTsKLSAgICBzbnByaW50ZiggTEktPlNRTEJh
c2UsICAgICAgTUFYX0ZJTEVfTkFNRSwgImV6bWxtIiApOwotICAgIHNucHJpbnRmKCBMSS0+
U1FMSG9zdCwgICAgICBNQVhfRklMRV9OQU1FLCAibG9jYWxob3N0IiApOwotICAgIHNucHJp
bnRmKCBMSS0+U1FMUGFzcywgICAgICBNQVhfRklMRV9OQU1FLCAiZGJwYXNzIiApOwotICAg
IHNucHJpbnRmKCBMSS0+U1FMVGFibGUsICAgICBNQVhfRklMRV9OQU1FLCAiZXptbG0iICk7
Ci0gICAgc25wcmludGYoIExJLT5TUUxVc2VyLCAgICAgIE1BWF9GSUxFX05BTUUsICJkYlVz
ZXIiICk7CisgICAgc25wcmludGYoIExJLT5Pd25lckVtYWlsLCAgIHNpemVvZihMSS0+T3du
ZXJFbWFpbCksICJwb3N0bWFzdGVyQCVzIiwgTEktPkRvbWFpbiApOyAKKyAgICBzbnByaW50
ZiggTEktPlJlcGx5VG9fQWRkciwgc2l6ZW9mKExJLT5SZXBseVRvX0FkZHIpLCAiJXMiLCAi
IiApOworICAgIHNucHJpbnRmKCBMSS0+U1FMQmFzZSwgICAgICBzaXplb2YoTEktPlNRTEJh
c2UpLCAiZXptbG0iICk7CisgICAgc25wcmludGYoIExJLT5TUUxIb3N0LCAgICAgIHNpemVv
ZihMSS0+U1FMSG9zdCksICJsb2NhbGhvc3QiICk7CisgICAgc25wcmludGYoIExJLT5TUUxQ
YXNzLCAgICAgIHNpemVvZihMSS0+U1FMUGFzcyksICJkYnBhc3MiICk7CisgICAgc25wcmlu
dGYoIExJLT5TUUxUYWJsZSwgICAgIHNpemVvZihMSS0+U1FMVGFibGUpLCAiZXptbG0iICk7
CisgICAgc25wcmludGYoIExJLT5TUUxVc2VyLCAgICAgIHNpemVvZihMSS0+U1FMVXNlciks
ICJkYlVzZXIiICk7CiAKIC8vICAgIHByaW50ZiggImJlZm9yZSBtYWtlIG5hbWVcbiIgKTsK
IApkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92bW9kZG9tbGltaXRzLmMgdnBvcG1h
aWwtNS41LjAvdm1vZGRvbWxpbWl0cy5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Ztb2Rk
b21saW1pdHMuYwkyMDEwLTExLTA1IDE4OjM3OjIyLjAwMDAwMDAwMCArMDAwMAorKysgdnBv
cG1haWwtNS41LjAvdm1vZGRvbWxpbWl0cy5jCTIwMTUtMDktMTcgMTE6NDE6MDIuNzMyMDk1
NTI4ICswMTAwCkBAIC0yMTIsMTAgKzIxMiwxMCBAQAogICAgICAgICAgICAgcHJpbnRmICgo
bGltaXRzLnBlcm1fZGVmYXVsdHF1b3RhICYgVkxJTUlUX0RJU0FCTEVfREVMRVRFID8gIkRF
TllfREVMRVRFICAiIDoiQUxMT1dfREVMRVRFICIpICk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHByaW50ZigiXG4iKTsKLSAgICAgICAgICAgIHByaW50ZigiRG9tYWluIFF1b3Rh
OiAlZCBNQlxuIiwgbGltaXRzLmRpc2txdW90YSk7Ci0gICAgICAgICAgICBwcmludGYoIkRl
ZmF1bHQgVXNlciBRdW90YTogJWQgYnl0ZXNcbiIsIGxpbWl0cy5kZWZhdWx0cXVvdGEpOwot
ICAgICAgICAgICAgcHJpbnRmKCJNYXggRG9tYWluIE1lc3NhZ2VzOiAlZFxuIiwgbGltaXRz
Lm1heG1zZ2NvdW50KTsKLSAgICAgICAgICAgIHByaW50ZigiRGVmYXVsdCBNYXggTWVzc2Fn
ZXMgcGVyIFVzZXI6ICVkXG4iLCBsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsKKyAgICAg
ICAgICAgIHByaW50ZigiRG9tYWluIFF1b3RhOiAlbGx1IE1CXG4iLCBsaW1pdHMuZGlza3F1
b3RhKTsKKyAgICAgICAgICAgIHByaW50ZigiRGVmYXVsdCBVc2VyIFF1b3RhOiAlbGx1IGJ5
dGVzXG4iLCBsaW1pdHMuZGVmYXVsdHF1b3RhKTsKKyAgICAgICAgICAgIHByaW50ZigiTWF4
IERvbWFpbiBNZXNzYWdlczogJWxsdVxuIiwgbGltaXRzLm1heG1zZ2NvdW50KTsKKyAgICAg
ICAgICAgIHByaW50ZigiRGVmYXVsdCBNYXggTWVzc2FnZXMgcGVyIFVzZXI6ICVsbHVcbiIs
IGxpbWl0cy5kZWZhdWx0bWF4bXNnY291bnQpOwogICAgICAgICAgICAgcmV0dXJuKHZleGl0
KDApKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMjM3LDE2ICsyMzcsMTYg
QEAKICAgICAgICAgCiAgICAgICAgIC8qIHF1b3RhICYgbWVzc2FnZSBjb3VudCBsaW1pdHMg
Ki8KICAgICAgICAgaWYgKERvbWFpblF1b3RhWzBdICE9IDApIHsKLSAgICAgICAgICAgIGxp
bWl0cy5kaXNrcXVvdGEgPSBhdG9pKERvbWFpblF1b3RhKTsKKyAgICAgICAgICAgIGxpbWl0
cy5kaXNrcXVvdGEgPSBzdHJ0b2xsKERvbWFpblF1b3RhLCBOVUxMLCAxMCk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKERvbWFpbk1heE1zZ0NvdW50WzBdICE9IDApIHsKLSAgICAgICAg
ICAgIGxpbWl0cy5tYXhtc2djb3VudCA9IGF0b2koRG9tYWluTWF4TXNnQ291bnQpOworICAg
ICAgICAgICAgbGltaXRzLm1heG1zZ2NvdW50ID0gc3RydG9sbChEb21haW5NYXhNc2dDb3Vu
dCwgTlVMTCwgMTApOwogICAgICAgICB9CiAgICAgICAgIGlmIChEZWZhdWx0VXNlclF1b3Rh
WzBdICE9IDApIHsKLSAgICAgICAgICAgIGxpbWl0cy5kZWZhdWx0cXVvdGEgPSBhdG9pKGZv
cm1hdF9tYWlsZGlycXVvdGEoRGVmYXVsdFVzZXJRdW90YSkpOworICAgICAgICAgICAgbGlt
aXRzLmRlZmF1bHRxdW90YSA9IHN0cnRvbGwoZm9ybWF0X21haWxkaXJxdW90YShEZWZhdWx0
VXNlclF1b3RhKSwgTlVMTCwgMTApOwogICAgICAgICB9CiAgICAgICAgIGlmIChEZWZhdWx0
VXNlck1heE1zZ0NvdW50WzBdICE9IDApIHsKLSAgICAgICAgICAgIGxpbWl0cy5kZWZhdWx0
bWF4bXNnY291bnQgPSBhdG9pKERlZmF1bHRVc2VyTWF4TXNnQ291bnQpOworICAgICAgICAg
ICAgbGltaXRzLmRlZmF1bHRtYXhtc2djb3VudCA9IHN0cnRvbGwoRGVmYXVsdFVzZXJNYXhN
c2dDb3VudCwgTlVMTCwgMTApOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
R2lkRmxhZyA9PSAxKSB7CmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Zwb3BtYWls
LmMgdnBvcG1haWwtNS41LjAvdnBvcG1haWwuYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92
cG9wbWFpbC5jCTIwMTAtMTEtMDUgMTg6Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9w
bWFpbC01LjUuMC92cG9wbWFpbC5jCTIwMTUtMDktMTcgMTE6NTk6MDYuMjIwMDk0NjM1ICsw
MTAwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAidmF1dGguaCIKICNpbmNsdWRlICJ2
bGltaXRzLmgiCiAjaW5jbHVkZSAibWFpbGRpcnF1b3RhLmgiCisjaW5jbHVkZSAic3RvcmFn
ZS5oIgogI2luY2x1ZGUgInZhdXRobW9kdWxlLmgiCiAjaW5jbHVkZSAicHdzdHIuaCIKIApA
QCAtODUsNiArODYsNDQgQEAKICAgIGNoYXIgKnZhbHVlOwogIH0gc29ydHJlYzsKIAorLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KKwordm9pZCBzdHJpbmdfbGlzdF9pbml0KHN0cmluZ19saXN0
ICphLCBpbnQgaW5pdGlhbCkgeworICBhLT5jb3VudCA9IDA7CisgIGEtPnNpemUgPSAoKGlu
aXRpYWwgKyAzKSAvIDQpICogNDsKKyAgaWYgKGEtPnNpemUgPD0gMCkgYS0+c2l6ZSA9IDQ7
CisgIGEtPnZhbHVlcyA9IGNhbGxvYyhhLT5zaXplLCBzaXplb2YoY2hhciAqKikpOworICBp
ZiAoYS0+dmFsdWVzID09IE5VTEwpIGEtPnNpemUgPSAwOworfQorCitpbnQgc3RyaW5nX2xp
c3RfYWRkKHN0cmluZ19saXN0ICphLCBjaGFyICp2YWx1ZSkgeworICBpZiAoYS0+Y291bnQg
Pj0gKGEtPnNpemUgLSAyKSkgeworICAgIGNoYXIgKipuZXc7CisKKyAgICBhLT5zaXplICs9
IDg7CisgICAgbmV3ID0gcmVhbGxvYyhhLT52YWx1ZXMsIGEtPnNpemUgKiBzaXplb2YoY2hh
ciAqKikpOworICAgIGlmIChuZXcgIT0gTlVMTCkgeworICAgICAgYS0+dmFsdWVzID0gbmV3
OworICAgICAgcmV0dXJuIGEtPnNpemU7CisgICAgfQorICAgIHJldHVybiAwOworICB9CisK
KyAgaWYgKChhLT52YWx1ZXNbYS0+Y291bnRdID0gc3RyZHVwKHZhbHVlKSkgPT0gTlVMTCkK
KyAgICByZXR1cm4gMDsKKyAgYS0+Y291bnQrKzsKKyAgcmV0dXJuIDE7Cit9CisKK3ZvaWQg
c3RyaW5nX2xpc3RfZnJlZShzdHJpbmdfbGlzdCAqYSkgeworIGludCBpOworCisgIGlmIChh
LT52YWx1ZXMgPT0gTlVMTCkgcmV0dXJuOworICBmb3IgKGkgPSAwOyBpIDwgYS0+Y291bnQ7
IGkrKykKKyAgICBmcmVlKGEtPnZhbHVlc1tpXSk7CisgIGZyZWUoYS0+dmFsdWVzKTsKK30K
KwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xMDQsMjQgKzE0MywxNiBAQAogIGNo
YXIgZGlyX2NvbnRyb2xfZm9yX3VpZFtNQVhfQlVGRl07CiAgY2hhciB0bXBidWZbTUFYX0JV
RkZdOwogIGNoYXIgRGlyW01BWF9CVUZGXTsKLSBjaGFyIGNhbGxpbmdfZGlyW01BWF9CVUZG
XTsKKyBpbnQgY2FsbF9kaXI7CiAgY2hhciBkZGlyWzUxMl0gPSB7IDAgfTsKIAotIGNoYXIg
KmFsaWFzZXNbMV07Ci0gaW50IGFsaWFzY291bnQ9MDsKKyBzdHJpbmdfbGlzdCAqYWxpYXNl
czsKIAogI2lmZGVmIE9OQ0hBTkdFX1NDUklQVAogICAvKiAgRG9uJ3QgZXhlY3V0ZSBhbnkg
aW1wbGllZCBvbmNoYW5nZSBpbiBjYWxsZWQgZnVuY3Rpb25zICAqLwogICBhbGxvd19vbmNo
YW5nZSA9IDA7CiAjZW5kaWYKIAotICAvKgotICAgKiBJbiBjYXNlIHdlIG5lZWQgdG8gdXNl
IGRlbGV0ZV9saW5lLCBidWlsZCBhbiBhcnJheSBhbmQgY291bnQgCi0gICAqIHRvIHVzZSBh
cyBpdHMgcGFyYW1ldGVycyAKLSAgICoKLSAgICovCi0gIGFsaWFzZXNbYWxpYXNjb3VudCsr
XT1zdHJkdXAoZG9tYWluKTsKLQogICAvKiB3ZSBvbmx5IGRvIGxvd2VyIGNhc2UgKi8KICAg
bG93ZXJpdChkb21haW4pOwogCkBAIC0xNTYsNyArMTg3LDcgQEAKICAgdW1hc2soVlBPUE1B
SUxfVU1BU0spOwogCiAgIC8qIHN0b3JlIHRoZSBjYWxsaW5nIGRpcmVjdG9yeSAqLwotICBn
ZXRjd2QoY2FsbGluZ19kaXIsIHNpemVvZihjYWxsaW5nX2RpcikpOworICBjYWxsX2RpciA9
IG9wZW4oIi4iLCBPX1JET05MWSk7CiAKICAgaWYgKChkaXIgPT0gTlVMTCkgfHwgKChjb25z
dCBjaGFyICopZGlyID09IChjb25zdCBjaGFyICopVlBPUE1BSUxfRElSX0RPTUFJTlMpIHx8
ICghKCpkaXIpKSkgewogCSBtZW1zZXQoZGRpciwgMCwgc2l6ZW9mKGRkaXIpKTsKQEAgLTE3
Niw3ICsyMDcsNyBAQAogCiAgICAgLyogaWYgaXQncyBub3QgdGhlcmUsIG5vIHByb2JsZW0s
IGp1c3QgdHJ5IHRvIGNyZWF0ZSBpdCAqLwogICAgIGlmICggbWtkaXIoZGlyLCBWUE9QTUFJ
TF9ESVJfTU9ERSkgIT0gMCApIHsKLSAgICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgICAg
IGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICAgIHJldHVybihWQV9D
QU5fTk9UX01BS0VfRE9NQUlOU19ESVIpOwogICAgIH0KIApAQCAtMTg1LDcgKzIxNiw3IEBA
CiAKICAgICAvKiBub3cgdHJ5IG1vdmluZyBpbnRvIHRoZSBEb21haW5zIHN1YmRpciBhZ2Fp
biAqLwogICAgIGlmICggY2hkaXIoZGlyKSAhPSAwICkgewotICAgICAgY2hkaXIoY2FsbGlu
Z19kaXIpOworICAgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogICAg
ICAgcmV0dXJuKFZBX0JBRF9EX0RJUik7CiAgICAgfQogICB9CkBAIC0yMTgsNyArMjQ5LDcg
QEAKICAgaWYgKHN0cmxlbihkaXIpK3N0cmxlbihEb21haW5TdWJEaXIpID4gTUFYX1BXX0RJ
UikgewogICAgIC8qIGJhY2sgb3V0IG9mIGNoYW5nZXMgbWFkZSBzbyBmYXIgKi8KICAgICBk
ZWNfZGlyX2NvbnRyb2woZGlyX2NvbnRyb2xfZm9yX3VpZCwgdWlkLCBnaWQpOwotICAgIGNo
ZGlyKGNhbGxpbmdfZGlyKTsKKyAgICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rp
cik7CiAgICAgcmV0dXJuKFZBX0RJUl9UT09fTE9ORyk7CiAgIH0KIApAQCAtMjI2LDcgKzI1
Nyw3IEBACiAgIGlmICggcl9ta2RpcihEb21haW5TdWJEaXIsIHVpZCwgZ2lkICkgIT0gMCAp
IHsKICAgICAvKiBiYWNrIG91dCBvZiBjaGFuZ2VzIG1hZGUgc28gZmFyICovCiAgICAgZGVj
X2Rpcl9jb250cm9sKGRpcl9jb250cm9sX2Zvcl91aWQsIHVpZCwgZ2lkKTsKLSAgICBjaGRp
cihjYWxsaW5nX2Rpcik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIp
OwogICAgIHJldHVybihWQV9DT1VMRF9OT1RfTUFLRV9ET01BSU5fRElSKTsKICAgfQogICAK
QEAgLTIzNCw3ICsyNjUsNyBAQAogICAgIC8qIGJhY2sgb3V0IG9mIGNoYW5nZXMgbWFkZSBz
byBmYXIgKi8KICAgICB2ZGVsZmlsZXMoRG9tYWluU3ViRGlyKTsKICAgICBkZWNfZGlyX2Nv
bnRyb2woZGlyX2NvbnRyb2xfZm9yX3VpZCwgdWlkLCBnaWQpOwotICAgIGNoZGlyKGNhbGxp
bmdfZGlyKTsKKyAgICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAg
cmV0dXJuKFZBX0JBRF9EX0RJUik7CiAgIH0KIApAQCAtMjQ3LDcgKzI3OCw3IEBACiAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBkZWxldGUgZGlyZWN0b3J5IHRyZWU6ICVz
XG4iLCBEb21haW5TdWJEaXIpOwogICAgIH0KICAgICBkZWNfZGlyX2NvbnRyb2woZGlyX2Nv
bnRyb2xfZm9yX3VpZCwgdWlkLCBnaWQpOwotICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAg
ICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgcmV0dXJuKFZBX0NP
VUxEX05PVF9PUEVOX1FNQUlMX0RFRkFVTFQpOwogICB9IGVsc2UgewogICAgIGZwcmludGYo
ZnMsICJ8ICVzL3ZkZWxpdmVybWFpbCAnJyBib3VuY2Utbm8tbWFpbGJveFxuIiwgVlBPUE1B
SUxfRElSX0JJTik7CkBAIC0yNjIsNyArMjkzLDcgQEAKICAgICAgIGZwcmludGYoc3RkZXJy
LCAiRmFpbGVkIHRvIGRlbGV0ZSBkaXJlY3RvcnkgdHJlZTogJXNcbiIsIERvbWFpblN1YkRp
cik7CiAgICAgfQogICAgIGRlY19kaXJfY29udHJvbChkaXJfY29udHJvbF9mb3JfdWlkLCB1
aWQsIGdpZCk7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRpcihjYWxsX2Rp
cik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICBmcHJpbnRmIChzdGRlcnIsICJFcnJvci4gRmFp
bGVkIHRvIGFkZCBkb21haW4gdG8gYXNzaWduIGZpbGVcbiIpOwogICAgIHJldHVybiAoVkFf
Q09VTERfTk9UX1VQREFURV9GSUxFKTsKICAgfQpAQCAtMjkyLDExICszMjMsMTQgQEAKIAog
ICAgIHZnZXRfYXNzaWduKGRvbWFpbiwgRGlyLCBzaXplb2YoRGlyKSwgJnVpZCwgJmdpZCAp
OwogCi0gICAgaWYgKCBkZWxfZG9tYWluX2Fzc2lnbihhbGlhc2VzLCBhbGlhc2NvdW50LCBk
b21haW4sIERpciwgdWlkLCBnaWQpICE9IDApIHsKKyAgICBzdHJpbmdfbGlzdF9pbml0KCZh
bGlhc2VzLCAxKTsKKyAgICBzdHJpbmdfbGlzdF9hZGQoJmFsaWFzZXMsIGRvbWFpbik7CisK
KyAgICBpZiAoIGRlbF9kb21haW5fYXNzaWduKGFsaWFzZXMudmFsdWVzLCBhbGlhc2VzLmNv
dW50LCBkb21haW4sIERpciwgdWlkLCBnaWQpICE9IDApIHsKICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiRmFpbGVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gcmVtb3ZlIGRvbWFpbiBmcm9tIGFz
c2lnbiBmaWxlXG4iKTsKICAgICB9CiAKLSAgICBpZiAoZGVsX2NvbnRyb2woYWxpYXNlcyxh
bGlhc2NvdW50KSAhPTApIHsKKyAgICBpZiAoZGVsX2NvbnRyb2woYWxpYXNlcy52YWx1ZXMs
YWxpYXNlcy5jb3VudCkgIT0wKSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB3
aGlsZSBhdHRlbXB0aW5nIHRvIGRlbGV0ZSBkb21haW4gZnJvbSB0aGUgcW1haWwgY29udHJv
bCBmaWxlc1xuIik7CiAgICAgfQogCkBAIC0zMDksNiArMzQzLDkgQEAKICAgICAvKiBzZW5k
IGEgSFVQIHNpZ25hbCB0byBxbWFpbC1zZW5kIHByb2Nlc3MgdG8gcmVyZWFkIGNvbnRyb2wg
ZmlsZXMgKi8KICAgICBzaWduYWxfcHJvY2VzcygicW1haWwtc2VuZCIsIFNJR0hVUCk7CiAK
KyAgICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CisgICAgc3RyaW5nX2xp
c3RfZnJlZSgmYWxpYXNlcyk7CisKICAgICByZXR1cm4gKFZBX05PX0FVVEhfQ09OTkVDVElP
Tik7CiAgIH0JCiAgCkBAIC0zMjcsOSArMzY0LDcgQEAKICNlbmRpZgogCiAgIC8qIHJldHVy
biBiYWNrIHRvIHRoZSBjYWxsZXJzIGRpcmVjdG9yeSBhbmQgcmV0dXJuIHN1Y2Nlc3MgKi8K
LSAgY2hkaXIoY2FsbGluZ19kaXIpOwotCi0gIGZyZWUoIGFsaWFzZXNbMF0gKTsKKyAgZmNo
ZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogCiAgIHJldHVybihWQV9TVUNDRVNT
KTsKIH0KQEAgLTM1Miw5ICszODcsMTAgQEAKICBjaGFyIGRpcmNvbnRyb2xbTUFYX0JVRkZd
OwogIHVpZF90IHVpZDsKICBnaWRfdCBnaWQ7Ci0gY2hhciAqYWxpYXNlc1tNQVhfRE9NX0FM
SUFTXTsKKyBzdHJpbmdfbGlzdCBhbGlhc2VzOwogIGRvbWFpbl9lbnRyeSAqZW50cnk7Ci0g
aW50IGk9MCwgYWxpYXNjb3VudD0wOworIGludCBpPTA7CisgaW50IGNhbGxfZGlyOwogCiAg
IC8qIHdlIGFsd2F5cyBjb252ZXJ0IGRvbWFpbnMgdG8gbG93ZXIgY2FzZSAqLwogICBsb3dl
cml0KGRvbWFpbik7CkBAIC0zODksNyArNDI1LDggQEAKICAgICAgICogIHRoYXQgYXJlIGFi
b3V0IHRvIGJlIGRlbGV0ZWQuICBJdCB3aWxsIGJlIHRoZSBvbmx5IG9uZQogICAgICAgKiAg
YnV0IEkgd2lsbCB1c2UgdGhlIHNhbWUgY29kZSBhcyBtdWx0aSBkb21haW5zIGFueXdheS4K
ICAgICAgICovCi0gICAgIGFsaWFzZXNbYWxpYXNjb3VudCsrXSA9IHN0cmR1cCggZG9tYWlu
X3RvX2RlbCApOworICAgICBzdHJpbmdfbGlzdF9pbml0KCZhbGlhc2VzLCAxKTsKKyAgICAg
c3RyaW5nX2xpc3RfYWRkKCZhbGlhc2VzLCBkb21haW5fdG9fZGVsKTsKIAogI2lmZGVmIE9O
Q0hBTkdFX1NDUklQVAogICAgICAvKiB0ZWxsIG90aGVyIHByb2dyYW1zIHRoYXQgZGF0YSBo
YXMgY2hhbmdlZCAqLwpAQCAtNDM3LDE0ICs0NzQsMTYgQEAKICAgICAgICB9CiAgICAgIH0K
IAorICAgICBzdHJpbmdfbGlzdF9pbml0KCZhbGlhc2VzLCAxMCk7CisKICAgICAgd2hpbGUo
IGVudHJ5ICkgewotICAgICAgIGFsaWFzZXNbYWxpYXNjb3VudCsrXSA9IHN0cmR1cChlbnRy
eS0+ZG9tYWluKTsKKyAgICAgICBzdHJpbmdfbGlzdF9hZGQoJmFsaWFzZXMsIGVudHJ5LT5k
b21haW4pOwogICAgICAgIGVudHJ5ID0gZ2V0X2RvbWFpbl9lbnRyaWVzKE5VTEwpOwogICAg
ICB9CiAKIC8vICAgRHVtcCB0aGUgYWxpYXMgbGlzdAotLy8gICAgIGZvcihpPTA7aTxhbGlh
c2NvdW50O2krKykgewotLy8gICAgICAgZnByaW50ZihzdGRlcnIsImFsaWFzICVzXG4iLCBh
bGlhc2VzW2ldKTsKKy8vICAgICBmb3IoaT0wO2k8YWxpYXNlcy5jb3VudDtpKyspIHsKKy8v
ICAgICAgIGZwcmludGYoc3RkZXJyLCJhbGlhcyAlc1xuIiwgYWxpYXNlcy52YWx1ZXNbaV0p
OwogLy8gICAgIH0KIAogCkBAIC00OTAsMjAgKzUyOSwyMCBAQAogCiAgICAgLyogTm93IHJl
bW92ZSBkb21haW4gZnJvbSBmaWxlc3lzdGVtICovCiAgICAgLyogaWYgaXQncyBhIHN5bWJv
bGljIGxpbmsganVzdCByZW1vdmUgdGhlIGxpbmsgKi8KLSAgICBpZiAoIFNfSVNMTksoc3Rh
dGJ1Zi5zdF9tb2RlKSApIHsKKyAgICBpZiAoIHJlYWRsaW5rKERpciwgKGNoYXIgKikgJmNh
bGxfZGlyLCBzaXplb2YoY2FsbF9kaXIpKSAhPSAtMSkgewogICAgICAgaWYgKCB1bmxpbmso
RGlyKSAhPTApIHsKICAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiV2FybmluZzogRmFpbGVk
IHRvIHJlbW92ZSBzeW1saW5rIGZvciAlc1xuIiwgZG9tYWluKTsKICAgICAgIH0KICAgICB9
IGVsc2UgewotICAgICAgY2hhciBjd2RidWZmW01BWF9CVUZGXTsKLSAgICAgIGNoYXIgKmN3
ZDsKICAgICAgIC8qIE5vdCBhIHN5bWxpbmsuLiBzbyB3ZSBoYXZlIHRvIGRlbCBzb21lIGZp
bGVzIHN0cnVjdHVyZSBub3cgKi8KICAgICAgIC8qIHphcCB0aGUgZG9tYWluJ3MgZGlyZWN0
b3J5IHRyZWUgKi8KLSAgICAgIGN3ZCA9IGdldGN3ZCAoY3dkYnVmZiwgc2l6ZW9mKGN3ZGJ1
ZmYpKTsgIC8qIHNhdmUgY2FsbGluZyBkaXJlY3RvcnkgKi8KKyAgICAgIGNhbGxfZGlyID0g
b3BlbigiLiIsIE9fUkRPTkxZKTsKKwogICAgICAgaWYgKCB2ZGVsZmlsZXMoRGlyKSAhPSAw
ICkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IEZhaWxlZCB0byBkZWxl
dGUgZGlyZWN0b3J5IHRyZWU6ICVzXG4iLCBkb21haW4pOwogICAgICAgfQotICAgICAgaWYg
KGN3ZCAhPSBOVUxMKSBjaGRpciAoY3dkKTsKKworICAgICAgZmNoZGlyKGNhbGxfZGlyKTsg
Y2xvc2UoY2FsbF9kaXIpOwogICAgIH0KIAogICAgIC8qIGRlY3JlbWVudCB0aGUgbWFzdGVy
IGRvbWFpbiBjb250cm9sIGluZm8gKi8KQEAgLTUxNiwxMiArNTU1LDEyIEBACiAgIC8qIGRl
bGV0ZSB0aGUgZW1haWwgZG9tYWluIGZyb20gdGhlIHFtYWlsIGNvbnRyb2wgZmlsZXMgOgog
ICAgKiByY3B0aG9zdHMsIG1vcmVyY3B0aG9zdHMsIHZpcnR1YWxkb21haW5zCiAgICAqLwot
ICBpZiAoZGVsX2NvbnRyb2woYWxpYXNlcyxhbGlhc2NvdW50KSAhPSAwKSB7CisgIGlmIChk
ZWxfY29udHJvbChhbGlhc2VzLnZhbHVlcyxhbGlhc2VzLmNvdW50KSAhPSAwKSB7CiAgICAg
ZnByaW50ZiAoc3RkZXJyLCAiV2FybmluZzogRmFpbGVkIHRvIGRlbGV0ZSBkb21haW4gZnJv
bSBxbWFpbCdzIGNvbnRyb2wgZmlsZXNcbiIpOwogICB9CiAKICAgLyogZGVsZXRlIHRoZSBh
c3NpZ24gZmlsZSBsaW5lICovCi0gIGlmIChkZWxfZG9tYWluX2Fzc2lnbihhbGlhc2VzLCBh
bGlhc2NvdW50LCBkb21haW4sIERpciwgdWlkLCBnaWQpICE9IDApIHsKKyAgaWYgKGRlbF9k
b21haW5fYXNzaWduKGFsaWFzZXMudmFsdWVzLCBhbGlhc2VzLmNvdW50LCBkb21haW4sIERp
ciwgdWlkLCBnaWQpICE9IDApIHsKICAgICBmcHJpbnRmIChzdGRlcnIsICJXYXJuaW5nOiBG
YWlsZWQgdG8gZGVsZXRlIGRvbWFpbiBmcm9tIHRoZSBhc3NpZ24gZmlsZVxuIik7CiAgIH0K
IApAQCAtNTI5LDEzICs1NjgsOSBAQAogICBzaWduYWxfcHJvY2VzcygicW1haWwtc2VuZCIs
IFNJR0hVUCk7CiAKICAgLyogIGNsZWFuIHVwIG1lbW9yeSB1c2VkIGJ5IHRoZSBhbGlhcyBs
aXN0ICAqLwotICBmb3IoaT0wO2k8YWxpYXNjb3VudDtpKyspIHsKLSAgICBmcmVlKCBhbGlh
c2VzW2ldICk7Ci0gIH0KLQorICBzdHJpbmdfbGlzdF9mcmVlKCZhbGlhc2VzKTsKIAogICBy
ZXR1cm4oVkFfU1VDQ0VTUyk7Ci0KIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTYz
OSw3ICs2NzQsNyBAQAogICAgaW50IHJldDsKICBjaGFyIERpcltNQVhfQlVGRl07CiAgY2hh
ciAqdXNlcl9oYXNoOwotIGNoYXIgY2FsbGluZ19kaXIgW01BWF9CVUZGXTsKKyBpbnQgY2Fs
bF9kaXI7CiAgdWlkX3QgdWlkID0gLTE7CiAgZ2lkX3QgZ2lkID0gLTE7CiAgc3RydWN0IHZs
aW1pdHMgbGltaXRzOwpAQCAtNjg2LDkgKzcyMSw2IEBACiAgIGlmIChyZXQgIT0gMSkKIAkg
cmV0dXJuIHJldDsKIAotICAvKiByZWNvcmQgdGhlIGRpciB3aGVyZSB0aGUgdmFkZHVzZXIg
Y29tbWFuZCB3YXMgcnVuIGZyb20gKi8KLSAgZ2V0Y3dkKGNhbGxpbmdfZGlyLCBzaXplb2Yo
Y2FsbGluZ19kaXIpKTsKLQogICAvKiBsb29rdXAgdGhlIGhvbWUgZGlyLCB1aWQgYW5kIGdp
ZCBmb3IgdGhlIGRvbWFpbiAqLwogICBpZiAoIHZnZXRfYXNzaWduKGRvbWFpbiwgRGlyLCBz
aXplb2YoRGlyKSwgJnVpZCwgJmdpZCk9PU5VTEwpIHsKICAgICByZXR1cm4oVkFfRE9NQUlO
X0RPRVNfTk9UX0VYSVNUKTsKQEAgLTY5OSwxNSArNzMxLDE5IEBACiAgICAgcmV0dXJuKFZB
X0NBTk5PVF9SRUFEX0xJTUlUUyk7CiAgIH0KIAorICAvKiByZWNvcmQgdGhlIGRpciB3aGVy
ZSB0aGUgdmFkZHVzZXIgY29tbWFuZCB3YXMgcnVuIGZyb20gKi8KKyAgY2FsbF9kaXIgPSBv
cGVuKCIuIiwgT19SRE9OTFkpOworCiAgIC8qIGdvIHRvIHRoZSBkb21haW4ncyBob21lIGRp
ciAoaWUgdGVzdCBpdCBleGlzdHMpICovCiAgIC8qIHdvdWxkIGEgc3RhdCBiZSBhIGJldHRl
ciBvcHRpb24gaGVyZT8gKi8KICAgaWYgKCBjaGRpcihEaXIpICE9IDAgKSB7CisgICAgY2xv
c2UoY2FsbF9kaXIpOwogICAgIHJldHVybihWQV9CQURfRF9ESVIpOwogICB9CiAKICAgLyog
Y3JlYXRlIGRpciBmb3IgdGhlIHRoZSB1c2VyICovIAogICBpZiAoICh1c2VyX2hhc2g9bWFr
ZV91c2VyX2Rpcih1c2VybmFtZSwgZG9tYWluLCB1aWQsIGdpZCkpID09IE5VTEwgKSB7Ci0g
ICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNh
bGxfZGlyKTsKICAgICBpZiAodmVycm9yaSAhPSAwICkgcmV0dXJuKHZlcnJvcmkpOwogICAg
IGVsc2UgcmV0dXJuKFZBX0JBRF9VX0RJUik7CiAgIH0KQEAgLTcxOCwxOSArNzU0LDE5IEBA
CiAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBhZGQg
dXNlciB0byBhdXRoIGJhY2tlbmRcbiIpOwogICAgIC8qIGJhY2sgb3V0IG9mIGNoYW5nZXMg
bWFkZSBzbyBmYXIgKi8KICAgICBjaGRpcihEaXIpOyBpZiAoc3RybGVuKHVzZXJfaGFzaCk+
MCkgeyBjaGRpcih1c2VyX2hhc2gpO30gdmRlbGZpbGVzKHVzZXJuYW1lKTsKLSAgICBjaGRp
cihjYWxsaW5nX2Rpcik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIp
OwogICAgIHJldHVybihWQV9OT19BVVRIX0NPTk5FQ1RJT04pOwogICB9CiAKICAgaWYgKGxp
bWl0cy5kZWZhdWx0cXVvdGEgPiAwKSB7CiAgICAgaWYgKGxpbWl0cy5kZWZhdWx0bWF4bXNn
Y291bnQgPiAwKQotICAgICAgc25wcmludGYgKHF1b3RhLCBzaXplb2YocXVvdGEpLCAiJWRT
LCVkQyIsIGxpbWl0cy5kZWZhdWx0cXVvdGEsCisgICAgICBzbnByaW50ZiAocXVvdGEsIHNp
emVvZihxdW90YSksICIlbGx1UywlbGx1QyIsIGxpbWl0cy5kZWZhdWx0cXVvdGEsCiAgICAg
ICAgIGxpbWl0cy5kZWZhdWx0bWF4bXNnY291bnQpOwogICAgIGVsc2UKLSAgICAgIHNucHJp
bnRmIChxdW90YSwgc2l6ZW9mKHF1b3RhKSwgIiVkUyIsIGxpbWl0cy5kZWZhdWx0cXVvdGEp
OworICAgICAgc25wcmludGYgKHF1b3RhLCBzaXplb2YocXVvdGEpLCAiJWxsdVMiLCBsaW1p
dHMuZGVmYXVsdHF1b3RhKTsKICAgfSBlbHNlIHsKICAgICBpZiAobGltaXRzLmRlZmF1bHRt
YXhtc2djb3VudCA+IDApCi0gICAgICBzbnByaW50ZiAocXVvdGEsIHNpemVvZihxdW90YSks
ICIlZEMiLCBsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsKKyAgICAgIHNucHJpbnRmIChx
dW90YSwgc2l6ZW9mKHF1b3RhKSwgIiVsbHVDIiwgbGltaXRzLmRlZmF1bHRtYXhtc2djb3Vu
dCk7CiAgICAgZWxzZQogICAgICAgc3RyY3B5IChxdW90YSwgIk5PUVVPVEEiKTsKICAgfQpA
QCAtNzU3LDE0ICs3OTMsMTQgQEAKICAgaWYgKHZhdXRoX21vZHVsZV9mZWF0dXJlKCJBVVRI
X0xPR0dJTkciKSkgewogCSAgaWYgKHZzZXRfbGFzdGF1dGgodXNlcm5hbWUsZG9tYWluLE5V
TExfUkVNT1RFX0lQKSAhPTApIHsKIAkJIC8qIHNob3VsZCB3ZSBiYWNrIG91dCBvZiBhbGwg
dGhlIHdvcmsgd2UgaGF2ZSBkb25lIHNvIGZhcj8gKi8KLQkJIGNoZGlyKGNhbGxpbmdfZGly
KTsKKwkJIGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKIAkJIGZwcmludGYg
KHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgY3JlYXRlIGxhc3RhdXRoIGVudHJ5XG4iKTsK
IAkJIHJldHVybiAoVkFfTk9fQVVUSF9DT05ORUNUSU9OKTsKIAkgIH0KICAgfQogCiAgIC8q
IGp1bXAgYmFjayBpbnRvIHRoZSBkaXIgZnJvbSB3aGljaCB0aGUgdmFkZHVzZXIgd2FzIHJ1
biAqLwotICBjaGRpcihjYWxsaW5nX2Rpcik7CisgIGZjaGRpcihjYWxsX2Rpcik7IGNsb3Nl
KGNhbGxfZGlyKTsKIAogI2lmZGVmIE9OQ0hBTkdFX1NDUklQVAogICBhbGxvd19vbmNoYW5n
ZSA9IHRlbXBfb25jaGFuZ2U7CkBAIC0xMDEyLDEwICsxMDQ4LDEwIEBACiAgc3RydWN0IHN0
YXQgbXlzdGF0OwogIGNoYXIgdG1wc3RyMVtNQVhfQlVGRl07CiAgY2hhciB0bXBzdHIyW01B
WF9CVUZGXTsKLSBjaGFyICphbGlhc2VzWzFdOwotIGludCBhbGlhc2NvdW50PTA7Cisgc3Ry
aW5nX2xpc3QgYWxpYXNlczsKIAotIGFsaWFzZXNbYWxpYXNjb3VudCsrXT1zdHJkdXAoYWxp
YXNfZG9tYWluKTsKKyAgc3RyaW5nX2xpc3RfaW5pdCgmYWxpYXNlcywgMSk7CisgIHN0cmlu
Z19saXN0X2FkZCgmYWxpYXNlcyxhbGlhc19kb21haW4pOwogCiAgIHNucHJpbnRmKHRtcHN0
cjEsIHNpemVvZih0bXBzdHIxKSwgIiVzL3VzZXJzL2Fzc2lnbiIsIFFNQUlMRElSKTsKIApA
QCAtMTA4NiwxMyArMTEyMiwxMyBAQAogCiAgIC8qIG1ha2Ugc3VyZSBpdCdzIG5vdCBpbiBs
b2NhbHMgYW5kIHNldCBtb2RlICovCiAgIHNucHJpbnRmKHRtcHN0cjEsIHNpemVvZih0bXBz
dHIxKSwgIiVzL2NvbnRyb2wvbG9jYWxzIiwgUU1BSUxESVIpOwotICBpZiAocmVtb3ZlX2xp
bmVzKCB0bXBzdHIxLCBhbGlhc2VzLCBhbGlhc2NvdW50KSA8IDApIHsKKyAgaWYgKHJlbW92
ZV9saW5lcyggdG1wc3RyMSwgYWxpYXNlcy52YWx1ZXMsIGFsaWFzZXMuY291bnQpIDwgMCkg
ewogICAgIGZwcmludGYgKHN0ZGVyciwgIkZhaWx1cmUgd2hpbGUgYXR0ZW1wdGluZyB0byBy
ZW1vdmVfbGluZXMoKSB0aGUgbG9jYWxzIGZpbGVcbiIpOwogICAgIHJldHVybigtMSk7CiAg
IH0KICAgY2htb2QodG1wc3RyMSwgVlBPUE1BSUxfUU1BSUxfTU9ERSApOyAKIAotICBmcmVl
KCBhbGlhc2VzWzBdICk7CisgIHN0cmluZ19saXN0X2ZyZWUoJmFsaWFzZXMpOwogCiAgIHJl
dHVybigwKTsKIH0KQEAgLTExMDUsMTIgKzExNDEsMTIgQEAKICAqIC0gL3Zhci9xbWFpbC9j
b250cm9sL3JjcHRob3N0cwogICogLSAvdmFyL3FtYWlsL2NvbnRyb2wvdmlydHVhbGRvbWFp
bnMKICAqLwotaW50IGRlbF9jb250cm9sKGNoYXIgKmFsaWFzZXNbTUFYX0RPTV9BTElBU10s
IGludCBhbGlhc2NvdW50ICkgCitpbnQgZGVsX2NvbnRyb2woY2hhciAqKmFsaWFzZXMsIGlu
dCBhbGlhc2NvdW50ICkgCiB7CiAgY2hhciB0bXBidWYxW01BWF9CVUZGXTsKICBjaGFyIHRt
cGJ1ZjJbTUFYX0JVRkZdOwogIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0gY2hhciAqdmlydGhv
c3RzW01BWF9ET01fQUxJQVNdOworIHN0cmluZ19saXN0IHZpcnRob3N0czsKIAogIGludCBw
cm9ibGVtX29jY3VycmVkID0gMCwgaT0wOwogCkBAIC0xMTY4LDIxICsxMjA0LDIwIEBACiAg
IH0gLyogc3dpdGNoIGZvciByY3B0aG9zdHMgKi8KIAogICAvKiBkZWxldGUgZW50cnkgZnJv
bSBjb250cm9sL3ZpcnR1YWxkb21haW5zIChpZiBpdCBleGlzdHMpICovCisgIHN0cmluZ19s
aXN0X2luaXQoJnZpcnRob3N0cywgMTApOwogICAKICAgZm9yKGk9MDtpPGFsaWFzY291bnQ7
aSsrKSB7CiAgICAgc25wcmludGYodG1wYnVmMSwgc2l6ZW9mKHRtcGJ1ZjEpLCAiJXM6JXMi
LCBhbGlhc2VzW2ldLCBhbGlhc2VzW2ldKTsKLSAgICB2aXJ0aG9zdHNbaV09c3RyZHVwKHRt
cGJ1ZjEpOworICAgIHN0cmluZ19saXN0X2FkZCgmdmlydGhvc3RzLCB0bXBidWYxKTsKICAg
fQogCiAgIHNucHJpbnRmKHRtcGJ1ZjIsIHNpemVvZih0bXBidWYyKSwgIiVzL2NvbnRyb2wv
dmlydHVhbGRvbWFpbnMiLCBRTUFJTERJUik7Ci0gIGlmIChyZW1vdmVfbGluZXMoIHRtcGJ1
ZjIsIHZpcnRob3N0cywgYWxpYXNjb3VudCkgPCAwICkgeworICBpZiAocmVtb3ZlX2xpbmVz
KCB0bXBidWYyLCB2aXJ0aG9zdHMudmFsdWVzLCB2aXJ0aG9zdHMuY291bnQpIDwgMCApIHsK
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHJlbW92
ZV9saW5lcygpIHRoZSB2aXJ0dWFsZG9tYWlucyBmaWxlXG4iKTsgCiAgICAgcHJvYmxlbV9v
Y2N1cnJlZCA9IDE7IAogICB9CiAKLSAgZm9yKGk9MDtpPGFsaWFzY291bnQ7aSsrKSB7Ci0g
ICAgZnJlZSggdmlydGhvc3RzW2ldICk7Ci0gIH0KKyAgc3RyaW5nX2xpc3RfZnJlZSgmdmly
dGhvc3RzKTsKIAogICAvKiBtYWtlIHN1cmUgY29ycmVjdCBwZXJtaXNzaW9ucyBhcmUgc2V0
IG9uIHZpcnR1YWxkb21haW5zICovCiAgIGNobW9kKHRtcGJ1ZjIsIFZQT1BNQUlMX1FNQUlM
X01PREUgKTsgCkBAIC0xMjA1LDMxICsxMjQwLDM2IEBACiAgKiAgICAgICAgICBncmVhdGVy
IHRoYW4gMCA9IG51bWJlciBvZiBhbGlhc2VzIGRlbGV0ZWQKICAqCiAgKi8KLWludCBkZWxf
ZG9tYWluX2Fzc2lnbiggY2hhciAqYWxpYXNlc1tNQVhfRE9NX0FMSUFTXSwgaW50IGFsaWFz
Y291bnQsIAoraW50IGRlbF9kb21haW5fYXNzaWduKCBjaGFyICoqYWxpYXNlcywgaW50IGFs
aWFzY291bnQsIAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpyZWFsX2RvbWFpbiwg
CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmRpciwgZ2lkX3QgdWlkLCBnaWRfdCBn
aWQgKSAgCiB7CiAgY2hhciBzZWFyY2hfc3RyaW5nW01BWF9CVUZGXTsKICBjaGFyIGFzc2ln
bl9maWxlW01BWF9CVUZGXTsKLSBjaGFyICp2aXJ0aG9zdHNbTUFYX0RPTV9BTElBU107Cisg
c3RyaW5nX2xpc3QgdmlydGhvc3RzOwogIGludCBpOwogCisgIHN0cmluZ19saXN0X2luaXQo
JnZpcnRob3N0cywgMTApOworCiAgIC8qIGZvcm1hdCB0aGUgcmVtb3ZhbCBzdHJpbmcgKi8g
CiAgIGZvcihpPTA7aTxhbGlhc2NvdW50O2krKykgewogICBzbnByaW50ZihzZWFyY2hfc3Ry
aW5nLCBzaXplb2Yoc2VhcmNoX3N0cmluZyksICIrJXMtOiVzOiVsdTolbHU6JXM6LTo6IiwK
ICAgICAgIGFsaWFzZXNbaV0sIHJlYWxfZG9tYWluLCAobG9uZyB1bnNpZ25lZCl1aWQsIChs
b25nIHVuc2lnbmVkKWdpZCwgZGlyKTsKLSAgICB2aXJ0aG9zdHNbaV0gPSBzdHJkdXAoIHNl
YXJjaF9zdHJpbmcgKTsKKyAgICBzdHJpbmdfbGlzdF9hZGQoJnZpcnRob3N0cywgc2VhcmNo
X3N0cmluZyk7CiAgIH0KIAogICAvKiBmb3JtYXQgdGhlIGFzc2lnbiBmaWxlIG5hbWUgKi8K
ICAgc25wcmludGYoYXNzaWduX2ZpbGUsIHNpemVvZihhc3NpZ25fZmlsZSksICIlcy91c2Vy
cy9hc3NpZ24iLCBRTUFJTERJUik7CiAKICAgLyogcmVtb3ZlIHRoZSBmb3JtYXR0ZWQgc3Ry
aW5nIGZyb20gdGhlIGZpbGUgKi8KLSAgaWYgKHJlbW92ZV9saW5lcyggYXNzaWduX2ZpbGUs
IHZpcnRob3N0cywgYWxpYXNjb3VudCApIDwgMCkgeworICBpZiAocmVtb3ZlX2xpbmVzKCBh
c3NpZ25fZmlsZSwgdmlydGhvc3RzLnZhbHVlcywgdmlydGhvc3RzLmNvdW50ICkgPCAwKSB7
CiAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgd2hpbGUgYXR0ZW1wdGluZyB0byByZW1v
dmVfbGluZXMoKSB0aGUgYXNzaWduIGZpbGVcbiIpOworICAgIHN0cmluZ19saXN0X2ZyZWUo
JnZpcnRob3N0cyk7CiAgICAgcmV0dXJuICgtMSk7CiAgIH0KIAorICBzdHJpbmdfbGlzdF9m
cmVlKCZ2aXJ0aG9zdHMpOworCiAgIC8qIGZvcmNlIHRoZSBwZXJtaXNzaW9uIG9uIHRoZSBm
aWxlICovCiAgIGNobW9kKGFzc2lnbl9maWxlLCBWUE9QTUFJTF9RTUFJTF9NT0RFICk7IAog
CkBAIC0xMjUxLDcgKzEyOTEsNyBAQAogICogICAgICAgICAgMCBvbiBzdWNjZXNzLCBubyBt
YXRjaCBmb3VuZAogICogICAgICAgICAgMSBvbiBzdWNjZXNzLCBtYXRjaCB3YXMgZm91bmQK
ICAqLwotaW50IHJlbW92ZV9saW5lcyggY2hhciAqZmlsZW5hbWUsIGNoYXIgKmFsaWFzZXNb
TUFYX0RPTV9BTElBU10sIGludCBhbGlhc2NvdW50ICkKK2ludCByZW1vdmVfbGluZXMoIGNo
YXIgKmZpbGVuYW1lLCBjaGFyICoqYWxpYXNlcywgaW50IGFsaWFzY291bnQgKQogewogIEZJ
TEUgKmZzID0gTlVMTDsKICBGSUxFICpmczEgPSBOVUxMOwpAQCAtMTgxNiw3ICsxODU2LDcg
QEAKICBjaGFyIERpcltNQVhfQlVGRl07CiAgdWlkX3QgdWlkOwogIGdpZF90IGdpZDsKLSBj
aGFyIGNhbGxpbmdfZGlyW01BWF9CVUZGXTsKKyBpbnQgY2FsbF9kaXI7CiAKICAgaWYgKCB1
c2VyID09IDAgfHwgc3RybGVuKHVzZXIpPD0wKSByZXR1cm4oVkFfSUxMRUdBTF9VU0VSTkFN
RSk7CiAKQEAgLTE4NDUsNyArMTg4NSw3IEBACiAgIGxvd2VyaXQoZG9tYWluKTsKIAogICAv
KiBiYWNrdXAgdGhlIGRpciB3aGVyZSB0aGUgdmRlbHVzZXIgd2FzIHJ1biBmcm9tICovCi0g
IGdldGN3ZChjYWxsaW5nX2Rpciwgc2l6ZW9mKGNhbGxpbmdfZGlyKSk7CisgIGNhbGxfZGly
ID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKIAogICAvKiBsb29rdXAgdGhlIGxvY2F0aW9uIG9m
IHRoaXMgZG9tYWluJ3MgZGlyZWN0b3J5ICovCiAgIGlmICggdmdldF9hc3NpZ24oZG9tYWlu
LCBEaXIsIHNpemVvZihEaXIpLCAmdWlkLCAmZ2lkICkgPT0gTlVMTCApIHsKQEAgLTE4NTQs
NyArMTg5NCw3IEBACiAKICAgLyogY2hhbmdlIGludG8gdGhhdCBkaXJlY3RvcnkgKi8KICAg
aWYgKCBjaGRpcihEaXIpICE9IDAgKSB7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAg
IGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICByZXR1cm4oVkFfQkFE
X0RfRElSKTsKICAgfQogCkBAIC0xODc4LDcgKzE5MTgsNyBAQAogICAvKiBkZWwgdGhlIHVz
ZXIgZnJvbSB0aGUgYXV0aCBzeXN0ZW0gKi8KICAgaWYgKHZhdXRoX2RlbHVzZXIoIHVzZXIs
IGRvbWFpbiApICE9MCApIHsKICAgICBmcHJpbnRmIChzdGRlcnIsICJGYWlsZWQgdG8gZGVs
ZXRlIHVzZXIgZnJvbSBhdXRoIGJhY2tlbmRcbiIpOwotICAgIGNoZGlyKGNhbGxpbmdfZGly
KTsKKyAgICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgcmV0dXJu
ICgtMSk7CiAgIH0KIApAQCAtMTg5MSwxMiArMTkzMSwxMiBAQAogICAgKi8KICAgaWYgKCB2
ZGVsZmlsZXMobXlwdy0+cHdfZGlyKSAhPSAwICkgewogICAgIGZwcmludGYoc3RkZXJyLCAi
Y291bGQgbm90IHJlbW92ZSAlc1xuIiwgbXlwdy0+cHdfZGlyKTsKLSAgICBjaGRpcihjYWxs
aW5nX2Rpcik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogICAg
IHJldHVybihWQV9CQURfRElSKTsKICAgfQogCiAgIC8qIGdvIGJhY2sgdG8gdGhlIGNhbGxl
cnMgZGlyZWN0b3J5ICovCi0gIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgZmNoZGlyKGNhbGxf
ZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogICByZXR1cm4oVkFfU1VDQ0VTUyk7CiAKIH0KQEAg
LTI0NjMsMTUgKzI1MDMsMTMgQEAKIHsKICBjaGFyICp1c2VyX2hhc2g7CiAgc3RydWN0IHZx
cGFzc3dkICpteXB3OwotIGNoYXIgY2FsbGluZ19kaXJbTUFYX0JVRkZdOworIGludCBjYWxs
X2RpcjsKICBjaGFyIGRvbWFpbl9kaXJbTUFYX0JVRkZdOwogIGNvbnN0IGNoYXIgKmRpcm5h
bWVzW10gPSB7Ik1haWxkaXIiLCAiTWFpbGRpci9uZXciLCAiTWFpbGRpci9jdXIiLCAKIAki
TWFpbGRpci90bXAifTsKICBpbnQgaTsKIAogICB2ZXJyb3JpID0gMDsKLSAgLyogcmVjb3Jk
IHRoZSBkaXIgd2hlcmUgdGhlIGNvbW1hbmQgd2FzIHJ1biBmcm9tICovCi0gIGdldGN3ZChj
YWxsaW5nX2Rpciwgc2l6ZW9mKGNhbGxpbmdfZGlyKSk7CiAKICAgLyogcmV0cmlldmUgdGhl
IGRpciB0aGF0IHN0b3JlcyB0aGlzIGRvbWFpbiAqLwogICBpZiAodmdldF9hc3NpZ24oZG9t
YWluLCBkb21haW5fZGlyLCBzaXplb2YoZG9tYWluX2RpciksIE5VTEwsIE5VTEwpID09IE5V
TEwpIHsKQEAgLTI0NzksNiArMjUxNyw5IEBACiAgICAgcmV0dXJuKE5VTEwpOwogICB9CiAK
KyAgLyogcmVjb3JkIHRoZSBkaXIgd2hlcmUgdGhlIGNvbW1hbmQgd2FzIHJ1biBmcm9tICov
CisgIGNhbGxfZGlyID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKwogICAvKiBnbyB0byB0aGUg
ZGlyIGZvciBvdXIgY2hvc2VuIGRvbWFpbiAqLwogICBjaGRpcihkb21haW5fZGlyKTsgCiAK
QEAgLTI0OTgsNyArMjUzOSw3IEBACiAgICAgIGxvbmcgdG8gc2F2ZSBiYWNrIHRvIHRoZSBh
dXRoIGJhY2tlbmQgKi8KICAgaWYgKChzdHJsZW4oZG9tYWluX2Rpcikrc3RybGVuKHVzZXJf
aGFzaCkrc3RybGVuKHVzZXJuYW1lKSkgPiBNQVhfUFdfRElSKSB7CiAgICAgZnByaW50ZiAo
c3RkZXJyLCAiRXJyb3IuIFBhdGggZXhjZWVkcyBtYXhpbXVtIHBlcm1pdHRlZCBsZW5ndGhc
biIpOwotICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgICBmY2hkaXIoY2FsbF9kaXIpOyBj
bG9zZShjYWxsX2Rpcik7CiAgICAgcmV0dXJuIChOVUxMKTsKICAgfQogCkBAIC0yNTA2LDE0
ICsyNTQ3LDE0IEBACiAgIGlmICggbWtkaXIodXNlcm5hbWUsIFZQT1BNQUlMX0RJUl9NT0RF
KSAhPSAwICkgewogICAgIC8qIG5lZWQgdG8gYWRkIHNvbWUgY29kZSB0byByZW1vdmUgdGhl
IGhhc2hlZCBkaXJzIHdlIGNyZWF0ZWQgYWJvdmUuLi4gKi8KICAgICB2ZXJyb3JpID0gVkFf
RVhJU1RfVV9ESVI7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRpcihjYWxs
X2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICByZXR1cm4oTlVMTCk7CiAgIH0KIAogICBp
ZiAoIGNoZGlyKHVzZXJuYW1lKSAhPSAwICkgewogICAgIC8qIGJhY2sgb3V0IG9mIGNoYW5n
ZXMgbWFkZSBhYm92ZSAqLwogICAgIGNoZGlyKGRvbWFpbl9kaXIpOyBjaGRpcih1c2VyX2hh
c2gpOyB2ZGVsZmlsZXModXNlcm5hbWUpOwotICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAg
ICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgZnByaW50ZihzdGRl
cnIsICJtYWtlX3VzZXJfZGlyOiBlcnJvciAyXG4iKTsKICAgICByZXR1cm4oTlVMTCk7CiAg
IH0KQEAgLTI1MjQsNyArMjU2NSw3IEBACiAgICAgICAvKiBiYWNrIG91dCBvZiBjaGFuZ2Vz
IG1hZGUgYWJvdmUgKi8KICAgICAgIGNoZGlyKCIuLiIpOwogICAgICAgdmRlbGZpbGVzKHVz
ZXJuYW1lKTsKLSAgICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgICAgIGZjaGRpcihjYWxs
X2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICAgIHJldHVybihOVUxMKTsKICAgICB9CiAg
IH0KQEAgLTI1NTIsNyArMjU5Myw3IEBACiAgICAgZnJlZSAobXlwdy0+cHdfZGlyKTsKICAg
fQogCi0gIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2Uo
Y2FsbF9kaXIpOwogICByZXR1cm4odXNlcl9oYXNoKTsKIH0KIApAQCAtMzI3MywxOCArMzMx
NCwxMiBAQAogaW50IHZtYWtlX21haWxkaXIoY2hhciAqZG9tYWluLCBjaGFyICpkaXIgKQog
ewogIGNoYXIgdG1wYnVmW01BWF9CVUZGXTsKLSBjaGFyIGNhbGxpbmdfZGlyW01BWF9CVUZG
XTsKKyBpbnQgY2FsbF9kaXI7CiAgdWlkX3QgdWlkOwogIGdpZF90IGdpZDsKICBjaGFyICp0
bXBzdHI7CiAgaW50IGk7CiAKLSAgLyogcmVjb3JkIHdoaWNoIGRpciB0aGUgY29tbWFuZCB3
YXMgbGF1bmNoZWQgZnJvbSAqLwotICBnZXRjd2QoY2FsbGluZ19kaXIsIHNpemVvZihjYWxs
aW5nX2RpcikpOwotCi0gIC8qIHNldCB0aGUgbWFzayBmb3IgZmlsZSBjcmVhdGlvbiAqLwot
ICB1bWFzayhWUE9QTUFJTF9VTUFTSyk7Ci0gCiAgIC8qIGNoZWNrIGlmIGRvbWFpbiBleGlz
dHMuCiAgICAqIGlmIGRvbWFpbiBleGlzdHMsIHN0b3JlIHRoZSBkaXIgaW50byB0bXBidWYs
IGFuZCBzdG9yZSB1aWQgYW5kIGdpZAogICAgKi8KQEAgLTMyOTIsNiArMzMyNywxMiBAQAog
ICAgIHJldHVybiggVkFfRE9NQUlOX0RPRVNfTk9UX0VYSVNUICk7CiAgIH0KIAorICAvKiBy
ZWNvcmQgd2hpY2ggZGlyIHRoZSBjb21tYW5kIHdhcyBsYXVuY2hlZCBmcm9tICovCisgIGNh
bGxfZGlyID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKworICAvKiBzZXQgdGhlIG1hc2sgZm9y
IGZpbGUgY3JlYXRpb24gKi8KKyAgdW1hc2soVlBPUE1BSUxfVU1BU0spOworIAogICAvKiBz
bywgd2Ugc2hvdWxkIGhhdmUgc29tZSB2YXJpYWJsZXMgbGlrZSB0aGlzIG5vdyA6CiAgICAq
ICAgZGlyOiAgICAvaG9tZS92cG9wbWFpbC9kb21haW5zL1t4XS9zb21lZG9tYWluLmNvbS9b
eF0vc29tZXVzZXIKICAgICogICB0bXBidWY6IC9ob21lL3Zwb3BtYWlsL2RvbWFpbnMvW3hd
L3NvbWVkb21haW4uY29tCkBAIC0zMzA2LDcgKzMzNDcsNyBAQAogICAvKiB0bXBzdHIgc2hv
dWxkIG5vdyBjb250YWluIDogW3hdL3NvbWV1c2VyICovCiAKICAgLyogc28gMXN0IGNkIGlu
dG8gdGhlIGRvbWFpbiBkaXIgKHdoaWNoIHNob3VsZCBhbHJlYWR5IGV4aXN0KSAqLwotICBp
ZiAoIGNoZGlyKHRtcGJ1ZikgPT0gLTEgKSB7IGNoZGlyKGNhbGxpbmdfZGlyKTsgcmV0dXJu
KCBWQV9CQURfRElSKTsgfQorICBpZiAoIGNoZGlyKHRtcGJ1ZikgPT0gLTEgKSB7IGZjaGRp
cihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsgcmV0dXJuKCBWQV9CQURfRElSKTsgfQog
CiAgIC8qIE5leHQsIGNyZWF0ZSB0aGUgdXNlcidzIGRpcgogICAgKiBpZSBbeF0vc29tZXVz
ZXIKQEAgLTMzMTQsMjEgKzMzNTUsMjIgQEAKICAgcl9ta2Rpcih0bXBzdHIsIHVpZCwgZ2lk
KTsKIAogICAvKiB3ZSBzaG91bGQgbm93IGJlIGFibGUgdG8gY2QgaW50byB0aGUgdXNlcidz
IGRpciAqLwotICBpZiAoIGNoZGlyKGRpcikgIT0gMCApIHsgY2hkaXIoY2FsbGluZ19kaXIp
OyByZXR1cm4oLTEpOyB9CisgIGlmICggY2hkaXIoZGlyKSAhPSAwICkgeyBmY2hkaXIoY2Fs
bF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7IHJldHVybigtMSk7IH0KIAogICAvKiBub3cgY3Jl
YXRlIHRoZSBNYWlsZGlyICovCi0gIGlmIChta2RpcigiTWFpbGRpciIsVlBPUE1BSUxfRElS
X01PREUpID09IC0xKSB7IGNoZGlyKGNhbGxpbmdfZGlyKTsgcmV0dXJuKC0xKTsgfQotICBp
ZiAoY2hkaXIoIk1haWxkaXIiKSA9PSAtMSkgeyBjaGRpcihjYWxsaW5nX2Rpcik7IHJldHVy
bigtMSk7IH0KLSAgaWYgKG1rZGlyKCJjdXIiLFZQT1BNQUlMX0RJUl9NT0RFKSA9PSAtMSkg
eyBjaGRpcihjYWxsaW5nX2Rpcik7IHJldHVybigtMSk7IH0KLSAgaWYgKG1rZGlyKCJuZXci
LFZQT1BNQUlMX0RJUl9NT0RFKSA9PSAtMSkgeyBjaGRpcihjYWxsaW5nX2Rpcik7IHJldHVy
bigtMSk7IH0KLSAgaWYgKG1rZGlyKCJ0bXAiLFZQT1BNQUlMX0RJUl9NT0RFKSA9PSAtMSkg
eyBjaGRpcihjYWxsaW5nX2Rpcik7IHJldHVybigtMSk7IH0KKyAgaWYgKG1rZGlyKCJNYWls
ZGlyIixWUE9QTUFJTF9ESVJfTU9ERSkgPT0gLTEpIHsgZmNoZGlyKGNhbGxfZGlyKTsgY2xv
c2UoY2FsbF9kaXIpOyByZXR1cm4oLTEpOyB9CisgIGlmIChjaGRpcigiTWFpbGRpciIpID09
IC0xKSB7IGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsgcmV0dXJuKC0xKTsg
fQorICBpZiAobWtkaXIoImN1ciIsVlBPUE1BSUxfRElSX01PREUpID09IC0xKSB7IGZjaGRp
cihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsgcmV0dXJuKC0xKTsgfQorICBpZiAobWtk
aXIoIm5ldyIsVlBPUE1BSUxfRElSX01PREUpID09IC0xKSB7IGZjaGRpcihjYWxsX2Rpcik7
IGNsb3NlKGNhbGxfZGlyKTsgcmV0dXJuKC0xKTsgfQorICBpZiAobWtkaXIoInRtcCIsVlBP
UE1BSUxfRElSX01PREUpID09IC0xKSB7IGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxf
ZGlyKTsgcmV0dXJuKC0xKTsgfQogCiAgIC8qIHNldCBwZXJtaXNzaW9ucyBvbiB0aGUgdXNl
cidzIGRpciAqLwogICBjaGRpcihkaXIpOwogICByX2Nob3duKGRpciwgdWlkLCBnaWQpOwog
CiAgIC8qIGNoYW5nZSBiYWNrIHRvIHRoZSBvcmlnbmFsIGRpciAqLwotICBjaGRpcihjYWxs
aW5nX2Rpcik7CisgIGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKKwogICBy
ZXR1cm4oMCk7CiB9CiAKQEAgLTM5MjMsOCArMzk2NSw4IEBACiAKIGNoYXIgKmZvcm1hdF9t
YWlsZGlycXVvdGEoY29uc3QgY2hhciAqcSkgewogaW50ICAgICBpOwotZG91YmxlCXF1b3Rh
X3NpemU7Ci1sb25nCXF1b3RhX2NvdW50Oworc3RvcmFnZV90IHF1b3RhX3NpemU7CitzdG9y
YWdlX3QgcXVvdGFfY291bnQ7CiBjaGFyCSpwOwogc3RhdGljIGNoYXIgICAgdGVtcHF1b3Rh
WzEyOF07CiAKQEAgLTM5MzQsMzQgKzM5NzYsMzQgQEAKICAgICB9CiAKICAgICAvKiB0cmFu
c2xhdGUgdGhlIHF1b3RhIHRvIGEgbnVtYmVyLCBvciBsZWF2ZSBpdCAqLwotICAgIHF1b3Rh
X3NpemUgPSAtMS4wOwotICAgIHF1b3RhX2NvdW50ID0gLTE7CisgICAgcXVvdGFfc2l6ZSA9
IDA7CisgICAgcXVvdGFfY291bnQgPSAwOwogICAgIHNucHJpbnRmICh0ZW1wcXVvdGEsIHNp
emVvZih0ZW1wcXVvdGEpLCAiJXMiLCBxKTsKICAgICBwID0gc3RydG9rICh0ZW1wcXVvdGEs
ICIsIik7CiAgICAgd2hpbGUgKHAgIT0gTlVMTCkgewogICAgICAgaSA9IHN0cmxlbihwKSAt
IDE7CiAgICAgICBpZiAocFtpXSA9PSAnQycpIHsgLyogc3BlY2lmeSBhIGxpbWl0IG9uIHRo
ZSBudW1iZXIgb2YgbWVzc2FnZXMgKENPVU5UKSAqLwotICAgICAgICBxdW90YV9jb3VudCA9
IGF0b2wocCk7CisgICAgICAgIHF1b3RhX2NvdW50ID0gc3RydG9sbChwLCBOVUxMLCAxMCk7
CiAgICAgICB9IGVsc2UgeyAvKiBzcGVjaWZ5IGEgbGltaXQgb24gdGhlIHNpemUgKi8KICAg
ICAgICAgLyogc3RyaXAgb3B0aW9uYWwgdHJhaWxpbmcgUyAqLwogICAgICAgICBpZiAoKHBb
aV0gPT0gJ1MnKSB8fCAocFtpXSA9PSAncycpKSBwW2ktLV0gPSAnXDAnOwogICAgICAgICAv
KiBzdHJpcCBvcHRpb25hbCB0cmFpbGluZyBCIChmb3IgS0IsIE1CKSAqLwogICAgICAgICBp
ZiAoKHBbaV0gPT0gJ0InKSB8fCAocFtpXSA9PSAnYicpKSBwW2ktLV0gPSAnXDAnOwogCi0g
ICAgICAgIHF1b3RhX3NpemUgPSBhdG9mKHApOworICAgICAgICBxdW90YV9zaXplID0gc3Ry
dG9sbChwLCBOVUxMLCAxMCk7CiAgICAgICAgIGlmICgocFtpXSA9PSAnTScpIHx8IChwW2ld
ID09ICdtJykpIHF1b3RhX3NpemUgKj0gMTAyNCAqIDEwMjQ7CiAgICAgICAgIGlmICgocFtp
XSA9PSAnSycpIHx8IChwW2ldID09ICdrJykpIHF1b3RhX3NpemUgKj0gMTAyNDsKICAgICAg
IH0KICAgICAgIHAgPSBzdHJ0b2sgKE5VTEwsICIsIik7CiAgICAgfQogCi0gICAgaWYgKHF1
b3RhX2NvdW50ID09IC0xKQotICAgICAgaWYgKHF1b3RhX3NpemUgPT0gLTEuMCkgc3RyY3B5
ICh0ZW1wcXVvdGEsICIiKTsgLyogaW52YWxpZCBxdW90YSAqLwotICAgICAgZWxzZSBzcHJp
bnRmICh0ZW1wcXVvdGEsICIlLjBmUyIsIHF1b3RhX3NpemUpOwotICAgIGVsc2UgaWYgKHF1
b3RhX3NpemUgPT0gLTEuMCkKLSAgICAgIHNwcmludGYgKHRlbXBxdW90YSwgIiVsdUMiLCBx
dW90YV9jb3VudCk7CisgICAgaWYgKHF1b3RhX2NvdW50ID09IDApCisgICAgICBpZiAocXVv
dGFfc2l6ZSA9PSAwKSBzdHJjcHkgKHRlbXBxdW90YSwgIiIpOyAvKiBpbnZhbGlkIHF1b3Rh
ICovCisgICAgICBlbHNlIHNwcmludGYgKHRlbXBxdW90YSwgIiVsbHVTIiwgcXVvdGFfc2l6
ZSk7CisgICAgZWxzZSBpZiAocXVvdGFfc2l6ZSA9PSAwKQorICAgICAgc3ByaW50ZiAodGVt
cHF1b3RhLCAiJWxsdUMiLCBxdW90YV9jb3VudCk7CiAgICAgZWxzZQotICAgICAgc3ByaW50
ZiAodGVtcHF1b3RhLCAiJS4wZlMsJWx1QyIsIHF1b3RhX3NpemUsIHF1b3RhX2NvdW50KTsK
KyAgICAgIHNwcmludGYgKHRlbXBxdW90YSwgIiVsbHVTLCVsbHVDIiwgcXVvdGFfc2l6ZSwg
cXVvdGFfY291bnQpOwogCiAgICAgcmV0dXJuIHRlbXBxdW90YTsKIH0KQEAgLTQwMjcsMTYg
KzQwNjksMjggQEAKIGNoYXIgKm1haWxkaXJfdG9fZW1haWwgKGNvbnN0IGNoYXIgKm1haWxk
aXIpCiB7CiAJc3RhdGljIGNoYXIgZW1haWxbMjU2XTsKKwljaGFyIGNhbGxpbmdfZGlyW01B
WF9CVUZGXTsKIAlpbnQgaTsKIAljaGFyICpwbnQsICpsYXN0OwogCWNoYXIgKm1kY29weTsK
IAljaGFyICp1c2VyOwogCWludCBzYXdkb3Q7CiAJCi0JbWRjb3B5ID0gbWFsbG9jIChzdHJs
ZW4gKG1haWxkaXIpICsgMSk7Ci0JaWYgKG1kY29weSA9PSBOVUxMKSByZXR1cm4gIiI7Ci0J
c3RyY3B5IChtZGNvcHksIG1haWxkaXIpOwotCQorCS8qIHByZXBlbmQgdGhlIGN3ZCBpZiB0
aGUgbWFpbGRpciBzdGFydHMgd2l0aCAuLyAqLworCWlmIChzdHJsZW4gKG1haWxkaXIpID4g
MSAmJiBtYWlsZGlyWzBdID09ICcuJyAmJiBtYWlsZGlyWzFdID09ICcvJykKKwl7CisJCWdl
dGN3ZChjYWxsaW5nX2Rpciwgc2l6ZW9mKGNhbGxpbmdfZGlyKSk7CisJCW1kY29weSA9IG1h
bGxvYyAoc3RybGVuIChtYWlsZGlyKSArIHN0cmxlbiAoY2FsbGluZ19kaXIpICsgMSk7CisJ
CWlmIChtZGNvcHkgPT0gTlVMTCkgcmV0dXJuICIiOworCQlzdHJjYXQgKHN0cmNweSAobWRj
b3B5LCBjYWxsaW5nX2RpciksIG1haWxkaXIgKyAxKTsKKwl9CisJZWxzZQorCXsKKwkJbWRj
b3B5ID0gbWFsbG9jIChzdHJsZW4gKG1haWxkaXIpICsgMSk7CisJCWlmIChtZGNvcHkgPT0g
TlVMTCkgcmV0dXJuICIiOworCQlzdHJjcHkgKG1kY29weSwgbWFpbGRpcik7CisJfQorCiAJ
LyogZmluZCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIC9NYWlsZGlyLyAqLwogCXBudCA9IG1k
Y29weTsKIAlkbyB7CkBAIC00MTkyLDcgKzQyNDYsNyBAQAogCWludCBwcmludGVkOyAgIC8q
IG51bWJlciBvZiBjaGFyYWN0ZXJzIHByaW50ZWQgKi8KIAljb25zdCBjaGFyICpmOyAvKiBj
dXJyZW50IHBvc2l0aW9uIGluIGZvcm1hdCBzdHJpbmcgKi8KIAljaGFyICpiOyAgICAgICAv
KiBjdXJyZW50IHBvc2l0aW9uIGluIG91dHB1dCBidWZmZXIgKi8KLQljaGFyIG5bMjBdOyAg
ICAvKiBidWZmZXIgdG8gaG9sZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbnVtYmVyICov
CisJY2hhciBuWzYwXTsgICAgLyogYnVmZmVyIHRvIGhvbGQgc3RyaW5nIHJlcHJlc2VudGF0
aW9uIG9mIG51bWJlciAqLwogCQogICAgICAgICBpbnQgYXJnbiA9IDA7ICAvKiB1c2VkIGZv
ciBudW1iZXJlZCBhcmd1bWVudHMgKi8KICAgICAgICAgY2hhciBhcmdzdHJbMTBdOwpAQCAt
NDIyNCw5ICs0Mjc4LDE0IEBACiAJCQkJY2FzZSAndSc6CiAJCQkJCXNucHJpbnRmIChuLCBz
aXplb2YobiksICIldSIsIHZhX2FyZyAoYXAsIHVuc2lnbmVkIGludCkpOwogCQkJCQlicmVh
azsKKworCQkJCWNhc2UgJ1MnOgorCQkJCQlzbnByaW50ZiAobiwgc2l6ZW9mKG4pLCAiJWxs
dSIsIHZhX2FyZyAoYXAsIHN0b3JhZ2VfdCkpOworCQkJCQlicmVhazsKIAkJCQkJCiAJCQkJ
Y2FzZSAnbCc6CiAJCQkJCWYrKzsKKwogCQkJCQlzd2l0Y2ggKCpmKSB7CiAJCQkJCQljYXNl
ICdkJzoKIAkJCQkJCWNhc2UgJ2knOgpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92
cG9wbWFpbGQuYyB2cG9wbWFpbC01LjUuMC92cG9wbWFpbGQuYwotLS0gdnBvcG1haWwtNS41
LjAub3JpZy92cG9wbWFpbGQuYwkyMDEwLTExLTA1IDE4OjM3OjIzLjAwMDAwMDAwMCArMDAw
MAorKysgdnBvcG1haWwtNS41LjAvdnBvcG1haWxkLmMJMjAxNS0wOS0xNyAxMTo1NDoxMy4x
OTMwOTQ5MjcgKzAxMDAKQEAgLTI0NSw4ICsyNDUsOCBAQAogCiAgIG1lbXNldChSZWFkQnVm
LDAsc2l6ZW9mKFJlYWRCdWYpKTsKICAgaWYgKHNlbGVjdCgyLCZyZmRzLChmZF9zZXQgKikg
MCwoZmRfc2V0ICopMCwmdHYpPj0xKSB7Ci0gICAgZmdldHMoUmVhZEJ1ZixzaXplb2YoUmVh
ZEJ1Ziksc3RkaW4pOwotICAgIHJldHVybigxKTsKKyAgICBpZiAoZmdldHMoUmVhZEJ1Zixz
aXplb2YoUmVhZEJ1Ziksc3RkaW4pICE9IE5VTEwpCisgICAgICByZXR1cm4oMSk7CiAgIH0K
ICAgcmV0dXJuKC0xKTsKIH0KQEAgLTMwMSw3ICszMDEsNyBAQAogICAgIGV4aXQoIC0xICk7
CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0sp
OworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0sp
OwogICB3YWl0X3dyaXRlKCk7CiAKICAgLyogYXV0aGVudGljYXRlIGZpcnN0IG9yIGRyb3Ag
Y29ubmVjdGlvbiAqLwpAQCAtMTIwMiw4ICsxMjAyLDggQEAKIHsKICBjaGFyICpkb21haW47
CiAgZG9tYWluX2VudHJ5ICplbnRyeTsKLSBjaGFyICphbGlhc2VzW01BWF9ET01fQUxJQVNd
OwotIGludCAgaSwgYWxpYXNjb3VudD0wOworIHN0cmluZ19saXN0IGFsaWFzZXM7CisgaW50
IGk7CiAKICAgaWYgKCAhKEF1dGhWcHcucHdfZ2lkICYgU0FfQURNSU4pICkgewogICAgIHNo
b3dfZXJyb3IoIEVSUl9OT1RfQVVUSE9SSVpFRCwgMTQwMSApOwpAQCAtMTIzMiwxMCArMTIz
MiwxMSBAQAogICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tf
TU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAorICBzdHJpbmdfbGlzdF9pbml0KCZhbGlhc2Vz
LCAxMCk7CisKICAgd2hpbGUoIGVudHJ5ICkgewogICAgIGlmIChzdHJjbXAoZW50cnktPmRv
bWFpbiwgZW50cnktPnJlYWxkb21haW4pICE9IDApIHsKLSAgICAgIGFsaWFzZXNbYWxpYXNj
b3VudCsrXSA9IHN0cmR1cChlbnRyeS0+ZG9tYWluKTsKLQorICAgICAgc3RyaW5nX2xpc3Rf
YWRkKCZhbGlhc2VzLCBlbnRyeS0+ZG9tYWluKTsKICAgICB9IGVsc2UgewogICAgICAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwiZG9tYWluICVzIiBSRVRfQ1JMRiwg
CiAgICAgICAgICAgICAgICBlbnRyeS0+ZG9tYWluKTsKQEAgLTEyNTgsMTQgKzEyNTksMTMg
QEAKICAgICBlbnRyeSA9IGdldF9kb21haW5fZW50cmllcyhOVUxMKTsKICAgfQogCi0gIGZv
cihpPTA7aTxhbGlhc2NvdW50O2krKykgeworICBmb3IoaT0wO2k8YWxpYXNlcy5jb3VudDtp
KyspIHsKICAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCJhbGlhcyAl
cyIgUkVUX0NSTEYsIAotICAgICAgICAgICAgIGFsaWFzZXNbaV0pOworICAgICAgICAgICAg
IGFsaWFzZXMudmFsdWVzW2ldKTsKICAgICB3YWl0X3dyaXRlKCk7Ci0gICAgZnJlZSggYWxp
YXNlc1tpXSApOwogICB9IAogCi0KKyAgc3RyaW5nX2xpc3RfZnJlZSgmYWxpYXNlcyk7CiAK
ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7
CiAgIHJldHVybigwKTsKQEAgLTE0MjAsNyArMTQyMCw3IEBACiAgICAgcmV0dXJuKC0xKTsK
ICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PSyk7
CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PSyk7
CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAKICAgICAgIHN0cmVy
cm9yKGVycm5vKSk7CiAgICAgcmV0dXJuKC0xKTsKICAgfQotICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE0
NzYsNyArMTQ3Niw3IEBACiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdy
aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dy
aXRlKCk7CiAKICAgd2hpbGUoKG15ZGlyZW50PXJlYWRkaXIobXlkaXIpKSE9TlVMTCl7CkBA
IC0xNTE0LDcgKzE1MTQsNyBAQAogICAgIC8qIG9oIHdlbGwsIGF0IGxlYXN0IHdlIG1pZ2h0
IGRpZSBzb29uICovCiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRl
QnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0
ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTU0
NSw5ICsxNTQ1LDggQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmludGYoV3JpdGVCdWYs
c2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgcmV0dXJuKDApOwotCiB9CiAK
IApAQCAtMTU3Miw3ICsxNTcxLDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgcmV0dXJuKDAp
OwogfQogCkBAIC0xNjA1LDcgKzE2MDQsNyBAQAogICB9CiAgIGZjbG9zZShmcyk7CiAKLSAg
c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgcmV0dXJu
KDApOwogfQogCkBAIC0xNjMwLDcgKzE2MjksNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0K
IAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7
CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19N
T1JFKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIHdoaWxlKGZnZXRzKHRtcGJ1ZixzaXplb2Yo
dG1wYnVmKSxmcykhPU5VTEwpewpAQCAtMTY0NSw3ICsxNjQ0LDcgQEAKICAgZmNsb3NlKGZz
KTsKIAogICBpZiAoIHRtcGJ1ZlswXSAhPSAwICYmIHRtcGJ1ZltzdHJsZW4odG1wYnVmKS0x
XSAhPSAnXG4nICkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks
IFJFVF9DUkxGICIuIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgIiVzIiwgUkVUX0NSTEYgIi4iIFJFVF9DUkxGKTsKICAgfSBlbHNlIHsK
ICAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYp
OwogICB9CkBAIC0xNjcyLDExICsxNjcxLDExIEBACiAgICAgICBzdHJlcnJvcihlcnJubykp
OwogICAgIHJldHVybigtMSk7CiAgIH0KLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy
aXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKICAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgInVpZDogJWRcbiIsIG15c3RhdC5zdF91
aWQpOyAKICAgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE3
NDEsNyArMTc0MCw3IEBACiAgICAgZW50cnk9Z2V0X2RvbWFpbl9lbnRyaWVzKE5VTEwpOwog
ICAgIAogICB9Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBS
RVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs
ICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTc3OCw3ICsxNzc3LDcg
QEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBj
b3VudCA9IDA7CkBAIC0xNzk2LDcgKzE3OTUsNyBAQAogICB9CiAKICAgaWYoIG1pc3MgKSB7
Ci0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxG
KTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIg
UkVUX0NSTEYpOwogICAgIHJldHVybigwKTsKICAgfSBlbHNlIGlmKCBwZXJfcGFnZSA+IDAg
KSB7CiAgICAgcGFnZSA9ICggY291bnQgLyBwZXJfcGFnZSApICsgMTsKQEAgLTE4MDcsNyAr
MTgwNiw3IEBACiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJwYWdl
ICVpIiBSRVRfQ1JMRiwgcGFnZSApOwogICB3YWl0X3dyaXRlKCk7CiAKLSAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgcmV0
dXJuKDApOwogfQogCkBAIC0xODI4LDcgKzE4MjcsNyBAQAogICAgIHJldHVybigtMSk7CiAg
IH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9S
RSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9P
S19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGNvdW50ID0gMDsKQEAgLTE4NDAsNyAr
MTgzOSw3IEBACiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJjb3Vu
dCAlaSIgUkVUX0NSTEYsIGNvdW50KTsKICAgd2FpdF93cml0ZSgpOwogCi0gIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJl
dHVybigwKTsKIH0KIApAQCAtMTg3Myw3ICsxODcyLDcgQEAKICAgICAgcmV0dXJuKC0xKTsK
ICAgIH0KICAKLSAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCBSRVRf
T0tfTU9SRSk7CisgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVz
IiwgUkVUX09LX01PUkUpOwogICAgd2FpdF93cml0ZSgpOwogIAogICAgZmlyc3Q9MTsKQEAg
LTE4ODUsNyArMTg4NCw3IEBACiAKICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0
ZUJ1ZiksICJjb3VudCAlaSIgUkVUX0NSTEYsIGNvdW50KTsKICAgIHdhaXRfd3JpdGUoKTsK
LSAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7
CisgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVU
X0NSTEYpOwogICAgcmV0dXJuKDApOwogIH0KICAgCSAKQEAgLTE5MzksNyArMTkzOCw3IEBA
CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo
V3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBm
aXJzdD0xOwpAQCAtMTk1NiwxMyArMTk1NSwxMyBAQAogICAgICAgc2VuZF91c2VyX2luZm8o
dG1wdnB3KTsKICAgICB9CiAKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRl
QnVmKSwgUkVUX0NSTEYgKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRl
QnVmKSwgIiVzIiwgUkVUX0NSTEYgKTsKICAgICB3YWl0X3dyaXRlKCk7CiAKICAgICArK2Nv
dW50OwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4i
IFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVz
IiwgIi4iIFJFVF9DUkxGKTsKICAgcmV0dXJuKDApOwogfQogCkBAIC0yMDE3LDcgKzIwMTYs
NyBAQAogICAvKiAgcHJpbnQgYWxsIGFsaWFzZXMgICovCiAgIGlmIChzdHJzdHIoRW1haWws
ICJAIikgPT0gTlVMTCkgewogICAgIHRtcGFsaWFzID0gdmFsaWFzX3NlbGVjdF9hbGwoQWxp
YXMsIEVtYWlsKTsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwg
UkVUX09LX01PUkUpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYp
LCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgICAgd2FpdF93cml0ZSgpOwogICAgICAgCiAgICAg
d2hpbGUgKHRtcGFsaWFzICE9IE5VTEwpIHsKQEAgLTIwMzAsOSArMjAyOSw5IEBACiAgIH0g
ZWxzZSB7CiAgICAgdG1wYWxpYXMgPSB2YWxpYXNfc2VsZWN0KEFsaWFzLCBEb21haW4pOwog
ICAgIGlmICh0bXBhbGlhcyA9PSBOVUxMKSB7Ci0gICAgICBzbnByaW50ZihXcml0ZUJ1Ziwg
c2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBz
aXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICAgIH0gZWxzZSB7Ci0gICAgICBz
bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICAg
ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19N
T1JFKTsKICAgICAgIHdhaXRfd3JpdGUoKTsKICAgICAgIAogICAgICAgd2hpbGUgKHRtcGFs
aWFzICE9IE5VTEwpIHsKQEAgLTIwNDMsNyArMjA0Miw3IEBACiAgICAgfQogICB9CiAKLSAg
c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAg
c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxG
KTsKICAgcmV0dXJuKDApOwogfQogCkBAIC0yMTA2LDcgKzIxMDUsNyBAQAogICAgIHJldHVy
bigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwg
UkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwg
IiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgaiA9IGJrc2NhbmRp
cigiLiIsICZuYW1lbGlzdCwgMCwgcWFfc29ydCk7CkBAIC0yMTM1LDcgKzIxMzQsNyBAQAog
ICAgIH0KICAgICArK2NvdW50OwogICB9Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihX
cml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihX
cml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAt
MjE1NywxNiArMjE1NiwxNiBAQAogCiAgIGlmICh2YXV0aF9tb2R1bGVfZmVhdHVyZSgiSVBf
QUxJQVNfRE9NQUlOUyIpKSB7CiAgIGlmICggdmdldF9pcF9tYXAoaXAsdG1wZG9tYWluLHNp
emVvZih0bXBkb21haW4pKSA8IDAgKSB7Ci0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgUkVUX0VSUiAiMC4zMDAzIGVycm9yIiBSRVRfQ1JMRik7CisgICAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX0VSUiAiMC4zMDAz
IGVycm9yIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksUkVUX09LX01PUkUpOworICBzbnByaW50ZihX
cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRf
d3JpdGUoKTsKICAKICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwiJXMg
JXMiIFJFVF9DUkxGLCBpcCwgdG1wZG9tYWluKTsKICAgd2FpdF93cml0ZSgpOwotICBzbnBy
aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnBy
aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwog
ICB9CiAKICAgZWxzZQpAQCAtMjIwMiwxMSArMjIwMSwxMSBAQAogICB9CiAKICAgaWYgKCB2
YWRkX2lwX21hcChpcCxkb21haW4pIDwgMCApIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Zixz
aXplb2YoV3JpdGVCdWYpLCBSRVRfRVJSICIwLjMxMDUgZXJyb3IiIFJFVF9DUkxGKTsKKyAg
ICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfRVJSICIw
LjMxMDUgZXJyb3IiIFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSxSRVRfT0spOworICBzbnByaW50ZihX
cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICAgfQogCiAgICBl
bHNlCkBAIC0yMjQxLDcgKzIyNDAsNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBz
bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLFJFVF9PSyk7CisgIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PSyk7CiAgIH0KIAogICBl
bHNlCkBAIC0yMjYyLDcgKzIyNjEsNyBAQAogICB9CiAKICAgaWYgKHZhdXRoX21vZHVsZV9m
ZWF0dXJlKCJJUF9BTElBU19ET01BSU5TIikpIHsKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6
ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAog
ICBmaXJzdCA9IDE7CkBAIC0yMjcyLDcgKzIyNzEsNyBAQAogICAgIHNucHJpbnRmKFdyaXRl
QnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMgJXMiIFJFVF9DUkxGLCByX2lwLCByX2RvbWFp
bik7CiAgICAgd2FpdF93cml0ZSgpOwogICB9Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv
ZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv
ZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIH0KIAogICBlbHNlCkBAIC0y
MzAyLDcgKzIzMDEsNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihX
cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgIHNucHJpbnRmKFdy
aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsKICAgd2FpdF93
cml0ZSgpOwogCiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJtYXhf
cG9wYWNjb3VudHMgJWQiIFJFVF9DUkxGLCAKQEAgLTIzMTUsNzQgKzIzMTQsNzQgQEAKICAg
ICBteWxpbWl0cy5tYXhhdXRvcmVzcG9uZGVycyk7IHdhaXRfd3JpdGUoKTsKICAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIm1heF9tYWlsaW5nbGlzdHMgJWQiIFJF
VF9DUkxGLCAKICAgICBteWxpbWl0cy5tYXhtYWlsaW5nbGlzdHMpOyB3YWl0X3dyaXRlKCk7
Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNrX3F1b3RhICVk
IiBSRVRfQ1JMRiwgCisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJk
aXNrX3F1b3RhICVsbHUiIFJFVF9DUkxGLCAKICAgICBteWxpbWl0cy5kaXNrcXVvdGEpOyB3
YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJt
YXhfbXNnY291bnQgJWQiIFJFVF9DUkxGLCAKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgIm1heF9tc2djb3VudCAlbGx1IiBSRVRfQ1JMRiwgCiAgICAgbXlsaW1p
dHMubWF4bXNnY291bnQpOyB3YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNp
emVvZihXcml0ZUJ1ZiksICJkZWZhdWx0X3F1b3RhICVkIiBSRVRfQ1JMRiwgCisgIHNucHJp
bnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkZWZhdWx0X3F1b3RhICVsbHUiIFJF
VF9DUkxGLCAKICAgICBteWxpbWl0cy5kZWZhdWx0cXVvdGEpOyB3YWl0X3dyaXRlKCk7Ci0g
IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkZWZhdWx0X21heG1zZ2Nv
dW50ICVkIiBSRVRfQ1JMRiwgCisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1
ZiksICJkZWZhdWx0X21heG1zZ2NvdW50ICVsbHUiIFJFVF9DUkxGLCAKICAgICBteWxpbWl0
cy5kZWZhdWx0bWF4bXNnY291bnQpOyB3YWl0X3dyaXRlKCk7CiAKICAgaWYgKG15bGltaXRz
LmRpc2FibGVfcG9wKSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYp
LCAiZGlzYWJsZV9wb3AgMSIgUkVUX0NSTEYpOyAKKyAgICBzbnByaW50ZihXcml0ZUJ1Zixz
aXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9wb3AgMSIgUkVUX0NSTEYpOyAKICAg
ZWxzZSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlzYWJs
ZV9wb3AgMCIgUkVUX0NSTEYpOyAKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9wb3AgMCIgUkVUX0NSTEYpOyAKIAogICB3YWl0X3dy
aXRlKCk7CiAKICAgaWYgKG15bGltaXRzLmRpc2FibGVfaW1hcCkgCi0gICAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfaW1hcCAxIiBSRVRfQ1JMRik7
CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2Fi
bGVfaW1hcCAxIiBSRVRfQ1JMRik7CiAgIGVsc2UKLSAgICBzbnByaW50ZihXcml0ZUJ1Zixz
aXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9pbWFwIDAiIFJFVF9DUkxGKTsKKyAgICBzbnBy
aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9pbWFwIDAi
IFJFVF9DUkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxl
X2RpYWx1cCkgCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRp
c2FibGVfZGlhbHVwIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9kaWFsdXAgMSIgUkVUX0NSTEYpOwogICBl
bHNlIAotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxl
X2RpYWx1cCAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy
aXRlQnVmKSwgIiVzIiwgImRpc2FibGVfZGlhbHVwIDAiIFJFVF9DUkxGKTsKICAgd2FpdF93
cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3Bhc3N3b3JkY2hhbmdpbmcpIAot
ICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3Bhc3N3
b3JkX2NoYW5naW5nIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9wYXNzd29yZF9jaGFuZ2luZyAxIiBSRVRf
Q1JMRik7CiAgIGVsc2UgCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVm
KSwgImRpc2FibGVfcGFzc3dvcmRfY2hhbmdpbmcgMCIgUkVUX0NSTEYpOworICAgIHNucHJp
bnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX3Bhc3N3b3Jk
X2NoYW5naW5nIDAiIFJFVF9DUkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxp
bWl0cy5kaXNhYmxlX3dlYm1haWwpCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy
aXRlQnVmKSwgImRpc2FibGVfd2VibWFpbCAxIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfd2VibWFpbCAxIiBS
RVRfQ1JMRik7CiAgIGVsc2UKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVC
dWYpLCAiZGlzYWJsZV93ZWJtYWlsIDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0
ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV93ZWJtYWlsIDAiIFJFVF9D
UkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3JlbGF5
KQotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX2V4
dGVybmFsX3JlbGF5IDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9leHRlcm5hbF9yZWxheSAxIiBSRVRfQ1JM
Rik7CiAgIGVsc2UKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi
ZGlzYWJsZV9leHRlcm5hbF9yZWxheSAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfZXh0ZXJuYWxfcmVsYXkg
MCIgUkVUX0NSTEYpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgaWYgKG15bGltaXRzLmRpc2Fi
bGVfc210cCkKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlz
YWJsZV9zbXRwIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9zbXRwIDEiIFJFVF9DUkxGKTsKICAgZWxzZQot
ICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3NtdHAg
MCIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks
ICIlcyIsICJkaXNhYmxlX3NtdHAgMCIgUkVUX0NSTEYpOwogICB3YWl0X3dyaXRlKCk7CiAK
ICAgaWYgKG15bGltaXRzLmRpc2FibGVfc3BhbWFzc2Fzc2luKSAKLSAgICBzbnByaW50ZihX
cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9zcGFtYXNzYXNzaW4gMSIgUkVU
X0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs
ICJkaXNhYmxlX3NwYW1hc3Nhc3NpbiAxIiBSRVRfQ1JMRik7CiAgIGVsc2UgCi0gICAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfc3BhbWFzc2Fzc2lu
IDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYp
LCAiJXMiLCAiZGlzYWJsZV9zcGFtYXNzYXNzaW4gMCIgUkVUX0NSTEYpOwogICB3YWl0X3dy
aXRlKCk7CiAKICAgaWYgKG15bGltaXRzLmRlbGV0ZV9zcGFtKQotICAgIHNucHJpbnRmKFdy
aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkZWxldGVfc3BhbSAxIiBSRVRfQ1JMRik7Cisg
ICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRlbGV0ZV9z
cGFtIDEiIFJFVF9DUkxGKTsKICAgZWxzZQotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv
ZihXcml0ZUJ1ZiksICJkZWxldGVfc3BhbSAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRlbGV0ZV9zcGFtIDAiIFJFVF9D
UkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX21haWxk
cm9wKSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlzYWJs
ZV9tYWlsZHJvcCAxIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfbWFpbGRyb3AgMSIgUkVUX0NSTEYpOwogICBl
bHNlIAotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxl
X21haWxkcm9wIDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9tYWlsZHJvcCAwIiBSRVRfQ1JMRik7CiAgIHdh
aXRfd3JpdGUoKTsKIAogICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi
cGVybV9hY2NvdW50ICVkIiBSRVRfQ1JMRiwgCkBAIC0yNDA1LDcgKzI0MDQsNyBAQAogICAg
IG15bGltaXRzLnBlcm1fZGVmYXVsdHF1b3RhKTsgd2FpdF93cml0ZSgpOwogICB3YWl0X3dy
aXRlKCk7CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJF
VF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwg
Ii4iIFJFVF9DUkxGKTsKICAgcmV0dXJuKDApOwogfQogCkBAIC0yNDM0LDcgKzI0MzMsNyBA
QAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVC
dWYpLCAiJXMiLCBSRVRfT0spOwogICB3YWl0X3dyaXRlKCk7CiAKICAgd2hpbGUoZmdldHMo
UmVhZEJ1ZixzaXplb2YoUmVhZEJ1Ziksc3RkaW4pIT1OVUxMICkgewpAQCAtMjQ0Miw3ICsy
NDQxLDcgQEAKIAogICAgIGlmICggKHBhcmFtID0gc3RydG9rKFJlYWRCdWYsUEFSQU1fVE9L
RU5TKSkgPT0gTlVMTCApIGNvbnRpbnVlOwogICAgIGlmICggKHZhbHVlID0gc3RydG9rKE5V
TEwsUEFSQU1fVE9LRU5TKSkgPT0gTlVMTCApICB7Ci0gICAgICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCAKKyAgICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihX
cml0ZUJ1ZiksICIlcyIsCiAgICAgICAgICIgIFdhcm5pbmc6IG1pc3NpbmcgdmFsdWUiIFJF
VF9DUkxGKTsKICAgICAgIHdhaXRfd3JpdGUoKTsKICAgICAgIGNvbnRpbnVlOwpAQCAtMjUw
NSw3ICsyNTA0LDcgQEAKICAgICB9IGVsc2UgaWYgKCBzdHJjbXAocGFyYW0sInBlcm1fZGVm
YXVsdHF1b3RhIikgPT0gMCApIHsKICAgICAgIG15bGltaXRzLnBlcm1fZGVmYXVsdHF1b3Rh
ID0gYXRvaSh2YWx1ZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgIHNucHJpbnRmKFdyaXRlQnVm
LHNpemVvZihXcml0ZUJ1ZiksIAorICAgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy
aXRlQnVmKSwgIiVzIiwKICAgICAgICAgIiAgV2FybmluZzogaW52YWxpZCBvcHRpb24iIFJF
VF9DUkxGKTsKICAgICAgIHdhaXRfd3JpdGUoKTsKICAgICB9CkBAIC0yNTE1LDcgKzI1MTQs
NyBAQAogICBpZiAoIHZzZXRfbGltaXRzKGRvbWFpbiwmbXlsaW1pdHMpIDwgMCApIHsKICAg
ICBzaG93X2Vycm9yKCBFUlJfTk9fU0VUX0xJTUlUUywgMzUwNCApOwogICB9IGVsc2Ugewot
ICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksUkVUX09LKTsKKyAgICBz
bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICB9
CiAgIHJldHVybigwKTsKIH0KQEAgLTI1NDEsNyArMjU0MCw3IEBACiAgICAgcmV0dXJuKC0x
KTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9P
Syk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9P
Syk7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMjU3NiwxMCArMjU3NSwxMCBAQAogICB9IAog
CiAgIGlmICghKHZhdXRoX21vZHVsZV9mZWF0dXJlKCJBVVRIX0xPR0dJTkciKSkpCi0JICBz
bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0spOworCSAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKIAogICBlbHNl
IHsKLQkgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JF
KTsKKwkgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9P
S19NT1JFKTsKIAkgIHdhaXRfd3JpdGUoKTsKIAogCSAgc25wcmludGYoV3JpdGVCdWYsIHNp
emVvZihXcml0ZUJ1ZiksICJ0aW1lICVsZCIgUkVUX0NSTEYsCkBAIC0yNTkwLDcgKzI1ODks
NyBAQAogCQkgdmdldF9sYXN0YXV0aGlwKHRtcHZwdywgVG1wRG9tYWluKSk7CiAJICB3YWl0
X3dyaXRlKCk7CiAKLQkgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIu
IiBSRVRfQ1JMRik7CisJICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi
JXMiLCAiLiIgUkVUX0NSTEYpOwogICB9CiAKICAgcmV0dXJuKDApOwpAQCAtMjYxNywzNSAr
MjYxNiwzNiBAQAogaW50IGdldF91c2VyX3NpemUoKQogewogICBjaGFyICplbWFpbF9hZGRy
ZXNzOwotICBpbnQgcmV0LCBjbnQ7Ci0gIGxvbmcgYnl0ZXM7CisgIGludCByZXQ7CisgIHN0
b3JhZ2VfdCBjbnQ7CisgIHN0b3JhZ2VfdCBieXRlczsKIAogICBpZiAoIShBdXRoVnB3LnB3
X2dpZCAmIFFBX0FETUlOKSAmJiAhKEF1dGhWcHcucHdfZ2lkICYgU0FfQURNSU4pKSB7Ci0g
ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9FUlIgIjM4MDEg
bm90IGF1dGhvcml6ZWQiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6
ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX0VSUiAiMzgwMSBub3QgYXV0aG9yaXplZCIgUkVU
X0NSTEYpOwogICAgIHJldHVybigtMSk7CiAgIH0KIAogICBpZiAoKGVtYWlsX2FkZHJlc3Mg
PSBzdHJ0b2soTlVMTCwgVE9LRU5TKSkgPT0gTlVMTCkgewotICAgIHNucHJpbnRmKFdyaXRl
QnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m
KFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9FUlIgIjM4MDIgZW1haWxfYWRkcmVzcyBy
ZXF1aXJlZCIgUkVUX0NSTEYpOwogICAgIHJldHVybigtMSk7CiAgIH0KIAogICBpZiAocGFy
c2VfZW1haWwoZW1haWxfYWRkcmVzcywgVG1wVXNlciwgVG1wRG9tYWluLCBBVVRIX1NJWkUp
ICE9IDApIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgCisg
ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICBS
RVRfRVJSICIzODAzIGludmFsaWQgZW1haWwgYWRkcmVzcyIgUkVUX0NSTEYpOwogICAgIHJl
dHVybigtMSk7CiAgIH0KIAogICBpZiAoIShBdXRoVnB3LnB3X2dpZCAmIFNBX0FETUlOKSAm
JiAoQXV0aFZwdy5wd19naWQgJiBRQV9BRE1JTikgCiAgICAgJiYgKHN0cmNtcChUaGVEb21h
aW4sIFRtcERvbWFpbikgIT0gMCkpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m
KFdyaXRlQnVmKSwgCisgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1Ziks
ICIlcyIsCiAgICAgICBSRVRfRVJSICIzODA0IG5vdCBhdXRob3JpemVkIGZvciBkb21haW4i
IFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CiAKICAgaWYgKCh0bXB2cHcgPSB2
YXV0aF9nZXRwdyhUbXBVc2VyLCBUbXBEb21haW4pKSA9PSBOVUxMKSB7Ci0gICAgc25wcmlu
dGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIAorICAgIHNucHJpbnRmKFdyaXRlQnVm
LCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLAogICAgICAgUkVUX0VSUiAiMzgwNSB1c2VyIGRv
ZXMgbm90IGV4aXN0IiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQpAQCAtMjY1
MywxOCArMjY1MywxOCBAQAogICBieXRlcyA9IDA7CiAgIGNudCA9IDA7CiAgIGlmICgocmV0
ID0gcmVhZHVzZXJxdW90YSh0bXB2cHctPnB3X2RpciwgJmJ5dGVzLCAmY250KSkgIT0gMCkg
ewotICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBzbnBy
aW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9FUlIg
IjM4MDYgdW5hYmxlIHRvIGZldGNoIHNpemUgb2YgdXNlciBhY2NvdW50IiBSRVRfQ1JMRik7
CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo
V3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKLSAgc25w
cmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJzaXplICVsZCIgUkVUX0NSTEYs
IGJ5dGVzKTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJzaXpl
ICVsbHUiIFJFVF9DUkxGLCBieXRlcyk7CiAgIHdhaXRfd3JpdGUoKTsKLSAgc25wcmludGYo
V3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJjb3VudCAlZCIgUkVUX0NSTEYsIGNudCk7
CisgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiY291bnQgJWx1IiBS
RVRfQ1JMRiwgY250KTsKICAgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1Ziwg
c2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYs
IHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAKICAgcmV0dXJuKDAp
OwogfQpAQCAtMjY3MiwzMSArMjY3MiwzMiBAQAogaW50IGdldF9kb21haW5fc2l6ZSgpCiB7
CiAgIGNoYXIgKmRvbWFpbiwgdG1wZGlyWzI1Nl07Ci0gIGludCByZXQsIGNudCwgZmlyc3Q7
Ci0gIGxvbmcgYnl0ZXM7Ci0gIHVuc2lnbmVkIGludCB0b3RhbGNudDsKLSAgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsYnl0ZXM7CisgIGludCByZXQsIGZpcnN0OworICBzdG9yYWdlX3Qg
Y250OworICBzdG9yYWdlX3QgYnl0ZXM7CisgIHN0b3JhZ2VfdCB0b3RhbGNudDsKKyAgc3Rv
cmFnZV90IHRvdGFsYnl0ZXM7CiAKICAgaWYgKCEoQXV0aFZwdy5wd19naWQgJiBRQV9BRE1J
TikgJiYgIShBdXRoVnB3LnB3X2dpZCAmIFNBX0FETUlOKSkgewotICAgIHNucHJpbnRmKFdy
aXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6
ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9FUlIgIjM5MDEgbm90IGF1dGhvcml6
ZWQiIFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CiAKICAgaWYgKChkb21haW4g
PSBzdHJ0b2soTlVMTCwgVE9LRU5TKSkgPT0gTlVMTCkgewotICAgIHNucHJpbnRmKFdyaXRl
QnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m
KFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9FUlIgIjM5MDIgZG9tYWluIHJlcXVpcmVk
IiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCiAgIGlmICghKEF1dGhWcHcu
cHdfZ2lkICYgU0FfQURNSU4pICYmIChBdXRoVnB3LnB3X2dpZCAmIFFBX0FETUlOKSAKICAg
ICAmJiAoc3RyY21wKFRoZURvbWFpbiwgZG9tYWluKSAhPSAwKSkgewotICAgIHNucHJpbnRm
KFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLAorICAgIHNucHJpbnRmKFdyaXRlQnVmLCBz
aXplb2YoV3JpdGVCdWYpLCAiJXMiLAogICAgICAgUkVUX0VSUiAiMzkwMyBub3QgYXV0aG9y
aXplZCBmb3IgZG9tYWluIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0g
IHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7Cisg
IHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9S
RSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICB0b3RhbGJ5dGVzID0gMDsKQEAgLTI3MTQsMTIg
KzI3MTUsMTIgQEAKICAgICB9IGVsc2UgewogICAgICAgc25wcmludGYoV3JpdGVCdWYsIHNp
emVvZihXcml0ZUJ1ZiksICJ1c2VyICVzQCVzIiBSRVRfQ1JMRiwgdG1wdnB3LT5wd19uYW1l
LCBkb21haW4pOwogICAgICAgd2FpdF93cml0ZSgpOwotICAgICAgc25wcmludGYoV3JpdGVC
dWYsIHNpemVvZihXcml0ZUJ1ZiksICJzaXplICVsZCIgUkVUX0NSTEYsIGJ5dGVzKTsKKyAg
ICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAic2l6ZSAlbGx1IiBS
RVRfQ1JMRiwgYnl0ZXMpOwogICAgICAgd2FpdF93cml0ZSgpOwotICAgICAgc25wcmludGYo
V3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJjb3VudCAlZCIgUkVUX0NSTEYsIGNudCk7
CisgICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgImNvdW50ICVs
bHUiIFJFVF9DUkxGLCBjbnQpOwogICAgICAgd2FpdF93cml0ZSgpOwotICAgICAgdG90YWxi
eXRlcyArPSAodW5zaWduZWQgbG9uZylieXRlczsKLSAgICAgIHRvdGFsY250ICs9ICh1bnNp
Z25lZCBpbnQpY250OworICAgICAgdG90YWxieXRlcyArPSBieXRlczsKKyAgICAgIHRvdGFs
Y250ICs9IGNudDsKICAgICB9CiAgIH0KIApAQCAtMjcyNywxNiArMjcyOCwxNiBAQAogICB3
YWl0X3dyaXRlKCk7CiAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAi
c2l6ZSAlbGx1IiBSRVRfQ1JMRiwgdG90YWxieXRlcyk7CiAgIHdhaXRfd3JpdGUoKTsKLSAg
c25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJjb3VudCAldSIgUkVUX0NS
TEYsIHRvdGFsY250KTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1Ziks
ICJjb3VudCAlbGx1IiBSRVRfQ1JMRiwgdG90YWxjbnQpOwogICB3YWl0X3dyaXRlKCk7Ci0g
IHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOwor
ICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9D
UkxGKTsKIAogICByZXR1cm4oMCk7CiB9CiAKIGludCBxdWl0KCkKIHsKLSAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmludGYoV3JpdGVC
dWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgd2FpdF93cml0ZSgpOwog
ICB2Y2xvc2UoKTsKIApAQCAtMjc0Nyw3ICsyNzQ4LDcgQEAKIHsKICBpbnQgaTsKIAotICBz
bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgIHNu
cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsK
ICAgd2FpdF93cml0ZSgpOwogCiAgIGZvcihpPTA7TG9naW5GdW5jdGlvbnNbaV0uY29tbWFu
ZCE9TlVMTDsrK2kgKSB7CkBAIC0yNzYyLDcgKzI3NjMsNyBAQAogICAgIH0KICAgICB3YWl0
X3dyaXRlKCk7CiAgIH0KLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwg
Ii4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwg
IiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgCiAgIHJldHVybigxKTsgCiB9CmRpZmYgLXVQciB2
cG9wbWFpbC01LjUuMC5vcmlnL3Zwb3BtYWlsLmggdnBvcG1haWwtNS41LjAvdnBvcG1haWwu
aAotLS0gdnBvcG1haWwtNS41LjAub3JpZy92cG9wbWFpbC5oCTIwMTAtMTEtMDUgMTg6Mzc6
MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC92cG9wbWFpbC5oCTIwMTUt
MDktMTcgMTE6NDE6MDIuNzM3MDk1Mzc0ICswMTAwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNp
bmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgkJLy8gZm9yIHVpZF90
CisjaW5jbHVkZSAic3RvcmFnZS5oIgogI2luY2x1ZGUgInZhdXRoLmgiCiAKIC8qICBFbmFi
bGUgZXhwYW5kZWQgZGVidWcgaW5mb3JtYXRpb24uICBDb25zaWRlciB0aGVzZSBmb3IgLi9j
b25maWd1cmUgb3B0aW9ucyAgKi8KQEAgLTM1LDcgKzM2LDYgQEAKIAogLyogbWF4IGJ1ZmZl
ciBzaXplcyAqLwogI2RlZmluZSBNQVhfQlVGRiAzMDAKLSNkZWZpbmUgTUFYX0RPTV9BTElB
UyAxMDAKIAogLyogbWF4IGZpZWxkIHNpemVzICovCiAjZGVmaW5lIE1BWF9QV19OQU1FICAg
ICAgICAgIDMyCkBAIC0xNjYsNiArMTY2LDE2IEBACiAjZGVmaW5lIFJFUExZVE9fTElTVCAy
CiAjZGVmaW5lIFJFUExZVE9fQUREUkVTUyAzCiAKKy8qICAgTGlzdCBvZiBzdHJpbmdzICov
Cit0eXBlZGVmIHN0cnVjdCBzdHJpbmdfbGlzdCB7CisgICAgaW50IHNpemU7CisgICAgaW50
IGNvdW50OworICAgIGNoYXIgKip2YWx1ZXM7Cit9IHN0cmluZ19saXN0OworCit2b2lkIHN0
cmluZ19saXN0X2luaXQoc3RyaW5nX2xpc3QgKmEsIGludCBmaXJzdCk7CitpbnQgc3RyaW5n
X2xpc3RfYWRkKHN0cmluZ19saXN0ICphLCBjaGFyICp2YWx1ZSk7Cit2b2lkIHN0cmluZ19s
aXN0X2ZyZWUoc3RyaW5nX2xpc3QgKmEpOwogCiAvKiAgIERvbWFpbiBlbnRyeSAgKi8KIHR5
cGVkZWYgc3RydWN0IGRvbWFpbl9lbnRyeSB7CkBAIC0xNzQsMTEgKzE4NCw4IEBACiAgICAg
ICAgIGludCAgICAgICAgICAgICB1aWQ7CiAgICAgICAgIGludCAgICAgICAgICAgICBnaWQ7
CiAgICAgICAgIGNoYXIgICAgKnBhdGg7Ci0gICAgICAgIGNoYXIgICAgKmFsaWFzZXNbTUFY
X0RPTV9BTElBU107CiB9IGRvbWFpbl9lbnRyeTsKIAotCi0KIC8qICAgU3RydWN0dXJlIGZv
ciBtYWlsaW5nIGxpc3QgZGF0YSAgKi8KIHR5cGVkZWYgc3RydWN0IGxpc3RJbmZvVHlwZSB7
CiAgICBkb21haW5fZW50cnkgKmVudHJ5OwpAQCAtMjk1LDExICszMDIsMTEgQEAKIGludCBh
ZGRfZG9tYWluX2Fzc2lnbiggY2hhciAqYWxpYXNfZG9tYWluLCBjaGFyICpyZWFsX2RvbWFp
biwgCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmRpciwgdWlkX3QgdWlkLCBnaWRf
dCBnaWQpOwogLy9pbnQgZGVsX2NvbnRyb2woIGNoYXIgKik7Ci1pbnQgZGVsX2NvbnRyb2wo
IGNoYXIgKmFsaWFzZXNbTUFYX0RPTV9BTElBU10sIGludCBhbGlhc2NvdW50KTsKLWludCBk
ZWxfZG9tYWluX2Fzc2lnbiggY2hhciAqYWxpYXNpZXNbTUFYX0RPTV9BTElBU10sIGludCBh
bGlhc2NvdW50LCAKK2ludCBkZWxfY29udHJvbCggY2hhciAqKmFsaWFzZXMsIGludCBhbGlh
c2NvdW50KTsKK2ludCBkZWxfZG9tYWluX2Fzc2lnbiggY2hhciAqKmFsaWFzaWVzLCBpbnQg
YWxpYXNjb3VudCwgCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnJlYWxfZG9tYWlu
LAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpkaXIsIHVpZF90IHVpZCwgZ2lkX3Qg
Z2lkKTsKLWludCByZW1vdmVfbGluZXMoIGNoYXIgKmZpbGVuYW1lLCBjaGFyICphbGlhc2Vz
W01BWF9ET01fQUxJQVNdLCBpbnQgYWxpYXNjb3VudCk7CitpbnQgcmVtb3ZlX2xpbmVzKCBj
aGFyICpmaWxlbmFtZSwgY2hhciAqKmFsaWFzZXMsIGludCBhbGlhc2NvdW50KTsKIGludCBz
aWduYWxfcHJvY2VzcyggY2hhciAqLCBpbnQgKTsKIGludCB1cGRhdGVfbmV3dSgpOwogaW50
IGFkZF91c2VyX2Fzc2lnbiggY2hhciAqLCBjaGFyICopOwpAQCAtMzM2LDcgKzM0Myw3IEBA
CiBjaGFyICpmb3JtYXRfbWFpbGRpcnF1b3RhKGNvbnN0IGNoYXIgKnEpOwogY2hhciAqZGF0
ZV9oZWFkZXIoKTsKIGludCBxbnByaW50ZiAoY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSwg
Y29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwotaW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hh
ciogZGlyLCBsb25nICpzaXplcCwgaW50ICpjbnRwKTsKK2ludCByZWFkdXNlcnF1b3RhKGNv
bnN0IGNoYXIqIGRpciwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKTsKICNp
Zm5kZWYgSEFWRV9XQVJOCiAjZGVmaW5lIHdhcm4oLi4uKSBmcHJpbnRmKHN0ZGVyciwgX19W
QV9BUkdTX18pCiAjZW5kaWYKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdl
ZC9kaXJlY3RvcnkuYyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL2RpcmVjdG9yeS5jCi0tLSB2
cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvZGlyZWN0b3J5LmMJMjAxMC0xMS0wNSAxODoz
NzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvZGlyZWN0
b3J5LmMJMjAxNS0wOS0xNyAxMTo0MTowMi43MzgwOTUzNDkgKzAxMDAKQEAgLTMyLDcgKzMy
LDcgQEAKICAgICNpbmNsdWRlIDxhc3NlcnQuaD4KICNlbmRpZgogI2luY2x1ZGUgPGNvbmYu
aD4KLSNpbmNsdWRlIDxzdG9yYWdlLmg+CisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogI2lu
Y2x1ZGUgInBhdGguaCIKICNpbmNsdWRlICJkaXJlY3RvcnkuaCIKIApkaWZmIC11UHIgdnBv
cG1haWwtNS41LjAub3JpZy92dXNhZ2VkL2RpcmVjdG9yeS5oIHZwb3BtYWlsLTUuNS4wL3Z1
c2FnZWQvZGlyZWN0b3J5LmgKLS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC9kaXJl
Y3RvcnkuaAkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1h
aWwtNS41LjAvdnVzYWdlZC9kaXJlY3RvcnkuaAkyMDE1LTA5LTE3IDExOjQxOjAyLjczODA5
NTM0OSArMDEwMApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNs
dWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgImNvbmYuaCIKLSNpbmNsdWRlICJzdG9yYWdl
LmgiCisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogCiAvKgogICAgQSBzaW5nbGUgZGlyZWN0
b3J5IHN0cnVjdHVyZQpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2VkL2Rv
bWFpbi5jIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvZG9tYWluLmMKLS0tIHZwb3BtYWlsLTUu
NS4wLm9yaWcvdnVzYWdlZC9kb21haW4uYwkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAw
MCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC9kb21haW4uYwkyMDE1LTA5LTE3
IDExOjQxOjAyLjczOTA5NTMyNSArMDEwMApAQCAtMjUsNyArMjUsNyBAQAogICAgI2luY2x1
ZGUgPGFzc2VydC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8cHRocmVhZC5oPgotI2luY2x1ZGUg
PHN0b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSAiY2FjaGUu
aCIKICNpbmNsdWRlICJkb21haW4uaCIKIApkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3Jp
Zy92dXNhZ2VkL2RvbWFpbi5oIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvZG9tYWluLmgKLS0t
IHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC9kb21haW4uaAkyMDEwLTExLTA1IDE4OjM3
OjI0LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC9kb21haW4u
aAkyMDE1LTA5LTE3IDExOjQxOjAyLjczOTA5NTMyNSArMDEwMApAQCAtMjIsNyArMjIsNyBA
QAogICAgI2RlZmluZSBfX0RPTUFJTl9IXwogCiAjaW5jbHVkZSA8cHRocmVhZC5oPgotI2lu
Y2x1ZGUgInN0b3JhZ2UuaCIKKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAKIC8qCiAgICBN
YXhpbXVtIGxlbmd0aCBvZiBhIGRvbWFpbiBuYW1lCmRpZmYgLXVQciB2cG9wbWFpbC01LjUu
MC5vcmlnL3Z1c2FnZWQvcXVvdGEuaCB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3F1b3RhLmgK
LS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC9xdW90YS5oCTIwMTAtMTEtMDUgMTg6
Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3F1b3Rh
LmgJMjAxNS0wOS0xNyAxMTo0MTowMi43MzkwOTUzMjUgKzAxMDAKQEAgLTIxLDcgKzIxLDcg
QEAKICNpZm5kZWYgX19RVU9UQV9IXwogICAgI2RlZmluZSBfX1FVT1RBX0hfCiAKLSNpbmNs
dWRlICJzdG9yYWdlLmgiCisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogCiAvKgogICAgUXVv
dGEgc2l6ZSBpbiBieXRlcwpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2Vk
L3VzZXIuYyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3VzZXIuYwotLS0gdnBvcG1haWwtNS41
LjAub3JpZy92dXNhZ2VkL3VzZXIuYwkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAwMCAr
MDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC91c2VyLmMJMjAxNS0wOS0xNyAxMTo0
MTowMi43NDAwOTUzMDQgKzAxMDAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDx2YXV0
aC5oPgogI2luY2x1ZGUgPHZhdXRobW9kdWxlLmg+CiAjaW5jbHVkZSA8Y29uZi5oPgotI2lu
Y2x1ZGUgPHN0b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSAi
cGF0aC5oIgogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAidXNlcnN0b3JlLmgiCmRp
ZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNlci5oIHZwb3BtYWlsLTUu
NS4wL3Z1c2FnZWQvdXNlci5oCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNl
ci5oCTIwMTAtMTEtMDUgMTg6Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01
LjUuMC92dXNhZ2VkL3VzZXIuaAkyMDE1LTA5LTE3IDExOjQxOjAyLjc0MDA5NTMwNCArMDEw
MApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxwdGhy
ZWFkLmg+CiAjaW5jbHVkZSAiLi4vY29uZi5oIgotI2luY2x1ZGUgInN0b3JhZ2UuaCIKKyNp
bmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSAiZG9tYWluLmgiCiAjaW5jbHVkZSAi
dXNlcnN0b3JlLmgiCiAjaW5jbHVkZSAiLi4vdmF1dGguaCIKZGlmZiAtdVByIHZwb3BtYWls
LTUuNS4wLm9yaWcvdnVzYWdlZC91c2Vyc3RvcmUuYyB2cG9wbWFpbC01LjUuMC92dXNhZ2Vk
L3VzZXJzdG9yZS5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNlcnN0b3Jl
LmMJMjAxMC0xMS0wNSAxODozNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUu
NS4wL3Z1c2FnZWQvdXNlcnN0b3JlLmMJMjAxNS0wOS0xNyAxMTo0MTowMi43NDEwOTUyODQg
KzAxMDAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZmRlZiBBU1NFUlRfREVCVUcKICAgICNpbmNs
dWRlIDxhc3NlcnQuaD4KICNlbmRpZgotI2luY2x1ZGUgPHN0b3JhZ2UuaD4KKyNpbmNsdWRl
ICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgogI2luY2x1ZGUgInBhdGguaCIK
ICNpbmNsdWRlICJkaXJlY3RvcnkuaCIKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcv
dnVzYWdlZC91c2Vyc3RvcmUuaCB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3VzZXJzdG9yZS5o
Ci0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNlcnN0b3JlLmgJMjAxMC0xMS0w
NSAxODozNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQv
dXNlcnN0b3JlLmgJMjAxNS0wOS0xNyAxMTo0MTowMi43NDEwOTUyODQgKzAxMDAKQEAgLTIx
LDcgKzIxLDcgQEAKICNpZm5kZWYgX19VU0VSU1RPUkVfSF8KICAgICNkZWZpbmUgX19VU0VS
U1RPUkVfSF8KIAotI2luY2x1ZGUgInN0b3JhZ2UuaCIKKyNpbmNsdWRlICIuLi9zdG9yYWdl
LmgiCiAjaW5jbHVkZSAiZGlyZWN0b3J5LmgiCiAjaW5jbHVkZSAiY29uZi5oIgogI2luY2x1
ZGUgPHB0aHJlYWQuaD4KZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC92
ZGIuYyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3ZkYi5jCi0tLSB2cG9wbWFpbC01LjUuMC5v
cmlnL3Z1c2FnZWQvdmRiLmMJMjAxMC0xMS0wNSAxODozNzoyNC4wMDAwMDAwMDAgKzAwMDAK
KysrIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvdmRiLmMJMjAxNS0wOS0xNyAxMTo0MTowMi43
NDIwOTUyNzMgKzAxMDAKQEAgLTEzLDcgKzEzLDcgQEAKICNpZmRlZiBBU1NFUlRfREVCVUcK
ICAgICNpbmNsdWRlIDxhc3NlcnQuaD4KICNlbmRpZgotI2luY2x1ZGUgPHN0b3JhZ2UuaD4K
KyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgogI2luY2x1ZGUg
PHZwb3BtYWlsLmg+CiAjaW5jbHVkZSAicGF0aC5oIgpkaWZmIC11UHIgdnBvcG1haWwtNS41
LjAub3JpZy92dXNhZ2VkL3ZkYi5oIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvdmRiLmgKLS0t
IHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC92ZGIuaAkyMDEwLTExLTA1IDE4OjM3OjI0
LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC92ZGIuaAkyMDE1
LTA5LTE3IDExOjQxOjAyLjc0MjA5NTI3MyArMDEwMApAQCAtNSw3ICs1LDcgQEAKICNpZm5k
ZWYgX19WREJfSF8KICAgICNkZWZpbmUgX19WREJfSF8KIAotI2luY2x1ZGUgPHN0b3JhZ2Uu
aD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgogCiAvKgo=
--------------080504080909080802040003--