From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout07.t-online.de (mailout07.t-online.de [194.25.134.83]) by sourceware.org (Postfix) with ESMTPS id E79EC3858C20 for ; Mon, 22 Aug 2022 15:29:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E79EC3858C20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=t-online.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=t-online.de Received: from fwd83.dcpf.telekom.de (fwd83.aul.t-online.de [10.223.144.109]) by mailout07.t-online.de (Postfix) with SMTP id E0CFAD451; Mon, 22 Aug 2022 17:29:35 +0200 (CEST) Received: from [192.168.2.101] ([79.230.170.147]) by fwd83.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1oQ9Mt-1RbT4i0; Mon, 22 Aug 2022 17:29:35 +0200 Subject: Re: [PATCH setup] Keyboard accelerators for install/reinstall/uninstall To: Jon Turney , "cygwin-apps@cygwin.com" References: <28d2858f-a7b3-ba64-261c-c38e6bfa02db@t-online.de> From: Christian Franke Message-ID: <3b69d761-018e-dbc3-db57-369f6bf057bb@t-online.de> Date: Mon, 22 Aug 2022 17:29:35 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 SeaMonkey/2.53.12 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------B68A40C4FFFFDA60D71D0BF8" X-TOI-EXPURGATEID: 150726::1661182175-0144B102-A6F0BD17/0/0 CLEAN NORMAL X-TOI-MSGID: cd9d8d5f-e8c8-45de-9f7c-8988408d5138 X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00, BODY_8BITS, FREEMAIL_FROM, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: cygwin-apps@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin package maintainer discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Aug 2022 15:29:41 -0000 This is a multi-part message in MIME format. --------------B68A40C4FFFFDA60D71D0BF8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Jon Turney wrote: > On 14/08/2022 12:57, Christian Franke wrote: >> This eases state changes of a selected sequence of packages. > > Nice!  The keyboard control of the package chooser was a bit of an > after-thought, which it really shouldn't be. Thanks - revised patch is attached. > >> Ctrl+U is in particular useful to cleanup installations in >> conjunction with "unneeded" view: >> https://sourceware.org/pipermail/cygwin-apps/2022-August/042185.html >> >> Open issue: Add some visual clue (tooltip?) to make this >> functionality more obvious. > > Yeah.  These shortcuts should also be accelerators for the package > action selection popup menu, which would make them more discoverable? Handling these in the popup menu is possibly tricky. According to documentation of TrackPopupMenu(), hWndListView "receives all messages from the menu" which is apparently not the case. >> ... >> +          bool down = false; >> +          if >> ((*contents)[iRow]->map_key_to_action(pNmLvKeyDown->wVKey, ctrl, alt, >> &col_num, >> + &action_id, &down)) >>               { >>                 int update; >>                 if (action_id >= 0) >> @@ -591,6 +597,13 @@ ListView::OnNotify (NMHDR *pNmHdr, LRESULT >> *pResult) >>                 if (update > 0) >>                   ListView_RedrawItems(hWndListView, iRow, iRow + >> update -1); >>               } >> +          if (down && iRow + 1 < ListView_GetItemCount(hWndListView)) { > > Again as a stylistic thing, I'd suggest perhaps changing > map_key_to_action() to return a set of flags which could include > "ACTION", "POPUP" and "DOWN", rather than adding another flag > parameter to it... Done, see "enum Action". > >> + ListView_SetItemState(hWndListView, -1, 0, LVIS_SELECTED | >> LVIS_FOCUSED); >> +            ListView_SetItemState(hWndListView, iRow + 1, >> LVIS_SELECTED | LVIS_FOCUSED, >> +                                  LVIS_SELECTED | LVIS_FOCUSED); >> +            ListView_SetSelectionMark(hWndListView, iRow + 1); >> +            ListView_EnsureVisible(hWndListView, iRow + 1, false); > > A comment here saying "and move selection to next row". Done. > ... >>   { >>     switch (vkey) >>       { >> @@ -154,6 +155,20 @@ PickPackageLine::map_key_to_action(WORD vkey, >> int *col_num, int *action_id) cons >>         *col_num = new_col; >>         *action_id = -1; >>         return true; >> +    case 'I': >> +    case 'R': >> +    case 'U': >> +      if (!(ctrl && !alt)) > > As a stylistic thing, I'd perhaps rather combine ctrl and alt flags as > a modifier bitmap. Done, see 'struct ModifierKeys'. > > What is the reasoning for selecting the "ctrl but not alt" modifier > state here? Why should Ctrl+Alt+I have the same effect as Ctrl+I ? The new patch also checks for shift. > ... >> @@ -670,6 +670,10 @@ packagemeta::set_action (_actions action, >> packageversion const &default_version, >>     else if (action == Uninstall_action) >>       { >>         desired = packageversion (); >> +      pick (false); >> +      srcpick (false); >> +      if (!installed) >> +    action = NoChange_action; > > Hmm... why is adding this needed? Otherwise a strange state change would occur at least in the GUI when an install request is undone: "Skip" == Ctrl+I ==> "3.2-1" == Ctrl+U ==> "Uninstall" The new patch includes another addition which prevents this on installs from local directory when the current default version is not yet downloaded: "Skip" == Ctrl+I ==> "" (empty) BTW, I didn't understand this line:   void   packagemeta::set_action (...)   {     ...     else if (action == Install_action)       {         desired = default_version;         if (desired)           {             if (desired != installed)               if (desired.accessible ())                 {                   ...                   pick (true);                   srcpick (false);                 }               else                 {                   pick (false);                   srcpick (true); <== why true? ==                 }               ... --------------B68A40C4FFFFDA60D71D0BF8 Content-Type: text/plain; charset=UTF-8; name="0001-Keyboard-accelerators-for-install-reinstall-uninstal.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Keyboard-accelerators-for-install-reinstall-uninstal.pa"; filename*1="tch" RnJvbSA4OTVmNTUxMDczMWJlYzBiMTYxYmE5YjY1MWI1YTc3ZGQ4Y2I5NmE0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RpYW4gRnJhbmtlIDxjaHJpc3RpYW4uZnJh bmtlQHQtb25saW5lLmRlPgpEYXRlOiBNb24sIDIyIEF1ZyAyMDIyIDE2OjM5OjIxICswMjAw ClN1YmplY3Q6IFtQQVRDSF0gS2V5Ym9hcmQgYWNjZWxlcmF0b3JzIGZvciBpbnN0YWxsL3Jl aW5zdGFsbC91bmluc3RhbGwKCkN0cmwrSS9SL1Ugc2VsZWN0IGluc3RhbGwvcmVpbnN0YWxs L3VuaW5zdGFsbCBhbmQgdGhlbiBtb3ZlIHNlbGVjdGlvbgp0byBuZXh0IHJvdy4KLS0tCiBM aXN0Vmlldy5jYyAgICAgICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tCiBMaXN0Vmlldy5oICAgICAgICAgIHwgMTAgKysrKysrLQogUGlj a0NhdGVnb3J5TGluZS5jYyB8IDIxICsrKysrKystLS0tLS0tLQogUGlja0NhdGVnb3J5TGlu ZS5oICB8ICAyICstCiBQaWNrUGFja2FnZUxpbmUuY2MgIHwgMjcgKysrKysrKysrKysrKyst LS0tLQogUGlja1BhY2thZ2VMaW5lLmggICB8ICAyICstCiBwYWNrYWdlX21ldGEuY2MgICAg IHwgMTEgKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKSwgNDAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTGlzdFZpZXcuY2MgYi9MaXN0Vmlldy5jYwpp bmRleCA2MmEzN2FiLi43Y2M3ZjBmIDEwMDY0NAotLS0gYS9MaXN0Vmlldy5jYworKysgYi9M aXN0Vmlldy5jYwpAQCAtMjQsNiArMjQsMTggQEAKIC8vIExpc3RWaWV3IENvbW1vbiBDb250 cm9sCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAoraW50IE1vZGlmaWVyS2V5czo6Z2V0 KCkKK3sKKyAgaW50IGtleXMgPSAwOworICBpZiAoR2V0S2V5U3RhdGUoVktfU0hJRlQpICYg MHg4MDAwKQorICAgIGtleXMgfD0gU2hpZnQ7CisgIGlmIChHZXRLZXlTdGF0ZShWS19DT05U Uk9MKSAmIDB4ODAwMCkKKyAgICBrZXlzIHw9IENvbnRyb2w7CisgIGlmIChHZXRLZXlTdGF0 ZShWS19NRU5VKSAmIDB4ODAwMCkKKyAgICBrZXlzIHw9IEFsdDsKKyAgcmV0dXJuIGtleXM7 Cit9CisKIHZvaWQKIExpc3RWaWV3Ojppbml0KEhXTkQgcGFyZW50LCBpbnQgaWQsIEhlYWRl ckxpc3QgaGVhZGVycykKIHsKQEAgLTU2MywzMyArNTc1LDQ3IEBAIExpc3RWaWV3OjpPbk5v dGlmeSAoTk1IRFIgKnBObUhkciwgTFJFU1VMVCAqcFJlc3VsdCkKICAgICB7CiAgICAgICBO TUxWS0VZRE9XTiAqcE5tTHZLZXlEb3duID0gKE5NTFZLRVlET1dOICopcE5tSGRyOwogICAg ICAgaW50IGlSb3cgPSBMaXN0Vmlld19HZXRTZWxlY3Rpb25NYXJrKGhXbmRMaXN0Vmlldyk7 CisgICAgICBpbnQgbW9ka2V5cyA9IE1vZGlmaWVyS2V5czo6Z2V0KCk7CiAjaWYgREVCVUcK LSAgICAgIExvZyAoTE9HX1BMQUlOKSA8PCAiTFZOX0tFWURPV04gdmtleSAiIDw8IHBObUx2 S2V5RG93bi0+d1ZLZXkgPDwgIiBvbiByb3cgIiA8PCBpUm93IDw8IGVuZExvZzsKKyAgICAg IExvZyAoTE9HX1BMQUlOKSA8PCAiTFZOX0tFWURPV04gdmtleSAiIDw8IHBObUx2S2V5RG93 bi0+d1ZLZXkgPDwgIiBvbiByb3cgIiA8PCBpUm93CisgICAgICAgICAgICAgICAgICAgICAg PDwgIiBTaGlmdDoiIDw8ICEhKG1vZGtleXMgJiBNb2RpZmllcktleXM6OlNoaWZ0KQorICAg ICAgICAgICAgICAgICAgICAgIDw8ICIgQ3RybDoiIDw8ICEhKG1vZGtleXMgJiBNb2RpZmll cktleXM6OkNvbnRyb2wpCisgICAgICAgICAgICAgICAgICAgICAgPDwgIiBBbHQ6IiA8PCAh IShtb2RrZXlzICYgTW9kaWZpZXJLZXlzOjpBbHQpIDw8IGVuZExvZzsKICNlbmRpZgogCiAg ICAgICBpZiAoY29udGVudHMgJiYgaVJvdyA+PSAwKQogICAgICAgICB7Ci0gICAgICAgICAg aW50IGNvbF9udW07Ci0gICAgICAgICAgaW50IGFjdGlvbl9pZDsKLSAgICAgICAgICBpZiAo KCpjb250ZW50cylbaVJvd10tPm1hcF9rZXlfdG9fYWN0aW9uKHBObUx2S2V5RG93bi0+d1ZL ZXksICZjb2xfbnVtLCAmYWN0aW9uX2lkKSkKKyAgICAgICAgICBpbnQgY29sX251bSA9IDA7 CisgICAgICAgICAgaW50IGFjdGlvbl9pZCA9IDA7CisgICAgICAgICAgaW50IHRvZG8gPSAo KmNvbnRlbnRzKVtpUm93XS0+bWFwX2tleV90b19hY3Rpb24ocE5tTHZLZXlEb3duLT53Vktl eSwgbW9ka2V5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb2xfbnVtLCBhY3Rpb25faWQpOworICAgICAgICAgIGludCB1 cGRhdGUgPSAwOworICAgICAgICAgIGlmICh0b2RvICYgTGlzdFZpZXdMaW5lOjpBY3Rpb246 OkRpcmVjdCkKKyAgICAgICAgICAgIHVwZGF0ZSA9ICgqY29udGVudHMpW2lSb3ddLT5kb19h Y3Rpb24oY29sX251bSwgYWN0aW9uX2lkKTsKKyAgICAgICAgICBlbHNlIGlmICh0b2RvICYg TGlzdFZpZXdMaW5lOjpBY3Rpb246OlBvcFVwKQogICAgICAgICAgICAgewotICAgICAgICAg ICAgICBpbnQgdXBkYXRlOwotICAgICAgICAgICAgICBpZiAoYWN0aW9uX2lkID49IDApCi0g ICAgICAgICAgICAgICAgdXBkYXRlID0gKCpjb250ZW50cylbaVJvd10tPmRvX2FjdGlvbihj b2xfbnVtLCBhY3Rpb25faWQpOwotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgICAgUE9JTlQgcDsKLSAgICAgICAgICAgICAgICAgIFJF Q1QgcjsKLSAgICAgICAgICAgICAgICAgIExpc3RWaWV3X0dldFN1Ykl0ZW1SZWN0KGhXbmRM aXN0VmlldywgaVJvdywgY29sX251bSwgTFZJUl9CT1VORFMsICZyKTsKLSAgICAgICAgICAg ICAgICAgIHAueCA9IHIubGVmdDsKLSAgICAgICAgICAgICAgICAgIHAueSA9IHIudG9wOwot ICAgICAgICAgICAgICAgICAgQ2xpZW50VG9TY3JlZW4oaFduZExpc3RWaWV3LCAmcCk7Cisg ICAgICAgICAgICAgIFBPSU5UIHA7CisgICAgICAgICAgICAgIFJFQ1QgcjsKKyAgICAgICAg ICAgICAgTGlzdFZpZXdfR2V0U3ViSXRlbVJlY3QoaFduZExpc3RWaWV3LCBpUm93LCBjb2xf bnVtLCBMVklSX0JPVU5EUywgJnIpOworICAgICAgICAgICAgICBwLnggPSByLmxlZnQ7Cisg ICAgICAgICAgICAgIHAueSA9IHIudG9wOworICAgICAgICAgICAgICBDbGllbnRUb1NjcmVl bihoV25kTGlzdFZpZXcsICZwKTsKKworICAgICAgICAgICAgICB1cGRhdGUgPSBwb3B1cF9t ZW51KGlSb3csIGNvbF9udW0sIHApOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg ICAgICB1cGRhdGUgPSBwb3B1cF9tZW51KGlSb3csIGNvbF9udW0sIHApOwotICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICBpZiAodXBkYXRlID4gMCkKKyAgICAgICAgICAgIExpc3RW aWV3X1JlZHJhd0l0ZW1zKGhXbmRMaXN0VmlldywgaVJvdywgaVJvdyArIHVwZGF0ZSAtMSk7 CiAKLSAgICAgICAgICAgICAgaWYgKHVwZGF0ZSA+IDApCi0gICAgICAgICAgICAgICAgTGlz dFZpZXdfUmVkcmF3SXRlbXMoaFduZExpc3RWaWV3LCBpUm93LCBpUm93ICsgdXBkYXRlIC0x KTsKKyAgICAgICAgICBpZiAoKHRvZG8gJiBMaXN0Vmlld0xpbmU6OkFjdGlvbjo6TmV4dFJv dykKKyAgICAgICAgICAgICAgJiYgaVJvdyArIDEgPCBMaXN0Vmlld19HZXRJdGVtQ291bnQo aFduZExpc3RWaWV3KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLy8gbW92ZSBz ZWxlY3Rpb24gdG8gbmV4dCByb3cKKyAgICAgICAgICAgICAgTGlzdFZpZXdfU2V0SXRlbVN0 YXRlKGhXbmRMaXN0VmlldywgLTEsIDAsIExWSVNfU0VMRUNURUQgfCBMVklTX0ZPQ1VTRUQp OworICAgICAgICAgICAgICBMaXN0Vmlld19TZXRJdGVtU3RhdGUoaFduZExpc3RWaWV3LCBp Um93ICsgMSwgTFZJU19TRUxFQ1RFRCB8IExWSVNfRk9DVVNFRCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExWSVNfU0VMRUNURUQgfCBMVklTX0ZPQ1VTRUQpOwor ICAgICAgICAgICAgICBMaXN0Vmlld19TZXRTZWxlY3Rpb25NYXJrKGhXbmRMaXN0Vmlldywg aVJvdyArIDEpOworICAgICAgICAgICAgICBMaXN0Vmlld19FbnN1cmVWaXNpYmxlKGhXbmRM aXN0VmlldywgaVJvdyArIDEsIGZhbHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog ICAgIH0KZGlmZiAtLWdpdCBhL0xpc3RWaWV3LmggYi9MaXN0Vmlldy5oCmluZGV4IDk1ZGQ5 ZWUuLjZhMWJlMGIgMTAwNjQ0Ci0tLSBhL0xpc3RWaWV3LmgKKysrIGIvTGlzdFZpZXcuaApA QCAtMjUsMTAgKzI1LDE3IEBACiAvLyBMaXN0VmlldyBDb21tb24gQ29udHJvbAogLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAKK3N0cnVjdCBNb2RpZmllcktleXMKK3sKKyAgZW51bSB7 IFNoaWZ0ID0gMHgwMSwgQ29udHJvbCA9IDB4MDIsIEFsdCA9IDB4MDQgfTsKKyAgc3RhdGlj IGludCBnZXQoKTsgLy8gZ2V0IGJpdG1hc2sgb2YgY3VycmVudGx5IHByZXNzZWQga2V5cwor fTsKKwogY2xhc3MgTGlzdFZpZXdMaW5lCiB7CiAgcHVibGljOgogICBlbnVtIGNsYXNzIFN0 YXRlIHsgY29sbGFwc2VkLCBleHBhbmRlZCwgbm90aGluZz0tMSB9OworICBlbnVtIEFjdGlv biB7IE5vbmUgPSAweDAwLCBEaXJlY3QgPSAweDAxLCBQb3BVcCA9IDB4MDIsIE5leHRSb3cg PSAweDA0IH07CiAKICAgdmlydHVhbCB+TGlzdFZpZXdMaW5lKCkge307CiAgIHZpcnR1YWwg Y29uc3Qgc3RkOjp3c3RyaW5nIGdldF90ZXh0KGludCBjb2wpIGNvbnN0ID0gMDsKQEAgLTM4 LDcgKzQ1LDggQEAgY2xhc3MgTGlzdFZpZXdMaW5lCiAgIHZpcnR1YWwgQWN0aW9uTGlzdCAq Z2V0X2FjdGlvbnMoaW50IGNvbCkgY29uc3QgPSAwOwogICB2aXJ0dWFsIGludCBkb19hY3Rp b24oaW50IGNvbCwgaW50IGlkKSA9IDA7CiAgIHZpcnR1YWwgaW50IGRvX2RlZmF1bHRfYWN0 aW9uKGludCBjb2wpID0gMDsKLSAgdmlydHVhbCBib29sIG1hcF9rZXlfdG9fYWN0aW9uKFdP UkQgdmtleSwgaW50ICpjb2xfbnVtLCBpbnQgKmFjdGlvbl9pZCkgY29uc3QgPSAwOworICB2 aXJ0dWFsIGludCBtYXBfa2V5X3RvX2FjdGlvbihXT1JEIHZrZXksIGludCBtb2RrZXlzLCBp bnQgJiBjb2xfbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgJiBh Y3Rpb25faWQpIGNvbnN0ID0gMDsKIH07CiAKIHR5cGVkZWYgc3RkOjp2ZWN0b3I8TGlzdFZp ZXdMaW5lICo+IExpc3RWaWV3Q29udGVudHM7CmRpZmYgLS1naXQgYS9QaWNrQ2F0ZWdvcnlM aW5lLmNjIGIvUGlja0NhdGVnb3J5TGluZS5jYwppbmRleCBkMmFjODk5Li5iMTNkYmU0IDEw MDY0NAotLS0gYS9QaWNrQ2F0ZWdvcnlMaW5lLmNjCisrKyBiL1BpY2tDYXRlZ29yeUxpbmUu Y2MKQEAgLTk2LDIwICs5NiwxOSBAQCBQaWNrQ2F0ZWdvcnlMaW5lOjpnZXRfdG9vbHRpcChp bnQgY29sX251bSkgY29uc3QKICAgcmV0dXJuICIiOwogfQogCi1ib29sCi1QaWNrQ2F0ZWdv cnlMaW5lOjptYXBfa2V5X3RvX2FjdGlvbihXT1JEIHZrZXksIGludCAqY29sX251bSwgaW50 ICphY3Rpb25faWQpIGNvbnN0CitpbnQKK1BpY2tDYXRlZ29yeUxpbmU6Om1hcF9rZXlfdG9f YWN0aW9uKFdPUkQgdmtleSwgaW50IG1vZGtleXMsIGludCAmIGNvbF9udW0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgJiBhY3Rpb25faWQpIGNvbnN0CiB7 CiAgIHN3aXRjaCAodmtleSkKICAgICB7Ci0gICAgY2FzZSBWS19TUEFDRToKLSAgICAgICpj b2xfbnVtID0gcGtnbmFtZV9jb2w7Ci0gICAgICAqYWN0aW9uX2lkID0gMDsKLSAgICAgIHJl dHVybiB0cnVlOwotICAgIGNhc2UgVktfQVBQUzoKLSAgICAgICpjb2xfbnVtID0gbmV3X2Nv bDsKLSAgICAgICphY3Rpb25faWQgPSAtMTsKLSAgICAgIHJldHVybiB0cnVlOworICAgIGNh c2UgVktfU1BBQ0U6IC8vIGV4cGFuZCA8PiBjb2xsYXBzZSBjYXRlZ29yeQorICAgICAgY29s X251bSA9IHBrZ25hbWVfY29sOworICAgICAgcmV0dXJuIEFjdGlvbjo6RGlyZWN0OworICAg IGNhc2UgVktfQVBQUzogLy8gaW5zdGFsbC9yZWluc3RhbGwvdW5pbnN0YWxsIGNvbnRleHQg bWVudSBmb3IgY2F0ZWdvcnkKKyAgICAgIGNvbF9udW0gPSBuZXdfY29sOworICAgICAgcmV0 dXJuIEFjdGlvbjo6UG9wVXA7CiAgICAgfQogCi0gIHJldHVybiBmYWxzZTsKKyAgcmV0dXJu IEFjdGlvbjo6Tm9uZTsKIH0KZGlmZiAtLWdpdCBhL1BpY2tDYXRlZ29yeUxpbmUuaCBiL1Bp Y2tDYXRlZ29yeUxpbmUuaAppbmRleCA2YTczMjFkLi43NjE2YjE1IDEwMDY0NAotLS0gYS9Q aWNrQ2F0ZWdvcnlMaW5lLmgKKysrIGIvUGlja0NhdGVnb3J5TGluZS5oCkBAIC00MSw3ICs0 MSw3IEBAIHB1YmxpYzoKICAgQWN0aW9uTGlzdCAqZ2V0X2FjdGlvbnMoaW50IGNvbCkgY29u c3Q7CiAgIGludCBkb19hY3Rpb24oaW50IGNvbCwgaW50IGFjdGlvbl9pZCk7CiAgIGludCBk b19kZWZhdWx0X2FjdGlvbihpbnQgY29sKTsKLSAgYm9vbCBtYXBfa2V5X3RvX2FjdGlvbihX T1JEIHZrZXksIGludCAqY29sX251bSwgaW50ICphY3Rpb25faWQpIGNvbnN0OworICBpbnQg bWFwX2tleV90b19hY3Rpb24oV09SRCB2a2V5LCBpbnQgbW9ka2V5cywgaW50ICYgY29sX251 bSwgaW50ICYgYWN0aW9uX2lkKSBjb25zdDsKIAogcHJpdmF0ZToKICAgQ2F0ZWdvcnlUcmVl ICogY2F0X3RyZWU7CmRpZmYgLS1naXQgYS9QaWNrUGFja2FnZUxpbmUuY2MgYi9QaWNrUGFj a2FnZUxpbmUuY2MKaW5kZXggYWUxZTUyMC4uYzFlMmExNSAxMDA2NDQKLS0tIGEvUGlja1Bh Y2thZ2VMaW5lLmNjCisrKyBiL1BpY2tQYWNrYWdlTGluZS5jYwpAQCAtMTQ0LDE3ICsxNDQs MzAgQEAgUGlja1BhY2thZ2VMaW5lOjpnZXRfaW5kZW50KCkgY29uc3QKICAgcmV0dXJuIGlu ZGVudDsKIH0KIAotYm9vbAotUGlja1BhY2thZ2VMaW5lOjptYXBfa2V5X3RvX2FjdGlvbihX T1JEIHZrZXksIGludCAqY29sX251bSwgaW50ICphY3Rpb25faWQpIGNvbnN0CitpbnQKK1Bp Y2tQYWNrYWdlTGluZTo6bWFwX2tleV90b19hY3Rpb24oV09SRCB2a2V5LCBpbnQgbW9ka2V5 cywgaW50ICYgY29sX251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICYgYWN0aW9uX2lkKSBjb25zdAogewogICBzd2l0Y2ggKHZrZXkpCiAgICAgewotICAg IGNhc2UgVktfU1BBQ0U6CisgICAgY2FzZSBWS19TUEFDRTogLy8gaW5zdGFsbC9yZWluc3Rh bGwvdW5pbnN0YWxsIGNvbnRleHQgbWVudSBmb3IgcGFja2FnZQogICAgIGNhc2UgVktfQVBQ UzoKLSAgICAgICpjb2xfbnVtID0gbmV3X2NvbDsKLSAgICAgICphY3Rpb25faWQgPSAtMTsK LSAgICAgIHJldHVybiB0cnVlOworICAgICAgY29sX251bSA9IG5ld19jb2w7CisgICAgICBy ZXR1cm4gQWN0aW9uOjpQb3BVcDsKKyAgICBjYXNlICdJJzogLy8gQ3RybCtJOiBzZWxlY3Qg aW5zdGFsbCBkZWZhdWx0IHZlcnNpb24gYW5kIG1vdmUgdG8gbmV4dCByb3cKKyAgICBjYXNl ICdSJzogLy8gQ3RybCtSOiBzZWxlY3QgcmVpbnN0YWxsIGFuZCBtb3ZlIHRvIG5leHQgcm93 CisgICAgY2FzZSAnVSc6IC8vIEN0cmwrVTogc2VsZWN0IHVuaW5zdGFsbCBhbmQgbW92ZSB0 byBuZXh0IHJvdworICAgICAgaWYgKG1vZGtleXMgIT0gTW9kaWZpZXJLZXlzOjpDb250cm9s KQorICAgICAgICBicmVhazsKKyAgICAgIGNvbF9udW0gPSBuZXdfY29sOworICAgICAgc3dp dGNoICh2a2V5KQorICAgICAgICB7CisgICAgICAgIGNhc2UgJ0knOiBhY3Rpb25faWQgPSBw YWNrYWdlbWV0YTo6SW5zdGFsbF9hY3Rpb247IGJyZWFrOworICAgICAgICBjYXNlICdSJzog YWN0aW9uX2lkID0gcGFja2FnZW1ldGE6OlJlaW5zdGFsbF9hY3Rpb247IGJyZWFrOworICAg ICAgICBkZWZhdWx0OiAgYWN0aW9uX2lkID0gcGFja2FnZW1ldGE6OlVuaW5zdGFsbF9hY3Rp b247IGJyZWFrOworICAgICAgICB9CisgICAgICByZXR1cm4gQWN0aW9uOjpEaXJlY3QgfCBB Y3Rpb246Ok5leHRSb3c7CiAgICAgfQogCi0gIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIEFj dGlvbjo6Tm9uZTsKIH0KZGlmZiAtLWdpdCBhL1BpY2tQYWNrYWdlTGluZS5oIGIvUGlja1Bh Y2thZ2VMaW5lLmgKaW5kZXggMmM1OWU5MC4uMGJmNGFlNiAxMDA2NDQKLS0tIGEvUGlja1Bh Y2thZ2VMaW5lLmgKKysrIGIvUGlja1BhY2thZ2VMaW5lLmgKQEAgLTM3LDcgKzM3LDcgQEAg cHVibGljOgogICBBY3Rpb25MaXN0ICpnZXRfYWN0aW9ucyhpbnQgY29sX251bSkgY29uc3Q7 CiAgIGludCBkb19hY3Rpb24oaW50IGNvbCwgaW50IGFjdGlvbl9pZCk7CiAgIGludCBkb19k ZWZhdWx0X2FjdGlvbihpbnQgY29sKTsKLSAgYm9vbCBtYXBfa2V5X3RvX2FjdGlvbihXT1JE IHZrZXksIGludCAqY29sX251bSwgaW50ICphY3Rpb25faWQpIGNvbnN0OworICBpbnQgbWFw X2tleV90b19hY3Rpb24oV09SRCB2a2V5LCBpbnQgbW9ka2V5cywgaW50ICYgY29sX251bSwg aW50ICYgYWN0aW9uX2lkKSBjb25zdDsKIHByaXZhdGU6CiAgIHBhY2thZ2VtZXRhICYgcGtn OwogICBQaWNrVmlldyAmIHRoZVZpZXc7CmRpZmYgLS1naXQgYS9wYWNrYWdlX21ldGEuY2Mg Yi9wYWNrYWdlX21ldGEuY2MKaW5kZXggOGE2OTUyNS4uYTVkYzQzNiAxMDA2NDQKLS0tIGEv cGFja2FnZV9tZXRhLmNjCisrKyBiL3BhY2thZ2VfbWV0YS5jYwpAQCAtNjUxLDYgKzY1MSwx MyBAQCBwYWNrYWdlbWV0YTo6c2V0X2FjdGlvbiAoX2FjdGlvbnMgYWN0aW9uLCBwYWNrYWdl dmVyc2lvbiBjb25zdCAmZGVmYXVsdF92ZXJzaW9uLAogCSAgICAgIHNyY3BpY2sgKGZhbHNl KTsKIAkgICAgfQogCX0KKyAgICAgIGVsc2UKKwl7CisJICBhY3Rpb24gPSBOb0NoYW5nZV9h Y3Rpb247CisJICBkZXNpcmVkID0gaW5zdGFsbGVkOworCSAgcGljayAoZmFsc2UpOworCSAg c3JjcGljayAoZmFsc2UpOworCX0KICAgICB9CiAgIGVsc2UgaWYgKGFjdGlvbiA9PSBSZWlu c3RhbGxfYWN0aW9uKQogICAgIHsKQEAgLTY3MCw2ICs2NzcsMTAgQEAgcGFja2FnZW1ldGE6 OnNldF9hY3Rpb24gKF9hY3Rpb25zIGFjdGlvbiwgcGFja2FnZXZlcnNpb24gY29uc3QgJmRl ZmF1bHRfdmVyc2lvbiwKICAgZWxzZSBpZiAoYWN0aW9uID09IFVuaW5zdGFsbF9hY3Rpb24p CiAgICAgewogICAgICAgZGVzaXJlZCA9IHBhY2thZ2V2ZXJzaW9uICgpOworICAgICAgcGlj ayAoZmFsc2UpOworICAgICAgc3JjcGljayAoZmFsc2UpOworICAgICAgaWYgKCFpbnN0YWxs ZWQpCisJYWN0aW9uID0gTm9DaGFuZ2VfYWN0aW9uOwogICAgIH0KIAogICBfYWN0aW9uID0g YWN0aW9uOwotLSAKMi4zNy4xCgo= --------------B68A40C4FFFFDA60D71D0BF8--