From: Bjorn Munch Date: January 19 2011 11:05am Subject: bzr commit into mysql-trunk-mtr branch (bjorn.munch:3012) List-Archive: http://lists.mysql.com/commits/129161 Message-Id: <201101191105.p0JB5omM004670@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 I0F0IGZpbGU6Ly8vaG9tZS9ibTEzNjgwMS9teS9tdHItdHIvIGJhc2VkIG9uIHJldmlkOmJqb3Ju Lm11bmNoQG9yYWNsZS5jb20tMjAxMTAxMTgxMTQwNTQtcWlmdzRkbWRsdWxwdHZ6cAoKIDMwMTIg Qmpvcm4gTXVuY2gJMjAxMS0wMS0xOSBbbWVyZ2VdCiAgICAgIG1lcmdlIGZyb20gdHJ1bmsKCiAg ICBhZGRlZDoKICAgICAgbXlzcWwtdGVzdC9pbmNsdWRlL3Jlc3RhcnRfc2xhdmVfc3FsLmluYwog ICAgICBteXNxbC10ZXN0L2luY2x1ZGUvcnBsX2Nvbm5lY3Rpb25fbWFzdGVyLmluYwogICAgICBt eXNxbC10ZXN0L2luY2x1ZGUvcnBsX2Nvbm5lY3Rpb25fc2xhdmUuaW5jCiAgICAgIG15c3FsLXRl c3QvaW5jbHVkZS9ycGxfY29ubmVjdGlvbl9zbGF2ZTEuaW5jCiAgICBtb2RpZmllZDoKICAgICAg Y2xpZW50L215c3FsYmlubG9nLmNjCiAgICAgIGNtYWtlL2NoYXJhY3Rlcl9zZXRzLmNtYWtlCiAg ICAgIGNvbmZpZy5oLmNtYWtlCiAgICAgIGV4dHJhL215X3ByaW50X2RlZmF1bHRzLmMKICAgICAg aW5jbHVkZS9teV9zeXMuaAogICAgICBteXNxbC10ZXN0L2NvbGxlY3Rpb25zL2RlZmF1bHQuZXhw ZXJpbWVudGFsCiAgICAgIG15c3FsLXRlc3QvZXh0cmEvcnBsX3Rlc3RzL3JwbF9jaGFuZ2VfbWFz dGVyLnRlc3QKICAgICAgbXlzcWwtdGVzdC9yL2N0eXBlX21hbnkucmVzdWx0CiAgICAgIG15c3Fs LXRlc3Qvci9jdHlwZV91Y3MucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9mdW5jX2xpa2UucmVz dWx0CiAgICAgIG15c3FsLXRlc3Qvci9zaG93X2NoZWNrLnJlc3VsdAogICAgICBteXNxbC10ZXN0 L3IveG1sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9jaGFuZ2VfbWFz dGVyLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9jaGFuZ2VfbWFzdGVy X2NyYXNoX3NhZmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBsX3N0b3Bf c2xhdmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3QvcnBsX2Nyb3NzX3ZlcnNp b24udGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9wYWNrZXQudGVzdAogICAg ICBteXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9zdG9wX3NsYXZlLnRlc3QKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9zeXNfdmFycy9yL2lubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0X2Z1bmMucmVz dWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfbWF4X2RpcnR5X3Bh Z2VzX3BjdF9mdW5jLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L2N0eXBlX21hbnkudGVzdAogICAg ICBteXNxbC10ZXN0L3QvY3R5cGVfdWNzLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L2Z1bmNfbGlr ZS50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zaG93X2NoZWNrLnRlc3QKICAgICAgbXlzcWwtdGVz dC90L3htbC50ZXN0CiAgICAgIG15c3lzL2RlZmF1bHQuYwogICAgICBteXN5cy9teV9nZXRvcHQu YwogICAgICBzcWwtY29tbW9uL2NsaWVudC5jCiAgICAgIHNxbC9pdGVtX3N0cmZ1bmMuY2MKICAg ICAgc3FsL2l0ZW1fc3RyZnVuYy5oCiAgICAgIHNxbC9pdGVtX3N1bS5oCiAgICAgIHNxbC9teXNx bGQuY2MKICAgICAgc3FsL3JwbF9tYXN0ZXIuY2MKICAgICAgc3FsL3JwbF9zbGF2ZS5jYwogICAg ICBzdG9yYWdlL25kYi90ZXN0L3J1bi10ZXN0L3NldHVwLmNwcAogICAgICBzdHJpbmdzL2N0eXBl LXVjczIuYwogICAgICBzdHJpbmdzL3htbC5jCj09PSBtb2RpZmllZCBmaWxlICdjbGllbnQvbXlz cWxiaW5sb2cuY2MnCi0tLSBhL2NsaWVudC9teXNxbGJpbmxvZy5jYwkyMDExLTAxLTE2IDA0OjAy OjI5ICswMDAwCisrKyBiL2NsaWVudC9teXNxbGJpbmxvZy5jYwkyMDExLTAxLTE4IDEyOjA5OjAz ICswMDAwCkBAIC05OTQsNyArOTk0LDcgQEAgc3RhdGljIHN0cnVjdCBteV9vcHRpb24gbXlfbG9u Z19vcHRpb25zWwogICAgIC8qICd1bnNwZWMnIGlzIG5vdCBtZW50aW9uZWQgYmVjYXVzZSBpdCBp cyBqdXN0IGEgcGxhY2Vob2xkZXIuICovCiAgICAiRGV0ZXJtaW5lIHdoZW4gdGhlIG91dHB1dCBz dGF0ZW1lbnRzIHNob3VsZCBiZSBiYXNlNjQtZW5jb2RlZCBCSU5MT0cgIgogICAgInN0YXRlbWVu dHM6ICduZXZlcicgZGlzYWJsZXMgaXQgYW5kIHdvcmtzIG9ubHkgZm9yIGJpbmxvZ3Mgd2l0aG91 dCAiCi0gICAicm93LWJhc2VkIGV2ZW50czsgJ2RlY29kZS1yb3dzJyBkZWNvZGVzIHJvdyBldmVu dHMgaW50byBjb21tZW50ZWQgU1FMICIKKyAgICJyb3ctYmFzZWQgZXZlbnRzOyAnZGVjb2RlLXJv d3MnIGRlY29kZXMgcm93IGV2ZW50cyBpbnRvIGNvbW1lbnRlZCBwc2V1ZG8tU1FMICIKICAgICJz dGF0ZW1lbnRzIGlmIHRoZSAtLXZlcmJvc2Ugb3B0aW9uIGlzIGFsc28gZ2l2ZW47ICdhdXRvJyBw cmludHMgYmFzZTY0ICIKICAgICJvbmx5IHdoZW4gbmVjZXNzYXJ5IChpLmUuLCBmb3Igcm93LWJh c2VkIGV2ZW50cyBhbmQgZm9ybWF0IGRlc2NyaXB0aW9uICIKICAgICJldmVudHMpLiAgSWYgbm8g LS1iYXNlNjQtb3V0cHV0Wz1uYW1lXSBvcHRpb24gaXMgZ2l2ZW4gYXQgYWxsLCB0aGUgIgpAQCAt MTE1MCw3ICsxMTUwLDcgQEAgc3RhdGljIHN0cnVjdCBteV9vcHRpb24gbXlfbG9uZ19vcHRpb25z WwogICB7InVzZXIiLCAndScsICJDb25uZWN0IHRvIHRoZSByZW1vdGUgc2VydmVyIGFzIHVzZXJu YW1lLiIsCiAgICAmdXNlciwgJnVzZXIsIDAsIEdFVF9TVFJfQUxMT0MsIFJFUVVJUkVEX0FSRywg MCwgMCwgMCwgMCwKICAgIDAsIDB9LAotICB7InZlcmJvc2UiLCAndicsICJSZWNvbnN0cnVjdCBT UUwgc3RhdGVtZW50cyBvdXQgb2Ygcm93IGV2ZW50cy4gIgorICB7InZlcmJvc2UiLCAndicsICJS ZWNvbnN0cnVjdCBwc2V1ZG8tU1FMIHN0YXRlbWVudHMgb3V0IG9mIHJvdyBldmVudHMuICIKICAg ICAgICAgICAgICAgICAgICAiLXYgLXYgYWRkcyBjb21tZW50cyBvbiBjb2x1bW4gZGF0YSB0eXBl cy4iLAogICAgMCwgMCwgMCwgR0VUX05PX0FSRywgTk9fQVJHLCAwLCAwLCAwLCAwLCAwLCAwfSwK ICAgeyJ2ZXJzaW9uIiwgJ1YnLCAiUHJpbnQgdmVyc2lvbiBhbmQgZXhpdC4iLCAwLCAwLCAwLCBH RVRfTk9fQVJHLCBOT19BUkcsIDAsCgo9PT0gbW9kaWZpZWQgZmlsZSAnY21ha2UvY2hhcmFjdGVy X3NldHMuY21ha2UnCi0tLSBhL2NtYWtlL2NoYXJhY3Rlcl9zZXRzLmNtYWtlCTIwMTAtMTItMTQg MTM6MjY6MzUgKzAwMDAKKysrIGIvY21ha2UvY2hhcmFjdGVyX3NldHMuY21ha2UJMjAxMS0wMS0x NyAxNDozNjo1MiArMDAwMApAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA5IFN1 biBNaWNyb3N5c3RlbXMsIEluYworIyBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTEsIE9yYWNsZSBh bmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIAogIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTMsMTcgKzEzLDE5IEBACiAjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt MTMwMSAgVVNBIAogCi0jQ2hhcnNldHMgYW5kIGNvbGxhdGlvbnMKKyMgQ2hhcnNldHMgYW5kIGNv bGxhdGlvbnMKIElGKE5PVCBERUZBVUxUX0NIQVJTRVQpCi1TRVQoREVGQVVMVF9DSEFSU0VUICJs YXRpbjEiKQorICBTRVQoREVGQVVMVF9DSEFSU0VUICJsYXRpbjEiKQogRU5ESUYoKQogCi1JRihO T1QgREVGQVVMVF9DT0xMQVRJT05TKQotU0VUKERFRkFVTFRfQ09MTEFUSU9OICJsYXRpbjFfc3dl ZGlzaF9jaSIpCitJRihOT1QgREVGQVVMVF9DT0xMQVRJT04pCisgIFNFVChERUZBVUxUX0NPTExB VElPTiAibGF0aW4xX3N3ZWRpc2hfY2kiKQogRU5ESUYoKQogCiBTRVQoQ0hBUlNFVFMgJHtERUZB VUxUX0NIQVJTRVR9IGxhdGluMSB1dGY4IHV0ZjhtYjQpCi1TRVQoQ0hBUlNFVFNfQ09NUExFWCBi aWc1IGNwMTI1MCBjcDkzMiBldWNqcG1zIGV1Y2tyIGdiMjMxMiBnYmsgbGF0aW4xIGxhdGluMiBz amlzIHRpczYyMCB1Y3MyIHVqaXMgdXRmOCB1dGY4bWI0IHV0ZjE2IHV0ZjE2bGUgdXRmMzIpCitT RVQoQ0hBUlNFVFNfQ09NUExFWAorICBiaWc1IGNwMTI1MCBjcDkzMiBldWNqcG1zIGV1Y2tyIGdi MjMxMiBnYmsgbGF0aW4xIGxhdGluMgorICBzamlzIHRpczYyMCB1Y3MyIHVqaXMgdXRmOCB1dGY4 bWI0IHV0ZjE2IHV0ZjE2bGUgdXRmMzIpCiAKIFNFVChDSEFSU0VUU19BVkFJTEFCTEUgCiBiaW5h cnkgYXJtc2NpaTggYXNjaWkgYmlnNSBjcDEyNTAgY3AxMjUxIGNwMTI1NiBjcDEyNTcKCj09PSBt b2RpZmllZCBmaWxlICdjb25maWcuaC5jbWFrZScKLS0tIGEvY29uZmlnLmguY21ha2UJMjAxMS0w MS0xMSAwOTowOToyMSArMDAwMAorKysgYi9jb25maWcuaC5jbWFrZQkyMDExLTAxLTE3IDE0OjM2 OjUyICswMDAwCkBAIC0xLDYgKzEsNSBAQAotLyogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCBP cmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzCi0gICByZXNlcnZlZAotCisv KiBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMu IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgCiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KQEAg LTUxNiw4ICs1MTUsOCBAQAogI2NtYWtlZGVmaW5lIENZQk9aVSAxCiAKIC8qIENoYXJhY3RlciBz ZXRzIGFuZCBjb2xsYXRpb25zICovCi0jY21ha2VkZWZpbmUgTVlTUUxfREVGQVVMVF9DSEFSU0VU X05BTUUgImxhdGluMSIKLSNjbWFrZWRlZmluZSBNWVNRTF9ERUZBVUxUX0NPTExBVElPTl9OQU1F ICJsYXRpbjFfc3dlZGlzaF9jaSIKKyNjbWFrZWRlZmluZSBNWVNRTF9ERUZBVUxUX0NIQVJTRVRf TkFNRSAiQE1ZU1FMX0RFRkFVTFRfQ0hBUlNFVF9OQU1FQCIKKyNjbWFrZWRlZmluZSBNWVNRTF9E RUZBVUxUX0NPTExBVElPTl9OQU1FICJATVlTUUxfREVGQVVMVF9DT0xMQVRJT05fTkFNRUAiCiAK ICNjbWFrZWRlZmluZSBVU0VfTUIgMQogI2NtYWtlZGVmaW5lIFVTRV9NQl9JREVOVCAxCgo9PT0g bW9kaWZpZWQgZmlsZSAnZXh0cmEvbXlfcHJpbnRfZGVmYXVsdHMuYycKLS0tIGEvZXh0cmEvbXlf cHJpbnRfZGVmYXVsdHMuYwkyMDEwLTA3LTI4IDIzOjM5OjUyICswMDAwCisrKyBiL2V4dHJhL215 X3ByaW50X2RlZmF1bHRzLmMJMjAxMS0wMS0xNyAwOTo1Mjo1OSArMDAwMApAQCAtMTkzLDcgKzE5 Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgfQogCiAgIGZvciAoYXJn dW1lbnQ9IGFyZ3VtZW50cysxIDsgKmFyZ3VtZW50IDsgYXJndW1lbnQrKykKLSAgICBpZiAoKmFy Z3VtZW50ICE9IGFyZ3Nfc2VwYXJhdG9yKSAgICAgICAgICAgLyogc2tpcCBhcmd1bWVudHMgc2Vw YXJhdG9yICovCisgICAgaWYgKCFteV9nZXRvcHRfaXNfYXJnc19zZXBhcmF0b3IoKmFyZ3VtZW50 KSkgICAgICAgICAgIC8qIHNraXAgYXJndW1lbnRzIHNlcGFyYXRvciAqLwogICAgICAgcHV0cygq YXJndW1lbnQpOwogICBteV9mcmVlKGxvYWRfZGVmYXVsdF9ncm91cHMpOwogICBmcmVlX2RlZmF1 bHRzKGFyZ3VtZW50cyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnaW5jbHVkZS9teV9zeXMuaCcKLS0t IGEvaW5jbHVkZS9teV9zeXMuaAkyMDExLTAxLTExIDA5OjA5OjIxICswMDAwCisrKyBiL2luY2x1 ZGUvbXlfc3lzLmgJMjAxMS0wMS0xNyAwOTo1Mjo1OSArMDAwMApAQCAtODE2LDcgKzgxNiw4IEBA IGV4dGVybiB2b2lkICptZW1kdXBfcm9vdChNRU1fUk9PVCAqcm9vdCwKIGV4dGVybiBpbnQgZ2V0 X2RlZmF1bHRzX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICoqZGVmYXVsdHMsIGNoYXIgKipleHRyYV9kZWZhdWx0cywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmdyb3VwX3N1ZmZpeCk7Ci1l eHRlcm4gY29uc3QgY2hhciAqYXJnc19zZXBhcmF0b3I7CitleHRlcm4gbXlfYm9vbCBteV9nZXRv cHRfdXNlX2FyZ3Nfc2VwYXJhdG9yOworZXh0ZXJuIG15X2Jvb2wgbXlfZ2V0b3B0X2lzX2FyZ3Nf c2VwYXJhdG9yKGNvbnN0IGNoYXIqIGFyZyk7CiBleHRlcm4gaW50IG15X2xvYWRfZGVmYXVsdHMo Y29uc3QgY2hhciAqY29uZl9maWxlLCBjb25zdCBjaGFyICoqZ3JvdXBzLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAqYXJnYywgY2hhciAqKiphcmd2LCBjb25zdCBjaGFyICoqKik7 CiBleHRlcm4gaW50IGxvYWRfZGVmYXVsdHMoY29uc3QgY2hhciAqY29uZl9maWxlLCBjb25zdCBj aGFyICoqZ3JvdXBzLAoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvY29sbGVjdGlvbnMv ZGVmYXVsdC5leHBlcmltZW50YWwnCi0tLSBhL215c3FsLXRlc3QvY29sbGVjdGlvbnMvZGVmYXVs dC5leHBlcmltZW50YWwJMjAxMS0wMS0xNCAxMzowNjowMCArMDAwMAorKysgYi9teXNxbC10ZXN0 L2NvbGxlY3Rpb25zL2RlZmF1bHQuZXhwZXJpbWVudGFsCTIwMTEtMDEtMTggMTc6NTI6NDggKzAw MDAKQEAgLTEwLDcgKzEwLDYgQEAgaW5ub2RiLmlubm9kYl9pbmZvcm1hdGlvbl9zY2hlbWEKIG1h aW4uZnVuY19tYXRoIEBmcmVlYnNkICAgICAgICAgICAgICAgICAgIyBCdWcjNDMwMjAgMjAxMC0w NS0wNCBhbGlrIG1haW4uZnVuY19tYXRoIGZhaWxzIG9uIEZyZWVCU0QgaW4gUEIyCiBtYWluLmdp cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQnVnIzUyMjA4IDIwMTAtMTEtMjQg YWxpayBnaXMgZmFpbHMgb24gc29tZSBwbGF0Zm9ybXMgKFNvbGFyaXMsIEhQLVVYLCBMaW51eCkK IG1haW4uZ2lzLXJ0cmVlIEBmcmVlYnNkICAgICAgICAgICAgICAgICAgIyBCdWcjMzg5NjUgMjAx MC0wNS0wNCBhbGlrIHRlc3QgY2FzZXMgZ2lzLXJ0cmVlLCB0eXBlX2Zsb2F0LCB0eXBlX25ld2Rl Y2ltYWwgZmFpbCBpbiBlbWJlZGRlZCBzZXJ2ZXIKLW1haW4uaW5mb3JtYXRpb25fc2NoZW1hICAg ICAgICAgICAgICAgICAgIyBCdWcjNDc0NDkgMjAwOS0wOS0xOSBhbGlrIG1haW4uaW5mb3JtYXRp b25fc2NoZW1hIGFuZCBpbm5vZGIuaW5ub2RiX2luZm9ybWF0aW9uX3NjaGVtYSBmYWlsIHNwb3Jh ZGljYWxseQogbWFpbi5sb2NrX211bHRpX2J1ZzM4NDk5ICAgICAgICAgICAgICAgICAjIEJ1ZyM0 NzQ0OCAyMDA5LTA5LTE5IGFsaWsgbWFpbi5sb2NrX211bHRpX2J1ZzM4NDk5IHRpbWVzIG91dCBz cG9yYWRpY2FsbHkKIG1haW4ubXlzcWxzbGFwIEB3aW5kb3dzICAgICAgICAgICAgICAgICAgIyBC dWcjNTQwMjQgMjAxMC0wOC0xMCBhbGlrIG15c3Fsc2xhcCBmYWlscyBzcG9yYWRpY2FsbHkgc3Rh cnRpbmcgZnJvbSBEYWhsaWEKIG1haW4ub3V0ZmlsZV9sb2FkZGF0YSBAc29sYXJpcyAgICAgICAg ICAgIyBCdWcjNDY4OTUgMjAxMC0wMS0yMCBhbGlrIFRlc3QgIm91dGZpbGVfbG9hZGRhdGEiIGZh aWxzIChyZXByb2R1Y2libGUpCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9leHRyYS9y cGxfdGVzdHMvcnBsX2NoYW5nZV9tYXN0ZXIudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC9leHRyYS9y cGxfdGVzdHMvcnBsX2NoYW5nZV9tYXN0ZXIudGVzdAkyMDEwLTEyLTIwIDE0OjI3OjE3ICswMDAw CisrKyBiL215c3FsLXRlc3QvZXh0cmEvcnBsX3Rlc3RzL3JwbF9jaGFuZ2VfbWFzdGVyLnRlc3QJ MjAxMS0wMS0xNyAxODoyOTo0MSArMDAwMApAQCAtNCw2ICs0LDkgQEAKIAogY2FsbCBtdHIuYWRk X3N1cHByZXNzaW9uKCJTbGF2ZSBJL086IFRoZSBzbGF2ZSBJL08gdGhyZWFkIHN0b3BzIGJlY2F1 c2UgYSBmYXRhbCBlcnJvciBpcyBlbmNvdW50ZXJlZCB3aGVuIGl0IHRyaWVkIHRvIFNFVCBAbWFz dGVyX2JpbmxvZ19jaGVja3N1bSIpOwogCitjb25uZWN0aW9uIHNsYXZlOworbGV0ICRzYXZlX21h c3Rlcl9ob3N0PSBxdWVyeV9nZXRfdmFsdWUoU0hPVyBTTEFWRSBTVEFUVVMsIE1hc3Rlcl9Ib3N0 LCAxKTsKKwogY29ubmVjdGlvbiBtYXN0ZXI7CiAjIE1ha2UgU1FMIHNsYXZlIHRocmVhZCBhZHZh bmNlIGEgYml0CiBjcmVhdGUgdGFibGUgdDEobiBpbnQpOwpAQCAtMzA3LDMgKzMxMCw5IEBAIGlm ICghJGNoZWNrX2lwdjZfc3VwcG9ydGVkKQogIyBUZXN0IHdpdGggbm8gYmluZCBhZGRyZXNzKGNo ZWNrIHRoYXQgcmVzZXQgd29ya3MpCiBsZXQgJG1hc3Rlcl9iaW5kPScnOwogLS1zb3VyY2UgZXh0 cmEvcnBsX3Rlc3RzL3JwbF9jaGFuZ2VfbWFzdGVyX2JpbmQuaW5jCisKKyMjIyBSZXZlcnQgdG8g b3JpZ2luYWwgbWFzdGVyX2hvc3QgdmFsdWUKKy0tc291cmNlIGluY2x1ZGUvc3RvcF9zbGF2ZS5p bmMKKy0tcmVwbGFjZV9yZXN1bHQgJHNhdmVfbWFzdGVyX2hvc3QgU0FWRV9NQVNURVJfSE9TVAor LS1ldmFsIENIQU5HRSBNQVNURVIgVE8gbWFzdGVyX2hvc3Q9JyRzYXZlX21hc3Rlcl9ob3N0Jwor LS1zb3VyY2UgaW5jbHVkZS9zdGFydF9zbGF2ZS5pbmMKCj09PSBhZGRlZCBmaWxlICdteXNxbC10 ZXN0L2luY2x1ZGUvcmVzdGFydF9zbGF2ZV9zcWwuaW5jJwotLS0gYS9teXNxbC10ZXN0L2luY2x1 ZGUvcmVzdGFydF9zbGF2ZV9zcWwuaW5jCTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIv bXlzcWwtdGVzdC9pbmNsdWRlL3Jlc3RhcnRfc2xhdmVfc3FsLmluYwkyMDExLTAxLTE4IDE3OjIz OjQ5ICswMDAwCkBAIC0wLDAgKzEsNDMgQEAKKyMgPT09PSBQdXJwb3NlID09PT0KKyMKKyMgUHJv dmlkZSBhIGVhcmllciB3YXkgdG8gcmVzdGFydCBTUUwgdGhyZWFkIHdoZW4geW91IHdhbnQgdG8g c3RvcCBzcWwgdGhyZWFkCisjIGFuZCB0aGVuIHN0YXJ0IGl0IGltbWVkaWF0ZWx5LgorIworIyBT b3VyY2VzIHN0b3Bfc2xhdmVfc3FsLmluYyB0byBzdG9wIFNRTCB0aHJlYWQgb24gdGhlIGN1cnJl bnQgY29ubmVjdGlvbi4KKyMgVGhlbiBpc3N1ZXMgU1RBUlQgU0xBVkUgU1FMX1RIUkVBRCBhbmQg dGhlbiB3YWl0cyB1bnRpbAorIyB0aGUgU1FMIHRocmVhZHMgaGF2ZSBzdGFydGVkLCBvciB1bnRp bCBhIHRpbWVvdXQgaXMgcmVhY2hlZC4KKyMKKyMgUGxlYXNlIHVzZSB0aGlzIGluc3RlYWQgb2Yg J1NUT1B8U1RBUlQgU0xBVkUgU1FMX1RIUkVBRCcsIHRvIHJlZHVjZSB0aGUgcmlzayBvZgorIyB0 ZXN0IGNhc2UgYnVncy4KKyMKKyMKKyMgPT09PSBVc2FnZSA9PT09CisjCisjIFstLWxldCAkc2xh dmVfdGltZW91dD0gTlVNQkVSXQorIyBbLS1sZXQgJHJwbF9kZWJ1Zz0gMV0KKyMgLS1zb3VyY2Ug aW5jbHVkZS9yZXN0YXJ0X3NsYXZlX3NxbC5pbmMKKyMKKyMgUGFyYW1ldGVyczoKKyMgICAkc2xh dmVfdGltZW91dAorIyAgICAgU2VlIGluY2x1ZGUvd2FpdF9mb3Jfc2xhdmVfcGFyYW0uaW5jCisj CisjICAgJHJwbF9kZWJ1ZworIyAgICAgU2VlIGluY2x1ZGUvcnBsX2luaXQuaW5jCisKKworLS1s ZXQgJGluY2x1ZGVfZmlsZW5hbWU9IHJlc3RhcnRfc2xhdmUuaW5jCistLXNvdXJjZSBpbmNsdWRl L2JlZ2luX2luY2x1ZGVfZmlsZS5pbmMKKworCitpZiAoISRycGxfZGVidWcpCit7CisgIC0tZGlz YWJsZV9xdWVyeV9sb2cKK30KKworc291cmNlIGluY2x1ZGUvc3RvcF9zbGF2ZV9zcWwuaW5jOwor U1RBUlQgU0xBVkUgU1FMX1RIUkVBRDsKK3NvdXJjZSBpbmNsdWRlL3dhaXRfZm9yX3NsYXZlX3Nx bF90b19zdGFydC5pbmM7CisKKworLS1sZXQgJGluY2x1ZGVfZmlsZW5hbWU9IHJlc3RhcnRfc2xh dmUuaW5jCistLXNvdXJjZSBpbmNsdWRlL2VuZF9pbmNsdWRlX2ZpbGUuaW5jClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3QvaW5jbHVkZS9ycGxf Y29ubmVjdGlvbl9tYXN0ZXIuaW5jJwotLS0gYS9teXNxbC10ZXN0L2luY2x1ZGUvcnBsX2Nvbm5l Y3Rpb25fbWFzdGVyLmluYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRl c3QvaW5jbHVkZS9ycGxfY29ubmVjdGlvbl9tYXN0ZXIuaW5jCTIwMTEtMDEtMTggMTc6MjM6NDkg KzAwMDAKQEAgLTAsMCArMSwyIEBACitsZXQgJHJwbF9jb25uZWN0aW9uX25hbWU9IG1hc3RlcjsK K3NvdXJjZSBpbmNsdWRlL3JwbF9jb25uZWN0aW9uLmluYzsKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCgo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9pbmNsdWRlL3JwbF9jb25uZWN0aW9u X3NsYXZlLmluYycKLS0tIGEvbXlzcWwtdGVzdC9pbmNsdWRlL3JwbF9jb25uZWN0aW9uX3NsYXZl LmluYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3QvaW5jbHVkZS9y cGxfY29ubmVjdGlvbl9zbGF2ZS5pbmMJMjAxMS0wMS0xOCAxNzoyMzo0OSArMDAwMApAQCAtMCww ICsxLDIgQEAKK2xldCAkcnBsX2Nvbm5lY3Rpb25fbmFtZT0gc2xhdmU7Citzb3VyY2UgaW5jbHVk ZS9ycGxfY29ubmVjdGlvbi5pbmM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKPT09IGFk ZGVkIGZpbGUgJ215c3FsLXRlc3QvaW5jbHVkZS9ycGxfY29ubmVjdGlvbl9zbGF2ZTEuaW5jJwot LS0gYS9teXNxbC10ZXN0L2luY2x1ZGUvcnBsX2Nvbm5lY3Rpb25fc2xhdmUxLmluYwkxOTcwLTAx LTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3QvaW5jbHVkZS9ycGxfY29ubmVjdGlv bl9zbGF2ZTEuaW5jCTIwMTEtMDEtMTggMTc6MjM6NDkgKzAwMDAKQEAgLTAsMCArMSwyIEBACits ZXQgJHJwbF9jb25uZWN0aW9uX25hbWU9IHNsYXZlMTsKK3NvdXJjZSBpbmNsdWRlL3JwbF9jb25u ZWN0aW9uLmluYzsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgo9PT0gbW9kaWZpZWQgZmls ZSAnbXlzcWwtdGVzdC9yL2N0eXBlX21hbnkucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvY3R5 cGVfbWFueS5yZXN1bHQJMjAxMC0xMi0xNSAwOTo1ODozNyArMDAwMAorKysgYi9teXNxbC10ZXN0 L3IvY3R5cGVfbWFueS5yZXN1bHQJMjAxMS0wMS0xNyAxMjoyNjoxMyArMDAwMApAQCAtMTY4NCw2 ICsxNjg0LDIxIEBAIEFSTUVOSUFOIENBUElUIEVDSAkyCiBBUk1FTklBTiBDQVBJVCBaQQkyCiBE Uk9QIFRBQkxFIHQxOwogIworIyBTdGFydCBvZiA1LjEgdGVzdHMKKyMKKyMKKyMgQnVnIzU4Mzcx IEFzc2VydGlvbiBmYWlsZWQ6ICFzLnVzZXNfYnVmZmVyX293bmVkX2J5KHRoaXMpIHdpdGggZm9y bWF0IHN0cmluZyBmdW5jdGlvbgorIworU0VUIE5BTUVTIGxhdGluMTsKK0RPIENPTlZFUlQoQ0FT VChTVUJTVFJJTkdfSU5ERVgoRk9STUFUKDEsJzExMTEnKSwgRk9STUFUKCcnLCdacHEnKSwxKSAK K0FTIEJJTkFSWSgwKSkgVVNJTkcgdXRmOCk7CitXYXJuaW5nczoKK1dhcm5pbmcJMTI5MglUcnVu Y2F0ZWQgaW5jb3JyZWN0IElOVEVHRVIgdmFsdWU6ICdacHEnCitXYXJuaW5nCTEyOTIJVHJ1bmNh dGVkIGluY29ycmVjdCBCSU5BUlkoMCkgdmFsdWU6ICcxLicKKyMKKyMgRW5kIG9mIDUuMSB0ZXN0 cworIworIwogIyBTdGFydCBvZiA1LjUgdGVzdHMKICMKICMKCj09PSBtb2RpZmllZCBmaWxlICdt eXNxbC10ZXN0L3IvY3R5cGVfdWNzLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL2N0eXBlX3Vj cy5yZXN1bHQJMjAxMC0xMi0wMiAxNzo0Nzo1NiArMDAwMAorKysgYi9teXNxbC10ZXN0L3IvY3R5 cGVfdWNzLnJlc3VsdAkyMDExLTAxLTE4IDA3OjE2OjQ5ICswMDAwCkBAIC00NjIwLDUgKzQ2MjAs MTggQEAgYWUJMDA2MTAwNjUKIGRyb3AgdGFibGUgdDE7CiAiRU5EIGN0eXBlX2dlcm1hbi5pbmMi CiAjCisjIEJ1ZyM1OTE0NSB2YWxncmluZCB3YXJuaW5ncyBmb3IgdW5pbml0aWFsaXplZCB2YWx1 ZXMgaW4gbXlfc3RydG9sbDEwX21iMgorIworU0VUIE5BTUVTIGxhdGluMTsKK1NFTEVDVCBDT05W RVJUKENIQVIoTlVMTCBVU0lORyB1Y3MyKSwgVU5TSUdORUQpOworQ09OVkVSVChDSEFSKE5VTEwg VVNJTkcgdWNzMiksIFVOU0lHTkVEKQorMAorV2FybmluZ3M6CitXYXJuaW5nCTEyOTIJVHJ1bmNh dGVkIGluY29ycmVjdCBJTlRFR0VSIHZhbHVlOiAnJworRE8gSUZOVUxMKENIQVIoTlVMTCBVU0lO RyB1Y3MyKSwgJycpOworRE8gQ0FTVChDT05WRVJUKCcnIFVTSU5HIHVjczIpIEFTIFVOU0lHTkVE KTsKK1dhcm5pbmdzOgorV2FybmluZwkxMjkyCVRydW5jYXRlZCBpbmNvcnJlY3QgSU5URUdFUiB2 YWx1ZTogJycKKyMKICMgRW5kIG9mIDUuNiB0ZXN0cwogIwoKPT09IG1vZGlmaWVkIGZpbGUgJ215 c3FsLXRlc3Qvci9mdW5jX2xpa2UucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvZnVuY19saWtl LnJlc3VsdAkyMDEwLTExLTExIDEwOjMxOjE3ICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9mdW5j X2xpa2UucmVzdWx0CTIwMTEtMDEtMTcgMDk6Mzk6NTkgKzAwMDAKQEAgLTE4Miw0ICsxODIsOSBA QCBJTlNFUlQgSU5UTyB0MiBWQUxVRVMgKDEpLCAoMiksICgzKTsKIFNFTEVDVCAxIEZST00gdDIg Sk9JTiB0MSBPTiAxIExJS0UgYSBHUk9VUCBCWSBhOwogMQogRFJPUCBUQUJMRSB0MSwgdDI7Cisj CisjIEJ1ZyM1OTE0OSB2YWxncmluZCB3YXJuaW5ncyB3aXRoICJsaWtlIC4uIGVzY2FwZSAuLiIg ZnVuY3Rpb24KKyMKK1NFTEVDVCAnJyBMSUtFICcxJyBFU0NBUEUgQ09VTlQoMSk7CitFUlJPUiBI WTAwMDogSW5jb3JyZWN0IGFyZ3VtZW50cyB0byBFU0NBUEUKIEVuZCBvZiA1LjEgdGVzdHMKCj09 PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3Ivc2hvd19jaGVjay5yZXN1bHQnCi0tLSBhL215 c3FsLXRlc3Qvci9zaG93X2NoZWNrLnJlc3VsdAkyMDExLTAxLTE3IDA3OjE0OjI3ICswMDAwCisr KyBiL215c3FsLXRlc3Qvci9zaG93X2NoZWNrLnJlc3VsdAkyMDExLTAxLTE4IDEzOjA5OjM1ICsw MDAwCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBDUkVBVEUgREFUQUJBU0UgYO+/vWA7CiBDUkVBVEUg VEFCTEUgYO+/vWAuYO+/vWAgKGEgaW50KSBFTkdJTkU9TWVtb3J5OwogU0hPVyBUQUJMRSBTVEFU VVMgRlJPTSBg77+9YCBMSUtFICfvv70nOwogTmFtZQlFbmdpbmUJVmVyc2lvbglSb3dfZm9ybWF0 CVJvd3MJQXZnX3Jvd19sZW5ndGgJRGF0YV9sZW5ndGgJTWF4X2RhdGFfbGVuZ3RoCUluZGV4X2xl bmd0aAlEYXRhX2ZyZWUJQXV0b19pbmNyZW1lbnQJQ3JlYXRlX3RpbWUJVXBkYXRlX3RpbWUJQ2hl Y2tfdGltZQlDb2xsYXRpb24JQ2hlY2tzdW0JQ3JlYXRlX29wdGlvbnMJQ29tbWVudAot77+9CU1F TU9SWQkxMAlGaXhlZAkwCTgJIwkjCSMJMAlOVUxMCU5VTEwJTlVMTAlOVUxMCWxhdGluMV9zd2Vk aXNoX2NpCU5VTEwJCQor77+9CU1FTU9SWQkxMAlGaXhlZAkwCSMJIwkjCSMJMAlOVUxMCU5VTEwJ TlVMTAlOVUxMCWxhdGluMV9zd2VkaXNoX2NpCU5VTEwJCQogRFJPUCBEQVRBQkFTRSBg77+9YDsK IHNob3cgY29sdW1ucyBmcm9tIGAjbXlzcWw1MCM/Pz8/Pz8/P2A7CiBHb3Qgb25lIG9mIHRoZSBs aXN0ZWQgZXJyb3JzCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL3htbC5yZXN1bHQn Ci0tLSBhL215c3FsLXRlc3Qvci94bWwucmVzdWx0CTIwMTAtMTEtMjQgMTU6MjU6MjUgKzAwMDAK KysrIGIvbXlzcWwtdGVzdC9yL3htbC5yZXN1bHQJMjAxMS0wMS0xOCAwNjo1Mzo0NSArMDAwMApA QCAtMTExMyw2ICsxMTEzLDE3IEBAIFNFTEVDVCBVUERBVEVYTUwoTlVMTCwgKExQQUQoMC4xMTEx RS0xNSwKIEVSUk9SIDIyMDA3OiBJbGxlZ2FsIGRvdWJsZSAnMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx JyB2YWx1ZSBmb3VuZCBkdXJpbmcgcGFyc2luZwogU0VMRUNUIEVYVFJBQ1RWQUxVRSgnJywgTFBB RCgwLjExMTFFLTE1LCAnMjAxMScsIDEpKTsKIEVSUk9SIDIyMDA3OiBJbGxlZ2FsIGRvdWJsZSAn MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExJyB2YWx1ZSBmb3VuZCBkdXJpbmcgcGFyc2luZworIworIyBC dWcgIzQ0MzMyIAlteV94bWxfc2NhbiByZWFkcyBiZWhpbmQgdGhlIGVuZCBvZiBidWZmZXIKKyMK K1NFTEVDVCBVUERBVEVYTUwoQ09OVkVSVChfbGF0aW4xJzwnIFVTSU5HIHV0ZjgpLCcxJywnMScp OworVVBEQVRFWE1MKENPTlZFUlQoX2xhdGluMSc8JyBVU0lORyB1dGY4KSwnMScsJzEnKQorTlVM TAorV2FybmluZ3M6CitXYXJuaW5nCTE1MjUJSW5jb3JyZWN0IFhNTCB2YWx1ZTogJ3BhcnNlIGVy cm9yIGF0IGxpbmUgMSBwb3MgMjogRU5ELU9GLUlOUFVUIHVuZXhwZWN0ZWQgKGlkZW50IG9yICcv JyB3YW50ZWQpJworU0VMRUNUIFVQREFURVhNTChDT05WRVJUKF9sYXRpbjEnPCEtLScgVVNJTkcg dXRmOCksJzEnLCcxJyk7CitVUERBVEVYTUwoQ09OVkVSVChfbGF0aW4xJzwhLS0nIFVTSU5HIHV0 ZjgpLCcxJywnMScpCitOVUxMCiBFbmQgb2YgNS4xIHRlc3RzCiAjCiAjIFN0YXJ0IG9mIDUuNSB0 ZXN0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBsX2NoYW5n ZV9tYXN0ZXIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9jaGFuZ2Vf bWFzdGVyLnJlc3VsdAkyMDEwLTEyLTE5IDE3OjI1OjQyICswMDAwCisrKyBiL215c3FsLXRlc3Qv c3VpdGUvcnBsL3IvcnBsX2NoYW5nZV9tYXN0ZXIucmVzdWx0CTIwMTEtMDEtMTcgMTg6Mjk6NDEg KzAwMDAKQEAgLTg3LDQgKzg3LDcgQEAgY2hhbmdlIG1hc3RlciB0byAgbWFzdGVyX2JpbmQ9PG1h c3Rlcl9iaQogc3RhcnQgc2xhdmU7CiBpbmNsdWRlL3dhaXRfZm9yX3NsYXZlX3RvX3N0YXJ0Lmlu YwogZHJvcCB0YWJsZSB0MTsKK2luY2x1ZGUvc3RvcF9zbGF2ZS5pbmMKK0NIQU5HRSBNQVNURVIg VE8gbWFzdGVyX2hvc3Q9J1NBVkVfTUFTVEVSX0hPU1QnOworaW5jbHVkZS9zdGFydF9zbGF2ZS5p bmMKIGluY2x1ZGUvcnBsX2VuZC5pbmMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1 aXRlL3JwbC9yL3JwbF9jaGFuZ2VfbWFzdGVyX2NyYXNoX3NhZmUucmVzdWx0JwotLS0gYS9teXNx bC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9jaGFuZ2VfbWFzdGVyX2NyYXNoX3NhZmUucmVzdWx0CTIw MTAtMTItMTkgMTc6MjU6NDIgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9ycGwvci9ycGxf Y2hhbmdlX21hc3Rlcl9jcmFzaF9zYWZlLnJlc3VsdAkyMDExLTAxLTE3IDE4OjI5OjQxICswMDAw CkBAIC04Nyw0ICs4Nyw3IEBAIGNoYW5nZSBtYXN0ZXIgdG8gIG1hc3Rlcl9iaW5kPTxtYXN0ZXJf YmkKIHN0YXJ0IHNsYXZlOwogaW5jbHVkZS93YWl0X2Zvcl9zbGF2ZV90b19zdGFydC5pbmMKIGRy b3AgdGFibGUgdDE7CitpbmNsdWRlL3N0b3Bfc2xhdmUuaW5jCitDSEFOR0UgTUFTVEVSIFRPIG1h c3Rlcl9ob3N0PSdTQVZFX01BU1RFUl9IT1NUJzsKK2luY2x1ZGUvc3RhcnRfc2xhdmUuaW5jCiBp bmNsdWRlL3JwbF9lbmQuaW5jCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9y cGwvci9ycGxfc3RvcF9zbGF2ZS5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvcnBsL3Iv cnBsX3N0b3Bfc2xhdmUucmVzdWx0CTIwMTAtMTItMTkgMTc6MTU6MTIgKzAwMDAKKysrIGIvbXlz cWwtdGVzdC9zdWl0ZS9ycGwvci9ycGxfc3RvcF9zbGF2ZS5yZXN1bHQJMjAxMS0wMS0xOCAxNzoz ODoxMCArMDAwMApAQCAtNzQsNSArNzQsNDcgQEAgaW5jbHVkZS93YWl0X2Zvcl9zbGF2ZV9zcWxf dG9fc3RhcnQuaW5jCiAKICMgVGVzdCBlbmQKIFNFVCBHTE9CQUwgZGVidWc9ICckZGVidWdfc2F2 ZSc7CitpbmNsdWRlL3Jlc3RhcnRfc2xhdmUuaW5jCitbY29ubmVjdGlvbiBtYXN0ZXJdCiBEUk9Q IFRBQkxFIHQxLCB0MjsKKworIyBCdWcjNTg1NDYgdGVzdCBycGxfcGFja2V0IHRpbWVvdXQgZmFp bHVyZSBzcG9yYWRpY2FsbHkgb24gUEIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTVE9QIFNMQVZFIHN0 b3BwZWQgSU8gdGhyZWFkIGZpcnN0IGFuZCB0aGVuIHN0b3BwZWQgU1FMIHRocmVhZC4gSXQgd2Fz CisjIHBvc3NpYmxlIHRoYXQgSU8gdGhyZWFkIHN0b3BwZWQgYWZ0ZXIgcmVwbGljYXRpbmcgcGFy dCBvZiBhIHRyYW5zYWN0aW9uCisjIHdoaWNoIFNRTCB0aHJlYWQgd2FzIGV4ZWN1dGluZy4gU1FM IHRocmVhZCB3b3VsZCBiZSBodW5nIGlmIHRoZQorIyB0cmFuc2FjdGlvbiBjb3VsZCBub3QgYmUg cm9sbGVkIGJhY2sgc2FmZWx5LgorIyBJdCBjYXVzZWQgc29tZSBzcG9yYWRpYyBmYWlsdXJlcyBv biBQQjIuCisjCisjIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdoZW4gJ1NUT1AgU0xBVkUnIGlz IGlzc3VlZCBieSBhIHVzZXIsIElPCisjIHRocmVhZCB3aWxsIGNvbnRpbnVlIHRvIGZldGNoIHRo ZSByZXN0IGV2ZW50cyBvZiB0aGUgdHJhbnNhY3Rpb24gd2hpY2gKKyMgaXMgYmVpbmcgZXhlY3V0 ZWQgYnkgU1FMIHRocmVhZCBhbmQgaXMgbm90IGFibGUgdG8gYmUgcm9sbGVkIGJhY2sgc2FmZWx5 LgorQ1JFQVRFIFRBQkxFIHQxIChjMSBJTlQgS0VZLCBjMiBJTlQpIEVOR0lORT1Jbm5vREI7CitD UkVBVEUgVEFCTEUgdDIgKGMxIElOVCkgRU5HSU5FPU15SVNBTTsKK0lOU0VSVCBJTlRPIHQxIFZB TFVFUygxLCAxKTsKK1NFVCBHTE9CQUwgZGVidWc9ICdkLGR1bXBfdGhyZWFkX3dhaXRfYmVmb3Jl X3NlbmRfeGlkJzsKK1tjb25uZWN0aW9uIHNsYXZlXQoraW5jbHVkZS9yZXN0YXJ0X3NsYXZlLmlu YworQkVHSU47CitVUERBVEUgdDEgU0VUIGMyID0gMiBXSEVSRSBjMSA9IDE7CitbY29ubmVjdGlv biBtYXN0ZXJdCitCRUdJTjsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUygyLCAyKTsKK0lOU0VSVCBJ TlRPIHQyIFZBTFVFUygxKTsKK1VQREFURSB0MSBTRVQgYzIgPSAzIFdIRVJFIGMxID0gMTsKK0NP TU1JVDsKK1tjb25uZWN0aW9uIHNsYXZlMV0KK1NUT1AgU0xBVkU7CitbY29ubmVjdGlvbiBzbGF2 ZV0KK1JPTExCQUNLOworW2Nvbm5lY3Rpb24gbWFzdGVyXQorU0VUIERFQlVHX1NZTkM9ICdub3cg U0lHTkFMIHNpZ25hbC5jb250aW51ZSc7CitTRVQgREVCVUdfU1lOQz0gJ1JFU0VUJzsKK1tjb25u ZWN0aW9uIHNsYXZlXQoraW5jbHVkZS93YWl0X2Zvcl9zbGF2ZV90b19zdG9wLmluYworW2Nvbm5l Y3Rpb24gc2xhdmUxXQoraW5jbHVkZS9zdGFydF9zbGF2ZS5pbmMKK1tjb25uZWN0aW9uIG1hc3Rl cl0KK0RST1AgVEFCTEUgdDEsIHQyOworU0VUIEdMT0JBTCBkZWJ1Zz0gJGRlYnVnX3NhdmU7CiBp bmNsdWRlL3JwbF9lbmQuaW5jCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9y cGwvdC9ycGxfY3Jvc3NfdmVyc2lvbi50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3JwbC90 L3JwbF9jcm9zc192ZXJzaW9uLnRlc3QJMjAxMC0xMi0xOSAxNzoxNToxMiArMDAwMAorKysgYi9t eXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9jcm9zc192ZXJzaW9uLnRlc3QJMjAxMS0wMS0xNyAx ODo1MTowMSArMDAwMApAQCAtMTIsMTEgKzEyLDYgQEAKIAogLS1zb3VyY2UgaW5jbHVkZS9tYXN0 ZXItc2xhdmUuaW5jCiAKLSMgVGhlIHRlc3QgaXMgZGlzYWJsZWQgZm9yIHdpbmRvd3MgZHVlIHRv IAotIyBCdWcgIzQyODc5IENIQU5HRSBNQVNURVIgUkVMQVlfTE9HX0ZJTEU9cGF0aCBmYWlscyBv biB3aW5kb3dzCi0jIFRvZG86IHJlbGVhc2UgaXQgZnJvbSBub3Rfd2luZG93cwotLS1zb3VyY2Ug aW5jbHVkZS9ub3Rfd2luZG93cy5pbmMKLQogIwogIyBCdWcjMzEyNDAgbG9hZCBkYXRhIGluZmls ZSByZXBsaWNhdGlvbiBiZXR3ZWVuICg0LjAgb3IgNC4xKSBhbmQgNS4xIGZhaWxzCiAjCgo9PT0g bW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9ycGwvdC9ycGxfcGFja2V0LnRlc3QnCi0t LSBhL215c3FsLXRlc3Qvc3VpdGUvcnBsL3QvcnBsX3BhY2tldC50ZXN0CTIwMTAtMTItMTkgMTc6 MjI6MzAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9ycGwvdC9ycGxfcGFja2V0LnRlc3QJ MjAxMS0wMS0xOCAxNzo1NDoxOSArMDAwMApAQCAtMjYsOCArMjYsOCBAQCBsZXQgJG9sZF9uZXRf YnVmZmVyX2xlbmd0aD0gYFNFTEVDVCBAQGdsCiBTRVQgQEBnbG9iYWwubWF4X2FsbG93ZWRfcGFj a2V0PTEwMjQ7CiBTRVQgQEBnbG9iYWwubmV0X2J1ZmZlcl9sZW5ndGg9MTAyNDsKIAorc3luY19z bGF2ZV93aXRoX21hc3RlcjsKICMgUmVzdGFydCBzbGF2ZSBmb3Igc2V0dGluZyB0byB0YWtlIGVm ZmVjdAotY29ubmVjdGlvbiBzbGF2ZTsKIHNvdXJjZSBpbmNsdWRlL3N0b3Bfc2xhdmUuaW5jOwog c291cmNlIGluY2x1ZGUvc3RhcnRfc2xhdmUuaW5jOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlz cWwtdGVzdC9zdWl0ZS9ycGwvdC9ycGxfc3RvcF9zbGF2ZS50ZXN0JwotLS0gYS9teXNxbC10ZXN0 L3N1aXRlL3JwbC90L3JwbF9zdG9wX3NsYXZlLnRlc3QJMjAxMC0xMi0xOSAxNzoxNToxMiArMDAw MAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9zdG9wX3NsYXZlLnRlc3QJMjAxMS0w MS0xOCAxNzozODoxMCArMDAwMApAQCAtNDUsNyArNDUsNjkgQEAgc291cmNlIGV4dHJhL3JwbF90 ZXN0cy9ycGxfc3RvcF9zbGF2ZS50ZQogLS1lY2hvCiAtLWVjaG8gIyBUZXN0IGVuZAogU0VUIEdM T0JBTCBkZWJ1Zz0gJyRkZWJ1Z19zYXZlJzsKK3NvdXJjZSBpbmNsdWRlL3Jlc3RhcnRfc2xhdmVf c3FsLmluYzsKIAotY29ubmVjdGlvbiBtYXN0ZXI7CistLXNvdXJjZSBpbmNsdWRlL3JwbF9jb25u ZWN0aW9uX21hc3Rlci5pbmMKIERST1AgVEFCTEUgdDEsIHQyOworCistLWVjaG8KKy0tZWNobyAj IEJ1ZyM1ODU0NiB0ZXN0IHJwbF9wYWNrZXQgdGltZW91dCBmYWlsdXJlIHNwb3JhZGljYWxseSBv biBQQgorLS1lY2hvICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS1lY2hvICMgU1RPUCBTTEFWRSBzdG9wcGVk IElPIHRocmVhZCBmaXJzdCBhbmQgdGhlbiBzdG9wcGVkIFNRTCB0aHJlYWQuIEl0IHdhcworLS1l Y2hvICMgcG9zc2libGUgdGhhdCBJTyB0aHJlYWQgc3RvcHBlZCBhZnRlciByZXBsaWNhdGluZyBw YXJ0IG9mIGEgdHJhbnNhY3Rpb24KKy0tZWNobyAjIHdoaWNoIFNRTCB0aHJlYWQgd2FzIGV4ZWN1 dGluZy4gU1FMIHRocmVhZCB3b3VsZCBiZSBodW5nIGlmIHRoZQorLS1lY2hvICMgdHJhbnNhY3Rp b24gY291bGQgbm90IGJlIHJvbGxlZCBiYWNrIHNhZmVseS4KKy0tZWNobyAjIEl0IGNhdXNlZCBz b21lIHNwb3JhZGljIGZhaWx1cmVzIG9uIFBCMi4KKy0tZWNobyAjCistLWVjaG8gIyBUaGlzIHRl c3QgdmVyaWZpZXMgdGhhdCB3aGVuICdTVE9QIFNMQVZFJyBpcyBpc3N1ZWQgYnkgYSB1c2VyLCBJ TworLS1lY2hvICMgdGhyZWFkIHdpbGwgY29udGludWUgdG8gZmV0Y2ggdGhlIHJlc3QgZXZlbnRz IG9mIHRoZSB0cmFuc2FjdGlvbiB3aGljaAorLS1lY2hvICMgaXMgYmVpbmcgZXhlY3V0ZWQgYnkg U1FMIHRocmVhZCBhbmQgaXMgbm90IGFibGUgdG8gYmUgcm9sbGVkIGJhY2sgc2FmZWx5LgorCitD UkVBVEUgVEFCTEUgdDEgKGMxIElOVCBLRVksIGMyIElOVCkgRU5HSU5FPUlubm9EQjsKK0NSRUFU RSBUQUJMRSB0MiAoYzEgSU5UKSBFTkdJTkU9TXlJU0FNOworSU5TRVJUIElOVE8gdDEgVkFMVUVT KDEsIDEpOworCitsZXQgJGRlYnVnX3NhdmU9IGBTRUxFQ1QgQEBHTE9CQUwuZGVidWdgOworU0VU IEdMT0JBTCBkZWJ1Zz0gJ2QsZHVtcF90aHJlYWRfd2FpdF9iZWZvcmVfc2VuZF94aWQnOworCitz eW5jX3NsYXZlX3dpdGhfbWFzdGVyOworCistLXNvdXJjZSBpbmNsdWRlL3JwbF9jb25uZWN0aW9u X3NsYXZlLmluYworc291cmNlIGluY2x1ZGUvcmVzdGFydF9zbGF2ZV9zcWwuaW5jOworCitCRUdJ TjsKK1VQREFURSB0MSBTRVQgYzIgPSAyIFdIRVJFIGMxID0gMTsKKworLS1zb3VyY2UgaW5jbHVk ZS9ycGxfY29ubmVjdGlvbl9tYXN0ZXIuaW5jCitCRUdJTjsKK0lOU0VSVCBJTlRPIHQxIFZBTFVF UygyLCAyKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygxKTsKK1VQREFURSB0MSBTRVQgYzIgPSAz IFdIRVJFIGMxID0gMTsKK0NPTU1JVDsKKworLS1zb3VyY2UgaW5jbHVkZS9ycGxfY29ubmVjdGlv bl9zbGF2ZTEuaW5jCitsZXQgJHNob3dfc3RhdGVtZW50PSBTSE9XIFBST0NFU1NMSVNUOworbGV0 ICRmaWVsZD0gSW5mbzsKK2xldCAkY29uZGl0aW9uPSA9ICdVUERBVEUgdDEgU0VUIGMyID0gMyBX SEVSRSBjMSA9IDEnOworc291cmNlIGluY2x1ZGUvd2FpdF9zaG93X2NvbmRpdGlvbi5pbmM7CisK K3NlbmQgU1RPUCBTTEFWRTsKKworLS1zb3VyY2UgaW5jbHVkZS9ycGxfY29ubmVjdGlvbl9zbGF2 ZS5pbmMKK1JPTExCQUNLOworCistLXNvdXJjZSBpbmNsdWRlL3JwbF9jb25uZWN0aW9uX21hc3Rl ci5pbmMKK1NFVCBERUJVR19TWU5DPSAnbm93IFNJR05BTCBzaWduYWwuY29udGludWUnOworU0VU IERFQlVHX1NZTkM9ICdSRVNFVCc7CisKKy0tc291cmNlIGluY2x1ZGUvcnBsX2Nvbm5lY3Rpb25f c2xhdmUuaW5jCitzb3VyY2UgaW5jbHVkZS93YWl0X2Zvcl9zbGF2ZV90b19zdG9wLmluYzsKKwor LS1zb3VyY2UgaW5jbHVkZS9ycGxfY29ubmVjdGlvbl9zbGF2ZTEuaW5jCityZWFwOworc291cmNl IGluY2x1ZGUvc3RhcnRfc2xhdmUuaW5jOworCistLXNvdXJjZSBpbmNsdWRlL3JwbF9jb25uZWN0 aW9uX21hc3Rlci5pbmMKK0RST1AgVEFCTEUgdDEsIHQyOworU0VUIEdMT0JBTCBkZWJ1Zz0gJGRl YnVnX3NhdmU7CiAtLXNvdXJjZSBpbmNsdWRlL3JwbF9lbmQuaW5jCgo9PT0gbW9kaWZpZWQgZmls ZSAnbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy9yL2lubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0 X2Z1bmMucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3IvaW5ub2RiX21h eF9kaXJ0eV9wYWdlc19wY3RfZnVuYy5yZXN1bHQJMjAwOS0wMS0zMCAxNjo1OToxMCArMDAwMAor KysgYi9teXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3IvaW5ub2RiX21heF9kaXJ0eV9wYWdlc19w Y3RfZnVuYy5yZXN1bHQJMjAxMS0wMS0xOCAwMzo1NDo1MiArMDAwMApAQCAtNjQsMTIgKzY0LDEy IEBAIFNFVCBsYXN0ID0gcGN0OwogRU5EIElGOwogRU5EIFdISUxFOwogRU5ELy8KLUNSRUFURSBQ Uk9DRURVUkUgY2hlY2tfcGN0KElOIG51bSBERUNJTUFMKQorQ1JFQVRFIFBST0NFRFVSRSBjaGVj a19wY3QoSU4gc3VjY2Vzc19vbl93YWl0IEJPT0xFQU4pCiBCRUdJTgotSUYgKGRpcnR5X3BjdCgp IDwgbnVtKSBUSEVOCitJRiAoc3VjY2Vzc19vbl93YWl0ID4gMCkgVEhFTgogU0VMRUNUICdCRUxP V19NQVgnIEFTIFBDVF9WQUxVRTsKIEVMU0UKLVNFTEVDVCAnQUJPVkVfTUFYJyBBUyBQQ1RfVkFM VUU7CitTRUxFQ1QgJ0FCT1ZFX01BWCBvciBUaW1lT3V0IE9mIFRoZSBUZXN0JyBBUyBQQ1RfVkFM VUU7CiBFTkQgSUY7CiBFTkQvLwogQ1JFQVRFIFRBQkxFIHQxKApAQCAtODMsNyArODMsNyBAQCBD QUxMIGFkZF91bnRpbCgxMCk7CiBGTFVTSCBUQUJMRVM7CiBDQUxMIGFkZF9yZWNvcmRzKDUwMCk7 CiAnV2UgZXhwZWN0IGRpcnR5IHBhZ2VzIHBjdCB0byBiZSBCRUxPV19NQVggYWZ0ZXIgc29tZSB0 aW1lIGRlcGVuZGluZyBvbiBwZXJmb3JtYW5jZScKLUNBTEwgY2hlY2tfcGN0KDEwKTsKK0NBTEwg Y2hlY2tfcGN0KDEpOwogUENUX1ZBTFVFCiBCRUxPV19NQVgKIERST1AgUFJPQ0VEVVJFIGFkZF9y ZWNvcmRzOwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9p bm5vZGJfbWF4X2RpcnR5X3BhZ2VzX3BjdF9mdW5jLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3Vp dGUvc3lzX3ZhcnMvdC9pbm5vZGJfbWF4X2RpcnR5X3BhZ2VzX3BjdF9mdW5jLnRlc3QJMjAwOS0w My0yMCAxNzoxMToyMiArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3QvaW5u b2RiX21heF9kaXJ0eV9wYWdlc19wY3RfZnVuYy50ZXN0CTIwMTEtMDEtMTggMDM6NTQ6NTIgKzAw MDAKQEAgLTExNywxMiArMTE3LDEyIEBAIEJFR0lOCiAgICBFTkQgV0hJTEU7CiBFTkQvLwogCi1D UkVBVEUgUFJPQ0VEVVJFIGNoZWNrX3BjdChJTiBudW0gREVDSU1BTCkKK0NSRUFURSBQUk9DRURV UkUgY2hlY2tfcGN0KElOIHN1Y2Nlc3Nfb25fd2FpdCBCT09MRUFOKQogQkVHSU4KLSAgIElGIChk aXJ0eV9wY3QoKSA8IG51bSkgVEhFTgorICAgSUYgKHN1Y2Nlc3Nfb25fd2FpdCA+IDApIFRIRU4K ICAgICAgIFNFTEVDVCAnQkVMT1dfTUFYJyBBUyBQQ1RfVkFMVUU7CiAgICBFTFNFCi0gICAgICBT RUxFQ1QgJ0FCT1ZFX01BWCcgQVMgUENUX1ZBTFVFOworICAgICAgU0VMRUNUICdBQk9WRV9NQVgg b3IgVGltZU91dCBPZiBUaGUgVGVzdCcgQVMgUENUX1ZBTFVFOwogICAgRU5EIElGOwogRU5ELy8K IApAQCAtMTU1LDcgKzE1NSw4IEBAIGxldCAkd2FpdF9jb25kaXRpb249IFNFTEVDVCAoZGlydHlf cGN0KCkKIC0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5jCiAKIC0tZWNobyAnV2Ug ZXhwZWN0IGRpcnR5IHBhZ2VzIHBjdCB0byBiZSBCRUxPV19NQVggYWZ0ZXIgc29tZSB0aW1lIGRl cGVuZGluZyBvbiBwZXJmb3JtYW5jZScKLUNBTEwgY2hlY2tfcGN0KDEwKTsKKyMgVmFsdWUgRm9y ICRzdWNlc3Mgd2lsbCBiZSBzZXQgZnJvbSBpbmNsdWRlL3dhaXRfY29uZGl0aW9uLmluYyBmaWxl LiBJdCBjYW4gaGF2ZSB2YWx1ZXMgMSBvciAwLiBJdCB3aWxsIGJlIDEgaWYgZGlydHlfcGN0KCkg PD0gQEBnbG9iYWwuaW5ub2RiX21heF9kaXJ0eV9wYWdlc19wY3QgZWxzZSBpdCB3aWxsIGJlIDAu CitldmFsIENBTEwgY2hlY2tfcGN0KCRzdWNjZXNzKTsKIERST1AgUFJPQ0VEVVJFIGFkZF9yZWNv cmRzOwogRFJPUCBQUk9DRURVUkUgYWRkX3VudGlsOwogRFJPUCBQUk9DRURVUkUgY2hlY2tfcGN0 OwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9jdHlwZV9tYW55LnRlc3QnCi0tLSBh L215c3FsLXRlc3QvdC9jdHlwZV9tYW55LnRlc3QJMjAxMC0xMi0xNSAwOTo1ODozNyArMDAwMAor KysgYi9teXNxbC10ZXN0L3QvY3R5cGVfbWFueS50ZXN0CTIwMTEtMDEtMTcgMTI6MjY6MTMgKzAw MDAKQEAgLTIxNyw2ICsyMTcsMjEgQEAgRFJPUCBUQUJMRSB0MTsKIAogCiAtLWVjaG8gIworLS1l Y2hvICMgU3RhcnQgb2YgNS4xIHRlc3RzCistLWVjaG8gIworCistLWVjaG8gIworLS1lY2hvICMg QnVnIzU4MzcxIEFzc2VydGlvbiBmYWlsZWQ6ICFzLnVzZXNfYnVmZmVyX293bmVkX2J5KHRoaXMp IHdpdGggZm9ybWF0IHN0cmluZyBmdW5jdGlvbgorLS1lY2hvICMKKworU0VUIE5BTUVTIGxhdGlu MTsKK0RPIENPTlZFUlQoQ0FTVChTVUJTVFJJTkdfSU5ERVgoRk9STUFUKDEsJzExMTEnKSwgRk9S TUFUKCcnLCdacHEnKSwxKSAKKyAgICAgICAgICAgICAgICBBUyBCSU5BUlkoMCkpIFVTSU5HIHV0 ZjgpOworLS1lY2hvICMKKy0tZWNobyAjIEVuZCBvZiA1LjEgdGVzdHMKKy0tZWNobyAjCisKKy0t ZWNobyAjCiAtLWVjaG8gIyBTdGFydCBvZiA1LjUgdGVzdHMKIC0tZWNobyAjCiAKCj09PSBtb2Rp ZmllZCBmaWxlICdteXNxbC10ZXN0L3QvY3R5cGVfdWNzLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qv dC9jdHlwZV91Y3MudGVzdAkyMDEwLTA2LTI1IDEyOjAwOjQ5ICswMDAwCisrKyBiL215c3FsLXRl c3QvdC9jdHlwZV91Y3MudGVzdAkyMDExLTAxLTE4IDA3OjE2OjQ5ICswMDAwCkBAIC03NjUsNSAr NzY1LDEzIEBAIFNFVCBjb2xsYXRpb25fY29ubmVjdGlvbj11Y3MyX2dlcm1hbjJfY2kKIC0tc291 cmNlIGluY2x1ZGUvY3R5cGVfZ2VybWFuLmluYwogCiAtLWVjaG8gIworLS1lY2hvICMgQnVnIzU5 MTQ1IHZhbGdyaW5kIHdhcm5pbmdzIGZvciB1bmluaXRpYWxpemVkIHZhbHVlcyBpbiBteV9zdHJ0 b2xsMTBfbWIyCistLWVjaG8gIworU0VUIE5BTUVTIGxhdGluMTsKK1NFTEVDVCBDT05WRVJUKENI QVIoTlVMTCBVU0lORyB1Y3MyKSwgVU5TSUdORUQpOworRE8gSUZOVUxMKENIQVIoTlVMTCBVU0lO RyB1Y3MyKSwgJycpOworRE8gQ0FTVChDT05WRVJUKCcnIFVTSU5HIHVjczIpIEFTIFVOU0lHTkVE KTsKKworLS1lY2hvICMKIC0tZWNobyAjIEVuZCBvZiA1LjYgdGVzdHMKIC0tZWNobyAjCgo9PT0g bW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC90L2Z1bmNfbGlrZS50ZXN0JwotLS0gYS9teXNxbC10 ZXN0L3QvZnVuY19saWtlLnRlc3QJMjAxMC0xMS0wOCAxMDo1NTo0MyArMDAwMAorKysgYi9teXNx bC10ZXN0L3QvZnVuY19saWtlLnRlc3QJMjAxMS0wMS0xNyAwOTozMDoyMiArMDAwMApAQCAtMTI2 LDUgKzEyNiwxMCBAQCBJTlNFUlQgSU5UTyB0MiBWQUxVRVMgKDEpLCAoMiksICgzKTsKIFNFTEVD VCAxIEZST00gdDIgSk9JTiB0MSBPTiAxIExJS0UgYSBHUk9VUCBCWSBhOwogRFJPUCBUQUJMRSB0 MSwgdDI7CiAKKy0tZWNobyAjCistLWVjaG8gIyBCdWcjNTkxNDkgdmFsZ3JpbmQgd2FybmluZ3Mg d2l0aCAibGlrZSAuLiBlc2NhcGUgLi4iIGZ1bmN0aW9uCistLWVjaG8gIworLS1lcnJvciBFUl9X Uk9OR19BUkdVTUVOVFMKK1NFTEVDVCAnJyBMSUtFICcxJyBFU0NBUEUgQ09VTlQoMSk7CiAKIC0t ZWNobyBFbmQgb2YgNS4xIHRlc3RzCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC90L3No b3dfY2hlY2sudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L3Nob3dfY2hlY2sudGVzdAkyMDExLTAx LTE3IDA3OjE0OjI3ICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9zaG93X2NoZWNrLnRlc3QJMjAx MS0wMS0xOCAxMzowOTozNSArMDAwMApAQCAtMTA3Myw3ICsxMDczLDcgQEAgc2V0IG5hbWVzIGxh dGluMTsKIFNFVCBOQU1FUyBsYXRpbjE7CiBDUkVBVEUgREFUQUJBU0UgYO+/vWA7CiBDUkVBVEUg VEFCTEUgYO+/vWAuYO+/vWAgKGEgaW50KSBFTkdJTkU9TWVtb3J5OwotLS1yZXBsYWNlX2NvbHVt biA3ICMgOCAjIDkgIworLS1yZXBsYWNlX2NvbHVtbiA2ICMgNyAjIDggIyA5ICMKIFNIT1cgVEFC TEUgU1RBVFVTIEZST00gYO+/vWAgTElLRSAn77+9JzsKIERST1AgREFUQUJBU0UgYO+/vWA7CiAK Cj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QveG1sLnRlc3QnCi0tLSBhL215c3FsLXRl c3QvdC94bWwudGVzdAkyMDEwLTExLTI0IDE1OjI1OjI1ICswMDAwCisrKyBiL215c3FsLXRlc3Qv dC94bWwudGVzdAkyMDExLTAxLTE4IDA2OjUzOjQ1ICswMDAwCkBAIC02NDAsNiArNjQwLDExIEBA IFNFTEVDVCBVUERBVEVYTUwoTlVMTCwgKExQQUQoMC4xMTExRS0xNSwKIC0tZXJyb3IgRVJfSUxM RUdBTF9WQUxVRV9GT1JfVFlQRQogU0VMRUNUIEVYVFJBQ1RWQUxVRSgnJywgTFBBRCgwLjExMTFF LTE1LCAnMjAxMScsIDEpKTsKIAorLS1lY2hvICMKKy0tZWNobyAjIEJ1ZyAjNDQzMzIgCW15X3ht bF9zY2FuIHJlYWRzIGJlaGluZCB0aGUgZW5kIG9mIGJ1ZmZlcgorLS1lY2hvICMKK1NFTEVDVCBV UERBVEVYTUwoQ09OVkVSVChfbGF0aW4xJzwnIFVTSU5HIHV0ZjgpLCcxJywnMScpOworU0VMRUNU IFVQREFURVhNTChDT05WRVJUKF9sYXRpbjEnPCEtLScgVVNJTkcgdXRmOCksJzEnLCcxJyk7CiAK IC0tZWNobyBFbmQgb2YgNS4xIHRlc3RzCiAKCj09PSBtb2RpZmllZCBmaWxlICdteXN5cy9kZWZh dWx0LmMnCi0tLSBhL215c3lzL2RlZmF1bHQuYwkyMDEwLTEyLTA2IDEzOjEyOjUxICswMDAwCisr KyBiL215c3lzL2RlZmF1bHQuYwkyMDExLTAxLTE3IDA5OjUyOjU5ICswMDAwCkBAIC02MSw5ICs2 MSwyMyBAQAogICAgY2hlY2sgdGhlIHBvaW50ZXIsIHVzZSAiLS0tLWFyZ3Mtc2VwYXJhdG9yLS0t LSIgaGVyZSB0byBlYXNlIGRlYnVnCiAgICBpZiBzb21lb25lIG1pc3VzZWQgaXQuCiAKKyAgIFRo ZSBhcmdzIHNlcHJhdG9yIHdpbGwgb25seSBiZSBhZGRlZCB3aGVuCisgICBteV9nZXRvcHRfdXNl X2FyZ3Nfc2VwcmF0b3IgaXMgc2V0IHRvIFRSVUUgYmVmb3JlIGNhbGxpbmcKKyAgIGxvYWRfZGVm YXVsdHMoKTsKKwogICAgU2VlIEJVRyMyNTE5MgogKi8KLWNvbnN0IGNoYXIgKmFyZ3Nfc2VwYXJh dG9yPSAiLS0tLWFyZ3Mtc2VwYXJhdG9yLS0tLSI7CitzdGF0aWMgY29uc3QgY2hhciAqYXJnc19z ZXBhcmF0b3I9ICItLS0tYXJncy1zZXBhcmF0b3ItLS0tIjsKK2lubGluZSBzdGF0aWMgdm9pZCBz ZXRfYXJnc19zZXBhcmF0b3IoY2hhcioqIGFyZykKK3sKKyAgREJVR19BU1NFUlQobXlfZ2V0b3B0 X3VzZV9hcmdzX3NlcGFyYXRvcik7CisgICphcmc9IChjaGFyKilhcmdzX3NlcGFyYXRvcjsKK30K K215X2Jvb2wgbXlfZ2V0b3B0X3VzZV9hcmdzX3NlcGFyYXRvcj0gRkFMU0U7CitteV9ib29sIG15 X2dldG9wdF9pc19hcmdzX3NlcGFyYXRvcihjb25zdCBjaGFyKiBhcmcpCit7CisgIHJldHVybiAo YXJnID09IGFyZ3Nfc2VwYXJhdG9yKTsKK30KIGNvbnN0IGNoYXIgKm15X2RlZmF1bHRzX2ZpbGU9 MDsKIGNvbnN0IGNoYXIgKm15X2RlZmF1bHRzX2dyb3VwX3N1ZmZpeD0wOwogY29uc3QgY2hhciAq bXlfZGVmYXVsdHNfZXh0cmFfZmlsZT0wOwpAQCAtNTA1LDYgKzUxOSw3IEBAIGludCBteV9sb2Fk X2RlZmF1bHRzKGNvbnN0IGNoYXIgKmNvbmZfZmkKICAgY2hhciAqcHRyLCoqcmVzOwogICBzdHJ1 Y3QgaGFuZGxlX29wdGlvbl9jdHggY3R4OwogICBjb25zdCBjaGFyICoqZGlyczsKKyAgdWludCBh cmdzX3NlcD0gbXlfZ2V0b3B0X3VzZV9hcmdzX3NlcGFyYXRvciA/IDEgOiAwOwogICBEQlVHX0VO VEVSKCJsb2FkX2RlZmF1bHRzIik7CiAKICAgaW5pdF9hbGxvY19yb290KCZhbGxvYyw1MTIsMCk7 CkBAIC01MTcsMTcgKzUzMiwyOCBAQCBpbnQgbXlfbG9hZF9kZWZhdWx0cyhjb25zdCBjaGFyICpj b25mX2ZpCiAgIGlmICgqYXJnYyA+PSAyICYmICFzdHJjbXAoYXJndlswXVsxXSwiLS1uby1kZWZh dWx0cyIpKQogICB7CiAgICAgLyogcmVtb3ZlIHRoZSAtLW5vLWRlZmF1bHRzIGFyZ3VtZW50IGFu ZCByZXR1cm4gb25seSB0aGUgb3RoZXIgYXJndW1lbnRzICovCi0gICAgdWludCBpOworICAgIHVp bnQgaSwgajsKICAgICBpZiAoIShwdHI9KGNoYXIqKSBhbGxvY19yb290KCZhbGxvYyxzaXplb2Yo YWxsb2MpKwogCQkJCSAoKmFyZ2MgKyAxKSpzaXplb2YoY2hhciopKSkpCiAgICAgICBnb3RvIGVy cjsKICAgICByZXM9IChjaGFyKiopIChwdHIrc2l6ZW9mKGFsbG9jKSk7CiAgICAgcmVzWzBdPSAq KmFyZ3Y7CQkJCS8qIENvcHkgcHJvZ3JhbSBuYW1lICovCi0gICAgLyogc2V0IGFyZ3VtZW50cyBz ZXBhcmF0b3IgKi8KLSAgICByZXNbMV09IChjaGFyICopYXJnc19zZXBhcmF0b3I7Ci0gICAgZm9y IChpPTIgOyBpIDwgKHVpbnQpICphcmdjIDsgaSsrKQotICAgICAgcmVzW2ldPWFyZ3ZbMF1baV07 Ci0gICAgcmVzW2ldPTA7CQkJCQkvKiBFbmQgcG9pbnRlciAqLworICAgIGo9IDE7ICAgICAgICAg ICAgICAgICAvKiBTdGFydCBmcm9tIDEgZm9yIHRoZSByZXNldCByZXN1bHQgYXJncyAqLworICAg IGlmIChteV9nZXRvcHRfdXNlX2FyZ3Nfc2VwYXJhdG9yKQorICAgIHsKKyAgICAgIC8qIHNldCBh cmd1bWVudHMgc2VwYXJhdG9yICovCisgICAgICBzZXRfYXJnc19zZXBhcmF0b3IoJnJlc1sxXSk7 CisgICAgICBqKys7CisgICAgfQorICAgIGZvciAoaT0yIDsgaSA8ICh1aW50KSAqYXJnYyA7IGkr KywgaisrKQorICAgICAgcmVzW2pdPWFyZ3ZbMF1baV07CisgICAgcmVzW2pdPTA7CQkJCQkvKiBF bmQgcG9pbnRlciAqLworICAgIC8qCisgICAgICBVcGRhdGUgdGhlIGFyZ2MsIGlmIGhhdmUgbm90 IGFkZGVkIGFyZ3Mgc2VwYXJhdG9yLCB0aGVuIHdlIGhhdmUKKyAgICAgIHRvIGRlY3JlYXNlIGFy Z2MgYmVjYXVzZSB3ZSBoYXZlIHJlbW92ZWQgdGhlICItLW5vLWRlZmF1bHRzIi4KKyAgICAqLwor ICAgIGlmICghbXlfZ2V0b3B0X3VzZV9hcmdzX3NlcGFyYXRvcikKKyAgICAgICgqYXJnYyktLTsK ICAgICAqYXJndj1yZXM7CiAgICAgKihNRU1fUk9PVCopIHB0cj0gYWxsb2M7CQkJLyogU2F2ZSBh bGxvYyByb290IGZvciBmcmVlICovCiAgICAgaWYgKGRlZmF1bHRfZGlyZWN0b3JpZXMpCkBAIC01 NjEsNyArNTg3LDcgQEAgaW50IG15X2xvYWRfZGVmYXVsdHMoY29uc3QgY2hhciAqY29uZl9maQog ICAgIG9yIGEgZm9yY2VkIGRlZmF1bHQgZmlsZQogICAqLwogICBpZiAoIShwdHI9KGNoYXIqKSBh bGxvY19yb290KCZhbGxvYyxzaXplb2YoYWxsb2MpKwotCQkJICAgICAgIChhcmdzLmVsZW1lbnRz ICsgKmFyZ2MgKyAxICsgMSkgKnNpemVvZihjaGFyKikpKSkKKwkJCSAgICAgICAoYXJncy5lbGVt ZW50cyArICphcmdjICsgMSArIGFyZ3Nfc2VwKSAqc2l6ZW9mKGNoYXIqKSkpKQogICAgIGdvdG8g ZXJyOwogICByZXM9IChjaGFyKiopIChwdHIrc2l6ZW9mKGFsbG9jKSk7CiAKQEAgLTU4MiwxNiAr NjA4LDE5IEBAIGludCBteV9sb2FkX2RlZmF1bHRzKGNvbnN0IGNoYXIgKmNvbmZfZmkKICAgICAt LSphcmdjOyArKyphcmd2OwkJCQkvKiBza2lwIGFyZ3VtZW50ICovCiAgIH0KIAotICAvKiBzZXQg YXJndW1lbnRzIHNlcGFyYXRvciBmb3IgYXJndW1lbnRzIGZyb20gY29uZmlnIGZpbGUgYW5kCi0g ICAgIGNvbW1hbmQgbGluZSAqLwotICByZXNbYXJncy5lbGVtZW50cysxXT0gKGNoYXIgKilhcmdz X3NlcGFyYXRvcjsKKyAgaWYgKG15X2dldG9wdF91c2VfYXJnc19zZXBhcmF0b3IpCisgIHsKKyAg ICAvKiBzZXQgYXJndW1lbnRzIHNlcGFyYXRvciBmb3IgYXJndW1lbnRzIGZyb20gY29uZmlnIGZp bGUgYW5kCisgICAgICAgY29tbWFuZCBsaW5lICovCisgICAgc2V0X2FyZ3Nfc2VwYXJhdG9yKCZy ZXNbYXJncy5lbGVtZW50cysxXSk7CisgIH0KIAogICBpZiAoKmFyZ2MpCi0gICAgbWVtY3B5KCh1 Y2hhciopIChyZXMrMSthcmdzLmVsZW1lbnRzKzEpLCAoY2hhciopICgoKmFyZ3YpKzEpLAorICAg IG1lbWNweSgodWNoYXIqKSAocmVzKzErYXJncy5lbGVtZW50cythcmdzX3NlcCksIChjaGFyKikg KCgqYXJndikrMSksCiAJICAgKCphcmdjLTEpKnNpemVvZihjaGFyKikpOwotICByZXNbYXJncy5l bGVtZW50cysgKmFyZ2MrMV09MDsgICAgICAgICAgICAgICAgLyogbGFzdCBudWxsICovCisgIHJl c1thcmdzLmVsZW1lbnRzKyAqYXJnYythcmdzX3NlcF09MDsgICAgICAgICAgICAgICAgLyogbGFz dCBudWxsICovCiAKLSAgKCphcmdjKSs9YXJncy5lbGVtZW50cysxOworICAoKmFyZ2MpKz1hcmdz LmVsZW1lbnRzK2FyZ3Nfc2VwOwogICAqYXJndj0gKGNoYXIqKikgcmVzOwogICAqKE1FTV9ST09U KikgcHRyPSBhbGxvYzsJCQkvKiBTYXZlIGFsbG9jIHJvb3QgZm9yIGZyZWUgKi8KICAgZGVsZXRl X2R5bmFtaWMoJmFyZ3MpOwpAQCAtNjAxLDcgKzYzMCw3IEBAIGludCBteV9sb2FkX2RlZmF1bHRz KGNvbnN0IGNoYXIgKmNvbmZfZmkKICAgICBwcmludGYoIiVzIHdvdWxkIGhhdmUgYmVlbiBzdGFy dGVkIHdpdGggdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6XG4iLAogCSAgICoqYXJndik7CiAgICAg Zm9yIChpPTEgOyBpIDwgKmFyZ2MgOyBpKyspCi0gICAgICBpZiAoKCphcmd2KVtpXSAhPSBhcmdz X3NlcGFyYXRvcikgLyogc2tpcCBhcmd1bWVudHMgc2VwYXJhdG9yICovCisgICAgICBpZiAoIW15 X2dldG9wdF9pc19hcmdzX3NlcGFyYXRvcigoKmFyZ3YpW2ldKSkgLyogc2tpcCBhcmd1bWVudHMg c2VwYXJhdG9yICovCiAgICAgICAgIHByaW50ZigiJXMgIiwgKCphcmd2KVtpXSk7CiAgICAgcHV0 cygiIik7CiAgICAgZXhpdCgwKTsKCj09PSBtb2RpZmllZCBmaWxlICdteXN5cy9teV9nZXRvcHQu YycKLS0tIGEvbXlzeXMvbXlfZ2V0b3B0LmMJMjAxMS0wMS0xNCAyMjoyMjozOCArMDAwMAorKysg Yi9teXN5cy9teV9nZXRvcHQuYwkyMDExLTAxLTE3IDA5OjUyOjU5ICswMDAwCkBAIC0xNzYsNyAr MTc2LDcgQEAgaW50IGhhbmRsZV9vcHRpb25zKGludCAqYXJnYywgY2hhciAqKiphcgogICAqLwog ICBmb3IgKHBvcz0gKmFyZ3YsIHBvc19lbmQ9cG9zKyAqYXJnYzsgcG9zICE9IHBvc19lbmQgOyBw b3MrKykKICAgewotICAgIGlmICgqcG9zID09IGFyZ3Nfc2VwYXJhdG9yKQorICAgIGlmIChteV9n ZXRvcHRfaXNfYXJnc19zZXBhcmF0b3IoKnBvcykpCiAgICAgewogICAgICAgaXNfY21kbGluZV9h cmc9IDA7CiAgICAgICBicmVhazsKQEAgLTE4OCw3ICsxODgsNyBAQCBpbnQgaGFuZGxlX29wdGlv bnMoaW50ICphcmdjLCBjaGFyICoqKmFyCiAgICAgY2hhciAqKmZpcnN0PSBwb3M7CiAgICAgY2hh ciAqY3VyX2FyZz0gKnBvczsKICAgICBvcHRfZm91bmQ9IDA7Ci0gICAgaWYgKCFpc19jbWRsaW5l X2FyZyAmJiAoY3VyX2FyZyA9PSBhcmdzX3NlcGFyYXRvcikpCisgICAgaWYgKCFpc19jbWRsaW5l X2FyZyAmJiAobXlfZ2V0b3B0X2lzX2FyZ3Nfc2VwYXJhdG9yKGN1cl9hcmcpKSkKICAgICB7CiAg ICAgICBpc19jbWRsaW5lX2FyZz0gMTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC1jb21tb24v Y2xpZW50LmMnCi0tLSBhL3NxbC1jb21tb24vY2xpZW50LmMJMjAxMS0wMS0xMSAwOTowOToyMSAr MDAwMAorKysgYi9zcWwtY29tbW9uL2NsaWVudC5jCTIwMTEtMDEtMTcgMDk6NTI6NTkgKzAwMDAK QEAgLTEyMDksNyArMTIwOSw3IEBAIHZvaWQgbXlzcWxfcmVhZF9kZWZhdWx0X29wdGlvbnMoc3Ry dWN0IHMKICAgICBjaGFyICoqb3B0aW9uPWFyZ3Y7CiAgICAgd2hpbGUgKCorK29wdGlvbikKICAg ICB7Ci0gICAgICBpZiAob3B0aW9uWzBdID09IGFyZ3Nfc2VwYXJhdG9yKSAgICAgICAgICAvKiBz a2lwIGFyZ3VtZW50cyBzZXBhcmF0b3IgKi8KKyAgICAgIGlmIChteV9nZXRvcHRfaXNfYXJnc19z ZXBhcmF0b3Iob3B0aW9uWzBdKSkgICAgICAgICAgLyogc2tpcCBhcmd1bWVudHMgc2VwYXJhdG9y ICovCiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgLyogREJVR19QUklOVCgiaW5mbyIsKCJvcHRp b246ICVzIixvcHRpb25bMF0pKTsgKi8KICAgICAgIGlmIChvcHRpb25bMF1bMF0gPT0gJy0nICYm IG9wdGlvblswXVsxXSA9PSAnLScpCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2l0ZW1fc3RyZnVu Yy5jYycKLS0tIGEvc3FsL2l0ZW1fc3RyZnVuYy5jYwkyMDExLTAxLTEzIDA4OjE5OjUyICswMDAw CisrKyBiL3NxbC9pdGVtX3N0cmZ1bmMuY2MJMjAxMS0wMS0xNyAxMjozNTo1OCArMDAwMApAQCAt MzA1NiwyMiArMzA1NiwxNiBAQCBTdHJpbmcgKkl0ZW1fZnVuY19jb252X2NoYXJzZXQ6OnZhbF9z dHIoCiAgIERCVUdfQVNTRVJUKGZpeGVkID09IDEpOwogICBpZiAodXNlX2NhY2hlZF92YWx1ZSkK ICAgICByZXR1cm4gbnVsbF92YWx1ZSA/IDAgOiAmc3RyX3ZhbHVlOwotICAvKiAKLSAgICBIZXJl IHdlIGRvbid0IHBhc3MgJ3N0cicgYXMgYSBwYXJhbWV0ZXIgdG8gYXJnc1swXS0+dmFsX3N0cigp Ci0gICAgYXMgJ3N0cicgbWF5IHBvaW50IHRvICdzdHJfdmFsdWUnIChlLmcuIHNlZSBJdGVtOjpz YXZlX2luX2ZpZWxkKCkpLAotICAgIHdoaWNoIHdlIHVzZSBiZWxvdyB0byBjb252ZXJ0IHN0cmlu Zy4gCi0gICAgVXNlIGFyZ3VtZW50J3MgJ3N0cl92YWx1ZScgaW5zdGVhZC4KLSAgKi8KLSAgU3Ry aW5nICphcmc9IGFyZ3NbMF0tPnZhbF9zdHIoJmFyZ3NbMF0tPnN0cl92YWx1ZSk7CisgIFN0cmlu ZyAqYXJnPSBhcmdzWzBdLT52YWxfc3RyKHN0cik7CiAgIHVpbnQgZHVtbXlfZXJyb3JzOwogICBp ZiAoIWFyZykKICAgewogICAgIG51bGxfdmFsdWU9MTsKICAgICByZXR1cm4gMDsKICAgfQotICBu dWxsX3ZhbHVlPSBzdHJfdmFsdWUuY29weShhcmctPnB0cigpLGFyZy0+bGVuZ3RoKCksYXJnLT5j aGFyc2V0KCksCisgIG51bGxfdmFsdWU9IHRtcF92YWx1ZS5jb3B5KGFyZy0+cHRyKCksIGFyZy0+ bGVuZ3RoKCksIGFyZy0+Y2hhcnNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b252X2NoYXJzZXQsICZkdW1teV9lcnJvcnMpOwotICByZXR1cm4gbnVsbF92YWx1ZSA/IDAgOiBj aGVja193ZWxsX2Zvcm1lZF9yZXN1bHQoJnN0cl92YWx1ZSk7CisgIHJldHVybiBudWxsX3ZhbHVl ID8gMCA6IGNoZWNrX3dlbGxfZm9ybWVkX3Jlc3VsdCgmdG1wX3ZhbHVlKTsKIH0KIAogdm9pZCBJ dGVtX2Z1bmNfY29udl9jaGFyc2V0OjpmaXhfbGVuZ3RoX2FuZF9kZWMoKQoKPT09IG1vZGlmaWVk IGZpbGUgJ3NxbC9pdGVtX3N0cmZ1bmMuaCcKLS0tIGEvc3FsL2l0ZW1fc3RyZnVuYy5oCTIwMTEt MDEtMTMgMDg6MTk6NTIgKzAwMDAKKysrIGIvc3FsL2l0ZW1fc3RyZnVuYy5oCTIwMTEtMDEtMTcg MTI6MzU6NTggKzAwMDAKQEAgLTgxMiw2ICs4MTIsNyBAQCBwdWJsaWM6CiBjbGFzcyBJdGVtX2Z1 bmNfY29udl9jaGFyc2V0IDpwdWJsaWMgSXRlbV9zdHJfZnVuYwogewogICBib29sIHVzZV9jYWNo ZWRfdmFsdWU7CisgIFN0cmluZyB0bXBfdmFsdWU7CiBwdWJsaWM6CiAgIGJvb2wgc2FmZTsKICAg Q0hBUlNFVF9JTkZPICpjb252X2NoYXJzZXQ7IC8vIGtlZXAgaXQgcHVibGljCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3FsL2l0ZW1fc3VtLmgnCi0tLSBhL3NxbC9pdGVtX3N1bS5oCTIwMTAtMTItMjEg MTI6Mjc6MzYgKzAwMDAKKysrIGIvc3FsL2l0ZW1fc3VtLmgJMjAxMS0wMS0xNyAxMDowMDoxMyAr MDAwMApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHB1YmxpYzoKICAgICBmb3JjZWRfY29uc3Q9IFRSVUU7 IAogICB9CiAgIHZpcnR1YWwgYm9vbCBjb25zdF9pdGVtKCkgY29uc3QgeyByZXR1cm4gZm9yY2Vk X2NvbnN0OyB9CisgIHZpcnR1YWwgYm9vbCBjb25zdF9kdXJpbmdfZXhlY3V0aW9uKCkgY29uc3Qg eyByZXR1cm4gZmFsc2U7IH0KICAgdmlydHVhbCB2b2lkIHByaW50KFN0cmluZyAqc3RyLCBlbnVt X3F1ZXJ5X3R5cGUgcXVlcnlfdHlwZSk7CiAgIHZvaWQgZml4X251bV9sZW5ndGhfYW5kX2RlYygp OwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL215c3FsZC5jYycKLS0tIGEvc3FsL215c3FsZC5j YwkyMDExLTAxLTE0IDEzOjQyOjQxICswMDAwCisrKyBiL3NxbC9teXNxbGQuY2MJMjAxMS0wMS0x NyAwOTo1Mjo1OSArMDAwMApAQCAtNDQ0NCw4ICs0NDQ0LDEwIEBAIGludCBteXNxbGRfbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKICAgb3JpZ19hcmdjPSBhcmdjOwogICBvcmlnX2FyZ3Y9 IGFyZ3Y7CisgIG15X2dldG9wdF91c2VfYXJnc19zZXBhcmF0b3I9IFRSVUU7CiAgIGlmIChsb2Fk X2RlZmF1bHRzKE1ZU1FMX0NPTkZJR19OQU1FLCBsb2FkX2RlZmF1bHRfZ3JvdXBzLCAmYXJnYywg JmFyZ3YpKQogICAgIHJldHVybiAxOworICBteV9nZXRvcHRfdXNlX2FyZ3Nfc2VwYXJhdG9yPSBG QUxTRTsKICAgZGVmYXVsdHNfYXJnYz0gYXJnYzsKICAgZGVmYXVsdHNfYXJndj0gYXJndjsKICAg cmVtYWluaW5nX2FyZ2M9IGFyZ2M7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3JwbF9tYXN0ZXIu Y2MnCi0tLSBhL3NxbC9ycGxfbWFzdGVyLmNjCTIwMTAtMTItMTcgMTA6MDc6MzAgKzAwMDAKKysr IGIvc3FsL3JwbF9tYXN0ZXIuY2MJMjAxMS0wMS0xOCAxNzo1NDoxOSArMDAwMApAQCAtMjUsNiAr MjUsNyBAQAogI2luY2x1ZGUgPG15X2Rpci5oPgogI2luY2x1ZGUgInJwbF9oYW5kbGVyLmgiCiAj aW5jbHVkZSAicnBsX21hc3Rlci5oIgorI2luY2x1ZGUgImRlYnVnX3N5bmMuaCIKIAogaW50IG1h eF9iaW5sb2dfZHVtcF9ldmVudHMgPSAwOyAvLyB1bmxpbWl0ZWQKIG15X2Jvb2wgb3B0X3Nwb3Jh ZGljX2JpbmxvZ19kdW1wX2ZhaWwgPSAwOwpAQCAtOTE4LDYgKzkxOSwxOSBAQCBpbXBvc3NpYmxl IHBvc2l0aW9uIjsKICAgICAgICAgY29vcmQtPnBvcz0gdWludDRrb3JyKHBhY2tldC0+cHRyKCkg KyBldl9vZmZzZXQgKyBMT0dfUE9TX09GRlNFVCk7CiAKICAgICAgIGV2ZW50X3R5cGU9IChMb2df ZXZlbnRfdHlwZSkoKCpwYWNrZXQpW0xPR19FVkVOVF9PRkZTRVQrZXZfb2Zmc2V0XSk7CisgICAg ICBEQlVHX0VYRUNVVEVfSUYoImR1bXBfdGhyZWFkX3dhaXRfYmVmb3JlX3NlbmRfeGlkIiwKKyAg ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRf dHlwZSA9PSBYSURfRVZFTlQpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgIG5ldF9mbHVzaChuZXQpOworICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyIGFjdFtdPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3cgIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YWl0X2ZvciBzaWduYWwuY29udGludWUiOwor ICAgICAgICAgICAgICAgICAgICAgICAgICBEQlVHX0FTU0VSVChvcHRfZGVidWdfc3luY190aW1l b3V0ID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIERCVUdfQVNTRVJUKCFkZWJ1Z19z eW5jX3NldF9hY3Rpb24oY3VycmVudF90aGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HX1dJVEhfTEVOKGFjdCkpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB9KTsKICAg ICAgIGlmIChldmVudF90eXBlID09IEZPUk1BVF9ERVNDUklQVElPTl9FVkVOVCkKICAgICAgIHsK ICAgICAgICAgY3VycmVudF9jaGVja3N1bV9hbGc9IGdldF9jaGVja3N1bV9hbGcocGFja2V0LT5w dHIoKSArIGV2X29mZnNldCwKQEAgLTk2MCw2ICs5NzQsMTQgQEAgaW1wb3NzaWJsZSBwb3NpdGlv biI7CiAJZ290byBlcnI7CiAgICAgICB9CiAKKyAgICAgIERCVUdfRVhFQ1VURV9JRigiZHVtcF90 aHJlYWRfd2FpdF9iZWZvcmVfc2VuZF94aWQiLAorICAgICAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudF90eXBlID09IFhJRF9FVkVOVCkKKyAgICAg ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0X2ZsdXNo KG5ldCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg fSk7CisKICAgICAgIERCVUdfUFJJTlQoImluZm8iLCAoImxvZyBldmVudCBjb2RlICVkIiwgZXZl bnRfdHlwZSkpOwogICAgICAgaWYgKGV2ZW50X3R5cGUgPT0gTE9BRF9FVkVOVCkKICAgICAgIHsK Cj09PSBtb2RpZmllZCBmaWxlICdzcWwvcnBsX3NsYXZlLmNjJwotLS0gYS9zcWwvcnBsX3NsYXZl LmNjCTIwMTAtMTItMTAgMTY6NTU6NTAgKzAwMDAKKysrIGIvc3FsL3JwbF9zbGF2ZS5jYwkyMDEx LTAxLTE4IDE3OjU0OjE5ICswMDAwCkBAIC02MjgsNiArNjI4LDMxIEBAIGludCB0ZXJtaW5hdGVf c2xhdmVfdGhyZWFkcyhNYXN0ZXJfaW5mbyoKICAgbXlzcWxfbXV0ZXhfdCAqc3FsX2xvY2sgPSAm bWktPnJsaS0+cnVuX2xvY2ssICppb19sb2NrID0gJm1pLT5ydW5fbG9jazsKICAgbXlzcWxfbXV0 ZXhfdCAqbG9nX2xvY2s9IG1pLT5ybGktPnJlbGF5X2xvZy5nZXRfbG9nX2xvY2soKTsKIAorICBp ZiAodGhyZWFkX21hc2sgJiAoU0xBVkVfU1FMfFNMQVZFX0ZPUkNFX0FMTCkpCisgIHsKKyAgICBE QlVHX1BSSU5UKCJpbmZvIiwoIlRlcm1pbmF0aW5nIFNRTCB0aHJlYWQiKSk7CisgICAgbWktPnJs aS0+YWJvcnRfc2xhdmU9IDE7CisgICAgaWYgKChlcnJvcj10ZXJtaW5hdGVfc2xhdmVfdGhyZWFk KG1pLT5ybGktPmluZm9fdGhkLCBzcWxfbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJm1pLT5ybGktPnN0b3BfY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJm1pLT5ybGktPnNsYXZlX3J1bm5pbmcsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNraXBfbG9jaykpICYmCisgICAgICAgICFmb3JjZV9hbGwp CisgICAgICBEQlVHX1JFVFVSTihlcnJvcik7CisKKyAgICBteXNxbF9tdXRleF9sb2NrKGxvZ19s b2NrKTsKKworICAgIERCVUdfUFJJTlQoImluZm8iLCgiRmx1c2hpbmcgcmVsYXktbG9nIGluZm8g ZmlsZS4iKSk7CisgICAgaWYgKGN1cnJlbnRfdGhkKQorICAgICAgdGhkX3Byb2NfaW5mbyhjdXJy ZW50X3RoZCwgIkZsdXNoaW5nIHJlbGF5LWxvZyBpbmZvIGZpbGUuIik7CisKKyAgICAvKgorICAg ICAgRmx1c2hlcyB0aGUgcmVsYXkgbG9nIGluZm8gcmVnYXJkbGVzIG9mIHRoZSBzeW5jX3JlbGF5 X2xvZ19pbmZvIG9wdGlvbi4KKyAgICAqLworICAgIGlmIChtaS0+cmxpLT5mbHVzaF9pbmZvKFRS VUUpKQorICAgICAgREJVR19SRVRVUk4oRVJfRVJST1JfRFVSSU5HX0ZMVVNIX0xPR1MpOworCisg ICAgbXlzcWxfbXV0ZXhfdW5sb2NrKGxvZ19sb2NrKTsKKyAgfQogICBpZiAodGhyZWFkX21hc2sg JiAoU0xBVkVfSU98U0xBVkVfRk9SQ0VfQUxMKSkKICAgewogICAgIERCVUdfUFJJTlQoImluZm8i LCgiVGVybWluYXRpbmcgSU8gdGhyZWFkIikpOwpAQCAtNjU5LDMxICs2ODQsNiBAQCBpbnQgdGVy bWluYXRlX3NsYXZlX3RocmVhZHMoTWFzdGVyX2luZm8qCiAgICAgICBEQlVHX1JFVFVSTihFUl9F UlJPUl9EVVJJTkdfRkxVU0hfTE9HUyk7CiAKICAgICBteXNxbF9tdXRleF91bmxvY2sobG9nX2xv Y2spOwotICB9Ci0gIGlmICh0aHJlYWRfbWFzayAmIChTTEFWRV9TUUx8U0xBVkVfRk9SQ0VfQUxM KSkKLSAgewotICAgIERCVUdfUFJJTlQoImluZm8iLCgiVGVybWluYXRpbmcgU1FMIHRocmVhZCIp KTsKLSAgICBtaS0+cmxpLT5hYm9ydF9zbGF2ZT0gMTsKLSAgICBpZiAoKGVycm9yPXRlcm1pbmF0 ZV9zbGF2ZV90aHJlYWQobWktPnJsaS0+aW5mb190aGQsIHNxbF9sb2NrLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmbWktPnJsaS0+c3RvcF9jb25kLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWktPnJsaS0+c2xhdmVfcnVubmluZywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9sb2NrKSkgJiYKLSAgICAg ICAgIWZvcmNlX2FsbCkKLSAgICAgIERCVUdfUkVUVVJOKGVycm9yKTsKLQotICAgIG15c3FsX211 dGV4X2xvY2sobG9nX2xvY2spOwotCi0gICAgREJVR19QUklOVCgiaW5mbyIsKCJGbHVzaGluZyBy ZWxheS1sb2cgaW5mbyBmaWxlLiIpKTsKLSAgICBpZiAoY3VycmVudF90aGQpCi0gICAgICB0aGRf cHJvY19pbmZvKGN1cnJlbnRfdGhkLCAiRmx1c2hpbmcgcmVsYXktbG9nIGluZm8gZmlsZS4iKTsK LQotICAgIC8qCi0gICAgICBGbHVzaGVzIHRoZSByZWxheSBsb2cgaW5mbyByZWdhcmRsZXMgb2Yg dGhlIHN5bmNfcmVsYXlfbG9nX2luZm8gb3B0aW9uLgotICAgICovCi0gICAgaWYgKG1pLT5ybGkt PmZsdXNoX2luZm8oVFJVRSkpCi0gICAgICBEQlVHX1JFVFVSTihFUl9FUlJPUl9EVVJJTkdfRkxV U0hfTE9HUyk7Ci0KLSAgICBteXNxbF9tdXRleF91bmxvY2sobG9nX2xvY2spOwogICB9CiAgIERC VUdfUkVUVVJOKDApOwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvbmRiL3Rlc3QvcnVu LXRlc3Qvc2V0dXAuY3BwJwotLS0gYS9zdG9yYWdlL25kYi90ZXN0L3J1bi10ZXN0L3NldHVwLmNw cAkyMDA5LTEwLTAyIDA4OjI1OjUzICswMDAwCisrKyBiL3N0b3JhZ2UvbmRiL3Rlc3QvcnVuLXRl c3Qvc2V0dXAuY3BwCTIwMTEtMDEtMTcgMDc6NDQ6MzcgKzAwMDAKQEAgLTEwNSw3ICsxMDUsNyBA QCBzZXR1cF9jb25maWcoYXRydF9jb25maWcmIGNvbmZpZykKICAgICAgKi8KICAgICBmb3IgKGog PSAwOyBqPChzaXplX3QpYXJnYzsgaisrKQogICAgIHsKLSAgICAgIGlmICh0bXBbal0gPT0gYXJn c19zZXBhcmF0b3IpICAgICAgICAgICAgIC8qIHNraXAgYXJndW1lbnRzIHNlcGFyYXRvciAqLwor ICAgICAgaWYgKG15X2dldG9wdF9pc19hcmdzX3NlcGFyYXRvcih0bXBbal0pKSAvKiBza2lwIGFy Z3VtZW50cyBzZXBhcmF0b3IgKi8KICAgICAgICAgY29udGludWU7CiAgICAgICBmb3IgKGsgPSAw OyBwcm9jX2FyZ3Nba10ubmFtZTsgaysrKQogICAgICAgewpAQCAtMzc1LDcgKzM3NSw3IEBAIGxv YWRfb3B0aW9ucyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIGludAogICAgICAqICBTa2lwIHRoZSBz ZXBhcmF0b3IgZm9yIGFyZ3VtZW50cyBmcm9tIGNvbmZpZyBmaWxlIGFuZCBjb21tYW5kCiAgICAg ICogIGxpbmUKICAgICAgKi8KLSAgICBpZiAoYXJndltpXSA9PSBhcmdzX3NlcGFyYXRvcikKKyAg ICBpZiAobXlfZ2V0b3B0X2lzX2FyZ3Nfc2VwYXJhdG9yKGFyZ3ZbaV0pKQogICAgICAgY29udGlu dWU7CiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGZfb3B0aW9uc1tqXS5uYW1lOyBqKyspCiAgICAg ewoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0cmluZ3MvY3R5cGUtdWNzMi5jJwotLS0gYS9zdHJpbmdz L2N0eXBlLXVjczIuYwkyMDEwLTEyLTE3IDExOjI4OjU5ICswMDAwCisrKyBiL3N0cmluZ3MvY3R5 cGUtdWNzMi5jCTIwMTEtMDEtMTggMDc6MTY6NDkgKzAwMDAKQEAgLTcyNSwxMiArNzI1LDE4IEBA IG15X3N0cnRvbGwxMF9tYjIoQ0hBUlNFVF9JTkZPICpjcywKICAgLyogSWYgZml4ZWQgbGVuZ3Ro IHN0cmluZyAqLwogICBpZiAoZW5kcHRyKQogICB7Ci0gICAgLyogTWFrZSBzdXJlIHN0cmluZyBs ZW5ndGggaXMgZXZlbiAqLworICAgIC8qCisgICAgICBNYWtlIHN1cmUgc3RyaW5nIGxlbmd0aCBp cyBldmVuLgorICAgICAgT2RkIGxlbmd0aCBpbmRpY2F0ZXMgYSBidWcgaW4gdGhlIGNhbGxlci4K KyAgICAgIEFzc2VydCBpbiBkZWJ1Zywgcm91bmQgaW4gcHJvZHVjdGlvbi4KKyAgICAqLworICAg IERCVUdfQVNTRVJUKCgqZW5kcHRyIC0gcykgJSAyID09IDApOwogICAgIGVuZD0gcyArICgoKmVu ZHB0ciAtIHMpIC8gMikgKiAyOwotICAgIGZvciAoIDsgcyA8IGVuZDsgKSAvKiBTa2lwIGxlYWRp bmcgc3BhY2VzIGFuZCB0YWJzICovCisKKyAgICBmb3IgKCA7IDsgKSAvKiBTa2lwIGxlYWRpbmcg c3BhY2VzIGFuZCB0YWJzICovCiAgICAgewogICAgICAgcmVzPSBjcy0+Y3NldC0+bWJfd2MoY3Ms ICZ3YywgKGNvbnN0IHVjaGFyICopIHMsIChjb25zdCB1Y2hhciAqKSBlbmQpOwotICAgICAgaWYg KHJlcyA8IDApCisgICAgICBpZiAocmVzIDw9IDApCiAgICAgICAgIGdvdG8gbm9fY29udjsKICAg ICAgIHMrPSByZXM7CiAgICAgICBpZiAod2MgIT0gJyAnICYmIHdjICE9ICdcdCcpCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RyaW5ncy94bWwuYycKLS0tIGEvc3RyaW5ncy94bWwuYwkyMDEwLTA3LTAy IDE4OjMwOjQ3ICswMDAwCisrKyBiL3N0cmluZ3MveG1sLmMJMjAxMS0wMS0xOCAwNjozODo0MSAr MDAwMApAQCAtMTA2LDYgKzEwNiwxMyBAQCBzdGF0aWMgdm9pZCBteV94bWxfbm9ybV90ZXh0KE1Z X1hNTF9BVFRSCiB9CiAKIAorc3RhdGljIGlubGluZSBteV9ib29sCitteV94bWxfcGFyc2VyX3By ZWZpeF9jbXAoTVlfWE1MX1BBUlNFUiAqcCwgY29uc3QgY2hhciAqcywgc2l6ZV90IHNsZW4pCit7 CisgIHJldHVybiAocC0+Y3VyICsgc2xlbiA+IHAtPmVuZCkgfHwgbWVtY21wKHAtPmN1ciwgcywg c2xlbik7Cit9CisKKwogc3RhdGljIGludCBteV94bWxfc2NhbihNWV9YTUxfUEFSU0VSICpwLE1Z X1hNTF9BVFRSICphKQogewogICBpbnQgbGV4OwpAQCAtMTIzLDE2ICsxMzAsMjAgQEAgc3RhdGlj IGludCBteV94bWxfc2NhbihNWV9YTUxfUEFSU0VSICpwLAogICBhLT5iZWc9cC0+Y3VyOwogICBh LT5lbmQ9cC0+Y3VyOwogICAKLSAgaWYgKChwLT5lbmQgLSBwLT5jdXIgPiAzKSAmJiAhbWVtY21w KHAtPmN1ciwiPCEtLSIsNCkpCisgIGlmICghbXlfeG1sX3BhcnNlcl9wcmVmaXhfY21wKHAsIENf U1RSSU5HX1dJVEhfTEVOKCI8IS0tIikpKQogICB7Ci0gICAgZm9yICg7IChwLT5jdXIgPCBwLT5l bmQpICYmIG1lbWNtcChwLT5jdXIsICItLT4iLCAzKTsgcC0+Y3VyKyspCi0gICAge30KLSAgICBp ZiAoIW1lbWNtcChwLT5jdXIsICItLT4iLCAzKSkKLSAgICAgIHAtPmN1cis9MzsKKyAgICBmb3Ig KDsgcC0+Y3VyIDwgcC0+ZW5kOyBwLT5jdXIrKykKKyAgICB7CisgICAgICBpZiAoIW15X3htbF9w YXJzZXJfcHJlZml4X2NtcChwLCBDX1NUUklOR19XSVRIX0xFTigiLS0+IikpKQorICAgICAgewor ICAgICAgICBwLT5jdXIrPSAzOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CiAgICAg YS0+ZW5kPXAtPmN1cjsKICAgICBsZXg9TVlfWE1MX0NPTU1FTlQ7CiAgIH0KLSAgZWxzZSBpZiAo IW1lbWNtcChwLT5jdXIsICI8IVtDREFUQVsiLDkpKQorICBlbHNlIGlmICghbXlfeG1sX3BhcnNl cl9wcmVmaXhfY21wKHAsIENfU1RSSU5HX1dJVEhfTEVOKCI8IVtDREFUQVsiKSkpCiAgIHsKICAg ICBwLT5jdXIrPSA5OwogICAgIGZvciAoOyBwLT5jdXIgPCBwLT5lbmQgLSAyIDsgcC0+Y3VyKysp CgpObyBidW5kbGUgKHJlYXNvbjogcmV2aXNpb24gaXMgYSBtZXJnZSku