ZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljLWN1c3RvbS9yZWNpcGVzLWx5bnEvbHlucS1xc2VyLXNpbS1kZW1vL2ZpbGVzL2x5bnEtcXNlci1zaW0tZGVtby5jcHAgYi9jYXAvengyOTc1MjB2My9zb3VyY2VzL21ldGEtenhpYy1jdXN0b20vcmVjaXBlcy1seW5xL2x5bnEtcXNlci1zaW0tZGVtby9maWxlcy9seW5xLXFzZXItc2ltLWRlbW8uY3BwCmluZGV4IDczMjIyNWIuLjI3MzZmMjkgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3NvdXJjZXMvbWV0YS16eGljLWN1c3RvbS9yZWNpcGVzLWx5bnEvbHlucS1xc2VyLXNpbS1kZW1vL2ZpbGVzL2x5bnEtcXNlci1zaW0tZGVtby5jcHAKKysrIGIvY2FwL3p4Mjk3NTIwdjMvc291cmNlcy9tZXRhLXp4aWMtY3VzdG9tL3JlY2lwZXMtbHlucS9seW5xLXFzZXItc2ltLWRlbW8vZmlsZXMvbHlucS1xc2VyLXNpbS1kZW1vLmNwcApAQCAtNDAzLDcgKzQwMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBxc2VyX3NpbV9nZXRjYXJkc3RhdHVzKGhfc2ltLCBRU0VSX1NJTV9TTE9UX0lEXzEsICZwdF9pbmZvKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXMgPT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigic3RhdGUgaXMgJWQgISEhXG4iLHB0X2luZm8uZV9jYXJkX3N0YXRlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJzdGF0ZSBpcyAweCV4ICEhIVxuIixwdF9pbmZvLmVfY2FyZF9zdGF0ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiZ2V0IGltc2kgZXJyb3IscmVzID0gJWRcbiIsIHJlcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLXFzZXItZ25zcy9zcmMvbWJ0a19nbnNzLmNwcCBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLXFzZXItZ25zcy9zcmMvbWJ0a19nbnNzLmNwcAppbmRleCA4NjJhZWVhLi5mODc0ZjU5IDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My9zcmMvbHlucS9saWIvbGlibHlucS1xc2VyLWduc3Mvc3JjL21idGtfZ25zcy5jcHAKKysrIGIvY2FwL3p4Mjk3NTIwdjMvc3JjL2x5bnEvbGliL2xpYmx5bnEtcXNlci1nbnNzL3NyYy9tYnRrX2duc3MuY3BwCkBAIC0zOTMsNiArMzkzLDEyIEBACiAgICAgICAgIF9tb3Blbl9sb2NhdGlvbl9pbmZvLT5sb25naXR1ZGUgPSBhdG9mKHRtcF9zdHIpOwogICAgICAgICBtZW1zZXQodG1wX3N0ciwgMCwgc2l6ZW9mKHRtcF9zdHIpKTsKICAgICAgICAgLy8gZ2V0IHByb2R1Y3QgbmFtZQorICAgICAgICByZXQgPSBnbnNzX2dldF9wYXJhX2Zyb21fbm1lYShzdHIsIHRtcF9zdHIsIDYpOworICAgICAgICBpZihyZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIF9tb3Blbl9sb2NhdGlvbl9pbmZvLT5mbGFncyA9IGF0b2kodG1wX3N0cik7CisgICAgICAgIG1lbXNldCh0bXBfc3RyLCAwLCBzaXplb2YodG1wX3N0cikpOworICAgICAgICAvLyBnZXQgcHJvZHVjdCBuYW1lCiAgICAgICAgIHJldCA9IGduc3NfZ2V0X3BhcmFfZnJvbV9ubWVhKHN0ciwgdG1wX3N0ciwgOSk7CiAgICAgICAgIGlmKHJldCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ5NSwxMiArNTAxLDcgQEAKICAgICB7CiAgICAgICAgIGhhbmRsZS0+Z25zc19oYW5kbGVyX2Z1bmMoKHVpbnQzMiloYW5kbGUsIEVfTVRfTE9DX01TR19JRF9OTUVBX0lORk8sICZubWVhX2luZm8sIE5VTEwpOwogICAgIH0KLSAgICBpZihoYW5kbGUtPmduc3NfaGFuZGxlcl9mdW5jICYmIGhhbmRsZS0+bW9kZSA9PSAxICYmCi0gICAgICAgICAgICBtb3Blbl9sb2NhdGlvbl9pbmZvLmxhdGl0dWRlICYmCi0gICAgICAgICAgICBtb3Blbl9sb2NhdGlvbl9pbmZvLmxvbmdpdHVkZSAmJgotICAgICAgICAgICAgbW9wZW5fbG9jYXRpb25faW5mby5hbHRpdHVkZSAmJgotICAgICAgICAgICAgbW9wZW5fbG9jYXRpb25faW5mby50aW1lc3RhbXAgJiYKLSAgICAgICAgICAgIG1vcGVuX2xvY2F0aW9uX2luZm8uc3BlZWQpCisgICAgaWYoaGFuZGxlLT5nbnNzX2hhbmRsZXJfZnVuYyAmJiBoYW5kbGUtPm1vZGUgPT0gMSAmJiBtb3Blbl9sb2NhdGlvbl9pbmZvLnRpbWVzdGFtcCAmJiBtb3Blbl9sb2NhdGlvbl9pbmZvLmZsYWdzKQogICAgIHsKICAgICAgICAgCiAgICAgICAgIGhhbmRsZS0+Z25zc19oYW5kbGVyX2Z1bmMoKHVpbnQzMiloYW5kbGUsIEVfTVRfTE9DX01TR19JRF9MT0NBVElPTl9JTkZPLCAmbW9wZW5fbG9jYXRpb25faW5mbywgTlVMTCk7CmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My9zcmMvbHlucS9saWIvbGlibHlucS1xc2VyLXNpbS9seW5xX3FzZXJfc2ltLmNwcCBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLXFzZXItc2ltL2x5bnFfcXNlcl9zaW0uY3BwCmluZGV4IGQ0MTNjMTcuLjQyMjU2MjUgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLXFzZXItc2ltL2x5bnFfcXNlcl9zaW0uY3BwCisrKyBiL2NhcC96eDI5NzUyMHYzL3NyYy9seW5xL2xpYi9saWJseW5xLXFzZXItc2ltL2x5bnFfcXNlcl9zaW0uY3BwCkBAIC0xOTQsNiArMTk0LDcgQEAKIGludCBxc2VyX3NpbV9nZXRjYXJkc3RhdHVzKHNpbV9jbGllbnRfaGFuZGxlX3R5cGUgaF9zaW0sUVNFUl9TSU1fU0xPVF9JRF9UWVBFX1Qgc2ltSWQsIFFTRVJfU0lNX0NBUkRfU1RBVFVTX0lORk9fVCAgICpwdF9pbmZvKQogewogICAgIGludCByZXQgPSAwOworICAgIGludCBzaW1fc3RhdHVzID0gMDsKICAgICBpZihOVUxMID09IHB0X2luZm8pCiAgICAgewogICAgICAgICBMWUVSUkxPRygiaW5wdXQgIGVycm9yXG4iKTsKQEAgLTIwNCw4ICsyMDUsMTcgQEAKICAgICAgICAgTFlFUlJMT0coIm5vdCBpbml0XG4iKTsKICAgICAgICAgcmV0dXJuIEVfUVNFUl9FUlJPUl9CQURQQVJNOwogICAgIH0KLSAgICByZXQgPSBseW5xX2dldF9zaW1fc3RhdHVzKChpbnQqKSZwdF9pbmZvLT5lX2NhcmRfc3RhdGUpOwotICAgIExZSU5GTE9HKCJbJXMtJWRdIFFTRVJfQ0FSRF9TVEFUVVM6ICVkXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAoaW50ICopcHRfaW5mby0+ZV9jYXJkX3N0YXRlKTsKKyAgICByZXQgPSBseW5xX2dldF9zaW1fc3RhdHVzKCZzaW1fc3RhdHVzKTsKKyAgICBpZigxID09IHNpbV9zdGF0dXMpCisgICAgeworICAgICAgICBwdF9pbmZvLT5lX2NhcmRfc3RhdGUgPSAweEIwMzsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAKKyAgICAgICAgcHRfaW5mby0+ZV9jYXJkX3N0YXRlID0gMHhCMDE7CisgICAgfQorICAgIExZSU5GTE9HKCJbJXMtJWRdIFFTRVJfQ0FSRF9TVEFUVVM6IDB4JXhcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18sIHB0X2luZm8tPmVfY2FyZF9zdGF0ZSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvYXJjaC9hcm0vYm9vdC9kdHMvengyOTc1MjB2My12ZWhpY2xlX2RjX3JlZi5kdHMgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9hcmNoL2FybS9ib290L2R0cy96eDI5NzUyMHYzLXZlaGljbGVfZGNfcmVmLmR0cwppbmRleCA2ZjdjZjY5Li41NmZiYTVjIDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9hcmNoL2FybS9ib290L2R0cy96eDI5NzUyMHYzLXZlaGljbGVfZGNfcmVmLmR0cworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9hcmNoL2FybS9ib290L2R0cy96eDI5NzUyMHYzLXZlaGljbGVfZGNfcmVmLmR0cwpAQCAtMTc0LDcgKzE3NCw3IEBACiAKICZ4cDJ4cCB7CiAJLy93aGlsZSB1c2luZyB0aGlzIG1vZHVsZSxzaG91bGQgY2hhbmdlIGdwaW8KLSAgICBzdGF0dXMgPSAiZGlzYWJsZWQiOworICAgIHN0YXR1cyA9ICJva2F5IjsvL2piLnFpIGNoYW5nZSBmb3IgZHRyIG9uIDIwMjMxMjA0CiB9OwogCiAmZ3Bpb19rZXkwIHsKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2FyY2gvYXJtL2Jvb3QvZHRzL3p4Mjk3NTIwdjMuZHRzaSBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2FyY2gvYXJtL2Jvb3QvZHRzL3p4Mjk3NTIwdjMuZHRzaQppbmRleCBiNWQ0YmM2Li4zYmI3NTllIDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvbGludXgtNS4xMC9hcmNoL2FybS9ib290L2R0cy96eDI5NzUyMHYzLmR0c2kKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvYXJjaC9hcm0vYm9vdC9kdHMvengyOTc1MjB2My5kdHNpCkBAIC0zMTIsMTIgKzMxMiwxMSBAQAogCQkJcGluY3RybC1uYW1lcyA9ICJncGlvNTAiLCAiZXh0X2ludDMiOwogCQkJcGluY3RybC0wID0gPCZncGlvXzUwX3BpbnM+OwogCQkJcGluY3RybC0xID0gPCZleHRfaW50M19waW5zPjsKKwkJCS8qamIucWkgY2hhbmdlIGZvciBkdHIgb24gMjAyMzEyMDQgc3RhcnQqLwogCQkJZ3Bpb3MgPSA8JmJncGlvIDUwIEdQSU9fQUNUSVZFX0hJR0gKLQkJCQkJICZiZ3BpbyA1MyBHUElPX0FDVElWRV9ISUdICi0JCQkJCSAmYmdwaW8gMTMwIEdQSU9fQUNUSVZFX0hJR0gKLQkJCQkJICZiZ3BpbyAxMzEgR1BJT19BQ1RJVkVfSElHSD47Ci0JCQkvL2ludGVycnVwdC1wYXJlbnQgPSA8JmV4dDhpbjE+OwotCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIEVYM19JTlQgSVJRX1RZUEVfRURHRV9SSVNJTkc+OworCQkJCQkgJmJncGlvIDExOSBHUElPX0FDVElWRV9ISUdIPjsKKwkJCWludGVycnVwdHMgPSA8R0lDX1NQSSBFWDNfSU5UIElSUV9UWVBFX0xFVkVMX0xPVz47CisJCQkvKmpiLnFpIGNoYW5nZSBmb3IgZHRyIG9uIDIwMjMxMjA0IGVuZCovCiAJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOwogCQl9OwogCQkKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2RyaXZlcnMvc29jL3NjL3Bvd2VyXzRsaW5lL2hhbF94cDJ4cC5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL2xpbnV4LTUuMTAvZHJpdmVycy9zb2Mvc2MvcG93ZXJfNGxpbmUvaGFsX3hwMnhwLmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBiYTQwMDM4Li41ZTE0YjdkCi0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2RyaXZlcnMvc29jL3NjL3Bvd2VyXzRsaW5lL2hhbF94cDJ4cC5jCisrKyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS9saW51eC01LjEwL2RyaXZlcnMvc29jL3NjL3Bvd2VyXzRsaW5lL2hhbF94cDJ4cC5jCkBAIC01OSw4ICs1OSw4IEBACiAjZGVmaW5lIEFQX1NMRUVQX1NUQVRVUyAgICAgMAkvKkFQy6/D38qxuMPS/b3FzqowKi8NCiAjZGVmaW5lIEFQX1dBS0VfU1RBVFVTICAgICAgMQkvKkFQu73Q0cqxuMPS/b3FzqoxKi8NCiANCi0jZGVmaW5lIENQX1NMRUVQX1NUQVRVUyAgICAgMAkvKkNQy6/D38qxuMPS/b3FzqowKi8NCi0jZGVmaW5lIENQX1dBS0VfU1RBVFVTICAgICAgMQkvKkNQu73Q0cqxuMPS/b3FzqoxKi8NCisjZGVmaW5lIENQX1NMRUVQX1NUQVRVUyAgICAgMQkvL2piLnEgYWRkIGZvciBkdHIgb24gMjAyMzEyMDQNCisjZGVmaW5lIENQX1dBS0VfU1RBVFVTICAgICAgMAkvL2piLnEgYWRkIGZvciBkdHIgb24gMjAyMzEyMDQNCiANCiAjaWZkZWYgQlRSVU5LX1NVUFBPUlQNCiAjZGVmaW5lIENQX1dBS0VfQVBfSU5UX1NFVCAgICAxDQpAQCAtNzcsNyArNzcsNyBAQAogI2lmbmRlZiBGQUxTRQ0KICNkZWZpbmUgRkFMU0UgMA0KICNlbmRpZg0KLSNkZWZpbmUgSEFMX1hQMlhQX1BNCQkJMA0KKyNkZWZpbmUgSEFMX1hQMlhQX1BNCQkJMSAvL2piLnFpIGFkZCBmb3IgZHRyIG9uIDIwMjMxMjA0DQogDQogDQogI2RlZmluZSBYUDJYUF9ERUJVRw0KQEAgLTExMSw3ICsxMTEsNyBAQAogDQogDQogc3RydWN0IGhhbF94cDJ4cF9kZXYNCi17Cit7DQogCXN0cnVjdCBkZXZpY2UJKmRldjsNCiAJc3RydWN0IHBpbmN0cmwJCSAgKnBjdHJsX3drX2ludDsNCiAJc3RydWN0IHBpbmN0cmxfc3RhdGUgICpzdF9ncGlvOw0KQEAgLTEyNywxNSArMTI3LDE1IEBACiAJaW50CQkJCQkJYXBfc2xwX3N0X2dwaW87DQogCWludAkJCQkJCXdha2VfYXBfZ3BpbzsNCiAJaW50CQkJCQkJd2FrZV9tZV9ncGlvOw0KLQlzdHJ1Y3QgZ3Bpb19kZXNjIAkJKmdkOworCXN0cnVjdCBncGlvX2Rlc2MgCQkqZ2Q7DQogDQotCWludAkJCQkJCWVpbnRfaXJxOworCWludAkJCQkJCWVpbnRfaXJxOw0KIAlpbnQJCQkJCQl4cDJ4cF9pcnFfc3RhdGU7DQogCWludAkJCQkJCXdha2VfY250Ow0KIAlpbnQJCQkJCQlzbGVlcF9jbnQ7DQogCXN0cnVjdCB3YWtldXBfc291cmNlICp4cDJ4cF93czsNCiANCi19OworfTsNCiANCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KQEAgLTE1Niw3ICsxNTYsNyBAQAogc3RydWN0IGtzZXQgKmtzZXRfeHAyeHA7DQogLy9zdHJ1Y3Qga3NldCBrc2V0X2M7DQogc3RydWN0IGtvYmplY3QgKnhwMnhwa29iaiA9IE5VTEw7DQotCisNCiBzdHJ1Y3QgaGFsX3hwMnhwX2RldiBnX3hwMnhwID0gezB9Ow0KIA0KIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlIHhwMnhwX3N0YXRlX2F0dHIgPQ0KQEAgLTE5NSw3ICsxOTUsNyBAQAogc3RhdGljIHN0cnVjdCBzeXNmc19vcHMgeHAyeHBfb2JqX3N5c29wcyA9DQogew0KICAgICAgICAgLnNob3cgPSB4cDJ4cF9vYmpfc2hvdywNCi0gICAgICAgIC5zdG9yZSA9IHhwMnhwX29ial9zdG9yZSwgICAgICAgIA0KKyAgICAgICAgLnN0b3JlID0geHAyeHBfb2JqX3N0b3JlLA0KIH07DQogDQogDQpAQCAtNDA3LDIwICs0MDcsMjEgQEAKICoNCiAqIE90aGVyczoNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKmpiLnFpIGFkZCBmb3IgZHRyIG9uIDIwMjMxMzA0IHN0YXJ0Ki8NCiBpcnFyZXR1cm5fdCB4cDJ4cF93a2NwX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqcHJpdikNCiB7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogCWludCBncGlvX3ZhbHVlOw0KLSAJdW5zaWduZWQgaW50IGlycV90eXBlOw0KKwl1bnNpZ25lZCBpbnQgaXJxX3R5cGU7DQogCXN0cnVjdCBoYWxfeHAyeHBfZGV2ICp4cDJ4cF9kZXYgPSAoc3RydWN0IGhhbF94cDJ4cF9kZXYgKilwcml2Ow0KLQkNCisNCiAJZGlzYWJsZV9pcnFfbm9zeW5jKGlycSk7DQotCXhwMnhwX2Rldi0+eHAyeHBfaXJxX3N0YXRlID0gMDsJDQorCXhwMnhwX2Rldi0+eHAyeHBfaXJxX3N0YXRlID0gMDsNCiAJZ3Bpb192YWx1ZSA9IDAgOw0KLSAgICAvL3BtX3N0YXlfYXdha2UoeHAyeHBfZGV2LT5kZXYpOw0KKw0KIAlpZih4cDJ4cF9kZXYtPnhwMnhwX3dzKXsNCiAJCV9fcG1fd2FrZXVwX2V2ZW50KHhwMnhwX2Rldi0+eHAyeHBfd3MsIDIwMDApOw0KLQl9CQ0KKwl9DQogIAlpZiAocGluY3RybF9zZWxlY3Rfc3RhdGUoeHAyeHBfZGV2LT5wY3RybF93a19pbnQsIHhwMnhwX2Rldi0+c3RfZ3BpbykgPCAwKSB7DQogCQlwcmludGsoInNldHRpbmcgY2FyZCBkZXRlY3QgZ3BpbyBmYWlsZWRcbiIpOw0KIAl9DQpAQCAtNDMzLDI2ICs0MzQsMjMgQEAKIAl9DQogCQ0KIAlpZigxID09IGdwaW9fdmFsdWUpew0KLQkJaXJxX3R5cGUgPSBJUlFGX1RSSUdHRVJfRkFMTElORzsNCi0JCXhwMnhwX2Rldi0+d2FrZV9zdGF0ZSA9IDE7DQotCQl4cDJ4cF9kZXYtPmN1cnJfZ3Bpb192YWx1ZSA9IDE7DQotICAgICAgICAvL3BtX3JlbGF4KGNkbnNfZGV2LT5kZXYpOw0KKyAgICAgICAgaXJxX3R5cGUgPSBJUlFGX1RSSUdHRVJfTE9XOw0KKyAgICAgICAgcHJpbnRrKCJncGlvX3ZhbHVlIGlzIDEgLCByZWxlYXNlIHdha2Vsb2NrXG4iKTsNCisgICAgICAgIHBtX3JlbGF4KGdfeHAyeHAuZGV2KTsNCiAJfWVsc2V7DQotCQlpcnFfdHlwZSA9IElSUUZfVFJJR0dFUl9SSVNJTkc7DQotCQl4cDJ4cF9kZXYtPndha2Vfc3RhdGUgPSAwOw0KLQkJeHAyeHBfZGV2LT5jdXJyX2dwaW9fdmFsdWUgPSAwOw0KKyAgICAgICAgaXJxX3R5cGUgPSBJUlFGX1RSSUdHRVJfSElHSDsNCisgICAgICAgIHByaW50aygiZ3Bpb192YWx1ZSBpcyAwICwgbG9jayB3YWtlbG9ja1xuIik7DQorICAgICAgICBwbV9zdGF5X2F3YWtlKGdfeHAyeHAuZGV2KTsNCiAJfQ0KIA0KIAlpZiAocGluY3RybF9zZWxlY3Rfc3RhdGUoeHAyeHBfZGV2LT5wY3RybF93a19pbnQsIHhwMnhwX2Rldi0+c3RfaW50KSA8IDApIHsNCiAJCXByaW50ayggInNldHRpbmcgY2FyZCBkZXRlY3QgaXJxIGZhaWxlZFxuIik7DQogCX0NCi0JDQogCWlycV9zZXRfaXJxX3R5cGUoaXJxLGlycV90eXBlKTsNCi0JCQ0KIAl1cCgmeHAyeHBfZGV2LT53a19zZW0pOw0KLQlyZXR1cm4gSVJRX0hBTkRMRUQ7CQ0KKwlyZXR1cm4gSVJRX0hBTkRMRUQ7DQogfQ0KLQ0KKy8qamIucWkgYWRkIGZvciBkdHIgb24gMjAyMzEzMDQgZW5kKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogRnVuY3Rpb246DQpAQCAtNjY3LDcxICs2NjUsNzEgQEAKIH0NCiANCiAjaWYgSEFMX1hQMlhQX1BNDQotCisNCiBzdGF0aWMgaW50IGhhbF94cDJ4cF9wbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KLXsKLQkvL3BtX3N0YXlfYXdha2UoZGV2KTsKLQorew0KKwlncGlvX2RpcmVjdGlvbl9vdXRwdXQoZ194cDJ4cC5hcF9zbHBfc3RfZ3BpbywgQ1BfV0FLRV9TVEFUVVMpOy8vamIucSBhZGQgZm9yIGR0ciBvbiAyMDIzMTIwNA0KIAlwcl9pbmZvKCJoYWxfeHAyeHBfcG1fcmVzdW1lXG4iKTsNCi0JcmV0dXJuIDA7Ci19Ci0KKwlyZXR1cm4gMDsNCit9DQorDQogc3RhdGljIGludCBoYWxfeHAyeHBfcG1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQotewotCS8vcG1fcmVsYXgoZGV2KTsNCit7DQorCWdwaW9fZGlyZWN0aW9uX291dHB1dChnX3hwMnhwLmFwX3NscF9zdF9ncGlvLCBDUF9TTEVFUF9TVEFUVVMpOy8vamIucSBhZGQgZm9yIGR0ciBvbiAyMDIzMTIwNA0KIAlwcl9pbmZvKCJoYWxfeHAyeHBfcG1fc3VzcGVuZFxuIik7DQotCXJldHVybiAwOwotfQotCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgaGFsX3hwMnhwX3BtX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCi17Ci0JLyogZW5hYmxlIGNsayBhbmQgcmVzdG9yZSByZWdzICovCit7DQorCS8qIGVuYWJsZSBjbGsgYW5kIHJlc3RvcmUgcmVncyAqLw0KIAlwcl9pbmZvKCJoYWxfeHAyeHBfcG1fcnVudGltZV9yZXN1bWVcbiIpOw0KLQlyZXR1cm4gMDsKLX0KLQorCXJldHVybiAwOw0KK30NCisNCiBzdGF0aWMgaW50IGhhbF94cDJ4cF9wbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KLXsKLQkvKiBiYWNrdXAgcmVncyBhbmQgZGlzYWJsZSBjbGsgKi8KK3sNCisJLyogYmFja3VwIHJlZ3MgYW5kIGRpc2FibGUgY2xrICovDQogCXByX2luZm8oImhhbF94cDJ4cF9wbV9ydW50aW1lX3N1c3BlbmRcbiIpOw0KLQlyZXR1cm4gMDsKLX0KLQorCXJldHVybiAwOw0KK30NCisNCiBzdGF0aWMgaW50IGhhbF94cDJ4cF9wbV9ydW50aW1lX2lkbGUoc3RydWN0IGRldmljZSAqZGV2KQ0KLXsKK3sNCiAJcHJfaW5mbygiaGFsX3hwMnhwX3BtX3J1bnRpbWVfaWRsZVxuIik7DQotCXJldHVybiAwOwotfQotCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBoYWxfeHAyeHBfcG0gPSB7DQogCS5yZXN1bWUgPSBoYWxfeHAyeHBfcG1fcmVzdW1lLA0KIAkuc3VzcGVuZCA9IGhhbF94cDJ4cF9wbV9zdXNwZW5kLA0KIAkucnVudGltZV9yZXN1bWUgPSBoYWxfeHAyeHBfcG1fcnVudGltZV9yZXN1bWUsDQogCS5ydW50aW1lX3N1c3BlbmQgPSBoYWxfeHAyeHBfcG1fcnVudGltZV9zdXNwZW5kLA0KIAkucnVudGltZV9pZGxlID0gaGFsX3hwMnhwX3BtX3J1bnRpbWVfaWRsZQ0KLX07Ci0jZW5kaWYKK307DQorI2VuZGlmDQogDQotCisNCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBoYWxfeHAyeHBfbWF0Y2hbXSA9IHsNCiAJeyAuY29tcGF0aWJsZSA9ICJ6dGUsaGFsX3hwMnhwIiwgfSwNCi0JeyB9Ci19OworCXsgfQ0KK307DQogDQotCisNCiBpbnQgaGFsX3hwMnhwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQotewotCWludCBncGlvOwotCWludCBpcnE7Ci0JZW51bSBvZl9ncGlvX2ZsYWdzIGZsYWdzOworew0KKwlpbnQgZ3BpbzsNCisJaW50IGlycTsNCisJaW50IGdwaW9fdmFsdWU7Ly9qYi5xIGFkZCBmb3IgZHRyIG9uIDIwMjMxMjA0DQorCWVudW0gb2ZfZ3Bpb19mbGFncyBmbGFnczsNCiAJaW50IHJldCA9IDA7DQogCWdfeHAyeHAuZGV2ID0gJnBkZXYtPmRldjsNCiANCiAJc2VtYV9pbml0KCZnX3hwMnhwLndrX3NlbSwwKTsNCiAJc3Bpbl9sb2NrX2luaXQoJmdfeHAyeHAud2tfbG9jayk7DQotCQ0KLQkvL2RldmljZV9pbml0X3dha2V1cCgmcGRldi0+ZGV2LCB0cnVlKTsKLQkvL3BtX3N0YXlfYXdha2UoZ194cDJ4cC5kZXYpOw0KKw0KKwlkZXZpY2VfaW5pdF93YWtldXAoJnBkZXYtPmRldiwgdHJ1ZSk7Ly9qYi5xIGFkZCBmb3IgZHRyIG9uIDIwMjMxMjA0DQorDQogCWdfeHAyeHAueHAyeHBfd3MgPSB3YWtldXBfc291cmNlX3JlZ2lzdGVyKE5VTEwsICJ4cDJ4cCIpOw0KIAlpZihnX3hwMnhwLnhwMnhwX3dzICA9PSBOVUxMKXsNCiAJCXByaW50aygiYWRiX3NldHVwIHdha2V1cF9zb3VyY2VfY3JlYXRlIGZhaWxcbiIpOw0KQEAgLTc0MywxMSArNzQxLDExIEBACiAJCWdfeHAyeHAucGN0cmxfd2tfaW50ID0gTlVMTDsNCiAJCXJldCA9IC1FTk9NRU07DQogCQlnb3RvIHBpbmN0cmxfaW5pdF9mYWlsOw0KLQl9CisJfQ0KIAlnX3hwMnhwLnN0X2dwaW8gPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShnX3hwMnhwLnBjdHJsX3drX2ludCwgImdwaW81MCIpOw0KIAlpZiAoSVNfRVJSKGdfeHAyeHAuc3RfZ3BpbykpIHsNCiAJCWRldl9lcnIoJnBkZXYtPmRldiwgImhhbF94cDJ4cF9wcm9iZTogbWlzc2luZyBzdF9ncGlvXG4iKTsNCi0JfQorCX0NCiAJZ194cDJ4cC5zdF9pbnQgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShnX3hwMnhwLnBjdHJsX3drX2ludCwgImV4dF9pbnQzIik7DQogCWlmIChJU19FUlIoZ194cDJ4cC5zdF9pbnQpKSB7DQogCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJoYWxfeHAyeHBfcHJvYmU6IG1pc3NpbmcgZXh0X2ludDNcbiIpOw0KQEAgLTc1NSw3ICs3NTMsNyBAQAogI2lmIDAJDQogCWlmICggcGluY3RybF9zZWxlY3Rfc3RhdGUoZ194cDJ4cC5wY3RybF93a19pbnQsIGdfeHAyeHAuc3RfZ3BpbykgPCAwKSB7DQogCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJoYWxfeHAyeHBfcHJvYmUgc3RhdGUwIGZhaWxlZFxuIik7DQotCX0KKwl9DQogI2VuZGlmDQogCS8qIGVpbnQzICovDQogCWlmICggcGluY3RybF9zZWxlY3Rfc3RhdGUoZ194cDJ4cC5wY3RybF93a19pbnQsIGdfeHAyeHAuc3RfaW50KSA8IDApIHsNCkBAIC03NjQsMjkgKzc2Miw1MSBAQAogCQ0KIAkvKiBncGlvIHJlcXVlc3QgKi8NCiAJZ3BpbyA9IG9mX2dldF9ncGlvX2ZsYWdzKHBkZXYtPmRldi5vZl9ub2RlLCAwLCAmZmxhZ3MpOw0KLQlpZiAoIWdwaW9faXNfdmFsaWQoZ3BpbykpIHsKKwlpZiAoIWdwaW9faXNfdmFsaWQoZ3BpbykpIHsNCiAJCXByaW50aygiaGFsX3hwMnhwX3Byb2JlIGdwaW8gNTAgbm8gZm91bmRcbiIpOw0KIAkJcmV0ID0gLUVOT0RFVjsNCiAJCWdvdG8gZ3BpbzUwX2luaXRfZmFpbDsNCi0JfQotCS8qIHByX2luZm8oInRlc3QgZ3BpbyA6JWQgZmxhZz0weCV4XG4iLCBncGlvLCBmbGFncyk7ICovCi0NCisJfQ0KKwkvKiBwcl9pbmZvKCJ0ZXN0IGdwaW8gOiVkIGZsYWc9MHgleFxuIiwgZ3BpbywgZmxhZ3MpOyAqLw0KIA0KIAlnX3hwMnhwLndha2VfbWVfZ3BpbyA9IGdwaW87DQotCQ0KIA0KIAlnX3hwMnhwLmVpbnRfaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAocGRldi0+ZGV2Lm9mX25vZGUsIDApOw0KLQkgcHJpbnRrKCJ3YWtlX21lX2dwaW86JWQsIGVpbnRfaXJxOiVkXG4iLCBnX3hwMnhwLndha2VfbWVfZ3BpbywgZ194cDJ4cC5laW50X2lycSk7DQorCXByaW50aygid2FrZV9tZV9ncGlvOiVkLCBlaW50X2lycTolZFxuIiwgZ194cDJ4cC53YWtlX21lX2dwaW8sIGdfeHAyeHAuZWludF9pcnEpOw0KKwkvKi8vamIucSBhZGQgZm9yIGR0ciBvbiAyMDIzMTIwNCBzdGFydCovDQorCWlmICggcGluY3RybF9zZWxlY3Rfc3RhdGUoZ194cDJ4cC5wY3RybF93a19pbnQsIGdfeHAyeHAuc3RfZ3BpbykgPCAwKSB7DQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJoYWxfeHAyeHBfcHJvYmUgc3RhdGUwIGZhaWxlZFxuIik7DQorCX0NCisJc3Bpbl9sb2NrX2lycXNhdmUoJmdfeHAyeHAud2tfbG9jaywgZmxhZ3MpOw0KKwlncGlvX3ZhbHVlID0gZ3Bpb19nZXRfdmFsdWUoZ194cDJ4cC53YWtlX21lX2dwaW8pIDsNCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ194cDJ4cC53a19sb2NrLCBmbGFncyk7DQorCWlmKGdwaW9fdmFsdWUgPCAwKQ0KKwl7DQorICAgICAgICBwcmludGsoICJbJXMtJWRdOiBncGlvIGdldCBzdGF0ZSBmYWlsZWRcbiIsX19mdW5jX18sX19MSU5FX18pOw0KKwl9DQogDQorCWlmKDEgPT0gZ3Bpb192YWx1ZSkNCisJew0KKwkJcG1fcmVsYXgoZ194cDJ4cC5kZXYpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJcG1fc3RheV9hd2FrZShnX3hwMnhwLmRldik7DQorCX0NCisNCisJaWYgKCBwaW5jdHJsX3NlbGVjdF9zdGF0ZShnX3hwMnhwLnBjdHJsX3drX2ludCwgZ194cDJ4cC5zdF9pbnQpIDwgMCkgew0KKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiaGFsX3hwMnhwX3Byb2JlIGVpbnQzIGZhaWxlZFxuIik7DQorCX0NCisJLyovL2piLnEgYWRkIGZvciBkdHIgb24gMjAyMzEyMDQgZW5kKi8NCiAJcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShnX3hwMnhwLmRldiwgZ194cDJ4cC5laW50X2lycSwNCiAJCQkJCQl4cDJ4cF93a2NwX2hhbmRsZXIsDQogCQkJCQkJTlVMTCwgSVJRRl9PTkVTSE9ULA0KLQkJCQkJCSJ4cDJ4cF93YWtlIGludCIsICZnX3hwMnhwKTsJDQotCQ0KLQkNCisJCQkJCQkieHAyeHBfd2FrZSBpbnQiLCAmZ194cDJ4cCk7DQorDQogCWlmKHJldDwwKXsNCiAJCXBhbmljKCJoYWxfeHAyeHBfcHJvYmUgcmVxdWVzdF9pcnEgZmFpbCwgJWQiLCByZXQpOw0KLQl9CQ0KKwl9DQorDQogDQogCWdfeHAyeHAud2FrZV9pbnRfdGhyZWFkID0ga3RocmVhZF9ydW4oeHAyeHBfd2tjcF90aHJlYWQsICh2b2lkICopJmdfeHAyeHAsICJ4cDJ4cF93YWtlX3RocmVhZCIpOw0KIAkNCkBAIC03OTQsMzggKzgxNCwzOCBAQAogCQlwcmludGsoIkNhbid0IHN0YXJ0IHVwIG91ciB0aHJlYWQiKTsNCiAJCXJldHVybiBQVFJfRVJSKGdfeHAyeHAud2FrZV9pbnRfdGhyZWFkKTsNCiAJfQkNCi0JDQorDQogCWVuYWJsZV9pcnFfd2FrZShnX3hwMnhwLmVpbnRfaXJxKTsNCi0JDQotI2lmZGVmIENPTkZJR19LRVJORUxfQ09OVFJPTF9XQUtFVVANCisvKmpiLnEgYWRkIGZvciBkdHIgb24gMjAyMzEyMDQgc3RhcnQqLw0KIAkvKiBncGlvIHJlcXVlc3QgKi8NCi0JLy9ncGlvXzUzLGFwIHNsZWVwX3N0YXRlDQorCS8vZ3Bpb18xMTksYXAgc2xlZXBfc3RhdGUNCiAJZ3BpbyA9IG9mX2dldF9ncGlvX2ZsYWdzKHBkZXYtPmRldi5vZl9ub2RlLCAxLCAmZmxhZ3MpOw0KLQlpZiAoIWdwaW9faXNfdmFsaWQoZ3BpbykpIHsKKwlpZiAoIWdwaW9faXNfdmFsaWQoZ3BpbykpIHsNCiAJCXByaW50aygiaGFsX3hwMnhwX3Byb2JlIGdwaW8gbm8gZm91bmRcbiIpOw0KIAkJcmV0ID0gLUVOT0RFVjsNCi0JCWdvdG8gZ3BpbzUzX2luaXRfZmFpbDsNCi0JfQotCS8qIHByX2luZm8oInRlc3QgZ3BpbyA6JWQgZmxhZz0weCV4XG4iLCBncGlvLCBmbGFncyk7ICovCisJCWdvdG8gZ3BpbzExOV9pbml0X2ZhaWw7DQorCX0NCisJLyogcHJfaW5mbygidGVzdCBncGlvIDolZCBmbGFnPTB4JXhcbiIsIGdwaW8sIGZsYWdzKTsgKi8NCiANCiAJZ194cDJ4cC5hcF9zbHBfc3RfZ3BpbyA9IGdwaW87DQotCWdwaW9fZGlyZWN0aW9uX2lucHV0KGdfeHAyeHAuYXBfc2xwX3N0X2dwaW8pOw0KLQkNCisJZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KGdfeHAyeHAuYXBfc2xwX3N0X2dwaW8sIENQX1NMRUVQX1NUQVRVUyk7DQorDQorI2lmIDANCisNCiAJLy9ncGlvXzEzMCxteSBzbGVlcF9zdGF0ZQ0KIAlncGlvID0gb2ZfZ2V0X2dwaW9fZmxhZ3MocGRldi0+ZGV2Lm9mX25vZGUsIDIsICZmbGFncyk7DQotCWlmICghZ3Bpb19pc192YWxpZChncGlvKSkgeworCWlmICghZ3Bpb19pc192YWxpZChncGlvKSkgew0KIAkJcHJpbnRrKCJoYWxfeHAyeHBfcHJvYmUgZ3BpbyBubyBmb3VuZFxuIik7DQogCQlyZXQgPSAtRU5PREVWOw0KIAkJZ290byBncGlvMTMwX2luaXRfZmFpbDsNCiAJfQ0KIA0KLQ0KLQlnX3hwMnhwLm15X3NscF9zdF9ncGlvID0gZ3BpbzsJDQotZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KGdfeHAyeHAubXlfc2xwX3N0X2dwaW8sIENQX1NMRUVQX1NUQVRVUyk7DQorCWdfeHAyeHAubXlfc2xwX3N0X2dwaW8gPSBncGlvOw0KKyAgICBncGlvX2RpcmVjdGlvbl9vdXRwdXQoZ194cDJ4cC5teV9zbHBfc3RfZ3BpbywgQ1BfU0xFRVBfU1RBVFVTKTsNCiANCiAJLy9ncGlvXzEzMSx3YWtlIGFwIGdwaW8NCiAJZ3BpbyA9IG9mX2dldF9ncGlvX2ZsYWdzKHBkZXYtPmRldi5vZl9ub2RlLCAzLCAmZmxhZ3MpOw0KLQlpZiAoIWdwaW9faXNfdmFsaWQoZ3BpbykpIHsKKwlpZiAoIWdwaW9faXNfdmFsaWQoZ3BpbykpIHsNCiAJCXByaW50aygiaGFsX3hwMnhwX3Byb2JlIGdwaW8gbm8gZm91bmRcbiIpOw0KIAkJcmV0ID0gLUVOT0RFVjsNCiAJCWdvdG8gZ3BpbzEzMV9pbml0X2ZhaWw7DQpAQCAtODMzLDI3ICs4NTMsMzAgQEAKIAlnX3hwMnhwLndha2VfYXBfZ3BpbyA9IGdwaW87DQogCWdwaW9fZGlyZWN0aW9uX291dHB1dChnX3hwMnhwLm15X3NscF9zdF9ncGlvLCBDUF9XQUtFX0FQX0lOVF9DTEVBUik7DQogDQorICAgIGdwaW8xMzFfaW5pdF9mYWlsOg0KKyAgICAgICAgaWYocmV0KXsNCisgICAgICAgICAgICBwcmludGsoIlxuIik7DQorICAgICAgICB9DQorICAgIGdwaW8xMzBfaW5pdF9mYWlsOg0KKyAgICAgICAgaWYocmV0KXsNCisgICAgICAgICAgICBwcmludGsoIlxuIik7DQorICAgICAgICB9DQorDQorDQogI2VuZGlmDQorLypqYi5xIGFkZCBmb3IgZHRyIG9uIDIwMjMxMjA0IGVuZCovDQogCWdfeHAyeHAud2FrZV9jbnQgPSAwOw0KIAlnX3hwMnhwLnNsZWVwX2NudCA9IDA7DQogDQotZ3BpbzEzMV9pbml0X2ZhaWw6DQorDQorZ3BpbzExOV9pbml0X2ZhaWw6DQogCWlmKHJldCl7DQotCQlwcmludGsoIlxuIik7DQotCX0NCi1ncGlvMTMwX2luaXRfZmFpbDoNCi0JaWYocmV0KXsNCi0JCXByaW50aygiXG4iKTsNCi0JfQ0KLQkNCi1ncGlvNTNfaW5pdF9mYWlsOg0KLQlpZihyZXQpew0KLQkJcHJpbnRrKCJcbiIpOw0KKwkJcHJpbnRrKCJncGlvIDExOSBpbml0IGZhaWxcbiIpOy8vamIucSBhZGQgZm9yIGR0ciBvbiAyMDIzMTIwNA0KIAl9DQogCQ0KIGdwaW81MF9pbml0X2ZhaWw6DQogCWlmKHJldCl7DQotCQlwcmludGsoIlxuIik7DQorCQlwcmludGsoImdwaW8gNTAgaW5pdCBmYWlsXG4iKTsvL2piLnEgYWRkIGZvciBkdHIgb24gMjAyMzEyMDQNCiAJfQ0KIA0KIHBpbmN0cmxfaW5pdF9mYWlsOg0KQEAgLTg2MiwxOSArODg1LDE5IEBACiAJfQ0KIHdha2Vfc291cmNlX2luaXRfZmFpbDoNCiAJDQotCS8vcG1fcmVsYXgoZ194cDJ4cC5kZXYpOwotCXJldHVybiByZXQ7Ci19CisJLy9wbV9yZWxheChnX3hwMnhwLmRldik7DQorCXJldHVybiByZXQ7DQorfQ0KIA0KIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGhhbF94cDJ4cF9kcml2ZXIgPSB7DQogCS5wcm9iZSA9IGhhbF94cDJ4cF9wcm9iZSwNCi0JLmRyaXZlciA9IHsKKwkuZHJpdmVyID0gew0KIAkJLm5hbWUgPSAiaGFsX3hwMnhwIiwNCiAjaWYJSEFMX1hQMlhQX1BNDQogCQkucG0gPSAmaGFsX3hwMnhwX3BtLA0KLSNlbmRpZgkJCisjZW5kaWYJCQ0KIAkJLm9mX21hdGNoX3RhYmxlID0gaGFsX3hwMnhwX21hdGNoLA0KLQl9LAorCX0sDQogfTsNCiANCiANCkBAIC04OTYsNyArOTE5LDcgQEAKIAlpbnQgZXJyQ29kZSA9IC0xOw0KIAlrc2V0X3hwMnhwX2luaXQoKTsNCiAJLy94cDJ4cF9pbml0X2ZsYWcgPSAxOw0KLQorDQogCXJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmaGFsX3hwMnhwX2RyaXZlcik7DQogCWlmIChyZXQgIT0gMCl7DQogCQlrc2V0X3hwMnhwX2V4aXQoKTsNCg==