ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggMzJkNDUxZi4uZDE4NDlhMiAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSw0MCBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4zLjE1IiBkYXRlPSIwNy4xMi4yMDA1Ij4KKworPGNoYW5nZSB0eXBlPSJmZWF0dXJlIj4KKzxwYXJhIGxhbmc9InJ1Ij4KK87P18/KIMvPxCA0NDQg1yDEydLFy9TJ18UgcmV0dXJuIMTM0SDawcvS2dTJ0SDTz8XEyc7FzsnRLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIG5ldyA0NDQgY29kZSBvZiB0aGUgInJldHVybiIgZGlyZWN0aXZlIHRvIGNsb3NlIGNvbm5lY3Rpb24uCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJmZWF0dXJlIj4KKzxwYXJhIGxhbmc9InJ1Ij4KK8TJ0sXL1MnXwSBzb19rZWVwYWxpdmUg1yBJTUFQL1BPUDMg0NLPy9PJLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlICJzb19rZWVwYWxpdmUiIGRpcmVjdGl2ZSBpbiBJTUFQL1BPUDMgcHJveHkuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorbmdpbngg1MXQxdLYINfZ2tnXwcXUIGFib3J0KCkg0NLJIM/CzsHS1dbFzsnJIM7F2sHL0tnU2cgg08/FxMnOxc7Jygor1M/M2MvPINDSySDQzMHOz80g19nIz8TFIMkg18vMwN6jzs7PyiDEydLFy9TJ18UgZGVidWdfcG9pbnRzLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgoraWYgdGhlcmUgYXJlIHVuY2xvc2VkIGNvbm5lY3Rpb24gbmdpbnggbm93IGNhbGxzIGFib3J0KCkgb25seSBvbiBncmFjZWZ1bGwKK3F1aXQgYW5kIGFjdGl2ZSAiZGVidWdfcG9pbnRzIiBkaXJlY3RpdmUuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPC9jaGFuZ2VzPgorCisKIDxjaGFuZ2VzIHZlcj0iMC4zLjE0IiBkYXRlPSIwNS4xMi4yMDA1Ij4KIAogPGNoYW5nZSB0eXBlPSJidWdmaXgiPgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmdpbnguaCBiL3NyYy9jb3JlL25naW54LmgKaW5kZXggZjk5Y2NhOC4uODBmZDQ5OCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmdpbnguaAorKysgYi9zcmMvY29yZS9uZ2lueC5oCkBAIC04LDcgKzgsNyBAQAogI2RlZmluZSBfTkdJTlhfSF9JTkNMVURFRF8KIAogCi0jZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4zLjE0IgorI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMy4xNSIKIAogI2RlZmluZSBOR0lOWF9WQVIgICAgICAgICAgIk5HSU5YIgogI2RlZmluZSBOR1hfT0xEUElEX0VYVCAgICAgIi5vbGRiaW4iCmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ3hfY29ubmVjdGlvbi5jIGIvc3JjL2NvcmUvbmd4X2Nvbm5lY3Rpb24uYwppbmRleCA4YThmODRhLi4wODIwZmVkIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfY29ubmVjdGlvbi5jCisrKyBiL3NyYy9jb3JlL25neF9jb25uZWN0aW9uLmMKQEAgLTcxOSw2ICs3MTksOSBAQAogICAgICAgICB8fCBlcnIgPT0gTkdYX0VQSVBFCiAjZW5kaWYKICAgICAgICAgfHwgZXJyID09IE5HWF9FTk9UQ09OTgorI2lmICEoTkdYX0NSSVRfRVRJTUVET1VUKQorICAgICAgICB8fCBlcnIgPT0gTkdYX0VUSU1FRE9VVAorI2VuZGlmCiAgICAgICAgIHx8IGVyciA9PSBOR1hfRUNPTk5SRUZVU0VECiAgICAgICAgIHx8IGVyciA9PSBOR1hfRUhPU1RVTlJFQUNIKQogICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfcGlwZS5jIGIvc3JjL2V2ZW50L25neF9ldmVudF9waXBlLmMKaW5kZXggMGM0OTlhOC4uZmZiNzkyOSAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L25neF9ldmVudF9waXBlLmMKKysrIGIvc3JjL2V2ZW50L25neF9ldmVudF9waXBlLmMKQEAgLTEzMSw5ICsxMzEsNyBAQAogICAgICAgICAgICAgICovCiAKICAgICAgICAgICAgIGlmIChwLT51cHN0cmVhbS0+cmVhZC0+YXZhaWxhYmxlID09IDAKLSAgICAgICAgICAgICAgICAmJiBwLT51cHN0cmVhbS0+cmVhZC0+cGVuZGluZ19lb2YKLSAgICAgICAgICAgICAgICAvKiBGcmVlQlNEIDUueC02LnggbWF5IGVycm9uZW91c2x5IHJlcG9ydCBFVElNRURPVVQgKi8KLSAgICAgICAgICAgICAgICAmJiBwLT51cHN0cmVhbS0+cmVhZC0+a3FfZXJybm8gIT0gTkdYX0VUSU1FRE9VVCkKKyAgICAgICAgICAgICAgICAmJiBwLT51cHN0cmVhbS0+cmVhZC0+cGVuZGluZ19lb2YpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcC0+dXBzdHJlYW0tPnJlYWQtPnJlYWR5ID0gMDsKICAgICAgICAgICAgICAgICBwLT51cHN0cmVhbS0+cmVhZC0+ZW9mID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3RhdGljX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zdGF0aWNfbW9kdWxlLmMKaW5kZXggZTlkMmIzOS4uZWQzNjBmYSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zdGF0aWNfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zdGF0aWNfbW9kdWxlLmMKQEAgLTI0NCwxMiArMjQ0LDEyIEBACiAgICAgICAgIHJldHVybiBOR1hfSFRUUF9JTlRFUk5BTF9TRVJWRVJfRVJST1I7CiAgICAgfQogCi0gICAgci0+YWxsb3dfcmFuZ2VzID0gMTsKLQotICAgIGlmIChyLT5oZWFkZXJfb25seSB8fCAoci0+bWFpbiAhPSByICYmIG5neF9maWxlX3NpemUoJmZpKSA9PSAwKSkgeworICAgIGlmIChyLT5tYWluICE9IHIgJiYgbmd4X2ZpbGVfc2l6ZSgmZmkpID09IDApIHsKICAgICAgICAgcmV0dXJuIG5neF9odHRwX3NlbmRfaGVhZGVyKHIpOwogICAgIH0KIAorICAgIHItPmFsbG93X3JhbmdlcyA9IDE7CisKICAgICAvKiB3ZSBuZWVkIHRvIGFsbG9jYXRlIGFsbCBiZWZvcmUgdGhlIGhlYWRlciB3b3VsZCBiZSBzZW50ICovCiAKICAgICBiID0gbmd4X3BjYWxsb2Moci0+cG9vbCwgc2l6ZW9mKG5neF9idWZfdCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCmluZGV4IDU2OWY2MmUuLmM2ZDZkNmYgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKQEAgLTE0NjAsNiArMTQ2MCwxMSBAQAogCiAgICAgaWYgKHJjID49IE5HWF9IVFRQX1NQRUNJQUxfUkVTUE9OU0UgfHwgcmMgPT0gTkdYX0hUVFBfTk9fQ09OVEVOVCkgewogCisgICAgICAgIGlmIChyYyA9PSBOR1hfSFRUUF9DTE9TRSkgeworICAgICAgICAgICAgbmd4X2h0dHBfY2xvc2VfcmVxdWVzdChyLCByYyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAoci0+bWFpbiA9PSByKSB7CiAgICAgICAgICAgICBpZiAoci0+Y29ubmVjdGlvbi0+cmVhZC0+dGltZXJfc2V0KSB7CiAgICAgICAgICAgICAgICAgbmd4X2RlbF90aW1lcihyLT5jb25uZWN0aW9uLT5yZWFkKTsKQEAgLTE1NTYsNiArMTU2MSw3IEBACiAgICAgICAgIG5neF9kZWxfdGltZXIoci0+Y29ubmVjdGlvbi0+d3JpdGUpOwogICAgIH0KIAorI2lmIDAKICAgICBpZiAoci0+Y29ubmVjdGlvbi0+cmVhZC0+cGVuZGluZ19lb2YpIHsKICNpZiAoTkdYX0hBVkVfS1FVRVVFKQogICAgICAgICBuZ3hfbG9nX2RlYnVnMChOR1hfTE9HX0RFQlVHX0hUVFAsIHItPmNvbm5lY3Rpb24tPmxvZywKQEAgLTE1NjUsNiArMTU3MSw3IEBACiAgICAgICAgIG5neF9odHRwX2Nsb3NlX3JlcXVlc3QociwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKIAogICAgIGlmICghbmd4X3Rlcm1pbmF0ZQogICAgICAgICAgJiYgIW5neF9leGl0aW5nCkBAIC0yMDQ2LDEwICsyMDUzLDcgQEAKICNpZiAoTkdYX0hBVkVfS1FVRVVFKQogCiAgICAgaWYgKG5neF9ldmVudF9mbGFncyAmIE5HWF9VU0VfS1FVRVVFX0VWRU5UKSB7Ci0gICAgICAgIGlmIChyZXYtPnBlbmRpbmdfZW9mCi0gICAgICAgICAgICAvKiBGcmVlQlNEIDUueC02LnggbWF5IGVycm9uZW91c2x5IHJlcG9ydCBFVElNRURPVVQgKi8KLSAgICAgICAgICAgICYmIHJldi0+a3FfZXJybm8gIT0gTkdYX0VUSU1FRE9VVCkKLSAgICAgICAgeworICAgICAgICBpZiAocmV2LT5wZW5kaW5nX2VvZikgewogICAgICAgICAgICAgYy0+bG9nLT5oYW5kbGVyID0gTlVMTDsKICAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19JTkZPLCBjLT5sb2csIHJldi0+a3FfZXJybm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXZlbnQoKSByZXBvcnRlZCB0aGF0IGNsaWVudCAlViBjbG9zZWQgIgpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5oIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5oCmluZGV4IDdiMGU3ZjAuLjllNmZkMTUgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaAorKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmgKQEAgLTY2LDcgKzY2LDEwIEBACiAKIC8qIE91ciBvd24gSFRUUCBjb2RlcyAqLwogCi0jZGVmaW5lIE5HWF9IVFRQX05HWF9DT0RFUyAgICAgICAgICAgICAgICAgTkdYX0hUVFBfVE9fSFRUUFMKKy8qIFRoZSBzcGVjaWFsIGNvZGUgdG8gY2xvc2UgY29ubmVjdGlvbiB3aXRob3V0IGFueSByZXNwb25zZSAqLworI2RlZmluZSBOR1hfSFRUUF9DTE9TRSAgICAgICAgICAgICAgICAgICAgIDQ0NAorCisjZGVmaW5lIE5HWF9IVFRQX09XTl9DT0RFUyAgICAgICAgICAgICAgICAgTkdYX0hUVFBfVE9fSFRUUFMKIAogLyoKICAqIFdlIHVzZSB0aGUgc3BlY2lhbCBjb2RlIGZvciB0aGUgcGxhaW4gSFRUUCByZXF1ZXN0cyB0aGF0IGFyZSBzZW50IHRvCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9zcGVjaWFsX3Jlc3BvbnNlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9zcGVjaWFsX3Jlc3BvbnNlLmMKaW5kZXggYjhkNjk4Zi4uZjRhZDFhNyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfc3BlY2lhbF9yZXNwb25zZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3NwZWNpYWxfcmVzcG9uc2UuYwpAQCAtMzI4LDE0ICszMjgsMTQgQEAKICAgICAgICAgLyogM1hYICovCiAgICAgICAgIGVyciA9IGVycm9yIC0gTkdYX0hUVFBfTU9WRURfUEVSTUFORU5UTFkgKyBOR1hfSFRUUF9MRVZFTF8yMDA7CiAKLSAgICB9IGVsc2UgaWYgKGVycm9yIDwgTkdYX0hUVFBfTkdYX0NPREVTKSB7CisgICAgfSBlbHNlIGlmIChlcnJvciA8IE5HWF9IVFRQX09XTl9DT0RFUykgewogICAgICAgICAvKiA0WFggKi8KICAgICAgICAgZXJyID0gZXJyb3IgLSBOR1hfSFRUUF9CQURfUkVRVUVTVCArIE5HWF9IVFRQX0xFVkVMXzIwMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgTkdYX0hUVFBfTEVWRUxfMzAwOwogCiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogNDlYLCA1WFggKi8KLSAgICAgICAgZXJyID0gZXJyb3IgLSBOR1hfSFRUUF9OR1hfQ09ERVMgKyBOR1hfSFRUUF9MRVZFTF8yMDAKKyAgICAgICAgZXJyID0gZXJyb3IgLSBOR1hfSFRUUF9PV05fQ09ERVMgKyBOR1hfSFRUUF9MRVZFTF8yMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBOR1hfSFRUUF9MRVZFTF8zMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBOR1hfSFRUUF9MRVZFTF80MDA7CiAgICAgICAgIHN3aXRjaCAoZXJyb3IpIHsKZGlmZiAtLWdpdCBhL3NyYy9pbWFwL25neF9pbWFwLmggYi9zcmMvaW1hcC9uZ3hfaW1hcC5oCmluZGV4IDFmM2MxMmUuLjkwMzc1YmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbWFwL25neF9pbWFwLmgKKysrIGIvc3JjL2ltYXAvbmd4X2ltYXAuaApAQCAtNDAsNiArNDAsOCBAQAogCiAgICAgbmd4X3VpbnRfdCAgICAgICAgICAgICAgcHJvdG9jb2w7CiAKKyAgICBuZ3hfZmxhZ190ICAgICAgICAgICAgICBzb19rZWVwYWxpdmU7CisKICAgICBuZ3hfc3RyX3QgICAgICAgICAgICAgICBwb3AzX2NhcGFiaWxpdHk7CiAgICAgbmd4X3N0cl90ICAgICAgICAgICAgICAgcG9wM19zdGFydHRsc19jYXBhYmlsaXR5OwogICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgIGltYXBfY2FwYWJpbGl0eTsKZGlmZiAtLWdpdCBhL3NyYy9pbWFwL25neF9pbWFwX2NvcmVfbW9kdWxlLmMgYi9zcmMvaW1hcC9uZ3hfaW1hcF9jb3JlX21vZHVsZS5jCmluZGV4IGU4MDVhODEuLjQ0NDg0YWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbWFwL25neF9pbWFwX2NvcmVfbW9kdWxlLmMKKysrIGIvc3JjL2ltYXAvbmd4X2ltYXBfY29yZV9tb2R1bGUuYwpAQCAtNzUsNiArNzUsMTMgQEAKICAgICAgIG9mZnNldG9mKG5neF9pbWFwX2NvcmVfc3J2X2NvbmZfdCwgaW1hcF9jbGllbnRfYnVmZmVyX3NpemUpLAogICAgICAgTlVMTCB9LAogCisgICAgeyBuZ3hfc3RyaW5nKCJzb19rZWVwYWxpdmUiKSwKKyAgICAgIE5HWF9JTUFQX01BSU5fQ09ORnxOR1hfSU1BUF9TUlZfQ09ORnxOR1hfQ09ORl9GTEFHLAorICAgICAgbmd4X2NvbmZfc2V0X2ZsYWdfc2xvdCwKKyAgICAgIE5HWF9JTUFQX1NSVl9DT05GX09GRlNFVCwKKyAgICAgIG9mZnNldG9mKG5neF9pbWFwX2NvcmVfc3J2X2NvbmZfdCwgc29fa2VlcGFsaXZlKSwKKyAgICAgIE5VTEwgfSwKKwogICAgIHsgbmd4X3N0cmluZygidGltZW91dCIpLAogICAgICAgTkdYX0lNQVBfTUFJTl9DT05GfE5HWF9JTUFQX1NSVl9DT05GfE5HWF9DT05GX1RBS0UxLAogICAgICAgbmd4X2NvbmZfc2V0X21zZWNfc2xvdCwKQEAgLTE1Niw4ICsxNjMsOSBAQAogICAgIH0KIAogICAgIGNzY2YtPmltYXBfY2xpZW50X2J1ZmZlcl9zaXplID0gTkdYX0NPTkZfVU5TRVRfU0laRTsKLSAgICBjc2NmLT50aW1lb3V0ID0gTkdYX0NPTkZfVU5TRVRfTVNFQzsKICAgICBjc2NmLT5wcm90b2NvbCA9IE5HWF9DT05GX1VOU0VUX1VJTlQ7CisgICAgY3NjZi0+dGltZW91dCA9IE5HWF9DT05GX1VOU0VUX01TRUM7CisgICAgY3NjZi0+c29fa2VlcGFsaXZlID0gTkdYX0NPTkZfVU5TRVQ7CiAKICAgICBpZiAobmd4X2FycmF5X2luaXQoJmNzY2YtPnBvcDNfY2FwYWJpbGl0aWVzLCBjZi0+cG9vbCwgNCwgc2l6ZW9mKG5neF9zdHJfdCkpCiAgICAgICAgICE9IE5HWF9PSykKQEAgLTE5Miw2ICsyMDAsNyBAQAogICAgIG5neF9jb25mX21lcmdlX21zZWNfdmFsdWUoY29uZi0+dGltZW91dCwgcHJldi0+dGltZW91dCwgNjAwMDApOwogICAgIG5neF9jb25mX21lcmdlX3Vuc2lnbmVkX3ZhbHVlKGNvbmYtPnByb3RvY29sLCBwcmV2LT5wcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HWF9JTUFQX0lNQVBfUFJPVE9DT0wpOworICAgIG5neF9jb25mX21lcmdlX3ZhbHVlKGNvbmYtPnNvX2tlZXBhbGl2ZSwgcHJldi0+c29fa2VlcGFsaXZlLCAwKTsKIAogCiAgICAgaWYgKGNvbmYtPnBvcDNfY2FwYWJpbGl0aWVzLm5lbHRzID09IDApIHsKZGlmZiAtLWdpdCBhL3NyYy9pbWFwL25neF9pbWFwX3Byb3h5X21vZHVsZS5jIGIvc3JjL2ltYXAvbmd4X2ltYXBfcHJveHlfbW9kdWxlLmMKaW5kZXggYmRjZTM2NC4uN2ViMWI5NCAxMDA2NDQKLS0tIGEvc3JjL2ltYXAvbmd4X2ltYXBfcHJveHlfbW9kdWxlLmMKKysrIGIvc3JjL2ltYXAvbmd4X2ltYXBfcHJveHlfbW9kdWxlLmMKQEAgLTkxLDEwICs5MSwyNyBAQAogdm9pZAogbmd4X2ltYXBfcHJveHlfaW5pdChuZ3hfaW1hcF9zZXNzaW9uX3QgKnMsIG5neF9wZWVyc190ICpwZWVycykKIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICBrZWVwYWxpdmU7CiAgICAgbmd4X2ludF90ICAgICAgICAgICAgICAgICAgcmM7CiAgICAgbmd4X2ltYXBfcHJveHlfY3R4X3QgICAgICAqcDsKICAgICBuZ3hfaW1hcF9jb3JlX3Nydl9jb25mX3QgICpjc2NmOwogCisgICAgcy0+Y29ubmVjdGlvbi0+bG9nLT5hY3Rpb24gPSAiY29ubmVjdGluZyB0byB1cHN0cmVhbSI7CisKKyAgICBjc2NmID0gbmd4X2ltYXBfZ2V0X21vZHVsZV9zcnZfY29uZihzLCBuZ3hfaW1hcF9jb3JlX21vZHVsZSk7CisKKyAgICBpZiAoY3NjZi0+c29fa2VlcGFsaXZlKSB7CisgICAgICAgIGtlZXBhbGl2ZSA9IDE7CisKKyAgICAgICAgaWYgKHNldHNvY2tvcHQocy0+Y29ubmVjdGlvbi0+ZmQsIFNPTF9TT0NLRVQsIFNPX0tFRVBBTElWRSwKKyAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikgJmtlZXBhbGl2ZSwgc2l6ZW9mKGludCkpCisgICAgICAgICAgICAgICAgPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgcy0+Y29ubmVjdGlvbi0+bG9nLCBuZ3hfc29ja2V0X2Vycm5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0c29ja29wdChTT19LRUVQQUxJVkUpIGZhaWxlZCIpOworICAgICAgICB9CisgICAgfQorCiAgICAgcCA9IG5neF9wY2FsbG9jKHMtPmNvbm5lY3Rpb24tPnBvb2wsIHNpemVvZihuZ3hfaW1hcF9wcm94eV9jdHhfdCkpOwogICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgbmd4X2ltYXBfc2Vzc2lvbl9pbnRlcm5hbF9zZXJ2ZXJfZXJyb3Iocyk7CkBAIC0xMDcsOCArMTI0LDYgQEAKICAgICBwLT51cHN0cmVhbS5sb2cgPSBzLT5jb25uZWN0aW9uLT5sb2c7CiAgICAgcC0+dXBzdHJlYW0ubG9nX2Vycm9yID0gTkdYX0VSUk9SX0VSUjsKIAotICAgIHMtPmNvbm5lY3Rpb24tPmxvZy0+YWN0aW9uID0gImluIHVwc3RyZWFtIGF1dGggc3RhdGUiOwotCiAgICAgcmMgPSBuZ3hfZXZlbnRfY29ubmVjdF9wZWVyKCZwLT51cHN0cmVhbSk7CiAKICAgICBpZiAocmMgPT0gTkdYX0VSUk9SIHx8IHJjID09IE5HWF9CVVNZIHx8IHJjID09IE5HWF9ERUNMSU5FRCkgewpAQCAtMTE2LDcgKzEzMSw2IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjc2NmID0gbmd4X2ltYXBfZ2V0X21vZHVsZV9zcnZfY29uZihzLCBuZ3hfaW1hcF9jb3JlX21vZHVsZSk7CiAgICAgbmd4X2FkZF90aW1lcihwLT51cHN0cmVhbS5jb25uZWN0aW9uLT5yZWFkLCBjc2NmLT50aW1lb3V0KTsKIAogICAgIHAtPnVwc3RyZWFtLmNvbm5lY3Rpb24tPmRhdGEgPSBzOwpAQCAtMjA1LDYgKzIxOSw4IEBACiAgICAgICAgIG5neF9sb2dfZGVidWcwKE5HWF9MT0dfREVCVUdfSU1BUCwgcmV2LT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbWFwIHByb3h5IHNlbmQgbG9naW4iKTsKIAorICAgICAgICBzLT5jb25uZWN0aW9uLT5sb2ctPmFjdGlvbiA9ICJzZW5kaW5nIExPR0lOIGNvbW1hbmQgdG8gdXBzdHJlYW0iOworCiAgICAgICAgIGxpbmUubGVuID0gcy0+dGFnLmxlbiArIHNpemVvZigiTE9HSU4gIikgLSAxCiAgICAgICAgICAgICAgICAgICAgKyAxICsgTkdYX1NJWkVfVF9MRU4gKyAxICsgMjsKICAgICAgICAgbGluZS5kYXRhID0gbmd4X3BhbGxvYyhjLT5wb29sLCBsaW5lLmxlbik7CkBAIC0yMjMsNiArMjM5LDggQEAKICAgICBjYXNlIG5neF9pbWFwX2xvZ2luOgogICAgICAgICBuZ3hfbG9nX2RlYnVnMChOR1hfTE9HX0RFQlVHX0lNQVAsIHJldi0+bG9nLCAwLCAiaW1hcCBwcm94eSBzZW5kIHVzZXIiKTsKIAorICAgICAgICBzLT5jb25uZWN0aW9uLT5sb2ctPmFjdGlvbiA9ICJzZW5kaW5nIHVzZXIgbmFtZSB0byB1cHN0cmVhbSI7CisKICAgICAgICAgbGluZS5sZW4gPSBzLT5sb2dpbi5sZW4gKyAxICsgMSArIE5HWF9TSVpFX1RfTEVOICsgMSArIDI7CiAgICAgICAgIGxpbmUuZGF0YSA9IG5neF9wYWxsb2MoYy0+cG9vbCwgbGluZS5sZW4pOwogICAgICAgICBpZiAobGluZS5kYXRhID09IE5VTEwpIHsKQEAgLTI0MSw2ICsyNTksOCBAQAogICAgICAgICBuZ3hfbG9nX2RlYnVnMChOR1hfTE9HX0RFQlVHX0lNQVAsIHJldi0+bG9nLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAiaW1hcCBwcm94eSBzZW5kIHBhc3N3ZCIpOwogCisgICAgICAgIHMtPmNvbm5lY3Rpb24tPmxvZy0+YWN0aW9uID0gInNlbmRpbmcgcGFzc3dvcmQgdG8gdXBzdHJlYW0iOworCiAgICAgICAgIGxpbmUubGVuID0gcy0+cGFzc3dkLmxlbiArIDI7CiAgICAgICAgIGxpbmUuZGF0YSA9IG5neF9wYWxsb2MoYy0+cG9vbCwgbGluZS5sZW4pOwogICAgICAgICBpZiAobGluZS5kYXRhID09IE5VTEwpIHsKQEAgLTM0MCw2ICszNjAsOCBAQAogICAgIGNhc2Ugbmd4X3BvcDNfc3RhcnQ6CiAgICAgICAgIG5neF9sb2dfZGVidWcwKE5HWF9MT0dfREVCVUdfSU1BUCwgcmV2LT5sb2csIDAsICJpbWFwIHByb3h5IHNlbmQgdXNlciIpOwogCisgICAgICAgIHMtPmNvbm5lY3Rpb24tPmxvZy0+YWN0aW9uID0gInNlbmRpbmcgdXNlciBuYW1lIHRvIHVwc3RyZWFtIjsKKwogICAgICAgICBsaW5lLmxlbiA9IHNpemVvZigiVVNFUiAiKSAgLSAxICsgcy0+bG9naW4ubGVuICsgMjsKICAgICAgICAgbGluZS5kYXRhID0gbmd4X3BhbGxvYyhjLT5wb29sLCBsaW5lLmxlbik7CiAgICAgICAgIGlmIChsaW5lLmRhdGEgPT0gTlVMTCkgewpAQCAtMzU3LDYgKzM3OSw4IEBACiAgICAgY2FzZSBuZ3hfcG9wM191c2VyOgogICAgICAgICBuZ3hfbG9nX2RlYnVnMChOR1hfTE9HX0RFQlVHX0lNQVAsIHJldi0+bG9nLCAwLCAiaW1hcCBwcm94eSBzZW5kIHBhc3MiKTsKIAorICAgICAgICBzLT5jb25uZWN0aW9uLT5sb2ctPmFjdGlvbiA9ICJzZW5kaW5nIHBhc3N3b3JkIHRvIHVwc3RyZWFtIjsKKwogICAgICAgICBsaW5lLmxlbiA9IHNpemVvZigiUEFTUyAiKSAgLSAxICsgcy0+cGFzc3dkLmxlbiArIDI7CiAgICAgICAgIGxpbmUuZGF0YSA9IG5neF9wYWxsb2MoYy0+cG9vbCwgbGluZS5sZW4pOwogICAgICAgICBpZiAobGluZS5kYXRhID09IE5VTEwpIHsKQEAgLTQzMSw2ICs0NTUsOCBAQAogICAgIHNzaXplX3QgICAgIG47CiAgICAgbmd4X2J1Zl90ICAqYjsKIAorICAgIHMtPmNvbm5lY3Rpb24tPmxvZy0+YWN0aW9uID0gInJlYWRpbmcgcmVzcG9uc2UgZnJvbSB1cHN0cmVhbSI7CisKICAgICBiID0gcy0+cHJveHktPmJ1ZmZlcjsKIAogICAgIG4gPSBzLT5wcm94eS0+dXBzdHJlYW0uY29ubmVjdGlvbi0+cmVjdihzLT5wcm94eS0+dXBzdHJlYW0uY29ubmVjdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9mcmVlYnNkX3NlbmRmaWxlX2NoYWluLmMgYi9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9zZW5kZmlsZV9jaGFpbi5jCmluZGV4IDY2MmIzMzQuLjdhZTU5NDggMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9mcmVlYnNkX3NlbmRmaWxlX2NoYWluLmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X2ZyZWVic2Rfc2VuZGZpbGVfY2hhaW4uYwpAQCAtNTYsMTEgKzU2LDcgQEAKIAogI2lmIChOR1hfSEFWRV9LUVVFVUUpCiAKLSAgICBpZiAoKG5neF9ldmVudF9mbGFncyAmIE5HWF9VU0VfS1FVRVVFX0VWRU5UKQotICAgICAgICAmJiB3ZXYtPnBlbmRpbmdfZW9mCi0gICAgICAgICAgIC8qIEZyZWVCU0QgNS54LTYueCBtYXkgZXJyb25lb3VzbHkgcmVwb3J0IEVUSU1FRE9VVCAqLwotICAgICAgICAmJiB3ZXYtPmtxX2Vycm5vICE9IE5HWF9FVElNRURPVVQpCi0gICAgeworICAgIGlmICgobmd4X2V2ZW50X2ZsYWdzICYgTkdYX1VTRV9LUVVFVUVfRVZFTlQpICYmIHdldi0+cGVuZGluZ19lb2YpIHsKICAgICAgICAgKHZvaWQpIG5neF9jb25uZWN0aW9uX2Vycm9yKGMsIHdldi0+a3FfZXJybm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtldmVudCgpIHJlcG9ydGVkIGFib3V0IGFuIGNsb3NlZCBjb25uZWN0aW9uIik7CiAgICAgICAgIHdldi0+ZXJyb3IgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3Byb2Nlc3NfY3ljbGUuYyBiL3NyYy9vcy91bml4L25neF9wcm9jZXNzX2N5Y2xlLmMKaW5kZXggN2FkY2M2ZS4uMTRiYmU4MCAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3Byb2Nlc3NfY3ljbGUuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfcHJvY2Vzc19jeWNsZS5jCkBAIC05MzgsMjMgKzkzOCwyNSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgYyA9IGN5Y2xlLT5jb25uZWN0aW9uczsKLSAgICBmb3IgKGkgPSAwOyBpIDwgY3ljbGUtPmNvbm5lY3Rpb25fbjsgaSsrKSB7Ci0gICAgICAgIGlmIChjW2ldLmZkICE9IC0xCi0gICAgICAgICAgICAmJiBjW2ldLnJlYWQKLSAgICAgICAgICAgICYmICFjW2ldLnJlYWQtPmFjY2VwdAotICAgICAgICAgICAgJiYgIWNbaV0ucmVhZC0+Y2hhbm5lbCkKLSAgICAgICAgewotICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCBjeWNsZS0+bG9nLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlbiBzb2NrZXQgIyVkIGxlZnQgaW4gJXVpIGNvbm5lY3Rpb24sICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImFib3J0aW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY1tpXS5mZCwgaSk7Ci0gICAgICAgICAgICBuZ3hfYWJvcnQoKTsKKyAgICBpZiAobmd4X3F1aXQpIHsKKyAgICAgICAgYyA9IGN5Y2xlLT5jb25uZWN0aW9uczsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGN5Y2xlLT5jb25uZWN0aW9uX247IGkrKykgeworICAgICAgICAgICAgaWYgKGNbaV0uZmQgIT0gLTEKKyAgICAgICAgICAgICAgICAmJiBjW2ldLnJlYWQKKyAgICAgICAgICAgICAgICAmJiAhY1tpXS5yZWFkLT5hY2NlcHQKKyAgICAgICAgICAgICAgICAmJiAhY1tpXS5yZWFkLT5jaGFubmVsKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgY3ljbGUtPmxvZywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVuIHNvY2tldCAjJWQgbGVmdCBpbiAldWkgY29ubmVjdGlvbiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFib3J0aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbaV0uZmQsIGkpOworICAgICAgICAgICAgICAgIG5neF9kZWJ1Z19wb2ludCgpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQogCi0gICAgaWYgKG5neF9kZWJ1Z19xdWl0KSB7Ci0gICAgICAgIG5neF9kZWJ1Z19wb2ludCgpOworICAgICAgICBpZiAobmd4X2RlYnVnX3F1aXQpIHsKKyAgICAgICAgICAgIG5neF9kZWJ1Z19wb2ludCgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9yZWFkdl9jaGFpbi5jIGIvc3JjL29zL3VuaXgvbmd4X3JlYWR2X2NoYWluLmMKaW5kZXggMGU5OWNiNC4uYjU1ZTJmMiAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3JlYWR2X2NoYWluLmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X3JlYWR2X2NoYWluLmMKQEAgLTMyLDI2ICszMiwyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICByZXYtPnBlbmRpbmdfZW9mLCByZXYtPmF2YWlsYWJsZSwgcmV2LT5rcV9lcnJubyk7CiAKICAgICAgICAgaWYgKHJldi0+YXZhaWxhYmxlID09IDApIHsKLQotICAgICAgICAgICAgaWYgKCFyZXYtPnBlbmRpbmdfZW9mKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9BR0FJTjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogRnJlZUJTRCA1LngtNi54IG1heSBlcnJvbmVvdXNseSByZXBvcnQgRVRJTUVET1VUICovCi0gICAgICAgICAgICBpZiAocmV2LT5rcV9lcnJubyAhPSBOR1hfRVRJTUVET1VUKSB7Ci0KKyAgICAgICAgICAgIGlmIChyZXYtPnBlbmRpbmdfZW9mKSB7CiAgICAgICAgICAgICAgICAgcmV2LT5yZWFkeSA9IDA7CiAgICAgICAgICAgICAgICAgcmV2LT5lb2YgPSAxOwogCisgICAgICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0lORk8sIGMtPmxvZywgcmV2LT5rcV9lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXZlbnQoKSByZXBvcnRlZCBhYm91dCBhbiBjbG9zZWQgY29ubmVjdGlvbiIpOworCiAgICAgICAgICAgICAgICAgaWYgKHJldi0+a3FfZXJybm8pIHsKICAgICAgICAgICAgICAgICAgICAgcmV2LT5lcnJvciA9IDE7CiAgICAgICAgICAgICAgICAgICAgIG5neF9zZXRfc29ja2V0X2Vycm5vKHJldi0+a3FfZXJybm8pOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZ3hfY29ubmVjdGlvbl9lcnJvcihjLCByZXYtPmtxX2Vycm5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXZlbnQoKSByZXBvcnRlZCBhYm91dCBhbiBjbG9zZWQgY29ubmVjdGlvbiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTkdYX0VSUk9SOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBOR1hfQUdBSU47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDAsOCArOTcsOCBAQAogICAgICAgICAgICAgICAgIHJldi0+YXZhaWxhYmxlIC09IG47CiAKICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAqIHJldi0+YXZhaWxhYmxlIGNhbiBiZSBuZWdhdGl2ZSBoZXJlIGJlY2F1c2Ugc29tZSBhZGRpdGlvbmFsCi0gICAgICAgICAgICAgICAgICogYnl0ZXMgY2FuIGJlIHJlY2VpdmVkIGJldHdlZW4ga2V2ZW50KCkgYW5kIHJlY3YoKQorICAgICAgICAgICAgICAgICAqIHJldi0+YXZhaWxhYmxlIG1heSBiZSBuZWdhdGl2ZSBoZXJlIGJlY2F1c2Ugc29tZSBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICogYnl0ZXMgbWF5IGJlIHJlY2VpdmVkIGJldHdlZW4ga2V2ZW50KCkgYW5kIHJlY3YoKQogICAgICAgICAgICAgICAgICAqLwogCiAgICAgICAgICAgICAgICAgaWYgKHJldi0+YXZhaWxhYmxlIDw9IDApIHsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9yZWN2LmMgYi9zcmMvb3MvdW5peC9uZ3hfcmVjdi5jCmluZGV4IGE5MDY0MzAuLjBkMzg3MjkgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9yZWN2LmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X3JlY3YuYwpAQCAtMjUsMTQgKzI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcmV2LT5wZW5kaW5nX2VvZiwgcmV2LT5hdmFpbGFibGUsIHJldi0+a3FfZXJybm8pOwogCiAgICAgICAgIGlmIChyZXYtPmF2YWlsYWJsZSA9PSAwKSB7Ci0KLSAgICAgICAgICAgIGlmICghcmV2LT5wZW5kaW5nX2VvZikgewotICAgICAgICAgICAgICAgIHJldHVybiBOR1hfQUdBSU47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIEZyZWVCU0QgNS54LTYueCBtYXkgZXJyb25lb3VzbHkgcmVwb3J0IEVUSU1FRE9VVCAqLwotICAgICAgICAgICAgaWYgKHJldi0+a3FfZXJybm8gIT0gTkdYX0VUSU1FRE9VVCkgewotCisgICAgICAgICAgICBpZiAocmV2LT5wZW5kaW5nX2VvZikgewogICAgICAgICAgICAgICAgIHJldi0+cmVhZHkgPSAwOwogICAgICAgICAgICAgICAgIHJldi0+ZW9mID0gMTsKIApAQCAtNDUsNiArMzgsOSBAQAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBOR1hfQUdBSU47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC02MSw3ICs1Nyw3IEBACiAKICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAqIHJldi0+YXZhaWxhYmxlIG1heSBiZSBuZWdhdGl2ZSBoZXJlIGJlY2F1c2Ugc29tZSBhZGRpdGlvbmFsCi0gICAgICAgICAgICAgICAgICogYnl0ZXMgY2FuIGJlIHJlY2VpdmVkIGJldHdlZW4ga2V2ZW50KCkgYW5kIHJlY3YoKQorICAgICAgICAgICAgICAgICAqIGJ5dGVzIG1heSBiZSByZWNlaXZlZCBiZXR3ZWVuIGtldmVudCgpIGFuZCByZWN2KCkKICAgICAgICAgICAgICAgICAgKi8KIAogICAgICAgICAgICAgICAgIGlmIChyZXYtPmF2YWlsYWJsZSA8PSAwKSB7CmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfc2VuZC5jIGIvc3JjL29zL3VuaXgvbmd4X3NlbmQuYwppbmRleCAwYzNmOTU5Li4xNjdmMmVjIDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfc2VuZC5jCisrKyBiL3NyYy9vcy91bml4L25neF9zZW5kLmMKQEAgLTE5LDExICsxOSw3IEBACiAKICNpZiAoTkdYX0hBVkVfS1FVRVVFKQogCi0gICAgaWYgKChuZ3hfZXZlbnRfZmxhZ3MgJiBOR1hfVVNFX0tRVUVVRV9FVkVOVCkKLSAgICAgICAgJiYgd2V2LT5wZW5kaW5nX2VvZgotICAgICAgICAgICAvKiBGcmVlQlNEIDUueC02LnggbWF5IGVycm9uZW91c2x5IHJlcG9ydCBFVElNRURPVVQgKi8KLSAgICAgICAgJiYgd2V2LT5rcV9lcnJubyAhPSBOR1hfRVRJTUVET1VUKQotICAgIHsKKyAgICBpZiAoKG5neF9ldmVudF9mbGFncyAmIE5HWF9VU0VfS1FVRVVFX0VWRU5UKSAmJiB3ZXYtPnBlbmRpbmdfZW9mKSB7CiAgICAgICAgICh2b2lkKSBuZ3hfY29ubmVjdGlvbl9lcnJvcihjLCB3ZXYtPmtxX2Vycm5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXZlbnQoKSByZXBvcnRlZCBhYm91dCBhbiBjbG9zZWQgY29ubmVjdGlvbiIpOwogICAgICAgICB3ZXYtPmVycm9yID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF93cml0ZXZfY2hhaW4uYyBiL3NyYy9vcy91bml4L25neF93cml0ZXZfY2hhaW4uYwppbmRleCAwOWUwOGUxLi5mOTVjMmNhIDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfd3JpdGV2X2NoYWluLmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X3dyaXRldl9jaGFpbi5jCkBAIC0zMywxMSArMzMsNyBAQAogCiAjaWYgKE5HWF9IQVZFX0tRVUVVRSkKIAotICAgIGlmICgobmd4X2V2ZW50X2ZsYWdzICYgTkdYX1VTRV9LUVVFVUVfRVZFTlQpCi0gICAgICAgICYmIHdldi0+cGVuZGluZ19lb2YKLSAgICAgICAgICAgLyogRnJlZUJTRCA1LngtNi54IG1heSBlcnJvbmVvdXNseSByZXBvcnQgRVRJTUVET1VUICovCi0gICAgICAgICYmIHdldi0+a3FfZXJybm8gIT0gTkdYX0VUSU1FRE9VVCkKLSAgICB7CisgICAgaWYgKChuZ3hfZXZlbnRfZmxhZ3MgJiBOR1hfVVNFX0tRVUVVRV9FVkVOVCkgJiYgd2V2LT5wZW5kaW5nX2VvZikgewogICAgICAgICAodm9pZCkgbmd4X2Nvbm5lY3Rpb25fZXJyb3IoYywgd2V2LT5rcV9lcnJubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V2ZW50KCkgcmVwb3J0ZWQgYWJvdXQgYW4gY2xvc2VkIGNvbm5lY3Rpb24iKTsKICAgICAgICAgd2V2LT5lcnJvciA9IDE7Cg==