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