From: marko.makela Date: May 15 2012 10:44am Subject: bzr push into mysql-trunk-wl6255 branch (marko.makela:3833 to 3835) WL#6255 List-Archive: http://lists.mysql.com/commits/143795 Message-Id: <201205151044.q4FAiGtq001162@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4MzUgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0xNQogICAgICBXTCM2MjU1IHByZXBhcmF0aW9u LiBTZXBhcmF0ZSBpbmRleC0+c2VhcmNoX2luZm8gYW5kIGluZGV4LT5vbmxpbmVfbG9nLgogICAg ICAKICAgICAgSW4gYW4gYXR0ZW1wdCB0byByZWR1Y2UgbWVtb3J5IHVzYWdlLCBXTCM1NTI2IHBp Z2d5LWJhY2tlZCB0aGUgb25saW5lX2xvZwogICAgICBwb2ludGVyIGluIHBsYWNlIG9mIHRoZSBp bmRleC0+c2VhcmNoX2luZm8uIEl0IHdhcyB0aG91Z2h0IHRoYXQgdGhlCiAgICAgIGFkYXB0aXZl IGhhc2ggaW5kZXggd291bGQgbm90IGJlIHVzZWQgd2hpbGUgYnVpbGRpbmcgYW4gaW5kZXggb25s aW5lLgogICAgICAKICAgICAgV2l0aCBXTCM2MjU1LCB0aGlzIG5vIGxvbmdlciBob2xkcy4gVGhl IGFkYXB0aXZlIGhhc2ggaW5kZXggZm9yIHRoZQogICAgICBjbHVzdGVyZWQgaW5kZXggbXVzdCBy ZW1haW4gYWNjZXNzaWJsZSB3aGlsZSB0aGUgdGFibGUgaXMgYmVpbmcgcmVidWlsdC4KICAgICAg CiAgICAgIEJUUl9NT0RJRllfTEVBRl9BUFBMWV9MT0c6IFJlcGxhY2Ugd2l0aCBCVFJfTU9ESUZZ X0xFQUYuCiAgICAgIEJUUl9NT0RJRllfVFJFRV9BUFBMWV9MT0c6IFJlcGxhY2Ugd2l0aCBCVFJf TU9ESUZZX1RSRUUuCiAgICAgIAogICAgICBidHJfc2VhcmNoX2dldF9pbmZvKCk6IERvIG5vdCBh c3NlcnQgdGhhdCB0aGUgaW5kZXggaXMgbm90IGJlaW5nIGJ1aWx0CiAgICAgIG9ubGluZS4KICAg ICAgCiAgICAgIGJ0cl9jdXJfc2VhcmNoX3RvX250aF9sZXZlbCgpOiBBbHdheXMgdXNlIHRoZSBh ZGFwdGl2ZSBoYXNoIGluZGV4LgoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNl L2J0ci9idHIwY3VyLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBzZWEuY2MKICAg ICAgc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwZGljdC5jYwogICAgICBzdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvYnRyMGJ0ci5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIw c2VhLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBzZWEuaWMKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9y b3cvcm93MGxvZy5jYwogMzgzNCBNYXJrbyBNw6RrZWzDpAkyMDEyLTA1LTE1CiAgICAgIFdMIzYy NTUgcHJlcGFyZWF0aW9uOiBTaW1wbGlmeSByb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5X2xvdygp LgoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNjCiAz ODMzIE1hcmtvIE3DpGtlbMOkCTIwMTItMDUtMTUKICAgICAgV0wjNjI1NSBwcmVwYXJhdGlvbjog U3BsaXQgcm93X2luc19pbmRleF9lbnRyeSgpLCByb3dfaW5zX2luZGV4X2VudHJ5X2xvdygpLgog ICAgICAKICAgICAgcm93X2luc19jbHVzdF9pbmRleF9lbnRyeSgpOiBJbnNlcnQgYSBjbHVzdGVy ZWQgaW5kZXggZW50cnkuCiAgICAgIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5KCk6IEluc2VydCBh IHNlY29uZGFyeSBpbmRleCBlbnRyeS4KICAgICAgCiAgICAgIHJvd19pbnNfY2x1c3RfaW5kZXhf ZW50cnlfbG93KCk6IEluc2VydCBhIGNsdXN0ZXJlZCBpbmRleCBlbnRyeS4KICAgICAgcm93X2lu c19zZWNfaW5kZXhfZW50cnlfbG93KCk6IEluc2VydCBhIHNlY29uZGFyeSBpbmRleCBlbnRyeS4K ICAgICAgCiAgICAgIFJlbW92ZSB0aGUgcGFyYW1ldGVyIGZvcmVpZ249VFJVRSBmcm9tIGFsbCBm dW5jdGlvbnMgYW5kIG5fZXh0PTAKICAgICAgZnJvbSB0aGUgaW5zZXJ0IGludG8gc2Vjb25kYXJ5 IGluZGV4LgoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBp YnVmLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwaW5zLmgKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwdXBkLmNjCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3Vy LmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmNjCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTIwNTE1MDcxOTMyLTVoMDFlZTZwZW10Nmt6cm4KKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEyMDUxNTEwNDMxMC13cWY3dXhpcWZyOWI0ZGZjCkBAIC0yNTMsNyArMjUzLDYgQEAgYnRy X2N1cl9sYXRjaF9sZWF2ZXMoCiAJc3dpdGNoIChsYXRjaF9tb2RlKSB7CiAJY2FzZSBCVFJfU0VB UkNIX0xFQUY6CiAJY2FzZSBCVFJfTU9ESUZZX0xFQUY6Ci0JY2FzZSBCVFJfTU9ESUZZX0xFQUZf QVBQTFlfTE9HOgogCQltb2RlID0gbGF0Y2hfbW9kZSA9PSBCVFJfU0VBUkNIX0xFQUYgPyBSV19T X0xBVENIIDogUldfWF9MQVRDSDsKIAkJZ2V0X2Jsb2NrID0gYnRyX2Jsb2NrX2dldCgKIAkJCXNw YWNlLCB6aXBfc2l6ZSwgcGFnZV9ubywgbW9kZSwgY3Vyc29yLT5pbmRleCwgbXRyKTsKQEAgLTI2 Myw3ICsyNjIsNiBAQCBidHJfY3VyX2xhdGNoX2xlYXZlcygKIAkJZ2V0X2Jsb2NrLT5jaGVja19p bmRleF9wYWdlX2F0X2ZsdXNoID0gVFJVRTsKIAkJcmV0dXJuOwogCWNhc2UgQlRSX01PRElGWV9U UkVFOgotCWNhc2UgQlRSX01PRElGWV9UUkVFX0FQUExZX0xPRzoKIAkJLyogeC1sYXRjaCBhbHNv IGJyb3RoZXJzIGZyb20gbGVmdCB0byByaWdodCAqLwogCQlsZWZ0X3BhZ2Vfbm8gPSBidHJfcGFn ZV9nZXRfcHJldihwYWdlLCBtdHIpOwogCkBAIC0zODQsNyArMzgyLDcgQEAgYnRyX2N1cl9zZWFy Y2hfdG9fbnRoX2xldmVsKAogCXBhZ2VfdCoJCXBhZ2U7CiAJYnVmX2Jsb2NrX3QqCWJsb2NrOwog CXVsaW50CQlzcGFjZTsKLQlidWZfYmxvY2tfdCoJZ3Vlc3MJPSBOVUxMOworCWJ1Zl9ibG9ja190 KglndWVzczsKIAl1bGludAkJaGVpZ2h0OwogCXVsaW50CQlwYWdlX25vOwogCXVsaW50CQl1cF9t YXRjaDsKQEAgLTQ4MCwxOCArNDc4LDYgQEAgYnRyX2N1cl9zZWFyY2hfdG9fbnRoX2xldmVsKAog I2lmbmRlZiBCVFJfQ1VSX0FEQVBUCiAJZ3Vlc3MgPSBOVUxMOwogI2Vsc2UKLQlzd2l0Y2ggKGxh dGNoX21vZGUpIHsKLQlkZWZhdWx0OgotCQlpZiAobGV2ZWwgPT0gMCkgewotCQkJYnJlYWs7Ci0J CX0KLQkJLyogZmFsbCB0aHJvdWdoICovCi0JY2FzZSBCVFJfTU9ESUZZX1RSRUVfQVBQTFlfTE9H OgotCWNhc2UgQlRSX01PRElGWV9MRUFGX0FQUExZX0xPRzoKLQkJaW5mbyA9IE5VTEw7Ci0JCWdv dG8gbm9fZ3Vlc3M7Ci0JfQotCiAJaW5mbyA9IGJ0cl9zZWFyY2hfZ2V0X2luZm8oaW5kZXgpOwog CiAJZ3Vlc3MgPSBpbmZvLT5yb290X2d1ZXNzOwpAQCAtNTI5LDcgKzUxNSw2IEBAIGJ0cl9jdXJf c2VhcmNoX3RvX250aF9sZXZlbCgKIAkJcmV0dXJuOwogCX0KICMgZW5kaWYgLyogQlRSX0NVUl9I QVNIX0FEQVBUICovCi1ub19ndWVzczoKICNlbmRpZiAvKiBCVFJfQ1VSX0FEQVBUICovCiAJYnRy X2N1cl9uX25vbl9zZWErKzsKIApAQCAtNTQ4LDcgKzUzMyw2IEBAIG5vX2d1ZXNzOgogCiAJc3dp dGNoIChsYXRjaF9tb2RlKSB7CiAJY2FzZSBCVFJfTU9ESUZZX1RSRUU6Ci0JY2FzZSBCVFJfTU9E SUZZX1RSRUVfQVBQTFlfTE9HOgogCQltdHJfeF9sb2NrKGRpY3RfaW5kZXhfZ2V0X2xvY2soaW5k ZXgpLCBtdHIpOwogCQlicmVhazsKIAljYXNlIEJUUl9DT05UX01PRElGWV9UUkVFOgpAQCAtNzIz LDcgKzcwNyw3IEBAIHJldHJ5X3BhZ2VfZ2V0OgogCQljdXJzb3ItPnRyZWVfaGVpZ2h0ID0gcm9v dF9oZWlnaHQgKyAxOwogCiAjaWZkZWYgQlRSX0NVUl9BREFQVAotCQlpZiAoYmxvY2sgIT0gZ3Vl c3MgJiYgaW5mbykgeworCQlpZiAoYmxvY2sgIT0gZ3Vlc3MpIHsKIAkJCWluZm8tPnJvb3RfZ3Vl c3MgPSBibG9jazsKIAkJfQogI2VuZGlmCkBAIC03MzksNyArNzIzLDYgQEAgcmV0cnlfcGFnZV9n ZXQ6CiAKIAkJc3dpdGNoIChsYXRjaF9tb2RlKSB7CiAJCWNhc2UgQlRSX01PRElGWV9UUkVFOgot CQljYXNlIEJUUl9NT0RJRllfVFJFRV9BUFBMWV9MT0c6CiAJCWNhc2UgQlRSX0NPTlRfTU9ESUZZ X1RSRUU6CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTgxNSwxNCArNzk4LDggQEAgcmV0cnlf cGFnZV9nZXQ6CiAJCXdpbGwgcHJvcGVybHkgY2hlY2sgYnRyX3NlYXJjaF9lbmFibGVkIGFnYWlu IGluCiAJCWJ0cl9zZWFyY2hfYnVpbGRfcGFnZV9oYXNoX2luZGV4KCkgYmVmb3JlIGJ1aWxkaW5n IGEKIAkJcGFnZSBoYXNoIGluZGV4LCB3aGlsZSBob2xkaW5nIGJ0cl9zZWFyY2hfbGF0Y2guICov Ci0JCXN3aXRjaCAobGF0Y2hfbW9kZSkgewotCQljYXNlIEJUUl9NT0RJRllfVFJFRV9BUFBMWV9M T0c6Ci0JCWNhc2UgQlRSX01PRElGWV9MRUFGX0FQUExZX0xPRzoKLQkJCWJyZWFrOwotCQlkZWZh dWx0OgotCQkJaWYgKGJ0cl9zZWFyY2hfZW5hYmxlZCkgewotCQkJCWJ0cl9zZWFyY2hfaW5mb191 cGRhdGUoaW5kZXgsIGN1cnNvcik7Ci0JCQl9CisJCWlmIChidHJfc2VhcmNoX2VuYWJsZWQpIHsK KwkJCWJ0cl9zZWFyY2hfaW5mb191cGRhdGUoaW5kZXgsIGN1cnNvcik7CiAJCX0KICNlbmRpZgog CQl1dF9hZChjdXJzb3ItPnVwX21hdGNoICE9IFVMSU5UX1VOREVGSU5FRApAQCAtODgzLDkgKzg2 MCw2IEBAIGJ0cl9jdXJfb3Blbl9hdF9pbmRleF9zaWRlX2Z1bmMoCiAJc2F2ZXBvaW50ID0gbXRy X3NldF9zYXZlcG9pbnQobXRyKTsKIAogCXN3aXRjaCAobGF0Y2hfbW9kZSkgewotCWNhc2UgQlRS X01PRElGWV9UUkVFX0FQUExZX0xPRzoKLQljYXNlIEJUUl9NT0RJRllfTEVBRl9BUFBMWV9MT0c6 Ci0JCXV0X2Vycm9yOwogCWNhc2UgQlRSX0NPTlRfTU9ESUZZX1RSRUU6CiAJCWJyZWFrOwogCWNh c2UgQlRSX01PRElGWV9UUkVFOgpAQCAtOTM1LDcgKzkwOSw2IEBAIGJ0cl9jdXJfb3Blbl9hdF9p bmRleF9zaWRlX2Z1bmMoCiAJCQlzd2l0Y2ggKGxhdGNoX21vZGUpIHsKIAkJCWNhc2UgQlRSX01P RElGWV9UUkVFOgogCQkJY2FzZSBCVFJfQ09OVF9NT0RJRllfVFJFRToKLQkJCWNhc2UgQlRSX01P RElGWV9UUkVFX0FQUExZX0xPRzoKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogUmVs ZWFzZSB0aGUgdHJlZSBzLWxhdGNoICovCkBAIC0xMDEyLDE0ICs5ODUsMTEgQEAgYnRyX2N1cl9v cGVuX2F0X3JuZF9wb3NfZnVuYygKIAlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKIAogCXN3aXRj aCAobGF0Y2hfbW9kZSkgewotCWNhc2UgQlRSX0NPTlRfTU9ESUZZX1RSRUU6Ci0JY2FzZSBCVFJf TU9ESUZZX1RSRUVfQVBQTFlfTE9HOgotCWNhc2UgQlRSX01PRElGWV9MRUFGX0FQUExZX0xPRzoK LQkJdXRfZXJyb3I7CiAJY2FzZSBCVFJfTU9ESUZZX1RSRUU6CiAJCW10cl94X2xvY2soZGljdF9p bmRleF9nZXRfbG9jayhpbmRleCksIG10cik7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CisJCXV0X2Fk KGxhdGNoX21vZGUgIT0gQlRSX0NPTlRfTU9ESUZZX1RSRUUpOwogCQltdHJfc19sb2NrKGRpY3Rf aW5kZXhfZ2V0X2xvY2soaW5kZXgpLCBtdHIpOwogCX0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBzZWEuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnRy L2J0cjBzZWEuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTUwNzE5MzIt NWgwMWVlNnBlbXQ2a3pybgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwc2VhLmNjCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTE1MTA0MzEwLXdxZjd1eGlxZnI5YjRk ZmMKQEAgLTIxNywxNSArMjE3LDcgQEAgYnRyX3NlYXJjaF9kaXNhYmxlX3JlZl9jb3VudCgKIAlm b3IgKGluZGV4ID0gZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgodGFibGUpOyBpbmRleDsKIAkg ICAgIGluZGV4ID0gZGljdF90YWJsZV9nZXRfbmV4dF9pbmRleChpbmRleCkpIHsKIAotCQlzd2l0 Y2ggKGRpY3RfaW5kZXhfZ2V0X29ubGluZV9zdGF0dXMoaW5kZXgpKSB7Ci0JCWNhc2UgT05MSU5F X0lOREVYX0NSRUFUSU9OOgotCQljYXNlIE9OTElORV9JTkRFWF9BQk9SVEVEOgotCQljYXNlIE9O TElORV9JTkRFWF9BQk9SVEVEX0RST1BQRUQ6Ci0JCQlicmVhazsKLQkJY2FzZSBPTkxJTkVfSU5E RVhfQ09NUExFVEU6Ci0JCQlidHJfc2VhcmNoX2dldF9pbmZvKGluZGV4KS0+cmVmX2NvdW50ID0g MDsKLQkJCWJyZWFrOwotCQl9CisJCWluZGV4LT5zZWFyY2hfaW5mby0+cmVmX2NvdW50ID0gMDsK IAl9CiB9CiAKQEAgLTExMTIsNiArMTEwNCw4IEBAIHJldHJ5OgogCXV0X2EoIWRpY3RfaW5kZXhf aXNfaWJ1ZihpbmRleCkpOwogI2lmZGVmIFVOSVZfREVCVUcKIAlzd2l0Y2ggKGRpY3RfaW5kZXhf Z2V0X29ubGluZV9zdGF0dXMoaW5kZXgpKSB7CisJY2FzZSBPTkxJTkVfSU5ERVhfQ1JFQVRJT046 CisJCS8qIFRoZSBpbmRleCBpcyBiZWluZyBjcmVhdGVkIChidWxrIGxvYWRlZCkuICovCiAJY2Fz ZSBPTkxJTkVfSU5ERVhfQ09NUExFVEU6CiAJCS8qIFRoZSBpbmRleCBoYXMgYmVlbiBwdWJsaXNo ZWQuICovCiAJY2FzZSBPTkxJTkVfSU5ERVhfQUJPUlRFRDoKQEAgLTExMTksMTIgKzExMTMsOCBA QCByZXRyeToKIAkJZXJyb3Igb2JzZXJ2ZWQgYnkgSW5ub0RCIChpbiB3aGljaCBjYXNlIHRoZXJl IHNob3VsZAogCQlub3QgYmUgYW55IGFkYXB0aXZlIGhhc2ggaW5kZXggZW50cmllcyksIG9yIGl0 IHdhcwogCQljb21wbGV0ZWQgYW5kIHRoZW4gZmxhZ2dlZCBhYm9ydGVkIGluCi0JCXJvbGxiYWNr X2lucGxhY2VfYWx0ZXJfdGFibGUoKS4gSW4gdGhlIGxhdHRlciBjYXNlLAotCQl0aGVyZSBjb3Vs ZCBleGlzdCBhZGFwdGl2ZSBoYXNoIGluZGV4IGVudHJpZXMuICovCisJCXJvbGxiYWNrX2lucGxh Y2VfYWx0ZXJfdGFibGUoKS4gKi8KIAkJYnJlYWs7Ci0JY2FzZSBPTkxJTkVfSU5ERVhfQ1JFQVRJ T046Ci0JCS8qIFRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4IHNob3VsZCBub3QgYmUgYnVpbHQgZHVy aW5nCi0JCW9ubGluZSBpbmRleCBjcmVhdGlvbi4gKi8KIAljYXNlIE9OTElORV9JTkRFWF9BQk9S VEVEX0RST1BQRUQ6CiAJCS8qIFRoZSBpbmRleCBzaG91bGQgaGF2ZSBiZWVuIGRyb3BwZWQgZnJv bSB0aGUgdGFibGVzcGFjZQogCQlhbHJlYWR5LCBhbmQgdGhlIGFkYXB0aXZlIGhhc2ggaW5kZXgg ZW50cmllcyBzaG91bGQgaGF2ZQpAQCAtMTMzMSw3ICsxMzIxLDYgQEAgYnRyX3NlYXJjaF9idWls ZF9wYWdlX2hhc2hfaW5kZXgoCiAKIAl1dF9hZChpbmRleCk7CiAJdXRfYSghZGljdF9pbmRleF9p c19pYnVmKGluZGV4KSk7Ci0JdXRfYWQoIWRpY3RfaW5kZXhfaXNfb25saW5lX2RkbChpbmRleCkp OwogCiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAJdXRfYWQoIXJ3X2xvY2tfb3duKCZidHJfc2Vh cmNoX2xhdGNoLCBSV19MT0NLX0VYKSk7CkBAIC0xNDcxLDcgKzE0NjAsNyBAQCBidHJfc2VhcmNo X2J1aWxkX3BhZ2VfaGFzaF9pbmRleCgKIAloYXZlIHRvIHRha2UgY2FyZSBub3QgdG8gaW5jcmVt ZW50IHRoZSBjb3VudGVyIGluIHRoYXQKIAljYXNlLiAqLwogCWlmICghYmxvY2stPmluZGV4KSB7 Ci0JCWJ0cl9zZWFyY2hfZ2V0X2luZm8oaW5kZXgpLT5yZWZfY291bnQrKzsKKwkJaW5kZXgtPnNl YXJjaF9pbmZvLT5yZWZfY291bnQrKzsKIAl9CiAKIAlibG9jay0+bl9oYXNoX2hlbHBzID0gMDsK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0LmNjJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0LmNjCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTIwNTE1MDcxOTMyLTVoMDFlZTZwZW10Nmt6cm4KKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9kaWN0L2RpY3QwZGljdC5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEyMDUxNTEwNDMxMC13cWY3dXhpcWZyOWI0ZGZjCkBAIC0yMjE3LDcgKzIyMTcsNyBAQCB1 bmRvX3NpemVfb2s6CiAJVVRfTElTVF9BRERfTEFTVChpbmRleGVzLCB0YWJsZS0+aW5kZXhlcywg bmV3X2luZGV4KTsKIAluZXdfaW5kZXgtPnRhYmxlID0gdGFibGU7CiAJbmV3X2luZGV4LT50YWJs ZV9uYW1lID0gdGFibGUtPm5hbWU7Ci0JbmV3X2luZGV4LT5pbmZvLnNlYXJjaCA9IGJ0cl9zZWFy Y2hfaW5mb19jcmVhdGUobmV3X2luZGV4LT5oZWFwKTsKKwluZXdfaW5kZXgtPnNlYXJjaF9pbmZv ID0gYnRyX3NlYXJjaF9pbmZvX2NyZWF0ZShuZXdfaW5kZXgtPmhlYXApOwogCiAJbmV3X2luZGV4 LT5zdGF0X2luZGV4X3NpemUgPSAxOwogCW5ld19pbmRleC0+c3RhdF9uX2xlYWZfcGFnZXMgPSAx OwpAQCAtMjI4NiwxOSArMjI4NiwxMCBAQCBkaWN0X2luZGV4X3JlbW92ZV9mcm9tX2NhY2hlX2xv dygKIAogCXJ3X2xvY2tfeF9sb2NrKGRpY3RfaW5kZXhfZ2V0X2xvY2soaW5kZXgpKTsKIAotCXN3 aXRjaCAoZGljdF9pbmRleF9nZXRfb25saW5lX3N0YXR1cyhpbmRleCkpIHsKLQljYXNlIE9OTElO RV9JTkRFWF9DUkVBVElPTjoKLQkJaWYgKGluZGV4LT5pbmZvLm9ubGluZV9sb2cpIHsKLQkJCXJv d19sb2dfZnJlZShpbmRleCk7Ci0JCX0KLQkJLyogZmFsbCB0aHJvdWdoICovCi0JY2FzZSBPTkxJ TkVfSU5ERVhfQUJPUlRFRDoKLQljYXNlIE9OTElORV9JTkRFWF9BQk9SVEVEX0RST1BQRUQ6Ci0J CS8qIFByZXRlbmQgdGhhdCB0aGUgaW5kZXggaXMgY29tcGxldGUuICovCi0JCWluZGV4LT5vbmxp bmVfc3RhdHVzID0gT05MSU5FX0lOREVYX0NPTVBMRVRFOwotCQlicmVhazsKLQljYXNlIE9OTElO RV9JTkRFWF9DT01QTEVURToKLQkJYnJlYWs7CisJaWYgKGluZGV4LT5vbmxpbmVfbG9nKSB7CisJ CXV0X2FkKGRpY3RfaW5kZXhfZ2V0X29ubGluZV9zdGF0dXMoaW5kZXgpCisJCSAgICAgID09IE9O TElORV9JTkRFWF9DUkVBVElPTik7CisJCXJvd19sb2dfZnJlZShpbmRleCk7CiAJfQogCiAJcndf bG9ja194X3VubG9jayhkaWN0X2luZGV4X2dldF9sb2NrKGluZGV4KSk7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaCcKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDEyMDUxNTA3MTkzMi01aDAxZWU2cGVtdDZrenJuCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9idHIwYnRyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTUxMDQz MTAtd3FmN3V4aXFmcjliNGRmYwpAQCAtNjUsMTEgKzY1LDcgQEAgZW51bSBidHJfbGF0Y2hfbW9k ZSB7CiAJLyoqIFNlYXJjaCB0aGUgcHJldmlvdXMgcmVjb3JkLiAqLwogCUJUUl9TRUFSQ0hfUFJF ViA9IDM1LAogCS8qKiBNb2RpZnkgdGhlIHByZXZpb3VzIHJlY29yZC4gKi8KLQlCVFJfTU9ESUZZ X1BSRVYgPSAzNiwKLQkvKiogQXBwbHkgcmVjb3JkcyB0aGF0IHdlcmUgbG9nZ2VkIGR1cmluZyBv bmxpbmUgaW5kZXggY3JlYXRpb24uICovCi0JQlRSX01PRElGWV9MRUFGX0FQUExZX0xPRyA9IDM3 LAotCS8qKiBBcHBseSByZWNvcmRzIHRoYXQgd2VyZSBsb2dnZWQgZHVyaW5nIG9ubGluZSBpbmRl eCBjcmVhdGlvbi4gKi8KLQlCVFJfTU9ESUZZX1RSRUVfQVBQTFlfTE9HID0gMzgKKwlCVFJfTU9E SUZZX1BSRVYgPSAzNgogfTsKIAogLyogQlRSX0lOU0VSVCwgQlRSX0RFTEVURSBhbmQgQlRSX0RF TEVURV9NQVJLIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuICovCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBzZWEuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2J0cjBzZWEuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUx NTA3MTkzMi01aDAxZWU2cGVtdDZrenJuCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dHIwc2VhLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTUxMDQzMTAtd3Fm N3V4aXFmcjliNGRmYwpAQCAtNjgsNyArNjgsOCBAQCBVTklWX0lOTElORQogYnRyX3NlYXJjaF90 KgogYnRyX3NlYXJjaF9nZXRfaW5mbygKIC8qPT09PT09PT09PT09PT09PSovCi0JZGljdF9pbmRl eF90KglpbmRleCk7CS8qITwgaW46IGluZGV4ICovCisJZGljdF9pbmRleF90KglpbmRleCkJLyoh PCBpbjogaW5kZXggKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBDcmVhdGVzIGFuZCBpbml0aWFsaXplcyBhIHNlYXJjaCBpbmZvIHN0cnVjdC4KIEByZXR1cm4J b3duOiBzZWFyY2ggaW5mbyBzdHJ1Y3QgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvYnRyMHNlYS5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L2J0cjBzZWEuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTUwNzE5MzIt NWgwMWVlNnBlbXQ2a3pybgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMHNlYS5p YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxNTEwNDMxMC13cWY3dXhpcWZy OWI0ZGZjCkBAIC00NSwxMCArNDUsNyBAQCBidHJfc2VhcmNoX2dldF9pbmZvKAogLyo9PT09PT09 PT09PT09PT09Ki8KIAlkaWN0X2luZGV4X3QqCWluZGV4KQkvKiE8IGluOiBpbmRleCAqLwogewot CXV0X2FkKGluZGV4KTsKLQl1dF9hZCghZGljdF9pbmRleF9pc19vbmxpbmVfZGRsKGluZGV4KSk7 Ci0KLQlyZXR1cm4oaW5kZXgtPmluZm8uc2VhcmNoKTsKKwlyZXR1cm4oaW5kZXgtPnNlYXJjaF9p bmZvKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvZGljdDBtZW0uaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2RpY3QwbWVtLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTUwNzE5 MzItNWgwMWVlNnBlbXQ2a3pybgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGljdDBt ZW0uaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxNTEwNDMxMC13cWY3dXhp cWZyOWI0ZGZjCkBAIC00OTEsMTggKzQ5MSwxMyBAQCBzdHJ1Y3QgZGljdF9pbmRleF9zdHJ1Y3R7 CiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQCiAJVVRfTElTVF9OT0RFX1QoZGljdF9pbmRleF90KQog CQkJaW5kZXhlczsvKiE8IGxpc3Qgb2YgaW5kZXhlcyBvZiB0aGUgdGFibGUgKi8KLQl1bmlvbiB7 Ci0JCWJ0cl9zZWFyY2hfdCoJc2VhcmNoOyAvKiE8IGluZm8gdXNlZCBpbiBvcHRpbWlzdGljIHNl YXJjaGVzOwotCQkJCQl2YWxpZCB3aGVuIG9ubGluZV9zdGF0dXMgaXMgb25lIG9mCi0JCQkJCU9O TElORV9JTkRFWF9DT01QTEVURSwKLQkJCQkJT05MSU5FX0lOREVYX0FCT1JURUQsCi0JCQkJCU9O TElORV9JTkRFWF9BQk9SVEVEX0RST1BQRUQgKi8KLQkJcm93X2xvZ190KglvbmxpbmVfbG9nOwot CQkJCQkvKiE8IHRoZSBsb2cgb2YgbW9kaWZpY2F0aW9ucwotCQkJCQlkdXJpbmcgb25saW5lIGlu ZGV4IGNyZWF0aW9uOwotCQkJCQl2YWxpZCB3aGVuIG9ubGluZV9zdGF0dXMgaXMKLQkJCQkJT05M SU5FX0lOREVYX0NSRUFUSU9OICovCi0JfSBpbmZvOworCWJ0cl9zZWFyY2hfdCoJc2VhcmNoX2lu Zm87CisJCQkJLyohPCBpbmZvIHVzZWQgaW4gb3B0aW1pc3RpYyBzZWFyY2hlcyAqLworCXJvd19s b2dfdCoJb25saW5lX2xvZzsKKwkJCQkvKiE8IHRoZSBsb2cgb2YgbW9kaWZpY2F0aW9ucworCQkJ CWR1cmluZyBvbmxpbmUgaW5kZXggY3JlYXRpb247CisJCQkJdmFsaWQgd2hlbiBvbmxpbmVfc3Rh dHVzIGlzCisJCQkJT05MSU5FX0lOREVYX0NSRUFUSU9OICovCiAJLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8KIAkvKiogU3RhdGlzdGljcyBmb3IgcXVlcnkgb3B0aW1pemF0aW9uICovCiAJLyog QHsgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNj JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNjCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTIwNTE1MDcxOTMyLTVoMDFlZTZwZW10Nmt6cm4KKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDEyMDUxNTEwNDMxMC13cWY3dXhpcWZyOWI0ZGZjCkBAIC0yMTg3LDggKzIxODcsOSBAQCByb3df aW5zX2NsdXN0X2luZGV4X2VudHJ5X2xvdygKIAkJZXJyID0gcm93X2luc19kdXBsaWNhdGVfZXJy b3JfaW5fY2x1c3QoCiAJCQkmY3Vyc29yLCBlbnRyeSwgdGhyLCAmbXRyKTsKIAkJaWYgKGVyciAh PSBEQl9TVUNDRVNTKSB7Ci0KLQkJCWdvdG8gZnVuY3Rpb25fZXhpdDsKK2Vycl9leGl0OgorCQkJ bXRyX2NvbW1pdCgmbXRyKTsKKwkJCXJldHVybihlcnIpOwogCQl9CiAJfQogCkBAIC0yMjYwLDQ0 ICsyMjYxLDQ0IEBAIHJvd19pbnNfY2x1c3RfaW5kZXhfZW50cnlfbG93KAogCQkJdGhlIGZvbGxv d2luZyBhc3NlcnRpb24gZmFpbHVyZSB3aWxsCiAJCQllZmZlY3RpdmVseSAicm9sbCBiYWNrIiB0 aGUgb3BlcmF0aW9uLiAqLwogCQkJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7Ci0JCQltdHJfY29t bWl0KCZtdHIpOwogCQkJZHR1cGxlX2JpZ19yZWNfZnJlZShiaWdfcmVjKTsKLQkJCWdvdG8gc3Rv cmVkX2JpZ19yZWM7CiAJCX0KKworCQltdHJfY29tbWl0KCZtdHIpOwogCX0gZWxzZSB7CiAJCXJl Y190KglpbnNlcnRfcmVjOwogCi0JCWlmIChtb2RlID09IEJUUl9NT0RJRllfTEVBRikgeworCQlp ZiAobW9kZSAhPSBCVFJfTU9ESUZZX1RSRUUpIHsKKwkJCXV0X2FkKG1vZGUgPT0gQlRSX01PRElG WV9MRUFGKTsKIAkJCWVyciA9IGJ0cl9jdXJfb3B0aW1pc3RpY19pbnNlcnQoCiAJCQkJMCwgJmN1 cnNvciwgZW50cnksICZpbnNlcnRfcmVjLCAmYmlnX3JlYywKIAkJCQluX2V4dCwgdGhyLCAmbXRy KTsKIAkJfSBlbHNlIHsKLQkJCXV0X2FkKG1vZGUgPT0gQlRSX01PRElGWV9UUkVFKTsKIAkJCWlm IChidWZfTFJVX2J1Zl9wb29sX3J1bm5pbmdfb3V0KCkpIHsKIAogCQkJCWVyciA9IERCX0xPQ0tf VEFCTEVfRlVMTDsKLQotCQkJCWdvdG8gZnVuY3Rpb25fZXhpdDsKKwkJCQlnb3RvIGVycl9leGl0 OwogCQkJfQogCQkJZXJyID0gYnRyX2N1cl9wZXNzaW1pc3RpY19pbnNlcnQoCiAJCQkJMCwgJmN1 cnNvciwgZW50cnksICZpbnNlcnRfcmVjLCAmYmlnX3JlYywKIAkJCQluX2V4dCwgdGhyLCAmbXRy KTsKIAkJfQotCX0KIAotZnVuY3Rpb25fZXhpdDoKLQltdHJfY29tbWl0KCZtdHIpOworCQltdHJf Y29tbWl0KCZtdHIpOwogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwoYmlnX3JlYykpIHsKLQkJREJV R19FWEVDVVRFX0lGKAotCQkJInJvd19pbnNfZXh0ZXJuX2NoZWNrcG9pbnQiLAotCQkJbG9nX21h a2VfY2hlY2twb2ludF9hdChJQl9VTE9OR0xPTkdfTUFYLCBUUlVFKTspOwotCQllcnIgPSByb3df aW5zX2luZGV4X2VudHJ5X2JpZ19yZWMoCi0JCQllbnRyeSwgYmlnX3JlYywgTlVMTCwgJmhlYXAs IGluZGV4LAotCQkJdGhyX2dldF90cngodGhyKS0+bXlzcWxfdGhkLCBfX0ZJTEVfXywgX19MSU5F X18pOwotCQlkdHVwbGVfY29udmVydF9iYWNrX2JpZ19yZWMoaW5kZXgsIGVudHJ5LCBiaWdfcmVj KTsKKwkJaWYgKFVOSVZfTElLRUxZX05VTEwoYmlnX3JlYykpIHsKKwkJCURCVUdfRVhFQ1VURV9J RigKKwkJCQkicm93X2luc19leHRlcm5fY2hlY2twb2ludCIsCisJCQkJbG9nX21ha2VfY2hlY2tw b2ludF9hdCgKKwkJCQkJSUJfVUxPTkdMT05HX01BWCwgVFJVRSk7KTsKKwkJCWVyciA9IHJvd19p bnNfaW5kZXhfZW50cnlfYmlnX3JlYygKKwkJCQllbnRyeSwgYmlnX3JlYywgTlVMTCwgJmhlYXAs IGluZGV4LAorCQkJCXRocl9nZXRfdHJ4KHRociktPm15c3FsX3RoZCwKKwkJCQlfX0ZJTEVfXywg X19MSU5FX18pOworCQkJZHR1cGxlX2NvbnZlcnRfYmFja19iaWdfcmVjKGluZGV4LCBlbnRyeSwg YmlnX3JlYyk7CisJCX0KIAl9Ci1zdG9yZWRfYmlnX3JlYzoKKwogCWlmIChVTklWX0xJS0VMWV9O VUxMKGhlYXApKSB7CiAJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJfQoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBsb2cuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2Uvcm93L3JvdzBsb2cuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTUw NzE5MzItNWgwMWVlNnBlbXQ2a3pybgorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbG9n LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTE1MTA0MzEwLXdxZjd1eGlx ZnI5YjRkZmMKQEAgLTc2LDcgKzc2LDYgQEAgc3RydWN0IHJvd19sb2dfc3RydWN0IHsKIAlyb3df bG9nX2J1Zl90CWhlYWQ7CS8qITwgcmVhZGVyIGNvbnRleHQ7IHByb3RlY3RlZCBieSBNREwgb25s eTsKIAkJCQltb2RpZmlhYmxlIGJ5IHJvd19sb2dfYXBwbHlfb3BzKCkgKi8KIAl1bGludAkJc2l6 ZTsJLyohPCBhbGxvY2F0ZWQgc2l6ZSAqLwotCWJ0cl9zZWFyY2hfdCoJc2VhcmNoOyAvKiE8IG9s ZCBjb250ZW50IG9mIGluZGV4LT5pbmZvLnNlYXJjaCAqLwogfTsKIAogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTEyNCwxMyAr MTIzLDEzIEBAIG9wX29rOgogCX0KIAogCXV0X2FkKGRpY3RfaW5kZXhfaXNfb25saW5lX2RkbChp bmRleCkpOwotCW11dGV4X2VudGVyKCZpbmRleC0+aW5mby5vbmxpbmVfbG9nLT5tdXRleCk7CisJ bXV0ZXhfZW50ZXIoJmluZGV4LT5vbmxpbmVfbG9nLT5tdXRleCk7CiAKLQlpZiAodHJ4X2lkID4g aW5kZXgtPmluZm8ub25saW5lX2xvZy0+bWF4X3RyeCkgewotCQlpbmRleC0+aW5mby5vbmxpbmVf bG9nLT5tYXhfdHJ4ID0gdHJ4X2lkOworCWlmICh0cnhfaWQgPiBpbmRleC0+b25saW5lX2xvZy0+ bWF4X3RyeCkgeworCQlpbmRleC0+b25saW5lX2xvZy0+bWF4X3RyeCA9IHRyeF9pZDsKIAl9CiAK LQlsb2cgPSBpbmRleC0+aW5mby5vbmxpbmVfbG9nOworCWxvZyA9IGluZGV4LT5vbmxpbmVfbG9n OwogCVVOSVZfTUVNX0lOVkFMSUQobG9nLT50YWlsLmJ1Ziwgc2l6ZW9mIGxvZy0+dGFpbC5idWYp OwogCiAJLyogQ29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgcmVjb3JkLiBUaGlzIGRpZmZlcnMgZnJv bQpAQCAtMTk0LDcgKzE5Myw3IEBAIG9wX29rOgogCQlVTklWX01FTV9BU1NFUlRfUlcobG9nLT50 YWlsLmJsb2NrLCBzcnZfc29ydF9idWZfc2l6ZSk7CiAJCXJldCA9IG9zX2ZpbGVfd3JpdGUoCiAJ CQkiKG1vZGlmaWNhdGlvbiBsb2cpIiwKLQkJCU9TX0ZJTEVfRlJPTV9GRChpbmRleC0+aW5mby5v bmxpbmVfbG9nLT5mZCksCisJCQlPU19GSUxFX0ZST01fRkQoaW5kZXgtPm9ubGluZV9sb2ctPmZk KSwKIAkJCWxvZy0+dGFpbC5ibG9jaywgYnl0ZV9vZmZzZXQsIHNydl9zb3J0X2J1Zl9zaXplKTsK IAkJbG9nLT50YWlsLmJsb2NrcysrOwogCQlpZiAoIXJldCkgewpAQCAtMjE0LDcgKzIxMyw3IEBA IHdyaXRlX2ZhaWxlZDoKIAl9CiAKIAlVTklWX01FTV9JTlZBTElEKGxvZy0+dGFpbC5idWYsIHNp emVvZiBsb2ctPnRhaWwuYnVmKTsKLQltdXRleF9leGl0KCZpbmRleC0+aW5mby5vbmxpbmVfbG9n LT5tdXRleCk7CisJbXV0ZXhfZXhpdCgmaW5kZXgtPm9ubGluZV9sb2ctPm11dGV4KTsKIH0KIAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKQEAgLTI1MSw5ICsyNTAsOCBAQCByb3dfbG9nX2FsbG9jYXRlKAogCWxvZy0+dGFpbC5ibG9j ayA9IGJ1ZiArIHNydl9zb3J0X2J1Zl9zaXplOwogCWxvZy0+dGFpbC5ibG9ja3MgPSBsb2ctPnRh aWwuYnl0ZXMgPSAwOwogCWxvZy0+aGVhZC5ibG9ja3MgPSBsb2ctPmhlYWQuYnl0ZXMgPSAwOwot CWxvZy0+c2VhcmNoID0gaW5kZXgtPmluZm8uc2VhcmNoOwogCWRpY3RfaW5kZXhfc2V0X29ubGlu ZV9zdGF0dXMoaW5kZXgsIE9OTElORV9JTkRFWF9DUkVBVElPTik7Ci0JaW5kZXgtPmluZm8ub25s aW5lX2xvZyA9IGxvZzsKKwlpbmRleC0+b25saW5lX2xvZyA9IGxvZzsKIAogCS8qIFdoaWxlIHdl IG1pZ2h0IGJlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGRhdGEgZGljdGlvbmFyeSBsb2NrCiAJaGVy ZSwgaW4gcm93X2xvZ19mcmVlKCkgd2Ugd2lsbCBub3QgYWx3YXlzIGJlIGhvbGRpbmcgaXQuIFVz ZQpAQCAtMjg2LDE1ICsyODQsMTIgQEAgcm93X2xvZ19mcmVlKAogLyo9PT09PT09PT0qLwogCWRp Y3RfaW5kZXhfdCoJaW5kZXgpCS8qITwgaW4vb3V0OiBpbmRleCAoeC1sYXRjaGVkKSAqLwogewot CXJvd19sb2dfdCoJbG9nOwotCiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAJdXRfYWQocndfbG9j a19vd24oZGljdF9pbmRleF9nZXRfbG9jayhpbmRleCksIFJXX0xPQ0tfRVgpKTsKICNlbmRpZiAv KiBVTklWX1NZTkNfREVCVUcgKi8KIAlkaWN0X2luZGV4X3NldF9vbmxpbmVfc3RhdHVzKGluZGV4 LCBPTkxJTkVfSU5ERVhfQUJPUlRFRCk7Ci0JbG9nID0gaW5kZXgtPmluZm8ub25saW5lX2xvZzsK LQlpbmRleC0+aW5mby5zZWFyY2ggPSBsb2ctPnNlYXJjaDsKLQlyb3dfbG9nX2ZyZWVfbG93KGxv Zyk7CisJcm93X2xvZ19mcmVlX2xvdyhpbmRleC0+b25saW5lX2xvZyk7CisJaW5kZXgtPm9ubGlu ZV9sb2cgPSBOVUxMOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMzEwLDEwICszMDUsMTAgQEAgcm93X2xvZ19nZXRf bWF4X3RyeCgKIAl1dF9hZChkaWN0X2luZGV4X2dldF9vbmxpbmVfc3RhdHVzKGluZGV4KSA9PSBP TkxJTkVfSU5ERVhfQ1JFQVRJT04pOwogI2lmZGVmIFVOSVZfU1lOQ19ERUJVRwogCXV0X2FkKChy d19sb2NrX293bihkaWN0X2luZGV4X2dldF9sb2NrKGluZGV4KSwgUldfTE9DS19TSEFSRUQpCi0J ICAgICAgICYmIG11dGV4X293bigmaW5kZXgtPmluZm8ub25saW5lX2xvZy0+bXV0ZXgpKQorCSAg ICAgICAmJiBtdXRleF9vd24oJmluZGV4LT5vbmxpbmVfbG9nLT5tdXRleCkpCiAJICAgICAgfHwg cndfbG9ja19vd24oZGljdF9pbmRleF9nZXRfbG9jayhpbmRleCksIFJXX0xPQ0tfRVgpKTsKICNl bmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KLQlyZXR1cm4oaW5kZXgtPmluZm8ub25saW5lX2xv Zy0+bWF4X3RyeCk7CisJcmV0dXJuKGluZGV4LT5vbmxpbmVfbG9nLT5tYXhfdHJ4KTsKIH0KIAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKQEAgLTM1NCw4ICszNDksOCBAQCByb3dfbG9nX2FwcGx5X29wX2xvdygKIAlzY2FubmVkLiAq LwogCWJ0cl9jdXJfc2VhcmNoX3RvX250aF9sZXZlbChpbmRleCwgMCwgZW50cnksIFBBR0VfQ1VS X0xFLAogCQkJCSAgICBoYXNfaW5kZXhfbG9jawotCQkJCSAgICA/IEJUUl9NT0RJRllfVFJFRV9B UFBMWV9MT0cKLQkJCQkgICAgOiBCVFJfTU9ESUZZX0xFQUZfQVBQTFlfTE9HLAorCQkJCSAgICA/ IEJUUl9NT0RJRllfVFJFRQorCQkJCSAgICA6IEJUUl9NT0RJRllfTEVBRiwKIAkJCQkgICAgJmN1 cnNvciwgMCwgX19GSUxFX18sIF9fTElORV9fLAogCQkJCSAgICAmbXRyKTsKIApAQCAtNDEwLDkg KzQwNSw4IEBAIHJvd19sb2dfYXBwbHlfb3BfbG93KAogCQkJCW10cl9zdGFydCgmbXRyKTsKIAkJ CQlidHJfY3VyX3NlYXJjaF90b19udGhfbGV2ZWwoCiAJCQkJCWluZGV4LCAwLCBlbnRyeSwgUEFH RV9DVVJfTEUsCi0JCQkJCUJUUl9NT0RJRllfVFJFRV9BUFBMWV9MT0csCi0JCQkJCSZjdXJzb3Is IDAsIF9fRklMRV9fLCBfX0xJTkVfXywKLQkJCQkJJm10cik7CisJCQkJCUJUUl9NT0RJRllfVFJF RSwgJmN1cnNvciwgMCwKKwkJCQkJX19GSUxFX18sIF9fTElORV9fLCAmbXRyKTsKIAogCQkJCS8q IE5vIG90aGVyIHRocmVhZCB0aGFuIHRoZSBjdXJyZW50IG9uZQogCQkJCWlzIGFsbG93ZWQgdG8g bW9kaWZ5IHRoZSBpbmRleCB0cmVlLgpAQCAtNDk3LDggKzQ5MSw3IEBAIHVwZGF0ZV90aGVfcmVj OgogCQkJCW10cl9zdGFydCgmbXRyKTsKIAkJCQlidHJfY3VyX3NlYXJjaF90b19udGhfbGV2ZWwo CiAJCQkJCWluZGV4LCAwLCBlbnRyeSwgUEFHRV9DVVJfTEUsCi0JCQkJCUJUUl9NT0RJRllfVFJF RV9BUFBMWV9MT0csCi0JCQkJCSZjdXJzb3IsIDAsCisJCQkJCUJUUl9NT0RJRllfVFJFRSwgJmN1 cnNvciwgMCwKIAkJCQkJX19GSUxFX18sIF9fTElORV9fLCAmbXRyKTsKIAkJCQkvKiBObyBvdGhl ciB0aHJlYWQgdGhhbiB0aGUKIAkJCQljdXJyZW50IG9uZSBpcyBhbGxvd2VkIHRvCkBAIC01Njks OCArNTYyLDcgQEAgaW5zZXJ0X3RoZV9yZWM6CiAJCQkJbXRyX3N0YXJ0KCZtdHIpOwogCQkJCWJ0 cl9jdXJfc2VhcmNoX3RvX250aF9sZXZlbCgKIAkJCQkJaW5kZXgsIDAsIGVudHJ5LCBQQUdFX0NV Ul9MRSwKLQkJCQkJQlRSX01PRElGWV9UUkVFX0FQUExZX0xPRywKLQkJCQkJJmN1cnNvciwgMCwK KwkJCQkJQlRSX01PRElGWV9UUkVFLCAmY3Vyc29yLCAwLAogCQkJCQlfX0ZJTEVfXywgX19MSU5F X18sICZtdHIpOwogCQkJCS8qIFdlIGFscmVhZHkgZGV0ZXJtaW5lZCB0aGF0IHRoZQogCQkJCXJl Y29yZCBkaWQgbm90IGV4aXN0LiBObyBvdGhlciB0aHJlYWQKQEAgLTc1Niw3ICs3NDgsNyBAQCBy b3dfbG9nX2FwcGx5X29wcygKICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAl1dF9hZChyd19sb2Nr X293bihkaWN0X2luZGV4X2dldF9sb2NrKGluZGV4KSwgUldfTE9DS19FWCkpOwogI2VuZGlmIC8q IFVOSVZfU1lOQ19ERUJVRyAqLwotCXV0X2FkKGluZGV4LT5pbmZvLm9ubGluZV9sb2cpOworCXV0 X2FkKGluZGV4LT5vbmxpbmVfbG9nKTsKIAlVTklWX01FTV9JTlZBTElEKCZtcmVjX2VuZCwgc2l6 ZW9mIG1yZWNfZW5kKTsKIAogCW9mZnNldHMgPSBzdGF0aWNfY2FzdDx1bGludCo+KHV0X21hbGxv YyhpICogc2l6ZW9mICpvZmZzZXRzKSk7CkBAIC03NzEsNyArNzYzLDcgQEAgbmV4dF9ibG9jazoK ICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAl1dF9hZChyd19sb2NrX293bihkaWN0X2luZGV4X2dl dF9sb2NrKGluZGV4KSwgUldfTE9DS19FWCkpOwogI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAq LwotCXV0X2FkKGluZGV4LT5pbmZvLm9ubGluZV9sb2ctPmhlYWQuYnl0ZXMgPT0gMCk7CisJdXRf YWQoaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYnl0ZXMgPT0gMCk7CiAKIAlpZiAodHJ4X2lzX2lu dGVycnVwdGVkKHRyeCkpIHsKIAkJZ290byBpbnRlcnJ1cHRlZDsKQEAgLTc4Miw4ICs3NzQsOCBA QCBuZXh0X2Jsb2NrOgogCQlnb3RvIGZ1bmNfZXhpdDsKIAl9CiAKLQlpZiAoVU5JVl9VTkxJS0VM WShpbmRleC0+aW5mby5vbmxpbmVfbG9nLT5oZWFkLmJsb2NrcwotCQkJICA+IGluZGV4LT5pbmZv Lm9ubGluZV9sb2ctPnRhaWwuYmxvY2tzKSkgeworCWlmIChVTklWX1VOTElLRUxZKGluZGV4LT5v bmxpbmVfbG9nLT5oZWFkLmJsb2NrcworCQkJICA+IGluZGV4LT5vbmxpbmVfbG9nLT50YWlsLmJs b2NrcykpIHsKIHVuZXhwZWN0ZWRfZW9mOgogCQlmcHJpbnRmKHN0ZGVyciwgIklubm9EQjogdW5l eHBlY3RlZCBlbmQgb2YgdGVtcG9yYXJ5IGZpbGUiCiAJCQkiIGZvciBpbmRleCAlc1xuIiwgaW5k ZXgtPm5hbWUgKyAxKTsKQEAgLTc5MiwyNiArNzg0LDI2IEBAIGNvcnJ1cHRpb246CiAJCWdvdG8g ZnVuY19leGl0OwogCX0KIAotCWlmIChpbmRleC0+aW5mby5vbmxpbmVfbG9nLT5oZWFkLmJsb2Nr cwotCSAgICA9PSBpbmRleC0+aW5mby5vbmxpbmVfbG9nLT50YWlsLmJsb2NrcykgewotCQlpZiAo aW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVhZC5ibG9ja3MpIHsKKwlpZiAoaW5kZXgtPm9ubGlu ZV9sb2ctPmhlYWQuYmxvY2tzCisJICAgID09IGluZGV4LT5vbmxpbmVfbG9nLT50YWlsLmJsb2Nr cykgeworCQlpZiAoaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYmxvY2tzKSB7CiAjaWZkZWYgSEFW RV9GVFJVTkNBVEUKIAkJCS8qIFRydW5jYXRlIHRoZSBmaWxlIGluIG9yZGVyIHRvIHNhdmUgc3Bh Y2UuICovCi0JCQlmdHJ1bmNhdGUoaW5kZXgtPmluZm8ub25saW5lX2xvZy0+ZmQsIDApOworCQkJ ZnRydW5jYXRlKGluZGV4LT5vbmxpbmVfbG9nLT5mZCwgMCk7CiAjZW5kaWYgLyogSEFWRV9GVFJV TkNBVEUgKi8KLQkJCWluZGV4LT5pbmZvLm9ubGluZV9sb2ctPmhlYWQuYmxvY2tzCi0JCQkJPSBp bmRleC0+aW5mby5vbmxpbmVfbG9nLT50YWlsLmJsb2NrcyA9IDA7CisJCQlpbmRleC0+b25saW5l X2xvZy0+aGVhZC5ibG9ja3MKKwkJCQk9IGluZGV4LT5vbmxpbmVfbG9nLT50YWlsLmJsb2NrcyA9 IDA7CiAJCX0KIAotCQluZXh0X21yZWMgPSBpbmRleC0+aW5mby5vbmxpbmVfbG9nLT50YWlsLmJs b2NrOwotCQluZXh0X21yZWNfZW5kID0gbmV4dF9tcmVjICsgaW5kZXgtPmluZm8ub25saW5lX2xv Zy0+dGFpbC5ieXRlczsKKwkJbmV4dF9tcmVjID0gaW5kZXgtPm9ubGluZV9sb2ctPnRhaWwuYmxv Y2s7CisJCW5leHRfbXJlY19lbmQgPSBuZXh0X21yZWMgKyBpbmRleC0+b25saW5lX2xvZy0+dGFp bC5ieXRlczsKIAogCQlpZiAobmV4dF9tcmVjX2VuZCA9PSBuZXh0X21yZWMpIHsKIAkJCS8qIEVu ZCBvZiBsb2cgcmVhY2hlZC4gKi8KIGFsbF9kb25lOgogCQkJdXRfYWQoaGFzX2luZGV4X2xvY2sp OwotCQkJdXRfYWQoaW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVhZC5ibG9ja3MgPT0gMCk7Ci0J CQl1dF9hZChpbmRleC0+aW5mby5vbmxpbmVfbG9nLT50YWlsLmJsb2NrcyA9PSAwKTsKKwkJCXV0 X2FkKGluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJsb2NrcyA9PSAwKTsKKwkJCXV0X2FkKGluZGV4 LT5vbmxpbmVfbG9nLT50YWlsLmJsb2NrcyA9PSAwKTsKIAkJCWVycm9yID0gREJfU1VDQ0VTUzsK IAkJCWdvdG8gZnVuY19leGl0OwogCQl9CkBAIC04MTksNyArODExLDcgQEAgYWxsX2RvbmU6CiAJ CW9zX29mZnNldF90CW9mczsKIAkJaWJvb2wJCXN1Y2Nlc3M7CiAKLQkJb2ZzID0gKG9zX29mZnNl dF90KSBpbmRleC0+aW5mby5vbmxpbmVfbG9nLT5oZWFkLmJsb2NrcworCQlvZnMgPSAob3Nfb2Zm c2V0X3QpIGluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJsb2NrcwogCQkJKiBzcnZfc29ydF9idWZf c2l6ZTsKIAogCQlpZiAoaGFzX2luZGV4X2xvY2spIHsKQEAgLTgzMCw4ICs4MjIsOCBAQCBhbGxf ZG9uZToKIAkJbG9nX2ZyZWVfY2hlY2soKTsKIAogCQlzdWNjZXNzID0gb3NfZmlsZV9yZWFkX25v X2Vycm9yX2hhbmRsaW5nKAotCQkJT1NfRklMRV9GUk9NX0ZEKGluZGV4LT5pbmZvLm9ubGluZV9s b2ctPmZkKSwKLQkJCWluZGV4LT5pbmZvLm9ubGluZV9sb2ctPmhlYWQuYmxvY2ssIG9mcywKKwkJ CU9TX0ZJTEVfRlJPTV9GRChpbmRleC0+b25saW5lX2xvZy0+ZmQpLAorCQkJaW5kZXgtPm9ubGlu ZV9sb2ctPmhlYWQuYmxvY2ssIG9mcywKIAkJCXNydl9zb3J0X2J1Zl9zaXplKTsKIAogCQlpZiAo IXN1Y2Nlc3MpIHsKQEAgLTg0MiwxOSArODM0LDE5IEBAIGFsbF9kb25lOgogCiAjaWZkZWYgUE9T SVhfRkFEVl9ET05UTkVFRAogCQkvKiBFYWNoIGJsb2NrIGlzIHJlYWQgZXhhY3RseSBvbmNlLiAg RnJlZSB1cCB0aGUgZmlsZSBjYWNoZS4gKi8KLQkJcG9zaXhfZmFkdmlzZShpbmRleC0+aW5mby5v bmxpbmVfbG9nLT5mZCwKKwkJcG9zaXhfZmFkdmlzZShpbmRleC0+b25saW5lX2xvZy0+ZmQsCiAJ CQkgICAgICBvZnMsIHNydl9zb3J0X2J1Zl9zaXplLCBQT1NJWF9GQURWX0RPTlRORUVEKTsKICNl bmRpZiAvKiBQT1NJWF9GQURWX0RPTlRORUVEICovCiAjaWZkZWYgRkFMTE9DX0ZMX1BVTkNIX0hP TEUKIAkJLyogVHJ5IHRvIGRlYWxsb2NhdGUgdGhlIHNwYWNlIGZvciB0aGUgZmlsZSBvbiBkaXNr LgogCQlUaGlzIHNob3VsZCB3b3JrIG9uIGV4dDQgb24gTGludXggMi42LjM5IGFuZCBsYXRlciwK IAkJYW5kIGJlIGlnbm9yZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIHVuc3VwcG9ydGVkLiAqLwot CQlmYWxsb2NhdGUoaW5kZXgtPmluZm8ub25saW5lX2xvZy0+ZmQsCisJCWZhbGxvY2F0ZShpbmRl eC0+b25saW5lX2xvZy0+ZmQsCiAJCQkgIEZBTExPQ19GTF9QVU5DSF9IT0xFIHwgRkFMTE9DX0ZM X0tFRVBfU0laRSwKIAkJCSAgb2ZzLCBzcnZfYnVmX3NpemUpOwogI2VuZGlmIC8qIEZBTExPQ19G TF9QVU5DSF9IT0xFICovCiAKLQkJbmV4dF9tcmVjID0gaW5kZXgtPmluZm8ub25saW5lX2xvZy0+ aGVhZC5ibG9jazsKKwkJbmV4dF9tcmVjID0gaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYmxvY2s7 CiAJCW5leHRfbXJlY19lbmQgPSBuZXh0X21yZWMgKyBzcnZfc29ydF9idWZfc2l6ZTsKIAl9CiAK QEAgLTg2MiwxOSArODU0LDE5IEBAIGFsbF9kb25lOgogCQkvKiBBIHBhcnRpYWwgcmVjb3JkIHdh cyByZWFkIGZyb20gdGhlIHByZXZpb3VzIGJsb2NrLgogCQlDb3B5IHRoZSB0ZW1wb3JhcnkgYnVm ZmVyIGZ1bGwsIGFzIHdlIGRvIG5vdCBrbm93IHRoZQogCQlsZW5ndGggb2YgdGhlIHJlY29yZC4g UGFyc2Ugc3Vic2VxdWVudCByZWNvcmRzIGZyb20KLQkJdGhlIGJpZ2dlciBidWZmZXIgaW5kZXgt PmluZm8ub25saW5lX2xvZy0+aGVhZC5ibG9jawotCQlvciBpbmRleC0+aW5mby5vbmxpbmVfbG9n LT50YWlsLmJsb2NrLiAqLworCQl0aGUgYmlnZ2VyIGJ1ZmZlciBpbmRleC0+b25saW5lX2xvZy0+ aGVhZC5ibG9jaworCQlvciBpbmRleC0+b25saW5lX2xvZy0+dGFpbC5ibG9jay4gKi8KIAotCQl1 dF9hZChtcmVjID09IGluZGV4LT5pbmZvLm9ubGluZV9sb2ctPmhlYWQuYnVmKTsKKwkJdXRfYWQo bXJlYyA9PSBpbmRleC0+b25saW5lX2xvZy0+aGVhZC5idWYpOwogCQl1dF9hZChtcmVjX2VuZCA+ IG1yZWMpOwotCQl1dF9hZChtcmVjX2VuZCA8ICgmaW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVh ZC5idWYpWzFdKTsKKwkJdXRfYWQobXJlY19lbmQgPCAoJmluZGV4LT5vbmxpbmVfbG9nLT5oZWFk LmJ1ZilbMV0pOwogCiAJCW1lbWNweSgobXJlY190KikgbXJlY19lbmQsIG5leHRfbXJlYywKLQkJ ICAgICAgICgmaW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVhZC5idWYpWzFdIC0gbXJlY19lbmQp OworCQkgICAgICAgKCZpbmRleC0+b25saW5lX2xvZy0+aGVhZC5idWYpWzFdIC0gbXJlY19lbmQp OwogCQltcmVjID0gcm93X2xvZ19hcHBseV9vcCgKIAkJCWluZGV4LCBkdXAsICZlcnJvciwgaGVh cCwgaGFzX2luZGV4X2xvY2ssCi0JCQlpbmRleC0+aW5mby5vbmxpbmVfbG9nLT5oZWFkLmJ1ZiwK LQkJCSgmaW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVhZC5idWYpWzFdLCBvZmZzZXRzKTsKKwkJ CWluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJ1ZiwKKwkJCSgmaW5kZXgtPm9ubGluZV9sb2ctPmhl YWQuYnVmKVsxXSwgb2Zmc2V0cyk7CiAJCWlmIChlcnJvciAhPSBEQl9TVUNDRVNTKSB7CiAJCQln b3RvIGZ1bmNfZXhpdDsKIAkJfSBlbHNlIGlmIChVTklWX1VOTElLRUxZKG1yZWMgPT0gTlVMTCkp IHsKQEAgLTg4Niw4ICs4NzgsOCBAQCBhbGxfZG9uZToKIAkJaXQgc2hvdWxkIHByb2NlZWQgYmV5 b25kIHRoZSBvbGQgZW5kIG9mIHRoZSBidWZmZXIuICovCiAJCXV0X2EobXJlYyA+IG1yZWNfZW5k KTsKIAotCQlpbmRleC0+aW5mby5vbmxpbmVfbG9nLT5oZWFkLmJ5dGVzID0gbXJlYyAtIG1yZWNf ZW5kOwotCQluZXh0X21yZWMgKz0gaW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVhZC5ieXRlczsK KwkJaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYnl0ZXMgPSBtcmVjIC0gbXJlY19lbmQ7CisJCW5l eHRfbXJlYyArPSBpbmRleC0+b25saW5lX2xvZy0+aGVhZC5ieXRlczsKIAl9CiAKIAl1dF9hZChu ZXh0X21yZWMgPD0gbmV4dF9tcmVjX2VuZCk7CkBAIC04OTYsMzIgKzg4OCwzMiBAQCBhbGxfZG9u ZToKIAogCS8qIG1yZWMhPU5VTEwgbWVhbnMgdGhhdCB0aGUgbmV4dCByZWNvcmQgc3RhcnRzIGZy b20gdGhlCiAJbWlkZGxlIG9mIHRoZSBibG9jayAqLwotCXV0X2FkKChtcmVjID09IE5VTEwpID09 IChpbmRleC0+aW5mby5vbmxpbmVfbG9nLT5oZWFkLmJ5dGVzID09IDApKTsKKwl1dF9hZCgobXJl YyA9PSBOVUxMKSA9PSAoaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYnl0ZXMgPT0gMCkpOwogCiAj aWZkZWYgVU5JVl9ERUJVRwotCWlmIChuZXh0X21yZWNfZW5kID09IGluZGV4LT5pbmZvLm9ubGlu ZV9sb2ctPmhlYWQuYmxvY2sKKwlpZiAobmV4dF9tcmVjX2VuZCA9PSBpbmRleC0+b25saW5lX2xv Zy0+aGVhZC5ibG9jawogCSAgICArIHNydl9zb3J0X2J1Zl9zaXplKSB7CiAJCS8qIElmIHRhaWwu Ynl0ZXMgPT0gMCwgbmV4dF9tcmVjX2VuZCBjYW4gYWxzbyBiZSBhdAogCQl0aGUgZW5kIG9mIHRh aWwuYmxvY2suICovCi0JCWlmIChpbmRleC0+aW5mby5vbmxpbmVfbG9nLT50YWlsLmJ5dGVzID09 IDApIHsKKwkJaWYgKGluZGV4LT5vbmxpbmVfbG9nLT50YWlsLmJ5dGVzID09IDApIHsKIAkJCXV0 X2FkKG5leHRfbXJlYyA9PSBuZXh0X21yZWNfZW5kKTsKLQkJCXV0X2FkKGluZGV4LT5pbmZvLm9u bGluZV9sb2ctPnRhaWwuYmxvY2tzID09IDApOwotCQkJdXRfYWQoaW5kZXgtPmluZm8ub25saW5l X2xvZy0+aGVhZC5ibG9ja3MgPT0gMCk7Ci0JCQl1dF9hZChpbmRleC0+aW5mby5vbmxpbmVfbG9n LT5oZWFkLmJ5dGVzID09IDApOworCQkJdXRfYWQoaW5kZXgtPm9ubGluZV9sb2ctPnRhaWwuYmxv Y2tzID09IDApOworCQkJdXRfYWQoaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYmxvY2tzID09IDAp OworCQkJdXRfYWQoaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYnl0ZXMgPT0gMCk7CiAJCX0gZWxz ZSB7Ci0JCQl1dF9hZChuZXh0X21yZWMgPT0gaW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVhZC5i bG9jawotCQkJICAgICAgKyBpbmRleC0+aW5mby5vbmxpbmVfbG9nLT5oZWFkLmJ5dGVzKTsKLQkJ CXV0X2FkKGluZGV4LT5pbmZvLm9ubGluZV9sb2ctPnRhaWwuYmxvY2tzCi0JCQkgICAgICA+IGlu ZGV4LT5pbmZvLm9ubGluZV9sb2ctPmhlYWQuYmxvY2tzKTsKLQkJfQotCX0gZWxzZSBpZiAobmV4 dF9tcmVjX2VuZCA9PSBpbmRleC0+aW5mby5vbmxpbmVfbG9nLT50YWlsLmJsb2NrCi0JCSAgICsg aW5kZXgtPmluZm8ub25saW5lX2xvZy0+dGFpbC5ieXRlcykgewotCQl1dF9hZChuZXh0X21yZWMg PT0gaW5kZXgtPmluZm8ub25saW5lX2xvZy0+dGFpbC5ibG9jawotCQkgICAgICArIGluZGV4LT5p bmZvLm9ubGluZV9sb2ctPmhlYWQuYnl0ZXMpOwotCQl1dF9hZChpbmRleC0+aW5mby5vbmxpbmVf bG9nLT50YWlsLmJsb2NrcyA9PSAwKTsKLQkJdXRfYWQoaW5kZXgtPmluZm8ub25saW5lX2xvZy0+ aGVhZC5ibG9ja3MgPT0gMCk7Ci0JCXV0X2FkKGluZGV4LT5pbmZvLm9ubGluZV9sb2ctPmhlYWQu Ynl0ZXMKLQkJICAgICAgPD0gaW5kZXgtPmluZm8ub25saW5lX2xvZy0+dGFpbC5ieXRlcyk7CisJ CQl1dF9hZChuZXh0X21yZWMgPT0gaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYmxvY2sKKwkJCSAg ICAgICsgaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYnl0ZXMpOworCQkJdXRfYWQoaW5kZXgtPm9u bGluZV9sb2ctPnRhaWwuYmxvY2tzCisJCQkgICAgICA+IGluZGV4LT5vbmxpbmVfbG9nLT5oZWFk LmJsb2Nrcyk7CisJCX0KKwl9IGVsc2UgaWYgKG5leHRfbXJlY19lbmQgPT0gaW5kZXgtPm9ubGlu ZV9sb2ctPnRhaWwuYmxvY2sKKwkJICAgKyBpbmRleC0+b25saW5lX2xvZy0+dGFpbC5ieXRlcykg eworCQl1dF9hZChuZXh0X21yZWMgPT0gaW5kZXgtPm9ubGluZV9sb2ctPnRhaWwuYmxvY2sKKwkJ ICAgICAgKyBpbmRleC0+b25saW5lX2xvZy0+aGVhZC5ieXRlcyk7CisJCXV0X2FkKGluZGV4LT5v bmxpbmVfbG9nLT50YWlsLmJsb2NrcyA9PSAwKTsKKwkJdXRfYWQoaW5kZXgtPm9ubGluZV9sb2ct PmhlYWQuYmxvY2tzID09IDApOworCQl1dF9hZChpbmRleC0+b25saW5lX2xvZy0+aGVhZC5ieXRl cworCQkgICAgICA8PSBpbmRleC0+b25saW5lX2xvZy0+dGFpbC5ieXRlcyk7CiAJfSBlbHNlIHsK IAkJdXRfZXJyb3I7CiAJfQpAQCAtOTM5LDEwICs5MzEsMTAgQEAgYWxsX2RvbmU6CiAJCQlSZWxl YXNlIGFuZCByZWFjcXVpcmUgaW5kZXgtPmxvY2sgaW4gb3JkZXIgdG8KIAkJCWFsbG93IG90aGVy IHRocmVhZHMgdG8gY29uY3VycmVudGx5IGJ1ZmZlcgogCQkJbW9kaWZpY2F0aW9ucy4gKi8KLQkJ CXV0X2FkKG1yZWMgPj0gaW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVhZC5ibG9jayk7Ci0JCQl1 dF9hZChtcmVjX2VuZCA9PSBpbmRleC0+aW5mby5vbmxpbmVfbG9nLT5oZWFkLmJsb2NrCisJCQl1 dF9hZChtcmVjID49IGluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJsb2NrKTsKKwkJCXV0X2FkKG1y ZWNfZW5kID09IGluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJsb2NrCiAJCQkgICAgICArIHNydl9z b3J0X2J1Zl9zaXplKTsKLQkJCXV0X2FkKGluZGV4LT5pbmZvLm9ubGluZV9sb2ctPmhlYWQuYnl0 ZXMKKwkJCXV0X2FkKGluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJ5dGVzCiAJCQkgICAgICA8IHNy dl9zb3J0X2J1Zl9zaXplKTsKIAogCQkJLyogVGFrZSB0aGUgb3Bwb3J0dW5pdHkgdG8gZG8gYSBy ZWRvIGxvZwpAQCAtOTUyLDExICs5NDQsMTEgQEAgYWxsX2RvbmU6CiAJCQkvKiBXZSBhcmUgYXBw bHlpbmcgb3BlcmF0aW9ucyBmcm9tIHRoZSBsYXN0IGJsb2NrLgogCQkJRG8gbm90IGFsbG93IG90 aGVyIHRocmVhZHMgdG8gYnVmZmVyIGFueXRoaW5nLAogCQkJc28gdGhhdCB3ZSBjYW4gZmluYWxs eSBjYXRjaCB1cCBhbmQgc3luY2hyb25pemUuICovCi0JCQl1dF9hZChpbmRleC0+aW5mby5vbmxp bmVfbG9nLT5oZWFkLmJsb2NrcyA9PSAwKTsKLQkJCXV0X2FkKGluZGV4LT5pbmZvLm9ubGluZV9s b2ctPnRhaWwuYmxvY2tzID09IDApOwotCQkJdXRfYWQobXJlY19lbmQgPT0gaW5kZXgtPmluZm8u b25saW5lX2xvZy0+dGFpbC5ibG9jawotCQkJICAgICAgKyBpbmRleC0+aW5mby5vbmxpbmVfbG9n LT50YWlsLmJ5dGVzKTsKLQkJCXV0X2FkKG1yZWMgPj0gaW5kZXgtPmluZm8ub25saW5lX2xvZy0+ dGFpbC5ibG9jayk7CisJCQl1dF9hZChpbmRleC0+b25saW5lX2xvZy0+aGVhZC5ibG9ja3MgPT0g MCk7CisJCQl1dF9hZChpbmRleC0+b25saW5lX2xvZy0+dGFpbC5ibG9ja3MgPT0gMCk7CisJCQl1 dF9hZChtcmVjX2VuZCA9PSBpbmRleC0+b25saW5lX2xvZy0+dGFpbC5ibG9jaworCQkJICAgICAg KyBpbmRleC0+b25saW5lX2xvZy0+dGFpbC5ieXRlcyk7CisJCQl1dF9hZChtcmVjID49IGluZGV4 LT5vbmxpbmVfbG9nLT50YWlsLmJsb2NrKTsKIAkJfQogCiAJCW5leHRfbXJlYyA9IHJvd19sb2df YXBwbHlfb3AoCkBAIC05NzksMjYgKzk3MSwyNiBAQCBwcm9jZXNzX25leHRfYmxvY2s6CiAJCQly d19sb2NrX3hfbG9jayhkaWN0X2luZGV4X2dldF9sb2NrKGluZGV4KSk7CiAJCQloYXNfaW5kZXhf bG9jayA9IFRSVUU7CiAKLQkJCWluZGV4LT5pbmZvLm9ubGluZV9sb2ctPmhlYWQuYnl0ZXMgPSAw OwotCQkJaW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVhZC5ibG9ja3MrKzsKKwkJCWluZGV4LT5v bmxpbmVfbG9nLT5oZWFkLmJ5dGVzID0gMDsKKwkJCWluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJs b2NrcysrOwogCQkJZ290byBuZXh0X2Jsb2NrOwogCQl9IGVsc2UgaWYgKG5leHRfbXJlYyAhPSBO VUxMKSB7CiAJCQl1dF9hZChuZXh0X21yZWMgPCBuZXh0X21yZWNfZW5kKTsKLQkJCWluZGV4LT5p bmZvLm9ubGluZV9sb2ctPmhlYWQuYnl0ZXMgKz0gbmV4dF9tcmVjIC0gbXJlYzsKKwkJCWluZGV4 LT5vbmxpbmVfbG9nLT5oZWFkLmJ5dGVzICs9IG5leHRfbXJlYyAtIG1yZWM7CiAJCX0gZWxzZSBp ZiAoaGFzX2luZGV4X2xvY2spIHsKIAkJCS8qIFdoZW4gbXJlYyBpcyB3aXRoaW4gdGFpbC5ibG9j aywgaXQgc2hvdWxkCiAJCQliZSBhIGNvbXBsZXRlIHJlY29yZCwgYmVjYXVzZSB3ZSBhcmUgaG9s ZGluZwogCQkJaW5kZXgtPmxvY2sgYW5kIHRodXMgZXhjbHVkaW5nIHRoZSB3cml0ZXIuICovCi0J CQl1dF9hZChpbmRleC0+aW5mby5vbmxpbmVfbG9nLT50YWlsLmJsb2NrcyA9PSAwKTsKLQkJCXV0 X2FkKG1yZWNfZW5kID09IGluZGV4LT5pbmZvLm9ubGluZV9sb2ctPnRhaWwuYmxvY2sKLQkJCSAg ICAgICsgaW5kZXgtPmluZm8ub25saW5lX2xvZy0+dGFpbC5ieXRlcyk7CisJCQl1dF9hZChpbmRl eC0+b25saW5lX2xvZy0+dGFpbC5ibG9ja3MgPT0gMCk7CisJCQl1dF9hZChtcmVjX2VuZCA9PSBp bmRleC0+b25saW5lX2xvZy0+dGFpbC5ibG9jaworCQkJICAgICAgKyBpbmRleC0+b25saW5lX2xv Zy0+dGFpbC5ieXRlcyk7CiAJCQl1dF9hZCgwKTsKIAkJCWdvdG8gdW5leHBlY3RlZF9lb2Y7CiAJ CX0gZWxzZSB7Ci0JCQltZW1jcHkoaW5kZXgtPmluZm8ub25saW5lX2xvZy0+aGVhZC5idWYsIG1y ZWMsCisJCQltZW1jcHkoaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYnVmLCBtcmVjLAogCQkJICAg ICAgIG1yZWNfZW5kIC0gbXJlYyk7Ci0JCQltcmVjX2VuZCArPSBpbmRleC0+aW5mby5vbmxpbmVf bG9nLT5oZWFkLmJ1ZiAtIG1yZWM7Ci0JCQltcmVjID0gaW5kZXgtPmluZm8ub25saW5lX2xvZy0+ aGVhZC5idWY7CisJCQltcmVjX2VuZCArPSBpbmRleC0+b25saW5lX2xvZy0+aGVhZC5idWYgLSBt cmVjOworCQkJbXJlYyA9IGluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJ1ZjsKIAkJCWdvdG8gcHJv Y2Vzc19uZXh0X2Jsb2NrOwogCQl9CiAJfQpAQCAtMTAxNCw3ICsxMDA2LDcgQEAgZnVuY19leGl0 OgogCWNhc2UgREJfU1VDQ0VTUzoKIAkJYnJlYWs7CiAJY2FzZSBEQl9JTkRFWF9DT1JSVVBUOgot CQlpZiAoKChvc19vZmZzZXRfdCkgaW5kZXgtPmluZm8ub25saW5lX2xvZy0+dGFpbC5ibG9ja3Mg KyAxKQorCQlpZiAoKChvc19vZmZzZXRfdCkgaW5kZXgtPm9ubGluZV9sb2ctPnRhaWwuYmxvY2tz ICsgMSkKIAkJICAgICogc3J2X3NvcnRfYnVmX3NpemUgPj0gc3J2X29ubGluZV9tYXhfc2l6ZSkg ewogCQkJLyogVGhlIGxvZyBmaWxlIGdyZXcgdG9vIGJpZy4gKi8KIAkJCWVycm9yID0gREJfT05M SU5FX0xPR19UT09fQklHOwpAQCAtMTA3Niw4ICsxMDY4LDggQEAgcm93X2xvZ19hcHBseSgKIAkJ ZGljdF9pbmRleF9zZXRfb25saW5lX3N0YXR1cyhpbmRleCwgT05MSU5FX0lOREVYX0NPTVBMRVRF KTsKIAl9CiAKLQlsb2cgPSBpbmRleC0+aW5mby5vbmxpbmVfbG9nOwotCWluZGV4LT5pbmZvLnNl YXJjaCA9IGxvZy0+c2VhcmNoOworCWxvZyA9IGluZGV4LT5vbmxpbmVfbG9nOworCWluZGV4LT5v bmxpbmVfbG9nID0gTlVMTDsKIAkvKiBXZSBjb3VsZCByZW1vdmUgdGhlIFRFTVBfSU5ERVhfUFJF RklYIGFuZCB1cGRhdGUgdGhlIGRhdGEKIAlkaWN0aW9uYXJ5IHRvIHNheSB0aGF0IHRoaXMgaW5k ZXggaXMgY29tcGxldGUsIGlmIHdlIGhhZAogCWFjY2VzcyB0byB0aGUgLmZybSBmaWxlIGhlcmUu ICBJZiB0aGUgc2VydmVyIGNyYXNoZXMgYmVmb3JlCgpObyBidW5kbGUgKHJlYXNvbjogdXNlbGVz cyBmb3IgcHVzaCBlbWFpbHMpLg==