Received: (at 61071) by debbugs.gnu.org; 11 Jan 2024 03:44:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 10 22:44:40 2024 Received: from localhost ([127.0.0.1]:43653 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rNlzk-00054z-CH for submit <at> debbugs.gnu.org; Wed, 10 Jan 2024 22:44:40 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:3520) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1rNlzi-00054j-Ib for 61071 <at> debbugs.gnu.org; Wed, 10 Jan 2024 22:44:38 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 09B6B443056; Wed, 10 Jan 2024 22:44:34 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1704944672; bh=Mz9eE3x/vJSnXEm3k7J+LX43ozU1EYYeFtEjOSArX78=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=DfCUoOEQjKVKxW2AfslyQWgfsqv5p8dFc8VG4epyxRO4pm6TfP7pq7yTcIR8LWD2G h1KMry+yvlO69n5xvFglPISTEc9ZD70gFq0oAAO2xIxfLoCNJp1MlqiEDdinBsQYuf N6IOo+Wcp/Ls/3KA6A7bNwjPbyZhg6eVktxNn8urPJFzKTCEgQsF2N7dxhniG88GuI frXtYmrZ6bNHHaAf3UNlYTXg09ZIYGQDbuzrRzTFSBG91UHRcXkwSOn8IXjeMbbUVT 6MBPIaJBL2dql0fppl4eEo9V2gUoCIYxbBD+ePavNusckYdhtyYt+qRZGpWr9dBUeN pXWaVIsTE4o1w== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 9F61F443046; Wed, 10 Jan 2024 22:44:32 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 6E3C812046C; Wed, 10 Jan 2024 22:44:32 -0500 (EST) From: Stefan Monnier <monnier@HIDDEN> To: Stefan Kangas <stefankangas@HIDDEN> Subject: Re: bug#61071: New features: VC timemachine and BackupOnSave to RCS In-Reply-To: <CADwFkmmnAn3kuCS+RbwWE0KOff6rO2xdrODnD_nZybw_RoKnvA@HIDDEN> (Stefan Kangas's message of "Wed, 10 Jan 2024 14:42:11 -0800") Message-ID: <jwv4jfksfep.fsf-monnier+emacs@HIDDEN> References: <CAJnXXoiJA971Qx4dfERLG9fjdVxWZAo7PdFRm0qhMO7rbsYZEg@HIDDEN> <jwvmt5j7v04.fsf-monnier+emacs@HIDDEN> <CAJnXXognW+mb-8q_TxHr-UUaroUnQjXhikW0nX6N6pPi_sTU7Q@HIDDEN> <CADwFkmmnAn3kuCS+RbwWE0KOff6rO2xdrODnD_nZybw_RoKnvA@HIDDEN> Date: Wed, 10 Jan 2024 22:44:31 -0500 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.074 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 61071 Cc: 61071 <at> debbugs.gnu.org, John Yates <john@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > You need commit access to push a scratch branch. Do you have that? > Perhaps you could send it as a patch if you can't get pushing to work? You can also push it to some other public repository. Stefan
bug-gnu-emacs@HIDDEN
:bug#61071
; Package emacs
.
Full text available.Received: (at 61071) by debbugs.gnu.org; 10 Jan 2024 22:42:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 10 17:42:19 2024 Received: from localhost ([127.0.0.1]:43504 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rNhH8-0002cA-P7 for submit <at> debbugs.gnu.org; Wed, 10 Jan 2024 17:42:19 -0500 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]:44515) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1rNhH6-0002bw-NC for 61071 <at> debbugs.gnu.org; Wed, 10 Jan 2024 17:42:17 -0500 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-50e7b273352so4901881e87.1 for <61071 <at> debbugs.gnu.org>; Wed, 10 Jan 2024 14:42:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704926532; x=1705531332; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=cyMiOW7yW9W0noYJldisT4DtoIwm6jS5bnyVfIi9DIs=; b=jRMWfUH1q8NdRjEMjrX+TIFp3MvqU/X3uM7ypPgebUr23BEURvctjKiS+6wStt/DRM tzT4z5iGuPsk2SmKs29Qm1MwUGlXBB/TJrpIu0Q3pe18EUv6SFUG8D+OCD2ehQZ1+6vE VvDRqhnWYCftjZzrNa8LqX0X89oaTcssWiwkJwmYKlmfwVFWzQgiQj87H1ltzACKaExu hLTNBzX+5SnOYKO/Zyo82qCb4lH1UCcOkSIh63lHlTsou8cw1V3EybbFw6ElRcLSdEEn D9GfU6B56bhOPS89I8PNnqY4zVjkid19Gbun65M9+uxeOM5ZVZwKFM/CgeyGINerZ4Dg 9Kqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704926532; x=1705531332; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cyMiOW7yW9W0noYJldisT4DtoIwm6jS5bnyVfIi9DIs=; b=poDo2tM+c2YvrH8v65Ws+iF6h2a7E0KhX/7TxRXP7lk6mEXGD6Rd6zidhwYk4j05vC ZfrX9xwpS1FSSVyrFglxPYwPQ7MnJ54yKjR/wuAUztrqetaVGUFt1j0TVcw9sp6knf7y 3zt9R4nh6QnKWvNnXFhMJZdvQC//KDGY3/qWAM5dP24mUwwme3fQeC3aQ45sJqCosX/i cc6a5SpY12FJrK/EeOFStiY6bEcTR0gQ+1V6UQwX0uIjCWW0erJlskCTRp3pWCr0kKhh ZSrTT4wwZpkC9EXnUISr1ead1xnbgKsK+mSyzCBBK5G+ZKypoBY4Q9Gf31gbV+GNyIoj xTpw== X-Gm-Message-State: AOJu0YwmJAFPw9uM0rr5TerPllwfVuZov2Q+EoBruPAVRESOvCno5+RR QqOw/y/+aGCjInf94unGSm6kowZrUaZ8R16XCl7bQgdPhRRSBQ== X-Google-Smtp-Source: AGHT+IGop3jP9qt78ajZpMEOwIK92498GJ68xlaGe2vgspl7QPouzFOiRKZVfOTZaXGmf0jKxmhkNVV5ENxOapED0VE= X-Received: by 2002:ac2:42c4:0:b0:50e:769b:7165 with SMTP id n4-20020ac242c4000000b0050e769b7165mr61138lfl.57.1704926531643; Wed, 10 Jan 2024 14:42:11 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 10 Jan 2024 14:42:11 -0800 From: Stefan Kangas <stefankangas@HIDDEN> In-Reply-To: <CAJnXXognW+mb-8q_TxHr-UUaroUnQjXhikW0nX6N6pPi_sTU7Q@HIDDEN> (John Yates's message of "Mon, 11 Sep 2023 09:04:34 -0400") References: <CAJnXXoiJA971Qx4dfERLG9fjdVxWZAo7PdFRm0qhMO7rbsYZEg@HIDDEN> <jwvmt5j7v04.fsf-monnier+emacs@HIDDEN> <CAJnXXognW+mb-8q_TxHr-UUaroUnQjXhikW0nX6N6pPi_sTU7Q@HIDDEN> MIME-Version: 1.0 Date: Wed, 10 Jan 2024 14:42:11 -0800 Message-ID: <CADwFkmmnAn3kuCS+RbwWE0KOff6rO2xdrODnD_nZybw_RoKnvA@HIDDEN> Subject: Re: bug#61071: New features: VC timemachine and BackupOnSave to RCS To: John Yates <john@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 61071 Cc: 61071 <at> debbugs.gnu.org, Stefan Monnier <monnier@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) John Yates <john@HIDDEN> writes: > Stefan Kangas, > > Personal and family issues have arisen that make me quite unsure of > when I will be able to return to this activity. > > I did address just about all of Stefan Monnier's feedback (see > appended, never sent reply below). > > Currently the code is on a scratch/backup-on-save-to-rcs branch in my > local repository. I tried unsuccessfully to push it to Savannah: > > | jyates@envy:~/repos/emacs.sv > | $ git push -u origin scratch/backup-on-save-to-rcs > | fatal: remote error: access denied or repository not exported: /emacs.git > > I was under the impression that no special permissions are needed to > push a scratch branch. Am I doing something wrong? Apologies for the late reply here. You need commit access to push a scratch branch. Do you have that? Perhaps you could send it as a patch if you can't get pushing to work? > In my testing, the code works nicely. My current sense of things that > could be improved are: > - Finding the proper commit in a series whose only metadata is the > commit timestamp is sub-optimal. > - It might be nice to have some kind of cron-based clean-up or commit squashing
bug-gnu-emacs@HIDDEN
:bug#61071
; Package emacs
.
Full text available.Received: (at 61071) by debbugs.gnu.org; 11 Sep 2023 13:05:02 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 11 09:05:02 2023 Received: from localhost ([127.0.0.1]:52335 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qfgb6-0004B8-Sz for submit <at> debbugs.gnu.org; Mon, 11 Sep 2023 09:05:01 -0400 Received: from mail-ej1-f47.google.com ([209.85.218.47]:42460) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <john.yates.sheets@HIDDEN>) id 1qfgb3-0004At-H8 for 61071 <at> debbugs.gnu.org; Mon, 11 Sep 2023 09:04:59 -0400 Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-99c93638322so946949966b.1 for <61071 <at> debbugs.gnu.org>; Mon, 11 Sep 2023 06:04:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694437487; x=1695042287; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rL5UXoZBXy1awwagyV0gJxR0IvBQPzaEYx9uV+Ri8ts=; b=LLgJsXgbbQ3imR4ZGUv7riAaNWrxH6F8DvTfBaTCMCH/AzLQQ8RRwTlYmrvm124vfE 3a1GEp3KJb+LD+9CT0GvZX2i/hPKBzdtSoFEsAqdXwWdq7hsR/6FqYzzaWzj5emsBR/l UxvwDTE3Fvx9RT+n7AZ4gzqWxI6cw0NF6e/cuFQDbCQkqRT4W/6vKEGVck0fV8txFmPh bptc8UpFaTCmEokdM06ZtyDusoBhj0SPBc5EvwcWLCVsBI6t79CAYFGZ6ot3lO4u5wF5 pTDoXRmxgden+LWfcn3VJypd1+Z6cmSg1xyjT9vV5/ZzfjVe85qkN0a6Y9Syz0Ejhpuc D9Wg== X-Gm-Message-State: AOJu0YwxtFMOevxS8hGAoarmblgp9dlnPzz5DlmYi2+A5/1Pl6hFojEp wg7C9Xd2AfpMJu3T1IfF03Oi/obY1E/Q/JFn9s4B8NlUALQ= X-Google-Smtp-Source: AGHT+IF3D5OlG/JuEd7JgbFPSs83SkH93n8KZlDP04WYxzsEqFn16dHikS/Cj1tqK/Du4RZ9EbLNFYwE0QvEVm63S2Q= X-Received: by 2002:a17:906:5a63:b0:9a5:f038:a4c1 with SMTP id my35-20020a1709065a6300b009a5f038a4c1mr11935331ejc.26.1694437487011; Mon, 11 Sep 2023 06:04:47 -0700 (PDT) MIME-Version: 1.0 References: <CAJnXXoiJA971Qx4dfERLG9fjdVxWZAo7PdFRm0qhMO7rbsYZEg@HIDDEN> <jwvmt5j7v04.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvmt5j7v04.fsf-monnier+emacs@HIDDEN> From: John Yates <john@HIDDEN> Date: Mon, 11 Sep 2023 09:04:34 -0400 Message-ID: <CAJnXXognW+mb-8q_TxHr-UUaroUnQjXhikW0nX6N6pPi_sTU7Q@HIDDEN> Subject: Re: bug#61071: New features: VC timemachine and BackupOnSave to RCS To: Stefan Kangas <stefankangas@HIDDEN>, Stefan Monnier <monnier@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 61071 Cc: 61071 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.5 (/) Stefan Kangas, Personal and family issues have arisen that make me quite unsure of when I will be able to return to this activity. I did address just about all of Stefan Monnier's feedback (see appended, never sent reply below). Currently the code is on a scratch/backup-on-save-to-rcs branch in my local repository. I tried unsuccessfully to push it to Savannah: | jyates@envy:~/repos/emacs.sv | $ git push -u origin scratch/backup-on-save-to-rcs | fatal: remote error: access denied or repository not exported: /emacs.git I was under the impression that no special permissions are needed to push a scratch branch. Am I doing something wrong? In my testing, the code works nicely. My current sense of things that could be improved are: - Finding the proper commit in a series whose only metadata is the commit timestamp is sub-optimal. - It might be nice to have some kind of cron-based clean-up or commit squashing /john ============================= Hi Stefan, Thank you so much for this clearly deep review. Responses inline. If nothing else, please see the places labeled 'QUESTION:'. Still TODO: - vc-find-revision: sort out whether PRETEND is really needed - vc-find-revision: try to reduce ignore-errors to ignore-error - vc-tm-revision-next: support prefix arg for count - vc-tm-revision-previous: support prefix arg for count - once vc-timemachine.el is available on master request an enh-ruby-mode enhancement is still needed (MELPA) /john On Sat, Feb 11, 2023 at 6:02 PM Stefan Monnier <monnier@HIDDEN> wrote: > > Sorry about the ridiculous delay. No harm. I too am regularly slow to follow up. To whit, look how long it has taken me to act fully on your review. (Life has a way of intervening, but that is only a partial excuse.) > > -(defcustom vc-find-revision-no-save nil > > - "If non-nil, `vc-find-revision' doesn't write the created buffer to file." > > +(defcustom vc-find-revision-cache nil > > + "When non-nil, `vc-find-revision' caches a local copy of returned revision." > > :type 'boolean > > - :version "27.1") > > + :version "30.1") > > This throws away `vc-find-revision-no-save` without first marking it > obsolete. I suggest you keep `vc-find-revision-no-save` (and maybe > provide an alias like `vc-find-revision-no-cache`). It shouldn't affect > the rest of your code much, and it will preserve compatibility with > users's settings. > > Whether the default value should stay nil or become t is a separate > question and in this respect I agree with your patch that the default > should be changed. It turned out easiest just to revert to the original -no-save option. So nothing to obsolete. But, I did change the default. > > +(defcustom vc-cache-root nil > > + "If non-nil, the root of a tree of cached revisions (no trailing '/'). > > + > > +When `vc-find-revision-cache' is non-nil, if `vc-cache-root' is nil then the > > +cached revision will be a sibling of its working file, otherwise the cached > > +revision will be saved to a mirror path beneath `vc-cache-root.' > > + > > +To use `vc-bos-mode', `vc-cache-root' must include a /RCS component." > > + :type 'string > > + :version "30.1") > > At this point in the patch sequence, `vc-bos-mode` doesn't exist yet. That last documentation line now gets added in the vc-bos patch. > > +(defvar-local vc-tm--revision nil > > + "Convey a revision buffer's VCS specific unique revision id to VC-TM." ) > > +(put 'vc-tm--revision 'permanent-local t) > > What's "VC-TM"? The `vc-tm` prefix is not used anywhere else, so it'd > be better not to use it. How 'bout `vc--revbuf-revision` and just > document the info it holds rather than the intended use of that info > when the code was written? > Or otherwise, wait until the next patch to introduce this var. | (defvar-local vc--revbuf-revision nil | "Remember a revision buffer's VCS-specific unique revision." ) | (put 'vc--revbuf-revision 'permanent-local t) > > + (parent (or buffer (get-file-buffer file) (current-buffer))) > > + (revd-file (vc-version-backup-file-name file revision 'manual)) > > + (true-dir (file-name-directory file)) > > + (true-name (file-name-nondirectory file)) > > + (save-dir (concat vc-cache-root true-dir)) > > Please add a comment explaining why `expand-file-name` would not > be right. | ;; Use concat because true-dir and revd-file are already absolute. | ;; Here each is being mirrored beneath vc-mirror-root. | (save-dir (concat vc-mirror-root true-dir)) | (save-file (concat vc-mirror-root revd-file)) > > + (revd-name (file-name-nondirectory revd-file)) > > + (save-file (concat vc-cache-root revd-file)) > > + ;; Some hooks assume that buffer-file-name associates a buffer with > > + ;; a true file. This mapping is widely assumed to be one-to-one. > > + ;; To avoid running afoul of that assumption this fictitious path > > + ;; is expected to be unique (bug#39190). This path also has the > > The GNU convention is to call those things "file names" rather than > "paths", because "path" is only used to mean a list of directories, as > in `load-path`. Done. QUESTION: In code I see the identifier 'filename', but in documentation I see the phrase 'file name'. Is that a correct statement of the convention? > > + ;; virtue that it exhibits the same file type (extension) as FILE. > > + ;; This improves setting the buffers modes. > > + (pretend (concat true-dir "PRETEND/" true-name)) > > The old code just used `file` for `buffer-file-name` during > `set-auto-mode`. I believe it was safer. > Why do you need this "PRETEND/", it seems to be a change unrelated to > the rest of the patch. TODO: provide an answer > > + ;; Prep revbuf in case it is being reused. > > + (setq buffer-file-name nil) ; Cancel any prior file visitation > > + (setq vc-parent-buffer nil) > > + (setq vc-tm--revision nil) > > + (setq buffer-read-only nil) > > Why not set them directly to their intended value? Done. > > + ;; A cached file is viable IFF it is not writable. > > + ((and (file-exists-p save-file) (not (file-writable-p save-file))) > > + (insert-file-contents save-file t)) > > Rather than repeat what the code tests, the comment should explain why > (you think) it needs to be "not writable" to be viable. | ;; Do not trust an existing file to be an intact cached copy | ;; of the desired revision unless it is read-only. This is | ;; because, in spite of having the desired filename, it may | ;; have been corrupted subsequent to its creation. Since this | ;; function creates cached copies as read-only, some other agent | ;; would have had to have change the permissions and, most | ;; likely, changed the file's contents as well. > > + ;; Backend's output was read with 'no-conversions; do the same for write > > + (setq buffer-file-coding-system 'no-conversion) > > + (write-region nil nil save-file) > > Why `setq` rather than let-binding? Fixed. > Also, I can't see where in the new code you do the decoding which the > old code does with (decode-coding-inserted-region (point-min) > (point-max) file)? Thank you for pointing out this omission. My vc-find-revision function attempts to unify the behavior of the earlier vc-find-revision-no-save and vc-find-revision-save functions. Investigating the omission you identified has helped me to better understand the relationship between those two functions and the version that I have attempted to craft. Based on your many bits of feedback my function is now shorter and better commented. I hope that it is clearer, more idiomatic, and more nearly correct. > > + (set-file-modes save-file (logand (file-modes save-file) #o7555))) > > There can be circumstances where a file is always writable, no > matter how hard we try to use `set-file-modes`. Indeed. Now mentioned in a comment. > > diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el > > index 7689d5f879..1f45aa7e96 100644 > > --- a/lisp/vc/vc-git.el > > +++ b/lisp/vc/vc-git.el > > @@ -82,6 +82,9 @@ > > ;; - annotate-time () OK > > ;; - annotate-current-time () NOT NEEDED > > ;; - annotate-extract-revision-at-line () OK > > +;; TIMEMACHINE > > +;; * tm-revisions (file) > > +;; * tm-map-line (file from-revision from-line to-revision from-is-older) > > ;; TAG/BRANCH SYSTEM > > ;; - create-tag (dir name branchp) OK > > ;; - retrieve-tag (dir name update) OK > > Any specific reason you used `*` rather than `-`? > [ I have no objection to this choice, just curious. ] From vc.el's front matter: | ;; In the list of functions below, each identifier needs to be prepended | ;; with `vc-sys-'. Some of the functions are mandatory (marked with a | ;; `*'), others are optional (`-'). > > @@ -101,6 +104,8 @@ > > > > (require 'cl-lib) > > (require 'vc-dispatcher) > > +(require 'transient) > > +(require 'vc-timemachine) > > (eval-when-compile > > (require 'subr-x) ; for string-trim-right > > (require 'vc) > > Are these really indispensable here? > > `vc-git` will be loaded into many more sessions than those where > `transient` and `vc-timemachine` will be used, so it would be *much* > better if those packages could be loaded more lazily here. The unnecessary requires came in as part of refactoring git-timemachine. Both are now gone. Here are vc-git's current requires: | (require 'cl-lib) | (require 'vc-dispatcher) | (eval-when-compile | (require 'subr-x) ; for string-trim-right | (require 'vc) | (require 'vc-dir)) > > @@ -166,6 +171,12 @@ vc-git-program > > :version "24.1" > > :type 'string) > > > > +(defcustom vc-git-global-git-arguments > > + '("-c" "log.showSignature=false" "--no-pager") > > + "Common arguments for all git commands." > > + :type 'list > > + :group 'vc-timemachine) > > Why is this in the `vc-timemachine` group? > Why do we need to add those args to all the Git commands? This came from moving the renamed function vc-git-process-file and the renamed option vc-git-global-git-arguments out of git-timemachine and into vc-git. The vc-timemachine group was a vestige of that same refactoring. I have improved the naming and documentation: | (defcustom vc-git-global-git-process-file-arguments | '("-c" "log.showSignature=false" "--no-pager") | "Common arguments for all invocations of `vc-git--process-file'." | :type 'list) | (defun vc-git--process-file (&rest args) | "Run `process-file' with ARGS and `vc-git-global-git-process-file-arguments'." | (apply #'process-file vc-git-program nil t nil | (append vc-git-global-git-process-file-arguments args))) > > - (vc-git-command > > - buffer 0 > > - nil > > - "cat-file" "blob" (concat (if rev rev "HEAD") ":" fullname)))) > > + (ignore-errors > > + (vc-git-command > > + buffer 0 > > + nil > > + "cat-file" "blob" (concat (if rev rev "HEAD") ":" fullname))))) > > Please add a comment here explaining why we need `ignore-errors` (you > can probably just move the text you currently have in the commit > message: in many cases it's better to put those comments in the code > rather than in the commit message). Done. > Also, if you can use `ignore-error` instead, it would be better. TODO: determine actual error and switch to ignore-error > > + (setq new-date (vc-tm-format-date (match-string 2 line))) > > How important is it to use the `vc-tm-date-format`? > I'm not super happy about the current design in this regard. I think it > would make more sense to define `tm-revisions` as returning dates in the > "cheapest" format possible (the one that takes least effort), e.g. > as an ELisp time value (e.g. as returned by `date-to-time`) or as > "any format that `date-to-time` understands"? > Then the call to `vc-tm-date-format` can be moved to > `vc-timemachine.el`. Done, exactly as you suggested. Thanks. > > -(eval-when-compile (require 'cl-lib)) > > +(eval-when-compile > > + (require 'cl-lib)) > > Why? > [ It's likely a question of taste, so I' recommend not to touch it. > Of course, I noticed it because my taste prefers the current format > (because in `outline-minor-mode` the `require` is otherwise hidden > for no benefit). ] > > > @@ -41,6 +45,7 @@ > > (require 'cl-lib) > > (require 'vc)) > > (require 'log-view) > > +(require 'vc-timemachine) > > Same comment as for `vc-git`. These are now gone. Further, I have attempted to eliminate unnecessary requires in all files that I have touched. > > + (setq line (buffer-substring-no-properties (line-beginning-position) (line-end-position))) > > Please try very hard to always stay within 80 columns. Got it. Corrected all violations that I could find. > > +(defgroup vc-timemachine nil > > + "Time-machine functionality for VC backends." > > + :group 'vc > > + :version "30.1") > > + > > +(defcustom vc-tm-date-format > > + "%a %I:%M %p %Y-%m-%d" > > + "Revision creation date format (emphasis on easy date comparison)." > > + :type 'string > > + :group 'vc-timemachine > > + :version "30.1") > > The `:group` arg here is redundant (`defcustom` would use that group by > default here anyway). Same for the subsequent `defcustom`s and `defface`s. Fixed > > +(defvar-local vc--time-machine nil > > + "Cache a TM hint on various buffers.") > > +(put 'vc--time-machine 'permanent-local t) > > The docstring seems of very little as it stands. You could just as well > remove it (tho it'd be better to actually describe what this var should > hold, of course :-). Updated: | (defvar-local vc--tmbuf nil | "Bind a non-timemachine buffer to its tmbuf.") | (put 'vc--tmbuf 'permanent-local t) > > +(defvar-local tmbuf--abs-file nil > > + "Absolute path to file being traversed by this time-machine.") > > "path" => "file name". > > Also, please use the "vc-" prefix. Same for the other "tmbuf-" vars. Updated: | (defvar-local vc--tmbuf-file nil | "Version controlled file being traversed by this tmbuf.") | (put 'vc--tmbuf-file 'permanent-local t) | (defvar-local vc--tmbuf-backend nil | "The VC backend being used by this tmbuf") | (put 'vc--tmbuf-backend 'permanent-local t) | (defvar-local vc--tmbuf-branch-index nil | "Zero-base index into vc--tmbuf-branch-revisions.") | (put 'vc--tmbuf-branch-index 'permanent-local t) | (defvar-local vc--tmbuf-branch-revisions nil | "When non-nil, a vector of revision-info lists.") | (put 'vc--tmbuf-branch-revisions 'permanent-local t) > > +(defvar-local tmbuf--branch-index nil > > + "Zero-base index into tmbuf--branch-revisions.") > > +(put 'tmbuf--branch-revisions 'permanent-local t) > > +(defvar-local tmbuf--branch-revisions nil > > + "When non-nil, a vector of revision-info lists.") > > +(put 'tmbuf--branch-revisions 'permanent-local t) > > You make `tmbuf--branch-revisions` permanent twice (the other should > probably be for `tmbuf--branch-index`, right?). Fixed. See immediately preceding quoted source. > > +(defvar-local tmbuf--source-buffer nil > > + "A non-time-machine buffer for which this time-machine was created.") > > +(put 'tmbuf--source-buffer 'permanent-local t) > > Any reason we can't use `vc-parent-buffer`? Ultimately, tmbuf--source-buffer was unused. Now gone. > > +(defun vc-tm--time-machine () > > + "Return a valid time-machine for the current buffer." > > Indicate how it's returned. I.e. either by changing current-buffer, or > by returning a buffer object (in which case it should *not* change > current-buffer). Done. | "Return a valid tmbuf for the current buffer. | | A tmbuf (timemachine buffer) has a properly filled-out set of vc--tmbuf* | local variables. If the current buffer is already a valid tmbuf then | just return that buffer. Otherwise create a revbuf for the current buffer's | file (or, if the current buffer is an indirect buffer, then for the base | buffer's file) and set its vc--tmbuf* data. Most importantly, set | vc--tmbuf-branch-revisions to an ordered vector of revision information | lists for the revisions on the work file's branch." > > + (when vc-tm-echo-area > > + (vc-tm--show-echo-area-details new-revision-info)))) > > + (vc-tm--erm-workaround)))) > > Please avoid this `vc-tm--erm-workaround` here. Better add a "generic > hook" Done. > i.e. a hook whose meaning makes sense independently from this ERM > problem), and then arrange for some code somewhere (probably best if > it's in `enh-ruby-mode`) to add a function to this hook. > > > +(declare-function erm-reset-buffer "ext:enh-ruby-mode") > > + > > +(defun vc-tm--erm-workaround () > > + "Workaround for enhanced ruby mode not detecting revision change." > > + (when (eq major-mode 'enh-ruby-mode) > > + (ignore-errors (erm-reset-buffer)))) > > Prefer `derived-mode-p`. Add a comment explaining the problem or > pointing to info about it. > Arrange to try and make this unnecessary in the future (i.e. open a bug > report with the enh-ruby-mode guys? Or fix the source of the bug if > it's elsewhere in Emacs itself?). This is a bit hard to do. enh-ruby-mode is only available from MELPA. And opening a bug mentioning an available hook in a package that is not yet available feels strange. TODO: Once vc-timemachine is available on master post an enhancement request to enh-ruby-mode. > > +;; - tm-map-line (rel-file from-revision from-line to-revision from-is-older) > > +;; > > +;; Return TO-REVISION's line corresponding to FROM-REVISION's FROM-LINE. > > +;; FROM-REVISION and TO-REVISION are guaranteed distinct. FROM-IS-OLDER > > +;; indicates relative temporal ordering of FROM-REVISION and TO-REVISION > > +;; on the branch. > > Please clarify that you're talking about line *numbers* (I thought at > first you were talking about some completely different notion of lines, > such as "product line" or "history line"). How is this? | ;; Return a TO-REVISION line number corresponding to FROM-REVISION's | ;; FROM-LINE. FROM-REVISION and TO-REVISION are guaranteed distinct. | ;; FROM-IS-OLDER indicates relative temporal ordering of FROM-REVISION | ;; and TO-REVISION on the branch. > OK, I'll stop here for now. That was a great review! I know that it took concentration and effort. Thank you! /john
bug-gnu-emacs@HIDDEN
:bug#61071
; Package emacs
.
Full text available.Received: (at 61071) by debbugs.gnu.org; 4 Sep 2023 19:48:08 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 04 15:48:08 2023 Received: from localhost ([127.0.0.1]:52656 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qdFYN-0006sR-Sy for submit <at> debbugs.gnu.org; Mon, 04 Sep 2023 15:48:08 -0400 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]:61523) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1qdFYL-0006r8-1T for 61071 <at> debbugs.gnu.org; Mon, 04 Sep 2023 15:48:06 -0400 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2b9c907bc68so27150651fa.2 for <61071 <at> debbugs.gnu.org>; Mon, 04 Sep 2023 12:48:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693856879; x=1694461679; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=afm+c8GYH3jjrNutsgaPjb2RkTJxBngGF9m7sbUNqxc=; b=DRMANifopK3fIEl3M2k/qhQDAqjDsxNsD/EsMgRmt0mepnf7o65rwbT1SayYIK+4VR 4OpKXRjcyAPtB56mkAEvFYYeW2McD4mox89Z3vp576n+znIzdn4V/Dp/+3OliE1d6/0L r/HEbJ0QtV53xLnrAslNgwzMZUeM2tESW25vkfyks1eT1JBA6GyjF/JByFgmdfWyT5DT 9gw2LqMMwRCnfs+G/0gptbo4YcwuRczgboa7cblYhDL6neJaoXD4HIAqrgoJNrJY3VwZ tYLDYx+l+JfMYHKULGwFMMwAzq3Br2jgfwtsrHO7cbpRkQBfxCHue6lhkVX10v1MVVH/ ZRvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693856879; x=1694461679; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=afm+c8GYH3jjrNutsgaPjb2RkTJxBngGF9m7sbUNqxc=; b=CwEdKt2JmXuTULgnHhyX28IO+2spAMpc4yL7S6y/al7swCIqIzklSAMgbZX63hxbj3 tgW/87gmg0vTrMedwIuoNR6/HDAXqKUwNrewymJYKvdeJ0FVZ+YmWsjTdMfOYjVlQhVM 5o+qbTXZHnG29QCGBATFKqMEI3P/ym9a84rtnQBuMf/N0tL4hPv5vnu8IdPBMEh1PT3E cb/uVsunrjagQ9RyURakxbNVYY/iEzPTIIg+Mh5pQTfUcKbGoA13YcnyVksqNhwggz7a Z3WLPvqrWV0Di5/aEqIYZ9mpnDKXr3aTphzHsf1HFD8w/CwyIliXOnEj77fsutVAMYtp w0Lw== X-Gm-Message-State: AOJu0YzR6xxr2Y1HgQ5yF98eoK1+EdDhaGPS0/xb8wv7PGhatr/IL+Oq vfy6wG74Lx1sGJEkKiWep7MTCnaJ27oS8mSTw34= X-Google-Smtp-Source: AGHT+IH0NIvrw884/OCuj9twBhcv/QDYBf4NpsBd3YwNnoyBhnTzxWGnzTs2n6ypMeqYylg7utQ+vR0b87WcNK8HTOg= X-Received: by 2002:a2e:9d10:0:b0:2b9:4413:864e with SMTP id t16-20020a2e9d10000000b002b94413864emr7444868lji.53.1693856878982; Mon, 04 Sep 2023 12:47:58 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Mon, 4 Sep 2023 12:47:58 -0700 From: stefankangas@HIDDEN In-Reply-To: <jwvmt5j7v04.fsf-monnier+emacs@HIDDEN> (Stefan Monnier's message of "Sat, 11 Feb 2023 18:02:22 -0500") References: <CAJnXXoiJA971Qx4dfERLG9fjdVxWZAo7PdFRm0qhMO7rbsYZEg@HIDDEN> <jwvmt5j7v04.fsf-monnier+emacs@HIDDEN> MIME-Version: 1.0 Date: Mon, 4 Sep 2023 12:47:58 -0700 Message-ID: <CADwFkm=jnZrkV43xRug1q7H3V+MFVPHzqu8=UP+er1XV4XbKZw@HIDDEN> Subject: Re: bug#61071: New features: VC timemachine and BackupOnSave to RCS To: Stefan Monnier <monnier@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 61071 Cc: 61071 <at> debbugs.gnu.org, John Yates <john@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Stefan Monnier <monnier@HIDDEN> writes: > Sorry about the ridiculous delay. > > The general functionality sounds great to me. > Some comments below: John, did you make any progress with this patch? Thanks in advance.
bug-gnu-emacs@HIDDEN
:bug#61071
; Package emacs
.
Full text available.Stefan Kangas <stefankangas@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Received: (at 61071) by debbugs.gnu.org; 11 Feb 2023 23:02:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 11 18:02:38 2023 Received: from localhost ([127.0.0.1]:43510 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1pQytC-0006tM-1J for submit <at> debbugs.gnu.org; Sat, 11 Feb 2023 18:02:38 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:21265) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1pQyt8-0006t8-0L for 61071 <at> debbugs.gnu.org; Sat, 11 Feb 2023 18:02:36 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 5437F44215C; Sat, 11 Feb 2023 18:02:28 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 362A6442160; Sat, 11 Feb 2023 18:02:25 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1676156545; bh=j6qP0qk1jXmCNezHcdJLPLz8gQewd8iI45YVz4ZAoJ0=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=odrA8ZFY+u0Dvf9mHC1L0VXaZBdOWWucilsLfpNP9uGbBoXTwurpgFa7G07Zw+YB6 qM5AsV3je0FfuxmAKICsbdzwuZUb7jheesCiYYecShPOQrdeeqNoef574VNBHdIFB2 cZ7AnJ0dNBQRiPgmIiHcyjhOT42kuVfvLt+xF3CmJEeZJTMYn3B4Z4iFPwk9wvwbnn VEDVWuN1WMDr82egdlI9F8NjtqPpIERPh/nTeKRWBUvMT4hKL1ZERE8S0lzNxaIxAT ogCctqhxtKEtSWcefLcLsDoV9g5sakreKqJTFmALhwKYBdAUYyQEAdEjw05f6bgBmx T/frDVeixAcDQ== Received: from ceviche (unknown [45.44.229.252]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 05BF0123190; Sat, 11 Feb 2023 18:02:24 -0500 (EST) From: Stefan Monnier <monnier@HIDDEN> To: John Yates <john@HIDDEN> Subject: Re: bug#61071: New features: VC timemachine and BackupOnSave to RCS In-Reply-To: <CAJnXXoiJA971Qx4dfERLG9fjdVxWZAo7PdFRm0qhMO7rbsYZEg@HIDDEN> (John Yates's message of "Wed, 25 Jan 2023 22:24:30 -0500") Message-ID: <jwvmt5j7v04.fsf-monnier+emacs@HIDDEN> References: <CAJnXXoiJA971Qx4dfERLG9fjdVxWZAo7PdFRm0qhMO7rbsYZEg@HIDDEN> Date: Sat, 11 Feb 2023 18:02:22 -0500 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.500 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 X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 61071 Cc: 61071 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Sorry about the ridiculous delay. The general functionality sounds great to me. Some comments below: > -(defcustom vc-find-revision-no-save nil > - "If non-nil, `vc-find-revision' doesn't write the created buffer to file." > +(defcustom vc-find-revision-cache nil > + "When non-nil, `vc-find-revision' caches a local copy of returned revision." > :type 'boolean > - :version "27.1") > + :version "30.1") This throws away `vc-find-revision-no-save` without first marking it obsolete. I suggest you keep `vc-find-revision-no-save` (and maybe provide an alias like `vc-find-revision-no-cache`). It shouldn't affect the rest of your code much, and it will preserve compatibility with users's settings. Whether the default value should stay nil or become t is a separate question and in this respect I agree with your patch that the default should be changed. > +(defcustom vc-cache-root nil > + "If non-nil, the root of a tree of cached revisions (no trailing '/'). > + > +When `vc-find-revision-cache' is non-nil, if `vc-cache-root' is nil then the > +cached revision will be a sibling of its working file, otherwise the cached > +revision will be saved to a mirror path beneath `vc-cache-root.' > + > +To use `vc-bos-mode', `vc-cache-root' must include a /RCS component." > + :type 'string > + :version "30.1") At this point in the patch sequence, `vc-bos-mode` doesn't exist yet. > +(defvar-local vc-tm--revision nil > + "Convey a revision buffer's VCS specific unique revision id to VC-TM." ) > +(put 'vc-tm--revision 'permanent-local t) What's "VC-TM"? The `vc-tm` prefix is not used anywhere else, so it'd be better not to use it. How 'bout `vc--revbuf-revision` and just document the info it holds rather than the intended use of that info when the code was written? Or otherwise, wait until the next patch to introduce this var. > + (parent (or buffer (get-file-buffer file) (current-buffer))) > + (revd-file (vc-version-backup-file-name file revision 'manual)) > + (true-dir (file-name-directory file)) > + (true-name (file-name-nondirectory file)) > + (save-dir (concat vc-cache-root true-dir)) Please add a comment explaining why `expand-file-name` would not be right. > + (revd-name (file-name-nondirectory revd-file)) > + (save-file (concat vc-cache-root revd-file)) > + ;; Some hooks assume that buffer-file-name associates a buffer with > + ;; a true file. This mapping is widely assumed to be one-to-one. > + ;; To avoid running afoul of that assumption this fictitious path > + ;; is expected to be unique (bug#39190). This path also has the The GNU convention is to call those things "file names" rather than "paths", because "path" is only used to mean a list of directories, as in `load-path`. > + ;; virtue that it exhibits the same file type (extension) as FILE. > + ;; This improves setting the buffers modes. > + (pretend (concat true-dir "PRETNED/" true-name)) The old code just used `file` for `buffer-file-name` during `set-auto-mode`. I believe it was safer. Why do you need this "PRETNED/", it seems to be a change unrelated to the rest of the patch. > + ;; Prep revbuf in case it is being reused. > + (setq buffer-file-name nil) ; Cancel any prior file visitation > + (setq vc-parent-buffer nil) > + (setq vc-tm--revision nil) > + (setq buffer-read-only nil) Why not set them directly to their intended value? > + ;; A cached file is viable IFF it is not writable. > + ((and (file-exists-p save-file) (not (file-writable-p save-file))) > + (insert-file-contents save-file t)) Rather than repeat what the code tests, the comment should explain why (you think) it needs to be "not writable" to be viable. > + ;; Backend's output was read with 'no-conversions; do the same for write > + (setq buffer-file-coding-system 'no-conversion) > + (write-region nil nil save-file) Why `setq` rather than let-binding? Also, I can't see where in the new code you do the decoding which the old code does with (decode-coding-inserted-region (point-min) (point-max) file)? > + (set-file-modes save-file (logand (file-modes save-file) #o7555))) There can be circumstances where a file is always writable, no matter how hard we try to use `set-file-modes`. > diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el > index 7689d5f879..1f45aa7e96 100644 > --- a/lisp/vc/vc-git.el > +++ b/lisp/vc/vc-git.el > @@ -82,6 +82,9 @@ > ;; - annotate-time () OK > ;; - annotate-current-time () NOT NEEDED > ;; - annotate-extract-revision-at-line () OK > +;; TIMEMACHINE > +;; * tm-revisions (file) > +;; * tm-map-line (file from-revision from-line to-revision from-is-older) > ;; TAG/BRANCH SYSTEM > ;; - create-tag (dir name branchp) OK > ;; - retrieve-tag (dir name update) OK Any specific reason you used `*` rather than `-`? [ I have no objection to this choice, just curious. ] > @@ -101,6 +104,8 @@ > > (require 'cl-lib) > (require 'vc-dispatcher) > +(require 'transient) > +(require 'vc-timemachine) > (eval-when-compile > (require 'subr-x) ; for string-trim-right > (require 'vc) Are these really indispensable here? `vc-git` will be loaded into many more sessions than those where `transient` and `vc-timemachine` will be used, so it would be *much* better if those packages could be loaded more lazily here. > @@ -166,6 +171,12 @@ vc-git-program > :version "24.1" > :type 'string) > > +(defcustom vc-git-global-git-arguments > + '("-c" "log.showSignature=false" "--no-pager") > + "Common arguments for all git commands." > + :type 'list > + :group 'vc-timemachine) Why is this in the `vc-timemachine` group? Why do we need to add those args to all the Git commands? > - (vc-git-command > - buffer 0 > - nil > - "cat-file" "blob" (concat (if rev rev "HEAD") ":" fullname)))) > + (ignore-errors > + (vc-git-command > + buffer 0 > + nil > + "cat-file" "blob" (concat (if rev rev "HEAD") ":" fullname))))) Please add a comment here explaining why we need `ignore-errors` (you can probably just move the text you currently have in the commit message: in many cases it's better to put those comments in the code rather than in the commit message). Also, if you can use `ignore-error` instead, it would be better. > + (setq new-date (vc-tm-format-date (match-string 2 line))) How important is it to use the `vc-tm-date-format`? I'm not super happy about the current design in this regard. I think it would make more sense to define `tm-revisions` as returning dates in the "cheapest" format possible (the one that takes least effort), e.g. as an ELisp time value (e.g. as returned by `date-to-time`) or as "any format that `date-to-time` understands"? Then the call to `vc-tm-date-format` can be moved to `vc-timemachine.el`. > -(eval-when-compile (require 'cl-lib)) > +(eval-when-compile > + (require 'cl-lib)) Why? [ It's likely a question of taste, so I' recommend not to touch it. Of course, I noticed it because my taste prefers the current format (because in `outline-minor-mode` the `require` is otherwise hidden for no benefit). ] > @@ -41,6 +45,7 @@ > (require 'cl-lib) > (require 'vc)) > (require 'log-view) > +(require 'vc-timemachine) Same comment as for `vc-git`. > + (setq line (buffer-substring-no-properties (line-beginning-position) (line-end-position))) Please try very hard to always stay within 80 columns. > +(defgroup vc-timemachine nil > + "Time-machine functionality for VC backends." > + :group 'vc > + :version "30.1") > + > +(defcustom vc-tm-date-format > + "%a %I:%M %p %Y-%m-%d" > + "Revision creation date format (emphasis on easy date comparison)." > + :type 'string > + :group 'vc-timemachine > + :version "30.1") The `:group` arg here is redundant (`defcustom` would use that group by default here anyway). Same for the subsequent `defcustom`s and `defface`s. > +(defvar-local vc--time-machine nil > + "Cache a TM hint on various buffers.") > +(put 'vc--time-machine 'permanent-local t) The docstring seems of very little as it stands. You could just as well remove it (tho it'd be better to actually describe what this var should hold, of course :-). > +(defvar-local tmbuf--abs-file nil > + "Absolute path to file being traversed by this time-machine.") "path" => "file name". Also, please use the "vc-" prefix. Same for the other "tmbuf-" vars. > +(defvar-local tmbuf--branch-index nil > + "Zero-base index into tmbuf--branch-revisions.") > +(put 'tmbuf--branch-revisions 'permanent-local t) > +(defvar-local tmbuf--branch-revisions nil > + "When non-nil, a vector of revision-info lists.") > +(put 'tmbuf--branch-revisions 'permanent-local t) You make `tmbuf--branch-revisions` permanent twice (the other should probably be for `tmbuf--branch-index`, right?). > +(defvar-local tmbuf--source-buffer nil > + "A non-time-machine buffer for which this time-machine was created.") > +(put 'tmbuf--source-buffer 'permanent-local t) Any reason we can't use `vc-parent-buffer`? > +(defun vc-tm--time-machine () > + "Return a valid time-machine for the current buffer." Indicate how it's returned. I.e. either by changing current-buffer, or by returning a buffer object (in which case it should *not* change current-buffer). > + (when vc-tm-echo-area > + (vc-tm--show-echo-area-details new-revision-info)))) > + (vc-tm--erm-workaround)))) Please avoid this `vc-tm--erm-workaround` here. Better add a "generic hook" (i.e. a hook whose meaning makes sense independently from this ERM problem), and then arrange for some code somewhere (probably best if it's in `enh-ruby-mode`) to add a function to this hook. > +(declare-function erm-reset-buffer "ext:enh-ruby-mode") > + > +(defun vc-tm--erm-workaround () > + "Workaround for enhanced ruby mode not detecting revision change." > + (when (eq major-mode 'enh-ruby-mode) > + (ignore-errors (erm-reset-buffer)))) Prefer `derived-mode-p`. Add a comment explaining the problem or pointing to info about it. Arrange to try and make this unnecessary in the future (i.e. open a bug report with the enh-ruby-mode guys? Or fix the source of the bug if it's elsewhere in Emacs itself?). > +;; - tm-map-line (rel-file from-revision from-line to-revision from-is-older) > +;; > +;; Return TO-REVISION's line corresponding to FROM-REVISION's FROM-LINE. > +;; FROM-REVISION and TO-REVISION are guaranteed distinct. FROM-IS-OLDER > +;; indicates relative temporal ordering of FROM-REVISION and TO-REVISION > +;; on the branch. Please clarify that you're talking about line *numbers* (I thought at first you were talking about some completely different notion of lines, such as "product line" or "history line"). OK, I'll stop here for now. Stefan
bug-gnu-emacs@HIDDEN
:bug#61071
; Package emacs
.
Full text available.Received: (at submit) by debbugs.gnu.org; 26 Jan 2023 03:24:56 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 25 22:24:56 2023 Received: from localhost ([127.0.0.1]:60335 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1pKsse-0006pv-Tj for submit <at> debbugs.gnu.org; Wed, 25 Jan 2023 22:24:56 -0500 Received: from mail-ej1-f43.google.com ([209.85.218.43]:42835) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <john.yates.sheets@HIDDEN>) id 1pKssa-0006pe-SR for submit <at> debbugs.gnu.org; Wed, 25 Jan 2023 22:24:52 -0500 Received: by mail-ej1-f43.google.com with SMTP id bk15so1824263ejb.9 for <submit <at> debbugs.gnu.org>; Wed, 25 Jan 2023 19:24:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=TzziemSvsoD5HAEOtIB15zjj+Phh1rlig+yu4oASx0c=; b=FVD1zY5Y0LwuoWr8FOfRoYsXBCnbDO9Ygjfzd2mqS2dbNFukxt4wDx0VEw/SuVFHjC th0oDXDK5CL7G7MkNAU+ZA5sXTM1Kf56TsuVZbzJwzYz9vR5ZlyJSY9AIxqWIhhb14h0 nw5Xq6kgKyFpTMx7NNqEzBqtKgXNUes+jxXZUucBv84/sbDt+EIFAAM8gjr21yhbRpZD 5hhrzpy2UGlu/025YOMfB/0JhmEyltkzIFokDSAXadBaV6EWFmNSHdbjoFxYvhjWY8Ge Zf5XcIilTSVYVznEOnX6QCP/rZYs3mxhU6g7nhrWvodw8eFnIFhGpqy07kK1Vqu0HZe3 8/Zg== X-Gm-Message-State: AFqh2kr5LI19tM4V7f6a47Ktfq5YWai9PsXSxwHG3jBtFazBOoE/xEoa Go+l5DHs5eEaSSG/7etwcvyvvue0yl/O1f3WdjYFvMPoVBM= X-Google-Smtp-Source: AMrXdXsEWgskCiiPcgMHNzAauiRvEN+PUPSRKyIDZLA/qP19nb9DiXxlrG4qCSMV2cN6bmJQ0avrAS5nnznm8lzR1Ls= X-Received: by 2002:a17:906:1cc9:b0:85d:3987:fa88 with SMTP id i9-20020a1709061cc900b0085d3987fa88mr4180761ejh.51.1674703482481; Wed, 25 Jan 2023 19:24:42 -0800 (PST) MIME-Version: 1.0 From: John Yates <john@HIDDEN> Date: Wed, 25 Jan 2023 22:24:30 -0500 Message-ID: <CAJnXXoiJA971Qx4dfERLG9fjdVxWZAo7PdFRm0qhMO7rbsYZEg@HIDDEN> Subject: New features: VC timemachine and BackupOnSave to RCS To: submit <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="0000000000002ddb5005f3224a44" X-Spam-Score: 2.7 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Package: emacs Version: 30.0.50 Tags: patch Please see the cover letter. From ac181d9662e6fd2fd5215c8427c164ce412b550e Mon Sep 17 00:00:00 2001 From: "John S. Yates, Jr" <john@HIDDEN> Date: Sun, 15 Jan 2023 15:04:28 -0500 Subject: [PATCH 2/3] Introduce VC timemac [...] Content analysis details: (2.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (john.yates.sheets[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.218.43 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.218.43 listed in list.dnswl.org] 0.0 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom freemail headers are different 2.5 TO_NO_BRKTS_PCNT To: lacks brackets + percentage X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.8 (/) --0000000000002ddb5005f3224a44 Content-Type: text/plain; charset="UTF-8" Package: emacs Version: 30.0.50 Tags: patch Please see the cover letter. --0000000000002ddb5005f3224a44 Content-Type: text/x-patch; charset="UTF-8"; name="0002-Introduce-VC-timemachine-capability.patch" Content-Disposition: attachment; filename="0002-Introduce-VC-timemachine-capability.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ldciswcm1> X-Attachment-Id: f_ldciswcm1 RnJvbSBhYzE4MWQ5NjYyZTZmZDJmZDUyMTVjODQyN2MxNjRjZTQxMmI1NTBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSm9obiBTLiBZYXRlcywgSnIiIDxqb2huQHlhdGVzLXNoZWV0 cy5vcmc+CkRhdGU6IFN1biwgMTUgSmFuIDIwMjMgMTU6MDQ6MjggLTA1MDAKU3ViamVjdDogW1BB VENIIDIvM10gSW50cm9kdWNlIFZDIHRpbWVtYWNoaW5lIGNhcGFiaWxpdHkKTUlNRS1WZXJzaW9u OiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IDhiaXQKCkludHJvZHVjaW5nIHRpbWVtYWNoaW5lIGZ1bmN0aW9uYWxp dHkgaW50byB2YyB3YXMgZGlzY3Vzc2VkIGluIHRoaXMgdGhyZWFkOgoKICBodHRwczovL2xpc3Rz LmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMjItMTAvbXNnMDEyNzIuaHRtbAoK V2hlcmUgdGhlIHByZXZpb3VzIGNvbW1pdCBpbnRyb2R1Y2VkIHRoZSBjb25jZXB0IG9mIGEgcmV2 aXNpb24gYnVmZmVyIGJvdW5kCnRvIGEgdW5pcXVlIHJldmlzaW9uLCB0aGlzIGNvbW1pdCBpbnRy b2R1Y2VzIHRoZSBjb25jZXB0IG9mIGEgdGltZW1hY2hpbmUKYnVmZmVyLCBib3VuZCB0byB0aGUg bGluZWFyIHNlcXVlbmNlIG9mIHJldmlzaW9ucyBvbiB0aGUgYnJhbmNoIGZyb20gd2hpY2gKYSB3 b3JrIGZpbGUgd2FzIGNoZWNrZWQgb3V0LgoKYHZjLXRtLXJldmlzaW9uLWhlYWQgY3JlYXRlcycg YSB0aW1lbWFjaGluZSBidWZmZXIsIHdoaWNoIHRoZW4gYmVoYXZlcyBhcwphIGN1cnNvciBvdmVy IHRoZSBsaW5lYXIgc2VxdWVuY2Ugb2YgcmV2aXNpb25zIG9uIGEgYnJhbmNoLiAgVGhlIGJ1ZmZl ciBjYW4KYmUgcmVwb3NpdGlvbmVkIGFsb25nIHRoYXQgYnJhbmNoIHZpYToKCi0gYHZjLXRtLXJl dmlzaW9uLW5leHQnCiAgIlNob3cgd29yayBmaWxlJ3MgbmV4dCByZXZpc2lvbiBvbiBjaGVja2Vk LW91dCBicmFuY2guIgoKLSBgdmMtdG0tcmV2aXNpb24tcHJldmlvdXMnCiAgIlNob3cgd29yayBm aWxlJ3MgcHJldmlvdXMgcmV2aXNpb24gb24gY2hlY2tlZC1vdXQgYnJhbmNoLiIKCi0gYHZjLXRt LXJldmlzaW9uLW50aCcKICAiU2hvdyB3b3JrIGZpbGUncyBOJ3RoIG1vc3QgcmVjZW50IHJldmlz aW9uIG9uIGNoZWNrZWQtb3V0IGJyYW5jaAogICgxIGJlaW5nIEhFQUQpLiIKCi0gYHZjLXRtLXJl dmlzaW9uLWNvbXBsZXRlLXN1YmplY3QnCiAgIlNob3cgd29yayBmaWxlJ3MgcmV2aXNpb24gdmlh IHN1YmplY3QgY29tcGxldGlvbiBvbiBjaGVja2VkLW91dCBicmFuY2guIgoKQSB0aW1lbWFjaGlu ZSBidWZmZXIgaXMgcmVhZC1vbmx5IGFuZCBoYXMgYSBuaWwgYnVmZmVyLWZpbGUtbmFtZSAobWVh bmluZwp0aGF0IGl0IGlzIG5vdCB2aXNpdGluZyBhbnkgZmlsZSkuICBUaGUgcmF0aW9uYWxlIGlz IGV4YWN0bHkgdGhlIHNhbWUgYXMKZm9yIGEgcmV2aXNpb24gYnVmZmVyOiBhIHRpbWVtYWNoaW5l IGJ1ZmZlciBkaXNwbGF5cyBpbW11dGFibGUgaGlzdG9yeS4KClRvIHN1cHBvcnQgdGltZW1hY2hp bmUgZnVuY3Rpb25hbGl0eSBhIGJhY2tlbmQgbmVlZHMgdG8gc3VwcG9ydCB0aGUgbmV3CnRtLXJl dmlzaW9ucyB2YyBvcGVyYXRpb24uICBPcHRpb25hbGx5LCBpdCBtYXkgc3VwcG9ydCB0aGUgdG0t bWFwLWxpbmUKb3BlcmF0aW9uLiAgSW4gdGhpcyBjb21taXQgdmMtcmNzIHN1cHBvcnRzIG9ubHkg dG0tcmV2aXNpb25zIHdoaWxlIHZjLWdpdApzdXBwb3J0cyBib3RoIG9wZXJhdGlvbnMuCgpNeSBp bXBsZW1lbnRhdGlvbiBib3Jyb3dzIGRlc2lnbiBpZGVhcyBhbmQgY29kZSBmcm9tIFBldGVyIFN0 aWVybnN0csO2bSdzCm9yaWdpbmFsIGdpdC10aW1lbWFjaGluZS5lbC4gIEluIHJlYWxpdHksIG15 IGVmZm9ydCB3YXMgbGl0dGxlIG1vcmUgdGhhbiBhbgpleHRlbmRlZCByZWZhY3RvcmluZyBlZmZv cnQgdG8gZml0IGdpdC10aW1lbWFjaGluZSBpbnRvIHRoZSB2YyBmcmFtZXdvcmsuCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CgoqIGxpc3AvdmMvdmMtdGltZW1hY2hpbmUuZWwgKG5ldyBmaWxlKToKRGVy aXZlIGNvcmUgVkMgdGltZW1hY2hpbmUgZnVuY3Rpb25hbGl0eSBmcm9tIFBldGVyIFN0aWVybnN0 csO2bSdzIG9yaWdpbmFsCmdpdC10aW1lbWFjaGluZS5lbC4KKiBsaXNwL3ZjL3ZjLWhvb2tzLmVs ICh2Yy1wcmVmaXgtbWFwKToKQmluZCAiLCIgdG8gYHZjLXRtLXJldmlzaW9uLWhlYWQnLgoodmMt bWVudS1tYXApOgpBZGQgIlRpbWUgbWFjaGluZSBhdCBIRUFEIiBpbiBhIG5ldyBtZW51IHNlY3Rp b24uCiogbGlzcC92Yy92Yy1naXQuZWwgKHZjLWdpdC0tcHJvY2Vzcy1maWxlLCB2Yy1naXQtZ2xv YmFsLWdpdC1hcmd1bWVudHMpOgpBZGQgaGVscGVyIGZ1bmN0aW9uIGFuZCBpdHMgc3VwcG9ydGlu ZyBkZWZjdXN0b20uCih2Yy1naXQtZmluZC1yZXZpc2lvbik6CldyYXAgImdpdCBjYXQtZmlsZSBi bG9iIiBpbiBhbiBpZ25vcmUtZXJyb3JzIHRvIGltcHJvdmUgcm9idXN0bmVzcy4KQW4gZW5jb3Vu dGVyZWQgZmFpbHVyZSBtb2RlIGlzIGNob29zaW5nIGEgY29tbWl0IG9sZGVyIHRoYW4gdGhlIGZp bGUuCih2Yy1naXQtdG0tcmV2aXNpb25zLCB2Yy1naXQtdG0tbWFwLWxpbmUpOgpBZGQgZ2l0LXNw ZWNpZmljIGltcGxlbWVudGF0aW9ucyBvZiB2Yy10bSBiYWNrZW5kIGZ1bmN0aW9ucywgaGV3aW5n IGNsb3NlbHkKdG8gUGV0ZXIgU3RpZXJuc3Ryw7ZtJ3Mgb3JpZ2luYWwgY29kZS4KbGlzcC92Yy92 Yy1yY3MuZWwgKHZjLXJjcy10bS1yZXZpc2lvbnMpOgpBZGQgcmNzLXNwZWNpZmljIGltcGxlbWVu dGF0aW9ucyB2Yy10bSBiYWNrZW5kIGZ1bmN0aW9ucywgZm9sbG93aW5nIHRoZQp2Yy1naXQuZWwg cHJlY2VkZW50LiAgRm9yIG5vdyB2Yy1yY3MgbGFja3MgYSB0bS1tYXAtbGluZSBmdW5jdGlvbiBh bmQKdGhlcmVmb3JlIGxldmVyYWdlcyB2Yy10aW1lbWFjaGluZS5lbCdzIGRlZmF1bHQgaW1wbGVt ZW50YXRpb24uCi0tLQogbGlzcC92Yy92Yy1naXQuZWwgICAgICAgICB8ICA5MSArKysrKysrLQog bGlzcC92Yy92Yy1ob29rcy5lbCAgICAgICB8ICAxMCArLQogbGlzcC92Yy92Yy1yY3MuZWwgICAg ICAgICB8ICA1MCArKysrKwogbGlzcC92Yy92Yy10aW1lbWFjaGluZS5lbCB8IDQyNiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGlzcC92Yy92Yy5lbCAgICAgICAgICAg ICB8ICA0NyArKysrLQogNSBmaWxlcyBjaGFuZ2VkLCA2MTQgaW5zZXJ0aW9ucygrKSwgMTAgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlzcC92Yy92Yy10aW1lbWFjaGluZS5lbAoK ZGlmZiAtLWdpdCBhL2xpc3AvdmMvdmMtZ2l0LmVsIGIvbGlzcC92Yy92Yy1naXQuZWwKaW5kZXgg NzY4OWQ1Zjg3OS4uMWY0NWFhN2U5NiAxMDA2NDQKLS0tIGEvbGlzcC92Yy92Yy1naXQuZWwKKysr IGIvbGlzcC92Yy92Yy1naXQuZWwKQEAgLTgyLDYgKzgyLDkgQEAKIDs7IC0gYW5ub3RhdGUtdGlt ZSAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9LCiA7OyAtIGFubm90YXRlLWN1cnJl bnQtdGltZSAoKSAgICAgICAgICAgICAgICAgICAgICBOT1QgTkVFREVECiA7OyAtIGFubm90YXRl LWV4dHJhY3QtcmV2aXNpb24tYXQtbGluZSAoKSAgICAgICAgICBPSworOzsgVElNRU1BQ0hJTkUK Kzs7ICogdG0tcmV2aXNpb25zIChmaWxlKQorOzsgKiB0bS1tYXAtbGluZSAoZmlsZSBmcm9tLXJl dmlzaW9uIGZyb20tbGluZSB0by1yZXZpc2lvbiBmcm9tLWlzLW9sZGVyKQogOzsgVEFHL0JSQU5D SCBTWVNURU0KIDs7IC0gY3JlYXRlLXRhZyAoZGlyIG5hbWUgYnJhbmNocCkgICAgICAgICAgICAg ICAgIE9LCiA7OyAtIHJldHJpZXZlLXRhZyAoZGlyIG5hbWUgdXBkYXRlKSAgICAgICAgICAgICAg ICBPSwpAQCAtMTAxLDYgKzEwNCw4IEBACiAKIChyZXF1aXJlICdjbC1saWIpCiAocmVxdWlyZSAn dmMtZGlzcGF0Y2hlcikKKyhyZXF1aXJlICd0cmFuc2llbnQpCisocmVxdWlyZSAndmMtdGltZW1h Y2hpbmUpCiAoZXZhbC13aGVuLWNvbXBpbGUKICAgKHJlcXVpcmUgJ3N1YnIteCkgOyBmb3Igc3Ry aW5nLXRyaW0tcmlnaHQKICAgKHJlcXVpcmUgJ3ZjKQpAQCAtMTY2LDYgKzE3MSwxMiBAQCB2Yy1n aXQtcHJvZ3JhbQogICA6dmVyc2lvbiAiMjQuMSIKICAgOnR5cGUgJ3N0cmluZykKIAorKGRlZmN1 c3RvbSB2Yy1naXQtZ2xvYmFsLWdpdC1hcmd1bWVudHMKKyAgJygiLWMiICJsb2cuc2hvd1NpZ25h dHVyZT1mYWxzZSIgIi0tbm8tcGFnZXIiKQorICAiQ29tbW9uIGFyZ3VtZW50cyBmb3IgYWxsIGdp dCBjb21tYW5kcy4iCisgIDp0eXBlICdsaXN0CisgIDpncm91cCAndmMtdGltZW1hY2hpbmUpCisK IChkZWZjdXN0b20gdmMtZ2l0LXJvb3QtbG9nLWZvcm1hdAogICAnKCIlZCVoLi46ICVhbiAlYWQg JXMiCiAgICAgOzsgVGhlIGZpcnN0IHNoeSBncm91cCBtYXRjaGVzIHRoZSBjaGFyYWN0ZXJzIGRy YXduIGJ5IC0tZ3JhcGguCkBAIC0xMjE3LDEwICsxMjI4LDExIEBAIHZjLWdpdC1maW5kLXJldmlz aW9uCiAJICAgIChpZiAoc3RyaW5nPSBmbiAiIikKIAkJKGZpbGUtcmVsYXRpdmUtbmFtZSBmaWxl ICh2Yy1naXQtcm9vdCBkZWZhdWx0LWRpcmVjdG9yeSkpCiAJICAgICAgKHN1YnN0cmluZyBmbiAw IC0xKSkpKSkKLSAgICAodmMtZ2l0LWNvbW1hbmQKLSAgICAgYnVmZmVyIDAKLSAgICAgbmlsCi0g ICAgICJjYXQtZmlsZSIgImJsb2IiIChjb25jYXQgKGlmIHJldiByZXYgIkhFQUQiKSAiOiIgZnVs bG5hbWUpKSkpCisgICAgKGlnbm9yZS1lcnJvcnMKKyAgICAgICh2Yy1naXQtY29tbWFuZAorICAg ICAgIGJ1ZmZlciAwCisgICAgICAgbmlsCisgICAgICAgImNhdC1maWxlIiAiYmxvYiIgKGNvbmNh dCAoaWYgcmV2IHJldiAiSEVBRCIpICI6IiBmdWxsbmFtZSkpKSkpCiAKIChkZWZ1biB2Yy1naXQt ZmluZC1pZ25vcmUtZmlsZSAoZmlsZSkKICAgIlJldHVybiB0aGUgZ2l0IGlnbm9yZSBmaWxlIHRo YXQgY29udHJvbHMgRklMRS4iCkBAIC0xODA0LDYgKzE4MTYsNzcgQEAgdmMtZ2l0LXJldHJpZXZl LXRhZwogICAgICh2Yy1naXQtY29tbWFuZCBuaWwgMCBuaWwgImNoZWNrb3V0IiBuYW1lKSkpCiAK IAorOzs7IFRJTUVNQUNISU5FCisKKyhkZWZ1biB2Yy1naXQtdG0tcmV2aXNpb25zIChmaWxlKQor ICAiUmV0dXJuIGRhdGEgYWJvdXQgcmV2aXNpb25zIG1vZGlmeWluZyBGSUxFIG9uIGNoZWNrZWQt b3V0IGJyYW5jaC4iCisgIChsZXQqICgoZGVmYXVsdC1kaXJlY3RvcnkgKHZjLWdpdC1yb290IGZp bGUpKQorICAgICAgICAgKHJlbC1maWxlIChmaWxlLXJlbGF0aXZlLW5hbWUgZmlsZSkpCisgICAg ICAgICAocmV2aXNpb24taW5mb3MpKQorICAgICh1bmxlc3MgKHplcm9wICh2Yy1naXQtLXByb2Nl c3MtZmlsZQorICAgICAgICAgICAgICAgICAgICAibG9nIiAiLS1wcmV0dHk9Zm9ybWF0OiVIJXgw MCVhZCV4MDAlcyV4MDAlYW4iCisgICAgICAgICAgICAgICAgICAgICItLW5hbWUtb25seSIgIi0t Zm9sbG93IiAiLS0iIHJlbC1maWxlKSkKKyAgICAgIChlcnJvciAiR2l0IGxvZyBlcnJvcjogLmdp dD0gJyVzJywgZmlsZT0gJyVzJyIgZGVmYXVsdC1kaXJlY3RvcnkgcmVsLWZpbGUpKQorICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgKGxldCAoKGxpbmUpCisgICAgICAgICAgKGNvbW1p dCkKKyAgICAgICAgICAoc3ViamVjdCkgKG5ldy1zdWJqZWN0KQorICAgICAgICAgIChhdXRob3Ip ICAobmV3LWF1dGhvcikKKyAgICAgICAgICAoZGF0ZSkgICAgKG5ldy1kYXRlKQorICAgICAgICAg IChmaWxlKSAgICAobmV3LWZpbGUpKQorICAgICAgKHdoaWxlIChub3QgKGVvYnApKQorICAgICAg ICAoc2V0cSBsaW5lIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKGxpbmUtYmVnaW5u aW5nLXBvc2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKSkKKwkoc3RyaW5nLW1hdGNoICJcXChb XlwwXSpcXClcMFxcKFteXDBdKlxcKVwwXFwoW15cMF0qXFwpXDBcXChbXlwwXSpcXCkiIGxpbmUp CisgICAgICAgIChzZXRxIGNvbW1pdCAobWF0Y2gtc3RyaW5nIDEgbGluZSkpCisgICAgICAgIChz ZXRxIG5ldy1zdWJqZWN0IChtYXRjaC1zdHJpbmcgMyBsaW5lKSkKKyAgICAgICAgKHNldHEgbmV3 LWF1dGhvciAobWF0Y2gtc3RyaW5nIDQgbGluZSkpCisgICAgICAgIChzZXRxIG5ldy1kYXRlICh2 Yy10bS1mb3JtYXQtZGF0ZSAobWF0Y2gtc3RyaW5nIDIgbGluZSkpKQorICAgICAgICAodW5sZXNz IChlcXVhbCBzdWJqZWN0IG5ldy1zdWJqZWN0KQorICAgICAgICAgIChzZXRxIHN1YmplY3QgbmV3 LXN1YmplY3QpKQorICAgICAgICAodW5sZXNzIChlcXVhbCBhdXRob3IgbmV3LWF1dGhvcikKKyAg ICAgICAgICAoc2V0cSBhdXRob3IgbmV3LWF1dGhvcikpCisgICAgICAgICh1bmxlc3MgKGVxdWFs IGRhdGUgbmV3LWRhdGUpCisgICAgICAgICAgKHNldHEgZGF0ZSBuZXctZGF0ZSkpCisgICAgICAg IChmb3J3YXJkLWxpbmUgMSkKKwkoc2V0cSBuZXctZmlsZSAoYnVmZmVyLXN1YnN0cmluZy1uby1w cm9wZXJ0aWVzIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5kLXBvc2l0aW9uKSkp CisgICAgICAgICh1bmxlc3MgKGVxdWFsIGZpbGUgbmV3LWZpbGUpCisgICAgICAgICAgKHNldHEg ZmlsZSBuZXctZmlsZSkpCisJKHB1c2ggKGxpc3QgY29tbWl0IGRhdGUgc3ViamVjdCBhdXRob3Ig ZmlsZSkgcmV2aXNpb24taW5mb3MpCisgICAgICAgIChmb3J3YXJkLWxpbmUgMikpCisgICAgICBy ZXZpc2lvbi1pbmZvcykpKQorCisoZGVmdW4gdmMtZ2l0LXRtLW1hcC1saW5lIChmaWxlIGZyb20t Y29tbWl0IGZyb20tbGluZSB0by1jb21taXQgZnJvbS1pcy1vbGRlcikKKyAgIlJldHVybiBUTy1D T01NSVQncyBsaW5lIGNvcnJlc3BvbmRpbmcgdG8gRlJPTS1DT01NSVQncyBGUk9NLUxJTkUuCitP biBlbnRyeSB0aGUgY3VycmVudC1idWZmZXIgaXMgYW4gZW1wdHkgdGVtcG9yYXJ5IGJ1ZmZlci4K KworRWxzZXdoZXJlIHRoZSBmb3JtYWxzIEZST00tQ09NTUlUIGFuZCBUTy1DT01NSVQgYXJlIG5h bWVkIEZST00tUkVWSVNJT04KK2FuZCBUTy1SRVZJU0lPTi4gIFRoaXMgY2hhbmdlIG9mIG5hbWUg aXMgdG8gY2xhcmlmeSB0aGUgZ2l0IG1lYW5pbmcuIgorICAobGV0ICgobGluZSAoZm9ybWF0ICIt TCAlcywlcyIgZnJvbS1saW5lIGZyb20tbGluZSkpCisgICAgICAgIChyZXZlcnNlLWZsYWcgKGlm IGZyb20taXMtb2xkZXIgIi0tcmV2ZXJzZSIgIiIpKQorICAgICAgICAocmFuZ2UgKGlmIGZyb20t aXMtb2xkZXIKKyAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICIlcy4uJXMiIHRvLWNvbW1pdCBm cm9tLWNvbW1pdCkKKyAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMuLiVzIiBmcm9tLWNvbW1p dCB0by1jb21taXQpKSkKKyAgICAgICAgKHRvLWxpbmUpKQorICAgICh2Yy1naXQtLXByb2Nlc3Mt ZmlsZSAiYmxhbWUiIHJldmVyc2UtZmxhZyAiLW4iIGxpbmUgZmlsZSByYW5nZSkKKyAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKQorICAgIDs7IEZvciBhbiBlbmQtb2YtYnVmZmVyIHByb2JsZW0g dHJ5IGZsaXBwaW5nIHRoZSBibGFtZSBhcm91bmQuCisgICAgKHdoZW4gKHNlYXJjaC1mb3J3YXJk LXJlZ2V4cCAiXmZhdGFsOiBmaWxlIC4rIGhhcyBvbmx5IC4rIGxpbmVzIiBuaWwgdCkKKyAgICAg IChlcmFzZS1idWZmZXIpCisgICAgICAoc2V0cSBmcm9tLWxpbmUgKDEtIGZyb20tbGluZSkpCisg ICAgICAoc2V0cSBsaW5lIChmb3JtYXQgIi1MICVzLCVzIiBmcm9tLWxpbmUgZnJvbS1saW5lKSkK KyAgICAgICh2Yy1naXQtLXByb2Nlc3MtZmlsZSAiYmxhbWUiIHJldmVyc2UtZmxhZyAiLW4iIGxp bmUgZmlsZSByYW5nZSkpCisgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAoc2VhcmNo LWZvcndhcmQtcmVnZXhwICJeW14gXSsgXFwoW14gXStcXCkiKQorICAgIChzZXRxIHRvLWxpbmUg KHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxKSkpCisgICAgOzsgSnVzdCByZXVzZSBm cm9tLWxpbmUgaWYgZ2l0IGJsYW1lIGZhaWxzIHRvIGdpdmUgdXMgd2hhdCB3ZSBleHBlY3QuCisg ICAgKHdoZW4gKD0gdG8tbGluZSAwKQorICAgICAgKHNldHEgdG8tbGluZSBmcm9tLWxpbmUpKQor ICAgIHRvLWxpbmUpKQorCisoZGVmdW4gdmMtZ2l0LS1wcm9jZXNzLWZpbGUgKCZyZXN0IGFyZ3Mp CisgICJSdW4gYHByb2Nlc3MtZmlsZScgd2l0aCBBUkdTIGFuZCBgdmMtZ2l0LWdsb2JhbC1naXQt YXJndW1lbnRzJyBhcHBsaWVkLiIKKyAgKGFwcGx5ICMncHJvY2Vzcy1maWxlIHZjLWdpdC1wcm9n cmFtIG5pbCB0IG5pbCAoYXBwZW5kIHZjLWdpdC1nbG9iYWwtZ2l0LWFyZ3VtZW50cyBhcmdzKSkp CisKIDs7OyBNSVNDRUxMQU5FT1VTCiAKIChkZWZ1biB2Yy1naXQtcHJldmlvdXMtcmV2aXNpb24g KGZpbGUgcmV2KQpkaWZmIC0tZ2l0IGEvbGlzcC92Yy92Yy1ob29rcy5lbCBiL2xpc3AvdmMvdmMt aG9va3MuZWwKaW5kZXggZTI0MmQxZTQ4ZS4uOWJkYjk0YWUxYSAxMDA2NDQKLS0tIGEvbGlzcC92 Yy92Yy1ob29rcy5lbAorKysgYi9saXNwL3ZjL3ZjLWhvb2tzLmVsCkBAIC0zMCw3ICszMCw4IEBA CiAKIDs7OyBDb2RlOgogCi0oZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2NsLWxpYikpCiso ZXZhbC13aGVuLWNvbXBpbGUKKyAgKHJlcXVpcmUgJ2NsLWxpYikpCiAKIDs7IEZhY2VzCiAKQEAg LTg4Myw3ICs4ODQsOSBAQCB2Yy1wcmVmaXgtbWFwCiAgICJEIiAgICMndmMtcm9vdC1kaWZmCiAg ICJ+IiAgICMndmMtcmV2aXNpb24tb3RoZXItd2luZG93CiAgICJ4IiAgICMndmMtZGVsZXRlLWZp bGUKLSAgIiEiICAgIyd2Yy1lZGl0LW5leHQtY29tbWFuZCkKKyAgIiEiICAgIyd2Yy1lZGl0LW5l eHQtY29tbWFuZAorICAiLCIgICAjJ3ZjLXRtLXJldmlzaW9uLWhlYWQpCisKIChmc2V0ICd2Yy1w cmVmaXgtbWFwIHZjLXByZWZpeC1tYXApCiAoZGVmaW5lLWtleSBjdGwteC1tYXAgInYiICd2Yy1w cmVmaXgtbWFwKQogCkBAIC05MDQsNiArOTA3LDkgQEAgdmMtbWVudS1tYXAKICAgICAoYmluZGlu Z3MtLWRlZmluZS1rZXkgbWFwIFt2Yy1yZW5hbWUtZmlsZV0KICAgICAgICcobWVudS1pdGVtICJS ZW5hbWUgRmlsZSIgdmMtcmVuYW1lLWZpbGUKIAkJICA6aGVscCAiUmVuYW1lIGZpbGUiKSkKKyAg ICAoYmluZGluZ3MtLWRlZmluZS1rZXkgbWFwIFt2Yy10bS1yZXZpc2lvbi1oZWFkXQorICAgICAg JyhtZW51LWl0ZW0gIlRpbWUgbWFjaGluZSBhdCBIRUFEIiB2Yy10bS1yZXZpc2lvbi1oZWFkCisJ CSAgOmhlbHAgIkxhdW5jaCBhIHRpbWUgbWFjaGluZSBmb3IgdGhlIEhFQUQgcmV2aXNpb24iKSkK ICAgICAoYmluZGluZ3MtLWRlZmluZS1rZXkgbWFwIFt2Yy1yZXZpc2lvbi1vdGhlci13aW5kb3dd CiAgICAgICAnKG1lbnUtaXRlbSAiU2hvdyBPdGhlciBWZXJzaW9uIiB2Yy1yZXZpc2lvbi1vdGhl ci13aW5kb3cKIAkJICA6aGVscCAiVmlzaXQgYW5vdGhlciB2ZXJzaW9uIG9mIHRoZSBjdXJyZW50 IGZpbGUgaW4gYW5vdGhlciB3aW5kb3ciKSkKZGlmZiAtLWdpdCBhL2xpc3AvdmMvdmMtcmNzLmVs IGIvbGlzcC92Yy92Yy1yY3MuZWwKaW5kZXggYzIxMTJiNzZhZC4uOWY1MjU4N2Y2ZiAxMDA2NDQK LS0tIGEvbGlzcC92Yy92Yy1yY3MuZWwKKysrIGIvbGlzcC92Yy92Yy1yY3MuZWwKQEAgLTMxLDYg KzMxLDEwIEBACiAKIDs7IFlvdSBjYW4gc3VwcG9ydCB0aGUgUkNTIC14IG9wdGlvbiBieSBjdXN0 b21pemluZyB2Yy1yY3MtbWFzdGVyLXRlbXBsYXRlcy4KIAorOzs7IFRvZG86Cis7OworOzsgKiBU ZWFjaCB2Yy1yY3MtdG0tcmV2aXNpb25zIGFib3V0IFJDUyBicmFuY2hpbmcKKwogOzs7IENvZGU6 CiAKIDs7OwpAQCAtNDEsNiArNDUsNyBAQAogICAocmVxdWlyZSAnY2wtbGliKQogICAocmVxdWly ZSAndmMpKQogKHJlcXVpcmUgJ2xvZy12aWV3KQorKHJlcXVpcmUgJ3ZjLXRpbWVtYWNoaW5lKQog CiAoZGVjbGFyZS1mdW5jdGlvbiB2Yy1yZWFkLXJldmlzaW9uICJ2YyIKICAgICAgICAgICAgICAg ICAgIChwcm9tcHQgJm9wdGlvbmFsIGZpbGVzIGJhY2tlbmQgZGVmYXVsdCBpbml0aWFsLWlucHV0 KSkKQEAgLTgxNSw2ICs4MjAsNTEgQEAgdmMtcmNzLWNyZWF0ZS10YWcKICAgICAgICAobGFtYmRh IChmKQogCSAodmMtZG8tY29tbWFuZCAiKnZjKiIgMCAicmNzIiAodmMtbWFzdGVyLW5hbWUgZikg KGNvbmNhdCAiLW4iIG5hbWUgIjoiKSkpKSkpKQogCisMCis7OzsKKzs7OyBUaW1lbWFjaGluZQor Ozs7CisKKzs7IFRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgaGFuZGxlIFJDUyBicmFuY2hl cy4KKyhkZWZ1biB2Yy1yY3MtdG0tcmV2aXNpb25zIChmaWxlKQorICAiUmV0dXJuIGRhdGEgYWJv dXQgcmV2aXNpb25zIG1vZGlmeWluZyBGSUxFIG9uIGNoZWNrZWQtb3V0IGJyYW5jaC4iCisgICh2 Yy1kby1jb21tYW5kIHQgMCAicmNzIiAoY29uY2F0IHZjLWNhY2hlLXJvb3QgZmlsZSkgImxvZyIp CisgICh2Yy1yY3MtdG0tcmV2aXNpb25zLXBhcnNlLWxvZyBmaWxlKSkKKworOzsgQ29udmVydCBh biBSQ1MgbG9nIGludG8gcmV2aXNpb25zIGluZm8gcGVyIHZjLXRpbWVtYWNoaW5lJ3MgZXhwZWN0 YXRpb25zLgorKGRlZnVuIHZjLXJjcy10bS1yZXZpc2lvbnMtcGFyc2UtbG9nIChmaWxlKQorICAi RXh0cmFjdCByZXZpc2lvbnMgaW5mbyBmcm9tIGNvbnRlbnRzIG9mIGN1cnJlbnQgYnVmZmVyLiIK KyAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgKGxldCAoKHJldmlzaW9uLWluZm9zKQorICAg ICAgICAobGluZSkKKyAgICAgICAgKHJldmlzaW9uKQorICAgICAgICAoc3ViamVjdCkgKG5ldy1z dWJqZWN0KQorICAgICAgICAoYXV0aG9yKSAgKG5ldy1hdXRob3IpCisgICAgICAgIChkYXRlKSAg ICAobmV3LWRhdGUpKQorICAgICh3aGlsZSAoc2VhcmNoLWZvcndhcmQtcmVnZXhwICJeLVstXSpc biIgbmlsIHQpCisgICAgICAoc2V0cSBsaW5lIChjb25jYXQgKGJ1ZmZlci1zdWJzdHJpbmctbm8t cHJvcGVydGllcyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikp ICJcdCIpKQorICAgICAgKHdoZW4gKHN0cmluZy1tYXRjaCAiXnJldmlzaW9uIFxcKDFbLl1bMC05 XStcXClcdCIgbGluZSkKKyAgICAgICAgKHNldHEgcmV2aXNpb24gKG1hdGNoLXN0cmluZyAxIGxp bmUpKQorICAgICAgICAoZm9yd2FyZC1saW5lIDEpCisgICAgICAgIChzZXRxIGxpbmUgKGJ1ZmZl ci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5l LWVuZC1wb3NpdGlvbikpKQorICAgICAgICAoc3RyaW5nLW1hdGNoICJeZGF0ZTogXFwoW147XSpc XCk7ICBhdXRob3I6IFxcKFteO10qXFwpOyIgbGluZSkKKwkoc2V0cSBuZXctYXV0aG9yIChtYXRj aC1zdHJpbmcgMiBsaW5lKSkKKyAgICAgICAgKHVubGVzcyAoZXF1YWwgYXV0aG9yIG5ldy1hdXRo b3IpCisgICAgICAgICAgKHNldHEgYXV0aG9yIG5ldy1hdXRob3IpKQorICAgICAgICAoc2V0cSBu ZXctZGF0ZSAodmMtdG0tZm9ybWF0LWRhdGUgKG1hdGNoLXN0cmluZyAxIGxpbmUpKSkKKyAgICAg ICAgKHVubGVzcyAoZXF1YWwgZGF0ZSBuZXctZGF0ZSkKKyAgICAgICAgICAoc2V0cSBkYXRlIG5l dy1kYXRlKSkKKyAgICAgICAgKGZvcndhcmQtbGluZSAxKQorICAgICAgICAod2hlbiAobG9va2lu Zy1hdC1wICJicmFuY2hlczogLio7IikKKyAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpKQorICAg ICAgICAoc2V0cSBuZXctc3ViamVjdCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChs aW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCisgICAgICAgICh3 aGVuIChlcXVhbCBuZXctc3ViamVjdCAiKioqIGVtcHR5IGxvZyBtZXNzYWdlICoqKiIpCisgICAg ICAgICAgKHNldHEgbmV3LXN1YmplY3QgIiIpKQorICAgICAgICAodW5sZXNzIChlcXVhbCBzdWJq ZWN0IG5ldy1zdWJqZWN0KQorICAgICAgICAgIChzZXRxIHN1YmplY3QgbmV3LXN1YmplY3QpKQor CShwdXNoIChsaXN0IHJldmlzaW9uIGRhdGUgc3ViamVjdCBhdXRob3IgZmlsZSkgcmV2aXNpb24t aW5mb3MpKSkKKyAgICByZXZpc2lvbi1pbmZvcykpCisKIAwKIDs7OwogOzs7IE1pc2NlbGxhbmVv dXMKZGlmZiAtLWdpdCBhL2xpc3AvdmMvdmMtdGltZW1hY2hpbmUuZWwgYi9saXNwL3ZjL3ZjLXRp bWVtYWNoaW5lLmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmFjM2I5 MzYzMzQKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3ZjL3ZjLXRpbWVtYWNoaW5lLmVsCkBAIC0w LDAgKzEsNDI2IEBACis7OzsgdmMtdGltZW1hY2hpbmUuZWwgLS0tIFdhbGsgdGhyb3VnaCByZXZp c2lvbnMgb2YgYSBmaWxlICAtKi0gbGV4aWNhbC1iaW5kaW5nOnQgLSotCisKKzs7IENvcHlyaWdo dCAoQykgMjAyMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKworOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzsgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworOzsgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7 IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorCis7OzsgQ3JlZGl0czoKKzs7Cis7OyAgUGV0ZXIgU3RpZXJuc3Ryw7Zt IC0gd3JvdGUgdGhlIG9yaWdpbmFsLCBnaXQtb25seSB2ZXJzaW9uCis7OyAgSm9obiBZYXRlcyAg ICAgICAgLSByZWZhY3RvcmVkIFBldGVyJ3MgY29kZSBmb3IgdGhlIFZDIGVudmlyb25tZW50CisK Kzs7OyBDb21tZW50YXJ5OgorOzsKKzs7IEEgdGltZW1hY2hpbmUgYnVmZmVyIGlzIGEgc2xpZGlu ZyByZWFkLW9ubHkgd2luZG93IG92ZXIgdGhlIGRpc3RpbmN0Cis7OyByZXZpc2lvbnMgb2YgYSBz aW5nbGUgZmlsZSBvbiBhIFZDUyBicmFuY2guICBUbyBjcmVhdGUgYSB0aW1lbWFjaGluZToKKzs7 Cis7OyAgICAodmMtcHJlZml4LW1hcCAiLCIpICAgdmMtdG0tcmV2aXNpb24taGVhZAorOzsKKzs7 IFRpbWVtYWNoaW5lIGltcGxlbWVudHMgcHJlZml4LWZyZWUgbWlub3IgbW9kZSB2Yy10bS1tb2Rl OgorOzsKKzs7ICAgICIsIiAuIHZjLXRtLXJldmlzaW9uLWhlYWQKKzs7ICAgICJ+IiAuIHZjLXRt LXJldmlzaW9uLXNlbGVjdAorOzsgICAgImciIC4gdmMtdG0tcmV2aXNpb24taQorOzsgICAgIm4i IC4gdmMtdG0tcmV2aXNpb24tbmV4dAorOzsgICAgInAiIC4gdmMtdG0tcmV2aXNpb24tcHJldmlv dXMKKzs7ICAgICJxIiAuIHZjLXRtLXF1aXQKKzs7ICAgICJzIiAuIHZjLXRtLXJldmlzaW9uLWNv bXBsZXRlLXN1YmplY3QKKzs7ICAgICJ3IiAuIHZjLXRtLWFiYnJldmlhdGVkLXJldmlzaW9uLXRv LWtpbGwtcmluZworOzsgICAgIlciIC4gdmMtdG0tcmV2aXNpb24tdG8ta2lsbC1yaW5nCis7Owor OzsgVG8gc3VwcG9ydCB0aW1lbWFjaGluZSBmdW5jdGlvbmFsaXR5IGEgVkNTIGJhY2tlbmQgbmVl ZHMgdG8gaW1wbGVtZW50OgorOzsKKzs7ICAgLSB0bS1yZXZpc2lvbnMgKGZpbGUpCis7OworOzsg QW5kIGlkZWFsbHk6Cis7OworOzsgICAtIHRtLW1hcC1saW5lIChmaWxlIGZyb20tcmV2aXNpb24g ZnJvbS1saW5lIHRvLXJldmlzaW9uIGZyb20taXMtb2xkZXIpCis7OworOzsgRm9yIG1vcmUgZGV0 YWlscyBzZWUgdGhlIGxhcmdlIGNvbW1lbnQgYXQgdGhlIGZyb250IG9mIHZjLmVsLgorCis7Ozsg VG9kbzoKKzs7Cis7OyAqIGltcGxlbWVudCBtaXNzaW5nIGJsYW1lCis7OyAqIGltcGxlbWVudCBt aXNzaW5nIHNob3ctY29tbWl0Cis7OyAqIHZjLXRtLWNyZWF0ZTogd2hlbiBjYWxsZWQgZnJvbSBh IHJldmlzaW9uIGJ1ZmZlciwgc2hvdWxkIGp1bXAgdG8gdGhhdCByZXZpc2lvbgorOzsgKiB2Yy10 bS0tdGltZS1tYWNoaW5lOiBjb25maXJtIHJldmlzaW9uIGlzIHByZXNlbnQgaW4gdG1idWYtLWJy YW5jaC1yZXZpc2lvbnMKKworOzs7IENvZGU6CisKKyhyZXF1aXJlICd2YykKKworKGRlZmdyb3Vw IHZjLXRpbWVtYWNoaW5lIG5pbAorICAiVGltZS1tYWNoaW5lIGZ1bmN0aW9uYWxpdHkgZm9yIFZD IGJhY2tlbmRzLiIKKyAgOmdyb3VwICd2YworICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0 b20gdmMtdG0tZGF0ZS1mb3JtYXQKKyAgIiVhICVJOiVNICVwICVZLSVtLSVkIgorICAiUmV2aXNp b24gY3JlYXRpb24gZGF0ZSBmb3JtYXQgKGVtcGhhc2lzIG9uIGVhc3kgZGF0ZSBjb21wYXJpc29u KS4iCisgIDp0eXBlICdzdHJpbmcKKyAgOmdyb3VwICd2Yy10aW1lbWFjaGluZQorICA6dmVyc2lv biAiMzAuMSIpCisKKyhkZWZjdXN0b20gdmMtdG0tZWNoby1hcmVhIHQKKyAgIldoZW4gbm9uLW5p bCBzaG93IHJldmlzaW9uIGRldGFpbHMgaW4gdGhlIGVjaG8tYXJlYSB3aGlsZSBuYXZpZ2F0aW5n IGNvbW1pdHMuIgorICA6dHlwZSAnYm9vbGVhbgorICA6Z3JvdXAgJ3ZjLXRpbWVtYWNoaW5lCisg IDp2ZXJzaW9uICIzMC4xIikKKworKGRlZmN1c3RvbSB2Yy10bS1lY2hvLWFyZWEtZGV0YWlsICdz dWJqZWN0CisgICJXaGF0IHRvIGRpc3BsYXkgd2hlbiBgdmMtdG0tZWNoby1hcmVhYCBpcyB0Lgor QXZhaWxhYmxlIHZhbHVlcyBhcmU6CitgSURgICAgICAgOiBUaGUgcmV2aXNpb24ncyBJRCAoY29t bWl0IGhhc2gpCitgc3ViamVjdGAgOiBUaGUgcmV2aXNpb24ncyBjb21taXQgbWVzc2FnZSBzdWJq ZWN0IGxpbmUiCisgIDp0eXBlICcocmFkaW8gKGNvbnN0IDp0YWcgIlJldmlzaW9uIElEIChjb21t aXQgaGFzaCkiIGNvbW1pdCkKKyAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiUmV2aXNpb24g bWVzc2FnZSBzdWJqZWN0IGxpbmUiIHN1YmplY3QpKQorICA6Z3JvdXAgJ3ZjLXRpbWVtYWNoaW5l CisgIDp2ZXJzaW9uICIzMC4xIikKKworKGRlZmZhY2UgdmMtdG0tZWNoby1hcmVhLWRldGFpbC1m YWNlCisgICcoKCgoY2xhc3MgY29sb3IpIChiYWNrZ3JvdW5kIGRhcmspKQorICAgICA6Zm9yZWdy b3VuZCAieWVsbG93IikKKyAgICAoKChjbGFzcyBjb2xvcikgKGJhY2tncm91bmQgbGlnaHQpKQor ICAgICA6Zm9yZWdyb3VuZCAieWVsbG93NCIpKQorICAiRmFjZSB0byB1c2Ugd2hlbiBkaXNwbGF5 aW5nIGRldGFpbHMgaW4gdGhlIGVjaG8tYXJlYS4iCisgIDpncm91cCAndmMtdGltZW1hY2hpbmUK KyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmY3VzdG9tIHZjLXRtLWVjaG8tYXJlYS1hdXRob3Ig dAorICAiUHJlcGVuZCBhdXRob3IgdG8gZWNoby1hcmVhIGRldGFpbHMuIgorICA6dHlwZSAnYm9v bGVhbgorICA6Z3JvdXAgJ3ZjLXRpbWVtYWNoaW5lCisgIDp2ZXJzaW9uICIzMC4xIikKKworKGRl ZmZhY2UgdmMtdG0tZWNoby1hcmVhLWF1dGhvci1mYWNlCisgICcoKCgoY2xhc3MgY29sb3IpIChi YWNrZ3JvdW5kIGRhcmspKQorICAgICA6Zm9yZWdyb3VuZCAib3JhbmdlIikKKyAgICAoKChjbGFz cyBjb2xvcikgKGJhY2tncm91bmQgbGlnaHQpKQorICAgICA6Zm9yZWdyb3VuZCAiRGFya09yYW5n ZTQiKSkKKyAgIkZhY2UgdG8gdXNlIHdoZW4gZGlzcGxheWluZyBhdXRob3IgYXMgcGFydCBvZiBk ZXRhaWxzIGluIHRoZSBlY2hvLWFyZWEuIgorICA6Z3JvdXAgJ3ZjLXRpbWVtYWNoaW5lCisgIDp2 ZXJzaW9uICIzMC4xIikKKworKGRlZmN1c3RvbSB2Yy10bS1hYmJyZXZpYXRpb24tbGVuZ3RoIDEy CisgICJOdW1iZXIgb2YgY2hhcnMgZnJvbSBmdWxsIHJldmlzaW9uIGlkIHRvIHVzZSBmb3IgYWJi cmV2aWF0aW9uLiIKKyAgOnR5cGUgJ2ludGVnZXIKKyAgOmdyb3VwICd2Yy10aW1lbWFjaGluZQor ICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20gdmMtdG0tcXVpdC10by1pbnZva2luZy1i dWZmZXIgdAorICAiU3dpdGNoIHRvIGludm9raW5nIGJ1ZmZlciBvbiDigJh2Yy10bS1xdWl04oCZ LiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICd2Yy10aW1lbWFjaGluZQorICA6dmVyc2lv biAiMzAuMSIpCisKKyhkZWZ2YXItbG9jYWwgdmMtLXRpbWUtbWFjaGluZSBuaWwKKyAgIkNhY2hl IGEgVE0gaGludCBvbiB2YXJpb3VzIGJ1ZmZlcnMuIikKKyhwdXQgJ3ZjLS10aW1lLW1hY2hpbmUg J3Blcm1hbmVudC1sb2NhbCB0KQorCisoZGVmdmFyLWxvY2FsIHRtYnVmLS1hYnMtZmlsZSBuaWwK KyAgIkFic29sdXRlIHBhdGggdG8gZmlsZSBiZWluZyB0cmF2ZXJzZWQgYnkgdGhpcyB0aW1lLW1h Y2hpbmUuIikKKyhwdXQgJ3RtYnVmLS1hYnMtZmlsZSAncGVybWFuZW50LWxvY2FsIHQpCisoZGVm dmFyLWxvY2FsIHRtYnVmLS1iYWNrZW5kIG5pbAorICAiVGhlIFZDIGJhY2tlbmQgYmVpbmcgdXNl ZCBieSB0aGlzIHRpbWUtbWFjaGluZSIpCisocHV0ICd0bWJ1Zi0tYmFja2VuZCAncGVybWFuZW50 LWxvY2FsIHQpCisoZGVmdmFyLWxvY2FsIHRtYnVmLS1icmFuY2gtaW5kZXggbmlsCisgICJaZXJv LWJhc2UgaW5kZXggaW50byB0bWJ1Zi0tYnJhbmNoLXJldmlzaW9ucy4iKQorKHB1dCAndG1idWYt LWJyYW5jaC1yZXZpc2lvbnMgJ3Blcm1hbmVudC1sb2NhbCB0KQorKGRlZnZhci1sb2NhbCB0bWJ1 Zi0tYnJhbmNoLXJldmlzaW9ucyBuaWwKKyAgIldoZW4gbm9uLW5pbCwgYSB2ZWN0b3Igb2YgcmV2 aXNpb24taW5mbyBsaXN0cy4iKQorKHB1dCAndG1idWYtLWJyYW5jaC1yZXZpc2lvbnMgJ3Blcm1h bmVudC1sb2NhbCB0KQorKGRlZnZhci1sb2NhbCB0bWJ1Zi0tc291cmNlLWJ1ZmZlciBuaWwKKyAg IkEgbm9uLXRpbWUtbWFjaGluZSBidWZmZXIgZm9yIHdoaWNoIHRoaXMgdGltZS1tYWNoaW5lIHdh cyBjcmVhdGVkLiIpCisocHV0ICd0bWJ1Zi0tc291cmNlLWJ1ZmZlciAncGVybWFuZW50LWxvY2Fs IHQpCisKKyhkZWZ1biB2Yy10bS0tdGltZS1tYWNoaW5lICgpCisgICJSZXR1cm4gYSB2YWxpZCB0 aW1lLW1hY2hpbmUgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlci4iCisgIChpZiB0bWJ1Zi0tYmFja2Vu ZAorICAgICAgKGN1cnJlbnQtYnVmZmVyKQorICAgIChsZXQgKChyZXZpc2lvbiB2Yy10bS0tcmV2 aXNpb24pIDs7IGNhbGxlciBjb3VsZCBiZSBhIHJldmlzaW9uIGJ1ZmZlcgorICAgICAgICAgIChz b3VyY2UgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAoc2V0LWJ1ZmZlciAob3IgKGJ1ZmZlci1i YXNlLWJ1ZmZlcikgc291cmNlKSkKKyAgICAgICh2Yy1lbnN1cmUtdmMtYnVmZmVyKQorCisgICAg ICAobGV0KiAoKHBhcmVudCB2Yy1wYXJlbnQtYnVmZmVyKQorICAgICAgICAgICAgIChhYnMtZmls ZSAoYnVmZmVyLWZpbGUtbmFtZSkpCisgICAgICAgICAgICAgKGJhY2tlbmQgICh2Yy1iYWNrZW5k IGFicy1maWxlKSkKKyAgICAgICAgICAgICAod29yay1yZXYgKHZjLXdvcmtpbmctcmV2aXNpb24g YWJzLWZpbGUpKQorICAgICAgICAgICAgICh0bWJ1ZiB2Yy0tdGltZS1tYWNoaW5lKSkKKworICAg ICAgICA7OyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhIHJldmlzaW9uIHdpdGggd2hpY2ggdG8gd29y ay4KKyAgICAgICAgKHVubGVzcyByZXZpc2lvbgorICAgICAgICAgIChzZXRxIHJldmlzaW9uIHdv cmstcmV2KQorICAgICAgICAgIChzZXRxIHNvdXJjZSAoY3VycmVudC1idWZmZXIpKSkKKworICAg ICAgICA7OyBWYWxpZGF0ZSBhbnkgY3VycmVudCB0aW1lLW1hY2hpbmUgYnVmZmVyLgorICAgICAg ICAod2hlbiB0bWJ1ZgorICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHRtYnVmCisgICAg ICAgICAgICAodW5sZXNzIChhbmQgKGVxdWFsIGFicy1maWxlIHRtYnVmLS1hYnMtZmlsZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgYmFja2VuZCAgdG1idWYtLWJhY2tlbmQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgVE9ETzogY29uZmlybSB0aGF0IHJldmlzaW9uIGlz IGluIHRtYnVmLS1icmFuY2gtcmV2aXNpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgOzsgRGlzY2FyZCBhbiB1bnZhbGlkYXRlIFRNIGJ1ZmZlci4KKyAgICAg ICAgICAgICAgKHNldHEgdG1idWYgbmlsKSkpKQorCisgICAgICAgIDs7IENyZWF0ZSBhIGZyZXNo IFRNIGJ1ZmZlciBpZiBuZWVkZWQuCisgICAgICAgICh1bmxlc3MgdG1idWYKKyAgICAgICAgICAo d2l0aC1jdXJyZW50LWJ1ZmZlciAoc2V0cSB0bWJ1ZiAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipuYXNj ZW50IFRNKiIpKQorICAgICAgICAgICAgKHNldHEgdmMtcGFyZW50LWJ1ZmZlciBwYXJlbnQpCisg ICAgICAgICAgICAoc2V0cSB2Yy0tdGltZS1tYWNoaW5lIHRtYnVmKQorICAgICAgICAgICAgKHNl dHEgdmMtdG0tLXJldmlzaW9uIHJldmlzaW9uKQorICAgICAgICAgICAgKHNldHEgdG1idWYtLWFi cy1maWxlIGFicy1maWxlKQorICAgICAgICAgICAgKHNldHEgdG1idWYtLWJhY2tlbmQgYmFja2Vu ZCkKKyAgICAgICAgICAgIChzZXRxIHRtYnVmLS1zb3VyY2UtYnVmZmVyIHNvdXJjZSkKKyAgICAg ICAgICAgIChzZXRxIHRtYnVmLS1icmFuY2gtaW5kZXggMCkKKyAgICAgICAgICAgIChzZXRxIHRt YnVmLS1icmFuY2gtcmV2aXNpb25zCisgICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZl cgorICAgICAgICAgICAgICAgICAgICAocHJvZzIKKyAgICAgICAgICAgICAgICAgICAgICAgICht ZXNzYWdlICJFbnVtZXJhdGluZyByZXZpc2lvbnMuLi4iKQorICAgICAgICAgICAgICAgICAgICAg ICAgKGxldCogKCh2ZWMgKGNsLWNvZXJjZSAodmMtY2FsbC1iYWNrZW5kIGJhY2tlbmQgJ3RtLXJl dmlzaW9ucyBhYnMtZmlsZSkgJ3ZlY3RvcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGJyYW5jaCAobnJldmVyc2UgdmVjKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJy YW5jaCkKKyAgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiRW51bWVyYXRpbmcgcmV2aXNp b25zLi4uZG9uZSIpKSkpKSkKKworICAgICAgICAoc2V0LWJ1ZmZlciB0bWJ1ZikKKyAgICAgICAg dG1idWYpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gdmMtdG0tcmV2aXNpb24taGVhZCAo KQorICAiU2hvdyB3b3JrIGZpbGUncyBjdXJyZW50IHJldmlzaW9uIG9uIGNoZWNrZWQtb3V0IGJy YW5jaC4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHdpdGgtY3VycmVudC1idWZmZXIgKHZjLXRtLS10 aW1lLW1hY2hpbmUpCisgICAgKHZjLXRtLS1zd2l0Y2gtdG8tcmV2aXNpb24gMSkpKQorCisoZGVm dW4gdmMtdG0tcmV2aXNpb24tbmV4dCAoKQorICAiU2hvdyB3b3JrIGZpbGUncyBuZXh0IHJldmlz aW9uIG9uIGNoZWNrZWQtb3V0IGJyYW5jaC4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHdpdGgtY3Vy cmVudC1idWZmZXIgKHZjLXRtLS10aW1lLW1hY2hpbmUpCisgICAgKHZjLXRtLS1zd2l0Y2gtdG8t cmV2aXNpb24gdG1idWYtLWJyYW5jaC1pbmRleCkpKQorCisoZGVmdW4gdmMtdG0tcmV2aXNpb24t cHJldmlvdXMgKCkKKyAgIlNob3cgd29yayBmaWxlJ3MgcHJldmlvdXMgcmV2aXNpb24gb24gY2hl Y2tlZC1vdXQgYnJhbmNoLiIKKyAgKGludGVyYWN0aXZlKQorICAod2l0aC1jdXJyZW50LWJ1ZmZl ciAodmMtdG0tLXRpbWUtbWFjaGluZSkKKyAgICAodmMtdG0tLXN3aXRjaC10by1yZXZpc2lvbiAo KyB0bWJ1Zi0tYnJhbmNoLWluZGV4IDIpKSkpCisKKyhkZWZ1biB2Yy10bS1yZXZpc2lvbi1pIChu dW1iZXIpCisgICJTaG93IHdvcmsgZmlsZSdzIE4ndGggbW9zdCByZWNlbnQgcmV2aXNpb24gb24g Y2hlY2tlZC1vdXQgYnJhbmNoICgxIGJlaW5nIEhFQUQpLiIKKyAgKGludGVyYWN0aXZlICJuRW50 ZXIgcmV2aXNpb24gcG9zaXRpb246ICIpCisgICh3aXRoLWN1cnJlbnQtYnVmZmVyICh2Yy10bS0t dGltZS1tYWNoaW5lKQorICAgICh2Yy10bS0tc3dpdGNoLXRvLXJldmlzaW9uIG51bWJlcikpKQor CisoZGVmdW4gdmMtdG0tcmV2aXNpb24tY29tcGxldGUtc3ViamVjdCAoKQorICAiU2hvdyB3b3Jr IGZpbGUncyByZXZpc2lvbiB2aWEgc3ViamVjdCBjb21wbGV0aW9uIG9uIGNoZWNrZWQtb3V0IGJy YW5jaC4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGxldCogKChzIChjb21wbGV0aW5nLXJlYWQKKyAg ICAgICAgICAgICAiQ29tbWl0IHN1YmplY3Q6ICIKKyAgICAgICAgICAgICAobWFwY2FyIChhcHBs eS1wYXJ0aWFsbHkgIydudGggMikgdG1idWYtLWJyYW5jaC1yZXZpc2lvbnMpKSkpCisgICAgKHZj LXRtLS1zd2l0Y2gtdG8tcmV2aXNpb24KKyAgICAgKGNsLWxvb3AgZm9yIHJldmlzaW9uLW51bWJl ciBmcm9tIDEKKyAgICAgICAgICAgICAgZm9yIGluZm8gYWNyb3NzIHRtYnVmLS1icmFuY2gtcmV2 aXNpb25zCisgICAgICAgICAgICAgIGlmIChlcXVhbCBzIChudGggMiBpbmZvKSkgcmV0dXJuIHJl dmlzaW9uLW51bWJlcgorICAgICAgICAgICAgICBmaW5hbGx5IChlcnJvciAiU3ViamVjdCBub3Qg Zm91bmQiKSkpKSkKKworKGRlZnVuIHZjLXRtLS1zd2l0Y2gtdG8tcmV2aXNpb24gKHRvLW51bWJl cikKKyAgIlNob3cgd29yayBmaWxlJ3MgcmV2aXNpb24gYXQgcG9zaXRpb24gVE8tTlVNQkVSIG9u IGNoZWNrZWQtb3V0IGJyYW5jaC4iCisgIChsZXQgKChicmFuY2gtbGVuZ3RoIChsZW5ndGggdG1i dWYtLWJyYW5jaC1yZXZpc2lvbnMpKQorICAgICAgICAodG8taW5kZXggKDEtIHRvLW51bWJlcikp CisgICAgICAgIChjYWxsaW5nLXdpbmRvdy1idWZmZXIgKHdpbmRvdy1idWZmZXIpKQorICAgICAg ICAoY3Vyc29yLXdpbi1wb3MpKQorICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGNhbGxpbmctd2lu ZG93LWJ1ZmZlcgorICAgICAgKHNldHEgY3Vyc29yLXdpbi1wb3MgKHZjLXRtLS1nZXQtY3Vyc29y LXdpbi1wb3NpdGlvbikpKQorICAgIChjb25kCisgICAgICgoPCB0by1udW1iZXIgMSkKKyAgICAg IChlcnJvciAiJXMiICJUaGlzIGlzIHRoZSBIRUFEIHJldmlzaW9uOyB0aGVyZSBhcmUgbm9uZSBu ZXdlciIpKQorICAgICAoKD49IHRvLWluZGV4IGJyYW5jaC1sZW5ndGgpCisgICAgICAoZXJyb3Ig IlRoZXJlIGlzIG5vIHJldmlzaW9uICVkICh0aGUgb2xkZXN0IHJldmlzaW9uIGlzICVkKSIKKyAg ICAgICAgICAgICB0by1udW1iZXIgYnJhbmNoLWxlbmd0aCkpCisgICAgICh0CisgICAgICAobGV0 KiAoKG5ldy1yZXZpc2lvbi1pbmZvICh2Yy10bS0tdG1idWYtcmV2aXNpb24taW5mbyB0by1pbmRl eCkpCisgICAgICAgICAgICAgKG5ldy1yZXZpc2lvbiAoY2FyIG5ldy1yZXZpc2lvbi1pbmZvKSkK KyAgICAgICAgICAgICAoYWJicmV2LXJldiAodmMtdG0tLWFiYnJldmlhdGUgbmV3LXJldmlzaW9u KSkKKyAgICAgICAgICAgICAoZGF0ZSAobnRoIDEgbmV3LXJldmlzaW9uLWluZm8pKQorICAgICAg ICAgICAgIChuLW9mLW0gKGZvcm1hdCAiIFslZC8lZCAlc10iIHRvLW51bWJlciBicmFuY2gtbGVu Z3RoIGRhdGUpKQorICAgICAgICAgICAgIDs7IFVzZSB0aGUgZmlsZS1uYW1lIGZyb20gbmV3LXJl dmlzaW9uLWluZm8gdG8gcmV2ZWFsIHJlbmFtZXMuCisgICAgICAgICAgICAgKGZpbGUtbmFtZSAo ZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSAobnRoIDQgbmV3LXJldmlzaW9uLWluZm8pKSkKKyAgICAg ICAgICAgICAodG1idWYgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgICAgICAgICAoZnJvbS1saW5l IChsaW5lLW51bWJlci1hdC1wb3MpKQorICAgICAgICAgICAgICh0by1saW5lIGZyb20tbGluZSkp CisgICAgICAgICh3aGVuIHZjLXRtLS1yZXZpc2lvbgorICAgICAgICAgICh1bmxlc3MgKD0gdG1i dWYtLWJyYW5jaC1pbmRleCB0by1pbmRleCkKKyAgICAgICAgICAgIChzZXRxIHRvLWxpbmUgKHZj LXRtLS1tYXAtbGluZSBmcm9tLWxpbmUgdG8taW5kZXgpKSkpCisgICAgICAgICh2Yy1maW5kLXJl dmlzaW9uIHRtYnVmLS1hYnMtZmlsZSBuZXctcmV2aXNpb24gdG1idWYtLWJhY2tlbmQgdG1idWYp CisgICAgICAgIDs7IFJldXNlIHRpbWVtYWNoaW5lIHdpbmRvd3MsIG90aGVyd2lzZSBjcmVhdGUg dGhlbSBpbiBzb21lIG90aGVyLXdpbmRvdy4KKyAgICAgICAgKGlmIChlcSBjYWxsaW5nLXdpbmRv dy1idWZmZXIgdG1idWYpCisgICAgICAgICAgICAoc3dpdGNoLXRvLWJ1ZmZlciB0bWJ1ZikKKyAg ICAgICAgICAoc3dpdGNoLXRvLWJ1ZmZlci1vdGhlci13aW5kb3cgdG1idWYpKQorICAgICAgICAo dmMtdG0tbW9kZSArMSkKKyAgICAgICAgKGZvcndhcmQtbGluZSAoLSB0by1saW5lIChsaW5lLW51 bWJlci1hdC1wb3MpKSkKKyAgICAgICAgKHZjLXRtLS1zZXQtY3Vyc29yLXdpbi1wb3NpdGlvbiBj dXJzb3Itd2luLXBvcykKKyAgICAgICAgKHNldHEgdG1idWYtLWJyYW5jaC1pbmRleCB0by1pbmRl eCkKKworICAgICAgICAocmVuYW1lLWJ1ZmZlciAoY29uY2F0IGZpbGUtbmFtZSAiICIgYWJicmV2 LXJldikgdCkKKyAgICAgICAgKHNldHEgbW9kZS1saW5lLWJ1ZmZlci1pZGVudGlmaWNhdGlvbgor ICAgICAgICAgICAgICAobGlzdCAocHJvcGVydGl6ZWQtYnVmZmVyLWlkZW50aWZpY2F0aW9uICIl MTJiIikgbi1vZi1tKSkKKworICAgICAgICAod2hlbiB2Yy10bS1lY2hvLWFyZWEKKyAgICAgICAg ICAodmMtdG0tLXNob3ctZWNoby1hcmVhLWRldGFpbHMgbmV3LXJldmlzaW9uLWluZm8pKSkpCisg ICAgICAodmMtdG0tLWVybS13b3JrYXJvdW5kKSkpKQorCisKKyhkZWZ1biB2Yy10bS0tbWFwLWxp bmUgKGZyb20tbGluZSB0by1pbmRleCkKKyAgIlJldHVybiBhIHN1Z2dlc3RlZCBuZXcgY3VycmVu dC1saW5lIGFmdGVyIGEgcmV2aXNpb24ganVtcC4iCisgIDs7IE5ld2VyIGFuZCBvbGRlciBhcmUg Zmlyc3QgZ3Vlc3Nlczsgc3Vic2VxdWVudGx5IHRoZXkgbWF5IGdldCBzd2FwcGVkLgorICAobGV0 KiAoKHRvLWluZm8gKHZjLXRtLS10bWJ1Zi1yZXZpc2lvbi1pbmZvIHRvLWluZGV4KSkKKyAgICAg ICAgICh0by1yZXZpc2lvbiAoY2FyIHRvLWluZm8pKQorICAgICAgICAgKGZyb20tcmV2aXNpb24g dmMtdG0tLXJldmlzaW9uKQorICAgICAgICAgKGZyb20taXMtb2xkZXIgKDwgdG1idWYtLWJyYW5j aC1pbmRleCB0by1pbmRleCkpCisgICAgICAgICAoYmFja2VuZCB0bWJ1Zi0tYmFja2VuZCkKKyAg ICAgICAgIChhYnMtZmlsZSB0bWJ1Zi0tYWJzLWZpbGUpKQorICAgICh3aXRoLXRlbXAtYnVmZmVy CisgICAgICAodmMtY2FsbC1iYWNrZW5kIGJhY2tlbmQgJ3RtLW1hcC1saW5lIGFicy1maWxlCisg ICAgICAgICAgICAgICAgICAgICAgIGZyb20tcmV2aXNpb24gZnJvbS1saW5lIHRvLXJldmlzaW9u IGZyb20taXMtb2xkZXIpKSkpCisKKyhkZWZ1biB2Yy1kZWZhdWx0LXRtLW1hcC1saW5lIChfYmFj a2VuZCBfcmVsLWZpbGUgX2Zyb20tcmV2aXNpb24gZnJvbS1saW5lCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX3RvLXJldmlzaW9uIF9mcm9tLWlzLW9sZGVyKQorICAiRGVm YXVsdCBgbWFwLWxpbmUnIGltcGxlbWVudGF0aW9uLgorSXQgbWVyZWx5IHJldHVybnMgRlJPTS1M SU5FLiIKKyAgZnJvbS1saW5lKQorCisoZGVmdW4gdmMtdG0tLXNob3ctZWNoby1hcmVhLWRldGFp bHMgKHJldmlzaW9uLWluZm8pCisgICJTaG93IGRldGFpbHMgZm9yIFJFVklTSU9OLUlORk8gaW4g ZWNoby1hcmVhLiIKKyAgKGxldCogKChkYXRlIChudGggMSByZXZpc2lvbi1pbmZvKSkKKyAgICAg ICAgIChhdXRob3IgKGlmIHZjLXRtLXNob3ctYXV0aG9yIChjb25jYXQgIiB8ICIgKG50aCAzIHJl dmlzaW9uLWluZm8pKSAiIikpCisgICAgICAgICAoc2hhLW9yLXN1YmplY3QgKGlmIChlcSB2Yy10 bS1lY2hvLWFyZWEtZGV0YWlsICdjb21taXQpIChjYXIgcmV2aXNpb24taW5mbykgKG50aCAyIHJl dmlzaW9uLWluZm8pKSkpCisgICAgKG1lc3NhZ2UgIiVzJXM6ICVzIgorICAgICAgICAgICAgIGRh dGUKKyAgICAgICAgICAgICAocHJvcGVydGl6ZSBhdXRob3IgJ2ZhY2UgJ3ZjLXRtLWVjaG8tYXJl YS1hdXRob3ItZmFjZSkKKyAgICAgICAgICAgICAocHJvcGVydGl6ZSBzaGEtb3Itc3ViamVjdCAn ZmFjZSAndmMtdG0tZWNoby1hcmVhLWRldGFpbC1mYWNlKSkpKQorCisoZGVmdW4gdmMtdG0tZm9y bWF0LWRhdGUgKGRhdGUpCisgICJSZXR1cm4gZGF0ZSBmb3JtYXR0ZWQgcGVyIHRoZSB1c2VyJ3Mg dmMtdG0tZGF0ZS1mb3JtYXQuIgorICAoZm9ybWF0LXRpbWUtc3RyaW5nIHZjLXRtLWRhdGUtZm9y bWF0IChkYXRlLXRvLXRpbWUgZGF0ZSkpKQorCisoZGVjbGFyZS1mdW5jdGlvbiBlcm0tcmVzZXQt YnVmZmVyICJleHQ6ZW5oLXJ1YnktbW9kZSIpCisKKyhkZWZ1biB2Yy10bS0tZXJtLXdvcmthcm91 bmQgKCkKKyAgIldvcmthcm91bmQgZm9yIGVuaGFuY2VkIHJ1YnkgbW9kZSBub3QgZGV0ZWN0aW5n IHJldmlzaW9uIGNoYW5nZS4iCisgICh3aGVuIChlcSBtYWpvci1tb2RlICdlbmgtcnVieS1tb2Rl KQorICAgIChpZ25vcmUtZXJyb3JzIChlcm0tcmVzZXQtYnVmZmVyKSkpKQorCisoZGVmdW4gdmMt dG0tLWdldC1jdXJzb3Itd2luLXBvc2l0aW9uICgpCisgICJSZXR1cm4gdGhlIGN1cnNvciB2aXN1 YWwgbGluZSBudW1iZXIgdy5yLnQuIHRoZSBjdXJyZW50IHdpbmRvdyBmaXJzdCBsaW5lLiIKKyAg KGxldCogKCh3aW4tcG9pbnQtbWluIChzYXZlLWV4Y3Vyc2lvbiAobW92ZS10by13aW5kb3ctbGlu ZSAwKSAocG9pbnQpKSkKKyAgICAgICAgIChjdXItcG9zIChjb3VudC1zY3JlZW4tbGluZXMgd2lu LXBvaW50LW1pbiAocG9pbnQpKSkpCisgICAgY3VyLXBvcykpCisKKyhkZWZ1biB2Yy10bS0tc2V0 LWN1cnNvci13aW4tcG9zaXRpb24gKFBPUykKKyAgIlNldCB0aGUgY3Vyc29yIHBvc2l0aW9uIHRv IHRoZSBQT1MgdmlzdWFsIGxpbmUgdy5yLnQuIHRoZSB3aW5kb3cgZmlyc3QgbGluZS4iCisgIChy ZWNlbnRlciBQT1MpKQorCisoZGVmdW4gdmMtdG0tLWFiYnJldmlhdGUgKHJldmlzaW9uKQorICAi UmV0dXJuIFJFVklTSU9OIGFiYnJldmlhdGVkIHRvIGB2Yy10bS1hYmJyZXZpYXRpb24tbGVuZ3Ro JyBjaGFycy4iCisgIChpZiAobGVuZ3RoPCByZXZpc2lvbiB2Yy10bS1hYmJyZXZpYXRpb24tbGVu Z3RoKQorICAgICAgcmV2aXNpb24KKyAgICAoc3Vic3RyaW5nIHJldmlzaW9uIDAgdmMtdG0tYWJi cmV2aWF0aW9uLWxlbmd0aCkpKQorCisoZGVmdW4gdmMtdG0tcmV2aXNpb24tdG8ta2lsbC1yaW5n ICgpCisgICJLaWxsIHRoZSBjdXJyZW50IHJldmlzaW9ucyBhYmJyZXZpYXRlZCBjb21taXQgaGFz aC4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGxldCAoKHJldmlzaW9uICh2Yy10bS0tdG1idWYtcmV2 aXNpb24pKSkKKyAgICAobWVzc2FnZSByZXZpc2lvbikKKyAgICAoa2lsbC1uZXcgcmV2aXNpb24p KSkKKworKGRlZnVuIHZjLXRtLWFiYnJldmlhdGVkLXJldmlzaW9uLXRvLWtpbGwtcmluZyAoKQor ICAiS2lsbCB0aGUgY3VycmVudCByZXZpc2lvbnMgZnVsbCBjb21taXQgaGFzaC4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKGxldCAoKHJldmlzaW9uICh2Yy10bS0tYWJicmV2aWF0ZSAodmMtdG0tLXRt YnVmLXJldmlzaW9uKSkpKQorICAgIChtZXNzYWdlIHJldmlzaW9uKQorICAgIChraWxsLW5ldyBy ZXZpc2lvbikpKQorCis7OyAoZGVmdW4gdmMtdG0tc2hvdy1jb21taXQgKCkKKzs7ICAgIlNob3cg Y29tbWl0IGZvciBjdXJyZW50IHJldmlzaW9uLiIKKzs7ICAgKGludGVyYWN0aXZlKQorOzsgICAo bGV0ICgocmV2ICh2Yy10bS0tdG1idWYtcmV2aXNpb24pKSkKKzs7ICAgICAoaWYgKGZib3VuZHAg J21hZ2l0LXNob3ctY29tbWl0KQorOzsgICAgICAgICAobWFnaXQtc2hvdy1jb21taXQgcmV2KQor OzsgICAgICAgKG1lc3NhZ2UgIllvdSBuZWVkIHRvIGluc3RhbGwgbWFnaXQgdG8gc2hvdyBjb21t aXQiKSkpKQorCis7OyAoZGVmdW4gdmMtdG0tYmxhbWUgKCkKKzs7ICAgIkNhbGwg4oCYbWFnaXQt YmxhbWXigJkgb24gY3VycmVudCByZXZpc2lvbi4iCis7OyAgIChpbnRlcmFjdGl2ZSkKKzs7ICAg KGlmIChmYm91bmRwICdtYWdpdC1ibGFtZSkKKzs7ICAgICAgIChsZXQgKChtYWdpdC1idWZmZXIt cmV2aXNpb24gKGNhciB0bS0tcmV2aXNpb24taW5mbykpKQorOzsgICAgICAobWFnaXQtYmxhbWUp KQorOzsgICAgIChtZXNzYWdlICJZb3UgbmVlZCB0byBpbnN0YWxsIG1hZ2l0IGZvciBibGFtZSBj YXBhYmlsaXRpZXMiKSkpCisKKyhkZWZ1biB2Yy10bS0tdG1idWYtcmV2aXNpb24gKCZvcHRpb25h bCBpbmRleCkKKyAgIlJldHVybiB0aGUgdW5pcXVlIHJldmlzaW9uIGlkIGZvciB0aGlzIHRtYnVm J3MgY3VycmVudCByZXZpc2lvbi4iCisgIChjYXIgKHZjLXRtLS10bWJ1Zi1yZXZpc2lvbi1pbmZv IGluZGV4KSkpCisKKyhkZWZ1biB2Yy10bS0tdG1idWYtcmV2aXNpb24taW5mbyAoJm9wdGlvbmFs IGluZGV4KQorICAiUmV0dXJuIHRoZSByZXZpc2lvbi1pbmZvIGxpc3QgZm9yIHRoaXMgdG1idWYn cyBjdXJyZW50IHJldmlzaW9uLiIKKyAgKGFyZWYgdG1idWYtLWJyYW5jaC1yZXZpc2lvbnMgKG9y IGluZGV4IHRtYnVmLS1icmFuY2gtaW5kZXgpKSkKKworKGRlZnVuIHZjLXRtLXF1aXQgKCkKKyAg IkV4aXQgdGhlIHRpbWVtYWNoaW5lLiIKKyAgKGludGVyYWN0aXZlKQorICAobGV0ICgocGFyZW50 LWJ1ZmZlci1uYW1lIGJ1ZmZlci1maWxlLW5hbWUpKQorICAgIChraWxsLWJ1ZmZlcikKKyAgICAo bGV0ICgocGFyZW50LWJ1ZmZlciAoZmluZC1idWZmZXItdmlzaXRpbmcgcGFyZW50LWJ1ZmZlci1u YW1lKSkpCisgICAgICAod2hlbiAoYW5kIHBhcmVudC1idWZmZXIgdmMtdG0tcXVpdC10by1pbnZv a2luZy1idWZmZXIpCisgICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyIHBhcmVudC1idWZmZXIgbmls IHQpKSkpKQorCisodHJhbnNpZW50LWRlZmluZS1wcmVmaXggdmMtdG0taGVscCAoKQorICAiU2hv dyBvbmxpbmUgaGVscC4iCisgIFsiTmF2aWdhdGUiCisgICBbKCIsIiAic3dpdGNoIHRvIEhFQUQg cmV2aXNpb24iIHZjLXRtLXJldmlzaW9uLWhlYWQpCisgICAgKCJ+IiAic3dpdGNoIHRvIHNlbGVj dGVkIHJldmlzaW9uIGlkIiB2Yy10bS1yZXZpc2lvbi1zZWxlY3QpCisgICAgKCJuIiAic3dpdGNo IHRvIG5leHQgcmV2aXNpb24iIHZjLXRtLXJldmlzaW9uLW5leHQpCisgICAgKCJwIiAic3dpdGNo IHRvIHByZXZpb3VzIHJldmlzaW9uIiB2Yy10bS1yZXZpc2lvbi1wcmV2aW91cykKKyAgICAoImoi ICJzd2l0Y2ggdG8gaSd0aCByZXZpc2lvbiIgdmMtdG0tcmV2aXNpb24tbnRoKQorICAgICgicyIg InN3aXRjaCB0byBzdWJqZWN0IHJldmlzaW9uIiB2Yy10bS1yZXZpc2lvbi1jb21wbGV0ZS1zdWJq ZWN0KV1dCisgIFsiUmV2aXNpb24gSUQgdG8ga2lsbCByaW5nIgorICAgWygidyIgImFiYnJldmlh dGVkIHJldmlzaW9uIGlkIiB2Yy10bS1hYmJyZXZpYXRlZC1yZXZpc2lvbi10by1raWxsLXJpbmcp CisgICAgKCJXIiAiZnVsbCByZXZpc2lvbiBpZCIgdmMtdG0tcmV2aXNpb24tdG8ta2lsbC1yaW5n KV1dCisgIFsiTWlzYyIKKyAgIFsgOzsgKCJCIiAiYmxhbWUgY3VycmVudCByZXZpc2lvbiIgdmMt dG0tYmxhbWUpCis7OyAgKCJDIiAidmlldyBjb21taXQiIHZjLXRtLXNob3ctY29tbWl0KQorICAg ICgiPyIgInNob3cgaGVscCIgdmMtdG0taGVscCkKKyAgICAoInEiICJxdWl0IiB2Yy10bS1xdWl0 KV1dKQorCisoZGVmaW5lLW1pbm9yLW1vZGUgdmMtdG0tbW9kZQorICAiVkMgVGltZW1hY2hpbmUs IGZlZWwgdGhlIHdpbmdzIG9mIGhpc3RvcnkuIgorICA6aW5pdC12YWx1ZSBuaWwKKyAgOmxpZ2h0 ZXIgIiBUTSIKKyAgOmtleW1hcAorICAnKCgiLCIgLiB2Yy10bS1yZXZpc2lvbi1oZWFkKQorICAg ICgifiIgLiB2Yy10bS1yZXZpc2lvbi1zZWxlY3QpCis7OyAgKCJCIiAuIHZjLXRtLWJsYW1lKQor OzsgICgiQyIgLiB2Yy10bS1zaG93LWNvbW1pdCkKKyAgICAoImoiIC4gdmMtdG0tcmV2aXNpb24t bnRoKQorICAgICgibiIgLiB2Yy10bS1yZXZpc2lvbi1uZXh0KQorICAgICgicCIgLiB2Yy10bS1y ZXZpc2lvbi1wcmV2aW91cykKKyAgICAoInEiIC4gdmMtdG0tcXVpdCkKKyAgICAoInMiIC4gdmMt dG0tcmV2aXNpb24tY29tcGxldGUtc3ViamVjdCkKKyAgICAoIlMiIC4gdmMtdG0tcmV2aXNpb24t Y29tcGxldGUtc3ViamVjdCkgOyBpbiB2Yy1tb2RlICJzIiBpcyB2Yy1jcmVhdGUtdGFnCisgICAg KCJ3IiAuIHZjLXRtLWFiYnJldmlhdGVkLXJldmlzaW9uLXRvLWtpbGwtcmluZykKKyAgICAoIlci IC4gdmMtdG0tcmV2aXNpb24tdG8ta2lsbC1yaW5nKQorICAgICgiPyIgLiB2Yy10bS1oZWxwKSkK KyAgOmdyb3VwICd2Yy10aW1lbWFjaGluZSkKKworKHByb3ZpZGUgJ3ZjLXRpbWVtYWNoaW5lKQor Cis7OzsgdmMtdGltZW1hY2hpbmUuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9saXNwL3ZjL3Zj LmVsIGIvbGlzcC92Yy92Yy5lbAppbmRleCA1Njk3N2NiZTE2Li44OGVjMzM3NmM0IDEwMDY0NAot LS0gYS9saXNwL3ZjL3ZjLmVsCisrKyBiL2xpc3AvdmMvdmMuZWwKQEAgLTQ1NCw2ICs0NTQsNDQg QEAKIDs7ICAgUmV0dXJuIHRoZSBtb3N0IHJlY2VudCByZXZpc2lvbiBvZiBGSUxFIHRoYXQgbWFk ZSBhIGNoYW5nZQogOzsgICBvbiBMSU5FLgogCis7OyBUSU1FTUFDSElORQorOzsKKzs7IFRvIHN1 cHBvcnQgVE0gYSBiYWNrZW5kIG11c3QgaW1wbGVtZW50OgorOzsKKzs7IC0gdG0tcmV2aXNpb25z IChmaWxlICZvcHRpb25hbCBicmFuY2gpCis7OworOzsgICBSZXR1cm4gYSBsaXN0IG9mIHJldmlz aW9uLWluZm9zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldmlzaW9ucyBtb2RpZnlpbmcKKzs7ICAg RklMRSBvbiBCUkFOQ0ggd2l0aGluIFRIRSBWQ1MnUyByb290LWRpci4gIFdoZW4gQlJBTkNIIGlz IHByZXNlbnQgaXQKKzs7ICAgd2lsbCBtYXRjaCB0aGF0IG9mIHdvcmtpbmcgRklMRS4KKzs7Cis7 OyAgIEEgcmV2aXNpb24taW5mbyBpcyBhIGxpc3QgKFJFVklTSU9OLUlEIERBVEUgU1VCSkVDVCBB VVRIT1IgUkVMLUZJTEUpOgorOzsKKzs7ICAgLSBSRVZJU0lPTi1JRDogIHRoZSBWQ1MncyB1bmlx dWUgaWRlbnRpZmljYXRpb24gb2YgYSByZXZpc2lvbgorOzsgICAtIERBVEU6ICAgICAgICAgcmV2 aXNpb24gY3JlYXRpb24gZGF0ZSBmb3JtYXR0ZWQgYnkgdmMtdG0tZm9ybWF0LWRhdGUKKzs7ICAg LSBTVUJKRUNUOiAgICAgIGZpcnN0IGxpbmUgb2YgbWVzc2FnZSBzdXBwbGllZCBhdCByZXZpc2lv bidzIGNyZWF0aW9uCis7OyAgIC0gQVVUSE9SOiAgICAgICBzb21lIGluZGljYXRpb24gb2YgdGhl IHJldmlzaW9uJ3MgYXV0aG9yCis7OyAgIC0gUkVMLUZJTEU6ICAgICBWQ1Mgcm9vdC1yZWxhdGl2 ZSBwYXRoIHRvIGZpbGUKKzs7Cis7OyAgIFRoZSBoZWFkIG9mIHRoZSBsaXN0IHNob3VsZCBkZXNj cmliZSB0aGUgb2xkZXN0IHJldmlzaW9uLiAgVGhlIHRhaWwgb2YKKzs7ICAgdGhlIGxpc3Qgc2hv dWxkIGRlc2NyaWJlIHRoZSBuZXdlc3QgcmV2aXNpb24uCis7OworOzsgLSB0bS1tYXAtbGluZSAo cmVsLWZpbGUgZnJvbS1yZXZpc2lvbiBmcm9tLWxpbmUgdG8tcmV2aXNpb24gZnJvbS1pcy1vbGRl cikKKzs7Cis7OyAgIFJldHVybiBUTy1SRVZJU0lPTidzIGxpbmUgY29ycmVzcG9uZGluZyB0byBG Uk9NLVJFVklTSU9OJ3MgRlJPTS1MSU5FLgorOzsgICBGUk9NLVJFVklTSU9OIGFuZCBUTy1SRVZJ U0lPTiBhcmUgZ3VhcmFudGVlZCBkaXN0aW5jdC4gIEZST00tSVMtT0xERVIKKzs7ICAgaW5kaWNh dGVzIHJlbGF0aXZlIHRlbXBvcmFsIG9yZGVyaW5nIG9mIEZST00tUkVWSVNJT04gYW5kIFRPLVJF VklTSU9OCis7OyAgIG9uIHRoZSBicmFuY2guCis7OworOzsgICBPbiBlbnRyeSBkZWZhdWx0LWRp cmVjdG9yeSBpcyB0aGUgVkNTJ3MgYWJzLXJvb3QsIFJFTC1GSUxFIGlzIHRoZSBwYXRoCis7OyAg IHJlbGF0aXZlIHRvIHRoZSBmaWxlIGJlaW5nIGRpc3BsYXllZCBhbmQgdGhlIGN1cnJlbnQtYnVm ZmVyIGlzIGFuIGVtcHR5Cis7OyAgIHRlbXBvcmFyeSBidWZmZXIuCis7OworOzsgICBWQyBzdXBw bGllcyBhIHRyaXZpYWwgdmMtZGVmYXVsdC10bS1tYXAtbGluZS4gIEl0IHJldHVybnMgRlJPTS1M SU5FLAorOzsgICBlZmZlY3RpdmVseSBhc3NlcnRpbmcgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBs aW5lIGluIHRoZSBUTy1SRVZJU0lPTgorOzsgICBvY2N1cnMgYXQgZXhhY3RseSB0aGUgc2FtZSBs aW5lIG51bWJlci4gIHZjLWdpdC5lbCdzIGltcGxlbWVudGF0aW9uCis7OyAgIGlzIGNvbXBsZXRl IGFuZCByZWFzb25hYmx5IHVuZGVyc3RhbmRhYmxlLiAgKFVuZm9ydHVuYXRlbHksIGl0IHVzZXMK Kzs7ICAgbWFueSB1bmlxdWUgZmVhdHVyZXMgb2YgZ2l0IGJsYW1lIHRoYXQgbWF5IG5vdCBleGlz dCBpbiBvdGhlciBWQ1NzLikKKwogOzsgVEFHL0JSQU5DSCBTWVNURU0KIDs7CiA7OyAtIGNyZWF0 ZS10YWcgKGRpciBuYW1lIGJyYW5jaHApCkBAIC0xMTk2LDEwICsxMjM0LDExIEBAIHZjLWVuc3Vy ZS12Yy1idWZmZXIKIAkJOzsgY3VycmVudCBidWZmZXIgYXJlIHRoZSBzYW1lIGJ1ZmZlci4KICAJ CShub3QgKGVxIHZjLXBhcmVudC1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpKQogICAgICAgKHNl dC1idWZmZXIgdmMtcGFyZW50LWJ1ZmZlcikpKSkKLSAgKGlmIChub3QgYnVmZmVyLWZpbGUtbmFt ZSkKLSAgICAgIChlcnJvciAiQnVmZmVyICVzIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYSBmaWxl IiAoYnVmZmVyLW5hbWUpKQotICAgICh1bmxlc3MgKHZjLWJhY2tlbmQgYnVmZmVyLWZpbGUtbmFt ZSkKLSAgICAgIChlcnJvciAiRmlsZSAlcyBpcyBub3QgdW5kZXIgdmVyc2lvbiBjb250cm9sIiBi dWZmZXItZmlsZS1uYW1lKSkpKQorICAoY29uZAorICAgKChub3QgYnVmZmVyLWZpbGUtbmFtZSkK KyAgICAoZXJyb3IgIkJ1ZmZlciAnJXMnIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYSBmaWxlIiAo YnVmZmVyLW5hbWUpKSkKKyAgICgodW5sZXNzICh2Yy1iYWNrZW5kIGJ1ZmZlci1maWxlLW5hbWUp CisgICAgICAoZXJyb3IgIkZpbGUgJyVzJyBpcyBub3QgdW5kZXIgdmVyc2lvbiBjb250cm9sIiBi dWZmZXItZmlsZS1uYW1lKSkpKSkKIAogOzs7IFN1cHBvcnQgZm9yIHRoZSBDLXggdiB2IGNvbW1h bmQuCiA7OyBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgc2luZ2xlLWZpbGUtb3JpZW50ZWQgY29kZSBm cm9tIGJlZm9yZSB0aGUgZmlsZXNldAotLSAKMi4zNy4yCgo= --0000000000002ddb5005f3224a44 Content-Type: text/x-patch; charset="US-ASCII"; name="0003-Introduce-vc-bos-backup-on-save-to-an-RCS-file.patch" Content-Disposition: attachment; filename="0003-Introduce-vc-bos-backup-on-save-to-an-RCS-file.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ldciswc30> X-Attachment-Id: f_ldciswc30 RnJvbSA3N2FiMDZjZjllMmJkM2RiZTg3OGRmNWJiMDdlYWRiYTVkYWRkYzQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSm9obiBTLiBZYXRlcywgSnIiIDxqb2huQHlhdGVzLXNoZWV0 cy5vcmc+CkRhdGU6IFdlZCwgMjUgSmFuIDIwMjMgMjA6NTg6NTkgLTA1MDAKU3ViamVjdDogW1BB VENIIDMvM10gSW50cm9kdWNlIHZjLWJvczogYmFja3VwIG9uIHNhdmUgKHRvIGFuIFJDUyBmaWxl KQoKVGhlIGRyZWFtIG9mIHRoaXMgdmMtYm9zIGNhcGFiaWxpdHkgd2FzIHdoYXQgZmlyc3QgZ290 IG1lIHdvcmtpbmcgb24KdmMtdGltZW1hY2hpbmUuICBGcm9tIHZjLWJvcy5lbCdzIGZyb250LW1h dHRlcjoKCiAgICA7OyBNb2Rlcm4gdmVyc2lvbiBjb250cm9sIHN5c3RlbXMsIHN1Y2ggYXMgZ2l0 LCBhcmUgd29uZGVyZnVsLiAgQnV0IHRoZXkKICAgIDs7IGhhdmUgZHJhd2JhY2tzIHdoZW4gZGVh bGluZyB3aXRoIGxpZ2h0d2VpZ2h0IHNhdmUgb3BlcmF0aW9uczoKICAgIDs7CiAgICA7OyAqIFRv byBpbnZhc2l2ZTogbmV3IHJldmlzaW9ucyBhcmUgY3JlYXRlZCBvbmx5IGJ5IGV4cGxpY2l0bHkg YWN0aW9uOwogICAgOzsgICB0aGlzIGluY2x1ZGVzIHN1cHBseWluZyBhIGNvbW1pdCBtZXNzYWdl IChldmVuIGlmIGVtcHR5KQogICAgOzsgKiBUb28gY29hcnNlOiBhIHJldmlzaW9uIGNhcHR1cmVz IGFuIGVudGlyZSAicHJvamVjdCIKICAgIDs7ICogVG9vIHNtYXJ0OiBldmVuIGZpbGVzIGxpc3Rl ZCBpbiAuZ2l0aWdub3JlIChvciBlcXVpdmFsZW50KSByZW1haW4KICAgIDs7ICAgZWxpZ2libGUg Zm9yIGVkdGluZyBhbmQgaGVuY2UgZGVzZXJ2ZSB0byBnZXQgYmFja2VkLXVwCiAgICA7OyAqIFJl cXVpcmVzIHNldHVwOiB3aGF0IGFib3V0IGZpbGVzIHRoYXQgaGF2ZSBubyBwcm9qZWN0PwogICAg OzsKICAgIDs7IEVudGVyIHZjLWJvcy4uLgogICAgOzsKICAgIDs7IHZjLWJvcyBwcm92aWRlcyBl YXN5IGFjY2VzcyB0byBwYXN0IHJldmlzaW9ucyBvZiBlZGl0ZWQgZmlsZXMgYnkKICAgIDs7IGlu dGVncmF0aW5nIHdpdGggVkMncyB0aW1lbWFjaGluZSBmdW5jdGlvbmFsaXR5LiAgVG8gZG8gdGhp cyBpdAogICAgOzsgcmVxdWlyZXMgdGhhdCBWQydzIHZjLWNhY2hlLXJvb3QgYmUgc2V0IGFuZCB0 aGF0IGl0IGhhdmUgJy9SQ1MnIGFzCiAgICA7OyBvbmUgb2YgaXRzIGRpcmVjdG9yeSBjb21wb25l bnRzICh0eXBpY2FsbHkgdGhlIGxhc3QpLgogICAgOzsKICAgIDs7IEdpdmVuIHN1Y2ggYSBjb25m aWd1cmF0aW9uLCB2Yy1ib3MgbWFpbnRhaW5zIGEgbWlycm9yIHRyZWUgb2YgUkNTCiAgICA7OyBj b250cm9sIGZpbGVzIGJlbG93IHZjLWNhY2hlLXJvb3QuICBBIGNvbnRyb2wgZmlsZSBhcHBlYXJz IGF0IHRoZQogICAgOzsgc2FtZSBwb3NpdGlvbiBhbmQgaGFzIGV4YWN0bHkgdGhlIHNhbWUgbmFt ZSBhcyB0aGUgZmlsZSB0aGF0IGl0CiAgICA7OyB0cmFja3MgKG1lYW5pbmcgbm8gJyx2JyBzdWZm aXgpLiAgVGhpcyB3b3JrcyBiZWNhdXNlIFJDUyB0cmVhdHMKICAgIDs7ICphbnkqIGZpbGUgKmFu eXdoZXJlKiBiZW5lYXRoIGFuIFJDUyBkaXJlY3RvcnkgYXMgYSBjb250cm9sIGZpbGUuCiAgICA7 OwogICAgOzsgT24gRklSU1QgY2hhbmdlIGFuZCBFVkVSWSBzdWJzZXF1ZW50IHNhdmUgY3gtYm9z OgogICAgOzsKICAgIDs7ICogUXVhbGlmaWVzIHRoZSBidWZmZXIncyBwYXRoCiAgICA7OyAqIEVu c3VyZXMgZXhpc3RlbmNlIG9mIGEgbWlycm9yIGRpcmVjdG9yeSBiZW5lYXRoIHZjLWNhY2hlLXJv b3QKICAgIDs7ICogUmVjb3JkcyB0aGUgbmV3bHkgc2F2ZWQgZmlsZSBhcyB0aGUgbGF0ZXN0IFJD UyByZXZpc2lvbiB3aXRoCiAgICA7OyAgIGFuIGVtcHR5IGNvbW1pdCBtZXNzYWdlCiAgICA7Owog ICAgOzsgdmMtYm9zJ3MgdHJhY2tpbmcgaXMgaW5kZXBlbmRlbnQgb2Ygd2hldGhlciBhIGZpbGUg aXMgdHJhY2sgYnkKICAgIDs7IGFueSBvdGhlciBWQ1MuCgpUaHVzLCB2Yy1ib3MgaXMgYm90aCBh IG1pbmltYWxseSBpbnZhc2l2ZSB3YXkgdG8gY2FwdHVyZSBzYXZlIGhpc3RvcnkgZm9yCmFyYml0 cmFyeSBmaWxlcyBhbmQgYSBjb252ZW5pZW50IHdheSBvZiBhY2Nlc3MgdGhhdCBoaXN0b3J5LgoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQoKdmMtYm9zIGxldmVyYWdlcyB2Yy10aW1lbWFjaGluZSB0byBw cm92aWRlIGVhc3kgYWNjZXNzIHRvIHJldmlzaW9ucwpyZWNvcmRlZCBhdCB0aGUgcG9pbnQgb2Yg c2F2aW5nIGEgZmlsZS4gIEl0IGlzIGltcGxlbWVudGVkIGFzIGEgbmV3Cm1pbm9yIG1vZGUuCgoq IHZjLWJvcy5lbDogbmV3IGZpbGU7IGltcGxlbWVudHMgYW4gZXh0cmVtZWx5IG1pbmltYWwgdmMg YmFja2VuZAoqIHZjLXJjcy5lbCAodmMtcmNzLXRtLXJldmlzaW9ucyk6IHNwbGl0IG91dCB2Yy1y Y3MtdG0tcmV2aXNpb25zLXBhcnNlLWxvZwogIHNvIHRoYXQgaXQgY2FuIGJlIHNoYXJlZCB3aXRo IHZjLWJvcy10bS1yZXZpc2lvbnMuCiAgKHZjLXJjcy10bS1yZXZpc2lvbnMtcGFyc2UtbG9nKTog cmVjb3JkIGVtcHR5IHN1YmplY3QgYXMgbmlsIGluc3RlYWQgb2YgIiIKKiB2Yy10aW1lbWFjaGlu ZSAodmMtdG0tcmV2aXNpb24taGVhZCk6IHdoZW4gcHJlZml4IGFyZyBpcyBwcmVzZW50IGJpbmQg bmV3CiAgdmMtZm9yY2UtYm9zIHRvIHRyaWdnZXIgdXNlIG9mIHZjLWJvcyBiYWNrZW5kIChldmVu IHdoZW4gZmlsZSBpcyByZWdpc3RlcmVkCiAgd2l0aCBzb21lIG90aGVyIHZjIGJhY2tlbmQpCiAg KHZjLXRtLS1zd2l0Y2gtdG8tcmV2aXNpb24pOiBwYXNzIHRtYnVmLS1iYWNrZW5kIHZjLWZpbmQt cmV2aXNpb24gc28gYXMgdG8KICBwcm9wYWdhdGUgYm9zIGhhbmRsaW5nCiAgKHZjLXRtLS1zaG93 LWVjaG8tYXJlYS1kZXRhaWxzKTogaWYgYmFja2VuZCBpcyAnYm9zIHRoZW4gc3VwcHJlc3Mgd29y dGhsZXNzCiAgYXV0aG9yIGFuZCBzdWJqZWN0CiAgKiB2Yy5lbCAodmMtZW5zdXJlLXZjLWJ1ZmZl cik6IGltcHJvdmUgZGlhZ25vc3RpYyB3aGVuIHVzZXIgYXR0ZW1wdCB0bwogIGluaXRpYXRlIGEg dGltZW1hY2hpbmUgb24gYSBmaWxlIHRoYXQgaXMgbm90IHJlZ2lzdGVyIHdpdGggYW55IHZjIGJh Y2tlbmQKICAodmMtZmluZC1yZXZpc2lvbik6IGNhbGwgdmMtYm9zLWZpbmQtcmV2aXNpb24gd2hl biBiYWNrZW5kIGlzICdib3MKLS0tCiBsaXNwL3ZjL3ZjLWJvcy5lbCAgICAgICAgIHwgMjA3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaXNwL3ZjL3ZjLWdpdC5lbCAg ICAgICAgIHwgICAyIC0KIGxpc3AvdmMvdmMtcmNzLmVsICAgICAgICAgfCAgIDIgKy0KIGxpc3Av dmMvdmMtdGltZW1hY2hpbmUuZWwgfCAgNDAgKysrKystLS0KIGxpc3AvdmMvdmMuZWwgICAgICAg ICAgICAgfCAgMjggKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDI1NyBpbnNlcnRpb25zKCspLCAy MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaXNwL3ZjL3ZjLWJvcy5lbAoKZGlm ZiAtLWdpdCBhL2xpc3AvdmMvdmMtYm9zLmVsIGIvbGlzcC92Yy92Yy1ib3MuZWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTY4OWEyY2RhMwotLS0gL2Rldi9udWxsCisr KyBiL2xpc3AvdmMvdmMtYm9zLmVsCkBAIC0wLDAgKzEsMjA3IEBACis7OzsgdmMtYm9zLmVsIC0t LSBWQyBCYWNrdXAgT24gU2F2ZSAodG8gUkNTKQorCis7OyBDb3B5cmlnaHQgKEMpIDIwMjMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKzs7IEF1dGhvcjogQmVuamFtaW4gUnV0dCA8 YnJ1dHRAYmxvb21pbmd0b24uaW4udXM+Cis7OyBNYWludGFpbmVyOiBDb25vciBOYXNoIDxjb25v ckBuYXNoY29idXNpbmVzc3NlcnZpY2VzbGxjLmNvbT4KKzs7IE1haW50YWluZXI6IEpvaG4gUy4g WWF0ZXMsIEpyLiA8am9obkB5YXRlcy1zaGVldHMub3JnPgorOzsgVmVyc2lvbjogMC44CisKKzs7 IFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorOzsgYW55IGxhdGVyIHZl cnNpb24uCisKKzs7IFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRo IEdOVSBFbWFjczsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvCis7OyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsCis7OyBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKworOzs7IENyZWRpdHM6Cis7 OworOzsgQXV0aG9yOiAgICAgQmVuamFtaW4gUnV0dCAgICAgIDxicnV0dEBibG9vbWluZ3Rvbi5p bi51cz4KKzs7IE1haW50YWluZXI6IEpvaG4gUy4gWWF0ZXMsIEpyLiA8am9obkB5YXRlcy1zaGVl dHMub3JnPgorCis7OzsgQ29tbWVudGFyeToKKworOzsgRGVyaXZlZCBmcm9tIGFuZCB0aGVuIGhl YXZpbHkgbW9kaWZpZWQ6Cis7OyAgIGh0dHBzOi8vd3d3LmVtYWNzd2lraS5vcmcvZW1hY3MvYmFj a3VwLWVhY2gtc2F2ZS5lbAorOzsKKzs7IE1vZGVybiB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLCBz dWNoIGFzIGdpdCwgYXJlIHdvbmRlcmZ1bC4gIEJ1dCB0aGV5Cis7OyBoYXZlIGRyYXdiYWNrcyB3 aGVuIGRlYWxpbmcgd2l0aCBsaWdodHdlaWdodCBzYXZlIG9wZXJhdGlvbnM6Cis7OworOzsgKiBU b28gaW52YXNpdmU6IG5ldyByZXZpc2lvbnMgYXJlIGNyZWF0ZWQgb25seSBieSBleHBsaWNpdGx5 IGFjdGlvbjsKKzs7ICAgdGhpcyBpbmNsdWRlcyBzdXBwbHlpbmcgYSBjb21taXQgbWVzc2FnZSAo ZXZlbiBpZiBlbXB0eSkKKzs7ICogVG9vIGNvYXJzZTogYSByZXZpc2lvbiBjYXB0dXJlcyBhbiBl bnRpcmUgInByb2plY3QiCis7OyAqIFRvbyBzbWFydDogZXZlbiBmaWxlcyBsaXN0ZWQgaW4gLmdp dGlnbm9yZSAob3IgZXF1aXZhbGVudCkgcmVtYWluCis7OyAgIGVsaWdpYmxlIGZvciBlZHRpbmcg YW5kIGhlbmNlIGRlc2VydmUgdG8gZ2V0IGJhY2tlZC11cAorOzsgKiBSZXF1aXJlcyBzZXR1cDog d2hhdCBhYm91dCBmaWxlcyB0aGF0IGhhdmUgbm8gcHJvamVjdD8KKzs7Cis7OyBFbnRlciB2Yy1i b3MuLi4KKzs7Cis7OyB2Yy1ib3MgcHJvdmlkZXMgZWFzeSBhY2Nlc3MgdG8gcGFzdCByZXZpc2lv bnMgb2YgZWRpdGVkIGZpbGVzIGJ5Cis7OyBpbnRlZ3JhdGluZyB3aXRoIFZDJ3MgdGltZW1hY2hp bmUgZnVuY3Rpb25hbGl0eS4gIFRvIGRvIHRoaXMgaXQKKzs7IHJlcXVpcmVzIHRoYXQgVkMncyB2 Yy1jYWNoZS1yb290IGJlIHNldCBhbmQgdGhhdCBpdCBoYXZlICcvUkNTJyBhcworOzsgb25lIG9m IGl0cyBkaXJlY3RvcnkgY29tcG9uZW50cyAodHlwaWNhbGx5IHRoZSBsYXN0KS4KKzs7Cis7OyBH aXZlbiBzdWNoIGEgY29uZmlndXJhdGlvbiwgdmMtYm9zIG1haW50YWlucyBhIG1pcnJvciB0cmVl IG9mIFJDUworOzsgY29udHJvbCBmaWxlcyBiZWxvdyB2Yy1jYWNoZS1yb290LiAgQSBjb250cm9s IGZpbGUgYXBwZWFycyBhdCB0aGUKKzs7IHNhbWUgcG9zaXRpb24gYW5kIGhhcyBleGFjdGx5IHRo ZSBzYW1lIG5hbWUgYXMgdGhlIGZpbGUgdGhhdCBpdAorOzsgdHJhY2tzIChtZWFuaW5nIG5vICcs dicgc3VmZml4KS4gIFRoaXMgd29ya3MgYmVjYXVzZSBSQ1MgdHJlYXRzCis7OyAqYW55KiBmaWxl ICphbnl3aGVyZSogYmVuZWF0aCBhbiBSQ1MgZGlyZWN0b3J5IGFzIGEgY29udHJvbCBmaWxlLgor OzsKKzs7IE9uIEZJUlNUIGNoYW5nZSBhbmQgRVZFUlkgc3Vic2VxdWVudCBzYXZlIGN4LWJvczoK Kzs7Cis7OyAqIFF1YWxpZmllcyB0aGUgYnVmZmVyJ3MgcGF0aAorOzsgKiBFbnN1cmVzIGV4aXN0 ZW5jZSBvZiBhIG1pcnJvciBkaXJlY3RvcnkgYmVuZWF0aCB2Yy1jYWNoZS1yb290Cis7OyAqIFJl Y29yZHMgdGhlIG5ld2x5IHNhdmVkIGZpbGUgYXMgdGhlIGxhdGVzdCBSQ1MgcmV2aXNpb24gd2l0 aAorOzsgICBhbiBlbXB0eSBjb21taXQgbWVzc2FnZQorOzsKKzs7IHZjLWJvcydzIHRyYWNraW5n IGlzIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgYSBmaWxlIGlzIHRyYWNrIGJ5Cis7OyBhbnkgb3Ro ZXIgVkNTLgorOzsKKzs7IHZjLWJvcyByZXF1aXJlcyB0aGF0IHRoZSByY3MgZXhlY3V0YWJsZSBi ZSBhdmFpbGFibGUgKHR5cGljYWxseQorOzsgaW5zdGFsbGVkIGF0IC91c3IvYmluL3JjcykuCis7 OworOzsgVG8gYWN0aXZhdGUgZ2xvYmFsbHksIHBsYWNlIHRoaXMgZmlsZSBpbiB5b3VyIGBsb2Fk LXBhdGgnLCBlbnN1cmUKKzs7IHRoYXQgdmMtY2FjaGUtcm9vdCBpcyBzZXQsIHRoZW4gYWRkIHRo ZSBmb2xsb3dpbmcgdG8geW91ciBpbml0LmVsOgorOzsKKzs7ICAgICAodmMtYm9zLW1vZGUgdCkK Kzs7Cis7OyBUbyBmaWx0ZXIgd2hpY2ggZmlsZXMgdmMtYm9zIGJhY2tzIHVwLCBzZXR1cCBhIGN1 c3RvbSBmdW5jdGlvbiBmb3IKKzs7IGB2Yy1ib3MtZmlsdGVyLWZ1bmN0aW9uJy4gIEZvciBleGFt cGxlLCB0byBmaWx0ZXIgb3V0IHRoZSBzYXZpbmcgb2YKKzs7IGdudXMgLm5ld3NyYy5lbGQgZmls ZXMsIGRvOgorOzsKKzs7ICAgICAoZGVmdW4gdmMtYm9zLW5vLW5ld3NyYy1lbGQgKGZpbGVuYW1l KQorOzsgICAgICAgKGNvbmQKKzs7ICAgICAgICAoKHN0cmluZz0gKGZpbGUtbmFtZS1ub25kaXJl Y3RvcnkgZmlsZW5hbWUpICIubmV3c3JjLmVsZCIpIG5pbCkKKzs7ICAgICAgICAodCB0KSkpCis7 OyAgICAgKHNldHEgdmMtYm9zLWZpbHRlci1mdW5jdGlvbiAnYm9zLW5vLW5ld3NyYy1lbGQpCisK Kzs7OyBUb2RvOgorOzsKKzs7ICogZ2FyYmFnZSBjb2xsZWN0aW9uOiBpdCB3b3VsZCBiZSBuaWNl IHRvIGhhdmUgYSBjcm9uIHNjcmlwdCB0byBwdXJnZQorOzsgICBhbmNpZW50IHJldmlzaW9ucwor Cis7OzsgTm90ZXM6CisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAndmMtaG9va3MpCisocmVxdWly ZSAndmMtcmNzKQorCisKKyhkZWZncm91cCB2Yy1ib3MgbmlsCisgICJCYWNrdXAgT24gU2F2ZSAo dG8gYW4gUkNTIGZpbGUpLiIKKyAgOmdyb3VwICd2Yy10aW1lbWFjaGluZQorICA6Z3JvdXAgJ2Jh Y2t1cAorICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20gdmMtYm9zLXJlbW90ZS1maWxl cyBuaWwKKyAgIldoZXRoZXIgdG8gYmFja3VwIHJlbW90ZSBmaWxlcyBhdCBlYWNoIHNhdmUgKG9m ZiBieSBkZWZhdWx0KS4iCisgIDp0eXBlICdib29sZWFuCisgIDpncm91cCAndmMtYm9zCisgIDp2 ZXJzaW9uICIzMC4xIikKKworKGRlZmN1c3RvbSB2Yy1ib3MtZmlsdGVyLWZ1bmN0aW9uICMnaWRl bnRpdHkKKyAgIkZ1bmN0aW9uIHdoaWNoIHNob3VsZCByZXR1cm4gbm9uLW5pbCBpZiB0aGUgZmls ZSBzaG91bGQgYmUgYmFja2VkIHVwLiIKKyAgOnR5cGUgJ2Z1bmN0aW9uCisgIDpncm91cCAndmMt Ym9zCisgIDp2ZXJzaW9uICIzMC4xIikKKworKGRlZmN1c3RvbSB2Yy1ib3Mtc2l6ZS1saW1pdCA1 MDAwMAorICAiTWF4aW11bSBzaXplIChpbiBieXRlKSBiZXlvbmQgd2hpY2ggYSBmaWxlIHdpbGwg bm90IGdldCBiYWNrZWQtdXAuCitTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gbmlsIGRpc2FibGVz IHRoZSBzaXplIGNoZWNrLiIKKyAgOnR5cGUgJ25hdG51bQorICA6Z3JvdXAgJ3ZjLWJvcworICA6 dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20gdmMtYm9zLXJjcyAiL3Vzci9iaW4vcmNzIgor ICAiUGF0aCB0byB0aGUgcmNzIGV4ZWN1dGFibGUgKHJlcXVpcmVkIGZvciB2Yy1ib3MgZnVuY3Rp b25hbGl0eSkuIgorICA6dHlwZSAnKGZpbGUgOm11c3QtbWF0Y2ggdCkKKyAgOmdyb3VwICd2Yy1i b3MKKyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmY29uc3QgdmMtYm9zLXdpdG5lc3Nlcy1yZWdl eAorICAiL1xcKFNDQ1NcXHxSQ1NcXHxDVlNcXHxNQ1ZTXFx8Wy5dc3JjXFx8Wy5dc3ZuXFx8Wy5d Z2l0XFx8Wy5daGdcXHxbLl1ienJcXHxfTVROXFx8X2RhcmNzXFx8W3tdYXJjaFt9XVxcKS8iCisg ICJXcml0ZXMgdG8gYW55IHBvaW50IGJlbG93IG9uZSBvZiB0aGVzZSB3aXRuZXNzZXMgc2hvdWxk IGJlIGlnbm9yZWQuCisKK0ZJWE1FOiBUaGlzIGlzIGEgcmVnZXgtaWZpZWQgY29weSBvZiB2Yy1o b29rcydzIHZjLWRpcmVjdG9yeS1leGNsdXNpb24tbGlzdC4iKQorCisKKzs7IFRoaXMgaW1wbGVt ZW50YXRpb24gZG9lcyBub3QgaGFuZGxlIFJDUyBicmFuY2hlcy4KKzs7OyMjI2F1dG9sb2FkCiso ZGVmdW4gdmMtYm9zLXRtLXJldmlzaW9ucyAoZmlsZSkKKyAgIlJldHVybiBkYXRhIGFib3V0IGJh Y2t1cC1vbi1zYXZlIHJldmlzaW9ucyBvZiBGSUxFLiIKKyAgKGxldCAoKG1hc3Rlci1maWxlIChj b25jYXQgdmMtY2FjaGUtcm9vdCBmaWxlKSkpCisgICAgKHZjLWRvLWNvbW1hbmQgdCAwIHZjLWJv cy1yY3MgbWFzdGVyLWZpbGUgImxvZyIpKQorICAodmMtcmNzLXRtLXJldmlzaW9ucy1wYXJzZS1s b2cgZmlsZSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gdmMtYm9zLWZpbmQtcmV2aXNpb24g KGZpbGUgcmV2IGJ1ZmZlcikKKyAgIlJldHVybiBpbiBCVUZGRVIgRklMRSdzIGJhY2t1cC1vbi1z YXZlIHJldmlzaW9uIFJFVi4iCisgIChsZXQgKChtYXN0ZXItZmlsZSAoY29uY2F0IHZjLWNhY2hl LXJvb3QgZmlsZSkpKQorICAgICh2Yy1kby1jb21tYW5kIChvciBidWZmZXIgIip2YyoiKSAwIHZj LWJvcy1yY3MgbWFzdGVyLWZpbGUgImNvIiAiLXEiIChjb25jYXQgIi1wIiByZXYpKSkpCisKKzs7 IDs7OyMjI2F1dG9sb2FkCis7OyAoZGVmdW4gdmMtYm9zLXRtLW1hcC1saW5lIChmaWxlIGZyb20t cmV2aXNpb24gZnJvbS1saW5lIHRvLXJldmlzaW9uIGZyb20taXMtb2xkZXIpCis7OyAgICJSZXR1 cm4gVE8tUkVWSVNJT04ncyBsaW5lIGNvcnJlc3BvbmRpbmcgdG8gRlJPTS1SRVZJU0lPTidzIEZS T00tTElORS4KKzs7IE9uIGVudHJ5IHRoZSBjdXJyZW50LWJ1ZmZlciBpcyBhbiBlbXB0eSB0ZW1w b3JhcnkgYnVmZmVyLiIKKzs7Cis7OyAgIChtZXNzYWdlICJcbiA9PSB2Yy1ib3MtdG0tbWFwLWxp bmUgPT1cbiIpCis7OyAgIGZyb20tbGluZSkKKworKGRlZnVuIHZjLWJvcy1hZGQtcmV2aXNpb24g KCkKKyAgIlJlY29yZCBhIG5ldyBSQ1MgJ2JhY2t1cCBvbiBzYXZlJyByZXZpc2lvbiBvZiBidWZm ZXIncyBmaWxlLiIKKyAgKHNldHEgdmMtY29uc3VsdC1oZWFkZXJzIG5pbCkKKyAgKGxldCAoKGJm biBidWZmZXItZmlsZS1uYW1lKSkKKyAgICAod2hlbiAoYW5kIGJmbgorICAgICAgICAgICAgICAg KG5vdCAoc3RyaW5nLW1hdGNoLXAgdmMtYm9zLXdpdG5lc3Nlcy1yZWdleCBiZm4pKQorICAgICAg ICAgICAgICAgKG9yIHZjLWJvcy1yZW1vdGUtZmlsZXMKKwkJICAgKG5vdCAoZmlsZS1yZW1vdGUt cCBiZm4pKSkKKwkgICAgICAgKG9yIChub3QgdmMtYm9zLXNpemUtbGltaXQpCisJCSAgICg8PSAo YnVmZmVyLXNpemUpIHZjLWJvcy1zaXplLWxpbWl0KSkKKyAgICAgICAgICAgICAgIChmdW5jYWxs IHZjLWJvcy1maWx0ZXItZnVuY3Rpb24gYmZuKSkKKyAgICAgIChsZXQqICgobWlycm9yLWZpbGUg KHZjLWJvcy0tbWlycm9yLWZpbGUgYmZuKSkpCisgICAgICAgIChjYWxsLXByb2Nlc3MgdmMtYm9z LXJjcworICAgICAgICAgICAgICAgICAgICAgIG5pbCAoZ2V0LWJ1ZmZlci1jcmVhdGUgIip2Yy1i b3MtbG9nKiIpIG5pbAorICAgICAgICAgICAgICAgICAgICAgICJjaSIgIi1sIiAiLW0nJyIgIi10 LScnIiBiZm4gbWlycm9yLWZpbGUpKSkpKQorCisoZGVmdW4gdmMtYm9zLS1taXJyb3ItZmlsZSAo ZmlsZSkKKyAgIlJldHVybiBwYXRoIHRvIEZJTEUncyBSQ1MgY29udHJvbCBmaWxlIHdpdGhpbiB2 Yy1jYWNoZS1yb290LiIKKyAgKGxldCogKChkaXIgKGZpbGUtbmFtZS1kaXJlY3RvcnkgZmlsZSkp CisJIChmaWxlIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGUpKQorCSAobWlycm9yLWRpciAo Y29uY2F0IChleHBhbmQtZmlsZS1uYW1lIHZjLWNhY2hlLXJvb3QpIGRpcikpCisgICAgICAgICAo bWlycm9yLWZpbGUgKGNvbmNhdCBtaXJyb3ItZGlyIGZpbGUpKSkKKyAgICAodW5sZXNzIChmaWxl LWV4aXN0cy1wIG1pcnJvci1kaXIpCisgICAgICAobWFrZS1kaXJlY3RvcnkgbWlycm9yLWRpciB0 KSkKKyAgICBtaXJyb3ItZmlsZSkpCisKKyhkZWZpbmUtbWlub3ItbW9kZSB2Yy1ib3MtbW9kZQor ICAiU2lsZW50bHkgYmFja3VwIHNhdmVkIGZpbGVzIGFzIG5ldyBSQ1MgcmV2aXNpb25zIGJlbmVh dGggdmMtY2FjaGUtcm9vdC4KKworVmlzaXQgc2F2ZWQgcmV2aXNpb25zIHVzaW5nIHZjLXRtLXJl dmlzaW9uLWhlYWQ6IChDLXUgQy14IHYgLCkuIgorICA6Z2xvYmFsIHQKKyAgOmdyb3VwICdiYWNr dXAKKyAgOmdyb3VwICd2Yy1ib3MKKyAgOnZlcnNpb24gIjMwLjEiCisgIDpsaWdodGVyICIgQm9T IgorICAod2hlbiB2Yy1ib3MtbW9kZQorICAgICh1bmxlc3MgKGFuZCAoc3RyaW5ncCB2Yy1jYWNo ZS1yb290KQorICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoLXAgIi9SQ1MkIiB2Yy1jYWNo ZS1yb290KSkKKyAgICAgIChzZXRxIHZjLWJvcy1tb2RlIG5pbCkKKyAgICAgIChlcnJvciAidmMt Ym9zLW1vZGUgcmVxdWlyZXMgdmMtY2FjaGUtcm9vdCAoJXMpIHRvIGNvbnRhaW5zIGEgJy9SQ1Mn IGNvbXBvbmVudCIgdmMtY2FjaGUtcm9vdCkpCisgICAgKGFkZC1ob29rICdmaXJzdC1jaGFuZ2Ut aG9vayAjJ3ZjLWJvcy1hZGQtcmV2aXNpb24pCisgICAgKGFkZC1ob29rICdhZnRlci1zYXZlLWhv b2sgICAjJ3ZjLWJvcy1hZGQtcmV2aXNpb24pKQorICAodW5sZXNzIHZjLWJvcy1tb2RlCisgICAg KHJlbW92ZS1ob29rICdmaXJzdC1jaGFuZ2UtaG9vayAjJ3ZjLWJvcy1hZGQtcmV2aXNpb24pCisg ICAgKHJlbW92ZS1ob29rICdhZnRlci1zYXZlLWhvb2sgICAjJ3ZjLWJvcy1hZGQtcmV2aXNpb24p KSkKKworKHByb3ZpZGUgJ3ZjLWJvcykKKworOzs7IHZjLWJvcy5lbCBlbmRzIGhlcmUKZGlmZiAt LWdpdCBhL2xpc3AvdmMvdmMtZ2l0LmVsIGIvbGlzcC92Yy92Yy1naXQuZWwKaW5kZXggMWY0NWFh N2U5Ni4uNzQ1YTI3NTI5NCAxMDA2NDQKLS0tIGEvbGlzcC92Yy92Yy1naXQuZWwKKysrIGIvbGlz cC92Yy92Yy1naXQuZWwKQEAgLTEwNCw4ICsxMDQsNiBAQAogCiAocmVxdWlyZSAnY2wtbGliKQog KHJlcXVpcmUgJ3ZjLWRpc3BhdGNoZXIpCi0ocmVxdWlyZSAndHJhbnNpZW50KQotKHJlcXVpcmUg J3ZjLXRpbWVtYWNoaW5lKQogKGV2YWwtd2hlbi1jb21waWxlCiAgIChyZXF1aXJlICdzdWJyLXgp IDsgZm9yIHN0cmluZy10cmltLXJpZ2h0CiAgIChyZXF1aXJlICd2YykKZGlmZiAtLWdpdCBhL2xp c3AvdmMvdmMtcmNzLmVsIGIvbGlzcC92Yy92Yy1yY3MuZWwKaW5kZXggOWY1MjU4N2Y2Zi4uOTIy NDZjM2NlNyAxMDA2NDQKLS0tIGEvbGlzcC92Yy92Yy1yY3MuZWwKKysrIGIvbGlzcC92Yy92Yy1y Y3MuZWwKQEAgLTg1OSw3ICs4NTksNyBAQCB2Yy1yY3MtdG0tcmV2aXNpb25zLXBhcnNlLWxvZwog ICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkpCiAgICAgICAgIChzZXRxIG5ldy1zdWJqZWN0IChi dWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAo bGluZS1lbmQtcG9zaXRpb24pKSkKICAgICAgICAgKHdoZW4gKGVxdWFsIG5ldy1zdWJqZWN0ICIq KiogZW1wdHkgbG9nIG1lc3NhZ2UgKioqIikKLSAgICAgICAgICAoc2V0cSBuZXctc3ViamVjdCAi IikpCisgICAgICAgICAgKHNldHEgbmV3LXN1YmplY3QgbmlsKSkKICAgICAgICAgKHVubGVzcyAo ZXF1YWwgc3ViamVjdCBuZXctc3ViamVjdCkKICAgICAgICAgICAoc2V0cSBzdWJqZWN0IG5ldy1z dWJqZWN0KSkKIAkocHVzaCAobGlzdCByZXZpc2lvbiBkYXRlIHN1YmplY3QgYXV0aG9yIGZpbGUp IHJldmlzaW9uLWluZm9zKSkpCmRpZmYgLS1naXQgYS9saXNwL3ZjL3ZjLXRpbWVtYWNoaW5lLmVs IGIvbGlzcC92Yy92Yy10aW1lbWFjaGluZS5lbAppbmRleCBhYzNiOTM2MzM0Li40ZWQ3YTJiOGIz IDEwMDY0NAotLS0gYS9saXNwL3ZjL3ZjLXRpbWVtYWNoaW5lLmVsCisrKyBiL2xpc3AvdmMvdmMt dGltZW1hY2hpbmUuZWwKQEAgLTU4LDYgKzU4LDggQEAKIAogOzs7IENvZGU6CiAKKyhkZWNsYXJl LWZ1bmN0aW9uIHZjLWJvcy10bS1yZXZpc2lvbnMgICJ2Yy1ib3MiIChhYnMtZmlsZSkpCisKIChy ZXF1aXJlICd2YykKIAogKGRlZmdyb3VwIHZjLXRpbWVtYWNoaW5lIG5pbApAQCAtMTU1LDcgKzE1 Nyw3IEBAIHZjLXRtLS10aW1lLW1hY2hpbmUKIAogICAgICAgKGxldCogKChwYXJlbnQgdmMtcGFy ZW50LWJ1ZmZlcikKICAgICAgICAgICAgICAoYWJzLWZpbGUgKGJ1ZmZlci1maWxlLW5hbWUpKQot ICAgICAgICAgICAgIChiYWNrZW5kICAodmMtYmFja2VuZCBhYnMtZmlsZSkpCisgICAgICAgICAg ICAgKGJhY2tlbmQgIChpZiB2Yy1mb3JjZS1ib3MgJ2JvcyAodmMtYmFja2VuZCBhYnMtZmlsZSkp KQogICAgICAgICAgICAgICh3b3JrLXJldiAodmMtd29ya2luZy1yZXZpc2lvbiBhYnMtZmlsZSkp CiAgICAgICAgICAgICAgKHRtYnVmIHZjLS10aW1lLW1hY2hpbmUpKQogCkBAIC0xODgsNyArMTkw LDEwIEBAIHZjLXRtLS10aW1lLW1hY2hpbmUKICAgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAt YnVmZmVyCiAgICAgICAgICAgICAgICAgICAgIChwcm9nMgogICAgICAgICAgICAgICAgICAgICAg ICAgKG1lc3NhZ2UgIkVudW1lcmF0aW5nIHJldmlzaW9ucy4uLiIpCi0gICAgICAgICAgICAgICAg ICAgICAgICAobGV0KiAoKHZlYyAoY2wtY29lcmNlICh2Yy1jYWxsLWJhY2tlbmQgYmFja2VuZCAn dG0tcmV2aXNpb25zIGFicy1maWxlKSAndmVjdG9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAg IChsZXQqICgodmVjIChjbC1jb2VyY2UgKGlmIChlcSBiYWNrZW5kICdib3MpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2Yy1ib3MtdG0tcmV2aXNpb25zIGFicy1m aWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZjLWNhbGwtYmFj a2VuZCBiYWNrZW5kICd0bS1yZXZpc2lvbnMgYWJzLWZpbGUpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICd2ZWN0b3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChicmFuY2ggKG5yZXZlcnNlIHZlYykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICBi cmFuY2gpCiAgICAgICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIkVudW1lcmF0aW5nIHJldmlz aW9ucy4uLmRvbmUiKSkpKSkpCkBAIC0xOTcsMTEgKzIwMiwxNCBAQCB2Yy10bS0tdGltZS1tYWNo aW5lCiAgICAgICAgIHRtYnVmKSkpKQogCiA7OzsjIyNhdXRvbG9hZAotKGRlZnVuIHZjLXRtLXJl dmlzaW9uLWhlYWQgKCkKLSAgIlNob3cgd29yayBmaWxlJ3MgY3VycmVudCByZXZpc2lvbiBvbiBj aGVja2VkLW91dCBicmFuY2guIgotICAoaW50ZXJhY3RpdmUpCi0gICh3aXRoLWN1cnJlbnQtYnVm ZmVyICh2Yy10bS0tdGltZS1tYWNoaW5lKQotICAgICh2Yy10bS0tc3dpdGNoLXRvLXJldmlzaW9u IDEpKSkKKyhkZWZ1biB2Yy10bS1yZXZpc2lvbi1oZWFkICgmb3B0aW9uYWwgYm9zKQorICAiU2hv dyB3b3JrIGZpbGUncyBjdXJyZW50IHJldmlzaW9uIG9uIGNoZWNrZWQtb3V0IGJyYW5jaC4KK1dp dGggYSBwcmVmaXggYXJndW1lbnQsIGRpc3JlZ2FyZCBhbnkgcmVnaXN0cmF0aW9uIHVuZGVyIGFu eQorb3RoZXIgVkNTIGFuZCBzaG93IHZjLWJvcyBiYWNrdXAtb24tc2F2ZSByZXZpc2lvbnMuIgor ICAoaW50ZXJhY3RpdmUgIlAiKQorICAobGV0ICgodmMtZm9yY2UtYm9zIGJvcykpCisgICAgKHdp dGgtY3VycmVudC1idWZmZXIgKHZjLXRtLS10aW1lLW1hY2hpbmUpCisgICAgICAodmMtdG0tLXN3 aXRjaC10by1yZXZpc2lvbiAxKSkpKQogCiAoZGVmdW4gdmMtdG0tcmV2aXNpb24tbmV4dCAoKQog ICAiU2hvdyB3b3JrIGZpbGUncyBuZXh0IHJldmlzaW9uIG9uIGNoZWNrZWQtb3V0IGJyYW5jaC4i CkBAIC0zMDEsMTMgKzMwOSwxNyBAQCB2Yy1kZWZhdWx0LXRtLW1hcC1saW5lCiAKIChkZWZ1biB2 Yy10bS0tc2hvdy1lY2hvLWFyZWEtZGV0YWlscyAocmV2aXNpb24taW5mbykKICAgIlNob3cgZGV0 YWlscyBmb3IgUkVWSVNJT04tSU5GTyBpbiBlY2hvLWFyZWEuIgotICAobGV0KiAoKGRhdGUgKG50 aCAxIHJldmlzaW9uLWluZm8pKQotICAgICAgICAgKGF1dGhvciAoaWYgdmMtdG0tc2hvdy1hdXRo b3IgKGNvbmNhdCAiIHwgIiAobnRoIDMgcmV2aXNpb24taW5mbykpICIiKSkKLSAgICAgICAgIChz aGEtb3Itc3ViamVjdCAoaWYgKGVxIHZjLXRtLWVjaG8tYXJlYS1kZXRhaWwgJ2NvbW1pdCkgKGNh ciByZXZpc2lvbi1pbmZvKSAobnRoIDIgcmV2aXNpb24taW5mbykpKSkKLSAgICAobWVzc2FnZSAi JXMlczogJXMiCi0gICAgICAgICAgICAgZGF0ZQotICAgICAgICAgICAgIChwcm9wZXJ0aXplIGF1 dGhvciAnZmFjZSAndmMtdG0tZWNoby1hcmVhLWF1dGhvci1mYWNlKQotICAgICAgICAgICAgIChw cm9wZXJ0aXplIHNoYS1vci1zdWJqZWN0ICdmYWNlICd2Yy10bS1lY2hvLWFyZWEtZGV0YWlsLWZh Y2UpKSkpCisgIChsZXQgKChkYXRlICAobnRoIDEgcmV2aXNpb24taW5mbykpKQorICAgIChpZiAo ZXEgdG1idWYtLWJhY2tlbmQgJ2JvcykKKyAgICAgICAgKG1lc3NhZ2UgIiVzIiBkYXRlKQorICAg ICAgKGxldCogKChhdXRob3IgKGlmIHZjLXRtLWVjaG8tYXJlYS1hdXRob3IgKGNvbmNhdCAiIHwg IiAobnRoIDMgcmV2aXNpb24taW5mbykpICIiKSkKKyAgICAgICAgICAgICAoc2hhLW9yLXN1Ympl Y3QgKGlmIChlcSB2Yy10bS1lY2hvLWFyZWEtZGV0YWlsICdjb21taXQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2FyIHJldmlzaW9uLWluZm8pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG50aCAyIHJldmlzaW9uLWluZm8pKSkpCisgICAgICAgIChtZXNzYWdl ICIlcyVzOiAlcyIKKyAgICAgICAgICAgICAgICAgZGF0ZQorICAgICAgICAgICAgICAgICAocHJv cGVydGl6ZSBhdXRob3IgJ2ZhY2UgJ3ZjLXRtLWVjaG8tYXJlYS1hdXRob3ItZmFjZSkKKyAgICAg ICAgICAgICAgICAgKHByb3BlcnRpemUgc2hhLW9yLXN1YmplY3QgJ2ZhY2UgJ3ZjLXRtLWVjaG8t YXJlYS1kZXRhaWwtZmFjZSkpKSkpKQogCiAoZGVmdW4gdmMtdG0tZm9ybWF0LWRhdGUgKGRhdGUp CiAgICJSZXR1cm4gZGF0ZSBmb3JtYXR0ZWQgcGVyIHRoZSB1c2VyJ3MgdmMtdG0tZGF0ZS1mb3Jt YXQuIgpkaWZmIC0tZ2l0IGEvbGlzcC92Yy92Yy5lbCBiL2xpc3AvdmMvdmMuZWwKaW5kZXggODhl YzMzNzZjNC4uN2U5ODUyMzEyZiAxMDA2NDQKLS0tIGEvbGlzcC92Yy92Yy5lbAorKysgYi9saXNw L3ZjL3ZjLmVsCkBAIC04MDksNiArODA5LDcgQEAKIAogKGRlY2xhcmUtZnVuY3Rpb24gZGlmZi1z ZXR1cC13aGl0ZXNwYWNlICJkaWZmLW1vZGUiICgpKQogKGRlY2xhcmUtZnVuY3Rpb24gZGlmZi1z ZXR1cC1idWZmZXItdHlwZSAiZGlmZi1tb2RlIiAoKSkKKyhkZWNsYXJlLWZ1bmN0aW9uIHZjLWJv cy1maW5kLXJldmlzaW9uICJ2Yy1ib3MiIChhYnMtZmlsZSByZXYgYnVmZmVyKSkKIAogKGV2YWwt d2hlbi1jb21waWxlCiAgIChyZXF1aXJlICdkaXJlZCkpCkBAIC05NjEsNiArOTYyLDkgQEAgdmMt Y29tbWVudC1hbGlzdAogKGRlZmN1c3RvbSB2Yy1maW5kLXJldmlzaW9uLWNhY2hlIG5pbAogICAi V2hlbiBub24tbmlsLCBgdmMtZmluZC1yZXZpc2lvbicgY2FjaGVzIGEgbG9jYWwgY29weSBvZiBy ZXR1cm5lZCByZXZpc2lvbi4iCiAgIDp0eXBlICdib29sZWFuCisgIDpncm91cCAnYmFja3VwCisg IDpncm91cCAndmMtYm9zCisgIDpncm91cCAndmMtdGltZW1hY2hpbmUKICAgOnZlcnNpb24gIjMw LjEiKQogCiAoZGVmY3VzdG9tIHZjLWNhY2hlLXJvb3QgbmlsCkBAIC05NzIsOCArOTc2LDEzIEBA IHZjLWNhY2hlLXJvb3QKIAogVG8gdXNlIGB2Yy1ib3MtbW9kZScsIGB2Yy1jYWNoZS1yb290JyBt dXN0IGluY2x1ZGUgYSAvUkNTIGNvbXBvbmVudC4iCiAgIDp0eXBlICdzdHJpbmcKKyAgOmdyb3Vw ICdiYWNrdXAKKyAgOmdyb3VwICd2Yy1ib3MKKyAgOmdyb3VwICd2Yy10aW1lbWFjaGluZQogICA6 dmVyc2lvbiAiMzAuMSIpCiAKKyhkZWZ2YXIgdmMtZm9yY2UtYm9zIG5pbAorICAiTm9uLW5pbCBp bmRpY2F0ZXMgcmV0cmlldmluZyB2Yy1ib3MgcmV2aXNpb25zLiIpCiAMCiA7OyBGaWxlIHByb3Bl cnR5IGNhY2hpbmcKIApAQCAtMTIzNCwxMSArMTI0MywxOCBAQCB2Yy1lbnN1cmUtdmMtYnVmZmVy CiAJCTs7IGN1cnJlbnQgYnVmZmVyIGFyZSB0aGUgc2FtZSBidWZmZXIuCiAgCQkobm90IChlcSB2 Yy1wYXJlbnQtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKSkKICAgICAgIChzZXQtYnVmZmVyIHZj LXBhcmVudC1idWZmZXIpKSkpCi0gIChjb25kCi0gICAoKG5vdCBidWZmZXItZmlsZS1uYW1lKQot ICAgIChlcnJvciAiQnVmZmVyICclcycgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIGZpbGUiIChi dWZmZXItbmFtZSkpKQotICAgKCh1bmxlc3MgKHZjLWJhY2tlbmQgYnVmZmVyLWZpbGUtbmFtZSkK LSAgICAgIChlcnJvciAiRmlsZSAnJXMnIGlzIG5vdCB1bmRlciB2ZXJzaW9uIGNvbnRyb2wiIGJ1 ZmZlci1maWxlLW5hbWUpKSkpKQorICAobGV0ICgoYm9zLWZpbGUgKGNvbmNhdCB2Yy1jYWNoZS1y b290IGJ1ZmZlci1maWxlLW5hbWUpKSkKKyAgICAoY29uZAorICAgICAoKG5vdCBidWZmZXItZmls ZS1uYW1lKQorICAgICAgKGVycm9yICJCdWZmZXIgJyVzJyBpcyBub3QgYXNzb2NpYXRlZCB3aXRo IGEgZmlsZSIgKGJ1ZmZlci1uYW1lKSkpCisgICAgICh2Yy1mb3JjZS1ib3MKKyAgICAgICh1bmxl c3MgKGZpbGUtZXhpc3RzLXAgYm9zLWZpbGUpCisgICAgICAgIChlcnJvciAiRmlsZSAnJXMnIGhh cyBubyBiYWNrdXAtb24tc2F2ZSByZXZpc2lvbnMiIGJ1ZmZlci1maWxlLW5hbWUpKSkKKyAgICAg KCh1bmxlc3MgKHZjLWJhY2tlbmQgYnVmZmVyLWZpbGUtbmFtZSkKKyAgICAgICAgKGVycm9yICJG aWxlICclcycgaXMgbm90IHVuZGVyIHZlcnNpb24gY29udHJvbCVzIgorICAgICAgICAgICAgICAg YnVmZmVyLWZpbGUtbmFtZQorICAgICAgICAgICAgICAgKHdoZW4gKGZpbGUtZXhpc3RzLXAgYm9z LWZpbGUpCisgICAgICAgICAgICAgICAgICIgYnV0IGJhY2t1cHMgZnJvbSBzYXZlcyBhcmUgYXZh aWxhYmxlIikpKSkpKSkKIAogOzs7IFN1cHBvcnQgZm9yIHRoZSBDLXggdiB2IGNvbW1hbmQuCiA7 OyBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgc2luZ2xlLWZpbGUtb3JpZW50ZWQgY29kZSBmcm9tIGJl Zm9yZSB0aGUgZmlsZXNldApAQCAtMjM4OSw2ICsyNDA1LDggQEAgdmMtZmluZC1yZXZpc2lvbgog ICAgICAgICAgICAgIDs7IEEgY2FjaGVkIGZpbGUgaXMgdmlhYmxlIElGRiBpdCBpcyBub3Qgd3Jp dGFibGUuCiAgICAgICAgICAgICAgKChhbmQgKGZpbGUtZXhpc3RzLXAgc2F2ZS1maWxlKSAobm90 IChmaWxlLXdyaXRhYmxlLXAgc2F2ZS1maWxlKSkpCiAgICAgICAgICAgICAgIChpbnNlcnQtZmls ZS1jb250ZW50cyBzYXZlLWZpbGUgdCkpCisgICAgICAgICAgICAgKChlcSBiYWNrZW5kICdib3Mp CisgICAgICAgICAgICAgICh2Yy1ib3MtZmluZC1yZXZpc2lvbiBmaWxlIHJldmlzaW9uIHJldmJ1 ZikpCiAgICAgICAgICAgICAgKGJhY2tlbmQKICAgICAgICAgICAgICAgKHZjLWNhbGwtYmFja2Vu ZCBiYWNrZW5kICdmaW5kLXJldmlzaW9uIGZpbGUgcmV2aXNpb24gcmV2YnVmKSkKICAgICAgICAg ICAgICAodAotLSAKMi4zNy4yCgo= --0000000000002ddb5005f3224a44 Content-Type: text/x-patch; charset="UTF-8"; name="0000-cover-letter.patch" Content-Disposition: attachment; filename="0000-cover-letter.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ldciswd33> X-Attachment-Id: f_ldciswd33 RnJvbSA3N2FiMDZjZjllMmJkM2RiZTg3OGRmNWJiMDdlYWRiYTVkYWRkYzQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSm9obiBTLiBZYXRlcywgSnIiIDxqb2huQHlhdGVzLXNoZWV0 cy5vcmc+CkRhdGU6IFdlZCwgMjUgSmFuIDIwMjMgMjE6MTQ6MjcgLTA1MDAKU3ViamVjdDogW1BB VENIIDAvM10gKioqIFNVQkpFQ1QgSEVSRSAqKioKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1U eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6 IDhiaXQKClRoaXMgaXMgYSBzZXJpZXMgb2YgdGhyZWUgYmlzZWN0YWJsZSAoSSBob3BlIDotKSBw YXRjaGVzIHRoYXQgY3VsbWluYXRlCmluIHN1cHBvcnQgb2YgYSBuZXcgRW1hY3MgYmFja3VwIHNj aGVtZToKCiogW1BBVENIIDEvM10gUmVmYWN0b3IgYW5kIGRvY3VtZW50IHZjLWZpbmQtcmV2aXNp b24gY2FjaGluZwoqIFtQQVRDSCAyLzNdIEludHJvZHVjZSBWQyB0aW1lbWFjaGluZSBjYXBhYmls aXR5CiogW1BBVENIIDMvM10gSW50cm9kdWNlIHZjLWJvczogYmFja3VwIG9uIHNhdmUgKHRvIGFu IFJDUyBmaWxlKQoKVGhpcyBCYWNrdXAtT24tU2F2ZSBzY2hlbWUgZXhwbG9pdHMgYSBmaWxlIHN5 c3RlbSBtaXJyb3Igc2NoZW1lCmludHJvZHVjZWQgaW4gdGhlIGZpcnN0IHBhdGNoLiAgQnkgZXhw bG9pdGluZyBhIGxpdHRsZSBrbm93biBhc3BlY3QKb2YgUkNTJ3MgYWxnb3JpdGhtIGZvciBsb2Nh dGluZyBhIG1hc3RlciBmaWxlLCBiYWNrdXBzIGFyZSBzdG9yZWQKY29tcGxldGVseSByZW1vdmVk IGZyb20gdGhlIHdvcmsgZmlsZSAoaS5lLiBubyBsb2NhbCBSQ1MgZGlyZWN0b3JpZXMpCmFuZCB1 bmRlciBleGFjdGx5IHRoZSBzYW1lIGZpbGVuYW1lIChpLmUuIG5vICcsdicgc3VmZml4IG9yIHNp bWlsYXIpLgoKQWNjZXNzaW5nIGJhY2tlZC11cHMgZXhwbG9pdHMgYSBuZXcgdmMtdGltZW1hY2hp bmUgY2FwYWJpbGl0eSwKaW50cm9kdWNlZCBpbiB0aGUgc2Vjb25kIHBhdGNoLiAgQm90aCB0aGUg ZGVzaWduIGFuZCBjb2RlIG93ZSBtdWNoCnRvIFBldGVyIFN0aWVybnN0csO2bSdzIG9yaWdpbmFs IGdpdC10aW1lbWFjaGluZS5lbC4gIFRvIHNpZGVzdGVwIGFueQpjb3B5cmlnaHQgaXNzdWVzLCBQ ZXRlciBoYXMgZ3JhY2lvdXNseSBhc3NpZ25lZCBnaXQtdGltZW1hY2hpbmUuZWwncwpjb3B5cmln aHQgdG8gdGhlIEZTRi4gIFdpdGggdGhlIHN1Ym1pc3Npb24gdGltZW1hY2hpbmUgZnVuY3Rpb25h bGl0eQppcyBhdmFpbGFibGUgaW4gYm90aCB2Yy1naXQgYW5kIHZjLXJjcy4KClRoaXMgYmFja3Vw IHNjaGVtZSB3b3JrcyBlcXVhbHkgd2VsbCB3aXRoIGZpbGVzIGFscmVhZHkgdW5kZXIgc29tZQpW Q1MgYXMgd2VsbCBhcyB3aXRoIGZpbGVzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgdmVyc2lvbiBj b250cm9sbGVkLgoKRm9yIG1lIChwcmltYXJpbHkgYSBDKysgcHJvZ3JhbW1lcikgdGhpcyBpczoK ICAqIE15IGZpcnN0IHNpZ25pZmljYW50IGJpdCBvZiBlbGlzcAogICogTXkgZmlyc3QgZXhwb3N1 cmUgdG8gdGhlIFZDIGNvZGViYXNlCiAgKiBNeSBmaXJzdCBFbWFjcyAvIEZTRiBzdWJtaXNzaW9u CgpJIHdlbGNvbWUgYWxsIG5hdHVyZSBvZiBmZWVkYmFjazoKICAqIENvZGUgY3JpdGljaXNtCiAg KiBWaW9sYXRpb25zIG9mIHBlcnRpbmVudCBzdGFuZGFyZHMKICAqIEJ1ZyByZXBvcnRzCiAgKiBT dWdnZXN0ZWQgaW1wcm92ZW1lbnQKICAqIC4gLiAuCgovam9obgoKSm9obiBTLiBZYXRlcywgSnIg KDMpOgogIFJlZmFjdG9yIGFuZCBkb2N1bWVudCB2Yy1maW5kLXJldmlzaW9uIGNhY2hpbmcKICBJ bnRyb2R1Y2UgVkMgdGltZW1hY2hpbmUgY2FwYWJpbGl0eQogIEludHJvZHVjZSB2Yy1ib3M6IGJh Y2t1cCBvbiBzYXZlICh0byBhbiBSQ1MgZmlsZSkKCiBsaXNwL3ZjL3ZjLWJvcy5lbCAgICAgICAg IHwgMjA3ICsrKysrKysrKysrKysrKysrKwogbGlzcC92Yy92Yy1naXQuZWwgICAgICAgICB8ICA4 OSArKysrKysrLQogbGlzcC92Yy92Yy1ob29rcy5lbCAgICAgICB8ICAxMCArLQogbGlzcC92Yy92 Yy1yY3MuZWwgICAgICAgICB8ICA1MCArKysrKwogbGlzcC92Yy92Yy10aW1lbWFjaGluZS5lbCB8 IDQzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGlzcC92Yy92Yy5l bCAgICAgICAgICAgICB8IDI5MiArKysrKysrKysrKysrKysrLS0tLS0tLS0tCiA2IGZpbGVzIGNo YW5nZWQsIDk4NSBpbnNlcnRpb25zKCspLCAxMDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgbGlzcC92Yy92Yy1ib3MuZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaXNwL3ZjL3ZjLXRp bWVtYWNoaW5lLmVsCgotLSAKMi4zNy4yCgo= --0000000000002ddb5005f3224a44 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Refactor-and-document-vc-find-revision-caching.patch" Content-Disposition: attachment; filename="0001-Refactor-and-document-vc-find-revision-caching.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ldciswcw2> X-Attachment-Id: f_ldciswcw2 RnJvbSA3OGNlZmIzY2I3OGZhZjhiZTM4N2Q0MzE5OTQyMDc4Njk5ZWJjM2U5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSm9obiBTLiBZYXRlcywgSnIiIDxqb2huQHlhdGVzLXNoZWV0 cy5vcmc+CkRhdGU6IE1vbiwgMjYgRGVjIDIwMjIgMTU6NTE6MDMgLTA1MDAKU3ViamVjdDogW1BB VENIIDEvM10gUmVmYWN0b3IgYW5kIGRvY3VtZW50IHZjLWZpbmQtcmV2aXNpb24gY2FjaGluZwoK UHJldmlvdXNseSB0aGVyZSBleGlzdGVkIHR3byBoZWxwZXIgZnVuY3Rpb25zIGZvciB2Yy0tcmV2 aXNpb24tb3RoZXItd2luZG93OgoKKiB2Yy0tcmV2aXNpb24tb3RoZXItd2luZG93LXNhdmUKKiB2 Yy0tcmV2aXNpb24tb3RoZXItd2luZG93LW5vLXNhdmUKClRoZSBleHBlY3RhdGlvbiBzZWVtcyB0 byBoYXZlIGJlZW4gdGhhdCB3aGVuIG1hdGVyaWFsaXppbmcgYSByZXZpc2lvbiBpcwpkZWVtZWQg Y29zdGx5IChzbG93IGJhY2tlbmQ/IHJlbW90ZT8gLi4uKSBpdCBzaG91bGQgYmUgc2F2ZWQuICBJ IGJlbGlldmUKdGhhdCwgZXZlbiB0aG91Z2ggdGhlIHdvcmQgJ2NhY2hlJyBpcyBuZXZlciB1c2Vk LCB0aGlzIHdhcyBpbnRlbmRlZCB0bwpiZSBhIGNhY2hpbmcgbWVjaGFuaXNtLiAgVGhhdCBzYWlk LCB0aGUgbG9naWMgcHJvdmlkZWQgb25seSBhIHNpbmdsZQpzYXZlL25vLXNhdmUgZ2xvYmFsIHRv Z2dsZS4gIEFzcGVjdHMgb2YgdGhpcyBtZWNoYW5pc20gd2VyZSBkaXNjdXNzZWQKaW4gdGhpcyBl bWFpbCB0aHJlYWQ6CgogIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZW1hY3Mt ZGV2ZWwvMjAyMi0xMC9tc2cwMTc5NC5odG1sCgpJIGhhdmUgdHJpZWQgdG8gYWRkcmVzcyBzb21l IG9mIHRoZSBjb25jZXJucyByYWlzZWQgdGhlcmVpbiBhbmQgdG8KcHJvdmlkZSBzb21lIGNsZWFy ZXIgYWJzdHJhY3Rpb25zOgoKKiBXaGVuIGEgcmV2aXNpb24gZ2V0cyBzYXZlZCBpdCBpcyBkZWVt ZWQgYSBjYWNoZS4gIFRodXMgaXQgaXMgaW1wZXJhdGl2ZQogIHRoYXQgdGhlIGNhY2hlZCByZXZp c2lvbiBiZSBwcm90ZWN0ZWQgYW5kIGFkZXF1YXRlbHkgdmFsaWRhdGVkIGJlZm9yZQogIGJlaW5n IHJldXNlZC4KCiogQSBjYWNoZWQgcmV2aXNpb24gbWF5IGJlIHNhdmVkIGFzIGEgc2libGluZyBv ZiB0aGUgZmlsZSB0aGF0IHRyaWdnZXJlZCBpdHMKICBtYXRlcmlhbGl6YXRpb24gb3IgaW4gbWF5 IGJlIHNhdmVkIGluIGEgbWlycm9yIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdAogIGB2Yy1jYWNo ZS1yb290Jy4gIFRoZSBsYXR0ZXIgY2hvaWNlIGF2b2lkcyBjbHV0dGVyaW5nIHdvcmsgdHJlZXMg d2l0aCB3aXRoCiAgaGlzdG9yaWMgcmV2aXNpb25zIGFuZCBlbmFibGVzIGNhY2hpbmcgYWNyb3Nz IHdvcmsgdHJlZXMuICBgdmMtY2FjaGUtcm9vdCcKICB3aWxsIGFsc28gcHJvdmlkZSBhIGxvY2F0 aW9uIGZvciB0aGUgZm9ydGhjb21pbmcgdmMtYm9zJ3MgYmFja3Vwcy4KCiogSSBoYXZlIGRlZmlu ZWQgdGhlIGNvbmNlcHQgb2YgYSByZXZpc2lvbiBidWZmZXIuICBUaGlzIGlzIHRoZSBmb3JtCiAg b2YgYnVmZmVyIHJldHVybmVkIGJ5IHZjJ3MgZmluZC1yZXZpc2lvbiBvcGVyYXRpb24uICBJdCBp cyBib3VuZCB0bwogIGEgc3BlY2lmaWMgcmV2aXNpb24sIGl0IGlzIHJlYWQtb25seSBhbmQgaXQg aGFzIGEgbmlsIGJ1ZmZlci1maWxlLW5hbWUuCiAgVGh1cyBpdCB2aXNpdHMgbm8gc2F2ZWQgbm9y IGNhY2hlZCBmaWxlLiAgVGhlIHJhdGlvbmFsZSBpcyB0d29mb2xkOgoKICAtIEEgcmV2aXNpb24g aXMgYSBtYXRlcmlhbGl6YXRpb24gb2YgaW1tdXRhYmxlIGhpc3RvcnkKCiAgLSBUaGUgb25seSBw b3RlbnRpYWwgdmFsdWUgZm9yIGEgcmV2aXNpb24gYnVmZmVyJ3MgYnVmZmVyLWZpbGUtbmFtZSBp cyBhCiAgICBjYWNoZSBmaWxlIHdoaWNoIHNob3VsZCBsaWtld2lzZSBiZSByZWdhcmRlZCBhcyBp bW11dGFibGUuICBGdXRoZXIsIGlmCiAgICBtYXRlcmlhbGl6aW5nIHJldmlzaW9ucyBpcyBub3Qg ZGVlbWVkIGNvc3RseSwgZXZlbiB0aGF0IGZpbGUgbWF5IG5vdAogICAgZXhpc3QuICBTbywgaW4g dGhlIGludGVyZXN0IG9mIGNvbnNpc3RlbmN5LCByZXZpc2lvbiBidWZmZXJzIGRvIG5vdAogICAg dmlzaXQgZmlsZXMuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoqIGxpc3AvdmMvdmMuZWwgKHZjLWZp bmQtcmV2aXNpb24tbm8tc2F2ZSwgdmMtZmluZC1yZXZpc2lvbi1jYWNoZSk6ClJlbmFtZSBkZWZj dXN0b21zIHRvIGJlIG1vcmUgZGVzY3JpcHRpdmUuCih2Yy1maW5kLXJldmlzaW9uLCB2Yy1maW5k LXJldmlzaW9uLXNhdmUsIHZjLWZpbmQtcmV2aXNpb24tbm8tc2F2ZSk6ClJlaW1wbGVtZW50IHRo ZSBlbnNzZW5jZSBvZiB0aGVzZSB0aHJlZSBmdW5jdGlvbiBhcyBhIHNpbmdsZQpgdmMtZmluZC1y ZXZpc2lvbicgZnVuY3Rpb24uICBDbGFyaWZ5IHRoYXQgdGhlIHJlc3VsdCBpcyBhIHJldmlzaW9u CmJ1ZmZlciwgdW5hdHRhY2hlZCB0byBhbnkgZmlsZS4gIFN1cHBvcnQgb3B0aW9uYWwgY2FjaGlu ZywgZWl0aGVyCmFsb25nc2lkZSB0aGUgb3JpZ2luYWwgZmlsZSBvciB3aXRoaW4gYSBtaXJyb3Ig ZGlyZWN0b3J5IHN0cnVjdHVyZQpiZW5lYXRoIGB2Yy1jYWNoZS1yb290Jy4KLS0tCiBsaXNwL3Zj L3ZjLmVsIHwgMjI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTM2IGluc2VydGlvbnMoKyksIDkxIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2xpc3AvdmMvdmMuZWwgYi9saXNwL3ZjL3ZjLmVsCmluZGV4IDEzMTI0 NTA5YzIuLjU2OTc3Y2JlMTYgMTAwNjQ0Ci0tLSBhL2xpc3AvdmMvdmMuZWwKKysrIGIvbGlzcC92 Yy92Yy5lbApAQCAtNjY0LDYgKzY2NCw5IEBACiAKIAogOzs7IFRvZG86Cis7OworOzsgLSBvdGhl ciBjYWNoaW5nIGNvbnNpZGVyYXRpb25zOiBiYWNrZW5kPyByZW1vdGU/CisKIAogOzs7OyBOZXcg UHJpbWl0aXZlczoKIDs7CkBAIC05MTcsMTAgKzkyMCwyMSBAQCB2Yy1jb21tZW50LWFsaXN0CiAJ CSAgICAgICAoc3RyaW5nIDp0YWcgIkNvbW1lbnQgU3RhcnQiKQogCQkgICAgICAgKHN0cmluZyA6 dGFnICJDb21tZW50IEVuZCIpKSkpCiAKLShkZWZjdXN0b20gdmMtZmluZC1yZXZpc2lvbi1uby1z YXZlIG5pbAotICAiSWYgbm9uLW5pbCwgYHZjLWZpbmQtcmV2aXNpb24nIGRvZXNuJ3Qgd3JpdGUg dGhlIGNyZWF0ZWQgYnVmZmVyIHRvIGZpbGUuIgorKGRlZmN1c3RvbSB2Yy1maW5kLXJldmlzaW9u LWNhY2hlIG5pbAorICAiV2hlbiBub24tbmlsLCBgdmMtZmluZC1yZXZpc2lvbicgY2FjaGVzIGEg bG9jYWwgY29weSBvZiByZXR1cm5lZCByZXZpc2lvbi4iCiAgIDp0eXBlICdib29sZWFuCi0gIDp2 ZXJzaW9uICIyNy4xIikKKyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmY3VzdG9tIHZjLWNhY2hl LXJvb3QgbmlsCisgICJJZiBub24tbmlsLCB0aGUgcm9vdCBvZiBhIHRyZWUgb2YgY2FjaGVkIHJl dmlzaW9ucyAobm8gdHJhaWxpbmcgJy8nKS4KKworV2hlbiBgdmMtZmluZC1yZXZpc2lvbi1jYWNo ZScgaXMgbm9uLW5pbCwgaWYgYHZjLWNhY2hlLXJvb3QnIGlzIG5pbCB0aGVuIHRoZQorY2FjaGVk IHJldmlzaW9uIHdpbGwgYmUgYSBzaWJsaW5nIG9mIGl0cyB3b3JraW5nIGZpbGUsIG90aGVyd2lz ZSB0aGUgY2FjaGVkCityZXZpc2lvbiB3aWxsIGJlIHNhdmVkIHRvIGEgbWlycm9yIHBhdGggYmVu ZWF0aCBgdmMtY2FjaGUtcm9vdC4nCisKK1RvIHVzZSBgdmMtYm9zLW1vZGUnLCBgdmMtY2FjaGUt cm9vdCcgbXVzdCBpbmNsdWRlIGEgL1JDUyBjb21wb25lbnQuIgorICA6dHlwZSAnc3RyaW5nCisg IDp2ZXJzaW9uICIzMC4xIikKIAogDAogOzsgRmlsZSBwcm9wZXJ0eSBjYWNoaW5nCkBAIC0yMjYz LDk3ICsyMjc3LDEyOCBAQCB2Yy1yZXZpc2lvbi1vdGhlci13aW5kb3cKIAkJICAgICByZXYpKSkK ICAgICAoc3dpdGNoLXRvLWJ1ZmZlci1vdGhlci13aW5kb3cgKHZjLWZpbmQtcmV2aXNpb24gZmls ZSByZXZpc2lvbikpKSkKIAotKGRlZnVuIHZjLWZpbmQtcmV2aXNpb24gKGZpbGUgcmV2aXNpb24g Jm9wdGlvbmFsIGJhY2tlbmQpCi0gICJSZWFkIFJFVklTSU9OIG9mIEZJTEUgaW50byBhIGJ1ZmZl ciBhbmQgcmV0dXJuIHRoZSBidWZmZXIuCi1Vc2UgQkFDS0VORCBhcyB0aGUgVkMgYmFja2VuZCBp ZiBzcGVjaWZpZWQuIgotICAoaWYgdmMtZmluZC1yZXZpc2lvbi1uby1zYXZlCi0gICAgICAodmMt ZmluZC1yZXZpc2lvbi1uby1zYXZlIGZpbGUgcmV2aXNpb24gYmFja2VuZCkKLSAgICAodmMtZmlu ZC1yZXZpc2lvbi1zYXZlIGZpbGUgcmV2aXNpb24gYmFja2VuZCkpKQogCi0oZGVmdW4gdmMtZmlu ZC1yZXZpc2lvbi1zYXZlIChmaWxlIHJldmlzaW9uICZvcHRpb25hbCBiYWNrZW5kKQotICAiUmVh ZCBSRVZJU0lPTiBvZiBGSUxFIGludG8gYSBidWZmZXIgYW5kIHJldHVybiB0aGUgYnVmZmVyLgot U2F2ZXMgdGhlIGJ1ZmZlciB0byB0aGUgZmlsZS4iCi0gIChsZXQgKChhdXRvbWF0aWMtYmFja3Vw ICh2Yy12ZXJzaW9uLWJhY2t1cC1maWxlLW5hbWUgZmlsZSByZXZpc2lvbikpCi0JKGZpbGVidWYg KG9yIChnZXQtZmlsZS1idWZmZXIgZmlsZSkgKGN1cnJlbnQtYnVmZmVyKSkpCi0gICAgICAgIChm aWxlbmFtZSAodmMtdmVyc2lvbi1iYWNrdXAtZmlsZS1uYW1lIGZpbGUgcmV2aXNpb24gJ21hbnVh bCkpKQotICAgICh1bmxlc3MgKGZpbGUtZXhpc3RzLXAgZmlsZW5hbWUpCi0gICAgICAoaWYgKGZp bGUtZXhpc3RzLXAgYXV0b21hdGljLWJhY2t1cCkKLSAgICAgICAgICAocmVuYW1lLWZpbGUgYXV0 b21hdGljLWJhY2t1cCBmaWxlbmFtZSBuaWwpCi0JKG1lc3NhZ2UgIkNoZWNraW5nIG91dCAlcy4u LiIgZmlsZW5hbWUpCi0JKHdpdGgtY3VycmVudC1idWZmZXIgZmlsZWJ1ZgotCSAgKGxldCAoKGZh aWxlZCB0KSkKLQkgICAgKHVud2luZC1wcm90ZWN0Ci0JCShsZXQgKChjb2Rpbmctc3lzdGVtLWZv ci1yZWFkICduby1jb252ZXJzaW9uKSkKLQkJICAod2l0aC10ZW1wLWZpbGUgZmlsZW5hbWUKLQkJ ICAgIChsZXQgKChvdXRidWYgKGN1cnJlbnQtYnVmZmVyKSkpCi0gICAgICAgICAgICAgICAgICAg ICAgOzsgV2Ugd2lsbCByZWFkIHRoZSBiYWNrZW5kJ3Mgb3V0cHV0IHdpdGggbm8KLSAgICAgICAg ICAgICAgICAgICAgICA7OyBjb252ZXJzaW9ucywgc28gd2Ugc2hvdWxkIGFsc28gc2F2ZSB0aGUK LSAgICAgICAgICAgICAgICAgICAgICA7OyB0ZW1wb3JhcnkgZmlsZSB3aXRoIG5vIGVuY29kaW5n IGNvbnZlcnNpb25zLgotICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGJ1ZmZlci1maWxlLWNv ZGluZy1zeXN0ZW0gJ25vLWNvbnZlcnNpb24pCi0JCSAgICAgIDs7IENoYW5nZSBidWZmZXIgdG8g Z2V0IGxvY2FsIHZhbHVlIG9mCi0JCSAgICAgIDs7IHZjLWNoZWNrb3V0LXN3aXRjaGVzLgotCQkg ICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBmaWxlYnVmCi0JCQkoaWYgYmFja2VuZAotCQkJICAg ICh2Yy1jYWxsLWJhY2tlbmQgYmFja2VuZCAnZmluZC1yZXZpc2lvbiBmaWxlIHJldmlzaW9uIG91 dGJ1ZikKLQkJCSAgKHZjLWNhbGwgZmluZC1yZXZpc2lvbiBmaWxlIHJldmlzaW9uIG91dGJ1Zikp KSkpCi0JCSAgKHNldHEgZmFpbGVkIG5pbCkpCi0JICAgICAgKHdoZW4gKGFuZCBmYWlsZWQgKGZp bGUtZXhpc3RzLXAgZmlsZW5hbWUpKQotCQkoZGVsZXRlLWZpbGUgZmlsZW5hbWUpKSkpCi0JICAo dmMtbW9kZS1saW5lIGZpbGUpKQotCShtZXNzYWdlICJDaGVja2luZyBvdXQgJXMuLi5kb25lIiBm aWxlbmFtZSkpKQotICAgIChsZXQgKChyZXN1bHQtYnVmIChmaW5kLWZpbGUtbm9zZWxlY3QgZmls ZW5hbWUpKSkKLSAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHJlc3VsdC1idWYKLQk7OyBTZXQg dGhlIHBhcmVudCBidWZmZXIgc28gdGhhdCB0aGluZ3MgbGlrZQotCTs7IEMteCB2IGcsIEMteCB2 IGwsIC4uLiBldGMgd29yay4KLSAgICAgICAgKHNldHEtbG9jYWwgdmMtcGFyZW50LWJ1ZmZlciBm aWxlYnVmKSkKLSAgICAgIHJlc3VsdC1idWYpKSkKKyhkZWZ2YXItbG9jYWwgdmMtdG0tLXJldmlz aW9uIG5pbAorICAiQ29udmV5IGEgcmV2aXNpb24gYnVmZmVyJ3MgVkNTIHNwZWNpZmljIHVuaXF1 ZSByZXZpc2lvbiBpZCB0byBWQy1UTS4iICkKKyhwdXQgJ3ZjLXRtLS1yZXZpc2lvbiAncGVybWFu ZW50LWxvY2FsIHQpCiAKLShkZWZ1biB2Yy1maW5kLXJldmlzaW9uLW5vLXNhdmUgKGZpbGUgcmV2 aXNpb24gJm9wdGlvbmFsIGJhY2tlbmQgYnVmZmVyKQotICAiUmVhZCBSRVZJU0lPTiBvZiBGSUxF IGludG8gQlVGRkVSIGFuZCByZXR1cm4gdGhlIGJ1ZmZlci4KLUlmIEJVRkZFUiBvbWl0dGVkIG9y IG5pbCwgdGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGJ1ZmZlciBhbmQgc2V0cwotYGJ1ZmZl ci1maWxlLW5hbWUnIHRvIHRoZSBuYW1lIGNvbnN0cnVjdGVkIGZyb20gdGhlIGZpbGUgbmFtZSBh bmQgdGhlCi1yZXZpc2lvbiBudW1iZXIuCi1Vbmxpa2UgYHZjLWZpbmQtcmV2aXNpb24tc2F2ZScs IGRvZXNuJ3Qgc2F2ZSB0aGUgYnVmZmVyIHRvIHRoZSBmaWxlLiIKKzs7IEJlZm9yZSB0aGUgYWR2 ZW50IG9mIHZjLXRpbWVtYWNoaW5lLCB0aGUgYmVoYXZpb3Igb2YgYHZjLWZpbmQtcmV2aXNpb24n Cis7OyB3YXMgaW1wbGllZCBpbmRpcmVjdGx5IGluIHRoZSBlbWFjcyBtYW51YWwgYXMgYWx3YXlz IGNhY2hpbmcgYSBjb3B5Cis7OyBvZiB0aGUgcmV0dXJuZWQgcmV2aXNpb24uICBgdmMtcmV2aXNp b24tb3RoZXItd2luZG93J3Mgd3JpdGUtdXAgd2FzOgorOzsKKzs7ICAgVGhpcyByZXRyaWV2ZXMg dGhlIGZpbGUgdmVyc2lvbiBjb3JyZXNwb25kaW5nIHRvIHJldmlzaW9uLCBzYXZlcyBpdAorOzsg ICB0byBmaWxlbmFtZS5+cmV2aXNpb25+LCBhbmQgdmlzaXRzIGl0IGluIGEgc2VwYXJhdGUgd2lu ZG93LgorOzsKKzs7IEJ1dCBpZiByZXZpc2lvbnMgYXJlIGltbXV0YWJsZSBoaXN0b3J5LCB0aGVu IHRoZXJlIGlzIG5vIHJlYXNvbiBmb3IKKzs7IGEgcmV2aXNpb24gYnVmZmVyIHRvIHZpc2l0IGEg bXV0YWJsZSBmaWxlLiAgU2F2aW5nIGEgZmlsZSBjb3VsZCBiZQorOzsganVzdGlmaWVkIGFzIGEg Zm9ybSBvZiBjYWNoaW5nLiAgQnV0LCBpZiBhIGNhY2hlIGlzIHRvIGJlIHRydXN0ZWQsCis7OyBp dCBtdXN0IG5vdCBiZSBwb3NzaWJsZSBmb3IgYSB1c2VyIHRvIGNvcnJ1cHQgaXRzIGNvbnRlbnRz LgorOzsKKzs7IEFzIG9mIHJlbGVhc2UgMzAuMSByZXZpc2lvbiBidWZmZXIgYXJlIHJldHVybmVk IHdpdGggYnVmZmVyLWZpbGUtbmFtZQorOzsgc2V0IHRvIG5pbCwgc2lnbmlmeWluZyB0aGF0IHJl dmlzaW9uIGJ1ZmZlcnMgZG8gbm90IHZpc2l0IGZpbGVzLgorOzsKKzs7IFdoZXRoZXIgdG8gY2Fj aGUgb3Igbm90IGlzIGNvbnRyb2xsZWQgYnkgYHZjLWZpbmQtcmV2aXNpb24tY2FjaGUnLgorOzsK Kzs7IENhY2hpbmcgcmV2aXNpb25zIGFzIHNpYmxpbmdzIG9mIGEgd29ya2luZyBmaWxlIGlzIG9m dGVuIHNlZW4gYXMKKzs7ICJjbHV0dGVyaW5nIiB0aGUgd29ya3NwYWNlLiAgYHZjLWNhY2hlLXJv b3QnIHByb3ZpZGVzIGEgYWx0ZXJuYXRpdmUsCis7OyBhIG1pcnJvciBkaXJlY3Rvcnkgc3RydWN0 dXJlIHdoZXJlIHJldmlzaW9ucyBhcmUgY2FjaGVkLgorCisoZGVmdW4gdmMtZmluZC1yZXZpc2lv biAoZmlsZSByZXZpc2lvbiAmb3B0aW9uYWwgYmFja2VuZCBidWZmZXIpCisgICJSZWFkIFJFVklT SU9OIG9mIEZJTEUgaW50byBhIHJlYWQtb25seSBidWZmZXIgYW5kIHJldHVybiB0aGF0IGJ1ZmZl ci4KK0NvbnRydWN0IHRoZSBwYXRoIHRvIGEgcG90ZW50aWFsIGNhY2hlZCBjb3B5IGZyb20gYHZj LWZpbmQtcmV2aXNpb24tY2FjaGUnLAorRklMRSBhbmQgUkVWSVNJT04uICBJZiB0aGF0IGZpbGUg ZXhpc3RzIGFuZCBpcyB3cml0YWJsZSB0aGVuIHJld3JpdGUgaXQKK3RvIGVuc3VyZSB0aGF0IGlm IGFjY3VyYXRlbHkgcmVmbGVjdHMgdGhlIHJldHJpZXZlZCByZXZpc2lvbi4gIE90aGVyd2lzZSwK K2lmIGB2Yy1maW5kLXJldmlzaW9uLWNhY2hlJyBpcyBub24tbmlsLCBzYXZlIGJ1ZmZlciB0byBp dHMgY2FjaGUgbG9jYXRpb24uCitXaGVuIEJVRkZFUiBpcyBhYnNlbnQgb3IgZGVhZCwgY3JlYXRl IGEgbmV3IGJ1ZmZlcjsgb3RoZXJ3aXNlIHJlcHVycG9zZQordGhlIHN1cHBsaWVkIEJVRkZFUiBi eSBlcmFzaW5nIGl0cyBjb250ZW50cywgc2V0dGluZyBpdHMgbmFtZSBhbmQgdXBkYXRpbmcKK2l0 cyBtb2RlLiAgSW4gYWxsIGNhc2VzIGJ1ZmZlci1maWxlLW5hbWUgaXMgc2V0IHRvIG5pbCwgZW5z dXJpbmcgdGhhdCB0aGUKK3JldHVybmVkIGJ1ZmZlciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgdmlz aXRpbmcgYW55IGZpbGUgKGluIHBhcnRpY3VsYXIgdGhlCitmaWxlIGluIHRoZSBjYWNoZSkuIgog ICAobGV0KiAoKGJ1ZmZlciAod2hlbiAoYnVmZmVyLWxpdmUtcCBidWZmZXIpIGJ1ZmZlcikpCi0g ICAgICAgICAoZmlsZWJ1ZiAob3IgYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgZmlsZSkgKGN1cnJl bnQtYnVmZmVyKSkpCi0gICAgICAgICAoZmlsZW5hbWUgKHVubGVzcyBidWZmZXIgKHZjLXZlcnNp b24tYmFja3VwLWZpbGUtbmFtZSBmaWxlIHJldmlzaW9uICdtYW51YWwpKSkpCi0gICAgKHVubGVz cyAoYW5kIChub3QgYnVmZmVyKQotICAgICAgICAgICAgICAgICAob3IgKGdldC1maWxlLWJ1ZmZl ciBmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgIChmaWxlLWV4aXN0cy1wIGZpbGVuYW1l KSkpCi0gICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBmaWxlYnVmCi0JKGxldCAoKGZhaWxlZCB0 KSkKLQkgICh1bndpbmQtcHJvdGVjdAotCSAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChvciBi dWZmZXIgKGNyZWF0ZS1maWxlLWJ1ZmZlciBmaWxlbmFtZSkpCi0gICAgICAgICAgICAgICAgKHVu bGVzcyBidWZmZXIgKHNldHEgYnVmZmVyLWZpbGUtbmFtZSBmaWxlbmFtZSkpCi0JCShsZXQgKChv dXRidWYgKGN1cnJlbnQtYnVmZmVyKSkpCi0JCSAgKHdpdGgtY3VycmVudC1idWZmZXIgZmlsZWJ1 ZgotCQkgICAgKGlmIGJhY2tlbmQKLQkJCSh2Yy1jYWxsLWJhY2tlbmQgYmFja2VuZCAnZmluZC1y ZXZpc2lvbiBmaWxlIHJldmlzaW9uIG91dGJ1ZikKLQkJICAgICAgKHZjLWNhbGwgZmluZC1yZXZp c2lvbiBmaWxlIHJldmlzaW9uIG91dGJ1ZikpKSkKLSAgICAgICAgICAgICAgICAoZGVjb2RlLWNv ZGluZy1pbnNlcnRlZC1yZWdpb24gKHBvaW50LW1pbikgKHBvaW50LW1heCkgZmlsZSkKLSAgICAg ICAgICAgICAgICAoYWZ0ZXItaW5zZXJ0LWZpbGUtc2V0LWNvZGluZyAoLSAocG9pbnQtbWF4KSAo cG9pbnQtbWluKSkpCi0gICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKLSAg ICAgICAgICAgICAgICAoaWYgYnVmZmVyCi0gICAgICAgICAgICAgICAgICAgIDs7IEZvciBub24t aW50ZXJhY3RpdmUsIHNraXAgYW55IHF1ZXN0aW9ucwotICAgICAgICAgICAgICAgICAgICAobGV0 ICgoZW5hYmxlLWxvY2FsLXZhcmlhYmxlcyA6c2FmZSkgOzsgdG8gZmluZCBgbW9kZTonCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItZmlsZS1uYW1lIGZpbGUpKQotICAgICAgICAg ICAgICAgICAgICAgIDs7IERvbid0IHJ1biBob29rcyB0aGF0IG1pZ2h0IGFzc3VtZSBidWZmZXIt ZmlsZS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgOzsgcmVhbGx5IGFzc29jaWF0ZXMgYnVm ZmVyIHdpdGggYSBmaWxlIChidWcjMzkxOTApLgotICAgICAgICAgICAgICAgICAgICAgIChpZ25v cmUtZXJyb3JzIChkZWxheS1tb2RlLWhvb2tzIChzZXQtYXV0by1tb2RlKSkpKQotICAgICAgICAg ICAgICAgICAgKG5vcm1hbC1tb2RlKSkKLQkgICAgICAgIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAg bmlsKQotICAgICAgICAgICAgICAgIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgdCkpCi0JCShzZXRx IGZhaWxlZCBuaWwpCi0JICAgICh3aGVuIChhbmQgZmFpbGVkICh1bmxlc3MgYnVmZmVyIChnZXQt ZmlsZS1idWZmZXIgZmlsZW5hbWUpKSkKLQkgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0 LWZpbGUtYnVmZmVyIGZpbGVuYW1lKQotCQkoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkpCi0J ICAgICAgKGtpbGwtYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgZmlsZW5hbWUpKSkpKSkpCi0gICAg KGxldCAoKHJlc3VsdC1idWYgKG9yIGJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAo Z2V0LWZpbGUtYnVmZmVyIGZpbGVuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlu ZC1maWxlLW5vc2VsZWN0IGZpbGVuYW1lKSkpKQotICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIg cmVzdWx0LWJ1ZgotICAgICAgICAoc2V0cS1sb2NhbCB2Yy1wYXJlbnQtYnVmZmVyIGZpbGVidWYp KQotICAgICAgcmVzdWx0LWJ1ZikpKQorICAgICAgICAgKHBhcmVudCAob3IgYnVmZmVyIChnZXQt ZmlsZS1idWZmZXIgZmlsZSkgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgICAgICAocmV2ZC1maWxl ICh2Yy12ZXJzaW9uLWJhY2t1cC1maWxlLW5hbWUgZmlsZSByZXZpc2lvbiAnbWFudWFsKSkKKyAg ICAgICAgICh0cnVlLWRpciAoZmlsZS1uYW1lLWRpcmVjdG9yeSBmaWxlKSkKKyAgICAgICAgICh0 cnVlLW5hbWUgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZSkpCisgICAgICAgICAoc2F2ZS1k aXIgKGNvbmNhdCB2Yy1jYWNoZS1yb290IHRydWUtZGlyKSkKKyAgICAgICAgIChyZXZkLW5hbWUg KGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgcmV2ZC1maWxlKSkKKyAgICAgICAgIChzYXZlLWZpbGUg KGNvbmNhdCB2Yy1jYWNoZS1yb290IHJldmQtZmlsZSkpCisgICAgICAgICA7OyBTb21lIGhvb2tz IGFzc3VtZSB0aGF0IGJ1ZmZlci1maWxlLW5hbWUgYXNzb2NpYXRlcyBhIGJ1ZmZlciB3aXRoCisg ICAgICAgICA7OyBhIHRydWUgZmlsZS4gIFRoaXMgbWFwcGluZyBpcyB3aWRlbHkgYXNzdW1lZCB0 byBiZSBvbmUtdG8tb25lLgorICAgICAgICAgOzsgVG8gYXZvaWQgcnVubmluZyBhZm91bCBvZiB0 aGF0IGFzc3VtcHRpb24gdGhpcyBmaWN0aXRpb3VzIHBhdGgKKyAgICAgICAgIDs7IGlzIGV4cGVj dGVkIHRvIGJlIHVuaXF1ZSAoYnVnIzM5MTkwKS4gIFRoaXMgcGF0aCBhbHNvIGhhcyB0aGUKKyAg ICAgICAgIDs7IHZpcnR1ZSB0aGF0IGl0IGV4aGliaXRzIHRoZSBzYW1lIGZpbGUgdHlwZSAoZXh0 ZW5zaW9uKSBhcyBGSUxFLgorICAgICAgICAgOzsgVGhpcyBpbXByb3ZlcyBzZXR0aW5nIHRoZSBi dWZmZXJzIG1vZGVzLgorICAgICAgICAgKHByZXRlbmQgKGNvbmNhdCB0cnVlLWRpciAiUFJFVE5F RC8iIHRydWUtbmFtZSkpCisgICAgICAgICAocmV2YnVmIChvciBidWZmZXIgKGdldC1maWxlLWJ1 ZmZlciBzYXZlLWZpbGUpIChnZXQtYnVmZmVyLWNyZWF0ZSByZXZkLW5hbWUpKSkKKyAgICAgICAg IChjb2Rpbmctc3lzdGVtLWZvci1yZWFkICduby1jb252ZXJzaW9uKQorICAgICAgICAgKGZhaWxl ZCB0KSkKKworICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHJldmJ1ZgorICAgICAgKHVud2luZC1w cm90ZWN0CisgICAgICAgICAgKHByb2duCisgICAgICAgICAgICA7OyBQcmVwIHJldmJ1ZiBpbiBj YXNlIGl0IGlzIGJlaW5nIHJldXNlZC4KKyAgICAgICAgICAgIChzZXRxIGJ1ZmZlci1maWxlLW5h bWUgbmlsKSA7IENhbmNlbCBhbnkgcHJpb3IgZmlsZSB2aXNpdGF0aW9uCisgICAgICAgICAgICAo c2V0cSB2Yy1wYXJlbnQtYnVmZmVyIG5pbCkKKyAgICAgICAgICAgIChzZXRxIHZjLXRtLS1yZXZp c2lvbiBuaWwpCisgICAgICAgICAgICAoc2V0cSBidWZmZXItcmVhZC1vbmx5IG5pbCkKKyAgICAg ICAgICAgIChidWZmZXItZGlzYWJsZS11bmRvKQorICAgICAgICAgICAgKGVyYXNlLWJ1ZmZlcikK KworICAgICAgICAgICAgOzsgRmV0Y2ggdGhlIHJlcXVlc3RlZCByZXZpc2lvbi4KKyAgICAgICAg ICAgIChtZXNzYWdlICJGZXRjaGluZyAlcy4uLiIgcmV2ZC1maWxlKQorICAgICAgICAgICAgKGNv bmQKKyAgICAgICAgICAgICA7OyBBIGNhY2hlZCBmaWxlIGlzIHZpYWJsZSBJRkYgaXQgaXMgbm90 IHdyaXRhYmxlLgorICAgICAgICAgICAgICgoYW5kIChmaWxlLWV4aXN0cy1wIHNhdmUtZmlsZSkg KG5vdCAoZmlsZS13cml0YWJsZS1wIHNhdmUtZmlsZSkpKQorICAgICAgICAgICAgICAoaW5zZXJ0 LWZpbGUtY29udGVudHMgc2F2ZS1maWxlIHQpKQorICAgICAgICAgICAgIChiYWNrZW5kCisgICAg ICAgICAgICAgICh2Yy1jYWxsLWJhY2tlbmQgYmFja2VuZCAnZmluZC1yZXZpc2lvbiBmaWxlIHJl dmlzaW9uIHJldmJ1ZikpCisgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgKHZjLWNhbGwg ZmluZC1yZXZpc2lvbiBmaWxlIHJldmlzaW9uIHJldmJ1ZikpKQorICAgICAgICAgICAgKHNldHEg YnVmZmVyLWZpbGUtbmFtZSBuaWwpCisgICAgICAgICAgICAobWVzc2FnZSAiRmV0Y2hpbmcgJXMu Li5kb25lIiByZXZkLWZpbGUpCisKKyAgICAgICAgICAgIDs7IENhY2hlIHJldmlzaW9uIHBlciB0 aGUgdXNlcidzIChUT0RPOiBvciB0aGUgYmFja2VuZCdzKSBkZXNpcmUuCisgICAgICAgICAgICAo d2hlbiAob3IgKGlmIChmaWxlLWV4aXN0cy1wIHNhdmUtZmlsZSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZpbGUtd3JpdGFibGUtcCBzYXZlLWZpbGUpCisgICAgICAgICAgICAgICAgICAg ICAgICB2Yy1maW5kLXJldmlzaW9uLWNhY2hlKSkKKyAgICAgICAgICAgICAgKG1ha2UtZGlyZWN0 b3J5IHNhdmUtZGlyIHQpCisgICAgICAgICAgICAgICh2Yy0tc2FmZS1kZWxldGUtZmlsZSBzYXZl LWZpbGUpCisgICAgICAgICAgICAgIDs7IEJhY2tlbmQncyBvdXRwdXQgd2FzIHJlYWQgd2l0aCAn bm8tY29udmVyc2lvbnM7IGRvIHRoZSBzYW1lIGZvciB3cml0ZQorICAgICAgICAgICAgICAoc2V0 cSBidWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtICduby1jb252ZXJzaW9uKQorICAgICAgICAgICAg ICAod3JpdGUtcmVnaW9uIG5pbCBuaWwgc2F2ZS1maWxlKQorICAgICAgICAgICAgICAoc2V0LWZp bGUtbW9kZXMgc2F2ZS1maWxlIChsb2dhbmQgKGZpbGUtbW9kZXMgc2F2ZS1maWxlKSAjbzc1NTUp KSkKKworICAgICAgICAgICAgOzsgU2V0dXAgcmV2YnVmJ3MgbW9kZXMgYmFzZWQgb24gaXQgY29u dGVudHMgYW5kIHByZXRlbmQgZmlsZSBuYW1lLgorICAgICAgICAgICAgKGxldCAoKGVuYWJsZS1s b2NhbC12YXJpYWJsZXMgOnNhZmUpCisgICAgICAgICAgICAgICAgICAoYnVmZmVyLWZpbGUtbmFt ZSBwcmV0ZW5kKSkgOzsgdG8gZmluZCBgbW9kZTonCisgICAgICAgICAgICAgICh3aGVuIChmaWxl LWV4aXN0cy1wIHByZXRlbmQpCisgICAgICAgICAgICAgICAgKGVycm9yICJQUkVURU5EIGZpbGUg YWN0dWFsbHkgZXhpc3RzIikpCisgICAgICAgICAgICAgIChpZ25vcmUtZXJyb3JzIChzZXQtYXV0 by1tb2RlKSkKKyAgICAgICAgICAgICAgKHZjLS1zYWZlLWRlbGV0ZS1maWxlIHByZXRlbmQpCisg ICAgICAgICAgICAgIDs7IHZjLXBhcmVudC1idWZmZXIgZW5hYmxlcyBDLXggdiBnLCBDLXggdiBs LCAuLi4gZXRjLgorICAgICAgICAgICAgICAoc2V0cSB2Yy1wYXJlbnQtYnVmZmVyIHBhcmVudCkK KyAgICAgICAgICAgICAgKHNldHEgdmMtdG0tLXJldmlzaW9uIHJldmlzaW9uKSkKKworICAgICAg ICAgICAgOzsgSW5kaWNhdGUgc3VjY2VzZnVsIG5lZ290aWF0aW9uIG9mIHRoZSBvYnN0YWNsZSBj b3Vyc2UuCisgICAgICAgICAgICAoc2V0cSBmYWlsZWQgbmlsKSkKKworICAgICAgICAod2hlbiBm YWlsZWQKKyAgICAgICAgICAodmMtLXNhZmUtZGVsZXRlLWZpbGUgc2F2ZS1maWxlKQorICAgICAg ICAgICh2Yy0tc2FmZS1kZWxldGUtZmlsZSBwcmV0ZW5kKQorICAgICAgICAgIChlcmFzZS1idWZm ZXIpKSkKKworICAgICAgOzsgU2V0dXAgZmluYWwgcmV2YnVmIGNvbmZpZ3VyYXRpb24uCisgICAg ICAoc2V0cSBidWZmZXItZmlsZS1uYW1lIG5pbCkKKyAgICAgIChzZXQtYnVmZmVyLW1vZGlmaWVk LXAgbmlsKQorICAgICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSB0KQorICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkKKyAgICAgIHJldmJ1ZikpKQorCisoZGVmdW4gdmMtLXNhZmUtZGVsZXRl LWZpbGUgKGZpbGUpCisgICJJZiBGSUxFIGV4aXN0cyBkZWxldGUgaXQsIGV2ZW4gaWYgaXRzIHBl cm1pc3Npb25zIHNheSBpdCBpcyByZWFkb25seS4iCisgICh3aGVuIChmaWxlLWV4aXN0cy1wIGZp bGUpCisgICAgKHNldC1maWxlLW1vZGVzIGZpbGUgKGxvZ2lvciAoZmlsZS1tb2RlcyBmaWxlKSAj bzIyMikpCisgICAgKGRlbGV0ZS1maWxlIGZpbGUpKSkKIAogOzsgSGVhZGVyLWluc2VydGlvbiBj b2RlCiAKLS0gCjIuMzcuMgoK --0000000000002ddb5005f3224a44--
John Yates <john@HIDDEN>
:bug-gnu-emacs@HIDDEN
.
Full text available.bug-gnu-emacs@HIDDEN
:bug#61071
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.