Terminal color scheme
exchange service <[email protected]> Sat, 11 Apr 2009 01:54:50 +0600
| Newsgroups | gmane.os.openbeos.preferences |
|---|---|
| Message-ID | <[email protected]> |
--0016e640d0f6d1f790046738bc54 Content-Type: multipart/alternative; boundary=0016e640d0f6d1f788046738bc52 --0016e640d0f6d1f788046738bc52 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Greet. How about change default color scheme on something more beauty ? Here my little patch with nice color solution. GL. --0016e640d0f6d1f788046738bc52 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Greet.<br>How about change default color scheme on something more beauty ?<br><br>Here my little patch with nice color solution.<br><br>GL.<br> --0016e640d0f6d1f788046738bc52-- --0016e640d0f6d1f790046738bc54 Content-Type: application/octet-stream; name="PrefHandler.cpp" Content-Disposition: attachment; filename="PrefHandler.cpp" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftdanqot0 LyoKICogQ29weXJpZ2h0IDIwMDMtMjAwOSwgSGFpa3UsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KICogQ29weXJpZ2h0IChjKSAyMDA0IERhbmllbCBGdXJyZXIgPGFzc2ltaWw4b3JAdXNlcnMu c291cmNlZm9yZ2UubmV0PgogKiBDb3B5cmlnaHQgKGMpIDIwMDMtNCBLaWFuIER1ZmZ5IDxteW9i QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KICogQ29weXJpZ2h0IChjKSAxOTk4LDk5IEthenVobyBP a3VpIGFuZCBUYWthc2hpIE11cmFpLiAKICoKICogRGlzdHJpYnV0ZWQgdW50ZXIgdGhlIHRlcm1z IG9mIHRoZSBNSVQgTGljZW5zZS4KICovCgoKI2luY2x1ZGUgIkNvZGluZy5oIgojaW5jbHVkZSAi UHJlZkhhbmRsZXIuaCIKI2luY2x1ZGUgIlRlcm1Db25zdC5oIgoKI2luY2x1ZGUgPERpcmVjdG9y eS5oPgojaW5jbHVkZSA8RW50cnkuaD4KI2luY2x1ZGUgPEZpbGUuaD4KI2luY2x1ZGUgPEZpbmRE aXJlY3RvcnkuaD4KI2luY2x1ZGUgPEZvbnQuaD4KI2luY2x1ZGUgPEdyYXBoaWNzRGVmcy5oPgoj aW5jbHVkZSA8TWVzc2FnZS5oPgojaW5jbHVkZSA8Tm9kZUluZm8uaD4KI2luY2x1ZGUgPFBhdGgu aD4KCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzdGRs aWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKLyoKICogU3RhcnR1cCBwcmVmZXJlbmNlIHNldHRp bmdzLgogKi8Kc3RhdGljIGNvbnN0IHByZWZfZGVmYXVsdHMga1Rlcm1EZWZhdWx0c1tdID0gewoJ eyBQUkVGX0NPTFMsCQkJCSI4MCIgfSwKCXsgUFJFRl9ST1dTLAkJCQkiMjUiIH0sCgoJeyBQUkVG X0hBTEZfRk9OVF9GQU1JTFksCSJDb3VyaWVyMTAgQlQiIH0sCgl7IFBSRUZfSEFMRl9GT05UX1NJ WkUsCQkiMTIiIH0sCgoJeyBQUkVGX1RFWFRfRk9SRV9DT0xPUiwJCSIgIDAsICAgMCwgICAwIiB9 LAoJeyBQUkVGX1RFWFRfQkFDS19DT0xPUiwJCSIyMjAsIDIyMCwgMjIwIiB9LAoJeyBQUkVGX1NF TEVDVF9GT1JFX0NPTE9SLAkiICAwLCAgNzUsIDI1NSIgfSwKCXsgUFJFRl9TRUxFQ1RfQkFDS19D T0xPUiwJIjE3MCwgMTcwLCAxNzAiIH0sCgl7IFBSRUZfQ1VSU09SX0ZPUkVfQ09MT1IsCSIyNTUs IDI1NSwgMjU1IiB9LAoJeyBQUkVGX0NVUlNPUl9CQUNLX0NPTE9SLAkiMTI1LCAxMjUsIDEyNSIg fSwKCgl7IFBSRUZfSU1fRk9SRV9DT0xPUiwJCSIgIDAsICAgMCwgICAwIiB9LAoJeyBQUkVGX0lN X0JBQ0tfQ09MT1IsCQkiMTUyLCAyMDMsIDI1NSIgfSwKCXsgUFJFRl9JTV9TRUxFQ1RfQ09MT1Is CQkiMjU1LCAxNTIsIDE1MiIgfSwKCgl7IFBSRUZfU0hFTEwsCQkJCSIvYmluL3NoIC1sb2dpbiIg fSwKCXsgUFJFRl9ISVNUT1JZX1NJWkUsCQkiMTAwMDAiIH0sCgoJeyBQUkVGX1RFWFRfRU5DT0RJ TkcsCQkiVVRGLTgiIH0sCgoJeyBQUkVGX0dVSV9MQU5HVUFHRSwJCSJFbmdsaXNoIn0sCgl7IFBS RUZfSU1fQVdBUkUsCQkJIjAifSwKCXsgTlVMTCwgTlVMTH0sCn07CgoKUHJlZkhhbmRsZXIgKlBy ZWZIYW5kbGVyOjpzUHJlZkhhbmRsZXIgPSBOVUxMOwoKClByZWZIYW5kbGVyOjpQcmVmSGFuZGxl cigpCgk6CglmQ29udGFpbmVyKCdQcmVmJykKewoJX0xvYWRGcm9tRGVmYXVsdChrVGVybURlZmF1 bHRzKTsKCglCUGF0aCBwYXRoOwoJR2V0RGVmYXVsdFBhdGgocGF0aCk7CglPcGVuVGV4dChwYXRo LlBhdGgoKSk7CgoJX0NvbmZpcm1Gb250KFBSRUZfSEFMRl9GT05UX0ZBTUlMWSwgYmVfZml4ZWRf Zm9udCk7Cn0KCgpQcmVmSGFuZGxlcjo6UHJlZkhhbmRsZXIoY29uc3QgUHJlZkhhbmRsZXIqIHAp CnsKCWZDb250YWluZXIgPSBwLT5mQ29udGFpbmVyOwp9CgoKUHJlZkhhbmRsZXI6On5QcmVmSGFu ZGxlcigpCnsKfQoKCi8qIHN0YXRpYyAqLwpQcmVmSGFuZGxlciAqClByZWZIYW5kbGVyOjpEZWZh dWx0KCkKewoJaWYgKHNQcmVmSGFuZGxlciA9PSBOVUxMKQoJCXNQcmVmSGFuZGxlciA9IG5ldyBQ cmVmSGFuZGxlcigpOwoJcmV0dXJuIHNQcmVmSGFuZGxlcjsKfQoKCi8qIHN0YXRpYyAqLwp2b2lk ClByZWZIYW5kbGVyOjpEZWxldGVEZWZhdWx0KCkKewoJZGVsZXRlIHNQcmVmSGFuZGxlcjsKCXNQ cmVmSGFuZGxlciA9IE5VTEw7Cn0KCgovKiBzdGF0aWMgKi8Kdm9pZApQcmVmSGFuZGxlcjo6U2V0 RGVmYXVsdChQcmVmSGFuZGxlciAqcHJlZkhhbmRsZXIpCnsKCURlbGV0ZURlZmF1bHQoKTsKCXNQ cmVmSGFuZGxlciA9IHByZWZIYW5kbGVyOwp9CgoKLyogc3RhdGljICovCnN0YXR1c190ClByZWZI YW5kbGVyOjpHZXREZWZhdWx0UGF0aChCUGF0aCYgcGF0aCkKewoJaWYgKGZpbmRfZGlyZWN0b3J5 KEJfVVNFUl9TRVRUSU5HU19ESVJFQ1RPUlksICZwYXRoLCB0cnVlKSAhPSBCX09LKQoJCXJldHVy biBCX0VSUk9SOwoKI2lmZGVmIEhBSUtVX1RBUkdFVF9QTEFURk9STV9IQUlLVQoJcGF0aC5BcHBl bmQoIlRlcm1pbmFsX3NldHRpbmdzIik7CiNlbHNlCglwYXRoLkFwcGVuZCgiSGFpa3VUZXJtaW5h bF9zZXR0aW5ncyIpOwojZW5kaWYKCglyZXR1cm4gQl9PSzsKfQoKCnN0YXR1c190ClByZWZIYW5k bGVyOjpPcGVuKGNvbnN0IGNoYXIgKnBhdGgpCnsKCXJldHVybiBfTG9hZEZyb21GaWxlKHBhdGgp Owp9CgoKc3RhdHVzX3QKUHJlZkhhbmRsZXI6Ok9wZW5UZXh0KGNvbnN0IGNoYXIgKnBhdGgpCnsK CXJldHVybiBfTG9hZEZyb21UZXh0RmlsZShwYXRoKTsKfQoKCnN0YXR1c190ClByZWZIYW5kbGVy OjpTYXZlKGNvbnN0IGNoYXIgKnBhdGgpCnsKCS8vIG1ha2Ugc3VyZSB0aGUgdGFyZ2V0IHBhdGgg ZXhpc3RzCiNpZiAwCgkvLyBUT0RPOiBjdXJyZW50bHkgbm90IG5lZWRlZCBhcyB3ZSdyZSByZXVz aW5nIHRoZSBzdGFuZGFyZCBkaXJlY3RvcnkKCUJQYXRoIGRpcmVjdG9yeVBhdGgocGF0aCk7Cglp ZiAoZGlyZWN0b3J5UGF0aC5HZXRQYXJlbnQoJmRpcmVjdG9yeVBhdGgpID09IEJfT0spCgkJY3Jl YXRlX2RpcmVjdG9yeShkaXJlY3RvcnlQYXRoLlBhdGgoKSwgMDc1NSk7CiNlbmRpZgoKCUJGaWxl IGZpbGUocGF0aCwgQl9XUklURV9PTkxZIHwgQl9DUkVBVEVfRklMRSB8IEJfRVJBU0VfRklMRSk7 CglyZXR1cm4gZkNvbnRhaW5lci5GbGF0dGVuKCZmaWxlKTsKfQoKCnZvaWQKUHJlZkhhbmRsZXI6 OlNhdmVBc1RleHQoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbWltZXR5cGUsCgljb25z dCBjaGFyICpzaWduYXR1cmUpCnsKCS8vIG1ha2Ugc3VyZSB0aGUgdGFyZ2V0IHBhdGggZXhpc3Rz CiNpZiAwCglCUGF0aCBkaXJlY3RvcnlQYXRoKHBhdGgpOwoJaWYgKGRpcmVjdG9yeVBhdGguR2V0 UGFyZW50KCZkaXJlY3RvcnlQYXRoKSA9PSBCX09LKQoJCWNyZWF0ZV9kaXJlY3RvcnkoZGlyZWN0 b3J5UGF0aC5QYXRoKCksIDA3NTUpOwojZW5kaWYKCglCRmlsZSBmaWxlKHBhdGgsIEJfV1JJVEVf T05MWSB8IEJfQ1JFQVRFX0ZJTEUgfCBCX0VSQVNFX0ZJTEUpOwoJY2hhciBidWZmZXJbNTEyXTsK CXR5cGVfY29kZSB0eXBlOwoJY29uc3QgY2hhciAqa2V5OwoKCWZvciAoaW50MzIgaSA9IDA7CiNp ZmRlZiBCX0JFT1NfVkVSU0lPTl9EQU5PCgkJCWZDb250YWluZXIuR2V0SW5mbyhCX1NUUklOR19U WVBFLCBpLCAma2V5LCAmdHlwZSkgPT0gQl9PSzsKI2Vsc2UKCQkJZkNvbnRhaW5lci5HZXRJbmZv KEJfU1RSSU5HX1RZUEUsIGksIChjaGFyKiopJmtleSwgJnR5cGUpID09IEJfT0s7CiNlbmRpZgoJ CQlpKyspIHsKCQlpbnQgbGVuID0gc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIlwi JXNcIiAsIFwiJXNcIlxuIiwga2V5LCBnZXRTdHJpbmcoa2V5KSk7CgkJZmlsZS5Xcml0ZShidWZm ZXIsIGxlbik7Cgl9CgoJaWYgKG1pbWV0eXBlICE9IE5VTEwpewoJCUJOb2RlSW5mbyBpbmZvKCZm aWxlKTsKCQlpbmZvLlNldFR5cGUobWltZXR5cGUpOwoJCWluZm8uU2V0UHJlZmVycmVkQXBwKHNp Z25hdHVyZSk7Cgl9Cn0KCgppbnQzMiAKUHJlZkhhbmRsZXI6OmdldEludDMyKGNvbnN0IGNoYXIg KmtleSkKewoJY29uc3QgY2hhciAqdmFsdWUgPSBmQ29udGFpbmVyLkZpbmRTdHJpbmcoa2V5KTsK CWlmICh2YWx1ZSA9PSBOVUxMKQoJCXJldHVybiAwOwoKCXJldHVybiBhdG9pKHZhbHVlKTsKfQoK CmZsb2F0IApQcmVmSGFuZGxlcjo6Z2V0RmxvYXQoY29uc3QgY2hhciAqa2V5KQp7Cgljb25zdCBj aGFyICp2YWx1ZSA9IGZDb250YWluZXIuRmluZFN0cmluZyhrZXkpOwoJaWYgKHZhbHVlID09IE5V TEwpCgkJcmV0dXJuIDA7CgoJcmV0dXJuIGF0b2YodmFsdWUpOwp9CgoKY29uc3QgY2hhciogClBy ZWZIYW5kbGVyOjpnZXRTdHJpbmcoY29uc3QgY2hhciAqa2V5KQp7Cgljb25zdCBjaGFyICpidWZm ZXI7CglpZiAoZkNvbnRhaW5lci5GaW5kU3RyaW5nKGtleSwgJmJ1ZmZlcikgIT0gQl9PSykKCQli dWZmZXIgPSAiRXJyb3IhIjsKCgkvL3ByaW50ZigiJXggR0VUICVzOiAlc1xuIiwgdGhpcywga2V5 LCBidWYpOwoJcmV0dXJuIGJ1ZmZlcjsKfQoKCmJvb2wKUHJlZkhhbmRsZXI6OmdldEJvb2woY29u c3QgY2hhciAqa2V5KQp7Cgljb25zdCBjaGFyICp2YWx1ZSA9IGZDb250YWluZXIuRmluZFN0cmlu ZyhrZXkpOwoJaWYgKHZhbHVlID09IE5VTEwpCgkJcmV0dXJuIGZhbHNlOwoKCXJldHVybiAhc3Ry Y21wKHZhbHVlLCBQUkVGX1RSVUUpOwp9CgoKLyoqIFJldHVybnMgUkdCIGRhdGEgZnJvbSBnaXZl biBrZXkuICovCgpyZ2JfY29sb3IKUHJlZkhhbmRsZXI6OmdldFJHQihjb25zdCBjaGFyICprZXkp CnsKCXJnYl9jb2xvciBjb2w7CglpbnQgciwgZywgYjsKCglpZiAoY29uc3QgY2hhciAqcyA9IGZD b250YWluZXIuRmluZFN0cmluZyhrZXkpKSB7CgkJc3NjYW5mKHMsICIlZCwgJWQsICVkIiwgJnIs ICZnLCAmYik7Cgl9IGVsc2UgewoJCWZwcmludGYoc3RkZXJyLCAiUHJlZkhhbmRsZXI6OmdldFJH QiglcykgLSBrZXkgbm90IGZvdW5kXG4iLCBrZXkpOwoJCXIgPSBnID0gYiA9IDA7Cgl9CgoJY29s LnJlZCA9IHI7Cgljb2wuZ3JlZW4gPSBnOwoJY29sLmJsdWUgPSBiOwoJY29sLmFscGhhID0gMjU1 OwoJcmV0dXJuIGNvbDsKfQoKCi8qKiBTZXR0aW5nIEludDMyIGRhdGEgd2l0aCBrZXkuICovCgp2 b2lkClByZWZIYW5kbGVyOjpzZXRJbnQzMihjb25zdCBjaGFyICprZXksIGludDMyIGRhdGEpCnsK CWNoYXIgYnVmZmVyWzMyXTsKCXNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlZCIs IChpbnQpZGF0YSk7CglzZXRTdHJpbmcoa2V5LCBidWZmZXIpOwp9CgoKLyoqIFNldHRpbmcgRmxv YXQgZGF0YSB3aXRoIGtleSAqLwoKdm9pZApQcmVmSGFuZGxlcjo6c2V0RmxvYXQoY29uc3QgY2hh ciAqa2V5LCBmbG9hdCBkYXRhKQp7CgljaGFyIGJ1ZmZlclszMl07CglzbnByaW50ZihidWZmZXIs IHNpemVvZihidWZmZXIpLCAiJWciLCBkYXRhKTsKCXNldFN0cmluZyhrZXksIGJ1ZmZlcik7Cn0K CgovKiogU2V0dGluZyBCb29sIGRhdGEgd2l0aCBrZXkgKi8KCnZvaWQKUHJlZkhhbmRsZXI6OnNl dEJvb2woY29uc3QgY2hhciAqa2V5LCBib29sIGRhdGEpCnsKCWlmIChkYXRhKQoJCXNldFN0cmlu ZyhrZXksIFBSRUZfVFJVRSk7CgllbHNlCgkJc2V0U3RyaW5nKGtleSwgUFJFRl9GQUxTRSk7Cn0K CgovKiogU2V0dGluZyBDU3RyaW5nIGRhdGEgd2l0aCBrZXkgKi8KCnZvaWQKUHJlZkhhbmRsZXI6 OnNldFN0cmluZyhjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKmRhdGEpCnsKCS8vcHJpbnRm KCIleCBTRVQgJXM6ICVzXG4iLCB0aGlzLCBrZXksIGRhdGEpOwoJZkNvbnRhaW5lci5SZW1vdmVO YW1lKGtleSk7CglmQ29udGFpbmVyLkFkZFN0cmluZyhrZXksIGRhdGEpOwp9CgoKLyoqIFNldHRp bmcgUkdCIGRhdGEgd2l0aCBrZXkgKi8KCnZvaWQKUHJlZkhhbmRsZXI6OnNldFJHQihjb25zdCBj aGFyICprZXksIGNvbnN0IHJnYl9jb2xvciBkYXRhKQp7CgljaGFyIGJ1ZmZlclszMl07CglzbnBy aW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJWQsICVkLCAlZCIsIGRhdGEucmVkLCBkYXRh LmdyZWVuLCBkYXRhLmJsdWUpOwoJc2V0U3RyaW5nKGtleSwgYnVmZmVyKTsKfQoKCi8qKiBDaGVj ayBhbnkgcGVmZXJlbmNlIHN0b3JlZCBvciBub3QuICovCgpib29sClByZWZIYW5kbGVyOjpJc0Vt cHR5KCkgY29uc3QKewoJcmV0dXJuIGZDb250YWluZXIuSXNFbXB0eSgpOwp9CgoKdm9pZApQcmVm SGFuZGxlcjo6X0NvbmZpcm1Gb250KGNvbnN0IGNoYXIgKmtleSwgY29uc3QgQkZvbnQgKmZhbGxi YWNrKQp7CglpbnQzMiBjb3VudCA9IGNvdW50X2ZvbnRfZmFtaWxpZXMoKTsKCWNvbnN0IGNoYXIg KmZvbnQgPSBnZXRTdHJpbmcoa2V5KTsKCWlmIChmb250ID09IE5VTEwpCgkJY291bnQgPSAwOwoK CWZvbnRfZmFtaWx5IGZhbWlseTsKCglmb3IgKGludDMyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykg ewoJCWlmIChnZXRfZm9udF9mYW1pbHkoaSwgJmZhbWlseSkgIT0gQl9PSykKCQkJY29udGludWU7 CgoJCWlmICghc3RyY21wKGZhbWlseSwgZm9udCkpIHsKCQkJLy8gZm91bmQgZm9udCBmYW1pbHk6 IHdlIGNhbiBzYWZlbHkgdXNlIHRoaXMgZm9udAoJCQlyZXR1cm47CgkJfQoJfQoKCS8vIHVzZSBm YWxsLWJhY2sgZm9udAoKCWZhbGxiYWNrLT5HZXRGYW1pbHlBbmRTdHlsZSgmZmFtaWx5LCBOVUxM KTsKCXNldFN0cmluZyhrZXksIGZhbWlseSk7Cn0KCgpzdGF0dXNfdApQcmVmSGFuZGxlcjo6X0xv YWRGcm9tRmlsZShjb25zdCBjaGFyKiBwYXRoKQp7CgkvLyBGdXR1cmU6IEl0IHdvdWxkIGJlIG5p Y2UgaWYgd2UgY291bGQgc2ltcGx5IHVzZSBhIGZsYXRlbmVkIEJNZXNzYWdlIHRvCgkvLyBzYXZl IHRoZSBzZXR0aW5ncy4gKFdobyBjYXJlcyBhYm91dCBjb21wYXRpYmlsaXR5IGluIHRoaXMgY2Fz ZSBhbnl3YXk/KQoKCUJGaWxlIGZpbGUocGF0aCwgQl9SRUFEX09OTFkpOwoJc3RhdHVzX3Qgc3Rh dHVzID0gZmlsZS5Jbml0Q2hlY2soKTsKCWlmIChzdGF0dXMgIT0gQl9PSykKCQlyZXR1cm4gc3Rh dHVzOwoKCS8vZkNvbnRhaW5lci5NYWtlRW1wdHkoKTsKCS8vZkNvbnRhaW5lci5VbmZsYXR0ZW4o JmZpbGUpOwoKCW9mZl90IHNpemU7CglpZiAoZmlsZS5HZXRTaXplKCZzaXplKSAhPSBCX09LIHx8 IHNpemUgIT0gc2l6ZW9mKHN0cnVjdCB0ZXJtcHJlZnMpKQoJCXJldHVybiBCX0VSUk9SOwoKCXN0 cnVjdCB0ZXJtcHJlZnMgcHJlZnM7CglmaWxlLlJlYWQoJnByZWZzLCBzaXplKTsKCWlmIChwcmVm cy5tYWdpYyAhPSBUUF9NQUdJQyB8fCBwcmVmcy52ZXJzaW9uICE9IFRQX1ZFUlNJT04pCgkJcmV0 dXJuIEJfRVJST1I7CgoJLy8gVmFsaWQgc2V0dGluZ3MgZmlsZSEKCglzZXRJbnQzMihQUkVGX0NP TFMsIHByZWZzLmNvbHMpOwoJc2V0SW50MzIoUFJFRl9ST1dTLCBwcmVmcy5yb3dzKTsKCXNldElu dDMyKFBSRUZfSEFMRl9GT05UX1NJWkUsIHByZWZzLmZvbnRfc2l6ZSk7CgljaGFyICpmb250X2Zh bWlseSA9IHN0cnRvayhwcmVmcy5mb250LCAiLyIpOwoJY2hhciAqZm9udF9zdHlsZSA9IHN0cnRv ayhOVUxMLCAiIik7CglzZXRTdHJpbmcoUFJFRl9IQUxGX0ZPTlRfRkFNSUxZLCBmb250X2ZhbWls eSk7CglzZXRTdHJpbmcoUFJFRl9IQUxGX0ZPTlRfU1RZTEUsIGZvbnRfc3R5bGUpOwoJc2V0UkdC KFBSRUZfVEVYVF9CQUNLX0NPTE9SLCBwcmVmcy5iZyk7CglzZXRSR0IoUFJFRl9URVhUX0ZPUkVf Q09MT1IsIHByZWZzLmZnKTsKCXNldFJHQihQUkVGX0NVUlNPUl9CQUNLX0NPTE9SLCBwcmVmcy5j dXJiZyk7CglzZXRSR0IoUFJFRl9DVVJTT1JfRk9SRV9DT0xPUiwgcHJlZnMuY3VyZmcpOwoJc2V0 UkdCKFBSRUZfU0VMRUNUX0JBQ0tfQ09MT1IsIHByZWZzLnNlbGJnKTsKCXNldFJHQihQUkVGX1NF TEVDVF9GT1JFX0NPTE9SLCBwcmVmcy5zZWxmZyk7CglzZXRTdHJpbmcoUFJFRl9URVhUX0VOQ09E SU5HLCBFbmNvZGluZ0FzU3RyaW5nKHByZWZzLmVuY29kaW5nKSk7CgoJcmV0dXJuIEJfT0s7Cn0K CgpzdGF0dXNfdApQcmVmSGFuZGxlcjo6X0xvYWRGcm9tRGVmYXVsdChjb25zdCBwcmVmX2RlZmF1 bHRzKiBkZWZhdWx0cykKewoJaWYgKGRlZmF1bHRzID09IE5VTEwpCgkJcmV0dXJuIEJfRVJST1I7 CgoJd2hpbGUgKGRlZmF1bHRzLT5rZXkpIHsKCQlzZXRTdHJpbmcoZGVmYXVsdHMtPmtleSwgZGVm YXVsdHMtPml0ZW0pOwoJCSsrZGVmYXVsdHM7Cgl9CgoJcmV0dXJuIEJfT0s7Cn0KCgovKioJVGV4 dCBpcyAia2V5IiwiQ29udGVudCIKICoJQ29tbWVudCA6IFN0YXJ0IHdpdGggJyMnCiAqLwoKc3Rh dHVzX3QKUHJlZkhhbmRsZXI6Ol9Mb2FkRnJvbVRleHRGaWxlKGNvbnN0IGNoYXIgKiBwYXRoKQp7 CgljaGFyIGJ1ZmZlclsxMDI0XTsKCWNoYXIga2V5W0JfRklFTERfTkFNRV9MRU5HVEhdLCBkYXRh WzUxMl07CglpbnQgbjsKCUZJTEUgKmZpbGU7CgoJZmlsZSA9IGZvcGVuKHBhdGgsICJyIik7Cglp ZiAoZmlsZSA9PSBOVUxMKQoJCXJldHVybiBCX0VOVFJZX05PVF9GT1VORDsKCgl3aGlsZSAoZmdl dHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZmlsZSkgIT0gTlVMTCkgewoJCWlmICgqYnVmZmVy ID09ICcjJykKCQkJY29udGludWU7CgoJCW4gPSBzc2NhbmYoYnVmZmVyLCAiJSpbXCJdJVteXCJd JSpbXCJdJSpbXlwiXSUqW1wiXSVbXlwiXSIsIGtleSwgZGF0YSk7CgkJaWYgKG4gPT0gMikKCQkJ c2V0U3RyaW5nKGtleSwgZGF0YSk7Cgl9CgoJZmNsb3NlKGZpbGUpOwoJcmV0dXJuIEJfT0s7Cn0K --0016e640d0f6d1f790046738bc54--