From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: - Revert FSF GDB gdbserver tracepoints as incomplete now. Date: Sat, 27 Jun 2026 23:54:32 GMT Message-ID: <178260447277.1.10728220100538379774.rpms-gdb-39d52ac1d6cf@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 39d52ac1d6cf7446f797c9856a426db91b9b849b QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogMzlkNTJhYzFkNmNmNzQ0NmY3OTdjOTg1NmE0 MjZkYjkxYjliODQ5YgpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJv amVjdC5vcmc+CkRhdGUgICA6IDIwMTAtMDEtMjFUMTk6NTM6NDErMDA6MDAKU3RhdHMgIDogKzI2 ODEvLTEgaW4gMiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3Jn L3JwbXMvZ2RiL2MvMzlkNTJhYzFkNmNmNzQ0NmY3OTdjOTg1NmE0MjZkYjkxYjliODQ5Yj9icmFu Y2g9Z2RiLTE3LjItcmViYXNlLWY0NAoKTG9nOgotIFJldmVydCBGU0YgR0RCIGdkYnNlcnZlciB0 cmFjZXBvaW50cyBhcyBpbmNvbXBsZXRlIG5vdy4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2RiLWdkYnNl cnZlci10cmFjZXBvaW50LXJldmVydC5wYXRjaCBiL2dkYi1nZGJzZXJ2ZXItdHJhY2Vwb2ludC1y ZXZlcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU5NjI0ZAot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1nZGJzZXJ2ZXItdHJhY2Vwb2ludC1yZXZlcnQucGF0Y2gK QEAgLTAsMCArMSwyNjczIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEw LTAxL21zZzAwMTgzLmh0bWwKKworUkVWRVJUCisKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvaTM4Ny1m cC5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2Vy dmVyL2kzODctZnAuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAorQEAgLTcz LDcgKzczLDcgQEAgc3RydWN0IGkzODdfZnhzYXZlIHsKKyB9OworIAorIHZvaWQKKy1pMzg3X2Nh Y2hlX3RvX2ZzYXZlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisraTM4 N19jYWNoZV90b19mc2F2ZSAodm9pZCAqYnVmKQorIHsKKyAgIHN0cnVjdCBpMzg3X2ZzYXZlICpm cCA9IChzdHJ1Y3QgaTM4N19mc2F2ZSAqKSBidWY7CisgICBpbnQgaTsKK0BAIC04MSwzOSArODEs MzggQEAgaTM4N19jYWNoZV90b19mc2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyZQorICAgdW5zaWdu ZWQgbG9uZyB2YWwsIHZhbDI7CisgCisgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorLSAgICBj b2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSArIHN0MF9yZWdudW0sCistCQkgICAgICAoKGNo YXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTApOworKyAgICBjb2xsZWN0X3JlZ2lzdGVy IChpICsgc3QwX3JlZ251bSwgKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsgaSAqIDEwKTsK KyAKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaW9mZiIsICZmcC0+ ZmlvZmYpOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZvb2ZmIiwg JmZwLT5mb29mZik7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmaW9mZiIsICZmcC0+ ZmlvZmYpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZm9vZmYiLCAmZnAtPmZvb2Zm KTsKKyAgIAorICAgLyogVGhpcyBvbmUncyAxMSBiaXRzLi4uICovCistICBjb2xsZWN0X3JlZ2lz dGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9wIiwgJnZhbDIpOworKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgiZm9wIiwgJnZhbDIpOworICAgZnAtPmZvcCA9ICh2YWwyICYgMHg3RkYpIHwg KGZwLT5mb3AgJiAweEY4MDApOworIAorICAgLyogU29tZSByZWdpc3RlcnMgYXJlIDE2LWJpdC4g ICovCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZmN0cmwiLCAmdmFs KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZjdHJsIiwgJnZhbCk7CisgICBmcC0+ ZmN0cmwgPSB2YWw7CisgCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAi ZnN0YXQiLCAmdmFsKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZzdGF0IiwgJnZh bCk7CisgICB2YWwgJj0gMHhGRkZGOworICAgZnAtPmZzdGF0ID0gdmFsOworIAorLSAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZ0YWciLCAmdmFsKTsKKysgIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAoImZ0YWciLCAmdmFsKTsKKyAgIHZhbCAmPSAweEZGRkY7CisgICBm cC0+ZnRhZyA9IHZhbDsKKyAKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUs ICJmaXNlZyIsICZ2YWwpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZmlzZWciLCAm dmFsKTsKKyAgIHZhbCAmPSAweEZGRkY7CisgICBmcC0+ZmlzZWcgPSB2YWw7CisgCistICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9zZWciLCAmdmFsKTsKKysgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoImZvc2VnIiwgJnZhbCk7CisgICB2YWwgJj0gMHhGRkZGOwor ICAgZnAtPmZvc2VnID0gdmFsOworIH0KKyAKKyB2b2lkCistaTM4N19mc2F2ZV90b19jYWNoZSAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK2kzODdfZnNhdmVf dG9fY2FjaGUgKGNvbnN0IHZvaWQgKmJ1ZikKKyB7CisgICBzdHJ1Y3QgaTM4N19mc2F2ZSAqZnAg PSAoc3RydWN0IGkzODdfZnNhdmUgKikgYnVmOworICAgaW50IGk7CitAQCAtMTIxLDM1ICsxMjAs MzQgQEAgaTM4N19mc2F2ZV90b19jYWNoZSAoc3RydWN0IHJlZ2NhY2hlICpyZQorICAgdW5zaWdu ZWQgbG9uZyB2YWw7CisgCisgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorLSAgICBzdXBwbHlf cmVnaXN0ZXIgKHJlZ2NhY2hlLCBpICsgc3QwX3JlZ251bSwKKy0JCSAgICAgKChjaGFyICopICZm cC0+c3Rfc3BhY2VbMF0pICsgaSAqIDEwKTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChpICsgc3Qw X3JlZ251bSwgKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsgaSAqIDEwKTsKKyAKKy0gIHN1 cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZpb2ZmIiwgJmZwLT5maW9mZik7Cist ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb29mZiIsICZmcC0+Zm9vZmYp OworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmaW9mZiIsICZmcC0+ZmlvZmYpOworKyAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmb29mZiIsICZmcC0+Zm9vZmYpOworIAorICAgLyog U29tZSByZWdpc3RlcnMgYXJlIDE2LWJpdC4gICovCisgICB2YWwgPSBmcC0+ZmN0cmwgJiAweEZG RkY7CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmY3RybCIsICZ2YWwp OworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmY3RybCIsICZ2YWwpOworIAorICAgdmFs ID0gZnAtPmZzdGF0ICYgMHhGRkZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAiZnN0YXQiLCAmdmFsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZnN0YXQi LCAmdmFsKTsKKyAKKyAgIHZhbCA9IGZwLT5mdGFnICYgMHhGRkZGOworLSAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZnRhZyIsICZ2YWwpOworKyAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKCJmdGFnIiwgJnZhbCk7CisgCisgICB2YWwgPSBmcC0+ZmlzZWcgJiAweEZGRkY7 CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaXNlZyIsICZ2YWwpOwor KyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmaXNlZyIsICZ2YWwpOworIAorICAgdmFsID0g ZnAtPmZvc2VnICYgMHhGRkZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAiZm9zZWciLCAmdmFsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZm9zZWciLCAm dmFsKTsKKyAKKyAgIC8qIGZvcCBoYXMgb25seSAxMSB2YWxpZCBiaXRzLiAgKi8KKyAgIHZhbCA9 IChmcC0+Zm9wKSAmIDB4N0ZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAiZm9wIiwgJnZhbCk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZvcCIsICZ2YWwp OworIH0KKyAKKyB2b2lkCistaTM4N19jYWNoZV90b19meHNhdmUgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIHZvaWQgKmJ1ZikKKytpMzg3X2NhY2hlX3RvX2Z4c2F2ZSAodm9pZCAqYnVmKQor IHsKKyAgIHN0cnVjdCBpMzg3X2Z4c2F2ZSAqZnAgPSAoc3RydWN0IGkzODdfZnhzYXZlICopIGJ1 ZjsKKyAgIGludCBpOworQEAgLTE1OCwyOSArMTU2LDI3IEBAIGkzODdfY2FjaGVfdG9fZnhzYXZl IChzdHJ1Y3QgcmVnY2FjaGUgKnIKKyAgIHVuc2lnbmVkIGxvbmcgdmFsLCB2YWwyOworIAorICAg Zm9yIChpID0gMDsgaSA8IDg7IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUs IGkgKyBzdDBfcmVnbnVtLAorLQkJICAgICAgKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsg aSAqIDE2KTsKKysgICAgY29sbGVjdF9yZWdpc3RlciAoaSArIHN0MF9yZWdudW0sICgoY2hhciAq KSAmZnAtPnN0X3NwYWNlWzBdKSArIGkgKiAxNik7CisgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3ht bV9yZWdpc3RlcnM7IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGkgKyB4 bW0wX3JlZ251bSwKKy0JCSAgICAgICgoY2hhciAqKSAmZnAtPnhtbV9zcGFjZVswXSkgKyBpICog MTYpOworKyAgICBjb2xsZWN0X3JlZ2lzdGVyIChpICsgeG1tMF9yZWdudW0sICgoY2hhciAqKSAm ZnAtPnhtbV9zcGFjZVswXSkgKyBpICogMTYpOworIAorLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgImZpb2ZmIiwgJmZwLT5maW9mZik7CistICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9vZmYiLCAmZnAtPmZvb2ZmKTsKKy0gIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJteGNzciIsICZmcC0+bXhjc3IpOworKyAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lICgiZmlvZmYiLCAmZnAtPmZpb2ZmKTsKKysgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAoImZvb2ZmIiwgJmZwLT5mb29mZik7CisrICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKCJteGNzciIsICZmcC0+bXhjc3IpOworIAorICAgLyogVGhpcyBvbmUncyAxMSBi aXRzLi4uICovCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9wIiwg JnZhbDIpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZm9wIiwgJnZhbDIpOworICAg ZnAtPmZvcCA9ICh2YWwyICYgMHg3RkYpIHwgKGZwLT5mb3AgJiAweEY4MDApOworIAorICAgLyog U29tZSByZWdpc3RlcnMgYXJlIDE2LWJpdC4gICovCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAiZmN0cmwiLCAmdmFsKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAoImZjdHJsIiwgJnZhbCk7CisgICBmcC0+ZmN0cmwgPSB2YWw7CisgCistICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZnN0YXQiLCAmdmFsKTsKKysgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAoImZzdGF0IiwgJnZhbCk7CisgICBmcC0+ZnN0YXQgPSB2YWw7CisgCisg ICAvKiBDb252ZXJ0IHRvIHRoZSBzaW1wbGlmZWQgdGFnIGZvcm0gc3RvcmVkIGluIGZ4c2F2ZSBk YXRhLiAgKi8KKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmdGFnIiwg JnZhbCk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmdGFnIiwgJnZhbCk7CisgICB2 YWwgJj0gMHhGRkZGOworICAgdmFsMiA9IDA7CisgICBmb3IgKGkgPSA3OyBpID49IDA7IGktLSkK K0BAIC0xOTIsMTAgKzE4OCwxMCBAQCBpMzg3X2NhY2hlX3RvX2Z4c2F2ZSAoc3RydWN0IHJlZ2Nh Y2hlICpyCisgICAgIH0KKyAgIGZwLT5mdGFnID0gdmFsMjsKKyAKKy0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaXNlZyIsICZ2YWwpOworKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgiZmlzZWciLCAmdmFsKTsKKyAgIGZwLT5maXNlZyA9IHZhbDsKKyAKKy0gIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3NlZyIsICZ2YWwpOworKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiZm9zZWciLCAmdmFsKTsKKyAgIGZwLT5mb3NlZyA9IHZh bDsKKyB9CisgCitAQCAtMjQ3LDcgKzI0Myw3IEBAIGkzODdfZnRhZyAoc3RydWN0IGkzODdfZnhz YXZlICpmcCwgaW50IHIKKyB9CisgCisgdm9pZAorLWkzODdfZnhzYXZlX3RvX2NhY2hlIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCisraTM4N19meHNhdmVfdG9f Y2FjaGUgKGNvbnN0IHZvaWQgKmJ1ZikKKyB7CisgICBzdHJ1Y3QgaTM4N19meHNhdmUgKmZwID0g KHN0cnVjdCBpMzg3X2Z4c2F2ZSAqKSBidWY7CisgICBpbnQgaSwgdG9wOworQEAgLTI1NiwyMiAr MjUyLDIwIEBAIGkzODdfZnhzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnIKKyAgIHVu c2lnbmVkIGxvbmcgdmFsOworIAorICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykKKy0gICAgc3Vw cGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSArIHN0MF9yZWdudW0sCistCQkgICAgICgoY2hhciAq KSAmZnAtPnN0X3NwYWNlWzBdKSArIGkgKiAxNik7CisrICAgIHN1cHBseV9yZWdpc3RlciAoaSAr IHN0MF9yZWdudW0sICgoY2hhciAqKSAmZnAtPnN0X3NwYWNlWzBdKSArIGkgKiAxNik7CisgICBm b3IgKGkgPSAwOyBpIDwgbnVtX3htbV9yZWdpc3RlcnM7IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lz dGVyIChyZWdjYWNoZSwgaSArIHhtbTBfcmVnbnVtLAorLQkJICAgICAoKGNoYXIgKikgJmZwLT54 bW1fc3BhY2VbMF0pICsgaSAqIDE2KTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChpICsgeG1tMF9y ZWdudW0sICgoY2hhciAqKSAmZnAtPnhtbV9zcGFjZVswXSkgKyBpICogMTYpOworIAorLSAgc3Vw cGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZmlvZmYiLCAmZnAtPmZpb2ZmKTsKKy0g IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZvb2ZmIiwgJmZwLT5mb29mZik7 CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJteGNzciIsICZmcC0+bXhj c3IpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmaW9mZiIsICZmcC0+ZmlvZmYpOwor KyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmb29mZiIsICZmcC0+Zm9vZmYpOworKyAgc3Vw cGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJteGNzciIsICZmcC0+bXhjc3IpOworIAorICAgLyogU29t ZSByZWdpc3RlcnMgYXJlIDE2LWJpdC4gICovCisgICB2YWwgPSBmcC0+ZmN0cmwgJiAweEZGRkY7 CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmY3RybCIsICZ2YWwpOwor KyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJmY3RybCIsICZ2YWwpOworIAorICAgdmFsID0g ZnAtPmZzdGF0ICYgMHhGRkZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAiZnN0YXQiLCAmdmFsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZnN0YXQiLCAm dmFsKTsKKyAKKyAgIC8qIEdlbmVyYXRlIHRoZSBmb3JtIG9mIGZ0YWcgZGF0YSB0aGF0IEdEQiBl eHBlY3RzLiAgKi8KKyAgIHRvcCA9IChmcC0+ZnN0YXQgPj4gMTEpICYgMHg3OworQEAgLTI4NSwx NCArMjc5LDE0IEBAIGkzODdfZnhzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnIKKyAJ dGFnID0gMzsKKyAgICAgICB2YWwgfD0gdGFnIDw8ICgyICogaSk7CisgICAgIH0KKy0gIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZ0YWciLCAmdmFsKTsKKysgIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lICgiZnRhZyIsICZ2YWwpOworIAorICAgdmFsID0gZnAtPmZpc2VnICYg MHhGRkZGOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZmlzZWciLCAm dmFsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZmlzZWciLCAmdmFsKTsKKyAKKyAg IHZhbCA9IGZwLT5mb3NlZyAmIDB4RkZGRjsKKy0gIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgImZvc2VnIiwgJnZhbCk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoImZv c2VnIiwgJnZhbCk7CisgCisgICB2YWwgPSAoZnAtPmZvcCkgJiAweDdGRjsKKy0gIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZvcCIsICZ2YWwpOworKyAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKCJmb3AiLCAmdmFsKTsKKyB9CistLS0gLi9nZGIvZ2Ric2VydmVyL2kzODct ZnAuaAkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNl cnZlci9pMzg3LWZwLmgJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0y MCwxMSArMjAsMTEgQEAKKyAjaWZuZGVmIEkzODdfRlBfSAorICNkZWZpbmUgSTM4N19GUF9ICisg Cistdm9pZCBpMzg3X2NhY2hlX3RvX2ZzYXZlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2 b2lkICpidWYpOworLXZvaWQgaTM4N19mc2F2ZV90b19jYWNoZSAoc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKTsKKyt2b2lkIGkzODdfY2FjaGVfdG9fZnNhdmUgKHZv aWQgKmJ1Zik7Cisrdm9pZCBpMzg3X2ZzYXZlX3RvX2NhY2hlIChjb25zdCB2b2lkICpidWYpOwor IAorLXZvaWQgaTM4N19jYWNoZV90b19meHNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IHZvaWQgKmJ1Zik7Cistdm9pZCBpMzg3X2Z4c2F2ZV90b19jYWNoZSAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKTsKKyt2b2lkIGkzODdfY2FjaGVfdG9fZnhzYXZl ICh2b2lkICpidWYpOworK3ZvaWQgaTM4N19meHNhdmVfdG9fY2FjaGUgKGNvbnN0IHZvaWQgKmJ1 Zik7CisgCisgZXh0ZXJuIGludCBudW1feG1tX3JlZ2lzdGVyczsKKyAKKy0tLSAuL2dkYi9nZGJz ZXJ2ZXIvbGludXgtYXJtLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAw CisrKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFybS1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1 LjAwMDAwMDAwMCArMDEwMAorQEAgLTgxLDE3ICs4MSwxNyBAQCBhcm1fY2Fubm90X2ZldGNoX3Jl Z2lzdGVyIChpbnQgcmVnbm8pCisgfQorIAorIHN0YXRpYyB2b2lkCistYXJtX2ZpbGxfZ3JlZ3Nl dCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK2FybV9maWxsX2dyZWdz ZXQgKHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaTsKKyAKKyAgIGZvciAoaSA9IDA7IGkgPCBhcm1f bnVtX3JlZ3M7IGkrKykKKyAgICAgaWYgKGFybV9yZWdtYXBbaV0gIT0gLTEpCistICAgICAgY29s bGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYpICsgYXJtX3JlZ21hcFtp XSk7CisrICAgICAgY29sbGVjdF9yZWdpc3RlciAoaSwgKChjaGFyICopIGJ1ZikgKyBhcm1fcmVn bWFwW2ldKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1hcm1fc3RvcmVfZ3JlZ3NldCAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK2FybV9zdG9yZV9ncmVnc2V0 IChjb25zdCB2b2lkICpidWYpCisgeworICAgaW50IGk7CisgICBjaGFyIHplcm9idWZbOF07CitA QCAtOTksMTMgKzk5LDEzIEBAIGFybV9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2MKKyAgIG1lbXNldCAoemVyb2J1ZiwgMCwgOCk7CisgICBmb3IgKGkgPSAwOyBpIDwgYXJtX251 bV9yZWdzOyBpKyspCisgICAgIGlmIChhcm1fcmVnbWFwW2ldICE9IC0xKQorLSAgICAgIHN1cHBs eV9yZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYpICsgYXJtX3JlZ21hcFtpXSk7 CisrICAgICAgc3VwcGx5X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIGFybV9yZWdtYXBb aV0pOworICAgICBlbHNlCistICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgemVy b2J1Zik7CisrICAgICAgc3VwcGx5X3JlZ2lzdGVyIChpLCB6ZXJvYnVmKTsKKyB9CisgCisgc3Rh dGljIHZvaWQKKy1hcm1fZmlsbF93bW14cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCB2b2lkICpidWYpCisrYXJtX2ZpbGxfd21teHJlZ3NldCAodm9pZCAqYnVmKQorIHsKKyAgIGlu dCBpOworIAorQEAgLTExMywxNiArMTEzLDE1IEBAIGFybV9maWxsX3dtbXhyZWdzZXQgKHN0cnVj dCByZWdjYWNoZSAqcmUKKyAgICAgcmV0dXJuOworIAorICAgZm9yIChpID0gMDsgaSA8IDE2OyBp KyspCistICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBhcm1fbnVtX3JlZ3MgKyBpLCAo Y2hhciAqKSBidWYgKyBpICogOCk7CisrICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGFybV9udW1fcmVn cyArIGksIChjaGFyICopIGJ1ZiArIGkgKiA4KTsKKyAKKyAgIC8qIFdlIG9ubHkgaGF2ZSBhY2Nl c3MgdG8gd2Nzc2YsIHdjYXNmLCBhbmQgd2NncjAtd2NncjMuICAqLworICAgZm9yIChpID0gMDsg aSA8IDY7IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGFybV9udW1fcmVn cyArIGkgKyAxNiwKKy0JCSAgICAgIChjaGFyICopIGJ1ZiArIDE2ICogOCArIGkgKiA0KTsKKysg ICAgY29sbGVjdF9yZWdpc3RlciAoYXJtX251bV9yZWdzICsgaSArIDE2LCAoY2hhciAqKSBidWYg KyAxNiAqIDggKyBpICogNCk7CisgfQorIAorIHN0YXRpYyB2b2lkCistYXJtX3N0b3JlX3dtbXhy ZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKKythcm1f c3RvcmVfd21teHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQorIHsKKyAgIGludCBpOworIAorQEAg LTEzMCwxNiArMTI5LDE1IEBAIGFybV9zdG9yZV93bW14cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUg KnIKKyAgICAgcmV0dXJuOworIAorICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCistICAgIHN1 cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGFybV9udW1fcmVncyArIGksIChjaGFyICopIGJ1ZiAr IGkgKiA4KTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChhcm1fbnVtX3JlZ3MgKyBpLCAoY2hhciAq KSBidWYgKyBpICogOCk7CisgCisgICAvKiBXZSBvbmx5IGhhdmUgYWNjZXNzIHRvIHdjc3NmLCB3 Y2FzZiwgYW5kIHdjZ3IwLXdjZ3IzLiAgKi8KKyAgIGZvciAoaSA9IDA7IGkgPCA2OyBpKyspCist ICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGFybV9udW1fcmVncyArIGkgKyAxNiwKKy0J CSAgICAgKGNoYXIgKikgYnVmICsgMTYgKiA4ICsgaSAqIDQpOworKyAgICBzdXBwbHlfcmVnaXN0 ZXIgKGFybV9udW1fcmVncyArIGkgKyAxNiwgKGNoYXIgKikgYnVmICsgMTYgKiA4ICsgaSAqIDQp OworIH0KKyAKKyBzdGF0aWMgdm9pZAorLWFybV9maWxsX3ZmcHJlZ3NldCAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK2FybV9maWxsX3ZmcHJlZ3NldCAodm9pZCAqYnVm KQorIHsKKyAgIGludCBpLCBudW0sIGJhc2U7CisgCitAQCAtMTUzLDEzICsxNTEsMTMgQEAgYXJt X2ZpbGxfdmZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZworIAorICAgYmFzZSA9IGZpbmRf cmVnbm8gKCJkMCIpOworICAgZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKQorLSAgICBjb2xsZWN0 X3JlZ2lzdGVyIChyZWdjYWNoZSwgYmFzZSArIGksIChjaGFyICopIGJ1ZiArIGkgKiA4KTsKKysg ICAgY29sbGVjdF9yZWdpc3RlciAoYmFzZSArIGksIChjaGFyICopIGJ1ZiArIGkgKiA4KTsKKyAK Ky0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmcHNjciIsIChjaGFyICop IGJ1ZiArIDMyICogOCk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJmcHNjciIsIChj aGFyICopIGJ1ZiArIDMyICogOCk7CisgfQorIAorIHN0YXRpYyB2b2lkCistYXJtX3N0b3JlX3Zm cHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK2Fy bV9zdG9yZV92ZnByZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaSwgbnVtLCBi YXNlOworIAorQEAgLTE3MywyOCArMTcxLDI4IEBAIGFybV9zdG9yZV92ZnByZWdzZXQgKHN0cnVj dCByZWdjYWNoZSAqcmUKKyAKKyAgIGJhc2UgPSBmaW5kX3JlZ25vICgiZDAiKTsKKyAgIGZvciAo aSA9IDA7IGkgPCBudW07IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgYmFz ZSArIGksIChjaGFyICopIGJ1ZiArIGkgKiA4KTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChiYXNl ICsgaSwgKGNoYXIgKikgYnVmICsgaSAqIDgpOworIAorLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAiZnBzY3IiLCAoY2hhciAqKSBidWYgKyAzMiAqIDgpOworKyAgc3VwcGx5 X3JlZ2lzdGVyX2J5X25hbWUgKCJmcHNjciIsIChjaGFyICopIGJ1ZiArIDMyICogOCk7CisgfQor IAorIGV4dGVybiBpbnQgZGVidWdfdGhyZWFkczsKKyAKKyBzdGF0aWMgQ09SRV9BRERSCistYXJt X2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKKythcm1fZ2V0X3BjICgpCisgewor ICAgdW5zaWduZWQgbG9uZyBwYzsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJwYyIsICZwYyk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7 CisgICBpZiAoZGVidWdfdGhyZWFkcykKKyAgICAgZnByaW50ZiAoc3RkZXJyLCAic3RvcCBwYyBp cyAlMDhseFxuIiwgcGMpOworICAgcmV0dXJuIHBjOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLWFy bV9zZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKKythcm1f c2V0X3BjIChDT1JFX0FERFIgcGMpCisgeworICAgdW5zaWduZWQgbG9uZyBuZXdwYyA9IHBjOwor LSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmbmV3cGMpOworKyAg c3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZuZXdwYyk7CisgfQorIAorIC8qIENvcnJl Y3QgaW4gZWl0aGVyIGVuZGlhbm5lc3MuICAqLworQEAgLTIxMiwxMCArMjEwLDkgQEAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGxvbmcgYXJtX2VhYmlfYnJlYQorIHN0YXRpYyBpbnQKKyBhcm1fYnJl YWtwb2ludF9hdCAoQ09SRV9BRERSIHdoZXJlKQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKKyAgIHVu c2lnbmVkIGxvbmcgY3BzcjsKKyAKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJjcHNyIiwgJmNwc3IpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiY3BzciIs ICZjcHNyKTsKKyAKKyAgIGlmIChjcHNyICYgMHgyMCkKKyAgICAgeworQEAgLTI0NiwxMSArMjQz LDEwIEBAIGFybV9icmVha3BvaW50X2F0IChDT1JFX0FERFIgd2hlcmUpCisgICAgaXMgb3V0c2lk ZSBvZiB0aGUgZnVuY3Rpb24uICBTbyByYXRoZXIgdGhhbiBpbXBvcnRpbmcgc29mdHdhcmUgc2lu Z2xlLXN0ZXAsCisgICAgd2UgY2FuIGp1c3QgcnVuIHVudGlsIGV4aXQuICAqLworIHN0YXRpYyBD T1JFX0FERFIKKy1hcm1fcmVpbnNlcnRfYWRkciAodm9pZCkKKythcm1fcmVpbnNlcnRfYWRkciAo KQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hl IChjdXJyZW50X2luZmVyaW9yLCAxKTsKKyAgIHVuc2lnbmVkIGxvbmcgcGM7CistICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAibHIiLCAmcGMpOworKyAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lICgibHIiLCAmcGMpOworICAgcmV0dXJuIHBjOworIH0KKyAKKy0tLSAuL2dk Yi9nZGJzZXJ2ZXIvbGludXgtY3Jpcy1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAw MCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1jcmlzLWxvdy5jCTIwMTAtMDEtMjEg MjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtNjIsMjAgKzYyLDIwIEBAIGNyaXNfY2Fubm90 X2ZldGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8pCisgZXh0ZXJuIGludCBkZWJ1Z190aHJlYWRzOwor IAorIHN0YXRpYyBDT1JFX0FERFIKKy1jcmlzX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgdm9pZCkKKytjcmlzX2dldF9wYyAodm9pZCkKKyB7CisgICB1bnNpZ25lZCBsb25nIHBj OworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJnBjKTsKKysg IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKKyAgIGlmIChkZWJ1Z190aHJl YWRzKQorICAgICBmcHJpbnRmIChzdGRlcnIsICJzdG9wIHBjIGlzICUwOGx4XG4iLCBwYyk7Cisg ICByZXR1cm4gcGM7CisgfQorIAorIHN0YXRpYyB2b2lkCistY3Jpc19zZXRfcGMgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKKytjcmlzX3NldF9wYyAoQ09SRV9BRERS IHBjKQorIHsKKyAgIHVuc2lnbmVkIGxvbmcgbmV3cGMgPSBwYzsKKy0gIHN1cHBseV9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lICgicGMiLCAmbmV3cGMpOworIH0KKyAKKyBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hv cnQgY3Jpc19icmVha3BvaW50ID0gMHhlOTM4OworQEAgLTEwMiw5ICsxMDIsOCBAQCBjcmlzX2Jy ZWFrcG9pbnRfYXQgKENPUkVfQUREUiB3aGVyZSkKKyBzdGF0aWMgQ09SRV9BRERSCisgY3Jpc19y ZWluc2VydF9hZGRyICh2b2lkKQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBn ZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKKyAgIHVuc2lnbmVkIGxv bmcgcGM7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAic3JwIiwgJnBj KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInNycCIsICZwYyk7CisgICByZXR1cm4g cGM7CisgfQorIAorLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1jcmlzdjMyLWxvdy5jCTIwMTAt MDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4 LWNyaXN2MzItbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC01 NCwyMCArNTQsMjAgQEAgc3RhdGljIGludCBjcmlzX3JlZ21hcFtdID0geworIGV4dGVybiBpbnQg ZGVidWdfdGhyZWFkczsKKyAKKyBzdGF0aWMgQ09SRV9BRERSCistY3Jpc19nZXRfcGMgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUpCisrY3Jpc19nZXRfcGMgKHZvaWQpCisgeworICAgdW5zaWdu ZWQgbG9uZyBwYzsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIs ICZwYyk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7CisgICBpZiAo ZGVidWdfdGhyZWFkcykKKyAgICAgZnByaW50ZiAoc3RkZXJyLCAic3RvcCBwYyBpcyAlMDhseFxu IiwgcGMpOworICAgcmV0dXJuIHBjOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLWNyaXNfc2V0X3Bj IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCisrY3Jpc19zZXRfcGMg KENPUkVfQUREUiBwYykKKyB7CisgICB1bnNpZ25lZCBsb25nIG5ld3BjID0gcGM7CistICBzdXBw bHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZuZXdwYyk7CisrICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKKyB9CisgCisgc3RhdGljIGNvbnN0IHVu c2lnbmVkIHNob3J0IGNyaXNfYnJlYWtwb2ludCA9IDB4ZTkzODsKK0BAIC05OSw0MSArOTksMzkg QEAgY3Jpc19icmVha3BvaW50X2F0IChDT1JFX0FERFIgd2hlcmUpCisgc3RhdGljIENPUkVfQURE UgorIGNyaXNfcmVpbnNlcnRfYWRkciAodm9pZCkKKyB7CistICBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7CisgICB1 bnNpZ25lZCBsb25nIHBjOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwg InNycCIsICZwYyk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzcnAiLCAmcGMpOwor ICAgcmV0dXJuIHBjOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLWNyaXNfd3JpdGVfZGF0YV9icmVh a3BvaW50IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCSAgICBpbnQgYnAsIHVuc2ln bmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQorK2NyaXNfd3JpdGVfZGF0YV9icmVh a3BvaW50IChpbnQgYnAsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQor IHsKKyAgIHN3aXRjaCAoYnApCisgICAgIHsKKyAgICAgY2FzZSAwOgorLSAgICAgIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMzIiwgJnN0YXJ0KTsKKy0gICAgICBzdXBwbHlf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzNCIsICZlbmQpOworKyAgICAgIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lICgiczMiLCAmc3RhcnQpOworKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9i eV9uYW1lICgiczQiLCAmZW5kKTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSAxOgorLSAgICAg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM1IiwgJnN0YXJ0KTsKKy0gICAg ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzNiIsICZlbmQpOworKyAgICAg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczUiLCAmc3RhcnQpOworKyAgICAgIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lICgiczYiLCAmZW5kKTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSAy OgorLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM3IiwgJnN0YXJ0 KTsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzOCIsICZlbmQp OworKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczciLCAmc3RhcnQpOworKyAgICAg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczgiLCAmZW5kKTsKKyAgICAgICBicmVhazsKKyAg ICAgY2FzZSAzOgorLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM5 IiwgJnN0YXJ0KTsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJz MTAiLCAmZW5kKTsKKysgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInM5IiwgJnN0YXJ0 KTsKKysgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInMxMCIsICZlbmQpOworICAgICAg IGJyZWFrOworICAgICBjYXNlIDQ6CistICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAiczExIiwgJnN0YXJ0KTsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJzMTIiLCAmZW5kKTsKKysgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAo InMxMSIsICZzdGFydCk7CisrICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJzMTIiLCAm ZW5kKTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSA1OgorLSAgICAgIHN1cHBseV9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgInMxMyIsICZzdGFydCk7CistICAgICAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczE0IiwgJmVuZCk7CisrICAgICAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKCJzMTMiLCAmc3RhcnQpOworKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lICgiczE0IiwgJmVuZCk7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyB9CitAQCAtMTQ1LDcg KzE0Myw2IEBAIGNyaXNfaW5zZXJ0X3BvaW50IChjaGFyIHR5cGUsIENPUkVfQUREUiAKKyAgIHVu c2lnbmVkIGxvbmcgYnBfY3RybDsKKyAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKKyAgIHVu c2lnbmVkIGxvbmcgY2NzOworLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKKyAKKyAgIC8q IEJyZWFrcG9pbnQvd2F0Y2hwb2ludCB0eXBlcyAoR0RCIHRlcm1pbm9sb2d5KToKKyAgICAgIDAg PSBtZW1vcnkgYnJlYWtwb2ludCBmb3IgaW5zdHJ1Y3Rpb25zCitAQCAtMTYxLDE1ICsxNTgsMTMg QEAgY3Jpc19pbnNlcnRfcG9pbnQgKGNoYXIgdHlwZSwgQ09SRV9BRERSIAorICAgICAgIHJldHVy biAxOworICAgICB9CisgCistICByZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJl bnRfaW5mZXJpb3IsIDEpOworLQorICAgLyogUmVhZCB3YXRjaHBvaW50cyBhcmUgc2V0IGFzIGFj Y2VzcyB3YXRjaHBvaW50cywgYmVjYXVzZSBvZiBHREIncworICAgICAgaW5hYmlsaXR5IHRvIGRl YWwgd2l0aCBwdXJlIHJlYWQgd2F0Y2hwb2ludHMuICAqLworICAgaWYgKHR5cGUgPT0gJzMnKQor ICAgICB0eXBlID0gJzQnOworIAorICAgLyogR2V0IHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVy LiAgKi8KKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMCIsICZicF9j dHJsKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInMwIiwgJmJwX2N0cmwpOworIAor ICAgLyogVGhlIHdhdGNocG9pbnQgYWxsb2NhdGlvbiBzY2hlbWUgaXMgdGhlIHNpbXBsZXN0IHBv c3NpYmxlLgorICAgICAgRm9yIGV4YW1wbGUsIGlmIGEgcmVnaW9uIGlzIHdhdGNoZWQgZm9yIHJl YWQgYW5kCitAQCAtMjA3LDE5ICsyMDIsMTkgQEAgY3Jpc19pbnNlcnRfcG9pbnQgKGNoYXIgdHlw ZSwgQ09SRV9BRERSIAorICAgICB9CisgCisgICAvKiBTZXR1cCB0aGUgY29uZmlndXJhdGlvbiBy ZWdpc3Rlci4gICovCistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzMCIs ICZicF9jdHJsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczAiLCAmYnBfY3RybCk7 CisgCisgICAvKiBTZXR1cCB0aGUgcmFuZ2UuICAqLworICAgc3RhcnQgPSBhZGRyOworICAgZW5k ID0gYWRkciArIGxlbiAtIDE7CisgCisgICAvKiBDb25maWd1cmUgdGhlIHdhdGNocG9pbnQgcmVn aXN0ZXIuICAqLworLSAgY3Jpc193cml0ZV9kYXRhX2JyZWFrcG9pbnQgKHJlZ2NhY2hlLCBicCwg c3RhcnQsIGVuZCk7CisrICBjcmlzX3dyaXRlX2RhdGFfYnJlYWtwb2ludCAoYnAsIHN0YXJ0LCBl bmQpOworIAorLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImNjcyIsICZj Y3MpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiY2NzIiwgJmNjcyk7CisgICAvKiBT ZXQgdGhlIFMxIGZsYWcgdG8gZW5hYmxlIHdhdGNocG9pbnRzLiAgKi8KKyAgIGNjcyB8PSAoMSA8 PCAxOSk7CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJjY3MiLCAmY2Nz KTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiY2NzIiwgJmNjcyk7CisgCisgICByZXR1 cm4gMDsKKyB9CitAQCAtMjMwLDcgKzIyNSw2IEBAIGNyaXNfcmVtb3ZlX3BvaW50IChjaGFyIHR5 cGUsIENPUkVfQUREUiAKKyAgIGludCBicDsKKyAgIHVuc2lnbmVkIGxvbmcgYnBfY3RybDsKKyAg IHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7 CisgCisgICAvKiBCcmVha3BvaW50L3dhdGNocG9pbnQgdHlwZXM6CisgICAgICAwID0gbWVtb3J5 IGJyZWFrcG9pbnQgZm9yIGluc3RydWN0aW9ucworQEAgLTI0MiwxNSArMjM2LDEzIEBAIGNyaXNf cmVtb3ZlX3BvaW50IChjaGFyIHR5cGUsIENPUkVfQUREUiAKKyAgIGlmICh0eXBlIDwgJzInIHx8 IHR5cGUgPiAnNCcpCisgICAgIHJldHVybiAtMTsKKyAKKy0gIHJlZ2NhY2hlID0gZ2V0X3RocmVh ZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7CistCisgICAvKiBSZWFkIHdhdGNocG9p bnRzIGFyZSBzZXQgYXMgYWNjZXNzIHdhdGNocG9pbnRzLCBiZWNhdXNlIG9mIEdEQidzCisgICAg ICBpbmFiaWxpdHkgdG8gZGVhbCB3aXRoIHB1cmUgcmVhZCB3YXRjaHBvaW50cy4gICovCisgICBp ZiAodHlwZSA9PSAnMycpCisgICAgIHR5cGUgPSAnNCc7CisgCisgICAvKiBHZXQgdGhlIGNvbmZp Z3VyYXRpb24gcmVnaXN0ZXIuICAqLworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdj YWNoZSwgInMwIiwgJmJwX2N0cmwpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczAi LCAmYnBfY3RybCk7CisgCisgICAvKiBUcnkgdG8gZmluZCBhIHdhdGNocG9pbnQgdGhhdCBpcyBj b25maWd1cmVkIGZvciB0aGUKKyAgICAgIHNwZWNpZmllZCByYW5nZSwgdGhlbiBjaGVjayB0aGF0 IHJlYWQvd3JpdGUgYWxzbyBtYXRjaGVzLiAgKi8KK0BAIC0yNjIsMTggKzI1NCwxOCBAQCBjcmlz X3JlbW92ZV9wb2ludCAoY2hhciB0eXBlLCBDT1JFX0FERFIgCisgICB1bnNpZ25lZCBsb25nIGJw X2RfcmVnc1sxMl07CisgCisgICAvKiBHZXQgYWxsIHJhbmdlIHJlZ2lzdGVycyB0byBzaW1wbGlm eSBzZWFyY2guICAqLworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInMz IiwgJmJwX2RfcmVnc1swXSk7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAiczQiLCAmYnBfZF9yZWdzWzFdKTsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVn Y2FjaGUsICJzNSIsICZicF9kX3JlZ3NbMl0pOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l IChyZWdjYWNoZSwgInM2IiwgJmJwX2RfcmVnc1szXSk7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAiczciLCAmYnBfZF9yZWdzWzRdKTsKKy0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJzOCIsICZicF9kX3JlZ3NbNV0pOworLSAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInM5IiwgJmJwX2RfcmVnc1s2XSk7CistICBjb2xs ZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczEwIiwgJmJwX2RfcmVnc1s3XSk7Cist ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczExIiwgJmJwX2RfcmVnc1s4 XSk7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczEyIiwgJmJwX2Rf cmVnc1s5XSk7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiczEzIiwg JmJwX2RfcmVnc1sxMF0pOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwg InMxNCIsICZicF9kX3JlZ3NbMTFdKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInMz IiwgJmJwX2RfcmVnc1swXSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzNCIsICZi cF9kX3JlZ3NbMV0pOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczUiLCAmYnBfZF9y ZWdzWzJdKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInM2IiwgJmJwX2RfcmVnc1sz XSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzNyIsICZicF9kX3JlZ3NbNF0pOwor KyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiczgiLCAmYnBfZF9yZWdzWzVdKTsKKysgIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInM5IiwgJmJwX2RfcmVnc1s2XSk7CisrICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKCJzMTAiLCAmYnBfZF9yZWdzWzddKTsKKysgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAoInMxMSIsICZicF9kX3JlZ3NbOF0pOworKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgiczEyIiwgJmJwX2RfcmVnc1s5XSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKCJzMTMiLCAmYnBfZF9yZWdzWzEwXSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKCJzMTQiLCAmYnBfZF9yZWdzWzExXSk7CisgCisgICBmb3IgKGJwID0gMDsgYnAgPCA2OyBi cCsrKQorICAgICB7CitAQCAtMzA3LDExICsyOTksMTEgQEAgY3Jpc19yZW1vdmVfcG9pbnQgKGNo YXIgdHlwZSwgQ09SRV9BRERSIAorICAgICAgc3RhcnQvZW5kIGFkZHJlc3Nlcy4gICovCisgICBi cF9jdHJsICY9IH4oMyA8PCAoMiArIChicCAqIDQpKSk7CisgICAvKiBTZXR1cCB0aGUgY29uZmln dXJhdGlvbiByZWdpc3Rlci4gICovCistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJzMCIsICZicF9jdHJsKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiczAiLCAm YnBfY3RybCk7CisgCisgICBzdGFydCA9IGVuZCA9IDA7CisgICAvKiBDb25maWd1cmUgdGhlIHdh dGNocG9pbnQgcmVnaXN0ZXIuICAqLworLSAgY3Jpc193cml0ZV9kYXRhX2JyZWFrcG9pbnQgKHJl Z2NhY2hlLCBicCwgc3RhcnQsIGVuZCk7CisrICBjcmlzX3dyaXRlX2RhdGFfYnJlYWtwb2ludCAo YnAsIHN0YXJ0LCBlbmQpOworIAorICAgLyogTm90ZSB0aGF0IHdlIGRvbid0IGNsZWFyIHRoZSBT MSBmbGFnIGhlcmUuICBJdCdzIGRvbmUgd2hlbiBjb250aW51aW5nLiAgKi8KKyAgIHJldHVybiAw OworLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAw MDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEwLTAxLTIx IDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAorQEAgLTQ1MSw4ICs0NTEsNyBAQCBoYW5kbGVfZXh0 ZW5kZWRfd2FpdCAoc3RydWN0IGx3cF9pbmZvICplCisgc3RhdGljIENPUkVfQUREUgorIGdldF9z dG9wX3BjICh2b2lkKQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhy ZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKKy0gIENPUkVfQUREUiBzdG9wX3Bj ID0gKCp0aGVfbG93X3RhcmdldC5nZXRfcGMpIChyZWdjYWNoZSk7CisrICBDT1JFX0FERFIgc3Rv cF9wYyA9ICgqdGhlX2xvd190YXJnZXQuZ2V0X3BjKSAoKTsKKyAKKyAgIGlmICghIGdldF90aHJl YWRfbHdwIChjdXJyZW50X2luZmVyaW9yKS0+c3RlcHBpbmcpCisgICAgIHN0b3BfcGMgLT0gdGhl X2xvd190YXJnZXQuZGVjcl9wY19hZnRlcl9icmVhazsKK0BAIC04ODUsNyArODg0LDYgQEAgY2hl Y2tfcmVtb3ZlZF9icmVha3BvaW50IChzdHJ1Y3QgbHdwX2luZgorIHsKKyAgIENPUkVfQUREUiBz dG9wX3BjOworICAgc3RydWN0IHRocmVhZF9pbmZvICpzYXZlZF9pbmZlcmlvcjsKKy0gIHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGU7CisgCisgICBpZiAoZXZlbnRfY2hpbGQtPnBlbmRpbmdfaXNf YnJlYWtwb2ludCA9PSAwKQorICAgICByZXR1cm4gMDsKK0BAIC04OTYsNyArODk0LDcgQEAgY2hl Y2tfcmVtb3ZlZF9icmVha3BvaW50IChzdHJ1Y3QgbHdwX2luZgorIAorICAgc2F2ZWRfaW5mZXJp b3IgPSBjdXJyZW50X2luZmVyaW9yOworICAgY3VycmVudF9pbmZlcmlvciA9IGdldF9sd3BfdGhy ZWFkIChldmVudF9jaGlsZCk7CistICByZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1 cnJlbnRfaW5mZXJpb3IsIDEpOworKworICAgc3RvcF9wYyA9IGdldF9zdG9wX3BjICgpOworIAor ICAgLyogSWYgdGhlIFBDIGhhcyBjaGFuZ2VkIHNpbmNlIHdlIHN0b3BwZWQsIHRoZW4gd2Ugc2hv dWxkbid0IGRvCitAQCAtOTMyLDcgKzkzMCw3IEBAIGNoZWNrX3JlbW92ZWRfYnJlYWtwb2ludCAo c3RydWN0IGx3cF9pbmYKKyAgICAgeworICAgICAgIGlmIChkZWJ1Z190aHJlYWRzKQorIAlmcHJp bnRmIChzdGRlcnIsICJTZXQgcGMgdG8gMHglbHhcbiIsIChsb25nKSBzdG9wX3BjKTsKKy0gICAg ICAoKnRoZV9sb3dfdGFyZ2V0LnNldF9wYykgKHJlZ2NhY2hlLCBzdG9wX3BjKTsKKysgICAgICAo KnRoZV9sb3dfdGFyZ2V0LnNldF9wYykgKHN0b3BfcGMpOworICAgICB9CisgCisgICAvKiBXZSBj b25zdW1lZCB0aGUgcGVuZGluZyBTSUdUUkFQLiAgKi8KK0BAIC0xMDY1LDEyICsxMDYzLDExIEBA IHJldHJ5OgorICAgICAgICYmIHRoZV9sb3dfdGFyZ2V0LmdldF9wYyAhPSBOVUxMKQorICAgICB7 CisgICAgICAgc3RydWN0IHRocmVhZF9pbmZvICpzYXZlZF9pbmZlcmlvciA9IGN1cnJlbnRfaW5m ZXJpb3I7CistICAgICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVn Y2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpOworICAgICAgIENPUkVfQUREUiBwYzsKKyAKKyAg ICAgICBjdXJyZW50X2luZmVyaW9yID0gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKQorIAlmaW5kX2lu ZmVyaW9yX2lkICgmYWxsX3RocmVhZHMsIGNoaWxkLT5oZWFkLmlkKTsKKy0gICAgICBwYyA9ICgq dGhlX2xvd190YXJnZXQuZ2V0X3BjKSAocmVnY2FjaGUpOworKyAgICAgIHBjID0gKCp0aGVfbG93 X3RhcmdldC5nZXRfcGMpICgpOworICAgICAgIGZwcmludGYgKHN0ZGVyciwgImxpbnV4X3dhaXRf Zm9yX2x3cDogcGMgaXMgMHglbHhcbiIsIChsb25nKSBwYyk7CisgICAgICAgY3VycmVudF9pbmZl cmlvciA9IHNhdmVkX2luZmVyaW9yOworICAgICB9CitAQCAtMTgzNSw4ICsxODMyLDcgQEAgbGlu dXhfcmVzdW1lX29uZV9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbAorIAorICAgaWYgKGRlYnVnX3Ro cmVhZHMgJiYgdGhlX2xvd190YXJnZXQuZ2V0X3BjICE9IE5VTEwpCisgICAgIHsKKy0gICAgICBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9p bmZlcmlvciwgMSk7CistICAgICAgQ09SRV9BRERSIHBjID0gKCp0aGVfbG93X3RhcmdldC5nZXRf cGMpIChyZWdjYWNoZSk7CisrICAgICAgQ09SRV9BRERSIHBjID0gKCp0aGVfbG93X3RhcmdldC5n ZXRfcGMpICgpOworICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgcmVzdW1pbmcgZnJvbSBwYyAw eCVseFxuIiwgKGxvbmcpIHBjKTsKKyAgICAgfQorIAorQEAgLTIxMjUsNyArMjEyMSw3IEBAIHJl Z2lzdGVyX2FkZHIgKGludCByZWdudW0pCisgCisgLyogRmV0Y2ggb25lIHJlZ2lzdGVyLiAgKi8K KyBzdGF0aWMgdm9pZAorLWZldGNoX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBpbnQgcmVnbm8pCisrZmV0Y2hfcmVnaXN0ZXIgKGludCByZWdubykKKyB7CisgICBDT1JFX0FE RFIgcmVnYWRkcjsKKyAgIGludCBpLCBzaXplOworQEAgLTIxNjQsMjkgKzIxNjAsMjkgQEAgZmV0 Y2hfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaAorICAgICB9CisgCisgICBpZiAo dGhlX2xvd190YXJnZXQuc3VwcGx5X3B0cmFjZV9yZWdpc3RlcikKKy0gICAgdGhlX2xvd190YXJn ZXQuc3VwcGx5X3B0cmFjZV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYpOworKyAgICB0 aGVfbG93X3RhcmdldC5zdXBwbHlfcHRyYWNlX3JlZ2lzdGVyIChyZWdubywgYnVmKTsKKyAgIGVs c2UKKy0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7CisrICAgIHN1 cHBseV9yZWdpc3RlciAocmVnbm8sIGJ1Zik7CisgCisgZXJyb3JfZXhpdDo7CisgfQorIAorIC8q IEZldGNoIGFsbCByZWdpc3RlcnMsIG9yIGp1c3Qgb25lLCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNz LiAgKi8KKyBzdGF0aWMgdm9pZAorLXVzcl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykKKyt1c3JfZmV0Y2hfaW5mZXJpb3JfcmVn aXN0ZXJzIChpbnQgcmVnbm8pCisgeworICAgaWYgKHJlZ25vID09IC0xKQorICAgICBmb3IgKHJl Z25vID0gMDsgcmVnbm8gPCB0aGVfbG93X3RhcmdldC5udW1fcmVnczsgcmVnbm8rKykKKy0gICAg ICBmZXRjaF9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vKTsKKysgICAgICBmZXRjaF9yZWdpc3Rl ciAocmVnbm8pOworICAgZWxzZQorLSAgICBmZXRjaF9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25v KTsKKysgICAgZmV0Y2hfcmVnaXN0ZXIgKHJlZ25vKTsKKyB9CisgCisgLyogU3RvcmUgb3VyIHJl Z2lzdGVyIHZhbHVlcyBiYWNrIGludG8gdGhlIGluZmVyaW9yLgorICAgIElmIFJFR05PIGlzIC0x LCBkbyB0aGlzIGZvciBhbGwgcmVnaXN0ZXJzLgorICAgIE90aGVyd2lzZSwgUkVHTk8gc3BlY2lm aWVzIHdoaWNoIHJlZ2lzdGVyIChzbyB3ZSBjYW4gc2F2ZSB0aW1lKS4gICovCisgc3RhdGljIHZv aWQKKy11c3Jfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBpbnQgcmVnbm8pCisrdXNyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoaW50IHJlZ25v KQorIHsKKyAgIENPUkVfQUREUiByZWdhZGRyOworICAgaW50IGksIHNpemU7CitAQCAtMjIxMSw5 ICsyMjA3LDkgQEAgdXNyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0IHJlZworICAg ICAgIG1lbXNldCAoYnVmLCAwLCBzaXplKTsKKyAKKyAgICAgICBpZiAodGhlX2xvd190YXJnZXQu Y29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIpCistCXRoZV9sb3dfdGFyZ2V0LmNvbGxlY3RfcHRyYWNl X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7CisrCXRoZV9sb3dfdGFyZ2V0LmNvbGxl Y3RfcHRyYWNlX3JlZ2lzdGVyIChyZWdubywgYnVmKTsKKyAgICAgICBlbHNlCistCWNvbGxlY3Rf cmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmKTsKKysJY29sbGVjdF9yZWdpc3RlciAocmVn bm8sIGJ1Zik7CisgCisgICAgICAgcGlkID0gbHdwaWRfb2YgKGdldF90aHJlYWRfbHdwIChjdXJy ZW50X2luZmVyaW9yKSk7CisgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkgKz0gc2l6ZW9m IChQVFJBQ0VfWEZFUl9UWVBFKSkKK0BAIC0yMjQ1LDcgKzIyNDEsNyBAQCB1c3Jfc3RvcmVfaW5m ZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnCisgICAgIH0KKyAgIGVsc2UKKyAgICAgZm9yIChy ZWdubyA9IDA7IHJlZ25vIDwgdGhlX2xvd190YXJnZXQubnVtX3JlZ3M7IHJlZ25vKyspCistICAg ICAgdXNyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKKysgICAg ICB1c3Jfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdubyk7CisgfQorICNlbmRpZiAvKiBI QVZFX0xJTlVYX1VTUlJFR1MgKi8KKyAKK0BAIC0yMjU0LDcgKzIyNTAsNyBAQCB1c3Jfc3RvcmVf aW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnCisgI2lmZGVmIEhBVkVfTElOVVhfUkVHU0VU UworIAorIHN0YXRpYyBpbnQKKy1yZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKKytyZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVy cyAoKQorIHsKKyAgIHN0cnVjdCByZWdzZXRfaW5mbyAqcmVnc2V0OworICAgaW50IHNhd19nZW5l cmFsX3JlZ3MgPSAwOworQEAgLTIzMDAsNyArMjI5Niw3IEBAIHJlZ3NldHNfZmV0Y2hfaW5mZXJp b3JfcmVnaXN0ZXJzIChzdHJ1Y3QKKyAJfQorICAgICAgIGVsc2UgaWYgKHJlZ3NldC0+dHlwZSA9 PSBHRU5FUkFMX1JFR1MpCisgCXNhd19nZW5lcmFsX3JlZ3MgPSAxOworLSAgICAgIHJlZ3NldC0+ c3RvcmVfZnVuY3Rpb24gKHJlZ2NhY2hlLCBidWYpOworKyAgICAgIHJlZ3NldC0+c3RvcmVfZnVu Y3Rpb24gKGJ1Zik7CisgICAgICAgcmVnc2V0ICsrOworICAgICAgIGZyZWUgKGJ1Zik7CisgICAg IH0KK0BAIC0yMzExLDcgKzIzMDcsNyBAQCByZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVy cyAoc3RydWN0CisgfQorIAorIHN0YXRpYyBpbnQKKy1yZWdzZXRzX3N0b3JlX2luZmVyaW9yX3Jl Z2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKKytyZWdzZXRzX3N0b3JlX2luZmVy aW9yX3JlZ2lzdGVycyAoKQorIHsKKyAgIHN0cnVjdCByZWdzZXRfaW5mbyAqcmVnc2V0OworICAg aW50IHNhd19nZW5lcmFsX3JlZ3MgPSAwOworQEAgLTIzNDUsNyArMjM0MSw3IEBAIHJlZ3NldHNf c3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QKKyAgICAgICBpZiAocmVzID09IDApCisg CXsKKyAJICAvKiBUaGVuIG92ZXJsYXkgb3VyIGNhY2hlZCByZWdpc3RlcnMgb24gdGhhdC4gICov CistCSAgcmVnc2V0LT5maWxsX2Z1bmN0aW9uIChyZWdjYWNoZSwgYnVmKTsKKysJICByZWdzZXQt PmZpbGxfZnVuY3Rpb24gKGJ1Zik7CisgCisgCSAgLyogT25seSBub3cgZG8gd2Ugd3JpdGUgdGhl IHJlZ2lzdGVyIHNldC4gICovCisgI2lmbmRlZiBfX3NwYXJjX18KK0BAIC0yMzk1LDI2ICsyMzkx LDI2IEBAIHJlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QKKyAKKyAKKyB2 b2lkCistbGludXhfZmV0Y2hfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBp bnQgcmVnbm8pCisrbGludXhfZmV0Y2hfcmVnaXN0ZXJzIChpbnQgcmVnbm8pCisgeworICNpZmRl ZiBIQVZFX0xJTlVYX1JFR1NFVFMKKy0gIGlmIChyZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lz dGVycyAocmVnY2FjaGUpID09IDApCisrICBpZiAocmVnc2V0c19mZXRjaF9pbmZlcmlvcl9yZWdp c3RlcnMgKCkgPT0gMCkKKyAgICAgcmV0dXJuOworICNlbmRpZgorICNpZmRlZiBIQVZFX0xJTlVY X1VTUlJFR1MKKy0gIHVzcl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2NhY2hlLCByZWdu byk7CisrICB1c3JfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChyZWdubyk7CisgI2VuZGlmCisg fQorIAorIHZvaWQKKy1saW51eF9zdG9yZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGludCByZWdubykKKytsaW51eF9zdG9yZV9yZWdpc3RlcnMgKGludCByZWdubykKKyB7 CisgI2lmZGVmIEhBVkVfTElOVVhfUkVHU0VUUworLSAgaWYgKHJlZ3NldHNfc3RvcmVfaW5mZXJp b3JfcmVnaXN0ZXJzIChyZWdjYWNoZSkgPT0gMCkKKysgIGlmIChyZWdzZXRzX3N0b3JlX2luZmVy aW9yX3JlZ2lzdGVycyAoKSA9PSAwKQorICAgICByZXR1cm47CisgI2VuZGlmCisgI2lmZGVmIEhB VkVfTElOVVhfVVNSUkVHUworLSAgdXNyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2Fj aGUsIHJlZ25vKTsKKysgIHVzcl9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ25vKTsKKyAj ZW5kaWYKKyB9CisgCistLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5oCTIwMTAtMDEtMjAg MjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5o CTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtMjQsOCArMjQsOCBAQAor ICNpbmNsdWRlICJnZGJfcHJvY19zZXJ2aWNlLmgiCisgCisgI2lmZGVmIEhBVkVfTElOVVhfUkVH U0VUUworLXR5cGVkZWYgdm9pZCAoKnJlZ3NldF9maWxsX2Z1bmMpIChzdHJ1Y3QgcmVnY2FjaGUg Kiwgdm9pZCAqKTsKKy10eXBlZGVmIHZvaWQgKCpyZWdzZXRfc3RvcmVfZnVuYykgKHN0cnVjdCBy ZWdjYWNoZSAqLCBjb25zdCB2b2lkICopOworK3R5cGVkZWYgdm9pZCAoKnJlZ3NldF9maWxsX2Z1 bmMpICh2b2lkICopOworK3R5cGVkZWYgdm9pZCAoKnJlZ3NldF9zdG9yZV9mdW5jKSAoY29uc3Qg dm9pZCAqKTsKKyBlbnVtIHJlZ3NldF90eXBlIHsKKyAgIEdFTkVSQUxfUkVHUywKKyAgIEZQX1JF R1MsCitAQCAtNzAsOCArNzAsOCBAQCBzdHJ1Y3QgbGludXhfdGFyZ2V0X29wcworICAgICAgc3Rv cmUgdGhlIHJlZ2lzdGVyLCBhbmQgMiBpZiBmYWlsdXJlIHRvIHN0b3JlIHRoZSByZWdpc3Rlcgor ICAgICAgaXMgYWNjZXB0YWJsZS4gICovCisgICBpbnQgKCpjYW5ub3Rfc3RvcmVfcmVnaXN0ZXIp IChpbnQpOworLSAgQ09SRV9BRERSICgqZ2V0X3BjKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSk7CistICB2b2lkICgqc2V0X3BjKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9B RERSIG5ld3BjKTsKKysgIENPUkVfQUREUiAoKmdldF9wYykgKHZvaWQpOworKyAgdm9pZCAoKnNl dF9wYykgKENPUkVfQUREUiBuZXdwYyk7CisgICBjb25zdCB1bnNpZ25lZCBjaGFyICpicmVha3Bv aW50OworICAgaW50IGJyZWFrcG9pbnRfbGVuOworICAgQ09SRV9BRERSICgqYnJlYWtwb2ludF9y ZWluc2VydF9hZGRyKSAodm9pZCk7CitAQCAtODgsMTAgKzg4LDggQEAgc3RydWN0IGxpbnV4X3Rh cmdldF9vcHMKKyAKKyAgIC8qIEhvb2tzIHRvIHJlZm9ybWF0IHJlZ2lzdGVyIGRhdGEgZm9yIFBF RUtVU1IvUE9LRVVTUiAoaW4gcGFydGljdWxhcgorICAgICAgZm9yIHJlZ2lzdGVycyBzbWFsbGVy IHRoYW4gYW4geGZlciB1bml0KS4gICovCistICB2b2lkICgqY29sbGVjdF9wdHJhY2VfcmVnaXN0 ZXIpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCQkgICBpbnQgcmVnbm8sIGNoYXIg KmJ1Zik7CistICB2b2lkICgqc3VwcGx5X3B0cmFjZV9yZWdpc3RlcikgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsCistCQkJCSAgaW50IHJlZ25vLCBjb25zdCBjaGFyICpidWYpOworKyAgdm9p ZCAoKmNvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyKSAoaW50IHJlZ25vLCBjaGFyICpidWYpOworKyAg dm9pZCAoKnN1cHBseV9wdHJhY2VfcmVnaXN0ZXIpIChpbnQgcmVnbm8sIGNvbnN0IGNoYXIgKmJ1 Zik7CisgCisgICAvKiBIb29rIHRvIGNvbnZlcnQgZnJvbSB0YXJnZXQgZm9ybWF0IHRvIHB0cmFj ZSBmb3JtYXQgYW5kIGJhY2suCisgICAgICBSZXR1cm5zIHRydWUgaWYgYW55IGNvbnZlcnNpb24g d2FzIGRvbmU7IGZhbHNlIG90aGVyd2lzZS4KKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtbTMy ci1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dk YnNlcnZlci9saW51eC1tMzJyLWxvdy5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICsw MTAwCitAQCAtNTMsMjAgKzUzLDE4IEBAIG0zMnJfY2Fubm90X2ZldGNoX3JlZ2lzdGVyIChpbnQg cmVnbm8pCisgfQorIAorIHN0YXRpYyBDT1JFX0FERFIKKy1tMzJyX2dldF9wYyAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSkKKyttMzJyX2dldF9wYyAoKQorIHsKKyAgIHVuc2lnbmVkIGxvbmcg cGM7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmcGMpOwor LSAgaWYgKGRlYnVnX3RocmVhZHMpCistICAgIGZwcmludGYgKHN0ZGVyciwgInN0b3AgcGMgaXMg JTA4bHhcbiIsIHBjKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsK KyAgIHJldHVybiBwYzsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1tMzJyX3NldF9wYyAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQorK20zMnJfc2V0X3BjIChDT1JFX0FE RFIgcGMpCisgeworICAgdW5zaWduZWQgbG9uZyBuZXdwYyA9IHBjOworLSAgc3VwcGx5X3JlZ2lz dGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmbmV3cGMpOworKyAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKCJwYyIsICZuZXdwYyk7CisgfQorIAorIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBz aG9ydCBtMzJyX2JyZWFrcG9pbnQgPSAweDEwZjE7CistLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4 LW02OGstbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dk Yi9nZGJzZXJ2ZXIvbGludXgtbTY4ay1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAw MCArMDEwMAorQEAgLTcxLDQwICs3MSw0MCBAQCBtNjhrX2Nhbm5vdF9mZXRjaF9yZWdpc3RlciAo aW50IHJlZ25vKQorICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisgCisgc3RhdGljIHZvaWQKKy1t NjhrX2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQor K202OGtfZmlsbF9ncmVnc2V0ICh2b2lkICpidWYpCisgeworICAgaW50IGk7CisgCisgICBmb3Ig KGkgPSAwOyBpIDwgbTY4a19udW1fZ3JlZ3M7IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAo cmVnY2FjaGUsIGksIChjaGFyICopIGJ1ZiArIG02OGtfcmVnbWFwW2ldKTsKKysgICAgY29sbGVj dF9yZWdpc3RlciAoaSwgKGNoYXIgKikgYnVmICsgbTY4a19yZWdtYXBbaV0pOworIH0KKyAKKyBz dGF0aWMgdm9pZAorLW02OGtfc3RvcmVfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgY29uc3Qgdm9pZCAqYnVmKQorK202OGtfc3RvcmVfZ3JlZ3NldCAoY29uc3Qgdm9pZCAqYnVm KQorIHsKKyAgIGludCBpOworIAorICAgZm9yIChpID0gMDsgaSA8IG02OGtfbnVtX2dyZWdzOyBp KyspCistICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGksIChjb25zdCBjaGFyICopIGJ1 ZiArIG02OGtfcmVnbWFwW2ldKTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChpLCAoY29uc3QgY2hh ciAqKSBidWYgKyBtNjhrX3JlZ21hcFtpXSk7CisgfQorIAorIHN0YXRpYyB2b2lkCistbTY4a19m aWxsX2ZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisrbTY4 a19maWxsX2ZwcmVnc2V0ICh2b2lkICpidWYpCisgeworICAgaW50IGk7CisgCisgICBmb3IgKGkg PSBtNjhrX251bV9ncmVnczsgaSA8IG02OGtfbnVtX3JlZ3M7IGkrKykKKy0gICAgY29sbGVjdF9y ZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYKKy0JCQkgKyAobTY4a19yZWdtYXBb aV0gLSBtNjhrX3JlZ21hcFttNjhrX251bV9ncmVnc10pKSk7CisrICAgIGNvbGxlY3RfcmVnaXN0 ZXIgKGksICgoY2hhciAqKSBidWYKKysJCQkgICsgKG02OGtfcmVnbWFwW2ldIC0gbTY4a19yZWdt YXBbbTY4a19udW1fZ3JlZ3NdKSkpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLW02OGtfc3RvcmVf ZnByZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKKytt NjhrX3N0b3JlX2ZwcmVnc2V0IChjb25zdCB2b2lkICpidWYpCisgeworICAgaW50IGk7CisgCisg ICBmb3IgKGkgPSBtNjhrX251bV9ncmVnczsgaSA8IG02OGtfbnVtX3JlZ3M7IGkrKykKKy0gICAg c3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjb25zdCBjaGFyICopIGJ1ZgorKyAgICBz dXBwbHlfcmVnaXN0ZXIgKGksICgoY29uc3QgY2hhciAqKSBidWYKKyAJCQkgKyAobTY4a19yZWdt YXBbaV0gLSBtNjhrX3JlZ21hcFttNjhrX251bV9ncmVnc10pKSk7CisgfQorIAorQEAgLTEyNiwy MCArMTI2LDIwIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIG02OGtfYnJlYWtwb2kKKyAj ZGVmaW5lIG02OGtfYnJlYWtwb2ludF9sZW4gMgorIAorIHN0YXRpYyBDT1JFX0FERFIKKy1tNjhr X2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKKyttNjhrX2dldF9wYyAoKQorIHsK KyAgIHVuc2lnbmVkIGxvbmcgcGM7CisgCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJl Z2NhY2hlLCAicGMiLCAmcGMpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAm cGMpOworICAgcmV0dXJuIHBjOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLW02OGtfc2V0X3BjIChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgdmFsdWUpCisrbTY4a19zZXRfcGMg KENPUkVfQUREUiB2YWx1ZSkKKyB7CisgICB1bnNpZ25lZCBsb25nIG5ld3BjID0gdmFsdWU7Cisg CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZuZXdwYyk7Cisr ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKKyB9CisgCisgc3RhdGlj IGludAorLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1taXBzLWxvdy5jCTIwMTAtMDEtMjAgMjM6 NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LW1pcHMtbG93 LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMTUsMTUgKzExNSwx NSBAQCBtaXBzX2Nhbm5vdF9zdG9yZV9yZWdpc3RlciAoaW50IHJlZ25vKQorIH0KKyAKKyBzdGF0 aWMgQ09SRV9BRERSCistbWlwc19nZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCisr bWlwc19nZXRfcGMgKCkKKyB7CisgICB1bmlvbiBtaXBzX3JlZ2lzdGVyIHBjOworLSAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgcGMuYnVmKTsKKysgIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgcGMuYnVmKTsKKyAgIHJldHVybiByZWdpc3Rlcl9zaXpl ICgwKSA9PSA0ID8gcGMucmVnMzIgOiBwYy5yZWc2NDsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1t aXBzX3NldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQorK21p cHNfc2V0X3BjIChDT1JFX0FERFIgcGMpCisgeworICAgdW5pb24gbWlwc19yZWdpc3RlciBuZXdw YzsKKyAgIGlmIChyZWdpc3Rlcl9zaXplICgwKSA9PSA0KQorQEAgLTEzMSw3ICsxMzEsNyBAQCBt aXBzX3NldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgCisgICBlbHNlCisgICAgIG5l d3BjLnJlZzY0ID0gcGM7CisgCistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUs ICJwYyIsIG5ld3BjLmJ1Zik7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgbmV3 cGMuYnVmKTsKKyB9CisgCisgLyogQ29ycmVjdCBpbiBlaXRoZXIgZW5kaWFubmVzcy4gICovCitA QCAtMTQyLDExICsxNDIsMTAgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2JyZWFr cG9pbgorICAgIGlzIG91dHNpZGUgb2YgdGhlIGZ1bmN0aW9uLiAgU28gcmF0aGVyIHRoYW4gaW1w b3J0aW5nIHNvZnR3YXJlIHNpbmdsZS1zdGVwLAorICAgIHdlIGNhbiBqdXN0IHJ1biB1bnRpbCBl eGl0LiAgKi8KKyBzdGF0aWMgQ09SRV9BRERSCistbWlwc19yZWluc2VydF9hZGRyICh2b2lkKQor K21pcHNfcmVpbnNlcnRfYWRkciAoKQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUg PSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCAxKTsKKyAgIHVuaW9uIG1p cHNfcmVnaXN0ZXIgcmE7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAi cjMxIiwgcmEuYnVmKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInIzMSIsIHJhLmJ1 Zik7CisgICByZXR1cm4gcmVnaXN0ZXJfc2l6ZSAoMCkgPT0gNCA/IHJhLnJlZzMyIDogcmEucmVn NjQ7CisgfQorIAorQEAgLTE4NCwyNiArMTgzLDI0IEBAIHBzX2dldF90aHJlYWRfYXJlYSAoY29u c3Qgc3RydWN0IHBzX3Byb2MKKyAjaWZkZWYgSEFWRV9QVFJBQ0VfR0VUUkVHUworIAorIHN0YXRp YyB2b2lkCistbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LAorLQkJICAgICAgIGludCB1c2VfNjRiaXQsIGludCByZWdubywgdW5pb24gbWlwc19yZWdpc3Rl ciAqcmVnKQorK21pcHNfY29sbGVjdF9yZWdpc3RlciAoaW50IHVzZV82NGJpdCwgaW50IHJlZ25v LCB1bmlvbiBtaXBzX3JlZ2lzdGVyICpyZWcpCisgeworICAgdW5pb24gbWlwc19yZWdpc3RlciB0 bXBfcmVnOworIAorICAgaWYgKHVzZV82NGJpdCkKKyAgICAgeworLSAgICAgIGNvbGxlY3RfcmVn aXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgJnRtcF9yZWcucmVnNjQpOworKyAgICAgIGNvbGxlY3Rf cmVnaXN0ZXIgKHJlZ25vLCAmdG1wX3JlZy5yZWc2NCk7CisgICAgICAgKnJlZyA9IHRtcF9yZWc7 CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCByZWdubywgJnRtcF9yZWcucmVnMzIpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJl Z25vLCAmdG1wX3JlZy5yZWczMik7CisgICAgICAgcmVnLT5yZWc2NCA9IHRtcF9yZWcucmVnMzI7 CisgICAgIH0KKyB9CisgCisgc3RhdGljIHZvaWQKKy1taXBzX3N1cHBseV9yZWdpc3RlciAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKy0JCSAgICAgIGludCB1c2VfNjRiaXQsIGludCByZWdu bywgY29uc3QgdW5pb24gbWlwc19yZWdpc3RlciAqcmVnKQorK21pcHNfc3VwcGx5X3JlZ2lzdGVy IChpbnQgdXNlXzY0Yml0LCBpbnQgcmVnbm8sIGNvbnN0IHVuaW9uIG1pcHNfcmVnaXN0ZXIgKnJl ZykKKyB7CisgICBpbnQgb2Zmc2V0ID0gMDsKKyAKK0BAIC0yMTIsMzUgKzIwOSwzMyBAQCBtaXBz X3N1cHBseV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyCisgICBpZiAoX19CWVRFX09SREVS ID09IF9fQklHX0VORElBTiAmJiAhdXNlXzY0Yml0KQorICAgICBvZmZzZXQgPSA0OworIAorLSAg c3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIHJlZy0+YnVmICsgb2Zmc2V0KTsKKysg IHN1cHBseV9yZWdpc3RlciAocmVnbm8sIHJlZy0+YnVmICsgb2Zmc2V0KTsKKyB9CisgCisgc3Rh dGljIHZvaWQKKy1taXBzX2NvbGxlY3RfcmVnaXN0ZXJfMzJiaXQgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsCistCQkJICAgICBpbnQgdXNlXzY0Yml0LCBpbnQgcmVnbm8sIHVuc2lnbmVkIGNo YXIgKmJ1ZikKKyttaXBzX2NvbGxlY3RfcmVnaXN0ZXJfMzJiaXQgKGludCB1c2VfNjRiaXQsIGlu dCByZWdubywgdW5zaWduZWQgY2hhciAqYnVmKQorIHsKKyAgIHVuaW9uIG1pcHNfcmVnaXN0ZXIg dG1wX3JlZzsKKyAgIGludCByZWczMjsKKyAKKy0gIG1pcHNfY29sbGVjdF9yZWdpc3RlciAocmVn Y2FjaGUsIHVzZV82NGJpdCwgcmVnbm8sICZ0bXBfcmVnKTsKKysgIG1pcHNfY29sbGVjdF9yZWdp c3RlciAodXNlXzY0Yml0LCByZWdubywgJnRtcF9yZWcpOworICAgcmVnMzIgPSB0bXBfcmVnLnJl ZzY0OworICAgbWVtY3B5IChidWYsICZyZWczMiwgNCk7CisgfQorIAorIHN0YXRpYyB2b2lkCist bWlwc19zdXBwbHlfcmVnaXN0ZXJfMzJiaXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCist CQkJICAgIGludCB1c2VfNjRiaXQsIGludCByZWdubywgY29uc3QgdW5zaWduZWQgY2hhciAqYnVm KQorK21pcHNfc3VwcGx5X3JlZ2lzdGVyXzMyYml0IChpbnQgdXNlXzY0Yml0LCBpbnQgcmVnbm8s IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZikKKyB7CisgICB1bmlvbiBtaXBzX3JlZ2lzdGVyIHRt cF9yZWc7CisgICBpbnQgcmVnMzI7CisgCisgICBtZW1jcHkgKCZyZWczMiwgYnVmLCA0KTsKKyAg IHRtcF9yZWcucmVnNjQgPSByZWczMjsKKy0gIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNo ZSwgdXNlXzY0Yml0LCByZWdubywgJnRtcF9yZWcpOworKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIg KHVzZV82NGJpdCwgcmVnbm8sICZ0bXBfcmVnKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1taXBz X2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK21p cHNfZmlsbF9ncmVnc2V0ICh2b2lkICpidWYpCisgeworICAgdW5pb24gbWlwc19yZWdpc3RlciAq cmVnc2V0ID0gYnVmOworICAgaW50IGksIHVzZV82NGJpdDsKK0BAIC0yNDgsMjcgKzI0MywyMCBA QCBtaXBzX2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjCisgICB1c2VfNjRiaXQg PSAocmVnaXN0ZXJfc2l6ZSAoMCkgPT0gOCk7CisgCisgICBmb3IgKGkgPSAxOyBpIDwgMzI7IGkr KykKKy0gICAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LCBpLCBy ZWdzZXQgKyBpKTsKKysgICAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGksIHJl Z3NldCArIGkpOworIAorLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0 Yml0LAorLQkJCSBmaW5kX3JlZ25vICgibG8iKSwgcmVnc2V0ICsgMzIpOworLSAgbWlwc19jb2xs ZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAorLQkJCSBmaW5kX3JlZ25vICgiaGki KSwgcmVnc2V0ICsgMzMpOworLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNl XzY0Yml0LAorLQkJCSBmaW5kX3JlZ25vICgicGMiKSwgcmVnc2V0ICsgMzQpOworLSAgbWlwc19j b2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAorLQkJCSBmaW5kX3JlZ25vICgi YmFkdmFkZHIiKSwgcmVnc2V0ICsgMzUpOworLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyIChyZWdj YWNoZSwgdXNlXzY0Yml0LAorLQkJCSBmaW5kX3JlZ25vICgic3RhdHVzIiksIHJlZ3NldCArIDM2 KTsKKy0gIG1pcHNfY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJpdCwKKy0JCQkg ZmluZF9yZWdubyAoImNhdXNlIiksIHJlZ3NldCArIDM3KTsKKysgIG1pcHNfY29sbGVjdF9yZWdp c3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgibG8iKSwgcmVnc2V0ICsgMzIpOworKyAgbWlw c19jb2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJoaSIpLCByZWdzZXQg KyAzMyk7CisrICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAo InBjIiksIHJlZ3NldCArIDM0KTsKKysgIG1pcHNfY29sbGVjdF9yZWdpc3RlciAodXNlXzY0Yml0 LCBmaW5kX3JlZ25vICgiYmFkdmFkZHIiKSwgcmVnc2V0ICsgMzUpOworKyAgbWlwc19jb2xsZWN0 X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJzdGF0dXMiKSwgcmVnc2V0ICsgMzYp OworKyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJjYXVz ZSIpLCByZWdzZXQgKyAzNyk7CisgCistICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hl LCB1c2VfNjRiaXQsCistCQkJIGZpbmRfcmVnbm8gKCJyZXN0YXJ0IiksIHJlZ3NldCArIDApOwor KyAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRfcmVnbm8gKCJyZXN0YXJ0 IiksIHJlZ3NldCArIDApOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLW1pcHNfc3RvcmVfZ3JlZ3Nl dCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK21pcHNfc3Rv cmVfZ3JlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQorIHsKKyAgIGNvbnN0IHVuaW9uIG1pcHNfcmVn aXN0ZXIgKnJlZ3NldCA9IGJ1ZjsKKyAgIGludCBpLCB1c2VfNjRiaXQ7CitAQCAtMjc2LDI0ICsy NjQsMjAgQEAgbWlwc19zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZworICAgdXNl XzY0Yml0ID0gKHJlZ2lzdGVyX3NpemUgKDApID09IDgpOworIAorICAgZm9yIChpID0gMDsgaSA8 IDMyOyBpKyspCistICAgIG1pcHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0 LCBpLCByZWdzZXQgKyBpKTsKKysgICAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwg aSwgcmVnc2V0ICsgaSk7CisgCistICBtaXBzX3N1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHVz ZV82NGJpdCwgZmluZF9yZWdubyAoImxvIiksIHJlZ3NldCArIDMyKTsKKy0gIG1pcHNfc3VwcGx5 X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LCBmaW5kX3JlZ25vICgiaGkiKSwgcmVnc2V0 ICsgMzMpOworLSAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsIGZp bmRfcmVnbm8gKCJwYyIpLCByZWdzZXQgKyAzNCk7CistICBtaXBzX3N1cHBseV9yZWdpc3RlciAo cmVnY2FjaGUsIHVzZV82NGJpdCwKKy0JCQlmaW5kX3JlZ25vICgiYmFkdmFkZHIiKSwgcmVnc2V0 ICsgMzUpOworLSAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB1c2VfNjRiaXQsCist CQkJZmluZF9yZWdubyAoInN0YXR1cyIpLCByZWdzZXQgKyAzNik7CistICBtaXBzX3N1cHBseV9y ZWdpc3RlciAocmVnY2FjaGUsIHVzZV82NGJpdCwKKy0JCQlmaW5kX3JlZ25vICgiY2F1c2UiKSwg cmVnc2V0ICsgMzcpOworKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9y ZWdubyAoImxvIiksIHJlZ3NldCArIDMyKTsKKysgIG1pcHNfc3VwcGx5X3JlZ2lzdGVyICh1c2Vf NjRiaXQsIGZpbmRfcmVnbm8gKCJoaSIpLCByZWdzZXQgKyAzMyk7CisrICBtaXBzX3N1cHBseV9y ZWdpc3RlciAodXNlXzY0Yml0LCBmaW5kX3JlZ25vICgicGMiKSwgcmVnc2V0ICsgMzQpOworKyAg bWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImJhZHZhZGRyIiks IHJlZ3NldCArIDM1KTsKKysgIG1pcHNfc3VwcGx5X3JlZ2lzdGVyICh1c2VfNjRiaXQsIGZpbmRf cmVnbm8gKCJzdGF0dXMiKSwgcmVnc2V0ICsgMzYpOworKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIg KHVzZV82NGJpdCwgZmluZF9yZWdubyAoImNhdXNlIiksIHJlZ3NldCArIDM3KTsKKyAKKy0gIG1p cHNfc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgdXNlXzY0Yml0LAorLQkJCWZpbmRfcmVnbm8g KCJyZXN0YXJ0IiksIHJlZ3NldCArIDApOworKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXIgKHVzZV82 NGJpdCwgZmluZF9yZWdubyAoInJlc3RhcnQiKSwgcmVnc2V0ICsgMCk7CisgfQorIAorIHN0YXRp YyB2b2lkCistbWlwc19maWxsX2ZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2 b2lkICpidWYpCisrbWlwc19maWxsX2ZwcmVnc2V0ICh2b2lkICpidWYpCisgeworICAgdW5pb24g bWlwc19yZWdpc3RlciAqcmVnc2V0ID0gYnVmOworICAgaW50IGksIHVzZV82NGJpdCwgZmlyc3Rf ZnAsIGJpZ19lbmRpYW47CitAQCAtMzA1LDE5ICsyODksMTggQEAgbWlwc19maWxsX2ZwcmVnc2V0 IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZworICAgLyogU2VlIEdEQiBmb3IgYSBkaXNjdXNzaW9uIG9m IHRoaXMgcGVjdWxpYXIgbGF5b3V0LiAgKi8KKyAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQor ICAgICBpZiAodXNlXzY0Yml0KQorLSAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBm aXJzdF9mcCArIGksIHJlZ3NldFtpXS5idWYpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGZp cnN0X2ZwICsgaSwgcmVnc2V0W2ldLmJ1Zik7CisgICAgIGVsc2UKKy0gICAgICBjb2xsZWN0X3Jl Z2lzdGVyIChyZWdjYWNoZSwgZmlyc3RfZnAgKyBpLAorKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXIg KGZpcnN0X2ZwICsgaSwKKyAJCQlyZWdzZXRbaSAmIH4xXS5idWYgKyA0ICogKGJpZ19lbmRpYW4g IT0gKGkgJiAxKSkpOworIAorLSAgbWlwc19jb2xsZWN0X3JlZ2lzdGVyXzMyYml0IChyZWdjYWNo ZSwgdXNlXzY0Yml0LAorLQkJCSAgICAgICBmaW5kX3JlZ25vICgiZmNzciIpLCByZWdzZXRbMzJd LmJ1Zik7CistICBtaXBzX2NvbGxlY3RfcmVnaXN0ZXJfMzJiaXQgKHJlZ2NhY2hlLCB1c2VfNjRi aXQsIGZpbmRfcmVnbm8gKCJmaXIiKSwKKysgIG1pcHNfY29sbGVjdF9yZWdpc3Rlcl8zMmJpdCAo dXNlXzY0Yml0LCBmaW5kX3JlZ25vICgiZmNzciIpLCByZWdzZXRbMzJdLmJ1Zik7CisrICBtaXBz X2NvbGxlY3RfcmVnaXN0ZXJfMzJiaXQgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImZpciIpLAor IAkJCSAgICAgICByZWdzZXRbMzJdLmJ1ZiArIDQpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLW1p cHNfc3RvcmVfZnByZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQg KmJ1ZikKKyttaXBzX3N0b3JlX2ZwcmVnc2V0IChjb25zdCB2b2lkICpidWYpCisgeworICAgY29u c3QgdW5pb24gbWlwc19yZWdpc3RlciAqcmVnc2V0ID0gYnVmOworICAgaW50IGksIHVzZV82NGJp dCwgZmlyc3RfZnAsIGJpZ19lbmRpYW47CitAQCAtMzI5LDE0ICszMTIsMTMgQEAgbWlwc19zdG9y ZV9mcHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZQorICAgLyogU2VlIEdEQiBmb3IgYSBkaXNj dXNzaW9uIG9mIHRoaXMgcGVjdWxpYXIgbGF5b3V0LiAgKi8KKyAgIGZvciAoaSA9IDA7IGkgPCAz MjsgaSsrKQorICAgICBpZiAodXNlXzY0Yml0KQorLSAgICAgIHN1cHBseV9yZWdpc3RlciAocmVn Y2FjaGUsIGZpcnN0X2ZwICsgaSwgcmVnc2V0W2ldLmJ1Zik7CisrICAgICAgc3VwcGx5X3JlZ2lz dGVyIChmaXJzdF9mcCArIGksIHJlZ3NldFtpXS5idWYpOworICAgICBlbHNlCistICAgICAgc3Vw cGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgZmlyc3RfZnAgKyBpLAorKyAgICAgIHN1cHBseV9yZWdp c3RlciAoZmlyc3RfZnAgKyBpLAorIAkJICAgICAgIHJlZ3NldFtpICYgfjFdLmJ1ZiArIDQgKiAo YmlnX2VuZGlhbiAhPSAoaSAmIDEpKSk7CisgCistICBtaXBzX3N1cHBseV9yZWdpc3Rlcl8zMmJp dCAocmVnY2FjaGUsIHVzZV82NGJpdCwKKy0JCQkgICAgICBmaW5kX3JlZ25vICgiZmNzciIpLCBy ZWdzZXRbMzJdLmJ1Zik7CistICBtaXBzX3N1cHBseV9yZWdpc3Rlcl8zMmJpdCAocmVnY2FjaGUs IHVzZV82NGJpdCwgZmluZF9yZWdubyAoImZpciIpLAorKyAgbWlwc19zdXBwbHlfcmVnaXN0ZXJf MzJiaXQgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImZjc3IiKSwgcmVnc2V0WzMyXS5idWYpOwor KyAgbWlwc19zdXBwbHlfcmVnaXN0ZXJfMzJiaXQgKHVzZV82NGJpdCwgZmluZF9yZWdubyAoImZp ciIpLAorIAkJCSAgICAgIHJlZ3NldFszMl0uYnVmICsgNCk7CisgfQorICNlbmRpZiAvKiBIQVZF X1BUUkFDRV9HRVRSRUdTICovCistLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwky MDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9s aW51eC1wcGMtbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0x NjksMjcgKzE2OSwyNiBAQCBwcGNfY2Fubm90X2ZldGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8pCisg fQorIAorIHN0YXRpYyB2b2lkCistcHBjX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8sIGNoYXIgKmJ1ZikKKytwcGNfY29sbGVjdF9w dHJhY2VfcmVnaXN0ZXIgKGludCByZWdubywgY2hhciAqYnVmKQorIHsKKyAgIGludCBzaXplID0g cmVnaXN0ZXJfc2l6ZSAocmVnbm8pOworIAorICAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAobG9u ZykpOworIAorICAgaWYgKHNpemUgPCBzaXplb2YgKGxvbmcpKQorLSAgICBjb2xsZWN0X3JlZ2lz dGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1ZiArIHNpemVvZiAobG9uZykgLSBzaXplKTsKKysgICAg Y29sbGVjdF9yZWdpc3RlciAocmVnbm8sIGJ1ZiArIHNpemVvZiAobG9uZykgLSBzaXplKTsKKyAg IGVsc2UKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCBidWYpOworKyAg ICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdubywgYnVmKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1w cGNfc3VwcGx5X3B0cmFjZV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKy0J CQkgICAgaW50IHJlZ25vLCBjb25zdCBjaGFyICpidWYpCisrcHBjX3N1cHBseV9wdHJhY2VfcmVn aXN0ZXIgKGludCByZWdubywgY29uc3QgY2hhciAqYnVmKQorIHsKKyAgIGludCBzaXplID0gcmVn aXN0ZXJfc2l6ZSAocmVnbm8pOworICAgaWYgKHNpemUgPCBzaXplb2YgKGxvbmcpKQorLSAgICBz dXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmICsgc2l6ZW9mIChsb25nKSAtIHNp emUpOworKyAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCBidWYgKyBzaXplb2YgKGxvbmcpIC0g c2l6ZSk7CisgICBlbHNlCistICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCBi dWYpOworKyAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ25vLCBidWYpOworIH0KKyAKKyAKK0BAIC0y MDAsNyArMTk5LDcgQEAgcHBjX3N1cHBseV9wdHJhY2VfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYQor ICAgIHJldHVybiB0byBGRCBhbmQgQUREUiB0aGUgZmlsZSBoYW5kbGUgYW5kIE5QQyBwYXJhbWV0 ZXIgYWRkcmVzcworICAgIHVzZWQgd2l0aCB0aGUgc3lzdGVtIGNhbGwuICBSZXR1cm4gbm9uLXpl cm8gaWYgc3VjY2Vzc2Z1bC4gICovCisgc3RhdGljIGludAorLXBhcnNlX3NwdWZzX3J1biAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50ICpmZCwgQ09SRV9BRERSICphZGRyKQorK3BhcnNl X3NwdWZzX3J1biAoaW50ICpmZCwgQ09SRV9BRERSICphZGRyKQorIHsKKyAgIENPUkVfQUREUiBj dXJyX3BjOworICAgaW50IGN1cnJfaW5zbjsKK0BAIC0yMDksMTAgKzIwOCwxMCBAQCBwYXJzZV9z cHVmc19ydW4gKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjCisgICBpZiAocmVnaXN0ZXJfc2l6ZSAo MCkgPT0gNCkKKyAgICAgeworICAgICAgIHVuc2lnbmVkIGludCBwYywgcjAsIHIzLCByNDsKKy0g ICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmcGMpOworLSAg ICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJyMCIsICZyMCk7CistICAg ICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgIm9yaWdfcjMiLCAmcjMpOwor LSAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJyNCIsICZyNCk7Cisr ICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmcGMpOworKyAgICAgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoInIwIiwgJnIwKTsKKysgICAgICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKCJvcmlnX3IzIiwgJnIzKTsKKysgICAgICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKCJyNCIsICZyNCk7CisgICAgICAgY3Vycl9wYyA9IChDT1JFX0FERFIpIHBjOworICAgICAg IGN1cnJfcjAgPSAoaW50KSByMDsKKyAgICAgICAqZmQgPSAoaW50KSByMzsKK0BAIC0yMjEsMTAg KzIyMCwxMCBAQCBwYXJzZV9zcHVmc19ydW4gKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjCisgICBl bHNlCisgICAgIHsKKyAgICAgICB1bnNpZ25lZCBsb25nIHBjLCByMCwgcjMsIHI0OworLSAgICAg IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7CistICAgICAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInIwIiwgJnIwKTsKKy0gICAgICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAib3JpZ19yMyIsICZyMyk7CistICAg ICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInI0IiwgJnI0KTsKKysgICAg ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7CisrICAgICAgY29sbGVjdF9y ZWdpc3Rlcl9ieV9uYW1lICgicjAiLCAmcjApOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlf bmFtZSAoIm9yaWdfcjMiLCAmcjMpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo InI0IiwgJnI0KTsKKyAgICAgICBjdXJyX3BjID0gKENPUkVfQUREUikgcGM7CisgICAgICAgY3Vy cl9yMCA9IChpbnQpIHIwOworICAgICAgICpmZCA9IChpbnQpIHIzOworQEAgLTI0NiwxMiArMjQ1 LDEyIEBAIHBhcnNlX3NwdWZzX3J1biAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWMKKyB9CisgCisg c3RhdGljIENPUkVfQUREUgorLXBwY19nZXRfcGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUp CisrcHBjX2dldF9wYyAodm9pZCkKKyB7CisgICBDT1JFX0FERFIgYWRkcjsKKyAgIGludCBmZDsK KyAKKy0gIGlmIChwYXJzZV9zcHVmc19ydW4gKHJlZ2NhY2hlLCAmZmQsICZhZGRyKSkKKysgIGlm IChwYXJzZV9zcHVmc19ydW4gKCZmZCwgJmFkZHIpKQorICAgICB7CisgICAgICAgdW5zaWduZWQg aW50IHBjOworICAgICAgICgqdGhlX3RhcmdldC0+cmVhZF9tZW1vcnkpIChhZGRyLCAodW5zaWdu ZWQgY2hhciAqKSAmcGMsIDQpOworQEAgLTI2MCwyNCArMjU5LDI0IEBAIHBwY19nZXRfcGMgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCisgICBlbHNlIGlmIChyZWdpc3Rlcl9zaXplICgwKSA9 PSA0KQorICAgICB7CisgICAgICAgdW5zaWduZWQgaW50IHBjOworLSAgICAgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7CisrICAgICAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lICgicGMiLCAmcGMpOworICAgICAgIHJldHVybiAoQ09SRV9BRERSKSBwYzsK KyAgICAgfQorICAgZWxzZQorICAgICB7CisgICAgICAgdW5zaWduZWQgbG9uZyBwYzsKKy0gICAg ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmcGMpOworKyAgICAg IGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJnBjKTsKKyAgICAgICByZXR1cm4gKENP UkVfQUREUikgcGM7CisgICAgIH0KKyB9CisgCisgc3RhdGljIHZvaWQKKy1wcGNfc2V0X3BjIChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCisrcHBjX3NldF9wYyAoQ09S RV9BRERSIHBjKQorIHsKKyAgIENPUkVfQUREUiBhZGRyOworICAgaW50IGZkOworIAorLSAgaWYg KHBhcnNlX3NwdWZzX3J1biAocmVnY2FjaGUsICZmZCwgJmFkZHIpKQorKyAgaWYgKHBhcnNlX3Nw dWZzX3J1biAoJmZkLCAmYWRkcikpCisgICAgIHsKKyAgICAgICB1bnNpZ25lZCBpbnQgbmV3cGMg PSBwYzsKKyAgICAgICAoKnRoZV90YXJnZXQtPndyaXRlX21lbW9yeSkgKGFkZHIsICh1bnNpZ25l ZCBjaGFyICopICZuZXdwYywgNCk7CitAQCAtMjg1LDEyICsyODQsMTIgQEAgcHBjX3NldF9wYyAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQworICAgZWxzZSBpZiAocmVnaXN0ZXJfc2l6ZSAo MCkgPT0gNCkKKyAgICAgeworICAgICAgIHVuc2lnbmVkIGludCBuZXdwYyA9IHBjOworLSAgICAg IHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKKysgICAg ICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKKyAgICAgfQorICAgZWxz ZQorICAgICB7CisgICAgICAgdW5zaWduZWQgbG9uZyBuZXdwYyA9IHBjOworLSAgICAgIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBjIiwgJm5ld3BjKTsKKysgICAgICBzdXBw bHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKKyAgICAgfQorIH0KKyAKK0BAIC00 NTAsMTggKzQ0OSwxOCBAQCBwcGNfYnJlYWtwb2ludF9hdCAoQ09SRV9BRERSIHdoZXJlKQorIC8q IFByb3ZpZGUgb25seSBhIGZpbGwgZnVuY3Rpb24gZm9yIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHNl dC4gIHBzX2xnZXRyZWdzCisgICAgd2lsbCB1c2UgdGhpcyBmb3IgTlBUTCBzdXBwb3J0LiAgKi8K KyAKKy1zdGF0aWMgdm9pZCBwcGNfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCB2b2lkICpidWYpCisrc3RhdGljIHZvaWQgcHBjX2ZpbGxfZ3JlZ3NldCAodm9pZCAqYnVm KQorIHsKKyAgIGludCBpOworIAorICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspCistICAgIHBw Y19jb2xsZWN0X3B0cmFjZV9yZWdpc3RlciAocmVnY2FjaGUsIGksIChjaGFyICopIGJ1ZiArIHBw Y19yZWdtYXBbaV0pOworKyAgICBwcGNfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKGksIChjaGFy ICopIGJ1ZiArIHBwY19yZWdtYXBbaV0pOworIAorICAgZm9yIChpID0gNjQ7IGkgPCA3MDsgaSsr KQorLSAgICBwcGNfY29sbGVjdF9wdHJhY2VfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCAoY2hhciAq KSBidWYgKyBwcGNfcmVnbWFwW2ldKTsKKysgICAgcHBjX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVy IChpLCAoY2hhciAqKSBidWYgKyBwcGNfcmVnbWFwW2ldKTsKKyAKKyAgIGZvciAoaSA9IDcxOyBp IDwgNzM7IGkrKykKKy0gICAgcHBjX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChyZWdjYWNoZSwg aSwgKGNoYXIgKikgYnVmICsgcHBjX3JlZ21hcFtpXSk7CisrICAgIHBwY19jb2xsZWN0X3B0cmFj ZV9yZWdpc3RlciAoaSwgKGNoYXIgKikgYnVmICsgcHBjX3JlZ21hcFtpXSk7CisgfQorIAorICNp Zm5kZWYgUFRSQUNFX0dFVFZTWFJFR1MKK0BAIC00NzIsNyArNDcxLDcgQEAgc3RhdGljIHZvaWQg cHBjX2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZworICNkZWZpbmUgU0laRU9GX1ZTWFJFR1MgMzIq OAorIAorIHN0YXRpYyB2b2lkCistcHBjX2ZpbGxfdnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCB2b2lkICpidWYpCisrcHBjX2ZpbGxfdnN4cmVnc2V0ICh2b2lkICpidWYpCisg eworICAgaW50IGksIGJhc2U7CisgICBjaGFyICpyZWdzZXQgPSBidWY7CitAQCAtNDgyLDExICs0 ODEsMTEgQEAgcHBjX2ZpbGxfdnN4cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZworIAorICAg YmFzZSA9IGZpbmRfcmVnbm8gKCJ2czBoIik7CisgICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykK Ky0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGJhc2UgKyBpLCAmcmVnc2V0W2kgKiA4 XSk7CisrICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGJhc2UgKyBpLCAmcmVnc2V0W2kgKiA4XSk7Cisg fQorIAorIHN0YXRpYyB2b2lkCistcHBjX3N0b3JlX3ZzeHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK3BwY19zdG9yZV92c3hyZWdzZXQgKGNvbnN0 IHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaSwgYmFzZTsKKyAgIGNvbnN0IGNoYXIgKnJlZ3NldCA9 IGJ1ZjsKK0BAIC00OTYsNyArNDk1LDcgQEAgcHBjX3N0b3JlX3ZzeHJlZ3NldCAoc3RydWN0IHJl Z2NhY2hlICpyZQorIAorICAgYmFzZSA9IGZpbmRfcmVnbm8gKCJ2czBoIik7CisgICBmb3IgKGkg PSAwOyBpIDwgMzI7IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgYmFzZSAr IGksICZyZWdzZXRbaSAqIDhdKTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChiYXNlICsgaSwgJnJl Z3NldFtpICogOF0pOworIH0KKyAKKyAjaWZuZGVmIFBUUkFDRV9HRVRWUlJFR1MKK0BAIC01MDcs NyArNTA2LDcgQEAgcHBjX3N0b3JlX3ZzeHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZQorICNk ZWZpbmUgU0laRU9GX1ZSUkVHUyAzMyoxNis0CisgCisgc3RhdGljIHZvaWQKKy1wcGNfZmlsbF92 cnJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK3BwY19maWxs X3ZycmVnc2V0ICh2b2lkICpidWYpCisgeworICAgaW50IGksIGJhc2U7CisgICBjaGFyICpyZWdz ZXQgPSBidWY7CitAQCAtNTE3LDE0ICs1MTYsMTQgQEAgcHBjX2ZpbGxfdnJyZWdzZXQgKHN0cnVj dCByZWdjYWNoZSAqcmVnYworIAorICAgYmFzZSA9IGZpbmRfcmVnbm8gKCJ2cjAiKTsKKyAgIGZv ciAoaSA9IDA7IGkgPCAzMjsgaSsrKQorLSAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwg YmFzZSArIGksICZyZWdzZXRbaSAqIDE2XSk7CisrICAgIGNvbGxlY3RfcmVnaXN0ZXIgKGJhc2Ug KyBpLCAmcmVnc2V0W2kgKiAxNl0pOworIAorLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgInZzY3IiLCAmcmVnc2V0WzMyICogMTYgKyAxMl0pOworLSAgY29sbGVjdF9yZWdp c3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInZyc2F2ZSIsICZyZWdzZXRbMzMgKiAxNl0pOworKyAg Y29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgidnNjciIsICZyZWdzZXRbMzIgKiAxNiArIDEyXSk7 CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJ2cnNhdmUiLCAmcmVnc2V0WzMzICogMTZd KTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1wcGNfc3RvcmVfdnJyZWdzZXQgKHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKKytwcGNfc3RvcmVfdnJyZWdzZXQgKGNv bnN0IHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaSwgYmFzZTsKKyAgIGNvbnN0IGNoYXIgKnJlZ3Nl dCA9IGJ1ZjsKK0BAIC01MzQsMTAgKzUzMywxMCBAQCBwcGNfc3RvcmVfdnJyZWdzZXQgKHN0cnVj dCByZWdjYWNoZSAqcmVnCisgCisgICBiYXNlID0gZmluZF9yZWdubyAoInZyMCIpOworICAgZm9y IChpID0gMDsgaSA8IDMyOyBpKyspCistICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGJh c2UgKyBpLCAmcmVnc2V0W2kgKiAxNl0pOworKyAgICBzdXBwbHlfcmVnaXN0ZXIgKGJhc2UgKyBp LCAmcmVnc2V0W2kgKiAxNl0pOworIAorLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAidnNjciIsICZyZWdzZXRbMzIgKiAxNiArIDEyXSk7CistICBzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAocmVnY2FjaGUsICJ2cnNhdmUiLCAmcmVnc2V0WzMzICogMTZdKTsKKysgIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lICgidnNjciIsICZyZWdzZXRbMzIgKiAxNiArIDEyXSk7CisrICBz dXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInZyc2F2ZSIsICZyZWdzZXRbMzMgKiAxNl0pOworIH0K KyAKKyAjaWZuZGVmIFBUUkFDRV9HRVRFVlJSRUdTCitAQCAtNTUzLDcgKzU1Miw3IEBAIHN0cnVj dCBnZGJfZXZycmVnc2V0X3QKKyB9OworIAorIHN0YXRpYyB2b2lkCistcHBjX2ZpbGxfZXZycmVn c2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisrcHBjX2ZpbGxfZXZy cmVnc2V0ICh2b2lkICpidWYpCisgeworICAgaW50IGksIGV2MDsKKyAgIHN0cnVjdCBnZGJfZXZy cmVnc2V0X3QgKnJlZ3NldCA9IGJ1ZjsKK0BAIC01NjMsMTQgKzU2MiwxNCBAQCBwcGNfZmlsbF9l dnJyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnCisgCisgICBldjAgPSBmaW5kX3JlZ25vICgi ZXYwaCIpOworICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspCistICAgIGNvbGxlY3RfcmVnaXN0 ZXIgKHJlZ2NhY2hlLCBldjAgKyBpLCAmcmVnc2V0LT5ldnJbaV0pOworKyAgICBjb2xsZWN0X3Jl Z2lzdGVyIChldjAgKyBpLCAmcmVnc2V0LT5ldnJbaV0pOworIAorLSAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgImFjYyIsICZyZWdzZXQtPmFjYyk7CistICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAic3BlZnNjciIsICZyZWdzZXQtPnNwZWZzY3IpOwor KyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgiYWNjIiwgJnJlZ3NldC0+YWNjKTsKKysgIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInNwZWZzY3IiLCAmcmVnc2V0LT5zcGVmc2NyKTsKKyB9 CisgCisgc3RhdGljIHZvaWQKKy1wcGNfc3RvcmVfZXZycmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCisrcHBjX3N0b3JlX2V2cnJlZ3NldCAoY29uc3Qg dm9pZCAqYnVmKQorIHsKKyAgIGludCBpLCBldjA7CisgICBjb25zdCBzdHJ1Y3QgZ2RiX2V2cnJl Z3NldF90ICpyZWdzZXQgPSBidWY7CitAQCAtNTgwLDEwICs1NzksMTAgQEAgcHBjX3N0b3JlX2V2 cnJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZQorIAorICAgZXYwID0gZmluZF9yZWdubyAoImV2 MGgiKTsKKyAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQorLSAgICBzdXBwbHlfcmVnaXN0ZXIg KHJlZ2NhY2hlLCBldjAgKyBpLCAmcmVnc2V0LT5ldnJbaV0pOworKyAgICBzdXBwbHlfcmVnaXN0 ZXIgKGV2MCArIGksICZyZWdzZXQtPmV2cltpXSk7CisgCistICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAocmVnY2FjaGUsICJhY2MiLCAmcmVnc2V0LT5hY2MpOworLSAgc3VwcGx5X3JlZ2lzdGVy X2J5X25hbWUgKHJlZ2NhY2hlLCAic3BlZnNjciIsICZyZWdzZXQtPnNwZWZzY3IpOworKyAgc3Vw cGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJhY2MiLCAmcmVnc2V0LT5hY2MpOworKyAgc3VwcGx5X3Jl Z2lzdGVyX2J5X25hbWUgKCJzcGVmc2NyIiwgJnJlZ3NldC0+c3BlZnNjcik7CisgfQorIAorIHN0 cnVjdCByZWdzZXRfaW5mbyB0YXJnZXRfcmVnc2V0c1tdID0geworLS0tIC4vZ2RiL2dkYnNlcnZl ci9saW51eC1zMzkwLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisr KysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXMzOTAtbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4w MDAwMDAwMDAgKzAxMDAKK0BAIC0xMDYsNyArMTA2LDcgQEAgczM5MF9jYW5ub3Rfc3RvcmVfcmVn aXN0ZXIgKGludCByZWdubykKKyB9CisgCisgc3RhdGljIHZvaWQKKy1zMzkwX2NvbGxlY3RfcHRy YWNlX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8sIGNoYXIg KmJ1ZikKKytzMzkwX2NvbGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChpbnQgcmVnbm8sIGNoYXIgKmJ1 ZikKKyB7CisgICBpbnQgc2l6ZSA9IHJlZ2lzdGVyX3NpemUgKHJlZ25vKTsKKyAgIGlmIChzaXpl IDwgc2l6ZW9mIChsb25nKSkKK0BAIC0xMjMsOSArMTIzLDkgQEAgczM5MF9jb2xsZWN0X3B0cmFj ZV9yZWdpc3RlciAoc3RydWN0IHJlZworIAl9CisgICAgICAgZWxzZSBpZiAocmVnYWRkciA9PSBQ VF9QU1dBRERSCisgCSAgICAgICB8fCAocmVnYWRkciA+PSBQVF9HUFIwICYmIHJlZ2FkZHIgPD0g UFRfR1BSMTUpKQorLQljb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbm8sIGJ1ZiArIHNp emVvZiAobG9uZykgLSBzaXplKTsKKysJY29sbGVjdF9yZWdpc3RlciAocmVnbm8sIGJ1ZiArIHNp emVvZiAobG9uZykgLSBzaXplKTsKKyAgICAgICBlbHNlCistCWNvbGxlY3RfcmVnaXN0ZXIgKHJl Z2NhY2hlLCByZWdubywgYnVmKTsKKysJY29sbGVjdF9yZWdpc3RlciAocmVnbm8sIGJ1Zik7Cisg CisgICAgICAgLyogV2hlbiBkZWJ1Z2dpbmcgYSAzMi1iaXQgaW5mZXJpb3Igb24gYSA2NC1iaXQg aG9zdCwgbWFrZSBzdXJlCisgCSB0aGUgMzEtYml0IGFkZHJlc3NpbmcgbW9kZSBiaXQgaXMgc2V0 IGluIHRoZSBQU1cgbWFzay4gICovCitAQCAtMTM3LDcgKzEzNyw3IEBAIHMzOTBfY29sbGVjdF9w dHJhY2VfcmVnaXN0ZXIgKHN0cnVjdCByZWcKKyB9CisgCisgc3RhdGljIHZvaWQKKy1zMzkwX3N1 cHBseV9wdHJhY2VfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdu bywgY29uc3QgY2hhciAqYnVmKQorK3MzOTBfc3VwcGx5X3B0cmFjZV9yZWdpc3RlciAoaW50IHJl Z25vLCBjb25zdCBjaGFyICpidWYpCisgeworICAgaW50IHNpemUgPSByZWdpc3Rlcl9zaXplIChy ZWdubyk7CisgICBpZiAoc2l6ZSA8IHNpemVvZiAobG9uZykpCitAQCAtMTUyLDE4ICsxNTIsMTgg QEAgczM5MF9zdXBwbHlfcHRyYWNlX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnYworIAl9CisgICAgICAg ZWxzZSBpZiAocmVnYWRkciA9PSBQVF9QU1dBRERSCisgCSAgICAgICB8fCAocmVnYWRkciA+PSBQ VF9HUFIwICYmIHJlZ2FkZHIgPD0gUFRfR1BSMTUpKQorLQlzdXBwbHlfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCByZWdubywgYnVmICsgc2l6ZW9mIChsb25nKSAtIHNpemUpOworKwlzdXBwbHlfcmVnaXN0 ZXIgKHJlZ25vLCBidWYgKyBzaXplb2YgKGxvbmcpIC0gc2l6ZSk7CisgICAgICAgZWxzZQorLQlz dXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmKTsKKysJc3VwcGx5X3JlZ2lzdGVy IChyZWdubywgYnVmKTsKKyAgICAgfQorICAgZWxzZQorLSAgICBzdXBwbHlfcmVnaXN0ZXIgKHJl Z2NhY2hlLCByZWdubywgYnVmKTsKKysgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdubywgYnVmKTsK KyB9CisgCisgLyogUHJvdmlkZSBvbmx5IGEgZmlsbCBmdW5jdGlvbiBmb3IgdGhlIGdlbmVyYWwg cmVnaXN0ZXIgc2V0LiAgcHNfbGdldHJlZ3MKKyAgICB3aWxsIHVzZSB0aGlzIGZvciBOUFRMIHN1 cHBvcnQuICAqLworIAorLXN0YXRpYyB2b2lkIHMzOTBfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisrc3RhdGljIHZvaWQgczM5MF9maWxsX2dyZWdz ZXQgKHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaTsKKyAKK0BAIC0xNzMsNyArMTczLDcgQEAgc3Rh dGljIHZvaWQgczM5MF9maWxsX2dyZWdzZXQgKHN0cnVjdCByZQorIAkgIHx8IHRoZV9sb3dfdGFy Z2V0LnJlZ21hcFtpXSA+IFBUX0FDUjE1KQorIAljb250aW51ZTsKKyAKKy0gICAgICBzMzkwX2Nv bGxlY3RfcHRyYWNlX3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKGNoYXIgKikgYnVmCisrICAgICAg czM5MF9jb2xsZWN0X3B0cmFjZV9yZWdpc3RlciAoaSwgKGNoYXIgKikgYnVmCisgCQkJCSAgICAg ICArIHRoZV9sb3dfdGFyZ2V0LnJlZ21hcFtpXSk7CisgICAgIH0KKyB9CitAQCAtMTg4LDEyICsx ODgsMTIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgczM5MF9icmVha3BvaQorICNkZWZp bmUgczM5MF9icmVha3BvaW50X2xlbiAyCisgCisgc3RhdGljIENPUkVfQUREUgorLXMzOTBfZ2V0 X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQorK3MzOTBfZ2V0X3BjICgpCisgeworICAg aWYgKHJlZ2lzdGVyX3NpemUgKDApID09IDQpCisgICAgIHsKKyAgICAgICB1bnNpZ25lZCBpbnQg cGM7CistICAgICAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBzd2EiLCAm cGMpOworKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBzd2EiLCAmcGMpOworICNp Zm5kZWYgX19zMzkweF9fCisgICAgICAgcGMgJj0gMHg3ZmZmZmZmZjsKKyAjZW5kaWYKK0BAIC0y MDIsMTMgKzIwMiwxMyBAQCBzMzkwX2dldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkK KyAgIGVsc2UKKyAgICAgeworICAgICAgIHVuc2lnbmVkIGxvbmcgcGM7CistICAgICAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBzd2EiLCAmcGMpOworKyAgICAgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBzd2EiLCAmcGMpOworICAgICAgIHJldHVybiBwYzsKKyAg ICAgfQorIH0KKyAKKyBzdGF0aWMgdm9pZAorLXMzOTBfc2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBDT1JFX0FERFIgbmV3cGMpCisrczM5MF9zZXRfcGMgKENPUkVfQUREUiBuZXdw YykKKyB7CisgICBpZiAocmVnaXN0ZXJfc2l6ZSAoMCkgPT0gNCkKKyAgICAgeworQEAgLTIxNiwx MiArMjE2LDEyIEBAIHMzOTBfc2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCAKKyAj aWZuZGVmIF9fczM5MHhfXworICAgICAgIHBjIHw9IDB4ODAwMDAwMDA7CisgI2VuZGlmCistICAg ICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicHN3YSIsICZwYyk7CisrICAg ICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJwc3dhIiwgJnBjKTsKKyAgICAgfQorICAgZWxz ZQorICAgICB7CisgICAgICAgdW5zaWduZWQgbG9uZyBwYyA9IG5ld3BjOworLSAgICAgIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBzd2EiLCAmcGMpOworKyAgICAgIHN1cHBs eV9yZWdpc3Rlcl9ieV9uYW1lICgicHN3YSIsICZwYyk7CisgICAgIH0KKyB9CisgCitAQCAtMjY4 LDggKzI2OCw3IEBAIHMzOTBfYXJjaF9zZXR1cCAodm9pZCkKKyAjaWZkZWYgX19zMzkweF9fCisg ICB7CisgICAgIHVuc2lnbmVkIGludCBwc3dtOworLSAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7CistICAgIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwc3dtIiwgJnBzd20pOworKyAgICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwc3dtIiwgJnBzd20pOworICAgICBpZiAocHN3bSAm IDEpCisgICAgICAgaW5pdF9yZWdpc3RlcnNfczM5MHhfbGludXg2NCAoKTsKKyAKKy0tLSAuL2dk Yi9nZGJzZXJ2ZXIvbGludXgtc2gtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAg KzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtc2gtbG93LmMJMjAxMC0wMS0yMSAyMDoz MzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC01OSwxOCArNTksMTggQEAgc2hfY2Fubm90X2ZldGNo X3JlZ2lzdGVyIChpbnQgcmVnbm8pCisgfQorIAorIHN0YXRpYyBDT1JFX0FERFIKKy1zaF9nZXRf cGMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCisrc2hfZ2V0X3BjICgpCisgeworICAgdW5z aWduZWQgbG9uZyBwYzsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJw YyIsICZwYyk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJwYyIsICZwYyk7CisgICBy ZXR1cm4gcGM7CisgfQorIAorIHN0YXRpYyB2b2lkCistc2hfc2V0X3BjIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCisrc2hfc2V0X3BjIChDT1JFX0FERFIgcGMpCisg eworICAgdW5zaWduZWQgbG9uZyBuZXdwYyA9IHBjOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAicGMiLCAmbmV3cGMpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUg KCJwYyIsICZuZXdwYyk7CisgfQorIAorIC8qIENvcnJlY3QgaW4gZWl0aGVyIGVuZGlhbm5lc3Ms IG9idmlvdXNseS4gICovCitAQCAtOTQsMTMgKzk0LDEzIEBAIHNoX2JyZWFrcG9pbnRfYXQgKENP UkVfQUREUiB3aGVyZSkKKyAvKiBQcm92aWRlIG9ubHkgYSBmaWxsIGZ1bmN0aW9uIGZvciB0aGUg Z2VuZXJhbCByZWdpc3RlciBzZXQuICBwc19sZ2V0cmVncworICAgIHdpbGwgdXNlIHRoaXMgZm9y IE5QVEwgc3VwcG9ydC4gICovCisgCistc3RhdGljIHZvaWQgc2hfZmlsbF9ncmVnc2V0IChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisrc3RhdGljIHZvaWQgc2hfZmlsbF9n cmVnc2V0ICh2b2lkICpidWYpCisgeworICAgaW50IGk7CisgCisgICBmb3IgKGkgPSAwOyBpIDwg MjM7IGkrKykKKyAgICAgaWYgKHNoX3JlZ21hcFtpXSAhPSAtMSkKKy0gICAgICBjb2xsZWN0X3Jl Z2lzdGVyIChyZWdjYWNoZSwgaSwgKGNoYXIgKikgYnVmICsgc2hfcmVnbWFwW2ldKTsKKysgICAg ICBjb2xsZWN0X3JlZ2lzdGVyIChpLCAoY2hhciAqKSBidWYgKyBzaF9yZWdtYXBbaV0pOworIH0K KyAKKyBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNbXSA9IHsKKy0tLSAuL2dkYi9n ZGJzZXJ2ZXIvbGludXgtc3BhcmMtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAg KzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtc3BhcmMtbG93LmMJMjAxMC0wMS0yMSAy MDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMTMsNyArMTEzLDcgQEAgc3BhcmNfY2Fubm90 X2ZldGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8pCisgfQorIAorIHN0YXRpYyB2b2lkCistc3BhcmNf ZmlsbF9ncmVnc2V0X3RvX3N0YWNrIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2 b2lkICpidWYpCisrc3BhcmNfZmlsbF9ncmVnc2V0X3RvX3N0YWNrIChjb25zdCB2b2lkICpidWYp CisgeworICAgaW50IGk7CisgICBDT1JFX0FERFIgYWRkciA9IDA7CitAQCAtMTI4LDE0ICsxMjgs MTQgQEAgc3BhcmNfZmlsbF9ncmVnc2V0X3RvX3N0YWNrIChzdHJ1Y3QgcmVnYworIAorICAgZm9y IChpID0gbDBfcmVnbm87IGkgPD0gaTdfcmVnbm87IGkrKykKKyAgICAgeworLSAgICAgIGNvbGxl Y3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpLCB0bXBfcmVnX2J1Zik7CisrICAgICAgY29sbGVjdF9y ZWdpc3RlciAoaSwgdG1wX3JlZ19idWYpOworICAgICAgICgqdGhlX3RhcmdldC0+d3JpdGVfbWVt b3J5KSAoYWRkciwgdG1wX3JlZ19idWYsIHNpemVvZih0bXBfcmVnX2J1ZikpOworICAgICAgIGFk ZHIgKz0gc2l6ZW9mKHRtcF9yZWdfYnVmKTsKKyAgICAgfQorIH0KKyAKKyBzdGF0aWMgdm9pZAor LXNwYXJjX2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVm KQorK3NwYXJjX2ZpbGxfZ3JlZ3NldCAodm9pZCAqYnVmKQorIHsKKyAgIGludCBpOworICAgaW50 IHJhbmdlOworQEAgLTE0MywyNSArMTQzLDI1IEBAIHNwYXJjX2ZpbGxfZ3JlZ3NldCAoc3RydWN0 IHJlZ2NhY2hlICpyZWcKKyAgIGZvciAocmFuZ2UgPSAwOyByYW5nZSA8IE5fR1JFR1NfUkFOR0VT OyByYW5nZSsrKQorICAgICBmb3IgKGkgPSBncmVnc19yYW5nZXNbcmFuZ2VdLnJlZ25vX3N0YXJ0 OyBpIDw9IGdyZWdzX3Jhbmdlc1tyYW5nZV0ucmVnbm9fZW5kOyBpKyspCisgICAgICAgaWYgKHNw YXJjX3JlZ21hcFtpXSAhPSAtMSkKKy0JY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGksICgo Y2hhciAqKSBidWYpICsgc3BhcmNfcmVnbWFwW2ldKTsKKysJY29sbGVjdF9yZWdpc3RlciAoaSwg KChjaGFyICopIGJ1ZikgKyBzcGFyY19yZWdtYXBbaV0pOworIAorLSAgc3BhcmNfZmlsbF9ncmVn c2V0X3RvX3N0YWNrIChyZWdjYWNoZSwgYnVmKTsKKysgIHNwYXJjX2ZpbGxfZ3JlZ3NldF90b19z dGFjayAoYnVmKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy1zcGFyY19maWxsX2ZwcmVnc2V0IChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCisrc3BhcmNfZmlsbF9mcHJlZ3Nl dCAodm9pZCAqYnVmKQorIHsKKyAgIGludCBpOworICAgaW50IHJhbmdlOworIAorICAgZm9yIChy YW5nZSA9IDA7IHJhbmdlIDwgTl9GUFJFR1NfUkFOR0VTOyByYW5nZSsrKQorICAgICBmb3IgKGkg PSBmcHJlZ3NfcmFuZ2VzW3JhbmdlXS5yZWdub19zdGFydDsgaSA8PSBmcHJlZ3NfcmFuZ2VzW3Jh bmdlXS5yZWdub19lbmQ7IGkrKykKKy0gICAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwg aSwgKChjaGFyICopIGJ1ZikgKyBzcGFyY19yZWdtYXBbaV0pOworKyAgICAgIGNvbGxlY3RfcmVn aXN0ZXIgKGksICgoY2hhciAqKSBidWYpICsgc3BhcmNfcmVnbWFwW2ldKTsKKyAKKyB9CisgCisg c3RhdGljIHZvaWQKKy1zcGFyY19zdG9yZV9ncmVnc2V0X2Zyb21fc3RhY2sgKHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKKytzcGFyY19zdG9yZV9ncmVnc2V0X2Zy b21fc3RhY2sgKGNvbnN0IHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaTsKKyAgIENPUkVfQUREUiBh ZGRyID0gMDsKK0BAIC0xNzcsMTMgKzE3NywxMyBAQCBzcGFyY19zdG9yZV9ncmVnc2V0X2Zyb21f c3RhY2sgKHN0cnVjdCByCisgICBmb3IgKGkgPSBsMF9yZWdubzsgaSA8PSBpN19yZWdubzsgaSsr KQorICAgICB7CisgICAgICAgKCp0aGVfdGFyZ2V0LT5yZWFkX21lbW9yeSkgKGFkZHIsIHRtcF9y ZWdfYnVmLCBzaXplb2YodG1wX3JlZ19idWYpKTsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJl Z2NhY2hlLCBpLCB0bXBfcmVnX2J1Zik7CisrICAgICAgc3VwcGx5X3JlZ2lzdGVyIChpLCB0bXBf cmVnX2J1Zik7CisgICAgICAgYWRkciArPSBzaXplb2YodG1wX3JlZ19idWYpOworICAgICB9Cisg fQorIAorIHN0YXRpYyB2b2lkCistc3BhcmNfc3RvcmVfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK3NwYXJjX3N0b3JlX2dyZWdzZXQgKGNvbnN0 IHZvaWQgKmJ1ZikKKyB7CisgICBpbnQgaTsKKyAgIGNoYXIgemVyb2J1Zls4XTsKK0BAIC0xOTQs MzMgKzE5NCwzMSBAQCBzcGFyY19zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCisg ICBmb3IgKHJhbmdlID0gMDsgcmFuZ2UgPCBOX0dSRUdTX1JBTkdFUzsgcmFuZ2UrKykKKyAgICAg Zm9yIChpID0gZ3JlZ3NfcmFuZ2VzW3JhbmdlXS5yZWdub19zdGFydDsgaSA8PSBncmVnc19yYW5n ZXNbcmFuZ2VdLnJlZ25vX2VuZDsgaSsrKQorICAgICAgIGlmIChzcGFyY19yZWdtYXBbaV0gIT0g LTEpCistCXN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYpICsgc3Bh cmNfcmVnbWFwW2ldKTsKKysJc3VwcGx5X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHNw YXJjX3JlZ21hcFtpXSk7CisgICAgICAgZWxzZQorLQlzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hl LCBpLCB6ZXJvYnVmKTsKKysJc3VwcGx5X3JlZ2lzdGVyIChpLCB6ZXJvYnVmKTsKKyAKKy0gIHNw YXJjX3N0b3JlX2dyZWdzZXRfZnJvbV9zdGFjayAocmVnY2FjaGUsIGJ1Zik7CisrICBzcGFyY19z dG9yZV9ncmVnc2V0X2Zyb21fc3RhY2sgKGJ1Zik7CisgfQorIAorIHN0YXRpYyB2b2lkCistc3Bh cmNfc3RvcmVfZnByZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQg KmJ1ZikKKytzcGFyY19zdG9yZV9mcHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQorIHsKKyAgIGlu dCBpOworICAgaW50IHJhbmdlOworIAorICAgZm9yIChyYW5nZSA9IDA7IHJhbmdlIDwgTl9GUFJF R1NfUkFOR0VTOyByYW5nZSsrKQorLSAgICBmb3IgKGkgPSBmcHJlZ3NfcmFuZ2VzW3JhbmdlXS5y ZWdub19zdGFydDsKKy0JIGkgPD0gZnByZWdzX3Jhbmdlc1tyYW5nZV0ucmVnbm9fZW5kOworLQkg aSsrKQorLSAgICAgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYp ICsgc3BhcmNfcmVnbWFwW2ldKTsKKysgICAgZm9yIChpID0gZnByZWdzX3Jhbmdlc1tyYW5nZV0u cmVnbm9fc3RhcnQ7IGkgPD0gZnByZWdzX3Jhbmdlc1tyYW5nZV0ucmVnbm9fZW5kOyBpKyspCisr ICAgICAgc3VwcGx5X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHNwYXJjX3JlZ21hcFtp XSk7CisgfQorIAorIGV4dGVybiBpbnQgZGVidWdfdGhyZWFkczsKKyAKKyBzdGF0aWMgQ09SRV9B RERSCistc3BhcmNfZ2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQorK3NwYXJjX2dl dF9wYyAoKQorIHsKKy0gIHVuc2lnbmVkIGxvbmcgcGM7CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAmcGMpOworKyAgQ09SRV9BRERSIHBjOworKyAgY29sbGVj dF9yZWdpc3Rlcl9ieV9uYW1lICgicGMiLCAmcGMpOworICAgaWYgKGRlYnVnX3RocmVhZHMpCisg ICAgIGZwcmludGYgKHN0ZGVyciwgInN0b3AgcGMgaXMgJTA4bHhcbiIsIHBjKTsKKyAgIHJldHVy biBwYzsKK0BAIC0yNDksMTIgKzI0NywxMSBAQCBzcGFyY19icmVha3BvaW50X2F0IChDT1JFX0FE RFIgd2hlcmUpCisgICAgaXMgb3V0c2lkZSBvZiB0aGUgZnVuY3Rpb24uICBTbyByYXRoZXIgdGhh biBpbXBvcnRpbmcgc29mdHdhcmUgc2luZ2xlLXN0ZXAsCisgICAgd2UgY2FuIGp1c3QgcnVuIHVu dGlsIGV4aXQuICAqLworIHN0YXRpYyBDT1JFX0FERFIKKy1zcGFyY19yZWluc2VydF9hZGRyICh2 b2lkKQorK3NwYXJjX3JlaW5zZXJ0X2FkZHIgKCkKKyB7CistICBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7CisgICBD T1JFX0FERFIgbHI7CisgICAvKiBPNyBpcyB0aGUgZXF1aXZhbGVudCB0byB0aGUgJ2xyJyBvZiBv dGhlciBhcmNocy4gICovCistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAi bzciLCAmbHIpOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgibzciLCAmbHIpOworICAg cmV0dXJuIGxyOworIH0KKyAKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jCTIw MTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2xp bnV4LXg4Ni1sb3cuYwkyMDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAorQEAgLTE3 Myw3ICsxNzMsNyBAQCBpMzg2X2Nhbm5vdF9mZXRjaF9yZWdpc3RlciAoaW50IHJlZ25vKQorIH0K KyAKKyBzdGF0aWMgdm9pZAorLXg4Nl9maWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIHZvaWQgKmJ1ZikKKyt4ODZfZmlsbF9ncmVnc2V0ICh2b2lkICpidWYpCisgeworICAg aW50IGk7CisgCitAQCAtMTgyLDIwICsxODIsMTkgQEAgeDg2X2ZpbGxfZ3JlZ3NldCAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYQorICAgICB7CisgICAgICAgZm9yIChpID0gMDsgaSA8IFg4Nl82NF9O VU1fUkVHUzsgaSsrKQorIAlpZiAoeDg2XzY0X3JlZ21hcFtpXSAhPSAtMSkKKy0JICBjb2xsZWN0 X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyB4ODZfNjRfcmVnbWFwW2ld KTsKKysJICBjb2xsZWN0X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHg4Nl82NF9yZWdt YXBbaV0pOworICAgICAgIHJldHVybjsKKyAgICAgfQorICNlbmRpZgorIAorICAgZm9yIChpID0g MDsgaSA8IEkzODZfTlVNX1JFR1M7IGkrKykKKy0gICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2Fj aGUsIGksICgoY2hhciAqKSBidWYpICsgaTM4Nl9yZWdtYXBbaV0pOworKyAgICBjb2xsZWN0X3Jl Z2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIGkzODZfcmVnbWFwW2ldKTsKKyAKKy0gIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJvcmlnX2VheCIsCistCQkJICAgICgoY2hh ciAqKSBidWYpICsgT1JJR19FQVggKiA0KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAo Im9yaWdfZWF4IiwgKChjaGFyICopIGJ1ZikgKyBPUklHX0VBWCAqIDQpOworIH0KKyAKKyBzdGF0 aWMgdm9pZAorLXg4Nl9zdG9yZV9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBj b25zdCB2b2lkICpidWYpCisreDg2X3N0b3JlX2dyZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKKyB7 CisgICBpbnQgaTsKKyAKK0BAIC0yMDQsNTAgKzIwMyw0OSBAQCB4ODZfc3RvcmVfZ3JlZ3NldCAo c3RydWN0IHJlZ2NhY2hlICpyZWdjCisgICAgIHsKKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgWDg2 XzY0X05VTV9SRUdTOyBpKyspCisgCWlmICh4ODZfNjRfcmVnbWFwW2ldICE9IC0xKQorLQkgIHN1 cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIGksICgoY2hhciAqKSBidWYpICsgeDg2XzY0X3JlZ21h cFtpXSk7CisrCSAgc3VwcGx5X3JlZ2lzdGVyIChpLCAoKGNoYXIgKikgYnVmKSArIHg4Nl82NF9y ZWdtYXBbaV0pOworICAgICAgIHJldHVybjsKKyAgICAgfQorICNlbmRpZgorIAorICAgZm9yIChp ID0gMDsgaSA8IEkzODZfTlVNX1JFR1M7IGkrKykKKy0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdj YWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBpMzg2X3JlZ21hcFtpXSk7CisrICAgIHN1cHBseV9y ZWdpc3RlciAoaSwgKChjaGFyICopIGJ1ZikgKyBpMzg2X3JlZ21hcFtpXSk7CisgCistICBzdXBw bHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJvcmlnX2VheCIsCistCQkJICAgKChjaGFy ICopIGJ1ZikgKyBPUklHX0VBWCAqIDQpOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJv cmlnX2VheCIsICgoY2hhciAqKSBidWYpICsgT1JJR19FQVggKiA0KTsKKyB9CisgCisgc3RhdGlj IHZvaWQKKy14ODZfZmlsbF9mcHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9p ZCAqYnVmKQorK3g4Nl9maWxsX2ZwcmVnc2V0ICh2b2lkICpidWYpCisgeworICNpZmRlZiBfX3g4 Nl82NF9fCistICBpMzg3X2NhY2hlX3RvX2Z4c2F2ZSAocmVnY2FjaGUsIGJ1Zik7CisrICBpMzg3 X2NhY2hlX3RvX2Z4c2F2ZSAoYnVmKTsKKyAjZWxzZQorLSAgaTM4N19jYWNoZV90b19mc2F2ZSAo cmVnY2FjaGUsIGJ1Zik7CisrICBpMzg3X2NhY2hlX3RvX2ZzYXZlIChidWYpOworICNlbmRpZgor IH0KKyAKKyBzdGF0aWMgdm9pZAorLXg4Nl9zdG9yZV9mcHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK3g4Nl9zdG9yZV9mcHJlZ3NldCAoY29uc3Qg dm9pZCAqYnVmKQorIHsKKyAjaWZkZWYgX194ODZfNjRfXworLSAgaTM4N19meHNhdmVfdG9fY2Fj aGUgKHJlZ2NhY2hlLCBidWYpOworKyAgaTM4N19meHNhdmVfdG9fY2FjaGUgKGJ1Zik7CisgI2Vs c2UKKy0gIGkzODdfZnNhdmVfdG9fY2FjaGUgKHJlZ2NhY2hlLCBidWYpOworKyAgaTM4N19mc2F2 ZV90b19jYWNoZSAoYnVmKTsKKyAjZW5kaWYKKyB9CisgCisgI2lmbmRlZiBfX3g4Nl82NF9fCisg Cisgc3RhdGljIHZvaWQKKy14ODZfZmlsbF9mcHhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIHZvaWQgKmJ1ZikKKyt4ODZfZmlsbF9mcHhyZWdzZXQgKHZvaWQgKmJ1ZikKKyB7Cist ICBpMzg3X2NhY2hlX3RvX2Z4c2F2ZSAocmVnY2FjaGUsIGJ1Zik7CisrICBpMzg3X2NhY2hlX3Rv X2Z4c2F2ZSAoYnVmKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy14ODZfc3RvcmVfZnB4cmVnc2V0 IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCisreDg2X3N0b3Jl X2ZweHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQorIHsKKy0gIGkzODdfZnhzYXZlX3RvX2NhY2hl IChyZWdjYWNoZSwgYnVmKTsKKysgIGkzODdfZnhzYXZlX3RvX2NhY2hlIChidWYpOworIH0KKyAK KyAjZW5kaWYKK0BAIC0yODIsMzggKzI4MCwzOCBAQCBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0 X3JlZ3NldHNbXSA9CisgfTsKKyAKKyBzdGF0aWMgQ09SRV9BRERSCisteDg2X2dldF9wYyAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKKyt4ODZfZ2V0X3BjICh2b2lkKQorIHsKKyAgIGludCB1 c2VfNjRiaXQgPSByZWdpc3Rlcl9zaXplICgwKSA9PSA4OworIAorICAgaWYgKHVzZV82NGJpdCkK KyAgICAgeworICAgICAgIHVuc2lnbmVkIGxvbmcgcGM7CistICAgICAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgInJpcCIsICZwYyk7CisrICAgICAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lICgicmlwIiwgJnBjKTsKKyAgICAgICByZXR1cm4gKENPUkVfQUREUikgcGM7Cisg ICAgIH0KKyAgIGVsc2UKKyAgICAgeworICAgICAgIHVuc2lnbmVkIGludCBwYzsKKy0gICAgICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZWlwIiwgJnBjKTsKKysgICAgICBj b2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJlaXAiLCAmcGMpOworICAgICAgIHJldHVybiAoQ09S RV9BRERSKSBwYzsKKyAgICAgfQorIH0KKyAKKyBzdGF0aWMgdm9pZAorLXg4Nl9zZXRfcGMgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKKyt4ODZfc2V0X3BjIChDT1JF X0FERFIgcGMpCisgeworICAgaW50IHVzZV82NGJpdCA9IHJlZ2lzdGVyX3NpemUgKDApID09IDg7 CisgCisgICBpZiAodXNlXzY0Yml0KQorICAgICB7CisgICAgICAgdW5zaWduZWQgbG9uZyBuZXdw YyA9IHBjOworLSAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInJpcCIs ICZuZXdwYyk7CisrICAgICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJyaXAiLCAmbmV3cGMp OworICAgICB9CisgICBlbHNlCisgICAgIHsKKyAgICAgICB1bnNpZ25lZCBpbnQgbmV3cGMgPSBw YzsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJlaXAiLCAmbmV3 cGMpOworKyAgICAgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgiZWlwIiwgJm5ld3BjKTsKKyAg ICAgfQorIH0KKyAMCistLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXh0ZW5zYS1sb3cuYwkyMDEw LTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9saW51 eC14dGVuc2EtbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0z Nyw3ICszNyw3IEBAIGVudW0gcmVnbnVtIHsKKyB9OworIAorIHN0YXRpYyB2b2lkCisteHRlbnNh X2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQorK3h0 ZW5zYV9maWxsX2dyZWdzZXQgKHZvaWQgKmJ1ZikKKyB7CisgICBlbGZfZ3JlZ190KiByc2V0ID0g KGVsZl9ncmVnX3QqKWJ1ZjsKKyAgIGludCBhcjBfcmVnbnVtOworQEAgLTUxLDI3ICs1MSwyNyBA QCB4dGVuc2FfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCisgCisgICBmb3IgKGkg PSBhcjBfcmVnbnVtOyBpIDwgYXIwX3JlZ251bSArIFhDSEFMX05VTV9BUkVHUzsgaSsrKQorICAg ICB7CistICAgICAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGksIHB0cik7CisrICAgICAg Y29sbGVjdF9yZWdpc3RlciAoaSwgcHRyKTsKKyAgICAgICBwdHIgKz0gcmVnaXN0ZXJfc2l6ZShp KTsKKyAgICAgfQorIAorICAgLyogTG9vcCByZWdpc3RlcnMsIGlmIGhhcmR3YXJlIGhhcyBpdC4g ICovCisgCisgI2lmIFhDSEFMX0hBVkVfTE9PUAorLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l IChyZWdjYWNoZSwgImxiZWciLCAoY2hhciopJnJzZXRbUl9MQkVHXSk7CistICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAibGVuZCIsIChjaGFyKikmcnNldFtSX0xFTkRdKTsK Ky0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJsY291bnQiLCAoY2hhciop JnJzZXRbUl9MQ09VTlRdKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoImxiZWciLCAo Y2hhciopJnJzZXRbUl9MQkVHXSk7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJsZW5k IiwgKGNoYXIqKSZyc2V0W1JfTEVORF0pOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgi bGNvdW50IiwgKGNoYXIqKSZyc2V0W1JfTENPVU5UXSk7CisgI2VuZGlmCisgCistICBjb2xsZWN0 X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAic2FyIiwgKGNoYXIqKSZyc2V0W1JfU0FSXSk7 CistICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAicGMiLCAoY2hhciopJnJz ZXRbUl9QQ10pOworLSAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgInBzIiwg KGNoYXIqKSZyc2V0W1JfUFNdKTsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsICJ3aW5kb3diYXNlIiwgKGNoYXIqKSZyc2V0W1JfV0JdKTsKKy0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJ3aW5kb3dzdGFydCIsIChjaGFyKikmcnNldFtSX1dTXSk7 CisrICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKCJzYXIiLCAoY2hhciopJnJzZXRbUl9TQVJd KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgKGNoYXIqKSZyc2V0W1JfUENd KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoInBzIiwgKGNoYXIqKSZyc2V0W1JfUFNd KTsKKysgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoIndpbmRvd2Jhc2UiLCAoY2hhciopJnJz ZXRbUl9XQl0pOworKyAgY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1lICgid2luZG93c3RhcnQiLCAo Y2hhciopJnJzZXRbUl9XU10pOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLXh0ZW5zYV9zdG9yZV9n cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCisreHRl bnNhX3N0b3JlX2dyZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKKyB7CisgICBjb25zdCBlbGZfZ3Jl Z190KiByc2V0ID0gKGNvbnN0IGVsZl9ncmVnX3QqKWJ1ZjsKKyAgIGludCBhcjBfcmVnbnVtOwor QEAgLTg1LDQ3ICs4NSw0NyBAQCB4dGVuc2Ffc3RvcmVfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyCisgCisgICBmb3IgKGkgPSBhcjBfcmVnbnVtOyBpIDwgYXIwX3JlZ251bSArIFhDSEFMX05V TV9BUkVHUzsgaSsrKQorICAgICB7CistICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwg aSwgcHRyKTsKKysgICAgICBzdXBwbHlfcmVnaXN0ZXIgKGksIHB0cik7CisgICAgICAgcHRyICs9 IHJlZ2lzdGVyX3NpemUoaSk7CisgICAgIH0KKyAKKyAgIC8qIExvb3AgcmVnaXN0ZXJzLCBpZiBo YXJkd2FyZSBoYXMgaXQuICAqLworIAorICNpZiBYQ0hBTF9IQVZFX0xPT1AKKy0gIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImxiZWciLCAoY2hhciopJnJzZXRbUl9MQkVHXSk7 CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJsZW5kIiwgKGNoYXIqKSZy c2V0W1JfTEVORF0pOworLSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAibGNv dW50IiwgKGNoYXIqKSZyc2V0W1JfTENPVU5UXSk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFt ZSAoImxiZWciLCAoY2hhciopJnJzZXRbUl9MQkVHXSk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlf bmFtZSAoImxlbmQiLCAoY2hhciopJnJzZXRbUl9MRU5EXSk7CisrICBzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAoImxjb3VudCIsIChjaGFyKikmcnNldFtSX0xDT1VOVF0pOworICNlbmRpZgorIAor LSAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAic2FyIiwgKGNoYXIqKSZyc2V0 W1JfU0FSXSk7CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsIChj aGFyKikmcnNldFtSX1BDXSk7CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUs ICJwcyIsIChjaGFyKikmcnNldFtSX1BTXSk7CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAo cmVnY2FjaGUsICJ3aW5kb3diYXNlIiwgKGNoYXIqKSZyc2V0W1JfV0JdKTsKKy0gIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgIndpbmRvd3N0YXJ0IiwgKGNoYXIqKSZyc2V0W1Jf V1NdKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgic2FyIiwgKGNoYXIqKSZyc2V0W1Jf U0FSXSk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgKGNoYXIqKSZyc2V0W1Jf UENdKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgicHMiLCAoY2hhciopJnJzZXRbUl9Q U10pOworKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKCJ3aW5kb3diYXNlIiwgKGNoYXIqKSZy c2V0W1JfV0JdKTsKKysgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lICgid2luZG93c3RhcnQiLCAo Y2hhciopJnJzZXRbUl9XU10pOworIH0KKyAKKyAvKiBYdGVuc2EgR05VL0xpbnV4IFBUUkFDRSBp bnRlcmZhY2UgaW5jbHVkZXMgZXh0ZW5kZWQgcmVnaXN0ZXIgc2V0LiAgKi8KKyAKKyBzdGF0aWMg dm9pZAorLXh0ZW5zYV9maWxsX3h0cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2 b2lkICpidWYpCisreHRlbnNhX2ZpbGxfeHRyZWdzZXQgKHZvaWQgKmJ1ZikKKyB7CisgICBjb25z dCB4dGVuc2FfcmVndGFibGVfdCAqcHRyOworIAorICAgZm9yIChwdHIgPSB4dGVuc2FfcmVnbWFw X3RhYmxlOyBwdHItPm5hbWU7IHB0cisrKQorICAgICB7CistICAgICAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgcHRyLT5uYW1lLAorKyAgICAgIGNvbGxlY3RfcmVnaXN0ZXJf YnlfbmFtZSAocHRyLT5uYW1lLAorIAkJCQkoY2hhciopYnVmICsgcHRyLT5wdHJhY2Vfb2Zmc2V0 KTsKKyAgICAgfQorIH0KKyAKKyBzdGF0aWMgdm9pZAorLXh0ZW5zYV9zdG9yZV94dHJlZ3NldCAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKQorK3h0ZW5zYV9zdG9y ZV94dHJlZ3NldCAoY29uc3Qgdm9pZCAqYnVmKQorIHsKKyAgIGNvbnN0IHh0ZW5zYV9yZWd0YWJs ZV90ICpwdHI7CisgCisgICBmb3IgKHB0ciA9IHh0ZW5zYV9yZWdtYXBfdGFibGU7IHB0ci0+bmFt ZTsgcHRyKyspCisgICAgIHsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2Fj aGUsIHB0ci0+bmFtZSwKKysgICAgICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocHRyLT5uYW1l LAorIAkJCQkoY2hhciopYnVmICsgcHRyLT5wdHJhY2Vfb2Zmc2V0KTsKKyAgICAgfQorIH0KK0BA IC0xNTAsMTkgKzE1MCwxOSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB4dGVuc2FfYnJl YWtwCisgI2RlZmluZSB4dGVuc2FfYnJlYWtwb2ludF9sZW4gMgorIAorIHN0YXRpYyBDT1JFX0FE RFIKKy14dGVuc2FfZ2V0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQorK3h0ZW5zYV9n ZXRfcGMgKHZvaWQpCisgeworICAgdW5zaWduZWQgbG9uZyBwYzsKKyAKKy0gIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZwYyk7CisrICBjb2xsZWN0X3JlZ2lzdGVy X2J5X25hbWUgKCJwYyIsICZwYyk7CisgICByZXR1cm4gcGM7CisgfQorIAorIHN0YXRpYyB2b2lk CisteHRlbnNhX3NldF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBj KQorK3h0ZW5zYV9zZXRfcGMgKENPUkVfQUREUiBwYykKKyB7CisgICB1bnNpZ25lZCBsb25nIG5l d3BjID0gcGM7CistICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJwYyIsICZu ZXdwYyk7CisrICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAoInBjIiwgJm5ld3BjKTsKKyB9Cisg Cisgc3RhdGljIGludAorLS0tIC4vZ2RiL2dkYnNlcnZlci9udG8tbG93LmMJMjAxMC0wMS0yMCAy Mzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvbnRvLWxvdy5jCTIw MTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtNjAxLDcgKzYwMSw3IEBAIG50 b193YWl0IChwdGlkX3QgcHRpZCwKKyAgICBJZiBSRUdOTyBpcyAtMSwgZmV0Y2ggYWxsIHJlZ2lz dGVycywgb3IgUkVHTk8gcmVnaXN0ZXIgb25seSBvdGhlcndpc2UuICAqLworIAorIHN0YXRpYyB2 b2lkCistbnRvX2ZldGNoX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50 IHJlZ25vKQorK250b19mZXRjaF9yZWdpc3RlcnMgKGludCByZWdubykKKyB7CisgICBpbnQgcmVn c2l6ZTsKKyAgIHByb2Nmc19ncmVnIGdyZWc7CitAQCAtNjI5LDcgKzYyOSw3IEBAIG50b19mZXRj aF9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmUKKyAJICAgIHsKKyAJICAgICAgY29uc3Qg dW5zaWduZWQgaW50IHJlZ2lzdGVyb2Zmc2V0CisgCQk9IHRoZV9sb3dfdGFyZ2V0LnJlZ2lzdGVy X29mZnNldCAocmVnbm8pOworLQkgICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdu bywgKChjaGFyICopJmdyZWcpICsgcmVnaXN0ZXJvZmZzZXQpOworKwkgICAgICBzdXBwbHlfcmVn aXN0ZXIgKHJlZ25vLCAoKGNoYXIgKikmZ3JlZykgKyByZWdpc3Rlcm9mZnNldCk7CisgCSAgICB9 CisgCX0KKyAgICAgICBlbHNlCitAQCAtNjM4LDcgKzYzOCw3IEBAIG50b19mZXRjaF9yZWdpc3Rl cnMgKHN0cnVjdCByZWdjYWNoZSAqcmUKKyAJICAgID0gdGhlX2xvd190YXJnZXQucmVnaXN0ZXJf b2Zmc2V0IChyZWdubyk7CisgCSAgaWYgKHJlZ2lzdGVyb2Zmc2V0ID09IC0xKQorIAkgICAgcmV0 dXJuOworLQkgIHN1cHBseV9yZWdpc3RlciAocmVnY2FjaGUsIHJlZ25vLCAoKGNoYXIgKikmZ3Jl ZykgKyByZWdpc3Rlcm9mZnNldCk7CisrCSAgc3VwcGx5X3JlZ2lzdGVyIChyZWdubywgKChjaGFy ICopJmdyZWcpICsgcmVnaXN0ZXJvZmZzZXQpOworIAl9CisgICAgIH0KKyAgIGVsc2UKK0BAIC02 NDksNyArNjQ5LDcgQEAgbnRvX2ZldGNoX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZQor ICAgIFdlIGFsd2F5cyBzdG9yZSBhbGwgcmVnaXN0ZXJzLCByZWdhcmRsZXNzIG9mIFJFR05PLiAg Ki8KKyAKKyBzdGF0aWMgdm9pZAorLW50b19zdG9yZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGludCByZWdubykKKytudG9fc3RvcmVfcmVnaXN0ZXJzIChpbnQgcmVnbm8p CisgeworICAgcHJvY2ZzX2dyZWcgZ3JlZzsKKyAgIGludCBlcnI7CitAQCAtNjcxLDcgKzY3MSw3 IEBAIG50b19zdG9yZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmUKKyAgICAgeworICAg ICAgIGNvbnN0IHVuc2lnbmVkIGludCByZWdvZmZzZXQKKyAJPSB0aGVfbG93X3RhcmdldC5yZWdp c3Rlcl9vZmZzZXQgKHJlZ25vKTsKKy0gICAgICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwg cmVnbm8sICgoY2hhciAqKSZncmVnKSArIHJlZ29mZnNldCk7CisrICAgICAgY29sbGVjdF9yZWdp c3RlciAocmVnbm8sICgoY2hhciAqKSZncmVnKSArIHJlZ29mZnNldCk7CisgICAgIH0KKyAgIGVy ciA9IGRldmN0bCAobnRvX2luZmVyaW9yLmN0bF9mZCwgRENNRF9QUk9DX1NFVEdSRUcsICZncmVn LCBzaXplb2YgKGdyZWcpLAorIAkJMCk7CistLS0gLi9nZGIvZ2Ric2VydmVyL3Byb2Mtc2Vydmlj ZS5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2Vy dmVyL3Byb2Mtc2VydmljZS5jCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitA QCAtMTAxLDcgKzEwMSw2IEBAIHBzX2xnZXRyZWdzIChnZGJfcHNfcHJvY2hhbmRsZV90IHBoLCBs d3AKKyAjaWZkZWYgSEFWRV9SRUdTRVRTCisgICBzdHJ1Y3QgbHdwX2luZm8gKmx3cDsKKyAgIHN0 cnVjdCB0aHJlYWRfaW5mbyAqcmVnX2luZmVyaW9yLCAqc2F2ZV9pbmZlcmlvcjsKKy0gIHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGU7CisgCisgICBsd3AgPSBmaW5kX2x3cF9waWQgKHBpZF90b19w dGlkIChsd3BpZCkpOworICAgaWYgKGx3cCA9PSBOVUxMKQorQEAgLTExMCw5ICsxMDksOSBAQCBw c19sZ2V0cmVncyAoZ2RiX3BzX3Byb2NoYW5kbGVfdCBwaCwgbHdwCisgICByZWdfaW5mZXJpb3Ig PSBnZXRfbHdwX3RocmVhZCAobHdwKTsKKyAgIHNhdmVfaW5mZXJpb3IgPSBjdXJyZW50X2luZmVy aW9yOworICAgY3VycmVudF9pbmZlcmlvciA9IHJlZ19pbmZlcmlvcjsKKy0gIHJlZ2NhY2hlID0g Z2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSk7CistICB0aGVfdGFyZ2V0 LT5mZXRjaF9yZWdpc3RlcnMgKHJlZ2NhY2hlLCAtMSk7CistICBncmVnc2V0X2luZm8gKCktPmZp bGxfZnVuY3Rpb24gKHJlZ2NhY2hlLCBncmVnc2V0KTsKKysKKysgIHRoZV90YXJnZXQtPmZldGNo X3JlZ2lzdGVycyAoLTEpOworKyAgZ3JlZ3NldF9pbmZvICgpLT5maWxsX2Z1bmN0aW9uIChncmVn c2V0KTsKKyAKKyAgIGN1cnJlbnRfaW5mZXJpb3IgPSBzYXZlX2luZmVyaW9yOworICAgcmV0dXJu IFBTX09LOworLS0tIC4vZ2RiL2dkYnNlcnZlci9yZWdjYWNoZS5jCTIwMTAtMDEtMjAgMjM6NTU6 MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL3JlZ2NhY2hlLmMJMjAxMC0w MS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMyw2ICsyMywxNiBAQAorICNpbmNs dWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCisrLyogVGhlIHByaXZhdGUg ZGF0YSBmb3IgdGhlIHJlZ2lzdGVyIGNhY2hlLiAgTm90ZSB0aGF0IHdlIGhhdmUgb25lCisrICAg cGVyIGluZmVyaW9yOyB0aGlzIGlzIHByaW1hcmlseSBmb3Igc2ltcGxpY2l0eSwgYXMgdGhlIHBl cmZvcm1hbmNlCisrICAgYmVuZWZpdCBpcyBtaW5pbWFsLiAgKi8KKysKKytzdHJ1Y3QgaW5mZXJp b3JfcmVnY2FjaGVfZGF0YQorK3sKKysgIGludCByZWdpc3RlcnNfdmFsaWQ7CisrICB1bnNpZ25l ZCBjaGFyICpyZWdpc3RlcnM7CisrfTsKKysKKyBzdGF0aWMgaW50IHJlZ2lzdGVyX2J5dGVzOwor IAorIHN0YXRpYyBzdHJ1Y3QgcmVnICpyZWdfZGVmczsKK0BAIC0zMCwyMyArNDAsMjAgQEAgc3Rh dGljIGludCBudW1fcmVnaXN0ZXJzOworIAorIGNvbnN0IGNoYXIgKipnZGJzZXJ2ZXJfZXhwZWRp dGVfcmVnczsKKyAKKy1zdHJ1Y3QgcmVnY2FjaGUgKgorLWdldF90aHJlYWRfcmVnY2FjaGUgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkLCBpbnQgZmV0Y2gpCisrc3RhdGljIHN0cnVjdCBpbmZl cmlvcl9yZWdjYWNoZV9kYXRhICoKKytnZXRfcmVnY2FjaGUgKHN0cnVjdCB0aHJlYWRfaW5mbyAq aW5mLCBpbnQgZmV0Y2gpCisgeworLSAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKKysgIHN0 cnVjdCBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhICpyZWdjYWNoZTsKKyAKKy0gIHJlZ2NhY2hlID0g KHN0cnVjdCByZWdjYWNoZSAqKSBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhICh0aHJlYWQpOworKyAg cmVnY2FjaGUgPSAoc3RydWN0IGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKikgaW5mZXJpb3JfcmVn Y2FjaGVfZGF0YSAoaW5mKTsKKyAKKyAgIGlmIChyZWdjYWNoZSA9PSBOVUxMKQorICAgICBmYXRh bCAoIm5vIHJlZ2lzdGVyIGNhY2hlIik7CisgCisrICAvKiBGSVhNRSAtIGZldGNoIHJlZ2lzdGVy cyBmb3IgSU5GICovCisgICBpZiAoZmV0Y2ggJiYgcmVnY2FjaGUtPnJlZ2lzdGVyc192YWxpZCA9 PSAwKQorICAgICB7CistICAgICAgc3RydWN0IHRocmVhZF9pbmZvICpzYXZlZF9pbmZlcmlvciA9 IGN1cnJlbnRfaW5mZXJpb3I7CistCistICAgICAgY3VycmVudF9pbmZlcmlvciA9IHRocmVhZDsK Ky0gICAgICBmZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2NhY2hlLCAtMSk7CistICAgICAg Y3VycmVudF9pbmZlcmlvciA9IHNhdmVkX2luZmVyaW9yOworKyAgICAgIGZldGNoX2luZmVyaW9y X3JlZ2lzdGVycyAoLTEpOworICAgICAgIHJlZ2NhY2hlLT5yZWdpc3RlcnNfdmFsaWQgPSAxOwor ICAgICB9CisgCitAQCAtNTcsMTYgKzY0LDE2IEBAIHZvaWQKKyByZWdjYWNoZV9pbnZhbGlkYXRl X29uZSAoc3RydWN0IGluZmVyaW9yX2xpc3RfZW50cnkgKmVudHJ5KQorIHsKKyAgIHN0cnVjdCB0 aHJlYWRfaW5mbyAqdGhyZWFkID0gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSBlbnRyeTsKKy0gIHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7CisrICBzdHJ1Y3QgaW5mZXJpb3JfcmVnY2FjaGVfZGF0 YSAqcmVnY2FjaGU7CisgCistICByZWdjYWNoZSA9IChzdHJ1Y3QgcmVnY2FjaGUgKikgaW5mZXJp b3JfcmVnY2FjaGVfZGF0YSAodGhyZWFkKTsKKysgIHJlZ2NhY2hlID0gKHN0cnVjdCBpbmZlcmlv cl9yZWdjYWNoZV9kYXRhICopIGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKHRocmVhZCk7CisgCisg ICBpZiAocmVnY2FjaGUtPnJlZ2lzdGVyc192YWxpZCkKKyAgICAgeworICAgICAgIHN0cnVjdCB0 aHJlYWRfaW5mbyAqc2F2ZWRfaW5mZXJpb3IgPSBjdXJyZW50X2luZmVyaW9yOworIAorICAgICAg IGN1cnJlbnRfaW5mZXJpb3IgPSB0aHJlYWQ7CistICAgICAgc3RvcmVfaW5mZXJpb3JfcmVnaXN0 ZXJzIChyZWdjYWNoZSwgLTEpOworKyAgICAgIHN0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoLTEp OworICAgICAgIGN1cnJlbnRfaW5mZXJpb3IgPSBzYXZlZF9pbmZlcmlvcjsKKyAgICAgfQorIAor QEAgLTc0LDI1ICs4MSwyNCBAQCByZWdjYWNoZV9pbnZhbGlkYXRlX29uZSAoc3RydWN0IGluZmVy aW9yCisgfQorIAorIHZvaWQKKy1yZWdjYWNoZV9pbnZhbGlkYXRlICh2b2lkKQorK3JlZ2NhY2hl X2ludmFsaWRhdGUgKCkKKyB7CisgICBmb3JfZWFjaF9pbmZlcmlvciAoJmFsbF90aHJlYWRzLCBy ZWdjYWNoZV9pbnZhbGlkYXRlX29uZSk7CisgfQorIAorLXN0cnVjdCByZWdjYWNoZSAqCisrdm9p ZCAqCisgbmV3X3JlZ2lzdGVyX2NhY2hlICh2b2lkKQorIHsKKy0gIHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGU7CisrICBzdHJ1Y3QgaW5mZXJpb3JfcmVnY2FjaGVfZGF0YSAqcmVnY2FjaGU7Cisg CisgICBpZiAocmVnaXN0ZXJfYnl0ZXMgPT0gMCkKKyAgICAgcmV0dXJuIE5VTEw7IC8qIFRoZSBh cmNoaXRlY3R1cmUgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LiAgKi8KKyAKKyAgIHJlZ2Nh Y2hlID0geG1hbGxvYyAoc2l6ZW9mICgqcmVnY2FjaGUpKTsKKyAKKy0gIC8qIE1ha2Ugc3VyZSB0 byB6ZXJvLWluaXRpYWxpemUgdGhlIHJlZ2lzdGVyIGNhY2hlIHdoZW4gaXQgaXMKKy0gICAgIGNy ZWF0ZWQsIGluIGNhc2UgdGhlcmUgYXJlIHJlZ2lzdGVycyB0aGUgdGFyZ2V0IG5ldmVyCistICAg ICBmZXRjaGVzLiAgVGhpcyB3YXkgdGhleSdsbCByZWFkIGFzIHplcm8gaW5zdGVhZCBvZgorLSAg ICAgZ2FyYmFnZS4gICovCisrICAvKiBNYWtlIHN1cmUgdG8gemVyby1pbml0aWFsaXplIHRoZSBy ZWdpc3RlciBjYWNoZSB3aGVuIGl0IGlzIGNyZWF0ZWQsCisrICAgICBpbiBjYXNlIHRoZXJlIGFy ZSByZWdpc3RlcnMgdGhlIHRhcmdldCBuZXZlciBmZXRjaGVzLiAgVGhpcyB3YXkgdGhleSdsbAor KyAgICAgcmVhZCBhcyB6ZXJvIGluc3RlYWQgb2YgZ2FyYmFnZS4gICovCisgICByZWdjYWNoZS0+ cmVnaXN0ZXJzID0geGNhbGxvYyAoMSwgcmVnaXN0ZXJfYnl0ZXMpOworIAorICAgcmVnY2FjaGUt PnJlZ2lzdGVyc192YWxpZCA9IDA7CitAQCAtMTAxLDggKzEwNywxMSBAQCBuZXdfcmVnaXN0ZXJf Y2FjaGUgKHZvaWQpCisgfQorIAorIHZvaWQKKy1mcmVlX3JlZ2lzdGVyX2NhY2hlIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlKQorK2ZyZWVfcmVnaXN0ZXJfY2FjaGUgKHZvaWQgKnJlZ2NhY2hl X3ApCisgeworKyAgc3RydWN0IGluZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKnJlZ2NhY2hlCisrICAg ID0gKHN0cnVjdCBpbmZlcmlvcl9yZWdjYWNoZV9kYXRhICopIHJlZ2NhY2hlX3A7CisrCisgICBp ZiAocmVnY2FjaGUpCisgICAgIHsKKyAgICAgICBmcmVlIChyZWdjYWNoZS0+cmVnaXN0ZXJzKTsK K0BAIC0xMTQsMTAgKzEyMyw4IEBAIHN0YXRpYyB2b2lkCisgcmVhbGxvY19yZWdpc3Rlcl9jYWNo ZSAoc3RydWN0IGluZmVyaW9yX2xpc3RfZW50cnkgKnRocmVhZF9wKQorIHsKKyAgIHN0cnVjdCB0 aHJlYWRfaW5mbyAqdGhyZWFkID0gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSB0aHJlYWRfcDsKKy0g IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUKKy0gICAgPSAoc3RydWN0IHJlZ2NhY2hlICopIGlu ZmVyaW9yX3JlZ2NhY2hlX2RhdGEgKHRocmVhZCk7CisgCistICBmcmVlX3JlZ2lzdGVyX2NhY2hl IChyZWdjYWNoZSk7CisrICBmcmVlX3JlZ2lzdGVyX2NhY2hlIChpbmZlcmlvcl9yZWdjYWNoZV9k YXRhICh0aHJlYWQpKTsKKyAgIHNldF9pbmZlcmlvcl9yZWdjYWNoZV9kYXRhICh0aHJlYWQsIG5l d19yZWdpc3Rlcl9jYWNoZSAoKSk7CisgfQorIAorQEAgLTE0NywxOCArMTU0LDE4IEBAIHNldF9y ZWdpc3Rlcl9jYWNoZSAoc3RydWN0IHJlZyAqcmVncywgaW4KKyB9CisgCisgdm9pZAorLXJlZ2lz dGVyc190b19zdHJpbmcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNoYXIgKmJ1ZikKKyty ZWdpc3RlcnNfdG9fc3RyaW5nIChjaGFyICpidWYpCisgeworLSAgdW5zaWduZWQgY2hhciAqcmVn aXN0ZXJzID0gcmVnY2FjaGUtPnJlZ2lzdGVyczsKKysgIHVuc2lnbmVkIGNoYXIgKnJlZ2lzdGVy cyA9IGdldF9yZWdjYWNoZSAoY3VycmVudF9pbmZlcmlvciwgMSktPnJlZ2lzdGVyczsKKyAKKyAg IGNvbnZlcnRfaW50X3RvX2FzY2lpIChyZWdpc3RlcnMsIGJ1ZiwgcmVnaXN0ZXJfYnl0ZXMpOwor IH0KKyAKKyB2b2lkCistcmVnaXN0ZXJzX2Zyb21fc3RyaW5nIChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBjaGFyICpidWYpCisrcmVnaXN0ZXJzX2Zyb21fc3RyaW5nIChjaGFyICpidWYpCisg eworICAgaW50IGxlbiA9IHN0cmxlbiAoYnVmKTsKKy0gIHVuc2lnbmVkIGNoYXIgKnJlZ2lzdGVy cyA9IHJlZ2NhY2hlLT5yZWdpc3RlcnM7CisrICB1bnNpZ25lZCBjaGFyICpyZWdpc3RlcnMgPSBn ZXRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpLT5yZWdpc3RlcnM7CisgCisgICBpZiAo bGVuICE9IHJlZ2lzdGVyX2J5dGVzICogMikKKyAgICAgeworQEAgLTIwNyw0MCArMjE0LDQwIEBA IHJlZ2lzdGVyX3NpemUgKGludCBuKQorIH0KKyAKKyBzdGF0aWMgdW5zaWduZWQgY2hhciAqCist cmVnaXN0ZXJfZGF0YSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IG4sIGludCBmZXRj aCkKKytyZWdpc3Rlcl9kYXRhIChpbnQgbiwgaW50IGZldGNoKQorIHsKKy0gIHJldHVybiByZWdj YWNoZS0+cmVnaXN0ZXJzICsgKHJlZ19kZWZzW25dLm9mZnNldCAvIDgpOworKyAgdW5zaWduZWQg Y2hhciAqcmVnaXN0ZXJzCisrICAgID0gZ2V0X3JlZ2NhY2hlIChjdXJyZW50X2luZmVyaW9yLCBm ZXRjaCktPnJlZ2lzdGVyczsKKysKKysgIHJldHVybiByZWdpc3RlcnMgKyAocmVnX2RlZnNbbl0u b2Zmc2V0IC8gOCk7CisgfQorIAorIHZvaWQKKy1zdXBwbHlfcmVnaXN0ZXIgKHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIGludCBuLCBjb25zdCB2b2lkICpidWYpCisrc3VwcGx5X3JlZ2lzdGVy IChpbnQgbiwgY29uc3Qgdm9pZCAqYnVmKQorIHsKKy0gIG1lbWNweSAocmVnaXN0ZXJfZGF0YSAo cmVnY2FjaGUsIG4sIDApLCBidWYsIHJlZ2lzdGVyX3NpemUgKG4pKTsKKysgIG1lbWNweSAocmVn aXN0ZXJfZGF0YSAobiwgMCksIGJ1ZiwgcmVnaXN0ZXJfc2l6ZSAobikpOworIH0KKyAKKyB2b2lk Cistc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCist CQkJIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQgKmJ1ZikKKytzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqYnVmKQorIHsKKy0gIHN1cHBs eV9yZWdpc3RlciAocmVnY2FjaGUsIGZpbmRfcmVnbm8gKG5hbWUpLCBidWYpOworKyAgc3VwcGx5 X3JlZ2lzdGVyIChmaW5kX3JlZ25vIChuYW1lKSwgYnVmKTsKKyB9CisgCisgdm9pZAorLWNvbGxl Y3RfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBuLCB2b2lkICpidWYp CisrY29sbGVjdF9yZWdpc3RlciAoaW50IG4sIHZvaWQgKmJ1ZikKKyB7CistICBtZW1jcHkgKGJ1 ZiwgcmVnaXN0ZXJfZGF0YSAocmVnY2FjaGUsIG4sIDEpLCByZWdpc3Rlcl9zaXplIChuKSk7Cisr ICBtZW1jcHkgKGJ1ZiwgcmVnaXN0ZXJfZGF0YSAobiwgMSksIHJlZ2lzdGVyX3NpemUgKG4pKTsK KyB9CisgCisgdm9pZAorLWNvbGxlY3RfcmVnaXN0ZXJfYXNfc3RyaW5nIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBpbnQgbiwgY2hhciAqYnVmKQorK2NvbGxlY3RfcmVnaXN0ZXJfYXNfc3Ry aW5nIChpbnQgbiwgY2hhciAqYnVmKQorIHsKKy0gIGNvbnZlcnRfaW50X3RvX2FzY2lpIChyZWdp c3Rlcl9kYXRhIChyZWdjYWNoZSwgbiwgMSksCistCQkJYnVmLCByZWdpc3Rlcl9zaXplIChuKSk7 CisrICBjb252ZXJ0X2ludF90b19hc2NpaSAocmVnaXN0ZXJfZGF0YSAobiwgMSksIGJ1ZiwgcmVn aXN0ZXJfc2l6ZSAobikpOworIH0KKyAKKyB2b2lkCistY29sbGVjdF9yZWdpc3Rlcl9ieV9uYW1l IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCSAgY29uc3QgY2hhciAqbmFtZSwgdm9p ZCAqYnVmKQorK2NvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwgdm9p ZCAqYnVmKQorIHsKKy0gIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBmaW5kX3JlZ25vIChu YW1lKSwgYnVmKTsKKysgIGNvbGxlY3RfcmVnaXN0ZXIgKGZpbmRfcmVnbm8gKG5hbWUpLCBidWYp OworIH0KKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvcmVnY2FjaGUuaAkyMDEwLTAxLTIwIDIzOjU1OjM4 LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci9yZWdjYWNoZS5oCTIwMTAtMDEt MjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtMjEsMjcgKzIxLDE0IEBACisgI2RlZmlu ZSBSRUdDQUNIRV9ICisgCisgc3RydWN0IGluZmVyaW9yX2xpc3RfZW50cnk7Cistc3RydWN0IHRo cmVhZF9pbmZvOworLQorLS8qIFRoZSBkYXRhIGZvciB0aGUgcmVnaXN0ZXIgY2FjaGUuICBOb3Rl IHRoYXQgd2UgaGF2ZSBvbmUgcGVyCistICAgaW5mZXJpb3I7IHRoaXMgaXMgcHJpbWFyaWx5IGZv ciBzaW1wbGljaXR5LCBhcyB0aGUgcGVyZm9ybWFuY2UKKy0gICBiZW5lZml0IGlzIG1pbmltYWwu ICAqLworLQorLXN0cnVjdCByZWdjYWNoZQorLXsKKy0gIGludCByZWdpc3RlcnNfdmFsaWQ7Cist ICB1bnNpZ25lZCBjaGFyICpyZWdpc3RlcnM7CistfTsKKyAKKyAvKiBDcmVhdGUgYSBuZXcgcmVn aXN0ZXIgY2FjaGUgZm9yIElORkVSSU9SLiAgKi8KKyAKKy1zdHJ1Y3QgcmVnY2FjaGUgKm5ld19y ZWdpc3Rlcl9jYWNoZSAodm9pZCk7CistCistc3RydWN0IHJlZ2NhY2hlICpnZXRfdGhyZWFkX3Jl Z2NhY2hlIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgaW50IGZldGNoKTsKKyt2b2lkICpu ZXdfcmVnaXN0ZXJfY2FjaGUgKHZvaWQpOworIAorIC8qIFJlbGVhc2UgYWxsIG1lbW9yeSBhc3Nv Y2lhdGVkIHdpdGggdGhlIHJlZ2lzdGVyIGNhY2hlIGZvciBJTkZFUklPUi4gICovCisgCistdm9p ZCBmcmVlX3JlZ2lzdGVyX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsKKyt2b2lk IGZyZWVfcmVnaXN0ZXJfY2FjaGUgKHZvaWQgKnJlZ2NhY2hlKTsKKyAKKyAvKiBJbnZhbGlkYXRl IGNhY2hlZCByZWdpc3RlcnMgZm9yIG9uZSBvciBhbGwgdGhyZWFkcy4gICovCisgCitAQCAtNTEs MTEgKzM4LDExIEBAIHZvaWQgcmVnY2FjaGVfaW52YWxpZGF0ZSAodm9pZCk7CisgLyogQ29udmVy dCBhbGwgcmVnaXN0ZXJzIHRvIGEgc3RyaW5nIGluIHRoZSBjdXJyZW50bHkgc3BlY2lmaWVkIHJl bW90ZQorICAgIGZvcm1hdC4gICovCisgCistdm9pZCByZWdpc3RlcnNfdG9fc3RyaW5nIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjaGFyICpidWYpOworK3ZvaWQgcmVnaXN0ZXJzX3RvX3N0 cmluZyAoY2hhciAqYnVmKTsKKyAKKyAvKiBDb252ZXJ0IGEgc3RyaW5nIHRvIHJlZ2lzdGVyIHZh bHVlcyBhbmQgZmlsbCBvdXIgcmVnaXN0ZXIgY2FjaGUuICAqLworIAorLXZvaWQgcmVnaXN0ZXJz X2Zyb21fc3RyaW5nIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjaGFyICpidWYpOworK3Zv aWQgcmVnaXN0ZXJzX2Zyb21fc3RyaW5nIChjaGFyICpidWYpOworIAorIC8qIFJldHVybiBhIHBv aW50ZXIgdG8gdGhlIGRlc2NyaXB0aW9uIG9mIHJlZ2lzdGVyIGBgbicnLiAgKi8KKyAKK0BAIC03 MCwxNSArNTcsMTQgQEAgaW50IGZpbmRfcmVnbm8gKGNvbnN0IGNoYXIgKm5hbWUpOworIGV4dGVy biBjb25zdCBjaGFyICoqZ2Ric2VydmVyX2V4cGVkaXRlX3JlZ3M7CisgZXh0ZXJuIGNvbnN0IGNo YXIgKmdkYnNlcnZlcl94bWx0YXJnZXQ7CisgCistdm9pZCBzdXBwbHlfcmVnaXN0ZXIgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBuLCBjb25zdCB2b2lkICpidWYpOworK3ZvaWQgc3Vw cGx5X3JlZ2lzdGVyIChpbnQgbiwgY29uc3Qgdm9pZCAqYnVmKTsKKyAKKy12b2lkIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCSAgICAgIGNv bnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQgKmJ1Zik7Cisrdm9pZCBzdXBwbHlfcmVnaXN0ZXJf YnlfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqYnVmKTsKKyAKKy12b2lkIGNv bGxlY3RfcmVnaXN0ZXIgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBuLCB2b2lkICpi dWYpOworK3ZvaWQgY29sbGVjdF9yZWdpc3RlciAoaW50IG4sIHZvaWQgKmJ1Zik7CisgCistdm9p ZCBjb2xsZWN0X3JlZ2lzdGVyX2FzX3N0cmluZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg aW50IG4sIGNoYXIgKmJ1Zik7Cisrdm9pZCBjb2xsZWN0X3JlZ2lzdGVyX2FzX3N0cmluZyAoaW50 IG4sIGNoYXIgKmJ1Zik7CisgCistdm9pZCBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmJ1Zik7Cisrdm9p ZCBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmJ1Zik7 CisgCisgI2VuZGlmIC8qIFJFR0NBQ0hFX0ggKi8KKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvcmVtb3Rl LXV0aWxzLmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9n ZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAx MDAKK0BAIC0xMDUzLDcgKzEwNTMsNyBAQCBjb252ZXJ0X2FzY2lpX3RvX2ludCAoY2hhciAqZnJv bSwgdW5zaWduCisgfQorIAorIHN0YXRpYyBjaGFyICoKKy1vdXRyZWcgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGludCByZWdubywgY2hhciAqYnVmKQorK291dHJlZyAoaW50IHJlZ25vLCBj aGFyICpidWYpCisgeworICAgaWYgKChyZWdubyA+PiAxMikgIT0gMCkKKyAgICAgKmJ1ZisrID0g dG9oZXggKChyZWdubyA+PiAxMikgJiAweGYpOworQEAgLTEwNjIsNyArMTA2Miw3IEBAIG91dHJl ZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHIKKyAgICpidWYrKyA9IHRvaGV4ICgo cmVnbm8gPj4gNCkgJiAweGYpOworICAgKmJ1ZisrID0gdG9oZXggKHJlZ25vICYgMHhmKTsKKyAg ICpidWYrKyA9ICc6JzsKKy0gIGNvbGxlY3RfcmVnaXN0ZXJfYXNfc3RyaW5nIChyZWdjYWNoZSwg cmVnbm8sIGJ1Zik7CisrICBjb2xsZWN0X3JlZ2lzdGVyX2FzX3N0cmluZyAocmVnbm8sIGJ1Zik7 CisgICBidWYgKz0gMiAqIHJlZ2lzdGVyX3NpemUgKHJlZ25vKTsKKyAgICpidWYrKyA9ICc7JzsK KyAKK0BAIC0xMTE2LDcgKzExMTYsNiBAQCBwcmVwYXJlX3Jlc3VtZV9yZXBseSAoY2hhciAqYnVm LCBwdGlkX3QgCisgICAgICAgeworIAlzdHJ1Y3QgdGhyZWFkX2luZm8gKnNhdmVkX2luZmVyaW9y OworIAljb25zdCBjaGFyICoqcmVncDsKKy0Jc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKKyAK KyAJc3ByaW50ZiAoYnVmLCAiVCUwMngiLCBzdGF0dXMtPnZhbHVlLnNpZyk7CisgCWJ1ZiArPSBz dHJsZW4gKGJ1Zik7CitAQCAtMTEyNyw4ICsxMTI2LDYgQEAgcHJlcGFyZV9yZXN1bWVfcmVwbHkg KGNoYXIgKmJ1ZiwgcHRpZF90IAorIAorIAljdXJyZW50X2luZmVyaW9yID0gZmluZF90aHJlYWRf cHRpZCAocHRpZCk7CisgCistCXJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVu dF9pbmZlcmlvciwgMSk7CistCisgCWlmICh0aGVfdGFyZ2V0LT5zdG9wcGVkX2J5X3dhdGNocG9p bnQgIT0gTlVMTAorIAkgICAgJiYgKCp0aGVfdGFyZ2V0LT5zdG9wcGVkX2J5X3dhdGNocG9pbnQp ICgpKQorIAkgIHsKK0BAIC0xMTUxLDcgKzExNDgsNyBAQCBwcmVwYXJlX3Jlc3VtZV9yZXBseSAo Y2hhciAqYnVmLCBwdGlkX3QgCisgCisgCXdoaWxlICgqcmVncCkKKyAJICB7CistCSAgICBidWYg PSBvdXRyZWcgKHJlZ2NhY2hlLCBmaW5kX3JlZ25vICgqcmVncCksIGJ1Zik7CisrCSAgICBidWYg PSBvdXRyZWcgKGZpbmRfcmVnbm8gKCpyZWdwKSwgYnVmKTsKKyAJICAgIHJlZ3AgKys7CisgCSAg fQorIAkqYnVmID0gJ1wwJzsKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvc2VydmVyLmMJMjAxMC0wMS0y MCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvc2VydmVyLmMJ MjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNDU2LDI1ICsyNDU2LDE1 IEBAIHByb2Nlc3Nfc2VyaWFsX2V2ZW50ICh2b2lkKQorIAl9CisgICAgICAgYnJlYWs7CisgICAg IGNhc2UgJ2cnOgorLSAgICAgIHsKKy0Jc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKKy0KKy0J cmVxdWlyZV9ydW5uaW5nIChvd25fYnVmKTsKKy0Jc2V0X2Rlc2lyZWRfaW5mZXJpb3IgKDEpOwor LQlyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IsIDEpOwor LQlyZWdpc3RlcnNfdG9fc3RyaW5nIChyZWdjYWNoZSwgb3duX2J1Zik7CistICAgICAgfQorKyAg ICAgIHJlcXVpcmVfcnVubmluZyAob3duX2J1Zik7CisrICAgICAgc2V0X2Rlc2lyZWRfaW5mZXJp b3IgKDEpOworKyAgICAgIHJlZ2lzdGVyc190b19zdHJpbmcgKG93bl9idWYpOworICAgICAgIGJy ZWFrOworICAgICBjYXNlICdHJzoKKy0gCXsKKy0JICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl OworLQorLQkgIHJlcXVpcmVfcnVubmluZyAob3duX2J1Zik7CistCSAgc2V0X2Rlc2lyZWRfaW5m ZXJpb3IgKDEpOworLQkgIHJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoY3VycmVudF9p bmZlcmlvciwgMSk7CistCSAgcmVnaXN0ZXJzX2Zyb21fc3RyaW5nIChyZWdjYWNoZSwgJm93bl9i dWZbMV0pOworLQkgIHdyaXRlX29rIChvd25fYnVmKTsKKy0JfQorKyAgICAgIHJlcXVpcmVfcnVu bmluZyAob3duX2J1Zik7CisrICAgICAgc2V0X2Rlc2lyZWRfaW5mZXJpb3IgKDEpOworKyAgICAg IHJlZ2lzdGVyc19mcm9tX3N0cmluZyAoJm93bl9idWZbMV0pOworKyAgICAgIHdyaXRlX29rIChv d25fYnVmKTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSAnbSc6CisgICAgICAgcmVxdWlyZV9y dW5uaW5nIChvd25fYnVmKTsKKy0tLSAuL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgJMjAxMC0wMS0y MCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgJ MjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNjYsMTMgKzE2NiwxMyBA QCBzdHJ1Y3QgdGFyZ2V0X29wcworIAorICAgICAgSWYgUkVHTk8gaXMgLTEsIGZldGNoIGFsbCBy ZWdpc3RlcnM7IG90aGVyd2lzZSwgZmV0Y2ggYXQgbGVhc3QgUkVHTk8uICAqLworIAorLSAgdm9p ZCAoKmZldGNoX3JlZ2lzdGVycykgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdu byk7CisrICB2b2lkICgqZmV0Y2hfcmVnaXN0ZXJzKSAoaW50IHJlZ25vKTsKKyAKKyAgIC8qIFN0 b3JlIHJlZ2lzdGVycyB0byB0aGUgaW5mZXJpb3IgcHJvY2Vzcy4KKyAKKyAgICAgIElmIFJFR05P IGlzIC0xLCBzdG9yZSBhbGwgcmVnaXN0ZXJzOyBvdGhlcndpc2UsIHN0b3JlIGF0IGxlYXN0IFJF R05PLiAgKi8KKyAKKy0gIHZvaWQgKCpzdG9yZV9yZWdpc3RlcnMpIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBpbnQgcmVnbm8pOworKyAgdm9pZCAoKnN0b3JlX3JlZ2lzdGVycykgKGludCBy ZWdubyk7CisgCisgICAvKiBSZWFkIG1lbW9yeSBmcm9tIHRoZSBpbmZlcmlvciBwcm9jZXNzLiAg VGhpcyBzaG91bGQgZ2VuZXJhbGx5IGJlCisgICAgICBjYWxsZWQgdGhyb3VnaCByZWFkX2luZmVy aW9yX21lbW9yeSwgd2hpY2ggaGFuZGxlcyBicmVha3BvaW50IHNoYWRvd2luZy4KK0BAIC0zMDcs MTEgKzMwNywxMSBAQCB2b2lkIHNldF90YXJnZXRfb3BzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqCisg I2RlZmluZSBteXRocmVhZF9hbGl2ZShwaWQpIFwKKyAgICgqdGhlX3RhcmdldC0+dGhyZWFkX2Fs aXZlKSAocGlkKQorIAorLSNkZWZpbmUgZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzKHJlZ2NhY2hl LCByZWdubykJXAorLSAgKCp0aGVfdGFyZ2V0LT5mZXRjaF9yZWdpc3RlcnMpIChyZWdjYWNoZSwg cmVnbm8pCisrI2RlZmluZSBmZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMocmVnbm8pIFwKKysgICgq dGhlX3RhcmdldC0+ZmV0Y2hfcmVnaXN0ZXJzKSAocmVnbm8pCisgCistI2RlZmluZSBzdG9yZV9p bmZlcmlvcl9yZWdpc3RlcnMocmVnY2FjaGUsIHJlZ25vKSBcCistICAoKnRoZV90YXJnZXQtPnN0 b3JlX3JlZ2lzdGVycykgKHJlZ2NhY2hlLCByZWdubykKKysjZGVmaW5lIHN0b3JlX2luZmVyaW9y X3JlZ2lzdGVycyhyZWdubykgXAorKyAgKCp0aGVfdGFyZ2V0LT5zdG9yZV9yZWdpc3RlcnMpIChy ZWdubykKKyAKKyAjZGVmaW5lIGpvaW5faW5mZXJpb3IocGlkKSBcCisgICAoKnRoZV90YXJnZXQt PmpvaW4pIChwaWQpCistLS0gLi9nZGIvZ2Ric2VydmVyL3dpbjMyLWFybS1sb3cuYwkyMDEwLTAx LTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2dkYnNlcnZlci93aW4zMi1h cm0tbG93LmMJMjAxMC0wMS0yMSAyMDozMzoxNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC05MywxOSAr OTMsMTcgQEAgcmVncHRyIChDT05URVhUKiBjLCBpbnQgcikKKyAKKyAvKiBGZXRjaCByZWdpc3Rl ciBmcm9tIGdkYnNlcnZlciByZWdjYWNoZSBkYXRhLiAgKi8KKyBzdGF0aWMgdm9pZAorLWFybV9m ZXRjaF9pbmZlcmlvcl9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKy0JCQkg ICAgIHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpCisrYXJtX2ZldGNoX2luZmVyaW9yX3Jl Z2lzdGVyICh3aW4zMl90aHJlYWRfaW5mbyAqdGgsIGludCByKQorIHsKKyAgIGNoYXIgKmNvbnRl eHRfb2Zmc2V0ID0gcmVncHRyICgmdGgtPmNvbnRleHQsIHIpOworLSAgc3VwcGx5X3JlZ2lzdGVy IChyZWdjYWNoZSwgciwgY29udGV4dF9vZmZzZXQpOworKyAgc3VwcGx5X3JlZ2lzdGVyIChyLCBj b250ZXh0X29mZnNldCk7CisgfQorIAorIC8qIFN0b3JlIGEgbmV3IHJlZ2lzdGVyIHZhbHVlIGlu dG8gdGhlIHRocmVhZCBjb250ZXh0IG9mIFRILiAgKi8KKyBzdGF0aWMgdm9pZAorLWFybV9zdG9y ZV9pbmZlcmlvcl9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKy0JCQkgICAg IHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpCisrYXJtX3N0b3JlX2luZmVyaW9yX3JlZ2lz dGVyICh3aW4zMl90aHJlYWRfaW5mbyAqdGgsIGludCByKQorIHsKKy0gIGNvbGxlY3RfcmVnaXN0 ZXIgKHJlZ2NhY2hlLCByLCByZWdwdHIgKCZ0aC0+Y29udGV4dCwgcikpOworKyAgY29sbGVjdF9y ZWdpc3RlciAociwgcmVncHRyICgmdGgtPmNvbnRleHQsIHIpKTsKKyB9CisgCisgLyogQ29ycmVj dCBpbiBlaXRoZXIgZW5kaWFubmVzcy4gIFdlIGRvIG5vdCBzdXBwb3J0IFRodW1iIHlldC4gICov CistLS0gLi9nZGIvZ2Ric2VydmVyL3dpbjMyLWkzODYtbG93LmMJMjAxMC0wMS0yMCAyMzo1NToz OC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9nZGJzZXJ2ZXIvd2luMzItaTM4Ni1sb3cuYwky MDEwLTAxLTIxIDIwOjMzOjE1LjAwMDAwMDAwMCArMDEwMAorQEAgLTI3MSw4ICsyNzEsNyBAQCBz dGF0aWMgY29uc3QgaW50IG1hcHBpbmdzW10gPSB7CisgCisgLyogRmV0Y2ggcmVnaXN0ZXIgZnJv bSBnZGJzZXJ2ZXIgcmVnY2FjaGUgZGF0YS4gICovCisgc3RhdGljIHZvaWQKKy1pMzg2X2ZldGNo X2luZmVyaW9yX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCSAgICAg IHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpCisraTM4Nl9mZXRjaF9pbmZlcmlvcl9yZWdp c3RlciAod2luMzJfdGhyZWFkX2luZm8gKnRoLCBpbnQgcikKKyB7CisgICBjaGFyICpjb250ZXh0 X29mZnNldCA9IChjaGFyICopICZ0aC0+Y29udGV4dCArIG1hcHBpbmdzW3JdOworIAorQEAgLTI4 MCwyNCArMjc5LDIzIEBAIGkzODZfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXIgKHN0cnVjdCByZWcK KyAgIGlmIChyID09IEZDU19SRUdOVU0pCisgICAgIHsKKyAgICAgICBsID0gKigobG9uZyAqKSBj b250ZXh0X29mZnNldCkgJiAweGZmZmY7CistICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNo ZSwgciwgKGNoYXIgKikgJmwpOworKyAgICAgIHN1cHBseV9yZWdpc3RlciAociwgKGNoYXIgKikg JmwpOworICAgICB9CisgICBlbHNlIGlmIChyID09IEZPUF9SRUdOVU0pCisgICAgIHsKKyAgICAg ICBsID0gKCooKGxvbmcgKikgY29udGV4dF9vZmZzZXQpID4+IDE2KSAmICgoMSA8PCAxMSkgLSAx KTsKKy0gICAgICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByLCAoY2hhciAqKSAmbCk7Cisr ICAgICAgc3VwcGx5X3JlZ2lzdGVyIChyLCAoY2hhciAqKSAmbCk7CisgICAgIH0KKyAgIGVsc2UK Ky0gICAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgciwgY29udGV4dF9vZmZzZXQpOworKyAg ICBzdXBwbHlfcmVnaXN0ZXIgKHIsIGNvbnRleHRfb2Zmc2V0KTsKKyB9CisgCisgLyogU3RvcmUg YSBuZXcgcmVnaXN0ZXIgdmFsdWUgaW50byB0aGUgdGhyZWFkIGNvbnRleHQgb2YgVEguICAqLwor IHN0YXRpYyB2b2lkCistaTM4Nl9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlciAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwKKy0JCQkgICAgICB3aW4zMl90aHJlYWRfaW5mbyAqdGgsIGludCByKQor K2kzODZfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXIgKHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50 IHIpCisgeworICAgY2hhciAqY29udGV4dF9vZmZzZXQgPSAoY2hhciAqKSAmdGgtPmNvbnRleHQg KyBtYXBwaW5nc1tyXTsKKy0gIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByLCBjb250ZXh0 X29mZnNldCk7CisrICBjb2xsZWN0X3JlZ2lzdGVyIChyLCBjb250ZXh0X29mZnNldCk7CisgfQor IAorIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGkzODZfd2luMzJfYnJlYWtwb2ludCA9IDB4 Y2M7CistLS0gLi9nZGIvZ2Ric2VydmVyL3dpbjMyLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6Mzgu MDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL3dpbjMyLWxvdy5jCTIwMTAtMDEt MjEgMjA6MzM6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtMzcyLDI5ICszNzIsMjkgQEAgY2hpbGRf Y29udGludWUgKERXT1JEIGNvbnRpbnVlX3N0YXR1cywgaQorIAorIC8qIEZldGNoIHJlZ2lzdGVy KHMpIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkIGNvbnRleHQuICAqLworIHN0YXRpYyB2b2lkCist Y2hpbGRfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBpbnQgcikKKytjaGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKGludCByKQorIHsKKyAg IGludCByZWdubzsKKyAgIHdpbjMyX3RocmVhZF9pbmZvICp0aCA9IHRocmVhZF9yZWMgKGN1cnJl bnRfaW5mZXJpb3JfcHRpZCAoKSwgVFJVRSk7CisgICBpZiAociA9PSAtMSB8fCByID4gTlVNX1JF R1MpCistICAgIGNoaWxkX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAocmVnY2FjaGUsIE5VTV9S RUdTKTsKKysgICAgY2hpbGRfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzIChOVU1fUkVHUyk7Cisg ICBlbHNlCisgICAgIGZvciAocmVnbm8gPSAwOyByZWdubyA8IHI7IHJlZ25vKyspCistICAgICAg KCp0aGVfbG93X3RhcmdldC5mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcikgKHJlZ2NhY2hlLCB0aCwg cmVnbm8pOworKyAgICAgICgqdGhlX2xvd190YXJnZXQuZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXIp ICh0aCwgcmVnbm8pOworIH0KKyAKKyAvKiBTdG9yZSBhIG5ldyByZWdpc3RlciB2YWx1ZSBpbnRv IHRoZSBjdXJyZW50IHRocmVhZCBjb250ZXh0LiAgV2UgZG9uJ3QKKyAgICBjaGFuZ2UgdGhlIHBy b2dyYW0ncyBjb250ZXh0IHVudGlsIGxhdGVyLCB3aGVuIHdlIHJlc3VtZSBpdC4gICovCisgc3Rh dGljIHZvaWQKKy1jaGlsZF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGludCByKQorK2NoaWxkX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoaW50 IHIpCisgeworICAgaW50IHJlZ25vOworICAgd2luMzJfdGhyZWFkX2luZm8gKnRoID0gdGhyZWFk X3JlYyAoY3VycmVudF9pbmZlcmlvcl9wdGlkICgpLCBUUlVFKTsKKyAgIGlmIChyID09IC0xIHx8 IHIgPT0gMCB8fCByID4gTlVNX1JFR1MpCistICAgIGNoaWxkX3N0b3JlX2luZmVyaW9yX3JlZ2lz dGVycyAocmVnY2FjaGUsIE5VTV9SRUdTKTsKKysgICAgY2hpbGRfc3RvcmVfaW5mZXJpb3JfcmVn aXN0ZXJzIChOVU1fUkVHUyk7CisgICBlbHNlCisgICAgIGZvciAocmVnbm8gPSAwOyByZWdubyA8 IHI7IHJlZ25vKyspCistICAgICAgKCp0aGVfbG93X3RhcmdldC5zdG9yZV9pbmZlcmlvcl9yZWdp c3RlcikgKHJlZ2NhY2hlLCB0aCwgcmVnbm8pOworKyAgICAgICgqdGhlX2xvd190YXJnZXQuc3Rv cmVfaW5mZXJpb3JfcmVnaXN0ZXIpICh0aCwgcmVnbm8pOworIH0KKyAKKyAvKiBNYXAgdGhlIFdp bmRvd3MgZXJyb3IgbnVtYmVyIGluIEVSUk9SIHRvIGEgbG9jYWxlLWRlcGVuZGVudCBlcnJvcgor QEAgLTE1NjksNyArMTU2OSw2IEBAIHN0YXRpYyBwdGlkX3QKKyB3aW4zMl93YWl0IChwdGlkX3Qg cHRpZCwgc3RydWN0IHRhcmdldF93YWl0c3RhdHVzICpvdXJzdGF0dXMsIGludCBvcHRpb25zKQor IHsKKyAgIHN0cnVjdCBwcm9jZXNzX2luZm8gKnByb2Nlc3M7CistICBzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlOworIAorICAgd2hpbGUgKDEpCisgICAgIHsKK0BAIC0xNTkxLDggKzE1OTAsNyBA QCB3aW4zMl93YWl0IChwdGlkX3QgcHRpZCwgc3RydWN0IHRhcmdldF93CisgCSAgT1VUTVNHMiAo KCJDaGlsZCBTdG9wcGVkIHdpdGggc2lnbmFsID0gJWQgXG4iLAorIAkJICAgIG91cnN0YXR1cy0+ dmFsdWUuc2lnKSk7CisgCistCSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChjdXJy ZW50X2luZmVyaW9yLCAxKTsKKy0JICBjaGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJl Z2NhY2hlLCAtMSk7CisrCSAgY2hpbGRfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzICgtMSk7Cisg CisgCSAgaWYgKG91cnN0YXR1cy0+a2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfTE9BREVECisgCSAg ICAgICYmICFzZXJ2ZXJfd2FpdGluZykKK0BAIC0xNjI0LDE3ICsxNjIyLDE3IEBAIHdpbjMyX3dh aXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3cKKyAvKiBGZXRjaCByZWdpc3RlcnMgZnJv bSB0aGUgaW5mZXJpb3IgcHJvY2Vzcy4KKyAgICBJZiBSRUdOTyBpcyAtMSwgZmV0Y2ggYWxsIHJl Z2lzdGVyczsgb3RoZXJ3aXNlLCBmZXRjaCBhdCBsZWFzdCBSRUdOTy4gICovCisgc3RhdGljIHZv aWQKKy13aW4zMl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGludCByZWdubykKKyt3aW4zMl9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKGludCBy ZWdubykKKyB7CistICBjaGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ2NhY2hlLCBy ZWdubyk7CisrICBjaGlsZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHJlZ25vKTsKKyB9Cisg CisgLyogU3RvcmUgcmVnaXN0ZXJzIHRvIHRoZSBpbmZlcmlvciBwcm9jZXNzLgorICAgIElmIFJF R05PIGlzIC0xLCBzdG9yZSBhbGwgcmVnaXN0ZXJzOyBvdGhlcndpc2UsIHN0b3JlIGF0IGxlYXN0 IFJFR05PLiAgKi8KKyBzdGF0aWMgdm9pZAorLXdpbjMyX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVy cyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQorK3dpbjMyX3N0b3JlX2lu ZmVyaW9yX3JlZ2lzdGVycyAoaW50IHJlZ25vKQorIHsKKy0gIGNoaWxkX3N0b3JlX2luZmVyaW9y X3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKKysgIGNoaWxkX3N0b3JlX2luZmVyaW9yX3Jl Z2lzdGVycyAocmVnbm8pOworIH0KKyAKKyAvKiBSZWFkIG1lbW9yeSBmcm9tIHRoZSBpbmZlcmlv ciBwcm9jZXNzLiAgVGhpcyBzaG91bGQgZ2VuZXJhbGx5IGJlCistLS0gLi9nZGIvZ2Ric2VydmVy L3dpbjMyLWxvdy5oCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCisrKysgLi9n ZGIvZ2Ric2VydmVyL3dpbjMyLWxvdy5oCTIwMTAtMDEtMjEgMjA6MzM6MTUuMDAwMDAwMDAwICsw MTAwCitAQCAtNjEsMTIgKzYxLDEwIEBAIHN0cnVjdCB3aW4zMl90YXJnZXRfb3BzCisgICB2b2lk ICgqdGhyZWFkX2FkZGVkKSAod2luMzJfdGhyZWFkX2luZm8gKnRoKTsKKyAKKyAgIC8qIEZldGNo IHJlZ2lzdGVyIGZyb20gZ2Ric2VydmVyIHJlZ2NhY2hlIGRhdGEuICAqLworLSAgdm9pZCAoKmZl dGNoX2luZmVyaW9yX3JlZ2lzdGVyKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKy0JCQkJ ICAgd2luMzJfdGhyZWFkX2luZm8gKnRoLCBpbnQgcik7CisrICB2b2lkICgqZmV0Y2hfaW5mZXJp b3JfcmVnaXN0ZXIpICh3aW4zMl90aHJlYWRfaW5mbyAqdGgsIGludCByKTsKKyAKKyAgIC8qIFN0 b3JlIGEgbmV3IHJlZ2lzdGVyIHZhbHVlIGludG8gdGhlIHRocmVhZCBjb250ZXh0IG9mIFRILiAg Ki8KKy0gIHZvaWQgKCpzdG9yZV9pbmZlcmlvcl9yZWdpc3RlcikgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsCistCQkJCSAgIHdpbjMyX3RocmVhZF9pbmZvICp0aCwgaW50IHIpOworKyAgdm9p ZCAoKnN0b3JlX2luZmVyaW9yX3JlZ2lzdGVyKSAod2luMzJfdGhyZWFkX2luZm8gKnRoLCBpbnQg cik7CisgCisgICB2b2lkICgqc2luZ2xlX3N0ZXApICh3aW4zMl90aHJlYWRfaW5mbyAqdGgpOwor IAoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggYzgyODRmOC4uNzBmYjlh MSAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTM2LDcgKzM2LDcgQEAg VmVyc2lvbjogNy4wLjUwLjIwMTAwMTIxCiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5z IGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScg aXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNv bXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMiV7P193aXRoX3Vwc3RyZWFtOi51 cHN0cmVhbX0le2Rpc3R9CitSZWxlYXNlOiAzJXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7 ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBA IC00MjgsNiArNDI4LDkgQEAgUGF0Y2g0MTE6IGdkYi1zb2xpYi1kaXNwbGF5LnBhdGNoCiAjIFJl dmVydDogQWRkIC1XdW51c2VkLWZ1bmN0aW9uIHRvIGNvbXBpbGUgZmxhZ3MuCiBQYXRjaDQxMjog Z2RiLXVudXNlZC1yZXZlcnQucGF0Y2gKIAorIyBSZXZlcnQgRlNGIEdEQiBnZGJzZXJ2ZXIgdHJh Y2Vwb2ludHMgYXMgaW5jb21wbGV0ZSBub3cuCitQYXRjaDQxMzogZ2RiLWdkYnNlcnZlci10cmFj ZXBvaW50LXJldmVydC5wYXRjaAorCiBCdWlsZFJlcXVpcmVzOiBuY3Vyc2VzLWRldmVsJXs/X2lz YX0gdGV4aW5mbyBnZXR0ZXh0IGZsZXggYmlzb24gZXhwYXQtZGV2ZWwlez9faXNhfQogUmVxdWly ZXM6IHJlYWRsaW5lJXs/X2lzYX0KIEJ1aWxkUmVxdWlyZXM6IHJlYWRsaW5lLWRldmVsJXs/X2lz YX0KQEAgLTY3Myw2ICs2NzYsNyBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdk Yi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2g0MDggLXAxCiAlcGF0Y2g0MTEgLXAxCiAl cGF0Y2g0MTIgLXAxCislcGF0Y2g0MTMgLXAxCiAjIEFsd2F5cyB2ZXJpZnkgaXRzIGFwcGxpY2Fi aWxpdHkuCiAlcGF0Y2gzOTMgLXAxCiAlcGF0Y2gzMzUgLXAxCkBAIC05OTgsNiArMTAwMiw5IEBA IGZpCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBUaHUgSmFuIDIxIDIwMTAgSmFuIEtyYXRvY2h2 aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjUwLjIwMTAwMTIxLTMuZmMxMwor LSBSZXZlcnQgRlNGIEdEQiBnZGJzZXJ2ZXIgdHJhY2Vwb2ludHMgYXMgaW5jb21wbGV0ZSBub3cu CisKICogVGh1IEphbiAyMSAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPiAtIDcuMC41MC4yMDEwMDEyMS0yLmZjMTMKIC0gYXJjaGVyLWphbmtyYXRvY2h2aWwt ZmVkb3JhMTMgY29tbWl0OiAyMWU0MThjMDQyOTBhYTVkMmU3NTU0M2QzMWZlM2ZlNWQ3MGQ2ZDQx CiAtIFtleHByLWN1bXVsYXRpdmVdIEZpeCAiYnJlYWsgZXhwciBpZiAoY29uZCkiIHJlZ3Jlc3Np b24uCg==