From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id wJ4gJqxHbGS+3wAASxT56A (envelope-from ) for ; Tue, 23 May 2023 06:57:16 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id YIk7JqxHbGRlZwEA9RJhRA (envelope-from ) for ; Tue, 23 May 2023 06:57:16 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 1286AFDE8 for ; Tue, 23 May 2023 06:57:15 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q1K54-0007Hx-EW; Tue, 23 May 2023 00:57:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q1K53-0007Hp-0A for guix-patches@gnu.org; Tue, 23 May 2023 00:57:05 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q1K50-0005tT-Aj for guix-patches@gnu.org; Tue, 23 May 2023 00:57:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q1K50-0006jG-7k for guix-patches@gnu.org; Tue, 23 May 2023 00:57:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#51512] [PATCH v6 3/3]: gnu: Add bash-coding-utils Resent-From: david larsson Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 23 May 2023 04:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51512 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 51512@debbugs.gnu.org Cc: Guix-patches Received: via spool by 51512-submit@debbugs.gnu.org id=B51512.168481780425827 (code B ref 51512); Tue, 23 May 2023 04:57:02 +0000 Received: (at 51512) by debbugs.gnu.org; 23 May 2023 04:56:44 +0000 Received: from localhost ([127.0.0.1]:37870 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q1K4g-0006iR-NV for submit@debbugs.gnu.org; Tue, 23 May 2023 00:56:44 -0400 Received: from server0.selfhosted.xyz ([217.64.149.7]:57640) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q1K4c-0006i7-HO for 51512@debbugs.gnu.org; Tue, 23 May 2023 00:56:41 -0400 Received: from server0.selfhosted.xyz (localhost [127.0.0.1]) by server0.selfhosted.xyz (Postfix) with ESMTP id 0FBFF30F86DE; Tue, 23 May 2023 06:56:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=selfhosted.xyz; s=dkim; t=1684817792; bh=Lp1b9iIpv7NQ09lybMzkB6obGjH9ELpq/OG7FhTFPPs=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=jTGbzi7g4TR3m0qi4/1PbrA5VfV9VXollZHc92fRHACL4USFP4npvTcwycLHLaAhq 7vkUWx86avwE5ZSABVHXVMngb9lmijhnNb7aZLNy2XF8DcVSDwCHEDmUHJ/+EjUooy gv0Oqt+MNJkrwKeW11Y14zfgsWPm108+LpG8Ru/VpRvzCIeVjmmQ4lM0/h07K1RC0b +4eyLlveEwefJJaXu8rotdddzR4UzzjEKVznWbgSbTYQC9lWL9jA/16+0HCPUsnolv cZaXiacukwjQYjuVdXwbVjQyVxacUS+dlZ06mVY3KCO3mfzfm9HWUXPB8yzb0ujmau r5SbwKih7sEQw== X-Fuglu-Suspect: 415de0b5342a422a9ec5bd04b1a38baf X-Fuglu-Spamstatus: NO Received: from webmail.selfhosted.xyz (office.selfhosted.xyz [192.168.1.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: mail@selfhosted.xyz) by server0.selfhosted.xyz (Postfix) with ESMTPSA; Tue, 23 May 2023 06:56:25 +0200 (CEST) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_2b02eb13ff5b0bbe2ac16a4b58a79ad9" Date: Tue, 23 May 2023 06:56:25 +0200 From: david larsson In-Reply-To: <3add15b77522d6e9ebd715a19d966666@selfhosted.xyz> References: <3add15b77522d6e9ebd715a19d966666@selfhosted.xyz> Message-ID: X-Sender: david.larsson@selfhosted.xyz X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Seal: i=1; s=key1; d=yhetil.org; t=1684817836; a=rsa-sha256; cv=none; b=b0c7VsRyROZArzbfZ7f3d6Rf04kneWo+ySn4JyMZ4c9UThfyn0jYex2KLzGW3SJ9DMisdP rtG7Dfaz/p4SG/zyeZ8vx6SlTmlUrtLr8HCYdfrcBTCEEU/K89xWvcPhTIurpPBA1/Vrqt WaEYIOMqWrnKDFIl6GZ2GE3qko8TDdKbY7bnz9leB9JH5/ni4ZSkQ+I+s+bttjxRQIWExz 0MquRLzXmzjdfUGR00L6jtf03VFoMOUrraDx/ubV6LE26pBnrGpAqfq083CW0e2d2SDrJh oEE23uiGl1QARgguov1PJWS2uh46RKEwSdhccrlHPK2kvA/8tu+7sa/Vc8SkZQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=selfhosted.xyz header.s=dkim header.b=jTGbzi7g; dmarc=fail reason="SPF not aligned (relaxed)" header.from=selfhosted.xyz (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1684817836; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=Lp1b9iIpv7NQ09lybMzkB6obGjH9ELpq/OG7FhTFPPs=; b=dfDuodQ6AxmCNWJTyoSwtjjFpxCtmi+de/LKmEeKvjRG21v5cZva+JJ//5N5ZHCKC9WanQ AnCWmMIsyuoJkff/Webmv76yroBDP9TRonbT28phXhZQW3iWaVDt6NQ5D/OutR6Bauqh7P f6emt84e1dpgYWN/2s1SPaTcvmrS/Wo2Xm3PBYmPTaSUk2fvyT3+FaXWp75KDz0AV9yjSr TQJ5tP1AgKqDHs5q6h3DJOFjQz8+e9vIE/AcaYX0jIq+B9uUTO9AISsZALtNwRRWWrVPJq Jb+PDZptDsdUe8aBPPvMOUB5Jex3lSQmGs7b/NRtWeOcVcsJjhqjft4RROSc8A== X-Migadu-Spam-Score: -3.57 X-Spam-Score: -3.57 X-Migadu-Queue-Id: 1286AFDE8 X-Migadu-Scanner: scn0.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=selfhosted.xyz header.s=dkim header.b=jTGbzi7g; dmarc=fail reason="SPF not aligned (relaxed)" header.from=selfhosted.xyz (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-TUID: 0Z6TOjPFL1nK --=_2b02eb13ff5b0bbe2ac16a4b58a79ad9 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed From bb7ab11b11058d609a89cad164308b5b52ebadca Mon Sep 17 00:00:00 2001 From: David Larsson Date: Tue, 23 May 2023 06:42:03 +0200 Subject: [PATCH 3/3] gnu: Add bash-coding-utils * gnu/packages/bash.scm (bash-coding-utils) (org-html-themes/methuselah-0): new variables. --- gnu/packages/bash.scm | 260 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 260 insertions(+) diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index 64d6e8d65e..986ec68b3f 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -31,17 +31,28 @@ (define-module (gnu packages bash) #:use-module (gnu packages bootstrap) #:use-module (gnu packages compression) #:use-module (gnu packages elf) + #:use-module (gnu packages file) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages gawk) #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) #:use-module (gnu packages readline) #:use-module (gnu packages bison) #:use-module (gnu packages linux) #:use-module (gnu packages libffi) + #:use-module (gnu packages lsof) + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) + #:use-module (gnu packages php) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) + #:use-module (gnu packages search) #:use-module (gnu packages version-control) + #:use-module (gnu packages web) + #:use-module (gnu packages xml) #:use-module (gnu packages less) #:use-module (guix packages) #:use-module (guix download) @@ -574,3 +585,252 @@ (define-public guile-bash-for-bash-coding-utils (inputs (modify-inputs (package-inputs guile2.0-bash) (replace "guile" guile-3.0-latest))) (propagated-inputs (list bash))))) + +(define org-html-themes/methuselah-0 + ;; A form of https://github.com/fniessen/org-html-themes but not + ;; drop-in compatible (using that would break the BCU docs). + (let ((commit "cce6e288649d6555cb74583f3c02a1e4e97fa1f8") + (revision "0")) + (package + (name "org-html-themes") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (commit commit) + (url "https://gitlab.com/methuselah-0/org-html-themes.git"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ka40r5a7xc522wc03v3rwfwq3abb8c1h8sr3hw5v1gsws9s18y9")))) + (build-system copy-build-system) + (home-page "https://gitlab.com/methuselah-0/org-html-themes") + (synopsis "Export Org mode files to HTML") + (description + "The Org-HMTL framework provides cross-browser themes for exporting Org +documents to cross-browser HTML mark-up.") + (license license:gpl3)))) + +(define-public bash-coding-utils + (let ((commit "f1f0ed8bc39db2d5a2b6d3c5aca3e5cbadebfb29") + (revision "0")) + (package + (name "bash-coding-utils") + (version (git-version "0.3.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (commit commit) + (url "https://git.sr.ht/~methuselah-0/bash-coding-utils") + (recursive? #t)) ) + (sha256 + (base32 "1vpp91nsp0gyp5n4kkq0cjsndry9wclxrcr5y41fi1g35vw3m3zz")) + (file-name (git-file-name name version)))) + (build-system trivial-build-system) + (arguments + (list #:modules '((guix build utils)) + #:builder + #~(begin + (use-modules (guix build utils) + (ice-9 ftw) + (ice-9 match) + (srfi srfi-26)) + (let* ((bash #$(this-package-input "bash")) + (bin (string-append #$output "/bin")) + (bcu.sh (string-append bin "/bcu.sh")) + (share (string-append #$output "/share")) + (doc (string-append share "/doc/" #$name)) + ;; Everything but bcu.sh itself is only ever accessed + ;; internally by bcu, so put it all in share/. + (bcu-root (string-append share "/bcu")) + ;; XXX We should honour the without-tests transformation! + (tests? (not #$(%current-target-system)))) + + ;; Copy the ‘source’ to the output and replace submodules. + (let ((source #$(package-source this-package))) + (with-directory-excursion source + (mkdir-p (string-append bcu-root "/submodules")) + (for-each (lambda (file) + (copy-recursively file + (string-append bcu-root + "/" file))) + (list "bcu.sh" + "dependency_paths.sh" + "bcu-test.sh" + "docs" + "src")) + (copy-recursively + #$(package-source (this-package-input + "org-html-themes")) + (string-append bcu-root + "/submodules/org-html-themes")))) + ;; Patch absolute file name references. + (let* ((original-path (getenv "PATH")) + (shebang-inputs '(#$@(map (lambda (name) + (this-package-input name)) + '("guile" + "python")))) + (shebang-path (string-join + (map (cut string-append <> "/bin") + (cons bash shebang-inputs)) + ":"))) + (setenv "PATH" shebang-path) + (for-each patch-shebang + (find-files #$output "\\.(sh|scm|py)$")) + (setenv "PATH" original-path)) + + ;; Add paths to dependencies - defined in + ;; dependency_paths.sh, except the libguile-bash.so + ;; file. + (substitute* (find-files #$output "\\.sh$") + (("[^ ]*(/lib/bash/libguile-bash\\.so)" _ library) + (string-append + #$(this-package-input "guile-bash-for-bash-coding-utils") + library))) + + (substitute* (find-files #$output "dependency_paths\\.sh$") + (("=ctypes.sh") (string-append "=" #$(this-package-input "bash-ctypes") "/bin/ctypes.sh")) + (("=diff") (string-append "=" #$(this-package-input "diffutils") "/bin/diff")) + (("=ping") (string-append "=" "/run/setuid-programs/ping")) + (("=ps") (string-append "=" #$(this-package-input "procps") "/bin/ps")) + (("=file") (string-append "=" #$(this-package-input "findutils") "/bin/file")) + (("=find") (string-append "=" #$(this-package-input "findutils") "/bin/find")) + (("=flock") (string-append "=" #$(this-package-input "util-linux") "/bin/flock")) + (("=gawk") (string-append "=" #$(this-package-input "gawk") "/bin/gawk")) + (("=ugrep") (string-append "=" #$(this-package-input "ugrep") "/bin/ugrep")) + (("=jq") (string-append "=" #$(this-package-input "jq") "/bin/jq")) + (("=lsof") (string-append "=" #$(this-package-input "lsof") "/bin/lsof")) + (("=nmap") (string-append "=" #$(this-package-input "nmap") "/bin/nmap")) + (("=perl") (string-append "=" #$(this-package-input "perl") "/bin/perl")) + (("=php") (string-append "=" #$(this-package-input "php") "/bin/php")) + (("=ps") (string-append "=" #$(this-package-input "procps") "/bin/ps")) + (("=pydaemon.sh") (string-append "=" #$(this-package-input "pydaemon") "/bin/pydaemon.sh")) + (("=sed") (string-append "=" #$(this-package-input "sed") "/bin/sed")) + (("=socat") (string-append "=" #$(this-package-input "socat") "/bin/socat")) + (("=tree") (string-append "=" #$(this-package-input "tree") "/bin/tree")) + (("=pcre2grep") (string-append "=" #$(this-package-input "pcre2") "/bin/pcre2grep")) + (("=which") (string-append "=" #$(this-package-input "which") "/bin/which")) + (("=xargs") (string-append "=" #$(this-package-input "findutils") "/bin/xargs")) + (("=xdg-open") (string-append "=" #$(this-package-input "xdg-utils") "/bin/xdg-open")) + (("=xmllint") (string-append "=" #$(this-package-input "libxml2-xpath0") "/bin/xmllint")) + (("export GUILE_LOAD_PATH=(.*)$") + (string-append "export GUILE_LOAD_PATH=\"" + (string-join + '(#$@(map (lambda (name) + (file-append (this-package-input name) + "/share/guile/site/" + (version-major+minor + (package-version + (this-package-input + "guile"))))) + '("guile-bash-for-bash-coding-utils"))) + ":") + "${GUILE_LOAD_PATH:+:}${GUILE_LOAD_PATH}\"\n")) + (("export BCUPYTHONVERSION=(.*)$" _) + (string-append "export BCUPYTHONVERSION=" + #$(version-major+minor + (package-version + (this-package-input + "python"))))) + (("export BCUPYTHON=python(.*)$" _) + (string-append "export BCUPYTHON=" + #$(file-append (this-package-input "python") + "/bin/python" + (version-major+minor + (package-version + (this-package-input + "python")))) + "\n")) + (("export PYTHONPATH=.*" all) + (string-append "export PYTHONPATH=\"" + (string-join + '(#$@(map (lambda (name) + (file-append (this-package-input name) + "/lib/python" + (version-major+minor + (package-version + (this-package-input + "python"))) + "/site-packages")) + '("python" + "python-elementpath" + "python-lxml" + "python-netaddr"))) + ":") + "${PYTHONPATH:+:}${PYTHONPATH}\"\n")) + (("export XDG_DATA_DIRS=(.*)$") + (string-append + "[[ -e /run/current-system/profile/share ]] && " + "export XDG_DATA_DIRS=" + "/run/current-system/profile/share" + "${XDG_DATA_DIRS:+:}${XDG_DATA_DIRS}\n"))) + + ;; Symlink to bcu.sh from the output bin directory. + (mkdir-p bin) + (symlink (string-append bcu-root "/bcu.sh") bcu.sh) + (chmod bcu.sh #o555) + + ;; Disable network and gui tests, and one test for setopts which + ;; doesn't work inside the Guix build environment. + (with-output-to-file (string-append bcu-root "/disabled_tests.txt") + (lambda _ + (format #t "~{~a~%~}" + (list "ip_of_test_1" + "setopts_test_4" + "web_media_server_test_1" + "web_api_server_test_1" + "find_gui_test_1")))) + + ;; Set up a minimal test environment & run the tests. + (when tests? + (setenv "PATH" (string-append bin ":" + bash "/bin:" + (getenv "PATH"))) + (setenv "SHELL" + (string-append bash "/bin/bash")) + (for-each (lambda (test-input) + (setenv "PATH" + (string-append + (assoc-ref %build-inputs test-input) + "/bin:" (getenv "PATH")))) + (list "coreutils")) + (setenv "HOME" "/tmp") + (with-directory-excursion bcu-root + (invoke "./bcu-test.sh") + ;; No need to keep passed tests in the final output + (for-each delete-file + (list "bcu-test.sh" + "disabled_tests.txt")))))))) + (inputs (list bash bash-ctypes coreutils + diffutils file findutils + gawk guile-3.0 guile-bash-for-bash-coding-utils + jq libxml2-xpath0 + lsof + nmap + ;; org-html-themes is bundled upstream as a git submodule, + ;; but we package it separately and copy it manually above. + org-html-themes/methuselah-0 + pcre2 perl php + procps + pydaemon python python-elementpath python-lxml + python-netaddr python-yq + sed + socat + tree ugrep util-linux which + xdg-utils )) + ;; the bash shell needs to be the same version + ;; as guile-bash is compiled against + (propagated-inputs (list bash)) + (home-page "https://git.sr.ht/~methuselah-0/bash-coding-utils") + (synopsis "Functions and tools for software prototyping in Bash") + (description + "Bash-Coding-Utils is a library of Bash functions and wrappers that can +be useful when writing quick implementations of new programs. It helps you +work with JSON, XML, API's and parallelization, and installs some helper +programs commonly used in Bash scripting. Just run @command{. bcu.sh}, type +@command{bcu__}, hit @key{TAB} to see available functions and give any of them +the @code{--help} flag to see how to use it, or run @command{bcu__docs} for +the full HTML documentation.") + (license license:gpl3)))) -- 2.39.1 --=_2b02eb13ff5b0bbe2ac16a4b58a79ad9 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0003-gnu-Add-bash-coding-utils.patch Content-Disposition: attachment; filename=0003-gnu-Add-bash-coding-utils.patch; size=16587 RnJvbSBiYjdhYjExYjExMDU4ZDYwOWE4OWNhZDE2NDMwOGI1YjUyZWJhZGNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBMYXJzc29uIDxkYXZpZC5sYXJzc29uQHNlbGZob3N0 ZWQueHl6PgpEYXRlOiBUdWUsIDIzIE1heSAyMDIzIDA2OjQyOjAzICswMjAwClN1YmplY3Q6IFtQ QVRDSCAzLzNdIGdudTogQWRkIGJhc2gtY29kaW5nLXV0aWxzCgoqIGdudS9wYWNrYWdlcy9iYXNo LnNjbSAoYmFzaC1jb2RpbmctdXRpbHMpCihvcmctaHRtbC10aGVtZXMvbWV0aHVzZWxhaC0wKTog bmV3IHZhcmlhYmxlcy4KLS0tCiBnbnUvcGFja2FnZXMvYmFzaC5zY20gfCAyNjAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjYwIGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvYmFzaC5zY20gYi9nbnUvcGFj a2FnZXMvYmFzaC5zY20KaW5kZXggNjRkNmU4ZDY1ZS4uOTg2ZWM2OGIzZiAxMDA2NDQKLS0tIGEv Z251L3BhY2thZ2VzL2Jhc2guc2NtCisrKyBiL2dudS9wYWNrYWdlcy9iYXNoLnNjbQpAQCAtMzEs MTcgKzMxLDI4IEBAIChkZWZpbmUtbW9kdWxlIChnbnUgcGFja2FnZXMgYmFzaCkKICAgIzp1c2Ut bW9kdWxlIChnbnUgcGFja2FnZXMgYm9vdHN0cmFwKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNr YWdlcyBjb21wcmVzc2lvbikKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZWxmKQorICAj OnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBmaWxlKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNr YWdlcyBmcmVlZGVza3RvcCkKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ2F3aykKICAg Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgbmN1cnNlcykKICAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgbmV0d29ya2luZykKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcmVhZGxp bmUpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGJpc29uKQogICAjOnVzZS1tb2R1bGUg KGdudSBwYWNrYWdlcyBsaW51eCkKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgbGliZmZp KQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBsc29mKQorICAjOnVzZS1tb2R1bGUgKGdu dSBwYWNrYWdlcyBwY3JlKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBwZXJsKQorICAj OnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBwaHApCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2th Z2VzIHBrZy1jb25maWcpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHB5dGhvbikKKyAg Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcHl0aG9uLXh5eikKICAgIzp1c2UtbW9kdWxlIChn bnUgcGFja2FnZXMgZ3VpbGUpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGd1aWxlLXh5 eikKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgc2VhcmNoKQogICAjOnVzZS1tb2R1bGUg KGdudSBwYWNrYWdlcyB2ZXJzaW9uLWNvbnRyb2wpCisgICM6dXNlLW1vZHVsZSAoZ251IHBhY2th Z2VzIHdlYikKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgeG1sKQogICAjOnVzZS1tb2R1 bGUgKGdudSBwYWNrYWdlcyBsZXNzKQogICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2FnZXMpCiAg ICM6dXNlLW1vZHVsZSAoZ3VpeCBkb3dubG9hZCkKQEAgLTU3NCwzICs1ODUsMjUyIEBAIChkZWZp bmUtcHVibGljIGd1aWxlLWJhc2gtZm9yLWJhc2gtY29kaW5nLXV0aWxzCiAgICAgICAoaW5wdXRz IChtb2RpZnktaW5wdXRzIChwYWNrYWdlLWlucHV0cyBndWlsZTIuMC1iYXNoKQogICAgICAgICAg ICAgICAgIChyZXBsYWNlICJndWlsZSIgZ3VpbGUtMy4wLWxhdGVzdCkpKQogICAgICAgKHByb3Bh Z2F0ZWQtaW5wdXRzIChsaXN0IGJhc2gpKSkpKQorCisoZGVmaW5lIG9yZy1odG1sLXRoZW1lcy9t ZXRodXNlbGFoLTAKKyAgOzsgQSBmb3JtIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9mbmllc3Nlbi9v cmctaHRtbC10aGVtZXMgYnV0IG5vdAorICA7OyBkcm9wLWluIGNvbXBhdGlibGUgKHVzaW5nIHRo YXQgd291bGQgYnJlYWsgdGhlIEJDVSBkb2NzKS4KKyAgKGxldCAoKGNvbW1pdCAiY2NlNmUyODg2 NDlkNjU1NWNiNzQ1ODNmM2MwMmExZTRlOTdmYTFmOCIpCisgICAgICAgIChyZXZpc2lvbiAiMCIp KQorICAgIChwYWNrYWdlCisgICAgICAobmFtZSAib3JnLWh0bWwtdGhlbWVzIikKKyAgICAgICh2 ZXJzaW9uIChnaXQtdmVyc2lvbiAiMC4wLjAiIHJldmlzaW9uIGNvbW1pdCkpCisgICAgICAoc291 cmNlCisgICAgICAgKG9yaWdpbgorICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAg ICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAoY29tbWl0IGNvbW1pdCkKKyAg ICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0bGFiLmNvbS9tZXRodXNlbGFoLTAvb3JnLWh0 bWwtdGhlbWVzLmdpdCIpKSkKKyAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxlLW5hbWUgbmFt ZSB2ZXJzaW9uKSkKKyAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAoYmFzZTMyICIxa2E0MHI1 YTd4YzUyMndjMDN2M3J3ZndxM2FiYjhjMWg4c3IzaHc1djFnc3dzOXMxOHk5IikpKSkKKyAgICAg IChidWlsZC1zeXN0ZW0gY29weS1idWlsZC1zeXN0ZW0pCisgICAgICAoaG9tZS1wYWdlICJodHRw czovL2dpdGxhYi5jb20vbWV0aHVzZWxhaC0wL29yZy1odG1sLXRoZW1lcyIpCisgICAgICAoc3lu b3BzaXMgIkV4cG9ydCBPcmcgbW9kZSBmaWxlcyB0byBIVE1MIikKKyAgICAgIChkZXNjcmlwdGlv bgorICAgICAgICJUaGUgT3JnLUhNVEwgZnJhbWV3b3JrIHByb3ZpZGVzIGNyb3NzLWJyb3dzZXIg dGhlbWVzIGZvciBleHBvcnRpbmcgT3JnCitkb2N1bWVudHMgdG8gY3Jvc3MtYnJvd3NlciBIVE1M IG1hcmstdXAuIikKKyAgICAgIChsaWNlbnNlIGxpY2Vuc2U6Z3BsMykpKSkKKworKGRlZmluZS1w dWJsaWMgYmFzaC1jb2RpbmctdXRpbHMKKyAgKGxldCAoKGNvbW1pdCAiZjFmMGVkOGJjMzlkYjJk NWEyYjZkM2M1YWNhM2U1Y2JhZGViZmIyOSIpCisgICAgICAgIChyZXZpc2lvbiAiMCIpKQorICAg IChwYWNrYWdlCisgICAgICAobmFtZSAiYmFzaC1jb2RpbmctdXRpbHMiKQorICAgICAgKHZlcnNp b24gKGdpdC12ZXJzaW9uICIwLjMuMCIgcmV2aXNpb24gY29tbWl0KSkKKyAgICAgIChzb3VyY2UK KyAgICAgICAob3JpZ2luCisgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICh1 cmkKKyAgICAgICAgICAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAoY29tbWl0IGNvbW1pdCkK KyAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXQuc3IuaHQvfm1ldGh1c2VsYWgtMC9iYXNoLWNv ZGluZy11dGlscyIpCisgICAgICAgICAgIChyZWN1cnNpdmU/ICN0KSkgICAgICAgICAgKQorICAg ICAgICAgKHNoYTI1NgorICAgICAgICAgIChiYXNlMzIgIjF2cHA5MW5zcDBneXA1bjRra3EwY2pz bmRyeTl3Y2x4cmNyNXk0MWZpMWczNXZ3M20zenoiKSkKKyAgICAgICAgIChmaWxlLW5hbWUgKGdp dC1maWxlLW5hbWUgbmFtZSB2ZXJzaW9uKSkpKQorICAgICAgKGJ1aWxkLXN5c3RlbSB0cml2aWFs LWJ1aWxkLXN5c3RlbSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICAobGlzdCAjOm1vZHVsZXMg JygoZ3VpeCBidWlsZCB1dGlscykpCisgICAgICAgICAgICAgIzpidWlsZGVyCisgICAgICAgICAg ICAgI34oYmVnaW4KKyAgICAgICAgICAgICAgICAgKHVzZS1tb2R1bGVzIChndWl4IGJ1aWxkIHV0 aWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGljZS05IGZ0dykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpY2UtOSBtYXRjaCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzcmZpIHNyZmktMjYpKQorICAgICAgICAgICAgICAgICAobGV0KiAoKGJhc2gg IyQodGhpcy1wYWNrYWdlLWlucHV0ICJiYXNoIikpCisgICAgICAgICAgICAgICAgICAgICAgICAo YmluIChzdHJpbmctYXBwZW5kICMkb3V0cHV0ICIvYmluIikpCisgICAgICAgICAgICAgICAgICAg ICAgICAoYmN1LnNoIChzdHJpbmctYXBwZW5kIGJpbiAiL2JjdS5zaCIpKQorICAgICAgICAgICAg ICAgICAgICAgICAgKHNoYXJlIChzdHJpbmctYXBwZW5kICMkb3V0cHV0ICIvc2hhcmUiKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChkb2MgKHN0cmluZy1hcHBlbmQgc2hhcmUgIi9kb2MvIiAj JG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgOzsgRXZlcnl0aGluZyBidXQgYmN1LnNo IGl0c2VsZiBpcyBvbmx5IGV2ZXIgYWNjZXNzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7 IGludGVybmFsbHkgYnkgYmN1LCBzbyBwdXQgaXQgYWxsIGluIHNoYXJlLy4KKyAgICAgICAgICAg ICAgICAgICAgICAgIChiY3Utcm9vdCAoc3RyaW5nLWFwcGVuZCBzaGFyZSAiL2JjdSIpKQorICAg ICAgICAgICAgICAgICAgICAgICAgOzsgWFhYIFdlIHNob3VsZCBob25vdXIgdGhlIHdpdGhvdXQt dGVzdHMgdHJhbnNmb3JtYXRpb24hCisgICAgICAgICAgICAgICAgICAgICAgICAodGVzdHM/IChu b3QgIyQoJWN1cnJlbnQtdGFyZ2V0LXN5c3RlbSkpKSkKKworICAgICAgICAgICAgICAgICAgIDs7 IENvcHkgdGhlIOKAmHNvdXJjZeKAmSB0byB0aGUgb3V0cHV0IGFuZCByZXBsYWNlIHN1Ym1vZHVs ZXMuCisgICAgICAgICAgICAgICAgICAgKGxldCAoKHNvdXJjZSAjJChwYWNrYWdlLXNvdXJjZSB0 aGlzLXBhY2thZ2UpKSkKKyAgICAgICAgICAgICAgICAgICAgICh3aXRoLWRpcmVjdG9yeS1leGN1 cnNpb24gc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgIChta2Rpci1wIChzdHJpbmctYXBw ZW5kIGJjdS1yb290ICIvc3VibW9kdWxlcyIpKQorICAgICAgICAgICAgICAgICAgICAgICAoZm9y LWVhY2ggKGxhbWJkYSAoZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNvcHktcmVjdXJzaXZlbHkgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBiY3Utcm9vdAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi LyIgZmlsZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgImJjdS5z aCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXBlbmRlbmN5X3Bh dGhzLnNoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJjdS10ZXN0 LnNoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvY3MiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3JjIikpCisgICAgICAgICAgICAg ICAgICAgICAgIChjb3B5LXJlY3Vyc2l2ZWx5CisgICAgICAgICAgICAgICAgICAgICAgICAjJChw YWNrYWdlLXNvdXJjZSAodGhpcy1wYWNrYWdlLWlucHV0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIm9yZy1odG1sLXRoZW1lcyIpKQorICAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZy1hcHBlbmQgYmN1LXJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIvc3VibW9kdWxlcy9vcmctaHRtbC10aGVtZXMiKSkpKQorICAgICAg ICAgICAgICAgICAgIDs7IFBhdGNoIGFic29sdXRlIGZpbGUgbmFtZSByZWZlcmVuY2VzLgorICAg ICAgICAgICAgICAgICAgIChsZXQqICgob3JpZ2luYWwtcGF0aCAoZ2V0ZW52ICJQQVRIIikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChzaGViYW5nLWlucHV0cyAnKCMkQChtYXAgKGxhbWJk YSAobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh0aGlzLXBhY2thZ2UtaW5wdXQgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygiZ3VpbGUiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIikpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNoZWJhbmctcGF0aCAoc3RyaW5nLWpvaW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcCAoY3V0IHN0cmluZy1hcHBlbmQg PD4gIi9iaW4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjb25zIGJhc2ggc2hlYmFuZy1pbnB1dHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiOiIpKSkKKyAgICAgICAgICAgICAgICAgICAgIChzZXRlbnYgIlBBVEgi IHNoZWJhbmctcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgIChmb3ItZWFjaCBwYXRjaC1zaGVi YW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbmQtZmlsZXMgIyRvdXRwdXQg IlxcLihzaHxzY218cHkpJCIpKQorICAgICAgICAgICAgICAgICAgICAgKHNldGVudiAiUEFUSCIg b3JpZ2luYWwtcGF0aCkpCisKKyAgICAgICAgICAgICAgICAgICA7OyBBZGQgcGF0aHMgdG8gZGVw ZW5kZW5jaWVzIC0gZGVmaW5lZCBpbgorICAgICAgICAgICAgICAgICAgIDs7IGRlcGVuZGVuY3lf cGF0aHMuc2gsIGV4Y2VwdCB0aGUgbGliZ3VpbGUtYmFzaC5zbworICAgICAgICAgICAgICAgICAg IDs7IGZpbGUuCisgICAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqIChmaW5kLWZpbGVzICMk b3V0cHV0ICJcXC5zaCQiKQorICAgICAgICAgICAgICAgICAgICAgKCgiW14gXSooL2xpYi9iYXNo L2xpYmd1aWxlLWJhc2hcXC5zbykiIF8gbGlicmFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAo c3RyaW5nLWFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAjJCh0aGlzLXBhY2thZ2UtaW5w dXQgImd1aWxlLWJhc2gtZm9yLWJhc2gtY29kaW5nLXV0aWxzIikKKyAgICAgICAgICAgICAgICAg ICAgICAgbGlicmFyeSkpKQorCisgICAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqIChmaW5k LWZpbGVzICMkb3V0cHV0ICJkZXBlbmRlbmN5X3BhdGhzXFwuc2gkIikKKyAgICAgICAgICAgICAg ICAgICAgICgoIj1jdHlwZXMuc2giKSAoc3RyaW5nLWFwcGVuZCAiPSIgIyQodGhpcy1wYWNrYWdl LWlucHV0ICJiYXNoLWN0eXBlcyIpICIvYmluL2N0eXBlcy5zaCIpKQorICAgICAgICAgICAgICAg ICAgICAgKCgiPWRpZmYiKSAoc3RyaW5nLWFwcGVuZCAiPSIgIyQodGhpcy1wYWNrYWdlLWlucHV0 ICJkaWZmdXRpbHMiKSAiL2Jpbi9kaWZmIikpCisgICAgICAgICAgICAgICAgICAgICAoKCI9cGlu ZyIpIChzdHJpbmctYXBwZW5kICI9IiAiL3J1bi9zZXR1aWQtcHJvZ3JhbXMvcGluZyIpKQorICAg ICAgICAgICAgICAgICAgICAgKCgiPXBzIikgKHN0cmluZy1hcHBlbmQgIj0iICMkKHRoaXMtcGFj a2FnZS1pbnB1dCAicHJvY3BzIikgIi9iaW4vcHMiKSkKKyAgICAgICAgICAgICAgICAgICAgICgo Ij1maWxlIikgKHN0cmluZy1hcHBlbmQgIj0iICMkKHRoaXMtcGFja2FnZS1pbnB1dCAiZmluZHV0 aWxzIikgIi9iaW4vZmlsZSIpKQorICAgICAgICAgICAgICAgICAgICAgKCgiPWZpbmQiKSAoc3Ry aW5nLWFwcGVuZCAiPSIgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJmaW5kdXRpbHMiKSAiL2Jpbi9m aW5kIikpCisgICAgICAgICAgICAgICAgICAgICAoKCI9ZmxvY2siKSAoc3RyaW5nLWFwcGVuZCAi PSIgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJ1dGlsLWxpbnV4IikgIi9iaW4vZmxvY2siKSkKKyAg ICAgICAgICAgICAgICAgICAgICgoIj1nYXdrIikgKHN0cmluZy1hcHBlbmQgIj0iICMkKHRoaXMt cGFja2FnZS1pbnB1dCAiZ2F3ayIpICIvYmluL2dhd2siKSkKKyAgICAgICAgICAgICAgICAgICAg ICgoIj11Z3JlcCIpIChzdHJpbmctYXBwZW5kICI9IiAjJCh0aGlzLXBhY2thZ2UtaW5wdXQgInVn cmVwIikgIi9iaW4vdWdyZXAiKSkKKyAgICAgICAgICAgICAgICAgICAgICgoIj1qcSIpIChzdHJp bmctYXBwZW5kICI9IiAjJCh0aGlzLXBhY2thZ2UtaW5wdXQgImpxIikgIi9iaW4vanEiKSkKKyAg ICAgICAgICAgICAgICAgICAgICgoIj1sc29mIikgKHN0cmluZy1hcHBlbmQgIj0iICMkKHRoaXMt cGFja2FnZS1pbnB1dCAibHNvZiIpICIvYmluL2xzb2YiKSkKKyAgICAgICAgICAgICAgICAgICAg ICgoIj1ubWFwIikgKHN0cmluZy1hcHBlbmQgIj0iICMkKHRoaXMtcGFja2FnZS1pbnB1dCAibm1h cCIpICIvYmluL25tYXAiKSkKKyAgICAgICAgICAgICAgICAgICAgICgoIj1wZXJsIikgKHN0cmlu Zy1hcHBlbmQgIj0iICMkKHRoaXMtcGFja2FnZS1pbnB1dCAicGVybCIpICIvYmluL3BlcmwiKSkK KyAgICAgICAgICAgICAgICAgICAgICgoIj1waHAiKSAoc3RyaW5nLWFwcGVuZCAiPSIgIyQodGhp cy1wYWNrYWdlLWlucHV0ICJwaHAiKSAiL2Jpbi9waHAiKSkKKyAgICAgICAgICAgICAgICAgICAg ICgoIj1wcyIpIChzdHJpbmctYXBwZW5kICI9IiAjJCh0aGlzLXBhY2thZ2UtaW5wdXQgInByb2Nw cyIpICIvYmluL3BzIikpCisgICAgICAgICAgICAgICAgICAgICAoKCI9cHlkYWVtb24uc2giKSAo c3RyaW5nLWFwcGVuZCAiPSIgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJweWRhZW1vbiIpICIvYmlu L3B5ZGFlbW9uLnNoIikpCisgICAgICAgICAgICAgICAgICAgICAoKCI9c2VkIikgKHN0cmluZy1h cHBlbmQgIj0iICMkKHRoaXMtcGFja2FnZS1pbnB1dCAic2VkIikgIi9iaW4vc2VkIikpCisgICAg ICAgICAgICAgICAgICAgICAoKCI9c29jYXQiKSAoc3RyaW5nLWFwcGVuZCAiPSIgIyQodGhpcy1w YWNrYWdlLWlucHV0ICJzb2NhdCIpICIvYmluL3NvY2F0IikpCisgICAgICAgICAgICAgICAgICAg ICAoKCI9dHJlZSIpIChzdHJpbmctYXBwZW5kICI9IiAjJCh0aGlzLXBhY2thZ2UtaW5wdXQgInRy ZWUiKSAiL2Jpbi90cmVlIikpCisgICAgICAgICAgICAgICAgICAgICAoKCI9cGNyZTJncmVwIikg KHN0cmluZy1hcHBlbmQgIj0iICMkKHRoaXMtcGFja2FnZS1pbnB1dCAicGNyZTIiKSAiL2Jpbi9w Y3JlMmdyZXAiKSkKKyAgICAgICAgICAgICAgICAgICAgICgoIj13aGljaCIpIChzdHJpbmctYXBw ZW5kICI9IiAjJCh0aGlzLXBhY2thZ2UtaW5wdXQgIndoaWNoIikgIi9iaW4vd2hpY2giKSkKKyAg ICAgICAgICAgICAgICAgICAgICgoIj14YXJncyIpIChzdHJpbmctYXBwZW5kICI9IiAjJCh0aGlz LXBhY2thZ2UtaW5wdXQgImZpbmR1dGlscyIpICIvYmluL3hhcmdzIikpCisgICAgICAgICAgICAg ICAgICAgICAoKCI9eGRnLW9wZW4iKSAoc3RyaW5nLWFwcGVuZCAiPSIgIyQodGhpcy1wYWNrYWdl LWlucHV0ICJ4ZGctdXRpbHMiKSAiL2Jpbi94ZGctb3BlbiIpKQorICAgICAgICAgICAgICAgICAg ICAgKCgiPXhtbGxpbnQiKSAoc3RyaW5nLWFwcGVuZCAiPSIgIyQodGhpcy1wYWNrYWdlLWlucHV0 ICJsaWJ4bWwyLXhwYXRoMCIpICIvYmluL3htbGxpbnQiKSkKKyAgICAgICAgICAgICAgICAgICAg ICgoImV4cG9ydCBHVUlMRV9MT0FEX1BBVEg9KC4qKSQiKQorICAgICAgICAgICAgICAgICAgICAg IChzdHJpbmctYXBwZW5kICJleHBvcnQgR1VJTEVfTE9BRF9QQVRIPVwiIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctam9pbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnKCMkQChtYXAgKGxhbWJkYSAobmFtZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtYXBwZW5kICh0aGlz LXBhY2thZ2UtaW5wdXQgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvc2hhcmUvZ3VpbGUvc2l0ZS8iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dmVyc2lvbi1tYWpvcittaW5vcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWNrYWdlLXZlcnNpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRo aXMtcGFja2FnZS1pbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImd1aWxlIikpKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJndWlsZS1iYXNoLWZvci1iYXNoLWNv ZGluZy11dGlscyIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjoi KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke0dVSUxFX0xPQURfUEFU SDorOn0ke0dVSUxFX0xPQURfUEFUSH1cIlxuIikpCisgICAgICAgICAgICAgICAgICAgICAoKCJl eHBvcnQgQkNVUFlUSE9OVkVSU0lPTj0oLiopJCIgXykKKyAgICAgICAgICAgICAgICAgICAgICAo c3RyaW5nLWFwcGVuZCAiZXhwb3J0IEJDVVBZVEhPTlZFUlNJT049IgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMkKHZlcnNpb24tbWFqb3IrbWlub3IKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFja2FnZS12ZXJzaW9uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLXBhY2thZ2UtaW5wdXQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iKSkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICgoImV4cG9ydCBCQ1VQWVRIT049cHl0aG9uKC4qKSQiIF8pCisgICAg ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgImV4cG9ydCBCQ1VQWVRIT049IgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMkKGZpbGUtYXBwZW5kICh0aGlzLXBh Y2thZ2UtaW5wdXQgInB5dGhvbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi9iaW4vcHl0aG9uIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLW1ham9yK21pbm9yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWNrYWdlLXZl cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh0aGlzLXBhY2thZ2UtaW5wdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIikpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiXG4iKSkKKyAgICAgICAgICAgICAgICAgICAgICgoImV4cG9ydCBQ WVRIT05QQVRIPS4qIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQg ImV4cG9ydCBQWVRIT05QQVRIPVwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdHJpbmctam9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn KCMkQChtYXAgKGxhbWJkYSAobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGZpbGUtYXBwZW5kICh0aGlzLXBhY2thZ2UtaW5wdXQgbmFtZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIvbGliL3B5dGhvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLW1ham9yK21pbm9yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBhY2thZ2UtdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy1wYWNrYWdlLWlucHV0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi cHl0aG9uIikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi9zaXRlLXBhY2thZ2VzIikpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJweXRob24iCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24tZWxlbWVudHBhdGgiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24t bHhtbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InB5dGhvbi1uZXRhZGRyIikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiOiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7UFlUSE9OUEFU SDorOn0ke1BZVEhPTlBBVEh9XCJcbiIpKQorICAgICAgICAgICAgICAgICAgICAgKCgiZXhwb3J0 IFhER19EQVRBX0RJUlM9KC4qKSQiKQorICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBw ZW5kCisgICAgICAgICAgICAgICAgICAgICAgICJbWyAtZSAvcnVuL2N1cnJlbnQtc3lzdGVtL3By b2ZpbGUvc2hhcmUgXV0gJiYgIgorICAgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0IFhER19E QVRBX0RJUlM9IgorICAgICAgICAgICAgICAgICAgICAgICAiL3J1bi9jdXJyZW50LXN5c3RlbS9w cm9maWxlL3NoYXJlIgorICAgICAgICAgICAgICAgICAgICAgICAiJHtYREdfREFUQV9ESVJTOis6 fSR7WERHX0RBVEFfRElSU31cbiIpKSkKKworICAgICAgICAgICAgICAgICAgIDs7IFN5bWxpbmsg dG8gYmN1LnNoIGZyb20gdGhlIG91dHB1dCBiaW4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAg ICAgIChta2Rpci1wIGJpbikKKyAgICAgICAgICAgICAgICAgICAoc3ltbGluayAoc3RyaW5nLWFw cGVuZCBiY3Utcm9vdCAiL2JjdS5zaCIpIGJjdS5zaCkKKyAgICAgICAgICAgICAgICAgICAoY2ht b2QgYmN1LnNoICNvNTU1KQorCisgICAgICAgICAgICAgICAgICAgOzsgRGlzYWJsZSBuZXR3b3Jr IGFuZCBndWkgdGVzdHMsIGFuZCBvbmUgdGVzdCBmb3Igc2V0b3B0cyB3aGljaAorICAgICAgICAg ICAgICAgICAgIDs7IGRvZXNuJ3Qgd29yayBpbnNpZGUgdGhlIEd1aXggYnVpbGQgZW52aXJvbm1l bnQuCisgICAgICAgICAgICAgICAgICAgKHdpdGgtb3V0cHV0LXRvLWZpbGUgKHN0cmluZy1hcHBl bmQgYmN1LXJvb3QgIi9kaXNhYmxlZF90ZXN0cy50eHQiKQorICAgICAgICAgICAgICAgICAgICAg KGxhbWJkYSBfCisgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgI3QgIn57fmF+JX59Igor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICJpcF9vZl90ZXN0XzEiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldG9wdHNfdGVzdF80IgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZWJfbWVkaWFfc2VydmVyX3Rlc3RfMSIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2ViX2FwaV9zZXJ2ZXJfdGVz dF8xIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaW5kX2d1aV90ZXN0 XzEiKSkpKQorCisgICAgICAgICAgICAgICAgICAgOzsgU2V0IHVwIGEgbWluaW1hbCB0ZXN0IGVu dmlyb25tZW50ICYgcnVuIHRoZSB0ZXN0cy4KKyAgICAgICAgICAgICAgICAgICAod2hlbiB0ZXN0 cz8KKyAgICAgICAgICAgICAgICAgICAgIChzZXRlbnYgIlBBVEgiIChzdHJpbmctYXBwZW5kIGJp biAiOiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJhc2ggIi9iaW46IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdldGVudiAiUEFUSCIpKSkKKyAgICAgICAgICAgICAgICAgICAgIChzZXRlbnYg IlNIRUxMIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBiYXNo ICIvYmluL2Jhc2giKSkKKyAgICAgICAgICAgICAgICAgICAgIChmb3ItZWFjaCAobGFtYmRhICh0 ZXN0LWlucHV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldGVudiAiUEFU SCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBl bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3NvYy1yZWYg JWJ1aWxkLWlucHV0cyB0ZXN0LWlucHV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIi9iaW46IiAoZ2V0ZW52ICJQQVRIIikpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGlzdCAiY29yZXV0aWxzIikpCisgICAgICAgICAgICAgICAgICAgICAo c2V0ZW52ICJIT01FIiAiL3RtcCIpCisgICAgICAgICAgICAgICAgICAgICAod2l0aC1kaXJlY3Rv cnktZXhjdXJzaW9uIGJjdS1yb290CisgICAgICAgICAgICAgICAgICAgICAgIChpbnZva2UgIi4v YmN1LXRlc3Quc2giKQorICAgICAgICAgICAgICAgICAgICAgICA7OyBObyBuZWVkIHRvIGtlZXAg cGFzc2VkIHRlc3RzIGluIHRoZSBmaW5hbCBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAg KGZvci1lYWNoIGRlbGV0ZS1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bGlzdCAiYmN1LXRlc3Quc2giCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiZGlzYWJsZWRfdGVzdHMudHh0IikpKSkpKSkpCisgICAgICAoaW5wdXRzIChsaXN0IGJhc2gg YmFzaC1jdHlwZXMgY29yZXV0aWxzCisgICAgICAgICAgICAgICAgICAgIGRpZmZ1dGlscyBmaWxl IGZpbmR1dGlscworICAgICAgICAgICAgICAgICAgICBnYXdrIGd1aWxlLTMuMCBndWlsZS1iYXNo LWZvci1iYXNoLWNvZGluZy11dGlscworICAgICAgICAgICAgICAgICAgICBqcSBsaWJ4bWwyLXhw YXRoMAorICAgICAgICAgICAgICAgICAgICBsc29mCisgICAgICAgICAgICAgICAgICAgIG5tYXAK KyAgICAgICAgICAgICAgICAgICAgOzsgb3JnLWh0bWwtdGhlbWVzIGlzIGJ1bmRsZWQgdXBzdHJl YW0gYXMgYSBnaXQgc3VibW9kdWxlLAorICAgICAgICAgICAgICAgICAgICA7OyBidXQgd2UgcGFj a2FnZSBpdCBzZXBhcmF0ZWx5IGFuZCBjb3B5IGl0IG1hbnVhbGx5IGFib3ZlLgorICAgICAgICAg ICAgICAgICAgICBvcmctaHRtbC10aGVtZXMvbWV0aHVzZWxhaC0wCisgICAgICAgICAgICAgICAg ICAgIHBjcmUyIHBlcmwgcGhwCisgICAgICAgICAgICAgICAgICAgIHByb2NwcworICAgICAgICAg ICAgICAgICAgICBweWRhZW1vbiBweXRob24gcHl0aG9uLWVsZW1lbnRwYXRoIHB5dGhvbi1seG1s CisgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRhZGRyIHB5dGhvbi15cQorICAgICAgICAg ICAgICAgICAgICBzZWQKKyAgICAgICAgICAgICAgICAgICAgc29jYXQKKyAgICAgICAgICAgICAg ICAgICAgdHJlZSB1Z3JlcCB1dGlsLWxpbnV4IHdoaWNoCisgICAgICAgICAgICAgICAgICAgIHhk Zy11dGlscyApKQorICAgICAgOzsgdGhlIGJhc2ggc2hlbGwgbmVlZHMgdG8gYmUgdGhlIHNhbWUg dmVyc2lvbgorICAgICAgOzsgYXMgZ3VpbGUtYmFzaCBpcyBjb21waWxlZCBhZ2FpbnN0CisgICAg ICAocHJvcGFnYXRlZC1pbnB1dHMgKGxpc3QgYmFzaCkpCisgICAgICAoaG9tZS1wYWdlICJodHRw czovL2dpdC5zci5odC9+bWV0aHVzZWxhaC0wL2Jhc2gtY29kaW5nLXV0aWxzIikKKyAgICAgIChz eW5vcHNpcyAiRnVuY3Rpb25zIGFuZCB0b29scyBmb3Igc29mdHdhcmUgcHJvdG90eXBpbmcgaW4g QmFzaCIpCisgICAgICAoZGVzY3JpcHRpb24KKyAgICAgICAiQmFzaC1Db2RpbmctVXRpbHMgaXMg YSBsaWJyYXJ5IG9mIEJhc2ggZnVuY3Rpb25zIGFuZCB3cmFwcGVycyB0aGF0IGNhbgorYmUgdXNl ZnVsIHdoZW4gd3JpdGluZyBxdWljayBpbXBsZW1lbnRhdGlvbnMgb2YgbmV3IHByb2dyYW1zLiAg SXQgaGVscHMgeW91Cit3b3JrIHdpdGggSlNPTiwgWE1MLCBBUEkncyBhbmQgcGFyYWxsZWxpemF0 aW9uLCBhbmQgaW5zdGFsbHMgc29tZSBoZWxwZXIKK3Byb2dyYW1zIGNvbW1vbmx5IHVzZWQgaW4g QmFzaCBzY3JpcHRpbmcuICBKdXN0IHJ1biBAY29tbWFuZHsuIGJjdS5zaH0sIHR5cGUKK0Bjb21t YW5ke2JjdV9ffSwgaGl0IEBrZXl7VEFCfSB0byBzZWUgYXZhaWxhYmxlIGZ1bmN0aW9ucyBhbmQg Z2l2ZSBhbnkgb2YgdGhlbQordGhlIEBjb2Rley0taGVscH0gZmxhZyB0byBzZWUgaG93IHRvIHVz ZSBpdCwgb3IgcnVuIEBjb21tYW5ke2JjdV9fZG9jc30gZm9yCit0aGUgZnVsbCBIVE1MIGRvY3Vt ZW50YXRpb24uIikKKyAgICAgIChsaWNlbnNlIGxpY2Vuc2U6Z3BsMykpKSkKLS0gCjIuMzkuMQoK --=_2b02eb13ff5b0bbe2ac16a4b58a79ad9--