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#59469: 29.0.50; Eshell "for" loop: Calling a non-lisp command (example: /usr/bin/tail) sets the variable exported in the {} block of "for var in list {}" to nil (was: Adding a simpler duplication of the issue) Date: Sat, 28 Jan 2023 22:55:37 -0800 Message-ID: <5717092d-3dfc-ec95-fa22-2294ce611adc@gmail.com> References: <136fc764-48a4-4b03-c520-bd6ef16d9a50@gmail.com> <68ce6804-885d-01ce-2d37-461cd3aa33af@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------km0ZxLQR9oujGJl0Nq8po2qj" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31091"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 59469@debbugs.gnu.org To: Milan Zimmermann Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Jan 29 07:56:21 2023 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 1pM1bw-0007tz-6x for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 29 Jan 2023 07:56:20 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pM1bg-0002t7-NF; Sun, 29 Jan 2023 01:56:04 -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 1pM1bf-0002st-MV for bug-gnu-emacs@gnu.org; Sun, 29 Jan 2023 01:56:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pM1bf-0002P6-2n for bug-gnu-emacs@gnu.org; Sun, 29 Jan 2023 01:56:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pM1be-0007dS-IT for bug-gnu-emacs@gnu.org; Sun, 29 Jan 2023 01:56:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 29 Jan 2023 06:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 59469 X-GNU-PR-Package: emacs Original-Received: via spool by 59469-submit@debbugs.gnu.org id=B59469.167497534929327 (code B ref 59469); Sun, 29 Jan 2023 06:56:02 +0000 Original-Received: (at 59469) by debbugs.gnu.org; 29 Jan 2023 06:55:49 +0000 Original-Received: from localhost ([127.0.0.1]:42092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pM1bQ-0007cw-FM for submit@debbugs.gnu.org; Sun, 29 Jan 2023 01:55:49 -0500 Original-Received: from mail-pf1-f172.google.com ([209.85.210.172]:43728) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pM1bN-0007ch-KT for 59469@debbugs.gnu.org; Sun, 29 Jan 2023 01:55:47 -0500 Original-Received: by mail-pf1-f172.google.com with SMTP id u5so5441484pfm.10 for <59469@debbugs.gnu.org>; Sat, 28 Jan 2023 22:55:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=tqcCOYgiUgg/DYKxfdn1y9fOsBSrJ+fgw3nPMxuwxaY=; b=nbxBAMjPJRQ4Vd5szs7RyMR4T0Kc8KSQ7oODjtwZsmuPRk+Kn6Txfdyp4WQQ1VfYyF 3ye4SzP18kd34GYGgEiTte9O5ED+DBp9MEjB9qbr8zZr03bo8rDGP15mYU5SU8B5wroD O/nt8Wd5m67uTCDwR8pHAKHRTtdauCpNlErEKuJ7DSjO48Rx/+yGaIUxzi+sGgpS0mHK CoNC168O2pEFMR+c0vu6eW+HeMIPcuJTZbXIUfAM511VSJRF4EtdckKKiEokbm97OwCH BjlZbGoLplb9mFjmp2GXZk30q6Cd+Yvx/D0EDbos/xW4pVp4dRfL3jUrBWKa7IE51TEZ XZ+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=tqcCOYgiUgg/DYKxfdn1y9fOsBSrJ+fgw3nPMxuwxaY=; b=YdQ24j8eV0nBN29Yxaeu8xng9zkHOEfrXZwsqdVGSRJjFyKqye5qkUenKY6xv09hrW QP3WNimm4CSaterok1eo8KZKLf1/cmA07+LCEsGQFIFXxUr4NSGRRu4C3DYw/Ev9fENi 1i8Zcr/edsstEDfa9ya0ODHPC2Yq6KBBmpsFYkWab/aSNjIkjB5nI01+ZytEieX5qSMn WEmSlM1bSnvALKtXKv2ybUzvTEQaR/SB+f5fvfywr+ysr8q22pDZ0iV7f+N8JWm9cbyL CMPUgFL5xIp51RZHhxOTJhPqunEHljl5kaMMUcnhuAdz8owdWeuO+eYNHoDJeN0Tv4I0 VX5A== X-Gm-Message-State: AO0yUKXF/9cUnzKFpEU4nhkO7R0PWwQAkchElFH59hLpjg+Bez7neNwb 1ch+UKY2CXa4s0PmguwKc+4= X-Google-Smtp-Source: AK7set9MEvPD5hcxPriosGhJRDwzbo3ffoUOUD8KvQNRDwVKwU5mzqncTqlo+zzWNAzphblNOkxtng== X-Received: by 2002:a05:6a00:3685:b0:593:bc80:2d36 with SMTP id dw5-20020a056a00368500b00593bc802d36mr70362pfb.18.1674975339552; Sat, 28 Jan 2023 22:55:39 -0800 (PST) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id t24-20020a62d158000000b005769b23260fsm3924708pfl.18.2023.01.28.22.55.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 28 Jan 2023 22:55:39 -0800 (PST) Content-Language: en-US In-Reply-To: <68ce6804-885d-01ce-2d37-461cd3aa33af@gmail.com> 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:254332 Archived-At: This is a multi-part message in MIME format. --------------km0ZxLQR9oujGJl0Nq8po2qj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit (Restoring the original subject so this issue is hopefully easier to track.) On 1/24/2023 5:39 PM, Jim Porter wrote: > The fix here is that when we're inside a 'let' and see 'eshell-defer' > get thrown, update the let-bindings in place. So now the updated form > would look like: > >   (let ((process-environment (cons "var=value" process-environment))) >     '"value"   ; Not really necessary, but it doesn't hurt anything. >     (eshell-external-command "grep") >     (eshell/echo (getenv "var"))) > > And so with this, it all works. Here's an updated patch with an improved comment introducing Eshell's iterative evaluation. Hopefully the added detail will help anyone else who looks into this code (assuming I haven't replaced it with threads or generator.el's CPS machinery by then, of course!). Note: I have a few other patches to apply after this that should let 'eshell-do-eval' handle "normal" Emacs Lisp for the most part. This will make it easier to maintain all the code that generates Eshell's internal forms, as well as simplifying the migration to threads and/or generator.el. I'll file those separately though, since this is tricky code, and I want to be sure each change gets a reasonable amount of attention. --------------km0ZxLQR9oujGJl0Nq8po2qj Content-Type: text/plain; charset=UTF-8; name="0001-Ensure-that-deferred-commands-don-t-make-Eshell-forg.patch" Content-Disposition: attachment; filename*0="0001-Ensure-that-deferred-commands-don-t-make-Eshell-forg.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmMTI3YzczNWM1NDkxOWY5MzNkMzllZjJiNjI1MDgwYzBiNzU2YTA0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFR1ZSwgMjQgSmFuIDIwMjMgMTc6MTQ6NTQgLTA4MDAKU3ViamVjdDogW1BB VENIIDEvNF0gRW5zdXJlIHRoYXQgZGVmZXJyZWQgY29tbWFuZHMgZG9uJ3QgbWFrZSBFc2hl bGwgZm9yZ2V0CiBsZXQtYm91bmQgdmFsdWVzCgoqIGxpc3AvZXNoZWxsL2VzaC1jbWQuZWwg KENvbW1hbmQgZXZhbHVhdGlvbiBtYWNyb3MpOiBFeHBhbmQgdGhpcwpkb2N1bWVudGF0aW9u IHRvIGxpc3QgYWxsb3dlZCBzcGVjaWFsIGZvcm1zIGFuZCBjYXZlYXRzIGZvciB3b3JraW5n CndpdGggJ2lmJyBhbmQgJ3doaWxlJy4KKGVzaGVsbC1kby1ldmFsKTogUHJvdmlkZSBtb3Jl IGRldGFpbCBpbiBkb2NzdHJpbmcuICBIYW5kbGUKJ2VzaGVsbC1kZWZlcicgaW5zaWRlICds ZXQnIGZvcm1zLgoKKiB0ZXN0L2xpc3AvZXNoZWxsL2VzaC1jbWQtdGVzdHMuZWwKKGVzaC1j bWQtdGVzdC9sZXQtcmViaW5kcy1hZnRlci1kZWZlcik6IE5ldyB0ZXN0IChidWcjNTk0Njkp LgotLS0KIGxpc3AvZXNoZWxsL2VzaC1jbWQuZWwgICAgICAgICAgICB8IDc5ICsrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0KIHRlc3QvbGlzcC9lc2hlbGwvZXNoLWNtZC10ZXN0 cy5lbCB8IDE3ICsrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwg MTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9lc2hlbGwvZXNoLWNtZC5lbCBi L2xpc3AvZXNoZWxsL2VzaC1jbWQuZWwKaW5kZXggOTljM2Q3ZjYyN2QuLjk2NTE5NzI0ZGQ1 IDEwMDY0NAotLS0gYS9saXNwL2VzaGVsbC9lc2gtY21kLmVsCisrKyBiL2xpc3AvZXNoZWxs L2VzaC1jbWQuZWwKQEAgLTc0MSwxOCArNzQxLDI0IEBAIGVzaGVsbC1zZXBhcmF0ZS1jb21t YW5kcwogOzsgVGhlIHN0cnVjdHVyZSBvZiB0aGUgZm9sbG93aW5nIG1hY3JvcyBpcyB2ZXJ5 IGltcG9ydGFudCB0bwogOzsgYGVzaGVsbC1kby1ldmFsJyBbSXRlcmF0aXZlIGV2YWx1YXRp b25dOgogOzsKLTs7IEAgRG9uJ3QgdXNlIGZvcm1zIHRoYXQgY29uZGl0aW9uYWxseSBldmFs dWF0ZSB0aGVpciBhcmd1bWVudHMsIHN1Y2gKLTs7ICAgYXMgYHNldHEnLCBgaWYnLCBgd2hp bGUnLCBgbGV0KicsIGV0Yy4gIFRoZSBvbmx5IHNwZWNpYWwgZm9ybXMKLTs7ICAgdGhhdCBj YW4gYmUgdXNlZCBhcmUgYGxldCcsIGBjb25kaXRpb24tY2FzZScgYW5kCi07OyAgIGB1bndp bmQtcHJvdGVjdCcuCis7OyBAIERvbid0IHVzZSBzcGVjaWFsIGZvcm1zIHRoYXQgY29uZGl0 aW9uYWxseSBldmFsdWF0ZSB0aGVpcgorOzsgICBhcmd1bWVudHMsIHN1Y2ggYXMgYGxldCon LCB1bmxlc3MgRXNoZWxsIGV4cGxpY2l0bHkgc3VwcG9ydHMKKzs7ICAgdGhlbS4gIEVzaGVs bCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHNwZWNpYWwgZm9ybXM6IGBjYXRjaCcsCis7OyAg IGBjb25kaXRpb24tY2FzZScsIGBpZicsIGBsZXQnLCBgcHJvZzEnLCBgcHJvZ24nLCBgcXVv dGUnLCBgc2V0cScsCis7OyAgIGB1bndpbmQtcHJvdGVjdCcsIGFuZCBgd2hpbGUnLgogOzsK LTs7IEAgVGhlIG1haW4gYm9keSBvZiBhIGBsZXQnIGNhbiBjb250YWluIG9ubHkgb25lIGZv cm0uICBVc2UgYHByb2duJwotOzsgICBpZiBuZWNlc3NhcnkuCis7OyBAIFdoZW4gdXNpbmcg YGlmJyBvciBgd2hpbGUnLCBmaXJzdCBsZXQtYmluZCBgZXNoZWxsLXRlc3QtYm9keScgYW5k Cis7OyAgIGBlc2hlbGwtY29tbWFuZC1ib2R5JyB0byAnKG5pbCkuICBFc2hlbGwgdXNlcyB0 aGVzZSB2YXJpYWJsZXMgdG8KKzs7ICAgaGFuZGxlIGNvbmRpdGlvbmFsIGV2YWx1YXRpb24u CiA7OwogOzsgQCBUaGUgdHdvIGBzcGVjaWFsJyB2YXJpYWJsZXMgYXJlIGBlc2hlbGwtY3Vy cmVudC1oYW5kbGVzJyBhbmQKIDs7ICAgYGVzaGVsbC1jdXJyZW50LXN1YmpvYi1wJy4gIEJp bmQgdGhlbSBsb2NhbGx5IHdpdGggYSBgbGV0JyBpZiB5b3UKIDs7ICAgbmVlZCB0byBjaGFu Z2UgdGhlbS4gIENoYW5nZSB0aGVtIGRpcmVjdGx5IG9ubHkgaWYgeW91ciBpbnRlbnRpb24K IDs7ICAgaXMgdG8gY2hhbmdlIHRoZSBjYWxsaW5nIGVudmlyb25tZW50LgorOzsKKzs7IFRo ZXNlIHJ1bGVzIGxpa2V3aXNlIGFwcGx5IHRvIGFueSBvdGhlciBjb2RlIHRoYXQgZ2VuZXJh dGVzIGZvcm1zCis7OyB0aGF0IGBlc2hlbGwtZG8tZXZhbCcgd2lsbCBldmFsdWF0ZWQsIHN1 Y2ggYXMgY29tbWFuZCByZXdyaXRpbmcKKzs7IGhvb2tzIChzZWUgYGVzaGVsbC1yZXdyaXRl LWNvbW1hbmQtaG9vaycgYW5kIGZyaWVuZHMpLgogCiAoZGVmbWFjcm8gZXNoZWxsLWRvLXN1 YmpvYiAob2JqZWN0KQogICAiRXZhbHVhdGUgYSBjb21tYW5kIE9CSkVDVCBhcyBhIHN1Ympv Yi4KQEAgLTEwOTUsOSArMTEwMSwxNyBAQCBlc2hlbGwtbWFuaXB1bGF0ZQogICAgICAgIChl c2hlbGwtZGVidWctY29tbWFuZCAsKGNvbmNhdCAiZG9uZSAiIChldmFsIHRhZykpIGZvcm0p KSkpCiAKIChkZWZ1biBlc2hlbGwtZG8tZXZhbCAoZm9ybSAmb3B0aW9uYWwgc3luY2hyb25v dXMtcCkKLSAgIkV2YWx1YXRlIGZvcm0sIHNpbXBsaWZ5aW5nIGl0IGFzIHdlIGdvLgorICAi RXZhbHVhdGUgRk9STSwgc2ltcGxpZnlpbmcgaXQgYXMgd2UgZ28uCiBVbmxlc3MgU1lOQ0hS T05PVVMtUCBpcyBub24tbmlsLCB0aHJvd3MgYGVzaGVsbC1kZWZlcicgaWYgaXQgbmVlZHMg dG8KLWJlIGZpbmlzaGVkIGxhdGVyIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIGFuIGFzeW5j aHJvbm91cyBzdWJwcm9jZXNzLiIKK2JlIGZpbmlzaGVkIGxhdGVyIGFmdGVyIHRoZSBjb21w bGV0aW9uIG9mIGFuIGFzeW5jaHJvbm91cyBzdWJwcm9jZXNzLgorCitBcyB0aGlzIGZ1bmN0 aW9uIGV2YWx1YXRlcyBGT1JNLCBpdCB3aWxsIGdyYWR1YWxseSByZXBsYWNlCitzdWJmb3Jt cyB3aXRoIHRoZSAocXVvdGVkKSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGVtLiAgRm9yCitl eGFtcGxlLCBhIGZ1bmN0aW9uIGNhbGwgaXMgcmVwbGFjZWQgd2l0aCB0aGUgcmVzdWx0IG9m IHRoZSBjYWxsLgorVGhpcyBhbGxvd3MgdXMgdG8gcmVzdW1lIGV2YWx1YXRpb24gb2YgRk9S TSBhZnRlciBzb21ldGhpbmcKK2luc2lkZSB0aHJvd3MgYGVzaGVsbC1kZWZlcicgc2ltcGx5 IGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbgorYWdhaW4uICBBbnkgZm9ybXMgcHJlY2VkaW5n IG9uZSB0aGF0IHRocm93IGBlc2hlbGwtZGVmZXInIHdpbGwKK2hhdmUgYmVlbiByZXBsYWNl ZCBieSBjb25zdGFudHMuIgogICAoY29uZAogICAgKChub3QgKGxpc3RwIGZvcm0pKQogICAg IChsaXN0ICdxdW90ZSAoZXZhbCBmb3JtKSkpCkBAIC0xMTYxLDIxICsxMTc1LDQ4IEBAIGVz aGVsbC1kby1ldmFsCiAJKHNldGNhciAoY2RyIGFyZ3MpIChlc2hlbGwtZG8tZXZhbCAoY2Fk ciBhcmdzKSBzeW5jaHJvbm91cy1wKSkKIAkoZXZhbCBmb3JtKSkKICAgICAgICAoKGVxIChj YXIgZm9ybSkgJ2xldCkKLQkoaWYgKG5vdCAoZXEgKGNhciAoY2FkciBhcmdzKSkgJ2VzaGVs bC1kby1ldmFsKSkKLQkgICAgKGVzaGVsbC1tYW5pcHVsYXRlICJldmFsdWF0aW5nIGxldCBh cmdzIgotCSAgICAgIChkb2xpc3QgKGxldGFyZyAoY2FyIGFyZ3MpKQotCQkoaWYgKGFuZCAo bGlzdHAgbGV0YXJnKQotCQkJIChub3QgKGVxIChjYWRyIGxldGFyZykgJ3F1b3RlKSkpCi0J CSAgICAoc2V0Y2RyIGxldGFyZwotCQkJICAgIChsaXN0IChlc2hlbGwtZG8tZXZhbAotCQkJ CSAgIChjYWRyIGxldGFyZykgc3luY2hyb25vdXMtcCkpKSkpKSkKKyAgICAgICAgKHdoZW4g KG5vdCAoZXEgKGNhciAoY2FkciBhcmdzKSkgJ2VzaGVsbC1kby1ldmFsKSkKKyAgICAgICAg ICAoZXNoZWxsLW1hbmlwdWxhdGUgImV2YWx1YXRpbmcgbGV0IGFyZ3MiCisgICAgICAgICAg ICAoZG9saXN0IChsZXRhcmcgKGNhciBhcmdzKSkKKyAgICAgICAgICAgICAgKHdoZW4gKGFu ZCAobGlzdHAgbGV0YXJnKQorICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxIChj YWRyIGxldGFyZykgJ3F1b3RlKSkpCisgICAgICAgICAgICAgICAgKHNldGNkciBsZXRhcmcK KyAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IChlc2hlbGwtZG8tZXZhbAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjYWRyIGxldGFyZykgc3luY2hyb25vdXMtcCkp KSkpKSkKICAgICAgICAgKGNsLXByb2d2Ci0gICAgICAgICAgICAobWFwY2FyIChsYW1iZGEg KGJpbmRpbmcpIChpZiAoY29uc3AgYmluZGluZykgKGNhciBiaW5kaW5nKSBiaW5kaW5nKSkK KyAgICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAoYmluZGluZykKKyAgICAgICAgICAgICAg ICAgICAgICAoaWYgKGNvbnNwIGJpbmRpbmcpIChjYXIgYmluZGluZykgYmluZGluZykpCiAg ICAgICAgICAgICAgICAgICAgIChjYXIgYXJncykpCiAgICAgICAgICAgICA7OyBUaGVzZSBl eHByZXNzaW9ucyBzaG91bGQgYWxsIGJlIGNvbnN0YW50cyBub3cuCi0gICAgICAgICAgICAo bWFwY2FyIChsYW1iZGEgKGJpbmRpbmcpIChpZiAoY29uc3AgYmluZGluZykgKGV2YWwgKGNh ZHIgYmluZGluZykpKSkKKyAgICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAoYmluZGluZykK KyAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoY29uc3AgYmluZGluZykgKGV2YWwgKGNh ZHIgYmluZGluZykpKSkKICAgICAgICAgICAgICAgICAgICAgKGNhciBhcmdzKSkKLQkgIChl c2hlbGwtZG8tZXZhbCAobWFjcm9leHAtcHJvZ24gKGNkciBhcmdzKSkgc3luY2hyb25vdXMt cCkpKQorICAgICAgICAgIChsZXQgKGRlZmVycmVkIHJlc3VsdCkKKyAgICAgICAgICAgIDs7 IEV2YWx1YXRlIHRoZSBgbGV0JyBib2R5LCBjYXRjaGluZyBgZXNoZWxsLWRlZmVyJyBzbyB3 ZQorICAgICAgICAgICAgOzsgY2FuIGhhbmRsZSBpdCBiZWxvdy4KKyAgICAgICAgICAgIChz ZXRxIGRlZmVycmVkCisgICAgICAgICAgICAgICAgICAoY2F0Y2ggJ2VzaGVsbC1kZWZlcgor ICAgICAgICAgICAgICAgICAgICAoaWdub3JlIChzZXRxIHJlc3VsdCAoZXNoZWxsLWRvLWV2 YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNyb2V4 cC1wcm9nbiAoY2RyIGFyZ3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3luY2hyb25vdXMtcCkpKSkpCisgICAgICAgICAgICA7OyBJZiBzb21ldGhp bmcgdGhyZXcgYGVzaGVsbC1kZWZlcicsIHdlIG5lZWQgdG8gdXBkYXRlCisgICAgICAgICAg ICA7OyB0aGUgbGV0LWJpbmRpbmdzJyB2YWx1ZXMgc28gdGhhdCB0aG9zZSB2YWx1ZXMgYXJl CisgICAgICAgICAgICA7OyBjb3JyZWN0IHdoZW4gd2UgcmVzdW1lIGV2YWx1YXRpb24gb2Yg dGhpcyBmb3JtLgorICAgICAgICAgICAgKHdoZW4gZGVmZXJyZWQKKyAgICAgICAgICAgICAg KGVzaGVsbC1tYW5pcHVsYXRlICJyZWJpbmRpbmcgbGV0IGFyZ3MgYWZ0ZXIgYGVzaGVsbC1k ZWZlciciCisgICAgICAgICAgICAgICAgKGxldCAoKGJpbmRpbmdzIChjYXIgYXJncykpKQor ICAgICAgICAgICAgICAgICAgKHdoaWxlIGJpbmRpbmdzCisgICAgICAgICAgICAgICAgICAg IChsZXQgKChiaW5kaW5nIChpZiAoY29uc3AgKGNhciBiaW5kaW5ncykpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FhciBiaW5kaW5ncykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGJpbmRpbmdzKSkpKQorICAgICAg ICAgICAgICAgICAgICAgIChzZXRjYXIgYmluZGluZ3MKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsaXN0IGJpbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsaXN0ICdxdW90ZSAoc3ltYm9sLXZhbHVlIGJpbmRpbmcpKSkpKQorICAgICAg ICAgICAgICAgICAgICAocG9wIGJpbmRpbmdzKSkpKQorICAgICAgICAgICAgICAodGhyb3cg J2VzaGVsbC1kZWZlciBkZWZlcnJlZCkpCisgICAgICAgICAgICA7OyBJZiB3ZSBnZXQgaGVy ZSwgdGhlcmUgd2FzIG5vIGBlc2hlbGwtZGVmZXInIHRocm93biwgc28KKyAgICAgICAgICAg IDs7IGp1c3QgcmV0dXJuIHRoZSBgbGV0JyBib2R5J3MgcmVzdWx0LgorICAgICAgICAgICAg cmVzdWx0KSkpCiAgICAgICAgKChtZW1xIChjYXIgZm9ybSkgJyhjYXRjaCBjb25kaXRpb24t Y2FzZSB1bndpbmQtcHJvdGVjdCkpCiAJOzsgYGNvbmRpdGlvbi1jYXNlJyBhbmQgYHVud2lu ZC1wcm90ZWN0JyBoYXZlIHRvIGJlCiAJOzsgaGFuZGxlZCBzcGVjaWFsbHksIGJlY2F1c2Ug d2Ugb25seSB3YW50IHRvIGNhbGwKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9lc2hlbGwvZXNo LWNtZC10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9lc2hlbGwvZXNoLWNtZC10ZXN0cy5lbAppbmRl eCBiY2VjYzlhNTMxZi4uOTQ3NjM5NTQ2MjIgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9lc2hl bGwvZXNoLWNtZC10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvZXNoZWxsL2VzaC1jbWQtdGVz dHMuZWwKQEAgLTczLDYgKzczLDIzIEBAIGVzaC1jbWQtdGVzdC9zdWJjb21tYW5kLWxpc3AK IGUuZy4gXCJ7KCsgMSAyKX0gM1wiID0+IDMiCiAgIChlc2hlbGwtY29tbWFuZC1yZXN1bHQt ZXF1YWwgInsoKyAxIDIpfSAzIiAzKSkKIAorKGVydC1kZWZ0ZXN0IGVzaC1jbWQtdGVzdC9s ZXQtcmViaW5kcy1hZnRlci1kZWZlciAoKQorICAiVGVzdCB0aGF0IGxldC1ib3VuZCB2YWx1 ZXMgYXJlIHByb3Blcmx5IHVwZGF0ZWQgYWZ0ZXIgYGVzaGVsbC1kZWZlcicuCitXaGVuIGlu c2lkZSBhIGBsZXQnIGJsb2NrIGluIGFuIEVzaGVsbCBjb21tYW5kIGZvcm0sIHdlIG5lZWQg dG8KK2Vuc3VyZSB0aGF0IGRlZmVycmVkIGNvbW1hbmRzIHVwZGF0ZSBhbnkgbGV0LWJvdW5k IHZhcmlhYmxlcyBzbwordGhleSBoYXZlIHRoZSBjb3JyZWN0IHZhbHVlcyB3aGVuIHJlc3Vt aW5nIGV2YWx1YXRpb24uICBTZWUKK2J1ZyM1OTQ2OS4iCisgIChza2lwLXVubGVzcyAoZXhl Y3V0YWJsZS1maW5kICJlY2hvIikpCisgICh3aXRoLXRlbXAtZXNoZWxsCisgICAoZXNoZWxs LW1hdGNoLWNvbW1hbmQtb3V0cHV0CisgICAgKGNvbmNhdCAieyIKKyAgICAgICAgICAgICIg IGV4cG9ydCBMT0NBTD12YWx1ZTsgIgorICAgICAgICAgICAgIiAgZWNobyBcIiRMT0NBTFwi OyAiCisgICAgICAgICAgICAiICAqZWNobyBleHRlcm5hbDsgIiAgICAgICAgOyBUaGlzIHdp bGwgdGhyb3cgYGVzaGVsbC1kZWZlcicuCisgICAgICAgICAgICAiICBlY2hvIFwiJExPQ0FM XCI7ICIKKyAgICAgICAgICAgICJ9IikKKyAgICAidmFsdWVcbmV4dGVybmFsXG52YWx1ZVxu IikpKQorCiAMCiA7OyBMaXNwIGZvcm1zCiAKLS0gCjIuMjUuMQoK --------------km0ZxLQR9oujGJl0Nq8po2qj--