From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Okamsn via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#68863: Add support for using setf with seq-subseq Date: Fri, 09 Feb 2024 03:54:32 +0000 Message-ID: <2dfd9d7f-5c63-4e1d-845c-cd245a71fc34@protonmail.com> References: <050ba625-2372-425f-85c6-988e2ef4cf14@protonmail.com> <86y1bvw5ff.fsf@gnu.org> Reply-To: Okamsn Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_15khvgEM3WV8QgDkoBLfCIRbfMNiq4FeNINire2qQ" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30061"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 68863@debbugs.gnu.org, Nicolas Petton To: Stefan Monnier , Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Feb 09 04:56:05 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 1rYHzg-0007Z3-Nn for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 09 Feb 2024 04:56:04 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rYHzR-0002xI-1D; Thu, 08 Feb 2024 22:55:49 -0500 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 1rYHzP-0002x8-M0 for bug-gnu-emacs@gnu.org; Thu, 08 Feb 2024 22:55:47 -0500 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 1rYHzP-0006sJ-1H for bug-gnu-emacs@gnu.org; Thu, 08 Feb 2024 22:55:47 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rYHzd-0006eH-Op for bug-gnu-emacs@gnu.org; Thu, 08 Feb 2024 22:56:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Okamsn Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 09 Feb 2024 03:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 68863 X-GNU-PR-Package: emacs Original-Received: via spool by 68863-submit@debbugs.gnu.org id=B68863.170745092225441 (code B ref 68863); Fri, 09 Feb 2024 03:56:01 +0000 Original-Received: (at 68863) by debbugs.gnu.org; 9 Feb 2024 03:55:22 +0000 Original-Received: from localhost ([127.0.0.1]:57254 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rYHyz-0006cF-Nj for submit@debbugs.gnu.org; Thu, 08 Feb 2024 22:55:22 -0500 Original-Received: from mail-4322.protonmail.ch ([185.70.43.22]:22959) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rYHyx-0006bs-Am for 68863@debbugs.gnu.org; Thu, 08 Feb 2024 22:55:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1707450898; x=1707710098; bh=h9Wx6qL+k3NzIHf4k5XQhXTj/DOjx+B2GmFcm6owis8=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=xJED8OaDIuYVxGmof3TVXcE/oL34B67REyELCiW9hvb2w0JnBtB3E+VZvLBUq0VMv KyfUhTTYDKj5wzX4u4JgiqnWk2LMMtyFGCNTk96YQ0l/w8vjcEcLcrm/axpS4xxm45 9LKVW7mHWWiLWdNAtax830jMWwhsVGrp83KBfKjdwnZD9UZxt1QJk88fKpwlcYyvyI pD472AeofkkJoxJz+P0L11oSrlFySp4goQTVYzTx/o2SSpNceeLN02OYWhToimzKmv pRwkKJpeMnPMsF0xE2rze2baPmBpIpVq/cr1UpbQyjOH0rCUADV5+55CkBCVMnRyuJ WdSeH3wV8AOzA== In-Reply-To: Feedback-ID: 25935600:user:proton 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:279673 Archived-At: This is a multi-part message in MIME format. --b1_15khvgEM3WV8QgDkoBLfCIRbfMNiq4FeNINire2qQ Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Stefan Monnier wrote: >>> To avoid modifying more values than specified, that modifying function >>> uses a `when` condition. I'm not sure of a good way to stop `seq-do` >>> early when we know that it can stop calling the modifying function. >>> Normally, I would use `cl-block` and `cl-return`. Is it OK to use those >>> features in `seq.el`? If not, is it worth adding something like a >>> `seq-map-while` or a `seq-do-while`? >=20 > `seq.el` is used by some parts of the implementation of `cl-lib`, so > the use of `cl-lib` risks introducing a circular dependency. Maybe using > `cl-block/return` would be OK, but I wouldn't be surprised if it causes > bootstrap trouble. You can use catch/throw, OTOH. >=20 >=20 > Stefan >=20 Attached is an updated version using `catch` and `throw`. Thank you for=20 pointing those out to me. The patch is also changed to signal=20 `args-out-of-range` for the start and end indexes to be more like=20 `seq-subseq`. How does it look? --b1_15khvgEM3WV8QgDkoBLfCIRbfMNiq4FeNINire2qQ Content-Type: text/x-patch; charset=UTF-8; name=v2-0001-Add-setf-support-for-seq-subseq.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Add-setf-support-for-seq-subseq.patch RnJvbSBiMDZkYjc5MDVmNWQ2ZGZhMGQzM2MwNWZkMjE0ZWY5NWQxOTgxNGI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFYXJsIEh5YXR0IDxva2Ftc25AcHJvdG9ubWFpbC5jb20+CkRh dGU6IFN1biwgMjggSmFuIDIwMjQgMjI6NDg6MTMgLTA1MDAKU3ViamVjdDogW1BBVENIIHYyXSBB ZGQgc2V0ZiBzdXBwb3J0IGZvciBzZXEtc3Vic2VxLgoKKiBsaXNwL2VtYWNzLWxpc3Avc2VxLmVs IChzZXEtc3Vic2VxKTogQWRkIGEgZ2VuZXJpYyB2ZXJzaW9uIG9mCmNhbGxpbmcgc2V0ZiBvbiBz ZXEtc3Vic2VxIGFuZCBhZGQgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIGZvciB3aGVuIHRoZQptb2Rp ZmllZCBzZXF1ZW5jZSBpcyBhIGxpc3QuCiogdGVzdC9saXNwL2VtYWNzLWxpc3Avc2VxLXRlc3Rz LmVsICh0ZXN0LXNldGYtc2VxLXN1YnNlcSkKKHRlc3Qtc2V0Zi1zZXEtc3Vic2VxLWNvbWJpbmF0 aW9ucyk6IEFkZCB0ZXN0cyBmb3IgdGhlIGZlYXR1cmUuCgpUaGUgZmVhdHVyZSB3aWxsIHNpZ25h bCAnYXJncy1vdXQtb2YtcmFuZ2UnIGlmIHRoZSBzdGFydGluZyBpbmRleCBvcgplbmRpbmcgaW5k ZXggKGlmIGdpdmVuKSBpcyBvdXRzaWRlIG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgZnJvbSAwCnRo cm91Z2ggdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2Ugb3IgZnJvbSB0aGUgbmVnYXRpdmUgbGVu Z3RoIG9mIHRoZQpzZXF1ZW5jZSB0aHJvdWdoIG5lZ2F0aXZlIDEuICBJZiB0aGUgc3RhcnRpbmcg aW5kZXggaXMgZXF1YWwgdG8gdGhlCmxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIHRoZW4gbm90aGlu ZyBpcyBjaGFuZ2VkLiAgSWYgdGhlIHN0YXJ0aW5nCmluZGV4IGlzIGVxdWFsIHRvIHRoZSBlbmRp bmcgaW5kZXgsIHRoZW4gbm90aGluZyBpcyBjaGFuZ2VkLiAgVGhlCmZlYXR1cmUgc2hvdWxkIHNp Z25hbCBhbiBlcnJvciBpbiBhbGwgY2FzZXMgd2hlcmUgdXNpbmcgJ3NlcS1zdWJzZXEnCndvdWxk IHNpZ25hbCBhbiBlcnJvci4KLS0tCiBsaXNwL2VtYWNzLWxpc3Avc2VxLmVsICAgICAgICAgICAg fCAgODggKysrKysrKysrKysrKysrKysrCiB0ZXN0L2xpc3AvZW1hY3MtbGlzcC9zZXEtdGVzdHMu ZWwgfCAxNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQs IDIzNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL3NlcS5lbCBi L2xpc3AvZW1hY3MtbGlzcC9zZXEuZWwKaW5kZXggNGM2NTUzOTcyYzIuLjZhMWZkNGMzNWUzIDEw MDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3Avc2VxLmVsCisrKyBiL2xpc3AvZW1hY3MtbGlzcC9z ZXEuZWwKQEAgLTE5Myw2ICsxOTMsOTQgQEAgc2VxLXN1YnNlcQogICAgICAgICAoY29weS1zZXF1 ZW5jZSBzZXF1ZW5jZSkpKSkKICAgICh0IChlcnJvciAiVW5zdXBwb3J0ZWQgc2VxdWVuY2U6ICVz IiBzZXF1ZW5jZSkpKSkKIAorKGNsLWRlZmdlbmVyaWMgKHNldGYgc2VxLXN1YnNlcSkgKHN0b3Jl IHNlcXVlbmNlIHN0YXJ0ICZvcHRpb25hbCBlbmQpCisgICJNb2RpZnkgdGhlIGVsZW1lbnRzIG9m IFNFUVVFTkNFIGZyb20gU1RBUlQgdG8gRU5EIHRvIGJlIHRob3NlIG9mIFNUT1JFLgorRU5EIGlz IGV4Y2x1c2l2ZS4KKworSWYgRU5EIGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIHRoZSBsZW5n dGggb2YgdGhlIHNlcXVlbmNlLiAgSWYKK1NUQVJUIG9yIEVORCBpcyBuZWdhdGl2ZSwgaXQgY291 bnRzIGZyb20gdGhlIGVuZC4gIFNpZ25hbCBhbgorZXJyb3IgaWYgU1RBUlQgb3IgRU5EIGFyZSBv dXRzaWRlIG9mIHRoZSBzZXF1ZW5jZSAoaS5lIHRvbyBsYXJnZQoraWYgcG9zaXRpdmUgb3IgdG9v IHNtYWxsIGlmIG5lZ2F0aXZlKS4KKworU0VRVUVOQ0UgaXMgbmVpdGhlciBsZW5ndGhlbmVkIG5v ciBzaG9ydGVuZWQuIgorICAobGV0KiAoKGxlbiAoc2VxLWxlbmd0aCBzZXF1ZW5jZSkpCisgICAg ICAgICAoc2lnbmFsLWZuIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAgICAoc2lnbmFs ICdhcmdzLW91dC1vZi1yYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGVu ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IHNlcXVlbmNlIHN0YXJ0 IGVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3Qgc2VxdWVuY2Ugc3Rh cnQpKSkpKQorICAgICAgICAgKHNpZ25hbC1vci12YWwtZm4gKGxhbWJkYSAodmFsKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCg+IHZhbCBsZW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwg c2lnbmFsLWZuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoPCB2YWwgMCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgodmFsMiAoKyB2YWwgbGVuKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgdmFsMiAwKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHNpZ25hbC1mbikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsMikpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwpKSkpCisgICAg ICAgICAoaWR4IChmdW5jYWxsIHNpZ25hbC1vci12YWwtZm4gc3RhcnQpKQorICAgICAgICAgKGlk eC1lbmQgKGlmIChudWxsIGVuZCkKKyAgICAgICAgICAgICAgICAgICAgICBsZW4KKyAgICAgICAg ICAgICAgICAgICAgKGZ1bmNhbGwgc2lnbmFsLW9yLXZhbC1mbiBlbmQpKSkKKyAgICAgICAgICh0 YWcgKGdlbnN5bSkpKQorICAgIChpZiAoPiBpZHggaWR4LWVuZCkKKyAgICAgICAgKGZ1bmNhbGwg c2lnbmFsLWZuKQorICAgICAgKGNhdGNoIHRhZworICAgICAgICAoc2VxLWRvIChsYW1iZGEgKHYp CisgICAgICAgICAgICAgICAgICAoaWYgKDwgaWR4IGlkeC1lbmQpCisgICAgICAgICAgICAgICAg ICAgICAgKHNldGYgKHNlcS1lbHQgc2VxdWVuY2UgaWR4KSB2CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWR4ICgxKyBpZHgpKQorICAgICAgICAgICAgICAgICAgICAodGhyb3cgdGFnIG5p bCkpKQorICAgICAgICAgICAgICAgIHN0b3JlKSkpKQorICBzdG9yZSkKKworKGNsLWRlZm1ldGhv ZCAoc2V0ZiBzZXEtc3Vic2VxKSAoc3RvcmUgKHNlcXVlbmNlIGxpc3QpIHN0YXJ0ICZvcHRpb25h bCBlbmQpCisgICJNb2RpZnkgdGhlIGVsZW1lbnRzIG9mIFNFUVVFTkNFIGZyb20gU1RBUlQgdG8g RU5EIHRvIGJlIHRob3NlIG9mIFNUT1JFLgorRU5EIGlzIGV4Y2x1c2l2ZS4KKworSWYgRU5EIGlz IG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLiAgSWYK K1NUQVJUIG9yIEVORCBpcyBuZWdhdGl2ZSwgaXQgY291bnRzIGZyb20gdGhlIGVuZC4gIFNpZ25h bCBhbgorZXJyb3IgaWYgU1RBUlQgb3IgRU5EIGFyZSBvdXRzaWRlIG9mIHRoZSBzZXF1ZW5jZSAo aS5lIHRvbyBsYXJnZQoraWYgcG9zaXRpdmUgb3IgdG9vIHNtYWxsIGlmIG5lZ2F0aXZlKS4KKwor U0VRVUVOQ0UgaXMgbmVpdGhlciBsZW5ndGhlbmVkIG5vciBzaG9ydGVuZWQuIgorICAobGV0KiAo KGxlbiAoc2VxLWxlbmd0aCBzZXF1ZW5jZSkpCisgICAgICAgICAoc2lnbmFsLWZuIChsYW1iZGEg KCkKKyAgICAgICAgICAgICAgICAgICAgICAoc2lnbmFsICdhcmdzLW91dC1vZi1yYW5nZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGVuZAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsaXN0IHNlcXVlbmNlIHN0YXJ0IGVuZCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxpc3Qgc2VxdWVuY2Ugc3RhcnQpKSkpKQorICAgICAgICAgKHNpZ25h bC1vci12YWwtZm4gKGxhbWJkYSAodmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCg+IHZhbCBsZW4pCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc2lnbmFsLWZuKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoPCB2YWwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGV0ICgodmFsMiAoKyB2YWwgbGVuKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgKDwgdmFsMiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIHNpZ25hbC1mbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmFsMikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWwpKSkpCisgICAgICAgICAoaWR4IChmdW5jYWxsIHNpZ25h bC1vci12YWwtZm4gc3RhcnQpKQorICAgICAgICAgKGlkeC1lbmQgKGlmIChudWxsIGVuZCkKKyAg ICAgICAgICAgICAgICAgICAgICBsZW4KKyAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc2ln bmFsLW9yLXZhbC1mbiBlbmQpKSkKKyAgICAgICAgICh0YWcgKGdlbnN5bSkpKQorICAgIChpZiAo PiBpZHggaWR4LWVuZCkKKyAgICAgICAgKGZ1bmNhbGwgc2lnbmFsLWZuKQorICAgICAgKGNhdGNo IHRhZworICAgICAgICAoc2VxLWRvIChsZXQgKChyZXBsYWNlZCAobnRoY2RyIGlkeCBzZXF1ZW5j ZSkpKQorICAgICAgICAgICAgICAgICAgKGxhbWJkYSAodikKKyAgICAgICAgICAgICAgICAgICAg KGlmICg8IGlkeCBpZHgtZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgKGNhciBy ZXBsYWNlZCkgdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgKGNkciBy ZXBsYWNlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCAoMSsgaWR4KSkKKyAg ICAgICAgICAgICAgICAgICAgICAodGhyb3cgdGFnIG5pbCkpKSkKKyAgICAgICAgICAgICAgICBz dG9yZSkpKSkKKyAgc3RvcmUpCisKIAwKIChjbC1kZWZnZW5lcmljIHNlcS1tYXAgKGZ1bmN0aW9u IHNlcXVlbmNlKQogICAiUmV0dXJuIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgRlVOQ1RJT04gdG8g ZWFjaCBlbGVtZW50IG9mIFNFUVVFTkNFLiIKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9lbWFjcy1s aXNwL3NlcS10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9lbWFjcy1saXNwL3NlcS10ZXN0cy5lbAppbmRl eCBjMDZjZWIwMGJkYi4uZDNlNDZjMzJmOTkgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9lbWFjcy1s aXNwL3NlcS10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvZW1hY3MtbGlzcC9zZXEtdGVzdHMuZWwK QEAgLTMxMiw2ICszMTIsMTU1IEBAIHRlc3Qtc2VxLXN1YnNlcQogICAgICAgICAgICAgICAgICAg KDpzdWNjZXNzCiAgICAgICAgICAgICAgICAgICAgKHNob3VsZCAoZXF1YWwgKHNlcS1zdWJzZXEg bGlzdCBzdGFydCBlbmQpIHJlcykpKSkpKSkpKSkpKQogCisoY2wtZGVmbWFjcm8gdGVzdC1zZXRm LXNlcS1zdWJzZXEtY29tYmluYXRpb25zCisgICAgKCZrZXkgaW5pdC12YWxzIHN1Yi12YWxzIHJl c3VsdCByYW5nZSBlcnJvcikKKyAgIk1ha2UgYSB0ZXN0IGZvciBlYWNoIGNvbWJpbmF0aW9uIG9m IHNlcXVlbmNlIHR5cGUgZm9yIGBzZXEtc3Vic2VxJyB1c2luZyBgc2V0ZicuCisKKy0gSU5JVC1W QUxTIGlzIGEgbGlzdCBob2xkaW5nIHRoZSBpbml0aWFsIGVsZW1lbnRzLgorLSBSRVNVTFQgaXMg d2hhdCB0aGUgZmluYWwgdmFsdWUgc2hvdWxkIGJlIGFmdGVyIHN1YnN0aXR1dGlvbi4KKy0gRVJS T1IgaXMgd2hldGhlciB0aGUgZm9ybSBzaG91bGQgc2lnbmFsIGBhcmdzLW91dC1vZi1yYW5nZScu CistIFNVQi1WQUxTIGlzIGEgbGlzdCBob2xkaW5nIHRoZSBlbGVtZW50cyB0byBiZSBzdWJzdGl0 dXRlZCBpbi4KKy0gUkFOR0UgaXMgYSBsaXN0IG9mIHRoZSBgc3RhcnQnIGFuZCBgZW5kJyBhcmd1 bWVudHMgb2YgYHNlcS1zdWJzZXEnLiIKKyAgKGxldCAoKHRlc3RzKSkKKyAgICAoZG9saXN0ICh0 eXBlMSAnKGxpc3QgdmVjdG9yIHN0cmluZykpCisgICAgICAoZG9saXN0ICh0eXBlMiAnKGxpc3Qg dmVjdG9yIHN0cmluZykpCisgICAgICAgIChwdXNoICAoaWYgZXJyb3IKKyAgICAgICAgICAgICAg ICAgICBgKHNob3VsZC1lcnJvciAobGV0ICgoc2VxICgsdHlwZTEgLEBpbml0LXZhbHMpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChzZXEtc3Vic2VxIHNlcSAs QHJhbmdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCx0eXBl MiAsQHN1Yi12YWxzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dHlwZSAocXVvdGUgYXJncy1vdXQt b2YtcmFuZ2UpKQorICAgICAgICAgICAgICAgICBgKHNob3VsZCAoZXF1YWwgKCx0eXBlMSAsQHJl c3VsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChzZXEgKCx0eXBl MSAsQGluaXQtdmFscykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 ZiAoc2VxLXN1YnNlcSBzZXEgLEByYW5nZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKCx0eXBlMiAsQHN1Yi12YWxzKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VxKSkpKQorICAgICAgICAgICAgICAgdGVzdHMpKSkKKyAgICBgKHByb2du ICxAdGVzdHMpKSkKKworKGVydC1kZWZ0ZXN0IHRlc3Qtc2V0Zi1zZXEtc3Vic2VxICgpCisgICJU ZXN0IHVzaW5nIGBzZXEtc3Vic2VxJyB3aXRoIGBzZXRmJy4KKworQW55IGNvbWJpbmF0aW9uIG9m IHNlcXVlbmNlcyBzaG91bGQgd29yay4KKworQW4gZXJyb3Igc2hvdWxkIGJlIHNpZ25hbGxlZCBp ZiB0aGUgaW5jbHVzaXZlIHN0YXJ0aW5nIGluZGV4IG9yCit0aGUgZXhjbHVzaXZlIGVuZGluZyBp bmRleCBpcyBvdXQgb2YgdGhlIHJhbmdlIGZyb20gMCB0aHJvdWdoIHRoZQorbGVuZ3RoIG9mIHRo ZSBzZXF1ZW5jZSwgb3IgaWYgdGhlIHN0YXJ0aW5nIGluZGV4IGlzIGdyZWF0ZXIgdGhhbgordGhl IGVuZGluZyBpbmRleC4gIElmIHRoZSBzdGFydGluZyBpbmRleCBpcyBlcXVhbCB0byB0aGUgZW5k aW5nCitpbmRleCwgdGhlbiBub3RoaW5nIGlzIGNoYW5nZWQuICBJZiB0aGUgc3RhcnRpbmcgaW5k ZXggaXMgZXF1YWwKK3RvIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCB0aGVuIG5vdGhpbmcg aXMgY2hhbmdlZC4gIEl0CitzaG91bGQgc2lnbmFsIGFuIGVycm9yIGluIGFsbCB0aGUgY2FzZXMg dGhhdCBgc2VxLXN1YnNlcScgc2lnbmFscworYW4gZXJyb3IuIgorICAodGVzdC1zZXRmLXNlcS1z dWJzZXEtY29tYmluYXRpb25zCisgICA6aW5pdC12YWxzICgwIDEgMikKKyAgIDpzdWItdmFscyAo MTAgMTEgMTIpCisgICA6cmFuZ2UgKDApCisgICA6cmVzdWx0ICgxMCAxMSAxMikpCisKKyAgKHRl c3Qtc2V0Zi1zZXEtc3Vic2VxLWNvbWJpbmF0aW9ucworICAgOmluaXQtdmFscyAoMCAxKQorICAg OnN1Yi12YWxzICgxMCAxMSAxMikKKyAgIDpyYW5nZSAoMCkKKyAgIDpyZXN1bHQgKDEwIDExKSkK KworICAodGVzdC1zZXRmLXNlcS1zdWJzZXEtY29tYmluYXRpb25zCisgICA6aW5pdC12YWxzICgw IDEgMikKKyAgIDpzdWItdmFscyAoMTAgMTEgMTIpCisgICA6cmFuZ2UgKDEpCisgICA6cmVzdWx0 ICgwIDEwIDExKSkKKworICAodGVzdC1zZXRmLXNlcS1zdWJzZXEtY29tYmluYXRpb25zCisgICA6 aW5pdC12YWxzICgwIDEgMikKKyAgIDpzdWItdmFscyAoMTAgMTEgMTIpCisgICA6cmFuZ2UgKDEg MykKKyAgIDpyZXN1bHQgKDAgMTAgMTEpKQorCisgICh0ZXN0LXNldGYtc2VxLXN1YnNlcS1jb21i aW5hdGlvbnMKKyAgIDppbml0LXZhbHMgKDAgMSAyKQorICAgOnN1Yi12YWxzICgxMCAxMSAxMikK KyAgIDpyYW5nZSAoMyAxKQorICAgOmVycm9yIHQpCisKKyAgKHRlc3Qtc2V0Zi1zZXEtc3Vic2Vx LWNvbWJpbmF0aW9ucworICAgOmluaXQtdmFscyAoMCAxIDIpCisgICA6c3ViLXZhbHMgKDEwIDEx IDEyKQorICAgOnJhbmdlICgxIDEwMCkKKyAgIDplcnJvciB0KQorCisgICh0ZXN0LXNldGYtc2Vx LXN1YnNlcS1jb21iaW5hdGlvbnMKKyAgIDppbml0LXZhbHMgKDAgMSAyKQorICAgOnN1Yi12YWxz ICgxMCAxMSAxMikKKyAgIDpyYW5nZSAoNykKKyAgIDplcnJvciB0KQorCisgICh0ZXN0LXNldGYt c2VxLXN1YnNlcS1jb21iaW5hdGlvbnMKKyAgIDppbml0LXZhbHMgKDAgMSAyIDMgNCkKKyAgIDpz dWItdmFscyAoMTIgMTMgMTQgMTUpCisgICA6cmFuZ2UgKDIgMykKKyAgIDpyZXN1bHQgKDAgMSAx MiAzIDQpKQorCisgICh0ZXN0LXNldGYtc2VxLXN1YnNlcS1jb21iaW5hdGlvbnMKKyAgIDppbml0 LXZhbHMgKDAgMSAyIDMgNCkKKyAgIDpzdWItdmFscyAoMTIgMTMgMTQgMTUpCisgICA6cmFuZ2Ug KDIgMikKKyAgIDpyZXN1bHQgKDAgMSAyIDMgNCkpCisKKyAgKHRlc3Qtc2V0Zi1zZXEtc3Vic2Vx LWNvbWJpbmF0aW9ucworICAgOmluaXQtdmFscyAoMCAxIDIgMyA0KQorICAgOnN1Yi12YWxzICgx MiAxMyAxNCAxNSkKKyAgIDpyYW5nZSAoNSkKKyAgIDpyZXN1bHQgKDAgMSAyIDMgNCkpCisKKyAg KHRlc3Qtc2V0Zi1zZXEtc3Vic2VxLWNvbWJpbmF0aW9ucworICAgOmluaXQtdmFscyAoMCAxIDIg MyA0KQorICAgOnN1Yi12YWxzICgxMiAxMyAxNCAxNSkKKyAgIDpyYW5nZSAoNikKKyAgIDplcnJv ciB0KQorCisgICh0ZXN0LXNldGYtc2VxLXN1YnNlcS1jb21iaW5hdGlvbnMKKyAgIDppbml0LXZh bHMgKDAgMSAyIDMgNCkKKyAgIDpzdWItdmFscyAoMTIgMTMgMTQgMTUpCisgICA6cmFuZ2UgKDUg NikKKyAgIDplcnJvciB0KQorCisgICh0ZXN0LXNldGYtc2VxLXN1YnNlcS1jb21iaW5hdGlvbnMK KyAgIDppbml0LXZhbHMgKDAgMSAyIDMgNCA1IDYgNyA4IDkpCisgICA6c3ViLXZhbHMgKDEwIDEx IDEyIDEzIDE0KQorICAgOnJhbmdlICgtMikKKyAgIDpyZXN1bHQgKDAgMSAyIDMgNCA1IDYgNyAx MCAxMSkpCisKKyAgKHRlc3Qtc2V0Zi1zZXEtc3Vic2VxLWNvbWJpbmF0aW9ucworICAgOmluaXQt dmFscyAoMCAxIDIgMyA0IDUgNiA3IDggOSkKKyAgIDpzdWItdmFscyAoMTAgMTEgMTIgMTMgMTQp CisgICA6cmFuZ2UgKC02IC0zKQorICAgOnJlc3VsdCAoMCAxIDIgMyAxMCAxMSAxMiA3IDggOSkp CisKKyAgKHRlc3Qtc2V0Zi1zZXEtc3Vic2VxLWNvbWJpbmF0aW9ucworICAgOmluaXQtdmFscyAo MCAxIDIgMyA0IDUgNiA3IDggOSkKKyAgIDpzdWItdmFscyAoMTAgMTEgMTIgMTMgMTQpCisgICA6 cmFuZ2UgKC02IC0xMCkKKyAgIDplcnJvciB0KQorCisgIDs7IFRoaXMgcmFuZ2UgbWlnaHQgbWFr ZSBzZW5zZSwgYnV0IHNpbmNlIGl0IHdvdWxkIHNpZ25hbCBhbiBlcnJvcgorICA7OyBpbiBgc2Vx LXN1YnNlcScsIHdlIGFsc28gc2lnbmFsIGFuIGVycm9yIGluIHRoZSBgc2V0ZicgZmVhdHVyZS4K KyAgKHRlc3Qtc2V0Zi1zZXEtc3Vic2VxLWNvbWJpbmF0aW9ucworICAgOmluaXQtdmFscyAoMCAx IDIgMyA0IDUgNiA3IDggOSkKKyAgIDpzdWItdmFscyAoMTAgMTEgMTIgMTMgMTQpCisgICA6cmFu Z2UgKC02IDApCisgICA6ZXJyb3IgdCkKKworICAodGVzdC1zZXRmLXNlcS1zdWJzZXEtY29tYmlu YXRpb25zCisgICA6aW5pdC12YWxzICgwIDEgMiAzIDQgNSA2IDcgOCA5KQorICAgOnN1Yi12YWxz ICgxMCAxMSAxMiAxMyAxNCkKKyAgIDpyYW5nZSAoMTAwKQorICAgOmVycm9yIHQpCisKKyAgKHRl c3Qtc2V0Zi1zZXEtc3Vic2VxLWNvbWJpbmF0aW9ucworICAgOmluaXQtdmFscyAoMCAxIDIgMyA0 IDUgNiA3IDggOSkKKyAgIDpzdWItdmFscyAoMTAgMTEgMTIgMTMgMTQpCisgICA6cmFuZ2UgKC0x MDApCisgICA6ZXJyb3IgdCkpCisKIChlcnQtZGVmdGVzdCB0ZXN0LXNlcS1jb25jYXRlbmF0ZSAo KQogICAod2l0aC10ZXN0LXNlcXVlbmNlcyAoc2VxICcoMiA0IDYpKQogICAgIChzaG91bGQgKGVx dWFsIChzZXEtY29uY2F0ZW5hdGUgJ3N0cmluZyBzZXEgWzhdKSAoc3RyaW5nIDIgNCA2IDgpKSkK LS0gCjIuMzQuMQoK --b1_15khvgEM3WV8QgDkoBLfCIRbfMNiq4FeNINire2qQ--