From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#71605: 30.0.50; [PATCH] Support variable-width text in 'visual-wrap-prefix-mode' Date: Sun, 16 Jun 2024 19:56:44 -0700 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------1ABD0qXctHlxJqSTmVRggRBy" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5897"; mail-complaints-to="usenet@ciao.gmane.io" To: 71605@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Jun 17 04:57:23 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sJ2Yd-0001KH-Gk for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 17 Jun 2024 04:57:23 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sJ2YJ-0007a6-Ez; Sun, 16 Jun 2024 22:57:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sJ2YH-0007Zi-Bp for bug-gnu-emacs@gnu.org; Sun, 16 Jun 2024 22:57:01 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sJ2YH-0001Zz-3m for bug-gnu-emacs@gnu.org; Sun, 16 Jun 2024 22:57:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sJ2YI-0002PI-Ih for bug-gnu-emacs@gnu.org; Sun, 16 Jun 2024 22:57:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 17 Jun 2024 02:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 71605 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.17185930149233 (code B ref -1); Mon, 17 Jun 2024 02:57:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 17 Jun 2024 02:56:54 +0000 Original-Received: from localhost ([127.0.0.1]:58586 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sJ2Y9-0002Op-CH for submit@debbugs.gnu.org; Sun, 16 Jun 2024 22:56:54 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:36536) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sJ2Y6-0002Oe-R3 for submit@debbugs.gnu.org; Sun, 16 Jun 2024 22:56:51 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sJ2Y4-0007XU-Ry for bug-gnu-emacs@gnu.org; Sun, 16 Jun 2024 22:56:48 -0400 Original-Received: from mail-oo1-xc35.google.com ([2607:f8b0:4864:20::c35]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sJ2Y2-0001Xa-NT for bug-gnu-emacs@gnu.org; Sun, 16 Jun 2024 22:56:48 -0400 Original-Received: by mail-oo1-xc35.google.com with SMTP id 006d021491bc7-5ba090b0336so1885976eaf.1 for ; Sun, 16 Jun 2024 19:56:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718593005; x=1719197805; darn=gnu.org; h=subject:from:to:content-language:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=BFdBAsSXoXCSy8qVsJxvuW/KGYtPTGyycN3uAKx3TXw=; b=TFN2lstKWx53It0rRxCS9faWzLXr1oOZ2VN6+anKrSMOXmF0/E/PxSb/rKIvk6eiwX 3L3oMUTV9V1+o7AdxDtU7579snuFInSmpgws5wI4GIvNc8e7xWB9jni9FE30b+Z/sJeM GWghJVvSl/vGWExGDrj9ktB/iJn0G9Dmt+XRUKeB9LKK0EAbVRbQDEz6FJWj1rRiPvnh ZUV2v6ehTmH4X7GqPIqxXiJ9J2Vp2zxfrq+Z68tsV8PiH/QIxq84MzminSLGe3YNMqjl nnZm6mkvicvW6XXHhx9aOo21gKtZQMvzC1LuJGyf7SZm92pn8uFU577ZZIUi5UlmV9ea 5dGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718593005; x=1719197805; h=subject:from:to:content-language:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=BFdBAsSXoXCSy8qVsJxvuW/KGYtPTGyycN3uAKx3TXw=; b=dycxHvb/7pGktWLc0fcXMop8ZkmOegmFtSLRaqMS+ScytDEDSwXnFRuLEFbn4ZUQBY j+dp7Ns1vvv5YseA2E2Fx3czezokJUOYJWGENw+xZHIxMb0RG7q5jnD/kXungQbWAh2X w7yLNz0SIaFL8LBo0cfx/ZQBcysPWGk/s0kmqlTd7Q6w69cVsVWVnnXAO3isra8zayAh TTlLAz1F75zWNqGP/8OW0GGFb2g6QdAAylaNTzlCWLUZ2pgZ+PQV40CwjxDelU6M/gFL 92SFRNTQp7SacYkeKyS90U/DITvKOOWm3NSRwnwgrRAvK9W1quXfsOXpbxVcxdY5W/mW UINA== X-Gm-Message-State: AOJu0YyoNyuuJWjkYafrAJ2qNruVfCBMzCiPvCJhjAqOXiyPP3Ot6Smz tfbus4afBv7YXUQ5rvR85yFtjqbovUQB0qlbYGrlMymAVeA34Yz1G3hXIA== X-Google-Smtp-Source: AGHT+IEBnl2lPR+uNcla6XLoFd5OwY4uS7kTxqGRXpfVhRKHLIroEHv90ZIQevQbYAzq7t2ezKXfoA== X-Received: by 2002:a05:6358:5c:b0:1a1:c982:47c0 with SMTP id e5c5f4694b2df-1a1c982547fmr467175855d.32.1718593004868; Sun, 16 Jun 2024 19:56:44 -0700 (PDT) Original-Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com. [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-1f855f39a42sm70452415ad.268.2024.06.16.19.56.43 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 16 Jun 2024 19:56:44 -0700 (PDT) X-Mozilla-News-Host: news://news.gmane.io:119 Content-Language: en-US Received-SPF: pass client-ip=2607:f8b0:4864:20::c35; envelope-from=jporterbugs@gmail.com; helo=mail-oo1-xc35.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:287353 Archived-At: This is a multi-part message in MIME format. --------------1ABD0qXctHlxJqSTmVRggRBy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit (Note: I plan to merge this only after we cut the Emacs 30 release branch, since it seems a bit too substantial a change to sneak in right near the end. However, I think the patch is mostly done aside from one remaining issue, so any feedback is very welcome.) 'visual-wrap-prefix-mode' has one small issue: since the wrap prefix is just a string, the wrapped text may not line up for variable-width fonts. This is mainly in cases like so: * here is some text that got visually wrapped If the "* " is variable-width, the second line will probably be indented wrong by a few pixels. The attached patch adds a display spec in this case so that the text lines up perfectly. There's currently one problem though: I'm not sure how to regenerate the wrap prefix automatically if the face changes. It's not hard to handle for 'text-scale-adjust', but I don't know how to handle 'global-text-scale-adjust' (or other things that could change the face[1]). Does anyone have any ideas for this part? [1] There's 'after-setting-font-hook', but that doesn't cover everything either. --------------1ABD0qXctHlxJqSTmVRggRBy Content-Type: text/plain; charset=UTF-8; name="0001-Add-support-for-variable-width-text-in-visual-wrap-p.patch" Content-Disposition: attachment; filename*0="0001-Add-support-for-variable-width-text-in-visual-wrap-p.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2OTZhMjcxNjAxNDU3ZjYzZGQ3MTI3MjYxMjQyZTIxNDMyNzEzNDAyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFN1biwgMTYgSnVuIDIwMjQgMTU6MjE6NTIgLTA3MDAKU3ViamVjdDogW1BB VENIXSBBZGQgc3VwcG9ydCBmb3IgdmFyaWFibGUtd2lkdGggdGV4dCBpbgogJ3Zpc3VhbC13 cmFwLXByZWZpeC1tb2RlJwoKVGhpcyB1c2VzIGEgZGlzcGxheSBzcGVjIHRvIHNldCB0aGUg d2lkdGggY29ycmVjdGx5IHdoZW4gaW5kZW50aW5nIHdpdGgKc3BhY2VzLgoKKiBsaXNwL2Vt YWNzLWxpc3Avc3Vici14LmVsIChzdHJpbmctcGl4ZWwtd2lkdGgpOiBOZXcgYXJndW1lbnQg QlVGRkVSLgoKKiBsaXNwL3Zpc3VhbC13cmFwLmVsICh2aXN1YWwtd3JhcC0tYWRqdXN0LWRp c3BsYXktd2lkdGgpCih2aXN1YWwtd3JhcC0tY29udGVudC1wcmVmaXgpOiBOZXcgZnVuY3Rp b25zLgoodmlzdWFsLXdyYXAtLWV4dHJhLWluZGVudCk6IFJlbmFtZSBmcm9tICd2aXN1YWwt d3JhcC0tcHJlZml4JyBhbmQgY2FsbAondmlzdWFsLXdyYXAtLWFkanVzdC1kaXNwbGF5LXdp ZHRoJy4KKHZpc3VhbC13cmFwLWZpbGwtY29udGV4dC1wcmVmaXgpOiBTdXBwb3J0IGRpc3Bs YXkgd2lkdGguCih2aXN1YWwtd3JhcC1wcmVmaXgtZnVuY3Rpb24pOiBBbGxvdyAnbGJwJyB0 byBiZSBhdCAncG9pbnQtbWluJy4KKHZpc3VhbC13cmFwLXByZWZpeC1tb2RlKTogUmVmb250 aWZ5IHdoZW4gY2hhbmdpbmcgdGV4dCBzY2FsZS4KCiogZG9jL2xpc3ByZWYvZGlzcGxheS50 ZXhpIChTaXplIG9mIERpc3BsYXllZCBUZXh0KTogRG9jdW1lbnQgQlVGRkVSCmFyZ3VtZW50 IGZvciAnc3RyaW5nLXBpeGVsLXdpZHRoJy4KCiogZXRjL05FV1M6IEFubm91bmNlIHRoaXMg Y2hhbmdlLgotLS0KIGRvYy9saXNwcmVmL2Rpc3BsYXkudGV4aSAgfCAgNiArKy0tCiBldGMv TkVXUyAgICAgICAgICAgICAgICAgIHwgIDggKysrKy0KIGxpc3AvZW1hY3MtbGlzcC9zdWJy LXguZWwgfCAxMSArKysrLS0KIGxpc3AvdmlzdWFsLXdyYXAuZWwgICAgICAgfCA3MyArKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwg NzAgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2xp c3ByZWYvZGlzcGxheS50ZXhpIGIvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCmluZGV4IGQ1 Yzk2ZDEzZTAyLi41Mjk1N2YyYWQwNyAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvZGlzcGxh eS50ZXhpCisrKyBiL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aQpAQCAtMjM1MSw5ICsyMzUx LDExIEBAIFNpemUgb2YgRGlzcGxheWVkIFRleHQKIG1lYW5pbmcgYXMgd2l0aCBAY29kZXt3 aW5kb3ctdGV4dC1waXhlbC1zaXplfS4KIEBlbmQgZGVmdW4KIAotQGRlZnVuIHN0cmluZy1w aXhlbC13aWR0aCBzdHJpbmcKK0BkZWZ1biBzdHJpbmctcGl4ZWwtd2lkdGggc3RyaW5nICZv cHRpb25hbCBidWZmZXIKIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IHVz ZXMgQGNvZGV7d2luZG93LXRleHQtcGl4ZWwtc2l6ZX0KLXRvIGNvbXB1dGUgdGhlIHdpZHRo IG9mIEB2YXJ7c3RyaW5nfSAoaW4gcGl4ZWxzKS4KK3RvIGNvbXB1dGUgdGhlIHdpZHRoIG9m IEB2YXJ7c3RyaW5nfSAoaW4gcGl4ZWxzKS4gIElmIEB2YXJ7YnVmZmVyfSBpcworbm9uLUBj b2Rle25pbH0sIHVzZSB0aGUgZmFjZSByZW1hcHBpbmdzIGZyb20gdGhhdCBidWZmZXIgd2hl bgorZGV0ZXJtaW5pbmcgdGhlIHdpZHRoIChAcHhyZWZ7RmFjZSBSZW1hcHBpbmd9KS4KIEBl bmQgZGVmdW4KIAogQGRlZnVuIGxpbmUtcGl4ZWwtaGVpZ2h0CmRpZmYgLS1naXQgYS9ldGMv TkVXUyBiL2V0Yy9ORVdTCmluZGV4IGIyZmRiYzRhODhmLi4yN2E0ZmQxMWE4NyAxMDA2NDQK LS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTU0OSw3ICs1NDksOCBAQCB0ZXh0 IGluIGFueSB3YXkuICBUaGUgZ2xvYmFsIG1pbm9yIG1vZGUKIGJ1ZmZlcnMuCiAKIChUaGlz IG1pbm9yIG1vZGUgaXMgdGhlICdhZGFwdGl2ZS13cmFwJyBFTFBBIHBhY2thZ2UgcmVuYW1l ZCBhbmQKLWxpZ2h0bHkgZWRpdGVkIGZvciBpbmNsdXNpb24gaW4gRW1hY3MuKQorZW5oYW5j ZWQgZm9yIGluY2x1c2lvbiBpbiBFbWFjcy4gIEl0IGFkZGl0aW9uYWxseSBzdXBwb3J0cyBw cmVmaXhlcyBmb3IKK3ZhcmlhYmxlLXdpZHRoIHRleHQuKQogCiArKysKICoqIE5ldyB1c2Vy IG9wdGlvbiAnZ3VkLWhpZ2hsaWdodC1jdXJyZW50LWxpbmUnLgpAQCAtMjc4OSw2ICsyNzkw LDExIEBAIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZSAndXNlci11aWQnIGFuZCAnZ3JvdXAt Z2lkJywgcmVzcGVjdGl2ZWx5LCBidXQKIGFyZSBhd2FyZSBvZiBmaWxlIG5hbWUgaGFuZGxl cnMsIHNvIHRoZXkgd2lsbCByZXR1cm4gdGhlIHJlbW90ZSBVSUQgb3IKIEdJRCBmb3IgcmVt b3RlIGZpbGVzIChvciAtMSBpZiB0aGUgY29ubmVjdGlvbiBoYXMgbm8gYXNzb2NpYXRlZCB1 c2VyKS4KIAorKysrCisqKiAnc3RyaW5nLXBpeGVsLXdpZHRoJyBub3cgYWNjZXB0cyBhIEJV RkZFUiBhcmd1bWVudC4KK0lmIEJVRkZFUiBpcyBub24tbmlsLCAnc3RyaW5nLXBpeGVsLXdp ZHRoJyB3aWxsIGFwcGx5IEJVRkZFUidzIGZhY2UKK3JlbWFwcGluZ3Mgd2hlbiBjb21wdXRp bmcgdGhlIHN0cmluZydzIHdpZHRoLgorCiArKysKICoqICdmc2V0JywgJ2RlZmFsaWFzJyBh bmQgJ2RlZnZhcmFsaWFzJyBub3cgc2lnbmFsIGFuIGVycm9yIGZvciBjeWNsaWMgYWxpYXNl cy4KIFByZXZpb3VzbHksICdmc2V0JywgJ2RlZmFsaWFzJyBhbmQgJ2RlZnZhcmFsaWFzJyBj b3VsZCBiZSBtYWRlIHRvCmRpZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVs IGIvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbAppbmRleCA2OTliZTc2N2VlNy4uMmNiZTFi ZWI5ZjEgMTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKKysrIGIvbGlz cC9lbWFjcy1saXNwL3N1YnIteC5lbApAQCAtMzMzLDggKzMzMywxMCBAQCBuYW1lZC1sZXQK ICAgICAgIC4gLGFhcmdzKSkpCiAKIDs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gc3RyaW5nLXBp eGVsLXdpZHRoIChzdHJpbmcpCi0gICJSZXR1cm4gdGhlIHdpZHRoIG9mIFNUUklORyBpbiBw aXhlbHMuIgorKGRlZnVuIHN0cmluZy1waXhlbC13aWR0aCAoc3RyaW5nICZvcHRpb25hbCBi dWZmZXIpCisgICJSZXR1cm4gdGhlIHdpZHRoIG9mIFNUUklORyBpbiBwaXhlbHMuCitJZiBC VUZGRVIgaXMgbm9uLW5pbCwgdXNlIHRoZSBmYWNlIHJlbWFwcGluZ3MgZnJvbSB0aGF0IGJ1 ZmZlciB3aGVuCitkZXRlcm1pbmluZyB0aGUgd2lkdGguIgogICAoZGVjbGFyZSAoaW1wb3J0 YW50LXJldHVybi12YWx1ZSB0KSkKICAgKGlmICh6ZXJvcCAobGVuZ3RoIHN0cmluZykpCiAg ICAgICAwCkBAIC0zNDgsNiArMzUwLDExIEBAIHN0cmluZy1waXhlbC13aWR0aAogICAgICAg OzsgRGlzYWJsZSBsaW5lLXByZWZpeCBhbmQgd3JhcC1wcmVmaXgsIGZvciB0aGUgc2FtZSBy ZWFzb24uCiAgICAgICAoc2V0cSBsaW5lLXByZWZpeCBuaWwKIAkgICAgd3JhcC1wcmVmaXgg bmlsKQorICAgICAgKGlmIGJ1ZmZlcgorICAgICAgICAgIChzZXRxLWxvY2FsIGZhY2UtcmVt YXBwaW5nLWFsaXN0CisgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZm ZXIgYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLXJlbWFwcGluZy1hbGlz dCkpCisgICAgICAgIChraWxsLWxvY2FsLXZhcmlhYmxlICdmYWNlLXJlbWFwcGluZy1hbGlz dCkpCiAgICAgICAoaW5zZXJ0IChwcm9wZXJ0aXplIHN0cmluZyAnbGluZS1wcmVmaXggbmls ICd3cmFwLXByZWZpeCBuaWwpKQogICAgICAgKGNhciAoYnVmZmVyLXRleHQtcGl4ZWwtc2l6 ZSBuaWwgbmlsIHQpKSkpKQogCmRpZmYgLS1naXQgYS9saXNwL3Zpc3VhbC13cmFwLmVsIGIv bGlzcC92aXN1YWwtd3JhcC5lbAppbmRleCBkOTVjZjRiYjU2OS4uMjQxY2QzMzcxNDggMTAw NjQ0Ci0tLSBhL2xpc3AvdmlzdWFsLXdyYXAuZWwKKysrIGIvbGlzcC92aXN1YWwtd3JhcC5l bApAQCAtOTcsMzggKzk3LDYwIEBAIHZpc3VhbC13cmFwLS1wcmVmaXgtZmFjZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmICh2aXN1YWwtd3JhcC0tZmFjZS1leHRl bmQtcCBmKSBmKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlb2wtZmFjZSkp KSkpKSkKIAotKGRlZnVuIHZpc3VhbC13cmFwLS1wcmVmaXggKGZjcCkKKyhkZWZ1biB2aXN1 YWwtd3JhcC0tYWRqdXN0LWRpc3BsYXktd2lkdGggKGZjcCBuKQorICAod2hlbi1sZXQgKChk aXNwbGF5IChnZXQtdGV4dC1wcm9wZXJ0eSAwICdkaXNwbGF5IGZjcCkpCisgICAgICAgICAg ICAgKChlcSAoY2FyLXNhZmUgZGlzcGxheSkgJ3NwYWNlKSkKKyAgICAgICAgICAgICAod2lk dGggKGNhciAocGxpc3QtZ2V0IChjZHIgZGlzcGxheSkgOndpZHRoKSkpKQorICAgIChwdXQt dGV4dC1wcm9wZXJ0eSAwIChsZW5ndGggZmNwKSAnZGlzcGxheQorICAgICAgICAgICAgICAg ICAgICAgICBgKHNwYWNlIDp3aWR0aCAoLCgrIHdpZHRoIG4pKSkgZmNwKSkKKyAgZmNwKQor CisoZGVmdW4gdmlzdWFsLXdyYXAtLWV4dHJhLWluZGVudCAoZmNwKQogICAobGV0ICgoZmNw LWxlbiAoc3RyaW5nLXdpZHRoIGZjcCkpKQogICAgIChjb25kCiAgICAgICgoPSAwIHZpc3Vh bC13cmFwLWV4dHJhLWluZGVudCkKICAgICAgIGZjcCkKICAgICAgKCg8IDAgdmlzdWFsLXdy YXAtZXh0cmEtaW5kZW50KQotICAgICAgKGNvbmNhdCBmY3AgKG1ha2Utc3RyaW5nIHZpc3Vh bC13cmFwLWV4dHJhLWluZGVudCA/XHMpKSkKKyAgICAgIChsZXQqICgoZXh0cmEgKG1ha2Ut c3RyaW5nIHZpc3VhbC13cmFwLWV4dHJhLWluZGVudCA/XHMpKQorICAgICAgICAgICAgIChy ZXN1bHQgKGNvbmNhdCBmY3AgZXh0cmEpKSkKKyAgICAgICAgKHZpc3VhbC13cmFwLS1hZGp1 c3QtZGlzcGxheS13aWR0aAorICAgICAgICAgcmVzdWx0IChzdHJpbmctcGl4ZWwtd2lkdGgg ZXh0cmEgKGN1cnJlbnQtYnVmZmVyKSkpKSkKICAgICAgKCg8IDAgKCsgdmlzdWFsLXdyYXAt ZXh0cmEtaW5kZW50IGZjcC1sZW4pKQotICAgICAgKHN1YnN0cmluZyBmY3AKLSAgICAgICAg ICAgICAgICAgMAotICAgICAgICAgICAgICAgICAoKyB2aXN1YWwtd3JhcC1leHRyYS1pbmRl bnQgZmNwLWxlbikpKQorICAgICAgKGxldCogKChpZHggKCsgdmlzdWFsLXdyYXAtZXh0cmEt aW5kZW50IGZjcC1sZW4pKQorICAgICAgICAgICAgICh0cmltIChzdWJzdHJpbmcgZmNwIGlk eCkpCisgICAgICAgICAgICAgKHJlc3VsdCAoc3Vic3RyaW5nIGZjcCAwIGlkeCkpKQorICAg ICAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyAwIChsZW5ndGggdHJpbSkgJyhkaXNwbGF5 KSB0cmltKQorICAgICAgICAodmlzdWFsLXdyYXAtLWFkanVzdC1kaXNwbGF5LXdpZHRoCisg ICAgICAgICByZXN1bHQgKC0gKHN0cmluZy1waXhlbC13aWR0aCB0cmltIChjdXJyZW50LWJ1 ZmZlcikpKSkpKQogICAgICAodAogICAgICAgIiIpKSkpCiAKKyhkZWZ1biB2aXN1YWwtd3Jh cC0tY29udGVudC1wcmVmaXggKHBvc2l0aW9uKQorICAiR2V0IHRoZSBjb250ZW50IHByZWZp eCBmb3IgdGhlIGxpbmUgc3RhcnRpbmcgYXQgUE9TSVRJT04uCitUaGlzIGlzIGxpa2UgYGZp bGwtY29udGVudC1wcmVmaXgnIGJ1dCBkb2Vzbid0IGNoZWNrIHN1YnNlcXVlbnQgbGluZXMK K2FuZCB1c2VzIGRpc3BsYXkgc3BlY3MgdG8gaGFuZGxlIHZhcmlhYmxlLXdpZHRoIGZhY2Vz LiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGdvdG8tY2hhciBwb3NpdGlvbikKKyAgICAo aWYgKGVvbHApIChmb3J3YXJkLWxpbmUgMSkpCisgICAgOzsgTW92ZSB0byB0aGUgc2Vjb25k IGxpbmUgdW5sZXNzIHRoZXJlIGlzIGp1c3Qgb25lLgorICAgIChtb3ZlLXRvLWxlZnQtbWFy Z2luKQorICAgIChsZXQgKChwcmVmaXggKGZpbGwtbWF0Y2gtYWRhcHRpdmUtcHJlZml4KSkp CisgICAgICAoaWYgKG9yIChhbmQgYWRhcHRpdmUtZmlsbC1maXJzdC1saW5lLXJlZ2V4cAor CQkgICAoc3RyaW5nLW1hdGNoIGFkYXB0aXZlLWZpbGwtZmlyc3QtbGluZS1yZWdleHAgcHJl Zml4KSkKKwkgICAgICAoYW5kIGNvbW1lbnQtc3RhcnQtc2tpcAorCQkgICAoc3RyaW5nLW1h dGNoIGNvbW1lbnQtc3RhcnQtc2tpcCBwcmVmaXgpKSkKKwkgIHByZWZpeAorICAgICAgICAo cHJvcGVydGl6ZQorICAgICAgICAgKG1ha2Utc3RyaW5nIChzdHJpbmctd2lkdGggcHJlZml4 KSA/XHMpCisgICAgICAgICAnZGlzcGxheSBgKHNwYWNlIDp3aWR0aCAoLChzdHJpbmctcGl4 ZWwtd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCAo Y3VycmVudC1idWZmZXIpKSkpKSkpKSkKKwogKGRlZnVuIHZpc3VhbC13cmFwLWZpbGwtY29u dGV4dC1wcmVmaXggKGJlZyBlbmQpCiAgICJDb21wdXRlIHZpc3VhbCB3cmFwIHByZWZpeCBm cm9tIHRleHQgYmV0d2VlbiBCRUcgYW5kIEVORC4KLVRoaXMgaXMgbGlrZSBgZmlsbC1jb250 ZXh0LXByZWZpeCcsIGJ1dCB3aXRoIHByZWZpeCBsZW5ndGggYWRqdXN0ZWQKLWJ5IGB2aXN1 YWwtd3JhcC1leHRyYS1pbmRlbnQnLiIKLSAgKGxldCogKChmY3AKLSAgICAgICAgICA7OyBg ZmlsbC1jb250ZXh0LXByZWZpeCcgaWdub3JlcyBwcmVmaXhlcyB0aGF0IGxvb2sgbGlrZQot ICAgICAgICAgIDs7IHBhcmFncmFwaCBzdGFydHMsIGluIG9yZGVyIHRvIGF2b2lkIGluYWR2 ZXJ0ZW50bHkKLSAgICAgICAgICA7OyBjcmVhdGluZyBhIG5ldyBwYXJhZ3JhcGggd2hpbGUg ZmlsbGluZywgYnV0IGhlcmUgd2UncmUKLSAgICAgICAgICA7OyBvbmx5IGRlYWxpbmcgd2l0 aCBzaW5nbGUtbGluZSAicGFyYWdyYXBocyIgYW5kIHdlIGRvbid0Ci0gICAgICAgICAgOzsg YWN0dWFsbHkgbW9kaWZ5IHRoZSBidWZmZXIsIHNvIHRoaXMgcmVzdHJpY3Rpb24gZG9lc24n dAotICAgICAgICAgIDs7IG1ha2UgbXVjaCBzZW5zZSAoYW5kIGlzIHBvc2l0aXZlbHkgaGFy bWZ1bCBpbgotICAgICAgICAgIDs7IHRhc2twYXBlci1tb2RlIHdoZXJlIHBhcmFncmFwaC1z dGFydCBtYXRjaGVzIGV2ZXJ5dGhpbmcpLgotICAgICAgICAgIChvciAobGV0ICgocGFyYWdy YXBoLXN0YXJ0IHJlZ2V4cC11bm1hdGNoYWJsZSkpCi0gICAgICAgICAgICAgICAgICAgIChm aWxsLWNvbnRleHQtcHJlZml4IGJlZyBlbmQpKQotICAgICAgICAgICAgICAgICAgOzsgTm90 ZTogZmlsbC1jb250ZXh0LXByZWZpeCBtYXkgcmV0dXJuIG5pbDsgU2VlOgotICAgICAgICAg ICAgICAgICAgOzsgaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmVtYWNzLmRldmVs LzE1NjI4NQotICAgICAgICAgICAgICAiIikpCi0gICAgICAgICAocHJlZml4ICh2aXN1YWwt d3JhcC0tcHJlZml4IGZjcCkpCitUaGlzIGlzIGxpa2UgYGZpbGwtY29udGV4dC1wcmVmaXgn LCBidXQgc3VwcG9ydGluZyB2YXJpYWJsZS13aWR0aCBmYWNlcworYW5kIHdpdGggdGhlIHBy ZWZpeCBsZW5ndGggYWRqdXN0ZWQgYnkgYHZpc3VhbC13cmFwLWV4dHJhLWluZGVudCcuIgor ICAobGV0KiAoKGZjcCAodmlzdWFsLXdyYXAtLWNvbnRlbnQtcHJlZml4IGJlZykpCisgICAg ICAgICAocHJlZml4ICh2aXN1YWwtd3JhcC0tZXh0cmEtaW5kZW50IGZjcCkpCiAgICAgICAg ICAoZmFjZSAodmlzdWFsLXdyYXAtLXByZWZpeC1mYWNlIGZjcCBiZWcgZW5kKSkpCiAgICAg KGlmIGZhY2UKICAgICAgICAgKHByb3BlcnRpemUgcHJlZml4ICdmYWNlIGZhY2UpCkBAIC0x NjAsNyArMTgyLDggQEAgdmlzdWFsLXdyYXAtcHJlZml4LWZ1bmN0aW9uCiAJIChyZW1vdmUt dGV4dC1wcm9wZXJ0aWVzCiAJICAwIChsZW5ndGggcGZ4KSAnKHdyYXAtcHJlZml4KSBwZngp CiAgICAgICAgICAobGV0ICgoZHAgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2Rpc3BsYXkgcGZ4 KSkpCi0gICAgICAgICAgICh3aGVuIChhbmQgZHAgKGVxIGRwIChnZXQtdGV4dC1wcm9wZXJ0 eSAoMS0gbGJwKSAnZGlzcGxheSkpKQorICAgICAgICAgICAod2hlbiAoYW5kIGRwICg+IGxi cCAocG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgICAgICAgICAoZXEgZHAgKGdldC10ZXh0 LXByb3BlcnR5ICgxLSBsYnApICdkaXNwbGF5KSkpCiAgICAgICAgICAgICAgOzsgVGhlcmUn cyBhIGBkaXNwbGF5JyBwcm9wZXJ0eSB3aGljaCBjb3ZlcnMgbm90IGp1c3QgdGhlCiAgICAg ICAgICAgICAgOzsgcHJlZml4IGJ1dCBhbHNvIHRoZSBwcmV2aW91cyBuZXdsaW5lLiAgU28g aXQncyBub3QKICAgICAgICAgICAgICA7OyBqdXN0IG1ha2luZyB0aGUgcHJlZml4IG1vcmUg cHJldHR5IGFuZCBjb3VsZCBpbnRlcmZlcmUKQEAgLTE4Nyw4ICsyMTAsMTIgQEAgdmlzdWFs LXdyYXAtcHJlZml4LW1vZGUKICAgICAgICAgOzsgb2YgdGhlIGhvb2sgKGJ1ZyMxNTE1NSku CiAgICAgICAgIChhZGQtaG9vayAnaml0LWxvY2stZnVuY3Rpb25zCiAgICAgICAgICAgICAg ICAgICAjJ3Zpc3VhbC13cmFwLXByZWZpeC1mdW5jdGlvbiAnYXBwZW5kIHQpCi0gICAgICAg IChqaXQtbG9jay1yZWdpc3RlciAjJ3Zpc3VhbC13cmFwLXByZWZpeC1mdW5jdGlvbikpCisg ICAgICAgIChqaXQtbG9jay1yZWdpc3RlciAjJ3Zpc3VhbC13cmFwLXByZWZpeC1mdW5jdGlv bikKKyAgICAgICAgOzsgRklYTUU6IFdoYXQgc2hvdWxkIHdlIGRvIGFib3V0IGBnbG9iYWwt dGV4dC1zY2FsZS1hZGp1c3QnIG9yCisgICAgICAgIDs7IG90aGVyIHRoaW5ncyB0aGF0IGNh biBjaGFuZ2UgdGhlIHRleHQgc2l6ZT8KKyAgICAgICAgKGFkZC1ob29rICd0ZXh0LXNjYWxl LW1vZGUtaG9vayAjJ2ppdC1sb2NrLXJlZm9udGlmeSBuaWwgdCkpCiAgICAgKGppdC1sb2Nr LXVucmVnaXN0ZXIgIyd2aXN1YWwtd3JhcC1wcmVmaXgtZnVuY3Rpb24pCisgICAgKHJlbW92 ZS1ob29rICd0ZXh0LXNjYWxlLW1vZGUtaG9vayAjJ2ppdC1sb2NrLXJlZm9udGlmeSkKICAg ICAod2l0aC1zaWxlbnQtbW9kaWZpY2F0aW9ucwogICAgICAgKHNhdmUtcmVzdHJpY3Rpb24K ICAgICAgICAgKHdpZGVuKQotLSAKMi4yNS4xCgo= --------------1ABD0qXctHlxJqSTmVRggRBy--