From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:303:5f26::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id gKfrCiElnWW3TgAAkFu2QA (envelope-from ) for ; Tue, 09 Jan 2024 11:51:13 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id aPTcByElnWULXwEAqHPOHw (envelope-from ) for ; Tue, 09 Jan 2024 11:51:13 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=JOOMlnK9; 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"; dmarc=pass (policy=none) header.from=posteo.net ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1704797473; 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=HRbooSdNCXMIrqfIQxWiXJ0Yb6QpblWy5HlXVw0Ovuk=; b=EO205W+ZU0DwQl9BOepaM1WH6TFmZCUEwUtgv6I56qj/Bd/BaIaHONeuZHBc9zlMAi46o7 sulblKgPj6b48veeQLMuvEDAPlxJYpLDl0XdH6Mk3rHo8PvFc0vZxsnh3H/6rfy/VTZnQs RO+JLEjiYkNlJ+1zKqIpJOcTX9YglYoZQwCD/ox+8wYqZlUZwVjpmhvS+SVB5BQGwNP1Qz IcnWZGVVVlmbjOhn62Nk34OaU5HZ1SXMTjOtIoAwlBgfVWtZZde4yhiW5udJ2qTC33xPOK RbJr5qsh0lModKsd2+BbYUtysCw7tMf77DMBSVPgPoTQvbAllw6oCJmnlaJphg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1704797473; a=rsa-sha256; cv=none; b=FCLB9Jxd/7Zyv3dtyL5hb1Sjrphrw/NLlFdBXJKbeEUvK3jel6PpK3+/wFgPdhWaYyDfxI 6Rv+AjO3dBLI/PN0sMBWFo9UVE8SCcysE/QoiCx/b302kmwSTHBZ/0SHNNHbHUMFFBX0p/ r2CKckyhBKE49nyhwDmQy0YDiY8xLEj2Zzh/s/H6fecZcynCC9WowthWxKelBNhUJvQKNl +Z6Hp4ZYKIaH2hZj14sZeR8vcvhhIH/95uDQle3tA2HL0zbE8sVAam/wa1O9yLyTQ/C/0K MDFOJgoBWhhaw8I1Ow0lQXDboClzaFWVFZo0dllwKwCZtnM5N523Jfx9Ya7SPQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=JOOMlnK9; 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"; dmarc=pass (policy=none) header.from=posteo.net 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 BCAA113430 for ; Tue, 9 Jan 2024 11:51:12 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rN9gW-0008Di-9J; Tue, 09 Jan 2024 05:50:16 -0500 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 1rN9gP-0008BX-QW for emacs-orgmode@gnu.org; Tue, 09 Jan 2024 05:50:12 -0500 Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rN9gJ-0000Rj-Lx for emacs-orgmode@gnu.org; Tue, 09 Jan 2024 05:50:06 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 1862D240104 for ; Tue, 9 Jan 2024 11:50:00 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704797401; bh=4BAUZ6zJGNhHBI1hPhFNua/2M4zhH9/sWWMV4AvwCXE=; h=MIME-Version:Date:From:To:Cc:Subject:Message-ID:From; b=JOOMlnK93csIcKZn60PrTy0Dd/6gFqHVgaj8sI9e738/ipuDx7lyz/qCcI9CwzOs7 vpDzze1QRAMVx9y4k10jvl5JNbxy9Jgfv6PYeiqXNiAi27k8ga3OqXWw1qG40vbtvT j2lDKNmywERQTYyIz/cpwGvIj7CgM+B5ZiDHQS5HlSZ/BNpAZGZcJG5Z9DqLgIRva7 YUkdh/lySJRZ9QX6YEV0jzvrgIspSu3lL+4ZaPohIW/+cN27ItlLE71QpmvSRMgup4 vMnq1CJ245vOI8FKpM12LP6VFjqiGx+yuvUizWOdGcQLzPSBCD+RtUth0krwkP9oPH bve+uIsYYPr6Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T8SPN2r90z9rxP; Tue, 9 Jan 2024 11:50:00 +0100 (CET) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_4f2fb2ff0634d66f91b670583f593892" Date: Tue, 09 Jan 2024 10:50:00 +0000 From: gerard.vermeulen@posteo.net To: Ihor Radchenko Cc: Emacs orgmode , emacs-orgmode-bounces+gerard.vermeulen=posteo.net@gnu.org Subject: Re: [PATCH] org-babel-demarcate-block: split using element API In-Reply-To: References: <7e41f9b6e9026a404e256f33371e974c@posteo.net> <87zfxq78ff.fsf@localhost> <87zfxo3taa.fsf@localhost> <87v88a78qd.fsf@localhost> <7f23ea966f0f0aad3fad29b0b96864f3@posteo.net> <87y1d55fc6.fsf@localhost> <37fdcc4bfcf734c2e5ec439d40b4f7d8@posteo.net> <878r50yqmo.fsf@localhost> <442006329cfba666710c989aece5191a@posteo.net> Message-ID: <261356c53e857e0bc4b04f884366edfa@posteo.net> Received-SPF: pass client-ip=185.67.36.66; envelope-from=gerard.vermeulen@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, 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: 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-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -7.21 X-Spam-Score: -7.21 X-Migadu-Queue-Id: BCAA113430 X-Migadu-Scanner: mx12.migadu.com X-TUID: x2mdIlI4WPMg --=_4f2fb2ff0634d66f91b670583f593892 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 09.01.2024 08:49, gerard.vermeulen@posteo.net wrote: [...] >> Anyhow, I have removed the comment and I have replaced check below it >> with >> + (set-mark (point)) ;; To simplify the next (unless ...): >> + (unless (and (>= (point) body-beg) (<= (mark) body-end)) >> + (user-error "Select within the source block body to split >> it")) >> which also protects against having point in body and mark on or below >> #+end_src >> > It occurred to me to that I only should set mark to point when the > region is > not active. I will add checking for `user-error's to the ERT test. > Attached you'll find a new patch fixing the three wrong lines in the previous and now the ERT test checks also for `user-error's. Regards -- Gerard --=_4f2fb2ff0634d66f91b670583f593892 Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name=0001-org-babel-demarcate-block-split-using-element-API.patch Content-Disposition: attachment; filename=0001-org-babel-demarcate-block-split-using-element-API.patch; size=16080 RnJvbSAzNDdjMDc1MjVjMTlmM2ZhMmFhMWZjY2RmMzFiNWMxNTIxMzkwMTViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZXJhcmQgVmVybWV1bGVuIDxnZXJhcmQudmVybWV1bGVuQHBv c3Rlby5uZXQ+CkRhdGU6IFN1biwgNyBKYW4gMjAyNCAwOToxODozNiArMDEwMApTdWJqZWN0OiBb UEFUQ0hdIG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxvY2s6IHNwbGl0IHVzaW5nIGVsZW1lbnQgQVBJ CgoqIGxpc3Avb2ItYmFiZWwuZWwgKG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxvY2spOiBNb2RpZnkg YSBjb3B5Cm9mIChvcmctZWxlbWVudC1hdC1wb2ludCkgdG8gcmVwbGFjZSB0aGUgb2xkIHNvdXJj ZSBibG9jayB3aXRoIDIgb3IgMwpuZXcgbW9kaWZpZWQgY29waWVzIGJ5IG1lYW5zIG9mIGBvcmct ZWxlbWVudC1pbnRlcnByZXQtZGF0YScuICBUaGUgMXN0CnNvdXJjZSBibG9jayBjb250YWlucyB0 aGUgdGV4dCBmcm9tIHRoZSBib2R5IG9mIHRoZSBvbGQgYmxvY2sgYmVmb3JlCnBvaW50IG9yIHJl Z2lvbiwgdGhlIDJuZCBibG9jayBjb250YWlucyB0aGUgYm9keSB0ZXh0IGFmdGVyIHBvaW50IG9y CmJvZHkgdGV4dCB3aXRoaW4gcmVnaW9uLCBhbmQgaW4gY2FzZSBvZiByZWdpb24sIHRoZSAzcmQg YmxvY2sgY29udGFpbnMKdGhlIHRleHQgYWZ0ZXIgcmVnaW9uLiAgVGhlIGNhcHRpb24gYW5kIHRo ZSBuYW1lIGFyZSBkZWxldGVkIGZyb20gdGhlCjEgb3IgMiBibG9ja3MgYmVsb3cgdGhlIHVwcGVy IHNvdXJjZSBibG9jay4gIEluZGVudCBhbGwgYmxvY2tzCmltbWVkaWF0ZWx5IGFmdGVyIGluc2Vy dGlvbi4gIFRyeWluZyB0byBzcGxpdCB3aGVuIHBvaW50IGlzIGFib3ZlIHRoZQpib2R5IG9mIHRo ZSBvbGQgc291cmNlIGJsb2NrIHJhaXNlcyBhbiB1c2VyLWVycm9yLgoqIGxpc3Avb2ItYmFiZWwg KG9yZy1nZXQtc3JjLWJsb2NrLWluZm8pOiBhZGQgdGhlICJ3aXRoaW4gYmxhbmsgbGluZXMKYWZ0 ZXIgYSBzb3VyY2UgYmxvY2siIGNvbmRpdGlvbiB0byB0aGUgZG9jLXN0cmluZyB0byBtYXRjaCBp dCB3aXRoIHRoZQpkb2Mtc3RyaW5nIG9mIGFuZCBhIGNvbW1lbnQgaW4gYG9yZy1iYWJlbC1kZW1h cmNhdGUtYmxvY2snLgoqIHRlc3RpbmcvbGlzcC90ZXN0LW9iLmVsICh0ZXN0LW9iL2RlbWFyY2F0 ZS1ibG9jayk6IE5ldyB0ZXN0LiAgSXQKY2hlY2tzIHRlc3QgY2FzZXMgdGhhdCBicm9rZSBlYXJs aWVyIHZlcnNpb25zIG9mIHRoaXMgcGF0Y2guCi0tLQogbGlzcC9vYi1jb3JlLmVsICAgICAgICAg fCAgNjMgKysrKysrLS0tLS0tCiB0ZXN0aW5nL2xpc3AvdGVzdC1vYi5lbCB8IDIxMiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI0NyBp bnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL29iLWNvcmUu ZWwgYi9saXNwL29iLWNvcmUuZWwKaW5kZXggMWRlM2FmNmFkLi40ZGU4MmU3YTMgMTAwNjQ0Ci0t LSBhL2xpc3Avb2ItY29yZS5lbAorKysgYi9saXNwL29iLWNvcmUuZWwKQEAgLTczLDYgKzczLDcg QEAKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50LXBhcmVudCAib3JnLWVsZW1lbnQtYXN0 IiAobm9kZSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxlbWVudC10eXBlICJvcmctZWxlbWVu dC1hc3QiIChub2RlICZvcHRpb25hbCBhbm9ueW1vdXMpKQogKGRlY2xhcmUtZnVuY3Rpb24gb3Jn LWVsZW1lbnQtdHlwZS1wICJvcmctZWxlbWVudC1hc3QiIChub2RlICZvcHRpb25hbCB0eXBlcykp CisoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxlbWVudC1pbnRlcnByZXQtZGF0YSAib3JnLWVsZW1l bnQiIChkYXRhKSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbnRyeS1nZXQgIm9yZyIgKHBvbSBw cm9wZXJ0eSAmb3B0aW9uYWwgaW5oZXJpdCBsaXRlcmFsLW5pbCkpCiAoZGVjbGFyZS1mdW5jdGlv biBvcmctZXNjYXBlLWNvZGUtaW4tcmVnaW9uICJvcmctc3JjIiAoYmVnIGVuZCkpCiAoZGVjbGFy ZS1mdW5jdGlvbiBvcmctZm9yd2FyZC1oZWFkaW5nLXNhbWUtbGV2ZWwgIm9yZyIgKGFyZyAmb3B0 aW9uYWwgaW52aXNpYmxlLW9rKSkKQEAgLTcwMCw4ICs3MDEsOSBAQCBCeSBkZWZhdWx0LCBjb25z aWRlciB0aGUgYmxvY2sgYXQgcG9pbnQuICBIb3dldmVyLCB3aGVuIG9wdGlvbmFsCiBhcmd1bWVu dCBEQVRVTSBpcyBwcm92aWRlZCwgZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoYXQgcGFyc2Vk CiBvYmplY3QgaW5zdGVhZC4KIAotUmV0dXJuIG5pbCBpZiBwb2ludCBpcyBub3Qgb24gYSBzb3Vy Y2UgYmxvY2suICBPdGhlcndpc2UsIHJldHVybgotYSBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBw YXR0ZXJuOgorUmV0dXJuIG5pbCBpZiBwb2ludCBpcyBub3Qgb24gYSBzb3VyY2UgYmxvY2sgKGJs YW5rIGxpbmVzIGFmdGVyIGEKK3NvdXJjZSBibG9jayBhcmUgY29uc2lkZXJlZCBhIHBhcnQgb2Yg dGhhdCBzb3VyY2UgYmxvY2spLgorT3RoZXJ3aXNlLCByZXR1cm4gYSBsaXN0IHdpdGggdGhlIGZv bGxvd2luZyBwYXR0ZXJuOgogCiAgIChsYW5ndWFnZSBib2R5IGFyZ3VtZW50cyBzd2l0Y2hlcyBu YW1lIHN0YXJ0IGNvZGVyZWYpIgogICAobGV0KiAoKGRhdHVtIChvciBkYXR1bSAob3JnLWVsZW1l bnQtY29udGV4dCkpKQpAQCAtMjA1MSw3ICsyMDUzLDcgQEAgV2l0aCBvcHRpb25hbCBwcmVmaXgg YXJndW1lbnQgQVJHLCBqdW1wIGJhY2t3YXJkIEFSRyBtYW55IHNvdXJjZSBibG9ja3MuIgogICAg ICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDUpKSkpKQogCiAoZGVmdW4gb3JnLWJhYmVs LWRlbWFyY2F0ZS1ibG9jayAoJm9wdGlvbmFsIGFyZykKLSAgIldyYXAgb3Igc3BsaXQgdGhlIGNv ZGUgaW4gdGhlIHJlZ2lvbiBvciBvbiB0aGUgcG9pbnQuCisgICJXcmFwIG9yIHNwbGl0IHRoZSBj b2RlIGluIGFuIGFjdGl2ZSByZWdpb24gb3IgYXQgcG9pbnQuCiAKIFdpdGggcHJlZml4IGFyZ3Vt ZW50IEFSRywgYWxzbyBjcmVhdGUgYSBuZXcgaGVhZGluZyBhdCBwb2ludC4KIApAQCAtMjA2MSw0 MSArMjA2Myw0NiBAQCBpcyBjcmVhdGVkLiAgSW4gYm90aCBjYXNlcyBpZiB0aGUgcmVnaW9uIGlz IGRlbWFyY2F0ZWQgYW5kIGlmIHRoZQogcmVnaW9uIGlzIG5vdCBhY3RpdmUgdGhlbiB0aGUgcG9p bnQgaXMgZGVtYXJjYXRlZC4KIAogV2hlbiBjYWxsZWQgd2l0aGluIGJsYW5rIGxpbmVzIGFmdGVy IGEgY29kZSBibG9jaywgY3JlYXRlIGEgbmV3IGNvZGUKLWJsb2NrIG9mIHRoZSBzYW1lIGxhbmd1 YWdlIHdpdGggdGhlIHByZXZpb3VzLiIKK2Jsb2NrIG9mIHRoZSBzYW1lIGxhbmd1YWdlIGFzIHRo ZSBwcmV2aW91cy4iCiAgIChpbnRlcmFjdGl2ZSAiUCIpCiAgIChsZXQqICgoaW5mbyAob3JnLWJh YmVsLWdldC1zcmMtYmxvY2staW5mbyAnbm8tZXZhbCkpCiAJIChzdGFydCAob3JnLWJhYmVsLXdo ZXJlLWlzLXNyYy1ibG9jay1oZWFkKSkKICAgICAgICAgIDs7IGBzdGFydCcgd2lsbCBiZSBuaWwg d2hlbiB3aXRoaW4gc3BhY2UgbGluZXMgYWZ0ZXIgc3JjIGJsb2NrLgogCSAoYmxvY2sgKGFuZCBz dGFydCAobWF0Y2gtc3RyaW5nIDApKSkKLQkgKGhlYWRlcnMgKGFuZCBzdGFydCAobWF0Y2gtc3Ry aW5nIDQpKSkKKyAgICAgICAgIChib2R5LWJlZyAoYW5kIHN0YXJ0IChtYXRjaC1iZWdpbm5pbmcg NSkpKQorICAgICAgICAgKGJvZHktZW5kIChhbmQgc3RhcnQgKG1hdGNoLWVuZCA1KSkpCiAJIChz dGFycyAoY29uY2F0IChtYWtlLXN0cmluZyAob3IgKG9yZy1jdXJyZW50LWxldmVsKSAxKSA/Kikg IiAiKSkKIAkgKHVwcGVyLWNhc2UtcCAoYW5kIGJsb2NrCiAJCQkgICAgKGxldCAoY2FzZS1mb2xk LXNlYXJjaCkKIAkJCSAgICAgIChzdHJpbmctbWF0Y2gtcCAiI1xcK0JFR0lOX1NSQyIgYmxvY2sp KSkpKQogICAgIChpZiAoYW5kIGluZm8gc3RhcnQpIDs7IEF0IHNyYyBibG9jaywgYnV0IG5vdCB3 aXRoaW4gYmxhbmsgbGluZXMgYWZ0ZXIgaXQuCi0gICAgICAgIChtYXBjCi0gICAgICAgICAobGFt YmRhIChwbGFjZSkKLSAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCi0gICAgICAgICAgICAgKGdv dG8tY2hhciBwbGFjZSkKLSAgICAgICAgICAgICAobGV0ICgobGFuZyAobnRoIDAgaW5mbykpCi0g ICAgICAgICAgICAgICAgICAgKGluZGVudCAobWFrZS1zdHJpbmcgKG9yZy1jdXJyZW50LXRleHQt aW5kZW50YXRpb24pID9ccykpKQotCSAgICAgICAod2hlbiAoc3RyaW5nLW1hdGNoICJeW1s6c3Bh Y2U6XV0qJCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJz dHJpbmcgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZS1lbmQtcG9zaXRpb24pKSkKLSAgICAg ICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAobGlu ZS1lbmQtcG9zaXRpb24pKSkKLSAgICAgICAgICAgICAgIChpbnNlcnQgKGNvbmNhdAotCQkgICAg ICAgIChpZiAobG9va2luZy1hdCAiXiIpICIiICJcbiIpCi0JCSAgICAgICAgaW5kZW50IChpZiB1 cHBlci1jYXNlLXAgIiMrRU5EX1NSQ1xuIiAiIytlbmRfc3JjXG4iKQotCQkgICAgICAgIChpZiBh cmcgc3RhcnMgaW5kZW50KSAiXG4iCi0JCSAgICAgICAgaW5kZW50IChpZiB1cHBlci1jYXNlLXAg IiMrQkVHSU5fU1JDICIgIiMrYmVnaW5fc3JjICIpCi0JCSAgICAgICAgbGFuZwotCQkgICAgICAg IChpZiAoPiAobGVuZ3RoIGhlYWRlcnMpIDEpCi0JCQkgICAgKGNvbmNhdCAiICIgaGVhZGVycykg aGVhZGVycykKLQkJICAgICAgICAoaWYgKGxvb2tpbmctYXQgIltcblxyXSIpCi0JCQkgICAgIiIK LQkJCSAgKGNvbmNhdCAiXG4iIChtYWtlLXN0cmluZyAoY3VycmVudC1jb2x1bW4pID8gKSkpKSkp KQotCSAgIChtb3ZlLWVuZC1vZi1saW5lIDIpKQotICAgICAgICAgKHNvcnQgKGlmIChvcmctcmVn aW9uLWFjdGl2ZS1wKSAobGlzdCAobWFyaykgKHBvaW50KSkgKGxpc3QgKHBvaW50KSkpICMnPikp CisgICAgICAgIChsZXQqICgoY29weSAob3JnLWVsZW1lbnQtY29weSAob3JnLWVsZW1lbnQtYXQt cG9pbnQpKSkKKyAgICAgICAgICAgICAgIChiZWZvcmUgKG9yZy1lbGVtZW50LWJlZ2luIGNvcHkp KQorICAgICAgICAgICAgICAgKGJleW9uZCAob3JnLWVsZW1lbnQtZW5kIGNvcHkpKQorICAgICAg ICAgICAgICAgKHBhcnRzIChzb3J0IChpZiAob3JnLXJlZ2lvbi1hY3RpdmUtcCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgYm9keS1iZWcgKG1hcmspIChwb2ludCkgYm9k eS1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCBib2R5LWJlZyAocG9p bnQpIGJvZHktZW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJzwpKSkKKyAgICAg ICAgICA7OyBUbyBzaW1wbGlmeSB0aGUgKHVubGVzcyAuLi4gKHVzZXItZXJyb3IgLi4uKSkuCisg ICAgICAgICAgKHVubGVzcyAob3JnLXJlZ2lvbi1hY3RpdmUtcCkgKHNldC1tYXJrIChwb2ludCkp KQorICAgICAgICAgIDs7IFRlc3QgbWFyayB0byBiZSBtb3JlIHNwZWNpZmljIHRoYW4gIk5vdCBh dCBhIGJsb2NrIi4KKyAgICAgICAgICAodW5sZXNzIChhbmQgKD49IChwb2ludCkgYm9keS1iZWcp ICg8PSAobWFyaykgYm9keS1lbmQpKQorICAgICAgICAgICAgKHVzZXItZXJyb3IgIlNlbGVjdCB3 aXRoaW4gdGhlIHNvdXJjZSBibG9jayBib2R5IHRvIHNwbGl0IGl0IikpCisgICAgICAgICAgKHNl dHEgcGFydHMgKG1hcGNhciAobGFtYmRhIChwKSAoYnVmZmVyLXN1YnN0cmluZyAoY2FyIHApIChj ZHIgcCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlcS1tYXBuICMnY29ucyBw YXJ0cyAoY2RyIHBhcnRzKSkpKQorICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZm9yZSBiZXlv bmQpCisgICAgICAgICAgOzsgSW5zZXJ0IHRoZSAxc3QgYmxvY2suCisgICAgICAgICAgKG9yZy1l bGVtZW50LXB1dC1wcm9wZXJ0eSBjb3B5IDp2YWx1ZSAoY2FyIHBhcnRzKSkKKyAgICAgICAgICAo aW5zZXJ0IChvcmctZWxlbWVudC1pbnRlcnByZXQtZGF0YSBjb3B5KSkKKyAgICAgICAgICAob3Jn LWluZGVudC1ibG9jaykKKyAgICAgICAgICAob3JnLWVsZW1lbnQtcHV0LXByb3BlcnR5IGNvcHkg OmNhcHRpb24gbmlsKQorICAgICAgICAgIChvcmctZWxlbWVudC1wdXQtcHJvcGVydHkgY29weSA6 bmFtZSBuaWwpCisgICAgICAgICAgOzsgSW5zZXJ0IHRoZSAybmQgYmxvY2ssIGFuZCB0aGUgM3Jk IGJsb2NrIGlmIHRoZXJlIHdhcyBhbiBhY3RpdmUgcmVnaW9uLgorICAgICAgICAgIChkb2xpc3Qg KHBhcnQgKGNkciBwYXJ0cykpCisgICAgICAgICAgICAob3JnLWVsZW1lbnQtcHV0LXByb3BlcnR5 IGNvcHkgOnZhbHVlIHBhcnQpCisgICAgICAgICAgICAoaW5zZXJ0IChpZiBhcmcgKGNvbmNhdCBz dGFycyAiXG4iKSAiXG4iKSkKKyAgICAgICAgICAgIChpbnNlcnQgKG9yZy1lbGVtZW50LWludGVy cHJldC1kYXRhIGNvcHkpKQorICAgICAgICAgICAgKG9yZy1pbmRlbnQtYmxvY2spKSkKICAgICAg IChsZXQgKChzdGFydCAocG9pbnQpKQogCSAgICAobGFuZyAob3IgKGNhciBpbmZvKSA7IFJldXNl IGxhbmd1YWdlIGZyb20gcHJldmlvdXMgYmxvY2suCiAgICAgICAgICAgICAgICAgICAgICAgKGNv bXBsZXRpbmctcmVhZApkaWZmIC0tZ2l0IGEvdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwgYi90ZXN0 aW5nL2xpc3AvdGVzdC1vYi5lbAppbmRleCA0MmM3N2NhNTYuLjI1OTdmNzAzNyAxMDA2NDQKLS0t IGEvdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwKKysrIGIvdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwK QEAgLTI2LDYgKzI2LDIxOCBAQAogKHJlcXVpcmUgJ29yZy10YWJsZSkKIChldmFsLWFuZC1jb21w aWxlIChyZXF1aXJlICdjbC1saWIpKQogCisoZXJ0LWRlZnRlc3QgdGVzdC1vYi9kZW1hcmNhdGUt YmxvY2sgKCkKKyAgIlRlc3Qgc3BsaXR0aW5nIGFuZCB3cmFwcGluZyBieSBkZW1hcmNhdGlvbi4i CisgIDs7IFRlc3Qgc3BsaXR0aW5nIHdpdGggZHVwbGljYXRpb24gb2YgbGFuZ3VhZ2UsIGJvZHks IHN3aXRjaGVzLCBhbmQgaGVhZGVycy4KKyAgKGxldCAoKGNhcHRpb24gIiMrY2FwdGlvbjogY2Fw dGlvbi4iKQorICAgICAgICAocmVnZXhwIChyeCAiIytjYXB0aW9uOiBjYXB0aW9uLiIpKSkKKyAg ICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgKGZvcm1hdCAiCislcworIytoZWFkZXI6IDp2YXIg ZWRnZT1cImFsc28gZHVwbGljYXRlZFwiCisjK2hlYWRlcjogOndyYXAgXCJzcmMgYW55LXNwYW5p c2ggLW5cIgorIytuYW1lOiBOb2JvZHkKKyMrYmVnaW5fc3JjIGFueS1lbmdsaXNoIC1pIC1uIDp2 YXIgaGVyZT1cImR1cGxpY2F0ZWRcIiA6d3JhcCBcInNyYyBhbnktZW5nbGlzaCAtblwiCisKK2Fi b3ZlIHNwbGl0Cis8cG9pbnQ+CitiZWxvdyBzcGxpdAorCisjK2VuZF9zcmMKKyIgY2FwdGlvbikK KyAgICAgIChsZXQgKCh3cmFwLXZhbCAic3JjIGFueS1zcGFuaXNoIC1uIikgYWJvdmUgYmVsb3cg YXZhcnMgYnZhcnMpCisgICAgICAgIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrKQorICAgICAg ICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJs b2NrKSA7OyB1cHBlciBzb3VyY2UgYmxvY2sKKyAgICAgICAgKHNldHEgYWJvdmUgKG9yZy1iYWJl bC1nZXQtc3JjLWJsb2NrLWluZm8pKQorICAgICAgICAoc2V0cSBhdmFycyAob3JnLWJhYmVsLS1n ZXQtdmFycyAobnRoIDIgYWJvdmUpKSkKKyAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9j aykgOzsgbG93ZXIgc291cmNlIGJsb2NrCisgICAgICAgIChzZXRxIGJlbG93IChvcmctYmFiZWwt Z2V0LXNyYy1ibG9jay1pbmZvKSkKKyAgICAgICAgKHNldHEgYnZhcnMgKG9yZy1iYWJlbC0tZ2V0 LXZhcnMgKG50aCAyIGJlbG93KSkpCisgICAgICAgIDs7IGR1cGxpY2F0ZWQgbXVsdGktbGluZSBo ZWFkZXIgYXJndW1lbnRzOgorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbHNvIGR1cGxpY2F0 ZWQiIChjZHIgKGFzc3EgJ2VkZ2UgYXZhcnMpKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0g ImFsc28gZHVwbGljYXRlZCIgKGNkciAoYXNzcSAnZWRnZSBidmFycykpKSkKKyAgICAgICAgKHNo b3VsZCAoc3RyaW5nPSB3cmFwLXZhbCAoY2RyIChhc3NxIDp3cmFwIChudGggMiBhYm92ZSkpKSkp CisgICAgICAgIChzaG91bGQgKHN0cmluZz0gd3JhcC12YWwgKGNkciAoYXNzcSA6d3JhcCAobnRo IDIgYmVsb3cpKSkpKQorICAgICAgICA7OyBkdXBsaWNhdGVkIGxhbmd1YWdlLCBvdGhlciBoZWFk ZXIgYXJndW1lbnRzLCBhbmQgc3dpdGNoZXM6CisgICAgICAgIChzaG91bGQgKHN0cmluZz0gImFu eS1lbmdsaXNoIiAobnRoIDAgYWJvdmUpKSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiYW55 LWVuZ2xpc2giIChudGggMCBiZWxvdykpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhYm92 ZSBzcGxpdCIgKG9yZy10cmltIChudGggMSBhYm92ZSkpKSkKKyAgICAgICAgKHNob3VsZCAoc3Ry aW5nPSAiYmVsb3cgc3BsaXQiIChvcmctdHJpbSAobnRoIDEgYmVsb3cpKSkpCisgICAgICAgIChz aG91bGQgKHN0cmluZz0gImR1cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2hlcmUgYXZhcnMpKSkpCisg ICAgICAgIChzaG91bGQgKHN0cmluZz0gImR1cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2hlcmUgYnZh cnMpKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gIi1pIC1uIiAobnRoIDMgYWJvdmUpKSkK KyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiLWkgLW4iIChudGggMyBiZWxvdykpKQorICAgICAg ICA7OyBub24tZHVwbGljYXRpb24gb2YgbmFtZSBhbmQgY2FwdGlvbiwgd2hpY2ggaXMgbm90IGlu IGFib3ZlL2JlbG93LgorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJOb2JvZHkiIChudGggNCBh Ym92ZSkpKQorICAgICAgICAoc2hvdWxkLW5vdCAoc3RyaW5nPSAiIiAobnRoIDQgYmVsb3cpKSkK KyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKHNob3VsZCAocmUtc2Vh cmNoLWZvcndhcmQgcmVnZXhwKSkKKyAgICAgICAgKHNob3VsZC1ub3QgKHJlLXNlYXJjaC1mb3J3 YXJkIHJlZ2V4cCBuaWwgJ25vZXJyb3IpKSkpKQorICA7OyBUZXN0IHdyYXBwaW5nIHBvaW50IGlu IGJsYW5rIGxpbmVzIGJlbG93IHNvdXJjZSBibG9jaworICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRl eHQgIgorIytiZWdpbl9zcmMgYW55LWxhbmd1YWdlIC1pIC1uIDp2YXIgaGVyZT1cIm5vdCBkdXBs aWNhdGVkXCIKK3RvIHVwcGVyIGJsb2NrCisjK2VuZF9zcmMKKzxwb2ludD4KKyIKKyAgICAobGV0 IChpbmZvIHZhcnMpCisgICAgICAob3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jaykKKyAgICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrKQor ICAgICAgKHNldHEgaW5mbyAob3JnLWJhYmVsLWdldC1zcmMtYmxvY2staW5mbykpICA7OyB1cHBl ciBzb3VyY2UgYmxvY2sgaW5mbworICAgICAgKHNldHEgdmFycyAob3JnLWJhYmVsLS1nZXQtdmFy cyAobnRoIDIgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWxhbmd1YWdlIiAo bnRoIDAgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAidG8gdXBwZXIgYmxvY2siIChv cmctdHJpbSAobnRoIDEgaW5mbykpKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gIm5vdCBkdXBs aWNhdGVkIiAoY2RyIChhc3NxICdoZXJlIHZhcnMpKSkpCisgICAgICAoc2hvdWxkIChzdHJpbmc9 ICItaSAtbiIgKG50aCAzIGluZm8pKSkKKyAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sp CisgICAgICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkgOzsgbG93 ZXIgc291cmNlIGJsb2NrIGluZm8KKyAgICAgIChzZXRxIHZhcnMgKG9yZy1iYWJlbC0tZ2V0LXZh cnMgKG50aCAyIGluZm8pKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gImFueS1sYW5ndWFnZSIg KG50aCAwIGluZm8pKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gIiIgKG9yZy10cmltIChudGgg MSBpbmZvKSkpKQorICAgICAgKHNob3VsZC1ub3QgdmFycykKKyAgICAgIChzaG91bGQgKHN0cmlu Zz0gIiIgKG50aCAzIGluZm8pKSkpKQorICA7OyBUZXN0IHdyYXBwaW5nIHJlZ2lvbiBpbiBibGFu ayBsaW5lcyBiZWxvdyBzb3VyY2UgYmxvY2sKKyAgKGxldCAoKHJlZ2lvbi10ZXh0ICJtYXJrIHRo aXMgbGluZSBhcyByZWdpb24iKSkKKyAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgKGZvcm1h dCAiCisjK2JlZ2luX3NyYyBhbnktbGFuZ3VhZ2UgLWkgLW4gOnZhciBoZXJlPVwibm90IGR1cGxp Y2F0ZWRcIgordG8gdXBwZXIgYmxvY2sKKyMrZW5kX3NyYworCislcworIiByZWdpb24tdGV4dCkK KyAgICAgIChsZXQgKGluZm8gdmFycykKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkK KyAgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkIHJlZ2lvbi10ZXh0KQorICAgICAgICAoc2V0LW1h cmsgKHBvaW50KSkKKyAgICAgICAgKHByZXZpb3VzLWxpbmUpIDs7IGVuc3VyZSB0aGF0IHBvaW50 IGlzIG9uIGFuIGVtcHR5IGxpbmUuCisgICAgICAgIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2Nr KQorICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAob3JnLWJhYmVsLW5l eHQtc3JjLWJsb2NrKQorICAgICAgICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9j ay1pbmZvKSkgIDs7IHVwcGVyIHNvdXJjZSBibG9jayBpbmZvCisgICAgICAgIChzZXRxIHZhcnMg KG9yZy1iYWJlbC0tZ2V0LXZhcnMgKG50aCAyIGluZm8pKSkKKyAgICAgICAgKHNob3VsZCAoc3Ry aW5nPSAiYW55LWxhbmd1YWdlIiAobnRoIDAgaW5mbykpKQorICAgICAgICAoc2hvdWxkIChzdHJp bmc9ICJ0byB1cHBlciBibG9jayIgKG9yZy10cmltIChudGggMSBpbmZvKSkpKQorICAgICAgICAo c2hvdWxkIChzdHJpbmc9ICJub3QgZHVwbGljYXRlZCIgKGNkciAoYXNzcSAnaGVyZSB2YXJzKSkp KQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICItaSAtbiIgKG50aCAzIGluZm8pKSkKKyAgICAg ICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jaykKKyAgICAgICAgKHNldHEgaW5mbyAob3JnLWJh YmVsLWdldC1zcmMtYmxvY2staW5mbykpIDs7IGxvd2VyIHNvdXJjZSBibG9jayBpbmZvCisgICAg ICAgIChzZXRxIHZhcnMgKG9yZy1iYWJlbC0tZ2V0LXZhcnMgKG50aCAyIGluZm8pKSkKKyAgICAg ICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWxhbmd1YWdlIiAobnRoIDAgaW5mbykpKQorICAgICAg ICAoc2hvdWxkIChzdHJpbmc9IHJlZ2lvbi10ZXh0IChvcmctdHJpbSAobnRoIDEgaW5mbykpKSkK KyAgICAgICAgKHNob3VsZC1ub3QgdmFycykKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiIiAo bnRoIDMgaW5mbykpKSkpKQorICA7OyBUZXN0IHByZWZpeCBhcmd1bWVudCBwb2ludCBzcGxpdHRp bmcuCisgIChsZXQgKChvcmctYWRhcHQtaW5kZW50YXRpb24gdCkKKyAgICAgICAgKG9rLWNvbCAx MSkKKyAgICAgICAgKHN0YXJzICJeXFwqXFwqXFwqXFwqXFwqXFwqXFwqXFwqXFwqXFwqIikpCisg ICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0ICIKKyoqKioqKioqKiogMTAgc3RhcnMgd2l0aCBw b2ludCBiZXR3ZWVuIHR3byBsaW5lcworICAgICAgICAgICAjK2JlZ2luX3NyYyBlbWFjcy1saXNw CisgICAgICAgICAgIDs7IHRvIHVwcGVyIGJsb2NrCisgICAgICAgICAgIDxwb2ludD4KKyAgICAg ICAgICAgOzsgdG8gbG93ZXIgYmxvY2sKKyAgICAgICAgICAgIytlbmRfc3JjCisiCisgICAgICAo b3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jayAnYS1wcmVmaXgtYXJnKQorICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkKKyAgICAgIChkb2xpc3QgKHJlZ2V4cCBgKCxzdGFycworICAgICAgICAg ICAgICAgICAgICAgICAgIiNcXCtiZWciICI7OyB0byB1cHBlciBibG9jayIgIiNcXCtlbmQiCisg ICAgICAgICAgICAgICAgICAgICAgICAsc3RhcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICIj XFwrYmVnIiAiOzsgdG8gbG93ZXIgYmxvY2siICIjXFwrZW5kIikpCisgICAgICAgIChzaG91bGQg KHJlLXNlYXJjaC1mb3J3YXJkIHJlZ2V4cCkpCisgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJl Z2lubmluZyAwKSkKKyAgICAgICAgKGlmIChvciAoc3RyaW5nPSByZWdleHAgc3RhcnMpCisgICAg ICAgICAgICAgICAgKHN0cmluZy1wcmVmaXgtcCAiOzsiIHJlZ2V4cCkpCisgICAgICAgICAgICAo c2hvdWxkICg9IDAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAgKHNob3VsZCAoPSBvay1j b2wgKGN1cnJlbnQtY29sdW1uKSkpKSkpKQorICA7OyBUZXN0IHByZWZpeCBhcmd1bWVudCByZWdp b24gc3BsaXR0aW5nLgorICAobGV0ICgob3JnLWFkYXB0LWluZGVudGF0aW9uIHQpCisgICAgICAg IChvay1jb2wgMTEpCisgICAgICAgIChzdGFycyAiXlxcKlxcKlxcKlxcKlxcKlxcKlxcKlxcKlxc KlxcKiIpCisgICAgICAgIChwYXJ0cyAnKCJ0byB1cHBlciBibG9jayIgIm1hcmsgdGhpcyBsaW5l IGFzIHJlZ2lvbiIgInRvIGxvd2VyIGJsb2NrIikpKQorICAgIChvcmctdGVzdC13aXRoLXRlbXAt dGV4dCAoZm9ybWF0ICIKKyoqKioqKioqKiogMTAgc3RhcnMgd2l0aCByZWdpb24gYmV0d2VlbiB0 d28gbGluZXMKKyAgICAgICAgICAgIytoZWFkZXI6IDp2YXIgYj1cImFsc28gc2VlblwiCisgICAg ICAgICAgICMrYmVnaW5fc3JjIGFueS1sYW5ndWFnZSAtaSAtbiA6dmFyIGE9XCJzZWVuXCIKKyAg ICAgICAgICAgJXMKKyAgICAgICAgICAgJXMKKyAgICAgICAgICAgJXMKKyAgICAgICAgICAgIytl bmRfc3JjCisiIChudGggMCBwYXJ0cykgKG50aCAxIHBhcnRzKSAobnRoIDIgcGFydHMpKQorICAg ICAgKGxldCAoKG4gMCkgaW5mbyB2YXJzKQorICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4p KQorICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgKG50aCAxIHBhcnRzKSkKKyAgICAgICAgKHNl dC1tYXJrIChwb2ludCkpCisgICAgICAgIDs7IG1hcmsgdGhlIHJlZ2lvbiBieSBtb3ZpbmcgcG9p bnQgbWFrZXMgdGhlIHRlc3QgcGFzcy4KKyAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKSA7OyAo Z290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpIGZhaWxzLgorICAgICAgICAob3JnLWJhYmVs LWRlbWFyY2F0ZS1ibG9jayAnYS1wcmVmaXgtYXJndW1lbnQpCisgICAgICAgIChnb3RvLWNoYXIg KHBvaW50LW1pbikpCisgICAgICAgICh3aGlsZSAoPCBuIChsZW5ndGggcGFydHMpKQorICAgICAg ICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2spCisgICAgICAgICAgKHNldHEgaW5mbyAob3Jn LWJhYmVsLWdldC1zcmMtYmxvY2staW5mbykpCisgICAgICAgICAgKHNldHEgdmFycyAob3JnLWJh YmVsLS1nZXQtdmFycyAobnRoIDIgaW5mbykpKQorICAgICAgICAgIChzaG91bGQgKHN0cmluZz0g ImFueS1sYW5ndWFnZSIgKG50aCAwIGluZm8pKSkKKyAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9 IChudGggbiBwYXJ0cykgKG9yZy10cmltIChudGggMSBpbmZvKSkpKQorICAgICAgICAgIChzaG91 bGQgKHN0cmluZz0gInNlZW4iIChjZHIgKGFzc3EgJ2EgdmFycykpKSkKKyAgICAgICAgICAoc2hv dWxkIChzdHJpbmc9ICJhbHNvIHNlZW4iIChjZHIgKGFzc3EgJ2IgdmFycykpKSkKKyAgICAgICAg ICAoc2hvdWxkIChzdHJpbmc9ICItaSAtbiIgKG50aCAzIGluZm8pKSkKKyAgICAgICAgICAoY2wt aW5jZiBuKSkpCisgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgKGRvbGlzdCAo cmVnZXhwIGAoLHN0YXJzCisgICAgICAgICAgICAgICAgICAgICAgICAiI1xcK2JlZyIgLChudGgg MCBwYXJ0cykgIiNcXCtlbmQiCisgICAgICAgICAgICAgICAgICAgICAgICAsc3RhcnMKKyAgICAg ICAgICAgICAgICAgICAgICAgICIjXFwrYmVnIiAsKG50aCAxIHBhcnRzKSAiI1xcK2VuZCIKKyAg ICAgICAgICAgICAgICAgICAgICAgICxzdGFycworICAgICAgICAgICAgICAgICAgICAgICAgIiNc XCtiZWciICwobnRoIDIgcGFydHMpICIjXFwrZW5kIikpCisgICAgICAgIChzaG91bGQgKHJlLXNl YXJjaC1mb3J3YXJkIHJlZ2V4cCkpCisgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmlu ZyAwKSkKKyAgICAgICAgKGlmIChzdHJpbmc9IHJlZ2V4cCBzdGFycykKKyAgICAgICAgICAgIChz aG91bGQgKD0gMCAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgICAgICAoc2hvdWxkICg9IG9rLWNv bCAoY3VycmVudC1jb2x1bW4pKSkpKSkKKyAgICA7OyBUZXN0IGZvciBgdXNlci1lcnJvcnMncy4K KyAgICAobGV0KiAoKGNhcHRpb24gIiMrY2FwdGlvbjogY2FwdGlvbi4iKQorICAgICAgICAgICAo cmVnZXhwIChyeCAiIytjYXB0aW9uOiBjYXB0aW9uLiIpKQorICAgICAgICAgICAod2l0aGluLWJv ZHkgIjs7IHdpdGhpbi1ib2R5IikKKyAgICAgICAgICAgKGJlbG93LWJsb2NrICIjIGJlbG93IGJs b2NrIikKKyAgICAgICAgICAgKHRlbXAtdGV4dCAoZm9ybWF0ICIKKyVzCisjK2JlZ2luX3NyYyBl bWFjcy1saXNwCisKKyVzCisKKyMrZW5kX3NyYworCislcworIiBjYXB0aW9uIHdpdGhpbi1ib2R5 IGJlbG93LWJsb2NrKSkpCisgICAgICA7OyBUZXN0IHBvaW50IGF0IGNhcHRpb24uCisgICAgICAo b3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgdGVtcC10ZXh0CisgICAgICAgIDs7IFNldCBwb2ludC4K KyAgICAgICAgKHNob3VsZCAocmUtc2VhcmNoLWZvcndhcmQgcmVnZXhwIG5pbCAnbm9lcnJvcikp CisgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgOzsgQ2hl Y2sgKHBvaW50KS4KKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSBjYXB0aW9uCisgICAgICAgICAg ICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKHBvaW50KSAoKyAocG9pbnQpIChsZW5ndGggY2FwdGlvbikpKSkpCisgICAgICAgIChzaG91 bGQtZXJyb3IgKG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxvY2spIDp0eXBlICd1c2VyLWVycm9yKSkK KyAgICAgIDs7IFRlc3QgcmVnaW9uIGZyb20gYmVsb3cgdGhlIGJsb2NrIChtYXJrKSB0byB3aXRo aW4gdGhlIGJvZHkgKHBvaW50KS4KKyAgICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCB0ZW1w LXRleHQKKyAgICAgICAgOzsgU2V0IG1hcmsuCisgICAgICAgIChzaG91bGQgKHJlLXNlYXJjaC1m b3J3YXJkIGJlbG93LWJsb2NrIG5pbCAnbm9lcnJvcikpCisgICAgICAgIChzZXQtbWFyayAobWF0 Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICA7OyBDaGVjayAobWFyaykuCisgICAgICAgIChzaG91 bGQgKHN0cmluZz0gYmVsb3ctYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVy LXN1YnN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAobWFyaykgKCsgKG1hcmspIChs ZW5ndGggYmVsb3ctYmxvY2spKSkpKQorICAgICAgICA7OyBTZXQgcG9pbnQuCisgICAgICAgIChz aG91bGQgKHJlLXNlYXJjaC1iYWNrd2FyZCB3aXRoaW4tYm9keSBuaWwgJ25vZXJyb3IpKQorICAg ICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCisgICAgICAgIDs7IENoZWNrIChw b2ludCkuCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gd2l0aGluLWJvZHkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAg ICAocG9pbnQpICgrIChwb2ludCkgKGxlbmd0aCB3aXRoaW4tYm9keSkpKSkpCisgICAgICAgIChz aG91bGQtZXJyb3IgKG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxvY2spIDp0eXBlICd1c2VyLWVycm9y KSkpKSkKKwogKGVydC1kZWZ0ZXN0IHRlc3Qtb2IvaW5kZW50ZWQtY2FjaGVkLW9yZy1icmFja2V0 LWxpbmsgKCkKICAgIldoZW4gdGhlIHJlc3VsdCBvZiBhIHNvdXJjZSBibG9jayBpcyBhIGNhY2hl ZCBpbmRlbnRlZCBsaW5rIGl0CiBzaG91bGQgc3RpbGwgcmV0dXJuIHRoZSBsaW5rLiIKLS0gCjIu NDIuMAoK --=_4f2fb2ff0634d66f91b670583f593892--