From: marko.makela Date: June 29 2010 11:33am Subject: bzr push into mysql-trunk-innodb branch (marko.makela:3125 to 3126) Bug#52199 List-Archive: http://lists.mysql.com/commits/112446 X-Bug: 52199 Message-Id: <201006291134.o5TAixI4016610@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0467281279==" --===============0467281279== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDMxMjYgTWFya28gTcOka2Vsw6QJMjAxMC0wNi0yOQogICAgICBCdWcjNTIxOTkgdXRmMzI6IG1i bWlubGVuPTQsIG1ibWF4bGVuPTQsIHR5cGUtPm1ibWlubGVuPTAsIHR5cGUtPm1ibWF4bGVuPTQK ICAgICAgCiAgICAgIE1lcmdlIGFuZCBhZGp1c3QgYSBmb3Jnb3R0ZW4gY2hhbmdlIHRvIGZpeCB0 aGlzIGJ1Zy4KICAgICAgcmI6Ly8zOTMgYXBwcm92ZWQgYnkgSmltbXkgWWFuZwogICAgICAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICAgICAgIHIzNzk0IHwgbWFya28gfCAyMDA5LTAxLTA3IDE0OjE0OjUz ICswMDAwIChXZWQsIDA3IEphbiAyMDA5KSB8IDE4IGxpbmVzCiAgICAgIAogICAgICAgIGJyYW5j aGVzLzYuMDogQWxsb3cgdGhlIG1pbmltdW0gbGVuZ3RoIG9mIGEgbXVsdGktYnl0ZSBjaGFyYWN0 ZXIgdG8gYmUKICAgICAgICB1cCB0byA0IGJ5dGVzLiAoQnVnICMzNTM5MSkKICAgICAgCiAgICAg ICAgZHR5cGVfdCwgZGljdF9jb2xfdDogUmVwbGFjZSBtYm1pbmxlbjoyLCBtYm1heGxlbjozIHdp dGggbWJtaW5tYXhsZW46NS4KICAgICAgICBJbiB0aGlzIHdheSwgdGhlIDUgYml0cyBjYW4gaG9s ZCB0d28gdmFsdWVzIG9mIDAuLjQsIGFuZCB0aGUgc3RvcmFnZSBzaXplCiAgICAgICAgb2YgdGhl IGZpZWxkcyB3aWxsIG5vdCBjcm9zcyB0aGUgNjQtYml0IGJvdW5kYXJ5LiAgRW5jb2RlIHRoZSB2 YWx1ZXMgYXMKICAgICAgICBEQVRBX01CTUFYICogbWJtYXhsZW4gKyBtYm1pbmxlbi4gIERlZmlu ZSB0aGUgYXV4aWxpYXJ5IG1hY3JvcwogICAgICAgIERCX01CTUlOTEVOKG1ibWlubWF4bGVuKSwg REJfTUJNQVhMRU4obWJtaW5tYXhsZW4pLCBhbmQKICAgICAgICBEQl9NSU5NQVhMRU4obWJtaW5s ZW4sIG1ibWF4bGVuKS4KICAgICAgCiAgICAgICAgVHJ5IHRvIHRyaW0gYW5kIHBhZCBVVEYtMTYg YW5kIFVURi0zMiB3aXRoIHNwYWNlcyBhcyBhcHByb3ByaWF0ZS4KICAgICAgCiAgICAgICAgQWxl eGFuZGVyIEJhcmtvdiBzdWdnZXN0ZWQgdGhlIHVzZSBvZiBjcy0+Y3NldC0+ZmlsbChjcywgYnVm ZiwgbGVuLCAweDIwKS4KICAgICAgICBoYV9pbm5vYmFzZTo6c3RvcmVfa2V5X3ZhbF9mb3Jfcm93 KCkgbm93IGRvZXMgdGhhdCwgYnV0IHRoZSBhZGRlZCBmdW5jdGlvbgogICAgICAgIHJvd19teXNx bF9wYWRfY29sKCkgZG9lcyBub3QsIGJlY2F1c2UgaXQgZG9lc24ndCBoYXZlIHRoZSBNeVNRTCBU QUJMRSBvYmplY3QuCiAgICAgIAogICAgICAgIHJiOi8vNDkgYXBwcm92ZWQgYnkgSGVpa2tpIFR1 dXJpCiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgYWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzUyMTk5LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1 aXRlL2lubm9kYi90L2lubm9kYl9idWc1MjE5OS50ZXN0CiAgICBtb2RpZmllZDoKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9kYXRhL2RhdGEwdHlwZS5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZGlj dC9kaWN0MG1lbS5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MK ICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwdHlwZS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9kYXRhMHR5cGUuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3Qw ZGljdC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGRpY3QuaWMKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2RpY3QwbWVtLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cw bXlzcWwuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MG1lcmdlLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93 MG15c3FsLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHJvdy5jCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cw dXBkLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jCiAzMTI1IFZhc2lsIERp bW92CTIwMTAtMDYtMjgKICAgICAgRGlzYWJsZSBVTklWX0RFQlVHIHdoZW4gV0lUSF9ERUJVRyBp cyBlbmFibGVkCiAgICAgIAogICAgICBJdCBjYXVzZXMgbG90cyBvZiBmYWlsdXJlcyBkdWUgdG8K ICAgICAgQnVnIzU0ODYxIEFkZGl0aW9uYWwgY29ubmVjdGlvbnMgbm90IGhhbmRsZWQgcHJvcGVy bHkgaW4gbXRyIC0tZW1iZWRkZWQKICAgICAgc2hvdWxkIGJlIHJlLWVuYWJsZWQgd2hlbiB0aGF0 IGJ1ZyBpcyByZXNvbHZlZAoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL0NN YWtlTGlzdHMudHh0Cj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lu bm9kYl9idWc1MjE5OS5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5u b2RiX2J1ZzUyMTk5LnJlc3VsdAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3Fs LXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzUyMTk5LnJlc3VsdAlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYyOTExMzI0OC1mdmw0OGxuenI0NHo5NGdnCkBAIC0wLDAg KzEsNSBAQAorQ1JFQVRFIFRBQkxFIGJ1ZzUyMTk5IChhIElOVCBOT1QgTlVMTCwKK2IgQ0hBUigx MjUpIENIQVJBQ1RFUiBTRVQgdXRmMzIgQ09MTEFURSB1dGYzMl9iaW4gTk9UIE5VTEwKKylFTkdJ TkU9SW5ub0RCOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHggT04gYnVnNTIxOTkoYSk7CitEUk9Q IFRBQkxFIGJ1ZzUyMTk5OwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2Ri L3QvaW5ub2RiX2J1ZzUyMTk5LnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3Qv aW5ub2RiX2J1ZzUyMTk5LnRlc3QJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNx bC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MjE5OS50ZXN0CXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTAwNjI5MTEzMjQ4LWZ2bDQ4bG56cjQ0ejk0Z2cKQEAgLTAsMCAr MSw3IEBACistLSBzb3VyY2UgaW5jbHVkZS9oYXZlX2lubm9kYi5pbmMKKworQ1JFQVRFIFRBQkxF IGJ1ZzUyMTk5IChhIElOVCBOT1QgTlVMTCwKK2IgQ0hBUigxMjUpIENIQVJBQ1RFUiBTRVQgdXRm MzIgQ09MTEFURSB1dGYzMl9iaW4gTk9UIE5VTEwKKylFTkdJTkU9SW5ub0RCOworQ1JFQVRFIFVO SVFVRSBJTkRFWCBpZHggT04gYnVnNTIxOTkoYSk7CitEUk9QIFRBQkxFIGJ1ZzUyMTk5OwoKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvZGF0YS9kYXRhMHR5cGUuYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9kYXRhL2RhdGEwdHlwZS5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNs ZS5jb20tMjAxMDA2MjgxMjUyMjQtdjZtOXpzdDQ1MzJmZG9peAorKysgYi9zdG9yYWdlL2lubm9i YXNlL2RhdGEvZGF0YTB0eXBlLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2 MjkxMTMyNDgtZnZsNDhsbnpyNDR6OTRnZwpAQCAtNDksMTAgKzQ5LDggQEAgdWxpbnQKIGR0eXBl X2dldF9hdF9tb3N0X25fbWJjaGFycygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAl1 bGludAkJcHJ0eXBlLAkJLyohPCBpbjogcHJlY2lzZSB0eXBlICovCi0JdWxpbnQJCW1ibWlubGVu LAkvKiE8IGluOiBtaW5pbXVtIGxlbmd0aCBvZiBhCi0JCQkJCW11bHRpLWJ5dGUgY2hhcmFjdGVy ICovCi0JdWxpbnQJCW1ibWF4bGVuLAkvKiE8IGluOiBtYXhpbXVtIGxlbmd0aCBvZiBhCi0JCQkJ CW11bHRpLWJ5dGUgY2hhcmFjdGVyICovCisJdWxpbnQJCW1ibWlubWF4bGVuLAkvKiE8IGluOiBt aW5pbXVtIGFuZCBtYXhpbXVtIGxlbmd0aCBvZgorCQkJCQlhIG11bHRpLWJ5dGUgY2hhcmFjdGVy ICovCiAJdWxpbnQJCXByZWZpeF9sZW4sCS8qITwgaW46IGxlbmd0aCBvZiB0aGUgcmVxdWVzdGVk CiAJCQkJCXByZWZpeCwgaW4gY2hhcmFjdGVycywgbXVsdGlwbGllZCBieQogCQkJCQlkdHlwZV9n ZXRfbWJtYXhsZW4oZHR5cGUpICovCkBAIC02MCw2ICs1OCw5IEBAIGR0eXBlX2dldF9hdF9tb3N0 X25fbWJjaGFycygKIAljb25zdCBjaGFyKglzdHIpCQkvKiE8IGluOiB0aGUgc3RyaW5nIHdob3Nl IHByZWZpeAogCQkJCQlsZW5ndGggaXMgYmVpbmcgZGV0ZXJtaW5lZCAqLwogeworCXVsaW50CW1i bWlubGVuID0gREFUQV9NQk1JTkxFTihtYm1pbm1heGxlbik7CisJdWxpbnQJbWJtYXhsZW4gPSBE QVRBX01CTUFYTEVOKG1ibWlubWF4bGVuKTsKKwogCXV0X2EoZGF0YV9sZW4gIT0gVU5JVl9TUUxf TlVMTCk7CiAJdXRfYWQoIW1ibWF4bGVuIHx8ICEocHJlZml4X2xlbiAlIG1ibWF4bGVuKSk7CiAK QEAgLTE4MCw3ICsxODEsNyBAQCBkdHlwZV92YWxpZGF0ZSgKIAl9CiAKICNpZm5kZWYgVU5JVl9I T1RCQUNLVVAKLQl1dF9hKHR5cGUtPm1ibWlubGVuIDw9IHR5cGUtPm1ibWF4bGVuKTsKKwl1dF9h KGR0eXBlX2dldF9tYm1pbmxlbih0eXBlKSA8PSBkdHlwZV9nZXRfbWJtYXhsZW4odHlwZSkpOwog I2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogCiAJcmV0dXJuKFRSVUUpOwoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2RpY3QvZGljdDBtZW0uYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIw MTAwNjI4MTI1MjI0LXY2bTl6c3Q0NTMyZmRvaXgKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9kaWN0 L2RpY3QwbWVtLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MjkxMTMyNDgt ZnZsNDhsbnpyNDR6OTRnZwpAQCAtMjA2LDYgKzIwNiwzNyBAQCBkaWN0X21lbV90YWJsZV9hZGRf Y29sKAogCWRpY3RfbWVtX2ZpbGxfY29sdW1uX3N0cnVjdChjb2wsIGksIG10eXBlLCBwcnR5cGUs IGxlbik7CiB9CiAKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitUaGlzIGZ1bmN0aW9uIHBvcHVsYXRl cyBhIGRpY3RfY29sX3QgbWVtb3J5IHN0cnVjdHVyZSB3aXRoCitzdXBwbGllZCBpbmZvcm1hdGlv bi4gKi8KK1VOSVZfSU5URVJOCit2b2lkCitkaWN0X21lbV9maWxsX2NvbHVtbl9zdHJ1Y3QoCisv Kj09PT09PT09PT09PT09PT09PT09PT09PSovCisJZGljdF9jb2xfdCoJY29sdW1uLAkJLyohPCBv dXQ6IGNvbHVtbiBzdHJ1Y3QgdG8gYmUKKwkJCQkJZmlsbGVkICovCisJdWxpbnQJCWNvbF9wb3Ms CS8qITwgaW46IGNvbHVtbiBwb3NpdGlvbiAqLworCXVsaW50CQltdHlwZSwJCS8qITwgaW46IG1h aW4gZGF0YSB0eXBlICovCisJdWxpbnQJCXBydHlwZSwJCS8qITwgaW46IHByZWNpc2UgdHlwZSAq LworCXVsaW50CQljb2xfbGVuKQkvKiE8IGluOiBjb2x1bW4gbGVuZ3RoICovCit7CisjaWZuZGVm IFVOSVZfSE9UQkFDS1VQCisJdWxpbnQJbWJtaW5sZW47CisJdWxpbnQJbWJtYXhsZW47CisjZW5k aWYgLyogIVVOSVZfSE9UQkFDS1VQICovCisKKwljb2x1bW4tPmluZCA9ICh1bnNpZ25lZCBpbnQp IGNvbF9wb3M7CisJY29sdW1uLT5vcmRfcGFydCA9IDA7CisJY29sdW1uLT5tdHlwZSA9ICh1bnNp Z25lZCBpbnQpIG10eXBlOworCWNvbHVtbi0+cHJ0eXBlID0gKHVuc2lnbmVkIGludCkgcHJ0eXBl OworCWNvbHVtbi0+bGVuID0gKHVuc2lnbmVkIGludCkgY29sX2xlbjsKKyNpZm5kZWYgVU5JVl9I T1RCQUNLVVAKKyAgICAgICAgZHR5cGVfZ2V0X21ibGVuKG10eXBlLCBwcnR5cGUsICZtYm1pbmxl biwgJm1ibWF4bGVuKTsKKwlkaWN0X2NvbF9zZXRfbWJtaW5tYXhsZW4oY29sdW1uLCBtYm1pbmxl biwgbWJtYXhsZW4pOworI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLworfQorCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIENyZWF0ZXMgYW4gaW5kZXggbWVtb3J5IG9iamVjdC4KIEByZXR1cm4Jb3du OiBpbmRleCBvYmplY3QgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2hh bmRsZXIvaGFfaW5ub2RiLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5u b2RiLmNjCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMDA2MjgxMjUyMjQtdjZtOXpz dDQ1MzJmZG9peAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjI5MTEzMjQ4LWZ2bDQ4bG56cjQ0ejk0 Z2cKQEAgLTEwMzYsNiArMTAzNiw4IEBAIGlubm9iYXNlX2dldF9jc2V0X3dpZHRoKAogCWlmIChj cykgewogCQkqbWJtaW5sZW4gPSBjcy0+bWJtaW5sZW47CiAJCSptYm1heGxlbiA9IGNzLT5tYm1h eGxlbjsKKwkJdXRfYWQoKm1ibWlubGVuIDwgREFUQV9NQk1BWCk7CisJCXV0X2FkKCptYm1heGxl biA8IERBVEFfTUJNQVgpOwogCX0gZWxzZSB7CiAJCVRIRCoJdGhkID0gY3VycmVudF90aGQ7CiAK QEAgLTQ0MzMsMTUgKzQ0MzUsMTQgQEAgaGFfaW5ub2Jhc2U6OnN0b3JlX2tleV92YWxfZm9yX3Jv dygKIAkJCW1lbWNweShidWZmLCBzcmNfc3RhcnQsIHRydWVfbGVuKTsKIAkJCWJ1ZmYgKz0gdHJ1 ZV9sZW47CiAKLQkJCS8qIFBhZCB0aGUgdW51c2VkIHNwYWNlIHdpdGggc3BhY2VzLiBOb3RlIHRo YXQgbm8KLQkJCXBhZGRpbmcgaXMgZXZlciBuZWVkZWQgZm9yIFVDUy0yIGJlY2F1c2UgaW4gTXlT UUwsCi0JCQlhbGwgVUNTMiBjaGFyYWN0ZXJzIGFyZSAyIGJ5dGVzLCBhcyBNeVNRTCBkb2VzIG5v dAotCQkJc3VwcG9ydCBzdXJyb2dhdGUgcGFpcnMsIHdoaWNoIGFyZSBuZWVkZWQgdG8gcmVwcmVz ZW50Ci0JCQljaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBVKzEwMDAwIHRvIFUrMTBGRkZGLiAqLwor CQkJLyogUGFkIHRoZSB1bnVzZWQgc3BhY2Ugd2l0aCBzcGFjZXMuICovCiAKIAkJCWlmICh0cnVl X2xlbiA8IGtleV9sZW4pIHsKLQkJCQl1bGludCBwYWRfbGVuID0ga2V5X2xlbiAtIHRydWVfbGVu OwotCQkJCW1lbXNldChidWZmLCAnICcsIHBhZF9sZW4pOworCQkJCXVsaW50CXBhZF9sZW4gPSBr ZXlfbGVuIC0gdHJ1ZV9sZW47CisJCQkJdXRfYSghKHBhZF9sZW4gJSBjcy0+bWJtaW5sZW4pKTsK KworCQkJCWNzLT5jc2V0LT5maWxsKGNzLCBidWZmLCBwYWRfbGVuLAorCQkJCQkgICAgICAgMHgy MCAvKiBzcGFjZSAqLyk7CiAJCQkJYnVmZiArPSBwYWRfbGVuOwogCQkJfQogCQl9CkBAIC00NTUw LDYgKzQ1NTEsNyBAQCBidWlsZF90ZW1wbGF0ZSgKIAkvKiBOb3RlIHRoYXQgaW4gSW5ub0RCLCBp IGlzIHRoZSBjb2x1bW4gbnVtYmVyLiBNeVNRTCBjYWxscyBjb2x1bW5zCiAJJ2ZpZWxkcycuICov CiAJZm9yIChpID0gMDsgaSA8IG5fZmllbGRzOyBpKyspIHsKKwkJY29uc3QgZGljdF9jb2xfdCog Y29sID0gJmluZGV4LT50YWJsZS0+Y29sc1tpXTsKIAkJdGVtcGwgPSBwcmVidWlsdC0+bXlzcWxf dGVtcGxhdGUgKyBuX3JlcXVlc3RlZF9maWVsZHM7CiAJCWZpZWxkID0gdGFibGUtPmZpZWxkW2ld OwogCkBAIC00NTk4LDcgKzQ2MDAsNyBAQCBpbmNsdWRlX2ZpZWxkOgogCiAJCWlmIChpbmRleCA9 PSBjbHVzdF9pbmRleCkgewogCQkJdGVtcGwtPnJlY19maWVsZF9ubyA9IGRpY3RfY29sX2dldF9j bHVzdF9wb3MoCi0JCQkJJmluZGV4LT50YWJsZS0+Y29sc1tpXSwgaW5kZXgpOworCQkJCWNvbCwg aW5kZXgpOwogCQl9IGVsc2UgewogCQkJdGVtcGwtPnJlY19maWVsZF9ubyA9IGRpY3RfaW5kZXhf Z2V0X250aF9jb2xfcG9zKAogCQkJCQkJCQlpbmRleCwgaSk7CkBAIC00NjI3LDcgKzQ2MjksNyBA QCBpbmNsdWRlX2ZpZWxkOgogCQkJbXlzcWxfcHJlZml4X2xlbiA9IHRlbXBsLT5teXNxbF9jb2xf b2Zmc2V0CiAJCQkJKyB0ZW1wbC0+bXlzcWxfY29sX2xlbjsKIAkJfQotCQl0ZW1wbC0+dHlwZSA9 IGluZGV4LT50YWJsZS0+Y29sc1tpXS5tdHlwZTsKKwkJdGVtcGwtPnR5cGUgPSBjb2wtPm10eXBl OwogCQl0ZW1wbC0+bXlzcWxfdHlwZSA9ICh1bGludClmaWVsZC0+dHlwZSgpOwogCiAJCWlmICh0 ZW1wbC0+bXlzcWxfdHlwZSA9PSBEQVRBX01ZU1FMX1RSVUVfVkFSQ0hBUikgewpAQCAtNDYzNSwx MiArNDYzNywxMCBAQCBpbmNsdWRlX2ZpZWxkOgogCQkJCSgoKEZpZWxkX3ZhcnN0cmluZyopZmll bGQpLT5sZW5ndGhfYnl0ZXMpOwogCQl9CiAKLQkJdGVtcGwtPmNoYXJzZXQgPSBkdHlwZV9nZXRf Y2hhcnNldF9jb2xsKAotCQkJaW5kZXgtPnRhYmxlLT5jb2xzW2ldLnBydHlwZSk7Ci0JCXRlbXBs LT5tYm1pbmxlbiA9IGluZGV4LT50YWJsZS0+Y29sc1tpXS5tYm1pbmxlbjsKLQkJdGVtcGwtPm1i bWF4bGVuID0gaW5kZXgtPnRhYmxlLT5jb2xzW2ldLm1ibWF4bGVuOwotCQl0ZW1wbC0+aXNfdW5z aWduZWQgPSBpbmRleC0+dGFibGUtPmNvbHNbaV0ucHJ0eXBlCi0JCQkJCQkJJiBEQVRBX1VOU0lH TkVEOworCQl0ZW1wbC0+Y2hhcnNldCA9IGR0eXBlX2dldF9jaGFyc2V0X2NvbGwoY29sLT5wcnR5 cGUpOworCQl0ZW1wbC0+bWJtaW5sZW4gPSBkaWN0X2NvbF9nZXRfbWJtaW5sZW4oY29sKTsKKwkJ dGVtcGwtPm1ibWF4bGVuID0gZGljdF9jb2xfZ2V0X21ibWF4bGVuKGNvbCk7CisJCXRlbXBsLT5p c191bnNpZ25lZCA9IGNvbC0+cHJ0eXBlICYgREFUQV9VTlNJR05FRDsKIAkJaWYgKHRlbXBsLT50 eXBlID09IERBVEFfQkxPQikgewogCQkJcHJlYnVpbHQtPnRlbXBsX2NvbnRhaW5zX2Jsb2IgPSBU UlVFOwogCQl9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hh bmRsZXIwYWx0ZXIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFs dGVyLmNjCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMDA2MjgxMjUyMjQtdjZtOXpz dDQ1MzJmZG9peAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5j YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYyOTExMzI0OC1mdmw0OGxuenI0 NHo5NGdnCkBAIC05OSw4ICs5OSwxMCBAQCBpbm5vYmFzZV9jb2xfdG9fbXlzcWwoCiAjaWZkZWYg VU5JVl9ERUJVRwogCWNhc2UgREFUQV9NWVNRTDoKIAkJdXRfYWQoZmxlbiA+PSBsZW4pOwotCQl1 dF9hZChjb2wtPm1ibWF4bGVuID49IGNvbC0+bWJtaW5sZW4pOwotCQl1dF9hZChjb2wtPm1ibWF4 bGVuID4gY29sLT5tYm1pbmxlbiB8fCBmbGVuID09IGxlbik7CisJCXV0X2FkKERBVEFfTUJNQVhM RU4oY29sLT5tYm1pbm1heGxlbikKKwkJICAgICAgPj0gREFUQV9NQk1JTkxFTihjb2wtPm1ibWlu bWF4bGVuKSk7CisJCXV0X2FkKERBVEFfTUJNQVhMRU4oY29sLT5tYm1pbm1heGxlbikKKwkJICAg ICAgPiBEQVRBX01CTUlOTEVOKGNvbC0+bWJtaW5tYXhsZW4pIHx8IGZsZW4gPT0gbGVuKTsKIAkJ bWVtY3B5KGRlc3QsIGRhdGEsIGxlbik7CiAJCWJyZWFrOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwdHlwZS5oJwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvZGF0YTB0eXBlLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEw MDYyODEyNTIyNC12Nm05enN0NDUzMmZkb2l4CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9kYXRhMHR5cGUuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYyOTExMzI0 OC1mdmw0OGxuenI0NHo5NGdnCkBAIC0xNjgsNiArMTY4LDE3IEBAIFNRTCBudWxsKi8KIHN0b3Jl IHRoZSBjaGFyc2V0LWNvbGxhdGlvbiBudW1iZXI7IG9uZSBieXRlIGlzIGxlZnQgdW51c2VkLCB0 aG91Z2ggKi8KICNkZWZpbmUgREFUQV9ORVdfT1JERVJfTlVMTF9UWVBFX0JVRl9TSVpFCTYKIAor LyogTWF4aW11bSBtdWx0aS1ieXRlIGNoYXJhY3RlciBsZW5ndGggaW4gYnl0ZXMsIHBsdXMgMSAq LworI2RlZmluZSBEQVRBX01CTUFYCTUKKworLyogUGFjayBtYm1pbmxlbiwgbWJtYXhsZW4gdG8g bWJtaW5tYXhsZW4uICovCisjZGVmaW5lIERBVEFfTUJNSU5NQVhMRU4obWJtaW5sZW4sIG1ibWF4 bGVuKQlcCisJKChtYm1heGxlbikgKiBEQVRBX01CTUFYICsgKG1ibWlubGVuKSkKKy8qIEdldCBt Ym1pbmxlbiBmcm9tIG1ibWlubWF4bGVuLiAqLworI2RlZmluZSBEQVRBX01CTUlOTEVOKG1ibWlu bWF4bGVuKSBVTklWX0VYUEVDVCgoKG1ibWlubWF4bGVuKSAlIERBVEFfTUJNQVgpLCAxKQorLyog R2V0IG1ibWF4bGVuIGZyb20gbWJtaW5tYXhsZW4uICovCisjZGVmaW5lIERBVEFfTUJNQVhMRU4o bWJtaW5tYXhsZW4pICgobWJtaW5tYXhsZW4pIC8gREFUQV9NQk1BWCkKKwogI2lmbmRlZiBVTklW X0hPVEJBQ0tVUAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEdldHMgdGhlIE15U1FMIHR5cGUgY29kZSBm cm9tIGEgZHR5cGUuCkBAIC0xODcsMTAgKzE5OCw4IEBAIHVsaW50CiBkdHlwZV9nZXRfYXRfbW9z dF9uX21iY2hhcnMoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJCXBydHlw ZSwJCS8qITwgaW46IHByZWNpc2UgdHlwZSAqLwotCXVsaW50CQltYm1pbmxlbiwJLyohPCBpbjog bWluaW11bSBsZW5ndGggb2YgYQotCQkJCQltdWx0aS1ieXRlIGNoYXJhY3RlciAqLwotCXVsaW50 CQltYm1heGxlbiwJLyohPCBpbjogbWF4aW11bSBsZW5ndGggb2YgYQotCQkJCQltdWx0aS1ieXRl IGNoYXJhY3RlciAqLworCXVsaW50CQltYm1pbm1heGxlbiwJLyohPCBpbjogbWluaW11bSBhbmQg bWF4aW11bSBsZW5ndGggb2YKKwkJCQkJYSBtdWx0aS1ieXRlIGNoYXJhY3RlciAqLwogCXVsaW50 CQlwcmVmaXhfbGVuLAkvKiE8IGluOiBsZW5ndGggb2YgdGhlIHJlcXVlc3RlZAogCQkJCQlwcmVm aXgsIGluIGNoYXJhY3RlcnMsIG11bHRpcGxpZWQgYnkKIAkJCQkJZHR5cGVfZ2V0X21ibWF4bGVu KGR0eXBlKSAqLwpAQCAtMzM1LDYgKzM0NCwxOSBAQCBkdHlwZV9nZXRfbWJtYXhsZW4oCiAvKj09 PT09PT09PT09PT09PSovCiAJY29uc3QgZHR5cGVfdCoJdHlwZSk7CS8qITwgaW46IHR5cGUgKi8K IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCitTZXRzIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGxlbmd0aCBv ZiBhIGNoYXJhY3RlciwgaW4gYnl0ZXMuICovCitVTklWX0lOTElORQordm9pZAorZHR5cGVfc2V0 X21ibWlubWF4bGVuKAorLyo9PT09PT09PT09PT09PT09PT0qLworCWR0eXBlX3QqCXR5cGUsCQkv KiE8IGluL291dDogdHlwZSAqLworCXVsaW50CQltYm1pbmxlbiwJLyohPCBpbjogbWluaW11bSBs ZW5ndGggb2YgYSBjaGFyLAorCQkJCQlpbiBieXRlcywgb3IgMCBpZiB0aGlzIGlzIG5vdAorCQkJ CQlhIGNoYXJhY3RlciB0eXBlICovCisJdWxpbnQJCW1ibWF4bGVuKTsJLyohPCBpbjogbWF4aW11 bSBsZW5ndGggb2YgYSBjaGFyLAorCQkJCQlpbiBieXRlcywgb3IgMCBpZiB0aGlzIGlzIG5vdAor CQkJCQlhIGNoYXJhY3RlciB0eXBlICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0aGUgcGFk ZGluZyBjaGFyYWN0ZXIgY29kZSBmb3IgdGhlIHR5cGUuCiBAcmV0dXJuCXBhZGRpbmcgY2hhcmFj dGVyIGNvZGUsIG9yIFVMSU5UX1VOREVGSU5FRCBpZiBubyBwYWRkaW5nIHNwZWNpZmllZCAqLwog VU5JVl9JTkxJTkUKQEAgLTM1NCw4ICszNzYsOCBAQCBkdHlwZV9nZXRfZml4ZWRfc2l6ZV9sb3co CiAJdWxpbnQJbXR5cGUsCQkvKiE8IGluOiBtYWluIHR5cGUgKi8KIAl1bGludAlwcnR5cGUsCQkv KiE8IGluOiBwcmVjaXNlIHR5cGUgKi8KIAl1bGludAlsZW4sCQkvKiE8IGluOiBsZW5ndGggKi8K LQl1bGludAltYm1pbmxlbiwJLyohPCBpbjogbWluaW11bSBsZW5ndGggb2YgYSBtdWx0aWJ5dGUg Y2hhciAqLwotCXVsaW50CW1ibWF4bGVuLAkvKiE8IGluOiBtYXhpbXVtIGxlbmd0aCBvZiBhIG11 bHRpYnl0ZSBjaGFyICovCisJdWxpbnQJbWJtaW5tYXhsZW4sCS8qITwgaW46IG1pbmltdW0gYW5k IG1heGltdW0gbGVuZ3RoIG9mIGEKKwkJCQltdWx0aWJ5dGUgY2hhcmFjdGVyLCBpbiBieXRlcyAq LwogCXVsaW50CWNvbXApOwkJLyohPCBpbjogbm9uemVybz1ST1dfRk9STUFUPUNPTVBBQ1QgICov CiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC0zNjgsOCAr MzkwLDggQEAgZHR5cGVfZ2V0X21pbl9zaXplX2xvdygKIAl1bGludAltdHlwZSwJCS8qITwgaW46 IG1haW4gdHlwZSAqLwogCXVsaW50CXBydHlwZSwJCS8qITwgaW46IHByZWNpc2UgdHlwZSAqLwog CXVsaW50CWxlbiwJCS8qITwgaW46IGxlbmd0aCAqLwotCXVsaW50CW1ibWlubGVuLAkvKiE8IGlu OiBtaW5pbXVtIGxlbmd0aCBvZiBhIG11bHRpYnl0ZSBjaGFyICovCi0JdWxpbnQJbWJtYXhsZW4p OwkvKiE8IGluOiBtYXhpbXVtIGxlbmd0aCBvZiBhIG11bHRpYnl0ZSBjaGFyICovCisJdWxpbnQJ bWJtaW5tYXhsZW4pOwkvKiE8IGluOiBtaW5pbXVtIGFuZCBtYXhpbXVtIGxlbmd0aCBvZiBhCisJ CQkJbXVsdGlieXRlIGNoYXJhY3RlciAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmV0dXJucyB0 aGUgbWF4aW11bSBzaXplIG9mIGEgZGF0YSB0eXBlLiBOb3RlOiB0eXBlcyBpbiBzeXN0ZW0gdGFi bGVzIG1heSBiZQogaW5jb21wbGV0ZSBhbmQgcmV0dXJuIGluY29ycmVjdCBpbmZvcm1hdGlvbi4K QEAgLTQ3MiwxMCArNDk0LDExIEBAIHN0cnVjdCBkdHlwZV9zdHJ1Y3R7CiAJCQkJCXRoZSBzdHJp bmcsIE15U1FMIHVzZXMgMSBvciAyCiAJCQkJCWJ5dGVzIHRvIHN0b3JlIHRoZSBzdHJpbmcgbGVu Z3RoKSAqLwogI2lmbmRlZiBVTklWX0hPVEJBQ0tVUAotCXVuc2lnbmVkCW1ibWlubGVuOjI7CS8q ITwgbWluaW11bSBsZW5ndGggb2YgYQotCQkJCQljaGFyYWN0ZXIsIGluIGJ5dGVzICovCi0JdW5z aWduZWQJbWJtYXhsZW46MzsJLyohPCBtYXhpbXVtIGxlbmd0aCBvZiBhCi0JCQkJCWNoYXJhY3Rl ciwgaW4gYnl0ZXMgKi8KKwl1bnNpZ25lZAltYm1pbm1heGxlbjo1OwkvKiE8IG1pbmltdW0gYW5k IG1heGltdW0gbGVuZ3RoIG9mIGEKKwkJCQkJY2hhcmFjdGVyLCBpbiBieXRlczsKKwkJCQkJREFU QV9NQk1JTk1BWExFTihtYm1pbmxlbixtYm1heGxlbik7CisJCQkJCW1ibWlubGVuPURBVEFfTUJN SU5MRU4obWJtaW5tYXhsZW4pOworCQkJCQltYm1heGxlbj1EQVRBX01CTUlOTEVOKG1ibWlubWF4 bGVuKSAqLwogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogfTsKIAoKPT09IG1vZGlmaWVk IGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMHR5cGUuaWMnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMHR5cGUuaWMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xl LmNvbS0yMDEwMDYyODEyNTIyNC12Nm05enN0NDUzMmZkb2l4CisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9kYXRhMHR5cGUuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MDA2MjkxMTMyNDgtZnZsNDhsbnpyNDR6OTRnZwpAQCAtOTMsMTQgKzkzLDM1IEBAIGR0eXBlX2dl dF9tYmxlbigKIAkJaW5ub2Jhc2VfZ2V0X2NzZXRfd2lkdGgoZHR5cGVfZ2V0X2NoYXJzZXRfY29s bChwcnR5cGUpLAogCQkJCQltYm1pbmxlbiwgbWJtYXhsZW4pOwogCQl1dF9hZCgqbWJtaW5sZW4g PD0gKm1ibWF4bGVuKTsKLQkJdXRfYWQoKm1ibWlubGVuIDw9IDIpOyAvKiBtYm1pbmxlbiBpbiBk dHlwZV90IGlzIDAuLjMgKi8KLQkJdXRfYWQoKm1ibWF4bGVuIDwgMSA8PCAzKTsgLyogbWJtYXhs ZW4gaW4gZHR5cGVfdCBpcyAwLi43ICovCisJCXV0X2FkKCptYm1pbmxlbiA8IERBVEFfTUJNQVgp OworCQl1dF9hZCgqbWJtYXhsZW4gPCBEQVRBX01CTUFYKTsKIAl9IGVsc2UgewogCQkqbWJtaW5s ZW4gPSAqbWJtYXhsZW4gPSAwOwogCX0KIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1NldHMgdGhl IG1pbmltdW0gYW5kIG1heGltdW0gbGVuZ3RoIG9mIGEgY2hhcmFjdGVyLCBpbiBieXRlcy4gKi8K K1VOSVZfSU5MSU5FCit2b2lkCitkdHlwZV9zZXRfbWJtaW5tYXhsZW4oCisvKj09PT09PT09PT09 PT09PT09PSovCisJZHR5cGVfdCoJdHlwZSwJCS8qITwgaW4vb3V0OiB0eXBlICovCisJdWxpbnQJ CW1ibWlubGVuLAkvKiE8IGluOiBtaW5pbXVtIGxlbmd0aCBvZiBhIGNoYXIsCisJCQkJCWluIGJ5 dGVzLCBvciAwIGlmIHRoaXMgaXMgbm90CisJCQkJCWEgY2hhcmFjdGVyIHR5cGUgKi8KKwl1bGlu dAkJbWJtYXhsZW4pCS8qITwgaW46IG1heGltdW0gbGVuZ3RoIG9mIGEgY2hhciwKKwkJCQkJaW4g Ynl0ZXMsIG9yIDAgaWYgdGhpcyBpcyBub3QKKwkJCQkJYSBjaGFyYWN0ZXIgdHlwZSAqLworewor CXV0X2FkKG1ibWlubGVuIDwgREFUQV9NQk1BWCk7CisJdXRfYWQobWJtYXhsZW4gPCBEQVRBX01C TUFYKTsKKwl1dF9hZChtYm1pbmxlbiA8PSBtYm1heGxlbik7CisKKwl0eXBlLT5tYm1pbm1heGxl biA9IERBVEFfTUJNSU5NQVhMRU4obWJtaW5sZW4sIG1ibWF4bGVuKTsKK30KKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIENvbXB1dGUgdGhlIG1ibWlubGVuIGFuZCBtYm1heGxlbiBtZW1iZXJzIG9mIGEg ZGF0YSB0eXBlIHN0cnVjdHVyZS4gKi8KIFVOSVZfSU5MSU5FCiB2b2lkCkBAIC0xMTIsOCArMTMz LDcgQEAgZHR5cGVfc2V0X21ibGVuKAogCXVsaW50CW1ibWF4bGVuOwogCiAJZHR5cGVfZ2V0X21i bGVuKHR5cGUtPm10eXBlLCB0eXBlLT5wcnR5cGUsICZtYm1pbmxlbiwgJm1ibWF4bGVuKTsKLQl0 eXBlLT5tYm1pbmxlbiA9IG1ibWlubGVuOwotCXR5cGUtPm1ibWF4bGVuID0gbWJtYXhsZW47CisJ ZHR5cGVfc2V0X21ibWlubWF4bGVuKHR5cGUsIG1ibWlubGVuLCBtYm1heGxlbik7CiAKIAl1dF9h ZChkdHlwZV92YWxpZGF0ZSh0eXBlKSk7CiB9CkBAIC0yMTAsNyArMjMwLDcgQEAgZHR5cGVfZ2V0 X21ibWlubGVuKAogCWNvbnN0IGR0eXBlX3QqCXR5cGUpCS8qITwgaW46IHR5cGUgKi8KIHsKIAl1 dF9hZCh0eXBlKTsKLQlyZXR1cm4odHlwZS0+bWJtaW5sZW4pOworCXJldHVybihEQVRBX01CTUlO TEVOKHR5cGUtPm1ibWlubWF4bGVuKSk7CiB9CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0aGUg bWF4aW11bSBsZW5ndGggb2YgYSBjaGFyYWN0ZXIsIGluIGJ5dGVzLgpAQCAtMjIzLDcgKzI0Myw3 IEBAIGR0eXBlX2dldF9tYm1heGxlbigKIAljb25zdCBkdHlwZV90Kgl0eXBlKQkvKiE8IGluOiB0 eXBlICovCiB7CiAJdXRfYWQodHlwZSk7Ci0JcmV0dXJuKHR5cGUtPm1ibWF4bGVuKTsKKwlyZXR1 cm4oREFUQV9NQk1BWExFTih0eXBlLT5tYm1pbm1heGxlbikpOwogfQogCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgpAQCAtNDA0LDggKzQyNCw4IEBAIGR0eXBlX2dldF9maXhlZF9zaXplX2xvdygKIAl1bGlu dAltdHlwZSwJCS8qITwgaW46IG1haW4gdHlwZSAqLwogCXVsaW50CXBydHlwZSwJCS8qITwgaW46 IHByZWNpc2UgdHlwZSAqLwogCXVsaW50CWxlbiwJCS8qITwgaW46IGxlbmd0aCAqLwotCXVsaW50 CW1ibWlubGVuLAkvKiE8IGluOiBtaW5pbXVtIGxlbmd0aCBvZiBhIG11bHRpYnl0ZSBjaGFyICov Ci0JdWxpbnQJbWJtYXhsZW4sCS8qITwgaW46IG1heGltdW0gbGVuZ3RoIG9mIGEgbXVsdGlieXRl IGNoYXIgKi8KKwl1bGludAltYm1pbm1heGxlbiwJLyohPCBpbjogbWluaW11bSBhbmQgbWF4aW11 bSBsZW5ndGggb2YKKwkJCQlhIG11bHRpYnl0ZSBjaGFyYWN0ZXIsIGluIGJ5dGVzICovCiAJdWxp bnQJY29tcCkJCS8qITwgaW46IG5vbnplcm89Uk9XX0ZPUk1BVD1DT01QQUNUICAqLwogewogCXN3 aXRjaCAobXR5cGUpIHsKQEAgLTQ1Myw4ICs0NzMsOSBAQCBkdHlwZV9nZXRfZml4ZWRfc2l6ZV9s b3coCiAJCQkJZHR5cGVfZ2V0X2NoYXJzZXRfY29sbChwcnR5cGUpLAogCQkJCSZpX21ibWlubGVu LCAmaV9tYm1heGxlbik7CiAKLQkJCWlmIChVTklWX1VOTElLRUxZKG1ibWlubGVuICE9IGlfbWJt aW5sZW4pCi0JCQkgICAgfHwgVU5JVl9VTkxJS0VMWShtYm1heGxlbiAhPSBpX21ibWF4bGVuKSkg eworCQkJaWYgKFVOSVZfVU5MSUtFTFkKKwkJCSAgICAoREFUQV9NQk1JTk1BWExFTihpX21ibWlu bGVuLCBpX21ibWF4bGVuKQorCQkJICAgICAhPSBtYm1pbm1heGxlbikpIHsKIAogCQkJCXV0X3By aW50X3RpbWVzdGFtcChzdGRlcnIpOwogCQkJCWZwcmludGYoc3RkZXJyLCAiICBJbm5vREI6ICIK QEAgLTQ2NCwxMCArNDg1LDEwIEBAIGR0eXBlX2dldF9maXhlZF9zaXplX2xvdygKIAkJCQkJInR5 cGUtPm1ibWF4bGVuPSVsdVxuIiwKIAkJCQkJKHVsb25nKSBpX21ibWlubGVuLAogCQkJCQkodWxv bmcpIGlfbWJtYXhsZW4sCi0JCQkJCSh1bG9uZykgbWJtaW5sZW4sCi0JCQkJCSh1bG9uZykgbWJt YXhsZW4pOworCQkJCQkodWxvbmcpIERBVEFfTUJNSU5MRU4obWJtaW5tYXhsZW4pLAorCQkJCQko dWxvbmcpIERBVEFfTUJNQVhMRU4obWJtaW5tYXhsZW4pKTsKIAkJCX0KLQkJCWlmIChtYm1pbmxl biA9PSBtYm1heGxlbikgeworCQkJaWYgKGlfbWJtaW5sZW4gPT0gaV9tYm1heGxlbikgewogCQkJ CXJldHVybihsZW4pOwogCQkJfQogCQl9CkBAIC00OTksOCArNTIwLDggQEAgZHR5cGVfZ2V0X21p bl9zaXplX2xvdygKIAl1bGludAltdHlwZSwJCS8qITwgaW46IG1haW4gdHlwZSAqLwogCXVsaW50 CXBydHlwZSwJCS8qITwgaW46IHByZWNpc2UgdHlwZSAqLwogCXVsaW50CWxlbiwJCS8qITwgaW46 IGxlbmd0aCAqLwotCXVsaW50CW1ibWlubGVuLAkvKiE8IGluOiBtaW5pbXVtIGxlbmd0aCBvZiBh IG11bHRpYnl0ZSBjaGFyICovCi0JdWxpbnQJbWJtYXhsZW4pCS8qITwgaW46IG1heGltdW0gbGVu Z3RoIG9mIGEgbXVsdGlieXRlIGNoYXIgKi8KKwl1bGludAltYm1pbm1heGxlbikJLyohPCBpbjog bWluaW11bSBhbmQgbWF4aW11bSBsZW5ndGggb2YgYQorCQkJCW11bHRpLWJ5dGUgY2hhcmFjdGVy ICovCiB7CiAJc3dpdGNoIChtdHlwZSkgewogCWNhc2UgREFUQV9TWVM6CkBAIC01MjcsMTQgKzU0 OCwyMiBAQCBkdHlwZV9nZXRfbWluX3NpemVfbG93KAogCWNhc2UgREFUQV9ET1VCTEU6CiAJCXJl dHVybihsZW4pOwogCWNhc2UgREFUQV9NWVNRTDoKLQkJaWYgKChwcnR5cGUgJiBEQVRBX0JJTkFS WV9UWVBFKSB8fCBtYm1pbmxlbiA9PSBtYm1heGxlbikgeworCQlpZiAocHJ0eXBlICYgREFUQV9C SU5BUllfVFlQRSkgewogCQkJcmV0dXJuKGxlbik7CisJCX0gZWxzZSB7CisJCQl1bGludAltYm1p bmxlbiA9IERBVEFfTUJNSU5MRU4obWJtaW5tYXhsZW4pOworCQkJdWxpbnQJbWJtYXhsZW4gPSBE QVRBX01CTUFYTEVOKG1ibWlubWF4bGVuKTsKKworCQkJaWYgKG1ibWlubGVuID09IG1ibWF4bGVu KSB7CisJCQkJcmV0dXJuKGxlbik7CisJCQl9CisKKwkJCS8qIHRoaXMgaXMgYSB2YXJpYWJsZS1s ZW5ndGggY2hhcmFjdGVyIHNldCAqLworCQkJdXRfYShtYm1pbmxlbiA+IDApOworCQkJdXRfYSht Ym1heGxlbiA+IG1ibWlubGVuKTsKKwkJCXV0X2EobGVuICUgbWJtYXhsZW4gPT0gMCk7CisJCQly ZXR1cm4obGVuICogbWJtaW5sZW4gLyBtYm1heGxlbik7CiAJCX0KLQkJLyogdGhpcyBpcyBhIHZh cmlhYmxlLWxlbmd0aCBjaGFyYWN0ZXIgc2V0ICovCi0JCXV0X2EobWJtaW5sZW4gPiAwKTsKLQkJ dXRfYShtYm1heGxlbiA+IG1ibWlubGVuKTsKLQkJdXRfYShsZW4gJSBtYm1heGxlbiA9PSAwKTsK LQkJcmV0dXJuKGxlbiAqIG1ibWlubGVuIC8gbWJtYXhsZW4pOwogCWNhc2UgREFUQV9WQVJDSEFS OgogCWNhc2UgREFUQV9CSU5BUlk6CiAJY2FzZSBEQVRBX0RFQ0lNQUw6CkBAIC01OTUsOSArNjI0 LDkgQEAgZHR5cGVfZ2V0X3NxbF9udWxsX3NpemUoCiB7CiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQ CiAJcmV0dXJuKGR0eXBlX2dldF9maXhlZF9zaXplX2xvdyh0eXBlLT5tdHlwZSwgdHlwZS0+cHJ0 eXBlLCB0eXBlLT5sZW4sCi0JCQkJCXR5cGUtPm1ibWlubGVuLCB0eXBlLT5tYm1heGxlbiwgY29t cCkpOworCQkJCQl0eXBlLT5tYm1pbm1heGxlbiwgY29tcCkpOwogI2Vsc2UgLyogIVVOSVZfSE9U QkFDS1VQICovCiAJcmV0dXJuKGR0eXBlX2dldF9maXhlZF9zaXplX2xvdyh0eXBlLT5tdHlwZSwg dHlwZS0+cHJ0eXBlLCB0eXBlLT5sZW4sCi0JCQkJCTAsIDAsIDApKTsKKwkJCQkJMCwgMCkpOwog I2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGRpY3QuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2RpY3QwZGljdC5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMDA2Mjgx MjUyMjQtdjZtOXpzdDQ1MzJmZG9peAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGlj dDBkaWN0LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MjkxMTMyNDgtZnZs NDhsbnpyNDR6OTRnZwpAQCAtMTAyLDYgKzEwMiwzMyBAQCB2b2lkCiBkaWN0X2xvYWRfc3BhY2Vf aWRfbGlzdCh2b2lkKTsKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PSovCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgorR2V0cyB0aGUgbWluaW11bSBudW1iZXIgb2YgYnl0ZXMgcGVyIGNoYXJhY3Rlci4K K0ByZXR1cm4gbWluaW11bSBtdWx0aS1ieXRlIGNoYXIgc2l6ZSwgaW4gYnl0ZXMgKi8KK1VOSVZf SU5MSU5FCit1bGludAorZGljdF9jb2xfZ2V0X21ibWlubGVuKAorLyo9PT09PT09PT09PT09PT09 PT0qLworCWNvbnN0IGRpY3RfY29sX3QqCWNvbCk7CS8qITwgaW46IGNvbHVtbiAqLworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKK0dldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHBlciBjaGFyYWN0 ZXIuCitAcmV0dXJuIG1heGltdW0gbXVsdGktYnl0ZSBjaGFyIHNpemUsIGluIGJ5dGVzICovCitV TklWX0lOTElORQordWxpbnQKK2RpY3RfY29sX2dldF9tYm1heGxlbigKKy8qPT09PT09PT09PT09 PT09PT09Ki8KKwljb25zdCBkaWN0X2NvbF90Kgljb2wpOwkvKiE8IGluOiBjb2x1bW4gKi8KKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCitTZXRzIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiBi eXRlcyBwZXIgY2hhcmFjdGVyLiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2RpY3RfY29sX3NldF9t Ym1pbm1heGxlbigKKy8qPT09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2NvbF90Kgljb2ws CQkvKiE8IGluL291dDogY29sdW1uICovCisJdWxpbnQJCW1ibWlubGVuLAkvKiE8IGluOiBtaW5p bXVtIG11bHRpLWJ5dGUKKwkJCQkJY2hhcmFjdGVyIHNpemUsIGluIGJ5dGVzICovCisJdWxpbnQJ CW1ibWF4bGVuKTsJLyohPCBpbjogbWluaW11bSBtdWx0aS1ieXRlCisJCQkJCWNoYXJhY3RlciBz aXplLCBpbiBieXRlcyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEdldHMgdGhlIGNvbHVtbiBkYXRh IHR5cGUuICovCiBVTklWX0lOTElORQogdm9pZAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGRpY3QuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9kaWN0MGRpY3QuaWMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMDYyODEy NTIyNC12Nm05enN0NDUzMmZkb2l4CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0 MGRpY3QuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MjkxMTMyNDgtZnZs NDhsbnpyNDR6OTRnZwpAQCAtMjksNiArMjksNDYgQEAgQ3JlYXRlZCAxLzgvMTk5NiBIZWlra2kg VHV1cmkKICNpbmNsdWRlICJyZW0wdHlwZXMuaCIKIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0dldHMg dGhlIG1pbmltdW0gbnVtYmVyIG9mIGJ5dGVzIHBlciBjaGFyYWN0ZXIuCitAcmV0dXJuIG1pbmlt dW0gbXVsdGktYnl0ZSBjaGFyIHNpemUsIGluIGJ5dGVzICovCitVTklWX0lOTElORQordWxpbnQK K2RpY3RfY29sX2dldF9tYm1pbmxlbigKKy8qPT09PT09PT09PT09PT09PT09Ki8KKwljb25zdCBk aWN0X2NvbF90Kgljb2wpCS8qITwgaW46IGNvbHVtbiAqLworeworCXJldHVybihEQVRBX01CTUlO TEVOKGNvbC0+bWJtaW5tYXhsZW4pKTsKK30KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitHZXRzIHRoZSBt YXhpbXVtIG51bWJlciBvZiBieXRlcyBwZXIgY2hhcmFjdGVyLgorQHJldHVybiBtYXhpbXVtIG11 bHRpLWJ5dGUgY2hhciBzaXplLCBpbiBieXRlcyAqLworVU5JVl9JTkxJTkUKK3VsaW50CitkaWN0 X2NvbF9nZXRfbWJtYXhsZW4oCisvKj09PT09PT09PT09PT09PT09PSovCisJY29uc3QgZGljdF9j b2xfdCoJY29sKQkvKiE8IGluOiBjb2x1bW4gKi8KK3sKKwlyZXR1cm4oREFUQV9NQk1BWExFTihj b2wtPm1ibWlubWF4bGVuKSk7Cit9CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorU2V0cyB0aGUgbWluaW11 bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgcGVyIGNoYXJhY3Rlci4gKi8KK1VOSVZfSU5M SU5FCit2b2lkCitkaWN0X2NvbF9zZXRfbWJtaW5tYXhsZW4oCisvKj09PT09PT09PT09PT09PT09 PT09PSovCisJZGljdF9jb2xfdCoJY29sLAkJLyohPCBpbi9vdXQ6IGNvbHVtbiAqLworCXVsaW50 CQltYm1pbmxlbiwJLyohPCBpbjogbWluaW11bSBtdWx0aS1ieXRlCisJCQkJCWNoYXJhY3RlciBz aXplLCBpbiBieXRlcyAqLworCXVsaW50CQltYm1heGxlbikJLyohPCBpbjogbWluaW11bSBtdWx0 aS1ieXRlCisJCQkJCWNoYXJhY3RlciBzaXplLCBpbiBieXRlcyAqLworeworCXV0X2FkKG1ibWlu bGVuIDwgREFUQV9NQk1BWCk7CisJdXRfYWQobWJtYXhsZW4gPCBEQVRBX01CTUFYKTsKKwl1dF9h ZChtYm1pbmxlbiA8PSBtYm1heGxlbik7CisKKwljb2wtPm1ibWlubWF4bGVuID0gREFUQV9NQk1J Tk1BWExFTihtYm1pbmxlbiwgbWJtYXhsZW4pOworfQorLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEdldHMg dGhlIGNvbHVtbiBkYXRhIHR5cGUuICovCiBVTklWX0lOTElORQogdm9pZApAQCAtNDIsOCArODIs NyBAQCBkaWN0X2NvbF9jb3B5X3R5cGUoCiAJdHlwZS0+bXR5cGUgPSBjb2wtPm10eXBlOwogCXR5 cGUtPnBydHlwZSA9IGNvbC0+cHJ0eXBlOwogCXR5cGUtPmxlbiA9IGNvbC0+bGVuOwotCXR5cGUt Pm1ibWlubGVuID0gY29sLT5tYm1pbmxlbjsKLQl0eXBlLT5tYm1heGxlbiA9IGNvbC0+bWJtYXhs ZW47CisJdHlwZS0+bWJtaW5tYXhsZW4gPSBjb2wtPm1ibWlubWF4bGVuOwogfQogI2VuZGlmIC8q ICFVTklWX0hPVEJBQ0tVUCAqLwogCkBAIC02NSw4ICsxMDQsNyBAQCBkaWN0X2NvbF90eXBlX2Fz c2VydF9lcXVhbCgKIAl1dF9hZChjb2wtPnBydHlwZSA9PSB0eXBlLT5wcnR5cGUpOwogCXV0X2Fk KGNvbC0+bGVuID09IHR5cGUtPmxlbik7CiAjIGlmbmRlZiBVTklWX0hPVEJBQ0tVUAotCXV0X2Fk KGNvbC0+bWJtaW5sZW4gPT0gdHlwZS0+bWJtaW5sZW4pOwotCXV0X2FkKGNvbC0+bWJtYXhsZW4g PT0gdHlwZS0+bWJtYXhsZW4pOworCXV0X2FkKGNvbC0+bWJtaW5tYXhsZW4gPT0gdHlwZS0+bWJt aW5tYXhsZW4pOwogIyBlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8KIAogCXJldHVybihUUlVF KTsKQEAgLTg0LDcgKzEyMiw3IEBAIGRpY3RfY29sX2dldF9taW5fc2l6ZSgKIAljb25zdCBkaWN0 X2NvbF90Kgljb2wpCS8qITwgaW46IGNvbHVtbiAqLwogewogCXJldHVybihkdHlwZV9nZXRfbWlu X3NpemVfbG93KGNvbC0+bXR5cGUsIGNvbC0+cHJ0eXBlLCBjb2wtPmxlbiwKLQkJCQkgICAgICBj b2wtPm1ibWlubGVuLCBjb2wtPm1ibWF4bGVuKSk7CisJCQkJICAgICAgY29sLT5tYm1pbm1heGxl bikpOwogfQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmV0dXJucyB0aGUgbWF4aW11bSBzaXplIG9m IHRoZSBjb2x1bW4uCkBAIC0xMDksNyArMTQ3LDcgQEAgZGljdF9jb2xfZ2V0X2ZpeGVkX3NpemUo CiAJdWxpbnQJCQljb21wKQkvKiE8IGluOiBub256ZXJvPVJPV19GT1JNQVQ9Q09NUEFDVCAgKi8K IHsKIAlyZXR1cm4oZHR5cGVfZ2V0X2ZpeGVkX3NpemVfbG93KGNvbC0+bXR5cGUsIGNvbC0+cHJ0 eXBlLCBjb2wtPmxlbiwKLQkJCQkJY29sLT5tYm1pbmxlbiwgY29sLT5tYm1heGxlbiwgY29tcCkp OworCQkJCQljb2wtPm1ibWlubWF4bGVuLCBjb21wKSk7CiB9CiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBSZXR1cm5zIHRoZSBST1dfRk9STUFUPVJFRFVOREFOVCBzdG9yZWQgU1FMIE5VTEwgc2l6ZSBv ZiBhIGNvbHVtbi4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv ZGljdDBtZW0uaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgJcmV2 aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMDYyODEyNTIyNC12Nm05enN0NDUzMmZkb2l4 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MG1lbS5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTAwNjI5MTEzMjQ4LWZ2bDQ4bG56cjQ0ejk0Z2cKQEAgLTE1MSw5 ICsxNTEsOSBAQCBkaWN0X21lbV90YWJsZV9hZGRfY29sKAogCXVsaW50CQlwcnR5cGUsCS8qITwg aW46IHByZWNpc2UgdHlwZSAqLwogCXVsaW50CQlsZW4pOwkvKiE8IGluOiBwcmVjaXNpb24gKi8K IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgotVGhpcyBmdW5jdGlvbiBwb3BsdWxhdGVzIGEgZGljdF9jb2xf dCBtZW1vcnkgc3RydWN0dXJlIHdpdGgKK1RoaXMgZnVuY3Rpb24gcG9wdWxhdGVzIGEgZGljdF9j b2xfdCBtZW1vcnkgc3RydWN0dXJlIHdpdGgKIHN1cHBsaWVkIGluZm9ybWF0aW9uLiAqLwotVU5J Vl9JTkxJTkUKK1VOSVZfSU5URVJOCiB2b2lkCiBkaWN0X21lbV9maWxsX2NvbHVtbl9zdHJ1Y3Qo CiAvKj09PT09PT09PT09PT09PT09PT09PT09PSovCkBAIC0xNjIsNyArMTYyLDcgQEAgZGljdF9t ZW1fZmlsbF9jb2x1bW5fc3RydWN0KAogCXVsaW50CQljb2xfcG9zLAkvKiE8IGluOiBjb2x1bW4g cG9zaXRpb24gKi8KIAl1bGludAkJbXR5cGUsCQkvKiE8IGluOiBtYWluIGRhdGEgdHlwZSAqLwog CXVsaW50CQlwcnR5cGUsCQkvKiE8IGluOiBwcmVjaXNlIHR5cGUgKi8KLQl1bGludAkJY29sX2xl bik7CS8qITwgaW46IGNvbHVtbiBsZW5naHQgKi8KKwl1bGludAkJY29sX2xlbik7CS8qITwgaW46 IGNvbHVtbiBsZW5ndGggKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogVGhpcyBmdW5jdGlvbiBwb3Bs dWxhdGVzIGEgZGljdF9pbmRleF90IGluZGV4IG1lbW9yeSBzdHJ1Y3R1cmUgd2l0aAogc3VwcGxp ZWQgaW5mb3JtYXRpb24uICovCkBAIC0yNDksMTAgKzI0OSwxMSBAQCBzdHJ1Y3QgZGljdF9jb2xf c3RydWN0ewogCQkJCQl0aGUgc3RyaW5nLCBNeVNRTCB1c2VzIDEgb3IgMgogCQkJCQlieXRlcyB0 byBzdG9yZSB0aGUgc3RyaW5nIGxlbmd0aCkgKi8KIAotCXVuc2lnbmVkCW1ibWlubGVuOjI7CS8q ITwgbWluaW11bSBsZW5ndGggb2YgYQotCQkJCQljaGFyYWN0ZXIsIGluIGJ5dGVzICovCi0JdW5z aWduZWQJbWJtYXhsZW46MzsJLyohPCBtYXhpbXVtIGxlbmd0aCBvZiBhCi0JCQkJCWNoYXJhY3Rl ciwgaW4gYnl0ZXMgKi8KKwl1bnNpZ25lZAltYm1pbm1heGxlbjo1OwkvKiE8IG1pbmltdW0gYW5k IG1heGltdW0gbGVuZ3RoIG9mIGEKKwkJCQkJY2hhcmFjdGVyLCBpbiBieXRlczsKKwkJCQkJREFU QV9NQk1JTk1BWExFTihtYm1pbmxlbixtYm1heGxlbik7CisJCQkJCW1ibWlubGVuPURBVEFfTUJN SU5MRU4obWJtaW5tYXhsZW4pOworCQkJCQltYm1heGxlbj1EQVRBX01CTUlOTEVOKG1ibWlubWF4 bGVuKSAqLwogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAJLyogRW5kIG9mIGRlZmluaXRp b25zIGNvcGllZCBmcm9tIGR0eXBlX3QgKi8KIAkvKiBAfSAqLwoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MG1lbS5pYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL2RpY3QwbWVtLmljCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAx MDA2MjgxMjUyMjQtdjZtOXpzdDQ1MzJmZG9peAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvZGljdDBtZW0uaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MjkxMTMy NDgtZnZsNDhsbnpyNDR6OTRnZwpAQCAtNzAsMzUgKzcwLDMgQEAgZGljdF9tZW1fZmlsbF9pbmRl eF9zdHJ1Y3QoCiAgICAgICAgIGluZGV4LT5tYWdpY19uID0gRElDVF9JTkRFWF9NQUdJQ19OOwog I2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIH0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1UaGlzIGZ1 bmN0aW9uIHBvcGx1bGF0ZXMgYSBkaWN0X2NvbF90IG1lbW9yeSBzdHJ1Y3R1cmUgd2l0aAotc3Vw cGxpZWQgaW5mb3JtYXRpb24uICovCi1VTklWX0lOTElORQotdm9pZAotZGljdF9tZW1fZmlsbF9j b2x1bW5fc3RydWN0KAotLyo9PT09PT09PT09PT09PT09PT09PT09PT0qLwotCWRpY3RfY29sX3Qq CWNvbHVtbiwJCS8qITwgb3V0OiBjb2x1bW4gc3RydWN0IHRvIGJlCi0JCQkJCWZpbGxlZCAqLwot CXVsaW50CQljb2xfcG9zLAkvKiE8IGluOiBjb2x1bW4gcG9zaXRpb24gKi8KLQl1bGludAkJbXR5 cGUsCQkvKiE8IGluOiBtYWluIGRhdGEgdHlwZSAqLwotCXVsaW50CQlwcnR5cGUsCQkvKiE8IGlu OiBwcmVjaXNlIHR5cGUgKi8KLQl1bGludAkJY29sX2xlbikJLyohPCBpbjogY29sdW1uIGxlbmdo dCAqLwotewotI2lmbmRlZiBVTklWX0hPVEJBQ0tVUAotCXVsaW50CW1ibWlubGVuOwotCXVsaW50 CW1ibWF4bGVuOwotI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwotCi0JY29sdW1uLT5pbmQg PSAodW5zaWduZWQgaW50KSBjb2xfcG9zOwotCWNvbHVtbi0+b3JkX3BhcnQgPSAwOwotCWNvbHVt bi0+bXR5cGUgPSAodW5zaWduZWQgaW50KSBtdHlwZTsKLQljb2x1bW4tPnBydHlwZSA9ICh1bnNp Z25lZCBpbnQpIHBydHlwZTsKLQljb2x1bW4tPmxlbiA9ICh1bnNpZ25lZCBpbnQpIGNvbF9sZW47 Ci0jaWZuZGVmIFVOSVZfSE9UQkFDS1VQCi0gICAgICAgIGR0eXBlX2dldF9tYmxlbihtdHlwZSwg cHJ0eXBlLCAmbWJtaW5sZW4sICZtYm1heGxlbik7Ci0KLSAgICAgICAgY29sdW1uLT5tYm1pbmxl biA9ICh1bnNpZ25lZCBpbnQpIG1ibWlubGVuOwotICAgICAgICBjb2x1bW4tPm1ibWF4bGVuID0g KHVuc2lnbmVkIGludCkgbWJtYXhsZW47Ci0jZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCi19 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBteXNxbC5o JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6dmFzaWwu ZGltb3ZAb3JhY2xlLmNvbS0yMDEwMDYyODEyNTIyNC12Nm05enN0NDUzMmZkb2l4CisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbXlzcWwuaAlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEwMDYyOTExMzI0OC1mdmw0OGxuenI0NHo5NGdnCkBAIC0xMDMsNiArMTAzLDE3 IEBAIHJvd19teXNxbF9yZWFkX2Jsb2JfcmVmKAogCXVsaW50CQljb2xfbGVuKTsJLyohPCBpbjog QkxPQiByZWZlcmVuY2UgbGVuZ3RoCiAJCQkJCShub3QgQkxPQiBsZW5ndGgpICovCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCitQYWQgYSBjb2x1bW4gd2l0aCBzcGFjZXMuICovCitVTklWX0lOVEVSTgordm9pZAorcm93 X215c3FsX3BhZF9jb2woCisvKj09PT09PT09PT09PT09Ki8KKwl1bGludAltYm1pbmxlbiwJLyoh PCBpbjogbWluaW11bSBzaXplIG9mIGEgY2hhcmFjdGVyLAorCQkJCWluIGJ5dGVzICovCisJYnl0 ZSoJcGFkLAkJLyohPCBvdXQ6IHBhZGRlZCBidWZmZXIgKi8KKwl1bGludAlsZW4pOwkJLyohPCBp bjogbnVtYmVyIG9mIGJ5dGVzIHRvIHBhZCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTdG9yZXMgYSBub24t U1FMLU5VTEwgZmllbGQgZ2l2ZW4gaW4gdGhlIE15U1FMIGZvcm1hdCBpbiB0aGUgSW5ub0RCIGZv cm1hdC4KIFRoZSBjb3VudGVycGFydCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHJvd19zZWxfZmllbGRf c3RvcmVfaW5fbXlzcWxfZm9ybWF0KCkgaW4KIHJvdzBzZWwuYy4KCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv cm93L3JvdzBpbnMuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAwNjI4MTI1MjI0 LXY2bTl6c3Q0NTMyZmRvaXgKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjI5MTEzMjQ4LWZ2bDQ4bG56cjQ0ejk0 Z2cKQEAgLTUxNSw4ICs1MTUsNyBAQCByb3dfaW5zX2Nhc2NhZGVfY2FsY191cGRhdGVfdmVjKAog CiAJCQkJaWYgKCFkZmllbGRfaXNfbnVsbCgmdWZpZWxkLT5uZXdfdmFsKQogCQkJCSAgICAmJiBk dHlwZV9nZXRfYXRfbW9zdF9uX21iY2hhcnMoCi0JCQkJCWNvbC0+cHJ0eXBlLAotCQkJCQljb2wt Pm1ibWlubGVuLCBjb2wtPm1ibWF4bGVuLAorCQkJCQljb2wtPnBydHlwZSwgY29sLT5tYm1pbm1h eGxlbiwKIAkJCQkJY29sLT5sZW4sCiAJCQkJCXVmaWVsZF9sZW4sCiAJCQkJCWRmaWVsZF9nZXRf ZGF0YSgmdWZpZWxkLT5uZXdfdmFsKSkKQEAgLTUzOSw0OSArNTM4LDM3IEBAIHJvd19pbnNfY2Fz Y2FkZV9jYWxjX3VwZGF0ZV92ZWMoCiAKIAkJCQlpZiAobWluX3NpemUgPiB1ZmllbGRfbGVuKSB7 CiAKLQkJCQkJY2hhcioJCXBhZF9zdGFydDsKLQkJCQkJY29uc3QgY2hhcioJcGFkX2VuZDsKLQkJ CQkJY2hhcioJCXBhZGRlZF9kYXRhCi0JCQkJCQk9IG1lbV9oZWFwX2FsbG9jKAotCQkJCQkJCWhl YXAsIG1pbl9zaXplKTsKLQkJCQkJcGFkX3N0YXJ0ID0gcGFkZGVkX2RhdGEgKyB1ZmllbGRfbGVu OwotCQkJCQlwYWRfZW5kID0gcGFkZGVkX2RhdGEgKyBtaW5fc2l6ZTsKKwkJCQkJYnl0ZSoJcGFk OworCQkJCQl1bGludAlwYWRfbGVuOworCQkJCQlieXRlKglwYWRkZWRfZGF0YTsKKwkJCQkJdWxp bnQJbWJtaW5sZW47CisKKwkJCQkJcGFkZGVkX2RhdGEgPSBtZW1faGVhcF9hbGxvYygKKwkJCQkJ CWhlYXAsIG1pbl9zaXplKTsKKworCQkJCQlwYWQgPSBwYWRkZWRfZGF0YSArIHVmaWVsZF9sZW47 CisJCQkJCXBhZF9sZW4gPSBtaW5fc2l6ZSAtIHVmaWVsZF9sZW47CiAKIAkJCQkJbWVtY3B5KHBh ZGRlZF9kYXRhLAogCQkJCQkgICAgICAgZGZpZWxkX2dldF9kYXRhKCZ1ZmllbGQKIAkJCQkJCQkg ICAgICAgLT5uZXdfdmFsKSwKLQkJCQkJICAgICAgIGRmaWVsZF9nZXRfbGVuKCZ1ZmllbGQKLQkJ CQkJCQkgICAgICAtPm5ld192YWwpKTsKKwkJCQkJICAgICAgIHVmaWVsZF9sZW4pOwogCi0JCQkJ CXN3aXRjaCAoVU5JVl9FWFBFQ1QoY29sLT5tYm1pbmxlbiwxKSkgewotCQkJCQlkZWZhdWx0Ogot CQkJCQkJdXRfZXJyb3I7Ci0JCQkJCQlyZXR1cm4oVUxJTlRfVU5ERUZJTkVEKTsKLQkJCQkJY2Fz ZSAxOgotCQkJCQkJaWYgKFVOSVZfVU5MSUtFTFkKLQkJCQkJCSAgICAoZHR5cGVfZ2V0X2NoYXJz ZXRfY29sbCgKLQkJCQkJCQkgICAgY29sLT5wcnR5cGUpCi0JCQkJCQkgICAgID09IERBVEFfTVlT UUxfQklOQVJZX0NIQVJTRVRfQ09MTCkpIHsKLQkJCQkJCQkvKiBEbyBub3QgcGFkIEJJTkFSWQot CQkJCQkJCWNvbHVtbnMuICovCi0JCQkJCQkJcmV0dXJuKFVMSU5UX1VOREVGSU5FRCk7Ci0JCQkJ CQl9CisJCQkJCW1ibWlubGVuID0gZGljdF9jb2xfZ2V0X21ibWlubGVuKGNvbCk7CisKKwkJCQkJ dXRfYWQoISh1ZmllbGRfbGVuICUgbWJtaW5sZW4pKTsKKwkJCQkJdXRfYWQoIShtaW5fc2l6ZSAl IG1ibWlubGVuKSk7CiAKLQkJCQkJCS8qIHNwYWNlPTB4MjAgKi8KLQkJCQkJCW1lbXNldChwYWRf c3RhcnQsIDB4MjAsCi0JCQkJCQkgICAgICAgcGFkX2VuZCAtIHBhZF9zdGFydCk7Ci0JCQkJCQli cmVhazsKLQkJCQkJY2FzZSAyOgotCQkJCQkJLyogc3BhY2U9MHgwMDIwICovCi0JCQkJCQl1dF9h KCEodWZpZWxkX2xlbiAlIDIpKTsKLQkJCQkJCXV0X2EoIShtaW5fc2l6ZSAlIDIpKTsKLQkJCQkJ CWRvIHsKLQkJCQkJCQkqcGFkX3N0YXJ0KysgPSAweDAwOwotCQkJCQkJCSpwYWRfc3RhcnQrKyA9 IDB4MjA7Ci0JCQkJCQl9IHdoaWxlIChwYWRfc3RhcnQgPCBwYWRfZW5kKTsKLQkJCQkJCWJyZWFr OworCQkJCQlpZiAobWJtaW5sZW4gPT0gMQorCQkJCQkgICAgJiYgZHR5cGVfZ2V0X2NoYXJzZXRf Y29sbCgKKwkJCQkJCSAgICBjb2wtPnBydHlwZSkKKwkJCQkJICAgID09IERBVEFfTVlTUUxfQklO QVJZX0NIQVJTRVRfQ09MTCkgeworCQkJCQkJLyogRG8gbm90IHBhZCBCSU5BUlkgY29sdW1ucyAq LworCQkJCQkJcmV0dXJuKFVMSU5UX1VOREVGSU5FRCk7CiAJCQkJCX0KIAorCQkJCQlyb3dfbXlz cWxfcGFkX2NvbChtYm1pbmxlbiwKKwkJCQkJCQkgIHBhZCwgcGFkX2xlbik7CiAJCQkJCWRmaWVs ZF9zZXRfZGF0YSgmdWZpZWxkLT5uZXdfdmFsLAogCQkJCQkJCXBhZGRlZF9kYXRhLCBtaW5fc2l6 ZSk7CiAJCQkJfQpAQCAtMjIzMiw3ICsyMjE5LDcgQEAgcm93X2luc19pbmRleF9lbnRyeV9zZXRf dmFscygKIAkJCQk9IGRpY3RfZmllbGRfZ2V0X2NvbChpbmRfZmllbGQpOwogCiAJCQlsZW4gPSBk dHlwZV9nZXRfYXRfbW9zdF9uX21iY2hhcnMoCi0JCQkJY29sLT5wcnR5cGUsIGNvbC0+bWJtaW5s ZW4sIGNvbC0+bWJtYXhsZW4sCisJCQkJY29sLT5wcnR5cGUsIGNvbC0+bWJtaW5tYXhsZW4sCiAJ CQkJaW5kX2ZpZWxkLT5wcmVmaXhfbGVuLAogCQkJCWxlbiwgZGZpZWxkX2dldF9kYXRhKHJvd19m aWVsZCkpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG1l cmdlLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBtZXJnZS5jCXJldmlkOnZhc2ls LmRpbW92QG9yYWNsZS5jb20tMjAxMDA2MjgxMjUyMjQtdjZtOXpzdDQ1MzJmZG9peAorKysgYi9z dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEwMDYyOTExMzI0OC1mdmw0OGxuenI0NHo5NGdnCkBAIC0zMzgsNyArMzM4LDcgQEAg cm93X21lcmdlX2J1Zl9hZGQoCiAJCWlmIChpZmllbGQtPnByZWZpeF9sZW4pIHsKIAkJCWxlbiA9 IGR0eXBlX2dldF9hdF9tb3N0X25fbWJjaGFycygKIAkJCQljb2wtPnBydHlwZSwKLQkJCQljb2wt Pm1ibWlubGVuLCBjb2wtPm1ibWF4bGVuLAorCQkJCWNvbC0+bWJtaW5tYXhsZW4sCiAJCQkJaWZp ZWxkLT5wcmVmaXhfbGVuLAogCQkJCWxlbiwgZGZpZWxkX2dldF9kYXRhKGZpZWxkKSk7CiAJCQlk ZmllbGRfc2V0X2xlbihmaWVsZCwgbGVuKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL3Jvdy9yb3cwbXlzcWwuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG15 c3FsLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMDYyODEyNTIyNC12Nm05enN0 NDUzMmZkb2l4CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjI5MTEzMjQ4LWZ2bDQ4bG56cjQ0ejk0Z2cKQEAg LTI2Niw2ICsyNjYsNDkgQEAgcm93X215c3FsX3JlYWRfYmxvYl9yZWYoCiB9CiAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKK1BhZCBhIGNvbHVtbiB3aXRoIHNwYWNlcy4gKi8KK1VOSVZfSU5URVJOCit2b2lkCityb3df bXlzcWxfcGFkX2NvbCgKKy8qPT09PT09PT09PT09PT0qLworCXVsaW50CW1ibWlubGVuLAkvKiE8 IGluOiBtaW5pbXVtIHNpemUgb2YgYSBjaGFyYWN0ZXIsCisJCQkJaW4gYnl0ZXMgKi8KKwlieXRl KglwYWQsCQkvKiE8IG91dDogcGFkZGVkIGJ1ZmZlciAqLworCXVsaW50CWxlbikJCS8qITwgaW46 IG51bWJlciBvZiBieXRlcyB0byBwYWQgKi8KK3sKKwljb25zdCBieXRlKglwYWRfZW5kOworCisJ c3dpdGNoIChVTklWX0VYUEVDVChtYm1pbmxlbiwgMSkpIHsKKwlkZWZhdWx0OgorCQl1dF9lcnJv cjsKKwljYXNlIDE6CisJCS8qIHNwYWNlPTB4MjAgKi8KKwkJbWVtc2V0KHBhZCwgMHgyMCwgbGVu KTsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQkvKiBzcGFjZT0weDAwMjAgKi8KKwkJcGFkX2VuZCA9 IHBhZCArIGxlbjsKKwkJdXRfYSghKGxlbiAlIDIpKTsKKwkJZG8geworCQkJKnBhZCsrID0gMHgw MDsKKwkJCSpwYWQrKyA9IDB4MjA7CisJCX0gd2hpbGUgKHBhZCA8IHBhZF9lbmQpOworCQlicmVh azsKKwljYXNlIDQ6CisJCS8qIHNwYWNlPTB4MDAwMDAwMjAgKi8KKwkJcGFkX2VuZCA9IHBhZCAr IGxlbjsKKwkJdXRfYSghKGxlbiAlIDQpKTsKKwkJZG8geworCQkJKnBhZCsrID0gMHgwMDsKKwkJ CSpwYWQrKyA9IDB4MDA7CisJCQkqcGFkKysgPSAweDAwOworCQkJKnBhZCsrID0gMHgyMDsKKwkJ fSB3aGlsZSAocGFkIDwgcGFkX2VuZCk7CisJCWJyZWFrOworCX0KK30KKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgog U3RvcmVzIGEgbm9uLVNRTC1OVUxMIGZpZWxkIGdpdmVuIGluIHRoZSBNeVNRTCBmb3JtYXQgaW4g dGhlIElubm9EQiBmb3JtYXQuCiBUaGUgY291bnRlcnBhcnQgb2YgdGhpcyBmdW5jdGlvbiBpcyBy b3dfc2VsX2ZpZWxkX3N0b3JlX2luX215c3FsX2Zvcm1hdCgpIGluCiByb3cwc2VsLmMuCkBAIC0z NTcsMTIgKzQwMCwyOCBAQCByb3dfbXlzcWxfc3RvcmVfY29sX2luX2lubm9iYXNlX2Zvcm1hdCgK IAkJCS8qIFJlbW92ZSB0cmFpbGluZyBzcGFjZXMgZnJvbSBvbGQgc3R5bGUgVkFSQ0hBUgogCQkJ Y29sdW1ucy4gKi8KIAotCQkJLyogSGFuZGxlIFVDUzIgc3RyaW5ncyBkaWZmZXJlbnRseS4gKi8K KwkJCS8qIEhhbmRsZSBVbmljb2RlIHN0cmluZ3MgZGlmZmVyZW50bHkuICovCiAJCQl1bGludAlt Ym1pbmxlbgk9IGR0eXBlX2dldF9tYm1pbmxlbihkdHlwZSk7CiAKIAkJCXB0ciA9IG15c3FsX2Rh dGE7CiAKLQkJCWlmIChtYm1pbmxlbiA9PSAyKSB7CisJCQlzd2l0Y2ggKG1ibWlubGVuKSB7CisJ CQlkZWZhdWx0OgorCQkJCXV0X2Vycm9yOworCQkJY2FzZSA0OgorCQkJCS8qIHNwYWNlPTB4MDAw MDAwMjAgKi8KKwkJCQkvKiBUcmltICJoYWxmLWNoYXJzIiwganVzdCBpbiBjYXNlLiAqLworCQkJ CWNvbF9sZW4gJj0gfjM7CisKKwkJCQl3aGlsZSAoY29sX2xlbiA+PSA0CisJCQkJICAgICAgICYm IHB0cltjb2xfbGVuIC0gNF0gPT0gMHgwMAorCQkJCSAgICAgICAmJiBwdHJbY29sX2xlbiAtIDNd ID09IDB4MDAKKwkJCQkgICAgICAgJiYgcHRyW2NvbF9sZW4gLSAyXSA9PSAweDAwCisJCQkJICAg ICAgICYmIHB0cltjb2xfbGVuIC0gMV0gPT0gMHgyMCkgeworCQkJCQljb2xfbGVuIC09IDQ7CisJ CQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSAyOgogCQkJCS8qIHNwYWNlPTB4MDAyMCAqLwogCQkJ CS8qIFRyaW0gImhhbGYtY2hhcnMiLCBqdXN0IGluIGNhc2UuICovCiAJCQkJY29sX2xlbiAmPSB+ MTsKQEAgLTM3MSw4ICs0MzAsOCBAQCByb3dfbXlzcWxfc3RvcmVfY29sX2luX2lubm9iYXNlX2Zv cm1hdCgKIAkJCQkgICAgICAgJiYgcHRyW2NvbF9sZW4gLSAxXSA9PSAweDIwKSB7CiAJCQkJCWNv bF9sZW4gLT0gMjsKIAkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCXV0X2EobWJtaW5sZW4gPT0gMSk7 CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CiAJCQkJLyogc3BhY2U9MHgyMCAqLwogCQkJCXdoaWxl IChjb2xfbGVuID4gMAogCQkJCSAgICAgICAmJiBwdHJbY29sX2xlbiAtIDFdID09IDB4MjApIHsK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcm93LmMnCi0tLSBh L3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzByb3cuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUu Y29tLTIwMTAwNjI4MTI1MjI0LXY2bTl6c3Q0NTMyZmRvaXgKKysrIGIvc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHJvdy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjI5MTEz MjQ4LWZ2bDQ4bG56cjQ0ejk0Z2cKQEAgLTE1Niw3ICsxNTYsNyBAQCByb3dfYnVpbGRfaW5kZXhf ZW50cnkoCiAJCX0KIAogCQlsZW4gPSBkdHlwZV9nZXRfYXRfbW9zdF9uX21iY2hhcnMoCi0JCQlj b2wtPnBydHlwZSwgY29sLT5tYm1pbmxlbiwgY29sLT5tYm1heGxlbiwKKwkJCWNvbC0+cHJ0eXBl LCBjb2wtPm1ibWlubWF4bGVuLAogCQkJaW5kX2ZpZWxkLT5wcmVmaXhfbGVuLCBsZW4sIGRmaWVs ZF9nZXRfZGF0YShkZmllbGQpKTsKIAkJZGZpZWxkX3NldF9sZW4oZGZpZWxkLCBsZW4pOwogCX0K QEAgLTUxNCw4ICs1MTQsNyBAQCByb3dfYnVpbGRfcm93X3JlZigKIAkJCQlkZmllbGRfc2V0X2xl bihkZmllbGQsCiAJCQkJCSAgICAgICBkdHlwZV9nZXRfYXRfbW9zdF9uX21iY2hhcnMoCiAJCQkJ CQkgICAgICAgZHR5cGUtPnBydHlwZSwKLQkJCQkJCSAgICAgICBkdHlwZS0+bWJtaW5sZW4sCi0J CQkJCQkgICAgICAgZHR5cGUtPm1ibWF4bGVuLAorCQkJCQkJICAgICAgIGR0eXBlLT5tYm1pbm1h eGxlbiwKIAkJCQkJCSAgICAgICBjbHVzdF9jb2xfcHJlZml4X2xlbiwKIAkJCQkJCSAgICAgICBs ZW4sIChjaGFyKikgZmllbGQpKTsKIAkJCX0KQEAgLTYyOSw4ICs2MjgsNyBAQCBub3Rmb3VuZDoK IAkJCQlkZmllbGRfc2V0X2xlbihkZmllbGQsCiAJCQkJCSAgICAgICBkdHlwZV9nZXRfYXRfbW9z dF9uX21iY2hhcnMoCiAJCQkJCQkgICAgICAgZHR5cGUtPnBydHlwZSwKLQkJCQkJCSAgICAgICBk dHlwZS0+bWJtaW5sZW4sCi0JCQkJCQkgICAgICAgZHR5cGUtPm1ibWF4bGVuLAorCQkJCQkJICAg ICAgIGR0eXBlLT5tYm1pbm1heGxlbiwKIAkJCQkJCSAgICAgICBjbHVzdF9jb2xfcHJlZml4X2xl biwKIAkJCQkJCSAgICAgICBsZW4sIChjaGFyKikgZmllbGQpKTsKIAkJCX0KCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2Uvcm93L3JvdzBzZWwuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAwNjI4 MTI1MjI0LXY2bTl6c3Q0NTMyZmRvaXgKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNl bC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjI5MTEzMjQ4LWZ2bDQ4bG56 cjQ0ejk0Z2cKQEAgLTg4LDEwICs4OCw4IEBAIHJvd19zZWxfc2VjX3JlY19pc19mb3JfYmxvYigK IC8qPT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAl1bGludAkJbXR5cGUsCQkvKiE8IGluOiBt YWluIHR5cGUgKi8KIAl1bGludAkJcHJ0eXBlLAkJLyohPCBpbjogcHJlY2lzZSB0eXBlICovCi0J dWxpbnQJCW1ibWlubGVuLAkvKiE8IGluOiBtaW5pbXVtIGxlbmd0aCBvZiBhCi0JCQkJCW11bHRp LWJ5dGUgY2hhcmFjdGVyICovCi0JdWxpbnQJCW1ibWF4bGVuLAkvKiE8IGluOiBtYXhpbXVtIGxl bmd0aCBvZiBhCi0JCQkJCW11bHRpLWJ5dGUgY2hhcmFjdGVyICovCisJdWxpbnQJCW1ibWlubWF4 bGVuLAkvKiE8IGluOiBtaW5pbXVtIGFuZCBtYXhpbXVtIGxlbmd0aCBvZgorCQkJCQlhIG11bHRp LWJ5dGUgY2hhcmFjdGVyICovCiAJY29uc3QgYnl0ZSoJY2x1c3RfZmllbGQsCS8qITwgaW46IHRo ZSBsb2NhbGx5IHN0b3JlZCBwYXJ0IG9mCiAJCQkJCXRoZSBjbHVzdGVyZWQgaW5kZXggY29sdW1u LCBpbmNsdWRpbmcKIAkJCQkJdGhlIEJMT0IgcG9pbnRlcjsgdGhlIGNsdXN0ZXJlZApAQCAtMTE5 LDcgKzExNyw3IEBAIHJvd19zZWxfc2VjX3JlY19pc19mb3JfYmxvYigKIAkJcmV0dXJuKEZBTFNF KTsKIAl9CiAKLQlsZW4gPSBkdHlwZV9nZXRfYXRfbW9zdF9uX21iY2hhcnMocHJ0eXBlLCBtYm1p bmxlbiwgbWJtYXhsZW4sCisJbGVuID0gZHR5cGVfZ2V0X2F0X21vc3Rfbl9tYmNoYXJzKHBydHlw ZSwgbWJtaW5tYXhsZW4sCiAJCQkJCSAgc2VjX2xlbiwgbGVuLCAoY29uc3QgY2hhciopIGJ1Zik7 CiAKIAlyZXR1cm4oIWNtcF9kYXRhX2RhdGEobXR5cGUsIHBydHlwZSwgYnVmLCBsZW4sIHNlY19m aWVsZCwgc2VjX2xlbikpOwpAQCAtMjAyLDE0ICsyMDAsMTQgQEAgcm93X3NlbF9zZWNfcmVjX2lz X2Zvcl9jbHVzdF9yZWMoCiAJCQl9CiAKIAkJCWxlbiA9IGR0eXBlX2dldF9hdF9tb3N0X25fbWJj aGFycygKLQkJCQljb2wtPnBydHlwZSwgY29sLT5tYm1pbmxlbiwgY29sLT5tYm1heGxlbiwKKwkJ CQljb2wtPnBydHlwZSwgY29sLT5tYm1pbm1heGxlbiwKIAkJCQlpZmllbGQtPnByZWZpeF9sZW4s IGxlbiwgKGNoYXIqKSBjbHVzdF9maWVsZCk7CiAKIAkJCWlmIChyZWNfb2Zmc19udGhfZXh0ZXJu KGNsdXN0X29mZnMsIGNsdXN0X3BvcykKIAkJCSAgICAmJiBsZW4gPCBzZWNfbGVuKSB7CiAJCQkJ aWYgKCFyb3dfc2VsX3NlY19yZWNfaXNfZm9yX2Jsb2IoCiAJCQkJCSAgICBjb2wtPm10eXBlLCBj b2wtPnBydHlwZSwKLQkJCQkJICAgIGNvbC0+bWJtaW5sZW4sIGNvbC0+bWJtYXhsZW4sCisJCQkJ CSAgICBjb2wtPm1ibWlubWF4bGVuLAogCQkJCQkgICAgY2x1c3RfZmllbGQsIGNsdXN0X2xlbiwK IAkJCQkJICAgIHNlY19maWVsZCwgc2VjX2xlbiwKIAkJCQkJICAgIGRpY3RfdGFibGVfemlwX3Np emUoCkBAIC0yNTA4LDEzICsyNTA2LDEzIEBAIHJvd19zZWxfZmllbGRfc3RvcmVfaW5fbXlzcWxf Zm9ybWF0KAogCXVsaW50CQlsZW4pCS8qITwgaW46IGxlbmd0aCBvZiB0aGUgZGF0YSAqLwogewog CWJ5dGUqCXB0cjsKLQlieXRlKglmaWVsZF9lbmQ7Ci0JYnl0ZSoJcGFkX3B0cjsKIAogCXV0X2Fk KGxlbiAhPSBVTklWX1NRTF9OVUxMKTsKIAlVTklWX01FTV9BU1NFUlRfUlcoZGF0YSwgbGVuKTsK IAogCXN3aXRjaCAodGVtcGwtPnR5cGUpIHsKKwkJY29uc3QgYnl0ZSoJZmllbGRfZW5kOworCQli eXRlKgkJcGFkOwogCWNhc2UgREFUQV9JTlQ6CiAJCS8qIENvbnZlcnQgaW50ZWdlciBkYXRhIGZy b20gSW5ub2Jhc2UgdG8gYSBsaXR0bGUtZW5kaWFuCiAJCWZvcm1hdCwgc2lnbiBiaXQgcmVzdG9y ZWQgdG8gbm9ybWFsICovCkBAIC0yNTU4LDM4ICsyNTU2LDMyIEBAIHJvd19zZWxfZmllbGRfc3Rv cmVfaW5fbXlzcWxfZm9ybWF0KAogCQl1bnVzZWQgZW5kIG9mIGEgPj0gNS4wLjMgdHJ1ZSBWQVJD SEFSIGNvbHVtbiwganVzdCBpbiBjYXNlCiAJCU15U1FMIGV4cGVjdHMgaXRzIGNvbnRlbnRzIHRv IGJlIGRldGVybWluaXN0aWMuICovCiAKLQkJcGFkX3B0ciA9IGRlc3QgKyBsZW47CisJCXBhZCA9 IGRlc3QgKyBsZW47CiAKIAkJdXRfYWQodGVtcGwtPm1ibWlubGVuIDw9IHRlbXBsLT5tYm1heGxl bik7CiAKLQkJLyogV2UgaGFuZGxlIFVDUzIgY2hhcnNldCBzdHJpbmdzIGRpZmZlcmVudGx5LiAq LwotCQlpZiAodGVtcGwtPm1ibWlubGVuID09IDIpIHsKLQkJCS8qIEEgc3BhY2UgY2hhciBpcyB0 d28gYnl0ZXMsIDB4MDAyMCBpbiBVQ1MyICovCisJCS8qIFdlIHRyZWF0IHNvbWUgVW5pY29kZSBj aGFyc2V0IHN0cmluZ3Mgc3BlY2lhbGx5LiAqLworCQlzd2l0Y2ggKHRlbXBsLT5tYm1pbmxlbikg eworCQljYXNlIDQ6CisJCQkvKiBJbm5vREIgc2hvdWxkIG5ldmVyIGhhdmUgc3RyaXBwZWQgcGFy dGlhbAorCQkJVVRGLTMyIGNoYXJhY3RlcnMuICovCisJCQl1dF9hKCEobGVuICYgMykpOworCQkJ YnJlYWs7CisJCWNhc2UgMjoKKwkJCS8qIEEgc3BhY2UgY2hhciBpcyB0d28gYnl0ZXMsCisJCQkw eDAwMjAgaW4gVUNTMiBhbmQgVVRGLTE2ICovCiAKLQkJCWlmIChsZW4gJiAxKSB7CisJCQlpZiAo VU5JVl9VTkxJS0VMWShsZW4gJiAxKSkgewogCQkJCS8qIEEgMHgyMCBoYXMgYmVlbiBzdHJpcHBl ZCBmcm9tIHRoZSBjb2x1bW4uCiAJCQkJUGFkIGl0IGJhY2suICovCiAKLQkJCQlpZiAocGFkX3B0 ciA8IGZpZWxkX2VuZCkgewotCQkJCQkqcGFkX3B0ciA9IDB4MjA7Ci0JCQkJCXBhZF9wdHIrKzsK KwkJCQlpZiAocGFkIDwgZmllbGRfZW5kKSB7CisJCQkJCSpwYWQrKyA9IDB4MjA7CiAJCQkJfQog CQkJfQotCi0JCQkvKiBQYWQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyB3aXRoIDB4MDAyMCAqLwot Ci0JCQl3aGlsZSAocGFkX3B0ciA8IGZpZWxkX2VuZCkgewotCQkJCSpwYWRfcHRyID0gMHgwMDsK LQkJCQlwYWRfcHRyKys7Ci0JCQkJKnBhZF9wdHIgPSAweDIwOwotCQkJCXBhZF9wdHIrKzsKLQkJ CX0KLQkJfSBlbHNlIHsKLQkJCXV0X2FkKHRlbXBsLT5tYm1pbmxlbiA9PSAxKTsKLQkJCS8qIHNw YWNlPTB4MjAgKi8KLQotCQkJbWVtc2V0KHBhZF9wdHIsIDB4MjAsIGZpZWxkX2VuZCAtIHBhZF9w dHIpOwogCQl9CisKKwkJcm93X215c3FsX3BhZF9jb2wodGVtcGwtPm1ibWlubGVuLCBwYWQsIGZp ZWxkX2VuZCAtIHBhZCk7CiAJCWJyZWFrOwogCiAJY2FzZSBEQVRBX0JMT0I6CkBAIC0yNjE0LDkg KzI2MDYsOSBAQCByb3dfc2VsX2ZpZWxkX3N0b3JlX2luX215c3FsX2Zvcm1hdCgKIAkJICAgICAg fHwgISh0ZW1wbC0+bXlzcWxfY29sX2xlbiAlIHRlbXBsLT5tYm1heGxlbikpOwogCQl1dF9hZChs ZW4gKiB0ZW1wbC0+bWJtYXhsZW4gPj0gdGVtcGwtPm15c3FsX2NvbF9sZW4pOwogCi0JCWlmICh0 ZW1wbC0+bWJtaW5sZW4gIT0gdGVtcGwtPm1ibWF4bGVuKSB7CisJCWlmICh0ZW1wbC0+bWJtaW5s ZW4gPT0gMSAmJiB0ZW1wbC0+bWJtYXhsZW4gIT0gMSkgewogCQkJLyogUGFkIHdpdGggc3BhY2Vz LiBUaGlzIHVuZG9lcyB0aGUgc3RyaXBwaW5nCi0JCQlkb25lIGluIHJvdzBteXNxbC5pYywgZnVu Y3Rpb24KKwkJCWRvbmUgaW4gcm93MG15c3FsLmMsIGZ1bmN0aW9uCiAJCQlyb3dfbXlzcWxfc3Rv cmVfY29sX2luX2lubm9iYXNlX2Zvcm1hdCgpLiAqLwogCiAJCQltZW1zZXQoZGVzdCArIGxlbiwg MHgyMCwgdGVtcGwtPm15c3FsX2NvbF9sZW4gLSBsZW4pOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MHVwZC5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMDA2MjgxMjUyMjQtdjZt OXpzdDQ1MzJmZG9peAorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MjkxMTMyNDgtZnZsNDhsbnpyNDR6OTRnZwpA QCAtOTQ5LDcgKzk0OSw3IEBAIHJvd191cGRfaW5kZXhfcmVwbGFjZV9uZXdfY29sX3ZhbCgKIAkJ fQogCiAJCWxlbiA9IGR0eXBlX2dldF9hdF9tb3N0X25fbWJjaGFycyhjb2wtPnBydHlwZSwKLQkJ CQkJCSAgY29sLT5tYm1pbmxlbiwgY29sLT5tYm1heGxlbiwKKwkJCQkJCSAgY29sLT5tYm1pbm1h eGxlbiwKIAkJCQkJCSAgZmllbGQtPnByZWZpeF9sZW4sIGxlbiwKIAkJCQkJCSAgKGNvbnN0IGNo YXIqKSBkYXRhKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3Ry eDB0cnguYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jCXJldmlkOnZhc2ls LmRpbW92QG9yYWNsZS5jb20tMjAxMDA2MjgxMjUyMjQtdjZtOXpzdDQ1MzJmZG9peAorKysgYi9z dG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMDA2MjkxMTMyNDgtZnZsNDhsbnpyNDR6OTRnZwpAQCAtMjAyNCw3ICsyMDI0LDcgQEAg dHJ4X2dldF90cnhfYnlfeGlkKAogCXdoaWxlICh0cngpIHsKIAkJLyogQ29tcGFyZSB0d28gWC9P cGVuIFhBIHRyYW5zYWN0aW9uIGlkJ3M6IHRoZWlyCiAJCWxlbmd0aCBzaG91bGQgYmUgdGhlIHNh bWUgYW5kIGJpbmFyeSBjb21wYXJpc29uCi0JCW9mIGd0cmlkX2xlbmdodCticXVhbF9sZW5ndGgg Ynl0ZXMgc2hvdWxkIGJlCisJCW9mIGd0cmlkX2xlbmd0aCticXVhbF9sZW5ndGggYnl0ZXMgc2hv dWxkIGJlCiAJCXRoZSBzYW1lICovCiAKIAkJaWYgKHhpZC0+Z3RyaWRfbGVuZ3RoID09IHRyeC0+ eGlkLmd0cmlkX2xlbmd0aAoK --===============0467281279== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # testament_sha1: 6ad5b3ad9f49dfb975196ac7ff4b17facec77e74 # timestamp: 2010-06-29 14:33:46 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: vasil.dimov@stripped\ # v6m9zst4532fdoix # # Begin bundle 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 --===============0467281279==--