Re: [SPAM] valias remove alias
Drew Wells <[email protected]> Thu, 17 Sep 2015 15:57:24 +0100
| Newsgroups | gmane.mail.vpopmail |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------080504080909080802040003 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 09/17/2015 03:37 PM, Matt Brookings wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 09/17/2015 06:23 AM, Drew Wells wrote: >> I have created a patch for vpopmail-5.5.0 which incoporates all the changes from 5.4.29 to >> 5.4.33, does anyone want this patch or has work in vpopmail-5.5.0 stalled ? > Drew, I'd be happy to take a look at this. What changes did you add? > I basically did a diff from 5.4.29 to 5.4.33 and implemented that diff to 5.5.0, some of it had already been done to 5.5.0 and alot of it centered around the snprintf tidy up's and the string_list implementation. The attached patch does not include any of the changes I recently sent to the mailing list, just the changes from 5.4.[29->33]. !DSPAM:55fad4d841551123915585! --------------080504080909080802040003 Content-Type: text/plain; charset=UTF-8; name="vpopmail-5.5.0-5.4.x.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vpopmail-5.5.0-5.4.x.patch" ZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvYmFja2VuZHMvbXlzcWwvdm15c3FsLmMg dnBvcG1haWwtNS41LjAvYmFja2VuZHMvbXlzcWwvdm15c3FsLmMKLS0tIHZwb3BtYWlsLTUu NS4wLm9yaWcvYmFja2VuZHMvbXlzcWwvdm15c3FsLmMJMjAxMC0xMS0wNSAxODozNzoyMy4w MDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL2JhY2tlbmRzL215c3FsL3ZteXNx bC5jCTIwMTUtMDktMTcgMTE6NDE6MDIuNzI0MDk1OTIzICswMTAwCkBAIC0xNzg1LDEwICsx Nzg1LDEwIEBACiAgICAgICAgIGxpbWl0cy0+bWF4Zm9yd2FyZHMgPSBhdG9pKHJvd1syXSk7 CiAgICAgICAgIGxpbWl0cy0+bWF4YXV0b3Jlc3BvbmRlcnMgPSBhdG9pKHJvd1szXSk7CiAg ICAgICAgIGxpbWl0cy0+bWF4bWFpbGluZ2xpc3RzID0gYXRvaShyb3dbNF0pOwotICAgICAg ICBsaW1pdHMtPmRpc2txdW90YSA9IGF0b2kocm93WzVdKTsKLSAgICAgICAgbGltaXRzLT5t YXhtc2djb3VudCA9IGF0b2kocm93WzZdKTsKLSAgICAgICAgbGltaXRzLT5kZWZhdWx0cXVv dGEgPSBhdG9pKHJvd1s3XSk7Ci0gICAgICAgIGxpbWl0cy0+ZGVmYXVsdG1heG1zZ2NvdW50 ID0gYXRvaShyb3dbOF0pOworICAgICAgICBsaW1pdHMtPmRpc2txdW90YSA9IHN0cnRvbGwo cm93WzVdLCBOVUxMLCAxMCk7CisgICAgICAgIGxpbWl0cy0+bWF4bXNnY291bnQgPSBzdHJ0 b2xsKHJvd1s2XSwgTlVMTCwgMTApOworICAgICAgICBsaW1pdHMtPmRlZmF1bHRxdW90YSA9 IHN0cnRvbGwocm93WzddLCBOVUxMLCAxMCk7CisgICAgICAgIGxpbWl0cy0+ZGVmYXVsdG1h eG1zZ2NvdW50ID0gc3RydG9sbChyb3dbOF0sIE5VTEwsIDEwKTsKICAgICAgICAgbGltaXRz LT5kaXNhYmxlX3BvcCA9IGF0b2kocm93WzldKTsKICAgICAgICAgbGltaXRzLT5kaXNhYmxl X2ltYXAgPSBhdG9pKHJvd1sxMF0pOwogICAgICAgICBsaW1pdHMtPmRpc2FibGVfZGlhbHVw ID0gYXRvaShyb3dbMTFdKTsKQEAgLTE4MDgsOCArMTgwOCw4IEBACiAgICAgICAgIGxpbWl0 cy0+cGVybV9tYWlsbGlzdF91c2VycyA9IHBlcm0gJiBWTElNSVRfRElTQUJMRV9BTEw7CiAg ICAgICAgIHBlcm0gPj49IFZMSU1JVF9ESVNBQkxFX0JJVFM7CiAgICAgICAgIGxpbWl0cy0+ cGVybV9tYWlsbGlzdF9tb2RlcmF0b3JzID0gcGVybSAmIFZMSU1JVF9ESVNBQkxFX0FMTDsK LSAgICAgICAgbGltaXRzLT5wZXJtX3F1b3RhID0gYXRvaShyb3dbMjNdKTsKLSAgICAgICAg bGltaXRzLT5wZXJtX2RlZmF1bHRxdW90YSA9IGF0b2kocm93WzI0XSk7CisgICAgICAgIGxp bWl0cy0+cGVybV9xdW90YSA9IHN0cnRvbGwocm93WzIzXSwgTlVMTCwgMTApOworICAgICAg ICBsaW1pdHMtPnBlcm1fZGVmYXVsdHF1b3RhID0gc3RydG9sbChyb3dbMjRdLCBOVUxMLCAx MCk7CiAgICAgfQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KHJlc19yZWFkKTsKIApAQCAtMTgz MCw3ICsxODMwLDcgQEAKICAgICAgICAgImRpc2txdW90YSA9ICVkLCBtYXhtc2djb3VudCA9 ICVkLCBkZWZhdWx0cXVvdGEgPSAlZCwgZGVmYXVsdG1heG1zZ2NvdW50ID0gJWQsICIKICAg ICAgICAgImRpc2FibGVfcG9wID0gJWQsIGRpc2FibGVfaW1hcCA9ICVkLCBkaXNhYmxlX2Rp YWx1cCA9ICVkLCAiCiAgICAgICAgICJkaXNhYmxlX3Bhc3N3b3JkY2hhbmdpbmcgPSAlZCwg ZGlzYWJsZV93ZWJtYWlsID0gJWQsIGRpc2FibGVfcmVsYXkgPSAlZCwgIgotICAgICAgICAi ZGlzYWJsZV9zbXRwID0gJWQsIGRpc2FibGVfc3BhbWFzc2Fzc2luID0gJWQsIGRlbGV0ZV9z cGFtID0gJWQsIHBlcm1fYWNjb3VudCA9ICVkLCAiCisgICAgICAgICJkaXNhYmxlX3NtdHAg PSAlZCwgZGlzYWJsZV9zcGFtYXNzYXNzaW4gPSAlZCwgZGVsZXRlX3NwYW0gPSAlZCwgZGlz YWJsZV9tYWlsZHJvcCA9ICVkLCBwZXJtX2FjY291bnQgPSAlZCwgIgogICAgICAgICAicGVy bV9hbGlhcyA9ICVkLCBwZXJtX2ZvcndhcmQgPSAlZCwgcGVybV9hdXRvcmVzcG9uZGVyID0g JWQsIHBlcm1fbWFpbGxpc3QgPSAlZCwgIgogICAgICAgICAicGVybV9xdW90YSA9ICVkLCBw ZXJtX2RlZmF1bHRxdW90YSA9ICVkICIKICAgICAgICAgIk9OIERVUExJQ0FURSBLRVkgVVBE QVRFICIKQEAgLTE4NDcsNyArMTg0Nyw3IEBACiAgICAgICAgIGxpbWl0cy0+ZGlza3F1b3Rh LCBsaW1pdHMtPm1heG1zZ2NvdW50LCBsaW1pdHMtPmRlZmF1bHRxdW90YSwgbGltaXRzLT5k ZWZhdWx0bWF4bXNnY291bnQsCiAgICAgICAgIGxpbWl0cy0+ZGlzYWJsZV9wb3AsIGxpbWl0 cy0+ZGlzYWJsZV9pbWFwLCBsaW1pdHMtPmRpc2FibGVfZGlhbHVwLAogICAgICAgICBsaW1p dHMtPmRpc2FibGVfcGFzc3dvcmRjaGFuZ2luZywgbGltaXRzLT5kaXNhYmxlX3dlYm1haWws IGxpbWl0cy0+ZGlzYWJsZV9yZWxheSwKLSAgICAgICAgbGltaXRzLT5kaXNhYmxlX3NtdHAs IGxpbWl0cy0+ZGlzYWJsZV9zcGFtYXNzYXNzaW4sIGxpbWl0cy0+ZGVsZXRlX3NwYW0sIGxp bWl0cy0+cGVybV9hY2NvdW50LAorICAgICAgICBsaW1pdHMtPmRpc2FibGVfc210cCwgbGlt aXRzLT5kaXNhYmxlX3NwYW1hc3Nhc3NpbiwgbGltaXRzLT5kZWxldGVfc3BhbSwgbGltaXRz LT5kaXNhYmxlX21haWxkcm9wLCBsaW1pdHMtPnBlcm1fYWNjb3VudCwKICAgICAgICAgbGlt aXRzLT5wZXJtX2FsaWFzLCBsaW1pdHMtPnBlcm1fZm9yd2FyZCwgbGltaXRzLT5wZXJtX2F1 dG9yZXNwb25kZXIsCiAgICAgICAgIChsaW1pdHMtPnBlcm1fbWFpbGxpc3QgfAogICAgICAg ICAgICAgKGxpbWl0cy0+cGVybV9tYWlsbGlzdF91c2VycyA8PCBWTElNSVRfRElTQUJMRV9C SVRTKSB8CmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL2JhY2tlbmRzL215c3FsL3Zt eXNxbC5oLmluIHZwb3BtYWlsLTUuNS4wL2JhY2tlbmRzL215c3FsL3ZteXNxbC5oLmluCi0t LSB2cG9wbWFpbC01LjUuMC5vcmlnL2JhY2tlbmRzL215c3FsL3ZteXNxbC5oLmluCTIwMTAt MTEtMDUgMTg6Mzc6MjMuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9iYWNr ZW5kcy9teXNxbC92bXlzcWwuaC5pbgkyMDE1LTA5LTE3IDExOjQxOjAyLjcyNTA5NTg2MSAr MDEwMApAQCAtMjY4LDEwICsyNjgsMTAgQEAKICAgICAgIG1heGZvcndhcmRzICAgICAgICAg ICAgICBJTlQoMTApIE5PVCBOVUxMIERFRkFVTFQgLTEsIFwKICAgICAgIG1heGF1dG9yZXNw b25kZXJzICAgICAgICBJTlQoMTApIE5PVCBOVUxMIERFRkFVTFQgLTEsIFwKICAgICAgIG1h eG1haWxpbmdsaXN0cyAgICAgICAgICBJTlQoMTApIE5PVCBOVUxMIERFRkFVTFQgLTEsIFwK LSAgICAgIGRpc2txdW90YSAgICAgICAgICAgICAgICBJTlQoMTIpIE5PVCBOVUxMIERFRkFV TFQgMCwgXAotICAgICAgbWF4bXNnY291bnQgICAgICAgICAgICAgIElOVCgxMikgTk9UIE5V TEwgREVGQVVMVCAwLCBcCi0gICAgICBkZWZhdWx0cXVvdGEgICAgICAgICAgICAgSU5UKDEy KSBOT1QgTlVMTCBERUZBVUxUIDAsIFwKLSAgICAgIGRlZmF1bHRtYXhtc2djb3VudCAgICAg ICBJTlQoMTIpIE5PVCBOVUxMIERFRkFVTFQgMCwgXAorICAgICAgZGlza3F1b3RhICAgICAg ICAgICAgICAgIEJJR0lOVCBVTlNJR05FRCBOT1QgTlVMTCBERUZBVUxUIDAsIFwKKyAgICAg IG1heG1zZ2NvdW50ICAgICAgICAgICAgICBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVG QVVMVCAwLCBcCisgICAgICBkZWZhdWx0cXVvdGEgICAgICAgICAgICAgQklHSU5UIFVOU0lH TkVEIE5PVCBOVUxMIERFRkFVTFQgMCwgXAorICAgICAgZGVmYXVsdG1heG1zZ2NvdW50ICAg ICAgIEJJR0lOVCBVTlNJR05FRCBOT1QgTlVMTCBERUZBVUxUIDAsIFwKICAgICAgIGRpc2Fi bGVfcG9wICAgICAgICAgICAgICBUSU5ZSU5UKDEpIE5PVCBOVUxMIERFRkFVTFQgMCwgXAog ICAgICAgZGlzYWJsZV9pbWFwICAgICAgICAgICAgIFRJTllJTlQoMSkgTk9UIE5VTEwgREVG QVVMVCAwLCBcCiAgICAgICBkaXNhYmxlX2RpYWx1cCAgICAgICAgICAgVElOWUlOVCgxKSBO T1QgTlVMTCBERUZBVUxUIDAsIFwKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvYmFj a2ZpbGwuYyB2cG9wbWFpbC01LjUuMC9iYWNrZmlsbC5jCi0tLSB2cG9wbWFpbC01LjUuMC5v cmlnL2JhY2tmaWxsLmMJMjAxMC0xMS0wNSAxODozNzoyMi4wMDAwMDAwMDAgKzAwMDAKKysr IHZwb3BtYWlsLTUuNS4wL2JhY2tmaWxsLmMJMjAxNS0wOS0xNyAxMTo0MTowMi43MjUwOTU4 NjEgKzAxMDAKQEAgLTEzLDcgKzEzLDkgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNs dWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZj bnRsLmg+CiAjaW5jbHVkZSAidnBvcG1haWwuaCIKKyNpbmNsdWRlICJmaWxlX2xvY2suaCIK ICNpbmNsdWRlICJ2YXV0aC5oIgogI2luY2x1ZGUgInZhdXRobW9kdWxlLmgiCiAKQEAgLTM3 LDYgKzM5LDcgQEAKIAlpbnQgICAgICAgICAgICAgZmQ7CiAjaWZkZWYgRklMRV9MT0NLSU5H CiAJaW50ICAgICAgICAgICAgIGxvY2tmZDsKKwljaGFyCQlsb2NrZmlsZVtNQVhfQlVGRl07 CiAjZW5kaWYKIAogCWlmIChzdGF0KGZpbGVuYW1lLCAmc3RhdGJ1ZikpCmRpZmYgLXVQciB2 cG9wbWFpbC01LjUuMC5vcmlnL2NsaWVudC5jIHZwb3BtYWlsLTUuNS4wL2NsaWVudC5jCi0t LSB2cG9wbWFpbC01LjUuMC5vcmlnL2NsaWVudC5jCTIwMTAtMTEtMDUgMTg6Mzc6MjIuMDAw MDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9jbGllbnQuYwkyMDE1LTA5LTE3IDEx OjQxOjAyLjcyNjA5NTgwMiArMDEwMApAQCAtNzgsNjYgKzc4LDY0IEBACiAKICAgIGNvbmZp ZyA9IGNvbmZpZ19iZWdpbigidnVzYWdlYy5jb25mIik7CiAgICBpZiAoY29uZmlnID09IE5V TEwpCi0JICBmcHJpbnRmKHN0ZGVyciwgImNsaWVudF9jb25uZWN0OiB3YXJuaW5nOiBjb25m aWdfYmVnaW4gZmFpbGVkXG4iKTsKKwkgIHJldHVybiBOVUxMOwogCiAgICAvKgogCSAgRGlz YWJsZWQgY2hlY2sKICAgICovCiAKLSAgIGVsc2UgewotCSAgc3RyID0gY29uZmlnX2ZldGNo X2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIkRpc2FibGUiKTsKLQkgIGlmICgoc3RyKSAm JiAoKnN0cikpIHsKLQkJIGlmICghKHN0cmNhc2VjbXAoc3RyLCAiVHJ1ZSIpKSkgewotCQkJ Y29uZmlnX2tpbGwoY29uZmlnKTsKLQkJCXJldHVybiBOVUxMOwotCQkgfQotCSAgfQorICAg c3RyID0gY29uZmlnX2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIkRpc2FibGUi KTsKKyAgIGlmICgoc3RyKSAmJiAoKnN0cikpIHsKKwlpZiAoIShzdHJjYXNlY21wKHN0ciwg IlRydWUiKSkpIHsKKwkgICAgY29uZmlnX2tpbGwoY29uZmlnKTsKKwkgICAgcmV0dXJuIE5V TEw7CisJIH0KKyAgIH0KIAotCSAgLyoKLQkJIEdldCB0aW1lb3V0Ci0JICAqLwotCi0JICBz dHIgPSBjb25maWdfZmV0Y2hfYnlfbmFtZShjb25maWcsICJTZXJ2ZXIiLCAiVGltZW91dCIp OwotCSAgaWYgKHN0cikgewotCQkgZmwgPSBhdG9pKHN0cik7Ci0JCSBpZiAoKGZsID09IC0x KSB8fCAoZmwgPT0gMCkpCi0JCQlmcHJpbnRmKHN0ZGVyciwgImNsaWVudF9jb25uZWN0OiBj b25maWd1cmF0aW9uIGVycm9yOiBTZXJ2ZXI6OlRpbWVvdXQ6ICVzXG4iLCBzdHIpOwotCQkg ZWxzZQotCQkJdGltZW91dCA9IGZsOwotCSAgfQorICAgLyoKKwkgIEdldCB0aW1lb3V0Cisg ICAqLwogCi0JICAvKgotCQkgRGV0ZXJtaW5lIGNvbm5lY3Rpb24gdHlwZQotCSAgKi8KLQot CSAgc3RyID0gY29uZmlnX2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIlJlbW90 ZSIpOwotCSAgaWYgKHN0cikgewotCQkgcmV0ID0gaXBwcF9wYXJzZShzdHIsICZhZGRyKTsK LQkJIGlmICghcmV0KSB7Ci0JCQljb25maWdfa2lsbChjb25maWcpOwotCQkJZnByaW50Zihz dGRlcnIsICJjbGllbnRfY29ubmVjdDogY29uZmlndXJhdGlvbiBlcnJvcjogU2VydmVyOjpS ZW1vdGU6ICVzXG4iLCBzdHIpOwotCQkJcmV0dXJuIE5VTEw7Ci0JCSB9Ci0JICB9CisgICBz dHIgPSBjb25maWdfZmV0Y2hfYnlfbmFtZShjb25maWcsICJTZXJ2ZXIiLCAiVGltZW91dCIp OworICAgaWYgKHN0cikgeworCWZsID0gYXRvaShzdHIpOworCWlmICgoZmwgPT0gLTEpIHx8 IChmbCA9PSAwKSkKKwkgICAgZnByaW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDogY29u ZmlndXJhdGlvbiBlcnJvcjogU2VydmVyOjpUaW1lb3V0OiAlc1xuIiwgc3RyKTsKKwllbHNl CisJICAgIHRpbWVvdXQgPSBmbDsKKwl9CiAKLQkgIGVsc2UgewotCQkgc3RyID0gY29uZmln X2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIkZpbGVuYW1lIik7Ci0JCSBpZiAo c3RyKSB7Ci0JCQlpZiAoISgqc3RyKSkgewotCQkJICAgY29uZmlnX2tpbGwoY29uZmlnKTsK LQkJCSAgIGZwcmludGYoc3RkZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNvbmZpZ3VyYXRpb24g ZXJyb3I6IFNlcnZlcjo6RmlsZW5hbWVcbiIpOwotCQkJICAgcmV0dXJuIE5VTEw7Ci0JCQl9 Ci0KLQkJCWZsID0gc3RybGVuKHN0cik7Ci0JCQlpZiAoZmwgPj0gc2l6ZW9mKHNvY2tldF9m aWxlKSkKLQkJCSAgIGZsID0gKHNpemVvZihzb2NrZXRfZmlsZSkgLSAxKTsKKyAgIC8qCisJ ICBEZXRlcm1pbmUgY29ubmVjdGlvbiB0eXBlCisgICAqLwogCi0JCQltZW1jcHkoc29ja2V0 X2ZpbGUsIHN0ciwgZmwpOwotCQkgfQotCSAgfQorICAgc3RyID0gY29uZmlnX2ZldGNoX2J5 X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIlJlbW90ZSIpOworICAgaWYgKHN0cikgeworCXJl dCA9IGlwcHBfcGFyc2Uoc3RyLCAmYWRkcik7CisJaWYgKCFyZXQpIHsKKwkgICAgY29uZmln X2tpbGwoY29uZmlnKTsKKwkgICAgZnByaW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDog Y29uZmlndXJhdGlvbiBlcnJvcjogU2VydmVyOjpSZW1vdGU6ICVzXG4iLCBzdHIpOworCSAg ICByZXR1cm4gTlVMTDsKKwl9CisgICB9CisKKyAgIGVsc2UgeworCXN0ciA9IGNvbmZpZ19m ZXRjaF9ieV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJGaWxlbmFtZSIpOworCWlmIChzdHIp IHsKKwkgICAgaWYgKCEoKnN0cikpIHsKKwkJY29uZmlnX2tpbGwoY29uZmlnKTsKKwkJZnBy aW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDogY29uZmlndXJhdGlvbiBlcnJvcjogU2Vy dmVyOjpGaWxlbmFtZVxuIik7CisJCXJldHVybiBOVUxMOworCSAgICB9CisKKwkgICAgZmwg PSBzdHJsZW4oc3RyKTsKKwkgICAgaWYgKGZsID49IHNpemVvZihzb2NrZXRfZmlsZSkpCisJ CWZsID0gKHNpemVvZihzb2NrZXRfZmlsZSkgLSAxKTsKKworCSAgICBtZW1jcHkoc29ja2V0 X2ZpbGUsIHN0ciwgZmwpOworCX0KIAotCSAgY29uZmlnX2tpbGwoY29uZmlnKTsKKwljb25m aWdfa2lsbChjb25maWcpOwogICAgfQogCiAgICAvKgpkaWZmIC11UHIgdnBvcG1haWwtNS41 LjAub3JpZy9jb25mLmMgdnBvcG1haWwtNS41LjAvY29uZi5jCi0tLSB2cG9wbWFpbC01LjUu MC5vcmlnL2NvbmYuYwkyMDEwLTExLTA1IDE4OjM3OjIyLjAwMDAwMDAwMCArMDAwMAorKysg dnBvcG1haWwtNS41LjAvY29uZi5jCTIwMTUtMDktMTcgMTE6NDE6MDIuNzI2MDk1ODAyICsw MTAwCkBAIC03ODcsMTMgKzc4NywxMiBAQAogY2hhciAqY29uZmlnX2ZldGNoX2J5X251bShj b25maWdfdCAqYywgY2hhciAqbGFiZWwsIGludCBudW0pCiB7ICAKICAgaW50IGN1ciA9IDA7 CisgIGNvbmZpZ19sYWJlbF90ICpsID0gTlVMTDsKKyAgY29uZmlnX2F0b21fdCAqYSA9IE5V TEw7CiAKICAgaWYgKGMgPT0gTlVMTCkKIAkgcmV0dXJuIE5VTEw7CiAKLSAgY29uZmlnX2xh YmVsX3QgKmwgPSBOVUxMOwotICBjb25maWdfYXRvbV90ICphID0gTlVMTDsKLQogICBpZiAo Yy0+bGFiZWxzID09IE5VTEwpCiAgICAgIHJldHVybiBOVUxMOwogCmRpZmYgLXVQciB2cG9w bWFpbC01LjUuMC5vcmlnL2RvYy9VUEdSQURFIHZwb3BtYWlsLTUuNS4wL2RvYy9VUEdSQURF Ci0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL2RvYy9VUEdSQURFCTIwMTAtMTEtMDUgMTg6Mzc6 MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9kb2MvVVBHUkFERQkyMDE1 LTA5LTE3IDExOjQxOjAyLjcyNzA5NTc0NyArMDEwMApAQCAtNCw2ICs0LDE1IEBACiBpbnRv IHRoZSB2cG9wbWFpbCBsaWJyYXJpZXMuICBUaGVzZSBpbmNsdWRlIFFtYWlsQWRtaW4sIHFt YWlsLXNtdHBkIChpZiAKIHlvdSBoYXZlIHRoZSBjaGt1c2VyIHBhdGNoIGFwcGxpZWQpLCBD b3VyaWVyLUlNQVAgZXRjLgogCisrVXBncmFkaW5nIHRvIHZwb3BtYWlsLTUuNC4zMworKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKytJZiB5b3UgYXJlIHN0b3JpbmcgbGltaXRz IGluIE15U1FMLCB0aGUgZm9sbG93aW5nIHNjaGVtYSBjaGFuZ2VzIG11c3QgYmUgbWFkZToK KysKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBBREQgYGRpc2FibGVfbWFpbGRyb3BgIFRJTllJ TlQoMSkgREVGQVVMVCAnMCcgTk9UIE5VTEwgQUZURVIgYGRpc2FibGVfc3BhbWFzc2Fzc2lu YDsKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJRlkgYGRpc2txdW90YWAgQklHSU5UIFVO U0lHTkVEIE5PVCBOVUxMIERFRkFVTFQgMDsKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJ RlkgYG1heG1zZ2NvdW50YCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOwor K0FMVEVSIFRBQkxFIGBsaW1pdHNgIE1PRElGWSBgZGVmYXVsdHF1b3RhYCBCSUdJTlQgVU5T SUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOworK0FMVEVSIFRBQkxFIGBsaW1pdHNgIE1PRElG WSBgZGVmYXVsdG1heG1zZ2NvdW50YCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVM VCAwOwogCiBVcGdyYWRpbmcgdG8gdnBvcG1haWwtNS40LjE4CiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL21haWxkaXJxdW90 YS5jIHZwb3BtYWlsLTUuNS4wL21haWxkaXJxdW90YS5jCi0tLSB2cG9wbWFpbC01LjUuMC5v cmlnL21haWxkaXJxdW90YS5jCTIwMTAtMTEtMDUgMTg6Mzc6MjIuMDAwMDAwMDAwICswMDAw CisrKyB2cG9wbWFpbC01LjUuMC9tYWlsZGlycXVvdGEuYwkyMDE1LTA5LTE3IDExOjQxOjAy LjcyODA5NTY5NiArMDEwMApAQCAtNDIsMTYgKzQyLDE2IEBACiAKIC8qIHByaXZhdGUgZnVu Y3Rpb25zIC0gbm8gbmFtZSBjbGFzaGVzIHdpdGggY291cmllciAqLwogc3RhdGljIGNoYXIg Km1ha2VuZXdtYWlsZGlyc2l6ZW5hbWUoY29uc3QgY2hhciAqLCBpbnQgKik7Ci1zdGF0aWMg aW50IGNvdW50Y3VybmV3KGNvbnN0IGNoYXIgKmRpciwgdGltZV90ICptYXh0aW1lLCBvZmZf dCAqc2l6ZXAsIGludCAqY250cCk7Ci1zdGF0aWMgaW50IGNvdW50c3ViZGlyKGNvbnN0IGNo YXIgKmRpciwgY29uc3QgY2hhciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUsIG9mZl90ICpz aXplcCwgaW50ICpjbnRwKTsKK3N0YXRpYyBpbnQgY291bnRjdXJuZXcoY29uc3QgY2hhciAq ZGlyLCB0aW1lX3QgKm1heHRpbWUsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250 cCk7CitzdGF0aWMgaW50IGNvdW50c3ViZGlyKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hh ciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2Vf dCAqY250cCk7CiBzdGF0aWMgaW50IHN0YXRjdXJuZXcoY29uc3QgY2hhciAqZGlyLCB0aW1l X3QgKm1heHRpbWVzdGFtcCk7CiBzdGF0aWMgaW50IHN0YXRzdWJkaXIoY29uc3QgY2hhciAq ZGlyLCBjb25zdCBjaGFyICpzdWJkaXIsIHRpbWVfdCAqbWF4dGltZSk7CiBzdGF0aWMgaW50 IGRvYWRkcXVvdGEoY29uc3QgY2hhciAqZGlyLCBpbnQgbWFpbGRpcnNpemVfZmQsIGNvbnN0 IGNoYXIgKnF1b3RhX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbWFpbGRp cnNpemVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCwgaW50IGlzbmV3KTsKKyAgICAgICAg ICAgICAgICAgICAgICBzdG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1h aWxkaXJzaXplX2NudCwgaW50IGlzbmV3KTsKIHN0YXRpYyBpbnQgZG9jaGVja3F1b3RhKGNv bnN0IGNoYXIgKmRpciwgaW50ICptYWlsZGlyc2l6ZV9mZHB0ciwgY29uc3QgY2hhciAqcXVv dGFfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBsb25nIHh0cmFfc2l6ZSwgaW50 IHh0cmFfY250LCBpbnQgKnBlcmNlbnRhZ2UpOwotc3RhdGljIGludCBkb2NvdW50KGNvbnN0 IGNoYXIgKmRpciwgdGltZV90ICpkaXJzdGFtcCwgb2ZmX3QgKnNpemVwLCBpbnQgKmNudHAp Owotc3RhdGljIGludCBtYWlsZGlyX2NoZWNrcXVvdGEoY29uc3QgY2hhciAqZGlyLCBpbnQg Km1haWxkaXJzaXplX2ZkcHRyLCBjb25zdCBjaGFyICpxdW90YV90eXBlLCBsb25nIHh0cmFf c2l6ZSwgaW50IHh0cmFfY250KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Vf dCB4dHJhX3NpemUsIHN0b3JhZ2VfdCB4dHJhX2NudCwgaW50ICpwZXJjZW50YWdlKTsKK3N0 YXRpYyBpbnQgZG9jb3VudChjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAqZGlyc3RhbXAsIHN0 b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCk7CitzdGF0aWMgaW50IG1haWxkaXJf Y2hlY2txdW90YShjb25zdCBjaGFyICpkaXIsIGludCAqbWFpbGRpcnNpemVfZmRwdHIsIGNv bnN0IGNoYXIgKnF1b3RhX3R5cGUsIHN0b3JhZ2VfdCB4dHJhX3NpemUsIHN0b3JhZ2VfdCB4 dHJhX2NudCk7CiAvKiAgbW92ZWQgaW50byBtYWlsZGlycXVvdGEuaCBhcyBub24tc3RhdGlj CiBzdGF0aWMgaW50IG1haWxkaXJfYWRkcXVvdGEoY29uc3QgY2hhciAqZGlyLCBpbnQgbWFp bGRpcnNpemVfZmQsCiAJY29uc3QgY2hhciAqcXVvdGFfdHlwZSwgbG9uZyBtYWlsZGlyc2l6 ZV9zaXplLCBpbnQgbWFpbGRpcnNpemVfY250KTsKQEAgLTU5LDcgKzU5LDcgQEAKIHN0YXRp YyBpbnQgbWFpbGRpcl9zYWZlb3Blbihjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSwgaW50 IHBlcm0pOwogc3RhdGljIGNoYXIgKnN0cl9waWRfdChwaWRfdCB0LCBjaGFyICphcmcpOwog c3RhdGljIGNoYXIgKnN0cl90aW1lX3QodGltZV90IHQsIGNoYXIgKmFyZyk7Ci1zdGF0aWMg aW50IG1haWxkaXJfcGFyc2VxdW90YShjb25zdCBjaGFyICpuLCB1bnNpZ25lZCBsb25nICpz KTsKK3N0YXRpYyBpbnQgbWFpbGRpcl9wYXJzZXF1b3RhKGNvbnN0IGNoYXIgKm4sIHN0b3Jh Z2VfdCAqcyk7CiAKICNkZWZpbmUgIE5VTUJVRlNJWkUgICAgICA2MAogI2RlZmluZQlNRFFV T1RBX1NJWkUJJ1MnCS8qIFRvdGFsIHNpemUgb2YgYWxsIG1lc3NhZ2VzIGluIG1haWxkaXIg Ki8KQEAgLTc1LDEwICs3NSwxMSBAQAogY2hhcglkb21kaXJbTUFYX1BXX0RJUl07CiBjaGFy CSpwOwogY2hhcglkb21haW5bMjU2XSwgcWJbMjU2XSA9IHsgMCB9OwotbG9uZyAgICBzaXpl ID0gMDsKLXVuc2lnbmVkIGxvbmcgbWF4c2l6ZSA9IDA7Ci1pbnQJY250ID0gMCwgcmV0ID0g MDsKLWludAltYXhjbnQgPSAwOworc3RvcmFnZV90IHNpemUgPSAwOworc3RvcmFnZV90IG1h eHNpemUgPSAwOworc3RvcmFnZV90IGNudCA9IDA7CitpbnQgcmV0ID0gMDsKK3N0b3JhZ2Vf dCBtYXhjbnQgPSAwOwogc3RydWN0IHZsaW1pdHMgbGltaXRzOwogICAgc3RvcmFnZV90IHN1 c2FnZSA9IDAsIGN1c2FnZSA9IDA7CiAKQEAgLTE0NCw3ICsxNDUsNyBAQAogICAgICAgICBy ZXR1cm4gMDsKIH0KIAotaW50IHJlYWRkb21haW5xdW90YShjb25zdCBjaGFyICpkaXIsIGxv bmcgKnNpemVwLCBpbnQgKmNudHApCitpbnQgcmVhZGRvbWFpbnF1b3RhKGNvbnN0IGNoYXIg KmRpciwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKQogewogaW50IHRyaWVz OwogY2hhcgljaGVja2RpclsyNTZdOwpAQCAtMjA1LDcgKzIwNiw3IEBACiAJcmV0dXJuIDA7 CiB9CiAKLWludCB3cmFwcmVhZHVzZXJxdW90YShjb25zdCBjaGFyKiBkaXIsIG9mZl90ICpz aXplcCwgaW50ICpjbnRwKQoraW50IHdyYXByZWFkdXNlcnF1b3RhKGNvbnN0IGNoYXIqIGRp ciwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKQogewogdGltZV90CXRtOwog dGltZV90CW1heHRpbWU7CkBAIC0yODQsMTAgKzI4NSwxMCBAQAogCiAJcmV0dXJuIDA7CiB9 Ci1pbnQgcmVhZHVzZXJxdW90YShjb25zdCBjaGFyKiBkaXIsIGxvbmcgKnNpemVwLCBpbnQg KmNudHApCitpbnQgcmVhZHVzZXJxdW90YShjb25zdCBjaGFyKiBkaXIsIHN0b3JhZ2VfdCAq c2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIAlpbnQgcmV0dmFsOwotCW9mZl90IHM7CisJ c3RvcmFnZV90IHM7CiAJCiAJcyA9IChvZmZfdCkgKnNpemVwOwogCXJldHZhbCA9IHdyYXBy ZWFkdXNlcnF1b3RhKGRpciwgJnMsIGNudHApOwpAQCAtMzE1LDcgKzMxNiw3IEBACiAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAocXVvdGFmZCA+PSAwKSAgICAgICBjbG9zZShxdW90 YWZkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldF92YWx1ZSA9IDE7CiAgICAgICAg ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1haWxkaXJfYWRk cXVvdGEoZGlyLCBxdW90YWZkLCBxLCBzdGF0X2J1Zi5zdF9zaXplLCAxKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgIC8vbWFpbGRpcl9hZGRxdW90YShkaXIsIHF1b3RhZmQsIHEsIHN0 YXRfYnVmLnN0X3NpemUsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1b3Rh ZmQgPj0gMCkgICAgICAgY2xvc2UocXVvdGFmZCk7CiAgICAgICAgICAgICAgICAgICAgICAg ICByZXRfdmFsdWUgPSAwOwogICAgICAgICAgICAgICAgIH0KQEAgLTM0OSw4ICszNTAsOCBA QAogCiBzdGF0aWMgaW50IG1haWxkaXJzaXplX3JlYWQoY29uc3QgY2hhciAqZmlsZW5hbWUs CS8qIFRoZSBmaWxlbmFtZSAqLwogCWludCAqZmRwdHIsCS8qIEtlZXAgdGhlIGZpbGUgZGVz Y3JpcHRvciBvcGVuICovCi0Jb2ZmX3QgKnNpemVwdHIsCS8qIEdyYW5kIHRvdGFsIG9mIG1h aWxkaXIgc2l6ZSAqLwotCWludCAqY250cHRyLCAvKiBHcmFuZCB0b3RhbCBvZiBtZXNzYWdl IGNvdW50ICovCisJc3RvcmFnZV90ICpzaXplcHRyLCAvKiBHcmFuZCB0b3RhbCBvZiBtYWls ZGlyIHNpemUgKi8KKwlzdG9yYWdlX3QgKmNudHB0ciwgLyogR3JhbmQgdG90YWwgb2YgbWVz c2FnZSBjb3VudCAqLwogCXVuc2lnbmVkICpubGluZXMsIC8qICMgb2YgbGluZXMgaW4gbWFp bGRpcnNpemUgKi8KIAlzdHJ1Y3Qgc3RhdCAqc3RhdHB0cikJLyogVGhlIHN0YXRzIG9uIG1h aWxkaXJzaXplICovCiB7CkBAIC0zNTgsOCArMzU5LDkgQEAKICBpbnQgZjsKICBjaGFyICpw OwogIHVuc2lnbmVkIGw7Ci0gaW50IG47Cisgc3RvcmFnZV90IG47CiAgaW50IGZpcnN0Owor IGludCByZXQgPSAwOwogCiAgICAvKgogCSAgT2xkLXN0eWxlCkBAIC0zNzIsNiArMzc0LDE4 IEBACiAJcD1idWY7CiAJbD1zaXplb2YoYnVmKTsKIAorCS8qCisJCU1haWxkaXIrKyBzcGVj aWZpY2F0aW9uIHNheXMgdG8gcmVidWlsZCB0aGUgbWFpbGRpcnNpemUgZmlsZSBpZiB0aGUK KwkJZmlsZSBpcyA1MTIwIG9yIG1vcmUgYnl0ZXMsIG9yIGlzIG1vcmUgdGhhbiAxNSBtaW51 dGVzIG9sZAorCSovCisKKwlyZXQgPSBmc3RhdChmLCBzdGF0cHRyKTsKKwlpZiAoKHJldCAh PSAtMSkgJiYgKChzdGF0cHRyLT5zdF9zaXplID49IDUxMjApIHx8ICh0aW1lKE5VTEwpID4g c3RhdHB0ci0+c3RfbXRpbWUgKyAoMTUqNjApKSkpIHsKKwkgICB1bmxpbmsoZmlsZW5hbWUp OworCSAgIGNsb3NlKGYpOworCSAgIHJldHVybiAtMTsKKwl9CisKIAl3aGlsZSAobCkKIAl7 CiAJCW49cmVhZChmLCBwLCBsKTsKQEAgLTM4NCw3ICszOTgsNyBAQAogCQlwICs9IG47CiAJ CWwgLT0gbjsKIAl9Ci0JaWYgKGwgPT0gMCB8fCBmc3RhdChmLCBzdGF0cHRyKSkJLyogbWFp bGRpciB0b28gYmlnICovCisJaWYgKGwgPT0gMCB8fCByZXQpCS8qIG1haWxkaXIgdG9vIGJp ZyAqLwogCXsKIAkJY2xvc2UoZik7CiAJCXJldHVybiAoLTEpOwpAQCAtMzk4LDggKzQxMiw4 IEBACiAJZmlyc3Q9MTsKIAl3aGlsZSAoKnApCiAJewotCWxvbmcgbj0wOwotCWludCBjPTA7 CisJc3RvcmFnZV90IG49MDsKKwlzdG9yYWdlX3QgYz0wOwogCWNoYXIJKnE9cDsKIAogCQl3 aGlsZSAoKnApCkBAIC00MTQsNyArNDI4LDcgQEAKIAkJCWZpcnN0PTA7CiAJCQljb250aW51 ZTsKIAkJfQotCQlzc2NhbmYocSwgIiVsZCAlZCIsICZuLCAmYyk7CisJCXNzY2FuZihxLCAi JWxsdSAlbGx1IiwgJm4sICZjKTsKIAkJKnNpemVwdHIgKz0gbjsKIAkJKmNudHB0ciArPSBj OwogCQkrKyAqbmxpbmVzOwpAQCAtNDIzLDkgKzQzNyw5IEBACiAJcmV0dXJuICgwKTsKIH0K IAotc3RhdGljIGludCBxY2FsYyhvZmZfdCBzLCB1bnNpZ25lZCBuLCBjb25zdCBjaGFyICpx dW90YSwgaW50ICpwZXJjZW50YWdlKQorc3RhdGljIGludCBxY2FsYyhzdG9yYWdlX3Qgcywg c3RvcmFnZV90IG4sIGNvbnN0IGNoYXIgKnF1b3RhLCBpbnQgKnBlcmNlbnRhZ2UpCiB7Ci1v ZmZfdCBpOworc3RvcmFnZV90IGk7CiBpbnQJc3BlcmNlbnRhZ2U9MDsKIGludAlucGVyY2Vu dGFnZT0wOwogCkBAIC00NTAsNiArNDY0LDcgQEAKIAkJCQlyZXR1cm4gKC0xKTsKIAkJCX0K IAorI2lmIDAKIAkJCS8qCiAJCQkqKiBGb3IgaHVnZSBxdW90YXMsIG92ZXIgMjBtYiwKIAkJ CSoqIGRpdmlkZSBudW1lcmF0b3IgJiBkZW5vbWluYXRvciBieSAxMDI0IHRvIHByZXZlbnQK QEAgLTQ1OCw2ICs0NzMsNyBAQAogCiAJCQl4PTE7CiAJCQlpZiAoaSA+IDIwMDAwMDAwKSB4 PTEwMjQ7CisjZW5kaWYKIAogCQkJc3BlcmNlbnRhZ2UgPSBpID8gKHMveCkgKiAxMDAgLyAo aS94KToxMDA7CiAJCQlicmVhazsKQEAgLTQ2OSwxMCArNDg1LDEyIEBACiAJCQkJcmV0dXJu ICgtMSk7CiAJCQl9CiAKKyNpZiAwCiAJCQkvKiBEaXR0byAqLwogCiAJCQl4PTE7CiAJCQlp ZiAoaSA+IDIwMDAwMDAwKSB4PTEwMjQ7CisjZW5kaWYKIAogCQkJbnBlcmNlbnRhZ2UgPSBp ID8gKChvZmZfdCluL3gpICogMTAwIC8gKGkveCk6MTAwOwogCQkJYnJlYWs7CkBAIC00ODUs OCArNTAzLDggQEAKIHN0YXRpYyBpbnQgbWFpbGRpcl9jaGVja3F1b3RhKGNvbnN0IGNoYXIg KmRpciwKIAlpbnQgKm1haWxkaXJzaXplX2ZkcHRyLAogCWNvbnN0IGNoYXIgKnF1b3RhX3R5 cGUsCi0JbG9uZyB4dHJhX3NpemUsCi0JaW50IHh0cmFfY250KQorCXN0b3JhZ2VfdCB4dHJh X3NpemUsCisJc3RvcmFnZV90IHh0cmFfY250KQogewogaW50CWR1bW15LCByZXQgPSAwOwog CkBAIC00OTYsMTMgKzUxNCwyMSBAQAogCiAgICBmcHJpbnRmKHN0ZGVyciwgIndhcm5pbmc6 IHByb2dyYW0gdXNpbmcgZGVwcmVjYXRlZCBxdW90YSBmdW5jdGlvbiBhdCAlczolZFxuIiwg X19GSUxFX18sIF9fTElORV9fKTsKIAorICAgaWYgKCh4dHJhX3NpemUgPT0gMCkgfHwgKHh0 cmFfY250ID09IDApKQorCXJldHVybiAwOworCiAgICAvKgogCSAgUGluZyB0aGUgZGFlbW9u CiAgICAqLwogCiAgICByZXQgPSBjbGllbnRfcXVlcnlfcXVpY2soIiAiLCBOVUxMLCBOVUxM KTsKLSAgIGlmIChyZXQpCi0gICAgICByZXR1cm4gdm1haWxkaXJfcmVhZHF1b3RhKGRpciwg cXVvdGFfdHlwZSk7CisgICBpZiAocmV0KSB7CisgICAgICByZXQgPSB2bWFpbGRpcl9yZWFk cXVvdGEoZGlyLCBxdW90YV90eXBlKTsKKyAgICAgIGlmIChyZXQgPj0gMTAwKQorICAgICAg ICAgIHJldHVybiAtMTsKKworICAgICAgcmV0dXJuIDA7CisgICB9CiAKICAgIC8qCiAJICBG YWxsIGJhY2sKQEAgLTU3MCwxNiArNTk2LDE2IEBACiBzdGF0aWMgaW50IGRvY2hlY2txdW90 YShjb25zdCBjaGFyICpkaXIsCiAJaW50ICptYWlsZGlyc2l6ZV9mZHB0ciwKIAljb25zdCBj aGFyICpxdW90YV90eXBlLAotCWxvbmcgeHRyYV9zaXplLAotCWludCB4dHJhX2NudCwKKwlz dG9yYWdlX3QgeHRyYV9zaXplLAorCXN0b3JhZ2VfdCB4dHJhX2NudCwKIAlpbnQgKnBlcmNl bnRhZ2UpCiB7CiBjaGFyCSpjaGVja2ZvbGRlcj0oY2hhciAqKW1hbGxvYyhzdHJsZW4oZGly KStzaXplb2YoIi9tYWlsZGlyZm9sZGVyIikpOwogY2hhcgkqbmV3bWFpbGRpcnNpemVuYW1l Owogc3RydWN0IHN0YXQgc3RhdF9idWY7CiBpbnQJbWFpbGRpcnNpemVfZmQgPSAtMTsKLW9m Zl90CW1haWxkaXJzaXplX3NpemU7Ci1pbnQgICAgIG1haWxkaXJzaXplX2NudDsKK3N0b3Jh Z2VfdCBtYWlsZGlyc2l6ZV9zaXplOworc3RvcmFnZV90IG1haWxkaXJzaXplX2NudDsKIHVu c2lnbmVkIG1haWxkaXJzaXplX25saW5lczsKIGludAluOwogdGltZV90CXRtOwpAQCAtNzQ3 LDcgKzc3Myw3IEBACiB9CiAKIGludAltYWlsZGlyX2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRp ciwgaW50IG1haWxkaXJzaXplX2ZkLAotCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxvbmcg bWFpbGRpcnNpemVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCkKKwljb25zdCBjaGFyICpx dW90YV90eXBlLCBzdG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1haWxk aXJzaXplX2NudCkKIHsKICAgIGludCByZXQgPSAwOwogCkBAIC03NzYsNyArODAyLDcgQEAK IH0KIAogc3RhdGljIGludCBkb2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRpciwgaW50IG1haWxk aXJzaXplX2ZkLAotCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxvbmcgbWFpbGRpcnNpemVf c2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCwKKwljb25zdCBjaGFyICpxdW90YV90eXBlLCBz dG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1haWxkaXJzaXplX2NudCwK IAlpbnQgaXNuZXcpCiB7CiB1bmlvbgl7CkBAIC04NDUsOCArODcxLDcgQEAKIAkJbmlvdj0y OwogCX0KIAotCi0Jc3ByaW50Zih1LmJ1ZiwgIiVsZCAlZFxuIiwgbWFpbGRpcnNpemVfc2l6 ZSwgbWFpbGRpcnNpemVfY250KTsKKwlzcHJpbnRmKHUuYnVmLCAiJWxsdSAlbHVcbiIsIG1h aWxkaXJzaXplX3NpemUsIG1haWxkaXJzaXplX2NudCk7CiAJaW92W25pb3ZdLmlvdl9iYXNl PXUuYnVmOwogCWlvdltuaW92XS5pb3ZfbGVuPXN0cmxlbih1LmJ1Zik7CiAKQEAgLTk3NCw3 ICs5OTksNyBAQAogCXJldHVybiAobik7CiB9CiAKLXN0YXRpYyBpbnQgY291bnRjdXJuZXco Y29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKm1heHRpbWUsIG9mZl90ICpzaXplcCwgaW50ICpj bnRwKQorc3RhdGljIGludCBjb3VudGN1cm5ldyhjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAq bWF4dGltZSwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKQogewogY2hhcgkq cD0oY2hhciAqKW1hbGxvYyhzdHJsZW4oZGlyKSs1KTsKIGludAluOwpAQCAtOTkxLDcgKzEw MTYsNyBAQAogCXJldHVybiAobik7CiB9CiAKLXN0YXRpYyBpbnQgY291bnRzdWJkaXIoY29u c3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpzdWJkaXIsIHRpbWVfdCAqbWF4dGltZSwgb2Zm X3QgKnNpemVwLCBpbnQgKmNudHApCitzdGF0aWMgaW50IGNvdW50c3ViZGlyKGNvbnN0IGNo YXIgKmRpciwgY29uc3QgY2hhciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUsIHN0b3JhZ2Vf dCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIGNoYXIJKnA7CiBpbnQJbjsKQEAgLTEw MDgsMTMgKzEwMzMsMTMgQEAKIAlyZXR1cm4gKG4pOwogfQogCi1zdGF0aWMgaW50IGRvY291 bnQoY29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKmRpcnN0YW1wLCBvZmZfdCAqc2l6ZXAsIGlu dCAqY250cCkKK3N0YXRpYyBpbnQgZG9jb3VudChjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAq ZGlyc3RhbXAsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIHN0cnVj dAlzdGF0CXN0YXRfYnVmOwogY2hhcgkqcDsKIERJUgkqZGlycDsKIHN0cnVjdCBkaXJlbnQg KmRlOwotdW5zaWduZWQgbG9uZwlzOworc3RvcmFnZV90IHM7CiAKIAlpZiAoc3RhdChkaXIs ICZzdGF0X2J1ZikpCXJldHVybiAoMCk7CS8qIElnbm9yZSAqLwogCWlmIChzdGF0X2J1Zi5z dF9tdGltZSA+ICpkaXJzdGFtcCkJKmRpcnN0YW1wPXN0YXRfYnVmLnN0X210aW1lOwpAQCAt MTA0NCw3ICsxMDY5LDcgQEAKIAogCiAJCWlmIChtYWlsZGlyX3BhcnNlcXVvdGEobiwgJnMp ID09IDApCi0JCQlzdGF0X2J1Zi5zdF9zaXplPXM7CisJCQkqc2l6ZXAgKz0gczsKIAkJZWxz ZQogCQl7CiAJCQlwPShjaGFyICopbWFsbG9jKHN0cmxlbihkaXIpK3N0cmxlbihuKSsyKTsK QEAgLTEwNjAsOCArMTA4NSw4IEBACiAJCQkJY29udGludWU7CiAJCQl9CiAJCQlmcmVlKHAp OworCQkJKnNpemVwICs9IHN0YXRfYnVmLnN0X3NpemU7CiAJCX0KLQkJKnNpemVwICs9IHN0 YXRfYnVmLnN0X3NpemU7CiAJCSsrKmNudHA7CiAJfQogCkBAIC0xMTMyLDcgKzExNTcsNyBA QAogICAgICAgICByZXR1cm4gKHN0cmNweShhcmcsIHApKTsKIH0KIAotc3RhdGljIGludCBt YWlsZGlyX3BhcnNlcXVvdGEoY29uc3QgY2hhciAqbiwgdW5zaWduZWQgbG9uZyAqcykKK3N0 YXRpYyBpbnQgbWFpbGRpcl9wYXJzZXF1b3RhKGNvbnN0IGNoYXIgKm4sIHN0b3JhZ2VfdCAq cykKIHsKIGNvbnN0IGNoYXIgKm87CiBpbnQgICAgIHllczsKQEAgLTExNjQsNiArMTE4OSw3 IEBACiAgICAgICAgICAgICAgICAgKnM9MDsKICAgICAgICAgICAgICAgICB3aGlsZSAoKm8g Pj0gJzAnICYmICpvIDw9ICc5JykKICAgICAgICAgICAgICAgICAgICAgICAgICpzPSAqcyox MCArICgqbysrIC0gJzAnKTsKKwogICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CiAgICAg ICAgIH0KICAgICAgICAgcmV0dXJuICgtMSk7CmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5v cmlnL21haWxkaXJxdW90YS5oIHZwb3BtYWlsLTUuNS4wL21haWxkaXJxdW90YS5oCi0tLSB2 cG9wbWFpbC01LjUuMC5vcmlnL21haWxkaXJxdW90YS5oCTIwMTAtMTEtMDUgMTg6Mzc6MjIu MDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC9tYWlsZGlycXVvdGEuaAkyMDE1 LTA5LTE3IDExOjQxOjAyLjcyODA5NTY5NiArMDEwMApAQCAtOCw2ICs4LDggQEAKICAgIC1C aWxsIFNodXBwCiAgKi8KIAorI2luY2x1ZGUgInN0b3JhZ2UuaCIKKwogI2RlZmluZSBRVU9U QV9XQVJOX1BFUkNFTlQgOTAKIAogLyogSSd2ZSByZW1vdmVkIHByZXR0eSBtdWNoIHRoZSB3 aG9sZSBmaWxlIGV4ZWNlcHQgZm9yCkBAIC0xNSw4ICsxNyw4IEBACiAgICBJInZlIG1hZGUg dGhlIGNvdXJpZXIgZnVuY3Rpb25zIHN0YXRpYy4KICAgIC0gQnJpYW4gS29sYWNpCiAqLwot aW50IHJlYWRkb21haW5xdW90YShjb25zdCBjaGFyICpkaXIsIGxvbmcgKnNpemVwLCBpbnQg KmNudHApOwotaW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGlyLCBsb25nICpzaXpl cCwgaW50ICpjbnRwKTsKK2ludCByZWFkZG9tYWlucXVvdGEoY29uc3QgY2hhciAqZGlyLCBz dG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApOworaW50IHJlYWR1c2VycXVvdGEo Y29uc3QgY2hhciogZGlyLCBzdG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApOwog aW50IGRvbWFpbl9vdmVyX21haWxkaXJxdW90YShjb25zdCBjaGFyICp1c2VyZGlyKTsKIGlu dCB1c2VyX292ZXJfbWFpbGRpcnF1b3RhKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAq cXVvdGEpOwogaW50IHZtYWlsZGlyX3JlYWRxdW90YShjb25zdCBjaGFyICpkaXIsCWNvbnN0 IGNoYXIgKnF1b3RhKTsKQEAgLTI0LDUgKzI2LDUgQEAKIGludCBtYWlsZGlyX2FkZHF1b3Rh KGNvbnN0IGNoYXIgKiwJLyogUG9pbnRlciB0byB0aGUgbWFpbGRpciAqLwogCWludCwJLyog TXVzdCBiZSB0aGUgaW50IHBvaW50ZWQgdG8gYnkgMm5kIGFyZyB0byBjaGVja3F1b3RhICov CiAJY29uc3QgY2hhciAqLAkvKiBUaGUgcXVvdGEgKi8KLQlsb25nLAkvKiArLy0gYnl0ZXMg Ki8KLQlpbnQpOwkvKiArLy0gZmlsZXMgKi8KKwlzdG9yYWdlX3QsCS8qICsvLSBieXRlcyAq LworCXN0b3JhZ2VfdCk7CS8qICsvLSBmaWxlcyAqLwpkaWZmIC11UHIgdnBvcG1haWwtNS41 LjAub3JpZy92Y2hrcHcuYyB2cG9wbWFpbC01LjUuMC92Y2hrcHcuYwotLS0gdnBvcG1haWwt NS41LjAub3JpZy92Y2hrcHcuYwkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAwMCArMDAw MAorKysgdnBvcG1haWwtNS41LjAvdmNoa3B3LmMJMjAxNS0wOS0xNyAxMTo0MTowMi43Mjkw OTU2NTEgKzAxMDAKQEAgLTczMywyNiArNzMzLDI2IEBACiAKICAgaWYgKCAodmVycm9yID09 IFZMT0dfRVJST1JfUEFTU1dEKSAmJiAoIEVOQUJMRV9MT0dHSU5HPT0xIHx8IEVOQUJMRV9M T0dHSU5HPT0yIHx8IEVOQUJMRV9MT0dHSU5HPT0zIHx8IEVOQUJMRV9MT0dHSU5HPT00ICkg KSB7CiAgICAgICBpZiAoIChsb2dzcWwodmVycm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRo ZVBhc3MsIFRoZU5hbWUsIElwQWRkciwgTG9nTGluZSkgKSAhPSAwICkgewotICAgICAgICAg IHN5c2xvZyhMT0dfTk9USUNFLCJ2Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7Cisg ICAgICAgICAgc3lzbG9nKExPR19OT1RJQ0UsIiVzIiwidmNoa3B3OiBjYW4ndCB3cml0ZSBT UUwgbG9ncyIpOwogICAgICAgfQogICAgICAgaWYgKCAobG9nc3FsKHZlcnJvciwgVGhlVXNl ciwgVGhlRG9tYWluLCBUaGVQYXNzLCBUaGVOYW1lLCBJcEFkZHIsIExvZ0xpbmUpICkgIT0g MCApIHsKLSAgICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBjYW4ndCB3cml0 ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIlcyIsInZjaGtw dzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNlIGlmICggdmVy cm9yID09IFZMT0dfRVJST1JfSU5URVJOQUwgKSB7CiAgICAgICBpZiAoIChsb2dzcWwodmVy cm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRkciwgTG9n TGluZSkgKSAhPSAwICkgewotICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBj YW4ndCB3cml0ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIl cyIsInZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNl IGlmICggdmVycm9yID09IFZMT0dfRVJST1JfTE9HT04gKSB7CiAgICAgICBpZiAoIChsb2dz cWwodmVycm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRk ciwgTG9nTGluZSkgKSAhPSAwICkgewotICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNo a3B3OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9U SUNFLCIlcyIsInZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAg fSBlbHNlIGlmICggdmVycm9yID09IFZMT0dfRVJST1JfQUNDRVNTICkgewogICAgICAgaWYg KCAobG9nc3FsKHZlcnJvciwgVGhlVXNlciwgVGhlRG9tYWluLCBUaGVQYXNzLCBUaGVOYW1l LCBJcEFkZHIsIExvZ0xpbmUpICkgIT0gMCApIHsKLSAgICAgICAgc3lzbG9nKExPR19OT1RJ Q0UsInZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKKyAgICAgICAgICBzeXNsb2co TE9HX05PVElDRSwiJXMiLCJ2Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CiAgICAg ICB9CiAgIH0gZWxzZSBpZiAoIHZlcnJvciA9PSBWTE9HX0FVVEggJiYgKCBFTkFCTEVfTE9H R0lORyA9PSAxIHx8IEVOQUJMRV9MT0dHSU5HID09IDQgKSApIHsKICAgICAgIGlmICggKGxv Z3NxbCh2ZXJyb3IsIFRoZVVzZXIsIFRoZURvbWFpbiwgVGhlUGFzcywgVGhlTmFtZSwgSXBB ZGRyLCBMb2dMaW5lKSApICE9IDAgKSB7Ci0gICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCJ2 Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CisgICAgICAgICAgc3lzbG9nKExPR19O T1RJQ0UsIiVzIiwidmNoa3B3OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOwogICAgICAgfQog ICB9CiAjZW5kaWYKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmRlbGRvbWFpbi5j IHZwb3BtYWlsLTUuNS4wL3ZkZWxkb21haW4uYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92 ZGVsZG9tYWluLmMJMjAxMC0xMS0wNSAxODozNzoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHZw b3BtYWlsLTUuNS4wL3ZkZWxkb21haW4uYwkyMDE1LTA5LTE3IDExOjQxOjAyLjcyOTA5NTY1 MSArMDEwMApAQCAtNDMsOSArNDMsOSBAQAogIGludCBlcnI9MDsKIAogIGRvbWFpbl9lbnRy eSAqZW50cnk7Ci0gY2hhciAqYWxpYXNlc1tNQVhfRE9NX0FMSUFTXTsKKyBzdHJpbmdfbGlz dCBhbGlhc2VzOwogIGNoYXIgcGFyZW50W01BWF9CVUZGXTsKLSBpbnQgIGksIGFsaWFzY291 bnQ9MCwgZG9pdD0xOworIGludCAgaSwgZG9pdD0xOwogCiAgICBlcnIgPSB2YXV0aF9sb2Fk X21vZHVsZShOVUxMKTsKICAgIGlmICghZXJyKQpAQCAtNjksOSArNjksMTEgQEAKIAkJfQog CX0KIAorCXN0cmluZ19saXN0X2luaXQoJmFsaWFzZXMsIDEwKTsKKwogCXdoaWxlKCBlbnRy eSApIHsKIAkJaWYgKHN0cmNtcChlbnRyeS0+ZG9tYWluLCBlbnRyeS0+cmVhbGRvbWFpbikg IT0gMCkgewotCQkJYWxpYXNlc1thbGlhc2NvdW50KytdID0gc3RyZHVwKGVudHJ5LT5kb21h aW4pOworCQkJc3RyaW5nX2xpc3RfYWRkKCZhbGlhc2VzLCBlbnRyeS0+ZG9tYWluKTsKIAkJ fSBlbHNlIHsKIAkJCXNucHJpbnRmKHBhcmVudCxzaXplb2YocGFyZW50KSwiJXMiLGVudHJ5 LT5kb21haW4pOwogCQl9CkBAIC03OSw3ICs4MSw3IEBACiAJCWVudHJ5ID0gZ2V0X2RvbWFp bl9lbnRyaWVzKE5VTEwpOwogCX0KIAotCWlmKCBhbGlhc2NvdW50ID4gMCAmJiAwID09IHN0 cm5jbXAoRG9tYWluLHBhcmVudCxNQVhfQlVGRikpIHsgIAorCWlmKCBhbGlhc2VzLmNvdW50 ID4gMCAmJiAwID09IHN0cm5jbXAoRG9tYWluLHBhcmVudCxNQVhfQlVGRikpIHsgIAogCQkv LyAgSGF2ZSBhbGlhc2VzCiAJCWlmKCBmb3JjZSApIHsKIAkJCXByaW50ZigiV2FybmluZzog QWxpYXMgZG9tYWlucyBkZWxldGVkOlxuIik7CkBAIC04OCwxMiArOTAsMTMgQEAKIAkJCWRv aXQ9MDsKIAkJfQogCi0JCWZvcihpPTA7aTxhbGlhc2NvdW50O2krKykgewotCQkJcHJpbnRm ICgiICAgJXNcbiIsIGFsaWFzZXNbaV0pOwotCQkJZnJlZSggYWxpYXNlc1tpXSApOworCQlm b3IoaT0wO2k8YWxpYXNlcy5jb3VudDtpKyspIHsKKwkJCXByaW50ZiAoIiAgICVzXG4iLCBh bGlhc2VzLnZhbHVlc1tpXSk7CiAJCX0gCiAJfQogCisJc3RyaW5nX2xpc3RfZnJlZSgmYWxp YXNlcyk7CisKICAgICAgICAgaWYoIGRvaXQgKSB7CiAJaWYgKCAoZXJyPXZkZWxkb21haW4o RG9tYWluKSkgIT0gVkFfU1VDQ0VTUykgewogCQlwcmludGYoIkVycm9yOiAlc1xuIiwgdmVy cm9yKGVycikpOwpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92ZG9taW5mby5jIHZw b3BtYWlsLTUuNS4wL3Zkb21pbmZvLmMKLS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmRvbWlu Zm8uYwkyMDEwLTExLTA1IDE4OjM3OjIzLjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwt NS41LjAvdmRvbWluZm8uYwkyMDE1LTA5LTE3IDExOjU0OjQyLjE0ODA5NjUwMSArMDEwMApA QCAtMjQ4LDggKzI0OCw4IEBACiB2b2lkIGRpc3BsYXlfb25lX2RvbWFpbiggY2hhciAqIERv bWFpbiApCiB7CiAgZG9tYWluX2VudHJ5ICplbnRyeTsKLSBjaGFyICphbGlhc2VzW01BWF9E T01fQUxJQVNdOwotIGludCAgaSwgYWxpYXNjb3VudD0wOworIHN0cmluZ19saXN0IGFsaWFz ZXM7CisgaW50ICBpOwogCiAgICAgZW50cnkgPSBnZXRfZG9tYWluX2VudHJpZXMoIERvbWFp biApOwogICAgIGlmIChlbnRyeT09TlVMTCkgewpAQCAtMjYyLDExICsyNjIsMTMgQEAKICAg ICAgIH0KICAgICB9CiAKKyAgICBzdHJpbmdfbGlzdF9pbml0KCZhbGlhc2VzLCAxMCk7CisK ICAgICB3aGlsZSggZW50cnkgKSB7CiAJaWYgKHN0cmNtcChlbnRyeS0+ZG9tYWluLCBlbnRy eS0+cmVhbGRvbWFpbikgIT0gMCkgewogLy8gCQlwcmludGYgKCJOb3RlOiAgICVzIGlzIGFu IGFsaWFzIGZvciAlc1xuIiwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5k b21haW4sIGVudHJ5LT5yZWFsZG9tYWluKTsKLSAgICAgICAgICAgICAgICBhbGlhc2VzW2Fs aWFzY291bnQrK10gPSBzdHJkdXAoZW50cnktPmRvbWFpbik7CisgICAgICAgICAgICAgICAg c3RyaW5nX2xpc3RfYWRkKCZhbGlhc2VzLCBlbnRyeS0+ZG9tYWluKTsKIAogICAgICAgICB9 IGVsc2UgewogCQlkaXNwbGF5X2RvbWFpbihlbnRyeS0+ZG9tYWluLCBlbnRyeS0+cGF0aCwg ZW50cnktPnVpZCwgCkBAIC0yNzYsOSArMjc4LDkgQEAKICAgICAgICAgZW50cnkgPSBnZXRf ZG9tYWluX2VudHJpZXMoTlVMTCk7CiAgICAgfQogCi0gICAgZm9yKGk9MDtpPGFsaWFzY291 bnQ7aSsrKSB7Ci0gCXByaW50ZiAoImFsaWFzOiAgJXNcbiIsIGFsaWFzZXNbaV0pOwotICAg ICAgICBmcmVlKCBhbGlhc2VzW2ldICk7Ci0gICAgfSAKKyAgICBmb3IoaT0wO2k8YWxpYXNl cy5jb3VudDtpKyspIHsKKyAJcHJpbnRmICgiYWxpYXM6ICAlc1xuIiwgYWxpYXNlcy52YWx1 ZXNbaV0pOworICAgIH0KKyAgICBzdHJpbmdfbGlzdF9mcmVlKCZhbGlhc2VzKTsgCiB9CiAK ZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmxpbWl0cy5jIHZwb3BtYWlsLTUuNS4w L3ZsaW1pdHMuYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92bGltaXRzLmMJMjAxMC0xMS0w NSAxODozNzoyMy4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3ZsaW1pdHMu YwkyMDE1LTA5LTE3IDExOjQxOjAyLjczMDA5NTYwNiArMDEwMApAQCAtMTg3LDIyICsxODcs MjIgQEAKIAogCQkJZWxzZSBpZiAoIXN0cmNtcChzMSwgInF1b3RhIikpIHsKICAgICAgICAg ICAgICAgICBpZiAoczIpCi0gICAgICAgICAgICAgICAgbGltaXRzLT5kaXNrcXVvdGEgPSBh dG9pKHMyKTsKKyAgICAgICAgICAgICAgICBsaW1pdHMtPmRpc2txdW90YSA9IHN0cnRvbGwo czIsIE5VTEwsIDEwKTsKICAgICAgICAgICAgIH0KIAogCQkJZWxzZSBpZiAoIXN0cmNtcChz MSwgIm1heG1zZ2NvdW50IikpIHsKICAgICAgICAgICAgICAgICBpZiAoczIpCi0gICAgICAg ICAgICAgICAgbGltaXRzLT5tYXhtc2djb3VudCA9IGF0b2koczIpOworICAgICAgICAgICAg ICAgIGxpbWl0cy0+bWF4bXNnY291bnQgPSBzdHJ0b2xsKHMyLCBOVUxMLCAxMCk7CiAgICAg ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghc3RyY21wKHMxLCAiZGVmYXVsdF9xdW90 YSIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHMyKQotICAgICAgICAgICAgICAgIGxpbWl0 cy0+ZGVmYXVsdHF1b3RhID0gYXRvaShzMik7CisgICAgICAgICAgICAgICAgbGltaXRzLT5k ZWZhdWx0cXVvdGEgPSBzdHJ0b2xsKHMyLCBOVUxMLCAxMCk7CiAgICAgICAgICAgICB9CiAK IAkJCWVsc2UgaWYgKCFzdHJjbXAoczEsICJkZWZhdWx0X21heG1zZ2NvdW50IikpIHsKICAg ICAgICAgICAgICAgICBpZiAoczIpCi0gICAgICAgICAgICAgICAgbGltaXRzLT5kZWZhdWx0 bWF4bXNnY291bnQgPSBhdG9pKHMyKTsKKyAgICAgICAgICAgICAgICBsaW1pdHMtPmRlZmF1 bHRtYXhtc2djb3VudCA9IHN0cnRvbGwoczIsIE5VTEwsIDEwKTsKICAgICAgICAgICAgIH0K IAogCQkJZWxzZSBpZiAoIXN0cmNtcChzMSwgImRpc2FibGVfcG9wIikpIHsKQEAgLTQ4MCwx MCArNDgwLDEwIEBACiAgICAgICAgIGZwcmludGYoZnMsICJtYXhmb3J3YXJkczogJWRcbiIs IGxpbWl0cy0+bWF4Zm9yd2FyZHMpOwogICAgICAgICBmcHJpbnRmKGZzLCAibWF4YXV0b3Jl c3BvbmRlcnM6ICVkXG4iLCBsaW1pdHMtPm1heGF1dG9yZXNwb25kZXJzKTsKICAgICAgICAg ZnByaW50ZihmcywgIm1heG1haWxpbmdsaXN0czogJWRcbiIsIGxpbWl0cy0+bWF4bWFpbGlu Z2xpc3RzKTsKLSAgICAgICAgZnByaW50ZihmcywgInF1b3RhOiAlZFxuIiwgbGltaXRzLT5k aXNrcXVvdGEpOwotICAgICAgICBmcHJpbnRmKGZzLCAibWF4bXNnY291bnQ6ICVkXG4iLCBs aW1pdHMtPm1heG1zZ2NvdW50KTsKLSAgICAgICAgZnByaW50ZihmcywgImRlZmF1bHRfcXVv dGE6ICVkXG4iLCBsaW1pdHMtPmRlZmF1bHRxdW90YSk7Ci0gICAgICAgIGZwcmludGYoZnMs ICJkZWZhdWx0X21heG1zZ2NvdW50OiAlZFxuIiwgbGltaXRzLT5kZWZhdWx0bWF4bXNnY291 bnQpOworICAgICAgICBmcHJpbnRmKGZzLCAicXVvdGE6ICVsbHVcbiIsIGxpbWl0cy0+ZGlz a3F1b3RhKTsKKyAgICAgICAgZnByaW50ZihmcywgIm1heG1zZ2NvdW50OiAlbGx1XG4iLCBs aW1pdHMtPm1heG1zZ2NvdW50KTsKKyAgICAgICAgZnByaW50ZihmcywgImRlZmF1bHRfcXVv dGE6ICVsbHVcbiIsIGxpbWl0cy0+ZGVmYXVsdHF1b3RhKTsKKyAgICAgICAgZnByaW50Zihm cywgImRlZmF1bHRfbWF4bXNnY291bnQ6ICVsbHVcbiIsIGxpbWl0cy0+ZGVmYXVsdG1heG1z Z2NvdW50KTsKICAgICAgICAgaWYgKGxpbWl0cy0+ZGlzYWJsZV9wb3ApIGZwcmludGYoZnMs ICJkaXNhYmxlX3BvcFxuIik7CiAgICAgICAgIGlmIChsaW1pdHMtPmRpc2FibGVfaW1hcCkg ZnByaW50ZihmcywgImRpc2FibGVfaW1hcFxuIik7CiAgICAgICAgIGlmIChsaW1pdHMtPmRp c2FibGVfZGlhbHVwKSBmcHJpbnRmKGZzLCAiZGlzYWJsZV9kaWFsdXBcbiIpOwpkaWZmIC11 UHIgdnBvcG1haWwtNS41LjAub3JpZy92bGltaXRzLmggdnBvcG1haWwtNS41LjAvdmxpbWl0 cy5oCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3ZsaW1pdHMuaAkyMDEwLTExLTA1IDE4OjM3 OjIyLjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdmxpbWl0cy5oCTIwMTUt MDktMTcgMTE6NDE6MDIuNzMxMDk1NTY2ICswMTAwCkBAIC0yMCw2ICsyMCw4IEBACiAjZGVm aW5lIFZMSU1JVF9ESVNBQkxFX0FMTCAoVkxJTUlUX0RJU0FCTEVfQ1JFQVRFfFZMSU1JVF9E SVNBQkxFX01PRElGWXxWTElNSVRfRElTQUJMRV9ERUxFVEUpCiAjZGVmaW5lIFZMSU1JVF9E SVNBQkxFX0JJVFMgMwogCisjaW5jbHVkZSAic3RvcmFnZS5oIgorCiBzdHJ1Y3QgdmxpbWl0 cyB7CiAgICAgICAvKiBtYXggc2VydmljZSBsaW1pdHMgKi8KICAgICAgIGludCAgICAgICBt YXhwb3BhY2NvdW50czsKQEAgLTI5LDEwICszMSwxMCBAQAogICAgICAgaW50ICAgICAgIG1h eG1haWxpbmdsaXN0czsKIAogICAgICAgLyogcXVvdGEgJiBtZXNzYWdlIGNvdW50IGxpbWl0 cyAqLwotICAgICAgaW50ICAgICAgIGRpc2txdW90YTsKLSAgICAgIGludCAgICAgICBtYXht c2djb3VudDsKLSAgICAgIGludCAgICAgICBkZWZhdWx0cXVvdGE7Ci0gICAgICBpbnQgICAg ICAgZGVmYXVsdG1heG1zZ2NvdW50OworICAgICAgc3RvcmFnZV90IGRpc2txdW90YTsKKyAg ICAgIHN0b3JhZ2VfdCBtYXhtc2djb3VudDsKKyAgICAgIHN0b3JhZ2VfdCBkZWZhdWx0cXVv dGE7CisgICAgICBzdG9yYWdlX3QgZGVmYXVsdG1heG1zZ2NvdW50OwogCiAgICAgICAvKiB0 aGUgZm9sbG93aW5nIGFyZSAwIChmYWxzZSkgb3IgMSAodHJ1ZSkgKi8KICAgICAgIHNob3J0 ICAgICBkaXNhYmxlX3BvcDsKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdmxpc3Rs aWIuYyB2cG9wbWFpbC01LjUuMC92bGlzdGxpYi5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmln L3ZsaXN0bGliLmMJMjAxMC0xMS0wNSAxODozNzoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHZw b3BtYWlsLTUuNS4wL3ZsaXN0bGliLmMJMjAxNS0wOS0xNyAxMTo0MTowMi43MzIwOTU1Mjgg KzAxMDAKQEAgLTE5Myw4ICsxOTMsOCBAQAogCiAgICAgaWYoIERvbWFpbk9ubHkgKSB7ICAg IC8vICAgSGF2ZSBkb21haW4KICAgICAgICAgaWYgKCBzdHJzdHIoIEFkZHJlc3MsICJAIikg IT0gTlVMTCApIHJldHVybig0KTsKLSAgICAgICAgc25wcmludGYoIExJLT5OYW1lLCAgIE1B WF9GSUxFX05BTUUsICIlcyIsICIiICk7Ci0gICAgICAgIHNucHJpbnRmKCBMSS0+RG9tYWlu LCBNQVhfRklMRV9OQU1FLCAiJXMiLCBBZGRyZXNzICk7CisgICAgICAgIHNucHJpbnRmKCBM SS0+TmFtZSwgICBzaXplb2YoTEktPk5hbWUpLCAiJXMiLCAiIiApOworICAgICAgICBzbnBy aW50ZiggTEktPkRvbWFpbiwgc2l6ZW9mKExJLT5Eb21haW4pLCAiJXMiLCBBZGRyZXNzICk7 CiAgICAgfQogCiAgICAgZWxzZSB7ICAgICAgICAgICAgICAgIC8vICAgSGF2ZSBtYWlsIGxp c3QKQEAgLTIwNiwxMyArMjA2LDEzIEBACiAKICAgICBpZigoIExJLT5lbnRyeSA9IGdldF9k b21haW5fZW50cmllcyggTEktPkRvbWFpbiApKSA9PSBOVUxMICkgcmV0dXJuKDMpOwogCi0g ICAgc25wcmludGYoIExJLT5Pd25lckVtYWlsLCAgIE1BWF9GSUxFX05BTUUsICJwb3N0bWFz dGVyQCVzIiwgTEktPkRvbWFpbiApOyAKLSAgICBzbnByaW50ZiggTEktPlJlcGx5VG9fQWRk ciwgTUFYX0ZJTEVfTkFNRSwgIiVzIiwgIiIgKTsKLSAgICBzbnByaW50ZiggTEktPlNRTEJh c2UsICAgICAgTUFYX0ZJTEVfTkFNRSwgImV6bWxtIiApOwotICAgIHNucHJpbnRmKCBMSS0+ U1FMSG9zdCwgICAgICBNQVhfRklMRV9OQU1FLCAibG9jYWxob3N0IiApOwotICAgIHNucHJp bnRmKCBMSS0+U1FMUGFzcywgICAgICBNQVhfRklMRV9OQU1FLCAiZGJwYXNzIiApOwotICAg IHNucHJpbnRmKCBMSS0+U1FMVGFibGUsICAgICBNQVhfRklMRV9OQU1FLCAiZXptbG0iICk7 Ci0gICAgc25wcmludGYoIExJLT5TUUxVc2VyLCAgICAgIE1BWF9GSUxFX05BTUUsICJkYlVz ZXIiICk7CisgICAgc25wcmludGYoIExJLT5Pd25lckVtYWlsLCAgIHNpemVvZihMSS0+T3du ZXJFbWFpbCksICJwb3N0bWFzdGVyQCVzIiwgTEktPkRvbWFpbiApOyAKKyAgICBzbnByaW50 ZiggTEktPlJlcGx5VG9fQWRkciwgc2l6ZW9mKExJLT5SZXBseVRvX0FkZHIpLCAiJXMiLCAi IiApOworICAgIHNucHJpbnRmKCBMSS0+U1FMQmFzZSwgICAgICBzaXplb2YoTEktPlNRTEJh c2UpLCAiZXptbG0iICk7CisgICAgc25wcmludGYoIExJLT5TUUxIb3N0LCAgICAgIHNpemVv ZihMSS0+U1FMSG9zdCksICJsb2NhbGhvc3QiICk7CisgICAgc25wcmludGYoIExJLT5TUUxQ YXNzLCAgICAgIHNpemVvZihMSS0+U1FMUGFzcyksICJkYnBhc3MiICk7CisgICAgc25wcmlu dGYoIExJLT5TUUxUYWJsZSwgICAgIHNpemVvZihMSS0+U1FMVGFibGUpLCAiZXptbG0iICk7 CisgICAgc25wcmludGYoIExJLT5TUUxVc2VyLCAgICAgIHNpemVvZihMSS0+U1FMVXNlciks ICJkYlVzZXIiICk7CiAKIC8vICAgIHByaW50ZiggImJlZm9yZSBtYWtlIG5hbWVcbiIgKTsK IApkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92bW9kZG9tbGltaXRzLmMgdnBvcG1h aWwtNS41LjAvdm1vZGRvbWxpbWl0cy5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Ztb2Rk b21saW1pdHMuYwkyMDEwLTExLTA1IDE4OjM3OjIyLjAwMDAwMDAwMCArMDAwMAorKysgdnBv cG1haWwtNS41LjAvdm1vZGRvbWxpbWl0cy5jCTIwMTUtMDktMTcgMTE6NDE6MDIuNzMyMDk1 NTI4ICswMTAwCkBAIC0yMTIsMTAgKzIxMiwxMCBAQAogICAgICAgICAgICAgcHJpbnRmICgo bGltaXRzLnBlcm1fZGVmYXVsdHF1b3RhICYgVkxJTUlUX0RJU0FCTEVfREVMRVRFID8gIkRF TllfREVMRVRFICAiIDoiQUxMT1dfREVMRVRFICIpICk7CiAgICAgICAgICAgICAKICAgICAg ICAgICAgIHByaW50ZigiXG4iKTsKLSAgICAgICAgICAgIHByaW50ZigiRG9tYWluIFF1b3Rh OiAlZCBNQlxuIiwgbGltaXRzLmRpc2txdW90YSk7Ci0gICAgICAgICAgICBwcmludGYoIkRl ZmF1bHQgVXNlciBRdW90YTogJWQgYnl0ZXNcbiIsIGxpbWl0cy5kZWZhdWx0cXVvdGEpOwot ICAgICAgICAgICAgcHJpbnRmKCJNYXggRG9tYWluIE1lc3NhZ2VzOiAlZFxuIiwgbGltaXRz Lm1heG1zZ2NvdW50KTsKLSAgICAgICAgICAgIHByaW50ZigiRGVmYXVsdCBNYXggTWVzc2Fn ZXMgcGVyIFVzZXI6ICVkXG4iLCBsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsKKyAgICAg ICAgICAgIHByaW50ZigiRG9tYWluIFF1b3RhOiAlbGx1IE1CXG4iLCBsaW1pdHMuZGlza3F1 b3RhKTsKKyAgICAgICAgICAgIHByaW50ZigiRGVmYXVsdCBVc2VyIFF1b3RhOiAlbGx1IGJ5 dGVzXG4iLCBsaW1pdHMuZGVmYXVsdHF1b3RhKTsKKyAgICAgICAgICAgIHByaW50ZigiTWF4 IERvbWFpbiBNZXNzYWdlczogJWxsdVxuIiwgbGltaXRzLm1heG1zZ2NvdW50KTsKKyAgICAg ICAgICAgIHByaW50ZigiRGVmYXVsdCBNYXggTWVzc2FnZXMgcGVyIFVzZXI6ICVsbHVcbiIs IGxpbWl0cy5kZWZhdWx0bWF4bXNnY291bnQpOwogICAgICAgICAgICAgcmV0dXJuKHZleGl0 KDApKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMjM3LDE2ICsyMzcsMTYg QEAKICAgICAgICAgCiAgICAgICAgIC8qIHF1b3RhICYgbWVzc2FnZSBjb3VudCBsaW1pdHMg Ki8KICAgICAgICAgaWYgKERvbWFpblF1b3RhWzBdICE9IDApIHsKLSAgICAgICAgICAgIGxp bWl0cy5kaXNrcXVvdGEgPSBhdG9pKERvbWFpblF1b3RhKTsKKyAgICAgICAgICAgIGxpbWl0 cy5kaXNrcXVvdGEgPSBzdHJ0b2xsKERvbWFpblF1b3RhLCBOVUxMLCAxMCk7CiAgICAgICAg IH0KICAgICAgICAgaWYgKERvbWFpbk1heE1zZ0NvdW50WzBdICE9IDApIHsKLSAgICAgICAg ICAgIGxpbWl0cy5tYXhtc2djb3VudCA9IGF0b2koRG9tYWluTWF4TXNnQ291bnQpOworICAg ICAgICAgICAgbGltaXRzLm1heG1zZ2NvdW50ID0gc3RydG9sbChEb21haW5NYXhNc2dDb3Vu dCwgTlVMTCwgMTApOwogICAgICAgICB9CiAgICAgICAgIGlmIChEZWZhdWx0VXNlclF1b3Rh WzBdICE9IDApIHsKLSAgICAgICAgICAgIGxpbWl0cy5kZWZhdWx0cXVvdGEgPSBhdG9pKGZv cm1hdF9tYWlsZGlycXVvdGEoRGVmYXVsdFVzZXJRdW90YSkpOworICAgICAgICAgICAgbGlt aXRzLmRlZmF1bHRxdW90YSA9IHN0cnRvbGwoZm9ybWF0X21haWxkaXJxdW90YShEZWZhdWx0 VXNlclF1b3RhKSwgTlVMTCwgMTApOwogICAgICAgICB9CiAgICAgICAgIGlmIChEZWZhdWx0 VXNlck1heE1zZ0NvdW50WzBdICE9IDApIHsKLSAgICAgICAgICAgIGxpbWl0cy5kZWZhdWx0 bWF4bXNnY291bnQgPSBhdG9pKERlZmF1bHRVc2VyTWF4TXNnQ291bnQpOworICAgICAgICAg ICAgbGltaXRzLmRlZmF1bHRtYXhtc2djb3VudCA9IHN0cnRvbGwoRGVmYXVsdFVzZXJNYXhN c2dDb3VudCwgTlVMTCwgMTApOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo R2lkRmxhZyA9PSAxKSB7CmRpZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Zwb3BtYWls LmMgdnBvcG1haWwtNS41LjAvdnBvcG1haWwuYwotLS0gdnBvcG1haWwtNS41LjAub3JpZy92 cG9wbWFpbC5jCTIwMTAtMTEtMDUgMTg6Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9w bWFpbC01LjUuMC92cG9wbWFpbC5jCTIwMTUtMDktMTcgMTE6NTk6MDYuMjIwMDk0NjM1ICsw MTAwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAidmF1dGguaCIKICNpbmNsdWRlICJ2 bGltaXRzLmgiCiAjaW5jbHVkZSAibWFpbGRpcnF1b3RhLmgiCisjaW5jbHVkZSAic3RvcmFn ZS5oIgogI2luY2x1ZGUgInZhdXRobW9kdWxlLmgiCiAjaW5jbHVkZSAicHdzdHIuaCIKIApA QCAtODUsNiArODYsNDQgQEAKICAgIGNoYXIgKnZhbHVlOwogIH0gc29ydHJlYzsKIAorLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKwordm9pZCBzdHJpbmdfbGlzdF9pbml0KHN0cmluZ19saXN0 ICphLCBpbnQgaW5pdGlhbCkgeworICBhLT5jb3VudCA9IDA7CisgIGEtPnNpemUgPSAoKGlu aXRpYWwgKyAzKSAvIDQpICogNDsKKyAgaWYgKGEtPnNpemUgPD0gMCkgYS0+c2l6ZSA9IDQ7 CisgIGEtPnZhbHVlcyA9IGNhbGxvYyhhLT5zaXplLCBzaXplb2YoY2hhciAqKikpOworICBp ZiAoYS0+dmFsdWVzID09IE5VTEwpIGEtPnNpemUgPSAwOworfQorCitpbnQgc3RyaW5nX2xp c3RfYWRkKHN0cmluZ19saXN0ICphLCBjaGFyICp2YWx1ZSkgeworICBpZiAoYS0+Y291bnQg Pj0gKGEtPnNpemUgLSAyKSkgeworICAgIGNoYXIgKipuZXc7CisKKyAgICBhLT5zaXplICs9 IDg7CisgICAgbmV3ID0gcmVhbGxvYyhhLT52YWx1ZXMsIGEtPnNpemUgKiBzaXplb2YoY2hh ciAqKikpOworICAgIGlmIChuZXcgIT0gTlVMTCkgeworICAgICAgYS0+dmFsdWVzID0gbmV3 OworICAgICAgcmV0dXJuIGEtPnNpemU7CisgICAgfQorICAgIHJldHVybiAwOworICB9CisK KyAgaWYgKChhLT52YWx1ZXNbYS0+Y291bnRdID0gc3RyZHVwKHZhbHVlKSkgPT0gTlVMTCkK KyAgICByZXR1cm4gMDsKKyAgYS0+Y291bnQrKzsKKyAgcmV0dXJuIDE7Cit9CisKK3ZvaWQg c3RyaW5nX2xpc3RfZnJlZShzdHJpbmdfbGlzdCAqYSkgeworIGludCBpOworCisgIGlmIChh LT52YWx1ZXMgPT0gTlVMTCkgcmV0dXJuOworICBmb3IgKGkgPSAwOyBpIDwgYS0+Y291bnQ7 IGkrKykKKyAgICBmcmVlKGEtPnZhbHVlc1tpXSk7CisgIGZyZWUoYS0+dmFsdWVzKTsKK30K KwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xMDQsMjQgKzE0MywxNiBAQAogIGNo YXIgZGlyX2NvbnRyb2xfZm9yX3VpZFtNQVhfQlVGRl07CiAgY2hhciB0bXBidWZbTUFYX0JV RkZdOwogIGNoYXIgRGlyW01BWF9CVUZGXTsKLSBjaGFyIGNhbGxpbmdfZGlyW01BWF9CVUZG XTsKKyBpbnQgY2FsbF9kaXI7CiAgY2hhciBkZGlyWzUxMl0gPSB7IDAgfTsKIAotIGNoYXIg KmFsaWFzZXNbMV07Ci0gaW50IGFsaWFzY291bnQ9MDsKKyBzdHJpbmdfbGlzdCAqYWxpYXNl czsKIAogI2lmZGVmIE9OQ0hBTkdFX1NDUklQVAogICAvKiAgRG9uJ3QgZXhlY3V0ZSBhbnkg aW1wbGllZCBvbmNoYW5nZSBpbiBjYWxsZWQgZnVuY3Rpb25zICAqLwogICBhbGxvd19vbmNo YW5nZSA9IDA7CiAjZW5kaWYKIAotICAvKgotICAgKiBJbiBjYXNlIHdlIG5lZWQgdG8gdXNl IGRlbGV0ZV9saW5lLCBidWlsZCBhbiBhcnJheSBhbmQgY291bnQgCi0gICAqIHRvIHVzZSBh cyBpdHMgcGFyYW1ldGVycyAKLSAgICoKLSAgICovCi0gIGFsaWFzZXNbYWxpYXNjb3VudCsr XT1zdHJkdXAoZG9tYWluKTsKLQogICAvKiB3ZSBvbmx5IGRvIGxvd2VyIGNhc2UgKi8KICAg bG93ZXJpdChkb21haW4pOwogCkBAIC0xNTYsNyArMTg3LDcgQEAKICAgdW1hc2soVlBPUE1B SUxfVU1BU0spOwogCiAgIC8qIHN0b3JlIHRoZSBjYWxsaW5nIGRpcmVjdG9yeSAqLwotICBn ZXRjd2QoY2FsbGluZ19kaXIsIHNpemVvZihjYWxsaW5nX2RpcikpOworICBjYWxsX2RpciA9 IG9wZW4oIi4iLCBPX1JET05MWSk7CiAKICAgaWYgKChkaXIgPT0gTlVMTCkgfHwgKChjb25z dCBjaGFyICopZGlyID09IChjb25zdCBjaGFyICopVlBPUE1BSUxfRElSX0RPTUFJTlMpIHx8 ICghKCpkaXIpKSkgewogCSBtZW1zZXQoZGRpciwgMCwgc2l6ZW9mKGRkaXIpKTsKQEAgLTE3 Niw3ICsyMDcsNyBAQAogCiAgICAgLyogaWYgaXQncyBub3QgdGhlcmUsIG5vIHByb2JsZW0s IGp1c3QgdHJ5IHRvIGNyZWF0ZSBpdCAqLwogICAgIGlmICggbWtkaXIoZGlyLCBWUE9QTUFJ TF9ESVJfTU9ERSkgIT0gMCApIHsKLSAgICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgICAg IGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICAgIHJldHVybihWQV9D QU5fTk9UX01BS0VfRE9NQUlOU19ESVIpOwogICAgIH0KIApAQCAtMTg1LDcgKzIxNiw3IEBA CiAKICAgICAvKiBub3cgdHJ5IG1vdmluZyBpbnRvIHRoZSBEb21haW5zIHN1YmRpciBhZ2Fp biAqLwogICAgIGlmICggY2hkaXIoZGlyKSAhPSAwICkgewotICAgICAgY2hkaXIoY2FsbGlu Z19kaXIpOworICAgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogICAg ICAgcmV0dXJuKFZBX0JBRF9EX0RJUik7CiAgICAgfQogICB9CkBAIC0yMTgsNyArMjQ5LDcg QEAKICAgaWYgKHN0cmxlbihkaXIpK3N0cmxlbihEb21haW5TdWJEaXIpID4gTUFYX1BXX0RJ UikgewogICAgIC8qIGJhY2sgb3V0IG9mIGNoYW5nZXMgbWFkZSBzbyBmYXIgKi8KICAgICBk ZWNfZGlyX2NvbnRyb2woZGlyX2NvbnRyb2xfZm9yX3VpZCwgdWlkLCBnaWQpOwotICAgIGNo ZGlyKGNhbGxpbmdfZGlyKTsKKyAgICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rp cik7CiAgICAgcmV0dXJuKFZBX0RJUl9UT09fTE9ORyk7CiAgIH0KIApAQCAtMjI2LDcgKzI1 Nyw3IEBACiAgIGlmICggcl9ta2RpcihEb21haW5TdWJEaXIsIHVpZCwgZ2lkICkgIT0gMCAp IHsKICAgICAvKiBiYWNrIG91dCBvZiBjaGFuZ2VzIG1hZGUgc28gZmFyICovCiAgICAgZGVj X2Rpcl9jb250cm9sKGRpcl9jb250cm9sX2Zvcl91aWQsIHVpZCwgZ2lkKTsKLSAgICBjaGRp cihjYWxsaW5nX2Rpcik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIp OwogICAgIHJldHVybihWQV9DT1VMRF9OT1RfTUFLRV9ET01BSU5fRElSKTsKICAgfQogICAK QEAgLTIzNCw3ICsyNjUsNyBAQAogICAgIC8qIGJhY2sgb3V0IG9mIGNoYW5nZXMgbWFkZSBz byBmYXIgKi8KICAgICB2ZGVsZmlsZXMoRG9tYWluU3ViRGlyKTsKICAgICBkZWNfZGlyX2Nv bnRyb2woZGlyX2NvbnRyb2xfZm9yX3VpZCwgdWlkLCBnaWQpOwotICAgIGNoZGlyKGNhbGxp bmdfZGlyKTsKKyAgICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAg cmV0dXJuKFZBX0JBRF9EX0RJUik7CiAgIH0KIApAQCAtMjQ3LDcgKzI3OCw3IEBACiAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBkZWxldGUgZGlyZWN0b3J5IHRyZWU6ICVz XG4iLCBEb21haW5TdWJEaXIpOwogICAgIH0KICAgICBkZWNfZGlyX2NvbnRyb2woZGlyX2Nv bnRyb2xfZm9yX3VpZCwgdWlkLCBnaWQpOwotICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAg ICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgcmV0dXJuKFZBX0NP VUxEX05PVF9PUEVOX1FNQUlMX0RFRkFVTFQpOwogICB9IGVsc2UgewogICAgIGZwcmludGYo ZnMsICJ8ICVzL3ZkZWxpdmVybWFpbCAnJyBib3VuY2Utbm8tbWFpbGJveFxuIiwgVlBPUE1B SUxfRElSX0JJTik7CkBAIC0yNjIsNyArMjkzLDcgQEAKICAgICAgIGZwcmludGYoc3RkZXJy LCAiRmFpbGVkIHRvIGRlbGV0ZSBkaXJlY3RvcnkgdHJlZTogJXNcbiIsIERvbWFpblN1YkRp cik7CiAgICAgfQogICAgIGRlY19kaXJfY29udHJvbChkaXJfY29udHJvbF9mb3JfdWlkLCB1 aWQsIGdpZCk7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRpcihjYWxsX2Rp cik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICBmcHJpbnRmIChzdGRlcnIsICJFcnJvci4gRmFp bGVkIHRvIGFkZCBkb21haW4gdG8gYXNzaWduIGZpbGVcbiIpOwogICAgIHJldHVybiAoVkFf Q09VTERfTk9UX1VQREFURV9GSUxFKTsKICAgfQpAQCAtMjkyLDExICszMjMsMTQgQEAKIAog ICAgIHZnZXRfYXNzaWduKGRvbWFpbiwgRGlyLCBzaXplb2YoRGlyKSwgJnVpZCwgJmdpZCAp OwogCi0gICAgaWYgKCBkZWxfZG9tYWluX2Fzc2lnbihhbGlhc2VzLCBhbGlhc2NvdW50LCBk b21haW4sIERpciwgdWlkLCBnaWQpICE9IDApIHsKKyAgICBzdHJpbmdfbGlzdF9pbml0KCZh bGlhc2VzLCAxKTsKKyAgICBzdHJpbmdfbGlzdF9hZGQoJmFsaWFzZXMsIGRvbWFpbik7CisK KyAgICBpZiAoIGRlbF9kb21haW5fYXNzaWduKGFsaWFzZXMudmFsdWVzLCBhbGlhc2VzLmNv dW50LCBkb21haW4sIERpciwgdWlkLCBnaWQpICE9IDApIHsKICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiRmFpbGVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gcmVtb3ZlIGRvbWFpbiBmcm9tIGFz c2lnbiBmaWxlXG4iKTsKICAgICB9CiAKLSAgICBpZiAoZGVsX2NvbnRyb2woYWxpYXNlcyxh bGlhc2NvdW50KSAhPTApIHsKKyAgICBpZiAoZGVsX2NvbnRyb2woYWxpYXNlcy52YWx1ZXMs YWxpYXNlcy5jb3VudCkgIT0wKSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB3 aGlsZSBhdHRlbXB0aW5nIHRvIGRlbGV0ZSBkb21haW4gZnJvbSB0aGUgcW1haWwgY29udHJv bCBmaWxlc1xuIik7CiAgICAgfQogCkBAIC0zMDksNiArMzQzLDkgQEAKICAgICAvKiBzZW5k IGEgSFVQIHNpZ25hbCB0byBxbWFpbC1zZW5kIHByb2Nlc3MgdG8gcmVyZWFkIGNvbnRyb2wg ZmlsZXMgKi8KICAgICBzaWduYWxfcHJvY2VzcygicW1haWwtc2VuZCIsIFNJR0hVUCk7CiAK KyAgICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CisgICAgc3RyaW5nX2xp c3RfZnJlZSgmYWxpYXNlcyk7CisKICAgICByZXR1cm4gKFZBX05PX0FVVEhfQ09OTkVDVElP Tik7CiAgIH0JCiAgCkBAIC0zMjcsOSArMzY0LDcgQEAKICNlbmRpZgogCiAgIC8qIHJldHVy biBiYWNrIHRvIHRoZSBjYWxsZXJzIGRpcmVjdG9yeSBhbmQgcmV0dXJuIHN1Y2Nlc3MgKi8K LSAgY2hkaXIoY2FsbGluZ19kaXIpOwotCi0gIGZyZWUoIGFsaWFzZXNbMF0gKTsKKyAgZmNo ZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogCiAgIHJldHVybihWQV9TVUNDRVNT KTsKIH0KQEAgLTM1Miw5ICszODcsMTAgQEAKICBjaGFyIGRpcmNvbnRyb2xbTUFYX0JVRkZd OwogIHVpZF90IHVpZDsKICBnaWRfdCBnaWQ7Ci0gY2hhciAqYWxpYXNlc1tNQVhfRE9NX0FM SUFTXTsKKyBzdHJpbmdfbGlzdCBhbGlhc2VzOwogIGRvbWFpbl9lbnRyeSAqZW50cnk7Ci0g aW50IGk9MCwgYWxpYXNjb3VudD0wOworIGludCBpPTA7CisgaW50IGNhbGxfZGlyOwogCiAg IC8qIHdlIGFsd2F5cyBjb252ZXJ0IGRvbWFpbnMgdG8gbG93ZXIgY2FzZSAqLwogICBsb3dl cml0KGRvbWFpbik7CkBAIC0zODksNyArNDI1LDggQEAKICAgICAgICogIHRoYXQgYXJlIGFi b3V0IHRvIGJlIGRlbGV0ZWQuICBJdCB3aWxsIGJlIHRoZSBvbmx5IG9uZQogICAgICAgKiAg YnV0IEkgd2lsbCB1c2UgdGhlIHNhbWUgY29kZSBhcyBtdWx0aSBkb21haW5zIGFueXdheS4K ICAgICAgICovCi0gICAgIGFsaWFzZXNbYWxpYXNjb3VudCsrXSA9IHN0cmR1cCggZG9tYWlu X3RvX2RlbCApOworICAgICBzdHJpbmdfbGlzdF9pbml0KCZhbGlhc2VzLCAxKTsKKyAgICAg c3RyaW5nX2xpc3RfYWRkKCZhbGlhc2VzLCBkb21haW5fdG9fZGVsKTsKIAogI2lmZGVmIE9O Q0hBTkdFX1NDUklQVAogICAgICAvKiB0ZWxsIG90aGVyIHByb2dyYW1zIHRoYXQgZGF0YSBo YXMgY2hhbmdlZCAqLwpAQCAtNDM3LDE0ICs0NzQsMTYgQEAKICAgICAgICB9CiAgICAgIH0K IAorICAgICBzdHJpbmdfbGlzdF9pbml0KCZhbGlhc2VzLCAxMCk7CisKICAgICAgd2hpbGUo IGVudHJ5ICkgewotICAgICAgIGFsaWFzZXNbYWxpYXNjb3VudCsrXSA9IHN0cmR1cChlbnRy eS0+ZG9tYWluKTsKKyAgICAgICBzdHJpbmdfbGlzdF9hZGQoJmFsaWFzZXMsIGVudHJ5LT5k b21haW4pOwogICAgICAgIGVudHJ5ID0gZ2V0X2RvbWFpbl9lbnRyaWVzKE5VTEwpOwogICAg ICB9CiAKIC8vICAgRHVtcCB0aGUgYWxpYXMgbGlzdAotLy8gICAgIGZvcihpPTA7aTxhbGlh c2NvdW50O2krKykgewotLy8gICAgICAgZnByaW50ZihzdGRlcnIsImFsaWFzICVzXG4iLCBh bGlhc2VzW2ldKTsKKy8vICAgICBmb3IoaT0wO2k8YWxpYXNlcy5jb3VudDtpKyspIHsKKy8v ICAgICAgIGZwcmludGYoc3RkZXJyLCJhbGlhcyAlc1xuIiwgYWxpYXNlcy52YWx1ZXNbaV0p OwogLy8gICAgIH0KIAogCkBAIC00OTAsMjAgKzUyOSwyMCBAQAogCiAgICAgLyogTm93IHJl bW92ZSBkb21haW4gZnJvbSBmaWxlc3lzdGVtICovCiAgICAgLyogaWYgaXQncyBhIHN5bWJv bGljIGxpbmsganVzdCByZW1vdmUgdGhlIGxpbmsgKi8KLSAgICBpZiAoIFNfSVNMTksoc3Rh dGJ1Zi5zdF9tb2RlKSApIHsKKyAgICBpZiAoIHJlYWRsaW5rKERpciwgKGNoYXIgKikgJmNh bGxfZGlyLCBzaXplb2YoY2FsbF9kaXIpKSAhPSAtMSkgewogICAgICAgaWYgKCB1bmxpbmso RGlyKSAhPTApIHsKICAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiV2FybmluZzogRmFpbGVk IHRvIHJlbW92ZSBzeW1saW5rIGZvciAlc1xuIiwgZG9tYWluKTsKICAgICAgIH0KICAgICB9 IGVsc2UgewotICAgICAgY2hhciBjd2RidWZmW01BWF9CVUZGXTsKLSAgICAgIGNoYXIgKmN3 ZDsKICAgICAgIC8qIE5vdCBhIHN5bWxpbmsuLiBzbyB3ZSBoYXZlIHRvIGRlbCBzb21lIGZp bGVzIHN0cnVjdHVyZSBub3cgKi8KICAgICAgIC8qIHphcCB0aGUgZG9tYWluJ3MgZGlyZWN0 b3J5IHRyZWUgKi8KLSAgICAgIGN3ZCA9IGdldGN3ZCAoY3dkYnVmZiwgc2l6ZW9mKGN3ZGJ1 ZmYpKTsgIC8qIHNhdmUgY2FsbGluZyBkaXJlY3RvcnkgKi8KKyAgICAgIGNhbGxfZGlyID0g b3BlbigiLiIsIE9fUkRPTkxZKTsKKwogICAgICAgaWYgKCB2ZGVsZmlsZXMoRGlyKSAhPSAw ICkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IEZhaWxlZCB0byBkZWxl dGUgZGlyZWN0b3J5IHRyZWU6ICVzXG4iLCBkb21haW4pOwogICAgICAgfQotICAgICAgaWYg KGN3ZCAhPSBOVUxMKSBjaGRpciAoY3dkKTsKKworICAgICAgZmNoZGlyKGNhbGxfZGlyKTsg Y2xvc2UoY2FsbF9kaXIpOwogICAgIH0KIAogICAgIC8qIGRlY3JlbWVudCB0aGUgbWFzdGVy IGRvbWFpbiBjb250cm9sIGluZm8gKi8KQEAgLTUxNiwxMiArNTU1LDEyIEBACiAgIC8qIGRl bGV0ZSB0aGUgZW1haWwgZG9tYWluIGZyb20gdGhlIHFtYWlsIGNvbnRyb2wgZmlsZXMgOgog ICAgKiByY3B0aG9zdHMsIG1vcmVyY3B0aG9zdHMsIHZpcnR1YWxkb21haW5zCiAgICAqLwot ICBpZiAoZGVsX2NvbnRyb2woYWxpYXNlcyxhbGlhc2NvdW50KSAhPSAwKSB7CisgIGlmIChk ZWxfY29udHJvbChhbGlhc2VzLnZhbHVlcyxhbGlhc2VzLmNvdW50KSAhPSAwKSB7CiAgICAg ZnByaW50ZiAoc3RkZXJyLCAiV2FybmluZzogRmFpbGVkIHRvIGRlbGV0ZSBkb21haW4gZnJv bSBxbWFpbCdzIGNvbnRyb2wgZmlsZXNcbiIpOwogICB9CiAKICAgLyogZGVsZXRlIHRoZSBh c3NpZ24gZmlsZSBsaW5lICovCi0gIGlmIChkZWxfZG9tYWluX2Fzc2lnbihhbGlhc2VzLCBh bGlhc2NvdW50LCBkb21haW4sIERpciwgdWlkLCBnaWQpICE9IDApIHsKKyAgaWYgKGRlbF9k b21haW5fYXNzaWduKGFsaWFzZXMudmFsdWVzLCBhbGlhc2VzLmNvdW50LCBkb21haW4sIERp ciwgdWlkLCBnaWQpICE9IDApIHsKICAgICBmcHJpbnRmIChzdGRlcnIsICJXYXJuaW5nOiBG YWlsZWQgdG8gZGVsZXRlIGRvbWFpbiBmcm9tIHRoZSBhc3NpZ24gZmlsZVxuIik7CiAgIH0K IApAQCAtNTI5LDEzICs1NjgsOSBAQAogICBzaWduYWxfcHJvY2VzcygicW1haWwtc2VuZCIs IFNJR0hVUCk7CiAKICAgLyogIGNsZWFuIHVwIG1lbW9yeSB1c2VkIGJ5IHRoZSBhbGlhcyBs aXN0ICAqLwotICBmb3IoaT0wO2k8YWxpYXNjb3VudDtpKyspIHsKLSAgICBmcmVlKCBhbGlh c2VzW2ldICk7Ci0gIH0KLQorICBzdHJpbmdfbGlzdF9mcmVlKCZhbGlhc2VzKTsKIAogICBy ZXR1cm4oVkFfU1VDQ0VTUyk7Ci0KIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTYz OSw3ICs2NzQsNyBAQAogICAgaW50IHJldDsKICBjaGFyIERpcltNQVhfQlVGRl07CiAgY2hh ciAqdXNlcl9oYXNoOwotIGNoYXIgY2FsbGluZ19kaXIgW01BWF9CVUZGXTsKKyBpbnQgY2Fs bF9kaXI7CiAgdWlkX3QgdWlkID0gLTE7CiAgZ2lkX3QgZ2lkID0gLTE7CiAgc3RydWN0IHZs aW1pdHMgbGltaXRzOwpAQCAtNjg2LDkgKzcyMSw2IEBACiAgIGlmIChyZXQgIT0gMSkKIAkg cmV0dXJuIHJldDsKIAotICAvKiByZWNvcmQgdGhlIGRpciB3aGVyZSB0aGUgdmFkZHVzZXIg Y29tbWFuZCB3YXMgcnVuIGZyb20gKi8KLSAgZ2V0Y3dkKGNhbGxpbmdfZGlyLCBzaXplb2Yo Y2FsbGluZ19kaXIpKTsKLQogICAvKiBsb29rdXAgdGhlIGhvbWUgZGlyLCB1aWQgYW5kIGdp ZCBmb3IgdGhlIGRvbWFpbiAqLwogICBpZiAoIHZnZXRfYXNzaWduKGRvbWFpbiwgRGlyLCBz aXplb2YoRGlyKSwgJnVpZCwgJmdpZCk9PU5VTEwpIHsKICAgICByZXR1cm4oVkFfRE9NQUlO X0RPRVNfTk9UX0VYSVNUKTsKQEAgLTY5OSwxNSArNzMxLDE5IEBACiAgICAgcmV0dXJuKFZB X0NBTk5PVF9SRUFEX0xJTUlUUyk7CiAgIH0KIAorICAvKiByZWNvcmQgdGhlIGRpciB3aGVy ZSB0aGUgdmFkZHVzZXIgY29tbWFuZCB3YXMgcnVuIGZyb20gKi8KKyAgY2FsbF9kaXIgPSBv cGVuKCIuIiwgT19SRE9OTFkpOworCiAgIC8qIGdvIHRvIHRoZSBkb21haW4ncyBob21lIGRp ciAoaWUgdGVzdCBpdCBleGlzdHMpICovCiAgIC8qIHdvdWxkIGEgc3RhdCBiZSBhIGJldHRl ciBvcHRpb24gaGVyZT8gKi8KICAgaWYgKCBjaGRpcihEaXIpICE9IDAgKSB7CisgICAgY2xv c2UoY2FsbF9kaXIpOwogICAgIHJldHVybihWQV9CQURfRF9ESVIpOwogICB9CiAKICAgLyog Y3JlYXRlIGRpciBmb3IgdGhlIHRoZSB1c2VyICovIAogICBpZiAoICh1c2VyX2hhc2g9bWFr ZV91c2VyX2Rpcih1c2VybmFtZSwgZG9tYWluLCB1aWQsIGdpZCkpID09IE5VTEwgKSB7Ci0g ICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNh bGxfZGlyKTsKICAgICBpZiAodmVycm9yaSAhPSAwICkgcmV0dXJuKHZlcnJvcmkpOwogICAg IGVsc2UgcmV0dXJuKFZBX0JBRF9VX0RJUik7CiAgIH0KQEAgLTcxOCwxOSArNzU0LDE5IEBA CiAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBhZGQg dXNlciB0byBhdXRoIGJhY2tlbmRcbiIpOwogICAgIC8qIGJhY2sgb3V0IG9mIGNoYW5nZXMg bWFkZSBzbyBmYXIgKi8KICAgICBjaGRpcihEaXIpOyBpZiAoc3RybGVuKHVzZXJfaGFzaCk+ MCkgeyBjaGRpcih1c2VyX2hhc2gpO30gdmRlbGZpbGVzKHVzZXJuYW1lKTsKLSAgICBjaGRp cihjYWxsaW5nX2Rpcik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIp OwogICAgIHJldHVybihWQV9OT19BVVRIX0NPTk5FQ1RJT04pOwogICB9CiAKICAgaWYgKGxp bWl0cy5kZWZhdWx0cXVvdGEgPiAwKSB7CiAgICAgaWYgKGxpbWl0cy5kZWZhdWx0bWF4bXNn Y291bnQgPiAwKQotICAgICAgc25wcmludGYgKHF1b3RhLCBzaXplb2YocXVvdGEpLCAiJWRT LCVkQyIsIGxpbWl0cy5kZWZhdWx0cXVvdGEsCisgICAgICBzbnByaW50ZiAocXVvdGEsIHNp emVvZihxdW90YSksICIlbGx1UywlbGx1QyIsIGxpbWl0cy5kZWZhdWx0cXVvdGEsCiAgICAg ICAgIGxpbWl0cy5kZWZhdWx0bWF4bXNnY291bnQpOwogICAgIGVsc2UKLSAgICAgIHNucHJp bnRmIChxdW90YSwgc2l6ZW9mKHF1b3RhKSwgIiVkUyIsIGxpbWl0cy5kZWZhdWx0cXVvdGEp OworICAgICAgc25wcmludGYgKHF1b3RhLCBzaXplb2YocXVvdGEpLCAiJWxsdVMiLCBsaW1p dHMuZGVmYXVsdHF1b3RhKTsKICAgfSBlbHNlIHsKICAgICBpZiAobGltaXRzLmRlZmF1bHRt YXhtc2djb3VudCA+IDApCi0gICAgICBzbnByaW50ZiAocXVvdGEsIHNpemVvZihxdW90YSks ICIlZEMiLCBsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsKKyAgICAgIHNucHJpbnRmIChx dW90YSwgc2l6ZW9mKHF1b3RhKSwgIiVsbHVDIiwgbGltaXRzLmRlZmF1bHRtYXhtc2djb3Vu dCk7CiAgICAgZWxzZQogICAgICAgc3RyY3B5IChxdW90YSwgIk5PUVVPVEEiKTsKICAgfQpA QCAtNzU3LDE0ICs3OTMsMTQgQEAKICAgaWYgKHZhdXRoX21vZHVsZV9mZWF0dXJlKCJBVVRI X0xPR0dJTkciKSkgewogCSAgaWYgKHZzZXRfbGFzdGF1dGgodXNlcm5hbWUsZG9tYWluLE5V TExfUkVNT1RFX0lQKSAhPTApIHsKIAkJIC8qIHNob3VsZCB3ZSBiYWNrIG91dCBvZiBhbGwg dGhlIHdvcmsgd2UgaGF2ZSBkb25lIHNvIGZhcj8gKi8KLQkJIGNoZGlyKGNhbGxpbmdfZGly KTsKKwkJIGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKIAkJIGZwcmludGYg KHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgY3JlYXRlIGxhc3RhdXRoIGVudHJ5XG4iKTsK IAkJIHJldHVybiAoVkFfTk9fQVVUSF9DT05ORUNUSU9OKTsKIAkgIH0KICAgfQogCiAgIC8q IGp1bXAgYmFjayBpbnRvIHRoZSBkaXIgZnJvbSB3aGljaCB0aGUgdmFkZHVzZXIgd2FzIHJ1 biAqLwotICBjaGRpcihjYWxsaW5nX2Rpcik7CisgIGZjaGRpcihjYWxsX2Rpcik7IGNsb3Nl KGNhbGxfZGlyKTsKIAogI2lmZGVmIE9OQ0hBTkdFX1NDUklQVAogICBhbGxvd19vbmNoYW5n ZSA9IHRlbXBfb25jaGFuZ2U7CkBAIC0xMDEyLDEwICsxMDQ4LDEwIEBACiAgc3RydWN0IHN0 YXQgbXlzdGF0OwogIGNoYXIgdG1wc3RyMVtNQVhfQlVGRl07CiAgY2hhciB0bXBzdHIyW01B WF9CVUZGXTsKLSBjaGFyICphbGlhc2VzWzFdOwotIGludCBhbGlhc2NvdW50PTA7Cisgc3Ry aW5nX2xpc3QgYWxpYXNlczsKIAotIGFsaWFzZXNbYWxpYXNjb3VudCsrXT1zdHJkdXAoYWxp YXNfZG9tYWluKTsKKyAgc3RyaW5nX2xpc3RfaW5pdCgmYWxpYXNlcywgMSk7CisgIHN0cmlu Z19saXN0X2FkZCgmYWxpYXNlcyxhbGlhc19kb21haW4pOwogCiAgIHNucHJpbnRmKHRtcHN0 cjEsIHNpemVvZih0bXBzdHIxKSwgIiVzL3VzZXJzL2Fzc2lnbiIsIFFNQUlMRElSKTsKIApA QCAtMTA4NiwxMyArMTEyMiwxMyBAQAogCiAgIC8qIG1ha2Ugc3VyZSBpdCdzIG5vdCBpbiBs b2NhbHMgYW5kIHNldCBtb2RlICovCiAgIHNucHJpbnRmKHRtcHN0cjEsIHNpemVvZih0bXBz dHIxKSwgIiVzL2NvbnRyb2wvbG9jYWxzIiwgUU1BSUxESVIpOwotICBpZiAocmVtb3ZlX2xp bmVzKCB0bXBzdHIxLCBhbGlhc2VzLCBhbGlhc2NvdW50KSA8IDApIHsKKyAgaWYgKHJlbW92 ZV9saW5lcyggdG1wc3RyMSwgYWxpYXNlcy52YWx1ZXMsIGFsaWFzZXMuY291bnQpIDwgMCkg ewogICAgIGZwcmludGYgKHN0ZGVyciwgIkZhaWx1cmUgd2hpbGUgYXR0ZW1wdGluZyB0byBy ZW1vdmVfbGluZXMoKSB0aGUgbG9jYWxzIGZpbGVcbiIpOwogICAgIHJldHVybigtMSk7CiAg IH0KICAgY2htb2QodG1wc3RyMSwgVlBPUE1BSUxfUU1BSUxfTU9ERSApOyAKIAotICBmcmVl KCBhbGlhc2VzWzBdICk7CisgIHN0cmluZ19saXN0X2ZyZWUoJmFsaWFzZXMpOwogCiAgIHJl dHVybigwKTsKIH0KQEAgLTExMDUsMTIgKzExNDEsMTIgQEAKICAqIC0gL3Zhci9xbWFpbC9j b250cm9sL3JjcHRob3N0cwogICogLSAvdmFyL3FtYWlsL2NvbnRyb2wvdmlydHVhbGRvbWFp bnMKICAqLwotaW50IGRlbF9jb250cm9sKGNoYXIgKmFsaWFzZXNbTUFYX0RPTV9BTElBU10s IGludCBhbGlhc2NvdW50ICkgCitpbnQgZGVsX2NvbnRyb2woY2hhciAqKmFsaWFzZXMsIGlu dCBhbGlhc2NvdW50ICkgCiB7CiAgY2hhciB0bXBidWYxW01BWF9CVUZGXTsKICBjaGFyIHRt cGJ1ZjJbTUFYX0JVRkZdOwogIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0gY2hhciAqdmlydGhv c3RzW01BWF9ET01fQUxJQVNdOworIHN0cmluZ19saXN0IHZpcnRob3N0czsKIAogIGludCBw cm9ibGVtX29jY3VycmVkID0gMCwgaT0wOwogCkBAIC0xMTY4LDIxICsxMjA0LDIwIEBACiAg IH0gLyogc3dpdGNoIGZvciByY3B0aG9zdHMgKi8KIAogICAvKiBkZWxldGUgZW50cnkgZnJv bSBjb250cm9sL3ZpcnR1YWxkb21haW5zIChpZiBpdCBleGlzdHMpICovCisgIHN0cmluZ19s aXN0X2luaXQoJnZpcnRob3N0cywgMTApOwogICAKICAgZm9yKGk9MDtpPGFsaWFzY291bnQ7 aSsrKSB7CiAgICAgc25wcmludGYodG1wYnVmMSwgc2l6ZW9mKHRtcGJ1ZjEpLCAiJXM6JXMi LCBhbGlhc2VzW2ldLCBhbGlhc2VzW2ldKTsKLSAgICB2aXJ0aG9zdHNbaV09c3RyZHVwKHRt cGJ1ZjEpOworICAgIHN0cmluZ19saXN0X2FkZCgmdmlydGhvc3RzLCB0bXBidWYxKTsKICAg fQogCiAgIHNucHJpbnRmKHRtcGJ1ZjIsIHNpemVvZih0bXBidWYyKSwgIiVzL2NvbnRyb2wv dmlydHVhbGRvbWFpbnMiLCBRTUFJTERJUik7Ci0gIGlmIChyZW1vdmVfbGluZXMoIHRtcGJ1 ZjIsIHZpcnRob3N0cywgYWxpYXNjb3VudCkgPCAwICkgeworICBpZiAocmVtb3ZlX2xpbmVz KCB0bXBidWYyLCB2aXJ0aG9zdHMudmFsdWVzLCB2aXJ0aG9zdHMuY291bnQpIDwgMCApIHsK ICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHJlbW92 ZV9saW5lcygpIHRoZSB2aXJ0dWFsZG9tYWlucyBmaWxlXG4iKTsgCiAgICAgcHJvYmxlbV9v Y2N1cnJlZCA9IDE7IAogICB9CiAKLSAgZm9yKGk9MDtpPGFsaWFzY291bnQ7aSsrKSB7Ci0g ICAgZnJlZSggdmlydGhvc3RzW2ldICk7Ci0gIH0KKyAgc3RyaW5nX2xpc3RfZnJlZSgmdmly dGhvc3RzKTsKIAogICAvKiBtYWtlIHN1cmUgY29ycmVjdCBwZXJtaXNzaW9ucyBhcmUgc2V0 IG9uIHZpcnR1YWxkb21haW5zICovCiAgIGNobW9kKHRtcGJ1ZjIsIFZQT1BNQUlMX1FNQUlM X01PREUgKTsgCkBAIC0xMjA1LDMxICsxMjQwLDM2IEBACiAgKiAgICAgICAgICBncmVhdGVy IHRoYW4gMCA9IG51bWJlciBvZiBhbGlhc2VzIGRlbGV0ZWQKICAqCiAgKi8KLWludCBkZWxf ZG9tYWluX2Fzc2lnbiggY2hhciAqYWxpYXNlc1tNQVhfRE9NX0FMSUFTXSwgaW50IGFsaWFz Y291bnQsIAoraW50IGRlbF9kb21haW5fYXNzaWduKCBjaGFyICoqYWxpYXNlcywgaW50IGFs aWFzY291bnQsIAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpyZWFsX2RvbWFpbiwg CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmRpciwgZ2lkX3QgdWlkLCBnaWRfdCBn aWQgKSAgCiB7CiAgY2hhciBzZWFyY2hfc3RyaW5nW01BWF9CVUZGXTsKICBjaGFyIGFzc2ln bl9maWxlW01BWF9CVUZGXTsKLSBjaGFyICp2aXJ0aG9zdHNbTUFYX0RPTV9BTElBU107Cisg c3RyaW5nX2xpc3QgdmlydGhvc3RzOwogIGludCBpOwogCisgIHN0cmluZ19saXN0X2luaXQo JnZpcnRob3N0cywgMTApOworCiAgIC8qIGZvcm1hdCB0aGUgcmVtb3ZhbCBzdHJpbmcgKi8g CiAgIGZvcihpPTA7aTxhbGlhc2NvdW50O2krKykgewogICBzbnByaW50ZihzZWFyY2hfc3Ry aW5nLCBzaXplb2Yoc2VhcmNoX3N0cmluZyksICIrJXMtOiVzOiVsdTolbHU6JXM6LTo6IiwK ICAgICAgIGFsaWFzZXNbaV0sIHJlYWxfZG9tYWluLCAobG9uZyB1bnNpZ25lZCl1aWQsIChs b25nIHVuc2lnbmVkKWdpZCwgZGlyKTsKLSAgICB2aXJ0aG9zdHNbaV0gPSBzdHJkdXAoIHNl YXJjaF9zdHJpbmcgKTsKKyAgICBzdHJpbmdfbGlzdF9hZGQoJnZpcnRob3N0cywgc2VhcmNo X3N0cmluZyk7CiAgIH0KIAogICAvKiBmb3JtYXQgdGhlIGFzc2lnbiBmaWxlIG5hbWUgKi8K ICAgc25wcmludGYoYXNzaWduX2ZpbGUsIHNpemVvZihhc3NpZ25fZmlsZSksICIlcy91c2Vy cy9hc3NpZ24iLCBRTUFJTERJUik7CiAKICAgLyogcmVtb3ZlIHRoZSBmb3JtYXR0ZWQgc3Ry aW5nIGZyb20gdGhlIGZpbGUgKi8KLSAgaWYgKHJlbW92ZV9saW5lcyggYXNzaWduX2ZpbGUs IHZpcnRob3N0cywgYWxpYXNjb3VudCApIDwgMCkgeworICBpZiAocmVtb3ZlX2xpbmVzKCBh c3NpZ25fZmlsZSwgdmlydGhvc3RzLnZhbHVlcywgdmlydGhvc3RzLmNvdW50ICkgPCAwKSB7 CiAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgd2hpbGUgYXR0ZW1wdGluZyB0byByZW1v dmVfbGluZXMoKSB0aGUgYXNzaWduIGZpbGVcbiIpOworICAgIHN0cmluZ19saXN0X2ZyZWUo JnZpcnRob3N0cyk7CiAgICAgcmV0dXJuICgtMSk7CiAgIH0KIAorICBzdHJpbmdfbGlzdF9m cmVlKCZ2aXJ0aG9zdHMpOworCiAgIC8qIGZvcmNlIHRoZSBwZXJtaXNzaW9uIG9uIHRoZSBm aWxlICovCiAgIGNobW9kKGFzc2lnbl9maWxlLCBWUE9QTUFJTF9RTUFJTF9NT0RFICk7IAog CkBAIC0xMjUxLDcgKzEyOTEsNyBAQAogICogICAgICAgICAgMCBvbiBzdWNjZXNzLCBubyBt YXRjaCBmb3VuZAogICogICAgICAgICAgMSBvbiBzdWNjZXNzLCBtYXRjaCB3YXMgZm91bmQK ICAqLwotaW50IHJlbW92ZV9saW5lcyggY2hhciAqZmlsZW5hbWUsIGNoYXIgKmFsaWFzZXNb TUFYX0RPTV9BTElBU10sIGludCBhbGlhc2NvdW50ICkKK2ludCByZW1vdmVfbGluZXMoIGNo YXIgKmZpbGVuYW1lLCBjaGFyICoqYWxpYXNlcywgaW50IGFsaWFzY291bnQgKQogewogIEZJ TEUgKmZzID0gTlVMTDsKICBGSUxFICpmczEgPSBOVUxMOwpAQCAtMTgxNiw3ICsxODU2LDcg QEAKICBjaGFyIERpcltNQVhfQlVGRl07CiAgdWlkX3QgdWlkOwogIGdpZF90IGdpZDsKLSBj aGFyIGNhbGxpbmdfZGlyW01BWF9CVUZGXTsKKyBpbnQgY2FsbF9kaXI7CiAKICAgaWYgKCB1 c2VyID09IDAgfHwgc3RybGVuKHVzZXIpPD0wKSByZXR1cm4oVkFfSUxMRUdBTF9VU0VSTkFN RSk7CiAKQEAgLTE4NDUsNyArMTg4NSw3IEBACiAgIGxvd2VyaXQoZG9tYWluKTsKIAogICAv KiBiYWNrdXAgdGhlIGRpciB3aGVyZSB0aGUgdmRlbHVzZXIgd2FzIHJ1biBmcm9tICovCi0g IGdldGN3ZChjYWxsaW5nX2Rpciwgc2l6ZW9mKGNhbGxpbmdfZGlyKSk7CisgIGNhbGxfZGly ID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKIAogICAvKiBsb29rdXAgdGhlIGxvY2F0aW9uIG9m IHRoaXMgZG9tYWluJ3MgZGlyZWN0b3J5ICovCiAgIGlmICggdmdldF9hc3NpZ24oZG9tYWlu LCBEaXIsIHNpemVvZihEaXIpLCAmdWlkLCAmZ2lkICkgPT0gTlVMTCApIHsKQEAgLTE4NTQs NyArMTg5NCw3IEBACiAKICAgLyogY2hhbmdlIGludG8gdGhhdCBkaXJlY3RvcnkgKi8KICAg aWYgKCBjaGRpcihEaXIpICE9IDAgKSB7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAg IGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICByZXR1cm4oVkFfQkFE X0RfRElSKTsKICAgfQogCkBAIC0xODc4LDcgKzE5MTgsNyBAQAogICAvKiBkZWwgdGhlIHVz ZXIgZnJvbSB0aGUgYXV0aCBzeXN0ZW0gKi8KICAgaWYgKHZhdXRoX2RlbHVzZXIoIHVzZXIs IGRvbWFpbiApICE9MCApIHsKICAgICBmcHJpbnRmIChzdGRlcnIsICJGYWlsZWQgdG8gZGVs ZXRlIHVzZXIgZnJvbSBhdXRoIGJhY2tlbmRcbiIpOwotICAgIGNoZGlyKGNhbGxpbmdfZGly KTsKKyAgICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgcmV0dXJu ICgtMSk7CiAgIH0KIApAQCAtMTg5MSwxMiArMTkzMSwxMiBAQAogICAgKi8KICAgaWYgKCB2 ZGVsZmlsZXMobXlwdy0+cHdfZGlyKSAhPSAwICkgewogICAgIGZwcmludGYoc3RkZXJyLCAi Y291bGQgbm90IHJlbW92ZSAlc1xuIiwgbXlwdy0+cHdfZGlyKTsKLSAgICBjaGRpcihjYWxs aW5nX2Rpcik7CisgICAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogICAg IHJldHVybihWQV9CQURfRElSKTsKICAgfQogCiAgIC8qIGdvIGJhY2sgdG8gdGhlIGNhbGxl cnMgZGlyZWN0b3J5ICovCi0gIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgZmNoZGlyKGNhbGxf ZGlyKTsgY2xvc2UoY2FsbF9kaXIpOwogICByZXR1cm4oVkFfU1VDQ0VTUyk7CiAKIH0KQEAg LTI0NjMsMTUgKzI1MDMsMTMgQEAKIHsKICBjaGFyICp1c2VyX2hhc2g7CiAgc3RydWN0IHZx cGFzc3dkICpteXB3OwotIGNoYXIgY2FsbGluZ19kaXJbTUFYX0JVRkZdOworIGludCBjYWxs X2RpcjsKICBjaGFyIGRvbWFpbl9kaXJbTUFYX0JVRkZdOwogIGNvbnN0IGNoYXIgKmRpcm5h bWVzW10gPSB7Ik1haWxkaXIiLCAiTWFpbGRpci9uZXciLCAiTWFpbGRpci9jdXIiLCAKIAki TWFpbGRpci90bXAifTsKICBpbnQgaTsKIAogICB2ZXJyb3JpID0gMDsKLSAgLyogcmVjb3Jk IHRoZSBkaXIgd2hlcmUgdGhlIGNvbW1hbmQgd2FzIHJ1biBmcm9tICovCi0gIGdldGN3ZChj YWxsaW5nX2Rpciwgc2l6ZW9mKGNhbGxpbmdfZGlyKSk7CiAKICAgLyogcmV0cmlldmUgdGhl IGRpciB0aGF0IHN0b3JlcyB0aGlzIGRvbWFpbiAqLwogICBpZiAodmdldF9hc3NpZ24oZG9t YWluLCBkb21haW5fZGlyLCBzaXplb2YoZG9tYWluX2RpciksIE5VTEwsIE5VTEwpID09IE5V TEwpIHsKQEAgLTI0NzksNiArMjUxNyw5IEBACiAgICAgcmV0dXJuKE5VTEwpOwogICB9CiAK KyAgLyogcmVjb3JkIHRoZSBkaXIgd2hlcmUgdGhlIGNvbW1hbmQgd2FzIHJ1biBmcm9tICov CisgIGNhbGxfZGlyID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKwogICAvKiBnbyB0byB0aGUg ZGlyIGZvciBvdXIgY2hvc2VuIGRvbWFpbiAqLwogICBjaGRpcihkb21haW5fZGlyKTsgCiAK QEAgLTI0OTgsNyArMjUzOSw3IEBACiAgICAgIGxvbmcgdG8gc2F2ZSBiYWNrIHRvIHRoZSBh dXRoIGJhY2tlbmQgKi8KICAgaWYgKChzdHJsZW4oZG9tYWluX2Rpcikrc3RybGVuKHVzZXJf aGFzaCkrc3RybGVuKHVzZXJuYW1lKSkgPiBNQVhfUFdfRElSKSB7CiAgICAgZnByaW50ZiAo c3RkZXJyLCAiRXJyb3IuIFBhdGggZXhjZWVkcyBtYXhpbXVtIHBlcm1pdHRlZCBsZW5ndGhc biIpOwotICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgICBmY2hkaXIoY2FsbF9kaXIpOyBj bG9zZShjYWxsX2Rpcik7CiAgICAgcmV0dXJuIChOVUxMKTsKICAgfQogCkBAIC0yNTA2LDE0 ICsyNTQ3LDE0IEBACiAgIGlmICggbWtkaXIodXNlcm5hbWUsIFZQT1BNQUlMX0RJUl9NT0RF KSAhPSAwICkgewogICAgIC8qIG5lZWQgdG8gYWRkIHNvbWUgY29kZSB0byByZW1vdmUgdGhl IGhhc2hlZCBkaXJzIHdlIGNyZWF0ZWQgYWJvdmUuLi4gKi8KICAgICB2ZXJyb3JpID0gVkFf RVhJU1RfVV9ESVI7Ci0gICAgY2hkaXIoY2FsbGluZ19kaXIpOworICAgIGZjaGRpcihjYWxs X2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICByZXR1cm4oTlVMTCk7CiAgIH0KIAogICBp ZiAoIGNoZGlyKHVzZXJuYW1lKSAhPSAwICkgewogICAgIC8qIGJhY2sgb3V0IG9mIGNoYW5n ZXMgbWFkZSBhYm92ZSAqLwogICAgIGNoZGlyKGRvbWFpbl9kaXIpOyBjaGRpcih1c2VyX2hh c2gpOyB2ZGVsZmlsZXModXNlcm5hbWUpOwotICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAg ICBmY2hkaXIoY2FsbF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7CiAgICAgZnByaW50ZihzdGRl cnIsICJtYWtlX3VzZXJfZGlyOiBlcnJvciAyXG4iKTsKICAgICByZXR1cm4oTlVMTCk7CiAg IH0KQEAgLTI1MjQsNyArMjU2NSw3IEBACiAgICAgICAvKiBiYWNrIG91dCBvZiBjaGFuZ2Vz IG1hZGUgYWJvdmUgKi8KICAgICAgIGNoZGlyKCIuLiIpOwogICAgICAgdmRlbGZpbGVzKHVz ZXJuYW1lKTsKLSAgICAgIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgICAgIGZjaGRpcihjYWxs X2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKICAgICAgIHJldHVybihOVUxMKTsKICAgICB9CiAg IH0KQEAgLTI1NTIsNyArMjU5Myw3IEBACiAgICAgZnJlZSAobXlwdy0+cHdfZGlyKTsKICAg fQogCi0gIGNoZGlyKGNhbGxpbmdfZGlyKTsKKyAgZmNoZGlyKGNhbGxfZGlyKTsgY2xvc2Uo Y2FsbF9kaXIpOwogICByZXR1cm4odXNlcl9oYXNoKTsKIH0KIApAQCAtMzI3MywxOCArMzMx NCwxMiBAQAogaW50IHZtYWtlX21haWxkaXIoY2hhciAqZG9tYWluLCBjaGFyICpkaXIgKQog ewogIGNoYXIgdG1wYnVmW01BWF9CVUZGXTsKLSBjaGFyIGNhbGxpbmdfZGlyW01BWF9CVUZG XTsKKyBpbnQgY2FsbF9kaXI7CiAgdWlkX3QgdWlkOwogIGdpZF90IGdpZDsKICBjaGFyICp0 bXBzdHI7CiAgaW50IGk7CiAKLSAgLyogcmVjb3JkIHdoaWNoIGRpciB0aGUgY29tbWFuZCB3 YXMgbGF1bmNoZWQgZnJvbSAqLwotICBnZXRjd2QoY2FsbGluZ19kaXIsIHNpemVvZihjYWxs aW5nX2RpcikpOwotCi0gIC8qIHNldCB0aGUgbWFzayBmb3IgZmlsZSBjcmVhdGlvbiAqLwot ICB1bWFzayhWUE9QTUFJTF9VTUFTSyk7Ci0gCiAgIC8qIGNoZWNrIGlmIGRvbWFpbiBleGlz dHMuCiAgICAqIGlmIGRvbWFpbiBleGlzdHMsIHN0b3JlIHRoZSBkaXIgaW50byB0bXBidWYs IGFuZCBzdG9yZSB1aWQgYW5kIGdpZAogICAgKi8KQEAgLTMyOTIsNiArMzMyNywxMiBAQAog ICAgIHJldHVybiggVkFfRE9NQUlOX0RPRVNfTk9UX0VYSVNUICk7CiAgIH0KIAorICAvKiBy ZWNvcmQgd2hpY2ggZGlyIHRoZSBjb21tYW5kIHdhcyBsYXVuY2hlZCBmcm9tICovCisgIGNh bGxfZGlyID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKworICAvKiBzZXQgdGhlIG1hc2sgZm9y IGZpbGUgY3JlYXRpb24gKi8KKyAgdW1hc2soVlBPUE1BSUxfVU1BU0spOworIAogICAvKiBz bywgd2Ugc2hvdWxkIGhhdmUgc29tZSB2YXJpYWJsZXMgbGlrZSB0aGlzIG5vdyA6CiAgICAq ICAgZGlyOiAgICAvaG9tZS92cG9wbWFpbC9kb21haW5zL1t4XS9zb21lZG9tYWluLmNvbS9b eF0vc29tZXVzZXIKICAgICogICB0bXBidWY6IC9ob21lL3Zwb3BtYWlsL2RvbWFpbnMvW3hd L3NvbWVkb21haW4uY29tCkBAIC0zMzA2LDcgKzMzNDcsNyBAQAogICAvKiB0bXBzdHIgc2hv dWxkIG5vdyBjb250YWluIDogW3hdL3NvbWV1c2VyICovCiAKICAgLyogc28gMXN0IGNkIGlu dG8gdGhlIGRvbWFpbiBkaXIgKHdoaWNoIHNob3VsZCBhbHJlYWR5IGV4aXN0KSAqLwotICBp ZiAoIGNoZGlyKHRtcGJ1ZikgPT0gLTEgKSB7IGNoZGlyKGNhbGxpbmdfZGlyKTsgcmV0dXJu KCBWQV9CQURfRElSKTsgfQorICBpZiAoIGNoZGlyKHRtcGJ1ZikgPT0gLTEgKSB7IGZjaGRp cihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsgcmV0dXJuKCBWQV9CQURfRElSKTsgfQog CiAgIC8qIE5leHQsIGNyZWF0ZSB0aGUgdXNlcidzIGRpcgogICAgKiBpZSBbeF0vc29tZXVz ZXIKQEAgLTMzMTQsMjEgKzMzNTUsMjIgQEAKICAgcl9ta2Rpcih0bXBzdHIsIHVpZCwgZ2lk KTsKIAogICAvKiB3ZSBzaG91bGQgbm93IGJlIGFibGUgdG8gY2QgaW50byB0aGUgdXNlcidz IGRpciAqLwotICBpZiAoIGNoZGlyKGRpcikgIT0gMCApIHsgY2hkaXIoY2FsbGluZ19kaXIp OyByZXR1cm4oLTEpOyB9CisgIGlmICggY2hkaXIoZGlyKSAhPSAwICkgeyBmY2hkaXIoY2Fs bF9kaXIpOyBjbG9zZShjYWxsX2Rpcik7IHJldHVybigtMSk7IH0KIAogICAvKiBub3cgY3Jl YXRlIHRoZSBNYWlsZGlyICovCi0gIGlmIChta2RpcigiTWFpbGRpciIsVlBPUE1BSUxfRElS X01PREUpID09IC0xKSB7IGNoZGlyKGNhbGxpbmdfZGlyKTsgcmV0dXJuKC0xKTsgfQotICBp ZiAoY2hkaXIoIk1haWxkaXIiKSA9PSAtMSkgeyBjaGRpcihjYWxsaW5nX2Rpcik7IHJldHVy bigtMSk7IH0KLSAgaWYgKG1rZGlyKCJjdXIiLFZQT1BNQUlMX0RJUl9NT0RFKSA9PSAtMSkg eyBjaGRpcihjYWxsaW5nX2Rpcik7IHJldHVybigtMSk7IH0KLSAgaWYgKG1rZGlyKCJuZXci LFZQT1BNQUlMX0RJUl9NT0RFKSA9PSAtMSkgeyBjaGRpcihjYWxsaW5nX2Rpcik7IHJldHVy bigtMSk7IH0KLSAgaWYgKG1rZGlyKCJ0bXAiLFZQT1BNQUlMX0RJUl9NT0RFKSA9PSAtMSkg eyBjaGRpcihjYWxsaW5nX2Rpcik7IHJldHVybigtMSk7IH0KKyAgaWYgKG1rZGlyKCJNYWls ZGlyIixWUE9QTUFJTF9ESVJfTU9ERSkgPT0gLTEpIHsgZmNoZGlyKGNhbGxfZGlyKTsgY2xv c2UoY2FsbF9kaXIpOyByZXR1cm4oLTEpOyB9CisgIGlmIChjaGRpcigiTWFpbGRpciIpID09 IC0xKSB7IGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsgcmV0dXJuKC0xKTsg fQorICBpZiAobWtkaXIoImN1ciIsVlBPUE1BSUxfRElSX01PREUpID09IC0xKSB7IGZjaGRp cihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsgcmV0dXJuKC0xKTsgfQorICBpZiAobWtk aXIoIm5ldyIsVlBPUE1BSUxfRElSX01PREUpID09IC0xKSB7IGZjaGRpcihjYWxsX2Rpcik7 IGNsb3NlKGNhbGxfZGlyKTsgcmV0dXJuKC0xKTsgfQorICBpZiAobWtkaXIoInRtcCIsVlBP UE1BSUxfRElSX01PREUpID09IC0xKSB7IGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxf ZGlyKTsgcmV0dXJuKC0xKTsgfQogCiAgIC8qIHNldCBwZXJtaXNzaW9ucyBvbiB0aGUgdXNl cidzIGRpciAqLwogICBjaGRpcihkaXIpOwogICByX2Nob3duKGRpciwgdWlkLCBnaWQpOwog CiAgIC8qIGNoYW5nZSBiYWNrIHRvIHRoZSBvcmlnbmFsIGRpciAqLwotICBjaGRpcihjYWxs aW5nX2Rpcik7CisgIGZjaGRpcihjYWxsX2Rpcik7IGNsb3NlKGNhbGxfZGlyKTsKKwogICBy ZXR1cm4oMCk7CiB9CiAKQEAgLTM5MjMsOCArMzk2NSw4IEBACiAKIGNoYXIgKmZvcm1hdF9t YWlsZGlycXVvdGEoY29uc3QgY2hhciAqcSkgewogaW50ICAgICBpOwotZG91YmxlCXF1b3Rh X3NpemU7Ci1sb25nCXF1b3RhX2NvdW50Oworc3RvcmFnZV90IHF1b3RhX3NpemU7CitzdG9y YWdlX3QgcXVvdGFfY291bnQ7CiBjaGFyCSpwOwogc3RhdGljIGNoYXIgICAgdGVtcHF1b3Rh WzEyOF07CiAKQEAgLTM5MzQsMzQgKzM5NzYsMzQgQEAKICAgICB9CiAKICAgICAvKiB0cmFu c2xhdGUgdGhlIHF1b3RhIHRvIGEgbnVtYmVyLCBvciBsZWF2ZSBpdCAqLwotICAgIHF1b3Rh X3NpemUgPSAtMS4wOwotICAgIHF1b3RhX2NvdW50ID0gLTE7CisgICAgcXVvdGFfc2l6ZSA9 IDA7CisgICAgcXVvdGFfY291bnQgPSAwOwogICAgIHNucHJpbnRmICh0ZW1wcXVvdGEsIHNp emVvZih0ZW1wcXVvdGEpLCAiJXMiLCBxKTsKICAgICBwID0gc3RydG9rICh0ZW1wcXVvdGEs ICIsIik7CiAgICAgd2hpbGUgKHAgIT0gTlVMTCkgewogICAgICAgaSA9IHN0cmxlbihwKSAt IDE7CiAgICAgICBpZiAocFtpXSA9PSAnQycpIHsgLyogc3BlY2lmeSBhIGxpbWl0IG9uIHRo ZSBudW1iZXIgb2YgbWVzc2FnZXMgKENPVU5UKSAqLwotICAgICAgICBxdW90YV9jb3VudCA9 IGF0b2wocCk7CisgICAgICAgIHF1b3RhX2NvdW50ID0gc3RydG9sbChwLCBOVUxMLCAxMCk7 CiAgICAgICB9IGVsc2UgeyAvKiBzcGVjaWZ5IGEgbGltaXQgb24gdGhlIHNpemUgKi8KICAg ICAgICAgLyogc3RyaXAgb3B0aW9uYWwgdHJhaWxpbmcgUyAqLwogICAgICAgICBpZiAoKHBb aV0gPT0gJ1MnKSB8fCAocFtpXSA9PSAncycpKSBwW2ktLV0gPSAnXDAnOwogICAgICAgICAv KiBzdHJpcCBvcHRpb25hbCB0cmFpbGluZyBCIChmb3IgS0IsIE1CKSAqLwogICAgICAgICBp ZiAoKHBbaV0gPT0gJ0InKSB8fCAocFtpXSA9PSAnYicpKSBwW2ktLV0gPSAnXDAnOwogCi0g ICAgICAgIHF1b3RhX3NpemUgPSBhdG9mKHApOworICAgICAgICBxdW90YV9zaXplID0gc3Ry dG9sbChwLCBOVUxMLCAxMCk7CiAgICAgICAgIGlmICgocFtpXSA9PSAnTScpIHx8IChwW2ld ID09ICdtJykpIHF1b3RhX3NpemUgKj0gMTAyNCAqIDEwMjQ7CiAgICAgICAgIGlmICgocFtp XSA9PSAnSycpIHx8IChwW2ldID09ICdrJykpIHF1b3RhX3NpemUgKj0gMTAyNDsKICAgICAg IH0KICAgICAgIHAgPSBzdHJ0b2sgKE5VTEwsICIsIik7CiAgICAgfQogCi0gICAgaWYgKHF1 b3RhX2NvdW50ID09IC0xKQotICAgICAgaWYgKHF1b3RhX3NpemUgPT0gLTEuMCkgc3RyY3B5 ICh0ZW1wcXVvdGEsICIiKTsgLyogaW52YWxpZCBxdW90YSAqLwotICAgICAgZWxzZSBzcHJp bnRmICh0ZW1wcXVvdGEsICIlLjBmUyIsIHF1b3RhX3NpemUpOwotICAgIGVsc2UgaWYgKHF1 b3RhX3NpemUgPT0gLTEuMCkKLSAgICAgIHNwcmludGYgKHRlbXBxdW90YSwgIiVsdUMiLCBx dW90YV9jb3VudCk7CisgICAgaWYgKHF1b3RhX2NvdW50ID09IDApCisgICAgICBpZiAocXVv dGFfc2l6ZSA9PSAwKSBzdHJjcHkgKHRlbXBxdW90YSwgIiIpOyAvKiBpbnZhbGlkIHF1b3Rh ICovCisgICAgICBlbHNlIHNwcmludGYgKHRlbXBxdW90YSwgIiVsbHVTIiwgcXVvdGFfc2l6 ZSk7CisgICAgZWxzZSBpZiAocXVvdGFfc2l6ZSA9PSAwKQorICAgICAgc3ByaW50ZiAodGVt cHF1b3RhLCAiJWxsdUMiLCBxdW90YV9jb3VudCk7CiAgICAgZWxzZQotICAgICAgc3ByaW50 ZiAodGVtcHF1b3RhLCAiJS4wZlMsJWx1QyIsIHF1b3RhX3NpemUsIHF1b3RhX2NvdW50KTsK KyAgICAgIHNwcmludGYgKHRlbXBxdW90YSwgIiVsbHVTLCVsbHVDIiwgcXVvdGFfc2l6ZSwg cXVvdGFfY291bnQpOwogCiAgICAgcmV0dXJuIHRlbXBxdW90YTsKIH0KQEAgLTQwMjcsMTYg KzQwNjksMjggQEAKIGNoYXIgKm1haWxkaXJfdG9fZW1haWwgKGNvbnN0IGNoYXIgKm1haWxk aXIpCiB7CiAJc3RhdGljIGNoYXIgZW1haWxbMjU2XTsKKwljaGFyIGNhbGxpbmdfZGlyW01B WF9CVUZGXTsKIAlpbnQgaTsKIAljaGFyICpwbnQsICpsYXN0OwogCWNoYXIgKm1kY29weTsK IAljaGFyICp1c2VyOwogCWludCBzYXdkb3Q7CiAJCi0JbWRjb3B5ID0gbWFsbG9jIChzdHJs ZW4gKG1haWxkaXIpICsgMSk7Ci0JaWYgKG1kY29weSA9PSBOVUxMKSByZXR1cm4gIiI7Ci0J c3RyY3B5IChtZGNvcHksIG1haWxkaXIpOwotCQorCS8qIHByZXBlbmQgdGhlIGN3ZCBpZiB0 aGUgbWFpbGRpciBzdGFydHMgd2l0aCAuLyAqLworCWlmIChzdHJsZW4gKG1haWxkaXIpID4g MSAmJiBtYWlsZGlyWzBdID09ICcuJyAmJiBtYWlsZGlyWzFdID09ICcvJykKKwl7CisJCWdl dGN3ZChjYWxsaW5nX2Rpciwgc2l6ZW9mKGNhbGxpbmdfZGlyKSk7CisJCW1kY29weSA9IG1h bGxvYyAoc3RybGVuIChtYWlsZGlyKSArIHN0cmxlbiAoY2FsbGluZ19kaXIpICsgMSk7CisJ CWlmIChtZGNvcHkgPT0gTlVMTCkgcmV0dXJuICIiOworCQlzdHJjYXQgKHN0cmNweSAobWRj b3B5LCBjYWxsaW5nX2RpciksIG1haWxkaXIgKyAxKTsKKwl9CisJZWxzZQorCXsKKwkJbWRj b3B5ID0gbWFsbG9jIChzdHJsZW4gKG1haWxkaXIpICsgMSk7CisJCWlmIChtZGNvcHkgPT0g TlVMTCkgcmV0dXJuICIiOworCQlzdHJjcHkgKG1kY29weSwgbWFpbGRpcik7CisJfQorCiAJ LyogZmluZCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIC9NYWlsZGlyLyAqLwogCXBudCA9IG1k Y29weTsKIAlkbyB7CkBAIC00MTkyLDcgKzQyNDYsNyBAQAogCWludCBwcmludGVkOyAgIC8q IG51bWJlciBvZiBjaGFyYWN0ZXJzIHByaW50ZWQgKi8KIAljb25zdCBjaGFyICpmOyAvKiBj dXJyZW50IHBvc2l0aW9uIGluIGZvcm1hdCBzdHJpbmcgKi8KIAljaGFyICpiOyAgICAgICAv KiBjdXJyZW50IHBvc2l0aW9uIGluIG91dHB1dCBidWZmZXIgKi8KLQljaGFyIG5bMjBdOyAg ICAvKiBidWZmZXIgdG8gaG9sZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbnVtYmVyICov CisJY2hhciBuWzYwXTsgICAgLyogYnVmZmVyIHRvIGhvbGQgc3RyaW5nIHJlcHJlc2VudGF0 aW9uIG9mIG51bWJlciAqLwogCQogICAgICAgICBpbnQgYXJnbiA9IDA7ICAvKiB1c2VkIGZv ciBudW1iZXJlZCBhcmd1bWVudHMgKi8KICAgICAgICAgY2hhciBhcmdzdHJbMTBdOwpAQCAt NDIyNCw5ICs0Mjc4LDE0IEBACiAJCQkJY2FzZSAndSc6CiAJCQkJCXNucHJpbnRmIChuLCBz aXplb2YobiksICIldSIsIHZhX2FyZyAoYXAsIHVuc2lnbmVkIGludCkpOwogCQkJCQlicmVh azsKKworCQkJCWNhc2UgJ1MnOgorCQkJCQlzbnByaW50ZiAobiwgc2l6ZW9mKG4pLCAiJWxs dSIsIHZhX2FyZyAoYXAsIHN0b3JhZ2VfdCkpOworCQkJCQlicmVhazsKIAkJCQkJCiAJCQkJ Y2FzZSAnbCc6CiAJCQkJCWYrKzsKKwogCQkJCQlzd2l0Y2ggKCpmKSB7CiAJCQkJCQljYXNl ICdkJzoKIAkJCQkJCWNhc2UgJ2knOgpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92 cG9wbWFpbGQuYyB2cG9wbWFpbC01LjUuMC92cG9wbWFpbGQuYwotLS0gdnBvcG1haWwtNS41 LjAub3JpZy92cG9wbWFpbGQuYwkyMDEwLTExLTA1IDE4OjM3OjIzLjAwMDAwMDAwMCArMDAw MAorKysgdnBvcG1haWwtNS41LjAvdnBvcG1haWxkLmMJMjAxNS0wOS0xNyAxMTo1NDoxMy4x OTMwOTQ5MjcgKzAxMDAKQEAgLTI0NSw4ICsyNDUsOCBAQAogCiAgIG1lbXNldChSZWFkQnVm LDAsc2l6ZW9mKFJlYWRCdWYpKTsKICAgaWYgKHNlbGVjdCgyLCZyZmRzLChmZF9zZXQgKikg MCwoZmRfc2V0ICopMCwmdHYpPj0xKSB7Ci0gICAgZmdldHMoUmVhZEJ1ZixzaXplb2YoUmVh ZEJ1Ziksc3RkaW4pOwotICAgIHJldHVybigxKTsKKyAgICBpZiAoZmdldHMoUmVhZEJ1Zixz aXplb2YoUmVhZEJ1Ziksc3RkaW4pICE9IE5VTEwpCisgICAgICByZXR1cm4oMSk7CiAgIH0K ICAgcmV0dXJuKC0xKTsKIH0KQEAgLTMwMSw3ICszMDEsNyBAQAogICAgIGV4aXQoIC0xICk7 CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0sp OworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0sp OwogICB3YWl0X3dyaXRlKCk7CiAKICAgLyogYXV0aGVudGljYXRlIGZpcnN0IG9yIGRyb3Ag Y29ubmVjdGlvbiAqLwpAQCAtMTIwMiw4ICsxMjAyLDggQEAKIHsKICBjaGFyICpkb21haW47 CiAgZG9tYWluX2VudHJ5ICplbnRyeTsKLSBjaGFyICphbGlhc2VzW01BWF9ET01fQUxJQVNd OwotIGludCAgaSwgYWxpYXNjb3VudD0wOworIHN0cmluZ19saXN0IGFsaWFzZXM7CisgaW50 IGk7CiAKICAgaWYgKCAhKEF1dGhWcHcucHdfZ2lkICYgU0FfQURNSU4pICkgewogICAgIHNo b3dfZXJyb3IoIEVSUl9OT1RfQVVUSE9SSVpFRCwgMTQwMSApOwpAQCAtMTIzMiwxMCArMTIz MiwxMSBAQAogICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tf TU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAorICBzdHJpbmdfbGlzdF9pbml0KCZhbGlhc2Vz LCAxMCk7CisKICAgd2hpbGUoIGVudHJ5ICkgewogICAgIGlmIChzdHJjbXAoZW50cnktPmRv bWFpbiwgZW50cnktPnJlYWxkb21haW4pICE9IDApIHsKLSAgICAgIGFsaWFzZXNbYWxpYXNj b3VudCsrXSA9IHN0cmR1cChlbnRyeS0+ZG9tYWluKTsKLQorICAgICAgc3RyaW5nX2xpc3Rf YWRkKCZhbGlhc2VzLCBlbnRyeS0+ZG9tYWluKTsKICAgICB9IGVsc2UgewogICAgICAgc25w cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwiZG9tYWluICVzIiBSRVRfQ1JMRiwg CiAgICAgICAgICAgICAgICBlbnRyeS0+ZG9tYWluKTsKQEAgLTEyNTgsMTQgKzEyNTksMTMg QEAKICAgICBlbnRyeSA9IGdldF9kb21haW5fZW50cmllcyhOVUxMKTsKICAgfQogCi0gIGZv cihpPTA7aTxhbGlhc2NvdW50O2krKykgeworICBmb3IoaT0wO2k8YWxpYXNlcy5jb3VudDtp KyspIHsKICAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCJhbGlhcyAl cyIgUkVUX0NSTEYsIAotICAgICAgICAgICAgIGFsaWFzZXNbaV0pOworICAgICAgICAgICAg IGFsaWFzZXMudmFsdWVzW2ldKTsKICAgICB3YWl0X3dyaXRlKCk7Ci0gICAgZnJlZSggYWxp YXNlc1tpXSApOwogICB9IAogCi0KKyAgc3RyaW5nX2xpc3RfZnJlZSgmYWxpYXNlcyk7CiAK ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7 CiAgIHJldHVybigwKTsKQEAgLTE0MjAsNyArMTQyMCw3IEBACiAgICAgcmV0dXJuKC0xKTsK ICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PSyk7 CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PSyk7 CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAKICAgICAgIHN0cmVy cm9yKGVycm5vKSk7CiAgICAgcmV0dXJuKC0xKTsKICAgfQotICBzbnByaW50ZihXcml0ZUJ1 ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE0 NzYsNyArMTQ3Niw3IEBACiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdy aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25wcmludGYoV3Jp dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dy aXRlKCk7CiAKICAgd2hpbGUoKG15ZGlyZW50PXJlYWRkaXIobXlkaXIpKSE9TlVMTCl7CkBA IC0xNTE0LDcgKzE1MTQsNyBAQAogICAgIC8qIG9oIHdlbGwsIGF0IGxlYXN0IHdlIG1pZ2h0 IGRpZSBzb29uICovCiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRl QnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0 ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTU0 NSw5ICsxNTQ1LDggQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3Jp dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmludGYoV3JpdGVCdWYs c2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgcmV0dXJuKDApOwotCiB9CiAK IApAQCAtMTU3Miw3ICsxNTcxLDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25w cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmludGYo V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgcmV0dXJuKDAp OwogfQogCkBAIC0xNjA1LDcgKzE2MDQsNyBAQAogICB9CiAgIGZjbG9zZShmcyk7CiAKLSAg c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmlu dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgcmV0dXJu KDApOwogfQogCkBAIC0xNjMwLDcgKzE2MjksNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0K IAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7 CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19N T1JFKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIHdoaWxlKGZnZXRzKHRtcGJ1ZixzaXplb2Yo dG1wYnVmKSxmcykhPU5VTEwpewpAQCAtMTY0NSw3ICsxNjQ0LDcgQEAKICAgZmNsb3NlKGZz KTsKIAogICBpZiAoIHRtcGJ1ZlswXSAhPSAwICYmIHRtcGJ1ZltzdHJsZW4odG1wYnVmKS0x XSAhPSAnXG4nICkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks IFJFVF9DUkxGICIuIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m KFdyaXRlQnVmKSwgIiVzIiwgUkVUX0NSTEYgIi4iIFJFVF9DUkxGKTsKICAgfSBlbHNlIHsK ICAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYp OwogICB9CkBAIC0xNjcyLDExICsxNjcxLDExIEBACiAgICAgICBzdHJlcnJvcihlcnJubykp OwogICAgIHJldHVybigtMSk7CiAgIH0KLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy aXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp dGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKICAgc25wcmlu dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgInVpZDogJWRcbiIsIG15c3RhdC5zdF91 aWQpOyAKICAgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp dGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp dGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE3 NDEsNyArMTc0MCw3IEBACiAgICAgZW50cnk9Z2V0X2RvbWFpbl9lbnRyaWVzKE5VTEwpOwog ICAgIAogICB9Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBS RVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs ICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTc3OCw3ICsxNzc3LDcg QEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m KFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBj b3VudCA9IDA7CkBAIC0xNzk2LDcgKzE3OTUsNyBAQAogICB9CiAKICAgaWYoIG1pc3MgKSB7 Ci0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxG KTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIg UkVUX0NSTEYpOwogICAgIHJldHVybigwKTsKICAgfSBlbHNlIGlmKCBwZXJfcGFnZSA+IDAg KSB7CiAgICAgcGFnZSA9ICggY291bnQgLyBwZXJfcGFnZSApICsgMTsKQEAgLTE4MDcsNyAr MTgwNiw3IEBACiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJwYWdl ICVpIiBSRVRfQ1JMRiwgcGFnZSApOwogICB3YWl0X3dyaXRlKCk7CiAKLSAgc25wcmludGYo V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYo V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgcmV0 dXJuKDApOwogfQogCkBAIC0xODI4LDcgKzE4MjcsNyBAQAogICAgIHJldHVybigtMSk7CiAg IH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9S RSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9P S19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGNvdW50ID0gMDsKQEAgLTE4NDAsNyAr MTgzOSw3IEBACiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJjb3Vu dCAlaSIgUkVUX0NSTEYsIGNvdW50KTsKICAgd2FpdF93cml0ZSgpOwogCi0gIHNucHJpbnRm KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRm KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJl dHVybigwKTsKIH0KIApAQCAtMTg3Myw3ICsxODcyLDcgQEAKICAgICAgcmV0dXJuKC0xKTsK ICAgIH0KICAKLSAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCBSRVRf T0tfTU9SRSk7CisgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVz IiwgUkVUX09LX01PUkUpOwogICAgd2FpdF93cml0ZSgpOwogIAogICAgZmlyc3Q9MTsKQEAg LTE4ODUsNyArMTg4NCw3IEBACiAKICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0 ZUJ1ZiksICJjb3VudCAlaSIgUkVUX0NSTEYsIGNvdW50KTsKICAgIHdhaXRfd3JpdGUoKTsK LSAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7 CisgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVU X0NSTEYpOwogICAgcmV0dXJuKDApOwogIH0KICAgCSAKQEAgLTE5MzksNyArMTkzOCw3IEBA CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo V3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBm aXJzdD0xOwpAQCAtMTk1NiwxMyArMTk1NSwxMyBAQAogICAgICAgc2VuZF91c2VyX2luZm8o dG1wdnB3KTsKICAgICB9CiAKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRl QnVmKSwgUkVUX0NSTEYgKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRl QnVmKSwgIiVzIiwgUkVUX0NSTEYgKTsKICAgICB3YWl0X3dyaXRlKCk7CiAKICAgICArK2Nv dW50OwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4i IFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVz IiwgIi4iIFJFVF9DUkxGKTsKICAgcmV0dXJuKDApOwogfQogCkBAIC0yMDE3LDcgKzIwMTYs NyBAQAogICAvKiAgcHJpbnQgYWxsIGFsaWFzZXMgICovCiAgIGlmIChzdHJzdHIoRW1haWws ICJAIikgPT0gTlVMTCkgewogICAgIHRtcGFsaWFzID0gdmFsaWFzX3NlbGVjdF9hbGwoQWxp YXMsIEVtYWlsKTsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwg UkVUX09LX01PUkUpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYp LCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgICAgd2FpdF93cml0ZSgpOwogICAgICAgCiAgICAg d2hpbGUgKHRtcGFsaWFzICE9IE5VTEwpIHsKQEAgLTIwMzAsOSArMjAyOSw5IEBACiAgIH0g ZWxzZSB7CiAgICAgdG1wYWxpYXMgPSB2YWxpYXNfc2VsZWN0KEFsaWFzLCBEb21haW4pOwog ICAgIGlmICh0bXBhbGlhcyA9PSBOVUxMKSB7Ci0gICAgICBzbnByaW50ZihXcml0ZUJ1Ziwg c2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBz aXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICAgIH0gZWxzZSB7Ci0gICAgICBz bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICAg ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19N T1JFKTsKICAgICAgIHdhaXRfd3JpdGUoKTsKICAgICAgIAogICAgICAgd2hpbGUgKHRtcGFs aWFzICE9IE5VTEwpIHsKQEAgLTIwNDMsNyArMjA0Miw3IEBACiAgICAgfQogICB9CiAKLSAg c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAg c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxG KTsKICAgcmV0dXJuKDApOwogfQogCkBAIC0yMTA2LDcgKzIxMDUsNyBAQAogICAgIHJldHVy bigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwg UkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwg IiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgaiA9IGJrc2NhbmRp cigiLiIsICZuYW1lbGlzdCwgMCwgcWFfc29ydCk7CkBAIC0yMTM1LDcgKzIxMzQsNyBAQAog ICAgIH0KICAgICArK2NvdW50OwogICB9Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihX cml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihX cml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAt MjE1NywxNiArMjE1NiwxNiBAQAogCiAgIGlmICh2YXV0aF9tb2R1bGVfZmVhdHVyZSgiSVBf QUxJQVNfRE9NQUlOUyIpKSB7CiAgIGlmICggdmdldF9pcF9tYXAoaXAsdG1wZG9tYWluLHNp emVvZih0bXBkb21haW4pKSA8IDAgKSB7Ci0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m KFdyaXRlQnVmKSwgUkVUX0VSUiAiMC4zMDAzIGVycm9yIiBSRVRfQ1JMRik7CisgICAgc25w cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX0VSUiAiMC4zMDAz IGVycm9yIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRm KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksUkVUX09LX01PUkUpOworICBzbnByaW50ZihX cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRf d3JpdGUoKTsKICAKICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwiJXMg JXMiIFJFVF9DUkxGLCBpcCwgdG1wZG9tYWluKTsKICAgd2FpdF93cml0ZSgpOwotICBzbnBy aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnBy aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwog ICB9CiAKICAgZWxzZQpAQCAtMjIwMiwxMSArMjIwMSwxMSBAQAogICB9CiAKICAgaWYgKCB2 YWRkX2lwX21hcChpcCxkb21haW4pIDwgMCApIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Zixz aXplb2YoV3JpdGVCdWYpLCBSRVRfRVJSICIwLjMxMDUgZXJyb3IiIFJFVF9DUkxGKTsKKyAg ICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfRVJSICIw LjMxMDUgZXJyb3IiIFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25w cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSxSRVRfT0spOworICBzbnByaW50ZihX cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICAgfQogCiAgICBl bHNlCkBAIC0yMjQxLDcgKzIyNDAsNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBz bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLFJFVF9PSyk7CisgIHNucHJpbnRm KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PSyk7CiAgIH0KIAogICBl bHNlCkBAIC0yMjYyLDcgKzIyNjEsNyBAQAogICB9CiAKICAgaWYgKHZhdXRoX21vZHVsZV9m ZWF0dXJlKCJJUF9BTElBU19ET01BSU5TIikpIHsKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6 ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAog ICBmaXJzdCA9IDE7CkBAIC0yMjcyLDcgKzIyNzEsNyBAQAogICAgIHNucHJpbnRmKFdyaXRl QnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMgJXMiIFJFVF9DUkxGLCByX2lwLCByX2RvbWFp bik7CiAgICAgd2FpdF93cml0ZSgpOwogICB9Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv ZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv ZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIH0KIAogICBlbHNlCkBAIC0y MzAyLDcgKzIzMDEsNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihX cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgIHNucHJpbnRmKFdy aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsKICAgd2FpdF93 cml0ZSgpOwogCiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJtYXhf cG9wYWNjb3VudHMgJWQiIFJFVF9DUkxGLCAKQEAgLTIzMTUsNzQgKzIzMTQsNzQgQEAKICAg ICBteWxpbWl0cy5tYXhhdXRvcmVzcG9uZGVycyk7IHdhaXRfd3JpdGUoKTsKICAgc25wcmlu dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIm1heF9tYWlsaW5nbGlzdHMgJWQiIFJF VF9DUkxGLCAKICAgICBteWxpbWl0cy5tYXhtYWlsaW5nbGlzdHMpOyB3YWl0X3dyaXRlKCk7 Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNrX3F1b3RhICVk IiBSRVRfQ1JMRiwgCisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJk aXNrX3F1b3RhICVsbHUiIFJFVF9DUkxGLCAKICAgICBteWxpbWl0cy5kaXNrcXVvdGEpOyB3 YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJt YXhfbXNnY291bnQgJWQiIFJFVF9DUkxGLCAKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m KFdyaXRlQnVmKSwgIm1heF9tc2djb3VudCAlbGx1IiBSRVRfQ1JMRiwgCiAgICAgbXlsaW1p dHMubWF4bXNnY291bnQpOyB3YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNp emVvZihXcml0ZUJ1ZiksICJkZWZhdWx0X3F1b3RhICVkIiBSRVRfQ1JMRiwgCisgIHNucHJp bnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkZWZhdWx0X3F1b3RhICVsbHUiIFJF VF9DUkxGLCAKICAgICBteWxpbWl0cy5kZWZhdWx0cXVvdGEpOyB3YWl0X3dyaXRlKCk7Ci0g IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkZWZhdWx0X21heG1zZ2Nv dW50ICVkIiBSRVRfQ1JMRiwgCisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1 ZiksICJkZWZhdWx0X21heG1zZ2NvdW50ICVsbHUiIFJFVF9DUkxGLCAKICAgICBteWxpbWl0 cy5kZWZhdWx0bWF4bXNnY291bnQpOyB3YWl0X3dyaXRlKCk7CiAKICAgaWYgKG15bGltaXRz LmRpc2FibGVfcG9wKSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYp LCAiZGlzYWJsZV9wb3AgMSIgUkVUX0NSTEYpOyAKKyAgICBzbnByaW50ZihXcml0ZUJ1Zixz aXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9wb3AgMSIgUkVUX0NSTEYpOyAKICAg ZWxzZSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlzYWJs ZV9wb3AgMCIgUkVUX0NSTEYpOyAKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp dGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9wb3AgMCIgUkVUX0NSTEYpOyAKIAogICB3YWl0X3dy aXRlKCk7CiAKICAgaWYgKG15bGltaXRzLmRpc2FibGVfaW1hcCkgCi0gICAgc25wcmludGYo V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfaW1hcCAxIiBSRVRfQ1JMRik7 CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2Fi bGVfaW1hcCAxIiBSRVRfQ1JMRik7CiAgIGVsc2UKLSAgICBzbnByaW50ZihXcml0ZUJ1Zixz aXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9pbWFwIDAiIFJFVF9DUkxGKTsKKyAgICBzbnBy aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9pbWFwIDAi IFJFVF9DUkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxl X2RpYWx1cCkgCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRp c2FibGVfZGlhbHVwIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9kaWFsdXAgMSIgUkVUX0NSTEYpOwogICBl bHNlIAotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxl X2RpYWx1cCAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy aXRlQnVmKSwgIiVzIiwgImRpc2FibGVfZGlhbHVwIDAiIFJFVF9DUkxGKTsKICAgd2FpdF93 cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3Bhc3N3b3JkY2hhbmdpbmcpIAot ICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3Bhc3N3 b3JkX2NoYW5naW5nIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9wYXNzd29yZF9jaGFuZ2luZyAxIiBSRVRf Q1JMRik7CiAgIGVsc2UgCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVm KSwgImRpc2FibGVfcGFzc3dvcmRfY2hhbmdpbmcgMCIgUkVUX0NSTEYpOworICAgIHNucHJp bnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX3Bhc3N3b3Jk X2NoYW5naW5nIDAiIFJFVF9DUkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxp bWl0cy5kaXNhYmxlX3dlYm1haWwpCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy aXRlQnVmKSwgImRpc2FibGVfd2VibWFpbCAxIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYo V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfd2VibWFpbCAxIiBS RVRfQ1JMRik7CiAgIGVsc2UKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVC dWYpLCAiZGlzYWJsZV93ZWJtYWlsIDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0 ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV93ZWJtYWlsIDAiIFJFVF9D UkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3JlbGF5 KQotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX2V4 dGVybmFsX3JlbGF5IDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9leHRlcm5hbF9yZWxheSAxIiBSRVRfQ1JM Rik7CiAgIGVsc2UKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi ZGlzYWJsZV9leHRlcm5hbF9yZWxheSAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3Jp dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfZXh0ZXJuYWxfcmVsYXkg MCIgUkVUX0NSTEYpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgaWYgKG15bGltaXRzLmRpc2Fi bGVfc210cCkKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlz YWJsZV9zbXRwIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9zbXRwIDEiIFJFVF9DUkxGKTsKICAgZWxzZQot ICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3NtdHAg MCIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks ICIlcyIsICJkaXNhYmxlX3NtdHAgMCIgUkVUX0NSTEYpOwogICB3YWl0X3dyaXRlKCk7CiAK ICAgaWYgKG15bGltaXRzLmRpc2FibGVfc3BhbWFzc2Fzc2luKSAKLSAgICBzbnByaW50ZihX cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9zcGFtYXNzYXNzaW4gMSIgUkVU X0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs ICJkaXNhYmxlX3NwYW1hc3Nhc3NpbiAxIiBSRVRfQ1JMRik7CiAgIGVsc2UgCi0gICAgc25w cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfc3BhbWFzc2Fzc2lu IDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYp LCAiJXMiLCAiZGlzYWJsZV9zcGFtYXNzYXNzaW4gMCIgUkVUX0NSTEYpOwogICB3YWl0X3dy aXRlKCk7CiAKICAgaWYgKG15bGltaXRzLmRlbGV0ZV9zcGFtKQotICAgIHNucHJpbnRmKFdy aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkZWxldGVfc3BhbSAxIiBSRVRfQ1JMRik7Cisg ICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRlbGV0ZV9z cGFtIDEiIFJFVF9DUkxGKTsKICAgZWxzZQotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv ZihXcml0ZUJ1ZiksICJkZWxldGVfc3BhbSAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYo V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRlbGV0ZV9zcGFtIDAiIFJFVF9D UkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX21haWxk cm9wKSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlzYWJs ZV9tYWlsZHJvcCAxIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m KFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfbWFpbGRyb3AgMSIgUkVUX0NSTEYpOwogICBl bHNlIAotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxl X21haWxkcm9wIDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9tYWlsZHJvcCAwIiBSRVRfQ1JMRik7CiAgIHdh aXRfd3JpdGUoKTsKIAogICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi cGVybV9hY2NvdW50ICVkIiBSRVRfQ1JMRiwgCkBAIC0yNDA1LDcgKzI0MDQsNyBAQAogICAg IG15bGltaXRzLnBlcm1fZGVmYXVsdHF1b3RhKTsgd2FpdF93cml0ZSgpOwogICB3YWl0X3dy aXRlKCk7CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJF VF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwg Ii4iIFJFVF9DUkxGKTsKICAgcmV0dXJuKDApOwogfQogCkBAIC0yNDM0LDcgKzI0MzMsNyBA QAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVC dWYpLCAiJXMiLCBSRVRfT0spOwogICB3YWl0X3dyaXRlKCk7CiAKICAgd2hpbGUoZmdldHMo UmVhZEJ1ZixzaXplb2YoUmVhZEJ1Ziksc3RkaW4pIT1OVUxMICkgewpAQCAtMjQ0Miw3ICsy NDQxLDcgQEAKIAogICAgIGlmICggKHBhcmFtID0gc3RydG9rKFJlYWRCdWYsUEFSQU1fVE9L RU5TKSkgPT0gTlVMTCApIGNvbnRpbnVlOwogICAgIGlmICggKHZhbHVlID0gc3RydG9rKE5V TEwsUEFSQU1fVE9LRU5TKSkgPT0gTlVMTCApICB7Ci0gICAgICBzbnByaW50ZihXcml0ZUJ1 ZixzaXplb2YoV3JpdGVCdWYpLCAKKyAgICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihX cml0ZUJ1ZiksICIlcyIsCiAgICAgICAgICIgIFdhcm5pbmc6IG1pc3NpbmcgdmFsdWUiIFJF VF9DUkxGKTsKICAgICAgIHdhaXRfd3JpdGUoKTsKICAgICAgIGNvbnRpbnVlOwpAQCAtMjUw NSw3ICsyNTA0LDcgQEAKICAgICB9IGVsc2UgaWYgKCBzdHJjbXAocGFyYW0sInBlcm1fZGVm YXVsdHF1b3RhIikgPT0gMCApIHsKICAgICAgIG15bGltaXRzLnBlcm1fZGVmYXVsdHF1b3Rh ID0gYXRvaSh2YWx1ZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgIHNucHJpbnRmKFdyaXRlQnVm LHNpemVvZihXcml0ZUJ1ZiksIAorICAgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy aXRlQnVmKSwgIiVzIiwKICAgICAgICAgIiAgV2FybmluZzogaW52YWxpZCBvcHRpb24iIFJF VF9DUkxGKTsKICAgICAgIHdhaXRfd3JpdGUoKTsKICAgICB9CkBAIC0yNTE1LDcgKzI1MTQs NyBAQAogICBpZiAoIHZzZXRfbGltaXRzKGRvbWFpbiwmbXlsaW1pdHMpIDwgMCApIHsKICAg ICBzaG93X2Vycm9yKCBFUlJfTk9fU0VUX0xJTUlUUywgMzUwNCApOwogICB9IGVsc2Ugewot ICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksUkVUX09LKTsKKyAgICBz bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICB9 CiAgIHJldHVybigwKTsKIH0KQEAgLTI1NDEsNyArMjU0MCw3IEBACiAgICAgcmV0dXJuKC0x KTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9P Syk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9P Syk7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMjU3NiwxMCArMjU3NSwxMCBAQAogICB9IAog CiAgIGlmICghKHZhdXRoX21vZHVsZV9mZWF0dXJlKCJBVVRIX0xPR0dJTkciKSkpCi0JICBz bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0spOworCSAgc25wcmlu dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKIAogICBlbHNl IHsKLQkgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JF KTsKKwkgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9P S19NT1JFKTsKIAkgIHdhaXRfd3JpdGUoKTsKIAogCSAgc25wcmludGYoV3JpdGVCdWYsIHNp emVvZihXcml0ZUJ1ZiksICJ0aW1lICVsZCIgUkVUX0NSTEYsCkBAIC0yNTkwLDcgKzI1ODks NyBAQAogCQkgdmdldF9sYXN0YXV0aGlwKHRtcHZwdywgVG1wRG9tYWluKSk7CiAJICB3YWl0 X3dyaXRlKCk7CiAKLQkgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIu IiBSRVRfQ1JMRik7CisJICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi JXMiLCAiLiIgUkVUX0NSTEYpOwogICB9CiAKICAgcmV0dXJuKDApOwpAQCAtMjYxNywzNSAr MjYxNiwzNiBAQAogaW50IGdldF91c2VyX3NpemUoKQogewogICBjaGFyICplbWFpbF9hZGRy ZXNzOwotICBpbnQgcmV0LCBjbnQ7Ci0gIGxvbmcgYnl0ZXM7CisgIGludCByZXQ7CisgIHN0 b3JhZ2VfdCBjbnQ7CisgIHN0b3JhZ2VfdCBieXRlczsKIAogICBpZiAoIShBdXRoVnB3LnB3 X2dpZCAmIFFBX0FETUlOKSAmJiAhKEF1dGhWcHcucHdfZ2lkICYgU0FfQURNSU4pKSB7Ci0g ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9FUlIgIjM4MDEg bm90IGF1dGhvcml6ZWQiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6 ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX0VSUiAiMzgwMSBub3QgYXV0aG9yaXplZCIgUkVU X0NSTEYpOwogICAgIHJldHVybigtMSk7CiAgIH0KIAogICBpZiAoKGVtYWlsX2FkZHJlc3Mg PSBzdHJ0b2soTlVMTCwgVE9LRU5TKSkgPT0gTlVMTCkgewotICAgIHNucHJpbnRmKFdyaXRl QnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m KFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9FUlIgIjM4MDIgZW1haWxfYWRkcmVzcyBy ZXF1aXJlZCIgUkVUX0NSTEYpOwogICAgIHJldHVybigtMSk7CiAgIH0KIAogICBpZiAocGFy c2VfZW1haWwoZW1haWxfYWRkcmVzcywgVG1wVXNlciwgVG1wRG9tYWluLCBBVVRIX1NJWkUp ICE9IDApIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgCisg ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICBS RVRfRVJSICIzODAzIGludmFsaWQgZW1haWwgYWRkcmVzcyIgUkVUX0NSTEYpOwogICAgIHJl dHVybigtMSk7CiAgIH0KIAogICBpZiAoIShBdXRoVnB3LnB3X2dpZCAmIFNBX0FETUlOKSAm JiAoQXV0aFZwdy5wd19naWQgJiBRQV9BRE1JTikgCiAgICAgJiYgKHN0cmNtcChUaGVEb21h aW4sIFRtcERvbWFpbikgIT0gMCkpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m KFdyaXRlQnVmKSwgCisgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1Ziks ICIlcyIsCiAgICAgICBSRVRfRVJSICIzODA0IG5vdCBhdXRob3JpemVkIGZvciBkb21haW4i IFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CiAKICAgaWYgKCh0bXB2cHcgPSB2 YXV0aF9nZXRwdyhUbXBVc2VyLCBUbXBEb21haW4pKSA9PSBOVUxMKSB7Ci0gICAgc25wcmlu dGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIAorICAgIHNucHJpbnRmKFdyaXRlQnVm LCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLAogICAgICAgUkVUX0VSUiAiMzgwNSB1c2VyIGRv ZXMgbm90IGV4aXN0IiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQpAQCAtMjY1 MywxOCArMjY1MywxOCBAQAogICBieXRlcyA9IDA7CiAgIGNudCA9IDA7CiAgIGlmICgocmV0 ID0gcmVhZHVzZXJxdW90YSh0bXB2cHctPnB3X2RpciwgJmJ5dGVzLCAmY250KSkgIT0gMCkg ewotICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBzbnBy aW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9FUlIg IjM4MDYgdW5hYmxlIHRvIGZldGNoIHNpemUgb2YgdXNlciBhY2NvdW50IiBSRVRfQ1JMRik7 CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo V3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKLSAgc25w cmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJzaXplICVsZCIgUkVUX0NSTEYs IGJ5dGVzKTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJzaXpl ICVsbHUiIFJFVF9DUkxGLCBieXRlcyk7CiAgIHdhaXRfd3JpdGUoKTsKLSAgc25wcmludGYo V3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJjb3VudCAlZCIgUkVUX0NSTEYsIGNudCk7 CisgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiY291bnQgJWx1IiBS RVRfQ1JMRiwgY250KTsKICAgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1Ziwg c2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYs IHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAKICAgcmV0dXJuKDAp OwogfQpAQCAtMjY3MiwzMSArMjY3MiwzMiBAQAogaW50IGdldF9kb21haW5fc2l6ZSgpCiB7 CiAgIGNoYXIgKmRvbWFpbiwgdG1wZGlyWzI1Nl07Ci0gIGludCByZXQsIGNudCwgZmlyc3Q7 Ci0gIGxvbmcgYnl0ZXM7Ci0gIHVuc2lnbmVkIGludCB0b3RhbGNudDsKLSAgdW5zaWduZWQg bG9uZyBsb25nIHRvdGFsYnl0ZXM7CisgIGludCByZXQsIGZpcnN0OworICBzdG9yYWdlX3Qg Y250OworICBzdG9yYWdlX3QgYnl0ZXM7CisgIHN0b3JhZ2VfdCB0b3RhbGNudDsKKyAgc3Rv cmFnZV90IHRvdGFsYnl0ZXM7CiAKICAgaWYgKCEoQXV0aFZwdy5wd19naWQgJiBRQV9BRE1J TikgJiYgIShBdXRoVnB3LnB3X2dpZCAmIFNBX0FETUlOKSkgewotICAgIHNucHJpbnRmKFdy aXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6 ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9FUlIgIjM5MDEgbm90IGF1dGhvcml6 ZWQiIFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CiAKICAgaWYgKChkb21haW4g PSBzdHJ0b2soTlVMTCwgVE9LRU5TKSkgPT0gTlVMTCkgewotICAgIHNucHJpbnRmKFdyaXRl QnVmLCBzaXplb2YoV3JpdGVCdWYpLCAKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m KFdyaXRlQnVmKSwgIiVzIiwKICAgICAgIFJFVF9FUlIgIjM5MDIgZG9tYWluIHJlcXVpcmVk IiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCiAgIGlmICghKEF1dGhWcHcu cHdfZ2lkICYgU0FfQURNSU4pICYmIChBdXRoVnB3LnB3X2dpZCAmIFFBX0FETUlOKSAKICAg ICAmJiAoc3RyY21wKFRoZURvbWFpbiwgZG9tYWluKSAhPSAwKSkgewotICAgIHNucHJpbnRm KFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLAorICAgIHNucHJpbnRmKFdyaXRlQnVmLCBz aXplb2YoV3JpdGVCdWYpLCAiJXMiLAogICAgICAgUkVUX0VSUiAiMzkwMyBub3QgYXV0aG9y aXplZCBmb3IgZG9tYWluIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0g IHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7Cisg IHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9S RSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICB0b3RhbGJ5dGVzID0gMDsKQEAgLTI3MTQsMTIg KzI3MTUsMTIgQEAKICAgICB9IGVsc2UgewogICAgICAgc25wcmludGYoV3JpdGVCdWYsIHNp emVvZihXcml0ZUJ1ZiksICJ1c2VyICVzQCVzIiBSRVRfQ1JMRiwgdG1wdnB3LT5wd19uYW1l LCBkb21haW4pOwogICAgICAgd2FpdF93cml0ZSgpOwotICAgICAgc25wcmludGYoV3JpdGVC dWYsIHNpemVvZihXcml0ZUJ1ZiksICJzaXplICVsZCIgUkVUX0NSTEYsIGJ5dGVzKTsKKyAg ICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAic2l6ZSAlbGx1IiBS RVRfQ1JMRiwgYnl0ZXMpOwogICAgICAgd2FpdF93cml0ZSgpOwotICAgICAgc25wcmludGYo V3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJjb3VudCAlZCIgUkVUX0NSTEYsIGNudCk7 CisgICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgImNvdW50ICVs bHUiIFJFVF9DUkxGLCBjbnQpOwogICAgICAgd2FpdF93cml0ZSgpOwotICAgICAgdG90YWxi eXRlcyArPSAodW5zaWduZWQgbG9uZylieXRlczsKLSAgICAgIHRvdGFsY250ICs9ICh1bnNp Z25lZCBpbnQpY250OworICAgICAgdG90YWxieXRlcyArPSBieXRlczsKKyAgICAgIHRvdGFs Y250ICs9IGNudDsKICAgICB9CiAgIH0KIApAQCAtMjcyNywxNiArMjcyOCwxNiBAQAogICB3 YWl0X3dyaXRlKCk7CiAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAi c2l6ZSAlbGx1IiBSRVRfQ1JMRiwgdG90YWxieXRlcyk7CiAgIHdhaXRfd3JpdGUoKTsKLSAg c25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICJjb3VudCAldSIgUkVUX0NS TEYsIHRvdGFsY250KTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1Ziks ICJjb3VudCAlbGx1IiBSRVRfQ1JMRiwgdG90YWxjbnQpOwogICB3YWl0X3dyaXRlKCk7Ci0g IHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOwor ICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9D UkxGKTsKIAogICByZXR1cm4oMCk7CiB9CiAKIGludCBxdWl0KCkKIHsKLSAgc25wcmludGYo V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmludGYoV3JpdGVC dWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgd2FpdF93cml0ZSgpOwog ICB2Y2xvc2UoKTsKIApAQCAtMjc0Nyw3ICsyNzQ4LDcgQEAKIHsKICBpbnQgaTsKIAotICBz bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisgIHNu cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsK ICAgd2FpdF93cml0ZSgpOwogCiAgIGZvcihpPTA7TG9naW5GdW5jdGlvbnNbaV0uY29tbWFu ZCE9TlVMTDsrK2kgKSB7CkBAIC0yNzYyLDcgKzI3NjMsNyBAQAogICAgIH0KICAgICB3YWl0 X3dyaXRlKCk7CiAgIH0KLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwg Ii4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwg IiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgCiAgIHJldHVybigxKTsgCiB9CmRpZmYgLXVQciB2 cG9wbWFpbC01LjUuMC5vcmlnL3Zwb3BtYWlsLmggdnBvcG1haWwtNS41LjAvdnBvcG1haWwu aAotLS0gdnBvcG1haWwtNS41LjAub3JpZy92cG9wbWFpbC5oCTIwMTAtMTEtMDUgMTg6Mzc6 MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC92cG9wbWFpbC5oCTIwMTUt MDktMTcgMTE6NDE6MDIuNzM3MDk1Mzc0ICswMTAwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNp bmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgkJLy8gZm9yIHVpZF90 CisjaW5jbHVkZSAic3RvcmFnZS5oIgogI2luY2x1ZGUgInZhdXRoLmgiCiAKIC8qICBFbmFi bGUgZXhwYW5kZWQgZGVidWcgaW5mb3JtYXRpb24uICBDb25zaWRlciB0aGVzZSBmb3IgLi9j b25maWd1cmUgb3B0aW9ucyAgKi8KQEAgLTM1LDcgKzM2LDYgQEAKIAogLyogbWF4IGJ1ZmZl ciBzaXplcyAqLwogI2RlZmluZSBNQVhfQlVGRiAzMDAKLSNkZWZpbmUgTUFYX0RPTV9BTElB UyAxMDAKIAogLyogbWF4IGZpZWxkIHNpemVzICovCiAjZGVmaW5lIE1BWF9QV19OQU1FICAg ICAgICAgIDMyCkBAIC0xNjYsNiArMTY2LDE2IEBACiAjZGVmaW5lIFJFUExZVE9fTElTVCAy CiAjZGVmaW5lIFJFUExZVE9fQUREUkVTUyAzCiAKKy8qICAgTGlzdCBvZiBzdHJpbmdzICov Cit0eXBlZGVmIHN0cnVjdCBzdHJpbmdfbGlzdCB7CisgICAgaW50IHNpemU7CisgICAgaW50 IGNvdW50OworICAgIGNoYXIgKip2YWx1ZXM7Cit9IHN0cmluZ19saXN0OworCit2b2lkIHN0 cmluZ19saXN0X2luaXQoc3RyaW5nX2xpc3QgKmEsIGludCBmaXJzdCk7CitpbnQgc3RyaW5n X2xpc3RfYWRkKHN0cmluZ19saXN0ICphLCBjaGFyICp2YWx1ZSk7Cit2b2lkIHN0cmluZ19s aXN0X2ZyZWUoc3RyaW5nX2xpc3QgKmEpOwogCiAvKiAgIERvbWFpbiBlbnRyeSAgKi8KIHR5 cGVkZWYgc3RydWN0IGRvbWFpbl9lbnRyeSB7CkBAIC0xNzQsMTEgKzE4NCw4IEBACiAgICAg ICAgIGludCAgICAgICAgICAgICB1aWQ7CiAgICAgICAgIGludCAgICAgICAgICAgICBnaWQ7 CiAgICAgICAgIGNoYXIgICAgKnBhdGg7Ci0gICAgICAgIGNoYXIgICAgKmFsaWFzZXNbTUFY X0RPTV9BTElBU107CiB9IGRvbWFpbl9lbnRyeTsKIAotCi0KIC8qICAgU3RydWN0dXJlIGZv ciBtYWlsaW5nIGxpc3QgZGF0YSAgKi8KIHR5cGVkZWYgc3RydWN0IGxpc3RJbmZvVHlwZSB7 CiAgICBkb21haW5fZW50cnkgKmVudHJ5OwpAQCAtMjk1LDExICszMDIsMTEgQEAKIGludCBh ZGRfZG9tYWluX2Fzc2lnbiggY2hhciAqYWxpYXNfZG9tYWluLCBjaGFyICpyZWFsX2RvbWFp biwgCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmRpciwgdWlkX3QgdWlkLCBnaWRf dCBnaWQpOwogLy9pbnQgZGVsX2NvbnRyb2woIGNoYXIgKik7Ci1pbnQgZGVsX2NvbnRyb2wo IGNoYXIgKmFsaWFzZXNbTUFYX0RPTV9BTElBU10sIGludCBhbGlhc2NvdW50KTsKLWludCBk ZWxfZG9tYWluX2Fzc2lnbiggY2hhciAqYWxpYXNpZXNbTUFYX0RPTV9BTElBU10sIGludCBh bGlhc2NvdW50LCAKK2ludCBkZWxfY29udHJvbCggY2hhciAqKmFsaWFzZXMsIGludCBhbGlh c2NvdW50KTsKK2ludCBkZWxfZG9tYWluX2Fzc2lnbiggY2hhciAqKmFsaWFzaWVzLCBpbnQg YWxpYXNjb3VudCwgCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnJlYWxfZG9tYWlu LAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpkaXIsIHVpZF90IHVpZCwgZ2lkX3Qg Z2lkKTsKLWludCByZW1vdmVfbGluZXMoIGNoYXIgKmZpbGVuYW1lLCBjaGFyICphbGlhc2Vz W01BWF9ET01fQUxJQVNdLCBpbnQgYWxpYXNjb3VudCk7CitpbnQgcmVtb3ZlX2xpbmVzKCBj aGFyICpmaWxlbmFtZSwgY2hhciAqKmFsaWFzZXMsIGludCBhbGlhc2NvdW50KTsKIGludCBz aWduYWxfcHJvY2VzcyggY2hhciAqLCBpbnQgKTsKIGludCB1cGRhdGVfbmV3dSgpOwogaW50 IGFkZF91c2VyX2Fzc2lnbiggY2hhciAqLCBjaGFyICopOwpAQCAtMzM2LDcgKzM0Myw3IEBA CiBjaGFyICpmb3JtYXRfbWFpbGRpcnF1b3RhKGNvbnN0IGNoYXIgKnEpOwogY2hhciAqZGF0 ZV9oZWFkZXIoKTsKIGludCBxbnByaW50ZiAoY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSwg Y29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwotaW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hh ciogZGlyLCBsb25nICpzaXplcCwgaW50ICpjbnRwKTsKK2ludCByZWFkdXNlcnF1b3RhKGNv bnN0IGNoYXIqIGRpciwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKTsKICNp Zm5kZWYgSEFWRV9XQVJOCiAjZGVmaW5lIHdhcm4oLi4uKSBmcHJpbnRmKHN0ZGVyciwgX19W QV9BUkdTX18pCiAjZW5kaWYKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdl ZC9kaXJlY3RvcnkuYyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL2RpcmVjdG9yeS5jCi0tLSB2 cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvZGlyZWN0b3J5LmMJMjAxMC0xMS0wNSAxODoz NzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvZGlyZWN0 b3J5LmMJMjAxNS0wOS0xNyAxMTo0MTowMi43MzgwOTUzNDkgKzAxMDAKQEAgLTMyLDcgKzMy LDcgQEAKICAgICNpbmNsdWRlIDxhc3NlcnQuaD4KICNlbmRpZgogI2luY2x1ZGUgPGNvbmYu aD4KLSNpbmNsdWRlIDxzdG9yYWdlLmg+CisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogI2lu Y2x1ZGUgInBhdGguaCIKICNpbmNsdWRlICJkaXJlY3RvcnkuaCIKIApkaWZmIC11UHIgdnBv cG1haWwtNS41LjAub3JpZy92dXNhZ2VkL2RpcmVjdG9yeS5oIHZwb3BtYWlsLTUuNS4wL3Z1 c2FnZWQvZGlyZWN0b3J5LmgKLS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC9kaXJl Y3RvcnkuaAkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1h aWwtNS41LjAvdnVzYWdlZC9kaXJlY3RvcnkuaAkyMDE1LTA5LTE3IDExOjQxOjAyLjczODA5 NTM0OSArMDEwMApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNs dWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgImNvbmYuaCIKLSNpbmNsdWRlICJzdG9yYWdl LmgiCisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogCiAvKgogICAgQSBzaW5nbGUgZGlyZWN0 b3J5IHN0cnVjdHVyZQpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2VkL2Rv bWFpbi5jIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvZG9tYWluLmMKLS0tIHZwb3BtYWlsLTUu NS4wLm9yaWcvdnVzYWdlZC9kb21haW4uYwkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAw MCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC9kb21haW4uYwkyMDE1LTA5LTE3 IDExOjQxOjAyLjczOTA5NTMyNSArMDEwMApAQCAtMjUsNyArMjUsNyBAQAogICAgI2luY2x1 ZGUgPGFzc2VydC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8cHRocmVhZC5oPgotI2luY2x1ZGUg PHN0b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSAiY2FjaGUu aCIKICNpbmNsdWRlICJkb21haW4uaCIKIApkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3Jp Zy92dXNhZ2VkL2RvbWFpbi5oIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvZG9tYWluLmgKLS0t IHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC9kb21haW4uaAkyMDEwLTExLTA1IDE4OjM3 OjI0LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC9kb21haW4u aAkyMDE1LTA5LTE3IDExOjQxOjAyLjczOTA5NTMyNSArMDEwMApAQCAtMjIsNyArMjIsNyBA QAogICAgI2RlZmluZSBfX0RPTUFJTl9IXwogCiAjaW5jbHVkZSA8cHRocmVhZC5oPgotI2lu Y2x1ZGUgInN0b3JhZ2UuaCIKKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAKIC8qCiAgICBN YXhpbXVtIGxlbmd0aCBvZiBhIGRvbWFpbiBuYW1lCmRpZmYgLXVQciB2cG9wbWFpbC01LjUu MC5vcmlnL3Z1c2FnZWQvcXVvdGEuaCB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3F1b3RhLmgK LS0tIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC9xdW90YS5oCTIwMTAtMTEtMDUgMTg6 Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3F1b3Rh LmgJMjAxNS0wOS0xNyAxMTo0MTowMi43MzkwOTUzMjUgKzAxMDAKQEAgLTIxLDcgKzIxLDcg QEAKICNpZm5kZWYgX19RVU9UQV9IXwogICAgI2RlZmluZSBfX1FVT1RBX0hfCiAKLSNpbmNs dWRlICJzdG9yYWdlLmgiCisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogCiAvKgogICAgUXVv dGEgc2l6ZSBpbiBieXRlcwpkaWZmIC11UHIgdnBvcG1haWwtNS41LjAub3JpZy92dXNhZ2Vk L3VzZXIuYyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3VzZXIuYwotLS0gdnBvcG1haWwtNS41 LjAub3JpZy92dXNhZ2VkL3VzZXIuYwkyMDEwLTExLTA1IDE4OjM3OjI0LjAwMDAwMDAwMCAr MDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC91c2VyLmMJMjAxNS0wOS0xNyAxMTo0 MTowMi43NDAwOTUzMDQgKzAxMDAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDx2YXV0 aC5oPgogI2luY2x1ZGUgPHZhdXRobW9kdWxlLmg+CiAjaW5jbHVkZSA8Y29uZi5oPgotI2lu Y2x1ZGUgPHN0b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSAi cGF0aC5oIgogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAidXNlcnN0b3JlLmgiCmRp ZmYgLXVQciB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNlci5oIHZwb3BtYWlsLTUu NS4wL3Z1c2FnZWQvdXNlci5oCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNl ci5oCTIwMTAtMTEtMDUgMTg6Mzc6MjQuMDAwMDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC01 LjUuMC92dXNhZ2VkL3VzZXIuaAkyMDE1LTA5LTE3IDExOjQxOjAyLjc0MDA5NTMwNCArMDEw MApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxwdGhy ZWFkLmg+CiAjaW5jbHVkZSAiLi4vY29uZi5oIgotI2luY2x1ZGUgInN0b3JhZ2UuaCIKKyNp bmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSAiZG9tYWluLmgiCiAjaW5jbHVkZSAi dXNlcnN0b3JlLmgiCiAjaW5jbHVkZSAiLi4vdmF1dGguaCIKZGlmZiAtdVByIHZwb3BtYWls LTUuNS4wLm9yaWcvdnVzYWdlZC91c2Vyc3RvcmUuYyB2cG9wbWFpbC01LjUuMC92dXNhZ2Vk L3VzZXJzdG9yZS5jCi0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNlcnN0b3Jl LmMJMjAxMC0xMS0wNSAxODozNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUu NS4wL3Z1c2FnZWQvdXNlcnN0b3JlLmMJMjAxNS0wOS0xNyAxMTo0MTowMi43NDEwOTUyODQg KzAxMDAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZmRlZiBBU1NFUlRfREVCVUcKICAgICNpbmNs dWRlIDxhc3NlcnQuaD4KICNlbmRpZgotI2luY2x1ZGUgPHN0b3JhZ2UuaD4KKyNpbmNsdWRl ICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgogI2luY2x1ZGUgInBhdGguaCIK ICNpbmNsdWRlICJkaXJlY3RvcnkuaCIKZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcv dnVzYWdlZC91c2Vyc3RvcmUuaCB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3VzZXJzdG9yZS5o Ci0tLSB2cG9wbWFpbC01LjUuMC5vcmlnL3Z1c2FnZWQvdXNlcnN0b3JlLmgJMjAxMC0xMS0w NSAxODozNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQv dXNlcnN0b3JlLmgJMjAxNS0wOS0xNyAxMTo0MTowMi43NDEwOTUyODQgKzAxMDAKQEAgLTIx LDcgKzIxLDcgQEAKICNpZm5kZWYgX19VU0VSU1RPUkVfSF8KICAgICNkZWZpbmUgX19VU0VS U1RPUkVfSF8KIAotI2luY2x1ZGUgInN0b3JhZ2UuaCIKKyNpbmNsdWRlICIuLi9zdG9yYWdl LmgiCiAjaW5jbHVkZSAiZGlyZWN0b3J5LmgiCiAjaW5jbHVkZSAiY29uZi5oIgogI2luY2x1 ZGUgPHB0aHJlYWQuaD4KZGlmZiAtdVByIHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC92 ZGIuYyB2cG9wbWFpbC01LjUuMC92dXNhZ2VkL3ZkYi5jCi0tLSB2cG9wbWFpbC01LjUuMC5v cmlnL3Z1c2FnZWQvdmRiLmMJMjAxMC0xMS0wNSAxODozNzoyNC4wMDAwMDAwMDAgKzAwMDAK KysrIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvdmRiLmMJMjAxNS0wOS0xNyAxMTo0MTowMi43 NDIwOTUyNzMgKzAxMDAKQEAgLTEzLDcgKzEzLDcgQEAKICNpZmRlZiBBU1NFUlRfREVCVUcK ICAgICNpbmNsdWRlIDxhc3NlcnQuaD4KICNlbmRpZgotI2luY2x1ZGUgPHN0b3JhZ2UuaD4K KyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgogI2luY2x1ZGUg PHZwb3BtYWlsLmg+CiAjaW5jbHVkZSAicGF0aC5oIgpkaWZmIC11UHIgdnBvcG1haWwtNS41 LjAub3JpZy92dXNhZ2VkL3ZkYi5oIHZwb3BtYWlsLTUuNS4wL3Z1c2FnZWQvdmRiLmgKLS0t IHZwb3BtYWlsLTUuNS4wLm9yaWcvdnVzYWdlZC92ZGIuaAkyMDEwLTExLTA1IDE4OjM3OjI0 LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtNS41LjAvdnVzYWdlZC92ZGIuaAkyMDE1 LTA5LTE3IDExOjQxOjAyLjc0MjA5NTI3MyArMDEwMApAQCAtNSw3ICs1LDcgQEAKICNpZm5k ZWYgX19WREJfSF8KICAgICNkZWZpbmUgX19WREJfSF8KIAotI2luY2x1ZGUgPHN0b3JhZ2Uu aD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgogCiAvKgo= --------------080504080909080802040003--