From unknown Wed Jun 18 00:27:05 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#40995 <40995@debbugs.gnu.org> To: bug#40995 <40995@debbugs.gnu.org> Subject: Status: [PATCH] Delete libraries obsolete since 23.1 and 23.2 Reply-To: bug#40995 <40995@debbugs.gnu.org> Date: Wed, 18 Jun 2025 07:27:05 +0000 retitle 40995 [PATCH] Delete libraries obsolete since 23.1 and 23.2 reassign 40995 emacs submitter 40995 Stefan Kangas severity 40995 normal tag 40995 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Fri May 01 08:07:08 2020 Received: (at submit) by debbugs.gnu.org; 1 May 2020 12:07:08 +0000 Received: from localhost ([127.0.0.1]:48377 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jUURd-000531-Md for submit@debbugs.gnu.org; Fri, 01 May 2020 08:07:08 -0400 Received: from lists.gnu.org ([209.51.188.17]:40640) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jUURV-00052Q-3n for submit@debbugs.gnu.org; Fri, 01 May 2020 08:07:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47664) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jUUQw-000051-EW for bug-gnu-emacs@gnu.org; Fri, 01 May 2020 08:06:56 -0400 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jUUNd-0003Ie-1z for bug-gnu-emacs@gnu.org; Fri, 01 May 2020 08:06:22 -0400 Received: from mail-yb1-f177.google.com ([209.85.219.177]:42959) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jUUNb-0003FA-O3 for bug-gnu-emacs@gnu.org; Fri, 01 May 2020 08:02:56 -0400 Received: by mail-yb1-f177.google.com with SMTP id i16so4840478ybq.9 for ; Fri, 01 May 2020 05:02:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=rpFe102HyEzto5QjjzTgu8EcgqQXMDJP4JEAVr+Dib0=; b=ccgPICB+DlvZzEBAqmyJPW/8roQohqNUbDCBX3N8+egVz1vgVIhbctkrM+32QbpgvR FqMEXjsJaEPeULF4/OLXez4HlAHomqEFIXMTzTv2fYJdfryQngutFF5KVEgl9Kpew3n2 yLvLpfcpsaXNXAPfXDFBVuoNpTumjoIEXDRjA2PtBqTl2Iudg2GLddaMSQD3Ml2Zf7tM 8Y81DCB7fBg4DrRDHN7dhH/fupyOQhj6oC66mqV0WD9/EfC3aTfK4hCY17K8xWR0Wxm/ hyr55LmYNDHa91pYPOPy4DMScpP8x6V/dkFZ5ugnjFJSelQSh3MUT0fmVLd3u4uT6DVg Rekg== X-Gm-Message-State: AGi0PuZBPX/xdpGFR+QhR0SVo1+Pf4H2l1Ov6NsGd4J5otE0nxP4nWxv NMsPvRrGpY5tbjZgpHYuQTw2CUIP7cbQeIuS3fnpxPGdAMc= X-Google-Smtp-Source: APiQypKLssYfNPUTBoWCDSM2v/qxLOet45FoiQYX6QP8KLw+dU1ru7VWcPb2X1QjgLg/f14t9f+aLPqDn1/e1a2tmNE= X-Received: by 2002:a25:68c3:: with SMTP id d186mr3545741ybc.181.1588334574147; Fri, 01 May 2020 05:02:54 -0700 (PDT) MIME-Version: 1.0 From: Stefan Kangas Date: Fri, 1 May 2020 14:02:42 +0200 Message-ID: Subject: [PATCH] Delete libraries obsolete since 23.1 and 23.2 To: bug-gnu-emacs@gnu.org Content-Type: multipart/mixed; boundary="00000000000013cdf905a494f686" Received-SPF: pass client-ip=209.85.219.177; envelope-from=stefankangas@gmail.com; helo=mail-yb1-f177.google.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/01 08:02:54 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.219.177 X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: 2010-05-08 - Emacs 23.2 released 2009-07-29 - Emacs 23.1 released I think we can now safely remove the following libraries, obsolete since the above dates: [23.2] * lisp/obsolete/ledit.el [23.2] * lisp/obsolete/lmenu.el [23.2] * lisp/obsolete/lucid.el [23.1] * lisp/ [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: gnu.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stefankangas[at]gmail.com) 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [209.51.188.17 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.51.188.17 listed in wl.mailspike.net] 0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom freemail headers are different 2.0 SPOOFED_FREEMAIL No description available. X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.8 (-) --00000000000013cdf905a494f686 Content-Type: text/plain; charset="UTF-8" 2010-05-08 - Emacs 23.2 released 2009-07-29 - Emacs 23.1 released I think we can now safely remove the following libraries, obsolete since the above dates: [23.2] * lisp/obsolete/ledit.el [23.2] * lisp/obsolete/lmenu.el [23.2] * lisp/obsolete/lucid.el [23.1] * lisp/obsolete/old-whitespace.el The libraries ledit.el, lmenu.el and lucid.el concern compatibility with the long defunct Lucid Emacs, and old-whitespace.el is the old version of whitespace.el. Please see the attached patch. Best regards, Stefan Kangas PS. There are also two libraries, fast-lock.el and lazy-lock.el obsolete since Emacs 22, released in 2007. Perhaps they should also be removed. --00000000000013cdf905a494f686 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Delete-libraries-obsolete-since-23.1-or-23.2.patch" Content-Disposition: attachment; filename="0001-Delete-libraries-obsolete-since-23.1-or-23.2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k9o5agcs0 RnJvbSBlMzVjZGZhMWRlNTNkMTBmMjQ3YzYwZmY4OTMzODQ3YjMzZmM2NTRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5rYW5nYXNAZ21haWwuY29t PgpEYXRlOiBGcmksIDEgTWF5IDIwMjAgMTM6Mjk6MDYgKzAyMDAKU3ViamVjdDogW1BBVENIXSBE ZWxldGUgbGlicmFyaWVzIG9ic29sZXRlIHNpbmNlIDIzLjEgb3IgMjMuMgoKRW1hY3MgMjMuMiB3 YXMgcmVsZWFzZWQgMTAgeWVhcnMgYWdvLiAgb2xkLXdoaXRlc3BhY2UuZWwgaGFzIGEKcmVwbGFj ZW1lbnQgaW4gd2hpdGVzcGFjZS5lbCBhbmQgaXMgbm8gbG9uZ2VyIHJlbGV2YW50LiAgVGhlIG90 aGVyCmxpYnJhcmllcyBpbXBsZW1lbnQgY29tcGF0aWJpbGl0eSB3aXRoIEx1Y2lkIEVtYWNzLCBh IG1vZGlmaWVkIHZlcnNpb24Kb2YgRW1hY3MgbGFzdCByZWxlYXNlZCBpbiB0aGUgMTk5MHMuCgoq IGxpc3Avb2Jzb2xldGUvbGVkaXQuZWw6CiogbGlzcC9vYnNvbGV0ZS9sbWVudS5lbDoKKiBsaXNw L29ic29sZXRlL2x1Y2lkLmVsOgoqIGxpc3Avb2Jzb2xldGUvb2xkLXdoaXRlc3BhY2UuZWw6IERl bGV0ZSBmaWxlcy4gIFRoZXNlIGxpYnJhcmllcyBoYXZlCmJlZW4gb2Jzb2xldGUgc2luY2UgRW1h Y3MgMjMuMSBvciAyMy4yLgoqIGV0Yy9ORVdTOiBBbm5vdW5jZSB0aGVpciBkZWxldGlvbi4KCiog YWRtaW4vYXV0aG9ycy5lbCAoYXV0aG9ycy1pZ25vcmVkLWZpbGVzKQooYXV0aG9ycy1maXhlZC1l bnRyaWVzLCBhdXRob3JzLXZhbGlkLWZpbGUtbmFtZXMpOgoqIGxpc3AvZW11bGF0aW9uL3ZpcGVy LmVsICh2aXBlci1tb2RlKToKKiBsaXNwL2ZmYXAuZWwgKGZmYXAtbWVudS1hc2spOiBSZW1vdmUg cmVmZXJlbmNlcyB0byBkZWxldGVkIGZpbGVzLgotLS0KIGFkbWluL2F1dGhvcnMuZWwgICAgICAg ICAgICAgICAgfCAgIDYgKy0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQg KwogbGlzcC9lbXVsYXRpb24vdmlwZXIuZWwgICAgICAgICB8ICAgMSAtCiBsaXNwL2ZmYXAuZWwg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBsaXNwL29ic29sZXRlL2xlZGl0LmVsICAgICAg ICAgIHwgMTU3IC0tLS0tLS0KIGxpc3Avb2Jzb2xldGUvbG1lbnUuZWwgICAgICAgICAgfCA0NDUg LS0tLS0tLS0tLS0tLS0tLS0tCiBsaXNwL29ic29sZXRlL2x1Y2lkLmVsICAgICAgICAgIHwgMjEx IC0tLS0tLS0tLQogbGlzcC9vYnNvbGV0ZS9vbGQtd2hpdGVzcGFjZS5lbCB8IDgwMSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMo KyksIDE2MTkgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgbGlzcC9vYnNvbGV0ZS9s ZWRpdC5lbAogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpc3Avb2Jzb2xldGUvbG1lbnUuZWwKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBsaXNwL29ic29sZXRlL2x1Y2lkLmVsCiBkZWxldGUgbW9kZSAxMDA2NDQg bGlzcC9vYnNvbGV0ZS9vbGQtd2hpdGVzcGFjZS5lbAoKZGlmZiAtLWdpdCBhL2FkbWluL2F1dGhv cnMuZWwgYi9hZG1pbi9hdXRob3JzLmVsCmluZGV4IDEzYjIwM2I5YmMuLmRjNTdjMGE2YjkgMTAw NjQ0Ci0tLSBhL2FkbWluL2F1dGhvcnMuZWwKKysrIGIvYWRtaW4vYXV0aG9ycy5lbApAQCAtMzY1 LDcgKzM2NSw3IEBAIGF1dGhvcnMtaWdub3JlZC1maWxlcwogICAgICJsaWIvc3RkYXJnLmluLmgi ICJsaWIvc3RkYm9vbC5pbi5oIgogICAgICJ1bmlkYXRhL2JpZGltaXJyb3IuYXdrIiAidW5pZGF0 YS9iaWRpdHlwZS5hd2siCiAgICAgInNwbGl0LW1hbiIgIlhrZXltYXAudHh0IiAibXMtN2JrZXJt aXQiICJ1bGltaXQuaGFjayIKLSAgICAiZ251LWhwMzAwIiAicmVmY2FyZC5iaXQiICJsZWRpdC5s IiAiZm9ybXMuUkVBRE1FIiAiZm9ybXMtZDIuZGF0IgorICAgICJnbnUtaHAzMDAiICJyZWZjYXJk LmJpdCIgImZvcm1zLlJFQURNRSIgImZvcm1zLWQyLmRhdCIKICAgICAiQ1hURVJNLURJQy9QWS50 aXQiICJDWFRFUk0tRElDL1pJUkFOTUEudGl0IgogICAgICJDWFRFUk0tRElDL0NUTGF1LnRpdCIg IkNYVEVSTS1ESUMvQ1RMYXVCLnRpdCIKICAgICAiY29weWluZy5wYXBlciIgImNlbGliYWN5LjEi ICJjb25kb20uMSIgImVjaG8ubXNnIiAic2V4LjYiCkBAIC02MDksNyArNjA5LDcgQEAgYXV0aG9y cy1maXhlZC1lbnRyaWVzCiAgICAgOzsgTm8gbG9uZ2VyIGRpc3RyaWJ1dGVkOiBsc2VsZWN0LmVs LgogICAgICgiTHVjaWQsIEluYy4iIDpjaGFuZ2VkICJieXRlY29kZS5jIiAiYnl0ZS1vcHQuZWwi ICJieXRlLXJ1bi5lbCIKICAgICAgImJ5dGVjb21wLmVsIiAiZGVsc2VsLmVsIiAiZGlzYXNzLmVs IiAiZmFjZXMuZWwiICJmb250LWxvY2suZWwiCi0gICAgICJsbWVudS5lbCIgIm1haWxhYmJyZXYu ZWwiICJzZWxlY3QuZWwiICJ4ZmFjZXMuYyIgInhzZWxlY3QuYyIpCisgICAgICJtYWlsYWJicmV2 LmVsIiAic2VsZWN0LmVsIiAieGZhY2VzLmMiICJ4c2VsZWN0LmMiKQogICAgIDs7IE1DQy4gIE5v IGxvbmdlciBkaXN0cmlidXRlZDogZW1hY3NzZXJ2ZXIuYy4KICAgICAoIk1pY3JvZWxlY3Ryb25p Y3MgYW5kIENvbXB1dGVyIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24iCiAgICAgIDpjaGFuZ2VkICJl dGFncy5jIiAiZW1hY3NjbGllbnQuYyIgIm1vdmVtYWlsLmMiCkBAIC03NzMsNyArNzczLDcgQEAg YXV0aG9ycy12YWxpZC1maWxlLW5hbWVzCiAgICAgImVyYy1oZWNvbXBsZXRlLmVsIgogICAgICJl c2hlbGwvZXNoLW1haW50LmVsIgogICAgICJsYW5ndWFnZS9wZXJzaWFuLmVsIgotICAgICJsZWRp dC5lbCIgIm1lZXNlLmVsIiAiaXN3aXRjaGIuZWwiICJsb25nbGluZXMuZWwiCisgICAgIm1lZXNl LmVsIiAiaXN3aXRjaGIuZWwiICJsb25nbGluZXMuZWwiCiAgICAgIm1oLWV4ZWMuZWwiICJtaC1p bml0LmVsIiAibWgtY3VzdG9taXplLmVsIgogICAgICJuZXQvem9uZS1tb2RlLmVsIiAieGVzYW0u ZWwiCiAgICAgInRlcm0vbWFjLXdpbi5lbCIgInN1cC1tb3VzZS5lbCIKZGlmZiAtLWdpdCBhL2V0 Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggYzQ5MTE3MjZhOC4uNGVkZGEwOTQ1ZCAxMDA2NDQKLS0t IGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTMzMSw2ICszMzEsMTAgQEAgVGhpcyBpcyBu byBsb25nZXIgc3VwcG9ydGVkLCBhbmQgc2V0dGluZyB0aGlzIHZhcmlhYmxlIGhhcyBubyBlZmZl Y3QuCiAqKiBUaGUgbWFjcm8gJ3dpdGgtZGlzcGxheWVkLWJ1ZmZlci13aW5kb3cnIGlzIG5vdyBv YnNvbGV0ZS4KIFVzZSBtYWNybyAnd2l0aC1jdXJyZW50LWJ1ZmZlci13aW5kb3cnIHdpdGggYWN0 aW9uIGFsaXN0IGVudHJ5ICdib2R5LWZ1bmN0aW9uJy4KIAorLS0tCisqKiBTb21lIGxpYnJhcmll cyBvYnNvbGV0ZSBzaW5jZSBFbWFjcyAyMyBoYXZlIGJlZW4gcmVtb3ZlZDoKKydsZWRpdC5lbCcs ICdsbWVudS5lbCcsICdsdWNpZC5lbCBhbmQgJ29sZC13aGl0ZXNwYWNlLmVsJy4KKwogDAogKiBM aXNwIENoYW5nZXMgaW4gRW1hY3MgMjguMQogCmRpZmYgLS1naXQgYS9saXNwL2VtdWxhdGlvbi92 aXBlci5lbCBiL2xpc3AvZW11bGF0aW9uL3ZpcGVyLmVsCmluZGV4IDQ5MmMzMWJkZTcuLjhlN2Ez NGZjNjkgMTAwNjQ0Ci0tLSBhL2xpc3AvZW11bGF0aW9uL3ZpcGVyLmVsCisrKyBiL2xpc3AvZW11 bGF0aW9uL3ZpcGVyLmVsCkBAIC0xMjIxLDcgKzEyMjEsNiBAQCB2aXBlci12aS1pbnRlcmNlcHQt bWFwCiAgICh2aXBlci1oYXJuZXNzLW1pbm9yLW1vZGUgIm91dGxpbmUiKQogICAodmlwZXItaGFy bmVzcy1taW5vci1tb2RlICJhbGxvdXQiKQogICAodmlwZXItaGFybmVzcy1taW5vci1tb2RlICJ4 cmVmIikKLSAgKHZpcGVyLWhhcm5lc3MtbWlub3ItbW9kZSAibG1lbnUiKQogICAodmlwZXItaGFy bmVzcy1taW5vci1tb2RlICJ2YyIpCiAgICh2aXBlci1oYXJuZXNzLW1pbm9yLW1vZGUgImx0eC1t YXRoIikgOyBMYVRlWC1tYXRoLW1vZGUgaW4gQVVDLVRlWCwgd2hpY2gKICAgKHZpcGVyLWhhcm5l c3MtbWlub3ItbW9kZSAibGF0ZXgiKSAgICA7IHNpdHMgaW4gb25lIG9mIHRoZXNlIHR3byBmaWxl cwpkaWZmIC0tZ2l0IGEvbGlzcC9mZmFwLmVsIGIvbGlzcC9mZmFwLmVsCmluZGV4IGVhZDc5YjQ1 YzAuLmQ2NTZiMzczNzIgMTAwNjQ0Ci0tLSBhL2xpc3AvZmZhcC5lbAorKysgYi9saXNwL2ZmYXAu ZWwKQEAgLTE2MDcsNyArMTYwNyw3IEBAIGZmYXAtbWVudS1hc2sKIEZ1bmN0aW9uIENPTlQgaXMg YXBwbGllZCB0byB0aGUgZW50cnkgY2hvc2VuIGJ5IHRoZSB1c2VyLiIKICAgOzsgTm90ZTogdGhp cyBmdW5jdGlvbiBpcyB1c2VkIHdpdGggYSBkaWZmZXJlbnQgY29udGludWF0aW9uCiAgIDs7IGJ5 IHRoZSBmZmFwLXVybCBhZGQtb24gcGFja2FnZS4KLSAgOzsgQ291bGQgdHJ5IHJld3JpdGluZyB0 byB1c2UgZWFzeW1lbnUuZWwgb3IgbG1lbnUuZWwuCisgIDs7IENvdWxkIHRyeSByZXdyaXRpbmcg dG8gdXNlIGVhc3ltZW51LmVsLgogICAobGV0IChjaG9pY2UpCiAgICAgKGNvbmQKICAgICAgOzsg RW1hY3MgbW91c2U6CmRpZmYgLS1naXQgYS9saXNwL29ic29sZXRlL2xlZGl0LmVsIGIvbGlzcC9v YnNvbGV0ZS9sZWRpdC5lbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk5YTA2ZGU1 Ny4uMDAwMDAwMDAwMAotLS0gYS9saXNwL29ic29sZXRlL2xlZGl0LmVsCisrKyAvZGV2L251bGwK QEAgLTEsMTU3ICswLDAgQEAKLTs7OyBsZWRpdC5lbCAtLS0gRW1hY3Mgc2lkZSBvZiBsZWRpdCBp bnRlcmZhY2UKLQotOzsgQ29weXJpZ2h0IChDKSAxOTg1LCAyMDAxLTIwMjAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0KLTs7IE1haW50YWluZXI6IGVtYWNzLWRldmVsQGdudS5vcmcK LTs7IEtleXdvcmRzOiBsYW5ndWFnZXMKLTs7IE9ic29sZXRlLXNpbmNlOiAyNC4zCi0KLTs7IFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KLQotOzsgR05VIEVtYWNzIGlzIGZyZWUgc29m dHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLTs7IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci07OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LQotOzsgR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi07OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLQotOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLTs7IGFsb25nIHdpdGggR05VIEVt YWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLQotOzs7 IENvbW1lbnRhcnk6Ci0KLTs7IFRoaXMgaXMgYSBtYWpvciBtb2RlIGZvciBlZGl0aW5nIExpc3p0 LgotCi07OzsgQ29kZToKLQotOzs7IFRvIGRvOgotOzs7IG8gbGlzcCAtPiBlbWFjcyBzaWRlIG9m IHRoaW5ncyAoZ3JpbmQtZGVmaW5pdGlvbiBhbmQgZmluZC1kZWZpbml0aW9uKQotCi0oZGVmdmFy IGxlZGl0LW1vZGUtbWFwIG5pbCkKLQotKGRlZmNvbnN0IGxlZGl0LXphcC1maWxlCi0gIChleHBh bmQtZmlsZS1uYW1lIChjb25jYXQgKHVzZXItbG9naW4tbmFtZSkgIi5sMSIpIHRlbXBvcmFyeS1m aWxlLWRpcmVjdG9yeSkKLSAgIkZpbGUgbmFtZSBmb3IgZGF0YSBzZW50IHRvIExpc3AgYnkgTGVk aXQuIikKLShkZWZjb25zdCBsZWRpdC1yZWFkLWZpbGUKLSAgKGV4cGFuZC1maWxlLW5hbWUgKGNv bmNhdCAodXNlci1sb2dpbi1uYW1lKSAiLmwyIikgdGVtcG9yYXJ5LWZpbGUtZGlyZWN0b3J5KQot ICAiRmlsZSBuYW1lIGZvciBkYXRhIHNlbnQgdG8gTGVkaXQgYnkgTGlzcC4iKQotKGRlZmNvbnN0 IGxlZGl0LWNvbXBpbGUtZmlsZQotICAoZXhwYW5kLWZpbGUtbmFtZSAoY29uY2F0ICh1c2VyLWxv Z2luLW5hbWUpICIubDQiKSB0ZW1wb3JhcnktZmlsZS1kaXJlY3RvcnkpCi0gICJGaWxlIG5hbWUg Zm9yIGRhdGEgc2VudCB0byBMaXNwIGNvbXBpbGVyIGJ5IExlZGl0LiIpCi0oZGVmY29uc3QgbGVk aXQtYnVmZmVyICIqTEVESVQqIgotICAiTmFtZSBvZiBidWZmZXIgaW4gd2hpY2ggTGVkaXQgYWNj dW11bGF0ZXMgZGF0YSB0byBzZW5kIHRvIExpc3AuIikKLQotOzs7IyMjYXV0b2xvYWQKLShkZWZj b25zdCBsZWRpdC1zYXZlLWZpbGVzIHQgIlwKLSpOb24tbmlsIG1lYW5zIExlZGl0IHNob3VsZCBz YXZlIGZpbGVzIGJlZm9yZSB0cmFuc2ZlcnJpbmcgdG8gTGlzcC4iKQotOzs7IyMjYXV0b2xvYWQK LShkZWZjb25zdCBsZWRpdC1nby10by1saXNwLXN0cmluZyAiJT9saXNwIiAiXAotKlNoZWxsIGNv bW1hbmRzIHRvIGV4ZWN1dGUgdG8gcmVzdW1lIExpc3Agam9iLiIpCi07OzsjIyNhdXRvbG9hZAot KGRlZmNvbnN0IGxlZGl0LWdvLXRvLWxpc3p0LXN0cmluZyAiJT9saXN6dCIgIlwKLSpTaGVsbCBj b21tYW5kcyB0byBleGVjdXRlIHRvIHJlc3VtZSBMaXNwIGNvbXBpbGVyIGpvYi4iKQotCi0oZGVm dW4gbGVkaXQtc2F2ZS1kZWZ1biAoKQotICAiU2F2ZSB0aGUgY3VycmVudCBkZWZ1biBpbiB0aGUg bGVkaXQgYnVmZmVyLiIKLSAgKGludGVyYWN0aXZlKQotICAoc2F2ZS1leGN1cnNpb24KLSAgIChl bmQtb2YtZGVmdW4pCi0gICAobGV0ICgoZW5kIChwb2ludCkpKQotICAgICAoYmVnaW5uaW5nLW9m LWRlZnVuKQotICAgICAoYXBwZW5kLXRvLWJ1ZmZlciBsZWRpdC1idWZmZXIgKHBvaW50KSBlbmQp KQotICAgKG1lc3NhZ2UgIkN1cnJlbnQgZGVmdW4gc2F2ZWQgZm9yIExpc3AiKSkpCi0KLShkZWZ1 biBsZWRpdC1zYXZlLXJlZ2lvbiAoYmVnIGVuZCkKLSAgIlNhdmUgdGhlIGN1cnJlbnQgcmVnaW9u IGluIHRoZSBsZWRpdCBidWZmZXIiCi0gIChpbnRlcmFjdGl2ZSAiciIpCi0gIChhcHBlbmQtdG8t YnVmZmVyIGxlZGl0LWJ1ZmZlciBiZWcgZW5kKQotICAobWVzc2FnZSAiUmVnaW9uIHNhdmVkIGZv ciBMaXNwIikpCi0KLShkZWZ1biBsZWRpdC16YXAtZGVmdW4tdG8tbGlzcCAoKQotICAiQ2Fycnkg dGhlIGN1cnJlbnQgZGVmdW4gdG8gTGlzcC4iCi0gIChpbnRlcmFjdGl2ZSkKLSAgKGxlZGl0LXNh dmUtZGVmdW4pCi0gIChsZWRpdC1nby10by1saXNwKSkKLQotKGRlZnVuIGxlZGl0LXphcC1kZWZ1 bi10by1saXN6dCAoKQotICAiQ2FycnkgdGhlIGN1cnJlbnQgZGVmdW4gdG8gbGlzenQuIgotICAo aW50ZXJhY3RpdmUpCi0gIChsZWRpdC1zYXZlLWRlZnVuKQotICAobGVkaXQtZ28tdG8tbGlzenQp KQotCi0oZGVmdW4gbGVkaXQtemFwLXJlZ2lvbi10by1saXNwIChiZWcgZW5kKQotICAiQ2Fycnkg dGhlIGN1cnJlbnQgcmVnaW9uIHRvIExpc3AuIgotICAoaW50ZXJhY3RpdmUgInIiKQotICAobGVk aXQtc2F2ZS1yZWdpb24gYmVnIGVuZCkKLSAgKGxlZGl0LWdvLXRvLWxpc3ApKQotCi0oZGVmdW4g bGVkaXQtZ28tdG8tbGlzcCAoKQotICAiU3VzcGVuZCBFbWFjcyBhbmQgcmVzdGFydCBhIHdhaXRp bmcgTGlzcCBqb2IuIgotICAoaW50ZXJhY3RpdmUpCi0gIChpZiBsZWRpdC1zYXZlLWZpbGVzCi0g ICAgICAoc2F2ZS1zb21lLWJ1ZmZlcnMpKQotICAoaWYgKGdldC1idWZmZXIgbGVkaXQtYnVmZmVy KQotICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgbGVkaXQtYnVmZmVyCi0gICAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCi0gICAgICAgICh3cml0ZS1yZWdpb24gKHBvaW50LW1pbikgKHBv aW50LW1heCkgbGVkaXQtemFwLWZpbGUpCi0gICAgICAgIChlcmFzZS1idWZmZXIpKSkKLSAgKHN1 c3BlbmQtZW1hY3MgbGVkaXQtZ28tdG8tbGlzcC1zdHJpbmcpCi0gIChsb2FkIGxlZGl0LXJlYWQt ZmlsZSB0IHQpKQotCi0oZGVmdW4gbGVkaXQtZ28tdG8tbGlzenQgKCkKLSAgIlN1c3BlbmQgRW1h Y3MgYW5kIHJlc3RhcnQgYSB3YWl0aW5nIExpc3p0IGpvYi4iCi0gIChpbnRlcmFjdGl2ZSkKLSAg KGlmIGxlZGl0LXNhdmUtZmlsZXMKLSAgICAgIChzYXZlLXNvbWUtYnVmZmVycykpCi0gIChpZiAo Z2V0LWJ1ZmZlciBsZWRpdC1idWZmZXIpCi0gICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBsZWRp dC1idWZmZXIKLSAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKLSAgICAgICAgKGluc2Vy dCAiKGRlY2xhcmUgKG1hY3JvcyB0KSlcbiIpCi0gICAgICAgICh3cml0ZS1yZWdpb24gKHBvaW50 LW1pbikgKHBvaW50LW1heCkgbGVkaXQtY29tcGlsZS1maWxlKQotICAgICAgICAoZXJhc2UtYnVm ZmVyKSkpCi0gIChzdXNwZW5kLWVtYWNzIGxlZGl0LWdvLXRvLWxpc3p0LXN0cmluZykKLSAgKGxv YWQgbGVkaXQtcmVhZC1maWxlIHQgdCkpCi0KLShkZWZ1biBsZWRpdC1zZXR1cCAoKQotICAiU2V0 IHVwIGtleSBiaW5kaW5ncyBmb3IgdGhlIExpc3AvRW1hY3MgaW50ZXJmYWNlLiIKLSAgKHVubGVz cyBsZWRpdC1tb2RlLW1hcAotICAgIChzZXRxIGxlZGl0LW1vZGUtbWFwIChtYWtlLXNwYXJzZS1r ZXltYXApKQotICAgIChzZXQta2V5bWFwLXBhcmVudCBsZWRpdC1tb2RlLW1hcCBsaXNwLW1vZGUt c2hhcmVkLW1hcCkpCi0gIChkZWZpbmUta2V5IGxlZGl0LW1vZGUtbWFwICJcZVxeZCIgJ2xlZGl0 LXNhdmUtZGVmdW4pCi0gIChkZWZpbmUta2V5IGxlZGl0LW1vZGUtbWFwICJcZVxeciIgJ2xlZGl0 LXNhdmUtcmVnaW9uKQotICAoZGVmaW5lLWtleSBsZWRpdC1tb2RlLW1hcCAiXF54eiIgJ2xlZGl0 LWdvLXRvLWxpc3ApCi0gIChkZWZpbmUta2V5IGxlZGl0LW1vZGUtbWFwICJcZVxeYyIgJ2xlZGl0 LWdvLXRvLWxpc3p0KSkKLQotKGxlZGl0LXNldHVwKQotCi07OzsjIyNhdXRvbG9hZAotKGRlZnVu IGxlZGl0LW1vZGUgKCkKLSAgIlxcPGxlZGl0LW1vZGUtbWFwPk1ham9yIG1vZGUgZm9yIGVkaXRp bmcgdGV4dCBhbmQgc3R1ZmZpbmcgaXQgdG8gYSBMaXNwIGpvYi4KLUxpa2UgTGlzcCBtb2RlLCBw bHVzIHRoZXNlIHNwZWNpYWwgY29tbWFuZHM6Ci0gIFxcW2xlZGl0LXNhdmUtZGVmdW5dCS0tIHJl Y29yZCBkZWZ1biBhdCBvciBhZnRlciBwb2ludAotCSAgIGZvciBsYXRlciB0cmFuc21pc3Npb24g dG8gTGlzcCBqb2IuCi0gIFxcW2xlZGl0LXNhdmUtcmVnaW9uXSAtLSByZWNvcmQgcmVnaW9uIGZv ciBsYXRlciB0cmFuc21pc3Npb24gdG8gTGlzcCBqb2IuCi0gIFxcW2xlZGl0LWdvLXRvLWxpc3Bd IC0tIHRyYW5zZmVyIHRvIExpc3Agam9iIGFuZCB0cmFuc21pdCBzYXZlZCB0ZXh0LgotICBcXFts ZWRpdC1nby10by1saXN6dF0gLS0gdHJhbnNmZXIgdG8gTGlzenQgKExpc3AgY29tcGlsZXIpIGpv YgotCSAgIGFuZCB0cmFuc21pdCBzYXZlZCB0ZXh0LgotCi1cXHtsZWRpdC1tb2RlLW1hcH0KLVRv IG1ha2UgTGlzcCBtb2RlIGF1dG9tYXRpY2FsbHkgY2hhbmdlIHRvIExlZGl0IG1vZGUsCi1kbyAo c2V0cSBsaXNwLW1vZGUtaG9vayAnbGVkaXQtZnJvbS1saXNwLW1vZGUpIgotICAoaW50ZXJhY3Rp dmUpCi0gIChkZWxheS1tb2RlLWhvb2tzIChsaXNwLW1vZGUpKQotICAobGVkaXQtZnJvbS1saXNw LW1vZGUpKQotCi07OzsjIyNhdXRvbG9hZAotKGRlZnVuIGxlZGl0LWZyb20tbGlzcC1tb2RlICgp Ci0gICh1c2UtbG9jYWwtbWFwIGxlZGl0LW1vZGUtbWFwKQotICAoc2V0cSBtb2RlLW5hbWUgIkxl ZGl0IikKLSAgKHNldHEgbWFqb3ItbW9kZSAnbGVkaXQtbW9kZSkKLSAgKHJ1bi1tb2RlLWhvb2tz ICdsZWRpdC1tb2RlLWhvb2spKQotCi0ocHJvdmlkZSAnbGVkaXQpCi0KLTs7OyBsZWRpdC5lbCBl bmRzIGhlcmUKZGlmZiAtLWdpdCBhL2xpc3Avb2Jzb2xldGUvbG1lbnUuZWwgYi9saXNwL29ic29s ZXRlL2xtZW51LmVsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Nzg0ODE5MjRiLi4w MDAwMDAwMDAwCi0tLSBhL2xpc3Avb2Jzb2xldGUvbG1lbnUuZWwKKysrIC9kZXYvbnVsbApAQCAt MSw0NDUgKzAsMCBAQAotOzs7IGxtZW51LmVsIC0tLSBlbXVsYXRlIEx1Y2lkJ3MgbWVudWJhciBz dXBwb3J0Ci0KLTs7IENvcHlyaWdodCAoQykgMTk5Mi0xOTk0LCAxOTk3LCAyMDAxLTIwMjAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotOzsgSW5jLgotCi07OyBLZXl3b3JkczogZW11bGF0aW9u cyBvYnNvbGV0ZQotOzsgT2Jzb2xldGUtc2luY2U6IDIzLjMKLQotOzsgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR05VIEVtYWNzLgotCi07OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLTs7IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi07OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi07OyBHTlUgRW1h Y3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLTs7 IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi07OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi07OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotCi07OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3Qs IHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotCi07OzsgQ29tbWVudGFyeToK LQotOzsgVGhpcyBmaWxlIGhhcyBiZWVuIG9ic29sZXRlIHNpbmNlIEVtYWNzIDIzLjMuCi0KLTs7 OyBDb2RlOgotCi0MCi07OyBGaXJzdCwgZW11bGF0ZSB0aGUgTHVjaWQgbWVudWJhciBzdXBwb3J0 IGluIEdOVSBFbWFjcyAxOS4KLQotOzsgQXJyYW5nZSB0byB1c2UgY3VycmVudC1tZW51YmFyIHRv IHNldCB1cCBwYXJ0IG9mIHRoZSBtZW51IGJhci4KLQotKGRlZnZhciBjdXJyZW50LW1lbnViYXIp Ci0oZGVmdmFyIGx1Y2lkLW1lbnViYXItbWFwKQotKGRlZnZhciBsdWNpZC1mYWlsaW5nLW1lbnVi YXIpCi0KLShkZWZ2YXIgcmVjb21wdXRlLWx1Y2lkLW1lbnViYXIgJ3JlY29tcHV0ZS1sdWNpZC1t ZW51YmFyKQotKGRlZnVuIHJlY29tcHV0ZS1sdWNpZC1tZW51YmFyICgpCi0gIChkZWZpbmUta2V5 IGx1Y2lkLW1lbnViYXItbWFwIFttZW51LWJhcl0KLSAgICAoY29uZGl0aW9uLWNhc2UgbmlsCi0J KG1ha2UtbHVjaWQtbWVudS1rZXltYXAgIm1lbnUtYmFyIiBjdXJyZW50LW1lbnViYXIpCi0gICAg ICAoZXJyb3IgKG1lc3NhZ2UgIkludmFsaWQgZGF0YSBpbiBjdXJyZW50LW1lbnViYXIgbW92ZWQg dG8gbHVjaWQtZmFpbGluZy1tZW51YmFyIikKLQkgICAgIChzaXQtZm9yIDEpCi0JICAgICAoc2V0 cSBsdWNpZC1mYWlsaW5nLW1lbnViYXIgY3VycmVudC1tZW51YmFyCi0JCSAgIGN1cnJlbnQtbWVu dWJhciBuaWwpKSkpCi0gIChzZXRxIGx1Y2lkLW1lbnUtYmFyLWRpcnR5LWZsYWcgbmlsKSkKLQot KGRlZnZhciBsdWNpZC1tZW51YmFyLW1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkKLShvciAoYXNz cSAnY3VycmVudC1tZW51YmFyIG1pbm9yLW1vZGUtbWFwLWFsaXN0KQotICAgIChzZXRxIG1pbm9y LW1vZGUtbWFwLWFsaXN0Ci0JICAoY29ucyAoY29ucyAnY3VycmVudC1tZW51YmFyIGx1Y2lkLW1l bnViYXItbWFwKQotCQltaW5vci1tb2RlLW1hcC1hbGlzdCkpKQotCi07OyBYRW1hY3MgY29tcGF0 aWJpbGl0eQotKGRlZnVuIHNldC1tZW51YmFyLWRpcnR5LWZsYWcgKCkKLSAgKGZvcmNlLW1vZGUt bGluZS11cGRhdGUpCi0gIChzZXRxIGx1Y2lkLW1lbnUtYmFyLWRpcnR5LWZsYWcgdCkpCi0KLShk ZWZ2YXIgYWRkLW1lbnUtaXRlbS1jb3VudCAwKQotCi07OyBUaGlzIGlzIGEgdmFyaWFibGUgd2hv c2UgdmFsdWUgaXMgYWx3YXlzIG5pbC4KLShkZWZ2YXIgbWFrZS1sdWNpZC1tZW51LWtleW1hcC1k aXNhYmxlIG5pbCkKLQotOzsgUmV0dXJuIGEgbWVudSBrZXltYXAgY29ycmVzcG9uZGluZyB0byBh IEx1Y2lkLXN0eWxlIG1lbnUgbGlzdAotOzsgTUVOVS1JVEVNUywgYW5kIHdpdGggbmFtZSBNRU5V LU5BTUUuCi0oZGVmdW4gbWFrZS1sdWNpZC1tZW51LWtleW1hcCAobWVudS1uYW1lIG1lbnUtaXRl bXMpCi0gIChsZXQgKChtZW51IChtYWtlLXNwYXJzZS1rZXltYXAgbWVudS1uYW1lKSkpCi0gICAg OzsgUHJvY2VzcyBpdGVtcyBpbiByZXZlcnNlIG9yZGVyLAotICAgIDs7IHNpbmNlIHRoZSBkZWZp bmUta2V5IGxvb3AgcmV2ZXJzZXMgdGhlbSBhZ2Fpbi4KLSAgICAoc2V0cSBtZW51LWl0ZW1zIChy ZXZlcnNlIG1lbnUtaXRlbXMpKQotICAgICh3aGlsZSBtZW51LWl0ZW1zCi0gICAgICAobGV0ICgo aXRlbSAoY2FyIG1lbnUtaXRlbXMpKQotCSAgICBjb21tYW5kIG5hbWUgY2FsbGJhY2spCi0JKGNv bmQgKChzdHJpbmdwIGl0ZW0pCi0JICAgICAgIChzZXRxIGNvbW1hbmQgbmlsKQotCSAgICAgICAo c2V0cSBuYW1lIChpZiAoc3RyaW5nLW1hdGNoICJeLSskIiBpdGVtKSAiIiBpdGVtKSkpCi0JICAg ICAgKChjb25zcCBpdGVtKQotCSAgICAgICAoc2V0cSBjb21tYW5kIChtYWtlLWx1Y2lkLW1lbnUt a2V5bWFwIChjYXIgaXRlbSkgKGNkciBpdGVtKSkpCi0JICAgICAgIChzZXRxIG5hbWUgKGNhciBp dGVtKSkpCi0JICAgICAgKCh2ZWN0b3JwIGl0ZW0pCi0JICAgICAgIChzZXRxIGNvbW1hbmQgKG1h a2Utc3ltYm9sIChmb3JtYXQgIm1lbnUtZnVuY3Rpb24tJWQiCi0JCQkJCQkgIGFkZC1tZW51LWl0 ZW0tY291bnQpKQotCQkgICAgIGFkZC1tZW51LWl0ZW0tY291bnQgKDErIGFkZC1tZW51LWl0ZW0t Y291bnQpCi0JCSAgICAgbmFtZSAoYXJlZiBpdGVtIDApCi0JCSAgICAgY2FsbGJhY2sgKGFyZWYg aXRlbSAxKSkKLQkgICAgICAgKGlmIChzeW1ib2xwIGNhbGxiYWNrKQotCQkgICAoZnNldCBjb21t YW5kIGNhbGxiYWNrKQotCQkgKGZzZXQgY29tbWFuZCAobGlzdCAnbGFtYmRhICgpICcoaW50ZXJh Y3RpdmUpIGNhbGxiYWNrKSkpCi0JICAgICAgIChwdXQgY29tbWFuZCAnbWVudS1hbGlhcyB0KQot CSAgICAgICAobGV0ICgoaSAyKSkKLQkJICh3aGlsZSAoPCBpIChsZW5ndGggaXRlbSkpCi0JCSAg IChjb25kCi0JCSAgICAoKGVxIChhcmVmIGl0ZW0gaSkgJzphY3RpdmUpCi0JCSAgICAgKHB1dCBj b21tYW5kICdtZW51LWVuYWJsZQotCQkJICAob3IgKGFyZWYgaXRlbSAoMSsgaSkpCi0JCQkgICAg ICAnbWFrZS1sdWNpZC1tZW51LWtleW1hcC1kaXNhYmxlKSkKLQkJICAgICAoc2V0cSBpICgrIDIg aSkpKQotCQkgICAgKChlcSAoYXJlZiBpdGVtIGkpICc6c3VmZml4KQotCQkgICAgIDs7IHVuaW1w bGVtZW50ZWQKLQkJICAgICAoc2V0cSBpICgrIDIgaSkpKQotCQkgICAgKChlcSAoYXJlZiBpdGVt IGkpICc6a2V5cykKLQkJICAgICA7OyB1bmltcGxlbWVudGVkCi0JCSAgICAgKHNldHEgaSAoKyAy IGkpKSkKLQkJICAgICgoZXEgKGFyZWYgaXRlbSBpKSAnOnN0eWxlKQotCQkgICAgIDs7IHVuaW1w bGVtZW50ZWQKLQkJICAgICAoc2V0cSBpICgrIDIgaSkpKQotCQkgICAgKChlcSAoYXJlZiBpdGVt IGkpICc6c2VsZWN0ZWQpCi0JCSAgICAgOzsgdW5pbXBsZW1lbnRlZAotCQkgICAgIChzZXRxIGkg KCsgMiBpKSkpCi0JCSAgICAoKGFuZCAoc3ltYm9scCAoYXJlZiBpdGVtIGkpKQotCQkJICAoPSA/ OiAoc3RyaW5nLXRvLWNoYXIgKHN5bWJvbC1uYW1lIChhcmVmIGl0ZW0gaSkpKSkpCi0JCSAgICAg KGVycm9yICJVbnJlY29nbml6ZWQgbWVudSBpdGVtIGtleXdvcmQ6ICVTIgotCQkJICAgIChhcmVm IGl0ZW0gaSkpKQotCQkgICAgKCg9IGkgMikKLQkJICAgICA7OyBvbGQtc3R5bGUgZm9ybWF0OiBh Y3RpdmUtcCAmb3B0aW9uYWwgc3VmZml4Ci0JCSAgICAgKHB1dCBjb21tYW5kICdtZW51LWVuYWJs ZQotCQkJICAob3IgKGFyZWYgaXRlbSBpKSAnbWFrZS1sdWNpZC1tZW51LWtleW1hcC1kaXNhYmxl KSkKLQkJICAgICA7OyBzdWZmaXggaXMgdW5pbXBsZW1lbnRlZAotCQkgICAgIChzZXRxIGkgKGxl bmd0aCBpdGVtKSkpCi0JCSAgICAodAotCQkgICAgIChlcnJvciAiVW5leHBlY3RlZCBtZW51IGl0 ZW0gdmFsdWU6ICVTIgotCQkJICAgIChhcmVmIGl0ZW0gaSkpKSkpKSkpCi0JKGlmIChudWxsIGNv bW1hbmQpCi0JICAgIDs7IEhhbmRsZSBpbmFjdGl2ZSBzdHJpbmdzIHNwZWNpYWxseS0tYWxsb3cg YW55IG51bWJlcgotCSAgICA7OyBvZiBpZGVudGljYWwgb25lcy4KLQkgICAgKHNldGNkciBtZW51 IChjb25zIChsaXN0IG5pbCBuYW1lKSAoY2RyIG1lbnUpKSkKLQkgIChpZiBuYW1lCi0JICAgICAg KGRlZmluZS1rZXkgbWVudSAodmVjdG9yIChpbnRlcm4gbmFtZSkpIChjb25zIG5hbWUgY29tbWFu ZCkpKSkpCi0gICAgICAoc2V0cSBtZW51LWl0ZW1zIChjZHIgbWVudS1pdGVtcykpKQotICAgIG1l bnUpKQotCi0oZGVjbGFyZS1mdW5jdGlvbiB4LXBvcHVwLWRpYWxvZyAibWVudS5jIiAocG9zaXRp b24gY29udGVudHMgJm9wdGlvbmFsIGhlYWRlcikpCi0KLTs7IFhFbWFjcyBjb21wYXRpYmlsaXR5 IGZ1bmN0aW9uCi0oZGVmdW4gcG9wdXAtZGlhbG9nLWJveCAoZGF0YSkKLSAgIlBvcCB1cCBhIGRp YWxvZyBib3guCi1BIGRpYWxvZyBib3ggZGVzY3JpcHRpb24gaXMgYSBsaXN0LgotCi0gLSBUaGUg Zmlyc3QgZWxlbWVudCBvZiB0aGUgbGlzdCBpcyBhIHN0cmluZyB0byBkaXNwbGF5IGluIHRoZSBk aWFsb2cgYm94LgotIC0gVGhlIHJlc3Qgb2YgdGhlIGVsZW1lbnRzIGFyZSBkZXNjcmlwdGlvbnMg b2YgdGhlIGRpYWxvZyBib3gncyBidXR0b25zLgotICAgRWFjaCBvbmUgaXMgYSB2ZWN0b3Igb2Yg dGhyZWUgZWxlbWVudHM6Ci0gICAtIFRoZSBmaXJzdCBlbGVtZW50IGlzIHRoZSB0ZXh0IG9mIHRo ZSBidXR0b24uCi0gICAtIFRoZSBzZWNvbmQgZWxlbWVudCBpcyB0aGUgYGNhbGxiYWNrJy4KLSAg IC0gVGhlIHRoaXJkIGVsZW1lbnQgaXMgdCBvciBuaWwsIHdoZXRoZXIgdGhpcyBidXR0b24gaXMg c2VsZWN0YWJsZS4KLQotSWYgdGhlIGBjYWxsYmFjaycgb2YgYSBidXR0b24gaXMgYSBzeW1ib2ws IHRoZW4gaXQgbXVzdCBuYW1lIGEgY29tbWFuZC4KLUl0IHdpbGwgYmUgaW52b2tlZCB3aXRoIGBj YWxsLWludGVyYWN0aXZlbHknLiAgSWYgaXQgaXMgYSBsaXN0LCB0aGVuIGl0IGlzCi1ldmFsdWF0 ZWQgd2l0aCBgZXZhbCcuCi0KLU9uZSAoYW5kIG9ubHkgb25lKSBvZiB0aGUgYnV0dG9ucyBtYXkg YmUgbmlsLiAgVGhpcyBtYXJrZXIgbWVhbnMgdGhhdCBhbGwKLWZvbGxvd2luZyBidXR0b25zIHNo b3VsZCBiZSBmbHVzaHJpZ2h0IGluc3RlYWQgb2YgZmx1c2hsZWZ0LgotCi1UaGUgc3ludGF4LCBt b3JlIHByZWNpc2VseToKLQotICAgZm9ybQkJOj0gIDxzb21ldGhpbmcgdG8gcGFzcyB0byBgZXZh bCc+Ci0gICBjb21tYW5kCTo9ICA8YSBzeW1ib2wgb3Igc3RyaW5nLCB0byBwYXNzIHRvIGBjYWxs LWludGVyYWN0aXZlbHknPgotICAgY2FsbGJhY2sgCTo9ICBjb21tYW5kIHwgZm9ybQotICAgYWN0 aXZlLXAJOj0gIDx0LCBuaWwsIG9yIGEgZm9ybSB0byBldmFsdWF0ZSB0byBkZWNpZGUgd2hldGhl ciB0aGlzCi0JCSAgICBidXR0b24gc2hvdWxkIGJlIHNlbGVjdGFibGU+Ci0gICBuYW1lCQk6PSAg PHN0cmluZz4KLSAgIHBhcnRpdGlvbgk6PSAgYG5pbCcKLSAgIGJ1dHRvbgk6PSAgYFsnICBuYW1l IGNhbGxiYWNrIGFjdGl2ZS1wIGBdJwotICAgZGlhbG9nCTo9ICBgKCcgbmFtZSBbIGJ1dHRvbiBd KyBbIHBhcnRpdGlvbiBbIGJ1dHRvbiBdKyBdIGApJyIKLSAgKGxldCAoKG5hbWUgKGNhciBkYXRh KSkKLQkodGFpbCAoY2RyIGRhdGEpKQotCWNvbnZlcnRlZAotCWNob2ljZSBtZWFuaW5nKQotICAg ICh3aGlsZSB0YWlsCi0gICAgICAoaWYgKG51bGwgKGNhciB0YWlsKSkKLQkgIChzZXRxIGNvbnZl cnRlZCAoY29ucyBuaWwgY29udmVydGVkKSkKLQkobGV0ICgoaXRlbSAoYXJlZiAoY2FyIHRhaWwp IDApKQotCSAgICAgIChjYWxsYmFjayAoYXJlZiAoY2FyIHRhaWwpIDEpKQotCSAgICAgIChlbmFi bGUgKGFyZWYgKGNhciB0YWlsKSAyKSkpCi0JICAoc2V0cSBjb252ZXJ0ZWQKLQkJKGNvbnMgKGlm IGVuYWJsZSAoY29ucyBpdGVtIGNhbGxiYWNrKSBpdGVtKQotCQkgICAgICBjb252ZXJ0ZWQpKSkp Ci0gICAgICAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKQotICAgIChzZXRxIGNob2ljZSAoeC1wb3B1 cC1kaWFsb2cgdCAoY29ucyBuYW1lIChucmV2ZXJzZSBjb252ZXJ0ZWQpKSkpCi0gICAgKGlmIGNo b2ljZQotCShpZiAoc3ltYm9scCBjaG9pY2UpCi0JICAgIChjYWxsLWludGVyYWN0aXZlbHkgY2hv aWNlKQotCSAgKGV2YWwgY2hvaWNlKSkpKSkKLQwKLTs7IFRoaXMgaXMgZW1wdHkgYmVjYXVzZSB0 aGUgdXN1YWwgZWxlbWVudHMgb2YgdGhlIG1lbnUgYmFyCi07OyBhcmUgcHJvdmlkZWQgYnkgbWVu dS1iYXIuZWwgaW5zdGVhZC4KLTs7IEl0IHdvdWxkIG5vdCBtYWtlIHNlbnNlIHRvIGR1cGxpY2F0 ZSB0aGVtIGhlcmUuCi0oZGVmY29uc3QgZGVmYXVsdC1tZW51YmFyIG5pbCkKLQotOzsgWEVtYWNz IGNvbXBhdGliaWxpdHkKLShkZWZ1biBzZXQtbWVudWJhciAobWVudWJhcikKLSAgIlNldCB0aGUg ZGVmYXVsdCBtZW51YmFyIHRvIGJlIG1lbnViYXIuIgotICAoc2V0cS1kZWZhdWx0IGN1cnJlbnQt bWVudWJhciAoY29weS1zZXF1ZW5jZSBtZW51YmFyKSkKLSAgKHNldC1tZW51YmFyLWRpcnR5LWZs YWcpKQotCi07OyBYRW1hY3MgY29tcGF0aWJpbGl0eQotKGRlZnVuIHNldC1idWZmZXItbWVudWJh ciAobWVudWJhcikKLSAgIlNldCB0aGUgYnVmZmVyLWxvY2FsIG1lbnViYXIgdG8gYmUgbWVudWJh ci4iCi0gIChtYWtlLWxvY2FsLXZhcmlhYmxlICdjdXJyZW50LW1lbnViYXIpCi0gIChzZXRxIGN1 cnJlbnQtbWVudWJhciAoY29weS1zZXF1ZW5jZSBtZW51YmFyKSkKLSAgKHNldC1tZW51YmFyLWRp cnR5LWZsYWcpKQotCi0MCi07OzsgbWVudSBtYW5pcHVsYXRpb24gZnVuY3Rpb25zCi0KLTs7IFhF bWFjcyBjb21wYXRpYmlsaXR5Ci0oZGVmdW4gZmluZC1tZW51LWl0ZW0gKG1lbnViYXIgaXRlbS1w YXRoLWxpc3QgJm9wdGlvbmFsIHBhcmVudCkKLSAgIlNlYXJjaGVzIE1FTlVCQVIgZm9yIGl0ZW0g Z2l2ZW4gYnkgSVRFTS1QQVRILUxJU1QuCi1SZXR1cm5zIChJVEVNIC4gUEFSRU5UKSwgd2hlcmUg UEFSRU5UIGlzIHRoZSBpbW1lZGlhdGUgcGFyZW50IG9mCi0gdGhlIGl0ZW0gZm91bmQuCi1TaWdu YWxzIGFuIGVycm9yIGlmIHRoZSBpdGVtIGlzIG5vdCBmb3VuZC4iCi0gIChvciBwYXJlbnQgKHNl dHEgaXRlbS1wYXRoLWxpc3QgKG1hcGNhciAnZG93bmNhc2UgaXRlbS1wYXRoLWxpc3QpKSkKLSAg KGlmIChub3QgKGNvbnNwIG1lbnViYXIpKQotICAgICAgbmlsCi0gICAgKGxldCAoKHJlc3QgbWVu dWJhcikKLQkgIHJlc3VsdCkKLSAgICAgICh3aGlsZSByZXN0Ci0JKGlmIChhbmQgKGNhciByZXN0 KQotCQkgKGVxdWFsIChjYXIgaXRlbS1wYXRoLWxpc3QpCi0JCQkoZG93bmNhc2UgKGlmICh2ZWN0 b3JwIChjYXIgcmVzdCkpCi0JCQkJICAgICAgKGFyZWYgKGNhciByZXN0KSAwKQotCQkJCSAgICAo aWYgKHN0cmluZ3AgKGNhciByZXN0KSkKLQkJCQkJKGNhciByZXN0KQotCQkJCSAgICAgIChjYXIg KGNhciByZXN0KSkpKSkpKQotCSAgICAoc2V0cSByZXN1bHQgKGNhciByZXN0KSByZXN0IG5pbCkK LQkgIChzZXRxIHJlc3QgKGNkciByZXN0KSkpKQotICAgICAgKGlmIChjZHIgaXRlbS1wYXRoLWxp c3QpCi0JICAoaWYgKGNvbnNwIHJlc3VsdCkKLQkgICAgICAoZmluZC1tZW51LWl0ZW0gKGNkciBy ZXN1bHQpIChjZHIgaXRlbS1wYXRoLWxpc3QpIHJlc3VsdCkKLQkgICAgKGlmIHJlc3VsdAotCQko c2lnbmFsICdlcnJvciAobGlzdCAibm90IGEgc3VibWVudSIgcmVzdWx0KSkKLQkgICAgICAoc2ln bmFsICdlcnJvciAobGlzdCAibm8gc3VjaCBzdWJtZW51IiAoY2FyIGl0ZW0tcGF0aC1saXN0KSkp KSkKLQkoY29ucyByZXN1bHQgcGFyZW50KSkpKSkKLQotCi07OyBYRW1hY3MgY29tcGF0aWJpbGl0 eQotKGRlZnVuIGRpc2FibGUtbWVudS1pdGVtIChwYXRoKQotICAiTWFrZSB0aGUgbmFtZWQgbWVu dSBpdGVtIGJlIHVuc2VsZWN0YWJsZS4KLVBBVEggaXMgYSBsaXN0IG9mIHN0cmluZ3Mgd2hpY2gg aWRlbnRpZnkgdGhlIHBvc2l0aW9uIG9mIHRoZSBtZW51IGl0ZW0gaW4KLXRoZSBtZW51IGhpZXJh cmNoeS4gIChcIkZpbGVcIiBcIlNhdmVcIikgbWVhbnMgdGhlIG1lbnUgaXRlbSBjYWxsZWQgXCJT YXZlXCIKLXVuZGVyIHRoZSB0b3BsZXZlbCBcIkZpbGVcIiBtZW51LiAgKFwiTWVudVwiIFwiRm9v XCIgXCJJdGVtXCIpIG1lYW5zIHRoZQotbWVudSBpdGVtIGNhbGxlZCBcIkl0ZW1cIiB1bmRlciB0 aGUgXCJGb29cIiBzdWJtZW51IG9mIFwiTWVudVwiLiIKLSAgKGxldCogKChtZW51YmFyIGN1cnJl bnQtbWVudWJhcikKLQkgKHBhaXIgKGZpbmQtbWVudS1pdGVtIG1lbnViYXIgcGF0aCkpCi0JIChp dGVtIChjYXIgcGFpcikpCi0JIChtZW51IChjZHIgcGFpcikpKQotICAgIChvciBpdGVtCi0JKHNp Z25hbCAnZXJyb3IgKGxpc3QgKGlmIG1lbnUgIk5vIHN1Y2ggbWVudSBpdGVtIiAiTm8gc3VjaCBt ZW51IikKLQkJCSAgICAgcGF0aCkpKQotICAgIChpZiAoY29uc3AgaXRlbSkgKGVycm9yICJjYW4n dCBkaXNhYmxlIG1lbnVzLCBvbmx5IG1lbnUgaXRlbXMiKSkKLSAgICAoYXNldCBpdGVtIDIgbmls KQotICAgIChzZXQtbWVudWJhci1kaXJ0eS1mbGFnKQotICAgIGl0ZW0pKQotCi0KLTs7IFhFbWFj cyBjb21wYXRpYmlsaXR5Ci0oZGVmdW4gZW5hYmxlLW1lbnUtaXRlbSAocGF0aCkKLSAgIk1ha2Ug dGhlIG5hbWVkIG1lbnUgaXRlbSBiZSBzZWxlY3RhYmxlLgotUEFUSCBpcyBhIGxpc3Qgb2Ygc3Ry aW5ncyB3aGljaCBpZGVudGlmeSB0aGUgcG9zaXRpb24gb2YgdGhlIG1lbnUgaXRlbSBpbgotdGhl IG1lbnUgaGllcmFyY2h5LiAgKFwiRmlsZVwiIFwiU2F2ZVwiKSBtZWFucyB0aGUgbWVudSBpdGVt IGNhbGxlZCBcIlNhdmVcIgotdW5kZXIgdGhlIHRvcGxldmVsIFwiRmlsZVwiIG1lbnUuICAoXCJN ZW51XCIgXCJGb29cIiBcIkl0ZW1cIikgbWVhbnMgdGhlCi1tZW51IGl0ZW0gY2FsbGVkIFwiSXRl bVwiIHVuZGVyIHRoZSBcIkZvb1wiIHN1Ym1lbnUgb2YgXCJNZW51XCIuIgotICAobGV0KiAoKG1l bnViYXIgY3VycmVudC1tZW51YmFyKQotCSAocGFpciAoZmluZC1tZW51LWl0ZW0gbWVudWJhciBw YXRoKSkKLQkgKGl0ZW0gKGNhciBwYWlyKSkKLQkgKG1lbnUgKGNkciBwYWlyKSkpCi0gICAgKG9y IGl0ZW0KLQkoc2lnbmFsICdlcnJvciAobGlzdCAoaWYgbWVudSAiTm8gc3VjaCBtZW51IGl0ZW0i ICJObyBzdWNoIG1lbnUiKQotCQkJICAgICBwYXRoKSkpCi0gICAgKGlmIChjb25zcCBpdGVtKSAo ZXJyb3IgIiVTIGlzIGEgbWVudSwgbm90IGEgbWVudSBpdGVtIiBwYXRoKSkKLSAgICAoYXNldCBp dGVtIDIgdCkKLSAgICAoc2V0LW1lbnViYXItZGlydHktZmxhZykKLSAgICBpdGVtKSkKLQotCi0o ZGVmdW4gYWRkLW1lbnUtaXRlbS0xIChpdGVtLXAgbWVudS1wYXRoIGl0ZW0tbmFtZSBpdGVtLWRh dGEgZW5hYmxlZC1wIGJlZm9yZSkKLSAgKGlmIGJlZm9yZSAoc2V0cSBiZWZvcmUgKGRvd25jYXNl IGJlZm9yZSkpKQotICAobGV0KiAoKG1lbnViYXIgY3VycmVudC1tZW51YmFyKQotCSAobWVudSAo Y29uZGl0aW9uLWNhc2UgKCkKLQkJICAgKGNhciAoZmluZC1tZW51LWl0ZW0gbWVudWJhciBtZW51 LXBhdGgpKQotCQkgKGVycm9yIG5pbCkpKQotCSAoaXRlbSAoaWYgKGxpc3RwIG1lbnUpCi0JCSAg IChjYXIgKGZpbmQtbWVudS1pdGVtIChjZHIgbWVudSkgKGxpc3QgaXRlbS1uYW1lKSkpCi0JCSAo c2lnbmFsICdlcnJvciAobGlzdCAibm90IGEgc3VibWVudSIgbWVudS1wYXRoKSkpKSkKLSAgICAo b3IgbWVudQotCShsZXQgKChyZXN0IG1lbnUtcGF0aCkKLQkgICAgICAoc28tZmFyIG1lbnViYXIp KQotCSAgKHdoaWxlIHJlc3QKLTs7OwkgICAgKHNldHEgbWVudSAoY2FyIChmaW5kLW1lbnUtaXRl bSAoY2RyIHNvLWZhcikgKGxpc3QgKGNhciByZXN0KSkpKSkKLQkgICAgKHNldHEgbWVudQotCQkg IChpZiAoZXEgc28tZmFyIG1lbnViYXIpCi0JCSAgICAgIChjYXIgKGZpbmQtbWVudS1pdGVtIHNv LWZhciAobGlzdCAoY2FyIHJlc3QpKSkpCi0JCSAgICAoY2FyIChmaW5kLW1lbnUtaXRlbSAoY2Ry IHNvLWZhcikgKGxpc3QgKGNhciByZXN0KSkpKSkpCi0JICAgIChvciBtZW51Ci0JCShsZXQgKChy ZXN0MiBzby1mYXIpKQotCQkgIChvciByZXN0MgotCQkgICAgICAoZXJyb3IgIlRyeWluZyB0byBt b2RpZnkgYSBtZW51IHRoYXQgZG9lc24ndCBleGlzdCIpKQotCQkgICh3aGlsZSAoYW5kIChjZHIg cmVzdDIpIChjYXIgKGNkciByZXN0MikpKQotCQkgICAgKHNldHEgcmVzdDIgKGNkciByZXN0Mikp KQotCQkgIChzZXRjZHIgcmVzdDIKLQkJCSAgKG5jb25jIChsaXN0IChzZXRxIG1lbnUgKGxpc3Qg KGNhciByZXN0KSkpKQotCQkJCSAoY2RyIHJlc3QyKSkpKSkKLQkgICAgKHNldHEgc28tZmFyIG1l bnUpCi0JICAgIChzZXRxIHJlc3QgKGNkciByZXN0KSkpKSkKLSAgICAob3IgbWVudSAoc2V0cSBt ZW51IG1lbnViYXIpKQotICAgIChpZiBpdGVtCi0JbmlsCTsgaXQncyBhbHJlYWR5IHRoZXJlCi0g ICAgICAoaWYgaXRlbS1wCi0JICAoc2V0cSBpdGVtICh2ZWN0b3IgaXRlbS1uYW1lIGl0ZW0tZGF0 YSBlbmFibGVkLXApKQotCShzZXRxIGl0ZW0gKGNvbnMgaXRlbS1uYW1lIGl0ZW0tZGF0YSkpKQot ICAgICAgOzsgaWYgQkVGT1JFIGlzIHNwZWNpZmllZCwgdHJ5IHRvIGFkZCBpdCB0aGVyZS4KLSAg ICAgIChpZiBiZWZvcmUKLQkgIChzZXRxIGJlZm9yZSAoY2FyIChmaW5kLW1lbnUtaXRlbSBtZW51 IChsaXN0IGJlZm9yZSkpKSkpCi0gICAgICAobGV0ICgocmVzdCBtZW51KQotCSAgICAoYWRkZWQt YmVmb3JlIG5pbCkpCi0JKHdoaWxlIHJlc3QKLQkgIChpZiAoZXEgYmVmb3JlIChjYXIgKGNkciBy ZXN0KSkpCi0JICAgICAgKHByb2duCi0JCShzZXRjZHIgcmVzdCAoY29ucyBpdGVtIChjZHIgcmVz dCkpKQotCQkoc2V0cSByZXN0IG5pbCBhZGRlZC1iZWZvcmUgdCkpCi0JICAgIChzZXRxIHJlc3Qg KGNkciByZXN0KSkpKQotCShpZiAobm90IGFkZGVkLWJlZm9yZSkKLQkgICAgOzsgYWRkaW5nIGJl Zm9yZSB0aGUgZmlyc3QgaXRlbSBvbiB0aGUgbWVudWJhciBpdHNlbGYgaXMgaGFyZGVyCi0JICAg IChpZiAoYW5kIChlcSBtZW51IG1lbnViYXIpIChlcSBiZWZvcmUgKGNhciBtZW51KSkpCi0JCShz ZXRxIG1lbnUgKGNvbnMgaXRlbSBtZW51KQotCQkgICAgICBjdXJyZW50LW1lbnViYXIgbWVudSkK LQkgICAgICA7OyBvdGhlcndpc2UsIGFkZCB0aGUgaXRlbSB0byB0aGUgZW5kLgotCSAgICAgIChu Y29uYyBtZW51IChsaXN0IGl0ZW0pKSkpKSkKLSAgICAoaWYgaXRlbS1wCi0JKHByb2duCi0JICAo YXNldCBpdGVtIDEgaXRlbS1kYXRhKQotCSAgKGFzZXQgaXRlbSAyIChub3QgKG51bGwgZW5hYmxl ZC1wKSkpKQotICAgICAgKHNldGNhciBpdGVtIGl0ZW0tbmFtZSkKLSAgICAgIChzZXRjZHIgaXRl bSBpdGVtLWRhdGEpKQotICAgIChzZXQtbWVudWJhci1kaXJ0eS1mbGFnKQotICAgIGl0ZW0pKQot Ci07OyBYRW1hY3MgY29tcGF0aWJpbGl0eQotKGRlZnVuIGFkZC1tZW51LWl0ZW0gKG1lbnUtcGF0 aCBpdGVtLW5hbWUgZnVuY3Rpb24gZW5hYmxlZC1wICZvcHRpb25hbCBiZWZvcmUpCi0gICJBZGQg YSBtZW51IGl0ZW0gdG8gc29tZSBtZW51LCBjcmVhdGluZyB0aGUgbWVudSBmaXJzdCBpZiBuZWNl c3NhcnkuCi1JZiB0aGUgbmFtZWQgaXRlbSBleGlzdHMgYWxyZWFkeSwgaXQgaXMgY2hhbmdlZC4K LU1FTlUtUEFUSCBpZGVudGlmaWVzIHRoZSBtZW51IHVuZGVyIHdoaWNoIHRoZSBuZXcgbWVudSBp dGVtIHNob3VsZCBiZSBpbnNlcnRlZC4KLSBJdCBpcyBhIGxpc3Qgb2Ygc3RyaW5nczsgZm9yIGV4 YW1wbGUsIChcIkZpbGVcIikgbmFtZXMgdGhlIHRvcC1sZXZlbCBcIkZpbGVcIgotIG1lbnUuICAo XCJGaWxlXCIgXCJGb29cIikgbmFtZXMgYSBoeXBvdGhldGljYWwgc3VibWVudSBvZiBcIkZpbGVc Ii4KLUlURU0tTkFNRSBpcyB0aGUgc3RyaW5nIG5hbWluZyB0aGUgbWVudSBpdGVtIHRvIGJlIGFk ZGVkLgotRlVOQ1RJT04gaXMgdGhlIGNvbW1hbmQgdG8gaW52b2tlIHdoZW4gdGhpcyBtZW51IGl0 ZW0gaXMgc2VsZWN0ZWQuCi0gSWYgaXQgaXMgYSBzeW1ib2wsIHRoZW4gaXQgaXMgaW52b2tlZCB3 aXRoIGBjYWxsLWludGVyYWN0aXZlbHknLCBpbiB0aGUgc2FtZQotIHdheSB0aGF0IGZ1bmN0aW9u cyBib3VuZCB0byBrZXlzIGFyZSBpbnZva2VkLiAgSWYgaXQgaXMgYSBsaXN0LCB0aGVuIHRoZQot IGxpc3QgaXMgc2ltcGx5IGV2YWx1YXRlZC4KLUVOQUJMRUQtUCBjb250cm9scyB3aGV0aGVyIHRo ZSBpdGVtIGlzIHNlbGVjdGFibGUgb3Igbm90LgotQkVGT1JFLCBpZiBwcm92aWRlZCwgaXMgdGhl IG5hbWUgb2YgYSBtZW51IGl0ZW0gYmVmb3JlIHdoaWNoIHRoaXMgaXRlbSBzaG91bGQKLSBiZSBh ZGRlZCwgaWYgdGhpcyBpdGVtIGlzIG5vdCBvbiB0aGUgbWVudSBhbHJlYWR5LiAgSWYgdGhlIGl0 ZW0gaXMgYWxyZWFkeQotIHByZXNlbnQsIGl0IHdpbGwgbm90IGJlIG1vdmVkLiIKLSAgKG9yIG1l bnUtcGF0aCAoZXJyb3IgIm11c3Qgc3BlY2lmeSBhIG1lbnUgcGF0aCIpKQotICAob3IgaXRlbS1u YW1lIChlcnJvciAibXVzdCBzcGVjaWZ5IGFuIGl0ZW0gbmFtZSIpKQotICAoYWRkLW1lbnUtaXRl bS0xIHQgbWVudS1wYXRoIGl0ZW0tbmFtZSBmdW5jdGlvbiBlbmFibGVkLXAgYmVmb3JlKSkKLQot Ci07OyBYRW1hY3MgY29tcGF0aWJpbGl0eQotKGRlZnVuIGRlbGV0ZS1tZW51LWl0ZW0gKHBhdGgp Ci0gICJSZW1vdmUgdGhlIG5hbWVkIG1lbnUgaXRlbSBmcm9tIHRoZSBtZW51IGhpZXJhcmNoeS4K LVBBVEggaXMgYSBsaXN0IG9mIHN0cmluZ3Mgd2hpY2ggaWRlbnRpZnkgdGhlIHBvc2l0aW9uIG9m IHRoZSBtZW51IGl0ZW0gaW4KLXRoZSBtZW51IGhpZXJhcmNoeS4gIChcIkZpbGVcIiBcIlNhdmVc IikgbWVhbnMgdGhlIG1lbnUgaXRlbSBjYWxsZWQgXCJTYXZlXCIKLXVuZGVyIHRoZSB0b3BsZXZl bCBcIkZpbGVcIiBtZW51LiAgKFwiTWVudVwiIFwiRm9vXCIgXCJJdGVtXCIpIG1lYW5zIHRoZQot bWVudSBpdGVtIGNhbGxlZCBcIkl0ZW1cIiB1bmRlciB0aGUgXCJGb29cIiBzdWJtZW51IG9mIFwi TWVudVwiLiIKLSAgKGxldCogKChtZW51YmFyIGN1cnJlbnQtbWVudWJhcikKLQkgKHBhaXIgKGZp bmQtbWVudS1pdGVtIG1lbnViYXIgcGF0aCkpCi0JIChpdGVtIChjYXIgcGFpcikpCi0JIChtZW51 IChvciAoY2RyIHBhaXIpIG1lbnViYXIpKSkKLSAgICAoaWYgKG5vdCBpdGVtKQotCW5pbAotICAg ICAgOzsgdGhlIG1lbnViYXIgaXMgdGhlIG9ubHkgc3BlY2lhbCBjYXNlLCBiZWNhdXNlIG90aGVy IG1lbnVzIGJlZ2luCi0gICAgICA7OyB3aXRoIHRoZWlyIG5hbWUuCi0gICAgICAoaWYgKGVxIG1l bnUgY3VycmVudC1tZW51YmFyKQotCSAgKHNldHEgY3VycmVudC1tZW51YmFyIChkZWxxIGl0ZW0g bWVudSkpCi0JKGRlbHEgaXRlbSBtZW51KSkKLSAgICAgIChzZXQtbWVudWJhci1kaXJ0eS1mbGFn KQotICAgICAgaXRlbSkpKQotCi0KLTs7IFhFbWFjcyBjb21wYXRpYmlsaXR5Ci0oZGVmdW4gcmVs YWJlbC1tZW51LWl0ZW0gKHBhdGggbmV3LW5hbWUpCi0gICJDaGFuZ2UgdGhlIHN0cmluZyBvZiB0 aGUgc3BlY2lmaWVkIG1lbnUgaXRlbS4KLVBBVEggaXMgYSBsaXN0IG9mIHN0cmluZ3Mgd2hpY2gg aWRlbnRpZnkgdGhlIHBvc2l0aW9uIG9mIHRoZSBtZW51IGl0ZW0gaW4KLXRoZSBtZW51IGhpZXJh cmNoeS4gIChcIkZpbGVcIiBcIlNhdmVcIikgbWVhbnMgdGhlIG1lbnUgaXRlbSBjYWxsZWQgXCJT YXZlXCIKLXVuZGVyIHRoZSB0b3BsZXZlbCBcIkZpbGVcIiBtZW51LiAgKFwiTWVudVwiIFwiRm9v XCIgXCJJdGVtXCIpIG1lYW5zIHRoZQotbWVudSBpdGVtIGNhbGxlZCBcIkl0ZW1cIiB1bmRlciB0 aGUgXCJGb29cIiBzdWJtZW51IG9mIFwiTWVudVwiLgotTkVXLU5BTUUgaXMgdGhlIHN0cmluZyB0 aGF0IHRoZSBtZW51IGl0ZW0gd2lsbCBiZSBwcmludGVkIGFzIGZyb20gbm93IG9uLiIKLSAgKG9y IChzdHJpbmdwIG5ldy1uYW1lKQotICAgICAgKHNldHEgbmV3LW5hbWUgKHNpZ25hbCAnd3Jvbmct dHlwZS1hcmd1bWVudCAobGlzdCAnc3RyaW5ncCBuZXctbmFtZSkpKSkKLSAgKGxldCogKChtZW51 YmFyIGN1cnJlbnQtbWVudWJhcikKLQkgKHBhaXIgKGZpbmQtbWVudS1pdGVtIG1lbnViYXIgcGF0 aCkpCi0JIChpdGVtIChjYXIgcGFpcikpCi0JIChtZW51IChjZHIgcGFpcikpKQotICAgIChvciBp dGVtCi0JKHNpZ25hbCAnZXJyb3IgKGxpc3QgKGlmIG1lbnUgIk5vIHN1Y2ggbWVudSBpdGVtIiAi Tm8gc3VjaCBtZW51IikKLQkJCSAgICAgcGF0aCkpKQotICAgIChpZiAoYW5kIChjb25zcCBpdGVt KQotCSAgICAgKHN0cmluZ3AgKGNhciBpdGVtKSkpCi0JKHNldGNhciBpdGVtIG5ldy1uYW1lKQot ICAgICAgKGFzZXQgaXRlbSAwIG5ldy1uYW1lKSkKLSAgICAoc2V0LW1lbnViYXItZGlydHktZmxh ZykKLSAgICBpdGVtKSkKLQotOzsgWEVtYWNzIGNvbXBhdGliaWxpdHkKLShkZWZ1biBhZGQtbWVu dSAobWVudS1wYXRoIG1lbnUtbmFtZSBtZW51LWl0ZW1zICZvcHRpb25hbCBiZWZvcmUpCi0gICJB ZGQgYSBtZW51IHRvIHRoZSBtZW51YmFyIG9yIG9uZSBvZiBpdHMgc3VibWVudXMuCi1JZiB0aGUg bmFtZWQgbWVudSBleGlzdHMgYWxyZWFkeSwgaXQgaXMgY2hhbmdlZC4KLU1FTlUtUEFUSCBpZGVu dGlmaWVzIHRoZSBtZW51IHVuZGVyIHdoaWNoIHRoZSBuZXcgbWVudSBzaG91bGQgYmUgaW5zZXJ0 ZWQuCi0gSXQgaXMgYSBsaXN0IG9mIHN0cmluZ3M7IGZvciBleGFtcGxlLCAoXCJGaWxlXCIpIG5h bWVzIHRoZSB0b3AtbGV2ZWwgXCJGaWxlXCIKLSBtZW51LiAgKFwiRmlsZVwiIFwiRm9vXCIpIG5h bWVzIGEgaHlwb3RoZXRpY2FsIHN1Ym1lbnUgb2YgXCJGaWxlXCIuCi0gSWYgTUVOVS1QQVRIIGlz IG5pbCwgdGhlbiB0aGUgbWVudSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBtZW51YmFyIGl0c2VsZi4K LU1FTlUtTkFNRSBpcyB0aGUgc3RyaW5nIG5hbWluZyB0aGUgbWVudSB0byBiZSBhZGRlZC4KLU1F TlUtSVRFTVMgaXMgYSBsaXN0IG9mIG1lbnUgaXRlbSBkZXNjcmlwdGlvbnMuCi0gRWFjaCBtZW51 IGl0ZW0gc2hvdWxkIGJlIGEgdmVjdG9yIG9mIHRocmVlIGVsZW1lbnRzOgotICAgLSBhIHN0cmlu ZywgdGhlIG5hbWUgb2YgdGhlIG1lbnUgaXRlbTsKLSAgIC0gYSBzeW1ib2wgbmFtaW5nIGEgY29t bWFuZCwgb3IgYSBmb3JtIHRvIGV2YWx1YXRlOwotICAgLSBhbmQgYSBmb3JtIHdob3NlIHZhbHVl IGRldGVybWluZXMgd2hldGhlciB0aGlzIGl0ZW0gaXMgc2VsZWN0YWJsZS4KLUJFRk9SRSwgaWYg cHJvdmlkZWQsIGlzIHRoZSBuYW1lIG9mIGEgbWVudSBiZWZvcmUgd2hpY2ggdGhpcyBtZW51IHNo b3VsZAotIGJlIGFkZGVkLCBpZiB0aGlzIG1lbnUgaXMgbm90IG9uIGl0cyBwYXJlbnQgYWxyZWFk eS4gIElmIHRoZSBtZW51IGlzIGFscmVhZHkKLSBwcmVzZW50LCBpdCB3aWxsIG5vdCBiZSBtb3Zl ZC4iCi0gIChvciBtZW51LW5hbWUgKGVycm9yICJtdXN0IHNwZWNpZnkgYSBtZW51IG5hbWUiKSkK LSAgKG9yIG1lbnUtaXRlbXMgKGVycm9yICJtdXN0IHNwZWNpZnkgc29tZSBtZW51IGl0ZW1zIikp Ci0gIChhZGQtbWVudS1pdGVtLTEgbmlsIG1lbnUtcGF0aCBtZW51LW5hbWUgbWVudS1pdGVtcyB0 IGJlZm9yZSkpCi0KLQwKLQotKGRlZnZhciBwdXQtYnVmZmVyLW5hbWVzLWluLWZpbGUtbWVudSB0 KQotCi0KLTs7IERvbid0IHVuY29uZGl0aW9uYWxseSBlbmFibGUgbWVudSBiYXJzOyBsZWF2ZSB0 aGF0IHVwIHRvIHRoZSB1c2VyLgotOzsobGV0ICgoZnJhbWVzIChmcmFtZS1saXN0KSkpCi07OyAg KHdoaWxlIGZyYW1lcwotOzsgICAgKG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJzIChjYXIgZnJhbWVz KSAnKChtZW51LWJhci1saW5lcyAuIDEpKSkKLTs7ICAgIChzZXRxIGZyYW1lcyAoY2RyIGZyYW1l cykpKSkKLTs7KG9yIChhc3NxICdtZW51LWJhci1saW5lcyBkZWZhdWx0LWZyYW1lLWFsaXN0KQot OzsgICAgKHNldHEgZGVmYXVsdC1mcmFtZS1hbGlzdAotOzsJICAoY29ucyAnKG1lbnUtYmFyLWxp bmVzIC4gMSkgZGVmYXVsdC1mcmFtZS1hbGlzdCkpKQotCi0oc2V0LW1lbnViYXIgZGVmYXVsdC1t ZW51YmFyKQotDAotKHByb3ZpZGUgJ2xtZW51KQotCi07OzsgbG1lbnUuZWwgZW5kcyBoZXJlCmRp ZmYgLS1naXQgYS9saXNwL29ic29sZXRlL2x1Y2lkLmVsIGIvbGlzcC9vYnNvbGV0ZS9sdWNpZC5l bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE3Y2M5Y2ZhYS4uMDAwMDAwMDAwMAot LS0gYS9saXNwL29ic29sZXRlL2x1Y2lkLmVsCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAg QEAKLTs7OyBsdWNpZC5lbCAtLS0gZW11bGF0ZSBzb21lIEx1Y2lkIEVtYWNzIGZ1bmN0aW9ucwot Ci07OyBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTUsIDIwMDEtMjAyMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLQotOzsgTWFpbnRhaW5lcjogZW1hY3MtZGV2ZWxAZ251Lm9yZwotOzsg S2V5d29yZHM6IGVtdWxhdGlvbnMKLTs7IE9ic29sZXRlLXNpbmNlOiAyMy4yCi0KLTs7IFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KLQotOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLTs7IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci07OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot OzsgR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi07OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLQotOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLTs7IGFsb25nIHdpdGggR05VIEVtYWNz LiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLQotOzs7IENv bW1lbnRhcnk6Ci0KLTs7OyBDb2RlOgotCi07OyBYRW1hY3MgYXV0b2xvYWRzIENMIHNvIHdlIG1p Z2h0IGFzIHdlbGwgbWFrZSB1c2Ugb2YgaXQuCi0ocmVxdWlyZSAnY2wpCi0KLShkZWZhbGlhcyAn Y3VycmVudC10aW1lLXNlY29uZHMgJ2N1cnJlbnQtdGltZSkKLQotKGRlZnVuIHJlYWwtcGF0aC1u YW1lIChuYW1lICZvcHRpb25hbCBkZWZhdWx0KQotICAoZmlsZS10cnVlbmFtZSAoZXhwYW5kLWZp bGUtbmFtZSBuYW1lIGRlZmF1bHQpKSkKLQotOzsgSXQncyBub3QgY2xlYXIgd2hhdCB0byByZXR1 cm4gaWYgdGhlIG1vdXNlIGlzIG5vdCBpbiBGUkFNRS4KLShkZWZ1biByZWFkLW1vdXNlLXBvc2l0 aW9uIChmcmFtZSkKLSAgKGxldCAoKHBvcyAobW91c2UtcG9zaXRpb24pKSkKLSAgICAoaWYgKGVx IChjYXIgcG9zKSBmcmFtZSkKLQkoY2RyIHBvcykpKSkKLQotKGRlZnVuIHN3aXRjaC10by1vdGhl ci1idWZmZXIgKGFyZykKLSAgIlN3aXRjaCB0byB0aGUgcHJldmlvdXMgYnVmZmVyLgotV2l0aCBh IG51bWVyaWMgYXJnIE4sIHN3aXRjaCB0byB0aGUgTnRoIG1vc3QgcmVjZW50IGJ1ZmZlci4KLVdp dGggYW4gYXJnIG9mIDAsIGJ1cmllcyB0aGUgY3VycmVudCBidWZmZXIgYXQgdGhlCi1ib3R0b20g b2YgdGhlIGJ1ZmZlciBzdGFjay4iCi0gIChpbnRlcmFjdGl2ZSAicCIpCi0gIChpZiAoZXEgYXJn IDApCi0gICAgICAoYnVyeS1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCi0gIChzd2l0Y2gtdG8t YnVmZmVyCi0gICAoaWYgKDw9IGFyZyAxKSAob3RoZXItYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikp Ci0gICAgIChudGggYXJnCi0JICAoYXBwbHkgJ25jb25jCi0JCSAobWFwY2FyCi0JCSAgKGxhbWJk YSAoYnVmKQotCQkgICAgKGlmICg9ID9cICAoc3RyaW5nLXRvLWNoYXIgKGJ1ZmZlci1uYW1lIGJ1 ZikpKQotCQkJbmlsCi0JCSAgICAgIChsaXN0IGJ1ZikpKQotCQkgIChidWZmZXItbGlzdCkpKSkp KSkKLQotKGRlZnVuIGRldmljZS1jbGFzcyAoJm9wdGlvbmFsIGRldmljZSkKLSAgIlJldHVybiB0 aGUgY2xhc3MgKGNvbG9yIGJlaGF2aW9yKSBvZiBERVZJQ0UuCi1UaGlzIHdpbGwgYmUgb25lIG9m IGBjb2xvcicsIGBncmF5c2NhbGUnLCBvciBgbW9ubycuCi1UaGlzIGZ1bmN0aW9uIGV4aXN0cyBm b3IgY29tcGF0aWJpbGl0eSB3aXRoIFhFbWFjcy4iCi0gIChjb25kCi0gICAoKGRpc3BsYXktY29s b3ItcCBkZXZpY2UpICdjb2xvcikKLSAgICgoZGlzcGxheS1ncmF5c2NhbGUtcCBkZXZpY2UpICdn cmF5c2NhbGUpCi0gICAodCAnbW9ubykpKQotCi0oZGVmYWxpYXMgJ2ZpbmQtZmFjZSAnZmFjZXAp Ci0oZGVmYWxpYXMgJ2dldC1mYWNlICdmYWNlcCkKLTs7IGludGVybmFsLXRyeS1mYWNlLWZvbnQg d2FzIHJlbW92ZWQgZnJvbSBmYWNlcy5lbCBpbiByZXYgMS4xMzksIDE5OTkvMDcvMjEuCi07Ozso ZGVmYWxpYXMgJ3RyeS1mYWNlLWZvbnQgJ2ludGVybmFsLXRyeS1mYWNlLWZvbnQpCi0KLShkZWZh bGlhcyAnZXhlYy10by1zdHJpbmcgJ3NoZWxsLWNvbW1hbmQtdG8tc3RyaW5nKQotDAotCi07OyBC dWZmZXIgY29udGV4dAotCi0oZGVmdW4gYnVmZmVyLXN5bnRhY3RpYy1jb250ZXh0ICgmb3B0aW9u YWwgYnVmZmVyKQotICAiU3ludGFjdGljIGNvbnRleHQgYXQgcG9pbnQgaW4gQlVGRkVSLgotRWl0 aGVyIG9mIGBzdHJpbmcnLCBgY29tbWVudCcgb3IgbmlsLgotVGhpcyBpcyBhbiBYRW1hY3MgY29t cGF0aWJpbGl0eSBmdW5jdGlvbi4iCi0gICh3aXRoLWN1cnJlbnQtYnVmZmVyIChvciBidWZmZXIg KGN1cnJlbnQtYnVmZmVyKSkKLSAgICAobGV0ICgoc3RhdGUgKHN5bnRheC1wcHNzIChwb2ludCkp KSkKLSAgICAgIChjb25kCi0gICAgICAgKChudGggMyBzdGF0ZSkgJ3N0cmluZykKLSAgICAgICAo KG50aCA0IHN0YXRlKSAnY29tbWVudCkpKSkpCi0KLQotKGRlZnVuIGJ1ZmZlci1zeW50YWN0aWMt Y29udGV4dC1kZXB0aCAoJm9wdGlvbmFsIGJ1ZmZlcikKLSAgIlN5bnRhY3RpYyBwYXJlbnRoZXNp cyBkZXB0aCBhdCBwb2ludCBpbiBCVUZGRVIuCi1UaGlzIGlzIGFuIFhFbWFjcyBjb21wYXRpYmls aXR5IGZ1bmN0aW9uLiIKLSAgKHdpdGgtY3VycmVudC1idWZmZXIgKG9yIGJ1ZmZlciAoY3VycmVu dC1idWZmZXIpKQotICAgIChudGggMCAoc3ludGF4LXBwc3MgKHBvaW50KSkpKSkKLQotCi07OyBF eHRlbnRzCi0oZGVmdW4gbWFrZS1leHRlbnQgKGJlZyBlbmQgJm9wdGlvbmFsIGJ1ZmZlcikKLSAg KG1ha2Utb3ZlcmxheSBiZWcgZW5kIGJ1ZmZlcikpCi0KLShkZWZ1biBleHRlbnQtcHJvcGVydGll cyAoZXh0ZW50KSAob3ZlcmxheS1wcm9wZXJ0aWVzIGV4dGVudCkpCi0odW5sZXNzIChmYm91bmRw ICdleHRlbnQtcHJvcGVydHkpIChkZWZhbGlhcyAnZXh0ZW50LXByb3BlcnR5ICdvdmVybGF5LWdl dCkpCi0KLShkZWZ1biBleHRlbnQtYXQgKHBvcyAmb3B0aW9uYWwgb2JqZWN0IHByb3BlcnR5IGJl Zm9yZSkKLSAgKHdpdGgtY3VycmVudC1idWZmZXIgKG9yIG9iamVjdCAoY3VycmVudC1idWZmZXIp KQotICAgIChsZXQgKChvdmVybGF5cyAob3ZlcmxheXMtYXQgcG9zICdzb3J0ZWQpKSkKLSAgICAg ICh3aGVuIHByb3BlcnR5Ci0JKGxldCAoZmlsdGVyZWQpCi0JICAod2hpbGUgb3ZlcmxheXMKLQkg ICAgKGlmIChvdmVybGF5LWdldCAoY2FyIG92ZXJsYXlzKSBwcm9wZXJ0eSkKLQkJKHNldHEgZmls dGVyZWQgKGNvbnMgKGNhciBvdmVybGF5cykgZmlsdGVyZWQpKSkKLQkgICAgKHNldHEgb3Zlcmxh eXMgKGNkciBvdmVybGF5cykpKQotCSAgKHNldHEgb3ZlcmxheXMgZmlsdGVyZWQpKSkKLSAgICAg IChpZiBiZWZvcmUKLQkgIChudGggMSAobWVtcSBiZWZvcmUgb3ZlcmxheXMpKQotCShjYXIgb3Zl cmxheXMpKSkpKQotCi0oZGVmdW4gc2V0LWV4dGVudC1wcm9wZXJ0eSAoZXh0ZW50IHByb3AgdmFs dWUpCi0gIDs7IE1ha2Ugc3VyZSB0aGF0IHNlcGFyYXRlIGFkamFjZW50IGV4dGVudHMKLSAgOzsg d2l0aCB0aGUgc2FtZSBtb3VzZS1mYWNlIHZhbHVlCi0gIDs7IGRvIG5vdCBydW4gdG9nZXRoZXIg YXMgb25lIGV4dGVudC4KLSAgKGFuZCAoZXEgcHJvcCAnbW91c2UtZmFjZSkKLSAgICAgICAoc3lt Ym9scCB2YWx1ZSkKLSAgICAgICAoc2V0cSB2YWx1ZSAobGlzdCB2YWx1ZSkpKQotICAoaWYgKGVx IHByb3AgJ2R1cGxpY2FibGUpCi0gICAgICAoY29uZCAoKGFuZCB2YWx1ZSAobm90IChvdmVybGF5 LWdldCBleHRlbnQgcHJvcCkpKQotCSAgICAgOzsgSWYgYmVjb21pbmcgZHVwbGljYWJsZSwgY29w eSBhbGwgb3ZlcmxheXByb3BzIHRvIHRleHQgcHJvcHMuCi0JICAgICAoYWRkLXRleHQtcHJvcGVy dGllcyAob3ZlcmxheS1zdGFydCBleHRlbnQpCi0JCQkJICAob3ZlcmxheS1lbmQgZXh0ZW50KQot CQkJCSAgKG92ZXJsYXktcHJvcGVydGllcyBleHRlbnQpCi0JCQkJICAob3ZlcmxheS1idWZmZXIg ZXh0ZW50KSkpCi0JICAgIDs7IElmIGJlY29taW5nIG5vIGxvbmdlciBkdXBsaWNhYmxlLCByZW1v dmUgdGhlc2UgdGV4dCBwcm9wcy4KLQkgICAgKChhbmQgKG5vdCB2YWx1ZSkgKG92ZXJsYXktZ2V0 IGV4dGVudCBwcm9wKSkKLQkgICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIChvdmVybGF5LXN0 YXJ0IGV4dGVudCkKLQkJCQkgICAgIChvdmVybGF5LWVuZCBleHRlbnQpCi0JCQkJICAgICAob3Zl cmxheS1wcm9wZXJ0aWVzIGV4dGVudCkKLQkJCQkgICAgIChvdmVybGF5LWJ1ZmZlciBleHRlbnQp KSkpCi0gICAgOzsgSWYgZXh0ZW50IGlzIGFscmVhZHkgZHVwbGljYWJsZSwgcHV0IHRoaXMgcHJv cGVydHkKLSAgICA7OyBvbiB0aGUgdGV4dCBhcyB3ZWxsIGFzIG9uIHRoZSBvdmVybGF5LgotICAg IChpZiAob3ZlcmxheS1nZXQgZXh0ZW50ICdkdXBsaWNhYmxlKQotCShwdXQtdGV4dC1wcm9wZXJ0 eSAgKG92ZXJsYXktc3RhcnQgZXh0ZW50KQotCQkJICAgIChvdmVybGF5LWVuZCBleHRlbnQpCi0J CQkgICAgcHJvcCB2YWx1ZSAob3ZlcmxheS1idWZmZXIgZXh0ZW50KSkpKQotICAob3ZlcmxheS1w dXQgZXh0ZW50IHByb3AgdmFsdWUpKQotCi0oZGVmdW4gc2V0LWV4dGVudC1mYWNlIChleHRlbnQg ZmFjZSkKLSAgKHNldC1leHRlbnQtcHJvcGVydHkgZXh0ZW50ICdmYWNlIGZhY2UpKQotCi0oZGVm dW4gc2V0LWV4dGVudC1lbmQtZ2x5cGggKGV4dGVudCBnbHlwaCkKLSAgKHNldC1leHRlbnQtcHJv cGVydHkgZXh0ZW50ICdhZnRlci1zdHJpbmcgZ2x5cGgpKQotCi0oZGVmdW4gZGVsZXRlLWV4dGVu dCAoZXh0ZW50KQotICAoc2V0LWV4dGVudC1wcm9wZXJ0eSBleHRlbnQgJ2R1cGxpY2FibGUgbmls KQotICAoZGVsZXRlLW92ZXJsYXkgZXh0ZW50KSkKLQwKLTs7IFN1cHBvcnQgdGhlIEx1Y2lkIG5h bWVzIHdpdGggYHNjcmVlbicgaW5zdGVhZCBvZiBgZnJhbWUnLgotCi0oZGVmYWxpYXMgJ2N1cnJl bnQtc2NyZWVuLWNvbmZpZ3VyYXRpb24gJ2N1cnJlbnQtZnJhbWUtY29uZmlndXJhdGlvbikKLShk ZWZhbGlhcyAnZGVsZXRlLXNjcmVlbiAnZGVsZXRlLWZyYW1lKQotKGRlZmFsaWFzICdmaW5kLWZp bGUtbmV3LXNjcmVlbiAnZmluZC1maWxlLW90aGVyLWZyYW1lKQotKGRlZmFsaWFzICdmaW5kLWZp bGUtcmVhZC1vbmx5LW5ldy1zY3JlZW4gJ2ZpbmQtZmlsZS1yZWFkLW9ubHktb3RoZXItZnJhbWUp Ci0oZGVmYWxpYXMgJ2ZpbmQtdGFnLW5ldy1zY3JlZW4gJ2ZpbmQtdGFnLW90aGVyLWZyYW1lKQot OzsoZGVmYWxpYXMgJ2ZvY3VzLXNjcmVlbiAnZm9jdXMtZnJhbWUpCi0oZGVmYWxpYXMgJ2ljb25p Znktc2NyZWVuICdpY29uaWZ5LWZyYW1lKQotKGRlZmFsaWFzICdtYWlsLW5ldy1zY3JlZW4gJ21h aWwtb3RoZXItZnJhbWUpCi0oZGVmYWxpYXMgJ21ha2Utc2NyZWVuLWludmlzaWJsZSAnbWFrZS1m cmFtZS1pbnZpc2libGUpCi0oZGVmYWxpYXMgJ21ha2Utc2NyZWVuLXZpc2libGUgJ21ha2UtZnJh bWUtdmlzaWJsZSkKLTs7IChkZWZhbGlhcyAnbWluaWJ1ZmZlci1zY3JlZW4tbGlzdCAnbWluaWJ1 ZmZlci1mcmFtZS1saXN0KQotKGRlZmFsaWFzICdtb2RpZnktc2NyZWVuLXBhcmFtZXRlcnMgJ21v ZGlmeS1mcmFtZS1wYXJhbWV0ZXJzKQotKGRlZmFsaWFzICduZXh0LXNjcmVlbiAnbmV4dC1mcmFt ZSkKLTs7IChkZWZhbGlhcyAnbmV4dC1tdWx0aXNjcmVlbi13aW5kb3cgJ25leHQtbXVsdGlmcmFt ZS13aW5kb3cpCi07OyAoZGVmYWxpYXMgJ3ByZXZpb3VzLW11bHRpc2NyZWVuLXdpbmRvdyAncHJl dmlvdXMtbXVsdGlmcmFtZS13aW5kb3cpCi07OyAoZGVmYWxpYXMgJ3JlZGlyZWN0LXNjcmVlbi1m b2N1cyAncmVkaXJlY3QtZnJhbWUtZm9jdXMpCi0oZGVmYWxpYXMgJ3JlZHJhdy1zY3JlZW4gJ3Jl ZHJhdy1mcmFtZSkKLTs7IChkZWZhbGlhcyAnc2NyZWVuLWNoYXItaGVpZ2h0ICdmcmFtZS1jaGFy LWhlaWdodCkKLTs7IChkZWZhbGlhcyAnc2NyZWVuLWNoYXItd2lkdGggJ2ZyYW1lLWNoYXItd2lk dGgpCi07OyAoZGVmYWxpYXMgJ3NjcmVlbi1jb25maWd1cmF0aW9uLXRvLXJlZ2lzdGVyICdmcmFt ZS1jb25maWd1cmF0aW9uLXRvLXJlZ2lzdGVyKQotOzsgKGRlZmFsaWFzICdzY3JlZW4tZm9jdXMg J2ZyYW1lLWZvY3VzKQotKGRlZmFsaWFzICdzY3JlZW4tbGlzdCAnZnJhbWUtbGlzdCkKLTs7IChk ZWZhbGlhcyAnc2NyZWVuLWxpdmUtcCAnZnJhbWUtbGl2ZS1wKQotKGRlZmFsaWFzICdzY3JlZW4t cGFyYW1ldGVycyAnZnJhbWUtcGFyYW1ldGVycykKLShkZWZhbGlhcyAnc2NyZWVuLXBpeGVsLWhl aWdodCAnZnJhbWUtcGl4ZWwtaGVpZ2h0KQotKGRlZmFsaWFzICdzY3JlZW4tcGl4ZWwtd2lkdGgg J2ZyYW1lLXBpeGVsLXdpZHRoKQotKGRlZmFsaWFzICdzY3JlZW4tcm9vdC13aW5kb3cgJ2ZyYW1l LXJvb3Qtd2luZG93KQotKGRlZmFsaWFzICdzY3JlZW4tc2VsZWN0ZWQtd2luZG93ICdmcmFtZS1z ZWxlY3RlZC13aW5kb3cpCi0oZGVmYWxpYXMgJ2xvd2VyLXNjcmVlbiAnbG93ZXItZnJhbWUpCi0o ZGVmYWxpYXMgJ3JhaXNlLXNjcmVlbiAncmFpc2UtZnJhbWUpCi0oZGVmYWxpYXMgJ3NjcmVlbi12 aXNpYmxlLXAgJ2ZyYW1lLXZpc2libGUtcCkKLShkZWZhbGlhcyAnc2NyZWVucCAnZnJhbWVwKQot KGRlZmFsaWFzICdzZWxlY3Qtc2NyZWVuICdzZWxlY3QtZnJhbWUpCi0oZGVmYWxpYXMgJ3NlbGVj dGVkLXNjcmVlbiAnc2VsZWN0ZWQtZnJhbWUpCi07OyAoZGVmYWxpYXMgJ3NldC1zY3JlZW4tY29u ZmlndXJhdGlvbiAnc2V0LWZyYW1lLWNvbmZpZ3VyYXRpb24pCi07OyAoZGVmYWxpYXMgJ3NldC1z Y3JlZW4taGVpZ2h0ICdzZXQtZnJhbWUtaGVpZ2h0KQotKGRlZmFsaWFzICdzZXQtc2NyZWVuLXBv c2l0aW9uICdzZXQtZnJhbWUtcG9zaXRpb24pCi0oZGVmYWxpYXMgJ3NldC1zY3JlZW4tc2l6ZSAn c2V0LWZyYW1lLXNpemUpCi07OyAoZGVmYWxpYXMgJ3NldC1zY3JlZW4td2lkdGggJ3NldC1mcmFt ZS13aWR0aCkKLShkZWZhbGlhcyAnc3dpdGNoLXRvLWJ1ZmZlci1uZXctc2NyZWVuICdzd2l0Y2gt dG8tYnVmZmVyLW90aGVyLWZyYW1lKQotOzsgKGRlZmFsaWFzICd1bmZvY3VzLXNjcmVlbiAndW5m b2N1cy1mcmFtZSkKLShkZWZhbGlhcyAndmlzaWJsZS1zY3JlZW4tbGlzdCAndmlzaWJsZS1mcmFt ZS1saXN0KQotKGRlZmFsaWFzICd3aW5kb3ctc2NyZWVuICd3aW5kb3ctZnJhbWUpCi0oZGVmYWxp YXMgJ3gtY3JlYXRlLXNjcmVlbiAneC1jcmVhdGUtZnJhbWUpCi0oZGVmYWxpYXMgJ3gtbmV3LXNj cmVlbiAnbWFrZS1mcmFtZSkKLQotKHByb3ZpZGUgJ2x1Y2lkKQotCi07OyBMb2NhbCBWYXJpYWJs ZXM6Ci07OyBieXRlLWNvbXBpbGUtd2FybmluZ3M6IChub3QgY2wtZnVuY3Rpb25zKQotOzsgRW5k OgotCi07OzsgbHVjaWQuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9saXNwL29ic29sZXRlL29s ZC13aGl0ZXNwYWNlLmVsIGIvbGlzcC9vYnNvbGV0ZS9vbGQtd2hpdGVzcGFjZS5lbApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY0NmQ3ZGRkYS4uMDAwMDAwMDAwMAotLS0gYS9saXNw L29ic29sZXRlL29sZC13aGl0ZXNwYWNlLmVsCisrKyAvZGV2L251bGwKQEAgLTEsODAxICswLDAg QEAKLTs7OyB3aGl0ZXNwYWNlLmVsIC0tLSB3YXJuIGFib3V0IGFuZCBjbGVhbiBib2d1cyB3aGl0 ZXNwYWNlcyBpbiB0aGUgZmlsZQotCi07OyBDb3B5cmlnaHQgKEMpIDE5OTktMjAyMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotOzsgQXV0aG9yOiBSYWplc2ggVmFpZGhlZXN3YXJy YW4gPHJ2QGdudS5vcmc+Ci07OyBLZXl3b3JkczogY29udmVuaWVuY2UKLTs7IE9ic29sZXRlLXNp bmNlOiAyMy4xCi0KLTs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KLQotOzsgR05V IEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLTs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci07OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotOzsgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLQotOzsgR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi07OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotOzsgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotOzsgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotOzsgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLTs7 IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLQotOzs7IENvbW1lbnRhcnk6Ci0KLTs7IFVSTDogaHR0cDovL3d3dy5kc21p dC5jb20vbGlzcC8KLTs7Ci07OyBUaGUgd2hpdGVzcGFjZSBsaWJyYXJ5IGlzIGludGVuZGVkIHRv IGZpbmQgYW5kIGhlbHAgZml4IGZpdmUgZGlmZmVyZW50IHR5cGVzCi07OyBvZiB3aGl0ZXNwYWNl IHByb2JsZW1zIHRoYXQgY29tbW9ubHkgZXhpc3QgaW4gc291cmNlIGNvZGUuCi07OwotOzsgMS4g TGVhZGluZyBzcGFjZSAoZW1wdHkgbGluZXMgYXQgdGhlIHRvcCBvZiBhIGZpbGUpLgotOzsgMi4g VHJhaWxpbmcgc3BhY2UgKGVtcHR5IGxpbmVzIGF0IHRoZSBlbmQgb2YgYSBmaWxlKS4KLTs7IDMu IEluZGVudGF0aW9uIHNwYWNlICg4IG9yIG1vcmUgc3BhY2VzIGF0IGJlZ2lubmluZyBvZiBsaW5l LCB0aGF0IHNob3VsZCBiZQotOzsJCSAgICAgIHJlcGxhY2VkIHdpdGggVEFCUykuCi07OyA0LiBT cGFjZXMgZm9sbG93ZWQgYnkgYSBUQUIuICAoQWxtb3N0IGFsd2F5cywgd2UgbmV2ZXIgd2FudCB0 aGF0KS4KLTs7IDUuIFNwYWNlcyBvciBUQUJTIGF0IHRoZSBlbmQgb2YgYSBsaW5lLgotOzsKLTs7 IFdoaXRlc3BhY2UgZXJyb3JzIGFyZSByZXBvcnRlZCBpbiBhIGJ1ZmZlciwgYW5kIG9uIHRoZSBt b2RlIGxpbmUuCi07OwotOzsgTW9kZSBsaW5lIHdpbGwgc2hvdyBhIFc6PHg+ITx5PiB0byBkZW5v dGUgYSBwYXJ0aWN1bGFyIHR5cGUgb2Ygd2hpdGVzcGFjZSwKLTs7IHdoZXJlIGB4JyBhbmQgYHkn IGNhbiBiZSBvbmUgKG9yIG1vcmUpIG9mOgotOzsKLTs7IGUgLSBFbmQtb2YtTGluZSB3aGl0ZXNw YWNlLgotOzsgaSAtIEluZGVudGF0aW9uIHdoaXRlc3BhY2UuCi07OyBsIC0gTGVhZGluZyB3aGl0 ZXNwYWNlLgotOzsgcyAtIFNwYWNlIGZvbGxvd2VkIGJ5IFRhYi4KLTs7IHQgLSBUcmFpbGluZyB3 aGl0ZXNwYWNlLgotOzsKLTs7IElmIGFueSBvZiB0aGUgd2hpdGVzcGFjZSBjaGVja3MgaXMgdHVy bmVkIG9mZiwgdGhlIG1vZGUgbGluZSB3aWxsIGRpc3BsYXkgYQotOzsgITx5Pi4KLTs7Ci07OyAg ICAgKHNpbmNlICgzKSBpcyB0aGUgbW9zdCBjb250cm92ZXJzaWFsIG9uZSwgaGVyZSBpcyB0aGUg cmF0aW9uYWxlOiBNb3N0Ci07OyAgICAgdGVybWluYWwgZHJpdmVycyBhbmQgcHJpbnRlciBkcml2 ZXJzIGhhdmUgVEFCIGNvbmZpZ3VyZWQgb3IgZXZlbgotOzsgICAgIGhhcmRjb2RlZCB0byBiZSA4 IHNwYWNlcy4gIChTb21lIG9mIHRoZW0gYWxsb3cgY29uZmlndXJhdGlvbiwgYnV0IGFsbW9zdAot OzsgICAgIGFsd2F5cyB0aGV5IGRlZmF1bHQgdG8gOC4pCi07OwotOzsgICAgIENoYW5naW5nIGB0 YWItd2lkdGgnIHRvIG90aGVyIHRoYW4gOCBhbmQgZWRpdGluZyB3aWxsIGNhdXNlIHlvdXIgY29k ZSB0bwotOzsgICAgIGxvb2sgZGlmZmVyZW50IGZyb20gd2l0aGluIEVtYWNzLCBhbmQgc2F5LCBp ZiB5b3UgY2F0IGl0IG9yIG1vcmUgaXQsIG9yCi07OyAgICAgZXZlbiBwcmludCBpdC4KLTs7Ci07 OyAgICAgQWxtb3N0IGFsbCB0aGUgcG9wdWxhciBwcm9ncmFtbWluZyBtb2RlcyBsZXQgeW91IGRl ZmluZSBhbiBvZmZzZXQgKGxpa2UKLTs7ICAgICBjLWJhc2ljLW9mZnNldCBvciBwZXJsLWluZGVu dC1sZXZlbCkgdG8gY29uZmlndXJlIHRoZSBvZmZzZXQsIHNvIHlvdQotOzsgICAgIHNob3VsZCBu ZXZlciBoYXZlIHRvIHNldCB5b3VyIGB0YWItd2lkdGgnIHRvIGJlIG90aGVyIHRoYW4gOCBpbiBh bGwKLTs7ICAgICB0aGVzZSBtb2Rlcy4gIEluIGZhY3QsIHdpdGggYW4gaW5kZW50IGxldmVsIG9m IHNheSwgNCwgMiBUQUJTIHdpbGwgY2F1c2UKLTs7ICAgICBFbWFjcyB0byByZXBsYWNlIHlvdXIg OCBzcGFjZXMgd2l0aCBvbmUgXHQgKHRyeSBpdCkuICBJZiB2aSB1c2VycyBpbgotOzsgICAgIHlv dXIgb2ZmaWNlIGNvbXBsYWluLCB0ZWxsIHRoZW0gdG8gdXNlIHZpbSwgd2hpY2ggZGlzdGluZ3Vp c2hlcyBiZXR3ZWVuCi07OyAgICAgdGFic3RvcCBhbmQgc2hpZnR3aWR0aCAodmkgZXF1aXZhbGVu dCBvZiBvdXIgb2Zmc2V0cyksIGFuZCBhbHNvIGFzayB0aGVtCi07OyAgICAgdG8gc2V0IHNtYXJ0 dGFiLikKLTs7Ci07OyBBbGwgdGhlIGFib3ZlIGhhdmUgY2F1c2VkIChhbmQgd2lsbCBjYXVzZSkg dW53YW50ZWQgY29kZWxpbmUgaW50ZWdyYXRpb24gYW5kCi07OyBtZXJnZSBwcm9ibGVtcy4KLTs7 Ci07OyB3aGl0ZXNwYWNlLmVsIHdpbGwgY29tcGxhaW4gaWYgaXQgZGV0ZWN0cyB3aGl0ZXNwYWNl cyBvbiBvcGVuaW5nIGEgZmlsZSwgYW5kCi07OyB3YXJuIHlvdSBvbiBjbG9zaW5nIGEgZmlsZSBh bHNvIChpbiBjYXNlIHlvdSBoYWQgaW5zZXJ0ZWQgYW55Ci07OyB3aGl0ZXNwYWNlcyBkdXJpbmcg dGhlIHByb2Nlc3Mgb2YgeW91ciBlZGl0aW5nKS4KLTs7Ci07OyBFeHBvcnRlZCBmdW5jdGlvbnM6 Ci07OwotOzsgYHdoaXRlc3BhY2UtYnVmZmVyJyAtIFRvIGNoZWNrIHRoZSBjdXJyZW50IGJ1ZmZl ciBmb3Igd2hpdGVzcGFjZSBwcm9ibGVtcy4KLTs7IGB3aGl0ZXNwYWNlLWNsZWFudXAnIC0gVG8g Y2xlYW51cCBhbGwgd2hpdGVzcGFjZXMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLgotOzsgYHdoaXRl c3BhY2UtcmVnaW9uJyAtIFRvIGNoZWNrIGJldHdlZW4gcG9pbnQgYW5kIG1hcmsgZm9yIHdoaXRl c3BhY2UKLTs7ICAgICAgICAgICAgICAgICAgICAgICBwcm9ibGVtcy4KLTs7IGB3aGl0ZXNwYWNl LWNsZWFudXAtcmVnaW9uJyAtIFRvIGNsZWFudXAgYWxsIHdoaXRlc3BhY2VzIGJldHdlZW4gcG9p bnQKLTs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtYXJrIGluIHRoZSBjdXJy ZW50IGJ1ZmZlci4KLQotOzs7IENvZGU6Ci0KLShkZWZ2YXIgd2hpdGVzcGFjZS12ZXJzaW9uICIz LjUiICJWZXJzaW9uIG9mIHRoZSB3aGl0ZXNwYWNlIGxpYnJhcnkuIikKLQotKGRlZnZhciB3aGl0 ZXNwYWNlLWFsbC1idWZmZXItZmlsZXMgbmlsCi0gICJBbiBhc3NvY2lhdGVkIGxpc3Qgb2YgYnVm ZmVycyBhbmQgZmlsZXMgY2hlY2tlZCBmb3Igd2hpdGVzcGFjZSBjbGVhbmxpbmVzcy4KLQotVGhp cyBpcyB0byBlbmFibGUgcGVyaW9kaWMgY2hlY2tpbmcgb2Ygd2hpdGVzcGFjZSBjbGVhbmxpbmVz cyBpbiB0aGUgZmlsZXMKLXZpc2l0ZWQgYnkgdGhlIGJ1ZmZlcnMuIikKLQotKGRlZnZhciB3aGl0 ZXNwYWNlLXJlc2Nhbi10aW1lciBuaWwKLSAgIlRpbWVyIG9iamVjdCB1c2VkIHRvIHJlc2NhbiB0 aGUgZmlsZXMgaW4gYnVmZmVycyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4iKQotCi07OyBUZWxs IEVtYWNzIGFib3V0IHRoaXMgbmV3IGtpbmQgb2YgbWlub3IgbW9kZQotKGRlZnZhciB3aGl0ZXNw YWNlLW1vZGUgbmlsCi0gICJOb24tbmlsIHdoZW4gV2hpdGVzcGFjZSBtb2RlIChhIG1pbm9yIG1v ZGUpIGlzIGVuYWJsZWQuIikKLShtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnd2hpdGVzcGFj ZS1tb2RlKQotCi0oZGVmdmFyIHdoaXRlc3BhY2UtbW9kZS1saW5lIG5pbAotICAiU3RyaW5nIHRv IGRpc3BsYXkgaW4gdGhlIG1vZGUgbGluZSBmb3IgV2hpdGVzcGFjZSBtb2RlLiIpCi0obWFrZS12 YXJpYWJsZS1idWZmZXItbG9jYWwgJ3doaXRlc3BhY2UtbW9kZS1saW5lKQotCi0oZGVmdmFyIHdo aXRlc3BhY2UtY2hlY2stYnVmZmVyLWxlYWRpbmcgbmlsCi0gICJUZXN0IGxlYWRpbmcgd2hpdGVz cGFjZSBmb3IgZmlsZSBpbiBjdXJyZW50IGJ1ZmZlciBpZiB0LiIpCi0obWFrZS12YXJpYWJsZS1i dWZmZXItbG9jYWwgJ3doaXRlc3BhY2UtY2hlY2stYnVmZmVyLWxlYWRpbmcpCi07OzsjIyNhdXRv bG9hZChwdXQgJ3doaXRlc3BhY2UtY2hlY2stYnVmZmVyLWxlYWRpbmcgJ3NhZmUtbG9jYWwtdmFy aWFibGUgJ2Jvb2xlYW5wKQotCi0oZGVmdmFyIHdoaXRlc3BhY2UtY2hlY2stYnVmZmVyLXRyYWls aW5nIG5pbAotICAiVGVzdCB0cmFpbGluZyB3aGl0ZXNwYWNlIGZvciBmaWxlIGluIGN1cnJlbnQg YnVmZmVyIGlmIHQuIikKLShtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnd2hpdGVzcGFjZS1j aGVjay1idWZmZXItdHJhaWxpbmcpCi07OzsjIyNhdXRvbG9hZChwdXQgJ3doaXRlc3BhY2UtY2hl Y2stYnVmZmVyLXRyYWlsaW5nICdzYWZlLWxvY2FsLXZhcmlhYmxlICdib29sZWFucCkKLQotKGRl ZnZhciB3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1pbmRlbnQgbmlsCi0gICJUZXN0IGluZGVudGF0 aW9uIHdoaXRlc3BhY2UgZm9yIGZpbGUgaW4gY3VycmVudCBidWZmZXIgaWYgdC4iKQotKG1ha2Ut dmFyaWFibGUtYnVmZmVyLWxvY2FsICd3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1pbmRlbnQpCi07 OzsjIyNhdXRvbG9hZChwdXQgJ3doaXRlc3BhY2UtY2hlY2stYnVmZmVyLWluZGVudCAnc2FmZS1s b2NhbC12YXJpYWJsZSAnYm9vbGVhbnApCi0KLShkZWZ2YXIgd2hpdGVzcGFjZS1jaGVjay1idWZm ZXItc3BhY2V0YWIgbmlsCi0gICJUZXN0IFNwYWNlLWZvbGxvd2VkLWJ5LVRBQlMgd2hpdGVzcGFj ZSBmb3IgZmlsZSBpbiBjdXJyZW50IGJ1ZmZlciBpZiB0LiIpCi0obWFrZS12YXJpYWJsZS1idWZm ZXItbG9jYWwgJ3doaXRlc3BhY2UtY2hlY2stYnVmZmVyLXNwYWNldGFiKQotOzs7IyMjYXV0b2xv YWQocHV0ICd3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1zcGFjZXRhYiAnc2FmZS1sb2NhbC12YXJp YWJsZSAnYm9vbGVhbnApCi0KLShkZWZ2YXIgd2hpdGVzcGFjZS1jaGVjay1idWZmZXItYXRlb2wg bmlsCi0gICJUZXN0IGVuZC1vZi1saW5lIHdoaXRlc3BhY2UgZm9yIGZpbGUgaW4gY3VycmVudCBi dWZmZXIgaWYgdC4iKQotKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICd3aGl0ZXNwYWNlLWNo ZWNrLWJ1ZmZlci1hdGVvbCkKLTs7OyMjI2F1dG9sb2FkKHB1dCAnd2hpdGVzcGFjZS1jaGVjay1i dWZmZXItYXRlb2wgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ2Jvb2xlYW5wKQotCi0oZGVmdmFyIHdo aXRlc3BhY2UtaGlnaGxpZ2h0ZWQtc3BhY2UgbmlsCi0gICJUaGUgdmFyaWFibGUgdG8gc3RvcmUg dGhlIGV4dGVudCB0byBoaWdobGlnaHQuIikKLShtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAn d2hpdGVzcGFjZS1oaWdobGlnaHRlZC1zcGFjZSkKLQotKGRlZmFsaWFzICd3aGl0ZXNwYWNlLW1h a2Utb3ZlcmxheQotICAoaWYgKGZlYXR1cmVwICd4ZW1hY3MpICdtYWtlLWV4dGVudCAnbWFrZS1v dmVybGF5KSkKLShkZWZhbGlhcyAnd2hpdGVzcGFjZS1vdmVybGF5LXB1dAotICAoaWYgKGZlYXR1 cmVwICd4ZW1hY3MpICdzZXQtZXh0ZW50LXByb3BlcnR5ICdvdmVybGF5LXB1dCkpCi0oZGVmYWxp YXMgJ3doaXRlc3BhY2UtZGVsZXRlLW92ZXJsYXkKLSAgKGlmIChmZWF0dXJlcCAneGVtYWNzKSAn ZGVsZXRlLWV4dGVudCAnZGVsZXRlLW92ZXJsYXkpKQotKGRlZmFsaWFzICd3aGl0ZXNwYWNlLW92 ZXJsYXktc3RhcnQKLSAgKGlmIChmZWF0dXJlcCAneGVtYWNzKSAnZXh0ZW50LXN0YXJ0ICdvdmVy bGF5LXN0YXJ0KSkKLShkZWZhbGlhcyAnd2hpdGVzcGFjZS1vdmVybGF5LWVuZAotICAoaWYgKGZl YXR1cmVwICd4ZW1hY3MpICdleHRlbnQtZW5kICdvdmVybGF5LWVuZCkpCi0oZGVmYWxpYXMgJ3do aXRlc3BhY2UtbW9kZS1saW5lLXVwZGF0ZQotICAoaWYgKGZlYXR1cmVwICd4ZW1hY3MpICdyZWRy YXctbW9kZWxpbmUgJ2ZvcmNlLW1vZGUtbGluZS11cGRhdGUpKQotCi0oZGVmZ3JvdXAgd2hpdGVz cGFjZSBuaWwKLSAgIkNoZWNrIGZvciBhbmQgZml4IGZpdmUgZGlmZmVyZW50IHR5cGVzIG9mIHdo aXRlc3BhY2VzIGluIHNvdXJjZSBjb2RlLiIKLSAgOnZlcnNpb24gIjIxLjEiCi0gIDpsaW5rICco ZW1hY3MtY29tbWVudGFyeS1saW5rICJ3aGl0ZXNwYWNlLmVsIikKLSAgOzsgU2luY2UgWEVtYWNz IGRvZXNuJ3QgaGF2ZSBhICdjb252ZW5pZW5jZSBncm91cCwgdXNlIHRoZSBuZXh0IGJlc3QgZ3Jv dXAKLSAgOzsgd2hpY2ggaXMgJ2VkaXRpbmc/Ci0gIDpncm91cCAoaWYgKGZlYXR1cmVwICd4ZW1h Y3MpICdlZGl0aW5nICdjb252ZW5pZW5jZSkpCi0KLShkZWZjdXN0b20gd2hpdGVzcGFjZS1jaGVj ay1sZWFkaW5nLXdoaXRlc3BhY2UgdAotICAiRmxhZyB0byBjaGVjayBsZWFkaW5nIHdoaXRlc3Bh Y2UuICBUaGlzIGlzIHRoZSBnbG9iYWwgZm9yIHRoZSBzeXN0ZW0uCi1JdCBjYW4gYmUgb3ZlcnJp ZGRlbiBieSBzZXR0aW5nIGEgYnVmZmVyIGxvY2FsIHZhcmlhYmxlCi1gd2hpdGVzcGFjZS1jaGVj ay1idWZmZXItbGVhZGluZycuIgotICA6dHlwZSAnYm9vbGVhbgotICA6Z3JvdXAgJ3doaXRlc3Bh Y2UpCi0KLShkZWZjdXN0b20gd2hpdGVzcGFjZS1jaGVjay10cmFpbGluZy13aGl0ZXNwYWNlIHQK LSAgIkZsYWcgdG8gY2hlY2sgdHJhaWxpbmcgd2hpdGVzcGFjZS4gIFRoaXMgaXMgdGhlIGdsb2Jh bCBmb3IgdGhlIHN5c3RlbS4KLUl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgYSBidWZm ZXIgbG9jYWwgdmFyaWFibGUKLWB3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci10cmFpbGluZycuIgot ICA6dHlwZSAnYm9vbGVhbgotICA6Z3JvdXAgJ3doaXRlc3BhY2UpCi0KLShkZWZjdXN0b20gd2hp dGVzcGFjZS1jaGVjay1zcGFjZXRhYi13aGl0ZXNwYWNlIHQKLSAgIkZsYWcgdG8gY2hlY2sgc3Bh Y2UgZm9sbG93ZWQgYnkgYSBUQUIuICBUaGlzIGlzIHRoZSBnbG9iYWwgZm9yIHRoZSBzeXN0ZW0u Ci1JdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIGEgYnVmZmVyIGxvY2FsIHZhcmlhYmxl Ci1gd2hpdGVzcGFjZS1jaGVjay1idWZmZXItc3BhY2V0YWInLiIKLSAgOnR5cGUgJ2Jvb2xlYW4K LSAgOmdyb3VwICd3aGl0ZXNwYWNlKQotCi0oZGVmY3VzdG9tIHdoaXRlc3BhY2Utc3BhY2V0YWIt cmVnZXhwICJbIF0rXHQiCi0gICJSZWdleHAgdG8gbWF0Y2ggb25lIG9yIG1vcmUgc3BhY2VzIGZv bGxvd2VkIGJ5IGEgVEFCLiIKLSAgOnR5cGUgJ3JlZ2V4cAotICA6Z3JvdXAgJ3doaXRlc3BhY2Up Ci0KLShkZWZjdXN0b20gd2hpdGVzcGFjZS1jaGVjay1pbmRlbnQtd2hpdGVzcGFjZSBpbmRlbnQt dGFicy1tb2RlCi0gICJGbGFnIHRvIGNoZWNrIGluZGVudGF0aW9uIHdoaXRlc3BhY2UuICBUaGlz IGlzIHRoZSBnbG9iYWwgZm9yIHRoZSBzeXN0ZW0uCi1JdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBz ZXR0aW5nIGEgYnVmZmVyIGxvY2FsIHZhcmlhYmxlCi1gd2hpdGVzcGFjZS1jaGVjay1idWZmZXIt aW5kZW50Jy4iCi0gIDp0eXBlICdib29sZWFuCi0gIDpncm91cCAnd2hpdGVzcGFjZSkKLQotKGRl ZmN1c3RvbSB3aGl0ZXNwYWNlLWluZGVudC1yZWdleHAgIl5cdCpcXCggICAgICAgIFxcKSsiCi0g ICJSZWdleHAgdG8gbWF0Y2ggbXVsdGlwbGVzIG9mIGVpZ2h0IHNwYWNlcyBuZWFyIGxpbmUgYmVn aW5uaW5ncy4KLVRoZSBkZWZhdWx0IHZhbHVlIGlnbm9yZXMgbGVhZGluZyBUQUJzLiIKLSAgOnR5 cGUgJ3JlZ2V4cAotICA6Z3JvdXAgJ3doaXRlc3BhY2UpCi0KLShkZWZjdXN0b20gd2hpdGVzcGFj ZS1jaGVjay1hdGVvbC13aGl0ZXNwYWNlIHQKLSAgIkZsYWcgdG8gY2hlY2sgZW5kLW9mLWxpbmUg d2hpdGVzcGFjZS4gIFRoaXMgaXMgdGhlIGdsb2JhbCBmb3IgdGhlIHN5c3RlbS4KLUl0IGNhbiBi ZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgYSBidWZmZXIgbG9jYWwgdmFyaWFibGUKLWB3aGl0ZXNw YWNlLWNoZWNrLWJ1ZmZlci1hdGVvbCcuIgotICA6dHlwZSAnYm9vbGVhbgotICA6Z3JvdXAgJ3do aXRlc3BhY2UpCi0KLShkZWZjdXN0b20gd2hpdGVzcGFjZS1hdGVvbC1yZWdleHAgIlsgXHRdKyQi Ci0gICJSZWdleHAgdG8gbWF0Y2ggb25lIG9yIG1vcmUgVEFCcyBvciBzcGFjZXMgYXQgbGluZSBl bmRzLiIKLSAgOnR5cGUgJ3JlZ2V4cAotICA6Z3JvdXAgJ3doaXRlc3BhY2UpCi0KLShkZWZjdXN0 b20gd2hpdGVzcGFjZS1lcnJidWYgIipXaGl0ZXNwYWNlIEVycm9ycyoiCi0gICJUaGUgbmFtZSBv ZiB0aGUgYnVmZmVyIHdoZXJlIHdoaXRlc3BhY2UgcmVsYXRlZCBtZXNzYWdlcyB3aWxsIGJlIGxv Z2dlZC4iCi0gIDp0eXBlICdzdHJpbmcKLSAgOmdyb3VwICd3aGl0ZXNwYWNlKQotCi0oZGVmY3Vz dG9tIHdoaXRlc3BhY2UtY2xlYW4tbXNnICJjbGVhbi4iCi0gICJJZiBub24tbmlsLCB0aGlzIG1l c3NhZ2Ugd2lsbCBiZSBkaXNwbGF5ZWQgYWZ0ZXIgYSB3aGl0ZXNwYWNlIGNoZWNrCi1kZXRlcm1p bmVzIGEgZmlsZSB0byBiZSBjbGVhbi4iCi0gIDp0eXBlICdzdHJpbmcKLSAgOmdyb3VwICd3aGl0 ZXNwYWNlKQotCi0oZGVmY3VzdG9tIHdoaXRlc3BhY2UtYWJvcnQtb24tZXJyb3IgbmlsCi0gICJX aGlsZSB3cml0aW5nIGEgZmlsZSwgYWJvcnQgaWYgdGhlIGZpbGUgaXMgdW5jbGVhbi4KLUlmIGB3 aGl0ZXNwYWNlLWF1dG8tY2xlYW51cCcgaXMgc2V0LCB0aGF0IHRha2VzIHByZWNlZGVuY2Ugb3Zl cgotdGhpcyB2YXJpYWJsZS4iCi0gIDp0eXBlICAnYm9vbGVhbgotICA6Z3JvdXAgJ3doaXRlc3Bh Y2UpCi0KLShkZWZjdXN0b20gd2hpdGVzcGFjZS1hdXRvLWNsZWFudXAgbmlsCi0gICJDbGVhbnVw IGEgYnVmZmVyIGF1dG9tYXRpY2FsbHkgb24gZmluZGluZyBpdCB3aGl0ZXNwYWNlIHVuY2xlYW4u IgotICA6dHlwZSAgJ2Jvb2xlYW4KLSAgOmdyb3VwICd3aGl0ZXNwYWNlKQotCi0oZGVmY3VzdG9t IHdoaXRlc3BhY2Utc2lsZW50IG5pbAotICAiQWxsIHdoaXRlc3BhY2UgZXJyb3JzIHdpbGwgYmUg c2hvd24gb25seSBpbiB0aGUgbW9kZSBsaW5lIHdoZW4gdC4KLQotTm90ZSB0aGF0IHNldHRpbmcg dGhpcyBtYXkgY2F1c2UgYWxsIHdoaXRlc3BhY2VzIGludHJvZHVjZWQgaW4gYSBmaWxlIHRvIGdv Ci11bm5vdGljZWQgd2hlbiB0aGUgYnVmZmVyIGlzIGtpbGxlZCwgdW5sZXNzIHRoZSB1c2VyIHZp c2l0cyB0aGUgYCpXaGl0ZXNwYWNlCi1FcnJvcnMqJyBidWZmZXIgYmVmb3JlIG9wZW5pbmcgKG9y IGNsb3NpbmcpIGFub3RoZXIgZmlsZS4iCi0gIDp0eXBlICdib29sZWFuCi0gIDpncm91cCAnd2hp dGVzcGFjZSkKLQotKGRlZmN1c3RvbSB3aGl0ZXNwYWNlLW1vZGVzICcoYWRhLW1vZGUgYXNtLW1v ZGUgYXV0b2NvbmYtbW9kZSBhd2stbW9kZQotCQkJCSAgICAgICBjLW1vZGUgYysrLW1vZGUgY2Mt bW9kZQotCQkJCSAgICAgICBjaGFuZ2UtbG9nLW1vZGUgY3BlcmwtbW9kZQotCQkJCSAgICAgICBl bGVjdHJpYy1ucm9mZi1tb2RlIGVtYWNzLWxpc3AtbW9kZQotCQkJCSAgICAgICBmOTAtbW9kZSBm b3J0cmFuLW1vZGUgaHRtbC1tb2RlCi0JCQkJICAgICAgIGh0bWwzLW1vZGUgamF2YS1tb2RlIGpk ZS1tb2RlCi0JCQkJICAgICAgIGtzaC1tb2RlIGxhdGV4LW1vZGUgTGFUZVgtbW9kZQotCQkJCSAg ICAgICBsaXNwLW1vZGUgbTQtbW9kZSBtYWtlZmlsZS1tb2RlCi0JCQkJICAgICAgIG1vZHVsYS0y LW1vZGUgbnJvZmYtbW9kZSBvYmpjLW1vZGUKLQkJCQkgICAgICAgcGFzY2FsLW1vZGUgcGVybC1t b2RlIHByb2xvZy1tb2RlCi0JCQkJICAgICAgIHB5dGhvbi1tb2RlIHNjaGVtZS1tb2RlIHNnbWwt bW9kZQotCQkJCSAgICAgICBzaC1tb2RlIHNoZWxsLXNjcmlwdC1tb2RlIHNpbXVsYS1tb2RlCi0J CQkJICAgICAgIHRjbC1tb2RlIHRleC1tb2RlIHRleGluZm8tbW9kZQotCQkJCSAgICAgICB2cm1s LW1vZGUgeG1sLW1vZGUpCi0KLSAgIk1ham9yIG1vZGVzIGluIHdoaWNoIHdlIHR1cm4gb24gd2hp dGVzcGFjZSBjaGVja2luZy4KLQotVGhlc2UgYXJlIG1vc3RseSBwcm9ncmFtbWluZyBhbmQgZG9j dW1lbnRhdGlvbiBtb2Rlcy4gIEJ1dCB5b3UgbWF5IGFkZCBvdGhlcgotbW9kZXMgdGhhdCB5b3Ug d2FudCB3aGl0ZXNwYWNlcyBjaGVja2VkIGluIGJ5IGFkZGluZyBzb21ldGhpbmcgbGlrZSB0aGUK LWZvbGxvd2luZyB0byB5b3VyIGAuZW1hY3MnOgotCi1cKHNldHEgd2hpdGVzcGFjZS1tb2RlcyAo Y29ucyBcXD0nbXktbW9kZSAoY29ucyBcXD0nbXktb3RoZXItbW9kZQotCQkJCQkgICAgd2hpdGVz cGFjZS1tb2RlcykpXCkKLQotT3IsIGFsdGVybmF0ZWx5LCB5b3UgY2FuIHVzZSB0aGUgRW1hY3Mg YGN1c3RvbWl6ZScgY29tbWFuZCB0byBzZXQgdGhpcy4iCi0gIDp0eXBlICcocmVwZWF0IHN5bWJv bCkKLSAgOmdyb3VwICd3aGl0ZXNwYWNlKQotCi0oZGVmY3VzdG9tIHdoaXRlc3BhY2UtcmVzY2Fu LXRpbWVyLXRpbWUgNjAwCi0gICJQZXJpb2QgaW4gc2Vjb25kcyB0byByZXNjYW4gbW9kaWZpZWQg YnVmZmVycyBmb3Igd2hpdGVzcGFjZSBjcmVlcC4KLQotVGhpcyBpcyB0aGUgcGVyaW9kIGFmdGVy IHdoaWNoIHRoZSB0aW1lciB3aWxsIGZpcmUgY2F1c2luZwotYHdoaXRlc3BhY2UtcmVzY2FuLWZp bGVzLWluLWJ1ZmZlcnMnIHRvIGNoZWNrIGZvciB3aGl0ZXNwYWNlIGNyZWVwIGluCi1tb2RpZmll ZCBidWZmZXJzLgotCi1UbyBkaXNhYmxlIHRpbWVyIHNjYW5zLCBzZXQgdGhpcyB0byB6ZXJvLiIK LSAgOnR5cGUgJ2ludGVnZXIKLSAgOmdyb3VwICd3aGl0ZXNwYWNlKQotCi0oZGVmY3VzdG9tIHdo aXRlc3BhY2UtZGlzcGxheS1pbi1tb2RlbGluZSB0Ci0gICJEaXNwbGF5IHdoaXRlc3BhY2UgZXJy b3JzIG9uIHRoZSBtb2RlbGluZS4iCi0gIDp0eXBlICdib29sZWFuCi0gIDpncm91cCAnd2hpdGVz cGFjZSkKLQotKGRlZmN1c3RvbSB3aGl0ZXNwYWNlLWRpc3BsYXktc3BhY2VzLWluLWNvbG9yIHQK LSAgIkRpc3BsYXkgdGhlIGJvZ3VzIHdoaXRlc3BhY2VzIGJ5IGNvbG9yaW5nIHRoZW0gd2l0aCB0 aGUgZmFjZQotYHdoaXRlc3BhY2UtaGlnaGxpZ2h0Jy4iCi0gIDp0eXBlICdib29sZWFuCi0gIDpn cm91cCAnd2hpdGVzcGFjZSkKLQotKGRlZmZhY2Ugd2hpdGVzcGFjZS1oaWdobGlnaHQgJygoKChj bGFzcyBjb2xvcikgKGJhY2tncm91bmQgbGlnaHQpKQotCQkJCSAoOmJhY2tncm91bmQgImdyZWVu MSIpKQotCQkJCSgoKGNsYXNzIGNvbG9yKSAoYmFja2dyb3VuZCBkYXJrKSkKLQkJCQkgKDpiYWNr Z3JvdW5kICJzZWEgZ3JlZW4iKSkKLQkJCQkoKChjbGFzcyBncmF5c2NhbGUgbW9ubykKLQkJCQkg IChiYWNrZ3JvdW5kIGxpZ2h0KSkKLQkJCQkgKDpiYWNrZ3JvdW5kICJibGFjayIpKQotCQkJCSgo KGNsYXNzIGdyYXlzY2FsZSBtb25vKQotCQkJCSAgKGJhY2tncm91bmQgZGFyaykpCi0JCQkJICg6 YmFja2dyb3VuZCAid2hpdGUiKSkpCi0gICJGYWNlIHVzZWQgZm9yIGhpZ2hsaWdodGluZyB0aGUg Ym9ndXMgd2hpdGVzcGFjZXMgdGhhdCBleGlzdCBpbiB0aGUgYnVmZmVyLiIKLSAgOmdyb3VwICd3 aGl0ZXNwYWNlKQotCi0oaWYgKG5vdCAoYXNzb2MgJ3doaXRlc3BhY2UtbW9kZSBtaW5vci1tb2Rl LWFsaXN0KSkKLSAgICAoc2V0cSBtaW5vci1tb2RlLWFsaXN0IChjb25zICcod2hpdGVzcGFjZS1t b2RlIHdoaXRlc3BhY2UtbW9kZS1saW5lKQotCQkJCSBtaW5vci1tb2RlLWFsaXN0KSkpCi0KLShz ZXQtZGVmYXVsdCAnd2hpdGVzcGFjZS1jaGVjay1idWZmZXItbGVhZGluZwotCSAgICAgd2hpdGVz cGFjZS1jaGVjay1sZWFkaW5nLXdoaXRlc3BhY2UpCi0oc2V0LWRlZmF1bHQgJ3doaXRlc3BhY2Ut Y2hlY2stYnVmZmVyLXRyYWlsaW5nCi0JICAgICB3aGl0ZXNwYWNlLWNoZWNrLXRyYWlsaW5nLXdo aXRlc3BhY2UpCi0oc2V0LWRlZmF1bHQgJ3doaXRlc3BhY2UtY2hlY2stYnVmZmVyLWluZGVudAot CSAgICAgd2hpdGVzcGFjZS1jaGVjay1pbmRlbnQtd2hpdGVzcGFjZSkKLShzZXQtZGVmYXVsdCAn d2hpdGVzcGFjZS1jaGVjay1idWZmZXItc3BhY2V0YWIKLQkgICAgIHdoaXRlc3BhY2UtY2hlY2st c3BhY2V0YWItd2hpdGVzcGFjZSkKLShzZXQtZGVmYXVsdCAnd2hpdGVzcGFjZS1jaGVjay1idWZm ZXItYXRlb2wKLQkgICAgIHdoaXRlc3BhY2UtY2hlY2stYXRlb2wtd2hpdGVzcGFjZSkKLQotKGRl ZnVuIHdoaXRlc3BhY2UtY2hlY2std2hpdGVzcGFjZS1tb2RlICgmb3B0aW9uYWwgYXJnKQotICAi VGVzdCBhbmQgc2V0IHRoZSB3aGl0ZXNwYWNlLW1vZGUgaW4gcXVhbGlmeWluZyBidWZmZXJzLiIK LSAgKGlmIChudWxsIHdoaXRlc3BhY2UtbW9kZSkKLSAgICAgIChzZXRxIHdoaXRlc3BhY2UtbW9k ZQotCSAgICAoaWYgKG9yIGFyZyAobWVtYmVyIG1ham9yLW1vZGUgd2hpdGVzcGFjZS1tb2Rlcykp Ci0JCXQKLQkgICAgICBuaWwpKSkpCi0KLTs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gd2hpdGVzcGFj ZS10b2dnbGUtbGVhZGluZy1jaGVjayAoKQotICAiVG9nZ2xlIHRoZSBjaGVjayBmb3IgbGVhZGlu ZyBzcGFjZSBpbiB0aGUgbG9jYWwgYnVmZmVyLiIKLSAgKGludGVyYWN0aXZlKQotICAobGV0ICgo Y3VycmVudC12YWwgd2hpdGVzcGFjZS1jaGVjay1idWZmZXItbGVhZGluZykpCi0gICAgKHNldHEg d2hpdGVzcGFjZS1jaGVjay1idWZmZXItbGVhZGluZyAobm90IGN1cnJlbnQtdmFsKSkKLSAgICAo bWVzc2FnZSAiV2lsbCVzIGNoZWNrIGZvciBsZWFkaW5nIHNwYWNlIGluIGJ1ZmZlci4iCi0JICAg ICAoaWYgd2hpdGVzcGFjZS1jaGVjay1idWZmZXItbGVhZGluZyAiIiAiIG5vdCIpKQotICAgIChp ZiB3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1sZWFkaW5nICh3aGl0ZXNwYWNlLWJ1ZmZlci1sZWFk aW5nKSkpKQotCi07OzsjIyNhdXRvbG9hZAotKGRlZnVuIHdoaXRlc3BhY2UtdG9nZ2xlLXRyYWls aW5nLWNoZWNrICgpCi0gICJUb2dnbGUgdGhlIGNoZWNrIGZvciB0cmFpbGluZyBzcGFjZSBpbiB0 aGUgbG9jYWwgYnVmZmVyLiIKLSAgKGludGVyYWN0aXZlKQotICAobGV0ICgoY3VycmVudC12YWwg d2hpdGVzcGFjZS1jaGVjay1idWZmZXItdHJhaWxpbmcpKQotICAgIChzZXRxIHdoaXRlc3BhY2Ut Y2hlY2stYnVmZmVyLXRyYWlsaW5nIChub3QgY3VycmVudC12YWwpKQotICAgIChtZXNzYWdlICJX aWxsJXMgY2hlY2sgZm9yIHRyYWlsaW5nIHNwYWNlIGluIGJ1ZmZlci4iCi0JICAgICAoaWYgd2hp dGVzcGFjZS1jaGVjay1idWZmZXItdHJhaWxpbmcgIiIgIiBub3QiKSkKLSAgICAoaWYgd2hpdGVz cGFjZS1jaGVjay1idWZmZXItdHJhaWxpbmcgKHdoaXRlc3BhY2UtYnVmZmVyLXRyYWlsaW5nKSkp KQotCi07OzsjIyNhdXRvbG9hZAotKGRlZnVuIHdoaXRlc3BhY2UtdG9nZ2xlLWluZGVudC1jaGVj ayAoKQotICAiVG9nZ2xlIHRoZSBjaGVjayBmb3IgaW5kZW50YXRpb24gc3BhY2UgaW4gdGhlIGxv Y2FsIGJ1ZmZlci4iCi0gIChpbnRlcmFjdGl2ZSkKLSAgKGxldCAoKGN1cnJlbnQtdmFsIHdoaXRl c3BhY2UtY2hlY2stYnVmZmVyLWluZGVudCkpCi0gICAgKHNldHEgd2hpdGVzcGFjZS1jaGVjay1i dWZmZXItaW5kZW50IChub3QgY3VycmVudC12YWwpKQotICAgIChtZXNzYWdlICJXaWxsJXMgY2hl Y2sgZm9yIGluZGVudGF0aW9uIHNwYWNlIGluIGJ1ZmZlci4iCi0JICAgICAoaWYgd2hpdGVzcGFj ZS1jaGVjay1idWZmZXItaW5kZW50ICIiICIgbm90IikpCi0gICAgKGlmIHdoaXRlc3BhY2UtY2hl Y2stYnVmZmVyLWluZGVudAotCSh3aGl0ZXNwYWNlLWJ1ZmZlci1zZWFyY2ggd2hpdGVzcGFjZS1p bmRlbnQtcmVnZXhwKSkpKQotCi07OzsjIyNhdXRvbG9hZAotKGRlZnVuIHdoaXRlc3BhY2UtdG9n Z2xlLXNwYWNldGFiLWNoZWNrICgpCi0gICJUb2dnbGUgdGhlIGNoZWNrIGZvciBzcGFjZS1mb2xs b3dlZC1ieS1UQUJzIGluIHRoZSBsb2NhbCBidWZmZXIuIgotICAoaW50ZXJhY3RpdmUpCi0gIChs ZXQgKChjdXJyZW50LXZhbCB3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1zcGFjZXRhYikpCi0gICAg KHNldHEgd2hpdGVzcGFjZS1jaGVjay1idWZmZXItc3BhY2V0YWIgKG5vdCBjdXJyZW50LXZhbCkp Ci0gICAgKG1lc3NhZ2UgIldpbGwlcyBjaGVjayBmb3Igc3BhY2UtZm9sbG93ZWQtYnktVEFCcyBp biBidWZmZXIuIgotCSAgICAgKGlmIHdoaXRlc3BhY2UtY2hlY2stYnVmZmVyLXNwYWNldGFiICIi ICIgbm90IikpCi0gICAgKGlmIHdoaXRlc3BhY2UtY2hlY2stYnVmZmVyLXNwYWNldGFiCi0JKHdo aXRlc3BhY2UtYnVmZmVyLXNlYXJjaCB3aGl0ZXNwYWNlLXNwYWNldGFiLXJlZ2V4cCkpKSkKLQot Ci07OzsjIyNhdXRvbG9hZAotKGRlZnVuIHdoaXRlc3BhY2UtdG9nZ2xlLWF0ZW9sLWNoZWNrICgp Ci0gICJUb2dnbGUgdGhlIGNoZWNrIGZvciBlbmQtb2YtbGluZSBzcGFjZSBpbiB0aGUgbG9jYWwg YnVmZmVyLiIKLSAgKGludGVyYWN0aXZlKQotICAobGV0ICgoY3VycmVudC12YWwgd2hpdGVzcGFj ZS1jaGVjay1idWZmZXItYXRlb2wpKQotICAgIChzZXRxIHdoaXRlc3BhY2UtY2hlY2stYnVmZmVy LWF0ZW9sIChub3QgY3VycmVudC12YWwpKQotICAgIChtZXNzYWdlICJXaWxsJXMgY2hlY2sgZm9y IGVuZC1vZi1saW5lIHNwYWNlIGluIGJ1ZmZlci4iCi0JICAgICAoaWYgd2hpdGVzcGFjZS1jaGVj ay1idWZmZXItYXRlb2wgIiIgIiBub3QiKSkKLSAgICAoaWYgd2hpdGVzcGFjZS1jaGVjay1idWZm ZXItYXRlb2wKLQkod2hpdGVzcGFjZS1idWZmZXItc2VhcmNoIHdoaXRlc3BhY2UtYXRlb2wtcmVn ZXhwKSkpKQotCi0KLTs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gd2hpdGVzcGFjZS1idWZmZXIgKCZv cHRpb25hbCBxdWlldCkKLSAgIkZpbmQgZml2ZSBkaWZmZXJlbnQgdHlwZXMgb2Ygd2hpdGUgc3Bh Y2VzIGluIGJ1ZmZlci4KLVRoZXNlIGFyZToKLTEuIExlYWRpbmcgc3BhY2UgXChlbXB0eSBsaW5l cyBhdCB0aGUgdG9wIG9mIGEgZmlsZSkuCi0yLiBUcmFpbGluZyBzcGFjZSBcKGVtcHR5IGxpbmVz IGF0IHRoZSBlbmQgb2YgYSBmaWxlKS4KLTMuIEluZGVudGF0aW9uIHNwYWNlIFwoOCBvciBtb3Jl IHNwYWNlcywgdGhhdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUQUJTKS4KLTQuIFNwYWNlcyBm b2xsb3dlZCBieSBhIFRBQi4gXChBbG1vc3QgYWx3YXlzLCB3ZSBuZXZlciB3YW50IHRoYXQpLgot NS4gU3BhY2VzIG9yIFRBQlMgYXQgdGhlIGVuZCBvZiBhIGxpbmUuCi0KLUNoZWNrIGZvciB3aGl0 ZXNwYWNlIG9ubHkgaWYgdGhpcyBidWZmZXIgcmVhbGx5IGNvbnRhaW5zIGEgbm9uLWVtcHR5IGZp bGUKLWFuZDoKLTEuIHRoZSBtYWpvciBtb2RlIGlzIG9uZSBvZiB0aGUgd2hpdGVzcGFjZS1tb2Rl cywgb3IKLTIuIGB3aGl0ZXNwYWNlLWJ1ZmZlcicgd2FzIGV4cGxpY2l0bHkgY2FsbGVkIHdpdGgg YSBwcmVmaXggYXJndW1lbnQuIgotICAoaW50ZXJhY3RpdmUpCi0gIChsZXQgKCh3aGl0ZXNwYWNl LWVycm9yIG5pbCkpCi0gICAgKHdoaXRlc3BhY2UtY2hlY2std2hpdGVzcGFjZS1tb2RlIGN1cnJl bnQtcHJlZml4LWFyZykKLSAgICAoaWYgKGFuZCBidWZmZXItZmlsZS1uYW1lICg+IChidWZmZXIt c2l6ZSkgMCkgd2hpdGVzcGFjZS1tb2RlKQotCShwcm9nbgotCSAgKHdoaXRlc3BhY2UtY2hlY2st YnVmZmVyLWxpc3QgKGJ1ZmZlci1uYW1lKSBidWZmZXItZmlsZS1uYW1lKQotCSAgKHdoaXRlc3Bh Y2UtdGlja2xlLXRpbWVyKQotCSAgKG92ZXJsYXktcmVjZW50ZXIgKHBvaW50LW1heCkpCi0JICAo cmVtb3ZlLW92ZXJsYXlzIG5pbCBuaWwgJ2ZhY2UgJ3doaXRlc3BhY2UtaGlnaGxpZ2h0KQotCSAg KGlmIHdoaXRlc3BhY2UtYXV0by1jbGVhbnVwCi0JICAgICAgKGlmIGJ1ZmZlci1yZWFkLW9ubHkK LQkJICAoaWYgKG5vdCBxdWlldCkKLQkJICAgICAgKG1lc3NhZ2UgIkNhbid0IGNsZWFudXA6ICVz IGlzIHJlYWQtb25seSIgKGJ1ZmZlci1uYW1lKSkpCi0JCSh3aGl0ZXNwYWNlLWNsZWFudXAtaW50 ZXJuYWwpKQotCSAgICAobGV0ICgod2hpdGVzcGFjZS1sZWFkaW5nIChpZiB3aGl0ZXNwYWNlLWNo ZWNrLWJ1ZmZlci1sZWFkaW5nCi0JCQkJCSAgKHdoaXRlc3BhY2UtYnVmZmVyLWxlYWRpbmcpCi0J CQkJCW5pbCkpCi0JCSAgKHdoaXRlc3BhY2UtdHJhaWxpbmcgKGlmIHdoaXRlc3BhY2UtY2hlY2st YnVmZmVyLXRyYWlsaW5nCi0JCQkJCSAgICh3aGl0ZXNwYWNlLWJ1ZmZlci10cmFpbGluZykKLQkJ CQkJIG5pbCkpCi0JCSAgKHdoaXRlc3BhY2UtaW5kZW50IChpZiB3aGl0ZXNwYWNlLWNoZWNrLWJ1 ZmZlci1pbmRlbnQKLQkJCQkJICh3aGl0ZXNwYWNlLWJ1ZmZlci1zZWFyY2gKLQkJCQkJICB3aGl0 ZXNwYWNlLWluZGVudC1yZWdleHApCi0JCQkJICAgICAgIG5pbCkpCi0JCSAgKHdoaXRlc3BhY2Ut c3BhY2V0YWIgKGlmIHdoaXRlc3BhY2UtY2hlY2stYnVmZmVyLXNwYWNldGFiCi0JCQkJCSAgICh3 aGl0ZXNwYWNlLWJ1ZmZlci1zZWFyY2gKLQkJCQkJICAgIHdoaXRlc3BhY2Utc3BhY2V0YWItcmVn ZXhwKQotCQkJCQkgbmlsKSkKLQkJICAod2hpdGVzcGFjZS1hdGVvbCAoaWYgd2hpdGVzcGFjZS1j aGVjay1idWZmZXItYXRlb2wKLQkJCQkJKHdoaXRlc3BhY2UtYnVmZmVyLXNlYXJjaAotCQkJCQkg d2hpdGVzcGFjZS1hdGVvbC1yZWdleHApCi0JCQkJICAgICAgbmlsKSkKLQkJICAod2hpdGVzcGFj ZS1lcnJtc2cgbmlsKQotCQkgICh3aGl0ZXNwYWNlLWZpbGVuYW1lIGJ1ZmZlci1maWxlLW5hbWUp Ci0JCSAgKHdoaXRlc3BhY2UtdGhpcy1tb2RlbGluZSAiIikpCi0KLQkgICAgICA7OyBOb3cgbGV0 J3MgY29tcGxhaW4gaWYgd2UgZm91bmQgYW55IG9mIHRoZSBhYm92ZS4KLQkgICAgICAoc2V0cSB3 aGl0ZXNwYWNlLWVycm9yIChvciB3aGl0ZXNwYWNlLWxlYWRpbmcgd2hpdGVzcGFjZS1pbmRlbnQK LQkJCQkJIHdoaXRlc3BhY2Utc3BhY2V0YWIgd2hpdGVzcGFjZS1hdGVvbAotCQkJCQkgd2hpdGVz cGFjZS10cmFpbGluZykpCi0KLQkgICAgICAoaWYgd2hpdGVzcGFjZS1lcnJvcgotCQkgIChwcm9n bgotCQkgICAgKHNldHEgd2hpdGVzcGFjZS1lcnJtc2cKLQkJCSAgKGNvbmNhdCB3aGl0ZXNwYWNl LWZpbGVuYW1lICIgY29udGFpbnM6XG4iCi0JCQkJICAoaWYgd2hpdGVzcGFjZS1sZWFkaW5nCi0J CQkJICAgICAgIkxlYWRpbmcgd2hpdGVzcGFjZVxuIikKLQkJCQkgIChpZiB3aGl0ZXNwYWNlLWlu ZGVudAotCQkJCSAgICAgIChjb25jYXQgIkluZGVudGF0aW9uIHdoaXRlc3BhY2UiCi0JCQkJCSAg ICAgIHdoaXRlc3BhY2UtaW5kZW50ICJcbiIpKQotCQkJCSAgKGlmIHdoaXRlc3BhY2Utc3BhY2V0 YWIKLQkJCQkgICAgICAoY29uY2F0ICJTcGFjZSBmb2xsb3dlZCBieSBUYWIiCi0JCQkJCSAgICAg IHdoaXRlc3BhY2Utc3BhY2V0YWIgIlxuIikpCi0JCQkJICAoaWYgd2hpdGVzcGFjZS1hdGVvbAot CQkJCSAgICAgIChjb25jYXQgIkVuZC1vZi1saW5lIHdoaXRlc3BhY2UiCi0JCQkJCSAgICAgIHdo aXRlc3BhY2UtYXRlb2wgIlxuIikpCi0JCQkJICAoaWYgd2hpdGVzcGFjZS10cmFpbGluZwotCQkJ CSAgICAgICJUcmFpbGluZyB3aGl0ZXNwYWNlXG4iKQotCQkJCSAgIlxudHlwZSBgTS14IHdoaXRl c3BhY2UtY2xlYW51cCcgdG8gIgotCQkJCSAgImNsZWFudXAgdGhlIGZpbGUuIikpCi0JCSAgICAo c2V0cSB3aGl0ZXNwYWNlLXRoaXMtbW9kZWxpbmUKLQkJCSAgKGNvbmNhdCAoaWYgd2hpdGVzcGFj ZS1hdGVvbCAiZSIpCi0JCQkJICAoaWYgd2hpdGVzcGFjZS1pbmRlbnQgImkiKQotCQkJCSAgKGlm IHdoaXRlc3BhY2UtbGVhZGluZyAibCIpCi0JCQkJICAoaWYgd2hpdGVzcGFjZS1zcGFjZXRhYiAi cyIpCi0JCQkJICAoaWYgd2hpdGVzcGFjZS10cmFpbGluZyAidCIpKSkpKQotCSAgICAgICh3aGl0 ZXNwYWNlLXVwZGF0ZS1tb2RlbGluZSB3aGl0ZXNwYWNlLXRoaXMtbW9kZWxpbmUpCi0JICAgICAg KGlmIChnZXQtYnVmZmVyIHdoaXRlc3BhY2UtZXJyYnVmKQotCQkgIChraWxsLWJ1ZmZlciB3aGl0 ZXNwYWNlLWVycmJ1ZikpCi0JICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXIt Y3JlYXRlIHdoaXRlc3BhY2UtZXJyYnVmKQotCQkoaWYgd2hpdGVzcGFjZS1lcnJtc2cKLQkJICAg IChwcm9nbgotCQkgICAgICAoaW5zZXJ0IHdoaXRlc3BhY2UtZXJybXNnKQotCQkgICAgICAoaWYg KG5vdCAob3IgcXVpZXQgd2hpdGVzcGFjZS1zaWxlbnQpKQotCQkJICAoZGlzcGxheS1idWZmZXIg KGN1cnJlbnQtYnVmZmVyKSB0KSkKLQkJICAgICAgKGlmIChub3QgcXVpZXQpCi0JCQkgIChtZXNz YWdlICJXaGl0ZXNwYWNlczogWyVzJXNdIGluICVzIgotCQkJCSAgIHdoaXRlc3BhY2UtdGhpcy1t b2RlbGluZQotCQkJCSAgIChsZXQgKCh3aGl0ZXNwYWNlLXVuY2hlY2tlZAotCQkJCQkgICh3aGl0 ZXNwYWNlLXVuY2hlY2tlZC13aGl0ZXNwYWNlcykpKQotCQkJCSAgICAgKGlmIHdoaXRlc3BhY2Ut dW5jaGVja2VkCi0JCQkJCSAoY29uY2F0ICIhIiB3aGl0ZXNwYWNlLXVuY2hlY2tlZCkKLQkJCQkg ICAgICAgIiIpKQotCQkJCSAgIHdoaXRlc3BhY2UtZmlsZW5hbWUpKSkKLQkJICAoaWYgKGFuZCAo bm90IHF1aWV0KSAobm90IChlcXVhbCB3aGl0ZXNwYWNlLWNsZWFuLW1zZyAiIikpKQotCQkgICAg ICAobWVzc2FnZSAiJXMgJXMiIHdoaXRlc3BhY2UtZmlsZW5hbWUKLQkJCSAgICAgICB3aGl0ZXNw YWNlLWNsZWFuLW1zZykpKSkpKSkpCi0gICAgd2hpdGVzcGFjZS1lcnJvcikpCi0KLTs7OyMjI2F1 dG9sb2FkCi0oZGVmdW4gd2hpdGVzcGFjZS1yZWdpb24gKHMgZSkKLSAgIkNoZWNrIHRoZSByZWdp b24gZm9yIHdoaXRlc3BhY2UgZXJyb3JzLiIKLSAgKGludGVyYWN0aXZlICJyIikKLSAgKHNhdmUt ZXhjdXJzaW9uCi0gICAgKHNhdmUtcmVzdHJpY3Rpb24KLSAgICAgIChuYXJyb3ctdG8tcmVnaW9u IHMgZSkKLSAgICAgICh3aGl0ZXNwYWNlLWJ1ZmZlcikpKSkKLQotOzs7IyMjYXV0b2xvYWQKLShk ZWZ1biB3aGl0ZXNwYWNlLWNsZWFudXAgKCkKLSAgIkNsZWFudXAgdGhlIGZpdmUgZGlmZmVyZW50 IGtpbmRzIG9mIHdoaXRlc3BhY2UgcHJvYmxlbXMuCi1JdCBub3JtYWxseSBhcHBsaWVzIHRvIHRo ZSB3aG9sZSBidWZmZXIsIGJ1dCBpbiBUcmFuc2llbnQgTWFyayBtb2RlCi13aGVuIHRoZSBtYXJr IGlzIGFjdGl2ZSBpdCBhcHBsaWVzIHRvIHRoZSByZWdpb24uCi1TZWUgYHdoaXRlc3BhY2UtYnVm ZmVyJyBkb2NzdHJpbmcgZm9yIGEgc3VtbWFyeSBvZiB0aGUgcHJvYmxlbXMuIgotICAoaW50ZXJh Y3RpdmUpCi0gIChpZiAoYW5kIHRyYW5zaWVudC1tYXJrLW1vZGUgbWFyay1hY3RpdmUpCi0gICAg ICAod2hpdGVzcGFjZS1jbGVhbnVwLXJlZ2lvbiAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lvbi1l bmQpKQotICAgICh3aGl0ZXNwYWNlLWNsZWFudXAtaW50ZXJuYWwpKSkKLQotKGRlZnVuIHdoaXRl c3BhY2UtY2xlYW51cC1pbnRlcm5hbCAoJm9wdGlvbmFsIHJlZ2lvbi1vbmx5KQotICA7OyBJZiB0 aGlzIGJ1ZmZlciByZWFsbHkgY29udGFpbnMgYSBmaWxlLCB0aGVuIHJ1biwgZWxzZSBxdWl0Lgot ICAod2hpdGVzcGFjZS1jaGVjay13aGl0ZXNwYWNlLW1vZGUgY3VycmVudC1wcmVmaXgtYXJnKQot ICAoaWYgKGFuZCBidWZmZXItZmlsZS1uYW1lIHdoaXRlc3BhY2UtbW9kZSkKLSAgICAgIChsZXQg KCh3aGl0ZXNwYWNlLWFueSBuaWwpCi0JICAgICh3aGl0ZXNwYWNlLXRhYndpZHRoIDgpCi0JICAg ICh3aGl0ZXNwYWNlLXRhYndpZHRoLXNhdmVkIHRhYi13aWR0aCkpCi0KLQk7OyBzaW5jZSBhbGwg cHJpbnRhYmxlIFRBQlMgc2hvdWxkIGJlIDgsIGlycmVzcGVjdGl2ZSBvZiBob3cKLQk7OyB0aGV5 IGFyZSBkaXNwbGF5ZWQuCi0JKHNldHEgdGFiLXdpZHRoIHdoaXRlc3BhY2UtdGFid2lkdGgpCi0K LQkoaWYgKGFuZCB3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1sZWFkaW5nCi0JCSAod2hpdGVzcGFj ZS1idWZmZXItbGVhZGluZykpCi0JICAgIChwcm9nbgotCSAgICAgICh3aGl0ZXNwYWNlLWJ1ZmZl ci1sZWFkaW5nLWNsZWFudXApCi0JICAgICAgKHNldHEgd2hpdGVzcGFjZS1hbnkgdCkpKQotCi0J KGlmIChhbmQgd2hpdGVzcGFjZS1jaGVjay1idWZmZXItdHJhaWxpbmcKLQkJICh3aGl0ZXNwYWNl LWJ1ZmZlci10cmFpbGluZykpCi0JICAgIChwcm9nbgotCSAgICAgICh3aGl0ZXNwYWNlLWJ1ZmZl ci10cmFpbGluZy1jbGVhbnVwKQotCSAgICAgIChzZXRxIHdoaXRlc3BhY2UtYW55IHQpKSkKLQot CShpZiAoYW5kIHdoaXRlc3BhY2UtY2hlY2stYnVmZmVyLWluZGVudAotCQkgKHdoaXRlc3BhY2Ut YnVmZmVyLXNlYXJjaCB3aGl0ZXNwYWNlLWluZGVudC1yZWdleHApKQotCSAgICAocHJvZ24KLQkg ICAgICAod2hpdGVzcGFjZS1pbmRlbnQtY2xlYW51cCkKLQkgICAgICAoc2V0cSB3aGl0ZXNwYWNl LWFueSB0KSkpCi0KLQkoaWYgKGFuZCB3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1zcGFjZXRhYgot CQkgKHdoaXRlc3BhY2UtYnVmZmVyLXNlYXJjaCB3aGl0ZXNwYWNlLXNwYWNldGFiLXJlZ2V4cCkp Ci0JICAgIChwcm9nbgotCSAgICAgICh3aGl0ZXNwYWNlLWJ1ZmZlci1jbGVhbnVwIHdoaXRlc3Bh Y2Utc3BhY2V0YWItcmVnZXhwICJcdCIpCi0JICAgICAgKHNldHEgd2hpdGVzcGFjZS1hbnkgdCkp KQotCi0JKGlmIChhbmQgd2hpdGVzcGFjZS1jaGVjay1idWZmZXItYXRlb2wKLQkJICh3aGl0ZXNw YWNlLWJ1ZmZlci1zZWFyY2ggd2hpdGVzcGFjZS1hdGVvbC1yZWdleHApKQotCSAgICAocHJvZ24K LQkgICAgICAod2hpdGVzcGFjZS1idWZmZXItY2xlYW51cCB3aGl0ZXNwYWNlLWF0ZW9sLXJlZ2V4 cCAiIikKLQkgICAgICAoc2V0cSB3aGl0ZXNwYWNlLWFueSB0KSkpCi0KLQk7OyBDYWxsIHRoaXMg cmVjdXJzaXZlbHkgdGlsbCBldmVyeXRoaW5nIGlzIHRha2VuIGNhcmUgb2YKLQkoaWYgd2hpdGVz cGFjZS1hbnkKLQkgICAgKHdoaXRlc3BhY2UtY2xlYW51cC1pbnRlcm5hbCByZWdpb24tb25seSkK LQkgIDs7IGlmIHdlIGFyZSBkb25lLCB0YWxrIHRvIHRoZSB1c2VyCi0JICAocHJvZ24KLQkgICAg KHVubGVzcyB3aGl0ZXNwYWNlLXNpbGVudAotCSAgICAgIChpZiByZWdpb24tb25seQotCQkgICht ZXNzYWdlICJUaGUgcmVnaW9uIGlzIG5vdyBjbGVhbiIpCi0JCShtZXNzYWdlICIlcyBpcyBub3cg Y2xlYW4iIGJ1ZmZlci1maWxlLW5hbWUpKSkKLQkgICAgKHdoaXRlc3BhY2UtdXBkYXRlLW1vZGVs aW5lKSkpCi0JKHNldHEgdGFiLXdpZHRoIHdoaXRlc3BhY2UtdGFid2lkdGgtc2F2ZWQpKSkpCi0K LTs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gd2hpdGVzcGFjZS1jbGVhbnVwLXJlZ2lvbiAocyBlKQot ICAiV2hpdGVzcGFjZSBjbGVhbnVwIG9uIHRoZSByZWdpb24uIgotICAoaW50ZXJhY3RpdmUgInIi KQotICAoc2F2ZS1leGN1cnNpb24KLSAgICAoc2F2ZS1yZXN0cmljdGlvbgotICAgICAgKG5hcnJv dy10by1yZWdpb24gcyBlKQotICAgICAgKHdoaXRlc3BhY2UtY2xlYW51cC1pbnRlcm5hbCB0KSkK LSAgICAod2hpdGVzcGFjZS1idWZmZXIgdCkpKQotCi0oZGVmdW4gd2hpdGVzcGFjZS1idWZmZXIt bGVhZGluZyAoKQotICAiUmV0dXJuIHQgaWYgdGhlIGN1cnJlbnQgYnVmZmVyIGhhcyBsZWFkaW5n IG5ld2xpbmUgY2hhcmFjdGVycy4KLUlmIGhpZ2hsaWdodGluZyBpcyBlbmFibGVkLCBoaWdobGln aHQgdGhlc2UgY2hhcmFjdGVycy4iCi0gIChzYXZlLWV4Y3Vyc2lvbgotICAgIChnb3RvLWNoYXIg KHBvaW50LW1pbikpCi0gICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXG4iKQotICAgICh1bmxlc3Mg KGJvYnApCi0gICAgICAod2hpdGVzcGFjZS1oaWdobGlnaHQtdGhlLXNwYWNlIChwb2ludC1taW4p IChwb2ludCkpCi0gICAgICB0KSkpCi0KLShkZWZ1biB3aGl0ZXNwYWNlLWJ1ZmZlci1sZWFkaW5n LWNsZWFudXAgKCkKLSAgIlJlbW92ZSBhbnkgbGVhZGluZyBuZXdsaW5lIGNoYXJhY3RlcnMgZnJv bSBjdXJyZW50IGJ1ZmZlci4iCi0gIChzYXZlLWV4Y3Vyc2lvbgotICAgIChnb3RvLWNoYXIgKHBv aW50LW1pbikpCi0gICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXG4iKQotICAgIChkZWxldGUtcmVn aW9uIChwb2ludC1taW4pIChwb2ludCkpKSkKLQotKGRlZnVuIHdoaXRlc3BhY2UtYnVmZmVyLXRy YWlsaW5nICgpCi0gICJSZXR1cm4gdCBpZiB0aGUgY3VycmVudCBidWZmZXIgaGFzIGV4dHJhIHRy YWlsaW5nIG5ld2xpbmUgY2hhcmFjdGVycy4KLUlmIGhpZ2hsaWdodGluZyBpcyBlbmFibGVkLCBo aWdobGlnaHQgdGhlc2UgY2hhcmFjdGVycy4iCi0gIChzYXZlLWV4Y3Vyc2lvbgotICAgIChnb3Rv LWNoYXIgKHBvaW50LW1heCkpCi0gICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIlxuIikKLSAgICAo Zm9yd2FyZC1saW5lKQotICAgICh1bmxlc3MgKGVvYnApCi0gICAgICAod2hpdGVzcGFjZS1oaWdo bGlnaHQtdGhlLXNwYWNlIChwb2ludCkgKHBvaW50LW1heCkpCi0gICAgICB0KSkpCi0KLShkZWZ1 biB3aGl0ZXNwYWNlLWJ1ZmZlci10cmFpbGluZy1jbGVhbnVwICgpCi0gICJSZW1vdmUgZXh0cmEg dHJhaWxpbmcgbmV3bGluZSBjaGFyYWN0ZXJzIGZyb20gY3VycmVudCBidWZmZXIuIgotICAoc2F2 ZS1leGN1cnNpb24KLSAgICAoZ290by1jaGFyIChwb2ludC1tYXgpKQotICAgIChza2lwLWNoYXJz LWJhY2t3YXJkICJcbiIpCi0gICAgKHVubGVzcyAoZW9icCkKLSAgICAgIChmb3J3YXJkLWxpbmUp Ci0gICAgICAoZGVsZXRlLXJlZ2lvbiAocG9pbnQpIChwb2ludC1tYXgpKSkpKQotCi0oZGVmdW4g d2hpdGVzcGFjZS1idWZmZXItc2VhcmNoIChyZWdleHApCi0gICJTZWFyY2ggZm9yIGFueSBnaXZl biB3aGl0ZXNwYWNlIFJFR0VYUC4iCi0gICh3aXRoLWxvY2FsLXF1aXQKLSAgICAobGV0ICh3aGl0 ZXNwYWNlLXJldHZhbCkKLSAgICAgIChzYXZlLWV4Y3Vyc2lvbgotCShnb3RvLWNoYXIgKHBvaW50 LW1pbikpCi0JKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCByZWdleHAgbmlsIHQpCi0JICAod2hp dGVzcGFjZS1oaWdobGlnaHQtdGhlLXNwYWNlIChtYXRjaC1iZWdpbm5pbmcgMCkgKG1hdGNoLWVu ZCAwKSkKLQkgIChwdXNoIChtYXRjaC1iZWdpbm5pbmcgMCkgd2hpdGVzcGFjZS1yZXR2YWwpKSkK LSAgICAgICh3aGVuIHdoaXRlc3BhY2UtcmV0dmFsCi0JKGZvcm1hdCAiICVzIiAobnJldmVyc2Ug d2hpdGVzcGFjZS1yZXR2YWwpKSkpKSkKLQotKGRlZnVuIHdoaXRlc3BhY2UtYnVmZmVyLWNsZWFu dXAgKHJlZ2V4cCBuZXdyZWdleHApCi0gICJTZWFyY2ggZm9yIGFueSBnaXZlbiB3aGl0ZXNwYWNl IFJFR0VYUCBhbmQgcmVwbGFjZSBpdCB3aXRoIHRoZSBORVdSRUdFWFAuIgotICAoc2F2ZS1leGN1 cnNpb24KLSAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQotICAgICh3aGlsZSAocmUtc2VhcmNo LWZvcndhcmQgcmVnZXhwIG5pbCB0KQotICAgICAgKHJlcGxhY2UtbWF0Y2ggbmV3cmVnZXhwKSkp KQotCi0oZGVmdW4gd2hpdGVzcGFjZS1pbmRlbnQtY2xlYW51cCAoKQotICAiU2VhcmNoIGZvciA4 L21vcmUgc3BhY2VzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUgYW5kIHJlcGxhY2UgaXQgd2l0aCB0 YWJzLiIKLSAgKHNhdmUtZXhjdXJzaW9uCi0gICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKLSAg ICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIHdoaXRlc3BhY2UtaW5kZW50LXJlZ2V4cCBuaWwg dCkKLSAgICAgIChsZXQgKChjb2x1bW4gKGN1cnJlbnQtY29sdW1uKSkKLQkgICAgKGluZGVudC10 YWJzLW1vZGUgdCkpCi0JKGRlbGV0ZS1yZWdpb24gKG1hdGNoLWJlZ2lubmluZyAwKSAocG9pbnQp KQotCShpbmRlbnQtdG8gY29sdW1uKSkpKSkKLQotKGRlZnVuIHdoaXRlc3BhY2UtdW5jaGVja2Vk LXdoaXRlc3BhY2VzICgpCi0gICJSZXR1cm4gdGhlIGxpc3Qgb2Ygd2hpdGVzcGFjZXMgd2hvc2Ug dGVzdGluZyBoYXMgYmVlbiBzdXBwcmVzc2VkLiIKLSAgKGxldCAoKHVuY2hlY2tlZC1zcGFjZXMK LQkgKGNvbmNhdCAoaWYgKG5vdCB3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1hdGVvbCkgImUiKQot CQkgKGlmIChub3Qgd2hpdGVzcGFjZS1jaGVjay1idWZmZXItaW5kZW50KSAiaSIpCi0JCSAoaWYg KG5vdCB3aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1sZWFkaW5nKSAibCIpCi0JCSAoaWYgKG5vdCB3 aGl0ZXNwYWNlLWNoZWNrLWJ1ZmZlci1zcGFjZXRhYikgInMiKQotCQkgKGlmIChub3Qgd2hpdGVz cGFjZS1jaGVjay1idWZmZXItdHJhaWxpbmcpICJ0IikpKSkKLSAgICAoaWYgKG5vdCAoZXF1YWwg dW5jaGVja2VkLXNwYWNlcyAiIikpCi0JdW5jaGVja2VkLXNwYWNlcwotICAgICAgbmlsKSkpCi0K LShkZWZ1biB3aGl0ZXNwYWNlLXVwZGF0ZS1tb2RlbGluZSAoJm9wdGlvbmFsIHdoaXRlc3BhY2Ut ZXJyKQotICAiVXBkYXRlIG1vZGUgbGluZSB3aXRoIHdoaXRlc3BhY2UgZXJyb3JzLgotQWxzbyB3 aXRoIHdoaXRlc3BhY2VzIHdob3NlIHRlc3RpbmcgaGFzIGJlZW4gdHVybmVkIG9mZi4iCi0gIChp ZiB3aGl0ZXNwYWNlLWRpc3BsYXktaW4tbW9kZWxpbmUKLSAgICAgIChwcm9nbgotCShzZXRxIHdo aXRlc3BhY2UtbW9kZS1saW5lIG5pbCkKLQk7OyBXaGl0ZXNwYWNlIGVycm9ycwotCShpZiAoYW5k IHdoaXRlc3BhY2UtZXJyIChub3QgKGVxdWFsIHdoaXRlc3BhY2UtZXJyICIiKSkpCi0JICAgIChz ZXRxIHdoaXRlc3BhY2UtbW9kZS1saW5lIHdoaXRlc3BhY2UtZXJyKSkKLQk7OyBXaGl0ZXNwYWNl IHN1cHByZXNzZWQgZXJyb3JzCi0JKGxldCAoKHdoaXRlc3BhY2UtdW5jaGVja2VkICh3aGl0ZXNw YWNlLXVuY2hlY2tlZC13aGl0ZXNwYWNlcykpKQotCSAgKGlmIHdoaXRlc3BhY2UtdW5jaGVja2Vk Ci0JICAgICAgKHNldHEgd2hpdGVzcGFjZS1tb2RlLWxpbmUKLQkJICAgIChjb25jYXQgd2hpdGVz cGFjZS1tb2RlLWxpbmUgIiEiIHdoaXRlc3BhY2UtdW5jaGVja2VkKSkpKQotCTs7IEFkZCB0aGUg d2hpdGVzcGFjZSBtb2RlbGluZSBwcmVmaXgKLQkoc2V0cSB3aGl0ZXNwYWNlLW1vZGUtbGluZSAo aWYgd2hpdGVzcGFjZS1tb2RlLWxpbmUKLQkJCQkgICAgICAgKGNvbmNhdCAiIFc6IiB3aGl0ZXNw YWNlLW1vZGUtbGluZSkKLQkJCQkgICAgIG5pbCkpCi0JKHdoaXRlc3BhY2UtbW9kZS1saW5lLXVw ZGF0ZSkpKSkKLQotKGRlZnVuIHdoaXRlc3BhY2UtaGlnaGxpZ2h0LXRoZS1zcGFjZSAoYiBlKQot ICAiSGlnaGxpZ2h0IHRoZSBjdXJyZW50IGxpbmUsIHVuaGlnaGxpZ2h0aW5nIGEgcHJldmlvdXNs eSBqdW1wZWQgdG8gbGluZS4iCi0gIChpZiB3aGl0ZXNwYWNlLWRpc3BsYXktc3BhY2VzLWluLWNv bG9yCi0gICAgICAobGV0ICgob2wgKHdoaXRlc3BhY2UtbWFrZS1vdmVybGF5IGIgZSkpKQotCSh3 aGl0ZXNwYWNlLW92ZXJsYXktcHV0IG9sICdmYWNlICd3aGl0ZXNwYWNlLWhpZ2hsaWdodCkpKSkK LQotKGRlZnVuIHdoaXRlc3BhY2UtdW5oaWdobGlnaHQtdGhlLXNwYWNlKCkKLSAgIlVuaGlnaGxp Z2h0IHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0IGxpbmUuIgotICAoaWYgKGFuZCB3aGl0ZXNwYWNl LWRpc3BsYXktc3BhY2VzLWluLWNvbG9yIHdoaXRlc3BhY2UtaGlnaGxpZ2h0ZWQtc3BhY2UpCi0g ICAgICAocHJvZ24KLQkobWFwYyAnd2hpdGVzcGFjZS1kZWxldGUtb3ZlcmxheSB3aGl0ZXNwYWNl LWhpZ2hsaWdodGVkLXNwYWNlKQotCShzZXRxIHdoaXRlc3BhY2UtaGlnaGxpZ2h0ZWQtc3BhY2Ug bmlsKSkpKQotCi0oZGVmdW4gd2hpdGVzcGFjZS1jaGVjay1idWZmZXItbGlzdCAoYnVmLW5hbWUg YnVmLWZpbGUpCi0gICJBZGQgYSBidWZmZXIgYW5kIGl0cyBmaWxlIHRvIHRoZSB3aGl0ZXNwYWNl IG1vbml0b3IgbGlzdC4KLQotVGhlIGJ1ZmZlciBuYW1lZCBCVUYtTkFNRSBhbmQgaXRzIGFzc29j aWF0ZWQgZmlsZSBCVUYtRklMRSBhcmUgbm93IG1vbml0b3JlZAotcGVyaW9kaWNhbGx5IGZvciB3 aGl0ZXNwYWNlLiIKLSAgKGlmIChhbmQgd2hpdGVzcGFjZS1tb2RlIChub3QgKG1lbWJlciAobGlz dCBidWYtZmlsZSBidWYtbmFtZSkKLQkJCQkJd2hpdGVzcGFjZS1hbGwtYnVmZmVyLWZpbGVzKSkp Ci0gICAgICAoYWRkLXRvLWxpc3QgJ3doaXRlc3BhY2UtYWxsLWJ1ZmZlci1maWxlcyAobGlzdCBi dWYtZmlsZSBidWYtbmFtZSkpKSkKLQotKGRlZnVuIHdoaXRlc3BhY2UtdGlja2xlLXRpbWVyICgp Ci0gICJUaWNrbGUgdGltZXIgdG8gcGVyaW9kaWNhbGx5IHRvIHNjYW4gcXVhbGlmeWluZyBmaWxl cyBmb3Igd2hpdGVzcGFjZSBjcmVlcC4KLQotSWYgdGltZXIgaXMgbm90IHNldCwgdGhlbiBzZXQg aXQgdG8gc2NhbiB0aGUgZmlsZXMgaW4KLWB3aGl0ZXNwYWNlLWFsbC1idWZmZXItZmlsZXMnIHBl cmlvZGljYWxseSAoZGVmaW5lZCBieQotYHdoaXRlc3BhY2UtcmVzY2FuLXRpbWVyLXRpbWUnKSBm b3Igd2hpdGVzcGFjZSBjcmVlcC4iCi0gIChpZiAoYW5kIHdoaXRlc3BhY2UtcmVzY2FuLXRpbWVy LXRpbWUKLQkgICAoLz0gd2hpdGVzcGFjZS1yZXNjYW4tdGltZXItdGltZSAwKQotCSAgIChub3Qg d2hpdGVzcGFjZS1yZXNjYW4tdGltZXIpKQotICAgICAgKHNldHEgd2hpdGVzcGFjZS1yZXNjYW4t dGltZXIKLQkgICAgKGFkZC10aW1lb3V0IHdoaXRlc3BhY2UtcmVzY2FuLXRpbWVyLXRpbWUKLQkJ CSAnd2hpdGVzcGFjZS1yZXNjYW4tZmlsZXMtaW4tYnVmZmVycyBuaWwKLQkJCSB3aGl0ZXNwYWNl LXJlc2Nhbi10aW1lci10aW1lKSkpKQotCi0oZGVmdW4gd2hpdGVzcGFjZS1yZXNjYW4tZmlsZXMt aW4tYnVmZmVycyAoJm9wdGlvbmFsIGFyZykKLSAgIkNoZWNrIG1vbml0b3JlZCBmaWxlcyBmb3Ig d2hpdGVzcGFjZSBjcmVlcCBzaW5jZSBsYXN0IHNjYW4uIgotICAobGV0ICgod2hpdGVzcGFjZS1h bGwtbXktZmlsZXMgd2hpdGVzcGFjZS1hbGwtYnVmZmVyLWZpbGVzKQotCWJ1ZmZpbGUgYnVmbmFt ZSB0aGlzZWx0IGJ1ZikKLSAgICAoaWYgKG5vdCB3aGl0ZXNwYWNlLWFsbC1teS1maWxlcykKLQko cHJvZ24KLQkgIChkaXNhYmxlLXRpbWVvdXQgd2hpdGVzcGFjZS1yZXNjYW4tdGltZXIpCi0JICAo c2V0cSB3aGl0ZXNwYWNlLXJlc2Nhbi10aW1lciBuaWwpKQotICAgICAgKHdoaWxlIHdoaXRlc3Bh Y2UtYWxsLW15LWZpbGVzCi0JKHNldHEgdGhpc2VsdCAoY2FyIHdoaXRlc3BhY2UtYWxsLW15LWZp bGVzKSkKLQkoc2V0cSB3aGl0ZXNwYWNlLWFsbC1teS1maWxlcyAoY2RyIHdoaXRlc3BhY2UtYWxs LW15LWZpbGVzKSkKLQkoc2V0cSBidWZmaWxlIChjYXIgdGhpc2VsdCkpCi0JKHNldHEgYnVmbmFt ZSAoY2FkciB0aGlzZWx0KSkKLQkoc2V0cSBidWYgKGdldC1idWZmZXIgYnVmbmFtZSkpCi0JKGlm IChidWZmZXItbGl2ZS1wIGJ1ZikKLQkgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmbmFtZQot CSAgICAgIDs7KG1lc3NhZ2UgImJ1ZmZlciAlcyBsaXZlIiBidWZuYW1lKQotCSAgICAgIChpZiB3 aGl0ZXNwYWNlLW1vZGUKLQkJICAocHJvZ24KLQkJICAgIDs7KG1lc3NhZ2UgImNoZWNraW5nIGZv ciB3aGl0ZXNwYWNlIGluICVzIiBidWZuYW1lKQotCQkgICAgKGlmIHdoaXRlc3BhY2UtYXV0by1j bGVhbnVwCi0JCQkocHJvZ24KLQkJCSAgOzsobWVzc2FnZSAiY2xlYW5pbmcgdXAgd2hpdGVzcGFj ZSBpbiAlcyIgYnVmbmFtZSkKLQkJCSAgKHdoaXRlc3BhY2UtY2xlYW51cC1pbnRlcm5hbCkpCi0J CSAgICAgIChwcm9nbgotCQkJOzsobWVzc2FnZSAid2hpdGVzcGFjZS1idWZmZXIgJXMuIiAoYnVm ZmVyLW5hbWUpKQotCQkJKHdoaXRlc3BhY2UtYnVmZmVyIHQpKSkpCi0JCTs7KG1lc3NhZ2UgIlJl bW92aW5nICVzIGZyb20gcmVmcmVzaCBsaXN0IiBidWZuYW1lKQotCQkod2hpdGVzcGFjZS1yZWZy ZXNoLXJlc2Nhbi1saXN0IGJ1ZmZpbGUgYnVmbmFtZSkpKQotCSAgOzsobWVzc2FnZSAiUmVtb3Zp bmcgJXMgZnJvbSByZWZyZXNoIGxpc3QiIGJ1Zm5hbWUpCi0JICAod2hpdGVzcGFjZS1yZWZyZXNo LXJlc2Nhbi1saXN0IGJ1ZmZpbGUgYnVmbmFtZSkpKSkpKQotCi0oZGVmdW4gd2hpdGVzcGFjZS1y ZWZyZXNoLXJlc2Nhbi1saXN0IChidWZmaWxlIGJ1Zm5hbWUpCi0gICJSZWZyZXNoIHRoZSBsaXN0 IG9mIGZpbGVzIHRvIGJlIHJlc2Nhbm5lZCBmb3Igd2hpdGVzcGFjZSBjcmVlcC4iCi0gIChpZiB3 aGl0ZXNwYWNlLWFsbC1idWZmZXItZmlsZXMKLSAgICAgIChzZXRxIHdoaXRlc3BhY2UtYWxsLWJ1 ZmZlci1maWxlcwotCSAgICAoZGVsZXRlIChsaXN0IGJ1ZmZpbGUgYnVmbmFtZSkgd2hpdGVzcGFj ZS1hbGwtYnVmZmVyLWZpbGVzKSkKLSAgICAod2hlbiB3aGl0ZXNwYWNlLXJlc2Nhbi10aW1lcgot ICAgICAgKGRpc2FibGUtdGltZW91dCB3aGl0ZXNwYWNlLXJlc2Nhbi10aW1lcikKLSAgICAgIChz ZXRxIHdoaXRlc3BhY2UtcmVzY2FuLXRpbWVyIG5pbCkpKSkKLQotOzs7IyMjYXV0b2xvYWQKLShk ZWZhbGlhcyAnZ2xvYmFsLXdoaXRlc3BhY2UtbW9kZSAnd2hpdGVzcGFjZS1nbG9iYWwtbW9kZSkK LQotOzs7IyMjYXV0b2xvYWQKLShkZWZpbmUtbWlub3ItbW9kZSB3aGl0ZXNwYWNlLWdsb2JhbC1t b2RlCi0gICJUb2dnbGUgdXNpbmcgV2hpdGVzcGFjZSBtb2RlIGluIG5ldyBidWZmZXJzLgotCi1X aGVuIHRoaXMgbW9kZSBpcyBhY3RpdmUsIGB3aGl0ZXNwYWNlLWJ1ZmZlcicgaXMgYWRkZWQgdG8K LWBmaW5kLWZpbGUtaG9vaycgYW5kIGBraWxsLWJ1ZmZlci1ob29rJy4iCi0gIDpnbG9iYWwgdAot ICA6Z3JvdXAgJ3doaXRlc3BhY2UKLSAgKGlmIHdoaXRlc3BhY2UtZ2xvYmFsLW1vZGUKLSAgICAg IChwcm9nbgotCShhZGQtaG9vayAnZmluZC1maWxlLWhvb2sgJ3doaXRlc3BhY2UtYnVmZmVyKQot CShhZGQtaG9vayAnd3JpdGUtZmlsZS1mdW5jdGlvbnMgJ3doaXRlc3BhY2Utd3JpdGUtZmlsZS1o b29rIG5pbCB0KQotCShhZGQtaG9vayAna2lsbC1idWZmZXItaG9vayAnd2hpdGVzcGFjZS1idWZm ZXIpKQotICAgIChyZW1vdmUtaG9vayAnZmluZC1maWxlLWhvb2sgJ3doaXRlc3BhY2UtYnVmZmVy KQotICAgIChyZW1vdmUtaG9vayAnd3JpdGUtZmlsZS1mdW5jdGlvbnMgJ3doaXRlc3BhY2Utd3Jp dGUtZmlsZS1ob29rIHQpCi0gICAgKHJlbW92ZS1ob29rICdraWxsLWJ1ZmZlci1ob29rICd3aGl0 ZXNwYWNlLWJ1ZmZlcikpKQotCi07OzsjIyNhdXRvbG9hZAotKGRlZnVuIHdoaXRlc3BhY2Utd3Jp dGUtZmlsZS1ob29rICgpCi0gICJIb29rIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbiB0aGUgYnVm ZmVyIHdoZW4gd2hpdGVzcGFjZSBjaGVjayBpcyBlbmFibGVkLgotVGhpcyBpcyBtZWFudCB0byBi ZSBhZGRlZCBidWZmZXItbG9jYWxseSB0byBgd3JpdGUtZmlsZS1mdW5jdGlvbnMnLiIKLSAgKGxl dCAoKHdlcnIgbmlsKSkKLSAgICAoaWYgd2hpdGVzcGFjZS1hdXRvLWNsZWFudXAKLQkod2hpdGVz cGFjZS1jbGVhbnVwLWludGVybmFsKQotICAgICAgKHNldHEgd2VyciAod2hpdGVzcGFjZS1idWZm ZXIpKSkKLSAgICAoaWYgKGFuZCB3aGl0ZXNwYWNlLWFib3J0LW9uLWVycm9yIHdlcnIpCi0JKGVy cm9yICJBYm9ydCB3cml0ZSBkdWUgdG8gd2hpdGVzcGFjZXMgaW4gJXMiCi0JCSAgICAgICBidWZm ZXItZmlsZS1uYW1lKSkpCi0gIG5pbCkKLQotKGRlZnVuIHdoaXRlc3BhY2UtdW5sb2FkLWZ1bmN0 aW9uICgpCi0gICJVbmxvYWQgdGhlIHdoaXRlc3BhY2UgbGlicmFyeS4iCi0gIChpZiAodW5pbnRl cm4gIndoaXRlc3BhY2UtdW5sb2FkLWhvb2siIG9iYXJyYXkpCi0gICAgICA7OyBpZiB3aGl0ZXNw YWNlLXVubG9hZC1ob29rIGlzIGRlZmluZWQsIGxldCdzIGdldCByaWQgb2YgaXQKLSAgICAgIDs7 IGFuZCByZWN1cnNpdmVseSBjYWxsIGB1bmxvYWQtZmVhdHVyZScKLSAgICAgIChwcm9nbiAodW5s b2FkLWZlYXR1cmUgJ3doaXRlc3BhY2UpIHQpCi0gICAgOzsgdGhpcyBvbmx5IGhhcHBlbnMgaW4g dGhlIHJlY3Vyc2l2ZSBjYWxsCi0gICAgKHdoaXRlc3BhY2UtZ2xvYmFsLW1vZGUgLTEpCi0gICAg KHNhdmUtY3VycmVudC1idWZmZXIKLSAgICAgIChkb2xpc3QgKGJ1ZiAoYnVmZmVyLWxpc3QpKQot CShzZXQtYnVmZmVyIGJ1ZikKLQkocmVtb3ZlLWhvb2sgJ3dyaXRlLWZpbGUtZnVuY3Rpb25zICd3 aGl0ZXNwYWNlLXdyaXRlLWZpbGUtaG9vayB0KSkpCi0gICAgOzsgY29udGludWUgc3RhbmRhcmQg dW5sb2FkaW5nCi0gICAgbmlsKSkKLQotKGRlZnVuIHdoaXRlc3BhY2UtdW5sb2FkLWhvb2sgKCkK LSAgKHJlbW92ZS1ob29rICdmaW5kLWZpbGUtaG9vayAnd2hpdGVzcGFjZS1idWZmZXIpCi0gIChy ZW1vdmUtaG9vayAnd3JpdGUtZmlsZS1mdW5jdGlvbnMgJ3doaXRlc3BhY2Utd3JpdGUtZmlsZS1o b29rIHQpCi0gIChyZW1vdmUtaG9vayAna2lsbC1idWZmZXItaG9vayAnd2hpdGVzcGFjZS1idWZm ZXIpKQotCi0oYWRkLWhvb2sgJ3doaXRlc3BhY2UtdW5sb2FkLWhvb2sgJ3doaXRlc3BhY2UtdW5s b2FkLWhvb2spCi0KLShwcm92aWRlICd3aGl0ZXNwYWNlKQotCi07Ozsgd2hpdGVzcGFjZS5lbCBl bmRzIGhlcmUKLS0gCjIuMjYuMgoK --00000000000013cdf905a494f686-- From debbugs-submit-bounces@debbugs.gnu.org Tue May 12 17:13:58 2020 Received: (at 40995) by debbugs.gnu.org; 12 May 2020 21:13:58 +0000 Received: from localhost ([127.0.0.1]:56653 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jYcDu-0007xg-Bt for submit@debbugs.gnu.org; Tue, 12 May 2020 17:13:58 -0400 Received: from mail-yb1-f172.google.com ([209.85.219.172]:46293) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jYcDs-0007xQ-7v for 40995@debbugs.gnu.org; Tue, 12 May 2020 17:13:56 -0400 Received: by mail-yb1-f172.google.com with SMTP id s37so5741989ybe.13 for <40995@debbugs.gnu.org>; Tue, 12 May 2020 14:13:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:user-agent:mime-version:date :message-id:subject:to; bh=c6au4kdorTuNM1/SxFo4hYxNNjCxsRiDMTVNQdXt61w=; b=Xj0W9O4a8NvAMFWY/EY4zBgn55FZ9DhXEt68cRM1SUh2rSgBz2O2Exw6Vt4KgJ8h+x 0aGKwZocOd6mlSHozQUkix6t4Mueu/NnIXsFg388OhJ/4EkonVfsTBob9BnZ2nUkLm7v xK60PXpqAXUZDlUPqe6CLTWV+SVmgKeNjezSQJcRxBOqv74ScWl5CKUld6Fd2Omc1PT6 izCM5Xe5sQyMGHWkihm7k5Fx/R9kkBZ5EvWpuR1+iQ7HFqRReNbvAF2l52cDVxis3o1R Suvxs6NPbkDRqrwYxNB4kuvfE/zyJT86kg05BsRW1CDY42tM+6Yhk9o3G1vnacoQF+qk CHoQ== X-Gm-Message-State: AGi0Pub37uj9+HkbSH5qNPNWfJLE6ctStcsYI6CqVQQXfGk+ny8lj/R0 ESW+xSdf5JZOtFzxZVEMPH4kZfdAqSWCoCtZ53x9/w== X-Google-Smtp-Source: APiQypI+Txylm+sXccOvIKb5coAnEBpB6VESZ4ml1hHZIs5EhSzUVMrvj5BrgIwlqFiwa6/3kV1xeeq118Vd/dSO2e8= X-Received: by 2002:a25:bb08:: with SMTP id z8mr37593737ybg.129.1589318030382; Tue, 12 May 2020 14:13:50 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Tue, 12 May 2020 17:13:49 -0400 From: Stefan Kangas In-Reply-To: (Stefan Kangas's message of "Fri, 1 May 2020 14:02:42 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Date: Tue, 12 May 2020 17:13:49 -0400 Message-ID: Subject: Re: bug#40995: [PATCH] Delete libraries obsolete since 23.1 and 23.2 To: 40995@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 40995 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) Stefan Kangas writes: > I think we can now safely remove the following libraries, obsolete > since the above dates: > > [23.2] * lisp/obsolete/ledit.el > [23.2] * lisp/obsolete/lmenu.el > [23.2] * lisp/obsolete/lucid.el > [23.1] * lisp/obsolete/old-whitespace.el > > The libraries ledit.el, lmenu.el and lucid.el concern compatibility > with the long defunct Lucid Emacs, and old-whitespace.el is the old > version of whitespace.el. No comments within 11 days. I will allow a few more days for anyone to object or comment before I push this to master. Thanks. Best regards, Stefan Kangas From debbugs-submit-bounces@debbugs.gnu.org Fri May 15 14:04:10 2020 Received: (at 40995) by debbugs.gnu.org; 15 May 2020 18:04:10 +0000 Received: from localhost ([127.0.0.1]:38685 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZegs-0002hR-K5 for submit@debbugs.gnu.org; Fri, 15 May 2020 14:04:10 -0400 Received: from mail-yb1-f174.google.com ([209.85.219.174]:45256) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZegr-0002hB-0l; Fri, 15 May 2020 14:04:09 -0400 Received: by mail-yb1-f174.google.com with SMTP id y10so1277796ybm.12; Fri, 15 May 2020 11:04:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:user-agent :mime-version:date:message-id:subject:to:cc; bh=Imhu9VbyfdISDBuoCmaSBiyyAtI8s+GtfyjUSP/XwA8=; b=Z6sF0jibzGppZo7x1iY548wQgnBhPPr92kIU/nyv5FQmhBcI9egwfg3skYRxLhE15D YAf1tS8++BBdbCzSlu3wUnQmHcNnyDy4X55ZMWv9RoX/xILZJ0qrUzf8kA5WSe9iA5KR jnRftkIbiWUmUiNT2Nu/53SefUjo3tqpMs5KGOFvAy/XMNzJx8vfgVsKskB0P7vUXpKD L3RymiUyzUNN3nOcGUq+MATmXhc37+AS72EjgCZ8ikNyMlNQ+S6hlaM4YlH4qQhTx4va 6YiRIygh+1BKcSth3O/EDI9qE2u7CwiR8yn/guuaJ726xQx/swDP+jEo/Jnq9HMjJYH4 HrmQ== X-Gm-Message-State: AOAM531LU1OmRzbtWAXEcOIRCjV6QkidTuXA9I9B1E2nAC0oWQQJobHI 7Ix0XQTjEKcerJjiQn3/63xGdyb3/FdmqUQyAva5pw== X-Google-Smtp-Source: ABdhPJyOdmp+W2w7ZRuYtskAuJu3yAjd6MgfTT2JtJNH9hRut+tVDucBxUan5thskwzO4GcrIR1cOap5sAEepNAZNJc= X-Received: by 2002:a25:41cd:: with SMTP id o196mr6627239yba.181.1589565843271; Fri, 15 May 2020 11:04:03 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Fri, 15 May 2020 11:04:02 -0700 From: Stefan Kangas In-Reply-To: (Stefan Kangas's message of "Tue, 12 May 2020 17:13:49 -0400") References: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Date: Fri, 15 May 2020 11:04:02 -0700 Message-ID: Subject: Re: bug#40995: [PATCH] Delete libraries obsolete since 23.1 and 23.2 To: 40995@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 40995 Cc: control@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) close 40995 28.1 thanks Stefan Kangas writes: > No comments within 11 days. I will allow a few more days for anyone to > object or comment before I push this to master. Thanks. Pushed to master as commit b76cdd0c1a. Best regards, Stefan Kangas From unknown Wed Jun 18 00:27:05 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 13 Jun 2020 11:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator