From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id uIfdMuUtTmF45QAAgWs5BA (envelope-from ) for ; Fri, 24 Sep 2021 21:58:29 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id mPlYLuUtTmGNEwAAbx9fmQ (envelope-from ) for ; Fri, 24 Sep 2021 19:58:29 +0000 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 2DC6F399A5 for ; Fri, 24 Sep 2021 21:58:29 +0200 (CEST) Received: from localhost ([::1]:34590 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mTrL1-00060H-Qi for larch@yhetil.org; Fri, 24 Sep 2021 15:58:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48468) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mTrJj-0005xb-AX for emacs-orgmode@gnu.org; Fri, 24 Sep 2021 15:57:07 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:38804) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mTrJd-0000sQ-VY for emacs-orgmode@gnu.org; Fri, 24 Sep 2021 15:57:07 -0400 Received: by mail-wr1-x42a.google.com with SMTP id u18so30749424wrg.5 for ; Fri, 24 Sep 2021 12:57:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=LOGM5heNHYuslmy7KsqfW2nA3JuPuBFuHCPZ42E4nMQ=; b=QMflt8PGGLzJtUBHj1WbBlYMECgLqAkSfh23bG5UOJA2BU0hGblGgxNp+v1+OTjMij ueBbeBAL5L8b5MZUiF5WzUfv/TlLrGXweCbuYNBlbcKmYvsLGoOQpfApGIzNU7Rm7uew V/cg81lUCaWPflQR+fkvTsaw1107AMFRAQDvO3PWRvhyh+QWhTj+3zIWUcLFJFHrTzLF pveU/SxHJJA+fSWuhvfV+o4dWgfmRT1dvmoIU9sIORO428KvC1t9HpCP+e+DTYDL2h3C /6NF1gDdoLoBs4t6A/zrEqPUA5m1DTMiyNXRk3tYa8hMd5tgocNe/rfE/nd55/VwjEd5 N9RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=LOGM5heNHYuslmy7KsqfW2nA3JuPuBFuHCPZ42E4nMQ=; b=IxZXA9N8fBHKqEc3gl+Fmbw0I194edl4u558aqt0ZakvTVHNH8/wNgCkIjABJj03hW ffxMr2kbY4UvCYEJD3VRzLR+bMo1bSXfLDhEaq4CA781+b+Jo6n+Scfp4uCa9+9wTioF qrM9WHipKHPWYBTOY40aGqYxo3AT3oBNCZ7ZEcK2cqFgcEoWmOFfbacHBqyBH546z50I t1Jy3ifAVygAWVrr+rouWBgwVaWKES84NjkCvfluVJTAQeElRUMqaMPTHhnsLdHto9Xy 6KQDqEf0GVfLqTXERLIjvZPkYDgWaSCsinsm+CjbwGbJ1hEYy6OCrJ2YqVwvhMxGYqO3 hxrQ== X-Gm-Message-State: AOAM532lLMugN5rVUAZbeOVJxWCBegL/EhNGmhwa3ZMLTqbsJYqF4Ofr S9QIkr1JNE+nxNeaQ/eZi7FAHsQOldLoJ1sawaomlOqJ X-Google-Smtp-Source: ABdhPJzEqQfw1jRHLFtO6KGk7s5VNdURTJRqp1ZGP91uKTs021btSBvlkMvCatsGlaIeAiKoe6KBhFNe04mMQx9SPHo= X-Received: by 2002:a05:600c:26d4:: with SMTP id 20mr3903418wmv.40.1632513420029; Fri, 24 Sep 2021 12:57:00 -0700 (PDT) MIME-Version: 1.0 From: Pedro Bruel Date: Fri, 24 Sep 2021 16:56:43 -0300 Message-ID: Subject: [PATCH] Include support for evaluating julia code To: Org-mode Content-Type: multipart/mixed; boundary="0000000000007e16c305ccc32653" Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=pedro.bruel@gmail.com; helo=mail-wr1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 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 ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1632513509; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=SlSvhrZCuILN9OKh54TR6HxtFHTuwt+cYWget4G4Les=; b=Ke6Hf4qbYRr9rPIXcDYIFZRaOUV0FrsoaEkckHdW2oWLTiQe8lupAPoSTHGJuC/9yzV5Cf uDWsiFx9whXehR6zZl7tV3rl/emAm2pawf2QYo+htulv2oDWwGTBAUuPlVFGubTT9evGrU hRwF0LbFkZbwsdZ31vDaYqrHLHWij7vsPwrBvFJc4THUGQyPUkrl2uIb7QbMhvEnZl68U1 DELlj5oJI9DMecSWxHv5RP51sVh9Nfk6uoLKOl/9GgrkJtZ7+NpGvBV4lPNptnRQKz0/kU 1xMN++U5IEtRhJdR/ACGJrAwTB9AduWQaq/1IJByxdltJztK0AmkTFgH+mFatQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1632513509; a=rsa-sha256; cv=none; b=hRHre3doBjQrEbiKcjPZE4FqCJictHIoyr9PMNktFWRAOSQNt2FWWuxA0adymRlXXqaNmL JzMBceiCsbt293w0qD31nIdgs3i3r6ftOd/T34voQ4bnzIdL3ZE29dKRGOoMoosM9PfqIK l3XFKISaeY8NQwGUMSdPcqeolf7VSi1xjGCLRbPLfgDURdWMSJjIfXb9C/afj5NIso1EiQ qKFjb1K08Q17Y84+V+es8utV0RFAarYrBopVaR0dNkIiZgySrvDOjd8JFInUEKtu6fvvHE pXq+JHqA6HB+cxyzpHCPoEYtTkOgSC7MMhPt+kKer3jTzeTJicjJ032r3l2tbQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20210112 header.b=QMflt8PG; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Spam-Score: -0.59 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20210112 header.b=QMflt8PG; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Queue-Id: 2DC6F399A5 X-Spam-Score: -0.59 X-Migadu-Scanner: scn1.migadu.com X-TUID: roPdzx+dA5E9 --0000000000007e16c305ccc32653 Content-Type: multipart/alternative; boundary="0000000000007e16c205ccc32651" --0000000000007e16c205ccc32651 Content-Type: text/plain; charset="UTF-8" Hi, This patch includes ob-julia.el from org-contrib, and a tentative test-ob-julia.el test file. This is my first attempt at a patch, so please let me know if there's anything wrong! Thanks, Pedro --0000000000007e16c205ccc32651 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

This patch includes ob-julia.e= l from org-contrib, and a tentative test-ob-julia.el test file.
Thi= s is my first attempt at a patch, so please let me know if there's anyt= hing wrong!

Thanks,
Pedro

=

--0000000000007e16c205ccc32651-- --0000000000007e16c305ccc32653 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Include-support-for-evaluating-julia-code.patch" Content-Disposition: attachment; filename="0001-Include-support-for-evaluating-julia-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ktys9hxn0 RnJvbSBjMDAyZjU0MWNhZDE3NTU3M2IxMDI3MjBlMzg4MGJhOThkMDViZjY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZWRybyBCcnVlbCA8cGVkcm8uYnJ1ZWxAZ21haWwuY29tPgpE YXRlOiBGcmksIDI0IFNlcCAyMDIxIDE2OjMxOjQwIC0wMzAwClN1YmplY3Q6IFtQQVRDSF0gSW5j bHVkZSBzdXBwb3J0IGZvciBldmFsdWF0aW5nIGp1bGlhIGNvZGUKCiogbGlzcC9vYi1qdWxpYS5l bDogaW5jbHVkZWQgZnJvbSBvcmctY29udHJpYgoqIHRlc3RpbmcvbGlzcC90ZXN0LW9iLWp1bGlh LmVsOiBzdGFydCBhZGFwdGluZyBmcm9tIHRlc3RpbmcvbGlzcC90ZXN0LW9iLXB5dGhvbi5lbAot LS0KIGxpc3Avb2ItanVsaWEuZWwgICAgICAgICAgICAgIHwgMzQ0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHRlc3RpbmcvbGlzcC90ZXN0LW9iLWp1bGlhLmVsIHwgMjc0ICsr KysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA2MTggaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avb2ItanVsaWEuZWwKIGNyZWF0ZSBtb2RlIDEw MDY0NCB0ZXN0aW5nL2xpc3AvdGVzdC1vYi1qdWxpYS5lbAoKZGlmZiAtLWdpdCBhL2xpc3Avb2It anVsaWEuZWwgYi9saXNwL29iLWp1bGlhLmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uY2JjNThkNjY1Ci0tLSAvZGV2L251bGwKKysrIGIvbGlzcC9vYi1qdWxpYS5lbApA QCAtMCwwICsxLDM0NCBAQAorOzs7IG9iLWp1bGlhLmVsIC0tLSBvcmctYmFiZWwgZnVuY3Rpb25z IGZvciBqdWxpYSBjb2RlIGV2YWx1YXRpb24KKworOzsgQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0 LCAyMDIxIEcuIEpheSBLZXJucworOzsgQXV0aG9yczogRy4gSmF5IEtlcm5zLCBiYXNlZCBvbiBv Yi1SLmVsIGJ5IEVyaWMgU2NodWx0ZSBhbmQgRGFuIERhdmlzb24KKzs7IE1haW50YWluZXI6IFBl ZHJvIEJydWVsIDxwZWRyby5icnVlbEBnbWFpbC5jb20+Cis7OyBLZXl3b3JkczogbGl0ZXJhdGUg cHJvZ3JhbW1pbmcsIHJlcHJvZHVjaWJsZSByZXNlYXJjaCwgc2NpZW50aWZpYyBjb21wdXRpbmcK Kzs7IEhvbWVwYWdlOiBodHRwczovL2dpdGh1Yi5jb20vcGhyYi9vYi1qdWxpYQorCis7OyBUaGlz IGZpbGUgaXMgbm90IHBhcnQgb2YgR05VIEVtYWNzLgorCis7OyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorOzsgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorCis7OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzsgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorCis7OzsgQ29tbWVudGFyeToKKworOzsgT3JnLUJhYmVsIHN1cHBvcnQgZm9yIGV2YWx1 YXRpbmcganVsaWEgY29kZQorCis7OzsgQ29kZToKKyhyZXF1aXJlICdjbC1saWIpCisocmVxdWly ZSAnb2IpCisKKyhkZWNsYXJlLWZ1bmN0aW9uIG9yZ3RibC10by1jc3YgIm9yZy10YWJsZSIgKHRh YmxlIHBhcmFtcykpCisoZGVjbGFyZS1mdW5jdGlvbiBqdWxpYSAiZXh0OmVzcy1qdWxpYSIgKCZv cHRpb25hbCBzdGFydC1hcmdzKSkKKyhkZWNsYXJlLWZ1bmN0aW9uIGluZmVyaW9yLWVzcy1zZW5k LWlucHV0ICJleHQ6ZXNzLWluZiIgKCkpCisoZGVjbGFyZS1mdW5jdGlvbiBlc3MtbWFrZS1idWZm ZXItY3VycmVudCAiZXh0OmVzcy1pbmYiICgpKQorKGRlY2xhcmUtZnVuY3Rpb24gZXNzLWV2YWwt YnVmZmVyICJleHQ6ZXNzLWluZiIgKHZpcykpCisoZGVjbGFyZS1mdW5jdGlvbiBlc3Mtd2FpdC1m b3ItcHJvY2VzcyAiZXh0OmVzcy1pbmYiCisJCSAgKCZvcHRpb25hbCBwcm9jIHNlYy1wcm9tcHQg d2FpdCBmb3JjZS1yZWRpc3BsYXkpKQorCisoZGVmdmFyIG9yZy1iYWJlbC1oZWFkZXItYXJnczpq dWxpYQorICAnKCh3aWR0aAkJIC4gOmFueSkKKyAgICAoaG9yaXpvbnRhbAkJIC4gOmFueSkKKyAg ICAocmVzdWx0cyAgICAgICAgICAgICAuICgoZmlsZSBsaXN0IHZlY3RvciB0YWJsZSBzY2FsYXIg dmVyYmF0aW0pCisJCQkgICAgKHJhdyBvcmcgaHRtbCBsYXRleCBjb2RlIHBwIHdyYXApCisJCQkg ICAgKHJlcGxhY2Ugc2lsZW50IGFwcGVuZCBwcmVwZW5kKQorCQkJICAgIChvdXRwdXQgdmFsdWUg Z3JhcGhpY3MpKSkpCisgICJqdWxpYS1zcGVjaWZpYyBoZWFkZXIgYXJndW1lbnRzLiIpCisKKyhh ZGQtdG8tbGlzdCAnb3JnLWJhYmVsLXRhbmdsZS1sYW5nLWV4dHMgJygianVsaWEiIC4gImpsIikp CisKKyhkZWZ2YXIgb3JnLWJhYmVsLWRlZmF1bHQtaGVhZGVyLWFyZ3M6anVsaWEgJygpKQorCiso ZGVmY3VzdG9tIG9yZy1iYWJlbC1qdWxpYS1jb21tYW5kICJqdWxpYSIKKyAgIk5hbWUgb2YgY29t bWFuZCB0byB1c2UgZm9yIGV4ZWN1dGluZyBqdWxpYSBjb2RlLiIKKyAgOnZlcnNpb24gIjI0LjMi CisgIDpwYWNrYWdlLXZlcnNpb24gJyhPcmcgLiAiOC4wIikKKyAgOmdyb3VwICdvcmctYmFiZWwK KyAgOnR5cGUgJ3N0cmluZykKKworKGRlZnZhciBlc3MtY3VycmVudC1wcm9jZXNzLW5hbWUpIDsg ZHluYW1pY2FsbHkgc2NvcGVkCisoZGVmdmFyIGVzcy1sb2NhbC1wcm9jZXNzLW5hbWUpIDsgZHlu YW1pY2FsbHkgc2NvcGVkCisoZGVmdW4gb3JnLWJhYmVsLWVkaXQtcHJlcDpqdWxpYSAoaW5mbykK KyAgKGxldCAoKHNlc3Npb24gKGNkciAoYXNzcSA6c2Vzc2lvbiAobnRoIDIgaW5mbykpKSkpCisg ICAgKHdoZW4gKGFuZCBzZXNzaW9uCisJICAgICAgIChzdHJpbmctcHJlZml4LXAgIioiICBzZXNz aW9uKQorCSAgICAgICAoc3RyaW5nLXN1ZmZpeC1wICIqIiBzZXNzaW9uKSkKKyAgICAgIChvcmct YmFiZWwtanVsaWEtaW5pdGlhdGUtc2Vzc2lvbiBzZXNzaW9uIG5pbCkpKSkKKworKGRlZnVuIG9y Zy1iYWJlbC1leHBhbmQtYm9keTpqdWxpYSAoYm9keSBwYXJhbXMgJm9wdGlvbmFsIF9ncmFwaGlj cy1maWxlKQorICAiRXhwYW5kIEJPRFkgYWNjb3JkaW5nIHRvIFBBUkFNUywgcmV0dXJuIHRoZSBl eHBhbmRlZCBib2R5LiIKKyAgKG1hcGNvbmNhdCAnaWRlbnRpdHkKKwkgICAgIChhcHBlbmQKKwkg ICAgICAod2hlbiAoY2RyIChhc3NxIDpwcm9sb2d1ZSBwYXJhbXMpKQorCQkobGlzdCAoY2RyIChh c3NxIDpwcm9sb2d1ZSBwYXJhbXMpKSkpCisJICAgICAgKG9yZy1iYWJlbC12YXJpYWJsZS1hc3Np Z25tZW50czpqdWxpYSBwYXJhbXMpCisJICAgICAgKGxpc3QgYm9keSkKKwkgICAgICAod2hlbiAo Y2RyIChhc3NxIDplcGlsb2d1ZSBwYXJhbXMpKQorCQkobGlzdCAoY2RyIChhc3NxIDplcGlsb2d1 ZSBwYXJhbXMpKSkpKQorCSAgICAgIlxuIikpCisKKyhkZWZ1biBvcmctYmFiZWwtZXhlY3V0ZTpq dWxpYSAoYm9keSBwYXJhbXMpCisgICJFeGVjdXRlIGEgYmxvY2sgb2YganVsaWEgY29kZS4KK1Ro aXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2snLiIK KyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGxldCogKChyZXN1bHQtcGFyYW1zIChjZHIgKGFzc3Eg OnJlc3VsdC1wYXJhbXMgcGFyYW1zKSkpCisJICAgKHJlc3VsdC10eXBlIChjZHIgKGFzc3EgOnJl c3VsdC10eXBlIHBhcmFtcykpKQorICAgICAgICAgICAoc2Vzc2lvbiAob3JnLWJhYmVsLWp1bGlh LWluaXRpYXRlLXNlc3Npb24KKwkJICAgICAoY2RyIChhc3NxIDpzZXNzaW9uIHBhcmFtcykpIHBh cmFtcykpCisJICAgKGdyYXBoaWNzLWZpbGUgKGFuZCAobWVtYmVyICJncmFwaGljcyIgKGFzc3Eg OnJlc3VsdC1wYXJhbXMgcGFyYW1zKSkKKwkJCSAgICAgICAob3JnLWJhYmVsLWdyYXBoaWNhbC1v dXRwdXQtZmlsZSBwYXJhbXMpKSkKKwkgICAoY29sbmFtZXMtcCAodW5sZXNzIGdyYXBoaWNzLWZp bGUgKGNkciAoYXNzcSA6Y29sbmFtZXMgcGFyYW1zKSkpKQorCSAgIChyb3duYW1lcy1wICh1bmxl c3MgZ3JhcGhpY3MtZmlsZSAoY2RyIChhc3NxIDpyb3duYW1lcyBwYXJhbXMpKSkpCisJICAgKGZ1 bGwtYm9keSAob3JnLWJhYmVsLWV4cGFuZC1ib2R5Omp1bGlhIGJvZHkgcGFyYW1zIGdyYXBoaWNz LWZpbGUpKQorCSAgIChyZXN1bHQKKwkgICAgKG9yZy1iYWJlbC1qdWxpYS1ldmFsdWF0ZQorCSAg ICAgc2Vzc2lvbiBmdWxsLWJvZHkgcmVzdWx0LXR5cGUgcmVzdWx0LXBhcmFtcworCSAgICAgKG9y IChlcXVhbCAieWVzIiBjb2xuYW1lcy1wKQorCQkgKG9yZy1iYWJlbC1waWNrLW5hbWUKKwkJICAo Y2RyIChhc3NxIDpjb2xuYW1lLW5hbWVzIHBhcmFtcykpIGNvbG5hbWVzLXApKQorCSAgICAgKG9y IChlcXVhbCAieWVzIiByb3duYW1lcy1wKQorCQkgKG9yZy1iYWJlbC1waWNrLW5hbWUKKwkJICAo Y2RyIChhc3NxIDpyb3duYW1lLW5hbWVzIHBhcmFtcykpIHJvd25hbWVzLXApKSkpKQorICAgICAg KGlmIGdyYXBoaWNzLWZpbGUgbmlsIHJlc3VsdCkpKSkKKworKGRlZnVuIG9yZy1iYWJlbC1ub3Jt YWxpemUtbmV3bGluZSAocmVzdWx0KQorICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAi XFwoXG5ccj9cXClcXHsyLFxcfSIKKyAgICJcbiIKKyAgIHJlc3VsdCkpCisKKyhkZWZ1biBvcmct YmFiZWwtcHJlcC1zZXNzaW9uOmp1bGlhIChzZXNzaW9uIHBhcmFtcykKKyAgIlByZXBhcmUgU0VT U0lPTiBhY2NvcmRpbmcgdG8gdGhlIGhlYWRlciBhcmd1bWVudHMgc3BlY2lmaWVkIGluIFBBUkFN Uy4iCisgIChsZXQqICgoc2Vzc2lvbiAob3JnLWJhYmVsLWp1bGlhLWluaXRpYXRlLXNlc3Npb24g c2Vzc2lvbiBwYXJhbXMpKQorCSAodmFyLWxpbmVzIChvcmctYmFiZWwtdmFyaWFibGUtYXNzaWdu bWVudHM6anVsaWEgcGFyYW1zKSkpCisgICAgKG9yZy1iYWJlbC1jb21pbnQtaW4tYnVmZmVyIHNl c3Npb24KKyAgICAgIChtYXBjIChsYW1iZGEgKHZhcikKKyAgICAgICAgICAgICAgKGVuZC1vZi1s aW5lIDEpIChpbnNlcnQgdmFyKSAoY29taW50LXNlbmQtaW5wdXQgbmlsIHQpCisgICAgICAgICAg ICAgIChvcmctYmFiZWwtY29taW50LXdhaXQtZm9yLW91dHB1dCBzZXNzaW9uKSkgdmFyLWxpbmVz KSkKKyAgICBzZXNzaW9uKSkKKworKGRlZnVuIG9yZy1iYWJlbC1sb2FkLXNlc3Npb246anVsaWEg KHNlc3Npb24gYm9keSBwYXJhbXMpCisgICJMb2FkIEJPRFkgaW50byBTRVNTSU9OLiIKKyAgKHNh dmUtd2luZG93LWV4Y3Vyc2lvbgorICAgIChsZXQgKChidWZmZXIgKG9yZy1iYWJlbC1wcmVwLXNl c3Npb246anVsaWEgc2Vzc2lvbiBwYXJhbXMpKSkKKyAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IGJ1ZmZlcgorICAgICAgICAoZ290by1jaGFyIChwcm9jZXNzLW1hcmsgKGdldC1idWZmZXItcHJv Y2VzcyAoY3VycmVudC1idWZmZXIpKSkpCisgICAgICAgIChpbnNlcnQgKG9yZy1iYWJlbC1jaG9t cCBib2R5KSkpCisgICAgICBidWZmZXIpKSkKKworOzsgaGVscGVyIGZ1bmN0aW9ucworCisoZGVm dW4gb3JnLWJhYmVsLXZhcmlhYmxlLWFzc2lnbm1lbnRzOmp1bGlhIChwYXJhbXMpCisgICJSZXR1 cm4gbGlzdCBvZiBqdWxpYSBzdGF0ZW1lbnRzIGFzc2lnbmluZyB0aGUgYmxvY2sncyB2YXJpYWJs ZXMuIgorICAobGV0ICgodmFycyAob3JnLWJhYmVsLS1nZXQtdmFycyBwYXJhbXMpKSkKKyAgICAo bWFwY2FyCisgICAgIChsYW1iZGEgKHBhaXIpCisgICAgICAgKG9yZy1iYWJlbC1qdWxpYS1hc3Np Z24tZWxpc3AKKwkoY2FyIHBhaXIpIChjZHIgcGFpcikKKwkoZXF1YWwgInllcyIgKGNkciAoYXNz cSA6Y29sbmFtZXMgcGFyYW1zKSkpCisJKGVxdWFsICJ5ZXMiIChjZHIgKGFzc3EgOnJvd25hbWVz IHBhcmFtcykpKSkpCisgICAgIChtYXBjYXIKKyAgICAgIChsYW1iZGEgKGkpCisJKGNvbnMgKGNh ciAobnRoIGkgdmFycykpCisJICAgICAgKG9yZy1iYWJlbC1yZWFzc2VtYmxlLXRhYmxlCisJICAg ICAgIChjZHIgKG50aCBpIHZhcnMpKQorCSAgICAgICAoY2RyIChudGggaSAoY2RyIChhc3NxIDpj b2xuYW1lLW5hbWVzIHBhcmFtcykpKSkKKwkgICAgICAgKGNkciAobnRoIGkgKGNkciAoYXNzcSA6 cm93bmFtZS1uYW1lcyBwYXJhbXMpKSkpKSkpCisgICAgICAobnVtYmVyLXNlcXVlbmNlIDAgKDEt IChsZW5ndGggdmFycykpKSkpKSkKKworKGRlZnVuIG9yZy1iYWJlbC1qdWxpYS1xdW90ZS1jc3Yt ZmllbGQgKHMpCisgICJRdW90ZSBmaWVsZCBTIGZvciBleHBvcnQgdG8ganVsaWEuIgorICAoaWYg KHN0cmluZ3AgcykKKyAgICAgIChjb25jYXQgIlwiIiAobWFwY29uY2F0ICdpZGVudGl0eSAoc3Bs aXQtc3RyaW5nIHMgIlwiIikgIlwiXCIiKSAiXCIiKQorICAgIChmb3JtYXQgIiVTIiBzKSkpCisK KyhkZWZ1biBvcmctYmFiZWwtanVsaWEtYXNzaWduLWVsaXNwIChuYW1lIHZhbHVlIGNvbG5hbWVz LXAgcm93bmFtZXMtcCkKKyAgIkNvbnN0cnVjdCBqdWxpYSBjb2RlIGFzc2lnbmluZyB0aGUgZWxp c3AgVkFMVUUgdG8gYSB2YXJpYWJsZSBuYW1lZCBOQU1FLiIKKyAgKGlmIChsaXN0cCB2YWx1ZSkK KyAgICAgIChsZXQqICgobGVuZ3RocyAobWFwY2FyICdsZW5ndGggKGNsLXJlbW92ZS1pZi1ub3Qg J3NlcXVlbmNlcCB2YWx1ZSkpKQorICAgICAgICAgICAgIChtYXggKGlmIGxlbmd0aHMgKGFwcGx5 ICdtYXggbGVuZ3RocykgMCkpCisgICAgICAgICAgICAgKG1pbiAoaWYgbGVuZ3RocyAoYXBwbHkg J21pbiBsZW5ndGhzKSAwKSkpCisgICAgICAgIDs7IEVuc3VyZSBWQUxVRSBoYXMgYW4gb3JndGJs IHN0cnVjdHVyZSAoZGVwdGggb2YgYXQgbGVhc3QgMikuCisgICAgICAgICh1bmxlc3MgKGxpc3Rw IChjYXIgdmFsdWUpKSAoc2V0cSB2YWx1ZSAobGlzdCB2YWx1ZSkpKQorICAgICAgICAobGV0ICgo ZmlsZSAob3JndGJsLXRvLWNzdiB2YWx1ZSAnKDpmbXQgb3JnLWJhYmVsLWp1bGlhLXF1b3RlLWNz di1maWVsZCkpKQorICAgICAgICAgICAgICAoaGVhZGVyIChpZiAob3IgKGVxIChudGggMSB2YWx1 ZSkgJ2hsaW5lKSBjb2xuYW1lcy1wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAiVFJVRSIg IkZBTFNFIikpCisgICAgICAgICAgICAgIChyb3ctbmFtZXMgKGlmIHJvd25hbWVzLXAgIjEiICJO VUxMIikpKQorICAgICAgICAgIChpZiAoPSBtYXggbWluKQorICAgICAgICAgICAgICAoZm9ybWF0 ICIlcyA9IGJlZ2luCisgICAgdXNpbmcgQ1NWCisgICAgQ1NWLnJlYWQoXCIlc1wiKQorZW5kIiBu YW1lIGZpbGUpCisgICAgICAgICAgICAoZm9ybWF0ICIlcyA9IGJlZ2luCisgICAgdXNpbmcgQ1NW CisgICAgQ1NWLnJlYWQoXCIlc1wiKQorZW5kIgorICAgICAgICAgICAgICAgICAgICBuYW1lIGZp bGUpKSkpCisgICAgKGZvcm1hdCAiJXMgPSAlcyIgbmFtZSAob3JnLWJhYmVsLWp1bGlhLXF1b3Rl LWNzdi1maWVsZCB2YWx1ZSkpKSkKKworKGRlZnZhciBlc3MtYXNrLWZvci1lc3MtZGlyZWN0b3J5 KSA7IGR5bmFtaWNhbGx5IHNjb3BlZAorKGRlZnVuIG9yZy1iYWJlbC1qdWxpYS1pbml0aWF0ZS1z ZXNzaW9uIChzZXNzaW9uIHBhcmFtcykKKyAgIklmIHRoZXJlIGlzIG5vdCBhIGN1cnJlbnQganVs aWEgcHJvY2VzcyB0aGVuIGNyZWF0ZSBvbmUuIgorICAodW5sZXNzIChzdHJpbmc9IHNlc3Npb24g Im5vbmUiKQorICAgIChsZXQgKChzZXNzaW9uIChvciBzZXNzaW9uICIqSnVsaWEqIikpCisJICAo ZXNzLWFzay1mb3ItZXNzLWRpcmVjdG9yeQorCSAgIChhbmQgKGJvdW5kcCAnZXNzLWFzay1mb3It ZXNzLWRpcmVjdG9yeSkKKwkJZXNzLWFzay1mb3ItZXNzLWRpcmVjdG9yeQorCQkobm90IChjZHIg KGFzc3EgOmRpciBwYXJhbXMpKSkpKSkKKyAgICAgIChpZiAob3JnLWJhYmVsLWNvbWludC1idWZm ZXItbGl2ZXAgc2Vzc2lvbikKKwkgIHNlc3Npb24KKwkoc2F2ZS13aW5kb3ctZXhjdXJzaW9uCisJ ICAod2hlbiAoZ2V0LWJ1ZmZlciBzZXNzaW9uKQorCSAgICA7OyBTZXNzaW9uIGJ1ZmZlciBleGlz dHMsIGJ1dCB3aXRoIGRlYWQgcHJvY2VzcworCSAgICAoc2V0LWJ1ZmZlciBzZXNzaW9uKSkKKyAg ICAgICAgICAocmVxdWlyZSAnZXNzKSAoc2V0LWJ1ZmZlciAoanVsaWEpKQorCSAgKHJlbmFtZS1i dWZmZXIKKwkgICAoaWYgKGJ1ZmZlcnAgc2Vzc2lvbikKKwkgICAgICAgKGJ1ZmZlci1uYW1lIHNl c3Npb24pCisJICAgICAoaWYgKHN0cmluZ3Agc2Vzc2lvbikKKwkJIHNlc3Npb24KKwkgICAgICAg KGJ1ZmZlci1uYW1lKSkpKQorCSAgKGN1cnJlbnQtYnVmZmVyKSkpKSkpCisKKzsgKGRlZnVuIG9y Zy1iYWJlbC1qdWxpYS1hc3NvY2lhdGUtc2Vzc2lvbiAoc2Vzc2lvbikKKzsgICAiQXNzb2NpYXRl IGp1bGlhIGNvZGUgYnVmZmVyIHdpdGggYSBqdWxpYSBzZXNzaW9uLgorOyBNYWtlIFNFU1NJT04g YmUgdGhlIGluZmVyaW9yIEVTUyBwcm9jZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUKKzsgY3VycmVu dCBjb2RlIGJ1ZmZlci4iCis7ICAgKHNldHEgZXNzLWxvY2FsLXByb2Nlc3MtbmFtZQorOyAJKHBy b2Nlc3MtbmFtZSAoZ2V0LWJ1ZmZlci1wcm9jZXNzIHNlc3Npb24pKSkKKzsgICAoZXNzLW1ha2Ut YnVmZmVyLWN1cnJlbnQpKQorCisoZGVmdW4gb3JnLWJhYmVsLWp1bGlhLWdyYXBoaWNhbC1vdXRw dXQtZmlsZSAocGFyYW1zKQorICAiTmFtZSBvZiBmaWxlIHRvIHdoaWNoIGp1bGlhIHNob3VsZCBz ZW5kIGdyYXBoaWNhbCBvdXRwdXQuIgorICAoYW5kIChtZW1iZXIgImdyYXBoaWNzIiAoY2RyIChh c3NxIDpyZXN1bHQtcGFyYW1zIHBhcmFtcykpKQorICAgICAgIChjZHIgKGFzc3EgOmZpbGUgcGFy YW1zKSkpKQorCisoZGVmY29uc3Qgb3JnLWJhYmVsLWp1bGlhLWVvZS1pbmRpY2F0b3IgInByaW50 KFwib3JnX2JhYmVsX2p1bGlhX2VvZVwiKSIpCisoZGVmY29uc3Qgb3JnLWJhYmVsLWp1bGlhLWVv ZS1vdXRwdXQgIm9yZ19iYWJlbF9qdWxpYV9lb2UiKQorCisoZGVmY29uc3Qgb3JnLWJhYmVsLWp1 bGlhLXdyaXRlLW9iamVjdC1jb21tYW5kICJiZWdpbgorICAgIGxvY2FsIHBfYW5zID0gJXMKKyAg ICBsb2NhbCBwX3RtcF9maWxlID0gXCIlc1wiCisKKyAgICB0cnkKKyAgICAgICAgdXNpbmcgQ1NW LCBEYXRhRnJhbWVzCisKKyAgICAgICAgaWYgdHlwZW9mKHBfYW5zKSA8OiBEYXRhRnJhbWUKKyAg ICAgICAgICAgcF9hbnNfZGYgPSBwX2FucworICAgICAgICBlbHNlCisgICAgICAgICAgICBwX2Fu c19kZiA9IERhdGFGcmFtZSg6YW5zID0+IHBfYW5zKQorICAgICAgICBlbmQKKworICAgICAgICBD U1Yud3JpdGUocF90bXBfZmlsZSwKKyAgICAgICAgICAgICAgICAgIHBfYW5zX2RmLAorICAgICAg ICAgICAgICAgICAgd3JpdGVoZWFkZXIgPSAlcywKKyAgICAgICAgICAgICAgICAgIHRyYW5zZm9y bSA9IChjb2wsIHZhbCkgLT4gc29tZXRoaW5nKHZhbCwgbWlzc2luZyksCisgICAgICAgICAgICAg ICAgICBtaXNzaW5nc3RyaW5nID0gXCJuaWxcIiwKKyAgICAgICAgICAgICAgICAgIHF1b3Rlc3Ry aW5ncyA9IGZhbHNlKQorICAgICAgICBwX2FucworICAgIGNhdGNoIGUKKyAgICAgICAgZXJyX21z ZyA9IFwiU291cmNlIGJsb2NrIGV2YWx1YXRpb24gZmFpbGVkLiAkZVwiCisgICAgICAgIENTVi53 cml0ZShwX3RtcF9maWxlLAorICAgICAgICAgICAgICAgICAgRGF0YUZyYW1lKDphbnMgPT4gZXJy X21zZyksCisgICAgICAgICAgICAgICAgICB3cml0ZWhlYWRlciA9IGZhbHNlLAorICAgICAgICAg ICAgICAgICAgdHJhbnNmb3JtID0gKGNvbCwgdmFsKSAtPiBzb21ldGhpbmcodmFsLCBtaXNzaW5n KSwKKyAgICAgICAgICAgICAgICAgIG1pc3NpbmdzdHJpbmcgPSBcIm5pbFwiLAorICAgICAgICAg ICAgICAgICAgcXVvdGVzdHJpbmdzID0gZmFsc2UpCisKKyAgICAgICAgZXJyX21zZworICAgIGVu ZAorZW5kIikKKworKGRlZnVuIG9yZy1iYWJlbC1qdWxpYS1ldmFsdWF0ZQorICAoc2Vzc2lvbiBi b2R5IHJlc3VsdC10eXBlIHJlc3VsdC1wYXJhbXMgY29sdW1uLW5hbWVzLXAgcm93LW5hbWVzLXAp CisgICJFdmFsdWF0ZSBqdWxpYSBjb2RlIGluIEJPRFkuIgorICAoaWYgc2Vzc2lvbgorICAgICAg KG9yZy1iYWJlbC1qdWxpYS1ldmFsdWF0ZS1zZXNzaW9uCisgICAgICAgc2Vzc2lvbiBib2R5IHJl c3VsdC10eXBlIHJlc3VsdC1wYXJhbXMgY29sdW1uLW5hbWVzLXAgcm93LW5hbWVzLXApCisgICAg KG9yZy1iYWJlbC1qdWxpYS1ldmFsdWF0ZS1leHRlcm5hbC1wcm9jZXNzCisgICAgIGJvZHkgcmVz dWx0LXR5cGUgcmVzdWx0LXBhcmFtcyBjb2x1bW4tbmFtZXMtcCByb3ctbmFtZXMtcCkpKQorCiso ZGVmdW4gb3JnLWJhYmVsLWp1bGlhLWV2YWx1YXRlLWV4dGVybmFsLXByb2Nlc3MKKyAgKGJvZHkg cmVzdWx0LXR5cGUgcmVzdWx0LXBhcmFtcyBjb2x1bW4tbmFtZXMtcCByb3ctbmFtZXMtcCkKKyAg IkV2YWx1YXRlIEJPRFkgaW4gZXh0ZXJuYWwganVsaWEgcHJvY2Vzcy4KK0lmIFJFU1VMVC1UWVBF IGVxdWFscyAnb3V0cHV0IHRoZW4gcmV0dXJuIHN0YW5kYXJkIG91dHB1dCBhcyBhCitzdHJpbmcu ICBJZiBSRVNVTFQtVFlQRSBlcXVhbHMgJ3ZhbHVlIHRoZW4gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0 aGUKK2xhc3Qgc3RhdGVtZW50IGluIEJPRFksIGFzIGVsaXNwLiIKKyAgKGNsLWNhc2UgcmVzdWx0 LXR5cGUKKyAgICAodmFsdWUKKyAgICAgKGxldCAoKHRtcC1maWxlIChvcmctYmFiZWwtdGVtcC1m aWxlICJqdWxpYS0iKSkpCisgICAgICAgKG9yZy1iYWJlbC1ldmFsIG9yZy1iYWJlbC1qdWxpYS1j b21tYW5kCisJCSAgICAgICAoZm9ybWF0IG9yZy1iYWJlbC1qdWxpYS13cml0ZS1vYmplY3QtY29t bWFuZAorCQkJICAgICAgIChmb3JtYXQgImJlZ2luICVzIGVuZCIgYm9keSkKKwkJCSAgICAgICAo b3JnLWJhYmVsLXByb2Nlc3MtZmlsZS1uYW1lIHRtcC1maWxlICdub3F1b3RlKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpZiBjb2x1bW4tbmFtZXMtcCAidHJ1ZSIgImZhbHNlIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgIChvcmctYmFiZWwtanVs aWEtcHJvY2Vzcy12YWx1ZS1yZXN1bHQKKwkob3JnLWJhYmVsLXJlc3VsdC1jb25kIHJlc3VsdC1w YXJhbXMKKwkgICh3aXRoLXRlbXAtYnVmZmVyCisJICAgIChpbnNlcnQtZmlsZS1jb250ZW50cyB0 bXAtZmlsZSkKKwkgICAgKGJ1ZmZlci1zdHJpbmcpKQorCSAgKG9yZy1iYWJlbC1pbXBvcnQtZWxp c3AtZnJvbS1maWxlIHRtcC1maWxlICcoNCkpKQorCWNvbHVtbi1uYW1lcy1wKSkpCisgICAgKG91 dHB1dCAob3JnLWJhYmVsLWV2YWwgb3JnLWJhYmVsLWp1bGlhLWNvbW1hbmQgYm9keSkpKSkKKwor KGRlZnVuIG9yZy1iYWJlbC1qdWxpYS1ldmFsdWF0ZS1zZXNzaW9uCisgIChzZXNzaW9uIGJvZHkg cmVzdWx0LXR5cGUgcmVzdWx0LXBhcmFtcyBjb2x1bW4tbmFtZXMtcCByb3ctbmFtZXMtcCkKKyAg IkV2YWx1YXRlIEJPRFkgaW4gU0VTU0lPTi4KK0lmIFJFU1VMVC1UWVBFIGVxdWFscyAnb3V0cHV0 IHRoZW4gcmV0dXJuIHN0YW5kYXJkIG91dHB1dCBhcyBhCitzdHJpbmcuICBJZiBSRVNVTFQtVFlQ RSBlcXVhbHMgJ3ZhbHVlIHRoZW4gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUKK2xhc3Qgc3RhdGVt ZW50IGluIEJPRFksIGFzIGVsaXNwLiIKKyAgKGNsLWNhc2UgcmVzdWx0LXR5cGUKKyAgICAodmFs dWUKKyAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAoaW5zZXJ0IChvcmctYmFiZWwtY2hv bXAgYm9keSkpCisgICAgICAgKGxldCAoKGVzcy1sb2NhbC1wcm9jZXNzLW5hbWUKKwkgICAgICAo cHJvY2Vzcy1uYW1lIChnZXQtYnVmZmVyLXByb2Nlc3Mgc2Vzc2lvbikpKQorCSAgICAgKGVzcy1l dmFsLXZpc2libHktcCBuaWwpKQorCSAoZXNzLWV2YWwtYnVmZmVyIG5pbCkpKQorICAgICAobGV0 ICgodG1wLWZpbGUgKG9yZy1iYWJlbC10ZW1wLWZpbGUgImp1bGlhLSIpKSkKKyAgICAgICAob3Jn LWJhYmVsLWNvbWludC1ldmFsLWludmlzaWJseS1hbmQtd2FpdC1mb3ItZmlsZQorCXNlc3Npb24g dG1wLWZpbGUKKwkoZm9ybWF0IG9yZy1iYWJlbC1qdWxpYS13cml0ZS1vYmplY3QtY29tbWFuZAor ICAgICAgICAgICAgICAgICJhbnMiCisJCShvcmctYmFiZWwtcHJvY2Vzcy1maWxlLW5hbWUgdG1w LWZpbGUgJ25vcXVvdGUpCisgICAgICAgICAgICAgICAgKGlmIGNvbHVtbi1uYW1lcy1wICJ0cnVl IiAiZmFsc2UiKQorICAgICAgICAgICAgICAgICkpCisgICAgICAgKG9yZy1iYWJlbC1qdWxpYS1w cm9jZXNzLXZhbHVlLXJlc3VsdAorCShvcmctYmFiZWwtcmVzdWx0LWNvbmQgcmVzdWx0LXBhcmFt cworCSAgKHdpdGgtdGVtcC1idWZmZXIKKwkgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIHRtcC1m aWxlKQorCSAgICAoYnVmZmVyLXN0cmluZykpCisJICAob3JnLWJhYmVsLWltcG9ydC1lbGlzcC1m cm9tLWZpbGUgdG1wLWZpbGUgJyg0KSkpCisJY29sdW1uLW5hbWVzLXApKSkKKyAgICAob3V0cHV0 CisgICAgIChtYXBjb25jYXQKKyAgICAgICdvcmctYmFiZWwtY2hvbXAKKyAgICAgIChidXRsYXN0 CisgICAgICAgKGRlbHEgbmlsCisJICAgICAobWFwY2FyCisJICAgICAgKGxhbWJkYSAobGluZSkg KHdoZW4gKD4gKGxlbmd0aCBsaW5lKSAwKSBsaW5lKSkKKwkgICAgICAobWFwY2FyCisJICAgICAg IChsYW1iZGEgKGxpbmUpIDs7IGNsZWFudXAgZXh0cmEgcHJvbXB0cyBsZWZ0IGluIG91dHB1dAor CQkgKGlmIChzdHJpbmctbWF0Y2gKKwkJICAgICAgIl5cXChbPisuXVxcKFsgXVs+LitdXFwpKlsg XVxcKSIKKwkJICAgICAgKGNhciAoc3BsaXQtc3RyaW5nIGxpbmUgIlxuIikpKQorCQkgICAgIChz dWJzdHJpbmcgbGluZSAobWF0Y2gtZW5kIDEpKQorCQkgICBsaW5lKSkKKwkgICAgICAgKG9yZy1i YWJlbC1jb21pbnQtd2l0aC1vdXRwdXQgKHNlc3Npb24gb3JnLWJhYmVsLWp1bGlhLWVvZS1vdXRw dXQpCisJCSAoaW5zZXJ0IChtYXBjb25jYXQgJ29yZy1iYWJlbC1jaG9tcAorCQkJCSAgICAobGlz dCBib2R5IG9yZy1iYWJlbC1qdWxpYS1lb2UtaW5kaWNhdG9yKQorCQkJCSAgICAiXG4iKSkKKyAg ICAgICAgICAgICAgICAgKGluZmVyaW9yLWVzcy1zZW5kLWlucHV0KSkpKSkpICJcbiIpKSkpCisK KyhkZWZ1biBvcmctYmFiZWwtanVsaWEtcHJvY2Vzcy12YWx1ZS1yZXN1bHQgKHJlc3VsdCBjb2x1 bW4tbmFtZXMtcCkKKyAgImp1bGlhLXNwZWNpZmljIHByb2Nlc3Npbmcgb2YgcmV0dXJuIHZhbHVl LgorSW5zZXJ0IGhsaW5lIGlmIGNvbHVtbiBuYW1lcyBpbiBvdXRwdXQgaGF2ZSBiZWVuIHJlcXVl c3RlZC4iCisgIChpZiBjb2x1bW4tbmFtZXMtcAorICAgICAgKGNvbnMgKGNhciByZXN1bHQpIChj b25zICdobGluZSAoY2RyIHJlc3VsdCkpKQorICAgIHJlc3VsdCkpCisKKyhwcm92aWRlICdvYi1q dWxpYSkKKworOzs7IG9iLWp1bGlhLmVsIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvdGVzdGluZy9s aXNwL3Rlc3Qtb2ItanVsaWEuZWwgYi90ZXN0aW5nL2xpc3AvdGVzdC1vYi1qdWxpYS5lbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmY2ZDIxNzI2YQotLS0gL2Rldi9udWxs CisrKyBiL3Rlc3RpbmcvbGlzcC90ZXN0LW9iLWp1bGlhLmVsCkBAIC0wLDAgKzEsMjc0IEBACis7 OzsgdGVzdC1vYi1weXRob24uZWwgLS0tIHRlc3RzIGZvciBvYi1weXRob24uZWwKKworOzsgQ29w eXJpZ2h0IChjKSAyMDExLTIwMTQsIDIwMTksIDIwMjEgRXJpYyBTY2h1bHRlCis7OyBBdXRob3Jz OiBQZWRybyBCcnVlbCwgYmFzZWQgb24gdGVzdC1vYi1weXRob24uZWwgYnkgRXJpYyBTY2h1bHRl Cis7OyBNYWludGFpbmVyOiBQZWRybyBCcnVlbCA8cGVkcm8uYnJ1ZWxAZ21haWwuY29tPgorCis7 OyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgR05VIEVtYWNzLgorCis7OyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor OzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorCis7OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCis7OyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzsgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorCis7OzsgQ29kZToKKyhvcmctdGVzdC1mb3ItZXhlY3V0YWJsZSAianVsaWEi KQorKHVubGVzcyAoZmVhdHVyZXAgJ29iLWp1bGlhKQorICAoc2lnbmFsICdtaXNzaW5nLXRlc3Qt ZGVwZW5kZW5jeSAiU3VwcG9ydCBmb3IganVsaWEgY29kZSBibG9ja3MiKSkKKworKGVydC1kZWZ0 ZXN0IHRlc3Qtb2ItanVsaWEvY29sbmFtZXMteWVzLWhlYWRlci1hcmd1bWVudCAoKQorICAoc2hv dWxkCisgICAoZXF1YWwgJygoImNvbCIpIGhsaW5lICgiYSIpICgiYiIpKQorCSAgKG9yZy10ZXN0 LXdpdGgtdGVtcC10ZXh0ICIjK25hbWU6IGVnCit8IGNvbCB8Cit8LS0tLS18Cit8IGEgICB8Cit8 IGIgICB8CisKKyMraGVhZGVyOiA6Y29sbmFtZXMgeWVzCisjK2hlYWRlcjogOnZhciB4ID0gZWcK Kzxwb2ludD4jK2JlZ2luX3NyYyBqdWxpYQorcmV0dXJuIHgKKyMrZW5kX3NyYyIKKwkgICAgKG9y Zy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LW9iLWp1 bGlhL2NvbG5hbWVzLXllcy1oZWFkZXItYXJndW1lbnQtYWdhaW4gKCkKKyAgKHNob3VsZAorICAg KGVxdWFsICcoKCJhIikgaGxpbmUgKCJiKiIpICgiYyoiKSkKKwkgIChvcmctdGVzdC13aXRoLXRl bXAtdGV4dCAiIytuYW1lOiBsZXNzLWNvbHMKK3wgYSB8Cit8LS0tfAorfCBiIHwKK3wgYyB8CisK KyMraGVhZGVyOiA6Y29sbmFtZXMgeWVzCis8cG9pbnQ+IytiZWdpbl9zcmMganVsaWEgOnZhciB0 YWI9bGVzcy1jb2xzCisgIHJldHVybiBbW3ZhbCArICcqJyBmb3IgdmFsIGluIHJvd10gZm9yIHJv dyBpbiB0YWJdCisjK2VuZF9zcmMiCisJICAgIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2sp KSkpKQorCisoZXJ0LWRlZnRlc3QgdGVzdC1vYi1qdWxpYS9jb2xuYW1lcy1uaWwtaGVhZGVyLWFy Z3VtZW50ICgpCisgIChzaG91bGQKKyAgIChlcXVhbCAnKCgiY29sIikgaGxpbmUgKCJhIikgKCJi IikpCisJICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgIiMrbmFtZTogZWcKK3wgY29sIHwKK3wt LS0tLXwKK3wgYSAgIHwKK3wgYiAgIHwKKworIytoZWFkZXI6IDpjb2xuYW1lcyBuaWwKKyMraGVh ZGVyOiA6dmFyIHggPSBlZworPHBvaW50PiMrYmVnaW5fc3JjIGp1bGlhCityZXR1cm4geAorIytl bmRfc3JjIgorCSAgICAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkKKworKGVydC1k ZWZ0ZXN0IHRlc3Qtb2ItanVsaWEvY29sbmFtZXMtbm8taGVhZGVyLWFyZ3VtZW50LWFnYWluICgp CisgIChzaG91bGQKKyAgIChlcXVhbCAnKCgiYSoiKSAoImIqIikgKCJjKiIpKQorCSAgKG9yZy10 ZXN0LXdpdGgtdGVtcC10ZXh0ICIjK25hbWU6IGxlc3MtY29scworfCBhIHwKK3wtLS18Cit8IGIg fAorfCBjIHwKKworIytoZWFkZXI6IDpjb2xuYW1lcyBubworPHBvaW50PiMrYmVnaW5fc3JjIGp1 bGlhIDp2YXIgdGFiPWxlc3MtY29scworICByZXR1cm4gW1t2YWwgKyAnKicgZm9yIHZhbCBpbiBy b3ddIGZvciByb3cgaW4gdGFiXQorIytlbmRfc3JjIgorCSAgICAob3JnLWJhYmVsLWV4ZWN1dGUt c3JjLWJsb2NrKSkpKSkKKworKGVydC1kZWZ0ZXN0IHRlc3Qtb2ItanVsaWEvY29sbmFtZXMtbm8t aGVhZGVyLWFyZ3VtZW50ICgpCisgIChzaG91bGQKKyAgIChlcXVhbCAnKCgiY29sIikgKCJhIikg KCJiIikpCisJICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgIiMrbmFtZTogZWcKK3wgY29sIHwK K3wtLS0tLXwKK3wgYSAgIHwKK3wgYiAgIHwKKworIytoZWFkZXI6IDpjb2xuYW1lcyBubworIyto ZWFkZXI6IDp2YXIgeCA9IGVnCis8cG9pbnQ+IytiZWdpbl9zcmMganVsaWEKK3JldHVybiB4Cisj K2VuZF9zcmMiCisJICAgIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKQorCisoZXJ0 LWRlZnRlc3QgdGVzdC1vYi1qdWxpYS9zZXNzaW9uLW11bHRpbGluZSAoKQorICAoc2hvdWxkCisg ICAoZXF1YWwgIjIwIgorCSAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0ICIjK2JlZ2luX3NyYyBq dWxpYSA6c2Vzc2lvbiA6cmVzdWx0cyBvdXRwdXQKKyAgZm9vID0gMAorICBmb3IgXyBpbiByYW5n ZSgxMCk6CisgICAgICBmb28gKz0gMQorCisgICAgICBmb28gKz0gMQorCisgIHByaW50KGZvbykK KyMrZW5kX3NyYyIKKwkgICAgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpCisKKyhl cnQtZGVmdGVzdCB0ZXN0LW9iLWp1bGlhL2luc2VydC1uZWNlc3NhcnktYmxhbmstbGluZS13aGVu LXNlbmRpbmctY29kZS10by1pbnRlcnByZXRlciAoKQorICAoc2hvdWxkCisgICAoZXF1YWwgMiAo b3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgIiMrYmVnaW5fc3JjIGp1bGlhIDpzZXNzaW9uIDpyZXN1 bHRzIHZhbHVlCitpZiBUcnVlOgorICAgIDEKKzIKKyMrZW5kX3NyYyIKKwkgICAgICA7OyBQcmV2 aW91c2x5LCB3aGlsZSBhZGRpbmcgYDpzZXNzaW9uJyB0byBhIG5vcm1hbCBjb2RlCisJICAgICAg OzsgYmxvY2ssIGFsc28gbmVlZCB0byBhZGQgZXh0cmEgYmxhbmsgbGluZXMgdG8gZW5kCisJICAg ICAgOzsgaW5kZW50IGJsb2NrIG9yIGluZGljYXRlIGxvZ2ljYWwgc2VjdGlvbnMuIE5vdywgdGhl CisJICAgICAgOzsgYG9yZy1iYWJlbC1qdWxpYS1ldmFsdWF0ZS1zZXNzaW9uJyBjYW4gZG8gaXQK KwkgICAgICA7OyBhdXRvbWF0aWNhbGx5OgorCSAgICAgIDs7CisJICAgICAgOzsgPj4+IGlmIFRy dWU6CisJICAgICAgOzsgPj4+ICAgICAxCisJICAgICAgOzsgPj4+IDxpbnNlcnRfYmxhbmtfbGlu ZV9oZXJlPgorCSAgICAgIDs7ID4+PiAyCisJICAgICAgKG9yZy1iYWJlbC1leGVjdXRlLW1heWJl KQorCSAgICAgIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKQorCisoZXJ0LWRlZnRl c3QgdGVzdC1vYi1qdWxpYS9pZi1lbHNlLWJsb2NrICgpCisgIChzaG91bGQKKyAgIChlcXVhbCAi c3VjY2VzcyIgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0ICIjK2JlZ2luX3NyYyBqdWxpYSA6c2Vz c2lvbiA6cmVzdWx0cyB2YWx1ZQordmFsdWUgPSAnZmFpbHVyZScKK2lmIEZhbHNlOgorICAgIHBh c3MKK2Vsc2U6CisgICAgdmFsdWUgPSAnc3VjY2VzcycKK3ZhbHVlCisjK2VuZF9zcmMiCisJICAg ICAgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0 LW9iLWp1bGlhL2luZGVudC1ibG9jay13aXRoLWJsYW5rLWxpbmVzICgpCisgIChzaG91bGQKKyAg IChlcXVhbCAyMAorCSAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0ICIjK2JlZ2luX3NyYyBqdWxp YSA6c2Vzc2lvbiA6cmVzdWx0cyB2YWx1ZQorICBmb28gPSAwCisgIGZvciBpIGluIHJhbmdlKDEw KToKKyAgICAgIGZvbyArPSAxCisKKyAgICAgIGZvbyArPSAxCisKKyAgZm9vCisjK2VuZF9zcmMi CisJICAgIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKQorCisoZXJ0LWRlZnRlc3Qg dGVzdC1vYi1qdWxpYS9hc3NpZ24tdW5kZXJzY29yZSAoKQorICAoc2hvdWxkCisgICAoZXF1YWwg InN1Y2Nlc3MiCisJICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgIiMrYmVnaW5fc3JjIGp1bGlh IDpzZXNzaW9uIDpyZXN1bHRzIHZhbHVlCitfID0gJ2ZhaWx1cmUnCisnc3VjY2VzcycKKyMrZW5k X3NyYyIKKwkgICAgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpCisKKyhlcnQtZGVm dGVzdCB0ZXN0LW9iLWp1bGlhL211bHRpbGluZS12YXIgKCkKKyAgKHNob3VsZAorICAgKGVxdWFs ICJhXG5iXG5jIgorCSAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0ICIjK2JlZ2luX3NyYyBqdWxp YSA6dmFyIHRleHQ9XCJhXFxuYlxcbmNcIgorcmV0dXJuIHRleHQKKyMrZW5kX3NyYyIKKwkgICAg KG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LW9i LWp1bGlhL211bHRpbGluZS1zdHIgKCkKKyAgKHNob3VsZAorICAgKGVxdWFsICJhXG5iXG5jIgor CSAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0ICIjK2JlZ2luX3NyYyBqdWxpYQordGV4dD1cImFc XG5iXFxuY1wiCityZXR1cm4gdGV4dAorIytlbmRfc3JjIgorCSAgICAob3JnLWJhYmVsLWV4ZWN1 dGUtc3JjLWJsb2NrKSkpKSkKKworKGVydC1kZWZ0ZXN0IHRlc3Qtb2ItanVsaWEvaGVhZGVyLXZh ci1hc3NpZ25tZW50ICgpCisgIChzaG91bGQKKyAgIChlcXVhbCAic3VjY2VzcyIKKwkgIChvcmct dGVzdC13aXRoLXRlbXAtdGV4dCAiIytiZWdpbl9zcmMganVsaWEgOnZhciB0ZXh0PVwiZmFpbHVy ZVwiCit0ZXh0Cit0ZXh0PVwic3VjY2Vzc1wiCityZXR1cm4gdGV4dAorIytlbmRfc3JjIgorCSAg ICAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkKKworKGVydC1kZWZ0ZXN0IHRlc3Qt b2ItanVsaWEvc2Vzc2lvbi12YWx1ZS1zbGVlcCAoKQorICAoc2hvdWxkCisgICAoZXF1YWwgInN1 Y2Nlc3MiCisJICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgIiMrYmVnaW5fc3JjIGp1bGlhIDpz ZXNzaW9uIDpyZXN1bHRzIHZhbHVlCitpbXBvcnQgdGltZQordGltZS5zbGVlcCguMSkKKydzdWNj ZXNzJworIytlbmRfc3JjIgorCSAgICAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkK KworKGVydC1kZWZ0ZXN0IHRlc3Qtb2ItanVsaWEvYXN5bmMtc2ltcGxlLXNlc3Npb24tb3V0cHV0 ICgpCisgIChsZXQgKChvcmctYmFiZWwtdGVtcG9yYXJ5LWRpcmVjdG9yeSB0ZW1wb3JhcnktZmls ZS1kaXJlY3RvcnkpCisgICAgICAgIChvcmctY29uZmlybS1iYWJlbC1ldmFsdWF0ZSBuaWwpKQor ICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dAorICAgICAiIytiZWdpbl9zcmMganVsaWEgOnNl c3Npb24gOmFzeW5jIHllcyA6cmVzdWx0cyBvdXRwdXQKK2ltcG9ydCB0aW1lCit0aW1lLnNsZWVw KC4xKQorcHJpbnQoJ1llcCEnKQorIytlbmRfc3JjXG4iCisgICAgIChzaG91bGQgKGxldCAoKGV4 cGVjdGVkICJZZXAhIikpCisJICAgICAgIChhbmQgKG5vdCAoc3RyaW5nPSBleHBlY3RlZCAob3Jn LWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpCisJCSAgICAoc3RyaW5nPSBleHBlY3RlZAorCQkJ ICAgICAocHJvZ24KKwkJCSAgICAgICAoc2xlZXAtZm9yIDAgMjAwKQorCQkJICAgICAgIChnb3Rv LWNoYXIgKG9yZy1iYWJlbC13aGVyZS1pcy1zcmMtYmxvY2stcmVzdWx0KSkKKwkJCSAgICAgICAo b3JnLWJhYmVsLXJlYWQtcmVzdWx0KSkpKSkpKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LW9iLWp1 bGlhL2FzeW5jLW5hbWVkLW91dHB1dCAoKQorICAobGV0IChvcmctY29uZmlybS1iYWJlbC1ldmFs dWF0ZQorICAgICAgICAob3JnLWJhYmVsLXRlbXBvcmFyeS1kaXJlY3RvcnkgdGVtcG9yYXJ5LWZp bGUtZGlyZWN0b3J5KQorICAgICAgICAoc3JjLWJsb2NrICIjK2JlZ2luX3NyYyBqdWxpYSA6YXN5 bmMgOnNlc3Npb24gOnJlc3VsdHMgb3V0cHV0CitwcmludChcIlllcCFcIikKKyMrZW5kX3NyYyIp CisgICAgICAgIChyZXN1bHRzLWJlZm9yZSAiCisKKyMrTkFNRTogZm9vYmFyCisjK1JFU1VMVFM6 Cis6IE5vcGUhIikKKyAgICAgICAgKHJlc3VsdHMtYWZ0ZXIgIgorCisjK05BTUU6IGZvb2Jhcgor IytSRVNVTFRTOgorOiBZZXAhCisiKSkKKyAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQKKyAg ICAgKGNvbmNhdCBzcmMtYmxvY2sgcmVzdWx0cy1iZWZvcmUpCisgICAgIChzaG91bGQgKHByb2du IChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spCisgICAgICAgICAgICAgICAgICAgIChzbGVl cC1mb3IgMCAyMDApCisgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9IChjb25jYXQgc3JjLWJs b2NrIHJlc3VsdHMtYWZ0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXIt c3RyaW5nKSkpKSkpKQorCisoZXJ0LWRlZnRlc3QgdGVzdC1vYi1qdWxpYS9hc3luYy1vdXRwdXQt ZHJhd2VyICgpCisgIChsZXQgKG9yZy1jb25maXJtLWJhYmVsLWV2YWx1YXRlCisgICAgICAgIChv cmctYmFiZWwtdGVtcG9yYXJ5LWRpcmVjdG9yeSB0ZW1wb3JhcnktZmlsZS1kaXJlY3RvcnkpCisg ICAgICAgIChzcmMtYmxvY2sgIiMrYmVnaW5fc3JjIGp1bGlhIDphc3luYyA6c2Vzc2lvbiA6cmVz dWx0cyBvdXRwdXQgZHJhd2VyCitwcmludChsaXN0KHJhbmdlKDMpKSkKKyMrZW5kX3NyYyIpCisg ICAgICAgIChyZXN1bHQgIgorCisjK1JFU1VMVFM6Cis6cmVzdWx0czoKK1swLCAxLCAyXQorOmVu ZDoKKyIpKQorICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dAorICAgICBzcmMtYmxvY2sKKyAg ICAgKHNob3VsZCAocHJvZ24gKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykKKyAgICAgICAg ICAgICAgICAgICAgKHNsZWVwLWZvciAwIDIwMCkKKyAgICAgICAgICAgICAgICAgICAgKHN0cmlu Zz0gKGNvbmNhdCBzcmMtYmxvY2sgcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYnVmZmVyLXN0cmluZykpKSkpKSkKKworKHByb3ZpZGUgJ3Rlc3Qtb2ItanVsaWEpCisKKzs7 OyB0ZXN0LW9iLWp1bGlhLmVsIGVuZHMgaGVyZQotLSAKMi4zMy4wCgo= --0000000000007e16c305ccc32653--