From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 5815 invoked from network); 10 Jun 2021 13:48:43 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 10 Jun 2021 13:48:43 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1623332923; b=lPGtyGXonb4deKhAzD7YDEd0+yKlduSew66gG0ZdACKSw0i3/aK7UMuiCO/BQCKxcs6RY9z5YK bXzAZUKGCQ9G1pryoBLdSy7zvQkT2Pb+QKZglo6cNNrDe/ESXmInJz9X+PAwu6lXf1K8+s1CkQ CCucK8i5/U3Nz7Y2u/lJSzsslZAygp1exuSxnL+YjQJ2uM9eoRbTg30hRj4/FujOG42npGBDqH 0ZggYtsjFkuEZ4nQi6s40vwJBTMVKQLwzQudfs1gye3yay0vXN58fqMv/x++LD6E3GMmU2V+jc VMllKCMQFyYju/XPAqAi6oOQ3XCnWaRgH/Te+tdXBNjetA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lf1-f43.google.com) smtp.remote-ip=209.85.167.43; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1623332923; bh=Zq4vpMajYr+1DxXINVdD33jK1Uk38TvMHq2HFViOyng=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=IahZV2GDGw3Xo8eNNwGBwra+G1LT0XM+BmSAJbSmT0i/Pu3pwuQkWyst5irO04hrxqJXwjRa44 0qWGjXFBibyQb32ZT7rtiZ0rw2jmSDlTvvKRBnMw3MmHcfFXCagfEJxHsh5jjzI1tDROhizYrI plxOvwqN81nt/EsvbW76GVzdN2gchCaB20WTsd2UxwIOs3+jU3gJlEsoo/jlfNI3xVH3iJbmLp RTV36AI+w64UuKMUhd1pixHMcFYzghgpPhlVy0NTHbC2Y3xmrpvdAICkMyM2uurGpWxqgjYYWf QnQp6Ujls2UsO7v4hW3DoOijfFuY0OZsBsvF1Sy0sKgx1A==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=EpY3nyIdS5uNFot/CD1Q5PPCJb4s2uKhYxPK50ybSkQ=; b=bYJbhGrAC6+qMnUuaM0sjHYvI/ QldFu50vmCk0I8IzIMzj+G8f9b8kXK2/qBvqA5CBiVfxtWcAmN/HamIw++DsIPLb+V0jbjc20DOxF L1U4JSZy2IPqZXd8y/EE75aVX3iBK4kpuoCWexCZFejlX3n/1pHCWeOLg44dIrsBnrLyRf6MbEA34 1UfIzSMFZ161IYyfJEqcrLGdGKnuGugeECA/YEGRIoA4PXzDEuNcKHcgdNSfOwJMZxbEMpdbn3OQR qM5NID2fdhvJ0oe7GJ3VZM0mgZxcpTjEA6dfmyQVrgQjxGXdZU/Jp72LNs6BvbPvWiv09ilsAulpk Ju4Sgzlg==; Received: from authenticated user by zero.zsh.org with local id 1lrL33-000DeA-MA; Thu, 10 Jun 2021 13:48:41 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lf1-f43.google.com) smtp.remote-ip=209.85.167.43; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-lf1-f43.google.com ([209.85.167.43]:39579) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1lrL2U-000DLY-L8; Thu, 10 Jun 2021 13:48:07 +0000 Received: by mail-lf1-f43.google.com with SMTP id p17so3360136lfc.6 for ; Thu, 10 Jun 2021 06:48:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=EpY3nyIdS5uNFot/CD1Q5PPCJb4s2uKhYxPK50ybSkQ=; b=WJ8s9C7j0P2awBGf/yeLyuYLYdTLlj5wX8D55rzEEPnrsIyaDBeogleEDzpsflkS8h bnIpqqXHIZg0g7vK+6igfGWMOa//BxXtc1tgq1PQ5UklN/eK9LRAe/Qlsy4zf32+LT6U +M2o7LR57ZzVMdXe4wNm9zqn+7AgwgELlSYrUglJ3n/9xANqffrCC+sS8pA4XhKfaUtC 2ZkqyENkxGk5KCY1cF+JACTs4GyD6kxWj0Lmsl8c+kQ4mQYpG9lh+WP3tZnyr8v7YEBg DJPLnQmRe3M2CLHOAeZ1bPrTStltZXlVVffK685ZDmLK3OdRoRxbBcSIML3xsTnYTIuq pdsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=EpY3nyIdS5uNFot/CD1Q5PPCJb4s2uKhYxPK50ybSkQ=; b=fNmgWtBNZwIIDIirxObj0MP3ZVGT0T3azhfsHaNDWvHvQ5HFhtp7z1ocD4/i+YpkmQ FiyqtJ5B47W3pG+XetxGbrhdknuyC+Ko2JxhCi3zyfDVeT0BtUGtYMR2cSWSuP/fqV13 K3xjo6qkTGbwH2I7c++nZI9GSyfzmvi1wpAk6Qq2P9MXJtUjHpAsChINo9taaGvRgIvn d31coZAEOPmtNrlfLj4Cv0eaStGGGNcrfNWlVD/s82CXB7CxBT16Nz7z4/RcjWwD3TPs dH0PAbPH8YhLUK0cDfX4d82p63MU6qWRIjq5WahKw67ZwwAYh2FWHJUPQ+Xl+3JjLidc RT4g== X-Gm-Message-State: AOAM531t64EbtxR82LXwUAmOeAhf+oxiNJ+pRyjlXunWSNmV7vjEWTUK MxI0ozjHUmoimWvK3nDJC8kT2yfOBs9xpF0Yufg= X-Google-Smtp-Source: ABdhPJx1nHRjFrBu+PcFmp66NywTllAb2FgcHuHtHBgF25lDE0tGx0PpOhB3TO8Ttd2oHB118fDSyPMmjZt55bbHo2g= X-Received: by 2002:ac2:551d:: with SMTP id j29mr1984613lfk.319.1623332885797; Thu, 10 Jun 2021 06:48:05 -0700 (PDT) MIME-Version: 1.0 References: <7E71FA83-356E-448B-9726-02DF3FF5BD14@gmail.com> <873D08A9-F321-474A-8440-CCE7DCCBA529@gmail.com> <20210414120551.GA3882@tarpaulin.shahaf.local2> <6CEA4F3E-9A64-44E1-9121-FA9D5E053AB5@gmail.com> <20210414140909.GG3882@tarpaulin.shahaf.local2> <29E16F69-B09E-44BF-9009-1CF53053D4FC@gmail.com> <20210416171321.GC4535@tarpaulin.shahaf.local2> <93FFDA3D-3C4A-414E-9220-1032ECE5B04C@gmail.com> <20210416193037.GD15670@tarpaulin.shahaf.local2> <9dc589f1-65b6-48b7-a7cb-81f9e2e16795@www.fastmail.com> <48174137-a8a7-4171-bcda-0899ebc19433@www.fastmail.com> <8082812e-b595-403b-9c8c-8956b6af08cd@www.fastmail.com> In-Reply-To: From: Marlon Richert Date: Thu, 10 Jun 2021 16:47:29 +0300 Message-ID: Subject: Re: [PATCH] Add customizable `vcs` prompt theme (was Re: [RFC][PATCH] `newuser` prompt theme) To: Roman Perepelitsa Cc: Zsh hackers list Content-Type: multipart/mixed; boundary="00000000000002f96a05c469a486" X-Seq: 49053 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: --00000000000002f96a05c469a486 Content-Type: text/plain; charset="UTF-8" On Thu, Jun 10, 2021 at 12:30 PM Roman Perepelitsa wrote: > > There is //'%%'/% in a few places. What's the logic behind it? Some prompt escape codes (such as %b for bold) need %% when used in vcs_info -- except when they are used in nvcsformats. > I think invoking prompt_vcs_setup twice in the same shell will produce > an error. I haven't tried it though. I just tried it and I didn't get any errors. Why do you think it would produce an error? > prompt_vcs_chpwd always prints at least one line to the TTY regardless > of configuration options. Is this intended? Yes, that was my intention, but I can see how it could be useful to be able to customize that. I'll change it. > Why is prompt_vcs_precmd checking whether prompt_vcs_fd is a readable > fd? How can it not be? I don't know how or why, but if I don't check for that, then I get this error repeatedly: prompt_vcs_precmd:6: failed to close file descriptor 11: bad file descriptor > There is a comment in prompt_vcs_precmd that says it's going to kill a > process while in fact it closes the file descriptor. That may > *eventually* kill the process when it decides to print something > (assuming it hasn't blocked SIGPIPE or is checking for write errors). True. I'll change it to actually kill the process, too. > What is the purpose of the "Info is not for current dir" check? Is > this to account for the possibility of `cd` from a zle widget? If so, > perhaps handle this by hooking chpwd? The purpose is to account for the possibility that we receive the info _after_ we've already changed to a new dir. However, if I correct the piece of code you mentioned previously, then that shouldn't be necessary. > prompt_vcs_fd-widget has a check for [[ -n $1 ]]. When is it false? When prompt_vcs_fd-widget is being called incorrectly. :) Perhaps it should not return 1 in that case, though. Thanks again. New version of the patch attached. --00000000000002f96a05c469a486 Content-Type: text/plain; charset="US-ASCII"; name="0001-Add-customizable-vcs-prompt-theme.txt" Content-Disposition: attachment; filename="0001-Add-customizable-vcs-prompt-theme.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kpqyf7cm0 RnJvbSAxMWY4NGI0M2U5MDg1NGFlNGMwM2FhMDcyZTExMGVjNDk0ZGEyZDMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJsb24gUmljaGVydCA8bWFybG9uLnJpY2hlcnRAZ21haWwu Y29tPgpEYXRlOiBUaHUsIDEwIEp1biAyMDIxIDE2OjQ1OjMwICswMzAwClN1YmplY3Q6IFtQQVRD SF0gQWRkIGN1c3RvbWl6YWJsZSBgdmNzYCBwcm9tcHQgdGhlbWUKCi0tLQogRnVuY3Rpb25zL1By b21wdHMvcHJvbXB0X3Zjc19zZXR1cCB8IDE5OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogMSBmaWxlIGNoYW5nZWQsIDE5OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg RnVuY3Rpb25zL1Byb21wdHMvcHJvbXB0X3Zjc19zZXR1cAoKZGlmZiAtLWdpdCBhL0Z1bmN0aW9u cy9Qcm9tcHRzL3Byb21wdF92Y3Nfc2V0dXAgYi9GdW5jdGlvbnMvUHJvbXB0cy9wcm9tcHRfdmNz X3NldHVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYzJmMmU2Y2RlCi0t LSAvZGV2L251bGwKKysrIGIvRnVuY3Rpb25zL1Byb21wdHMvcHJvbXB0X3Zjc19zZXR1cApAQCAt MCwwICsxLDE5OSBAQAorIyMKKyMgUHJvbXB0IHRoYXQgY2FuIGJlIGN1c3RvbWl6ZWQgdGhyb3Vn aCB2Y3NfaW5mbworIworem1vZGxvYWQgLUYgenNoL3N5c3RlbSBwOnN5c3BhcmFtcworYXV0b2xv YWQgLVV6IGFkZC16bGUtaG9vay13aWRnZXQgYWRkLXpzaC1ob29rIHZjc19pbmZvCisKKyMgUHJv bXB0IHNlZ21lbnRzCisjIE5vcm1hbCAlYiBhbmQgJSguLi4pIG5lZWQgZXh0cmEgJSBpbiB2Y3Nf aW5mbyAtLSBleGNlcHQgaW4gbnZjc2Zvcm1hdHMuCityZWFkb25seSAtZ0hBIF9wcm9tcHRfdmNz X3BzMV9kZWZhdWx0PSgKKyAgICBsZWZ0ICAgICAgJCclJSg/LCVGe2dyZWVufSwlRntyZWR9KSUj JSViJWYlJXMgJworICAgIHJpZ2h0ICAgICAnJUIlRntibHVlfSVuJWIlZiVrQCVGe21hZ2VudGF9 JW0lZicKKyAgICBjaHB3ZCAgICAgJCdcbiVCJUZ7Ymx1ZX0lfiUlYiVmL1xuJworICAgIHN0YWdl ZCAgICAnJUIlRntncmVlbn0rJWIlZicKKyAgICB1bnN0YWdlZCAgJyVCJUZ7cmVkfSolYiVmJwor ICAgIGFjdGlvbiAgICAnJUIlRntyZWR9JWElJWIlZicKKyAgICBicmFuY2ggICAgJyVCJUZ7Y3lh bn0lYiUlYiVmJworICAgIHJlcG8gICAgICAnfCVCJUZ7Ymx1ZX0lciUlYiVmJworKQorCitwcm9t cHRfdmNzX2hlbHAoKSB7CisgIHByaW50IC1yIC0tIFwKKyJDdXN0b21pemFibGUgcHJvbXB0IHRo ZW1lIHRoYXQgaW5jbHVkZXMgVkNTIGluZm8gZm9yIHRoZSBjdXJyZW50IGRpciAoZm9yCitleGFt cGxlLCBnaXQgc3RhdHVzKSBhbmQgYXN5bmNocm9ub3VzbHkgY2hlY2tzIGZvciByZXBvIGNoYW5n ZXMuCisKK1RvIGN1c3RvbWl6ZSBpdCwgY29weS1wYXN0ZSBhbnkgb2YgdGhlIGNvZGUgYmVsb3cg dG8geW91ciAuenNocmMgZmlsZSBhbmQgZWRpdAoraXQgdGhlcmU6CisKKyAgIyBGb3IgZWFjaCBv ZiB0aGUgZm9sbG93aW5nIHRocmVlIGVudHJpZXM6CisgICMgICAxc3Qgc3RyaW5nIGlzIHRoZSBs ZWZ0IHByb21wdC4KKyAgIyAgIDJuZCBzdHJpbmcgaXMgdGhlIHJpZ2h0IHByb21wdC4KKyAgIyAg IDNyZCBzdHJpbmcgaXMgcHJpbnRlZCB3aGVuZXZlciB5b3UgY2hhbmdlIGRpcnMgKGJlZm9yZSB0 aGUgbGVmdCBwcm9tcHQpLgorCisgICMgTm9ybWFsIHByb21wdDoKKyAgenN0eWxlICc6dmNzX2lu Zm86Kjpwcm9tcHRfdmNzOionIG52Y3Nmb3JtYXRzIFxcCisgICAgICAiJHsocSspX3Byb21wdF92 Y3NfcHMxX2RlZmF1bHRbbGVmdF0vLyclJScvJX0iIFxcCisgICAgICAiJHsocSspX3Byb21wdF92 Y3NfcHMxX2RlZmF1bHRbcmlnaHRdLy8nJSUnLyV9IiBcXAorICAgICAgIiR7KHErKV9wcm9tcHRf dmNzX3BzMV9kZWZhdWx0W2NocHdkXS8vJyUlJy8lfSIKKworICAjIFByb21wdCBpbnNpZGUgVkNT IHJlcG86CisgIHpzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBmb3JtYXRzIFxcCisg ICAgICAkeyhxKylfcHJvbXB0X3Zjc19wczFfZGVmYXVsdFtsZWZ0XX0gXFwKKyAgICAgICR7KHEr KTotJXUlYyRfcHJvbXB0X3Zjc19wczFfZGVmYXVsdFticmFuY2hdJF9wcm9tcHRfdmNzX3BzMV9k ZWZhdWx0W3JlcG9dfSBcXAorICAgICAgJHsocSspX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hw d2RdfQorCisgICMgUHJvbXB0IGR1cmluZyBvbmdvaW5nIFZDUyBhY3Rpb246CisgIHpzdHlsZSAn OnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBhY3Rpb25mb3JtYXRzIFxcCisgICAgICAkeyhxKylf cHJvbXB0X3Zjc19wczFfZGVmYXVsdFtsZWZ0XX0gXFwKKyAgICAgICR7KHErKTotJXUlYyRfcHJv bXB0X3Zjc19wczFfZGVmYXVsdFthY3Rpb25dJF9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W3JlcG9d fSBcXAorICAgICAgJHsocSspX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hwd2RdfQorCisgICMg VGhlc2UgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgJWMgYW5kICV1LCByZXNwZWN0aXZlbHk6Cisg IHpzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBzdGFnZWRzdHIgJHsocSspX3Byb21w dF92Y3NfcHMxX2RlZmF1bHRbc3RhZ2VkXX0KKyAgenN0eWxlICc6dmNzX2luZm86Kjpwcm9tcHRf dmNzOionIHVuc3RhZ2Vkc3RyICR7KHErKV9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W3Vuc3RhZ2Vk XX0KKworRm9yIG1vcmUgaW5mbyBvbiB0aGUgc2V0dGluZ3MgYWJvdmUsIHNlZQoraHR0cDovL3pz aC5zb3VyY2Vmb3JnZS5uZXQvRG9jL1JlbGVhc2UvUHJvbXB0LUV4cGFuc2lvbi5odG1sIGFuZCB0 aGUgZW5kIG9mCitodHRwOi8venNoLnNvdXJjZWZvcmdlLm5ldC9Eb2MvUmVsZWFzZS9Vc2VyLUNv bnRyaWJ1dGlvbnMuaHRtbCN2Y3NfMDA1ZmluZm8tQ29uZmlndXJhdGlvbiIKK30KKworIyBTZXRz IGEgc3R5bGUgaWYgaXQgaGFzbid0IGJlZW4gc2V0IHlldC4KK19wcm9tcHRfdmNzX3pzdHlsZSgp IHsKKyAgbG9jYWwgLWEgdmFsCisgIHpzdHlsZSAtZyB2YWwgIiQxIiAiJDIiCisgICgoICQjdmFs ICkpIHx8CisgICAgICB6c3R5bGUgIiRAIgorfQorCitfcHJvbXB0X3Zjc19pbmZvKCkgeworICBf cHJvbXB0X3Zjc196c3R5bGUgJzp2Y3NfaW5mbzoqOnByb21wdF92Y3M6KicgbWF4LWV4cG9ydHMg MyAjIERlZmF1bHQgaXMgMi4KKworICBfcHJvbXB0X3Zjc196c3R5bGUgJzp2Y3NfaW5mbzoqOnBy b21wdF92Y3M6KicgbnZjc2Zvcm1hdHMgXAorICAgICAgIiR7X3Byb21wdF92Y3NfcHMxX2RlZmF1 bHRbbGVmdF0vLyclJScvJX0iIFwKKyAgICAgICIke19wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W3Jp Z2h0XS8vJyUlJy8lfSIgXAorICAgICAgIiR7X3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hwd2Rd Ly8nJSUnLyV9IgorCisgIF9wcm9tcHRfdmNzX3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3Zj czoqJyBmb3JtYXRzIFwKKyAgICAgICIkX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbbGVmdF0iIFwK KyAgICAgICIldSVjJF9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W2JyYW5jaF0kX3Byb21wdF92Y3Nf cHMxX2RlZmF1bHRbcmVwb10iIFwKKyAgICAgICIkX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hw d2RdIgorCisgIF9wcm9tcHRfdmNzX3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBh Y3Rpb25mb3JtYXRzIFwKKyAgICAgICIkX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbbGVmdF0iIFwK KyAgICAgICIldSVjJF9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W2FjdGlvbl0kX3Byb21wdF92Y3Nf cHMxX2RlZmF1bHRbcmVwb10iIFwKKyAgICAgICIkX3Byb21wdF92Y3NfcHMxX2RlZmF1bHRbY2hw d2RdIgorCisgIF9wcm9tcHRfdmNzX3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBz dGFnZWRzdHIgXAorICAgICAgIiRfcHJvbXB0X3Zjc19wczFfZGVmYXVsdFtzdGFnZWRdIgorCisg IF9wcm9tcHRfdmNzX3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyB1bnN0YWdlZHN0 ciBcCisgICAgICAiJF9wcm9tcHRfdmNzX3BzMV9kZWZhdWx0W3Vuc3RhZ2VkXSIKKworICB2Y3Nf aW5mbyBwcm9tcHRfdmNzICMgQ2FsbCB3aXRoIG5hbWVzcGFjZS4KKworICBwcmludCAtck5DMSAt LSBcCisgICAgICAiJHsocSspdmNzX2luZm9fbXNnXzBffSIgIiR7KHErKXZjc19pbmZvX21zZ18x X30iICIkeyhxKyl2Y3NfaW5mb19tc2dfMl99IgorfQorCitwcm9tcHRfdmNzX2NocHdkKCkgewor ICBlbXVsYXRlIC1MIHpzaAorCisgICMgRG9uJ3QgY2hlY2sgZm9yIGNoYW5nZXMgYXQgdGhpcyBw b2ludCwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCisgIHR5cGVzZXQgLWdhIF9wcm9tcHRfdmNz X2luZm9fbXNnXz0oICIkeygwQFEpJCgKKyAgICBfcHJvbXB0X3Zjc196c3R5bGUgJzp2Y3NfaW5m bzoqOnByb21wdF92Y3M6KicgY2hlY2stZm9yLWNoYW5nZXMgbm8KKyAgICBfcHJvbXB0X3Zjc196 c3R5bGUgJzp2Y3NfaW5mbzoqOnByb21wdF92Y3M6KicgY2hlY2stZm9yLXN0YWdlZC1jaGFuZ2Vz IG5vCisgICAgX3Byb21wdF92Y3NfaW5mbworICApfSIgKQorICBQUzE9IiRfcHJvbXB0X3Zjc19p bmZvX21zZ19bMV0iCisgIFJQUzE9IiRfcHJvbXB0X3Zjc19pbmZvX21zZ19bMl0iCisgIHByaW50 IC1uUHIgLS0gIiRfcHJvbXB0X3Zjc19pbmZvX21zZ19bM10iCit9CisKKyMgV2UgbmVlZCB0byB1 c2UgbGluZS1pbml0IGluc3RlYWQgb2YgcHJlY21kLCBiZWNhdXNlIGFueSB3aWRnZXQgY2FuCisj IHBvdGVudGlhbGx5IGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIHJlcG8gb3IgY2hhbmdlIGRpciB3 aXRob3V0IGFjY2VwdGluZyBvcgorIyBhYm9ydGluZyB0aGUgY29tbWFuZCBsaW5lLgorcHJvbXB0 X3Zjc19saW5lLWluaXQoKSB7CisgIGVtdWxhdGUgLUwgenNoCisKKyAgIyBUZXJtaW5hdGUgYW55 IHBlbmRpbmcgdmNzX2luZm8gcmVxdWVzdCBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgb25lLgorICAj IFNlY29uZCB0ZXN0IGNoZWNrcyBpZiBmZCBpcyByZWFkYWJsZSwgdG8gYXZvaWQgdGhpcyBlcnJv ciBiZWluZyBwcmludGVkOgorICAjICAgZmFpbGVkIHRvIGNsb3NlIGZpbGUgZGVzY3JpcHRvciBY WDogYmFkIGZpbGUgZGVzY3JpcHRvcgorICBpZiAoKCBwcm9tcHRfdmNzX2ZkICkpICYmIHsgOiA8 JiRwcm9tcHRfdmNzX2ZkIH0gMj4vZGV2L251bGw7IHRoZW4KKyAgICB6bGUgLUYgIiRwcm9tcHRf dmNzX2ZkIiAyPiAvZGV2L251bGwKKyAgICBleGVjIHtwcm9tcHRfdmNzX2ZkfTwmLQorICBmaQor ICBpZiAoKCBwcm9tcHRfdmNzX3BpZCApKTsgdGhlbgorICAgIFtbIC1vIG1vbml0b3IgXV0gJiYK KyAgICAgICAgKCggcHJvbXB0X3Zjc19waWQgKj0gLTEgKSkKKyAgICBraWxsIC1LSUxMICRwcm9t cHRfdmNzX3BpZCAyPiAvZGV2L251bGwKKyAgZmkKKworICAjIEFzeW5jaHJvbm91c2x5IGNoZWNr IGZvciBjaGFuZ2VzLgorICB0eXBlc2V0IC1nSCBwcm9tcHRfdmNzX2ZkPQorICBleGVjIHtwcm9t cHRfdmNzX2ZkfTwgPCgKKwkgIHByaW50IC1yIC0tICRzeXNwYXJhbXNbcGlkXQorICAgIF9wcm9t cHRfdmNzX3pzdHlsZSAnOnZjc19pbmZvOio6cHJvbXB0X3ZjczoqJyBjaGVjay1mb3ItY2hhbmdl cyB5ZXMKKyAgICBfcHJvbXB0X3Zjc196c3R5bGUgJzp2Y3NfaW5mbzoqOnByb21wdF92Y3M6Kicg Y2hlY2stZm9yLXN0YWdlZC1jaGFuZ2VzIHllcworICAgIF9wcm9tcHRfdmNzX2luZm8KKyAgKQor ICB0eXBlc2V0IC1nSCBwcm9tcHRfdmNzX3BpZD0KKyAgcmVhZCAtdSAkcHJvbXB0X3Zjc19mZCAt LSBwcm9tcHRfdmNzX3BpZAorCisgICMgQWRkIGNhbGxiYWNrLiBOZWVkcyB0byBiZSBhIHdpZGdl dCwgc28gd2UgY2FuIHJlZnJlc2ggdGhlIHByb21wdC4KKyAgemxlIC1GdyAiJHByb21wdF92Y3Nf ZmQiIHByb21wdF92Y3NfZmQtd2lkZ2V0Cit9CisKKyMgQ2FsbGJhY2sgd2lkZ2V0IGZvciBvdXIg YXN5bmMgZmV0Y2ggb2YgVkNTIGNoYW5nZXMKK3psZSAtTiBwcm9tcHRfdmNzX2ZkLXdpZGdldAor cHJvbXB0X3Zjc19mZC13aWRnZXQoKSB7CisgIGVtdWxhdGUgLUwgenNoCisKKyAgKCggJDEgKSkg fHwKKyAgICAgIHJldHVybiA2NCAgIyBFWF9VU0FHRTsgc2VlIG1hbiAzIHN5c2V4aXRzCisKKyAg bG9jYWwgLWkgZmQ9JDEKKyAgbG9jYWwgLWEgcmVwbHkKKyAgeworICAgIHpsZSAtRiAiJGZkIiAg IyBEZXRhY2ggb3Vyc2VsdmVzLCBzbyB3ZSBkb24ndCBnZXQgY2FsbGVkIG1vcmUgdGhhbiBvbmNl LgorCisgICAgW1sgLXogJDIgXV0gfHwKKyAgICAgICAgcmV0dXJuIDc0ICAjIEVYX0lPRVJSCisK KyAgICBJRlM9JCdcMCcgcmVhZCAtQXJ1ICIkZmQiCisgICAgdHlwZXNldCAtZ0hhIF9wcm9tcHRf dmNzX2luZm9fbXNnXz0oICIkeyhAUSlyZXBseX0iICkKKyAgICBQUzE9IiRfcHJvbXB0X3Zjc19p bmZvX21zZ19bMV0iCisgICAgUlBTMT0iJF9wcm9tcHRfdmNzX2luZm9fbXNnX1syXSIKKyAgICB6 bGUgLnJlc2V0LXByb21wdAorICB9IGFsd2F5cyB7CisgICAgZXhlYyB7ZmR9PCYtCisgIH0KK30K KworcHJvbXB0X3Zjc19zZXR1cCgpIHsKKyAgcHJvbXB0X29wdHM9KCBjciBwZXJjZW50IHNwICkg IyBUZWxsIHByb21wdGluaXQgd2hpY2ggb3B0aW9ucyB0byBzZXQuCisKKyAgIyBJbmRlbnQgbGVm dCBjb250aW51YXRpb24gcHJvbXB0IGZvciBlYWNoIG9wZW4gc2hlbGwgY29uc3RydWN0LgorICBs b2NhbCAtYSBpbmRlbnQ9KCAnJSgnezEuLjM2fSdfLCAgLCknICkKKyAgUFMyPSIkeyhqOjopaW5k ZW50fSIKKyAgUlBTMj0nJUZ7eWVsbG93fSMgJV4lZicKKyAgCisgIFBTND0kJyMtPiUoPywlRntn cmVlbn0sJUIlRntyZWR9JVMpJT8lYiVmJXNcdCVlKyVGe2dyZWVufSUxTiVmOiVJJworICBQUzQr PScgICUoMV8sJUZ7eWVsbG93fSVLe2JsYWNrfSVfJWYlayAsKScKKyAgU1BST01QVD0nQ29ycmVj dCAlQiVGe3JlZH0lUyVSJWIlZiVzIHRvICVCJUZ7Z3JlZW59JXIlYiVmPycKKyAgU1BST01QVCs9 JCdcbiV7XGVbMm0lfSVVeSV1ZXMgJVVuJXVvICVVZSV1ZGl0ICVVYSV1Ym9ydCViICcKKyAgUFJP TVBUX0VPTF9NQVJLPSclRntjeWFufSVTJSMlZiVzJworICB6bGVfaGlnaGxpZ2h0PSgKKyAgICAg IGlzZWFyY2g6Zmc9YmxhY2ssYmc9eWVsbG93CisgICAgICBzcGVjaWFsOmZnPWN5YW4sYm9sZAor ICAgICAgcmVnaW9uOmZnPXdoaXRlLGJnPWJsdWUsYm9sZAorICAgICAgc3VmZml4OmZnPXdoaXRl LGJnPWJsdWUsYm9sZAorICAgICAgcGFzdGU6Ym9sZAorICApCisKKyAgYWRkLXpzaC1ob29rIGNo cHdkIHByb21wdF92Y3NfY2hwd2QKKyAgYWRkLXpsZS1ob29rLXdpZGdldCBsaW5lLWluaXQgcHJv bXB0X3Zjc19saW5lLWluaXQKKworICBwcm9tcHRfdmNzX2NocHdkCit9CisKK3Byb21wdF92Y3Nf c2V0dXAgIiRAIgotLSAKMi4zMC4xIChBcHBsZSBHaXQtMTMwKQoK --00000000000002f96a05c469a486--