From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id kIItENM3pWKHMwEAbAwnHQ (envelope-from ) for ; Sun, 12 Jun 2022 02:48:19 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id sNVHD9M3pWKecQAAG6o9tA (envelope-from ) for ; Sun, 12 Jun 2022 02:48:19 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 7652D1AE3 for ; Sun, 12 Jun 2022 02:48:18 +0200 (CEST) Received: from localhost ([::1]:33278 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o0Bm5-0000Bl-1N for larch@yhetil.org; Sat, 11 Jun 2022 20:48:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60962) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o0BlR-0000A7-Hz for emacs-orgmode@gnu.org; Sat, 11 Jun 2022 20:47:37 -0400 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]:44951) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o0BlP-0007xB-Ai for emacs-orgmode@gnu.org; Sat, 11 Jun 2022 20:47:37 -0400 Received: by mail-lf1-x136.google.com with SMTP id w20so3791818lfa.11 for ; Sat, 11 Jun 2022 17:47:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vicarious-living-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=SmEd1/0s/JrV2/C0HfqYqFplMB72p7GVGGK3RLnefeE=; b=CXwsxBsa96be+RbBEIpIu+BGqg+2ZswY7g4ROs1NhhIJoQKgm/44Y9eBPKD97nhwUh sCVtwj5nwm1U3LCoFFd/etwgEzZuoBBhZAquyTfrYwW+jYJEi6GZ5pzoxAcQ53IkIaff dVefirZHOZwK7ZYh5pWxCMSbcoU2TJVULJw0D3YEXRmgxCWCVbjfPeu79dTFv8uxl66h so6nZSKB73Zbe52d0UtNvmb6oLpTimLr8RWKzMIoHIT2EHCBO4npPOQUdAOnBKEG2awR m+qQgjdGBnRmAi/pl2qr8p8XB4tRxH2MgnQghUZWnSzxCs2HfQRy/ctpSHoQKUsI5w9e IEww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=SmEd1/0s/JrV2/C0HfqYqFplMB72p7GVGGK3RLnefeE=; b=kGMqNbN6qi6NzxFMjbn3qK7fL0J/sgM1LZUR7+dzARs+71zCmmR6UpAlcbc4tHB5EF pQR2tWvCnh4HEwLfh5m/2l39Dbe0+c3i4u//vPo49sEmiT2o1E6OjPxw9zufS7kv7i1S mc8/WzaRp5OZ50uZt5FS5jRGw6vpQbek87zTcHSAEqsdYlmdoErbF/llfFPIUCvdOBQ+ B7TikiifRwRQT9EdFJJoh9/cIPMYMDOr5kwBDj9NvK6Rk50rJfPEcxXUjduQruab8Pxv QpaMIRqcQbT+7kwIaxiykV/NuvG5YGzRcAFq1yd4D3FTz2AIhhYPCxtfOwywRyZmVH4x jP4w== X-Gm-Message-State: AOAM533fpGEepWIf5scTXKY9t8AqY6X/JZQUxS2z2iJihLXT0qvNrwdU gQPAni+zC1FdvQSHjXqzUtPEcwFi10jE8IdyXP8Ijw== X-Google-Smtp-Source: ABdhPJzoRfhgbeU7OMpyopq5w77LXYdL7FGE7rYC90K7ko44k6cr4DXl8p1TTGjGPRp4tVyTa7/8thFW0oKpLJG4SwI= X-Received: by 2002:a19:9158:0:b0:479:1a8:31fb with SMTP id y24-20020a199158000000b0047901a831fbmr34870161lfj.211.1654994852834; Sat, 11 Jun 2022 17:47:32 -0700 (PDT) MIME-Version: 1.0 References: <981938.1630590273@apollo2.minshall.org> <87czpqjqvw.fsf@localhost> <87zgkey55y.fsf@localhost> <8735i5u039.fsf@localhost> <87h74rq0ql.fsf@localhost> <87czffbc0r.fsf@localhost> In-Reply-To: <87czffbc0r.fsf@localhost> From: Ryan Scott Date: Sat, 11 Jun 2022 17:47:21 -0700 Message-ID: Subject: Re: [PATCH] Re: New source block results option for attaching file to node To: Ihor Radchenko Cc: numbchild@gmail.com, Greg Minshall , Timothy , emacs-orgmode@gnu.org Content-Type: multipart/mixed; boundary="0000000000004f856905e13584de" Received-SPF: none client-ip=2a00:1450:4864:20::136; envelope-from=ryan@vicarious-living.com; helo=mail-lf1-x136.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1654994899; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=b4uXUWApCBfulWTMEkdLde/jWpPbUtaCc++p2XxP1pk=; b=WFNNPwHTECj5ZHbd71p6H0+RGtAY3anTF/cbZ+FCEcSxsKO0+iu7iVUtcgbF4snu6HYCf9 2YquJqDgtLOomGOGU5X9wgpytmcCK8O5jMJ0gq/nomVUFR9pxhN4qPJr1K4jYhIdBLfcnz M4P4VeCd1sUKj687kJqLwzw2de3X6YGVaK/ST4K1cr/NuNZES5hYgeL/hogVn2LtKAk9ZM ZncLZpMSAGb6W2HeNAtW2TOEGSn3CsqRDXpLgohyLYAalEdltEjO9Q551k7RMNJ6j0g6kl eBz1Mt89OYR5Xc+5P6b8gQELOcmzRd30NZ75+XyprXAd+/zL/UIGpbUO22Z7Pg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1654994899; a=rsa-sha256; cv=none; b=JiFmXFN5k5uzvI/QgrQr9jF6XMeLChHyG3deR1xkm1wJy30Jo5NVereTspbR18zhtqiOpL rHQAoFPfRjq6DjCVdYOVnbDqi50WQz1jRFiUXiY1F2ElAUBmNqSn4/fmHiFLVdhqlCn5ys C3llpqfozbqkKDTNHC9kBqFMSAz+oYSV0uXp1ix11sxjUM4YXx17/e33s54a4j97ZHqiY+ dSTNd++cqRn14vQP5qam28+ms2s4T9pxjaMnLKn2w9NDiYTxg6yZOSlWL5SYFpWNlrbIK1 QdyheYDIPDmSNZ9iw5/3wMo0/4kmAzR5M5LI6C21js40kiI6A2hZfgFEt4iJHg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=vicarious-living-com.20210112.gappssmtp.com header.s=20210112 header.b=CXwsxBsa; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 0.62 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=vicarious-living-com.20210112.gappssmtp.com header.s=20210112 header.b=CXwsxBsa; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 7652D1AE3 X-Spam-Score: 0.62 X-Migadu-Scanner: scn1.migadu.com X-TUID: lfO5KrRvIB0W --0000000000004f856905e13584de Content-Type: multipart/alternative; boundary="0000000000004f856705e13584dc" --0000000000004f856705e13584dc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Ah sorry about that. I'm on a windows laptop and didn't have make, so was testing interactively and they were passing. I cleaned that up and remove the f-* usage and verified under Ubuntu (on WSL) that the new tests are passing. I was getting some failures with unrelated tests, but also get those in master as well. Unless I'm missing something it looks like test-ob-core/dir-mkdirp covers most other :dir usage. I've remove the ID creation altogether and throw an error if org-attach-dir is nil at that point. The error directs the user to add :ID: or :DIR: and we don't need to do any guessing on their behalf. Implicit ID creation should likely live elsewhere anyway. On Sat, Jun 11, 2022 at 5:49 AM Ihor Radchenko wrote: > Ryan Scott writes: > > > Had no experience with the :DIR: property or writing unit tests for Org= , > > but I think I've got both covered now. > > The ID creation prompting now only happens if there is no result from > > org-attach-dir, which should address the :DIR: case. > > Thanks! > > > Let me know if there's anything about those tests that I should modify. > > Yeah. They do not pass, currently... > You can try yourself by running make test from Org git directory. > > >> > + ((or '(:dir . attach) '(:dir . "'attach")) > >> > + (unless (org-id-get) > >> > + (if (or noninteractive (y-or-n-p (format "Create ID fo= r > >> entry \"%s\"?" > >> > + > (org-get-heading > >> t t t t)))) > >> > + (org-id-get-create) > >> > + (error "Can't attach to entry \"%s\". Entry has no I= D" > >> > + (org-get-heading t t t t)))) > > Unconditional ID creation for noninteractive is a bad idea. It is safer > to throw an error. > > This code also generates warnings: > > > In end of data: > ob-core.el:2788:21: Warning: the function =E2=80=98org-id-get-create=E2= =80=99 is not known > to > be defined. > ob-core.el:2787:58: Warning: the function =E2=80=98org-get-heading=E2=80= =99 is not known > to be > defined. > ob-core.el:2785:23: Warning: the function =E2=80=98org-id-get=E2=80=99 is= not known to be > defined. > ob-core.el:2792:38: Warning: the function =E2=80=98org-attach-dir=E2=80= =99 is not known to > be > defined. > > Note that not all the ideas use org-id. Hence, `org-id-get-create' may > not be available during runtime. Adding (require 'org-id) is not a good > idea either (there will be other side-effects). So, if org-id is not > loaded, it will be better to just throw an error. > > > +(ert-deftest test-ob-core/dir-attach () > > + "Test :dir header using special 'attach value" > > + (should > > + (org-test-with-temp-text-in-file > > + "* Symbol > > +#+begin_src elisp :dir 'attach :results file > > +(f-write-text \"attachment testing\" 'utf-8 \"test.txt\") > > f-write-text requires f.el, which is external packages. You cannot use > it. > > Also, while you are here, you can as well add tests for other possible > :dir settings. > > Best, > Ihor > --0000000000004f856705e13584dc Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Ah sorry about that. I'm on a windows laptop and didn&= #39;t have make, so was testing interactively and they were passing.
I = cleaned that up and remove the f-* usage and verified under Ubuntu (on WSL)= that the new tests are passing. I was getting some failures with unrelated= =C2=A0tests, but also get those in master as well.

