[PATCH v2] exceptions: Fix AArch64 non-incyg signal handling
Máté Dimand <[email protected]> Wed, 15 Jul 2026 16:22:03 +0300
| Newsgroups | gmane.os.cygwin.patches |
|---|---|
| Message-ID | <[email protected]> |
--------------zVO4N0Z2hWUUVvgrmrNt9EFk Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi everyone, I have resolved the concerns raised by Jon Turney about nested signal handling in the previous version by taking a different approach. Best regards, Máté Dimand --------------zVO4N0Z2hWUUVvgrmrNt9EFk Content-Type: text/plain; charset=UTF-8; name="0001-exceptions-Fix-AArch64-non-incyg-signal-handling.patch" Content-Disposition: attachment; filename*0="0001-exceptions-Fix-AArch64-non-incyg-signal-handling.patch" Content-Transfer-Encoding: base64 RnJvbSA3NmQ5NTc2NGI4YjBkY2E3MDJiNjliNTU3M2IwNWFiYjVkNjRjYTRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRlIERpbWFuZCA8bWF0ZS5kaW1hbmRAYXJtLmNvbT4KRGF0 ZTogRnJpLCAxMCBKdWwgMjAyNiAxMToxNjo1MiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjJdIGV4 Y2VwdGlvbnM6IEZpeCBBQXJjaDY0IG5vbi1pbmN5ZyBzaWduYWwgaGFuZGxpbmcKClRoaXMgcGF0 Y2ggZml4ZXMgY3Jhc2hlcyB0aGF0IG9jY3VyIHdoZW4gYSBzaWduYWwgaW50ZXJydXB0cyBzaWdm ZSBvcgphbnkgbm9uLWN5Z3dpbiBmdW5jdGlvbiB0aGF0IGRvZXMgbm90IHByZXNlcnZlIHRoZSBM UiByZWdpc3RlciBpbiBpdHMKcHJvbG9ndWUvZXBpbG9ndWUuIFRoaXMgY3Jhc2ggd2FzIGRpc2Nv dmVyZWQgdGhyb3VnaCB0aGUgInJ1bi1oZXJlZG9jIgp0ZXN0Y2FzZSBpbiBiYXNoJ3MgdGVzdHN1 aXRlLCB3aGljaCBjYXVzZWQgYmFzaCB0byBjYWxsICJyZWFkIgpmcmVxdWVudGx5LCBsZWFkaW5n IHRvIGEgaGlnaCBjaGFuY2Ugb2YgYSBzaWduYWwgaW50ZXJydXB0aW5nIHNpZ2ZlLgoKVGhlIG9y aWdpbmFsICJzaWdkZWxheWVkIiBmdW5jdGlvbiBpbiBnZW5kZWYgY2xvYmJlcmVkIHRoZSBMUiBy ZWdpc3Rlcgp0byByZXR1cm4gdG8gdGhlIGluc3RydWN0aW9uIHdoZXJlIHRoZSB0aHJlYWQgd2Fz IGludGVycnVwdGVkLiBQaWNraW5nCmFueSBvdGhlciByZWdpc3RlciBmb3IgYnJhbmNoaW5nIGJh Y2sgd291bGQgYWxzbyBjbG9iYmVyIHNhaWQgcmVnaXN0ZXIuCkxlYWYgZnVuY3Rpb25zIGFyZSBu b3QgZ3VhcmFudGVlZCB0byBiZSBjb21waWxlZCB3aXRoIExSIGJlaW5nIHByZXNlcnZlZApvbiB0 aGUgc3RhY2suIFRoZSBzb2x1dGlvbiBpcyB0byB1c2UgUnRsUmVzdG9yZUNvbnRleHQgdG8gcmVz dG9yZSBhbGwKcmVnaXN0ZXJzIHdpdGhvdXQgbmVlZGluZyB0byBzYWNyaWZpY2UgYW55LgoKVGhl IHBhdGNoIHJlcGxhY2VzIHNpZ2RlbGF5ZWQgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGNv bnNpc3RzIG9mCmJvdGggQyBhbmQgYXNzZW1ibHkgZnVuY3Rpb25zLiBUaGUgInNpZ2RlbGF5ZWQi IGFzc2VtYmx5IGZ1bmN0aW9uIHdhcwpyZXBsYWNlZCB3aXRoIGEgc2ltcGxlIHdyYXBwZXIgZnVu Y3Rpb24gdGhhdCB3YXMga2VwdCBhcyBhc3NlbWJseSBjb2RlCnRvIGd1YXJhbnRlZSB0b3RhbCBj b250cm9sIG9mIHRoZSByZWdpc3RlcnMgdGhhdCBnZXQgY2xvYmJlcmVkIHByaW9yIHRvCmNhcHR1 cmluZyB0aGUgY29udGV4dC4gVGhpcyBmdW5jdGlvbiBjYWxscyBSdGxDYXB0dXJlQ29udGV4dCBm aXJzdCwgd2l0aAp0aGUgY29udGV4dCBiZWluZyBzdG9yZWQgb24gdGhlIHN0YWNrLiBUaGUgY29u dGV4dCBpcyB0aGVuIHBhc3NlZCB0byBhCkMrKyBmdW5jdGlvbiB3aGljaCBmaXhlcyB0aGUgY2xv YmJlcmVkIHJlZ2lzdGVycy4gRmluYWxseSwgdGhpcyBjYWxscyBhCkMrKyBpbXBsZW1lbnRhdGlv biBvZiB0aGUgb3JpZ2luYWwgeDY0L0FBcmNoNjQgYXNzZW1ibHkgdmVyc2lvbiBvZgpzaWdkZWxh eWVkLiBUaGVzZSBmdW5jdGlvbnMgd2VyZSBub3Qgd3JpdHRlbiBpbiBhc3NlbWJseSBmb3IgdGhl IHNha2Ugb2YKcmVhZGFiaWxpdHkuIE9uY2UgaXQgY29tcGxldGVkIGhhbmRsaW5nIHRoZSBzaWdu YWxzLCBpdCB1c2VzClJ0bFJlc3RvcmVDb250ZXh0IHRvIGp1bXAgYmFjay4KClNpZ25lZC1vZmYt Ynk6IE1hdGUgRGltYW5kIDxtYXRlLmRpbWFuZEBhcm0uY29tPgotLS0KIHdpbnN1cC9jeWd3aW4v ZXhjZXB0aW9ucy5jYyAgICAgICAgICAgfCAgNjEgKysrKysrKysrKwogd2luc3VwL2N5Z3dpbi9s b2NhbF9pbmNsdWRlcy9jeWd0bHMuaCB8ICAgNSArCiB3aW5zdXAvY3lnd2luL3NjcmlwdHMvZ2Vu ZGVmICAgICAgICAgIHwgMTY4ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNo YW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDE1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS93 aW5zdXAvY3lnd2luL2V4Y2VwdGlvbnMuY2MgYi93aW5zdXAvY3lnd2luL2V4Y2VwdGlvbnMuY2MK aW5kZXggMWUxMjliMzE5Li5kODljZjJjMDYgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZXhj ZXB0aW9ucy5jYworKysgYi93aW5zdXAvY3lnd2luL2V4Y2VwdGlvbnMuY2MKQEAgLTk0Nyw2ICs5 NDcsNjcgQEAgc2luZ2xlc3RlcF9oYW5kbGVyIChFWENFUFRJT05fUE9JTlRFUlMgKmVwKQogfQog I2VuZGlmCiAKKyNpZmRlZiBfX2FhcmNoNjRfXworLyogVGhpcyBmdW5jdGlvbiB1c2VzIFJ0bFJl c3RvcmVDb250ZXh0IHRvIGVuc3VyZSB0aGF0IExSIGRvZXMgbm90IGdldAorICAgY2xvYmJlcmVk LiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IHJldHVybiwgYW5kIHRoZSBzdGFj aworICAgY29udGVudHMgY3JlYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBsZWZ0IHVuLXBvcHBl ZC4gVGhpcyBzaG91bGQKKyAgIG5vdCBiZSBhIHByb2JsZW0sIHNpbmNlIHRoZSBjb250ZXh0IHJl c3RvcmF0aW9uIGFsc28gcmVzdG9yZXMgU1AuICovCit2b2lkCitfY3lndGxzOjpzaWdkZWxheWVk X2ltcGwoUENPTlRFWFQgY3R4KQoreworICBpbnQgYmFja3VwX2Vycm5vID0gc2F2ZWRfZXJybm87 CisKKyAgY2FsbF9zaWduYWxfaGFuZGxlcigpOworCisgIGxvY2soKTsKKworICBpZihiYWNrdXBf ZXJybm8gPj0gMCkKKyAgeworICAgICplcnJub19hZGRyID0gYmFja3VwX2Vycm5vOworICB9CisK KyAgY3R4LT5QYyA9IHBvcCgpOworCisgIC8qIEF0b21pY2FsbHkgY2xlYXIgdGhlIHJldHVybiBh ZGRyZXNzLiAqLworICBJbnRlcmxvY2tlZEV4Y2hhbmdlNjQgKChMT05HNjQqKXN0YWNrcHRyLCAw KTsKKworICBpbmN5ZyA9IDA7CisgIHVubG9jaygpOworCisgIFJ0bFJlc3RvcmVDb250ZXh0KGN0 eCwgTlVMTCk7CisKKyAgLyogSWYgd2UgZ290IGhlcmUsIHNvbWV0aGluZyB3YXMgd3JvbmcuICov CisgIGFwaV9mYXRhbCAoIkZhaWxlZCB0byByZXN0b3JlIGNvbnRleHQgaW4gc2lnZGVsYXllZF9p bXBsIik7Cit9CisKKy8qIFRoaXMgZnVuY3Rpb24gcmVzdG9yZXMgdGhlIGNvbnRleHQncyBjbG9i YmVyZWQgcmVnaXN0ZXJzIGFuZAorICAgY2FsbHMgdGhlIGFjdHVhbCBzaWdkZWxheWVkIGltcGxl bWVudGF0aW9uLiAqLworZXh0ZXJuICJDIiB2b2lkCitzaWdkZWxheWVkX2luaXQoUENPTlRFWFQg Y3R4KQoreworICAvKiBSZXRyaWV2aW5nIHRoZSByZWdpc3RlcnMgc3RvcmVkIG9uIHN0YWNrIGJ5 IHNpZ2RlbGF5ZWQuICovCisgIGNvbnN0IERXT1JENjQqIHNwID0gKChEV09SRDY0KiljdHgtPlNw KTsKKyAgY29uc3QgRFdPUkQ2NCBzdGFja194MTYgPSBzcFswXTsKKyAgY29uc3QgRFdPUkQ2NCBz dGFja194MTcgPSBzcFsxXTsKKyAgY29uc3QgRFdPUkQ2NCBzdGFja194MCA9IHNwWzJdOworICBj b25zdCBEV09SRDY0IHN0YWNrX2xyID0gc3BbM107CisKKyAgY3R4LT5YMTYgPSBzdGFja194MTY7 IC8vIHgxNiBjbG9iYmVyZWQgYnkgUnRsQ2FwdHVyZUNvbnRleHQKKyAgY3R4LT5YMTcgPSBzdGFj a194MTc7CisgIGN0eC0+WDAgPSBzdGFja194MDsgLy8geDAgaXNuJ3Qgc2V0IGJ5IFJ0bENhcHR1 cmVDb250ZXh0CisgIGN0eC0+THIgPSBzdGFja19scjsgLy8gTFIgaXMgemVyb2VkIG91dCBieSBS dGxDYXB0dXJlQ29udGV4dAorCisgIC8qICJzaWdkZWxheWVkIiBhbGxvY2F0ZXMgMHgzOTAgYnl0 ZXMgZm9yIHRoZSBjb250ZXh0LCBtYXRjaGluZyB0aGUKKyAgICAgc3RydWN0J3Mgc2l6ZS4gVGhp cyBzaG91bGQgY2F1c2UgYW4gZXJyb3IgaWYgdGhlIHNpemUgb2YgdGhlIHN0cnVjdAorICAgICBo YXBwZW5lZCB0byBjaGFuZ2UuICovCisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENPTlRFWFQpID09 IDB4MzkwKTsKKworICBjdHgtPlNwICs9IHNpemVvZihDT05URVhUKSArIDMyOyAvLyB1bmRvIHN0 YWNrIHB1c2hlcyBmcm9tIHNpZ2RlbGF5ZWQKKworICBfbXlfdGxzLnNpZ2RlbGF5ZWRfaW1wbChj dHgpOworfQorI2VuZGlmCisKIGJvb2wKIF9jeWd0bHM6OmludGVycnVwdF9ub3cgKENPTlRFWFQg KmN4LCBzaWdpbmZvX3QmIHNpLCB2b2lkICpoYW5kbGVyLAogCQkJc3RydWN0IHNpZ2FjdGlvbiYg c2lnYSkKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vbG9jYWxfaW5jbHVkZXMvY3lndGxzLmgg Yi93aW5zdXAvY3lnd2luL2xvY2FsX2luY2x1ZGVzL2N5Z3Rscy5oCmluZGV4IDBiNTI1NTQ5NS4u YTg3NDI2ODI4IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2xvY2FsX2luY2x1ZGVzL2N5Z3Rs cy5oCisrKyBiL3dpbnN1cC9jeWd3aW4vbG9jYWxfaW5jbHVkZXMvY3lndGxzLmgKQEAgLTIyOCw2 ICsyMjgsMTEgQEAgcHVibGljOiAvKiBEbyBOT1QgcmVtb3ZlIHRoaXMgcHVibGljOiBsaW5lLCBp dCdzIGEgbWFya2VyIGZvciBnZW50bHNfb2Zmc2V0cy4gKi8KICAgewogICAgIHJldHVybiBpbml0 aWFsaXplZCA9PSBDWUdUTFNfSU5JVElBTElaRUQ7CiAgIH0KKyAgCisjaWZkZWYgX19hYXJjaDY0 X18KKyAgdm9pZCBzaWdkZWxheWVkX2ltcGwoUENPTlRFWFQgY3R4KTsKKyNlbmRpZgorCiAgIGJv b2wgaW50ZXJydXB0X25vdyAoQ09OVEVYVCAqLCBzaWdpbmZvX3QmLCB2b2lkICosIHN0cnVjdCBz aWdhY3Rpb24mKTsKICAgdm9pZCBpbnRlcnJ1cHRfc2V0dXAgKHNpZ2luZm9fdCYsIHZvaWQgKiwg c3RydWN0IHNpZ2FjdGlvbiYpOwogCmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL3NjcmlwdHMv Z2VuZGVmIGIvd2luc3VwL2N5Z3dpbi9zY3JpcHRzL2dlbmRlZgppbmRleCAyNTY5ODQwNGIuLjIz Mzg0N2UxYSAxMDA3NTUKLS0tIGEvd2luc3VwL2N5Z3dpbi9zY3JpcHRzL2dlbmRlZgorKysgYi93 aW5zdXAvY3lnd2luL3NjcmlwdHMvZ2VuZGVmCkBAIC00NjEsMTYyICs0NjEsMjYgQEAgX3NpZ2Jl OgogCS5nbG9iYWwJc2lnZGVsYXllZAogCS5zZWhfcHJvYyBzaWdkZWxheWVkCiBzaWdkZWxheWVk OgotCXN0cAl4MCwgIHgxLCAgW3NwLCAjLTE2XSEKLQlzdHAJeDIsICB4MywgIFtzcCwgIy0xNl0h Ci0Jc3RwCXg0LCAgeDUsICBbc3AsICMtMTZdIQotCXN0cAl4NiwgIHg3LCAgW3NwLCAjLTE2XSEK LQlzdHAJeDgsICB4OSwgIFtzcCwgIy0xNl0hCi0Jc3RwCXgxMCwgeDExLCBbc3AsICMtMTZdIQot CXN0cAl4MTIsIHgxMywgW3NwLCAjLTE2XSEKLQlzdHAJeDE0LCB4MTUsIFtzcCwgIy0xNl0hCi0J c3RwCXgxNiwgeDE3LCBbc3AsICMtMTZdIQotCXN0cAl4MTgsIHgxOSwgW3NwLCAjLTE2XSEKLQku c2VoX3N0YWNrYWxsb2MgMTYwCi0JLnNlaF9zYXZlX3JlZyB4MTksIDE1MgotCXN0cAl4MjAsIHgy MSwgW3NwLCAjLTE2XSEKLQkuc2VoX3NhdmVfcmVncF94IHgyMCwgMTYKLQlzdHAJeDIyLCB4MjMs IFtzcCwgIy0xNl0hCi0JLnNlaF9zYXZlX3JlZ3BfeCB4MjIsIDE2Ci0Jc3RwCXgyNCwgeDI1LCBb c3AsICMtMTZdIQotCS5zZWhfc2F2ZV9yZWdwX3ggeDI0LCAxNgotCXN0cAl4MjYsIHgyNywgW3Nw LCAjLTE2XSEKLQkuc2VoX3NhdmVfcmVncF94IHgyNiwgMTYKLQlzdHAJeDI4LCB4MjksIFtzcCwg Iy0xNl0hCi0JLnNlaF9zYXZlX3JlZ3BfeCB4MjgsIDE2Ci0KLQltb3YJeDEsIHNwCi0Jc3RyCXgx LCBbc3AsICMtMTZdIQotCi0Jc3RwCXEwLCAgcTEsICBbc3AsICMtMzJdIQotCXN0cAlxMiwgIHEz LCAgW3NwLCAjLTMyXSEKLQlzdHAJcTQsICBxNSwgIFtzcCwgIy0zMl0hCi0Jc3RwCXE2LCAgcTcs ICBbc3AsICMtMzJdIQotCXN0cAlxOCwgIHE5LCAgW3NwLCAjLTMyXSEKLQlzdHAJcTEwLCBxMTEs IFtzcCwgIy0zMl0hCi0Jc3RwCXExMiwgcTEzLCBbc3AsICMtMzJdIQotCXN0cAlxMTQsIHExNSwg W3NwLCAjLTMyXSEKLQlzdHAJcTE2LCBxMTcsIFtzcCwgIy0zMl0hCi0Jc3RwCXExOCwgcTE5LCBb c3AsICMtMzJdIQotCXN0cAlxMjAsIHEyMSwgW3NwLCAjLTMyXSEKLQlzdHAJcTIyLCBxMjMsIFtz cCwgIy0zMl0hCi0Jc3RwCXEyNCwgcTI1LCBbc3AsICMtMzJdIQotCXN0cAlxMjYsIHEyNywgW3Nw LCAjLTMyXSEKLQlzdHAJcTI4LCBxMjksIFtzcCwgIy0zMl0hCi0Jc3RwCXEzMCwgcTMxLCBbc3As ICMtMzJdIQotCi0JbXJzCXgxLCBmcGNyCi0JbXJzCXgyLCBmcHNyCi0Jc3RwCXgxLCB4MiwgW3Nw LCAjLTE2XSEKLQotCS5zZWhfc3RhY2thbGxvYyA1NDQKLQorCXN1YglzcCwJc3AsCTB4MzkwIAkv LyBzaXplb2YoQVJNNjRfTlRfQ09OVEVYVCkKKwkuc2VoX3N0YWNrYWxsb2MgMHgzOTAKKwlzdHAJ eDAsCXgzMCwJW3NwLCAjLTE2XSEKKworCS8vIHgxNiBnZXRzIGNsb2JiZXJlZCBhZnRlciBjYWxs aW5nIFJ0bENhcHR1cmVDb250ZXh0LgorCS8vIEJvdGggeDE2IGFuZCB4MTcgYXJlIGNvbnNpZGVy ZWQgdm9sYXRpbGUgcmVnaXN0ZXJzLCBzbyB3ZSBwcmVzZXJ2ZSBib3RoLgorCXN0cAl4MTYsCXgx NywJW3NwLCAjLTE2XSEKKwkuc2VoX3NhdmVfcmVncF94IHgxNiwgMTYKIAkuc2VoX2VuZHByb2xv Z3VlCiAKLQlsZHIJeDEyLCBbeDE4LCAjOF0JCQkvLyBnZXQgVExTIHBvaW50ZXIKLQlsZHIJeDEz LCA9X2N5Z3Rscy5zYXZlZF9lcnJubwkvLyBnZXQgb2Zmc2V0IHRvIHNhdmVkX2Vycm5vCi0JYWRk CXgxMywgeDEyLCB4MTMJCQkvLyBzZXQgeDEzIHRvICZUTFMuc2F2ZWRfZXJybm8KLQlsZHIJdzE5 LCBbeDEzXQkJCS8vIHByZXNlcnZlIHNhdmVkX2Vycm5vIGluIHcxOQotCi0JbGRyCXgxMywgPV9j eWd0bHMuc3RhcnRfb2Zmc2V0CS8vIGdldCBvZmZzZXQgdG8gYmVnaW5uaW5nIG9mIFRMUyBibG9j awotCWFkZAl4MCwgeDEyLCB4MTMJCQkvLyBzdG9yZSBvZmZzZXQgYXMgZmlyc3QgYXJnIHRvIG1l dGhvZAotCWJsCV9aTjdfY3lndGxzMTljYWxsX3NpZ25hbF9oYW5kbGVyRXYJLy8gY2FsbCBoYW5k bGVyCi0JbGRyCXgxMiwgW3gxOCwgIzhdCQkJLy8gcmVzdG9yZSBjbG9iYmVyZWQgVExTIHBvaW50 ZXIKKwkvLyBSdGxDYXB0dXJlQ29udGV4dCBjYXB0dXJlcyB0aGUgY3VycmVudCBDUFUgc3RhdGUK KwkvLyBhdCB0aGUgdGltZSBvZiBjYWxsaW5nIGl0LCBsZXR0aW5nIHVzIHJlc3RvcmUgaXQKKwkv LyBsYXRlciB3aXRoIGFkanVzdGVkIHJlZ2lzdGVycyBpbiBzaWdkZWxheWVkX2ltcGwuCisJYWRk CXgwLAlzcCwJMzIJCS8vIHNldCB4MCB0byB0aGUgc3RhY2sgc3BhY2UgYWxsb2NhdGVkIGZvciB0 aGUgY29udGV4dAorCWJsIFJ0bENhcHR1cmVDb250ZXh0CiAKLQltb3YJdzExLCAjMQkJCQkvLyBz ZXQgdzExIHRvIDEgKGxvY2tlZCkKLQlsZHIJeDEzLCA9X2N5Z3Rscy5zdGFja2xvY2sJCS8vIGdl dCBvZmZzZXQgdG8gc3RhY2tsb2NrCi0JYWRkCXgxMywgeDEyLCB4MTMJCQkvLyBzZXQgeDEzIHRv ICZUTFMuc3RhY2tsb2NrCi0xOgotCWxkYXhyCXcxNCwgW3gxM10JCQkvLyByZWFkIGxvY2sgdmFs dWUgd2l0aCBhY3F1aXJlCi0JY2Juegl3MTQsIDJmCQkJCS8vIHdhaXQgaWYgYWxyZWFkeSBsb2Nr ZWQKLQlzdHhyCXcxNCwgdzExLCBbeDEzXQkJCS8vIGF0dGVtcHQgdG8gc3RvcmUgMQotCWNibnoJ dzE0LCAxYgkJCQkvLyByZXRyeSBpZiBsb2NraW5nIG5vdCBzdWNjZWVkZWQKLQliCTNmCQkJCS8v IGNvbnRpbnVlIHRvIGNyaXRpY2FsIHJlZ2lvbgotMjoKLQl5aWVsZAkJCQkJLy8gaGludCB0byBD UFUgKHNwaW4td2FpdCkKLQliCTFiCQkJCS8vIHRyeSBhZ2FpbgorCWFkZAl4MCwJc3AsCTMyCQkv LyByZXNldCB4MCBpbiBjYXNlIGl0IGdvdCBjbG9iYmVyZWQKKwlibCBzaWdkZWxheWVkX2luaXQK IAotMzoKLQl0c3QJdzE5LCB3MTkJCQkvLyB3YXMgc2F2ZWRfZXJybm8gPCAwCi0JYmx0CTRmCQkJ CS8vIGlmIHllcywgaWdub3JlIGl0Ci0JbGRyCXgxMywgPV9jeWd0bHMuZXJybm9fYWRkcgkvLyBn ZXQgb2Zmc2V0IHRvIGVycm5vX2FkZHIKLQlhZGQJeDEzLCB4MTIsIHgxMwkJCS8vIHNldCB4MTMg dG8gJlRMUy5lcnJub19hZGRyCi0JbGRyCXgxMSwgW3gxM10JCQkvLyBzZXQgeDExIHRvIFRMUy0+ ZXJybm9fYWRkcgotCXN0cgl3MTksIFt4MTFdCQkJLy8gc3RvcmUgc2F2ZWRfZXJybm8gdG8gZXJy bm9fYWRkcgotCi00OgotCWxkcgl4MTMsID1fY3lndGxzLnN0YWNrcHRyCQkvLyBnZXQgb2Zmc2V0 IHRvIHN0YWNrcHRyCi0JYWRkCXgxMywgeDEyLCB4MTMJCQkvLyBzZXQgeDEzIHRvICZUTFMuc3Rh Y2twdHIKLTU6Ci0JbGR4cgl4MTEsIFt4MTNdCQkJLy8gZ2V0IGF1eCBzdGFjayBhZGRyZXNzCi0J c3ViCXgxMSwgeDExLCAjOAkJCS8vIGRlY3JlbWVudCBhdXggc3RhY2sgYWRkcmVzcwotCXN0eHIJ dzE0LCB4MTEsIFt4MTNdCQkJLy8gYXR0ZW1wdCB0byBzdG9yZSBkZWNyZW1lbnRlZCB2YWx1ZQot CWNibnoJdzE0LCA1YgkJCQkvLyByZXRyeSBpZiBub3Qgc3VjY2VlZGVkCi0KLTY6Ci0JbGR4cgl4 MzAsIFt4MTFdCQkJLy8gZ2V0IHJldHVybiBhZGRyZXNzIGZyb20gc2lnbmFsIHN0YWNrCi0Jc3R4 cgl3MTQsIHh6ciwgW3gxMV0JCQkvLyBhdHRlbXB0IHRvIGNsZWFyIHJldHVybiBhZGRyZXNzCi0J Y2Juegl3MTQsIDZiCQkJCS8vIHJldHJ5IGlmIG5vdCBzdWNjZWVkZWQKLQotCWxkcgl4MTMsID1f Y3lndGxzLmluY3lnCQkvLyBnZXQgb2Zmc2V0IHRvIGluY3lnCi0JYWRkCXgxMywgeDEyLCB4MTMJ CQkvLyBzZXQgeDEzIHRvICZUTFMuaW5jeWcKLQlzdHIJd3pyLCBbeDEzXQkJCS8vIHNldCBUTFMu aW5jeWcgdG8gMCAobm90IGluIGN5Z3dpbikKLQlsZHIJeDEzLCA9X2N5Z3Rscy5zdGFja2xvY2sJ CS8vIGdldCBvZmZzZXQgdG8gc3RhY2tsb2NrCi0JYWRkCXgxMywgeDEyLCB4MTMJCQkvLyBzZXQg eDEzIHRvICZUTFMuc3RhY2tsb2NrCi0Jc3Rscgl3enIsIFt4MTNdCQkJLy8gcmVsZWFzZSBsb2Nr Ci0KLQkuc2VoX3N0YXJ0ZXBpbG9ndWUKLQotCS5zZWhfc3RhY2thbGxvYyA1NDQKLQotCWxkcAl4 MSwgeDIsIFtzcF0sICMxNgotCW1zcglmcGNyLCB4MQotCW1zcglmcHNyLCB4MgotCi0JbGRwCXEz MCwgcTMxLCBbc3BdLCAjMzIKLQlsZHAJcTI4LCBxMjksIFtzcF0sICMzMgotCWxkcAlxMjYsIHEy NywgW3NwXSwgIzMyCi0JbGRwCXEyNCwgcTI1LCBbc3BdLCAjMzIKLQlsZHAJcTIyLCBxMjMsIFtz cF0sICMzMgotCWxkcAlxMjAsIHEyMSwgW3NwXSwgIzMyCi0JbGRwCXExOCwgcTE5LCBbc3BdLCAj MzIKLQlsZHAJcTE2LCBxMTcsIFtzcF0sICMzMgotCWxkcAlxMTQsIHExNSwgW3NwXSwgIzMyCi0J bGRwCXExMiwgcTEzLCBbc3BdLCAjMzIKLQlsZHAJcTEwLCBxMTEsIFtzcF0sICMzMgotCWxkcAlx OCwgIHE5LCAgW3NwXSwgIzMyCi0JbGRwCXE2LCAgcTcsICBbc3BdLCAjMzIKLQlsZHAJcTQsICBx NSwgIFtzcF0sICMzMgotCWxkcAlxMiwgIHEzLCAgW3NwXSwgIzMyCi0JbGRwCXEwLCAgcTEsICBb c3BdLCAjMzIKLQotCWxkcgl4MSwgW3NwXSwgIzE2Ci0JbW92CXNwLCB4MQotCi0JbGRwCXgyOCwg eDI5LCBbc3BdLCAjMTYKLQkuc2VoX3NhdmVfcmVncF94IHgyOCwgMTYKLQlsZHAJeDI2LCB4Mjcs IFtzcF0sICMxNgotCS5zZWhfc2F2ZV9yZWdwX3ggeDI2LCAxNgotCWxkcAl4MjQsIHgyNSwgW3Nw XSwgIzE2Ci0JLnNlaF9zYXZlX3JlZ3BfeCB4MjQsIDE2Ci0JbGRwCXgyMiwgeDIzLCBbc3BdLCAj MTYKLQkuc2VoX3NhdmVfcmVncF94IHgyMiwgMTYKLQlsZHAJeDIwLCB4MjEsIFtzcF0sICMxNgot CS5zZWhfc2F2ZV9yZWdwX3ggeDIwLCAxNgotCWxkcAl4MTgsIHgxOSwgW3NwXSwgIzE2Ci0JLnNl aF9zYXZlX3JlZyB4MTksIDE1MgotCS5zZWhfc3RhY2thbGxvYyAxNjAKLQlsZHAJeDE2LCB4MTcs IFtzcF0sICMxNgotCWxkcAl4MTQsIHgxNSwgW3NwXSwgIzE2Ci0JbGRwCXgxMiwgeDEzLCBbc3Bd LCAjMTYKLQlsZHAJeDEwLCB4MTEsIFtzcF0sICMxNgotCWxkcAl4OCwgIHg5LCAgW3NwXSwgIzE2 Ci0JbGRwCXg2LCAgeDcsICBbc3BdLCAjMTYKLQlsZHAJeDQsICB4NSwgIFtzcF0sICMxNgotCWxk cAl4MiwgIHgzLCAgW3NwXSwgIzE2Ci0JbGRwCXgwLCAgeDEsICBbc3BdLCAjMTYKLQotCS5zZWhf ZW5kZXBpbG9ndWUKLQlyZXQKKwkvLyB1bnJlYWNoYWJsZQogCS5zZWhfZW5kcHJvYwogX3NpZ2Rl bGF5ZWRfZW5kOgogCS5nbG9iYWwgX3NpZ2RlbGF5ZWRfZW5kCi0tIAoyLjUxLjAKCg== --------------zVO4N0Z2hWUUVvgrmrNt9EFk--