From kmail-devel Thu May 24 01:29:22 2001 From: Carsten Pfeiffer Date: Thu, 24 May 2001 01:29:22 +0000 To: kmail-devel Subject: address completion X-MARC-Message: https://marc.info/?l=kmail-devel&m=99066779226710 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--------------Boundary-00=_Y4GTIP7EUG9D5S1232HA" --------------Boundary-00=_Y4GTIP7EUG9D5S1232HA Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Hiya, here's a quick patch that adds {auto,short-auto,popup,shell}-completion support to kmail's composer. Not sure if the From and Reply-To edits should use the same completion-items as the others tho (or at all). It also - removes some obsolete methods - moves some methods around (there were KMComposeWin methods in between KMLineEdit methods) - cleans up some things The bottom of the patch is not very readable -- diff couldn't come up with a better one, not even with -d. And yes, the old Ctrl-T completion is still available, too. Currently, the entire address is completed/shown, not just the name without email-address (a la Outlook). I would need some input if we want that, or not and some more information about how it works. Does completion in Outlook only work with names, or also email-addresses? Does it resolve email-addresses to names? I need some use-cases, if we want that. Cheers, Carsten Pfeiffer --------------Boundary-00=_Y4GTIP7EUG9D5S1232HA Content-Type: text/x-c; charset="iso-8859-1"; name="completion.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="completion.patch" PyBjb21wbGV0aW9uLnBhdGNoCkluZGV4OiBrbWNvbXBvc2V3aW4uY3BwCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9ob21lL2tkZS9rZGVuZXR3b3JrL2ttYWlsL2ttY29tcG9zZXdpbi5jcHAsdgpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMzM4CmRpZmYgLXUgLXAgLUIgLXcgLWQgLXIxLjMzOCBrbWNvbXBv c2V3aW4uY3BwCi0tLSBrbWNvbXBvc2V3aW4uY3BwCTIwMDEvMDUvMjAgMTk6MTY6MTYJMS4zMzgK KysrIGttY29tcG9zZXdpbi5jcHAJMjAwMS8wNS8yNCAwMToyMTo0NApAQCAtMjksNiArMjksOCBA QAogI2luY2x1ZGUgPGthYmFwaS5oPgogI2luY2x1ZGUgPGthY3Rpb24uaD4KICNpbmNsdWRlIDxr Y2hhcnNldHMuaD4KKyNpbmNsdWRlIDxrY29tcGxldGlvbi5oPgorI2luY2x1ZGUgPGtjb21wbGV0 aW9uYm94Lmg+CiAjaW5jbHVkZSA8a2N1cnNvci5oPgogI2luY2x1ZGUgPGtzdGRhY3Rpb24uaD4K ICNpbmNsdWRlIDxrZWRpdHRvb2xiYXIuaD4KQEAgLTE1MSw2ICsxNTMsMTcgQEAgS01Db21wb3Nl V2luOjpLTUNvbXBvc2VXaW4oS01NZXNzYWdlICphTQogICBjb25uZWN0KCZtQnRuRnJvbSxTSUdO QUwoY2xpY2tlZCgpKSxTTE9UKHNsb3RBZGRyQm9va0Zyb20oKSkpOwogICBjb25uZWN0KCZtSWRl bnRpdHksU0lHTkFMKGFjdGl2YXRlZChpbnQpKSxTTE9UKHNsb3RJZGVudGl0eUFjdGl2YXRlZChp bnQpKSk7CiAKKyAgY29ubmVjdCgmbUVkdFRvLFNJR05BTChjb21wbGV0aW9uTW9kZUNoYW5nZWQo S0dsb2JhbFNldHRpbmdzOjpDb21wbGV0aW9uKSksCisgICAgICAgICAgU0xPVChzbG90Q29tcGxl dGlvbk1vZGVDaGFuZ2VkKEtHbG9iYWxTZXR0aW5nczo6Q29tcGxldGlvbikpKTsKKyAgY29ubmVj dCgmbUVkdENjLFNJR05BTChjb21wbGV0aW9uTW9kZUNoYW5nZWQoS0dsb2JhbFNldHRpbmdzOjpD b21wbGV0aW9uKSksCisgICAgICAgICAgU0xPVChzbG90Q29tcGxldGlvbk1vZGVDaGFuZ2VkKEtH bG9iYWxTZXR0aW5nczo6Q29tcGxldGlvbikpKTsKKyAgY29ubmVjdCgmbUVkdEJjYyxTSUdOQUwo Y29tcGxldGlvbk1vZGVDaGFuZ2VkKEtHbG9iYWxTZXR0aW5nczo6Q29tcGxldGlvbikpLAorICAg ICAgICAgIFNMT1Qoc2xvdENvbXBsZXRpb25Nb2RlQ2hhbmdlZChLR2xvYmFsU2V0dGluZ3M6OkNv bXBsZXRpb24pKSk7CisgIGNvbm5lY3QoJm1FZHRSZXBseVRvLFNJR05BTChjb21wbGV0aW9uTW9k ZUNoYW5nZWQoS0dsb2JhbFNldHRpbmdzOjpDb21wbGV0aW9uKSksCisgICAgICAgICAgU0xPVChz bG90Q29tcGxldGlvbk1vZGVDaGFuZ2VkKEtHbG9iYWxTZXR0aW5nczo6Q29tcGxldGlvbikpKTsK KyAgY29ubmVjdCgmbUVkdEZyb20sU0lHTkFMKGNvbXBsZXRpb25Nb2RlQ2hhbmdlZChLR2xvYmFs U2V0dGluZ3M6OkNvbXBsZXRpb24pKSwKKyAgICAgICAgICBTTE9UKHNsb3RDb21wbGV0aW9uTW9k ZUNoYW5nZWQoS0dsb2JhbFNldHRpbmdzOjpDb21wbGV0aW9uKSkpOworICAKICAgbU1haW5XaWRn ZXQucmVzaXplKDQ4MCw1MTApOwogICBzZXRDZW50cmFsV2lkZ2V0KCZtTWFpbldpZGdldCk7CiAg IHJldGhpbmtGaWVsZHMoKTsKQEAgLTMxMiw2ICszMjUsMTQgQEAgdm9pZCBLTUNvbXBvc2VXaW46 OnJlYWRDb25maWcodm9pZCkKICAgbUF1dG9QZ3BTaWduID0gY29uZmlnLT5yZWFkTnVtRW50cnko InBncC1hdXRvLXNpZ24iLCAwKTsKICAgbUNvbmZpcm1TZW5kID0gY29uZmlnLT5yZWFkQm9vbEVu dHJ5KCJjb25maXJtLWJlZm9yZS1zZW5kIiwgZmFsc2UpOwogCisgIGludCBtb2RlID0gY29uZmln LT5yZWFkTnVtRW50cnkoIkNvbXBsZXRpb24gTW9kZSIsIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEtHbG9iYWxTZXR0aW5nczo6Y29tcGxldGlvbk1vZGUoKSApOworICBtRWR0 RnJvbS5zZXRDb21wbGV0aW9uTW9kZSggKEtHbG9iYWxTZXR0aW5nczo6Q29tcGxldGlvbikgbW9k ZSApOworICBtRWR0UmVwbHlUby5zZXRDb21wbGV0aW9uTW9kZSggKEtHbG9iYWxTZXR0aW5nczo6 Q29tcGxldGlvbikgbW9kZSApOworICBtRWR0VG8uc2V0Q29tcGxldGlvbk1vZGUoIChLR2xvYmFs U2V0dGluZ3M6OkNvbXBsZXRpb24pIG1vZGUgKTsKKyAgbUVkdENjLnNldENvbXBsZXRpb25Nb2Rl KCAoS0dsb2JhbFNldHRpbmdzOjpDb21wbGV0aW9uKSBtb2RlICk7CisgIG1FZHRCY2Muc2V0Q29t cGxldGlvbk1vZGUoIChLR2xvYmFsU2V0dGluZ3M6OkNvbXBsZXRpb24pIG1vZGUgKTsKKwogICBy ZWFkQ29sb3JDb25maWcoKTsKIAogICB7IC8vIGFyZWEgZm9yIGNvbmZpZyBncm91cCAiR2VuZXJh bCIKQEAgLTEzNTUsNyArMTM3Niw3IEBAIHZvaWQgS01Db21wb3NlV2luOjphZGRyQm9va1NlbElu dG8oS01MaW4KICAgICAgIHJldHVybjsKICAgICB9CiAgIGlmIChkbGcuZXhlYygpPT1RRGlhbG9n OjpSZWplY3RlZCkgcmV0dXJuOwotICB0eHQgPSBRU3RyaW5nKGFMaW5lRWRpdC0+dGV4dCgpKS5z dHJpcFdoaXRlU3BhY2UoKTsKKyAgdHh0ID0gYUxpbmVFZGl0LT50ZXh0KCkuc3RyaXBXaGl0ZVNw YWNlKCk7CiAgIGlmICghdHh0LmlzRW1wdHkoKSkKICAgICB7CiAgICAgICBpZiAodHh0LnJpZ2h0 KDEpLmF0KDApIT0nLCcpIHR4dCArPSAiLCAiOwpAQCAtMjI1MiwyMCArMjI3MywxMjAgQEAgdm9p ZCBLTUNvbXBvc2VXaW46OnNsb3RJZGVudGl0eUFjdGl2YXRlZAogICBtSWQgPSBpZGVudFN0cjsK IH0KIAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBLTUNvbXBvc2VXaW46OnNsb3RTcGVs bGNoZWNrQ29uZmlnKCkKK3sKKyAgS1dpbiBrd2luOworICBRVGFiRGlhbG9nIHF0ZCAodGhpcywg InRhYmRpYWxvZyIsIHRydWUpOworICBLU3BlbGxDb25maWcgbUtTcGVsbENvbmZpZyAoJnF0ZCk7 CisKKyAgcXRkLmFkZFRhYiAoJm1LU3BlbGxDb25maWcsIGkxOG4oIlNwZWxsY2hlY2tlciIpKTsK KyAgcXRkLnNldENhbmNlbEJ1dHRvbiAoKTsKKworICBrd2luLnNldEljb25zIChxdGQud2luSWQo KSwga2FwcC0+aWNvbigpLCBrYXBwLT5taW5pSWNvbigpKTsKKworICBpZiAocXRkLmV4ZWMoKSkK KyAgICBtS1NwZWxsQ29uZmlnLndyaXRlR2xvYmFsU2V0dGluZ3MoKTsKK30KKworLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQordm9pZCBLTUNvbXBvc2VXaW46OnNsb3RUb2dnbGVUb29sQmFyKCkKK3sK KyAgaWYodG9vbEJhcigibWFpblRvb2xCYXIiKS0+aXNWaXNpYmxlKCkpCisgICAgdG9vbEJhcigi bWFpblRvb2xCYXIiKS0+aGlkZSgpOworICBlbHNlCisgICAgdG9vbEJhcigibWFpblRvb2xCYXIi KS0+c2hvdygpOworfQorCit2b2lkIEtNQ29tcG9zZVdpbjo6c2xvdFRvZ2dsZVN0YXR1c0Jhcigp Cit7CisgIGlmIChzdGF0dXNCYXIoKS0+aXNWaXNpYmxlKCkpCisgICAgc3RhdHVzQmFyKCktPmhp ZGUoKTsKKyAgZWxzZQorICAgIHN0YXR1c0JhcigpLT5zaG93KCk7Cit9CisKK3ZvaWQgS01Db21w b3NlV2luOjpzbG90RWRpdFRvb2xiYXJzKCkKK3sKKyAgS0VkaXRUb29sYmFyIGRsZyhhY3Rpb25D b2xsZWN0aW9uKCksICJrbWNvbXBvc2VydWkucmMiKTsKKworICBpZiAoZGxnLmV4ZWMoKSA9PSB0 cnVlKQorICB7CisgICAgY3JlYXRlR1VJKCJrbWNvbXBvc2VydWkucmMiKTsKKyAgICB0b29sYmFy QWN0aW9uLT5zZXRDaGVja2VkKCF0b29sQmFyKCktPmlzSGlkZGVuKCkpOworICB9Cit9CisKK3Zv aWQgS01Db21wb3NlV2luOjpzbG90RWRpdEtleXMoKQoreworICBLS2V5RGlhbG9nOjpjb25maWd1 cmVLZXlzKGFjdGlvbkNvbGxlY3Rpb24oKSwgeG1sRmlsZSgpLCB0cnVlLCB0aGlzKTsKK30KIAor dm9pZCBLTUNvbXBvc2VXaW46OnNldFJlcGx5Rm9jdXMoIGJvb2wgaGFzTWVzc2FnZSApCit7Cisg IG1FZGl0b3ItPnNldEZvY3VzKCk7CisgIGlmICggaGFzTWVzc2FnZSApCisgICAgbUVkaXRvci0+ c2V0Q3Vyc29yUG9zaXRpb24oIDEsIDAgKTsKK30KKwordm9pZCBLTUNvbXBvc2VXaW46OnNsb3RD b21wbGV0aW9uTW9kZUNoYW5nZWQoIEtHbG9iYWxTZXR0aW5nczo6Q29tcGxldGlvbiBtb2RlKQor eworICAgIEtDb25maWcgKmNvbmZpZyA9IEtHbG9iYWw6OmNvbmZpZygpOworICAgIEtDb25maWdH cm91cFNhdmVyIGNzKCBjb25maWcsICJDb21wb3NlciIgKTsKKyAgICBjb25maWctPndyaXRlRW50 cnkoICJDb21wbGV0aW9uIE1vZGUiLCAoaW50KSBtb2RlICk7CisgICAgY29uZmlnLT5zeW5jKCk7 IC8vIG1heWJlIG5vdD8KKworICAgIC8vIHN5bmMgYWxsIHRoZSBsaW5lZWRpdHMgdG8gdGhlIHNh bWUgY29tcGxldGlvbiBtb2RlCisgICAgbUVkdEZyb20uc2V0Q29tcGxldGlvbk1vZGUoIG1vZGUg KTsgCisgICAgbUVkdFJlcGx5VG8uc2V0Q29tcGxldGlvbk1vZGUoIG1vZGUgKTsgCisgICAgbUVk dFRvLnNldENvbXBsZXRpb25Nb2RlKCBtb2RlICk7IAorICAgIG1FZHRDYy5zZXRDb21wbGV0aW9u TW9kZSggbW9kZSApOyAKKyAgICBtRWR0QmNjLnNldENvbXBsZXRpb25Nb2RlKCBtb2RlICk7IAor fQorCiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLwogLy8gICBDbGFzcyAgS01MaW5lRWRpdAog Ly8KIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworS0NvbXBsZXRpb24gKiBLTUxpbmVFZGl0Ojpz X2NvbXBsZXRpb24gPSAwTDsKK2Jvb2wgS01MaW5lRWRpdDo6c19hZGRyZXNzZXNEaXJ0eSA9IGZh bHNlOworCiBLTUxpbmVFZGl0OjpLTUxpbmVFZGl0KEtNQ29tcG9zZVdpbiogY29tcG9zZXIsIFFX aWRnZXQgKnBhcmVudCwKIAkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOiBLTUxpbmVFZGl0SW5o ZXJpdGVkKHBhcmVudCxuYW1lKQogewogICBtQ29tcG9zZXIgPSBjb21wb3NlcjsKKyAgaWYgKCAh c19jb21wbGV0aW9uICkgeworICAgICAgc19jb21wbGV0aW9uID0gbmV3IEtDb21wbGV0aW9uKCk7 CisgICAgICBzX2NvbXBsZXRpb24tPnNldE9yZGVyKCBLQ29tcGxldGlvbjo6U29ydGVkICk7Cisg IH0KIAogICBpbnN0YWxsRXZlbnRGaWx0ZXIodGhpcyk7CiAKKyAgaWYgKCB1c2VDb21wbGV0aW9u KCkgKSAKKyAgeworICAgICAgc2V0Q29tcGxldGlvbk9iamVjdCggc19jb21wbGV0aW9uLCBmYWxz ZSApOyAvLyB3ZSBoYW5kbGUgaXQgb3Vyc2VsZgorICAgICAgY29ubmVjdCggdGhpcywgU0lHTkFM KCBjb21wbGV0aW9uKGNvbnN0IFFTdHJpbmcmKSksIAorICAgICAgICAgICAgICAgdGhpcywgU0xP VChzbG90Q29tcGxldGlvbigpICkpOworICAKKyAgICAgIC8vIG9sZC1zdHlsZSBjb21wbGV0aW9u IHZpYSBDdHJsLVQKICAgY29ubmVjdCAodGhpcywgU0lHTkFMKGNvbXBsZXRpb24oKSksIHRoaXMs IFNMT1Qoc2xvdENvbXBsZXRpb24oKSkpOworICAKKyAgICAgIEtDb21wbGV0aW9uQm94ICpib3gg PSBjb21wbGV0aW9uQm94KCk7CisgICAgICAvLyAjIyMgdGhpcyBkaXNjb25uZWN0IGhhcyB0byBi ZSBmaXhlZCBpbiBrZGV1aQorICAgICAgZGlzY29ubmVjdCggYm94LCBTSUdOQUwoIGhpZ2hsaWdo dGVkKCBjb25zdCBRU3RyaW5nJiApKSwKKyAgICAgICAgICAgICAgICAgIHRoaXMsIFNMT1QoIHNl dFRleHQoIGNvbnN0IFFTdHJpbmcmICkpKTsKKyAgICAgIGNvbm5lY3QoIGJveCwgU0lHTkFMKCBo aWdobGlnaHRlZCggY29uc3QgUVN0cmluZyYgKSksCisgICAgICAgICAgICAgICB0aGlzLCBTTE9U KCBzbG90UG9wdXBDb21wbGV0aW9uKCBjb25zdCBRU3RyaW5nJiApICkpOworICAgICAgICAgICAg ICAKKyAgCisgICAgICAvLyBXaGVuZXZlciBhIG5ldyBLTUxpbmVFZGl0IGlzIGNyZWF0ZWQgKD09 IGEgbmV3IGNvbXBvc2VyIGlzIGNyZWF0ZWQpLCAKKyAgICAgIC8vIHdlIHNldCBhIGRpcnR5IGZs YWcgdG8gcmVsb2FkIHRoZSBhZGRyZXNzZXMgdXBvbiB0aGUgZmlyc3QgY29tcGxldGlvbi4KKyAg ICAgIC8vIFRoZSBhZGRyZXNzIGNvbXBsZXRpb25zIGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwgS01M aW5lRWRpdHMuCisgICAgICAvLyBJcyB0aGVyZSBhIHNpZ25hbCB0aGF0IHRlbGxzIHVzIGFib3V0 IGFkZHJlc3Nib29rIHVwZGF0ZXM/CisgICAgICBzX2FkZHJlc3Nlc0RpcnR5ID0gdHJ1ZTsKKyAg fQogfQogCiAKQEAgLTIyNzcsNyArMjM5OCw3IEBAIEtNTGluZUVkaXQ6On5LTUxpbmVFZGl0KCkK IAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1ib29sIEtNTGluZUVkaXQ6OmV2ZW50RmlsdGVy KFFPYmplY3QqLCBRRXZlbnQqIGUpCitib29sIEtNTGluZUVkaXQ6OmV2ZW50RmlsdGVyKFFPYmpl Y3QgKm8sIFFFdmVudCAqZSkKIHsKICNpZmRlZiBLZXlQcmVzcwogI3VuZGVmIEtleVByZXNzCkBA IC0yMjg3LDIxICsyNDA4LDIzIEBAIGJvb2wgS01MaW5lRWRpdDo6ZXZlbnRGaWx0ZXIoUU9iamVj dCosIFEKICAgewogICAgIFFLZXlFdmVudCogayA9IChRS2V5RXZlbnQqKWU7CiAKLSAgICBpZiAo ay0+c3RhdGUoKT09Q29udHJvbEJ1dHRvbiAmJiBrLT5rZXkoKT09S2V5X1QpCisgICAgaWYgKGNv bXBsZXRpb25Nb2RlKCkgPT0gS0dsb2JhbFNldHRpbmdzOjpDb21wbGV0aW9uTm9uZSAmJgorICAg ICAgICBrLT5zdGF0ZSgpPT1Db250cm9sQnV0dG9uICYmIGstPmtleSgpPT1LZXlfVCkKICAgICB7 CiAgICAgICBlbWl0IGNvbXBsZXRpb24oKTsKICAgICAgIGN1cnNvckF0RW5kKCk7CiAgICAgICBy ZXR1cm4gVFJVRTsKICAgICB9CiAgICAgLy8gLS0tc3ZlbidzIFJldHVybiBpcyBzYW1lIFRhYiBh bmQgYXJyb3cga2V5IG5hdmlnYXRpb24gc3RhcnQgLS0tCi0gICAgaWYgKGstPmtleSgpID09IEtl eV9FbnRlciB8fCBrLT5rZXkoKSA9PSBLZXlfUmV0dXJuKQorICAgIGlmIChrLT5rZXkoKSA9PSBL ZXlfRW50ZXIgfHwgay0+a2V5KCkgPT0gS2V5X1JldHVybiAmJiAKKyAgICAgICAgIWNvbXBsZXRp b25Cb3goKS0+aXNWaXNpYmxlKCkpCiAgICAgewogICAgICAgbUNvbXBvc2VyLT5mb2N1c05leHRQ cmV2RWRpdCh0aGlzLFRSVUUpOwogICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogICAgIGlmIChr LT5zdGF0ZSgpPT1Db250cm9sQnV0dG9uICYmIGstPmtleSgpID09IEtleV9SaWdodCkKICAgICB7 Ci0gICAgICBpZiAoKGludClzdHJsZW4odGV4dCgpKSA9PSBjdXJzb3JQb3NpdGlvbigpKSAvLyBh dCBFbmQ/CisgICAgICBpZiAoKGludCl0ZXh0KCkubGVuZ3RoKCkgPT0gY3Vyc29yUG9zaXRpb24o KSkgLy8gYXQgRW5kPwogICAgICAgewogICAgICAgICBlbWl0IGNvbXBsZXRpb24oKTsKICAgICAg ICAgY3Vyc29yQXRFbmQoKTsKQEAgLTIzMjEsMzEgKzI0NDQsMTUgQEAgYm9vbCBLTUxpbmVFZGl0 OjpldmVudEZpbHRlcihRT2JqZWN0KiwgUQogICAgIH0KICAgICAvLyAtLS1zdmVuJ3MgUmV0dXJu IGlzIHNhbWUgVGFiIGFuZCBhcnJvdyBrZXkgbmF2aWdhdGlvbiBlbmQgLS0tCiAKLSAgfQotICBl bHNlIGlmIChlLT50eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzKQotICB7Ci0gICAg UU1vdXNlRXZlbnQqIG1lID0gKFFNb3VzZUV2ZW50KillOwotICAgIGlmIChtZS0+YnV0dG9uKCkg PT0gUmlnaHRCdXR0b24pCi0gICAgewotICAgICAgUVBvcHVwTWVudSogcCA9IG5ldyBRUG9wdXBN ZW51OwotICAgICAgcC0+aW5zZXJ0SXRlbShpMThuKCJDdXQiKSx0aGlzLFNMT1QoY3V0KCkpKTsK LSAgICAgIHAtPmluc2VydEl0ZW0oaTE4bigiQ29weSIpLHRoaXMsU0xPVChjb3B5KCkpKTsKLSAg ICAgIHAtPmluc2VydEl0ZW0oaTE4bigiUGFzdGUiKSx0aGlzLFNMT1QocGFzdGUoKSkpOwotICAg ICAgcC0+aW5zZXJ0SXRlbShpMThuKCJNYXJrIGFsbCIpLHRoaXMsU0xPVChtYXJrQWxsKCkpKTsK LSAgICAgIHNldEZvY3VzKCk7Ci0gICAgICBwLT5wb3B1cChRQ3Vyc29yOjpwb3MoKSk7Ci0gICAg ICByZXR1cm4gVFJVRTsKICAgICB9Ci0gIH0KLSAgcmV0dXJuIEZBTFNFOworICByZXR1cm4gS01M aW5lRWRpdEluaGVyaXRlZDo6ZXZlbnRGaWx0ZXIobywgZSk7CiB9CiAKIAogLy8tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogdm9pZCBLTUxpbmVFZGl0OjpjdXJzb3JBdEVuZCgpCiB7Ci0gIFFLZXlFdmVu dCBldiggUUV2ZW50OjpLZXlQcmVzcywgS2V5X0VuZCwgMCwgMCApOwotICBRTGluZUVkaXQ6Omtl eVByZXNzRXZlbnQoICZldiApOworICAgIHNldEN1cnNvclBvc2l0aW9uKCB0ZXh0KCkubGVuZ3Ro KCkgKTsKIH0KIAogCkBAIC0yMzU1LDE5MCArMjQ2MiwxNzYgQEAgdm9pZCBLTUxpbmVFZGl0Ojp1 bmRvKCkKICAgICBrZXlQcmVzc0V2ZW50KCAmayApOwogfQogCi0vLy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi12b2lkIEtNTGluZUVkaXQ6OmNvcHkoKQorYm9vbCBLTUxpbmVFZGl0Ojp1c2VDb21wbGV0 aW9uKCkgY29uc3QKIHsKLSAgUVN0cmluZyB0ID0gbWFya2VkVGV4dCgpOwotICBRQXBwbGljYXRp b246OmNsaXBib2FyZCgpLT5zZXRUZXh0KHQpOworICAgIC8vIGZlZWwgZnJlZSB0byBtYWtlIHRo aXMgYSBiaXQgbW9yZSBmbGV4aWJsZSA6KQorICAgIHJldHVybiAhbmFtZSgpIHx8IHFzdHJuY21w KG5hbWUoKSwgInN1YmplY3RMaW5lIiwgMTEpICE9IDA7CiB9CiAKIC8vLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLXZvaWQgS01MaW5lRWRpdDo6Y3V0KCkKLXsKLSAgaWYoaGFzTWFya2VkVGV4dCgpKQor dm9pZCBLTUxpbmVFZGl0OjpzbG90Q29tcGxldGlvbigpCiAgIHsKLSAgICBRU3RyaW5nIHQgPSBt YXJrZWRUZXh0KCk7Ci0gICAgUUtleUV2ZW50IGsoUUV2ZW50OjpLZXlQcmVzcywgS2V5X0QsIDAs IENvbnRyb2xCdXR0b24pOwotICAgIGtleVByZXNzRXZlbnQoJmspOwotICAgIFFBcHBsaWNhdGlv bjo6Y2xpcGJvYXJkKCktPnNldFRleHQodCk7Ci0gIH0KLX0KKyAgICBpZiAoICF1c2VDb21wbGV0 aW9uKCkgKQorICAgICAgICByZXR1cm47CiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXZvaWQg S01MaW5lRWRpdDo6cGFzdGUoKQorICAgIFFTdHJpbmcgcyh0ZXh0KCkpOworICAgIFFTdHJpbmcg cHJldkFkZHI7CisgICAgaW50IG4gPSBzLmZpbmRSZXYoJywnKTsKKyAgICBpZiAobj49IDApCiB7 Ci0gIFFLZXlFdmVudCBrKFFFdmVudDo6S2V5UHJlc3MsIEtleV9WLCAwLCBDb250cm9sQnV0dG9u KTsKLSAga2V5UHJlc3NFdmVudCgmayk7CisgICAgICAgIHByZXZBZGRyID0gcy5sZWZ0KG4rMSkg KyAnICc7CisgICAgICAgIHMgPSBzLm1pZChuKzEsMjU1KS5zdHJpcFdoaXRlU3BhY2UoKTsKIH0K IAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdm9pZCBLTUxpbmVFZGl0OjptYXJrQWxsKCkKKyAg ICBLQ29tcGxldGlvbkJveCAqYm94ID0gY29tcGxldGlvbkJveCgpOworCisgICAgaWYgKCBzLmlz RW1wdHkoKSApCiB7Ci0gIHNlbGVjdEFsbCgpOworICAgICAgICBib3gtPmhpZGUoKTsKKyAgICAg ICAgcmV0dXJuOwogfQogCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi12b2lkIEtNTGluZUVkaXQ6 OnNsb3RDb21wbGV0aW9uKCkKLXsKLSAgUVN0cmluZyB0OwotICBRU3RyaW5nIE5hbWUobmFtZSgp KTsKKyAgICBLR2xvYmFsU2V0dGluZ3M6OkNvbXBsZXRpb24gIG1vZGUgPSBjb21wbGV0aW9uTW9k ZSgpOwogCi0gIGlmIChOYW1lID09ICJzdWJqZWN0TGluZSIpCi0gIHsKLSAgICAvL21Db21wb3Nl ci0+Zm9jdXNOZXh0UHJldkVkaXQodGhpcyxUUlVFKTsgLy9JTUhPLCBpdCBpcyB1c2VsZXNzIG5v dyAoc3ZlbikKKyAgICBpZiAoIHNfYWRkcmVzc2VzRGlydHkgKQorICAgICAgICBsb2FkQWRkcmVz c2VzKCk7CiAKLSAgICByZXR1cm47Ci0gIH0KKyAgICBRU3RyaW5nIG1hdGNoOworICAgIGludCBj dXJQb3MgPSBjdXJzb3JQb3NpdGlvbigpOworICAgIGlmICggbW9kZSAhPSBLR2xvYmFsU2V0dGlu Z3M6OkNvbXBsZXRpb25Ob25lICkKKyAgICAgICAgbWF0Y2ggPSBzX2NvbXBsZXRpb24tPm1ha2VD b21wbGV0aW9uKCBzICk7CiAKLSAgUVBvcHVwTWVudSBwb3A7Ci0gIGludCBuOworICAgIC8vIGtk RGVidWcoKSA8PCAiKiogY29tcGxldGlvbiBmb3I6ICIgPDwgcyA8PCAiIDogIiA8PCBtYXRjaCA8 PCBlbmRsOwogCi0gIEtNQWRkckJvb2sgYWRiOwotICBhZGIucmVhZENvbmZpZygpOworICAgIHN3 aXRjaCAoIG1vZGUgKSAKKyAgICB7CisgICAgICAgIGNhc2UgS0dsb2JhbFNldHRpbmdzOjpDb21w bGV0aW9uUG9wdXA6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggIW1hdGNoLmlzTnVsbCgp ICYmIG1hdGNoICE9IHMgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fcHJldmlv dXNBZGRyZXNzZXMgPSBwcmV2QWRkcjsKKyAgICAgICAgICAgICAgICBib3gtPmNsZWFyKCk7Cisg ICAgICAgICAgICAgICAgYm94LT5pbnNlcnRTdHJpbmdMaXN0KCBzX2NvbXBsZXRpb24tPmFsbE1h dGNoZXMoIHMgKSk7CisgICAgICAgICAgICAgICAgYm94LT5wb3B1cCgpOworICAgICAgICAgICAg fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJveC0+aGlkZSgpOwogCi0gIGlm KGFkYi5sb2FkKCkgPT0gSU9fRmF0YWxFcnJvcikKLSAgICByZXR1cm47CisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgfQogCi0gIFFTdHJpbmcgcyh0ZXh0KCkpOwotICBRU3RyaW5nIHByZXZB ZGRyOwotICBuID0gcy5maW5kUmV2KCcsJyk7Ci0gIGlmIChuPj0wKQorICAgICAgICBjYXNlIEtH bG9iYWxTZXR0aW5nczo6Q29tcGxldGlvblNoZWxsOgogICB7Ci0gICAgcHJldkFkZHIgPSBzLmxl ZnQobisxKSArICcgJzsKLSAgICBzID0gcy5taWQobisxLDI1NSkuc3RyaXBXaGl0ZVNwYWNlKCk7 CisgICAgICAgICAgICBpZiAoICFtYXRjaC5pc051bGwoKSAmJiBtYXRjaCAhPSBzICkgCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgc2V0VGV4dCggcHJldkFkZHIgKyBtYXRjaCApOwor ICAgICAgICAgICAgICAgIGN1cnNvckF0RW5kKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICBicmVhazsKICAgfQogCi0gIG49MDsKLSAgaWYgKCFLTUFkZHJCb29rRXh0ZXJuYWw6OnVzZUtB QigpKQotICAgIGZvciAoUVN0cmluZyBhPWFkYi5maXJzdCgpOyBhOyBhPWFkYi5uZXh0KCkpCisg ICAgICAgIGNhc2UgS0dsb2JhbFNldHRpbmdzOjpDb21wbGV0aW9uTWFuOiAvLyBTaG9ydC1BdXRv IGluIGZhY3QKKyAgICAgICAgY2FzZSBLR2xvYmFsU2V0dGluZ3M6OkNvbXBsZXRpb25BdXRvOgog ICAgICAgewotCWlmIChRU3RyaW5nKGEpLmZpbmQocywwLGZhbHNlKSA+PSAwKQorICAgICAgICAg ICAgaWYgKCAhbWF0Y2guaXNOdWxsKCkgJiYgbWF0Y2ggIT0gcyApIAogCSAgewotCSAgICBwb3Au aW5zZXJ0SXRlbShhKTsKLQkgICAgbisrOworICAgICAgICAgICAgICAgIFFTdHJpbmcgYWRkcyA9 IHByZXZBZGRyICsgbWF0Y2g7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBbmRTZXQoIGFkZHMs IGN1clBvcywgY3VyUG9zLCBhZGRzLmxlbmd0aCgpICk7CiAJICB9CisgICAgICAgICAgICBicmVh azsKICAgICAgIH0KLSAgZWxzZSB7Ci0gICAgUVN0cmluZ0xpc3QgYWRkcmVzc2VzOwotICAgIEth YkJyaWRnZTo6YWRkcmVzc2VzKCZhZGRyZXNzZXMpOworCisgICAgICAgIGRlZmF1bHQ6IC8vIGZh bGwgdGhyb3VnaAorICAgICAgICBjYXNlIEtHbG9iYWxTZXR0aW5nczo6Q29tcGxldGlvbk5vbmU6 CisgICAgICAgIHsKKyAgICAgICAgICAgIFFQb3B1cE1lbnUgcG9wOworCisgICAgICAgICAgICBR U3RyaW5nTGlzdCBhZGRyZXNzZXMgPSBzX2NvbXBsZXRpb24tPml0ZW1zKCk7CiAgICAgUVN0cmlu Z0xpc3Q6Okl0ZXJhdG9yIGl0ID0gYWRkcmVzc2VzLmJlZ2luKCk7CiAgICAgZm9yICg7IGl0ICE9 IGFkZHJlc3Nlcy5lbmQoKTsgKytpdCkKICAgICAgIHsKIAlpZiAoKCppdCkuZmluZChzLDAsZmFs c2UpID49IDApCi0JICB7CiAJICAgIHBvcC5pbnNlcnRJdGVtKCppdCk7Ci0JICAgIG4rKzsKLQkg IH0KLSAgICAgIH0KICAgfQogCi0gIGlmIChuID4gMSkKKyAgICAgICAgICAgIGlmIChwb3AuY291 bnQoKSA+IDEpCiAgIHsKICAgICBpbnQgaWQ7CiAgICAgcG9wLnBvcHVwKHBhcmVudFdpZGdldCgp LT5tYXBUb0dsb2JhbChRUG9pbnQoeCgpLCB5KCkraGVpZ2h0KCkpKSk7CiAgICAgcG9wLnNldEFj dGl2ZUl0ZW0ocG9wLmlkQXQoMCkpOwogICAgIGlkID0gcG9wLmV4ZWMoKTsKIAotICAgIGlmIChp ZCE9LTEpCi0gICAgeworICAgICAgICAgICAgICAgIGlmIChpZCA+IC0xKQogICAgICAgc2V0VGV4 dChwcmV2QWRkciArIHBvcC50ZXh0KGlkKSk7Ci0gICAgICAvL21Db21wb3Nlci0+Zm9jdXNOZXh0 UHJldkVkaXQodGhpcyxUUlVFKTsKICAgICB9Ci0gIH0KLSAgZWxzZSBpZiAobj09MSkKKyAgICAg ICAgICAgIGVsc2UgaWYgKHBvcC5jb3VudCgpID09IDEpCiAgIHsKICAgICBzZXRUZXh0KHByZXZB ZGRyICsgcG9wLnRleHQocG9wLmlkQXQoMCkpKTsKLSAgICAvL21Db21wb3Nlci0+Zm9jdXNOZXh0 UHJldkVkaXQodGhpcyxUUlVFKTsKICAgfQogCiAgIHNldEZvY3VzKCk7CiAgIGN1cnNvckF0RW5k KCk7CisgICAgICAgICAgICBicmVhazsKIH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdm9p ZCBLTUxpbmVFZGl0Ojpkcm9wRXZlbnQoUURyb3BFdmVudCAqZSkKLXsKLSAgUVN0ckxpc3QgdXJp TGlzdDsKLSAgaWYoUVVyaURyYWc6OmNhbkRlY29kZShlKSAmJiBRVXJpRHJhZzo6ZGVjb2RlKCBl LCB1cmlMaXN0ICkpCi0gIHsKLSAgICBRU3RyaW5nIGN0ID0gdGV4dCgpOwotICAgIGZvciAoUVN0 ckxpc3RJdGVyYXRvciBpdCh1cmlMaXN0KTsgaXQ7ICsraXQpCi0gICAgewotICAgICAgaWYgKCFj dC5pc0VtcHR5KCkpIGN0LmFwcGVuZCgiLCAiKTsKLSAgICAgIEtVUkwgdSgqaXQpOwotICAgICAg aWYgKHUucHJvdG9jb2woKSA9PSAibWFpbHRvIikgY3QuYXBwZW5kKFFTdHJpbmc6OmZyb21VdGY4 KHUucGF0aCgpKSk7Ci0gICAgICBlbHNlIGN0LmFwcGVuZChRU3RyaW5nOjpmcm9tVXRmOCgqaXQp KTsKLSAgICB9Ci0gICAgc2V0VGV4dChjdCk7CiAgIH0KLSAgZWxzZSBRTGluZUVkaXQ6OmRyb3BF dmVudChlKTsKIH0KIAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdm9pZCBLTUNvbXBvc2VXaW46 OnNsb3RTcGVsbGNoZWNrQ29uZmlnKCkKK3ZvaWQgS01MaW5lRWRpdDo6c2xvdFBvcHVwQ29tcGxl dGlvbiggY29uc3QgUVN0cmluZyYgY29tcGxldGlvbiApCiB7Ci0KLSAgS1dpbiBrd2luOwotICBR VGFiRGlhbG9nIHF0ZCAodGhpcywgInRhYmRpYWxvZyIsIHRydWUpOwotICBLU3BlbGxDb25maWcg bUtTcGVsbENvbmZpZyAoJnF0ZCk7Ci0KLSAgcXRkLmFkZFRhYiAoJm1LU3BlbGxDb25maWcsIGkx OG4oIlNwZWxsY2hlY2tlciIpKTsKLSAgcXRkLnNldENhbmNlbEJ1dHRvbiAoKTsKLQotICBrd2lu LnNldEljb25zIChxdGQud2luSWQoKSwga2FwcC0+aWNvbigpLCBrYXBwLT5taW5pSWNvbigpKTsK LQotICBpZiAocXRkLmV4ZWMoKSkKLSAgICBtS1NwZWxsQ29uZmlnLndyaXRlR2xvYmFsU2V0dGlu Z3MoKTsKKyAgICBzZXRUZXh0KCBtX3ByZXZpb3VzQWRkcmVzc2VzICsgY29tcGxldGlvbiApOwor ICAgIGN1cnNvckF0RW5kKCk7CiB9CiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXZvaWQgS01D b21wb3NlV2luOjpzbG90VG9nZ2xlVG9vbEJhcigpCit2b2lkIEtNTGluZUVkaXQ6OmxvYWRBZGRy ZXNzZXMoKQogewotICBpZih0b29sQmFyKCJtYWluVG9vbEJhciIpLT5pc1Zpc2libGUoKSkKLSAg ICB0b29sQmFyKCJtYWluVG9vbEJhciIpLT5oaWRlKCk7Ci0gIGVsc2UKLSAgICB0b29sQmFyKCJt YWluVG9vbEJhciIpLT5zaG93KCk7Ci19CisgICAgc19jb21wbGV0aW9uLT5jbGVhcigpOworICAg IHNfYWRkcmVzc2VzRGlydHkgPSBmYWxzZTsKIAotdm9pZCBLTUNvbXBvc2VXaW46OnNsb3RUb2dn bGVTdGF0dXNCYXIoKQotewotICBpZiAoc3RhdHVzQmFyKCktPmlzVmlzaWJsZSgpKQotICAgIHN0 YXR1c0JhcigpLT5oaWRlKCk7Ci0gIGVsc2UKLSAgICBzdGF0dXNCYXIoKS0+c2hvdygpOwotfQor ICAgIEtNQWRkckJvb2sgYWRiOworICAgIGFkYi5yZWFkQ29uZmlnKCk7CiAKLXZvaWQgS01Db21w b3NlV2luOjpzbG90RWRpdFRvb2xiYXJzKCkKLXsKLSAgS0VkaXRUb29sYmFyIGRsZyhhY3Rpb25D b2xsZWN0aW9uKCksICJrbWNvbXBvc2VydWkucmMiKTsKKyAgICBpZihhZGIubG9hZCgpID09IElP X0ZhdGFsRXJyb3IpCisgICAgICAgIHJldHVybjsKIAotICBpZiAoZGxnLmV4ZWMoKSA9PSB0cnVl KQorICAgIGlmICghS01BZGRyQm9va0V4dGVybmFsOjp1c2VLQUIoKSkgeworICAgICAgICBmb3Ig KFFTdHJpbmcgYSA9IGFkYi5maXJzdCgpOyAhYS5pc0VtcHR5KCk7IGEgPSBhZGIubmV4dCgpKQog ICB7Ci0gICAgY3JlYXRlR1VJKCJrbWNvbXBvc2VydWkucmMiKTsKLSAgICB0b29sYmFyQWN0aW9u LT5zZXRDaGVja2VkKCF0b29sQmFyKCktPmlzSGlkZGVuKCkpOworICAgICAgICAgICAgc19jb21w bGV0aW9uLT5hZGRJdGVtKCBhICk7CisgICAgICAgICAgICAvLyBrZERlYnVnKCkgPDwgIioqIDEg YWRkaW5nOiAiIDw8IGEgPDwgZW5kbDsKICAgfQogfQogCi12b2lkIEtNQ29tcG9zZVdpbjo6c2xv dEVkaXRLZXlzKCkKKyAgICBlbHNlIHsKKyAgICAgICAgUVN0cmluZ0xpc3QgYWRkcmVzc2VzOwor ICAgICAgICBLYWJCcmlkZ2U6OmFkZHJlc3NlcygmYWRkcmVzc2VzKTsKKyAgICAgICAgUVN0cmlu Z0xpc3Q6Okl0ZXJhdG9yIGl0ID0gYWRkcmVzc2VzLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBp dCAhPSBhZGRyZXNzZXMuZW5kKCk7ICsraXQpCiB7Ci0gIEtLZXlEaWFsb2c6OmNvbmZpZ3VyZUtl eXMoYWN0aW9uQ29sbGVjdGlvbigpLCB4bWxGaWxlKCksIHRydWUsIHRoaXMpOworICAgICAgICAg ICAgc19jb21wbGV0aW9uLT5hZGRJdGVtKCAqaXQgKTsKKyAgICAgICAgICAgIC8vIGtkRGVidWco KSA8PCAiKiogMiBhZGRpbmc6ICIgPDwgKml0IDw8IGVuZGw7CiB9CisgICAgfQorfQogCi12b2lk IEtNQ29tcG9zZVdpbjo6c2V0UmVwbHlGb2N1cyggYm9vbCBoYXNNZXNzYWdlICkKKworLy8tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQordm9pZCBLTUxpbmVFZGl0Ojpkcm9wRXZlbnQoUURyb3BFdmVudCAq ZSkKIHsKLSAgbUVkaXRvci0+c2V0Rm9jdXMoKTsKLSAgaWYgKCBoYXNNZXNzYWdlICkKLSAgICBt RWRpdG9yLT5zZXRDdXJzb3JQb3NpdGlvbiggMSwgMCApOworICBRU3RyTGlzdCB1cmlMaXN0Owor ICBpZihRVXJpRHJhZzo6Y2FuRGVjb2RlKGUpICYmIFFVcmlEcmFnOjpkZWNvZGUoIGUsIHVyaUxp c3QgKSkKKyAgeworICAgIFFTdHJpbmcgY3QgPSB0ZXh0KCk7CisgICAgZm9yIChRU3RyTGlzdEl0 ZXJhdG9yIGl0KHVyaUxpc3QpOyBpdDsgKytpdCkKKyAgICB7CisgICAgICBpZiAoIWN0LmlzRW1w dHkoKSkgY3QuYXBwZW5kKCIsICIpOworICAgICAgS1VSTCB1KCppdCk7CisgICAgICBpZiAodS5w cm90b2NvbCgpID09ICJtYWlsdG8iKSBjdC5hcHBlbmQoUVN0cmluZzo6ZnJvbVV0ZjgodS5wYXRo KCkpKTsKKyAgICAgIGVsc2UgY3QuYXBwZW5kKFFTdHJpbmc6OmZyb21VdGY4KCppdCkpOworICAg IH0KKyAgICBzZXRUZXh0KGN0KTsKKyAgfQorICBlbHNlIFFMaW5lRWRpdDo6ZHJvcEV2ZW50KGUp OwogfQogCiAKSW5kZXg6IGttY29tcG9zZXdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21l L2tkZS9rZGVuZXR3b3JrL2ttYWlsL2ttY29tcG9zZXdpbi5oLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjExMwpkaWZmIC11IC1wIC1CIC13IC1kIC1yMS4xMTMga21jb21wb3Nld2luLmgKLS0tIGtt Y29tcG9zZXdpbi5oCTIwMDEvMDUvMTYgMjA6MTY6NDcJMS4xMTMKKysrIGttY29tcG9zZXdpbi5o CTIwMDEvMDUvMjQgMDE6MjE6NDQKQEAgLTE0LDggKzE0LDkgQEAKICNpbmNsdWRlIDxxcGFsZXR0 ZS5oPgogI2luY2x1ZGUgPHFmb250Lmg+CiAjaW5jbHVkZSA8a2VkaXRjbC5oPgotI2luY2x1ZGUg PHFsaW5lZWRpdC5oPgorI2luY2x1ZGUgPGtsaW5lZWRpdC5oPgogI2luY2x1ZGUgPGtpby9qb2Iu aD4KKyNpbmNsdWRlIDxrZ2xvYmFsc2V0dGluZ3MuaD4KIAogI2luY2x1ZGUgImttbXNncGFydC5o IgogI2luY2x1ZGUgImttbXNnYmFzZS5oIgpAQCAtMzYsNyArMzcsNyBAQCBjbGFzcyBRTGlzdFZp ZXc7CiBjbGFzcyBRTGlzdFZpZXdJdGVtOwogY2xhc3MgUVBvcHVwTWVudTsKIGNsYXNzIFFQdXNo QnV0dG9uOwotY2xhc3MgS0RORERyb3Bab25lOworY2xhc3MgS0NvbXBsZXRpb247CiBjbGFzcyBL RWRpdDsKIGNsYXNzIEtNQ29tcG9zZVdpbjsKIGNsYXNzIEtNTWVzc2FnZTsKQEAgLTU5LDggKzYw LDggQEAgY2xhc3MgS01FZGl0OiBwdWJsaWMgS0VkaXQKIHsKICAgUV9PQkpFQ1QKIHB1YmxpYzoK LSAgS01FZGl0KFFXaWRnZXQgKnBhcmVudD1OVUxMLEtNQ29tcG9zZVdpbiogY29tcG9zZXI9TlVM TCwKLQkgY29uc3QgY2hhciAqbmFtZT1OVUxMKTsKKyAgS01FZGl0KFFXaWRnZXQgKnBhcmVudD0w TCxLTUNvbXBvc2VXaW4qIGNvbXBvc2VyPTBMLAorCSBjb25zdCBjaGFyICpuYW1lPTBMKTsKICAg dmlydHVhbCB+S01FZGl0KCk7CiAKICAgLyoqCkBAIC05OCwzNiArOTksNDMgQEAgcHJpdmF0ZToK IAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jZGVmaW5lIEtNTGluZUVkaXRJbmhlcml0ZWQg UUxpbmVFZGl0Ci1jbGFzcyBLTUxpbmVFZGl0IDogcHVibGljIFFMaW5lRWRpdAorI2RlZmluZSBL TUxpbmVFZGl0SW5oZXJpdGVkIEtMaW5lRWRpdAorY2xhc3MgS01MaW5lRWRpdCA6IHB1YmxpYyBL TGluZUVkaXQKIHsKICAgUV9PQkpFQ1QKIAogcHVibGljOgotICBLTUxpbmVFZGl0KEtNQ29tcG9z ZVdpbiogY29tcG9zZXIgPSBOVUxMLCBRV2lkZ2V0ICpwYXJlbnQgPSBOVUxMLAotCSAgICAgY29u c3QgY2hhciAqbmFtZSA9IE5VTEwpOworICBLTUxpbmVFZGl0KEtNQ29tcG9zZVdpbiogY29tcG9z ZXIsIFFXaWRnZXQgKnBhcmVudCA9IDBMLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUg PSAwTCk7CiAgIHZpcnR1YWwgfktNTGluZUVkaXQoKTsKIAotICAvKiogU2V0IGN1cnNvciB0byBl bmQgb2YgbGluZS4gKi8KLSAgIHZvaWQgY3Vyc29yQXRFbmQoKTsKLQogc2lnbmFsczoKLSAgLyoq IEVtaXR0ZWQgd2hlbiBDdHJsLS4gKHBlcmlvZCkgaXMgcHJlc3NlZC4gKi8KKyAgLyoqIEVtaXR0 ZWQgd2hlbiBDdHJsLVQgaXMgcHJlc3NlZC4gKi8KICAgdm9pZCBjb21wbGV0aW9uKCk7CiAKIHB1 YmxpYyBzbG90czoKICAgIHZvaWQgdW5kbygpOwotICAgdm9pZCBjb3B5KCk7Ci0gICB2b2lkIGN1 dCgpOwotICAgdm9pZCBwYXN0ZSgpOwotICAgdm9pZCBtYXJrQWxsKCk7Ci0gICB2b2lkIHNsb3RD b21wbGV0aW9uKCk7CisgIC8qKiBTZXQgY3Vyc29yIHRvIGVuZCBvZiBsaW5lLiAqLworICB2b2lk IGN1cnNvckF0RW5kKCk7CiAKIHByb3RlY3RlZDoKICAgdmlydHVhbCBib29sIGV2ZW50RmlsdGVy KFFPYmplY3QqLCBRRXZlbnQqKTsKICAgdmlydHVhbCB2b2lkIGRyb3BFdmVudChRRHJvcEV2ZW50 ICplKTsKICAgS01Db21wb3NlV2luKiBtQ29tcG9zZXI7Ci1wcm90ZWN0ZWQ6CisKK3ByaXZhdGUg c2xvdHM6CisgIHZvaWQgc2xvdENvbXBsZXRpb24oKTsKKyAgdm9pZCBzbG90UG9wdXBDb21wbGV0 aW9uKCBjb25zdCBRU3RyaW5nJiApOworCitwcml2YXRlOgorICB2b2lkIGxvYWRBZGRyZXNzZXMo KTsKKyAgYm9vbCB1c2VDb21wbGV0aW9uKCkgY29uc3Q7CisgICAgCisgIFFTdHJpbmcgbV9wcmV2 aW91c0FkZHJlc3NlczsKKworICBzdGF0aWMgYm9vbCBzX2FkZHJlc3Nlc0RpcnR5OworICBzdGF0 aWMgS0NvbXBsZXRpb24gKnNfY29tcGxldGlvbjsKKwogfTsKIAogCkBAIC0xNDAsNyArMTQ4LDcg QEAgY2xhc3MgS01Db21wb3NlV2luIDogcHVibGljIEtNVG9wTGV2ZWxXaQogICBmcmllbmQgY2xh c3MgS01IZWFkZXJzOyAgICAgICAgIC8vIG5lZWRlZCBmb3IgdGhlIGRpZ2VzdCBmb3J3YXJkCiAK IHB1YmxpYzoKLSAgS01Db21wb3NlV2luKEtNTWVzc2FnZSogbXNnPU5VTEwsIFFTdHJpbmcgaWQg PSAidW5rbm93biIgKTsKKyAgS01Db21wb3NlV2luKEtNTWVzc2FnZSogbXNnPTBMLCBRU3RyaW5n IGlkID0gInVua25vd24iICk7CiAgIH5LTUNvbXBvc2VXaW4oKTsKIAogICAvKiogQWRkIGRlc2Ny aXB0aW9ucyB0byB0aGUgZW5jb2RpbmdzIGluIHRoZSBsaXN0ICovCkBAIC0zNzEsNyArMzc5LDYg QEAgcHJvdGVjdGVkOgogCiAgIEtNRWRpdCogbUVkaXRvcjsKICAgUUdyaWRMYXlvdXQqIG1Hcmlk OwotICAvL0tETkREcm9wWm9uZSAqbURyb3Bab25lOwogICBLTU1lc3NhZ2UgKm1Nc2c7CiAgIFFM aXN0VmlldyAqbUF0bUxpc3RCb3g7CiAgIFFMaXN0PFFMaXN0Vmlld0l0ZW0+IG1BdG1JdGVtTGlz dDsKQEAgLTQxMCw2ICs0MTcsOSBAQCBwcm90ZWN0ZWQ6CiAgIFFTdHJpbmcgbUNoYXJzZXQ7CiAg IFFTdHJpbmcgbURlZkNoYXJzZXQ7CiAgIFFGb250IG1TYXZlZEVkaXRvckZvbnQ7CisKK3ByaXZh dGUgc2xvdHM6CisgIHZvaWQgc2xvdENvbXBsZXRpb25Nb2RlQ2hhbmdlZCggS0dsb2JhbFNldHRp bmdzOjpDb21wbGV0aW9uICk7CiAKIHByaXZhdGU6CiAgIFFDb2xvciBmb3JlQ29sb3IsYmFja0Nv bG9yOwo= --------------Boundary-00=_Y4GTIP7EUG9D5S1232HA-- _______________________________________________ Kmail Developers mailing list Kmail@master.kde.org http://master.kde.org/mailman/listinfo/kmail