From: marko.makela Date: March 24 2011 12:00pm Subject: bzr commit into mysql-5.5-innodb branch (marko.makela:3351) Bug#11766305 List-Archive: http://lists.mysql.com/commits/133764 X-Bug: 11766305 Message-Id: <201103241200.p2OC0d7Y029926@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0246088149==" --===============0246088149== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjUtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjExMzkxNi1vcmlj dzAycWczdHp2aW04CgogMzM1MSBNYXJrbyBNw6RrZWzDpAkyMDExLTAzLTI0CiAgICAgIEJ1ZyMx MTc2NjMwNSAtIDU5MzkyOiBSZW1vdmUgdGhyMGxvYy5jIGFuZCBpYnVmX2luc2lkZSgpIFtwYXJ0 IDQgb2YgNF0KICAgICAgCiAgICAgIGlidWZfaW5zaWRlKCksIGlidWZfZW50ZXIoKSwgaWJ1Zl9l eGl0KCk6IEFkZCB0aGUgcGFyYW1ldGVyIG10ci4gVGhlCiAgICAgIGZsYWcgaXMgbm8gbG9uZ2Vy IGtlcHQgaW4gdGhlIHRocmVhZC1sb2NhbCBzdG9yYWdlIGJ1dCBpbiB0aGUKICAgICAgbWluaS10 cmFuc2FjdGlvbiAobXRyLT5pbnNpZGVfaWJ1ZikuCiAgICAgIAogICAgICBtdHJfc3RhcnQoKTog Q2xlYW4gdXAgdGhlIGNvbW1lbnQgYW5kIHJlbW92ZSB0aGUgdW51c2VkIHJldHVybiB2YWx1ZS4K ICAgICAgbXRyX2NvbW1pdCgpOiBBc3NlcnQgIWlidWZfaW5zaWRlKG10cikgaW4gZGVidWcgYnVp bGRzLgogICAgICAKICAgICAgaWJ1Zl9tdHJfc3RhcnQoKTogTGlrZSBtdHJfc3RhcnQoKSwgYnV0 IHNldHMgdGhlIGZsYWcuCiAgICAgIGlidWZfbXRyX2NvbW1pdCgpLCBpYnVmX2J0cl9wY3VyX2Nv bW1pdF9zcGVjaWZ5X210cigpOiBXcmFwcGVycyB0aGF0CiAgICAgIGFzc2VydCBpYnVmX2luc2lk ZSgpLgogICAgICAKICAgICAgYnVmX3BhZ2VfZ2V0X3ppcCgpLCBidWZfcGFnZV9pbml0X2Zvcl9y ZWFkKCksCiAgICAgIGJ1Zl9yZWFkX2lidWZfbWVyZ2VfcGFnZXMoKSwgZmlsX2lvKCksIGlidWZf ZnJlZV9leGNlc3NfcGFnZXMoKSwKICAgICAgaWJ1Zl9jb250cmFjdF9leHQoKTogUmVtb3ZlIGFz c2VydGlvbnMgb24gaWJ1Zl9pbnNpZGUoKSwgYmVjYXVzZSBhCiAgICAgIG1pbmktdHJhbnNhY3Rp b24gaXMgbm90IGF2YWlsYWJsZS4KICAgICAgCiAgICAgIGJ1Zl9yZWFkX2FoZWFkX2xpbmVhcigp OiBBZGQgdGhlIHBhcmFtZXRlciBpbnNpZGVfaWJ1Zi4KICAgICAgCiAgICAgIGlidWZfcmVzdG9y ZV9wb3MoKTogV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgRkFMU0UsIGl0IGNvbW1pdHMgbXRy CiAgICAgIGFuZCBtdXN0IHRoZXJlZm9yZSBkbyBpYnVmX2V4aXQobXRyKS4KICAgICAgCiAgICAg IGlidWZfZGVsZXRlX3JlYygpOiBUaGlzIGZ1bmN0aW9uIGNvbW1pdHMgbXRyIGFuZCBtdXN0IHRo ZXJlZm9yZSBkbwogICAgICBpYnVmX2V4aXQobXRyKS4KICAgICAgCiAgICAgIGlidWZfcmVjX2dl dF9wYWdlX25vKCksIGlidWZfcmVjX2dldF9zcGFjZSgpLCBpYnVmX3JlY19nZXRfaW5mbygpLAog ICAgICBpYnVmX3JlY19nZXRfb3BfdHlwZSgpLCBpYnVmX2J1aWxkX2VudHJ5X2Zyb21faWJ1Zl9y ZWMoKSwKICAgICAgaWJ1Zl9yZWNfZ2V0X3ZvbHVtZSgpLCBpYnVmX2dldF9tZXJnZV9wYWdlX25v cygpLAogICAgICBpYnVmX2dldF92b2x1bWVfYnVmZmVyZWRfY291bnQoKSwgaWJ1Zl9nZXRfZW50 cnlfY291bnRlcl9sb3coKTogQWRkCiAgICAgIHRoZSBwYXJhbWV0ZXIgbXRyIGluIGRlYnVnIGJ1 aWxkcywgZm9yIGFzc2VydGluZyBpYnVmX2luc2lkZShtdHIpLgogICAgICAKICAgICAgcmI6NTg1 IGFwcHJvdmVkIGJ5IFN1bm55IEJhaW5zCgogICAgcmVtb3ZlZDoKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3RocjBsb2MuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdGhy MGxvYy5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Roci8KICAgICAgc3RvcmFnZS9pbm5vYmFz ZS90aHIvdGhyMGxvYy5jCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9DTWFr ZUxpc3RzLnR4dAogICAgICBzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1 ZjByZWEuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2ZpbC9maWwwZmlsLmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2li dWYvaWJ1ZjBpYnVmLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjByZWEuaAog ICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaWJ1ZjBpYnVmLmgKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2lidWYwaWJ1Zi5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvbXRyMG10ci5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9tdHIwbXRyLmljCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMuaAogICAgICBzdG9yYWdlL2lu bm9iYXNlL210ci9tdHIwbXRyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5j CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvdHJ4L3RyeDB0cnguYwo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9D TWFrZUxpc3RzLnR4dCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9DTWFrZUxpc3RzLnR4dAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjExMzkxNi1vcmljdzAycWczdHp2aW04 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvQ01ha2VMaXN0cy50eHQJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTAzMjQxMjAwMTQtaGsxaXc1MjlxeGo2bHZlcQpAQCAtMjQxLDcgKzI0 MSw2IEBAIFNFVChJTk5PQkFTRV9TT1VSQ0VTCWJ0ci9idHIwYnRyLmMgYnRyL2IKIAkJCXJvdy9y b3cwc2VsLmMgcm93L3JvdzB1aW5zLmMgcm93L3JvdzB1bW9kLmMgcm93L3JvdzB1bmRvLmMgcm93 L3JvdzB1cGQuYyByb3cvcm93MHZlcnMuYwogCQkJc3J2L3NydjBzcnYuYyBzcnYvc3J2MHN0YXJ0 LmMKIAkJCXN5bmMvc3luYzBhcnIuYyBzeW5jL3N5bmMwcncuYyBzeW5jL3N5bmMwc3luYy5jCi0J CQl0aHIvdGhyMGxvYy5jCiAJCQl0cngvdHJ4MGlfcy5jIHRyeC90cngwcHVyZ2UuYyB0cngvdHJ4 MHJlYy5jIHRyeC90cngwcm9sbC5jIHRyeC90cngwcnNlZy5jCiAJCQl0cngvdHJ4MHN5cy5jIHRy eC90cngwdHJ4LmMgdHJ4L3RyeDB1bmRvLmMKIAkJCXVzci91c3Iwc2Vzcy5jCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jJwotLS0gYS9zdG9yYWdlL2lu bm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAz MjIxMTM5MTYtb3JpY3cwMnFnM3R6dmltOAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIw Y3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQxMjAwMTQtaGsxaXc1 MjlxeGo2bHZlcQpAQCAtNDAyLDcgKzQwMiw3IEBAIGJ0cl9jdXJfc2VhcmNoX3RvX250aF9sZXZl bCgKIAogCXV0X2FkKGxldmVsID09IDAgfHwgbW9kZSA9PSBQQUdFX0NVUl9MRSk7CiAJdXRfYWQo ZGljdF9pbmRleF9jaGVja19zZWFyY2hfdHVwbGUoaW5kZXgsIHR1cGxlKSk7Ci0JdXRfYWQoIWRp Y3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkgfHwgaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQoIWRpY3Rf aW5kZXhfaXNfaWJ1ZihpbmRleCkgfHwgaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQoZHR1cGxl X2NoZWNrX3R5cGVkKHR1cGxlKSk7CiAKICNpZmRlZiBVTklWX0RFQlVHCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5jJwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL2J1Zi9idWYwYnVmLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjIx MTM5MTYtb3JpY3cwMnFnM3R6dmltOAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVm LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQxMjAwMTQtaGsxaXc1Mjlx eGo2bHZlcQpAQCAtMjMxNiw5ICsyMzE2LDYgQEAgYnVmX3BhZ2VfZ2V0X3ppcCgKIAl1bnNpZ25l ZAlhY2Nlc3NfdGltZTsKIAlidWZfcG9vbF90KglidWZfcG9vbCA9IGJ1Zl9wb29sX2dldChzcGFj ZSwgb2Zmc2V0KTsKIAotI2lmbmRlZiBVTklWX0xPR19ERUJVRwotCXV0X2FkKCFpYnVmX2luc2lk ZSgpKTsKLSNlbmRpZgogCWJ1Zl9wb29sLT5zdGF0Lm5fcGFnZV9nZXRzKys7CiAKIAlmb3IgKDs7 KSB7CkBAIC0yNzU4LDggKzI3NTUsOSBAQCBidWZfcGFnZV9nZXRfZ2VuKAogCXV0X2FkKHppcF9z aXplID09IGZpbF9zcGFjZV9nZXRfemlwX3NpemUoc3BhY2UpKTsKIAl1dF9hZCh1dF9pc18ycG93 KHppcF9zaXplKSk7CiAjaWZuZGVmIFVOSVZfTE9HX0RFQlVHCi0JdXRfYWQoIWlidWZfaW5zaWRl KCkgfHwgaWJ1Zl9wYWdlX2xvdyhzcGFjZSwgemlwX3NpemUsIG9mZnNldCwKLQkJCQkJICAgICAg RkFMU0UsIGZpbGUsIGxpbmUsIE5VTEwpKTsKKwl1dF9hZCghaWJ1Zl9pbnNpZGUobXRyKQorCSAg ICAgIHx8IGlidWZfcGFnZV9sb3coc3BhY2UsIHppcF9zaXplLCBvZmZzZXQsCisJCQkgICAgICAg RkFMU0UsIGZpbGUsIGxpbmUsIE5VTEwpKTsKICNlbmRpZgogCWJ1Zl9wb29sLT5zdGF0Lm5fcGFn ZV9nZXRzKys7CiAJZm9sZCA9IGJ1Zl9wYWdlX2FkZHJlc3NfZm9sZChzcGFjZSwgb2Zmc2V0KTsK QEAgLTMxMzIsNyArMzEzMCw4IEBAIHdhaXRfdW50aWxfdW5maXhlZDoKIAkJLyogSW4gdGhlIGNh c2Ugb2YgYSBmaXJzdCBhY2Nlc3MsIHRyeSB0byBhcHBseSBsaW5lYXIKIAkJcmVhZC1haGVhZCAq LwogCi0JCWJ1Zl9yZWFkX2FoZWFkX2xpbmVhcihzcGFjZSwgemlwX3NpemUsIG9mZnNldCk7CisJ CWJ1Zl9yZWFkX2FoZWFkX2xpbmVhcihzcGFjZSwgemlwX3NpemUsIG9mZnNldCwKKwkJCQkgICAg ICBpYnVmX2luc2lkZShtdHIpKTsKIAl9CiAKICNpZmRlZiBVTklWX0lCVUZfQ09VTlRfREVCVUcK QEAgLTMxODksNyArMzE4OCw3IEBAIGJ1Zl9wYWdlX29wdGltaXN0aWNfZ2V0KAogCWFjY2Vzc190 aW1lID0gYnVmX3BhZ2VfaXNfYWNjZXNzZWQoJmJsb2NrLT5wYWdlKTsKIAlidWZfcGFnZV9zZXRf YWNjZXNzZWRfbWFrZV95b3VuZygmYmxvY2stPnBhZ2UsIGFjY2Vzc190aW1lKTsKIAotCXV0X2Fk KCFpYnVmX2luc2lkZSgpCisJdXRfYWQoIWlidWZfaW5zaWRlKG10cikKIAkgICAgICB8fCBpYnVm X3BhZ2UoYnVmX2Jsb2NrX2dldF9zcGFjZShibG9jayksCiAJCQkgICBidWZfYmxvY2tfZ2V0X3pp cF9zaXplKGJsb2NrKSwKIAkJCSAgIGJ1Zl9ibG9ja19nZXRfcGFnZV9ubyhibG9jayksIE5VTEwp KTsKQEAgLTMyNDUsNyArMzI0NCw4IEBAIGJ1Zl9wYWdlX29wdGltaXN0aWNfZ2V0KAogCiAJCWJ1 Zl9yZWFkX2FoZWFkX2xpbmVhcihidWZfYmxvY2tfZ2V0X3NwYWNlKGJsb2NrKSwKIAkJCQkgICAg ICBidWZfYmxvY2tfZ2V0X3ppcF9zaXplKGJsb2NrKSwKLQkJCQkgICAgICBidWZfYmxvY2tfZ2V0 X3BhZ2Vfbm8oYmxvY2spKTsKKwkJCQkgICAgICBidWZfYmxvY2tfZ2V0X3BhZ2Vfbm8oYmxvY2sp LAorCQkJCSAgICAgIGlidWZfaW5zaWRlKG10cikpOwogCX0KIAogI2lmZGVmIFVOSVZfSUJVRl9D T1VOVF9ERUJVRwpAQCAtMzMyMSw3ICszMzIxLDcgQEAgYnVmX3BhZ2VfZ2V0X2tub3duX25vd2Fp dCgKIAkJYnVmX3Bvb2xfbXV0ZXhfZXhpdChidWZfcG9vbCk7CiAJfQogCi0JdXRfYWQoIWlidWZf aW5zaWRlKCkgfHwgKG1vZGUgPT0gQlVGX0tFRVBfT0xEKSk7CisJdXRfYWQoIWlidWZfaW5zaWRl KG10cikgfHwgbW9kZSA9PSBCVUZfS0VFUF9PTEQpOwogCiAJaWYgKHJ3X2xhdGNoID09IFJXX1Nf TEFUQ0gpIHsKIAkJc3VjY2VzcyA9IHJ3X2xvY2tfc19sb2NrX25vd2FpdCgmKGJsb2NrLT5sb2Nr KSwKQEAgLTM1ODYsMTQgKzM1ODYsMTMgQEAgYnVmX3BhZ2VfaW5pdF9mb3JfcmVhZCgKIAkJLyog SXQgaXMgYSByZWFkLWFoZWFkIHdpdGhpbiBhbiBpYnVmIHJvdXRpbmUgKi8KIAogCQl1dF9hZCgh aWJ1Zl9iaXRtYXBfcGFnZSh6aXBfc2l6ZSwgb2Zmc2V0KSk7Ci0JCXV0X2FkKGlidWZfaW5zaWRl KCkpOwogCi0JCW10cl9zdGFydCgmbXRyKTsKKwkJaWJ1Zl9tdHJfc3RhcnQoJm10cik7CiAKIAkJ aWYgKCFyZWN2X25vX2lidWZfb3BlcmF0aW9ucwogCQkgICAgJiYgIWlidWZfcGFnZShzcGFjZSwg emlwX3NpemUsIG9mZnNldCwgJm10cikpIHsKIAotCQkJbXRyX2NvbW1pdCgmbXRyKTsKKwkJCWli dWZfbXRyX2NvbW1pdCgmbXRyKTsKIAogCQkJcmV0dXJuKE5VTEwpOwogCQl9CkBAIC0zNzc4LDcg KzM3NzcsNyBAQCBmdW5jX2V4aXQ6CiAKIAlpZiAobW9kZSA9PSBCVUZfUkVBRF9JQlVGX1BBR0VT X09OTFkpIHsKIAotCQltdHJfY29tbWl0KCZtdHIpOworCQlpYnVmX210cl9jb21taXQoJm10cik7 CiAJfQogCiAJdXRfYWQoIWJwYWdlIHx8IGJ1Zl9wYWdlX2luX2ZpbGUoYnBhZ2UpKTsKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwcmVhLmMnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvYnVmL2J1ZjByZWEuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDMyMjExMzkxNi1vcmljdzAycWczdHp2aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVm L2J1ZjByZWEuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMDAxNC1o azFpdzUyOXF4ajZsdmVxCkBAIC0yMzYsMTAgKzIzNiwxMCBAQCBVTklWX0lOVEVSTgogdWxpbnQK IGJ1Zl9yZWFkX2FoZWFkX2xpbmVhcigKIC8qPT09PT09PT09PT09PT09PT09Ki8KLQl1bGludAlz cGFjZSwJLyohPCBpbjogc3BhY2UgaWQgKi8KLQl1bGludAl6aXBfc2l6ZSwvKiE8IGluOiBjb21w cmVzc2VkIHBhZ2Ugc2l6ZSBpbiBieXRlcywgb3IgMCAqLwotCXVsaW50CW9mZnNldCkJLyohPCBp bjogcGFnZSBudW1iZXIgb2YgYSBwYWdlOyBOT1RFOiB0aGUgY3VycmVudCB0aHJlYWQKLQkJCW11 c3Qgd2FudCBhY2Nlc3MgdG8gdGhpcyBwYWdlIChzZWUgTk9URSAzIGFib3ZlKSAqLworCXVsaW50 CXNwYWNlLAkJLyohPCBpbjogc3BhY2UgaWQgKi8KKwl1bGludAl6aXBfc2l6ZSwJLyohPCBpbjog Y29tcHJlc3NlZCBwYWdlIHNpemUgaW4gYnl0ZXMsIG9yIDAgKi8KKwl1bGludAlvZmZzZXQsCQkv KiE8IGluOiBwYWdlIG51bWJlcjsgc2VlIE5PVEUgMyBhYm92ZSAqLworCWlib29sCWluc2lkZV9p YnVmKQkvKiE8IGluOiBUUlVFIGlmIHdlIGFyZSBpbnNpZGUgaWJ1ZiByb3V0aW5lICovCiB7CiAJ YnVmX3Bvb2xfdCoJYnVmX3Bvb2wgPSBidWZfcG9vbF9nZXQoc3BhY2UsIG9mZnNldCk7CiAJaWJf aW50NjRfdAl0YWJsZXNwYWNlX3ZlcnNpb247CkBAIC00MjksMTEgKzQyOSw5IEBAIGJ1Zl9yZWFk X2FoZWFkX2xpbmVhcigKIAogCS8qIElmIHdlIGdvdCB0aGlzIGZhciwgcmVhZC1haGVhZCBjYW4g YmUgc2Vuc2libGU6IGRvIGl0ICovCiAKLQlpZiAoaWJ1Zl9pbnNpZGUoKSkgewotCQlpYnVmX21v ZGUgPSBCVUZfUkVBRF9JQlVGX1BBR0VTX09OTFk7Ci0JfSBlbHNlIHsKLQkJaWJ1Zl9tb2RlID0g QlVGX1JFQURfQU5ZX1BBR0U7Ci0JfQorCWlidWZfbW9kZSA9IGluc2lkZV9pYnVmCisJCT8gQlVG X1JFQURfSUJVRl9QQUdFU19PTkxZIHwgT1NfQUlPX1NJTVVMQVRFRF9XQUtFX0xBVEVSCisJCTog QlVGX1JFQURfQU5ZX1BBR0UgfCBPU19BSU9fU0lNVUxBVEVEX1dBS0VfTEFURVI7CiAKIAljb3Vu dCA9IDA7CiAKQEAgLTQ1MCw3ICs0NDgsNyBAQCBidWZfcmVhZF9haGVhZF9saW5lYXIoCiAJCWlm ICghaWJ1Zl9iaXRtYXBfcGFnZSh6aXBfc2l6ZSwgaSkpIHsKIAkJCWNvdW50ICs9IGJ1Zl9yZWFk X3BhZ2VfbG93KAogCQkJCSZlcnIsIEZBTFNFLAotCQkJCWlidWZfbW9kZSB8IE9TX0FJT19TSU1V TEFURURfV0FLRV9MQVRFUiwKKwkJCQlpYnVmX21vZGUsCiAJCQkJc3BhY2UsIHppcF9zaXplLCBG QUxTRSwgdGFibGVzcGFjZV92ZXJzaW9uLCBpKTsKIAkJCWlmIChlcnIgPT0gREJfVEFCTEVTUEFD RV9ERUxFVEVEKSB7CiAJCQkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CkBAIC01MjAsNyAr NTE4LDYgQEAgYnVmX3JlYWRfaWJ1Zl9tZXJnZV9wYWdlcygKIHsKIAl1bGludAlpOwogCi0JdXRf YWQoIWlidWZfaW5zaWRlKCkpOwogI2lmZGVmIFVOSVZfSUJVRl9ERUJVRwogCXV0X2Eobl9zdG9y ZWQgPCBVTklWX1BBR0VfU0laRSk7CiAjZW5kaWYKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2ZpbC9maWwwZmlsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvZmlsL2ZpbDBm aWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjExMzkxNi1vcmljdzAy cWczdHp2aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvZmlsL2ZpbDBmaWwuYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMDAxNC1oazFpdzUyOXF4ajZsdmVxCkBAIC00 MzQyLDggKzQzNDIsNiBAQCBmaWxfaW8oCiAJdXRfYWQocmVjdl9ub19pYnVmX29wZXJhdGlvbnMg fHwgKHR5cGUgPT0gT1NfRklMRV9XUklURSkKIAkgICAgICB8fCAhaWJ1Zl9iaXRtYXBfcGFnZSh6 aXBfc2l6ZSwgYmxvY2tfb2Zmc2V0KQogCSAgICAgIHx8IHN5bmMgfHwgaXNfbG9nKTsKLQl1dF9h ZCghaWJ1Zl9pbnNpZGUoKSB8fCBpc19sb2cgfHwgKHR5cGUgPT0gT1NfRklMRV9XUklURSkKLQkg ICAgICB8fCBpYnVmX3BhZ2Uoc3BhY2VfaWQsIHppcF9zaXplLCBibG9ja19vZmZzZXQsIE5VTEwp KTsKICMgZW5kaWYgLyogVU5JVl9MT0dfREVCVUcgKi8KIAlpZiAoc3luYykgewogCQltb2RlID0g T1NfQUlPX1NZTkM7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVy L2hhX2lubm9kYi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5j YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjExMzkxNi1vcmljdzAycWcz dHp2aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQxMjAwMTQtaGsxaXc1MjlxeGo2bHZlcQpA QCAtODIsNyArODIsNiBAQCBleHRlcm4gIkMiIHsKICNpbmNsdWRlICJmaWwwZmlsLmgiCiAjaW5j bHVkZSAidHJ4MHhhLmgiCiAjaW5jbHVkZSAicm93MG1lcmdlLmgiCi0jaW5jbHVkZSAidGhyMGxv Yy5oIgogI2luY2x1ZGUgImRpY3QwYm9vdC5oIgogI2luY2x1ZGUgImhhX3Byb3RvdHlwZXMuaCIK ICNpbmNsdWRlICJ1dDBtZW0uaCIKQEAgLTI4MCw3ICsyNzksNiBAQCBzdGF0aWMgUFNJX211dGV4 X2luZm8gYWxsX2lubm9kYl9tdXRleGVzCiAJeyZzeW5jX3RocmVhZF9tdXRleF9rZXksICJzeW5j X3RocmVhZF9tdXRleCIsIDB9LAogIyAgZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAJeyZ0 cnhfZG91Ymxld3JpdGVfbXV0ZXhfa2V5LCAidHJ4X2RvdWJsZXdyaXRlX211dGV4IiwgMH0sCi0J eyZ0aHJfbG9jYWxfbXV0ZXhfa2V5LCAidGhyX2xvY2FsX211dGV4IiwgMH0sCiAJeyZ0cnhfdW5k b19tdXRleF9rZXksICJ0cnhfdW5kb19tdXRleCIsIDB9CiB9OwogIyBlbmRpZiAvKiBVTklWX1BG U19NVVRFWCAqLwpAQCAtMzA0Miw3ICszMDQwLDYgQEAgaW5ub2Jhc2VfY2xvc2VfY29ubmVjdGlv bigKIAogCWlubm9iYXNlX3JvbGxiYWNrX3RyeCh0cngpOwogCi0JdGhyX2xvY2FsX2ZyZWUodHJ4 LT5teXNxbF90aHJlYWRfaWQpOwogCXRyeF9mcmVlX2Zvcl9teXNxbCh0cngpOwogCiAJREJVR19S RVRVUk4oMCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYw aWJ1Zi5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBpYnVmLmMJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjIxMTM5MTYtb3JpY3cwMnFnM3R6dmltOAorKysg Yi9zdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBpYnVmLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTAzMjQxMjAwMTQtaGsxaXc1MjlxeGo2bHZlcQpAQCAtNDQsNyArNDQsNiBA QCBDcmVhdGVkIDcvMTkvMTk5NyBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJmc3AwZnNwLmgiCiAj aW5jbHVkZSAidHJ4MHN5cy5oIgogI2luY2x1ZGUgImZpbDBmaWwuaCIKLSNpbmNsdWRlICJ0aHIw bG9jLmgiCiAjaW5jbHVkZSAicmVtMHJlYy5oIgogI2luY2x1ZGUgImJ0cjBjdXIuaCIKICNpbmNs dWRlICJidHIwcGN1ci5oIgpAQCAtMzI0LDUyICszMjMsNDMgQEAgc3RpbGwgcGh5c2ljYWxseSBs aWtlIHRoZSBpbmRleCBwYWdlIGV2ZQogZHJvcHBlZCEgU28sIHRoZXJlIHNlZW1zIHRvIGJlIG5v IHByb2JsZW0uICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1TZXRzIHRoZSBmbGFnIGluIHRoZSBjdXJy ZW50IE9TIHRocmVhZCBsb2NhbCBzdG9yYWdlIGRlbm90aW5nIHRoYXQgaXQgaXMKK1NldHMgdGhl IGZsYWcgaW4gdGhlIGN1cnJlbnQgbWluaS10cmFuc2FjdGlvbiByZWNvcmQgaW5kaWNhdGluZyB3 ZSdyZQogaW5zaWRlIGFuIGluc2VydCBidWZmZXIgcm91dGluZS4gKi8KIFVOSVZfSU5MSU5FCiB2 b2lkCi1pYnVmX2VudGVyKHZvaWQpCi0vKj09PT09PT09PT09PSovCitpYnVmX2VudGVyKAorLyo9 PT09PT09Ki8KKwltdHJfdCoJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLwog ewotCWlib29sKglwdHI7Ci0KLQlwdHIgPSB0aHJfbG9jYWxfZ2V0X2luX2lidWZfZmllbGQoKTsK LQotCXV0X2FkKCpwdHIgPT0gRkFMU0UpOwotCi0JKnB0ciA9IFRSVUU7CisJdXRfYWQoIW10ci0+ aW5zaWRlX2lidWYpOworCW10ci0+aW5zaWRlX2lidWYgPSBUUlVFOwogfQogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgotU2V0cyB0aGUgZmxhZyBpbiB0aGUgY3VycmVudCBPUyB0aHJlYWQgbG9jYWwgc3RvcmFn ZSBkZW5vdGluZyB0aGF0IGl0IGlzCitTZXRzIHRoZSBmbGFnIGluIHRoZSBjdXJyZW50IG1pbmkt dHJhbnNhY3Rpb24gcmVjb3JkIGluZGljYXRpbmcgd2UncmUKIGV4aXRpbmcgYW4gaW5zZXJ0IGJ1 ZmZlciByb3V0aW5lLiAqLwogVU5JVl9JTkxJTkUKIHZvaWQKLWlidWZfZXhpdCh2b2lkKQotLyo9 PT09PT09PT09PSovCitpYnVmX2V4aXQoCisvKj09PT09PSovCisJbXRyX3QqCW10cikJLyohPCBp bi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKLQlpYm9vbCoJcHRyOwotCi0JcHRyID0gdGhy X2xvY2FsX2dldF9pbl9pYnVmX2ZpZWxkKCk7Ci0KLQl1dF9hZCgqcHRyID09IFRSVUUpOwotCi0J KnB0ciA9IEZBTFNFOworCXV0X2FkKG10ci0+aW5zaWRlX2lidWYpOworCW10ci0+aW5zaWRlX2li dWYgPSBGQUxTRTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJldHVybnMgVFJVRSBpZiB0aGUgY3Vy cmVudCBPUyB0aHJlYWQgaXMgcGVyZm9ybWluZyBhbiBpbnNlcnQgYnVmZmVyCi1yb3V0aW5lLgot Ci1Gb3IgaW5zdGFuY2UsIGEgcmVhZC1haGVhZCBvZiBub24taWJ1ZiBwYWdlcyBpcyBmb3JiaWRk ZW4gYnkgdGhyZWFkcwotdGhhdCBhcmUgZXhlY3V0aW5nIGFuIGluc2VydCBidWZmZXIgcm91dGlu ZS4KLUByZXR1cm4gVFJVRSBpZiBpbnNpZGUgYW4gaW5zZXJ0IGJ1ZmZlciByb3V0aW5lICovCi1V TklWX0lOVEVSTgotaWJvb2wKLWlidWZfaW5zaWRlKHZvaWQpCi0vKj09PT09PT09PT09PT0qLwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgorQ29tbWl0cyBhbiBpbnNlcnQgYnVmZmVyIG1pbmktdHJhbnNhY3Rpb24gYW5k IHNldHMgdGhlIHBlcnNpc3RlbnQKK2N1cnNvciBsYXRjaCBtb2RlIHRvIEJUUl9OT19MQVRDSEVT LCB0aGF0IGlzLCBkZXRhY2hlcyB0aGUgY3Vyc29yLiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2li dWZfYnRyX3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKAorLyo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSovCisJYnRyX3BjdXJfdCoJcGN1ciwJLyohPCBpbi9vdXQ6IHBlcnNpc3RlbnQgY3Vy c29yICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCiB7 Ci0JcmV0dXJuKCp0aHJfbG9jYWxfZ2V0X2luX2lidWZfZmllbGQoKSk7CisJdXRfZChpYnVmX2V4 aXQobXRyKSk7CisJYnRyX3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKHBjdXIsIG10cik7CiB9CiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCkBAIC0zNzksMTEgKzM2OSwxMSBAQCBzdGF0aWMKIHBhZ2VfdCoKIGli dWZfaGVhZGVyX3BhZ2VfZ2V0KAogLyo9PT09PT09PT09PT09PT09PSovCi0JbXRyX3QqCW10cikJ LyohPCBpbjogbXRyICovCisJbXRyX3QqCW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rp b24gKi8KIHsKIAlidWZfYmxvY2tfdCoJYmxvY2s7CiAKLQl1dF9hZCghaWJ1Zl9pbnNpZGUoKSk7 CisJdXRfYWQoIWlidWZfaW5zaWRlKG10cikpOwogCiAJYmxvY2sgPSBidWZfcGFnZV9nZXQoCiAJ CUlCVUZfU1BBQ0VfSUQsIDAsIEZTUF9JQlVGX0hFQURFUl9QQUdFX05PLCBSV19YX0xBVENILCBt dHIpOwpAQCAtNDA0LDcgKzM5NCw3IEBAIGlidWZfdHJlZV9yb290X2dldCgKIAlidWZfYmxvY2tf dCoJYmxvY2s7CiAJcGFnZV90KgkJcm9vdDsKIAotCXV0X2FkKGlidWZfaW5zaWRlKCkpOworCXV0 X2FkKGlidWZfaW5zaWRlKG10cikpOwogCXV0X2FkKG11dGV4X293bigmaWJ1Zl9tdXRleCkpOwog CiAJbXRyX3hfbG9jayhkaWN0X2luZGV4X2dldF9sb2NrKGlidWYtPmluZGV4KSwgbXRyKTsKQEAg LTU0Nyw3ICs1MzcsNyBAQCBpYnVmX2luaXRfYXRfZGJfc3RhcnQodm9pZCkKIAogCWZzZWdfbl9y ZXNlcnZlZF9wYWdlcyhoZWFkZXJfcGFnZSArIElCVUZfSEVBREVSICsgSUJVRl9UUkVFX1NFR19I RUFERVIsCiAJCQkgICAgICAmbl91c2VkLCAmbXRyKTsKLQlpYnVmX2VudGVyKCk7CisJaWJ1Zl9l bnRlcigmbXRyKTsKIAogCXV0X2FkKG5fdXNlZCA+PSAyKTsKIApAQCAtNTY4LDkgKzU1OCw3IEBA IGlidWZfaW5pdF9hdF9kYl9zdGFydCh2b2lkKQogCW11dGV4X2V4aXQoJmlidWZfbXV0ZXgpOwog CiAJaWJ1Zi0+ZW1wdHkgPSAocGFnZV9nZXRfbl9yZWNzKHJvb3QpID09IDApOwotCW10cl9jb21t aXQoJm10cik7Ci0KLQlpYnVmX2V4aXQoKTsKKwlpYnVmX210cl9jb21taXQoJm10cik7CiAKIAlo ZWFwID0gbWVtX2hlYXBfY3JlYXRlKDQ1MCk7CiAKQEAgLTEyMzAsMTkgKzEyMTgsMzAgQEAgaWJ1 Zl9wYWdlX2xvdygKIAlyZXR1cm4ocmV0KTsKIH0KIAorI2lmZGVmIFVOSVZfREVCVUcKKyMgZGVm aW5lIGlidWZfcmVjX2dldF9wYWdlX25vKG10cixyZWMpIGlidWZfcmVjX2dldF9wYWdlX25vX2Z1 bmMobXRyLHJlYykKKyNlbHNlIC8qIFVOSVZfREVCVUcgKi8KKyMgZGVmaW5lIGlidWZfcmVjX2dl dF9wYWdlX25vKG10cixyZWMpIGlidWZfcmVjX2dldF9wYWdlX25vX2Z1bmMocmVjKQorI2VuZGlm IC8qIFVOSVZfREVCVUcgKi8KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmV0dXJucyB0aGUgcGFnZSBu dW1iZXIgZmllbGQgb2YgYW4gaWJ1ZiByZWNvcmQuCiBAcmV0dXJuCXBhZ2UgbnVtYmVyICovCiBz dGF0aWMKIHVsaW50Ci1pYnVmX3JlY19nZXRfcGFnZV9ubygKLS8qPT09PT09PT09PT09PT09PT0q LworaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm9fZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09PSov CisjaWZkZWYgVU5JVl9ERUJVRworCW10cl90KgkJbXRyLAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0 aW9uIG93bmluZyByZWMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJY29uc3QgcmVjX3Qq CXJlYykJLyohPCBpbjogaWJ1ZiByZWNvcmQgKi8KIHsKIAljb25zdCBieXRlKglmaWVsZDsKIAl1 bGludAkJbGVuOwogCi0JdXRfYWQoaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQobXRyX21lbW9fY29u dGFpbnNfcGFnZShtdHIsIHJlYywgTVRSX01FTU9fUEFHRV9YX0ZJWCkKKwkgICAgICB8fCBtdHJf bWVtb19jb250YWluc19wYWdlKG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1NfRklYKSk7CisJdXRf YWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQocmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKSA+ IDIpOwogCiAJZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCAxLCAmbGVuKTsKQEAg LTEyNjQsMjAgKzEyNjMsMzEgQEAgaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8oCiAJcmV0dXJuKG1hY2hf cmVhZF9mcm9tXzQoZmllbGQpKTsKIH0KIAorI2lmZGVmIFVOSVZfREVCVUcKKyMgZGVmaW5lIGli dWZfcmVjX2dldF9zcGFjZShtdHIscmVjKSBpYnVmX3JlY19nZXRfc3BhY2VfZnVuYyhtdHIscmVj KQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgaWJ1Zl9yZWNfZ2V0X3NwYWNlKG10 cixyZWMpIGlidWZfcmVjX2dldF9zcGFjZV9mdW5jKHJlYykKKyNlbmRpZiAvKiBVTklWX0RFQlVH ICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMgdGhlIHNwYWNlIGlkIGZpZWxkIG9mIGFu IGlidWYgcmVjb3JkLiBGb3IgPCA0LjEueCBmb3JtYXQgcmVjb3JkcwogcmV0dXJucyAwLgogQHJl dHVybglzcGFjZSBpZCAqLwogc3RhdGljCiB1bGludAotaWJ1Zl9yZWNfZ2V0X3NwYWNlKAotLyo9 PT09PT09PT09PT09PT0qLworaWJ1Zl9yZWNfZ2V0X3NwYWNlX2Z1bmMoCisvKj09PT09PT09PT09 PT09PT09PT09Ki8KKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQltdHIsCS8qITwgaW46IG1p bmktdHJhbnNhY3Rpb24gb3duaW5nIHJlYyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAlj b25zdCByZWNfdCoJcmVjKQkvKiE8IGluOiBpYnVmIHJlY29yZCAqLwogewogCWNvbnN0IGJ5dGUq CWZpZWxkOwogCXVsaW50CQlsZW47CiAKLQl1dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZCht dHJfbWVtb19jb250YWluc19wYWdlKG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1hfRklYKQorCSAg ICAgIHx8IG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfU19G SVgpKTsKKwl1dF9hZChpYnVmX2luc2lkZShtdHIpKTsKIAl1dF9hZChyZWNfZ2V0X25fZmllbGRz X29sZChyZWMpID4gMik7CiAKIAlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIDEs ICZsZW4pOwpAQCAtMTI5OCwxMiArMTMwOCwyMiBAQCBpYnVmX3JlY19nZXRfc3BhY2UoCiAJcmV0 dXJuKDApOwogfQogCisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZpbmUgaWJ1Zl9yZWNfZ2V0X2lu Zm8obXRyLHJlYyxvcCxjb21wLGluZm9fbGVuLGNvdW50ZXIpCVwKKwlpYnVmX3JlY19nZXRfaW5m b19mdW5jKG10cixyZWMsb3AsY29tcCxpbmZvX2xlbixjb3VudGVyKQorI2Vsc2UgLyogVU5JVl9E RUJVRyAqLworIyBkZWZpbmUgaWJ1Zl9yZWNfZ2V0X2luZm8obXRyLHJlYyxvcCxjb21wLGluZm9f bGVuLGNvdW50ZXIpCVwKKwlpYnVmX3JlY19nZXRfaW5mb19mdW5jKHJlYyxvcCxjb21wLGluZm9f bGVuLGNvdW50ZXIpCisjZW5kaWYKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0IHZhcmlvdXMgaW5mb3JtYXRp b24gYWJvdXQgYW4gaWJ1ZiByZWNvcmQgaW4gPj0gNC4xLnggZm9ybWF0LiAqLwogc3RhdGljCiB2 b2lkCi1pYnVmX3JlY19nZXRfaW5mbygKLS8qPT09PT09PT09PT09PT0qLworaWJ1Zl9yZWNfZ2V0 X2luZm9fZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9ERUJVRwor CW10cl90KgkJbXRyLAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uIG93bmluZyByZWMgKi8KKyNl bmRpZiAvKiBVTklWX0RFQlVHICovCiAJY29uc3QgcmVjX3QqCXJlYywJCS8qITwgaW46IGlidWYg cmVjb3JkICovCiAJaWJ1Zl9vcF90KglvcCwJCS8qITwgb3V0OiBvcGVyYXRpb24gdHlwZSwgb3Ig TlVMTCAqLwogCWlib29sKgkJY29tcCwJCS8qITwgb3V0OiBjb21wYWN0IGZsYWcsIG9yIE5VTEwg Ki8KQEAgLTEzMjIsNyArMTM0Miw5IEBAIGlidWZfcmVjX2dldF9pbmZvKAogCXVsaW50CQlpbmZv X2xlbl9sb2NhbDsKIAl1bGludAkJY291bnRlcl9sb2NhbDsKIAotCXV0X2FkKGlidWZfaW5zaWRl KCkpOworCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BB R0VfWF9GSVgpCisJICAgICAgfHwgbXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHJlYywgTVRS X01FTU9fUEFHRV9TX0ZJWCkpOworCXV0X2FkKGlidWZfaW5zaWRlKG10cikpOwogCWZpZWxkcyA9 IHJlY19nZXRfbl9maWVsZHNfb2xkKHJlYyk7CiAJdXRfYShmaWVsZHMgPiA0KTsKIApAQCAtMTM3 MSwxOCArMTM5MywyOSBAQCBpYnVmX3JlY19nZXRfaW5mbygKIAl9CiB9CiAKKyNpZmRlZiBVTklW X0RFQlVHCisjIGRlZmluZSBpYnVmX3JlY19nZXRfb3BfdHlwZShtdHIscmVjKSBpYnVmX3JlY19n ZXRfb3BfdHlwZV9mdW5jKG10cixyZWMpCisjZWxzZSAvKiBVTklWX0RFQlVHICovCisjIGRlZmlu ZSBpYnVmX3JlY19nZXRfb3BfdHlwZShtdHIscmVjKSBpYnVmX3JlY19nZXRfb3BfdHlwZV9mdW5j KHJlYykKKyNlbmRpZgorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMgdGhlIG9wZXJhdGlvbiB0eXBl IGZpZWxkIG9mIGFuIGlidWYgcmVjb3JkLgogQHJldHVybglvcGVyYXRpb24gdHlwZSAqLwogc3Rh dGljCiBpYnVmX29wX3QKLWlidWZfcmVjX2dldF9vcF90eXBlKAotLyo9PT09PT09PT09PT09PT09 PSovCitpYnVmX3JlY19nZXRfb3BfdHlwZV9mdW5jKAorLyo9PT09PT09PT09PT09PT09PT09PT09 Ki8KKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQltdHIsCS8qITwgaW46IG1pbmktdHJhbnNh Y3Rpb24gb3duaW5nIHJlYyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAljb25zdCByZWNf dCoJcmVjKQkvKiE8IGluOiBpYnVmIHJlY29yZCAqLwogewogCXVsaW50CQlsZW47CiAKLQl1dF9h ZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZChtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgcmVj LCBNVFJfTUVNT19QQUdFX1hfRklYKQorCSAgICAgIHx8IG10cl9tZW1vX2NvbnRhaW5zX3BhZ2Uo bXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfU19GSVgpKTsKKwl1dF9hZChpYnVmX2luc2lkZShtdHIp KTsKIAl1dF9hZChyZWNfZ2V0X25fZmllbGRzX29sZChyZWMpID4gMik7CiAKIAkodm9pZCkgcmVj X2dldF9udGhfZmllbGRfb2xkKHJlYywgMSwgJmxlbik7CkBAIC0xMzk0LDcgKzE0MjcsNyBAQCBp YnVmX3JlY19nZXRfb3BfdHlwZSgKIAl9IGVsc2UgewogCQlpYnVmX29wX3QJb3A7CiAKLQkJaWJ1 Zl9yZWNfZ2V0X2luZm8ocmVjLCAmb3AsIE5VTEwsIE5VTEwsIE5VTEwpOworCQlpYnVmX3JlY19n ZXRfaW5mbyhtdHIsIHJlYywgJm9wLCBOVUxMLCBOVUxMLCBOVUxMKTsKIAogCQlyZXR1cm4ob3Ap OwogCX0KQEAgLTE1OTMsNiArMTYyNiwxNCBAQCBpYnVmX2J1aWxkX2VudHJ5X3ByZV80XzFfeCgK IAlyZXR1cm4odHVwbGUpOwogfQogCisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZpbmUgaWJ1Zl9i dWlsZF9lbnRyeV9mcm9tX2lidWZfcmVjKG10cixpYnVmX3JlYyxoZWFwLHBpbmRleCkJXAorCWli dWZfYnVpbGRfZW50cnlfZnJvbV9pYnVmX3JlY19mdW5jKG10cixpYnVmX3JlYyxoZWFwLHBpbmRl eCkKKyNlbHNlIC8qIFVOSVZfREVCVUcgKi8KKyMgZGVmaW5lIGlidWZfYnVpbGRfZW50cnlfZnJv bV9pYnVmX3JlYyhtdHIsaWJ1Zl9yZWMsaGVhcCxwaW5kZXgpCVwKKwlpYnVmX2J1aWxkX2VudHJ5 X2Zyb21faWJ1Zl9yZWNfZnVuYyhpYnVmX3JlYyxoZWFwLHBpbmRleCkKKyNlbmRpZgorCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgogQnVpbGRzIHRoZSBlbnRyeSB1c2VkIHRvCiAKQEAgLTE2MTEsOCArMTY1 MiwxMSBAQCBob2xkIGEgbGF0Y2ggdG8gdGhlIGlidWZfcmVjIHBhZ2UgYXMgbG9uCiBAcmV0dXJu IG93bjogZW50cnkgdG8gaW5zZXJ0IHRvIGEgbm9uLWNsdXN0ZXJlZCBpbmRleCAqLwogc3RhdGlj CiBkdHVwbGVfdCoKLWlidWZfYnVpbGRfZW50cnlfZnJvbV9pYnVmX3JlYygKLS8qPT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KK2lidWZfYnVpbGRfZW50cnlfZnJvbV9pYnVmX3JlY19mdW5j KAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9ERUJV RworCW10cl90KgkJbXRyLAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uIG93bmluZyByZWMgKi8K KyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJY29uc3QgcmVjX3QqCWlidWZfcmVjLAkvKiE8IGlu OiByZWNvcmQgaW4gYW4gaW5zZXJ0IGJ1ZmZlciAqLwogCW1lbV9oZWFwX3QqCWhlYXAsCQkvKiE8 IGluOiBoZWFwIHdoZXJlIGJ1aWx0ICovCiAJZGljdF9pbmRleF90KioJcGluZGV4KQkJLyohPCBv dXQsIG93bjogZHVtbXkgaW5kZXggdGhhdApAQCAtMTYyOSw2ICsxNjczLDEwIEBAIGlidWZfYnVp bGRfZW50cnlfZnJvbV9pYnVmX3JlYygKIAl1bGludAkJY29tcDsKIAlkaWN0X2luZGV4X3QqCWlu ZGV4OwogCisJdXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIGlidWZfcmVjLCBNVFJf TUVNT19QQUdFX1hfRklYKQorCSAgICAgIHx8IG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCBp YnVmX3JlYywgTVRSX01FTU9fUEFHRV9TX0ZJWCkpOworCXV0X2FkKGlidWZfaW5zaWRlKG10cikp OworCiAJZGF0YSA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChpYnVmX3JlYywgMSwgJmxlbik7CiAK IAlpZiAobGVuID4gMSkgewpAQCAtMTY0OSw3ICsxNjk3LDcgQEAgaWJ1Zl9idWlsZF9lbnRyeV9m cm9tX2lidWZfcmVjKAogCiAJdHlwZXMgPSByZWNfZ2V0X250aF9maWVsZF9vbGQoaWJ1Zl9yZWMs IDMsICZsZW4pOwogCi0JaWJ1Zl9yZWNfZ2V0X2luZm8oaWJ1Zl9yZWMsIE5VTEwsICZjb21wLCAm aW5mb19sZW4sIE5VTEwpOworCWlidWZfcmVjX2dldF9pbmZvKG10ciwgaWJ1Zl9yZWMsIE5VTEws ICZjb21wLCAmaW5mb19sZW4sIE5VTEwpOwogCiAJaW5kZXggPSBpYnVmX2R1bW15X2luZGV4X2Ny ZWF0ZShuX2ZpZWxkcywgY29tcCk7CiAKQEAgLTE3MzYsNiArMTc4NCwxMiBAQCBpYnVmX3JlY19n ZXRfc2l6ZSgKIAlyZXR1cm4oc2l6ZSk7CiB9CiAKKyNpZmRlZiBVTklWX0RFQlVHCisjIGRlZmlu ZSBpYnVmX3JlY19nZXRfdm9sdW1lKG10cixyZWMpIGlidWZfcmVjX2dldF92b2x1bWVfZnVuYyht dHIscmVjKQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgaWJ1Zl9yZWNfZ2V0X3Zv bHVtZShtdHIscmVjKSBpYnVmX3JlY19nZXRfdm9sdW1lX2Z1bmMocmVjKQorI2VuZGlmCisKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKIFJldHVybnMgdGhlIHNwYWNlIHRha2VuIGJ5IGEgc3RvcmVkIG5vbi1j bHVzdGVyZWQgaW5kZXggZW50cnkgaWYgY29udmVydGVkIHRvCiBhbiBpbmRleCByZWNvcmQuCkBA IC0xNzQzLDggKzE3OTcsMTEgQEAgYW4gaW5kZXggcmVjb3JkLgogdGFrZW4gaW4gdGhlIHBhZ2Ug ZGlyZWN0b3J5ICovCiBzdGF0aWMKIHVsaW50Ci1pYnVmX3JlY19nZXRfdm9sdW1lKAotLyo9PT09 PT09PT09PT09PT09Ki8KK2lidWZfcmVjX2dldF92b2x1bWVfZnVuYygKKy8qPT09PT09PT09PT09 PT09PT09PT09Ki8KKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQltdHIsCS8qITwgaW46IG1p bmktdHJhbnNhY3Rpb24gb3duaW5nIHJlYyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAlj b25zdCByZWNfdCoJaWJ1Zl9yZWMpLyohPCBpbjogaWJ1ZiByZWNvcmQgKi8KIHsKIAl1bGludAkJ bGVuOwpAQCAtMTc1NSw3ICsxODEyLDkgQEAgaWJ1Zl9yZWNfZ2V0X3ZvbHVtZSgKIAlpYm9vbAkJ cHJlXzRfMTsKIAl1bGludAkJY29tcDsKIAotCXV0X2FkKGlidWZfaW5zaWRlKCkpOworCXV0X2Fk KG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCBpYnVmX3JlYywgTVRSX01FTU9fUEFHRV9YX0ZJ WCkKKwkgICAgICB8fCBtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgaWJ1Zl9yZWMsIE1UUl9N RU1PX1BBR0VfU19GSVgpKTsKKwl1dF9hZChpYnVmX2luc2lkZShtdHIpKTsKIAl1dF9hZChyZWNf Z2V0X25fZmllbGRzX29sZChpYnVmX3JlYykgPiAyKTsKIAogCWRhdGEgPSByZWNfZ2V0X250aF9m aWVsZF9vbGQoaWJ1Zl9yZWMsIDEsICZsZW4pOwpAQCAtMTc4Myw3ICsxODQyLDcgQEAgaWJ1Zl9y ZWNfZ2V0X3ZvbHVtZSgKIAogCQl0eXBlcyA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChpYnVmX3Jl YywgMywgJmxlbik7CiAKLQkJaWJ1Zl9yZWNfZ2V0X2luZm8oaWJ1Zl9yZWMsICZvcCwgJmNvbXAs ICZpbmZvX2xlbiwgTlVMTCk7CisJCWlidWZfcmVjX2dldF9pbmZvKG10ciwgaWJ1Zl9yZWMsICZv cCwgJmNvbXAsICZpbmZvX2xlbiwgTlVMTCk7CiAKIAkJaWYgKG9wID09IElCVUZfT1BfREVMRVRF X01BUksgfHwgb3AgPT0gSUJVRl9PUF9ERUxFVEUpIHsKIAkJCS8qIERlbGV0ZS1tYXJraW5nIGEg cmVjb3JkIGRvZXNuJ3QgdGFrZSBhbnkKQEAgLTE4MDAsNyArMTg1OSw3IEBAIGlidWZfcmVjX2dl dF92b2x1bWUoCiAJCQltZW1faGVhcF90KgloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDUwMCk7CiAK IAkJCWVudHJ5ID0gaWJ1Zl9idWlsZF9lbnRyeV9mcm9tX2lidWZfcmVjKAotCQkJCWlidWZfcmVj LCBoZWFwLCAmZHVtbXlfaW5kZXgpOworCQkJCW10ciwgaWJ1Zl9yZWMsIGhlYXAsICZkdW1teV9p bmRleCk7CiAKIAkJCXZvbHVtZSA9IHJlY19nZXRfY29udmVydGVkX3NpemUoZHVtbXlfaW5kZXgs IGVudHJ5LCAwKTsKIApAQCAtMjE1OCwyMSArMjIxNywxNSBAQCBpYnVmX2FkZF9mcmVlX3BhZ2Uo dm9pZCkKIAkJbXRyX2NvbW1pdCgmbXRyKTsKIAogCQlyZXR1cm4oRkFMU0UpOwotCX0KLQotCXsK LQkJYnVmX2Jsb2NrX3QqCWJsb2NrOwotCi0JCWJsb2NrID0gYnVmX3BhZ2VfZ2V0KAorCX0gZWxz ZSB7CisJCWJ1Zl9ibG9ja190KglibG9jayA9IGJ1Zl9wYWdlX2dldCgKIAkJCUlCVUZfU1BBQ0Vf SUQsIDAsIHBhZ2Vfbm8sIFJXX1hfTEFUQ0gsICZtdHIpOwotCiAJCWJ1Zl9ibG9ja19kYmdfYWRk X2xldmVsKGJsb2NrLCBTWU5DX1RSRUVfTk9ERV9ORVcpOwogCi0KIAkJcGFnZSA9IGJ1Zl9ibG9j a19nZXRfZnJhbWUoYmxvY2spOwogCX0KIAotCWlidWZfZW50ZXIoKTsKKwlpYnVmX2VudGVyKCZt dHIpOwogCiAJbXV0ZXhfZW50ZXIoJmlidWZfbXV0ZXgpOwogCkBAIC0yMjAwLDkgKzIyNTMsNyBA QCBpYnVmX2FkZF9mcmVlX3BhZ2Uodm9pZCkKIAlpYnVmX2JpdG1hcF9wYWdlX3NldF9iaXRzKAog CQliaXRtYXBfcGFnZSwgcGFnZV9ubywgemlwX3NpemUsIElCVUZfQklUTUFQX0lCVUYsIFRSVUUs ICZtdHIpOwogCi0JbXRyX2NvbW1pdCgmbXRyKTsKLQotCWlidWZfZXhpdCgpOworCWlidWZfbXRy X2NvbW1pdCgmbXRyKTsKIAogCXJldHVybihUUlVFKTsKIH0KQEAgLTIyMzQsNyArMjI4NSw3IEBA IGlidWZfcmVtb3ZlX2ZyZWVfcGFnZSh2b2lkKQogCWhlYWRlcl9wYWdlID0gaWJ1Zl9oZWFkZXJf cGFnZV9nZXQoJm10cik7CiAKIAkvKiBQcmV2ZW50IHBlc3NpbWlzdGljIGluc2VydHMgdG8gaW5z ZXJ0IGJ1ZmZlciB0cmVlcyBmb3IgYSB3aGlsZSAqLwotCWlidWZfZW50ZXIoKTsKKwlpYnVmX2Vu dGVyKCZtdHIpOwogCW11dGV4X2VudGVyKCZpYnVmX3Blc3NpbWlzdGljX2luc2VydF9tdXRleCk7 CiAJbXV0ZXhfZW50ZXIoJmlidWZfbXV0ZXgpOwogCkBAIC0yMjQzLDE0ICsyMjk0LDEyIEBAIGli dWZfcmVtb3ZlX2ZyZWVfcGFnZSh2b2lkKQogCQltdXRleF9leGl0KCZpYnVmX211dGV4KTsKIAkJ bXV0ZXhfZXhpdCgmaWJ1Zl9wZXNzaW1pc3RpY19pbnNlcnRfbXV0ZXgpOwogCi0JCWlidWZfZXhp dCgpOwotCi0JCW10cl9jb21taXQoJm10cik7CisJCWlidWZfbXRyX2NvbW1pdCgmbXRyKTsKIAog CQlyZXR1cm47CiAJfQogCi0JbXRyX3N0YXJ0KCZtdHIyKTsKKwlpYnVmX210cl9zdGFydCgmbXRy Mik7CiAKIAlyb290ID0gaWJ1Zl90cmVlX3Jvb3RfZ2V0KCZtdHIyKTsKIApAQCAtMjI2Myw5ICsy MzEyLDggQEAgaWJ1Zl9yZW1vdmVfZnJlZV9wYWdlKHZvaWQpCiAJYmVjYXVzZSBpbiBmc2VnX2Zy ZWVfcGFnZSB3ZSBhY2Nlc3MgbGV2ZWwgMSBwYWdlcywgYW5kIHRoZSByb290CiAJaXMgYSBsZXZl bCAyIHBhZ2UuICovCiAKLQltdHJfY29tbWl0KCZtdHIyKTsKLQotCWlidWZfZXhpdCgpOworCWli dWZfbXRyX2NvbW1pdCgmbXRyMik7CisJaWJ1Zl9leGl0KCZtdHIpOwogCiAJLyogU2luY2UgcGVz c2ltaXN0aWMgaW5zZXJ0cyB3ZXJlIHByZXZlbnRlZCwgd2Uga25vdyB0aGF0IHRoZQogCXBhZ2Ug aXMgc3RpbGwgaW4gdGhlIGZyZWUgbGlzdC4gTk9URSB0aGF0IGFsc28gZGVsZXRlcyBtYXkgdGFr ZQpAQCAtMjI4MCw3ICsyMzI4LDcgQEAgaWJ1Zl9yZW1vdmVfZnJlZV9wYWdlKHZvaWQpCiAJYnVm X3BhZ2VfcmVzZXRfZmlsZV9wYWdlX3dhc19mcmVlZChJQlVGX1NQQUNFX0lELCBwYWdlX25vKTsK ICNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogCi0J aWJ1Zl9lbnRlcigpOworCWlidWZfZW50ZXIoJm10cik7CiAKIAltdXRleF9lbnRlcigmaWJ1Zl9t dXRleCk7CiAKQEAgLTIzMjUsOSArMjM3Myw3IEBAIGlidWZfcmVtb3ZlX2ZyZWVfcGFnZSh2b2lk KQogI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5JVl9E RUJVRwogCWJ1Zl9wYWdlX3NldF9maWxlX3BhZ2Vfd2FzX2ZyZWVkKElCVUZfU1BBQ0VfSUQsIHBh Z2Vfbm8pOwogI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVH ICovCi0JbXRyX2NvbW1pdCgmbXRyKTsKLQotCWlidWZfZXhpdCgpOworCWlidWZfbXRyX2NvbW1p dCgmbXRyKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMjM0OSw4ICsyMzk1LDYgQEAg aWJ1Zl9mcmVlX2V4Y2Vzc19wYWdlcyh2b2lkKQogCXV0X2FkKHJ3X2xvY2tfZ2V0X3hfbG9ja19j b3VudCgKIAkJZmlsX3NwYWNlX2dldF9sYXRjaChJQlVGX1NQQUNFX0lELCBOVUxMKSkgPT0gMSk7 CiAKLQl1dF9hZCghaWJ1Zl9pbnNpZGUoKSk7Ci0KIAkvKiBOT1RFOiBXZSByZXF1aXJlIHRoYXQg dGhlIHRocmVhZCBkaWQgbm90IG93biB0aGUgbGF0Y2ggYmVmb3JlLAogCWJlY2F1c2UgdGhlbiB3 ZSBrbm93IHRoYXQgd2UgY2FuIG9iZXkgdGhlIGNvcnJlY3QgbGF0Y2hpbmcgb3JkZXIKIAlmb3Ig aWJ1ZiBsYXRjaGVzICovCkBAIC0yMzgxLDIwICsyNDI1LDMwIEBAIGlidWZfZnJlZV9leGNlc3Nf cGFnZXModm9pZCkKIAl9CiB9CiAKKyNpZmRlZiBVTklWX0RFQlVHCisjIGRlZmluZSBpYnVmX2dl dF9tZXJnZV9wYWdlX25vcyhjb250cmFjdCxyZWMsbXRyLGlkcyx2ZXJzLHBhZ2VzLG5fc3RvcmVk KSBcCisJaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3NfZnVuYyhjb250cmFjdCxyZWMsbXRyLGlkcyx2 ZXJzLHBhZ2VzLG5fc3RvcmVkKQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgaWJ1 Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoY29udHJhY3QscmVjLG10cixpZHMsdmVycyxwYWdlcyxuX3N0 b3JlZCkgXAorCWlidWZfZ2V0X21lcmdlX3BhZ2Vfbm9zX2Z1bmMoY29udHJhY3QscmVjLGlkcyx2 ZXJzLHBhZ2VzLG5fc3RvcmVkKQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIFJlYWRzIHBhZ2UgbnVtYmVycyBmcm9tIGEgbGVhZiBpbiBhbiBpYnVmIHRyZWUu CiBAcmV0dXJuIGEgbG93ZXIgbGltaXQgZm9yIHRoZSBjb21iaW5lZCB2b2x1bWUgb2YgcmVjb3Jk cyB3aGljaCB3aWxsIGJlCiBtZXJnZWQgKi8KIHN0YXRpYwogdWxpbnQKLWlidWZfZ2V0X21lcmdl X3BhZ2Vfbm9zKAotLyo9PT09PT09PT09PT09PT09PT09PSovCitpYnVmX2dldF9tZXJnZV9wYWdl X25vc19mdW5jKAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlpYm9vbAkJY29udHJh Y3QsLyohPCBpbjogVFJVRSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0bwogCQkJCWNvbnRy YWN0IHRoZSB0cmVlLCBGQUxTRSBpZiB0aGlzIGlzIGNhbGxlZAogCQkJCXdoZW4gYSBzaW5nbGUg cGFnZSBiZWNvbWVzIGZ1bGwgYW5kIHdlIGxvb2sKIAkJCQlpZiBpdCBwYXlzIHRvIHJlYWQgYWxz byBuZWFyYnkgcGFnZXMgKi8KLQlyZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkIGZyb20gd2hp Y2ggd2UgcmVhZCB1cCBhbmQgZG93bgotCQkJCWluIHRoZSBjaGFpbiBvZiByZWNvcmRzICovCisJ Y29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogaW5zZXJ0IGJ1ZmZlciByZWNvcmQgKi8KKyNpZmRl ZiBVTklWX0RFQlVHCisJbXRyX3QqCQltdHIsCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gaG9s ZGluZyByZWMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJdWxpbnQqCQlzcGFjZV9pZHMs LyohPCBpbi9vdXQ6IHNwYWNlIGlkJ3Mgb2YgdGhlIHBhZ2VzICovCiAJaWJfaW50NjRfdCoJc3Bh Y2VfdmVyc2lvbnMsLyohPCBpbi9vdXQ6IHRhYmxlc3BhY2UgdmVyc2lvbgogCQkJCXRpbWVzdGFt cHM7IHVzZWQgdG8gcHJldmVudCByZWFkaW5nIGluIG9sZApAQCAtMjQxNywxOCArMjQ3MSwyMiBA QCBpYnVmX2dldF9tZXJnZV9wYWdlX25vcygKIAl1bGludAlsaW1pdDsKIAl1bGludAluX3BhZ2Vz OwogCisJdXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHJlYywgTVRSX01FTU9fUEFH RV9YX0ZJWCkKKwkgICAgICB8fCBtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgcmVjLCBNVFJf TUVNT19QQUdFX1NfRklYKSk7CisJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CisKIAkqbl9zdG9y ZWQgPSAwOwogCiAJbGltaXQgPSB1dF9taW4oSUJVRl9NQVhfTl9QQUdFU19NRVJHRUQsIGJ1Zl9w b29sX2dldF9jdXJyX3NpemUoKSAvIDQpOwogCiAJaWYgKHBhZ2VfcmVjX2lzX3N1cHJlbXVtKHJl YykpIHsKIAotCQlyZWMgPSBwYWdlX3JlY19nZXRfcHJldihyZWMpOworCQlyZWMgPSBwYWdlX3Jl Y19nZXRfcHJldl9jb25zdChyZWMpOwogCX0KIAogCWlmIChwYWdlX3JlY19pc19pbmZpbXVtKHJl YykpIHsKIAotCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dChyZWMpOworCQlyZWMgPSBwYWdlX3Jl Y19nZXRfbmV4dF9jb25zdChyZWMpOwogCX0KIAogCWlmIChwYWdlX3JlY19pc19zdXByZW11bShy ZWMpKSB7CkBAIC0yNDM2LDggKzI0OTQsOCBAQCBpYnVmX2dldF9tZXJnZV9wYWdlX25vcygKIAkJ cmV0dXJuKDApOwogCX0KIAotCWZpcnN0X3BhZ2Vfbm8gPSBpYnVmX3JlY19nZXRfcGFnZV9ubyhy ZWMpOwotCWZpcnN0X3NwYWNlX2lkID0gaWJ1Zl9yZWNfZ2V0X3NwYWNlKHJlYyk7CisJZmlyc3Rf cGFnZV9ubyA9IGlidWZfcmVjX2dldF9wYWdlX25vKG10ciwgcmVjKTsKKwlmaXJzdF9zcGFjZV9p ZCA9IGlidWZfcmVjX2dldF9zcGFjZShtdHIsIHJlYyk7CiAJbl9wYWdlcyA9IDA7CiAJcHJldl9w YWdlX25vID0gMDsKIAlwcmV2X3NwYWNlX2lkID0gMDsKQEAgLTI0NDgsOCArMjUwNiw4IEBAIGli dWZfZ2V0X21lcmdlX3BhZ2Vfbm9zKAogCiAJd2hpbGUgKCFwYWdlX3JlY19pc19pbmZpbXVtKHJl YykgJiYgVU5JVl9MSUtFTFkobl9wYWdlcyA8IGxpbWl0KSkgewogCi0JCXJlY19wYWdlX25vID0g aWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8ocmVjKTsKLQkJcmVjX3NwYWNlX2lkID0gaWJ1Zl9yZWNfZ2V0 X3NwYWNlKHJlYyk7CisJCXJlY19wYWdlX25vID0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8obXRyLCBy ZWMpOworCQlyZWNfc3BhY2VfaWQgPSBpYnVmX3JlY19nZXRfc3BhY2UobXRyLCByZWMpOwogCiAJ CWlmIChyZWNfc3BhY2VfaWQgIT0gZmlyc3Rfc3BhY2VfaWQKIAkJICAgIHx8IChyZWNfcGFnZV9u byAvIElCVUZfTUVSR0VfQVJFQSkKQEAgLTI0NjYsMTAgKzI1MjQsMTAgQEAgaWJ1Zl9nZXRfbWVy Z2VfcGFnZV9ub3MoCiAJCXByZXZfcGFnZV9ubyA9IHJlY19wYWdlX25vOwogCQlwcmV2X3NwYWNl X2lkID0gcmVjX3NwYWNlX2lkOwogCi0JCXJlYyA9IHBhZ2VfcmVjX2dldF9wcmV2KHJlYyk7CisJ CXJlYyA9IHBhZ2VfcmVjX2dldF9wcmV2X2NvbnN0KHJlYyk7CiAJfQogCi0JcmVjID0gcGFnZV9y ZWNfZ2V0X25leHQocmVjKTsKKwlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dF9jb25zdChyZWMpOwog CiAJLyogQXQgdGhlIGxvb3Agc3RhcnQgdGhlcmUgaXMgbm8gcHJldiBwYWdlOyB3ZSBtYXJrIHRo aXMgd2l0aCBhIHBhaXIKIAlvZiBzcGFjZSBpZCwgcGFnZSBubyAoMCwgMCkgZm9yIHdoaWNoIHRo ZXJlIGNhbiBuZXZlciBiZSBlbnRyaWVzIGluCkBAIC0yNDg3LDggKzI1NDUsOCBAQCBpYnVmX2dl dF9tZXJnZV9wYWdlX25vcygKIAkJCXJlY19wYWdlX25vID0gMTsKIAkJCXJlY19zcGFjZV9pZCA9 IDA7CiAJCX0gZWxzZSB7Ci0JCQlyZWNfcGFnZV9ubyA9IGlidWZfcmVjX2dldF9wYWdlX25vKHJl Yyk7Ci0JCQlyZWNfc3BhY2VfaWQgPSBpYnVmX3JlY19nZXRfc3BhY2UocmVjKTsKKwkJCXJlY19w YWdlX25vID0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8obXRyLCByZWMpOworCQkJcmVjX3NwYWNlX2lk ID0gaWJ1Zl9yZWNfZ2V0X3NwYWNlKG10ciwgcmVjKTsKIAkJCXV0X2FkKHJlY19wYWdlX25vID4g SUJVRl9UUkVFX1JPT1RfUEFHRV9OTyk7CiAJCX0KIApAQCAtMjQ5OSw5ICsyNTU3LDkgQEAgaWJ1 Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoCiAJCSAgICAgfHwgcmVjX3BhZ2Vfbm8gIT0gcHJldl9wYWdl X25vKQogCQkgICAgJiYgKHByZXZfc3BhY2VfaWQgIT0gMCB8fCBwcmV2X3BhZ2Vfbm8gIT0gMCkp IHsKIAotCQkJaWYgKChwcmV2X3BhZ2Vfbm8gPT0gZmlyc3RfcGFnZV9ubwotCQkJICAgICAmJiBw cmV2X3NwYWNlX2lkID09IGZpcnN0X3NwYWNlX2lkKQotCQkJICAgIHx8IGNvbnRyYWN0CisJCQlp ZiAoY29udHJhY3QKKwkJCSAgICB8fCAocHJldl9wYWdlX25vID09IGZpcnN0X3BhZ2Vfbm8KKwkJ CQkmJiBwcmV2X3NwYWNlX2lkID09IGZpcnN0X3NwYWNlX2lkKQogCQkJICAgIHx8ICh2b2x1bWVf Zm9yX3BhZ2UKIAkJCQk+ICgoSUJVRl9NRVJHRV9USFJFU0hPTEQgLSAxKQogCQkJCSAgICogNCAq IFVOSVZfUEFHRV9TSVpFCkBAIC0yNTM0LDE0ICsyNTkyLDE0IEBAIGlidWZfZ2V0X21lcmdlX3Bh Z2Vfbm9zKAogCQkJYnJlYWs7CiAJCX0KIAotCQlyZWNfdm9sdW1lID0gaWJ1Zl9yZWNfZ2V0X3Zv bHVtZShyZWMpOworCQlyZWNfdm9sdW1lID0gaWJ1Zl9yZWNfZ2V0X3ZvbHVtZShtdHIsIHJlYyk7 CiAKIAkJdm9sdW1lX2Zvcl9wYWdlICs9IHJlY192b2x1bWU7CiAKIAkJcHJldl9wYWdlX25vID0g cmVjX3BhZ2Vfbm87CiAJCXByZXZfc3BhY2VfaWQgPSByZWNfc3BhY2VfaWQ7CiAKLQkJcmVjID0g cGFnZV9yZWNfZ2V0X25leHQocmVjKTsKKwkJcmVjID0gcGFnZV9yZWNfZ2V0X25leHRfY29uc3Qo cmVjKTsKIAl9CiAKICNpZmRlZiBVTklWX0lCVUZfREVCVUcKQEAgLTI1NzYsNyArMjYzNCw2IEBA IGlidWZfY29udHJhY3RfZXh0KAogCW10cl90CQltdHI7CiAKIAkqbl9wYWdlcyA9IDA7Ci0JdXRf YWQoIWlidWZfaW5zaWRlKCkpOwogCiAJLyogV2UgcGVyZm9ybSBhIGRpcnR5IHJlYWQgb2YgaWJ1 Zi0+ZW1wdHksIHdpdGhvdXQgbGF0Y2hpbmcKIAl0aGUgaW5zZXJ0IGJ1ZmZlciByb290IHBhZ2Uu IFdlIHRydXN0IHRoaXMgZGlydHkgcmVhZCBleGNlcHQKQEAgLTI1ODgsOSArMjY0NSw3IEBAIGli dWZfY29udHJhY3RfZXh0KAogCQlyZXR1cm4oMCk7CiAJfQogCi0JbXRyX3N0YXJ0KCZtdHIpOwot Ci0JaWJ1Zl9lbnRlcigpOworCWlidWZfbXRyX3N0YXJ0KCZtdHIpOwogCiAJLyogT3BlbiBhIGN1 cnNvciB0byBhIHJhbmRvbWx5IGNob3NlbiBsZWFmIG9mIHRoZSB0cmVlLCBhdCBhIHJhbmRvbQog CXBvc2l0aW9uIHdpdGhpbiB0aGUgbGVhZiAqLwpAQCAtMjYwOSwyNCArMjY2NCwyMSBAQCBpYnVm X2NvbnRyYWN0X2V4dCgKIAkJdXRfYWQocGFnZV9nZXRfcGFnZV9ubyhidHJfcGN1cl9nZXRfcGFn ZSgmcGN1cikpCiAJCSAgICAgID09IEZTUF9JQlVGX1RSRUVfUk9PVF9QQUdFX05PKTsKIAotCQlp YnVmX2V4aXQoKTsKLQotCQltdHJfY29tbWl0KCZtdHIpOworCQlpYnVmX210cl9jb21taXQoJm10 cik7CiAJCWJ0cl9wY3VyX2Nsb3NlKCZwY3VyKTsKIAogCQlyZXR1cm4oMCk7CiAJfQogCi0Jc3Vt X3NpemVzID0gaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoVFJVRSwgYnRyX3BjdXJfZ2V0X3JlYygm cGN1ciksCisJc3VtX3NpemVzID0gaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoVFJVRSwKKwkJCQkJ ICAgIGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpLCAmbXRyLAogCQkJCQkgICAgc3BhY2VfaWRzLCBz cGFjZV92ZXJzaW9ucywKIAkJCQkJICAgIHBhZ2Vfbm9zLCBuX3BhZ2VzKTsKICNpZiAwIC8qIGRl ZmluZWQgVU5JVl9JQlVGX0RFQlVHICovCiAJZnByaW50ZihzdGRlcnIsICJJYnVmIGNvbnRyYWN0 IHN5bmMgJWx1IHBhZ2VzICVsdSB2b2x1bWUgJWx1XG4iLAogCQlzeW5jLCAqbl9wYWdlcywgc3Vt X3NpemVzKTsKICNlbmRpZgotCWlidWZfZXhpdCgpOwotCi0JbXRyX2NvbW1pdCgmbXRyKTsKKwlp YnVmX210cl9jb21taXQoJm10cik7CiAJYnRyX3BjdXJfY2xvc2UoJnBjdXIpOwogCiAJYnVmX3Jl YWRfaWJ1Zl9tZXJnZV9wYWdlcyhzeW5jLCBzcGFjZV9pZHMsIHNwYWNlX3ZlcnNpb25zLCBwYWdl X25vcywKQEAgLTI3NjYsNiArMjgxOCwxMyBAQCBpYnVmX2dldF92b2x1bWVfYnVmZmVyZWRfaGFz aCgKIAlyZXR1cm4oVFJVRSk7CiB9CiAKKyNpZmRlZiBVTklWX0RFQlVHCisjIGRlZmluZSBpYnVm X2dldF92b2x1bWVfYnVmZmVyZWRfY291bnQobXRyLHJlYyxoYXNoLHNpemUsbl9yZWNzKQlcCisJ aWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2NvdW50X2Z1bmMobXRyLHJlYyxoYXNoLHNpemUsbl9y ZWNzKQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgaWJ1Zl9nZXRfdm9sdW1lX2J1 ZmZlcmVkX2NvdW50KG10cixyZWMsaGFzaCxzaXplLG5fcmVjcykJXAorCWlidWZfZ2V0X3ZvbHVt ZV9idWZmZXJlZF9jb3VudF9mdW5jKHJlYyxoYXNoLHNpemUsbl9yZWNzKQorI2VuZGlmCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgogVXBkYXRlIHRoZSBlc3RpbWF0ZSBvZiB0aGUgbnVtYmVyIG9mIHJlY29y ZHMgb24gYSBwYWdlLCBhbmQKIGdldCB0aGUgc3BhY2UgdGFrZW4gYnkgbWVyZ2luZyB0aGUgYnVm ZmVyZWQgcmVjb3JkIHRvIHRoZSBpbmRleCBwYWdlLgpAQCAtMjc3Myw4ICsyODMyLDExIEBAIGdl dCB0aGUgc3BhY2UgdGFrZW4gYnkgbWVyZ2luZyB0aGUgYnVmZmUKIHRha2VuIGluIHRoZSBwYWdl IGRpcmVjdG9yeSAqLwogc3RhdGljCiB1bGludAotaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2Nv dW50KAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworaWJ1Zl9nZXRfdm9sdW1lX2J1 ZmZlcmVkX2NvdW50X2Z1bmMoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K KyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQltdHIsCS8qITwgaW46IG1pbmktdHJhbnNhY3Rp b24gb3duaW5nIHJlYyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAljb25zdCByZWNfdCoJ cmVjLAkvKiE8IGluOiBpbnNlcnQgYnVmZmVyIHJlY29yZCAqLwogCXVsaW50KgkJaGFzaCwJLyoh PCBpbi9vdXQ6IGhhc2ggYXJyYXkgKi8KIAl1bGludAkJc2l6ZSwJLyohPCBpbjogbnVtYmVyIG9m IGVsZW1lbnRzIGluIGhhc2ggYXJyYXkgKi8KQEAgLTI3ODQsOSArMjg0NiwxMyBAQCBpYnVmX2dl dF92b2x1bWVfYnVmZmVyZWRfY291bnQoCiAJdWxpbnQJCWxlbjsKIAlpYnVmX29wX3QJaWJ1Zl9v cDsKIAljb25zdCBieXRlKgl0eXBlczsKLQl1bGludAkJbl9maWVsZHMJPSByZWNfZ2V0X25fZmll bGRzX29sZChyZWMpOworCXVsaW50CQluX2ZpZWxkczsKIAotCXV0X2FkKGlidWZfaW5zaWRlKCkp OworCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0Vf WF9GSVgpCisJICAgICAgfHwgbXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHJlYywgTVRSX01F TU9fUEFHRV9TX0ZJWCkpOworCXV0X2FkKGlidWZfaW5zaWRlKG10cikpOworCisJbl9maWVsZHMg PSByZWNfZ2V0X25fZmllbGRzX29sZChyZWMpOwogCXV0X2FkKG5fZmllbGRzID4gNCk7CiAJbl9m aWVsZHMgLT0gNDsKIApAQCAtMjg3MSw3ICsyOTM3LDcgQEAgZ2V0X3ZvbHVtZV9jb21wOgogCQlt ZW1faGVhcF90KgloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDUwMCk7CiAKIAkJZW50cnkgPSBpYnVm X2J1aWxkX2VudHJ5X2Zyb21faWJ1Zl9yZWMoCi0JCQlyZWMsIGhlYXAsICZkdW1teV9pbmRleCk7 CisJCQltdHIsIHJlYywgaGVhcCwgJmR1bW15X2luZGV4KTsKIAogCQl2b2x1bWUgPSByZWNfZ2V0 X2NvbnZlcnRlZF9zaXplKGR1bW15X2luZGV4LCBlbnRyeSwgMCk7CiAKQEAgLTI4OTIsNyArMjk1 OCw3IEBAIHN0YXRpYwogdWxpbnQKIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZCgKIC8qPT09PT09 PT09PT09PT09PT09PT09Ki8KLQlidHJfcGN1cl90KglwY3VyLAkvKiE8IGluOiBwY3VyIHBvc2l0 aW9uZWQgYXQgYSBwbGFjZSBpbiBhbgorCWNvbnN0IGJ0cl9wY3VyX3QqcGN1ciwJLyohPCBpbjog cGN1ciBwb3NpdGlvbmVkIGF0IGEgcGxhY2UgaW4gYW4KIAkJCQlpbnNlcnQgYnVmZmVyIHRyZWUg d2hlcmUgd2Ugd291bGQgaW5zZXJ0IGFuCiAJCQkJZW50cnkgZm9yIHRoZSBpbmRleCBwYWdlIHdo b3NlIG51bWJlciBpcwogCQkJCXBhZ2Vfbm8sIGxhdGNoIG1vZGUgaGFzIHRvIGJlIEJUUl9NT0RJ RllfUFJFVgpAQCAtMjkwMiwxNiArMjk2OCwxNyBAQCBpYnVmX2dldF92b2x1bWVfYnVmZmVyZWQo CiAJbGludCoJCW5fcmVjcywJLyohPCBpbi9vdXQ6IG1pbmltdW0gbnVtYmVyIG9mIHJlY29yZHMg b24gdGhlCiAJCQkJcGFnZSBhZnRlciB0aGUgYnVmZmVyZWQgY2hhbmdlcyBoYXZlIGJlZW4KIAkJ CQlhcHBsaWVkLCBvciBOVUxMIHRvIGRpc2FibGUgdGhlIGNvdW50aW5nICovCi0JbXRyX3QqCQlt dHIpCS8qITwgaW46IG10ciAqLworCW10cl90KgkJbXRyKQkvKiE8IGluOiBtaW5pLXRyYW5zYWN0 aW9uIG9mIHBjdXIgKi8KIHsKLQl1bGludAl2b2x1bWU7Ci0JcmVjX3QqCXJlYzsKLQlwYWdlX3Qq CXBhZ2U7Ci0JdWxpbnQJcHJldl9wYWdlX25vOwotCXBhZ2VfdCoJcHJldl9wYWdlOwotCXVsaW50 CW5leHRfcGFnZV9ubzsKLQlwYWdlX3QqCW5leHRfcGFnZTsKLQl1bGludAloYXNoX2JpdG1hcFsx MjggLyBzaXplb2YodWxpbnQpXTsgLyogYml0bWFwIG9mIGJ1ZmZlcmVkIHJlY3MgKi8KKwl1bGlu dAkJdm9sdW1lOworCWNvbnN0IHJlY190KglyZWM7CisJY29uc3QgcGFnZV90KglwYWdlOworCXVs aW50CQlwcmV2X3BhZ2Vfbm87CisJY29uc3QgcGFnZV90KglwcmV2X3BhZ2U7CisJdWxpbnQJCW5l eHRfcGFnZV9ubzsKKwljb25zdCBwYWdlX3QqCW5leHRfcGFnZTsKKwkvKiBiaXRtYXAgb2YgYnVm ZmVyZWQgcmVjcyAqLworCXVsaW50CQloYXNoX2JpdG1hcFsxMjggLyBzaXplb2YodWxpbnQpXTsK IAogCXV0X2EodHJ4X3N5c19tdWx0aXBsZV90YWJsZXNwYWNlX2Zvcm1hdCk7CiAKQEAgLTI5MzIs MjYgKzI5OTksMjIgQEAgaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkKAogCXV0X2FkKHBhZ2VfdmFs aWRhdGUocGFnZSwgaWJ1Zi0+aW5kZXgpKTsKIAogCWlmIChwYWdlX3JlY19pc19zdXByZW11bShy ZWMpKSB7Ci0JCXJlYyA9IHBhZ2VfcmVjX2dldF9wcmV2KHJlYyk7CisJCXJlYyA9IHBhZ2VfcmVj X2dldF9wcmV2X2NvbnN0KHJlYyk7CiAJfQogCi0JZm9yICg7OykgewotCQlpZiAocGFnZV9yZWNf aXNfaW5maW11bShyZWMpKSB7Ci0KLQkJCWJyZWFrOwotCQl9CisJZm9yICg7ICFwYWdlX3JlY19p c19pbmZpbXVtKHJlYyk7CisJICAgICByZWMgPSBwYWdlX3JlY19nZXRfcHJldl9jb25zdChyZWMp KSB7CisJCXV0X2FkKHBhZ2VfYWxpZ24ocmVjKSA9PSBwYWdlKTsKIAotCQlpZiAocGFnZV9ubyAh PSBpYnVmX3JlY19nZXRfcGFnZV9ubyhyZWMpCi0JCSAgICB8fCBzcGFjZSAhPSBpYnVmX3JlY19n ZXRfc3BhY2UocmVjKSkgeworCQlpZiAocGFnZV9ubyAhPSBpYnVmX3JlY19nZXRfcGFnZV9ubyht dHIsIHJlYykKKwkJICAgIHx8IHNwYWNlICE9IGlidWZfcmVjX2dldF9zcGFjZShtdHIsIHJlYykp IHsKIAogCQkJZ290byBjb3VudF9sYXRlcjsKIAkJfQogCiAJCXZvbHVtZSArPSBpYnVmX2dldF92 b2x1bWVfYnVmZmVyZWRfY291bnQoCi0JCQlyZWMsIGhhc2hfYml0bWFwLCBVVF9BUlJfU0laRSho YXNoX2JpdG1hcCksIG5fcmVjcyk7Ci0KLQkJcmVjID0gcGFnZV9yZWNfZ2V0X3ByZXYocmVjKTsK LQkJdXRfYWQocGFnZV9hbGlnbihyZWMpID09IHBhZ2UpOworCQkJbXRyLCByZWMsCisJCQloYXNo X2JpdG1hcCwgVVRfQVJSX1NJWkUoaGFzaF9iaXRtYXApLCBuX3JlY3MpOwogCX0KIAogCS8qIExv b2sgYXQgdGhlIHByZXZpb3VzIHBhZ2UgKi8KQEAgLTI5NjcsNyArMzAzMCw4IEBAIGlidWZfZ2V0 X3ZvbHVtZV9idWZmZXJlZCgKIAkJYnVmX2Jsb2NrX3QqCWJsb2NrOwogCiAJCWJsb2NrID0gYnVm X3BhZ2VfZ2V0KAotCQkJSUJVRl9TUEFDRV9JRCwgMCwgcHJldl9wYWdlX25vLCBSV19YX0xBVENI LCBtdHIpOworCQkJSUJVRl9TUEFDRV9JRCwgMCwgcHJldl9wYWdlX25vLCBSV19YX0xBVENILAor CQkJbXRyKTsKIAogCQlidWZfYmxvY2tfZGJnX2FkZF9sZXZlbChibG9jaywgU1lOQ19UUkVFX05P REUpOwogCkBAIC0yOTc3LDE0ICszMDQxLDE1IEBAIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZCgK IAl9CiAKICNpZmRlZiBVTklWX0JUUl9ERUJVRwotCXV0X2EoYnRyX3BhZ2VfZ2V0X25leHQocHJl dl9wYWdlLCBtdHIpCi0JICAgICA9PSBwYWdlX2dldF9wYWdlX25vKHBhZ2UpKTsKKwl1dF9hKGJ0 cl9wYWdlX2dldF9uZXh0KHByZXZfcGFnZSwgbXRyKSA9PSBwYWdlX2dldF9wYWdlX25vKHBhZ2Up KTsKICNlbmRpZiAvKiBVTklWX0JUUl9ERUJVRyAqLwogCiAJcmVjID0gcGFnZV9nZXRfc3VwcmVt dW1fcmVjKHByZXZfcGFnZSk7Ci0JcmVjID0gcGFnZV9yZWNfZ2V0X3ByZXYocmVjKTsKKwlyZWMg PSBwYWdlX3JlY19nZXRfcHJldl9jb25zdChyZWMpOworCisJZm9yICg7OyByZWMgPSBwYWdlX3Jl Y19nZXRfcHJldl9jb25zdChyZWMpKSB7CisJCXV0X2FkKHBhZ2VfYWxpZ24ocmVjKSA9PSBwcmV2 X3BhZ2UpOwogCi0JZm9yICg7OykgewogCQlpZiAocGFnZV9yZWNfaXNfaW5maW11bShyZWMpKSB7 CiAKIAkJCS8qIFdlIGNhbm5vdCBnbyB0byB5ZXQgYSBwcmV2aW91cyBwYWdlLCBiZWNhdXNlIHdl CkBAIC0yOTk0LDQyICszMDU5LDM1IEBAIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZCgKIAkJCXJl dHVybihVTklWX1BBR0VfU0laRSk7CiAJCX0KIAotCQlpZiAocGFnZV9ubyAhPSBpYnVmX3JlY19n ZXRfcGFnZV9ubyhyZWMpCi0JCSAgICB8fCBzcGFjZSAhPSBpYnVmX3JlY19nZXRfc3BhY2UocmVj KSkgeworCQlpZiAocGFnZV9ubyAhPSBpYnVmX3JlY19nZXRfcGFnZV9ubyhtdHIsIHJlYykKKwkJ ICAgIHx8IHNwYWNlICE9IGlidWZfcmVjX2dldF9zcGFjZShtdHIsIHJlYykpIHsKIAogCQkJZ290 byBjb3VudF9sYXRlcjsKIAkJfQogCiAJCXZvbHVtZSArPSBpYnVmX2dldF92b2x1bWVfYnVmZmVy ZWRfY291bnQoCi0JCQlyZWMsIGhhc2hfYml0bWFwLCBVVF9BUlJfU0laRShoYXNoX2JpdG1hcCks IG5fcmVjcyk7Ci0KLQkJcmVjID0gcGFnZV9yZWNfZ2V0X3ByZXYocmVjKTsKLQkJdXRfYWQocGFn ZV9hbGlnbihyZWMpID09IHByZXZfcGFnZSk7CisJCQltdHIsIHJlYywKKwkJCWhhc2hfYml0bWFw LCBVVF9BUlJfU0laRShoYXNoX2JpdG1hcCksIG5fcmVjcyk7CiAJfQogCiBjb3VudF9sYXRlcjoK IAlyZWMgPSBidHJfcGN1cl9nZXRfcmVjKHBjdXIpOwogCiAJaWYgKCFwYWdlX3JlY19pc19zdXBy ZW11bShyZWMpKSB7Ci0JCXJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0KHJlYyk7CisJCXJlYyA9IHBh Z2VfcmVjX2dldF9uZXh0X2NvbnN0KHJlYyk7CiAJfQogCi0JZm9yICg7OykgewotCQlpZiAocGFn ZV9yZWNfaXNfc3VwcmVtdW0ocmVjKSkgewotCi0JCQlicmVhazsKLQkJfQotCi0JCWlmIChwYWdl X25vICE9IGlidWZfcmVjX2dldF9wYWdlX25vKHJlYykKLQkJICAgIHx8IHNwYWNlICE9IGlidWZf cmVjX2dldF9zcGFjZShyZWMpKSB7CisJZm9yICg7ICFwYWdlX3JlY19pc19zdXByZW11bShyZWMp OworCSAgICAgcmVjID0gcGFnZV9yZWNfZ2V0X25leHRfY29uc3QocmVjKSkgeworCQlpZiAocGFn ZV9ubyAhPSBpYnVmX3JlY19nZXRfcGFnZV9ubyhtdHIsIHJlYykKKwkJICAgIHx8IHNwYWNlICE9 IGlidWZfcmVjX2dldF9zcGFjZShtdHIsIHJlYykpIHsKIAogCQkJcmV0dXJuKHZvbHVtZSk7CiAJ CX0KIAogCQl2b2x1bWUgKz0gaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2NvdW50KAotCQkJcmVj LCBoYXNoX2JpdG1hcCwgVVRfQVJSX1NJWkUoaGFzaF9iaXRtYXApLCBuX3JlY3MpOwotCi0JCXJl YyA9IHBhZ2VfcmVjX2dldF9uZXh0KHJlYyk7CisJCQltdHIsIHJlYywKKwkJCWhhc2hfYml0bWFw LCBVVF9BUlJfU0laRShoYXNoX2JpdG1hcCksIG5fcmVjcyk7CiAJfQogCiAJLyogTG9vayBhdCB0 aGUgbmV4dCBwYWdlICovCkBAIC0zMDQ1LDcgKzMxMDMsOCBAQCBjb3VudF9sYXRlcjoKIAkJYnVm X2Jsb2NrX3QqCWJsb2NrOwogCiAJCWJsb2NrID0gYnVmX3BhZ2VfZ2V0KAotCQkJSUJVRl9TUEFD RV9JRCwgMCwgbmV4dF9wYWdlX25vLCBSV19YX0xBVENILCBtdHIpOworCQkJSUJVRl9TUEFDRV9J RCwgMCwgbmV4dF9wYWdlX25vLCBSV19YX0xBVENILAorCQkJbXRyKTsKIAogCQlidWZfYmxvY2tf ZGJnX2FkZF9sZXZlbChibG9jaywgU1lOQ19UUkVFX05PREUpOwogCkBAIC0zMDU5LDkgKzMxMTgs MTEgQEAgY291bnRfbGF0ZXI6CiAjZW5kaWYgLyogVU5JVl9CVFJfREVCVUcgKi8KIAogCXJlYyA9 IHBhZ2VfZ2V0X2luZmltdW1fcmVjKG5leHRfcGFnZSk7Ci0JcmVjID0gcGFnZV9yZWNfZ2V0X25l eHQocmVjKTsKKwlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dF9jb25zdChyZWMpOworCisJZm9yICg7 OyByZWMgPSBwYWdlX3JlY19nZXRfbmV4dF9jb25zdChyZWMpKSB7CisJCXV0X2FkKHBhZ2VfYWxp Z24ocmVjKSA9PSBuZXh0X3BhZ2UpOwogCi0JZm9yICg7OykgewogCQlpZiAocGFnZV9yZWNfaXNf c3VwcmVtdW0ocmVjKSkgewogCiAJCQkvKiBXZSBnaXZlIHVwICovCkBAIC0zMDY5LDE3ICszMTMw LDE1IEBAIGNvdW50X2xhdGVyOgogCQkJcmV0dXJuKFVOSVZfUEFHRV9TSVpFKTsKIAkJfQogCi0J CWlmIChwYWdlX25vICE9IGlidWZfcmVjX2dldF9wYWdlX25vKHJlYykKLQkJICAgIHx8IHNwYWNl ICE9IGlidWZfcmVjX2dldF9zcGFjZShyZWMpKSB7CisJCWlmIChwYWdlX25vICE9IGlidWZfcmVj X2dldF9wYWdlX25vKG10ciwgcmVjKQorCQkgICAgfHwgc3BhY2UgIT0gaWJ1Zl9yZWNfZ2V0X3Nw YWNlKG10ciwgcmVjKSkgewogCiAJCQlyZXR1cm4odm9sdW1lKTsKIAkJfQogCiAJCXZvbHVtZSAr PSBpYnVmX2dldF92b2x1bWVfYnVmZmVyZWRfY291bnQoCi0JCQlyZWMsIGhhc2hfYml0bWFwLCBV VF9BUlJfU0laRShoYXNoX2JpdG1hcCksIG5fcmVjcyk7Ci0KLQkJcmVjID0gcGFnZV9yZWNfZ2V0 X25leHQocmVjKTsKLQkJdXRfYWQocGFnZV9hbGlnbihyZWMpID09IG5leHRfcGFnZSk7CisJCQlt dHIsIHJlYywKKwkJCWhhc2hfYml0bWFwLCBVVF9BUlJfU0laRShoYXNoX2JpdG1hcCksIG5fcmVj cyk7CiAJfQogfQogCkBAIC0zMTAwLDkgKzMxNTksNyBAQCBpYnVmX3VwZGF0ZV9tYXhfdGFibGVz cGFjZV9pZCh2b2lkKQogCiAJdXRfYSghZGljdF90YWJsZV9pc19jb21wKGlidWYtPmluZGV4LT50 YWJsZSkpOwogCi0JaWJ1Zl9lbnRlcigpOwotCi0JbXRyX3N0YXJ0KCZtdHIpOworCWlidWZfbXRy X3N0YXJ0KCZtdHIpOwogCiAJYnRyX3BjdXJfb3Blbl9hdF9pbmRleF9zaWRlKAogCQlGQUxTRSwg aWJ1Zi0+aW5kZXgsIEJUUl9TRUFSQ0hfTEVBRiwgJnBjdXIsIFRSVUUsICZtdHIpOwpAQCAtMzEy NSwxNCArMzE4MiwyMCBAQCBpYnVmX3VwZGF0ZV9tYXhfdGFibGVzcGFjZV9pZCh2b2lkKQogCQlt YXhfc3BhY2VfaWQgPSBtYWNoX3JlYWRfZnJvbV80KGZpZWxkKTsKIAl9CiAKLQltdHJfY29tbWl0 KCZtdHIpOwotCWlidWZfZXhpdCgpOworCWlidWZfbXRyX2NvbW1pdCgmbXRyKTsKIAogCS8qIHBy aW50ZigiTWF4aW11bSBzcGFjZSBpZCBpbiBpbnNlcnQgYnVmZmVyICVsdVxuIiwgbWF4X3NwYWNl X2lkKTsgKi8KIAogCWZpbF9zZXRfbWF4X3NwYWNlX2lkX2lmX2JpZ2dlcihtYXhfc3BhY2VfaWQp OwogfQogCisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZpbmUgaWJ1Zl9nZXRfZW50cnlfY291bnRl cl9sb3cobXRyLHJlYyxzcGFjZSxwYWdlX25vKQlcCisJaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9s b3dfZnVuYyhtdHIscmVjLHNwYWNlLHBhZ2Vfbm8pCisjZWxzZSAvKiBVTklWX0RFQlVHICovCisj IGRlZmluZSBpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvdyhtdHIscmVjLHNwYWNlLHBhZ2Vfbm8p CVwKKwlpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvd19mdW5jKHJlYyxzcGFjZSxwYWdlX25vKQor I2VuZGlmCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIEhlbHBlciBmdW5jdGlvbiBmb3IgaWJ1Zl9zZXRfZW50cnlf Y291bnRlci4gQ2hlY2tzIGlmIHJlYyBpcyBmb3IgKHNwYWNlLAogcGFnZV9ubyksIGFuZCBpZiBz bywgcmVhZHMgY291bnRlciB2YWx1ZSBmcm9tIGl0IGFuZCByZXR1cm5zIHRoYXQgKyAxLgpAQCAt MzE0MCw4ICszMjAzLDExIEBAIE90aGVyd2lzZSwgcmV0dXJucyAwLgogQHJldHVybgluZXcgY291 bnRlciB2YWx1ZSwgb3IgMCAqLwogc3RhdGljCiB1bGludAotaWJ1Zl9nZXRfZW50cnlfY291bnRl cl9sb3coCi0vKj09PT09PT09PT09PT09PT09PT09PT09Ki8KK2lidWZfZ2V0X2VudHJ5X2NvdW50 ZXJfbG93X2Z1bmMoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworI2lmZGVmIFVO SVZfREVCVUcKKwltdHJfdCoJCW10ciwJCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gb2YgcmVj ICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGlu OiBpbnNlcnQgYnVmZmVyIHJlY29yZCAqLwogCXVsaW50CQlzcGFjZSwJCS8qITwgaW46IHNwYWNl IGlkICovCiAJdWxpbnQJCXBhZ2Vfbm8pCS8qITwgaW46IHBhZ2UgbnVtYmVyICovCkBAIC0zMTUw LDcgKzMyMTYsOSBAQCBpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvdygKIAljb25zdCBieXRlKglm aWVsZDsKIAl1bGludAkJbGVuOwogCi0JdXRfYWQoaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQoaWJ1 Zl9pbnNpZGUobXRyKSk7CisJdXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHJlYywg TVRSX01FTU9fUEFHRV9YX0ZJWCkKKwkgICAgICB8fCBtdHJfbWVtb19jb250YWluc19wYWdlKG10 ciwgcmVjLCBNVFJfTUVNT19QQUdFX1NfRklYKSk7CiAJdXRfYWQocmVjX2dldF9uX2ZpZWxkc19v bGQocmVjKSA+IDIpOwogCiAJZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCAxLCAm bGVuKTsKQEAgLTMyMjIsMTIgKzMyOTAsMTUgQEAgaWJ1Zl9zZXRfZW50cnlfY291bnRlcigKIAl1 bGludAkJY291bnRlciA9IDA7CiAKIAkvKiBwY3VyIHBvaW50cyB0byBlaXRoZXIgYSB1c2VyIHJl YyBvciB0byBhIHBhZ2UncyBpbmZpbXVtIHJlY29yZC4gKi8KKwl1dF9hZChpYnVmX2luc2lkZSht dHIpKTsKKwl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIGJ0cl9wY3VyX2dldF9ibG9jayhw Y3VyKSwKKwkJCQlNVFJfTUVNT19QQUdFX1hfRklYKSk7CiAJdXRfYWQocGFnZV92YWxpZGF0ZShi dHJfcGN1cl9nZXRfcGFnZShwY3VyKSwgaWJ1Zi0+aW5kZXgpKTsKIAogCWlmIChidHJfcGN1cl9p c19vbl91c2VyX3JlYyhwY3VyKSkgewogCiAJCWNvdW50ZXIgPSBpYnVmX2dldF9lbnRyeV9jb3Vu dGVyX2xvdygKLQkJCWJ0cl9wY3VyX2dldF9yZWMocGN1ciksIHNwYWNlLCBwYWdlX25vKTsKKwkJ CW10ciwgYnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSwgc3BhY2UsIHBhZ2Vfbm8pOwogCiAJCWlmIChV TklWX1VOTElLRUxZKGNvdW50ZXIgPT0gVUxJTlRfVU5ERUZJTkVEKSkgewogCQkJLyogVGhlIHJl Y29yZCBsYWNrcyBhIGNvdW50ZXIgZmllbGQuCkBAIC0zMjgzLDcgKzMzNTQsNyBAQCBpYnVmX3Nl dF9lbnRyeV9jb3VudGVyKAogCQkJdXRfYWQocGFnZV9yZWNfaXNfdXNlcl9yZWMocmVjKSk7CiAK IAkJCWNvdW50ZXIgPSBpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvdygKLQkJCQlyZWMsIHNwYWNl LCBwYWdlX25vKTsKKwkJCQltdHIsIHJlYywgc3BhY2UsIHBhZ2Vfbm8pOwogCiAJCQlpZiAoVU5J Vl9VTkxJS0VMWShjb3VudGVyID09IFVMSU5UX1VOREVGSU5FRCkpIHsKIAkJCQkvKiBUaGUgcmVj b3JkIGxhY2tzIGEgY291bnRlciBmaWVsZC4KQEAgLTM0MzUsNyArMzUwNiw2IEBAIGlidWZfaW5z ZXJ0X2xvdygKIAogCWlmIChtb2RlID09IEJUUl9NT0RJRllfVFJFRSkgewogCQlmb3IgKDs7KSB7 Ci0JCQlpYnVmX2VudGVyKCk7CiAJCQltdXRleF9lbnRlcigmaWJ1Zl9wZXNzaW1pc3RpY19pbnNl cnRfbXV0ZXgpOwogCQkJbXV0ZXhfZW50ZXIoJmlidWZfbXV0ZXgpOwogCkBAIC0zNDQ2LDcgKzM1 MTYsNiBAQCBpYnVmX2luc2VydF9sb3coCiAKIAkJCW11dGV4X2V4aXQoJmlidWZfbXV0ZXgpOwog CQkJbXV0ZXhfZXhpdCgmaWJ1Zl9wZXNzaW1pc3RpY19pbnNlcnRfbXV0ZXgpOwotCQkJaWJ1Zl9l eGl0KCk7CiAKIAkJCWlmIChVTklWX1VOTElLRUxZKCFpYnVmX2FkZF9mcmVlX3BhZ2UoKSkpIHsK IApAQCAtMzQ1NCwxMSArMzUyMyw5IEBAIGlidWZfaW5zZXJ0X2xvdygKIAkJCQlyZXR1cm4oREJf U1RST05HX0ZBSUwpOwogCQkJfQogCQl9Ci0JfSBlbHNlIHsKLQkJaWJ1Zl9lbnRlcigpOwogCX0K IAotCW10cl9zdGFydCgmbXRyKTsKKwlpYnVmX210cl9zdGFydCgmbXRyKTsKIAogCWJ0cl9wY3Vy X29wZW4oaWJ1Zi0+aW5kZXgsIGlidWZfZW50cnksIFBBR0VfQ1VSX0xFLCBtb2RlLCAmcGN1ciwg Jm10cik7CiAJdXRfYWQocGFnZV92YWxpZGF0ZShidHJfcGN1cl9nZXRfcGFnZSgmcGN1ciksIGli dWYtPmluZGV4KSk7CkBAIC0zNTEzLDcgKzM1ODAsNyBAQCBmYWlsX2V4aXQ6CiAjaWZkZWYgVU5J Vl9JQlVGX0NPVU5UX0RFQlVHCiAJdXRfYSgoYnVmZmVyZWQgPT0gMCkgfHwgaWJ1Zl9jb3VudF9n ZXQoc3BhY2UsIHBhZ2Vfbm8pKTsKICNlbmRpZgotCW10cl9zdGFydCgmYml0bWFwX210cik7CisJ aWJ1Zl9tdHJfc3RhcnQoJmJpdG1hcF9tdHIpOwogCiAJYml0bWFwX3BhZ2UgPSBpYnVmX2JpdG1h cF9nZXRfbWFwX3BhZ2Uoc3BhY2UsIHBhZ2Vfbm8sCiAJCQkJCSAgICAgICB6aXBfc2l6ZSwgJmJp dG1hcF9tdHIpOwpAQCAtMzUzNCwxNSArMzYwMSwxNSBAQCBmYWlsX2V4aXQ6CiAJCWlmIChidWZm ZXJlZCArIGVudHJ5X3NpemUgKyBwYWdlX2Rpcl9jYWxjX3Jlc2VydmVkX3NwYWNlKDEpCiAJCSAg ICA+IGlidWZfaW5kZXhfcGFnZV9jYWxjX2ZyZWVfZnJvbV9iaXRzKHppcF9zaXplLCBiaXRzKSkg ewogCQkJLyogUmVsZWFzZSB0aGUgYml0bWFwIHBhZ2UgbGF0Y2ggZWFybHkuICovCi0JCQltdHJf Y29tbWl0KCZiaXRtYXBfbXRyKTsKKwkJCWlidWZfbXRyX2NvbW1pdCgmYml0bWFwX210cik7CiAK IAkJCS8qIEl0IG1heSBub3QgZml0ICovCiAJCQlkb19tZXJnZSA9IFRSVUU7CiAKLQkJCWlidWZf Z2V0X21lcmdlX3BhZ2Vfbm9zKAotCQkJCUZBTFNFLCBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKSwK LQkJCQlzcGFjZV9pZHMsIHNwYWNlX3ZlcnNpb25zLAotCQkJCXBhZ2Vfbm9zLCAmbl9zdG9yZWQp OworCQkJaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoRkFMU0UsCisJCQkJCQlidHJfcGN1cl9nZXRf cmVjKCZwY3VyKSwgJm10ciwKKwkJCQkJCXNwYWNlX2lkcywgc3BhY2VfdmVyc2lvbnMsCisJCQkJ CQlwYWdlX25vcywgJm5fc3RvcmVkKTsKIAogCQkJZ290byBmYWlsX2V4aXQ7CiAJCX0KQEAgLTM1 NTUsNyArMzYyMiw3IEBAIGZhaWxfZXhpdDoKIAkgICAgJiYgIWlidWZfc2V0X2VudHJ5X2NvdW50 ZXIoaWJ1Zl9lbnRyeSwgc3BhY2UsIHBhZ2Vfbm8sICZwY3VyLAogCQkJCSAgICAgICBtb2RlID09 IEJUUl9NT0RJRllfUFJFViwgJm10cikpIHsKIGJpdG1hcF9mYWlsOgotCQltdHJfY29tbWl0KCZi aXRtYXBfbXRyKTsKKwkJaWJ1Zl9tdHJfY29tbWl0KCZiaXRtYXBfbXRyKTsKIAogCQlnb3RvIGZh aWxfZXhpdDsKIAl9CkBAIC0zNTczLDcgKzM2NDAsNyBAQCBiaXRtYXBfZmFpbDoKIAkJCQkJICAm Yml0bWFwX210cik7CiAJfQogCi0JbXRyX2NvbW1pdCgmYml0bWFwX210cik7CisJaWJ1Zl9tdHJf Y29tbWl0KCZiaXRtYXBfbXRyKTsKIAogCWN1cnNvciA9IGJ0cl9wY3VyX2dldF9idHJfY3VyKCZw Y3VyKTsKIApAQCAtMzYzOCw5ICszNzA1LDggQEAgZnVuY19leGl0OgogCX0KICNlbmRpZgogCi0J bXRyX2NvbW1pdCgmbXRyKTsKKwlpYnVmX210cl9jb21taXQoJm10cik7CiAJYnRyX3BjdXJfY2xv c2UoJnBjdXIpOwotCWlidWZfZXhpdCgpOwogCiAJbWVtX2hlYXBfZnJlZShoZWFwKTsKIApAQCAt Mzg5OCw3ICszOTY0LDcgQEAgaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZSgKIAlwYWdlX3QqCQlw YWdlCQk9IGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spOwogCXJlY190KgkJcmVjOwogCi0JdXRf YWQoaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQoZHR1 cGxlX2NoZWNrX3R5cGVkKGVudHJ5KSk7CiAJdXRfYWQoIWJ1Zl9ibG9ja19hbGlnbihwYWdlKS0+ aXNfaGFzaGVkKTsKIApAQCAtNDA0NSw3ICs0MTExLDcgQEAgaWJ1Zl9zZXRfZGVsX21hcmsoCiAJ cGFnZV9jdXJfdAlwYWdlX2N1cjsKIAl1bGludAkJbG93X21hdGNoOwogCi0JdXRfYWQoaWJ1Zl9p bnNpZGUoKSk7CisJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQoZHR1cGxlX2NoZWNr X3R5cGVkKGVudHJ5KSk7CiAKIAlsb3dfbWF0Y2ggPSBwYWdlX2N1cl9zZWFyY2goCkBAIC00MTAy LDcgKzQxNjgsNyBAQCBpYnVmX2RlbGV0ZSgKIAlwYWdlX2N1cl90CXBhZ2VfY3VyOwogCXVsaW50 CQlsb3dfbWF0Y2g7CiAKLQl1dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZChpYnVmX2luc2lk ZShtdHIpKTsKIAl1dF9hZChkdHVwbGVfY2hlY2tfdHlwZWQoZW50cnkpKTsKIAogCWxvd19tYXRj aCA9IHBhZ2VfY3VyX3NlYXJjaCgKQEAgLTQxOTAsNyArNDI1Niw3IEBAIGlidWZfcmVzdG9yZV9w b3MoCiAJCS8qIFRoZSB0YWJsZXNwYWNlIGhhcyBiZWVuIGRyb3BwZWQuICBJdCBpcyBwb3NzaWJs ZQogCQl0aGF0IGFub3RoZXIgdGhyZWFkIGhhcyBkZWxldGVkIHRoZSBpbnNlcnQgYnVmZmVyCiAJ CWVudHJ5LiAgRG8gbm90IGNvbXBsYWluLiAqLwotCQlidHJfcGN1cl9jb21taXRfc3BlY2lmeV9t dHIocGN1ciwgbXRyKTsKKwkJaWJ1Zl9idHJfcGN1cl9jb21taXRfc3BlY2lmeV9tdHIocGN1ciwg bXRyKTsKIAl9IGVsc2UgewogCQlmcHJpbnRmKHN0ZGVyciwKIAkJCSJJbm5vREI6IEVSUk9SOiBT dWJtaXQgdGhlIG91dHB1dCB0byIKQEAgLTQyMDgsNyArNDI3NCw3IEBAIGlidWZfcmVzdG9yZV9w b3MoCiAJCQkgICAgICBwYWdlX3JlY19nZXRfbmV4dChidHJfcGN1cl9nZXRfcmVjKHBjdXIpKSk7 CiAJCWZmbHVzaChzdGRlcnIpOwogCi0JCWJ0cl9wY3VyX2NvbW1pdF9zcGVjaWZ5X210cihwY3Vy LCBtdHIpOworCQlpYnVmX2J0cl9wY3VyX2NvbW1pdF9zcGVjaWZ5X210cihwY3VyLCBtdHIpOwog CiAJCWZwdXRzKCJJbm5vREI6IFZhbGlkYXRpbmcgaW5zZXJ0IGJ1ZmZlciB0cmVlOlxuIiwgc3Rk ZXJyKTsKIAkJaWYgKCFidHJfdmFsaWRhdGVfaW5kZXgoaWJ1Zi0+aW5kZXgsIE5VTEwpKSB7CkBA IC00MjMyLDggKzQyOTgsOCBAQCBpYm9vbAogaWJ1Zl9kZWxldGVfcmVjKAogLyo9PT09PT09PT09 PT0qLwogCXVsaW50CQlzcGFjZSwJLyohPCBpbjogc3BhY2UgaWQgKi8KLQl1bGludAkJcGFnZV9u bywvKiE8IGluOiBpbmRleCBwYWdlIG51bWJlciB3aGVyZSB0aGUgcmVjb3JkCi0JCQkJc2hvdWxk IGJlbG9uZyAqLworCXVsaW50CQlwYWdlX25vLC8qITwgaW46IGluZGV4IHBhZ2UgbnVtYmVyIHRo YXQgdGhlIHJlY29yZAorCQkJCXNob3VsZCBiZWxvbmcgdG8gKi8KIAlidHJfcGN1cl90KglwY3Vy LAkvKiE8IGluOiBwY3VyIHBvc2l0aW9uZWQgb24gdGhlIHJlY29yZCB0bwogCQkJCWRlbGV0ZSwg aGF2aW5nIGxhdGNoIG1vZGUgQlRSX01PRElGWV9MRUFGICovCiAJY29uc3QgZHR1cGxlX3QqCXNl YXJjaF90dXBsZSwKQEAgLTQyNDQsMTAgKzQzMTAsMTAgQEAgaWJ1Zl9kZWxldGVfcmVjKAogCXBh Z2VfdCoJCXJvb3Q7CiAJdWxpbnQJCWVycjsKIAotCXV0X2FkKGlidWZfaW5zaWRlKCkpOworCXV0 X2FkKGlidWZfaW5zaWRlKG10cikpOwogCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKGJ0cl9w Y3VyX2dldF9yZWMocGN1cikpKTsKLQl1dF9hZChpYnVmX3JlY19nZXRfcGFnZV9ubyhidHJfcGN1 cl9nZXRfcmVjKHBjdXIpKSA9PSBwYWdlX25vKTsKLQl1dF9hZChpYnVmX3JlY19nZXRfc3BhY2Uo YnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkgPT0gc3BhY2UpOworCXV0X2FkKGlidWZfcmVjX2dldF9w YWdlX25vKG10ciwgYnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkgPT0gcGFnZV9ubyk7CisJdXRfYWQo aWJ1Zl9yZWNfZ2V0X3NwYWNlKG10ciwgYnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkgPT0gc3BhY2Up OwogCiAJc3VjY2VzcyA9IGJ0cl9jdXJfb3B0aW1pc3RpY19kZWxldGUoYnRyX3BjdXJfZ2V0X2J0 cl9jdXIocGN1ciksIG10cik7CiAKQEAgLTQyODAsMjIgKzQzNDYsMjIgQEAgaWJ1Zl9kZWxldGVf cmVjKAogCX0KIAogCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKGJ0cl9wY3VyX2dldF9yZWMo cGN1cikpKTsKLQl1dF9hZChpYnVmX3JlY19nZXRfcGFnZV9ubyhidHJfcGN1cl9nZXRfcmVjKHBj dXIpKSA9PSBwYWdlX25vKTsKLQl1dF9hZChpYnVmX3JlY19nZXRfc3BhY2UoYnRyX3BjdXJfZ2V0 X3JlYyhwY3VyKSkgPT0gc3BhY2UpOworCXV0X2FkKGlidWZfcmVjX2dldF9wYWdlX25vKG10ciwg YnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkgPT0gcGFnZV9ubyk7CisJdXRfYWQoaWJ1Zl9yZWNfZ2V0 X3NwYWNlKG10ciwgYnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkgPT0gc3BhY2UpOwogCiAJLyogV2Ug aGF2ZSB0byByZXNvcnQgdG8gYSBwZXNzaW1pc3RpYyBkZWxldGUgZnJvbSBpYnVmICovCiAJYnRy X3BjdXJfc3RvcmVfcG9zaXRpb24ocGN1ciwgbXRyKTsKKwlpYnVmX2J0cl9wY3VyX2NvbW1pdF9z cGVjaWZ5X210cihwY3VyLCBtdHIpOwogCi0JYnRyX3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKHBj dXIsIG10cik7Ci0KKwlpYnVmX210cl9zdGFydChtdHIpOwogCW11dGV4X2VudGVyKCZpYnVmX211 dGV4KTsKIAotCW10cl9zdGFydChtdHIpOwotCiAJaWYgKCFpYnVmX3Jlc3RvcmVfcG9zKHNwYWNl LCBwYWdlX25vLCBzZWFyY2hfdHVwbGUsCiAJCQkgICAgICBCVFJfTU9ESUZZX1RSRUUsIHBjdXIs IG10cikpIHsKIAogCQltdXRleF9leGl0KCZpYnVmX211dGV4KTsKKwkJdXRfYWQoIWlidWZfaW5z aWRlKG10cikpOworCQl1dF9hZChtdHItPnN0YXRlID09IE1UUl9DT01NSVRURUQpOwogCQlnb3Rv IGZ1bmNfZXhpdDsKIAl9CiAKQEAgLTQzMTIsOSArNDM3OCwxMSBAQCBpYnVmX2RlbGV0ZV9yZWMo CiAJbXV0ZXhfZXhpdCgmaWJ1Zl9tdXRleCk7CiAKIAlpYnVmLT5lbXB0eSA9IChwYWdlX2dldF9u X3JlY3Mocm9vdCkgPT0gMCk7Ci0JYnRyX3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKHBjdXIsIG10 cik7CisJaWJ1Zl9idHJfcGN1cl9jb21taXRfc3BlY2lmeV9tdHIocGN1ciwgbXRyKTsKIAogZnVu Y19leGl0OgorCXV0X2FkKCFpYnVmX2luc2lkZShtdHIpKTsKKwl1dF9hZChtdHItPnN0YXRlID09 IE1UUl9DT01NSVRURUQpOwogCWJ0cl9wY3VyX2Nsb3NlKHBjdXIpOwogCiAJcmV0dXJuKFRSVUUp OwpAQCAtNDQwNiwxOCArNDQ3NCwyMCBAQCBpYnVmX21lcmdlX29yX2RlbGV0ZV9mb3JfcGFnZSgK IAkJCXVwZGF0ZV9pYnVmX2JpdG1hcCA9IEZBTFNFOwogCQl9IGVsc2UgewogCQkJcGFnZV90Kgli aXRtYXBfcGFnZTsKKwkJCXVsaW50CWJpdG1hcF9iaXRzOwogCi0JCQltdHJfc3RhcnQoJm10cik7 CisJCQlpYnVmX210cl9zdGFydCgmbXRyKTsKIAogCQkJYml0bWFwX3BhZ2UgPSBpYnVmX2JpdG1h cF9nZXRfbWFwX3BhZ2UoCiAJCQkJc3BhY2UsIHBhZ2Vfbm8sIHppcF9zaXplLCAmbXRyKTsKKwkJ CWJpdG1hcF9iaXRzID0gaWJ1Zl9iaXRtYXBfcGFnZV9nZXRfYml0cygKKwkJCQliaXRtYXBfcGFn ZSwgcGFnZV9ubywgemlwX3NpemUsCisJCQkJSUJVRl9CSVRNQVBfQlVGRkVSRUQsICZtdHIpOwog Ci0JCQlpZiAoIWlidWZfYml0bWFwX3BhZ2VfZ2V0X2JpdHMoYml0bWFwX3BhZ2UsIHBhZ2Vfbm8s Ci0JCQkJCQkgICAgICAgemlwX3NpemUsCi0JCQkJCQkgICAgICAgSUJVRl9CSVRNQVBfQlVGRkVS RUQsCi0JCQkJCQkgICAgICAgJm10cikpIHsKKwkJCWlidWZfbXRyX2NvbW1pdCgmbXRyKTsKKwor CQkJaWYgKCFiaXRtYXBfYml0cykgewogCQkJCS8qIE5vIGluc2VydHMgYnVmZmVyZWQgZm9yIHRo aXMgcGFnZSAqLwotCQkJCW10cl9jb21taXQoJm10cik7CiAKIAkJCQlpZiAoIXRhYmxlc3BhY2Vf YmVpbmdfZGVsZXRlZCkgewogCQkJCQlmaWxfZGVjcl9wZW5kaW5nX2lidWZfbWVyZ2VzKHNwYWNl KTsKQEAgLTQ0MjUsNyArNDQ5NSw2IEBAIGlidWZfbWVyZ2Vfb3JfZGVsZXRlX2Zvcl9wYWdlKAog CiAJCQkJcmV0dXJuOwogCQkJfQotCQkJbXRyX2NvbW1pdCgmbXRyKTsKIAkJfQogCX0gZWxzZSBp ZiAoYmxvY2sKIAkJICAgJiYgKGlidWZfZml4ZWRfYWRkcl9wYWdlKHNwYWNlLCB6aXBfc2l6ZSwg cGFnZV9ubykKQEAgLTQ0MzQsMTEgKzQ1MDMsOSBAQCBpYnVmX21lcmdlX29yX2RlbGV0ZV9mb3Jf cGFnZSgKIAkJcmV0dXJuOwogCX0KIAotCWlidWZfZW50ZXIoKTsKLQogCWhlYXAgPSBtZW1faGVh cF9jcmVhdGUoNTEyKTsKIAotCWlmICghdHJ4X3N5c19tdWx0aXBsZV90YWJsZXNwYWNlX2Zvcm1h dCkgeworCWlmIChVTklWX1VOTElLRUxZKCF0cnhfc3lzX211bHRpcGxlX3RhYmxlc3BhY2VfZm9y bWF0KSkgewogCQl1dF9hKHRyeF9kb3VibGV3cml0ZV9tdXN0X3Jlc2V0X3NwYWNlX2lkcyk7CiAJ CXNlYXJjaF90dXBsZSA9IGlidWZfc2VhcmNoX3R1cGxlX2J1aWxkKHNwYWNlLCBwYWdlX25vLCBo ZWFwKTsKIAl9IGVsc2UgewpAQCAtNDQ2NSw3ICs0NTMyLDcgQEAgaWJ1Zl9tZXJnZV9vcl9kZWxl dGVfZm9yX3BhZ2UoCiAKIAkJCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwogCi0JCQltdHJf c3RhcnQoJm10cik7CisJCQlpYnVmX210cl9zdGFydCgmbXRyKTsKIAogCQkJZnB1dHMoIiAgSW5u b0RCOiBEdW1wIG9mIHRoZSBpYnVmIGJpdG1hcCBwYWdlOlxuIiwKIAkJCSAgICAgIHN0ZGVycik7 CkBAIC00NDczLDggKzQ1NDAsNyBAQCBpYnVmX21lcmdlX29yX2RlbGV0ZV9mb3JfcGFnZSgKIAkJ CWJpdG1hcF9wYWdlID0gaWJ1Zl9iaXRtYXBfZ2V0X21hcF9wYWdlKHNwYWNlLCBwYWdlX25vLAog CQkJCQkJCSAgICAgICB6aXBfc2l6ZSwgJm10cik7CiAJCQlidWZfcGFnZV9wcmludChiaXRtYXBf cGFnZSwgMCk7Ci0KLQkJCW10cl9jb21taXQoJm10cik7CisJCQlpYnVmX210cl9jb21taXQoJm10 cik7CiAKIAkJCWZwdXRzKCJcbklubm9EQjogRHVtcCBvZiB0aGUgcGFnZTpcbiIsIHN0ZGVycik7 CiAKQEAgLTQ1MDUsNyArNDU3MSw3IEBAIGlidWZfbWVyZ2Vfb3JfZGVsZXRlX2Zvcl9wYWdlKAog CW1lbXNldChkb3BzLCAwLCBzaXplb2YoZG9wcykpOwogCiBsb29wOgotCW10cl9zdGFydCgmbXRy KTsKKwlpYnVmX210cl9zdGFydCgmbXRyKTsKIAogCWlmIChibG9jaykgewogCQlpYm9vbCBzdWNj ZXNzOwpAQCAtNDUzOSw4ICs0NjA1LDggQEAgbG9vcDoKIAkJcmVjID0gYnRyX3BjdXJfZ2V0X3Jl YygmcGN1cik7CiAKIAkJLyogQ2hlY2sgaWYgdGhlIGVudHJ5IGlzIGZvciB0aGlzIGluZGV4IHBh Z2UgKi8KLQkJaWYgKGlidWZfcmVjX2dldF9wYWdlX25vKHJlYykgIT0gcGFnZV9ubwotCQkgICAg fHwgaWJ1Zl9yZWNfZ2V0X3NwYWNlKHJlYykgIT0gc3BhY2UpIHsKKwkJaWYgKGlidWZfcmVjX2dl dF9wYWdlX25vKCZtdHIsIHJlYykgIT0gcGFnZV9ubworCQkgICAgfHwgaWJ1Zl9yZWNfZ2V0X3Nw YWNlKCZtdHIsIHJlYykgIT0gc3BhY2UpIHsKIAogCQkJaWYgKGJsb2NrKSB7CiAJCQkJcGFnZV9o ZWFkZXJfcmVzZXRfbGFzdF9pbnNlcnQoCkBAIC00NTYzLDcgKzQ2MjksNyBAQCBsb29wOgogCQkJ ZHR1cGxlX3QqCWVudHJ5OwogCQkJdHJ4X2lkX3QJbWF4X3RyeF9pZDsKIAkJCWRpY3RfaW5kZXhf dCoJZHVtbXlfaW5kZXg7Ci0JCQlpYnVmX29wX3QJb3AgPSBpYnVmX3JlY19nZXRfb3BfdHlwZShy ZWMpOworCQkJaWJ1Zl9vcF90CW9wID0gaWJ1Zl9yZWNfZ2V0X29wX3R5cGUoJm10ciwgcmVjKTsK IAogCQkJbWF4X3RyeF9pZCA9IHBhZ2VfZ2V0X21heF90cnhfaWQocGFnZV9hbGlnbihyZWMpKTsK IAkJCXBhZ2VfdXBkYXRlX21heF90cnhfaWQoYmxvY2ssIHBhZ2VfemlwLCBtYXhfdHJ4X2lkLApA QCAtNDU3Miw3ICs0NjM4LDcgQEAgbG9vcDoKIAkJCXV0X2FkKHBhZ2VfdmFsaWRhdGUocGFnZV9h bGlnbihyZWMpLCBpYnVmLT5pbmRleCkpOwogCiAJCQllbnRyeSA9IGlidWZfYnVpbGRfZW50cnlf ZnJvbV9pYnVmX3JlYygKLQkJCQlyZWMsIGhlYXAsICZkdW1teV9pbmRleCk7CisJCQkJJm10ciwg cmVjLCBoZWFwLCAmZHVtbXlfaW5kZXgpOwogCiAJCQl1dF9hZChwYWdlX3ZhbGlkYXRlKGJsb2Nr LT5mcmFtZSwgZHVtbXlfaW5kZXgpKTsKIApAQCAtNDYwNSwxMyArNDY3MSwxNCBAQCBsb29wOgog CQkJCVN0b3JlIGFuZCByZXN0b3JlIHRoZSBjdXJzb3IgcG9zaXRpb24uICovCiAJCQkJdXRfYWQo cmVjID09IGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpKTsKIAkJCQl1dF9hZChwYWdlX3JlY19pc191 c2VyX3JlYyhyZWMpKTsKLQkJCQl1dF9hZChpYnVmX3JlY19nZXRfcGFnZV9ubyhyZWMpID09IHBh Z2Vfbm8pOwotCQkJCXV0X2FkKGlidWZfcmVjX2dldF9zcGFjZShyZWMpID09IHNwYWNlKTsKKwkJ CQl1dF9hZChpYnVmX3JlY19nZXRfcGFnZV9ubygmbXRyLCByZWMpCisJCQkJICAgICAgPT0gcGFn ZV9ubyk7CisJCQkJdXRfYWQoaWJ1Zl9yZWNfZ2V0X3NwYWNlKCZtdHIsIHJlYykgPT0gc3BhY2Up OwogCiAJCQkJYnRyX3BjdXJfc3RvcmVfcG9zaXRpb24oJnBjdXIsICZtdHIpOwotCQkJCWJ0cl9w Y3VyX2NvbW1pdF9zcGVjaWZ5X210cigmcGN1ciwgJm10cik7CisJCQkJaWJ1Zl9idHJfcGN1cl9j b21taXRfc3BlY2lmeV9tdHIoJnBjdXIsICZtdHIpOwogCi0JCQkJbXRyX3N0YXJ0KCZtdHIpOwor CQkJCWlidWZfbXRyX3N0YXJ0KCZtdHIpOwogCiAJCQkJc3VjY2VzcyA9IGJ1Zl9wYWdlX2dldF9r bm93bl9ub3dhaXQoCiAJCQkJCVJXX1hfTEFUQ0gsIGJsb2NrLApAQCAtNDYyNiw3ICs0NjkzLDgg QEAgbG9vcDoKIAkJCQkJCSAgICAgIEJUUl9NT0RJRllfTEVBRiwKIAkJCQkJCSAgICAgICZwY3Vy LCAmbXRyKSkgewogCi0JCQkJCW10cl9jb21taXQoJm10cik7CisJCQkJCXV0X2FkKCFpYnVmX2lu c2lkZSgmbXRyKSk7CisJCQkJCXV0X2FkKG10ci5zdGF0ZSA9PSBNVFJfQ09NTUlUVEVEKTsKIAkJ CQkJbW9wc1tvcF0rKzsKIAkJCQkJaWJ1Zl9kdW1teV9pbmRleF9mcmVlKGR1bW15X2luZGV4KTsK IAkJCQkJZ290byBsb29wOwpAQCAtNDY0MSw3ICs0NzA5LDcgQEAgbG9vcDoKIAogCQkJaWJ1Zl9k dW1teV9pbmRleF9mcmVlKGR1bW15X2luZGV4KTsKIAkJfSBlbHNlIHsKLQkJCWRvcHNbaWJ1Zl9y ZWNfZ2V0X29wX3R5cGUocmVjKV0rKzsKKwkJCWRvcHNbaWJ1Zl9yZWNfZ2V0X29wX3R5cGUoJm10 ciwgcmVjKV0rKzsKIAkJfQogCiAJCS8qIERlbGV0ZSB0aGUgcmVjb3JkIGZyb20gaWJ1ZiAqLwpA QCAtNDY1Miw3ICs0NzIwLDcgQEAgbG9vcDoKIAogCQkJZ290byBsb29wOwogCQl9IGVsc2UgaWYg KGJ0cl9wY3VyX2lzX2FmdGVyX2xhc3Rfb25fcGFnZSgmcGN1cikpIHsKLQkJCW10cl9jb21taXQo Jm10cik7CisJCQlpYnVmX210cl9jb21taXQoJm10cik7CiAJCQlidHJfcGN1cl9jbG9zZSgmcGN1 cik7CiAKIAkJCWdvdG8gbG9vcDsKQEAgLTQ2ODYsNyArNDc1NCw3IEBAIHJlc2V0X2JpdDoKIAkJ fQogCX0KIAotCW10cl9jb21taXQoJm10cik7CisJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOwogCWJ0 cl9wY3VyX2Nsb3NlKCZwY3VyKTsKIAltZW1faGVhcF9mcmVlKGhlYXApOwogCkBAIC00NzEwLDgg KzQ3NzgsNiBAQCByZXNldF9iaXQ6CiAJCWZpbF9kZWNyX3BlbmRpbmdfaWJ1Zl9tZXJnZXMoc3Bh Y2UpOwogCX0KIAotCWlidWZfZXhpdCgpOwotCiAjaWZkZWYgVU5JVl9JQlVGX0NPVU5UX0RFQlVH CiAJdXRfYShpYnVmX2NvdW50X2dldChzcGFjZSwgcGFnZV9ubykgPT0gMCk7CiAjZW5kaWYKQEAg LTQ3MzEsOSArNDc5Nyw4IEBAIGlidWZfZGVsZXRlX2Zvcl9kaXNjYXJkZWRfc3BhY2UoCiAJbWVt X2hlYXBfdCoJaGVhcDsKIAlidHJfcGN1cl90CXBjdXI7CiAJZHR1cGxlX3QqCXNlYXJjaF90dXBs ZTsKLQlyZWNfdCoJCWlidWZfcmVjOworCWNvbnN0IHJlY190KglpYnVmX3JlYzsKIAl1bGludAkJ cGFnZV9ubzsKLQlpYm9vbAkJY2xvc2VkOwogCW10cl90CQltdHI7CiAKIAkvKiBDb3VudHMgZm9y IGRpc2NhcmRlZCBvcGVyYXRpb25zLiAqLwpAQCAtNDc0OCw5ICs0ODEzLDcgQEAgaWJ1Zl9kZWxl dGVfZm9yX2Rpc2NhcmRlZF9zcGFjZSgKIAogCW1lbXNldChkb3BzLCAwLCBzaXplb2YoZG9wcykp OwogbG9vcDoKLQlpYnVmX2VudGVyKCk7Ci0KLQltdHJfc3RhcnQoJm10cik7CisJaWJ1Zl9tdHJf c3RhcnQoJm10cik7CiAKIAkvKiBQb3NpdGlvbiBwY3VyIGluIHRoZSBpbnNlcnQgYnVmZmVyIGF0 IHRoZSBmaXJzdCBlbnRyeSBmb3IgdGhlCiAJc3BhY2UgKi8KQEAgLTQ3NzAsMzkgKzQ4MzMsMzQg QEAgbG9vcDoKIAkJaWJ1Zl9yZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKTsKIAogCQkvKiBD aGVjayBpZiB0aGUgZW50cnkgaXMgZm9yIHRoaXMgc3BhY2UgKi8KLQkJaWYgKGlidWZfcmVjX2dl dF9zcGFjZShpYnVmX3JlYykgIT0gc3BhY2UpIHsKKwkJaWYgKGlidWZfcmVjX2dldF9zcGFjZSgm bXRyLCBpYnVmX3JlYykgIT0gc3BhY2UpIHsKIAogCQkJZ290byBsZWF2ZV9sb29wOwogCQl9CiAK LQkJcGFnZV9ubyA9IGlidWZfcmVjX2dldF9wYWdlX25vKGlidWZfcmVjKTsKKwkJcGFnZV9ubyA9 IGlidWZfcmVjX2dldF9wYWdlX25vKCZtdHIsIGlidWZfcmVjKTsKIAotCQlkb3BzW2lidWZfcmVj X2dldF9vcF90eXBlKGlidWZfcmVjKV0rKzsKKwkJZG9wc1tpYnVmX3JlY19nZXRfb3BfdHlwZSgm bXRyLCBpYnVmX3JlYyldKys7CiAKIAkJLyogRGVsZXRlIHRoZSByZWNvcmQgZnJvbSBpYnVmICov Ci0JCWNsb3NlZCA9IGlidWZfZGVsZXRlX3JlYyhzcGFjZSwgcGFnZV9ubywgJnBjdXIsIHNlYXJj aF90dXBsZSwKLQkJCQkJICZtdHIpOwotCQlpZiAoY2xvc2VkKSB7CisJCWlmIChpYnVmX2RlbGV0 ZV9yZWMoc3BhY2UsIHBhZ2Vfbm8sICZwY3VyLCBzZWFyY2hfdHVwbGUsCisJCQkJICAgICZtdHIp KSB7CiAJCQkvKiBEZWxldGlvbiB3YXMgcGVzc2ltaXN0aWMgYW5kIG10ciB3YXMgY29tbWl0dGVk OgogCQkJd2Ugc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nIGFnYWluICovCiAKLQkJCWlidWZfZXhp dCgpOwotCiAJCQlnb3RvIGxvb3A7CiAJCX0KIAogCQlpZiAoYnRyX3BjdXJfaXNfYWZ0ZXJfbGFz dF9vbl9wYWdlKCZwY3VyKSkgewotCQkJbXRyX2NvbW1pdCgmbXRyKTsKKwkJCWlidWZfbXRyX2Nv bW1pdCgmbXRyKTsKIAkJCWJ0cl9wY3VyX2Nsb3NlKCZwY3VyKTsKIAotCQkJaWJ1Zl9leGl0KCk7 Ci0KIAkJCWdvdG8gbG9vcDsKIAkJfQogCX0KIAogbGVhdmVfbG9vcDoKLQltdHJfY29tbWl0KCZt dHIpOworCWlidWZfbXRyX2NvbW1pdCgmbXRyKTsKIAlidHJfcGN1cl9jbG9zZSgmcGN1cik7CiAK ICNpZmRlZiBIQVZFX0FUT01JQ19CVUlMVElOUwpAQCAtNDgxNCw4ICs0ODcyLDYgQEAgbGVhdmVf bG9vcDoKIAltdXRleF9leGl0KCZpYnVmX211dGV4KTsKICNlbmRpZiAvKiBIQVZFX0FUT01JQ19C VUlMVElOUyAqLwogCi0JaWJ1Zl9leGl0KCk7Ci0KIAltZW1faGVhcF9mcmVlKGhlYXApOwogfQog CkBAIC00ODMxLDE4ICs0ODg3LDE1IEBAIGlidWZfaXNfZW1wdHkodm9pZCkKIAljb25zdCBwYWdl X3QqCXJvb3Q7CiAJbXRyX3QJCW10cjsKIAotCWlidWZfZW50ZXIoKTsKLQltdHJfc3RhcnQoJm10 cik7CisJaWJ1Zl9tdHJfc3RhcnQoJm10cik7CiAKIAltdXRleF9lbnRlcigmaWJ1Zl9tdXRleCk7 CiAJcm9vdCA9IGlidWZfdHJlZV9yb290X2dldCgmbXRyKTsKIAltdXRleF9leGl0KCZpYnVmX211 dGV4KTsKIAogCWlzX2VtcHR5ID0gKHBhZ2VfZ2V0X25fcmVjcyhyb290KSA9PSAwKTsKLQltdHJf Y29tbWl0KCZtdHIpOwotCWlidWZfZXhpdCgpOwotCiAJdXRfYShpc19lbXB0eSA9PSBpYnVmLT5l bXB0eSk7CisJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOwogCiAJcmV0dXJuKGlzX2VtcHR5KTsKIH0K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMHJlYS5oJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMHJlYS5oCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwMzIyMTEzOTE2LW9yaWN3MDJxZzN0enZpbTgKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjByZWEuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMDMyNDEyMDAxNC1oazFpdzUyOXF4ajZsdmVxCkBAIC03MCwxMCArNzAsMTAgQEAgVU5J Vl9JTlRFUk4KIHVsaW50CiBidWZfcmVhZF9haGVhZF9saW5lYXIoCiAvKj09PT09PT09PT09PT09 PT09PSovCi0JdWxpbnQJc3BhY2UsCS8qITwgaW46IHNwYWNlIGlkICovCi0JdWxpbnQJemlwX3Np emUsLyohPCBpbjogY29tcHJlc3NlZCBwYWdlIHNpemUgaW4gYnl0ZXMsIG9yIDAgKi8KLQl1bGlu dAlvZmZzZXQpOy8qITwgaW46IHBhZ2UgbnVtYmVyIG9mIGEgcGFnZTsgTk9URTogdGhlIGN1cnJl bnQgdGhyZWFkCi0JCQltdXN0IHdhbnQgYWNjZXNzIHRvIHRoaXMgcGFnZSAoc2VlIE5PVEUgMyBh Ym92ZSkgKi8KKwl1bGludAlzcGFjZSwJCS8qITwgaW46IHNwYWNlIGlkICovCisJdWxpbnQJemlw X3NpemUsCS8qITwgaW46IGNvbXByZXNzZWQgcGFnZSBzaXplIGluIGJ5dGVzLCBvciAwICovCisJ dWxpbnQJb2Zmc2V0LAkJLyohPCBpbjogcGFnZSBudW1iZXI7IHNlZSBOT1RFIDMgYWJvdmUgKi8K KwlpYm9vbAlpbnNpZGVfaWJ1Zik7CS8qITwgaW46IFRSVUUgaWYgd2UgYXJlIGluc2lkZSBpYnVm IHJvdXRpbmUgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIElzc3VlcyByZWFkIHJlcXVlc3RzIGZvciBw YWdlcyB3aGljaCB0aGUgaWJ1ZiBtb2R1bGUgd2FudHMgdG8gcmVhZCBpbiwgaW4KIG9yZGVyIHRv IGNvbnRyYWN0IHRoZSBpbnNlcnQgYnVmZmVyIHRyZWUuIFRlY2huaWNhbGx5LCB0aGlzIGZ1bmN0 aW9uIGlzIGxpa2UKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv aWJ1ZjBpYnVmLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYuaAly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjExMzkxNi1vcmljdzAycWczdHp2 aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYuaAlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMDAxNC1oazFpdzUyOXF4ajZsdmVxCkBAIC0x MDQsNiArMTA0LDIyIEBAIFVOSVZfSU5URVJOCiB2b2lkCiBpYnVmX3VwZGF0ZV9tYXhfdGFibGVz cGFjZV9pZCh2b2lkKTsKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgorU3RhcnRzIGFuIGluc2VydCBidWZmZXIgbWluaS10cmFuc2FjdGlvbi4gKi8KK1VO SVZfSU5MSU5FCit2b2lkCitpYnVmX210cl9zdGFydCgKKy8qPT09PT09PT09PT0qLworCW10cl90 KgltdHIpCS8qITwgb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKK0NvbW1pdHMgYW4gaW5zZXJ0IGJ1ZmZlciBtaW5pLXRyYW5z YWN0aW9uLiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2lidWZfbXRyX2NvbW1pdCgKKy8qPT09PT09 PT09PT09Ki8KKwltdHJfdCoJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLwor CV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBJbml0aWFsaXpl cyBhbiBpYnVmIGJpdG1hcCBwYWdlLiAqLwogVU5JVl9JTlRFUk4KQEAgLTIyNCwxMCArMjQwLDEy IEBAIHJvdXRpbmUuCiBGb3IgaW5zdGFuY2UsIGEgcmVhZC1haGVhZCBvZiBub24taWJ1ZiBwYWdl cyBpcyBmb3JiaWRkZW4gYnkgdGhyZWFkcwogdGhhdCBhcmUgZXhlY3V0aW5nIGFuIGluc2VydCBi dWZmZXIgcm91dGluZS4KIEByZXR1cm4gVFJVRSBpZiBpbnNpZGUgYW4gaW5zZXJ0IGJ1ZmZlciBy b3V0aW5lICovCi1VTklWX0lOVEVSTgorVU5JVl9JTkxJTkUKIGlib29sCi1pYnVmX2luc2lkZSh2 b2lkKTsKLS8qPT09PT09PT09PT09PSovCitpYnVmX2luc2lkZSgKKy8qPT09PT09PT0qLworCWNv bnN0IG10cl90KgltdHIpCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlfX2F0dHJpYnV0 ZV9fKChub25udWxsLCBwdXJlKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDaGVja3MgaWYgYSBw YWdlIGFkZHJlc3MgaXMgYW4gaWJ1ZiBiaXRtYXAgcGFnZSAobGV2ZWwgMyBwYWdlKSBhZGRyZXNz LgogQHJldHVybglUUlVFIGlmIGEgYml0bWFwIHBhZ2UgKi8KCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaWJ1ZjBpYnVmLmljJwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvaWJ1ZjBpYnVmLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwMzIyMTEzOTE2LW9yaWN3MDJxZzN0enZpbTgKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2lidWYwaWJ1Zi5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEy MDAxNC1oazFpdzUyOXF4ajZsdmVxCkBAIC0zNyw2ICszNywzMCBAQCBidWZmZXIgaW5zZXJ0cyB0 byB0aGlzIHBhZ2UuICBJZiB0aGVyZSBpCiBjb3JyZXNwb25kaW5nIGJpdHMgYXJlIHNldCBpbiB0 aGUgaWJ1ZiBiaXRtYXAuICovCiAjZGVmaW5lIElCVUZfUEFHRV9TSVpFX1BFUl9GUkVFX1NQQUNF CTMyCiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCitTdGFydHMgYW4gaW5zZXJ0IGJ1ZmZlciBtaW5pLXRyYW5zYWN0 aW9uLiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2lidWZfbXRyX3N0YXJ0KAorLyo9PT09PT09PT09 PSovCisJbXRyX3QqCW10cikJLyohPCBvdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KK3sKKwltdHJf c3RhcnQobXRyKTsKKwltdHItPmluc2lkZV9pYnVmID0gVFJVRTsKK30KKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitD b21taXRzIGFuIGluc2VydCBidWZmZXIgbWluaS10cmFuc2FjdGlvbi4gKi8KK1VOSVZfSU5MSU5F Cit2b2lkCitpYnVmX210cl9jb21taXQoCisvKj09PT09PT09PT09PSovCisJbXRyX3QqCW10cikJ LyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KK3sKKwl1dF9hZChtdHItPmluc2lkZV9p YnVmKTsKKwl1dF9kKG10ci0+aW5zaWRlX2lidWYgPSBGQUxTRSk7CisJbXRyX2NvbW1pdChtdHIp OworfQorCiAvKiogSW5zZXJ0IGJ1ZmZlciBzdHJ1Y3QgKi8KIHN0cnVjdCBpYnVmX3N0cnVjdHsK IAl1bGludAkJc2l6ZTsJCS8qITwgY3VycmVudCBzaXplIG9mIHRoZSBpYnVmIGluZGV4CkBAIC0x MjAsNiArMTQ0LDIyIEBAIGlidWZfc2hvdWxkX3RyeSgKIAlyZXR1cm4oRkFMU0UpOwogfQogCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgorUmV0dXJucyBUUlVFIGlmIHRoZSBjdXJyZW50IE9TIHRocmVhZCBpcyBw ZXJmb3JtaW5nIGFuIGluc2VydCBidWZmZXIKK3JvdXRpbmUuCisKK0ZvciBpbnN0YW5jZSwgYSBy ZWFkLWFoZWFkIG9mIG5vbi1pYnVmIHBhZ2VzIGlzIGZvcmJpZGRlbiBieSB0aHJlYWRzCit0aGF0 IGFyZSBleGVjdXRpbmcgYW4gaW5zZXJ0IGJ1ZmZlciByb3V0aW5lLgorQHJldHVybiBUUlVFIGlm IGluc2lkZSBhbiBpbnNlcnQgYnVmZmVyIHJvdXRpbmUgKi8KK1VOSVZfSU5MSU5FCitpYm9vbAor aWJ1Zl9pbnNpZGUoCisvKj09PT09PT09Ki8KKwljb25zdCBtdHJfdCoJbXRyKQkvKiE8IGluOiBt aW5pLXRyYW5zYWN0aW9uICovCit7CisJcmV0dXJuKG10ci0+aW5zaWRlX2lidWYpOworfQorCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCiBDaGVja3MgaWYgYSBwYWdlIGFkZHJlc3MgaXMgYW4gaWJ1ZiBi aXRtYXAgcGFnZSBhZGRyZXNzLgogQHJldHVybglUUlVFIGlmIGEgYml0bWFwIHBhZ2UgKi8KCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5oJwotLS0g YS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwMzIyMTEzOTE2LW9yaWN3MDJxZzN0enZpbTgKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL210cjBtdHIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDMyNDEyMDAxNC1oazFpdzUyOXF4ajZsdmVxCkBAIC0xOTAsMjEgKzE5MCwyMSBAQCBmdW5j dGlvbnMpLiAgVGhlIHBhZ2UgbnVtYmVyIHBhcmFtZXRlciB3CiAvKiBAfSAqLwogCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgotU3RhcnRzIGEgbWluaS10cmFuc2FjdGlvbiBhbmQgY3JlYXRlcyBhIG1pbmktdHJhbnNh Y3Rpb24gaGFuZGxlCi1hbmQgYnVmZmVyIGluIHRoZSBtZW1vcnkgYnVmZmVyIGdpdmVuIGJ5IHRo ZSBjYWxsZXIuCi1AcmV0dXJuCW10ciBidWZmZXIgd2hpY2ggYWxzbyBhY3RzIGFzIHRoZSBtdHIg aGFuZGxlICovCitTdGFydHMgYSBtaW5pLXRyYW5zYWN0aW9uLiAqLwogVU5JVl9JTkxJTkUKLW10 cl90Kgordm9pZAogbXRyX3N0YXJ0KAogLyo9PT09PT0qLwotCW10cl90KgltdHIpOwkvKiE8IGlu OiBtZW1vcnkgYnVmZmVyIGZvciB0aGUgbXRyIGJ1ZmZlciAqLworCW10cl90KgltdHIpCS8qITwg b3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIENvbW1pdHMgYSBtaW5pLXRyYW5zYWN0aW9uLiAqLwogVU5JVl9JTlRFUk4KIHZv aWQKIG10cl9jb21taXQoCiAvKj09PT09PT0qLwotCW10cl90KgltdHIpOwkvKiE8IGluOiBtaW5p LXRyYW5zYWN0aW9uICovCisJbXRyX3QqCW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rp b24gKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNldHMgYW5kIHJldHVy bnMgYSBzYXZlcG9pbnQgaW4gbXRyLgogQHJldHVybglzYXZlcG9pbnQgKi8KQEAgLTM3OCw2ICsz NzgsOCBAQCBzdHJ1Y3QgbXRyX3N0cnVjdHsKICNlbmRpZgogCWR5bl9hcnJheV90CW1lbW87CS8q ITwgbWVtbyBzdGFjayBmb3IgbG9ja3MgZXRjLiAqLwogCWR5bl9hcnJheV90CWxvZzsJLyohPCBt aW5pLXRyYW5zYWN0aW9uIGxvZyAqLworCWlib29sCQlpbnNpZGVfaWJ1ZjsKKwkJCQkvKiE8IFRS VUUgaWYgaW5zaWRlIGlidWYgY2hhbmdlcyAqLwogCWlib29sCQltb2RpZmljYXRpb25zOwogCQkJ CS8qIFRSVUUgaWYgdGhlIG10ciBtYWRlIG1vZGlmaWNhdGlvbnMgdG8KIAkJCQlidWZmZXIgcG9v bCBwYWdlcyAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9t dHIwbXRyLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5pYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjExMzkxNi1vcmljdzAycWczdHp2aW04 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9tdHIwbXRyLmljCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwMzI0MTIwMDE0LWhrMWl3NTI5cXhqNmx2ZXEKQEAgLTMwLDI2 ICszMCwyMyBAQCBDcmVhdGVkIDExLzI2LzE5OTUgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAibWFj aDBkYXRhLmgiCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCi1TdGFydHMgYSBtaW5pLXRyYW5zYWN0aW9uIGFuZCBj cmVhdGVzIGEgbWluaS10cmFuc2FjdGlvbiBoYW5kbGUKLWFuZCBhIGJ1ZmZlciBpbiB0aGUgbWVt b3J5IGJ1ZmZlciBnaXZlbiBieSB0aGUgY2FsbGVyLgotQHJldHVybgltdHIgYnVmZmVyIHdoaWNo IGFsc28gYWN0cyBhcyB0aGUgbXRyIGhhbmRsZSAqLworU3RhcnRzIGEgbWluaS10cmFuc2FjdGlv bi4gKi8KIFVOSVZfSU5MSU5FCi1tdHJfdCoKK3ZvaWQKIG10cl9zdGFydCgKIC8qPT09PT09Ki8K LQltdHJfdCoJbXRyKQkvKiE8IGluOiBtZW1vcnkgYnVmZmVyIGZvciB0aGUgbXRyIGJ1ZmZlciAq LworCW10cl90KgltdHIpCS8qITwgb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCiB7CiAJZHluX2Fy cmF5X2NyZWF0ZSgmKG10ci0+bWVtbykpOwogCWR5bl9hcnJheV9jcmVhdGUoJihtdHItPmxvZykp OwogCiAJbXRyLT5sb2dfbW9kZSA9IE1UUl9MT0dfQUxMOwogCW10ci0+bW9kaWZpY2F0aW9ucyA9 IEZBTFNFOworCW10ci0+aW5zaWRlX2lidWYgPSBGQUxTRTsKIAltdHItPm5fbG9nX3JlY3MgPSAw OwogCiAJdXRfZChtdHItPnN0YXRlID0gTVRSX0FDVElWRSk7CiAJdXRfZChtdHItPm1hZ2ljX24g PSBNVFJfTUFHSUNfTik7Ci0KLQlyZXR1cm4obXRyKTsKIH0KIAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDMyMjExMzkxNi1vcmljdzAycWczdHp2aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9zeW5jMHN5bmMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEy MDAxNC1oazFpdzUyOXF4ajZsdmVxCkBAIC0xMTAsNyArMTEwLDYgQEAgZXh0ZXJuIG15c3FsX3Bm c19rZXlfdAlzeW5fYXJyX211dGV4X2tleQogZXh0ZXJuIG15c3FsX3Bmc19rZXlfdAlzeW5jX3Ro cmVhZF9tdXRleF9rZXk7CiAjIGVuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogZXh0ZXJuIG15 c3FsX3Bmc19rZXlfdAl0cnhfZG91Ymxld3JpdGVfbXV0ZXhfa2V5OwotZXh0ZXJuIG15c3FsX3Bm c19rZXlfdAl0aHJfbG9jYWxfbXV0ZXhfa2V5OwogZXh0ZXJuIG15c3FsX3Bmc19rZXlfdAl0cnhf dW5kb19tdXRleF9rZXk7CiAjZW5kaWYgLyogVU5JVl9QRlNfTVVURVggKi8KIAoKPT09IHJlbW92 ZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RocjBsb2MuaCcKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3RocjBsb2MuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMDMyMjExMzkxNi1vcmljdzAycWczdHp2aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS90aHIwbG9jLmgJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMApAQCAtMSw3NCArMCww IEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKLQotQ29weXJpZ2h0IChjKSAxOTk1LCAyMDA5LCBJ bm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLQotVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIK LXRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi1Gb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UuCi0KLVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAotQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKLUZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotCi1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCi10aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl Ci1QbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi0KLSoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCi1AZmlsZSBpbmNsdWRlL3RocjBsb2MuaAotVGhlIHRocmVhZCBsb2Nh bCBzdG9yYWdlCi0KLUNyZWF0ZWQgMTAvNS8xOTk1IEhlaWtraSBUdXVyaQotKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogVGhpcyBt b2R1bGUgaW1wbGVtZW50cyBzdG9yYWdlIHByaXZhdGUgdG8gZWFjaCB0aHJlYWQsCi1hIGNhcGFi aWxpdHkgdXNlZnVsIGluIHNvbWUgc2l0dWF0aW9ucyBsaWtlIHN0b3JpbmcgdGhlCi1PUyBoYW5k bGUgdG8gdGhlIGN1cnJlbnQgdGhyZWFkLCBvciBpdHMgcHJpb3JpdHkuICovCi0KLSNpZm5kZWYg dGhyMGxvY19oCi0jZGVmaW5lIHRocjBsb2NfaAotCi0jaW5jbHVkZSAidW5pdi5pIgotI2luY2x1 ZGUgIm9zMHRocmVhZC5oIgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUluaXRpYWxpemVzIHRoZSB0aHJlYWQg bG9jYWwgc3RvcmFnZSBtb2R1bGUuICovCi1VTklWX0lOVEVSTgotdm9pZAotdGhyX2xvY2FsX2lu aXQodm9pZCk7Ci0vKj09PT09PT09PT09PT09PT0qLwotIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotQ2xvc2UgdGhl IHRocmVhZCBsb2NhbCBzdG9yYWdlIG1vZHVsZS4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi10aHJf bG9jYWxfY2xvc2Uodm9pZCk7Ci0vKj09PT09PT09PT09PT09PT09Ki8KLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgotQ3JlYXRlcyBhIGxvY2FsIHN0b3JhZ2Ugc3RydWN0IGZvciB0aGUgY2FsbGluZyBuZXcgdGhy ZWFkLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLXRocl9sb2NhbF9jcmVhdGUodm9pZCk7Ci0vKj09 PT09PT09PT09PT09PT09PSovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUZyZWVzIHRoZSBsb2NhbCBzdG9y YWdlIHN0cnVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aHJlYWQuICovCi1VTklWX0lOVEVSTgotdm9p ZAotdGhyX2xvY2FsX2ZyZWUoCi0vKj09PT09PT09PT09Ki8KLQlvc190aHJlYWRfaWRfdAlpZCk7 CS8qITwgaW46IHRocmVhZCBpZCAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1SZXR1cm5zIHBvaW50ZXIg dG8gdGhlICdpbl9pYnVmJyBmaWVsZCB3aXRoaW4gdGhlIGN1cnJlbnQgdGhyZWFkIGxvY2FsCi1z dG9yYWdlLgotQHJldHVybglwb2ludGVyIHRvIHRoZSBpbl9pYnVmIGZpZWxkICovCi1VTklWX0lO VEVSTgotaWJvb2wqCi10aHJfbG9jYWxfZ2V0X2luX2lidWZfZmllbGQodm9pZCk7Ci0vKj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotI2lmbmRlZiBVTklWX05PTklOTAotI2luY2x1 ZGUgInRocjBsb2MuaWMiCi0jZW5kaWYKLQotI2VuZGlmCgo9PT0gcmVtb3ZlZCBmaWxlICdzdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvdGhyMGxvYy5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3RocjBsb2MuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjIx MTM5MTYtb3JpY3cwMnFnM3R6dmltOAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdGhy MGxvYy5pYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCkBAIC0xLDI0ICswLDAgQEAKLS8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgotCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIwMDksIElubm9iYXNlIE95 LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotCi1UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgotdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUKLUZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLQotVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsIGJ1dCBXSVRIT1VUCi1BTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwotRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0KLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKLXRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUKLVBsYWNlLCBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKLQotKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKLUBmaWxlIGluY2x1ZGUvdGhyMGxvYy5pYwotVGhyZWFkIGxvY2FsIHN0b3JhZ2UKLQot Q3JlYXRlZCAxMC80LzE5OTUgSGVpa2tpIFR1dXJpCi0qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2UvbXRyL210cjBtdHIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9tdHIvbXRy MG10ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMzIyMTEzOTE2LW9yaWN3 MDJxZzN0enZpbTgKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9tdHIvbXRyMG10ci5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMzI0MTIwMDE0LWhrMWl3NTI5cXhqNmx2ZXEKQEAg LTI1MSw2ICsyNTEsNyBAQCBtdHJfY29tbWl0KAogCXV0X2FkKG10cik7CiAJdXRfYWQobXRyLT5t YWdpY19uID09IE1UUl9NQUdJQ19OKTsKIAl1dF9hZChtdHItPnN0YXRlID09IE1UUl9BQ1RJVkUp OworCXV0X2FkKCFtdHItPmluc2lkZV9pYnVmKTsKIAl1dF9kKG10ci0+c3RhdGUgPSBNVFJfQ09N TUlUVElORyk7CiAKICNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3J2LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2 L3NydjBzcnYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjExMzkxNi1v cmljdzAycWczdHp2aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMDAxNC1oazFpdzUyOXF4ajZsdmVx CkBAIC02Niw3ICs2Niw2IEBAIENyZWF0ZWQgMTAvOC8xOTk1IEhlaWtraSBUdXVyaQogI2luY2x1 ZGUgIm1lbTBtZW0uaCIKICNpbmNsdWRlICJtZW0wcG9vbC5oIgogI2luY2x1ZGUgInN5bmMwc3lu Yy5oIgotI2luY2x1ZGUgInRocjBsb2MuaCIKICNpbmNsdWRlICJxdWUwcXVlLmgiCiAjaW5jbHVk ZSAibG9nMHJlY3YuaCIKICNpbmNsdWRlICJwYXJzMHBhcnMuaCIKQEAgLTExMjksNyArMTEyOCw2 IEBAIHNydl9nZW5lcmFsX2luaXQodm9pZCkKIAlvc19zeW5jX2luaXQoKTsKIAlzeW5jX2luaXQo KTsKIAltZW1faW5pdChzcnZfbWVtX3Bvb2xfc2l6ZSk7Ci0JdGhyX2xvY2FsX2luaXQoKTsKIH0K IAogLyo9PT09PT09PT09PT09PT09PT09PT09PSBJbm5vREIgU2VydmVyIEZJRk8gcXVldWUgPT09 PT09PT09PT09PT09PT09PT09PT0qLwpAQCAtMzA3MSw4ICszMDY5LDYgQEAgc3VzcGVuZF90aHJl YWQ6CiAJbWFpbiB0aHJlYWQgZ29lcyBiYWNrIHRvIGxvb3AuICovCiAKIAlnb3RvIGxvb3A7Ci0K LQlPU19USFJFQURfRFVNTVlfUkVUVVJOOwkvKiBOb3QgcmVhY2hlZCwgYXZvaWQgY29tcGlsZXIg d2FybmluZyAqLwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Ny di9zcnYwc3RhcnQuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjExMzkx Ni1vcmljdzAycWczdHp2aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5j CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMzI0MTIwMDE0LWhrMWl3NTI5cXhq Nmx2ZXEKQEAgLTg1LDcgKzg1LDYgQEAgQ3JlYXRlZCAyLzE2LzE5OTYgSGVpa2tpIFR1dXJpCiAj IGluY2x1ZGUgInJvdzByb3cuaCIKICMgaW5jbHVkZSAicm93MG15c3FsLmgiCiAjIGluY2x1ZGUg ImJ0cjBwY3VyLmgiCi0jIGluY2x1ZGUgInRocjBsb2MuaCIKICMgaW5jbHVkZSAib3Mwc3luYy5o IiAvKiBmb3IgSU5OT0RCX1JXX0xPQ0tTX1VTRV9BVE9NSUNTICovCiAjIGluY2x1ZGUgInpsaWIu aCIgLyogZm9yIFpMSUJfVkVSU0lPTiAqLwogCkBAIC0yMjEwLDcgKzIyMDksNiBAQCBpbm5vYmFz ZV9zaHV0ZG93bl9mb3JfbXlzcWwodm9pZCkKIAlpYnVmX2Nsb3NlKCk7CiAJbG9nX3NodXRkb3du KCk7CiAJbG9ja19zeXNfY2xvc2UoKTsKLQl0aHJfbG9jYWxfY2xvc2UoKTsKIAl0cnhfc3lzX2Zp bGVfZm9ybWF0X2Nsb3NlKCk7CiAJdHJ4X3N5c19jbG9zZSgpOwogCgo9PT0gcmVtb3ZlZCBkaXJl Y3RvcnkgJ3N0b3JhZ2UvaW5ub2Jhc2UvdGhyJwo9PT0gcmVtb3ZlZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL3Roci90aHIwbG9jLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvdGhyL3RocjBsb2Mu YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjExMzkxNi1vcmljdzAycWcz dHp2aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvdGhyL3RocjBsb2MuYwkxOTcwLTAxLTAxIDAw OjAwOjAwICswMDAwCkBAIC0xLDI1OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQot Q29weXJpZ2h0IChjKSAxOTk1LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KLQotVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKLXRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi1Gb3VuZGF0 aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0KLVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAotQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MKLUZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi1Zb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9u ZyB3aXRoCi10aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlCi1QbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExLTEzMDcgVVNBCi0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1AZmlsZSB0aHIvdGhy MGxvYy5jCi1UaGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UKLQotQ3JlYXRlZCAxMC81LzE5OTUgSGVp a2tpIFR1dXJpCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwotCi0jaW5jbHVkZSAidGhyMGxvYy5oIgotI2lmZGVmIFVOSVZfTk9OSU5MCi0j aW5jbHVkZSAidGhyMGxvYy5pYyIKLSNlbmRpZgotCi0jaW5jbHVkZSAic3luYzBzeW5jLmgiCi0j aW5jbHVkZSAiaGFzaDBoYXNoLmgiCi0jaW5jbHVkZSAibWVtMG1lbS5oIgotI2luY2x1ZGUgInNy djBzcnYuaCIKLQotLyoKLQlJTVBMRU1FTlRBVElPTiBPRiBUSFJFQUQgTE9DQUwgU1RPUkFHRQot CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoZSB0aHJlYWRzIHNv bWV0aW1lcyBuZWVkIHByaXZhdGUgZGF0YSB3aGljaCBkZXBlbmRzIG9uIHRoZSB0aHJlYWQgaWQu Ci1UaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgaGFzaCB0YWJsZSwgd2hlcmUgdGhlIGhhc2ggdmFs dWUgaXMgY2FsY3VsYXRlZAotZnJvbSB0aGUgdGhyZWFkIGlkLCB0byBwcmVwYXJlIGZvciBhIGxh cmdlIG51bWJlciBvZiB0aHJlYWRzLiBUaGUgaGFzaCB0YWJsZQotaXMgcHJvdGVjdGVkIGJ5IGEg bXV0ZXguIElmIHlvdSBuZWVkIG1vZGlmeSB0aGUgcHJvZ3JhbSBhbmQgcHV0IG5ldyBkYXRhIHRv Ci10aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UsIGp1c3QgYWRkIGl0IHRvIHN0cnVjdCB0aHJfbG9j YWxfc3RydWN0IGluIHRoZQotaGVhZGVyIGZpbGUuICovCi0KLS8qKiBNdXRleCBwcm90ZWN0aW5n IHRocl9sb2NhbF9oYXNoICovCi1zdGF0aWMgbXV0ZXhfdAkJdGhyX2xvY2FsX211dGV4OwotCi0v KiogVGhlIGhhc2ggdGFibGUuIFRoZSBtb2R1bGUgaXMgbm90IHlldCBpbml0aWFsaXplZCB3aGVu IGl0IGlzIE5VTEwuICovCi1zdGF0aWMgaGFzaF90YWJsZV90Kgl0aHJfbG9jYWxfaGFzaAk9IE5V TEw7Ci0KLS8qKiBUaHJlYWQgbG9jYWwgZGF0YSAqLwotdHlwZWRlZiBzdHJ1Y3QgdGhyX2xvY2Fs X3N0cnVjdCB0aHJfbG9jYWxfdDsKLQotI2lmZGVmIFVOSVZfUEZTX01VVEVYCi0vKiBLZXkgdG8g cmVnaXN0ZXIgdGhlIG11dGV4IHdpdGggcGVyZm9ybWFuY2Ugc2NoZW1hICovCi1VTklWX0lOVEVS TiBteXNxbF9wZnNfa2V5X3QJdGhyX2xvY2FsX211dGV4X2tleTsKLSNlbmRpZiAvKiBVTklWX1BG U19NVVRFWCAqLwotCi0vKiogQGJyaWVmIFRocmVhZCBsb2NhbCBkYXRhLgotVGhlIHByaXZhdGUg ZGF0YSBmb3IgZWFjaCB0aHJlYWQgc2hvdWxkIGJlIHB1dCB0bwotdGhlIHN0cnVjdHVyZSBiZWxv dyBhbmQgdGhlIGFjY2Vzc29yIGZ1bmN0aW9ucyB3cml0dGVuCi1mb3IgdGhlIGZpZWxkLiAqLwot c3RydWN0IHRocl9sb2NhbF9zdHJ1Y3R7Ci0Jb3NfdGhyZWFkX2lkX3QJaWQ7CS8qITwgaWQgb2Yg dGhlIHRocmVhZCB3aGljaCBvd25zIHRoaXMgc3RydWN0ICovCi0Jb3NfdGhyZWFkX3QJaGFuZGxl OwkvKiE8IG9wZXJhdGluZyBzeXN0ZW0gaGFuZGxlIHRvIHRoZSB0aHJlYWQgKi8KLQlpYm9vbAkJ aW5faWJ1ZjsvKiE8IFRSVUUgaWYgdGhlIHRocmVhZCBpcyBkb2luZyBhbiBpYnVmCi0JCQkJb3Bl cmF0aW9uICovCi0JaGFzaF9ub2RlX3QJaGFzaDsJLyohPCBoYXNoIGNoYWluIG5vZGUgKi8KLQl1 bGludAkJbWFnaWNfbjsvKiE8IG1hZ2ljIG51bWJlciAoVEhSX0xPQ0FMX01BR0lDX04pICovCi19 OwotCi0vKiogVGhlIHZhbHVlIG9mIHRocl9sb2NhbF9zdHJ1Y3Q6Om1hZ2ljX24gKi8KLSNkZWZp bmUgVEhSX0xPQ0FMX01BR0lDX04JMTIzMTIzNAotCi0jaWZkZWYgVU5JVl9ERUJVRwotLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCi1WYWxpZGF0ZXMgdGhyZWFkIGxvY2FsIGRhdGEuCi1AcmV0dXJuCVRSVUUgaWYg dmFsaWQgKi8KLXN0YXRpYwotaWJvb2wKLXRocl9sb2NhbF92YWxpZGF0ZSgKLS8qPT09PT09PT09 PT09PT09Ki8KLQljb25zdCB0aHJfbG9jYWxfdCoJbG9jYWwpCS8qITwgaW46IGRhdGEgdG8gdmFs aWRhdGUgKi8KLXsKLQl1dF9hZChsb2NhbC0+bWFnaWNfbiA9PSBUSFJfTE9DQUxfTUFHSUNfTik7 Ci0JdXRfYWQobG9jYWwtPmluX2lidWYgPT0gRkFMU0UgfHwgbG9jYWwtPmluX2lidWYgPT0gVFJV RSk7Ci0JcmV0dXJuKFRSVUUpOwotfQotI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KLQotLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCi1SZXR1cm5zIHRoZSBsb2NhbCBzdG9yYWdlIHN0cnVjdCBmb3IgYSB0aHJlYWQu Ci1AcmV0dXJuCWxvY2FsIHN0b3JhZ2UgKi8KLXN0YXRpYwotdGhyX2xvY2FsX3QqCi10aHJfbG9j YWxfZ2V0KAotLyo9PT09PT09PT09Ki8KLQlvc190aHJlYWRfaWRfdAlpZCkJLyohPCBpbjogdGhy ZWFkIGlkIG9mIHRoZSB0aHJlYWQgKi8KLXsKLQl0aHJfbG9jYWxfdCoJbG9jYWw7Ci0KLXRyeV9h Z2FpbjoKLQl1dF9hZCh0aHJfbG9jYWxfaGFzaCk7Ci0JdXRfYWQobXV0ZXhfb3duKCZ0aHJfbG9j YWxfbXV0ZXgpKTsKLQotCS8qIExvb2sgZm9yIHRoZSBsb2NhbCBzdHJ1Y3QgaW4gdGhlIGhhc2gg dGFibGUgKi8KLQotCWxvY2FsID0gTlVMTDsKLQotCUhBU0hfU0VBUkNIKGhhc2gsIHRocl9sb2Nh bF9oYXNoLCBvc190aHJlYWRfcGYoaWQpLAotCQkgICAgdGhyX2xvY2FsX3QqLCBsb2NhbCwgdXRf YWQodGhyX2xvY2FsX3ZhbGlkYXRlKGxvY2FsKSksCi0JCSAgICBvc190aHJlYWRfZXEobG9jYWwt PmlkLCBpZCkpOwotCWlmIChsb2NhbCA9PSBOVUxMKSB7Ci0JCW11dGV4X2V4aXQoJnRocl9sb2Nh bF9tdXRleCk7Ci0KLQkJdGhyX2xvY2FsX2NyZWF0ZSgpOwotCi0JCW11dGV4X2VudGVyKCZ0aHJf bG9jYWxfbXV0ZXgpOwotCi0JCWdvdG8gdHJ5X2FnYWluOwotCX0KLQotCXV0X2FkKHRocl9sb2Nh bF92YWxpZGF0ZShsb2NhbCkpOwotCi0JcmV0dXJuKGxvY2FsKTsKLX0KLQotLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCi1SZXR1cm5zIHBvaW50ZXIgdG8gdGhlICdpbl9pYnVmJyBmaWVsZCB3aXRoaW4gdGhlIGN1 cnJlbnQgdGhyZWFkIGxvY2FsCi1zdG9yYWdlLgotQHJldHVybglwb2ludGVyIHRvIHRoZSBpbl9p YnVmIGZpZWxkICovCi1VTklWX0lOVEVSTgotaWJvb2wqCi10aHJfbG9jYWxfZ2V0X2luX2lidWZf ZmllbGQodm9pZCkKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotewotCXRocl9s b2NhbF90Kglsb2NhbDsKLQotCW11dGV4X2VudGVyKCZ0aHJfbG9jYWxfbXV0ZXgpOwotCi0JbG9j YWwgPSB0aHJfbG9jYWxfZ2V0KG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKLQotCW11dGV4X2V4 aXQoJnRocl9sb2NhbF9tdXRleCk7Ci0KLQlyZXR1cm4oJihsb2NhbC0+aW5faWJ1ZikpOwotfQot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKLUNyZWF0ZXMgYSBsb2NhbCBzdG9yYWdlIHN0cnVjdCBmb3IgdGhl IGNhbGxpbmcgbmV3IHRocmVhZC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi10aHJfbG9jYWxfY3Jl YXRlKHZvaWQpCi0vKj09PT09PT09PT09PT09PT09PSovCi17Ci0JdGhyX2xvY2FsX3QqCWxvY2Fs OwotCi0JaWYgKHRocl9sb2NhbF9oYXNoID09IE5VTEwpIHsKLQkJdGhyX2xvY2FsX2luaXQoKTsK LQl9Ci0KLQlsb2NhbCA9IG1lbV9hbGxvYyhzaXplb2YodGhyX2xvY2FsX3QpKTsKLQotCWxvY2Fs LT5pZCA9IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpOwotCWxvY2FsLT5oYW5kbGUgPSBvc190aHJl YWRfZ2V0X2N1cnIoKTsKLQlsb2NhbC0+bWFnaWNfbiA9IFRIUl9MT0NBTF9NQUdJQ19OOwotCWxv Y2FsLT5pbl9pYnVmID0gRkFMU0U7Ci0KLQltdXRleF9lbnRlcigmdGhyX2xvY2FsX211dGV4KTsK LQotCUhBU0hfSU5TRVJUKHRocl9sb2NhbF90LCBoYXNoLCB0aHJfbG9jYWxfaGFzaCwKLQkJICAg IG9zX3RocmVhZF9wZihvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSksCi0JCSAgICBsb2NhbCk7Ci0K LQltdXRleF9leGl0KCZ0aHJfbG9jYWxfbXV0ZXgpOwotfQotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUZy ZWVzIHRoZSBsb2NhbCBzdG9yYWdlIHN0cnVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aHJlYWQuICov Ci1VTklWX0lOVEVSTgotdm9pZAotdGhyX2xvY2FsX2ZyZWUoCi0vKj09PT09PT09PT09Ki8KLQlv c190aHJlYWRfaWRfdAlpZCkJLyohPCBpbjogdGhyZWFkIGlkICovCi17Ci0JdGhyX2xvY2FsX3Qq CWxvY2FsOwotCi0JbXV0ZXhfZW50ZXIoJnRocl9sb2NhbF9tdXRleCk7Ci0KLQkvKiBMb29rIGZv ciB0aGUgbG9jYWwgc3RydWN0IGluIHRoZSBoYXNoIHRhYmxlICovCi0KLQlIQVNIX1NFQVJDSCho YXNoLCB0aHJfbG9jYWxfaGFzaCwgb3NfdGhyZWFkX3BmKGlkKSwKLQkJICAgIHRocl9sb2NhbF90 KiwgbG9jYWwsIHV0X2FkKHRocl9sb2NhbF92YWxpZGF0ZShsb2NhbCkpLAotCQkgICAgb3NfdGhy ZWFkX2VxKGxvY2FsLT5pZCwgaWQpKTsKLQlpZiAobG9jYWwgPT0gTlVMTCkgewotCQltdXRleF9l eGl0KCZ0aHJfbG9jYWxfbXV0ZXgpOwotCi0JCXJldHVybjsKLQl9Ci0KLQlIQVNIX0RFTEVURSh0 aHJfbG9jYWxfdCwgaGFzaCwgdGhyX2xvY2FsX2hhc2gsCi0JCSAgICBvc190aHJlYWRfcGYoaWQp LCBsb2NhbCk7Ci0KLQltdXRleF9leGl0KCZ0aHJfbG9jYWxfbXV0ZXgpOwotCi0JdXRfYShsb2Nh bC0+bWFnaWNfbiA9PSBUSFJfTE9DQUxfTUFHSUNfTik7Ci0JdXRfYWQodGhyX2xvY2FsX3ZhbGlk YXRlKGxvY2FsKSk7Ci0KLQltZW1fZnJlZShsb2NhbCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotSW5p dGlhbGl6ZXMgdGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlIG1vZHVsZS4gKi8KLVVOSVZfSU5URVJO Ci12b2lkCi10aHJfbG9jYWxfaW5pdCh2b2lkKQotLyo9PT09PT09PT09PT09PT09Ki8KLXsKLQot CXV0X2EodGhyX2xvY2FsX2hhc2ggPT0gTlVMTCk7Ci0KLQl0aHJfbG9jYWxfaGFzaCA9IGhhc2hf Y3JlYXRlKE9TX1RIUkVBRF9NQVhfTiArIDEwMCk7Ci0KLQltdXRleF9jcmVhdGUodGhyX2xvY2Fs X211dGV4X2tleSwKLQkJICAgICAmdGhyX2xvY2FsX211dGV4LCBTWU5DX1RIUl9MT0NBTCk7Ci19 Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgotQ2xvc2UgdGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlIG1vZHVsZS4g Ki8KLVVOSVZfSU5URVJOCi12b2lkCi10aHJfbG9jYWxfY2xvc2Uodm9pZCkKLS8qPT09PT09PT09 PT09PT09PT0qLwotewotCXVsaW50CQlpOwotCi0JdXRfYSh0aHJfbG9jYWxfaGFzaCAhPSBOVUxM KTsKLQotCS8qIEZyZWUgdGhlIGhhc2ggZWxlbWVudHMuIFdlIGRvbid0IHJlbW92ZSB0aGVtIGZy b20gdGhlIHRhYmxlCi0JYmVjYXVzZSB3ZSBhcmUgZ29pbmcgdG8gZGVzdHJveSB0aGUgdGFibGUg YW55d2F5LiAqLwotCWZvciAoaSA9IDA7IGkgPCBoYXNoX2dldF9uX2NlbGxzKHRocl9sb2NhbF9o YXNoKTsgaSsrKSB7Ci0JCXRocl9sb2NhbF90Kglsb2NhbDsKLQotCQlsb2NhbCA9IEhBU0hfR0VU X0ZJUlNUKHRocl9sb2NhbF9oYXNoLCBpKTsKLQotCQl3aGlsZSAobG9jYWwpIHsKLQkJCXRocl9s b2NhbF90KglwcmV2X2xvY2FsID0gbG9jYWw7Ci0KLQkJCWxvY2FsID0gSEFTSF9HRVRfTkVYVCho YXNoLCBwcmV2X2xvY2FsKTsKLQkJCXV0X2EocHJldl9sb2NhbC0+bWFnaWNfbiA9PSBUSFJfTE9D QUxfTUFHSUNfTik7Ci0JCQl1dF9hZCh0aHJfbG9jYWxfdmFsaWRhdGUocHJldl9sb2NhbCkpOwot CQkJbWVtX2ZyZWUocHJldl9sb2NhbCk7Ci0JCX0KLQl9Ci0KLQloYXNoX3RhYmxlX2ZyZWUodGhy X2xvY2FsX2hhc2gpOwotCXRocl9sb2NhbF9oYXNoID0gTlVMTDsKLX0KCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvdHJ4L3RyeDB0cnguYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyMjEx MzkxNi1vcmljdzAycWczdHp2aW04CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB0cngu YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMDAxNC1oazFpdzUyOXF4 ajZsdmVxCkBAIC0zOCw3ICszOCw2IEBAIENyZWF0ZWQgMy8yNi8xOTk2IEhlaWtraSBUdXVyaQog I2luY2x1ZGUgInVzcjBzZXNzLmgiCiAjaW5jbHVkZSAicmVhZDByZWFkLmgiCiAjaW5jbHVkZSAi c3J2MHNydi5oIgotI2luY2x1ZGUgInRocjBsb2MuaCIKICNpbmNsdWRlICJidHIwc2VhLmgiCiAj aW5jbHVkZSAib3MwcHJvYy5oIgogI2luY2x1ZGUgInRyeDB4YS5oIgoK --===============0246088149== 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: 0bb938642b024ba5259febb5eca65a091f9052a8 # timestamp: 2011-03-24 14:00:30 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: marko.makela@stripped\ # oricw02qg3tzvim8 # # Begin bundle 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 --===============0246088149==--