Unless I'm missing something it looks like=C2=A0test-ob-core/dir-mkdir= p covers most other :dir usage.

I've remove th= e ID creation altogether and throw an error if org-attach-dir is nil at tha= t point. The error directs the user to add :ID: or :DIR: and we don't n= eed to do any guessing on their behalf. Implicit ID creation should likely = live elsewhere anyway.


On Sat, Jun 11, 2022 at 5:49= AM Ihor Radchenko <yantar92@gmail.com> wrote:
Ryan Scott <ryan@vicarious-living.com> writes:

> Had no experience with the :DIR: property or writing unit tests for Or= g,
> but I think I've got both covered now.
> The ID creation prompting now only happens if there is no result from<= br> > org-attach-dir, which should address the :DIR: case.

Thanks!

> Let me know if there's anything about those tests that I should mo= dify.

Yeah. They do not pass, currently...
You can try yourself by running make test from Org git directory.

>> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((or '(:dir . attach)= '(:dir . "'attach"))
>> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(unless (org-id-get= )
>> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(if (or noni= nteractive (y-or-n-p (format "Create ID for
>> entry \"%s\"?"
>> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (org-get-heading >> t t t t))))
>> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(org-id-get-create)
>> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(erro= r "Can't attach to entry \"%s\". Entry has no ID" >> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 (org-get-heading t t t t))))

Unconditional ID creation for noninteractive is a bad idea. It is safer
to throw an error.

This code also generates warnings:


In end of data:
ob-core.el:2788:21: Warning: the function =E2=80=98org-id-get-create=E2=80= =99 is not known to
=C2=A0 =C2=A0 be defined.
ob-core.el:2787:58: Warning: the function =E2=80=98org-get-heading=E2=80=99= is not known to be
=C2=A0 =C2=A0 defined.
ob-core.el:2785:23: Warning: the function =E2=80=98org-id-get=E2=80=99 is n= ot known to be
=C2=A0 =C2=A0 defined.
ob-core.el:2792:38: Warning: the function =E2=80=98org-attach-dir=E2=80=99 = is not known to be
=C2=A0 =C2=A0 defined.

Note that not all the ideas use org-id. Hence, `org-id-get-create' may<= br> not be available during runtime. Adding (require 'org-id) is not a good=
idea either (there will be other side-effects). So, if org-id is not
loaded, it will be better to just throw an error.

> +(ert-deftest test-ob-core/dir-attach ()
> +=C2=A0 "Test :dir header using special 'attach value" > +=C2=A0 (should
> +=C2=A0 =C2=A0(org-test-with-temp-text-in-file
> +=C2=A0 =C2=A0 "* Symbol
> +<point>#+begin_src elisp :dir 'attach :results file
> +(f-write-text \"attachment testing\" 'utf-8 \"test= .txt\")

f-write-text requires f.el, which is external packages. You cannot use
it.

Also, while you are here, you can as well add tests for other possible
:dir settings.

Best,
Ihor
--0000000000004f856705e13584dc-- --0000000000004f856905e13584de Content-Type: application/octet-stream; name="org-src-block-results-attach-dir.patch" Content-Disposition: attachment; filename="org-src-block-results-attach-dir.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l4ak75ac0 RnJvbSAxOGRmMThiZjVjODI1MWY5MDBiY2IwNmRiMGJkY2E3ODZhZTVkMzU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSeWFuIFNjb3R0IDxyeWFuQDVwbUNhc3VhbC5jb20+CkRhdGU6 IEZyaSwgMTAgSnVuIDIwMjIgMDA6MDE6MzcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBvYi1jb3Jl LmVsL2JhYmVsOiBTcGVjaWFsIGhhbmRsaW5nIGZvciBhdHRhY2htZW50IGxpbmtzIGluCiBzcmMg YmxvY2sKCiogb2ItY29yZS5lbCAob3JnLWJhYmVsLW1lcmdlLXBhcmFtcyk6IFNwZWNpZnlpbmcg dGhlIHN5bWJvbCAnYXR0YWNoYApvciBzdHJpbmcgIidhdHRhY2giIGFzIHRoZSB2YWx1ZSBvZiB0 aGUgYDpkaXInIGhlYWRlciBub3cgZnVuY3Rpb25zIGFzCiI6ZGlyIChvcmctYXR0YWNoLWRpciBu aWwgdCkgOm1rZGlycCB0Igoob3JnLWJhYmVsLXJlc3VsdC10by1maWxlKTogT3B0aW9uYWwgYFRZ UEUnIGFyZ3VtZW50IGFjY2VwdHMgc3ltYm9sCidhdHRhY2htZW50YCB0byBmaXh1cCB1cCBwYXRo cyB1bmRlciBgKG9yZy1hdHRhY2gtZGlyKScgYW5kIHVzZSB0aGUKbGluayB0eXBlICJhdHRhY2ht ZW50OiIgd2hlbiB0aGF0IGlzIGRldGVjdGVkLgoob3JnLWJhYmVsLWluc2VydC1yZXN1bHQpOiBQ YXNzIHN5bWJvbCBgYXR0YWNobWVudCcgYXMgYFRZUEUnIHRvCmBvcmctYmFiZWwtcmVzdWx0LXRv LWZpbGUnCiogb3JnLWF0dGFjaC5lbCAob3JnLWF0dGFjaC1kaXIpOiBBZGRlZCBhdXRvbG9hZCBo ZWFkZXIgdG8gc2ltcGxpZnkKZGVwZW5kZW5jaWVzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IHRoaXMg ZmVhdHVyZSAoY2FsbGVkIGluCmBvcmctYmFiZWwtbWVyZ2UtcGFyYW1zJykuCiogdGVzdC1vYi5l bCAodGVzdC1vYi1jb3JlL2Rpci1hdHRhY2gpOiBBZGRlZCB1bml0IHRlc3QgZm9yIG5ldyBhdHRh Y2gKZmVhdHVyZQotLS0KIGRvYy9vcmctbWFudWFsLm9yZyAgICAgIHwgIDYgKysrKwogZXRjL09S Ry1ORVdTICAgICAgICAgICAgfCAgNyArKysrCiBsaXNwL29iLWNvcmUuZWwgICAgICAgICB8IDcz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBsaXNwL29yZy1hdHRh Y2guZWwgICAgICB8ICAxICsKIHRlc3RpbmcvbGlzcC90ZXN0LW9iLmVsIHwgNjYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0 aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL29yZy1tYW51YWwub3Jn IGIvZG9jL29yZy1tYW51YWwub3JnCmluZGV4IDMyYTQ1Zjg4NC4uNWY5YjMzNTNiIDEwMDY0NAot LS0gYS9kb2Mvb3JnLW1hbnVhbC5vcmcKKysrIGIvZG9jL29yZy1tYW51YWwub3JnCkBAIC0xNzU0 MSw2ICsxNzU0MSwxMiBAQCBkaXJlY3Rvcnkgd2l0aCB7e3trYmQoTS14IGNkIFJFVCBESVJFQ1RP UlkpfX19LCBhbmQgdGhlbiBub3Qgc2V0dGluZwogPWRpcj0uICBVbmRlciB0aGUgc3VyZmFjZSwg PWRpcj0gc2ltcGx5IHNldHMgdGhlIHZhbHVlIG9mIHRoZSBFbWFjcwogdmFyaWFibGUgfmRlZmF1 bHQtZGlyZWN0b3J5fi4gIFNldHRpbmcgPW1rZGlycD0gaGVhZGVyIGFyZ3VtZW50IHRvCiBhIG5v bi1+bmlsfiB2YWx1ZSBjcmVhdGVzIHRoZSBkaXJlY3RvcnksIGlmIG5lY2Vzc2FyeS4KK1NldHRp bmcgPWRpcj0gdG8gdGhlIHN5bWJvbCB+YXR0YWNofiBvciB0aGUgc3RyaW5nIH4iJ2F0dGFjaCJ+ IHdpbGwKK3NldCA9ZGlyPSB0byB0aGUgZGlyZWN0b3J5IHJldHVybmVkIGJ5IH4ob3JnLWF0dGFj aC1kaXIpfiwgc2V0ID06bWtkaXIKK3llcz0sIGFuZCBpbnNlcnQgYW55IGZpbGUgcGF0aHMsIGFz IHdoZW4gdXNpbmcgPTpyZXN1bHRzIGZpbGU9LCB3aGljaAorYXJlIHVuZGVyIHRoZSBub2RlJ3Mg YXR0YWNobWVudCBkaXJlY3RvcnkgdXNpbmcgPWF0dGFjaG1lbnQ6PSBsaW5rcworaW5zdGVhZCBv ZiB0aGUgdXN1YWwgPWZpbGU6PSBsaW5rcy4gQW55IHJldHVybmVkIHBhdGggb3V0c2lkZSBvZiB0 aGUKK2F0dGFjaG1lbnQgZGlyZWN0b3J5IHdpbGwgdXNlID1maWxlOj0gbGlua3MgYXMgcGVyIHVz dWFsLgogCiBGb3IgZXhhbXBsZSwgdG8gc2F2ZSB0aGUgcGxvdCBmaWxlIGluIHRoZSA9V29yay89 IGZvbGRlciBvZiB0aGUgaG9tZQogZGlyZWN0b3J5LS0tbm90aWNlIHRpbGRlIGlzIGV4cGFuZGVk OgpkaWZmIC0tZ2l0IGEvZXRjL09SRy1ORVdTIGIvZXRjL09SRy1ORVdTCmluZGV4IDM1YWY5NGY5 Mi4uMGM4ODM3OGQ2IDEwMDY0NAotLS0gYS9ldGMvT1JHLU5FV1MKKysrIGIvZXRjL09SRy1ORVdT CkBAIC03OTUsNiArNzk1LDEzIEBAIEZpbmFsbHksIHRoZSBjbG9zdXJlcyBhcmUgb25seSBldmFs dWF0ZWQgaWYgdGhleSdyZSBub3Qgb3ZlcnJpZGRlbiBmb3IKIGEgc291cmNlIGJsb2NrLiBUaGlz IGltcHJvdmVzIGVmZmljaWVuY3kgaW4gY2FzZXMgd2hlcmUgdGhlIHJlc3VsdCBvZgogYSBjb21w dXRlLWV4cGVuc2l2ZSBjbG9zdXJlIHdvdWxkIG90aGVyd2lzZSBiZSBkaXNjYXJkZWQuCiAKKyoq KiBOZXcgc3BlY2lhbCB2YWx1ZSB+J2F0dGFjaH4gZm9yIHNyYyBibG9jayA9OmRpcj0gb3B0aW9u CisKK1Bhc3NpbmcgdGhlIHN5bWJvbCB+YXR0YWNofiBvciBzdHJpbmcgPSInYXR0YWNoIj0gKHdp dGggcXVvdGVzKSB0byB0aGUgPTpkaXI9CitvcHRpb24gb2YgYSBzcmMgYmxvY2sgaXMgbm93IGVx dWl2YWxlbnQgdG8gPTpkaXIgKG9yZy1hdHRhY2gtZGlyKSA6bWtkaXIgeWVzPQorYW5kIGFueSBm aWxlIHJlc3VsdHMgd2l0aCBhIHBhdGggZGVzY2VuZGVkIGZyb20gdGhlIGF0dGFjaG1lbnQgZGly ZWN0b3J5IHdpbGwKK3VzZSA9YXR0YWNobWVudDo9IHN0eWxlIGxpbmtzIGluc3RlYWQgb2YgdGhl IHN0YW5kYXJkID1maWxlOj0gbGluayB0eXBlLgorCiAqKiBNaXNjZWxsYW5lb3VzCiAqKiogPW9y Zy1iaWJ0ZXg9IGluY2x1ZGVzID1kb2k9IGFuZCA9dXJsPSBlbnRyaWVzIHdoZW4gZXhwb3J0aW5n IHRvIEJpQlRlWAogPWRvaT0gYW5kID11cmw9IGVudHJpZXMgaGF2ZSBiZWVuIG1hZGUgb3B0aW9u YWwgZm9yIHNvbWUgcHVibGljYXRpb24KZGlmZiAtLWdpdCBhL2xpc3Avb2ItY29yZS5lbCBiL2xp c3Avb2ItY29yZS5lbAppbmRleCAwOWQ2YWRmZTAuLjFiNzgwZWU3OCAxMDA2NDQKLS0tIGEvbGlz cC9vYi1jb3JlLmVsCisrKyBiL2xpc3Avb2ItY29yZS5lbApAQCAtODAxLDcgKzgwMSw4IEBAIGJs b2NrLiIKIAkJICAgIChsZXQgKCgqdGhpcyogKGlmIChub3QgZmlsZSkgcmVzdWx0CiAJCQkJICAg IChvcmctYmFiZWwtcmVzdWx0LXRvLWZpbGUKIAkJCQkgICAgIGZpbGUKLQkJCQkgICAgIChvcmct YmFiZWwtLWZpbGUtZGVzYyBwYXJhbXMgcmVzdWx0KSkpKSkKKwkJCQkgICAgIChvcmctYmFiZWwt LWZpbGUtZGVzYyBwYXJhbXMgcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdhdHRhY2htZW50KSkpKQogCQkgICAgICAoc2V0cSByZXN1bHQgKG9yZy1iYWJlbC1y ZWYtcmVzb2x2ZSBwb3N0KSkKIAkJICAgICAgKHdoZW4gZmlsZQogCQkJKHNldHEgcmVzdWx0LXBh cmFtcyAocmVtb3ZlICJmaWxlIiByZXN1bHQtcGFyYW1zKSkpKSkpCkBAIC0yMjk4LDExICsyMjk5 LDE0IEBAIElORk8gbWF5IHByb3ZpZGUgdGhlIHZhbHVlcyBvZiB0aGVzZSBoZWFkZXIgYXJndW1l bnRzIChpbiB0aGUKICAgKGNvbmQgKChzdHJpbmdwIHJlc3VsdCkKIAkgKHNldHEgcmVzdWx0IChv cmctbm8tcHJvcGVydGllcyByZXN1bHQpKQogCSAod2hlbiAobWVtYmVyICJmaWxlIiByZXN1bHQt cGFyYW1zKQotCSAgIChzZXRxIHJlc3VsdCAob3JnLWJhYmVsLXJlc3VsdC10by1maWxlCi0JCQkg cmVzdWx0Ci0JCQkgKG9yZy1iYWJlbC0tZmlsZS1kZXNjIChudGggMiBpbmZvKSByZXN1bHQpKSkp KQorCSAgIChzZXRxIHJlc3VsdAorICAgICAgICAgICAgICAgICAob3JnLWJhYmVsLXJlc3VsdC10 by1maWxlCisJCSAgcmVzdWx0CisJCSAgKG9yZy1iYWJlbC0tZmlsZS1kZXNjIChudGggMiBpbmZv KSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAnYXR0YWNobWVudCkpKSkKIAkoKGxpc3RwIHJl c3VsdCkpCiAJKHQgKHNldHEgcmVzdWx0IChmb3JtYXQgIiVTIiByZXN1bHQpKSkpCisKICAgKGlm IChhbmQgcmVzdWx0LXBhcmFtcyAobWVtYmVyICJzaWxlbnQiIHJlc3VsdC1wYXJhbXMpKQogICAg ICAgKHByb2duIChtZXNzYWdlIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIiUiICIlJSIgKGZv cm1hdCAiJVMiIHJlc3VsdCkpKQogCSAgICAgcmVzdWx0KQpAQCAtMjYwNSwyNyArMjYwOSw0MyBA QCBpbiB0aGUgYnVmZmVyLiIKIAkJIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbiAyKSkKIAkgICAg IChwb2ludCkpKSkpKQogCi0oZGVmdW4gb3JnLWJhYmVsLXJlc3VsdC10by1maWxlIChyZXN1bHQg Jm9wdGlvbmFsIGRlc2NyaXB0aW9uKQorKGRlZnVuIG9yZy1iYWJlbC1yZXN1bHQtdG8tZmlsZSAo cmVzdWx0ICZvcHRpb25hbCBkZXNjcmlwdGlvbiB0eXBlKQogICAiQ29udmVydCBSRVNVTFQgaW50 byBhbiBPcmcgbGluayB3aXRoIG9wdGlvbmFsIERFU0NSSVBUSU9OLgogSWYgdGhlIGBkZWZhdWx0 LWRpcmVjdG9yeScgaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnRhaW5pbmcKLWZpbGUncyBkaXJl Y3RvcnkgdGhlbiBleHBhbmQgcmVsYXRpdmUgbGlua3MuIgorZmlsZSdzIGRpcmVjdG9yeSB0aGVu IGV4cGFuZCByZWxhdGl2ZSBsaW5rcy4KKworSWYgdGhlIG9wdGlvbmFsIFRZUEUgaXMgcGFzc2Vk IGFzICdhdHRhY2htZW50YCBhbmQgdGhlIHBhdGggaXMgYQorZGVzY2VuZGFudCBvZiB0aGUgREVG QVVMVC1ESVJFQ1RPUlksIHRoZSBnZW5lcmF0ZWQgbGluayB3aWxsIGJlCitzcGVjaWZpZWQgYXMg YW4gYW4gXCJhdHRhY2htZW50OlwiIHN0eWxlIGxpbmsiCiAgICh3aGVuIChzdHJpbmdwIHJlc3Vs dCkKLSAgICAobGV0ICgoc2FtZS1kaXJlY3Rvcnk/Ci0JICAgKGFuZCAoYnVmZmVyLWZpbGUtbmFt ZSAoYnVmZmVyLWJhc2UtYnVmZmVyKSkKLQkJKG5vdCAoc3RyaW5nPSAoZXhwYW5kLWZpbGUtbmFt ZSBkZWZhdWx0LWRpcmVjdG9yeSkKLQkJCSAgICAgIChleHBhbmQtZmlsZS1uYW1lCi0JCQkgICAg ICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkKLQkJCSAgICAgICAgKGJ1ZmZlci1maWxlLW5hbWUgKGJ1 ZmZlci1iYXNlLWJ1ZmZlcikpKSkpKSkpKQotICAgICAgKGZvcm1hdCAiW1tmaWxlOiVzXSVzXSIK LQkgICAgICAoaWYgKGFuZCBkZWZhdWx0LWRpcmVjdG9yeQotCQkgICAgICAgKGJ1ZmZlci1maWxl LW5hbWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikpIHNhbWUtZGlyZWN0b3J5PykKLQkJICAoaWYgKGVx IG9yZy1saW5rLWZpbGUtcGF0aC10eXBlICdhZGFwdGl2ZSkKLQkJICAgICAgKGZpbGUtcmVsYXRp dmUtbmFtZQotCQkgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgcmVzdWx0IGRlZmF1bHQtZGlyZWN0 b3J5KQotCQkgICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkKLQkJCShidWZmZXItZmlsZS1uYW1l IChidWZmZXItYmFzZS1idWZmZXIpKSkpCi0JCSAgICAoZXhwYW5kLWZpbGUtbmFtZSByZXN1bHQg ZGVmYXVsdC1kaXJlY3RvcnkpKQotCQlyZXN1bHQpCisgICAgKGxldCogKChyZXN1bHQtZmlsZS1u YW1lIChleHBhbmQtZmlsZS1uYW1lIHJlc3VsdCkpCisgICAgICAgICAgIChiYXNlLWZpbGUtbmFt ZSAoYnVmZmVyLWZpbGUtbmFtZSAoYnVmZmVyLWJhc2UtYnVmZmVyKSkpCisgICAgICAgICAgIChi YXNlLWRpcmVjdG9yeSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBiYXNlLWZpbGUtbmFtZSkpCisgICAg ICAgICAgIChzYW1lLWRpcmVjdG9yeT8KKwkgICAgKGFuZCBiYXNlLWZpbGUtbmFtZQorCSAgICAg ICAgIChub3QgKHN0cmluZz0gKGV4cGFuZC1maWxlLW5hbWUgZGVmYXVsdC1kaXJlY3RvcnkpCisJ CQkgICAgICAgKGV4cGFuZC1maWxlLW5hbWUKKwkJCSAgICAgICAgYmFzZS1kaXJlY3RvcnkpKSkp KQorICAgICAgICAgICAocmVxdWVzdC1hdHRhY2htZW50IChlcSB0eXBlICdhdHRhY2htZW50KSkK KyAgICAgICAgICAgKGluLWF0dGFjaC1kaXIgKGFuZCByZXF1ZXN0LWF0dGFjaG1lbnQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXByZWZpeC1wCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQtZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdC1maWxlLW5hbWUpKSkpCisgICAgICAoZm9ybWF0ICJbWyVzOiVz XSVzXSIKKyAgICAgICAgICAgICAgKHBjYXNlIHR5cGUKKyAgICAgICAgICAgICAgICAoKGFuZCAn YXR0YWNobWVudCAoZ3VhcmQgaW4tYXR0YWNoLWRpcikpICJhdHRhY2htZW50IikKKyAgICAgICAg ICAgICAgICAoXyAiZmlsZSIpKQorICAgICAgICAgICAgICAoaWYgKGFuZCByZXF1ZXN0LWF0dGFj aG1lbnQgaW4tYXR0YWNoLWRpcikKKyAgICAgICAgICAgICAgICAgIChmaWxlLXJlbGF0aXZlLW5h bWUgcmVzdWx0LWZpbGUtbmFtZSkKKwkgICAgICAgIChpZiAoYW5kIGRlZmF1bHQtZGlyZWN0b3J5 CisJCSAgICAgICAgIGJhc2UtZmlsZS1uYW1lIHNhbWUtZGlyZWN0b3J5PykKKwkJICAgIChpZiAo ZXEgb3JnLWxpbmstZmlsZS1wYXRoLXR5cGUgJ2FkYXB0aXZlKQorCQkgICAgICAgIChmaWxlLXJl bGF0aXZlLW5hbWUKKwkJICAgICAgICAgcmVzdWx0LWZpbGUtbmFtZQorICAgICAgICAgICAgICAg ICAgICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5CisJCQkgIGJhc2UtZmlsZS1uYW1lKSkKKwkJ ICAgICAgcmVzdWx0LWZpbGUtbmFtZSkKKwkJICByZXN1bHQpKQogCSAgICAgIChpZiBkZXNjcmlw dGlvbiAoY29uY2F0ICJbIiBkZXNjcmlwdGlvbiAiXSIpICIiKSkpKSkKIAogKGRlZnVuIG9yZy1i YWJlbC1leGFtcGxpZnktcmVnaW9uIChiZWcgZW5kICZvcHRpb25hbCByZXN1bHRzLXN3aXRjaGVz IGlubGluZSkKQEAgLTI3NTYsMTAgKzI3NzYsMTcgQEAgcGFyYW1ldGVycyB3aGVuIG1lcmdpbmcg bGlzdHMuIgogCSAgIChzZXRxIGV4cG9ydHMgKGZ1bmNhbGwgbWVyZ2UKIAkJCQkgIGV4cG9ydHMt ZXhjbHVzaXZlLWdyb3VwcwogCQkJCSAgZXhwb3J0cwotCQkJCSAgKHNwbGl0LXN0cmluZworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcGxpdC1zdHJpbmcKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChhbmQgdmFsdWUgKGZ1bmN0aW9ucCB2YWx1 ZSkpIChmdW5jYWxsIHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHZhbHVlIHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodCAiIikpKSkpKQorICAgICAgICAgICgob3IgJyg6ZGlyIC4gYXR0YWNoKSAnKDpkaXIg LiAiJ2F0dGFjaCIpKQorICAgICAgICAgICAodW5sZXNzIChvcmctYXR0YWNoLWRpciBuaWwgdCkK KyAgICAgICAgICAgICAoZXJyb3IgIk5vIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGZvciBlbGVtZW50 IChhZGQgOklEOiBvciA6RElSOiBwcm9wZXJ0eSkiKSkKKyAgICAgICAgICAgKHNldHEgcGFyYW1z IChhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICBgKCg6ZGlyIC4gLChvcmctYXR0YWNo LWRpciBuaWwgdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoOm1rZGlycCAuICJ5ZXMi KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzcS1kZWxldGUtYWxsIDpkaXIgKGFzc3Et ZGVsZXRlLWFsbCA6bWtkaXIgcGFyYW1zKSkpKSkKIAkgIDs7IFJlZ3VsYXIga2V5d29yZHM6IGFu eSB2YWx1ZSBvdmVyd3JpdGVzIHRoZSBwcmV2aW91cyBvbmUuCiAJICAoXyAoc2V0cSBwYXJhbXMg KGNvbnMgcGFpciAoYXNzcS1kZWxldGUtYWxsIChjYXIgcGFpcikgcGFyYW1zKSkpKSkpKQogICAg IDs7IEhhbmRsZSBgOnZhcicgYW5kIGNsZWFyIG91dCBjb2xuYW1lcyBhbmQgcm93bmFtZXMgZm9y IHJlcGxhY2VkCmRpZmYgLS1naXQgYS9saXNwL29yZy1hdHRhY2guZWwgYi9saXNwL29yZy1hdHRh Y2guZWwKaW5kZXggNWVlMmI4NGIyLi42YTA2MWIyYjMgMTAwNjQ0Ci0tLSBhL2xpc3Avb3JnLWF0 dGFjaC5lbAorKysgYi9saXNwL29yZy1hdHRhY2guZWwKQEAgLTMyNCw2ICszMjQsNyBAQCBTaG93 cyBhIGxpc3Qgb2YgY29tbWFuZHMgYW5kIHByb21wdHMgZm9yIGFub3RoZXIga2V5IHRvIGV4ZWN1 dGUgYSBjb21tYW5kLiIKIAkgICAgKGNvbW1hbmQtZXhlY3V0ZSBjb21tYW5kKQogCSAgKGVycm9y ICJObyBzdWNoIGF0dGFjaG1lbnQgY29tbWFuZDogJWMiIGMpKSkpKSkKIAorOzs7IyMjYXV0b2xv YWQKIChkZWZ1biBvcmctYXR0YWNoLWRpciAoJm9wdGlvbmFsIGNyZWF0ZS1pZi1ub3QtZXhpc3Rz LXAgbm8tZnMtY2hlY2spCiAgICJSZXR1cm4gdGhlIGRpcmVjdG9yeSBhc3NvY2lhdGVkIHdpdGgg dGhlIGN1cnJlbnQgb3V0bGluZSBub2RlLgogRmlyc3QgY2hlY2sgZm9yIERJUiBwcm9wZXJ0eSwg dGhlbiBJRCBwcm9wZXJ0eS4KZGlmZiAtLWdpdCBhL3Rlc3RpbmcvbGlzcC90ZXN0LW9iLmVsIGIv dGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwKaW5kZXggYWEwNWY4N2EzLi5hNjJiZDU2YmYgMTAwNjQ0 Ci0tLSBhL3Rlc3RpbmcvbGlzcC90ZXN0LW9iLmVsCisrKyBiL3Rlc3RpbmcvbGlzcC90ZXN0LW9i LmVsCkBAIC0xNzcwLDYgKzE3NzAsNzIgQEAgbmlsCiAgICAgICAgICAgICAgICAgKGZpbGUtbW9k ZXMgInQuc2giKQogICAgICAgICAgICAgICAoZGVsZXRlLWZpbGUgInQuc2giKSkpKSkpCiAKKyhl cnQtZGVmdGVzdCB0ZXN0LW9iLWNvcmUvZGlyLWF0dGFjaCAoKQorICAiVGVzdCA6ZGlyIGhlYWRl ciB1c2luZyBzcGVjaWFsICdhdHRhY2ggdmFsdWUiCisgIChzaG91bGQKKyAgIChvcmctdGVzdC13 aXRoLXRlbXAtdGV4dC1pbi1maWxlCisgICAgIiogJ2F0dGFjaCBTeW1ib2wKKzxwb2ludD4jK2Jl Z2luX3NyYyBlbGlzcCA6ZGlyICdhdHRhY2ggOnJlc3VsdHMgZmlsZQorKHdpdGgtdGVtcC1maWxl IFwidGVzdC50eHRcIiAoaW5zZXJ0IFwiYXR0YWNobWVudCB0ZXN0aW5nXG5cIikpCitcInRlc3Qu dHh0XCIKKyMrZW5kX3NyYyIKKyAgICAob3JnLWlkLWdldC1jcmVhdGUpCisgICAgKG9yZy1iYWJl bC1leGVjdXRlLXNyYy1ibG9jaykKKyAgICAoZ290by1jaGFyIChvcmctYmFiZWwtd2hlcmUtaXMt c3JjLWJsb2NrLXJlc3VsdCkpCisgICAgKGZvcndhcmQtbGluZSkKKyAgICAoYW5kCisgICAgIChm aWxlLWV4aXN0cy1wIChmb3JtYXQgIiVzL3Rlc3QudHh0IiAob3JnLWF0dGFjaC1kaXIgbmlsIHQp KSkKKyAgICAgKHN0cmluZz0gKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQp IChsaW5lLWVuZC1wb3NpdGlvbikpCisgICAgICAgICAgICAgICJbW2F0dGFjaG1lbnQ6dGVzdC50 eHRdXSIpKSkpCisgIChzaG91bGQKKyAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dC1pbi1maWxl CisgICAgIiogJ2F0dGFjaCBTdHJpbmcKKzxwb2ludD4jK2JlZ2luX3NyYyBlbGlzcCA6ZGlyIFwi J2F0dGFjaFwiIDpyZXN1bHRzIGZpbGUKKyh3aXRoLXRlbXAtZmlsZSBcInRlc3QudHh0XCIgKGlu c2VydCBcImF0dGFjaG1lbnQgdGVzdGluZ1xuXCIpKQorXCJ0ZXN0LnR4dFwiCisjK2VuZF9zcmMi CisgICAgKG9yZy1pZC1nZXQtY3JlYXRlKQorICAgIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxv Y2spCisgICAgKGdvdG8tY2hhciAob3JnLWJhYmVsLXdoZXJlLWlzLXNyYy1ibG9jay1yZXN1bHQp KQorICAgIChmb3J3YXJkLWxpbmUpCisgICAgKGFuZAorICAgICAoZmlsZS1leGlzdHMtcCAoZm9y bWF0ICIlcy90ZXN0LnR4dCIgKG9yZy1hdHRhY2gtZGlyIG5pbCB0KSkpCisgICAgIChzdHJpbmc9 IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHBvaW50KSAobGluZS1lbmQtcG9zaXRp b24pKQorICAgICAgICAgICAgICAiW1thdHRhY2htZW50OnRlc3QudHh0XV0iKSkpKQorICAoc2hv dWxkCisgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQtaW4tZmlsZQorICAgICIqICdhdHRhY2gg d2l0aCBFeGlzdGluZyBESVIgcHJvcGVydHkKKzpQUk9QRVJUSUVTOgorOkRJUjogICAgICBjdXN0 b20tYXR0YWNoLWRpcgorOkVORDoKKworPHBvaW50PiMrYmVnaW5fc3JjIGVsaXNwIDpkaXIgJ2F0 dGFjaCA6cmVzdWx0cyBmaWxlCisod2l0aC10ZW1wLWZpbGUgXCJ0ZXN0LnR4dFwiIChpbnNlcnQg XCJhdHRhY2htZW50IHRlc3RpbmdcblwiKSkKK1widGVzdC50eHRcIgorIytlbmRfc3JjIgorICAg IChtZXNzYWdlICJESVI6ICVzIiAob3JnLWF0dGFjaC1kaXIgdCkpCisgICAgKG9yZy1iYWJlbC1l eGVjdXRlLXNyYy1ibG9jaykKKyAgICAoZ290by1jaGFyIChvcmctYmFiZWwtd2hlcmUtaXMtc3Jj LWJsb2NrLXJlc3VsdCkpCisgICAgKGZvcndhcmQtbGluZSkKKyAgICAoYW5kCisgICAgIChmaWxl LWV4aXN0cy1wIChmb3JtYXQgIiVzL3Rlc3QudHh0IiAob3JnLWF0dGFjaC1kaXIgbmlsIHQpKSkK KyAgICAgKHN0cmluZz0gKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIChs aW5lLWVuZC1wb3NpdGlvbikpCisgICAgICAgICAgICAgICJbW2F0dGFjaG1lbnQ6dGVzdC50eHRd XSIpKSkpCisgIChzaG91bGQtZXJyb3IKKyAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dC1pbi1m aWxlCisgICAgIiogJ2F0dGFjaCB3aXRoIG5vIElEIG9yIERJUgorPHBvaW50PiMrYmVnaW5fc3Jj IGVsaXNwIDpkaXIgJ2F0dGFjaCA6cmVzdWx0cyBmaWxlCisod2l0aC10ZW1wLWZpbGUgXCJ0ZXN0 LnR4dFwiIChpbnNlcnQgXCJhdHRhY2htZW50IHRlc3RpbmdcblwiKSkKK1widGVzdC50eHRcIgor IytlbmRfc3JjIgorICAgIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spCisgICAgKGdvdG8t Y2hhciAob3JnLWJhYmVsLXdoZXJlLWlzLXNyYy1ibG9jay1yZXN1bHQpKQorICAgIChmb3J3YXJk LWxpbmUpCisgICAgKGFuZAorICAgICAoZmlsZS1leGlzdHMtcCAoZm9ybWF0ICIlcy90ZXN0LnR4 dCIgKG9yZy1hdHRhY2gtZGlyIG5pbCB0KSkpCisgICAgIChzdHJpbmc9IChidWZmZXItc3Vic3Ry aW5nLW5vLXByb3BlcnRpZXMgKHBvaW50KSAobGluZS1lbmQtcG9zaXRpb24pKQorICAgICAgICAg ICAgICAiW1thdHRhY2htZW50OnRlc3QudHh0XV0iKSkpKSkKKwogKGVydC1kZWZ0ZXN0IHRlc3Qt b2ItY29yZS9kaXItbWtkaXJwICgpCiAgICJUZXN0IDpta2RpcnAgd2l0aCA6ZGlyIGhlYWRlciBj b21iaW5hdGlvbi4iCiAgIChzaG91bGQtbm90Ci0tIAoyLjMzLjAud2luZG93cy4yCgo= --0000000000004f856905e13584de--