From unknown Fri Sep 05 20:56:18 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#79353 <79353@debbugs.gnu.org> To: bug#79353 <79353@debbugs.gnu.org> Subject: Status: 31.0.50; Eager macro expansion errors when building master Reply-To: bug#79353 <79353@debbugs.gnu.org> Date: Sat, 06 Sep 2025 03:56:18 +0000 retitle 79353 31.0.50; Eager macro expansion errors when building master reassign 79353 emacs submitter 79353 Gerd M=C3=B6llmann severity 79353 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 31 02:34:07 2025 Received: (at submit) by debbugs.gnu.org; 31 Aug 2025 06:34:07 +0000 Received: from localhost ([127.0.0.1]:51641 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1usbde-0000eH-Ra for submit@debbugs.gnu.org; Sun, 31 Aug 2025 02:34:07 -0400 Received: from lists.gnu.org ([2001:470:142::17]:38346) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1usbdb-0000dY-3V for submit@debbugs.gnu.org; Sun, 31 Aug 2025 02:34:04 -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 1usbdT-0007qE-4e for bug-gnu-emacs@gnu.org; Sun, 31 Aug 2025 02:33:55 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1usbdR-0004C2-Ey for bug-gnu-emacs@gnu.org; Sun, 31 Aug 2025 02:33:54 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3d3ff4a4d6fso438431f8f.0 for ; Sat, 30 Aug 2025 23:33:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756622031; x=1757226831; darn=gnu.org; h=mime-version:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=tWr+qYNq/svSRrESeaFNtbrXJkB9UhGHEefwCWhvpCk=; b=QEsg3otDMhy85rE3rfaVI+YkAxntNaVPMhF5w9WC22bOxJ1zL9MDv0WReB/XI11Hh7 hti4pX05Fo4gt2ZkcAVizvaWERTUF7pbyJScsuFkgXWO4fakajZvEBx3jJhmTJct8rwQ nLG0yMQUgDoqx2u0VzPD/i1nP+8JoXJJ2QO1dhjSxv7HiZ/z8V3xUjeLI2sLzTed7eaJ AzPFnFe6jx4LFA6yYAWPHACxyf7Wo0VgAbGbMuCvFvsKN3Jm3v7NCueEd34FNIM4bkc7 ozTIAuml/EqUFwfU+UbF08H7HUJCzIX+kpCP4NrqJMhHPFsg0G0mMTYB4AFCXsAtWeWD /dcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756622031; x=1757226831; h=mime-version:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=tWr+qYNq/svSRrESeaFNtbrXJkB9UhGHEefwCWhvpCk=; b=s/daQ8SUKlPugt8Zyfyu6vfV9bZWSUG9NJw7DFQtlBmcSeQFrNVYUhv7S/tFWyqxl9 UAAMhbbaDuAB7b0oEthv8emBBoO395hErIcfvEL9fkuDI9LPGI20Hsu2GQ1zEIW3OU2C rH0c5gB9pjVv110bmFaw3F11nRGbe8e6TKrMmtlS9wwV0glNEwRZpyEtA8cOvWFxkmmV FycnpFAIH65cAssS+6nL3j/Yg4HlrtC2TllpB9ApegyEa4lbxeEYRLi2kwQKqJb6eVEP qG0CUFuE91ajSsdMvgMwgOHbm8qTp5QCXrwh7rzn81KNkZNchzK0J3D+3Wafv/dbC9hT z2ig== X-Gm-Message-State: AOJu0YxHdMnQq0hOWCtteav5AyDPbVLOkk9cl2hmif7IP88iyPhbRBvi VAJLfXrcxwXgGvB7S8/H2L8/C5m7KUQ7CGv4TLDTePJs8ZPLoay3VskmNam/TwEn X-Gm-Gg: ASbGncuZ/8Z2k+I8d/cPnbKMce9j+5EbRC30FNqz2bxypZP39Equ2XxBzfVvtBLBquQ 3VujeZlsBHN1UKL2Y5UUSGx6aCnJNI0ZOmZ4YI+L0PzCQG0pCSaxVt9vwOr6n+Yl2dTajyv/qVc Y1hgGBkKBYa/XXJ9xXsqzSiYhDF+pZ8Ya6nL1zRtoueck+rYwZ18GZeWc4FmIYwdf3Tjc4kXHol IPThiNJEpSFcVpA4dvkGpssuNQH4KDk5UyKs+LDlUe1HgHrAJ9AkW8bq5yxjVwfv843z+M+xs8l ZU0/dcArmyvlBEpqSKZNKy+IfMKIRFdXzYwqm6qsWnzioNLKoDoI952FCHIiEIQx/HnPvdye4L3 1l7UHA8V/c9wGl5LAyyRpBSBjqRLNtI9IoeMIhThKJ+vD04HtWse+dKp0BRoxxKfqp4qTO5Dw9N ZMb9YzaWVmlmYoaMn+SMLwZsc2Bg== X-Google-Smtp-Source: AGHT+IGy+yhqWnnt0BQOBcXoMNGy9p1qmNCY0lzV4LKtj8Ihd8dDAHyo2MTxhZPqV60M1K3ry/hA+g== X-Received: by 2002:a05:6000:4007:b0:3ca:4b59:2714 with SMTP id ffacd0b85a97d-3d1dc5a29dfmr2659340f8f.10.1756622031149; Sat, 30 Aug 2025 23:33:51 -0700 (PDT) Received: from pro2 (p200300e0b71263005d2330a0f59f6853.dip0.t-ipconnect.de. [2003:e0:b712:6300:5d23:30a0:f59f:6853]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3cf8a64fce8sm9570087f8f.34.2025.08.30.23.33.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 23:33:50 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: bug-gnu-emacs@gnu.org Subject: 31.0.50; Eager macro expansion errors when building master X-Debbugs-Cc: Date: Sun, 31 Aug 2025 08:33:48 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2a00:1450:4864:20::431; envelope-from=gerd.moellmann@gmail.com; helo=mail-wr1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit Cc: JD Smith 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.0 (/) I am seeing errors while producing autoloads when building master from git clean -xdf. INFO Scraping 1518 files for loaddefs...70% loaddefs-gen: loading file tramp-adb (for tramp--with-startup) Loading /Users/gerd/emacs/github/master/lisp/net/tramp-adb.el (source)... Warning (emacs): loaddefs-gen: load error (error Eager macro-expansion failure: (error "Eager macro-expansion failure: (void-function cl-subseq)")) Bisected to (in CC): 1f4e2e82649bb2a122b1406caf645ea06a933dc6 is the first bad commit commit 1f4e2e82649bb2a122b1406caf645ea06a933dc6 Author: JD Smith <93749+jdtsmith@users.noreply.github.com> Date: Sun Aug 10 17:17:47 2025 -0400 Adapt tramp to new autoload-macro expand Bug #78995. * lisp/net/tramp-compat.el (tramp-loaddefs): suppress error on requiring tramp-loaddef. * lisp/net/tramp.el (tramp--with-startup): declare autoload-macro expand, and suppress warnings about this declare form on older versions of Emacs. lisp/net/tramp-compat.el | 2 +- lisp/net/tramp.el | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 31 09:19:50 2025 Received: (at 79353) by debbugs.gnu.org; 31 Aug 2025 13:19:50 +0000 Received: from localhost ([127.0.0.1]:52932 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ushyI-0000Hs-5P for submit@debbugs.gnu.org; Sun, 31 Aug 2025 09:19:50 -0400 Received: from mail-io1-xd34.google.com ([2607:f8b0:4864:20::d34]:46574) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1ushyF-0000Ha-23 for 79353@debbugs.gnu.org; Sun, 31 Aug 2025 09:19:48 -0400 Received: by mail-io1-xd34.google.com with SMTP id ca18e2360f4ac-88432daa703so99788939f.1 for <79353@debbugs.gnu.org>; Sun, 31 Aug 2025 06:19:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756646380; x=1757251180; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=O0lbhU5TDllHgyOVCwJD4Rof4zn7S8pIPJQ7sxDDgQU=; b=KFtz1HoHiEt01XhyfvwwHnbHeO+CJVoZhclCVs426k2NlTK6yyUHvTspGFfOoy4bbc Wm+26Wtglh1bFX0IX8qEHhtZHPlqXN75qldc4tii4KvmyoVo/50SrMMIEvwX53GLJKj4 2I2VRFcCZb5RsYjeyC4L2T/rVLZh+1HyP6QQW6foCxmfMmcFzhc1TVN4mw2CocGdKb5q YbnN256+zJ0hDVd116tzazZSGYYQjKV7XnZhgaZXH5f+gxcDs9Db6uJAJP6J5+AkV4b3 ZBNvrSayhhac9rCgGjxEeacZ1nCRY2QK7eYpx+iwgwxFcxu7g4IIztmdY22OVcFsztCE L0Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756646380; x=1757251180; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=O0lbhU5TDllHgyOVCwJD4Rof4zn7S8pIPJQ7sxDDgQU=; b=lihwDwfd3jTMluxAN9AXafVn5O+P+gXl5ZwmqJfbGnbBUTBVN72ETKYgqOrWRvPNA2 gI4TeeUg1jbFsAq65UZ4odgYO3X98NGJ8+Ey87qQ8+tD5abwS9qPbyPMdjxfIUeq9gkL hbHuZ907lENhQVL5WhnF9nt5RA9tLxgVigWebnU9Z9QsjWe21XSeP7tj+eDEhpW3mgf0 zUCwwTOYi2uOfR2FNRj46dgLYQGvuGrfKEIQYybkv8D9E2Dbipyru6dNhsNKpcGe9wiB zrZ/wIYuCeqbe02Jv+PlfsRgJstG6u5pUoXWhg/I7I1/IV5wmyl6R5A+2yRBqERe3U+5 v+EQ== X-Gm-Message-State: AOJu0Yzk/XxpXBIloqpQOuPLK8TBukev+zp9sQ7sl4CXgXOZfyrM06m2 2MmasJHDwqPxUJx+EMZYZYxs1z4YsU5MHsb4R2vw+BSrUn+pMGsBOVWq X-Gm-Gg: ASbGnctwCsqTf0T2JJhjzI7Th2SfnaXAvX64sMGjibvEFKwV+GVzMkFGV0WU1jgIlXl 7AIt7EiLl2Os/izT0N6xcT1zqd+jfvdBvDfKSsxZXIg0JSIPk8tBOaB+/CqbRM96RSQEBGW+0U4 uIOyJ+b/IM5PNy12C2zpgWs0A3uX5jBhfzwNiyz+ql57VXq3Qu6/7PuX1rZ59zdjrhU5U9wxTLy 5vJWpkv7j3/u1zlfTtnHo36LMWaBiKBg4P8HNXl/+PYfcD8gBxq3acGXlT275zbTH2vKxej9gnw +dLgKthwwm7kDS/zLlpVgeL9RH/JT6B2nv6kk7lyC9/ZmrLZ3h7o+Yw6s0aIqXaUeC6kpgbTmNl kFwM6ZkkT+cCMFku7wZoew7nFfXQ+UnhD0PkNv79zb3V/geNUKTKJe+Cc X-Google-Smtp-Source: AGHT+IHEvBNESwbnBpvFJNjQMhEo1Lp+w9stREIAOAdDCmL2R2gYbd5XS3oJSjX8FRYCm++58sTHxw== X-Received: by 2002:a05:6602:158a:b0:881:802b:8859 with SMTP id ca18e2360f4ac-8871f41ad91mr1027714139f.3.1756646380334; Sun, 31 Aug 2025 06:19:40 -0700 (PDT) Received: from moss-4 (cm-24-53-143-223.buckeyecom.net. [24.53.143.223]) by smtp.gmail.com with ESMTPSA id ca18e2360f4ac-8871e3d7103sm147157439f.14.2025.08.31.06.19.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 Aug 2025 06:19:39 -0700 (PDT) From: "J.D. Smith" To: Gerd =?utf-8?Q?M=C3=B6llmann?= Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?= =?utf-8?Q?s?= message of "Sun, 31 Aug 2025 08:33:48 +0200") References: Date: Sun, 31 Aug 2025 09:19:38 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: luangruo@yahoo.com, michael.albinus@gmx.de, 79353@debbugs.gnu.org, monnier@iro.umontreal.ca 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.0 (-) Gerd M=C3=B6llmann writes: > I am seeing errors while producing autoloads when building master from > git clean -xdf. > > INFO Scraping 1518 files for loaddefs...70%=20 > loaddefs-gen: loading file tramp-adb (for tramp--with-startup) > Loading /Users/gerd/emacs/github/master/lisp/net/tramp-adb.el (source).= .. > Warning (emacs): loaddefs-gen: load error > (error Eager macro-expansion failure: (error "Eager macro-expan= sion failure: (void-function cl-subseq)")) > > Bisected to (in CC): > > 1f4e2e82649bb2a122b1406caf645ea06a933dc6 is the first bad commit > commit 1f4e2e82649bb2a122b1406caf645ea06a933dc6 > Author: JD Smith <93749+jdtsmith@users.noreply.github.com> > Date: Sun Aug 10 17:17:47 2025 -0400 > Adapt tramp to new autoload-macro expand > > Bug #78995. > > * lisp/net/tramp-compat.el (tramp-loaddefs): suppress error on requ= iring > tramp-loaddef. > * lisp/net/tramp.el (tramp--with-startup): declare autoload-macro > expand, and suppress warnings about this declare form on older vers= ions > of Emacs. > lisp/net/tramp-compat.el | 2 +- > lisp/net/tramp.el | 7 +++++++ > 2 files changed, 8 insertions(+), 1 deletion(-) This warning arises from the new dynamic `autoload-macro expand' capability Stefan M. and I added. I believe the chain of events is as follows: 1. tramp-adb declares: ;;;###tramp-autoload (tramp--with-startup ... 2. During initial autoload generation, this macro is unknown. So the file tramp-adb.el is /loaded/, to give it a chance to define the macro. 3. The macro `tramp--with-startup' is indeed defined in tramp.el, which tramp-adb requires. So far so good. But during the loading of tramp.el, some other package it loads uses `cl-subseq' at the top level without first requiring cl-extra. 5. Why has this not been an issue before? The macro `cl-subseq' is /itself/ an autoload in cl-extra.el. Since the CL-specific loadefs file `cl-loaddefs.el' does not yet exist (remember this is during autoload generation), this causes the (handled) warning you see. *Question*: In the lisp/net/tramp-loaddefs.el file which was generated during this build, what do you see under: ;;; Generated autoloads from tramp-adb.el Can you try a build again with `make bootstrap' and see whether the warning disappears and if that section of lisp/net/tramp-loaddefs.el changes? My guess is this is a harmless warning. On a related issue, we still need to revert Po's commit e9800cabffa which restored one of the hard-coded macro lists the autoload-macro expand feature intentionally removed, possibly in an attempt to fix a similar issue with recentf. Po, reminder to check that again with `make bootstrap'. I would like to use this report to test various flavors of "from scratch" builds and see if there are any approaches to mitigate these warnings (that's why I'm reporting them!). Loading during autoload generation should be rare, but is essential for external package authors to request macro expansion during package install (think: modes which provide custom convenience macros to wrap `define-minor-mode'). From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 31 10:03:50 2025 Received: (at 79353) by debbugs.gnu.org; 31 Aug 2025 14:03:51 +0000 Received: from localhost ([127.0.0.1]:54364 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1usies-0003Pv-Q7 for submit@debbugs.gnu.org; Sun, 31 Aug 2025 10:03:50 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:54723) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1usieq-0003Pi-I5 for 79353@debbugs.gnu.org; Sun, 31 Aug 2025 10:03:49 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-45b869d35a0so5574255e9.1 for <79353@debbugs.gnu.org>; Sun, 31 Aug 2025 07:03:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756649022; x=1757253822; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=kem8i4qXpyeJgiXTzxbh/7hGTv5zolI+HReJQ7sJmOI=; b=R75F1KW6SUZueoNB0qe16StqI+FbSdz2Ii4bHBxyj8jY7XfkVBWrYrkURTvrpFQ9N2 WldnPtOBs3v1uXMsQEaxz9bR3C3wj7KEPr2rrrCQgy64mJyH73K3k9By/LYAOwttwk+n s2eqZpR4BMQboGOXm5UyfCDP09Rn6VTwCZm118X4ZadpTfjN0neviDLwNctGLCdQPC2t Yo96MB6aPV88p7W9jfaIIHc4WHUMQYqfstIEh87fZs4ZChXOAwrhQKA9y3tDLJlswO2W N/xVPab+a687euZu85JXnr4pHnsK5+GXy0wyUflSP4m7Pe20+BDF/emLyYY/xzlyCaL7 C7vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756649022; x=1757253822; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kem8i4qXpyeJgiXTzxbh/7hGTv5zolI+HReJQ7sJmOI=; b=r4Lty4BOqItNZjV/PWZg0DKs4xzNHWu848tx5DECvvz8dd8QzN+eIWEzmHDk8IAhsc RxSr1HzamU81at5LbUPB4TDKsT16Tl+RXdUpi54FpXhUoDYcb1f2bWwxGTaJc++N5FY6 B5VKDKNh6Gzxi4dbig4jEC8WzI978FwWm+KJ/x3BtA/U3zoG/kt6UefA+T3MMl24SZbo BHr+Nt3O4kfn2lhpxITp4bnTFIJcs9MXgefMNo11wV+jHQJIAdMjjvM6qylCrcr+1BpH DKM+RVkdRYJg45lB3DVAkPvTAKiPj/HdUD2kHryd/+G55D9SGOGz1s7McSAg0W3HZwgd FF6Q== X-Gm-Message-State: AOJu0YwofUO9i6rBddLayhUvYR3dnwiceqlUSKt68cgId3D4M/8cu4pW SbF7+ch5RgxHMdFJEoYemjMWDyI4rkMhFxJZWUwCajQjX3gitoctrAfj X-Gm-Gg: ASbGncsLg6RE4Rig0xIQSuLD70zogg6j/U+9v2yXTJHrKJA1O+NhwqQ+HvB3BxJIcqn l+w5Fi3ciiiSHE+MCm7mAUsTsRvwSI9geIaL+MKfJ9bd52v4Y5SuGwNb6XQhlbVSjHViLZbfLvb z/qc4IVKUmDu1QIPZaY+ZgfCnx1VOyx8J87bbF0Jnuk2D9H7OMObiBCrdB4pSoWrV0e9EkBmAdf cCr1wb9rKMLo+C+g/a4IIjtvDTy9mdZsr8+b9lgaMQXu/U/y7H+HKBRjI6hA1bPortW6SgWfqHg JgJ3QIwDYGx6wdNU+SweUk3m17injnyUNQbniLVe3VnMKdcWN5eNuxtlW42UL7jexoFUMx0MyL6 knl4/TSQ6W8aiLOWoKIGQ5KTTqNjfjwMim9AiAOGjSWGyByVdf16HxYl3INa6581syHebvF7oYt 0P1cjxP9xJyqqWhZ/PlgitHx/zhAhirks= X-Google-Smtp-Source: AGHT+IH3vbplExi+mWn8fe8t2SypXgkys3gfNktvXdlEMb2e/HDjs/a1JndUml8R/5aAel/aVwOHYw== X-Received: by 2002:a05:600c:c4ab:b0:45b:47e1:ef6d with SMTP id 5b1f17b1804b1-45b855b3032mr35002385e9.36.1756649021704; Sun, 31 Aug 2025 07:03:41 -0700 (PDT) Received: from pro2 (p200300e0b71263005d2330a0f59f6853.dip0.t-ipconnect.de. [2003:e0:b712:6300:5d23:30a0:f59f:6853]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b7a9404c4sm78628505e9.10.2025.08.31.07.03.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 Aug 2025 07:03:40 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: "J.D. Smith" Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: References: Date: Sun, 31 Aug 2025 16:03:39 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Debbugs-Envelope-To: 79353 Cc: luangruo@yahoo.com, michael.albinus@gmx.de, 79353@debbugs.gnu.org, monnier@iro.umontreal.ca 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" --=-=-= Content-Type: text/plain "J.D. Smith" writes: > *Question*: > > In the lisp/net/tramp-loaddefs.el file which was generated during this > build, what do you see under: > > ;;; Generated autoloads from tramp-adb.el This is the tramp-loaddefs.el after building from git clean -xdf --=-=-= Content-Type: application/emacs-lisp Content-Disposition: attachment; filename=tramp-loaddefs.el-after-git-clean.el Content-Transfer-Encoding: quoted-printable ;;; tramp-loaddefs.el --- automatically extracted autoloads (do not edit) = -*- lexical-binding: t -*- ;; Generated by the `loaddefs-generate' function. ;; This file is part of GNU Emacs. ;;; Code: ;;; Generated autoloads from tramp.el (defvar tramp--startup-hook nil "\ Forms to be executed at the end of tramp.el.") (put 'tramp--startup-hook 'tramp-suppress-trace t) (unless (assq 'autoload-macro macro-declarations-alist) (push '(autoload-ma= cro ignore) macro-declarations-alist)) (defmacro tramp--with-startup (&rest body) "\ Schedule BODY to be executed at the end of tramp.el." (declare (autoload-ma= cro expand)) `(add-hook 'tramp--startup-hook (lambda nil ,@body))) (eval-and-compile (defalias 'tramp-byte-run--set-suppress-trace #'(lambda (= f _args val) (list 'function-put (list 'quote f) ''tramp-suppress-trace val= ))) (add-to-list 'defun-declarations-alist (list 'tramp-suppress-trace #'tr= amp-byte-run--set-suppress-trace))) (defconst tramp-system-name (or (system-name) "") "\ The system name Tramp is running locally.") (defvar tramp-methods nil "\ Alist of methods for remote files. This is a list of entries of the form (NAME PARAM1 PARAM2 ...). Each NAME stands for a remote access method. Each PARAM is a pair of the form (KEY VALUE). The following KEYs are defined: * `tramp-remote-shell' This specifies the shell to use on the remote host. This MUST be a Bourne-like shell. It is normally not necessary to set this to any value other than \"/bin/sh\": Tramp wants to use a shell which groks tilde expansion, but it can search for it. Also note that \"/bin/sh\" exists on all Unixen except Android, this might not be true for the value that you decide to use. You Have Been Warned. * `tramp-remote-shell-login' This specifies the arguments to let `tramp-remote-shell' run as a login shell. It defaults to (\"-l\"), but some shells, like ksh, require another argument. See `tramp-connection-properties' for a way to overwrite the default value. * `tramp-remote-shell-args' For implementation of `shell-command', this specifies the arguments to let `tramp-remote-shell' run a single command. * `tramp-login-program' This specifies the name of the program to use for logging in to the remote host. This may be the name of rsh or a workalike program, or the name of telnet or a workalike, or the name of su or a workalike. * `tramp-login-args' This specifies a list of lists of arguments to pass to the above mentioned program. You normally want to put each argument in an individual string, i.e. (\"-a\" \"-b\") rather than (\"-a -b\"). \"%\" followed by a letter are expanded in the arguments as follows: - \"%h\" is replaced by the host name. - \"%u\" is replaced by the user name. - \"%p\" is replaced by the port number. - \"%%\" can be used to obtain a literal percent character. If a sub-list containing \"%h\", \"%u\" or \"%p\" is unchanged after expansion (i.e. no host, no user or no port were specified), that sublist is not used. For e.g. \\=3D'((\"-a\" \"-b\") (\"-l\" \"%u\")) that means that (\"-l\" \"%u\") is used only if the user was specified, and it is thus effectively optional. Other expansions are: - \"%l\" is replaced by the login shell `tramp-remote-shell' and its parameters. - \"%t\" is replaced by the temporary file name produced with `tramp-make-tramp-temp-file'. - \"%k\" indicates the keep-date parameter of a program, if exists. - \"%c\" adds additional `tramp-ssh-controlmaster-options' options for the first hop. - \"%n\" expands to \"2>/dev/null\". - \"%x\" is replaced by the `tramp-scp-strict-file-name-checking' argument if it is supported. - \"%y\" is replaced by the `tramp-scp-force-scp-protocol' argument if it is supported. - \"%z\" is replaced by the `tramp-scp-direct-remote-copying' argument if it is supported. - \"%d\" is replaced by the device detected by `tramp-adb-get-device'. - \"%a\" adds the pseudo-terminal allocation argument \"-t\" in asynchronous processes, if the connection type is not `pipe'. The existence of `tramp-login-args', combined with the absence of `tramp-copy-args', is an indication that the method is capable of multi-hops. * `tramp-async-args' When an asynchronous process is started, we know already that the connection works. Therefore, we can pass additional parameters to suppress diagnostic messages, in order not to tamper the process output. * `tramp-direct-async' Whether the method supports direct asynchronous processes. Until now, just \"ssh\"-based, \"sshfs\"-based, \"adb\"-based and container methods do. If it is a list of strings, they are used to construct the remote command. * `tramp-copy-program' This specifies the name of the program to use for remotely copying the file; this might be the absolute filename of scp or the name of a workalike program. It is always applied on the local host. * `tramp-copy-args' This specifies the list of parameters to pass to the above mentioned program, the hints for `tramp-login-args' also apply here. * `tramp-copy-file-name' The remote source or destination file name for out-of-band methods. You can use \"%u\" and \"%h\" like in `tramp-login-args'. Additionally, \"%f\" denotes the local file name part. This list will be expanded to a string without spaces between the elements of the list. The default value is `tramp-default-copy-file-name'. * `tramp-copy-env' A list of environment variables and their values, which will be set when calling `tramp-copy-program'. * `tramp-remote-copy-program' The listener program to be applied on remote side, if needed. * `tramp-remote-copy-args' The list of parameters to pass to the listener program, the hints for `tramp-login-args' also apply here. Additionally, \"%r\" could be used here and in `tramp-copy-args'. It denotes a randomly chosen port for the remote listener. * `tramp-copy-keep-date' This specifies whether the copying program preserves the timestamp of the original file. * `tramp-copy-keep-tmpfile' This specifies whether a temporary local file shall be kept for optimization reasons (useful for \"rsync\" methods). * `tramp-copy-recursive' Whether the operation copies directories recursively. * `tramp-default-port' The default port of a method. * `tramp-tmpdir' A directory on the remote host for temporary files. If not specified, \"/tmp\" is taken as default. * `tramp-connection-timeout' This is the maximum time to be spent for establishing a connection. In general, the global default value shall be used, but for some methods, like \"doas\", \"su\" or \"sudo\", a shorter timeout might be desirable. * `tramp-session-timeout' How long a Tramp connection keeps open before being disconnected. This is useful for methods like \"doas\" or \"sudo\", which shouldn't run an open connection in the background forever. * `tramp-password-previous-hop' The password for this connection is the same like the password for the previous hop. If there is no previous hop, the password of the local user is applied. This is needed for methods like \"doas\", \"sudo\" or \"sudoedit\". * `tramp-case-insensitive' Whether the remote file system handles file names case insensitive. Only a non-nil value counts, the default value nil means to perform further checks on the remote host. See `tramp-connection-properties' for a way to overwrite this. * `tramp-mount-args' * `tramp-copyto-args' * `tramp-moveto-args' * `tramp-about-args' These parameters, a list of list like `tramp-login-args', are used for the \"rclone\" method, and are appended to the respective \"rclone\" commands. In general, they shouldn't be changed inside `tramp-methods'; it is recommended to change their values via `tramp-connection-properties'. Unlike `tramp-login-args' there is no pattern replacement. What does all this mean? Well, you should specify `tramp-login-program' for all methods; this program is used to log in to the remote site. Then, there are two ways to actually transfer the files between the local and the remote side. One way is using an additional scp-like program. If you want to do this, set `tramp-copy-program' in the method. Another possibility for file transfer is inline transfer, i.e. the file is passed through the same buffer used by `tramp-login-program'. In this case, the file contents need to be protected since the `tramp-login-program' might use escape codes or the connection might not be eight-bit clean. Therefore, file contents are encoded for transit. See the variables `tramp-local-coding-commands' and `tramp-remote-coding-commands' for details. So, to summarize: if the method is an out-of-band method, then you must specify `tramp-copy-program' and `tramp-copy-args'. If it is an inline method, then these two parameters should be nil. Notes: All these arguments can be overwritten by connection properties. See Info node `(tramp) Predefined connection information'. When using `su', `sudo' or `doas' the phrase \"open connection to a remote host\" sounds strange, but it is used nevertheless, for consistency. No connection is opened to a remote host, but `su', `sudo' or `doas' is started on the local host. You should specify a remote host `localhost' or the name of the local host. Another host name is useful only in combination with `tramp-default-proxies-alist'.") (defvar tramp-default-method-alist nil "\ Default method to use for specific host/user pairs. This is an alist of items (HOST USER METHOD). The first matching item specifies the method to use for a file name which does not specify a method. HOST and USER are regular expressions or nil, which is interpreted as a regular expression which always matches. If no entry matches, the variable `tramp-default-method' takes effect. If the file name does not specify the user, lookup is done using the empty string for the user name. See `tramp-methods' for a list of possibilities for METHOD.") (custom-autoload 'tramp-default-method-alist "tramp" t) (defvar tramp-default-user-alist nil "\ Default user to use for specific method/host pairs. This is an alist of items (METHOD HOST USER). The first matching item specifies the user to use for a file name which does not specify a user. METHOD and HOST are regular expressions or nil, which is interpreted as a regular expression which always matches. If no entry matches, the variable `tramp-default-user' takes effect. If the file name does not specify the method, lookup is done using the empty string for the method name.") (custom-autoload 'tramp-default-user-alist "tramp" t) (defvar tramp-default-host-alist nil "\ Default host to use for specific method/user pairs. This is an alist of items (METHOD USER HOST). The first matching item specifies the host to use for a file name which does not specify a host. METHOD and USER are regular expressions or nil, which is interpreted as a regular expression which always matches. If no entry matches, the variable `tramp-default-host' takes effect. If the file name does not specify the method, lookup is done using the empty string for the method name.") (custom-autoload 'tramp-default-host-alist "tramp" t) (defvar tramp-local-host-regexp (rx bos (| (literal tramp-system-name) (| "= localhost" "127.0.0.1" "::1" "localhost4" "localhost6" "ip6-localhost" "ip6= -loopback" "ipv6-localhost" "ipv6-loopback")) eos) "\ Host names which are regarded as local host. If the local host runs a chrooted environment, set this to nil.") (custom-autoload 'tramp-local-host-regexp "tramp" t) (defvar tramp-terminal-type "dumb" "\ Value of TERM environment variable for logging in to remote host. Because Tramp wants to parse the output of the remote shell, it is easily confused by ANSI control escape sequences and suchlike. Often, shell init files conditionalize this setup based on the TERM environment variable.") (custom-autoload 'tramp-terminal-type "tramp" t) (defconst tramp-root-id-string "root" "\ String used to denote the root user or group.") (defvar tramp-remote-path '(tramp-default-remote-path "/bin" "/usr/bin" "/s= bin" "/usr/sbin" "/usr/local/bin" "/usr/local/sbin" "/local/bin" "/local/fr= eeware/bin" "/local/gnu/bin" "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contr= ib/bin" "/opt/bin" "/opt/sbin" "/opt/local/bin" "/opt/homebrew/bin" "/opt/h= omebrew/sbin") "\ List of directories to search for executables on remote host. For every remote host, this variable will be set buffer local, keeping the list of existing directories on that host. You can use \"~\" in this list, but when searching for a shell which groks tilde expansion, all directory names starting with \"~\" will be ignored. `Default Directories' represent the list of directories given by the command \"getconf PATH\". It is recommended to use this entry on head of this list, because these are the default directories for POSIX compatible commands. On remote hosts which do not offer the getconf command, the value \"/bin:/usr/bin\" is used instead. This entry is represented in the list by the special value `tramp-default-remote-path'. `Private Directories' are the settings of the $PATH environment, as given in your `~/.profile'. This entry is represented in the list by the special value `tramp-own-remote-path'. For a full discussion, see Info node `(tramp) Remote programs'.") (custom-autoload 'tramp-remote-path "tramp" t) (defvar tramp-current-connection nil "\ Last connection timestamp. It is a cons cell of the actual `tramp-file-name-structure', and the (optional) timestamp of last activity on this connection.") (require 'cl-lib) (cl-defstruct (tramp-file-name (:type list) :named) method user domain host= port localname hop) (defconst tramp-null-hop (make-tramp-file-name :method "local" :user (user-= login-name) :host tramp-system-name) "\ Connection hop which identifies the virtual hop before the first one. Used also for caching properties of the local machine.") (autoload 'tramp-file-name-unify "tramp" "\ Unify VEC by removing localname and hop from `tramp-file-name' structure. IF VEC is nil, set it to `tramp-null-hop'. If LOCALNAME is an absolute file name, set it as localname. If LOCALNAME is a relative file name, return `tramp-cache-undefined'. Objects returned by this function compare `equal' if they refer to the same connection. Make a copy in order to avoid side effects. (fn VEC &optional LOCALNAME)") (autoload 'tramp-tramp-file-p "tramp" "\ Return t if NAME is a string with Tramp file name syntax. (fn NAME)") (autoload 'tramp-file-local-name "tramp" "\ Return the local name component of NAME. This function removes from NAME the specification of the remote host and the method of accessing the host, leaving only the part that identifies NAME locally on the remote system. If NAME does not match `tramp-file-name-regexp', just `file-local-name' is called. The returned file name can be used directly as argument of `make-process', `process-file', `start-file-process', or `shell-command'. (fn NAME)") (autoload 'tramp-dissect-file-name "tramp" "\ Return a `tramp-file-name' structure of NAME, a remote file name. The structure consists of method, user, domain, host, port, localname (file name on remote host), and hop. Unless NODEFAULT is non-nil, method, user and host are expanded to their default values. For the other file name parts, no default values are used. (fn NAME &optional NODEFAULT)") (autoload 'tramp-ensure-dissected-file-name "tramp" "\ Return a `tramp-file-name' structure for VEC-OR-FILENAME. VEC-OR-FILENAME may be either a string or a `tramp-file-name'. If it's not a Tramp filename, return nil. (fn VEC-OR-FILENAME)") (defsubst tramp-string-empty-or-nil-p (string) "\ Check whether STRING is empty or nil." (or (null string) (string=3D string = ""))) (autoload 'tramp-make-tramp-file-name "tramp" "\ Construct a Tramp file name from ARGS. If LOCALNAME is nil, the value in VEC is used. If it is a symbol, a null localname will be used. Otherwise, LOCALNAME is expected to be a string, which will be used. (fn &rest ARGS)") (set-advertised-calling-convention 'tramp-make-tramp-file-name '(vec &optio= nal localname) '"29.1") (autoload 'tramp-get-connection-buffer "tramp" "\ Get the connection buffer to be used for VEC. Unless DONT-CREATE, the buffer is created when it doesn't exist yet. In case a second asynchronous communication has been started, it is differe= nt from `tramp-get-buffer'. (fn VEC &optional DONT-CREATE)") (defsubst tramp-get-buffer-string (&optional buffer) "\ Return contents of BUFFER. If BUFFER is not a buffer or a buffer name, return the contents of `current-buffer'." (with-current-buffer (if (or (bufferp buffer) (and (s= tringp buffer) (get-buffer buffer))) buffer (current-buffer)) (substring-no= -properties (buffer-string)))) (defvar tramp-inhibit-progress-reporter nil "\ Show Tramp progress reporter in the minibuffer. This variable is used to disable concurrent progress reporter messages.") (autoload 'tramp-set-completion-function "tramp" "\ Set the list of completion functions for METHOD. FUNCTION-LIST is a list of entries of the form (FUNCTION FILE). The FUNCTION is intended to parse FILE according its syntax. It might be a predefined FUNCTION, or a user defined FUNCTION. For the list of predefined FUNCTIONs see `tramp-completion-function-alist'. Example: (tramp-set-completion-function \"ssh\" \\=3D'((tramp-parse-sconfig \"/etc/ssh_config\") (tramp-parse-sconfig \"~/.ssh/config\"))) (fn METHOD FUNCTION-LIST)") (autoload 'tramp-register-foreign-file-name-handler "tramp" "\ Register (FUNC . HANDLER) in `tramp-foreign-file-name-handler-alist'. FUNC is the function, which takes a dissected filename and determines whether HANDLER is to be called. Add operations defined in `HANDLER-alist' to `tramp-file-name-handler'. (fn FUNC HANDLER &optional APPEND)") (autoload 'tramp-active-command-completion-p "tramp" "\ A predicate for Tramp interactive commands. They are completed by `M-x TAB' only if there's an active connection or buf= fer. (fn SYMBOL BUFFER)") (defvar tramp-completion-multi-hop-methods nil "\ Methods for which to provide completions over multi-hop connections.") (custom-autoload 'tramp-completion-multi-hop-methods "tramp" t) ;;; Generated autoloads from tramp-adb.el (defvar tramp-adb-program "adb" "\ Name of the Android Debug Bridge program.") (custom-autoload 'tramp-adb-program "tramp-adb" t) (defconst tramp-adb-method "adb" "\ When this method name is used, forward all calls to Android Debug Bridge.") (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-adb-method (tramp= -login-program ,tramp-adb-program) (tramp-login-args (("-s" "%d") ("shell")= )) (tramp-direct-async t) (tramp-tmpdir "/data/local/tmp") (tramp-default-p= ort 5555))) (add-to-list 'tramp-default-host-alist `(,tramp-adb-method nil = "")) (tramp-set-completion-function tramp-adb-method '((tramp-adb-parse-dev= ice-names "")))) (defconst tramp-adb-file-name-handler-alist '((access-file . tramp-handle-a= ccess-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-direct= ory . tramp-handle-copy-directory) (copy-file . tramp-adb-handle-copy-file)= (delete-directory . tramp-adb-handle-delete-directory) (delete-file . tram= p-adb-handle-delete-file) (directory-file-name . tramp-handle-directory-fil= e-name) (directory-files . tramp-handle-directory-files) (directory-files-a= nd-attributes . tramp-adb-handle-directory-files-and-attributes) (dired-com= press-file . ignore) (dired-uncache . tramp-handle-dired-uncache) (exec-pat= h . tramp-adb-handle-exec-path) (expand-file-name . tramp-handle-expand-fil= e-name) (file-accessible-directory-p . tramp-handle-file-accessible-directo= ry-p) (file-acl . ignore) (file-attributes . tramp-adb-handle-file-attribut= es) (file-directory-p . tramp-handle-file-directory-p) (file-equal-p . tram= p-handle-file-equal-p) (file-executable-p . tramp-adb-handle-file-executabl= e-p) (file-exists-p . tramp-adb-handle-file-exists-p) (file-group-gid . tra= mp-handle-file-group-gid) (file-in-directory-p . tramp-handle-file-in-direc= tory-p) (file-local-copy . tramp-adb-handle-file-local-copy) (file-locked-p= . tramp-handle-file-locked-p) (file-modes . tramp-handle-file-modes) (file= -name-all-completions . tramp-adb-handle-file-name-all-completions) (file-n= ame-as-directory . tramp-handle-file-name-as-directory) (file-name-case-ins= ensitive-p . tramp-handle-file-name-case-insensitive-p) (file-name-completi= on . tramp-handle-file-name-completion) (file-name-directory . tramp-handle= -file-name-directory) (file-name-nondirectory . tramp-handle-file-name-nond= irectory) (file-newer-than-file-p . tramp-handle-file-newer-than-file-p) (f= ile-notify-add-watch . tramp-handle-file-notify-add-watch) (file-notify-rm-= watch . tramp-handle-file-notify-rm-watch) (file-notify-valid-p . tramp-han= dle-file-notify-valid-p) (file-ownership-preserved-p . ignore) (file-readab= le-p . tramp-adb-handle-file-readable-p) (file-regular-p . tramp-handle-fil= e-regular-p) (file-remote-p . tramp-handle-file-remote-p) (file-selinux-con= text . tramp-handle-file-selinux-context) (file-symlink-p . tramp-handle-fi= le-symlink-p) (file-system-info . tramp-adb-handle-file-system-info) (file-= truename . tramp-handle-file-truename) (file-user-uid . tramp-handle-file-u= ser-uid) (file-writable-p . tramp-adb-handle-file-writable-p) (find-backup-= file-name . tramp-handle-find-backup-file-name) (insert-directory . tramp-h= andle-insert-directory) (insert-file-contents . tramp-handle-insert-file-co= ntents) (list-system-processes . tramp-handle-list-system-processes) (load = . tramp-handle-load) (lock-file . tramp-handle-lock-file) (make-auto-save-f= ile-name . tramp-handle-make-auto-save-file-name) (make-directory . tramp-a= db-handle-make-directory) (make-directory-internal . ignore) (make-lock-fil= e-name . tramp-handle-make-lock-file-name) (make-nearby-temp-file . tramp-h= andle-make-nearby-temp-file) (make-process . tramp-adb-handle-make-process)= (make-symbolic-link . tramp-handle-make-symbolic-link) (memory-info . tram= p-handle-memory-info) (process-attributes . tramp-handle-process-attributes= ) (process-file . tramp-adb-handle-process-file) (rename-file . tramp-adb-h= andle-rename-file) (set-file-acl . ignore) (set-file-modes . tramp-adb-hand= le-set-file-modes) (set-file-selinux-context . ignore) (set-file-times . tr= amp-adb-handle-set-file-times) (set-visited-file-modtime . tramp-handle-set= -visited-file-modtime) (shell-command . tramp-handle-shell-command) (start-= file-process . tramp-handle-start-file-process) (substitute-in-file-name . = tramp-handle-substitute-in-file-name) (temporary-file-directory . tramp-han= dle-temporary-file-directory) (tramp-get-home-directory . ignore) (tramp-ge= t-remote-gid . tramp-adb-handle-get-remote-gid) (tramp-get-remote-groups . = tramp-adb-handle-get-remote-groups) (tramp-get-remote-uid . tramp-adb-handl= e-get-remote-uid) (tramp-set-file-uid-gid . ignore) (unhandled-file-name-di= rectory . ignore) (unlock-file . tramp-handle-unlock-file) (vc-registered .= ignore) (verify-visited-file-modtime . tramp-handle-verify-visited-file-mo= dtime) (write-region . tramp-adb-handle-write-region)) "\ Alist of handler functions for Tramp ADB method.") (defsubst tramp-adb-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for ADB." (and-let* ((vec (tramp-ensure-dis= sected-file-name vec-or-filename)) ((string=3D (tramp-file-name-method vec)= tramp-adb-method))))) (autoload 'tramp-adb-file-name-handler "tramp-adb" "\ Invoke the ADB handler for OPERATION. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-adb-= file-name-p #'tramp-adb-file-name-handler)) (autoload 'tramp-adb-parse-device-names "tramp-adb" "\ Return a list of (nil host) tuples allowed to access. (fn IGNORE)") ;;; Generated autoloads from tramp-androidsu.el (defconst tramp-androidsu-method "androidsu" "\ When this method name is used, forward all calls to su.") (defvar tramp-androidsu-mount-global-namespace t "\ When non-nil, browse files from within the global mount namespace. On systems that assign each application a unique view of the filesystem by executing them within individual mount namespaces and thus conceal each application's data directories from others, invoke `su' with the option `-mm' in order for the shell launched to run within the global mount namespace, so that Tramp may edit files belonging to any and all applications.") (custom-autoload 'tramp-androidsu-mount-global-namespace "tramp-androidsu" = t) (defvar tramp-androidsu-remote-path '("/system/bin" "/system/xbin") "\ Directories in which to search for transfer programs and the like.") (custom-autoload 'tramp-androidsu-remote-path "tramp-androidsu" t) (defconst tramp-androidsu-local-shell-name "/system/bin/sh" "\ Name of the local shell on Android.") (defconst tramp-androidsu-local-tmp-directory "/data/local/tmp" "\ Name of the local temporary directory on Android.") (autoload 'tramp-enable-androidsu-method "tramp-androidsu" "\ Enable \"androidsu\" method.") (tramp--with-startup (when (eq system-type 'android) (tramp-enable-androids= u-method))) (defconst tramp-androidsu-file-name-handler-alist '((access-file . tramp-ha= ndle-access-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-= directory . tramp-handle-copy-directory) (copy-file . tramp-androidsu-handl= e-copy-file) (delete-directory . tramp-androidsu-handle-delete-directory) (= delete-file . tramp-androidsu-handle-delete-file) (directory-file-name . tr= amp-handle-directory-file-name) (directory-files . tramp-handle-directory-f= iles) (directory-files-and-attributes . tramp-androidsu-handle-directory-fi= les-and-attributes) (dired-compress-file . ignore) (dired-uncache . tramp-h= andle-dired-uncache) (exec-path . tramp-androidsu-handle-exec-path) (expand= -file-name . tramp-handle-expand-file-name) (file-accessible-directory-p . = tramp-handle-file-accessible-directory-p) (file-acl . ignore) (file-attribu= tes . tramp-androidsu-handle-file-attributes) (file-directory-p . tramp-han= dle-file-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-exec= utable-p . tramp-androidsu-handle-file-executable-p) (file-exists-p . tramp= -androidsu-handle-file-exists-p) (file-group-gid . tramp-handle-file-group-= gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file-local-c= opy . tramp-androidsu-handle-file-local-copy) (file-locked-p . tramp-handle= -file-locked-p) (file-modes . tramp-handle-file-modes) (file-name-all-compl= etions . tramp-androidsu-handle-file-name-all-completions) (file-name-as-di= rectory . tramp-handle-file-name-as-directory) (file-name-case-insensitive-= p . tramp-handle-file-name-case-insensitive-p) (file-name-completion . tram= p-handle-file-name-completion) (file-name-directory . tramp-handle-file-nam= e-directory) (file-name-nondirectory . tramp-handle-file-name-nondirectory)= (file-newer-than-file-p . tramp-handle-file-newer-than-file-p) (file-notif= y-add-watch . tramp-handle-file-notify-add-watch) (file-notify-rm-watch . t= ramp-handle-file-notify-rm-watch) (file-notify-valid-p . tramp-handle-file-= notify-valid-p) (file-ownership-preserved-p . ignore) (file-readable-p . tr= amp-androidsu-handle-file-readable-p) (file-regular-p . tramp-handle-file-r= egular-p) (file-remote-p . tramp-handle-file-remote-p) (file-selinux-contex= t . tramp-handle-file-selinux-context) (file-symlink-p . tramp-handle-file-= symlink-p) (file-system-info . tramp-androidsu-handle-file-system-info) (fi= le-truename . tramp-handle-file-truename) (file-user-uid . tramp-handle-fil= e-user-uid) (file-writable-p . tramp-androidsu-handle-file-writable-p) (fin= d-backup-file-name . tramp-handle-find-backup-file-name) (insert-directory = . tramp-handle-insert-directory) (insert-file-contents . tramp-handle-inser= t-file-contents) (list-system-processes . tramp-handle-list-system-processe= s) (load . tramp-handle-load) (lock-file . tramp-handle-lock-file) (make-au= to-save-file-name . tramp-handle-make-auto-save-file-name) (make-directory = . tramp-androidsu-handle-make-directory) (make-directory-internal . ignore)= (make-lock-file-name . tramp-handle-make-lock-file-name) (make-nearby-temp= -file . tramp-handle-make-nearby-temp-file) (make-process . tramp-androidsu= -handle-make-process) (make-symbolic-link . tramp-androidsu-handle-make-sym= bolic-link) (memory-info . tramp-handle-memory-info) (process-attributes . = tramp-handle-process-attributes) (process-file . tramp-androidsu-handle-pro= cess-file) (rename-file . tramp-androidsu-handle-rename-file) (set-file-acl= . ignore) (set-file-modes . tramp-androidsu-handle-set-file-modes) (set-fi= le-selinux-context . ignore) (set-file-times . tramp-androidsu-handle-set-f= ile-times) (set-visited-file-modtime . tramp-handle-set-visited-file-modtim= e) (shell-command . tramp-handle-shell-command) (start-file-process . tramp= -handle-start-file-process) (substitute-in-file-name . tramp-handle-substit= ute-in-file-name) (temporary-file-directory . tramp-handle-temporary-file-d= irectory) (tramp-get-home-directory . ignore) (tramp-get-remote-gid . tramp= -androidsu-handle-get-remote-gid) (tramp-get-remote-groups . tramp-androids= u-handle-get-remote-groups) (tramp-get-remote-uid . tramp-androidsu-handle-= get-remote-uid) (tramp-set-file-uid-gid . ignore) (unhandled-file-name-dire= ctory . ignore) (unlock-file . tramp-handle-unlock-file) (vc-registered . i= gnore) (verify-visited-file-modtime . tramp-handle-verify-visited-file-modt= ime) (write-region . tramp-androidsu-handle-write-region)) "\ Alist of Tramp handler functions for superuser sessions on Android.") (defsubst tramp-androidsu-file-name-p (vec-or-filename) "\ Check whether VEC-OR-FILENAME is for the `androidsu' method." (and-let* ((v= ec (tramp-ensure-dissected-file-name vec-or-filename)) ((equal (tramp-file-= name-method vec) tramp-androidsu-method))))) (autoload 'tramp-androidsu-file-name-handler "tramp-androidsu" "\ Invoke the `androidsu' handler for OPERATION. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-andr= oidsu-file-name-p #'tramp-androidsu-file-name-handler)) ;;; Generated autoloads from tramp-archive.el (defconst tramp-archive-file-name-regexp (eval-when-compile (ignore-errors = (tramp-archive-autoload-file-name-regexp))) "\ Regular expression matching archive file names.") (defconst tramp-archive-method "archive" "\ Method name for archives in GVFS.") (defconst tramp-archive-file-name-handler-alist '((access-file . tramp-arch= ive-handle-access-file) (add-name-to-file . tramp-archive-handle-not-implem= ented) (copy-file . tramp-archive-handle-copy-file) (delete-directory . tra= mp-archive-handle-not-implemented) (delete-file . tramp-archive-handle-not-= implemented) (directory-file-name . tramp-archive-handle-directory-file-nam= e) (directory-files . tramp-archive-handle-directory-files) (directory-file= s-and-attributes . tramp-handle-directory-files-and-attributes) (dired-comp= ress-file . tramp-archive-handle-not-implemented) (dired-uncache . tramp-ar= chive-handle-dired-uncache) (exec-path . ignore) (file-accessible-directory= -p . tramp-handle-file-accessible-directory-p) (file-acl . ignore) (file-at= tributes . tramp-archive-handle-file-attributes) (file-directory-p . tramp-= handle-file-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-e= xecutable-p . tramp-archive-handle-file-executable-p) (file-exists-p . tram= p-archive-handle-file-exists-p) (file-group-gid . tramp-archive-handle-file= -group-gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file-= local-copy . tramp-archive-handle-file-local-copy) (file-locked-p . ignore)= (file-modes . tramp-handle-file-modes) (file-name-all-completions . tramp-= archive-handle-file-name-all-completions) (file-name-case-insensitive-p . i= gnore) (file-name-completion . tramp-handle-file-name-completion) (file-new= er-than-file-p . tramp-handle-file-newer-than-file-p) (file-notify-add-watc= h . ignore) (file-notify-rm-watch . ignore) (file-notify-valid-p . ignore) = (file-ownership-preserved-p . ignore) (file-readable-p . tramp-archive-hand= le-file-readable-p) (file-regular-p . tramp-handle-file-regular-p) (file-se= linux-context . tramp-handle-file-selinux-context) (file-symlink-p . tramp-= archive-handle-file-symlink-p) (file-system-info . tramp-archive-handle-fil= e-system-info) (file-truename . tramp-archive-handle-file-truename) (file-u= ser-uid . tramp-archive-handle-file-user-uid) (file-writable-p . ignore) (f= ind-backup-file-name . ignore) (insert-directory . tramp-archive-handle-ins= ert-directory) (insert-file-contents . tramp-archive-handle-insert-file-con= tents) (list-system-processes . ignore) (load . tramp-archive-handle-load) = (lock-file . ignore) (make-auto-save-file-name . ignore) (make-directory . = tramp-archive-handle-not-implemented) (make-directory-internal . ignore) (m= ake-lock-file-name . ignore) (make-nearby-temp-file . tramp-handle-make-nea= rby-temp-file) (make-process . ignore) (make-symbolic-link . tramp-archive-= handle-not-implemented) (memory-info . ignore) (process-attributes . ignore= ) (process-file . ignore) (rename-file . tramp-archive-handle-not-implement= ed) (set-file-acl . ignore) (set-file-modes . tramp-archive-handle-not-impl= emented) (set-file-selinux-context . ignore) (set-file-times . tramp-archiv= e-handle-not-implemented) (set-visited-file-modtime . tramp-handle-set-visi= ted-file-modtime) (shell-command . tramp-archive-handle-not-implemented) (s= tart-file-process . tramp-archive-handle-not-implemented) (temporary-file-d= irectory . tramp-archive-handle-temporary-file-directory) (tramp-get-home-d= irectory . ignore) (tramp-get-remote-gid . ignore) (tramp-get-remote-groups= . ignore) (tramp-get-remote-uid . ignore) (tramp-set-file-uid-gid . ignore= ) (unhandled-file-name-directory . ignore) (unlock-file . ignore) (vc-regis= tered . ignore) (verify-visited-file-modtime . tramp-handle-verify-visited-= file-modtime) (write-region . tramp-archive-handle-not-implemented)) "\ Alist of handler functions for file archive method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defun tramp-archive-run-real-handler (operation args) "\ Invoke normal file name handler for OPERATION. First arg specifies the OPERATION, second arg ARGS is a list of arguments to pass to the OPERATION." (let* ((inhibit-file-name-handlers `(t= ramp-archive-file-name-handler \, (and (eq inhibit-file-name-operation oper= ation) inhibit-file-name-handlers))) (inhibit-file-name-operation operation= )) (apply operation args))) (autoload 'tramp-archive-file-name-handler "tramp-archive" "\ Invoke the file archive related OPERATION. First arg specifies the OPERATION, second arg ARGS is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (autoload 'tramp-archive-file-name-p "tramp-archive" "\ Return t if NAME is a string with archive file name syntax. (fn NAME)") ;;; Generated autoloads from tramp-cache.el (defvar tramp-cache-data (make-hash-table :test #'equal) "\ Hash table for remote files properties.") (defvar tramp-connection-properties nil "\ List of static connection properties. Every entry has the form (REGEXP PROPERTY VALUE). The regexp matches remote file names. It can be nil. PROPERTY is a string, and VALUE the corresponding value. They are used, if there is no matching entry for PROPERTY in `tramp-cache-data'. PROPERTY can also be a string representing a parameter in `tramp-methods'. For more details see the Info node `(tramp) Predefined connection information'.") (custom-autoload 'tramp-connection-properties "tramp-cache" t) (defvar tramp-persistency-file-name (locate-user-emacs-file "tramp") "\ File which keeps connection history for Tramp connections.") (custom-autoload 'tramp-persistency-file-name "tramp-cache" t) (defconst tramp-cache-version (make-tramp-file-name :method "cache") "\ Virtual connection vector for Tramp version.") (defconst tramp-cache-undefined 'undef "\ The symbol marking undefined hash keys and values.") (autoload 'tramp-get-hash-table "tramp-cache" "\ Return the hash table for KEY. If it doesn't exist yet, it is created and initialized with matching entries of `tramp-connection-properties'. If KEY is `tramp-cache-undefined', don't create anything, and return nil. (fn KEY)") (autoload 'tramp-get-file-property "tramp-cache" "\ Get the PROPERTY of FILE from the cache context of KEY. Return DEFAULT if not set. (fn KEY FILE PROPERTY &optional DEFAULT)") (autoload 'tramp-set-file-property "tramp-cache" "\ Set the PROPERTY of FILE to VALUE, in the cache context of KEY. Return VALUE. (fn KEY FILE PROPERTY VALUE)") (autoload 'tramp-file-property-p "tramp-cache" "\ Check whether PROPERTY of FILE is defined in the cache context of KEY. (fn KEY FILE PROPERTY)") (autoload 'tramp-flush-file-property "tramp-cache" "\ Remove PROPERTY of FILE in the cache context of KEY. (fn KEY FILE PROPERTY)") (autoload 'tramp-flush-file-properties "tramp-cache" "\ Remove all properties of FILE in the cache context of KEY. (fn KEY FILE)") (autoload 'tramp-flush-directory-properties "tramp-cache" "\ Remove all properties of DIRECTORY in the cache context of KEY. Remove also properties of all files in subdirectories. (fn KEY DIRECTORY)") (autoload 'tramp-flush-file-function "tramp-cache" "\ Flush all Tramp cache properties from `buffer-file-name'. This is suppressed for temporary buffers.") (autoload 'with-tramp-file-property "tramp-cache" "\ Check in Tramp cache for PROPERTY, otherwise execute BODY and set cache. FILE must be a local file name on a connection identified via KEY. (fn KEY FILE PROPERTY &rest BODY)" nil t) (function-put 'with-tramp-file-property 'lisp-indent-function 3) (autoload 'with-tramp-saved-file-property "tramp-cache" "\ Save PROPERTY, run BODY, reset PROPERTY. Preserve timestamps. (fn KEY FILE PROPERTY &rest BODY)" nil t) (function-put 'with-tramp-saved-file-property 'lisp-indent-function 3) (autoload 'with-tramp-saved-file-properties "tramp-cache" "\ Save PROPERTIES, run BODY, reset PROPERTIES. PROPERTIES is a list of file properties (strings). Preserve timestamps. (fn KEY FILE PROPERTIES &rest BODY)" nil t) (function-put 'with-tramp-saved-file-properties 'lisp-indent-function 3) (autoload 'tramp-get-connection-property "tramp-cache" "\ Get the named PROPERTY for the connection. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. If KEY is `tramp-cache-undefined', or if the value is not set for the connection, return DEFAULT. (fn KEY PROPERTY &optional DEFAULT)") (autoload 'tramp-set-connection-property "tramp-cache" "\ Set the named PROPERTY of a connection to VALUE. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. If KEY is `tramp-cache-undefined', nothing is set. PROPERTY is set persistent when KEY is a `tramp-file-name' structure. Return VALUE. (fn KEY PROPERTY VALUE)") (autoload 'tramp-connection-property-p "tramp-cache" "\ Check whether named PROPERTY of a connection is defined. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. (fn KEY PROPERTY)") (autoload 'tramp-flush-connection-property "tramp-cache" "\ Remove the named PROPERTY of a connection identified by KEY. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. PROPERTY is set persistent when KEY is a `tramp-file-name' structure. (fn KEY PROPERTY)") (autoload 'tramp-flush-connection-properties "tramp-cache" "\ Remove all properties identified by KEY. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. (fn KEY)") (autoload 'with-tramp-connection-property "tramp-cache" "\ Check in Tramp for property PROPERTY, otherwise execute BODY and set. (fn KEY PROPERTY &rest BODY)" nil t) (function-put 'with-tramp-connection-property 'lisp-indent-function 2) (autoload 'with-tramp-saved-connection-property "tramp-cache" "\ Save PROPERTY, run BODY, reset PROPERTY. (fn KEY PROPERTY &rest BODY)" nil t) (function-put 'with-tramp-saved-connection-property 'lisp-indent-function 2) (autoload 'with-tramp-saved-connection-properties "tramp-cache" "\ Save PROPERTIES, run BODY, reset PROPERTIES. PROPERTIES is a list of file properties (strings). (fn KEY PROPERTIES &rest BODY)" nil t) (function-put 'with-tramp-saved-connection-properties 'lisp-indent-function= 2) (autoload 'tramp-cache-print "tramp-cache" "\ Print hash table TABLE. (fn TABLE)") (autoload 'tramp-list-connections "tramp-cache" "\ Return all active `tramp-file-name' structs according to `tramp-cache-data'= .") (defvar tramp-completion-use-cache t "\ Whether to use the Tramp cache for completion of user and host names. Set it to nil if there are invalid entries in the cache, for example if the host configuration changes often, or if you plug your laptop to different networks frequently.") (custom-autoload 'tramp-completion-use-cache "tramp-cache" t) (autoload 'tramp-parse-connection-properties "tramp-cache" "\ Return a list of (user host) tuples allowed to access for METHOD. This function is added always in `tramp-get-completion-function' for all methods. Resulting data are derived from connection history. (fn METHOD)") (defvar tramp-cache-read-persistent-data (or init-file-user site-run-file) = "\ Whether to read persistent data at startup time.") ;;; Generated autoloads from tramp-cmds.el (autoload 'tramp-change-syntax "tramp-cmds" "\ Change Tramp syntax. SYNTAX can be one of the symbols `default' (default), `simplified' (ange-ftp like) or `separate' (XEmacs like). (fn &optional SYNTAX)" t) (autoload 'tramp-enable-method "tramp-cmds" "\ Enable optional METHOD if possible. (fn METHOD)" t) (autoload 'tramp-list-tramp-buffers "tramp-cmds" "\ Return a list of all Tramp connection buffers.") (autoload 'tramp-list-remote-buffers "tramp-cmds" "\ Return a list of remote buffers, excluding internal Tramp buffers. A buffer is considered remote if either its `default-directory' or `buffer-file-name' is a remote file name.") (autoload 'tramp-list-remote-buffer-connections "tramp-cmds" "\ Return a list of all remote buffer connections. A buffer is considered remote if either its `default-directory' or `buffer-file-name' is a remote file name.") (defvar tramp-cleanup-connection-hook nil "\ List of functions to be called after Tramp connection is cleaned up. Each function is called with the current vector as argument.") (autoload 'tramp-cleanup-connection "tramp-cmds" "\ Flush all connection related objects. This includes password cache, file cache, connection cache, buffers, processes. KEEP-DEBUG non-nil preserves the debug and trace buffer. KEEP-PASSWORD non-nil preserves the password cache. KEEP-PROCESSES non-nil preserves the asynchronous processes. When called interactively, a Tramp connection has to be selected. (fn VEC &optional KEEP-DEBUG KEEP-PASSWORD KEEP-PROCESSES)" t) (function-put 'tramp-cleanup-connection 'completion-predicate #'tramp-activ= e-command-completion-p) (autoload 'tramp-cleanup-this-connection "tramp-cmds" "\ Flush all connection related objects of the current buffer's connection." t) (function-put 'tramp-cleanup-this-connection 'completion-predicate #'tramp-= command-completion-p) (defvar tramp-cleanup-all-connections-hook nil "\ List of functions to be called after all Tramp connections are cleaned up.") (autoload 'tramp-cleanup-all-connections "tramp-cmds" "\ Flush all Tramp internal objects. This includes password cache, file cache, connection cache, buffers." t) (function-put 'tramp-cleanup-all-connections 'completion-predicate #'tramp-= active-command-completion-p) (autoload 'tramp-taint-remote-process-buffer "tramp-cmds" "\ Mark buffer as related to remote processes. (fn BUFFER)") (autoload 'tramp-cleanup-some-buffers "tramp-cmds" "\ Kill some remote buffers. A buffer is killed when it has a remote `default-directory', and one of the functions in `tramp-cleanup-some-buffers-hook' returns non-nil." t) (function-put 'tramp-cleanup-some-buffers 'completion-predicate #'tramp-act= ive-command-completion-p) (autoload 'tramp-cleanup-all-buffers "tramp-cmds" "\ Kill all remote buffers." t) (function-put 'tramp-cleanup-all-buffers 'completion-predicate #'tramp-acti= ve-command-completion-p) (autoload 'tramp-cleanup-bufferless-connections "tramp-cmds" "\ Flush connection-related objects for which no buffer exists. A bufferless connection is one for which no live buffer's `buffer-file-name' or `default-directory' is associated with that connection, except for Tramp internal buffers. Display a message of cleaned-up connections." t) (autoload 'tramp-rename-files "tramp-cmds" "\ Replace in all buffers the visiting file name from SOURCE to TARGET. SOURCE is a remote directory name, which could contain also a localname part. TARGET is the directory name SOURCE is replaced with. Often, TARGET is a remote directory name on another host, but it can also be a local directory name. If TARGET has no local part, the local part from SOURCE is used. If TARGET is nil, it is selected according to the first match in `tramp-default-rename-alist'. If called interactively, this match is offered as initial value for selection. On all buffers, which have a `buffer-file-name' matching SOURCE, this name is modified by replacing SOURCE with TARGET. This is applied by calling `set-visited-file-name'. The new `buffer-file-name' is prompted for modification in the minibuffer. The buffers are marked modified, and must be saved explicitly. If user option `tramp-confirm-rename-file-names' is nil, changing the file name happens without confirmation. This requires a matching entry in `tramp-default-rename-alist'. Remote buffers related to the remote connection identified by SOURCE, which are not visiting files, or which are visiting files not matching SOURCE, are not modified. Interactively, TARGET is selected from `tramp-default-rename-alist' without confirmation if the prefix argument is non-nil. The remote connection identified by SOURCE is flushed by `tramp-cleanup-connection'. (fn SOURCE TARGET)" t) (function-put 'tramp-rename-files 'completion-predicate #'tramp-active-comm= and-completion-p) (autoload 'tramp-rename-these-files "tramp-cmds" "\ Replace visiting file names to TARGET. The current buffer must be related to a remote connection. In all buffers, which are visiting a file with the same directory name, the buffer file name is changed. Interactively, TARGET is selected from `tramp-default-rename-alist' without confirmation if the prefix argument is non-nil. For details, see `tramp-rename-files'. (fn TARGET)" t) (function-put 'tramp-rename-these-files 'completion-predicate #'tramp-comma= nd-completion-p) (autoload 'tramp-recompile-elpa-command-completion-p "tramp-cmds" "\ A predicate for `tramp-recompile-elpa'. It is completed by `M-x TAB' only if package.el is loaded, and Tramp is an installed ELPA package. (fn SYMBOL BUFFER)") (autoload 'tramp-recompile-elpa "tramp-cmds" "\ Recompile the installed Tramp ELPA package. This is needed if there are compatibility problems." t) (function-put 'tramp-recompile-elpa 'completion-predicate #'tramp-recompile= -elpa-command-completion-p) (autoload 'tramp-version "tramp-cmds" "\ Print version number of tramp.el in echo area or current buffer. (fn ARG)" t) (autoload 'tramp-bug "tramp-cmds" "\ Submit a bug report to the Tramp developers." t) ;;; Generated autoloads from tramp-container.el (defvar tramp-docker-program "docker" "\ Name of the Docker client program.") (custom-autoload 'tramp-docker-program "tramp-container" t) (defvar tramp-podman-program "podman" "\ Name of the Podman client program.") (custom-autoload 'tramp-podman-program "tramp-container" t) (defvar tramp-kubernetes-program "kubectl" "\ Name of the Kubernetes client program.") (custom-autoload 'tramp-kubernetes-program "tramp-container" t) (defvar tramp-toolbox-program "toolbox" "\ Name of the Toolbox client program.") (custom-autoload 'tramp-toolbox-program "tramp-container" t) (defvar tramp-distrobox-program "distrobox" "\ Name of the Distrobox client program.") (custom-autoload 'tramp-distrobox-program "tramp-container" t) (defvar tramp-flatpak-program "flatpak" "\ Name of the Flatpak client program.") (custom-autoload 'tramp-flatpak-program "tramp-container" t) (defvar tramp-apptainer-program "apptainer" "\ Name of the Apptainer client program.") (custom-autoload 'tramp-apptainer-program "tramp-container" t) (defconst tramp-docker-method "docker" "\ Tramp method name to connect to Docker containers.") (defconst tramp-dockercp-method "dockercp" "\ Tramp method name to connect to Docker containers. This is for out-of-band connections.") (defconst tramp-podman-method "podman" "\ Tramp method name to connect to Podman containers.") (defconst tramp-podmancp-method "podmancp" "\ Tramp method name to connect to Podman containers. This is for out-of-band connections.") (defconst tramp-kubernetes-method "kubernetes" "\ Tramp method name to connect to Kubernetes containers.") (defconst tramp-toolbox-method "toolbox" "\ Tramp method name to connect to Toolbox containers.") (defconst tramp-distrobox-method "distrobox" "\ Tramp method name to connect to Distrobox containers.") (defconst tramp-flatpak-method "flatpak" "\ Tramp method name to connect to Flatpak sandboxes.") (defconst tramp-apptainer-method "apptainer" "\ Tramp method name to connect to Apptainer instances.") (defconst tramp-nspawn-method "nspawn" "\ Tramp method name to connect to systemd-nspawn containers.") (autoload 'tramp-skeleton-completion-function "tramp-container" "\ Skeleton for `tramp-*-completion-function' with multi-hop support. BODY is the backend specific code. (fn METHOD &rest BODY)" nil t) (function-put 'tramp-skeleton-completion-function 'lisp-indent-function 1) (autoload 'tramp-container--completion-function "tramp-container" "\ List running containers available for connection. METHOD is the Tramp method to be used for \"ps\", either `tramp-docker-method', `tramp-dockercp-method', `tramp-podman-method', or `tramp-podmancp-method'. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-kubernetes--completion-function "tramp-container" "\ List Kubernetes pods available for connection. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-kubernetes--container "tramp-container" "\ Extract the container name from a kubernetes host name in VEC. (fn VEC)") (autoload 'tramp-kubernetes--pod "tramp-container" "\ Extract the pod name from a kubernetes host name in VEC. (fn VEC)") (autoload 'tramp-kubernetes--namespace "tramp-container" "\ Extract the namespace from a kubernetes host name in VEC. Use `tramp-kubernetes-namespace' otherwise. (fn VEC)") (autoload 'tramp-kubernetes--context-namespace "tramp-container" "\ The kubectl options for context and namespace as string. (fn VEC)") (autoload 'tramp-toolbox--completion-function "tramp-container" "\ List Toolbox containers available for connection. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-distrobox--completion-function "tramp-container" "\ List Distrobox containers available for connection. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-flatpak--completion-function "tramp-container" "\ List Flatpak sandboxes available for connection. It returns application IDs or, in case there is no application ID, instance IDs. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-apptainer--completion-function "tramp-container" "\ List Apptainer instances available for connection. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (defvar tramp-default-remote-shell) (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-docker-method (tr= amp-login-program ,tramp-docker-program) (tramp-login-args (("exec") ("-it"= ) ("-u" "%u") ("-e" ,(format "TERM=3D%s" tramp-terminal-type)) ("%h") ("%l"= ))) (tramp-direct-async (,tramp-default-remote-shell "-c")) (tramp-remote-s= hell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (tramp-= remote-shell-args ("-i" "-c")) (tramp-completion-use-cache nil))) (add-to-l= ist 'tramp-methods `(,tramp-dockercp-method (tramp-login-program ,tramp-doc= ker-program) (tramp-login-args (("exec") ("-it") ("-u" "%u") ("-e" ,(format= "TERM=3D%s" tramp-terminal-type)) ("%h") ("%l"))) (tramp-direct-async (,tr= amp-default-remote-shell "-c")) (tramp-remote-shell ,tramp-default-remote-s= hell) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-i" "-c"= )) (tramp-copy-program ,tramp-docker-program) (tramp-copy-args (("cp"))) (t= ramp-copy-file-name (("%h" ":") ("%f"))) (tramp-copy-recursive t) (tramp-co= mpletion-use-cache nil))) (add-to-list 'tramp-methods `(,tramp-podman-metho= d (tramp-login-program ,tramp-podman-program) (tramp-login-args (("exec") (= "-it") ("-u" "%u") ("-e" ,(format "TERM=3D%s" tramp-terminal-type)) ("%h") = ("%l"))) (tramp-direct-async (,tramp-default-remote-shell "-c")) (tramp-rem= ote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (t= ramp-remote-shell-args ("-i" "-c")) (tramp-completion-use-cache nil))) (add= -to-list 'tramp-methods `(,tramp-podmancp-method (tramp-login-program ,tram= p-podman-program) (tramp-login-args (("exec") ("-it") ("-u" "%u") ("-e" ,(f= ormat "TERM=3D%s" tramp-terminal-type)) ("%h") ("%l"))) (tramp-direct-async= (,tramp-default-remote-shell "-c")) (tramp-remote-shell ,tramp-default-rem= ote-shell) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-i"= "-c")) (tramp-copy-program ,tramp-podman-program) (tramp-copy-args (("cp")= )) (tramp-copy-file-name (("%h" ":") ("%f"))) (tramp-copy-recursive t) (tra= mp-completion-use-cache nil))) (add-to-list 'tramp-methods `(,tramp-kuberne= tes-method (tramp-login-program ,tramp-kubernetes-program) (tramp-login-arg= s (("%x") ("exec") ("-c" "%a") ("%h") ("-it") ("--") ("%l"))) (tramp-direct= -async (,tramp-default-remote-shell "-c")) (tramp-remote-shell ,tramp-defau= lt-remote-shell) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args= ("-i" "-c")) (tramp-completion-use-cache nil))) (add-to-list 'tramp-comple= tion-multi-hop-methods tramp-docker-method) (add-to-list 'tramp-completion-= multi-hop-methods tramp-podman-method) (add-to-list 'tramp-completion-multi= -hop-methods tramp-kubernetes-method) (tramp-set-completion-function tramp-= docker-method `((tramp-container--completion-function ,tramp-docker-method)= )) (tramp-set-completion-function tramp-dockercp-method `((tramp-container-= -completion-function ,tramp-dockercp-method))) (tramp-set-completion-functi= on tramp-podman-method `((tramp-container--completion-function ,tramp-podma= n-method))) (tramp-set-completion-function tramp-podmancp-method `((tramp-c= ontainer--completion-function ,tramp-podmancp-method))) (tramp-set-completi= on-function tramp-kubernetes-method `((tramp-kubernetes--completion-functio= n ,tramp-kubernetes-method))) (defconst tramp-kubernetes-connection-local-d= efault-variables '((tramp-config-check . tramp-kubernetes--current-context-= data) (tramp-extra-expand-args 97 (tramp-kubernetes--container (car tramp-c= urrent-connection)) 104 (tramp-kubernetes--pod (car tramp-current-connectio= n)) 120 (tramp-kubernetes--context-namespace (car tramp-current-connection)= ))) "Default connection-local variables for remote kubernetes connections."= ) (connection-local-set-profile-variables 'tramp-kubernetes-connection-loca= l-default-profile tramp-kubernetes-connection-local-default-variables) (con= nection-local-set-profiles `(:application tramp :protocol ,tramp-kubernetes= -method) 'tramp-kubernetes-connection-local-default-profile)) (autoload 'tramp-enable-toolbox-method "tramp-container" "\ Enable connection to Toolbox containers.") (autoload 'tramp-enable-distrobox-method "tramp-container" "\ Enable connection to Distrobox containers.") (autoload 'tramp-enable-flatpak-method "tramp-container" "\ Enable connection to Flatpak sandboxes.") (autoload 'tramp-enable-apptainer-method "tramp-container" "\ Enable connection to Apptainer instances.") (autoload 'tramp-enable-nspawn-method "tramp-container" "\ Enable connection to nspawn containers.") ;;; Generated autoloads from tramp-crypt.el (defvar tramp-crypt-enabled nil "\ Non-nil when encryption support is available.") (defconst tramp-crypt-encfs-config ".encfs6.xml" "\ Encfs configuration file name.") (defvar tramp-crypt-directories nil "\ List of encrypted remote directories.") (defsubst tramp-crypt-file-name-p (name) "\ Return the encrypted remote directory NAME belongs to. If NAME doesn't belong to an encrypted remote directory, return nil." (catc= h 'crypt-file-name-p (and tramp-crypt-enabled (stringp name) (not (file-nam= e-quoted-p name)) (not (string-suffix-p tramp-crypt-encfs-config name)) (no= t (string-prefix-p ".#" (file-name-nondirectory name))) (dolist (dir tramp-= crypt-directories) (and (string-prefix-p dir (file-name-as-directory (expan= d-file-name name))) (throw 'crypt-file-name-p dir)))))) (defconst tramp-crypt-file-name-handler-alist '((abbreviate-file-name . ide= ntity) (access-file . tramp-crypt-handle-access-file) (add-name-to-file . t= ramp-handle-add-name-to-file) (copy-directory . tramp-handle-copy-directory= ) (copy-file . tramp-crypt-handle-copy-file) (delete-directory . tramp-cryp= t-handle-delete-directory) (delete-file . tramp-crypt-handle-delete-file) (= directory-files . tramp-crypt-handle-directory-files) (directory-files-and-= attributes . tramp-handle-directory-files-and-attributes) (dired-compress-f= ile . ignore) (dired-uncache . tramp-handle-dired-uncache) (exec-path . ign= ore) (file-accessible-directory-p . tramp-handle-file-accessible-directory-= p) (file-acl . ignore) (file-attributes . tramp-crypt-handle-file-attribute= s) (file-directory-p . tramp-handle-file-directory-p) (file-equal-p . tramp= -handle-file-equal-p) (file-executable-p . tramp-crypt-handle-file-executab= le-p) (file-exists-p . tramp-crypt-handle-file-exists-p) (file-in-directory= -p . tramp-handle-file-in-directory-p) (file-local-copy . tramp-handle-file= -local-copy) (file-locked-p . tramp-crypt-handle-file-locked-p) (file-modes= . tramp-handle-file-modes) (file-name-all-completions . tramp-crypt-handle= -file-name-all-completions) (file-name-case-insensitive-p . ignore) (file-n= ame-completion . tramp-handle-file-name-completion) (file-newer-than-file-p= . tramp-handle-file-newer-than-file-p) (file-notify-add-watch . tramp-hand= le-file-notify-add-watch) (file-notify-rm-watch . tramp-handle-file-notify-= rm-watch) (file-notify-valid-p . tramp-handle-file-notify-valid-p) (file-ow= nership-preserved-p . tramp-crypt-handle-file-ownership-preserved-p) (file-= readable-p . tramp-crypt-handle-file-readable-p) (file-regular-p . tramp-ha= ndle-file-regular-p) (file-selinux-context . ignore) (file-symlink-p . tram= p-handle-file-symlink-p) (file-system-info . tramp-crypt-handle-file-system= -info) (file-writable-p . tramp-crypt-handle-file-writable-p) (find-backup-= file-name . tramp-handle-find-backup-file-name) (insert-directory . tramp-c= rypt-handle-insert-directory) (insert-file-contents . tramp-handle-insert-f= ile-contents) (list-system-processes . ignore) (load . tramp-handle-load) (= lock-file . tramp-crypt-handle-lock-file) (make-auto-save-file-name . tramp= -handle-make-auto-save-file-name) (make-directory . tramp-crypt-handle-make= -directory) (make-directory-internal . ignore) (make-lock-file-name . tramp= -handle-make-lock-file-name) (make-nearby-temp-file . tramp-handle-make-nea= rby-temp-file) (make-process . ignore) (make-symbolic-link . tramp-handle-m= ake-symbolic-link) (memory-info . ignore) (process-attributes . ignore) (pr= ocess-file . ignore) (rename-file . tramp-crypt-handle-rename-file) (set-fi= le-acl . ignore) (set-file-modes . tramp-crypt-handle-set-file-modes) (set-= file-selinux-context . ignore) (set-file-times . tramp-crypt-handle-set-fil= e-times) (set-visited-file-modtime . tramp-crypt-handle-set-visited-file-mo= dtime) (shell-command . ignore) (start-file-process . ignore) (temporary-fi= le-directory . tramp-handle-temporary-file-directory) (tramp-set-file-uid-g= id . tramp-crypt-handle-set-file-uid-gid) (unhandled-file-name-directory . = ignore) (unlock-file . tramp-crypt-handle-unlock-file) (vc-registered . ign= ore) (verify-visited-file-modtime . tramp-crypt-handle-verify-visited-file-= modtime) (write-region . tramp-handle-write-region)) "\ Alist of handler functions for crypt method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (autoload 'tramp-crypt-file-name-handler "tramp-crypt" "\ Invoke the encrypted remote file related OPERATION. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (defun tramp-register-crypt-file-name-handler nil "\ Add crypt file name handler to `file-name-handler-alist'." (when (and tramp= -crypt-enabled tramp-crypt-directories) (add-to-list 'file-name-handler-ali= st (cons tramp-file-name-regexp #'tramp-crypt-file-name-handler)) (put #'tr= amp-crypt-file-name-handler 'safe-magic t))) (autoload 'tramp-crypt-add-directory "tramp-crypt" "\ Mark expanded remote directory NAME for encryption. Files in that directory and all subdirectories will be encrypted before copying to, and decrypted after copying from that directory. File names will be also encrypted. (fn NAME)" t) ;;; Generated autoloads from tramp-ftp.el (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\ Reenable Ange-FTP, when Tramp is unloaded.") (defconst tramp-ftp-method "ftp" "\ When this method name is used, forward all calls to Ange-FTP.") (tramp--with-startup (add-to-list 'tramp-methods (cons tramp-ftp-method nil= )) (add-to-list 'tramp-default-method-alist (list (rx bos "ftp.") nil tramp= -ftp-method)) (add-to-list 'tramp-default-method-alist (list nil (rx bos (|= "anonymous" "ftp") eos) tramp-ftp-method)) (tramp-set-completion-function = tramp-ftp-method '((tramp-parse-netrc "~/.netrc")))) (autoload 'tramp-ftp-file-name-handler "tramp-ftp" "\ Invoke the Ange-FTP handler for OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (defsubst tramp-ftp-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME that should be forwarded to Ange-FTP." (and= -let* ((vec (tramp-ensure-dissected-file-name vec-or-filename)) ((string=3D= (tramp-file-name-method vec) tramp-ftp-method))))) (tramp--with-startup (add-to-list 'tramp-foreign-file-name-handler-alist (c= ons #'tramp-ftp-file-name-p #'tramp-ftp-file-name-handler))) ;;; Generated autoloads from tramp-fuse.el (defconst tramp-fuse-name-prefix "tramp-" "\ Prefix to use for temporary FUSE mount points.") ;;; Generated autoloads from tramp-gvfs.el (defvar tramp-gvfs-methods '("afp" "dav" "davs" "gdrive" "mtp" "nextcloud" = "sftp") "\ List of methods for remote files, accessed with GVFS.") (custom-autoload 'tramp-gvfs-methods "tramp-gvfs" t) (defconst tramp-goa-methods '("gdrive" "nextcloud") "\ List of methods which require registration at GNOME Online Accounts.") (defvar tramp-media-methods '("afc" "gphoto2" "mtp") "\ List of GVFS methods which are covered by the \"mtp\" method. They are checked during start up via `tramp-gvfs-interface-remotevolumemonitor'.") (when (featurep 'dbusbind) (tramp--with-startup (dolist (method tramp-gvfs-= methods) (unless (assoc method tramp-methods) (add-to-list 'tramp-methods `= (,method))) (when (member method tramp-goa-methods) (add-to-list 'tramp-def= ault-host-alist `(,method nil "")))))) (defconst tramp-goa-service "org.gnome.OnlineAccounts" "\ The well known name of the GNOME Online Accounts service.") (defconst tramp-gvfs-service-afc-volumemonitor "org.gtk.vfs.AfcVolumeMonito= r" "\ The well known name of the AFC volume monitor.") (defconst tramp-gvfs-service-gphoto2-volumemonitor "org.gtk.vfs.GPhoto2Volu= meMonitor" "\ The well known name of the GPhoto2 volume monitor.") (defconst tramp-gvfs-service-mtp-volumemonitor "org.gtk.vfs.MTPVolumeMonito= r" "\ The well known name of the MTP volume monitor.") (defconst tramp-gvfs-file-name-handler-alist '((abbreviate-file-name . tram= p-handle-abbreviate-file-name) (access-file . tramp-handle-access-file) (ad= d-name-to-file . tramp-handle-add-name-to-file) (copy-directory . tramp-han= dle-copy-directory) (copy-file . tramp-gvfs-handle-copy-file) (delete-direc= tory . tramp-gvfs-handle-delete-directory) (delete-file . tramp-gvfs-handle= -delete-file) (directory-file-name . tramp-handle-directory-file-name) (dir= ectory-files . tramp-handle-directory-files) (directory-files-and-attribute= s . tramp-handle-directory-files-and-attributes) (dired-compress-file . ign= ore) (dired-uncache . tramp-handle-dired-uncache) (exec-path . ignore) (exp= and-file-name . tramp-gvfs-handle-expand-file-name) (file-accessible-direct= ory-p . tramp-handle-file-accessible-directory-p) (file-acl . ignore) (file= -attributes . tramp-gvfs-handle-file-attributes) (file-directory-p . tramp-= handle-file-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-e= xecutable-p . tramp-gvfs-handle-file-executable-p) (file-exists-p . tramp-h= andle-file-exists-p) (file-group-gid . tramp-handle-file-group-gid) (file-i= n-directory-p . tramp-handle-file-in-directory-p) (file-local-copy . tramp-= handle-file-local-copy) (file-locked-p . tramp-handle-file-locked-p) (file-= modes . tramp-handle-file-modes) (file-name-all-completions . tramp-gvfs-ha= ndle-file-name-all-completions) (file-name-as-directory . tramp-handle-file= -name-as-directory) (file-name-case-insensitive-p . tramp-handle-file-name-= case-insensitive-p) (file-name-completion . tramp-handle-file-name-completi= on) (file-name-directory . tramp-handle-file-name-directory) (file-name-non= directory . tramp-handle-file-name-nondirectory) (file-newer-than-file-p . = tramp-handle-file-newer-than-file-p) (file-notify-add-watch . tramp-gvfs-ha= ndle-file-notify-add-watch) (file-notify-rm-watch . tramp-handle-file-notif= y-rm-watch) (file-notify-valid-p . tramp-handle-file-notify-valid-p) (file-= ownership-preserved-p . ignore) (file-readable-p . tramp-handle-file-readab= le-p) (file-regular-p . tramp-handle-file-regular-p) (file-remote-p . tramp= -handle-file-remote-p) (file-selinux-context . tramp-handle-file-selinux-co= ntext) (file-symlink-p . tramp-handle-file-symlink-p) (file-system-info . t= ramp-gvfs-handle-file-system-info) (file-truename . tramp-handle-file-truen= ame) (file-user-uid . tramp-handle-file-user-uid) (file-writable-p . tramp-= handle-file-writable-p) (find-backup-file-name . tramp-handle-find-backup-f= ile-name) (insert-directory . tramp-handle-insert-directory) (insert-file-c= ontents . tramp-handle-insert-file-contents) (list-system-processes . ignor= e) (load . tramp-handle-load) (lock-file . tramp-handle-lock-file) (make-au= to-save-file-name . tramp-handle-make-auto-save-file-name) (make-directory = . tramp-gvfs-handle-make-directory) (make-directory-internal . ignore) (mak= e-lock-file-name . tramp-handle-make-lock-file-name) (make-nearby-temp-file= . tramp-handle-make-nearby-temp-file) (make-process . ignore) (make-symbol= ic-link . tramp-handle-make-symbolic-link) (memory-info . ignore) (process-= attributes . ignore) (process-file . ignore) (rename-file . tramp-gvfs-hand= le-rename-file) (set-file-acl . ignore) (set-file-modes . tramp-gvfs-handle= -set-file-modes) (set-file-selinux-context . ignore) (set-file-times . tram= p-gvfs-handle-set-file-times) (set-visited-file-modtime . tramp-handle-set-= visited-file-modtime) (shell-command . ignore) (start-file-process . ignore= ) (substitute-in-file-name . tramp-handle-substitute-in-file-name) (tempora= ry-file-directory . tramp-handle-temporary-file-directory) (tramp-get-home-= directory . tramp-gvfs-handle-get-home-directory) (tramp-get-remote-gid . t= ramp-gvfs-handle-get-remote-gid) (tramp-get-remote-groups . ignore) (tramp-= get-remote-uid . tramp-gvfs-handle-get-remote-uid) (tramp-set-file-uid-gid = . tramp-gvfs-handle-set-file-uid-gid) (unhandled-file-name-directory . igno= re) (unlock-file . tramp-handle-unlock-file) (vc-registered . ignore) (veri= fy-visited-file-modtime . tramp-handle-verify-visited-file-modtime) (write-= region . tramp-handle-write-region)) "\ Alist of handler functions for Tramp GVFS method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defsubst tramp-gvfs-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME handled by the GVFS daemon." (and-let* ((ve= c (tramp-ensure-dissected-file-name vec-or-filename)) (method (tramp-file-n= ame-method vec)) ((member method tramp-gvfs-methods))))) (autoload 'tramp-gvfs-file-name-handler "tramp-gvfs" "\ Invoke the GVFS related OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (when (featurep 'dbusbind) (tramp--with-startup (tramp-register-foreign-fil= e-name-handler #'tramp-gvfs-file-name-p #'tramp-gvfs-file-name-handler))) ;;; Generated autoloads from tramp-message.el (defvar tramp-verbose 3 "\ Verbosity level for Tramp messages. Any level x includes messages for all levels 1 .. x-1. The levels are 0 silent (no tramp messages at all) 1 errors 2 warnings 3 connection to remote hosts (default level) 4 activities 5 internal 6 sent and received strings 7 connection properties 8 file caching 9 test commands 10 traces (huge) 11 call traces (maintainer only).") (custom-autoload 'tramp-verbose "tramp-message" t) (autoload 'tramp-message "tramp-message" "\ Emit a message depending on verbosity level. VEC-OR-PROC identifies the Tramp buffer to use. It can be either a vector or a process. LEVEL says to be quiet if `tramp-verbose' is less than LEVEL. The message is emitted only if `tramp-verbose' is greater than or equal to LEVEL. The message is also logged into the debug buffer when `tramp-verbose' is greater than or equal 4. Calls functions `message' and `tramp-debug-message' with FMT-STRING as control string and the remaining ARGUMENTS to actually emit the message (if applicable). (fn VEC-OR-PROC LEVEL FMT-STRING &rest ARGUMENTS)") ;;; Generated autoloads from tramp-rclone.el (defconst tramp-rclone-method "rclone" "\ When this method name is used, forward all calls to rclone mounts.") (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-rclone-method (tr= amp-mount-args ("--no-unicode-normalization" "--dir-cache-time" "0s")) (tra= mp-copyto-args nil) (tramp-moveto-args nil) (tramp-about-args ("--full"))))= (add-to-list 'tramp-default-host-alist `(,tramp-rclone-method nil "")) (tr= amp-set-completion-function tramp-rclone-method '((tramp-rclone-parse-devic= e-names "")))) (defconst tramp-rclone-file-name-handler-alist '((access-file . tramp-handl= e-access-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-dir= ectory . tramp-handle-copy-directory) (copy-file . tramp-rclone-handle-copy= -file) (delete-directory . tramp-fuse-handle-delete-directory) (delete-file= . tramp-fuse-handle-delete-file) (directory-file-name . tramp-handle-direc= tory-file-name) (directory-files . tramp-fuse-handle-directory-files) (dire= ctory-files-and-attributes . tramp-handle-directory-files-and-attributes) (= dired-compress-file . ignore) (dired-uncache . tramp-handle-dired-uncache) = (exec-path . ignore) (expand-file-name . tramp-handle-expand-file-name) (fi= le-accessible-directory-p . tramp-handle-file-accessible-directory-p) (file= -acl . ignore) (file-attributes . tramp-fuse-handle-file-attributes) (file-= directory-p . tramp-handle-file-directory-p) (file-equal-p . tramp-handle-f= ile-equal-p) (file-executable-p . tramp-fuse-handle-file-executable-p) (fil= e-exists-p . tramp-handle-file-exists-p) (file-group-gid . tramp-handle-fil= e-group-gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file= -local-copy . tramp-handle-file-local-copy) (file-locked-p . tramp-handle-f= ile-locked-p) (file-modes . tramp-handle-file-modes) (file-name-all-complet= ions . tramp-fuse-handle-file-name-all-completions) (file-name-as-directory= . tramp-handle-file-name-as-directory) (file-name-case-insensitive-p . tra= mp-handle-file-name-case-insensitive-p) (file-name-completion . tramp-handl= e-file-name-completion) (file-name-directory . tramp-handle-file-name-direc= tory) (file-name-nondirectory . tramp-handle-file-name-nondirectory) (file-= newer-than-file-p . tramp-handle-file-newer-than-file-p) (file-notify-add-w= atch . tramp-handle-file-notify-add-watch) (file-notify-rm-watch . tramp-ha= ndle-file-notify-rm-watch) (file-notify-valid-p . tramp-handle-file-notify-= valid-p) (file-ownership-preserved-p . ignore) (file-readable-p . tramp-rcl= one-handle-file-readable-p) (file-regular-p . tramp-handle-file-regular-p) = (file-remote-p . tramp-handle-file-remote-p) (file-selinux-context . tramp-= handle-file-selinux-context) (file-symlink-p . tramp-handle-file-symlink-p)= (file-system-info . tramp-rclone-handle-file-system-info) (file-truename .= tramp-handle-file-truename) (file-user-uid . tramp-handle-file-user-uid) (= file-writable-p . tramp-handle-file-writable-p) (find-backup-file-name . tr= amp-handle-find-backup-file-name) (insert-directory . tramp-handle-insert-d= irectory) (insert-file-contents . tramp-handle-insert-file-contents) (list-= system-processes . ignore) (load . tramp-handle-load) (lock-file . tramp-ha= ndle-lock-file) (make-auto-save-file-name . tramp-handle-make-auto-save-fil= e-name) (make-directory . tramp-fuse-handle-make-directory) (make-directory= -internal . ignore) (make-lock-file-name . tramp-handle-make-lock-file-name= ) (make-nearby-temp-file . tramp-handle-make-nearby-temp-file) (make-proces= s . ignore) (make-symbolic-link . tramp-handle-make-symbolic-link) (memory-= info . ignore) (process-attributes . ignore) (process-file . ignore) (renam= e-file . tramp-rclone-handle-rename-file) (set-file-acl . ignore) (set-file= -modes . ignore) (set-file-selinux-context . ignore) (set-file-times . igno= re) (set-visited-file-modtime . tramp-handle-set-visited-file-modtime) (she= ll-command . ignore) (start-file-process . ignore) (substitute-in-file-name= . tramp-handle-substitute-in-file-name) (temporary-file-directory . tramp-= handle-temporary-file-directory) (tramp-get-home-directory . ignore) (tramp= -get-remote-gid . ignore) (tramp-get-remote-groups . ignore) (tramp-get-rem= ote-uid . ignore) (tramp-set-file-uid-gid . ignore) (unhandled-file-name-di= rectory . ignore) (unlock-file . tramp-handle-unlock-file) (vc-registered .= ignore) (verify-visited-file-modtime . tramp-handle-verify-visited-file-mo= dtime) (write-region . tramp-handle-write-region)) "\ Alist of handler functions for Tramp RCLONE method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defsubst tramp-rclone-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for rclone." (and-let* ((vec (tramp-ensure-= dissected-file-name vec-or-filename)) ((string=3D (tramp-file-name-method v= ec) tramp-rclone-method))))) (autoload 'tramp-rclone-file-name-handler "tramp-rclone" "\ Invoke the rclone handler for OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-rclo= ne-file-name-p #'tramp-rclone-file-name-handler)) (autoload 'tramp-rclone-parse-device-names "tramp-rclone" "\ Return a list of (nil host) tuples allowed to access. (fn IGNORE)") ;;; Generated autoloads from tramp-sh.el (defconst tramp-default-remote-shell "/bin/sh" "\ The default remote shell Tramp applies.") (defvar tramp-histfile-override "~/.tramp_history" "\ When invoking a shell, override the HISTFILE with this value. When setting to a string, it redirects the shell history to that file. Be careful when setting to \"/dev/null\"; this might result in undesired results when using \"bash\" as shell. The value t unsets any setting of HISTFILE, and sets both HISTFILESIZE and HISTSIZE to 0. If you set this variable to nil, however, the *override* is disabled, so the history will go to the default storage location, e.g. \"$HOME/.sh_history\".") (custom-autoload 'tramp-histfile-override "tramp-sh" t) (defconst tramp-initial-end-of-output "#$ " "\ Prompt when establishing a connection.") (tramp--with-startup (add-to-list 'tramp-methods `("rcp" (tramp-login-progr= am "rsh") (tramp-login-args (("%h") ("-l" "%u"))) (tramp-remote-shell ,tram= p-default-remote-shell) (tramp-remote-shell-login ("-l")) (tramp-remote-she= ll-args ("-c")) (tramp-copy-program "rcp") (tramp-copy-args (("-p" "%k") ("= -r"))) (tramp-copy-keep-date t) (tramp-copy-recursive t))) (add-to-list 'tr= amp-methods `("remcp" (tramp-login-program "remsh") (tramp-login-args (("%h= ") ("-l" "%u"))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-re= mote-shell-login ("-l")) (tramp-remote-shell-args ("-c")) (tramp-copy-progr= am "rcp") (tramp-copy-args (("-p" "%k"))) (tramp-copy-keep-date t))) (add-t= o-list 'tramp-methods `("scp" (tramp-login-program "ssh") (tramp-login-args= (("-l" "%u") ("-p" "%p") ("%c") ("-e" "none") ("-o" ,(format "SetEnv=3D\"T= ERM=3D%s\"" tramp-terminal-type)) ("%h"))) (tramp-async-args (("-q"))) (tra= mp-direct-async ("-t" "-t")) (tramp-remote-shell ,tramp-default-remote-shel= l) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-c")) (tram= p-copy-program "scp") (tramp-copy-args (("-P" "%p") ("-p" "%k") ("%x") ("%y= ") ("%z") ("-q") ("-r") ("%c"))) (tramp-copy-keep-date t) (tramp-copy-recur= sive t))) (add-to-list 'tramp-methods `("scpx" (tramp-login-program "ssh") = (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") ("-e" "none") ("-t" "-t")= ("-o" "RemoteCommand=3D\"%l\"") ("-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tr= amp-terminal-type)) ("%h"))) (tramp-async-args (("-q"))) (tramp-remote-shel= l ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (tramp-rem= ote-shell-args ("-c")) (tramp-copy-program "scp") (tramp-copy-args (("-P" "= %p") ("-p" "%k") ("%x") ("%y") ("%z") ("-q") ("-r") ("%c"))) (tramp-copy-ke= ep-date t) (tramp-copy-recursive t))) (add-to-list 'tramp-methods `("rsync"= (tramp-login-program "ssh") (tramp-login-args (("-l" "%u") ("-p" "%p") ("%= c") ("-e" "none") ("-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tramp-terminal-ty= pe)) ("%h"))) (tramp-async-args (("-q"))) (tramp-direct-async ("-t" "-t")) = (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login = ("-l")) (tramp-remote-shell-args ("-c")) (tramp-copy-program "rsync") (tram= p-copy-args (("-t" "%k") ("-p") ("-r") ("-s") ("-c"))) (tramp-copy-env (("R= SYNC_RSH") ("ssh") ("%c"))) (tramp-copy-keep-date t) (tramp-copy-keep-tmpfi= le t) (tramp-copy-recursive t))) (add-to-list 'tramp-methods `("rsh" (tramp= -login-program "rsh") (tramp-login-args (("%h") ("-l" "%u"))) (tramp-remote= -shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (tram= p-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("remsh" (tramp-= login-program "remsh") (tramp-login-args (("%h") ("-l" "%u"))) (tramp-remot= e-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (tra= mp-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("ssh" (tramp-l= ogin-program "ssh") (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") ("-e"= "none") ("-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tramp-terminal-type)) ("%h= "))) (tramp-async-args (("-q"))) (tramp-direct-async ("-t" "-t")) (tramp-re= mote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (= tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("sshx" (tra= mp-login-program "ssh") (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") (= "-e" "none") ("-t" "-t") ("-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tramp-term= inal-type)) ("-o" "RemoteCommand=3D\"%l\"") ("%h"))) (tramp-async-args (("-= q"))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-= login ("-l")) (tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-method= s `("telnet" (tramp-login-program "telnet") (tramp-login-args (("%h") ("%p"= ) ("%n"))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-s= hell-login ("-l")) (tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-m= ethods `("su" (tramp-login-program "su") (tramp-login-args (("-") ("%u"))) = (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login = ("-l")) (tramp-remote-shell-args ("-c")) (tramp-connection-timeout 10))) (a= dd-to-list 'tramp-methods `("sg" (tramp-login-program "sg") (tramp-login-ar= gs (("-") ("%u"))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-= remote-shell-args ("-c")) (tramp-connection-timeout 10))) (add-to-list 'tra= mp-methods `("sudo" (tramp-login-program "env") (tramp-login-args (("SUDO_P= ROMPT=3DP\"\"a\"\"s\"\"s\"\"w\"\"o\"\"r\"\"d\"\":") (,(format "TERM=3D%s" t= ramp-terminal-type)) ("sudo") ("-u" "%u") ("-s") ("-H") ("%l"))) (tramp-rem= ote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (t= ramp-remote-shell-args ("-c")) (tramp-connection-timeout 10) (tramp-session= -timeout 300) (tramp-password-previous-hop t))) (add-to-list 'tramp-methods= `("doas" (tramp-login-program "doas") (tramp-login-args (("-u" "%u") ("-s"= ))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-ar= gs ("-c")) (tramp-connection-timeout 10) (tramp-session-timeout 300) (tramp= -password-previous-hop t))) (add-to-list 'tramp-methods `("plink" (tramp-lo= gin-program "plink") (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh") ("= %c") ("-t") ("%h") ("\"") (,(format "env 'TERM=3D%s' 'PROMPT_COMMAND=3D' 'P= S1=3D%s'" tramp-terminal-type tramp-initial-end-of-output)) ("%l") ("\"")))= (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login= ("-l")) (tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("= plinkx" (tramp-login-program "plink") (tramp-login-args (("-load") ("%h") (= "%c") ("-t") ("\"") (,(format "env 'TERM=3D%s' 'PROMPT_COMMAND=3D' 'PS1=3D%= s'" tramp-terminal-type tramp-initial-end-of-output)) ("%l") ("\""))) (tram= p-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l"= )) (tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("pscp" = (tramp-login-program "plink") (tramp-login-args (("-l" "%u") ("-P" "%p") ("= -ssh") ("%c") ("-t") ("%h") ("\"") (,(format "env 'TERM=3D%s' 'PROMPT_COMMA= ND=3D' 'PS1=3D%s'" tramp-terminal-type tramp-initial-end-of-output)) ("%l")= ("\""))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-sh= ell-login ("-l")) (tramp-remote-shell-args ("-c")) (tramp-copy-program "psc= p") (tramp-copy-args (("-l" "%u") ("-P" "%p") ("-scp") ("%c") ("-p" "%k") (= "-q") ("-r"))) (tramp-copy-keep-date t) (tramp-copy-recursive t))) (add-to-= list 'tramp-methods `("psftp" (tramp-login-program "plink") (tramp-login-ar= gs (("-l" "%u") ("-P" "%p") ("-ssh") ("%c") ("-t") ("%h") ("\"") (,(format = "env 'TERM=3D%s' 'PROMPT_COMMAND=3D' 'PS1=3D%s'" tramp-terminal-type tramp-= initial-end-of-output)) ("%l") ("\""))) (tramp-remote-shell ,tramp-default-= remote-shell) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("= -c")) (tramp-copy-program "pscp") (tramp-copy-args (("-l" "%u") ("-P" "%p")= ("-sftp") ("%c") ("-p" "%k"))) (tramp-copy-keep-date t))) (add-to-list 'tr= amp-default-method-alist `(,tramp-local-host-regexp ,(rx bos (literal tramp= -root-id-string) eos) "su")) (add-to-list 'tramp-default-user-alist `(,(rx = bos (| "su" "sudo" "doas") eos) nil ,tramp-root-id-string)) (add-to-list 't= ramp-default-user-alist `(,(rx bos (| "rcp" "remcp" "rsh" "telnet") eos) ni= l ,(user-login-name)))) (defconst tramp-completion-function-alist-rsh '((tramp-parse-rhosts "/etc/h= osts.equiv") (tramp-parse-rhosts "~/.rhosts")) "\ Default list of (FUNCTION FILE) pairs to be examined for rsh methods.") (defconst tramp-completion-function-alist-ssh `((tramp-parse-rhosts "/etc/h= osts.equiv") (tramp-parse-rhosts "/etc/shosts.equiv") (tramp-parse-shosts ,= (expand-file-name "ssh/ssh_known_hosts" (or (and (eq system-type 'windows-n= t) (getenv "ProgramData")) "/etc/"))) (tramp-parse-sconfig ,(expand-file-na= me "ssh/ssh_config" (or (and (eq system-type 'windows-nt) (getenv "ProgramD= ata")) "/etc/"))) (tramp-parse-shostkeys "/etc/ssh2/hostkeys") (tramp-parse= -sknownhosts "/etc/ssh2/knownhosts") (tramp-parse-rhosts "~/.rhosts") (tram= p-parse-rhosts "~/.shosts") (tramp-parse-shosts ,(expand-file-name ".ssh/kn= own_hosts" (or (and (eq system-type 'windows-nt) (getenv "USERPROFILE")) "~= /"))) (tramp-parse-sconfig ,(expand-file-name ".ssh/config" (or (and (eq sy= stem-type 'windows-nt) (getenv "USERPROFILE")) "~/"))) (tramp-parse-shostke= ys "~/.ssh2/hostkeys") (tramp-parse-sknownhosts "~/.ssh2/knownhosts")) "\ Default list of (FUNCTION FILE) pairs to be examined for ssh methods.") (defconst tramp-completion-function-alist-telnet '((tramp-parse-hosts "/etc= /hosts")) "\ Default list of (FUNCTION FILE) pairs to be examined for telnet methods.") (defconst tramp-completion-function-alist-su '((tramp-parse-passwd "/etc/pa= sswd")) "\ Default list of (FUNCTION FILE) pairs to be examined for su methods.") (defconst tramp-completion-function-alist-sg '((tramp-parse-etc-group "/etc= /group")) "\ Default list of (FUNCTION FILE) pairs to be examined for sg methods.") (defconst tramp-completion-function-alist-putty `((tramp-parse-putty ,(if (= eq system-type 'windows-nt) "HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTT= Y\\Sessions" "~/.putty/sessions"))) "\ Default list of (FUNCTION REGISTRY) pairs to be examined for putty sessions= .") (tramp--with-startup (tramp-set-completion-function "rcp" tramp-completion-= function-alist-rsh) (tramp-set-completion-function "remcp" tramp-completion= -function-alist-rsh) (tramp-set-completion-function "scp" tramp-completion-= function-alist-ssh) (tramp-set-completion-function "scpx" tramp-completion-= function-alist-ssh) (tramp-set-completion-function "rsync" tramp-completion= -function-alist-ssh) (tramp-set-completion-function "rsh" tramp-completion-= function-alist-rsh) (tramp-set-completion-function "remsh" tramp-completion= -function-alist-rsh) (tramp-set-completion-function "ssh" tramp-completion-= function-alist-ssh) (tramp-set-completion-function "sshx" tramp-completion-= function-alist-ssh) (tramp-set-completion-function "telnet" tramp-completio= n-function-alist-telnet) (tramp-set-completion-function "su" tramp-completi= on-function-alist-su) (tramp-set-completion-function "sudo" tramp-completio= n-function-alist-su) (tramp-set-completion-function "doas" tramp-completion= -function-alist-su) (tramp-set-completion-function "sg" tramp-completion-fu= nction-alist-sg) (tramp-set-completion-function "plink" tramp-completion-fu= nction-alist-ssh) (tramp-set-completion-function "plinkx" tramp-completion-= function-alist-putty) (tramp-set-completion-function "pscp" tramp-completio= n-function-alist-ssh) (tramp-set-completion-function "psftp" tramp-completi= on-function-alist-ssh)) (autoload 'tramp-enable-nc-method "tramp-sh" "\ Enable \"ksu\" method.") (autoload 'tramp-enable-run0-method "tramp-sh" "\ Enable \"run0\" method.") (autoload 'tramp-enable-ksu-method "tramp-sh" "\ Enable \"ksu\" method.") (autoload 'tramp-enable-krlogin-method "tramp-sh" "\ Enable \"krlogin\" method.") (autoload 'tramp-enable-fcp-method "tramp-sh" "\ Enable \"fcp\" method.") (defconst tramp-actions-before-shell '((tramp-login-prompt-regexp tramp-act= ion-login) (tramp-password-prompt-regexp tramp-action-password) (tramp-otp-= password-prompt-regexp tramp-action-otp-password) (tramp-fingerprint-prompt= -regexp tramp-action-fingerprint) (tramp-wrong-passwd-regexp tramp-action-p= ermission-denied) (shell-prompt-pattern tramp-action-succeed) (tramp-shell-= prompt-pattern tramp-action-succeed) (tramp-yesno-prompt-regexp tramp-actio= n-yesno) (tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-re= gexp tramp-action-terminal) (tramp-antispoof-regexp tramp-action-confirm-me= ssage) (tramp-security-key-confirm-regexp tramp-action-show-and-confirm-mes= sage) (tramp-security-key-pin-regexp tramp-action-otp-password) (tramp-proc= ess-alive-regexp tramp-action-process-alive)) "\ List of pattern/action pairs. Whenever a pattern matches, the corresponding action is performed. Each item looks like (PATTERN ACTION). The PATTERN should be a symbol, a variable. The value of this variable gives the regular expression to search for. Note that the regexp must match at the end of the buffer, \"\\'\" is implicitly appended to it. The ACTION should also be a symbol, but a function. When the corresponding PATTERN matches, the ACTION function is called.") (defconst tramp-sh-file-name-handler-alist '((abbreviate-file-name . tramp-= handle-abbreviate-file-name) (access-file . tramp-handle-access-file) (add-= name-to-file . tramp-sh-handle-add-name-to-file) (copy-directory . tramp-sh= -handle-copy-directory) (copy-file . tramp-sh-handle-copy-file) (delete-dir= ectory . tramp-sh-handle-delete-directory) (delete-file . tramp-sh-handle-d= elete-file) (directory-file-name . tramp-handle-directory-file-name) (direc= tory-files . tramp-handle-directory-files) (directory-files-and-attributes = . tramp-sh-handle-directory-files-and-attributes) (dired-compress-file . tr= amp-sh-handle-dired-compress-file) (dired-uncache . tramp-handle-dired-unca= che) (exec-path . tramp-sh-handle-exec-path) (expand-file-name . tramp-sh-h= andle-expand-file-name) (file-accessible-directory-p . tramp-handle-file-ac= cessible-directory-p) (file-acl . tramp-sh-handle-file-acl) (file-attribute= s . tramp-sh-handle-file-attributes) (file-directory-p . tramp-sh-handle-fi= le-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-executable= -p . tramp-sh-handle-file-executable-p) (file-exists-p . tramp-sh-handle-fi= le-exists-p) (file-group-gid . tramp-handle-file-group-gid) (file-in-direct= ory-p . tramp-handle-file-in-directory-p) (file-local-copy . tramp-sh-handl= e-file-local-copy) (file-locked-p . tramp-handle-file-locked-p) (file-modes= . tramp-handle-file-modes) (file-name-all-completions . tramp-sh-handle-fi= le-name-all-completions) (file-name-as-directory . tramp-handle-file-name-a= s-directory) (file-name-case-insensitive-p . tramp-handle-file-name-case-in= sensitive-p) (file-name-completion . tramp-handle-file-name-completion) (fi= le-name-directory . tramp-handle-file-name-directory) (file-name-nondirecto= ry . tramp-handle-file-name-nondirectory) (file-newer-than-file-p . tramp-h= andle-file-newer-than-file-p) (file-notify-add-watch . tramp-sh-handle-file= -notify-add-watch) (file-notify-rm-watch . tramp-handle-file-notify-rm-watc= h) (file-notify-valid-p . tramp-handle-file-notify-valid-p) (file-ownership= -preserved-p . tramp-sh-handle-file-ownership-preserved-p) (file-readable-p= . tramp-sh-handle-file-readable-p) (file-regular-p . tramp-handle-file-reg= ular-p) (file-remote-p . tramp-handle-file-remote-p) (file-selinux-context = . tramp-sh-handle-file-selinux-context) (file-symlink-p . tramp-handle-file= -symlink-p) (file-system-info . tramp-sh-handle-file-system-info) (file-tru= ename . tramp-sh-handle-file-truename) (file-user-uid . tramp-handle-file-u= ser-uid) (file-writable-p . tramp-sh-handle-file-writable-p) (find-backup-f= ile-name . tramp-handle-find-backup-file-name) (insert-directory . tramp-sh= -handle-insert-directory) (insert-file-contents . tramp-handle-insert-file-= contents) (list-system-processes . tramp-handle-list-system-processes) (loa= d . tramp-handle-load) (lock-file . tramp-handle-lock-file) (make-auto-save= -file-name . tramp-handle-make-auto-save-file-name) (make-directory . tramp= -sh-handle-make-directory) (make-lock-file-name . tramp-handle-make-lock-fi= le-name) (make-nearby-temp-file . tramp-handle-make-nearby-temp-file) (make= -process . tramp-sh-handle-make-process) (make-symbolic-link . tramp-sh-han= dle-make-symbolic-link) (memory-info . tramp-handle-memory-info) (process-a= ttributes . tramp-handle-process-attributes) (process-file . tramp-sh-handl= e-process-file) (rename-file . tramp-sh-handle-rename-file) (set-file-acl .= tramp-sh-handle-set-file-acl) (set-file-modes . tramp-sh-handle-set-file-m= odes) (set-file-selinux-context . tramp-sh-handle-set-file-selinux-context)= (set-file-times . tramp-sh-handle-set-file-times) (set-visited-file-modtim= e . tramp-sh-handle-set-visited-file-modtime) (shell-command . tramp-handle= -shell-command) (start-file-process . tramp-handle-start-file-process) (sub= stitute-in-file-name . tramp-handle-substitute-in-file-name) (temporary-fil= e-directory . tramp-handle-temporary-file-directory) (tramp-get-home-direct= ory . tramp-sh-handle-get-home-directory) (tramp-get-remote-gid . tramp-sh-= handle-get-remote-gid) (tramp-get-remote-groups . tramp-sh-handle-get-remot= e-groups) (tramp-get-remote-uid . tramp-sh-handle-get-remote-uid) (tramp-se= t-file-uid-gid . tramp-sh-handle-set-file-uid-gid) (unhandled-file-name-dir= ectory . ignore) (unlock-file . tramp-handle-unlock-file) (vc-registered . = tramp-sh-handle-vc-registered) (verify-visited-file-modtime . tramp-sh-hand= le-verify-visited-file-modtime) (write-region . tramp-sh-handle-write-regio= n)) "\ Alist of handler functions. Operations not mentioned here will be handled by the normal Emacs functions= .") (autoload 'tramp-sh-file-name-handler "tramp-sh" "\ Invoke remote-shell Tramp file name handler. Fall back to normal file name handler if no Tramp handler exists. (fn OPERATION &rest ARGS)") (autoload 'tramp-sh-file-name-handler-p "tramp-sh" "\ Whether VEC uses a method from `tramp-sh-file-name-handler'. (fn VEC)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'identity #= 'tramp-sh-file-name-handler 'append)) (autoload 'tramp-timeout-session "tramp-sh" "\ Close the connection VEC after a session timeout. If there is just some editing, retry it after 5 seconds. If there is a modified buffer, retry it after 60 seconds. (fn VEC)") (autoload 'tramp-get-remote-path "tramp-sh" "\ Compile list of remote directories for PATH. Nonexistent directories are removed from spec. (fn VEC)") (autoload 'tramp-get-remote-pipe-buf "tramp-sh" "\ Return PIPE_BUF config from the remote side. (fn VEC)") ;;; Generated autoloads from tramp-smb.el (defconst tramp-smb-method "smb" "\ Method to connect SAMBA and M$ SMB servers.") (unless (memq system-type '(cygwin windows-nt)) (tramp--with-startup (add-t= o-list 'tramp-methods `(,tramp-smb-method (tramp-tmpdir "/C$/Temp") (tramp-= case-insensitive t))))) (tramp--with-startup (add-to-list 'tramp-default-user-alist `(,(rx bos (lit= eral tramp-smb-method) eos) nil nil)) (tramp-set-completion-function tramp-= smb-method '((tramp-parse-netrc "~/.netrc")))) (defconst tramp-smb-file-name-handler-alist '((abbreviate-file-name . tramp= -handle-abbreviate-file-name) (access-file . tramp-handle-access-file) (add= -name-to-file . tramp-smb-handle-add-name-to-file) (copy-directory . tramp-= smb-handle-copy-directory) (copy-file . tramp-smb-handle-copy-file) (delete= -directory . tramp-smb-handle-delete-directory) (delete-file . tramp-smb-ha= ndle-delete-file) (directory-file-name . tramp-handle-directory-file-name) = (directory-files . tramp-handle-directory-files) (directory-files-and-attri= butes . tramp-handle-directory-files-and-attributes) (dired-compress-file .= ignore) (dired-uncache . tramp-handle-dired-uncache) (exec-path . ignore) = (expand-file-name . tramp-smb-handle-expand-file-name) (file-accessible-dir= ectory-p . tramp-handle-file-accessible-directory-p) (file-acl . tramp-smb-= handle-file-acl) (file-attributes . tramp-smb-handle-file-attributes) (file= -directory-p . tramp-handle-file-directory-p) (file-file-equal-p . tramp-ha= ndle-file-equal-p) (file-executable-p . tramp-handle-file-exists-p) (file-e= xists-p . tramp-handle-file-exists-p) (file-group-gid . tramp-handle-file-g= roup-gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file-lo= cal-copy . tramp-smb-handle-file-local-copy) (file-locked-p . tramp-handle-= file-locked-p) (file-modes . tramp-handle-file-modes) (file-name-all-comple= tions . tramp-smb-handle-file-name-all-completions) (file-name-as-directory= . tramp-handle-file-name-as-directory) (file-name-case-insensitive-p . tra= mp-handle-file-name-case-insensitive-p) (file-name-completion . tramp-handl= e-file-name-completion) (file-name-directory . tramp-handle-file-name-direc= tory) (file-name-nondirectory . tramp-handle-file-name-nondirectory) (file-= newer-than-file-p . tramp-handle-file-newer-than-file-p) (file-notify-add-w= atch . tramp-smb-handle-file-notify-add-watch) (file-notify-rm-watch . tram= p-handle-file-notify-rm-watch) (file-notify-valid-p . tramp-handle-file-not= ify-valid-p) (file-ownership-preserved-p . ignore) (file-readable-p . tramp= -handle-file-exists-p) (file-regular-p . tramp-handle-file-regular-p) (file= -remote-p . tramp-handle-file-remote-p) (file-selinux-context . tramp-handl= e-file-selinux-context) (file-symlink-p . tramp-handle-file-symlink-p) (fil= e-system-info . tramp-smb-handle-file-system-info) (file-truename . tramp-h= andle-file-truename) (file-user-uid . tramp-handle-file-user-uid) (file-wri= table-p . tramp-smb-handle-file-writable-p) (find-backup-file-name . tramp-= handle-find-backup-file-name) (insert-directory . tramp-smb-handle-insert-d= irectory) (insert-file-contents . tramp-handle-insert-file-contents) (list-= system-processes . ignore) (load . tramp-handle-load) (lock-file . tramp-ha= ndle-lock-file) (make-auto-save-file-name . tramp-handle-make-auto-save-fil= e-name) (make-directory . tramp-smb-handle-make-directory) (make-directory-= internal . ignore) (make-lock-file-name . tramp-handle-make-lock-file-name)= (make-nearby-temp-file . tramp-handle-make-nearby-temp-file) (make-process= . ignore) (make-symbolic-link . tramp-smb-handle-make-symbolic-link) (memo= ry-info . ignore) (process-attributes . ignore) (process-file . tramp-smb-h= andle-process-file) (rename-file . tramp-smb-handle-rename-file) (set-file-= acl . tramp-smb-handle-set-file-acl) (set-file-modes . tramp-smb-handle-set= -file-modes) (set-file-selinux-context . ignore) (set-file-times . tramp-sm= b-handle-set-file-times) (set-visited-file-modtime . tramp-handle-set-visit= ed-file-modtime) (shell-command . tramp-handle-shell-command) (start-file-p= rocess . tramp-smb-handle-start-file-process) (substitute-in-file-name . tr= amp-smb-handle-substitute-in-file-name) (temporary-file-directory . tramp-h= andle-temporary-file-directory) (tramp-get-home-directory . tramp-smb-handl= e-get-home-directory) (tramp-get-remote-gid . ignore) (tramp-get-remote-gro= ups . ignore) (tramp-get-remote-uid . ignore) (tramp-set-file-uid-gid . ign= ore) (unhandled-file-name-directory . ignore) (unlock-file . tramp-handle-u= nlock-file) (vc-registered . ignore) (verify-visited-file-modtime . tramp-h= andle-verify-visited-file-modtime) (write-region . tramp-smb-handle-write-r= egion)) "\ Alist of handler functions for Tramp SMB method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defsubst tramp-smb-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for SMB servers." (and-let* ((vec (tramp-en= sure-dissected-file-name vec-or-filename)) ((string=3D (tramp-file-name-met= hod vec) tramp-smb-method))))) (autoload 'tramp-smb-file-name-handler "tramp-smb" "\ Invoke the SMB related OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (unless (memq system-type '(cygwin windows-nt)) (tramp--with-startup (tramp= -register-foreign-file-name-handler #'tramp-smb-file-name-p #'tramp-smb-fil= e-name-handler))) ;;; Generated autoloads from tramp-sshfs.el (defconst tramp-sshfs-method "sshfs" "\ Tramp method for sshfs mounts.") (defvar tramp-default-remote-shell) (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-sshfs-method (tra= mp-mount-args (("-C") ("-p" "%p") ("-o" "dir_cache=3Dno") ("-o" "transform_= symlinks") ("-o" "idmap=3Duser,reconnect"))) (tramp-login-program "ssh") (t= ramp-login-args (("-q") ("-l" "%u") ("-p" "%p") ("-e" "none") ("%a" "%a") (= "-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tramp-terminal-type)) ("%h") ("%l"))= ) (tramp-direct-async t) (tramp-remote-shell ,tramp-default-remote-shell) (= tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-c")))) (tramp-= set-completion-function tramp-sshfs-method tramp-completion-function-alist-= ssh)) (defconst tramp-sshfs-file-name-handler-alist '((access-file . tramp-handle= -access-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-dire= ctory . tramp-handle-copy-directory) (copy-file . tramp-sshfs-handle-copy-f= ile) (delete-directory . tramp-fuse-handle-delete-directory) (delete-file .= tramp-fuse-handle-delete-file) (directory-file-name . tramp-handle-directo= ry-file-name) (directory-files . tramp-fuse-handle-directory-files) (direct= ory-files-and-attributes . tramp-handle-directory-files-and-attributes) (di= red-compress-file . ignore) (dired-uncache . tramp-handle-dired-uncache) (e= xec-path . tramp-sshfs-handle-exec-path) (expand-file-name . tramp-handle-e= xpand-file-name) (file-accessible-directory-p . tramp-handle-file-accessibl= e-directory-p) (file-acl . ignore) (file-attributes . tramp-fuse-handle-fil= e-attributes) (file-directory-p . tramp-handle-file-directory-p) (file-equa= l-p . tramp-handle-file-equal-p) (file-executable-p . tramp-fuse-handle-fil= e-executable-p) (file-exists-p . tramp-fuse-handle-file-exists-p) (file-gro= up-gid . tramp-handle-file-group-gid) (file-in-directory-p . tramp-handle-f= ile-in-directory-p) (file-local-copy . tramp-handle-file-local-copy) (file-= locked-p . tramp-handle-file-locked-p) (file-modes . tramp-handle-file-mode= s) (file-name-all-completions . tramp-fuse-handle-file-name-all-completions= ) (file-name-as-directory . tramp-handle-file-name-as-directory) (file-name= -case-insensitive-p . tramp-handle-file-name-case-insensitive-p) (file-name= -completion . tramp-handle-file-name-completion) (file-name-directory . tra= mp-handle-file-name-directory) (file-name-nondirectory . tramp-handle-file-= name-nondirectory) (file-newer-than-file-p . tramp-handle-file-newer-than-f= ile-p) (file-notify-add-watch . tramp-handle-file-notify-add-watch) (file-n= otify-rm-watch . tramp-handle-file-notify-rm-watch) (file-notify-valid-p . = tramp-handle-file-notify-valid-p) (file-ownership-preserved-p . ignore) (fi= le-readable-p . tramp-handle-file-readable-p) (file-regular-p . tramp-handl= e-file-regular-p) (file-remote-p . tramp-handle-file-remote-p) (file-selinu= x-context . tramp-handle-file-selinux-context) (file-symlink-p . tramp-hand= le-file-symlink-p) (file-system-info . tramp-sshfs-handle-file-system-info)= (file-truename . tramp-handle-file-truename) (file-user-uid . tramp-handle= -file-user-uid) (file-writable-p . tramp-sshfs-handle-file-writable-p) (fin= d-backup-file-name . tramp-handle-find-backup-file-name) (insert-directory = . tramp-handle-insert-directory) (insert-file-contents . tramp-sshfs-handle= -insert-file-contents) (list-system-processes . tramp-handle-list-system-pr= ocesses) (load . tramp-handle-load) (lock-file . tramp-handle-lock-file) (m= ake-auto-save-file-name . tramp-handle-make-auto-save-file-name) (make-dire= ctory . tramp-fuse-handle-make-directory) (make-directory-internal . ignore= ) (make-lock-file-name . tramp-handle-make-lock-file-name) (make-nearby-tem= p-file . tramp-handle-make-nearby-temp-file) (make-process . tramp-handle-m= ake-process) (make-symbolic-link . tramp-handle-make-symbolic-link) (memory= -info . tramp-handle-memory-info) (process-attributes . tramp-handle-proces= s-attributes) (process-file . tramp-sshfs-handle-process-file) (rename-file= . tramp-sshfs-handle-rename-file) (set-file-acl . ignore) (set-file-modes = . tramp-sshfs-handle-set-file-modes) (set-file-selinux-context . ignore) (s= et-file-times . tramp-sshfs-handle-set-file-times) (set-visited-file-modtim= e . tramp-handle-set-visited-file-modtime) (shell-command . tramp-handle-sh= ell-command) (start-file-process . tramp-handle-start-file-process) (substi= tute-in-file-name . tramp-handle-substitute-in-file-name) (temporary-file-d= irectory . tramp-handle-temporary-file-directory) (tramp-get-home-directory= . ignore) (tramp-get-remote-gid . ignore) (tramp-get-remote-groups . ignor= e) (tramp-get-remote-uid . ignore) (tramp-set-file-uid-gid . ignore) (unhan= dled-file-name-directory . ignore) (unlock-file . tramp-handle-unlock-file)= (vc-registered . ignore) (verify-visited-file-modtime . tramp-handle-verif= y-visited-file-modtime) (write-region . tramp-sshfs-handle-write-region)) "\ Alist of handler functions for Tramp SSHFS method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defsubst tramp-sshfs-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for sshfs." (and-let* ((vec (tramp-ensure-d= issected-file-name vec-or-filename)) ((string=3D (tramp-file-name-method ve= c) tramp-sshfs-method))))) (autoload 'tramp-sshfs-file-name-handler "tramp-sshfs" "\ Invoke the sshfs handler for OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-sshf= s-file-name-p #'tramp-sshfs-file-name-handler)) ;;; Generated autoloads from tramp-sudoedit.el (defconst tramp-sudoedit-method "sudoedit" "\ When this method name is used, call sudoedit for editing a file.") (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-sudoedit-method (= tramp-sudo-login (("sudo") ("-u" "%u") ("-S") ("-H") ("-p" "Password:") ("-= -"))) (tramp-password-previous-hop t))) (add-to-list 'tramp-default-user-al= ist `(,(rx bos (literal tramp-sudoedit-method) eos) nil ,tramp-root-id-stri= ng)) (tramp-set-completion-function tramp-sudoedit-method tramp-completion-= function-alist-su)) (defconst tramp-sudoedit-file-name-handler-alist '((abbreviate-file-name . = tramp-handle-abbreviate-file-name) (access-file . tramp-handle-access-file)= (add-name-to-file . tramp-sudoedit-handle-add-name-to-file) (byte-compiler= -base-file-name . ignore) (copy-directory . tramp-handle-copy-directory) (c= opy-file . tramp-sudoedit-handle-copy-file) (delete-directory . tramp-sudoe= dit-handle-delete-directory) (delete-file . tramp-sudoedit-handle-delete-fi= le) (diff-latest-backup-file . ignore) (directory-files . tramp-handle-dire= ctory-files) (directory-files-and-attributes . tramp-handle-directory-files= -and-attributes) (dired-compress-file . ignore) (dired-uncache . tramp-hand= le-dired-uncache) (exec-path . ignore) (expand-file-name . tramp-sudoedit-h= andle-expand-file-name) (file-accessible-directory-p . tramp-handle-file-ac= cessible-directory-p) (file-acl . tramp-sudoedit-handle-file-acl) (file-att= ributes . tramp-sudoedit-handle-file-attributes) (file-directory-p . tramp-= handle-file-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-e= xecutable-p . tramp-sudoedit-handle-file-executable-p) (file-exists-p . tra= mp-sudoedit-handle-file-exists-p) (file-group-gid . tramp-handle-file-group= -gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file-local-= copy . tramp-handle-file-local-copy) (file-locked-p . tramp-handle-file-loc= ked-p) (file-modes . tramp-handle-file-modes) (file-name-all-completions . = tramp-sudoedit-handle-file-name-all-completions) (file-name-as-directory . = tramp-handle-file-name-as-directory) (file-name-case-insensitive-p . tramp-= handle-file-name-case-insensitive-p) (file-name-completion . tramp-handle-f= ile-name-completion) (file-name-directory . tramp-handle-file-name-director= y) (file-name-nondirectory . tramp-handle-file-name-nondirectory) (file-new= er-than-file-p . tramp-handle-file-newer-than-file-p) (file-notify-add-watc= h . tramp-handle-file-notify-add-watch) (file-notify-rm-watch . tramp-handl= e-file-notify-rm-watch) (file-notify-valid-p . tramp-handle-file-notify-val= id-p) (file-ownership-preserved-p . ignore) (file-readable-p . tramp-sudoed= it-handle-file-readable-p) (file-regular-p . tramp-handle-file-regular-p) (= file-remote-p . tramp-handle-file-remote-p) (file-selinux-context . tramp-s= udoedit-handle-file-selinux-context) (file-symlink-p . tramp-handle-file-sy= mlink-p) (file-system-info . tramp-sudoedit-handle-file-system-info) (file-= truename . tramp-sudoedit-handle-file-truename) (file-user-uid . tramp-hand= le-file-user-uid) (file-writable-p . tramp-sudoedit-handle-file-writable-p)= (find-backup-file-name . tramp-handle-find-backup-file-name) (insert-direc= tory . tramp-handle-insert-directory) (insert-file-contents . tramp-handle-= insert-file-contents) (list-system-processes . ignore) (load . tramp-handle= -load) (lock-file . tramp-handle-lock-file) (make-auto-save-file-name . tra= mp-handle-make-auto-save-file-name) (make-directory . tramp-sudoedit-handle= -make-directory) (make-directory-internal . ignore) (make-lock-file-name . = tramp-handle-make-lock-file-name) (make-nearby-temp-file . tramp-handle-mak= e-nearby-temp-file) (make-process . ignore) (make-symbolic-link . tramp-sud= oedit-handle-make-symbolic-link) (memory-info . ignore) (process-attributes= . ignore) (process-file . ignore) (rename-file . tramp-sudoedit-handle-ren= ame-file) (set-file-acl . tramp-sudoedit-handle-set-file-acl) (set-file-mod= es . tramp-sudoedit-handle-set-file-modes) (set-file-selinux-context . tram= p-sudoedit-handle-set-file-selinux-context) (set-file-times . tramp-sudoedi= t-handle-set-file-times) (set-visited-file-modtime . tramp-handle-set-visit= ed-file-modtime) (shell-command . ignore) (start-file-process . ignore) (su= bstitute-in-file-name . tramp-handle-substitute-in-file-name) (temporary-fi= le-directory . tramp-handle-temporary-file-directory) (tramp-get-home-direc= tory . tramp-sudoedit-handle-get-home-directory) (tramp-get-remote-gid . tr= amp-sudoedit-handle-get-remote-gid) (tramp-get-remote-groups . tramp-sudoed= it-handle-get-remote-groups) (tramp-get-remote-uid . tramp-sudoedit-handle-= get-remote-uid) (tramp-set-file-uid-gid . tramp-sudoedit-handle-set-file-ui= d-gid) (unhandled-file-name-directory . ignore) (unlock-file . tramp-handle= -unlock-file) (vc-registered . ignore) (verify-visited-file-modtime . tramp= -handle-verify-visited-file-modtime) (write-region . tramp-handle-write-reg= ion)) "\ Alist of handler functions for Tramp SUDOEDIT method.") (defsubst tramp-sudoedit-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for SUDOEDIT." (and-let* ((vec (tramp-ensur= e-dissected-file-name vec-or-filename)) ((string=3D (tramp-file-name-method= vec) tramp-sudoedit-method))))) (autoload 'tramp-sudoedit-file-name-handler "tramp-sudoedit" "\ Invoke the SUDOEDIT handler for OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-sudo= edit-file-name-p #'tramp-sudoedit-file-name-handler)) ;;; Generated autoloads from tramp-uu.el (autoload 'tramp-uuencode-region "tramp-uu" "\ UU-encode the region between BEG and END. (fn BEG END)") ;;; Generated autoloads from trampver.el (defconst tramp-version "2.8.1-pre" "\ This version of Tramp.") (defconst tramp-bug-report-address "tramp-devel@gnu.org" "\ Email address to send bug reports to.") ;;; End of scraped data (provide 'tramp-loaddefs) ;; Local Variables: ;; version-control: never ;; no-update-autoloads: t ;; no-native-compile: t ;; coding: utf-8-emacs-unix ;; End: ;;; tramp-loaddefs.el ends here --=-=-= Content-Type: text/plain > Can you try a build again with `make bootstrap' and see whether the > warning disappears and if that section of lisp/net/tramp-loaddefs.el > changes? My guess is this is a harmless warning. The errors are the same, and here's tramp-loaddefs.el after bootstrap --=-=-= Content-Type: application/emacs-lisp Content-Disposition: attachment; filename=tramp-loaddefs-after-bootstrap.el Content-Transfer-Encoding: quoted-printable ;;; tramp-loaddefs.el --- automatically extracted autoloads (do not edit) = -*- lexical-binding: t -*- ;; Generated by the `loaddefs-generate' function. ;; This file is part of GNU Emacs. ;;; Code: ;;; Generated autoloads from tramp.el (defvar tramp--startup-hook nil "\ Forms to be executed at the end of tramp.el.") (put 'tramp--startup-hook 'tramp-suppress-trace t) (unless (assq 'autoload-macro macro-declarations-alist) (push '(autoload-ma= cro ignore) macro-declarations-alist)) (defmacro tramp--with-startup (&rest body) "\ Schedule BODY to be executed at the end of tramp.el." (declare (autoload-ma= cro expand)) `(add-hook 'tramp--startup-hook (lambda nil ,@body))) (eval-and-compile (defalias 'tramp-byte-run--set-suppress-trace #'(lambda (= f _args val) (list 'function-put (list 'quote f) ''tramp-suppress-trace val= ))) (add-to-list 'defun-declarations-alist (list 'tramp-suppress-trace #'tr= amp-byte-run--set-suppress-trace))) (defconst tramp-system-name (or (system-name) "") "\ The system name Tramp is running locally.") (defvar tramp-methods nil "\ Alist of methods for remote files. This is a list of entries of the form (NAME PARAM1 PARAM2 ...). Each NAME stands for a remote access method. Each PARAM is a pair of the form (KEY VALUE). The following KEYs are defined: * `tramp-remote-shell' This specifies the shell to use on the remote host. This MUST be a Bourne-like shell. It is normally not necessary to set this to any value other than \"/bin/sh\": Tramp wants to use a shell which groks tilde expansion, but it can search for it. Also note that \"/bin/sh\" exists on all Unixen except Android, this might not be true for the value that you decide to use. You Have Been Warned. * `tramp-remote-shell-login' This specifies the arguments to let `tramp-remote-shell' run as a login shell. It defaults to (\"-l\"), but some shells, like ksh, require another argument. See `tramp-connection-properties' for a way to overwrite the default value. * `tramp-remote-shell-args' For implementation of `shell-command', this specifies the arguments to let `tramp-remote-shell' run a single command. * `tramp-login-program' This specifies the name of the program to use for logging in to the remote host. This may be the name of rsh or a workalike program, or the name of telnet or a workalike, or the name of su or a workalike. * `tramp-login-args' This specifies a list of lists of arguments to pass to the above mentioned program. You normally want to put each argument in an individual string, i.e. (\"-a\" \"-b\") rather than (\"-a -b\"). \"%\" followed by a letter are expanded in the arguments as follows: - \"%h\" is replaced by the host name. - \"%u\" is replaced by the user name. - \"%p\" is replaced by the port number. - \"%%\" can be used to obtain a literal percent character. If a sub-list containing \"%h\", \"%u\" or \"%p\" is unchanged after expansion (i.e. no host, no user or no port were specified), that sublist is not used. For e.g. \\=3D'((\"-a\" \"-b\") (\"-l\" \"%u\")) that means that (\"-l\" \"%u\") is used only if the user was specified, and it is thus effectively optional. Other expansions are: - \"%l\" is replaced by the login shell `tramp-remote-shell' and its parameters. - \"%t\" is replaced by the temporary file name produced with `tramp-make-tramp-temp-file'. - \"%k\" indicates the keep-date parameter of a program, if exists. - \"%c\" adds additional `tramp-ssh-controlmaster-options' options for the first hop. - \"%n\" expands to \"2>/dev/null\". - \"%x\" is replaced by the `tramp-scp-strict-file-name-checking' argument if it is supported. - \"%y\" is replaced by the `tramp-scp-force-scp-protocol' argument if it is supported. - \"%z\" is replaced by the `tramp-scp-direct-remote-copying' argument if it is supported. - \"%d\" is replaced by the device detected by `tramp-adb-get-device'. - \"%a\" adds the pseudo-terminal allocation argument \"-t\" in asynchronous processes, if the connection type is not `pipe'. The existence of `tramp-login-args', combined with the absence of `tramp-copy-args', is an indication that the method is capable of multi-hops. * `tramp-async-args' When an asynchronous process is started, we know already that the connection works. Therefore, we can pass additional parameters to suppress diagnostic messages, in order not to tamper the process output. * `tramp-direct-async' Whether the method supports direct asynchronous processes. Until now, just \"ssh\"-based, \"sshfs\"-based, \"adb\"-based and container methods do. If it is a list of strings, they are used to construct the remote command. * `tramp-copy-program' This specifies the name of the program to use for remotely copying the file; this might be the absolute filename of scp or the name of a workalike program. It is always applied on the local host. * `tramp-copy-args' This specifies the list of parameters to pass to the above mentioned program, the hints for `tramp-login-args' also apply here. * `tramp-copy-file-name' The remote source or destination file name for out-of-band methods. You can use \"%u\" and \"%h\" like in `tramp-login-args'. Additionally, \"%f\" denotes the local file name part. This list will be expanded to a string without spaces between the elements of the list. The default value is `tramp-default-copy-file-name'. * `tramp-copy-env' A list of environment variables and their values, which will be set when calling `tramp-copy-program'. * `tramp-remote-copy-program' The listener program to be applied on remote side, if needed. * `tramp-remote-copy-args' The list of parameters to pass to the listener program, the hints for `tramp-login-args' also apply here. Additionally, \"%r\" could be used here and in `tramp-copy-args'. It denotes a randomly chosen port for the remote listener. * `tramp-copy-keep-date' This specifies whether the copying program preserves the timestamp of the original file. * `tramp-copy-keep-tmpfile' This specifies whether a temporary local file shall be kept for optimization reasons (useful for \"rsync\" methods). * `tramp-copy-recursive' Whether the operation copies directories recursively. * `tramp-default-port' The default port of a method. * `tramp-tmpdir' A directory on the remote host for temporary files. If not specified, \"/tmp\" is taken as default. * `tramp-connection-timeout' This is the maximum time to be spent for establishing a connection. In general, the global default value shall be used, but for some methods, like \"doas\", \"su\" or \"sudo\", a shorter timeout might be desirable. * `tramp-session-timeout' How long a Tramp connection keeps open before being disconnected. This is useful for methods like \"doas\" or \"sudo\", which shouldn't run an open connection in the background forever. * `tramp-password-previous-hop' The password for this connection is the same like the password for the previous hop. If there is no previous hop, the password of the local user is applied. This is needed for methods like \"doas\", \"sudo\" or \"sudoedit\". * `tramp-case-insensitive' Whether the remote file system handles file names case insensitive. Only a non-nil value counts, the default value nil means to perform further checks on the remote host. See `tramp-connection-properties' for a way to overwrite this. * `tramp-mount-args' * `tramp-copyto-args' * `tramp-moveto-args' * `tramp-about-args' These parameters, a list of list like `tramp-login-args', are used for the \"rclone\" method, and are appended to the respective \"rclone\" commands. In general, they shouldn't be changed inside `tramp-methods'; it is recommended to change their values via `tramp-connection-properties'. Unlike `tramp-login-args' there is no pattern replacement. What does all this mean? Well, you should specify `tramp-login-program' for all methods; this program is used to log in to the remote site. Then, there are two ways to actually transfer the files between the local and the remote side. One way is using an additional scp-like program. If you want to do this, set `tramp-copy-program' in the method. Another possibility for file transfer is inline transfer, i.e. the file is passed through the same buffer used by `tramp-login-program'. In this case, the file contents need to be protected since the `tramp-login-program' might use escape codes or the connection might not be eight-bit clean. Therefore, file contents are encoded for transit. See the variables `tramp-local-coding-commands' and `tramp-remote-coding-commands' for details. So, to summarize: if the method is an out-of-band method, then you must specify `tramp-copy-program' and `tramp-copy-args'. If it is an inline method, then these two parameters should be nil. Notes: All these arguments can be overwritten by connection properties. See Info node `(tramp) Predefined connection information'. When using `su', `sudo' or `doas' the phrase \"open connection to a remote host\" sounds strange, but it is used nevertheless, for consistency. No connection is opened to a remote host, but `su', `sudo' or `doas' is started on the local host. You should specify a remote host `localhost' or the name of the local host. Another host name is useful only in combination with `tramp-default-proxies-alist'.") (defvar tramp-default-method-alist nil "\ Default method to use for specific host/user pairs. This is an alist of items (HOST USER METHOD). The first matching item specifies the method to use for a file name which does not specify a method. HOST and USER are regular expressions or nil, which is interpreted as a regular expression which always matches. If no entry matches, the variable `tramp-default-method' takes effect. If the file name does not specify the user, lookup is done using the empty string for the user name. See `tramp-methods' for a list of possibilities for METHOD.") (custom-autoload 'tramp-default-method-alist "tramp" t) (defvar tramp-default-user-alist nil "\ Default user to use for specific method/host pairs. This is an alist of items (METHOD HOST USER). The first matching item specifies the user to use for a file name which does not specify a user. METHOD and HOST are regular expressions or nil, which is interpreted as a regular expression which always matches. If no entry matches, the variable `tramp-default-user' takes effect. If the file name does not specify the method, lookup is done using the empty string for the method name.") (custom-autoload 'tramp-default-user-alist "tramp" t) (defvar tramp-default-host-alist nil "\ Default host to use for specific method/user pairs. This is an alist of items (METHOD USER HOST). The first matching item specifies the host to use for a file name which does not specify a host. METHOD and USER are regular expressions or nil, which is interpreted as a regular expression which always matches. If no entry matches, the variable `tramp-default-host' takes effect. If the file name does not specify the method, lookup is done using the empty string for the method name.") (custom-autoload 'tramp-default-host-alist "tramp" t) (defvar tramp-local-host-regexp (rx bos (| (literal tramp-system-name) (| "= localhost" "127.0.0.1" "::1" "localhost4" "localhost6" "ip6-localhost" "ip6= -loopback" "ipv6-localhost" "ipv6-loopback")) eos) "\ Host names which are regarded as local host. If the local host runs a chrooted environment, set this to nil.") (custom-autoload 'tramp-local-host-regexp "tramp" t) (defvar tramp-terminal-type "dumb" "\ Value of TERM environment variable for logging in to remote host. Because Tramp wants to parse the output of the remote shell, it is easily confused by ANSI control escape sequences and suchlike. Often, shell init files conditionalize this setup based on the TERM environment variable.") (custom-autoload 'tramp-terminal-type "tramp" t) (defconst tramp-root-id-string "root" "\ String used to denote the root user or group.") (defvar tramp-remote-path '(tramp-default-remote-path "/bin" "/usr/bin" "/s= bin" "/usr/sbin" "/usr/local/bin" "/usr/local/sbin" "/local/bin" "/local/fr= eeware/bin" "/local/gnu/bin" "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contr= ib/bin" "/opt/bin" "/opt/sbin" "/opt/local/bin" "/opt/homebrew/bin" "/opt/h= omebrew/sbin") "\ List of directories to search for executables on remote host. For every remote host, this variable will be set buffer local, keeping the list of existing directories on that host. You can use \"~\" in this list, but when searching for a shell which groks tilde expansion, all directory names starting with \"~\" will be ignored. `Default Directories' represent the list of directories given by the command \"getconf PATH\". It is recommended to use this entry on head of this list, because these are the default directories for POSIX compatible commands. On remote hosts which do not offer the getconf command, the value \"/bin:/usr/bin\" is used instead. This entry is represented in the list by the special value `tramp-default-remote-path'. `Private Directories' are the settings of the $PATH environment, as given in your `~/.profile'. This entry is represented in the list by the special value `tramp-own-remote-path'. For a full discussion, see Info node `(tramp) Remote programs'.") (custom-autoload 'tramp-remote-path "tramp" t) (defvar tramp-current-connection nil "\ Last connection timestamp. It is a cons cell of the actual `tramp-file-name-structure', and the (optional) timestamp of last activity on this connection.") (require 'cl-lib) (cl-defstruct (tramp-file-name (:type list) :named) method user domain host= port localname hop) (defconst tramp-null-hop (make-tramp-file-name :method "local" :user (user-= login-name) :host tramp-system-name) "\ Connection hop which identifies the virtual hop before the first one. Used also for caching properties of the local machine.") (autoload 'tramp-file-name-unify "tramp" "\ Unify VEC by removing localname and hop from `tramp-file-name' structure. IF VEC is nil, set it to `tramp-null-hop'. If LOCALNAME is an absolute file name, set it as localname. If LOCALNAME is a relative file name, return `tramp-cache-undefined'. Objects returned by this function compare `equal' if they refer to the same connection. Make a copy in order to avoid side effects. (fn VEC &optional LOCALNAME)") (autoload 'tramp-tramp-file-p "tramp" "\ Return t if NAME is a string with Tramp file name syntax. (fn NAME)") (autoload 'tramp-file-local-name "tramp" "\ Return the local name component of NAME. This function removes from NAME the specification of the remote host and the method of accessing the host, leaving only the part that identifies NAME locally on the remote system. If NAME does not match `tramp-file-name-regexp', just `file-local-name' is called. The returned file name can be used directly as argument of `make-process', `process-file', `start-file-process', or `shell-command'. (fn NAME)") (autoload 'tramp-dissect-file-name "tramp" "\ Return a `tramp-file-name' structure of NAME, a remote file name. The structure consists of method, user, domain, host, port, localname (file name on remote host), and hop. Unless NODEFAULT is non-nil, method, user and host are expanded to their default values. For the other file name parts, no default values are used. (fn NAME &optional NODEFAULT)") (autoload 'tramp-ensure-dissected-file-name "tramp" "\ Return a `tramp-file-name' structure for VEC-OR-FILENAME. VEC-OR-FILENAME may be either a string or a `tramp-file-name'. If it's not a Tramp filename, return nil. (fn VEC-OR-FILENAME)") (defsubst tramp-string-empty-or-nil-p (string) "\ Check whether STRING is empty or nil." (or (null string) (string=3D string = ""))) (autoload 'tramp-make-tramp-file-name "tramp" "\ Construct a Tramp file name from ARGS. If LOCALNAME is nil, the value in VEC is used. If it is a symbol, a null localname will be used. Otherwise, LOCALNAME is expected to be a string, which will be used. (fn &rest ARGS)") (set-advertised-calling-convention 'tramp-make-tramp-file-name '(vec &optio= nal localname) '"29.1") (autoload 'tramp-get-connection-buffer "tramp" "\ Get the connection buffer to be used for VEC. Unless DONT-CREATE, the buffer is created when it doesn't exist yet. In case a second asynchronous communication has been started, it is differe= nt from `tramp-get-buffer'. (fn VEC &optional DONT-CREATE)") (defsubst tramp-get-buffer-string (&optional buffer) "\ Return contents of BUFFER. If BUFFER is not a buffer or a buffer name, return the contents of `current-buffer'." (with-current-buffer (if (or (bufferp buffer) (and (s= tringp buffer) (get-buffer buffer))) buffer (current-buffer)) (substring-no= -properties (buffer-string)))) (defvar tramp-inhibit-progress-reporter nil "\ Show Tramp progress reporter in the minibuffer. This variable is used to disable concurrent progress reporter messages.") (autoload 'tramp-set-completion-function "tramp" "\ Set the list of completion functions for METHOD. FUNCTION-LIST is a list of entries of the form (FUNCTION FILE). The FUNCTION is intended to parse FILE according its syntax. It might be a predefined FUNCTION, or a user defined FUNCTION. For the list of predefined FUNCTIONs see `tramp-completion-function-alist'. Example: (tramp-set-completion-function \"ssh\" \\=3D'((tramp-parse-sconfig \"/etc/ssh_config\") (tramp-parse-sconfig \"~/.ssh/config\"))) (fn METHOD FUNCTION-LIST)") (autoload 'tramp-register-foreign-file-name-handler "tramp" "\ Register (FUNC . HANDLER) in `tramp-foreign-file-name-handler-alist'. FUNC is the function, which takes a dissected filename and determines whether HANDLER is to be called. Add operations defined in `HANDLER-alist' to `tramp-file-name-handler'. (fn FUNC HANDLER &optional APPEND)") (autoload 'tramp-active-command-completion-p "tramp" "\ A predicate for Tramp interactive commands. They are completed by `M-x TAB' only if there's an active connection or buf= fer. (fn SYMBOL BUFFER)") (defvar tramp-completion-multi-hop-methods nil "\ Methods for which to provide completions over multi-hop connections.") (custom-autoload 'tramp-completion-multi-hop-methods "tramp" t) ;;; Generated autoloads from tramp-adb.el (defvar tramp-adb-program "adb" "\ Name of the Android Debug Bridge program.") (custom-autoload 'tramp-adb-program "tramp-adb" t) (defconst tramp-adb-method "adb" "\ When this method name is used, forward all calls to Android Debug Bridge.") (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-adb-method (tramp= -login-program ,tramp-adb-program) (tramp-login-args (("-s" "%d") ("shell")= )) (tramp-direct-async t) (tramp-tmpdir "/data/local/tmp") (tramp-default-p= ort 5555))) (add-to-list 'tramp-default-host-alist `(,tramp-adb-method nil = "")) (tramp-set-completion-function tramp-adb-method '((tramp-adb-parse-dev= ice-names "")))) (defconst tramp-adb-file-name-handler-alist '((access-file . tramp-handle-a= ccess-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-direct= ory . tramp-handle-copy-directory) (copy-file . tramp-adb-handle-copy-file)= (delete-directory . tramp-adb-handle-delete-directory) (delete-file . tram= p-adb-handle-delete-file) (directory-file-name . tramp-handle-directory-fil= e-name) (directory-files . tramp-handle-directory-files) (directory-files-a= nd-attributes . tramp-adb-handle-directory-files-and-attributes) (dired-com= press-file . ignore) (dired-uncache . tramp-handle-dired-uncache) (exec-pat= h . tramp-adb-handle-exec-path) (expand-file-name . tramp-handle-expand-fil= e-name) (file-accessible-directory-p . tramp-handle-file-accessible-directo= ry-p) (file-acl . ignore) (file-attributes . tramp-adb-handle-file-attribut= es) (file-directory-p . tramp-handle-file-directory-p) (file-equal-p . tram= p-handle-file-equal-p) (file-executable-p . tramp-adb-handle-file-executabl= e-p) (file-exists-p . tramp-adb-handle-file-exists-p) (file-group-gid . tra= mp-handle-file-group-gid) (file-in-directory-p . tramp-handle-file-in-direc= tory-p) (file-local-copy . tramp-adb-handle-file-local-copy) (file-locked-p= . tramp-handle-file-locked-p) (file-modes . tramp-handle-file-modes) (file= -name-all-completions . tramp-adb-handle-file-name-all-completions) (file-n= ame-as-directory . tramp-handle-file-name-as-directory) (file-name-case-ins= ensitive-p . tramp-handle-file-name-case-insensitive-p) (file-name-completi= on . tramp-handle-file-name-completion) (file-name-directory . tramp-handle= -file-name-directory) (file-name-nondirectory . tramp-handle-file-name-nond= irectory) (file-newer-than-file-p . tramp-handle-file-newer-than-file-p) (f= ile-notify-add-watch . tramp-handle-file-notify-add-watch) (file-notify-rm-= watch . tramp-handle-file-notify-rm-watch) (file-notify-valid-p . tramp-han= dle-file-notify-valid-p) (file-ownership-preserved-p . ignore) (file-readab= le-p . tramp-adb-handle-file-readable-p) (file-regular-p . tramp-handle-fil= e-regular-p) (file-remote-p . tramp-handle-file-remote-p) (file-selinux-con= text . tramp-handle-file-selinux-context) (file-symlink-p . tramp-handle-fi= le-symlink-p) (file-system-info . tramp-adb-handle-file-system-info) (file-= truename . tramp-handle-file-truename) (file-user-uid . tramp-handle-file-u= ser-uid) (file-writable-p . tramp-adb-handle-file-writable-p) (find-backup-= file-name . tramp-handle-find-backup-file-name) (insert-directory . tramp-h= andle-insert-directory) (insert-file-contents . tramp-handle-insert-file-co= ntents) (list-system-processes . tramp-handle-list-system-processes) (load = . tramp-handle-load) (lock-file . tramp-handle-lock-file) (make-auto-save-f= ile-name . tramp-handle-make-auto-save-file-name) (make-directory . tramp-a= db-handle-make-directory) (make-directory-internal . ignore) (make-lock-fil= e-name . tramp-handle-make-lock-file-name) (make-nearby-temp-file . tramp-h= andle-make-nearby-temp-file) (make-process . tramp-adb-handle-make-process)= (make-symbolic-link . tramp-handle-make-symbolic-link) (memory-info . tram= p-handle-memory-info) (process-attributes . tramp-handle-process-attributes= ) (process-file . tramp-adb-handle-process-file) (rename-file . tramp-adb-h= andle-rename-file) (set-file-acl . ignore) (set-file-modes . tramp-adb-hand= le-set-file-modes) (set-file-selinux-context . ignore) (set-file-times . tr= amp-adb-handle-set-file-times) (set-visited-file-modtime . tramp-handle-set= -visited-file-modtime) (shell-command . tramp-handle-shell-command) (start-= file-process . tramp-handle-start-file-process) (substitute-in-file-name . = tramp-handle-substitute-in-file-name) (temporary-file-directory . tramp-han= dle-temporary-file-directory) (tramp-get-home-directory . ignore) (tramp-ge= t-remote-gid . tramp-adb-handle-get-remote-gid) (tramp-get-remote-groups . = tramp-adb-handle-get-remote-groups) (tramp-get-remote-uid . tramp-adb-handl= e-get-remote-uid) (tramp-set-file-uid-gid . ignore) (unhandled-file-name-di= rectory . ignore) (unlock-file . tramp-handle-unlock-file) (vc-registered .= ignore) (verify-visited-file-modtime . tramp-handle-verify-visited-file-mo= dtime) (write-region . tramp-adb-handle-write-region)) "\ Alist of handler functions for Tramp ADB method.") (defsubst tramp-adb-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for ADB." (and-let* ((vec (tramp-ensure-dis= sected-file-name vec-or-filename)) ((string=3D (tramp-file-name-method vec)= tramp-adb-method))))) (autoload 'tramp-adb-file-name-handler "tramp-adb" "\ Invoke the ADB handler for OPERATION. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-adb-= file-name-p #'tramp-adb-file-name-handler)) (autoload 'tramp-adb-parse-device-names "tramp-adb" "\ Return a list of (nil host) tuples allowed to access. (fn IGNORE)") ;;; Generated autoloads from tramp-androidsu.el (defconst tramp-androidsu-method "androidsu" "\ When this method name is used, forward all calls to su.") (defvar tramp-androidsu-mount-global-namespace t "\ When non-nil, browse files from within the global mount namespace. On systems that assign each application a unique view of the filesystem by executing them within individual mount namespaces and thus conceal each application's data directories from others, invoke `su' with the option `-mm' in order for the shell launched to run within the global mount namespace, so that Tramp may edit files belonging to any and all applications.") (custom-autoload 'tramp-androidsu-mount-global-namespace "tramp-androidsu" = t) (defvar tramp-androidsu-remote-path '("/system/bin" "/system/xbin") "\ Directories in which to search for transfer programs and the like.") (custom-autoload 'tramp-androidsu-remote-path "tramp-androidsu" t) (defconst tramp-androidsu-local-shell-name "/system/bin/sh" "\ Name of the local shell on Android.") (defconst tramp-androidsu-local-tmp-directory "/data/local/tmp" "\ Name of the local temporary directory on Android.") (autoload 'tramp-enable-androidsu-method "tramp-androidsu" "\ Enable \"androidsu\" method.") (tramp--with-startup (when (eq system-type 'android) (tramp-enable-androids= u-method))) (defconst tramp-androidsu-file-name-handler-alist '((access-file . tramp-ha= ndle-access-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-= directory . tramp-handle-copy-directory) (copy-file . tramp-androidsu-handl= e-copy-file) (delete-directory . tramp-androidsu-handle-delete-directory) (= delete-file . tramp-androidsu-handle-delete-file) (directory-file-name . tr= amp-handle-directory-file-name) (directory-files . tramp-handle-directory-f= iles) (directory-files-and-attributes . tramp-androidsu-handle-directory-fi= les-and-attributes) (dired-compress-file . ignore) (dired-uncache . tramp-h= andle-dired-uncache) (exec-path . tramp-androidsu-handle-exec-path) (expand= -file-name . tramp-handle-expand-file-name) (file-accessible-directory-p . = tramp-handle-file-accessible-directory-p) (file-acl . ignore) (file-attribu= tes . tramp-androidsu-handle-file-attributes) (file-directory-p . tramp-han= dle-file-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-exec= utable-p . tramp-androidsu-handle-file-executable-p) (file-exists-p . tramp= -androidsu-handle-file-exists-p) (file-group-gid . tramp-handle-file-group-= gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file-local-c= opy . tramp-androidsu-handle-file-local-copy) (file-locked-p . tramp-handle= -file-locked-p) (file-modes . tramp-handle-file-modes) (file-name-all-compl= etions . tramp-androidsu-handle-file-name-all-completions) (file-name-as-di= rectory . tramp-handle-file-name-as-directory) (file-name-case-insensitive-= p . tramp-handle-file-name-case-insensitive-p) (file-name-completion . tram= p-handle-file-name-completion) (file-name-directory . tramp-handle-file-nam= e-directory) (file-name-nondirectory . tramp-handle-file-name-nondirectory)= (file-newer-than-file-p . tramp-handle-file-newer-than-file-p) (file-notif= y-add-watch . tramp-handle-file-notify-add-watch) (file-notify-rm-watch . t= ramp-handle-file-notify-rm-watch) (file-notify-valid-p . tramp-handle-file-= notify-valid-p) (file-ownership-preserved-p . ignore) (file-readable-p . tr= amp-androidsu-handle-file-readable-p) (file-regular-p . tramp-handle-file-r= egular-p) (file-remote-p . tramp-handle-file-remote-p) (file-selinux-contex= t . tramp-handle-file-selinux-context) (file-symlink-p . tramp-handle-file-= symlink-p) (file-system-info . tramp-androidsu-handle-file-system-info) (fi= le-truename . tramp-handle-file-truename) (file-user-uid . tramp-handle-fil= e-user-uid) (file-writable-p . tramp-androidsu-handle-file-writable-p) (fin= d-backup-file-name . tramp-handle-find-backup-file-name) (insert-directory = . tramp-handle-insert-directory) (insert-file-contents . tramp-handle-inser= t-file-contents) (list-system-processes . tramp-handle-list-system-processe= s) (load . tramp-handle-load) (lock-file . tramp-handle-lock-file) (make-au= to-save-file-name . tramp-handle-make-auto-save-file-name) (make-directory = . tramp-androidsu-handle-make-directory) (make-directory-internal . ignore)= (make-lock-file-name . tramp-handle-make-lock-file-name) (make-nearby-temp= -file . tramp-handle-make-nearby-temp-file) (make-process . tramp-androidsu= -handle-make-process) (make-symbolic-link . tramp-androidsu-handle-make-sym= bolic-link) (memory-info . tramp-handle-memory-info) (process-attributes . = tramp-handle-process-attributes) (process-file . tramp-androidsu-handle-pro= cess-file) (rename-file . tramp-androidsu-handle-rename-file) (set-file-acl= . ignore) (set-file-modes . tramp-androidsu-handle-set-file-modes) (set-fi= le-selinux-context . ignore) (set-file-times . tramp-androidsu-handle-set-f= ile-times) (set-visited-file-modtime . tramp-handle-set-visited-file-modtim= e) (shell-command . tramp-handle-shell-command) (start-file-process . tramp= -handle-start-file-process) (substitute-in-file-name . tramp-handle-substit= ute-in-file-name) (temporary-file-directory . tramp-handle-temporary-file-d= irectory) (tramp-get-home-directory . ignore) (tramp-get-remote-gid . tramp= -androidsu-handle-get-remote-gid) (tramp-get-remote-groups . tramp-androids= u-handle-get-remote-groups) (tramp-get-remote-uid . tramp-androidsu-handle-= get-remote-uid) (tramp-set-file-uid-gid . ignore) (unhandled-file-name-dire= ctory . ignore) (unlock-file . tramp-handle-unlock-file) (vc-registered . i= gnore) (verify-visited-file-modtime . tramp-handle-verify-visited-file-modt= ime) (write-region . tramp-androidsu-handle-write-region)) "\ Alist of Tramp handler functions for superuser sessions on Android.") (defsubst tramp-androidsu-file-name-p (vec-or-filename) "\ Check whether VEC-OR-FILENAME is for the `androidsu' method." (and-let* ((v= ec (tramp-ensure-dissected-file-name vec-or-filename)) ((equal (tramp-file-= name-method vec) tramp-androidsu-method))))) (autoload 'tramp-androidsu-file-name-handler "tramp-androidsu" "\ Invoke the `androidsu' handler for OPERATION. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-andr= oidsu-file-name-p #'tramp-androidsu-file-name-handler)) ;;; Generated autoloads from tramp-archive.el (defconst tramp-archive-file-name-regexp (eval-when-compile (ignore-errors = (tramp-archive-autoload-file-name-regexp))) "\ Regular expression matching archive file names.") (defconst tramp-archive-method "archive" "\ Method name for archives in GVFS.") (defconst tramp-archive-file-name-handler-alist '((access-file . tramp-arch= ive-handle-access-file) (add-name-to-file . tramp-archive-handle-not-implem= ented) (copy-file . tramp-archive-handle-copy-file) (delete-directory . tra= mp-archive-handle-not-implemented) (delete-file . tramp-archive-handle-not-= implemented) (directory-file-name . tramp-archive-handle-directory-file-nam= e) (directory-files . tramp-archive-handle-directory-files) (directory-file= s-and-attributes . tramp-handle-directory-files-and-attributes) (dired-comp= ress-file . tramp-archive-handle-not-implemented) (dired-uncache . tramp-ar= chive-handle-dired-uncache) (exec-path . ignore) (file-accessible-directory= -p . tramp-handle-file-accessible-directory-p) (file-acl . ignore) (file-at= tributes . tramp-archive-handle-file-attributes) (file-directory-p . tramp-= handle-file-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-e= xecutable-p . tramp-archive-handle-file-executable-p) (file-exists-p . tram= p-archive-handle-file-exists-p) (file-group-gid . tramp-archive-handle-file= -group-gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file-= local-copy . tramp-archive-handle-file-local-copy) (file-locked-p . ignore)= (file-modes . tramp-handle-file-modes) (file-name-all-completions . tramp-= archive-handle-file-name-all-completions) (file-name-case-insensitive-p . i= gnore) (file-name-completion . tramp-handle-file-name-completion) (file-new= er-than-file-p . tramp-handle-file-newer-than-file-p) (file-notify-add-watc= h . ignore) (file-notify-rm-watch . ignore) (file-notify-valid-p . ignore) = (file-ownership-preserved-p . ignore) (file-readable-p . tramp-archive-hand= le-file-readable-p) (file-regular-p . tramp-handle-file-regular-p) (file-se= linux-context . tramp-handle-file-selinux-context) (file-symlink-p . tramp-= archive-handle-file-symlink-p) (file-system-info . tramp-archive-handle-fil= e-system-info) (file-truename . tramp-archive-handle-file-truename) (file-u= ser-uid . tramp-archive-handle-file-user-uid) (file-writable-p . ignore) (f= ind-backup-file-name . ignore) (insert-directory . tramp-archive-handle-ins= ert-directory) (insert-file-contents . tramp-archive-handle-insert-file-con= tents) (list-system-processes . ignore) (load . tramp-archive-handle-load) = (lock-file . ignore) (make-auto-save-file-name . ignore) (make-directory . = tramp-archive-handle-not-implemented) (make-directory-internal . ignore) (m= ake-lock-file-name . ignore) (make-nearby-temp-file . tramp-handle-make-nea= rby-temp-file) (make-process . ignore) (make-symbolic-link . tramp-archive-= handle-not-implemented) (memory-info . ignore) (process-attributes . ignore= ) (process-file . ignore) (rename-file . tramp-archive-handle-not-implement= ed) (set-file-acl . ignore) (set-file-modes . tramp-archive-handle-not-impl= emented) (set-file-selinux-context . ignore) (set-file-times . tramp-archiv= e-handle-not-implemented) (set-visited-file-modtime . tramp-handle-set-visi= ted-file-modtime) (shell-command . tramp-archive-handle-not-implemented) (s= tart-file-process . tramp-archive-handle-not-implemented) (temporary-file-d= irectory . tramp-archive-handle-temporary-file-directory) (tramp-get-home-d= irectory . ignore) (tramp-get-remote-gid . ignore) (tramp-get-remote-groups= . ignore) (tramp-get-remote-uid . ignore) (tramp-set-file-uid-gid . ignore= ) (unhandled-file-name-directory . ignore) (unlock-file . ignore) (vc-regis= tered . ignore) (verify-visited-file-modtime . tramp-handle-verify-visited-= file-modtime) (write-region . tramp-archive-handle-not-implemented)) "\ Alist of handler functions for file archive method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defun tramp-archive-run-real-handler (operation args) "\ Invoke normal file name handler for OPERATION. First arg specifies the OPERATION, second arg ARGS is a list of arguments to pass to the OPERATION." (let* ((inhibit-file-name-handlers `(t= ramp-archive-file-name-handler \, (and (eq inhibit-file-name-operation oper= ation) inhibit-file-name-handlers))) (inhibit-file-name-operation operation= )) (apply operation args))) (autoload 'tramp-archive-file-name-handler "tramp-archive" "\ Invoke the file archive related OPERATION. First arg specifies the OPERATION, second arg ARGS is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (autoload 'tramp-archive-file-name-p "tramp-archive" "\ Return t if NAME is a string with archive file name syntax. (fn NAME)") ;;; Generated autoloads from tramp-cache.el (defvar tramp-cache-data (make-hash-table :test #'equal) "\ Hash table for remote files properties.") (defvar tramp-connection-properties nil "\ List of static connection properties. Every entry has the form (REGEXP PROPERTY VALUE). The regexp matches remote file names. It can be nil. PROPERTY is a string, and VALUE the corresponding value. They are used, if there is no matching entry for PROPERTY in `tramp-cache-data'. PROPERTY can also be a string representing a parameter in `tramp-methods'. For more details see the Info node `(tramp) Predefined connection information'.") (custom-autoload 'tramp-connection-properties "tramp-cache" t) (defvar tramp-persistency-file-name (locate-user-emacs-file "tramp") "\ File which keeps connection history for Tramp connections.") (custom-autoload 'tramp-persistency-file-name "tramp-cache" t) (defconst tramp-cache-version (make-tramp-file-name :method "cache") "\ Virtual connection vector for Tramp version.") (defconst tramp-cache-undefined 'undef "\ The symbol marking undefined hash keys and values.") (autoload 'tramp-get-hash-table "tramp-cache" "\ Return the hash table for KEY. If it doesn't exist yet, it is created and initialized with matching entries of `tramp-connection-properties'. If KEY is `tramp-cache-undefined', don't create anything, and return nil. (fn KEY)") (autoload 'tramp-get-file-property "tramp-cache" "\ Get the PROPERTY of FILE from the cache context of KEY. Return DEFAULT if not set. (fn KEY FILE PROPERTY &optional DEFAULT)") (autoload 'tramp-set-file-property "tramp-cache" "\ Set the PROPERTY of FILE to VALUE, in the cache context of KEY. Return VALUE. (fn KEY FILE PROPERTY VALUE)") (autoload 'tramp-file-property-p "tramp-cache" "\ Check whether PROPERTY of FILE is defined in the cache context of KEY. (fn KEY FILE PROPERTY)") (autoload 'tramp-flush-file-property "tramp-cache" "\ Remove PROPERTY of FILE in the cache context of KEY. (fn KEY FILE PROPERTY)") (autoload 'tramp-flush-file-properties "tramp-cache" "\ Remove all properties of FILE in the cache context of KEY. (fn KEY FILE)") (autoload 'tramp-flush-directory-properties "tramp-cache" "\ Remove all properties of DIRECTORY in the cache context of KEY. Remove also properties of all files in subdirectories. (fn KEY DIRECTORY)") (autoload 'tramp-flush-file-function "tramp-cache" "\ Flush all Tramp cache properties from `buffer-file-name'. This is suppressed for temporary buffers.") (autoload 'with-tramp-file-property "tramp-cache" "\ Check in Tramp cache for PROPERTY, otherwise execute BODY and set cache. FILE must be a local file name on a connection identified via KEY. (fn KEY FILE PROPERTY &rest BODY)" nil t) (function-put 'with-tramp-file-property 'lisp-indent-function 3) (autoload 'with-tramp-saved-file-property "tramp-cache" "\ Save PROPERTY, run BODY, reset PROPERTY. Preserve timestamps. (fn KEY FILE PROPERTY &rest BODY)" nil t) (function-put 'with-tramp-saved-file-property 'lisp-indent-function 3) (autoload 'with-tramp-saved-file-properties "tramp-cache" "\ Save PROPERTIES, run BODY, reset PROPERTIES. PROPERTIES is a list of file properties (strings). Preserve timestamps. (fn KEY FILE PROPERTIES &rest BODY)" nil t) (function-put 'with-tramp-saved-file-properties 'lisp-indent-function 3) (autoload 'tramp-get-connection-property "tramp-cache" "\ Get the named PROPERTY for the connection. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. If KEY is `tramp-cache-undefined', or if the value is not set for the connection, return DEFAULT. (fn KEY PROPERTY &optional DEFAULT)") (autoload 'tramp-set-connection-property "tramp-cache" "\ Set the named PROPERTY of a connection to VALUE. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. If KEY is `tramp-cache-undefined', nothing is set. PROPERTY is set persistent when KEY is a `tramp-file-name' structure. Return VALUE. (fn KEY PROPERTY VALUE)") (autoload 'tramp-connection-property-p "tramp-cache" "\ Check whether named PROPERTY of a connection is defined. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. (fn KEY PROPERTY)") (autoload 'tramp-flush-connection-property "tramp-cache" "\ Remove the named PROPERTY of a connection identified by KEY. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. PROPERTY is set persistent when KEY is a `tramp-file-name' structure. (fn KEY PROPERTY)") (autoload 'tramp-flush-connection-properties "tramp-cache" "\ Remove all properties identified by KEY. KEY identifies the connection, it is either a process or a `tramp-file-name' structure. A special case is nil, which is used to cache connection properties of the local machine. (fn KEY)") (autoload 'with-tramp-connection-property "tramp-cache" "\ Check in Tramp for property PROPERTY, otherwise execute BODY and set. (fn KEY PROPERTY &rest BODY)" nil t) (function-put 'with-tramp-connection-property 'lisp-indent-function 2) (autoload 'with-tramp-saved-connection-property "tramp-cache" "\ Save PROPERTY, run BODY, reset PROPERTY. (fn KEY PROPERTY &rest BODY)" nil t) (function-put 'with-tramp-saved-connection-property 'lisp-indent-function 2) (autoload 'with-tramp-saved-connection-properties "tramp-cache" "\ Save PROPERTIES, run BODY, reset PROPERTIES. PROPERTIES is a list of file properties (strings). (fn KEY PROPERTIES &rest BODY)" nil t) (function-put 'with-tramp-saved-connection-properties 'lisp-indent-function= 2) (autoload 'tramp-cache-print "tramp-cache" "\ Print hash table TABLE. (fn TABLE)") (autoload 'tramp-list-connections "tramp-cache" "\ Return all active `tramp-file-name' structs according to `tramp-cache-data'= .") (defvar tramp-completion-use-cache t "\ Whether to use the Tramp cache for completion of user and host names. Set it to nil if there are invalid entries in the cache, for example if the host configuration changes often, or if you plug your laptop to different networks frequently.") (custom-autoload 'tramp-completion-use-cache "tramp-cache" t) (autoload 'tramp-parse-connection-properties "tramp-cache" "\ Return a list of (user host) tuples allowed to access for METHOD. This function is added always in `tramp-get-completion-function' for all methods. Resulting data are derived from connection history. (fn METHOD)") (defvar tramp-cache-read-persistent-data (or init-file-user site-run-file) = "\ Whether to read persistent data at startup time.") ;;; Generated autoloads from tramp-cmds.el (autoload 'tramp-change-syntax "tramp-cmds" "\ Change Tramp syntax. SYNTAX can be one of the symbols `default' (default), `simplified' (ange-ftp like) or `separate' (XEmacs like). (fn &optional SYNTAX)" t) (autoload 'tramp-enable-method "tramp-cmds" "\ Enable optional METHOD if possible. (fn METHOD)" t) (autoload 'tramp-list-tramp-buffers "tramp-cmds" "\ Return a list of all Tramp connection buffers.") (autoload 'tramp-list-remote-buffers "tramp-cmds" "\ Return a list of remote buffers, excluding internal Tramp buffers. A buffer is considered remote if either its `default-directory' or `buffer-file-name' is a remote file name.") (autoload 'tramp-list-remote-buffer-connections "tramp-cmds" "\ Return a list of all remote buffer connections. A buffer is considered remote if either its `default-directory' or `buffer-file-name' is a remote file name.") (defvar tramp-cleanup-connection-hook nil "\ List of functions to be called after Tramp connection is cleaned up. Each function is called with the current vector as argument.") (autoload 'tramp-cleanup-connection "tramp-cmds" "\ Flush all connection related objects. This includes password cache, file cache, connection cache, buffers, processes. KEEP-DEBUG non-nil preserves the debug and trace buffer. KEEP-PASSWORD non-nil preserves the password cache. KEEP-PROCESSES non-nil preserves the asynchronous processes. When called interactively, a Tramp connection has to be selected. (fn VEC &optional KEEP-DEBUG KEEP-PASSWORD KEEP-PROCESSES)" t) (function-put 'tramp-cleanup-connection 'completion-predicate #'tramp-activ= e-command-completion-p) (autoload 'tramp-cleanup-this-connection "tramp-cmds" "\ Flush all connection related objects of the current buffer's connection." t) (function-put 'tramp-cleanup-this-connection 'completion-predicate #'tramp-= command-completion-p) (defvar tramp-cleanup-all-connections-hook nil "\ List of functions to be called after all Tramp connections are cleaned up.") (autoload 'tramp-cleanup-all-connections "tramp-cmds" "\ Flush all Tramp internal objects. This includes password cache, file cache, connection cache, buffers." t) (function-put 'tramp-cleanup-all-connections 'completion-predicate #'tramp-= active-command-completion-p) (autoload 'tramp-taint-remote-process-buffer "tramp-cmds" "\ Mark buffer as related to remote processes. (fn BUFFER)") (autoload 'tramp-cleanup-some-buffers "tramp-cmds" "\ Kill some remote buffers. A buffer is killed when it has a remote `default-directory', and one of the functions in `tramp-cleanup-some-buffers-hook' returns non-nil." t) (function-put 'tramp-cleanup-some-buffers 'completion-predicate #'tramp-act= ive-command-completion-p) (autoload 'tramp-cleanup-all-buffers "tramp-cmds" "\ Kill all remote buffers." t) (function-put 'tramp-cleanup-all-buffers 'completion-predicate #'tramp-acti= ve-command-completion-p) (autoload 'tramp-cleanup-bufferless-connections "tramp-cmds" "\ Flush connection-related objects for which no buffer exists. A bufferless connection is one for which no live buffer's `buffer-file-name' or `default-directory' is associated with that connection, except for Tramp internal buffers. Display a message of cleaned-up connections." t) (autoload 'tramp-rename-files "tramp-cmds" "\ Replace in all buffers the visiting file name from SOURCE to TARGET. SOURCE is a remote directory name, which could contain also a localname part. TARGET is the directory name SOURCE is replaced with. Often, TARGET is a remote directory name on another host, but it can also be a local directory name. If TARGET has no local part, the local part from SOURCE is used. If TARGET is nil, it is selected according to the first match in `tramp-default-rename-alist'. If called interactively, this match is offered as initial value for selection. On all buffers, which have a `buffer-file-name' matching SOURCE, this name is modified by replacing SOURCE with TARGET. This is applied by calling `set-visited-file-name'. The new `buffer-file-name' is prompted for modification in the minibuffer. The buffers are marked modified, and must be saved explicitly. If user option `tramp-confirm-rename-file-names' is nil, changing the file name happens without confirmation. This requires a matching entry in `tramp-default-rename-alist'. Remote buffers related to the remote connection identified by SOURCE, which are not visiting files, or which are visiting files not matching SOURCE, are not modified. Interactively, TARGET is selected from `tramp-default-rename-alist' without confirmation if the prefix argument is non-nil. The remote connection identified by SOURCE is flushed by `tramp-cleanup-connection'. (fn SOURCE TARGET)" t) (function-put 'tramp-rename-files 'completion-predicate #'tramp-active-comm= and-completion-p) (autoload 'tramp-rename-these-files "tramp-cmds" "\ Replace visiting file names to TARGET. The current buffer must be related to a remote connection. In all buffers, which are visiting a file with the same directory name, the buffer file name is changed. Interactively, TARGET is selected from `tramp-default-rename-alist' without confirmation if the prefix argument is non-nil. For details, see `tramp-rename-files'. (fn TARGET)" t) (function-put 'tramp-rename-these-files 'completion-predicate #'tramp-comma= nd-completion-p) (autoload 'tramp-recompile-elpa-command-completion-p "tramp-cmds" "\ A predicate for `tramp-recompile-elpa'. It is completed by `M-x TAB' only if package.el is loaded, and Tramp is an installed ELPA package. (fn SYMBOL BUFFER)") (autoload 'tramp-recompile-elpa "tramp-cmds" "\ Recompile the installed Tramp ELPA package. This is needed if there are compatibility problems." t) (function-put 'tramp-recompile-elpa 'completion-predicate #'tramp-recompile= -elpa-command-completion-p) (autoload 'tramp-version "tramp-cmds" "\ Print version number of tramp.el in echo area or current buffer. (fn ARG)" t) (autoload 'tramp-bug "tramp-cmds" "\ Submit a bug report to the Tramp developers." t) ;;; Generated autoloads from tramp-container.el (defvar tramp-docker-program "docker" "\ Name of the Docker client program.") (custom-autoload 'tramp-docker-program "tramp-container" t) (defvar tramp-podman-program "podman" "\ Name of the Podman client program.") (custom-autoload 'tramp-podman-program "tramp-container" t) (defvar tramp-kubernetes-program "kubectl" "\ Name of the Kubernetes client program.") (custom-autoload 'tramp-kubernetes-program "tramp-container" t) (defvar tramp-toolbox-program "toolbox" "\ Name of the Toolbox client program.") (custom-autoload 'tramp-toolbox-program "tramp-container" t) (defvar tramp-distrobox-program "distrobox" "\ Name of the Distrobox client program.") (custom-autoload 'tramp-distrobox-program "tramp-container" t) (defvar tramp-flatpak-program "flatpak" "\ Name of the Flatpak client program.") (custom-autoload 'tramp-flatpak-program "tramp-container" t) (defvar tramp-apptainer-program "apptainer" "\ Name of the Apptainer client program.") (custom-autoload 'tramp-apptainer-program "tramp-container" t) (defconst tramp-docker-method "docker" "\ Tramp method name to connect to Docker containers.") (defconst tramp-dockercp-method "dockercp" "\ Tramp method name to connect to Docker containers. This is for out-of-band connections.") (defconst tramp-podman-method "podman" "\ Tramp method name to connect to Podman containers.") (defconst tramp-podmancp-method "podmancp" "\ Tramp method name to connect to Podman containers. This is for out-of-band connections.") (defconst tramp-kubernetes-method "kubernetes" "\ Tramp method name to connect to Kubernetes containers.") (defconst tramp-toolbox-method "toolbox" "\ Tramp method name to connect to Toolbox containers.") (defconst tramp-distrobox-method "distrobox" "\ Tramp method name to connect to Distrobox containers.") (defconst tramp-flatpak-method "flatpak" "\ Tramp method name to connect to Flatpak sandboxes.") (defconst tramp-apptainer-method "apptainer" "\ Tramp method name to connect to Apptainer instances.") (defconst tramp-nspawn-method "nspawn" "\ Tramp method name to connect to systemd-nspawn containers.") (autoload 'tramp-skeleton-completion-function "tramp-container" "\ Skeleton for `tramp-*-completion-function' with multi-hop support. BODY is the backend specific code. (fn METHOD &rest BODY)" nil t) (function-put 'tramp-skeleton-completion-function 'lisp-indent-function 1) (autoload 'tramp-container--completion-function "tramp-container" "\ List running containers available for connection. METHOD is the Tramp method to be used for \"ps\", either `tramp-docker-method', `tramp-dockercp-method', `tramp-podman-method', or `tramp-podmancp-method'. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-kubernetes--completion-function "tramp-container" "\ List Kubernetes pods available for connection. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-kubernetes--container "tramp-container" "\ Extract the container name from a kubernetes host name in VEC. (fn VEC)") (autoload 'tramp-kubernetes--pod "tramp-container" "\ Extract the pod name from a kubernetes host name in VEC. (fn VEC)") (autoload 'tramp-kubernetes--namespace "tramp-container" "\ Extract the namespace from a kubernetes host name in VEC. Use `tramp-kubernetes-namespace' otherwise. (fn VEC)") (autoload 'tramp-kubernetes--context-namespace "tramp-container" "\ The kubectl options for context and namespace as string. (fn VEC)") (autoload 'tramp-toolbox--completion-function "tramp-container" "\ List Toolbox containers available for connection. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-distrobox--completion-function "tramp-container" "\ List Distrobox containers available for connection. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-flatpak--completion-function "tramp-container" "\ List Flatpak sandboxes available for connection. It returns application IDs or, in case there is no application ID, instance IDs. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (autoload 'tramp-apptainer--completion-function "tramp-container" "\ List Apptainer instances available for connection. This function is used by `tramp-set-completion-function', please see its function help for a description of the format. (fn METHOD)") (defvar tramp-default-remote-shell) (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-docker-method (tr= amp-login-program ,tramp-docker-program) (tramp-login-args (("exec") ("-it"= ) ("-u" "%u") ("-e" ,(format "TERM=3D%s" tramp-terminal-type)) ("%h") ("%l"= ))) (tramp-direct-async (,tramp-default-remote-shell "-c")) (tramp-remote-s= hell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (tramp-= remote-shell-args ("-i" "-c")) (tramp-completion-use-cache nil))) (add-to-l= ist 'tramp-methods `(,tramp-dockercp-method (tramp-login-program ,tramp-doc= ker-program) (tramp-login-args (("exec") ("-it") ("-u" "%u") ("-e" ,(format= "TERM=3D%s" tramp-terminal-type)) ("%h") ("%l"))) (tramp-direct-async (,tr= amp-default-remote-shell "-c")) (tramp-remote-shell ,tramp-default-remote-s= hell) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-i" "-c"= )) (tramp-copy-program ,tramp-docker-program) (tramp-copy-args (("cp"))) (t= ramp-copy-file-name (("%h" ":") ("%f"))) (tramp-copy-recursive t) (tramp-co= mpletion-use-cache nil))) (add-to-list 'tramp-methods `(,tramp-podman-metho= d (tramp-login-program ,tramp-podman-program) (tramp-login-args (("exec") (= "-it") ("-u" "%u") ("-e" ,(format "TERM=3D%s" tramp-terminal-type)) ("%h") = ("%l"))) (tramp-direct-async (,tramp-default-remote-shell "-c")) (tramp-rem= ote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (t= ramp-remote-shell-args ("-i" "-c")) (tramp-completion-use-cache nil))) (add= -to-list 'tramp-methods `(,tramp-podmancp-method (tramp-login-program ,tram= p-podman-program) (tramp-login-args (("exec") ("-it") ("-u" "%u") ("-e" ,(f= ormat "TERM=3D%s" tramp-terminal-type)) ("%h") ("%l"))) (tramp-direct-async= (,tramp-default-remote-shell "-c")) (tramp-remote-shell ,tramp-default-rem= ote-shell) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-i"= "-c")) (tramp-copy-program ,tramp-podman-program) (tramp-copy-args (("cp")= )) (tramp-copy-file-name (("%h" ":") ("%f"))) (tramp-copy-recursive t) (tra= mp-completion-use-cache nil))) (add-to-list 'tramp-methods `(,tramp-kuberne= tes-method (tramp-login-program ,tramp-kubernetes-program) (tramp-login-arg= s (("%x") ("exec") ("-c" "%a") ("%h") ("-it") ("--") ("%l"))) (tramp-direct= -async (,tramp-default-remote-shell "-c")) (tramp-remote-shell ,tramp-defau= lt-remote-shell) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args= ("-i" "-c")) (tramp-completion-use-cache nil))) (add-to-list 'tramp-comple= tion-multi-hop-methods tramp-docker-method) (add-to-list 'tramp-completion-= multi-hop-methods tramp-podman-method) (add-to-list 'tramp-completion-multi= -hop-methods tramp-kubernetes-method) (tramp-set-completion-function tramp-= docker-method `((tramp-container--completion-function ,tramp-docker-method)= )) (tramp-set-completion-function tramp-dockercp-method `((tramp-container-= -completion-function ,tramp-dockercp-method))) (tramp-set-completion-functi= on tramp-podman-method `((tramp-container--completion-function ,tramp-podma= n-method))) (tramp-set-completion-function tramp-podmancp-method `((tramp-c= ontainer--completion-function ,tramp-podmancp-method))) (tramp-set-completi= on-function tramp-kubernetes-method `((tramp-kubernetes--completion-functio= n ,tramp-kubernetes-method))) (defconst tramp-kubernetes-connection-local-d= efault-variables '((tramp-config-check . tramp-kubernetes--current-context-= data) (tramp-extra-expand-args 97 (tramp-kubernetes--container (car tramp-c= urrent-connection)) 104 (tramp-kubernetes--pod (car tramp-current-connectio= n)) 120 (tramp-kubernetes--context-namespace (car tramp-current-connection)= ))) "Default connection-local variables for remote kubernetes connections."= ) (connection-local-set-profile-variables 'tramp-kubernetes-connection-loca= l-default-profile tramp-kubernetes-connection-local-default-variables) (con= nection-local-set-profiles `(:application tramp :protocol ,tramp-kubernetes= -method) 'tramp-kubernetes-connection-local-default-profile)) (autoload 'tramp-enable-toolbox-method "tramp-container" "\ Enable connection to Toolbox containers.") (autoload 'tramp-enable-distrobox-method "tramp-container" "\ Enable connection to Distrobox containers.") (autoload 'tramp-enable-flatpak-method "tramp-container" "\ Enable connection to Flatpak sandboxes.") (autoload 'tramp-enable-apptainer-method "tramp-container" "\ Enable connection to Apptainer instances.") (autoload 'tramp-enable-nspawn-method "tramp-container" "\ Enable connection to nspawn containers.") ;;; Generated autoloads from tramp-crypt.el (defvar tramp-crypt-enabled nil "\ Non-nil when encryption support is available.") (defconst tramp-crypt-encfs-config ".encfs6.xml" "\ Encfs configuration file name.") (defvar tramp-crypt-directories nil "\ List of encrypted remote directories.") (defsubst tramp-crypt-file-name-p (name) "\ Return the encrypted remote directory NAME belongs to. If NAME doesn't belong to an encrypted remote directory, return nil." (catc= h 'crypt-file-name-p (and tramp-crypt-enabled (stringp name) (not (file-nam= e-quoted-p name)) (not (string-suffix-p tramp-crypt-encfs-config name)) (no= t (string-prefix-p ".#" (file-name-nondirectory name))) (dolist (dir tramp-= crypt-directories) (and (string-prefix-p dir (file-name-as-directory (expan= d-file-name name))) (throw 'crypt-file-name-p dir)))))) (defconst tramp-crypt-file-name-handler-alist '((abbreviate-file-name . ide= ntity) (access-file . tramp-crypt-handle-access-file) (add-name-to-file . t= ramp-handle-add-name-to-file) (copy-directory . tramp-handle-copy-directory= ) (copy-file . tramp-crypt-handle-copy-file) (delete-directory . tramp-cryp= t-handle-delete-directory) (delete-file . tramp-crypt-handle-delete-file) (= directory-files . tramp-crypt-handle-directory-files) (directory-files-and-= attributes . tramp-handle-directory-files-and-attributes) (dired-compress-f= ile . ignore) (dired-uncache . tramp-handle-dired-uncache) (exec-path . ign= ore) (file-accessible-directory-p . tramp-handle-file-accessible-directory-= p) (file-acl . ignore) (file-attributes . tramp-crypt-handle-file-attribute= s) (file-directory-p . tramp-handle-file-directory-p) (file-equal-p . tramp= -handle-file-equal-p) (file-executable-p . tramp-crypt-handle-file-executab= le-p) (file-exists-p . tramp-crypt-handle-file-exists-p) (file-in-directory= -p . tramp-handle-file-in-directory-p) (file-local-copy . tramp-handle-file= -local-copy) (file-locked-p . tramp-crypt-handle-file-locked-p) (file-modes= . tramp-handle-file-modes) (file-name-all-completions . tramp-crypt-handle= -file-name-all-completions) (file-name-case-insensitive-p . ignore) (file-n= ame-completion . tramp-handle-file-name-completion) (file-newer-than-file-p= . tramp-handle-file-newer-than-file-p) (file-notify-add-watch . tramp-hand= le-file-notify-add-watch) (file-notify-rm-watch . tramp-handle-file-notify-= rm-watch) (file-notify-valid-p . tramp-handle-file-notify-valid-p) (file-ow= nership-preserved-p . tramp-crypt-handle-file-ownership-preserved-p) (file-= readable-p . tramp-crypt-handle-file-readable-p) (file-regular-p . tramp-ha= ndle-file-regular-p) (file-selinux-context . ignore) (file-symlink-p . tram= p-handle-file-symlink-p) (file-system-info . tramp-crypt-handle-file-system= -info) (file-writable-p . tramp-crypt-handle-file-writable-p) (find-backup-= file-name . tramp-handle-find-backup-file-name) (insert-directory . tramp-c= rypt-handle-insert-directory) (insert-file-contents . tramp-handle-insert-f= ile-contents) (list-system-processes . ignore) (load . tramp-handle-load) (= lock-file . tramp-crypt-handle-lock-file) (make-auto-save-file-name . tramp= -handle-make-auto-save-file-name) (make-directory . tramp-crypt-handle-make= -directory) (make-directory-internal . ignore) (make-lock-file-name . tramp= -handle-make-lock-file-name) (make-nearby-temp-file . tramp-handle-make-nea= rby-temp-file) (make-process . ignore) (make-symbolic-link . tramp-handle-m= ake-symbolic-link) (memory-info . ignore) (process-attributes . ignore) (pr= ocess-file . ignore) (rename-file . tramp-crypt-handle-rename-file) (set-fi= le-acl . ignore) (set-file-modes . tramp-crypt-handle-set-file-modes) (set-= file-selinux-context . ignore) (set-file-times . tramp-crypt-handle-set-fil= e-times) (set-visited-file-modtime . tramp-crypt-handle-set-visited-file-mo= dtime) (shell-command . ignore) (start-file-process . ignore) (temporary-fi= le-directory . tramp-handle-temporary-file-directory) (tramp-set-file-uid-g= id . tramp-crypt-handle-set-file-uid-gid) (unhandled-file-name-directory . = ignore) (unlock-file . tramp-crypt-handle-unlock-file) (vc-registered . ign= ore) (verify-visited-file-modtime . tramp-crypt-handle-verify-visited-file-= modtime) (write-region . tramp-handle-write-region)) "\ Alist of handler functions for crypt method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (autoload 'tramp-crypt-file-name-handler "tramp-crypt" "\ Invoke the encrypted remote file related OPERATION. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (defun tramp-register-crypt-file-name-handler nil "\ Add crypt file name handler to `file-name-handler-alist'." (when (and tramp= -crypt-enabled tramp-crypt-directories) (add-to-list 'file-name-handler-ali= st (cons tramp-file-name-regexp #'tramp-crypt-file-name-handler)) (put #'tr= amp-crypt-file-name-handler 'safe-magic t))) (autoload 'tramp-crypt-add-directory "tramp-crypt" "\ Mark expanded remote directory NAME for encryption. Files in that directory and all subdirectories will be encrypted before copying to, and decrypted after copying from that directory. File names will be also encrypted. (fn NAME)" t) ;;; Generated autoloads from tramp-ftp.el (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\ Reenable Ange-FTP, when Tramp is unloaded.") (defconst tramp-ftp-method "ftp" "\ When this method name is used, forward all calls to Ange-FTP.") (tramp--with-startup (add-to-list 'tramp-methods (cons tramp-ftp-method nil= )) (add-to-list 'tramp-default-method-alist (list (rx bos "ftp.") nil tramp= -ftp-method)) (add-to-list 'tramp-default-method-alist (list nil (rx bos (|= "anonymous" "ftp") eos) tramp-ftp-method)) (tramp-set-completion-function = tramp-ftp-method '((tramp-parse-netrc "~/.netrc")))) (autoload 'tramp-ftp-file-name-handler "tramp-ftp" "\ Invoke the Ange-FTP handler for OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (defsubst tramp-ftp-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME that should be forwarded to Ange-FTP." (and= -let* ((vec (tramp-ensure-dissected-file-name vec-or-filename)) ((string=3D= (tramp-file-name-method vec) tramp-ftp-method))))) (tramp--with-startup (add-to-list 'tramp-foreign-file-name-handler-alist (c= ons #'tramp-ftp-file-name-p #'tramp-ftp-file-name-handler))) ;;; Generated autoloads from tramp-fuse.el (defconst tramp-fuse-name-prefix "tramp-" "\ Prefix to use for temporary FUSE mount points.") ;;; Generated autoloads from tramp-gvfs.el (defvar tramp-gvfs-methods '("afp" "dav" "davs" "gdrive" "mtp" "nextcloud" = "sftp") "\ List of methods for remote files, accessed with GVFS.") (custom-autoload 'tramp-gvfs-methods "tramp-gvfs" t) (defconst tramp-goa-methods '("gdrive" "nextcloud") "\ List of methods which require registration at GNOME Online Accounts.") (defvar tramp-media-methods '("afc" "gphoto2" "mtp") "\ List of GVFS methods which are covered by the \"mtp\" method. They are checked during start up via `tramp-gvfs-interface-remotevolumemonitor'.") (when (featurep 'dbusbind) (tramp--with-startup (dolist (method tramp-gvfs-= methods) (unless (assoc method tramp-methods) (add-to-list 'tramp-methods `= (,method))) (when (member method tramp-goa-methods) (add-to-list 'tramp-def= ault-host-alist `(,method nil "")))))) (defconst tramp-goa-service "org.gnome.OnlineAccounts" "\ The well known name of the GNOME Online Accounts service.") (defconst tramp-gvfs-service-afc-volumemonitor "org.gtk.vfs.AfcVolumeMonito= r" "\ The well known name of the AFC volume monitor.") (defconst tramp-gvfs-service-gphoto2-volumemonitor "org.gtk.vfs.GPhoto2Volu= meMonitor" "\ The well known name of the GPhoto2 volume monitor.") (defconst tramp-gvfs-service-mtp-volumemonitor "org.gtk.vfs.MTPVolumeMonito= r" "\ The well known name of the MTP volume monitor.") (defconst tramp-gvfs-file-name-handler-alist '((abbreviate-file-name . tram= p-handle-abbreviate-file-name) (access-file . tramp-handle-access-file) (ad= d-name-to-file . tramp-handle-add-name-to-file) (copy-directory . tramp-han= dle-copy-directory) (copy-file . tramp-gvfs-handle-copy-file) (delete-direc= tory . tramp-gvfs-handle-delete-directory) (delete-file . tramp-gvfs-handle= -delete-file) (directory-file-name . tramp-handle-directory-file-name) (dir= ectory-files . tramp-handle-directory-files) (directory-files-and-attribute= s . tramp-handle-directory-files-and-attributes) (dired-compress-file . ign= ore) (dired-uncache . tramp-handle-dired-uncache) (exec-path . ignore) (exp= and-file-name . tramp-gvfs-handle-expand-file-name) (file-accessible-direct= ory-p . tramp-handle-file-accessible-directory-p) (file-acl . ignore) (file= -attributes . tramp-gvfs-handle-file-attributes) (file-directory-p . tramp-= handle-file-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-e= xecutable-p . tramp-gvfs-handle-file-executable-p) (file-exists-p . tramp-h= andle-file-exists-p) (file-group-gid . tramp-handle-file-group-gid) (file-i= n-directory-p . tramp-handle-file-in-directory-p) (file-local-copy . tramp-= handle-file-local-copy) (file-locked-p . tramp-handle-file-locked-p) (file-= modes . tramp-handle-file-modes) (file-name-all-completions . tramp-gvfs-ha= ndle-file-name-all-completions) (file-name-as-directory . tramp-handle-file= -name-as-directory) (file-name-case-insensitive-p . tramp-handle-file-name-= case-insensitive-p) (file-name-completion . tramp-handle-file-name-completi= on) (file-name-directory . tramp-handle-file-name-directory) (file-name-non= directory . tramp-handle-file-name-nondirectory) (file-newer-than-file-p . = tramp-handle-file-newer-than-file-p) (file-notify-add-watch . tramp-gvfs-ha= ndle-file-notify-add-watch) (file-notify-rm-watch . tramp-handle-file-notif= y-rm-watch) (file-notify-valid-p . tramp-handle-file-notify-valid-p) (file-= ownership-preserved-p . ignore) (file-readable-p . tramp-handle-file-readab= le-p) (file-regular-p . tramp-handle-file-regular-p) (file-remote-p . tramp= -handle-file-remote-p) (file-selinux-context . tramp-handle-file-selinux-co= ntext) (file-symlink-p . tramp-handle-file-symlink-p) (file-system-info . t= ramp-gvfs-handle-file-system-info) (file-truename . tramp-handle-file-truen= ame) (file-user-uid . tramp-handle-file-user-uid) (file-writable-p . tramp-= handle-file-writable-p) (find-backup-file-name . tramp-handle-find-backup-f= ile-name) (insert-directory . tramp-handle-insert-directory) (insert-file-c= ontents . tramp-handle-insert-file-contents) (list-system-processes . ignor= e) (load . tramp-handle-load) (lock-file . tramp-handle-lock-file) (make-au= to-save-file-name . tramp-handle-make-auto-save-file-name) (make-directory = . tramp-gvfs-handle-make-directory) (make-directory-internal . ignore) (mak= e-lock-file-name . tramp-handle-make-lock-file-name) (make-nearby-temp-file= . tramp-handle-make-nearby-temp-file) (make-process . ignore) (make-symbol= ic-link . tramp-handle-make-symbolic-link) (memory-info . ignore) (process-= attributes . ignore) (process-file . ignore) (rename-file . tramp-gvfs-hand= le-rename-file) (set-file-acl . ignore) (set-file-modes . tramp-gvfs-handle= -set-file-modes) (set-file-selinux-context . ignore) (set-file-times . tram= p-gvfs-handle-set-file-times) (set-visited-file-modtime . tramp-handle-set-= visited-file-modtime) (shell-command . ignore) (start-file-process . ignore= ) (substitute-in-file-name . tramp-handle-substitute-in-file-name) (tempora= ry-file-directory . tramp-handle-temporary-file-directory) (tramp-get-home-= directory . tramp-gvfs-handle-get-home-directory) (tramp-get-remote-gid . t= ramp-gvfs-handle-get-remote-gid) (tramp-get-remote-groups . ignore) (tramp-= get-remote-uid . tramp-gvfs-handle-get-remote-uid) (tramp-set-file-uid-gid = . tramp-gvfs-handle-set-file-uid-gid) (unhandled-file-name-directory . igno= re) (unlock-file . tramp-handle-unlock-file) (vc-registered . ignore) (veri= fy-visited-file-modtime . tramp-handle-verify-visited-file-modtime) (write-= region . tramp-handle-write-region)) "\ Alist of handler functions for Tramp GVFS method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defsubst tramp-gvfs-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME handled by the GVFS daemon." (and-let* ((ve= c (tramp-ensure-dissected-file-name vec-or-filename)) (method (tramp-file-n= ame-method vec)) ((member method tramp-gvfs-methods))))) (autoload 'tramp-gvfs-file-name-handler "tramp-gvfs" "\ Invoke the GVFS related OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (when (featurep 'dbusbind) (tramp--with-startup (tramp-register-foreign-fil= e-name-handler #'tramp-gvfs-file-name-p #'tramp-gvfs-file-name-handler))) ;;; Generated autoloads from tramp-message.el (defvar tramp-verbose 3 "\ Verbosity level for Tramp messages. Any level x includes messages for all levels 1 .. x-1. The levels are 0 silent (no tramp messages at all) 1 errors 2 warnings 3 connection to remote hosts (default level) 4 activities 5 internal 6 sent and received strings 7 connection properties 8 file caching 9 test commands 10 traces (huge) 11 call traces (maintainer only).") (custom-autoload 'tramp-verbose "tramp-message" t) (autoload 'tramp-message "tramp-message" "\ Emit a message depending on verbosity level. VEC-OR-PROC identifies the Tramp buffer to use. It can be either a vector or a process. LEVEL says to be quiet if `tramp-verbose' is less than LEVEL. The message is emitted only if `tramp-verbose' is greater than or equal to LEVEL. The message is also logged into the debug buffer when `tramp-verbose' is greater than or equal 4. Calls functions `message' and `tramp-debug-message' with FMT-STRING as control string and the remaining ARGUMENTS to actually emit the message (if applicable). (fn VEC-OR-PROC LEVEL FMT-STRING &rest ARGUMENTS)") ;;; Generated autoloads from tramp-rclone.el (defconst tramp-rclone-method "rclone" "\ When this method name is used, forward all calls to rclone mounts.") (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-rclone-method (tr= amp-mount-args ("--no-unicode-normalization" "--dir-cache-time" "0s")) (tra= mp-copyto-args nil) (tramp-moveto-args nil) (tramp-about-args ("--full"))))= (add-to-list 'tramp-default-host-alist `(,tramp-rclone-method nil "")) (tr= amp-set-completion-function tramp-rclone-method '((tramp-rclone-parse-devic= e-names "")))) (defconst tramp-rclone-file-name-handler-alist '((access-file . tramp-handl= e-access-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-dir= ectory . tramp-handle-copy-directory) (copy-file . tramp-rclone-handle-copy= -file) (delete-directory . tramp-fuse-handle-delete-directory) (delete-file= . tramp-fuse-handle-delete-file) (directory-file-name . tramp-handle-direc= tory-file-name) (directory-files . tramp-fuse-handle-directory-files) (dire= ctory-files-and-attributes . tramp-handle-directory-files-and-attributes) (= dired-compress-file . ignore) (dired-uncache . tramp-handle-dired-uncache) = (exec-path . ignore) (expand-file-name . tramp-handle-expand-file-name) (fi= le-accessible-directory-p . tramp-handle-file-accessible-directory-p) (file= -acl . ignore) (file-attributes . tramp-fuse-handle-file-attributes) (file-= directory-p . tramp-handle-file-directory-p) (file-equal-p . tramp-handle-f= ile-equal-p) (file-executable-p . tramp-fuse-handle-file-executable-p) (fil= e-exists-p . tramp-handle-file-exists-p) (file-group-gid . tramp-handle-fil= e-group-gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file= -local-copy . tramp-handle-file-local-copy) (file-locked-p . tramp-handle-f= ile-locked-p) (file-modes . tramp-handle-file-modes) (file-name-all-complet= ions . tramp-fuse-handle-file-name-all-completions) (file-name-as-directory= . tramp-handle-file-name-as-directory) (file-name-case-insensitive-p . tra= mp-handle-file-name-case-insensitive-p) (file-name-completion . tramp-handl= e-file-name-completion) (file-name-directory . tramp-handle-file-name-direc= tory) (file-name-nondirectory . tramp-handle-file-name-nondirectory) (file-= newer-than-file-p . tramp-handle-file-newer-than-file-p) (file-notify-add-w= atch . tramp-handle-file-notify-add-watch) (file-notify-rm-watch . tramp-ha= ndle-file-notify-rm-watch) (file-notify-valid-p . tramp-handle-file-notify-= valid-p) (file-ownership-preserved-p . ignore) (file-readable-p . tramp-rcl= one-handle-file-readable-p) (file-regular-p . tramp-handle-file-regular-p) = (file-remote-p . tramp-handle-file-remote-p) (file-selinux-context . tramp-= handle-file-selinux-context) (file-symlink-p . tramp-handle-file-symlink-p)= (file-system-info . tramp-rclone-handle-file-system-info) (file-truename .= tramp-handle-file-truename) (file-user-uid . tramp-handle-file-user-uid) (= file-writable-p . tramp-handle-file-writable-p) (find-backup-file-name . tr= amp-handle-find-backup-file-name) (insert-directory . tramp-handle-insert-d= irectory) (insert-file-contents . tramp-handle-insert-file-contents) (list-= system-processes . ignore) (load . tramp-handle-load) (lock-file . tramp-ha= ndle-lock-file) (make-auto-save-file-name . tramp-handle-make-auto-save-fil= e-name) (make-directory . tramp-fuse-handle-make-directory) (make-directory= -internal . ignore) (make-lock-file-name . tramp-handle-make-lock-file-name= ) (make-nearby-temp-file . tramp-handle-make-nearby-temp-file) (make-proces= s . ignore) (make-symbolic-link . tramp-handle-make-symbolic-link) (memory-= info . ignore) (process-attributes . ignore) (process-file . ignore) (renam= e-file . tramp-rclone-handle-rename-file) (set-file-acl . ignore) (set-file= -modes . ignore) (set-file-selinux-context . ignore) (set-file-times . igno= re) (set-visited-file-modtime . tramp-handle-set-visited-file-modtime) (she= ll-command . ignore) (start-file-process . ignore) (substitute-in-file-name= . tramp-handle-substitute-in-file-name) (temporary-file-directory . tramp-= handle-temporary-file-directory) (tramp-get-home-directory . ignore) (tramp= -get-remote-gid . ignore) (tramp-get-remote-groups . ignore) (tramp-get-rem= ote-uid . ignore) (tramp-set-file-uid-gid . ignore) (unhandled-file-name-di= rectory . ignore) (unlock-file . tramp-handle-unlock-file) (vc-registered .= ignore) (verify-visited-file-modtime . tramp-handle-verify-visited-file-mo= dtime) (write-region . tramp-handle-write-region)) "\ Alist of handler functions for Tramp RCLONE method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defsubst tramp-rclone-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for rclone." (and-let* ((vec (tramp-ensure-= dissected-file-name vec-or-filename)) ((string=3D (tramp-file-name-method v= ec) tramp-rclone-method))))) (autoload 'tramp-rclone-file-name-handler "tramp-rclone" "\ Invoke the rclone handler for OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-rclo= ne-file-name-p #'tramp-rclone-file-name-handler)) (autoload 'tramp-rclone-parse-device-names "tramp-rclone" "\ Return a list of (nil host) tuples allowed to access. (fn IGNORE)") ;;; Generated autoloads from tramp-sh.el (defconst tramp-default-remote-shell "/bin/sh" "\ The default remote shell Tramp applies.") (defvar tramp-histfile-override "~/.tramp_history" "\ When invoking a shell, override the HISTFILE with this value. When setting to a string, it redirects the shell history to that file. Be careful when setting to \"/dev/null\"; this might result in undesired results when using \"bash\" as shell. The value t unsets any setting of HISTFILE, and sets both HISTFILESIZE and HISTSIZE to 0. If you set this variable to nil, however, the *override* is disabled, so the history will go to the default storage location, e.g. \"$HOME/.sh_history\".") (custom-autoload 'tramp-histfile-override "tramp-sh" t) (defconst tramp-initial-end-of-output "#$ " "\ Prompt when establishing a connection.") (tramp--with-startup (add-to-list 'tramp-methods `("rcp" (tramp-login-progr= am "rsh") (tramp-login-args (("%h") ("-l" "%u"))) (tramp-remote-shell ,tram= p-default-remote-shell) (tramp-remote-shell-login ("-l")) (tramp-remote-she= ll-args ("-c")) (tramp-copy-program "rcp") (tramp-copy-args (("-p" "%k") ("= -r"))) (tramp-copy-keep-date t) (tramp-copy-recursive t))) (add-to-list 'tr= amp-methods `("remcp" (tramp-login-program "remsh") (tramp-login-args (("%h= ") ("-l" "%u"))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-re= mote-shell-login ("-l")) (tramp-remote-shell-args ("-c")) (tramp-copy-progr= am "rcp") (tramp-copy-args (("-p" "%k"))) (tramp-copy-keep-date t))) (add-t= o-list 'tramp-methods `("scp" (tramp-login-program "ssh") (tramp-login-args= (("-l" "%u") ("-p" "%p") ("%c") ("-e" "none") ("-o" ,(format "SetEnv=3D\"T= ERM=3D%s\"" tramp-terminal-type)) ("%h"))) (tramp-async-args (("-q"))) (tra= mp-direct-async ("-t" "-t")) (tramp-remote-shell ,tramp-default-remote-shel= l) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-c")) (tram= p-copy-program "scp") (tramp-copy-args (("-P" "%p") ("-p" "%k") ("%x") ("%y= ") ("%z") ("-q") ("-r") ("%c"))) (tramp-copy-keep-date t) (tramp-copy-recur= sive t))) (add-to-list 'tramp-methods `("scpx" (tramp-login-program "ssh") = (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") ("-e" "none") ("-t" "-t")= ("-o" "RemoteCommand=3D\"%l\"") ("-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tr= amp-terminal-type)) ("%h"))) (tramp-async-args (("-q"))) (tramp-remote-shel= l ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (tramp-rem= ote-shell-args ("-c")) (tramp-copy-program "scp") (tramp-copy-args (("-P" "= %p") ("-p" "%k") ("%x") ("%y") ("%z") ("-q") ("-r") ("%c"))) (tramp-copy-ke= ep-date t) (tramp-copy-recursive t))) (add-to-list 'tramp-methods `("rsync"= (tramp-login-program "ssh") (tramp-login-args (("-l" "%u") ("-p" "%p") ("%= c") ("-e" "none") ("-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tramp-terminal-ty= pe)) ("%h"))) (tramp-async-args (("-q"))) (tramp-direct-async ("-t" "-t")) = (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login = ("-l")) (tramp-remote-shell-args ("-c")) (tramp-copy-program "rsync") (tram= p-copy-args (("-t" "%k") ("-p") ("-r") ("-s") ("-c"))) (tramp-copy-env (("R= SYNC_RSH") ("ssh") ("%c"))) (tramp-copy-keep-date t) (tramp-copy-keep-tmpfi= le t) (tramp-copy-recursive t))) (add-to-list 'tramp-methods `("rsh" (tramp= -login-program "rsh") (tramp-login-args (("%h") ("-l" "%u"))) (tramp-remote= -shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (tram= p-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("remsh" (tramp-= login-program "remsh") (tramp-login-args (("%h") ("-l" "%u"))) (tramp-remot= e-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (tra= mp-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("ssh" (tramp-l= ogin-program "ssh") (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") ("-e"= "none") ("-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tramp-terminal-type)) ("%h= "))) (tramp-async-args (("-q"))) (tramp-direct-async ("-t" "-t")) (tramp-re= mote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (= tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("sshx" (tra= mp-login-program "ssh") (tramp-login-args (("-l" "%u") ("-p" "%p") ("%c") (= "-e" "none") ("-t" "-t") ("-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tramp-term= inal-type)) ("-o" "RemoteCommand=3D\"%l\"") ("%h"))) (tramp-async-args (("-= q"))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-= login ("-l")) (tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-method= s `("telnet" (tramp-login-program "telnet") (tramp-login-args (("%h") ("%p"= ) ("%n"))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-s= hell-login ("-l")) (tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-m= ethods `("su" (tramp-login-program "su") (tramp-login-args (("-") ("%u"))) = (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login = ("-l")) (tramp-remote-shell-args ("-c")) (tramp-connection-timeout 10))) (a= dd-to-list 'tramp-methods `("sg" (tramp-login-program "sg") (tramp-login-ar= gs (("-") ("%u"))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-= remote-shell-args ("-c")) (tramp-connection-timeout 10))) (add-to-list 'tra= mp-methods `("sudo" (tramp-login-program "env") (tramp-login-args (("SUDO_P= ROMPT=3DP\"\"a\"\"s\"\"s\"\"w\"\"o\"\"r\"\"d\"\":") (,(format "TERM=3D%s" t= ramp-terminal-type)) ("sudo") ("-u" "%u") ("-s") ("-H") ("%l"))) (tramp-rem= ote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) (t= ramp-remote-shell-args ("-c")) (tramp-connection-timeout 10) (tramp-session= -timeout 300) (tramp-password-previous-hop t))) (add-to-list 'tramp-methods= `("doas" (tramp-login-program "doas") (tramp-login-args (("-u" "%u") ("-s"= ))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-ar= gs ("-c")) (tramp-connection-timeout 10) (tramp-session-timeout 300) (tramp= -password-previous-hop t))) (add-to-list 'tramp-methods `("plink" (tramp-lo= gin-program "plink") (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh") ("= %c") ("-t") ("%h") ("\"") (,(format "env 'TERM=3D%s' 'PROMPT_COMMAND=3D' 'P= S1=3D%s'" tramp-terminal-type tramp-initial-end-of-output)) ("%l") ("\"")))= (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login= ("-l")) (tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("= plinkx" (tramp-login-program "plink") (tramp-login-args (("-load") ("%h") (= "%c") ("-t") ("\"") (,(format "env 'TERM=3D%s' 'PROMPT_COMMAND=3D' 'PS1=3D%= s'" tramp-terminal-type tramp-initial-end-of-output)) ("%l") ("\""))) (tram= p-remote-shell ,tramp-default-remote-shell) (tramp-remote-shell-login ("-l"= )) (tramp-remote-shell-args ("-c")))) (add-to-list 'tramp-methods `("pscp" = (tramp-login-program "plink") (tramp-login-args (("-l" "%u") ("-P" "%p") ("= -ssh") ("%c") ("-t") ("%h") ("\"") (,(format "env 'TERM=3D%s' 'PROMPT_COMMA= ND=3D' 'PS1=3D%s'" tramp-terminal-type tramp-initial-end-of-output)) ("%l")= ("\""))) (tramp-remote-shell ,tramp-default-remote-shell) (tramp-remote-sh= ell-login ("-l")) (tramp-remote-shell-args ("-c")) (tramp-copy-program "psc= p") (tramp-copy-args (("-l" "%u") ("-P" "%p") ("-scp") ("%c") ("-p" "%k") (= "-q") ("-r"))) (tramp-copy-keep-date t) (tramp-copy-recursive t))) (add-to-= list 'tramp-methods `("psftp" (tramp-login-program "plink") (tramp-login-ar= gs (("-l" "%u") ("-P" "%p") ("-ssh") ("%c") ("-t") ("%h") ("\"") (,(format = "env 'TERM=3D%s' 'PROMPT_COMMAND=3D' 'PS1=3D%s'" tramp-terminal-type tramp-= initial-end-of-output)) ("%l") ("\""))) (tramp-remote-shell ,tramp-default-= remote-shell) (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("= -c")) (tramp-copy-program "pscp") (tramp-copy-args (("-l" "%u") ("-P" "%p")= ("-sftp") ("%c") ("-p" "%k"))) (tramp-copy-keep-date t))) (add-to-list 'tr= amp-default-method-alist `(,tramp-local-host-regexp ,(rx bos (literal tramp= -root-id-string) eos) "su")) (add-to-list 'tramp-default-user-alist `(,(rx = bos (| "su" "sudo" "doas") eos) nil ,tramp-root-id-string)) (add-to-list 't= ramp-default-user-alist `(,(rx bos (| "rcp" "remcp" "rsh" "telnet") eos) ni= l ,(user-login-name)))) (defconst tramp-completion-function-alist-rsh '((tramp-parse-rhosts "/etc/h= osts.equiv") (tramp-parse-rhosts "~/.rhosts")) "\ Default list of (FUNCTION FILE) pairs to be examined for rsh methods.") (defconst tramp-completion-function-alist-ssh `((tramp-parse-rhosts "/etc/h= osts.equiv") (tramp-parse-rhosts "/etc/shosts.equiv") (tramp-parse-shosts ,= (expand-file-name "ssh/ssh_known_hosts" (or (and (eq system-type 'windows-n= t) (getenv "ProgramData")) "/etc/"))) (tramp-parse-sconfig ,(expand-file-na= me "ssh/ssh_config" (or (and (eq system-type 'windows-nt) (getenv "ProgramD= ata")) "/etc/"))) (tramp-parse-shostkeys "/etc/ssh2/hostkeys") (tramp-parse= -sknownhosts "/etc/ssh2/knownhosts") (tramp-parse-rhosts "~/.rhosts") (tram= p-parse-rhosts "~/.shosts") (tramp-parse-shosts ,(expand-file-name ".ssh/kn= own_hosts" (or (and (eq system-type 'windows-nt) (getenv "USERPROFILE")) "~= /"))) (tramp-parse-sconfig ,(expand-file-name ".ssh/config" (or (and (eq sy= stem-type 'windows-nt) (getenv "USERPROFILE")) "~/"))) (tramp-parse-shostke= ys "~/.ssh2/hostkeys") (tramp-parse-sknownhosts "~/.ssh2/knownhosts")) "\ Default list of (FUNCTION FILE) pairs to be examined for ssh methods.") (defconst tramp-completion-function-alist-telnet '((tramp-parse-hosts "/etc= /hosts")) "\ Default list of (FUNCTION FILE) pairs to be examined for telnet methods.") (defconst tramp-completion-function-alist-su '((tramp-parse-passwd "/etc/pa= sswd")) "\ Default list of (FUNCTION FILE) pairs to be examined for su methods.") (defconst tramp-completion-function-alist-sg '((tramp-parse-etc-group "/etc= /group")) "\ Default list of (FUNCTION FILE) pairs to be examined for sg methods.") (defconst tramp-completion-function-alist-putty `((tramp-parse-putty ,(if (= eq system-type 'windows-nt) "HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTT= Y\\Sessions" "~/.putty/sessions"))) "\ Default list of (FUNCTION REGISTRY) pairs to be examined for putty sessions= .") (tramp--with-startup (tramp-set-completion-function "rcp" tramp-completion-= function-alist-rsh) (tramp-set-completion-function "remcp" tramp-completion= -function-alist-rsh) (tramp-set-completion-function "scp" tramp-completion-= function-alist-ssh) (tramp-set-completion-function "scpx" tramp-completion-= function-alist-ssh) (tramp-set-completion-function "rsync" tramp-completion= -function-alist-ssh) (tramp-set-completion-function "rsh" tramp-completion-= function-alist-rsh) (tramp-set-completion-function "remsh" tramp-completion= -function-alist-rsh) (tramp-set-completion-function "ssh" tramp-completion-= function-alist-ssh) (tramp-set-completion-function "sshx" tramp-completion-= function-alist-ssh) (tramp-set-completion-function "telnet" tramp-completio= n-function-alist-telnet) (tramp-set-completion-function "su" tramp-completi= on-function-alist-su) (tramp-set-completion-function "sudo" tramp-completio= n-function-alist-su) (tramp-set-completion-function "doas" tramp-completion= -function-alist-su) (tramp-set-completion-function "sg" tramp-completion-fu= nction-alist-sg) (tramp-set-completion-function "plink" tramp-completion-fu= nction-alist-ssh) (tramp-set-completion-function "plinkx" tramp-completion-= function-alist-putty) (tramp-set-completion-function "pscp" tramp-completio= n-function-alist-ssh) (tramp-set-completion-function "psftp" tramp-completi= on-function-alist-ssh)) (autoload 'tramp-enable-nc-method "tramp-sh" "\ Enable \"ksu\" method.") (autoload 'tramp-enable-run0-method "tramp-sh" "\ Enable \"run0\" method.") (autoload 'tramp-enable-ksu-method "tramp-sh" "\ Enable \"ksu\" method.") (autoload 'tramp-enable-krlogin-method "tramp-sh" "\ Enable \"krlogin\" method.") (autoload 'tramp-enable-fcp-method "tramp-sh" "\ Enable \"fcp\" method.") (defconst tramp-actions-before-shell '((tramp-login-prompt-regexp tramp-act= ion-login) (tramp-password-prompt-regexp tramp-action-password) (tramp-otp-= password-prompt-regexp tramp-action-otp-password) (tramp-fingerprint-prompt= -regexp tramp-action-fingerprint) (tramp-wrong-passwd-regexp tramp-action-p= ermission-denied) (shell-prompt-pattern tramp-action-succeed) (tramp-shell-= prompt-pattern tramp-action-succeed) (tramp-yesno-prompt-regexp tramp-actio= n-yesno) (tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-re= gexp tramp-action-terminal) (tramp-antispoof-regexp tramp-action-confirm-me= ssage) (tramp-security-key-confirm-regexp tramp-action-show-and-confirm-mes= sage) (tramp-security-key-pin-regexp tramp-action-otp-password) (tramp-proc= ess-alive-regexp tramp-action-process-alive)) "\ List of pattern/action pairs. Whenever a pattern matches, the corresponding action is performed. Each item looks like (PATTERN ACTION). The PATTERN should be a symbol, a variable. The value of this variable gives the regular expression to search for. Note that the regexp must match at the end of the buffer, \"\\'\" is implicitly appended to it. The ACTION should also be a symbol, but a function. When the corresponding PATTERN matches, the ACTION function is called.") (defconst tramp-sh-file-name-handler-alist '((abbreviate-file-name . tramp-= handle-abbreviate-file-name) (access-file . tramp-handle-access-file) (add-= name-to-file . tramp-sh-handle-add-name-to-file) (copy-directory . tramp-sh= -handle-copy-directory) (copy-file . tramp-sh-handle-copy-file) (delete-dir= ectory . tramp-sh-handle-delete-directory) (delete-file . tramp-sh-handle-d= elete-file) (directory-file-name . tramp-handle-directory-file-name) (direc= tory-files . tramp-handle-directory-files) (directory-files-and-attributes = . tramp-sh-handle-directory-files-and-attributes) (dired-compress-file . tr= amp-sh-handle-dired-compress-file) (dired-uncache . tramp-handle-dired-unca= che) (exec-path . tramp-sh-handle-exec-path) (expand-file-name . tramp-sh-h= andle-expand-file-name) (file-accessible-directory-p . tramp-handle-file-ac= cessible-directory-p) (file-acl . tramp-sh-handle-file-acl) (file-attribute= s . tramp-sh-handle-file-attributes) (file-directory-p . tramp-sh-handle-fi= le-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-executable= -p . tramp-sh-handle-file-executable-p) (file-exists-p . tramp-sh-handle-fi= le-exists-p) (file-group-gid . tramp-handle-file-group-gid) (file-in-direct= ory-p . tramp-handle-file-in-directory-p) (file-local-copy . tramp-sh-handl= e-file-local-copy) (file-locked-p . tramp-handle-file-locked-p) (file-modes= . tramp-handle-file-modes) (file-name-all-completions . tramp-sh-handle-fi= le-name-all-completions) (file-name-as-directory . tramp-handle-file-name-a= s-directory) (file-name-case-insensitive-p . tramp-handle-file-name-case-in= sensitive-p) (file-name-completion . tramp-handle-file-name-completion) (fi= le-name-directory . tramp-handle-file-name-directory) (file-name-nondirecto= ry . tramp-handle-file-name-nondirectory) (file-newer-than-file-p . tramp-h= andle-file-newer-than-file-p) (file-notify-add-watch . tramp-sh-handle-file= -notify-add-watch) (file-notify-rm-watch . tramp-handle-file-notify-rm-watc= h) (file-notify-valid-p . tramp-handle-file-notify-valid-p) (file-ownership= -preserved-p . tramp-sh-handle-file-ownership-preserved-p) (file-readable-p= . tramp-sh-handle-file-readable-p) (file-regular-p . tramp-handle-file-reg= ular-p) (file-remote-p . tramp-handle-file-remote-p) (file-selinux-context = . tramp-sh-handle-file-selinux-context) (file-symlink-p . tramp-handle-file= -symlink-p) (file-system-info . tramp-sh-handle-file-system-info) (file-tru= ename . tramp-sh-handle-file-truename) (file-user-uid . tramp-handle-file-u= ser-uid) (file-writable-p . tramp-sh-handle-file-writable-p) (find-backup-f= ile-name . tramp-handle-find-backup-file-name) (insert-directory . tramp-sh= -handle-insert-directory) (insert-file-contents . tramp-handle-insert-file-= contents) (list-system-processes . tramp-handle-list-system-processes) (loa= d . tramp-handle-load) (lock-file . tramp-handle-lock-file) (make-auto-save= -file-name . tramp-handle-make-auto-save-file-name) (make-directory . tramp= -sh-handle-make-directory) (make-lock-file-name . tramp-handle-make-lock-fi= le-name) (make-nearby-temp-file . tramp-handle-make-nearby-temp-file) (make= -process . tramp-sh-handle-make-process) (make-symbolic-link . tramp-sh-han= dle-make-symbolic-link) (memory-info . tramp-handle-memory-info) (process-a= ttributes . tramp-handle-process-attributes) (process-file . tramp-sh-handl= e-process-file) (rename-file . tramp-sh-handle-rename-file) (set-file-acl .= tramp-sh-handle-set-file-acl) (set-file-modes . tramp-sh-handle-set-file-m= odes) (set-file-selinux-context . tramp-sh-handle-set-file-selinux-context)= (set-file-times . tramp-sh-handle-set-file-times) (set-visited-file-modtim= e . tramp-sh-handle-set-visited-file-modtime) (shell-command . tramp-handle= -shell-command) (start-file-process . tramp-handle-start-file-process) (sub= stitute-in-file-name . tramp-handle-substitute-in-file-name) (temporary-fil= e-directory . tramp-handle-temporary-file-directory) (tramp-get-home-direct= ory . tramp-sh-handle-get-home-directory) (tramp-get-remote-gid . tramp-sh-= handle-get-remote-gid) (tramp-get-remote-groups . tramp-sh-handle-get-remot= e-groups) (tramp-get-remote-uid . tramp-sh-handle-get-remote-uid) (tramp-se= t-file-uid-gid . tramp-sh-handle-set-file-uid-gid) (unhandled-file-name-dir= ectory . ignore) (unlock-file . tramp-handle-unlock-file) (vc-registered . = tramp-sh-handle-vc-registered) (verify-visited-file-modtime . tramp-sh-hand= le-verify-visited-file-modtime) (write-region . tramp-sh-handle-write-regio= n)) "\ Alist of handler functions. Operations not mentioned here will be handled by the normal Emacs functions= .") (autoload 'tramp-sh-file-name-handler "tramp-sh" "\ Invoke remote-shell Tramp file name handler. Fall back to normal file name handler if no Tramp handler exists. (fn OPERATION &rest ARGS)") (autoload 'tramp-sh-file-name-handler-p "tramp-sh" "\ Whether VEC uses a method from `tramp-sh-file-name-handler'. (fn VEC)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'identity #= 'tramp-sh-file-name-handler 'append)) (autoload 'tramp-timeout-session "tramp-sh" "\ Close the connection VEC after a session timeout. If there is just some editing, retry it after 5 seconds. If there is a modified buffer, retry it after 60 seconds. (fn VEC)") (autoload 'tramp-get-remote-path "tramp-sh" "\ Compile list of remote directories for PATH. Nonexistent directories are removed from spec. (fn VEC)") (autoload 'tramp-get-remote-pipe-buf "tramp-sh" "\ Return PIPE_BUF config from the remote side. (fn VEC)") ;;; Generated autoloads from tramp-smb.el (defconst tramp-smb-method "smb" "\ Method to connect SAMBA and M$ SMB servers.") (unless (memq system-type '(cygwin windows-nt)) (tramp--with-startup (add-t= o-list 'tramp-methods `(,tramp-smb-method (tramp-tmpdir "/C$/Temp") (tramp-= case-insensitive t))))) (tramp--with-startup (add-to-list 'tramp-default-user-alist `(,(rx bos (lit= eral tramp-smb-method) eos) nil nil)) (tramp-set-completion-function tramp-= smb-method '((tramp-parse-netrc "~/.netrc")))) (defconst tramp-smb-file-name-handler-alist '((abbreviate-file-name . tramp= -handle-abbreviate-file-name) (access-file . tramp-handle-access-file) (add= -name-to-file . tramp-smb-handle-add-name-to-file) (copy-directory . tramp-= smb-handle-copy-directory) (copy-file . tramp-smb-handle-copy-file) (delete= -directory . tramp-smb-handle-delete-directory) (delete-file . tramp-smb-ha= ndle-delete-file) (directory-file-name . tramp-handle-directory-file-name) = (directory-files . tramp-handle-directory-files) (directory-files-and-attri= butes . tramp-handle-directory-files-and-attributes) (dired-compress-file .= ignore) (dired-uncache . tramp-handle-dired-uncache) (exec-path . ignore) = (expand-file-name . tramp-smb-handle-expand-file-name) (file-accessible-dir= ectory-p . tramp-handle-file-accessible-directory-p) (file-acl . tramp-smb-= handle-file-acl) (file-attributes . tramp-smb-handle-file-attributes) (file= -directory-p . tramp-handle-file-directory-p) (file-file-equal-p . tramp-ha= ndle-file-equal-p) (file-executable-p . tramp-handle-file-exists-p) (file-e= xists-p . tramp-handle-file-exists-p) (file-group-gid . tramp-handle-file-g= roup-gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file-lo= cal-copy . tramp-smb-handle-file-local-copy) (file-locked-p . tramp-handle-= file-locked-p) (file-modes . tramp-handle-file-modes) (file-name-all-comple= tions . tramp-smb-handle-file-name-all-completions) (file-name-as-directory= . tramp-handle-file-name-as-directory) (file-name-case-insensitive-p . tra= mp-handle-file-name-case-insensitive-p) (file-name-completion . tramp-handl= e-file-name-completion) (file-name-directory . tramp-handle-file-name-direc= tory) (file-name-nondirectory . tramp-handle-file-name-nondirectory) (file-= newer-than-file-p . tramp-handle-file-newer-than-file-p) (file-notify-add-w= atch . tramp-smb-handle-file-notify-add-watch) (file-notify-rm-watch . tram= p-handle-file-notify-rm-watch) (file-notify-valid-p . tramp-handle-file-not= ify-valid-p) (file-ownership-preserved-p . ignore) (file-readable-p . tramp= -handle-file-exists-p) (file-regular-p . tramp-handle-file-regular-p) (file= -remote-p . tramp-handle-file-remote-p) (file-selinux-context . tramp-handl= e-file-selinux-context) (file-symlink-p . tramp-handle-file-symlink-p) (fil= e-system-info . tramp-smb-handle-file-system-info) (file-truename . tramp-h= andle-file-truename) (file-user-uid . tramp-handle-file-user-uid) (file-wri= table-p . tramp-smb-handle-file-writable-p) (find-backup-file-name . tramp-= handle-find-backup-file-name) (insert-directory . tramp-smb-handle-insert-d= irectory) (insert-file-contents . tramp-handle-insert-file-contents) (list-= system-processes . ignore) (load . tramp-handle-load) (lock-file . tramp-ha= ndle-lock-file) (make-auto-save-file-name . tramp-handle-make-auto-save-fil= e-name) (make-directory . tramp-smb-handle-make-directory) (make-directory-= internal . ignore) (make-lock-file-name . tramp-handle-make-lock-file-name)= (make-nearby-temp-file . tramp-handle-make-nearby-temp-file) (make-process= . ignore) (make-symbolic-link . tramp-smb-handle-make-symbolic-link) (memo= ry-info . ignore) (process-attributes . ignore) (process-file . tramp-smb-h= andle-process-file) (rename-file . tramp-smb-handle-rename-file) (set-file-= acl . tramp-smb-handle-set-file-acl) (set-file-modes . tramp-smb-handle-set= -file-modes) (set-file-selinux-context . ignore) (set-file-times . tramp-sm= b-handle-set-file-times) (set-visited-file-modtime . tramp-handle-set-visit= ed-file-modtime) (shell-command . tramp-handle-shell-command) (start-file-p= rocess . tramp-smb-handle-start-file-process) (substitute-in-file-name . tr= amp-smb-handle-substitute-in-file-name) (temporary-file-directory . tramp-h= andle-temporary-file-directory) (tramp-get-home-directory . tramp-smb-handl= e-get-home-directory) (tramp-get-remote-gid . ignore) (tramp-get-remote-gro= ups . ignore) (tramp-get-remote-uid . ignore) (tramp-set-file-uid-gid . ign= ore) (unhandled-file-name-directory . ignore) (unlock-file . tramp-handle-u= nlock-file) (vc-registered . ignore) (verify-visited-file-modtime . tramp-h= andle-verify-visited-file-modtime) (write-region . tramp-smb-handle-write-r= egion)) "\ Alist of handler functions for Tramp SMB method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defsubst tramp-smb-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for SMB servers." (and-let* ((vec (tramp-en= sure-dissected-file-name vec-or-filename)) ((string=3D (tramp-file-name-met= hod vec) tramp-smb-method))))) (autoload 'tramp-smb-file-name-handler "tramp-smb" "\ Invoke the SMB related OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (unless (memq system-type '(cygwin windows-nt)) (tramp--with-startup (tramp= -register-foreign-file-name-handler #'tramp-smb-file-name-p #'tramp-smb-fil= e-name-handler))) ;;; Generated autoloads from tramp-sshfs.el (defconst tramp-sshfs-method "sshfs" "\ Tramp method for sshfs mounts.") (defvar tramp-default-remote-shell) (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-sshfs-method (tra= mp-mount-args (("-C") ("-p" "%p") ("-o" "dir_cache=3Dno") ("-o" "transform_= symlinks") ("-o" "idmap=3Duser,reconnect"))) (tramp-login-program "ssh") (t= ramp-login-args (("-q") ("-l" "%u") ("-p" "%p") ("-e" "none") ("%a" "%a") (= "-o" ,(format "SetEnv=3D\"TERM=3D%s\"" tramp-terminal-type)) ("%h") ("%l"))= ) (tramp-direct-async t) (tramp-remote-shell ,tramp-default-remote-shell) (= tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-c")))) (tramp-= set-completion-function tramp-sshfs-method tramp-completion-function-alist-= ssh)) (defconst tramp-sshfs-file-name-handler-alist '((access-file . tramp-handle= -access-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-dire= ctory . tramp-handle-copy-directory) (copy-file . tramp-sshfs-handle-copy-f= ile) (delete-directory . tramp-fuse-handle-delete-directory) (delete-file .= tramp-fuse-handle-delete-file) (directory-file-name . tramp-handle-directo= ry-file-name) (directory-files . tramp-fuse-handle-directory-files) (direct= ory-files-and-attributes . tramp-handle-directory-files-and-attributes) (di= red-compress-file . ignore) (dired-uncache . tramp-handle-dired-uncache) (e= xec-path . tramp-sshfs-handle-exec-path) (expand-file-name . tramp-handle-e= xpand-file-name) (file-accessible-directory-p . tramp-handle-file-accessibl= e-directory-p) (file-acl . ignore) (file-attributes . tramp-fuse-handle-fil= e-attributes) (file-directory-p . tramp-handle-file-directory-p) (file-equa= l-p . tramp-handle-file-equal-p) (file-executable-p . tramp-fuse-handle-fil= e-executable-p) (file-exists-p . tramp-fuse-handle-file-exists-p) (file-gro= up-gid . tramp-handle-file-group-gid) (file-in-directory-p . tramp-handle-f= ile-in-directory-p) (file-local-copy . tramp-handle-file-local-copy) (file-= locked-p . tramp-handle-file-locked-p) (file-modes . tramp-handle-file-mode= s) (file-name-all-completions . tramp-fuse-handle-file-name-all-completions= ) (file-name-as-directory . tramp-handle-file-name-as-directory) (file-name= -case-insensitive-p . tramp-handle-file-name-case-insensitive-p) (file-name= -completion . tramp-handle-file-name-completion) (file-name-directory . tra= mp-handle-file-name-directory) (file-name-nondirectory . tramp-handle-file-= name-nondirectory) (file-newer-than-file-p . tramp-handle-file-newer-than-f= ile-p) (file-notify-add-watch . tramp-handle-file-notify-add-watch) (file-n= otify-rm-watch . tramp-handle-file-notify-rm-watch) (file-notify-valid-p . = tramp-handle-file-notify-valid-p) (file-ownership-preserved-p . ignore) (fi= le-readable-p . tramp-handle-file-readable-p) (file-regular-p . tramp-handl= e-file-regular-p) (file-remote-p . tramp-handle-file-remote-p) (file-selinu= x-context . tramp-handle-file-selinux-context) (file-symlink-p . tramp-hand= le-file-symlink-p) (file-system-info . tramp-sshfs-handle-file-system-info)= (file-truename . tramp-handle-file-truename) (file-user-uid . tramp-handle= -file-user-uid) (file-writable-p . tramp-sshfs-handle-file-writable-p) (fin= d-backup-file-name . tramp-handle-find-backup-file-name) (insert-directory = . tramp-handle-insert-directory) (insert-file-contents . tramp-sshfs-handle= -insert-file-contents) (list-system-processes . tramp-handle-list-system-pr= ocesses) (load . tramp-handle-load) (lock-file . tramp-handle-lock-file) (m= ake-auto-save-file-name . tramp-handle-make-auto-save-file-name) (make-dire= ctory . tramp-fuse-handle-make-directory) (make-directory-internal . ignore= ) (make-lock-file-name . tramp-handle-make-lock-file-name) (make-nearby-tem= p-file . tramp-handle-make-nearby-temp-file) (make-process . tramp-handle-m= ake-process) (make-symbolic-link . tramp-handle-make-symbolic-link) (memory= -info . tramp-handle-memory-info) (process-attributes . tramp-handle-proces= s-attributes) (process-file . tramp-sshfs-handle-process-file) (rename-file= . tramp-sshfs-handle-rename-file) (set-file-acl . ignore) (set-file-modes = . tramp-sshfs-handle-set-file-modes) (set-file-selinux-context . ignore) (s= et-file-times . tramp-sshfs-handle-set-file-times) (set-visited-file-modtim= e . tramp-handle-set-visited-file-modtime) (shell-command . tramp-handle-sh= ell-command) (start-file-process . tramp-handle-start-file-process) (substi= tute-in-file-name . tramp-handle-substitute-in-file-name) (temporary-file-d= irectory . tramp-handle-temporary-file-directory) (tramp-get-home-directory= . ignore) (tramp-get-remote-gid . ignore) (tramp-get-remote-groups . ignor= e) (tramp-get-remote-uid . ignore) (tramp-set-file-uid-gid . ignore) (unhan= dled-file-name-directory . ignore) (unlock-file . tramp-handle-unlock-file)= (vc-registered . ignore) (verify-visited-file-modtime . tramp-handle-verif= y-visited-file-modtime) (write-region . tramp-sshfs-handle-write-region)) "\ Alist of handler functions for Tramp SSHFS method. Operations not mentioned here will be handled by the default Emacs primitiv= es.") (defsubst tramp-sshfs-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for sshfs." (and-let* ((vec (tramp-ensure-d= issected-file-name vec-or-filename)) ((string=3D (tramp-file-name-method ve= c) tramp-sshfs-method))))) (autoload 'tramp-sshfs-file-name-handler "tramp-sshfs" "\ Invoke the sshfs handler for OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-sshf= s-file-name-p #'tramp-sshfs-file-name-handler)) ;;; Generated autoloads from tramp-sudoedit.el (defconst tramp-sudoedit-method "sudoedit" "\ When this method name is used, call sudoedit for editing a file.") (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-sudoedit-method (= tramp-sudo-login (("sudo") ("-u" "%u") ("-S") ("-H") ("-p" "Password:") ("-= -"))) (tramp-password-previous-hop t))) (add-to-list 'tramp-default-user-al= ist `(,(rx bos (literal tramp-sudoedit-method) eos) nil ,tramp-root-id-stri= ng)) (tramp-set-completion-function tramp-sudoedit-method tramp-completion-= function-alist-su)) (defconst tramp-sudoedit-file-name-handler-alist '((abbreviate-file-name . = tramp-handle-abbreviate-file-name) (access-file . tramp-handle-access-file)= (add-name-to-file . tramp-sudoedit-handle-add-name-to-file) (byte-compiler= -base-file-name . ignore) (copy-directory . tramp-handle-copy-directory) (c= opy-file . tramp-sudoedit-handle-copy-file) (delete-directory . tramp-sudoe= dit-handle-delete-directory) (delete-file . tramp-sudoedit-handle-delete-fi= le) (diff-latest-backup-file . ignore) (directory-files . tramp-handle-dire= ctory-files) (directory-files-and-attributes . tramp-handle-directory-files= -and-attributes) (dired-compress-file . ignore) (dired-uncache . tramp-hand= le-dired-uncache) (exec-path . ignore) (expand-file-name . tramp-sudoedit-h= andle-expand-file-name) (file-accessible-directory-p . tramp-handle-file-ac= cessible-directory-p) (file-acl . tramp-sudoedit-handle-file-acl) (file-att= ributes . tramp-sudoedit-handle-file-attributes) (file-directory-p . tramp-= handle-file-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-e= xecutable-p . tramp-sudoedit-handle-file-executable-p) (file-exists-p . tra= mp-sudoedit-handle-file-exists-p) (file-group-gid . tramp-handle-file-group= -gid) (file-in-directory-p . tramp-handle-file-in-directory-p) (file-local-= copy . tramp-handle-file-local-copy) (file-locked-p . tramp-handle-file-loc= ked-p) (file-modes . tramp-handle-file-modes) (file-name-all-completions . = tramp-sudoedit-handle-file-name-all-completions) (file-name-as-directory . = tramp-handle-file-name-as-directory) (file-name-case-insensitive-p . tramp-= handle-file-name-case-insensitive-p) (file-name-completion . tramp-handle-f= ile-name-completion) (file-name-directory . tramp-handle-file-name-director= y) (file-name-nondirectory . tramp-handle-file-name-nondirectory) (file-new= er-than-file-p . tramp-handle-file-newer-than-file-p) (file-notify-add-watc= h . tramp-handle-file-notify-add-watch) (file-notify-rm-watch . tramp-handl= e-file-notify-rm-watch) (file-notify-valid-p . tramp-handle-file-notify-val= id-p) (file-ownership-preserved-p . ignore) (file-readable-p . tramp-sudoed= it-handle-file-readable-p) (file-regular-p . tramp-handle-file-regular-p) (= file-remote-p . tramp-handle-file-remote-p) (file-selinux-context . tramp-s= udoedit-handle-file-selinux-context) (file-symlink-p . tramp-handle-file-sy= mlink-p) (file-system-info . tramp-sudoedit-handle-file-system-info) (file-= truename . tramp-sudoedit-handle-file-truename) (file-user-uid . tramp-hand= le-file-user-uid) (file-writable-p . tramp-sudoedit-handle-file-writable-p)= (find-backup-file-name . tramp-handle-find-backup-file-name) (insert-direc= tory . tramp-handle-insert-directory) (insert-file-contents . tramp-handle-= insert-file-contents) (list-system-processes . ignore) (load . tramp-handle= -load) (lock-file . tramp-handle-lock-file) (make-auto-save-file-name . tra= mp-handle-make-auto-save-file-name) (make-directory . tramp-sudoedit-handle= -make-directory) (make-directory-internal . ignore) (make-lock-file-name . = tramp-handle-make-lock-file-name) (make-nearby-temp-file . tramp-handle-mak= e-nearby-temp-file) (make-process . ignore) (make-symbolic-link . tramp-sud= oedit-handle-make-symbolic-link) (memory-info . ignore) (process-attributes= . ignore) (process-file . ignore) (rename-file . tramp-sudoedit-handle-ren= ame-file) (set-file-acl . tramp-sudoedit-handle-set-file-acl) (set-file-mod= es . tramp-sudoedit-handle-set-file-modes) (set-file-selinux-context . tram= p-sudoedit-handle-set-file-selinux-context) (set-file-times . tramp-sudoedi= t-handle-set-file-times) (set-visited-file-modtime . tramp-handle-set-visit= ed-file-modtime) (shell-command . ignore) (start-file-process . ignore) (su= bstitute-in-file-name . tramp-handle-substitute-in-file-name) (temporary-fi= le-directory . tramp-handle-temporary-file-directory) (tramp-get-home-direc= tory . tramp-sudoedit-handle-get-home-directory) (tramp-get-remote-gid . tr= amp-sudoedit-handle-get-remote-gid) (tramp-get-remote-groups . tramp-sudoed= it-handle-get-remote-groups) (tramp-get-remote-uid . tramp-sudoedit-handle-= get-remote-uid) (tramp-set-file-uid-gid . tramp-sudoedit-handle-set-file-ui= d-gid) (unhandled-file-name-directory . ignore) (unlock-file . tramp-handle= -unlock-file) (vc-registered . ignore) (verify-visited-file-modtime . tramp= -handle-verify-visited-file-modtime) (write-region . tramp-handle-write-reg= ion)) "\ Alist of handler functions for Tramp SUDOEDIT method.") (defsubst tramp-sudoedit-file-name-p (vec-or-filename) "\ Check if it's a VEC-OR-FILENAME for SUDOEDIT." (and-let* ((vec (tramp-ensur= e-dissected-file-name vec-or-filename)) ((string=3D (tramp-file-name-method= vec) tramp-sudoedit-method))))) (autoload 'tramp-sudoedit-file-name-handler "tramp-sudoedit" "\ Invoke the SUDOEDIT handler for OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS)") (tramp--with-startup (tramp-register-foreign-file-name-handler #'tramp-sudo= edit-file-name-p #'tramp-sudoedit-file-name-handler)) ;;; Generated autoloads from tramp-uu.el (autoload 'tramp-uuencode-region "tramp-uu" "\ UU-encode the region between BEG and END. (fn BEG END)") ;;; Generated autoloads from trampver.el (defconst tramp-version "2.8.1-pre" "\ This version of Tramp.") (defconst tramp-bug-report-address "tramp-devel@gnu.org" "\ Email address to send bug reports to.") ;;; End of scraped data (provide 'tramp-loaddefs) ;; Local Variables: ;; version-control: never ;; no-update-autoloads: t ;; no-native-compile: t ;; coding: utf-8-emacs-unix ;; End: ;;; tramp-loaddefs.el ends here --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 31 11:29:30 2025 Received: (at 79353) by debbugs.gnu.org; 31 Aug 2025 15:29:30 +0000 Received: from localhost ([127.0.0.1]:54663 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1usjzm-0008RN-2b for submit@debbugs.gnu.org; Sun, 31 Aug 2025 11:29:30 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:54124) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1usjzi-0008Qx-VM for 79353@debbugs.gnu.org; Sun, 31 Aug 2025 11:29:27 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D04D510025E; Sun, 31 Aug 2025 11:29:20 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1756654160; bh=845q3IeeeKbc3kvH77Fc0ddRCHIdSUL4lrWYotxWf18=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=cJIarxBa3PXLtWGeE52lBWAQujfldAMnzvrPMjvay4TeNMYF1LlBh3lzjnKs+Oocv hgBJOjo244iQwwBsaJqBAH7AvwO1Dtvq1h6lZjh3p07tkMyBLf1pGfcnrVm6ODys4w IzaNylO87faeBEGjK4J+jlE8Gy4dEad2tsiUeo6MZEkHZM2EuwS07mZkzGJHH7aZKd 93sTzXeO0LLl9GxlWtyIIrZlbMVR3GdwC5/xkGI95vkqoZBRyGNGk3Yh9UwxvtbzyA 6iObGP14k3qn2pJV/veuu8C8Yr7WMW30lpGArwF2nwEJVdImWsxx/0w3RgWhFklrRN gN7VZHTH8aFNQ== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 1063B100034; Sun, 31 Aug 2025 11:29:20 -0400 (EDT) Received: from pastel (69-165-161-194.dsl.teksavvy.com [69.165.161.194]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id CBEF5120568; Sun, 31 Aug 2025 11:29:19 -0400 (EDT) From: Stefan Monnier To: "J.D. Smith" Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: Message-ID: References: Date: Sun, 31 Aug 2025 11:29:18 -0400 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.190 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?windows-1252?Q?M=F6llmann?= , luangruo@yahoo.com, 79353@debbugs.gnu.org, michael.albinus@gmx.de 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: -3.3 (---) > 2. During initial autoload generation, this macro is unknown. So the > file tramp-adb.el is /loaded/, to give it a chance to define the macro. > > 3. The macro `tramp--with-startup' is indeed defined in tramp.el, which > tramp-adb requires. So far so good. But during the loading of > tramp.el, some other package it loads uses `cl-subseq' at the top level > without first requiring cl-extra. > > 5. Why has this not been an issue before? The macro `cl-subseq' is > /itself/ an autoload in cl-extra.el. Since the CL-specific loadefs file > `cl-loaddefs.el' does not yet exist (remember this is during autoload > generation), this causes the (handled) warning you see. FWIW it sounds like a problem I've seen before in other circumstances where I just added a `(require 'cl-extra)`, e.g.: lisp/emacs-lisp/comp-cstr.el:(require 'cl-extra) ;HACK: For `cl-find-class' when `cl-loaddefs' is missing. - Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 31 13:44:08 2025 Received: (at 79353) by debbugs.gnu.org; 31 Aug 2025 17:44:08 +0000 Received: from localhost ([127.0.0.1]:55196 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1usm64-0000AH-B0 for submit@debbugs.gnu.org; Sun, 31 Aug 2025 13:44:08 -0400 Received: from mail-il1-x12c.google.com ([2607:f8b0:4864:20::12c]:51372) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1usm61-00009f-Cd for 79353@debbugs.gnu.org; Sun, 31 Aug 2025 13:44:06 -0400 Received: by mail-il1-x12c.google.com with SMTP id e9e14a558f8ab-3f3380314bcso12748195ab.2 for <79353@debbugs.gnu.org>; Sun, 31 Aug 2025 10:44:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756662239; x=1757267039; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6YvewWxLViR2jTgZicQDcFSoAphehuxW2sGdkloQvC4=; b=HU9ROhlBkQlcDJa1jNags1zJnNSibZL3H8NsxyLC4WdVQs4Tcyaw/hdDi+Jx4D3O5d 1KzOJHKfw+D0GWUkp0XcmH3l+ebt1dT3yvgIAEaWPh5508j7W0jFnTb3GlR260WweZ6B 1lcBJcd436gp8Jediz3EalJ+mtbMhMVKxjW1hEE92JccTwTohr23tOqcxEw6yWTftVJj TFTBLl3opsrX8FCxNJI0KyTHkZbnREWY5kQaKAfnl0MLIZWZCNgKd1VIADANx/7ezRcE 3DSNWnxLFsaaxX8u8yXezMD5KKgivVWqabOXX+HXEW6oegemviKNvbiDz1JY4BT7YnAN b3Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756662239; x=1757267039; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6YvewWxLViR2jTgZicQDcFSoAphehuxW2sGdkloQvC4=; b=ZOIcn8ABUT6gETGLNEZzTzYK8fyCFWNWoux46lsAalxIK993ru3aQ1yqYlG5IMmjp3 PbyywWqef2ysvgbSkKxk/P48uC0sAfyy411Rem+rpI5rYN0MK9VRhSnfDmFSQ9U7IcqD 1qOy5vKV67uLZxsFduJMk1VLT+bZUv2CG17jxGQeE2WRolKyNGfqZP9s+AzsE4pSXkSy ZJ9jjq0gHD4ibvtkQXZY/lOIs1UgybL1AWlk3bXBzbnIcZDxIuoLPijCiN4vNkCKJY0u i1yPKmcraKQuwgec//pCH+O6u9kvm6gXq1KOIDLjSgpWiKAz9PXYRc7YtZCFQCO/FtRm dlnQ== X-Forwarded-Encrypted: i=1; AJvYcCVxDJg1aQLExnV1sxpHLZJGixcTOxUDdUL1YYQ2Ha7yyQxKq4IueZfkxJNZdSD6OQDMNWYi1Q==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yy1IjSXFIYgy+OaSuxpztXgG7AKHdG5rJtHXo1wt4cYRk93MCEs JtxTg8jGDEzrIB17akw0YEYC2hSRL5/KxPp6IM2evT6U3r8rKvVWA7N5 X-Gm-Gg: ASbGncuvSpjruEUk8jFKLRAjxZ1qxvjPn3G37DTBw3AkfO5olVRyxTnztVkUqU1RwXL oibYUwLZy/5/OnpJWGNnrMOJuasCWKDWqLimmfQRevK1qaCPtsCA810FZuvtbJu8UlrHJZvEhH5 YOxYOzkkfQqwOIx8+I7yhM0BU0QIUze6HjR9V/A6JI1lHNKePnxlVmfMpvJTuAqPulJzv+I6lLt qKq/Lx5z0CGInkO3APUpuIy/jGnExsWYHZNXZ+XBj+ZbatxNJTB3iWxNq1DuxCSByRGrSNllsBF NAd8YWNM+rEK5S7qXZoHkTg38zdzYbaSAHtmb+0QtBezCrVa50+KlHRzw3udeBax2+JWEySwnD8 fdfwD+k13g6E5yMB3xhUBAnjpO2fIsHPeqDJ678pUH92G9w6Y16Z99ALIBBlI/DDiZpU= X-Google-Smtp-Source: AGHT+IEFgPHXduBZAQTc7v1vEt5cE4Qzmc9EDZmE2e7EPYVy4ME17IS6AarjJl+IQiR70KAoPZodOA== X-Received: by 2002:a05:6e02:1a69:b0:3f2:6f4e:1942 with SMTP id e9e14a558f8ab-3f400097a30mr112121115ab.1.1756662239347; Sun, 31 Aug 2025 10:43:59 -0700 (PDT) Received: from moss-4 (cm-24-53-143-223.buckeyecom.net. [24.53.143.223]) by smtp.gmail.com with ESMTPSA id 8926c6da1cb9f-50d8f31d0absm1539643173.41.2025.08.31.10.43.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 Aug 2025 10:43:58 -0700 (PDT) From: "J.D. Smith" To: Gerd =?utf-8?Q?M=C3=B6llmann?= Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?= =?utf-8?Q?s?= message of "Sun, 31 Aug 2025 16:03:39 +0200") References: Date: Sun, 31 Aug 2025 13:43:57 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: luangruo@yahoo.com, 79353@debbugs.gnu.org, michael.albinus@gmx.de, monnier@iro.umontreal.ca 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.0 (-) Gerd M=C3=B6llmann writes: > "J.D. Smith" writes: > >> *Question*: >> >> In the lisp/net/tramp-loaddefs.el file which was generated during this >> build, what do you see under: >> >> ;;; Generated autoloads from tramp-adb.el > > This is the tramp-loaddefs.el after building from git clean -xdf > > > >> Can you try a build again with `make bootstrap' and see whether the >> warning disappears and if that section of lisp/net/tramp-loaddefs.el >> changes? My guess is this is a harmless warning. > > The errors are the same, and here's tramp-loaddefs.el after bootstrap Thanks for checking. These files are identical, and the error is preventing tramp--with-startup from getting defined during autoload generation, so autoloaded calls to it just get inlined as-is in tramp-loaddefs.el. If it were working as intended, most of those would be replaced by `add-hook'. Gerd, do you mind reverting e9800cabffa and seeing what if anything changes (from a clean start)? Probably nothing. BTW, Stefan and Michael, I see that tramp actually autoloads more complicated forms using `tramp--with-startup', e.g.: (when (featurep 'dbusbind) (tramp--with-startup ...)) which means the macro definition still needs to be included in the autoload file as well. For consistency, maybe it makes the best sense NOT to delcare autoload-macro expand in tramp--with-startup. Thoughts? From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 31 13:47:39 2025 Received: (at 79353) by debbugs.gnu.org; 31 Aug 2025 17:47:39 +0000 Received: from localhost ([127.0.0.1]:55210 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1usm9S-0000O9-NK for submit@debbugs.gnu.org; Sun, 31 Aug 2025 13:47:39 -0400 Received: from mout.gmx.net ([212.227.17.22]:46025) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1usm9P-0000Ng-SH for 79353@debbugs.gnu.org; Sun, 31 Aug 2025 13:47:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1756662442; x=1757267242; i=michael.albinus@gmx.de; bh=aEqPDXE5opuv2hSS1EKDno61yR4150icy22XtTf3Oso=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=RHCpKPaa8LmB6fGQRxjpD3fPQfa2wkXn3pXjBXkOoaUK6x1Bck3KzkDSDmImntbN +AxzsPFoQQYkCdzcJnHzDWeUdXGVpk2H+kdwfC9dG8ahfOkDqTwInbak7fHTIGAIW +7vnpVSP2dtcoY9M9CaMjLfzex0JFdT8/jnKbrt/5reYKLQYWjO3mp0n/LD03M+be WYOBEeJvTCUFj56hRvXZ3gaVbewZ+xNLcNOTfBhxAq7K5l4THeVWPCaMQFWV5mvIP Y6pfFnSHLi5zQzWqTSQiJhHLuly1/ZSRTFZDUi0dk6pPYmKf+D/mDoeFR9rQ2b6u6 NrpU+dq4zVoSXa6OLQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mnaof-1u9r4h2s7h-00dVUU; Sun, 31 Aug 2025 19:47:22 +0200 From: Michael Albinus To: "J.D. Smith" Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: References: Date: Sun, 31 Aug 2025 19:47:20 +0200 Message-ID: <87a53fl6xj.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:xNLAYn2Br5gUbtDKLKk1MmCMRDvbjtulopRW3CSGXz1UwtSYEFi OF6Qiih3bqZTzmSIWBNb9xftJ/pI52KAQXUE71TdutQemPaJ72/2XZcLvLkJKj7Y/wjcShB QW8XFgh2MIC8l4O2/F9XQ9PpV+gbwPi+LC24cxusIMK79In8oVp9OK5SST+BetBLgxnEk8m ygSn92LYXqZ+JX1zMUQ3Q== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:otFX2QH46G4=;3A0vyW6Wjaj/q1aDzYPKQjeWNAZ SeZjPmZvK0bNhhJJeztdPfpUO04W1zJmteyAUchosVZdMla3cZ3pFuJ0aAIok+G15w4LsVfnC 0fPzc7vfNdFrLpbPqTyN8LzoIas/BGzPcbvU1kKcpf8QhkeA6unN/WDzJBTVhUgBMlzurbbVw TMCu7Rkt6qanFSuLWDZSVuqy/QkMds8oVKlkNLUYWIO79qUR2XPPq7re5pJZ0/1K+xCIH+A22 aq81HZDFQ95KZKgE+PCqYlbBRWaYIYxadjSMk1c1AT4hf0/mCmOj9hgjRhBWPDqZBC3j4m2iH EIJWXI6U9l634SlLax+KhLLLeT5yIpHtF079R6df9hbI2BzpBSDuMsFvfcje9uWLNgKcwVh2a 95aM1xXQHFPrQqeb1usCvhHdvxtGPnKkeUd6+wmcQCt/SFEJfHtfVPp13ozQr0Gocit+WC2hl XIDS/NAazqDcW9j+Edb4puZNu9jNhYlwEhl+gYgQhLTjS8jNtB+LdMdXgmxbx64givLdDMK5Y jUs0eFd2yJ5gKP1vkBUthU8FNqtMWpywTmRtSkB6QH38G1NzrRYJfKKPVjdPgklRhzxH8pDad 6fPZvli1/zbt9zBQjjW6ew1J4Vth/0Yo/DAoIThwophxlNnvmtyj71L6mUlkCiSWxYROjUGjX UWn5YG6Dli+APx4dKhAIhCEL6dZjMMeLRiKjDwFgVSzT716m2b7FcaZ3FM/WIRrYYj7EuvU5d Zmj4KdmfD5b8SKb1pZabVpAYb5Pimh5Aff9NhF2ZKCxnmGBbgJaZ3LpZ6QRZmpl0QhXfGtzst 0bMKS8UrQ1RmyqwlrH5njDA7Sj+LsbJgzkD8bR/2YsFA5+1QcDFsn/SDb0PPeUkeCmY8wRaoC qSr0S/cQz/pQBai1/ktCvITjuFrCXM8WUC+IgvfWYtCRr0kUxbD7/YE+r0t3u7R04Au3Ps2D4 pBJnDgAT8FoIYx+5hZ2p2D407trOVzDOiMcHDHhomxb7nvH1PTZCgY35Dl1OyMHR6lg6CBylS y7uN3eq1NpAY3m3oZyKW2qTM8tKjSDkVFnAh1nNvlb6A7yd/fcPxDVvDbYeWGKWbbbEPrYiS3 Xby8PMScPmHH1oxksjGBOSwRSVjMEx8ljkMj49DkRKw6E9QtTU7iwR59khOavNqOF4qChDMyK IJZTscsfVa2IjOENqYAtcDRUBUmw5ZO00hRzhISvVKSj4PGF4aI3I4SWK2FPQfpIOq+IwTLl2 eukhJ6m2oEusL+5aSDrskTLMJHC1y8pnr7b0OHdDeDTcnM22LJ3FiztcY19LcLZu+v2SLCfYg p5OlzMhC+UqhkJmpNedAfmmZdpmHnRQZH7BOlL3QWtNZeU+u3OUrRY2Y9Nr9nwmH32QiyJtHy yWz3Xn9SaeNEBQoDN60xS08PHnk7EuCEnzX19day+xgdS4g/MCvPJVMvHZ6gABw/vBGif3CmK 98j+ok6DXfFGQ/A0mYzHnt7yGCc3OwZjHvHeV+iMJgqmWD09qOkgMT02u8RAmSqlfPCPRCiPX fCaNIMPSP52WPoDf86nVKgvEkdALyA0jCGq+v4qe2rPfOyyIPbuZEJPKdgDN/Ak4DJd9lTuJh paST27QGc3nsw+heyUyX+NK2w7tanbJ/WjnDylGdnnxFA8wwyuOAm8AHIrSUU1lV8Ep3gYkxt oCafDG5ErSJnKaHOBduK25pcYZjZW5mzcfWQvdTL9rwUIcEg/Ccl1h1L1RZOiVxVvYl4SPfcg j1v0bM8g0Ql2Kj1m9w+h3xb7tt4W/qHK4MWGhlMh8bOO+rvdu8b61cpB3HSiiFFdEcuHZX4Bk raNwIAU8yLWNhLI/4vTg6buAc8gW8FnbWgWaUfBeQiX6T9fwtdVusUoIw+yqZK1ev4uARBVYS 0MnhlaTyWeWIlGGGabKOa3/4U7NHLbzaNRm2uDlhrVDjOylT5t/9IVkujuBoykJ2NPBL06vAb MeP7/4MgyXUSFxjp78kdh4+1egX//K1/YNAs9qBFRxYlJI/aKb+oBPIIwwecXqCKN8/QCej5K bAdR8lAwkCc8P8v7g1YC//0vK3aRzkdvM9rjDSqmmSCUgao+8fxRgemC7mai5E7GHTBLo4E6V /6+CpoOI03sEUtVRgdPxotNMknCKWGP/+iOXP6JpEim2YZgkf5w0aO1wC+6hrPEqkPO/n4MHD sKcjphWauunEsp/bTbjm9TZrjfF5WgznPO430IikpY+3jBaZTRFbKXOrQ08x4y5To++UHCZw6 aHHUI1So/t2e0qnKgcr0tMayNmr3m+f1Xdly0pAx+X5kk/e1M7xsoxDl0YecxKtHlXTa7hsJO V7x2l7zxdID5mEbQXyf7BnKc9xjDqFc8vcEtd8A8xu0laCDqLt5J3PysFK9SURuxOQVAAXgi9 FYaOrmDVUhGPo6ohmFrRSqv9xcdzgxyu1X+41QeWb7Vaq+3ggg21pfxXpB7zEA2AastVc3llz 9wkS10nujwwJ+EJvudBJV3uzd/WLmNbBFn8RqrlktMUW0bCJ0VUy7R/xuPTeeUtXDGKf9kzKz SiaCOwxGDAluMu0RSqDIcW6DAILoXl38FZjcDiNmofFSqSifYs3EKs8g4bnsPw+SIhOT+xtJn 3aaDT6J0iwzleIXT/X2BI9/9I7n8UzbyeAZXXbuALqjePwXAamQnqVn+abpE/lp6/lDDjktVH /FKkU1wEw9qke75tmMypBQlYS7zyvTaD1MY2sh00jDnqDilHmrizsHy8s1e2AgdMIEs+gIZIZ OW2xTRx4mr7nys+Ci8dSUdWzjXVFUyXgq5j/lczk9JBuzx4uzPXed/dErhQJSgRZST4C07SLE beTCN17FtueBFhRX9vKSKbe3C7IcfyP5gdpSzpMSbfVl0yQJORB9rEJePYa6drvXgjV8zfFWv qSxOVxRAbAP19dVoCo6BXEMIxuuaOkok3QOvw1GGe3Ih+KSU1br3LUAKcl2PsjFVuBjUFVsyT QbG2dfzIIIyva9U9m8YjBJSExlhJoPphSODp8Bpm2ODks+IJwjEGOi//5JfKthgZ7tfdDq5nz kEgNuddbIS2fck10eT/bU01wlY6ZkA+pLtE6zwyR1PO3y1b3ksThp/vmZJcBFg02sSdDJ4Cb/ 4XuGgBEbYUUwHYMl5yYHZ0iFgtcRVGcvwsSovj8x1f55RkY6TzwpdMeIeu/aFOJK4zOER7/gr CQT+qX1pzdQEG0TMAod4ncAAZGhuZmUAA9E9XrsspuOwZcKE6TaC4pPi5U3OhgvVnNpiQ0Vop /pFfMP2/QtaxRmmClzU/mv5Ks1826P64OjnAitRTKKAqKtBAk9qYZFb9WPnQJ4Jygphhhg/GR 8uF9JcRVqlM/KPv5nTLVtmIniTSi1t8J3fCTW7KNxnke6R3VURNUkN8d2kWzaO7e9/Lxry9wJ mrRjXhJMGSiAaHI4h5RGIMMX9TbHBsWUmyyadG31EXWyLMMJ9VIiZxPjteClG+c+qA8+C51ul FsCLLDXS/9Kpk0IpHWkiw0KHH35/vLJxiUA626dmrbkVmw+fz6+4Mw0PwS7T61sKR+B4CLD7R hAAP1uwyTm4c7e0i6cLr64b95ZIhm3d4z3rcsJThz7fhLRaoa6SbdpNUoNGaPFMPKVAu6/SMX 3/DPdQJ1MRKEnCJZQJUBDjPgu287AXpW1TSHnzzgmeBUrCF/4uDMnL8ngZ04Jr0mBvyTLJLEg pmh5zEfX3wZ1Zwu8HY5ZBmYrPZER2ZT3Yl6VfZ19O0RTo+Q/KPLHnmQdoOzUxamNasj0cg9qu Coq0BlkwiM4tPeIZORFdpq8PIZtCVjBMw0wUhpDGQ1Iaa4o4PXcs4s/TIk2vGUrvSCqe3syVc PLGFSXRKT9Yv2i9NgeYxnuaVcdcN9S+Z0105ot9liMBl42LHK0nbhd0DArW+OifVuhw8Ssr1g QbMO7MSdP6KrqBi8W94hfz0el9NSojdcHFWuqvPIfSprGl0j5+slnBuCoLofInlnh0vmipgT+ 0E52d9NgGQDxQthLNogrTnaPzBbPUcbldJgXsXTljLAu0zAVToe7hdVzkWunIWbtD6LzBCcxG 2p+x2W1t08iXRsvZaP9vkgDK4A85j0hGgJFZxxMKiIfdMFW1S8ui9WrWDpH2Z3nZ/0j8QSGBH pUUeioYbTDrFomqK88i7xKK1Q1n4kz5u3GjUcrhBcAReXw4zn4LEXv4Lf5Q27Hri4mG22llS+ vq1orGjzwyoyUwH97/vq8AC85EytuY3b0QfmjK3ApRiHBUnqcrW9ORP9rB/HeSRshg2tZ9s8m KpIbEOpTHRNcXgMJ0a40A/URSmF7qSv8/qzl4wRRCw3U85vaqsw20tNYtLKOeZeU9PpQmaiak Pz0/k1Vj+Se119V0tryaZfL8sqAfVJcradQy7bmGKE4D2t84lXrU6SOCocIMfhSMcX7HHh+Wz IE6jb/2XdzLP4YXCbEUwpj0ISHwy0v9AT6PGv006eWhaodp5v4pj67Aalc5zGkY9XlMsYfrOD PeSwHOZ8oJBZ2t2K4iY8074gaNMVxMjhvveCnXJ0d3x0TuoPl3Cjn4oNyVAoGZc0qTdSI7zlV K4gI9dtNNoddSpD60VTilh0SemTgdNDMwxtOLFi2Z6QJetrSaTPIBKtun/B/YHtfflcO00NMi PhvR+ZiWJrLVELOjuuvWehwTM2wUPqhs3NKZ8Jv/SLoONlGNC6BS8jRNUEtOXlm7jdDln93IB ji3HE3ify/fmebnVEWYXcFI8KnyZF+pqWyZmEMjMgxi/glqnw2LAcf9+PJ2Vwim48//xFN1lo 0Wt/ndUnJPUP3oiqooHCB6u2eW89JqulqViudtjVAfcr5Xa/bjBaVQzk1QwQZltXnngigIAUq 3TYDzLap0i X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?utf-8?Q?M=C3=B6llmann?= , luangruo@yahoo.com, 79353@debbugs.gnu.org, monnier@iro.umontreal.ca 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.0 (-) "J.D. Smith" writes: Hi, > BTW, Stefan and Michael, I see that tramp actually autoloads more > complicated forms using `tramp--with-startup', e.g.: > > (when (featurep 'dbusbind) > (tramp--with-startup ...)) > > which means the macro definition still needs to be included in the > autoload file as well. For consistency, maybe it makes the best sense > NOT to delcare autoload-macro expand in tramp--with-startup. Thoughts? I've lost track long ago. No thoughts, therefore. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 31 13:55:19 2025 Received: (at 79353) by debbugs.gnu.org; 31 Aug 2025 17:55:19 +0000 Received: from localhost ([127.0.0.1]:55225 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1usmGt-0000nc-Eo for submit@debbugs.gnu.org; Sun, 31 Aug 2025 13:55:19 -0400 Received: from mail-ed1-x52f.google.com ([2a00:1450:4864:20::52f]:55671) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1usmGq-0000mu-CP for 79353@debbugs.gnu.org; Sun, 31 Aug 2025 13:55:17 -0400 Received: by mail-ed1-x52f.google.com with SMTP id 4fb4d7f45d1cf-61cbfa1d820so7036433a12.3 for <79353@debbugs.gnu.org>; Sun, 31 Aug 2025 10:55:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756662910; x=1757267710; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YrKcrur0CqwrGYFjTnPbN4Y/mlHQodN17CenkSgfwrU=; b=l6ZugUo+wQe6cIfkw2KKVVdil0zgrUIddB4lZAKTgU7ZuJwjTFyKQhm3UDvk6NbTBs u4hEjplmRCTja24xbAl0d827dQpR/k2RlfXztolkckP8Aq+82TZs71fGNoYJQM1JX5b2 zydt+B7FeDG3vMZmJM27HGFGLTEDRz86Ct1EoeSYnALV1aV4vm58HjxICyvKNw41BF3g viljgsyxRg8ciCOKtHss0pFG1jR6Qr04k3MLVSaV/P2q9J+vE563nCeZWNkacr93q4DL 7IfH55aXj429opP0ubzrVte1W1sVWvV7g8EZWrBP7A+h2lWSmaNk78dnUicAtPB0Jy0P AtOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756662910; x=1757267710; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YrKcrur0CqwrGYFjTnPbN4Y/mlHQodN17CenkSgfwrU=; b=QcZ0yPwvXmkpA9egcUB2KCWeVAhvG741k9IUFK40kfHCov6DZqXA//6FB5JnxCnTHu ukiWiB2Zl+CzBvySSM/JeN+PggbWipUDkR1+3NkCBb9Rx0hlSp3FoqNnve0Q98R2S7XB 0T+10rm8RxLlWtu1oVk/7zFIge8InOJqnqC3o9hC1bHEeewxjs2cUjemhl7gpT36FwUX pc49Q+GqtRZY1RYxb/nI3ls5Y4M49GbVvBUOrcS3xWH3YKJxbHxQFRpKoIvxOYWjPncg uSdbH2ip1kvfbIY8TXScP1P9y79oCAIgK9VEyK3EZZhrFgmUjLG90Ayega2ACbKVpZvf 9+5w== X-Forwarded-Encrypted: i=1; AJvYcCXu4sD2wORTtjO4FsP5TaoZJFgnV8s2qJn/LPgL4QkW7CA55wW1swwsSg1wN4BWtSsli/W2dg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzSydmgYEPdo1Srd9P7tTOvpOtN/qq3dmIEFFkEELFsqv0JdAX+ 405URIUyJ8UPjvDxIVgy0F9uTKa8a4jZtXLoHyBSjWxx/UyrtlIm/IR3 X-Gm-Gg: ASbGncsm58M+gTJZFe/i93+H3st+mRr/D07fB7X13ZDyzlFEYj5xJGxYoPlLF7nrzBP TlISLuzjY/62u8ODaxz6lkT3D3gpmUvW7ChHTukbKMBCBhYTs1a/ekBd7MuObv/FoK/YzAbvJ1Z QEbT7JSqzC//9tM+ojWIqUKPC0omHDuRccem5eYLRYWPuUOnmFjTrlktugcRFVqVNo6IQTJx6yq ub8Qug8uFxd8bglWultoVqZ1scJlA5oSszjHc1HnKA2QctccMTx296yeHLxbaYNVCYCfM+xu/mv KwrueEksAcq98pSikp2mfn8G77r7SNd1HvKtWV5NmeGnpcaJuC+EAdTGa8scgGinw4jviLG4GAs bsSlK7T6YWFiBxdBkWJMBhyPeYgtz/IJAIcNVQOMA3WT6mtrONrT5+hQF3um0WqYekAIW1n4nup eJX8fQWNW7O0akwVKMmDZvzbK5RMYaG10utxxTcXGzuA== X-Google-Smtp-Source: AGHT+IHcbtyUytSbfOMElkRIWpfVgGFjs3m2Ur/pSMiM7xGQIyu+ZXFmfXMHsPTQkWGPfScW6ZVkhw== X-Received: by 2002:a05:6402:42ce:b0:61c:5cac:2963 with SMTP id 4fb4d7f45d1cf-61d26eb426fmr5008860a12.29.1756662909859; Sun, 31 Aug 2025 10:55:09 -0700 (PDT) Received: from pro2 (p200300e0b71263005d2330a0f59f6853.dip0.t-ipconnect.de. [2003:e0:b712:6300:5d23:30a0:f59f:6853]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc4bbcc7sm5483648a12.24.2025.08.31.10.55.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 Aug 2025 10:55:09 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: "J.D. Smith" Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: References: Date: Sun, 31 Aug 2025 19:55:07 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: luangruo@yahoo.com, 79353@debbugs.gnu.org, michael.albinus@gmx.de, monnier@iro.umontreal.ca 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.0 (-) "J.D. Smith" writes: > Gerd M=C3=B6llmann writes: > >> "J.D. Smith" writes: >> >>> *Question*: >>> >>> In the lisp/net/tramp-loaddefs.el file which was generated during this >>> build, what do you see under: >>> >>> ;;; Generated autoloads from tramp-adb.el >> >> This is the tramp-loaddefs.el after building from git clean -xdf >> >> >> >>> Can you try a build again with `make bootstrap' and see whether the >>> warning disappears and if that section of lisp/net/tramp-loaddefs.el >>> changes? My guess is this is a harmless warning. >> >> The errors are the same, and here's tramp-loaddefs.el after bootstrap > > Thanks for checking. These files are identical, and the error is > preventing tramp--with-startup from getting defined during autoload > generation, so autoloaded calls to it just get inlined as-is in > tramp-loaddefs.el. If it were working as intended, most of those would > be replaced by `add-hook'. > > Gerd, do you mind reverting e9800cabffa and seeing what if anything > changes (from a clean start)? Probably nothing. Sure. Reverting e9800cabffa73018a83108de2bb4e1686f1e8385 Author: Po Lu AuthorDate: Thu Aug 14 19:33:09 2025 +0800 Commit: Po Lu CommitDate: Thu Aug 14 19:34:28 2025 +0800 Parent: 02f5a075dc2 vc-hg-checkin-patch: Fix several issues Merged: consult-problem Contained: cl-packages emacs-mac-master feature/igc master Follows: emacs-30.1 (178644) Fix generation of defvars defined by easy-mmode and company in loaddefs.el changes nothing.=20 From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 31 21:18:24 2025 Received: (at 79353) by debbugs.gnu.org; 1 Sep 2025 01:18:24 +0000 Received: from localhost ([127.0.0.1]:55843 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ustBg-0007oQ-9c for submit@debbugs.gnu.org; Sun, 31 Aug 2025 21:18:24 -0400 Received: from mail-il1-x131.google.com ([2607:f8b0:4864:20::131]:50521) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1ustBc-0007o9-Dc for 79353@debbugs.gnu.org; Sun, 31 Aug 2025 21:18:21 -0400 Received: by mail-il1-x131.google.com with SMTP id e9e14a558f8ab-3f38bafe6ddso12304025ab.1 for <79353@debbugs.gnu.org>; Sun, 31 Aug 2025 18:18:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756689494; x=1757294294; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=50Eq9qExYRpO/VyDD/DKYdL9PBYQNpdDu0VUEMCMDdI=; b=d+NlGK9p2WIQo5qimuSTv0QPpnhKTIzHB+wyATS3CzQ0iKSv3BmrT/xmdwQhursJTx JbTQ/ywbnEKPZvvh7irXwFd/cauvrGL0tqlNcPPsLxTAyaCwu6j8XSOFUIcWPbIEUH+5 pXSH4qzGOZ28R3Oy+bxwzYnCeIvBnUmB/fSPHjZoZMuLb2g4cqQhgk09ydDMjo935vzE s1oaC9NHzXkzoXIUIS+Zrx5aitpUAGZtFPBbc9J2M7F1JlBOtjaDkcePG593EkhAfi+n FS1Y/0RGS0t114js+iiPxQivycqsPHllot7wbfP039ApjRIDLSfRcnmqMThdTCH2s75Y dtQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756689494; x=1757294294; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=50Eq9qExYRpO/VyDD/DKYdL9PBYQNpdDu0VUEMCMDdI=; b=caOxp87j20m0KqCQ3yRJeui2v94vGwQxlraQvsXqGBS2mx1hFkOtvCF4mHvVzaTpsN nHRYl/UvAufJLw8z4f0fwb7jyMVQ6+pQ4BZ1RmCVfniOqQPrgNk18CYCLQW63ul+VqcW BIWEJ8L79gb6fyIa2tcWDchTjvIEkxmxgRhUM8aIlqTpbOQ6o2s1pVldbjC+s3aNIc6r 3uzxa9efNfD2rrpCh7P5Mzh/44jtE917aIoA7YRjqOi9AoAYWFQiBPD+8jT1/7+RyaKS 01RQK+i7Fvlzn+dZWCo3+3b4VxQzuugnzTg/b08joHK1p8ODmQ2yKCYh8VWpCUxFKRek aj1w== X-Forwarded-Encrypted: i=1; AJvYcCUAjSrFpbg0t98ryVPhjl+9eudRB/CppCs5Fcvs7+y+GzrOLjsbJMw/iNgiBZbDxAxQwu8cRQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yz4CEc7TZzHxs/5OVpEaixKJ7HcRLVabsPOtP2+LY4OhhgXBvXp S918Sts2oExYF5q3Tl+LHW9Y2Ba4Gku78hNt5Tpuxm9DKYYDtNiwLcQB X-Gm-Gg: ASbGnctM/7negOeB1ymVMdzz69iZlUTf/IfyUqO64BS+5lT7e0YwDQEdQ872G15p0sf ACJZhL7SuqMP6lYaWlqFBXPN3eVJsTyOFXGRr4AuyX6gElGEZzbniuv3cSR6XzNGpOsk0Yw8NfR J7Q4LyXO4ueW+wzxmo64pnuV7vcEE4F8QQZRgSmk00FXYWiFx2sAGHPYgBiASrVkY50/zRohSI+ A6fsc5FHTiFAaybr4Wh/LBzegWhpDGXYOogwpX50pDobRmwMIntBaXIkPMgFJk23ugi4C9ujqat HwLe/rxcBGFgOt5IjPD3B3dIKzkVNsqFqVc7S4/bYWuKegX0OZmuMxFIqNo2emgGpysrMX2V7TU ND94fI8AbSLtSzfKOfytTlbkBpKIkpFreoBIxtZzDgEde56F6Wcsf5xrlCNkXCO9UIxY= X-Google-Smtp-Source: AGHT+IFvf0+Tbbz2uoE6+UZOBeRrDbr4hIkhQIDpu9dfsmaWnYKyvYF0eNaCJEmeYzOx0hqTHoZdlg== X-Received: by 2002:a05:6e02:1707:b0:3f3:86f:520a with SMTP id e9e14a558f8ab-3f4024c77a7mr129137265ab.22.1756689494214; Sun, 31 Aug 2025 18:18:14 -0700 (PDT) Received: from moss-4 (cm-24-53-143-223.buckeyecom.net. [24.53.143.223]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-3f3de71ed11sm24339955ab.12.2025.08.31.18.18.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 Aug 2025 18:18:13 -0700 (PDT) From: "J.D. Smith" To: Stefan Monnier Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: (Stefan Monnier's message of "Sun, 31 Aug 2025 11:29:18 -0400") References: Date: Sun, 31 Aug 2025 21:18:12 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?utf-8?Q?M=C3=B6llmann?= , luangruo@yahoo.com, 79353@debbugs.gnu.org, michael.albinus@gmx.de 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.0 (-) Stefan Monnier writes: >> 2. During initial autoload generation, this macro is unknown. So the >> file tramp-adb.el is /loaded/, to give it a chance to define the macro. >> >> 3. The macro `tramp--with-startup' is indeed defined in tramp.el, which >> tramp-adb requires. So far so good. But during the loading of >> tramp.el, some other package it loads uses `cl-subseq' at the top level >> without first requiring cl-extra. >> >> 5. Why has this not been an issue before? The macro `cl-subseq' is >> /itself/ an autoload in cl-extra.el. Since the CL-specific loadefs file >> `cl-loaddefs.el' does not yet exist (remember this is during autoload >> generation), this causes the (handled) warning you see. > > FWIW it sounds like a problem I've seen before in other circumstances > where I just added a `(require 'cl-extra)`, e.g.: > > lisp/emacs-lisp/comp-cstr.el:(require 'cl-extra) ;HACK: For `cl-find-class' when `cl-loaddefs' is missing. Interesting. `tramp.el' could probably just (require 'cl-extra) to fix this. I guess this is a new use of this cl-extra macro somewhere, which wasn't caught in testing. From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 31 23:53:50 2025 Received: (at 79353) by debbugs.gnu.org; 1 Sep 2025 03:53:50 +0000 Received: from localhost ([127.0.0.1]:55990 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1usvc6-0006F1-5G for submit@debbugs.gnu.org; Sun, 31 Aug 2025 23:53:50 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:46524) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1usvc2-0006El-PQ for 79353@debbugs.gnu.org; Sun, 31 Aug 2025 23:53:47 -0400 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 35D35442220; Sun, 31 Aug 2025 23:53:40 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1756698815; bh=ipFfXikZOUROZ9WF8LY6HpYk5pZLauxPq/geINS2Pss=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=OYbTudbopavfNbtRBoW3ahc+E2RB6goNO7Ro1GyOjFnh9Vz2IQugc9mSNhtYJ5HVd i46bSXFdtl4s357gQJnG8DIp98CJBtBmP82Pdsga7CUtl8wAS2weKSYWuAJ5QjwFkr qYnvH0KN5yhc9jl4IPIgdEhMOIgsBe4Bm5OduIagr8JuWTeOHjqi0zJl5Xbe7cdr/s jA4XNSHHpMzN7j9LzV+tE3YtCOWYem9L/lPQjTqimA2+wAdDWdvPOpzz4PaPlQnjZ4 lPAHK65ictIZqcr2Hfj17+OV88+dyAaf0KebMAMwozpZopCv1xnAD8rlJSyACV1uD+ /rXf7fL5RYeAg== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id E998A44221F; Sun, 31 Aug 2025 23:53:34 -0400 (EDT) Received: from alfajor (69-165-161-194.dsl.teksavvy.com [69.165.161.194]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id A7524120184; Sun, 31 Aug 2025 23:53:34 -0400 (EDT) From: Stefan Monnier To: "J.D. Smith" Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: Message-ID: References: Date: Sun, 31 Aug 2025 23:53:32 -0400 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.065 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?windows-1252?Q?M=F6llmann?= , luangruo@yahoo.com, 79353@debbugs.gnu.org, michael.albinus@gmx.de 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: -3.3 (---) >> FWIW it sounds like a problem I've seen before in other circumstances >> where I just added a `(require 'cl-extra)`, e.g.: >> >> lisp/emacs-lisp/comp-cstr.el:(require 'cl-extra) ;HACK: For >> `cl-find-class' when `cl-loaddefs' is missing. > > Interesting. `tramp.el' could probably just (require 'cl-extra) to fix > this. I guess this is a new use of this cl-extra macro somewhere, which > wasn't caught in testing. I wouldn't call it "new use". It's probably just a use that can now occur a bit earlier (before `cl-loaddefs.el` is built). See also comment in cl-lib.el: (unless (load "cl-loaddefs" 'noerror 'quiet) ;; When bootstrapping, cl-loaddefs hasn't been built yet! (require 'cl-macs) (require 'cl-seq) ;; FIXME: Arguably we should also load `cl-extra', except that this ;; currently causes more bootstrap troubles, and `cl-extra' is ;; rarely used, so instead we explicitly (require 'cl-extra) at ;; those rare places where we do need it. ) - Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 02 00:49:03 2025 Received: (at 79353) by debbugs.gnu.org; 2 Sep 2025 04:49:03 +0000 Received: from localhost ([127.0.0.1]:59323 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utIx4-0002Sn-5N for submit@debbugs.gnu.org; Tue, 02 Sep 2025 00:49:02 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:45145) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utIx0-0002SG-Rl for 79353@debbugs.gnu.org; Tue, 02 Sep 2025 00:48:59 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3cdfb1ff7aeso2418312f8f.2 for <79353@debbugs.gnu.org>; Mon, 01 Sep 2025 21:48:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756788532; x=1757393332; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=5jIzSuR3WxHqt0rh5iyPvTjLFAGYLwgcGAkG3j3NReM=; b=dy7PJvIcYowzx/69xpdFDUS6O48fN/OvnMwYNsebKpanqDYPPIBbQEK5IZMMpwthze oyQBhmB6/YoEssdV9NR/EUOLzdzuh+mAP22sMN20ktnkVS1dN/4bT3sSDX6KElPQpm+Q TudVB68aANvuNhBJFaWpGL1YulrvKokEtmx7nL602Mle2jSdvDwCaYwD4PBzheNC0oD4 lR77kzpkp2U55uY2TMwqfGdp4WFJGQ9NPcVBzSjzsFPQcqBslUtd+SAfAXK31Oc1j0LP avar8QFQ/kIQaWGxy7Ffe5kRyz6+A+LhAC5SxzHQBV6cuHZ4oX0DlF9eqTOTub2XIPLF YMXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756788532; x=1757393332; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5jIzSuR3WxHqt0rh5iyPvTjLFAGYLwgcGAkG3j3NReM=; b=j9MGnhxp6Kiu77rXr963rpGtpcGlH2dO/t6WMBxeiYxIOyLTkMhUwU/EMBdHqoemHQ Je3SfbRRe78q6cwlgwoT61LyynswI6nJBlIKX10VlSX20gDG2rCaYVgaGAaM+0R0ah96 MqHh3RXwSPnWHj5lCy74C+wYksYDYRCLTkBlXWRdWciZCB8VpSPz9w+eOWtcNBKZpxGb gtfIcQphApAuWxF+aDmK/latUk2xjGfvYRxlvr5isOcZKX5Ad0RYJQ3lquo51eAn94kX riFrj02Af8dk3uAXfxPV7QzxpH0RUmTHqqHewJf/CQLm/HwqljtcVn+lI9WHFBDZE85L 44uQ== X-Forwarded-Encrypted: i=1; AJvYcCXoaKye2qBruygxT0XTNjAiXzC8tC8WIB9DmNGN9MEMSy7KD60nIKuZZpuO/jTXY2jnphU2PA==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yz79oHUMEuG7S3wb8QeuOoRH1rk7TcMsNui74h9NaGChvxfKgp2 tFiKWXK/Zi7oZVjFnx3m/jTuG/YmBlYVgGIF9AAJeca+xv1Zg2Ra52vh X-Gm-Gg: ASbGncu3qjfyjVwY+zKLK3IHo4UiZrWoc6X7apZhUAKMKXmNGl0YRfaf5iCsFprOTh5 4J555kYxwAVsyrq7NiMWiKQN0u1xsBP6MteCnhFCtvLxVsx8R/XjCf7/tvlrm4MgGybB/l8rj5a iJU5nbaMKj/vMbzzEBhgB9esZQdj3KbsXeJTztSCSpUGShYZDcEF7gz10aL5pxrTxqpTaOySlCL U1NHjNeVJtRBBanFPyp5s5Wl09UgtkCoX59dK3df1ndOS0Rd05/+Vwj8K8DpGmmMwidLlxSDayb 1Rd6jHicyNwDJwJo/kHjz9RDIM3q54CpEH0unlS/y51sCVUIRhLJarqr7hKPzO0hm86ZVngHhLw P2QHSiePG8Hp6BXuz9sX//5yntj2uDlP0nVCW9pcvugpkMfT5ie6ceT6t90vJstMthrrHvxAeTn MNmH8RSe7Ydw7MqSvg0CgNbCGTtEhcFZk= X-Google-Smtp-Source: AGHT+IGEubXyZzhz6FlWqqN84PXxGl/Ykm6H1J24mRbVDQf9QX7Ac9ofHLwhRfjZUf0FBpmju6FqIA== X-Received: by 2002:a05:6000:2dc5:b0:3c8:1df2:53f1 with SMTP id ffacd0b85a97d-3d1dd81e3f2mr5860467f8f.9.1756788531763; Mon, 01 Sep 2025 21:48:51 -0700 (PDT) Received: from pro2 (p200300e0b706a40084a413bff81ed894.dip0.t-ipconnect.de. [2003:e0:b706:a400:84a4:13bf:f81e:d894]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b7e50e30asm181517605e9.24.2025.09.01.21.48.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 21:48:51 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: Stefan Monnier Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: References: Date: Tue, 02 Sep 2025 06:48:50 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: luangruo@yahoo.com, michael.albinus@gmx.de, 79353@debbugs.gnu.org, "J.D. Smith" 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.0 (-) Stefan Monnier writes: >>> FWIW it sounds like a problem I've seen before in other circumstances >>> where I just added a `(require 'cl-extra)`, e.g.: >>> >>> lisp/emacs-lisp/comp-cstr.el:(require 'cl-extra) ;HACK: For >>> `cl-find-class' when `cl-loaddefs' is missing. >> >> Interesting. `tramp.el' could probably just (require 'cl-extra) to fix >> this. I guess this is a new use of this cl-extra macro somewhere, which >> wasn't caught in testing. > > I wouldn't call it "new use". It's probably just a use that can now > occur a bit earlier (before `cl-loaddefs.el` is built). > > See also comment in cl-lib.el: > > (unless (load "cl-loaddefs" 'noerror 'quiet) > ;; When bootstrapping, cl-loaddefs hasn't been built yet! > (require 'cl-macs) > (require 'cl-seq) > ;; FIXME: Arguably we should also load `cl-extra', except that this > ;; currently causes more bootstrap troubles, and `cl-extra' is > ;; rarely used, so instead we explicitly (require 'cl-extra) at > ;; those rare places where we do need it. > ) > > > - Stefan Not sure if that's relevant, don't know what this is all about anyway. When I 1 file changed, 1 insertion(+) lisp/emacs-lisp/loaddefs-gen.el | 1 + modified lisp/emacs-lisp/loaddefs-gen.el @@ -42,6 +42,7 @@ (require 'radix-tree) (require 'lisp-mnt) (require 'generate-lisp-file) +(require 'cl-extra) (defvar autoload-compute-prefixes t "If non-nil, autoload will add code to register the prefixes used in a file. , just to see what happens, I get GEN autoloads INFO Scraping 1520 files for loaddefs... INFO Scraping 1520 files for loaddefs...10% INFO Scraping 1520 files for loaddefs...20% INFO Scraping 1520 files for loaddefs...30% INFO Scraping 1520 files for loaddefs...40% INFO Scraping 1520 files for loaddefs...50% INFO Scraping 1520 files for loaddefs...60% INFO Scraping 1520 files for loaddefs...70% loaddefs-gen: loading file tramp-adb (for tramp--with-startup) Loading /Users/gerd/emacs/github/master/lisp/net/tramp-adb.el (source)... Warning (emacs): loaddefs-gen: load error (invalid-read-syntax \N{COLON} 182 16) which I think indicates that char-from-name doesn't work at that point in the build process (tramp-compat.el has such character constants). From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 02 09:51:08 2025 Received: (at 79353) by debbugs.gnu.org; 2 Sep 2025 13:51:08 +0000 Received: from localhost ([127.0.0.1]:33803 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utRPg-0004tm-8V for submit@debbugs.gnu.org; Tue, 02 Sep 2025 09:51:08 -0400 Received: from mail-yw1-x1129.google.com ([2607:f8b0:4864:20::1129]:58432) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utRPc-0004t2-Nh for 79353@debbugs.gnu.org; Tue, 02 Sep 2025 09:51:05 -0400 Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-71d60110772so44259377b3.0 for <79353@debbugs.gnu.org>; Tue, 02 Sep 2025 06:51:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756821058; x=1757425858; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=ncBkWrWoQ6CdarX2ayvv9B2987X3HpCyiQsURJLPXmQ=; b=UtLQ0uQ2jDUA3aVqMR8jAmsN6C8bOmXOfraRCR+yxLBlwH1Wl5jU7XiYc3cCnCZHRf wUKzW61W64ftsFExubklZpVDIYgNQTNny3AJqob/+tlRNM8D//veoWPIGk69DANDP5i1 EFD1ZQz5m9C9Rh5Fhbbz6XD2+pPoR1x/Ddd9MA+7RIBSs2zM6LeSsxDYYcVV7TTBBHxF +EyVMdu0xU31SNLwh3lFnj541OOIwMHvPSjPB+XIHv6uVU0wy0SDzRGx0ZFDKsfMlU0u QEHN3PUoSQliUkCw+y1fRSZkOd5F/MdRhMYG8c2X0mmQoOKsWV2XTSvmYcfBnAB960TW w/Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756821058; x=1757425858; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ncBkWrWoQ6CdarX2ayvv9B2987X3HpCyiQsURJLPXmQ=; b=D1+ifMonJnunTNe4wnDZrUASz8hW05d2LtLkIT6QLlHVtGUh/9fJ30M4+KS/79dxSS 1rFLnFornUnMDosi3gKMCtTqvor6J41wRc/IC5a2VLp3NxLgv6TBdb8LBnEy810B4ube FXvnVfH8EV+E8hL8v7zJohiI9VW+NY/2NChTUjvSOcZGJqkM67vL4uU38vZIlkKMbnns myqvLW/VlsPD13TQRxNqjLtdjvq4UpWX2jCWDIkEJ5QmTnFNWk+LnZ2/clgDgU+ifb4/ IlFfrgY5qQwV/ruP8YyLtx7HLCzQqrhBmR1TLIs2oxBKzC+B6713E7EWEixF/rVKQuFm q9YA== X-Forwarded-Encrypted: i=1; AJvYcCV3oPCmNmx9Hw9AWu8e4RMq9XYQReNJl60kqcYAzqQr+YZOg7cAGwQRyrcd8MjfurMd6O8dtQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YybgBbxQ+JeL2VCtwWMBZzPhDIXI38RQYJYu3kaMwwIzEnErs73 ee4IOYBKdZkkYz3m/66/pNEIA+Xk+2aYHBaqfks3/LwbuflSpJpNfhC3 X-Gm-Gg: ASbGncsFq1MiFDCgRwMpvCgvaYkphm29QkG4TvplZ0u8CotYTmgkG3D9fg1SJLpUFJx 7C0G3TlUSZGBwCl5OPhXeMyQMWzMwMQnV0quGBzHCXClZEz2Lx3gqE9lTHcMUSNhIN1fYC0txWv plGxZqKCukgU6dakNWwmw2rz/QkUGPGDmi7URZAP8g0XbNSoIChppxz+e6YRIK2tRkdLYrGIeOa lojZvFH2mb3IMvwnOe6yRJ0rQWu112YjIw9SWZXNiEaPUvGSDJL+Z6WlIkAsK10Xd0OoaZhlQoK rc8RBGRHdVhnbthGCUw3cmOmV+RliZGRwIhy6kG0YxIT/yZ5H+S+ONibbkhbCaPwlPqbyB7vod9 zNV0onzwaQAqYsI97C8OjTtHRyNZylb/QIn2uDmAYAETg0wqC X-Google-Smtp-Source: AGHT+IE9qJoKwjMjJWGm6NrFDbHETfk5SNOvFU2PG3XiiwdhnIp7eFByx1v18/2EhtM2upyrDoosXA== X-Received: by 2002:a05:690c:6809:b0:71f:e430:6671 with SMTP id 00721157ae682-72276406fd1mr146277877b3.22.1756821058086; Tue, 02 Sep 2025 06:50:58 -0700 (PDT) Received: from smtpclient.apple ([131.183.131.33]) by smtp.gmail.com with ESMTPSA id 00721157ae682-723a85a0cd9sm5248057b3.69.2025.09.02.06.50.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Sep 2025 06:50:57 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master From: JD Smith In-Reply-To: Date: Tue, 2 Sep 2025 09:50:46 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: References: To: =?utf-8?Q?Gerd_M=C3=B6llmann?= , Po Lu X-Mailer: Apple Mail (2.3826.700.81) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: 79353@debbugs.gnu.org, michael.albinus@gmx.de, monnier@iro.umontreal.ca 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.0 (-) > On Aug 31, 2025, at 1:55=E2=80=AFPM, Gerd M=C3=B6llmann = wrote: >=20 > "J.D. Smith" writes: >=20 >> Gerd M=C3=B6llmann writes: >>=20 >>> "J.D. Smith" writes: >>>=20 >>>> *Question*: >>>>=20 >>>> In the lisp/net/tramp-loaddefs.el file which was generated during = this >>>> build, what do you see under: >>>>=20 >>>> ;;; Generated autoloads from tramp-adb.el >>>=20 >>> This is the tramp-loaddefs.el after building from git clean -xdf >>>=20 >>>=20 >>>=20 >>>> Can you try a build again with `make bootstrap' and see whether the >>>> warning disappears and if that section of = lisp/net/tramp-loaddefs.el >>>> changes? My guess is this is a harmless warning. >>>=20 >>> The errors are the same, and here's tramp-loaddefs.el after = bootstrap >>=20 >> Thanks for checking. These files are identical, and the error is >> preventing tramp--with-startup from getting defined during autoload >> generation, so autoloaded calls to it just get inlined as-is in >> tramp-loaddefs.el. If it were working as intended, most of those = would >> be replaced by `add-hook'. >>=20 >> Gerd, do you mind reverting e9800cabffa and seeing what if anything >> changes (from a clean start)? Probably nothing. >=20 > Sure. Reverting >=20 > e9800cabffa73018a83108de2bb4e1686f1e8385 > Author: Po Lu > AuthorDate: Thu Aug 14 19:33:09 2025 +0800 > Commit: Po Lu > CommitDate: Thu Aug 14 19:34:28 2025 +0800 >=20 > Parent: 02f5a075dc2 vc-hg-checkin-patch: Fix several issues > Merged: consult-problem > Contained: cl-packages emacs-mac-master feature/igc master > Follows: emacs-30.1 (178644) >=20 > Fix generation of defvars defined by easy-mmode and company in = loaddefs.el >=20 > changes nothing.=20 Thanks, Gerd. Po, can you confirm this and, if the same, revert your = e9800cabffa commit?= From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 02 09:52:10 2025 Received: (at 79353) by debbugs.gnu.org; 2 Sep 2025 13:52:10 +0000 Received: from localhost ([127.0.0.1]:33811 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utRQf-0004xh-Nw for submit@debbugs.gnu.org; Tue, 02 Sep 2025 09:52:10 -0400 Received: from mail-yw1-x1135.google.com ([2607:f8b0:4864:20::1135]:54582) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utRQa-0004wq-3K for 79353@debbugs.gnu.org; Tue, 02 Sep 2025 09:52:05 -0400 Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-71d603a269cso44668197b3.1 for <79353@debbugs.gnu.org>; Tue, 02 Sep 2025 06:52:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756821118; x=1757425918; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=vjK0cjmiRdNJZkfbAX5agtbhPMZGjs+iPE/lLv+jyPg=; b=BobB+ETuFAibeJKd9/w4zlEIcY5jjyzEjtYsM+/YU7Y7lNDoWHdgKdFy8tijMmt/QH Yq9Y7e4oI9kic1kdDORu4iC1l7C6alBWp0wxqSXg6U/Toa38gHqjIo2kni6KCFa/a6TL RjGyCyPXPDo52I0eEp1E7/so8rk7mazrwCa4M8x/8ZMpmmhrlrDBF5vQz9V8R7GJC7Gh GOPn6BwmGV0BVuCA50Ed0OGLfzMBYkvbhW23QaQghu9VyCNDjUigDIx9nS8o+Jb1I7Go C7y1jFpJ9jWlyGM9BLCDBhrTTObpmr3LRPlwug4/t7TR8MVth7S6qbtj/Con+AAiRvlm ZCpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756821118; x=1757425918; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vjK0cjmiRdNJZkfbAX5agtbhPMZGjs+iPE/lLv+jyPg=; b=IUMufiR746gCheqdX4zegnhVaktN3kf9Z3ZwQFBKka0xZ4JzOzTEvbeeQ71Z6H/LgG kINY4Ay2XLs8pu2qRX6VH6DNvzpFWiUR82Ge5LCg10D0ySlNufH+LRrRiD5ojHRrm/1+ SgHKtmwF4/T7FLFScQIpTsiU9oBiONHjw4lk34BX+T4g326ufPMFCGv4EyVnyHmvSy81 YxmkDJ0hmz3kwPcBBqBoVZZLghpNjx3ZpZw6D5FEZq7mTPZFivT3BIvkYHUI05UgRwt/ P7gYXUCnkNjhXqQfreqwjLLFsGW56rxieiROp4MMdt7UPYxMHHozRtrJDS9K6PPNFQqy tWtQ== X-Forwarded-Encrypted: i=1; AJvYcCVl42JbDwHRo2V7fMyr+MzNX3Eynva0bzQMqV6o3ej5DcNoqraziJ4VyNFHLPFQ1gjq28MrCQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yyfzf0CyMnkF4Pb8stNH4iLfSlUaD7qr7asPAs8MxSXmwfurMZR XeBt3z8rvIIiD4hMDJ9SacQQDBtSnT++cVyNcht02mS1o4HYkp0JVbte X-Gm-Gg: ASbGncvDv5Sr0s2ZlM6myJPvFMl4BHapJTZIeq0xd+S5cQGFmchIxX7nkAu+EByvFMn ZVq6ynZn6tFsOkfEFO7jxQrlr+SxVfwiwdRZho6Xd/8ar69380AmvYkEDWgnPk3BLITUHwBGb4u frkmYFe8o4KTS/N8mVsjAQKjmjIF8oqSGWFmjQbmSacqu3lHqBXIjFhwkT2dMnyzkMTJlnQHRa5 AmmLBZxTjZuKRJPcJaqAdWG9DeSIfiPereKZOhS51zTrofoEe93ZA5XkhAoqI+VW8LsQib0TmqA iRZlyD43PI+ZnPlFKNRGO7x6VKD1hc7zuFHBAjkcjGoiCjY0GQjDl4NoZJEqtbFLeYD3tg1cIMX i2zPq2gO4TZFnf2EhWaz4jqdbZNNXKrTXyPrkAvYChU2VG8B4H1jVf+VWrQQ= X-Google-Smtp-Source: AGHT+IG4zLV50Kw4BAPrYSyFiYGsFNv/E9CtTj/cruev5UYrkEQpsETnU3lfc9qtFsx9Mf03O9sB7g== X-Received: by 2002:a05:690c:60c4:b0:71f:c5f0:339c with SMTP id 00721157ae682-72276514bb6mr121907937b3.43.1756821117851; Tue, 02 Sep 2025 06:51:57 -0700 (PDT) Received: from smtpclient.apple ([131.183.131.33]) by smtp.gmail.com with ESMTPSA id 00721157ae682-723a85a0cd9sm5248057b3.69.2025.09.02.06.51.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Sep 2025 06:51:57 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master From: JD Smith In-Reply-To: Date: Tue, 2 Sep 2025 09:51:47 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> References: To: =?utf-8?Q?Gerd_M=C3=B6llmann?= X-Mailer: Apple Mail (2.3826.700.81) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Po Lu , michael.albinus@gmx.de, 79353@debbugs.gnu.org, Stefan Monnier 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.0 (-) > On Sep 2, 2025, at 12:48=E2=80=AFAM, Gerd M=C3=B6llmann = wrote: >=20 > Stefan Monnier writes: >=20 >>>> FWIW it sounds like a problem I've seen before in other = circumstances >>>> where I just added a `(require 'cl-extra)`, e.g.: >>>>=20 >>>> lisp/emacs-lisp/comp-cstr.el:(require 'cl-extra) ;HACK: For >>>> `cl-find-class' when `cl-loaddefs' is missing. >>>=20 >>> Interesting. `tramp.el' could probably just (require 'cl-extra) to = fix >>> this. I guess this is a new use of this cl-extra macro somewhere, = which >>> wasn't caught in testing. >>=20 >> I wouldn't call it "new use". It's probably just a use that can now >> occur a bit earlier (before `cl-loaddefs.el` is built). >>=20 >> See also comment in cl-lib.el: >>=20 >> (unless (load "cl-loaddefs" 'noerror 'quiet) >> ;; When bootstrapping, cl-loaddefs hasn't been built yet! >> (require 'cl-macs) >> (require 'cl-seq) >> ;; FIXME: Arguably we should also load `cl-extra', except that = this >> ;; currently causes more bootstrap troubles, and `cl-extra' is >> ;; rarely used, so instead we explicitly (require 'cl-extra) at >> ;; those rare places where we do need it. >> ) >>=20 >>=20 >> - Stefan >=20 > Not sure if that's relevant, don't know what this is all about anyway. I think the idea is to require 'cl-extra in tramp.el, after 'cl-lib. = The issue is we are loading tramp during the build of *-loaddefs.el = files, and yet tramp is currently relying (indirectly) on the autoload = of cl-subseq from cl-extra.=20 From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 02 10:01:24 2025 Received: (at 79353) by debbugs.gnu.org; 2 Sep 2025 14:01:24 +0000 Received: from localhost ([127.0.0.1]:34931 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utRZb-00067l-Bt for submit@debbugs.gnu.org; Tue, 02 Sep 2025 10:01:24 -0400 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]:43081) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utRZU-000666-MP for 79353@debbugs.gnu.org; Tue, 02 Sep 2025 10:01:17 -0400 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-aff0775410eso556220466b.0 for <79353@debbugs.gnu.org>; Tue, 02 Sep 2025 07:01:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756821669; x=1757426469; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=2ZGNn03yj3KCkTKLrXqwXhb7C8GKbCEiSLIK0By+Hes=; b=agU6dWYamgIhJQfyxJATu2+xXSteAvX5L2sCNkkTzc5k3/x2y4tExtM6yuwKD9BLWK zrnRWQPv2DQay7+JG9zZ7JtJ+YwWTu/IZ0+gY0DTlLaJuY+KtREekgDDXRjuqfTgg27l b4xEriN4ziiaCYADOywD/tLPPGQN6fcSFgj/i8cmH/ilpzoHfWU2DcukayV2scH5vIVx rvMIptbMLXCHXroTgXaHBHZUuQU3Etcb6HUI6wcVV5wi/wEAZ475Zf/SU4AznVAYqwHZ QPWeG7erAAp+jj/BYy3yrfDLQ75vmw9DKwhDULi9+1ND7j4FAOl0zGWplR/NXUxilD0l IR0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756821669; x=1757426469; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2ZGNn03yj3KCkTKLrXqwXhb7C8GKbCEiSLIK0By+Hes=; b=IHgTyZNcp7eEBeMUW7NwRmqVda3ouJEOVYtNEXwGmyoNhTaV2XS6w4j/i2jIkkTyBF 4yVliYuByn0Yr86NfGdcNQKA4zvQO9zxWYowjSn22i0lZ/bpzDIbkn2rLp7lf651G49g GAXnsq85CkScB3g2CFQRdKJYmaC+iXWphwxBRoVhyoNXLWzAYFKU6XbgQFZgfFMWQu4i X5+M8m1kfohlRzcGelz4nczsTD4cXQjX8laSRgNAiQLNdNoASli58F8wNrdzM5EM4pYn 3DCJPwTHb6G9UBNV2813dUqt83Be3xBoGcivHuE/l0fIANyxU7rMYbO3elJRB1sfXVMa EJtg== X-Forwarded-Encrypted: i=1; AJvYcCXQEMzZg/LWpiZW/Xyrl65VzgGB67nDOHsP8JUNM0KU6zEhcKemMwtS6Zs3YiMBbMV5YvID0Q==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwMyc0vQXMg0+5yTOAPXHxb3lIxyvjVsGexmWEbdh8FPHUGOUXB xGdIKwvbf8RMxvIwztMgCEZd6QzZGzoE/gx7L9KhTCE51B8LelBAE3St X-Gm-Gg: ASbGncuMm5DspoLKQ/ezNneQQpl4L3ltpjgVPqTlzGKA97Wc1ynJUdmxnkrl+TKCjFj AAZLuMHRQNUd1z4/g3bcps9VUzKNMx+pky4jL005/jzhR22YVPw60Zn+VRvyQCTDY5s7DOkI3/o 3aw9Xo7w5Lxj1gXsTZeVpJw90lSSiOqMJGHvN6LdXCZPtoTF+7NusWhCr5lxh5IjcMDlYv6fxL5 aivDDWJ+Fqi52UkkccHuZOIirde/8+RbR4Y3KwoJKhMoYfRJKG8sxKfKB0raCmODdHCxW+wmRsB b/63GECLXCNatuNfMfnBBntcj1yUjLycZ8bLabA7PUYOY7mgXyEoMgT+J1BG1Mx6mTUMFReWWFu ZDY24iIObrBp3UjfLbbknq1lz8XSGQiDrRs5NOX8B095gxQlZ1jF70A++rWhuDg27n48zC2Pg1w kbJzg/gjKDYHFNlF0TRLXw6pUpmIJ9uEBw4KepLL9Fkw== X-Google-Smtp-Source: AGHT+IEIf0NSx+dGXLu9xvNMS4VkOCxBNFlZU9KkHQpY2qY/NcvSzMZxTo/2ZN35l2onNKlQhS4zCw== X-Received: by 2002:a17:907:7f14:b0:b04:45d8:4738 with SMTP id a640c23a62f3a-b0445d84d28mr438891066b.8.1756821667633; Tue, 02 Sep 2025 07:01:07 -0700 (PDT) Received: from pro2 (p200300e0b706a40084a413bff81ed894.dip0.t-ipconnect.de. [2003:e0:b706:a400:84a4:13bf:f81e:d894]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b04190700a4sm659450766b.63.2025.09.02.07.01.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Sep 2025 07:01:07 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: JD Smith Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> Date: Tue, 02 Sep 2025 16:01:05 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Po Lu , michael.albinus@gmx.de, 79353@debbugs.gnu.org, Stefan Monnier 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.0 (-) JD Smith writes: >> Not sure if that's relevant, don't know what this is all about anyway. > > I think the idea is to require 'cl-extra in tramp.el, after 'cl-lib. > The issue is we are loading tramp during the build of *-loaddefs.el > files, and yet tramp is currently relying (indirectly) on the autoload > of cl-subseq from cl-extra. I meant more what your original change was for. Anyway, with this change 1 file changed, 2 insertions(+) lisp/net/tramp.el | 2 ++ modified lisp/net/tramp.el @@ -67,6 +67,8 @@ (require 'tramp-message) (require 'tramp-integration) (require 'trampver) +(require 'cl-lib) +(require 'cl-extra) ;; Pacify byte-compiler. (require 'cl-lib) I get the same errors loaddefs-gen: loading file tramp-adb (for tramp--with-startup) Loading /Users/gerd/emacs/github/master/lisp/net/tramp-adb.el (source)... Warning (emacs): loaddefs-gen: load error (error Eager macro-expansion failure: (error "Eager macro-expansion failure: (void-function cl-subseq)")) From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 02 10:08:54 2025 Received: (at 79353) by debbugs.gnu.org; 2 Sep 2025 14:08:54 +0000 Received: from localhost ([127.0.0.1]:35008 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utRgs-0006yh-6r for submit@debbugs.gnu.org; Tue, 02 Sep 2025 10:08:54 -0400 Received: from mail-yw1-x1133.google.com ([2607:f8b0:4864:20::1133]:46442) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utRgn-0006xM-0w for 79353@debbugs.gnu.org; Tue, 02 Sep 2025 10:08:50 -0400 Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-723ad237d1eso4964777b3.1 for <79353@debbugs.gnu.org>; Tue, 02 Sep 2025 07:08:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756822122; x=1757426922; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=oMyhxOwEamNl6OLvWGMxe9EBxyKElB8WsLwqqs7JDgQ=; b=JjU4p0KjcfzvpqP7hYNJZPb/NoFu09Ngw6Rw4RXMOmFLvV2ti2/cGE23QjNadQF4uN jG9LdnwzI/gwMVCQZTuONacj381ZIA5yFoQzgt2UOs3z11y0Z/c80X4ZGj94xcgKo3g6 MxvHcOq3bGNtC3Z2DwrK7ieHux2sm8VRPpvdmIcwAUG12sLjtL/SIDSK+ItSb3iTfwiw kTciAtUR7rqRWuhe7N6gHyMKnxcDOE80Tb94jUN9FY5yEXz/4/nkENDsf6I47Fd9en5B pKpnJRpPl9cZb7rq0bFz/WlnWNr+tEATawepyxSxS5Juo5kLV2dLyNZt90lwuschGAFz Cd1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756822122; x=1757426922; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oMyhxOwEamNl6OLvWGMxe9EBxyKElB8WsLwqqs7JDgQ=; b=db2WmzhASJJsDfyKCkx4+U2klnDDnR1ghQ2lA6acAm66sbhPWf0MiDnhdRCB7aUpMl GFG5DUlw+xeMmxST39L8wWWxB3H7DjG0adihlOZ5kL47f3b9dfHoxL2nCZSB+bt9qHpx HFVxnvAEOA1oCvUxw9VJGCqFG0mxpp+vAPHWBdagxjiHmN+a3MOOVqLN4ZkPcsfv8WZo MyHiU+ZocWZg09dHSV14ERW8TtQ1vvKLSz+gAg7lYWIa3aQRODSf/15ylHMIbXMPqB48 l3SoU8CiIWBB1UPbmPyNgUuVP2k3go9w6GUAce9z4l9hK6Y5la03bZ1iZC/EBOl5Ei3b agBA== X-Forwarded-Encrypted: i=1; AJvYcCXVebgtsJM/MhFTkUIiiGs4qLWQ7wIRj4nRqWQXKOebEaYAVnqWYjsfSM2rv51QWzWBSodOGg==@debbugs.gnu.org X-Gm-Message-State: AOJu0Ywjf9qh7uJiN/mALLQ1X3g8FAhHL1xVYI5MO7qzY2ahxK+1tqp7 uIdKrlHl8awL/Co48XC4QfsC4xgxjwX9Ah/D8R0vZDgkQaii5nrFVZb7 X-Gm-Gg: ASbGnct75+t6ge2x57P4tNj1MNgqcEs9N9M/LIhB1jIx5ojWJq2TJAOVJGNc2kwuDaQ og9klmJ+4L3C6I3yHV/2wCYDTKBAHJ7MRbdNOMljY4dMmDeRDGPvtJCNZRS0zetHhsuVQjzQmrI R9QghCtike9j6pEpXZpX121QBlzF2dv5vMhjQHF+PYeAr8IGw5vBPmAJ3/Qr5crC9iMECk4Rwis cDuPmW3hW5Lx/DAaYyBqO79OkLQ7Lhqo1G3YYWGsPDpSs7jdjUjG4HoNZUO3LM099QcR7tvaFJe Kv6jR7Q21dFNmpxpdINejleKQpIJahTL0nUfkKKEWjdMVeLlCX2z5/bPiDEF2qOJGUGPK6BdCRX XOqoD1wTPSMmtopCjg6uPa1vP+2QJAivfHQZL8w== X-Google-Smtp-Source: AGHT+IHxLWO5urfBms9cRSjrhd5FP3WmRMzD/0cY3KbVwRmBW3yLAiK9/+qf9lHBneyhFEEyVOBKBQ== X-Received: by 2002:a05:690c:dcd:b0:71f:cc8a:88be with SMTP id 00721157ae682-72276335258mr167182577b3.10.1756822120534; Tue, 02 Sep 2025 07:08:40 -0700 (PDT) Received: from smtpclient.apple ([131.183.131.33]) by smtp.gmail.com with ESMTPSA id 00721157ae682-723a82d6ac6sm5357867b3.13.2025.09.02.07.08.39 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Sep 2025 07:08:40 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master From: JD Smith In-Reply-To: Date: Tue, 2 Sep 2025 10:08:29 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> To: =?utf-8?Q?Gerd_M=C3=B6llmann?= X-Mailer: Apple Mail (2.3826.700.81) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Po Lu , michael.albinus@gmx.de, 79353@debbugs.gnu.org, Stefan Monnier 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.0 (-) > On Sep 2, 2025, at 10:01=E2=80=AFAM, Gerd M=C3=B6llmann = wrote: >=20 > JD Smith writes: >=20 >>> Not sure if that's relevant, don't know what this is all about = anyway. >>=20 >> I think the idea is to require 'cl-extra in tramp.el, after 'cl-lib. >> The issue is we are loading tramp during the build of *-loaddefs.el >> files, and yet tramp is currently relying (indirectly) on the = autoload >> of cl-subseq from cl-extra. >=20 > I meant more what your original change was for. Anyway, with this > change >=20 > 1 file changed, 2 insertions(+) > lisp/net/tramp.el | 2 ++ >=20 > modified lisp/net/tramp.el > @@ -67,6 +67,8 @@ > (require 'tramp-message) > (require 'tramp-integration) > (require 'trampver) > +(require 'cl-lib) > +(require 'cl-extra) >=20 > ;; Pacify byte-compiler. > (require 'cl-lib) >=20 > I get the same errors >=20 > loaddefs-gen: loading file tramp-adb (for tramp--with-startup) > Loading /Users/gerd/emacs/github/master/lisp/net/tramp-adb.el = (source)... > Warning (emacs): loaddefs-gen: load error > (error Eager macro-expansion failure: (error "Eager macro-expansion = failure: (void-function cl-subseq)")) I guess I don't understand where this is coming from then. What if you = take out the condition-case and let it generate a backtrace? modified lisp/emacs-lisp/loaddefs-gen.el @@ -235,10 +235,7 @@ loaddefs-generate--make-autoload (member file loaddefs--load-error-files)) (let ((load-path (cons (file-name-directory file) = load-path))) (message "loaddefs-gen: loading file %s (for %s)" file car) - (condition-case e (load file) - (error - (push file loaddefs--load-error-files) ; do not attempt = again - (warn "loaddefs-gen: load error\n\t%s" e))))) + (load file))) (and (macrop car) (eq 'expand (function-get car 'autoload-macro)) (setq expand (let ((load-true-file-name file) From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 02 10:23:35 2025 Received: (at 79353) by debbugs.gnu.org; 2 Sep 2025 14:23:35 +0000 Received: from localhost ([127.0.0.1]:35182 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utRv5-00009r-Nw for submit@debbugs.gnu.org; Tue, 02 Sep 2025 10:23:35 -0400 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]:47204) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utRv0-00008B-R4 for 79353@debbugs.gnu.org; Tue, 02 Sep 2025 10:23:31 -0400 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-b042cc3953cso268073266b.2 for <79353@debbugs.gnu.org>; Tue, 02 Sep 2025 07:23:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756823002; x=1757427802; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=iagm3WXs2cl9E1r1qVMGusghMmvOL7Fk6FkHAZFRpiQ=; b=VgxSa8lqXVaM4mN19uyrh/ybbhuWSlwtiSv2q8UzKN6h+ZY4qBSyxl6fRLRfZeMho1 4WFY3wBjtUmA/8ZxnwkvG12XwKGvwXFgbOLUD8A5DkP86D6MFDj/4phXtXZjuDp+lej/ oKbDOVAMDWTD8DYgH7pJLeULJZIcBX2bd4NTbbCLwvHLbhkT5IST1H/hwPYJvDUEQRHt bSKYVSQxG/OWJe0FsMUgFOcpgy+JRmqwjt2ua1TU/uC/7rBfAiuSM7XW0YBP890G2HRC gjj9+i/eJksQTsS/zVu6t6xRIAkqCvGSIoHH4NXxI/Oq/iirR571K0Fml15SnOhvLV3f ZfPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756823002; x=1757427802; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=iagm3WXs2cl9E1r1qVMGusghMmvOL7Fk6FkHAZFRpiQ=; b=auIt9CCRM/dSfVinWn2qVAOk+9LxIBDdTTde17yU1guJxSRgVdcxLEPybE/snIj7Xy Tn2v6CuXjLKz1VuR6g+Y1TEjM7WQDzPXMQtjHcND8phNE/41GjDSmmo685EbQUl/IBUg lHy9dqnhH+qoujFScD9ZMqLBdmGv7e09g3naCA1y+hjlD+dZt5OrYfhHZCbMNwGgPi1V 84p4Y4FVc4+/BL83wjXYdlkjq8eubAbpmVJZRHkB2uvhoXGjjVUVi3J3aNR8YBm7eTzV cb71AC3Ro010jtwovETNBGZg1XhNAf/ZO6EZ8p4pAPXjqGzoMoasIMinEfo/c8lhxL7n Mu3w== X-Forwarded-Encrypted: i=1; AJvYcCWRN/e66BPl8FJdfYM+jzVIazTulJge7QrIkpuwaT5zxN0mnrimAqf6SaxUiuCab3kUtrTQaw==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yz59sGgiHOzHRhcSY0eIEL9pSyaBRnVvHrYh3AhpkjqdB8cWq/h UX516x7Ahgf00VyltHPDW1gGTI99IZlfI9nmDmje8czx6P/Vdt32Br0l X-Gm-Gg: ASbGncuF/the7LVuIsBGRGKAkcUiQhSh/hmgrngtGrvHqM+3a13NVjqaBpgHo2yk3KH vrkg8WPJxD4E342d+p3UE/mZTK2C5cfu01OEyImEr+jwdKE2nY4X8mtrFJCSeuZRo3RmJUiDSvn u9bxcs0RNF3isfKXXMXISvgrTmQqqdK7UsV1FBd5ZtevPCvQ0vgcJkCzvSQDs8BsswrDbH7HUJs Zs9aPAeJ7AbKW5Aknhx227pMmHoZDJpR5Vm2CWLSMNHTs8ZSuNIhLiB9FIejwYCqcKRloHor1iL NtCWbfaL3FtRMvtiyX2ck5CocSJqW03Wjp25PsBB1serb/sVIV2yW2X1yg+KmQHu2iEvsCY4ZH5 b4/IpDPze7FX5HnSsjzBWLA8kcbrs6DBcCG4JXP9uxhx8KR70rWuLado94gJTLEzSeXwqQGCVc7 UD1sd+rGFZupaUVGhm5duGEnZytTeMI4s= X-Google-Smtp-Source: AGHT+IEcbypm7Vdojh2QMzPzys79RnirvPLtnZEqchQxOKdx+ubPqYH1vmPrFb/l2HyJU6VahQ4yvQ== X-Received: by 2002:a17:907:e916:b0:afe:ae6c:411c with SMTP id a640c23a62f3a-b01f2113c64mr1091761866b.64.1756823000496; Tue, 02 Sep 2025 07:23:20 -0700 (PDT) Received: from pro2 (p200300e0b706a40084a413bff81ed894.dip0.t-ipconnect.de. [2003:e0:b706:a400:84a4:13bf:f81e:d894]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b04093c9161sm791772166b.54.2025.09.02.07.23.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Sep 2025 07:23:19 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: JD Smith Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> Date: Tue, 02 Sep 2025 16:23:18 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Debbugs-Envelope-To: 79353 Cc: Po Lu , michael.albinus@gmx.de, 79353@debbugs.gnu.org, Stefan Monnier 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" --=-=-= Content-Type: text/plain JD Smith writes: > I guess I don't understand where this is coming from then. What if you take out the condition-case and let it generate a backtrace? With 1 file changed, 2 insertions(+), 2 deletions(-) lisp/emacs-lisp/loaddefs-gen.el | 4 ++-- modified lisp/emacs-lisp/loaddefs-gen.el @@ -235,8 +235,8 @@ loaddefs-generate--make-autoload (member file loaddefs--load-error-files)) (let ((load-path (cons (file-name-directory file) load-path))) (message "loaddefs-gen: loading file %s (for %s)" file car) - (condition-case e (load file) - (error + (prog1 (load file) + '(error (push file loaddefs--load-error-files) ; do not attempt again (warn "loaddefs-gen: load error\n\t%s" e))))) (and (macrop car) I get the attached compilation log, with a backtrace --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=compilation.log Content-Transfer-Encoding: base64 LSotIG1vZGU6IGNvbXBpbGF0aW9uOyBkZWZhdWx0LWRpcmVjdG9yeTogIn4vZW1hY3MvZ2l0aHVi L21hc3Rlci8iIC0qLQpDb21waWxhdGlvbiBzdGFydGVkIGF0IFR1ZSBTZXAgIDIgMTY6MTg6NDAK Cm1ha2UtZW1hY3MgLS1ucyAKQ2hlY2tpbmcgd2hldGhlciB5b3UgaGF2ZSB0aGUgbmVjZXNzYXJ5 IHRvb2xzLi4uCihSZWFkIElOU1RBTEwuUkVQTyBmb3IgbW9yZSBkZXRhaWxzIG9uIGJ1aWxkaW5n IEVtYWNzKQpDaGVja2luZyBmb3IgYXV0b2NvbmYgKG5lZWQgYXQgbGVhc3QgdmVyc2lvbiAyLjY1 KSAuLi4gb2sKWW91ciBzeXN0ZW0gaGFzIHRoZSByZXF1aXJlZCB0b29scy4KQnVpbGRpbmcgYWNs b2NhbC5tNCAuLi4KUnVubmluZyAnYXV0b3JlY29uZiAtZmkgLUkgbTQnIC4uLgpCdWlsZGluZyAn YWNsb2NhbC5tNCcgaW4gZXhlYyAuLi4KUnVubmluZyAnYXV0b3JlY29uZiAtZmknIGluIGV4ZWMg Li4uCllvdSBjYW4gbm93IHJ1biAnLi9jb25maWd1cmUnLgpjb25maWd1cmU6IGxvYWRpbmcgY2Fj aGUgL3Zhci9mb2xkZXJzLzFkL2tfNnQyNWY5NHNsODNzenFiZjhncGtyaDAwMDBnbi9ULy9jb25m aWcuY2FjaGUubWFzdGVyCmNoZWNraW5nIGZvciB4Y3J1bi4uLiAoY2FjaGVkKSB4Y3J1bgpjaGVj a2luZyBmb3IgbWFrZS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIEdOVSBNYWtlLi4uIChj YWNoZWQpIGdtYWtlCmNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uIChjYWNoZWQpIGFhcmNo NjQtYXBwbGUtZGFyd2luMjQuNi4wCmNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUuLi4gKGNhY2hl ZCkgYWFyY2g2NC1hcHBsZS1kYXJ3aW4yNC42LjAKY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21w aWxlciB3b3Jrcy4uLiB5ZXMKY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQg ZmlsZSBuYW1lLi4uIGEub3V0CmNoZWNraW5nIGZvciBzdWZmaXggb2YgZXhlY3V0YWJsZXMuLi4g CmNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZy4uLiBubwpjaGVja2luZyBm b3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcy4uLiAoY2FjaGVkKSBvCmNoZWNraW5nIHdoZXRoZXIg dGhlIGNvbXBpbGVyIHN1cHBvcnRzIEdOVSBDLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0 aGVyIGNsYW5nIGFjY2VwdHMgLWcuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBjbGFuZyBv cHRpb24gdG8gZW5hYmxlIEMxMSBmZWF0dXJlcy4uLiAoY2FjaGVkKSBub25lIG5lZWRlZApjaGVj a2luZyB3aGV0aGVyIHRoZSBjb21waWxlciBpcyBjbGFuZy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tp bmcgZm9yIGNvbXBpbGVyIG9wdGlvbiBuZWVkZWQgd2hlbiBjaGVja2luZyBmb3IgZGVjbGFyYXRp b25zLi4uIChjYWNoZWQpIC1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24KY2hl Y2tpbmcgZm9yIGFyLi4uIChjYWNoZWQpIGFyCmNoZWNraW5nIHdoZXRoZXIgY2xhbmcgYW5kIGNj IHVuZGVyc3RhbmQgLWMgYW5kIC1vIHRvZ2V0aGVyLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBm b3Igc3RkaW8uaC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHN0ZGxpYi5oLi4uIChjYWNo ZWQpIHllcwpjaGVja2luZyBmb3Igc3RyaW5nLmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZv ciBpbnR0eXBlcy5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3RkaW50LmguLi4gKGNh Y2hlZCkgeWVzCmNoZWNraW5nIGZvciBzdHJpbmdzLmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5n IGZvciBzeXMvc3RhdC5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3lzL3R5cGVzLmgu Li4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciB1bmlzdGQuaC4uLiAoY2FjaGVkKSB5ZXMKY2hl Y2tpbmcgZm9yIHdjaGFyLmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBtaW5peC9jb25m aWcuaC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3IgbGludXgvZnMuaC4uLiAoY2FjaGVkKSBu bwpjaGVja2luZyBmb3IgbWFsbG9jLmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN5cy9z eXN0ZW1pbmZvLmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN5cy9zeXNpbmZvLmguLi4g KGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGNvZmYuaC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBm b3IgcHR5LmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN5cy9yZXNvdXJjZS5oLi4uIChj YWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3lzL3V0c25hbWUuaC4uLiAoY2FjaGVkKSB5ZXMKY2hl Y2tpbmcgZm9yIHB3ZC5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgdXRpbC5oLi4uIChj YWNoZWQpIHllcwpjaGVja2luZyBmb3Igc2FuaXRpemVyL2xzYW5faW50ZXJmYWNlLmguLi4gKGNh Y2hlZCkgeWVzCmNoZWNraW5nIGZvciBzYW5pdGl6ZXIvYXNhbl9pbnRlcmZhY2UuaC4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHNhbml0aXplci9jb21tb25faW50ZXJmYWNlX2RlZnMuaC4u LiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHN5cy9zb2NrZXQuaC4uLiAoY2FjaGVkKSB5ZXMK Y2hlY2tpbmcgZm9yIHN5cy9wYXJhbS5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgcHRo cmVhZC5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgbWFsbG9jL21hbGxvYy5oLi4uIChj YWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3lzL3VuLmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5n IGZvciB2Zm9yay5oLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBzdGRib29sLmguLi4gKGNh Y2hlZCkgeWVzCmNoZWNraW5nIGZvciB1dG1wLmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZv ciB1dG1weC5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgT1MuaC4uLiAoY2FjaGVkKSBu bwpjaGVja2luZyBmb3IgYnl0ZXN3YXAuaC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3IgZGly ZW50LmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBleGVjaW5mby5oLi4uIChjYWNoZWQp IHllcwpjaGVja2luZyBmb3IgbGludXgveGF0dHIuaC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBm b3Igc2VsaW51eC9zZWxpbnV4LmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN0ZGlvX2V4 dC5oLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBzeXMvdmZzLmguLi4gKGNhY2hlZCkgbm8K Y2hlY2tpbmcgZm9yIHN5cy9mc190eXBlcy5oLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBn ZXRvcHQuaC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHN5cy90aW1lLmguLi4gKGNhY2hl ZCkgeWVzCmNoZWNraW5nIGZvciBpZWVlNzU0LmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9y IGxpbWl0cy5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3lzL3NlbGVjdC5oLi4uIChj YWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3RkYml0LmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcg Zm9yIHN0ZGNrZGludC5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3lzL3JhbmRvbS5o Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZW5kaWFuLmguLi4gKGNhY2hlZCkgbm8KY2hl Y2tpbmcgZm9yIHN5cy9lbmRpYW4uaC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyB3aGV0aGVyIGl0 IGlzIHNhZmUgdG8gZGVmaW5lIF9fRVhURU5TSU9OU19fLi4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyB3aGV0aGVyIF9YT1BFTl9TT1VSQ0Ugc2hvdWxkIGJlIGRlZmluZWQuLi4gKGNhY2hlZCkgbm8K Y2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IuLi4gKGNhY2hlZCkgY2xhbmcg LUUKY2hlY2tpbmcgZm9yIGVncmVwIC1lLi4uIChjYWNoZWQpIC91c3IvYmluL2dyZXAgLUUKY2hl Y2tpbmcgZm9yIE1pbml4IEFtc3RlcmRhbSBjb21waWxlci4uLiAoY2FjaGVkKSBubwpjaGVja2lu ZyBmb3IgcmFubGliLi4uIChjYWNoZWQpIHJhbmxpYgpjaGVja2luZyBmb3IgY2xhbmcgb3B0aW9u IHRvIHN1cHBvcnQgbGFyZ2UgZmlsZXMuLi4gKGNhY2hlZCkgbm9uZSBuZWVkZWQKY2hlY2tpbmcg Zm9yIGNsYW5nIG9wdGlvbiB0byBzdXBwb3J0IHRpbWVzdGFtcHMgYWZ0ZXIgMjAzOC4uLiAoY2Fj aGVkKSBub25lIG5lZWRlZApjaGVja2luZyB3aGV0aGVyIHRoZSBjb21waWxlciBpcyBjbGFuZy4u LiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRsZXMgLVdlcnJv ciAtV3Vua25vd24td2FybmluZy1vcHRpb24uLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRo ZXIgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyBpcyBuZWVkZWQuLi4gKGNhY2hlZCkg bm8KY2hlY2tpbmcgd2hldGhlciAtV3VuaW5pdGlhbGl6ZWQgaXMgc3VwcG9ydGVkLi4uIChjYWNo ZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtZnN0cmljdC1mbGV4 LWFycmF5cy4uLiAoY2FjaGVkKSBubwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxl cyAtV2FsbC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRs ZXMgLVdhcml0aC1jb252ZXJzaW9uLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdoZXRoZXIgQyBj b21waWxlciBoYW5kbGVzIC1XZGF0ZS10aW1lLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0 aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV2R1cGxpY2F0ZWQtY29uZC4uLiAoY2FjaGVkKSBubwpj aGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV2V4dHJhLi4uIChjYWNoZWQpIHll cwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV2Zvcm1hdC1zaWduZWRuZXNz Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV2Zs ZXgtYXJyYXktbWVtYmVyLW5vdC1hdC1lbmQuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhl ciBDIGNvbXBpbGVyIGhhbmRsZXMgLVdpbml0LXNlbGYuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5n IHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1XaW52YWxpZC1wY2guLi4gKGNhY2hlZCkgeWVz CmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1XbG9naWNhbC1vcC4uLiAoY2Fj aGVkKSBubwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV21pc3NpbmctZGVj bGFyYXRpb25zLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFu ZGxlcyAtV21pc3NpbmctaW5jbHVkZS1kaXJzLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0 aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV21pc3NpbmctcHJvdG90eXBlcy4uLiAoY2FjaGVkKSB5 ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRsZXMgLVdtaXNzaW5nLXZhcmlhYmxl LWRlY2xhcmF0aW9ucy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVy IGhhbmRsZXMgLVduZXN0ZWQtZXh0ZXJucy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhl ciBDIGNvbXBpbGVyIGhhbmRsZXMgLVdudWxsLWRlcmVmZXJlbmNlLi4uIChjYWNoZWQpIHllcwpj aGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV29sZC1zdHlsZS1kZWZpbml0aW9u Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV29w ZW5tcC1zaW1kLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5k bGVzIC1XcGFja2VkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIg aGFuZGxlcyAtV3BvaW50ZXItYXJpdGguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIg QyBjb21waWxlciBoYW5kbGVzIC1Xc3RyaWN0LWZsZXgtYXJyYXlzLi4uIChjYWNoZWQpIG5vCmNo ZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xc3RyaWN0LXByb3RvdHlwZXMuLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xc3VnZ2Vz dC1hdHRyaWJ1dGU9Zm9ybWF0Li4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdoZXRoZXIgQyBjb21w aWxlciBoYW5kbGVzIC1Xc3VnZ2VzdC1hdHRyaWJ1dGU9bm9yZXR1cm4uLi4gKGNhY2hlZCkgbm8K Y2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRsZXMgLVdzdWdnZXN0LWZpbmFsLW1ldGhv ZHMuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRsZXMgLVdz dWdnZXN0LWZpbmFsLXR5cGVzLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdoZXRoZXIgQyBjb21w aWxlciBoYW5kbGVzIC1XdHJhbXBvbGluZXMuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhl ciBDIGNvbXBpbGVyIGhhbmRsZXMgLVd1bmluaXRpYWxpemVkLi4uIChjYWNoZWQpIHllcwpjaGVj a2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV3Vua25vd24tcHJhZ21hcy4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRsZXMgLVd1bnVzZWQtbWFj cm9zLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1X dmFyaWFkaWMtbWFjcm9zLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGls ZXIgaGFuZGxlcyAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UuLi4gKGNhY2hlZCkgbm8K Y2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRsZXMgLVd3cml0ZS1zdHJpbmdzLi4uIChj YWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV2FycmF5LWJv dW5kcz0yLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVz IC1XYXR0cmlidXRlLWFsaWFzPTIuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhlciBDIGNv bXBpbGVyIGhhbmRsZXMgLVdmb3JtYXQ9Mi4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhl ciBDIGNvbXBpbGVyIGhhbmRsZXMgLVdmb3JtYXQtdHJ1bmNhdGlvbj0yLi4uIChjYWNoZWQpIG5v CmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1XaW1wbGljaXQtZmFsbHRocm91 Z2g9NS4uLiAoY2FjaGVkKSBubwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAt V3NoaWZ0LW92ZXJmbG93PTIuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhlciBDIGNvbXBp bGVyIGhhbmRsZXMgLVd1c2UtYWZ0ZXItZnJlZT0zLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdo ZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1XdmxhLWxhcmdlci10aGFuPTQwMzEuLi4gKGNhY2hl ZCkgbm8KY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRsZXMgLVd0aHJlYWQtc2FmZXR5 Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV3Jl ZHVuZGFudC1kZWNscy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVy IGhhbmRsZXMgLVd0cmFpbGluZy13aGl0ZXNwYWNlLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdo ZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMu Li4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8t b3ZlcnJpZGUtaW5pdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVy IGhhbmRsZXMgLVduby1zaWduLWNvbXBhcmUuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRo ZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8tdHlwZS1saW1pdHMuLi4gKGNhY2hlZCkgeWVzCmNo ZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8tdW51c2VkLXBhcmFtZXRlci4u LiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRsZXMgLVduby1m b3JtYXQtbm9ubGl0ZXJhbC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBp bGVyIGhhbmRsZXMgLVduby1iaWRpLWNoYXJzLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdoZXRo ZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8tYml0d2lzZS1pbnN0ZWFkLW9mLWxvZ2ljYWwuLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8tZm9y bWF0LXNpZ25lZG5lc3MuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxl ciBoYW5kbGVzIC1Xbm8tbWlzc2luZy1icmFjZXMuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdo ZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8tbnVsbC1wb2ludGVyLWFyaXRobWV0aWMuLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8taW1w bGljaXQtY29uc3QtaW50LWZsb2F0LWNvbnZlcnNpb24uLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5n IHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8taW50LWluLWJvb2wtY29udGV4dC4uLiAo Y2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhbmRsZXMgLVduby1zaGlm dC1vdmVyZmxvdy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhh bmRsZXMgLVduby1pbml0aWFsaXplci1vdmVycmlkZXMuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5n IHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8tdGF1dG9sb2dpY2FsLWNvbXBhcmUuLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBoYW5kbGVzIC1Xbm8tdGF1 dG9sb2dpY2FsLWNvbnN0YW50LW91dC1vZi1yYW5nZS1jb21wYXJlLi4uIChjYWNoZWQpIHllcwpj aGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFuZGxlcyAtV25vLWRlcHJlY2F0ZWQtZGVjbGFy YXRpb25zLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0 YWxsLi4uIChjYWNoZWQpIC9vcHQvaG9tZWJyZXcvYmluL2dpbnN0YWxsIC1jCmNoZWNraW5nIGZv ciBnYXdrLi4uIChjYWNoZWQpIGF3awpjaGVja2luZyBjb21tYW5kIHRvIHN5bWxpbmsgZmlsZXMg aW4gdGhlIHNhbWUgZGlyZWN0b3J5Li4uIChjYWNoZWQpIGxuIC1zCmNoZWNraW5nIGZvciBpbnN0 YWxsLWluZm8uLi4gKGNhY2hlZCkgL29wdC9ob21lYnJldy9iaW4vaW5zdGFsbC1pbmZvCmNoZWNr aW5nIGZvciBnemlwLi4uIChjYWNoZWQpIC91c3IvYmluL2d6aXAKY2hlY2tpbmcgZm9yICdmaW5k JyBhcmdzIHRvIGRlbGV0ZSBhIGZpbGUuLi4gKGNhY2hlZCkgLWRlbGV0ZQpjaGVja2luZyBmb3Ig YnJldy4uLiAoY2FjaGVkKSBicmV3CmNoZWNraW5nIGZvciBtYWtlaW5mby4uLiAoY2FjaGVkKSAv b3B0L2hvbWVicmV3L29wdC90ZXhpbmZvL2Jpbi9tYWtlaW5mbwpjaGVja2luZyBmb3IgcG9ydC4u LiBubwpjaGVja2luZyB3aGV0aGVyIGFkZHJlc3NlcyBhcmUgc2FuaXRpemVkLi4uIChjYWNoZWQp IG5vCmNoZWNraW5nIGZvciBmbGFnIHRvIHdvcmsgYXJvdW5kIEdDQyB1bmlvbiBidWdzLi4uIChj YWNoZWQpIG5vbmUgbmVlZGVkCmNoZWNraW5nIGZvciBtYXRoIGxpYnJhcnkuLi4gKGNhY2hlZCkg bm9uZSByZXF1aXJlZApjaGVja2luZyBmb3IgcGtnLWNvbmZpZy4uLiAoY2FjaGVkKSAvb3B0L2hv bWVicmV3L2Jpbi9wa2ctY29uZmlnCmNoZWNraW5nIHBrZy1jb25maWcgaXMgYXQgbGVhc3QgdmVy c2lvbiAwLjkuMC4uLiB5ZXMKY2hlY2tpbmcgZm9yIG1hY2hpbmUvc291bmRjYXJkLmguLi4gKGNh Y2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN5cy9zb3VuZGNhcmQuaC4uLiAoY2FjaGVkKSBubwpjaGVj a2luZyBmb3Igc291bmRjYXJkLmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIG1tc3lzdGVt LmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIF9vc3NfaW9jdGwgaW4gLWxvc3NhdWRpby4u LiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3IgYWxzYSA+PSAxLjAuMC4uLiBubwpjaGVja2luZyBm b3IgQUREUl9OT19SQU5ET01JWkUuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN5cy93YWl0 LmggdGhhdCBpcyBQT1NJWC4xIGNvbXBhdGlibGUuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZv ciBuZXQvaWYuaC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGlmYWRkcnMuaC4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgZm9yIG5ldC9pZl9kbC5oLi4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyBmb3Igc3RydWN0IGlmcmVxLmlmcl9mbGFncy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9y IHN0cnVjdCBpZnJlcS5pZnJfaHdhZGRyLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBzdHJ1 Y3QgaWZyZXEuaWZyX25ldG1hc2suLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN0cnVjdCBp ZnJlcS5pZnJfYnJvYWRhZGRyLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3RydWN0IGlm cmVxLmlmcl9hZGRyLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3RydWN0IGlmcmVxLmlm cl9hZGRyLnNhX2xlbi4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBnY2MgdW5kZXJz dGFuZHMgLU1NRCAtTUYuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBjbGFuZyBvcHRpb25z IG5lZWRlZCB0byBkZXRlY3QgYWxsIHVuZGVjbGFyZWQgZnVuY3Rpb25zLi4uIChjYWNoZWQpIG5v bmUgbmVlZGVkCmNoZWNraW5nIGZvciBzdHJ1Y3QgcGFzc3dkLnB3X2dlY29zLi4uIChjYWNoZWQp IHllcwpjaGVja2luZyBmb3IgWC4uLiAoY2FjaGVkKSBsaWJyYXJpZXMgLCBoZWFkZXJzIApjaGVj a2luZyBmb3IgQXBwS2l0L0FwcEtpdC5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgTWFj IE9TIFggMTAuNiBvciBuZXdlci4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hYyBPUyBYIDEyLjAgb3Ig bGF0ZXIuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBnY2MuLi4gKGNhY2hlZCkgZ2NjCmNo ZWNraW5nIHdoZXRoZXIgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIEdOVSBPYmplY3RpdmUgQy4uLiAo Y2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBnY2MgYWNjZXB0cyAtZy4uLiAoY2FjaGVkKSB5 ZXMKY2hlY2tpbmcgaWYgdGhlIE9iamVjdGl2ZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGluc3RhbmNl dHlwZS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgaWYgdGhlIE9iamVjdGl2ZSBDIGNvbXBpbGVy IGRlZmF1bHRzIHRvIEM5OS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBtYWxsb2Mg aXMgRG91ZyBMZWEgc3R5bGUuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgYWxpZ25tZW50IG9mIGlu dC4uLiAoY2FjaGVkKSA0CmNoZWNraW5nIGFsaWdubWVudCBvZiBsb25nLi4uIChjYWNoZWQpIDgK Y2hlY2tpbmcgYWxpZ25tZW50IG9mIGxvbmcgbG9uZy4uLiAoY2FjaGVkKSA4CmNoZWNraW5nIHNp emUgb2YgbG9uZy4uLiAoY2FjaGVkKSA4CmNoZWNraW5nIGZvciBzdHJ1Y3QgYWxpZ25tZW50Li4u IChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3RkYWxpZ24uaC4uLiAoY2FjaGVkKSB5ZXMKY2hl Y2tpbmcgd2hldGhlciBhbGlnbmFzIGlzIHJlcXVpcmVkIHlldCB1bmF2YWlsYWJsZS4uLiAoY2Fj aGVkKSBubwpjaGVja2luZyBmb3Igc2Jyay4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGdl dHBhZ2VzaXplLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgX19sc2FuX2lnbm9yZV9vYmpl Y3QuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGZvcmsuLi4gKGNhY2hlZCkgeWVzCmNoZWNr aW5nIGZvciB2Zm9yay4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGZjaG1vZC4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHV0bXBuYW1lLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZv ciB1dG1weG5hbWUuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBjYW5vbmljYWxpemVfZmls ZV9uYW1lLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciByZWFscGF0aC4uLiAoY2FjaGVkKSB5 ZXMKY2hlY2tpbmcgZm9yIGxzdGF0Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZmNobW9k YXQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBsY2htb2QuLi4gKGNhY2hlZCkgeWVzCmNo ZWNraW5nIGZvciBmY250bC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGZkb3BlbmRpci4u LiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGxpc3R4YXR0ci4uLiAoY2FjaGVkKSB5ZXMKY2hl Y2tpbmcgZm9yIGZzdGF0YXQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBmc3luYy4uLiAo Y2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheS4uLiAoY2FjaGVkKSB5ZXMKY2hl Y2tpbmcgZm9yIG1lbXNldF9zLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3RyZnRpbWVf ei4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3IgcHNlbGVjdC4uLiAoY2FjaGVkKSB5ZXMKY2hl Y2tpbmcgZm9yIHB0aHJlYWRfc2lnbWFzay4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHJl YWRsaW5rLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgaXNibGFuay4uLiAoY2FjaGVkKSB5 ZXMKY2hlY2tpbmcgZm9yIGlzd2N0eXBlLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3Ry dG9pbWF4Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3ltbGluay4uLiAoY2FjaGVkKSB5 ZXMKY2hlY2tpbmcgZm9yIGxvY2FsdGltZV9yLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Ig Z2V0ZHRhYmxlc2l6ZS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHV0aW1lbnMuLi4gKGNh Y2hlZCkgbm8KY2hlY2tpbmcgZm9yIGx1dGltZW5zLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZv ciB3b3JraW5nIG1tYXAuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBtYWluIGluIC1sWGJz ZC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3IgcHRocmVhZCBsaWJyYXJ5Li4uIChjYWNoZWQp IG5vbmUgbmVlZGVkCmNoZWNraW5nIGZvciB0aHJlYWQgc3VwcG9ydC4uLiB5ZXMKY2hlY2tpbmcg Zm9yIGxpYnJzdmctMi4wID49IDIuMTQuMC4uLiB5ZXMKY2hlY2tpbmcgZm9yIGxpYndlYnBkZW11 eCA+PSAwLjYuMC4uLiB5ZXMKY2hlY2tpbmcgZm9yIFdlYlBHZXRJbmZvLi4uIChjYWNoZWQpIG5v CmNoZWNraW5nIGZvciBsaWJ3ZWJwZGVtdXggPj0gMC42LjAgbGlid2VicGRlY29kZXIgPj0gMC42 LjAuLi4geWVzCmNoZWNraW5nIGZvciBzcWxpdGUzLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBm b3Igc3FsaXRlM19sb2FkX2V4dGVuc2lvbiBpbiAtbHNxbGl0ZTMuLi4gKGNhY2hlZCkgbm8KY2hl Y2tpbmcgZm9yIGdldGFkZHJpbmZvX2EgaW4gLWxhbmwuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcg Zm9yIG1hbGxvY190cmltLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBkYnVzLTEgPj0gMS4w Li4uIHllcwpjaGVja2luZyBmb3IgZGJ1c193YXRjaF9nZXRfdW5peF9mZC4uLiAoY2FjaGVkKSB5 ZXMKY2hlY2tpbmcgZm9yIGRidXNfdHlwZV9pc192YWxpZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tp bmcgZm9yIGRidXNfdmFsaWRhdGVfYnVzX25hbWUuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZv ciBkYnVzX3ZhbGlkYXRlX3BhdGguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBkYnVzX3Zh bGlkYXRlX2ludGVyZmFjZS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGRidXNfdmFsaWRh dGVfbWVtYmVyLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZGJ1c19tZXNzYWdlX3NldF9h bGxvd19pbnRlcmFjdGl2ZV9hdXRob3JpemF0aW9uLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBm b3IgbGdldGZpbGVjb24gaW4gLWxzZWxpbnV4Li4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBn bnV0bHMgPj0gMi4xMi4yLi4uIHllcwpjaGVja2luZyBmb3IgbGlic3lzdGVtZCA+PSAyMjIuLi4g bm8KY2hlY2tpbmcgZm9yIHRyZWUtc2l0dGVyID49IDAuMjAuMi4uLiB5ZXMKY2hlY2tpbmcgZm9y IHN5cy9pbm90aWZ5LmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGxpYmtxdWV1ZS4uLiBu bwpjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIGtxdWV1ZS4uLiAoY2FjaGVkKSBub25l IHJlcXVpcmVkCmNoZWNraW5nIGZvciBqcGVnbGliIDZiIG9yIGxhdGVyLi4uIChjYWNoZWQpIC1s anBlZwpjaGVja2luZyBmb3IgbGNtczIuLi4geWVzCmNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRh aW5pbmcgaW5mbGF0ZUVuZC4uLiAoY2FjaGVkKSAtbHoKY2hlY2tpbmcgZm9yIGRsYWRkci4uLiAo Y2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGRsZnVuYy4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBm b3IgbGlicG5nID49IDEuMC4wLi4uIHllcwpjaGVja2luZyB3aGV0aGVyIHBuZ19sb25nam1wIGlz IGRlY2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgdGlmZmlvLmguLi4gKGNhY2hl ZCkgeWVzCmNoZWNraW5nIGZvciBUSUZGR2V0VmVyc2lvbiBpbiAtbHRpZmYuLi4gKGNhY2hlZCkg eWVzCmNoZWNraW5nIGZvciBnaWZfbGliLmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBH aWZNYWtlTWFwT2JqZWN0IGluIC1sZ2lmLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZ3Bt LmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGxpYnhtbC0yLjAgPiAyLjYuMTcuLi4geWVz CmNoZWNraW5nIGZvciBodG1sUmVhZE1lbW9yeSBpbiAtbHhtbDIuLi4gKGNhY2hlZCkgeWVzCmNo ZWNraW5nIGZvciBsaW51eC9zZWNjb21wLmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGxp bnV4L2ZpbHRlci5oLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBsaWJzZWNjb21wID49IDIu NS4yLi4uIG5vCmNoZWNraW5nIGZvciBhY2NlcHQ0Li4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZv ciBmY2hkaXIuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBnZXRob3N0bmFtZS4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGdldHJ1c2FnZS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcg Zm9yIGdldF9jdXJyZW50X2Rpcl9uYW1lLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBscmFu ZDQ4Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgcmFuZG9tLi4uIChjYWNoZWQpIHllcwpj aGVja2luZyBmb3IgcmludC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHRjZHJhaW4uLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciB0cnVuYy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcg Zm9yIHNlbGVjdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGdldHBhZ2VzaXplLi4uIChj YWNoZWQpIHllcwpjaGVja2luZyBmb3IgbmV3bG9jYWxlLi4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyBmb3IgZ2V0cmxpbWl0Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc2V0cmxpbWl0Li4u IChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc2h1dGRvd24uLi4gKGNhY2hlZCkgeWVzCmNoZWNr aW5nIGZvciBwdGhyZWFkX3NpZ21hc2suLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBzdHJz aWduYWwuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBzZXRpdGltZXIuLi4gKGNhY2hlZCkg eWVzCmNoZWNraW5nIGZvciBzZW5kdG8uLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciByZWN2 ZnJvbS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGdldHNvY2tuYW1lLi4uIChjYWNoZWQp IHllcwpjaGVja2luZyBmb3IgZ2V0aWZhZGRycy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9y IGZyZWVpZmFkZHJzLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZ2FpX3N0cmVycm9yLi4u IChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3luYy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcg Zm9yIGVuZHB3ZW50Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZ2V0Z3JlbnQuLi4gKGNh Y2hlZCkgeWVzCmNoZWNraW5nIGZvciBlbmRncmVudC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcg Zm9yIGNmbWFrZXJhdy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGNmc2V0c3BlZWQuLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBfX2V4ZWN1dGFibGVfc3RhcnQuLi4gKGNhY2hlZCkg bm8KY2hlY2tpbmcgZm9yIGxvZzIuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBwdGhyZWFk X3NldG5hbWVfbnAuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBwdGhyZWFkX3NldF9uYW1l X25wLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBnZXRwd2VudC4uLiAoY2FjaGVkKSB5ZXMK Y2hlY2tpbmcgZm9yIHJlbmFtZWF0Mi4uLiAoY2FjaGVkKSBubwpjaGVja2luZyB3aGV0aGVyIHB0 aHJlYWRfc2V0bmFtZV9ucCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudC4uLiAoY2FjaGVkKSB5ZXMK Y2hlY2tpbmcgZm9yIGFsaWduZWRfYWxsb2MuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRo ZXIgYWxpZ25lZF9hbGxvYyBpcyBkZWNsYXJlZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9y IHBvc2l4X21hZHZpc2UuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBtYWR2aXNlLi4uIChj YWNoZWQpIHllcwpjaGVja2luZyBmb3IgX19idWlsdGluX2ZyYW1lX2FkZHJlc3MuLi4gKGNhY2hl ZCkgeWVzCmNoZWNraW5nIGZvciBfX2J1aWx0aW5fdW53aW5kX2luaXQuLi4gKGNhY2hlZCkgeWVz CmNoZWNraW5nIGZvciBkZWNsYXJhdGlvbnMgb2YgZnNlZWtvIGFuZCBmdGVsbG8uLi4gKGNhY2hl ZCkgeWVzCmNoZWNraW5nIGZvciBncmFudHB0Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Ig Z2V0cHQuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHBvc2l4X29wZW5wdC4uLiAoY2FjaGVk KSB5ZXMKY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyB0cHV0cy4uLiAoY2FjaGVkKSAt bG5jdXJzZXMKY2hlY2tpbmcgd2hldGhlciAtbG5jdXJzZXMgbGlicmFyeSBkZWZpbmVzIEJDLi4u IChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgdGltZXJmZCBpbnRlcmZhY2UuLi4gKGNhY2hlZCkg bm8KY2hlY2tpbmcgd2hldGhlciBzaWduYWxzIGNhbiBiZSBoYW5kbGVkIG9uIGFsdGVybmF0ZSBz dGFjay4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHZhbGdyaW5kL3ZhbGdyaW5kLmguLi4g KGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN0cnVjdCB1bmlwYWlyLnVuaWNvZGUuLi4gKGNhY2hl ZCkgbm8KY2hlY2tpbmcgZm9yIHBpZF90Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igd29y a2luZyBmb3JrLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igd29ya2luZyB2Zm9yay4uLiAo Y2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHNucHJpbnRmLi4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyBmb3Igb3Blbl9tZW1zdHJlYW0uLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBzcGF3bi5o Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgcG9zaXhfc3Bhd24uLi4gKGNhY2hlZCkgeWVz CmNoZWNraW5nIGZvciBwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRkY2hkaXIuLi4gKGNhY2hl ZCkgbm8KY2hlY2tpbmcgZm9yIHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRjaGRpcl9ucC4u LiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHBvc2l4X3NwYXduYXR0cl9zZXRmbGFncy4uLiAo Y2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBQT1NJWF9TUEFXTl9TRVRTSUQgaXMgZGVjbGFy ZWQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgR0xpYiBpcyBsaW5rZWQgaW4uLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBubF9sYW5naW5mbyBhbmQgQ09ERVNFVC4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgZm9yIG5sX2xhbmdpbmZvIGFuZCBfTkxfUEFQRVJfV0lEVEguLi4g KGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIG1ic3RhdGVfdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tp bmcgZm9yIF9zZXRqbXAuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBzaWdzZXRqbXAuLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIFBPU0lYIHRlcm1pb3MuLi4gKGNhY2hlZCkgeWVzCmNoZWNr aW5nIHNpemUgb2Ygc3BlZWRfdC4uLiAoY2FjaGVkKSA4CmNoZWNraW5nIGZvciB1c2FibGUgRklP TlJFQUQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciB1c2FibGUgU0lHSU8uLi4gKGNhY2hl ZCkgeWVzCmNoZWNraW5nIGZvciBDL0MrKyByZXN0cmljdCBrZXl3b3JkLi4uIChjYWNoZWQpIF9f cmVzdHJpY3RfXwpjaGVja2luZyBmb3IgdHlwZW9mIHN5bnRheCBhbmQga2V5d29yZCBzcGVsbGlu Zy4uLiAoY2FjaGVkKSB0eXBlb2YKY2hlY2tpbmcgZm9yIHN0YXRlbWVudCBleHByZXNzaW9ucy4u LiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBtYWxsb2MgKDApIHJldHVybnMgbm9ubnVs bC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHN5cy9hY2wuaC4uLiAoY2FjaGVkKSB5ZXMK Y2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyBhY2xfZ2V0X2ZpbGUuLi4gKGNhY2hlZCkg bm9uZSByZXF1aXJlZApjaGVja2luZyBmb3IgYWNsX2dldF9maWxlLi4uIChjYWNoZWQpIHllcwpj aGVja2luZyBmb3IgYWNsX2dldF9mZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGFjbF9z ZXRfZmlsZS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGFjbF9zZXRfZmQuLi4gKGNhY2hl ZCkgeWVzCmNoZWNraW5nIGZvciBhY2xfZ2V0X2xpbmtfbnAuLi4gKGNhY2hlZCkgeWVzCmNoZWNr aW5nIGZvciBhY2xfZnJlZS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGFjbF9mcm9tX21v ZGUuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGFjbF9mcm9tX3RleHQuLi4gKGNhY2hlZCkg eWVzCmNoZWNraW5nIGZvciBhY2xfZGVsZXRlX2RlZl9maWxlLi4uIChjYWNoZWQpIHllcwpjaGVj a2luZyBmb3IgYWNsX2V4dGVuZGVkX2ZpbGUuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGFj bF9kZWxldGVfZmRfbnAuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBhY2xfZGVsZXRlX2Zp bGVfbnAuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBhY2xfY29weV9leHRfbmF0aXZlLi4u IChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgYWNsX2NyZWF0ZV9lbnRyeV9ucC4uLiAoY2FjaGVk KSB5ZXMKY2hlY2tpbmcgZm9yIGFjbF90b19zaG9ydF90ZXh0Li4uIChjYWNoZWQpIG5vCmNoZWNr aW5nIGZvciBhY2xfZnJlZV90ZXh0Li4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciB3b3JraW5n IGFjbF9nZXRfZmlsZS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGFjbC9saWJhY2wuaC4u LiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3IgYWNsX2VudHJpZXMuLi4gKGNhY2hlZCkgbm8KY2hl Y2tpbmcgZm9yIEFDTF9GSVJTVF9FTlRSWS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIEFD TF9UWVBFX0VYVEVOREVELi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igd29ya2luZyBhbGxv Y2EuaC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGFsbG9jYS4uLiAoY2FjaGVkKSB5ZXMK Y2hlY2tpbmcgZm9yIGEgcmFjZS1mcmVlIG1rZGlyIC1wLi4uIChjYWNoZWQpIC9vcHQvaG9tZWJy ZXcvYmluL2dta2RpciAtcApjaGVja2luZyB3aGV0aGVyIHRoZSBwcmVwcm9jZXNzb3Igc3VwcG9y dHMgaW5jbHVkZV9uZXh0Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIHNvdXJjZSBj b2RlIGxpbmUgbGVuZ3RoIGlzIHVubGltaXRlZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hl dGhlciBlbmR1dGVudCBpcyBkZWNsYXJlZC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3Igc3Ry dWN0IHV0bXB4LnV0X3VzZXIuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBzdHJ1Y3QgdXRt cC51dF91c2VyLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBzdHJ1Y3QgdXRtcHgudXRfbmFt ZS4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3Igc3RydWN0IHV0bXAudXRfbmFtZS4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHN0cnVjdCB1dG1weC51dF90eXBlLi4uIChjYWNoZWQpIHll cwpjaGVja2luZyBmb3Igc3RydWN0IHV0bXAudXRfdHlwZS4uLiAoY2FjaGVkKSBubwpjaGVja2lu ZyBmb3Igc3RydWN0IHV0bXB4LnV0X3BpZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHN0 cnVjdCB1dG1wLnV0X3BpZC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3Igc3RydWN0IHV0bXAu dXRfdHYuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN0cnVjdCB1dG1weC51dF9ob3N0Li4u IChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igc3RydWN0IHV0bXAudXRfaG9zdC4uLiAoY2FjaGVk KSB5ZXMKY2hlY2tpbmcgZm9yIHN0cnVjdCB1dG1weC51dF9pZC4uLiAoY2FjaGVkKSB5ZXMKY2hl Y2tpbmcgZm9yIHN0cnVjdCB1dG1wLnV0X2lkLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBz dHJ1Y3QgdXRtcHgudXRfc2Vzc2lvbi4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3Igc3RydWN0 IHV0bXAudXRfc2Vzc2lvbi4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3Igc3RydWN0IHV0bXB4 LnV0X2V4aXQuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN0cnVjdCB1dG1wLnV0X2V4aXQu Li4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN0cnVjdCB1dG1weC51dF9leGl0LnV0X2V4aXQu Li4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN0cnVjdCB1dG1weC51dF9leGl0LmVfZXhpdC4u LiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3Igc3RydWN0IHV0bXAudXRfZXhpdC5lX2V4aXQuLi4g KGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN0cnVjdCB1dG1weC51dF9leGl0LnV0X3Rlcm1pbmF0 aW9uLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBzdHJ1Y3QgdXRtcHgudXRfZXhpdC5lX3Rl cm1pbmF0aW9uLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBzdHJ1Y3QgdXRtcC51dF9leGl0 LmVfdGVybWluYXRpb24uLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhlciBzeXNpbmZvIGlz IGRlY2xhcmVkLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBzeXMvc3lzY3RsLmguLi4gKGNh Y2hlZCkgeWVzCmNoZWNraW5nIGZvciBzeXNjdGwuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdo ZXRoZXIgbHN0YXQgY29ycmVjdGx5IGhhbmRsZXMgdHJhaWxpbmcgc2xhc2guLi4gKGNhY2hlZCkg bm8KY2hlY2tpbmcgd2hldGhlciAvLyBpcyBkaXN0aW5jdCBmcm9tIC8uLi4gKGNhY2hlZCkgbm8K Y2hlY2tpbmcgd2hldGhlciByZWFscGF0aCB3b3Jrcy4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBm b3IgZmFjY2Vzc2F0Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZ2V0Y3dkLi4uIChjYWNo ZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLi4uIChj YWNoZWQpIG5vCmNoZWNraW5nIGlmIGVudmlyb24gaXMgcHJvcGVybHkgZGVjbGFyZWQuLi4gKGNh Y2hlZCkgbm8KY2hlY2tpbmcgZm9yIGNvbXBsZXRlIGVycm5vLmguLi4gKGNhY2hlZCkgeWVzCmNo ZWNraW5nIHdoZXRoZXIgY3R5cGUuaCBkZWZpbmVzIF9faGVhZGVyX2lubGluZS4uLiAoY2FjaGVk KSB5ZXMKY2hlY2tpbmcgZm9yIG1vZGVfdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGxp YnJhcnkgY29udGFpbmluZyBzZXRmaWxlY29uLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdoZXRo ZXIgc3RybW9kZSBpcyBkZWNsYXJlZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBn ZXRsaW5lIGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZ2V0b3B0Lmgu Li4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBnZXRvcHRfbG9uZ19vbmx5Li4uIChjYWNoZWQp IHllcwpjaGVja2luZyB3aGV0aGVyIGdldG9wdCBpcyBQT1NJWCBjb21wYXRpYmxlLi4uIChjYWNo ZWQpIG5vCmNoZWNraW5nIGZvciBnbGliYy1jb21wYXRpYmxlIHN5cy9jZGVmcy5oLi4uIChjYWNo ZWQpIG5vCmNoZWNraW5nIHdoZXRoZXIgdGltZXNwZWNfZ2V0IGlzIGRlY2xhcmVkLi4uIChjYWNo ZWQpIHllcwpjaGVja2luZyBmb3IgdGltZXNwZWNfZ2V0Li4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyBmb3Igc3RydWN0IHRpbWV2YWwuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciB3aWRlLWVu b3VnaCBzdHJ1Y3QgdGltZXZhbC50dl9zZWMgbWVtYmVyLi4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyB3aGV0aGVyIGxpbWl0cy5oIGhhcyBXT1JEX0JJVCwgQk9PTF9XSURUSCBldGMuLi4uIChjYWNo ZWQpIG5vCmNoZWNraW5nIHdoZXRoZXIgdGhlIGNvbXBpbGVyIHByb2R1Y2VzIG11bHRpLWFyY2gg YmluYXJpZXMuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhlciBzdGRpbnQuaCBjb25mb3Jt cyB0byBDOTkuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgc3RkaW50Lmggd29ya3Mg d2l0aG91dCBJU08gQyBwcmVkZWZpbmVzLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVy IHN0ZGludC5oIGhhcyBVSU5UTUFYX1dJRFRIIGV0Yy4uLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcg d2hldGhlciBtYWxsb2MgaXMgcHRyZGlmZl90IHNhZmUuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5n IHdoZXRoZXIgbWFsbG9jLCByZWFsbG9jLCBjYWxsb2Mgc2V0IGVycm5vIG9uIGZhaWx1cmUuLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgbWFsbG9jICgwKSByZXR1cm5zIG5vbm51bGwu Li4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgbWVtbWVtIGlzIGRlY2xhcmVkLi4uIChj YWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIG1lbXJjaHIgaXMgZGVjbGFyZWQuLi4gKGNhY2hl ZCkgbm8KY2hlY2tpbmcgd2hldGhlciA8bGltaXRzLmg+IGRlZmluZXMgTUlOIGFuZCBNQVguLi4g KGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhlciA8c3lzL3BhcmFtLmg+IGRlZmluZXMgTUlOIGFu ZCBNQVguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgdGltZV90IGlzIHNpZ25lZC4u LiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBhbGFybSBpcyBkZWNsYXJlZC4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWt0aW1lLi4uIChjYWNoZWQpIG5vCmNoZWNr aW5nIGZvciBzdHJ1Y3QgdG0udG1fZ210b2ZmLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Ig c3RydWN0IHRtLnRtX3pvbmUuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgPHN5cy9z ZWxlY3QuaD4gaXMgc2VsZi1jb250YWluZWQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRo ZXIgcmVhbGxvYyBzaG91bGQgYWJvcnQgdXBvbiB1bmRlZmluZWQgYmVoYXZpb3VyLi4uIChjYWNo ZWQpIG5vCmNoZWNraW5nIGZvciBpbmxpbmUuLi4gKGNhY2hlZCkgaW5saW5lCmNoZWNraW5nIGZv ciBzaWdzZXRfdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHZvbGF0aWxlIHNpZ19hdG9t aWNfdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHNpZ2hhbmRsZXJfdC4uLiAoY2FjaGVk KSBubwpjaGVja2luZyB3aGV0aGVyIHN0ZGNrZGludC5oIGNhbiBiZSBpbmNsdWRlZCBpbiBDLi4u IChjYWNoZWQpIHllcwpjaGVja2luZyBjaGVja2luZyBmb3IgYW4gSVNPIEMyMyBjb21wbGlhbnQg c3RkY2tkaW50LmggaW4gQy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBzdGRja2Rp bnQuaCBjYW4gYmUgaW5jbHVkZWQgaW4gQysrLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBn b29kIG1heF9hbGlnbl90Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIE5VTEwgY2Fu IGJlIHVzZWQgaW4gYXJiaXRyYXJ5IGV4cHJlc3Npb25zLi4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyBmb3IgdW5yZWFjaGFibGUgaW4gQy4uLiAoY2FjaGVkKSBubwpjaGVja2luZyB3aGV0aGVyIG51 bGxwdHJfdCBuZWVkcyA8c3RkZGVmLmg+Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVy IDxzdGRkZWYuaD4gaXMgaWRlbXBvdGVudC4uLiAoY2FjaGVkKSBndWVzc2luZyB5ZXMKY2hlY2tp bmcgd2hldGhlciBmY2xvc2VhbGwgaXMgZGVjbGFyZWQuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcg d2hldGhlciBnZXR3IGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVy IHB1dHcgaXMgZGVjbGFyZWQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoaWNoIGZsYXZvciBv ZiBwcmludGYgYXR0cmlidXRlIG1hdGNoZXMgaW50dHlwZXMgbWFjcm9zLi4uIChjYWNoZWQpIHN5 c3RlbQpjaGVja2luZyBmb3IgYW4gZW5nbGlzaCBVbmljb2RlIGxvY2FsZS4uLiAoY2FjaGVkKSBl bl9VUy5VVEYtOApjaGVja2luZyB3aGV0aGVyIGVjdnQgaXMgZGVjbGFyZWQuLi4gKGNhY2hlZCkg eWVzCmNoZWNraW5nIHdoZXRoZXIgZmN2dCBpcyBkZWNsYXJlZC4uLiAoY2FjaGVkKSB5ZXMKY2hl Y2tpbmcgd2hldGhlciBnY3Z0IGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3 aGV0aGVyIE1CX0NVUl9NQVggaXMgY29ycmVjdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hl dGhlciBzdHJubGVuIGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVy IHN0cnRvaW1heCBpcyBkZWNsYXJlZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBz dGF0IGZpbGUtbW9kZSBtYWNyb3MgYXJlIGJyb2tlbi4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBm b3IgbmxpbmtfdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGJsa3NpemVfdC4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGJsa2NudF90Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBm b3Igc3RydWN0IHRpbWVzcGVjIGluIDx0aW1lLmg+Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBm b3IgVElNRV9VVEMgaW4gPHRpbWUuaD4uLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIg ZXhlY3ZwZSBpcyBkZWNsYXJlZC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyB3aGV0aGVyIGNsZWFy ZXJyX3VubG9ja2VkIGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVy IGZlb2ZfdW5sb2NrZWQgaXMgZGVjbGFyZWQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRo ZXIgZmVycm9yX3VubG9ja2VkIGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3 aGV0aGVyIGZmbHVzaF91bmxvY2tlZCBpcyBkZWNsYXJlZC4uLiAoY2FjaGVkKSBubwpjaGVja2lu ZyB3aGV0aGVyIGZnZXRzX3VubG9ja2VkIGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIG5vCmNoZWNr aW5nIHdoZXRoZXIgZnB1dGNfdW5sb2NrZWQgaXMgZGVjbGFyZWQuLi4gKGNhY2hlZCkgbm8KY2hl Y2tpbmcgd2hldGhlciBmcHV0c191bmxvY2tlZCBpcyBkZWNsYXJlZC4uLiAoY2FjaGVkKSBubwpj aGVja2luZyB3aGV0aGVyIGZyZWFkX3VubG9ja2VkIGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIG5v CmNoZWNraW5nIHdoZXRoZXIgZndyaXRlX3VubG9ja2VkIGlzIGRlY2xhcmVkLi4uIChjYWNoZWQp IG5vCmNoZWNraW5nIHdoZXRoZXIgZ2V0Y191bmxvY2tlZCBpcyBkZWNsYXJlZC4uLiAoY2FjaGVk KSB5ZXMKY2hlY2tpbmcgd2hldGhlciBnZXRjaGFyX3VubG9ja2VkIGlzIGRlY2xhcmVkLi4uIChj YWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIHB1dGNfdW5sb2NrZWQgaXMgZGVjbGFyZWQuLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgcHV0Y2hhcl91bmxvY2tlZCBpcyBkZWNsYXJl ZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgdHlwZSBvZiBhcnJheSBhcmd1bWVudCB0byBnZXRn cm91cHMuLi4gKGNhY2hlZCkgZ2lkX3QKY2hlY2tpbmcgd2hldGhlciBnZXRkZWxpbSBpcyBkZWNs YXJlZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBnZXRkdGFibGVzaXplIGlzIGRl Y2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgT19DTE9FWEVDLi4uIChjYWNoZWQp IHllcwpjaGVja2luZyBmb3IgcHJvbW90ZWQgbW9kZV90IHR5cGUuLi4gKGNhY2hlZCkgaW50CmNo ZWNraW5nIHdoZXRoZXIgdGhlIHV0aW1lcyBmdW5jdGlvbiB3b3Jrcy4uLiAoY2FjaGVkKSB5ZXMK Y2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgb3B0aW9uIHRvIGFsbG93IHdhcm5pbmdzLi4uIChjYWNo ZWQpIC1Xbm8tZXJyb3IKY2hlY2tpbmcgZm9yIGFsaWduYXMgYW5kIGFsaWdub2YuLi4gKGNhY2hl ZCkgeWVzLCA8c3RkYWxpZ24uaD4gbWFjcm9zCmNoZWNraW5nIGZvciBhbGxvY2EgYXMgYSBjb21w aWxlciBidWlsdC1pbi4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHN0YXRpY19hc3NlcnQu Li4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGJvb2wsIHRydWUsIGZhbHNlLi4uIChjYWNoZWQp IG5vCmNoZWNraW5nIGZvciBfX2J1aWx0aW5fZXhwZWN0Li4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyBmb3IgcmVhZGxpbmthdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29u dGFpbmluZyBjbG9ja19nZXR0aW1lLi4uIChjYWNoZWQpIG5vbmUgcmVxdWlyZWQKY2hlY2tpbmcg Zm9yIGNsb2NrX2dldHJlcy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGNsb2NrX2dldHRp bWUuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBjbG9ja19zZXR0aW1lLi4uIChjYWNoZWQp IHllcwpjaGVja2luZyBmb3IgY29weV9maWxlX3JhbmdlLi4uIChjYWNoZWQpIG5vCmNoZWNraW5n IGZvciBkX3R5cGUgbWVtYmVyIGluIGRpcmVjdG9yeSBzdHJ1Y3QuLi4gKGNhY2hlZCkgeWVzCmNo ZWNraW5nIHdoZXRoZXIgLy8gaXMgZGlzdGluY3QgZnJvbSAvLi4uIChjYWNoZWQpIG5vCmNoZWNr aW5nIHdoZXRoZXIgZHVwMiB3b3Jrcy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGxpYnJh cnkgY29udGFpbmluZyBiYWNrdHJhY2Vfc3ltYm9sc19mZC4uLiAoY2FjaGVkKSBub25lIHJlcXVp cmVkCmNoZWNraW5nIGZvciBmYWNjZXNzYXQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBh Y2Nlc3MuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgZmNobW9kYXQgd29ya3MuLi4g KGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgZmNudGwgaGFuZGxlcyBGX0RVUEZEIGNvcnJl Y3RseS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBmY250bCB1bmRlcnN0YW5kcyBG X0RVUEZEX0NMT0VYRUMuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhlciBmZG9wZW5kaXIg aXMgZGVjbGFyZWQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgZmRvcGVuZGlyIHdv cmtzLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZmxleGlibGUgYXJyYXkgbWVtYmVyLi4u IChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgX19mcGVuZGluZy4uLiAoY2FjaGVkKSBubwpjaGVj a2luZyB3aGV0aGVyIGZyZWUgaXMga25vd24gdG8gcHJlc2VydmUgZXJybm8uLi4gKGNhY2hlZCkg bm8KY2hlY2tpbmcgd2hldGhlciBmc3RhdGF0ICguLi4sIDApIHdvcmtzLi4uIChjYWNoZWQpIHll cwpjaGVja2luZyBmb3Igc3lzL21vdW50LmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBz dGF0dmZzIGZ1bmN0aW9uIChTVlI0KS4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3IgdHdvLWFy Z3VtZW50IHN0YXRmcyB3aXRoIHN0YXRmcy5mX2Zyc2l6ZSBtZW1iZXIuLi4gKGNhY2hlZCkgbm8K Y2hlY2tpbmcgZm9yIDMtYXJndW1lbnQgc3RhdGZzIGZ1bmN0aW9uIChERUMgT1NGLzEpLi4uIChj YWNoZWQpIG5vCmNoZWNraW5nIGZvciB0d28tYXJndW1lbnQgc3RhdGZzIHdpdGggc3RhdGZzLmZf YnNpemUgbWVtYmVyIChBSVgsIDQuM0JTRCkuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBz eXMvZnMvczVwYXJhbS5oLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBzeXMvc3RhdGZzLmgu Li4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN0YXRmcyB0aGF0IHRydW5jYXRlcyBibG9jayBj b3VudHMuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGZ1dGltZW5zLi4uIChjYWNoZWQpIHll cwpjaGVja2luZyB3aGV0aGVyIGZ1dGltZW5zIHdvcmtzLi4uIChjYWNoZWQpIG5vCmNoZWNraW5n IGZvciBnZXRsaW5lLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Igd29ya2luZyBnZXRsaW5l IGZ1bmN0aW9uLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZ2V0bG9hZGF2Zy4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHN5cy9sb2FkYXZnLmguLi4gKGNhY2hlZCkgbm8KY2hlY2tp bmcgd2hldGhlciBnZXRsb2FkYXZnIGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyBmb3IgZ2V0cmFuZG9tLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBnZXR0aW1lb2ZkYXkg d2l0aCBQT1NJWCBzaWduYXR1cmUuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgdGhl IGNvbXBpbGVyIHN1cHBvcnRzIHRoZSBfX2lubGluZSBrZXl3b3JkLi4uIChjYWNoZWQpIHllcwpj aGVja2luZyBmb3IgZ21wLmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBsaWJyYXJ5IGNv bnRhaW5pbmcgX19nbXB6X3JvaW5pdF9uLi4uIChjYWNoZWQpIC1sZ21wCmNoZWNraW5nIGZvciBt ZW1tZW0uLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgbWVtbWVtIHdvcmtzLi4uIChj YWNoZWQpIG5vCmNoZWNraW5nIGZvciBtZW1wY3B5Li4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZv ciBtZW1yY2hyLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBtZW1zZXRfZXhwbGljaXQuLi4g KGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGV4cGxpY2l0X21lbXNldC4uLiAoY2FjaGVkKSBubwpj aGVja2luZyBmb3Igd29ya2luZyBtZW1zZXRfcy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9y IG1rb3N0ZW1wLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5n IG5hbm9zbGVlcC4uLiAoY2FjaGVkKSBub25lIHJlcXVpcmVkCmNoZWNraW5nIGZvciB3b3JraW5n IG5hbm9zbGVlcC4uLiAoY2FjaGVkKSBubyAobWlzaGFuZGxlcyBsYXJnZSBhcmd1bWVudHMpCmNo ZWNraW5nIGZvciBzeXMvcHN0YXQuaC4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3Igc3lzL3N5 c21wLmguLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN5cy9wYXJhbS5oLi4uIChjYWNoZWQp IHllcwpjaGVja2luZyBmb3Igc3lzL3N5c2N0bC5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBm b3Igc2NoZWRfZ2V0YWZmaW5pdHlfbnAuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHBzdGF0 X2dldGR5bmFtaWMuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHN5c21wLi4uIChjYWNoZWQp IG5vCmNoZWNraW5nIGZvciBzeXNjdGwuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIGZvciBzY2hl ZF9nZXRhZmZpbml0eS4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3IgcGlwZTIuLi4gKGNhY2hl ZCkgbm8KY2hlY2tpbmcgd2hldGhlciBzaWduYXR1cmUgb2YgcHNlbGVjdCBjb25mb3JtcyB0byBQ T1NJWC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBwc2VsZWN0IGRldGVjdHMgaW52 YWxpZCBmZHMuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgcHRocmVhZF9zaWdtYXNr IGlzIGEgbWFjcm8uLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgd2hldGhlciBwdGhyZWFkX3NpZ21h c2sgd29ya3Mgd2l0aG91dCAtbHB0aHJlYWQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRo ZXIgcHRocmVhZF9zaWdtYXNrIHJldHVybnMgZXJyb3IgbnVtYmVycy4uLiAoY2FjaGVkKSB5ZXMK Y2hlY2tpbmcgd2hldGhlciBwdGhyZWFkX3NpZ21hc2sgdW5ibG9ja3Mgc2lnbmFscyBjb3JyZWN0 bHkuLi4gKGNhY2hlZCkgZ3Vlc3NpbmcgeWVzCmNoZWNraW5nIGZvciB4YXR0ciBsaWJyYXJ5IHdp dGggQVRUUl9BQ1RJT05fUEVSTUlTU0lPTlMuLi4gKGNhY2hlZCkgbm8KY29uZmlndXJlOiBXQVJO SU5HOiBsaWJhdHRyIGRldmVsb3BtZW50IGxpYnJhcnkgd2FzIG5vdCBmb3VuZCBvciBub3QgdXNh YmxlLgpjb25maWd1cmU6IFdBUk5JTkc6IEdOVSBFbWFjcyB3aWxsIGJlIGJ1aWx0IHdpdGhvdXQg eGF0dHIgc3VwcG9ydC4KY2hlY2tpbmcgd2hldGhlciByZWFkbGluayBzaWduYXR1cmUgaXMgY29y cmVjdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciByZWFkbGluayBoYW5kbGVzIHRy YWlsaW5nIHNsYXNoIGNvcnJlY3RseS4uLiAoY2FjaGVkKSBubwpjaGVja2luZyB3aGV0aGVyIHJl YWRsaW5rIHRydW5jYXRlcyByZXN1bHRzIGNvcnJlY3RseS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tp bmcgZm9yIHJlYWRsaW5rYXQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgcmVhZGxp bmthdCBzaWduYXR1cmUgaXMgY29ycmVjdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhl ciByZWFsbG9jICguLi4sIDApIHJldHVybnMgbm9ubnVsbC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tp bmcgZm9yIHdvcmtpbmcgcmVfY29tcGlsZV9wYXR0ZXJuLi4uIChjYWNoZWQpIG5vCmNoZWNraW5n IGZvciBsaWJpbnRsLmguLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgaXNibGFuayBp cyBkZWNsYXJlZC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHNpZzJzdHIuLi4gKGNhY2hl ZCkgbm8KY2hlY2tpbmcgZm9yIHN0cjJzaWcuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHNp Z2Rlc2NyX25wLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBzb2NrbGVuX3QuLi4gKGNhY2hl ZCkgeWVzCmNoZWNraW5nIGZvciBzc2l6ZV90Li4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3Ig c3RydWN0IHN0YXQuc3RfYXRpbS50dl9uc2VjLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBz dHJ1Y3Qgc3RhdC5zdF9hdGltZXNwZWMudHZfbnNlYy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcg Zm9yIHN0cnVjdCBzdGF0LnN0X2JpcnRodGltZXNwZWMudHZfbnNlYy4uLiAoY2FjaGVkKSB5ZXMK Y2hlY2tpbmcgZm9yIHN0cGNweS4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHdvcmtpbmcg c3Rybmxlbi4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciBzdHJ0b2ltYXggd29ya3Mu Li4gKGNhY2hlZCkgeWVzCmNoZWNraW5nIHdoZXRoZXIgc3ltbGluayBoYW5kbGVzIHRyYWlsaW5n IHNsYXNoIGNvcnJlY3RseS4uLiAoY2FjaGVkKSBubwpjaGVja2luZyB3aGV0aGVyIGxvY2FsdGlt ZV9yIGlzIGRlY2xhcmVkLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyB3aGV0aGVyIGxvY2FsdGlt ZV9yIGlzIGNvbXBhdGlibGUgd2l0aCBpdHMgUE9TSVggc2lnbmF0dXJlLi4uIChjYWNoZWQpIHll cwpjaGVja2luZyB3aGV0aGVyIGxvY2FsdGltZSB3b3JrcyBldmVuIG5lYXIgZXh0cmVtYS4uLiAo Y2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIHRpbWV6b25lX3QuLi4gKGNhY2hlZCkgbm8KY2hlY2tp bmcgZm9yIHR6YWxsb2MuLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIHRpbWVnbS4uLiAoY2Fj aGVkKSB5ZXMKY2hlY2tpbmcgd2hldGhlciB0aW1lcl9zZXR0aW1lIGlzIGRlY2xhcmVkLi4uIChj YWNoZWQpIG5vCmNoZWNraW5nIGZvciB1dGltZW5zYXQuLi4gKGNhY2hlZCkgeWVzCmNoZWNraW5n IHdoZXRoZXIgdXRpbWVuc2F0IHdvcmtzLi4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciB2YXJp YWJsZS1sZW5ndGggYXJyYXlzLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgcmF3bWVtY2hy Li4uIChjYWNoZWQpIG5vCmNoZWNraW5nIHdoZXRoZXIgb3BlbiByZWNvZ25pemVzIGEgdHJhaWxp bmcgc2xhc2guLi4gKGNhY2hlZCkgbm8KY2hlY2tpbmcgZm9yIGV1aWRhY2Nlc3MuLi4gKGNhY2hl ZCkgbm8KY2hlY2tpbmcgZm9yIGZhY2Nlc3NhdC4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9y IGxpYmdlbi5oLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgZ2V0Z3JvdXBzLi4uIChjYWNo ZWQpIHllcwpjaGVja2luZyBmb3Igd29ya2luZyBnZXRncm91cHMuLi4gKGNhY2hlZCkgeWVzCmNo ZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgZWFjY2Vzcy4uLiAoY2FjaGVkKSBubwpjaGVj a2luZyBmb3IgZWFjY2Vzcy4uLiAoY2FjaGVkKSBubwpjaGVja2luZyBmb3IgZ3JvdXBfbWVtYmVy Li4uIChjYWNoZWQpIG5vCmNoZWNraW5nIGZvciBnZXRncm91cHMuLi4gKGNhY2hlZCkgeWVzCmNo ZWNraW5nIGZvciB3b3JraW5nIGdldGdyb3Vwcy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgd2hl dGhlciBnZXRncm91cHMgaGFuZGxlcyBuZWdhdGl2ZSB2YWx1ZXMuLi4gKGNhY2hlZCkgbm8KY2hl Y2tpbmcgd2hldGhlciBnZXRkdGFibGVzaXplIHdvcmtzLi4uIChjYWNoZWQpIHllcwpjaGVja2lu ZyBmb3IgZnV0aW1lcy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcgZm9yIGZ1dGltZXNhdC4uLiAo Y2FjaGVkKSBubwpjaGVja2luZyBmb3IgbHV0aW1lcy4uLiAoY2FjaGVkKSB5ZXMKY2hlY2tpbmcg Zm9yIGZ1dGltZW5zLi4uIChjYWNoZWQpIHllcwpjaGVja2luZyBmb3IgdXRpbWVuc2F0Li4uIChj YWNoZWQpIHllcwpjaGVja2luZyBmb3IgX19ta3RpbWVfaW50ZXJuYWwuLi4gKGNhY2hlZCkgbm8K Y2hlY2tpbmcgZm9yIHRpbWVyX2dldG92ZXJydW4uLi4gKGNhY2hlZCkgbm8KCkNvbmZpZ3VyZWQg Zm9yICdhYXJjaDY0LWFwcGxlLWRhcndpbjI0LjYuMCcuCgogIFdoZXJlIHNob3VsZCB0aGUgYnVp bGQgcHJvY2VzcyBmaW5kIHRoZSBzb3VyY2UgY29kZT8gICAgLgogIFdoYXQgY29tcGlsZXIgc2hv dWxkIGVtYWNzIGJlIGJ1aWx0IHdpdGg/ICAgICAgICAgICAgICAgY2xhbmcgLVdnbnUtaW1hZ2lu YXJ5LWNvbnN0YW50IC1XdW51c2VkLXJlc3VsdCAtZyAtZyAtTzIgLVduby1pZ25vcmVkLWF0dHJp YnV0ZXMgLVduby1mbGFnLWVudW0gLVduby1taXNzaW5nLW1ldGhvZC1yZXR1cm4tdHlwZSAtV25v LXZhcmlhZGljLW1hY3JvcyAtV25vLXN0cmljdC1wcm90b3R5cGVzIC1Xbm8tYXZhaWxhYmlsaXR5 IC1Xbm8tbnVsbGFiaWxpdHktY29tcGxldGVuZXNzCiAgU2hvdWxkIEVtYWNzIHVzZSB0aGUgR05V IHZlcnNpb24gb2YgbWFsbG9jPyAgICAgICAgICAgICBubwogICAgKFRoZSBHTlUgYWxsb2NhdG9y cyBkb24ndCB3b3JrIHdpdGggdGhpcyBzeXN0ZW0gY29uZmlndXJhdGlvbi4pCiAgU2hvdWxkIEVt YWNzIHVzZSBhIHJlbG9jYXRpbmcgYWxsb2NhdG9yIGZvciBidWZmZXJzPyAgICBubwogIFNob3Vs ZCBFbWFjcyB1c2UgbW1hcCgyKSBmb3IgYnVmZmVyIGFsbG9jYXRpb24/ICAgICAgICAgbm8KICBX aGF0IHdpbmRvdyBzeXN0ZW0gc2hvdWxkIEVtYWNzIHVzZT8gICAgICAgICAgICAgICAgICAgIG5l eHRzdGVwCiAgV2hhdCB0b29sa2l0IHNob3VsZCBFbWFjcyB1c2U/ICAgICAgICAgICAgICAgICAg ICAgICAgICBub25lCiAgV2hlcmUgZG8gd2UgZmluZCBYIFdpbmRvd3MgaGVhZGVyIGZpbGVzPyAg ICAgICAgICAgICAgICBTdGFuZGFyZCBkaXJzCiAgV2hlcmUgZG8gd2UgZmluZCBYIFdpbmRvd3Mg bGlicmFyaWVzPyAgICAgICAgICAgICAgICAgICBTdGFuZGFyZCBkaXJzCiAgRG9lcyBFbWFjcyB1 c2UgLWxYYXczZD8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubwogIElzIEVtYWNz IGJlaW5nIGJ1aWx0IGZvciBBbmRyb2lkPyAgICAgICAgICAgICAgICAgICAgICAgbm8gCiAgRG9l cyBFbWFjcyB1c2UgdGhlIFggRG91YmxlIEJ1ZmZlciBFeHRlbnNpb24/ICAgICAgICAgICBubwog IERvZXMgRW1hY3MgdXNlIC1sWHBtPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bm8KICBEb2VzIEVtYWNzIHVzZSAtbGpwZWc/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHllcwogIERvZXMgRW1hY3MgdXNlIC1sdGlmZj8gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeWVzCiAgRG9lcyBFbWFjcyB1c2UgYSBnaWYgbGlicmFyeT8gICAgICAgICAgICAg ICAgICAgICAgICAgICB5ZXMgLWxnaWYKICBEb2VzIEVtYWNzIHVzZSBhIHBuZyBsaWJyYXJ5PyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHllcyAtTC9vcHQvaG9tZWJyZXcvb3B0L2xpYnBuZy9s aWIgLWxwbmcxNgogIERvZXMgRW1hY3MgdXNlIC1scnN2Zy0yPyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeWVzCiAgRG9lcyBFbWFjcyB1c2UgLWx3ZWJwPyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB5ZXMKICBEb2VzIEVtYWNzIHVzZSAtbHNxbGl0ZTM/ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHllcwogIERvZXMgRW1hY3MgdXNlIGNhaXJvPyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm8KICBEb2VzIEVtYWNzIHVzZSAtbGxjbXMyPyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllcwogIERvZXMgRW1hY3MgdXNlIGltYWdl bWFnaWNrPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm8KICBEb2VzIEVtYWNzIHVzZSBu YXRpdmUgQVBJcyBmb3IgaW1hZ2VzPyAgICAgICAgICAgICAgICAgIHllcyAobnMpCiAgRG9lcyBF bWFjcyBzdXBwb3J0IHNvdW5kPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubwogIERv ZXMgRW1hY3MgdXNlIC1sZ3BtPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm8K ICBEb2VzIEVtYWNzIHVzZSAtbGRidXM/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHllcwogIERvZXMgRW1hY3MgdXNlIC1sZ2NvbmY/ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbm8KICBEb2VzIEVtYWNzIHVzZSBHU2V0dGluZ3M/ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5vCiAgRG9lcyBFbWFjcyB1c2UgYSBmaWxlIG5vdGlmaWNhdGlvbiBsaWJyYXJ5 PyAgICAgICAgICAgICB5ZXMgKGtxdWV1ZSkKICBEb2VzIEVtYWNzIHVzZSBhY2Nlc3MgY29udHJv bCBsaXN0cz8gICAgICAgICAgICAgICAgICAgIHllcwogIERvZXMgRW1hY3MgdXNlIC1sc2VsaW51 eD8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm8KICBEb2VzIEVtYWNzIHVzZSAtbGdu dXRscz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllcwogIERvZXMgRW1hY3MgdXNl IC1seG1sMj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzCiAgRG9lcyBFbWFj cyB1c2UgLWxmcmVldHlwZT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubwogIERvZXMg RW1hY3MgdXNlIEhhcmZCdXp6PyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm8KICBE b2VzIEVtYWNzIHVzZSAtbG0xN24tZmx0PyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v CiAgRG9lcyBFbWFjcyB1c2UgLWxvdGY/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBubwogIERvZXMgRW1hY3MgdXNlIC1seGZ0PyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbm8KICBEb2VzIEVtYWNzIHVzZSAtbHN5c3RlbWQ/ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5vCiAgRG9lcyBFbWFjcyB1c2UgLWx0cmVlLXNpdHRlcj8gICAgICAgICAgICAg ICAgICAgICAgICAgICB5ZXMKICBEb2VzIEVtYWNzIHVzZSB0aGUgR01QIGxpYnJhcnk/ICAgICAg ICAgICAgICAgICAgICAgICAgIHllcwogIERvZXMgRW1hY3MgZGlyZWN0bHkgdXNlIHpsaWI/ICAg ICAgICAgICAgICAgICAgICAgICAgICAgeWVzCiAgRG9lcyBFbWFjcyBoYXZlIGR5bmFtaWMgbW9k dWxlcyBzdXBwb3J0PyAgICAgICAgICAgICAgICB5ZXMKICBEb2VzIEVtYWNzIHVzZSB0b29sa2l0 IHNjcm9sbCBiYXJzPyAgICAgICAgICAgICAgICAgICAgIHllcwogIERvZXMgRW1hY3Mgc3VwcG9y dCBYd2lkZ2V0cz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm8KICBEb2VzIEVtYWNzIGhh dmUgdGhyZWFkaW5nIHN1cHBvcnQgaW4gbGlzcD8gICAgICAgICAgICAgIHllcwogIERvZXMgRW1h Y3Mgc3VwcG9ydCB0aGUgcG9ydGFibGUgZHVtcGVyPyAgICAgICAgICAgICAgICAgeWVzCiAgV2hp Y2ggZHVtcGluZyBzdHJhdGVneSBkb2VzIEVtYWNzIHVzZT8gICAgICAgICAgICAgICAgICBwZHVt cGVyCiAgRG9lcyBFbWFjcyBoYXZlIG5hdGl2ZSBsaXNwIGNvbXBpbGVyPyAgICAgICAgICAgICAg ICAgICBubwogIERvZXMgRW1hY3MgdXNlIHZlcnNpb24gMiBvZiB0aGUgWCBJbnB1dCBFeHRlbnNp b24/ICAgICAgbm8KICBEb2VzIEVtYWNzIGdlbmVyYXRlIGEgc21hbGxlci1zaXplIEphcGFuZXNl IGRpY3Rpb25hcnk/IG5vCgoKClJ1biAnZ21ha2UnIHRvIGJ1aWxkIEVtYWNzLCB0aGVuIHJ1biAn c3JjL2VtYWNzJyB0byB0ZXN0IGl0LgpSdW4gJ2dtYWtlIGluc3RhbGwnIGluIG9yZGVyIHRvIGJ1 aWxkIGFuIGFwcGxpY2F0aW9uIGJ1bmRsZS4KVGhlIGFwcGxpY2F0aW9uIHdpbGwgZ28gdG8gbmV4 dHN0ZXAvRW1hY3MuYXBwIGFuZCBjYW4gYmUgcnVuIG9yIG1vdmVkCmZyb20gdGhlcmUuClRoZSBh cHBsaWNhdGlvbiB3aWxsIGJlIGZ1bGx5IHNlbGYtY29udGFpbmVkLgoKY29uZmlndXJlOiBjcmVh dGluZyAuL2NvbmZpZy5zdGF0dXMKY29uZmlnLnN0YXR1czogY3JlYXRpbmcgc3JjL3ZlcmJvc2Uu bWsKY29uZmlnLnN0YXR1czogY3JlYXRpbmcgc3JjL2VtYWNzLW1vZHVsZS5oCmNvbmZpZy5zdGF0 dXM6IGNyZWF0aW5nIG5leHRzdGVwL0NvY29hL0VtYWNzLmJhc2UvQ29udGVudHMvSW5mby5wbGlz dApjb25maWcuc3RhdHVzOiBjcmVhdGluZyBuZXh0c3RlcC9Db2NvYS9FbWFjcy5iYXNlL0NvbnRl bnRzL1Jlc291cmNlcy9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzCmNvbmZpZy5zdGF0 dXM6IGNyZWF0aW5nIE1ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNyZWF0aW5nIGxpYi9nbnVsaWIu bWsKY29uZmlnLnN0YXR1czogY3JlYXRpbmcgLi9kb2MvbWFuL2VtYWNzLjEKY29uZmlnLnN0YXR1 czogY3JlYXRpbmcgbGliL01ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNyZWF0aW5nIGxpYi1zcmMv TWFrZWZpbGUKY29uZmlnLnN0YXR1czogY3JlYXRpbmcgb2xkWE1lbnUvTWFrZWZpbGUKY29uZmln LnN0YXR1czogY3JlYXRpbmcgc3JjL01ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNyZWF0aW5nIGx3 bGliL01ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNyZWF0aW5nIG5leHRzdGVwL01ha2VmaWxlCmNv bmZpZy5zdGF0dXM6IGNyZWF0aW5nIG50L01ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNyZWF0aW5n IGRvYy9lbWFjcy9NYWtlZmlsZQpjb25maWcuc3RhdHVzOiBjcmVhdGluZyBkb2MvbWlzYy9NYWtl ZmlsZQpjb25maWcuc3RhdHVzOiBjcmVhdGluZyBkb2MvbGlzcGludHJvL01ha2VmaWxlCmNvbmZp Zy5zdGF0dXM6IGNyZWF0aW5nIGRvYy9saXNwcmVmL01ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNy ZWF0aW5nIGxpc3AvTWFrZWZpbGUKY29uZmlnLnN0YXR1czogY3JlYXRpbmcgbGVpbS9NYWtlZmls ZQpjb25maWcuc3RhdHVzOiBjcmVhdGluZyB0ZXN0L01ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNy ZWF0aW5nIHRlc3QvbWFudWFsL25vdmVybGF5L01ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNyZWF0 aW5nIHRlc3QvaW5mcmEvTWFrZWZpbGUKY29uZmlnLnN0YXR1czogY3JlYXRpbmcgYWRtaW4vY2hh cnNldHMvTWFrZWZpbGUKY29uZmlnLnN0YXR1czogY3JlYXRpbmcgYWRtaW4vdW5pZGF0YS9NYWtl ZmlsZQpjb25maWcuc3RhdHVzOiBjcmVhdGluZyBhZG1pbi9ncmFtbWFycy9NYWtlZmlsZQpjb25m aWcuc3RhdHVzOiBjcmVhdGluZyBqYXZhL01ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNyZWF0aW5n IGNyb3NzL01ha2VmaWxlCmNvbmZpZy5zdGF0dXM6IGNyZWF0aW5nIGphdmEvQW5kcm9pZE1hbmlm ZXN0LnhtbApjb25maWcuc3RhdHVzOiBjcmVhdGluZyBzcmMvY29uZmlnLmgKY29uZmlnLnN0YXR1 czogZXhlY3V0aW5nIHNyYy9lcGF0aHMuaCBjb21tYW5kcwpjb25maWcuc3RhdHVzOiBleGVjdXRp bmcgc3JjLy5nZGJpbml0IGNvbW1hbmRzCmNvbmZpZy5zdGF0dXM6IGV4ZWN1dGluZyBkb2MvZW1h Y3MvZW1hY3N2ZXIudGV4aSBjb21tYW5kcwpjb25maWcuc3RhdHVzOiBleGVjdXRpbmcgZXRjLXJl ZmNhcmRzLWVtYWNzdmVyLnRleCBjb21tYW5kcwpnbWFrZSBhY3R1YWwtYWxsIHx8IGdtYWtlIGFk dmljZS1vbi1mYWlsdXJlIG1ha2UtdGFyZ2V0PWFsbCBleGl0LXN0YXR1cz0kPwpnbWFrZSAtQyBs aWIgYWxsCmdtYWtlIC1DIGRvYy9saXNwcmVmIGluZm8KZ21ha2UgLUMgZG9jL2xpc3BpbnRybyBp bmZvCmdtYWtlIC1DIGRvYy9lbWFjcyBpbmZvCi9vcHQvaG9tZWJyZXcvYmluL2dta2RpciAtcCAu Li8uLi9pbmZvCi9vcHQvaG9tZWJyZXcvYmluL2dta2RpciAtcCAuLi8uLi9pbmZvCi9vcHQvaG9t ZWJyZXcvYmluL2dta2RpciAtcCAuLi8uLi9pbmZvCmNwIGVsaXNwX3R5cGVfaGllcmFyY2h5LnR4 dCAuLi8uLi9pbmZvL2VsaXNwX3R5cGVfaGllcmFyY2h5LnR4dApjcCBlbGlzcF90eXBlX2hpZXJh cmNoeS5qcGcgLi4vLi4vaW5mby9lbGlzcF90eXBlX2hpZXJhcmNoeS5qcGcKICBHRU4gICAgICBp bmZvL2RpcgogIEdFTiAgICAgIGJ5dGVzd2FwLmgKICBHRU4gICAgICBhbGxvY2EuaAogIEdFTiAg ICAgIGVuZGlhbi5oCiAgR0VOICAgICAgZGlyZW50LmgKICBHRU4gICAgICBhc3NlcnQuaAogIEdF TiAgICAgIGdldG9wdC5oCiAgR0VOICAgICAgZmNudGwuaAogIEdFTiAgICAgIG1hbGxvYy9keW5h cnJheS5nbC5oCiAgR0VOICAgICAgbWFsbG9jL3NjcmF0Y2hfYnVmZmVyLmdsLmgKICBHRU4gICAg ICBtYWxsb2MvZHluYXJyYXktc2tlbGV0b24uZ2wuaAogIEdFTiAgICAgIGllZWU3NTQuaAogIEdF TiAgICAgIGdldG9wdC1jZGVmcy5oCiAgR0VOICAgICAgaW50dHlwZXMuaAogIEdFTiAgICAgIHN0 ZGNrZGludC5oCiAgR0VOICAgICAgc3RkYml0LmgKICBHRU4gICAgICBzaWduYWwuaAogIEdFTiAg ICAgIGxpbWl0cy5oCiAgR0VOICAgICAgc3RkZGVmLmgKICBHRU4gICAgICBzdGRpbnQuaAogIEdF TiAgICAgIHN5cy9yYW5kb20uaAogIEdFTiAgICAgIHN5cy9zZWxlY3QuaAogIEdFTiAgICAgIHN5 cy9zdGF0LmgKICBHRU4gICAgICBzdHJpbmcuaAogIEdFTiAgICAgIHN5cy90aW1lLmgKICBHRU4g ICAgICBzeXMvdHlwZXMuaAogIEdFTiAgICAgIHN0ZGxpYi5oCiAgR0VOICAgICAgc3RkaW8uaAog IEdFTiAgICAgIHRpbWUuaAogIEdFTiAgICAgIHVuaXN0ZC5oCiAgQ0MgICAgICAgZmluZ2VycHJp bnQubwogIENDICAgICAgIGFjbC1lcnJuby12YWxpZC5vCiAgQ0MgICAgICAgYWNsX2VudHJpZXMu bwogIENDICAgICAgIGFjbC1pbnRlcm5hbC5vCiAgQ0MgICAgICAgbWVtbWVtLm8KICBDQyAgICAg ICBta3RpbWUubwogIENDICAgICAgIGdldC1wZXJtaXNzaW9ucy5vCiAgQ0MgICAgICAgYWxsb2Nh dG9yLm8KICBDQyAgICAgICBzZXQtcGVybWlzc2lvbnMubwogIENDICAgICAgIGJpbmFyeS1pby5v CiAgQ0MgICAgICAgb3BlbmF0LXByb2MubwogIENDICAgICAgIGJvb3QtdGltZS5vCiAgQ0MgICAg ICAgYnl0ZXN3YXAubwogIENDICAgICAgIGMtc3RyY2FzZWNtcC5vCiAgQ0MgICAgICAgYy1jdHlw ZS5vCiAgQ0MgICAgICAgYy1zdHJuY2FzZWNtcC5vCiAgQ0MgICAgICAgY2FyZWFkbGlua2F0Lm8K ICBDQyAgICAgICBjYW5vbmljYWxpemUtbGdwbC5vCiAgQ0MgICAgICAgY2xvZXhlYy5vCiAgQ0Mg ICAgICAgY29weS1maWxlLXJhbmdlLm8KICBDQyAgICAgICBjbG9zZS1zdHJlYW0ubwogIENDICAg ICAgIG1kNS1zdHJlYW0ubwogIENDICAgICAgIG1kNS5vCiAgQ0MgICAgICAgZHRvdGltZXNwZWMu bwogIENDICAgICAgIGVuZGlhbi5vCiAgQ0MgICAgICAgZHRvYXN0ci5vCiAgQ0MgICAgICAgc2hh MS5vCiAgQ0MgICAgICAgZXVpZGFjY2Vzcy5vCiAgQ0MgICAgICAgZmFjY2Vzc2F0Lm8KICBDQyAg ICAgICBmY250bC5vCiAgQ0MgICAgICAgc2hhMjU2Lm8KICBDQyAgICAgICBmaWxlLWhhcy1hY2wu bwogIENDICAgICAgIGZpbGVtb2RlLm8KICBDQyAgICAgICBmaWxldmVyY21wLm8KICBDQyAgICAg ICBzaGE1MTIubwogIENDICAgICAgIGZwZW5kaW5nLm8KICBDQyAgICAgICBmcmVlLm8KICBDQyAg ICAgICBmdXRpbWVucy5vCiAgQ0MgICAgICAgZnN0YXRhdC5vCiAgQ0MgICAgICAgZnN1c2FnZS5v CiAgQ0MgICAgICAgZ2V0Z3JvdXBzLm8KICBDQyAgICAgICBnZXRvcHQxLm8KICBDQyAgICAgICBn ZXRvcHQubwogIENDICAgICAgIGdldHRpbWUubwogIENDICAgICAgIG1hbGxvYy9keW5hcnJheV9h dF9mYWlsdXJlLm8KICBDQyAgICAgICBnZXRyYW5kb20ubwogIENDICAgICAgIG1hbGxvYy9keW5h cnJheV9lbXBsYWNlX2VubGFyZ2UubwogIENDICAgICAgIG1hbGxvYy9keW5hcnJheV9maW5hbGl6 ZS5vCiAgQ0MgICAgICAgbWFsbG9jL2R5bmFycmF5X3Jlc2l6ZV9jbGVhci5vCiAgQ0MgICAgICAg bWFsbG9jL2R5bmFycmF5X3Jlc2l6ZS5vCiAgQ0MgICAgICAgbWFsbG9jL3NjcmF0Y2hfYnVmZmVy X2dyb3cubwogIENDICAgICAgIG1hbGxvYy9zY3JhdGNoX2J1ZmZlcl9zZXRfYXJyYXlfc2l6ZS5v CiAgQ0MgICAgICAgbWFsbG9jL3NjcmF0Y2hfYnVmZmVyX2dyb3dfcHJlc2VydmUubwogIENDICAg ICAgIGdyb3VwLW1lbWJlci5vCiAgQ0MgICAgICAgbHN0YXQubwogIENDICAgICAgIG1lbXBjcHku bwogIENDICAgICAgIG1lbXJjaHIubwogIENDICAgICAgIG1lbXNldF9leHBsaWNpdC5vCiAgQ0Mg ICAgICAgbmFub3NsZWVwLm8KICBDQyAgICAgICBucHJvYy5vCiAgQ0MgICAgICAgcGlwZTIubwog IENDICAgICAgIG9wZW4ubwogIENDICAgICAgIHJhd21lbWNoci5vCiAgQ0MgICAgICAgcWNvcHkt YWNsLm8KICBDQyAgICAgICByZWFkbGluay5vCiAgQ0MgICAgICAgbnN0cmZ0aW1lLm8KICBDQyAg ICAgICByZWFkbGlua2F0Lm8KICBDQyAgICAgICBzaWcyc3RyLm8KICBDQyAgICAgICBzaWdkZXNj cl9ucC5vCiAgQ0MgICAgICAgc3RhdC10aW1lLm8KICBDQyAgICAgICBzdGRiaXQubwogIENDICAg ICAgIHN0ZGNfYml0X3dpZHRoLm8KICBDQyAgICAgICBzdGRjX2NvdW50X29uZXMubwogIENDICAg ICAgIHN0ZGNfbGVhZGluZ196ZXJvcy5vCiAgQ0MgICAgICAgc3RkY190cmFpbGluZ196ZXJvcy5v CiAgQ0MgICAgICAgc3RkbGliLm8KICBDQyAgICAgICBzeW1saW5rLm8KICBDQyAgICAgICB0ZW1w bmFtZS5vCiAgQ0MgICAgICAgdGltZV9yei5vCiAgQ0MgICAgICAgdGltZWdtLm8KICBDQyAgICAg ICB0aW1lc3BlYy5vCiAgQ0MgICAgICAgdGltZXNwZWMtYWRkLm8KICBHRU4gICAgICAuLi8uLi9p bmZvL2VpbnRyLmluZm8KICBDQyAgICAgICB0aW1lc3BlYy1zdWIubwogIENDICAgICAgIHU2NC5v CiAgQ0MgICAgICAgdW5pc3RkLm8KICBDQyAgICAgICB1dGltZW5zLm8KICBDQyAgICAgICB1dGlt ZW5zYXQubwogIENDICAgICAgIG9wZW5hdC1kaWUubwogIENDICAgICAgIHNhdmUtY3dkLm8KICBD QyAgICAgICByZWdleC5vCiAgQVIgICAgICAgbGliZ251LmEKZ21ha2UgLUMgbGliLXNyYyBhbGwK ICBDQ0xEICAgICBtYWtlLWZpbmdlcnByaW50CiAgQ0NMRCAgICAgaGV4bAogIENDTEQgICAgIG1h a2UtZG9jZmlsZQogIENDTEQgICAgIGVtYWNzY2xpZW50CiAgQ0NMRCAgICAgZWJyb3dzZQogIEND TEQgICAgIGV0YWdzCmdtYWtlIC1DIHNyYyBCSU5fREVTVERJUj0nL1VzZXJzL2dlcmQvZW1hY3Mv Z2l0aHViL21hc3Rlci9uZXh0c3RlcC9FbWFjcy5hcHAvQ29udGVudHMvTWFjT1MvJyBcCgkgRUxO X0RFU1RESVI9Jy9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbmV4dHN0ZXAvRW1hY3Mu YXBwL0NvbnRlbnRzL0ZyYW1ld29ya3MvJyBhbGwKICBHRU4gICAgICAvVXNlcnMvZ2VyZC9lbWFj cy9naXRodWIvbWFzdGVyL3NyYy9saXNwLm1rCmdtYWtlIC1DIC4uL2FkbWluL2NoYXJzZXRzIGFs bApnbWFrZSAtQyAuLi9hZG1pbi91bmlkYXRhIGNoYXJzY3JpcHQuZWwKZ21ha2UgLUMgLi4vYWRt aW4vdW5pZGF0YSBlbW9qaS16d2ouZWwKZ21ha2UgLUMgLi4vYWRtaW4vY2hhcnNldHMgY3A1MTkz Mi5lbApnbWFrZSAtQyAuLi9hZG1pbi9jaGFyc2V0cyBldWNqcC1tcy5lbAogIEdFTiAgICAgIC4u Ly4uL2xpc3AvaW50ZXJuYXRpb25hbC9jaGFyc2NyaXB0LmVsCiAgR0VOICAgICAgLi4vLi4vZXRj L2NoYXJzZXRzLzg4NTktMi5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvODg1OS0z Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9DUDkzMi0yQllURS5tYXAKICBHRU4g ICAgICAuLi8uLi9saXNwL2ludGVybmF0aW9uYWwvZW1vamktendqLmVsCiAgR0VOICAgICAgLi4v Li4vbGlzcC9pbnRlcm5hdGlvbmFsL2V1Y2pwLW1zLmVsCiAgR0VOICAgICAgLi4vLi4vZXRjL2No YXJzZXRzLzg4NTktNC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvODg1OS01Lm1h cAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy84ODU5LTYubWFwCiAgR0VOICAgICAgLi4v Li4vbGlzcC9pbnRlcm5hdGlvbmFsL2NwNTE5MzIuZWwKICBHRU4gICAgICAuLi8uLi9ldGMvY2hh cnNldHMvODg1OS03Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy84ODU5LTkubWFw CiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzLzg4NTktMTEubWFwCiAgR0VOICAgICAgLi4v Li4vZXRjL2NoYXJzZXRzLzg4NTktOC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMv ODg1OS0xMC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvODg1OS0xMy5tYXAKICBH RU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvODg1OS0xNC5tYXAKICBHRU4gICAgICAuLi8uLi9l dGMvY2hhcnNldHMvSUJNMDM3Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy84ODU5 LTE1Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk0wMzgubWFwCiAgR0VOICAg ICAgLi4vLi4vZXRjL2NoYXJzZXRzLzg4NTktMTYubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2No YXJzZXRzL0lCTTI1Ni5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvSUJNMjczLm1h cAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk0yNzUubWFwCiAgR0VOICAgICAgLi4v Li4vZXRjL2NoYXJzZXRzL0lCTTI3Ny5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMv SUJNMjc0Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk0yNzgubWFwCiAgR0VO ICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lCTTI4MC5tYXAKICBHRU4gICAgICBnbG9iYWxzLmgK ICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvSUJNMjgxLm1hcAogIEdFTiAgICAgIC4uLy4u L2V0Yy9jaGFyc2V0cy9JQk0yOTAubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lC TTI5Ny5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvSUJNMjg0Lm1hcAogIEdFTiAg ICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk0yODUubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2No YXJzZXRzL0lCTTQyMC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvSUJNNDIzLm1h cAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk00MjQubWFwCiAgR0VOICAgICAgLi4v Li4vZXRjL2NoYXJzZXRzL0lCTTQzNy5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMv SUJNNTAwLm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk04NTEubWFwCiAgR0VO ICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lCTTg1MC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMv Y2hhcnNldHMvSUJNODUyLm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk04NTUu bWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lCTTg1Ni5tYXAKICBHRU4gICAgICAu Li8uLi9ldGMvY2hhcnNldHMvSUJNODU3Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0 cy9JQk04NjEubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lCTTg2MC5tYXAKICBH RU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvSUJNODYyLm1hcAogIEdFTiAgICAgIC4uLy4uL2V0 Yy9jaGFyc2V0cy9JQk04NjMubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lCTTg2 NC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvSUJNODY2Lm1hcAogIEdFTiAgICAg IC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk04NjUubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJz ZXRzL0lCTTg2OC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvSUJNODY5Lm1hcAog IEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk04NzAubWFwCiAgR0VOICAgICAgLi4vLi4v ZXRjL2NoYXJzZXRzL0lCTTg3MS5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvSUJN ODc0Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk04NzUubWFwCiAgR0VOICAg ICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lCTTg5MS5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hh cnNldHMvSUJNODgwLm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9JQk05MDMubWFw CiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lCTTkwNC5tYXAKICBHRU4gICAgICAuLi8u Li9ldGMvY2hhcnNldHMvSUJNOTA1Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9J Qk05MTgubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lCTTEwMDQubWFwCiAgR0VO ICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0lCTTEwMjYubWFwCiAgR0VOICAgICAgYnVpbGRvYmou aAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9DUDczNy5tYXAKICBHRU4gICAgICAuLi8u Li9ldGMvY2hhcnNldHMvSUJNMTA0Ny5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMv Q1A3NzUubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0NQMTEyNS5tYXAKICBDQyAg ICAgICBzY3JvbGwubwogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9DUDEyNTAubWFwCiAg R0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0NQMTI1MS5tYXAKICBHRU4gICAgICAuLi8uLi9l dGMvY2hhcnNldHMvQ1AxMjUyLm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9DUDEy NTMubWFwCiAgQ0MgICAgICAgbWVudS5vCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0NQ MTI1NC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvQ1AxMjU1Lm1hcAogIENDICAg ICAgIGNoYXJzZXQubwogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9DUDEyNTYubWFwCiAg R0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0NQMTI1Ny5tYXAKICBDQyAgICAgICBjYXRlZ29y eS5vCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0NQMTI1OC5tYXAKICBHRU4gICAgICAu Li8uLi9ldGMvY2hhcnNldHMvQ1AxMDAwNy5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNl dHMvQ1A3MjAubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0NQODU4Lm1hcAogIEND ICAgICAgIGZyYW1lLm8KICBDQyAgICAgICBkaXNwbmV3Lm8KICBHRU4gICAgICAuLi8uLi9ldGMv Y2hhcnNldHMvR0IyMzEyLm1hcAogIENDICAgICAgIGNoYXJhY3Rlci5vCiAgR0VOICAgICAgLi4v Li4vZXRjL2NoYXJzZXRzL0dCSy5tYXAKICBDQyAgICAgICBjY2wubwogIENDICAgICAgIGNoYXJ0 YWIubwogIENDICAgICAgIGNtLm8KICBDQyAgICAgICBiaWRpLm8KICBHRU4gICAgICAuLi8uLi9l dGMvY2hhcnNldHMvQklHNS5tYXAKICBDQyAgICAgICB3aW5kb3cubwogIENDICAgICAgIHRlcm1p bmFsLm8KICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvR0IxODAzMDIubWFwCiAgR0VOICAg ICAgLi4vLi4vZXRjL2NoYXJzZXRzL0JJRzUtSEtTQ1MubWFwCiAgR0VOICAgICAgLi4vLi4vZXRj L2NoYXJzZXRzL0NOUy0xLm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9DTlMtMi5t YXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvQ05TLTMubWFwCiAgR0VOICAgICAgLi4v Li4vZXRjL2NoYXJzZXRzL0NOUy00Lm1hcAogIENDICAgICAgIHRlcm0ubwogIEdFTiAgICAgIC4u Ly4uL2V0Yy9jaGFyc2V0cy9DTlMtNS5tYXAKICBDQyAgICAgICBkYnVzYmluZC5vCiAgQ0MgICAg ICAgZW1hY3MubwogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9DTlMtNi5tYXAKICBDQyAg ICAgICBtYWNyb3MubwogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9DTlMtNy5tYXAKICBH RU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvQ05TLUYubWFwCiAgR0VOICAgICAgLi4vLi4vZXRj L2NoYXJzZXRzL0pJU1gwMjAxLm1hcAogIENDICAgICAgIGJpZ251bS5vCiAgQ0MgICAgICAgc3lz ZGVwLm8KICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvSklTWDAyMDgubWFwCiAgQ0MgICAg ICAgeGZhY2VzLm8KICBDQyAgICAgICBrZXltYXAubwogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFy c2V0cy9KSVNYMDIxMi5tYXAKICBDQyAgICAgICBjb2RpbmcubwogIEdFTiAgICAgIC4uLy4uL2V0 Yy9jaGFyc2V0cy9KSVNYMjEzMi5tYXAKICBDQyAgICAgICBmaWxlbG9jay5vCiAgR0VOICAgICAg Li4vLi4vZXRjL2NoYXJzZXRzL0pJU0M2MjI2Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFy c2V0cy9KSVNYMjEzQS5tYXAKICBDQyAgICAgICBtYXJrZXIubwogIEdFTiAgICAgIC4uLy4uL2V0 Yy9jaGFyc2V0cy9LU0M1NjAxLm1hcAogIENDICAgICAgIGluc2RlbC5vCiAgR0VOICAgICAgLi4v Li4vZXRjL2NoYXJzZXRzL0tTQzU2MzYubWFwCiAgQ0MgICAgICAgYnVmZmVyLm8KICBDQyAgICAg ICBkaXJlZC5vCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0pPSEFCLm1hcAogIENDICAg ICAgIG1pbmlidWYubwogIENDICAgICAgIGNtZHMubwogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFy c2V0cy9LT0ktOC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvS09JOC1SLm1hcAog IENDICAgICAgIGNhc2V0YWIubwogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9LT0k4LVUu bWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0tPSTgtVC5tYXAKICBHRU4gICAgICAu Li8uLi9ldGMvY2hhcnNldHMvQUxURVJOQVRJVk5ZSi5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMv Y2hhcnNldHMvTUlLLm1hcAogIENDICAgICAgIGNhc2VmaWRkbGUubwogIEdFTiAgICAgIC4uLy4u L2V0Yy9jaGFyc2V0cy9QVENQMTU0Lm1hcAogIENDICAgICAgIGZpbGVpby5vCiAgR0VOICAgICAg Li4vLi4vZXRjL2NoYXJzZXRzL1RJUy02MjAubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJz ZXRzL1ZJU0NJSS5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvVlNDSUkubWFwCiAg R0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL1ZTQ0lJLTIubWFwCiAgR0VOICAgICAgLi4vLi4v ZXRjL2NoYXJzZXRzL0tBLVBTLm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9LQS1B Q0FERU1ZLm1hcAogIENDICAgICAgIGtleWJvYXJkLm8KICBHRU4gICAgICAuLi8uLi9ldGMvY2hh cnNldHMvSFAtUk9NQU44Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9ORVhUU1RF UC5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvTUFDSU5UT1NILm1hcAogIENDICAg ICAgIHVuZG8ubwogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9FQkNESUNVSy5tYXAKICBH RU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvRUJDRElDVVMubWFwCiAgR0VOICAgICAgLi4vLi4v ZXRjL2NoYXJzZXRzL3N0ZGVuYy5tYXAKICBDQyAgICAgICBpbmRlbnQubwogIEdFTiAgICAgIC4u Ly4uL2V0Yy9jaGFyc2V0cy9zeW1ib2wubWFwCiAgR0VOICAgICAgLi4vLi4vaW5mby9lbWFjcy5p bmZvCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0JJRzUtMS5tYXAKICBHRU4gICAgICAu Li8uLi9ldGMvY2hhcnNldHMvTVVMRS1ldGhpb3BpYy5tYXAKICBDQyAgICAgICBzZWFyY2gubwog IEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9CSUc1LTIubWFwCiAgR0VOICAgICAgLi4vLi4v ZXRjL2NoYXJzZXRzL0NQOTQ5LTJCWVRFLm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0 cy9NVUxFLWlwYS5tYXAKICBHRU4gICAgICAuLi8uLi9ldGMvY2hhcnNldHMvTVVMRS1pczEzMTk0 Lm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFyc2V0cy9NVUxFLXNpc2hlbmcubWFwCiAgR0VO ICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL01VTEUtdGliZXRhbi5tYXAKICBHRU4gICAgICAuLi8u Li9ldGMvY2hhcnNldHMvTVVMRS1sdmlzY2lpLm1hcAogIEdFTiAgICAgIC4uLy4uL2V0Yy9jaGFy c2V0cy9NVUxFLXV2aXNjaWkubWFwCiAgR0VOICAgICAgLi4vLi4vZXRjL2NoYXJzZXRzL0dCMTgw MzA0Lm1hcAogIENDICAgICAgIGRvYy5vCiAgQ0MgICAgICAgY2FsbGludC5vCiAgR0VOICAgICAg Li4vLi4vZXRjL2NoYXJzZXRzL0pJU1gyMTMxLm1hcAogIEdFTiAgICAgIGNoYXJzZXRzLnN0YW1w CiAgQ0MgICAgICAgZmxvYXRmbnMubwogIENDICAgICAgIGRhdGEubwogIENDICAgICAgIGFsbG9j Lm8KICBDQyAgICAgICBwZHVtcGVyLm8KICBDQyAgICAgICBzb3J0Lm8KICBDQyAgICAgICBlZGl0 Zm5zLm8KICBDQyAgICAgICBldmFsLm8KICBDQyAgICAgICByZWdleC1lbWFjcy5vCiAgQ0MgICAg ICAgcHJpbnQubwogIENDICAgICAgIGNvbXAubwogIENDICAgICAgIGR5bmxpYi5vCiAgQ0MgICAg ICAgYnl0ZWNvZGUubwogIENDICAgICAgIGVtYWNzLW1vZHVsZS5vCiAgQ0MgICAgICAgbHJlYWQu bwogIENDICAgICAgIGZvbnQubwogIENDICAgICAgIHhkaXNwLm8KICBDQyAgICAgICBmbnMubwog IENDICAgICAgIGdudXRscy5vCiAgQ0MgICAgICAgc291bmQubwogIENDICAgICAgIHJlZ2lvbi1j YWNoZS5vCiAgQ0MgICAgICAgY2FsbHByb2MubwogIENDICAgICAgIGF0aW1lci5vCiAgQ0MgICAg ICAgdGltZWZucy5vCiAgQ0MgICAgICAgeG1sLm8KICBDQyAgICAgICBkb3BybnQubwogIENDICAg ICAgIHN5bnRheC5vCiAgQ0MgICAgICAgbGNtcy5vCiAgQ0MgICAgICAgaW50ZXJ2YWxzLm8KICBD QyAgICAgICBkZWNvbXByZXNzLm8KICBDQyAgICAgICB0ZXh0cHJvcC5vCiAgQ0MgICAgICAgcHJv ZmlsZXIubwogIENDICAgICAgIGtxdWV1ZS5vCiAgQ0MgICAgICAgY29tcG9zaXRlLm8KICBDQyAg ICAgICB0aHJlYWQubwogIENDICAgICAgIHN5c3RocmVhZC5vCiAgQ0MgICAgICAgcHJvY2Vzcy5v CiAgQ0MgICAgICAgc3FsaXRlLm8KICBDQyAgICAgICBpdHJlZS5vCiAgQ0MgICAgICAganNvbi5v CiAgQ0MgICAgICAgZm9udHNldC5vCiAgQ0MgICAgICAgZnJpbmdlLm8KICBDQyAgICAgICB0ZXJt aW5mby5vCiAgQ0MgICAgICAgdHJlZXNpdC5vCiAgQ0MgICAgICAgbnNzZWxlY3QubwogIENDICAg ICAgIG5zbWVudS5vCiAgQ0MgICAgICAgbnNpbWFnZS5vCiAgQ0MgICAgICAgbnNmbnMubwogIEND ICAgICAgIGltYWdlLm8KICBDQyAgICAgICBtYWNmb250Lm8KICBDQyAgICAgICBuc3Rlcm0ubwog IEdFTiAgICAgIC4uL2V0Yy9ET0MKICBDQ0xEICAgICB0ZW1hY3MKY29kZXNpZ24gLXMgLSAtZiB0 ZW1hY3MudG1wCnRlbWFjcy50bXA6IHJlcGxhY2luZyBleGlzdGluZyBzaWduYXR1cmUKL29wdC9o b21lYnJldy9iaW4vZ21rZGlyIC1wIC4uL2V0YwpnbWFrZSAtQyAuLi9saXNwIHVwZGF0ZS1zdWJk aXJzCmNwIC1mIHRlbWFjcyBib290c3RyYXAtZW1hY3MKY29kZXNpZ24gLXMgLSAtZiBib290c3Ry YXAtZW1hY3MKYm9vdHN0cmFwLWVtYWNzOiByZXBsYWNpbmcgZXhpc3Rpbmcgc2lnbmF0dXJlCnJt IC1mIGJvb3RzdHJhcC1lbWFjcy5wZG1wCiAgR0VOICAgICAgLi4vLi4vaW5mby9lbGlzcC5pbmZv Ci4vdGVtYWNzIC0tYmF0Y2ggIC1sIGxvYWR1cCAtLXRlbWFjcz1wYm9vdHN0cmFwIFwKCS0tYmlu LWRlc3QgJy9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbmV4dHN0ZXAvRW1hY3MuYXBw L0NvbnRlbnRzL01hY09TLycgLS1lbG4tZGVzdCAnL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21h c3Rlci9uZXh0c3RlcC9FbWFjcy5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8nCkxvYWRpbmcgbG9h ZHVwLmVsIChzb3VyY2UpLi4uCkR1bXAgbW9kZTogcGJvb3RzdHJhcApVc2luZyBsb2FkLXBhdGgg KC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcCAvVXNlcnMvZ2VyZC9lbWFjcy9n aXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcCAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFz dGVyL2xpc3AvcHJvZ21vZGVzIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9s YW5ndWFnZSAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvaW50ZXJuYXRpb25h bCAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdGV4dG1vZGVzIC9Vc2Vycy9n ZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC92YykKTG9hZGluZyBlbWFjcy1saXNwL2RlYnVn LWVhcmx5IChzb3VyY2UpLi4uCkxvYWRpbmcgZW1hY3MtbGlzcC9ieXRlLXJ1biAoc291cmNlKS4u LgpMb2FkaW5nIGVtYWNzLWxpc3AvYmFja3F1b3RlIChzb3VyY2UpLi4uCkxvYWRpbmcgc3ViciAo c291cmNlKS4uLgpMb2FkaW5nIGtleW1hcCAoc291cmNlKS4uLgpMb2FkaW5nIHZlcnNpb24gKHNv dXJjZSkuLi4KTG9hZGluZyB3aWRnZXQgKHNvdXJjZSkuLi4KTG9hZGluZyBjdXN0b20gKHNvdXJj ZSkuLi4KTG9hZGluZyBlbWFjcy1saXNwL21hcC15bnAgKHNvdXJjZSkuLi4KTG9hZGluZyBpbnRl cm5hdGlvbmFsL211bGUgKHNvdXJjZSkuLi4KTG9hZGluZyBpbnRlcm5hdGlvbmFsL211bGUtY29u ZiAoc291cmNlKS4uLgpMb2FkaW5nIGVudiAoc291cmNlKS4uLgpMb2FkaW5nIGZvcm1hdCAoc291 cmNlKS4uLgpMb2FkaW5nIGJpbmRpbmdzIChzb3VyY2UpLi4uCkxvYWRpbmcgd2luZG93IChzb3Vy Y2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2ZpbGVz LmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9s aXNwL2VtYWNzLWxpc3AvbWFjcm9leHAuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2Vy ZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcC9wY2FzZS5lbCAoc291cmNlKS4u LgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNw L21hY3JvZXhwLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHVi L21hc3Rlci9saXNwL2N1cy1mYWNlLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQv ZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2ZhY2VzLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1Vz ZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xkZWZzLWJvb3QuZWwgKHNvdXJjZSku Li4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvYnV0dG9uLmVs IChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNw L2VtYWNzLWxpc3AvY2wtcHJlbG9hZGVkLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dl cmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxpc3Avb2Nsb3N1cmUuZWwgKHNvdXJj ZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3Avb2JhcnJh eS5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIv bGlzcC9hYmJyZXYuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRo dWIvbWFzdGVyL2xpc3AvaGVscC5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2Vt YWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9qa2EtY21wci1ob29rLmVsIChzb3VyY2UpLi4uCkxvYWRp bmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VwYS1ob29rLmVsIChzb3Vy Y2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2ludGVy bmF0aW9uYWwvbXVsZS1jbWRzLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1h Y3MvZ2l0aHViL21hc3Rlci9saXNwL2Nhc2UtdGFibGUuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAv VXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvaW50ZXJuYXRpb25hbC9jaGFyYWN0 ZXJzLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rl ci9saXNwL2ludGVybmF0aW9uYWwvY2hhcnNjcmlwdC5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9V c2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9pbnRlcm5hdGlvbmFsL2Vtb2ppLXp3 ai5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIv bGlzcC9jb21wb3NpdGUuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9n aXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2UvY2hpbmVzZS5lbCAoc291cmNlKS4uLgpMb2FkaW5n IC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9jeXJpbGxpYy5l bCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlz cC9sYW5ndWFnZS9pbmRpYW4uZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFj cy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2Uvc2luaGFsYS5lbCAoc291cmNlKS4uLgpMb2Fk aW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9lbmdsaXNo LmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9s aXNwL2xhbmd1YWdlL2V0aGlvcGljLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQv ZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xhbmd1YWdlL2V1cm9wZWFuLmVsIChzb3VyY2UpLi4u CkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xhbmd1YWdlL2N6 ZWNoLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rl ci9saXNwL2xhbmd1YWdlL3Nsb3Zhay5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJk L2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9yb21hbmlhbi5lbCAoc291cmNlKS4u LgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9n cmVlay5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0 ZXIvbGlzcC9sYW5ndWFnZS9oZWJyZXcuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2Vy ZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvaW50ZXJuYXRpb25hbC9jcDUxOTMyLmVsIChzb3Vy Y2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2ludGVy bmF0aW9uYWwvZXVjanAtbXMuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFj cy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2UvamFwYW5lc2UuZWwgKHNvdXJjZSkuLi4KTG9h ZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2Uva29yZWFu LmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9s aXNwL2xhbmd1YWdlL2xhby5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNz L2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS90YWktdmlldC5lbCAoc291cmNlKS4uLgpMb2Fk aW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS90aGFpLmVs IChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNw L2xhbmd1YWdlL3RpYmV0YW4uZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFj cy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2UvdmlldG5hbWVzZS5lbCAoc291cmNlKS4uLgpM b2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9taXNj LWxhbmcuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFz dGVyL2xpc3AvbGFuZ3VhZ2UvdXRmLTgtbGFuZy5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vy cy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9nZW9yZ2lhbi5lbCAoc291 cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5n dWFnZS9raG1lci5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1 Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9idXJtZXNlLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1Vz ZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xhbmd1YWdlL2NoYW0uZWwgKHNvdXJj ZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3Vh Z2UvcGhpbGlwcGluZS5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dp dGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9pbmRvbmVzaWFuLmVsIChzb3VyY2UpLi4uCkxvYWRp bmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2luZGVudC5lbCAoc291cmNl KS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1s aXNwL2NsLWdlbmVyaWMuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9n aXRodWIvbWFzdGVyL2xpc3Avc2ltcGxlLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dl cmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxpc3Avc2VxLmVsIChzb3VyY2UpLi4u CkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxpc3Av bmFkdmljZS5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9t YXN0ZXIvbGlzcC9taW5pYnVmZmVyLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQv ZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2ZyYW1lLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1Vz ZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3N0YXJ0dXAuZWwgKHNvdXJjZSkuLi4K TG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdGVybS90dHktY29s b3JzLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rl ci9saXNwL2ZvbnQtY29yZS5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNz L2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL3N5bnRheC5lbCAoc291cmNlKS4uLgpMb2Fk aW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9mb250LWxvY2suZWwgKHNv dXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3Avaml0 LWxvY2suZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFz dGVyL2xpc3AvbW91c2UuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9n aXRodWIvbWFzdGVyL2xpc3Avc2Nyb2xsLWJhci5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vy cy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9zZWxlY3QuZWwgKHNvdXJjZSkuLi4KTG9h ZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcC90aW1l ci5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIv bGlzcC9lbWFjcy1saXNwL2Vhc3ltZW51LmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dl cmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2lzZWFyY2guZWwgKHNvdXJjZSkuLi4KTG9hZGlu ZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvcmZuLWVzaGFkb3cuZWwgKHNv dXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbWVu dS1iYXIuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFz dGVyL2xpc3AvdGFiLWJhci5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNz L2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL2xpc3AuZWwgKHNvdXJjZSkuLi4KTG9hZGlu ZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdGV4dG1vZGVzL3BhZ2UuZWwg KHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3Av cmVnaXN0ZXIuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIv bWFzdGVyL2xpc3AvdGV4dG1vZGVzL3BhcmFncmFwaHMuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAv VXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvcHJvZ21vZGVzL3Byb2ctbW9kZS5l bCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlz cC9lbWFjcy1saXNwL2xpc3AtbW9kZS5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJk L2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC90ZXh0bW9kZXMvdGV4dC1tb2RlLmVsIChzb3VyY2Up Li4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3RleHRtb2Rl cy9maWxsLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21h c3Rlci9saXNwL25ld2NvbW1lbnQuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9l bWFjcy9naXRodWIvbWFzdGVyL2xpc3AvcmVwbGFjZS5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9V c2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL3RhYnVsYXRlZC1s aXN0LmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rl ci9saXNwL2J1ZmYtbWVudS5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNz L2dpdGh1Yi9tYXN0ZXIvbGlzcC9mcmluZ2UuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMv Z2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcC9yZWdleHAtb3B0LmVsIChz b3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2lt YWdlLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rl ci9saXNwL2ludGVybmF0aW9uYWwvZm9udHNldC5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vy cy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9kbmQuZWwgKHNvdXJjZSkuLi4KTG9hZGlu ZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdG9vbC1iYXIuZWwgKHNvdXJj ZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdGVybS9j b21tb24td2luLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHVi L21hc3Rlci9saXNwL213aGVlbC5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2Vt YWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9wcm9nbW9kZXMvZWxpc3AtbW9kZS5lbCAoc291cmNlKS4u LgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNw L2Zsb2F0LXN1cC5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1 Yi9tYXN0ZXIvbGlzcC92Yy92Yy1ob29rcy5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9n ZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC92Yy9lZGlmZi1ob29rLmVsIChzb3VyY2UpLi4u CkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3VuaXF1aWZ5LmVs IChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNw L2VsZWN0cmljLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHVi L21hc3Rlci9saXNwL3BhcmVuLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1h Y3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxpc3Avc2hvcnRoYW5kcy5lbCAoc291cmNlKS4u LgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNw L2VsZG9jLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21h c3Rlci9saXNwL2VtYWNzLWxpc3AvY2NvbnYuZWwgKHNvdXJjZSkuLi4KTG9hZGluZyAvVXNlcnMv Z2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvY3VzLXN0YXJ0LmVsIChzb3VyY2UpLi4uCkxv YWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3Rvb2x0aXAuZWwgKHNv dXJjZSkuLi4KTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvaW50 ZXJuYXRpb25hbC9pc28tdHJhbnNsLmVsIChzb3VyY2UpLi4uCkxvYWRpbmcgL1VzZXJzL2dlcmQv ZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxpc3Avcm1jLmVsIChzb3VyY2UpLi4uCkZp bmRpbmcgcG9pbnRlcnMgdG8gZG9jIHN0cmluZ3MuLi4KRmluZGluZyBwb2ludGVycyB0byBkb2Mg c3RyaW5ncy4uLmRvbmUKRHVtcGluZyB1bmRlciB0aGUgbmFtZSBib290c3RyYXAtZW1hY3MucGRt cApEdW1waW5nIGZpbmdlcnByaW50OiA2YzkwMDE3NDczMjE2NzJlMmQ1ZGZjZWNlNTA4YTA3NzQ2 NGM2ZDE4MzliMGY3MDFiYTYzNGNkOGY4NDE1ZjUyCkR1bXAgY29tcGxldGUKQnl0ZSBjb3VudHM6 IGhlYWRlcj0xMDAgaG90PTE2MDkxODYwIGRpc2NhcmRhYmxlPTE2Mzk2OCBjb2xkPTExMzI0MTUy ClJlbG9jIGNvdW50czogaG90PTExMDM4NzcgZGlzY2FyZGFibGU9NTgwOApBTkNJRU5UPXllcyBn bWFrZSAtQyAuLi9saXNwIGNvbXBpbGUtZmlyc3QgRU1BQ1M9Ii4uL3NyYy9ib290c3RyYXAtZW1h Y3MiCiAgRUxDICAgICAgZW1hY3MtbGlzcC9yYWRpeC10cmVlLmVsYwogIEVMQyAgICAgIGVtYWNz LWxpc3AvbG9hZGRlZnMtZ2VuLmVsYwogIEVMQyAgICAgIGVtYWNzLWxpc3AvbWFjcm9leHAuZWxj CiAgRUxDICAgICAgZW1hY3MtbGlzcC9jY29udi5lbGMKICBFTEMgICAgICBlbWFjcy1saXNwL2J5 dGUtb3B0LmVsYwogIEVMQyAgICAgIGVtYWNzLWxpc3AvYnl0ZWNvbXAuZWxjCmdtYWtlIC1DIC4u L2xpc3AgY29tcGlsZS1maXJzdCBFTUFDUz0iLi4vc3JjL2Jvb3RzdHJhcC1lbWFjcyIKZ21ha2Vb M106IE5vdGhpbmcgdG8gYmUgZG9uZSBmb3IgJ2NvbXBpbGUtZmlyc3QnLgpnbWFrZSAtQyAuLi9s aXNwIGF1dG9sb2FkcyBFTUFDUz0iLi4vc3JjL2Jvb3RzdHJhcC1lbWFjcyIKICBFTEMgICAgICAu Li9saXNwL2Nhc2UtdGFibGUuZWxjCmdtYWtlIC1DIC4uL2FkbWluL2dyYW1tYXJzIGFsbCBFTUFD Uz0iLi4vLi4vc3JjL2Jvb3RzdHJhcC1lbWFjcyIKICBFTEMgICAgICAuLi9saXNwL2N1cy1mYWNl LmVsYwogIEdFTiAgICAgIC4uLy4uL2xpc3AvY2VkZXQvc2VtYW50aWMvYm92aW5lL2MtYnkuZWwK ICBFTEMgICAgICAuLi9saXNwL2N1cy1zdGFydC5lbGMKICBFTEMgICAgICAuLi9saXNwL2J1dHRv bi5lbGMKICBFTEMgICAgICAuLi9saXNwL2J1ZmYtbWVudS5lbGMKICBHRU4gICAgICAuLi8uLi9s aXNwL2NlZGV0L3NlbWFudGljL2JvdmluZS9tYWtlLWJ5LmVsCiAgRUxDICAgICAgLi4vbGlzcC9j b21wb3NpdGUuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9hYmJyZXYuZWxjCiAgRUxDICAgICAgLi4v bGlzcC9jdXN0b20uZWxjCiAgRUxDICAgICAgLi4vbGlzcC9iaW5kaW5ncy5lbGMKICBHRU4gICAg ICAuLi8uLi9saXNwL2NlZGV0L3NlbWFudGljL2JvdmluZS9zY20tYnkuZWwKICBFTEMgICAgICBp bnRlcm5hdGlvbmFsL3RpdGRpYy1jbnYuZWxjCmdtYWtlIC1DIC4uL2xlaW0gYWxsIEVNQUNTPSIu Li9zcmMvYm9vdHN0cmFwLWVtYWNzIgogIEVMQyAgICAgIC4uL2xpc3AvZGlzcC10YWJsZS5lbGMK ICBFTEMgICAgICAuLi9saXNwL2Rvcy1mbnMuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9kb3MtdmFy cy5lbGMKICBFTEMgICAgICAuLi9saXNwL2RuZC5lbGMKICBFTEMgICAgICAuLi9saXNwL2R5bmFt aWMtc2V0dGluZy5lbGMKICBFTEMgICAgICAuLi9saXNwL2Rvcy13MzIuZWxjCiAgR0VOICAgICAg Li4vbGlzcC9sZWltL3F1YWlsL0NDRE9TUFkuZWwKICBFTEMgICAgICAuLi9saXNwL2VtYWNzLWxp c3AvYmFja3F1b3RlLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvZW1hY3MtbGlzcC9ieXRlLXJ1bi5l bGMKICBFTEMgICAgICAuLi9saXNwL2VsZWN0cmljLmVsYwogIEdFTiAgICAgIC4uL2xpc3AvbGVp bS9xdWFpbC9QdW5jdC5lbAogIEdFTiAgICAgIC4uL2xpc3AvbGVpbS9xdWFpbC9RSi5lbAogIEVM QyAgICAgIC4uL2xpc3AvZW1hY3MtbGlzcC9kZWJ1Zy1lYXJseS5lbGMKICBFTEMgICAgICAuLi9s aXNwL2VtYWNzLWxpc3AvY2wtcHJlbG9hZGVkLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvZW1hY3Mt bGlzcC9lYXN5bWVudS5lbGMKICBHRU4gICAgICAuLi8uLi9saXNwL2NlZGV0L3NlbWFudGljL2dy YW1tYXItd3kuZWwKICBFTEMgICAgICAuLi9saXNwL2VtYWNzLWxpc3AvY2wtZ2VuZXJpYy5lbGMK ICBFTEMgICAgICAuLi9saXNwL2VtYWNzLWxpc3AvY2NvbnYuZWxjCiAgR0VOICAgICAgLi4vbGlz cC9sZWltL3F1YWlsL1NXLmVsCiAgR0VOICAgICAgLi4vbGlzcC9sZWltL3F1YWlsL1RPTkVQWS5l bAogIEdFTiAgICAgIC4uL2xpc3AvbGVpbS9xdWFpbC80Q29ybmVyLmVsCiAgRUxDICAgICAgLi4v bGlzcC9lbWFjcy1saXNwL2VsZG9jLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvZW1hY3MtbGlzcC9m bG9hdC1zdXAuZWxjCiAgR0VOICAgICAgLi4vbGlzcC9sZWltL3F1YWlsL0VDRElDVC5lbAogIEdF TiAgICAgIC4uL2xpc3AvbGVpbS9xdWFpbC9BUlJBWTMwLmVsCiAgRUxDICAgICAgLi4vbGlzcC9l bWFjcy1saXNwL2xpc3AuZWxjCiAgR0VOICAgICAgLi4vbGlzcC9sZWltL3F1YWlsL0VUWlkuZWwK ICBFTEMgICAgICAuLi9saXNwL2VtYWNzLWxpc3AvbGlzcC1tb2RlLmVsYwogIEdFTiAgICAgIC4u L2xpc3AvbGVpbS9xdWFpbC9QdW5jdC1iNS5lbAogIEdFTiAgICAgIC4uL2xpc3AvbGVpbS9xdWFp bC9QWS1iNS5lbAogIEVMQyAgICAgIC4uL2xpc3AvZW1hY3MtbGlzcC9tYXAteW5wLmVsYwogIEdF TiAgICAgIC4uLy4uL2xpc3AvY2VkZXQvc2VtYW50aWMvd2lzZW50L2phdmF0LXd5LmVsCiAgR0VO ICAgICAgLi4vbGlzcC9sZWltL3F1YWlsL1FKLWI1LmVsCiAgR0VOICAgICAgLi4vLi4vbGlzcC9j ZWRldC9zZW1hbnRpYy93aXNlbnQvanMtd3kuZWwKICBFTEMgICAgICAuLi9saXNwL2VtYWNzLWxp c3AvbWFjcm9leHAuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9lbWFjcy1saXNwL25hZHZpY2UuZWxj CiAgR0VOICAgICAgLi4vbGlzcC9sZWltL3F1YWlsL1pPWlkuZWwKICBHRU4gICAgICAuLi9saXNw L2xlaW0vcXVhaWwvdHNhbmctYjUuZWwKICBFTEMgICAgICAuLi9saXNwL2VtYWNzLWxpc3Avb2Ns b3N1cmUuZWxjCiAgR0VOICAgICAgLi4vbGlzcC9sZWltL3F1YWlsL3RzYW5nLWNucy5lbAogIEdF TiAgICAgIC4uL2xpc3AvbGVpbS9xdWFpbC9QWS5lbAogIEdFTiAgICAgIC4uLy4uL2xpc3AvY2Vk ZXQvc2VtYW50aWMvd2lzZW50L3B5dGhvbi13eS5lbAogIEVMQyAgICAgIC4uL2xpc3AvZW1hY3Mt bGlzcC9yZWdleHAtb3B0LmVsYwogIEdFTiAgICAgIC4uL2xpc3AvbGVpbS9xdWFpbC9aSVJBTk1B LmVsCkxvYWRpbmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2NlZGV0L3Nl bWFudGljL2dybS13eS1ib290LmVsIChzb3VyY2UpLi4uCiAgR0VOICAgICAgLi4vLi4vbGlzcC9j ZWRldC9zcmVjb2RlL3NydC13eS5lbAogIEdFTiAgICAgIC4uL2xpc3AvbGVpbS9xdWFpbC9DVExh dS5lbApMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9jZWRldC9z ZW1hbnRpYy9ncm0td3ktYm9vdC5lbCAoc291cmNlKS4uLgpMb2FkaW5nIC9Vc2Vycy9nZXJkL2Vt YWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9jZWRldC9zZW1hbnRpYy9ncm0td3ktYm9vdC5lbCAoc291 cmNlKS4uLgogIEVMQyAgICAgIC4uL2xpc3AvZW1hY3MtbGlzcC9ybWMuZWxjCiAgR0VOICAgICAg Li4vbGlzcC9sZWltL3F1YWlsL0NUTGF1LWI1LmVsCiAgR0VOICAgICAgLi4vbGlzcC9sYW5ndWFn ZS9waW55aW4uZWwKICBHRU4gICAgICAuLi9saXNwL2xlaW0vbGVpbS1saXN0LmVsCiAgRUxDICAg ICAgLi4vbGlzcC9lbWFjcy1saXNwL3Nob3J0aGFuZHMuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9l bWFjcy1saXNwL3N5bnRheC5lbGMKICBFTEMgICAgICAuLi9saXNwL2VtYWNzLWxpc3Avc2VxLmVs YwogIEVMQyAgICAgIC4uL2xpc3AvZW1hY3MtbGlzcC90YWJ1bGF0ZWQtbGlzdC5lbGMKICBFTEMg ICAgICAuLi9saXNwL2VtYWNzLWxpc3AvdGltZXIuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9lbnYu ZWxjCiAgRUxDICAgICAgLi4vbGlzcC9lcGEtaG9vay5lbGMKTG9hZGluZyAvVXNlcnMvZ2VyZC9l bWFjcy9naXRodWIvbWFzdGVyL2xpc3AvY2VkZXQvc2VtYW50aWMvZ3JtLXd5LWJvb3QuZWwgKHNv dXJjZSkuLi4KICBFTEMgICAgICAuLi9saXNwL2ZvbnQtY29yZS5lbGMKICBFTEMgICAgICAuLi9s aXNwL2ZhY2VzLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvZm9udC1sb2NrLmVsYwogIEVMQyAgICAg IC4uL2xpc3AvZm9ybWF0LmVsYwogIEVMQyAgICAgIC4uL2xpc3AvZnJpbmdlLmVsYwogIEVMQyAg ICAgIC4uL2xpc3AvZnJhbWUuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9pbmRlbnQuZWxjCkxvYWRp bmcgL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2NlZGV0L3NlbWFudGljL2dy bS13eS1ib290LmVsIChzb3VyY2UpLi4uCmdtYWtlIC1DIC4uL2FkbWluL3VuaWRhdGEgYWxsIEVN QUNTPSIuLi8uLi9zcmMvYm9vdHN0cmFwLWVtYWNzIgogIEVMQyAgICAgIC4uL2xpc3AvaW50ZXJu YXRpb25hbC9jaGFyc2NyaXB0LmVsYwpMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9t YXN0ZXIvbGlzcC9jZWRldC9zZW1hbnRpYy9ncm0td3ktYm9vdC5lbCAoc291cmNlKS4uLgogIEVM QyAgICAgIC4uL2xpc3AvaGVscC5lbGMKICBFTEMgICAgICAuLi9saXNwL2ZpbGVzLmVsYwogIEVM QyAgICAgIC4uL2xpc3AvaW1hZ2UuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9pbnRlcm5hdGlvbmFs L2Vtb2ppLXp3ai5lbGMKICBFTEMgICAgICAuLi9saXNwL2ludGVybmF0aW9uYWwvY3A1MTkzMi5l bGMKICBFTEMgICAgICB1dnMuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9pbnRlcm5hdGlvbmFsL2V1 Y2pwLW1zLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvaW50ZXJuYXRpb25hbC9pc28tdHJhbnNsLmVs YwogIEVMQyAgICAgIC4uL2xpc3AvaW50ZXJuYXRpb25hbC9mb250c2V0LmVsYwogIEdFTiAgICAg IHVuaWRhdGEudHh0CiAgRUxDICAgICAgdW5pZGF0YS1nZW4uZWxjCkxvYWRpbmcgL1VzZXJzL2dl cmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2NlZGV0L3NlbWFudGljL2dybS13eS1ib290LmVs IChzb3VyY2UpLi4uCiAgR0VOICAgICAgLi4vLi4vbGlzcC9pbnRlcm5hdGlvbmFsL3VuaS1iaWRp LmVsCiAgRUxDICAgICAgLi4vbGlzcC9pbnRlcm5hdGlvbmFsL211bGUtdXRpbC5lbGMKICBFTEMg ICAgICAuLi9saXNwL2ludGVybmF0aW9uYWwvbXVsZS1jb25mLmVsYwogIEVMQyAgICAgIC4uL2xp c3AvaW50ZXJuYXRpb25hbC9tdWxlLWNtZHMuZWxjCiAgR0VOICAgICAgLi4vLi4vbGlzcC9pbnRl cm5hdGlvbmFsL3VuaS1zY3JpcHRzLmVsCiAgR0VOICAgICAgLi4vLi4vbGlzcC9pbnRlcm5hdGlv bmFsL3VuaS1icmFja2V0cy5lbApMb2FkaW5nIC9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0 ZXIvbGlzcC9jZWRldC9zZW1hbnRpYy9ncm0td3ktYm9vdC5lbCAoc291cmNlKS4uLgogIEVMQyAg ICAgIC4uL2xpc3AvaW50ZXJuYXRpb25hbC9tdWxlLmVsYwogIEdFTiAgICAgIC4uLy4uL2xpc3Av aW50ZXJuYXRpb25hbC91bmktY2F0ZWdvcnkuZWwKICBHRU4gICAgICAuLi8uLi9saXNwL2ludGVy bmF0aW9uYWwvdW5pLWNvbWJpbmluZy5lbAogIEdFTiAgICAgIC4uLy4uL2xpc3AvaW50ZXJuYXRp b25hbC91bmktY29uZnVzYWJsZS5lbAogIEdFTiAgICAgIC4uLy4uL2xpc3AvaW50ZXJuYXRpb25h bC91bmktY29tbWVudC5lbAogIEVMQyAgICAgIC4uL2xpc3AvamthLWNtcHItaG9vay5lbGMKICBF TEMgICAgICAuLi9saXNwL2ppdC1sb2NrLmVsYwogIEdFTiAgICAgIC4uLy4uL2xpc3AvaW50ZXJu YXRpb25hbC9pZG5hLW1hcHBpbmcuZWwKICBHRU4gICAgICAuLi8uLi9saXNwL2ludGVybmF0aW9u YWwvdW5pLWRlY2ltYWwuZWwKICBHRU4gICAgICAuLi8uLi9saXNwL2ludGVybmF0aW9uYWwvdW5p LWRlY29tcG9zaXRpb24uZWwKICBFTEMgICAgICAuLi9saXNwL2tleW1hcC5lbGMKICBHRU4gICAg ICAuLi8uLi9saXNwL2ludGVybmF0aW9uYWwvdW5pLWRpZ2l0LmVsCiAgRUxDICAgICAgLi4vbGlz cC9sYW5ndWFnZS9idXJtZXNlLmVsYwogIEdFTiAgICAgIC4uLy4uL2xpc3AvaW50ZXJuYXRpb25h bC91bmktbG93ZXJjYXNlLmVsCiAgRUxDICAgICAgLi4vbGlzcC9sYW5ndWFnZS9jaGFtLmVsYwog IEdFTiAgICAgIC4uLy4uL2xpc3AvaW50ZXJuYXRpb25hbC91bmktbWlycm9yZWQuZWwKICBFTEMg ICAgICAuLi9saXNwL2xhbmd1YWdlL2NoaW5lc2UuZWxjCiAgR0VOICAgICAgLi4vLi4vbGlzcC9p bnRlcm5hdGlvbmFsL3VuaS1uYW1lLmVsCiAgR0VOICAgICAgLi4vLi4vbGlzcC9pbnRlcm5hdGlv bmFsL3VuaS1udW1lcmljLmVsCiAgRUxDICAgICAgLi4vbGlzcC9sYW5ndWFnZS9jeXJpbGxpYy5l bGMKICBHRU4gICAgICAuLi8uLi9saXNwL2ludGVybmF0aW9uYWwvdW5pLW9sZC1uYW1lLmVsCiAg R0VOICAgICAgLi4vLi4vbGlzcC9pbnRlcm5hdGlvbmFsL3VuaS1zcGVjaWFsLWxvd2VyY2FzZS5l bAogIEdFTiAgICAgIC4uLy4uL2xpc3AvaW50ZXJuYXRpb25hbC91bmktc3BlY2lhbC10aXRsZWNh c2UuZWwKICBHRU4gICAgICAuLi8uLi9saXNwL2ludGVybmF0aW9uYWwvdW5pLXNwZWNpYWwtdXBw ZXJjYXNlLmVsCiAgRUxDICAgICAgLi4vbGlzcC9pc2VhcmNoLmVsYwogIEdFTiAgICAgIC4uLy4u L2xpc3AvaW50ZXJuYXRpb25hbC91bmktdGl0bGVjYXNlLmVsCiAgR0VOICAgICAgLi4vLi4vbGlz cC9pbnRlcm5hdGlvbmFsL3VuaS11cHBlcmNhc2UuZWwKICBFTEMgICAgICAuLi9saXNwL2xhbmd1 YWdlL2N6ZWNoLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvbGFuZ3VhZ2UvZW5nbGlzaC5lbGMKICBF TEMgICAgICAuLi9saXNwL2xhbmd1YWdlL2V0aGlvcGljLmVsYwogIEVMQyAgICAgIC4uL2xpc3Av bGFuZ3VhZ2UvZ2VvcmdpYW4uZWxjCiAgRUxDICAgICAgLi4vbGlzcC9sYW5ndWFnZS9ldXJvcGVh bi5lbGMKICBFTEMgICAgICAuLi9saXNwL2xhbmd1YWdlL2hlYnJldy5lbGMKICBFTEMgICAgICAu Li9saXNwL2xhbmd1YWdlL2dyZWVrLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvbGFuZ3VhZ2UvaW5k b25lc2lhbi5lbGMKICBFTEMgICAgICAuLi9saXNwL2xhbmd1YWdlL2luZGlhbi5lbGMKICBFTEMg ICAgICAuLi9saXNwL2xhbmd1YWdlL2phcGFuZXNlLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvbGFu Z3VhZ2Uva2htZXIuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9sYW5ndWFnZS9rb3JlYW4uZWxjCiAg RUxDICAgICAgLi4vbGlzcC9sYW5ndWFnZS9sYW8uZWxjCiAgRUxDICAgICAgLi4vbGlzcC9sYW5n dWFnZS9waGlsaXBwaW5lLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvbGFuZ3VhZ2UvbWlzYy1sYW5n LmVsYwogIEVMQyAgICAgIC4uL2xpc3AvbGFuZ3VhZ2Uvcm9tYW5pYW4uZWxjCiAgRUxDICAgICAg Li4vbGlzcC9sYW5ndWFnZS9zaW5oYWxhLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvbGFuZ3VhZ2Uv c2xvdmFrLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvbGFuZ3VhZ2UvdGFpLXZpZXQuZWxjCiAgRUxD ICAgICAgLi4vbGlzcC9sYW5ndWFnZS90aGFpLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvbGFuZ3Vh Z2UvdGliZXRhbi5lbGMKICBFTEMgICAgICAuLi9saXNwL2xhbmd1YWdlL3V0Zi04LWxhbmcuZWxj CiAgRUxDICAgICAgLi4vbGlzcC9sYW5ndWFnZS92aWV0bmFtZXNlLmVsYwogIEVMQyAgICAgIC4u L2xpc3AvbHMtbGlzcC5lbGMKICBFTEMgICAgICAuLi9saXNwL213aGVlbC5lbGMKICBFTEMgICAg ICAuLi9saXNwL29iYXJyYXkuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9tZW51LWJhci5lbGMKICBF TEMgICAgICAuLi9saXNwL25ld2NvbW1lbnQuZWxjCiAgR0VOICAgICAgLi4vLi4vbGlzcC9pbnRl cm5hdGlvbmFsL2Vtb2ppLWxhYmVscy5lbAouLi8uLi9saXNwL3RyYW5zaWVudC5lbDogV2Fybmlu ZzogVW5rbm93biB0eXBlOiBrZXl3b3JkCi4uLy4uL2xpc3AvdHJhbnNpZW50LmVsOiBXYXJuaW5n OiBVbmtub3duIHR5cGU6IGNvbW1hbmQKLi4vLi4vbGlzcC90cmFuc2llbnQuZWw6IFdhcm5pbmc6 IFVua25vd24gdHlwZToga2V5d29yZAouLi8uLi9saXNwL3RyYW5zaWVudC5lbDogV2FybmluZzog VW5rbm93biB0eXBlOiBjb21tYW5kCi4uLy4uL2xpc3AvdHJhbnNpZW50LmVsOiBXYXJuaW5nOiBV bmtub3duIHR5cGU6IGtleXdvcmQKLi4vLi4vbGlzcC90cmFuc2llbnQuZWw6IFdhcm5pbmc6IFVu a25vd24gdHlwZTogY29tbWFuZAogIEVMQyAgICAgIC4uL2xpc3AvcGFyZW4uZWxjCiAgRUxDICAg ICAgLi4vbGlzcC9wZ3RrLWRuZC5lbGMKICBFTEMgICAgICAuLi9saXNwL21vdXNlLmVsYwogIEVM QyAgICAgIC4uL2xpc3AvcHJvZ21vZGVzL3Byb2ctbW9kZS5lbGMKICBFTEMgICAgICAuLi9saXNw L3Jmbi1lc2hhZG93LmVsYwogIEdFTiAgICAgIC4uLy4uL2xpc3AvaW50ZXJuYXRpb25hbC9jaGFy cHJvcC5lbAogIEVMQyAgICAgIC4uL2xpc3AvbWluaWJ1ZmZlci5lbGMKICBFTEMgICAgICAuLi9s aXNwL3JlZ2lzdGVyLmVsYwogIEVMQyAgICAgIC4uL2xpc3Avc2Nyb2xsLWJhci5lbGMKICBFTEMg ICAgICAuLi9saXNwL3JlcGxhY2UuZWxjCiAgRUxDICAgICAgLi4vbGlzcC9wcm9nbW9kZXMvZWxp c3AtbW9kZS5lbGMKICBFTEMgICAgICAuLi9saXNwL3NlbGVjdC5lbGMKICBHRU4gICAgICBhdXRv bG9hZHMKICBJTkZPICAgICBTY3JhcGluZyAxNTI0IGZpbGVzIGZvciBsb2FkZGVmcy4uLiAKICBJ TkZPICAgICBTY3JhcGluZyAxNTI0IGZpbGVzIGZvciBsb2FkZGVmcy4uLjEwJSAKICBJTkZPICAg ICBTY3JhcGluZyAxNTI0IGZpbGVzIGZvciBsb2FkZGVmcy4uLjIwJSAKICBJTkZPICAgICBTY3Jh cGluZyAxNTI0IGZpbGVzIGZvciBsb2FkZGVmcy4uLjMwJSAKICBJTkZPICAgICBTY3JhcGluZyAx NTI0IGZpbGVzIGZvciBsb2FkZGVmcy4uLjQwJSAKICBJTkZPICAgICBTY3JhcGluZyAxNTI0IGZp bGVzIGZvciBsb2FkZGVmcy4uLjUwJSAKICBJTkZPICAgICBTY3JhcGluZyAxNTI0IGZpbGVzIGZv ciBsb2FkZGVmcy4uLjYwJSAKICBJTkZPICAgICBTY3JhcGluZyAxNTI0IGZpbGVzIGZvciBsb2Fk ZGVmcy4uLjcwJSAKbG9hZGRlZnMtZ2VuOiBsb2FkaW5nIGZpbGUgdHJhbXAtYWRiIChmb3IgdHJh bXAtLXdpdGgtc3RhcnR1cCkKTG9hZGluZyAvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVy L2xpc3AvbmV0L3RyYW1wLWFkYi5lbCAoc291cmNlKS4uLgoKRXJyb3I6IGVycm9yICgiRWFnZXIg bWFjcm8tZXhwYW5zaW9uIGZhaWx1cmU6IChlcnJvciBcIkVhZ2VyIG1hY3JvLWV4cGFuc2lvbiBm YWlsdXJlOiAodm9pZC1mdW5jdGlvbiBjbC1zdWJzZXEpXCIpIikKICBzaWduYWwoZXJyb3IgKCJF YWdlciBtYWNyby1leHBhbnNpb24gZmFpbHVyZTogKGVycm9yIFwiRWFnZXIgbWFjcm8tZXhwYW5z aW9uIGZhaWx1cmU6ICh2b2lkLWZ1bmN0aW9uIGNsLXN1YnNlcSlcIikiKSkKICBlcnJvcigiRWFn ZXIgbWFjcm8tZXhwYW5zaW9uIGZhaWx1cmU6ICVTIiAoZXJyb3IgIkVhZ2VyIG1hY3JvLWV4cGFu c2lvbiBmYWlsdXJlOiAodm9pZC1mdW5jdGlvbiBjbC1zdWJzZXEpIikpCiAgKGNvbmRpdGlvbi1j YXNlIGVyciAobGV0ICgobWFjcm9leHAtLXBlbmRpbmctZWFnZXItbG9hZHMgKGNvbnMgbG9hZC1m aWxlLW5hbWUgbWFjcm9leHAtLXBlbmRpbmctZWFnZXItbG9hZHMpKSkgKGlmIGZ1bGwtcCAobWFj cm9leHBhbmQtLWFsbC10b3BsZXZlbCBmb3JtKSAobWFjcm9leHBhbmQgZm9ybSkpKSAoKGRlYnVn IGVycm9yKSAoZXJyb3IgIkVhZ2VyIG1hY3JvLWV4cGFuc2lvbiBmYWlsdXJlOiAlUyIgZXJyKSBm b3JtKSkKICAoY29uZCAoKGVxICdza2lwIChjYXIgbWFjcm9leHAtLXBlbmRpbmctZWFnZXItbG9h ZHMpKSBmb3JtKSAoKGFuZCBsb2FkLWZpbGUtbmFtZSAobWVtYmVyIGxvYWQtZmlsZS1uYW1lIG1h Y3JvZXhwLS1wZW5kaW5nLWVhZ2VyLWxvYWRzKSkgKGxldCogKChidCAoZGVscSBuaWwgKG1hcGNh ciAjJ21hY3JvZXhwLS10cmltLWJhY2t0cmFjZS1mcmFtZSAobWFjcm9leHAtLWJhY2t0cmFjZSkp KSkgKGVsZW0gKGxpc3QgJ2xvYWQgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgbG9hZC1maWxlLW5h bWUpKSkgKHRhaWwgKG1lbWJlciBlbGVtIChjZHIgKG1lbWJlciBlbGVtIGJ0KSkpKSkgKGlmIHRh aWwgKHNldGNkciB0YWlsIChsaXN0ICfigKYpKSkgKGlmIChlcSAoY2FyLXNhZmUgKGNhciBidCkp ICdtYWNyb2V4cGFuZC1hbGwpIChzZXRxIGJ0IChjZHIgYnQpKSkgKGlmIG1hY3JvZXhwLS1kZWJ1 Zy1lYWdlciAoZGVidWcgJ2VhZ2VyLW1hY3JvZXhwLWN5Y2xlKSAoZXJyb3IgIkVhZ2VyIG1hY3Jv LWV4cGFuc2lvbiBza2lwcGVkIGR1ZSB0byBjeWNsZTpcbiAgJXMiIChtYXBjb25jYXQgIydwcmlu MS10by1zdHJpbmcgKG5yZXZlcnNlIGJ0KSAiID0+ICIpKSkgKHNldHEgbWFjcm9leHAtLXBlbmRp bmctZWFnZXItbG9hZHMgKGNvbnMgJ3NraXAgbWFjcm9leHAtLXBlbmRpbmctZWFnZXItbG9hZHMp KSBmb3JtKSkgKHQgKGNvbmRpdGlvbi1jYXNlIGVyciAobGV0ICgobWFjcm9leHAtLXBlbmRpbmct ZWFnZXItbG9hZHMgKGNvbnMgbG9hZC1maWxlLW5hbWUgbWFjcm9leHAtLXBlbmRpbmctZWFnZXIt bG9hZHMpKSkgKGlmIGZ1bGwtcCAobWFjcm9leHBhbmQtLWFsbC10b3BsZXZlbCBmb3JtKSAobWFj cm9leHBhbmQgZm9ybSkpKSAoKGRlYnVnIGVycm9yKSAoZXJyb3IgIkVhZ2VyIG1hY3JvLWV4cGFu c2lvbiBmYWlsdXJlOiAlUyIgZXJyKSBmb3JtKSkpKQogIGludGVybmFsLW1hY3JvZXhwYW5kLWZv ci1sb2FkKChldmFsLXdoZW4tY29tcGlsZSAocmVxdWlyZSAnZXBnKSkgbmlsKQogIGV2YWwtYnVm ZmVyKCM8YnVmZmVyICAqbG9hZCotNzk4NDQwPiBuaWwgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1 Yi9tYXN0ZXIvbGlzcC9hdXRoLXNvdXJjZS5lbCIgbmlsIHQpCiAgKGlmIGV2YWwtZnVuY3Rpb24g KGZ1bmNhbGwgZXZhbC1mdW5jdGlvbiBidWZmZXIgKGlmIGR1bXAtbW9kZSBmaWxlIGZ1bGxuYW1l KSkgKGV2YWwtYnVmZmVyIGJ1ZmZlciBuaWwgKGlmIGR1bXAtbW9kZSBmaWxlIGZ1bGxuYW1lKSBu aWwgdCkpCiAgKGxldCAoKHJlYWQtc3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBl dmFsLWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUg ZmlsZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmls ZSBmdWxsbmFtZSkgbmlsIHQpKSkKICAobGV0ICgobG9hZC10cnVlLWZpbGUtbmFtZSBmdWxsbmFt ZSkgKGxvYWQtZmlsZS1uYW1lIGZ1bGxuYW1lKSAoc2V0LWF1dG8tY29kaW5nLWZvci1sb2FkIHQp IChpbmhpYml0LWZpbGUtbmFtZS1vcGVyYXRpb24gbmlsKSBzaG9ydGhhbmRzKSAod2l0aC1jdXJy ZW50LWJ1ZmZlciBidWZmZXIgKHNldC1idWZmZXItbXVsdGlieXRlIHQpIChsZXQgKGRlYWN0aXZh dGUtbWFyaykgKGluc2VydC1maWxlLWNvbnRlbnRzIGZ1bGxuYW1lKSkgKHNldHEgc2hvcnRoYW5k cyAoYW5kIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbiAoZnVuY2FsbCBoYWNr LXJlYWQtc3ltYm9sLXNob3J0aGFuZHMtZnVuY3Rpb24pKSkgKGlmIChhbmQgZW5hYmxlLW11bHRp Ynl0ZS1jaGFyYWN0ZXJzIChvciAoZXEgKGNvZGluZy1zeXN0ZW0tdHlwZSBsYXN0LWNvZGluZy1z eXN0ZW0tdXNlZCkgJ3Jhdy10ZXh0KSkpIChzZXQtYnVmZmVyLW11bHRpYnl0ZSBuaWwpKSAoc2V0 LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkpIChsZXQgKChyZWFkLXN5bWJvbC1zaG9ydGhhbmRzIHNo b3J0aGFuZHMpKSAoaWYgZXZhbC1mdW5jdGlvbiAoZnVuY2FsbCBldmFsLWZ1bmN0aW9uIGJ1ZmZl ciAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpKSAoZXZhbC1idWZmZXIgYnVmZmVyIG5pbCAo aWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpIG5pbCB0KSkpKQogICh1bndpbmQtcHJvdGVjdCAo bGV0ICgobG9hZC10cnVlLWZpbGUtbmFtZSBmdWxsbmFtZSkgKGxvYWQtZmlsZS1uYW1lIGZ1bGxu YW1lKSAoc2V0LWF1dG8tY29kaW5nLWZvci1sb2FkIHQpIChpbmhpYml0LWZpbGUtbmFtZS1vcGVy YXRpb24gbmlsKSBzaG9ydGhhbmRzKSAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIgKHNldC1i dWZmZXItbXVsdGlieXRlIHQpIChsZXQgKGRlYWN0aXZhdGUtbWFyaykgKGluc2VydC1maWxlLWNv bnRlbnRzIGZ1bGxuYW1lKSkgKHNldHEgc2hvcnRoYW5kcyAoYW5kIGhhY2stcmVhZC1zeW1ib2wt c2hvcnRoYW5kcy1mdW5jdGlvbiAoZnVuY2FsbCBoYWNrLXJlYWQtc3ltYm9sLXNob3J0aGFuZHMt ZnVuY3Rpb24pKSkgKGlmIChhbmQgZW5hYmxlLW11bHRpYnl0ZS1jaGFyYWN0ZXJzIChvciAoZXEg KGNvZGluZy1zeXN0ZW0tdHlwZSBsYXN0LWNvZGluZy1zeXN0ZW0tdXNlZCkgJ3Jhdy10ZXh0KSkp IChzZXQtYnVmZmVyLW11bHRpYnl0ZSBuaWwpKSAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkp IChsZXQgKChyZWFkLXN5bWJvbC1zaG9ydGhhbmRzIHNob3J0aGFuZHMpKSAoaWYgZXZhbC1mdW5j dGlvbiAoZnVuY2FsbCBldmFsLWZ1bmN0aW9uIGJ1ZmZlciAoaWYgZHVtcC1tb2RlIGZpbGUgZnVs bG5hbWUpKSAoZXZhbC1idWZmZXIgYnVmZmVyIG5pbCAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5h bWUpIG5pbCB0KSkpKSAobGV0IChraWxsLWJ1ZmZlci1ob29rIGtpbGwtYnVmZmVyLXF1ZXJ5LWZ1 bmN0aW9ucykgKGtpbGwtYnVmZmVyIGJ1ZmZlcikpKQogIChsZXQgKChidWZmZXIgKGdlbmVyYXRl LW5ldy1idWZmZXIgIiAqbG9hZCoiKSkgKGxvYWQtaW4tcHJvZ3Jlc3MgdCkgKHNvdXJjZSAoc3Ry aW5nLXN1ZmZpeC1wICIuZWwiIGZ1bGxuYW1lKSkpICh1bmxlc3Mgbm9tZXNzYWdlIChpZiBzb3Vy Y2UgKG1lc3NhZ2UgIkxvYWRpbmcgJXMgKHNvdXJjZSkuLi4iIGZpbGUpIChtZXNzYWdlICJMb2Fk aW5nICVzLi4uIiBmaWxlKSkpICh3aGVuIHB1cmlmeS1mbGFnIChwdXNoIGZpbGUgcHJlbG9hZGVk LWZpbGUtbGlzdCkpICh1bndpbmQtcHJvdGVjdCAobGV0ICgobG9hZC10cnVlLWZpbGUtbmFtZSBm dWxsbmFtZSkgKGxvYWQtZmlsZS1uYW1lIGZ1bGxuYW1lKSAoc2V0LWF1dG8tY29kaW5nLWZvci1s b2FkIHQpIChpbmhpYml0LWZpbGUtbmFtZS1vcGVyYXRpb24gbmlsKSBzaG9ydGhhbmRzKSAod2l0 aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIgKHNldC1idWZmZXItbXVsdGlieXRlIHQpIChsZXQgKGRl YWN0aXZhdGUtbWFyaykgKGluc2VydC1maWxlLWNvbnRlbnRzIGZ1bGxuYW1lKSkgKHNldHEgc2hv cnRoYW5kcyAoYW5kIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbiAoZnVuY2Fs bCBoYWNrLXJlYWQtc3ltYm9sLXNob3J0aGFuZHMtZnVuY3Rpb24pKSkgKGlmIChhbmQgZW5hYmxl LW11bHRpYnl0ZS1jaGFyYWN0ZXJzIChvciAoZXEgKGNvZGluZy1zeXN0ZW0tdHlwZSBsYXN0LWNv ZGluZy1zeXN0ZW0tdXNlZCkgJ3Jhdy10ZXh0KSkpIChzZXQtYnVmZmVyLW11bHRpYnl0ZSBuaWwp KSAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkpIChsZXQgKChyZWFkLXN5bWJvbC1zaG9ydGhh bmRzIHNob3J0aGFuZHMpKSAoaWYgZXZhbC1mdW5jdGlvbiAoZnVuY2FsbCBldmFsLWZ1bmN0aW9u IGJ1ZmZlciAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpKSAoZXZhbC1idWZmZXIgYnVmZmVy IG5pbCAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpIG5pbCB0KSkpKSAobGV0IChraWxsLWJ1 ZmZlci1ob29rIGtpbGwtYnVmZmVyLXF1ZXJ5LWZ1bmN0aW9ucykgKGtpbGwtYnVmZmVyIGJ1ZmZl cikpKSAoZG8tYWZ0ZXItbG9hZC1ldmFsdWF0aW9uIGZ1bGxuYW1lKSAodW5sZXNzIChvciBub21l c3NhZ2Ugbm9uaW50ZXJhY3RpdmUpIChpZiBzb3VyY2UgKG1lc3NhZ2UgIkxvYWRpbmcgJXMgKHNv dXJjZSkuLi5kb25lIiBmaWxlKSAobWVzc2FnZSAiTG9hZGluZyAlcy4uLmRvbmUiIGZpbGUpKSkg dCkKICAoaWYgKG51bGwgKGZpbGUtcmVhZGFibGUtcCBmdWxsbmFtZSkpIChhbmQgKG51bGwgbm9l cnJvcikgKHNpZ25hbCAnZmlsZS1lcnJvciAobGlzdCAiQ2Fubm90IG9wZW4gbG9hZCBmaWxlIiBm aWxlKSkpIChsZXQgKChidWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIgIiAqbG9hZCoiKSkgKGxv YWQtaW4tcHJvZ3Jlc3MgdCkgKHNvdXJjZSAoc3RyaW5nLXN1ZmZpeC1wICIuZWwiIGZ1bGxuYW1l KSkpICh1bmxlc3Mgbm9tZXNzYWdlIChpZiBzb3VyY2UgKG1lc3NhZ2UgIkxvYWRpbmcgJXMgKHNv dXJjZSkuLi4iIGZpbGUpIChtZXNzYWdlICJMb2FkaW5nICVzLi4uIiBmaWxlKSkpICh3aGVuIHB1 cmlmeS1mbGFnIChwdXNoIGZpbGUgcHJlbG9hZGVkLWZpbGUtbGlzdCkpICh1bndpbmQtcHJvdGVj dCAobGV0ICgobG9hZC10cnVlLWZpbGUtbmFtZSBmdWxsbmFtZSkgKGxvYWQtZmlsZS1uYW1lIGZ1 bGxuYW1lKSAoc2V0LWF1dG8tY29kaW5nLWZvci1sb2FkIHQpIChpbmhpYml0LWZpbGUtbmFtZS1v cGVyYXRpb24gbmlsKSBzaG9ydGhhbmRzKSAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIgKHNl dC1idWZmZXItbXVsdGlieXRlIHQpIChsZXQgKGRlYWN0aXZhdGUtbWFyaykgKGluc2VydC1maWxl LWNvbnRlbnRzIGZ1bGxuYW1lKSkgKHNldHEgc2hvcnRoYW5kcyAoYW5kIGhhY2stcmVhZC1zeW1i b2wtc2hvcnRoYW5kcy1mdW5jdGlvbiAoZnVuY2FsbCBoYWNrLXJlYWQtc3ltYm9sLXNob3J0aGFu ZHMtZnVuY3Rpb24pKSkgKGlmIChhbmQgZW5hYmxlLW11bHRpYnl0ZS1jaGFyYWN0ZXJzIChvciAo ZXEgKGNvZGluZy1zeXN0ZW0tdHlwZSBsYXN0LWNvZGluZy1zeXN0ZW0tdXNlZCkgJ3Jhdy10ZXh0 KSkpIChzZXQtYnVmZmVyLW11bHRpYnl0ZSBuaWwpKSAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5p bCkpIChsZXQgKChyZWFkLXN5bWJvbC1zaG9ydGhhbmRzIHNob3J0aGFuZHMpKSAoaWYgZXZhbC1m dW5jdGlvbiAoZnVuY2FsbCBldmFsLWZ1bmN0aW9uIGJ1ZmZlciAoaWYgZHVtcC1tb2RlIGZpbGUg ZnVsbG5hbWUpKSAoZXZhbC1idWZmZXIgYnVmZmVyIG5pbCAoaWYgZHVtcC1tb2RlIGZpbGUgZnVs bG5hbWUpIG5pbCB0KSkpKSAobGV0IChraWxsLWJ1ZmZlci1ob29rIGtpbGwtYnVmZmVyLXF1ZXJ5 LWZ1bmN0aW9ucykgKGtpbGwtYnVmZmVyIGJ1ZmZlcikpKSAoZG8tYWZ0ZXItbG9hZC1ldmFsdWF0 aW9uIGZ1bGxuYW1lKSAodW5sZXNzIChvciBub21lc3NhZ2Ugbm9uaW50ZXJhY3RpdmUpIChpZiBz b3VyY2UgKG1lc3NhZ2UgIkxvYWRpbmcgJXMgKHNvdXJjZSkuLi5kb25lIiBmaWxlKSAobWVzc2Fn ZSAiTG9hZGluZyAlcy4uLmRvbmUiIGZpbGUpKSkgdCkpCiAgbG9hZC13aXRoLWNvZGUtY29udmVy c2lvbigiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2F1dGgtc291cmNlLmVs IiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2F1dGgtc291cmNlLmVsIiBu aWwgdCkKICByZXF1aXJlKGF1dGgtc291cmNlKQogIGV2YWwtYnVmZmVyKCM8YnVmZmVyICAqbG9h ZCotOTY4ODAxPiBuaWwgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9uZXQv dHJhbXAtY29tcGF0LmVsIiBuaWwgdCkKICAoaWYgZXZhbC1mdW5jdGlvbiAoZnVuY2FsbCBldmFs LWZ1bmN0aW9uIGJ1ZmZlciAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpKSAoZXZhbC1idWZm ZXIgYnVmZmVyIG5pbCAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpIG5pbCB0KSkKICAobGV0 ICgocmVhZC1zeW1ib2wtc2hvcnRoYW5kcyBzaG9ydGhhbmRzKSkgKGlmIGV2YWwtZnVuY3Rpb24g KGZ1bmNhbGwgZXZhbC1mdW5jdGlvbiBidWZmZXIgKGlmIGR1bXAtbW9kZSBmaWxlIGZ1bGxuYW1l KSkgKGV2YWwtYnVmZmVyIGJ1ZmZlciBuaWwgKGlmIGR1bXAtbW9kZSBmaWxlIGZ1bGxuYW1lKSBu aWwgdCkpKQogIChsZXQgKChsb2FkLXRydWUtZmlsZS1uYW1lIGZ1bGxuYW1lKSAobG9hZC1maWxl LW5hbWUgZnVsbG5hbWUpIChzZXQtYXV0by1jb2RpbmctZm9yLWxvYWQgdCkgKGluaGliaXQtZmls ZS1uYW1lLW9wZXJhdGlvbiBuaWwpIHNob3J0aGFuZHMpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1 ZmZlciAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdCkgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5z ZXJ0LWZpbGUtY29udGVudHMgZnVsbG5hbWUpKSAoc2V0cSBzaG9ydGhhbmRzIChhbmQgaGFjay1y ZWFkLXN5bWJvbC1zaG9ydGhhbmRzLWZ1bmN0aW9uIChmdW5jYWxsIGhhY2stcmVhZC1zeW1ib2wt c2hvcnRoYW5kcy1mdW5jdGlvbikpKSAoaWYgKGFuZCBlbmFibGUtbXVsdGlieXRlLWNoYXJhY3Rl cnMgKG9yIChlcSAoY29kaW5nLXN5c3RlbS10eXBlIGxhc3QtY29kaW5nLXN5c3RlbS11c2VkKSAn cmF3LXRleHQpKSkgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkpIChzZXQtYnVmZmVyLW1vZGlm aWVkLXAgbmlsKSkgKGxldCAoKHJlYWQtc3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChp ZiBldmFsLWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1v ZGUgZmlsZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUg ZmlsZSBmdWxsbmFtZSkgbmlsIHQpKSkpCiAgKHVud2luZC1wcm90ZWN0IChsZXQgKChsb2FkLXRy dWUtZmlsZS1uYW1lIGZ1bGxuYW1lKSAobG9hZC1maWxlLW5hbWUgZnVsbG5hbWUpIChzZXQtYXV0 by1jb2RpbmctZm9yLWxvYWQgdCkgKGluaGliaXQtZmlsZS1uYW1lLW9wZXJhdGlvbiBuaWwpIHNo b3J0aGFuZHMpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc2V0LWJ1ZmZlci1tdWx0aWJ5 dGUgdCkgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0LWZpbGUtY29udGVudHMgZnVsbG5h bWUpKSAoc2V0cSBzaG9ydGhhbmRzIChhbmQgaGFjay1yZWFkLXN5bWJvbC1zaG9ydGhhbmRzLWZ1 bmN0aW9uIChmdW5jYWxsIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbikpKSAo aWYgKGFuZCBlbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMgKG9yIChlcSAoY29kaW5nLXN5c3Rl bS10eXBlIGxhc3QtY29kaW5nLXN5c3RlbS11c2VkKSAncmF3LXRleHQpKSkgKHNldC1idWZmZXIt bXVsdGlieXRlIG5pbCkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkgKGxldCAoKHJlYWQt c3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBldmFsLWZ1bmN0aW9uIChmdW5jYWxs IGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkpIChldmFs LWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkgbmlsIHQpKSkp IChsZXQgKGtpbGwtYnVmZmVyLWhvb2sga2lsbC1idWZmZXItcXVlcnktZnVuY3Rpb25zKSAoa2ls bC1idWZmZXIgYnVmZmVyKSkpCiAgKGxldCAoKGJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAi ICpsb2FkKiIpKSAobG9hZC1pbi1wcm9ncmVzcyB0KSAoc291cmNlIChzdHJpbmctc3VmZml4LXAg Ii5lbCIgZnVsbG5hbWUpKSkgKHVubGVzcyBub21lc3NhZ2UgKGlmIHNvdXJjZSAobWVzc2FnZSAi TG9hZGluZyAlcyAoc291cmNlKS4uLiIgZmlsZSkgKG1lc3NhZ2UgIkxvYWRpbmcgJXMuLi4iIGZp bGUpKSkgKHdoZW4gcHVyaWZ5LWZsYWcgKHB1c2ggZmlsZSBwcmVsb2FkZWQtZmlsZS1saXN0KSkg KHVud2luZC1wcm90ZWN0IChsZXQgKChsb2FkLXRydWUtZmlsZS1uYW1lIGZ1bGxuYW1lKSAobG9h ZC1maWxlLW5hbWUgZnVsbG5hbWUpIChzZXQtYXV0by1jb2RpbmctZm9yLWxvYWQgdCkgKGluaGli aXQtZmlsZS1uYW1lLW9wZXJhdGlvbiBuaWwpIHNob3J0aGFuZHMpICh3aXRoLWN1cnJlbnQtYnVm ZmVyIGJ1ZmZlciAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdCkgKGxldCAoZGVhY3RpdmF0ZS1tYXJr KSAoaW5zZXJ0LWZpbGUtY29udGVudHMgZnVsbG5hbWUpKSAoc2V0cSBzaG9ydGhhbmRzIChhbmQg aGFjay1yZWFkLXN5bWJvbC1zaG9ydGhhbmRzLWZ1bmN0aW9uIChmdW5jYWxsIGhhY2stcmVhZC1z eW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbikpKSAoaWYgKGFuZCBlbmFibGUtbXVsdGlieXRlLWNo YXJhY3RlcnMgKG9yIChlcSAoY29kaW5nLXN5c3RlbS10eXBlIGxhc3QtY29kaW5nLXN5c3RlbS11 c2VkKSAncmF3LXRleHQpKSkgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkpIChzZXQtYnVmZmVy LW1vZGlmaWVkLXAgbmlsKSkgKGxldCAoKHJlYWQtc3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5k cykpIChpZiBldmFsLWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBk dW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1w LW1vZGUgZmlsZSBmdWxsbmFtZSkgbmlsIHQpKSkpIChsZXQgKGtpbGwtYnVmZmVyLWhvb2sga2ls bC1idWZmZXItcXVlcnktZnVuY3Rpb25zKSAoa2lsbC1idWZmZXIgYnVmZmVyKSkpIChkby1hZnRl ci1sb2FkLWV2YWx1YXRpb24gZnVsbG5hbWUpICh1bmxlc3MgKG9yIG5vbWVzc2FnZSBub25pbnRl cmFjdGl2ZSkgKGlmIHNvdXJjZSAobWVzc2FnZSAiTG9hZGluZyAlcyAoc291cmNlKS4uLmRvbmUi IGZpbGUpIChtZXNzYWdlICJMb2FkaW5nICVzLi4uZG9uZSIgZmlsZSkpKSB0KQogIChpZiAobnVs bCAoZmlsZS1yZWFkYWJsZS1wIGZ1bGxuYW1lKSkgKGFuZCAobnVsbCBub2Vycm9yKSAoc2lnbmFs ICdmaWxlLWVycm9yIChsaXN0ICJDYW5ub3Qgb3BlbiBsb2FkIGZpbGUiIGZpbGUpKSkgKGxldCAo KGJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICpsb2FkKiIpKSAobG9hZC1pbi1wcm9ncmVz cyB0KSAoc291cmNlIChzdHJpbmctc3VmZml4LXAgIi5lbCIgZnVsbG5hbWUpKSkgKHVubGVzcyBu b21lc3NhZ2UgKGlmIHNvdXJjZSAobWVzc2FnZSAiTG9hZGluZyAlcyAoc291cmNlKS4uLiIgZmls ZSkgKG1lc3NhZ2UgIkxvYWRpbmcgJXMuLi4iIGZpbGUpKSkgKHdoZW4gcHVyaWZ5LWZsYWcgKHB1 c2ggZmlsZSBwcmVsb2FkZWQtZmlsZS1saXN0KSkgKHVud2luZC1wcm90ZWN0IChsZXQgKChsb2Fk LXRydWUtZmlsZS1uYW1lIGZ1bGxuYW1lKSAobG9hZC1maWxlLW5hbWUgZnVsbG5hbWUpIChzZXQt YXV0by1jb2RpbmctZm9yLWxvYWQgdCkgKGluaGliaXQtZmlsZS1uYW1lLW9wZXJhdGlvbiBuaWwp IHNob3J0aGFuZHMpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc2V0LWJ1ZmZlci1tdWx0 aWJ5dGUgdCkgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0LWZpbGUtY29udGVudHMgZnVs bG5hbWUpKSAoc2V0cSBzaG9ydGhhbmRzIChhbmQgaGFjay1yZWFkLXN5bWJvbC1zaG9ydGhhbmRz LWZ1bmN0aW9uIChmdW5jYWxsIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbikp KSAoaWYgKGFuZCBlbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMgKG9yIChlcSAoY29kaW5nLXN5 c3RlbS10eXBlIGxhc3QtY29kaW5nLXN5c3RlbS11c2VkKSAncmF3LXRleHQpKSkgKHNldC1idWZm ZXItbXVsdGlieXRlIG5pbCkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkgKGxldCAoKHJl YWQtc3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBldmFsLWZ1bmN0aW9uIChmdW5j YWxsIGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkpIChl dmFsLWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkgbmlsIHQp KSkpIChsZXQgKGtpbGwtYnVmZmVyLWhvb2sga2lsbC1idWZmZXItcXVlcnktZnVuY3Rpb25zKSAo a2lsbC1idWZmZXIgYnVmZmVyKSkpIChkby1hZnRlci1sb2FkLWV2YWx1YXRpb24gZnVsbG5hbWUp ICh1bmxlc3MgKG9yIG5vbWVzc2FnZSBub25pbnRlcmFjdGl2ZSkgKGlmIHNvdXJjZSAobWVzc2Fn ZSAiTG9hZGluZyAlcyAoc291cmNlKS4uLmRvbmUiIGZpbGUpIChtZXNzYWdlICJMb2FkaW5nICVz Li4uZG9uZSIgZmlsZSkpKSB0KSkKICBsb2FkLXdpdGgtY29kZS1jb252ZXJzaW9uKCIvVXNlcnMv Z2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbmV0L3RyYW1wLWNvbXBhdC5lbCIgIi9Vc2Vy cy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9uZXQvdHJhbXAtY29tcGF0LmVsIiBuaWwg dCkKICByZXF1aXJlKHRyYW1wLWNvbXBhdCkKICBldmFsLWJ1ZmZlcigjPGJ1ZmZlciAgKmxvYWQq LTcwNjM4OT4gbmlsICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbmV0L3Ry YW1wLmVsIiBuaWwgdCkKICAoaWYgZXZhbC1mdW5jdGlvbiAoZnVuY2FsbCBldmFsLWZ1bmN0aW9u IGJ1ZmZlciAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpKSAoZXZhbC1idWZmZXIgYnVmZmVy IG5pbCAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUpIG5pbCB0KSkKICAobGV0ICgocmVhZC1z eW1ib2wtc2hvcnRoYW5kcyBzaG9ydGhhbmRzKSkgKGlmIGV2YWwtZnVuY3Rpb24gKGZ1bmNhbGwg ZXZhbC1mdW5jdGlvbiBidWZmZXIgKGlmIGR1bXAtbW9kZSBmaWxlIGZ1bGxuYW1lKSkgKGV2YWwt YnVmZmVyIGJ1ZmZlciBuaWwgKGlmIGR1bXAtbW9kZSBmaWxlIGZ1bGxuYW1lKSBuaWwgdCkpKQog IChsZXQgKChsb2FkLXRydWUtZmlsZS1uYW1lIGZ1bGxuYW1lKSAobG9hZC1maWxlLW5hbWUgZnVs bG5hbWUpIChzZXQtYXV0by1jb2RpbmctZm9yLWxvYWQgdCkgKGluaGliaXQtZmlsZS1uYW1lLW9w ZXJhdGlvbiBuaWwpIHNob3J0aGFuZHMpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc2V0 LWJ1ZmZlci1tdWx0aWJ5dGUgdCkgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0LWZpbGUt Y29udGVudHMgZnVsbG5hbWUpKSAoc2V0cSBzaG9ydGhhbmRzIChhbmQgaGFjay1yZWFkLXN5bWJv bC1zaG9ydGhhbmRzLWZ1bmN0aW9uIChmdW5jYWxsIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5k cy1mdW5jdGlvbikpKSAoaWYgKGFuZCBlbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMgKG9yIChl cSAoY29kaW5nLXN5c3RlbS10eXBlIGxhc3QtY29kaW5nLXN5c3RlbS11c2VkKSAncmF3LXRleHQp KSkgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmls KSkgKGxldCAoKHJlYWQtc3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBldmFsLWZ1 bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBm dWxsbmFtZSkpIChldmFsLWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxs bmFtZSkgbmlsIHQpKSkpCiAgKHVud2luZC1wcm90ZWN0IChsZXQgKChsb2FkLXRydWUtZmlsZS1u YW1lIGZ1bGxuYW1lKSAobG9hZC1maWxlLW5hbWUgZnVsbG5hbWUpIChzZXQtYXV0by1jb2Rpbmct Zm9yLWxvYWQgdCkgKGluaGliaXQtZmlsZS1uYW1lLW9wZXJhdGlvbiBuaWwpIHNob3J0aGFuZHMp ICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdCkgKGxl dCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0LWZpbGUtY29udGVudHMgZnVsbG5hbWUpKSAoc2V0 cSBzaG9ydGhhbmRzIChhbmQgaGFjay1yZWFkLXN5bWJvbC1zaG9ydGhhbmRzLWZ1bmN0aW9uIChm dW5jYWxsIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbikpKSAoaWYgKGFuZCBl bmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMgKG9yIChlcSAoY29kaW5nLXN5c3RlbS10eXBlIGxh c3QtY29kaW5nLXN5c3RlbS11c2VkKSAncmF3LXRleHQpKSkgKHNldC1idWZmZXItbXVsdGlieXRl IG5pbCkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkgKGxldCAoKHJlYWQtc3ltYm9sLXNo b3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBldmFsLWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVu Y3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZlciBi dWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkgbmlsIHQpKSkpIChsZXQgKGtp bGwtYnVmZmVyLWhvb2sga2lsbC1idWZmZXItcXVlcnktZnVuY3Rpb25zKSAoa2lsbC1idWZmZXIg YnVmZmVyKSkpCiAgKGxldCAoKGJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICpsb2FkKiIp KSAobG9hZC1pbi1wcm9ncmVzcyB0KSAoc291cmNlIChzdHJpbmctc3VmZml4LXAgIi5lbCIgZnVs bG5hbWUpKSkgKHVubGVzcyBub21lc3NhZ2UgKGlmIHNvdXJjZSAobWVzc2FnZSAiTG9hZGluZyAl cyAoc291cmNlKS4uLiIgZmlsZSkgKG1lc3NhZ2UgIkxvYWRpbmcgJXMuLi4iIGZpbGUpKSkgKHdo ZW4gcHVyaWZ5LWZsYWcgKHB1c2ggZmlsZSBwcmVsb2FkZWQtZmlsZS1saXN0KSkgKHVud2luZC1w cm90ZWN0IChsZXQgKChsb2FkLXRydWUtZmlsZS1uYW1lIGZ1bGxuYW1lKSAobG9hZC1maWxlLW5h bWUgZnVsbG5hbWUpIChzZXQtYXV0by1jb2RpbmctZm9yLWxvYWQgdCkgKGluaGliaXQtZmlsZS1u YW1lLW9wZXJhdGlvbiBuaWwpIHNob3J0aGFuZHMpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZl ciAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdCkgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0 LWZpbGUtY29udGVudHMgZnVsbG5hbWUpKSAoc2V0cSBzaG9ydGhhbmRzIChhbmQgaGFjay1yZWFk LXN5bWJvbC1zaG9ydGhhbmRzLWZ1bmN0aW9uIChmdW5jYWxsIGhhY2stcmVhZC1zeW1ib2wtc2hv cnRoYW5kcy1mdW5jdGlvbikpKSAoaWYgKGFuZCBlbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMg KG9yIChlcSAoY29kaW5nLXN5c3RlbS10eXBlIGxhc3QtY29kaW5nLXN5c3RlbS11c2VkKSAncmF3 LXRleHQpKSkgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkpIChzZXQtYnVmZmVyLW1vZGlmaWVk LXAgbmlsKSkgKGxldCAoKHJlYWQtc3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBl dmFsLWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUg ZmlsZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmls ZSBmdWxsbmFtZSkgbmlsIHQpKSkpIChsZXQgKGtpbGwtYnVmZmVyLWhvb2sga2lsbC1idWZmZXIt cXVlcnktZnVuY3Rpb25zKSAoa2lsbC1idWZmZXIgYnVmZmVyKSkpIChkby1hZnRlci1sb2FkLWV2 YWx1YXRpb24gZnVsbG5hbWUpICh1bmxlc3MgKG9yIG5vbWVzc2FnZSBub25pbnRlcmFjdGl2ZSkg KGlmIHNvdXJjZSAobWVzc2FnZSAiTG9hZGluZyAlcyAoc291cmNlKS4uLmRvbmUiIGZpbGUpICht ZXNzYWdlICJMb2FkaW5nICVzLi4uZG9uZSIgZmlsZSkpKSB0KQogIChpZiAobnVsbCAoZmlsZS1y ZWFkYWJsZS1wIGZ1bGxuYW1lKSkgKGFuZCAobnVsbCBub2Vycm9yKSAoc2lnbmFsICdmaWxlLWVy cm9yIChsaXN0ICJDYW5ub3Qgb3BlbiBsb2FkIGZpbGUiIGZpbGUpKSkgKGxldCAoKGJ1ZmZlciAo Z2VuZXJhdGUtbmV3LWJ1ZmZlciAiICpsb2FkKiIpKSAobG9hZC1pbi1wcm9ncmVzcyB0KSAoc291 cmNlIChzdHJpbmctc3VmZml4LXAgIi5lbCIgZnVsbG5hbWUpKSkgKHVubGVzcyBub21lc3NhZ2Ug KGlmIHNvdXJjZSAobWVzc2FnZSAiTG9hZGluZyAlcyAoc291cmNlKS4uLiIgZmlsZSkgKG1lc3Nh Z2UgIkxvYWRpbmcgJXMuLi4iIGZpbGUpKSkgKHdoZW4gcHVyaWZ5LWZsYWcgKHB1c2ggZmlsZSBw cmVsb2FkZWQtZmlsZS1saXN0KSkgKHVud2luZC1wcm90ZWN0IChsZXQgKChsb2FkLXRydWUtZmls ZS1uYW1lIGZ1bGxuYW1lKSAobG9hZC1maWxlLW5hbWUgZnVsbG5hbWUpIChzZXQtYXV0by1jb2Rp bmctZm9yLWxvYWQgdCkgKGluaGliaXQtZmlsZS1uYW1lLW9wZXJhdGlvbiBuaWwpIHNob3J0aGFu ZHMpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdCkg KGxldCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0LWZpbGUtY29udGVudHMgZnVsbG5hbWUpKSAo c2V0cSBzaG9ydGhhbmRzIChhbmQgaGFjay1yZWFkLXN5bWJvbC1zaG9ydGhhbmRzLWZ1bmN0aW9u IChmdW5jYWxsIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbikpKSAoaWYgKGFu ZCBlbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMgKG9yIChlcSAoY29kaW5nLXN5c3RlbS10eXBl IGxhc3QtY29kaW5nLXN5c3RlbS11c2VkKSAncmF3LXRleHQpKSkgKHNldC1idWZmZXItbXVsdGli eXRlIG5pbCkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkgKGxldCAoKHJlYWQtc3ltYm9s LXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBldmFsLWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwt ZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZl ciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkgbmlsIHQpKSkpIChsZXQg KGtpbGwtYnVmZmVyLWhvb2sga2lsbC1idWZmZXItcXVlcnktZnVuY3Rpb25zKSAoa2lsbC1idWZm ZXIgYnVmZmVyKSkpIChkby1hZnRlci1sb2FkLWV2YWx1YXRpb24gZnVsbG5hbWUpICh1bmxlc3Mg KG9yIG5vbWVzc2FnZSBub25pbnRlcmFjdGl2ZSkgKGlmIHNvdXJjZSAobWVzc2FnZSAiTG9hZGlu ZyAlcyAoc291cmNlKS4uLmRvbmUiIGZpbGUpIChtZXNzYWdlICJMb2FkaW5nICVzLi4uZG9uZSIg ZmlsZSkpKSB0KSkKICBsb2FkLXdpdGgtY29kZS1jb252ZXJzaW9uKCIvVXNlcnMvZ2VyZC9lbWFj cy9naXRodWIvbWFzdGVyL2xpc3AvbmV0L3RyYW1wLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0 aHViL21hc3Rlci9saXNwL25ldC90cmFtcC5lbCIgbmlsIHQpCiAgcmVxdWlyZSh0cmFtcCkKICBl dmFsLWJ1ZmZlcigjPGJ1ZmZlciAgKmxvYWQqPiBuaWwgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1 Yi9tYXN0ZXIvbGlzcC9uZXQvdHJhbXAtYWRiLmVsIiBuaWwgdCkKICAoaWYgZXZhbC1mdW5jdGlv biAoZnVuY2FsbCBldmFsLWZ1bmN0aW9uIGJ1ZmZlciAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5h bWUpKSAoZXZhbC1idWZmZXIgYnVmZmVyIG5pbCAoaWYgZHVtcC1tb2RlIGZpbGUgZnVsbG5hbWUp IG5pbCB0KSkKICAobGV0ICgocmVhZC1zeW1ib2wtc2hvcnRoYW5kcyBzaG9ydGhhbmRzKSkgKGlm IGV2YWwtZnVuY3Rpb24gKGZ1bmNhbGwgZXZhbC1mdW5jdGlvbiBidWZmZXIgKGlmIGR1bXAtbW9k ZSBmaWxlIGZ1bGxuYW1lKSkgKGV2YWwtYnVmZmVyIGJ1ZmZlciBuaWwgKGlmIGR1bXAtbW9kZSBm aWxlIGZ1bGxuYW1lKSBuaWwgdCkpKQogIChsZXQgKChsb2FkLXRydWUtZmlsZS1uYW1lIGZ1bGxu YW1lKSAobG9hZC1maWxlLW5hbWUgZnVsbG5hbWUpIChzZXQtYXV0by1jb2RpbmctZm9yLWxvYWQg dCkgKGluaGliaXQtZmlsZS1uYW1lLW9wZXJhdGlvbiBuaWwpIHNob3J0aGFuZHMpICh3aXRoLWN1 cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdCkgKGxldCAoZGVhY3Rp dmF0ZS1tYXJrKSAoaW5zZXJ0LWZpbGUtY29udGVudHMgZnVsbG5hbWUpKSAoc2V0cSBzaG9ydGhh bmRzIChhbmQgaGFjay1yZWFkLXN5bWJvbC1zaG9ydGhhbmRzLWZ1bmN0aW9uIChmdW5jYWxsIGhh Y2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbikpKSAoaWYgKGFuZCBlbmFibGUtbXVs dGlieXRlLWNoYXJhY3RlcnMgKG9yIChlcSAoY29kaW5nLXN5c3RlbS10eXBlIGxhc3QtY29kaW5n LXN5c3RlbS11c2VkKSAncmF3LXRleHQpKSkgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkpIChz ZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkgKGxldCAoKHJlYWQtc3ltYm9sLXNob3J0aGFuZHMg c2hvcnRoYW5kcykpIChpZiBldmFsLWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVuY3Rpb24gYnVm ZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZlciBidWZmZXIgbmls IChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkgbmlsIHQpKSkpCiAgKHVud2luZC1wcm90ZWN0 IChsZXQgKChsb2FkLXRydWUtZmlsZS1uYW1lIGZ1bGxuYW1lKSAobG9hZC1maWxlLW5hbWUgZnVs bG5hbWUpIChzZXQtYXV0by1jb2RpbmctZm9yLWxvYWQgdCkgKGluaGliaXQtZmlsZS1uYW1lLW9w ZXJhdGlvbiBuaWwpIHNob3J0aGFuZHMpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc2V0 LWJ1ZmZlci1tdWx0aWJ5dGUgdCkgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0LWZpbGUt Y29udGVudHMgZnVsbG5hbWUpKSAoc2V0cSBzaG9ydGhhbmRzIChhbmQgaGFjay1yZWFkLXN5bWJv bC1zaG9ydGhhbmRzLWZ1bmN0aW9uIChmdW5jYWxsIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5k cy1mdW5jdGlvbikpKSAoaWYgKGFuZCBlbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMgKG9yIChl cSAoY29kaW5nLXN5c3RlbS10eXBlIGxhc3QtY29kaW5nLXN5c3RlbS11c2VkKSAncmF3LXRleHQp KSkgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmls KSkgKGxldCAoKHJlYWQtc3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBldmFsLWZ1 bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBm dWxsbmFtZSkpIChldmFsLWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxs bmFtZSkgbmlsIHQpKSkpIChsZXQgKGtpbGwtYnVmZmVyLWhvb2sga2lsbC1idWZmZXItcXVlcnkt ZnVuY3Rpb25zKSAoa2lsbC1idWZmZXIgYnVmZmVyKSkpCiAgKGxldCAoKGJ1ZmZlciAoZ2VuZXJh dGUtbmV3LWJ1ZmZlciAiICpsb2FkKiIpKSAobG9hZC1pbi1wcm9ncmVzcyB0KSAoc291cmNlIChz dHJpbmctc3VmZml4LXAgIi5lbCIgZnVsbG5hbWUpKSkgKHVubGVzcyBub21lc3NhZ2UgKGlmIHNv dXJjZSAobWVzc2FnZSAiTG9hZGluZyAlcyAoc291cmNlKS4uLiIgZmlsZSkgKG1lc3NhZ2UgIkxv YWRpbmcgJXMuLi4iIGZpbGUpKSkgKHdoZW4gcHVyaWZ5LWZsYWcgKHB1c2ggZmlsZSBwcmVsb2Fk ZWQtZmlsZS1saXN0KSkgKHVud2luZC1wcm90ZWN0IChsZXQgKChsb2FkLXRydWUtZmlsZS1uYW1l IGZ1bGxuYW1lKSAobG9hZC1maWxlLW5hbWUgZnVsbG5hbWUpIChzZXQtYXV0by1jb2RpbmctZm9y LWxvYWQgdCkgKGluaGliaXQtZmlsZS1uYW1lLW9wZXJhdGlvbiBuaWwpIHNob3J0aGFuZHMpICh3 aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdCkgKGxldCAo ZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0LWZpbGUtY29udGVudHMgZnVsbG5hbWUpKSAoc2V0cSBz aG9ydGhhbmRzIChhbmQgaGFjay1yZWFkLXN5bWJvbC1zaG9ydGhhbmRzLWZ1bmN0aW9uIChmdW5j YWxsIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRoYW5kcy1mdW5jdGlvbikpKSAoaWYgKGFuZCBlbmFi bGUtbXVsdGlieXRlLWNoYXJhY3RlcnMgKG9yIChlcSAoY29kaW5nLXN5c3RlbS10eXBlIGxhc3Qt Y29kaW5nLXN5c3RlbS11c2VkKSAncmF3LXRleHQpKSkgKHNldC1idWZmZXItbXVsdGlieXRlIG5p bCkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkgKGxldCAoKHJlYWQtc3ltYm9sLXNob3J0 aGFuZHMgc2hvcnRoYW5kcykpIChpZiBldmFsLWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVuY3Rp b24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZlciBidWZm ZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBmdWxsbmFtZSkgbmlsIHQpKSkpIChsZXQgKGtpbGwt YnVmZmVyLWhvb2sga2lsbC1idWZmZXItcXVlcnktZnVuY3Rpb25zKSAoa2lsbC1idWZmZXIgYnVm ZmVyKSkpIChkby1hZnRlci1sb2FkLWV2YWx1YXRpb24gZnVsbG5hbWUpICh1bmxlc3MgKG9yIG5v bWVzc2FnZSBub25pbnRlcmFjdGl2ZSkgKGlmIHNvdXJjZSAobWVzc2FnZSAiTG9hZGluZyAlcyAo c291cmNlKS4uLmRvbmUiIGZpbGUpIChtZXNzYWdlICJMb2FkaW5nICVzLi4uZG9uZSIgZmlsZSkp KSB0KQogIChpZiAobnVsbCAoZmlsZS1yZWFkYWJsZS1wIGZ1bGxuYW1lKSkgKGFuZCAobnVsbCBu b2Vycm9yKSAoc2lnbmFsICdmaWxlLWVycm9yIChsaXN0ICJDYW5ub3Qgb3BlbiBsb2FkIGZpbGUi IGZpbGUpKSkgKGxldCAoKGJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICpsb2FkKiIpKSAo bG9hZC1pbi1wcm9ncmVzcyB0KSAoc291cmNlIChzdHJpbmctc3VmZml4LXAgIi5lbCIgZnVsbG5h bWUpKSkgKHVubGVzcyBub21lc3NhZ2UgKGlmIHNvdXJjZSAobWVzc2FnZSAiTG9hZGluZyAlcyAo c291cmNlKS4uLiIgZmlsZSkgKG1lc3NhZ2UgIkxvYWRpbmcgJXMuLi4iIGZpbGUpKSkgKHdoZW4g cHVyaWZ5LWZsYWcgKHB1c2ggZmlsZSBwcmVsb2FkZWQtZmlsZS1saXN0KSkgKHVud2luZC1wcm90 ZWN0IChsZXQgKChsb2FkLXRydWUtZmlsZS1uYW1lIGZ1bGxuYW1lKSAobG9hZC1maWxlLW5hbWUg ZnVsbG5hbWUpIChzZXQtYXV0by1jb2RpbmctZm9yLWxvYWQgdCkgKGluaGliaXQtZmlsZS1uYW1l LW9wZXJhdGlvbiBuaWwpIHNob3J0aGFuZHMpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAo c2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdCkgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKSAoaW5zZXJ0LWZp bGUtY29udGVudHMgZnVsbG5hbWUpKSAoc2V0cSBzaG9ydGhhbmRzIChhbmQgaGFjay1yZWFkLXN5 bWJvbC1zaG9ydGhhbmRzLWZ1bmN0aW9uIChmdW5jYWxsIGhhY2stcmVhZC1zeW1ib2wtc2hvcnRo YW5kcy1mdW5jdGlvbikpKSAoaWYgKGFuZCBlbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMgKG9y IChlcSAoY29kaW5nLXN5c3RlbS10eXBlIGxhc3QtY29kaW5nLXN5c3RlbS11c2VkKSAncmF3LXRl eHQpKSkgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAg bmlsKSkgKGxldCAoKHJlYWQtc3ltYm9sLXNob3J0aGFuZHMgc2hvcnRoYW5kcykpIChpZiBldmFs LWZ1bmN0aW9uIChmdW5jYWxsIGV2YWwtZnVuY3Rpb24gYnVmZmVyIChpZiBkdW1wLW1vZGUgZmls ZSBmdWxsbmFtZSkpIChldmFsLWJ1ZmZlciBidWZmZXIgbmlsIChpZiBkdW1wLW1vZGUgZmlsZSBm dWxsbmFtZSkgbmlsIHQpKSkpIChsZXQgKGtpbGwtYnVmZmVyLWhvb2sga2lsbC1idWZmZXItcXVl cnktZnVuY3Rpb25zKSAoa2lsbC1idWZmZXIgYnVmZmVyKSkpIChkby1hZnRlci1sb2FkLWV2YWx1 YXRpb24gZnVsbG5hbWUpICh1bmxlc3MgKG9yIG5vbWVzc2FnZSBub25pbnRlcmFjdGl2ZSkgKGlm IHNvdXJjZSAobWVzc2FnZSAiTG9hZGluZyAlcyAoc291cmNlKS4uLmRvbmUiIGZpbGUpIChtZXNz YWdlICJMb2FkaW5nICVzLi4uZG9uZSIgZmlsZSkpKSB0KSkKICBsb2FkLXdpdGgtY29kZS1jb252 ZXJzaW9uKCIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbmV0L3RyYW1wLWFk Yi5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9uZXQvdHJhbXAtYWRi LmVsIiBuaWwgbmlsKQogIGxvYWQoInRyYW1wLWFkYiIpCiAgbG9hZGRlZnMtZ2VuZXJhdGUtLW1h a2UtYXV0b2xvYWQoKHRyYW1wLS13aXRoLXN0YXJ0dXAgKGFkZC10by1saXN0ICd0cmFtcC1tZXRo b2RzIGAoLHRyYW1wLWFkYi1tZXRob2QgKHRyYW1wLWxvZ2luLXByb2dyYW0gLHRyYW1wLWFkYi1w cm9ncmFtKSAodHJhbXAtbG9naW4tYXJncyAoKCItcyIgIiVkIikgKCJzaGVsbCIpKSkgKHRyYW1w LWRpcmVjdC1hc3luYyB0KSAodHJhbXAtdG1wZGlyICIvZGF0YS9sb2NhbC90bXAiKSAodHJhbXAt ZGVmYXVsdC1wb3J0IDU1NTUpKSkgKGFkZC10by1saXN0ICd0cmFtcC1kZWZhdWx0LWhvc3QtYWxp c3QgYCgsdHJhbXAtYWRiLW1ldGhvZCBuaWwgIiIpKSAodHJhbXAtc2V0LWNvbXBsZXRpb24tZnVu Y3Rpb24gdHJhbXAtYWRiLW1ldGhvZCAnKCh0cmFtcC1hZGItcGFyc2UtZGV2aWNlLW5hbWVzICIi KSkpKSAidHJhbXAtYWRiIikKICBsb2FkZGVmcy1nZW5lcmF0ZS0tcGFyc2UtZmlsZSgiL1VzZXJz L2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL25ldC90cmFtcC1hZGIuZWwiICIvVXNlcnMv Z2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbG9hZGRlZnMuZWwiIHQpCiAgbG9hZGRlZnMt Z2VuZXJhdGUoKCIuIiAiLi9jYWxjIiAiLi9jYWxlbmRhciIgIi4vY2VkZXQiICIuL2NlZGV0L2Vk ZSIgIi4vY2VkZXQvc2VtYW50aWMiICIuL2NlZGV0L3NlbWFudGljL2FuYWx5emUiICIuL2NlZGV0 L3NlbWFudGljL2JvdmluZSIgIi4vY2VkZXQvc2VtYW50aWMvZGVjb3JhdGUiICIuL2NlZGV0L3Nl bWFudGljL3N5bXJlZiIgIi4vY2VkZXQvc2VtYW50aWMvd2lzZW50IiAiLi9jZWRldC9zcmVjb2Rl IiAiLi9lbWFjcy1saXNwIiAiLi9lbXVsYXRpb24iICIuL2VyYyIgIi4vZXNoZWxsIiAiLi9nbnVz IiAiLi9pbWFnZSIgIi4vaW50ZXJuYXRpb25hbCIgIi4vbGFuZ3VhZ2UiICIuL2xlaW0iICIuL2xl aW0vcXVhaWwiICIuL21haWwiICIuL21oLWUiICIuL25ldCIgIi4vbnhtbCIgIi4vb3JnIiAiLi9w bGF5IiAiLi9wcm9nbW9kZXMiICIuL3RleHRtb2RlcyIgIi4vdXJsIiAiLi91c2UtcGFja2FnZSIg Ii4vdmMiKSAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xvYWRkZWZzLmVs IiAoIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sZGVmcy1ib290LmVsIiAi L1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xlaW0vbGVpbS1saXN0LmVsIiAi L1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxpc3Avcm1jLmVsIiAi L1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2ludGVybmF0aW9uYWwvaXNvLXRy YW5zbC5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC90b29sdGlwLmVs IiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxpc3AvY2NvbnYu ZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcC9lbGRv Yy5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL3No b3J0aGFuZHMuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvcGFyZW4u ZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZWxlY3RyaWMuZWwiICIv VXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdW5pcXVpZnkuZWwiICIvVXNlcnMv Z2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdmMvZWRpZmYtaG9vay5lbCIgIi9Vc2Vycy9n ZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC92Yy92Yy1ob29rcy5lbCIgIi9Vc2Vycy9nZXJk L2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL2Zsb2F0LXN1cC5lbCIgIi9Vc2Vy cy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9wcm9nbW9kZXMvZWxpc3AtbW9kZS5lbCIg Ii9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9idWZmLW1lbnUuZWwiICIvVXNl cnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcC90YWJ1bGF0ZWQtbGlz dC5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9yZXBsYWNlLmVsIiAi L1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL25ld2NvbW1lbnQuZWwiICIvVXNl cnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdGV4dG1vZGVzL2ZpbGwuZWwiICIvVXNl cnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdGV4dG1vZGVzL3RleHQtbW9kZS5lbCIg Ii9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL2xpc3AtbW9k ZS5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9wcm9nbW9kZXMvcHJv Zy1tb2RlLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3RleHRtb2Rl cy9wYXJhZ3JhcGhzLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3Jl Z2lzdGVyLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3RleHRtb2Rl cy9wYWdlLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxp c3AvbGlzcC5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC90YWItYmFy LmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL21lbnUtYmFyLmVsIiAi L1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3Jmbi1lc2hhZG93LmVsIiAiL1Vz ZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2lzZWFyY2guZWwiICIvVXNlcnMvZ2Vy ZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcC9lYXN5bWVudS5lbCIgIi9Vc2Vy cy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL3RpbWVyLmVsIiAiL1Vz ZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3NlbGVjdC5lbCIgIi9Vc2Vycy9nZXJk L2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9tb3VzZS5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dp dGh1Yi9tYXN0ZXIvbGlzcC9qaXQtbG9jay5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9t YXN0ZXIvbGlzcC9mb250LWxvY2suZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVy L2xpc3AvZW1hY3MtbGlzcC9zeW50YXguZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFz dGVyL2xpc3AvZm9udC1jb3JlLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9s aXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIv bGlzcC9zdGFydHVwLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2Zy YW1lLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL21pbmlidWZmZXIu ZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcC9uYWR2 aWNlLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxpc3Av c2VxLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL3NpbXBsZS5lbCIg Ii9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL2NsLWdlbmVy aWMuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvaW5kZW50LmVsIiAi L1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xhbmd1YWdlL2luZG9uZXNpYW4u ZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2UvcGhpbGlw cGluZS5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9j aGFtLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xhbmd1YWdlL2J1 cm1lc2UuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2Uv a2htZXIuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2Uv Z2VvcmdpYW4uZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3Vh Z2UvdXRmLTgtbGFuZy5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9s YW5ndWFnZS9taXNjLWxhbmcuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xp c3AvbGFuZ3VhZ2UvdmlldG5hbWVzZS5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0 ZXIvbGlzcC9sYW5ndWFnZS90aWJldGFuLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21h c3Rlci9saXNwL2xhbmd1YWdlL3RoYWkuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFz dGVyL2xpc3AvbGFuZ3VhZ2UvdGFpLXZpZXQuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIv bWFzdGVyL2xpc3AvbGFuZ3VhZ2UvbGFvLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21h c3Rlci9saXNwL2xhbmd1YWdlL2tvcmVhbi5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9t YXN0ZXIvbGlzcC9sYW5ndWFnZS9qYXBhbmVzZS5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1 Yi9tYXN0ZXIvbGlzcC9pbnRlcm5hdGlvbmFsL2V1Y2pwLW1zLmVsIiAiL1VzZXJzL2dlcmQvZW1h Y3MvZ2l0aHViL21hc3Rlci9saXNwL2ludGVybmF0aW9uYWwvY3A1MTkzMi5lbCIgIi9Vc2Vycy9n ZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9oZWJyZXcuZWwiICIvVXNlcnMv Z2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2UvZ3JlZWsuZWwiICIvVXNlcnMv Z2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2Uvcm9tYW5pYW4uZWwiICIvVXNl cnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2Uvc2xvdmFrLmVsIiAiL1Vz ZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xhbmd1YWdlL2N6ZWNoLmVsIiAiL1Vz ZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xhbmd1YWdlL2V1cm9wZWFuLmVsIiAi L1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xhbmd1YWdlL2V0aGlvcGljLmVs IiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2xhbmd1YWdlL2VuZ2xpc2gu ZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2Uvc2luaGFs YS5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9sYW5ndWFnZS9pbmRp YW4uZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2UvY3ly aWxsaWMuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvbGFuZ3VhZ2Uv Y2hpbmVzZS5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9jb21wb3Np dGUuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvaW50ZXJuYXRpb25h bC9jaGFyYWN0ZXJzLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2lu dGVybmF0aW9uYWwvY2hhcnByb3AuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVy L2xpc3AvY2FzZS10YWJsZS5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlz cC9pbnRlcm5hdGlvbmFsL211bGUtY21kcy5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9t YXN0ZXIvbGlzcC9lcGEtaG9vay5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIv bGlzcC9qa2EtY21wci1ob29rLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9s aXNwL2hlbHAuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvYWJicmV2 LmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL29iYXJyYXkuZWwiICIv VXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcC9vY2xvc3VyZS5l bCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL2NsLXBy ZWxvYWRlZC5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9idXR0b24u ZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZmFjZXMuZWwiICIvVXNl cnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvY3VzLWZhY2UuZWwiICIvVXNlcnMvZ2Vy ZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvZW1hY3MtbGlzcC9tYWNyb2V4cC5lbCIgIi9Vc2Vy cy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9maWxlcy5lbCIgIi9Vc2Vycy9nZXJkL2Vt YWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC93aW5kb3cuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRo dWIvbWFzdGVyL2xpc3AvYmluZGluZ3MuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFz dGVyL2xpc3AvZm9ybWF0LmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNw L2Vudi5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9pbnRlcm5hdGlv bmFsL211bGUtY29uZi5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9p bnRlcm5hdGlvbmFsL211bGUuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xp c3AvZW1hY3MtbGlzcC9tYXAteW5wLmVsIiAiL1VzZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rl ci9saXNwL2N1c3RvbS5lbCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC93 aWRnZXQuZWwiICIvVXNlcnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3AvdmVyc2lvbi5l bCIgIi9Vc2Vycy9nZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9rZXltYXAuZWwiICIvVXNl cnMvZ2VyZC9lbWFjcy9naXRodWIvbWFzdGVyL2xpc3Avc3Vici5lbCIgIi9Vc2Vycy9nZXJkL2Vt YWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL2JhY2txdW90ZS5lbCIgIi9Vc2Vycy9n ZXJkL2VtYWNzL2dpdGh1Yi9tYXN0ZXIvbGlzcC9lbWFjcy1saXNwL2J5dGUtcnVuLmVsIiAiL1Vz ZXJzL2dlcmQvZW1hY3MvZ2l0aHViL21hc3Rlci9saXNwL2VtYWNzLWxpc3AvZGVidWctZWFybHku ZWwiKSBuaWwgdCB0KQogIGxvYWRkZWZzLWdlbmVyYXRlLS1lbWFjcy1iYXRjaCgpCiAgZnVuY2Fs bChsb2FkZGVmcy1nZW5lcmF0ZS0tZW1hY3MtYmF0Y2gpCiAgKGlmIChjb21tYW5kcCB0ZW0pIChj b21tYW5kLWV4ZWN1dGUgdGVtKSAoZnVuY2FsbCB0ZW0pKQogIChjb25kICgoc2V0cSB0ZW0gKGFz c29jIGFyZ2kgY29tbWFuZC1zd2l0Y2gtYWxpc3QpKSAoaWYgYXJndmFsIChsZXQgKChjb21tYW5k LWxpbmUtYXJncy1sZWZ0IChjb25zIGFyZ3ZhbCBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpIChm dW5jYWxsIChjZHIgdGVtKSBhcmdpKSkgKGZ1bmNhbGwgKGNkciB0ZW0pIGFyZ2kpKSkgKChlcXVh bCBhcmdpICItbm8tc3BsYXNoIikgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSkgKCht ZW1iZXIgYXJnaSAnKCItZiIgIi1mdW5jYWxsIiAiLWUiKSkgKHNldHEgaW5oaWJpdC1zdGFydHVw LXNjcmVlbiB0KSAoc2V0cSB0ZW0gKGludGVybiAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEg Y29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIg Y29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSkgKGlmIChjb21tYW5kcCB0ZW0pIChjb21tYW5k LWV4ZWN1dGUgdGVtKSAoZnVuY2FsbCB0ZW0pKSkgKChtZW1iZXIgYXJnaSAnKCItZXZhbCIgIi1l eGVjdXRlIikpIChzZXRxIGluaGliaXQtc3RhcnR1cC1zY3JlZW4gdCkgKGxldCogKChzdHItZXhw ciAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0 cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkp KSAocmVhZC1kYXRhIChyZWFkLWZyb20tc3RyaW5nIHN0ci1leHByKSkgKGV4cHIgKGNhciByZWFk LWRhdGEpKSAoZW5kIChjZHIgcmVhZC1kYXRhKSkpIChpZiAoc3RyaW5nLW1hdGNoLXAgIlsgXDEx XG5dKlxcJyIgc3RyLWV4cHIgZW5kKSBuaWwgKGVycm9yICJUcmFpbGluZyBnYXJiYWdlIGZvbGxv d2luZyBleHByZXNzaW9uOiAlcyIgKHN1YnN0cmluZyBzdHItZXhwciBlbmQpKSkgKGV2YWwgZXhw ciB0KSkpICgobWVtYmVyIGFyZ2kgJygiLUwiICItZGlyZWN0b3J5IikpIChsZXQgKGFwcGVuZCkg KGlmIChzdHJpbmctbWF0Y2gtcCAoZm9ybWF0ICJcXGAlcyIgcGF0aC1zZXBhcmF0b3IpIChzZXRx IHRlbSAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAo c2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkp KSkpKSkgKHByb2duIChzZXRxIHRlbSAoc3Vic3RyaW5nIHRlbSAxKSkgKHNldHEgYXBwZW5kIHQp KSkgKHNldHEgdGVtIChleHBhbmQtZmlsZS1uYW1lIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZp bGUtbmFtZSB0ZW0pKSkgKGNvbmQgKGFwcGVuZCAoc2V0cSBsb2FkLXBhdGggKGFwcGVuZCBsb2Fk LXBhdGggKGxpc3QgdGVtKSkpIChpZiBzcGxpY2UgKHNldHEgc3BsaWNlIGxvYWQtcGF0aCkpKSAo c3BsaWNlIChzZXRjZHIgc3BsaWNlIChjb25zIHRlbSAoY2RyIHNwbGljZSkpKSAoc2V0cSBzcGxp Y2UgKGNkciBzcGxpY2UpKSkgKHQgKHByb2duIChzZXRxIGxvYWQtcGF0aCAoY29ucyB0ZW0gbG9h ZC1wYXRoKSkgKHNldHEgc3BsaWNlIGxvYWQtcGF0aCkpKSkpKSAoKG1lbWJlciBhcmdpICcoIi1s IiAiLWxvYWQiKSkgKGxldCogKChmaWxlIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFt ZSAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0 cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkp KSkgKGZpbGUtZXggKGZpbGUtdHJ1ZW5hbWUgKGV4cGFuZC1maWxlLW5hbWUgZmlsZSkpKSkgKGlm IChmaWxlLXJlZ3VsYXItcCBmaWxlLWV4KSAocHJvZ24gKHNldHEgZmlsZSBmaWxlLWV4KSkpIChs b2FkIGZpbGUgbmlsIHQpKSkgKChtZW1iZXIgYXJnaSAnKCItc2NyaXB0bG9hZCIgIi1zY3JpcHRl dmFsIikpIChsZXQqICgoZmlsZSAoY29tbWFuZC1saW5lLW5vcm1hbGl6ZS1maWxlLW5hbWUgKG9y IGFyZ3ZhbCAoY2FyLXNhZmUgKHByb2cxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKHNldHEgY29t bWFuZC1saW5lLWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkpKSkpIChm aWxlLWV4IChleHBhbmQtZmlsZS1uYW1lIGZpbGUpKSAodHJ1ZW5hbWUgKGZpbGUtdHJ1ZW5hbWUg ZmlsZS1leCkpKSAoaWYgKGZpbGUtZXhpc3RzLXAgdHJ1ZW5hbWUpIChwcm9nbiAoc2V0cSBmaWxl LWV4IHRydWVuYW1lKSkpIChpZiAoZXF1YWwgYXJnaSAiLXNjcmlwdGV2YWwiKSAoY29tbWFuZC1s aW5lLS1ldmFsLXNjcmlwdCBmaWxlLWV4KSAoY29tbWFuZC1saW5lLS1sb2FkLXNjcmlwdCBmaWxl LWV4KSkpKSAoKGVxdWFsIGFyZ2kgIi1pbnNlcnQiKSAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2Ny ZWVuIHQpIChzZXRxIHRlbSAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5l LWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5l LWFyZ3MtbGVmdCkpKSkpKSAob3IgKHN0cmluZ3AgdGVtKSAoZXJyb3IgIkZpbGUgbmFtZSBvbWl0 dGVkIGZyb20gYC1pbnNlcnQnIG9wdGlvbiIpKSAoaW5zZXJ0LWZpbGUtY29udGVudHMgKGNvbW1h bmQtbGluZS1ub3JtYWxpemUtZmlsZS1uYW1lIHRlbSkpKSAoKG9yIChlcXVhbCBhcmdpICItZHVt cC1maWxlIikgKGVxdWFsIGFyZ2kgIi1zZWNjb21wIikpIChvciBhcmd2YWwgKGNhci1zYWZlIChw cm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQg KGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpICgoZXF1YWwgYXJnaSAiLWtpbGwiKSAo a2lsbC1lbWFjcyB0KSkgKChlcXVhbCBhcmdpICItbm8tZGVza3RvcCIpIChtZXNzYWdlICJcIi0t bm8tZGVza3RvcFwiIGlnbm9yZWQgYmVjYXVzZSB0aGUgRGVza3RvcCBwYWNrYWdlIGlzIG5vdCBs b2FkZWQiKSkgKChzdHJpbmctbWF0Y2ggIl5cXCtbMC05XStcXCciIGFyZ2kpIChzZXRxIGxpbmUg KHN0cmluZy10by1udW1iZXIgYXJnaSkpKSAoKHN0cmluZy1tYXRjaCAiXlxcK1xcKFswLTldK1xc KTpcXChbMC05XStcXClcXCciIGFyZ2kpIChwcm9nbiAoc2V0cSBsaW5lIChzdHJpbmctdG8tbnVt YmVyIChtYXRjaC1zdHJpbmcgMSBhcmdpKSkpIChzZXRxIGNvbHVtbiAoc3RyaW5nLXRvLW51bWJl ciAobWF0Y2gtc3RyaW5nIDIgYXJnaSkpKSkpICgoc2V0cSB0ZW0gKGFzc29jIG9yaWctYXJnaSBj b21tYW5kLWxpbmUteC1vcHRpb24tYWxpc3QpKSAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0 IChudGhjZHIgKG50aCAxIHRlbSkgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSAoKHNldHEgdGVt IChhc3NvYyBvcmlnLWFyZ2kgY29tbWFuZC1saW5lLW5zLW9wdGlvbi1hbGlzdCkpIChzZXRxIGNv bW1hbmQtbGluZS1hcmdzLWxlZnQgKG50aGNkciAobnRoIDEgdGVtKSBjb21tYW5kLWxpbmUtYXJn cy1sZWZ0KSkpICgobWVtYmVyIGFyZ2kgJygiLWZpbmQtZmlsZSIgIi1maWxlIiAiLXZpc2l0Iikp IChzZXRxIGluaGliaXQtc3RhcnR1cC1zY3JlZW4gdCkgKHNldHEgdGVtIChvciBhcmd2YWwgKGNh ci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1h cmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpIChpZiAoc3RyaW5ncCB0 ZW0pIG5pbCAoZXJyb3IgIkZpbGUgbmFtZSBvbWl0dGVkIGZyb20gYCVzJyBvcHRpb24iIGFyZ2kp KSAoZnVuY2FsbCBwcm9jZXNzLWZpbGUtYXJnIHRlbSkpICgoc3RyaW5nLW1hdGNoICJcXGAtLT9c XChuby1cXCk/XFwodW5pXFx8bXVsdGlcXClieXRlJCIgYXJnaSkgKGRpc3BsYXktd2FybmluZyAn aW5pdGlhbGl6YXRpb24gKGZvcm1hdCAiSWdub3Jpbmcgb2Jzb2xldGUgYXJnICVzIiBhcmdpKSkp ICgoZXF1YWwgYXJnaSAiLS0iKSAoc2V0cSBqdXN0LWZpbGVzIHQpKSAodCAobGV0ICgoaG9va3Mg Y29tbWFuZC1saW5lLWZ1bmN0aW9ucykgKGRpZC1ob29rIG5pbCkpICh3aGlsZSAoYW5kIGhvb2tz IChub3QgKHNldHEgZGlkLWhvb2sgKGZ1bmNhbGwgKGNhciBob29rcykpKSkpIChzZXRxIGhvb2tz IChjZHIgaG9va3MpKSkgKGlmIGRpZC1ob29rIG5pbCAoaWYgKHN0cmluZy1tYXRjaCAiXFxgLSIg YXJnaSkgKGVycm9yICJVbmtub3duIG9wdGlvbiBgJXMnIiBhcmdpKSkgKGlmIGluaXRpYWwtd2lu ZG93LXN5c3RlbSBuaWwgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSkgKGZ1bmNhbGwg cHJvY2Vzcy1maWxlLWFyZyBvcmlnLWFyZ2kpKSkpKQogIChsZXQqICgoYXJnaSAoY2FyIGNvbW1h bmQtbGluZS1hcmdzLWxlZnQpKSAob3JpZy1hcmdpIGFyZ2kpIGFyZ3ZhbCBjb21wbGV0aW9uKSAo c2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkp IChpZiBqdXN0LWZpbGVzIChzZXRxIGFyZ2kgIiIpIChpZiAoc3RyaW5nLW1hdGNoICJcXGBcXCgt LVtePV0qXFwpPSIgYXJnaSkgKHByb2duIChwcm9nbiAoc2V0cSBhcmd2YWwgKHN1YnN0cmluZyBh cmdpIChtYXRjaC1lbmQgMCkpKSAoc2V0cSBhcmdpIChtYXRjaC1zdHJpbmcgMSBhcmdpKSkpKSkg KGlmIChzdHJpbmctbWF0Y2ggIlxcYC0tP1teLV0iIG9yaWctYXJnaSkgKHByb2duIChzZXRxIGNv bXBsZXRpb24gKHRyeS1jb21wbGV0aW9uIGFyZ2kgbG9uZ29wdHMpKSAoaWYgKGVxIGNvbXBsZXRp b24gdCkgKHNldHEgYXJnaSAoc3Vic3RyaW5nIGFyZ2kgMSkpIChpZiAoc3RyaW5ncCBjb21wbGV0 aW9uKSAobGV0ICgoZWx0IChtZW1iZXIgY29tcGxldGlvbiBsb25nb3B0cykpKSAob3IgZWx0IChl cnJvciAiT3B0aW9uIGAlcycgaXMgYW1iaWd1b3VzIiBhcmdpKSkgKHNldHEgYXJnaSAoc3Vic3Ry aW5nIChjYXIgZWx0KSAxKSkpIChwcm9nbiAoc2V0cSBhcmd2YWwgbmlsKSAoc2V0cSBhcmdpIG9y aWctYXJnaSkpKSkpKSkgKGNvbmQgKChzZXRxIHRlbSAoYXNzb2MgYXJnaSBjb21tYW5kLXN3aXRj aC1hbGlzdCkpIChpZiBhcmd2YWwgKGxldCAoKGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNvbnMg YXJndmFsIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkgKGZ1bmNhbGwgKGNkciB0ZW0pIGFyZ2kp KSAoZnVuY2FsbCAoY2RyIHRlbSkgYXJnaSkpKSAoKGVxdWFsIGFyZ2kgIi1uby1zcGxhc2giKSAo c2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpKSAoKG1lbWJlciBhcmdpICcoIi1mIiAiLWZ1 bmNhbGwiICItZSIpKSAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpIChzZXRxIHRlbSAo aW50ZXJuIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0 IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0 KSkpKSkpKSAoaWYgKGNvbW1hbmRwIHRlbSkgKGNvbW1hbmQtZXhlY3V0ZSB0ZW0pIChmdW5jYWxs IHRlbSkpKSAoKG1lbWJlciBhcmdpICcoIi1ldmFsIiAiLWV4ZWN1dGUiKSkgKHNldHEgaW5oaWJp dC1zdGFydHVwLXNjcmVlbiB0KSAobGV0KiAoKHN0ci1leHByIChvciBhcmd2YWwgKGNhci1zYWZl IChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxl ZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpIChyZWFkLWRhdGEgKHJlYWQtZnJv bS1zdHJpbmcgc3RyLWV4cHIpKSAoZXhwciAoY2FyIHJlYWQtZGF0YSkpIChlbmQgKGNkciByZWFk LWRhdGEpKSkgKGlmIChzdHJpbmctbWF0Y2gtcCAiWyBcMTFcbl0qXFwnIiBzdHItZXhwciBlbmQp IG5pbCAoZXJyb3IgIlRyYWlsaW5nIGdhcmJhZ2UgZm9sbG93aW5nIGV4cHJlc3Npb246ICVzIiAo c3Vic3RyaW5nIHN0ci1leHByIGVuZCkpKSAoZXZhbCBleHByIHQpKSkgKChtZW1iZXIgYXJnaSAn KCItTCIgIi1kaXJlY3RvcnkiKSkgKGxldCAoYXBwZW5kKSAoaWYgKHN0cmluZy1tYXRjaC1wIChm b3JtYXQgIlxcYCVzIiBwYXRoLXNlcGFyYXRvcikgKHNldHEgdGVtIChvciBhcmd2YWwgKGNhci1z YWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdz LWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpKSAocHJvZ24gKHNldHEgdGVt IChzdWJzdHJpbmcgdGVtIDEpKSAoc2V0cSBhcHBlbmQgdCkpKSAoc2V0cSB0ZW0gKGV4cGFuZC1m aWxlLW5hbWUgKGNvbW1hbmQtbGluZS1ub3JtYWxpemUtZmlsZS1uYW1lIHRlbSkpKSAoY29uZCAo YXBwZW5kIChzZXRxIGxvYWQtcGF0aCAoYXBwZW5kIGxvYWQtcGF0aCAobGlzdCB0ZW0pKSkgKGlm IHNwbGljZSAoc2V0cSBzcGxpY2UgbG9hZC1wYXRoKSkpIChzcGxpY2UgKHNldGNkciBzcGxpY2Ug KGNvbnMgdGVtIChjZHIgc3BsaWNlKSkpIChzZXRxIHNwbGljZSAoY2RyIHNwbGljZSkpKSAodCAo cHJvZ24gKHNldHEgbG9hZC1wYXRoIChjb25zIHRlbSBsb2FkLXBhdGgpKSAoc2V0cSBzcGxpY2Ug bG9hZC1wYXRoKSkpKSkpICgobWVtYmVyIGFyZ2kgJygiLWwiICItbG9hZCIpKSAobGV0KiAoKGZp bGUgKGNvbW1hbmQtbGluZS1ub3JtYWxpemUtZmlsZS1uYW1lIChvciBhcmd2YWwgKGNhci1zYWZl IChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxl ZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpKSAoZmlsZS1leCAoZmlsZS10cnVl bmFtZSAoZXhwYW5kLWZpbGUtbmFtZSBmaWxlKSkpKSAoaWYgKGZpbGUtcmVndWxhci1wIGZpbGUt ZXgpIChwcm9nbiAoc2V0cSBmaWxlIGZpbGUtZXgpKSkgKGxvYWQgZmlsZSBuaWwgdCkpKSAoKG1l bWJlciBhcmdpICcoIi1zY3JpcHRsb2FkIiAiLXNjcmlwdGV2YWwiKSkgKGxldCogKChmaWxlIChj b21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFtZSAob3IgYXJndmFsIChjYXItc2FmZSAocHJv ZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChj ZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSkgKGZpbGUtZXggKGV4cGFuZC1maWxlLW5h bWUgZmlsZSkpICh0cnVlbmFtZSAoZmlsZS10cnVlbmFtZSBmaWxlLWV4KSkpIChpZiAoZmlsZS1l eGlzdHMtcCB0cnVlbmFtZSkgKHByb2duIChzZXRxIGZpbGUtZXggdHJ1ZW5hbWUpKSkgKGlmIChl cXVhbCBhcmdpICItc2NyaXB0ZXZhbCIpIChjb21tYW5kLWxpbmUtLWV2YWwtc2NyaXB0IGZpbGUt ZXgpIChjb21tYW5kLWxpbmUtLWxvYWQtc2NyaXB0IGZpbGUtZXgpKSkpICgoZXF1YWwgYXJnaSAi LWluc2VydCIpIChzZXRxIGluaGliaXQtc3RhcnR1cC1zY3JlZW4gdCkgKHNldHEgdGVtIChvciBh cmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1h bmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpIChvciAo c3RyaW5ncCB0ZW0pIChlcnJvciAiRmlsZSBuYW1lIG9taXR0ZWQgZnJvbSBgLWluc2VydCcgb3B0 aW9uIikpIChpbnNlcnQtZmlsZS1jb250ZW50cyAoY29tbWFuZC1saW5lLW5vcm1hbGl6ZS1maWxl LW5hbWUgdGVtKSkpICgob3IgKGVxdWFsIGFyZ2kgIi1kdW1wLWZpbGUiKSAoZXF1YWwgYXJnaSAi LXNlY2NvbXAiKSkgKG9yIGFyZ3ZhbCAoY2FyLXNhZmUgKHByb2cxIGNvbW1hbmQtbGluZS1hcmdz LWxlZnQgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGluZS1hcmdz LWxlZnQpKSkpKSkgKChlcXVhbCBhcmdpICIta2lsbCIpIChraWxsLWVtYWNzIHQpKSAoKGVxdWFs IGFyZ2kgIi1uby1kZXNrdG9wIikgKG1lc3NhZ2UgIlwiLS1uby1kZXNrdG9wXCIgaWdub3JlZCBi ZWNhdXNlIHRoZSBEZXNrdG9wIHBhY2thZ2UgaXMgbm90IGxvYWRlZCIpKSAoKHN0cmluZy1tYXRj aCAiXlxcK1swLTldK1xcJyIgYXJnaSkgKHNldHEgbGluZSAoc3RyaW5nLXRvLW51bWJlciBhcmdp KSkpICgoc3RyaW5nLW1hdGNoICJeXFwrXFwoWzAtOV0rXFwpOlxcKFswLTldK1xcKVxcJyIgYXJn aSkgKHByb2duIChzZXRxIGxpbmUgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIGFy Z2kpKSkgKHNldHEgY29sdW1uIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMiBhcmdp KSkpKSkgKChzZXRxIHRlbSAoYXNzb2Mgb3JpZy1hcmdpIGNvbW1hbmQtbGluZS14LW9wdGlvbi1h bGlzdCkpIChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKG50aGNkciAobnRoIDEgdGVtKSBj b21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpICgoc2V0cSB0ZW0gKGFzc29jIG9yaWctYXJnaSBjb21t YW5kLWxpbmUtbnMtb3B0aW9uLWFsaXN0KSkgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAo bnRoY2RyIChudGggMSB0ZW0pIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkgKChtZW1iZXIgYXJn aSAnKCItZmluZC1maWxlIiAiLWZpbGUiICItdmlzaXQiKSkgKHNldHEgaW5oaWJpdC1zdGFydHVw LXNjcmVlbiB0KSAoc2V0cSB0ZW0gKG9yIGFyZ3ZhbCAoY2FyLXNhZmUgKHByb2cxIGNvbW1hbmQt bGluZS1hcmdzLWxlZnQgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQt bGluZS1hcmdzLWxlZnQpKSkpKSkgKGlmIChzdHJpbmdwIHRlbSkgbmlsIChlcnJvciAiRmlsZSBu YW1lIG9taXR0ZWQgZnJvbSBgJXMnIG9wdGlvbiIgYXJnaSkpIChmdW5jYWxsIHByb2Nlc3MtZmls ZS1hcmcgdGVtKSkgKChzdHJpbmctbWF0Y2ggIlxcYC0tP1xcKG5vLVxcKT9cXCh1bmlcXHxtdWx0 aVxcKWJ5dGUkIiBhcmdpKSAoZGlzcGxheS13YXJuaW5nICdpbml0aWFsaXphdGlvbiAoZm9ybWF0 ICJJZ25vcmluZyBvYnNvbGV0ZSBhcmcgJXMiIGFyZ2kpKSkgKChlcXVhbCBhcmdpICItLSIpIChz ZXRxIGp1c3QtZmlsZXMgdCkpICh0IChsZXQgKChob29rcyBjb21tYW5kLWxpbmUtZnVuY3Rpb25z KSAoZGlkLWhvb2sgbmlsKSkgKHdoaWxlIChhbmQgaG9va3MgKG5vdCAoc2V0cSBkaWQtaG9vayAo ZnVuY2FsbCAoY2FyIGhvb2tzKSkpKSkgKHNldHEgaG9va3MgKGNkciBob29rcykpKSAoaWYgZGlk LWhvb2sgbmlsIChpZiAoc3RyaW5nLW1hdGNoICJcXGAtIiBhcmdpKSAoZXJyb3IgIlVua25vd24g b3B0aW9uIGAlcyciIGFyZ2kpKSAoaWYgaW5pdGlhbC13aW5kb3ctc3lzdGVtIG5pbCAoc2V0cSBp bmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpKSAoZnVuY2FsbCBwcm9jZXNzLWZpbGUtYXJnIG9yaWct YXJnaSkpKSkpIChpZiAoZnJhbWUtbGl2ZS1wIChzZWxlY3RlZC1mcmFtZSkpIG5pbCAoa2lsbC1l bWFjcyBuaWwpKSkKICAod2hpbGUgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAobGV0KiAoKGFyZ2kg KGNhciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkgKG9yaWctYXJnaSBhcmdpKSBhcmd2YWwgY29t cGxldGlvbikgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGluZS1h cmdzLWxlZnQpKSAoaWYganVzdC1maWxlcyAoc2V0cSBhcmdpICIiKSAoaWYgKHN0cmluZy1tYXRj aCAiXFxgXFwoLS1bXj1dKlxcKT0iIGFyZ2kpIChwcm9nbiAocHJvZ24gKHNldHEgYXJndmFsIChz dWJzdHJpbmcgYXJnaSAobWF0Y2gtZW5kIDApKSkgKHNldHEgYXJnaSAobWF0Y2gtc3RyaW5nIDEg YXJnaSkpKSkpIChpZiAoc3RyaW5nLW1hdGNoICJcXGAtLT9bXi1dIiBvcmlnLWFyZ2kpIChwcm9n biAoc2V0cSBjb21wbGV0aW9uICh0cnktY29tcGxldGlvbiBhcmdpIGxvbmdvcHRzKSkgKGlmIChl cSBjb21wbGV0aW9uIHQpIChzZXRxIGFyZ2kgKHN1YnN0cmluZyBhcmdpIDEpKSAoaWYgKHN0cmlu Z3AgY29tcGxldGlvbikgKGxldCAoKGVsdCAobWVtYmVyIGNvbXBsZXRpb24gbG9uZ29wdHMpKSkg KG9yIGVsdCAoZXJyb3IgIk9wdGlvbiBgJXMnIGlzIGFtYmlndW91cyIgYXJnaSkpIChzZXRxIGFy Z2kgKHN1YnN0cmluZyAoY2FyIGVsdCkgMSkpKSAocHJvZ24gKHNldHEgYXJndmFsIG5pbCkgKHNl dHEgYXJnaSBvcmlnLWFyZ2kpKSkpKSkpIChjb25kICgoc2V0cSB0ZW0gKGFzc29jIGFyZ2kgY29t bWFuZC1zd2l0Y2gtYWxpc3QpKSAoaWYgYXJndmFsIChsZXQgKChjb21tYW5kLWxpbmUtYXJncy1s ZWZ0IChjb25zIGFyZ3ZhbCBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpIChmdW5jYWxsIChjZHIg dGVtKSBhcmdpKSkgKGZ1bmNhbGwgKGNkciB0ZW0pIGFyZ2kpKSkgKChlcXVhbCBhcmdpICItbm8t c3BsYXNoIikgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSkgKChtZW1iZXIgYXJnaSAn KCItZiIgIi1mdW5jYWxsIiAiLWUiKSkgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSAo c2V0cSB0ZW0gKGludGVybiAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5l LWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5l LWFyZ3MtbGVmdCkpKSkpKSkgKGlmIChjb21tYW5kcCB0ZW0pIChjb21tYW5kLWV4ZWN1dGUgdGVt KSAoZnVuY2FsbCB0ZW0pKSkgKChtZW1iZXIgYXJnaSAnKCItZXZhbCIgIi1leGVjdXRlIikpIChz ZXRxIGluaGliaXQtc3RhcnR1cC1zY3JlZW4gdCkgKGxldCogKChzdHItZXhwciAob3IgYXJndmFs IChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxp bmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSAocmVhZC1kYXRh IChyZWFkLWZyb20tc3RyaW5nIHN0ci1leHByKSkgKGV4cHIgKGNhciByZWFkLWRhdGEpKSAoZW5k IChjZHIgcmVhZC1kYXRhKSkpIChpZiAoc3RyaW5nLW1hdGNoLXAgIlsgXDExXG5dKlxcJyIgc3Ry LWV4cHIgZW5kKSBuaWwgKGVycm9yICJUcmFpbGluZyBnYXJiYWdlIGZvbGxvd2luZyBleHByZXNz aW9uOiAlcyIgKHN1YnN0cmluZyBzdHItZXhwciBlbmQpKSkgKGV2YWwgZXhwciB0KSkpICgobWVt YmVyIGFyZ2kgJygiLUwiICItZGlyZWN0b3J5IikpIChsZXQgKGFwcGVuZCkgKGlmIChzdHJpbmct bWF0Y2gtcCAoZm9ybWF0ICJcXGAlcyIgcGF0aC1zZXBhcmF0b3IpIChzZXRxIHRlbSAob3IgYXJn dmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5k LWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSkgKHByb2du IChzZXRxIHRlbSAoc3Vic3RyaW5nIHRlbSAxKSkgKHNldHEgYXBwZW5kIHQpKSkgKHNldHEgdGVt IChleHBhbmQtZmlsZS1uYW1lIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFtZSB0ZW0p KSkgKGNvbmQgKGFwcGVuZCAoc2V0cSBsb2FkLXBhdGggKGFwcGVuZCBsb2FkLXBhdGggKGxpc3Qg dGVtKSkpIChpZiBzcGxpY2UgKHNldHEgc3BsaWNlIGxvYWQtcGF0aCkpKSAoc3BsaWNlIChzZXRj ZHIgc3BsaWNlIChjb25zIHRlbSAoY2RyIHNwbGljZSkpKSAoc2V0cSBzcGxpY2UgKGNkciBzcGxp Y2UpKSkgKHQgKHByb2duIChzZXRxIGxvYWQtcGF0aCAoY29ucyB0ZW0gbG9hZC1wYXRoKSkgKHNl dHEgc3BsaWNlIGxvYWQtcGF0aCkpKSkpKSAoKG1lbWJlciBhcmdpICcoIi1sIiAiLWxvYWQiKSkg KGxldCogKChmaWxlIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFtZSAob3IgYXJndmFs IChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxp bmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSkgKGZpbGUtZXgg KGZpbGUtdHJ1ZW5hbWUgKGV4cGFuZC1maWxlLW5hbWUgZmlsZSkpKSkgKGlmIChmaWxlLXJlZ3Vs YXItcCBmaWxlLWV4KSAocHJvZ24gKHNldHEgZmlsZSBmaWxlLWV4KSkpIChsb2FkIGZpbGUgbmls IHQpKSkgKChtZW1iZXIgYXJnaSAnKCItc2NyaXB0bG9hZCIgIi1zY3JpcHRldmFsIikpIChsZXQq ICgoZmlsZSAoY29tbWFuZC1saW5lLW5vcm1hbGl6ZS1maWxlLW5hbWUgKG9yIGFyZ3ZhbCAoY2Fy LXNhZmUgKHByb2cxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKHNldHEgY29tbWFuZC1saW5lLWFy Z3MtbGVmdCAoY2RyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkpKSkpIChmaWxlLWV4IChleHBh bmQtZmlsZS1uYW1lIGZpbGUpKSAodHJ1ZW5hbWUgKGZpbGUtdHJ1ZW5hbWUgZmlsZS1leCkpKSAo aWYgKGZpbGUtZXhpc3RzLXAgdHJ1ZW5hbWUpIChwcm9nbiAoc2V0cSBmaWxlLWV4IHRydWVuYW1l KSkpIChpZiAoZXF1YWwgYXJnaSAiLXNjcmlwdGV2YWwiKSAoY29tbWFuZC1saW5lLS1ldmFsLXNj cmlwdCBmaWxlLWV4KSAoY29tbWFuZC1saW5lLS1sb2FkLXNjcmlwdCBmaWxlLWV4KSkpKSAoKGVx dWFsIGFyZ2kgIi1pbnNlcnQiKSAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpIChzZXRx IHRlbSAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAo c2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkp KSkpKSAob3IgKHN0cmluZ3AgdGVtKSAoZXJyb3IgIkZpbGUgbmFtZSBvbWl0dGVkIGZyb20gYC1p bnNlcnQnIG9wdGlvbiIpKSAoaW5zZXJ0LWZpbGUtY29udGVudHMgKGNvbW1hbmQtbGluZS1ub3Jt YWxpemUtZmlsZS1uYW1lIHRlbSkpKSAoKG9yIChlcXVhbCBhcmdpICItZHVtcC1maWxlIikgKGVx dWFsIGFyZ2kgIi1zZWNjb21wIikpIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5k LWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5k LWxpbmUtYXJncy1sZWZ0KSkpKSkpICgoZXF1YWwgYXJnaSAiLWtpbGwiKSAoa2lsbC1lbWFjcyB0 KSkgKChlcXVhbCBhcmdpICItbm8tZGVza3RvcCIpIChtZXNzYWdlICJcIi0tbm8tZGVza3RvcFwi IGlnbm9yZWQgYmVjYXVzZSB0aGUgRGVza3RvcCBwYWNrYWdlIGlzIG5vdCBsb2FkZWQiKSkgKChz dHJpbmctbWF0Y2ggIl5cXCtbMC05XStcXCciIGFyZ2kpIChzZXRxIGxpbmUgKHN0cmluZy10by1u dW1iZXIgYXJnaSkpKSAoKHN0cmluZy1tYXRjaCAiXlxcK1xcKFswLTldK1xcKTpcXChbMC05XStc XClcXCciIGFyZ2kpIChwcm9nbiAoc2V0cSBsaW5lIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1z dHJpbmcgMSBhcmdpKSkpIChzZXRxIGNvbHVtbiAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3Ry aW5nIDIgYXJnaSkpKSkpICgoc2V0cSB0ZW0gKGFzc29jIG9yaWctYXJnaSBjb21tYW5kLWxpbmUt eC1vcHRpb24tYWxpc3QpKSAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChudGhjZHIgKG50 aCAxIHRlbSkgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSAoKHNldHEgdGVtIChhc3NvYyBvcmln LWFyZ2kgY29tbWFuZC1saW5lLW5zLW9wdGlvbi1hbGlzdCkpIChzZXRxIGNvbW1hbmQtbGluZS1h cmdzLWxlZnQgKG50aGNkciAobnRoIDEgdGVtKSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpICgo bWVtYmVyIGFyZ2kgJygiLWZpbmQtZmlsZSIgIi1maWxlIiAiLXZpc2l0IikpIChzZXRxIGluaGli aXQtc3RhcnR1cC1zY3JlZW4gdCkgKHNldHEgdGVtIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9n MSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNk ciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpIChpZiAoc3RyaW5ncCB0ZW0pIG5pbCAoZXJy b3IgIkZpbGUgbmFtZSBvbWl0dGVkIGZyb20gYCVzJyBvcHRpb24iIGFyZ2kpKSAoZnVuY2FsbCBw cm9jZXNzLWZpbGUtYXJnIHRlbSkpICgoc3RyaW5nLW1hdGNoICJcXGAtLT9cXChuby1cXCk/XFwo dW5pXFx8bXVsdGlcXClieXRlJCIgYXJnaSkgKGRpc3BsYXktd2FybmluZyAnaW5pdGlhbGl6YXRp b24gKGZvcm1hdCAiSWdub3Jpbmcgb2Jzb2xldGUgYXJnICVzIiBhcmdpKSkpICgoZXF1YWwgYXJn aSAiLS0iKSAoc2V0cSBqdXN0LWZpbGVzIHQpKSAodCAobGV0ICgoaG9va3MgY29tbWFuZC1saW5l LWZ1bmN0aW9ucykgKGRpZC1ob29rIG5pbCkpICh3aGlsZSAoYW5kIGhvb2tzIChub3QgKHNldHEg ZGlkLWhvb2sgKGZ1bmNhbGwgKGNhciBob29rcykpKSkpIChzZXRxIGhvb2tzIChjZHIgaG9va3Mp KSkgKGlmIGRpZC1ob29rIG5pbCAoaWYgKHN0cmluZy1tYXRjaCAiXFxgLSIgYXJnaSkgKGVycm9y ICJVbmtub3duIG9wdGlvbiBgJXMnIiBhcmdpKSkgKGlmIGluaXRpYWwtd2luZG93LXN5c3RlbSBu aWwgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSkgKGZ1bmNhbGwgcHJvY2Vzcy1maWxl LWFyZyBvcmlnLWFyZ2kpKSkpKSAoaWYgKGZyYW1lLWxpdmUtcCAoc2VsZWN0ZWQtZnJhbWUpKSBu aWwgKGtpbGwtZW1hY3MgbmlsKSkpKQogIChsZXQqICgoZGlyIGNvbW1hbmQtbGluZS1kZWZhdWx0 LWRpcmVjdG9yeSkgdGVtIHNwbGljZSBqdXN0LWZpbGVzIChsb25nb3B0cyAoYXBwZW5kICcoIi0t ZnVuY2FsbCIgIi0tbG9hZCIgIi0taW5zZXJ0IiAiLS1raWxsIiAiLS1kdW1wLWZpbGUiICItLXNl Y2NvbXAiICItLWRpcmVjdG9yeSIgIi0tZXZhbCIgIi0tZXhlY3V0ZSIgIi0tbm8tc3BsYXNoIiAi LS1maW5kLWZpbGUiICItLXZpc2l0IiAiLS1maWxlIiAiLS1uby1kZXNrdG9wIikgKG1hcGNhciAj JyhsYW1iZGEgKGVsdCkgKGNvbmNhdCAiLSIgKGNhciBlbHQpKSkgY29tbWFuZC1zd2l0Y2gtYWxp c3QpKSkgKGxpbmUgMCkgKGNvbHVtbiAwKSAocHJvY2Vzcy1maWxlLWFyZyAjJyhsYW1iZGEgKG5h bWUpIChpZiAobm90IChvciBkaXIgKGZpbGUtbmFtZS1hYnNvbHV0ZS1wIG5hbWUpKSkgKG1lc3Nh Z2UgIklnbm9yaW5nIHJlbGF0aXZlIGZpbGUgbmFtZSAoJXMpIGR1ZSB0byBuaWwgZGVmYXVsdC1k aXJlY3RvcnkiIG5hbWUpIChsZXQqICgoZmlsZSAoZXhwYW5kLWZpbGUtbmFtZSAoY29tbWFuZC1s aW5lLW5vcm1hbGl6ZS1maWxlLW5hbWUgbmFtZSkgZGlyKSkgKGJ1ZiAoZmluZC1maWxlLW5vc2Vs ZWN0IGZpbGUpKSkgKGZpbGUtbmFtZS1oaXN0b3J5LS1hZGQgZmlsZSkgKHNldHEgZGlzcGxheWFi bGUtYnVmZmVycyAoY29ucyBidWYgZGlzcGxheWFibGUtYnVmZmVycykpIChzZXQtYnVmZmVyIGJ1 ZikgKGlmICg9IDAgbGluZSkgbmlsIChnb3RvLWNoYXIgKHBvaW50LW1pbikpIChmb3J3YXJkLWxp bmUgKDEtIGxpbmUpKSkgKHNldHEgbGluZSAwKSAoaWYgKDwgY29sdW1uIDEpIG5pbCAobW92ZS10 by1jb2x1bW4gKDEtIGNvbHVtbikpKSAoc2V0cSBjb2x1bW4gMCkpKSkpKSAobGV0ICgodGFpbCBj b21tYW5kLWxpbmUteC1vcHRpb24tYWxpc3QpKSAod2hpbGUgdGFpbCAobGV0ICgodGVtIChjYXIg dGFpbCkpKSAoaWYgKHN0cmluZy1tYXRjaCAiXi0tIiAoY2FyIHRlbSkpIChzZXRxIGxvbmdvcHRz IChjb25zIChjYXIgdGVtKSBsb25nb3B0cykpKSAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKSkpIChs ZXQgKCh0YWlsIGNvbW1hbmQtbGluZS1ucy1vcHRpb24tYWxpc3QpKSAod2hpbGUgdGFpbCAobGV0 ICgodGVtIChjYXIgdGFpbCkpKSAoaWYgKHN0cmluZy1tYXRjaCAiXi0tIiAoY2FyIHRlbSkpIChz ZXRxIGxvbmdvcHRzIChjb25zIChsaXN0IChjYXIgdGVtKSkgbG9uZ29wdHMpKSkgKHNldHEgdGFp bCAoY2RyIHRhaWwpKSkpKSAod2hpbGUgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAobGV0KiAoKGFy Z2kgKGNhciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkgKG9yaWctYXJnaSBhcmdpKSBhcmd2YWwg Y29tcGxldGlvbikgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGlu ZS1hcmdzLWxlZnQpKSAoaWYganVzdC1maWxlcyAoc2V0cSBhcmdpICIiKSAoaWYgKHN0cmluZy1t YXRjaCAiXFxgXFwoLS1bXj1dKlxcKT0iIGFyZ2kpIChwcm9nbiAocHJvZ24gKHNldHEgYXJndmFs IChzdWJzdHJpbmcgYXJnaSAobWF0Y2gtZW5kIDApKSkgKHNldHEgYXJnaSAobWF0Y2gtc3RyaW5n IDEgYXJnaSkpKSkpIChpZiAoc3RyaW5nLW1hdGNoICJcXGAtLT9bXi1dIiBvcmlnLWFyZ2kpIChw cm9nbiAoc2V0cSBjb21wbGV0aW9uICh0cnktY29tcGxldGlvbiBhcmdpIGxvbmdvcHRzKSkgKGlm IChlcSBjb21wbGV0aW9uIHQpIChzZXRxIGFyZ2kgKHN1YnN0cmluZyBhcmdpIDEpKSAoaWYgKHN0 cmluZ3AgY29tcGxldGlvbikgKGxldCAoKGVsdCAobWVtYmVyIGNvbXBsZXRpb24gbG9uZ29wdHMp KSkgKG9yIGVsdCAoZXJyb3IgIk9wdGlvbiBgJXMnIGlzIGFtYmlndW91cyIgYXJnaSkpIChzZXRx IGFyZ2kgKHN1YnN0cmluZyAoY2FyIGVsdCkgMSkpKSAocHJvZ24gKHNldHEgYXJndmFsIG5pbCkg KHNldHEgYXJnaSBvcmlnLWFyZ2kpKSkpKSkpIChjb25kICgoc2V0cSB0ZW0gKGFzc29jIGFyZ2kg Y29tbWFuZC1zd2l0Y2gtYWxpc3QpKSAoaWYgYXJndmFsIChsZXQgKChjb21tYW5kLWxpbmUtYXJn cy1sZWZ0IChjb25zIGFyZ3ZhbCBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpIChmdW5jYWxsIChj ZHIgdGVtKSBhcmdpKSkgKGZ1bmNhbGwgKGNkciB0ZW0pIGFyZ2kpKSkgKChlcXVhbCBhcmdpICIt bm8tc3BsYXNoIikgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSkgKChtZW1iZXIgYXJn aSAnKCItZiIgIi1mdW5jYWxsIiAiLWUiKSkgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0 KSAoc2V0cSB0ZW0gKGludGVybiAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1s aW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1s aW5lLWFyZ3MtbGVmdCkpKSkpKSkgKGlmIChjb21tYW5kcCB0ZW0pIChjb21tYW5kLWV4ZWN1dGUg dGVtKSAoZnVuY2FsbCB0ZW0pKSkgKChtZW1iZXIgYXJnaSAnKCItZXZhbCIgIi1leGVjdXRlIikp IChzZXRxIGluaGliaXQtc3RhcnR1cC1zY3JlZW4gdCkgKGxldCogKChzdHItZXhwciAob3IgYXJn dmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5k LWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSAocmVhZC1k YXRhIChyZWFkLWZyb20tc3RyaW5nIHN0ci1leHByKSkgKGV4cHIgKGNhciByZWFkLWRhdGEpKSAo ZW5kIChjZHIgcmVhZC1kYXRhKSkpIChpZiAoc3RyaW5nLW1hdGNoLXAgIlsgXDExXG5dKlxcJyIg c3RyLWV4cHIgZW5kKSBuaWwgKGVycm9yICJUcmFpbGluZyBnYXJiYWdlIGZvbGxvd2luZyBleHBy ZXNzaW9uOiAlcyIgKHN1YnN0cmluZyBzdHItZXhwciBlbmQpKSkgKGV2YWwgZXhwciB0KSkpICgo bWVtYmVyIGFyZ2kgJygiLUwiICItZGlyZWN0b3J5IikpIChsZXQgKGFwcGVuZCkgKGlmIChzdHJp bmctbWF0Y2gtcCAoZm9ybWF0ICJcXGAlcyIgcGF0aC1zZXBhcmF0b3IpIChzZXRxIHRlbSAob3Ig YXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21t YW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSkgKHBy b2duIChzZXRxIHRlbSAoc3Vic3RyaW5nIHRlbSAxKSkgKHNldHEgYXBwZW5kIHQpKSkgKHNldHEg dGVtIChleHBhbmQtZmlsZS1uYW1lIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFtZSB0 ZW0pKSkgKGNvbmQgKGFwcGVuZCAoc2V0cSBsb2FkLXBhdGggKGFwcGVuZCBsb2FkLXBhdGggKGxp c3QgdGVtKSkpIChpZiBzcGxpY2UgKHNldHEgc3BsaWNlIGxvYWQtcGF0aCkpKSAoc3BsaWNlIChz ZXRjZHIgc3BsaWNlIChjb25zIHRlbSAoY2RyIHNwbGljZSkpKSAoc2V0cSBzcGxpY2UgKGNkciBz cGxpY2UpKSkgKHQgKHByb2duIChzZXRxIGxvYWQtcGF0aCAoY29ucyB0ZW0gbG9hZC1wYXRoKSkg KHNldHEgc3BsaWNlIGxvYWQtcGF0aCkpKSkpKSAoKG1lbWJlciBhcmdpICcoIi1sIiAiLWxvYWQi KSkgKGxldCogKChmaWxlIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFtZSAob3IgYXJn dmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5k LWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSkgKGZpbGUt ZXggKGZpbGUtdHJ1ZW5hbWUgKGV4cGFuZC1maWxlLW5hbWUgZmlsZSkpKSkgKGlmIChmaWxlLXJl Z3VsYXItcCBmaWxlLWV4KSAocHJvZ24gKHNldHEgZmlsZSBmaWxlLWV4KSkpIChsb2FkIGZpbGUg bmlsIHQpKSkgKChtZW1iZXIgYXJnaSAnKCItc2NyaXB0bG9hZCIgIi1zY3JpcHRldmFsIikpIChs ZXQqICgoZmlsZSAoY29tbWFuZC1saW5lLW5vcm1hbGl6ZS1maWxlLW5hbWUgKG9yIGFyZ3ZhbCAo Y2FyLXNhZmUgKHByb2cxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKHNldHEgY29tbWFuZC1saW5l LWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkpKSkpIChmaWxlLWV4IChl eHBhbmQtZmlsZS1uYW1lIGZpbGUpKSAodHJ1ZW5hbWUgKGZpbGUtdHJ1ZW5hbWUgZmlsZS1leCkp KSAoaWYgKGZpbGUtZXhpc3RzLXAgdHJ1ZW5hbWUpIChwcm9nbiAoc2V0cSBmaWxlLWV4IHRydWVu YW1lKSkpIChpZiAoZXF1YWwgYXJnaSAiLXNjcmlwdGV2YWwiKSAoY29tbWFuZC1saW5lLS1ldmFs LXNjcmlwdCBmaWxlLWV4KSAoY29tbWFuZC1saW5lLS1sb2FkLXNjcmlwdCBmaWxlLWV4KSkpKSAo KGVxdWFsIGFyZ2kgIi1pbnNlcnQiKSAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpIChz ZXRxIHRlbSAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVm dCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVm dCkpKSkpKSAob3IgKHN0cmluZ3AgdGVtKSAoZXJyb3IgIkZpbGUgbmFtZSBvbWl0dGVkIGZyb20g YC1pbnNlcnQnIG9wdGlvbiIpKSAoaW5zZXJ0LWZpbGUtY29udGVudHMgKGNvbW1hbmQtbGluZS1u b3JtYWxpemUtZmlsZS1uYW1lIHRlbSkpKSAoKG9yIChlcXVhbCBhcmdpICItZHVtcC1maWxlIikg KGVxdWFsIGFyZ2kgIi1zZWNjb21wIikpIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21t YW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21t YW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpICgoZXF1YWwgYXJnaSAiLWtpbGwiKSAoa2lsbC1lbWFj cyB0KSkgKChlcXVhbCBhcmdpICItbm8tZGVza3RvcCIpIChtZXNzYWdlICJcIi0tbm8tZGVza3Rv cFwiIGlnbm9yZWQgYmVjYXVzZSB0aGUgRGVza3RvcCBwYWNrYWdlIGlzIG5vdCBsb2FkZWQiKSkg KChzdHJpbmctbWF0Y2ggIl5cXCtbMC05XStcXCciIGFyZ2kpIChzZXRxIGxpbmUgKHN0cmluZy10 by1udW1iZXIgYXJnaSkpKSAoKHN0cmluZy1tYXRjaCAiXlxcK1xcKFswLTldK1xcKTpcXChbMC05 XStcXClcXCciIGFyZ2kpIChwcm9nbiAoc2V0cSBsaW5lIChzdHJpbmctdG8tbnVtYmVyIChtYXRj aC1zdHJpbmcgMSBhcmdpKSkpIChzZXRxIGNvbHVtbiAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gt c3RyaW5nIDIgYXJnaSkpKSkpICgoc2V0cSB0ZW0gKGFzc29jIG9yaWctYXJnaSBjb21tYW5kLWxp bmUteC1vcHRpb24tYWxpc3QpKSAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChudGhjZHIg KG50aCAxIHRlbSkgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSAoKHNldHEgdGVtIChhc3NvYyBv cmlnLWFyZ2kgY29tbWFuZC1saW5lLW5zLW9wdGlvbi1hbGlzdCkpIChzZXRxIGNvbW1hbmQtbGlu ZS1hcmdzLWxlZnQgKG50aGNkciAobnRoIDEgdGVtKSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkp ICgobWVtYmVyIGFyZ2kgJygiLWZpbmQtZmlsZSIgIi1maWxlIiAiLXZpc2l0IikpIChzZXRxIGlu aGliaXQtc3RhcnR1cC1zY3JlZW4gdCkgKHNldHEgdGVtIChvciBhcmd2YWwgKGNhci1zYWZlIChw cm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQg KGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpIChpZiAoc3RyaW5ncCB0ZW0pIG5pbCAo ZXJyb3IgIkZpbGUgbmFtZSBvbWl0dGVkIGZyb20gYCVzJyBvcHRpb24iIGFyZ2kpKSAoZnVuY2Fs bCBwcm9jZXNzLWZpbGUtYXJnIHRlbSkpICgoc3RyaW5nLW1hdGNoICJcXGAtLT9cXChuby1cXCk/ XFwodW5pXFx8bXVsdGlcXClieXRlJCIgYXJnaSkgKGRpc3BsYXktd2FybmluZyAnaW5pdGlhbGl6 YXRpb24gKGZvcm1hdCAiSWdub3Jpbmcgb2Jzb2xldGUgYXJnICVzIiBhcmdpKSkpICgoZXF1YWwg YXJnaSAiLS0iKSAoc2V0cSBqdXN0LWZpbGVzIHQpKSAodCAobGV0ICgoaG9va3MgY29tbWFuZC1s aW5lLWZ1bmN0aW9ucykgKGRpZC1ob29rIG5pbCkpICh3aGlsZSAoYW5kIGhvb2tzIChub3QgKHNl dHEgZGlkLWhvb2sgKGZ1bmNhbGwgKGNhciBob29rcykpKSkpIChzZXRxIGhvb2tzIChjZHIgaG9v a3MpKSkgKGlmIGRpZC1ob29rIG5pbCAoaWYgKHN0cmluZy1tYXRjaCAiXFxgLSIgYXJnaSkgKGVy cm9yICJVbmtub3duIG9wdGlvbiBgJXMnIiBhcmdpKSkgKGlmIGluaXRpYWwtd2luZG93LXN5c3Rl bSBuaWwgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSkgKGZ1bmNhbGwgcHJvY2Vzcy1m aWxlLWFyZyBvcmlnLWFyZ2kpKSkpKSAoaWYgKGZyYW1lLWxpdmUtcCAoc2VsZWN0ZWQtZnJhbWUp KSBuaWwgKGtpbGwtZW1hY3MgbmlsKSkpKSkKICAocHJvZ24gKGxldCogKChkaXIgY29tbWFuZC1s aW5lLWRlZmF1bHQtZGlyZWN0b3J5KSB0ZW0gc3BsaWNlIGp1c3QtZmlsZXMgKGxvbmdvcHRzIChh cHBlbmQgJygiLS1mdW5jYWxsIiAiLS1sb2FkIiAiLS1pbnNlcnQiICItLWtpbGwiICItLWR1bXAt ZmlsZSIgIi0tc2VjY29tcCIgIi0tZGlyZWN0b3J5IiAiLS1ldmFsIiAiLS1leGVjdXRlIiAiLS1u by1zcGxhc2giICItLWZpbmQtZmlsZSIgIi0tdmlzaXQiICItLWZpbGUiICItLW5vLWRlc2t0b3Ai KSAobWFwY2FyICMnKGxhbWJkYSAoZWx0KSAoY29uY2F0ICItIiAoY2FyIGVsdCkpKSBjb21tYW5k LXN3aXRjaC1hbGlzdCkpKSAobGluZSAwKSAoY29sdW1uIDApIChwcm9jZXNzLWZpbGUtYXJnICMn KGxhbWJkYSAobmFtZSkgKGlmIChub3QgKG9yIGRpciAoZmlsZS1uYW1lLWFic29sdXRlLXAgbmFt ZSkpKSAobWVzc2FnZSAiSWdub3JpbmcgcmVsYXRpdmUgZmlsZSBuYW1lICglcykgZHVlIHRvIG5p bCBkZWZhdWx0LWRpcmVjdG9yeSIgbmFtZSkgKGxldCogKChmaWxlIChleHBhbmQtZmlsZS1uYW1l IChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFtZSBuYW1lKSBkaXIpKSAoYnVmIChmaW5k LWZpbGUtbm9zZWxlY3QgZmlsZSkpKSAoZmlsZS1uYW1lLWhpc3RvcnktLWFkZCBmaWxlKSAoc2V0 cSBkaXNwbGF5YWJsZS1idWZmZXJzIChjb25zIGJ1ZiBkaXNwbGF5YWJsZS1idWZmZXJzKSkgKHNl dC1idWZmZXIgYnVmKSAoaWYgKD0gMCBsaW5lKSBuaWwgKGdvdG8tY2hhciAocG9pbnQtbWluKSkg KGZvcndhcmQtbGluZSAoMS0gbGluZSkpKSAoc2V0cSBsaW5lIDApIChpZiAoPCBjb2x1bW4gMSkg bmlsIChtb3ZlLXRvLWNvbHVtbiAoMS0gY29sdW1uKSkpIChzZXRxIGNvbHVtbiAwKSkpKSkpIChs ZXQgKCh0YWlsIGNvbW1hbmQtbGluZS14LW9wdGlvbi1hbGlzdCkpICh3aGlsZSB0YWlsIChsZXQg KCh0ZW0gKGNhciB0YWlsKSkpIChpZiAoc3RyaW5nLW1hdGNoICJeLS0iIChjYXIgdGVtKSkgKHNl dHEgbG9uZ29wdHMgKGNvbnMgKGNhciB0ZW0pIGxvbmdvcHRzKSkpIChzZXRxIHRhaWwgKGNkciB0 YWlsKSkpKSkgKGxldCAoKHRhaWwgY29tbWFuZC1saW5lLW5zLW9wdGlvbi1hbGlzdCkpICh3aGls ZSB0YWlsIChsZXQgKCh0ZW0gKGNhciB0YWlsKSkpIChpZiAoc3RyaW5nLW1hdGNoICJeLS0iIChj YXIgdGVtKSkgKHNldHEgbG9uZ29wdHMgKGNvbnMgKGxpc3QgKGNhciB0ZW0pKSBsb25nb3B0cykp KSAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKSkpICh3aGlsZSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0 IChsZXQqICgoYXJnaSAoY2FyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSAob3JpZy1hcmdpIGFy Z2kpIGFyZ3ZhbCBjb21wbGV0aW9uKSAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIg Y29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpIChpZiBqdXN0LWZpbGVzIChzZXRxIGFyZ2kgIiIpIChp ZiAoc3RyaW5nLW1hdGNoICJcXGBcXCgtLVtePV0qXFwpPSIgYXJnaSkgKHByb2duIChwcm9nbiAo c2V0cSBhcmd2YWwgKHN1YnN0cmluZyBhcmdpIChtYXRjaC1lbmQgMCkpKSAoc2V0cSBhcmdpICht YXRjaC1zdHJpbmcgMSBhcmdpKSkpKSkgKGlmIChzdHJpbmctbWF0Y2ggIlxcYC0tP1teLV0iIG9y aWctYXJnaSkgKHByb2duIChzZXRxIGNvbXBsZXRpb24gKHRyeS1jb21wbGV0aW9uIGFyZ2kgbG9u Z29wdHMpKSAoaWYgKGVxIGNvbXBsZXRpb24gdCkgKHNldHEgYXJnaSAoc3Vic3RyaW5nIGFyZ2kg MSkpIChpZiAoc3RyaW5ncCBjb21wbGV0aW9uKSAobGV0ICgoZWx0IChtZW1iZXIgY29tcGxldGlv biBsb25nb3B0cykpKSAob3IgZWx0IChlcnJvciAiT3B0aW9uIGAlcycgaXMgYW1iaWd1b3VzIiBh cmdpKSkgKHNldHEgYXJnaSAoc3Vic3RyaW5nIChjYXIgZWx0KSAxKSkpIChwcm9nbiAoc2V0cSBh cmd2YWwgbmlsKSAoc2V0cSBhcmdpIG9yaWctYXJnaSkpKSkpKSkgKGNvbmQgKChzZXRxIHRlbSAo YXNzb2MgYXJnaSBjb21tYW5kLXN3aXRjaC1hbGlzdCkpIChpZiBhcmd2YWwgKGxldCAoKGNvbW1h bmQtbGluZS1hcmdzLWxlZnQgKGNvbnMgYXJndmFsIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkg KGZ1bmNhbGwgKGNkciB0ZW0pIGFyZ2kpKSAoZnVuY2FsbCAoY2RyIHRlbSkgYXJnaSkpKSAoKGVx dWFsIGFyZ2kgIi1uby1zcGxhc2giKSAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpKSAo KG1lbWJlciBhcmdpICcoIi1mIiAiLWZ1bmNhbGwiICItZSIpKSAoc2V0cSBpbmhpYml0LXN0YXJ0 dXAtc2NyZWVuIHQpIChzZXRxIHRlbSAoaW50ZXJuIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9n MSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNk ciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpKSAoaWYgKGNvbW1hbmRwIHRlbSkgKGNvbW1h bmQtZXhlY3V0ZSB0ZW0pIChmdW5jYWxsIHRlbSkpKSAoKG1lbWJlciBhcmdpICcoIi1ldmFsIiAi LWV4ZWN1dGUiKSkgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSAobGV0KiAoKHN0ci1l eHByIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChz ZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkp KSkpIChyZWFkLWRhdGEgKHJlYWQtZnJvbS1zdHJpbmcgc3RyLWV4cHIpKSAoZXhwciAoY2FyIHJl YWQtZGF0YSkpIChlbmQgKGNkciByZWFkLWRhdGEpKSkgKGlmIChzdHJpbmctbWF0Y2gtcCAiWyBc MTFcbl0qXFwnIiBzdHItZXhwciBlbmQpIG5pbCAoZXJyb3IgIlRyYWlsaW5nIGdhcmJhZ2UgZm9s bG93aW5nIGV4cHJlc3Npb246ICVzIiAoc3Vic3RyaW5nIHN0ci1leHByIGVuZCkpKSAoZXZhbCBl eHByIHQpKSkgKChtZW1iZXIgYXJnaSAnKCItTCIgIi1kaXJlY3RvcnkiKSkgKGxldCAoYXBwZW5k KSAoaWYgKHN0cmluZy1tYXRjaC1wIChmb3JtYXQgIlxcYCVzIiBwYXRoLXNlcGFyYXRvcikgKHNl dHEgdGVtIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0 IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0 KSkpKSkpKSAocHJvZ24gKHNldHEgdGVtIChzdWJzdHJpbmcgdGVtIDEpKSAoc2V0cSBhcHBlbmQg dCkpKSAoc2V0cSB0ZW0gKGV4cGFuZC1maWxlLW5hbWUgKGNvbW1hbmQtbGluZS1ub3JtYWxpemUt ZmlsZS1uYW1lIHRlbSkpKSAoY29uZCAoYXBwZW5kIChzZXRxIGxvYWQtcGF0aCAoYXBwZW5kIGxv YWQtcGF0aCAobGlzdCB0ZW0pKSkgKGlmIHNwbGljZSAoc2V0cSBzcGxpY2UgbG9hZC1wYXRoKSkp IChzcGxpY2UgKHNldGNkciBzcGxpY2UgKGNvbnMgdGVtIChjZHIgc3BsaWNlKSkpIChzZXRxIHNw bGljZSAoY2RyIHNwbGljZSkpKSAodCAocHJvZ24gKHNldHEgbG9hZC1wYXRoIChjb25zIHRlbSBs b2FkLXBhdGgpKSAoc2V0cSBzcGxpY2UgbG9hZC1wYXRoKSkpKSkpICgobWVtYmVyIGFyZ2kgJygi LWwiICItbG9hZCIpKSAobGV0KiAoKGZpbGUgKGNvbW1hbmQtbGluZS1ub3JtYWxpemUtZmlsZS1u YW1lIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChz ZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkp KSkpKSAoZmlsZS1leCAoZmlsZS10cnVlbmFtZSAoZXhwYW5kLWZpbGUtbmFtZSBmaWxlKSkpKSAo aWYgKGZpbGUtcmVndWxhci1wIGZpbGUtZXgpIChwcm9nbiAoc2V0cSBmaWxlIGZpbGUtZXgpKSkg KGxvYWQgZmlsZSBuaWwgdCkpKSAoKG1lbWJlciBhcmdpICcoIi1zY3JpcHRsb2FkIiAiLXNjcmlw dGV2YWwiKSkgKGxldCogKChmaWxlIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFtZSAo b3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBj b21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSkg KGZpbGUtZXggKGV4cGFuZC1maWxlLW5hbWUgZmlsZSkpICh0cnVlbmFtZSAoZmlsZS10cnVlbmFt ZSBmaWxlLWV4KSkpIChpZiAoZmlsZS1leGlzdHMtcCB0cnVlbmFtZSkgKHByb2duIChzZXRxIGZp bGUtZXggdHJ1ZW5hbWUpKSkgKGlmIChlcXVhbCBhcmdpICItc2NyaXB0ZXZhbCIpIChjb21tYW5k LWxpbmUtLWV2YWwtc2NyaXB0IGZpbGUtZXgpIChjb21tYW5kLWxpbmUtLWxvYWQtc2NyaXB0IGZp bGUtZXgpKSkpICgoZXF1YWwgYXJnaSAiLWluc2VydCIpIChzZXRxIGluaGliaXQtc3RhcnR1cC1z Y3JlZW4gdCkgKHNldHEgdGVtIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxp bmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxp bmUtYXJncy1sZWZ0KSkpKSkpIChvciAoc3RyaW5ncCB0ZW0pIChlcnJvciAiRmlsZSBuYW1lIG9t aXR0ZWQgZnJvbSBgLWluc2VydCcgb3B0aW9uIikpIChpbnNlcnQtZmlsZS1jb250ZW50cyAoY29t bWFuZC1saW5lLW5vcm1hbGl6ZS1maWxlLW5hbWUgdGVtKSkpICgob3IgKGVxdWFsIGFyZ2kgIi1k dW1wLWZpbGUiKSAoZXF1YWwgYXJnaSAiLXNlY2NvbXAiKSkgKG9yIGFyZ3ZhbCAoY2FyLXNhZmUg KHByb2cxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVm dCAoY2RyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkpKSkgKChlcXVhbCBhcmdpICIta2lsbCIp IChraWxsLWVtYWNzIHQpKSAoKGVxdWFsIGFyZ2kgIi1uby1kZXNrdG9wIikgKG1lc3NhZ2UgIlwi LS1uby1kZXNrdG9wXCIgaWdub3JlZCBiZWNhdXNlIHRoZSBEZXNrdG9wIHBhY2thZ2UgaXMgbm90 IGxvYWRlZCIpKSAoKHN0cmluZy1tYXRjaCAiXlxcK1swLTldK1xcJyIgYXJnaSkgKHNldHEgbGlu ZSAoc3RyaW5nLXRvLW51bWJlciBhcmdpKSkpICgoc3RyaW5nLW1hdGNoICJeXFwrXFwoWzAtOV0r XFwpOlxcKFswLTldK1xcKVxcJyIgYXJnaSkgKHByb2duIChzZXRxIGxpbmUgKHN0cmluZy10by1u dW1iZXIgKG1hdGNoLXN0cmluZyAxIGFyZ2kpKSkgKHNldHEgY29sdW1uIChzdHJpbmctdG8tbnVt YmVyIChtYXRjaC1zdHJpbmcgMiBhcmdpKSkpKSkgKChzZXRxIHRlbSAoYXNzb2Mgb3JpZy1hcmdp IGNvbW1hbmQtbGluZS14LW9wdGlvbi1hbGlzdCkpIChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxl ZnQgKG50aGNkciAobnRoIDEgdGVtKSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpICgoc2V0cSB0 ZW0gKGFzc29jIG9yaWctYXJnaSBjb21tYW5kLWxpbmUtbnMtb3B0aW9uLWFsaXN0KSkgKHNldHEg Y29tbWFuZC1saW5lLWFyZ3MtbGVmdCAobnRoY2RyIChudGggMSB0ZW0pIGNvbW1hbmQtbGluZS1h cmdzLWxlZnQpKSkgKChtZW1iZXIgYXJnaSAnKCItZmluZC1maWxlIiAiLWZpbGUiICItdmlzaXQi KSkgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSAoc2V0cSB0ZW0gKG9yIGFyZ3ZhbCAo Y2FyLXNhZmUgKHByb2cxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKHNldHEgY29tbWFuZC1saW5l LWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkpKSkgKGlmIChzdHJpbmdw IHRlbSkgbmlsIChlcnJvciAiRmlsZSBuYW1lIG9taXR0ZWQgZnJvbSBgJXMnIG9wdGlvbiIgYXJn aSkpIChmdW5jYWxsIHByb2Nlc3MtZmlsZS1hcmcgdGVtKSkgKChzdHJpbmctbWF0Y2ggIlxcYC0t P1xcKG5vLVxcKT9cXCh1bmlcXHxtdWx0aVxcKWJ5dGUkIiBhcmdpKSAoZGlzcGxheS13YXJuaW5n ICdpbml0aWFsaXphdGlvbiAoZm9ybWF0ICJJZ25vcmluZyBvYnNvbGV0ZSBhcmcgJXMiIGFyZ2kp KSkgKChlcXVhbCBhcmdpICItLSIpIChzZXRxIGp1c3QtZmlsZXMgdCkpICh0IChsZXQgKChob29r cyBjb21tYW5kLWxpbmUtZnVuY3Rpb25zKSAoZGlkLWhvb2sgbmlsKSkgKHdoaWxlIChhbmQgaG9v a3MgKG5vdCAoc2V0cSBkaWQtaG9vayAoZnVuY2FsbCAoY2FyIGhvb2tzKSkpKSkgKHNldHEgaG9v a3MgKGNkciBob29rcykpKSAoaWYgZGlkLWhvb2sgbmlsIChpZiAoc3RyaW5nLW1hdGNoICJcXGAt IiBhcmdpKSAoZXJyb3IgIlVua25vd24gb3B0aW9uIGAlcyciIGFyZ2kpKSAoaWYgaW5pdGlhbC13 aW5kb3ctc3lzdGVtIG5pbCAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpKSAoZnVuY2Fs bCBwcm9jZXNzLWZpbGUtYXJnIG9yaWctYXJnaSkpKSkpIChpZiAoZnJhbWUtbGl2ZS1wIChzZWxl Y3RlZC1mcmFtZSkpIG5pbCAoa2lsbC1lbWFjcyBuaWwpKSkpKSkKICAoaWYgY29tbWFuZC1saW5l LWFyZ3MtbGVmdCAocHJvZ24gKGxldCogKChkaXIgY29tbWFuZC1saW5lLWRlZmF1bHQtZGlyZWN0 b3J5KSB0ZW0gc3BsaWNlIGp1c3QtZmlsZXMgKGxvbmdvcHRzIChhcHBlbmQgJygiLS1mdW5jYWxs IiAiLS1sb2FkIiAiLS1pbnNlcnQiICItLWtpbGwiICItLWR1bXAtZmlsZSIgIi0tc2VjY29tcCIg Ii0tZGlyZWN0b3J5IiAiLS1ldmFsIiAiLS1leGVjdXRlIiAiLS1uby1zcGxhc2giICItLWZpbmQt ZmlsZSIgIi0tdmlzaXQiICItLWZpbGUiICItLW5vLWRlc2t0b3AiKSAobWFwY2FyICMnKGxhbWJk YSAoZWx0KSAoY29uY2F0ICItIiAoY2FyIGVsdCkpKSBjb21tYW5kLXN3aXRjaC1hbGlzdCkpKSAo bGluZSAwKSAoY29sdW1uIDApIChwcm9jZXNzLWZpbGUtYXJnICMnKGxhbWJkYSAobmFtZSkgKGlm IChub3QgKG9yIGRpciAoZmlsZS1uYW1lLWFic29sdXRlLXAgbmFtZSkpKSAobWVzc2FnZSAiSWdu b3JpbmcgcmVsYXRpdmUgZmlsZSBuYW1lICglcykgZHVlIHRvIG5pbCBkZWZhdWx0LWRpcmVjdG9y eSIgbmFtZSkgKGxldCogKChmaWxlIChleHBhbmQtZmlsZS1uYW1lIChjb21tYW5kLWxpbmUtbm9y bWFsaXplLWZpbGUtbmFtZSBuYW1lKSBkaXIpKSAoYnVmIChmaW5kLWZpbGUtbm9zZWxlY3QgZmls ZSkpKSAoZmlsZS1uYW1lLWhpc3RvcnktLWFkZCBmaWxlKSAoc2V0cSBkaXNwbGF5YWJsZS1idWZm ZXJzIChjb25zIGJ1ZiBkaXNwbGF5YWJsZS1idWZmZXJzKSkgKHNldC1idWZmZXIgYnVmKSAoaWYg KD0gMCBsaW5lKSBuaWwgKGdvdG8tY2hhciAocG9pbnQtbWluKSkgKGZvcndhcmQtbGluZSAoMS0g bGluZSkpKSAoc2V0cSBsaW5lIDApIChpZiAoPCBjb2x1bW4gMSkgbmlsIChtb3ZlLXRvLWNvbHVt biAoMS0gY29sdW1uKSkpIChzZXRxIGNvbHVtbiAwKSkpKSkpIChsZXQgKCh0YWlsIGNvbW1hbmQt bGluZS14LW9wdGlvbi1hbGlzdCkpICh3aGlsZSB0YWlsIChsZXQgKCh0ZW0gKGNhciB0YWlsKSkp IChpZiAoc3RyaW5nLW1hdGNoICJeLS0iIChjYXIgdGVtKSkgKHNldHEgbG9uZ29wdHMgKGNvbnMg KGNhciB0ZW0pIGxvbmdvcHRzKSkpIChzZXRxIHRhaWwgKGNkciB0YWlsKSkpKSkgKGxldCAoKHRh aWwgY29tbWFuZC1saW5lLW5zLW9wdGlvbi1hbGlzdCkpICh3aGlsZSB0YWlsIChsZXQgKCh0ZW0g KGNhciB0YWlsKSkpIChpZiAoc3RyaW5nLW1hdGNoICJeLS0iIChjYXIgdGVtKSkgKHNldHEgbG9u Z29wdHMgKGNvbnMgKGxpc3QgKGNhciB0ZW0pKSBsb25nb3B0cykpKSAoc2V0cSB0YWlsIChjZHIg dGFpbCkpKSkpICh3aGlsZSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChsZXQqICgoYXJnaSAoY2Fy IGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSAob3JpZy1hcmdpIGFyZ2kpIGFyZ3ZhbCBjb21wbGV0 aW9uKSAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3Mt bGVmdCkpIChpZiBqdXN0LWZpbGVzIChzZXRxIGFyZ2kgIiIpIChpZiAoc3RyaW5nLW1hdGNoICJc XGBcXCgtLVtePV0qXFwpPSIgYXJnaSkgKHByb2duIChwcm9nbiAoc2V0cSBhcmd2YWwgKHN1YnN0 cmluZyBhcmdpIChtYXRjaC1lbmQgMCkpKSAoc2V0cSBhcmdpIChtYXRjaC1zdHJpbmcgMSBhcmdp KSkpKSkgKGlmIChzdHJpbmctbWF0Y2ggIlxcYC0tP1teLV0iIG9yaWctYXJnaSkgKHByb2duIChz ZXRxIGNvbXBsZXRpb24gKHRyeS1jb21wbGV0aW9uIGFyZ2kgbG9uZ29wdHMpKSAoaWYgKGVxIGNv bXBsZXRpb24gdCkgKHNldHEgYXJnaSAoc3Vic3RyaW5nIGFyZ2kgMSkpIChpZiAoc3RyaW5ncCBj b21wbGV0aW9uKSAobGV0ICgoZWx0IChtZW1iZXIgY29tcGxldGlvbiBsb25nb3B0cykpKSAob3Ig ZWx0IChlcnJvciAiT3B0aW9uIGAlcycgaXMgYW1iaWd1b3VzIiBhcmdpKSkgKHNldHEgYXJnaSAo c3Vic3RyaW5nIChjYXIgZWx0KSAxKSkpIChwcm9nbiAoc2V0cSBhcmd2YWwgbmlsKSAoc2V0cSBh cmdpIG9yaWctYXJnaSkpKSkpKSkgKGNvbmQgKChzZXRxIHRlbSAoYXNzb2MgYXJnaSBjb21tYW5k LXN3aXRjaC1hbGlzdCkpIChpZiBhcmd2YWwgKGxldCAoKGNvbW1hbmQtbGluZS1hcmdzLWxlZnQg KGNvbnMgYXJndmFsIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkgKGZ1bmNhbGwgKGNkciB0ZW0p IGFyZ2kpKSAoZnVuY2FsbCAoY2RyIHRlbSkgYXJnaSkpKSAoKGVxdWFsIGFyZ2kgIi1uby1zcGxh c2giKSAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpKSAoKG1lbWJlciBhcmdpICcoIi1m IiAiLWZ1bmNhbGwiICItZSIpKSAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpIChzZXRx IHRlbSAoaW50ZXJuIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJn cy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJn cy1sZWZ0KSkpKSkpKSAoaWYgKGNvbW1hbmRwIHRlbSkgKGNvbW1hbmQtZXhlY3V0ZSB0ZW0pIChm dW5jYWxsIHRlbSkpKSAoKG1lbWJlciBhcmdpICcoIi1ldmFsIiAiLWV4ZWN1dGUiKSkgKHNldHEg aW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSAobGV0KiAoKHN0ci1leHByIChvciBhcmd2YWwgKGNh ci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1h cmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpIChyZWFkLWRhdGEgKHJl YWQtZnJvbS1zdHJpbmcgc3RyLWV4cHIpKSAoZXhwciAoY2FyIHJlYWQtZGF0YSkpIChlbmQgKGNk ciByZWFkLWRhdGEpKSkgKGlmIChzdHJpbmctbWF0Y2gtcCAiWyBcMTFcbl0qXFwnIiBzdHItZXhw ciBlbmQpIG5pbCAoZXJyb3IgIlRyYWlsaW5nIGdhcmJhZ2UgZm9sbG93aW5nIGV4cHJlc3Npb246 ICVzIiAoc3Vic3RyaW5nIHN0ci1leHByIGVuZCkpKSAoZXZhbCBleHByIHQpKSkgKChtZW1iZXIg YXJnaSAnKCItTCIgIi1kaXJlY3RvcnkiKSkgKGxldCAoYXBwZW5kKSAoaWYgKHN0cmluZy1tYXRj aC1wIChmb3JtYXQgIlxcYCVzIiBwYXRoLXNlcGFyYXRvcikgKHNldHEgdGVtIChvciBhcmd2YWwg KGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGlu ZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpKSAocHJvZ24gKHNl dHEgdGVtIChzdWJzdHJpbmcgdGVtIDEpKSAoc2V0cSBhcHBlbmQgdCkpKSAoc2V0cSB0ZW0gKGV4 cGFuZC1maWxlLW5hbWUgKGNvbW1hbmQtbGluZS1ub3JtYWxpemUtZmlsZS1uYW1lIHRlbSkpKSAo Y29uZCAoYXBwZW5kIChzZXRxIGxvYWQtcGF0aCAoYXBwZW5kIGxvYWQtcGF0aCAobGlzdCB0ZW0p KSkgKGlmIHNwbGljZSAoc2V0cSBzcGxpY2UgbG9hZC1wYXRoKSkpIChzcGxpY2UgKHNldGNkciBz cGxpY2UgKGNvbnMgdGVtIChjZHIgc3BsaWNlKSkpIChzZXRxIHNwbGljZSAoY2RyIHNwbGljZSkp KSAodCAocHJvZ24gKHNldHEgbG9hZC1wYXRoIChjb25zIHRlbSBsb2FkLXBhdGgpKSAoc2V0cSBz cGxpY2UgbG9hZC1wYXRoKSkpKSkpICgobWVtYmVyIGFyZ2kgJygiLWwiICItbG9hZCIpKSAobGV0 KiAoKGZpbGUgKGNvbW1hbmQtbGluZS1ub3JtYWxpemUtZmlsZS1uYW1lIChvciBhcmd2YWwgKGNh ci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1h cmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpKSAoZmlsZS1leCAoZmls ZS10cnVlbmFtZSAoZXhwYW5kLWZpbGUtbmFtZSBmaWxlKSkpKSAoaWYgKGZpbGUtcmVndWxhci1w IGZpbGUtZXgpIChwcm9nbiAoc2V0cSBmaWxlIGZpbGUtZXgpKSkgKGxvYWQgZmlsZSBuaWwgdCkp KSAoKG1lbWJlciBhcmdpICcoIi1zY3JpcHRsb2FkIiAiLXNjcmlwdGV2YWwiKSkgKGxldCogKChm aWxlIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFtZSAob3IgYXJndmFsIChjYXItc2Fm ZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1s ZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSkgKGZpbGUtZXggKGV4cGFuZC1m aWxlLW5hbWUgZmlsZSkpICh0cnVlbmFtZSAoZmlsZS10cnVlbmFtZSBmaWxlLWV4KSkpIChpZiAo ZmlsZS1leGlzdHMtcCB0cnVlbmFtZSkgKHByb2duIChzZXRxIGZpbGUtZXggdHJ1ZW5hbWUpKSkg KGlmIChlcXVhbCBhcmdpICItc2NyaXB0ZXZhbCIpIChjb21tYW5kLWxpbmUtLWV2YWwtc2NyaXB0 IGZpbGUtZXgpIChjb21tYW5kLWxpbmUtLWxvYWQtc2NyaXB0IGZpbGUtZXgpKSkpICgoZXF1YWwg YXJnaSAiLWluc2VydCIpIChzZXRxIGluaGliaXQtc3RhcnR1cC1zY3JlZW4gdCkgKHNldHEgdGVt IChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRx IGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkp IChvciAoc3RyaW5ncCB0ZW0pIChlcnJvciAiRmlsZSBuYW1lIG9taXR0ZWQgZnJvbSBgLWluc2Vy dCcgb3B0aW9uIikpIChpbnNlcnQtZmlsZS1jb250ZW50cyAoY29tbWFuZC1saW5lLW5vcm1hbGl6 ZS1maWxlLW5hbWUgdGVtKSkpICgob3IgKGVxdWFsIGFyZ2kgIi1kdW1wLWZpbGUiKSAoZXF1YWwg YXJnaSAiLXNlY2NvbXAiKSkgKG9yIGFyZ3ZhbCAoY2FyLXNhZmUgKHByb2cxIGNvbW1hbmQtbGlu ZS1hcmdzLWxlZnQgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGlu ZS1hcmdzLWxlZnQpKSkpKSkgKChlcXVhbCBhcmdpICIta2lsbCIpIChraWxsLWVtYWNzIHQpKSAo KGVxdWFsIGFyZ2kgIi1uby1kZXNrdG9wIikgKG1lc3NhZ2UgIlwiLS1uby1kZXNrdG9wXCIgaWdu b3JlZCBiZWNhdXNlIHRoZSBEZXNrdG9wIHBhY2thZ2UgaXMgbm90IGxvYWRlZCIpKSAoKHN0cmlu Zy1tYXRjaCAiXlxcK1swLTldK1xcJyIgYXJnaSkgKHNldHEgbGluZSAoc3RyaW5nLXRvLW51bWJl ciBhcmdpKSkpICgoc3RyaW5nLW1hdGNoICJeXFwrXFwoWzAtOV0rXFwpOlxcKFswLTldK1xcKVxc JyIgYXJnaSkgKHByb2duIChzZXRxIGxpbmUgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmlu ZyAxIGFyZ2kpKSkgKHNldHEgY29sdW1uIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcg MiBhcmdpKSkpKSkgKChzZXRxIHRlbSAoYXNzb2Mgb3JpZy1hcmdpIGNvbW1hbmQtbGluZS14LW9w dGlvbi1hbGlzdCkpIChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKG50aGNkciAobnRoIDEg dGVtKSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpICgoc2V0cSB0ZW0gKGFzc29jIG9yaWctYXJn aSBjb21tYW5kLWxpbmUtbnMtb3B0aW9uLWFsaXN0KSkgKHNldHEgY29tbWFuZC1saW5lLWFyZ3Mt bGVmdCAobnRoY2RyIChudGggMSB0ZW0pIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkgKChtZW1i ZXIgYXJnaSAnKCItZmluZC1maWxlIiAiLWZpbGUiICItdmlzaXQiKSkgKHNldHEgaW5oaWJpdC1z dGFydHVwLXNjcmVlbiB0KSAoc2V0cSB0ZW0gKG9yIGFyZ3ZhbCAoY2FyLXNhZmUgKHByb2cxIGNv bW1hbmQtbGluZS1hcmdzLWxlZnQgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoY2RyIGNv bW1hbmQtbGluZS1hcmdzLWxlZnQpKSkpKSkgKGlmIChzdHJpbmdwIHRlbSkgbmlsIChlcnJvciAi RmlsZSBuYW1lIG9taXR0ZWQgZnJvbSBgJXMnIG9wdGlvbiIgYXJnaSkpIChmdW5jYWxsIHByb2Nl c3MtZmlsZS1hcmcgdGVtKSkgKChzdHJpbmctbWF0Y2ggIlxcYC0tP1xcKG5vLVxcKT9cXCh1bmlc XHxtdWx0aVxcKWJ5dGUkIiBhcmdpKSAoZGlzcGxheS13YXJuaW5nICdpbml0aWFsaXphdGlvbiAo Zm9ybWF0ICJJZ25vcmluZyBvYnNvbGV0ZSBhcmcgJXMiIGFyZ2kpKSkgKChlcXVhbCBhcmdpICIt LSIpIChzZXRxIGp1c3QtZmlsZXMgdCkpICh0IChsZXQgKChob29rcyBjb21tYW5kLWxpbmUtZnVu Y3Rpb25zKSAoZGlkLWhvb2sgbmlsKSkgKHdoaWxlIChhbmQgaG9va3MgKG5vdCAoc2V0cSBkaWQt aG9vayAoZnVuY2FsbCAoY2FyIGhvb2tzKSkpKSkgKHNldHEgaG9va3MgKGNkciBob29rcykpKSAo aWYgZGlkLWhvb2sgbmlsIChpZiAoc3RyaW5nLW1hdGNoICJcXGAtIiBhcmdpKSAoZXJyb3IgIlVu a25vd24gb3B0aW9uIGAlcyciIGFyZ2kpKSAoaWYgaW5pdGlhbC13aW5kb3ctc3lzdGVtIG5pbCAo c2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpKSAoZnVuY2FsbCBwcm9jZXNzLWZpbGUtYXJn IG9yaWctYXJnaSkpKSkpIChpZiAoZnJhbWUtbGl2ZS1wIChzZWxlY3RlZC1mcmFtZSkpIG5pbCAo a2lsbC1lbWFjcyBuaWwpKSkpKSkpCiAgKGxldCAoKGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgYXJn cy1sZWZ0KSkgKGlmIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKHByb2duIChsZXQqICgoZGlyIGNv bW1hbmQtbGluZS1kZWZhdWx0LWRpcmVjdG9yeSkgdGVtIHNwbGljZSBqdXN0LWZpbGVzIChsb25n b3B0cyAoYXBwZW5kICcoIi0tZnVuY2FsbCIgIi0tbG9hZCIgIi0taW5zZXJ0IiAiLS1raWxsIiAi LS1kdW1wLWZpbGUiICItLXNlY2NvbXAiICItLWRpcmVjdG9yeSIgIi0tZXZhbCIgIi0tZXhlY3V0 ZSIgIi0tbm8tc3BsYXNoIiAiLS1maW5kLWZpbGUiICItLXZpc2l0IiAiLS1maWxlIiAiLS1uby1k ZXNrdG9wIikgKG1hcGNhciAjJyhsYW1iZGEgKGVsdCkgKGNvbmNhdCAiLSIgKGNhciBlbHQpKSkg Y29tbWFuZC1zd2l0Y2gtYWxpc3QpKSkgKGxpbmUgMCkgKGNvbHVtbiAwKSAocHJvY2Vzcy1maWxl LWFyZyAjJyhsYW1iZGEgKG5hbWUpIChpZiAobm90IChvciBkaXIgKGZpbGUtbmFtZS1hYnNvbHV0 ZS1wIG5hbWUpKSkgKG1lc3NhZ2UgIklnbm9yaW5nIHJlbGF0aXZlIGZpbGUgbmFtZSAoJXMpIGR1 ZSB0byBuaWwgZGVmYXVsdC1kaXJlY3RvcnkiIG5hbWUpIChsZXQqICgoZmlsZSAoZXhwYW5kLWZp bGUtbmFtZSAoY29tbWFuZC1saW5lLW5vcm1hbGl6ZS1maWxlLW5hbWUgbmFtZSkgZGlyKSkgKGJ1 ZiAoZmluZC1maWxlLW5vc2VsZWN0IGZpbGUpKSkgKGZpbGUtbmFtZS1oaXN0b3J5LS1hZGQgZmls ZSkgKHNldHEgZGlzcGxheWFibGUtYnVmZmVycyAoY29ucyBidWYgZGlzcGxheWFibGUtYnVmZmVy cykpIChzZXQtYnVmZmVyIGJ1ZikgKGlmICg9IDAgbGluZSkgbmlsIChnb3RvLWNoYXIgKHBvaW50 LW1pbikpIChmb3J3YXJkLWxpbmUgKDEtIGxpbmUpKSkgKHNldHEgbGluZSAwKSAoaWYgKDwgY29s dW1uIDEpIG5pbCAobW92ZS10by1jb2x1bW4gKDEtIGNvbHVtbikpKSAoc2V0cSBjb2x1bW4gMCkp KSkpKSAobGV0ICgodGFpbCBjb21tYW5kLWxpbmUteC1vcHRpb24tYWxpc3QpKSAod2hpbGUgdGFp bCAobGV0ICgodGVtIChjYXIgdGFpbCkpKSAoaWYgKHN0cmluZy1tYXRjaCAiXi0tIiAoY2FyIHRl bSkpIChzZXRxIGxvbmdvcHRzIChjb25zIChjYXIgdGVtKSBsb25nb3B0cykpKSAoc2V0cSB0YWls IChjZHIgdGFpbCkpKSkpIChsZXQgKCh0YWlsIGNvbW1hbmQtbGluZS1ucy1vcHRpb24tYWxpc3Qp KSAod2hpbGUgdGFpbCAobGV0ICgodGVtIChjYXIgdGFpbCkpKSAoaWYgKHN0cmluZy1tYXRjaCAi Xi0tIiAoY2FyIHRlbSkpIChzZXRxIGxvbmdvcHRzIChjb25zIChsaXN0IChjYXIgdGVtKSkgbG9u Z29wdHMpKSkgKHNldHEgdGFpbCAoY2RyIHRhaWwpKSkpKSAod2hpbGUgY29tbWFuZC1saW5lLWFy Z3MtbGVmdCAobGV0KiAoKGFyZ2kgKGNhciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkgKG9yaWct YXJnaSBhcmdpKSBhcmd2YWwgY29tcGxldGlvbikgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVm dCAoY2RyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSAoaWYganVzdC1maWxlcyAoc2V0cSBhcmdp ICIiKSAoaWYgKHN0cmluZy1tYXRjaCAiXFxgXFwoLS1bXj1dKlxcKT0iIGFyZ2kpIChwcm9nbiAo cHJvZ24gKHNldHEgYXJndmFsIChzdWJzdHJpbmcgYXJnaSAobWF0Y2gtZW5kIDApKSkgKHNldHEg YXJnaSAobWF0Y2gtc3RyaW5nIDEgYXJnaSkpKSkpIChpZiAoc3RyaW5nLW1hdGNoICJcXGAtLT9b Xi1dIiBvcmlnLWFyZ2kpIChwcm9nbiAoc2V0cSBjb21wbGV0aW9uICh0cnktY29tcGxldGlvbiBh cmdpIGxvbmdvcHRzKSkgKGlmIChlcSBjb21wbGV0aW9uIHQpIChzZXRxIGFyZ2kgKHN1YnN0cmlu ZyBhcmdpIDEpKSAoaWYgKHN0cmluZ3AgY29tcGxldGlvbikgKGxldCAoKGVsdCAobWVtYmVyIGNv bXBsZXRpb24gbG9uZ29wdHMpKSkgKG9yIGVsdCAoZXJyb3IgIk9wdGlvbiBgJXMnIGlzIGFtYmln dW91cyIgYXJnaSkpIChzZXRxIGFyZ2kgKHN1YnN0cmluZyAoY2FyIGVsdCkgMSkpKSAocHJvZ24g KHNldHEgYXJndmFsIG5pbCkgKHNldHEgYXJnaSBvcmlnLWFyZ2kpKSkpKSkpIChjb25kICgoc2V0 cSB0ZW0gKGFzc29jIGFyZ2kgY29tbWFuZC1zd2l0Y2gtYWxpc3QpKSAoaWYgYXJndmFsIChsZXQg KChjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjb25zIGFyZ3ZhbCBjb21tYW5kLWxpbmUtYXJncy1s ZWZ0KSkpIChmdW5jYWxsIChjZHIgdGVtKSBhcmdpKSkgKGZ1bmNhbGwgKGNkciB0ZW0pIGFyZ2kp KSkgKChlcXVhbCBhcmdpICItbm8tc3BsYXNoIikgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVl biB0KSkgKChtZW1iZXIgYXJnaSAnKCItZiIgIi1mdW5jYWxsIiAiLWUiKSkgKHNldHEgaW5oaWJp dC1zdGFydHVwLXNjcmVlbiB0KSAoc2V0cSB0ZW0gKGludGVybiAob3IgYXJndmFsIChjYXItc2Fm ZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1s ZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSkgKGlmIChjb21tYW5kcCB0ZW0p IChjb21tYW5kLWV4ZWN1dGUgdGVtKSAoZnVuY2FsbCB0ZW0pKSkgKChtZW1iZXIgYXJnaSAnKCIt ZXZhbCIgIi1leGVjdXRlIikpIChzZXRxIGluaGliaXQtc3RhcnR1cC1zY3JlZW4gdCkgKGxldCog KChzdHItZXhwciAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3Mt bGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3Mt bGVmdCkpKSkpKSAocmVhZC1kYXRhIChyZWFkLWZyb20tc3RyaW5nIHN0ci1leHByKSkgKGV4cHIg KGNhciByZWFkLWRhdGEpKSAoZW5kIChjZHIgcmVhZC1kYXRhKSkpIChpZiAoc3RyaW5nLW1hdGNo LXAgIlsgXDExXG5dKlxcJyIgc3RyLWV4cHIgZW5kKSBuaWwgKGVycm9yICJUcmFpbGluZyBnYXJi YWdlIGZvbGxvd2luZyBleHByZXNzaW9uOiAlcyIgKHN1YnN0cmluZyBzdHItZXhwciBlbmQpKSkg KGV2YWwgZXhwciB0KSkpICgobWVtYmVyIGFyZ2kgJygiLUwiICItZGlyZWN0b3J5IikpIChsZXQg KGFwcGVuZCkgKGlmIChzdHJpbmctbWF0Y2gtcCAoZm9ybWF0ICJcXGAlcyIgcGF0aC1zZXBhcmF0 b3IpIChzZXRxIHRlbSAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFy Z3MtbGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFy Z3MtbGVmdCkpKSkpKSkgKHByb2duIChzZXRxIHRlbSAoc3Vic3RyaW5nIHRlbSAxKSkgKHNldHEg YXBwZW5kIHQpKSkgKHNldHEgdGVtIChleHBhbmQtZmlsZS1uYW1lIChjb21tYW5kLWxpbmUtbm9y bWFsaXplLWZpbGUtbmFtZSB0ZW0pKSkgKGNvbmQgKGFwcGVuZCAoc2V0cSBsb2FkLXBhdGggKGFw cGVuZCBsb2FkLXBhdGggKGxpc3QgdGVtKSkpIChpZiBzcGxpY2UgKHNldHEgc3BsaWNlIGxvYWQt cGF0aCkpKSAoc3BsaWNlIChzZXRjZHIgc3BsaWNlIChjb25zIHRlbSAoY2RyIHNwbGljZSkpKSAo c2V0cSBzcGxpY2UgKGNkciBzcGxpY2UpKSkgKHQgKHByb2duIChzZXRxIGxvYWQtcGF0aCAoY29u cyB0ZW0gbG9hZC1wYXRoKSkgKHNldHEgc3BsaWNlIGxvYWQtcGF0aCkpKSkpKSAoKG1lbWJlciBh cmdpICcoIi1sIiAiLWxvYWQiKSkgKGxldCogKChmaWxlIChjb21tYW5kLWxpbmUtbm9ybWFsaXpl LWZpbGUtbmFtZSAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3Mt bGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3Mt bGVmdCkpKSkpKSkgKGZpbGUtZXggKGZpbGUtdHJ1ZW5hbWUgKGV4cGFuZC1maWxlLW5hbWUgZmls ZSkpKSkgKGlmIChmaWxlLXJlZ3VsYXItcCBmaWxlLWV4KSAocHJvZ24gKHNldHEgZmlsZSBmaWxl LWV4KSkpIChsb2FkIGZpbGUgbmlsIHQpKSkgKChtZW1iZXIgYXJnaSAnKCItc2NyaXB0bG9hZCIg Ii1zY3JpcHRldmFsIikpIChsZXQqICgoZmlsZSAoY29tbWFuZC1saW5lLW5vcm1hbGl6ZS1maWxl LW5hbWUgKG9yIGFyZ3ZhbCAoY2FyLXNhZmUgKHByb2cxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQg KHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQp KSkpKSkpIChmaWxlLWV4IChleHBhbmQtZmlsZS1uYW1lIGZpbGUpKSAodHJ1ZW5hbWUgKGZpbGUt dHJ1ZW5hbWUgZmlsZS1leCkpKSAoaWYgKGZpbGUtZXhpc3RzLXAgdHJ1ZW5hbWUpIChwcm9nbiAo c2V0cSBmaWxlLWV4IHRydWVuYW1lKSkpIChpZiAoZXF1YWwgYXJnaSAiLXNjcmlwdGV2YWwiKSAo Y29tbWFuZC1saW5lLS1ldmFsLXNjcmlwdCBmaWxlLWV4KSAoY29tbWFuZC1saW5lLS1sb2FkLXNj cmlwdCBmaWxlLWV4KSkpKSAoKGVxdWFsIGFyZ2kgIi1pbnNlcnQiKSAoc2V0cSBpbmhpYml0LXN0 YXJ0dXAtc2NyZWVuIHQpIChzZXRxIHRlbSAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29t bWFuZC1saW5lLWFyZ3MtbGVmdCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29t bWFuZC1saW5lLWFyZ3MtbGVmdCkpKSkpKSAob3IgKHN0cmluZ3AgdGVtKSAoZXJyb3IgIkZpbGUg bmFtZSBvbWl0dGVkIGZyb20gYC1pbnNlcnQnIG9wdGlvbiIpKSAoaW5zZXJ0LWZpbGUtY29udGVu dHMgKGNvbW1hbmQtbGluZS1ub3JtYWxpemUtZmlsZS1uYW1lIHRlbSkpKSAoKG9yIChlcXVhbCBh cmdpICItZHVtcC1maWxlIikgKGVxdWFsIGFyZ2kgIi1zZWNjb21wIikpIChvciBhcmd2YWwgKGNh ci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1h cmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpICgoZXF1YWwgYXJnaSAi LWtpbGwiKSAoa2lsbC1lbWFjcyB0KSkgKChlcXVhbCBhcmdpICItbm8tZGVza3RvcCIpIChtZXNz YWdlICJcIi0tbm8tZGVza3RvcFwiIGlnbm9yZWQgYmVjYXVzZSB0aGUgRGVza3RvcCBwYWNrYWdl IGlzIG5vdCBsb2FkZWQiKSkgKChzdHJpbmctbWF0Y2ggIl5cXCtbMC05XStcXCciIGFyZ2kpIChz ZXRxIGxpbmUgKHN0cmluZy10by1udW1iZXIgYXJnaSkpKSAoKHN0cmluZy1tYXRjaCAiXlxcK1xc KFswLTldK1xcKTpcXChbMC05XStcXClcXCciIGFyZ2kpIChwcm9nbiAoc2V0cSBsaW5lIChzdHJp bmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMSBhcmdpKSkpIChzZXRxIGNvbHVtbiAoc3RyaW5n LXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDIgYXJnaSkpKSkpICgoc2V0cSB0ZW0gKGFzc29jIG9y aWctYXJnaSBjb21tYW5kLWxpbmUteC1vcHRpb24tYWxpc3QpKSAoc2V0cSBjb21tYW5kLWxpbmUt YXJncy1sZWZ0IChudGhjZHIgKG50aCAxIHRlbSkgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpKSAo KHNldHEgdGVtIChhc3NvYyBvcmlnLWFyZ2kgY29tbWFuZC1saW5lLW5zLW9wdGlvbi1hbGlzdCkp IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKG50aGNkciAobnRoIDEgdGVtKSBjb21tYW5k LWxpbmUtYXJncy1sZWZ0KSkpICgobWVtYmVyIGFyZ2kgJygiLWZpbmQtZmlsZSIgIi1maWxlIiAi LXZpc2l0IikpIChzZXRxIGluaGliaXQtc3RhcnR1cC1zY3JlZW4gdCkgKHNldHEgdGVtIChvciBh cmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1h bmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpIChpZiAo c3RyaW5ncCB0ZW0pIG5pbCAoZXJyb3IgIkZpbGUgbmFtZSBvbWl0dGVkIGZyb20gYCVzJyBvcHRp b24iIGFyZ2kpKSAoZnVuY2FsbCBwcm9jZXNzLWZpbGUtYXJnIHRlbSkpICgoc3RyaW5nLW1hdGNo ICJcXGAtLT9cXChuby1cXCk/XFwodW5pXFx8bXVsdGlcXClieXRlJCIgYXJnaSkgKGRpc3BsYXkt d2FybmluZyAnaW5pdGlhbGl6YXRpb24gKGZvcm1hdCAiSWdub3Jpbmcgb2Jzb2xldGUgYXJnICVz IiBhcmdpKSkpICgoZXF1YWwgYXJnaSAiLS0iKSAoc2V0cSBqdXN0LWZpbGVzIHQpKSAodCAobGV0 ICgoaG9va3MgY29tbWFuZC1saW5lLWZ1bmN0aW9ucykgKGRpZC1ob29rIG5pbCkpICh3aGlsZSAo YW5kIGhvb2tzIChub3QgKHNldHEgZGlkLWhvb2sgKGZ1bmNhbGwgKGNhciBob29rcykpKSkpIChz ZXRxIGhvb2tzIChjZHIgaG9va3MpKSkgKGlmIGRpZC1ob29rIG5pbCAoaWYgKHN0cmluZy1tYXRj aCAiXFxgLSIgYXJnaSkgKGVycm9yICJVbmtub3duIG9wdGlvbiBgJXMnIiBhcmdpKSkgKGlmIGlu aXRpYWwtd2luZG93LXN5c3RlbSBuaWwgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSkg KGZ1bmNhbGwgcHJvY2Vzcy1maWxlLWFyZyBvcmlnLWFyZ2kpKSkpKSAoaWYgKGZyYW1lLWxpdmUt cCAoc2VsZWN0ZWQtZnJhbWUpKSBuaWwgKGtpbGwtZW1hY3MgbmlsKSkpKSkpKSkKICAobGV0ICgo ZGlzcGxheWFibGUtYnVmZmVycyBuaWwpKSAobGV0ICgoY29tbWFuZC1saW5lLWFyZ3MtbGVmdCBh cmdzLWxlZnQpKSAoaWYgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAocHJvZ24gKGxldCogKChkaXIg Y29tbWFuZC1saW5lLWRlZmF1bHQtZGlyZWN0b3J5KSB0ZW0gc3BsaWNlIGp1c3QtZmlsZXMgKGxv bmdvcHRzIChhcHBlbmQgJygiLS1mdW5jYWxsIiAiLS1sb2FkIiAiLS1pbnNlcnQiICItLWtpbGwi ICItLWR1bXAtZmlsZSIgIi0tc2VjY29tcCIgIi0tZGlyZWN0b3J5IiAiLS1ldmFsIiAiLS1leGVj dXRlIiAiLS1uby1zcGxhc2giICItLWZpbmQtZmlsZSIgIi0tdmlzaXQiICItLWZpbGUiICItLW5v LWRlc2t0b3AiKSAobWFwY2FyICMnKGxhbWJkYSAoZWx0KSAoY29uY2F0ICItIiAoY2FyIGVsdCkp KSBjb21tYW5kLXN3aXRjaC1hbGlzdCkpKSAobGluZSAwKSAoY29sdW1uIDApIChwcm9jZXNzLWZp bGUtYXJnICMnKGxhbWJkYSAobmFtZSkgKGlmIChub3QgKG9yIGRpciAoZmlsZS1uYW1lLWFic29s dXRlLXAgbmFtZSkpKSAobWVzc2FnZSAiSWdub3JpbmcgcmVsYXRpdmUgZmlsZSBuYW1lICglcykg ZHVlIHRvIG5pbCBkZWZhdWx0LWRpcmVjdG9yeSIgbmFtZSkgKGxldCogKChmaWxlIChleHBhbmQt ZmlsZS1uYW1lIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZpbGUtbmFtZSBuYW1lKSBkaXIpKSAo YnVmIChmaW5kLWZpbGUtbm9zZWxlY3QgZmlsZSkpKSAoZmlsZS1uYW1lLWhpc3RvcnktLWFkZCBm aWxlKSAoc2V0cSBkaXNwbGF5YWJsZS1idWZmZXJzIChjb25zIGJ1ZiBkaXNwbGF5YWJsZS1idWZm ZXJzKSkgKHNldC1idWZmZXIgYnVmKSAoaWYgKD0gMCBsaW5lKSBuaWwgKGdvdG8tY2hhciAocG9p bnQtbWluKSkgKGZvcndhcmQtbGluZSAoMS0gbGluZSkpKSAoc2V0cSBsaW5lIDApIChpZiAoPCBj b2x1bW4gMSkgbmlsIChtb3ZlLXRvLWNvbHVtbiAoMS0gY29sdW1uKSkpIChzZXRxIGNvbHVtbiAw KSkpKSkpIChsZXQgKCh0YWlsIGNvbW1hbmQtbGluZS14LW9wdGlvbi1hbGlzdCkpICh3aGlsZSB0 YWlsIChsZXQgKCh0ZW0gKGNhciB0YWlsKSkpIChpZiAoc3RyaW5nLW1hdGNoICJeLS0iIChjYXIg dGVtKSkgKHNldHEgbG9uZ29wdHMgKGNvbnMgKGNhciB0ZW0pIGxvbmdvcHRzKSkpIChzZXRxIHRh aWwgKGNkciB0YWlsKSkpKSkgKGxldCAoKHRhaWwgY29tbWFuZC1saW5lLW5zLW9wdGlvbi1hbGlz dCkpICh3aGlsZSB0YWlsIChsZXQgKCh0ZW0gKGNhciB0YWlsKSkpIChpZiAoc3RyaW5nLW1hdGNo ICJeLS0iIChjYXIgdGVtKSkgKHNldHEgbG9uZ29wdHMgKGNvbnMgKGxpc3QgKGNhciB0ZW0pKSBs b25nb3B0cykpKSAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKSkpICh3aGlsZSBjb21tYW5kLWxpbmUt YXJncy1sZWZ0IChsZXQqICgoYXJnaSAoY2FyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSAob3Jp Zy1hcmdpIGFyZ2kpIGFyZ3ZhbCBjb21wbGV0aW9uKSAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1s ZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCkpIChpZiBqdXN0LWZpbGVzIChzZXRxIGFy Z2kgIiIpIChpZiAoc3RyaW5nLW1hdGNoICJcXGBcXCgtLVtePV0qXFwpPSIgYXJnaSkgKHByb2du IChwcm9nbiAoc2V0cSBhcmd2YWwgKHN1YnN0cmluZyBhcmdpIChtYXRjaC1lbmQgMCkpKSAoc2V0 cSBhcmdpIChtYXRjaC1zdHJpbmcgMSBhcmdpKSkpKSkgKGlmIChzdHJpbmctbWF0Y2ggIlxcYC0t P1teLV0iIG9yaWctYXJnaSkgKHByb2duIChzZXRxIGNvbXBsZXRpb24gKHRyeS1jb21wbGV0aW9u IGFyZ2kgbG9uZ29wdHMpKSAoaWYgKGVxIGNvbXBsZXRpb24gdCkgKHNldHEgYXJnaSAoc3Vic3Ry aW5nIGFyZ2kgMSkpIChpZiAoc3RyaW5ncCBjb21wbGV0aW9uKSAobGV0ICgoZWx0IChtZW1iZXIg Y29tcGxldGlvbiBsb25nb3B0cykpKSAob3IgZWx0IChlcnJvciAiT3B0aW9uIGAlcycgaXMgYW1i aWd1b3VzIiBhcmdpKSkgKHNldHEgYXJnaSAoc3Vic3RyaW5nIChjYXIgZWx0KSAxKSkpIChwcm9n biAoc2V0cSBhcmd2YWwgbmlsKSAoc2V0cSBhcmdpIG9yaWctYXJnaSkpKSkpKSkgKGNvbmQgKChz ZXRxIHRlbSAoYXNzb2MgYXJnaSBjb21tYW5kLXN3aXRjaC1hbGlzdCkpIChpZiBhcmd2YWwgKGxl dCAoKGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNvbnMgYXJndmFsIGNvbW1hbmQtbGluZS1hcmdz LWxlZnQpKSkgKGZ1bmNhbGwgKGNkciB0ZW0pIGFyZ2kpKSAoZnVuY2FsbCAoY2RyIHRlbSkgYXJn aSkpKSAoKGVxdWFsIGFyZ2kgIi1uby1zcGxhc2giKSAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2Ny ZWVuIHQpKSAoKG1lbWJlciBhcmdpICcoIi1mIiAiLWZ1bmNhbGwiICItZSIpKSAoc2V0cSBpbmhp Yml0LXN0YXJ0dXAtc2NyZWVuIHQpIChzZXRxIHRlbSAoaW50ZXJuIChvciBhcmd2YWwgKGNhci1z YWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdz LWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpKSAoaWYgKGNvbW1hbmRwIHRl bSkgKGNvbW1hbmQtZXhlY3V0ZSB0ZW0pIChmdW5jYWxsIHRlbSkpKSAoKG1lbWJlciBhcmdpICco Ii1ldmFsIiAiLWV4ZWN1dGUiKSkgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSAobGV0 KiAoKHN0ci1leHByIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJn cy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJn cy1sZWZ0KSkpKSkpIChyZWFkLWRhdGEgKHJlYWQtZnJvbS1zdHJpbmcgc3RyLWV4cHIpKSAoZXhw ciAoY2FyIHJlYWQtZGF0YSkpIChlbmQgKGNkciByZWFkLWRhdGEpKSkgKGlmIChzdHJpbmctbWF0 Y2gtcCAiWyBcMTFcbl0qXFwnIiBzdHItZXhwciBlbmQpIG5pbCAoZXJyb3IgIlRyYWlsaW5nIGdh cmJhZ2UgZm9sbG93aW5nIGV4cHJlc3Npb246ICVzIiAoc3Vic3RyaW5nIHN0ci1leHByIGVuZCkp KSAoZXZhbCBleHByIHQpKSkgKChtZW1iZXIgYXJnaSAnKCItTCIgIi1kaXJlY3RvcnkiKSkgKGxl dCAoYXBwZW5kKSAoaWYgKHN0cmluZy1tYXRjaC1wIChmb3JtYXQgIlxcYCVzIiBwYXRoLXNlcGFy YXRvcikgKHNldHEgdGVtIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUt YXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUt YXJncy1sZWZ0KSkpKSkpKSAocHJvZ24gKHNldHEgdGVtIChzdWJzdHJpbmcgdGVtIDEpKSAoc2V0 cSBhcHBlbmQgdCkpKSAoc2V0cSB0ZW0gKGV4cGFuZC1maWxlLW5hbWUgKGNvbW1hbmQtbGluZS1u b3JtYWxpemUtZmlsZS1uYW1lIHRlbSkpKSAoY29uZCAoYXBwZW5kIChzZXRxIGxvYWQtcGF0aCAo YXBwZW5kIGxvYWQtcGF0aCAobGlzdCB0ZW0pKSkgKGlmIHNwbGljZSAoc2V0cSBzcGxpY2UgbG9h ZC1wYXRoKSkpIChzcGxpY2UgKHNldGNkciBzcGxpY2UgKGNvbnMgdGVtIChjZHIgc3BsaWNlKSkp IChzZXRxIHNwbGljZSAoY2RyIHNwbGljZSkpKSAodCAocHJvZ24gKHNldHEgbG9hZC1wYXRoIChj b25zIHRlbSBsb2FkLXBhdGgpKSAoc2V0cSBzcGxpY2UgbG9hZC1wYXRoKSkpKSkpICgobWVtYmVy IGFyZ2kgJygiLWwiICItbG9hZCIpKSAobGV0KiAoKGZpbGUgKGNvbW1hbmQtbGluZS1ub3JtYWxp emUtZmlsZS1uYW1lIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBjb21tYW5kLWxpbmUtYXJn cy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBjb21tYW5kLWxpbmUtYXJn cy1sZWZ0KSkpKSkpKSAoZmlsZS1leCAoZmlsZS10cnVlbmFtZSAoZXhwYW5kLWZpbGUtbmFtZSBm aWxlKSkpKSAoaWYgKGZpbGUtcmVndWxhci1wIGZpbGUtZXgpIChwcm9nbiAoc2V0cSBmaWxlIGZp bGUtZXgpKSkgKGxvYWQgZmlsZSBuaWwgdCkpKSAoKG1lbWJlciBhcmdpICcoIi1zY3JpcHRsb2Fk IiAiLXNjcmlwdGV2YWwiKSkgKGxldCogKChmaWxlIChjb21tYW5kLWxpbmUtbm9ybWFsaXplLWZp bGUtbmFtZSAob3IgYXJndmFsIChjYXItc2FmZSAocHJvZzEgY29tbWFuZC1saW5lLWFyZ3MtbGVm dCAoc2V0cSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0IChjZHIgY29tbWFuZC1saW5lLWFyZ3MtbGVm dCkpKSkpKSkgKGZpbGUtZXggKGV4cGFuZC1maWxlLW5hbWUgZmlsZSkpICh0cnVlbmFtZSAoZmls ZS10cnVlbmFtZSBmaWxlLWV4KSkpIChpZiAoZmlsZS1leGlzdHMtcCB0cnVlbmFtZSkgKHByb2du IChzZXRxIGZpbGUtZXggdHJ1ZW5hbWUpKSkgKGlmIChlcXVhbCBhcmdpICItc2NyaXB0ZXZhbCIp IChjb21tYW5kLWxpbmUtLWV2YWwtc2NyaXB0IGZpbGUtZXgpIChjb21tYW5kLWxpbmUtLWxvYWQt c2NyaXB0IGZpbGUtZXgpKSkpICgoZXF1YWwgYXJnaSAiLWluc2VydCIpIChzZXRxIGluaGliaXQt c3RhcnR1cC1zY3JlZW4gdCkgKHNldHEgdGVtIChvciBhcmd2YWwgKGNhci1zYWZlIChwcm9nMSBj b21tYW5kLWxpbmUtYXJncy1sZWZ0IChzZXRxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKGNkciBj b21tYW5kLWxpbmUtYXJncy1sZWZ0KSkpKSkpIChvciAoc3RyaW5ncCB0ZW0pIChlcnJvciAiRmls ZSBuYW1lIG9taXR0ZWQgZnJvbSBgLWluc2VydCcgb3B0aW9uIikpIChpbnNlcnQtZmlsZS1jb250 ZW50cyAoY29tbWFuZC1saW5lLW5vcm1hbGl6ZS1maWxlLW5hbWUgdGVtKSkpICgob3IgKGVxdWFs IGFyZ2kgIi1kdW1wLWZpbGUiKSAoZXF1YWwgYXJnaSAiLXNlY2NvbXAiKSkgKG9yIGFyZ3ZhbCAo Y2FyLXNhZmUgKHByb2cxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKHNldHEgY29tbWFuZC1saW5l LWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkpKSkgKChlcXVhbCBhcmdp ICIta2lsbCIpIChraWxsLWVtYWNzIHQpKSAoKGVxdWFsIGFyZ2kgIi1uby1kZXNrdG9wIikgKG1l c3NhZ2UgIlwiLS1uby1kZXNrdG9wXCIgaWdub3JlZCBiZWNhdXNlIHRoZSBEZXNrdG9wIHBhY2th Z2UgaXMgbm90IGxvYWRlZCIpKSAoKHN0cmluZy1tYXRjaCAiXlxcK1swLTldK1xcJyIgYXJnaSkg KHNldHEgbGluZSAoc3RyaW5nLXRvLW51bWJlciBhcmdpKSkpICgoc3RyaW5nLW1hdGNoICJeXFwr XFwoWzAtOV0rXFwpOlxcKFswLTldK1xcKVxcJyIgYXJnaSkgKHByb2duIChzZXRxIGxpbmUgKHN0 cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIGFyZ2kpKSkgKHNldHEgY29sdW1uIChzdHJp bmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMiBhcmdpKSkpKSkgKChzZXRxIHRlbSAoYXNzb2Mg b3JpZy1hcmdpIGNvbW1hbmQtbGluZS14LW9wdGlvbi1hbGlzdCkpIChzZXRxIGNvbW1hbmQtbGlu ZS1hcmdzLWxlZnQgKG50aGNkciAobnRoIDEgdGVtKSBjb21tYW5kLWxpbmUtYXJncy1sZWZ0KSkp ICgoc2V0cSB0ZW0gKGFzc29jIG9yaWctYXJnaSBjb21tYW5kLWxpbmUtbnMtb3B0aW9uLWFsaXN0 KSkgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MtbGVmdCAobnRoY2RyIChudGggMSB0ZW0pIGNvbW1h bmQtbGluZS1hcmdzLWxlZnQpKSkgKChtZW1iZXIgYXJnaSAnKCItZmluZC1maWxlIiAiLWZpbGUi ICItdmlzaXQiKSkgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVlbiB0KSAoc2V0cSB0ZW0gKG9y IGFyZ3ZhbCAoY2FyLXNhZmUgKHByb2cxIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQgKHNldHEgY29t bWFuZC1saW5lLWFyZ3MtbGVmdCAoY2RyIGNvbW1hbmQtbGluZS1hcmdzLWxlZnQpKSkpKSkgKGlm IChzdHJpbmdwIHRlbSkgbmlsIChlcnJvciAiRmlsZSBuYW1lIG9taXR0ZWQgZnJvbSBgJXMnIG9w dGlvbiIgYXJnaSkpIChmdW5jYWxsIHByb2Nlc3MtZmlsZS1hcmcgdGVtKSkgKChzdHJpbmctbWF0 Y2ggIlxcYC0tP1xcKG5vLVxcKT9cXCh1bmlcXHxtdWx0aVxcKWJ5dGUkIiBhcmdpKSAoZGlzcGxh eS13YXJuaW5nICdpbml0aWFsaXphdGlvbiAoZm9ybWF0ICJJZ25vcmluZyBvYnNvbGV0ZSBhcmcg JXMiIGFyZ2kpKSkgKChlcXVhbCBhcmdpICItLSIpIChzZXRxIGp1c3QtZmlsZXMgdCkpICh0IChs ZXQgKChob29rcyBjb21tYW5kLWxpbmUtZnVuY3Rpb25zKSAoZGlkLWhvb2sgbmlsKSkgKHdoaWxl IChhbmQgaG9va3MgKG5vdCAoc2V0cSBkaWQtaG9vayAoZnVuY2FsbCAoY2FyIGhvb2tzKSkpKSkg KHNldHEgaG9va3MgKGNkciBob29rcykpKSAoaWYgZGlkLWhvb2sgbmlsIChpZiAoc3RyaW5nLW1h dGNoICJcXGAtIiBhcmdpKSAoZXJyb3IgIlVua25vd24gb3B0aW9uIGAlcyciIGFyZ2kpKSAoaWYg aW5pdGlhbC13aW5kb3ctc3lzdGVtIG5pbCAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQp KSAoZnVuY2FsbCBwcm9jZXNzLWZpbGUtYXJnIG9yaWctYXJnaSkpKSkpIChpZiAoZnJhbWUtbGl2 ZS1wIChzZWxlY3RlZC1mcmFtZSkpIG5pbCAoa2lsbC1lbWFjcyBuaWwpKSkpKSkpKSAoaWYgKGVx IGluaXRpYWwtYnVmZmVyLWNob2ljZSB0KSAocHJvZ24gKGdldC1zY3JhdGNoLWJ1ZmZlci1jcmVh dGUpKSkgKGFuZCBpbml0aWFsLXNjcmF0Y2gtbWVzc2FnZSAoZ2V0LWJ1ZmZlciAiKnNjcmF0Y2gq IikgKHNhdmUtY3VycmVudC1idWZmZXIgKHNldC1idWZmZXIgIipzY3JhdGNoKiIpIChpZiAoPSAw IChidWZmZXItc2l6ZSkpIChwcm9nbiAoaW5zZXJ0IChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyBp bml0aWFsLXNjcmF0Y2gtbWVzc2FnZSkpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkpKSkg KGlmIGluaXRpYWwtYnVmZmVyLWNob2ljZSAocHJvZ24gKGxldCAoKGJ1ZiAoY29uZCAoKHN0cmlu Z3AgaW5pdGlhbC1idWZmZXItY2hvaWNlKSAoZmluZC1maWxlLW5vc2VsZWN0IGluaXRpYWwtYnVm ZmVyLWNob2ljZSkpICgoZnVuY3Rpb25wIGluaXRpYWwtYnVmZmVyLWNob2ljZSkgKGZ1bmNhbGwg aW5pdGlhbC1idWZmZXItY2hvaWNlKSkgKChlcSBpbml0aWFsLWJ1ZmZlci1jaG9pY2UgdCkgKGdl dC1zY3JhdGNoLWJ1ZmZlci1jcmVhdGUpKSAodCAoZXJyb3IgImBpbml0aWFsLWJ1ZmZlci1jaG9p Y2UnIG11c3QgYmUgYSBzdHJpbmcsIGEgZnVuY3Rpb24sIG9yIHQiKSkpKSkgKGlmIChidWZmZXIt bGl2ZS1wIGJ1ZikgbmlsIChlcnJvciAiVmFsdWUgcmV0dXJuZWQgYnkgYGluaXRpYWwtYnVmZmVy LWNob2ljZScgaXMgbm90IGEgbGl2ZSBidWZmZXI6ICVTIiBidWYpKSAoc2V0cSBkaXNwbGF5YWJs ZS1idWZmZXJzIChjb25zIGJ1ZiAoZGVscSBidWYgZGlzcGxheWFibGUtYnVmZmVycykpKSkpKSAo bGV0ICgoZGlzcGxheWFibGUtYnVmZmVycy1sZW4gKGxlbmd0aCBkaXNwbGF5YWJsZS1idWZmZXJz KSkgKG5vbmRpc3BsYXllZC1idWZmZXJzLXAgbmlsKSAob2xkLWZhY2UtZm9udC1yZXNjYWxlLWFs aXN0IGZhY2UtZm9udC1yZXNjYWxlLWFsaXN0KSkgKGlmICg+IGRpc3BsYXlhYmxlLWJ1ZmZlcnMt bGVuIDApIChwcm9nbiAoc3dpdGNoLXRvLWJ1ZmZlciAoY2FyIGRpc3BsYXlhYmxlLWJ1ZmZlcnMp KSkpIChjb25kICgoPSBkaXNwbGF5YWJsZS1idWZmZXJzLWxlbiAyKSAoc3dpdGNoLXRvLWJ1ZmZl ci1vdGhlci13aW5kb3cgKGNhciAoY2RyIGRpc3BsYXlhYmxlLWJ1ZmZlcnMpKSkgKG90aGVyLXdp bmRvdyAtMSkpICgoPiBkaXNwbGF5YWJsZS1idWZmZXJzLWxlbiAyKSAobGV0ICgoYnVmcyAocmV2 ZXJzZSAoY2RyIGRpc3BsYXlhYmxlLWJ1ZmZlcnMpKSkpIChzd2l0Y2gtdG8tYnVmZmVyLW90aGVy LXdpbmRvdyAoY2FyLXNhZmUgKHByb2cxIGJ1ZnMgKHNldHEgYnVmcyAoY2RyIGJ1ZnMpKSkpKSAo bGV0ICgodGFpbCBidWZzKSkgKHdoaWxlIHRhaWwgKGxldCAoKGJ1ZiAoY2FyIHRhaWwpKSkgKHN3 aXRjaC10by1idWZmZXIgYnVmIG5pbCB0KSAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKSkpIChvdGhl ci13aW5kb3cgLTEpKSkpIChpZiAoPiBkaXNwbGF5YWJsZS1idWZmZXJzLWxlbiAyKSAocHJvZ24g KHNldHEgbm9uZGlzcGxheWVkLWJ1ZmZlcnMtcCB0KSkpIChpZiAob3IgaW5oaWJpdC1zdGFydHVw LXNjcmVlbiBpbml0aWFsLWJ1ZmZlci1jaG9pY2Ugbm9uaW50ZXJhY3RpdmUgKGRhZW1vbnApIGlu aGliaXQteC1yZXNvdXJjZXMpIChpZiAoYW5kIG5vbmRpc3BsYXllZC1idWZmZXJzLXAgKG5vdCBu b25pbnRlcmFjdGl2ZSkgKG5vdCBpbmhpYml0LXN0YXJ0dXAtYnVmZmVyLW1lbnUpKSAocHJvZ24g KGxpc3QtYnVmZmVycykpKSAocnVuLWhvb2tzICdlbWFjcy1zdGFydHVwLWhvb2sgJ3Rlcm0tc2V0 dXAtaG9vaykgKGlmIChhbmQgKGRpc3BsYXktbXVsdGktZm9udC1wKSAobm90IChlcSBmYWNlLWZv bnQtcmVzY2FsZS1hbGlzdCBvbGQtZmFjZS1mb250LXJlc2NhbGUtYWxpc3QpKSAoYXNzb2MgKGZv bnQteGxmZC1uYW1lIChmYWNlLWF0dHJpYnV0ZSAnZGVmYXVsdCA6Zm9udCkpIGZhY2UtZm9udC1y ZXNjYWxlLWFsaXN0ICMnc3RyaW5nLW1hdGNoLXApKSAocHJvZ24gKHNldC1mYWNlLWF0dHJpYnV0 ZSAnZGVmYXVsdCBuaWwgOmZvbnQgKGZvbnQtc3BlYykpKSkgKGlmIChmYm91bmRwICdmcmFtZS1u b3RpY2UtdXNlci1zZXR0aW5ncykgKHByb2duIChmcmFtZS1ub3RpY2UtdXNlci1zZXR0aW5ncykp KSAocnVuLWhvb2tzICd3aW5kb3ctc2V0dXAtaG9vaykgKHNldHEgaW5oaWJpdC1zdGFydHVwLWhv b2tzIHQpIChkaXNwbGF5LXN0YXJ0dXAtc2NyZWVuICg+IGRpc3BsYXlhYmxlLWJ1ZmZlcnMtbGVu IDApKSkpKQogIGNvbW1hbmQtbGluZS0xKCgiLWwiICIuL2VtYWNzLWxpc3AvbG9hZGRlZnMtZ2Vu LmVsYyIgIi1mIiAibG9hZGRlZnMtZ2VuZXJhdGUtLWVtYWNzLWJhdGNoIiAiLiIgIi4vY2FsYyIg Ii4vY2FsZW5kYXIiICIuL2NlZGV0IiAiLi9jZWRldC9lZGUiICIuL2NlZGV0L3NlbWFudGljIiAi Li9jZWRldC9zZW1hbnRpYy9hbmFseXplIiAiLi9jZWRldC9zZW1hbnRpYy9ib3ZpbmUiICIuL2Nl ZGV0L3NlbWFudGljL2RlY29yYXRlIiAiLi9jZWRldC9zZW1hbnRpYy9zeW1yZWYiICIuL2NlZGV0 L3NlbWFudGljL3dpc2VudCIgIi4vY2VkZXQvc3JlY29kZSIgIi4vZW1hY3MtbGlzcCIgIi4vZW11 bGF0aW9uIiAiLi9lcmMiICIuL2VzaGVsbCIgIi4vZ251cyIgIi4vaW1hZ2UiICIuL2ludGVybmF0 aW9uYWwiICIuL2xhbmd1YWdlIiAiLi9sZWltIiAiLi9sZWltL3F1YWlsIiAiLi9tYWlsIiAiLi9t aC1lIiAiLi9uZXQiICIuL254bWwiICIuL29yZyIgIi4vcGxheSIgIi4vcHJvZ21vZGVzIiAiLi90 ZXh0bW9kZXMiICIuL3VybCIgIi4vdXNlLXBhY2thZ2UiICIuL3ZjIikpCiAgKGxldCAoeGRnLWRp ciBzdGFydHVwLWluaXQtZGlyZWN0b3J5KSAocHJvZ24gKHNldHEgYmVmb3JlLWluaXQtdGltZSAo Y3VycmVudC10aW1lKSkgKHNldHEgYWZ0ZXItaW5pdC10aW1lIG5pbCkgKHNldHEgY29tbWFuZC1s aW5lLWRlZmF1bHQtZGlyZWN0b3J5IGRlZmF1bHQtZGlyZWN0b3J5KSkgKHNldHEgYWJicmV2aWF0 ZWQtaG9tZS1kaXIgbmlsKSAobGV0ICgodmMgKGdldGVudiAiVkVSU0lPTl9DT05UUk9MIikpKSAo Y29uZCAoKGVxIHZjIG5pbCkpICgobWVtYmVyIHZjICcoInQiICJudW1iZXJlZCIpKSAoc2V0cSB2 ZXJzaW9uLWNvbnRyb2wgdCkpICgobWVtYmVyIHZjICcoIm5pbCIgImV4aXN0aW5nIikpIChzZXRx IHZlcnNpb24tY29udHJvbCBuaWwpKSAoKG1lbWJlciB2YyAnKCJuZXZlciIgInNpbXBsZSIpKSAo c2V0cSB2ZXJzaW9uLWNvbnRyb2wgJ25ldmVyKSkpKSAobGV0ICgoc2ltcGxlLWZpbGUtbmFtZSAo bG9jYXRlLWZpbGUgInNpbXBsZSIgbG9hZC1wYXRoIChnZXQtbG9hZC1zdWZmaXhlcykpKSkgKGlm IChudWxsIHNpbXBsZS1maWxlLW5hbWUpIChsZXQgKChzdGFuZGFyZC1vdXRwdXQgJ2V4dGVybmFs LWRlYnVnZ2luZy1vdXRwdXQpIChsaXNwZGlyIChleHBhbmQtZmlsZS1uYW1lICIuLi9saXNwIiBk YXRhLWRpcmVjdG9yeSkpKSAocHJpbmMgIldhcm5pbmc6IENvdWxkIG5vdCBmaW5kIHNpbXBsZS5l bCBvciBzaW1wbGUuZWxjIikgKHRlcnByaSkgKGlmIChnZXRlbnYgIkVNQUNTTE9BRFBBVEgiKSAo cHJvZ24gKHByaW5jICJUaGUgRU1BQ1NMT0FEUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBz ZXQsIHBsZWFzZSBjaGVjayBpdHMgdmFsdWUiKSAodGVycHJpKSkpIChpZiAoZmlsZS1yZWFkYWJs ZS1wIGxpc3BkaXIpIG5pbCAocHJpbmMgKGZvcm1hdCAiTGlzcCBkaXJlY3RvcnkgJXMgbm90IHJl YWRhYmxlPyIgbGlzcGRpcikpICh0ZXJwcmkpKSkgKHNldHEgbGlzcC1kaXJlY3RvcnkgKGZpbGUt dHJ1ZW5hbWUgKGZpbGUtbmFtZS1kaXJlY3Rvcnkgc2ltcGxlLWZpbGUtbmFtZSkpKSAoc2V0cSBs b2FkLWhpc3RvcnkgKG1hcGNhciAjJyhsYW1iZGEgKGVsdCkgKGlmIChhbmQgKHN0cmluZ3AgKGNh ciBlbHQpKSAobm90IChmaWxlLW5hbWUtYWJzb2x1dGUtcCAoY2FyIGVsdCkpKSkgKGNvbnMgKGNv bmNhdCBsaXNwLWRpcmVjdG9yeSAoY2FyIGVsdCkpIChjZHIgZWx0KSkgZWx0KSkgbG9hZC1oaXN0 b3J5KSkpKSAobGV0ICgoYXJncyBjb21tYW5kLWxpbmUtYXJncykpICh3aGlsZSBhcmdzIChzZXRj YXIgYXJncyAoZGVjb2RlLWNvZGluZy1zdHJpbmcgKGNhciBhcmdzKSBsb2NhbGUtY29kaW5nLXN5 c3RlbSB0KSkgKGNhci1zYWZlIChwcm9nMSBhcmdzIChzZXRxIGFyZ3MgKGNkciBhcmdzKSkpKSkp IChsZXQgKChkb25lIG5pbCkgKGFyZ3MgKGNkciBjb21tYW5kLWxpbmUtYXJncykpIGRpc3BsYXkt YXJnKSAoc2V0cSBpbml0LWZpbGUtdXNlciAoaWYgbm9uaW50ZXJhY3RpdmUgbmlsICh1c2VyLWxv Z2luLW5hbWUpKSkgKGFuZCBpbml0LWZpbGUtdXNlciAoZXF1YWwgaW5pdC1maWxlLXVzZXIgKHVz ZXItcmVhbC1sb2dpbi1uYW1lKSkgKHNldHEgaW5pdC1maWxlLXVzZXIgIiIpKSAod2hpbGUgKGFu ZCAobm90IGRvbmUpIGFyZ3MpIChsZXQqICgobG9uZ29wdHMgJygoIi0tbm8taW5pdC1maWxlIikg KCItLW5vLXNpdGUtZmlsZSIpICgiLS1uby14LXJlc291cmNlcyIpICgiLS1kZWJ1Zy1pbml0Iikg KCItLXVzZXIiKSAoIi0taWNvbmljIikgKCItLWljb24tdHlwZSIpICgiLS1xdWljayIpICgiLS1u by1ibGlua2luZy1jdXJzb3IiKSAoIi0tYmFzaWMtZGlzcGxheSIpICgiLS1kdW1wLWZpbGUiKSAo Ii0tdGVtYWNzIikgKCItLXNlY2NvbXAiKSAoIi0taW5pdC1kaXJlY3RvcnkiICItLW5vLWNvbXAt c3Bhd24iKSkpIChhcmdpIChjYXItc2FmZSAocHJvZzEgYXJncyAoc2V0cSBhcmdzIChjZHIgYXJn cykpKSkpIChvcmlnLWFyZ2kgYXJnaSkgYXJndmFsKSAoaWYgKHN0cmluZy1tYXRjaCAiXFxgXFwo LS1bXj1dKlxcKT0iIGFyZ2kpIChwcm9nbiAocHJvZ24gKHNldHEgYXJndmFsIChzdWJzdHJpbmcg YXJnaSAobWF0Y2gtZW5kIDApKSkgKHNldHEgYXJnaSAobWF0Y2gtc3RyaW5nIDEgYXJnaSkpKSkp IChpZiAoc3RyaW5nLW1hdGNoICJcXGAtLS4iIG9yaWctYXJnaSkgKHByb2duIChsZXQgKChjb21w bGV0aW9uICh0cnktY29tcGxldGlvbiBhcmdpIGxvbmdvcHRzKSkpIChjb25kICgoZXEgY29tcGxl dGlvbiB0KSAoc2V0cSBhcmdpIChzdWJzdHJpbmcgYXJnaSAxKSkpICgoc3RyaW5ncCBjb21wbGV0 aW9uKSAobGV0ICgoZWx0IChhc3NvYyBjb21wbGV0aW9uIGxvbmdvcHRzKSkpIChpZiBlbHQgbmls IChlcnJvciAiT3B0aW9uIGAlcycgaXMgYW1iaWd1b3VzIiBhcmdpKSkgKHNldHEgYXJnaSAoc3Vi c3RyaW5nIChjYXIgZWx0KSAxKSkpKSAodCAocHJvZ24gKHNldHEgYXJndmFsIG5pbCkgKHNldHEg YXJnaSBvcmlnLWFyZ2kpKSkpKSkpIChpZiAoZXF1YWwgYXJnaSAiLXNjcmlwdGV2YWwiKSAocHJv Z24gKHByb2duIChzZXRxIGluaXQtZmlsZS11c2VyIG5pbCkgKHNldHEgbm9uaW50ZXJhY3RpdmUg dCkpKSkgKGNvbmQgKChtZW1iZXIgYXJnaSAnKCItZCIgIi1kaXNwbGF5IikpIChzZXRxIGRpc3Bs YXktYXJnIChsaXN0IGFyZ2kgKGNhci1zYWZlIChwcm9nMSBhcmdzIChzZXRxIGFyZ3MgKGNkciBh cmdzKSkpKSkpKSAoKG1lbWJlciBhcmdpICcoIi1RIiAiLXF1aWNrIikpIChwcm9nbiAoc2V0cSBp bml0LWZpbGUtdXNlciBuaWwpIChzZXRxIHNpdGUtcnVuLWZpbGUgbmlsKSAoc2V0cSBpbmhpYml0 LXgtcmVzb3VyY2VzIHQpKSAocHV0ICdzaXRlLXJ1bi1maWxlICdzdGFuZGFyZC12YWx1ZSAnKG5p bCkpKSAoKG1lbWJlciBhcmdpICcoIi1uby14LXJlc291cmNlcyIpKSAoc2V0cSBpbmhpYml0LXgt cmVzb3VyY2VzIHQpKSAoKG1lbWJlciBhcmdpICcoIi1EIiAiLWJhc2ljLWRpc3BsYXkiKSkgKHBy b2duIChzZXRxIG5vLWJsaW5raW5nLWN1cnNvciB0KSAoc2V0cSBlbWFjcy1iYXNpYy1kaXNwbGF5 IHQpKSAoc2V0cSBpbml0aWFsLWZyYW1lLWFsaXN0IChjb25zICcodmVydGljYWwtc2Nyb2xsLWJh cnMpIGluaXRpYWwtZnJhbWUtYWxpc3QpKSkgKChtZW1iZXIgYXJnaSAnKCItcSIgIi1uby1pbml0 LWZpbGUiKSkgKHNldHEgaW5pdC1maWxlLXVzZXIgbmlsKSkgKChtZW1iZXIgYXJnaSAnKCItaW5p dC1kaXJlY3RvcnkiKSkgKHByb2duIChzZXRxIHVzZXItZW1hY3MtZGlyZWN0b3J5IChvciBhcmd2 YWwgKGNhci1zYWZlIChwcm9nMSBhcmdzIChzZXRxIGFyZ3MgKGNkciBhcmdzKSkpKSkpIChzZXRx IHVzZXItZW1hY3MtZGlyZWN0b3J5IChpZiAoc3RyaW5ncCB1c2VyLWVtYWNzLWRpcmVjdG9yeSkg KGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgKGV4cGFuZC1maWxlLW5hbWUgdXNlci1lbWFjcy1kaXJl Y3RvcnkgY29tbWFuZC1saW5lLWRlZmF1bHQtZGlyZWN0b3J5KSkgdXNlci1lbWFjcy1kaXJlY3Rv cnkpKSAoc2V0cSBhcmd2YWwgbmlsKSkpICgobWVtYmVyIGFyZ2kgJygiLXUiICItdXNlciIpKSAo cHJvZ24gKHNldHEgaW5pdC1maWxlLXVzZXIgKG9yIGFyZ3ZhbCAoY2FyLXNhZmUgKHByb2cxIGFy Z3MgKHNldHEgYXJncyAoY2RyIGFyZ3MpKSkpKSkgKHNldHEgYXJndmFsIG5pbCkpKSAoKGVxdWFs IGFyZ2kgIi1uby1zaXRlLWZpbGUiKSAoc2V0cSBzaXRlLXJ1bi1maWxlIG5pbCkgKHB1dCAnc2l0 ZS1ydW4tZmlsZSAnc3RhbmRhcmQtdmFsdWUgJyhuaWwpKSkgKChlcXVhbCBhcmdpICItbm8tY29t cC1zcGF3biIpIChkZWZ2YXIgY29tcC1uby1zcGF3bikgKHNldHEgY29tcC1uby1zcGF3biB0KSkg KChlcXVhbCBhcmdpICItZGVidWctaW5pdCIpIChzZXRxIGluaXQtZmlsZS1kZWJ1ZyB0KSkgKChl cXVhbCBhcmdpICItaWNvbmljIikgKHNldHEgaW5pdGlhbC1mcmFtZS1hbGlzdCAoY29ucyAnKHZp c2liaWxpdHkgLiBpY29uKSBpbml0aWFsLWZyYW1lLWFsaXN0KSkpICgobWVtYmVyIGFyZ2kgJygi LW5iYyIgIi1uby1ibGlua2luZy1jdXJzb3IiKSkgKHNldHEgbm8tYmxpbmtpbmctY3Vyc29yIHQp KSAoKG1lbWJlciBhcmdpICcoIi1kdW1wLWZpbGUiICItdGVtYWNzIiAiLXNlY2NvbXAiKSkgKG9y IGFyZ3ZhbCAoY2FyLXNhZmUgKHByb2cxIGFyZ3MgKHNldHEgYXJncyAoY2RyIGFyZ3MpKSkpKSAo c2V0cSBhcmd2YWwgbmlsKSkgKHQgKHNldHEgYXJncyAoY29ucyBhcmdpIGFyZ3MpKSAoc2V0cSBk b25lIHQpKSkgKGFuZCBhcmd2YWwgKGVycm9yICJPcHRpb24gYCVzJyBkb2Vzbid0IGFsbG93IGFu IGFyZ3VtZW50IiBhcmdpKSkpKSAoYW5kIGRpc3BsYXktYXJnIChzZXRxIGFyZ3MgKGFwcGVuZCBk aXNwbGF5LWFyZyBhcmdzKSkpIChhbmQgY29tbWFuZC1saW5lLWFyZ3MgKHNldGNkciBjb21tYW5k LWxpbmUtYXJncyBhcmdzKSkpIChsZXQgKCh1c2VyLWVtYWNzLWRpcmVjdG9yeS13YXJuaW5nIG5p bCkpIChpZiAobGlzdHAgY3VzdG9tLWRlbGF5ZWQtaW5pdC12YXJpYWJsZXMpIChwcm9nbiAobWFw YyAjJ2N1c3RvbS1yZWV2YWx1YXRlLXNldHRpbmcgKHJldmVyc2UgY3VzdG9tLWRlbGF5ZWQtaW5p dC12YXJpYWJsZXMpKSkpKSAoc2V0cSBjdXN0b20tZGVsYXllZC1pbml0LXZhcmlhYmxlcyB0KSAo aWYgaW5pdC1maWxlLXVzZXIgKHByb2duIChpZiAoc3RyaW5nLW1hdGNoICJbfi86XG5dIiBpbml0 LWZpbGUtdXNlcikgKGRpc3BsYXktd2FybmluZyAnaW5pdGlhbGl6YXRpb24gKGZvcm1hdCAiSW52 YWxpZCB1c2VyIG5hbWUgJXMiIGluaXQtZmlsZS11c2VyKSA6ZXJyb3IpIChpZiAoZmlsZS1kaXJl Y3RvcnktcCAoZXhwYW5kLWZpbGUtbmFtZSAoaWYgKG1lbXEgc3lzdGVtLXR5cGUgJyh3aW5kb3dz LW50IG1zLWRvcykpICJ+IiAoY29uY2F0ICJ+IiBpbml0LWZpbGUtdXNlcikpKSkgbmlsIChkaXNw bGF5LXdhcm5pbmcgJ2luaXRpYWxpemF0aW9uIChmb3JtYXQgIlVzZXIgJXMgaGFzIG5vIGhvbWUg ZGlyZWN0b3J5IiAoaWYgKGVxdWFsIGluaXQtZmlsZS11c2VyICIiKSAodXNlci1yZWFsLWxvZ2lu LW5hbWUpIGluaXQtZmlsZS11c2VyKSkgOmVycm9yKSkpKSkgKHNldHEgeGRnLWRpciBzdGFydHVw LS14ZGctY29uZmlnLWhvbWUtZW1hY3MpIChzZXRxIHN0YXJ0dXAtaW5pdC1kaXJlY3RvcnkgKGlm IChvciAoPSAwIChsZW5ndGggaW5pdC1maWxlLXVzZXIpKSAoYW5kIChlcSB4ZGctZGlyIHVzZXIt ZW1hY3MtZGlyZWN0b3J5KSAobm90IChlcSB4ZGctZGlyIHN0YXJ0dXAtLXhkZy1jb25maWctZGVm YXVsdCkpKSkgdXNlci1lbWFjcy1kaXJlY3RvcnkgKHNldHEgeGRnLWRpciAoY29uY2F0ICJ+IiBp bml0LWZpbGUtdXNlciAiLy5jb25maWcvZW1hY3MvIikpIChzdGFydHVwLS14ZGctb3ItaG9tZWRv dCB4ZGctZGlyIGluaXQtZmlsZS11c2VyKSkpIChpZiBzaXRlLXJ1bi1maWxlIChwcm9nbiAobGV0 ICgoaW5oaWJpdC1zdGFydHVwLXNjcmVlbiBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuKSkgKGxvYWQg c2l0ZS1ydW4tZmlsZSB0IHQpKSkpIChzdGFydHVwLS1sb2FkLXVzZXItaW5pdC1maWxlICMnKGxh bWJkYSBuaWwgKGV4cGFuZC1maWxlLW5hbWUgImVhcmx5LWluaXQuZWwiIHN0YXJ0dXAtaW5pdC1k aXJlY3RvcnkpKSkgKHNldHEgZWFybHktaW5pdC1maWxlIHVzZXItaW5pdC1maWxlKSAoaWYgKGZl YXR1cmVwICduYXRpdmUtY29tcGlsZSkgKHByb2duIChzdGFydHVwLS11cGRhdGUtZWxuLWNhY2hl KSkpIChhbmQgdXNlci1pbml0LWZpbGUgcGFja2FnZS1lbmFibGUtYXQtc3RhcnR1cCAobm90IChh bmQgKGJvdW5kcCAncGFja2FnZS0tYWN0aXZhdGVkKSBwYWNrYWdlLS1hY3RpdmF0ZWQpKSAoY2F0 Y2ggJ3BhY2thZ2UtZGlyLWZvdW5kIChsZXQgKChkaXJzIChjb25zIHBhY2thZ2UtdXNlci1kaXIg cGFja2FnZS1kaXJlY3RvcnktbGlzdCkpKSAobGV0ICgodGFpbCBkaXJzKSkgKHdoaWxlIHRhaWwg KGxldCAoKGRpciAoY2FyIHRhaWwpKSkgKGlmIChmaWxlLWRpcmVjdG9yeS1wIGRpcikgKHByb2du IChsZXQgKCh0YWlsIChkaXJlY3RvcnktZmlsZXMgZGlyKSkpICh3aGlsZSB0YWlsIChsZXQgKChz dWJkaXIgKGNhciB0YWlsKSkpIChpZiAobGV0ICgoc3ViZGlyIChleHBhbmQtZmlsZS1uYW1lIHN1 YmRpciBkaXIpKSkgKGFuZCAoZmlsZS1kaXJlY3RvcnktcCBzdWJkaXIpIChmaWxlLWV4aXN0cy1w IChleHBhbmQtZmlsZS1uYW1lIChwYWNrYWdlLS1kZXNjcmlwdGlvbi1maWxlIHN1YmRpcikgc3Vi ZGlyKSkpKSAocHJvZ24gKHRocm93ICdwYWNrYWdlLWRpci1mb3VuZCB0KSkpIChzZXRxIHRhaWwg KGNkciB0YWlsKSkpKSkpKSAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKSkpKSkgKHBhY2thZ2UtYWN0 aXZhdGUtYWxsKSkgKGNvbmRpdGlvbi1jYXNlIGVycm9yIChpZiBub25pbnRlcmFjdGl2ZSBuaWwg KGlmIChhbmQgaW5pdGlhbC13aW5kb3ctc3lzdGVtIChub3QgKGZlYXR1cmVwIChpbnRlcm4gKGNv bmNhdCAoc3ltYm9sLW5hbWUgaW5pdGlhbC13aW5kb3ctc3lzdGVtKSAiLXdpbiIpKSkpKSAoZXJy b3IgIlVuc3VwcG9ydGVkIHdpbmRvdyBzeXN0ZW0gYCVzJyIgaW5pdGlhbC13aW5kb3ctc3lzdGVt KSkgKHNldHEgY29tbWFuZC1saW5lLWFyZ3MgKGxldCAoKHdpbmRvdy1zeXN0ZW0gaW5pdGlhbC13 aW5kb3ctc3lzdGVtKSkgKGhhbmRsZS1hcmdzLWZ1bmN0aW9uIGNvbW1hbmQtbGluZS1hcmdzKSkp IChsZXQgKCh3aW5kb3ctc3lzdGVtIGluaXRpYWwtd2luZG93LXN5c3RlbSkpICh3aW5kb3ctc3lz dGVtLWluaXRpYWxpemF0aW9uKSkgKHB1dCBpbml0aWFsLXdpbmRvdy1zeXN0ZW0gJ3dpbmRvdy1z eXN0ZW0taW5pdGlhbGl6ZWQgdCkpIChlcnJvciAocHJpbmMgKGlmIChlcSAoY2FyIGVycm9yKSAn ZXJyb3IpIChhcHBseSAjJ2NvbmNhdCAoY2RyIGVycm9yKSkgKGlmIChtZW1xICdmaWxlLWVycm9y IChnZXQgKGNhciBlcnJvcikgJ2Vycm9yLWNvbmRpdGlvbnMpKSAoZm9ybWF0ICIlczogJXMiIChu dGggMSBlcnJvcikgKG1hcGNvbmNhdCAjJyhsYW1iZGEgKG9iaikgKHByaW4xLXRvLXN0cmluZyBv YmogdCkpIChjZHIgKGNkciBlcnJvcikpICIsICIpKSAoZm9ybWF0ICIlczogJXMiIChnZXQgKGNh ciBlcnJvcikgJ2Vycm9yLW1lc3NhZ2UpIChtYXBjb25jYXQgIycobGFtYmRhIChvYmopIChwcmlu MS10by1zdHJpbmcgb2JqIHQpKSAoY2RyIGVycm9yKSAiLCAiKSkpKSAnZXh0ZXJuYWwtZGVidWdn aW5nLW91dHB1dCkgKHRlcnByaSAnZXh0ZXJuYWwtZGVidWdnaW5nLW91dHB1dCkgKHNldHEgaW5p dGlhbC13aW5kb3ctc3lzdGVtIG5pbCkgKGtpbGwtZW1hY3MpKSkgKHJ1bi1ob29rcyAnYmVmb3Jl LWluaXQtaG9vaykgKGlmIChkYWVtb25wKSBuaWwgKGlmIChvciBub25pbnRlcmFjdGl2ZSBlbWFj cy1iYXNpYy1kaXNwbGF5KSAocHJvZ24gKHNldHEgbWVudS1iYXItbW9kZSBuaWwpIChzZXRxIHRh Yi1iYXItbW9kZSBuaWwpIChzZXRxIHRvb2wtYmFyLW1vZGUgbmlsKSkpIChmcmFtZS1pbml0aWFs aXplKSkgKGlmIChmYm91bmRwICd4LWNyZWF0ZS1mcmFtZSkgKHByb2duIChpZiBub25pbnRlcmFj dGl2ZSBuaWwgKHRvb2wtYmFyLXNldHVwKSkpKSAoaWYgbm9uaW50ZXJhY3RpdmUgbmlsIChzdGFy dHVwLS1zZXR1cC1xdW90ZS1kaXNwbGF5KSAoc2V0cSBpbnRlcm5hbC0tdGV4dC1xdW90aW5nLWZs YWcgdCkpIChub3JtYWwtZXJhc2UtaXMtYmFja3NwYWNlLXNldHVwLWZyYW1lKSAob3IgKGVxIGlu aXRpYWwtd2luZG93LXN5c3RlbSAncGMpICh0dHktcmVnaXN0ZXItZGVmYXVsdC1jb2xvcnMpKSAo bGV0ICgob2xkLXNjYWxhYmxlLWZvbnRzLWFsbG93ZWQgc2NhbGFibGUtZm9udHMtYWxsb3dlZCkg KG9sZC1mYWNlLWlnbm9yZWQtZm9udHMgZmFjZS1pZ25vcmVkLWZvbnRzKSkgKHN0YXJ0dXAtLWxv YWQtdXNlci1pbml0LWZpbGUgIycobGFtYmRhIG5pbCAoY29uZCAoKGVxIHN0YXJ0dXAtaW5pdC1k aXJlY3RvcnkgeGRnLWRpcikgbmlsKSAoKGVxIHN5c3RlbS10eXBlICdtcy1kb3MpIChjb25jYXQg In4iIGluaXQtZmlsZS11c2VyICIvX2VtYWNzIikpICgobm90IChlcSBzeXN0ZW0tdHlwZSAnd2lu ZG93cy1udCkpIChjb25jYXQgIn4iIGluaXQtZmlsZS11c2VyICIvLmVtYWNzIikpICgoZGlyZWN0 b3J5LWZpbGVzICJ+IiBuaWwgIlxcYFxcLmVtYWNzXFwoXFwuZWxjP1xcKT9cXCciKSAifi8uZW1h Y3MiKSAoKGRpcmVjdG9yeS1maWxlcyAifiIgbmlsICJcXGBfZW1hY3NcXChcXC5lbGM/XFwpP1xc JyIpIChzZXRxIGRlbGF5ZWQtd2FybmluZ3MtbGlzdCAoY29ucyAobGlzdCAnaW5pdGlhbGl6YXRp b24gKGZvcm1hdC1tZXNzYWdlICJgX2VtYWNzJyBpbml0IGZpbGUgaXMgZGVwcmVjYXRlZCwgcGxl YXNlIHVzZSBgLmVtYWNzJyIpKSBkZWxheWVkLXdhcm5pbmdzLWxpc3QpKSAifi9fZW1hY3MiKSAo dCAifi8uZW1hY3MiKSkpICMnKGxhbWJkYSBuaWwgKGV4cGFuZC1maWxlLW5hbWUgImluaXQuZWwi IHN0YXJ0dXAtaW5pdC1kaXJlY3RvcnkpKSB0KSAoaWYgKGZlYXR1cmVwICduYXRpdmUtY29tcGls ZSkgKHByb2duIChzdGFydHVwLS11cGRhdGUtZWxuLWNhY2hlKSkpIChpZiAoYW5kIGRlYWN0aXZh dGUtbWFyayB0cmFuc2llbnQtbWFyay1tb2RlKSAocHJvZ24gKHNhdmUtY3VycmVudC1idWZmZXIg KHNldC1idWZmZXIgKHdpbmRvdy1idWZmZXIpKSAoZGVhY3RpdmF0ZS1tYXJrKSkpKSAoaWYgKGFu ZCAobm90IG5vbmludGVyYWN0aXZlKSAoZmlsZS1leGlzdHMtcCBhYmJyZXYtZmlsZS1uYW1lKSAo ZmlsZS1yZWFkYWJsZS1wIGFiYnJldi1maWxlLW5hbWUpKSAocHJvZ24gKHF1aWV0bHktcmVhZC1h YmJyZXYtZmlsZSBhYmJyZXYtZmlsZS1uYW1lKSkpIChzZXRxIGFiYnJldnMtY2hhbmdlZCBuaWwp IChhbmQgbWFpbC1ob3N0LWFkZHJlc3MgKGVxdWFsIHVzZXItbWFpbC1hZGRyZXNzIChsZXQgKG1h aWwtaG9zdC1hZGRyZXNzKSAoY29uZGl0aW9uLWNhc2UgbmlsIChwcm9nbiAoY3VzdG9tLS1zdGFu ZGFyZC12YWx1ZSAndXNlci1tYWlsLWFkZHJlc3MpKSAoZXJyb3IgbmlsKSkpKSAoY3VzdG9tLXJl ZXZhbHVhdGUtc2V0dGluZyAndXNlci1tYWlsLWFkZHJlc3MpKSAoaWYgKGFuZCAoZXEgc2NhbGFi bGUtZm9udHMtYWxsb3dlZCBvbGQtc2NhbGFibGUtZm9udHMtYWxsb3dlZCkgKGVxIGZhY2UtaWdu b3JlZC1mb250cyBvbGQtZmFjZS1pZ25vcmVkLWZvbnRzKSkgbmlsIChjbGVhci1mYWNlLWNhY2hl KSkpIChzZXRxIGFmdGVyLWluaXQtdGltZSAoY3VycmVudC10aW1lKSkgKHJ1bi1ob29rcyAnYWZ0 ZXItaW5pdC1ob29rICdkZWxheWVkLXdhcm5pbmdzLWhvb2spIChpZiAoZ2V0LWJ1ZmZlciAiKnNj cmF0Y2gqIikgKHNhdmUtY3VycmVudC1idWZmZXIgKHNldC1idWZmZXIgIipzY3JhdGNoKiIpIChp ZiAoZXEgbWFqb3ItbW9kZSAnZnVuZGFtZW50YWwtbW9kZSkgKGZ1bmNhbGwgaW5pdGlhbC1tYWpv ci1tb2RlKSkpKSAoaWYgKG9yIG5vbmludGVyYWN0aXZlIGluaXRpYWwtd2luZG93LXN5c3RlbSAo ZGFlbW9ucCkpIG5pbCAodHR5LXJ1bi10ZXJtaW5hbC1pbml0aWFsaXphdGlvbiAoc2VsZWN0ZWQt ZnJhbWUpIG5pbCB0KSkgKHNldHEgbWVtb3J5LXNpZ25hbC1kYXRhIChsaXN0ICdlcnJvciAoc3Vi c3RpdHV0ZS1jb21tYW5kLWtleXMgIk1lbW9yeSBleGhhdXN0ZWQtLXVzZSBcXFtzYXZlLXNvbWUt YnVmZmVyc10gdGhlbiBleGl0IGFuZCByZXN0YXJ0IEVtYWNzIikpKSAoY3VzdG9tLXJlZXZhbHVh dGUtc2V0dGluZyAndXNlci1lbWFjcy1kaXJlY3Rvcnktd2FybmluZykgKGNvbW1hbmQtbGluZS0x IChjZHIgY29tbWFuZC1saW5lLWFyZ3MpKSAoaWYgbm9uaW50ZXJhY3RpdmUgKGtpbGwtZW1hY3Mg dCkpIChpZiAoYW5kIHVzZXItZW1hY3MtZGlyZWN0b3J5LXdhcm5pbmcgKG5vdCAoZmlsZS1hY2Nl c3NpYmxlLWRpcmVjdG9yeS1wIHVzZXItZW1hY3MtZGlyZWN0b3J5KSkpIChwcm9nbiAobG9jYXRl LXVzZXItZW1hY3MtZmlsZSAiIikpKSAobGV0ICh3YXJuZWQpIChsZXQgKCh0YWlsIGxvYWQtcGF0 aCkpICh3aGlsZSB0YWlsIChsZXQgKChkaXIgKGNhciB0YWlsKSkpIChhbmQgKG5vdCBub25pbnRl cmFjdGl2ZSkgKG5vdCB3YXJuZWQpIChzdHJpbmdwIGRpcikgKHN0cmluZy1lcXVhbCAoZmlsZS1u YW1lLWFzLWRpcmVjdG9yeSAoZXhwYW5kLWZpbGUtbmFtZSBkaXIpKSAoZXhwYW5kLWZpbGUtbmFt ZSB1c2VyLWVtYWNzLWRpcmVjdG9yeSkpIChzZXRxIHdhcm5lZCB0KSAoZGlzcGxheS13YXJuaW5n ICdpbml0aWFsaXphdGlvbiAoZm9ybWF0LW1lc3NhZ2UgIllvdXIgYGxvYWQtcGF0aCcgc2VlbXMg dG8gY29udGFpblxueW91ciBgdXNlci1lbWFjcy1kaXJlY3RvcnknOiAlc1xuVGhpcyBpcyBsaWtl bHkgdG8gY2F1c2UgcHJvYmxlbXMuLi5cbkNvbnNpZGVyIHVzaW5nIGEgc3ViZGlyZWN0b3J5IGlu c3RlYWQsIGUuZy46ICVzIiBkaXIgKGV4cGFuZC1maWxlLW5hbWUgImxpc3AiIHVzZXItZW1hY3Mt ZGlyZWN0b3J5KSkgOndhcm5pbmcpKSAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKSkpKSAobGV0ICgo ZG4gKGRhZW1vbnApKSkgKGlmIGRuIChwcm9nbiAoaWYgKHN0cmluZ3AgZG4pIChwcm9nbiAoc2V0 cSBzZXJ2ZXItbmFtZSBkbikpKSAoY29uZGl0aW9uLWNhc2UgZXJyIChzZXJ2ZXItc3RhcnQpIChl cnJvciAoZXJyb3IgIlVuYWJsZSB0byBzdGFydCBkYWVtb246ICVzOyBleGl0aW5nIiAoZXJyb3It bWVzc2FnZS1zdHJpbmcgZXJyKSkpKSAoaWYgc2VydmVyLXByb2Nlc3MgKGRhZW1vbi1pbml0aWFs aXplZCkgKGlmIChzdHJpbmdwIGRuKSAobWVzc2FnZSAiVW5hYmxlIHRvIHN0YXJ0IGRhZW1vbjog RW1hY3Mgc2VydmVyIG5hbWVkICVTIGFscmVhZHkgcnVubmluZyIgc2VydmVyLW5hbWUpIChtZXNz YWdlICJVbmFibGUgdG8gc3RhcnQgdGhlIGRhZW1vbi5cbkFub3RoZXIgaW5zdGFuY2Ugb2YgRW1h Y3MgaXMgcnVubmluZyB0aGUgc2VydmVyLCBlaXRoZXIgYXMgZGFlbW9uIG9yIGludGVyYWN0aXZl bHkuXG5Zb3UgY2FuIHVzZSBlbWFjc2NsaWVudCB0byBjb25uZWN0IHRvIHRoYXQgRW1hY3MgcHJv Y2Vzcy4iKSkgKGtpbGwtZW1hY3MgMSkpKSkpIChpZiAoYW5kIChib3VuZHAgJ3gtc2Vzc2lvbi1w cmV2aW91cy1pZCkgKHN0cmluZ3AgeC1zZXNzaW9uLXByZXZpb3VzLWlkKSkgKHdpdGgtbm8td2Fy bmluZ3MgKGVtYWNzLXNlc3Npb24tcmVzdG9yZSB4LXNlc3Npb24tcHJldmlvdXMtaWQpKSkpCiAg Y29tbWFuZC1saW5lKCkKICAodW53aW5kLXByb3RlY3QgKGNvbW1hbmQtbGluZSkgKGlmIChmZWF0 dXJlcCAnbmF0aXZlLWNvbXBpbGUpIChwcm9nbiAoc3RhcnR1cC0tdXBkYXRlLWVsbi1jYWNoZSkp KSAoaWYgZGVmYXVsdC1kaXJlY3RvcnkgKHNldHEgZGVmYXVsdC1kaXJlY3RvcnkgKGFiYnJldmlh dGUtZmlsZS1uYW1lIGRlZmF1bHQtZGlyZWN0b3J5KSkpIChvciBhdXRvLXNhdmUtbGlzdC1maWxl LW5hbWUgKGFuZCBhdXRvLXNhdmUtbGlzdC1maWxlLXByZWZpeCAoc2V0cSBhdXRvLXNhdmUtbGlz dC1maWxlLW5hbWUgKGNvbmQgKChlcSBzeXN0ZW0tdHlwZSAnbXMtZG9zKSAobWFrZS1kaXJlY3Rv cnkgKGZpbGUtbmFtZS1kaXJlY3RvcnkgYXV0by1zYXZlLWxpc3QtZmlsZS1wcmVmaXgpIHQpIChj b25jYXQgKG1ha2UtdGVtcC1uYW1lIChleHBhbmQtZmlsZS1uYW1lIGF1dG8tc2F2ZS1saXN0LWZp bGUtcHJlZml4KSkgIn4iKSkgKHQgKGV4cGFuZC1maWxlLW5hbWUgKGZvcm1hdCAiJXMlZC0lc34i IGF1dG8tc2F2ZS1saXN0LWZpbGUtcHJlZml4IChlbWFjcy1waWQpIChzeXN0ZW0tbmFtZSkpKSkp KSkpIChpZiBpbmhpYml0LXN0YXJ0dXAtaG9va3MgbmlsIChydW4taG9va3MgJ2VtYWNzLXN0YXJ0 dXAtaG9vayAndGVybS1zZXR1cC1ob29rKSkgKGlmIChvciBmcmFtZS1pbml0aWFsLWZyYW1lIChu b3QgKGFuZCBpbml0aWFsLXdpbmRvdy1zeXN0ZW0gKG5vdCBub25pbnRlcmFjdGl2ZSkgKG5vdCAo ZXEgaW5pdGlhbC13aW5kb3ctc3lzdGVtICdwYykpKSkpIChwcm9nbiAoaWYgKGFuZCAoZGlzcGxh eS1tdWx0aS1mb250LXApIChub3QgKGVxIGZhY2UtZm9udC1yZXNjYWxlLWFsaXN0IG9sZC1mYWNl LWZvbnQtcmVzY2FsZS1hbGlzdCkpIChhc3NvYyAoZmFjZS1hdHRyaWJ1dGUgJ2RlZmF1bHQgOmZv bnQpIGZhY2UtZm9udC1yZXNjYWxlLWFsaXN0ICMnc3RhcnR1cC0tcmVzY2FsZS1lbHQtbWF0Y2gt cCkpIChwcm9nbiAoc2V0LWZhY2UtYXR0cmlidXRlICdkZWZhdWx0IG5pbCA6Zm9udCAoZm9udC1z cGVjKSkpKSAoaWYgKGZib3VuZHAgJ2ZyYW1lLW5vdGljZS11c2VyLXNldHRpbmdzKSAoZnJhbWUt bm90aWNlLXVzZXItc2V0dGluZ3MpKSAoaWYgKGZib3VuZHAgJ2ZyYW1lLXNldC1iYWNrZ3JvdW5k LW1vZGUpIChmcmFtZS1zZXQtYmFja2dyb3VuZC1tb2RlIChzZWxlY3RlZC1mcmFtZSkpKSkpIChp ZiAoZmJvdW5kcCAnZm9udC1tZW51LWFkZC1kZWZhdWx0KSAoZm9udC1tZW51LWFkZC1kZWZhdWx0 KSkgKGlmIGluaGliaXQtc3RhcnR1cC1ob29rcyBuaWwgKHJ1bi1ob29rcyAnd2luZG93LXNldHVw LWhvb2spKSkKICAobGV0ICgob2xkLWZhY2UtZm9udC1yZXNjYWxlLWFsaXN0IGZhY2UtZm9udC1y ZXNjYWxlLWFsaXN0KSkgKHVud2luZC1wcm90ZWN0IChjb21tYW5kLWxpbmUpIChpZiAoZmVhdHVy ZXAgJ25hdGl2ZS1jb21waWxlKSAocHJvZ24gKHN0YXJ0dXAtLXVwZGF0ZS1lbG4tY2FjaGUpKSkg KGlmIGRlZmF1bHQtZGlyZWN0b3J5IChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5IChhYmJyZXZpYXRl LWZpbGUtbmFtZSBkZWZhdWx0LWRpcmVjdG9yeSkpKSAob3IgYXV0by1zYXZlLWxpc3QtZmlsZS1u YW1lIChhbmQgYXV0by1zYXZlLWxpc3QtZmlsZS1wcmVmaXggKHNldHEgYXV0by1zYXZlLWxpc3Qt ZmlsZS1uYW1lIChjb25kICgoZXEgc3lzdGVtLXR5cGUgJ21zLWRvcykgKG1ha2UtZGlyZWN0b3J5 IChmaWxlLW5hbWUtZGlyZWN0b3J5IGF1dG8tc2F2ZS1saXN0LWZpbGUtcHJlZml4KSB0KSAoY29u Y2F0IChtYWtlLXRlbXAtbmFtZSAoZXhwYW5kLWZpbGUtbmFtZSBhdXRvLXNhdmUtbGlzdC1maWxl LXByZWZpeCkpICJ+IikpICh0IChleHBhbmQtZmlsZS1uYW1lIChmb3JtYXQgIiVzJWQtJXN+IiBh dXRvLXNhdmUtbGlzdC1maWxlLXByZWZpeCAoZW1hY3MtcGlkKSAoc3lzdGVtLW5hbWUpKSkpKSkp KSAoaWYgaW5oaWJpdC1zdGFydHVwLWhvb2tzIG5pbCAocnVuLWhvb2tzICdlbWFjcy1zdGFydHVw LWhvb2sgJ3Rlcm0tc2V0dXAtaG9vaykpIChpZiAob3IgZnJhbWUtaW5pdGlhbC1mcmFtZSAobm90 IChhbmQgaW5pdGlhbC13aW5kb3ctc3lzdGVtIChub3Qgbm9uaW50ZXJhY3RpdmUpIChub3QgKGVx IGluaXRpYWwtd2luZG93LXN5c3RlbSAncGMpKSkpKSAocHJvZ24gKGlmIChhbmQgKGRpc3BsYXkt bXVsdGktZm9udC1wKSAobm90IChlcSBmYWNlLWZvbnQtcmVzY2FsZS1hbGlzdCBvbGQtZmFjZS1m b250LXJlc2NhbGUtYWxpc3QpKSAoYXNzb2MgKGZhY2UtYXR0cmlidXRlICdkZWZhdWx0IDpmb250 KSBmYWNlLWZvbnQtcmVzY2FsZS1hbGlzdCAjJ3N0YXJ0dXAtLXJlc2NhbGUtZWx0LW1hdGNoLXAp KSAocHJvZ24gKHNldC1mYWNlLWF0dHJpYnV0ZSAnZGVmYXVsdCBuaWwgOmZvbnQgKGZvbnQtc3Bl YykpKSkgKGlmIChmYm91bmRwICdmcmFtZS1ub3RpY2UtdXNlci1zZXR0aW5ncykgKGZyYW1lLW5v dGljZS11c2VyLXNldHRpbmdzKSkgKGlmIChmYm91bmRwICdmcmFtZS1zZXQtYmFja2dyb3VuZC1t b2RlKSAoZnJhbWUtc2V0LWJhY2tncm91bmQtbW9kZSAoc2VsZWN0ZWQtZnJhbWUpKSkpKSAoaWYg KGZib3VuZHAgJ2ZvbnQtbWVudS1hZGQtZGVmYXVsdCkgKGZvbnQtbWVudS1hZGQtZGVmYXVsdCkp IChpZiBpbmhpYml0LXN0YXJ0dXAtaG9va3MgbmlsIChydW4taG9va3MgJ3dpbmRvdy1zZXR1cC1o b29rKSkpKQogIChpZiBjb21tYW5kLWxpbmUtcHJvY2Vzc2VkIChtZXNzYWdlIGludGVybmFsLS10 b3AtbGV2ZWwtbWVzc2FnZSkgKHNldHEgY29tbWFuZC1saW5lLXByb2Nlc3NlZCB0KSAoc2V0cSBz dGFydHVwLS14ZGctY29uZmlnLWhvbWUtZW1hY3MgKGxldCAoKHhkZy1jb25maWctaG9tZSAoZ2V0 ZW52LWludGVybmFsICJYREdfQ09ORklHX0hPTUUiKSkpIChpZiB4ZGctY29uZmlnLWhvbWUgKGNv bmNhdCB4ZGctY29uZmlnLWhvbWUgIi9lbWFjcy8iKSBzdGFydHVwLS14ZGctY29uZmlnLWRlZmF1 bHQpKSkgKHNldHEgdXNlci1lbWFjcy1kaXJlY3RvcnkgKHN0YXJ0dXAtLXhkZy1vci1ob21lZG90 IHN0YXJ0dXAtLXhkZy1jb25maWctaG9tZS1lbWFjcyBuaWwpKSAoaWYgKGZlYXR1cmVwICduYXRp dmUtY29tcGlsZSkgKHByb2duIChpZiAobmF0aXZlLWNvbXAtYXZhaWxhYmxlLXApIG5pbCAocHJv Z24gKHNldHEgbmF0aXZlLWNvbXAtaml0LWNvbXBpbGF0aW9uIG5pbCkgKHNldHEgbmF0aXZlLWNv bXAtZW5hYmxlLXN1YnItdHJhbXBvbGluZXMgbmlsKSkpIChsZXQgKChwYXRoLWVudiAoZ2V0ZW52 ICJFTUFDU05BVElWRUxPQURQQVRIIikpKSAoaWYgcGF0aC1lbnYgKHByb2duIChsZXQgKCh0YWls IChzcGxpdC1zdHJpbmcgcGF0aC1lbnYgcGF0aC1zZXBhcmF0b3IpKSkgKHdoaWxlIHRhaWwgKGxl dCAoKHBhdGggKGNhciB0YWlsKSkpIChpZiAoc3RyaW5nPSAiIiBwYXRoKSBuaWwgKHNldHEgbmF0 aXZlLWNvbXAtZWxuLWxvYWQtcGF0aCAoY29ucyBwYXRoIG5hdGl2ZS1jb21wLWVsbi1sb2FkLXBh dGgpKSkgKHNldHEgdGFpbCAoY2RyIHRhaWwpKSkpKSkpKSAoc2V0cSBuYXRpdmUtY29tcC1lbG4t bG9hZC1wYXRoIChjb25zIChleHBhbmQtZmlsZS1uYW1lICJlbG4tY2FjaGUvIiB1c2VyLWVtYWNz LWRpcmVjdG9yeSkgbmF0aXZlLWNvbXAtZWxuLWxvYWQtcGF0aCkpKSkgKGxldCAoKHRhaWwgbG9h ZC1wYXRoKSAobGlzcGRpciAoZXhwYW5kLWZpbGUtbmFtZSAiLi4vbGlzcCIgZGF0YS1kaXJlY3Rv cnkpKSBkaXIpICh3aGlsZSB0YWlsIChzZXRxIGRpciAoY2FyIHRhaWwpKSAobGV0ICgoZGVmYXVs dC1kaXJlY3RvcnkgZGlyKSAod2FybmluZy1pbmhpYml0LXR5cGVzICcoKGZpbGVzIG1pc3Npbmct bGV4YmluZC1jb29raWUpKSkpIChsb2FkIChleHBhbmQtZmlsZS1uYW1lICJzdWJkaXJzLmVsIikg dCB0IHQpKSAob3IgKHN0cmluZy1wcmVmaXgtcCBsaXNwZGlyIGRpcikgKGxldCAoKGRlZmF1bHQt ZGlyZWN0b3J5IGRpcikgKHdhcm5pbmctaW5oaWJpdC10eXBlcyAnKChmaWxlcyBtaXNzaW5nLWxl eGJpbmQtY29va2llKSkpKSAobG9hZCAoZXhwYW5kLWZpbGUtbmFtZSAibGVpbS1saXN0LmVsIikg dCB0IHQpKSkgKHNldHEgdGFpbCAoY2RyIHRhaWwpKSkpIChjb25kICgobWVtcSBzeXN0ZW0tdHlw ZSAnKG1zLWRvcyB3aW5kb3dzLW50KSkgKHByb2duIChzZXRxIGVvbC1tbmVtb25pYy11bml4ICIo VW5peCkiKSAoc2V0cSBlb2wtbW5lbW9uaWMtbWFjICIoTWFjKSIpKSkgKHQgKHByb2duIChzZXRx IGVvbC1tbmVtb25pYy1kb3MgIihET1MpIikgKHNldHEgZW9sLW1uZW1vbmljLW1hYyAiKE1hYyki KSkpKSAoaWYgKGFuZCAoZmVhdHVyZXAgJ2FuZHJvaWQpIChlcSBzeXN0ZW0tdHlwZSAnYW5kcm9p ZCkgKGZib3VuZHAgJ2FuZHJvaWQtbG9jYWxlLWZvci1zeXN0ZW0tbGFuZ3VhZ2UpIGluaXRpYWwt d2luZG93LXN5c3RlbSkgKHNldC1sb2NhbGUtZW52aXJvbm1lbnQgKGZ1bmNhbGwgJ2FuZHJvaWQt bG9jYWxlLWZvci1zeXN0ZW0tbGFuZ3VhZ2UpKSAoc2V0LWxvY2FsZS1lbnZpcm9ubWVudCBuaWwp KSAoaWYgbG9jYWxlLWNvZGluZy1zeXN0ZW0gKHByb2duIChsZXQgKChjb2RpbmcgKGlmIChlcSBz eXN0ZW0tdHlwZSAnd2luZG93cy1udCkgJ3V0Zi04IGxvY2FsZS1jb2Rpbmctc3lzdGVtKSkpIChz YXZlLWV4Y3Vyc2lvbiAobGV0ICgodGFpbCAoYnVmZmVyLWxpc3QpKSkgKHdoaWxlIHRhaWwgKGxl dCAoKGVsdCAoY2FyIHRhaWwpKSkgKHNldC1idWZmZXIgZWx0KSAoaWYgZGVmYXVsdC1kaXJlY3Rv cnkgKHNldHEgZGVmYXVsdC1kaXJlY3RvcnkgKGlmIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1u dCkgKGxldCAoKGRlZmRpciAoZGVjb2RlLWNvZGluZy1zdHJpbmcgZGVmYXVsdC1kaXJlY3Rvcnkg Y29kaW5nIHQpKSkgKGV4cGFuZC1maWxlLW5hbWUgZGVmZGlyIGRlZmRpcikpIChkZWNvZGUtY29k aW5nLXN0cmluZyBkZWZhdWx0LWRpcmVjdG9yeSBjb2RpbmcgdCkpKSkgKHNldHEgdGFpbCAoY2Ry IHRhaWwpKSkpKSkgKGxldCAoKHRhaWwgJyhsb2FkLXBhdGggZXhlYy1wYXRoKSkpICh3aGlsZSB0 YWlsIChsZXQgKChwYXRoc3ltIChjYXIgdGFpbCkpKSAobGV0ICgocGF0aCAoc3ltYm9sLXZhbHVl IHBhdGhzeW0pKSkgKGlmIChsaXN0cCBwYXRoKSAoc2V0IHBhdGhzeW0gKG1hcGNhciAjJyhsYW1i ZGEgKGRpcikgKGRlY29kZS1jb2Rpbmctc3RyaW5nIGRpciBjb2RpbmcgdCkpIHBhdGgpKSkpIChz ZXRxIHRhaWwgKGNkciB0YWlsKSkpKSkgKGlmIChmZWF0dXJlcCAnbmF0aXZlLWNvbXBpbGUpIChw cm9nbiAobGV0ICgobnBhdGggKHN5bWJvbC12YWx1ZSAnbmF0aXZlLWNvbXAtZWxuLWxvYWQtcGF0 aCkpKSAoc2V0ICduYXRpdmUtY29tcC1lbG4tbG9hZC1wYXRoIChtYXBjYXIgIycobGFtYmRhIChk aXIpIChleHBhbmQtZmlsZS1uYW1lIChkZWNvZGUtY29kaW5nLXN0cmluZyBkaXIgY29kaW5nIHQp KSkgbnBhdGgpKSkgKHNldHEgc3RhcnR1cC0tb3JpZ2luYWwtZWxuLWxvYWQtcGF0aCAoY29weS1z ZXF1ZW5jZSBuYXRpdmUtY29tcC1lbG4tbG9hZC1wYXRoKSkpKSAobGV0ICgodGFpbCAnKGRhdGEt ZGlyZWN0b3J5IGRvYy1kaXJlY3RvcnkgZXhlYy1kaXJlY3RvcnkgaW5zdGFsbGF0aW9uLWRpcmVj dG9yeSBpbnZvY2F0aW9uLWRpcmVjdG9yeSBpbnZvY2F0aW9uLW5hbWUgc291cmNlLWRpcmVjdG9y eSBzaGFyZWQtZ2FtZS1zY29yZS1kaXJlY3RvcnkpKSkgKHdoaWxlIHRhaWwgKGxldCAoKGZpbGVz eW0gKGNhciB0YWlsKSkpIChsZXQgKChmaWxlIChzeW1ib2wtdmFsdWUgZmlsZXN5bSkpKSAoaWYg KHN0cmluZ3AgZmlsZSkgKHNldCBmaWxlc3ltIChkZWNvZGUtY29kaW5nLXN0cmluZyBmaWxlIGNv ZGluZyB0KSkpKSAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKSkpKSkpIChsZXQgKChkaXIgZGVmYXVs dC1kaXJlY3RvcnkpKSAoc2F2ZS1jdXJyZW50LWJ1ZmZlciAoc2V0LWJ1ZmZlciAiKk1lc3NhZ2Vz KiIpIChtZXNzYWdlcy1idWZmZXItbW9kZSkgKHNldHEgZGVmYXVsdC1kaXJlY3RvcnkgKG9yIGRp ciAoZXhwYW5kLWZpbGUtbmFtZSAifi8iKSkpKSkgKHB1dCAndXNlci1mdWxsLW5hbWUgJ3N0YW5k YXJkLXZhbHVlIChsaXN0IChkZWZhdWx0LXZhbHVlICd1c2VyLWZ1bGwtbmFtZSkpKSAobGV0ICgo cHdkIChnZXRlbnYgIlBXRCIpKSkgKGFuZCBwd2QgKG9yIChhbmQgZGVmYXVsdC1kaXJlY3Rvcnkg KGNvbmRpdGlvbi1jYXNlIG5pbCAocHJvZ24gKGVxdWFsIChmaWxlLWF0dHJpYnV0ZXMgKGZpbGUt bmFtZS1hcy1kaXJlY3RvcnkgcHdkKSkgKGZpbGUtYXR0cmlidXRlcyAoZmlsZS1uYW1lLWFzLWRp cmVjdG9yeSBkZWZhdWx0LWRpcmVjdG9yeSkpKSkgKGVycm9yIG5pbCkpKSAoc2V0cSBwcm9jZXNz LWVudmlyb25tZW50IChkZWxldGUgKGNvbmNhdCAiUFdEPSIgcHdkKSBwcm9jZXNzLWVudmlyb25t ZW50KSkpKSkgKGlmIChsaXN0cCBjaGFyc2V0LW1hcC1wYXRoKSAobGV0ICgoY29kaW5nIChpZiAo ZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpICd1dGYtOCBsb2NhbGUtY29kaW5nLXN5c3RlbSkp KSAoc2V0cSBjaGFyc2V0LW1hcC1wYXRoIChtYXBjYXIgIycobGFtYmRhIChkaXIpIChkZWNvZGUt Y29kaW5nLXN0cmluZyBkaXIgY29kaW5nIHQpKSBjaGFyc2V0LW1hcC1wYXRoKSkpKSAoaWYgZGVm YXVsdC1kaXJlY3RvcnkgKHNldHEgZGVmYXVsdC1kaXJlY3RvcnkgKGFiYnJldmlhdGUtZmlsZS1u YW1lIGRlZmF1bHQtZGlyZWN0b3J5KQpkZWJ1Zy1lYXJseS1iYWNrdHJhY2UuLi5kb25lCkxvYWRp bmcgbWFjcm9leHAuZWxjLi4uCkVhZ2VyIG1hY3JvLWV4cGFuc2lvbiBmYWlsdXJlOiAoZXJyb3Ig IkVhZ2VyIG1hY3JvLWV4cGFuc2lvbiBmYWlsdXJlOiAodm9pZC1mdW5jdGlvbiBjbC1zdWJzZXEp IikKKSAoZGlzcGxheS13YXJuaW5nICdpbml0aWFsaXphdGlvbiAiRXJyb3Igc2V0dGluZyBkZWZh dWx0LWRpcmVjdG9yeSIpKSAobGV0ICgob2xkLWZhY2UtZm9udC1yZXNjYWxlLWFsaXN0IGZhY2Ut Zm9udC1yZXNjYWxlLWFsaXN0KSkgKHVud2luZC1wcm90ZWN0IChjb21tYW5kLWxpbmUpIChpZiAo ZmVhdHVyZXAgJ25hdGl2ZS1jb21waWxlKSAocHJvZ24gKHN0YXJ0dXAtLXVwZGF0ZS1lbG4tY2Fj aGUpKSkgKGlmIGRlZmF1bHQtZGlyZWN0b3J5IChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5IChhYmJy ZXZpYXRlLWZpbGUtbmFtZSBkZWZhdWx0LWRpcmVjdG9yeSkpKSAob3IgYXV0by1zYXZlLWxpc3Qt ZmlsZS1uYW1lIChhbmQgYXV0by1zYXZlLWxpc3QtZmlsZS1wcmVmaXggKHNldHEgYXV0by1zYXZl LWxpc3QtZmlsZS1uYW1lIChjb25kICgoZXEgc3lzdGVtLXR5cGUgJ21zLWRvcykgKG1ha2UtZGly ZWN0b3J5IChmaWxlLW5hbWUtZGlyZWN0b3J5IGF1dG8tc2F2ZS1saXN0LWZpbGUtcHJlZml4KSB0 KSAoY29uY2F0IChtYWtlLXRlbXAtbmFtZSAoZXhwYW5kLWZpbGUtbmFtZSBhdXRvLXNhdmUtbGlz dC1maWxlLXByZWZpeCkpICJ+IikpICh0IChleHBhbmQtZmlsZS1uYW1lIChmb3JtYXQgIiVzJWQt JXN+IiBhdXRvLXNhdmUtbGlzdC1maWxlLXByZWZpeCAoZW1hY3MtcGlkKSAoc3lzdGVtLW5hbWUp KSkpKSkpKSAoaWYgaW5oaWJpdC1zdGFydHVwLWhvb2tzIG5pbCAocnVuLWhvb2tzICdlbWFjcy1z dGFydHVwLWhvb2sgJ3Rlcm0tc2V0dXAtaG9vaykpIChpZiAob3IgZnJhbWUtaW5pdGlhbC1mcmFt ZSAobm90IChhbmQgaW5pdGlhbC13aW5kb3ctc3lzdGVtIChub3Qgbm9uaW50ZXJhY3RpdmUpIChu b3QgKGVxIGluaXRpYWwtd2luZG93LXN5c3RlbSAncGMpKSkpKSAocHJvZ24gKGlmIChhbmQgKGRp c3BsYXktbXVsdGktZm9udC1wKSAobm90IChlcSBmYWNlLWZvbnQtcmVzY2FsZS1hbGlzdCBvbGQt ZmFjZS1mb250LXJlc2NhbGUtYWxpc3QpKSAoYXNzb2MgKGZhY2UtYXR0cmlidXRlICdkZWZhdWx0 IDpmb250KSBmYWNlLWZvbnQtcmVzY2FsZS1hbGlzdCAjJ3N0YXJ0dXAtLXJlc2NhbGUtZWx0LW1h dGNoLXApKSAocHJvZ24gKHNldC1mYWNlLWF0dHJpYnV0ZSAnZGVmYXVsdCBuaWwgOmZvbnQgKGZv bnQtc3BlYykpKSkgKGlmIChmYm91bmRwICdmcmFtZS1ub3RpY2UtdXNlci1zZXR0aW5ncykgKGZy YW1lLW5vdGljZS11c2VyLXNldHRpbmdzKSkgKGlmIChmYm91bmRwICdmcmFtZS1zZXQtYmFja2dy b3VuZC1tb2RlKSAoZnJhbWUtc2V0LWJhY2tncm91bmQtbW9kZSAoc2VsZWN0ZWQtZnJhbWUpKSkp KSAoaWYgKGZib3VuZHAgJ2ZvbnQtbWVudS1hZGQtZGVmYXVsdCkgKGZvbnQtbWVudS1hZGQtZGVm YXVsdCkpIChpZiBpbmhpYml0LXN0YXJ0dXAtaG9va3MgbmlsIChydW4taG9va3MgJ3dpbmRvdy1z ZXR1cC1ob29rKSkpKSAoc2V0ZW52ICJURVJNIiAiZHVtYiIpIChsZXQgKChkaXNwbGF5IChmcmFt ZS1wYXJhbWV0ZXIgbmlsICdkaXNwbGF5KSkpIChpZiAoc3RyaW5ncCBkaXNwbGF5KSAoc2V0cSBk aXNwbGF5IChjb25jYXQgIkRJU1BMQVk9IiBkaXNwbGF5KSkgKGxldCAoKGVudiBpbml0aWFsLWVu dmlyb25tZW50KSkgKHdoaWxlIChhbmQgZW52IChvciAobm90IChzdHJpbmctbWF0Y2ggIlxcYERJ U1BMQVk9IiAoY2FyIGVudikpKSAocHJvZ24gKHNldHEgZGlzcGxheSAoY2FyIGVudikpIG5pbCkp KSAoc2V0cSBlbnYgKGNkciBlbnYpKSkpKSAoaWYgZGlzcGxheSAocHJvZ24gKHNldHEgcHJvY2Vz cy1lbnZpcm9ubWVudCAoZGVsZXRlIGRpc3BsYXkgcHJvY2Vzcy1lbnZpcm9ubWVudCkpKSkpKQog IG5vcm1hbC10b3AtbGV2ZWwoKQpnbWFrZVszXTogKioqIFtNYWtlZmlsZToyMDM6IGF1dG9sb2Fk c10gRXJyb3IgMjU1CiAgRUxDICAgICAgLi4vbGlzcC9zdWJyLmVsYwogIEVMQyAgICAgIC4uL2xp c3Avc3RhcnR1cC5lbGMKICBFTEMgICAgICAuLi9saXNwL3RhYi1iYXIuZWxjCiAgRUxDICAgICAg Li4vbGlzcC90ZXJtL2ludGVybmFsLmVsYwogIEVMQyAgICAgIC4uL2xpc3AvdGVybS9hbmRyb2lk LXdpbi5lbGMKICBFTEMgICAgICAuLi9saXNwL3NpbXBsZS5lbGMKICBFTEMgICAgICAuLi9saXNw L3Rlcm0vY29tbW9uLXdpbi5lbGMKICBFTEMgICAgICAuLi9saXNwL3Rlcm0vaGFpa3Utd2luLmVs YwpnbWFrZVsyXTogKioqIFtNYWtlZmlsZTo5NTI6IC4uL2xpc3AvbG9hZGRlZnMuZWxdIEVycm9y IDIKZ21ha2VbMl06ICoqKiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCiAgRUxDICAg ICAgLi4vbGlzcC90ZXJtL25zLXdpbi5lbGMKZ21ha2VbMV06ICoqKiBbTWFrZWZpbGU6NTQ2OiBz cmNdIEVycm9yIDIKKioqCioqKiAibWFrZSBhbGwiIGZhaWxlZCB3aXRoIGV4aXQgc3RhdHVzIDIu CioqKgoqKiogWW91IGNvdWxkIHRyeSB0bzoKKioqIC0gcnVuICJtYWtlIGJvb3RzdHJhcCIsIHdo aWNoIG1pZ2h0IGZpeCB0aGUgcHJvYmxlbQoqKiogLSBydW4gIm1ha2UgVj0xIiwgd2hpY2ggZGlz cGxheXMgdGhlIGZ1bGwgY29tbWFuZHMgaW52b2tlZCBieSBtYWtlLAoqKiogICB0byBmdXJ0aGVy IGludmVzdGlnYXRlIHRoZSBwcm9ibGVtCioqKgpnbWFrZVsxXTogKioqIFtNYWtlZmlsZTo0MTA6 IGFkdmljZS1vbi1mYWlsdXJlXSBFcnJvciAyCmdtYWtlOiAqKiogW01ha2VmaWxlOjM2NjogYWxs XSBFcnJvciAyCgpyZWFsCTM2Ljk0OAp1c2VyCTI6NDIuMzEKc3lzCTE3LjU4NgovVXNlcnMvZ2Vy ZC9iaW4vbWFrZS1lbWFjcyAtLWNhY2hlLWZpbGUgL3Zhci9mb2xkZXJzLzFkL2tfNnQyNWY5NHNs ODNzenFiZjhncGtyaDAwMDBnbi9ULy9jb25maWcuY2FjaGUubWFzdGVyIC0td2l0aC1uYXRpdmUt Y29tcGlsYXRpb249bm8gQ0M9Y2xhbmcgQ0ZMQUdTPS1XZ251LWltYWdpbmFyeS1jb25zdGFudCAt V3VudXNlZC1yZXN1bHQgLWcgLWcgLU8yIC1Xbm8taWdub3JlZC1hdHRyaWJ1dGVzIC1Xbm8tZmxh Zy1lbnVtIC1Xbm8tbWlzc2luZy1tZXRob2QtcmV0dXJuLXR5cGUgLVduby12YXJpYWRpYy1tYWNy b3MgLVduby1zdHJpY3QtcHJvdG90eXBlcyAtV25vLWF2YWlsYWJpbGl0eSAtV25vLW51bGxhYmls aXR5LWNvbXBsZXRlbmVzcyBjb21wbGV0ZS4KCkNvbXBpbGF0aW9uIGZpbmlzaGVkIGF0IFR1ZSBT ZXAgIDIgMTY6MTk6MTcsIGR1cmF0aW9uIDM3LjEgcwo= --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 02 12:56:54 2025 Received: (at 79353) by debbugs.gnu.org; 2 Sep 2025 16:56:54 +0000 Received: from localhost ([127.0.0.1]:36371 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utUJR-0001uc-F9 for submit@debbugs.gnu.org; Tue, 02 Sep 2025 12:56:54 -0400 Received: from mail-yw1-x112e.google.com ([2607:f8b0:4864:20::112e]:55369) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utUJP-0001uP-P6 for 79353@debbugs.gnu.org; Tue, 02 Sep 2025 12:56:52 -0400 Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-71d6051aeafso49120257b3.2 for <79353@debbugs.gnu.org>; Tue, 02 Sep 2025 09:56:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756832205; x=1757437005; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Y7uHi2rN4oPH3Rsexh2fOws6eEKqVSG5n1tP4rWnqDs=; b=Afv+GUyiJvrG9VgIezD84Eh4T6YEDrM9kZtLhB127h5qHzOZELia8i5wf89pF1iaif X95L5Uvy5DCVVV37PBx+5xsNX7ZnY1GPK8wxiS80PhXBpgy5Vz99sag47bBvtRUjH2/a EY18KKWL77NjBIF/cR7I1xuuLj8Rl9WhoXbn0Hu7jvm2+J058vpnm0aGsOtVhPcXttkm Q8N/bADFgSqZB14qnBTgwmq8ErBd0VgQEIgDJq7Ob3C/5xXnv29udONV9nsdrYi+Xaq9 CKpxAfC0dh05JInN+XwKbv2EtTebo1T5IhNqq3wnQgJKuclJHY16tQTkDisp94iZAsnv vNbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756832205; x=1757437005; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y7uHi2rN4oPH3Rsexh2fOws6eEKqVSG5n1tP4rWnqDs=; b=uFRMcqQcx+RxYOd+02eWpzwBerplA1Kc6c8Ls0cnlUJtj/3tGwUR8F7gSrMRv8HFNu 2oCUo0f50ESmN589+STucyZvoB9+cL5DqfAEBK3h3tsjBD5Q5qbU60XZQmvV7hpFT4dk jbZAUJKjAXSgld3tY5EiBgH3R+dxMI7Q9swlmxLf8mkGOvSykB1h8SDv0gCR9dAHkIrA +iHbtRCDR5DzVYIM9PFoyt/kWndLYoCloFchlP+rLzXaJ1uHtmJP9KGHZyP+EFKH31Lz grWgPMDOC4vseRXEdB2Fc6X220m33FMLZk4zf8nNUL6h404lfWX0EzDozpsfIMPRh32N bpIg== X-Forwarded-Encrypted: i=1; AJvYcCU1IYT0MWUwoHPI899Fb1tJNvYTrltbt0RD8cSumb/YP+CGqu/gay77fJsk2fOAfhJtLdQbUQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxQ100KVHrVOtJtcJHIBlvzUpYlqiY66pfprrzIHODojNfnWTtF VMMudmf+1mG9dmDjvsSx5/1/hhrv3Ts/XRUjlmr4pib8f1vw9h2HsLbE X-Gm-Gg: ASbGncvgZSYs6EzkhzChv/2eTJc49lI/64/LRNE4LRei/KyeEuuWgDKSARUIGWZ6SW8 4iYTlHn6HU4XCAoPV52b1lHATEFll8wvDj57RjdtYzS/eicoy3Da71HMZmbCt5vj/LNdJp5lC2w rS3IAxZtzi4wfwNcKu9JZiXv1rjPOMuak61JWF1fx8ix3nTDcBPh5n0PAj/ZkPCDHJiDobSUeuc YmK0OYOmKSX5Hf9/DLelPwT4pfKjm/u5pbroVaz3wBG4niwqnz1cMcxqbBLUaWCwIcAi7fXd0fL reQqENZQT20MsvC1SWCfFW0FKf/T76gNcCtYW6qXjDnGQgS/Os6Wke23j5E7q5OqDo825mWJdnf hXU4DAycwBHmhRfOk9wAndooxZKeeCCH7p2CFXOfb4j+3FgVr X-Google-Smtp-Source: AGHT+IEyXACPvFRqTVkUR2w7r42wIzjvv/C74zvj/VZQbkB307X3IsPsDZtfqCZcaUCWaXsciaMnwA== X-Received: by 2002:a05:690c:64c7:b0:71f:f049:340a with SMTP id 00721157ae682-72276332d6emr143663277b3.1.1756832205304; Tue, 02 Sep 2025 09:56:45 -0700 (PDT) Received: from smtpclient.apple ([131.183.131.33]) by smtp.gmail.com with ESMTPSA id 00721157ae682-723a859f6b7sm6485187b3.66.2025.09.02.09.56.44 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Sep 2025 09:56:44 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master From: JD Smith In-Reply-To: Date: Tue, 2 Sep 2025 12:56:34 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> To: =?utf-8?Q?Gerd_M=C3=B6llmann?= X-Mailer: Apple Mail (2.3826.700.81) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Po Lu , michael.albinus@gmx.de, 79353@debbugs.gnu.org, Stefan Monnier 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.0 (-) > On Sep 2, 2025, at 10:23=E2=80=AFAM, Gerd M=C3=B6llmann = wrote: >=20 > JD Smith writes: >=20 >> I guess I don't understand where this is coming from then. What if = you take out the condition-case and let it generate a backtrace? >=20 > I get the attached compilation log, with a backtrace >=20 > Thanks. Looks like auth-source is the culprit to me. Maybe give it a = require 'cl-extra (with a note like Stefan's) and try? signal(error ("Eager macro-expansion failure: (error \"Eager = macro-expansion failure: (void-function cl-subseq)\")")) error("Eager macro-expansion failure: %S" (error "Eager = macro-expansion failure: (void-function cl-subseq)")) (condition-case err (let ((macroexp--pending-eager-loads (cons = load-file-name macroexp--pending-eager-loads))) (if full-p = (macroexpand--all-toplevel form) (macroexpand form))) ((debug error) = (error "Eager macro-expansion failure: %S" err) form)) (cond ((eq 'skip (car macroexp--pending-eager-loads)) form) ((and = load-file-name (member load-file-name macroexp--pending-eager-loads)) = (let* ((bt (delq nil (mapcar #'macroexp--trim-backtrace-frame = (macroexp--backtrace)))) (elem (list 'load (file-name-nondirectory = load-file-name))) (tail (member elem (cdr (member elem bt))))) (if tail = (setcdr tail (list '=E2=80=A6))) (if (eq (car-safe (car bt)) = 'macroexpand-all) (setq bt (cdr bt))) (if macroexp--debug-eager (debug = 'eager-macroexp-cycle) (error "Eager macro-expansion skipped due to = cycle:\n %s" (mapconcat #'prin1-to-string (nreverse bt) " =3D> "))) = (setq macroexp--pending-eager-loads (cons 'skip = macroexp--pending-eager-loads)) form)) (t (condition-case err (let = ((macroexp--pending-eager-loads (cons load-file-name = macroexp--pending-eager-loads))) (if full-p (macroexpand--all-toplevel = form) (macroexpand form))) ((debug error) (error "Eager macro-expansion = failure: %S" err) form)))) internal-macroexpand-for-load((eval-when-compile (require 'epg)) nil) eval-buffer(# nil = "/Users/gerd/emacs/github/master/lisp/auth-source.el" nil t) (if eval-function (funcall eval-function buffer (if dump-mode file = fullname)) (eval-buffer buffer nil (if dump-mode file fullname) nil t)) (let ((read-symbol-shorthands shorthands)) (if eval-function (funcall = eval-function buffer (if dump-mode file fullname)) (eval-buffer buffer = nil (if dump-mode file fullname) nil t))) (let ((load-true-file-name fullname) (load-file-name fullname) = (set-auto-coding-for-load t) (inhibit-file-name-operation nil) = shorthands) (with-current-buffer buffer (set-buffer-multibyte t) (let = (deactivate-mark) (insert-file-contents fullname)) (setq shorthands (and = hack-read-symbol-shorthands-function (funcall = hack-read-symbol-shorthands-function))) (if (and = enable-multibyte-characters (or (eq (coding-system-type = last-coding-system-used) 'raw-text))) (set-buffer-multibyte nil)) = (set-buffer-modified-p nil)) (let ((read-symbol-shorthands shorthands)) = (if eval-function (funcall eval-function buffer (if dump-mode file = fullname)) (eval-buffer buffer nil (if dump-mode file fullname) nil = t)))) (unwind-protect (let ((load-true-file-name fullname) (load-file-name = fullname) (set-auto-coding-for-load t) (inhibit-file-name-operation nil) = shorthands) (with-current-buffer buffer (set-buffer-multibyte t) (let = (deactivate-mark) (insert-file-contents fullname)) (setq shorthands (and = hack-read-symbol-shorthands-function (funcall = hack-read-symbol-shorthands-function))) (if (and = enable-multibyte-characters (or (eq (coding-system-type = last-coding-system-used) 'raw-text))) (set-buffer-multibyte nil)) = (set-buffer-modified-p nil)) (let ((read-symbol-shorthands shorthands)) = (if eval-function (funcall eval-function buffer (if dump-mode file = fullname)) (eval-buffer buffer nil (if dump-mode file fullname) nil = t)))) (let (kill-buffer-hook kill-buffer-query-functions) (kill-buffer = buffer))) (let ((buffer (generate-new-buffer " *load*")) (load-in-progress t) = (source (string-suffix-p ".el" fullname))) (unless nomessage (if source = (message "Loading %s (source)..." file) (message "Loading %s..." file))) = (when purify-flag (push file preloaded-file-list)) (unwind-protect (let = ((load-true-file-name fullname) (load-file-name fullname) = (set-auto-coding-for-load t) (inhibit-file-name-operation nil) = shorthands) (with-current-buffer buffer (set-buffer-multibyte t) (let = (deactivate-mark) (insert-file-contents fullname)) (setq shorthands (and = hack-read-symbol-shorthands-function (funcall = hack-read-symbol-shorthands-function))) (if (and = enable-multibyte-characters (or (eq (coding-system-type = last-coding-system-used) 'raw-text))) (set-buffer-multibyte nil)) = (set-buffer-modified-p nil)) (let ((read-symbol-shorthands shorthands)) = (if eval-function (funcall eval-function buffer (if dump-mode file = fullname)) (eval-buffer buffer nil (if dump-mode file fullname) nil = t)))) (let (kill-buffer-hook kill-buffer-query-functions) (kill-buffer = buffer))) (do-after-load-evaluation fullname) (unless (or nomessage = noninteractive) (if source (message "Loading %s (source)...done" file) = (message "Loading %s...done" file))) t) (if (null (file-readable-p fullname)) (and (null noerror) (signal = 'file-error (list "Cannot open load file" file))) (let ((buffer = (generate-new-buffer " *load*")) (load-in-progress t) (source = (string-suffix-p ".el" fullname))) (unless nomessage (if source (message = "Loading %s (source)..." file) (message "Loading %s..." file))) (when = purify-flag (push file preloaded-file-list)) (unwind-protect (let = ((load-true-file-name fullname) (load-file-name fullname) = (set-auto-coding-for-load t) (inhibit-file-name-operation nil) = shorthands) (with-current-buffer buffer (set-buffer-multibyte t) (let = (deactivate-mark) (insert-file-contents fullname)) (setq shorthands (and = hack-read-symbol-shorthands-function (funcall = hack-read-symbol-shorthands-function))) (if (and = enable-multibyte-characters (or (eq (coding-system-type = last-coding-system-used) 'raw-text))) (set-buffer-multibyte nil)) = (set-buffer-modified-p nil)) (let ((read-symbol-shorthands shorthands)) = (if eval-function (funcall eval-function buffer (if dump-mode file = fullname)) (eval-buffer buffer nil (if dump-mode file fullname) nil = t)))) (let (kill-buffer-hook kill-buffer-query-functions) (kill-buffer = buffer))) (do-after-load-evaluation fullname) (unless (or nomessage = noninteractive) (if source (message "Loading %s (source)...done" file) = (message "Loading %s...done" file))) t)) = load-with-code-conversion("/Users/gerd/emacs/github/master/lisp/auth-sourc= e.el" "/Users/gerd/emacs/github/master/lisp/auth-source.el" nil t) require(auth-source) From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 02 13:58:43 2025 Received: (at 79353) by debbugs.gnu.org; 2 Sep 2025 17:58:43 +0000 Received: from localhost ([127.0.0.1]:36510 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utVHH-0004lS-7m for submit@debbugs.gnu.org; Tue, 02 Sep 2025 13:58:43 -0400 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]:61767) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utVH8-0004kw-IM for 79353@debbugs.gnu.org; Tue, 02 Sep 2025 13:58:40 -0400 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-b0428b537e5so409761366b.3 for <79353@debbugs.gnu.org>; Tue, 02 Sep 2025 10:58:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756835908; x=1757440708; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gY+0SeNn1wmuoh02lJzgOh1T9+r4sMtLz5nAQb5S6Xg=; b=EQrEWdYZfkRMBrQUGzoHnvuedAELajCTKP+viCTCSYc4LFj1xsZxt0eBG1LdZQOYd9 ATDqL6I1K5XQwb9yMbY/k4p/VoiycBZ0ezqBAh9K4O4upzZP+ifJGCwlQtAt4D2hpAEp +uCSTJFv1mn9Sk03z64lEyynSLwsAqO97pW6GC/k+W63S8HjEXg055YGWFkiamfFyWaY YVV2xC0O5LV9VRwKOoZGF44U9UBuCqyVRI1liBTVYKhGY/LOOnbhLfvwiNdK1QBbGpFh zplMUET9OnLQBqi1m+6+AAKLt6jRC7Ne05WoUaAWL+BE4EXOVF4k69ayDXC/Og6NPS5+ HBMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756835908; x=1757440708; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=gY+0SeNn1wmuoh02lJzgOh1T9+r4sMtLz5nAQb5S6Xg=; b=uNvgoKv66Jf8xdcVO3vFmC2SaZv7BYgPJxiRbdZSL+ts5RKEwlnNOjqQqtOyi98tzZ fa/rB6A+3iXGvDqNA20msv7DeSFJkrf0cWJr9IYWACFkN1xp4juXiwv8LFcBKCZSN6mY Bi1SY7gas19iW+6lObPzEvRFX9zxzVI0dBimg1pxdpXFSmiSNxpQ53gsDmphQwahSYHA gNNN8aQ6mePzcH9ri7yAxUik0QQ/s/ZHCqelnZCx3AiSK5lOYECU51XZ+a6p6Fuep+Ww VFEn7VeXBf/40yGsm7BfzLWtD70L1jYWEI8HWOwbSItQHtwHiqQblSOmFo/Cq8Ec0k0O x2hw== X-Forwarded-Encrypted: i=1; AJvYcCXiUYgmA874d6BhiQYrw3HfzOi9fmfymIloKgGaMAsQVSvyDLmyaIWuqIdlQGgErbk0NCvFgA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxglwBiZKaQrNHVpLJBdaO1JxknsgcS2KQyQTc6KV7UIjeW5IHq 30Og3CM3w5TY7kfIIMvGZid4vEUKHkC220O/Eq2L25II2UZ9w4TwKurM X-Gm-Gg: ASbGncvL0plARrKF89vzdyXU3z6s+CZDiD3yFaW726LWkIhdJCAmtD1KkioMTNWyjJ+ Paq4K+vmOJN+Y95oLquQncz/pOhFvwiTbArtsWJZOx4d4SVOqUCgJ24rtZiAUVO/nd8sW/6f9/d 7bXMCJjwRVvv9KgV/sVbtcP0x+yYHCsxHGuZ7aKJKd0UzHKu1y+6AJhLR57y6yAFkkGy0c9azev PMHFP0R5pvYvW4TyhvMeLd3Iw/JAJ6QCtt1GTeMHKI/1Jz7gv1sQ4JAZV1yMerqsK60YhZDTFJr iGkulWy4S2ut/M2qOVBSGiZXyokIr0n24VZIYeEqiLKQtz0XNN/uAQqHkcixi+4mk5pwJejd/Rn kKDpZEXZD6d3GbnvnmIeT0a0eK1G74ntLlR+NYyB6Qxcm2AKsLGWqY04QghsvntO9/yD8mkYwQa Bn3yEuAG7ognic0TkQvV0VqtDhWFTkdaUmlp47dpJt4w== X-Google-Smtp-Source: AGHT+IEdwDE1+5IEyWAERgvumyL9lIFYjmJp3LQiBmxH8gyct33l8/XOGvoPsFyHn2us4+LnbwF2bQ== X-Received: by 2002:a17:907:1c8c:b0:b04:563f:e120 with SMTP id a640c23a62f3a-b04563fe48fmr312507066b.53.1756835907813; Tue, 02 Sep 2025 10:58:27 -0700 (PDT) Received: from pro2 (p200300e0b706a40084a413bff81ed894.dip0.t-ipconnect.de. [2003:e0:b706:a400:84a4:13bf:f81e:d894]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b00bab3ef2esm916584066b.11.2025.09.02.10.58.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Sep 2025 10:58:27 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: JD Smith Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> Date: Tue, 02 Sep 2025 19:58:26 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Po Lu , michael.albinus@gmx.de, 79353@debbugs.gnu.org, Stefan Monnier 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.0 (-) JD Smith writes: >> On Sep 2, 2025, at 10:23=E2=80=AFAM, Gerd M=C3=B6llmann wrote: >>=20 >> JD Smith writes: >>=20 >>> I guess I don't understand where this is coming from then. What if you= take out the condition-case and let it generate a backtrace? >>=20 >> I get the attached compilation log, with a backtrace >>=20 >> > > Thanks. Looks like auth-source is the culprit to me. Maybe give it a > require 'cl-extra (with a note like Stefan's) and try? I'm sorry, but I'll have to pass. I think it's better if someone in the know takes it from here. From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 02:07:48 2025 Received: (at 79353) by debbugs.gnu.org; 3 Sep 2025 06:07:49 +0000 Received: from localhost ([127.0.0.1]:37954 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utgeq-00072g-Fv for submit@debbugs.gnu.org; Wed, 03 Sep 2025 02:07:48 -0400 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]:44414) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utgen-00072L-Kj for 79353@debbugs.gnu.org; Wed, 03 Sep 2025 02:07:46 -0400 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-61cf0901a72so9398074a12.1 for <79353@debbugs.gnu.org>; Tue, 02 Sep 2025 23:07:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756879659; x=1757484459; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JPsmDhNfnTtJJfrn1maUWj1nTa2O9tTa8OHF2bFzGyI=; b=h1SdolEhCvX4tajX/b0Xre27Y/lu9He84JAQkTPLBlRDo3fKVz9rHglkYF7bHlPk/O JhZr6JLHPe0KRYyLIbK+rsVL/6Q8C6TTePhvXkMzBi3BEtQdASxU1iY089nwipqcWRX6 KMiUNIS4h22xMGQICcHqVDR0g9wOXNJT3F9A5kRsc5NXL4XIcZAiTttxAo0qrmk9SZVo 398XP4mfJLEmk/cPcA4Pl3PQFsGg6LW8vG/HWDNyWHXFJRrMZfD+KAj1iTnEJAJMcW/M T20MnFbgReEnRq9j4H60Xuc6tURT+oIrIAbA8UFsYdx9HxFe6GxqWAeETElwKg6m7h9h 6AFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756879659; x=1757484459; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JPsmDhNfnTtJJfrn1maUWj1nTa2O9tTa8OHF2bFzGyI=; b=A9+bc1jDY7TmxwGg6eVr5xzH1REt3lFcT3+p6L3lGIBZyJEMiSgHkbZoyRD6rUEzds TJzWfDH5NLWRkGkayv2dpTgnu8Q6P/X83uPr2TjecilSOmywncfnFgPZcE3rOhTZv6Hn DFtVZfm5AbGbdv3MteCrpkH34OoqDVYzjluBOLUloJLq8/rniNiosYIifMjBrEwm3lhf +dR3UzgtDyuPu6TUcBF1oH7XBh/+hjDiRfEiqcplf/BHQ3YcYhsk6+zz39pNN0mf0i65 MM2t2768Lq6F6lTWoHoEFMJItv58jReqqdSEZnH84XsonZVxgJpk5NniRjxH5FkzkXqw podQ== X-Forwarded-Encrypted: i=1; AJvYcCXHf1c2XdLvLIRAGdKgXil3jPY6TsjGO7QqjSxSFRcm8KxLGOVZ7NtiZZdlWx8GX/S4Lqao8w==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwLvSt/V+rSb2dlocchV8K4wys7zXdQA0Oce+5j5cZZqK4GDgd/ Kd7iA/yK+25Sc8wEjv9WOv1Du7Co0b9RwS76QimXmLVcMhpW3CqJAiiS X-Gm-Gg: ASbGnctj7xCwE6r1sR60c9gmrIHNpzw33/OCFqYS6tED1eyQnCzqW77sMsQW5sg/kAt dDi7XD+8xj/LSacEfMeegoLJPPrnz+R4B+gClMqH3ntjg+TPnHO6mkiHmyZmpuUryjTqlJPDBuJ N9x5wfZqeqXn1FwxLgA0xr/dMqeE9KVvAQ0mu2t9TXqQkn6wNhx1l3r/ByWB+vI+RlwvBqe1u5t 0VrYXiGF+RtSWIkKdg/8MmCmxKyC6lOQxgw7dFa6SeBnORGpmBjp4spOFByOc4t+yJ5wjx7bpML Y/Hh+jO9ETc4oVLTpwIWr5W3sBVkQ6K5nRobREywWOgrYPjCsrcg8DiArXn8pW42b2Fv1X2u6od qcoUSMQ8uggP8ZvjlIGJ3W0ouRvneODSHsGM4aGhFok707bFKMYy072S1bXUF5Y/DeRQCdFfzer LE56/iG2GSG0tXICNTch7mErAQXQ== X-Google-Smtp-Source: AGHT+IHaRkrE2hVW+p1aF7EdxgW9FehMQVY/pNCp15/mpdYWWZEmCvXBSCCvZU3UfzTMBKkNQ+fLrw== X-Received: by 2002:a05:6402:274d:b0:61e:9770:fd48 with SMTP id 4fb4d7f45d1cf-61e9770fe32mr8633524a12.37.1756879658770; Tue, 02 Sep 2025 23:07:38 -0700 (PDT) Received: from pro2 (p200300e0b70f8a006872931b4e38a086.dip0.t-ipconnect.de. [2003:e0:b70f:8a00:6872:931b:4e38:a086]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ae40sm11067142a12.44.2025.09.02.23.07.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Sep 2025 23:07:38 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: JD Smith Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> Date: Wed, 03 Sep 2025 08:07:35 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Po Lu , michael.albinus@gmx.de, 79353@debbugs.gnu.org, Stefan Monnier 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.0 (-) Gerd M=C3=B6llmann writes: > JD Smith writes: > >>> On Sep 2, 2025, at 10:23=E2=80=AFAM, Gerd M=C3=B6llmann wrote: >>>=20 >>> JD Smith writes: >>>=20 >>>> I guess I don't understand where this is coming from then. What if >>>> you take out the condition-case and let it generate a backtrace? >>>=20 >>> I get the attached compilation log, with a backtrace >>>=20 >>> >> >> Thanks. Looks like auth-source is the culprit to me. Maybe give it a >> require 'cl-extra (with a note like Stefan's) and try? > > I'm sorry, but I'll have to pass. I think it's better if someone in the > know takes it from here. Maybe an explanation is in order why I said that. Remember what I said about the invalid-read-syntax once the macro-expansion errors are fixed? That's of course exactly what's happening: 1 file changed, 1 insertion(+) lisp/auth-source.el | 1 + modified lisp/auth-source.el @@ -44,6 +44,7 @@ (require 'icons) =20 (require 'cl-lib) +(require 'cl-extra) (require 'eieio) =20 (declare-function gnutls-symmetric-decrypt "gnutls.c") =3D> INFO Scraping 1529 files for loaddefs...70%=20 loaddefs-gen: loading file tramp-adb (for tramp--with-startup) Loading /Users/gerd/emacs/github/master/lisp/net/tramp-adb.el (source)... Warning (emacs): loaddefs-gen: load error (invalid-read-syntax \N{COLON} 182 16) HTH From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 08:22:02 2025 Received: (at 79353) by debbugs.gnu.org; 3 Sep 2025 12:22:02 +0000 Received: from localhost ([127.0.0.1]:39117 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utmUz-0006S1-IQ for submit@debbugs.gnu.org; Wed, 03 Sep 2025 08:22:02 -0400 Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]:46237) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utmUn-0006RQ-NW for 79353@debbugs.gnu.org; Wed, 03 Sep 2025 08:21:57 -0400 Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-71d603f13abso66931347b3.0 for <79353@debbugs.gnu.org>; Wed, 03 Sep 2025 05:21:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756902103; x=1757506903; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=k4nHiJTDxGBxQViE+RyQd0s/FVibTwV7Hr+PaM/ghKQ=; b=Qxa+tErhbbFmmWvEB+QF7CNvKpyiObDrmuo1vMpG2gWWgLiW78GZsvRlt8+ASvN4zj t5eiUgfY7EUOSsnTfKgxe90dZhkpzy+CPQQo3GmkpNb2ZqJgofZ/G8jHdV7qq5YtSYff wN3lnJVzhrX35JqpaFqORMSkpq5VGKo9QexiKQ7U9K4G+KGLSmAvMKU9o2d+JwZNfwPt chM9u5q+yhVUi91DBcFJyEridcjC0IXWAmwI+GuRJLvYZ1jurC5DJBIgKuVbQP5uFMC+ dV8yu7xYcMCJ2gA7xAU0tywf3zZ6/Rt8jXtg8erOEx0FApJF4x7PU49zc6DPDd7CX3l3 Guxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756902103; x=1757506903; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=k4nHiJTDxGBxQViE+RyQd0s/FVibTwV7Hr+PaM/ghKQ=; b=oPOq6ou6eTv/snol18lKQKbt2ic0me7AzS2QYMQD4oWHwmoFjzTSuGAP01KtZsQT0E C1PwlS/u3P+w04cypNM9W7J+gAdJQuOq07x/JqevlwIqOJDi1tyndhrQawPQmxet6rPT vMuUeHeQlaxF9cozFL/B1S3H/62pwnq7Z9XPCrDRbbaw4ZBOJPbyBYh6BPu9DvJIknQK sko/BacmmzwW48VlKPXFJ66ghx9/mCPE+97TOQ8nhOw3vX0dnUgQckr1+boLcaEZ1R1/ 4WraLixTcwaXqaX1/Y5x7ZuJP2tp7UdL64Nm+XiKQCsF9RprcRAWQwP6h9Dq18+PmWun 6VBQ== X-Forwarded-Encrypted: i=1; AJvYcCVQ3Fsyfigw4GXmuNj63ABWQzx+W7iLto5fYvvoXmPQP4BdRQDJjQkrfrg4geGMXgxQwwWHwQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwdzEUOySm1+FEfY0X1ucqmAmP3TnM2b4so5d9DpPEoFHxzHHLs Jqsk/wswIIuRmJuhtiXcmkodvqQ+cHZi1++PKHm3M9dboodyBns6+s2K X-Gm-Gg: ASbGncvGd6Ctm2CEBnEgbvSOqo8i1PVHko+bAiqjULdZY36wxtx4Nm5XsyEDww2+4KZ 1r1g8aK+jpDErJOjtT/QZKH4KgZyerMI9qpOkhI91nWf7aZsfq5Fjftfi6bTkQenzlcJ6yBT3Hu QLSENbN9r8OXZxTo7rrZvBIUy1jjrK1k/w21qDKWo8ZsW5WwWVYbr5g1VEin1H/8rK2uIfgpwQc JPfAz0/HdsEUkt4mc933L61g61R4GOBfjto0Z0YCm30VDVLXhA1jsyIlpNZcFWPWt4jqSuv/k7O v08F1fxoXwnw52Abe5c0Em3v4eyFjmb2OaFVOaGZKJQBXUTFness7BNEKBHDKaPrWlbz7ZpWrdJ 55rVhKn8dlbDdxXNZQeQ99Kcq8OiuX2XQnzBh+YyWJ0RZZ+mEc9Z23LqPfYyvu38PwFbTcg== X-Google-Smtp-Source: AGHT+IESbHInJF3tkaM+YmD1JCnfFxnk0IkSvC13foaHbF409+aQOUDtxfBUIIJKFHnQbkxgOo2GJA== X-Received: by 2002:a05:690c:6703:b0:71b:f7b5:8979 with SMTP id 00721157ae682-7227652b4c1mr173663647b3.37.1756902103454; Wed, 03 Sep 2025 05:21:43 -0700 (PDT) Received: from smtpclient.apple (cm-24-53-143-223.buckeyecom.net. [24.53.143.223]) by smtp.gmail.com with ESMTPSA id 00721157ae682-723a859f6b7sm13083537b3.66.2025.09.03.05.21.42 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Sep 2025 05:21:43 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master From: JD Smith In-Reply-To: Date: Wed, 3 Sep 2025 08:21:32 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> To: =?utf-8?Q?Gerd_M=C3=B6llmann?= X-Mailer: Apple Mail (2.3826.700.81) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Po Lu , michael.albinus@gmx.de, 79353@debbugs.gnu.org, Stefan Monnier 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.0 (-) > On Sep 3, 2025, at 2:07=E2=80=AFAM, Gerd M=C3=B6llmann = wrote: >=20 > Gerd M=C3=B6llmann writes: >=20 >> JD Smith writes: >>=20 >>>> On Sep 2, 2025, at 10:23=E2=80=AFAM, Gerd M=C3=B6llmann = wrote: >>>>=20 >>>> JD Smith writes: >>>>=20 >>>>> I guess I don't understand where this is coming from then. What if >>>>> you take out the condition-case and let it generate a backtrace? >>>>=20 >>>> I get the attached compilation log, with a backtrace >>>>=20 >>>> >>>=20 >>> Thanks. Looks like auth-source is the culprit to me. Maybe give it a >>> require 'cl-extra (with a note like Stefan's) and try? >>=20 >> I'm sorry, but I'll have to pass. I think it's better if someone in = the >> know takes it from here. >=20 > Maybe an explanation is in order why I said that. Remember what I said > about the invalid-read-syntax once the macro-expansion errors are = fixed? > That's of course exactly what's happening: >=20 > 1 file changed, 1 insertion(+) > lisp/auth-source.el | 1 + >=20 > modified lisp/auth-source.el > @@ -44,6 +44,7 @@ > (require 'icons) >=20 > (require 'cl-lib) > +(require 'cl-extra) > (require 'eieio) >=20 > (declare-function gnutls-symmetric-decrypt "gnutls.c") >=20 > =3D> >=20 > INFO Scraping 1529 files for loaddefs...70%=20 > loaddefs-gen: loading file tramp-adb (for tramp--with-startup) > Loading /Users/gerd/emacs/github/master/lisp/net/tramp-adb.el = (source)... > Warning (emacs): loaddefs-gen: load error > (invalid-read-syntax \N{COLON} 182 16) Thanks, Gerd. I don't have a master build setup, so I haven't seen this = issue. Does anyone else? =20 I'm not sure what this could mean; a corrupted file somewhere? If = someone who can reproduce this removes the condition-case mentioned = earlier, the traceback may be informative.=20 From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 09:36:51 2025 Received: (at 79353) by debbugs.gnu.org; 3 Sep 2025 13:36:51 +0000 Received: from localhost ([127.0.0.1]:39433 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utnfP-0002BN-Du for submit@debbugs.gnu.org; Wed, 03 Sep 2025 09:36:51 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:1964) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utnfL-0002B7-RU for 79353@debbugs.gnu.org; Wed, 03 Sep 2025 09:36:48 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id A225D100374; Wed, 3 Sep 2025 09:36:41 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1756906600; bh=h1AwKpyqhBRqcTsp+Zjs/5Htcd8FJMd9twgdbI3hcGc=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=DWKfZBo6aAxu63EIE6MFT6Wffs4G9d3Ceu5ZRIagbr4UYQaxigNydB8pbtS6mGGx7 S0nasFkKPHTXk3cukqwfDImitXB/MMirnbnUvV3SsVK7Ysk/KbzfjvNCZbOcuWouvf Rl2n7gdi/QfWOPjyzkuyUR+yoywJjhoHVTTTfn32Jji79oqV7mfSLUsShyLAQkVV8f H+o8KzeHOQP6nJnhvet6LXju0EKGEVMed2fsjlWOt8j4QEVkGN8msvSDU7FQRPb039 fF/1F7TNDcUj83jcCvG4c2AAKUJFG38EuvaiqDbxxVekChXOpXPJJa9OktG0tTGDcq B3vROb7Va7+TA== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D220B100034; Wed, 3 Sep 2025 09:36:40 -0400 (EDT) Received: from pastel (69-165-161-194.dsl.teksavvy.com [69.165.161.194]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 962601205F8; Wed, 3 Sep 2025 09:36:40 -0400 (EDT) From: Stefan Monnier To: JD Smith Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> Message-ID: References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> Date: Wed, 03 Sep 2025 09:36:39 -0400 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.055 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?windows-1252?Q?M=F6llmann?= , Po Lu , 79353@debbugs.gnu.org, michael.albinus@gmx.de 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: -3.3 (---) > I'm not sure what this could mean; a corrupted file somewhere? No, it's just that `tramp-compat.el` uses `\N{...}`: (if (boundp 'password-colon-equivalents) (defvaralias 'tramp-compat-password-colon-equivalents 'password-colon-equivalents) (defvar tramp-compat-password-colon-equivalents '(?\N{COLON} ?\N{FULLWIDTH COLON} ?\N{SMALL COLON} ?\N{PRESENTATION FORM FOR VERTICAL COLON} ?\N{KHMER SIGN CAMNUC PII KUUH}) "List of characters equivalent to trailing colon in \"password\" prompts.")) but that syntax is not supported by the Lisp reader in the early part of the bootstrap because it relies on a data structure built during Emacs compilation (using ELisp code) from the Unicode tables. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 10:15:55 2025 Received: (at 79353) by debbugs.gnu.org; 3 Sep 2025 14:15:55 +0000 Received: from localhost ([127.0.0.1]:40702 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utoHC-0004Nf-Rg for submit@debbugs.gnu.org; Wed, 03 Sep 2025 10:15:55 -0400 Received: from mout.gmx.net ([212.227.17.20]:47101) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utoH9-0004NQ-TQ for 79353@debbugs.gnu.org; Wed, 03 Sep 2025 10:15:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1756908942; x=1757513742; i=michael.albinus@gmx.de; bh=fZVwD4a7rYsNRc44hVG/Ybf//gkA0iGdND3awQgna4A=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=i17YyfgMs0nSzRGYL6zbYAh1hhWb3mNZOYoTDVRaZsKJlde48nMwpy3jRbn1Ty6j py3qDIluuBrL/hUB0EFCpdWYayQbpp+YIyJxj9NeQKBR/9nADKfiwjSoKjjwPkxEK 3N2mkb7W58ZA0mc9DXUhOzQQCBckkqEH8kDlo0mSL1MnsM+vcpKqIrJxFf8lnfOfS JXxx1dbhA+Se8P7rfpPfUFa4KZtYSz51Pyxe7NConilXv4eRwHg0A1ryEgtvAd7r9 OJ+m7JQ5l4V1eiP55nG9axMVkCxn9dc4LBXYHtTRQ1FRTzj7rrAe7gNJ2aD0ZC0Th xDfB2yWOc4hhkG3geA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N3siG-1uTVxl457w-014cPd; Wed, 03 Sep 2025 16:15:42 +0200 From: Michael Albinus To: Stefan Monnier Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> Date: Wed, 03 Sep 2025 16:15:40 +0200 Message-ID: <87349362r7.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:jEggPv+1V+PJSW2z51yGPnBUhTnAWe6DXtjKTcEKnHAb3Jiw+Py SQwow9iYLuGgCGF4BNzOmmLuYecUhz2gz+2Bg8JA5Ml4wbCWZFCtn+n57WQHM8GMQM0Uq9H eHHE1JPGXVCdrI4HY7IcLWbEzxNIevEbwBPgwSCPSTGwIZTTxI9oMegKm6WeGz3Nxa6L8lh YQAwHIazF8T73+juDBerg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:rMKIWVk0Se0=;KSpjdTFV5ZXJS6atCLFibGVrIkM JjXVSfrOg4bzTUa3D6VBs5eYmoxImnDqmzBkzz4ib4yoozfeMM5MOWAj53NrBXl18LsCHev8c t1zzxtviW2ByIHyu0rZoZPLM3yQzQWxy7b90a5QUgNRiScS3yeGQP/IS7pEbZc7GfE+bDu09j OcDG4vEyfZ0/VxkK79WQnq43cPtDF07bILGldI9zW/e2Wnr8/Gm5iu+1PVGjbyjzowRIlplrf 1i7KcfYcQyC0cevwvUcagqRw6SKqOGS+KndpmtE/dgycQmPsmULwzc/+SWtGznCSjGEgxdi97 tR9P7SyiZuCFZsmY6ZtinVtVY1IGJsRlhfx+10svpgrPTCLoJjImCL3rduCcvQ2ng/wP9coiY 1NLXlaI7qPQKJm0X8erwrZVQSruzqqKRLE3Z2ZcNXryV11Mw3wUe5j3uSywhXOYctaEQSSnJ7 nb4/OIRChdd+/6bkDVZQvR0zEY/kChN2T71DYInE1f/ecuDH5B2HjDkAq7SDc+RpIrUQ1W8F/ xc23f/Gp+jHzgQtfJSFQNIYgggi8QfN8FKYd7EJoiD87sQ5FqLUiqJKYGvuBActs060I/z8YF 8gjwqfGUYruZ/qrS/BCTzyKV/nwZXH1e6VnoRNpvuSMNuZDhPChTEkqzGVErfa9khB9wavN6E jnMiV9HAduvMAHeE2KJxQZ8CbXagglLMtM2tNzvBtY25atII+oIrW+wFgVSHPtuslpue+WZgF H5Wj71EMM5I5Ek/SngipJvqsf2QwNCB9TgcmsfKm2IUNZ/H6GR5/TVqsesrZ55eJsVKyhwbTq Hei/He5Qy6gL3krLIXNu012ftEO1N4Soh8M/pMosCZPJ5ydBf4YsViWxcokEWhmGnucOrl6JT UZuPPcwlLgbC1342VaLFul13x0DBx+pGeUFiSuOraW6rFjikaVGs4OrGcdNN9Y55p3ryzSHzk bIZ8L9f1ZXt3fjF2VhYLhwwG8jhyado+l688eQzsk9wkwPjfrylUlZ3m9HFEYND2PxeG1T20e eVQTpGggc2V3+pTyGH5JCbFrXJ5q6cgbj9qDshxyWYWUuFA1FwHdlT1pvexuN/1Qizz+T23bV v2Gt64Dz/viMeMrDl3IIVsUQT3r6QSV6meivYWtg4WLJ9V7jPsQUx/si1N/dL3OtKFNCPu8uw WFpXSm22dobG5BbmOkzZRfA6tui6UKFDCtCI52sZZ9Mge9pxuCl/gz/E47voo6Q2AQzqHkc8m jjh3PpkXdXD0gHdweUr+eF7xEaiGo9hiafPqMkADXETGNgs/n5zDS0Sj8NJKSs1vMgy5dItWl TTqH7gIiVE2+31aobgZkafNPJmGCCX28rLV6F5aI1YPvtL5vpXCYGWqh8MYBZG4bX5PVhWKfm zYVNORPgpnlYn1CiTqyvypc4Ji+kYeLeQLTes4bVvEHa4607X4dltuyHHo9sVuoWKxWDF/i/B qPJM8+yoYZrP54Xanrq0p132hxPmdxTkrBnRpGwzNCgx03n8I49K8SFV7lneNkAlIUtGFDBSJ NWn7MT+bHvll/RRVW70cYgpIe3aCkgs3aG+IbMnkEXCZXDhWY5c/PDIax+WLw/EH32FmK62l9 dySOhh2wdrmGOQ/Uy3DZAvaVHqPGi4olbrKAMeb8EkvLsNOUuJlqqh555xk6vqvXsiSYMlfNk aP+AOEza0fvpzwkd7mGec8Rv7Zi9s30ufmeKdyTaekIW40RVp9OvKrj4P8Y8QMYAvBfLZ9rg+ 6vQzQuN9ynB6iYbpLe4ZO2PrYmQGv5OQ1Vu2e+yz5kEBVwMaMwTnBE+Da57NPjHIXvaSoJYnz uNvPHg+YdxolURfF7JaHnU6iPKqFggzUoDR/4tEGkUunkTatuj4e59HsrjBiOKfMVjlZbPtTA i4XrXwLOVId19DCFfHzuCQiVp+BqENS7EitTWVk3yRFNunz8naXfxw8Q9AF4p17ls2r6qHYzr X+CGiFaa5xJVkE/kBAIfj0PLJqKgXN9lKZbUZZt4aixqkZG2dRaN847g5kA5zRK2eR2m/wIAq y/1tK6C211+BqpRSVIsgxVGpjLSunz0sybOswfnhu+4TH6Wy6azYyZ41+5m9/jGMRrHmzM8og qn3wmdW2xdncDInJnp+4QLPxvqhP2jYp87mNTZ4XW0oT810cD0MTtP2WhbSOBr2u4QZ+rdWXE ATELAIGZEK4L5iEzdi9r5Dr6OkxTytQTg7l13BWw704R6ROPhcugEbEtMiaHgbBSOHttODSTh syxp+JNvDNAwD4BfSMSuLKzbpaLh8lPjP4YrqwPFgK8FvuQyDsjZGrmN7pyC4VAt0Qtn6/Vs3 HjhnBGLO/6K8Cxp41ir9lic5FT+nZ/2Mptytn6qm3sfZv4ikhZf+OmqMU+BGfz3G3Em471SzH hLW2G+0GPiBf9JWwgaUUNTP2LEksuBdECcLrcRiyUJTlcYLiirzqDDLvv7fkEVCUg5YL0t9JJ qZ08MNew9/ndQRPbgqbatBPDLN7YM6a2pr9IuDjVGWDtFPvXcRQEQViYf+ZgLtd8r0iXBR6vW HgCH7pVA6FkQ2WsvfD20Rizu/Q2AG+xjNvHBEjxAybjgO8rFcmpFy8XS67vOOU/dSDvrkpxeJ 1j1wYDyTACJsFspbjwRfnmV/bIdmXbp0O48ApnWiP0bLlgQI+rfXNFhi7cmsq1r+f/BQ0WDVY A49wIJArFgJSqMD78Sbqsyv+JwUCqi7DM+J6yO5HHNMr8VPqBQXUCE8g6CkSeXNhLh10bPF/8 zfQbaV2ZkTw+Y1pkS2dgOx1u/N1BZq5K0yxOIFfUV139PFwB/kVFfnBZQT2xGCW0Lab3OnaxY +gbEtGPsvN4ulrTXC3NZx2QPx5SAMLOlXj7qxfqZYkm0RA7N58tbFF0xuGoao7HD9VWuyp4Jy he8+SReaTFwnZ5ARjtrGeR2YQ5MZwKmuK5aJ5hn/oBqyMVf2gxasWgBiP9ccJhAwOKxRbCRpj nySmZqByVC62ikG4gCUBwnXEFwdSeBH2cPqpfkcdw9tbTRUmZuhUh/s32gGG0Sjk+tA+7I632 lsqNzLN1qnIHFOOR3Yt5gP+0bzRrzwzXvFFh29BpveD/RQO4rQUOD41nC/0m7L2O6UFr4gMAM BvGtvqBy67/lenYfiBlZXlwmM4kSup/MFWZnlWzMct8Jhq87wWISuMksY60RGWh90M4ITJdT0 2vMvfi6RSkRK89npMioyADUU9m2FIWQ5eXyDhnpPTwo4pRopAwLFo93hugmdyQhjThoqkP+pf 6Xn3xAENblDZb9pxy+7nu17qjw0C9UEVjR4iI8uoXkP0zciqBOFzkJQsa1z4VRSbZhsP9H3V1 GH7Refb4g18qMn91iox7dFVlz4XpxY3sUHqb+PSL5bU0VE8/m0kKIJuFlO4XN1cNLnvZt7L91 MCRUqcLxmgxOqCCq/+SVKMiPPmBZmeuMGwMq8jKg4vJ56OfxQc2GQLAB+VCpxYyPUqLkitNW6 xR/dgCMZb+qjJ7YHg+OKsa6RbWBP7Q7PBkz49HuHZ+iYZemCb39AymF/PN7cG50Hah8SugdEc FD/jiE859lrqFPOU3ZWwqxymUc5BQ68lpHxd7JTU6pEFFPyj6VHs7cuBr6ZYltE+RB9GGor5U SF6bmC202z0mhIWrB9NhCZu8WpM9rd2qNT1OiaN4DOJ8aDIhOdOit8lnCcneBBkYmLn2Q4pZw y0G++GePbFlZm5I6dnKbb0ozSZOFylJsn1/LMVwnuRVRIEunUMPLLpnspFJVz6Qs8hDGfbnVx nGDShCBw5/I+3xIXO83Ynv4x/JyEM3bz16AypfOTvC8SbQ11bcH/sBGacQE7XrY41l0ojBYh0 Lm8louUnXAc0uCIXFx605y8V2J3Ncz9e438kvDFFOQxk1ypNAjMRRh6TPr+ysJrAR0GRmGUa9 VwqtlvKumvsxPlSbc3PlWjtDk/y70z7y3h/WQHVjkw1UmVmCaOllfhD4iPge5K3O3g2KaLgz6 uo2leCwXmdFlij7lDAUr8ud6dzX8Qx3Y9GbAZtybZ40Z/4a/wjE07DBc9Y1E422/fi+wes+x9 grg7rDVtVP3dAVayHWTsi/ERYc+pZ72OAFfbuHCdZIm+1YzsjIIXtLSFanWoPPeawENRVcomI 10BeOwAlWyncwnx3njvJQlhwdP8nqW+19gklGN13ZD899wHSRLdZGS7/ej5OCkNpyH9WRE6xL m3nEo6nZwLAI89SIfKT2MrmYDcO1k/j/U5g8IoeEm0wEpj+jHSGrog3iY3HKi8d7NDs4/XK7L jWvBnrDu7k/6CDQBQaiOZn4R9eMYT9NSPjzEhv0VLLlujlr0NSBssqYanWrUEn6/4jXasiJQd t2X4s4i+KIKaYjv21MX26dNsRIB//fAZso1wdvx+zaob4MqsnmGxkWuvpHFUwerNElu1YSP0p /c55eW6OB4RzR23l2d5BK7X999Q4HENHlubho65aDvazn2J/JEIu7kIgQWYn06YT0TGzq5GJD swBHoi9ePwQgVA03NTStGCx38nlhh4jrvmprhuIuTll7VJL4CwbmLBA5/E43EMi1onx+GxxS8 4e6XMa/kpEdSfSds+HpvuItZzjrnBxHR1sbuus/DhRc3D5cyGqNcwNNhQlKRxHOs/BPLBtTbk reOlltPtlhTBgAd1utRo+bC2ORbUm0amFbP4Mjywb8Y8BAKmHYSRgWldBt/Q/r7yc/rX3EYNg G06yX6/xRuQMmj64lUO0Y7fx+mpmoyvefFzLee9+b4WZzezz8DLbOWKYZyZSnB1jN5HB1PdH5 xf+T5ghbygmWKPi+8Qq/bsX3XKqKIBlt4rC9fwQ2ouBTA9MlptU/HWUxgWpuCxiXUK9NW3e6p TSS7gbG5lSdydsYpwEuAGrr9jdl5kCRQ== X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?utf-8?Q?M=C3=B6llmann?= , Po Lu , 79353@debbugs.gnu.org, JD Smith 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.0 (-) Stefan Monnier writes: >> I'm not sure what this could mean; a corrupted file somewhere? > > No, it's just that `tramp-compat.el` uses `\N{...}`: > > (if (boundp 'password-colon-equivalents) > (defvaralias > 'tramp-compat-password-colon-equivalents > 'password-colon-equivalents) > (defvar tramp-compat-password-colon-equivalents > '(?\N{COLON} > ?\N{FULLWIDTH COLON} > ?\N{SMALL COLON} > ?\N{PRESENTATION FORM FOR VERTICAL COLON} > ?\N{KHMER SIGN CAMNUC PII KUUH}) > "List of characters equivalent to trailing colon in \"password\" prompts.")) > > but that syntax is not supported by the Lisp reader in the early part of > the bootstrap because it relies on a data structure built during Emacs > compilation (using ELisp code) from the Unicode tables. tramp-compat-password-colon-equivalents is not autoloaded. tramp-compat.el does not contain any autoload cookie. Why is it in play here? > Stefan Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 10:50:59 2025 Received: (at 79353) by debbugs.gnu.org; 3 Sep 2025 14:50:59 +0000 Received: from localhost ([127.0.0.1]:40824 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utop9-000667-1I for submit@debbugs.gnu.org; Wed, 03 Sep 2025 10:50:59 -0400 Received: from mail-yw1-x112f.google.com ([2607:f8b0:4864:20::112f]:56555) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utop7-00065j-7A for 79353@debbugs.gnu.org; Wed, 03 Sep 2025 10:50:58 -0400 Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-71d60157747so43327b3.0 for <79353@debbugs.gnu.org>; Wed, 03 Sep 2025 07:50:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756911051; x=1757515851; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=jDsb9pQOnMfWxq8i0cabs50Vd9H9syDJbCkbfyZad58=; b=UazFn3Q6CASisHXbu97vVRXvfo4I0w0C57B4USv/CqoTJzeOXWQ284yFSuXYgayBCz VKr0K7FVYqE/CrzeYVDJupHKKTWC5T6J7++bG522PKeit2Jc1tpKzm98T566f58vZ5TR 4tzRAWJxw371bV6nIwkbP7hNZj0peY8wlREIbHUL5pwnWtY7i5VrTJ+AQWPyzcID8Jy9 49USWelRq597u8MpTsKrpB7yy61Dst0HBGcU80opBqjNjPheliaxvH8w/dWtQyQjdtST lZtO4EZ+k0IpiAiFnMnfYd9LxNNi7UMxvZENRvNeOjyz/xIqQWc1ThyeBBtr8D5I3fuS cnNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756911051; x=1757515851; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jDsb9pQOnMfWxq8i0cabs50Vd9H9syDJbCkbfyZad58=; b=NxhpStdIJEzzKUtYGdvjIK7+PNW7wfmRXzStosfh85c/ghtXRnHwi85nlAca5f0slo Nv9T9l1PwEBSjNDIjBlDllV+95D+QNG6tDlq4UJDEROL3WYcxVvmz05YPhY1kLWRIbEY fsUM1/5wOqOGWwbN/4eDmipIh7GFoQWOMK2fzdREpckDr9ytUBcYv60rrX/lttDtr/+C hui3ynQss44YNhdohlu9RMEOuMTgsZIDKOaV3NPq3SmI8QIg4XGVlM2V9x3KkcwguHz2 yYIqdgsgubr+YSggjZXBJvt6ZnNaYs4Sn2KBWzjiHJpY7rH5Cpwx5Zk0fE4pLzOyAo2L HNbg== X-Forwarded-Encrypted: i=1; AJvYcCWtDmw/sj/9+6YIvqldO693UZ2YnTIShzJ0WME88TP52vshum1D0cPlJfGHam1YKD37GZZpsA==@debbugs.gnu.org X-Gm-Message-State: AOJu0Ywp6DqtWlQPK4tYSSz7l/NJXbt2w7twfolOWKQNgIS8YCFe/Jta t7lSnyrY9RRPOI220G9y5ePdj3gCCyvEzfA5nGQWpYEt5TQWwGNN6ti1ohtAY3yZ9q0= X-Gm-Gg: ASbGnctvxePaDbG/OFnulDE8Ggom0KnfknTCFTyHFjyduSc/2pax9N0hVMjSOjCmvE0 uI3OUB93r9dTQsDHNPGFOLfakragHAtw16+JU7I7f1gcaazmkdr7DOAfW4hReu+0lNexddF3RBn WC0hGoIkJ8b0TNtgm+8rayzfgfD1FQwwmHo5SgsDPSRxp1czFGoJSpd0nGZ8jHrdpFB5jKu93Qt JPAR0DQ7kCLq9+i4/ulav1lVh5rQfl/IBXKisY0q9g2WSyP8AnqyFGT+Ok5X04nON7TZYd9qKyd Fdg+s8JCD7h9XDG0qy3YaUUOwaOn0MnUvFEV8D25WrhANaJAs+U1ZNhvAooGdsCQ/eM6EAkr3Px jT/+hdxFt/z9j7mxwMykqfe4N0zOWh9h37tVzRudc1eDWo70UYonTv5XszLkc42+OMH8= X-Google-Smtp-Source: AGHT+IFncHUqMp0chTNfA8wJqBueVi8xN4ffJE9jor1Lk7O74WDyAI5zJZPKlyz3OKRUWNz+cdYI4w== X-Received: by 2002:a05:690c:4513:b0:721:2178:8548 with SMTP id 00721157ae682-722763b0bd6mr174832387b3.13.1756911051097; Wed, 03 Sep 2025 07:50:51 -0700 (PDT) Received: from moss-4 (cm-24-53-143-223.buckeyecom.net. [24.53.143.223]) by smtp.gmail.com with ESMTPSA id 00721157ae682-723a85ae667sm13885767b3.64.2025.09.03.07.50.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Sep 2025 07:50:50 -0700 (PDT) From: "J.D. Smith" To: Michael Albinus Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: <87349362r7.fsf@gmx.de> (Michael Albinus's message of "Wed, 03 Sep 2025 16:15:40 +0200") References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> <87349362r7.fsf@gmx.de> Date: Wed, 03 Sep 2025 10:50:49 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?utf-8?Q?M=C3=B6llma?= =?utf-8?Q?nn?= , Po Lu , 79353@debbugs.gnu.org, Stefan Monnier 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.0 (-) Michael Albinus writes: > Stefan Monnier writes: > >>> I'm not sure what this could mean; a corrupted file somewhere? >> >> No, it's just that `tramp-compat.el` uses `\N{...}`: >> but that syntax is not supported by the Lisp reader in the early part of >> the bootstrap because it relies on a data structure built during Emacs >> compilation (using ELisp code) from the Unicode tables. > > tramp-compat-password-colon-equivalents is not autoloaded. > tramp-compat.el does not contain any autoload cookie. Why is it in > play here? Because the new autoload bootstrap actually /loads/ files with autoload calls to `tramp--with-startup`, e.g. the file `tramp-adb`. This file requires `tramp`, which loads `tramp-compat`, which uses the (not yet available) unicode syntax. Turns out there are more footguns to early loading of lisp files than expected. Zooming back out, this entire feature was really created for /external packages/, so they could provide their own macros which wrap e.g. `define-minor-mode`, and have these autoloads handled correctly without pre-loading anything: ;;;###autoload (my-fancy-mode-define 'foo 'bar) ;; correctly expanded to define-minor-mode etc. So far I think the only internal library which is unknown to the bootstrap version of emacs used to build autoloads during compilation is TRAMP. For example, it knows about easy-mmode (and hence `define-minor-mode' and friends). I see two options: 1. Find and fix the footguns, making the bootstrap version of emacs used for autoload generation more robust. E.g. move unicode table generation earlier in the build. 2. Stop loading internal files during bootstrap. Add an argument to `loaddefs-generate--make-autoload' which inhibits loading absolutely. Pass this arg in during bootstrap autoload generation. For option 2, we'd remove the expand declaration from `tramp--with-startup', which is incomplete anyway, since some of its autoloads are gated behind e.g. `(when ... (tramp--with-startup))'. External package autoload generation would still work fine, since this uses a "full" emacs version to generate. Option 2 has the one disadvantage that external (ELPA) packages which moved into core would need to forego and rework whatever auto-expansion they had. Since TRAMP has already happily existed in that state for many years, I think this is fine. How to document this is another issue. Kind of subtle and yucky. Are there other good options I'm overlooking? From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 11:19:44 2025 Received: (at 79353) by debbugs.gnu.org; 3 Sep 2025 15:19:44 +0000 Received: from localhost ([127.0.0.1]:40993 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utpGx-0007hH-Kn for submit@debbugs.gnu.org; Wed, 03 Sep 2025 11:19:43 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:27113) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utpGu-0007gx-4K for 79353@debbugs.gnu.org; Wed, 03 Sep 2025 11:19:41 -0400 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 9EA3480A13; Wed, 3 Sep 2025 11:19:33 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1756912772; bh=EOiQuFTICvhBF9WbntWSeAcA9TTB2wihnieV0J06v3U=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=ZxTIsMaf4tI3k+nQq3YyT1MXiFixWNp/9cobixTZJflEl6c15OqxmKZHfpL7X6khN p2wUaUPjqCW9j/9khZtfpoO6wtfNfW5D6d82f25XSGom46jckPcmwD+3FWUQ7U38Pu qdLY5SAba6Mxylbg9f/a4Kx/sNJW1CP/UAMVPGbr7ubGSdM6vLrQGgI4ZaQKgxxKlZ oiSqUqEWjdE7xrP5s4fXXMW0TUurbyDnY98FeaxRi295AwF1/n9e8dkTAXilnTrjX6 KvJ4L5Yw1lsm7XwoMtMQvpCaNsPaOJoznZJYCqsNs+VU/eAWQFN8STti4X7TMiCVcr epFJdUPNDT4KQ== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id BD51E807F3; Wed, 3 Sep 2025 11:19:32 -0400 (EDT) Received: from pastel (69-165-161-194.dsl.teksavvy.com [69.165.161.194]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 8553D120444; Wed, 3 Sep 2025 11:19:32 -0400 (EDT) From: Stefan Monnier To: "J.D. Smith" Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: Message-ID: References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> <87349362r7.fsf@gmx.de> Date: Wed, 03 Sep 2025 11:19:31 -0400 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.377 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?windows-1252?Q?M=F6l?= =?windows-1252?Q?lmann?= , Po Lu , Michael Albinus , 79353@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: -3.3 (---) > available) unicode syntax. Turns out there are more footguns to early > loading of lisp files than expected. Bootstrap is full of exciting surprises. > Zooming back out, this entire feature was really created for /external > packages/, so they could provide their own macros which wrap > e.g. `define-minor-mode`, and have these autoloads handled correctly > without pre-loading anything: FWIW, it's best to reduce differences between "internal" and "external" packages. > 1. Find and fix the footguns, making the bootstrap version of Emacs used > for autoload generation more robust. E.g. move unicode table > generation earlier in the build. Worth a try, but as you've seen the bootstrap is ... interesting so it may prove more trouble than its worth. We could also change `tramp-compat.el` to refrain from using the \N{...} syntax. One more thing: AFAIK we're talking about eliminating a compile-time *warning*, right? IOW, the new autoload-macro-expansion is sufficiently careful to withstand errors that the resulting code still works, no? > 2. Stop loading internal files during bootstrap. Add an argument to > `loaddefs-generate--make-autoload' which inhibits loading absolutely. > Pass this arg in during bootstrap autoload generation. I'd rather not go there if I can avoid it. > For option 2, we'd remove the expand declaration from > `tramp--with-startup', which is incomplete anyway, since some of its > autoloads are gated behind e.g. `(when ... (tramp--with-startup))'. We should probably remove it anyway: it was a good way to test the new functionality, but it's not that important. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 12:53:36 2025 Received: (at 79353) by debbugs.gnu.org; 3 Sep 2025 16:53:36 +0000 Received: from localhost ([127.0.0.1]:41319 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utqjn-0004Bx-Oy for submit@debbugs.gnu.org; Wed, 03 Sep 2025 12:53:36 -0400 Received: from mail-yb1-xb2d.google.com ([2607:f8b0:4864:20::b2d]:42487) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1utqjk-0004Bb-RE for 79353@debbugs.gnu.org; Wed, 03 Sep 2025 12:53:33 -0400 Received: by mail-yb1-xb2d.google.com with SMTP id 3f1490d57ef6-e98b75eb577so86731276.1 for <79353@debbugs.gnu.org>; Wed, 03 Sep 2025 09:53:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756918406; x=1757523206; darn=debbugs.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=bAFtBEzC+k+SL8O7slENrpFXfyi2ldMQXxGlZsAdGDY=; b=BcLRZZyhu8WTa9Bh9AAE4+kuDPqR2hmvgx7TPJW2rcwNH1OGEiIGqCVGSHkUxwLv4P JBwKlKICPYGclD2x2mB2rsAGxkQ7U6mEauwkp1UcUZ9pbmmxP08Qm0pFNfBFqyIBNF0/ 7db3y0yUkeCxI6pa1dx3J19SPcINC+81yauncAMq/OjvW6TFazZJW4rIhh9Jauv7+T9C 50gj7Cr6+uWggrjH3KIr7pF5DnpSYhFm6UY7QXM7PkklACJDSeShSYO+sHkprzK6T3D0 lSEIctVawuaxm7YGHAe4m2uvmLR0bflMkmEgVgBQWOH7eCIbu4ISLxcWJIbeI0tLEm8D hlVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756918406; x=1757523206; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bAFtBEzC+k+SL8O7slENrpFXfyi2ldMQXxGlZsAdGDY=; b=hlbC0/rixlSm9aiv0jNV/FlDJODIAQ4Zf+p8extGjQtTI75NQL41BCygAM67FSSp11 Rz7+rEkmUp8UXv8IPgdBNwQ5ARkJ1XWRPCruiFq+Q/ubqLgMRWaTKx4RyHC0A5i4LUTx 1qoH3sp9STsSam80gbRLDlaT0W4uYTqVrCLyUWVhm/UiJvZ0w7BieTd4fKIUtdyPWUSr RmtLC8WmPlFQUdN2GBILMJWg00m16862vxXiPKhDttdEhZ7h1NC4Na/kN4Hzm3lvGDCG sknvGwUPvt+//xd5FaChadWwxvD8tt1X9gtkNUWq5+NEQqosj8kDmWyhPL1OAWcZIXMT O42w== X-Forwarded-Encrypted: i=1; AJvYcCWaL/NyoF90DCD09PscpAtWS6lTh9zmJ0ZkGqqB5auIH/nedbg7ulTIQpB1C3rXdeIiXyg1Pw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwLTbi0icMAHVS6T2PYTR2MHiTWF9BkLNUeXi66ssu4r2nMXvdd 5DgsWpBL+RiJUxYZx0nJpmtWNfDh+HISWQQ455sQT4porXfpb1mTd0Qa X-Gm-Gg: ASbGncsTewJjXz1h9+wcjpk2b6/caduEcZdnKh41pCNHSPjT0RjBiCNLWmTFcNXljDQ LeMsWEWWkVn5VpqRZ2GgKQifNZE4nGehEidZVOwjlFYC8jf83D2F0Jq++BZ3dxSz2P/OS9OOtpk 9sjB06n8jNnsTfdGWimXv9p5bq58N3n7SPYoCEW71PFjWerYxFCWlBOs1JK8e7XCHGNH9786Oad cqdQ5gzdPltAMB8ru39HVQ3v97cxMK16B96hs8gugmLgLIEOMVpWHnINc+yrtn5lSVt4dF6y0GH JkCVoLGX11F4G+XAM15zl+4yl/prsN4oqCs6AbQzfvtwndxSwpthYf5J9br96ZBwV6KVTt1QugI n0VNyEtpmyRNF+fwy1A3jIpjUNPHl+ral01dgOw== X-Google-Smtp-Source: AGHT+IHF+q8CwnrE8ptQ1y8G16tQPbxb2XXRp3RUbK6N4tLMGYoRQ3O6eSzUg1BbvLZmI6jTVDFIdA== X-Received: by 2002:a05:6902:2b02:b0:e98:9adf:d734 with SMTP id 3f1490d57ef6-e98a379d799mr18273319276.2.1756918406320; Wed, 03 Sep 2025 09:53:26 -0700 (PDT) Received: from smtpclient.apple ([131.183.131.33]) by smtp.gmail.com with ESMTPSA id 3f1490d57ef6-e9bbe19decfsm1595409276.34.2025.09.03.09.53.25 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Sep 2025 09:53:26 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master From: JD Smith In-Reply-To: Date: Wed, 3 Sep 2025 12:53:14 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> <87349362r7.fsf@gmx.de> To: Stefan Monnier X-Mailer: Apple Mail (2.3826.700.81) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: =?utf-8?Q?Gerd_M=C3=B6llmann?= , Po Lu , Michael Albinus , 79353@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: -1.0 (-) > On Sep 3, 2025, at 11:19=E2=80=AFAM, Stefan Monnier = wrote: >=20 >> available) unicode syntax. Turns out there are more footguns to = early >> loading of lisp files than expected. >=20 > Bootstrap is full of exciting surprises. :)=20 >> Zooming back out, this entire feature was really created for = /external >> packages/, so they could provide their own macros which wrap >> e.g. `define-minor-mode`, and have these autoloads handled correctly >> without pre-loading anything: >=20 > FWIW, it's best to reduce differences between "internal" and = "external" > packages. Yeah, that's my instinct too, since some packages are both, and some = migrate in either direction. >> 1. Find and fix the footguns, making the bootstrap version of Emacs = used >> for autoload generation more robust. E.g. move unicode table >> generation earlier in the build. >=20 > Worth a try, but as you've seen the bootstrap is ... interesting so it > may prove more trouble than its worth. > We could also change `tramp-compat.el` to refrain from using the = \N{...} syntax. >=20 > One more thing: AFAIK we're talking about eliminating a compile-time > *warning*, right? IOW, the new autoload-macro-expansion is = sufficiently > careful to withstand errors that the resulting code still works, no? Yes, the error is handled, and the result is that the TRAMP file which = autoloads calls to `tramp--with-startup' simply fails to load, hence = that macro remains undefined. This macro, and autoload calls to it, are = then copied verbatim into the tramp-loaddefs.el file. Which is how it = has been for many years. >> 2. Stop loading internal files during bootstrap. Add an argument to >> `loaddefs-generate--make-autoload' which inhibits loading = absolutely. >> Pass this arg in during bootstrap autoload generation. >=20 > I'd rather not go there if I can avoid it. >=20 >> For option 2, we'd remove the expand declaration from >> `tramp--with-startup', which is incomplete anyway, since some of its >> autoloads are gated behind e.g. `(when ... (tramp--with-startup))'. >=20 > We should probably remove it anyway: it was a good way to test the new > functionality, but it's not that important. It currently doesn't function due to the load error. We could of course = just catch and not report load errors. But they do provide insight into = early-loading issues that may merit correction. And this "silent = approach" would be a problem for internal packages which begin to rely = on `autoload-macro expand` and the early-loading behavior during = autoload bootstrap generation, only later to find out loading no longer = occurs because of the introduction of some new bootstrap-emacs problem, = causing breakage. Preventing /future/ problems seems important. Summarizing, I guess option 3 is just: 3. Stop declaring autoload-macro expand in tramp--with-startup (since it = doesn't function anyway), and ask people to ignore the warning. I do think a real question could be asked: how early should it be = possible to load a valid lisp file? =20 Thanks From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 13:25:04 2025 Received: (at 79353) by debbugs.gnu.org; 3 Sep 2025 17:25:04 +0000 Received: from localhost ([127.0.0.1]:41528 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utrEF-0006dE-RU for submit@debbugs.gnu.org; Wed, 03 Sep 2025 13:25:04 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:48070) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utrEC-0006bW-NX for 79353@debbugs.gnu.org; Wed, 03 Sep 2025 13:25:01 -0400 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 0924D809CE; Wed, 3 Sep 2025 13:24:54 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1756920289; bh=2rtHLr7sUB4tQTSrwYdKDEQXuQi8pajj3zxPVw4HS/o=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=nrEnCiHcnR2967Sc6v+ZTojfEcXUeauEPFr5rBqbUKMn65vSB39j6r5OSAa5F7ibs qKWzIvoM353xpSgZlgkzUP2PQecEMlNrNhBj4pqtm65TLDXur4Yekc4t/6E4+CriNZ QtNmsAzSJli6tVYXjATS+SgFcpB40EcjIWl8xda8a6CwIwodhJBtYtMvZUldkKSMaS cU10SQkIyzp4bZhVIXfOlGmudiC9/3BxDGn3KJ0nGV3Qg+nwSkXYFESR7PjjA8Eu1o E848u/7hX5M6AN0pwa9ODYd/K731hlj/0FQW8hWgLugxlBBL/hdAFQqrYKeu0l/lQx MCEat5kKXiPiQ== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 1217A807F3; Wed, 3 Sep 2025 13:24:49 -0400 (EDT) Received: from pastel (69-165-161-194.dsl.teksavvy.com [69.165.161.194]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id CE799120352; Wed, 3 Sep 2025 13:24:48 -0400 (EDT) From: Stefan Monnier To: JD Smith Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: Message-ID: References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> <87349362r7.fsf@gmx.de> Date: Wed, 03 Sep 2025 13:24:47 -0400 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.215 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?windows-1252?Q?M=F6l?= =?windows-1252?Q?lmann?= , Po Lu , Michael Albinus , 79353@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: -3.3 (---) > It currently doesn't function due to the load error. We could of course > just catch and not report load errors. But they do provide insight into > early-loading issues that may merit correction. And this "silent approach" Yes, we should address the warning rather than mute all those warnings. > I do think a real question could be asked: how early should it be possible > to load a valid lisp file? That one's easy: the whole of `loadup.el` is made of a delicate ordering, so it's only after those files have been loaded that you're in safe territory. So, I guess this suggests we should build the \N{...} table before we build the `loaddefs.el` and that should be doable without any new bootstrap issue since we have `ldefs-boot.el` to solve that dependency. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 13:35:02 2025 Received: (at 79353) by debbugs.gnu.org; 3 Sep 2025 17:35:03 +0000 Received: from localhost ([127.0.0.1]:41608 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utrNt-0007T8-Qu for submit@debbugs.gnu.org; Wed, 03 Sep 2025 13:35:02 -0400 Received: from mout.gmx.net ([212.227.15.18]:52295) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utrNo-0007Rm-EN for 79353@debbugs.gnu.org; Wed, 03 Sep 2025 13:34:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1756920885; x=1757525685; i=michael.albinus@gmx.de; bh=OEL8cvcKAMSDkBs4qU+GpY+DDQXGzCFO1JDpI7c3QlU=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=GkFv5L0AplssUsEFO3lGTCFpjfPvplILodqHrYw+xzjNw1xqDfg+erxCeasqJEGG CBMhl6T9KZJ0kZaRXQBm1n1PdD3Tqihu6hm+k6YFq5TAM26Dh1Nvp+2lRLrdN4XMb BOz11fbkfyorqfIcYwyFwX8bbjDSRSsm4UKmrSU7dGkrsp/mwdOTsHoHJPbO08xp7 Z1Lq1IYvnine2xu+nWfHrJa7/8fGxPKm3AP3Dg5dubON8Kf2yK7syT6quDKVTNrlk xMW7v09ZUvslj5IjqSKZ2NtUg4s4AQFNeZaEIG7M8FgFwKs118ySFhNevDR6fmDBT pgEDa+Gh6bWSFcXWkQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N8ofE-1uQjAJ2R6c-00wDkN; Wed, 03 Sep 2025 19:34:45 +0200 From: Michael Albinus To: Stefan Monnier Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> <87349362r7.fsf@gmx.de> Date: Wed, 03 Sep 2025 19:34:44 +0200 Message-ID: <87wm6f4eyz.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:02WDL3G61NPJ+5iLjgQ+MqdvD1bfQXd/qRPG6Rg6CKUJDsL165w TtCoPPQvWtKa8mtW3Sui7EH3tib9p5EjCBl1d8lRimunvvtQC4h2gvQPbxh6kseV9o8IUut 5x3iuGNixcgO3xQ304TCTT5PcCQaLAh1uGEj89j6kAPJYbYPEODagaSq+VY/hs1TYFTa1Ob SWyrU3uijM0Xh99PYCj7g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:MThgzOKomcE=;PvaZ74RM6a6E3Lz/vQmDuYv9p/J TZDbSsyI/Rremu3C3Kc6j4IjIW8sPlrv6F4CEHyf8VSucatvVeObGl+0VoGXaHstyPZr86cr1 kN+hcia3eOaTVpLbdzXjQiM1jE1sGu9gS+G/mrgmTHuOKQGG5YNiV3wwijicoiMpzpDE3LEX9 M/+QdI0zrRoAaluK469YvBuw4kSxJW+2tCMg/jFkHaGb0pjRrFZKp9eeKYiB67P+Gu5YHG8SU GSiACnfD5BjStSlXPPI9EPp9fGc44j7Oe1+CF75E86h+fZ+8BvZPtqjSzJ4TxfiMfxDlwhc3C YGBdd3t1xxsRijFYbSQMsXuf0JPwJ3Djw0QGL/Ilipg4fXI41qqqROcetpjhKPpfXV763VMiR e3OvrIrUbmKRTw7Km9yEu/CBJRSAYIoewS2gCLPQVFcVaqXItiWZR6P+PMBH7DLh0+IfSFWqT aoT/dxCcVrx1vR747Fq2mEE/PAoaBSG0+H2vcCRVyWW2muWbp/ZZaq0yr2UUj8JUk7atZPf/4 khcwaTdZt8+3hxXbglwUTa8sGM900uLuzQ+43uV5Dd/w+KfHpDh5X3m4XfMHWBddjYC8ZggO3 ZEv4Ke2tR64HUbUeRdbY5UIfnBNSGZxutujTQ9LEhDrdSiQPn9oSH4XSpGiVx8IFYp5E/J7yb hMQ3tCk2yC3k/2epu9t3etAJXwAM/E6gn8ic5CiJcm8/ues35gUm6FTL6aXxhUohxcTiniaHE zUJcKHhIsiQ44fnbBlf7sF9iz/Fu26ip7B6x8b3059TqeRTOot3gwwc5dnwid/XkNB1X/n6ZO HCcL3CrfyN8lfHyJpVGlJlyUvZyaj29LLxG6KaFG9MHQf9UMWkD5hXeCXvsEHLLI+mCG7OIOC tX5lXGrIdYliX0V8HvNGm8ububek5v1TFm0Dx/l7lkR/0lhR7sgVA4gZENygrhEZ0TDy006Xi ydnF/GRN8Up5yCg9DuTFTGMoczDD+sF+66xJMctBUBFzKT0+0cQqANyetl2ahvMHE2cjVVLj9 QWrA/PAyALWDZBst/8WUiu7xaKUJ6YtmnFP7bhDxaoQtSTya9HgqlCOJBiiDKXItnWmlBw9ky kD/yRZXVs9OZ/G/tNnjIf3d8ob8GmxtQkn3MxHcdyv+4SaoQijxcdD4bnWmwAcjrgWCP5UBgX IYYgv1wkCDUp6vuLT2qp4g+M054PI8XlHj3Do2GxOcylPbDieRqiT4+EzM9VY0hb6HEFANQPR 6DMHM4S41e3sTjhDvhLW3IV9J26OTFvN1DWF76Kz4HF92/Zcv+iqDn7iNonC7MnPDdiAqK7vv tHNsk8tAgUkdtLbVsmLY+bU/tGeOFWXZb0jfuXtWdUpBIik0jL3VxUGDKbcIC9cS0qnGoqIUW oIWHWylfN/yODQbZRPQ1roRBKQMna7i1YCH16PQADgeQXGaxBJP0NhwOOrLr5TdyI8HNPzese QaH1iZZ8SBHUj2fr7zqxk0HBRBW/B050i2EAYF9Ox4oSgVMfrmE05H1ZH++IZZr/SZf5v/HWK Tk2E6b1IeDYZBcbLHGfXHRCSF/oS0moxCBLNOXN37apbB5t09gxlyzTDh4dVTguDNkLbcK4UK eXX7RdSRSe0qCOBf0DY7W/DonqWPHJMuakjM0tdRH/oSx9wdAA3EPKN/fJEkROAvJLp2Ek/BI Pfm4YyXDFBAEk+hW6yIGf26kTyZHYrCUZpFQXIHuSezQNiMRNqkKwS0AaBKx2Akf0src45s2v 4P6gYtt3vj508ypLMiMqMABi+ge5h0AIna4mzr71l5CZNLfVJ1bqF82OM8beee/fgenfeB3S3 XGjydB5cA+ZboOCNAXFo7hMN1yIoTBvsy7qdLrLuwjcGYojFgEEcvgwm5ztrQP2DMf4RhoCVo 8N+Iwem652P9NWBt8CTUJXd0tqW9noPTarV5vMVViwi4QLSW1pjzCd1hu6ndYZGnlg0Zw1iC9 zegXXdFF/MwuLV67JUO27Rz6iJdLH9ffBS2y1/BvMU4/EsckIvgt98T11GwXATyb4UbZNAOQU MJmmykBmTmlV/ezzjRAVbJQGC137UVkcgjKIj5DIutuCTk1Q+7TE5zRjOzQWl7AN+56aaDXJB 8N9H+MFu+cOouC3OWCh/9PumDE+3lpkCUOCGhWsGtvda6WdfSoxN3AYF2nM0fAzUxNsbYVOnO eewb9H1nSX3DXlelMeBlwjxTLTwXgvz3bEAQXhC3J9e89SegjAKR28rdTpiYwU3F8vHA3a8TE /KcdIrwEfdHPugBIOT3BaEDkIw7ZrsId24GcYPCzNjyobA5zwym4hrOSs1Hc0jSPDlWrTcQum ktO7yF+USJZTbMSthXVzq6I2p5DMtpu2zfyc/Ui2VS7y4jtgy7tGhwCJ/S89OnLQmHD8eVO0v GIFIUuKTJY/VkjRn8un6YMjB6O8jq39fejdx5/D3vEYilLWyPzQScuAVJnGduCU8gCDrUQBVM PbXfJ2/H7T1bU53RKWLq+ch1q5bQ9316HL6iK1xvB1aYKWht0BQ3LcsRLC4jZyGLEcmfK9MwL MCce7eiC/w1w9vTYBjMpLnKyTX38+1TfVjGN2WmsZYYutB4pwQ/6CicqUQH/HdKBCpnLcZfdR a3r8KCOACzAE5ekdCdQ4NzeYkqrI8i8nS4AaUP7wVOP9MN2Ny2Dk+Yt+A8O6xe6AWEA1YNCnL hivUtQpcLtPR876qcKb0Lf/Pi9WcPXQWrxqMs2H80wHIl5vW3Ih7qUwT719gTVaNnd952BGbR nrrzypqgXap8WYSaq1WMDb65l8lIW505kd5IzX6UqNXDrbey1pEWo7IPSjyoHQUy78TTCpW1D 2iFUHxWiqPfT8u2P2xh2kTUibGF5DM5EL7ZHv1aZj2uzcfxKAMKJbDy/os+M9Yl1wm8MnELF9 xF8nNw6juSYJDMzeIctkt5Lt6Lw6NzK6ssbgUYgmIRA436uqvdkb0deQnE29YWUfxwN8t5EeD 5SrNIUdXwvh9RLGxAMXU2g4Ru0slPWGgEZ838WYy6j46HkhbMBy5fYXUznIg+xFTfrk0Xi/Kv XWHNepgf4T5V2Pw7kRzM5UewaVsGU7NUxa6W4CceNUtbVsF+py7wWtfWNOBw+zbiwkJpS+O++ t+K1RYBAOKVPtWLuyl1VqwOv8GevoJD+LsLiy4CGApJ6ksH+wzp/q6f155pzld681OrBahUoi j4WDzSrN6qgNn9xmXDlI0Yp3ZnDa1EwpjdIRqmxyfSwpXjlAd4k44kwSmGMys+Dmu6Wk10aph Ez011f9FeZGjk8bqlhQareD9FWH7uu5Y7/nM8kNPOltXRYGBk6hS4CZqulntDfWNt4mofCRhM +EzDrZpJsEx+cJromq4zO6WDFG5/Y00eBt6gcdLyao373BjRqS4tVNg+bNIhzUTQM1+URRGnz Q8/1TrSKpz8htfwXEZ3kWY730NBfnpTvBXEu8Ognpu+xFmqpuO/WTwcnbdC4jNSNdkGVmpOKB o88PYFivuvKH0+tcJmADGB84ezbJodtGNOEYgWaEPkm7/SbV9qUPBDNnnADwUkxll4DctNw/n xRu8nMlo+FdbPbVqz19EggIeahdyYMUgayhcVu9OuX5ubQttqKYLry519XxCpukcuZSzUx9fs s1Gdw3Nq7eQH74tQar+/cX/cRPu88mh4U+2H+GxpARsYSzHd4ZSK6+bIpIAWLlOInR4j3Z1I2 Yvzm/dPgbgn5O7/owcS+7vNB2DHagBB0r7rzh7a+jE2QJ97c2W+UzQUWN/1w4YUUejVmaRagb 1GWHijaJccaNq+CPl2RiGjJLqNaGZDUW2bE6JX9svLaSx7CdsE9nsO+MNpaAS3KDAV00uVQGY gjLdQHs0pyNMWdIpw/f2hJxAbphEoju/6g9SCb5GSE6LfV0EzWCA0PwI5I/XEotDoV47cIJ6e VbmRO7XlYelYex5lI8x7c7JhPnN8n7HiTZ8m/07D/HmjQJrzlE981jdPkxByMCSqoQ2gHltNT sTvrG2c3mjcJ1UAteBm6HZccvdUTCSOfGz1Ag7SW/Kwj6SqR36qL8EvxZ3Pp/6oDSBGLZ/0kD sl2RhuQamfvN1HGqX+crSEU8i1hrQr/cUlQtnMubRZRbmxi1RFAOOPCjM/ozSA6lqQTgZZ07i PxZYjjO6HsW2sH4VWqXFli1Py7FBUn/08uiIyY9eStRRSVA9FKPvQ86XrsvCl+THrKcVuVjL1 xJlFN6kTiKIi6Lxx5KIGWqxptJaQV8z4zXzpB+iRRgbQ3FTnUEneGwpkroCt24E62oTOVLZI1 neDXjwg9H7q59RFJIstOfIGtofvxN78Z3bc/flZd2dcbzES1J3JFUd7E8Sm+KHIhMrQvs0Ki3 d+GfWP1jt98ZLO+EmqY4FNOe7YZXh+qKxZGC8AfL+D6g0Xqo3aA7KCbOMTIMeBPbKoKuqmwTl Jlf+gY4Ql1Bz+eoeBL9/cGJ8PkhD8DtZ76iaajNtJ7zxyau4dSYnP0p7K+4Sa5XA9z8ZBTHWz S1QZEkv7snfs8Aeck+0WJM3U6RzccVL086vGAkUWdVmp+Uzt4KoZQZ9+zGJi7C+3uqbxkx/aA fmU+bafX4EOPGBwudG8UYt65uwEJrQ/tWpoiZRCepZgjDFX955iV+HhANRk1BxSY2yYFvyUWV 7c3O5UzF9duuHMNd0VsnliQL0iZpiecmRRXVSTRXBt9SyRx9F4WNq+qb2v2TTKGxYZ8jT762w qczKJXLzu/mfsh1p/gEtyd0/Pnh5LZL3Uww94rrG9FntAP+OX9lXaKLoTUGWc2GYNNpiHxaaB z+n9TmTE318YRQuzpUdk13p6MP61rf2uKBsTxddvtb3i4Vq2JFsRtEdB52Vz/B7uIJLDHr03e 6EQxqAxBg4MPaebWjRWLXLzQ6kA9PqJg== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79353 Cc: Gerd =?utf-8?Q?M=C3=B6llmann?= , Po Lu , 79353@debbugs.gnu.org, JD Smith 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.7 (-) Stefan Monnier writes: Hi, > So, I guess this suggests we should build the \N{...} table before we > build the `loaddefs.el` and that should be doable without any new > bootstrap issue since we have `ldefs-boot.el` to solve that dependency. The definition of tramp-compat-password-colon-equivalents is temporarily in Tramp. It will disappear, one Tramp is backward compatible down to Emacs 30 only. For the time being: wouldn't it be sufficient to define --8<---------------cut here---------------start------------->8--- (defvar tramp-compat-password-colon-equivalents '(58 65306 65109 65043 6102)) --8<---------------cut here---------------end--------------->8--- Not a general solution of course, but maybe sufficient for this problem. > Stefan Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 04 03:03:20 2025 Received: (at 79353) by debbugs.gnu.org; 4 Sep 2025 07:03:20 +0000 Received: from localhost ([127.0.0.1]:44945 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uu407-0000Ke-VX for submit@debbugs.gnu.org; Thu, 04 Sep 2025 03:03:20 -0400 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]:53411) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uu403-0000KA-70 for 79353@debbugs.gnu.org; Thu, 04 Sep 2025 03:03:18 -0400 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-b0454d63802so106575866b.2 for <79353@debbugs.gnu.org>; Thu, 04 Sep 2025 00:03:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756969388; x=1757574188; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=SQqU/N1K4o1N7YBrMfQlzW6q7wwEAZV7FNkUqegVywA=; b=Zj9NIXmj6GBAyj1Rx4EhB1GHUXpqCoWlxRcyPeWrXxfr0IO/c050oeL+Ev9MFuN/yH qW+NwutL5Bm4CvRThzjA6wiMeWsVVpTWF6Zd5c5HHpXfV8pXTfPnpmaoozdbp2bzPGKS 6S7DBWR6yZv1rP3tlnGRpP2Wufbgq7kwFQ7vWHcP2CJTlv0WlkgRSA7BmqFt4avUhmSr b34tsI+6Zlv8QIbybM2dThbbr2r1s8FLpD2V5odymGotoh34RJPPN48K3zWUOcBqxz5O A60umnlhwlPwwdFc+oOFGXLpjdAvkKWOB7py2ZsUfaTw5BokGCosOu70KgoljV6yR061 zfyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756969388; x=1757574188; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=SQqU/N1K4o1N7YBrMfQlzW6q7wwEAZV7FNkUqegVywA=; b=SbRwjwWzEW1LKwTmYiCkuCeOjhwuvIIPmNGIP+nVUrx7jvFNV/aPIBnMiR5P60jzkb zDFYhFnra9mtaLIH9k3JkyvUdlQ594teGAbHin7hIsnIGe7UlOegpRR72PgD+isUT83C hZSMzDZg270dQVkIWhGLde9WrmLJHMvZ1q5bUHSq8REe3yLGDLvtT2U+sJfLa3rynu7F 0e5QIW1SlV2Td6oAmP+SrtbgjATNyxqnDycMldeunvSYj7RIzkrOICCWGnmOIfEvbjay acjgBLewHOWQinY9FW3CLF+U3hFmR++gt/uz/ojgiEGyLoRZbRGP690iOjNixG3O3pXI evhw== X-Forwarded-Encrypted: i=1; AJvYcCUZFSytFX8E64jRYQP8VuUjdu5p39lrEUorBS3PSXW/MHixM32l+uN/57cXbgXJJK1rW9SR+g==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzpmaDk6A7j/xw/6juCbvkcCIFFQJlIjwztORGJAIrHf6qpuodE 55HOPQ28Ptqphn+fpitWVLwp2mPh4xorEzhh2mg+eFwBQ2kadzOkX+/CXamJSg== X-Gm-Gg: ASbGncvxJZ3vy3WwNErbkRWYtGhemBa7imGmlbTe+L9PknmBlJIdldyYMGTeuEMLCkf 2FjvVDqj3Hi25/mc2bgQ08TLA32WfwcryhX4kMBKVDAYjcYxvjdChMOPTMHdX0JxqF05TkrFZj9 8h6BP3R5unzNA9ZBxkD2N3KfkhyCoEaLMxviO++EVf3BmQJqfPhKd3/JrehUBssed38HdAZnUG9 vZ20JpA/iWLVZKUn797joqltFZhR8+aseCSvtkZPZYJ+MaLSFsHJwOr1jevC71Eqx+kDBlXbNUh ONaTyVskTUiv1B0/Uaj9FaNpYKEAUsyebm65vqJsdfnfY6ycqPJz/UZVfl9RmB6/8QtBuwPyMrZ UYOYCmKs57POuze/K383kE7vwlEbzWndb0pmPqdfUDBg7H3+mFiSK6HtFO99Yx9gu9SPl644mqG iF+aIi8zbtHA9sSeeSeh8AuH952Q== X-Google-Smtp-Source: AGHT+IHAmGXGCMoOLE4ltg7YWSwB8EGETxkpW16X48679KLcXJ5E6d0EsYEKokFgZrRnGcb9bO+Yaw== X-Received: by 2002:a17:907:d0b:b0:afe:a152:c3d0 with SMTP id a640c23a62f3a-b01d8a7310fmr2073682866b.17.1756969387774; Thu, 04 Sep 2025 00:03:07 -0700 (PDT) Received: from pro2 (p200300e0b706b30070f6135e4b81aba8.dip0.t-ipconnect.de. [2003:e0:b706:b300:70f6:135e:4b81:aba8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b04241b2e7esm969417266b.43.2025.09.04.00.03.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Sep 2025 00:03:07 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: Stefan Monnier Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> <87349362r7.fsf@gmx.de> Date: Thu, 04 Sep 2025 09:03:06 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Po Lu , 79353@debbugs.gnu.org, Michael Albinus , JD Smith 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.0 (-) --=-=-= Content-Type: text/plain Stefan Monnier writes: >> It currently doesn't function due to the load error. We could of course >> just catch and not report load errors. But they do provide insight into >> early-loading issues that may merit correction. And this "silent approach" > > Yes, we should address the warning rather than mute all those warnings. > >> I do think a real question could be asked: how early should it be possible >> to load a valid lisp file? > > That one's easy: the whole of `loadup.el` is made of a delicate > ordering, so it's only after those files have been loaded that you're in > safe territory. > > So, I guess this suggests we should build the \N{...} table before we > build the `loaddefs.el` and that should be doable without any new > bootstrap issue since we have `ldefs-boot.el` to solve that dependency. Put some sturdy footwear on for the Makefile shrubbery, and came up with the attached patch. It's for my Emacs only; I have no way of testing this with all the other platforms, and all the ways Emacs can be built. And I'm not sure that you would want the loaddefs-gen change either. And blahblah :-). --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Fix-autoload-generation-bug-79353.patch >From a1c6a6001d6230c7c82dfc27dca9f2eb2d7737ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= Date: Thu, 4 Sep 2025 08:51:19 +0200 Subject: [PATCH] Fix autoload generation (bug#79353) * src/Makefile.in ($(lispsource)/loaddefs.el): Depend on $(lispsource)/international/charprop.el. * lisp/emacs-lisp/loaddefs-gen.el (generate-lisp-file): Require cl-lib and cl-extra. --- lisp/emacs-lisp/loaddefs-gen.el | 2 ++ src/Makefile.in | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/loaddefs-gen.el b/lisp/emacs-lisp/loaddefs-gen.el index 9e91a11204d..8063283902f 100644 --- a/lisp/emacs-lisp/loaddefs-gen.el +++ b/lisp/emacs-lisp/loaddefs-gen.el @@ -42,6 +42,8 @@ (require 'radix-tree) (require 'lisp-mnt) (require 'generate-lisp-file) +(require 'cl-lib) +(require 'cl-extra) (defvar autoload-compute-prefixes t "If non-nil, autoload will add code to register the prefixes used in a file. diff --git a/src/Makefile.in b/src/Makefile.in index d867b53797b..3524394f7d9 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1004,7 +1004,8 @@ ../native-lisp: endif ifneq ($(XCONFIGURE),android) -$(lispsource)/loaddefs.el: | bootstrap-emacs$(EXEEXT) $(bootstrap_pdmp) +$(lispsource)/loaddefs.el: $(lispsource)/international/charprop.el | \ + bootstrap-emacs$(EXEEXT) $(bootstrap_pdmp) $(MAKE) -C ../lisp autoloads EMACS="$(bootstrap_exe)" endif -- 2.51.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 04 03:13:23 2025 Received: (at 79353) by debbugs.gnu.org; 4 Sep 2025 07:13:23 +0000 Received: from localhost ([127.0.0.1]:44971 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uu49q-0000ph-Gn for submit@debbugs.gnu.org; Thu, 04 Sep 2025 03:13:23 -0400 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]:49625) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uu49n-0000pG-01 for 79353@debbugs.gnu.org; Thu, 04 Sep 2025 03:13:20 -0400 Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-b0473327e70so114027966b.3 for <79353@debbugs.gnu.org>; Thu, 04 Sep 2025 00:13:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756969992; x=1757574792; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CSqL8Cn3INkpHISByBy9emDD6oD7MfHKZj5RJ2OtRU8=; b=nR6AwKebZxJM7mLLrZ5e5tWKmI8nrUi/7xIcNcHJV6rcCBO45s7fhissaS63uFpKQR 9IvQJ1Pems8bky/NsuuNLrTliG9iwtdWpE/dR8oU2gDeoZ+ogS56u7eWgZZ2MlF2YwQh KbXRSHMIC1A04ZHAvd11C1H1gglW1gNGe1NY6u9uc3WwBkhlZWueu14ahz0Q3I89DbMG 5mt5xMWEO5lTSGqDahloXUTWa+3Zt9wu39EHLyNMuCIH3hw01zg8AzW4wx9lAm6vncxj 3MgQUdwkKKn8JXb1INsb6FYcWCuJ4fqNwr3/sOsy88V3FNZNzLwJeUdwJxsPak3KDR5C ZFew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756969992; x=1757574792; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CSqL8Cn3INkpHISByBy9emDD6oD7MfHKZj5RJ2OtRU8=; b=XidTaGAEKN5JnfgajvBkbk6oaJggAgJ1x0ur3wbIMp8p9+aeEJ6uJRgD2qyutckjt0 ZriFxf2FxuX/ohGDP05whZJx/6PHKLppbcYFBl5hpB6W2vq5g6iHigekOrSFwQdCp+bI wecS+7EgD9xXL6WtS9/9tUw2PdXDla3yVY49kYsmX5Xyf2BCtQ5G2+UioFQQZcyM0Z8S qEQj9jF79WgW4wSJt32sPdCt5LN9TO+YrxAlN4++1xvLHrnH1ueaJKTTL3CdjTeWabg0 5dAE8FSL6JwMqwvqR0LejQAvUdSrhSLko2wWCuwZUyknOMlEkHGnLFHibz446Mf/kbJT 6oJA== X-Forwarded-Encrypted: i=1; AJvYcCXpLpYmCWagxwNWa5mhvUMrxOLHvWPPSgO8VxYfFjaUhCiGw6inxOt3CUyL5GppKLN1sAViLw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxPpvod8PQpg/7yc5q9lmiKrQ/Ay8hZcRsju8oZQXJzcuVc93cN AdZHNsOwMCDdTDZIqYWDDRlGxmcad+ongBRXIMWSwuh+ZFcAQ+1QY8pN/x8GEA== X-Gm-Gg: ASbGncs47xPtYYERcCAd62tAUll7ckuLx8HXDOqftY74ReM/nv6CraTfby7kpxH/zYm ukWCWf9A4obiPtfDvpU/dhrPA/RO2Td2WZCfME1K8CphBsJv2NQEKb+HFqFpC310IWuC/7Ojcvb nzWr4lMBHA2kRWZ9b6rwKupoboM0X3d9qTLLJ7DbBCK/XweCnN6/BOGPpIdTDD2x+4WAth3//F5 d/cqZ9UK9NqegHMo9Ki0FfOL+4MUrqzyqs6Os7qoOVIT1hwhTGEnqWSrTKhSDZ3WBqCohK9wTnQ sYvED3qR3YQfuEAjlTlBLwyQRtie1N8dYc1GW54mE0h8joBzjafy3CkZXTKWHrSi8L08noQlDTk 8+V9cLYr2EgKLu40o1vBTwxvRVRVCBynfXRX9YvpdToBnG+YSDSTwtJMBBaUKDgFn0xIt1oT2KT WeCz3VfIv0wlLRCI0GigYmISzuBg== X-Google-Smtp-Source: AGHT+IHeluOsscQvXQ/vaC9SLFfSClhjQq9vwL4zrA4VykgnyUecX4H5sXA+dSxz7i5E9KAUOt/1sg== X-Received: by 2002:a17:907:2d23:b0:afe:bbeb:1f53 with SMTP id a640c23a62f3a-b01d97544b9mr1791548866b.42.1756969992083; Thu, 04 Sep 2025 00:13:12 -0700 (PDT) Received: from pro2 (p200300e0b706b30070f6135e4b81aba8.dip0.t-ipconnect.de. [2003:e0:b706:b300:70f6:135e:4b81:aba8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b009ae4f2ddsm1314207566b.82.2025.09.04.00.13.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Sep 2025 00:13:11 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: Stefan Monnier Subject: Re: bug#79353: 31.0.50; Eager macro expansion errors when building master In-Reply-To: References: <93C62C5D-6220-49AB-B157-2F49290ED6C0@gmail.com> <81E3DB88-482A-4500-AB60-B3C26D4B0EB9@gmail.com> <788EB735-7932-4F4C-BB57-C2511FAC6CE6@gmail.com> <03ABBE01-8D21-45BA-A8B6-6D8574AB21FB@gmail.com> <87349362r7.fsf@gmx.de> Date: Thu, 04 Sep 2025 09:13:10 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79353 Cc: Po Lu , 79353@debbugs.gnu.org, Michael Albinus , JD Smith 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.0 (-) Gerd M=C3=B6llmann writes: > Stefan Monnier writes: > >>> It currently doesn't function due to the load error. We could of course >>> just catch and not report load errors. But they do provide insight into >>> early-loading issues that may merit correction. And this "silent appro= ach" >> >> Yes, we should address the warning rather than mute all those warnings. >> >>> I do think a real question could be asked: how early should it be possi= ble >>> to load a valid lisp file? >> >> That one's easy: the whole of `loadup.el` is made of a delicate >> ordering, so it's only after those files have been loaded that you're in >> safe territory. >> >> So, I guess this suggests we should build the \N{...} table before we >> build the `loaddefs.el` and that should be doable without any new >> bootstrap issue since we have `ldefs-boot.el` to solve that dependency. > > Put some sturdy footwear on for the Makefile shrubbery, and came up with > the attached patch. It's for my Emacs only; I have no way of testing > this with all the other platforms, and all the ways Emacs can be built. > And I'm not sure that you would want the loaddefs-gen change either. And > blahblah :-). Forgot something: IMHO, the load in loaddefs-gen should not be in a condition-case. The build should fail with a backtrace.