Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:56:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 08:56:13 2022 Received: from localhost ([127.0.0.1]:36640 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7GBt-0005PJ-EA for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:56:13 -0400 Received: from eggs.gnu.org ([209.51.188.92]:36302) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o7GBo-0005Ou-PA for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:56:07 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:45692) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7GBi-0000sb-7c; Fri, 01 Jul 2022 08:55:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=PM22ZkycAJaQR3y8hj4zS0NN4tzAPAUgZ8rNB5QG6Bg=; b=TonV9GpcpYVUkkQ+gd/i hQU5PpcX+Ium8H4zF3WBt/pUrmqzx4zCpfY45BMn7iaL9qi2LoIbmqpy4hjzEcP5if9qbOEdywLf/ ZPBfmravT5L+mI1GRJD0HJz81Wsf+fW7SVY2klqHtm2Zo2m7P442HNQVuvoZloqm+lGAgkvugyKns wvzsAd5Q19VGrYztF4I9kiM0io+mqlwg8o0K6x9AwKg6z4ATPhRqA/1sj5mx2/sokPoePOeHjpGk8 Wm6J3BETJ30XjcCnpZcaM4igRvJt2Pythd6/YJjbWywX7JOSdQBTp4s/Zu0jGFP85RfY2ed7g2xOP SHdMZt6F5H8e/g==; Received: from [87.69.77.57] (port=4931 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7GBh-000161-N9; Fri, 01 Jul 2022 08:55:58 -0400 Date: Fri, 01 Jul 2022 15:56:08 +0300 Message-Id: <83h741dmaf.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <482383B8-9833-4DF5-B10C-1CEA39E9352B@HIDDEN> (message from Gerd =?utf-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 14:35:33 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN> <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN> <482383B8-9833-4DF5-B10C-1CEA39E9352B@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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 (---) > From: Gerd Möllmann <gerd.moellmann@HIDDEN> > Date: Fri, 1 Jul 2022 14:35:33 +0200 > Cc: monnier@HIDDEN, > larsi@HIDDEN, > psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > > Here's a first shot. > > Doing random stuff (C-e, C-a, C-p), truncate-lines nil, font-lock, max-redisplay-tick 0. > > Not very surprising, I think. Indeed, quite expected.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:51:11 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 08:51:11 2022 Received: from localhost ([127.0.0.1]:36633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7G74-0005HQ-MZ for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:51:11 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35132) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o7G6y-0005G4-Jg for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:51:09 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:45090) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7G6s-0006zK-As; Fri, 01 Jul 2022 08:50:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=eL3zeDVf/Z20MgeCrU9Q07RoD8aefhIjQmr2HX8Cn5k=; b=QmMFf0Ssreo8 ATWPFVoeWpiaxmJfbpwdwx7dmUXLuixG+EInX0jvvOIlQEbp1Ma6sBsrFqedgyWiSgZrDuveIrMNO PVVFXElwueAXDCIjV6BHumPpRgHorW9A8LHOasDSo+MGlCzHLqL5tiQyu3M/m9B+tFLKSGln7FFDU MxxcYlZvDXgs9dSe8653okHXMdC817T42DdHLgzzqdGcSo58L8+fp99HxyqTQ2RVh8wTeo6A3ZZ4M TcMjWwKG+ZdKCPkZh46Pk+f1syA+uk0FUjlafUWEN7ei9SlMyEx59PA5ag2yv4QuqpD8nYnQmHOez JujLB6fDXmSoY++DgOqhKQ==; Received: from [87.69.77.57] (port=4622 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7G6r-0000Cf-QI; Fri, 01 Jul 2022 08:50:58 -0400 Date: Fri, 01 Jul 2022 15:51:08 +0300 Message-Id: <83ilohdmir.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwv1qv5uj1n.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Fri, 01 Jul 2022 08:14:33 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <835ykhflmr.fsf@HIDDEN> <jwv1qv5uj1n.fsf-monnier+emacs@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: gerd.moellmann@HIDDEN, larsi@HIDDEN, psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Fri, 01 Jul 2022 08:14:33 -0400 > > >> > That's only true if max-redisplay-ticks is zero. > >> > >> Why would that make a difference? > > > > Because if it is not zero, we won't let the entire line to be > > fontified, we will stop that before it gets to the end of the line. > > Interesting, where in the code do you do that? In scan_sexps_forward, near the end: if too many "ticks" are counted, update_redisplay_ticks will signal an error. Same thing in re_match_2_internal.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:39:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 08:39:26 2022 Received: from localhost ([127.0.0.1]:36600 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7Fve-0004tq-CR for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:39:26 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60738) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o7FvZ-0004ta-R2 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:39:21 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43750) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7FvS-0001IY-2T; Fri, 01 Jul 2022 08:39:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=wVhAMxvVgoo0CqFSEEo95JK0P4AO8koiLpeWmvIyDEg=; b=dUli0gA9NFESU4lqTVCk b031AKG1bvhAaeWyuS3A0ui5jDGjCOSMXO+6bjzE6vUT+qdTSs2EAqorecqIYxXSft0uZ0+tcRKGS lNahAkQGWotbakRzelp1GLxOPGUBYilgnw4EOHyL0YcalaBcHL664gckPTPLEgGJuhdCyUIlfAXC2 UnXmwpuVYVOPg5otAaHp/k6e9MJEJKj852mE0v+UJFkxMDzuVfDXNr/r0Vvab8sP67KjwIymZWb4g MKXCfr1t2jddET/kvQrLLuikCYiF+C+wxIcOW9AsHnfy7vMXQSbigwLpKvTJKgezqEasfH9Y7gyf4 QYg4nvBnqZaLGw==; Received: from [87.69.77.57] (port=3901 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7FvR-0007MD-Io; Fri, 01 Jul 2022 08:39:09 -0400 Date: Fri, 01 Jul 2022 15:39:19 +0300 Message-Id: <83letddn2g.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN> (message from Gerd =?utf-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 13:44:26 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN> <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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 (---) > From: Gerd Möllmann <gerd.moellmann@HIDDEN> > Date: Fri, 1 Jul 2022 13:44:26 +0200 > Cc: monnier@HIDDEN, > larsi@HIDDEN, > psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > > I have medium_line.json now, and I see slowness (with truncate-lines nil and font-lock), after finding the file and doing random things. What "random things" did you try? > Is it sufficient to do just that for some time while tracing? Yes, I think so. > Do we have some Lisp code to automated this, and make it more reproducible? Possible, but we need to discuss first which commands such Lisp code will invoke. Each command that involves the display code has different CPU processing requirements, and thus reacts differently to such files. > Or, even, should be do truncate-line t first, and without font-lock? That's the next step, I think. In general, you can look in so-long.el for the list of features we found to be expensive in files with long lines; font-lock is just one of them. As for truncate-line, IME it sometimes makes redisplay faster and sometimes slower. I guess the slower cases are where font-lock is the main culprit, since it doesn't stop at the window edge. > (Did someone else observe it being fast at first, and then later slowing down?) That is what normally happens, and the effect on different commands is different, unsurprisingly. For example, with C-n I see consistent slowdown as I go deeper and deeper into the file, and around 20% I start getting "too long to redisplay" errors if I set max-redisplay-ticks to 400,000. By contrast, C-v's performance seems to be much less affected by the position where I invoke it. Still, it becomes slower as I move forward: about 3 times as slow at 30% into the file as it is at BOB. The difference is almost certainly due to the fact that these commands use different methods provided by the display engine code to do their jobs. In particular, C-n calls vertical-motion, which begins by going back to the previous newline, and then comes back by moving the display iteration. Which in this case means it traverses all the text from BOB to where you invoked C-n.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:35:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 08:35:45 2022 Received: from localhost ([127.0.0.1]:36596 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7Fs9-0004oF-0W for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:35:45 -0400 Received: from mail-ej1-f41.google.com ([209.85.218.41]:44875) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o7Fs7-0004nx-5Z for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:35:43 -0400 Received: by mail-ej1-f41.google.com with SMTP id sb34so3780106ejc.11 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 05:35:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=dtVzYUws+y64pLs33fsMCds0qA2OlRPRWO1+ClZEL/k=; b=NyIGMJyv+NMfHjDpR8uUN8KbgZLIUneGP4UkT9VdapU6xHlrZVFHVce1aSYUEQfSq4 pSwYofRBqxyKfhmpezn+0KcZP00hsjhle5gVk/pyxbWNEs2wP9THqpa3tX8AC4RIf17P GeflXpUJw5hllMhUE5vYvgrWQrBTyKOGdkm8hfklLqMhfUP8+CaLHeMV3xDzsfsKQDr0 7oBuoziVK3W9IRWrO8gq17+ccZXMllbNWscNxbbjiT1E6GE5Esfuf95cGKqCs06lAKQt 5smICGyvV2dmA+ztao86sGBMerVsKfmfAJDm21Ig5qZbCS/8KuRJJXC734KQNQYk5fqr kx2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=dtVzYUws+y64pLs33fsMCds0qA2OlRPRWO1+ClZEL/k=; b=NUhsZ66i82786nZBToAXqYmNmC1N+7DGKywMyd7NF8+K3emM7/X8sieZA1jYFpuLSb jfcUexmqbJ5priyFiySWC8yl67KrP4QEm10V1AC+xvVl0l7OZBCgk6npGvvF2wzV6UZL 9D6nkSyaIHZGfWB/j80iZ0rvEqEmdB9UKvLX+9JUNUl87lc/45632nSW72gMR6+bx9xt 0YjE3lBKYGOM8rKCJJsKA4SKe7ZJ/uG5i6CWmx5KIySPhXGJxDUOSBj2MWPZleH5DGL3 kXhysUtkOkb9uI9oWrm2I61Vo5KU3UEXZ34iWrLe4VaOxlvQR1Jd3ZvYs4R2I8OFSfpe Gesg== X-Gm-Message-State: AJIora8WSgnY42Lrj5T85lZOzvjj3NOjKt9s18MaVA3M/G1gxuNebnml uj7GxTxCt2jLZ81hwFzvNv0= X-Google-Smtp-Source: AGRyM1sY580Jg5kHYMB4oTatY1vPgfG3eqqOriWsxvTQIKUGWQ4EJBPxOdcjumOynsHNtDaam8CUqA== X-Received: by 2002:a17:906:9f0c:b0:724:a98e:1909 with SMTP id fy12-20020a1709069f0c00b00724a98e1909mr14091575ejc.481.1656678937037; Fri, 01 Jul 2022 05:35:37 -0700 (PDT) Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de. [217.227.105.195]) by smtp.gmail.com with ESMTPSA id 21-20020a170906301500b00728f6d4d0d7sm3572569ejz.67.2022.07.01.05.35.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Jul 2022 05:35:35 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> Message-Id: <482383B8-9833-4DF5-B10C-1CEA39E9352B@HIDDEN> Content-Type: multipart/signed; boundary="Apple-Mail=_7F52C436-83E8-416F-8E58-7E70AD4F94B3"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again Date: Fri, 1 Jul 2022 14:35:33 +0200 In-Reply-To: <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN> <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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> --Apple-Mail=_7F52C436-83E8-416F-8E58-7E70AD4F94B3 Content-Type: multipart/alternative; boundary="Apple-Mail=_1150C5BB-F9E7-434D-9520-996E3A597506" --Apple-Mail=_1150C5BB-F9E7-434D-9520-996E3A597506 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Here's a first shot. Doing random stuff (C-e, C-a, C-p), truncate-lines nil, font-lock, = max-redisplay-tick 0. Not very surprising, I think. --Apple-Mail=_1150C5BB-F9E7-434D-9520-996E3A597506 Content-Type: multipart/related; type="text/html"; boundary="Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428" --Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii <html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; = charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; = -webkit-nbsp-mode: space; line-break: after-white-space;" = class=3D""><div>Here's a first shot.</div><div><br = class=3D""></div><div>Doing random stuff (C-e, C-a, C-p), truncate-lines = nil, font-lock, max-redisplay-tick 0.</div><div><br = class=3D""></div><div>Not very surprising, I think.</div><div><br = class=3D""></div><div><img apple-inline=3D"yes" = id=3D"43ADA476-0951-4FEE-9831-490915B6B727" = src=3D"cid:CEF5AAC2-B85E-46AF-A476-9E9046DD1EF7" class=3D""></div><div><br= class=3D""></div><div><img apple-inline=3D"yes" = id=3D"F7275539-1403-4613-AED7-B7519CC0E689" = src=3D"cid:EA1B6F9C-8E3F-499B-B077-523875F86272" class=3D""></div><div><br= class=3D""></div><div><img apple-inline=3D"yes" = id=3D"178423AB-5239-4A09-93FB-CB7F2D38770F" = src=3D"cid:751315AA-3B86-4320-A10A-EF1906FA5905" class=3D""></div><div><br= class=3D""></div><div><img apple-inline=3D"yes" = id=3D"44130E21-E051-470E-B50D-4C4B567D93C9" = src=3D"cid:5916408D-9507-43BD-971D-BC8781F4BB13" class=3D""></div><div><br= class=3D""></div></body></html>= --Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428 Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="Screenshot 2022-07-01 at 14.24.17 .png" Content-Type: image/png; name="Screenshot 2022-07-01 at 14.24.17 .png"; x-unix-mode=0644 Content-Id: <CEF5AAC2-B85E-46AF-A476-9E9046DD1EF7> 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 hQ5zlMnoPC6TYv0A7OysGP8yabqz02QuMqo2sR/Gxt4YAIBvA+CLZGxsdOfY2Jd9aLF3AWjPndT5 44ZDv35KLLWVKd1X2cgq8A+b/Ab4S4//nIGigr/NfwJofSGf1ljUdQAAAFZlWElmTU0AKgAAAAgA AYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAACuKADAAQAAAABAAABgQAA AABBU0NJSQAAAFNjcmVlbnNob3SR2cVdAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6 eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAi PgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm LXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAg ICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAg IDxleGlmOlBpeGVsWURpbWVuc2lvbj4zODU8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg ICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+Njk2PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAg ICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAg PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CpYunlsAAEAASURB VHgB7F0HXBVHEx8RYy+gRsEGohF7bxEsUVETe4m9916xxtiwYNcY81mw9xJjwx5N7JjYewMVxajY SxTEb/6D9zge7/EeBrGww+9xe9v3f3e7s7OzOwkyZ832hqKhhAkTUoYMX9KjR4/p2bNnUWKmS5eO Hj9+TK9evYoSpnkkSJBAc8r1zZuIIr/44gtCGS9evIgUB2n08SIFqhvBLFOmTHTjxo1YwelN4jQU 1nA73d86zICujU0CypA2FeV1caQzV27RP8GPKSws4tnZVx1BNis9KMHLh4Y078tRr04di1mvXbfO YhwV4cMiUKRwYbr/4AEFBASYrUi2bNkoXdq09PfRo2bjvK+AFMmTkz2X/S7flXE/hzqqPux9PSmV r0JAIaAQiB4B2+iC3cqUocGDBlIy7vTfhIXRXJ95tHTZMkmCgWrI4EGUlhnc16Gh5LtlC02dNp1e v34dKctEiRLRju3bIvnt2rWLRnmNpvz589OkCRMo0ReJaNQoL/p9926J17xZU6pdqxZ936hxlPwi ZRRPb0qUKCHPJU2aNHTv7j0aPmIEnT5zJlbRwGBdKFcWmjagMRXP60R/nb1GvbyX09/nrqtBO1aR jl+ZtWvblv76+2+aN3++2YZ/U6EClShRnP7uEncMLt73Ht27U+3atQjuO//cIc8BA+jatWtm62kc 0LdPb0qaNGkkb/SZQUFBkfzUjUJAIaAQUAi8fwRszBUBxnTo0B/ozNmz1LxFS1q+YiW1b9+OXLJn lyTdu3Xljvs2tWjZin6a8TPVqFGDChTIHyU7Ozs78RswcCB17tJFfuj0QVWreAhTu2jRYvru22/F L0eOHNSyRQuaOGmyYm4Fkcj/kiRJQv379aPz589Tx06dKeh2EA3o359sbU3PVeBvSrIUOdeod4kT 2ZJb4ZzC3CK0WJ5sVIbv4a/owyMQ3fM2Vzt9Gr1bH1/vj/dGf6/Fs7GxkRUE7V5/NRUf4eb89Wmj c6NM/ExRdHlHF6bP66uvvqI6dWrTxImTqFXrNlJWo4YN9VEsuhMksKEDBw7S/PkLDL+7d+9GSofV Ko30bs0P19jy1+ep3AoBhYBCIL4hYJZbcXFxocSJE4vUFst1c318qEmTxuTu7k5Xrl6l1KlT0779 ++n69eusvvCIevXqKX7GANrb24vE79Kly2TPzO41jh8SEiLRUqZMSVev+tM///xDpUuXIjDVkApv 276dDh46ZJyVumcEMAFIlz6dSJf8/f3l+UybOoUcHR3lWWggJUuWjDyZEYYUPiQ0hHx9fWnGzzO1 YItX5m3INqGNqCRAVQGqCQn5Cn9FsYtAxowZ6fbt21EyxWQG9O+//xrC6terR983aEBp09rTqdOn yXv8BJEQNqhfjxrUb0D29nZ08tRpGjtuHIG5atGiOVWuWIm+SPyFLPtv2bqVHDI6UJGiRSTdj8OG U2BgIC1ftlTq8FXOnPTPnTuEVZZaNWuJRHIzvztTp00jqBN59usrfQCY371799L4CRMpf758NHLE cLp46RIVKliQyz9FU6ZOEzWEzKxGM5i/6Tx58tDVK1cJKk2Q4FpLYFD79O5N5cq6y0Rtzx9/0uQp UyiUV42KFilCXXnS7Jzdmfy5H/l55kxRa0CbK5QrRzbMTGbNmpVOM05YMbrD7TJHSZMmoa1btxHa CgK2Dg4ZzUU36x98P5gCb96MFI4+M3++vJSQ25KK+7zjx0+QnV0acnJyoocPH9Katb8K9hAeVK1a hZ+hPT1gNQ6siqF/RD9Zq2YNacuLF//S4cOH6cDBg/IO4Bk5OjrQ06fPaCc/M7RVkUJAIaAQUAgQ mRaJMDL37t0TfFxdc8nVmTtjUKZMjnKdv3AhNW/enGZMn04+c+bwAHOVDh06LGH6f3a8jI7BcNWK 5TR37hzatHGDMF2Ic4oHwprccbdu1UrcWL7EoD5nrg/l40EzVapU+qyUmxHIxgP2q5evDDqMFy9e FFyyZskSCR93dzeqUKE89WPpLpiTgsx4pE+fPlKc6G5ehoTSkTMBdPbqLXr09IVccQ9/RbGHQK5c uah9u7byfPS5gunt3q0beXhUNniDoevGKydgfAYOHkJp7dNS965dqVjRotSVrxs3b6IBAwcJkzts 6FBJlzJFCvlm58yZSwv4m61evTo9Yp35Hj17yXdZp3ZtkRhipeXJkyfUp5+nqCPVr1+fmdcJtGTp Ulm2B2OaL29ecnZyptGjx8gKS6VKlagkq8vgm03O5Vy5coUGDBrMOvsZqC5LQ0FDhgym5Kzi1Ldv Pzp4+BClSh2zb7olM6vffFOBJkyaROMnThQ3/KArO3q0F13nyXev3n3kinv4o83OzCzu+v138uw/ gBnBtDSQv4PoCEznOG9viZKdGeavvy5NR478FV0Sk2FQu6rCK1P4Va5cWTAGPsB39++76Q9m0IsU KUzPn7+ghbxyhb6xeLFikldhVvsKCLjGz2mRML6VeGICqsv65+gLV6xcSUePHaWKFb8hvB9ff/01 T0DC+8vjJ45TwQIFJL76pxBQCCgEFAIspDMHAhhcX98t1KtnT8Ig6OgQztiGMIODJbQqlT3oMW88 8w/wpzf8l9vVlXKy9AdMq55CWNJyltUcJk+eIpKNQQMHsESml0h/1/66ju5yOQltEtKTp09p3JjR 1JMHK+9xY2UgffnyJbVq05qCg+/rs4zX7oS2CSn0dahBDxaSLJCtkeqAJq3q3KkjHTx4iLyYKTFe Lo0OSEhsj5wOoA4jF1GJfM7kd9qfzl4JirTJLLr0Ksw6BC5cuEAnTp6kmjWqS4ITJ04Iw1jj7b2f 3xFDRoULF6Ib128IowpPqPzY8qpH/Xp1RXq/ePESibuQGaShPwwRiSs8zp49J9I9MFlteRK5du1a UT06duw4M04pJQ3+rVy5ilA+Nnc5ODjINwqpbOvWrSg1M1jHjh+nZcuXMzNegJnWFJLOjiXGwfeC xY2JKb7Z/byyk9s1t6wAuTIDP5L165Enfh6VIhh2SWThX5HCRWg7r+js2fOHxITuf+FChbmeJwWn aTzBhrQTK0nly68lTBhAuIfqE2jp0mXUs0cP6beM9whIBN0/MI4TmNFFn7Vq9WpdiHVOMKw2rKoA SmATsSHz5s1boicPBhwTTz8/P+kPA1jHN0mSxBIfDDkmEZCIOzs7ix8k2JkzZ6Lfflsv0lxIdMGM Y8MvVs7smKktz9Lqq7ya89v69ZJG/VMIKAQUAgqBaBhcgOMzz0fUBSAd9A8IoB9YGoOBA+oL+fLn oz59+rJE4ZhIIeb5zBU9WmMG9zZvsJjHOmmXWboD2rlzF5XjDhkd/VPupDFwQcLjw9LdVavXUNCt WzJI1axVm2bOmCEb0bTBTTKI5/+gLgL1A0jJoNqBHecgMD56AvPSoWMnKsuSXEjAWjRvJvdQL7FE GKQd0qWmNnXcRAc3dYqkVM0tv0h0563bR0H3HhkYbEt5qXDLCGzYsFGYNTC5YHYKMNOSJnUaWrxk SSTVBTwXTCY1+peZyQR8ekkCG6iShGneEgdx8QOB6QRpO/ox6Qy/j0iD+5dvT0J5w0VgIgvS5wud 1LZtWtPWbdtkYisR3v7DRlOtnGfPnouvlG9U57A3kcvU52HKjTz0J3fADV1ctBmk1U+7Qi1B76+5 NSwk0Mw/qH1MnjiB7gUH0w9DfzSoUpmJbtL7JE9WwIAaUyirCYG0p/f67fN6w+0BgZFt17YNPWSm FZOeO3fu0pdfml5xwYkzmNju27df9kHk4P7Y3a0MfV26NKsh/az2Lgii6p9CQCEQ3xEwq6KA3cBL eYCt4uEhEibowOHoHr8jfsJY4VQFLMNhOa8sh0Hio+0WRketLa26smR3PEtky5UrS9DHq1u3DgXe CBTmVgMfenQvnj9nhnqeYZCFTimW37AcrygCgYsXL8nyZbeuXURi3qVTJ2GCsFSrJ2za68CbAnfv 3sO6ib+I/h90dy0RGAFXp4w0c0hT6livLFUsmZtKFcguV9zDH+HWMAyWylLhEQiAyb3NExYPXtY2 xdwi5nGWWkKnFIwmvqtZv/xCP/JGUDBVTk5OLMmtJ6o9zZo0pQusuqIxnBGl/DcXdD1xJOC6db/x ySmRT0sxlTN0hy9fvkyoD1SOmjVtIhMzU3HN+UGf16NyJSpdqpT84IYfNlmGvAqhLp07Ue7crnLF PfxBwAN6yZgsNG7ciM5fOB8t4wc9V5+5c8mR+yifefMZ5yyGDbXm6mbK397OnjJx36X9rN3kBjUG /C6xxBzfOCYC0KsFI3vrVhC5ublJ/4kTVAb092Tm90vpm3Px5jjsV8CENkWK5P95M5+pNik/hYBC QCHwKSJgVkUBUoJJrFbg2bcvffttNVFHmM4SVSyRgcbyMl63Ll2Zya0ix4Rh08MaXvoEVaxYUZb4 tm/fQX/8+SeVKlWSRgwfLmH3WToy+Idw/UB4YODDoIUTAbD5DL+dO3fS/36ZKXq9x3nJVFEEAlia 9PYeT/15kJszexbdZUnPSC+vKNKm47ycjKVrH5ash/HRbWB0jx49FpGRGVfSxIloRJdaVLl0HlYd iZj/YMNZevuU4g893NZD55vJQXm/CwJgBqFiULJkCZbgXYwkudXyO3LkiCy7QxrfiVVPILXH6og/ L08v4clomzatRboPffjhI8dIstevw+h1WDgzqkk5IW0FYbke4QZ/Vn0BQQUmzChNKMfduGkzlWG9 T7xTWD3AewVGF/GRj0Zy/zb9uHHeNGrkCJrx03RWZbhHz1gVCeHREeob9ja/+QsWEFaQvEaNlCSH D/sR/MC8473v1aO79EHIG/fQIwahnCZNmojuK3CawKcjREdFedMdjt0DjfceJ1ccFfZ9o0bitubf G2ZKy5T5Wn5afJwYA2GAho+Gtf4KqfRTri8kv9gU6s7MLDafaXHWb9hA9fhbbtWqpfhhrwNUkC5d viybz6C6Aok7vvHYntRo7VBXhYBCQCHwqSGQwJKhB5xsAOnsTd4ZbEp/DZsfwAyDMdVIk+5pS6Lw T8EbPyAVtlYPFHGRryLTCGCZFht/gKceZ+PYOAkDA6X++RjHwb1m6CF071g6uWY4ZWQVBXMUdPcR FWwwnGzdBylDD+ZAeo/+0IHHiQbG3wf8ITF8n0wOvm2oyDznFZfo3jvj5kMNSZ9mMm8Yw0ksxhR4 M5CGDR9h7C0nrMDT1Hus1UdL1LVLZ8runF1OGoFkFrqqoJiWqeUXl1c8P2Bsqp0IA+bG/TC+ccTX GOK4rK8qSyGgEFAIfKwImJXgahVGxwm9W3OEJUtjMjXwQUKBn7VkPHhbmy6+xMNgpm0ki67NMWV2 nr14RQ08Z5FL5nQm1RDwbK8EsiSO40VlT6KriQqLLQTA4Jj6PsIlspZVB/5LPfD8TVk0tJSncZot rMebLFlkowjIA5JLU2SK4dPigXHWE04owKZVfCMac4vwmJapzzOu3NqmUVPlmQuL6TduKm/lpxBQ CCgEPjcELEpwP7cGq/aYRgASXGrtR2HPH/IucD5sPkI7IUoCrB5jb4xNMk4zv4Qy1RsFIeWhEFAI KAQUAgoBhcCHRMCiBPdDVk6VHXcIPLkTQCmZWdX4WktyQC0e0qXiHf+KFAIKAYWAQkAhoBBQCHws CNhiN64ihcC7vgcZUn8VJ+BZY/TjXdsQJw1QhSgEFAIKAYWAQkAhEGcI2FqjxxlntVEFfTAEHj96 SCm/dIpx+XElwTWl621cWfUuGyOi7hUCCgGFgEJAIRA/EVAqCvHzuUdptTC3b3VwjQOhj6s7BcoQ DB1cqDXQS9MbgwwRlUMhoBBQCCgEFAIKAYVAHCJgkcHF0UMZMnzJu5Efm9w9jaOqIF179dYKkqm6 a8eGaWH6UxZw3BHKMN4VjjT6eFpadQ1HAJhl4kPpYdkstnDCBrP7W4cZILbh3WYZ0qaivC6OdObK Lfon+DHvTOfdZW/JvuoIg86u5qeuHxYBfI84S3Xjpk1RjpP6UDXDOa04zeDq2zO047oeMEYD4xmw uli+fDmx/gVrYcYUXZhx3E/x3rgfRhtiq+/4FPFQdVYIKAQ+bwSiZXAxUA4eNJCS8RmWOKwch5Yv XbZMEIFN+CGDB1FaHlBxcLzvli00ddr0KIMqztHdsX1bJBR37dpFo7xGixneSRMmUKIvEtEotlf/ ++7dEq95s6ZUu1YtPmS9cZT8ImUUT29gzQjPBQfT37t7j4aPGCF27mMTDgyGhXJloWkDGou53r/O XqNe3svp73PX1aAYm0DHcl5ff12aevXqSYf9/AyWBU0VUZktpr18+S/9+edeU8Gx6teqZUs2/HKO Zs2eHav5WpsZDM/kZ4MyYHB7dO9Of/31F40ZO46MMdCHWZv3pxSvb5/echa5vs7o0zULlHp/5VYI KAQUAp86AmYZXDCmQ9+aAZ3+0wyqVrUqtWfTr4fYLOQVtpTUvVtXkYT07tuPwOxiUAWDCpORerKz s5PbAQMHiqQXNw8fhh+8XpVN/SINrCLBtCzcOXLkoJYtWtDQH4cp5lYP5Fs3zHn279dPTJLOX7CQ YLJ3QP/+1LptWzHraZwEh8PjfNSYSmoSJ7Ilt8I5hblFnsXyZKMyfH/68i36l02iKvo4Edi82ZcO HDhI99iyl57wHujPUa1QrhyfFfskCoNrHE/LAysGmPTo8zAX15y/lld0V3NpYdgEZMqYgbk0pvxb tW5jaIMxBvowrY6m8rAmTIujv5rLK7b89WWZcidIYCPvhl56bWx4B89ZMyQBzNFvGPcd+jj6csw9 I8THczPOR59WuRUCCgGFQGwjYJbBdXFxIVjIwQwfy+BzfXzY9GVjcnd3FwYXVoj27d8vRiCw/AgG 15RlInt7e+nYLl26TPbM7F5joxHaoe2wMnSVly3B4JYuXUqsFUEqvG37drGvHtuN/RzywwQgXfp0 YqUJJlrxfKZNnUKOjo6RDHLAupMnM8KQwoeEhpCvry/N+Hmm1RAwL0MwzwuVBKgq4JqQr/BXFPcI ZMyY0aT5Xkx4QDD1C4Lp62E8Ma1bvwG1aNGcvqlQgb7gySpOmNi7bz+NYxPbkKiWZkkvf5iUPXt2 at+hI5t1rkeNGjYknFZx8NBBjjde1IYmjPemdGnTUgYuH6a37z+4bzJPGBtozGZtGzb8nlJzHpDY eo0ZY7V0EKoVg3kSXKBAfpkIr16zlpavWCGW2fr07k3lyroLg73njz9p8pQp4r982VK6GXiTcuXK JdjMnjuX9u7dK1beBg8aJGaFwcTDfK9m8GEQl3H02FHui+yjYKCFrV69hooWKUJdu3QhZ1Zv8Oc+ 6ueZM+nvo0fNYhqdsQUIAJCXSw4X+UYhMIAUuXjx4tSTJcqZs2SmW7ducbumin8WNk08aOAAyp07 N8G0+f9mz6EdO3aI5UJgVLBgAREuzGGTyX8wHjGh4PvBFMhWKfXk7Owszx/MbhauS8C1a2xWOZgK FSooffX2HTvpBJtMh7CiRo3qlCVzZnnfDh48RDDRDgb222rVyNXVVZ7RufPnaOvWbeKuUb06ffVV Tmaaw+gYmw9HOxQpBBQCCoG4QEA7zjRKWZoEyNU1l4Q5OznJNVMmR7nOX7iQmjdvTjOmTyefOXN4 ELjK0t3DEqb/Z8fL6JD8rFqxnObOnUObNm4QpgtxTp06RTVr1qDWrVqJux1LITFgz5nrIwO1NUdD 6cuKD+5sWbPSq5evKCAgQJp78eJFuWblQVFP7u5uVKFCeerH0t2p06bxoFiQ0qdPr48Srfsl27Y/ ciaAzl69RY+evpAr7uGvKG4RAAPXvl1beYb6ksH0du/WjTw8Khu8MSm1Z4YUlJLNY+N9WbxkKXlP mCjvw9elS9Oq1avle4Maw3A2iwsGrBuvyKz99VcaOuxHUR3q0L695AE1GHyHY3lJf8nSpWbzhCne SqwKsHLlKurn2Z8yZszATFNdycOaf8N+HCrv58BBg1l/eDN17NiBcubMyas5zKR/U4EmTJpE49m8 L9zwA1MFhguTN6wO3f7nNrVr20aKQn9SqlRJVkMYS/+bNUsYMq0OadKkphTJU0TBAOFaWApuy+jR XnSdJ/a9eveRK+7hbw5TLX/jq5bXraBb1KdPX2Fwf/zhB2HQsWp1/MRx6t6jJ90Ouk1dOnWS5E0a N6ZUKVNRu3btRfWrytvnO/SHIaKW5Nl/AB1hBnnokCEy+TAuM7r7/PnzUxVeOcMPKhrom7FalyRJ YqnbylWrBa+sb98bCCTc3cpIlrmZgQ3j1SC8TydPnqKKFb8RlQf0NXnz5qUtrKaGiXQ+dhctWkQY 3jx5ctOy5StoK1uuc8qWVd6l6OqnwhQCCgGFQGwhYFaCCwbX13cL9erZk+rUrk2ODuGMbQgzOBhc qlT2oMe88cw/wJ94EYvQ+WFAAtOqpxDWzz179ixNnjxFJAeQTPTp3Uukv2t/XUd3uZyENgnFtOa4 MaOpJw8o3uPGkrOTM+sIvqRWbVpTcPB9fZbx2p3QNiGFvg41LPdpS8a2rFKgJ+3IrM6dOhIkLV6j x5DxcqQ+vrEbEtsjpwOow8hFVCKfM/md9qezV4JEkmscV92/XwSwpHzi5EmqydIzEKRpmAhCmgby 8zsiV1P/zp0/T1u2bpWgRt9/Tzly5qDde/bQ0ydPRUXhJksO69atI+GOjg68EuBAWHWpU6c2TePJ Kwjp9+7bJ278M5fnFJ5IlWbGEkwodPO/+sq6M5LBlOfNk0fe0b/+/pvwg07//fv3qVePHiw53k57 9vwh5YMZL1yoMK1gRhq0fMVK0a3FioWX1yhh1gowE4c0aCeoeLFivFE2g7i1fw8ePIiEgeaPKySR wBftRzyYKi9ffq1IihFurv0IMybklTRpUpoydZq059Tp08KY47udPWc2M4kVqXKlilSEGUKNbt++ TVWrVqG2bdqI1BjfLjbjYpIKSTQmrokSfUG2zJhCyqt/Nloe5q5gaG1YVQGUwCZiwyjUB/5k6Tfq 9eDBQ+nHsXKHSQQmSSBIsNGf5+EyMbkCJWfcnbI5McN70rAPAJNvxHNwcJA4lZgRvnT5Mq37bb1B TU0C1D+FgEJAIfAeEYjMFRkV5DPPR9QFIB30507rhyGDpbOH+kK+/PlEIoGNG+g05/FyGSQSxgzu 7aAgmjd/AV2+ckVy37lzF5Vj/T9INp4+eyYDF6Q/PizdXcVLg0E84EJiVbNWbZo5Y4ZIk7TBzah6 8fIWgw4GcwzYUO3Ili2b4HDj+o1IeEAXukPHTlSWpStgOFo0byb30J+2RHieDulSU5s6bqKDmzpF Uqrmll8kuvPW7aOge48MDLalvFR47CCwYcNGYbrA5ELaVqBAATkZYPGSJSZVF7RSXzx/oTnp2fNn Brcpx43AQPH+lSee165fM0QxXn43lSeYnhk/TRcdz9PMxIGM0xkyNOPQ62jiZBaoMuFdxGRLo3CV mYiFp+fPn0uQdsVNgrcqNRFp2LZ0DCgB656CNH1f7WrDE3uQqfZLgKl/XH+Qlgf0W8GkQmo6+3// 42f3j0z2sQLmzOoiIDxTrMyULFmSV8maiepHy9atJQzMo/acoG8NCWtMCIzo8eMnoiQB9tpkGe7X YeG2DLV6I0HdOnWEsUUfjwk01BlAeEZ6+pcFE0iHukKFypX78zy587Ak2E1W57TJtz6NcisEFAIK gdhGIGKkMMoZUoel3NFW8fAQ6RF04KCL53fETxirN9yBYZkLR/CU5TDM1rXduFgq1JZNIcEYzxLZ cuXKUmY+1grSosAbgcLcakVCP+0FD1Q+8+bRy7fHjUGnNGnSJLIcr8VTV+KB7xJv0nsom8sgMcey JiQ+WE7VEyYbHXhT4O7de1h/8BdKyJuMoLtriTBYuTplpJlDmlLHemWpYsncVKpAdrniHv4INx7U LOWrwv87AmByb/OkxoOXlnHslSXmNroSobObM0dOkdhiuRtMDVRfwPykYf16SOViQpq07rf162Uy ++zpU5bWPbEqCzDC589fkEkYGOUG9evRFt/N5MIM30lmpjwqV2LJcCn5wQ2/6OjMmTOGNNgzUKF8 BZPR9RjoI5xnqXcIb6Ts0rkTS0hd5Yp7+MeUkAa4YlMuvteBA/rTqpUrRNUgBe9BgL7z/gMHhImH xBrUk6XWbqwWsHLVKtrEx73Z24dv1IUkH5Lc06dOi44sGEespsWEoHuciftW7YcNbtaSnV0a6Wuw moCTbzS6xjq7UH1A+/DMoDNdtGhR0eGFDvgZXsHbuXMn6/LbKBUFDTR1VQgoBN47AmZ7N5xLO4nV Cjz79qVvv60m6gjTWaJ69aq/VGosb1bp1qUrM7lV5JgwbDZYs3athGHZDWoJ2JTyx59/ij7ciOHD JQybJgb/MFTc+IdNMRi0OnbqLBIbSG3QGf7vl5mi13ucl2MVRSDwjKXe3rwBqH9/T5ozexbdvXOX Rnp5GTbuaTGP84YO6ED6sGQdenNgdI8ePaYFm70mTZyIRnSpRZVL52HVkYj5DzacpbdPKf7Qw209 dL7ZPFTA+0EADNnixUtYsleCLly4aFJyi2eNyScIG3s0SVz4/Wt5F+Dewd8YTkmZMnkyNWzUmPUk l1OHDu1ldQAT1REjRyGa7KgPDQ2X5oXfm84T+rznzp2j8d7jZAMS+o+wt1JAqQer1URHo3lD2kg+ 7u7nn2dIfwJdXqw2BC5YQFhB8ho1UpIfPuxH89lP27H/+m2+oWg3M+n4LVi4SE5jGTt2jDCq94Lv GU4GCNNhYoyBFoZNafimevXoLv1bMKtR4R7+0WFqqn1PmdEfOWqUqHqhX3zKeUxkzKEuBAlss6ZN ZS8DJqkoHwSmFxvevvvuO5GCY08CvnuoKowcPoxmzvxZnvF6nvBASmotvXkTRmXKfC0/LQ0krJC2 6iW14ffhUnO8S9qpCujjcZpOJ9aP1pjxMMYbqg2YPGNigueCMQKSYqzMlSxRkjrye4U8sfEwJvXV 6qiuCgGFgELgXRBIkDlrtoj1PxM5YCkN0pmbvPNW6+j00bABBYOZdjICwjTpHgYbjVLwhhdIha3V A0Vc5KvINAIYSLDzHHjqcTaODf1GDC7652McB/dvEqehsIbbKXTvWDq5ZjhlZBUFcxR09xEVbDCc bN0Hkc1KD0oQB5bM6vHyqCVau26dpSgqXIeAJv3TvmvcQ/cUzNS7Er5bvGvacrc+n8m8SczUSSuB NwNpGG92A+F9RX2M06MfAll6jyXS23/WvPvGGOjTww11IL36g3G4dm9N28DwGWOLdqEO2ikYWn64 In74RCGyigWeETCKCRb6fP+LG3XFz5RhH00abPzszPn/l3qotAoBhYBCwBICZiW4WkJ0othkYY6g K2dMphguSDLws5YUcxs9UmBardFli6ke5LMXr6iB5yxyyZzOMFHR1wTP9krgPUI88yywPoVyf6wI aIytVj/cGzNgWpi11+i+2y28kz5ZsqRRsoLKjUbm3td3YebM5aWVhasxBvowuK1hbhHPmraZwhbt Mtc2U/FRlilmGP5xQcDLHGbGjK1WH3P+Wri6KgQUAgqB94GARQb3fRSq8vw4EbBJloZSewwjf94z cj1COyFKZV9nIUrN+0sQX5FCwFoEPuczUD/ntln7fFU8hYBCQCHwMSGgGNyP6Wl8wLo8uRNAKeeX II2vjdC6NF0pLR7SpeINT4oUAgoBhYBCQCGgEFAIfCwI2MLCkSKFwLu+BxlSW3fW6X9F2BqjH+/a hv9aN5VeIaAQUAgoBBQCCoGPCwFba/Q4P64qq9q8DwQeP3pIKb90inHWcSXBNaXrbVxZ9S4bI6Lu FQIKAYWAQkAhED8RUCoK8fO5R2m1MLet/SjsecSGHy0SnxDGx01pdxFX6OBCrYHi4BSFiFKVSyGg EFAIKAQUAgoBhUD0CFhkcHEkTIYMX7L1nccmd1jjqCpI10wdG6MVrR0bpt3rT1nAweUow3j3NdLo 42lp1TUcAWCWiQ1nwLJZbOEE5vb+1mEGiG3YIlSGtKkor4sjnblyi/4JfsxHjkUc/WZfdYRBZ9eQ SDkUAnGAAEz23mczugHRnAMLK38wTgMTsx+C3rUPM+4vUffY+sY/BA6qTIWAQkAh8CEQiJbBdStT hgYPGkjJ+DxGHPiNQ8GXLlsm9cQAM2TwILE5/5rtjsN2/NRp06McIYNzHnds3xapbbt27aJRXqPF +s2kCRPEKs6oUV70++7dEq95s6ZUu1Yt+p4PoDd3JE2kDOPZTYkSJeS5pEmThu7dvUfD+YD802y9 KTYJg2yhXFlo2oDGYq73r7PXqJf3cvr73HU12MYm0Cqvd0KgXdu29Nfff7MZ8Plm08OKVokSxenv LnHL4OLbqc9GDzq2b08bNm6i6T/9ZLaOpgL69uktZ4brw9D3apYi9f7KrRBQCCgEFAKmETDL4IIx haUjWKSZ/tMMsWDTnk2/Hjp0SCwMwfRkUNBt6t23H4HZ7dWrpzCox44dj1SSnV24mckBbJlH06N8 +PCRxKnKpn7B1P7D5kdhWhbuHDlyUMsWLWjoj8MUcxsJyfAbHPLev18/MRs6f8FCMdk7oH9/as0D vqnzJnHIOiYJMZUAJU5kS26Fcwpzi5KL5clGZfj+9OVb9C+bLVX0eSCA98Pce2PKH63Wp9G79Yjo /cHwYcXBOD8YK0GYqUmsPr25fPX+1ro1C2g4R9qYzJWJeNGFGefT39OTTZxXFgMrtrYxM6WLvBIk sKEDBw6ytboLhqyNDeQATw03vduQgB2x5a/PU7kVAgoBhcCngoBZBtfFxUWsCkFygGXwuT4+1KRJ Y4Jtd5jQhEWiffv3ixGIR48eCYNrykqRvb29MFeXLl0me2Z2r7HRCO1g85Rsi/0qm3UEg1u6dCkC Uw2p8Lbt29lc5aFPBcM4rScmADCL6TlgAPn7+4tUfdrUKeTI9uX1BjlggcmTGWFI4UNCQ8jX15dm /DzT6roy30EwzwuVBKgq4JqQr/BX9HEikDFjRpPmezEpAukNBNSvV4++b9CA0qa1p1OnT5P3+Aki IYS51Qb1G5C9vR2dPHWaxo4bJ9byWrRoTpUrVqIvEn8hy/5btm4lh4wOVKRoEUn347DhFBgYSMuX LZU6fJUzJ/1z5w5htaZWzVoikdzM7+DUadMIakme/fpKXwIGdy+beh0/YSLlZ7PdI0cMp4uXLlGh ggW5/FM0Zeo0UUPIzOo4g7lvyJMnD129clWs+EGCay2BQe3TuzeVK+suTPWeP/6kyVOmCNNdtEgR 6tqlCzlnd2bz4P7088yZotaANlcoV45smJnMmjUrnWacsPJkaTPjF18kol59+lLL5s2577O2hpHj Bd8PpkC2Hqkn9L358+WlhNyWVNx3Hj9+guzs0pCTkxPBWMaatb8K9i7Zs1PVqlX4GdrTA1bjwOoa +ln0t7Vq1pC2vHjxLx0+fJhgfhfvAJ6Ro6MDG+N5Rjv5maGtihQCCgGFwKeMgHacaZQ23GP76yBX 11xydeZOFJQpk6Nc5y9cKDbUZ0yfTj5z5vDAcJWlu4clTP/PjpfRMYitWrGc5s6dQ5s2bhCmC3FO 8QBWkzvc1q1aiRvLjhiMYXs9Hw921hwNpS8rPriz8UD76uUrg+7hxYsXpdlZs7D1BR25u7tRhQrl qR9Ld8FUFGSGIX369LoY0TtfhoTSkTMBdPbqLXr09IVccQ9/RR8fArly5aL27drKc9bXDkxv927d yIMlihqBoevGKzBgfAYOHkJp7dNS965dqVjRotSVrxs3b6IBAwcJkzts6FBJlpJNbePbnzNnLi3g b7969er0iHXve/TsJd93ndq1RWKIFZsnT55Qn36eotZUv359Zl4n0JKlS6l27VrCmObLm5ecnZxp 9OgxNHHSZKpUqRKVZLUbfPvJuZwrV67QgEGDWfc/A9WtU1vKHzJksJiu7csrRgcPH+Kzl1NpzbHq 2pKZ1W++qUATJk2i8WwyGG74pWD1q9Gjveg6T+J79e4jV9zDH212ZmZx1++/k2f/AcwIpqWB/D1Z IjDBWPkCcdf3TpQ/f36qwitc+FWuXFkwBj7Ad/fvu+kPZtCLFCnMltZe0MJFiyW8eLFiUlZhXlEL CLjGz2mRML6VeGICqsvmrtGnrli5ko4eO0oVK35DeD++/vprnoCE97vHTxynggUKSHz1TyGgEFAI fMoImJXggsH19d1CvXr2JAxejg7hjG0IMzhY+qpS2YMe88Yz/wB/esN/uV1dKSdLbcC06imE9XPP nj1LkydPEYnEoIEDWJLSS6S/a39dR3e5nIQ2CekJm/EdN2Y09eRBxnvcWBkAYWqzVZvWFBx8X59l vHYn5CXP0NehBpUDbdnXllUK9KRJmTp36kgHDx4iL2YmjJc59fGN3ZDYHjkdQB1GLqIS+ZzJ77Q/ nb0SFGmTmXEadf/hEMBy9glmqmrWqC6VOHHihDCMNd7e+/kdMVSucOFCdOP6DWFU4dmZpZe2vHpS v15dWQVYvHiJxF3IDNLQH4aIxBUeZ8+eE+kemKy2PBldu3YtneFvG2pJqVKllDT4t3LlKkL52Nzl 4OAg3zqksq1bt6LUzGAdO36cli1fzsx4AWZaU0g6O5YYB98LFjcmuPj29/MKUW7X3LKS5MoM/EjW 00ee+HlUimDYJZGFf0UKF6HtvDK0Z88fEhNqVYULFeZ6nhScpvFEHdJOrIKUL7+WMGEA4X4RM5Cg pUuXUc8ePcwu/UukWPoHoYANqyqAEthEiIFv3rwl+vZgwDGB9fPzk3414No1bkdiiQ+GHJMISMSd nZ3FDxLszJkz0W+/rRdpLiS6kADDHDBW4OyYqS3P0uqrvCr02/r1kkb9UwgoBBQCnzICkbkio5b4 zPMRdQFIB/15t/IPLEVBhw/1hXz581EfXoY7euyYSA/m+cwVPVpjBvd2UBBvBFlAl1kqA9q5cxeV 444UHfRT7lwx4CRntw9Ld1etXkNBt27J4FKzVm2aOWOGbETTBiWj6sXLW6iLQP0A0i2odmCnOAgM i57AdHTo2InKsiQX0qoWzZvJPdRLLBEGV4d0qalNHTfRwU2dIilVc8svEt156/ZR0L1HBgbbUl4q PO4Q2LBhozBrYHLB7BRgpiUNW5lbvGRJJNUFPF9MSjX6l5nJBK9eMSMFlZQI3VTEQVz8QGA6QZo+ Nyav4fcRaXD/kvMK9ydWRwqPo8+3UcOG1LZNa9q6bZtMkCXy23/YsKqV8+zZc/GV8o3qHPYmcpn6 PEy5kQcmbRqFq96wDjC3GaTVT7tCLUHvr7k1LCTwPf6DBBgMqDGFsroRSGvJ67fP683btoGRbde2 DT1kphWTnjt37tKXX5peucHJNZgg79u3X/ZT5OB+3d2tDH1dujSrM/1s0PE1roO6VwgoBBQCnwIC ZlUUkiZNSkt5YKzi4SGSIeiu4cgdvyN+wljhVAUsn2VnvbWyHAZJjbbLFx2stiTqypLd8SyRLVeu LEGPrm7dOhR4I1CYWw0g6L+9eP6cfObNMwyO0CnFshmW4xVFIHDx4iVZduzWtYtIzLt06iTMC5ZY 9YRNex14U+Du3XtYp/AX0duD7q4lwgDu6pSRZg5pSh3rlaWKJXNTqQLZ5Yp7+CM8rgZ6S/VV4ZER AJN7myc+HrysbYq5RezjLLWETikYTXyfs375hX58u6HUycmJJbn1REWoWZOmdIFVYDSGM3JJ734H XU9sOF237jd6HWrJKHS47vDly5cJ9YHqUrOmTWSCF5MaQJ/Xo3IlKl2qlPzght/58+cp5FUIdenc iXLndpUr7uEPAh7QS8ZkoXHjRnT+wvk4Yfzs7ewpE/eB2g+MqzUENQb8LrHEHH0FJgLQqwUje+tW ELm5uUk/jJNYBvT3ZOb3S+njc331lex7wMQ4RYrksqnOmvJUHIWAQkAh8LEiYLbXxOx+EqsVePbt S99+W03UEaazRBVLW6Cx3t7UrUtXZnKr8CAVKpsV1vCSJahixYqilrB9+w76488/qVSpkjRi+HAJ ux8cTIN/CNfrgwcGLAw2HTt1ls1n2IC2c+dO+t8vM0Wv9zgvdSqKQABLit7e46k/D05zZs+iuyyh GenlZdi4p8U8zsvAWHL2Ycl6GJ+iAEb36NFjWrDZa9LEiWhEl1pUuXQeVh2JmP9gw1l6+5TiDz3c 1kPnm81DBXw4BLCRDCoGJUuWYAnexUiSW61WR44ckWV3SPU7sQoLpP9YZfHn5eklPKlt06a1rBJA r374yDGS7DVb+ngdFs6MalJOfPcg7OZHuMGfVWhAUKUJM0oTynE3btpMZVjvE+8mViHwfoLRRXzk o5Hcv00/bpw3jRo5gmb8NJ1VGe7RM1ZpQnh0hPqGvc1v/oIFhJUor1EjJcnhw34EPzDv+H569egu fRnyxj30iEEop0mTJqL7CpwmTJwk/tb8Q/mhVjDwxnm9Yaa0TJmv5aeFYbMvhAoaPhrW+iuk0k+5 vpD8YnOpOzOz2HymxVm/YQPV4z6hVauW4oc9E1BlunT5smw+g+oKJO7oK2J7UqO1Q10VAgoBhUBc IZAgc9Zs2mqXyTJxsgGkszd5R692LI0+IjYtgBkGY6qRJt3TljLhn4I3bEAqbK0eKOIiX0WmEcBx RzCyATz1OBvHTpw4sQxm+udjHAf3bxKnobCG2yl071g6uWY4ZWQVBXMUdPcRFWwwnGzdB5HNSg9K EAeWzOrxBhlLtHbdOktRVLgOAejS40QD4+8M/pAYvk8mB30EVG2e88pNdO+vrrrihDqTPs1k3jBm 6vSWwJuBNGz4COPkclILPE19D1p9tERdu3Sm7M7Z5cQSnEAAXVVQTMvU8ovLK54fMDbVToQBc+P+ HH0F4msMcVzWV5WlEFAIKARiGwGzElytIHR4+uOnNH/tqp1tq93jamrAgmQBP2vJeNC1Nl18iYdB SNtIFl2bY8qkPHvxihp4ziKXzOlMqiHg2V4JZAkaxzPPAkdXIxX2sSAABsfUdxYukbWsOvBf2oH3 CKsRMSXjNFtYjzdZsqRRsoHk0hSZYvi0eGCc9YQTCrD5Fd+axtwiPKZl6vOMK7e2+dRUeebCYtpX mMpb+SkEFAIKgY8FAYsS3I+loqoe7xcBSHCptR/BXC8fd8vqCebLw6ov9rTYJOM080soCa55qFSI QkAhoBBQCCgEFAIfAAGLEtwPUCdV5AdA4MmdAErJzKrG11qS32nxkC4V79RXpBBQCCgEFAIKAYWA QuBjQcAWu2gVKQTe9T3IkPqrOAHPGqMf79qGOGmAKkQhoBBQCCgEFAIKgThDwNYaPc44q40q6IMh 8PjRQ0r5pVOMy48rCa4pXW/jyqp32RgRda8QUAgoBBQCCoH4iYBSUYifzz1Kq4W5fauDaxwIfVzd 6U2GYOjgQq2B4uAUBUOhyqEQUAgoBBQCCgGFgELAAgIWGVwcGZQhw5e8i/hxlF3POIYmC58tef/+ fatOSEB84xMWcEwRyjDezW0qroW2xKtgYJaJDWfAspkxpu8KBDaY3d86zJDchnebZUibivK6ONKZ K7fon+DHvKM84lQ5+6ojDDq7hkTKEW8R+KZCBbFsiFMHihcrRr/v3h3l3XzX7xrp9BRb77w+T+VW CCgEFAIKgc8HAW2vkMkW4bDwjet/o2VLl9KmDeupKR94rpFL9uy0euVKWrRwAW3kMJwZaY4wODVo UJ92bNtKPbp3N0TLnz8/57uBfDdvIgyOGjVv1pTWrFopjK/mp64RCMAK0do1qwV7PAPYnY9twjMr lCsLrZrQiTb91INWT+xMRVyzmjw6LLbLVvl9mgj8+ONQ+ootYrm4ZKehbBkNZ2hrVKxoUfp17Rqa xya5Y0qwrAYz4fofLJIpUggoBBQCCgGFgDkEzDK4GJwwSJ05e5aat2hJy1espPZs+hWMLahdu3b0 4OEDatK0qVhOatCggVnzmf09Palzx46SztY23MY7bqqyqV9IeRYtWkwwLQvKkSMHtWzRgiZOmhzl IHKJEM//wQxn/379xJQorL8F3Q5ik5v9zZrW1A58jylsiRPZklvhnFQ8r5MkLZYnG5Xhe/gril8I 4B0yJhgawSqCNVStalWaOHGCGHpJaCIvS3nYsI7M1av+NJ+trWm/U2xmV0/6uqBuxhJfxNXH0adF fPyMCfFN5WMcT90rBBQCCgGFwMeHQNSR620dXVxcCJZtYCISy+BzfXzYZGVjcnd3pytswvP27du0 ceNGsW++c9cuatGiOWXMmFFMbxo384svElGvPn2pZfPmvGQZEQrrQBi4YK6zdOlSIvEZMngQbdu+ XeyiR8RULg0BTADSpU8n1pVgWhXPZ9rUKeTIduv1BjlglcmTGWFI4UNCQ8jX15dm/DxTy8biFSvC MM8LlQSoKuCakK9GK8UW81ERPi4E8I3i2zUmTJxAMPWrESSn3/PENW1aezp1+jR5j59AwWxq27Nf X+kHwPzt3buXxk+YSK9evdKSRbna2dnRtGnT2ZphcqpUqVKUcGs8nj57SoFsTVFPzs7ObI66nljz y5IlMwVcu8ZmfIOpUKGCYpFr+46ddIJNfaP8GjWqU5bMmaV9Bw8eEtPiYGC/rVaNXF1dhZE9d/4c bd26Tdw1qldnaXROMY17jM1e79ixQ1+0cisEFAIKAYXAR46AWQb3HttkB7m65mKb9hfI2clJ7jNl cpTrtOnT5Yp/zZo2EUs/l9mmuSka5TXa4K1nkCCFady4MYWy/fO9+/ZSu7ZtCQPtnLk+lC9fPmHY rNk9b8g8HjiyZc1Kr16+ooCAAGntxYsX5ZqVdaH1DK67uxtVqFCeevbqLTrUDerXp/Tp01ttKvkl P5MjZwLo7NVblCWjPd24fV/u4a/o00QgV65czLDWpw0bNwnjp7UCTG/zZs3owsULtGHDRvEuWqQI devWlRYsWCirOD26daPuXbvSmrVruS9wptGjx1ASNqeNCekff/zJ3+8+Lbso12XLl4sfVI/eVSKa mfXNq/CKj0Z+fkdkQpwkSWJ57w8cPMjMbl1Kniw5LV6yVCbM7m5lpJ25mYENY6tt8M/FKhQVK35D YFpLlixBeVm9Z9OmTZItmGCYvoYFszx5ctOixUvEDHDJEsUJx9SpvkhDX10VAgoBhcDHj0C0DK6v 7xbq1bMn1aldmxwdwhnbECMGp22b1lSpYkUaNGRIlE1olpq/9td1dJcZ6YQ2CcUk5rgxo6ln7z7k PW6sDKIwHdmK8w8Ovm8pq3gTnpBVPEJfhxo272hmN22NVAe0I7M6d+pIkFh5MUOCwdtagsT2yOkA 6jByEZXI50x+p/3p7JWgSJvMrM1Lxfs4EMBE9cTJk1STGTkQpJuYUIKxA4Fp1Khw4UJ04/oNWrBw oXh17tKFbFltCSZrwbAWLFiAkidPIWF29nZasvd2BWNskyBCjUBjlLHZ7E+WIuM7ePDgIWHSjBUn SG0xGQT9ffQor2KEUp7cuWWVCX7JeYXDKZsTnWQ8Tp85Ay+ZNCKeg4OD3FdiRvgST9rX/bZeMbeC iPqnEFAIKAQ+HQTMMrhogs88H1EXgHTQnyWG2OShlxI2/P57asaSnzFjxtLhw34xbjV2W+/Z8wcP lMnJhzefrFq9hoJu3SJImmrWqk0zZ8wgbERDHEXhCGDwhvpBhgwZRLUjW7ZsEgBmRE/Hjh2nDh07 UVmW5H7zTQVq0byZ3EO9xBKBeXBIl5ra1HETHdzUKZJSNbf8IsGdt24fBd17ZGCwLeWlwj8uBCCh BVMLJhfSzwIFClAatkS3eMmSSKoLeAfe8J9G//JkMwGrITRq2JAwqd26bRv3Cf5a8Hu/3ggMpC1b t0YqJ126dPIeapM8MLuvw8Jt8KFv0ahunTrC2IL5xcQP6gwgjUnW4qGNSIfVEaj+uHI/lCd3HnJ3 c5NVJW3SqMVXV4WAQkAhoBD4eBGIEIkY1TEpLz8u5UGvioeHSH3KlXWndGnTkt+RcEa2+nffUefO nUQPN/BmIOXO7UrQqQW1a9uGPDwqG+Vo/rYrS4dePH/ODPU8evlWlw86pUmTJpHlePMp41/IxYuX 6OHDh9StaxfKmTMndenUSRiT68z46gmb9jrwpsDdu/fQzzN/IWzuge6uJcKg7+qUkWYOaUod65Wl iiVzU6kC2eWKe/gj3Jg5sJSvCv94EACTe5v13j0qVzbJ3KKmx0+cpKwsAQVDCx3VWb/8Qj/yplNH RweRZq5b9xu9DrVk0Dn22pyCpcWZuE/QfpgUW0t2dmnkG4H0OhHvB9DoGuvsYgKN7wibZ/v07k1F +bQH6PDiVBdssN25c6dsQLPGkp6Wr7oqBBQCCgGFwIdHwKwEF+fSTpo8hTz79qVvv61Gj/kc3Oks UcWmMFD9+vXkWrNmTcIPNJ43ofhu2cI6bhXpLA8O27dH3pgB6Uqo0aAIXVuPypUIJwKEhITID4PK /36ZSf4sbTzOy6iKIhB49uwZeXuPp/79PWnO7Fl0985dGunlJbhFxGIGhXUMoZPo4zNX9A/B6B49 ekwfxaQ7aeJENKJLLapcOg+rjkTMf7DhLL19SvGHHm7rofNNpleeHz8C2Ei2mPVLoYN64cLFSJJb rfZHjhyR000g+e/Eai5YIZg3f4HovZb5+mt5r7A5FLqtGqP7hqWfuMc3DmkqfnqC/2tWAYgphbGV kexfOVP27M6GpDu4j7jHG8r0klq4oVoDQl1ec11A0M/FSQ6dOnaQM7vhF8Z1g2oDJn0NuC/DKQro 26CyAOa5ZImS1LFDe8n/7NlzItVFOkUKAYWAQkAh8GkgkCBz1myRRyGjeuO4MOik3eQdzNqAYRQl yq0m3TMe4KJEjMYDEmRj4w/RRI93QRiQsUQLvdrocMZJGBj4MXmIjt4kTkNhDbdT6N6xdHLNcMrI KgrmKOjuIyrYYDjZug8im5UelCAOLJnV42VmS7R23TpLUVR4DBHASQMwxqL/FvF9Q03mOa+6RPfu xbCo9xod7cDP1GkP2jFomqqDVhFz/lq4uioEFAIKAYXAx4uAWQmuVmUwRnq9W80/umtsDHr6ATW6 suJrGJhWa3QCsVEvJvTsxStq4DmLXDKnM6mGgGd7JfAeIZ55FjgmJaq4HzMCmNQaf4t4B7CS8CkR 2mFugm7M2GrtMuevhaurQkAhoBBQCHy8CFhkcD/eqquaxTYCNsnSUGqPYeSfgOh6hHZClGJeZyFK zft0EF+RQkAhoBBQCCgEFAIKgY8NAcXgfmxP5APV58mdAEo5vwRpfK2l7UNaPKRLxbvwFSkEFAIK AYWAQkAhoBD4WBCw/fLLLz+Wuqh6fEAE3vU9yJD6qziptTW72N+1DXHSAFWIQkAhoBBQCCgEFAJx hoCtNXqccVYbVdAHQ+Dxo4eU8kunGJcfVxJca6xIqXc5xo9PJVAIKAQUAgoBhcBniYBSUfgsH2vM GyXMbWs/Cnv+MEpiPiGMD9CP4i06uFBroDg4RSFq6cpHIaAQUAgoBBQCCgGFgGkELDK4OFonQ4Yv 2UTn4yg7p3FcUBa2cnb//n16+vSp6RJ0vohvfMICjiBCGcY7tU3F1WUV753ALFOmTGKW1BjTdwUH zO39rcMMyW1sElCGtKkor4sjnblyi/4Jfmw4ZxSR7KuOMOjsGhIpR7xCAN+pMeF9xDF2pUuVEpO5 mzZvNo7yXu5hXhimhK9e9Se929rCjNsSW9+VteWreAoBhYBCQCEQewhEy+C6lSlDgwcNpGR88DkO Tof5yqXLlknpsPzjPW6cHJSOgWDNmjViMctU1TBwwDBEx/btacPGTTT9p58kGqwITZowQawLjRrl Rb/v3i3+zZs1pdq1atH3jRqbPdrHVDnxxa9EiRLyXNKkSUP37t6j4SNG0OkzZ2K1+XhmhXJloWkD Gou53r/OXqNe3svp73PXo0xSYrVgldkng4A/JPe6AABAAElEQVSzszPNn+cTqb432aRu0+Yt6PsG DagjG1aA4YS4YnBbtWzJBmbO0azZs0nvjlRBMzfFihVjYxBVIoVeunSZVqxcGclP3SgEFAIKAYXA p4GAWQYXBh6GsmlODFDTf5ohloDas+nXQ4cO0RW2MNauXTt68PAB9ejVk6pWqUotWjSnNWt/JVg3 Mqb+np5s8reyGBywtU1oCK5axUOYWqSBaVkwuDly5KCWLVrQ0B+HKebWgFSEI0mSJNS/Xz86f/48 zV+wUEz2Dujfn1q3bcsWpKJaicJh9Tj/M6bSqMSJbMmtcE5hblF6sTzZqAzfn758i/59Fb3RiIja KtfnjIBm6Q4TrDv/3JGm/vvyX7nmypWLDh44SIN/+MFqCPCumnuHY+JvdYG6iJA4YxVpxYoIhvY5 3+sJcUCa9TSsohifrWscR5/eVHxMJJHGOB99OuVWCCgEFAIKgZgjYJbBdXFxIVjBgtT2xo0bfPWh Jk0ak7u7uzC4t2/fpo0bN9KtW0G0c9cuYXAzZsxoksH9gu2/9+rTl1o2b86MVkQlU6ZMKcuJYHBL ly4lZkCHDB5E27Zvp4PMSCuKigAmADAv6jlgAPn7+8vzmTZ1Cjk6OkYyyAFLU57MCEMKHxIaQr6+ vjTj55lRMzTjg5VnmOeF6VOoKuCakK/wV/R5I4DvGN+3MWFyBYKpXz3B3G9QUJDBq3u3rlS+XFmZ VC1auIB69OxFC+bPo27dulMgW0QsVrQo9evXlxo1biL9xjcVKtAXPKHGKRh79+2ncd7eBAMlRQoX pq5dupBLDhd5tzHR/uuvv6h48eLUs3t3ypwlM/c/t2jylKnib6jAOzpe8cQN9TOmpk2asOW2pJQm jZ0EHfnrCOXJnZvs7e3p2vXrtHr1GmHMv/vuW3LN5SoGUjABheQajLmTkxNVZnPkGTNkEPPC27Zv k36vbFl3NglcQvo9qFWs37AhiqqWcV3UvUJAIaAQUAhYh4B2nGmU2Pfu3RM/V9dccnXmThqUKZOj XKdNny423nHTrGkT0X27fPmyhBn/G+U1WiTB8NczSKdOnaKaNWtQ61atCO52LIXEIDpnrg/ly5eP rDkayrisz/0+W9as9OrlKwoICJCmXrx4Ua5ZWRdaT+7ublShQnnqx9LdqdOmUcGCBSl9+vT6KNG6 X4aE0pEzAXT26i169PSFXHEPf0WfLwKQvLZv11beF30rwfR279aNPHglxpjAvNWoXl1+rq6utGz5 cjp+4gQdOuxHg4f8QJDMQp3mi8RfSFJ84+nSphV3yhQpCO/04iVLyXvCRHlnvy5dmlKwWtTo0V50 K+gW9eHJMawp/sjSYOSF1Z7jJ45T9x496XbQberSqZNxld7pPnnyZFSFV5W0H9SwQGBuk7Dp8NWs hhUQ4E/ubm50/PgJvl9L+O4w6cycObMw6L+tXy+Mbf78+QhCArS14fff08MHD6SN94LvUV02O21n Z0flypZlhn6f+CNetmzZ3qneKpFCQCGgEFAIREXArAQXDK6v7xbq1bMn1aldmxwdwhnbECMGp22b 1lSpYkUaNGRIlE1oUYuL7LP213V0l8tJaJOQnvAmtXFjRlPP3n1Yt3csOTs5ixSnFecfHHw/csJ4 fJeQVTxCX4caVA60pVtbVinQk3ZkVudOHengwUPkNXoM3b17Vx8lWjcktkdOB1CHkYuoRD5n8jvt T2evBIkkN9qEKvCTRuDChQt0gtWSataoLu04wYwqmK8ab+/9/I5EaR9WCbRNojYs9Yf0EptSnz9/ ToGsk5suXbooafQe5zj+lq1bxasRM4M5cuagJ0+eUFJmKqdMnSabWE+dPi1MId732XNmU0XucypX qkhFihbRZ/Wf3TYJIub8Cd6qJCBTTMAxqUzOKyNgaLHCBLUfHF+Hep5hHfgD+w9QVmbWkyRJLPUA k+7o6EBYwdqyZSs9ZfPGwAOrK69evWJJ+EuRRqdMeYH++PNPWZH5zw1QGSgEFAIKAYWAIBCZKzIC xYc3kEBdAFIKf+7cfxgyONIyOCQTzZo1ozFjxtJhltbElKDLtmfPH5ScBwKfuXNoFS/1BfGSI6RI NWvVppkzZhA2oiGOonAEoC6CATIDL3dCtUOT+ty4fiMSRMeOHacOHTtRWXc3+uabCtSieTO5h/60 JYJeoEO61NSmjpvo4KZOkZSqueUXie68dfso6N4jA4NtKS8V/ukhsGHDRmFqweSCWStQoAClYWt1 i5csMam6MGz4iEgqCuZanCRxuIoDTk7R04vnEbquz54/Cw/idxCk6btCRxUnJGBvwOz//Y/r8Q/t 27+f/Pl9dn4raQ1P+O7/nz17bmC0jXMJfTuxB1P7ms/M03TatfrhxIjy5cvRiRMnTU4kNc0sxAfj D0Ydm+Hy5snDDLMLlSpZQgQKfx89aly0ulcIKAQUAgqBd0AgQlxhlBhSiaU8oFXx8BCJTjnWF8Oy ot+RcEa2+nffUefOnUQPN/BmIOXO7UrQqQW1a9vG5FKmURGGW+jZveBO32fePHrJkg0QdEqTJk0i y/GGiMpBFy9eoocPH8rmspw5c8ryLPQlrzPjqycs43bgTYG7d++R0y0S8tIudHctEZhbV6eMNHNI U+pYryxVLJmbShXILlfcwx/hiKfo80UATO5tnkB5VK4cLXNrDQJgTF8zQ1ed1Rhy8LI91JIsEaTA UMWBPi/e84ED+tOqlStE1SEF9zMHDx2k/QcOyIoCjimMDYKkNRP3O9oPOrbWElQOXrz4l/76+29h gLV02KMAZhY4Qs0DkvCePbqLu17duhTMdffdskWYXuShSCGgEFAIKARiBwGzElwsOU6aPIU8+/al b7+tRo95yXE6S1SxGQKEY79ANWvWlB/c48dPkM4ay4dnz56l7dt3wNtAr8Nec2f/2nAPB3RtPViH r2OnzhQSEiK/nTt30v9+mSnSGejyKYpA4Bkvc3p7j6f+/T1pzuxZdPfOXRrp5SW4RcQi1hE8TvXr 1SUfn7kUxtIvMLpHjx7TRzHpTpo4EY3oUosql87DqiMR8x9sOEtvn1L8oYfbeuh8k+mV5+eBADaS LV68hEqyZBGbyExtOnvN0kiQqRMA8M6F8fcOwne9fMUKatyokfQlwayWFJE2jN0RfQLyQlqcqz1y 1ChRkUJ/8pRVFiZOnizS0c2bfVnvvyk1502rqFfYWyskkKy+ZvUdkN4tHhb+QbKKSX2bNq0NMTGZ XLlqlUiRNUltGEtw37yJsHoCVR4coXj02DH66quvZFL5kBl6xA/jeMARqljVqlblvi6v3KP+UAGD tPr7BvVlsohNemCOFSkEFAIKAYVA7CCQIHPWbNrqmckcsSTo4OBAN3l3samBzFQiTbqnLeOZimPJ D4ONptdnKW58DMfRQtBthF5tdDjjJAwMtmAyoqM3idNQWMPtFLp3LJ1cM5wysoqCOQq6+4gKNhhO tu6DyGalByWIA0tm9XhjjiVau26dpSgq/AMigL4ER2UZn8JgqUpQYcLETk/vmpc+j9h2o9+D+gX0 a019k/gWcTqEnrBpDqTp0uvDlFshoBBQCCgE3h0BsxJcLUswRtjBHBMy1bnHJD3iKuY2esTAtGob yaKLaTygRhcXYc9evKIGnrPIJXM6k2oIeLZXAln6xPHMs8CWSlHh8REB9CWWJlqmcDFmbhHnXfMy lX9s+eHbiO57MxWmGNvYQl/loxBQCCgEIiNgkcGNHF3dfc4I2CRLQ6k9hpE/q9dej9BOiNLk13wi WerMRIivSCGgEFAIKAQUAgoBhcDHhoBicD+2J/KB6vPkTgClnF+CNL42QivSdIW0eEiXinfYK1II KAQUAgoBhYBCQCHwsSBgC+tBihQC7/oeZEj9VZyAZ43Rj3dtQ5w0QBWiEFAIKAQUAgoBhUCcIWBr jR5nnNVGFfTBEHj86CGl/NIpxuXHlQQXB+pbIvUuW0JIhSsEFAIKAYWAQiB+IKBUFOLHc7bYSmFu W/tR2POHUeLyCWF8lFMUb9HBhVoDxcEpClFLVz4KAYWAQkAhoBBQCCgETCNgkcHFsT4ZMnwppjeN dzPjWJwsbOUMB63j3EpLhPjGJyzgWB2UYXxqgqm4lvKPT+HALFOmTATLZsaYvisOYG7vbx1mSG5j k4AypE1FeV0c6cyVW/RP8GM+ciziVDn7qiMMOruGRMqhEDBCACZrS7Glr6fPntKhQ4eNQt/P7TcV KsjZtDhtpHixYvT77t2x9p28nxpHzrVw4UJiue3qVf/IAdHcoc/UU2z1C/o8lVshoBBQCHwqCGh7 hUzWFzbmN67/jZYtXUqbNqynpk2aGOK5sHnM1StX0qKFC2gjh3Xt0tkQZuxAx9uADzTfsW0r9eje 3RAMM7ybNmwg382bCAOSRs2bNaU1q1YK46v5qWsEAiVKlKC1a1YL9ngG+fLmjQiMJReeWaFcWWjV hE606acetHpiZyrimtXk0WGxVKTK5jNF4IcfhpCnZz8qWKBgnLXwxx+HiuEFF5fsNHToD2LiN84K j4WCWrVsSZUrVbY6p2LMxMOUuv7XqGFDq9OriAoBhYBC4HNDwCyDi4PUMTCcYYtkzVu0ZEtEK6k9 m34FYwtq164dPXj4gJqwRSFYPGrQoAFLejOYxKe/pyd17thRwmxtExriVK3iIZKVRYsWE0zLgnLk yEEtW7SgiZMmW21YwpBhPHAkSZKE+vfrRzBlCutvQbeDaED//qQdGG8MAfyNJTvGcUzdJ05kS26F c1LxvE4SXCxPNirD9/BXpBCICQK5cuWiuT4+NGv2bKuS4X3FCoUpMvWew+iJufim8jDnF10+yN/c d2SqTigjujToX/VkLg99nOjcqDtWwebPX2D4bd8R2ZKkHiNzGCMf/EyRPr0Wbi4fLVxdFQIKAYXA h0LALLfiwjbjYXlnrs88WQbHANWkSWNyd3enK1evionMjRs3Emyt79y1i1q0aC721f9h+/XGBBvv vfr0pZZsWpPPQjdQSrYpjyU4pCldupRIWYYMHkTbtm9nW/OHDPGUIwIBTADSpU9HngMGkL+/vzyf aVOnkKOjYySDHMmSJSNPZoQhhQ8JDSFfX1+a8fPMiIwsuLDaCfO8UEmAqgKuCfkKf0UKgYwZM5o0 34sJGEizVgaT23Z2dtS+bTtyyuZEBw8e5MlxW2rVuo3Eg6QyS5bMNMprNE0Y703oExwdHCVs7a+/ 0sJFi8Rdv149NmvbgNKmtadTp0+TN5sFDw4O5ne8r/RJYLT27t1L4ydMFEtikigG/9q2aU21atYi 1P/0mTNc16xUr8H3wqT27tWLKlQoL8YlNvCKk8+8+RJv+bKldDPwJoGBh8ng2XPnSh3ArJpKU7RI ERo1cgQFXLtGefLkoVq169C31apRw4bfU+pUqdi8+TnyGjOGYLb3XejVqxAKZIuTegIj3b1bV3r4 8BFbpMwoag9oX7GiRaW/PX78BG3ZulUmyN999y255nIVRh4T6E2bN4uFNScnJ6rM5tQzsgDj3r1g 7p+3Sb9dtqw7leTVJJSBfnw9Y2Osaqavi3IrBBQCCoG4RMD0VJ1rAFvpIFfXXHJ15k4OlClT+OAz bfp0OsCDFahZ0ybScV6+fFnujf9h8Dp58qR46xmkU6dOUc2aNah1q1YEd7u2bWXgmDPXh+225yNr joYyLutzv8+WNSu9evmKAgICpKkXL16Ua1bWhdaTu7ubDMr9WLo7ddo0KliwIKVPn14fJVr3y5BQ OnImgM5evUWPnr6QK+7hryh+IwCGrj0zqXin9ASmt3u3buThEbG0PmqUFz1//pyWMDM4f8ECSsoT L3s7e0OylClTGL7zNGnSUHo2Pw0mz3fLFmrVqqUwtGAMuzGTBr+Bg4dQWvu01L1rV1HNcXZyptGj x8iKT6VKlYThMmRupQOTwOY8+V6+YgUNHjJEGEH7tGkldfNmzahC+XI0zttbpNDNeMWqXLmywviC ccfkccDAgXT7n9vcf4Uz7ebSgHlOxvrIly5d5vZ0F+axUsWKtHLlKurn2Z8FBBmofr26VtY6arTk yZNRFV4V035YbYM0FqaOwXguWbpM9JBLlihJGzdtpv0HDlCxYkVlUpE5c2bCMXu/rV8vjG3+/PkI Qg7UueH339PDBw9o8ZKldC/4HtVls9loe7myZWnvvn3ij3jZsmWLWinloxBQCCgEPhACZiW4YHB9 fbdQr549qU7t2gapSogRgwPJBzrpQTwwGG9Cs9Smtb+uo7tcTkKbhPSEN6mNGzOaevbuQ97jxhIG Lpi2bMX5Bwfft5RVvAlPyCoeoa9DDRtmNFOftkaqA9qRWZ07dWSp2SHyYibg7t27VuMEie2R0wHU YeQiKpHPmfxO+9PZK0GRNplZnZmK+FkhcOHCBTrBE9aaNapLu06cOCGMUI23935+RwztvXnrlkg+ IeHUJs2GQBOObdt3kJ+fH51lKWOjRg0pe3YX1t3NTzeu36AFCxdKis5dupAtSw0fPXpEy5YvZ0a7 ADNxKSTMzt7ORK7Re2EvgD+vSoHBBc3jZX6sJIEaN2pEXyT+Qjaq4T4BM4wlihenv/76G7eiunX0 2DHCiomX1yiRZppLc+DAQfluZ/z8s8Fk8RSefJYuVZK++aYCpWXm/quv/tu50jYJImQWqKtGhw4f pmssOfb3DxDmFM8QkmIwqUmTJpWwA/sPUFaeQCdJkliSYXOgo6MDYQVuy5atvEnwGQUGBkpbX716 xVL6l1ScsUiZ8gL98eefsqKklaeuCgGFgELgQyNglsFFxXzm+Yi6AKSD/iwxxAaG69evG+qMmX0z lnCMGTOWDh/2M/hb68AO5z17/hAJg8/cObRq9RoK4gEREqKatWrTzBkzCIMP4igKRwCnJmAwhb4z VDs0qQkYAD0dO3acOnTsRGXd3WTwbNG8mdxDvcQSYbnXIV1qalPHTXRwU6dIStXc8otEd966fRR0 75GBwbaUlwr/PBHYsGGjMLVgcsEQFShQgNKwRbvFS5aYVF3QowCGEZJFfP/GuqgvXjyXqM9Y6qsR 3sc3/KfRvzzxTcAMFjZRYYK9dds27p+sP21Ay0e7Pnv+TKTIqEtISAileyu9RThULVDfG8zYgTZv 9qXdu/eIG/8gndZf4TaXBipfYa9fG5jbPLlz04yfeCWMGd/TrHYBwqT+XenZs+eibqBPjzJBaBcI Jytok2L9KQul+ZSL8iypPnHipMmJsIY+nhnajDygU52XVS1y5HChUiVLiEDk76NHpRz1TyGgEFAI fGgEIqb4RjXBrH4pD1ZVPDxEWlOO9a3Q8fsdCWdkq3/3HXXu3Imghxt4M5By53aVpS5kg6U6/TKl UdZRbruyROYFd5o+8+bRSx64QNApTZo0iSzHR0kQjz0uXrzE+nQPqVvXLpQzZ07q0qmTMBTXmfHV EzbtdeBNgRiMf575CyVkvUDo7loiMBOuThlp5pCm1LFeWapYMjeVKpBdrriHP8IRT1H8RgBM7m2e ZHlUrmw1cxvMKzZYzq5Zo4aoIUE9wBIdZ6YLkkUwtK6urjTrl1/oR94AC+kiDICsW/cbvQ61ZFza fCn79+1nBjc1TZk0iQYNHEAdO3YwRIZaxONHj0XCef78Ba5HFkrHktboyNo0Dg4Okg3UAi5fuULP eBXr8eMn0WUdbRgkrZm439R+9vYRqiDRJuRAqBy8ePEv/fX337y5N+LQa+yxADOLZwwVFEjpe/bo Lu56detSMB8RifaC6UUeihQCCgGFwMeCgFkJLnS2Jk2eQp59+9K331aTTn46S1SxmQBUv349udas WZP1aGuKezxv/EBnV5FVFs7y6QvbeblRT6/DXnNnGXkggq6tB29gwIkAkDLgt3PnTsLmFCwbHufl T0URCEANxNt7PPXv70lzZs+iu3fu0kgvL4OERot5/Phx0efz8ZkrUiMwukePHtOCzV6TJk5EI7rU osql87DqSMT8BxvO0tunFH/o4bYeOt9sHiogfiAASSVOUCnJ0rsLFy6aldy+ZgYp7C3ThA1iR44c oZ49e8h7iWVvSAVBr1m6qe8f3rA/0kIFACetYBWiE6vcYLUCagSQuJb5+mvCO47VDEhHNUYXaXGP /CCp1EsrjZ8OVjX68IbMypUqCvO9evVqORUG8aAWgVWSMfyNYZKI7wobYCPqHK6THsplaeWYS4P9 DHrm8TCrYpw7d47Ge48TqS/63DDuI0GI95pVkawl1AdCiTYs0dYIk+F1v/0mt8ADFPaGceEfyODH YcAY6hGYFD9k1Q/kh3h4xlAlq1a1Kk9I8so9pNhQN4Hk+3s+/hGTXag7gDlWpBBQCCgEPhYEEmTO mk1bfTJZJwwikDTc5N25GICsIU26F92gYikfdNZqR655lLDEC0kS9Gqjw1mWRXmwwsQhOnqTOA2F NdxOoXvH0sk1wykjqyiYo6C7j6hgg+Fk6z6IbFZ6UII4sGRWjze2WKK169ZZiqLCPxIE8F7ivYUu p7WEY6pgGEbfL6CvgcoOJIjRfQfow7xGjjRZ1AXeqFmyRHFaumy5qCK05pMdcJpDc75qhH4Q5YPh s5asTYO+Dt+npjpgbf6xHQ9YAl88E1NY4pkZq1Box5t96LrHNhYqP4WAQuDTR8CsBFdrGjpevd6t 5h/d1VTnGF18U2H6QcxUeHz3g4RF20gWHRbGA1J0cRH27MUrauA5i1wypzOphoBneyWQpTcczzwL bKkUFR7fEYjpewm8MME27hfwPlqzuRWqDBs2bTQJ+5UrV0VyiuPLEjODB3Uf7wkTIsVFP2hpkhgp Ad9Ym8a4Tcb5xNU9sIzuuZgKU4xtXD0dVY5CQCEQUwQsSnBjmqGK/2kiAAkutfYjmOvl425ZPcF8 O7DazIcskE0yTjO/hJLgmodKhXxiCEBKa+1K1SfWNFVdhYBCQCEQrxCwKMGNV2jE48Y+uRNAKZlZ 1fhaS8ooWjykS8W75xUpBD4HBBRz+zk8RdUGhYBCQCHAxqpwuLcihcC7vgcZUv+3czutRd4aox/v 2gZr66DiKQQUAgoBhYBCQCHwaSBga40e56fRFFXL/4LA40cPKeWXTjHOIq4kuNChtETqXbaEkApX CCgEFAIKAYVA/EBAqSjEj+dssZXC3L7VwTWODH1c3dGYhmDo4EKtgeLgFAVDocqhEFAIKAQUAgoB hYBCwAICFhlcbLrIkOFLNov5OMpuZRwrk4WtnN3nw76f8iHllgjxjU9YwLE0KMN4J7GpuJbyj0/h wCxTpkwEy2bGmL4rDthgdn/rMENyG95tliFtKsrr4khnrtyif4If827ziFPl7KuOMOjsGhIph0Lg HRCAWdhSbE3r6bOndOjQ4XfIIeZJvqlQQc5/xYkkxYsVo9937472WypcuJCYB7561T/mhelSQN3G mvKQJHt2ZzGigXNq/yuhTzWm2Oo7jPNV9woBhYBC4EMjoO0VMlkPWBnauP43WrZ0KW3asJ6aNmli iOeSPTutXrmSFi1cQBs5rGuXzoYwYwc61gZ8IPiObVupR/fuhmCY4d20YQP5bt5EGGw0at6sKa1Z tVIYX81PXSMQKFGiBK1ds1qwxzPIlzdvRGAsufDMCuXKQqsmdKJNP/Wg1RM7UxHXrCaPDoulIlU2 8RiBH34YQp6e/ahggYJxhsKPPw4V4wYuLtlpKFtGw7m10VErPhe3cqXK0UWxKsza8pAZjOa0atXS qnwtRerbp7eYW4fJde2nWVOzlFaFKwQUAgqBTw0BswwuOnt0+mfYIlnzFi1p+YqV1J6t3ICxBbVr 144ePHxATZo2FWtGDRo0YElvBpPt7+/pSZ07dpQwW9uEhjhVq3iI1ARWimBaFpQjRw5q2aIFTZw0 WR3XY0AqwgEzp/3Z6tL58+fF+lvQ7SAa0L8/aQeuR8QMd8HflOTGOJ7xfeJEtuRWOCcVz+skQcXy ZKMyfA9/RQqB2EYgV65cNNfHh2bNnm1V1ninsYphikx9CzCMYi6+qTys9TNVFtKiLJSpkbl4MfVH fubSaGWZuyZIYEMHDhyk+WwFTvvBUIye9Bih/qb6Dn0cfVrE17dZC0N8U/lo4eqqEFAIKATeBwJm uRUXFxeC5Zq5PvNkGRyDT5Mmjcnd3Z1g2vL27du0ceNGgq3ynbt2UYsWzcU+OUxmGhNspPfq05da Nm/OS4ARobAWhOU+pCldupRIUIYMHkTbtm8Xc5gRMZVLQwATgHTp05HngAHk7+8vz2fa1CnkyDbo 9QY5YN3JkxlhSOFDQkPI19eXZvw8U8vG4hWrmTDPC5UEqCrgmpCv8FekELAGgYwZM5o034tJGkiz Cgaz3HZ2dtS+bTtyyuZEBw8e5Al0W2rVuo3Eg+Q0S5bMNMprNE0Y7y1WxhwdHCVs7a+/0sJFi8Rd v149Nh3bgNKmtSeYBPZm0+HBwcH8HfSVfgtM1t69e2n8hIkxsqAmmRv9a9yoETVs+D2lZnWDs2fP kdeYMWKuFvVLkyYNObLlNJSH+pUvV54yc/1h5nfo0B8NOY32GkXFihalIO5LZ878hfbt3y+WxAYP GiQmiJ88fUJPnjwRtQgkcnR0oIH83WPF5gmrhK1gocPyFSsM+VnjCL4fTIFslVJPzs7ObNa7nlhF BM4B165R8L1gKlSooBir2L5jJ51gk+kQblStWoXs7e3pwYMHYpYd/TcY2G+rVSNXV1dp87nz52jr 1m3irlG9OkvJc7KwIoyOcft37Ihsvl1fD+VWCCgEFAKxiUCEiMEoV9gaB8F+OsjZyUmumTKFDyzT pk+nAzwQgZo1bSKd8OXLl+Xe+B8GppMnT4q3nkE6deoU1axZg1q3akVwt2vbVmzBz5nrw3bP85E1 R0MZl/W532fLmpVevXxFAQEB0tSLbGYUlJV1ofXk7u5GFSqUp34s3Z06bRoVLFiQ0qdPr48Srftl SCgdORNAZ6/eokdPX8gV9/BXpBCwhAAksu2ZScV7pycwvd27dSMPj4il/lH/Z+864LqqvvhRyU0q uEUBMcWdI0eCW7Qhau69FRxpJpqpmXtkrsz+DtxW7oHiaDhzQCnO0lQcKKbgHoli//M9+H48Hr8F EZncw+fHu+/u+32/333nnnPuPWPHiavd5V+voEWLF1MWXpw55XIyFXN0zG6aC8A85mEX1WAog7du JajvwdBWqliR+vXrK3EffTycnJ2cqX/fvsIMuru50/jxE0QrVL9+fXbLyxsj/wZlY3vh+mw6sHLl KhocMIQX9vmYQXxPakT/MG+N/GQU/XL4MHXkRT36Cca2fLlyVP3NN00tw/51EC9Cz5z5nT4ZOZJy 5Mghc2G1alVpwsSJ9L+5c6mwi4spf62ategp//4gLNi+fTv17t3LhIspk40AzMIasuYMnwYNGggT Cm1d5syZZIG8ctVqabMIzzPLlq+gi5cukbdXDam1QoUKPO9cpMVLltLt27cZg/oSj7mmNDPdW3mc WEiDAa9UqaIwvKVKlaSvv/mWtnF/3VyLJLm/NoajkhUCCgGFgEUELEpwweAGB2+lgQMGULOmTVki EcfYPjEwON27dZXJftjw4Yk2oVls9XnC2nXr6Qa3kyF9BpFITJowngZ8MIgmT5rIDLW7uI3swvVH R9+0VVWaSc/AJh5PY5+aNsNorjIdDKYD2pFZ/n69WSJ2kMbxC96ojrQGGiS2oScuUK8xS6lKGXcK ORFOp85FJthkZq28SkvbCJw+fZqO8qLWt/G7AgQkgJDcNn5+HxISagLoytWrIimEVkhbWJsSzQS2 7/iOQkJC6NTJk9SmTWveiOXBzGNZunzpMjNfS6SEf58+5MCM2507d5jB+oYZ7XKULVt2ScvllMtM rfZHwTXwdF40VmdGtG7dOuTMDHfx4vHnQe9gDRQ2hYFhrVqlKn3LdvJgZv+4fp1eZa1VVFScWcCs WV+INBVS0Nq1axEWBeWYAUX5nbt2SYewGU0z/drEGrOYmBiqU7s2FX/tNUkHQ23PEXra6CBVTs+m CqB06ePVaejfHpZuYz65deu2CBywgRWSdSyqQT/8+KMwr2VZ+ACpr0aQukOAcYKfBwiL7ydcj2bf W79eXfqdhR/rN2xMUl+1+tVVIaAQUAgkBwGLDC4qC1wYKOYCkA6G86SFjQl6NXjrVq2oQ4cONGHC RDp0KCTJ7WP38q5du/nFk40CF8ynVavXUCS/7DDR+zZpSnNmzyZIHJBHURwCeOnA/AAvPZh2uLq6 SgJe7no6ciSMevX2o5osXcFLuFPHDnIP8xJbhJdggdw5qFszL7HBzZE9C73lVVYkugvX76PIqDsm BttWXSo97SKwaVOQMLVgciEhLMcSzJzs9W7Z8uVmTRf0SGXMlFHsOTFHGDd/PXr0ULI+eBh3xQ2+ s3/xn0Z/Pn5M6ZgZbNO6NWERDgli+IVwLflvXUuVLEmzv2ANFtuznmBTCNBjbk8jMKEg9Ee/GH0W m9A/YCyPTfIxcwniITDTGWcOJBH8D+PX6BPeE/EamyjBZODc+XNUukzSN5eCEQ0LO6pVabqCwdUW ywjHPovrq9Y+7H57dO9Gt3nBgMXL9es3KG/eOI0QsNcTsEc5MLowcfPk+bxUyVIsCfYiaOe0xbe+ jAorBBQCCoGURsCiiUKWLFloBb+IGvr4iCSmVk1vyu3sTCGhcYzsu++8Q/7+fmKHG3ElgkqW9BTb OHQQE6FeBWmr031Z2vKIX1aBCxfS4+cvB9iUZsmSWdTxtsqnpXSoM6Ee7Ne3D73GUpw+fn7CLFxi xldP2LTXizcF7ty5i75k+74M/IKC7a4twsvK0y0/zRnenno3r0n1qpakauWKyhX3iEe68aVmq16V njYRAJN7jRdiPqwOt5e5jWatDqS9vo0bi6kS7MhtUdjRYwS1Ohha2ILO/eorVvuPELtVSDjXr99A sU8TMpi26rSUrkkmN2zcSGfPnaMHbA979+49S9ktxkO7Ama5j78/mx48YcbxDJ1kKahPg/osHa4m dsN1atcxlYcWDe2BWdfsmE2JdgZg+lGI51btY++GNbSHz++//y4mFc/+esZHQz6QVi+yzS4EEZiP YKc76IMP2EShktjw4nQcbFT+/vvvZcGizM7sfFAqm0JAIfC3EbAowcW5tJ9Pm04BH35Ib7/9Ft3l c3BnsUQV6jRQixbN5err68t2tL4SnsKbOmBvhqNtTvGktoNViXqCVOCp4SUDW1tM6L39/EVN+YQn ekyG2HgSztLGMFZtKopHAOrRyZOn0JAhATR/3ly6wZKUMePGCXbxuUg2tMAuMDBwAUFyBEb38GHb Z2lmyfQKje7ThBpUL8WmI/HrH2w4y+PkKPGww+06cpG+ORVWCJhFABvJli1bTlWrVhEGDmYI5iiW VdrPnnsTwQax0NBQGjDgffnu3ufvvCZJjOXvsn4O+YslhSgLkwCcxgJNhR8zjtBoLFy0WKS/Ndju Fb8DaDzwW9AYXZTFPeqD1BIfa4SNUrFsHnSIzSN+/fVXmjJ5kmyUw1z57LnEU98/5NdLbSGxhURX 6z+0MHPmfClzK06NwcIV9q3YSDpx4gR6EvOEoqKjTKfJYEPZBwMH0uJFCynicoR0FWO3l/5iprRG jTflo5WBhBXYavgiPu4+DgvBlzHCOeeQ/GKxAUks+qqVgWkDFs8t+Z2AUxTwjoCkGJo5mGj07tVT 8mIzHqS6ihQCCgGFQGogkM6liKvVWR3qQUgsrvDOW0ze9pAm3bP1wrBWFyTIeHEoMo8AXiS52fYP drXWcMZJGHgRYeFgjf7KlJOetd5BT/dOpGNrPqX8bKJgiSJv3KHyLT8lB+9hlH6lD6VLBU9mzZs1 s9QdU/za9etNYRX47yOA7y6+25rK354RYUc/nMfo5w7MRzDrechaImu/Fcxz48aMMdsM7E9hy6sn zFH4XWmqfX2avWH0C4sAjVnUyln63ULiivFhLP8GoX3gaW4+0aTBRjwsxf8b/VdtKgQUAmkHAYsS XA0CTGR6u1st3trV2kvEWjl9mv4FpY9X4TgE8EK0x5ZNbxtoD3YPHsVQy4C55OGS26wZAp7tuYgo Qj7LLLA9Lak8CgHrCCT1u4vasAg3zh34zkLzYYtgyrBpc5DZbOfOnksUb2wnUQY7IiwxqpbGDubR yEDa0UyKZbHWtqU0S/Ep1ilVkUJAIaAQMIOATQbXTBkV9ZIikD5rTsrhM4rCec/IpXjrhESjjS1M lINPL0J+RQqBlwUBMMEbN256WYajxqEQUAgoBNI0AorBTdOPP37w965fIMdFVUjja20Zo2j5UO5V 3hmvSCGgEFAIKAQUAgoBhcCLgoBD3rx5X5S+qH78iwgk93uQL0f8+Z//ZPft2X2d3DH8k/1WdSsE FAIKAYWAQkAhkPoIONhjx5n63VItpjYCd+/cJse8bkluNrUkuPYcZq++y0l+fKqAQkAhoBBQCCgE XkoElInCS/lYkz4oYW67htCzh7cTFeYTwvjg90TRYoMLswZKhVMUEreuYhQCCgGFgEJAIaAQUAiY R8Amg4tjd/Lly8suL+8m2omM42IKs5ezmzdvyjmJ5puIj0V+4wkLOPIGbRh3JJvLG1+TCgGzQoUK ETybGTFNLjpgbm9uG2Uqnp69KuVzfpVKexSkk+eu0h/Rd/k4o/hT5ZwajTbZ7JoKqYBC4B9CIDuf q1qNHSDcf3CfDh489LdbgRMCnJ+LM11Ti4oWdReHF2j3RaR/A5O/iwPcFVesUIF+3Lnz71Yl5fHu 0VNKza/6OlVYIaAQ+OcR0PYKmW0Jh3oHbdxAX69YQZs3baT27dqZ8sFjzWr2sb50yWIK4rS+ffxN acYAJoyWLVvQd9u30fv9+5uS4f1m86ZNFLxlM2Fi1ahjh/a0ZtVKYXy1OHWNR6BKlSq0ds1qwR7P oEzppLvsjK/NfAjP7PUShWnVZ360+Yv3afVUf6roWcTs0WHma1CxCoGURWDEiOEUEDCYypcrb7Xi Tp06UjEPD6t5kPjJJyOpePHUsSHXOgMnOF26dNZuX7hrcjCxF+9/arDwoIZ+GxnT5LRXuXJlcUkP t/TaB97xFCkEFAL/PQQsMrhw8DCSXV3CzWLHTp3pm29XUk92/QrGFtSjRw+6dfsWtWvfXjwVtWzZ kiW9+cwiMCQggPx795Y0B4cMpjyNGvrIqhseiOBaFgQvPp07dSJ49rHXsYSpwjQQgLvMIYMH02+/ /Sbe3yKvRdLQIUNIO0zdCIF2MLsx3tZ9plccyKvCa/RGaTfJWrmUK9Xge8QrUgj8GwiUKFGCFgQG 0tx580zNQ5NhZGzatGolbmNNmZ4HUvI3Yq0uY7u4t5TfXF4tztzYtDRzV0ttwCkMPkkhtG1vmaTi bakflvpvKR79Qz/NUVKx0+pAndAmLmIveNpnx3cJPXLq28R3T3+vr8cSfubyW6pHq09dFQIKgaQj YJFb8WAJCLzpwJUj1OB4sbRr11b8o59jF7pwuRkUFERXr0bS9z/8QFjF58+fX9xhGruRMeMrNHDQ h9S5Y0dWp8enOjo6iltHuNCsXr2auNUc/vEw2r5jBx04eDA+owqZEMACAG4xA4YOpfDwcHk+M2dM p4LsX17vkAMekgKYEYYU/snTJxQcHEyzv5xjqsdWAFo6uOeFSQJMFXDNwFfEK1IIpBQCmDPMue/F Qg4EL18guO7OlSsX9ezeg9xc3Wj6jBnitrZOndriVWsTa4ICFy6i2bNmUVY2ZYBLW0j2Zn3xBbVo 3pxa8QLc2dmJ4AZ4MrsUj4yMlHp78ULdpbALxTyOofnszjcoaLPEW/rXtk0bat26FeV49VV2R/4r jZswgW7dukXffL2CrkRcITDhGM+8BQtoL7uwhQnWx8OGEdwF37t/j+7du8fmXncsVS/xYOjQf+PY 4Jr7MrvoHTN2LL391lssZOhOffr2E8cPH3/0EZUvX47HdU3GsXv3HmGqpZ7atQg/XMTNZHw0TC11 okvnTjR2zGh6/OdjWsfeARcvWUKfjBhBz9jV77jxE6QY7mPYCZALm0mZwxtST5x8cuDgAZrErsWN Jmj6tmFe0LdPH/Io5iFz2KwvZtPPP/9MefLkoWE8rnJly7AZ3C1azVqr1WvWSlG8b1q815wyZc5E 587FO+GwhJ2+PVvhGHaRHMGeO/UEgU//fn3ZnOUOe/bML8/wxMmTVLlSJXlvwY3x1m3bBPN33nmb PEt4ysILgojNW7bIM4LmrVrVquTomJ0u8Tt18+Yt8t2pWdObXRpXkXrOnw+njfxdtoaXvl8qrBBQ CFhGwOKyPioqSkp5epaQq7ubm1wLFSooV0yU+w8ckHCH9u3kB3/27Fm5N/4bO268+CZHvJ5BOn78 OPn6NqauXboQwj26dye82OYvCKQyZcrIBGmsK63fuxYpIi/jCxcuCBRnzpyRaxG2hdaTt7eXvCAH s3R3xsyZ/PIrLy8MfR5r4cdPnlLoyQt06vxVunP/kVxxj3hFCoGUQADMYE9m0vDd1BOY3v79+pGP TwNT9Nix48Q97XJmJBctXkwdO3SgOsy4TZo8WRbfHViTVKtWTRo/caL8PuBWdwXnrVSxIvVjxiR4 61b66OPh5OzkTP379jXVG/Mkhj7m+GPHj1Eff3+rUstszDjXZxODlStX0eCAIbygz8fM83siwQPz jYXkUGbIrv1xjeeybtIG5rZq1arSBO7X/+bOpcIu7CHFBlka29x586lu3ToEJrtf3z60hRknMNMj 2XQDdqgBQ4ZSKDOGI4cPp9zOzqwJ60j169ejz6dNp89ZI1avbl1q3PhdG60Tl81NI0Z+IgwlzCmq Vq1CR46GUe1atQh20NmzZycwZWFhYYnwBrMKvNeuW0cjR31CMEPr1bOnxTZR3/jx4+hq5FUaxEIQ LNLBPINRHTVyJDk55aIhQz+iIDZj68vPDc8TjGK3rl1pzbq10k9nHqtGlrDT0u25ZsuWlRqydlH7 QGsJaSyePxjP5Su+ln0PVatUpSBmUn/av58qV67EjKsjufDzxXGFGzZuFMa2LDPnEBa5u7tTQ/4+ hzGO37I21JEx9GnQgHLkyEG1atakvfv20bLlK+T95+rqak83VR6FgELABgIWJbhgcIODt9LAAQOo WdOmVLBAHGP7xMDgdO/WVSb9YTyp2uMOU9+ftevW0w1uJ0P6DCzduE+TJoynAR8MosmTJpK7mzvB XWUXrj86+qa+WJoOZ2ATj6exT00byzQ3mA4G0wHtyCx/v9504MBBkbzcuHHDbuwgsQ09cYF6jVlK Vcq4U8iJcDp1LjLBJjO7K1MZFQJmEDh9+jQdPXaMfJ8zXUePHpUXvMaEhYSEmkpduXpVJLVg6DA3 gcnLmCkjvcE2k6B0zIBUeeMNkVI+ZUYTWiHMG5i7Ll+6LFJI5PNnSaEDS+M0WrV6tWw0w72Xl5cw KZYkrJjfpvNisTozrGA0nXPnTmDDCzMubB6D9mTcuLEikSvHDN4O1kjt3LVLmkR/LZlySQb+Z2ls n039XJjr3r170a+//spjWioSYiwQ0GdIfF95JaOMr2TJkrzxqiJt376dfvjxR6n6CDOkllwAa23j unTZMgoNDZVP/fr1qVy5cvT1198wU91XNHhg9iC93b1njzB8erzbtW0rVRUsWIC1SgWYQXWiZs2a iuRY34YW9vT0pCxZsrBEfqZsVoaEHYsFtFGqVEmCcASY4tOA+/L66+UlDYwwTNtAuMI2G2QJO0iv k0Lp08XLfvDd0ujgoUN08eJF1p5dkH7iOwxtAJhUjANp+3/aT0VYEJGZpcsgMPGvFijA38do2rNn r8QtZBMImCrADO9PlpS/wd9dR8fTgik0c4oUAgqBv4+ARQYXVQcuDBRzAUgHw1liCKN7vRq8Ndu6 dWBJyoQJE+nQoZAk9+bZs2e0a9duWRkHLphPq1avoUh+kUGy49ukKc2ZPVskAMijKA4BmIvgBYqX JF7i2mofL3E9HTkSRr16+1FNby95GXfq2EHuYV5ii2APViB3DurWzEtscHNkz0JveZUVie7C9fso MuqOicG2VZdKVwhYQ2DTpiBhasHkgiEAM5WTPeMtW77crOmCVhfU7GBwL0dESNSWLcG0c+cuLdl0 xXf5L/7T6E9eNKeLidFuWSr8SMIPHj40xVkKlGKmcfYXrLnaf4BOMCMG0jOMD5/XoV2Rnu65eQ/C IMx5tsja2IzmBZqdJzQ6eiwuMgNopPssRLBnX4O+j8+YAYMAAsz97t27qV69ugTmD3OyNTW61pd1 LMS4eOmisSvx9/x8QFqb6B+YdYzL+OyQJz0zhWwoZcqvL4uwNeyQbg89ePBQzA30eWGuB3rCjD0I JytowgX9KQvV+ZSP2qxZOHr0GOkFCjKW+K+h1IPy+MCmvHSpUrz/xINNGKqIYOmXw4elHfVPIaAQ SD4C8UtTQx1Yja7gl0xDHx+RstRilRTUXiGhcYzsu++8Q/7+fmKHG3ElgkqW9BTpB6qBek6vXjRU negW9leP+OUQuHAhPX7+8oFNaZYsmUXdmKhAGo44c+Z3OdYIKkrYGPbx8xNGADZdesKmvV68KRAv /S/nfEUZWOUH211bhInY0y0/zRnenno3r0n1qpakauWKyhX3iEc68ilSCKQEAmByr/FiDSpbe5hb tAmTg7t8dCEkZr/9dpolZoUpN0tUQWByIOmDDWgYMxqQpsEmFNLCuV99RZ/w5tnkUAGWwoGgfj7L dp8PmGG8e/ee1apOsp2mT4P6LPWtJtLPOrXrWM2PREtjA4ONE2YWLlrEm309CGYZGCukiLD1PXH8 BEVHRbP9ZwmRDoYdO0oNGNM3q1cXtf6G9euoaZMmNtuHFBZS4ebvvUfurJ7XmPktrNHDKQMVK1WU PmoV6fGGiQQYPtg0wy41J6vgYTNtiWCjirywb8V89tHQIbRq5bfCAJ5m86sO7dqLuVrLFs3Jzc1N TN2AKcKIw4JIkxqjDUvYWWrfXDz2jBTi94/2gRTaXoL0+dGjP+nnX37hxUT8Ygbf09y5neV7gHq7 devK2oUmIqgAztF81Cb6jsUR6lCkEFAI/H0ELEpwsTqH7VbAhx/S22+/JS+TWSxRhRE8qAVPLiBf X1/5IDyFN2/gR4qjcE7x6Qs7diTcfRr7LJZXrLHIaiLY2uIF0NvPXyY1rJC///572VQSztLGMFZb KopHAJKUybxpY8iQAMKmkxvXb9CYceNMkgUtJ+zjYB8YyBtnIIUBo3v4sO2zN7NkeoVG92lCDaqX YslN/PoHG87yODlKPOxwu45cpDWlrgqBv4UAGKRly5aLrefp02csSm5jWdr17DnTgI1P0F5M4O8+ Fm/4vmsbUzezNLdd2zbC5GFTFFTY0GD4sbkONB1QD4P+YokgfhsgTbKpSRIl0vDvUEiImAZMmTxJ GEvMkc94TtPKxLLpEOgp1wkmDx+YEWBj6MSJE+gJb16Kio4ytWWo3nRraWyzZs6gQ2y2gfGgLtgv /8AbfDHGMZ+OojlzvpQxbeQFAyS6S7httyKuNGb0p4IRNm5tY5MFawRMYAKFjatoY8OGjbTvp5+k CExINNKYXtwb8Yb9c69ePUXTBPX96DFjtWKJrpAqY9McTOHw3rjPm/CmTos7QQfjGst9h9QcjN9y FrhomkJIhnv26ClSfIwV/QZZwi5RwxYi8Cwh3AEDqhGECus3bJBbrR1suMMHZIrjsjClwNFzEC7c Zkk06kM+aM727N0rZjDQVMBcYRebTWCD4oOHD3gTZAsRGgAvMMeKFAIKgb+PQDqXIq46xUniCrF7 FJKLK7yrVHsJJM6VMEaT7mGCTy5hkrGmAktuvS9LOajwILGCGswazlCtYZLVVGuWxv9Xppz0rPUO erp3Ih1b8ynlZxMFSxR54w6Vb/kpOXgPo/QrfShdKngya96smaXumOLX8o5vRWkLAcxPsGUEk6wn 7Sgmbc7CPaSctuYUqJc7tu+gr8oUnsPSX6iOMTfh96SpqE0ZrASMv8PevXqJzbCxCH7LAwcNEsc5 lsZmLKPdY4Muxmv8raMezMkxrB2zZ3yoz9hfxEEYMfWzKbxoDjSdZoB4kDm80R8syPH+GDdmTFxG w3/YB4MhBmETF/IbCX0B1tqz1NKxEQ3t6s1EtLSkYqeVS4krsMZ3DXgb52bM2+g30vSEOFBSvlP6 8iqsEFAIJEbAogRXy4rJUm93q8Vbuxp/1NbyWkqz9SKyVC6txINp1TaSWRuzucnfWv4Hj2KoZcBc 8nDJbdYMAc/2XEQUIZ9lFthaCypNIZByCGB+MjJ0qN3IDOHenjnl/Plw2rQ5yGwHsdENZE89xgqM v0Ns4sJpC0bC70vLa2lsxjLavZHJ1+L1+NgzPpTT+qDVARvRGdM+JxyNhZMDjGQOb41ZvXv3rkVM z52NP+JLy2+s29gXLR3MoCWGMKnYaXWmxFX/DI31Yd42MrfIY2kcxvLqXiGgELAfAZsSXPurUjn/ ywhAgktdQwjuenlfDJsnWB4NtMR8yAKlz8plFlVRElzLUKkUhcBLgwCkj2DQFCkEFAIKgf8CAjYl uP+FQag+/n0E7l2/QI7MrGp8bUJL6cT1a/lQ7lXe9a5IIaAQeLkRUMzty/181egUAi8bAg44lFqR QiC534N8OYqnCnjYEW+LkjsGW/WqdIWAQkAhoBBQCCgE/lsIONhjx/nfGpLqbXIQuHvnNjnmdUty 0dSS4MKOzxap77IthFS6QkAhoBBQCCgE0gYCykQhbTxnm6MU5va5Da4xM+xxdUc6mpJhgwuzBkqF UxRMjaqAQkAhoBBQCCgEFAIKARsI2GRwcQxLvnx52bvM3URHuOA4lMLs5ewmH1KN8wxtEfJjh6me cJwK2jDuTDaXV18urYeBWaFChQiezYyYJhcbbDC7uW2UqXh63m2Wz/lVKu1RkE6eu0p/RN/lTSbx z8+p0WiTza6pkAooBNIgAhUqvC4euHBKwX+FMMfWrVNHzl215J44KWNBfXpKqXlJX6cKKwQUAgoB exHQ9gqZze9VowYFbdxAX69YQZs3baT27dqZ8nmwh5vVK1fS0iWLKYjT+vbxN6UZA5j4WvJB1t9t 30bv9+9vSi7Lfto3b9pEwVs2y0SrJcBbz5pVK01nK2rx6hqHQJUqVWjtmtWCPZ5BmdKlUxwaPLPX SxSmVZ/50eYv3qfVU/2pomcRs0eHpXjjqkKFwH8MgS6dO1OD+g2S1OtOnTpSMQ+PJJVJycw4e3Uk e3XDXP53CR7O4Mpd/4H3OEUKAYWAQuDfQsAig4uDsjH5nWSPZB07daZvvl1JPdk7izYZ9ujRg27d vkXt2F0kvBC1bNlS3A6aG8iQgADy791bkhwcMpiyNGroQz/u3CmeeeBaFgSvP507daKpn8d5szFl VgFBAIenDxk8mN2T/ibe3yKvRdLQIUPk8HBzEOElZpSsmMtnjMv0igN5VXiN3ijtJkmVS7lSDb5H vCKFwIuOgHZwvj39tJbXWpqluu0t06ZVK3FPa6zH3vJaOUv5LcWjXHLTtDaNVxwhBi3cIvYSp312 fJfQkyXy4KMRtFBGMubRp5vLj3RL8fqyKqwQUAikPQQsciseLFmAB5kFgQtFDb6Avde0a9dW/KnD 7eC1a9coKCiIrl6NpO/ZXSSkEfnz56c/2Ke8keDbe+CgD6lzx46sTo9PdXR0FNe/KFO9ejUCUz38 42G0fccOk9vN+NwqBASwAMidJzcFDB1K4eHh8nzgVrMg+zfXO+TImjUrBTAjDCn8k6dPKDg4mGZ/ OcduEKFthHtemCTAVAHXDHw1aCHtrk9lVAgkFwHMK5hvjITFHkjv4KBF8+YEySFO3Thw8ABNYrfW vXr2JJgQ9O3Xn/LkyUPTpn5GX8z+ko6fOEEff/QRlS9fjiIjr9F8dmu9m92nglBPK160Ozs7Sb7J 7IYcblStx5c4lQAAQABJREFU0ZtvVqeGPg2k7X0/7aeJkybRUF7cw1Ur3M6CPhkxgmLYOYULmxdl Zc9dHwwcKEzurC++kDaNfTeabunbhydD9L9cubKETZir16xlQcS3MsZhiC9bhs3HbnH8apPnMcwH ffz9xLuY0SWsOeysta/vC8Ix7No3gj1eGgmav6xZs1DOnLkkKfTnUCpVsiQ5OTnRxUuXaPXqNeLo 4J133ibPEp6yIMcCfvOWLRLv5uZGDdide/58+SgqKprfD9vlvQGXuMA7Z86c/N65Tpv4fWTue2Ls j7pXCCgE0gYC8ctpw3ijoqIkxtOzhFzdeZIBFSpUUK4zZ82i/QcOSLhD+3Zif3b27Fm5N/4bO248 HTt2TKL1DNLx48fJ17cxde3ShRDu0b074aU1f0GguIW052goY1sv+71rkSIU8ziGLly4IEM9c+aM XIuwLbSevL29qE6d2jSYpbszZs7kl3h5efHp81gLP37ylEJPXqBT56/SnfuP5Ip7xCtSCKQWAiVK lKCePbrL91ffJpje/v36kQ8zOBpVrFCB+vXrS2vXraORoz4hmECBuV3BJla5cuViM6o+rO0IoEts t757zx4aOWK4MEcBQ4ZS6M8/08jhwym3szNVqlhR6gneupU++ng4OTs5U/++fbVmLF4Lu7jQ/+bN o3ETJlDVqlVkXjtyNIxq16pF2ZmZzZ49O9Ws6U1hYWE0fuJE+R3DTe2Kr1eQpb5bbIwTRn0yUn7T Hw37WLyL9e7dS5jlUSNHMvOYi4YM/YiC2PyrL/cdY8J8+gmn/c7z9CBe/OrPtU1O+8a+ZcuWlRqy Vk77aNo+MLeZ2b3x6jVreN4KJ28vL8bgqDDdmLewaHdh7HDM34aNG4WxLcvMOYQseB+0Zkn37Vu3 aNnyFRQVHUXvsdtuSG3B3ELAMm/+AmZ8o4RpNvZJ3SsEFAJpFwGLElxMGMHBW2nggAHUrGlTKlgg jrF9YmBwunfrSvXr1aNh/HKw5GrRErxr162nG9xOhvQZ6B5vUps0YTwN+GAQTZ40kdzd3MVdZBeu Pzr6pqUq0lx8BjbxeBr71LSxTHPx6GAwHdCOzPL3600HDhwUCdKNGzfsxgsS29ATF6jXmKVUpYw7 hZwIp1PnIhNsMrO7MpVRIZBMBE6fPk1HeXHs2/hdqeHo0aPC9DR+fh8SEmqquUaNNyVcsGAB1mgU EAlhs2ZNCYtxSFMnMVP58MED6ty1m6josejD5iosBF95JSM5sAapJEsWS5QoTpcvXabFS5ZIff7M GCPNFsHcaseOOLV8hdcrsAS1LDNly6kfM5je3t6inof0Fsw1JKNPWbMC7RXmt3Zt21rsu7l2oV2D +1xIhiGJxQcMOTb7lipVkiBUOHzkiHwa1K9Pr79entKxeUDGTBl5wTuLbjHDiLaxvwJkDTtz7VuK S58uXmaC9jSCAAOL8mysWQJDe+DgQZnDIHnOwszvSXYBvJ+l3kV4AZ85cyYphkUBniM0gFu3bqP7 /OwiIiJYGpxVXDHf5mcHJhgaKiz0f+PviiKFgEJAIaAhYJHBRYbAhYFiLoBVdjhPTthAoFeDY2Xd oUMHmjBhIh06FKLVafcVEoRdu3ZTNp7IAhfMp1Wsqopkf++Q2vg2aUpzZs8WKQzyKIpDAKcmYILP x+o6vKBcXV0lAS9kPR05Eka9evtRTW8vqlu3DnXq2EHuYV5ii2CzWyB3DurWzEtscHNkz0JveZUV ie7C9fsoMuqOicG2VZdKVwj8XQQ2bQoSphZMLpifcuXKUU72ngfm0ZxK+jIzQaB1vIC+eOmihPVm DNjdr9mCgunS8m/ZEiwqc2it/uI/jf58/JjSxcRotxav+lMDYmNjKT2b+GDRv3v3bqpXry67wE4v 8501tb/WF33fLTbICfo2wSziHr9fff8xz6Zniac2Zk1yqzcX09pIavtaOVwfPHhIW7dt00eZwk+f C0bQv1g+c1Drt9aX6tWqUe3atejo0WNkbiGuPQ3kf/jwodS7cuUqWZBAUowFD0wW1q1fb2pTBRQC CoG0jUD8EtuAA1bVK/gF0tDHRyQotVi1BvVdSGgcI/vuO++QP9tywQ434koETzSeBJtaUI/u3RKo Dg1VJ7qF6vART1qBCxfS4+cvEtiUZsmSWdR4iQqk4YgzZ36n27dvs1Soj6gj+/j5yUsealc9YdNe L94UuHPnLvpyzleUgTebwXbXFuHl6OmWn+YMb0+9m9ekelVLUrVyReWKe8QjPTkb12y1rdIVApYQ AJN7jRd0Pg3Y5tICcwszAzBOMOGBCjxnjhzk5uompgHDWY0PKeAf16/Tx8OGiXYI0mEcU3ji+AmK ZttOT15YQ/UdxkwWJImwh/X09KS5X33Fqv0Rlrpmiq9dq7aYIFSrVlXU55BKgrawJgynDFSsVFGk rFoBMN2QrMJ0wFLftbzG62Nmun/77bQsXGHP2rJFc9oavIUK8bx5mqWZHdq1FzMvxLu5uYmJGMb7 lCXIsMGF9NePTRo0Smr7Wjn9FZJWtK99YGNrL8GE5NGjP0USDQZYI5ggQEuF5w6zFDCyA97vLxJ4 SL2z8nsKe0Cw8M+VS7kM13BTV4WAQoA3oL6aI+en5oDApIKXQUc+JaEFT5KFXQrTV3Pn0sGDhyT7 x7wZDMb9kLaC2cUn4nKE2HcFBAymTPzi2LNnb4Kq69evx8zZHToUEi/tLVOmjBwxBnuxqOho3qgQ w/ZYheh9nsT+4I0lCxctpic8KSuKQwBYXLx4kZqxHVqrVi1looea0rgBBqrYd3nTRucunakeS3B3 8eaZVatXJ7C7S4CpQ2b6q0xHShfxE80c2pYaeZWh7FkzywYz5MNGs2xZMpG7S24qmDcnbdlzjBzc alK6k8soXeyfCar6J27wErdFv/LGFEUvJwKYj07xiS6QjMIUwJzkNiLiijCsHXjOeu+9Zmz3mZkX zYvEhtPVtYiYUaGO7rwAh/Zjzdp1fLRXPdFCQdOxZ+8+2r59O13hjVKQdrZt01p+Zw/uP6BpM2bI wtISuj4NfJg5Tk+NfBqyDWpD6evn06bL3IW2uvDvEDTls89MVWTLlp2a8B4EaGO+/uZbs33X9kKY CukCsOWtXbs297+92PBikxlOLghjMw785tvz3gjMryv5KMGgoM3C1GNOf6/Ze4IPmGRsVAMD/ssv h5Pcvq4rsmkNQo4KbAetfbAQAZNf4fXXRSoL6bAzt1e8+Gu0f/8BKV65UmXB+8zvv0tfsdkYC3Es PBAHk4Tr129Q5UqV6E1Oy8GLFpjOYRyOvDCoVavm8w3KGWkbP7tbt27ru6XCCgGFQBpGIJ1LEVdN +2MWBpxsUKBAAZmE8HKxhzTpnqaGsqeMMQ8kyNZUecb8ae0eL2C8nKDOs4YzbPWg1rO1SPgrU056 1noHPd07kY6t+ZTys4mCJYq8cYfKt/yUHLyHUfqVPpQuFTyZNWeG3hatVepJWxCliXRIYbE5yd49 AciLuc34G0E9YLQwD2EOHDdmjFn8fvjxR2ZQv5E0zJf4bYJ51AhM5tTPplAgn0QDJlRPaAOkza3G vk+bOlWYOn0ZhKE1G/XpaInGbxzlNXt8LS/iEafVrcWjfxizpurX4nE1tq9P+6fDeG8Abwg5zM1p GI8eV/QHYwHmxvh/uq+qfoWAQuDFR8CqDS66j0lfb3drz5DMTU72lNPnUcytHo3EYTCt2kayxKnx MUmd+B88iqGWAXPJgyW12kIlvrY4m79zEVGEfJZZYH0JFVYIpC4CYOjsZW7RM719rr6nqEebh2Df umlzkD7ZFD539pwpbGSSYQowY9rndIIlmUGbt5jyaQEj82ns+1aWSuIUAiPBTEkjS79xS/F6O1at Du1qbF+LT40r3huW+oz2zaVhLObiU6O/qg2FgELgxUbApgT3xe6+6l1KIQAJLnUNIbjrZWsEPtnC cs0wkeNDFih9Vi6zqIqS4FqGSqUoBETKCEZMkUJAIaAQUAikHgI2Jbip1xXV0r+JwL3rF8iRmVWN r7VljKLlQzm24/43u67aVgi80Ago5vaFfjyqcwoBhcBLioADDtdWpBBI7vcgX47iqQKePU4/kjuG VBmAakQhoBBQCCgEFAIKgVRDwMEeO85U641q6F9D4O6d2+SY1y3J7aeWBBc2kLZIfZdtIaTSFQIK AYWAQkAhkDYQUCYKaeM52xylMLfPbXCNmWGPqzua0pQMG1yYNVAqnKJgalQFFAIKAYWAQkAhoBBQ CNhAwCaDi2Nj8uXLyy4t7ybamYxd9oXZy9nNmzfFRaSNtuI87PBOWT3hWBi0oe1W1tJQd0qcxqDV 97JdgVmhQoXkgPOUwgkbzG5uG2WCCmff5nN+lUp7FKST567SH9F3E7jqdWo02mSzayqkAgqBFxwB uICtxp6z7j+4bzrX+5/uct06dcRtLuxx32CnDzjLN6V+t+h7hQqvi9vh8+fDU2wolk5RSbEGVEUK AYWAQuAfREDbK2S2Ca8aNSho4wbxV75500Zq366dKR/cI67mA8SXLllMQZzWt4+/Kc0YwETZsmUL +m77Nnq/f39Tcln21b550yYK3rKZ8ALQqCMfXL5m1UphfLU4dY1HoEqVKrR2zWrBHs+gTOnS8Ykp FMIze71EYVr1mR9t/uJ9Wj3Vnyp6FjF7dFgKNamqUQikCgIjRgwnOKMpX658qrSHRj75ZKS4kvXw KEoj2Ssazm5NSerSuTM7rWiQklXSh4M+EPfscNGufXAesCKFgEJAIfBfQMAig4sJGBPxSfb807FT Z/rm25XUk12/grEF9ejRg27dvkXt2GvQsmXLmYFtKR55zA16SEAA+ffuLUkODnEHm+OmUUMfkWQs XbqM4FoWVKxYMercqRNN/XxaogPKJUMa/4cD2ocMHsxuOn+j3n7+FHktkoYOGSIezcxB48Aues1J Yszl1cdlesWBvCq8Rm+UdpPoyqVcqQbfI16RQuC/jAC8Ly5gpwtz582zaxj4/UBjYo7w+zISnA9Y ym/Ma+0e7Zqr31oZpFkqgz5ZSjNXZ7p06cXj2CL2Jql94FhGT/px6sOW8vydeH1ZFVYIKAQUArYQ SDw7Py/h4eFB8ByzIHChqMHxQmjXri15e3vTufPnxVVmUFAQwVc4fIF36tRRfIXDLaWR4KN84KAP qXPHjqyWi091dHQkqNRQBi4awVQPZxfA23fsoAMHD8ZnVCETAlgAwJVlwNChFB4eLs9n5ozpVJB9 wOsdcmTNmpUCmBGGFP7J0yfs3jKYZn85x1SPrQC/W8mBjW+f8YG3MFXANQNfEa9IIfCiIZA/f36z 7nuxIARpzhz+99UcypUrF/Xs3oPcXN3owIEDvFjvTl26dpN8kIQWLuxCY8eNp8+mTCbMUQULFJS0 tevW0ZKlSyXconlzasWLemdnJzp+4gRNnvIZRbOr8YDBH8ocCeZ079697Jp3qnjmkkJJ+IdFPtrI wu6Gf/7lF5owcZKcp7t40ULq168/ezK7Iu5rB3N7bdrGadbefLM6NfRpQDhxZN9P+2nipEniBAHj yO3sTPkYox07vqMZM2fa3ZPom9HSlr4A3gFly5SmDMzcv8r4hIUdZUxzkpubm7gzhgtkuFKGMKRR o4bk5OTELnRvUfDWrTLfA1O4KC5SpAibpv1Jhw4dov38HIBlE98mPJcVYJO3B/JeOcHYKlIIKAQU AslBwKIEV/OB7ulZQup158kLVKhQ3GQ/c9YsmZQQ14F9nt+5c4fOnj2L20SEl8WxY8ckXs8gHT9+ nHx5ouvapQsh3KN7d3EhOX9BoPglt+doqESNveQRrvxSiHkcQxcuXJCRnjlzRq5F2BZaT97eXlSn Tm0azNJdvNDKly9PefLk0WexGn785CmFnrxAp85fpTv3H8kV94hXpBB4kRCARLYnM6n4jusJTG// fv3Ih5k+jcaOHScuapd/vYIWLV5MWXgh6JTLSUtmhja7MIiIyJkzJ+Vhd9jjJkwQ5qxLl87ChFWq WJGZzL4S99HHw8nZyZn69+0rpkLubu40fvwE0UDVr1+fqrI5UVIpX7581LVrF1q2YrkIBhyzO8rY IH1FnzJmyihVgnkH46pRYRcX+h9LpdHfqlWryLyKNJTBXDqRmeTlK1Zo2e26woysIWva8GnQoIFo g9AuFgk7f9xJu3fvoYoVKzCmj5j5XybpsDEGVahQgeepi7R4yVJhfOvXqy/x77HbbfTnWzavOnzk MNWrV1eEI2+++aYw9Jj/w46GsQlJOcmv/ikEFAIKgeQgYFGCCwY3OHgrDRwwgJo1bWqSYjwxMDjd u3Wl+vXq0bDhwxNtQrPVobXr1tMNbidD+gx07/59mjRhPA34YBBNnjSR8KKAC8YuXH909E1bVaWZ 9Axs4vE09qlpg4rmf97BYDqgHZnl79ebpVQHaRy/dI3qRWugQWIbeuIC9RqzlKqUcaeQE+F06lxk gk1m1sqrNIVAaiFw+vRpOsoLaN/G70qTR48elYVy4+f3ISGhpq5cuXpV3I9Dwqgt4k2JZgLbWeIZ EhJCp9jVbps2raloUQ9mvMrS5UuXmXFbIiX8+/QhB9Y+YZH/9TffMDNajrJlyy5puZxymanVetQD ngvxASOYlxelgQsXyga13MxsWyNsXIOEFlTh9QpUjplTjbZu20Z79+3Tbu2+QhKdnk0VQOnSx6vf rly5Ku6HsWEPC2lgBKnyhYsXGftMkv+HH38Upr9smTLk7u4ucWDSXVwK0YYNG0WaCw0eJMBwrQz8 cjFTW7tWLTrP2qkNGzdKGfVPIaAQUAgkBwGLDC4qC1wYKOYCkA6Gs8QQGw30avDWrVpRhw4daMKE iaxmCkly+9hRvGvXbn4ZZKPABfNp1eo1FMkvIEhkfJs0pTmzZxMkCMijKA6By5cvs2/6rGLvDNMO V1dXScALV09HjoRRr95+VNPbi+rWrUOdOnaQe5iX2CK81ArkzkHdmnmJDW6O7FnoLa+yItFduH4f RUbdMTHYtupS6QqB1EBg06YgYWrB5ILBKseMUk72sLds+XKzpgv6PkEiCrtZzEfGzV+PHj2UrA8e xl1xg9/HX/yn0Z+8EE8XE0NtWrcmLPi3bd/O82W4lpzk631m9rp06y4bb6tWrUotWrSgadOniz0s KsucKc7sAifQ6El/KkNsbCylZxMjjSAsSA5B8wYG1EhP2ewJpKEQy9jJPS+MQWBke3TvRreZacUC 5Pr1G5Q3r3kNEk7QwUJ9376fKDLyGhVj8zhvrxr0ZvXqbFb1pdqLIYiqfwoBhUBSEYifAQ0ls2TJ Qiv45dDQx0ekI7Vqeos6LCQ0jpF99513yN/fj2CHG3ElgkqW9BR7NVSDiU2vFjRUnei2L0tAHvEL BJKKx/yiAMGmFPZnUMcrikfgzJnfRd3Xr28feu2116iPn5+8wC8x46snbNrrxZsCd+7cRV/O+Urs 5WC7a4vw8vZ0y09zhren3s1rUr2qJalauaJyxT3ikY58ihQCLxICYHKv8aLPh1Xp9jK30axBgsrd t3FjMYuCzbotCjt6TOxHwdB6enrS3K++ok94Qy5sR+GQZP36DRT71Jaza8utgMEbPWoURURE0PQZ M0SyCTtgSDhjmRF89913hQmEeZeeateqTTV5nq5WrarY4p5kqfPfJZhvFOK5WPvYu0kNmOLz+++/ E+asZ389E7taMLLYt+Hl5UUufMwhToQZOiSAmd+88q4pUby47L/AAj179mxJ2hT3d8eqyisEFAIv FwIWJbhYVX8+bToFfPghvf32W3SXz8GdxRJV7ZzFFi2aCxK+vr5sR+sr4Sm80QIbCeqxycIpPn1B U5dpkMU+i+WVesKJvwyrr3wa1JcTAZ48eSLqw++//56wGSScpY1hrG5UFI8AVHmTJ0+hIfxSmD9v Lt1gyciYceMEt/hcxFKXMN6k8h4FBi6gZyzNAaN7+PARfRaz4SyZXqHRfZpQg+ql2HQkfv2DDWd5 nBwlHna4XUcuMlteRSoE/i0EsJEMJ7rA/vT06TMWJbdgEp8991yCDWKhoaE0YMD78juB9BSSXBCk oPr56i+OR9nDR44QTn6BVsSPTYCgPVm4aLFIf2uwHSl+c9Cu4HenMbooi3vUB0mrXtpqxOvipUuy iB03bqwsJCEBhboe8+M3335Lbdu0kTkZzLkmOY3l8URFR9EItgmGRBq/f/QJZByHRNrx7y9mSmvU eFM+WnZsOhYcnuOnYaW/wrzpPptYQPKLBYM3M7O3b9824bqRj4ZsznMTbJpR7uDBQyzhvU6/8x4O bD7Dmb4whcOclVzJs9ZfdVUIKATSLgLpXIq4alomsyhAZYezD6+wfRUmSntIk+5Zm8Rt1QMJstH5 g60yaSkdKlXY5MGu1hrOOAkDLxG8HK3RX5ly0rPWO+jp3ol0bM2nlJ9NFCxR5I07VL7lp+TgPYzS r/ShdKngyaw52yPaorXr19vKotIVAmYRwO8Ev6OY5xoks5kMkTgWC2YC+nkKcx9MiB6yRsra7xJz 6rgxYww1xt3CdhW2vJb6hDkZbWsnQ+grQRrmhheFMYTEF5iYm3+QBoyM7xWMG/k1plk/PhVWCCgE FAL2ImBRgqtVgIlGb3erxVu7WpvYrZXTp+lfGvp4FY5DAJO/tpHMGiZJfdE9eBRDLQPmkodLbrNm CHi25yKiCPkss8DWeqTSFAIvHgJJ/Z1gBGDMjPMUfh/QstgimDJs2hxkNtu5s+ck3lKfMCebYxhR yFK82YZSIVLbBGuuKUtplsZtrg4VpxBQCCgELCFgk8G1VFDFv3wIpM+ak3L4jKJwNq+9FG+dkGig sYWJcrgQIb8ihYBCIOkIgAneuHFT0guqEgoBhYBCQCFgFwKKwbULppc/073rF8hxURXS+Fpbxiha PpR7lXerK1IIKAQUAgoBhYBCQCHwoiDggN2rihQCyf0e5MtRPFXAs8fpR3LHkCoDUI0oBBQCCgGF gEJAIZBqCDjYY8eZar1RDf1rCNy9c5sc87oluf3UkuDCZtEWqe+yLYRUukJAIaAQUAgoBNIGAspE IW08Z5ujFOa2awg9e3g7UV6cF//8VKAEabDBhVkDpcIpCgkaVjcKAYWAQkAhoBBQCCgErCBgk8HF cTT58uXlQ8bvJtodjONfCrOXs5s3b8q5h1bakSTkN56wgGN20IZxN7K5vLbqT0vpwKwQH5QOz2ZG TJOLA5jbm9tGmYqnT5+O8jm/SqU9CtLJc1fpj+i7fHRP/KlyTo1Gm2x2TYVUQCHwEiCA+cdIyfmd 4UxXOGg4fz5cznfVwsa6tXs4zMmdOw/t3btXi3qhrjjaC05+9u7bm2QX6jAzeqNyZYJL4eRgaQTC +IxSok5jG+peIaAQ+O8ioO0VMjsCHNIdtHEDfb1iBW3etJHat2tnyudRtCitXrmSli5ZTEGc1reP vynNGMBE1LJlC/pu+zZ6v39/UzLc8G7mQ7+Dt2wWt5RaQscO7WnNqpXC+Gpx6hqPALz/rF2zWrDH MyhTunR8YgqF8MxeL1GYVn3mR5u/eJ9WT/Wnip5FzB4dlkJNqmoUAi8EAu7u7rTzxx8SfJYvXZKs vnXp3Jka1G8gZfVhS5W1bNGS+vftaynZFN+pU0fxZmaK+AcD+rbgYXLgwAFUtUrVJLfo4VGURrLH N6M75CRXxAVaNG8uruPhPl77VK9WLTlVqTIKAYXAS4qARQkuJiFMRvBFPuuL2fRWo0bUk12/Hjx4 kM6xh7EePXrQrdu36H2e7Bo1bESYBNesXScefIxYDQkIENeROLvVwSGDKblRQx9ZzcPrD1zLYmVf rFgx6typE438ZFSiA8BNBdNwAO4vhwweTL/99hstWryE4LJ36JAh1LV7d/HnboQGEhec15lU6Uam VxzIq8Jr9EZpN6mycilXqsH3J85epT9jrDuNMPZB3SsE/ksIaB78Ph09mq7/cV26/ufjPxMMAb8r c+e4WopPUNjKzefTpiVa2GOxCecNeocIbVq1Ei+GZ8/FnZmrVWmpfeM8YCkf2gHpnSzo28KZ6C1b tRatndampSu0TKgnqXOPpfr08enZbuo8S8V3795tioa3ND2hfQ0zjAv9MPZFn0df1hwOSP8nx6Rv X4UVAgqBv4+ARQbXg/2hw6MMXDNCDb4gMJDatWtL3t7ewuBeu3aNgoKCxK/49z/8IAxu/vz5zTK4 GTO+QgMHfUidO3bkCSa+046OjjJJgcGtXr2arOyHfzyMtu/YIf7I43OqkIYAFgC58+SmgKFDKTw8 XJ7PzBnTCZIVvUMOeFMKYEYYUvgnT59QcHAwzf5yjlaNzSs0tHDPC5MEmCrgmoGviFekEPgvIoD5 CfOWkbBoBBk9g8Hdb2RkZILsFStUYG1VH/Io5iG/Nyz+f/75Z3rjjTdoAGunXAq78Jx4laZNnyHx CQrbcdO0SRMqXvw1GvXpaPpsymTCHFmwQEEpuXbdOlqydCnNnjWLsmbLRh8MHEivvfYaCyC+EIlm m9atCWYABw4eoEnszhvM3Ddfr6AodulblKXSY8ePZzOzh2b7CYYX9dWpXYvwI9+9ew/N5HamTpmS oK2v/vc/mvu/r2j4iBHUsnkLmVsmTpos/ft01Cjx4DZt+vS4uurUFscTm1hLF7hwUYLRf8Lln7Er 4HHjJ0g87mPYgcWkyXF1Jchs4eb+g/sUwR429QTpO6S78PBYmJ/FhYsXKToqml5/vbz0Zcd339NR dv+eK1cuatz4XSrs4iLP/cCBg7T/wAFhYN9+6y3y9PQUbdWvv/1K27Ztl3Djd9+VZwO3yEfYFfJ3 332nb1qFFQIKgRcMAYsmCpgUQZ6eJeTq7uYm10KF4iZbTH6YEEAd2rcTO7Oz7EvcHI0dN14kwUjT M0jHjx8nX/Y93rVLF0K4B0sh8bKZvyCQypQpI5O1ufrScpxrkSIU8ziGLly4IDCcOXNGrkXYFlpP 3t5eVIdfMINZujtj5kwqX7485cmTR5/Favgx+4IPPXmBTp2/SnfuP5Ir7hGvSCHwX0OgRIkS1LNH d/kd6PsOprd/v37k4xNnRqBPa9CgPoGpwQcMT3ZmKsePH0dXI6/SIF6wY0EJxgzMITRQYUfDqP/7 A+ha5DXq4+enr8rucPbs2SlnzrhzpXHNw+64x02YQMFbt1KXLp3J2dmJxk+cKHMA3PmuYAYWTHe/ fn0JDPDIUZ8QTL969ewpzBoYOexvCBgylEJCQi32szNr4OrXr0efT5tOn38+jerVrSsMoLEtSJOd nJxknj7C461bpy5lY1xy5MhBNXnOAePXsUMHYZTBrEIw0qF9e6pVq2YCDFC2dq1aginGXLOmN4Vx 2aSQC+9BaMhaQO2DsULzmDlzJnk2K1etFga2CM+Zy5avoIv8vLy9akgTJfl5PmPNFuKPHTtO9erV JbiHx7xZmk2+tjLeEArA/KtSpYry/EuVKskulL+lbdu3k5trEfV+SsrDUnkVAv8CAhYluGBwg4O3 0sABA6hZ06YmKcITA4PTvVtXql+vHg0bPjzRJjRb41m7bj3d4HYypM9A9+7fp0kTxtOADwbR5EkT yd3NXfypd+H6o6Nv2qoqzaRnYBOPp7FPTao2TU3qwCYFetKOzPL3602QTkBSAqmGvQSJbeiJC9Rr zFKqUsadQk6E06lzkSLJtbcOlU8h8KIgcPr0aTrK5la+LLUDQYqHxTSkeCAwf0aC9kPb/AqVOBhc MEHTZ8wUFf3xEydEEojf4Lz585hJqsf2tvWoIjNEKUXbd3zHfQuhUydPUps2raloUQ8KDQ1l84gn oi3D3NiubVtprmDBAqzJKSAMaLNmTYW5RMLSpcvo8JEjksdSPytWqEjbmXH74ccfJR8YVbjMhcc1 fVvYFKzRjz/uZBOpvlSjxpuCJSTge/bs4X0bGyljpoyyoQx507F5QBWWcEPTp5FWFhpBmANAerub yyaFxHQjXbyMBvcgSK738CY9PJdbt26L8ARaSDDAEBCAfjl8mKXPT6lUyZKERQ4oG2u93FzdRBhz gvEGQZCAfAUKFJD7+swI/86CnPUbNpI9RxdKIfVPIaAQ+FcQSMgVGboQuDBQzAUgHQznHzqM+fVq 8NZsB9aBV+sTJkykQ4dCDKVt38I+a9eu3SIBCFwwn1atXkORrN6DtMW3SVOaM3u2SCOQR1EcApio YX6QL18+ecG5urpKwuVLlxNAdORIGPXq7SdSlbp161Cnjh3kHvbTtggvigK5c1C3Zl5ig5sjexZ6 y6usSHQXrt9HkVF3TAy2rbpUukLgRUFg06YgYcTA5ELKV65cOcrJXviWLV9u1nQBZgJ6E4XKfAIA SLNPhX0nTkWA1HAeq+6vXfuD9v30E4Xzb8y9aNEUGfajRw+lngcP467WKr0cESHJ61hwcPHSRVPW P5lRBSWln/dZ4KDZr5oqMgTA/O7atUsEHDBnAwMLphiMLhhcrT9btgTTzp27EpRGWdjPQnKanplU zPHaYiJBRis3qH/rtm0JcuRmiTcYXG3hj3Dsszi/jNpzQ4H3mjUTxhaaQwgDYM4A0phkueF/wA7l wOjCXM+T302lSpZiSbCXaBo1QYKWX10VAgqBFweB+OWvoU+QVKzgib+hj49IPmqxCim3szOFhMYx sjgqxt/fT+xwI65EUMmSnmIvhmp6dO9mVuVnaMJ0C5u2RzyBBy5cSI9jYiQeNqVZsmQWVZwpowrQ mTO/EzZTYHMZ7O+gCoVd4SVmfPUElWkv3hSIF8uXc76iDKxGhe2uLcIE7+mWn+YMb0+9m9ekelVL UrVyReWKe8Qj3fgisFWvSlcIvAgIgMm9xjb/Pg0aWGVuzfUVGzthHtSfzQHw2/to6BBatfJbMSnI zraysH39af9+0XLg6MR/ksBEwq4UNrehbAMMRg59Cws7yuPKIZJIY/s5OK+lfoYdO0oNGJM3q1cn nNKyYf06gj0wSN+Wsc7grdskP0ygEAbBnOIuHyt5ke1ff/vtNBUpUpiPPks892xhDSEWDZB4o0xS KXu27FSI3xPaB6YS9lKuXDll3oRU/xXeI6IR+gwTDzxfnBQ06IMP2EShkmBdt04dOnnqFH3//fci dbbHu6JWr7oqBBQCqY+ARQkuVtOwxwr48EN6++23ZMKaxRLV8+fDpZctWjSXq6+vL9vR+kp4ypTP ZKKCqu4UTwQ7WL2mJ6yknz6NW01r8bC19WFbt95+/rIJ4AmrqjCB/O+rOSIJCWNVoqJ4BCD5mMwb SIYMCaD58+bKTuox48YJdvG5SOzZWjR/jwIDF4itGRjdw4fj1JT6fMZwlkyv0Og+TahB9VJsOhK/ /sGGszxOjhIPO9yuIxNuGjHWo+4VAi8iAmDWli1bTlWrViFsIjO36SyWJXYgowQTUs0xY8eK2Rbm uPv37tFUPvUApj+QUsLWtCNvpEWdz557RsGGpFg2KYqrLz4sEWb+IS/KxOVPOF/+xf2KZXU5aDO3 165tG7GzhfkR7HF79eop2h1InUePGauTNMeViYqOttjPJUuWklsRVxoz+lNZDGPjHGxNjW1N5jk+ TkIaN4/D1OMKS1JjWDCBBQBo8ZIlBM3SBJ6XsLCGbe0BPn0HtrAoiw8IZTU6weYeSSHgW7S4O5ts uJuKfcfvjSjeUKaX1CIMcyuQ4MdSdxD2j+BkIL/evUwnQjzjfsG0AYKAlvx+g+kE3nc4SQjMM45G 680Yo85Tp34Vqa5Upv4pBBQCLyQC6VyKuMb9+i10D2ot2B9d4d2qxgnfQhGTdE+byCzlsxYPCXJS VVbW6nvZ0jD5QiqCl6s1nKE6xISMhYM1+itTTnrWegc93TuRjq35lPKziYIlirxxh8q3/JQcvIdR +pU+lC4VPJk1Z5WiLVq7fr2tLCpdIZAiCIDhwWJTT5grcYwUmGhrNG3qVNmUZcwDTRjMIuwltAXS 5mXcw67Y2C9jfdb6iTRoZ8Cw6snYlj7NUthaOygD4cbUz6bwIjyQVq9Za6mafyweY8LHOFY0iI2D IM3UQW74n6V4LV1dFQIKgRcHAYsSXK2LYIz0drdavLWrNYbLWjl9mmJu9WgkDoNptcf+CzZxSaEH j2KoZcBc8nDJbVqo6Mvj2Z6LiCLks8wC60uosELg5UPAHBOJudLWQhJIbGXJaNasWRKBYjzHNVEG Q4TG2GrRuDfXLy1du1rrp6X+G9vS6rJ2tdZO6VKlaMa0zwmbuYI2b7FWzT+WhjFZGpeRsdU6YSle S1dXhYBC4MVBwCaD++J0VfXkn0YgfdaclMNnFIWnI7oUb52QqNnYwkQ5eE8G8itSCCgEkoaAOj+V xJbVp9FbCcwJkoaiyq0QUAgoBKwjoBhc6/ikmdR71y+Q46IqpPG1CS2lE8Og5UO5V3knuiKFgEJA IZAUBKCFUqQQUAgoBP4pBBzy5s37T9Wt6v0PIZDc70G+HMVTZZT27FhO7hhSZQCqEYWAQkAhoBBQ CCgEUg0BB3vsOFOtN6qhfw2Bu3duk2NetyS3n1oSXHsOVVff5SQ/PlVAIaAQUAgoBBQCLyUCykTh pXysSR+UMLddQ+jZw9uJCvMJYXxYeqJoscGFWQOlwikKiVtXMQoBhYBCQCGgEFAIKATMI2CTwcUx Kvny5WWPPXcT7dDFcTKF2csZDjXHGZG2CPmNJyzA9SPaMJ6aYC6vrfrTUjowK8S+2OHZzIhpcnEA c3tz2yhT8fTp01E+51eptEdBOnnuKv0Rfdd0piQyOTUabbLZNRVSAYVAGkEAc5SR8FvEEX7Vq1UT 17Cbt6TOCQEVKrwuXtXO87mt+rCxf5bujWNJqTnFUnsqXiGgEFAI/NMIWGVw4Yv942EfUVY+8xGH ZMNV4Yqvv5Y+wcvL5EmT5FBsTIZr1qwRj1nmOozJE44hevfsSZuCNtOsL76QbPAY8/lnn4knmbFj x9GPO3dKfMcO7cWLTqs2bS0e42KunbQSB09DeC45c+akqBtR9Ono0XLcTkqOH8/s9RKFaebQtuKu 9+dTF2ng5G/ol18vpRhDnZL9VXUpBFITAXd3d1q0MDBBk3B40L5jJ2rVsiX1ZgcCcBCQWgxul86d xfnA3HnzSB9O0EELN/Am9lajhglSf//9LH27cmWCOHWjEFAIKAT+SwhYZHBxSPfIkSNkkp71xWzx +tKTXb8eZI8059jXeo8ePejW7Vv0/sAB1KhhI+rUqSOtWbuO/mA3mEYaEhDALn8byJEwDg5xh5Mj T6OGPsLUogxcy4LBLVasGHXu1IlGfjJKMbdGIPkeB7kPGTxYvAYtWrxEXPYOHTKEunbvnuhQchTH weQ46zGpEplMrziQV4XXhLlFPZVLuVINvj9x9ir9GWPdaQTyK1IIvMwIaF7+sLi8/sd1Geqfj+Mc PJQoUYIO7D9AH48YYTcE+J2aO2M1qfF2N6jLCIkzNGjffhvP0D7kez0hD0g7+QAaJOMZssY8+vLm 8mMRjTLGevTlVFghoBBQCCQXAYsMroeHB8ELFqS2UIMvYG8z7dq1JW9vb2Fw4Y4yKCiIrl6NpO9/ +EEY3Pz585tlcDOyr++Bgz6kzuzGkoW9JnJk/+1QqYHBrV69GoGpHv7xMNq+Y4e4djRlVAETAlgA wJVkwNChFB4eLs9n5ozpVJB9susdcmTNmpUCmBGGFP7J0ycUHBxMs7+cY6rHVgDaV7jnhZtLmCrg moGviFekEHhZEcAcZs59LxaWIKOXMrj7hWtcjfr360u1a9WUBeXSJYvp/QEDafGihdSvX3+KYG+Q lStVosGDP6Q2bdvJnFm3Th3KyPMeTgDZu+8nmjR5MsE5S8UKFahvnz7kUcxDftcQMsB97htvvEED +vcnl8IuPPdepWnTZ0i81n5yrzG8aEX/jNS+XTtxSpEzZy5JCv05lEqVLElOTk508dIlWr16jTDm 77zzNnmW8BTnMHDZC8k1GHY3NzdqwK7Y8+fLJ250t+/YLnN+zZre7Pq2isz5eAds3LQpkZmasS/q XiGgEFAIJAUB7TjTRGWioqIkztOzhFzdeaICFSpUUK4zZ80Sf9646dC+ndh/nT17VtKM/8aOGy+S YMTrGaTjx4+Tr29j6tqlCyHcg6WQeJHMXxAobhztORrK2NbLfu/K/txjHseY/KCfOXNGhlyEbaH1 5O3tRXXq1KbBLN2dMXMmlS9fnvLkyaPPYjX8+MlTCj15gU6dv0p37j+SK+4Rr0gh8DIiAMlrzx7d 5beiHx+Y3v79+pEPa6GMBOat8bvvysfT05O+/uYbCjt6lA4eCqGPh48QDQpMiTJmyihFMb/ldnaW sGP27ITf87LlK2jyZ1Pl9/pm9eqUnU3Cxo8fR1cjr9IgFgxg4foJS4MhzYWmK+xoGPV/fwBdi7xG ffz8jF1K1n22bFmpIWvUtA9M0EDwuJaZ3aavZhO0CxfCydvLi8LCjoprXcw5WHC7uLgIg75h40Zh bMuWLUMQkGCsrVu1otu3bskYo6Kj6D12uZ0rVy6qVbMmM/T7JB75XF1dk9VvVUghoBBQCFhCwKIE FwxucPBWGjhgADVr2pQKFohjbJ8YGJzu3bpS/Xr1aNjw4Yk2oVlqVItfu2493eB2MqTPQPd4k9qk CeNpwAeD2LZ3Irm7uYskowvXHx19UyuS5q8Z2MTjaexTk8mBptZ0YJMCPWlHZvn79aYDBw7SuPET 6MaNG/osVsOQ2IaeuEC9xiylKmXcKeREOJ06FymSXKsFVaJC4D+KwOnTp+ko2836Nn5XRnCUGVUw X42f34eEhCYaGTQk2gbZ9KzxgPQSG3IfPnxIEWyTmzt37kRl9BG/cv6t27ZJVBtmBou9Vozu3btH WZipnD5jpmzgPX7ihDCF+K3Pmz+P6vF826B+PapYqaK+qr8dTp8uXt6R7rlJAiqF8OHChQuUjbVC YGgPsJkaTJ5wdB/6eZLd7e7/aT8VYWY9c+ZM0g8w6QULFiBo77Zu3Ub3HzwQPKBZiomJYUn4Y5FG Ozqept179og26m8PQFWgEFAIKAR0CCTkinQJCAbyJgqYC2ClHs4T3IjhHydQg2N13qFDB5owYSId YolFUgn2XLt27aZsPBkGLphPq1jdFclqN0hSfJs0pTmzZxM2oiGPojgEYC6Cl0Q+VvnBtEOTfFy+ dDkBREeOhFGv3n5U09uL6tatQ506dpB72E/bItjGFcidg7o18xIb3BzZs9BbXmVFortw/T6KjLpj YrBt1aXSFQL/JQQ2bQoSphZMLpi1cuXKUU721Lds+XKzpgujPh2dwETB0lgzZ4ozccCpMXp69DDe 1vXBwwdxSfz7A2n2rrBRvXPnjqjz5/3vf9yPP2jfTz9ROP+W3Z9LWuMKJv//gwcPTYy2sZanz4Ua YGpj+bxAXEFa/3BiRO3atejo0WNmF9GaVRryg/EHo47NcKVLlWKG2YOqVa0iwpRfDh82Nq3uFQIK AYVAshGIX7IbqsDKfAVP6g19fESqUYttpqBaCwmNY2Tffecd8vf3EzvciCsRVLKkJ8GmFtSjezez 6jxDE6Zb2Jo94okvcOFCesyrexBsSrNkySzqeFNGFaAzZ36n27dvy+ay1157TVSUsBm8xIyvnqDK 7MWbAnfu3CWnW2Rg9SZsd20RmFtPt/w0Z3h76t28JtWrWpKqlSsqV9wjHunIp0gh8DIiACb3Gi8e fRo0sMrc2jN2MKaxzNC9y2YMxVhtD5MsWwQpMMyQYM+L3/hHQ4fQqpXfyqkp2XmOPXDwAP20f79o U3BEY0oQJK2FeM7VPrCxtZdgcvDo0Z/08y+/CAOslcP+DDCzwBFmHpCED3i/v4Sbv/ceRXPfg7du FaYXdShSCCgEFAIpiYBFCS7Ubp9Pm04BH35Ib7/9Ft1ltdsslqhiQwAIx36BfH195YPwlCmfyYQF FdqpU6dox47vEG2i2GexPOHFmu4RKFOmDE+A9am3nz89efJEPt9//z3976s5IqGAPZuieAQesKpv 8uQpNGRIAM2fN5duXL9BY8aNE9zicxHbyYVRi+bvUWDgAnrGEiAwuocPH9FnMRvOkukVGt2nCTWo XopNR+LXP9hwlsfJUeJhh9t15CKz5VWkQuC/jgA2ki1btpyqsmQRm8jMbTqLZWkkyNwJAPi9PeO5 DoQ57Ztvv6W2bdrIPBrNJlnxZZ9xOH4+RF0oizPFx4wdK+ZhmEvvs8nC1GnTRDq6ZUsw73loTx15 wy769ey5BxZIVmPZdAmkD0uEjX+QrEKg0a1bV1NOLKRXrlolUlpNUvuMJbd//RXv8QVmTDg+8vCR I1S8eHFZUN9mhh75n3E+4AgztLcaNeJ5vrTco/8wf4O0ulXLFrJQxiY9MMeKFAIKAYVASiKQzqWI q6ZBMlsvTjYoUKAAXeEdtuYmc3OFNOmepsoyl8dWHCZczbbNVt60mI7jdWDfB7taazjjJAy8cPCi tUZ/ZcpJz1rvoKd7J9KxNZ9SfjZRsESRN+5Q+ZafkoP3MEq/0ofSpYIns+a8OcUWrV2/3lYWla4Q +FcQwDyKo7KMpzDY6gzMt7Co1VNy69LXkdJhzPkwv4B9rbn5CPMQTofQEzbNgbR9BPo0FVYIKAQU An8XAYsSXK1iMEb646e0eGtXcxOctfzm0hRzaw6V+DgwrdpGsvjYxCHjSyVxjoQxDx7FUMuAueTh ktusGQKe7bkIlsBwPssscMI61Z1CIK0jgHnU1iLTHEZG5hZ5kluXufpTKg7zgrW5xlyaYmxTCn1V j0JAIWAOAZsMrrlCKu7lRCB91pyUw2cUhbN57aV464REg43lE8lyuBAhvyKFgEJAIaAQUAgoBBQC LxoCisF90Z7Iv9Sfe9cvkOOiKqTxtfGWgeY7pOVDuVd5l7kihYBCQCGgEFAIKAQUAi8KAg7woKNI IZDc70G+HMVTBTx7nH4kdwypMgDViEJAIaAQUAgoBBQCqYaAgz12nKnWG9XQv4bA3Tu3yTGvW5Lb Ty0JLg6Vt0Xqu2wLIZWuEFAIKAQUAgqBtIGAMlFIG8/Z5iiFue0aQs8e3k6Ul08I4+OMEkWLDS7M GigVTlFI3LqKUQgoBBQCCgGFgEJAIWAeAZsMLo62yZcvr7ifNO7oxdEwhdnLGQ4bx9mNtgj5jScs 4GgZtGE8NcFcXlv1p6V0YFaoUCGCZzMjpsnFAcztzW2jTMXTp09H+ZxfpdIeBenkuav0R/RdPnIs /lQ5p0ajTTa7pkIqoBBQCJgQgMvaauzp6/6D+3Tw4CFT/D8ZqFunjpxNi5NW3qhcmX7cuTPF5oh/ st9a3RUqvC6e286fD9eibF7xvtBTSs2J+jpVWCGgEPhvIaDtFTLba/hZD9q4gb5esYI2b9pI7du1 M+XzYBeRq1eupKVLFlMQp/Xt429KMwYw+bTkQ72/276N3u/f35QMN7ybN22i4C2bCZOyRh07tKc1 q1YK46vFqWs8AlWqVKG1a1YL9ngGZUqXjk9MoRCe2eslCtOqz/xo8xfv0+qp/lTRs4jZo8NSqElV jULgpUNgxIjhFBAwmMqXK59qY/vkk5HieMHDoyiNHDlCXPymWuMp0FCXzp2pQf0GdtdUmZl4uJHX f9q0bm13eZVRIaAQeDkRsMjg4jBxTI4n2SNZx06d2RvPSurJrl/B2IJ69OhBt27fonbsVQdef1q2 bMmS3nxmURoSEED+vXtLmoNDBlOeRg19RLqwdOkygmtZULFixahzp0409fNpdjuWMFWYBgKZM2em IYMHE9x5wvtb5LVIGjpkCGmHphshQLxRumHMY+4+0ysO5FXhNXqjtJskVy7lSjX4HvGKFAIKAfsQ KFGiBC0IDKS58+bZVQC/VWhnzJG53zgcvljKb64OS3HW6kH9luYQc31CG9bK4N2iJ0t16PNYC6Pv 0AAuWrTY9NnxXUIvmnqMLGGMevAxR/ryWrqlerR0dVUIKAT+XQQscise7Dcd3mcWBC4UNTgm6Xbt 2pK3tzedO39e3EQGBQUR/I1//8MP1KlTR/Ex/gf7cDcS/JwPHPQhdWb3knweuIkc2a861FAoU716 NZE0DP94GG3fsYP9rR805VOBeASwAMidJzcFDB1K4eHh8nxmzphOBdmPvN4hR9asWSmAGWFI4Z88 fULBwcE0+8s58RXZCEHjB/e8MEmAqQKuGfiKeEUKgbSMQP78+c2678XiE6R5K4O78Vy5clHP7j3I zdWNDhw4wIKB7tSlazfJB0ll4cIuNHbcePpsymTCfFiwQEFJW7tuHS1ZulTCLZo3Z7e2LcnZ2YmO nzhBk9klenR0NP++P5T5GIzW3r17acpnU8WTmBRKwr/u3bpSE98mhP6fOHmS+1qEmrdsJUzqBwMH Up06tcW5xCbWtgUuXCT5vvl6BV2JuEJg4OEyeN6CBdIHMKvmylSqWJHGjhlNFy5epFKlSlGTps3o 7bfeotatW1GOV19l1+6/0rgJEwhue5NDMTFPKIK9beoJjHT/fn3p9u077I0zv5g9YHyVK1WSd01Y 2FHaum2bCAfeeedt8izhKYw8hAebt2wRD2tubm7UgF3J52fhTVRUNL+btss7q2ZNb6rKmjS0gXfY RsbGaGan74sKKwQUAqmPgPnlKvcD/sJBnp4l5OrOP3RQoUJxE/DMWbNoP0/YoA7t28nkcfbsWbk3 /sMEfuzYMYnWM0jHjx8nX9/G1LVLF0K4R/fuMnnOXxDIvsvLkD1HQxnbetnvXYsUoZjHMXThwgUZ 6pkzZ+RahG2h9eTt7SUvpsEs3Z0xcyaVL1+e8uTJo89iNfz4yVMKPXmBTp2/SnfuP5Ir7hGvSCGQ VhEAQ9eTmVT8nvQEprd/v37k4xOvWh87dhw9fPiQljMzuGjxYsrCi06nXE6mYo6O2U1zXM6cOSkP u94Gkxe8dSt16dJZGFowhv2YSUPcRx8PJ2cnZ+rft6+YJbm7udP48RNE21W/fn1huEyV2xnAArgj Cx6++fZb+nj4cGEEnZydpXTHDh2oTu1aNGnyZJFCd2BtXa1aNYXxBeOOhfPQjz6ia39c47k7jmm3 VAbMc1a2R/7997M8nv7CPNavV49WrlxFgwOGsHAkH7Vo/p6dvU6cLVu2rNSQNYLaB5pGSGPh6hiM 5/IVX4sdctUqVSlo8xb6af9+qly5kiwqXFxcCEcMbti4URjbsmXLEAQ86HPrVq3o9q1btGz5CoqK jqL32GU4xl6rZk3au2+fxCOfq6tr4k6pGIWAQuBfRcCiBBcMbnDwVho4YAA1a9rUJFl4YmBwsPrH RDWMJ0fjJjRbI1u7bj3d4HYypM9A93iT2qQJ42nAB4No8qSJhMkb7h27cP3R0TdtVZVm0jOwicfT 2KemTSOau0sHg+mAdmSWv19vlhwdpHH8Irxx44bdOEFiG3riAvUas5SqlHGnkBPhdOpcZIJNZnZX pjIqBF4SBE6fPk1HebHu2/hdGdHRo0eFEWr8/D4kJNQ00itXr4rkExJOTWBgSjQT2L7jOwoJCaFT LGVs06Y1FS3qwba7Zenypcu0eMkSKeHfpw85sNTwzp079PU33zCjXY6ZuOySlsspl5larUdhH0Q4 a+TA4IIWspofWjRQ2zZtKGOmjLJRDffpmGGs8sYb9PPPv+BWzNYOHzlC0BaNGzdWpJmWyuzff0Dm rNlffmlyWTydF97Vq1WlunXrkDMz98WL/70ztdOni5fXoK8aHTx0iC6y5Dg8/IIwp3iGkBSDSc2S JYuk7f9pPxVh4UHmzJmkGDYHFixYgKB93Lp1G28SfEAREREy1piYGJbSP6Y3GAtHx9O0e88e0aZp 7amrQkAh8GIgYJHBRfcCFwaKuQCkg+EsMYQRv14NjtVtB17lT5gwkQ4dCknyiLDLd9eu3bLKDlww n1atXkOR/FKAlMS3SVOaM3s2YQJGHkVxCODUBLxQYO8M0w5NcoCXoJ6OHCI4ReAAAEAASURBVAmj Xr39qKa3l7xAOnXsIPcwL7FFUHkWyJ2DujXzEhvcHNmz0FteZUWiu3D9PoqMumNisG3VpdIVAi8b Aps2BQlTCyYXDFG5cuUoJ3vzW7Z8uVnTBf34wTBCsoi5z2iL+ujRQ8n6gKW+GuG3+Bf/afQnL/rT MYOFTVQQLmzbvp3nZvtPG9Dq0a4PHj4QKTL68uTJE8r9XHqLdJhaoL+XmbEDbdkSTDt37pIw/kE6 rb8ibKkMzN2excaamNtSJUvS7C9YC8iM7wk2uwBBoJFcevDgoZgb6MujTRDGBcLJCppAQH/KQnU+ 5aI2S6qPHj1mVgigoY9nhjGjDthUl2ZTi2LFPKha1SoiDPrl8GFpR/1TCCgEXgwE4pe5hv5gZbuC J+yGPj4isajFNkeY/EJC4xjZd995h/z9/Qh2uBH/Z+9K4Gu6mvggLVqKoHZJhIql1E4r9gRtBSX2 fY1dkai9iL21VfWjYlf7GmKpltaetMReiqCIltROhcQ3/4n73s3N20KaImfye7n3nv3+73tz58zM OXP5EhUp4iHmHjQDc5XeVGdoOsFlD9ZKPGDGETR3Lj1k5g2CT2n69OnEHJ+gQgpOOH36d/Ypu0k9 e3SnQoUKUXc/P3mpXmTBV09YtNeFFwXihfT1zG8oDfvGwXfXHuGF6uGak2YOaUldG1WhmhWKUMUS BeSIa6QjH+UUKQRSKgIQcq/yBNPby8th4TaKrVUwZ/vUqycuWHAPsEfhLHRBswiB1sPDg2Z98w0N 58W/0C4i+Mnateso5rG9wNrWe9mzew8LuJloypdf0qDPBlLXrl1MheEWcfvWbdFw/vbbKR5HPsrG mlZb5GidXLlySTNwCzhz9izdYwve7dt3bDVtMw+a1jz8ztA+zs5mVxCbFTkTLgcPHvxDv/z6Ky9s Nm/4jfUlEGbxjOGCAi19n9695LzRJ59QFG+PifuF0Is2FCkEFAIvFgJWNbjwW/py8hTy79+fPvyw rjC66axRhUM9qHHjRnL08fFhP1ofOZ/Iix/wg6/JLgsnePeFbWxy01NMbAwzjPjMGL623uzEjx0B MNPGZ/v27YQFGjCdhbMJUJEZAbiBTJgwkQIC/Onb2bPo2l/XaFRgoElLoZUMDw8Xn7agoDmiOYGg e/DgIS3b6jF92tdoZPf65FWpKLuOmOc/WHCW3TmjpMMPt/2weVbbUBkKgVcdAWgqsXtMBdbenTp1 2qrmNoYFpNinQhMWiIWFhVGfPr3lNwmzN7SCoBjWbup54xNOR124AGCXGVhg/NjdCJYauBFA4/rB ++8Tft+w5EA7qgm6qItrtAdNpV5baXwusOj048WoXrVqivC9cuVK2REH5eAWAQvRWOYvmCCDp2Dx r3nMcf74j7kvrR9rdbCWQy88HmBXjJMnT9LECeNF64v3TSy/H0AoF8NuWI4SxgOFTAfWaGsERcDa devkEniAYp8wLvwBmdI4DxjDPQIKgZvs+oH2UA7PGG50devU4QlJMbmGFhvuJtB8N+GtLzHRh7sD hGNFCgGFwIuFQKq8+V00C4zFkYGRYrZ9mVeoggk7Qpp2zxZjtdcOGJZalWodJZg5oU2BX60tnMU0 yAwbEwdb9CRtZoptuo0e7xpHR1Z9TjnZRcEaRV67RSV9Pycnz0GUerk3pUqGSGaNeHGHPVq9dq29 IipfIfCfI4DfJH6z8OV0lLBNFYLi6Hki+CzclaBBtMUDwL8DR42y2NUpXqRaoXw5WvLdUnFFaM87 O2A3h9Z81AjvAPQPgc9RcrQO+Dx4k+Y64Gj7SV0OWAJfPBNLWOKZGV0otO3N/uuxJzUWqj2FwKuC gFUNrnaDYD56v1st3dbREoOwVd5Snp6RW8pP6WnQMmgLyWxhYWTKtsoi796DaPL1n0XuebNZdEPA sz17iTUYXM66CGyvF5WvEEi5CCT2NwmkoFww8kT8Fh1Z2AtXhg0bgy0CfvbsOdGcYvuytCzgwdVp wqRJ8criHWBvghyvAl84Wsd4T8Z2kusaWNp6LpbylGCbXE9H9aMQeDYE7Gpwn61ZVetlQwAaXGof SgjXy9vdsnuC9TuAxZU3WaDUb3CdeeWVBtc6VCpHIfDSIAAtraNWupfmptRAFQIKgRSLgF0NbopF JoXd+J2/zlNGFlY1udaeM4pWDvXe4hXkihQCCoGXGwEl3L7cz0+NXiGgEIiPgBM2uFakEHjW70GO TM+3d6WjyDsS9ONZ78HRMahyCgGFgEJAIaAQUAi8HAg4OeLH+XLcihrl8yBw+9ZNyvi2a6KbSC4N LvwI7ZH6LttDSOUrBBQCCgGFgEIgZSCgXBRSxnO2e5ci3D71wTUWhj+ubntIUzZ8cOHWQMmwi4Kp U3WiEFAIKAQUAgoBhYBCwA4CdgVcLDzIkeNtDg15O8GKXWytko+jnP3NG17f5Y267RHKG3dYwNYs 6MO4mtZSWXvtp6R8YJYnTx5CZDMjps+KAxaY/b1lhKl6al5tliPrW1TMPTcdP3uF/oy6zSuuzbvK OdcZafLZNVVSJwoBhUCiEEBY2IocTevuvbu0f/+BRNV91sI1qleX/V+xG0u5smXpxx07koyPYEyl Sr0n4YTPnYt41iEmqId3gpGSivcZ21XXCgGFwMuPgLZWyOKdINJO8Pp19N2SJbRxw3pq2aKFqZx7 gQK0cvlyWrhgPgVzXo/u3Ux5xhMwJl/eFPv7rVuod69epmyE4d24YQOFbNpIYLgatW7VklatWC6C r5amjmYEypcvT6tXrRTs8QyKFytmzkyiMzyz9wrnoxWT/GjjV71p5RfdqLRHfotbhyVRl6oZhUCK RGDo0CHk7z+ASpYomWz3P3z4MAlu4O5egIZxZDTsW5uU1I730fWq5ZWUTVL/fp9KuHiEjNc+WkS0 JO1INaYQUAi8EghYFXDB8MD4jnNEstZt2tLSZcupM0d6gWAL6tSpE924eYNatGwpEX18fX1Z05vD IigB/v7UrWtXyXNySmMqU6e2t2gOEKkHoWVBBQsWpLZt2tAXX05WW9aYkDKfINRnAEce+u233yT6 W+TVSBoYEEDapuPmknFnSLek+TCWM16nfc2JKpcqROWKuUpW2aIu9AFfI12RQkAhkHQIFC5cmOYE BdGs2bMdahS/Z1hwLJElPoCgMNbKW2rDWhr6tdS+tfJaurU6GJO1PK2u/pgqVWrau3cfzeNIbtoH gW70pL9P/bm1Ms+Trq+rzhUCCoEXDwGr0oq7uzshesucoLliBgcDbtGiOXl6ehLCO169epWCg4MJ 8bq3//ADtWnTWmJ0I2ykkRAnvG+//tS2dWs2g5lzETEHJizUqVSpomgRhgweRFu3bZOQkOaS6kxD ABOAbNmzkf/AgRQRESHPZ9rUKRybPne8gByIcOTPgjC08I8eP6KQkBCa8fVMrRm7R36XEcLzwiUB rgo4puEj0hUpBBQCthHImTOnxfC9mKCCtKhgCEmeJUsW6tyxE7m6uNK+fftYedCR2rXvIOWgCc2X Ly+NDhxDkyZOkChjuXPllrzVa9bQgoUL5bxxo0YcOtaXsmZ1JoQEnsBh06OiopgH9BeeDeF0165d NHHSF4mKoCaN8z8oHdBH+vTpJCzt2HHjmS+kpvnz5lLPnr3oEke6LFumDA3g/po1j7P0vf9+Jart 7UXYAWX3nr00bvx4CaaA+8iWNSvlYIwQzn3qtGlaN3aPUX9HSV/6gngnvcuhdBFO+C1+p4SHH2ZM M5OrqyvdvHmTVq1eI88Cypk6dWqTs7Mz3bhxQ8LK4/2D91B9n3qUP39+dpX7hw4cOEB7+TkAy/o+ 9Zm35mIXvHvynjvG2CpSCCgEXg4ErGpwEW8bhBjiIDdmFqA8eeKY67Tp04UJIK1Vyxbib3XmzBlc JiAw5yNHjki6XkA6evQo+TBjad+uHeG8U8eOEg/92zlBHPu7uDDGBI2l8AQXZsLRD6Pp/PnzgsRp DrUJys++0Hry9KxM1atXowGs3cULpGTJkpQ9e3Z9EZvnDx89prDj5+nEuSt06+4DOeIa6YoUAgoB 6whAI9uZhVT85vQEobdXz57kzUKfRqNHB0qo3cXfLaF58+dTep6YOmdx1rJZ+Mpg4oOZM2em7Bye O3DsWBHO2rVrK0JYmdKlWcjsIWmfDR5CWZ2zUq8ePcR1yc3VjcaMGSsWsVq1anFYXl4UmkiCZa59 +3a0aMliUVRkzJBR7g3aV4zp9bSvS4sQ3iG4apQvb176H2ulMd4KFcoLn0ce6kDoHcdC8mJ2f0sM wa2tNlv+8PHy8hLrFPrFJGHHjzvop59+ptKlSzGmD1j4XyT58DEGlSpVivnmBZq/YKEIvrVq1pL0 TzgMOMazjN29Dh46SDVr1hBlzfvvvy8CPd5H4YfD2YWkhJRX/xQCCoGXAwGrGlwIuCEhm6lvnz7U sEED0rQGjwwCTscO7alWzZo0aMiQBIvQ7EGwes1ausb9pEmdhu7wIrXxY8dQn0/70YTx41igdpPZ fjtuPyrqb3tNpZj8NOzi8TjmsWlBiBYu0sngOqBtmdXNrytrhfZTIL/kjOY8W6BBYxt27Dx1GbWQ yhd3o9BjEXTibGS8RWa26qs8hUBKReDUqVN0mCf0PvU+FggOHz4sE/d6T69DQ8NM0Fy+ckXC2sIi pikVTJkWTrayxjM0NJROHD9OzZo1pQIF3Fnwepf+uPgHC24LpEa37t3JiV3Mbt26Rd8tXcrCaAl6 880MkpfFOYuFVm0n3WPejA8Ewbd5khw0d64sUMvGwrYtwsI1aGhBpd4rRSVYONVo85YttGv3bu3S 4SM00anZVQGUKrXZHHj58hU6xphgwR4m9sAIWuXzFy4w9mml/A8//ihC/7usPHFzc5M0COl58+ah devWizURGl1ogBECGfhlYaG2WtWqdI6tZevWr5c66p9CQCHwciBgVcDF8IPmBom7ALSDEawxhGP/ xYsXTXfWtEkTatWqFY0dO47NOqGmdEdPsIJ3586fmPm+SUFzvqUVK1dRJDN8aEB86jegmTNmEGbs KKMoDgHsmgD3A2hV4Nrh4uIiGXjB6enQoXDq0tWPqnhWpho1qlOb1q3kGu4l9ggvkVzZMlGHhpXF BzdThvRUt/K7otGdu3Y3RV6/ZRKw7bWl8hUCKRGBDRuCRaiFkAsBqwQLSpk54t+ixYstui7oMYJG FOZ/8Efj4q8HD+5L0Xv34464wO/1Cf9p9M/Dh5QqOpqaNW1KUEBs2bqV+XeElp3o410W9tp16CgL gStUqECNGzemyVOmiD8sGkuXNs7tAjvi6Em/wwGipKVmlyeNHvIYn4VgCYQAaqTH7IYF0lCIYezk mifqIAiynTp2oJsstGIC8tdf1+jtty1btLCjDxQHu3fvocjIq1SQ3fU8K39A71eqxG5eX6u1IYKo +qcQePERMHMcw1jTp09PS5gZ1/b2Fm1E1SqeYn4KDYsTZD/+6CPq1s1P/HAvXb5ERYp4iC8TmgEj 0ZvhDE0nuOzBGocHzLChGXjIjBkEn1L4e8Ecr8iMwOnTv4t5rWeP7lSoUCHq7ucnL8yLLPjqCYv2 uvCiwB07dtLXM78R/zT47tojvCw9XHPSzCEtqWujKlSzQhGqWKKAHHGNdOSjnCKFgELAOgIQcq/y JNSbTemOCrdRbNGCyd2nXj1x04IPvT0KP3xE/Ech0Hp4eNCsb76h4bxAGL6jCJCydu06inlsL/i2 9V4g4I0cMYIuXbpEU6ZOFc0mLHrQcMawIPjxxx+LEAh3Mz1Vq1qNqvB7o2LFCuKLe5w1rM9LcN/I w+8G7ePoIjVgis/vv/9O4KGxT2LFrxaCLNaRVK5cmfLytovYoWZggD8Lv2/Lu6/wO+/IehAoDDJk eDNRi+Ke915VfYWAQuD5ELCqwcUs9svJU8i/f3/68MO6dJv3wZ3OGlWYcECNGzeSo4+PD/vR+sj5 RF7YELJ5M/sw1aQTvPuCZp6STP4XExvDM+P4jBa+tt5etWRHgEePHom5bvv27YTFFxGsbQxn854i MwIwnU2YMJECmAl/O3sWXWNNxKjAQMHNXIpYyxHOi0I+oaCgORTL2hMIugcPHtIXsXiePu1rNLJ7 ffKqVJRdR8zzHyw4y+6cUdLhh9t+2DyL9VWiQkAhEIcAFpItWrRY/E9PnTptVXMLITH2aSQVLBAL CwujPn16y+8W2lNockHQgur55xNOR92Dhw4RdqKBlcaPXZJgzZk7b75ofz9gP1LwAFh7wAc0QRd1 cY32oGnVa1vjRm/+f4GtdlisFRg4Wia20IDCXA9+vXTZMmrerJm8IyCca5rTGL6f61HXaSj7BEMj DX6EMYGM9yGJDvx7wkLpBx+8Lx+tOBZBCw5P8dOw0h/hboV92qH5xYTBk4VZ3I9WZj1vVdmIeSV8 mpG2f/8B1vD+Rb/zmhIsPsOevnDNAw99Vs2zNl51VAgoBJIPgVR587toVh2LvcJEhr0GL7M/ExiT I6Rp92wxTXvtQINsDP5gr05KyocJEz5w8Ku1hTN2wgDTxsvIFj1Jm5lim26jx7vG0ZFVn1NOdlGw RpHXblFJ38/JyXMQpV7uTamSIZJZI/b/s0er1661V0TlKwReCgTwu8XvOvqpRcuRQWNbLLgJ6Pkm eDFcmu6zhcwWnwCPDxw1ymI38F2FL6+1MeEdgb61nSH0jSAPvOpFEQyh8QUmlvgh8oCR8T2H+0Z5 TSDW3586VwgoBF5cBKxqcLUh44et97vV0m0dbTFSW/X0eXomrU9X53EIgNlqC8lsYZLYF8u9B9Hk 6z+L3PNms+iGgGd79tJ1QjnrIrCtEak8hYBCwB4Cif3doj0IZka+id8rrD72CK4MGzYGWyx29sxZ Sbc2JrwjLAmMqGQt3WJHyZCoLcq11JW1PGv3bakNlaYQUAi8OAjYFXBfnKGqkfzbCKR+IzNl8h5B Eexee9HsnZCg25h8RJnyEqG8IoWAQuDlRwBC8Pr1G17+G1F3oBBQCCgEniKgBFz1VRAE7vx1njLO K0+aXGvPGUUrh3pv8epwRQoBhYBCQCGgEFAIKAReFAScsFpUkULgWb8HOTK9kyzgYSN2e/Ss92Cv XZWvEFAIKAQUAgoBhcDLhYCTI36cL9ctqdE+CwK3b92kjG+7Jrpqcmlw4SNoj9R32R5CKl8hoBBQ CCgEFAIpAwHlopAynrPduxThtn0oxd6/maAs9md/ugtPvDz44MKtgZJhF4V4HasLhYBCQCGgEFAI KAQUAjYQsCvgYvuXHDne5k29bydYjYvtVvJxlLO///5b9hm00Y9kobxxhwVsa4M+jKt/LZW1135K ygdmeXhjckQ2M2L6rDhAuP17ywhT9dSpU1GOrG9RMffcdPzsFfoz6jZvlWPeVc65zkiTz66pkjpR CCgEkhwB8EMj4XePLbgqVaxIWbJkoY2bNhmL/CvX2BcWQR7OnYuQPWK1c2udIQhQtmzZadeuXdaK /Kfp2B4MgYt27d6V6LDwcJ0qV7YsISxxUvBh43NOijb/U3BV5wqB/xABba2QxSFgU+zg9evouyVL aOOG9dSyRQtTOfcCBWjl8uW0cMF8Cua8Ht27mfKMJ/jR+vo2pu+3bqHevXqZshGGdyNvsh2yaaOE gdQyWrdqSatWLBfBV0tTRzMCiLazetVKwR7PoHixYubMJDrDM3uvcD5aMcmPNn7Vm1Z+0Y1Ke+S3 uHVYEnWpmlEIKAQsIODm5kY7fvwh3mfxwgVSsomvrwRg8OJgOclF7dq2Ja9aXtKd/txa/76NfalX jx7Wsk3pbdq0lohopoR/8UTfF6Jm9u3bhyqUr5DoHt3dC9AwjhpnDKmc6Ia4QuNGjWjokMHxPpi8 KFIIKASeDQGrGlz8YPHDRezv6V/NoLp16lBnDv26f/9+OssRxjp16kQ3bt6g3swY6tSuQ2AYq1av kYg5xqEE+PtLqEbs3erklMaUXae2t8x8EWUHoWUxCy5YsCC1bdOGhg0fkWDDbVPFFHyCcJMBAwbQ b7/9RvPmLyCE7B0YEEDtO3aU+OlGaKCdwP6YidUEpH3NiSqXKkTlirlKk2WLutAHfH3szBX6J9p2 0AjjGNS1QkAh8OwIaBEFPx85kv768y9p6J+H/8ixcOHCtG/vPho8dKjDHYAnWNrzNbHpjnb45eTJ CZQVmEBD+6wPqtCsSROJzHjmbNy+u1r7tsal523WyqEfkD5Qg74v7PPu26SpWCK1Pq0dYTlDO4nl p9ba06enZl+wc6wV/+mnn0zJiLimJ/SvYYb7wjiMY9GX0de1hAPy/8170vevzhUCyY2AVQHXneOP I4ILQiHCDD4nKIhatGhOnp6eIuBevXqVgoODJY739h9+EAE3Z86cFgXc119/jfr2609tW7fmH6P5 FjNmzCg/aAi4lSpVlFnwkMGDaOu2bRL/21xSnWkIYAKQLXs28h84kCIiIuT5TJs6hePO544XkAPR i/xZEIYW/tHjRxQSEkIzvp6pNWP3CIsowvPCJQGuCjim4SPSFSkEFALPjwD4JfiokTCJBRkjgyHc b2RkpKl4r549qFrVKiLgwJLWu09fmj9vLvXs2YsuceTJsmXK0IAB/alZ8xbCn2tUr06vs+ICu43s 2r2Hxk+YIBHGSpcqxRa47uRe0F14CBQav/zyC5UrV476sMUtb768zOev0OQpUyXdNAAHTxrUr0/v vFOIRnw+kiZNnEDg+7lz5Zbaq9esoQULF9KM6dPpjTffpE/79qVChQqxUuUr0Wg2a9qU4Aawb/8+ Hu9Eudel3y2h6xwWuABrtkePGcOuc/ctjhMCL9qrXq0qgXH99NPPNI37+WLixHh9ffO//9Gs/31D Q3iS4NuosfDLceMnyPg+HzFCosBNnjIlrq3q1SR4xQa2PAbNnRcPgeFcP5bDCQeOGSvpuI7mIBjA 2VG6e++uPDt9eWjwod1F1Mp8/CzOX7hAUdej6L33SspYtn2/nQ5zSHu4qdSr9zHly5tXvjv79u2n vfv2iQD7Yd265OHhIRa4k7+dpC1btsp5vY8/lmeD0MqHOJzy999/r+9anSsEXmoErLoogIGAPDwK y9HN1VWOefLEMSYwCvx4QK1athCfrDMcu9sSjQ4cI5pg5OkFpKNHj5IPx/pu364d4bwTayHB3L+d E0TFixcXxmapvZSc5pI/P0U/jKbz588LDKdPn5ZjfvaF1pOnZ2Wqzsx4AGt3p06bRiVLlqTs2bPr i9g8f8ix18OOn6cT567QrbsP5IhrpCtSCCgEng8BaF47d+oov0t9SxB6e/XsSd7ecS4A+jy4IUAg wQfCCsLnhrNgs/9AKA0eMpStY06UOXNmej3t61INvDRb1qxynjFDBgLvWLR4CU2Y9IXwhvcrVaIM LFSOGRNIVyKvUD9WQkCbCcEMbcGqFn44nHr17kNXI69Sdz8//XAcPs/AfWNcIByzc4jxwLFjKWTz ZmrXri1lzepMY8aNE76Ge1rCAiyE7p4swEMAHjZiOMGdrUvnziKsQZDDmg3/gIEUGhpmdZxt2apY q1ZN+nLyFPryy8lUs0YNEQCNfUGb7OzsLO+eQ3y/NarXoDcZl0yZMlEV5qMQ/Fq3aiWCMoRVKHta tWxJVXlyoSfUrVa1qmCKe65SxZPCuW5iKC+vq6jNlk3tg3uFNTVdurTybJavWCkCbP6nz/ICPy/P yh9IF0X4OxHL1jo84yNHjlLNmjUIIe/xLijGbmybGW8oOuDSVqZMafkOFS1ahL9Hy2jL1q3k6pJf vXMT87BU2RceAasaXAi4ISGbqW+fPtSwQQPTjPuRQcDp2KE91apZkwYNGZJgEZq9u1+9Zi1d437S pE5Dd+7epfFjx1CfT/vRhPHjyM3VTbQL7bj9qKi/7TWVYvLTsIvH45jHJrOUZmp0YpcCPWlbZnXz 60qYyUOrAA2AowSNbdix89Rl1EIqX9yNQo9F0ImzkaLJdbQNVU4hoBCwjMCpU6foMLt/+bDGDQQN HARSaOBAENyMBGuMthgX5my4KWHx7/379+nSpUu8kCubsUq865NcfvOWLZIGE33BQgXpzp07IgRN mTpNTPRHjx0TTSD4yuxvZ7OQVJP9bWtSaRaIkoq2bvue7y+UThw/Ts2aNaUCBdwpLCyM3SYeiQUQ /L5F8+bSXe7cudg6lUsE0IYNG4hwiYyFCxfRwUOHpIy1cZYuVZq2suD2w48/SjkIqgi7i6ht+r6w 0FmjH3/cwW5fPeiDD96X5wEt+s8//8xrUdbLxAELykCp2D2gPGu4Yb3USKsLKyfcAaC9/YnrJobE dSOVWe+EaxDcEH7mRXp4Ljdu3BSFECyrEIAxcQH9evAga58fU9EiRQgTJdCbbMlzdXEVBdMxxhsE 5QjK5cqVS65rsSD8Oyun1q5bT45sxyiV1D+FwEuAQHypyDDgoLlB4i4A7WAE/yjgAI8ZvkZNmUm2 4pnt2LHj6ABrERJL8GXaufMnmS0HzfmWVqxcRZFsCoN2w6d+A5o5Y4bM3FFGURwCYGpwP8iRI4e8 DFxcXCTjj4t/xIPo0KFw6tLVTzQQNWpUpzatW8k1/KftEZhqrmyZqEPDyuKDmylDeqpb+V3R6M5d u5sir98yCdj22lL5CgGFgGUENmwIFiEKQi40dCVKlKDMHBVw0eLFFl0XYOLXuyhYbpUoXdo4Fwe9 4IayD+4/MFW5d/9e3PlTAUrzT4V/J3ZFgNZwNpvur179k3bv2UMRzDfcChQw1X+ekwcP7kv1eyyY 26M/WHAHrWFlyIWLF0zF/2FBFZSYcd5lJYrmv2pqyHAC4Xfnzp2itIGLHgRYCMUQdKEZ18azaVMI 7dixM15t1IX/LDSnqVlIxXtLm5DEK2jjAu1rkxCtGCYuEHA1ZQbOY2LjYk1qzw1lP2nYUARbWEOh 4IA7A0gTkuWC/wE71IOgCxdED37fFi1SlDXBlcV6qilHtPLqqBB4WREwTxUNdwDTxhJmtLW9vUXT UJXNLTB3hYbFCbLYVqVbNz/xw710+RIVKeIhvlVoplPHDhZNbIYuTJfw/3rAzC5o7lx6GB0t6fAp TZ8+nZitTAXVCZ0+/Tth4QEWl8FXDWZD+PFdZMFXTzAvduFFgWDCX8/8htKwyRG+u/YIzNDDNSfN HNKSujaqQjUrFKGKJQrIEddIR76RadprV+UrBBQCCRGAkHuV1yB4e3nZFG4T1kyYAsE0hjVzH7ML Q0F3d3H/Slgqfgq0wHB5gj8v+MlnAwNoxfJl4kqQgX1l4fu6Z+9esdxgO8h/kyBEwq8UPrdh7AMM QQ5jCw8/zNhkEk2ksf9MXNbaOMOPHCYvxhWuGNh5Zt3aNQR/YJC+L2ObIZu3SHm4deEcBHeK26wt v8D+r7/9dory589nUWO+ia2eZVnLC4036iSWMryZgfLwu0/7wFXCUcqSJbO8C2AZeI3XvWiEMcPF A88Xux/1+/RTdlEoI1jDL/v4iRO0fft20To7EjFSa1cdFQIvOgJWNbiYecJ3yb9/f/rww7ry457O GtVz5yLknho3biRHHx8fZqQ+cj5x4iT5UcOsdYJ/NNvYFKUnzDofP46beWrp8LX1Zt+yrn7dxGH+ EZt18GP73zczRWsAHzNFZgSgJZjAiy0CAvzp29mzZNXxqMBAwc5cisT3q3GjTygoaI74ZUHQPXgw zqSnL2c8T5/2NRrZvT55VSrKriPm+Q8WnGV3zijp8MNtPyz+AgtjO+paIaAQsI8ABK1FixZThQrl CYvILC06i2FtG8iS9hE+l7FPtXngnUuXLaPmzZoJz45i9y9z3ViT1k9rC3Wh1Rw1erS4ooFv32WX hS941wO4M0FLCV/T1rw4GOOKfRrtBQuSYthNKq4d87kkWPiHsqgTVz7+O+AJ3xuEctBG7q9F82bi ZwuXKvjjdunSWSxW0FyPHDVaNI9x7cTVuR4VZXWcCxYsJNf8LjRq5OcywcfCOfiaGvuawO+tOA1p 3LsJ7iKXWZMazcoWTABA8xcsIFjLxjKvhbIAvrX7eEch+MKiLj4g1NXoGLt7JIaAb4F33Nhlw81U 7Xt+F17nBWV6TS3O4UIGEvz4OYKwJga7Hfl17WLaESKWxwXXBig3fPmdDdcJvMOxOxKEZ2yN1pUx RpsnTpwUra40pv4pBF4BBFLlze8S90uxcjMwAcFX5zKvyrXEYC1V07R72o/eUhl7adAgJ9a8Y6/N VykfjAqmK7yIbOEMMxuYF15+tuhJ2swU23QbPd41jo6s+pxysouCNYq8dotK+n5OTp6DKPVyb0qV DJHMGrH5zR6tXrvWXhGVrxB45REAz8bWTxCeE0MQeDCB1pOjbU3+4gtZlKWvi3NY9+Ba4Shh3CDt XYNr+CYbx2Vsz9Y4kYd3EgRWPRn70udZO7fVD+pAYfPFpImsWAiilatWW2vmX0vHPeFjvFd0iIWD IM3VQS74n7V0LV8dFQIvKwJWNbjaDUEw0vvdaum2jrYELlv19HlKuNWjkfAcQqsjvlLwH0sM3XsQ Tb7+s8g9bzaLbgh4tmcvXSeUsy4CJ6ZHVVYhoBBISgTAs+1NaC31Z0mIdLStzawZfeON9AmaNe7j mqCAIUETbLVkXFsal5avHW2N0xoWxr60tmwdbfVTrGhRmjr5S8JiruCNm2w186/l4Z6s3ZdRsNUG YS1dy1dHhcDLioBdAfdlvTE17sQjkPqNzJTJewRFpCK6aPZOSNBQTD6iTLx+AeUVKQQUAgoBtX8q iS+rd5268dwJ1DdDIaAQ+O8QUALuf4f9C9Xznb/OU8Z55UmTa+N7SiccqlYO9d7ild+KFAIKAYVA SkcAljVFCgGFwIuBgBOi2ihSCDzr9yBHpneSBTxHVvc+6z0kyw2oThQCCgGFgEJAIaAQSDYEnBzx 40y20aiO/jMEbt+6SRnfdk10/8mlwXVkA3L1XU7041MVFAIKAYWAQkAh8EoioFwUXsnHmvibEuG2 fSjF3r+ZoDLvEMZbDCVIFh9cuDVQMuyikLB3laIQUAgoBBQCCgGFgELAMgJ2BVxsOZIjx9sSEtK4 mhVbr+TjKGfYABz7KdojlDfusIBoO+jDuGuCpbL22k9J+cAsD8ctR2QzI6bPigOE27+3jDBVT506 FeXI+hYVc89Nx89eoT+jbpv2X0Qh5zojTT67pkrqRCGgEPhPEADPNBJ4A7YUrFSxooR13bgpeVb3 lyr1nkREO8d7rurPjeOzdm28l6Ticdb6U+kKAYXAq4eATQEXsc8HD/qM3uD9EbGhNML6LfnuO0EB EVEmjB8vG0iD+axatUoiZlmCCMwKgSG6du5MG4I30vSvvpJiiK7y5aRJEnVl9OhA+nHHDklv3aql RJxp0qy51S1PLPWTUtIQlQfPJXPmzHT92nX6fORI2ZomKe8fz+y9wvlo2sDmEq73lxMXqO+EpfTr yYtJJlAn5XhVWwqBlIyAm5sbzZsbFA8CBCto2boNNfH1pa68+T82908uAbdd27YSOGDW7NmkP483 QCsXiARWt07teLm//36Gli1fHi9NXSgEFAIKAVsIWBVwsaH1sGFDhSlO/2qGREjpzKFf93P0lrMc l7xTp0504+YN6t23D9WpXYfatGlNq1avoT857KSRAvz9OeSvl2yf4uQUt5E3ytSp7S1CLeogtCwE 3IIFC1LbNm1o2PARSrg1AsnX2PQ8YMAAibAzb/4CCdk7MCCA2nfsmGADb1THJt7YFzGxGpC0rzlR 5VKFRLhFO2WLutAHfH3szBX6J9p20AiUV6QQUAgkHwJa1EFMdv/68y/p+J+HcYEeChcuTPv27qPB Q4c6PCDwDUv7oyY23eEOdQWhcYZFb9kys0B7n6/1hDIgbdcCWLSM+78ay+jrWyqPST3qGNvR11Pn CgGFwMuDgFUB151jmSMKFrS2MIPP4cgsLVo0J09PTxFwEboxODiYrlyJpO0//CACbs6cOS0KuK9z XOy+/fpTWw75yMpeE2XkWOcwYUHArVSpIkGoHjJ4EG3dtk3CIJoKqhMTApgAIOyi/8CBFBERIc9n 2tQplJvjl+sDcrzxxhvkz4IwtPCPHj+ikJAQmvH1TFM79k5g7UR4XoSEhKsCjmn4iHRFCgGFQPIg AJ5qKXwvJrogY7QyhPtFWFuNevXsQdWqVpEJ7sIF86l3n740f95c6tmzF0cZu0xly5ShAQP6U7Pm LYSH16henV5nPowdSXbt3kPjJ0wgBIspXaoU9ejendwLugufgdIDoW/LlStHfXr1orz58vK74ApN njJV0rX+n/UYzZNojM9ILVu0kIASmTNnkaywX8KoaJEi5OzsTBcuXqSVK1eJYP7RRx+SR2EPCVaD cLvQXENgd3V1JS8ODZ8zRw4Jgbt121Z5B1Wp4slha8vLOwjvpPUbNiRwmzOORV0rBBQCLzYC2nam CUZ5neOYgzw8CsvRjRkDKE+e3HKcNn26xL7GRauWLcTf6syZM5Jn/Dc6cIxogpGuF5COHj1KPj71 qH27doTzTqyFBOP+dk6QhDx0ZGsoY1+v+rULxz6Pfhhtihl++vRpueX87AutJ0/PylS9ejUawNrd qdOmUcmSJSl79uz6IjbPHz56TGHHz9OJc1fo1t0HcsQ10hUpBBQC/z4C0Lx27tRRfrv63iD09urZ k7zZKmYkCG/1Pv5YPh4eHvTd0qUUfvgw7T8QSoOHDBWLDlybXk/7ulQFv82WNaucZ8yQgcBfFi1e QhMmfSH84/1KlSgDu6iNGRNIVyKvUD9WVGAiPZy1wdDmwvIWfjicevXuQ1cjr1J3Pz/jkJ7p+s03 36DabOHTPnCJAyFaWjoO476SXeLOn48gz8qVKTz8sITFBQ+EAiBv3rwioK9bv14E23ffLU5Q2OBe mzZpQjdv3JB7vB51nT7hEOBZsmShqlWqsEC/W9JRzsXF5ZnGrSopBBQCLw4CVjW4EHBDQjZT3z59 qGGDBpQ7V5xg+8gg4HTs0J5q1axJg4YMcSikov7WV69ZS9e4nzSp09AdXqQ2fuwY6vNpP/btHUdu rm6iOWjH7UdF/a2vlqLP07CLx+OYxyaXA82M6MQuBXrStszq5teV9u3bT4FjxtK1a9f0RWyeQ2Mb duw8dRm1kMoXd6PQYxF04mykaHJtVlSZCgGFQJIgcOrUKTrMfrM+9T6W9g6zoArhq97T69DQsAT9 wGKjLdhNzRYYaC9v3bpN9+/fp0vsk5stW7YEdfQJJ7n85i1bJKkZC4MFCxWkO3fuUHoWKqdMnSYL io8eOyZCIXjP7G9nU03m/161alLpMqX1TT33eepUZv1LqqcuCWgUypDz58/Tm2ylgkC7j93m4IKF rQQxzuMcKnfvnr2Un4X1dOnSyjggpOfOnYtgTdy8eQvdvXdP8IClKzo6mjXhD0UbnTHjKfrp55/F OvbcN6AaUAgoBP5TBOJLRYahBPGiBbgLYGYcwQxl6JDB8czgmA23atWKxo4dRwdYQ5BYgv/Uzp0/ 0ZvMfILmfEsr2LwUyWYuaC586jegmTNmEBaioYyiOATgLgKmnINNbHDt0DQNf1z8Ix5Ehw6FU5eu flTFszLVqFGd2rRuJdfwn7ZH8EXLlS0TdWhYWXxwM2VIT3Urvysa3blrd1Pk9VsmAdteWypfIaAQ eHYENmwIFqEWQi6EtRIlSlBmjhy4aPFii64LIz4fGc9FwVrP6dLGuThgFxs9Pbhv9nW9d/9eXBbz A5Dm7wof1Vu3bok5f/b//sfj+JN279lDEcxb3J5qWuMqPvv/e/fumwRtYyuPnypZINTG8P6FOIK0 8WHHiGrVqtLhw0csTuo1LzmUh+APQR2L4YoVLcoCsztVrFBelDu/Hjxo7FpdKwQUAi8RAuYpsmHQ mAkvYSZa29tbtAhV2UcJpqzQsDhB9uOPPqJu3fzED/fS5UtUpIgHwacW1KljB4vmM0MXpkv4dj1g RhM0dy495Nk0CD6l6dOnE3O8qaA6odOnf6ebN2/K4rJChQqJSRA+ehdZ8NUTTIddeFHgjh07ZXeL NGxOhO+uPYJw6+Gak2YOaUldG1WhmhWKUMUSBeSIa6QjH+UUKQQUAv8+AhByr/Jk1tvLy6Zw68hI IJjGsED3MbsxFGSzPVzE7BG0wHCLgj8veM5nAwNoxfJlsotLBub5+/bvoz1794p1B1tGJgVB05qH 3wHaBz62jhJcDh48+Id++fVXEYC1elgvAmEWOMLNA5rwPr17yXmjTz6hKB57yObNIvSiDUUKAYXA y42AVQ0uzFxfTp5C/v3704cf1qXbbOaazhpVOOCDsO0XyMfHRz44nzhxkjAImKxOnDhB27Z9j2QT xcTGMIOJMV3jpHjx4sxwalFXv2706NEj+Wzfvp3+981M0QjAf0yRGQHsRTxhwkQKCPCnb2fPomt/ XaNRgYGCm7kUsV9aODVu9AkFBc2hWNa4QNA9ePCQvojF8/RpX6OR3euTV6Wi7Dpinv9gwVl254yS Dj/c9sPmWayvEhUCCoGkRQALyRYtWkwVWLOIRWSWFp3FsDYSZGkHAPz+Y5n3gsBjly5bRs2bNRO+ HsUuYua6sXxu5s9oC3Wxx/mo0aPFXQ28/S67LHwxebJoRzdtCuE1GC2pNS8gxrhin0aEgWY1hl2p QPpzSbDzD5pVKFg6dGhvKomJ/fIVK0RLq2lqY1lz++SJOQIN3KqwneXBQ4fonXfekQn+TRboUT6W ywFHuMXVrVOH3zvF5BrjhzsetNVNfBvLxB2L9CAcK1IIKARebgRS5c3vollsLN4JdjbIlSsXXeYV rZaYp6VKmnZPMx1ZKmMvDQxO8yWzVzYl5mM7G/jTwa/WFs7YCQMMHi82W/QkbWaKbbqNHu8aR0dW fU452UXBGkVeu0UlfT8nJ89BlHq5N6VKhkhmjXgxiD1avXatvSIqXyGgEGAEwNexVZZxFwZ74MCd zBjw51nbstfX8+TjHQT3C/jXWuKP4IvYHUJPWDQH0tY16PPUuUJAIfDyIWBVg6vdCgQj/fZTWrqt oyWGYqu8pTwl3FpCxZwGoVVbSGZOTXhmZOIJS8RPufcgmnz9Z5F73mwW3RDwbM9eYo0Hl7MuAsdv U10pBBQCLxYC4Ov2Jr2WRmwUblHmWduy1H5SpYFP2eJ9lvKUYJtU6Kt2FAIvBgJ2BdwXY5hqFMmB QOo3MlMm7xEUwe61F83eCQm6juEdyTLlJUJ5RQoBhYBCQCGgEFAIKAReNASUgPuiPZH/aDx3/jpP GeeVJ02uNXviWR6QVg713uJV3YoUAgoBhYBCQCGgEFAIvCgIOCFijSKFwLN+D3JkeidZwHMk6Mez 3kOy3IDqRCGgEFAIKAQUAgqBZEPAyRE/zmQbjeroP0Pg9q2blPFt10T3n1waXGzibo/Ud9keQipf IaAQUAgoBBQCKQMB5aKQMp6z3bsU4bZ9KMXev5mgLO8QxtsHJUgWH1y4NVAy7KKQsHeVohBQCCgE FAIKAYWAQsAyAnYFXGwlkyPH2xLu0biCFlux5OMoZ9jcG3sl2iOUN+6wgK1c0Idx1wRLZe21n5Ly gVmePHkIkc2MmD4rDhBu/94ywlQ9depUlCPrW1TMPTcdP3uF/oy6zVuOmXeVc64z0uSza6qkThQC CoEXFgGErK3Ikb7u3rtL+/cfSJZx1qheXfamxc4v5cqWpR937EgynpUcN1Cq1HsSue3cuQiHu8P7 S09JxaP1bapzhYBCwDYC2lohi6UQ1zx4/Tr6bskS2rhhPbVs0cJUzp1DMq5cvpwWLphPwZzXo3s3 U57xBD92X95E+/utW6h3r16mbITh3bhhA4Vs2khgghq1btWSVq1YLoKvlqaOZgTKly9Pq1etFOzx DIoXK2bOTKIzPLP3CuejFZP8aONXvWnlF92otEd+i1uHJVGXqhmFgELgX0Zg6NAh5O8/gEqWKPkv 92RufvjwYRJ4wd29AA0bNlT24DXnvvhn7dq2Ja9aXg4PtCwL8Qhrr/80a9rU4fqqoEJAIZA0CFgV cLF5N5jRcY5I1rpNW45+s5w6c+hXCLagTp060Y2bN6gFR7FBlB1fX1/W9OawOKoAf3/q1rWr5Dk5 pTGVqVPbW2bzCxcuIoSWBRUsWJDatmlDX3w52eHAEqYGU8BJunTpKGDAAEL4TER/i7waSQMDAkjb pNwIAdKN2gRjGUvXaV9zosqlClG5Yq6SXbaoC33A10hXpBBQCLycCBQuXJjmBAXRrNmzHboB8A5Y iyyRJZ6DADTWyltqw1qarXbQvjWeZmlM6MNWHbzr9GStDX0ZW+cYOyyS8+bNN322fR8/qqceI2sY ox18LJG+vpZvrR0tXx0VAikNAavSijvHKUe0lzlBc8UMDqbYokVz8vT0pLPnzklYxuDgYEJ87+0/ /EBt2rSWmN5/csx0IyGueN9+/akth3Pk/bdNlJHjmMPsgzqVKlWUmf2QwYNo67ZtHN98v6mcOjEj gAlAtuzZyH/gQIqIiJDnM23qFMrNcdv1ATneeOMN8mdBGFr4R48fUUhICM34eqa5ITtnsLAhPC9c EuCqgGMaPiJdkUJAIfDiIJAzZ06L4XsxGQZp0coQ/jxLlizUuWMncnVxpX379rGioiO1a99BykFT mS9fXhodOIYmTZxA4M+5c+WWvNVr1tCChQvlvHGjRhzW1peyZnWmo8eO0QQO0R4VFcX8pr+8HyBo 7dq1iyZO+kIiiUmlRPzr2KE91fepTxj/sePHeaz5qZFvExFSP+3bl6pXrybBJTaw9S9o7jwpt/S7 JXT50mWCAI+QwbPnzJExQFi1VKdM6dI0etRIOn/hAhUtWpTqN2hIH9atS02bNqFMb73FoeZPUuDY sYSwvc9C0dGP6BJH/9QTBOlePXvQzZu3ODpoTnF7wP2VLVNG3n3h4Ydp85Ytoqz46KMPyaOwhwjy UGZs3LRJIqy5urqSF4e2z8nKpOvXo/hduVXeoVWqeFIFtuyhD7xT1zM2Rrc//VjUuUIgJSBgeXrI d4743CAPj8JydOMfFihPnjiGN236dNrLDBLUqmUL+bGeOXNGro3/wDCPHDkiyXoB6ejRo+TjU4/a t2tHOO/UsaMwq2/nBHGs8OLkyNZQxr5e9WuX/Pkp+mE0nT9/Xm719OnTcszPvtB68vSsLC+CAazd nTptGpUsWZKyZ8+uL2Lz/OGjxxR2/DydOHeFbt19IEdcI12RQkAh8GIgAIGuMwup+H3rCUJvr549 ydvbbFofPTqQ7t+/T4tZGJw3fz6l50mwcxZnU7WMGTOYeG7mzJkpO4cCh5AXsnkztWvXVgRaCIY9 WUhD2meDh1BW56zUq0cPcZNyc3WjMWPGivWtVq1aInCZGnfwBBPy1qwIWbpsGQ0eMkQEQeesWaV2 61atqHq1qjR+wgTRQrdi62HVqlVE8IXgjon8wM8+o6t/XuV3SZzQbq0OhOc32B/599/P8P30EuGx Vs2atHz5ChrgH8DKmhzUuNEnDo46YbE333yDarOFUvvA8gltLEIdQ/BcvOQ78UOuUL4CBW/cRHv2 7qWyZcvIpCJv3ryELQ/XrV8vgu277xYnKJww5qZNmtDNGzdo0eIldD3qOn3CIcxx71WrVKFdu3dL Osq5uLgkHJRKUQikMASsanAh4IaEbKa+ffpQwwYNTDP5RwYBB7NtMIZBzIyMi9DsYbl6zVq6xv2k SZ2G7vAitfFjx1CfT/vRhPHjCMwS4RTbcftRUX/bayrF5KdhF4/HMY9NizS08JJOBtcBbcusbn5d WVOznwL5xXPt2jWHcYLGNuzYeeoyaiGVL+5Gocci6MTZyHiLzBxuTBVUCCgE/hUETp06RYdZeeBT 72Np//DhwyII1Xt6HRoaZur38pUrovmEhlNTYJgyLZxs3fY9hYaG0gnWMjZr1pQKFHBn39136Y+L f9D8BQukRrfu3cmJtYa3bt2i75YuZUG7BAtxGSQvi3MWC63aTsK6jAi2EELABc1lMz+seqDmzZrR 62lfl4VquE7FAmP5cuXol19+xaW40R08dIhgvQoMHC3aTGt19u7dJzx0xtdfm0IWT2FFQKWKFahG jeqUlYX7d955vj2+U6cy648wVo32HzhAF1hzHBFxXoRTPENoiiGkpk+fXvL27tlL+VmZkS5dWqmG xYG5c+ciWEM3b97CiwTv0aVLl+Reo6OjWUv/kMoxFhkznqKffv5ZrHtaf+qoEEipCFgVcAFI0Nwg cReAdjCCNYZwmtebwTGbbMWz6rFjx9GBA6GJxhCranfu/ElmtUFzvqUVK1dRJDNhaCV86jegmTNm EBgeyiiKQwC7JoCBw98Zrh3aTB0vHT0dOhROXbr6URXPysKw27RuJddwL7FHMDHmypaJOjSsLD64 mTKkp7qV3xWN7ty1uyny+i2TgG2vLZWvEFAI/LsIbNgQLEIthFwIRCVKlKDMHF1w0eLFFl0X9KOB wAjNInix0Rf1wYP7UvQea301Am94wn8a/cNKiFQsYGERFZQdW7Zu5XeF47sNaO1ox3v374kWGWN5 9OgRZXuqvUU+XC0w3j9YsANt2hRCO3bslHP8g3Zaf8S5tTpwv4uNiTEJt0WLFKEZX7FVkgXfY+x2 AYKC5Vnp3r374m6gr48+QbgvEHZW0BQU+l0WKvEuF9VYU3348BGLSgkNfTwz3DPagE91MXa1KFjQ nSpWKC/KqV8PHpR+1D+FQEpFwDytNCCAmeQSZpC1vb1FQ1CVfXzAbELD4gTZjz/6iLp18yP44V66 fImKFPEQ8wqagXlIbxozNJ3gsgdrAR7wDzVo7lx6yMwSBJ/S9OnTiTk+QYUUnHD69O/sw3WTevbo ToUKFaLufn7yErvIgq+esGivCy8KxAvg65nfUBr2RYPvrj3CC8zDNSfNHNKSujaqQjUrFKGKJQrI EddIRz7KKVIIKAReDAQg5F7lCa+3l5fDwm0UW89gzvapV09cwuAeYI/CWeiCZhECrYeHB8365hsa zouRoV1EMJa1a9dRzGN7gb6t97Jn9x4WcDPRlC+/pEGfDaSuXbuYCsMt4vat26Lh/O23UzyOfJSN Na22yNE6uXLlkmbgFnDm7Fm6xxbF27fv2GraZh40rXn4HaZ9nJ3NriA2K3ImXA4ePPiHfvn1V15o bd6AHOtdIMziGcMFBVr6Pr17yXmjTz6hKN6uE/cLoRdtKFIIpHQErGpw4Sf05eQp5N+/P334YV1h LNNZowoHdlDjxo3k6OPjw360PnI+kRcb4AdWk10WTvDuC9vYxKWnmNgY/oHGZ37wtfVmp3nsCICZ LT7bt28nLIiAqSqcTW6KzAjADWTChIkUEOBP386eRdf+ukajAgNNWgGtZHh4uPiQBQXNEU0FBN2D Bw9p2VaP6dO+RiO71yevSkXZdcQ8/8GCs+zOGSUdfrjth82z2obKUAgoBJIXAWgqsZtNBdbenTp1 2qrmNoYFpNinQhMWiIWFhVGfPr2FR8DsDa0gKIa1m3pe/YTTURcuANj1BhYhP3Z/guUIbgTQuH7w /vsEfgPLErSjmqCLurhGe9BU6rWVRpRgYerHi2O9atUU4XvlypWyQw/KwS0CFquxzO8wYQePw2Jk 85jj1gc85r60fqzVwdoSvfB4gF0xTp48SRMnjBetL95/sfy+AqFcDLuFOUoYDxREHVijrREUE2vX rZNL4AGKfcK48AdkSuM8YAz3CCgobrLrB9pDOTxjuPXVrVOHJyTF5BpabLibQPPdhLfihOIB7g4Q jhUpBFI6Aqny5nfRLB4WsQDjwuz2Mq8IBdNzhDTtni1GZq8dMAi1CtQ6SjArQnsBv1pbOIspjhkk Jg626EnazBTbdBs93jWOjqz6nHKyi4I1irx2i0r6fk5OnoMo9XJvSpUMkcwa8WIKe7R67Vp7RVS+ QkAhYEAAPAI8BL6cjhK2qUKQHj2PBt+NrLleAABAAElEQVSH+xQ0iLZ4Et4ngaNGWezqFC+arVC+ HC35bqm4IrTnnR2wm0NrPmqEdxL6h8DnKDlaB+8d8ErNdcDR9pO6HLAEvngmlrDEMzO6UGjbm/3X Y09qLFR7CoFnRcCqBldrED92vd+tlm7raOkHaau8pTw947SUn9LTMKvXFpLZwsLIBG2VRd69B9Hk 6z+L3PNms+iGgGd79hJrDLicdRHYXi8qXyGgEHhREEgsj8C4oeww8mjwBkcWGsOVYcPGYIu3f/bs OdGcYvuytCzgwfVqwqRJ8crinWRvwh6vAl84Wsd4T8Z2kusaWNp6LpbylGCbXE9H9fOyIGBXg/uy 3Iga5/MhAA0utQ8lhOvl7W7ZPcF6e7Bw8iYLlPoNrjOvvNLgWodK5SgEFALPiAC0tI5aDZ+xC1VN IaAQeIURsKvBfYXvXd2aDoE7f52njCysanKtPWcUrRzqvcUrthUpBBQCCoGkREAJt0mJpmpLIZDy EHDChtKKFALP+j3Iken59op0FHlHgn486z04OgZVTiGgEFAIKAQUAgqBlwMBJ0f8OF+OW1GjfB4E bt+6SRnfdk10E8mlwYXfnj1S32V7CKl8hYBCQCGgEFAIpAwElItCynjOdu9ShNunPrjGwvDH1W3H aMqGDy7cGigZdlEwdapOFAIKAYWAQkAhoBBQCNhBwK6AC0f/HDne5lCMtxOskMVWJvk4ytnfvMH0 Xd4Y2x6hvHGHBWyFgj6Mq1ctlbXXfkrKB2Z58uQhRDYzYvqsOGCB2d9bRpiqp+bVZjmyvkXF3HPT 8bNX6M+o27zC2byrnHOdkSafXVMldaIQUAi81AggLGxFjqZ1995d2r//QLLcS43q1WX/V+wOU65s Wfpxxw6bfK1UqfckPPC5cxHPNT64PjnSHzopUMBNgmhgn9rnJbzfjJRUfNzYrrpWCKRUBLS1Qhbv H5Ftgtevo++WLKGNG9ZTyxYtTOXcCxSglcuX08IF8ymY83p072bKM57gx+zLm1B/v3UL9e7Vy5SN MLwbN2ygkE0bCQxOo9atWtKqFctF8NXS1NGMQPny5Wn1qpWCPZ5B8WLFzJlJdIZn9l7hfLRikh9t /Ko3rfyiG5X2yG9x67Ak6lI1oxBQCLwACAwdOoT8/QdQyRIlk200w4cPk+AG7u4FaBhHRsO+tbao He+L61XLy1YRh/Ic7Q+NIYBRu3ZtHWrXXqH+/T6loUMGx/to0dTs1VX5CgGFgGMIWBVwwWDAaI5z RLLWbdrS0mXLqTNHVoFgC+rUqRPduHmDWrRsKRF0fH19WdObw2KvAf7+1K1rV8lzckpjKlOntrfM 1BEZB6FlQQULFqS2bdrQF19OVlvEmJAynyC0ZgBH+vntt98k+lvk1UgaGBBA2ibf5pJxZ0i3pC0w ljNep33NiSqXKkTlirlKVtmiLvQBXyNdkUJAIfDqIlC4cGGaExREs2bPdugmwV9gUbJElvgSgtRY K2+pDUfTLPWFuugLfWpkrVxi09GetTpaX9aOqVKlpr1799E8jgKnfRC0R096jDB+S3xcX0ZfF+X1 96zlobyldrR8dVQIvEoIWJVW3N3dCdFS5gTNFTM4GF6LFs3J09OTEE7x6tWrFBwcTIiPvf2HH6hN m9YSExthGo2EuNx9+/Wntq1bs9nJnIsINTAxoU6lShVl1j5k8CDaum2bhGA0l1RnGgKYAGTLno38 Bw6kiIgIeT7Tpk7hWPC54wXkQEQhfxaEoYV/9PgRhYSE0IyvZ2rN2D3CgobwvHBJgKsCjmn4iHRF CgGFwMuFQM6cOS2G78WEGaRFBUOI9CxZslDnjp3I1cWV9u3bx8qMjtSufQcpB81pvnx5aXTgGJo0 cYJEGcudK7fkrV6zhhYsXCjnjRs14tCxvpQ1qzMhJPAEDuMeFRXFPKm/vEMgZO3atYsmTvoiURHU pHHDv+bNmlHTpk0oE7sbnDhxkgLHjpVwtRhf5syZKTdHTkN/GF+1qtUoL48fYX6HDRtuamlM4Ggq W6YMRfJ7bebMb2j3nj0SSWzwoEESgvjO3Tt0584dcYtApdy5c9FnzINhPbvD7nnLWAG0dNkyU3uO nET9HUWXOEKontzc3DjEeiOJUAmcz1+4QFHXo+i990pKsIpt32+nwxy+HoqmOnVqk7OzM924cYNC Nm+WdykE2A/r1iUPDw+555O/naQtW7bKeb2PP2YteSFWHMXSIb7/77//Xt+1OlcIvHIImKe1hltD fGsQYnaD3Fxd5ZgnTxwzmzZ9Ou1l5gdq1bKF/PDPnDkj18Z/YIZHjhyRZL2AdPToUfLxqUft27Uj nHfq2FHij387J4hjbRcnR7aGMvb1ql+75M9P0Q+j6fz583Krpzm0JSg/+0LrydOzMlWvXo0GsHZ3 6rRpVLJkScqePbu+iM3zh48eU9jx83Ti3BW6dfeBHHGNdEUKAYXAy4MANLKdWUgFD9AThN5ePXuS t7fZ1D96dKCE2l383RKaN38+peeJsnMWZ1O1jBkzmPgyhMfsHC4cAiUELJjvIdCWKV2aevbsIWmf DR5CWZ2zUq8ePUQYdHN1ozFjxoqFrlatWhyWlxepPge9yf7Ctdh1YPnyFTTAP4CVLDlYQPxEWsT4 8A4ZNnwE/XrwILVmBQvGCcG2ZIkSVOn99009w/+1HysETp/+nYYPG0aZMmWS91LFihVo7Lhx9L9Z syhf3rym8lWrVKXHzAuhuNm6dSt17drFhIupkJ0TuOjVZismPl5eXiKEwnKaLl1aUVYsX7FS+szP PH/R4iV04eJF8qz8gbRaqlQpfgdcoPkLFtLNmzcZg1qSDr5fjIXuzXyfUGpAAC9TprQIvEWLFqHv li6jLTxeV5f8iR6vndtR2QqBFw4BqxpcCLghIZupb58+1LBBA54Fxwm2jwwCTscO7YXBDBoyJMEi NHt3u3rNWrrG/aRJnUZmwePHjqE+n/ajCePHsUDtJqEK23H7UVF/22sqxeSnYRePxzGPTQswtPCM TgbXAW3LrG5+XVkLs58C+aViNIHZAg0a27Bj56nLqIVUvrgbhR6LoBNnI+MtMrNVX+UpBBQCLwYC p06dosOsYPCp97EMCBpAaG7rPb0ODQ0zDfTylSuiKYSFTlNymDItnGzd9j2FhobSiePHqVmzprwQ y52Fx3fpj4t/sPC1QGp0696dnFhwu3XrFgtYS1nQLkFvvplB8rI4Z7HQquNJCA08hSfwlVgQrVGj OmVlgfudd8x7c29jayAWhUFgrVC+Ai3jNQsQZv/86y96iy2I16/HuQVMn/6VaFNhUaxWrSphUlCC BVDU37FzpwwIi9E0N7wNbL2Mjo6m6tWq0TuFCkk+BGpHtjPU7g5a5dTsqgBKldps2sT4fmbtNnj7 jRs3RfmDxcTQrEPBAfrhxx9FeH2XFUHQ+moErTuUScf4eYCgCHnE7Wj+vbVq1qDfWRG1dt36RI1V a18dFQIvEwJWBVzcRNDcIHEXgHYwgn8ocIq/yLNIjZo2aUKtWrWisWPH0YEDoVqyw0esmN258ydm dm9S0JxvacXKVRTJDBbMxad+A5o5YwZhlosyiuIQAKOD+wEYLVw7XFxcJAMvFD0dOhROXbr6URWe 0YPxt2ndSq7hXmKPwHhzZctEHRpWFh/cTBnSU93K74pGd+7a3RR5/ZZJwLbXlspXCCgE/nsENmwI FqEWQi40hCVYg5mZIxAuWrzYouuCfsSvp31d/DnBr42Lvx48uC9F792PO+IC/OMJ/2n0z8OHlIqF wWZNmxIUItAgRpyP0LKf61i0SBGa8RVbE9mf9Ri7QoAecn8aQQgFYTx6xUBsTPxYjTF8b1KOhUsQ 3wILnXGuWZLA/3D/Gg3n9SmF2F0MLgNnz52lYsUTv9AXgmh4+GGtSdMRAq6muMB5TGzcWLX+4ffb qWMHuskTBkxe/vrrGr39dpx1DtjrCdijHgRduBt68Lu1aJGirAmuTLCUaooQfR11rhB4VRCw6qKQ Pn16WsLMr7a3t8z+q1bxpGxZs1JoWJwg+/FHH1G3bn7ih3vp8iUqUsRD/LEADH58erOXPbB68Az/ ATPIoLlz6eFThgSf0vTp04k53l79lJQPExpMUj17dKdCrDno7ucnL6iLLPjqCYv2uvCiwB07dtLX M7+hNMwU4btrj8AgPVxz0swhLalroypUs0IRqliigBxxjXTkGxmpvXZVvkJAIfDfIgAh9ypPir3Z HO6ocBvFFjZoe33q1RO3Mfj026Pww0cIZnUItPAFnfXNN2z2Hyp+q9Bwrl27jmIexxcw7bVpLV/T TK5bv57OnD1L99gf9vbtO9aKW02HpQvCcvdu3dj14BELjqfpOGtBvb1qsXa4ovgNV69W3VQfFk30 B2Fd82M2ZTp4AtePPPye0z6OLlhDf/j8/vvv4lIR+ySWt+m8J71eYJ9dKIXwboCfbr9PP2UXhTLi w4udirBofPv27TJhUS6ADj4oVeylRcCqBhf70n45eQr59+9PH35Yl27zPrjTWaMKEw6oceNGcvTx 8WE/Wh85n8gLCeDjhO1UTvAPaRubr/SEmehjA2ODry2YSFe/bmIae8TMBT9ALHaIYG1jOJvTFJkR gEluwoSJFBDgT9/OnkXXePY+KjBQsDOXIllEAV+0oKA5BG0FBN2DB+3v35g+7Ws0snt98qpUlF1H zPMfLDjL7pxR0uGH237YPH136lwhoBB4wRHAQrJFixZThQrlRYCDG4IlimGTduzTyC5YIBYWFkZ9 +vQWPnKX+Y+mSYxhvqLn509YU4i6cAnAzjiwGvmx4Ajr0tx580X7+wH7vYInwfoEvqQJuqiLa7QH rSU+tggLpWLYVesAu0ecPHmSJk4YLwvl8N6Kfarx1I8P5fVaW2hsodHVxg+L2MyZX8t7Djv4QIkA /1Ys6h03biw9in5E16Oum3b2wYKyT/v2pfnz5tKlPy7JUHHvjtITFko/+OB9+Wh1oGEFthq+SI+7 jsNC8GWMsOc8NL+YbEATi7FqdeDaAEWGL7+fsYsC3tfQFMNKCheNrl06S1ksxoNWV5FC4FVGIFXe /C42OQlMUpglX+bVnmAYjpCm3bPHpGy1BQ0ymJUiywiAeWVjfzP41drCGTthgPlh4mCLnqTNTLFN t9HjXePoyKrPKSe7KFijyGu3qKTv5+TkOYhSL/emVMkQyaxRw4bWhmNKX712relcnSgEFAJJhwD4 CPiMZvJ3pGWs6EcgHz0fx7sBLlb32WJni2/hnRM4apTFbuB/Cl9ePeF9AR6nmfb1eY6eY1yYBGjC olbPGg+FxhX3h3v5Lwj9A09LvF3TBhvxsJb+X4xf9akQ+LcRsKrB1TrGj0fvd6ul2zraYly26unz 9ExRn67O4xAAE3bEf0rvj+YIdvceRJOv/yxyz5vNohsCnu3ZS9cJ5ayLwI70pMooBBQCLwsCieUj uC8oRIx8HPwDVih7BFeGDRuDLRY7e+ZsgnRjPwkKOJBgTVC1du8QHo0CpAPdJFkRW31by7OWnmSD Ug0pBF4gBOwKuC/QWNVQ/mUEUr+RmTJ5j6AIXqdw0eydkKDXmHxEmXjHHJRXpBBQCCgEkhoBCMHr 129I6mZVewoBhUAKQkAJuCnoYdu61Tt/naeM88qTJtfac0bRyqHeW7waW5FCQCGgEFAIKAQUAgqB FwUBp7fffvtFGYsax3+IwLN+D3JkMu85+W8O35EVv896D//muFXbCgGFgEJAIaAQUAgkPwJOjvhx Jv+wVI/JjcDtWzcp49uuie42uTS4jmygrr7LiX58qoJCQCGgEFAIKAReSQSUi8Ir+VgTf1Mi3LYP pdj7NxNU5h3CeLPxBMnigwu3BkqGXRQS9q5SFAIKAYWAQkAhoBBQCFhGwK6Ai61ecuR4m8Ms3k6w +hVblOTjKGd///237M1nuQtzKsobd1jANivow7gK1lJZc0vqDJjlyZOHENnMiOmzogPh9u8tI0zV U3MknxxZ36Ji7rnp+Nkr9GfUbd5Cx7yrnHOdkSafXVMldaIQUAi88ghk4H1VK3IAhLv37tL+/Qee +34RhAD752JP1+SiAgXcJOAF+n0R6b/A5HlxQLji0qVK0Y87djxvU1IfcoCekupdp29Tnb+6CGhr hSzeITaSDl6/jr5bsoQ2blhPLVu0MJVDlJSVHNd74YL5FMx5Pbp3M+UZT/Al9fVtTN9v3UK9e/Uy ZSPiysYNGyhk00bCj1mj1q1a0qoVy0Xw1dLU0YxA+fLlafWqlYI9nkHxYokPE2luzfIZntl7hfPR ikl+tPGr3rTyi25U2iO/xa3DLLegUhUCCoFXFYGhQ4eQv/8AKlmipM1bbNOmNRV0d7dZBpnDhw+j d95JHn9+bTAISNSuXVvt8oU7PgsmjuL9b90sIqhh3EbB9Fn6K1u2LA0dMjjeB9HxFCkEHEXAqoCL AA/DOLwiQvu1btOWli5bTp059CsEW1CnTp3oxs0b1KJlS4mO4+vry5reHBb7DfD3p25du0qek1Ma U5k6tb1lpoeoNwgtC0LkmLZt2hCiyTgaWMLUYAo4QYjGgAED6LfffpPob5FXI2lgQABpG3gbIdA2 Azem27tO+5oTVS5ViMoVc5WiZYu60Ad8jXRFCgGFQMpGoHDhwjQnKIhmzZ5tAgJWJaNg06xJEwkb ayr09CQp+ZWttoz94tpaeUtltTRL96blWTpa6wMBevBJDKFvR+skFm9r47A2fmvpGB/GaYkSi53W BtqEZXceR8HTPtu+jx8dVd8nvnv6a3071vCzVN5aO1p76vjyIGBVWnHnWTciuCB8IMzgYGYtWjSX mNxnOYQuwjwGBwfTlSuRtP2HHwgzx5w5c0oIRuPtv/76a9S3X39q27o1m9PNuRkzZpRQggjbWKlS RQnlOGTwINq6bRvt27/fXFCdmRDABAChGP0HDqSIiAh5PtOmTuE477njBeRAVB5/FoShhX/0+BGF hITQjK9nmtqxdwLLEMLzwiUBrgo4puEj0hUpBBQCrx4C4N+WwvdiUg1ClC8QwqhnyZKFOnfsRK4u rjRl6lQJW1u9ejWJqrWBrXJBc+fRjOnT6Q12ZUBIW2j2pn/1FTVu1IiasDIka1ZnQhjgCRzePTIy UtrtwkqTvPnyUvTDaPqWw/kGB2+UdGv/mjdrRk2bNqFMb73FoeFPUuDYsXTjxg1a+t0SunzpMkEI x/3MnjOHdnEIW7jDDR40iBAu+M7dO3Tnzh12vbtlrXlJh0CH8RvvDWHS/+AQvaNGj6YP69ZlhU9H 6t6jpwR+GPzZZ1SyZAm+r6tyHz/99LMI1dJOtaoEJoq0aYyPhqm1QbRr24ZGjxpJD/95SGs4UuP8 BQto+NChFMuhfgPHjJVquI7mgEx52WXNEt7QemIXmn3799F4DvNudAfU9w33gh7du5N7QXd5n0z/ agb98ssvlD17dhrE91Xi3eLskniDVrIFceWq1VIV7/7GnzSitOnS0tmz5iAc1rDT92fvPJpDJF/i KKp6gvKtV88e7M5yi6Os5pRneOz4cSpbpozIEAhjvHnLFsH8o48+JI/CHjLxglJo46ZN8oxgBa1Y oQJlzJiBLrJ8s3HjJvnuVKniySGNy0s7585F0Hr+LtvCSz8udf7iIWB1Knn9+nUZrYdHYTm6ubrK MU+e3HLEj3Pvvn1y3qplC/mSnTlzRq6N/0YHjpF42EjXC0hHjx4lH5961L5dO8J5p44dCcz02zlB VLx4cflRGttK6dcu+fPLC+D8+fMCxenTp+WYn32h9eTpWVmY8gDW7k6dNo0ZbklhUvoyts4fPnpM YcfP04lzV+jW3QdyxDXSFSkEFAKvFgIQBjuzkAY+oScIvb169iRvby9T8ujRgRKedjELkvPmz6fW rVpRdRbcxk+YIIqQVmzVq1q1Co0ZN054FcLqLuGyZUqXpp4smIRs3kyfDR5CWZ2zUq8ePUztRj+K psGcfuToEererZtNreWbLDjXYheD5ctX0AD/AFau5GDh+RPR4EH4xqR+IAtkV/+8yu+VDtIH3jMV K1agsTyu/82aRfnycrQaO2Tt3mbN/pZq1KhOELJ79uhOm1hwgjA9jF034IfqHzCQwlgwHDZkCGXL mpWtkq2pVq2a9OXkKfQlWydr1qhB9ep9bKd34rrZaOiw4SJQwp2iQoXydOhwOFWrWpXgB50hQwaC UBYeHp4AbwirwHv1mjU0bMRwgktgl86drfaJ9saMCaQrkVeoHyukEMEUwjME1RHDhpGzcxYKGPgZ BbNLYQ9+bnieEBQ7tG9Pq9aslnFm5XvVyBp2Wr4jxzfffINqs6VX+8CCDG0snj8Ez8VLvpM1KBXK V6BgFlL37N1LZcuWYcE1I+Xl54utI9etXy+C7bssnENx5+bmRrX5+xzOOC5jy3RGxtDby4syZcpE VatUoV27d9OixUtEFnFxcXFkmKrMC4qAVQ0uBNyQkM3Ut08fatigAeXOFSfYPjIIOB07tBdGM4h/ yI6EYNTjsHrNWrrG/aRJnYZn1Hdp/Ngx1OfTfjRh/Dhyc3UjhEhsx+1HRf2tr5aiz9Owi8fjmMem hWVa6EUng+uAtmVWN7+utG/ffpntX7t2zWHsoLENO3aeuoxaSOWLu1HosQg6cTYy3iIzhxtTBRUC CoEXGoFTp07R4SNHyOep0HX48GF5wWtCWGhomGn8l69cEU0tBDq8JyDkvZ72dSrHPpOgVCyAlC9X TrSUj1nQhIUOPBzvkT8u/iFaSJTrxppCJ9bGabRi5UpZaIbrypUri5BiTcOKd80UnrhXYoEVgmbW bNni+fDCpQ6Lx2DJCgwcLRq5EizgbWPr4I6dO6VLjNeaW50U4H/W7m3SF1+KcN21axc6efIk39NC 0RBjgoAxQ+P72muvy/0VKVKEF16Vpq1bt9IPP/4oTR9igdRaCGCtbxwXLlpEYWFh8qlVqxaVKFGC vvtuKQvVPcSaCmEP2tuffv5ZBD493i2aN5emcufOxRa+XCygOlPDhg1Ec6zvQzv38PCg9OnTs0Z+ miwch4YdkwX0UbRoEYKiCpji48Vjee+9kpIHQRhuhiAc4ZsNsoYdtNeJodSpzHo4fLc02n/gAF24 cIEtmedlnPgOwxoAIRX3gby9e/ZSflYKpWPtMghC/Fu5cvH3MYp+/nmXpM1lFwi4KsAl8h/WlJfj 727GjKcEU1hJFb28CFgVcHFLQXODxF0A2sEI1hjC4RtfZo2asn9VK569jx07jg4cCNWSHT7GxsbS zp0/yWwsaM63tGLlKopk5gltgk/9BjRzxgyZdaKMojgE4C4Cpg3GjBeHNsPEi0NPhw6FU5euflTF s7K8ANq0biXXcC+xR/BBypUtE3VoWFl8cDNlSE91K78rGt25a3dT5PVbJgHbXlsqXyGgEHg5ENiw IViEWgi5EAggTGXmKIWLFi+26Lqg3RXM7BBw/7h0SZI2bQqhHTt2atmmI/jKE/7T6B9WYKSKjtYu WSv8QM7v3b9vSrN2UpSFxhlfsRVx7z46xoIYSC8w3n/ahnZEfqqnrlY4B+H9Y49s3ZvRvUDz84R1 TY/FBd07U+vvLit0HFljoh9jLAtgUAZBuP/pp5+oZs0aBOEP70dbZnRtLGtYoXTh4gVtCAmP/HxA Wp8YH4R13Jfx2aFMahYK2WnNVF5fF+e2sEO+I3Tv3n1xN9CXhesk6BEL9iDsrKApevS7LFTiXT6q sWXh8OEjpFfuyL2Yv4bSDurjA5/yYkWL8logd3ZhKC9Kvl8PHpR+1L+XDwHzdMgwdsyAljBjq+3t LTP7qmwGgaklNCxOkP34o4+oWzc/8cO9dPkSFSniITNuNAOTkN6kZWg6wSV8fh4wQwqaO5cePmV4 8ClNnz6dmLgSVEjBCadP/y5b6cAsBr+27n5+8vKBH5GesGivCy8KxIvm65nfUBo2M8F31x7hx+/h mpNmDmlJXRtVoZoVilDFEgXkiGukIx/lFCkEFAKvFgIQcq/yxBkmW0eEW9w9XA5u8zaS0Jj99tsp 1pjlo2ysUQVByIGmDz6g4SxoQJsGn1BoC2d98w0N54XMz0K5WAsHgvn5DPt93mOB8fbtOzabOs5+ mt5etVjrW1G0n9WrVbdZHpnW7g0CNnb7mTtvHi+8die4ZeBeoUWEr++xo8co6noU+38WFu1g+JHD 5MWYvl+pkpj1161dQw3q17fbP7Sw0Ao3+uQTcmPzvCbMb2LrKnYZKF2mtIxRa0iPN1wkIPDBpxl+ qZnZBA+faWsEH1WUhX8r3i2fDQygFcuXiQB4il3hWrVoKa6Dvo0bkaurq7gdAlOcIw0TIk1rjD6s YWetf0vpWL+Th2UB7QMttKME7fODB//QL7/+ypMJ82QG39Ns2bLK9wDtdujQnq0L9UVpBJyjeNtT jB2TI7Sh6OVFwKoGFzNC+Av59+9PH35YVxjYdNaowvEa1Ji/0CAfHx/54HwiLxjAFwPbr5zg3Re2 bYu/4jEmNoZnSTEoaiL42oLpdPXrJj8kzMq2b98uCxkiWNsYzqYyRWYEMHufwAsFAgL8CQsdrv11 jUYFBppms1pJ+GTBJy2IF2tg5g9B9+BB+/s9pk/7Go3sXp+8KhVlbYF5/oMFZ9mdM0o6/HDbD5un daWOCgGFwCuCAASkRYsWi6/nqVOnrWpuY1jbFftUaMDCJ1iSxjIfwkQavEdbJLyRtbktmjcTIQ+L omDChjXJj12nYHWCeRj0hDWC4FMgTbOpaRIl0fDvQGiouAZMnDBeBEu8r2L5/aLViWE3LtBjbhNC Hj5wI8Ai3XHjxtIjXrx0Peq6qS9D86ZLa/c2fdpUOsBuG7gftAX/5R94sTXucdTnI2jmzK/lntbz hAEa3QXct2t+Fxo18nPBCAu3trDLgi0CJnBHwyJi9LFu3XravWePVIELiUaa0ItrI97wf+7SpbNY /WC+HzlqtFYtwRFaZSyag1si3uF3eRHeF5PjdjPCfY3msUNrDsFvMSu/NKstNMOdO3UWLT7uFeMG WcMuQcdWEvAsoWiDAKoRFDxr162TS60fLLjDB2RK47pwpcDWc1D03GRNNNpDOVgxf961S9xgYKmA u8JOdpvAAsV79+/xIsjGosABXhCOFb28CKTKm99Fp6xPeCNYsYjZ8mVeyagxnoSl4qdo2j0wlWcl fLFtmV2etd1XpR7MRtCSwPRiC2eYc/DD1sw51u7/SdrMFNt0Gz3eNY6OrPqccrKLgjWKvHaLSvp+ Tk6egyj1cm9KlQyRzBo1bGhtOKb01bzKWJFCQCHw3yCAdwV8GSEk60nbikl7f+AaWk57/B3m5dYt W+mbMp3PZO0vTMd4T4C3aSZqUwEbJ0ae2LVLF/EZNlYBX+3br58EMbJ2b8Y62jUWS+N+jXwX7eD9 GM2WSkfuD+0Zx4s0KIa+mDSRFRhBpt0MkA6yhDfGA+UI3uWBo0bFFTT8h38wBGIQFnGhvJEwFmCt PUstHwvR0K/eTUTLSyx2Wr2kOAJrfNeAt/E9iXcoxo08PSENlJjvlL6+On9xELCqwdWGiB+o3u9W S7d1NH6RbJW1lmeP+Vmrl1LSIbRqC8ls3bMlhmOr/L0H0eTrP4vc82az6IaAZ3v20nVCOesisK0e VJ5CQCHwKiKAd4VRoMN9GoUhXDvC38+di6ANG4MtQoWFbiBH2jE2YOSJWMSF3RaMBF6nlbV2b8Y6 2rVRyNfS9fg4cn+op41BawM+olMnf0nYGgs7BxjJEt6asHr79m2rmJ49Y97iSytvbNs4Fi0fwqA1 gTCx2GltJsVR/wyN7eEdahRuUcbafRjrq+sXHwG7GtwX/xbUCJMCAWhwqX0oIVwvr8Vg9wTrrcIy yZssUOo3uM688kqDax0qlaMQUAgoBJIcAWgfIaApUggoBKwjYFeDa73q/9u7CvCqjqY9hFCKe3ES CBKcUIomeAL92+LuHrRIcUrR4rTQIh/F3aG4VCiF4sUdQoAGgrsT4J93kr05ObmWNA202eEJ55z1 8957d2dnZmd0zn8JgYc3LlIyZlYVXxvRUjrym6pyqJecT1pr0ghoBDQCGoHYQUAzt7GDs+7l342A Kxwha9IIRPd7kD5F7MSPxylsRxTdd3DUrs7XCGgENAIaAY2ARuDfhYCrM3ac/65X0qONDgIP7t+j ZB+4R7lqbElwYTvmiPR32RFCOl8joBHQCGgENAJxAwFtohA3PmeHbynMbZgNrrkw7HENbgQt2bDB hVkDxYIXBUun+kYjoBHQCGgENAIaAY2AAwQcMrhw/ZE+/Qcc0eRBJLchcMGRlaOc3WHHyPCh54hQ HqcajQQXHujDfBrWWlljvbh+D8wyZ85MiGxmxjS62OCA2Z3NgyzVXfi0Wfo0ySm/RyY6EXCVrt9+ wAcbwj+/1FWHWGx2LZX0jUZAI6AReIsIeHkVkQhc8FLwbyGsdxUrVBC/q7bCE0flXdCekWJqjTC2 qe81Au86AuqskNVxepcpQ+vW/EiLFi6k9WvXUONGjSzlPDiqyvKlS2ne3Dm0jvM6dexgyTPf4MdW l50n/7RlM33epYsluyDHBl+/di1t3LBeftwqAxFiVixbavHnp9L1NRSB4sWL08oVywV7fAYF8ueP cWjwmRXJk5WWjW1P67//nJaP60BFPbNZdR0W453rBjUCGgGNQDQRaNG8OflW9o1S7WbNmlJOD48o 1YnJwvC9OpCjumFd/buECGdfDugf4Q/R4zRpBOIaAjYZXDhnxg/uBEcka9qsOS1espTackQQ9QNs 06YN3b13lxpxiEJEvqlbt66EurMGYO9evaiDv79kubrGtxSpWsWPft22TaLBILQsCJFmmjdrRuPG h0ZQsRTWN4IAHHb37tmTQ2KeluhvwdeCqU/v3uKw2hpEmDjNu3lr5cxpCRO4krdXLvoov7tkFcvn RmX4GemaNAIaAY2Aswgox/nOlLdX1l6erbadrdOgXj0JT2tux9n6qp6t8rbSUS+6eapP8xUuxKAR nc1R4tTf1p8iRhVFGfwpgkbQTOYyxnxr5ZFvK91YV99rBGILAZvcigfvZhG1ZMbMWaIGn8ERUxo1 aigxvBHq7tq1a7Ru3Tq6ejWYfuYQhdgBZ8iQga5zHHMzIZ50tx5fUPOmTVmdHp6bLFkyCf2LOqVK lSQw1QP696MtW7daQj2Gl9Z3QAAbgLTp0lKvPn0oMDBQPh+EcszEMbWNATkSJ05MvZgRhhT+ZchL 2rhxI02aPMVpEKHhQnhemCTAVAHX+Hw1ab6cbk8X1AhoBP79CGCOx9xvJmy8QcYAB3Vq1yZIDuEB Zfee3TSKQ4y3a9uWYELQqXMXSpcuHX0zbix9P2kyHTt+nPr37UuFCxei4OBrNJ1DjG/n8KkgtFOP BShp0qSWcqM5JDzCqNqj0qVLURU/X+l75x+7aOSoUdSHBS0I1Yqws6CvvvySXnBwiixs6pWYI3d1 79ZNmNzvvv9e+jSP3WxGZ+wfUSUx/kKFChIOxC5fsZKFQkvkHfshvWABNuW7y+nLLZHHMDd37NBe oouZQ8Jaw85e/8ax4P4Fh/YN4uijZoIWNnHiRJQyZSrJ2n9gP+XLm5dSp05Nly5fpuXLV0igg08+ +T/yzOMpwhEIU9Zv2CDp7u7u5OtbmTKkT0+3bt3mtXqLrOEIiQu8U6ZMyTzADVrLvIG174l5PPpZ I/BPIhC+hTP1cuvWLUnx9Mwj1+z8xQZlzpxJrhO/+4527d4t900aNxKbp/Pnz8uz+b9hw7+mo0eP SrKRQTp27BhVq/YZtWzRgnDfpnVrwkQ5fcZMCUXojGsoc1//9We3bNnoxfMXdPHiRXnVs2fPyjUb 20IbycfHmypUKE89Wbo7YeJEXjgKy2RrLGPv/vnLENp/4iKdvHCV7j96Klc8I12TRkAjEPcQyJMn D7Vt01rmEuPbg+nt0rkz+TGDo6iolxd17tyJVq5aRQMHfUUwRwNzu5DN3VKlSsUmbR1Z89SLLvMZ gu2//04DvxwgzFGv3n1o/4EDNHDAAEqbJg19WLSotLNx0ybq238ApUmdhrp06qS6sXnNmiUL/e+H H2j4iBFUokRxWWMOHTlM5cuVo6TMzCZNmpTKlvWhw4cP09cjR8qcijC1CxctJFtjt9kZZwz6aqDM r3379ZfoYv7+7YRZHjRwIDOPqah3n760jk3xOvHY8U5Y277ivHO8ZvZgQYTRr210+jePLUmSxFSF NaTqT2lewdy+z+GNl69YwWtIIPl4ezMGR4TpxhoCAUoWxg4uF39cs0YY24LMnEPghbW5Pku67929 S/MXLKRbt29RLQ6hDqktmFsIu36YPoMZ31vCNJvHpJ81ArGNgE0JLr6kGzduom5du1LNGjUoU8ZQ xvalicFp3aolVa5UifrxhGQrvJ+tl1q5ajXd5H7iu8Snh3xIbdSIr6lr9x40etRIyu6eXUIUtuD2 b9++Y6uJOJcen008Ql6FWA6WqbCCribTAeUyq0N7f9q9e49ILW7evOk0XpDY7j9+kdoNnUfFC2Sn fccD6WRAcIRDZk43pgtqBDQC/3oEzpw5Q0dYUFHts0/lXY4cOSJMz2dhz/v27be8Y5kypeU+U6aM rF3KKBLCmjVrEAQjkKaOYqbyyePH1LxlK1HRYwOOw1XYlCdI8B65sjYvL0sW8+TJTX9d/ovmzJ0r 7XVgxhh5jgimb1u3hqrlvYp4sQS1IDNlC6gzM5g+Pj6inof0Fsw1JKMhrOWCJhFrTaOGDW2O3Vq/ 0HQifC4kw5DE4g8MOQ5e58uXlyDgOXjokPz5Vq5MRYoUpnhsHvBewvdY+PAd3WWGEX3jrAvIHnbW +reV5hIvXH6F/hRBmAQBSRLW8oGh3b1nj6wnkDwnYub3BIcA3sVS72wsTHn//YRSDZsCfI7Qxm7a tJke8WcXFBTE0uDEEor5Hn92YIKhLYTQ5TR/VzRpBN42AjYZXAxs5qyZYi6AnV0g/yBguG5Ug2M3 16RJExoxYiTt3bsvyu+CXetvv22nJPzjmTljOi1j9UgwxxiHpKBa9Ro0ZdIk2fmjjKZQBOA1AZNK elYRYVJ0c3OTDCwCRjp06DC1829PZX28qWLFCtSsaRN5hnmJI4LNbsa0KahVTW+xwU2RNBF97F1Q JLqzVu+k4Fv3LQy2o7Z0vkZAI/DfQWDt2nXC1ILJBfNTqFAhSsmRDME8WlNJ/8VMEGgVCzMuXb4k 90YzBpzuV7agYLpU+Q0bNorKHBrEN/xP0bPnzyneixfq0ebV6DXg1atX5MLmVhDAbN++nSpVqsjh yF1k7bGn9ldjMY7dZoecYewTzCKeMZcax481z4UlnuqdleTWaLqn+ohq/6oero8fP6FNmzcbkyz3 IWFCKozvFft/VONWYylVsiSVL1+Ojhw5StaEIurTQPknT55Iu0uXLpMNCSTF2PDAZGHV6tWWPvWN RuBtIBC+rTP1jp3cQp60qvj5ya69HKtzoDLatz+Ukf30k0+oA9sPwQ436EoQf7k9CTa1oDatW0VQ V5majvQIddVT/qHMnDWLnodNXrApTZTofVEdRaoQhxPOnj1H9+7dY0lER1GBdWzfXhYWqPqMhEN7 7fhQ4LZtv9HkKVMpPh82g+2uI8KE7OmegaYMaEz+tctSpRJ5qWShHHLFM9KRH52Da4761vkaAY3A u48AmNxrvLn282WbSxvMLcwMwDjBnAoq8JQpUpC7m7uYBgxgNT6kgNdv3KD+/fqJpg7SYbiMPH7s ON1m205PFnJA9X2YmSxIEmEP6+npSdOmTmXV/pcOQSpfrryYIJQsWULU55BKgjawVhJeBop+WFSk rKohMN2QrMJ0wNbYVVnz9Tkz3adPnxEhAuxZ69apTZs2bqDMvIadYWlmk0aNxeQO6e7u7mKuh/cN YQkybHAh/W3PJg2Kotq/qme8QtKK/tUfbGydJZiQPH36TCTRYIAVwQQBGkN87jBLASPb9fMuIoGH 1Dsx8ww4jwMhTKpUOny7wk1f3x4C8ZOnSDnYWvf4ImMCaspeEurwDzNrlqw0ddo02rNnrxTvz4fB YFAOaSuYXfwF/RUkNkW9evWkhDxZ/f77jghNV65ciZmz+7R3X7i0t0CBAuJiDDZKt27fZuP4F2wD lJk+5x/OdT7MMGv2HHrJE4GmUASAxaVLl6gm2z7Vq1dXJheoxsyHLqD++5QPCjRv0ZwqsQT3Nz6w sWz58gi2XhEwdX2f3hRoSvGC/qCJfRpSVe8ClDTx+3LADOVw0CxJooSUPUtayvRBStrw+1FydS9L 8U7Mp3ivnkVo6p94wMLhiE7xYQhNGgGNwD+LANaGk+xdB5JRmAJYk9wGBV0RhrUJrx+1atVku8/3 WYAxW2w43dyyiUkb2mjNwhBoolasXMWuvSqJRhBap9937KQtW7bQFT4oBWlnwwb1Zc57/OgxfTNh gmzybb2ln68fM8cuVNWvCtugVpGxjv/mW1lH0FcLnhNBY8aOtTSRJElSqs7nQaAZW7R4idWxq3Mp lkqGG9jyli9fnsffWGx4ccgMngsOsxkH5t/GfE4Fa91Sduu4bt16YeqxvtaqWUvwAZOMg2pgwP/8 82CU+zcMRQ6tQeDkxXbQ6g8bETD5XkWKiFQW0uE03F/u3Llo167dUr3Yh8UE77PnzslYcfAbQhFs PJAGk4QbN25SsQ8/pNKcl4I3LTBjxHsk441BuXJlww6Lv0eb+bO7e/eecVj6XiMQ6wjEy5LNTWkc rHYOzwYZM2aULz4mNGdISfeU6sOZOuYykCDbUx+Zy8e1Z0z6mBChQrKHM+zDoEpytEl4kzAlva6/ lUJ2jKSjKwZTBjZRsEXBN+9T4bqDydWnH7ks9aN4sRDJrDYz9I5opVaJOYJI52sEYhUBSGFxOMnZ 8xkoi3XGPF+hHTBaWBOwHg0fOtTqe/zy66/MoC6WPKxdmCfBPCoCkzlu7BiayV6BwIQaCX2A1Dpn Hvs348YJU2esg3toMAcNHiLJmG9RX52NUGWRjjTVtkrH+PDOStWv0nE192/M+6fvsYYDbwicrK0v eB8jrhgP3gWYm9P/6bHq9jUCthCwa4OLSphojHa3thoyplv7QRjznbnXzK19lMC0qoNk9kpGdbJ5 /PQF1e01jTxYUqs2Ksb28dkGBN0ilLPNAhtr6HuNgEYgriIAhs5Z5hYYGe1zjZihHbUmwL517fp1 xmzLfcD5AMu9mUmGKcCEb8bTcZZkrlu/wVJO3ZiZT/PYN7FUEl4IzASTMUW25ltb6UY7VtWGupr7 V+mxccU8b2vM6N9aHt7FWnpsjFf3oRGwhoBDCa61Sjrtv4cAJLjUch8hXC9bI7BnC9vvCLMsdrJA Lom5zuziWoJrGyqdoxHQCLxDCEDKCEZMk0ZAI/DfR8ChBPe/D4F+QyDw8MZFSsbMquJrHRmjqHKo x3bcGkSNgEZAI/DOI6CZ23f+I9ID1AjEGAKucOisSSMQ3e9B+hS5YwU8Z4J+RPcdYuUFdCcaAY2A RkAjoBHQCMQaAq7O2HHG2mh0R28NgQf371GyD9yj3H9sSXBhd+eI9HfZEUI6XyOgEdAIaAQ0AnED AW2iEDc+Z4dvKcxtmA2uuTDscQ3uEC3ZsMGFWQPFghcFS6f6RiOgEdAIaAQ0AhoBjYADBBwyuHBV kj79BxxG8UGk07A4ZZ+Vo5zduXNHwhI66Cs0qgufzjQSXJGgD3VCVuWh7ZjwxqDa+69dgVnmzJnF qXZM4YQDZnc2D7JABd+36dMkp/wemehEwFW6fvtBhFC9qasOsdjsWirpG42ARkAj4CQCCAFbkiNn PXr8yOJj3cmq0S5WsUIFCZsLe9yPOOgDfPnG1ByKQXl5FZGwwxcuBEZ7jOaKtjzamMvpZ42ARiAc AXVWKDzFcOddpgytW/OjxMhev3YNNW7UyJKLkHzL2Wn1vLlzaB3nderYwZJnvsGPs27dOvTTls30 eZculuyCHB98/dq1tHHDesKko6gpO8tesWypML4qTV/DEShevDitXLFcsMdnUCB//vDMGLrDZ1Yk T1ZaNrY9rf/+c1o+rgMV9cxm1XVYDHWpm9EIaATiGAJffjmAEBiocKHCsfbmX301UELJenjkoIEc FQ2+W2OSWjRvzkErfGOySfqiR3f6ckD/CH/wB6xJI6ARsI2ATQYXP3r8+E9wtJmmzZrT4iVLqS2H fgVjC2rTpg3dvXeXGnGkmvnzFzADW1eiwFjrqnevXtTB31+yXF1DnWnjoWoVP9k9z5s3nxBaFpQz Z05q3qwZjRv/TSSn2FIgjv8Hp+C9e/bk0JCnyb99Bwq+Fkx9eveWiGbWoHHlEL3Wdv/WyhrTEiZw JW+vXPRRfndJLpbPjcrwM9I1aQQ0AhqBmEAAkTBncNCFaT/84FRzmMugvbJGmOvMBLdgtsqby9p7 Rr/W2rdXB3m26mBMtvKstRkvnotEHJvNkT3VH4L8GMn4nsZ7W2X+Trqxrr7XCLyrCESeEcJG6uHh QYhWMmPmLFGDYxJq1Kgh+fj4UMCFCxKecd26dYT41Ig/3axZU4lPjVCIZkJc7G49vqDmTZuyKig8 N1myZAQ1DuogLCCY6gEcAnjL1q20e8+e8IL6zoIANgAIn9irTx8KDAyUz2fihG8pE8cdNwbkSJw4 MfViRhhS+JchLzmk4kaaNHmKpR1HNzyfkysb375mh7cwVcA1Pl+RrkkjoBHQCNhCIEOGDFbD92Jz DlLBHP43dQqlSpWK2rZuQ+5u7rR7924WnLSmFi1bSTlIQrNmzULDhn9NY8eMJqwXmTJmkryVq1bR 3Hnz5L5O7dpUjwUsadKkpmPHj9PoMWPpNod979XzC1mvwJzu2LGDQ/OOk8hcUikK/0Hggj4Scbjh A3/+SSNGjpKoXXNmz6LOnbtwJLMrEr62J/fXoGGolrN06VJUxc+X4P1l5x+7aOSoURIEAe+RNk0a Ss8Ybd36E02YONHpkdy+c1v6MlbAelywQH6Kz8x9csbn8OEjjGlKcnd3l3DGCIGMUMoQTFWtWoVS p07NIXTv0sZNm2TtBaYIUZwtWzY2E3xGe/fupV38OQDL6tWq87qSkc0PH8saf5yx1aQR+DchYFOC q+Jue3rmkffJzj8YUObMoRPMxO++kx8C0ppwnO379+/T+fPn8RiJMEEdPXpU0o0M0rFjx6ga/7ha tmhBuG/TurWELZw+Y6bEwnbGNVSkzv7jCW48Eb14/oIuXrwob3r27Fm5ZmNbaCP5cDz3ChXKU0+W 7mISLVy4MKVLl85YxO7985chtP/ERTp54Srdf/RUrnhGuiaNgEZAI2ANAUhk2zKTivnGSGB6u3Tu TH7M9CkaNmy4hKhdsGghzZ4zhxLxpjx1qtQqmxnapMIgIiFlypSUjkOTDx8xQpizFi2aCxP2YdGi zGR2krS+/QdQmtRpqEunTmK2ld09O3399QjRBlauXJlKsGlXVCl9+vTUsmULmr9wgQhpkiVNJu8G 6SvG9F7C96RJMO9gXBVlzZKF/sdSaYy3RInissYhD3Wwro1kJnnBwoWquFNXmPRVYa0n/nx9fUUz h36xSdj26zbavv13KlrUizF9ysz/fMmHjTHIy8uL14xLNGfuPGF8K1eqLOm1OAQ6xrOETd0OHjpI lSpVFEFV6dKlhaHHWnz4yGE2ISkk5fV/GoF/EwI2JbhgcDdu3ETdunalmjVqWHbOL00MTutWLaly pUrUb8CASIfQHAGxctVqusn9xHeJTw8fPaJRI76mrt170OhRIwmTE8L+teD2b9++46ipOJMfn008 Ql6FWA5FqJjnribTAeUyq0N7f5aM7KHhPNGbVVr2QIPEdv/xi9Ru6DwqXiA77TseSCcDgiMcMrNX X+dpBDQCcQ+BM2fO0BEWZlT77FN5+SNHjojQ4rOw53379ltAuXL1qoSCh4RRCVQsmVZutrDEc9++ fXSSQ+02aFCfcuTwYMarIP11+S9m3OZKjQ4dO5IrawIhcFm0eDEzo4UoSZKkkpcqdSorrdpPeszr Ev7ACH7AAoKZs2bJAbW0zGzbIxxcg4QW5FXEiwoxc6po0+bNtGPnTvXo9BWSaBc2VQDFcwlXhV65 clXCD+PAHoQawAhS5YuXLjH2CaX8L7/+Kkx/wQIFKHv27JIGJj1Llsz0449rRJoLbSokwAitDPxS MVNbvlw5usCawh/XrJE6+j+NwL8JAZsMLl5i5qyZYi4A6WAgSwxh5G5Ug9evV4+aNGlCI0aMZNXG vii/N06x/vbbdp6AktDMGdNp2fIVFMyTHqQA1arXoCmTJhF2rSijKRSBv/76i+OhJxZ7Z5h2uLm5 SQYmeSMdOnSY2vm3p7I+3lSxYgVq1rSJPMO8xBFhIs2YNgW1quktNrgpkiaij70LikR31uqdFHzr voXBdtSWztcIaATiFgJr164TphZMLhisQswopeRoh/MXLLBqumBEBxJRFU7XfPjr6dMnUvTxk9Ar HjBXveF/ip6xUCTeixfUoH59gvBl85YtvHYFquwoXx8xs9eiVWs5BF2iRAmqU6cOffPtt2IPi8be TxhqdgFvQEYyemV49eoVubC5lyIIbqJD0IKCATVTCJuggRQKr8JCEb9hIQUIjGyb1q3oHjOt2IDc uHGTPvjAujYP3owgNNm58w8KDr5GOdlU0ce7DJUuVYpN3CbrczGCqP7v34JA+K/ONOJEiRLRQp6Q qvj5yY68XFkfUcHs2x/KyH76ySfUoUN7gh1u0JUgypvXU2yk0Ax+TEZVlKnpSI+deNf9lCct7I6f 8+QEgk0pbJ6gjtcUjsDZs+dExdS5U0fKlSsXdWzfXhaNy8z4GgmH9trxocBt236jyVOmio0WbHcd ERYMT/cMNGVAY/KvXZYqlchLJQvlkCuekY58lNOkEdAIaASsIQAm9xpvwP1Yle4sc3ubtXlQuVf7 7DMxUcP5AUd0+MhRsR8FQ+vp6UnTpk6lr/hwNGxHERxm9eof6VWIo8DjtnsBgzdk0CAKCgqibydM EMkm7IAh4XzFjOCnn34qTCBM7YxUvlx5KstrZsmSJcQW9wRLnf8uwXwjM6+L6s/ZQ2rAFH/nzp0j rB+v37wWu1owsjhD4+3tTVnY5SS88/Tp3YuZ3w9k3c+TO7echYGwJGnSJFE6FPd331XX1wjEBAI2 JbjYyY3/5lvq9cUX9H//9zE9YD+437FEVfn2q1OntvRfrVo1tqOtJvdj2LgfxuuV2GThJHtfUCoa NdBXr1/x7jDiZFOAVSZ+vpXFI8DLly9FZfXzzz8TDiAEsrTxMKu4NIUjAPXR6NFjqDdPRNN/mEY3 eTc+dPhwwS28FPFO/zAfjKhFM2fOoNcsQQCje/DgIWMRq/eJEiagIR2rk2+pfGw6Er7/wYGzdKmT STrscFsOnG21vk7UCGgENAI4SAbvOrA/PXPmrE3JLZjE12FRZHBAbP/+/dS16+cyZ0F6Ci0fCFJQ 49rxhtNR9+ChQwQvPNBQtWdzLGiyZs2eIweWy7AdKeY/aLowBypGF3XxjPYgaTVKW82f3KXLl0Wg MHz4MNnUQwIKdT3WqsVLllDDBg1kfQRzriSnr/h9bt2+RV+yTTAk0piLMSaQ+T0k0Yn/3jBTWqZM aflTxXEAXHAIw09hZbzC1OwRm1hA8osNgw8zs/fu3bPguobddNbmdQI2zai3Z89elvDeoHN8ngaH z+DTF2aJWD+iK3lW49VXjUBsIxAvSzY3pdmw2jfURPC3d4VtevDjdIaUdM/exOGoHUiQzcEfHNWJ S/lQ48EODHa19nCGJwxMXJiQ7dGbhCnpdf2tFLJjJB1dMZgysImCLQq+eZ8K1x1Mrj79yGWpH8WL hUhmtdkGzhGtXL3aURGdrxHQCLzjCGDOwpz2Ikyb58xw4RYLZgLGNQPrEMy5nrB20N4cifVt+NCh VruB+Y/yWwAAMY9JREFU7SpseW2NCesj+laeIYyNIA/z9LvCGELiC0ysrQXIA0bmNR7vjfKKaTa+ n77XCLzrCNiU4KqB48tttLtV6fau9iYTe/WMecaJypiu70MRwISjDpLZwySqk+vjpy+obq9p5JEl rVUzBHy2AUG3COVss8D2RqTzNAIaAY2AbQSiOmehJTBm5jUDcxU0Xo4Ipgxr16+zWizgfICk2xoT 1kdrDCMq2Uq32lEsJKoDyda6spVn672ttaHTNALvGgIOGdx3bcB6PP8cAi6JU1IKv0EUyOa1l8Ot EyJ1+CorUYosRCivSSOgEdAI/JsRABO8Zs3af/Mr6LFrBDQCVhDQDK4VUOJi0sMbFynZ7OKk+FpH xiiqHOol5xPSmjQCGgGNgEZAI6AR0Ai8Kwi44sSkJo1AdL8H6VPkjhXwnAn6Ed13iJUX0J1oBDQC GgGNgEZAIxBrCLg6Y8cZa6PRHb01BB7cv0fJPnCPcv+xJcGFnZwj0t9lRwjpfI2ARkAjoBHQCMQN BLSJQtz4nB2+pTC3LffR6yf3IpWFj/IwTzQR8mCDC7MGigUvChE61g8aAY2ARkAjoBHQCGgE7CDg kMFVLr9UG2YPCXBVBemasy5d0J6xDbh2gZsV8wlYcznVv76GIgDMMrNzbkQ2M+L5d/ABc3tn8yBL Ey4u8Sh9muSU3yMTnQi4StdvP2B3MeFe5VJXHWKx2bVU0jcaAY2ARiAGETCvQWg6puY84zARrCht 2nS0Y8cOY7JT9zCh+qhYMUKI3n9ibLYGUb58OYk4Bv+8/ySZP4PYfMd/8r102/9tBOwyuG05Elbj Ro0iINCkaTOJ6lLUy4sG9O9HaZjBhcNtBHiYMPG7SH70VGVEUpk9a6b41G3WvIW4HkMY3vFjx1KC 9xLQsGHDZXJA+aZNGlON6tWpXoOGNttT7cbFKyLO9O/Xl1KmTEm3bt6iwUOGSCzymMQCE1qRPFlp Yp+GEq73wMlL1G30Yvrz1OVYncBj8p10WxoBjcC7hUC5cmU5CMR1CSFrbWTZs2eXdcOYd4WjijXm dejvUqpUqQjh5hFCGJ4U6tapSwXy548Wg+vhkYMGcgS1HTt3Oi3sic748+fLJ+HrlyxdKtU/79KF Dhw4QCNGjopOc07VKcaM+8dVq0Qoe+7ceVJjiJChHzQC7xACdhncVClTcUzqnbRw0SLLkK9duyb3 XTp3kp1j9y96Epjdbt26CoOKsH7WCBFf4FAbBOkjqGoVP6mDSDMILYvdb86cOal5s2Y08KtBmrkV lCL+h41C75496fTp0zR7zlxCyN4+vXtTy9atJYZ4xNKhccjhIzKqO+6ECVzJ2yuXMLdos1g+NyrD z8fPX6VnL+wHjTCPQT9rBDQCGgFrCKRIkYLK+vjQ2nXr6YiVqJUqmiI28Teu35Amnj1/Zq2pSGkI XmDNvyvWH2zg06RJQw0a1CdE8wKDO/6bbyxrk2rMVhu20lU9R1djfYwFY7I2VmM5tJkvX16qWbOG hbls0bJVpHrmOsax2MszljPeI1gFNKxLloQy1ch7ws9GQhmQCgiB9zEHjTCXMda3Vh75ttKNdfW9 RsAWAnYZ3NSpU0n86mfPnku4P0TNUoSJaecff4gkFnG5weAizRqBsa1fvx6tXLmSwwKGhvhFuWTJ kknoXzC4pUqVlPCKkApv2bpVYmBbayuup2EDkDZdWurVpw8FBgYSwjVOnPAtx17PFCEgByL49GJG GOEZX4a8pI0bN9KkyVOcho/nXEJ4XpgkwFQB1/h8RbomjYBGQCMQEwisXRsaYKHaZ59Kc9aYXGQg 3G9wcLCly5o1alAtjm7YolUrYaTqcuj4ap9Vo6bNm3OI8trUoH59gtnA7j27aRSHNgeDNnbMaErL TG36DBlo+/bfCdJj0MzpP0hY+gycnjt3Lho0eIhEiezfty8VKlRQTPCWr1gpoXkzZcpIfXnuhaT3 IYfABdOHkL3OEIQTixctlLDFuXPlouscEveXX37hkLjVCZE7N/AcPWHiRGkK7wOJMtbgo8eO08hR oyhP7tzk364duXKEtDU/rqa27fype7duHK74IC1fvoI+LFqUOnXsSNlzZOcw94E0ecoU+vPgQUkf OmQwnT13jooULsztHaNvJ0ykixcvOjNsKfOChRpBHM3UTNDwJk6ciLWJqSRr/4H9lC9vXh53akKY Y4wLjPsnn/wfeebxlI0FhDPrN2yQdHd3d/L1rUwZ0qenW7du89q/RXiC3PyuVfx8RUt5nTc2a9et sxnu2Twm/awRUAgod6bqOcIVKpymTZuKimj5sqU0buwYwo8UNHvuXMmb9N13PEFM5x/UBYljHaGB sIcvenQXZmzFylURso/xD60ax7tu2aIF4b4NSyHR/vQZM6lAgQIyQUWooB/ILVs2evH8hWVyOnv2 rKCSLStHXzCQj483VahQnnqydBeTZmGe2NKlS2coYf/2Occf33/iIp28cJXuP3oqVzwjXZNGQCOg EYgpBMDkHjl6lBnUT2WestYumKDPPv1U/jw9PenAn39S1mxZyatIESlexa8KHTt+XLSJnVm7uHLV Kho46CtR57dr21bKwKQLTO9IVufPnDWLxo0bL+lDhw+nPXv3UtKkSYWhQuKgrwbKfNm3X39at34D +fu3o1zMlJYrW45CeA7s1uML2rJli6Q748IQbUIaiTX14cOH1KNnL3rD0Sjr1KlDY9hMb8HChVSj RnVhrIt9+CF16tSJ1m1YT3369hMmd9DAgcKsruJw5Pfu3aPuPXowQ3iLx5uCkiZJyn9J6Ouvh9Nl PpPRrXsPueIZ6VhTk/C7BQQEUB9+n/TMTNZiKXBUKEmSxFSFNa7qzyNHDqkO5vZ9Zs6Xr1jBa1Ig +Xh70+HDR/h5JWFNgkAmS5YsBBeOP65ZI4xtwYIFyMPDQ8YFE5F7d++ymchCunX7lmxagBOY26tX g+mH6TPkPcE0a9IIRBUBuxJcSFZhcoDJIB/b/owbM0Z2Wxs3bqIqvn704P4DCuQv9Rv+l5cnHUwA YFSN5Fu5skw62G2aVRYrV62mm/wjje8SX3bDo0Z8TV35xzl61EjK7p5dYni3aNWSbt++Y2wyTt/H d2VV1qsQi8mBUmu5skmBkZTLrA7t/Wn37j00/OsRZJTAG8tau4fEdv/xi9Ru6DwqXiA77TseSCcD giMcMrNWT6dpBDQCGoGoIrB1608socxDfr6+Vk0VoIlSB5FdWLOEyGPHWbJZsWJFusGaxZy5cspG Hpt6ECSt+IMkESr9iSyIAW3avFnsZHEPZhB06dLlCCF9EyZMSLB1xZwJRhp/OGNy584dZrquio1t hfLlCVJYEBjnqNDSpcvkHSFdhXYTmlBIV1u2bEEpmAEvUqSwaOPmz18gzc6dO48GfjlA1k/M4Qif e4EltEYC0w9GFu95lxnGyyw9LV9+JeXJk8dSDIIj1P2D+8vrGXWG0SVeuDwsXphJAhrHmn+RpcFJ WGsIhnb3nj2yPuHwOSTTJ06coF1/7KJsLJx5//2EMh4w3vh83uPzN5s2baZHbCISxLbV0DyCT7jH WmEwwdA+Qohz+h8+RGcBSd/8pxCIyBWZXg2TDr5YiKkN1RFO7Lu7uckXrwDvwnrwLvbgoUOidpg1 c4bY0ZoZ3Lp164hdDlQnSvrbt09vVrmMlh/Fb79tpyT8ZZ85YzotY3VGME8g+FFWq16DpkyaJDtw lNEUigA+A0wC2IVjA+LGnwfor8uhk3VoKZKNSTv/9mzf5s2LQAVq1rQJ4TmAJe2OCDZhGdOmoFY1 vcUGN0XSRPSxd0GR6M5avZOCb923MNiO2tL5GgGNgEbAHgJgELFOgHDgyxrBbMBoooAyUOnjDAIk mmDojjMjpRjcv5hZAq1iIcqly5fkHv+BwXOWjOcWwKxhHRw+bCjlYiZu608/81waQPkL5He2OUu5 5y9eyP0bdkjzMkwjpmxXkQHm0fgMARLmZPzZIsVwqnrq6sLSUBAOgqt3f/z4ia1mbKajDjYH1ggS bRDwesX+JBVuagylSpZkZrsc8xBHrQpZlF8elH/yJHRs2ATkZaktJMWfsWQfJguQXmvSCEQFgfAt mZVa7f392d6ot+y0KleqRO7ubnTq1GlhrKBegboiB9v7lC3rIztRNQG1ad2K/FjFAMIBtclTpsqu eT+f9gQdPHiIYLerCMzvU/5iQ1KsfvywKU2U6H1Rx6ty+kq8mz0nEzomdkjMO7ZvL7ZJShqhMMKh vXbsBWPbtt8E//h84AK2u44Ik6inewaaMqAx+dcuS5VK5KWShXLIFc9IR769ydZRHzpfI6AR0AgA Adi9tm3ThlJyuG8wt+oQszPo/LZ9uzCDjRo15DMGm6QK1hgwWDDjgqo8JZ8LcXdzt9qcYvhKligh 5z9UIaSfPn1GhAJQjcMedtPGDcJsZcqYic6zqn8zmycogY2qF1PXo2yu4e7uLrbEMNVr0qgxnWEp Jsb1jP9gRwwJs5Fg1/qS7WQ7dmjPjKGnXPGM9JggSFoz85qs/iAZd5ZglvH06TORhIMBVgQTBGgg IbXH9wCMbNfPuxAOwjVq2JASs/T3Z7ZRhlAnVaqoSclVH/oatxGwK8EdO348DRk8iBaxfRAY2k2b t4inA+y0Ro4eTZ07dmImt4rsDnft3k0r+BAZqBIzwydPniRIgGHMrwg+c5s3byY7QahRQPgB+7F9 lX/7DrJDxi75559/pv9NnSJ2vYetnKxV7cXFK077juZDE71796LpP0yjmzduEmzIgJuRDh8+zBNk LZrJkvXXrPIBo4uNhSNKlDABDelYnXxL5WPTkfD9Dw6cpUudTNJhh9ty4GxHTel8jYBGQCNgFwEw NSBbzO0rXmtAZvM2pMFkAfMaXFjhYDJoz569tGjxYmrXrq1ouiB0GTJ0mOShjZCQV3KP/8A4HWIN JDwCYf58xaZfigH7esQIGsqeGyZPniTrGySK0H7hQBkOds2ZPYuC/gqVEkM6inbBWCvppaUTw42S aKIfEEzNXr8OHY/KC+Ex7t27jxYws9+qVUt5B5xvGTx0hNSBuVmzJk3p++8mUjN2t/maGcZX3Abs erEOdGMGEWvybTb9wzPS0Y96L9Uv6jhLGBtMDTAeRRC0LF22TCTNauyv5f3DGViYuYFvgJYXElgI XGB6gPKv37ymZ8+esa30av78qjIfkF+eN2zYKEwvsIY0vnLlSnzA/TF7ulijutZXjYDTCMTLks1N aQisVoKkDoeTwFjhz0wwsMdEY2SwlHTP3o/d3I75GT8oZXNlztPPxJ4NXORAAmyy7OEMezJMKMbP xxp+bxKmpNf1t1LIjpF0dMVgysAmCrYo+OZ9Klx3MLn69COXpX4ULxYimdXmE9OOaKVWYTmCSOdr BN4pBCC5A6MDM4OYJBxUgoTV2ppl7gcSQzC/1uZRzJ+hjHH44VqUR4AipU43tgdVfNPGTYxJlvsp U6fKQTFLgoMbvAP6UpJmVRzrK/LU+QuVrq4wYbM2NpX/Nq4YMzBDQChbOJvfE2tcAvYYYU5/G+PX ff47EbArwcUr4cuoDixZe0XYJpnJ2hfYXMbRs2Zu7SMEptXe56JqR3VyePz0BdXtNY08sqS1aoaA zzYg6BahnG0WWPWurxoBjYBGwDYCUTFJsN1K5Bwwpc4wt6hpi1FEnrX5E+Vt1blwIZDWrg91fYb6 RrrC50uiQngH/JkJc7Ct/lH2XWNuMSaM2RqWyANZy8MaZy09tIb+XyPgGAGHDK7jJnSJ/woCLolT Ugq/QRTIZxkuh1snRHq9V1mJUmRhKTKX16QR0AhoBDQCoQjgsBv+NGkENAJvHwHN4L79z+CdGMHD Gxcp2ezipPjayHKDiMNU5VAvOR8Q0aQR0AhoBDQCGgGNgEbgXUHAFQ6YNWkEovs9SJ8id6yA54wz 9ei+Q6y8gO5EI6AR0AhoBDQCGoFYQ8DVGTvOWBuN7uitIfDg/j1K9oF7lPuPLQmuNVtv82D1d9mM iH7WCGgENAIaAY1A3ERAmyjEzc890lsLc9tyH71+Evk0M3sIY1c0kaqIDS7MGigWvChE7l2naAQ0 AhoBjYBGQCOgEbCOgFMMLvzXwp+etRONWTJnllCJcP9hj+DuIzOXvXLlSgSXVXAdApcnZq8JcCuC k5earCMAzIAnfDnGFE5gbu9sHmTp0MUlHqVPk5zye2SiEwFX6frtB+xyLPwzSV11iMVm11JJ32gE NAIagRhEQLmdNDaJOa9ihQriYxWutBDKd9369Va9DhjrxdQ9gimkTZuOduzYEeUmvbyKSKCjCxcC bdZFhEoEdEA4X2fJ2TEp3GLSNZv5M4qpNcnZd9flNALWEFBnhazliXPmJYsX0Yrly2jThvXUq+cX 4n8VheEbd+6c2eyQej79uHoV1axRw2obSKxXry6t+XG1OMfGFZMRqGDBgrR+7VrayG3jR6eoaZPG tGLZUmF8VZq+hiNQvHhxWrliOc2bO4eWL11KBfJHPVxkeGvW7zBhFcmTlZaNbU/rv/+clo/rQEU9 s1l1HWa9BZ2qEdAIaATsI1CuXFkJzW6rVPbs2Wnbr79E+Fswb64U/+qrgbJGlS5dirp160qxaYNf t05d6tKpk61h201v0bw5+VYOjfRpqyDWwzZtWtvKtpru7JgUbuZGEHEM0UuTJElizrL7XKd2bfpy QP8IfwjPq0kj8LYRsCvB7dDeXxxw9+3Xn4p6edHnHCVl3foNEv4PIfXgBLsjRzOrXLkyhwbsQPv2 7SOzrz+Ek23frh0t4UgwGzdtIoTl7dGjO+3es4eqcqjfX7dtk9C/CC2L+5wc57t5s2Y08KtBsbYb f9sfQlT6h/Py3j17ymcwe85cicXep3dvatm6tVXfiPacmNvrN2EClop45aKP8rtLsWL53KgMPx8/ f5WecQhITRoBjYBG4O8ikIJD6Zb18aG169bTEStRK1U0xcEcVezG9RvS3bPnzyJ0i+hXu3btplsc vctImPus+Yu1lW6sa7431xn/zTdOC2DMdc1tO3q2Vd+cbm1M5jLGvpAHP7tK2pqGJcYNGtTnqGFr nfYhjPZc2IYN0ujtHDpZkVk6DI2j8umLAA7oU/Wr6hjLqDRcUR4Ev7hGQnmkmdsxltH3cRsBuwzu rl276NjxE3Tx4kWOQPKcPqculCxZMvnCIX735ClT6eSpU3Tx0iWqyuESi31UjK6sWRsBUR9vb7p2 /bqE8cUO+7vvv5d41viyoy38MK5zfqlSJSVqyYD+/STsIhhgTZERwAYgbbq01KtPHwoMDKQZM2fR xAnfUiaOE270v4hoNr2YEYa0/GXIS47VvpEmTZ4SuUEbKSzAJYTnhUkCTBVwjc9XpGvSCGgENAIx gcDataFBEaqFhey1xuSinzNnzhLC7lojhHsfNPBLqsVS1WbNmoo28D02icN6s2PnHzSKw8rDvA5C ms4sdc2eIzudOnmKRo0ZE2HONLf9YdGiEqr+1OnTVKxYMQnNO5HXrwMHDlCN6tVZepyLBg0eIiHT //oriIYOG0b/9/HHInnt2KkzZcqYMUr9mfvPmiWLaEmzZctGR48epa8GDRbTBpgM9u/blwoXLsSY XKPpHI59+/bfI4wJdfr17UOenp50kdcJV9cEtI41pcuWLZdu2rVpQ1myZqEXz19I/d9/30HfTZwg eTOn/0Djv/mWfvn1V/OQbD4/evyIgtj80EiQvkO6i2ibWbkv8Am3b92mIkUKi5ni1p9+lk0NJMcI 2Yz3RVQ7hCPetXu3bCCAJ94BGsVTp0/R5s1b5P6zTz8V/BGC+BCHpf/pp5+MXet7jYAgYNdEYfmK lczUuAijNG3q/+jgwUPyhcyQIT258gRy5swZaQSRU2ALmi0rRwAwEX5oYL6WL11C/5s6haBegnkD 6NixY1St2mfUskULuW/DUkhIKKfPmMmxqQuQM66hTN395x/dGE9MSth0gM6ePStXM/Y+Pt4Sy7sn S3cnTJzIk2FhC+5SwcF/z1+G0P4TF+nkhat0/9FTueIZ6Zo0AhoBjUBMIQAm9wgzcGByMU9ZI1/f ygSmBn9geIwETWJqlj6CkiVNSpgj5y9YSKPHjpM5sHSpUqJ2Hz58GF0IvEDde/SgkFchwrwa2zHf Yy1KykIYnA/p8cUXwsANHTJYNJdJuZ+UKUP9f0/7YTpVrFiBGjZoIBq1DRs2yJmVqPZn7h99r+Lw 40OGDqX8+fIJ84wyA78cIH336t2H9jOzPXDAALHXNY5p0MCBlPC9hPTFFz3p9x07KWu2rJQ0SVJL Fy9evqD+/QfQ0WNHRfuKMzbjxo2X/KHDh9OevXstZZ25wVmcKqyRVX9gWnHu5v33E8omYikz1mBg wQ/gs7nEwTB8vENNFfPy5/maBV5IP3r0GFWqVJESJUpEWMPys/ndJtb8QkADU7wPPywqn3++fHlp 0eIltHnLFnJ3y6Z5BWc+pDhYxq4EF3iE8Bfv2bOndOfuHZ44srJhfRrZDao8hVkIMz7YJZopSZLE ktSXf0yHeafVvVs3sZf6+ZdfaOWq1XST1UrxXeLTw0ePaNSIr6lr9x40etRIyu6eXXbdLVq1pNu3 75ibjbPP8V05BjlPzkoto1RwrmxSYCTlMgtmJtgRD/96hOykjWXs3UNiu//4RWo3dB4VL5Cd9h0P pJMBwSLJtVdP52kENAIagagisHXrT5Qndx7y8/W1aqoATZQ6iAyV+GmWqtoiSFw3bd4s2Q3q1aOc uXIS3AxCq4U1qlLFisIQZmKmDFpEMHf26NsJE+nu3buiaVy0cCHlYi2akSDRXcomeP7+7egUazTn zJ1HRZhRt9Wfsa69+0ss8VwTphGtVbMmpU+fnnAoG5uA+/fvC/OeIMF7ImzKmzevpSnY0Hrk9GCJ 7yA5hHfw0CHCBsFIy5YvlzykebOWFThcZiEV6NKly1EyUUAdSFhd4oXLy9ShM6xTv/NBPKxTd+/e E0EWhGFggLERAeEg3UvOz8fvkCFDBklLwp+Vu5u7SK6PnzghaRDqoFxGloyDKjMjfO78eVr94xr5 fCVR/6cRMCAQkSsyZMDupWxZH2ZKj9D3kybLD+vHVSvZbrYqzZs/X3Zc7u5uIkGELU9Wlt7ChtZM Sq20f/9+yfr555/p//7vY/mxBgUF0W+/bZfd9cwZ02nZ8hUUzPG68+TJQ9Wq16ApkybJQTSU0RSK ACYHTJyY7GDagdO2oL8uh05OoaWIDh06TO3827N9m7dIF5o1bSLPARcuqCI2r5icMqZNQa1qeosN boqkiehj74Ii0Z21eicF37pvYbBtNqIzNAIaAY2AEwhAElq3bh0pOX/BAqs1YAqg1hKrBQyJT588 tTw9fvJY7uPzGgWCGRfU6RCspEie3KqNrhQ0/KdsP5lXCyWeH80E1bqR/k5/qh1oRhU9fhx6r+xR wez9xesnCDbIkIjmYykvCOYYL/mcROpUqeVZJNEG6S0Sn4Rh9NjQhxSO5n8Yi9pUqCZgSgEGVwlh cP/qdWiMTIUpyoJ5B2MLjS4EMzBnACkmWR74v2f8XqiHd4dpnifzCfny5mNJsLdofZVQR5XXV41A +JbLhAW+XJ936UI9v+ghagXYyGL3CHsafGGx62retKmoC9qyPQ8ktcqlSZvWrcjPL/SUKGxpQPCy ACa4YcMG9OD+A3EXprrEwbOn/EObOWsWPQ9zNwazhkSJ3hd1vCqnrzBJOCcH/zp36ki5cuWiju3b 07Vr1yy7b4URDu21a9uGtm37TWylMeHCdtcR4XP3dM9AUwY0Jv/aZalSibxUslAOueIZ6cg3Tz6O 2tX5GgGNgEbAjAAYG6wfKTncN5hbzGX/BEHiG/LyJaVJk1pM7RLwfOiZx1NsPh3116ljB5Eu+vNh aZiHBQQERKgCySM8/8yaPZs8cnhQk8aNRcIc3f4iNG56ACMN00CsxcePHRebVjB6OHClCOvz7zt+ F4ly71695IxG8hTJVbbNq3IDivM1MC+ICsH8ITOv2eovKp4YUqVKKZ87zFQSvBfeLyTY8LSEdc4j Rw7q0b07myh8KDa88DJx4uRJgsAMTL82Z4zKpxV3ytqU4OIQ2IiRo6hfn97ijuoV/2ggod2ydaug M278N2JKALta7DSnsI0udlagSpUq0Un+8kHttGfPXlqyZCl17fq55IG5HTRksEUCCFtbP1af+Lfv IIbnL3kSwpcW7QaytPGwlZO10lAc/e/x48c0evQY6t27lxxuuHnjJsFmCrgZCeYgdWrXopl8AAH2 TWB0YUPtiBIlTEBDOlYn31L5xP5alceBs3Spk0k67HBbDpytsvRVI6AR0AhECwEcLgLZYm5fscQO pE7gy0PYf284D3MbCPcgHDpSUsLQ51dSBiYKw77+mj7v3Jk++eQTesLzKA5JK1MvqWzjPxyWmjJl sggWRrD5HEwlXrGZGPoC9eE1cu++/TRv3nyRnLZl916/sAmerf5kjFzfHuEdXoe1j3J4P/QJgrnZ 0MGDZExIX8M2zFh7jWMaw/bHtWvVIg+PHLR37z5Kkjjc9ZcRN4UrJKPQDh5ic4YunTvJerKebYmd IYwzR+7slIMP7yn6idfwW3ygzCipxT1M30Ch7xP62UEI9nHVquyirB3duRNqjvg6zLQBQpm6dWoL E3vhQqCYLIB5LlG8BPm3ayvtn+QDg4r3UP3rq0YACMTLks1NKV5sIgLjdQRysBbMAWoI2AMZGSwl 3TNOHkn5S5mE24EawZhuq1MYmSubK1tl4nI6dq3AHhJ1e3jiAAYmFuPnYw23NwlT0uv6Wylkx0g6 umIwZWATBVsUfPM+Fa47mFx9+pHLUj+KFwuRzGqzGssRreQDGZo0AhqBfw8CkOBCKml2K/VPvgEY JKwtmBchlS3+0UeRusOcuoR9jMMTQSVfP4I7MzDJ9ubaSI2EJRj7M5ax13c3Pgj3iM+l2COYHoBB tTa3j2ChB+b+BYsWUk4PD+rE3iOGDRvulGcEs/swe2OIqTxIoPFnjcfAeEDK1EH1aStd5eurRsCm BNcIjb0fmtn3IOpZmwQe8Y4Zf86SZm7tI4XJ2RmbI6V2st9aeO7jpy+obq9p5JElrVUzBHy2AUG3 COVss8Dh7ek7jYBGQCNgC4F/yiTBVn9IhxZMEc6GXLse2SwC89zDRw8tjDeEONElY3/GNuz17cy8 bbb7Nba9aMkSCcw0fuxY0bCuZd+2OOzlDJkZSWfq/N0yYNSVNNnclq3x2Eo319fPcRcBpyS4cRee uPPmkOBSy32EcL3s7pbNE2y/OzRn0DS5JOY6s4trCa5tqHSORkAjoBF4awhAyqkZwbcGv+74LSPg lAT3LY9Rdx8LCDy8cZGSMbOq+NpQ6yjbHatyqJecD4ho0ghoBDQCGoF3CwHN3L5bn4ceTewi4Bqb 8btj99V0b1FBILrfg/Qpckelm2iXdeaUbHTfIdqD0hU1AhoBjYBGQCOgEXgnEXB1xo7znRy5HlSM IvDg/j1K9oF7lNuMLQkuDng4Iv1ddoSQztcIaAQ0AhoBjUDcQECbKMSNz9nhWwpzG2aDay4Me1yD xxpLNmxwYdZAseBFwdKpvtEIaAQ0AhoBjYBGQCPgAIG/xeDCHRiCN8B3nT1PC8YxoI7RywIcVsM9 iNlrgrmcsQ19z4fAGLPMHGoSvguNeP4dbHDA7M7mQZYmXPi0Wfo0ySm/RyY6EXCVrt9+YPFjiEKp qw6x2OxaKukbjYBGQCMQgwgot5PGJmNqzjO2+W+5L1++HEd1uyYBH2J6zBrrmEZUt/c2EYg2g4vI IqNHjZLoWJhsVqxYIY6zbb0MfPbNnjVT4kg3a95CQiYiSgncmCB6CXz0qVC/iApTo3p1qtegoU3X Ibb6iQvpxYsXp/79+hJCXN66eYsGDxlCKl53TL0/JroiebLSxD4NJVzvgZOXqNvoxfTnqcsxxlDH 1Fh1OxoBjcC/E4Fy5cpyFKvrNpk1BFnAumGkKxwWtnHTZsakd+o+P4fMxdoGP7r/BCHC6IEDByQQ k632U6VKRfXr1ZMAGrbclFmr+0WP7hxBNFGErBkzZzkdJjlCRf2gEXjLCESbwW3D4RXv3rtLn3fr SlWrVKVmzZrSipWr6Pr161ZfqWGDBsLcIhPSR1DVKn7C1KIOQsuCwc2ZMyc1b9aMBn41SDO3glLE /7BR6N2zp4SCnD1nLiFkb5/evall69ZW3cFE12l3wgSu5O2VS5hbjKBYPjcqw8/Hz1+lZxznXJNG QCOgEfi7CCCAQlkfH1q7bj0dsRK1Mj4HtAFhE3/j+g25f/b8mVzVf1hPIGSBb3Az2XKTZSsdG3sE 0bHlk9XcPp7NbeXLl5dq1qwRJQbX3IbqB2MBGd+tRctWkeZ6c/00adJQgwb1OcrZ2gh+f1W7tq7x 4rnQrl27I2w4EEzISMBb4WO8t1Xm76Qb6+p7jUBUEYg2gwsH3evWraOrV4PpZw5LCAYXUWmsMbgZ M2ak+vXr0cqVK6l27dqWMSZLlowuXAiUOqVKlZT41wP695NwwLv37LGU0zfhCGADgPCFvfr0ocDA QMLueuKEbykTxwG/fPmypWDixInZ0XdP8i5Thl6GvKSNGzfSpMlTLPmObnieJ4TnRWhFmCrgGp+v SNekEdAIaARiAoG1HGYWVC0sZK81Jhf5Z86cjSBFxEZ/MUfpCuT1A9LSx08e0+LFS2jpsmUoLuFd 69apS6lTp6Kjx47TSNY2glErU7o0denSWdaqCwEXaOTo0XTu3DkaO2Y0YT3KlDGT1F+5ahXNnTdP 7m39B6EN1rUUyZNzaPpTNHzECIJmExHKXBMkoDU/rqa27fxtBuT5sGhRGsIhd0+dPk3FihWjoL+C aOL334t0Fgxrj+7dqVxZHwm489v23+mbb78VxrZf37508NBBXn/XCwZXgq5Qnjx5WBJ+jX6YMUPC 2X43cYIMe+b0H2j8N986FcFMveftO7cp6MoV9ShXH96EFCyQn+LzuJIzTocPH6FUqVKSu7u7BMOA cAv94/2rVq3CuKemu3fv0sZNm2SNB7bVq31G2bJlY3PEZxw+eC8hRG+aNKk5vTqvXxnZzPGx8BLH jx+P0Ld+0AhEF4HQ7WE0ak/87jv5gqJqk8aNJFzv+fPnrbYEtQeYMfwIjHTs2DGqxl/6li1aEO7b sBQSE9f0GTOpQIEC5IxrKGN7ceHejSeIF89f0EWOPQ46e/asXLOxLbSRfHy8qUKF8tSTpbsTJk6k woULU7p06YxF7N4/fxlC+09cpJMXrtL9R0/limeka9IIaAQ0AjGFAJjcI0ePCpOLecoa+fpWps8+ /VT+PD09RQsINTxcA/br3582bNhAHTq0F2a32IcfSmjadRvWU5++/YTJHTRwoDQL5vbUqdPUunUb unjpEpVnEwkQzL3ScehzMKlgylq0aC7Ml2Ra+Q/hdytXqkRLly6jnr16M8OcnurUrkV/HjxIqzhk OEIPd+dwu9YifarmsNYlZcYP5096fPGFMJVDhwyWELvNWWBUsWIFGjt+PI0ZN07ukQZKmTIFJU2S 1IIBBBh9mOlFRLY2rVtJSOFx48ZL2aEcsncPM5NRIWwYqrB2FX++vr7CYGOswHvbr9toOzPbRYt6 cYS0p7wJmC/5HzGDDvLy8uK16RLNmTtPMKhcqbKk1+JQ61jPYbYB5rxSpYqyySjNG45EiULX/MNH DlPhQoWkvP5PIxATCERbgqs6b92qpfzQ+w0YYFUV4lu5MhXlLz12skqtoequXLWabt66xZLB+BwW 8RGNGvE1de3eg217R1J29+yEcIUtuP3bt++oKnH+Gt81PoW8CrHYwSpH3q5sUmAk5TKrQ3t/2r17 Dw3/eoRIMIxl7N1DYrv/+EVqN3QeFS+QnfYdD6STAcEiybVXT+dpBDQCGoGoIrB160+UJ3ce8mOG ypoUF5oodRDZhTVLOFwLmjlrFh3480/58/P1YwapoAhJoM2aP3+BlJnLzNbALwcQDjQHBwdTiRLF ZW3ZtWsXbf/9dymD/7bwGPbt20cnT5wQ9X6OHB421x7YtX7LgoNSJUsI85mGmePcuXPLGCEpxtoF 7aQz9O2EiSLthPZz0cKFlIu1dEW9itLWrVvpt9+2SxNYQ72KePH97EhNLl4CpvEQQWs3fPgwMZm4 HIbPpUuXra7LkRoxJIiZBpsqgOK5cMjKMLpy5aqc9UjKzD2EJ8AKkl5sFN5/P6GU+uXXX6lA/vws 7S1AsJ8GQRqdJUtm+vHHNYIJcIEEGBgiBHIqZmrLlytHF1gI9uOaNVJH/6cRiAkE+LsX/VB+MGJv 0qQJjRgxklUO+6yOp27dOmI/1KljR5l4UKhvn96sMhotUkj8gLEbnjljOi1bvoKCr14VdUu16jVo yqRJsiNXP3KrHcSxREzsmMjSp08vph1ubm6CwF+XQyd8BcehQ4epnX97tm/zlgm4WdMm8hxw4YIq YvOKCS5j2hTUqqa32OCmSJqIPvYuKBLdWat3UvCt+xYG22YjOkMjoBHQCDiBAKSnWCdA8xeEMqXm aoMGD4lgooA1A/SG/yl6/eY1M2Qu8me0WUUZzGn4G/DlQFb7l6WPPvpIzi5Agjh02DBp4unTJ3J9 /CT0qtq1ds2XNy9N+p61mGyvqlTqYGqjQ2qsb9SrhI0VQgZFuFf2uCpNXZ+EjVddVXp0r0dZmg4G 1EwhLCkGqVG9CrN5fhM2TvASkCDfY6b1zJkzbJpxkyXs1rWG2KxAOLNz5x/8uV6jnB4e5ONdhkqX KsWmdJMjCcPMY9HPGgFnEHBNmDBhJIN1Zyp++sknohJay0bsQVeCKG9eTwpiW6CHDx/Klxw7SOzK Fy5aRKlTpZYmMZHly5+PDh48JDs31Q+Y36f8I8VuHKoQEGxKobqAOl5TOAJnz54T1Q8Ol81jCUUH f3+xfVI7dlUSh/awy5469X9igzZmdKjHC0cMLhYBT/cMNLJrLfowrxulSpFEbHFD2BFuUc9sctis 38RVdPriNdWVvmoENAIagWghgHMbTVlIAgJzCzvOqFCzJk3ZDOC2qLax6T9x/IR45WncqBGbDNSm 08xoNWnUmM6wKRc0iPDas2PnTvrftGmUkg+4wfYzOoRzJSAlcXzMGsgHDx5K2jNmdNPyIS94Uzhx 8qSk2fuvU8cOIt2sxwIjrHcBAQE8Z7P5Htslw1YV5McmGjiI5ywpZrtkiRK0ns03Xr50/mAw1uvM vP4qun4j9HCferZ1xdqNv3Ps4QHrFOyCYVcLRhZndby9vWXdz8TuLav4+dK0H6YT7JBxUG3nH3/Q s2fPqHTpUiLxNWt7bfWp0zUC9hBwjYoLEWNDdeqEHharVq0a29FWk6wxY8aK/VIltk06yT9sMLiw 11GUltU4zZs3o02bN4tKBumwtcWP1799B/kR4of4888/0/+mTuEDBBfosJWTtaq9uHjF5zV69Bjq 3bsXTf9hGt3kXTLsrMwT2OHDh8UmbObMGfSaJ/Zt236TjYUjzBIlTEBDOlYn31L52HQk3EQbB87S pU4m6bDDbTlwtqOmdL5GQCOgEbCLwGdhh8tsMbdKSmiL4UnAh7kgSQVDtyRMVY8OFzCz3KpVS9F2 YR0ZPHSEMFr7Duyntm1ai3Dmzu3bFldbaD8k5JVlrG9YOvmKGTNbtJfV86dOnSIIDsCYQSL5+nVo fZiEgfH+/ruJ1Kx5i0gHtsxtQpU/ZcpkEVyMYPM8tDV7zhzCuYrhw4ZKcWhIkQZ6zcKGV9yXkvy+ YpM1UAi/A7xJ4A+avkNsttClcydZG8DkOkNvWApepkxp+VPlcZBZ8OB+Qapf4xUSZvjCh+QX5iQ+ zMzCDlmVgTeH2myjDNtmpO3Zs1cO353jczs4fOblVYTHGSLrlGLOVf/6qhGILgLxsmRzUxqH6LYR qR6kgCD80KJL8MWnbK6i28Z/uR7UVdgwwN7LHs6Q0GNCMTPAZmzeJExJr+tvpZAdI+noisGUgU0U bFHwzftUuO5gcvXpRy5L/SheLEQyq82HFBzRSj7coUkjoBH49yAACS4YRDBDUSGYKGxYv446d/lc DjC/ePEi0hwHySDU5maGCemQNDoS7kBKO3xoKINpHhtsTRctXiw+YzG3qrMQqhzWQPTTulUrKs7m EGbCnI0DV/369qFKbDsMd2kIR26ey8HAgxzN3+b21TPeH8y7uV2V/09c0Sfe39qYkYexmDcsWKdQ XjHE/8S4dJtxD4GIJ5Ni6P1j4sekmVv7HwYmAnWQzF5J8+RuryzyHj99QXV7TSOPLGllkjKXx2cb EHRLytlmgc219LNGQCOgEYiMQFRNElQLYJAeskkAGFtbjCrKmBkp1EearTqqfVzBcK5lJtoaBZwP kGRb6xTmSTC9+/fvF+8G5jaQ//DRQwtjj8NW1sgak2itnK00M+Ntq1xMptvr01ZeVNepmByvbuu/ i8A/IsH978L1330zSHCp5T5CuF52d8vmCbbfFZoqnCtwScx1ZhfXElzbUOkcjYBGQCOgEdAIaATe AgL/iAT3LbyH7vJvIvDwxkVKxsyq4mvDrdGsN6zKoV7yFMzoatIIaAQ0AhoBjYBGQCPwjiDgCkfZ mjQC0f0epE+RO1bAcyboR3TfIVZeQHeiEdAIaAQ0AhoBjUCsIeDqjB1nrI1Gd/TWEHhw/x4l+8A9 yv3HlgQX9nCOSH+XHSGk8zUCGgGNgEZAIxA3ENAmCnHjc3b4lsLchtngmgvDHjfMQ0yELNjgwqyB YsGLQoSO9YNGQCOgEdAIaAQ0AhoBOwj8bQY3CzttvsGuqnCa1RYpt2Eq3+hlAeET4U7FfBoVdYzl VF19DUUAmGVm7OHvMKZwwgGzO5sHWSB24dNm6dMkp/wemehEwFW6fvsBu3EJd/2WuuoQi82upZK+ 0QhoBDQCMYiAef1A0zE156lhwg8rPBlcuBCokqJ9jY3xRntwuqJGIA4h8P/QtG1D9kIyjAAAAABJ RU5ErkJggg== --Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428 Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="Screenshot 2022-07-01 at 14.25.56 .png" Content-Type: image/png; name="Screenshot 2022-07-01 at 14.25.56 .png"; x-unix-mode=0644 Content-Id: <EA1B6F9C-8E3F-499B-B077-523875F86272> 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 hQ5zlMnoPC6TYv0A7OysGP8yabqz02QuMqo2sR/Gxt4YAIBvA+CLZGxsdOfY2Jd9aLF3AWjPndT5 44ZDv35KLLWVKd1X2cgq8A+b/Ab4S4//nIGigr/NfwJofSGf1ljUdQAAAFZlWElmTU0AKgAAAAgA AYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAACx6ADAAQAAAABAAAAoQAA AABBU0NJSQAAAFNjcmVlbnNob3Tvg7vsAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6 eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAi PgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm LXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAg ICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAg IDxleGlmOlBpeGVsWURpbWVuc2lvbj4xNjE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg ICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzExPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAg ICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAg PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CgwFVgAAAEAASURB VHgB7F0HQBVHEx4BRRQUEWssYO9d1Ii9Jv6x9957jyW22Fvs0dh71MSe2KMm1tij2LAFwYo9NhQR 8Z9vYR/3jleRGJUdfdzdttv73r3d2dlvdxIka/7XW1ISLxFwvrGWElUbSREvHsd4fkcHojcRMYLJ IYk7hf02nF5lbBAzUoUoBBQCCgGFgEJAIaAQ+MgRcIpN/dOlSEiPnofTq9ex06udEyYgR4cE9OKV Ce0rNhWKJ3kYMsqa1pmuBL+KsyeGYvxox3BDeQ58kzQpk1HerOnpfMBtuvvwKUVERH/PHtVHGtKq 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 --Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428 Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="Screenshot 2022-07-01 at 14.31.21 .png" Content-Type: image/png; name="Screenshot 2022-07-01 at 14.31.21 .png"; x-unix-mode=0644 Content-Id: <751315AA-3B86-4320-A10A-EF1906FA5905> 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 hQ5zlMnoPC6TYv0A7OysGP8yabqz02QuMqo2sR/Gxt4YAIBvA+CLZGxsdOfY2Jd9aLF3AWjPndT5 44ZDv35KLLWVKd1X2cgq8A+b/Ab4S4//nIGigr/NfwJofSGf1ljUdQAAAFZlWElmTU0AKgAAAAgA AYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAAC+KADAAQAAAABAAACHQAA AABBU0NJSQAAAFNjcmVlbnNob3QnXC2BAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6 eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAi PgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm LXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAg ICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAg IDxleGlmOlBpeGVsWURpbWVuc2lvbj41NDE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg ICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzYwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAg ICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAg PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+ChImUL8AAEAASURB VHgB7F0FYFRHEx6SIAGCBAkaEtxdS3CH4u5WHAptcSlQvLgFDQ4tRYsX2qLFXYIUEjxYcA0B/vnm 8i7vLne5Owh/gezA5b23vt+7252dmZ2NkaDZkXdkg36sn4p+qJHCJFW+nmco4PYrKpk9Ps3u6EUp E8ei16HvaPGue/TDgmv01kqprrFi0L5R2ck7eWwq2PsM/Rv0iopmjkdr+2Si2C4xqK3vZVp94IHU 9UN1D2pXIRll737aankmjYpmD+VzJ6CZ7dNRsoQx6cb9EGo5NZAOXXz2QSjEvraCXEp8R/e3DJZy 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 gf8HjqOpiqABE+wAAAAASUVORK5CYII= --Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428 Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="Screenshot 2022-07-01 at 14.33.11 .png" Content-Type: image/png; name="Screenshot 2022-07-01 at 14.33.11 .png"; x-unix-mode=0644 Content-Id: <5916408D-9507-43BD-971D-BC8781F4BB13> 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 hQ5zlMnoPC6TYv0A7OysGP8yabqz02QuMqo2sR/Gxt4YAIBvA+CLZGxsdOfY2Jd9aLF3AWjPndT5 44ZDv35KLLWVKd1X2cgq8A+b/Ab4S4//nIGigr/NfwJofSGf1ljUdQAAAFZlWElmTU0AKgAAAAgA AYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAAC7aADAAQAAAABAAABIwAA AABBU0NJSQAAAFNjcmVlbnNob3SZWD8AAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6 eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAi PgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm LXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAg ICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAg IDxleGlmOlBpeGVsWURpbWVuc2lvbj4yOTE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg ICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzQ5PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAg ICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAg PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+ClSgKTkAAEAASURB VHgB7F0FYFRHE56EQLAkSHAL7lq0BNeW4tYCwTXQQvvjUgilOG2pQPHiXtxp0eLuUCBBg5cEhxD+ +eZuL+8ud8kFQoGyA5f33vp+727329nZXZf0GTO9IC0agVhEIDTkLnmk9IlxivduBJGnV5IYx9MR NAIaAY2ARkAjoBHQCPzXEXD7r1dQ1+/fR0AIe6s9FP7wbqTM47gSPQ+P5EyuCZOQx7TiRE8ix4kc WrtoBDQCGgGNgEZAI6AReL8QiJK0ly9fjoKDr9Hp06djBRUXFxerdF68sFbye3t7U2hoKD19+tQq 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 AABJRU5ErkJggg== --Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428-- --Apple-Mail=_1150C5BB-F9E7-434D-9520-996E3A597506-- --Apple-Mail=_7F52C436-83E8-416F-8E58-7E70AD4F94B3 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+6hUACgkQc+obGZDF PmO2TBAA7zVKqB39uEpqzIuuw7aGxaIiXWA9gBKvf1vkZwYqCKo9NoTY4UuhUYHa LhO6SWm8cxjCp//9VhGsuJ8txiCY+5Q9CZHdttxSj1k8upx2lpbUtheMhqAQrtLO v5XT5kXsDSuj05otxFVxvrUtRg+SZJOxmwLe9wTkOuIPMVecPO7TjV+LeimZlnAb Mm7eAJVjANjBJBmHgPXmT4xc9YoVH9TkmBpm8ap0Af/Xhyj1ei8jLypotA0jHDnZ vhcRvVcQkcDXs8MQkSi7sTFIJq6uBWbyyzQJeUD4qRw9paN4Vi57OnkzZygN67bo AlrGwnfaTRC9TMTgMePnxMfb+688yjo3wv5OWg/pcNDTXzmbrQXcgrJW3mD9WUzB JOs0sIvLvGvVtPbIjNYueG/Tzfcg72dSKi4d8I9taG7tFW6VSGJmtyfDHluyQcXe rnpE7arDuStj4ghqN5VU3kOqfRrjT4Zb+hUXUuPytTDbjIHxPGLJ2f4hVsUMnf6b WfftTQa2KWIPYDccX1nJF7rFUhqkjnQhVzcjlJWohQYPdOCysbCNHteJ2K4TuP66 Zorg+GCp+SzDdF4FaXLXkHOxn24XhMVZsLxqMq50cpn2/TjdOxHHluzwqOECapVA PVw/IJHsBmXyjG6TzZFRjRIFjLP1sKLqwDUa0dhBgTwXcedfpfE= =CMok -----END PGP SIGNATURE----- --Apple-Mail=_7F52C436-83E8-416F-8E58-7E70AD4F94B3--
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:14:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 08:14:45 2022 Received: from localhost ([127.0.0.1]:36541 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7FXp-0001zH-Cg for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:14:45 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:38157) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1o7FXm-0001yx-11 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:14:44 -0400 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 5A1798027D; Fri, 1 Jul 2022 08:14:36 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id EDE1A80625; Fri, 1 Jul 2022 08:14:34 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656677674; bh=d6mATSOwTeJNrXl/MgKT4M1oLMWDUfACbwDnqfzpCeU=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=XLTdX5lrJ5drHmQCkt7cm11tMG7fIXCVymdv9nW5Td4pkoBL5ru3m9/OCevAxaqLy amOnTVz/LJ4ByKb3GHoWxwTfON7UhrujUYlX/0DD2O55XoXSqRc7vURWQ8RawKmgbV N0krSL6dMK6BiuvDOOU3z4wUQNT6DtHnsSK9S0/vRdctd9i69m7/ZmMRcKgXWSrHp4 QiRMw1/1RGl3PQtJpoYnBwp6K/cmtNPjDtq2wTGYwfE15tPQ1YwnVbilp7EOEHRoFJ ayfEdBb0E0zawRF+pDulISkFIp4HVsM4dZWrUDZLpnB6u1eExvHx8M+wDXdzQ8Z3QX uXoa7w7P/LnCQ== Received: from alfajor (unknown [45.72.196.165]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 9F584120254; Fri, 1 Jul 2022 08:14:34 -0400 (EDT) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again Message-ID: <jwv1qv5uj1n.fsf-monnier+emacs@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <835ykhflmr.fsf@HIDDEN> Date: Fri, 01 Jul 2022 08:14:33 -0400 In-Reply-To: <835ykhflmr.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 01 Jul 2022 08:27:24 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) 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.054 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) >> > That's only true if max-redisplay-ticks is zero. >> >> Why would that make a difference? > > Because if it is not zero, we won't let the entire line to be > fontified, we will stop that before it gets to the end of the line. Interesting, where in the code do you do that? Stefan
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 11:44:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 07:44:38 2022 Received: from localhost ([127.0.0.1]:36464 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7F4f-0005Dm-Q8 for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:44:37 -0400 Received: from mail-ej1-f41.google.com ([209.85.218.41]:34614) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o7F4c-0005DY-N5 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:44:36 -0400 Received: by mail-ej1-f41.google.com with SMTP id d2so3624687ejy.1 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 04:44:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc:message-id:references :to; bh=TWvPkBz9S/6KtoyDj5Q9odqN8GvQs2fmK7JjcqmhDrM=; b=VxdxLa9TPHXFGGFEMZV3/g1awiIyIzC6bhSUYYs/IDuvg9MTo26GIWzxNPTXTAh++k SXkbe9gZsvGbLBgECBybNhFYk4vmCbGXtLiiP9SvsTef/Ovc07GAVASKKI3xsYyg70Wd dfeZhE36yPGHw/6mrzcMHJXEUwZdOv7xcFNgnE8SBluLztVjeCT81Ovc0P+MnU0d+2zQ isVeaQDTYfS2Paf1JbJsATbSI0ntm4ru1eNLD43JPjHTUiYeTHyqH3GWN8N5ZYEJ5eqE 5r8K9cfsIfbidI3Zv+jgflIKIAVDQNAr7xVuOTnEEnN02POmTau5icMgoY63wyvNbUWv BvFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to; bh=TWvPkBz9S/6KtoyDj5Q9odqN8GvQs2fmK7JjcqmhDrM=; b=khsqxuuz5MPU10Ku+/EXoGJw1nO44plyMDw29kR7ZFNnZFoo/pv14JVKVmekgLWkev HOH1xMIs5zXKSSVEvlSKkX+D+uIM3w8UuocbDS3Mfh813bTIcgLwSU1WFcRV+FttxgbM 6tXAY5tAFMVyQGDgl5CllZnI1LMSHyxEaDuEjK1iH0xHccL2KIrFk2aSWPu3Qd4T2n3h +l19P/oYQS8d/r+MHjFrAfLMxYb6T24s/yZObqxAZqPF6lqaeZ8nJJ4lJIY1Pk1T7QbY LXVUcBV92zkkyiUiKZDhaBMpqvxlRANHRzLB5nmm27W6PgFiB6+JGkeLnug0shZEcOk+ e13w== X-Gm-Message-State: AJIora8eG5fNk7HfdPYDqp0wTvuaIlvxUJvcMdqJ4i71P9el9MIA5p7z 4Ms9HadQP8cnAYmqHqnujII= X-Google-Smtp-Source: AGRyM1tQU+ThCqWVnQKIIcXgfK/aBqo1jdZa9nOCJ2iFO/lk2z8XXisln1MfgrSt0Wc4S2MEsgRmFA== X-Received: by 2002:a17:907:75c1:b0:72a:430d:b512 with SMTP id jl1-20020a17090775c100b0072a430db512mr12075803ejc.146.1656675868703; Fri, 01 Jul 2022 04:44:28 -0700 (PDT) Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de. [217.227.105.195]) by smtp.gmail.com with ESMTPSA id v18-20020a50a452000000b0043576d146f0sm15053265edb.54.2022.07.01.04.44.27 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Jul 2022 04:44:27 -0700 (PDT) Content-Type: multipart/signed; boundary="Apple-Mail=_468CECAF-77F6-4CBB-829A-92058AE0D2FE"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <83y1xde5cs.fsf@HIDDEN> Date: Fri, 1 Jul 2022 13:44:26 +0200 Message-Id: <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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: -1.0 (-) --Apple-Mail=_468CECAF-77F6-4CBB-829A-92058AE0D2FE Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 2022-07-01,, at 8:04 , Eli Zaretskii <eliz@HIDDEN> wrote: >=20 >> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> >> Would it be possible to run this with gprof profiling? I think that = could give some clues what is going on. >=20 > Or (on GNU/Linux only) under 'prof' -- which doesn't require you to > build a special version of Emacs, and still produces detailed CPU > usage info. I have medium_line.json now, and I see slowness (with truncate-lines nil = and font-lock), after finding the file and doing random things. Is it sufficient to do just that for some time while tracing? Do we = have some Lisp code to automated this, and make it more reproducible? = Or, even, should be do truncate-line t first, and without font-lock? (Did someone else observe it being fast at first, and then later slowing = down?) --Apple-Mail=_468CECAF-77F6-4CBB-829A-92058AE0D2FE Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+3hoACgkQc+obGZDF PmO62Q/9HgPXuMPiN/Ct5ivbhmssG49yZ8Kz4R/1Yn89Tz3qE4WHn/8t7PPpP4zI RWnzb9oSxzrAEecOeOZqU7rSsMF8LsSkeQveymQdWtIHd7YnKNAhJnu7/ACTpuG/ jqG5ygi1ZfJmzmyp+6NR9I+9Ck4x5n6RYhhudShuXue1Uao4IcSBc3wUJPHrVmgr ZSqL121nU5nqpOSahbVKTiwPnPxYR+VW2E//m/1LOsT0eaj7NVk6p1o2I8/H9lXm so0Unqe+21BPwcNV0ETAx3O4uARG0NLTKoO6C9cbnSeZGRt6+If5s1APuXvtPNkf KaucSAsBhLO0uQtN3w1guanDMVdLSHPflVjq0Y20dUOTeEF5wyum00r5zK0ejtBr oH4t7i5+dO9kZHyDg3OvzdLhY5UGOZuDzeh7h8CoJA+TGfwREr/VjuFvG2nnIAqN aA3rwt971cjNxMJ6xiOxiHVy09OQLjDPexqfCbv2K9ZpohoAO/FPUCEoWPyNAhRX IH3J3L/VNtbfJvGGHdaaLMtYKkNCXzjVaJ5e2PxCSCNmvy3WEtotGRMTuE03uZi3 BUiGOU7kq5wz3yG8CdIWcle6RExdRxSJr6gNbCC39WcH5k2KO1K4wHNHN/W+o4UF 2aoAaUmMIC/lNBl81zxfn1c3xGMVTHfpUFgY12lhgZLEO8Ma6nw= =w95e -----END PGP SIGNATURE----- --Apple-Mail=_468CECAF-77F6-4CBB-829A-92058AE0D2FE--
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 11:33:20 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 07:33:20 2022 Received: from localhost ([127.0.0.1]:36441 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7Etk-0004uY-K8 for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:33:20 -0400 Received: from mail-ej1-f41.google.com ([209.85.218.41]:36542) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o7Eti-0004uF-F1 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:33:18 -0400 Received: by mail-ej1-f41.google.com with SMTP id o25so3557493ejm.3 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 04:33:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc:message-id:references :to; bh=+ZkjMFg+5xJiwL+jS2i7rmPkLEjGuBF0PplOs6zUsTA=; b=e079bA2YMLoV6VJwr9vYSiRCrv0PoiPDcfeX41sdJ4gtAkTdGR7b+SU6M0nHQITXey j5rEQ8+WXVOckUA72A4zP1E0byWU2LQCeIrCmE0DgVtNpcQ9VoO6rAuyQWCYc+ukOl+F isuTA0Rquu96gd9ajPmYCmlxrweNtic6lj8C5VFC7qqjAV0oEEpZNOxWwsqdoJsW1P/M hzWyAckp5Ihxw5koysbI4SNT0eWCJKmVWlsG6I7j1i6oempu2hhqv8J0O/DvjdudlqxW LhV4sv2DXPs/2aBi9uDDT60TWnqXjZ2CYdCRKOBZ8YBbe3AND4SK6T4yirGeTqILwWno dCUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to; bh=+ZkjMFg+5xJiwL+jS2i7rmPkLEjGuBF0PplOs6zUsTA=; b=OiikhESe5RxaemtZeBdImUKVKZ1CbcCIwAUscU0HcqIANSoWSnvFIgpJsqPlTEKucM rkFM1+Iv05OFkE0SndbuT/ChedQemK7D2+UVxxkIPHv5zzjGnJ4SWdUUeSINPei/4C77 ODx7xeEMiuiMKq9f4TOSbGBu0zfQ09+PU1ZLGKfst8sZg5Pepkg+VDgRjWpBDUg3bw1w 7Z1Ih6XLqeYoCL0m2ATkaEahBEKU9T7XL10Taieg2fXZ/y6ateUv38AqiWoALYFXybQg Q2qTs1uO3EF1Xx7cXFx+UBi9GmdXWpjpaQWgh/uxbF87D+3mJbth+CU4hnWA1svtCukr pPWA== X-Gm-Message-State: AJIora9u7aYt6t+77/2gHEE/5Qd0hsKOlva9ttaz6qMimonL2g7vVUaS rvm5/kYyCvQn2nM4nAbBOXA= X-Google-Smtp-Source: AGRyM1vlqGbSLRkYdj/bTmVJqAfQsVZxbyy1YDc6ssYW++0bnIKdpmJslFzVgPzKXsY6c5WhjuwX8A== X-Received: by 2002:a17:906:ae0f:b0:726:32b3:17f4 with SMTP id le15-20020a170906ae0f00b0072632b317f4mr14296457ejb.116.1656675192422; Fri, 01 Jul 2022 04:33:12 -0700 (PDT) Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de. [217.227.105.195]) by smtp.gmail.com with ESMTPSA id q21-20020aa7cc15000000b0042617ba638esm14751459edt.24.2022.07.01.04.33.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Jul 2022 04:33:11 -0700 (PDT) Content-Type: multipart/signed; boundary="Apple-Mail=_CB778813-18C4-4DB7-8B4C-591568C7B62F"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <83o7y9dr2f.fsf@HIDDEN> Date: Fri, 1 Jul 2022 13:33:10 +0200 Message-Id: <FD127D22-071A-4C4A-A9DE-21E88EB8E909@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN> <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> <83tu81dszv.fsf@HIDDEN> <6829D55A-C056-485A-82BE-4E01F80307DE@HIDDEN> <83o7y9dr2f.fsf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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: -1.0 (-) --Apple-Mail=_CB778813-18C4-4DB7-8B4C-591568C7B62F Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 2022-07-01,, at 13:12 , Eli Zaretskii <eliz@HIDDEN> wrote: >=20 >> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> >=20 >> Big downside is not being able to produce some form of sharable text = or pdf output. >=20 > I'm sure there is some way of producing text from an image, nowadays. > But even if just the image is posted, it provides useful information. There is, on macOS, but it doesn't produce something useful from call = stacks, for instance. >=20 >> What would be a good place for such a script in the repo? Does = admin/macos sound right? But I'll wait for your okay for that. >=20 > I think nextstep/ is a better place. admin/ is for stuff useful only > to Emacs developers, whereas this script sounds like being more > generally useful. Ok. Can someone familiar with nextstep/ tell me where to put the = script? And, if it should be changed in some way? --Apple-Mail=_CB778813-18C4-4DB7-8B4C-591568C7B62F Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+23YACgkQc+obGZDF PmMS5Q/8D/S4E8ZIA+cqCDKg21tk581VqyoNrjR6VDugfzBwmW7jYOqhOP0lElNQ nLT3YlMuCZ8Px1qyC2AzeBwlzAKyZhYLOu+/C+clDWJZniH0cLeSmUO8toWidXnq O1NCLYbp01eCPF7jtjXY43h3QQrictaas/QSnm/JjBDjCZuYJd1vRuXAIS1ZGMDM RtBW4o8s5t4AUhv6EKnhscOT2IkZbmawj8oBtwVzCPA9dsamKPO5h55KdbFatqmg fOOALDaVzUvAShs+kQIrltXYVQzwyWieCs6X3LchS5BCe4iECKKkOTAuU5HHb7o7 1+Oqi2k9V6a5OF+E7qEzDspuBT0k46HMgmsO84pERnd00vHJpzgasSTJzhngFRFN tcbmvAhhwIM1xAFS4Txuz9Y/TxSqmABFCRGyMHgQ3KvrbyzayJfY8h0SUJzUtujR B7gcH8AmjCUyjgRfZzzJJ7+1+LtVgMlf5+4+MHEc04CBb2Bn4JvZUzCZuVgfkczy VhSvMJaoJdlJs0XO27d3Y0v/dveSO/wv4yswcQDXGQRGHhEKNuYo3NnR00O5OmsP 0AQeQ49UvP/a5N5g02gY1e6FHBSJnwbGVJwbmqk++IXtObhH6PlKPe0qNKPOYZm5 BHcrrrYKWI1fpvrRsfsi4lHDvGlDESmFeB4V5TqZsjRushiZtME= =5tLM -----END PGP SIGNATURE----- --Apple-Mail=_CB778813-18C4-4DB7-8B4C-591568C7B62F--
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 11:13:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 07:13:04 2022 Received: from localhost ([127.0.0.1]:36393 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7Ea3-0008JK-Sv for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:13:04 -0400 Received: from eggs.gnu.org ([209.51.188.92]:40382) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o7Ea0-0008J4-2k for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:12:58 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:32932) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7EZs-00086z-8e; Fri, 01 Jul 2022 07:12:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=BNILhsrL6JT3hH6qCrPfRZaXQLPU1i1VgK4pUc2j/gQ=; b=gYFZKMpWd6T2XGiCx7FH w+i+hGhHB/S9MYliN39pZHJ6j3p2pNUXDIGsHv+VTVuOLSpK5zFiXk+U5SCXImWXAXoPo/WYZ+9Jj G58n7XiSvzM2eV6ej7EyrZ7Hn0MZMaeQHedzMOidiwtP9BQerjO8z8R6x+uchpbHcoMhwxqk35C7K wLjYznRZTb9CUEkcOrCC3jHerBBavWMY2fMmiIGPgksTF9E0Cg7FurZXoWE1vyn2A0Vkmf0honfQy SK5G1X7A00V4gamXj3SNUy6NNUEcwYesJZnzEnaxCKk+PZoMhVQaq5+mmXfc0yqwGC65aoHRgouAM tIqpFUlbKvWZTA==; Received: from [87.69.77.57] (port=2610 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7EZr-0008SK-2t; Fri, 01 Jul 2022 07:12:48 -0400 Date: Fri, 01 Jul 2022 14:12:56 +0300 Message-Id: <83o7y9dr2f.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <6829D55A-C056-485A-82BE-4E01F80307DE@HIDDEN> (message from Gerd =?utf-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 13:04:28 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN> <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> <83tu81dszv.fsf@HIDDEN> <6829D55A-C056-485A-82BE-4E01F80307DE@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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 (---) > From: Gerd Möllmann <gerd.moellmann@HIDDEN> > Date: Fri, 1 Jul 2022 13:04:28 +0200 > Cc: monnier@HIDDEN, > larsi@HIDDEN, > psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > > > What kind of information is this capable to display? > > > > If it's useful, we could have this script in the repository somewhere. > > Good question, I'm exploring this right now. > > The only way one can look at the result of the trace is, AFAICT, using the GUI app Instruments. I'll send a screenshot to everyone except debbugs in a separate mail, because I don't know if debbugs can swallow that. Does it? It does (unless the image is very large, I think). > In the GUI, one can see the heaviest time consumers (% execution time, and time in seconds). One can see call stacks for them, narrow down on parts of call stack. The rest I'm trying to figure out myself. Looks and sounds useful. > Big downside is not being able to produce some form of sharable text or pdf output. I'm sure there is some way of producing text from an image, nowadays. But even if just the image is posted, it provides useful information. > What would be a good place for such a script in the repo? Does admin/macos sound right? But I'll wait for your okay for that. I think nextstep/ is a better place. admin/ is for stuff useful only to Emacs developers, whereas this script sounds like being more generally useful.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 11:04:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 07:04:42 2022 Received: from localhost ([127.0.0.1]:36364 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7ES2-00080C-4m for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:04:42 -0400 Received: from mail-ej1-f50.google.com ([209.85.218.50]:42724) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o7ERw-0007zt-MC for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:04:40 -0400 Received: by mail-ej1-f50.google.com with SMTP id fi2so3369121ejb.9 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 04:04:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc:message-id:references :to; bh=aFHHNwDkARJWQgzyBgZmjGgd2IO0eWuTTvcVTzFZSXw=; b=ARmMrFGyRVeJZ4B4RFXmw60Sb/IEmHSVkKMX5qzQ1xcrPMvBqIXD8x1AfrQWaBdPUf L6g7mJZmrpOMJsns2CIf1mnhWRSALvvkpbH9J89zE2u/qH/KoHOTIAxMZNUnY7T2XNdo WKVBGg9CPGKzTw2h1kP/5Kg4v/1tK31x6Jxiw1PBZYref8ERX/q90CgNK6b3JmZmC7A6 7p2LtU/DxPlZ9Dud1E8TvTZtGoDJ0RmGMGK5ldVyfIHflnj0g+crzrMD6MeNQSA0/Yf1 u2ehSJOpHJ/1f1BesmxNKyuyb3ilKZWiV+LpJolZc91WRogsoVTI9GZIbpyuCBCRIPwu 6zjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to; bh=aFHHNwDkARJWQgzyBgZmjGgd2IO0eWuTTvcVTzFZSXw=; b=xTM1EIN0tLbpBR35YppUM4D/yAyyNtwoWR6SbPbsd+jdyQhA6qItu65XuvMAQ59f+/ bMQ7DfT6kx7LM67LFjM9H/IyJ2P6mKMfeF2d9YX4WATw8Lqy4rv6TKAtAjgPhQuLD7iY Y+9SWuCGwsyg1CzIYmFSz8A0I38uMa8SlwCtiiKWB+lcYm2Cj99G+699BT6sfT1lTl78 blSPIT+Y7R4b6TxQ6lgWYHfTQWZ19ig058L2j+fnK1kaGD0g7igea3otvIjSw6oI1WKL fCh1sY9xp+ojvPDtfXsY19EKdgUMYnhI5eaTwTthKW+pLqQBz+Jrnajx74pTf8iYeMco AocQ== X-Gm-Message-State: AJIora9SRZHVPd55Uly7NOTmLsRD4ToiF36YmstOlREru1KiNfphkOnm glVjSKcMmd54tIdbE1bjTAs= X-Google-Smtp-Source: AGRyM1sPYWViqEGRmuTxYOg0f+fhsLwXiQ9TFENSLNT0C4ZaSw3yVMxpxgQeCsnvrbaGntxm+Vy4bA== X-Received: by 2002:a17:906:4c9a:b0:726:38df:6f6f with SMTP id q26-20020a1709064c9a00b0072638df6f6fmr13738457eju.485.1656673470774; Fri, 01 Jul 2022 04:04:30 -0700 (PDT) Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de. [217.227.105.195]) by smtp.gmail.com with ESMTPSA id i21-20020a17090639d500b006fe98fb9523sm10384469eje.129.2022.07.01.04.04.29 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Jul 2022 04:04:29 -0700 (PDT) Content-Type: multipart/signed; boundary="Apple-Mail=_B05B4633-621D-4C63-ADEF-2CDD8BEC57AA"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <83tu81dszv.fsf@HIDDEN> Date: Fri, 1 Jul 2022 13:04:28 +0200 Message-Id: <6829D55A-C056-485A-82BE-4E01F80307DE@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN> <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> <83tu81dszv.fsf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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: -1.0 (-) --Apple-Mail=_B05B4633-621D-4C63-ADEF-2CDD8BEC57AA Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii > On 2022-07-01,, at 12:31 , Eli Zaretskii <eliz@HIDDEN> wrote: >=20 >=20 > What kind of information is this capable to display? >=20 > If it's useful, we could have this script in the repository somewhere. Good question, I'm exploring this right now. The only way one can look at the result of the trace is, AFAICT, using = the GUI app Instruments. I'll send a screenshot to everyone except = debbugs in a separate mail, because I don't know if debbugs can swallow = that. Does it? In the GUI, one can see the heaviest time consumers (% execution time, = and time in seconds). One can see call stacks for them, narrow down on = parts of call stack. The rest I'm trying to figure out myself. Big downside is not being able to produce some form of sharable text or = pdf output. Looks useful to me. What would be a good place for such a script in the repo? Does = admin/macos sound right? But I'll wait for your okay for that. --Apple-Mail=_B05B4633-621D-4C63-ADEF-2CDD8BEC57AA Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+1LwACgkQc+obGZDF PmPP/w//dv9Xs/QFBKBEHogGxDD7OFIPmRqjlwzAoAl05ZHX8fxfX0wl2VBfvYH7 Yf+NuMCiA4V6kCcSZT1Kr8L+egjHXwWatqFizOe/szFQKQor2c15W8XrNSWUl4Y5 Xz0u2h6SnlpaqG0JXVqH59eSPsX1JmDg7GzsEQuFGkxtgHOSuDF0fpDahT2zwxbC U/7Fi+stXIb8s6FKfbu5f51Iuwh8Lq9oM3YP5eFBGXhUKQmDMOLoD/honYhk3wsP 3+ZWYzBJ0jIq4VzSkoJgKj4JdOLmjVyH8QtkyUeBxJmBl78x/HKuLLMiZIAPEhKd WNHcQ2Mfrhb0iquf7k1/9ka763ao3ypctb0O80vDB4h0MCdFHkoSDjf8+wt4DUgi OA13Dpioph167yapYoX1cweHH9FB47gkSQyzAYp3iNm/0jbcg6uVnmZ6uJgAzni4 eNNkE5xHXLTUTkWYF/KJflQv4WHCJr9Z/gVGK3e7Vrf+tXdBHtxP9CN5Yc/MysK1 d5mxtTJMQsm14eGOWyZlD9PlANV3qvQannyloIbpVCVDDBb/Aq75I6EgoN6VS3nw lbAShlmEY6ihQKab81zWA3Q/9Q566gsewIwQHIdlv6pnUvD1P4bGiO32zIFHxeuP 60I6MsI7bar+Qy+WTm27r9TuoIQUekeOBLkoHCQU/okEQYR8xcY= =Ti8X -----END PGP SIGNATURE----- --Apple-Mail=_B05B4633-621D-4C63-ADEF-2CDD8BEC57AA--
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 10:31:51 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 06:31:51 2022 Received: from localhost ([127.0.0.1]:36327 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7DwB-0004sb-EX for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 06:31:51 -0400 Received: from eggs.gnu.org ([209.51.188.92]:57556) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o7DwA-0004sP-DF for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 06:31:46 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:56220) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7Dw0-0001vz-P8; Fri, 01 Jul 2022 06:31:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=vO6QXQuJ2P1oiCBoXJ+uXYwqovwxSq6z05mk3F5drFo=; b=ADbPCdUB/E9er3kiumBB dBQvXK2ffWDzM+UoQChnNFq4c/1oTkq0K41oa/tea95sVOGT+drjiWFa76msyHmpXLXtP8poJRHRG S50P7qShoPYpOct0hxD9h82XMfALn1k7F5pPkxv7wA0km3oCf6CUAu4M2HQ/o+0NBjdhgeC5HsiY2 fWjgA+q7EVzEFZHCQ0kH4dtOWqXOE9i+CNNrKywKMrA6C1RQ738IocCDsQkODuol9Pq+AxmN6Z0YT FoCqcEfD64L6z29o8bfRV/mLHMJtXy7diMYNXrlD1gzcIsqFIRiCH2EqcEbDTjkyzRVX68M5h+uCd NYraz3P3ia6qBw==; Received: from [87.69.77.57] (port=4008 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o7DvX-0001Fq-9V; Fri, 01 Jul 2022 06:31:27 -0400 Date: Fri, 01 Jul 2022 13:31:16 +0300 Message-Id: <83tu81dszv.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> (message from Gerd =?utf-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 10:49:04 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN> <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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 (---) > From: Gerd Möllmann <gerd.moellmann@HIDDEN> > Date: Fri, 1 Jul 2022 10:49:04 +0200 > Cc: monnier@HIDDEN, > larsi@HIDDEN, > psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > > > Or (on GNU/Linux only) under 'prof' -- which doesn't require you to > > build a special version of Emacs, and still produces detailed CPU > > usage info. > > No one will care, that's why I'm telling: > > I just found a way to profile Emacs on macOS 12.4, with Apple M1 chip, using Xcode 13.4.1. Please see the attached shell script. It seems that Gprof is not supported on my platform, like GDB. > > I'm not yet sure how useful/reliable and whatnot that is, but it looks promising, and it doesn't require building with special compiler flags (I used -g -O0). What kind of information is this capable to display? If it's useful, we could have this script in the repository somewhere. Thanks.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 08:49:17 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 04:49:17 2022 Received: from localhost ([127.0.0.1]:36233 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o7CKz-0001yb-9v for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 04:49:17 -0400 Received: from mail-ej1-f42.google.com ([209.85.218.42]:35665) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o7CKv-0001yE-07 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 04:49:16 -0400 Received: by mail-ej1-f42.google.com with SMTP id pk21so2829384ejb.2 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 01:49:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=KiX/reUdlzLlUkoc/NLHKnI7I8kX61+/G3VOaBWoKys=; b=fsnmFLlvy/1fJpcdNaY/3ZdHJftUMLr2jNkNlDWJPdGVVfV889HhXr8vH5E6QxCKZG aVefWtGvOkrwYtDHLeeyLorl03/F6YHMa/Ida5pW6EurpfHO2R2rjgFUCPLN81G3lgyl K5hYt52fv7hAe2/JVW0ryNunzVhY56G1zF+N56uPX13JJRX/p05aZA/gyT02843B2h5f RnaYHnJiYiXUSTrlF4DEUjeGs4Ljvz2Vw4tbU8DNBKdUowqZg2Qh3ayEiTcDVQXo/nL4 S6O6Q7GHT/fHBaWAwRPENDP7lhrRLmeyhbo37tn4BJ7I89xzH5RyBI83Ow88sLRm/Ws5 s4TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=KiX/reUdlzLlUkoc/NLHKnI7I8kX61+/G3VOaBWoKys=; b=Zk98lQ0Ap4H9EUKswV8SdNBRyHO1TaSUb0NtpHWAqhmzdSOH4XbAr4OxtEnKfGCuCj 8A5tj/+6OxhO9WjCmAhdRLRMRLWtKnI1W8kybHftbEn7Wdmlq1qMTzgJck4NPgFxe0jr JM53FJiaxxC9scrqnZua9YczKZPoNkcdenUWhiIYBhH79f/g+iwJf782lPS4iJvNbKk4 de0vIPpCz1NqG57wjNsiZt+B3YcWU92ZcgoO0VSN1era73usgCFxm5mBbvt/4+bo7l+D bEqAx7CHQ7LcWIMzWsK45Ti5j96cpra/Tof5QVGtt79rB5gdL0z7NDQNyMC1U4O861hb aWaQ== X-Gm-Message-State: AJIora+fMLcGyErkab9Yb2KDF74zfmVpuXQ5qZv4VQVUFb3Z3Zq4ft9i q4BtdGHyeH+PnTwjTjfoWuA= X-Google-Smtp-Source: AGRyM1vkFh2G0rYf3DnFk+MxaeiaDKt4IwNWwouY2LW1W6VJ8zfreY3cYTahXRb5C10qmLpLHDBgjw== X-Received: by 2002:a17:907:9605:b0:6f5:c66:7c13 with SMTP id gb5-20020a170907960500b006f50c667c13mr13547861ejc.66.1656665346818; Fri, 01 Jul 2022 01:49:06 -0700 (PDT) Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de. [217.227.105.195]) by smtp.gmail.com with ESMTPSA id kw7-20020a170907770700b0072a815f3344sm1017696ejc.137.2022.07.01.01.49.05 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Jul 2022 01:49:05 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> Message-Id: <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> Content-Type: multipart/signed; boundary="Apple-Mail=_037C6668-4802-4837-A7FE-AC1502F24E39"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again Date: Fri, 1 Jul 2022 10:49:04 +0200 In-Reply-To: <83y1xde5cs.fsf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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: -1.0 (-) --Apple-Mail=_037C6668-4802-4837-A7FE-AC1502F24E39 Content-Type: multipart/mixed; boundary="Apple-Mail=_89984787-C040-489D-8B4B-3BE92155FBAD" --Apple-Mail=_89984787-C040-489D-8B4B-3BE92155FBAD Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii > On 2022-07-01,, at 8:04 , Eli Zaretskii <eliz@HIDDEN> wrote: >=20 >> Would it be possible to run this with gprof profiling? I think that = could give some clues what is going on. >=20 > Or (on GNU/Linux only) under 'prof' -- which doesn't require you to > build a special version of Emacs, and still produces detailed CPU > usage info. No one will care, that's why I'm telling: I just found a way to profile Emacs on macOS 12.4, with Apple M1 chip, = using Xcode 13.4.1. Please see the attached shell script. It seems = that Gprof is not supported on my platform, like GDB. I'm not yet sure how useful/reliable and whatnot that is, but it looks = promising, and it doesn't require building with special compiler flags = (I used -g -O0). --Apple-Mail=_89984787-C040-489D-8B4B-3BE92155FBAD Content-Disposition: attachment; filename=xctrace-emacs.sh Content-Type: application/octet-stream; name=xctrace-emacs.sh; x-unix-mode=0755 Content-Transfer-Encoding: 7bit #! /bin/sh # Execution profile for Emacs on macOS. # # Xcode command-line tools must be installed (use xcode-select # --install). # # Build Emacs with -g. Install Emacs with 'make install' which copies # stuff to nextstep/Emacs.app # Assume we are inside a Git repo. Chdir to its root. # Note that .git might be a file when in a git worktree. while [ ! -e .git ]; do cd .. if [ `pwd` == "!HOME" ]; then echo "$0: Not in a Git repo" exit 1 fi done # Check if app was built if [ ! -d ./nextstep/Emacs.app ]; then echo "$0: Cannot find Emacs.app directory" exit 1 fi cd ./nextstep/Emacs.app # Directory where to store xctrace outout trace_dir=Xctrace if [ ! -d "$trace_dir" ]; then mkdir "$trace_dir" fi # Trace and show the result in Instruments trace=`xcrun xctrace record --template="Time Profiler" --target-stdout - \ --output "$trace_dir" --launch -- ./Contents/MacOS/Emacs \ | grep Output | cut -d : -f 2 | sed -e 's/^ //' -e 's/.$//'` echo "Trace file is $trace_dir/$trace" open /Applications/Xcode.app/Contents/Applications/Instruments.app \ "$trace_dir/$trace" --Apple-Mail=_89984787-C040-489D-8B4B-3BE92155FBAD-- --Apple-Mail=_037C6668-4802-4837-A7FE-AC1502F24E39 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+tQAACgkQc+obGZDF PmPYjQ/9HfdrOHm3mmJgtqsTYCxWV3HqMvbpaoIwQZmJgQQ0ouOTDPZwY0WkeR+Q UIWHPwKsYhrrip8vwCGBeXQn4aPfVi6EdRRY+Hdp7TecP/2LKxLmWuJ6SgK8xNA2 iPVUowTyBaafOYGTeTt/IJqhyH+VHJM6EMVF1zq+I8cImuTWXWjFTj7qDd/ZZ/8E i5t1RLCufT/SoIVLjrKDW8HjuO3xOf4+QThK/pZ90pPzmqsk0jsN630aK4ECGp52 LfvVPo3Qfw1DBdf4sT76PqAdddc6/gG7z1YruFCBryojZp5E3SxOUfIYhRziI7FK wgTwNIIMxEX4LNBEmSsiatk5DBOciAMFD9mYXq6FTgtVG/5OgInh5TzkGnKnqbZ7 jyiISMpLiHO4wGcZEA04sh3OBpQo3i4wWV8v6Rlp0aGiUS1N3k8hWzmIpKT0ek3+ FXx1U8HD/qSSDdqeRRKwLlGCaPirGHpO8/9Z62kXDneDKLAkp1/zaxjiwDMDwLzK Wijjx9wMsnkgbbxOUAVOYpLXJjBF4xz7sYIb4J06sQdHXAdfi+jtAlazH59n7yJU s5ICjtvZba2XaJGrDnWYPjAeAlwdvwPcfaH5PY9BsxFCXQnDGbeiiEsRh0yqXFkS AkBTuwaBy3cOe0HTk74CkRTtuZLhLgegVeGHuIw4/TobjuEb8lY= =dSBl -----END PGP SIGNATURE----- --Apple-Mail=_037C6668-4802-4837-A7FE-AC1502F24E39--
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 06:04:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 02:04:28 2022 Received: from localhost ([127.0.0.1]:36122 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o79lQ-0005mg-Ai for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 02:04:28 -0400 Received: from eggs.gnu.org ([209.51.188.92]:53916) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o79lL-0005mQ-DH for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 02:04:22 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43036) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o79lE-0005rw-Nv; Fri, 01 Jul 2022 02:04:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=M8s4HZ5zWBP9ztEmvTaQkaJlcgO9YG96DiQbNjzRDA0=; b=eol4sWdwWA1A6kVHf1tq qpEz+AtBUw6drgRucgUWlLxoFnmzqfKi6v+nBrw6tfz22I11fmO7+GF309105mKJBNfnAHf9HCFrq +nAet0kYXj+smlXbfYaD2uqf8I6u/XW3WO4hX5DdnRJDLwLv58WrgmdK4jcEktGdmC1g/uiBPcwzn dexQn9KXT7dED03WFhXvnF6fJR0mKqJ8PoJYmDFELj2QQN4PDq/4+y9m+2Co8TCy2hit5gXUgUcf8 +szsDN5MrA30NPojVvLBQ5bb5DiiZ2J4j8q/HFK4KG9MVdlRrAh+0Eht8s6K1ceNFSEjyE9MYqqjj D88sHcYSoJX2IQ==; Received: from [87.69.77.57] (port=3619 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o79lB-0003fN-W5; Fri, 01 Jul 2022 02:04:12 -0400 Date: Fri, 01 Jul 2022 09:04:19 +0300 Message-Id: <83y1xde5cs.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> (message from Gerd =?utf-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 06:42:23 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <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 (---) > From: Gerd Möllmann <gerd.moellmann@HIDDEN> > Date: Fri, 1 Jul 2022 06:42:23 +0200 > Cc: Eli Zaretskii <eliz@HIDDEN>, > larsi@HIDDEN, > psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > > > [1:text/plain Hide] > > > > On 2022-06-30,, at 21:56 , Stefan Monnier <monnier@HIDDEN> wrote: > > > >>> Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or > >>> jit-lock either during their operation or during the > >>> subsequent redisplay phase in the current code: the one-line is all > >>> fontified once and for all when you open the file and after that > >>> font-lock is not involved any more (until you make an edit, that is). > >> > >> That's only true if max-redisplay-ticks is zero. > > > > Why would that make a difference? When I try `master` with this set to > > 100000, the file still shows up with font-locking, so apparently it's > > been fully font-locked despite `max-redisplay-ticks` and after that > > font-locking (and syntax-propertize) won't make any difference any more > > (until the buffer is edited) since they're already done. > > [ Of course font-locking (and syntax-propertize) still do have an > > effect in that the text-properties they applied can impact the time it > > takes for the redisplay to do its job; so by "won't make any difference" > > I mean that 0-cycles will be spent running font-lock of > > syntax-propertize code. ] > > Would it be possible to run this with gprof profiling? I think that could give some clues what is going on. Or (on GNU/Linux only) under 'prof' -- which doesn't require you to build a special version of Emacs, and still produces detailed CPU usage info.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 05:27:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 01:27:30 2022 Received: from localhost ([127.0.0.1]:36099 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o79Be-0004gs-Gx for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 01:27:30 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47524) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o79Bb-0004gc-TJ for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 01:27:25 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42676) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o79BU-0000Mt-GE; Fri, 01 Jul 2022 01:27:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=WkC74hCrttgLG70vX9XY3jovMEHyatydubaZV/ofr6M=; b=SYh78Ha85iwX hj/QgibhHVURadrKPvObcVgJYvfcY7OeVcnTz9OE6xAb6vqJB0cQEw3cTGYufkRXFuxwVWBf7GjEL CnpFQcfveKZojoobDmfNGIJTSq+lWeoSBFxpSMOSuqPPlOfvNGg/+OjemGZq8q6+jM//AQ+YH6wMM t/jnXTePiky/VNIgBQMFrKwl/YFXxUsC6X4A9Asqh/iJThStmUtEQkJeSwtk/+gFav08zzuiysaca wMd33VI9p2NAcFDKE48NAoEgrbDXMs81jJFAteCyhJrTmdqLXcjYShoozj1Rf9n3AnjMZHlXXp5in 9qFKNkQUgL9jtjCeGor23w==; Received: from [87.69.77.57] (port=1368 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o79BT-0002hy-IU; Fri, 01 Jul 2022 01:27:16 -0400 Date: Fri, 01 Jul 2022 08:27:24 +0300 Message-Id: <835ykhflmr.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvedz6x729.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Thu, 30 Jun 2022 15:56:41 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: gerd.moellmann@HIDDEN, larsi@HIDDEN, psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Thu, 30 Jun 2022 15:56:41 -0400 > > >> Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or > >> jit-lock either during their operation or during the > >> subsequent redisplay phase in the current code: the one-line is all > >> fontified once and for all when you open the file and after that > >> font-lock is not involved any more (until you make an edit, that is). > > > > That's only true if max-redisplay-ticks is zero. > > Why would that make a difference? Because if it is not zero, we won't let the entire line to be fontified, we will stop that before it gets to the end of the line. > When I try `master` with this set to > 100000, the file still shows up with font-locking, so apparently it's > been fully font-locked despite `max-redisplay-ticks` You see only a small portion of the file. > and after that > font-locking (and syntax-propertize) won't make any difference any more > (until the buffer is edited) since they're already done. > [ Of course font-locking (and syntax-propertize) still do have an > effect in that the text-properties they applied can impact the time it > takes for the redisplay to do its job; so by "won't make any difference" > I mean that 0-cycles will be spent running font-lock of > syntax-propertize code. ] Sorry, I cannot parse this at all.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 04:42:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 01 00:42:36 2022 Received: from localhost ([127.0.0.1]:36072 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o78UG-0003HY-Cq for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 00:42:36 -0400 Received: from mail-ed1-f54.google.com ([209.85.208.54]:36711) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o78UB-0003HE-LW for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 00:42:35 -0400 Received: by mail-ed1-f54.google.com with SMTP id e2so1479950edv.3 for <45898 <at> debbugs.gnu.org>; Thu, 30 Jun 2022 21:42:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc:message-id:references :to; bh=k3t9ZO1H8Lg0MBjCAFNrDkNReEr5t0KBE53LUWh1gUQ=; b=OnzVrZbi9/26oAFBIOPWfcaLJ+tYkSW9NmAd7SqPiZ+sVHJaP0XOh6or9qXHj567v7 NwWq7c1za7Y0E4xBRZSY2VOvY985eH7mI0NZuMYcAWkxubTuON61NCQCoeEvv71uLgbk V/jnh5B7kKVHzCnJIgrRgBk9wswguzZ45GlXrXcqBm/tZYjHHpnh9HMxliuyTtxVZNZB dayKcKTem2FekRSWLRoyqfYRv5RMJ5VVBQYh1SLJ5P41tPC59v0/66DO9x/R0KiiOS7H NLUibaPiOKGf6W8n/WAtwn2+a+pdqivf0dGh0ok/o4ywx84WZXKblKtIJzuycifDhsvt Z1yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to; bh=k3t9ZO1H8Lg0MBjCAFNrDkNReEr5t0KBE53LUWh1gUQ=; b=fzjBDc/eLerQZkFChg0s5ZZ/XrQAlR1e0ar+Msmzhp7cqlBW87C4Ubww3F42IAm5nE Ae3gMFZf0qi+Sb1nMQ7/qXuv9xrgyjkJ9vk5njFlW+r8X/xjJ0DYOSvUgMfdp0HmcLtn dg4k4w7QEKkA7C6a9/+CgA9bx4I7YLTATHOirTLbvuU8gIM3UkMdOJTtRn/4WI1jjDzQ 7wRALb5BU9wDz3cr5KOKAODQ63e8USIWY88CV1HIKEtj4jl2zL63pvRRC7bRpBtrepZh ZSBH7QOk+Y6F+Gf6Adxn9etUJJL0RGf6CtoT/tTSxelHuXsJLWByAqcvFm8HsxwoQcZ4 iWhA== X-Gm-Message-State: AJIora+8ITOfN+CTnIohdJ/Y8ERDKVMc2bAyvOG7xDFFOe7k2/AWRZdH cdMRVT45CcZjWHaJ/F6eRPc= X-Google-Smtp-Source: AGRyM1t3gWu3/lnXgBi6VX8yU6TLsH7mPteyNBEAQCVx4BUEO+ehCUUby3NpUQOaH79lEp6MkMBjtw== X-Received: by 2002:a05:6402:d05:b0:425:b5c8:faeb with SMTP id eb5-20020a0564020d0500b00425b5c8faebmr16055153edb.273.1656650545618; Thu, 30 Jun 2022 21:42:25 -0700 (PDT) Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de. [217.227.105.195]) by smtp.gmail.com with ESMTPSA id n22-20020a1709067b5600b00722ea7a7febsm9875782ejo.194.2022.06.30.21.42.23 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Jun 2022 21:42:24 -0700 (PDT) Content-Type: multipart/signed; boundary="Apple-Mail=_15B25F76-91CE-4D99-B16A-8BDB89ED1B09"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <jwvedz6x729.fsf-monnier+emacs@HIDDEN> Date: Fri, 1 Jul 2022 06:42:23 +0200 Message-Id: <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> <jwvedz6x729.fsf-monnier+emacs@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Emacs-hacker2018@HIDDEN, larsi@HIDDEN, 45898 <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: -1.0 (-) --Apple-Mail=_15B25F76-91CE-4D99-B16A-8BDB89ED1B09 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii > On 2022-06-30,, at 21:56 , Stefan Monnier <monnier@HIDDEN> = wrote: >=20 >>> Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or >>> jit-lock either during their operation or during the >>> subsequent redisplay phase in the current code: the one-line is all >>> fontified once and for all when you open the file and after that >>> font-lock is not involved any more (until you make an edit, that = is). >>=20 >> That's only true if max-redisplay-ticks is zero. >=20 > Why would that make a difference? When I try `master` with this set = to > 100000, the file still shows up with font-locking, so apparently it's > been fully font-locked despite `max-redisplay-ticks` and after that > font-locking (and syntax-propertize) won't make any difference any = more > (until the buffer is edited) since they're already done. > [ Of course font-locking (and syntax-propertize) still do have an > effect in that the text-properties they applied can impact the time = it > takes for the redisplay to do its job; so by "won't make any = difference" > I mean that 0-cycles will be spent running font-lock of > syntax-propertize code. ] Would it be possible to run this with gprof profiling? I think that = could give some clues what is going on. --Apple-Mail=_15B25F76-91CE-4D99-B16A-8BDB89ED1B09 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+ey8ACgkQc+obGZDF PmM8fQ/7BvrbXL917at0cufuZuoUXAP+vmmDCjAzk0OqgFxJiYl89UaCt06PbEXn miTNuWnpycWUX00TzQaEUc+7Qn3EqQdq1BqWPjXf3ra6mra2Lszs3bN7U3lS4d3l 5eZtNzmBl35wR3iHKPcHVSU/mINacNVOs478PKEsL9tX5o6eY99tNViONfqAfeni 0nM1ygPwqhBys7A7x1rtJT/ha+OPtQoxw6ncJwvdDbBQFwfCV0SHA83X43aFW/JT VMdWiFElERsvaKKg5kP33Icb2XObIMd8C/Tn1yXmUby+7sZnFJgygYZ0i5M0lxE8 aGRjOGY09osrQrmEUnrcvyRBydn+3zkFoYz4IYG7LiwRLQF9xEwSpJi17T3ceGPI vY8NT/fRwWPdAfImgFRXKVPOj9nnE/bmmIp4UYrgi1GJNZzGGk7qNzjGqSiLwxLk FEeI/O9Tx36vHsKyksLzl3XnW4hq+zLcxWCkFkLoiS4LRB4uGtaxzpEMDu2DVyac /82rzu8k/WQJODzH8k/gAMi/NOlEeRZqfGruuQfENtYB6HtkKugBN3Vs2wU6pt2Y aiaCbdWFzdhPVJ0hDcm4I20X9weOFK3aUwYjAXA4F7rBsLkcHivO9r+N0o1AoJiK TU51Z6O2aRdfY0ICIuPJNSf+I3OHW4urBXkkQ3qMZox8Sl3GIO0= =obe2 -----END PGP SIGNATURE----- --Apple-Mail=_15B25F76-91CE-4D99-B16A-8BDB89ED1B09--
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 30 Jun 2022 19:56:53 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 30 15:56:53 2022 Received: from localhost ([127.0.0.1]:35642 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o70HV-0007p3-2J for submit <at> debbugs.gnu.org; Thu, 30 Jun 2022 15:56:53 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:30174) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1o70HS-0007ok-UG for 45898 <at> debbugs.gnu.org; Thu, 30 Jun 2022 15:56:51 -0400 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 6496680677; Thu, 30 Jun 2022 15:56:45 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 1BDFE804F6; Thu, 30 Jun 2022 15:56:44 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656619004; bh=ulw7piGMO0wur2AUpwWwbYs1Yutb+RV1P7AL/Ab89Yc=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=G/vCy18dpLrgAGH1N1eNa1z2onektJlU7eLexQFMYA/Do2SdJnIrazAN1UFEJy7Pq X0pN7lKhHhV4zxhgE52W1bk+uot2A9VqgoFG97x+hayf1P6j48YL7ogqWlcOnbjKBb ac5xQmkPwzF66KbcaJLAGM0WeJFok0ncsNW2YT7l5Fn/5+wlvi9lB7Z4AR5Z95a/wW aTj/oi6L64QqNhd8zEa+oTt36hXMRB1i6R2M6kCIywaBCrWcmHuO+CK+sXceOykemn jivpi4WmTGn4H5WFFwxohP/szbT6d3CfgC1yG+OCTU0UE4h+oyM5eIG5ayvDOBdbBs rstpBh0kVcq6g== Received: from alfajor (unknown [45.72.196.165]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B12D412023B; Thu, 30 Jun 2022 15:56:43 -0400 (EDT) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again Message-ID: <jwvedz6x729.fsf-monnier+emacs@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN> Date: Thu, 30 Jun 2022 15:56:41 -0400 In-Reply-To: <837d4yf18n.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 30 Jun 2022 21:35:36 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) 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.053 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) >> Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or >> jit-lock either during their operation or during the >> subsequent redisplay phase in the current code: the one-line is all >> fontified once and for all when you open the file and after that >> font-lock is not involved any more (until you make an edit, that is). > > That's only true if max-redisplay-ticks is zero. Why would that make a difference? When I try `master` with this set to 100000, the file still shows up with font-locking, so apparently it's been fully font-locked despite `max-redisplay-ticks` and after that font-locking (and syntax-propertize) won't make any difference any more (until the buffer is edited) since they're already done. [ Of course font-locking (and syntax-propertize) still do have an effect in that the text-properties they applied can impact the time it takes for the redisplay to do its job; so by "won't make any difference" I mean that 0-cycles will be spent running font-lock of syntax-propertize code. ] Stefan
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 30 Jun 2022 18:35:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 30 14:35:42 2022 Received: from localhost ([127.0.0.1]:35606 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o6z0s-0005NX-2K for submit <at> debbugs.gnu.org; Thu, 30 Jun 2022 14:35:42 -0400 Received: from eggs.gnu.org ([209.51.188.92]:55572) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o6z0p-0005NJ-Qu for 45898 <at> debbugs.gnu.org; Thu, 30 Jun 2022 14:35:36 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58380) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o6z0i-0005qp-Q8; Thu, 30 Jun 2022 14:35:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=fFCcbDyULsI7Cs/KEADZ9cWzKW5XE0XtkBYqhGbNaTw=; b=CIHNzdmigDsB UEdOyzaZf7wAMvOYUJ7tAELl5t1gdz2BShufS4HgibJIYXzZ2RS9pywF7NUftJLxD7Ka0mGEOWkp9 e9rhEaSD4xVJLjgkwlxuef0IWijGV6NzfrMFzE/L3D/1q1zEafYn90KaC0tD234VbbfqTq6ZaT6qS Y3YjwMltFlq9bKtliEXWICDBrd0VlQSpF+W9QlUJ/GcSudvR9JPlydHdQM3cUlrhBIImHqpsNPSLH 5PmCR1Y4vjxW7FETt90YFJ+bdvb6IQXqdhS+E6g3k/+QrVcLvYuDUlNgcOCNlZ8EUdhDtrzxaVpJs KlKmrlUcvF73oAyp2OBMVQ==; Received: from [87.69.77.57] (port=1171 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o6z0i-0006v3-A0; Thu, 30 Jun 2022 14:35:28 -0400 Date: Thu, 30 Jun 2022 21:35:36 +0300 Message-Id: <837d4yf18n.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Thu, 30 Jun 2022 13:22:29 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: gerd.moellmann@HIDDEN, larsi@HIDDEN, psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Thu, 30 Jun 2022 13:22:29 -0400 > > > If so, I guess the expensive part is somewhere else. > > Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or > jit-lock either during their operation or during the > subsequent redisplay phase in the current code: the one-line is all > fontified once and for all when you open the file and after that > font-lock is not involved any more (until you make an edit, that is). That's only true if max-redisplay-ticks is zero. > > I'd install this patch regardless, because it sounds like TRT not to > > let syntactic fontifications run amok this way. We do similar stuff > > in bidi.c for similar reasons. > > OK, I pushed it to `master`. The improvement is far from convincing, > but I tend to agree that it's "The Right Thing". Thanks.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 30 Jun 2022 17:22:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 30 13:22:42 2022 Received: from localhost ([127.0.0.1]:35532 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o6xsI-0001JY-KV for submit <at> debbugs.gnu.org; Thu, 30 Jun 2022 13:22:42 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:50721) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1o6xsE-0001JF-70 for 45898 <at> debbugs.gnu.org; Thu, 30 Jun 2022 13:22:40 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 746F3100135; Thu, 30 Jun 2022 13:22:32 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 27086100121; Thu, 30 Jun 2022 13:22:31 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656609751; bh=ZXJZajxAYPj9AWPL/Xy8ES3m1MukRpJyRGXEpRb8vXQ=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=dtQUendV3bU4WGCjVNBUKQnj76feBM7mKOdudWC7ynbI15GOs5pjl86xjucVqUoGf bxUAej3PeiYajzWK//xDRcH0wcuXxlxoWcQBxd18XIQ1gA79wOL3JAYOrOuWvkRk02 Yy3APx05LTxVietRxmWCKixbvmSt/tz338k+y2p83me7cV4m8PBHVl3XE8pCWxZaB4 MyAEXZ2xsVQ7tqjb1uINLFCUkvF/10jdjghSsNBdrZzd0xkfnimBaZc6D1bDjE+dMQ oSFOhZY4cZLcAquzYRd7kIA3ToLpbSUP20tKVyypdZOyaNnHH2Sz3g9bm9CLMrJ7c2 shzbnwCtx5IZQ== Received: from alfajor (unknown [45.44.229.252]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 98E73120180; Thu, 30 Jun 2022 13:22:30 -0400 (EDT) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again Message-ID: <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN> Date: Thu, 30 Jun 2022 13:22:29 -0400 In-Reply-To: <83mtdu68cl.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 30 Jun 2022 08:14:34 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) 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.015 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) >> and then tried to move around in the buffer, search with Isearch, and >> insert a few chars. >> I don't notice any difference with or without the patch :-( > > If you start moving with C-n or C-v, Emacs becomes unusable > approximately around the same buffer position with and without the > patch? Yup. And moving at the end of the file with C-p and M-v is also "about as bad". > If so, I guess the expensive part is somewhere else. Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or jit-lock either during their operation or during the subsequent redisplay phase in the current code: the one-line is all fontified once and for all when you open the file and after that font-lock is not involved any more (until you make an edit, that is). The only operation where I can see an improvement is when editing the file near the beginning where the `master` code take a couple seconds per edit (the time to refontify the whole line/buffer) whereas with the patch it takes a fraction of a second (definitely not immediate, tho). It also does open up the file a bit faster, but it pays for it by taking more time to jump to the end: - open file: master=5s patch=3s - M-> : master=10s patch=14s [ Note: these time measurements are *very* approximate. ] So while we do get some benefit occasionally by chunking, the chunking itself slows us down. > I'd install this patch regardless, because it sounds like TRT not to > let syntactic fontifications run amok this way. We do similar stuff > in bidi.c for similar reasons. OK, I pushed it to `master`. The improvement is far from convincing, but I tend to agree that it's "The Right Thing".
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 30 Jun 2022 05:14:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 30 01:14:43 2022 Received: from localhost ([127.0.0.1]:60739 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o6mVi-0002cD-NE for submit <at> debbugs.gnu.org; Thu, 30 Jun 2022 01:14:43 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37870) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o6mVf-0002bo-OY for 45898 <at> debbugs.gnu.org; Thu, 30 Jun 2022 01:14:36 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43496) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o6mVY-0005UI-EU; Thu, 30 Jun 2022 01:14:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=tVFjS/KXHoKVLe9JJtT0Ncdvmb/FTUBGJVxP8k0qpCg=; b=DHFGODFfmRdT cFOgqDAaDajoZ+gbcnsOSqDvj1tURMjJ02xSAcUgCL4Tl2++Wd1V09dtIkQ0YQv5D1AfLBAvJ9zBq LlEIkcI8O7LvUcr++APrZNuCounV4+gmayrK1bsGXqj8DDc5H+TGGftur6cZeQw6GbKCEyLsTTWf2 0Om+SyStqzU4WFblmBk02GDt4zBc3uSJL68xQ71QSyBWkRWxhdSo0GPnWOyRxxOmqWG0Ucunx0FTl +p9ASw+FyRUYz6RYEQ4GHETjtk/2z7Rln6ZxSez+ikJ6bI505Di0tcdSGk+ObYxjd/PkApV0BXDov oj+mMUNX0Gg0olMp9EJDpg==; Received: from [87.69.77.57] (port=3011 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o6mVX-0006q5-Sv; Thu, 30 Jun 2022 01:14:28 -0400 Date: Thu, 30 Jun 2022 08:14:34 +0300 Message-Id: <83mtdu68cl.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Wed, 29 Jun 2022 17:07:45 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: gerd.moellmann@HIDDEN, larsi@HIDDEN, psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Wed, 29 Jun 2022 17:07:45 -0400 > > >> It doesn't seem to make much difference on the `medium_line.json` > >> example from Phil, tho :-( > > In what case does it make much difference? > > None that I can see :-( > > > And how did you test whether it makes a difference? > > I just did > > src/emacs -Q ~/tmp/medium_line.json > > and then tried to move around in the buffer, search with Isearch, and > insert a few chars. > I don't notice any difference with or without the patch :-( If you start moving with C-n or C-v, Emacs becomes unusable approximately around the same buffer position with and without the patch? If so, I guess the expensive part is somewhere else. I'd install this patch regardless, because it sounds like TRT not to let syntactic fontifications run amok this way. We do similar stuff in bidi.c for similar reasons. Thanks.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 29 Jun 2022 21:08:00 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 29 17:08:00 2022 Received: from localhost ([127.0.0.1]:60352 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o6eul-0005fE-Th for submit <at> debbugs.gnu.org; Wed, 29 Jun 2022 17:08:00 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:48088) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1o6eui-0005et-38 for 45898 <at> debbugs.gnu.org; Wed, 29 Jun 2022 17:07:58 -0400 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 54892441318; Wed, 29 Jun 2022 17:07:50 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 55E7D4416B1; Wed, 29 Jun 2022 17:07:47 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656536867; bh=PXojWVq8F32lFvGSm6l0dylPWAnblA1KAAjuazpoT34=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=bUihG1jgn1ir2+5jLn1NhyqbGa0zjEfPW0WLxNBhJ8N163whLvAiGIUyGuSDJ9a+C rH5tJacT031Qg18lOtprvNhSREt+/+B3LUVKZa8IPoOm2OAUCxRE0qxK0fg/VjmdCU Of6mzLpz19HVff/JU5Om4D9DEn9WkzR93R/DEEp9LFAY6OkNKZpqS++6IwxxTpMM5D oDEICcm7h+j8DXQIN3rfMavh/OjRHXqzcXKN7VMq6EU8x6mgTHRI4tw23icV77U65B WHGWJ45gX1AhMoa+LkUACuQsYL7nG9M0s/FoWvm+wpk7JEegncgOmI8SbAa76VG+m8 GxLnquxBrPxjw== Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 0F071120180; Wed, 29 Jun 2022 17:07:47 -0400 (EDT) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again Message-ID: <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> Date: Wed, 29 Jun 2022 17:07:45 -0400 In-Reply-To: <83pmir5lwc.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 29 Jun 2022 22:07:15 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) 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.231 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) >> How 'bout the patch below? > Thanks. Doesn't work: the looping around font-lock-extend-region-functions ends up calling `font-lock-extend-region-wholelines` repeatedly as long as the bounds a grown and so the bounds keep growing until we're back at square one. The patch below addresses this problem by truncating in a more careful way, so `font-lock-extend-region-wholelines` is idempotent (i.e. repeated calls don't keep growing the bounds). It's also careful to use that same "chunking" in syntax.el and in the antiblink code of jit-lock. Tracing `syntax-ppss` and `syntax-propertize-wholelines` suggests that this patch is sufficient to keep most of the work "local" rather than applying to the whole line/file all the time. >> It doesn't seem to make much difference on the `medium_line.json` >> example from Phil, tho :-( > In what case does it make much difference? None that I can see :-( > And how did you test whether it makes a difference? I just did src/emacs -Q ~/tmp/medium_line.json and then tried to move around in the buffer, search with Isearch, and insert a few chars. I don't notice any difference with or without the patch :-( Stefan diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el index 36b0c56e953..e1be3015838 100644 --- a/lisp/emacs-lisp/syntax.el +++ b/lisp/emacs-lisp/syntax.el @@ -124,15 +124,49 @@ syntax-propertize-extend-region-functions otherwise nil. That construct can be a two character comment delimiter or an Escaped or Char-quoted character.")) -(defun syntax-propertize-wholelines (start end) - "Extend the region delimited by START and END to whole lines. +(defvar syntax-wholeline-max 10000 + "Maximum line length for syntax operations. +If lines are longer than that, syntax operations will treat them as chunks +of this size. Misfontification may then occur. +This is a tradeoff between correctly applying the syntax rules, +and avoiding major slowdown on pathologically long lines.") + +(defun syntax--lbp (&optional arg) + "Like `line-beginning-position' but obeying `syntax-wholeline-max'." + (let ((pos (point)) + (res (line-beginning-position arg))) + (cond + ((< (abs (- pos res)) syntax-wholeline-max) res) + ;; For lines that are too long, round to the nearest multiple of + ;; `syntax-wholeline-max'. We use rounding rather than just + ;; (min res (+ pos syntax-wholeline-max)) so that repeated calls + ;; to `syntax-propertize-wholelines' don't keep growing the bounds, + ;; i.e. it really behaves like additional line-breaks. + ((< res pos) + (let ((max syntax-wholeline-max)) + (max (point-min) (* max (truncate pos max))))) + (t + (let ((max syntax-wholeline-max)) + (min (point-max) (* max (ceiling pos max)))))))) + +(defun syntax-propertize-wholelines (beg end) + "Extend the region delimited by BEG and END to whole lines. This function is useful for `syntax-propertize-extend-region-functions'; see Info node `(elisp) Syntax Properties'." - (goto-char start) - (cons (line-beginning-position) - (progn (goto-char end) - (if (bolp) (point) (line-beginning-position 2))))) + ;; This let-binding was taken from + ;; `font-lock-extend-region-wholelines' where it was used to avoid + ;; inf-looping (Bug#21615) but for some reason it was not applied + ;; here in syntax.el and was used only for the "beg" side. + (let ((inhibit-field-text-motion t)) + (let ((new-beg (progn (goto-char beg) + (if (bolp) beg + (syntax--lbp)))) + (new-end (progn (goto-char end) + (if (bolp) end + (syntax--lbp 2))))) + (unless (and (eql beg new-beg) (eql end new-end)) + (cons new-beg new-end))))) (defun syntax-propertize-multiline (beg end) "Let `syntax-propertize' pay attention to the syntax-multiline property." diff --git a/lisp/font-lock.el b/lisp/font-lock.el index df0a26f4d0f..7eeaf2f547f 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -1260,18 +1260,11 @@ font-lock-extend-region-multiline (defun font-lock-extend-region-wholelines () "Move fontification boundaries to beginning of lines." - (let ((changed nil)) - (goto-char font-lock-beg) - (unless (bolp) - (setq changed t font-lock-beg - (let ((inhibit-field-text-motion t)) - (line-beginning-position)))) - (goto-char font-lock-end) - (unless (bolp) - (unless (eq font-lock-end - (setq font-lock-end (line-beginning-position 2))) - (setq changed t))) - changed)) + (let ((new (syntax-propertize-wholelines font-lock-beg font-lock-end))) + (when new + (setq font-lock-beg (car new)) + (setq font-lock-end (cdr new)) + t))) (defun font-lock-default-fontify-region (beg end loudly) "Fontify the text between BEG and END. @@ -1565,7 +1558,7 @@ font-lock-apply-syntactic-highlight (or (nth 3 highlight) (error "No match %d in highlight %S" match highlight)) (when (and (consp value) (not (numberp (car value)))) - (setq value (eval value))) + (setq value (eval value t))) (when (stringp value) (setq value (string-to-syntax value))) ;; Flush the syntax-cache. I believe this is not necessary for ;; font-lock's use of syntax-ppss, but I'm not 100% sure and it can @@ -1589,7 +1582,7 @@ font-lock-fontify-syntactic-anchored-keywords LIMIT can be modified by the value of its PRE-MATCH-FORM." (let ((matcher (nth 0 keywords)) (lowdarks (nthcdr 3 keywords)) highlights ;; Evaluate PRE-MATCH-FORM. - (pre-match-value (eval (nth 1 keywords)))) + (pre-match-value (eval (nth 1 keywords) t))) ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line. (if (and (numberp pre-match-value) (> pre-match-value (point))) (setq limit pre-match-value) @@ -1605,7 +1598,7 @@ font-lock-fontify-syntactic-anchored-keywords (font-lock-apply-syntactic-highlight (car highlights)) (setq highlights (cdr highlights))))) ;; Evaluate POST-MATCH-FORM. - (eval (nth 2 keywords)))) + (eval (nth 2 keywords) t))) (defun font-lock-fontify-syntactic-keywords-region (start end) "Fontify according to `font-lock-syntactic-keywords' between START and END. @@ -1718,7 +1711,7 @@ font-lock-apply-highlight ;; No match but we might not signal an error. (or (nth 3 highlight) (error "No match %d in highlight %S" match highlight)) - (let ((val (eval (nth 1 highlight)))) + (let ((val (eval (nth 1 highlight) t))) (when (eq (car-safe val) 'face) (add-text-properties start end (cddr val)) (setq val (cadr val))) @@ -1753,7 +1746,7 @@ font-lock-fontify-anchored-keywords (let ((matcher (nth 0 keywords)) (lowdarks (nthcdr 3 keywords)) highlights (lead-start (match-beginning 0)) ;; Evaluate PRE-MATCH-FORM. - (pre-match-value (eval (nth 1 keywords)))) + (pre-match-value (eval (nth 1 keywords) t))) ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line. (if (not (and (numberp pre-match-value) (> pre-match-value (point)))) (setq limit (line-end-position)) @@ -1778,7 +1771,7 @@ font-lock-fontify-anchored-keywords (font-lock-apply-highlight (car highlights)) (setq highlights (cdr highlights))))) ;; Evaluate POST-MATCH-FORM. - (eval (nth 2 keywords)))) + (eval (nth 2 keywords) t))) (defun font-lock-fontify-keywords-region (start end &optional loudly) "Fontify according to `font-lock-keywords' between START and END. @@ -1884,7 +1877,7 @@ font-lock-compile-keyword (cond ((or (functionp keyword) (nlistp keyword)) ; MATCHER (list keyword '(0 font-lock-keyword-face))) ((eq (car keyword) 'eval) ; (eval . FORM) - (font-lock-compile-keyword (eval (cdr keyword)))) + (font-lock-compile-keyword (eval (cdr keyword) t))) ((eq (car-safe (cdr keyword)) 'quote) ; (MATCHER . 'FORM) ;; If FORM is a FACENAME then quote it. Otherwise ignore the quote. (if (symbolp (nth 2 keyword)) @@ -1905,7 +1898,7 @@ font-lock-eval-keywords keywords (font-lock-eval-keywords (if (fboundp keywords) (funcall keywords) - (eval keywords))))) + (eval keywords t))))) (defun font-lock-value-in-major-mode (values) "If VALUES is a list, use `major-mode' as a key and return the `assq' value. diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el index 17969d57620..a3ada443702 100644 --- a/lisp/jit-lock.el +++ b/lisp/jit-lock.el @@ -242,20 +242,20 @@ jit-lock-mode (when (and jit-lock-stealth-time (null jit-lock-stealth-timer)) (setq jit-lock-stealth-timer (run-with-idle-timer jit-lock-stealth-time t - 'jit-lock-stealth-fontify))) + #'jit-lock-stealth-fontify))) ;; Create, but do not activate, the idle timer for repeated ;; stealth fontification. (when (and jit-lock-stealth-time (null jit-lock-stealth-repeat-timer)) (setq jit-lock-stealth-repeat-timer (timer-create)) (timer-set-function jit-lock-stealth-repeat-timer - 'jit-lock-stealth-fontify '(t))) + #'jit-lock-stealth-fontify '(t))) ;; Init deferred fontification timer. (when (and jit-lock-defer-time (null jit-lock-defer-timer)) (setq jit-lock-defer-timer (run-with-idle-timer jit-lock-defer-time t - 'jit-lock-deferred-fontify))) + #'jit-lock-deferred-fontify))) ;; Initialize contextual fontification if requested. (when (eq jit-lock-contextually t) @@ -265,13 +265,13 @@ jit-lock-mode (lambda () (unless jit-lock--antiblink-grace-timer (jit-lock-context-fontify)))))) - (add-hook 'post-command-hook 'jit-lock--antiblink-post-command nil t) + (add-hook 'post-command-hook #'jit-lock--antiblink-post-command nil t) (setq jit-lock-context-unfontify-pos (or jit-lock-context-unfontify-pos (point-max)))) ;; Setup our hooks. - (add-hook 'after-change-functions 'jit-lock-after-change nil t) - (add-hook 'fontification-functions 'jit-lock-function nil t)) + (add-hook 'after-change-functions #'jit-lock-after-change nil t) + (add-hook 'fontification-functions #'jit-lock-function nil t)) ;; Turn Just-in-time Lock mode off. (t @@ -294,8 +294,9 @@ jit-lock-mode (setq jit-lock-defer-timer nil))) ;; Remove hooks. - (remove-hook 'after-change-functions 'jit-lock-after-change t) - (remove-hook 'fontification-functions 'jit-lock-function)))) + (remove-hook 'post-command-hook #'jit-lock--antiblink-post-command t) + (remove-hook 'after-change-functions #'jit-lock-after-change t) + (remove-hook 'fontification-functions #'jit-lock-function)))) (define-minor-mode jit-lock-debug-mode "Minor mode to help debug code run from jit-lock. @@ -707,8 +708,8 @@ jit-lock-after-change (min jit-lock-context-unfontify-pos jit-lock-start)))))) (defun jit-lock--antiblink-post-command () - (let* ((new-l-b-p (copy-marker (line-beginning-position))) - (l-b-p-2 (line-beginning-position 2)) + (let* ((new-l-b-p (copy-marker (syntax--lbp))) + (l-b-p-2 (syntax--lbp 2)) (same-line (and jit-lock-antiblink-grace (not (= new-l-b-p l-b-p-2))
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 29 Jun 2022 19:07:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 29 15:07:24 2022 Received: from localhost ([127.0.0.1]:60250 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o6d24-0002Ij-3V for submit <at> debbugs.gnu.org; Wed, 29 Jun 2022 15:07:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:45896) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o6d1w-0002IO-40 for 45898 <at> debbugs.gnu.org; Wed, 29 Jun 2022 15:07:22 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35128) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o6d1q-0003Z8-BQ; Wed, 29 Jun 2022 15:07:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=vko8GnhHix1bRTPmdxy6E6fymWZUwuBYSTqogxdEYaE=; b=nh3p/GwAjjjEbKAOxnbY 6b6Gyw0AnhLIEO5aQJXAbH+F284zN/HJ09r1tICaW/dAHcb5MK6F7OTfNmrmNstt0UHLh4LN5+bNc hjasp8HUC3aQMa09RlSxaVc9SBkds78oPWx2q5J1n988zen9D6MaYsxtbVtLhvnv7Ab+vwtDXVY8D gswh1XE5vuLiZespJndPedqQXc95oeYoJcszaMIzm9SNcZ4NJqHw6SpBk301MW3DazDV09laAsoNw nOsTEx/I1RgPyFDfc3xY0a7C+pvH459hD1mYSom3bxhPPi5JINYWzNI5xJ2sdsIXeWceQu+Y7aXp2 JCUOHzns6m34Gg==; Received: from [87.69.77.57] (port=1675 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o6d1p-0006Gl-Rd; Wed, 29 Jun 2022 15:07:10 -0400 Date: Wed, 29 Jun 2022 22:07:15 +0300 Message-Id: <83pmir5lwc.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Wed, 29 Jun 2022 12:18:47 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: Gerd Möllmann <gerd.moellmann@HIDDEN>, > larsi@HIDDEN, > psainty@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Wed, 29 Jun 2022 12:18:47 -0400 > > Eli Zaretskii [2022-06-24 10:57:30] wrote: > >> Yes, that's exactly what I'm proposing in the paragraph you quoted. > >> I think it makes sense to bound the growth of the region due to > >> `font-lock-extend-region-functions`. We could bound it where we handle > >> `font-lock-extend-region-functions`, or we could bound it just inside > >> `font-lock-extend-region-wholelines`. > > > > I hope this will be done soon. > > How 'bout the patch below? Thanks. > It doesn't seem to make much difference on the `medium_line.json` > example from Phil, tho :-( In what case does it make much difference? And how did you test whether it makes a difference?
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 29 Jun 2022 16:18:57 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 29 12:18:57 2022 Received: from localhost ([127.0.0.1]:60029 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o6aP3-0007yJ-CD for submit <at> debbugs.gnu.org; Wed, 29 Jun 2022 12:18:57 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:60205) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1o6aP1-0007y4-Nd for 45898 <at> debbugs.gnu.org; Wed, 29 Jun 2022 12:18:56 -0400 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 4CB798070D; Wed, 29 Jun 2022 12:18:50 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C7FE180636; Wed, 29 Jun 2022 12:18:48 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656519528; bh=1/vJfF9WXKV3JE5yUYiRMxlFbRBs8BYk0lxrs7/mQm8=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=jeEYh8S7M9lggiP09QsNDncI0lUbX4eOP5Be98FG3yX8mjRDfhqq91GkZm4wkC1qC +K1PCkR5egGMv4vfqdFbdocoBJFDPiOoBWMA5v+d56VDB5YZpDOdkf78VOjzMVw1dD pJdOmevUt6KzC+Lol5GlEPzuzm/QgiSZ5lfRV9kqP6Klr0keuIu3DBl+iHaIuYsh8J Mczkc4hnzAbYCxWYH2cT5vpgo3DSz3LBNGsmxxMWZk/81W5u22n7/RStLd1mdDGbI9 IuRX/lUNIronVaLw9GOWZmuMvL8strjWbqmqpQTpV3/mHsPOHdcd+ElMlDpCaBN4RA /KKLcqEZmQHzQ== Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B29AE1204C0; Wed, 29 Jun 2022 12:18:48 -0400 (EDT) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again Message-ID: <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> Date: Wed, 29 Jun 2022 12:18:47 -0400 In-Reply-To: <83o7yicx3p.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 24 Jun 2022 10:57:30 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) 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.200 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Gerd =?windows-1252?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii [2022-06-24 10:57:30] wrote: >> Yes, that's exactly what I'm proposing in the paragraph you quoted. >> I think it makes sense to bound the growth of the region due to >> `font-lock-extend-region-functions`. We could bound it where we handle >> `font-lock-extend-region-functions`, or we could bound it just inside >> `font-lock-extend-region-wholelines`. > > I hope this will be done soon. How 'bout the patch below? It doesn't seem to make much difference on the `medium_line.json` example from Phil, tho :-( Stefan diff --git a/lisp/font-lock.el b/lisp/font-lock.el index df0a26f4d0f..c6bd93eb2c8 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -1258,19 +1258,31 @@ font-lock-extend-region-multiline (setq font-lock-end new-end)))) changed)) +(defvar font-lock-wholeline-max 10000 + "Maximum line length for `font-lock-extend-region-wholelines'. +If lines are longer than that, `font-lock-extend-region-wholelines' will +not always round up to whole lines, and misfontification may occur. +This is a tradeoff between correctly applying the fontification rules, +and avoiding major slowdown on pathologically long lines.") + (defun font-lock-extend-region-wholelines () "Move fontification boundaries to beginning of lines." (let ((changed nil)) (goto-char font-lock-beg) (unless (bolp) - (setq changed t font-lock-beg - (let ((inhibit-field-text-motion t)) - (line-beginning-position)))) + (let ((new (max (- font-lock-beg font-lock-wholeline-max) + (let ((inhibit-field-text-motion t)) + (line-beginning-position))))) + (unless (eql new font-lock-beg) + (setq changed t) + (setq font-lock-beg new)))) (goto-char font-lock-end) (unless (bolp) - (unless (eq font-lock-end - (setq font-lock-end (line-beginning-position 2))) - (setq changed t))) + (let ((new (min (+ font-lock-end font-lock-wholeline-max) + (line-beginning-position 2)))) + (unless (eql new font-lock-end) + (setq changed t) + (setq font-lock-end new)))) changed)) (defun font-lock-default-fontify-region (beg end loudly)
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 12:57:17 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 08:57:17 2022 Received: from localhost ([127.0.0.1]:44391 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o55Lg-0001eF-Mz for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:57:16 -0400 Received: from mail-ej1-f53.google.com ([209.85.218.53]:34583) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o55Le-0001e1-KC for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:57:15 -0400 Received: by mail-ej1-f53.google.com with SMTP id t5so10002533eje.1 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 05:57:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:from:mime-version:subject:date:message-id :references:cc:in-reply-to:to; bh=KCeP6S8zadsQ6Jg8euqCV4G/DhLtu8p+3hnQBVp8oro=; b=HhbyKOTmnKoYstUFVZFZC3ukWS00ZlBfV9j36vuXXaJwFet2uatzo0YiA17xu700ql p8GryzBmzq2c1BAUJy6AItS3Zn0Cu9ablUOfQZmElb9gFtZzMLwVBDaA4eDwLLEs578o Af2Dps9QRsBMK4rGS5LIcHnZJP9FpXrE8KRVARR9iwA9AVoksrbuYtPwOf00BYN/r3gO JKNiUx7GarUzjda2mmX3eAucF+YCZbaSX5GXYBc0Uzcsf+KhMmB9db1hODh9BSkV51A5 Y99peWiiNSWMS1O99FYtjMg3OEs2Uv02r0CCeBcG5JB84fWF461WSBcAVk8to4kHKCQC L58A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:content-transfer-encoding:from:mime-version :subject:date:message-id:references:cc:in-reply-to:to; bh=KCeP6S8zadsQ6Jg8euqCV4G/DhLtu8p+3hnQBVp8oro=; b=xMSQ2XTwlN4rmqUecyTlFzOzq79nvLX09sTG7lBqIZGl4iK5PHgBUrCYiRyfoRaJ2l Owae1goFk90IyJ/bYzgkJBTmMNdp6W1od7qs3E4x6vUng8iMzbQNtGpZH+xgDM5RyFHa q3wfokj++hPItVGAL7l29bXcoc9duB8EgPXY9WK2zjuo4H6uSD9r+xic5yf6j4BDulOB Kpa9AWK8gq4KpqMZTCWXpDauLNKT5yL5tKv57OYTIs2N6ypV96L0ZhfI+DLO6xeedPfA lK8koWQZSzJaXXbrwlITpq38y9QAXATTrmQ0jO7srqtdypi+VuJyL0MMdWi4LLLdKuwz 4yow== X-Gm-Message-State: AJIora/+fDxgQlW4NJlCGvB5q9HLpTeaT4hLP9rdWV2kESPuUbMIuVH1 ifSmbn7W9Td2AOStn347GgypYCXyLcupUw== X-Google-Smtp-Source: AGRyM1sKYNFlygy/Lgnjxi1tWdDp6vZjnbyo8SK524DdVpjBL59oyQ2gy3Mka0b9mkEH9ArNDlgihA== X-Received: by 2002:a17:907:9625:b0:726:3a61:224d with SMTP id gb37-20020a170907962500b007263a61224dmr3808943ejc.286.1656161828216; Sat, 25 Jun 2022 05:57:08 -0700 (PDT) Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de. [79.227.160.64]) by smtp.gmail.com with ESMTPSA id p23-20020a1709061b5700b0070e3f58ed5csm2619397ejg.48.2022.06.25.05.57.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 25 Jun 2022 05:57:07 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> Mime-Version: 1.0 (1.0) Subject: Re: bug#45898: 27.1; wedged in redisplay again Date: Sat, 25 Jun 2022 14:57:06 +0200 Message-Id: <FB0C6F37-DCC1-4826-93AC-FBDF1EFB3222@HIDDEN> References: <8335fsc39a.fsf@HIDDEN> In-Reply-To: <8335fsc39a.fsf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> X-Mailer: iPad Mail (19F77) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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: -1.0 (-) Thanks! > Am 25.06.2022 um 14:54 schrieb Eli Zaretskii <eliz@HIDDEN>: >=20 > =EF=BB=BF >>=20 >> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> >> Date: Sat, 25 Jun 2022 14:20:52 +0200 >> Cc: 45898 <at> debbugs.gnu.org >>=20 >>=20 >>=20 >>> Yes, I know; and it's still the case. Originally, I indeed only >>> looked at redisplaying_p. But then cases with C-n and C-v wouldn't be >>> caught, because these commands, although they call the display code, >>> run without redisplay_internal in the call stack. And very sluggish >>> response from these and similar commands is generally perceived as >>> "redisplay problems". So I wanted to catch them as well, without >>> waiting for redisplay cycle they cause (which by itself may or may not >>> be "too slow" -- just moving the cursor is an optimization there, as >>> you know). >>=20 >> Do you have a recipe for reproducing that? >>=20 >> I might take at look into this, if/when I manage to debug Emacs on my M1.= >=20 > In >=20 > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D45898#80 >=20 > Phil Sainty shared URLs for some files that are notoriously slow to > display (and originally were the motivation for developing and > improving the so-long-mode). Try C-n and C-v with any of them. >=20 > This message: >=20 > https://lists.gnu.org/archive/html/help-gnu-emacs/2022-05/msg00070.html >=20 > mentions another problematic file. With it, you need first to arrive > to buffer position 135,000, before C-n/C-v become sluggish. >=20 > These are the sample files I used to test the implementation of this > feature.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 12:54:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 08:54:39 2022 Received: from localhost ([127.0.0.1]:44387 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o55J9-0001aL-8x for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:54:39 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37820) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o55J7-0001a4-24 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:54:38 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:60390) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o55J1-0003cs-OX; Sat, 25 Jun 2022 08:54:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=AXbdo1zCcBdj75T/GqIYHyBdsRH+jzsvcAGco1GrUNE=; b=hlLQW6Szc7chQgu0Nf8z ALShXTPXszf+TNYvzscAfviP+1BD0hmISd56eWE1g7Zv2Og6ZcrA2m4eY6tlL99hqzvr9fgdJljyE Qp29BLhjZcqrCH7jLw7nPRg+o3xV1/YyRdlOK/MPjFa1ZvKJzJQp0G0z11Z9G4TvgX8vwPadPDp+i pN4y2VwHoghnjLsfSCP5MNVyskE36d8v69M4vUI63hPNV+VqY2Ub1qZrqM4APci2ss5a6dQ0JVUIF AfSHrr1t2r0p0aYF1EYRbzm8n4FNPowue09yMYrW+UJtMlQYeo3iDShZJTcdw/hyDDcbhizfauJbC 0v5bW4IrxifIYg==; Received: from [87.69.77.57] (port=2627 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o55Iy-0006AA-KK; Sat, 25 Jun 2022 08:54:30 -0400 Date: Sat, 25 Jun 2022 15:54:25 +0300 Message-Id: <8335fsc39a.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <F23D0CE3-239E-4F36-BE19-627A584114F1@HIDDEN> (message from Gerd =?utf-8?Q?M=C3=B6llmann?= on Sat, 25 Jun 2022 14:20:52 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN> <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> <83a6a1awv0.fsf@HIDDEN> <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN> <835ykpasm2.fsf@HIDDEN> <F23D0CE3-239E-4F36-BE19-627A584114F1@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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 (---) > From: Gerd Möllmann <gerd.moellmann@HIDDEN> > Date: Sat, 25 Jun 2022 14:20:52 +0200 > Cc: 45898 <at> debbugs.gnu.org > > > > > Yes, I know; and it's still the case. Originally, I indeed only > > looked at redisplaying_p. But then cases with C-n and C-v wouldn't be > > caught, because these commands, although they call the display code, > > run without redisplay_internal in the call stack. And very sluggish > > response from these and similar commands is generally perceived as > > "redisplay problems". So I wanted to catch them as well, without > > waiting for redisplay cycle they cause (which by itself may or may not > > be "too slow" -- just moving the cursor is an optimization there, as > > you know). > > Do you have a recipe for reproducing that? > > I might take at look into this, if/when I manage to debug Emacs on my M1. In https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45898#80 Phil Sainty shared URLs for some files that are notoriously slow to display (and originally were the motivation for developing and improving the so-long-mode). Try C-n and C-v with any of them. This message: https://lists.gnu.org/archive/html/help-gnu-emacs/2022-05/msg00070.html mentions another problematic file. With it, you need first to arrive to buffer position 135,000, before C-n/C-v become sluggish. These are the sample files I used to test the implementation of this feature.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 12:21:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 08:21:15 2022 Received: from localhost ([127.0.0.1]:44342 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o54mp-0000jm-0a for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:21:15 -0400 Received: from mail-ej1-f41.google.com ([209.85.218.41]:38903) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o54mZ-0000iP-CF for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:21:13 -0400 Received: by mail-ej1-f41.google.com with SMTP id g26so9827619ejb.5 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 05:20:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=IieYeQf49bC/daMU5mMW4dMfDPHKQiE7WxtuqTVC+Fg=; b=BQ83CnUHISQ9/JRBas2g4JYnsiZ//kWX9RpJgh+FfkZxgHA7bJqKYPkAaa+L3T4ql7 XMcISbejeqYCAHMEa9+YDigI049CNsv/+durfXFYjWrz9gmwVS4ton0r+PZESRhvrl1V wbWjW1irI6qPa/PwQsD8LhHycAOdKN7IHCjigJorH6Qs/nxBb+lmpuFloGLkOuT7Ku/T TD3ThlH2d83Som/4ndHadDLABhtjk0ZJW+9kDhqNwo8pTvi+W+3+k5NspSEeObrMVU+S Wfl4O/W1v3bHAesnZXd1taQ/eaVnjLB25DqFtCshqKWd62/8rWzf1XiyrMK9IT/d4OCs 9DWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=IieYeQf49bC/daMU5mMW4dMfDPHKQiE7WxtuqTVC+Fg=; b=HGM9eYxo+fxHkb07OzMmGSyfXK/VBRFXi+f8KJFTfOKWvWLc9AF9KlyVkBAyBPvnHx 6tkz11KSFX2pZXBPzdBEz/dDuP1ZCy9g3U9q1Uujx4o3TCzi8EaqBt1lGGLsknhx1ilm kRkh+LSpfIyVl1G1G0ho3LfEo2KPv+bRktnIjH7/6b6FyaN8HtsFIzzGEJUUdbzEj4ci t26AAOp5qZ6hSmjHAdySDBRFACgNLhxK7thU/p7FMopugQN6suBL93xAmyenmgoZ+aZZ 84h4JnY2WN/kMKQAILL4a1FfCBzVzFqNCuuUWUakGUPTuHjdxeQsezEHguJ4WysSFHw0 V7KQ== X-Gm-Message-State: AJIora80XS4pBQ9Q4ljkNHQwuohJCSdBzjcevSq5p8/0sZTARUJ8qLH2 w4YIVDKuGRxqgiKUHQvtYzClDCTGn5F3iA== X-Google-Smtp-Source: AGRyM1saaJsWlNMHUdg0yHHmvmx3MDwlK5xpl3B8BErC+jwXrPIVCPQmIMeZX+uwU1lOAxMsNKkJiQ== X-Received: by 2002:a17:907:7da2:b0:711:f36e:b855 with SMTP id oz34-20020a1709077da200b00711f36eb855mr3809718ejc.308.1656159653606; Sat, 25 Jun 2022 05:20:53 -0700 (PDT) Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de. [79.227.160.64]) by smtp.gmail.com with ESMTPSA id z23-20020a170906435700b007094f98788csm2551255ejm.113.2022.06.25.05.20.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Jun 2022 05:20:52 -0700 (PDT) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <835ykpasm2.fsf@HIDDEN> Date: Sat, 25 Jun 2022 14:20:52 +0200 Content-Transfer-Encoding: 7bit Message-Id: <F23D0CE3-239E-4F36-BE19-627A584114F1@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN> <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> <83a6a1awv0.fsf@HIDDEN> <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN> <835ykpasm2.fsf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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: -1.0 (-) > Yes, I know; and it's still the case. Originally, I indeed only > looked at redisplaying_p. But then cases with C-n and C-v wouldn't be > caught, because these commands, although they call the display code, > run without redisplay_internal in the call stack. And very sluggish > response from these and similar commands is generally perceived as > "redisplay problems". So I wanted to catch them as well, without > waiting for redisplay cycle they cause (which by itself may or may not > be "too slow" -- just moving the cursor is an optimization there, as > you know). Do you have a recipe for reproducing that? I might take at look into this, if/when I manage to debug Emacs on my M1.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 11:29:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 07:29:57 2022 Received: from localhost ([127.0.0.1]:44246 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o53zB-0003UA-LA for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:29:57 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51932) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o53z7-0003Ts-3g for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:29:56 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:57430) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o53z1-0000aM-4s; Sat, 25 Jun 2022 07:29:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=yb5m8TIzPa+4leW8rVTbSh+S1Z1cziqFg3uYZvrV1FE=; b=ICFqYiK1RgPJVQzkpYe4 vVaa8rWkdXHkB5S/jbsttq9ORrTKgKpxx3kZUGCGEq/ziOJvhtiDMXRlZvmsHccAQpKTlmjOjQu8U cx4SwfUiqzaCOcPfgKBnolRUBJCyFWz25uI1f38hMIXHge+Znd1yBuqdGivM+J6Ys1SqgsaAqdEBf sHzUNEC0NzgD+I10Aydgixg6Ki/m23KqKlije4v3iQns+ZcbPwdiRN7970y8QWv2cm2HqXHSHon9r SIIsWDJT/OFx/PYp5DVSlfApzv3zjg31Io5n4dvlYygkQTM1CND7mXgII1ZxwaB0rlFmI5YEvVohE tk8Da1WzYnQNsA==; Received: from [87.69.77.57] (port=1405 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o53yz-00054Z-4z; Sat, 25 Jun 2022 07:29:46 -0400 Date: Sat, 25 Jun 2022 14:29:41 +0300 Message-Id: <835ykpasm2.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN> (message from Gerd =?utf-8?Q?M=C3=B6llmann?= on Sat, 25 Jun 2022 13:10:14 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN> <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> <83a6a1awv0.fsf@HIDDEN> <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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 (---) > From: Gerd Möllmann <gerd.moellmann@HIDDEN> > Date: Sat, 25 Jun 2022 13:10:14 +0200 > Cc: 45898 <at> debbugs.gnu.org > > > You mean, just update_ticks? That's too general, IMO. I'd like > > people to have an idea what that does when they just see the call. > > > > But I'm not good with names. > > I love update_ticks! And I'm good with names, trust me ;-). And I'm volunteering to do the work! Fine with me, have fun. > >> You mean a case, where small numbers of ticks sum up by calling these Lisp functions often enough? > > > > Actually, I meant something even simpler: a Lisp program that calls, > > say, regexp search repeatedly, to accumulate enough ticks that would > > signal an error, thus aborting that Lisp program. > > That's 100% what I also meant. Sorry for not being clear. > > Do you think redisplaying_p would suffice as an indicator? > > That should be true if and only if redisplay_internal is in the call stack. Also, redisplay_internal is a no-op if called recursively. Or better said, both used to be the case. Yes, I know; and it's still the case. Originally, I indeed only looked at redisplaying_p. But then cases with C-n and C-v wouldn't be caught, because these commands, although they call the display code, run without redisplay_internal in the call stack. And very sluggish response from these and similar commands is generally perceived as "redisplay problems". So I wanted to catch them as well, without waiting for redisplay cycle they cause (which by itself may or may not be "too slow" -- just moving the cursor is an optimization there, as you know).
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 11:21:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 07:21:39 2022 Received: from localhost ([127.0.0.1]:44231 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o53r9-0003Hr-8K for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:21:39 -0400 Received: from eggs.gnu.org ([209.51.188.92]:50518) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o53r3-0003Ha-SF for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:21:38 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:57320) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o53qy-0005hF-AL; Sat, 25 Jun 2022 07:21:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=/PsQf2Ib1Pk7ByLHhVJes8iYGdlbJcuc+ZlRZz0dgEo=; b=PEUlKNXIn6l5msJYZYSo sgVKvkwxKkYuCyPvwmoVeIWEXVs9B0w79S/a/LiqhCg0G9KlPfs8CYmrLR1DdrKXeiWk3yCeT2DjG wZw5n44cWQFh3kS5T8xTyWRX4BjVQyeonR1gsJkjfCoEOU+3Iya/ta6bsKp4U00kVQNk+FrAS2h1r 57vjyBk6WBTOf8OwAqigIfcADqsHxgnWVMjnpMcubBP6+nhGCqpjMDHDtHKiotapn7wT1qBbM1+C9 ZLzoprFQwByaPJO7KvSZl8YLauhSZbWRg4Xp+abYFmVdQlYEHt0ycp04dFaL3VnNkX0u3AZyQi41G HWGu5GFPPEvi9w==; Received: from [87.69.77.57] (port=4869 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o53qx-0003tG-Op; Sat, 25 Jun 2022 07:21:28 -0400 Date: Sat, 25 Jun 2022 14:21:25 +0300 Message-Id: <838rplaszu.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87bkuhkq8h.fsf@HIDDEN> (message from Lars Ingebrigtsen on Sat, 25 Jun 2022 12:10:54 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <165605725704.24125.17210424600068379407@HIDDEN> <20220624075417.BFA82C0169C@HIDDEN> <87wnd6v34k.fsf@HIDDEN> <83mte2coqg.fsf@HIDDEN> <87fsjuqpzi.fsf@HIDDEN> <83k096clsx.fsf@HIDDEN> <8735fup5oh.fsf@HIDDEN> <83a6a2cher.fsf@HIDDEN> <874k09nau4.fsf@HIDDEN> <83o7yhb49y.fsf@HIDDEN> <87bkuhkq8h.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: gerd.moellmann@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: 45898 <at> debbugs.gnu.org, Gerd Möllmann > <gerd.moellmann@HIDDEN> > Date: Sat, 25 Jun 2022 12:10:54 +0200 > > Eli Zaretskii <eliz@HIDDEN> writes: > > > Thanks. I tried to fix this on master, please see if the problem is > > gone. > > Thanks; with that patch, I'm no longer able to reproduce the warning > (after testing a handful of times). Great, thanks for testing.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 11:10:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 07:10:26 2022 Received: from localhost ([127.0.0.1]:44219 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o53gI-0000rO-0T for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:10:26 -0400 Received: from mail-ej1-f50.google.com ([209.85.218.50]:35683) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o53gE-0000r9-Ea for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:10:24 -0400 Received: by mail-ej1-f50.google.com with SMTP id pk21so9645582ejb.2 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 04:10:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=Z0mQ3zUltwaj5tVmIzKpJc+2SHMweQ0xeoH1a36v5jc=; b=DENkdSFykifCsyB98/zrv6Xl6g+yGL2xz03LpF/FXoiUNq0qVUc8kk//5EFe0TRUe0 YGaDZArAxkmh0AcFsrgO5WGrt2x0EXDWtq2hkgv68BYwu14715Iu8eslSNNGMH7WvVAP Za2ZjTevaQnop/bAzLl0LIYWcMNrm3QerypvYymhNvtxycneeQ7oo54hVapCo7FaTe3S RzUwr8eJPquUZmDt/0VhuQCZBDA1SOfPu1kK9nIoqpTY7f/ILfI0OUqx1HGWmeMcTcY4 NSdt/LRBEYArfrkfJ7arXDz8jhyeWDCuG2zGv6ljnh7okoZQkCEwosn/pIpdxz0RtZB2 XC5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=Z0mQ3zUltwaj5tVmIzKpJc+2SHMweQ0xeoH1a36v5jc=; b=RA/aWbOPjEfyOpOM/49ySqo6MBxzjKYVtnNFQ1r+oPX+lRfnzUmC81KfSFKpPA5mem y+NXaFd4PafWJGakWYbFlVCEFTJQ9UYlAxSze4ddRPicB30nmzqv1vwdTcefBmA4Girm nDUlJPkTOwbzmNhqwF8Fdl30+jTIZqYWMX1nDuY6OQTLPLvmk2OE7EounSqxb31drpzm IQ0/4vrF7/ixgBIiwaTqEVIMO0n/ekG9FXi5F2kIz6O1VQXTTT0lqu7bGhMKZuIiX0fj MLNzdpFiVWNbagN1LcsyRigC2Z4iXSSRxVdOT/MgemDDInD5hHUcvnUI/ylPQ4qzVH/d UC7A== X-Gm-Message-State: AJIora/kOOwMfcQx+mjUz6Z8M9kaBWo6JCs3uHjjmocG+KsjeGwZNvx6 NjgGQotijP5st5BT9e410GqJS4Ud1fqimQ== X-Google-Smtp-Source: AGRyM1sM/MNkXxPfgJRwoc8EmBRqK8OwqULWmx/38xrtTSB3b45yiLXrVwh8J/HWK5Ey1zNSmZo64A== X-Received: by 2002:a17:907:a427:b0:71b:6f0b:8beb with SMTP id sg39-20020a170907a42700b0071b6f0b8bebmr3387513ejc.496.1656155416466; Sat, 25 Jun 2022 04:10:16 -0700 (PDT) Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de. [79.227.160.64]) by smtp.gmail.com with ESMTPSA id k20-20020a1709063fd400b00722f66fb36csm2447333ejj.112.2022.06.25.04.10.15 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Jun 2022 04:10:15 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <83a6a1awv0.fsf@HIDDEN> Date: Sat, 25 Jun 2022 13:10:14 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN> <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> <83a6a1awv0.fsf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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: -1.0 (-) > On 2022-06-25,, at 11:57 , Eli Zaretskii <eliz@HIDDEN> wrote: >=20 >> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> >> Date: Sat, 25 Jun 2022 11:49:42 +0200 >> Cc: 45898 <at> debbugs.gnu.org >>=20 >> Or maybe "ticks" is already a good enough name? We could then simply = have update_ticks and good. Or eticks to not confuse it with time = ticks, if that ever happens. >=20 > You mean, just update_ticks? That's too general, IMO. I'd like > people to have an idea what that does when they just see the call. >=20 > But I'm not good with names. I love update_ticks! And I'm good with names, trust me ;-). And I'm = volunteering to do the work! >> You mean a case, where small numbers of ticks sum up by calling these = Lisp functions often enough? >=20 > Actually, I meant something even simpler: a Lisp program that calls, > say, regexp search repeatedly, to accumulate enough ticks that would > signal an error, thus aborting that Lisp program. That's 100% what I also meant. Sorry for not being clear. Do you think redisplaying_p would suffice as an indicator? =20 That should be true if and only if redisplay_internal is in the call = stack. Also, redisplay_internal is a no-op if called recursively. Or = better said, both used to be the case.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 10:11:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 06:11:12 2022 Received: from localhost ([127.0.0.1]:44172 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o52kx-0007dR-RP for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 06:11:12 -0400 Received: from quimby.gnus.org ([95.216.78.240]:43604) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1o52ku-0007dB-LB for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 06:11:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=b3E2JycJCLVyd2x/BdLPiM1+7n+NOkuUSfmoCXKzj/k=; b=hbVZx0ZgUrti2AXoTd4uZriTO8 2jSyvVxISGw2lcG9+rl8HGDkCGbb8T2P5IzvNrDrunmeIL651Frzj0aHtY3EpU+4OYQpyPaqbWQF3 aGnKepj240qH2RCs0BfqhFEBET7QPpn9XEKcRqz1MjWvXHJk8muHWiynm5tj5K/YainU=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1o52kl-0004Sj-3B; Sat, 25 Jun 2022 12:11:01 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <165605725704.24125.17210424600068379407@HIDDEN> <20220624075417.BFA82C0169C@HIDDEN> <87wnd6v34k.fsf@HIDDEN> <83mte2coqg.fsf@HIDDEN> <87fsjuqpzi.fsf@HIDDEN> <83k096clsx.fsf@HIDDEN> <8735fup5oh.fsf@HIDDEN> <83a6a2cher.fsf@HIDDEN> <874k09nau4.fsf@HIDDEN> <83o7yhb49y.fsf@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAD1BMVEXbDFuwJEijPUbh nrP///8C+YAWAAAAAWJLR0QEj2jZUQAAAAd0SU1FB+YGGBYEAR3k8r8AAAGwSURBVDjLtVJRrtww CITnCwC5QCAXiM3979YBZ7vdp0pVPx67ihLGzAxgIiaEaIULK2ucpoocnwLsi8Iigk/1MDtPAPOY 447Dkb5WWh5+TXeisY485spYeQEIfOTKvGnceYy1Ft2Zh+Wd48bbBsaY96CZec2ke8yZV4IKB0F1 rAI0bY71AvC7AYD4ChSN4iwAbwDSAgDAHPNa1wW76mSIsounulc/IWhQiFXD1Lp70yiox4HOvVOY RA3GNWokVIOpbzVnxhOU4QVw6WjRRVEiGxsgUG2SrqvSswCWBvQR16r0BkoC+zDrw232cVX8XCTb Qjj71qgsdrcFGER7g8TPUkvEao8QEdmNCDMY682LMbwrXsZ4XwmWeAB5t2Co8GI7n4puo68JDheZ PwC1dufDilC2XWIW9t1zDcwecS0darvdquhj6qnbDpje8QAgKCbUSYtz/+GsFo4ZKrmYvVwhvMaL w1xW5JNtD0joM+qy7CvzDYBR2JfWlA9j1T9xC76YlYul5iUC+a/fJfxapEpPvofxDt4M/N3Vn0c+ xLmNykv5LyH/kd2N7CZ/MOSfJ34BxMc9qiZyOsEAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDYt MjRUMjI6MDQ6MDErMDA6MDCRs6IJAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTA2LTI0VDIyOjA0 OjAxKzAwOjAw4O4atQAAAABJRU5ErkJggg== X-Now-Playing: Boris with Merzbow's _2R0I2P0_: "Evol" Date: Sat, 25 Jun 2022 12:10:54 +0200 In-Reply-To: <83o7yhb49y.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 25 Jun 2022 10:17:45 +0300") Message-ID: <87bkuhkq8h.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > Thanks. I tried to fix this on master, please see if the problem is > gone. Thanks; with that patch, I'm no longer able to reproduce the warning (after testing a handful of times). Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > Thanks. I tried to fix this on master, please see if the problem is > gone. Thanks; with that patch, I'm no longer able to reproduce the warning (after testing a handful of times). -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 09:58:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 05:58:09 2022 Received: from localhost ([127.0.0.1]:44167 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o52YL-0007Jc-Iv for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 05:58:09 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37492) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o52YG-0007J5-RG for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 05:58:08 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:56608) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o52YB-0005hY-CV; Sat, 25 Jun 2022 05:57:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=riZMqochTr7kyPmpXLk51PrznTzve7+SbSpzmUm8O3A=; b=jwitZVuzB5SLDFsLSFLz SQAsHUjvEM5BbJ2yV+yq8wkUxMjmvnelr8nquMcUKq/q2mer4aYAVyJLipTaZfQByYfDQrtmhx90M v0xjneXLw3i7GfxzWeN0g8zvXfgBiRQxct7GGa/AFf6YR+jk4MmIgWk/+BBjcDCkLf8l7HlofRM05 rhJV533cEZBz7s42SJisL7FqHesPrLQ3sEr0ZsyFrDITbYS60Xv/FIYg+9mLJgz2Iv3yhCUxtpbgU RLExSD/QB3AuDS4/ThtU5r28nnA+Drj8dHZYrvdQUiQ2SWnkBvHxzjYTOKCXZTnE8V5zBgNF3oKMG H8KNRFCqoKXTzg==; Received: from [87.69.77.57] (port=3668 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o52YA-0003NL-S4; Sat, 25 Jun 2022 05:57:59 -0400 Date: Sat, 25 Jun 2022 12:57:55 +0300 Message-Id: <83a6a1awv0.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> (message from Gerd =?utf-8?Q?M=C3=B6llmann?= on Sat, 25 Jun 2022 11:49:42 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN> <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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 (---) > From: Gerd Möllmann <gerd.moellmann@HIDDEN> > Date: Sat, 25 Jun 2022 11:49:42 +0200 > Cc: 45898 <at> debbugs.gnu.org > > Well... update_display_code_iteration_ticks also makes me twitch because I think of the tick/signal business not part of "display". What I have in my head is regexp -> ticks, and iterator -> ticks, where "ticks" would be replaced with some suitable name. I think regexp should also be interrupted with long lines, when we match a line that is too long. Or not? > > Or maybe "ticks" is already a good enough name? We could then simply have update_ticks and good. Or eticks to not confuse it with time ticks, if that ever happens. You mean, just update_ticks? That's too general, IMO. I'd like people to have an idea what that does when they just see the call. But I'm not good with names. > >> (BTW, the call to update the tick in regexp can lead to a GC when the error is signaled, in the same way as > >> in bug 56108 with maybe_quit. So we might need that, too.) > > > > Yes, it could cause GC, but I'm not sure what you mean by "we might > > need that". What is "that" here? > > I meant a fix for that bug. Ah, okay. That will get installed soon, I'm just waiting for Stefan to comment if he has comments. > >> /* True while some display-engine code is working on layout of some > >> window. > > > > The reason for that kludge is the urge to avoid signaling an error > > when regexp or syntax.c is called in the context that is not related > > to any display code whatsoever. Since these functions don't know > > whether they are invoked by some code in Iterator or by Lisp, they > > will count the ticks regardless, and I don't want them to signal an > > error if they happen to count too many ticks. > > You mean a case, where small numbers of ticks sum up by calling these Lisp functions often enough? Actually, I meant something even simpler: a Lisp program that calls, say, regexp search repeatedly, to accumulate enough ticks that would signal an error, thus aborting that Lisp program. > Apart from features I don't know, I don't see any fundamental problem with your approach. Great, thanks.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 09:49:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 05:49:52 2022 Received: from localhost ([127.0.0.1]:44155 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o52QK-000774-BF for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 05:49:52 -0400 Received: from mail-ed1-f43.google.com ([209.85.208.43]:39507) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o52QH-00076q-RH for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 05:49:50 -0400 Received: by mail-ed1-f43.google.com with SMTP id eq6so6544798edb.6 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 02:49:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=ZFklzMEmYOmqwKrzn5W+DcDDqrYaiiocABZT93+1BhE=; b=aXiyOaI43Lb3HdpaOL+HFfajwqwdopyMoLDyxWpi+nOHhcnbMT62Q6uWb8buwW/RlW C5BeX52/Nn/shmms0hWevEFjbH3lvrJhgiC9RutL0oyr4ydrwN7FNliuLAsbX+UEkDQ5 PsseCMpimG848iUyLiSpV/4JGaqdbOw3wc3fNA+dw0gKTtQDwFn/QkZWTEicFql4wDeD qF+RNMvSAYuR/KUMnHCEAlfsGxIaBEgw4igb7s+Y3+2ANEJc0kfKZPQYEF2YRXIZczQ6 OQQEdY5sVH+44gt08jbX3rOk2Q2oryAfNzXW/61VyL9s209ODhrzoDaI+T01v5RbL6p3 1G4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=ZFklzMEmYOmqwKrzn5W+DcDDqrYaiiocABZT93+1BhE=; b=F56oLRPwPK6bnlyqW4oI850JXmR4INn/Tz+xwxt6PC/psz9rf8fQEzTI2f2fkRB3lv YxwBj6R2ZQSPS4BhUqpt7Rf6V0PzLGmZaoqe+FLUMXsdKZekHBzu5wVUudXO0q3TcqqQ VxOKWPsFBPkVHsACGeArdOchcfnh0Mp8DZAGSjbjtn2oj9Mbcz0+oN/c4IAjJ5DRtFyq B8k8L2feE5SNqHu0x9spOv/Xsz3HK9qvdWq2f84gjfLONJ4+fTRpcdpih96c2zJ7naID YuI8W/EIQ9LTQ3ceg5O9iYVOwe+nIFY80/kzBWVrM/QKpVmc7qxU5DMtbiL2b0/6zMOP +q3g== X-Gm-Message-State: AJIora8Yj5Dbie3ISGY9mfBCKTMqZro2vul33HF+DsgsB2K54D3OE/CD rRxK1Ct9c6l6YEKLEHzvXkA= X-Google-Smtp-Source: AGRyM1sgi3vo2susV49UW5qeFmrRqZKXEtaX7PMNFJ1TjR6aNfS4ScdtE41IVVqduAUgifJuiyu+AA== X-Received: by 2002:aa7:c846:0:b0:431:6c7b:26af with SMTP id g6-20020aa7c846000000b004316c7b26afmr4042070edt.123.1656150583620; Sat, 25 Jun 2022 02:49:43 -0700 (PDT) Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de. [79.227.160.64]) by smtp.gmail.com with ESMTPSA id u17-20020a056402111100b0042deea0e961sm3807455edv.67.2022.06.25.02.49.42 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Jun 2022 02:49:42 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <83r13db6hp.fsf@HIDDEN> Date: Sat, 25 Jun 2022 11:49:42 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> < 0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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: -1.0 (-) > On 2022-06-25,, at 8:29 , Eli Zaretskii <eliz@HIDDEN> wrote: >=20 >> One of the first things that came to my mind is a new category "time = fuse" (in German Zeitz=C3=BCnder), >> something counting ticks, and detonating (signaling) at some point. = I admit that I find the names you used >> with redisplay in them confusing. Especially in the regexp code and = so. >=20 > That's mainly to keep the names from getting too long to be useful. I > could have used something like update_display_code_iteration_ticks, > but it looked to me that "redisplay" is a good way of saying "display > code" shorter. Well... update_display_code_iteration_ticks also makes me twitch because = I think of the tick/signal business not part of "display". What I have = in my head is regexp -> ticks, and iterator -> ticks, where "ticks" = would be replaced with some suitable name. I think regexp should also be = interrupted with long lines, when we match a line that is too long. Or = not? Or maybe "ticks" is already a good enough name? We could then simply = have update_ticks and good. Or eticks to not confuse it with time = ticks, if that ever happens. >=20 >> Functionality-wise, Iterator now signals an error that redisplay = catches.=20 >=20 > Yes, that's the main idea. But note that in some cases Iterator is > called directly from Lisp, not from Redisplay, in which case the error > is caught by the command loop (not sure where that is in your > taxonomy? is that also Lisp?), not by Redisplay. Case in point: C-n. Yes, that's what I meant by lisp -> iterator, using the move_it* "API". I left out the command-loop, but it's also something I'd consider a = category. >=20 >> The error is signaled when a global tick counter exceeds a max value. = Each movement of an iterator >> increments the global tick counter. The counter is global because = you want to sum up all the ticks that >> occur between a given start point where the tick counter is set to 0, = and the point where the ticks exceed the >> maximum, regardless of iterator -> lisp -> iterator nesting. >>=20 >> The global tick counter is also incremented from regexp. I think = font-lock plays a role here. One scenario is >> redisplay or lisp -> iterator, iterator needs font-lock to run (-> = lisp), font-lock matches a regexp (lisp -> >> regexp), and we get stuck on a long line. Likewise with other stuff, = like syntax. >=20 > Right. But I want to explain why I count ticks in regexp, in > syntax.c, and in some places in bidi.c. The reason is that a single > call to set_iterator_to_next, which basically counts as one tick, can > sometimes result in prolonged operations. So some ticks are "more > equal" than others, and I looked for a way of expressing that. What > you see in those other places is the result of that: it makes > iteration steps that trigger prolonged examination of buffer text to > count as more than one tick. I've seen that, and I think that's fine. >=20 >> (BTW, the call to update the tick in regexp can lead to a GC when the = error is signaled, in the same way as >> in bug 56108 with maybe_quit. So we might need that, too.) >=20 > Yes, it could cause GC, but I'm not sure what you mean by "we might > need that". What is "that" here? =20 I meant a fix for that bug. =20 Might be something specific to German. People say "I need that bug for = the next release", and mean the fix, because they have the bug already = :-). > Did you mean we should count ticks > inside GC as well? If so, we'd need to have some way of preventing a > signal when the tick count reaches the threshold, because we cannot > signal an error inside GC. No, I didn't think of that. >> The meaning of display_working_on_window_p is not clear to me. I see = what setting it does in the end, but I >> can't tell what this means: >>=20 >> /* True while some display-engine code is working on layout of some >> window. >=20 > The reason for that kludge is the urge to avoid signaling an error > when regexp or syntax.c is called in the context that is not related > to any display code whatsoever. Since these functions don't know > whether they are invoked by some code in Iterator or by Lisp, they > will count the ticks regardless, and I don't want them to signal an > error if they happen to count too many ticks. You mean a case, where small numbers of ticks sum up by calling these = Lisp functions often enough? >=20 >> Do you want me to take a deeper look at specific places? >=20 > As you wish. I just wanted a second opinion on the overall design, > and my main worry besides that is whether there are situations where > this simple mechanism could cause trouble. E.g., Lars already > uncovered one such situation, see >=20 > https://lists.gnu.org/archive/html/emacs-diffs/2022-06/msg00761.html >=20 > (I will redirect that to here, as emacs-diffs is not for discussions > of this sort.) Apart from features I don't know, I don't see any fundamental problem = with your approach.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 08:18:21 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 04:18:21 2022 Received: from localhost ([127.0.0.1]:44072 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o50zl-0004q4-J6 for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 04:18:21 -0400 Received: from mail-ed1-f49.google.com ([209.85.208.49]:34462) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o50zi-0004pq-7w for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 04:18:20 -0400 Received: by mail-ed1-f49.google.com with SMTP id o10so6421493edi.1 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 01:18:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:message-id:in-reply-to:references:subject :mime-version; bh=ugclmhDtkn+UjgGDm0tX1JkU14p6AgK2ILMm5RDIAfE=; b=l1+7xjEoeoxvzYr9PXh173E+xq/x0kikTrVSmP3mdLYfd5V+KV1XRjhkpxcnbHBJHo REBfHYJRHuLqcqEhMdq0prM70PIn+/EjuT/cfxbyxC7FJjn84yPaRZVrDNk5MvZajjtV L/g2JZu4obwy0k2Brv3U9zJWj9p4eR4wMn9SNiuhBzgq0E3so15VTXU4e5MZ7RRfnrJg FLJCHS4kby6JZmCp/SQOsqw9uErG14OXUtXtIeARrU6MoTFZpBwr/vwsUbnMkrdi80+H bradasuwquemfoexVfpHQ5LmJXuPl4VnR69wHJQuI/6CyNU/Z/03t2mI6SmqulZuTaf9 ZVYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:message-id:in-reply-to :references:subject:mime-version; bh=ugclmhDtkn+UjgGDm0tX1JkU14p6AgK2ILMm5RDIAfE=; b=LXcXEx6XkUmxW1/46ZEO9RUqsMOxzRns/QQHt3tYS/yv4JtOkqfgsNQ+KHApzNzA85 rn3GlnraIhoPVdpPhxNtvadH0TCoZscmt6YFhKSkV4//1VwkNnPzLQprCUM4RgB90WNx hbBdfFFDD/D/VJ9Je+mBY/SX4KktjDY2+LTnNGp2rcZe2gep2smb4T6psrbjpsLwODL2 FD3YvH4+ixlAEFwOMQcwmJauHKA9Y7j2SAryCnJSaS51f6I7oKL9lRhaYkBgvB81qJ63 xCiReXR19r5xVtBspwFxf10AofaCJ21cy7dYKlqYLM5609S63vTlQPe8xUkLevZSKzcr OAJg== X-Gm-Message-State: AJIora/TJG1koo8lR5fduF7CChyNZY1xh8mCD9FrFAR1Cj/MG0Ziu0Du fufUrivtS00O99r21PKNB0R0J42URkxoVQ== X-Google-Smtp-Source: AGRyM1uAEmqagveNNsFmL+AV8v4+afsrsb1pSVrUHAL6EYHo/RQqSowMHfK/Pm/8yqUWDnWwNkKswg== X-Received: by 2002:a05:6402:1f0a:b0:435:6e0a:7aba with SMTP id b10-20020a0564021f0a00b004356e0a7abamr3654939edb.318.1656145092260; Sat, 25 Jun 2022 01:18:12 -0700 (PDT) Received: from [192.168.178.21] (p4fe3a040.dip0.t-ipconnect.de. [79.227.160.64]) by smtp.gmail.com with ESMTPSA id d6-20020a170906174600b00715705dd23asm2303754eje.89.2022.06.25.01.18.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Jun 2022 01:18:11 -0700 (PDT) Date: Sat, 25 Jun 2022 10:18:03 +0200 From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Message-ID: <2153c8d2-6ec2-4aef-b346-bbc52225fadd@Spark> In-Reply-To: <83mte1b2ws.fsf@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN> <83mte1b2ws.fsf@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again X-Readdle-Message-ID: 2153c8d2-6ec2-4aef-b346-bbc52225fadd@Spark MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="62b6c4c0_25b57ed4_588f" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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: -1.0 (-) --62b6c4c0_25b57ed4_588f Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline On 25. Jun 2022, 09:47 +0200, Eli Zaretskii <eliz@HIDDEN>, wrote: > > > Maybe we could disable the calls cheaply when max-ticks is 0? I mean, something that inlines > > > > > > if (max_ticks > 0) > > > update_ticks(...) > > > > Yes, maybe. > > > > Now done. Thanks! --62b6c4c0_25b57ed4_588f Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline <html xmlns=3D=22http://www.w3.org/1999/xhtml=22> <head> <title></title> </head> <body> <div name=3D=22messageReplySection=22> <div dir=3D=22auto=22>On 25. Jun 2022, 09:47 +0200, Eli Zaretskii <eli= z=40gnu.org>, wrote:</div> <blockquote style=3D=22border-left-color: rgb(26, 188, 156); margin: 5px;= padding-left: 10px; border-left-width: thin; border-left-style: solid;=22= > <blockquote style=3D=22border-left-color: rgb(230, 126, 34); margin: 5px;= padding-left: 10px; border-left-width: thin; border-left-style: solid;=22= > <blockquote style=3D=22border-left-color: rgb(52, 152, 219); margin: 5px;= padding-left: 10px; border-left-width: thin; border-left-style: solid;=22= >Maybe we could disable the calls cheaply when max-ticks is 0=3F I mean, = something that inlines<br /> <br /> if (max=5Fticks > 0)<br /> update=5Fticks(...)</blockquote> <br /> Yes, maybe.<br /> <br /> Now done.</blockquote> </blockquote> <div dir=3D=22auto=22><br /> Thanks=21</div> </div> </body> </html> --62b6c4c0_25b57ed4_588f--
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 07:47:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 03:47:43 2022 Received: from localhost ([127.0.0.1]:44060 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o50W3-00045R-AO for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 03:47:43 -0400 Received: from eggs.gnu.org ([209.51.188.92]:45736) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o50Vo-00044f-V5 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 03:47:37 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54878) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o50Vj-0002DP-C9; Sat, 25 Jun 2022 03:47:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=0csm1D4XoJK1oknAm4nkYJFCvd1vscythpKuT0S8FuM=; b=gmf5HHUPl+hV OSnwrMpbtc3AOuiZ1owKChLikCt/O+GZbf4V0Lc8NcwJkPd+nMSw91UrtWv3kZ+hTyfgyfbZyPi4U wkbUXYGLbxsCeWuhn7CI5yjWnAF591laVvo+vNBcT7AYb3/OAyk5QbsFNPS4VB00i7rgZGmGz6WsT hCM/GtrziWD7QeTa1YB+POebpyR15IKRJ9KeIXL+i0a9Dyy78XnIlISM3iF5t+27PeD+D34MfMBYr qj/UH3x7pUBjid1S81TC9yGrCFbUzdRLvkzbU6vwmQmn5VJNs+RiOCs1YR44MzumpuxnvLACxuC1w 90dpzZNBsfbEY7XNz8o9AQ==; Received: from [87.69.77.57] (port=3086 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o50Vi-00005P-Rl; Sat, 25 Jun 2022 03:47:19 -0400 Date: Sat, 25 Jun 2022 10:47:15 +0300 Message-Id: <83mte1b2ws.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: gerd.moellmann@HIDDEN In-Reply-To: <83r13db6hp.fsf@HIDDEN> (message from Eli Zaretskii on Sat, 25 Jun 2022 09:29:54 +0300) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> < 0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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 (---) > Cc: 45898 <at> debbugs.gnu.org > Date: Sat, 25 Jun 2022 09:29:54 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > Maybe we could disable the calls cheaply when max-ticks is 0? I mean, something that inlines > > > > if (max_ticks > 0) > > update_ticks(...) > > Yes, maybe. Now done.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 07:18:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 03:18:09 2022 Received: from localhost ([127.0.0.1]:44041 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o503U-0003OH-Vd for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 03:18:09 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41176) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o503I-0003NY-Hm for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 03:18:08 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54658) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o503D-0004Wd-41; Sat, 25 Jun 2022 03:17:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=RQH7f1QQWqfTj+h5OBoM0q4xt7nPu7DQA6/JnEvVukI=; b=oQHuNV8jIzHrD5K9GwbJ Q2kvXaKQpof3Xg2TBGqMIfstU7y6w63VPXWx+tW0jN2DnQXriyL3V76El5OvUfdPPK9KSL2W5CtfJ +dHkyn8jlBA3sGZ91KElJsCmhadYG3Vm6SEBhIkToGQSd9hM6sZm0VCPWnlp9OJFQ4LvV5Fy76CKu /I2+LIMj5HYbD/AhLMMeDrL2+lRHqpffFmZFTE4q0ESC+6+3+FmDSqTsX5Buyepp5zWzFYoq/fbeV yqVBkC1UbA/87exCzYHCn2PZFtFmsAsj3Bd30aFf3X/hJLjQSN74bVVJodJZUFrige5ySlILiX+UK LL4OJbD4lcZp5Q==; Received: from [87.69.77.57] (port=1275 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o503C-0007qX-FX; Sat, 25 Jun 2022 03:17:50 -0400 Date: Sat, 25 Jun 2022 10:17:45 +0300 Message-Id: <83o7yhb49y.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <874k09nau4.fsf@HIDDEN> (message from Lars Ingebrigtsen on Fri, 24 Jun 2022 21:02:59 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <165605725704.24125.17210424600068379407@HIDDEN> <20220624075417.BFA82C0169C@HIDDEN> <87wnd6v34k.fsf@HIDDEN> <83mte2coqg.fsf@HIDDEN> <87fsjuqpzi.fsf@HIDDEN> <83k096clsx.fsf@HIDDEN> <8735fup5oh.fsf@HIDDEN> <83a6a2cher.fsf@HIDDEN> <874k09nau4.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: Gerd =?iso-8859-1?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>, 45898 <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 (---) [I've redirected the discussion here, since emacs-diffs isn't the right place for it.] > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: emacs-diffs@HIDDEN > Date: Fri, 24 Jun 2022 21:02:59 +0200 > > Eli Zaretskii <eliz@HIDDEN> writes: > > >> > I cannot reproduce this. Does it happen with the latest master? If > >> > so, can you put a breakpoint in xdisp.c here: > >> > > >> > if (w && w->desired_matrix) > >> > w->desired_matrix->no_scrolling_p = true; > >> > error ("Window showing buffer %s takes too long to redisplay", bufname); > >> > > >> > on the line that calls 'error', and when it breaks, show the > >> > backtrace, both the C backtrace and Lisp backtrace? > > (gdb) bt > #0 update_redisplay_ticks (ticks=1, w=0x55555619b040) at xdisp.c:17256 > #1 0x00005555555d894e in set_iterator_to_next (it=0x7fffffff6d40, reseat_p=true) at xdisp.c:8189 > #2 0x00005555555ddabd in move_it_in_display_line_to (it=0x7fffffff6d40, to_charpos=69407, to_x=-1, op=MOVE_TO_POS) at xdisp.c:9967 > #3 0x00005555555de979 in move_it_to (it=0x7fffffff6d40, to_charpos=69407, to_x=-1, to_y=1494, to_vpos=-1, op=10) at xdisp.c:10221 > #4 0x00005555555e06c8 in partial_line_height (it_origin=0x7fffffff80b0) at xdisp.c:10852 > #5 0x00005555555f8cd5 in try_window (window=XIL(0x55555619b045), pos=..., flags=1) at xdisp.c:20229 > #6 0x00005555555f5e16 in redisplay_window (window=XIL(0x55555619b045), just_this_one_p=false) at xdisp.c:19606 > #7 0x00005555555ee563 in redisplay_window_0 (window=XIL(0x55555619b045)) at xdisp.c:17184 > #8 0x00005555557e6222 in internal_condition_case_1 (bfun=0x5555555ee521 <redisplay_window_0>, arg=XIL(0x55555619b045), handlers=XIL(0x7ffff17549f3), hfun=0x5555555ee43a <redisplay_window_error>) at eval.c:1509 > #9 0x00005555555ee410 in redisplay_windows (window=XIL(0x55555619b045)) at xdisp.c:17154 > #10 0x00005555555ed2ce in redisplay_internal () at xdisp.c:16609 > #11 0x00005555555edd94 in redisplay_preserve_echo_area (from_where=9) at xdisp.c:16967 > #12 0x000055555584c9f5 in wait_reading_process_output (time_limit=45, nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0), wait_proc=0x0, just_wait_proc=0) at process.c:5334 > #13 0x00005555555aa9f8 in sit_for (timeout=make_fixnum(45), reading=true, display_option=1) at dispnew.c:6238 > #14 0x000055555572aa94 in read_char (commandflag=1, map=XIL(0x55555941e113), prev_event=XIL(0), used_mouse_menu=0x7fffffffd9df, end_time=0x0) at keyboard.c:2840 > #15 0x000055555573ab2b in read_key_sequence (keybuf=0x7fffffffdbe0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9988 > #16 0x0000555555726f35 in command_loop_1 () at keyboard.c:1391 > #17 0x00005555557e617b in internal_condition_case (bfun=0x555555726adf <command_loop_1>, handlers=XIL(0x90), hfun=0x5555557260e7 <cmd_error>) at eval.c:1485 > #18 0x000055555572678f in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1132 > #19 0x00005555557e583d in internal_catch (tag=XIL(0xf660), func=0x555555726765 <command_loop_2>, arg=XIL(0x90)) at eval.c:1208 > #20 0x0000555555726721 in command_loop () at keyboard.c:1110 > #21 0x0000555555725c89 in recursive_edit_1 () at keyboard.c:719 > #22 0x0000555555725e35 in Frecursive_edit () at keyboard.c:802 > #23 0x0000555555722188 in main (argc=3, argv=0x7fffffffe0f8) at emacs.c:2517 > > Lisp Backtrace: > "redisplay_internal (C function)" (0x0) > (gdb) Thanks. I tried to fix this on master, please see if the problem is gone.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 06:30:08 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 02:30:08 2022 Received: from localhost ([127.0.0.1]:44015 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o4zJ1-0002EA-Nc for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 02:30:08 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35646) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o4zIz-0002DD-AO for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 02:30:06 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54382) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o4zIu-0000PR-2p; Sat, 25 Jun 2022 02:30:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=rGaqgkm8hv6JLqWAVjJZQ57+sgNDrcUybBMEOpmwxL8=; b=Jh9CSeWxJXjEgpfGbVXx L3ckjhV6mZ/2g/swKTzoY5+bmczjhhVOg71DQ20CCEEoCFBDweXQ0si54WvBpzSSq6PBdctAKroyS LyrmoscO7mnvZrwYTtR4o8TfKsmDR9WsosXTxt/KBP74xXCVSt++bMg7PGCgHUtFwSKYB/AhLiieo amC6ZiDv16K2c33VVoTKiKMRko+S3wGgAQ7i4FnvHA6+KjsowlbjZmm4CMKKweJE/INbPd8Dmq680 WsOB01Df+6BsT/aabdMQomb2xa1Gd8dYbZOKUFGjABeADkdEU1eFIWk9TeeupNCHR2R4TUf5Jq3FP luT8TUTO4/8g3Q==; Received: from [87.69.77.57] (port=2291 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o4zIt-0006VT-Im; Sat, 25 Jun 2022 02:29:59 -0400 Date: Sat, 25 Jun 2022 09:29:54 +0300 Message-Id: <83r13db6hp.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> (message from Gerd =?utf-8?Q?M=C3=B6llmann?= on Sat, 25 Jun 2022 06:54:19 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> < 0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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 (---) > From: Gerd Möllmann <gerd.moellmann@HIDDEN> > Date: Sat, 25 Jun 2022 06:54:19 +0200 > Cc: 45898 <at> debbugs.gnu.org > > I think it helps me in the following when I briefly describe the model of Emacs’ internals I have in my head. > That way, I can write about things in terms in which I think. So, let me try. When I think of Emacs' design, I > think of functions and categories they belong to. Categories in the sense of animal, dog, human, plant. A > bit like modules, but not quite, but if it’s helpful, just think of modules instead. > > The categories I'd like to use here, are lisp, redisplay, iterator, update, regexp. I leave the rest out. Here is > what I group under these categories: That's clear, thanks. > One of the first things that came to my mind is a new category "time fuse" (in German Zeitzünder), > something counting ticks, and detonating (signaling) at some point. I admit that I find the names you used > with redisplay in them confusing. Especially in the regexp code and so. That's mainly to keep the names from getting too long to be useful. I could have used something like update_display_code_iteration_ticks, but it looked to me that "redisplay" is a good way of saying "display code" shorter. > Functionality-wise, Iterator now signals an error that redisplay catches. Yes, that's the main idea. But note that in some cases Iterator is called directly from Lisp, not from Redisplay, in which case the error is caught by the command loop (not sure where that is in your taxonomy? is that also Lisp?), not by Redisplay. Case in point: C-n. > The error is signaled when a global tick counter exceeds a max value. Each movement of an iterator > increments the global tick counter. The counter is global because you want to sum up all the ticks that > occur between a given start point where the tick counter is set to 0, and the point where the ticks exceed the > maximum, regardless of iterator -> lisp -> iterator nesting. > > The global tick counter is also incremented from regexp. I think font-lock plays a role here. One scenario is > redisplay or lisp -> iterator, iterator needs font-lock to run (-> lisp), font-lock matches a regexp (lisp -> > regexp), and we get stuck on a long line. Likewise with other stuff, like syntax. Right. But I want to explain why I count ticks in regexp, in syntax.c, and in some places in bidi.c. The reason is that a single call to set_iterator_to_next, which basically counts as one tick, can sometimes result in prolonged operations. So some ticks are "more equal" than others, and I looked for a way of expressing that. What you see in those other places is the result of that: it makes iteration steps that trigger prolonged examination of buffer text to count as more than one tick. > (BTW, the call to update the tick in regexp can lead to a GC when the error is signaled, in the same way as > in bug 56108 with maybe_quit. So we might need that, too.) Yes, it could cause GC, but I'm not sure what you mean by "we might need that". What is "that" here? Did you mean we should count ticks inside GC as well? If so, we'd need to have some way of preventing a signal when the tick count reaches the threshold, because we cannot signal an error inside GC. > Maybe we could disable the calls cheaply when max-ticks is 0? I mean, something that inlines > > if (max_ticks > 0) > update_ticks(...) Yes, maybe. > The meaning of display_working_on_window_p is not clear to me. I see what setting it does in the end, but I > can't tell what this means: > > /* True while some display-engine code is working on layout of some > window. The reason for that kludge is the urge to avoid signaling an error when regexp or syntax.c is called in the context that is not related to any display code whatsoever. Since these functions don't know whether they are invoked by some code in Iterator or by Lisp, they will count the ticks regardless, and I don't want them to signal an error if they happen to count too many ticks. > Do you want me to take a deeper look at specific places? As you wish. I just wanted a second opinion on the overall design, and my main worry besides that is whether there are situations where this simple mechanism could cause trouble. E.g., Lars already uncovered one such situation, see https://lists.gnu.org/archive/html/emacs-diffs/2022-06/msg00761.html (I will redirect that to here, as emacs-diffs is not for discussions of this sort.)
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 04:54:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 25 00:54:31 2022 Received: from localhost ([127.0.0.1]:43961 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o4xoV-0008AW-9u for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 00:54:31 -0400 Received: from mail-ej1-f54.google.com ([209.85.218.54]:36742) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1o4xoT-0008AI-BA for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 00:54:30 -0400 Received: by mail-ej1-f54.google.com with SMTP id cw10so8512807ejb.3 for <45898 <at> debbugs.gnu.org>; Fri, 24 Jun 2022 21:54:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=nMtFVa9iawBoDQw3SFamxsCuCvS19ycipz1/F8oGZ84=; b=ZM7TVQRPlq0IvGE+ippO5qC3JcF9xr6KAxPCT8gnPy+a54bUQ3QmVUiDlNd9J2iiQC NhbqcChdBe2Tb5tZQmwaU/cmL31eG7/XT5h1hdNhOgwH5AcNyLQihkxQOiXV0nBOjj7S E1gAsNExMjMMSKVg9IVFGrzHfyQjeNUr8QiHYg/YXUaWw+TmJrSSx8RoQBrr+d5oVPTN kzEeiy6DFarIPo5kYWzgHpZ2ZK6w82QSieJRWjo+bgbun/MBwGEvIZ/t6n7BKuuFeOmg /oQEXY5pIzYt8siPgQJ0bfdg/jAjD1xzEqzyGqp+4wYghiA8hfGxOJ4zaCZMc1kpfTuC smig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=nMtFVa9iawBoDQw3SFamxsCuCvS19ycipz1/F8oGZ84=; b=O2e6cbOsjod2e/0qa6ij1DjD+igZJenECBkYi/Z28Xdki+2EmG2g6Ck63kXVApxqAD Dr9HfCNFV07Iw/BKz8EnRhT4eS/5cKTNzbcVgFKUZKWAOzn5uxUdNTO8lzqUYxuJFTOE RTxk29YthVmekK/pzvtiusc4oWoWvogEbFNhBVfja6fhcQqK4xTHkDKZCQFvKFj3vVWj dzMEBfZDXJAxQjRbasmgmcJ3G92pJeNFCneuHp2Y4QVNJMLoOStoa5ev6gHmU5+MM9gh A6Bt2l5lNudYforjvERyUiMxVVsGnl104FOZuBZRZGxWDtWty78emRBt3SipVosK5yk+ XGOA== X-Gm-Message-State: AJIora99gF39Re7bCdJabU/LU0ni3UX4gZxrCPMJEjpnaFMRVMfzBC6J PhBNvqtP0cU5iwrlwFLoQFE= X-Google-Smtp-Source: AGRyM1vDXDhwp6GI6MlNxqTMFuxxHUJUPJsXamfDJ0mSc1hlStNQuGOselkJV03/FtQP8/65SQm7Pg== X-Received: by 2002:a17:906:530b:b0:722:e9ad:e90 with SMTP id h11-20020a170906530b00b00722e9ad0e90mr2340278ejo.676.1656132862907; Fri, 24 Jun 2022 21:54:22 -0700 (PDT) Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de. [79.227.160.64]) by smtp.gmail.com with ESMTPSA id hb10-20020a170906b88a00b007266185ca67sm107917ejb.150.2022.06.24.21.54.21 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jun 2022 21:54:22 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> Message-Id: <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> Content-Type: multipart/alternative; boundary="Apple-Mail=_4C868E66-B48E-4883-B336-437361CDAF3E" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: bug#45898: 27.1; wedged in redisplay again Date: Sat, 25 Jun 2022 06:54:19 +0200 In-Reply-To: <83o7yicx3p.fsf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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: -1.0 (-) --Apple-Mail=_4C868E66-B48E-4883-B336-437361CDAF3E Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 2022-06-24,, at 9:57 , Eli Zaretskii <eliz@HIDDEN> wrote: >=20 >=20 > Gerd, your comments will be most appreciated, TIA. >=20 I didn=E2=80=99t read the whole thread in the bug report, but i think I = understand the gist of the matter, from our recent conversation, and = from reading the change set.=20 I think it helps me in the following when I briefly describe the model = of Emacs=E2=80=99 internals I have in my head. That way, I can write = about things in terms in which I think. So, let me try. When I think = of Emacs' design, I think of functions and categories they belong to. = Categories in the sense of animal, dog, human, plant. A bit like = modules, but not quite, but if it=E2=80=99s helpful, just think of = modules instead.=20 The categories I'd like to use here, are lisp, redisplay, iterator, = update, regexp. I leave the rest out. Here is what I group under these = categories: Lisp Eval, funcall API for buffers, windows, etc ... Iterator Walk over text in display order (including bidi, display = strings) Determine current character, image Keep track of pixel (x y w h) (x y) <-> text position computation Redisplay Produce desired glyphs=20 Produce as few as possible (optimizations) Update Bring desired glyphs to the screen Regexp=20 Matching and searching support That=E2=80=99s why I=E2=80=99m sometimes slow when redisplay is used for = what I call iterator.=20 If -> denotes "uses", or "calls into", we have Lisp=20 -> iterator in (x y) <-> text pos=20 -> regexp=20 -> redisplay (I think, Fredisplay?) Redisplay=20 -> iterator=20 -> lisp (hooks) Iterator -> Lisp (eval funcall hooks) Update=20 -> maybe hook, I don=E2=80=99t remember Regexp=20 -> lisp, I=E2=80=99ve heard Very roughly, and much too long, sorry for that. What I so far understand about your design, and i haven't looked at = details: One of the first things that came to my mind is a new category "time = fuse" (in German Zeitz=C3=BCnder), something counting ticks, and = detonating (signaling) at some point. I admit that I find the names you = used with redisplay in them confusing. Especially in the regexp code = and so. Functionality-wise, Iterator now signals an error that redisplay = catches.=20 The error is signaled when a global tick counter exceeds a max value. = Each movement of an iterator increments the global tick counter. The = counter is global because you want to sum up all the ticks that occur = between a given start point where the tick counter is set to 0, and the = point where the ticks exceed the maximum, regardless of iterator -> lisp = -> iterator nesting. The global tick counter is also incremented from regexp. I think = font-lock plays a role here. One scenario is redisplay or lisp -> = iterator, iterator needs font-lock to run (-> lisp), font-lock matches a = regexp (lisp -> regexp), and we get stuck on a long line. Likewise with = other stuff, like syntax. Good. (BTW, the call to update the tick in regexp can lead to a GC when the = error is signaled, in the same way as in bug 56108 with maybe_quit. So = we might need that, too.) Maybe we could disable the calls cheaply when max-ticks is 0? I mean, = something that inlines if (max_ticks > 0) update_ticks(...) I would have a better gut feeling in that case, wrt older machines. Not = that I notice a slowdown on my machine, but I'm building with ASan = enabled, so everything is kinda slow anyway. The meaning of display_working_on_window_p is not clear to me. I see = what setting it does in the end, but I can't tell what this means: /* True while some display-engine code is working on layout of some window. Probably good. Do you want me to take a deeper look at specific places? --Apple-Mail=_4C868E66-B48E-4883-B336-437361CDAF3E Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 <html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; = charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; = -webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><br = class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div = class=3D"">On 2022-06-24,, at 9:57 , Eli Zaretskii <<a = href=3D"mailto:eliz@HIDDEN" class=3D"">eliz@HIDDEN</a>> = wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><div = class=3D""><br class=3D"">Gerd, your comments will be most appreciated, = TIA.<br class=3D""><br class=3D""></div></div></blockquote><br = class=3D""></div><div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">I didn=E2=80=99t read the whole thread in the = bug report, but i think I understand the gist of the matter, from our = recent conversation, and from reading the change set. </div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue"; = min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: = 0px; font-stretch: normal; font-size: 13px; line-height: normal; = font-family: "Helvetica Neue";" class=3D"">I think it helps me = in the following when I briefly describe the model of Emacs=E2=80=99 = internals I have in my head. That way, I can write about things in = terms in which I think. So, let me try. When I think of = Emacs' design, I think of functions and categories they belong to. = Categories in the sense of animal, dog, human, plant. A bit like = modules, but not quite, but if it=E2=80=99s helpful, just think of = modules instead. </div><div style=3D"margin: 0px; font-stretch: = normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">The categories I'd like to use here, are lisp, = redisplay, iterator, update, regexp. I leave the rest out. Here = is what I group under these categories:</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">Lisp</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>Eval, funcall</div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>API for buffers, windows, etc</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>...</div><div style=3D"margin: = 0px; font-stretch: normal; font-size: 13px; line-height: normal; = font-family: "Helvetica Neue";" class=3D"">Iterator</div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>Walk over text in display order (including bidi, display = strings)</div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>Determine current character, = image</div><div style=3D"margin: 0px; font-stretch: normal; font-size: = 13px; line-height: normal; font-family: "Helvetica Neue";" = class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>Keep track of pixel (x y w h)</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>(x y) <-> text position = computation</div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">Redisplay</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>Produce desired = glyphs </div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>Produce as few as possible = (optimizations)</div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">Update</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>Bring desired glyphs to the = screen</div><div style=3D"margin: 0px; font-stretch: normal; font-size: = 13px; line-height: normal; font-family: "Helvetica Neue";" = class=3D"">Regexp </div><div style=3D"margin: 0px; font-stretch: = normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>Matching and searching = support</div><div style=3D"margin: 0px; font-stretch: normal; font-size: = 13px; line-height: normal; font-family: "Helvetica Neue"; = min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: = 0px; font-stretch: normal; font-size: 13px; line-height: normal; = font-family: "Helvetica Neue";" class=3D"">That=E2=80=99s why = I=E2=80=99m sometimes slow when redisplay is used for what I call = iterator. </div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">If -> denotes "uses", or "calls into", we = have</div><div style=3D"margin: 0px; font-stretch: normal; font-size: = 13px; line-height: normal; font-family: "Helvetica Neue"; = min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: = 0px; font-stretch: normal; font-size: 13px; line-height: normal; = font-family: "Helvetica Neue";" class=3D"">Lisp </div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>-> iterator in (x y) <-> text pos </div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>-> regexp </div><div style=3D"margin: 0px; font-stretch: = normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>-> redisplay (I think, = Fredisplay?)</div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">Redisplay </div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>-> iterator </div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>-> lisp (hooks)</div><div style=3D"margin: 0px; font-stretch: = normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D"">Iterator</div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>-> Lisp (eval funcall hooks)</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D"">Update </div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>-> maybe hook, I don=E2=80=99t remember</div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D"">Regexp </div><div style=3D"margin: 0px; font-stretch: = normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>-> lisp, I=E2=80=99ve = heard</div><div style=3D"margin: 0px; font-stretch: normal; font-size: = 13px; line-height: normal; font-family: "Helvetica Neue"; = min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: = 0px; font-stretch: normal; font-size: 13px; line-height: normal; = font-family: "Helvetica Neue";" class=3D"">Very roughly, and = much too long, sorry for that.</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">What I so far understand about your design, and = i haven't looked at details:</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">One of the first things that came to my mind is = a new category "time fuse" (in German Zeitz=C3=BCnder), something = counting ticks, and detonating (signaling) at some point. I admit = that I find the names you used with redisplay in them confusing. = Especially in the regexp code and so.</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">Functionality-wise, Iterator now signals an = error that redisplay catches. </div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">The error is signaled when a global tick counter = exceeds a max value. Each movement of an iterator increments the = global tick counter. The counter is global because you want to sum = up all the ticks that occur between a given start point where the tick = counter is set to 0, and the point where the ticks exceed the maximum, = regardless of iterator -> lisp -> iterator nesting.</div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue"; = min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: = 0px; font-stretch: normal; font-size: 13px; line-height: normal; = font-family: "Helvetica Neue";" class=3D"">The global tick = counter is also incremented from regexp. I think font-lock plays a = role here. One scenario is redisplay or lisp -> iterator, = iterator needs font-lock to run (-> lisp), font-lock matches a regexp = (lisp -> regexp), and we get stuck on a long line. Likewise = with other stuff, like syntax.</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">Good.</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">(BTW, the call to update the tick in regexp can = lead to a GC when the error is signaled, in the same way as in bug 56108 = with maybe_quit. So we might need that, too.)</div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue"; = min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: = 0px; font-stretch: normal; font-size: 13px; line-height: normal; = font-family: "Helvetica Neue";" class=3D"">Maybe we could = disable the calls cheaply when max-ticks is 0? I mean, something = that inlines</div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue"; min-height: 15px;" class=3D""><br class=3D""></div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>if (max_ticks > 0)</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue";" class=3D""> = update_ticks(...)</div><div style=3D"margin: 0px; font-stretch: = normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">I would have a better gut feeling in that case, = wrt older machines. Not that I notice a slowdown on my machine, = but I'm building with ASan enabled, so everything is kinda slow = anyway.</div><div style=3D"margin: 0px; font-stretch: normal; font-size: = 13px; line-height: normal; font-family: "Helvetica Neue"; = min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: = 0px; font-stretch: normal; font-size: 13px; line-height: normal; = font-family: "Helvetica Neue";" class=3D"">The meaning of = display_working_on_window_p is not clear to me. I see what setting = it does in the end, but I can't tell what this means:</div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue"; = min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: = 0px; font-stretch: normal; font-size: 13px; line-height: normal; = font-family: "Helvetica Neue";" class=3D"">/* True while some = display-engine code is working on layout of some</div><div = style=3D"margin: 0px; font-stretch: normal; font-size: 13px; = line-height: normal; font-family: "Helvetica Neue";" = class=3D""> window.</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">Probably good.</div><div style=3D"margin: 0px; = font-stretch: normal; font-size: 13px; line-height: normal; font-family: = "Helvetica Neue"; min-height: 15px;" class=3D""><br = class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; = font-size: 13px; line-height: normal; font-family: "Helvetica = Neue";" class=3D"">Do you want me to take a deeper look at specific = places?</div><div class=3D""><br class=3D""></div></div><br = class=3D""></body></html>= --Apple-Mail=_4C868E66-B48E-4883-B336-437361CDAF3E--
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 24 Jun 2022 07:57:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jun 24 03:57:50 2022 Received: from localhost ([127.0.0.1]:40772 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o4eCH-0000X0-TU for submit <at> debbugs.gnu.org; Fri, 24 Jun 2022 03:57:50 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47084) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o4eCG-0000Wn-30 for 45898 <at> debbugs.gnu.org; Fri, 24 Jun 2022 03:57:45 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:57088) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o4eC9-0000MM-Fk; Fri, 24 Jun 2022 03:57:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=Uney4jInQD4p4RcF97rygenzV0sANH2uEjQOE/3ck3c=; b=NP44hifEvcPeIWG8e3FL 7Cl3VSkQHdxF+kgNQp+EA9scmw6WqiB7sdWZEysnYOdozmo/FeGP6+1zWPnc4r4KeHDM7iKxlIYMF glg4LfXNSF2kfNVMY3Lef6u1Yg5L4vtFanMicbVnhyMxvBRXyfggSnbhHf4sUV0xMHNj33ZlmOlfh M7ib8OrjMsrYEHRk6yztLLaMUz0TD5H1ck28Ce+3g87RtGauiquUUY3wDXW8xzZ2VnzdaRO8yXd7W kj/loTmYXYnXlIxXS3WkCc1XbldK7cHljG57bQ1jCOnxpnEFCq7LvctyWZQos4nkwnMgR3djzrtas 2DFhP+phlwoNHg==; Received: from [87.69.77.57] (port=2524 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o4eC8-0004EH-VM; Fri, 24 Jun 2022 03:57:37 -0400 Date: Fri, 24 Jun 2022 10:57:30 +0300 Message-Id: <83o7yicx3p.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN>, =?iso-8859-1?Q?Gerd_M=F6llmann?= <gerd.moellmann@HIDDEN> In-Reply-To: <jwvk097oznl.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Thu, 23 Jun 2022 17:14:50 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> <jwvk097oznl.fsf-monnier+emacs@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: larsi@HIDDEN, psainty@HIDDEN, Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > Date: Thu, 23 Jun 2022 17:14:50 -0400 > > >> For such huge files, it's arguably more important to be more-or-less > >> usable than it is to get the highlighting right, so there's a good case > >> for turning off font-lock or breaking it somewhat by using arbitrary > >> limits in the handling of `font-lock-extend-region-functions` in > >> `font-lock-default-fontify-region`. > > I'm talking about cases where the user visits such files without > > knowing in advance that he/she has better turned off font-lock there. > > I'm asking whether one of the things we could do when we discover that > > parse-partial-sexp is called for such a large chunk of text could be > > automatic introduction of such a limit only for that buffer, so that > > font-lock won't be such a significant part of the reason for redisplay > > slowness in these cases. > > Yes, that's exactly what I'm proposing in the paragraph you quoted. > I think it makes sense to bound the growth of the region due to > `font-lock-extend-region-functions`. We could bound it where we handle > `font-lock-extend-region-functions`, or we could bound it just inside > `font-lock-extend-region-wholelines`. I hope this will be done soon. I've landed the feature on master, let me know (everyone, not just Stefan) how it fares. Gerd, your comments will be most appreciated, TIA. > > I guess this is related to font-lock > > settings of js.el, but my question is: would any mode that uses > > syntactic fontification be similarly affected, or is there anything > > special with js.el specifically? > > I think pretty much any major mode would be affected. It can be more or > less severe depending on how much work is done inside > `font-lock-keywords` (and `syntax-propertize`), but by and large I'd > expect it to suck for all non-trivial modes. For now, you will see that the code I installed "punishes" syntax.c for exploring too many character positions, hope this is "good enough" for the relevant pathological situations.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 23 Jun 2022 21:15:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 23 17:15:04 2022 Received: from localhost ([127.0.0.1]:40121 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o4UAJ-0007Kj-SH for submit <at> debbugs.gnu.org; Thu, 23 Jun 2022 17:15:04 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:11670) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1o4UAH-0007Jn-Bf for 45898 <at> debbugs.gnu.org; Thu, 23 Jun 2022 17:15:03 -0400 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C02BA8076B; Thu, 23 Jun 2022 17:14:55 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id D080B80636; Thu, 23 Jun 2022 17:14:53 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656018893; bh=NcW1Cqd05y3At0xiggvdzBLdflBXRI0WKcz4CfG+k6E=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=FYyV2Cha7yEXP8Pfrebl6Mfhbs9ScrKNE00+mtB+XDyAO4y27rXK7ckJUndU0vxJ8 fv+nnmLdmZdV/H/9+BEu8LNoF/6QbQrRHSW3jCoaDRI2PwOSwudgFL3nZAXmfSfxrP wnHA5XJjTbC/3foG/FOBwmQ17PCxB6S45af66z7OQDE+0AZVhcDLGyro9GRkIIHrS8 V6cDDxjzJ7sLx2rwQYwPwuZoldk7LLJ30Y98XdAOMWryM61rdSNtgqwhZFNKPjUdWt sqm6/DoKNuCgRwOU/dQYEF+eYOYEAfGLoRHLksW3yKyqS1FIVXo+/W1BL89EEHLIr8 bAMC/0YqI9VUA== Received: from alfajor (196.214.25.93.rev.sfr.net [93.25.214.196]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id D67C2120346; Thu, 23 Jun 2022 17:14:52 -0400 (EDT) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again Message-ID: <jwvk097oznl.fsf-monnier+emacs@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN> Date: Thu, 23 Jun 2022 17:14:50 -0400 In-Reply-To: <837d57gbed.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 23 Jun 2022 09:08:10 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) 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.050 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) >> > Are you saying that many regular expressions in font-lock-keywords are >> > anchored at beginning or end of a line? >> No but for example if the 10000 char boundary falls in the middle of the >> word "function", then all the highlighting rules which rely on matching >> the keyword "function" will fail. > So we value accurate fontification more than we value a usable Emacs > session? There was no value judgment in my answer :-) >> For such huge files, it's arguably more important to be more-or-less >> usable than it is to get the highlighting right, so there's a good case >> for turning off font-lock or breaking it somewhat by using arbitrary >> limits in the handling of `font-lock-extend-region-functions` in >> `font-lock-default-fontify-region`. > I'm talking about cases where the user visits such files without > knowing in advance that he/she has better turned off font-lock there. > I'm asking whether one of the things we could do when we discover that > parse-partial-sexp is called for such a large chunk of text could be > automatic introduction of such a limit only for that buffer, so that > font-lock won't be such a significant part of the reason for redisplay > slowness in these cases. Yes, that's exactly what I'm proposing in the paragraph you quoted. I think it makes sense to bound the growth of the region due to `font-lock-extend-region-functions`. We could bound it where we handle `font-lock-extend-region-functions`, or we could bound it just inside `font-lock-extend-region-wholelines`. > Also, can you tell why visiting the same file in Text mode doesn't > produce the same effect? Probably because it doesn't setup font-lock mode? > I guess this is related to font-lock > settings of js.el, but my question is: would any mode that uses > syntactic fontification be similarly affected, or is there anything > special with js.el specifically? I think pretty much any major mode would be affected. It can be more or less severe depending on how much work is done inside `font-lock-keywords` (and `syntax-propertize`), but by and large I'd expect it to suck for all non-trivial modes. Stefan
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 23 Jun 2022 06:08:33 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 23 02:08:33 2022 Received: from localhost ([127.0.0.1]:37035 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o4G0z-0003S3-Gw for submit <at> debbugs.gnu.org; Thu, 23 Jun 2022 02:08:33 -0400 Received: from eggs.gnu.org ([209.51.188.92]:53104) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o4G0w-0003Ro-QI for 45898 <at> debbugs.gnu.org; Thu, 23 Jun 2022 02:08:28 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35224) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o4G0r-0007vR-8R; Thu, 23 Jun 2022 02:08:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=oIhKEoBpgeT9DWBb+9Sy24d0Dl9e1oGCXMFZstfYrY8=; b=C7duKHnsAm1w JLNuVwtL2XOl5BQ0zW2tKSKLDuWnLeDgG9gMcuD3rGkhj0HHKv5JrMNW5r5IkvQsvziDM4Wv1717f zJNIE8FHCl4HYFn5yyT+cxYWJuJZNmNH2XUqBdqR4LsoVNAV5IqdVYmlhtshCufz4EuJ+tj6Rww+Z nR8GER5B58LRiDDMUZXA4VBUfYMGnpUsy8WocMp7x7ZoycD7bWokL7chePAatKTDMICs+7jlwb3/+ elgphokzGasvx/fDEOWlLZIkF+vII0lQA37DA8bdM24kcgz2xAzjEV104+9wWHiEb7yJ+Hg7QYcel vpiTmUvvqJme5Y2uS+7jFQ==; Received: from [87.69.77.57] (port=2046 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o4G0p-0004R5-1D; Thu, 23 Jun 2022 02:08:20 -0400 Date: Thu, 23 Jun 2022 09:08:10 +0300 Message-Id: <837d57gbed.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Wed, 22 Jun 2022 19:39:14 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: larsi@HIDDEN, psainty@HIDDEN, Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > Date: Wed, 22 Jun 2022 19:39:14 -0400 > > > Isn't there a way to limit what font-lock considers a "line" such that > > it doesn't consider more than some number N of characters? What could > > potentially happen if we set N to, like, 10,000 characters? > > Misfontification around that boundary. > > > Are you saying that many regular expressions in font-lock-keywords are > > anchored at beginning or end of a line? > > No but for example if the 10000 char boundary falls in the middle of the > word "function", then all the highlighting rules which rely on matching > the keyword "function" will fail. So we value accurate fontification more than we value a usable Emacs session? That sounds strange to me, since fontification is basically a nicety, in the sense that it is not necessary for the text being readable by humans. To put this in perspective, I'm about to land a feature which, when activated, will sometimes produce semi-updated windows (like incorrect position of cursor) or even completely outdated windows (where what's on the glass doesn't necessarily reflect where we are in the text, like if you are at EOB, but the window still shows the last portion of buffer text). All that is done as a means to make Emacs usable even when you for some reason visited a file with such pathologically long lines. If the weird results of redisplay under that feature are acceptable in these extreme situations, I wonder why sacrificing accuracy of font-lock wouldn't be. > > And even if the regexp-based font-lock needs to do it line-by-line, > > does it really _have_ to invoke parse-partial-sexp for the entire > > line, when doing syntactical fontifications? why is that? > > AFAICT this is a call that does > > (parse-partial-sexp (point) end nil nil state 'syntax-table) > > where `end` happens to be point-max (because of font-lock's rounding up > to whole lines) which will not itself parse all the way to `end` but > will instead stop at the next string/comment boundary. This is used > (inside a loop which will indeed go all the way to `end`, > i.e. `point-max`) to highlight strings and comments (as you can see > from the stack trace, this is `font-lock-fontify-syntactically-region`). Yes, that's what I see. > For such huge files, it's arguably more important to be more-or-less > usable than it is to get the highlighting right, so there's a good case > for turning off font-lock or breaking it somewhat by using arbitrary > limits in the handling of `font-lock-extend-region-functions` in > `font-lock-default-fontify-region`. I'm talking about cases where the user visits such files without knowing in advance that he/she has better turned off font-lock there. I'm asking whether one of the things we could do when we discover that parse-partial-sexp is called for such a large chunk of text could be automatic introduction of such a limit only for that buffer, so that font-lock won't be such a significant part of the reason for redisplay slowness in these cases. Also, can you tell why visiting the same file in Text mode doesn't produce the same effect? I guess this is related to font-lock settings of js.el, but my question is: would any mode that uses syntactic fontification be similarly affected, or is there anything special with js.el specifically? IOW, is the above tendency to scan everything to the end of line inherent in syntactic fontifications? Thanks.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 22 Jun 2022 23:39:44 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 22 19:39:44 2022 Received: from localhost ([127.0.0.1]:36848 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o49wi-0004Gk-DL for submit <at> debbugs.gnu.org; Wed, 22 Jun 2022 19:39:44 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:23018) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1o49wU-0004GM-Ok for 45898 <at> debbugs.gnu.org; Wed, 22 Jun 2022 19:39:38 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 31EE81001D2; Wed, 22 Jun 2022 19:39:21 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id A2807100427; Wed, 22 Jun 2022 19:39:19 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1655941159; bh=Nhnhgio/rvD/KVFmSwBRMcHn2SSI6nmNw4QgsXV/B+0=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=dhtHXW3VznHNmh62QoV4v5M/KsaO9p+/Y1wNk0RoNJQhXn3i0r7RuTe7PDcsOUt6L 22muRGU1LMHoq/HF8x+4t1+Exj4IH2I88jpK44IeCjglwpv/2I3woyUNo3a3eykTYm cdRPS2hZPtB1OHYW0mvah3Yj5fC1fJ3i3GWLYQ+nk6KhnhSBQ0Z3aINH2Q9Mq4Hqi7 Szf54hiD2lVA9YAyysCMNp4PqeEGmL2wwiUFXYkVnSH0zriuBYYWKtutJc52Jin3V4 EYGf+APoI+Oz+XzZvP2+WPItli91S730KoRZtEBQQkYZEDVsUtRh7XWnmf8rw6o9Xq tvnhenDplb5CA== Received: from alfajor (196.214.25.93.rev.sfr.net [93.25.214.196]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 1B6FE1204DE; Wed, 22 Jun 2022 19:39:17 -0400 (EDT) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again Message-ID: <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN> Date: Wed, 22 Jun 2022 19:39:14 -0400 In-Reply-To: <83mte5jukr.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 22 Jun 2022 05:33:24 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) 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.099 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > Isn't there a way to limit what font-lock considers a "line" such that > it doesn't consider more than some number N of characters? What could > potentially happen if we set N to, like, 10,000 characters? Misfontification around that boundary. > Are you saying that many regular expressions in font-lock-keywords are > anchored at beginning or end of a line? No but for example if the 10000 char boundary falls in the middle of the word "function", then all the highlighting rules which rely on matching the keyword "function" will fail. > And even if the regexp-based font-lock needs to do it line-by-line, > does it really _have_ to invoke parse-partial-sexp for the entire > line, when doing syntactical fontifications? why is that? AFAICT this is a call that does (parse-partial-sexp (point) end nil nil state 'syntax-table) where `end` happens to be point-max (because of font-lock's rounding up to whole lines) which will not itself parse all the way to `end` but will instead stop at the next string/comment boundary. This is used (inside a loop which will indeed go all the way to `end`, i.e. `point-max`) to highlight strings and comments (as you can see from the stack trace, this is `font-lock-fontify-syntactically-region`). For such huge files, it's arguably more important to be more-or-less usable than it is to get the highlighting right, so there's a good case for turning off font-lock or breaking it somewhat by using arbitrary limits in the handling of `font-lock-extend-region-functions` in `font-lock-default-fontify-region`. Stefan
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 22 Jun 2022 02:33:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 21 22:33:48 2022 Received: from localhost ([127.0.0.1]:33622 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o3qBc-0005jW-G7 for submit <at> debbugs.gnu.org; Tue, 21 Jun 2022 22:33:48 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60922) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o3qBa-0005jI-G4 for 45898 <at> debbugs.gnu.org; Tue, 21 Jun 2022 22:33:43 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:32996) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o3qBT-0006eZ-Vc; Tue, 21 Jun 2022 22:33:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=QYkQ8cHBBxT7hwdA1W4ogYd1+LWajDweUscZIdvPv6Y=; b=NaUKDa4VM2qt dO6T1IsQInI8fg8AoKiopCh60mPIIenIe7pqsJKNeuoOLMNnB/Zx4/gaFDTRmYmLI4BrlIZfdT7Wm k7O7h00D0qvNUPHUh9afp/Wma1hp2SCSZVgw9GC4uW4f7uRkbnPe8TTmQm55s7vulKqu/xf9LAtt7 T48UTc2aa4bnxs/6Gjp4XDsheG0dI+fPwP0fEyBVxzzjqQ0N6Ftf8Caxbba6pgZkkf5/Cg9ynA/dB 32UN2G1zGelalUcUBJCH/EMoLK582KdKN3duQ2RkwmcUg2sxAiQk4qvp09aDOGXeL8T2LtwQzKa5E tHymk2VPxZt4iMpF+k/zgQ==; Received: from [87.69.77.57] (port=1576 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o3qBT-00038T-F0; Tue, 21 Jun 2022 22:33:35 -0400 Date: Wed, 22 Jun 2022 05:33:24 +0300 Message-Id: <83mte5jukr.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Tue, 21 Jun 2022 16:38:59 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: Lars Ingebrigtsen <larsi@HIDDEN>, psainty@HIDDEN, > Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Tue, 21 Jun 2022 16:38:59 -0400 > > > One surprising finding is that sometimes syntactic fontifications > > (triggered via jit-lock.el as part of rendering the buffer) seem to > > run amok: jit-lock asks the mode's fontification to fontify a > > 1500-character block, but that results in parse-partial-sexp being > > called to parse the entire humongous file, BOB to EOB. > > IIUC the file is a single long-line. Font-lock works line-by-line (in > theory major modes can override that by providing their own value for > `font-lock-extend-region-functions`, but regexp-based fontification is > hard to do with our regexp enging if not working line-by-line), so even > if jit-lock only requests fontification of a 1500-char block, font-lock > rounds it up to a whole number of lines (and then proceeds to call > `parse-partial-sexp), which would explain what you're seeing. Isn't there a way to limit what font-lock considers a "line" such that it doesn't consider more than some number N of characters? What could potentially happen if we set N to, like, 10,000 characters? Are you saying that many regular expressions in font-lock-keywords are anchored at beginning or end of a line? And even if the regexp-based font-lock needs to do it line-by-line, does it really _have_ to invoke parse-partial-sexp for the entire line, when doing syntactical fontifications? why is that?
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 21 Jun 2022 20:39:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 21 16:39:10 2022 Received: from localhost ([127.0.0.1]:33424 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o3keU-0004by-HJ for submit <at> debbugs.gnu.org; Tue, 21 Jun 2022 16:39:10 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:26556) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1o3keT-0004bl-CC for 45898 <at> debbugs.gnu.org; Tue, 21 Jun 2022 16:39:09 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 9A5E8100392; Tue, 21 Jun 2022 16:39:03 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 27589100182; Tue, 21 Jun 2022 16:39:02 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1655843942; bh=97ncoPEVNL1tzgUmK6bJ/XWxpjVr5+Wo56Qy6ojff4k=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=Esm38gSXkp7ZOOpuZPChtM75D9E2As+Pv5n0m+YfQJcfxqI4M3uJOThmN2DGNvUgb 5Ht1j8IMlMRZjsMEJOyjIQNcsJpErI1dbIHkX2vvF2p6/toVsvutDEJszocjxro6X8 /P9wTSDLfXVDA11qRC7H646AN70nfFDnykRVdG3BLQggu7eynWHIwB9bSucU5yuU3n 7E0VwbPd//8qlk6+teuF8j5A60JOVWTWXhDcd6CymaWbA/kY201cgvut4kMnMdOjFg 9/NZnnrTcSSRkh0YKuNUK199+BPKCpc5ChMfPUk3KYbLBJbGQ/hZz6A3QOYGL9yK2Z og1vVz5/za4Gg== Received: from alfajor (unknown [80.82.234.185]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 3D24712047A; Tue, 21 Jun 2022 16:39:01 -0400 (EDT) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again Message-ID: <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> Date: Tue, 21 Jun 2022 16:38:59 -0400 In-Reply-To: <83iloyo0x7.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 18 Jun 2022 11:01:24 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) 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 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > One surprising finding is that sometimes syntactic fontifications > (triggered via jit-lock.el as part of rendering the buffer) seem to > run amok: jit-lock asks the mode's fontification to fontify a > 1500-character block, but that results in parse-partial-sexp being > called to parse the entire humongous file, BOB to EOB. IIUC the file is a single long-line. Font-lock works line-by-line (in theory major modes can override that by providing their own value for `font-lock-extend-region-functions`, but regexp-based fontification is hard to do with our regexp enging if not working line-by-line), so even if jit-lock only requests fontification of a 1500-char block, font-lock rounds it up to a whole number of lines (and then proceeds to call `parse-partial-sexp), which would explain what you're seeing. Stefan
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 21 Jun 2022 10:15:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 21 06:15:10 2022 Received: from localhost ([127.0.0.1]:59163 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o3auY-0005WL-88 for submit <at> debbugs.gnu.org; Tue, 21 Jun 2022 06:15:10 -0400 Received: from eggs.gnu.org ([209.51.188.92]:36030) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o3auV-0005VU-1b for 45898 <at> debbugs.gnu.org; Tue, 21 Jun 2022 06:15:05 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:41736) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o3auO-0003Qe-L1; Tue, 21 Jun 2022 06:14:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=DlmmNS7izdlGuAWEaHCKB4Pp1CrQ4aQEWiKY3Hc08yg=; b=KY1V1z3Uvca4 oragM7FHKBzjeL89Pd1zlz9QQ8lJ/KVoDqF9KBsFlQUbyK2nHvBJhdBwEkfx/fSetDTEsU9RctL1c zaMFABIyjTAHJmz+zF2BOL5SYG8fEeEbWzXSmHPu0T43obtMShUjylQGOYzWPvFE9EM24dI/LYkCP dZ2J7abtVaj/Kc2m90+t1Wo+A7UgTcg4e4vAwT515p5ftGd+LuCS4j3KAR1bqalVKuGotEq2BU17P yYA8VpdyclIeo2gcDw2F28/DX54trabS5S79upKeLngNYdfOYDO4KyxnruLWtRmNwdCDxiy0kgtbm hy+RKlF4wEwbDeaXFU309w==; Received: from [87.69.77.57] (port=4967 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o3auO-0001Vy-4V; Tue, 21 Jun 2022 06:14:56 -0400 Date: Tue, 21 Jun 2022 13:14:43 +0300 Message-Id: <83h74el3vw.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvpmj3tamr.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Mon, 20 Jun 2022 15:11:04 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <835ykvmtq8.fsf@HIDDEN> <jwvpmj3tamr.fsf-monnier+emacs@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: larsi@HIDDEN, psainty@HIDDEN, Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > Date: Mon, 20 Jun 2022 15:11:04 -0400 > > Eli Zaretskii [2022-06-20 14:58:55] wrote: > > Stefan, can you chime in on this? This aspect is basically the only > > reason I didn't yet land the feature on master. > > Sorry, I'm out of town and rather busy, but it's near the top of my > pile, so I should get to it before the end of the week. Thanks. Btw, I found that it is better to set GC threshold to a high value while investigating this case, because for some reason (probably related to the root cause) it produces gobs of Lisp objects, so originally every time I interrupted Emacs I found myself in GC. Only after raising the threshold I saw the actual culprit.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 20 Jun 2022 19:11:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 20 15:11:24 2022 Received: from localhost ([127.0.0.1]:58453 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o3Mnx-0003vI-4r for submit <at> debbugs.gnu.org; Mon, 20 Jun 2022 15:11:24 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:49263) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1o3Mnq-0003ux-M7 for 45898 <at> debbugs.gnu.org; Mon, 20 Jun 2022 15:11:20 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 554751003FF; Mon, 20 Jun 2022 15:11:09 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id BA48110019F; Mon, 20 Jun 2022 15:11:07 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1655752267; bh=bjUPB2sGJtqAozUXMLO25etbJYnG9CjBbO+AAuiCsU4=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=bbyHchxc68FSRjEy3+Z0iFAbNtr4LBGPgsiAXJs8u+x05GmaK44RgUcg5iX8uj8U4 cHpOi8b1d3AqE0HgvMaGBkWJq5WGRa7hoBeHWwKCI9ssjWtcJzL2BFPCReLG514nv4 RcRZ6suVyctN8Y51Sc9ufFDb07r6nKeDLYgY6mYlJtC5Rk+kApqGq68jJrKPxkjPBb 4118I12FFPgwwLhl6gG5sp94HxZYmBPSmjAXDWMgUlJbv2Jet/5JmwdQmZQoOReuyF qvsgi63lEE5NokzCLREwqHjP51lhTkwTDYtE3VQCEHntjrsviZM0RDH80TArC1b72N oNwFauaYfPTFg== Received: from alfajor (196.214.25.93.rev.sfr.net [93.25.214.196]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 6EE2D120520; Mon, 20 Jun 2022 15:11:06 -0400 (EDT) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again Message-ID: <jwvpmj3tamr.fsf-monnier+emacs@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> <835ykvmtq8.fsf@HIDDEN> Date: Mon, 20 Jun 2022 15:11:04 -0400 In-Reply-To: <835ykvmtq8.fsf@HIDDEN> (Eli Zaretskii's message of "Mon, 20 Jun 2022 14:58:55 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) 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.348 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 T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii [2022-06-20 14:58:55] wrote: > Stefan, can you chime in on this? This aspect is basically the only > reason I didn't yet land the feature on master. Sorry, I'm out of town and rather busy, but it's near the top of my pile, so I should get to it before the end of the week. Stefan
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 20 Jun 2022 11:59:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 20 07:59:25 2022 Received: from localhost ([127.0.0.1]:54631 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o3G3r-0000Aw-Ld for submit <at> debbugs.gnu.org; Mon, 20 Jun 2022 07:59:25 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35610) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o3G3o-0000Aj-Ut for 45898 <at> debbugs.gnu.org; Mon, 20 Jun 2022 07:59:17 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:46658) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o3G3j-0002rH-Bk; Mon, 20 Jun 2022 07:59:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=WAuhT/PsE/t0D8fYbnd6O3F/wP1poBLKyH+d3fgxSVU=; b=ZNZS61qrkxHz yhuLvRcGJF85KUhqmoPa0zO+/QTWtIsTZvclUfa9IKTj4Y2j3O0W5GQ/gDxjvq/0+UPhrmhtmJvsE 1mrekDvDr1y9sVJHgI5SK2BL90MiTMArnWAQJiMH+GdTo3I+hYVmIrN/+rWNAE6lb21cWWT0tpYf/ z6lbn/cyab49ND+kSR9/M0+OtAhlro4y3O/LBrO6wwX2ZZCsN/n1R7HmMqH7Qq4jtiz8ZKHjD/619 JXm0jOw5jdN6MeAFP/kU+sNIaOn+l1567p2aNyfHtOel3NaGyqhfidoXgUTlWusTgn2yvJkb9VFeB XX8uI6tI3jrZzHYRiR6bHw==; Received: from [87.69.77.57] (port=2216 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o3G3h-0005yW-1O; Mon, 20 Jun 2022 07:59:11 -0400 Date: Mon, 20 Jun 2022 14:58:55 +0300 Message-Id: <835ykvmtq8.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <83iloyo0x7.fsf@HIDDEN> (message from Eli Zaretskii on Sat, 18 Jun 2022 11:01:24 +0300) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) Ping? Stefan, can you chime in on this? This aspect is basically the only reason I didn't yet land the feature on master. > Cc: psainty@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Sat, 18 Jun 2022 11:01:24 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > Cc: larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > > Date: Tue, 14 Jun 2022 15:45:36 +0300 > > From: Eli Zaretskii <eliz@HIDDEN> > > > > > Date: Tue, 14 Jun 2022 10:40:47 +1200 > > > From: Phil Sainty <psainty@HIDDEN> > > > Cc: Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN, > > > 45898 <at> debbugs.gnu.org > > > > > > My standard example is this file: > > > https://github.com/Wilfred/ReVo-utilities/blob/a4bdc40dd2656c496defc461fc19c403c8306d9f/revo-export/dictionary.json?raw=true > > > > > > and which is ~19MB in a single line of JSON (which normally freezes > > > Emacs for several minutes on quite fast hardware by simply visiting the > > > file), and which comes from this question: > > > https://emacs.stackexchange.com/questions/598/how-do-i-prevent-extremely-long-lines-making-emacs-slow > > > > > > I've also used cut-down versions of that file in testing. I'm attaching > > > a ~300K extract from that which is more than enough to make things > > > painful > > > at the end of the line (or slow-yet-manageable with so-long enabled). > > > > > > And here's an XML file of similar size and effect: > > > wget -O long-line.xml > > > https://updates.drupal.org/release-history/drupal/current > > > > Thanks, this is very useful. > > As I keep working on this, I find several surprising reasons for slow > redisplay, some of which are almost entirely unrelated to display code > per se. > > One surprising finding is that sometimes syntactic fontifications > (triggered via jit-lock.el as part of rendering the buffer) seem to > run amok: jit-lock asks the mode's fontification to fontify a > 1500-character block, but that results in parse-partial-sexp being > called to parse the entire humongous file, BOB to EOB. I attach below > a backtrace where I captured one such situation, when trying to > display the 19MB single-line JSON file mentioned above. As you see, > this happens on the very first entry to the display code, when Emacs > needs to figure out the face to use for the very first character of > the file. The data shows that jit-lock asked for fontification of > buffer positions 1..1501, but parse-partial-sexp was (eventually) > called for the entire buffer, positions 1..18922366. > > Adding Stefan to the CC list. > > Stefan, any idea why would js.el's syntactic fontifications cause this > exceptional situation? (I know how to avoid wedging Emacs even in > this pathological case, and already have code to do that, but I think > we should try to avoid such situations wherever we can regardless.) > > Here's the backtrace I promised. It can easily be obtained by setting > inside scan_sexps_forward a breakpoint conditioned on FROM being a > small value (I used "from < 1000") and END being a very large value (I > used "and > 18000000"). > > Thread 1 hit Breakpoint 2, scan_sexps_forward (state=0x827598, from=1, from_byte=1, end=18922366, targetdepth=-9223372036854775808, stopbefore=false, commentstop=-1) at syntax.c:3181 > 3181 struct level *curlevel = levelstart; > (gdb) bt > #0 scan_sexps_forward (state=0x827598, from=1, from_byte=1, end=18922366, > targetdepth=-9223372036854775808, stopbefore=false, commentstop=-1) > at syntax.c:3181 > #1 0x012e3903 in Fparse_partial_sexp (from=make_fixnum(1), > to=make_fixnum(18922366), targetdepth=XIL(0), stopbefore=XIL(0), > oldstate=XIL(0xc00000000821af80), commentstop=XIL(0xf3f0)) > at syntax.c:3604 > #2 0x0127209c in eval_sub (form=XIL(0xc000000007a2aae0)) at eval.c:2475 > #3 0x01269e91 in Fsetq (args=XIL(0xc000000007a2aad0)) at eval.c:498 > #4 0x012719dc in eval_sub (form=XIL(0xc000000007a2aac0)) at eval.c:2409 > #5 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #6 0x01269bbd in prog_ignore (body=XIL(0xc000000007a2ab90)) at eval.c:462 > #7 0x0126cb48 in Fwhile (args=XIL(0xc000000007a30cb0)) at eval.c:1058 > #8 0x012719dc in eval_sub (form=XIL(0xc000000007a30ca0)) at eval.c:2409 > #9 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #10 0x0126ca4d in Flet (args=XIL(0xc000000007a30e00)) at eval.c:1037 > #11 0x012719dc in eval_sub (form=XIL(0xc000000007a30e10)) at eval.c:2409 > #12 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #13 0x012719dc in eval_sub (form=XIL(0xc000000007a2a1d0)) at eval.c:2409 > #14 0x0126d5f1 in Funwind_protect (args=XIL(0xc000000007a30e40)) > at eval.c:1312 > #15 0x012719dc in eval_sub (form=XIL(0xc000000007a30e30)) at eval.c:2409 > #16 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #17 0x0126ca4d in Flet (args=XIL(0xc000000007a30f00)) at eval.c:1037 > #18 0x012719dc in eval_sub (form=XIL(0xc000000007a30f10)) at eval.c:2409 > #19 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3, > arg_vector=0x828570) at eval.c:3192 > #21 0x012748ac in apply_lambda (fun=XIL(0xc000000007a30fd0), > args=XIL(0xc000000007a1a420), count=1408) at eval.c:3062 > #22 0x01272876 in eval_sub (form=XIL(0xc000000007a1a410)) at eval.c:2546 > #23 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #24 0x0126987e in Fif (args=XIL(0xc0000000079dada0)) at eval.c:407 > #25 0x012719dc in eval_sub (form=XIL(0xc0000000079dadb0)) at eval.c:2409 > #26 0x01269b6d in Fprogn (body=XIL(0xc0000000079da950)) at eval.c:451 > #27 0x012719dc in eval_sub (form=XIL(0xc0000000079db060)) at eval.c:2409 > #28 0x0126d5f1 in Funwind_protect (args=XIL(0xc0000000079da980)) > at eval.c:1312 > #29 0x012719dc in eval_sub (form=XIL(0xc0000000079da970)) at eval.c:2409 > #30 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #31 0x0126ca4d in Flet (args=XIL(0xc0000000079daa40)) at eval.c:1037 > #32 0x012719dc in eval_sub (form=XIL(0xc0000000079daa50)) at eval.c:2409 > #33 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #34 0x012719dc in eval_sub (form=XIL(0xc0000000079daa60)) at eval.c:2409 > #35 0x0126d5f1 in Funwind_protect (args=XIL(0xc0000000079daa90)) > at eval.c:1312 > #36 0x012719dc in eval_sub (form=XIL(0xc0000000079daa80)) at eval.c:2409 > #37 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #38 0x0126c3b6 in FletX (args=XIL(0xc0000000079da470)) at eval.c:969 > #39 0x012719dc in eval_sub (form=XIL(0xc0000000079da480)) at eval.c:2409 > #40 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #41 0x0126ca4d in Flet (args=XIL(0xc0000000079da4a0)) at eval.c:1037 > #42 0x012719dc in eval_sub (form=XIL(0xc0000000079da4b0)) at eval.c:2409 > #43 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #44 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000079da550), nargs=3, > arg_vector=0x829988) at eval.c:3192 > #45 0x01273da9 in funcall_general (fun=XIL(0xc0000000079da560), numargs=3, > args=0x829988) at eval.c:2915 > #46 0x01273f6e in Ffuncall (nargs=4, args=0x829980) at eval.c:2953 > #47 0x01271c16 in eval_sub (form=XIL(0xc0000000067e6790)) at eval.c:2428 > #48 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #49 0x0125cbc0 in Fsave_restriction (body=XIL(0xc0000000067e66d0)) > at editfns.c:2826 > #50 0x012719dc in eval_sub (form=XIL(0xc0000000067e66c0)) at eval.c:2409 > #51 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 > #52 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000067e6070), nargs=2, > arg_vector=0x6870230) at eval.c:3192 > #53 0x01273da9 in funcall_general (fun=XIL(0xc0000000067e6080), numargs=2, > args=0x6870230) at eval.c:2915 > #54 0x012e6f83 in exec_byte_code (fun=XIL(0xa000000008202898), > args_template=257, nargs=1, args=0x68701d0) at bytecode.c:811 > #55 0x012746fd in fetch_and_exec_byte_code (fun=XIL(0xa000000008202898), > args_template=257, nargs=1, args=0x68701c8) at eval.c:3040 > #56 0x01274c5c in funcall_lambda (fun=XIL(0xa000000008202898), nargs=1, > arg_vector=0x68701c8) at eval.c:3112 > #57 0x01273c12 in funcall_general (fun=XIL(0xa000000008202898), numargs=1, > args=0x68701c8) at eval.c:2903 > #58 0x01273f6e in Ffuncall (nargs=2, args=0x68701c0) at eval.c:2953 > #59 0x0127305a in run_hook_wrapped_funcall (nargs=2, args=0x68701c0) > at eval.c:2731 > #60 0x01273511 in run_hook_with_args (nargs=2, args=0x68701c0, > funcall=0x1273012 <run_hook_wrapped_funcall>) at eval.c:2812 > #61 0x012730a9 in Frun_hook_wrapped (nargs=2, args=0x68701c0) at eval.c:2746 > #62 0x012745ae in funcall_subr (subr=0x1745e40 <Srun_hook_wrapped>, > numargs=2, args=0x68701c0) at eval.c:3018 > #63 0x012e6f4f in exec_byte_code (fun=XIL(0xa000000005db0e54), > args_template=514, nargs=2, args=0x68700f8) at bytecode.c:809 > #64 0x012746fd in fetch_and_exec_byte_code (fun=XIL(0xa000000005db0824), > args_template=257, nargs=1, args=0x82acb8) at eval.c:3040 > #65 0x01274c5c in funcall_lambda (fun=XIL(0xa000000005db0824), nargs=1, > arg_vector=0x82acb8) at eval.c:3112 > #66 0x01273c12 in funcall_general (fun=XIL(0xa000000005db0824), numargs=1, > args=0x82acb8) at eval.c:2903 > #67 0x01273f6e in Ffuncall (nargs=2, args=0x82acb0) at eval.c:2953 > #68 0x0126e681 in internal_condition_case_n (bfun=0x1273e4b <Ffuncall>, > nargs=2, args=0x82acb0, handlers=XIL(0x30), > hfun=0x1042523 <safe_eval_handler>) at eval.c:1565 > #69 0x01042756 in safe__call (inhibit_quit=false, nargs=2, > func=XIL(0x45233b4), ap=0x82ad74 "") at xdisp.c:3015 > #70 0x010427cf in safe_call (nargs=2, func=XIL(0x45233b4)) at xdisp.c:3030 > #71 0x01042823 in safe_call1 (fn=XIL(0x45233b4), arg=make_fixnum(1)) > at xdisp.c:3041 > #72 0x01046576 in handle_fontified_prop (it=0x82aff8) at xdisp.c:4361 > #73 0x01044e1d in handle_stop (it=0x82aff8) at xdisp.c:3877 > #74 0x01051a36 in reseat (it=0x82aff8, pos=..., force_p=true) at xdisp.c:7338 > #75 0x01044081 in init_iterator (it=0x82aff8, w=0x75cff98, charpos=1, > bytepos=1, row=0x6813110, base_face_id=DEFAULT_FACE_ID) at xdisp.c:3478 > #76 0x01044119 in start_display (it=0x82aff8, w=0x75cff98, pos=...) > at xdisp.c:3494 > #77 0x0107b6fb in try_window (window=XIL(0xa0000000075cff98), pos=..., > flags=1) at xdisp.c:20158 > #78 0x0107836d in redisplay_window (window=XIL(0xa0000000075cff98), > just_this_one_p=false) at xdisp.c:19571 > #79 0x0106f9b9 in redisplay_window_0 (window=XIL(0xa0000000075cff98)) > at xdisp.c:17157 > #80 0x0126e491 in internal_condition_case_1 ( > bfun=0x106f961 <redisplay_window_0>, arg=XIL(0xa0000000075cff98), > handlers=XIL(0xc0000000060fffec), hfun=0x106f91e <redisplay_window_error>) at eval.c:1509 > #81 0x0106f8e0 in redisplay_windows (window=XIL(0xa0000000075cff98)) > at xdisp.c:17137 > #82 0x0106e0e3 in redisplay_internal () at xdisp.c:16599 > #83 0x0106b8a5 in redisplay () at xdisp.c:15803 > #84 0x01171aa1 in read_char (commandflag=1, map=XIL(0xc0000000081e43c0), > prev_event=XIL(0), used_mouse_menu=0x82f45f, end_time=0x0) > at keyboard.c:2587 > #85 0x0118b944 in read_key_sequence (keybuf=0x82f730, prompt=XIL(0), > dont_downcase_last=false, can_return_switch_frame=true, > fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9970 > #86 0x0116d527 in command_loop_1 () at keyboard.c:1391 > #87 0x0126e3a7 in internal_condition_case (bfun=0x116cdfc <command_loop_1>, > handlers=XIL(0x90), hfun=0x116bdca <cmd_error>) at eval.c:1485 > #88 0x0116c869 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1132 > #89 0x0126d22e in internal_catch (tag=XIL(0xfdb0), > func=0x116c832 <command_loop_2>, arg=XIL(0x90)) at eval.c:1208 > #90 0x0116c7d4 in command_loop () at keyboard.c:1110 > #91 0x0116b82a in recursive_edit_1 () at keyboard.c:719 > #92 0x0116bac8 in Frecursive_edit () at keyboard.c:802 > #93 0x01166a32 in main (argc=2, argv=0xa42910) at emacs.c:2511 > > Lisp Backtrace: > "parse-partial-sexp" (0x8276a0) > "setq" (0x8278f0) > "while" (0x827b30) > "let" (0x827dd0) > "progn" (0x827f90) > "unwind-protect" (0x828150) > "let" (0x8283e0) > "font-lock-fontify-syntactically-region" (0x828570) > "if" (0x8288c0) > "progn" (0x828a80) > "unwind-protect" (0x828c40) > "let" (0x828ed0) > "progn" (0x829090) > "unwind-protect" (0x829250) > "let*" (0x8294a0) > "let" (0x829730) > "font-lock-default-fontify-region" (0x829988) > "funcall" (0x829980) > "save-restriction" (0x829c40) > "font-lock-fontify-region" (0x6870230) > 0x8202898 PVEC_COMPILED > "run-hook-wrapped" (0x68701c0) > "jit-lock--run-functions" (0x68700e8) > "jit-lock-fontify-now" (0x6870048) > "jit-lock-function" (0x82acb8) > "redisplay_internal (C function)" (0x0) > (gdb) fr 46 > #46 0x01273f6e in Ffuncall (nargs=4, args=0x829980) at eval.c:2953 > 2953 Lisp_Object val = funcall_general (args[0], nargs - 1, args + 1); > (gdb) p args[0] > $1 = XIL(0x471ed74) > (gdb) xtype > Lisp_Symbol > (gdb) xsym > xsymbol xsymname xsymwithpos > (gdb) xsymbol > $2 = (struct Lisp_Symbol *) 0x5fac1b4 > "font-lock-default-fontify-region" > (gdb) p args[1] > $3 = make_fixnum(1) > (gdb) p args[2] > $4 = make_fixnum(1501) > (gdb) fr 20 > #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3, > arg_vector=0x828570) at eval.c:3192 > 3192 val = Fprogn (XCDR (XCDR (fun))); > (gdb) p arg_vector[0] > $5 = make_fixnum(1) > (gdb) p arg_vector[1] > $6 = make_fixnum(18922366) > (gdb) fr 44 > #44 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000079da550), nargs=3, > arg_vector=0x829988) at eval.c:3192 > 3192 val = Fprogn (XCDR (XCDR (fun))); > (gdb) p arg_vector[0] > $7 = make_fixnum(1) > (gdb) p arg_vector[1] > $8 = make_fixnum(1501) > (gdb) fr 20 > #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3, > arg_vector=0x828570) at eval.c:3192 > 3192 val = Fprogn (XCDR (XCDR (fun))); > (gdb) p fun > $9 = XIL(0xc000000007a30fc0) > (gdb) xtype > Lisp_Cons > (gdb) pp fun > ((jit-lock-end jit-lock-start font-lock-end font-lock-beg lazy-lock-mode fast-lock-mode t) (start end &optional loudly) "Put proper face on each string and comment between START and END. > START should be at the beginning of a line." (syntax-propertize end) (let ((table (syntax-table)) (buffer (current-buffer))) (unwind-protect (progn (set-syntax-table (or syntax-ppss-table (syntax-table))) (if (and comment-start (not comment-end-skip)) (progn (comment-normalize-vars))) (let ((state (if (or syntax-ppss-table (not font-lock--syntax-table-affects-ppss)) (syntax-ppss start) (parse-partial-sexp (point-min) start))) face beg) (if loudly (message "Fontifying %s... (syntactically...)" (buffer-name))) (while (progn (if (or (nth 3 state) (nth 4 state)) (progn (setq face (funcall font-lock-syntactic-face-function state)) (setq beg (max (nth 8 state) start)) (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table)) (if face (progn (put-text-property beg (point) 'face face))) (if (and (eq face 'font-lock-comment-face) (or font-lock-comment-start-skip comment-start-skip)) (progn (save-excursion (goto-char beg) (if (looking-at (or font-lock-comment-start-skip comment-start-skip)) (put-text-property beg (match-end 0) 'face font-lock-comment-delimiter-face))) (if (looking-back (or font-lock-comment-end-skip comment-end-skip) (point-at-bol) t) (put-text-property (match-beginning 0) (point) 'face font-lock-comment-delimiter-face)))))) (< (point) end)) (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table))))) (save-current-buffer (set-buffer buffer) (set-syntax-table table))))) > (gdb) > > > > > >
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 18 Jun 2022 08:01:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 18 04:01:45 2022 Received: from localhost ([127.0.0.1]:47457 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o2TOm-0002UA-5L for submit <at> debbugs.gnu.org; Sat, 18 Jun 2022 04:01:45 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49604) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o2TOh-0002Tu-Pj for 45898 <at> debbugs.gnu.org; Sat, 18 Jun 2022 04:01:39 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:59762) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o2TOc-0001nO-2T; Sat, 18 Jun 2022 04:01:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=sOtb1t+50zUVxUfuWSRCg8Z+G3c+XLl/oEE2aNUKgdU=; b=Azry5RPibcMI MqRuqFVoT3VVFR0yaER6rY2LueQ87YDuAED0IjiHF7VaJdG7cNo40IFv1BA0G8+wTcA8oP2IwCVXg sayKU99ObPaEH5FoLJPrAMf1B1Z0aB+qMoqsCd/DhUUEriem/UihriJcBV8Ernigtp2tkWTTpGOgC 97hGwykAbJy9X0MqFK/kfJp1ylDhLV+e5FZUTLmd3kiRYbsl17XVnx+dd7aA6u0REvt/XAxJuGvFw nAB0Newk75VWhGIeEcQLaXaWdY+F2lvIP7iBlVZj8ZrD8nSHpYVkTe6YxMM4Q6h7O9gH7l2R7I9Bc pyo26B7p7wqnYBjiDlQO+A==; Received: from [87.69.77.57] (port=2164 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o2TOb-0005sk-HI; Sat, 18 Jun 2022 04:01:29 -0400 Date: Sat, 18 Jun 2022 11:01:24 +0300 Message-Id: <83iloyo0x7.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN>, Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <835yl3tnv3.fsf@HIDDEN> (message from Eli Zaretskii on Tue, 14 Jun 2022 15:45:36 +0300) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> <835yl3tnv3.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > Cc: larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Tue, 14 Jun 2022 15:45:36 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > Date: Tue, 14 Jun 2022 10:40:47 +1200 > > From: Phil Sainty <psainty@HIDDEN> > > Cc: Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN, > > 45898 <at> debbugs.gnu.org > > > > My standard example is this file: > > https://github.com/Wilfred/ReVo-utilities/blob/a4bdc40dd2656c496defc461fc19c403c8306d9f/revo-export/dictionary.json?raw=true > > > > and which is ~19MB in a single line of JSON (which normally freezes > > Emacs for several minutes on quite fast hardware by simply visiting the > > file), and which comes from this question: > > https://emacs.stackexchange.com/questions/598/how-do-i-prevent-extremely-long-lines-making-emacs-slow > > > > I've also used cut-down versions of that file in testing. I'm attaching > > a ~300K extract from that which is more than enough to make things > > painful > > at the end of the line (or slow-yet-manageable with so-long enabled). > > > > And here's an XML file of similar size and effect: > > wget -O long-line.xml > > https://updates.drupal.org/release-history/drupal/current > > Thanks, this is very useful. As I keep working on this, I find several surprising reasons for slow redisplay, some of which are almost entirely unrelated to display code per se. One surprising finding is that sometimes syntactic fontifications (triggered via jit-lock.el as part of rendering the buffer) seem to run amok: jit-lock asks the mode's fontification to fontify a 1500-character block, but that results in parse-partial-sexp being called to parse the entire humongous file, BOB to EOB. I attach below a backtrace where I captured one such situation, when trying to display the 19MB single-line JSON file mentioned above. As you see, this happens on the very first entry to the display code, when Emacs needs to figure out the face to use for the very first character of the file. The data shows that jit-lock asked for fontification of buffer positions 1..1501, but parse-partial-sexp was (eventually) called for the entire buffer, positions 1..18922366. Adding Stefan to the CC list. Stefan, any idea why would js.el's syntactic fontifications cause this exceptional situation? (I know how to avoid wedging Emacs even in this pathological case, and already have code to do that, but I think we should try to avoid such situations wherever we can regardless.) Here's the backtrace I promised. It can easily be obtained by setting inside scan_sexps_forward a breakpoint conditioned on FROM being a small value (I used "from < 1000") and END being a very large value (I used "and > 18000000"). Thread 1 hit Breakpoint 2, scan_sexps_forward (state=0x827598, from=1, from_byte=1, end=18922366, targetdepth=-9223372036854775808, stopbefore=false, commentstop=-1) at syntax.c:3181 3181 struct level *curlevel = levelstart; (gdb) bt #0 scan_sexps_forward (state=0x827598, from=1, from_byte=1, end=18922366, targetdepth=-9223372036854775808, stopbefore=false, commentstop=-1) at syntax.c:3181 #1 0x012e3903 in Fparse_partial_sexp (from=make_fixnum(1), to=make_fixnum(18922366), targetdepth=XIL(0), stopbefore=XIL(0), oldstate=XIL(0xc00000000821af80), commentstop=XIL(0xf3f0)) at syntax.c:3604 #2 0x0127209c in eval_sub (form=XIL(0xc000000007a2aae0)) at eval.c:2475 #3 0x01269e91 in Fsetq (args=XIL(0xc000000007a2aad0)) at eval.c:498 #4 0x012719dc in eval_sub (form=XIL(0xc000000007a2aac0)) at eval.c:2409 #5 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #6 0x01269bbd in prog_ignore (body=XIL(0xc000000007a2ab90)) at eval.c:462 #7 0x0126cb48 in Fwhile (args=XIL(0xc000000007a30cb0)) at eval.c:1058 #8 0x012719dc in eval_sub (form=XIL(0xc000000007a30ca0)) at eval.c:2409 #9 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #10 0x0126ca4d in Flet (args=XIL(0xc000000007a30e00)) at eval.c:1037 #11 0x012719dc in eval_sub (form=XIL(0xc000000007a30e10)) at eval.c:2409 #12 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #13 0x012719dc in eval_sub (form=XIL(0xc000000007a2a1d0)) at eval.c:2409 #14 0x0126d5f1 in Funwind_protect (args=XIL(0xc000000007a30e40)) at eval.c:1312 #15 0x012719dc in eval_sub (form=XIL(0xc000000007a30e30)) at eval.c:2409 #16 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #17 0x0126ca4d in Flet (args=XIL(0xc000000007a30f00)) at eval.c:1037 #18 0x012719dc in eval_sub (form=XIL(0xc000000007a30f10)) at eval.c:2409 #19 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3, arg_vector=0x828570) at eval.c:3192 #21 0x012748ac in apply_lambda (fun=XIL(0xc000000007a30fd0), args=XIL(0xc000000007a1a420), count=1408) at eval.c:3062 #22 0x01272876 in eval_sub (form=XIL(0xc000000007a1a410)) at eval.c:2546 #23 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #24 0x0126987e in Fif (args=XIL(0xc0000000079dada0)) at eval.c:407 #25 0x012719dc in eval_sub (form=XIL(0xc0000000079dadb0)) at eval.c:2409 #26 0x01269b6d in Fprogn (body=XIL(0xc0000000079da950)) at eval.c:451 #27 0x012719dc in eval_sub (form=XIL(0xc0000000079db060)) at eval.c:2409 #28 0x0126d5f1 in Funwind_protect (args=XIL(0xc0000000079da980)) at eval.c:1312 #29 0x012719dc in eval_sub (form=XIL(0xc0000000079da970)) at eval.c:2409 #30 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #31 0x0126ca4d in Flet (args=XIL(0xc0000000079daa40)) at eval.c:1037 #32 0x012719dc in eval_sub (form=XIL(0xc0000000079daa50)) at eval.c:2409 #33 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #34 0x012719dc in eval_sub (form=XIL(0xc0000000079daa60)) at eval.c:2409 #35 0x0126d5f1 in Funwind_protect (args=XIL(0xc0000000079daa90)) at eval.c:1312 #36 0x012719dc in eval_sub (form=XIL(0xc0000000079daa80)) at eval.c:2409 #37 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #38 0x0126c3b6 in FletX (args=XIL(0xc0000000079da470)) at eval.c:969 #39 0x012719dc in eval_sub (form=XIL(0xc0000000079da480)) at eval.c:2409 #40 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #41 0x0126ca4d in Flet (args=XIL(0xc0000000079da4a0)) at eval.c:1037 #42 0x012719dc in eval_sub (form=XIL(0xc0000000079da4b0)) at eval.c:2409 #43 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #44 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000079da550), nargs=3, arg_vector=0x829988) at eval.c:3192 #45 0x01273da9 in funcall_general (fun=XIL(0xc0000000079da560), numargs=3, args=0x829988) at eval.c:2915 #46 0x01273f6e in Ffuncall (nargs=4, args=0x829980) at eval.c:2953 #47 0x01271c16 in eval_sub (form=XIL(0xc0000000067e6790)) at eval.c:2428 #48 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #49 0x0125cbc0 in Fsave_restriction (body=XIL(0xc0000000067e66d0)) at editfns.c:2826 #50 0x012719dc in eval_sub (form=XIL(0xc0000000067e66c0)) at eval.c:2409 #51 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451 #52 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000067e6070), nargs=2, arg_vector=0x6870230) at eval.c:3192 #53 0x01273da9 in funcall_general (fun=XIL(0xc0000000067e6080), numargs=2, args=0x6870230) at eval.c:2915 #54 0x012e6f83 in exec_byte_code (fun=XIL(0xa000000008202898), args_template=257, nargs=1, args=0x68701d0) at bytecode.c:811 #55 0x012746fd in fetch_and_exec_byte_code (fun=XIL(0xa000000008202898), args_template=257, nargs=1, args=0x68701c8) at eval.c:3040 #56 0x01274c5c in funcall_lambda (fun=XIL(0xa000000008202898), nargs=1, arg_vector=0x68701c8) at eval.c:3112 #57 0x01273c12 in funcall_general (fun=XIL(0xa000000008202898), numargs=1, args=0x68701c8) at eval.c:2903 #58 0x01273f6e in Ffuncall (nargs=2, args=0x68701c0) at eval.c:2953 #59 0x0127305a in run_hook_wrapped_funcall (nargs=2, args=0x68701c0) at eval.c:2731 #60 0x01273511 in run_hook_with_args (nargs=2, args=0x68701c0, funcall=0x1273012 <run_hook_wrapped_funcall>) at eval.c:2812 #61 0x012730a9 in Frun_hook_wrapped (nargs=2, args=0x68701c0) at eval.c:2746 #62 0x012745ae in funcall_subr (subr=0x1745e40 <Srun_hook_wrapped>, numargs=2, args=0x68701c0) at eval.c:3018 #63 0x012e6f4f in exec_byte_code (fun=XIL(0xa000000005db0e54), args_template=514, nargs=2, args=0x68700f8) at bytecode.c:809 #64 0x012746fd in fetch_and_exec_byte_code (fun=XIL(0xa000000005db0824), args_template=257, nargs=1, args=0x82acb8) at eval.c:3040 #65 0x01274c5c in funcall_lambda (fun=XIL(0xa000000005db0824), nargs=1, arg_vector=0x82acb8) at eval.c:3112 #66 0x01273c12 in funcall_general (fun=XIL(0xa000000005db0824), numargs=1, args=0x82acb8) at eval.c:2903 #67 0x01273f6e in Ffuncall (nargs=2, args=0x82acb0) at eval.c:2953 #68 0x0126e681 in internal_condition_case_n (bfun=0x1273e4b <Ffuncall>, nargs=2, args=0x82acb0, handlers=XIL(0x30), hfun=0x1042523 <safe_eval_handler>) at eval.c:1565 #69 0x01042756 in safe__call (inhibit_quit=false, nargs=2, func=XIL(0x45233b4), ap=0x82ad74 "") at xdisp.c:3015 #70 0x010427cf in safe_call (nargs=2, func=XIL(0x45233b4)) at xdisp.c:3030 #71 0x01042823 in safe_call1 (fn=XIL(0x45233b4), arg=make_fixnum(1)) at xdisp.c:3041 #72 0x01046576 in handle_fontified_prop (it=0x82aff8) at xdisp.c:4361 #73 0x01044e1d in handle_stop (it=0x82aff8) at xdisp.c:3877 #74 0x01051a36 in reseat (it=0x82aff8, pos=..., force_p=true) at xdisp.c:7338 #75 0x01044081 in init_iterator (it=0x82aff8, w=0x75cff98, charpos=1, bytepos=1, row=0x6813110, base_face_id=DEFAULT_FACE_ID) at xdisp.c:3478 #76 0x01044119 in start_display (it=0x82aff8, w=0x75cff98, pos=...) at xdisp.c:3494 #77 0x0107b6fb in try_window (window=XIL(0xa0000000075cff98), pos=..., flags=1) at xdisp.c:20158 #78 0x0107836d in redisplay_window (window=XIL(0xa0000000075cff98), just_this_one_p=false) at xdisp.c:19571 #79 0x0106f9b9 in redisplay_window_0 (window=XIL(0xa0000000075cff98)) at xdisp.c:17157 #80 0x0126e491 in internal_condition_case_1 ( bfun=0x106f961 <redisplay_window_0>, arg=XIL(0xa0000000075cff98), handlers=XIL(0xc0000000060fffec), hfun=0x106f91e <redisplay_window_error>) at eval.c:1509 #81 0x0106f8e0 in redisplay_windows (window=XIL(0xa0000000075cff98)) at xdisp.c:17137 #82 0x0106e0e3 in redisplay_internal () at xdisp.c:16599 #83 0x0106b8a5 in redisplay () at xdisp.c:15803 #84 0x01171aa1 in read_char (commandflag=1, map=XIL(0xc0000000081e43c0), prev_event=XIL(0), used_mouse_menu=0x82f45f, end_time=0x0) at keyboard.c:2587 #85 0x0118b944 in read_key_sequence (keybuf=0x82f730, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9970 #86 0x0116d527 in command_loop_1 () at keyboard.c:1391 #87 0x0126e3a7 in internal_condition_case (bfun=0x116cdfc <command_loop_1>, handlers=XIL(0x90), hfun=0x116bdca <cmd_error>) at eval.c:1485 #88 0x0116c869 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1132 #89 0x0126d22e in internal_catch (tag=XIL(0xfdb0), func=0x116c832 <command_loop_2>, arg=XIL(0x90)) at eval.c:1208 #90 0x0116c7d4 in command_loop () at keyboard.c:1110 #91 0x0116b82a in recursive_edit_1 () at keyboard.c:719 #92 0x0116bac8 in Frecursive_edit () at keyboard.c:802 #93 0x01166a32 in main (argc=2, argv=0xa42910) at emacs.c:2511 Lisp Backtrace: "parse-partial-sexp" (0x8276a0) "setq" (0x8278f0) "while" (0x827b30) "let" (0x827dd0) "progn" (0x827f90) "unwind-protect" (0x828150) "let" (0x8283e0) "font-lock-fontify-syntactically-region" (0x828570) "if" (0x8288c0) "progn" (0x828a80) "unwind-protect" (0x828c40) "let" (0x828ed0) "progn" (0x829090) "unwind-protect" (0x829250) "let*" (0x8294a0) "let" (0x829730) "font-lock-default-fontify-region" (0x829988) "funcall" (0x829980) "save-restriction" (0x829c40) "font-lock-fontify-region" (0x6870230) 0x8202898 PVEC_COMPILED "run-hook-wrapped" (0x68701c0) "jit-lock--run-functions" (0x68700e8) "jit-lock-fontify-now" (0x6870048) "jit-lock-function" (0x82acb8) "redisplay_internal (C function)" (0x0) (gdb) fr 46 #46 0x01273f6e in Ffuncall (nargs=4, args=0x829980) at eval.c:2953 2953 Lisp_Object val = funcall_general (args[0], nargs - 1, args + 1); (gdb) p args[0] $1 = XIL(0x471ed74) (gdb) xtype Lisp_Symbol (gdb) xsym xsymbol xsymname xsymwithpos (gdb) xsymbol $2 = (struct Lisp_Symbol *) 0x5fac1b4 "font-lock-default-fontify-region" (gdb) p args[1] $3 = make_fixnum(1) (gdb) p args[2] $4 = make_fixnum(1501) (gdb) fr 20 #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3, arg_vector=0x828570) at eval.c:3192 3192 val = Fprogn (XCDR (XCDR (fun))); (gdb) p arg_vector[0] $5 = make_fixnum(1) (gdb) p arg_vector[1] $6 = make_fixnum(18922366) (gdb) fr 44 #44 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000079da550), nargs=3, arg_vector=0x829988) at eval.c:3192 3192 val = Fprogn (XCDR (XCDR (fun))); (gdb) p arg_vector[0] $7 = make_fixnum(1) (gdb) p arg_vector[1] $8 = make_fixnum(1501) (gdb) fr 20 #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3, arg_vector=0x828570) at eval.c:3192 3192 val = Fprogn (XCDR (XCDR (fun))); (gdb) p fun $9 = XIL(0xc000000007a30fc0) (gdb) xtype Lisp_Cons (gdb) pp fun ((jit-lock-end jit-lock-start font-lock-end font-lock-beg lazy-lock-mode fast-lock-mode t) (start end &optional loudly) "Put proper face on each string and comment between START and END. START should be at the beginning of a line." (syntax-propertize end) (let ((table (syntax-table)) (buffer (current-buffer))) (unwind-protect (progn (set-syntax-table (or syntax-ppss-table (syntax-table))) (if (and comment-start (not comment-end-skip)) (progn (comment-normalize-vars))) (let ((state (if (or syntax-ppss-table (not font-lock--syntax-table-affects-ppss)) (syntax-ppss start) (parse-partial-sexp (point-min) start))) face beg) (if loudly (message "Fontifying %s... (syntactically...)" (buffer-name))) (while (progn (if (or (nth 3 state) (nth 4 state)) (progn (setq face (funcall font-lock-syntactic-face-function state)) (setq beg (max (nth 8 state) start)) (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table)) (if face (progn (put-text-property beg (point) 'face face))) (if (and (eq face 'font-lock-comment-face) (or font-lock-comment-start-skip comment-start-skip)) (progn (save-excursion (goto-char beg) (if (looking-at (or font-lock-comment-start-skip comment-start-skip)) (put-text-property beg (match-end 0) 'face font-lock-comment-delimiter-face))) (if (looking-back (or font-lock-comment-end-skip comment-end-skip) (point-at-bol) t) (put-text-property (match-beginning 0) (point) 'face font-lock-comment-delimiter-face)))))) (< (point) end)) (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table))))) (save-current-buffer (set-buffer buffer) (set-syntax-table table))))) (gdb)
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 14 Jun 2022 13:01:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 14 09:01:23 2022 Received: from localhost ([127.0.0.1]:33445 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o16Ad-0005zr-2p for submit <at> debbugs.gnu.org; Tue, 14 Jun 2022 09:01:23 -0400 Received: from eggs.gnu.org ([209.51.188.92]:43778) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o16AU-0005zX-3W for 45898 <at> debbugs.gnu.org; Tue, 14 Jun 2022 09:01:21 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35348) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o16AO-00082r-GR; Tue, 14 Jun 2022 09:01:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=zB57ooFFTXQ6E5Sx1j/CcogWDHq06HHKzgdXC7vDAZs=; b=Ng5ygvbDlHM+n0yLqW46 nqJjajT5ouz4RA1DkqPUwZB4CzOl4jW741hLo2AZDVckPL+e951u+CycCNoh+Fw6VypVzp86w2obb KCR/b+yvgydI4kPWE0DwiPDO0Lbtv0CMjZwMD4Bzcte1xTZ3Jy9x5PlWbPuW87uscNrLErSofGYFs BOyYke6QM3TRaFQWwzxZ5rT65VcCEkswZAyl+5l7ofusQlV7At6TSBYCVXauN8AKGlUrSCbfl+5G9 TvTr0w/R2aPGgDZ8lV8YoXbyWNb6vrdDEJxKgsU3AgaTbpFy4wqx7YPt2MmcN0pXNLKAKA4yMiYpa vzHCykdPEX9vJg==; Received: from [87.69.77.57] (port=1281 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o16AN-0002eb-Vt; Tue, 14 Jun 2022 09:01:08 -0400 Date: Tue, 14 Jun 2022 16:00:56 +0300 Message-Id: <8335g7tn5j.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87v8t3o3nu.fsf@HIDDEN> (message from Lars Ingebrigtsen on Tue, 14 Jun 2022 14:00:53 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <87v8t3o3nu.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: psainty@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: Phil Sainty <psainty@HIDDEN>, Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > Date: Tue, 14 Jun 2022 14:00:53 +0200 > > > Yes. That idea came up while discussing this with Gerd Möllmann, btw. > > It's much simpler than measuring time (which would require > > high-resolution timing, which is much less portable and more tricky to > > get right, what with modern systems constantly adjusting their time). > > I don't think we need high resolution time here? We just need to > (coarsely) have an opinion about whether we've been spending a lot of > time... The problem is that redisplay and related code is spread all over the place, and what makes things low is not necessarily a series of consecutive calls, let alone predictable ones. So inserting calls to timing functions is problematic, and adding times instead of adding "ticks" would need high-res timing, otherwise you'd risk adding a lot of zeros. > > That's why update_redisplay_ticks accepts its first argument, instead > > of always adding 1: I thought about some potentially expensive > > operations that could be either more or less expensive than just > > processing a single character. E.g., font-lock calls regexp matching, > > so we should try to come up with some measure of its "expensiveness" > > based on...something. This will need some tuning, but all we need is > > some coarse correlation. > > Yes. I do wonder, though, whether there's going to be possible to come > up with useful tuning here -- predicting whether a regexp is "heavy" is > non trivial, to say the least. The idea is not to predict it, but to know it after the expensive operation returned. Not that doing that is trivial... Basically, any operation that is very expensive loops somewhere, so counting the loop iterations can give some idea of the "cost".
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 14 Jun 2022 12:46:11 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 14 08:46:11 2022 Received: from localhost ([127.0.0.1]:33417 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o15vp-0004Uz-U3 for submit <at> debbugs.gnu.org; Tue, 14 Jun 2022 08:46:11 -0400 Received: from eggs.gnu.org ([209.51.188.92]:40230) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o15vl-0004Lg-Kp for 45898 <at> debbugs.gnu.org; Tue, 14 Jun 2022 08:46:04 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:34936) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o15vf-0004xB-LQ; Tue, 14 Jun 2022 08:45:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=nIM+3n/bOKci1GxXhUtemg9GNDcTD6il3GayFP9lLGI=; b=mdn2Xab/Owd3 bJZnJhRLaPEge6XLoxRzAVnY70F88sy6pgsIXIylpTMa3UwzSkj4s8OeHf/IKjhI7oPpkK45kpscA s1M6qDuXKAVoqbvpSlbiD6yLcPF1E3MxKJcNULjCv8esaNV2Tpo67dh4Q8A0+UQoSn0dzm9B9QgD4 4WNfa8FRU0nIHNkezhNlFrOyitsLaEslna6Cdy+cfTuKcIqKt2QWWfn7HT0vNPbgqDChPbJMX3H2C t5vGh95Di+y81aovJPaqbJKMvJWmg1wQc2N6+OBuSADgSzS1sjgxYzxGaNEuJJZd11Ovqjmv8SzjB TZn8aGTczU/9ONYUoeyH9w==; Received: from [87.69.77.57] (port=4312 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o15vX-0004NM-UT; Tue, 14 Jun 2022 08:45:53 -0400 Date: Tue, 14 Jun 2022 15:45:36 +0300 Message-Id: <835yl3tnv3.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Phil Sainty <psainty@HIDDEN> In-Reply-To: <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> (message from Phil Sainty on Tue, 14 Jun 2022 10:40:47 +1200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <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 (---) > Date: Tue, 14 Jun 2022 10:40:47 +1200 > From: Phil Sainty <psainty@HIDDEN> > Cc: Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN, > 45898 <at> debbugs.gnu.org > > My standard example is this file: > https://github.com/Wilfred/ReVo-utilities/blob/a4bdc40dd2656c496defc461fc19c403c8306d9f/revo-export/dictionary.json?raw=true > > and which is ~19MB in a single line of JSON (which normally freezes > Emacs for several minutes on quite fast hardware by simply visiting the > file), and which comes from this question: > https://emacs.stackexchange.com/questions/598/how-do-i-prevent-extremely-long-lines-making-emacs-slow > > I've also used cut-down versions of that file in testing. I'm attaching > a ~300K extract from that which is more than enough to make things > painful > at the end of the line (or slow-yet-manageable with so-long enabled). > > And here's an XML file of similar size and effect: > wget -O long-line.xml > https://updates.drupal.org/release-history/drupal/current Thanks, this is very useful.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 14 Jun 2022 12:01:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 14 08:01:25 2022 Received: from localhost ([127.0.0.1]:33260 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o15Eb-0008Vf-Au for submit <at> debbugs.gnu.org; Tue, 14 Jun 2022 08:01:25 -0400 Received: from quimby.gnus.org ([95.216.78.240]:48732) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1o15EL-0008VD-Az for 45898 <at> debbugs.gnu.org; Tue, 14 Jun 2022 08:01:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID :In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=OEYa17F8Gj5kVS7COD8DJTfDHKE0tUGpJRIJMmaUh8s=; b=tcz4p1QoqDPrJ9LI1Lv94FgWn6 vnavNiKrlrieRK8gXdgTa3lzC7lE0gN7o20LbOOPs9nu/Ir38WIRcux/if8rpau5UK1hztcdo4ayt ASlxp0Mxt2iWNWIORMKcP8AwV/0Qh2MvCxcI40QWRK9whFjF6KSFfo5j4PYSQIL+A4Oo=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1o15E6-0005vp-Ti; Tue, 14 Jun 2022 14:01:01 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEXY2NqfXjEtLR7/ ///7eVvkAAAAAWJLR0QDEQxM8gAAAAd0SU1FB+YGDgs4NrcmFi8AAAFySURBVCjPTZKxTsQwDIZd pFbi9ruBnYWnKAPMBeFIzUxPqp+iDOwHUiqV6ZAu1dlPye+cTqJL8+W3f8dxqApmyfCpGRWI9pNj gSX1otFFwGq5gBjdhFUzj1JgY0uaTaUYbBD78R8mQhiYmitYhNsMaNwNQDuVaaPsdQEmh13uEJ6o bUy+np+6SmlLh7JF9NhRRaeNSuoOL7nFztkh/AbFmgZRSyGHswN/I4dHPlb6SIzmFkDbaCrgCorz BYKGNgAsmLiBOniLifVVXzITLkM++ak9drdMS1T5eCfUr5mG4M05NBc3AFVvg4MWZZvSValaxucg E+IhBFpX3AHViQfuSVdXaqw5ES4ScIsMnOACWA9wUxxnqrnvB47Uu7XDHtanPYrWYellTTTtXIlL NB1puoNBLYBZ6eBwL/3efoymB+TouE8SlY4PPsIBU5JM5mMGIz8AXMEYZ42EOxPLIwsehncq5YmI XTrFs9IwX2G1BT/+A3Q+/qA6ZSUkAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA2LTE0VDExOjU2 OjU0KzAwOjAwbPjtJAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wNi0xNFQxMTo1Njo1NCswMDow MB2lVZgAAAAASUVORK5CYII= X-Now-Playing: Liquid Liquid's _Optimo and The Loving Hand_: "Rubbermiro (Remix By The Loving Hand)" Date: Tue, 14 Jun 2022 14:00:53 +0200 In-Reply-To: <83zgigu3e0.fsf@HIDDEN> (Eli Zaretskii's message of "Mon, 13 Jun 2022 15:57:59 +0300") Message-ID: <87v8t3o3nu.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > Yes. That idea came up while discussing this with Gerd Möllmann, btw. > It's much simpler than measuring time (which would require > high-resolution timing, which is much less portable and more tri [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: Phil Sainty <psainty@HIDDEN>, Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > Yes. That idea came up while discussing this with Gerd M=C3=B6llmann, bt= w. > It's much simpler than measuring time (which would require > high-resolution timing, which is much less portable and more tricky to > get right, what with modern systems constantly adjusting their time). I don't think we need high resolution time here? We just need to (coarsely) have an opinion about whether we've been spending a lot of time... > That's why update_redisplay_ticks accepts its first argument, instead > of always adding 1: I thought about some potentially expensive > operations that could be either more or less expensive than just > processing a single character. E.g., font-lock calls regexp matching, > so we should try to come up with some measure of its "expensiveness" > based on...something. This will need some tuning, but all we need is > some coarse correlation. Yes. I do wonder, though, whether there's going to be possible to come up with useful tuning here -- predicting whether a regexp is "heavy" is non trivial, to say the least. --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 13 Jun 2022 22:41:08 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 13 18:41:08 2022 Received: from localhost ([127.0.0.1]:60692 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o0sk7-0000Cb-Up for submit <at> debbugs.gnu.org; Mon, 13 Jun 2022 18:41:07 -0400 Received: from smtp-2.orcon.net.nz ([60.234.4.43]:39667) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <psainty@HIDDEN>) id 1o0sk3-0000CP-0h for 45898 <at> debbugs.gnu.org; Mon, 13 Jun 2022 18:41:06 -0400 Received: from [10.253.37.70] (port=43924 helo=webmail.orcon.net.nz) by smtp-2.orcon.net.nz with esmtpa (Exim 4.90_1) (envelope-from <psainty@HIDDEN>) id 1o0sjn-0006ir-CV; Tue, 14 Jun 2022 10:40:50 +1200 Received: from ip-116-251-140-135.kinect.net.nz ([116.251.140.135]) via [10.253.37.253] by webmail.orcon.net.nz with HTTP (HTTP/1.1 POST); Tue, 14 Jun 2022 10:40:47 +1200 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_72e5ef6ea6b223d9bd045fb26a399488" Date: Tue, 14 Jun 2022 10:40:47 +1200 From: Phil Sainty <psainty@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again In-Reply-To: <83zgigu3e0.fsf@HIDDEN> References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN> Message-ID: <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> X-Sender: psainty@HIDDEN User-Agent: Orcon Webmail X-GeoIP: -- X-Spam_score: -2.9 X-Spam_score_int: -28 X-Spam_bar: -- X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN, 45898 <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> --=_72e5ef6ea6b223d9bd045fb26a399488 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2022-06-14 00:57, Eli Zaretskii wrote: > "Freeze" is not actually a requirement; it's enough if Emacs's > responses become very slow. For now, I used the file described here: > > > https://lists.gnu.org/archive/html/help-gnu-emacs/2022-05/msg00070.html > > But it is only one kind of such files. Perhaps Phil could point me to > additional examples; added to CC. My standard example is this file: https://github.com/Wilfred/ReVo-utilities/blob/a4bdc40dd2656c496defc461fc19c403c8306d9f/revo-export/dictionary.json?raw=true and which is ~19MB in a single line of JSON (which normally freezes Emacs for several minutes on quite fast hardware by simply visiting the file), and which comes from this question: https://emacs.stackexchange.com/questions/598/how-do-i-prevent-extremely-long-lines-making-emacs-slow I've also used cut-down versions of that file in testing. I'm attaching a ~300K extract from that which is more than enough to make things painful at the end of the line (or slow-yet-manageable with so-long enabled). And here's an XML file of similar size and effect: wget -O long-line.xml https://updates.drupal.org/release-history/drupal/current -Phil --=_72e5ef6ea6b223d9bd045fb26a399488 Content-Transfer-Encoding: base64 Content-Type: application/x-xz; name=medium_line.json.xz Content-Disposition: attachment; filename=medium_line.json.xz; size=73452 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 --=_72e5ef6ea6b223d9bd045fb26a399488--
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 13 Jun 2022 12:58:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 13 08:58:22 2022 Received: from localhost ([127.0.0.1]:57573 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o0je9-0001MN-Pn for submit <at> debbugs.gnu.org; Mon, 13 Jun 2022 08:58:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:40830) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o0je7-0001M4-EB for 45898 <at> debbugs.gnu.org; Mon, 13 Jun 2022 08:58:20 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:38242) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o0je1-0008Gf-Q2; Mon, 13 Jun 2022 08:58:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=6icF7tsacamO05keJJ/eCR018GGhpMP6pc5l3EZTctg=; b=bOiD5w/S9RKguKHNPv+f NKEoEE5XoZOPfc9X5lOcY+VcrtpYSz510WBXUPiAdEGygtlCLUPokTSq4xrTp+xb9O4XaeLe2JCfm 3OrvMxYkcHhXtUgBI8bAR6d88wvxBM6SVrtDm9sllB6TxkDW+WNiTi/qXJxdlkGNJTlYQLleFpZPh +EaSsrmlDKm0lvfpy1Q3Bw/0CDh+5n2URuUDiHalC3YLxVp2SLGk+F6xDPbZAZyNVbRKB6pIHrmLx mWZXqqBuunc7sCpuqJ0h4hsq1ujUraFayrDrIpbeBs5Z1AodDC6WoiNFIJdvEwbQTkpze2bbuJoTs wmyRRt48bzolFA==; Received: from [87.69.77.57] (port=4684 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o0je1-0000Hu-A5; Mon, 13 Jun 2022 08:58:13 -0400 Date: Mon, 13 Jun 2022 15:57:59 +0300 Message-Id: <83zgigu3e0.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN>, Phil Sainty <psainty@HIDDEN> In-Reply-To: <877d5kojbo.fsf@HIDDEN> (message from Lars Ingebrigtsen on Mon, 13 Jun 2022 14:10:19 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Mon, 13 Jun 2022 14:10:19 +0200 > > Eli Zaretskii <eliz@HIDDEN> writes: > > > Here's the first cut. It still needs polishing and some testing, but > > let me know what you think: > > [...] > > > +/* Update the redisplay-tick count for a window, and signal an error > > + if the tick count is above some threshold, indicating that > > + redisplay of the window takes "too long". > > Ah, instead of measuring the time elapsed, we use the number of iterator > "executions" as a proxy. That sounds promising. Yes. That idea came up while discussing this with Gerd Möllmann, btw. It's much simpler than measuring time (which would require high-resolution timing, which is much less portable and more tricky to get right, what with modern systems constantly adjusting their time). > One problem that occurs to me is if you're, say, only displaying a shell > buffer, and it's outputting data -- then I don't think we'll be changing > windows, but just accruing ticks? But I think that should be easy > enough to fix, since we'll be returning to command_loop and we could > just have that nixing out the tick count, too. Probably. Yes, zeroing out the count when redisplay is done is probably a good idea. It's on my todo, probably in mark_window_display_accurate_1 or thereabouts. The only consideration here is that a successful redisplay of a window could be followed by something like vertical-motion across the same window, which could take "too long", and we perhaps want the counters to be accumulated. Hmm... (Actually, output in a shell buffer is not a problem, because comint calls 'recenter' very frequently, at least by default, and 'recenter' resets the ticks count. But maybe there are other situations where this isn't guaranteed to happen. So yeah, maybe command_loop is a better place.) > A different problem is when we don't have many ticks, but each tick > takes a long time to execute. The classic problem here is when we have > a font-locking regexp that's very complicated (with lots of > backtracking). Then we don't update anything on the screen much -- we > spend (virtually) all the time in the regexp matcher. I don't see an > easy fix to that using this scheme... That's why update_redisplay_ticks accepts its first argument, instead of always adding 1: I thought about some potentially expensive operations that could be either more or less expensive than just processing a single character. E.g., font-lock calls regexp matching, so we should try to come up with some measure of its "expensiveness" based on...something. This will need some tuning, but all we need is some coarse correlation. > > For testing purposes, is it possible to have examples of files that > > could benefit from this feature, i.e. files where Emacs becomes not > > responsive enough? I'm not sure the few examples I have cover all the > > popular reasons for the slowness, as I think there are more than one > > or two. > > I don't have anything handy... anybody else have a setup that will > freeze Emacs redisplay that we can test with? "Freeze" is not actually a requirement; it's enough if Emacs's responses become very slow. For now, I used the file described here: https://lists.gnu.org/archive/html/help-gnu-emacs/2022-05/msg00070.html But it is only one kind of such files. Perhaps Phil could point me to additional examples; added to CC.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 13 Jun 2022 12:10:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 13 08:10:45 2022 Received: from localhost ([127.0.0.1]:57424 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o0iu4-00042i-Rp for submit <at> debbugs.gnu.org; Mon, 13 Jun 2022 08:10:45 -0400 Received: from quimby.gnus.org ([95.216.78.240]:36478) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1o0itr-00042B-2U for 45898 <at> debbugs.gnu.org; Mon, 13 Jun 2022 08:10:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=V2VfBHKA/7/bDSggS9RBi7Gt3E1CUR67zMjl/o7+Jdg=; b=ATLjyJFRMfBIan19aqmo6CVnWN IN0QYDeGGp78PkkQc/Y6lH+32cLltlcj4eW2cSKvKja19d1cFWmtf2Kw6j8Q7If+eqyz1nohu1alz Ph2Y5rrU8N/lNsSSFRZKh40Q8Kzlx825X/UMjNkYaHctJ2mR/31nS+MKo+OzbXunBAac=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1o0itg-00085Y-JR; Mon, 13 Jun 2022 14:10:23 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX89Obm3dLExsbI raetnpqrP06gX2aKZWf///+53gUxAAAAAWJLR0QIht6VegAAAAd0SU1FB+YGDQwDJG/XMTQAAAGz SURBVDjLjZK9c5wwEMVXwCStVsdQI8HhFgS5tAfodH2MqB2+0nuc+/sDHl8yXuyZbKPh/dint5IA /rOY/Ej1YvDKD3TfaPAqTmWO3/qqYYrqwYuw863fOwVGVsvJzTun0Jjr/OjmMwXZL1tfutnlFERL L4+dnXZWx5t7zm79uLM6XdyPq22nhraIrB9Nok2NBBxSd32udNaxHZj7rtJHR6xYWfWdzV7mnjS0 xrp+nt38kzS0VerW6i80U/k9dd1KOgISIYzrzG9D5mOFhtOk1MMQE7De26lWIh1pWBND0OSY7k6K xdtTQEUa/FdnxoGeYHR+FRBoR1TW26JUSkOFZ5DgNdIQANHT+gLDRklJvfJDwbRSwiQ0b1L6k1bG 0O2hKoVZSxd09AR5jKjWIQlQCjnjyGJGiGrQ44gecO+9WapQIAoJKN+3CCGLQgoUguRiiRLIcN3m rtw5owNs3/5dPBAgOC80KwE15HVdlOEbOFg+pFU6gB1hwMdxWd5AZGD6qkwNdoDO66Z/YAQT8Cnf wOLbxYb8L7h9ydtms1qCbDndQdhCE5x5CUkBkgHNTUt98sMfu55QrmcV2VoAAAAldEVYdGRhdGU6 Y3JlYXRlADIwMjItMDYtMTNUMTI6MDM6MzYrMDA6MDDqRQY3AAAAJXRFWHRkYXRlOm1vZGlmeQAy MDIyLTA2LTEzVDEyOjAzOjM2KzAwOjAwmxi+iwAAAABJRU5ErkJggg== X-Now-Playing: Wrangler's _Ni d'eve, ni d'adam_: "Harder" Date: Mon, 13 Jun 2022 14:10:19 +0200 In-Reply-To: <83mteiufih.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 12 Jun 2022 17:23:50 +0300") Message-ID: <877d5kojbo.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > Here's the first cut. It still needs polishing and some testing, but > let me know what you think: [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > Here's the first cut. It still needs polishing and some testing, but > let me know what you think: [...] > +/* Update the redisplay-tick count for a window, and signal an error > + if the tick count is above some threshold, indicating that > + redisplay of the window takes "too long". Ah, instead of measuring the time elapsed, we use the number of iterator "executions" as a proxy. That sounds promising. One problem that occurs to me is if you're, say, only displaying a shell buffer, and it's outputting data -- then I don't think we'll be changing windows, but just accruing ticks? But I think that should be easy enough to fix, since we'll be returning to command_loop and we could just have that nixing out the tick count, too. Probably. A different problem is when we don't have many ticks, but each tick takes a long time to execute. The classic problem here is when we have a font-locking regexp that's very complicated (with lots of backtracking). Then we don't update anything on the screen much -- we spend (virtually) all the time in the regexp matcher. I don't see an easy fix to that using this scheme... > For testing purposes, is it possible to have examples of files that > could benefit from this feature, i.e. files where Emacs becomes not > responsive enough? I'm not sure the few examples I have cover all the > popular reasons for the slowness, as I think there are more than one > or two. I don't have anything handy... anybody else have a setup that will freeze Emacs redisplay that we can test with? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 12 Jun 2022 18:02:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jun 12 14:02:59 2022 Received: from localhost ([127.0.0.1]:56453 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o0RvP-00013Z-Da for submit <at> debbugs.gnu.org; Sun, 12 Jun 2022 14:02:59 -0400 Received: from eggs.gnu.org ([209.51.188.92]:59298) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o0RvN-00013L-0g for 45898 <at> debbugs.gnu.org; Sun, 12 Jun 2022 14:02:58 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:50326) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o0RvH-0004FV-5M; Sun, 12 Jun 2022 14:02:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=sEXCgtZYL/5NyOTbBH6/UzqdB4jeIw+NB76cOrJOvUE=; b=I4WZO4as3SUa kMpkd3RUNTQApvaQjqjQadFqJ3Y1Ozp0r9ooFHPhSOutPZJOJxw7Sidu6jmJAFepeoDJv9B/4km3g nbCiYfMwLI59R6VWxtpu954d/ywfPynsW5knr0dQIuzPdi92HD8ZDJZ48kwGtIlAUGpiKjz6LB9ks zVcw1yNypELBNXooaoMT7kIhfK5hri9sSjTJrHIHxZT+tcESp2W1vSI6Ze5UMtbGuwZtWh/XY+Zb+ 8czpqmVSe758Eh/oZb/1bwI/sEWVMxITemThMO4Ht1BEuCfkU0G/eO4KhD4Azh2sMOh5+IdmDCgxz wG8ue4AXYq1S528EqmEK3A==; Received: from [87.69.77.57] (port=2969 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o0RvG-0001uT-KP; Sun, 12 Jun 2022 14:02:50 -0400 Date: Sun, 12 Jun 2022 21:02:34 +0300 Message-Id: <83fsk9vjyd.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: larsi@HIDDEN, Emacs-hacker2018@HIDDEN In-Reply-To: <83mteiufih.fsf@HIDDEN> (message from Eli Zaretskii on Sun, 12 Jun 2022 17:23:50 +0300) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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 (---) > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Sun, 12 Jun 2022 17:23:50 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > Here's the first cut. It still needs polishing and some testing, but > let me know what you think: For testing purposes, is it possible to have examples of files that could benefit from this feature, i.e. files where Emacs becomes not responsive enough? I'm not sure the few examples I have cover all the popular reasons for the slowness, as I think there are more than one or two. TIA
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 12 Jun 2022 14:24:16 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jun 12 10:24:16 2022 Received: from localhost ([127.0.0.1]:56338 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o0OVj-0001qG-S0 for submit <at> debbugs.gnu.org; Sun, 12 Jun 2022 10:24:16 -0400 Received: from eggs.gnu.org ([209.51.188.92]:36706) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o0OVg-0001q1-7X for 45898 <at> debbugs.gnu.org; Sun, 12 Jun 2022 10:24:14 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:47412) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o0OVa-0001jA-EY; Sun, 12 Jun 2022 10:24:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Ix1wmgLtCkLGlp68ObV4p4X4W2hgTQgJPVxyyzkAqig=; b=iGwEGehvWSNt r3fQE/OqUnZ5HjFQzTUqsTxAGouFC3BKcTxZg619g6Vt+ftrC/PlPyzZOBjAsgn0eSESdX0JuPT61 UHKs9I8SaB4/J4e3z3EoLlUttPwQj1yUF/FOhs3OD1LsMjCaQXr/ODLuYpkPaKN7wnb8hxVYRZr2r fHfvGiR8fV1m0nSMleNRy618VC/j/uMhKieHiPRsakdPnCYhopCwkzkjUXb/rB5VYJ4B44qOVOoCn kunXRP4tYVMcptO7RbJJevTpnI8fr4BxPRvVPI+cQ2Q0iyYRXF8faV/ztQ9g8vTLPyOlftX8qvXfY Nc/DWy9KAwvb3W0AP+5HVA==; Received: from [87.69.77.57] (port=1473 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o0OVZ-00061F-Sn; Sun, 12 Jun 2022 10:24:06 -0400 Date: Sun, 12 Jun 2022 17:23:50 +0300 Message-Id: <83mteiufih.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87zgiinptk.fsf@HIDDEN> (message from Lars Ingebrigtsen on Sun, 12 Jun 2022 12:23:03 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Sun, 12 Jun 2022 12:23:03 +0200 > > >> Finding a safe way to interrupt redisplay is the problem, though. > > > > I have an idea and will work on it soon. > > Great! Here's the first cut. It still needs polishing and some testing, but let me know what you think: diff --git a/src/dispextern.h b/src/dispextern.h index c7399ca..a919f36 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -3505,6 +3505,8 @@ #define TRY_WINDOW_IGNORE_FONTS_CHANGE (1 << 1) extern bool buffer_flipping_blocked_p (void); +extern void update_redisplay_ticks (int, struct it *); + /* Defined in image.c */ #ifdef HAVE_WINDOW_SYSTEM diff --git a/src/xdisp.c b/src/xdisp.c index 2245326..6d4cb9f 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -3222,6 +3222,8 @@ init_iterator (struct it *it, struct window *w, it->cmp_it.id = -1; + update_redisplay_ticks (0, it); + /* Extra space between lines (on window systems only). */ if (base_face_id == DEFAULT_FACE_ID && FRAME_WINDOW_P (it->f)) @@ -8175,6 +8177,8 @@ get_next_display_element (struct it *it) set_iterator_to_next (struct it *it, bool reseat_p) { + update_redisplay_ticks (1, it); + switch (it->method) { case GET_FROM_BUFFER: @@ -16724,9 +16728,14 @@ #define AINC(a,i) \ list_of_error, redisplay_window_error); if (update_miniwindow_p) - internal_condition_case_1 (redisplay_window_1, - FRAME_MINIBUF_WINDOW (sf), list_of_error, - redisplay_window_error); + { + Lisp_Object mini_window = FRAME_MINIBUF_WINDOW (sf); + + displayed_buffer = XBUFFER (XWINDOW (mini_window)->contents); + internal_condition_case_1 (redisplay_window_1, mini_window, + list_of_error, + redisplay_window_error); + } /* Compare desired and current matrices, perform output. */ @@ -17156,6 +17165,43 @@ redisplay_window_1 (Lisp_Object window) redisplay_window (window, true); return Qnil; } + + +/*********************************************************************** + Aborting runaway redisplay + ***********************************************************************/ + +/* Update the redisplay-tick count for a window, and signal an error + if the tick count is above some threshold, indicating that + redisplay of the window takes "too long". + + TICKS is the amount of ticks to add to the window's current count; + zero means to initialize the count to zero. + + IT is the iterator used for redisplay work; it->w is the window we + are working on. */ +void +update_redisplay_ticks (int ticks, struct it *it) +{ + /* This keeps track of the window on which redisplay is working. */ + static struct window *cwindow; + static EMACS_INT window_ticks; + + /* We only initialize the count if this is a different window. + Otherwise, this is a call from init_iterator for the same window + we tracked before, and we should keep the count. */ + if (!ticks && it->w != cwindow) + { + cwindow = it->w; + window_ticks = 0; + } + if (ticks > 0) + window_ticks += ticks; + if (max_redisplay_ticks > 0 && window_ticks > max_redisplay_ticks) + error ("Window showing buffer %s takes too long to redisplay", + SSDATA (BVAR (XBUFFER (it->w->contents), name))); +} + /* Set cursor position of W. PT is assumed to be displayed in ROW. @@ -35777,7 +35823,7 @@ syms_of_xdisp (void) DEFSYM (Qinhibit_free_realized_faces, "inhibit-free-realized-faces"); - list_of_error = list1 (list2 (Qerror, Qvoid_variable)); + list_of_error = list1 (Qerror); staticpro (&list_of_error); /* Values of those variables at last redisplay are stored as @@ -36667,6 +36713,22 @@ syms_of_xdisp (void) This makes it easier to edit character sequences that are composed on display. */); composition_break_at_point = false; + + DEFVAR_INT ("max-redisplay-ticks", max_redisplay_ticks, + doc: /* Maximum number of redisplay ticks before aborting redisplay of a window. + +This allows to abort the display of a window if the amount of low-level +redisplay operations exceeds the value of this variable. When display of +a window is aborted due to this reason, the buffer shown in that window +will not have its windows redisplayed until the buffer is modified or until +you type \\[recenter-top-bottom] with one of its windows selected. +You can also decide to kill the buffer and visit it in some +other way, like udner `so-long-mode' or literally. + +The default value is zero, which disables this feature. +The recommended non-zero value is between 50000 and 200000, +depending on your patience and the speed of your system. */); + max_redisplay_ticks = 0; }
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 12 Jun 2022 10:23:17 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jun 12 06:23:17 2022 Received: from localhost ([127.0.0.1]:54824 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o0KkW-00019Y-K5 for submit <at> debbugs.gnu.org; Sun, 12 Jun 2022 06:23:16 -0400 Received: from quimby.gnus.org ([95.216.78.240]:53264) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1o0KkV-00019F-1S for 45898 <at> debbugs.gnu.org; Sun, 12 Jun 2022 06:23:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=3+dw2uUPUiIGi84+ufJRra97p6i8xqajD7ksko/8+XQ=; b=uPFRZwlvzds9iz5PxA+7rBMjK/ r7VPO7lUSuQ8d19cb8VmPkDc0WIX/Q7yu/6AXjmIAdiGRi9+qP7NhmHWbe2oX1IHzpQ2ii64/PSAx K4kmrbd0LFUXW0n97dEWjonLVNNfeNEETcPNZdVhY6692czUgSzCHUc5J3OgzkfqX7P0=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1o0KkL-0003ad-C6; Sun, 12 Jun 2022 12:23:07 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAElBMVEUDAgPEq6hjNz+f X2IwHSH///93Pa1EAAAAAWJLR0QF+G/pxwAAAAd0SU1FB+YGCQoAHgkZUKAAAAHASURBVDjLtZRR musgCIWZ1A0Q7gIadANKF5Ax2f+a5kBsk3bm9fK1afQXxAOWvjhrbsz0aQ7M/gDffNgvsAygYWV3 63ij3GImN4M1G0OA8btUePl3/gTukN3pCRauM9YJi12mA0gznlm4adcLeL1ps34OTrCrT/f4BEDm v86WcBT6j7a+vawnOHdFVpkfZ0a+DA8yk1RZXj6pF4JmjZgfAAaAkxWiiYWgsgDcJwPYmmJhoZvk PSoKcGOAZKFuNqnyBBsqdKcA9qx0gCyVywB2BZvHIKti1VrEseoA4aVRghuym93Fenbwj7bm2TCQ +GIR1QCQX4/+ErUsWIHmoNZLLzoTdrBcUL/gmiHMDqC7A2+SsgXQkCeKjF3NZ1YE1aFq2qGdIie0 kOaCjrrKrT5Gby8y+YpLhbLn2wDgAnVfNgWYtYpubwB1RAhRz8m1WvuzeFtolP0iLGzUWMuBJjS9 6wWQvYKuwDqADKAuuxc4SELkBRn7VVjkuJ1zQWejJ9gL5WCzY8yC/khLbHLcXzuOZt4+3jUvoOM6 EJXYQ24h7QDRp7z6f4Tc6/wGqPssCiJJ3wFCNNeOyyeQtX87eAzwAwHMafABuKD0AAAAJXRFWHRk YXRlOmNyZWF0ZQAyMDIyLTA2LTA5VDEwOjAwOjMwKzAwOjAwcetMKgAAACV0RVh0ZGF0ZTptb2Rp ZnkAMjAyMi0wNi0wOVQxMDowMDozMCswMDowMAC29JYAAAAASUVORK5CYII= X-Now-Playing: Everything But The Girl's _Walking Wounded_: "Before Today" Date: Sun, 12 Jun 2022 12:23:03 +0200 In-Reply-To: <83v8t6us8t.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 12 Jun 2022 12:48:50 +0300") Message-ID: <87zgiinptk.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > I prefer a solution whereby Emacs discovers the problem automatically, > leaving C-g for "other circumstances". After all, how hard can it be > to figure out that some buffer or window takes too lon [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > I prefer a solution whereby Emacs discovers the problem automatically, > leaving C-g for "other circumstances". After all, how hard can it be > to figure out that some buffer or window takes too long to redisplay? Yes, if that's feasible, it would definitely be preferable. >> Finding a safe way to interrupt redisplay is the problem, though. > > I have an idea and will work on it soon. Great! -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 12 Jun 2022 09:49:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jun 12 05:49:15 2022 Received: from localhost ([127.0.0.1]:54761 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1o0KDb-0000GV-G1 for submit <at> debbugs.gnu.org; Sun, 12 Jun 2022 05:49:15 -0400 Received: from eggs.gnu.org ([209.51.188.92]:38590) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1o0KDY-0000GF-SH for 45898 <at> debbugs.gnu.org; Sun, 12 Jun 2022 05:49:13 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:44060) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o0KDT-00040I-2z; Sun, 12 Jun 2022 05:49:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=bkA51qYoeJ1wt0Al8OQm0qakqNzX2i8OuM18k6rQG2w=; b=bBr6h4h8Cx/r o9jrW7WkSgCNTjKacBpC8p7pnWrBX6diwgdsREtfPykpwL2Kf2bHeSsaZ8vpSbgxogbHPLGkmJLgt jxNfNZuzC4jPdmKp2i573qsNmVNO24TZChB5BxUZpy0xupbNzw5OX1xQwgUnsJjLOCXCBhDyq1FKR FsMTrsPoRbN1DaWp835k++NIozxwOB7EYwJ7vnQSmhTM8jm1C2VNXfG91cxiVDQcT+YZjib7xD18i +JxTW3VKf+izNuH4d3A60s4TbefgjjpopHgy8Ssn0V77Wvc8K4HtmPNxNRTFy860O8ytJoFXe4BZw xk8Hw96JJ0tkJNqmEF1++g==; Received: from [87.69.77.57] (port=4479 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1o0KDS-000340-1E; Sun, 12 Jun 2022 05:49:06 -0400 Date: Sun, 12 Jun 2022 12:48:50 +0300 Message-Id: <83v8t6us8t.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87tu8sx569.fsf@HIDDEN> (message from Lars Ingebrigtsen on Fri, 10 Jun 2022 11:02:06 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Date: Fri, 10 Jun 2022 11:02:06 +0200 > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > > Eli Zaretskii <eliz@HIDDEN> writes: > > > I don't think it's a very good idea to switch buffers behind user's > > back. It is better to tell the user there's a problem and let them do > > whatever is right for them. > > > > But yes, we could also consider something like that -- if we find a > > safe way of doing it. > > The scenario here is that the user is hitting `C-g' repeatedly while in > redisplay, so it's not exactly behind the user's back... I prefer a solution whereby Emacs discovers the problem automatically, leaving C-g for "other circumstances". After all, how hard can it be to figure out that some buffer or window takes too long to redisplay? > Finding a safe way to interrupt redisplay is the problem, though. I have an idea and will work on it soon.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 10 Jun 2022 09:02:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jun 10 05:02:19 2022 Received: from localhost ([127.0.0.1]:48696 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzaX5-00061w-1S for submit <at> debbugs.gnu.org; Fri, 10 Jun 2022 05:02:19 -0400 Received: from quimby.gnus.org ([95.216.78.240]:60174) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1nzaX3-0005v1-48 for 45898 <at> debbugs.gnu.org; Fri, 10 Jun 2022 05:02:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=SFanA4rV3BBci3KhKK+c+aUzKLCrFaIjKMg44/iBwbU=; b=EosGSbIU6pz6aQSSSXeOHJkKho ADl/3FsuxlTdJmaRWaC8DNfkXe6T64gW+DhnzPnR+VqkS2e6Tfu5+Vl/co6/Y1CmiUe53fjeOfw9M O/c5F7LQ3DpNplF+7UQqsUvTzEuehgVhJ6AvP06hU+iWcjWEcvHy3ezDNe/EypXhCXJs=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1nzaWt-0005RO-NK; Fri, 10 Jun 2022 11:02:10 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> X-Now-Playing: Liturgy's _Origin of the Alimonies_: "OIOION's Birth" Date: Fri, 10 Jun 2022 11:02:06 +0200 In-Reply-To: <83h74t3k5u.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 09 Jun 2022 18:56:29 +0300") Message-ID: <87tu8sx569.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > I don't think it's a very good idea to switch buffers behind user's > back. It is better to tell the user there's a problem and let them do > whatever is right for them. > > But yes, we could also c [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > I don't think it's a very good idea to switch buffers behind user's > back. It is better to tell the user there's a problem and let them do > whatever is right for them. > > But yes, we could also consider something like that -- if we find a > safe way of doing it. The scenario here is that the user is hitting `C-g' repeatedly while in redisplay, so it's not exactly behind the user's back... Finding a safe way to interrupt redisplay is the problem, though. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 15:56:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 11:56:43 2022 Received: from localhost ([127.0.0.1]:47470 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzKWZ-0001oX-CA for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 11:56:43 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49972) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1nzKWX-0001oK-J4 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 11:56:42 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:59668) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzKWP-0006Ms-Vq; Thu, 09 Jun 2022 11:56:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=yR+s9NkuxUW6W/dvZqbvz+knwQJOkXfY/661RpcrM1Y=; b=h89YhlIF5JMP Zi9AiIo058Nd4DIrCBEOU4ofNO3oka+JaqyCVyd5yFfDgPEaoj1raNQH3ZAuFFQMY1fuasybgNnwx el4a2mP61jjh8FSsJP04VWzZ8giwvLr+K19KOLwRayTmhHvXG0U+UP32V+BpSLs5D5dJykTAmfXQ+ 9/LoMBm2mKEbH7uDvhtZzBY496MWFzG+L9a1na+XQ9AW6tB1moFGz+8dM4plhFV8dA/UHghCHyyfT rOvUaJ566nPLNt0+ZrQF03ywJffdEweGkxNDuqwgbxmWOr2QupsggnW8sk6mK/7lLuEWJDx7uD6/R l8l+j8pxeudsGiPl2SFc9w==; Received: from [87.69.77.57] (port=4717 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzKWN-0001hL-U5; Thu, 09 Jun 2022 11:56:32 -0400 Date: Thu, 09 Jun 2022 18:56:29 +0300 Message-Id: <83h74t3k5u.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87y1y63qmq.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 09 Jun 2022 15:36:45 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Thu, 09 Jun 2022 15:36:45 +0200 > > > and end it in a way that Emacs won't immediately re-enter redisplay > > and try to redraw that same window. > > But if we switch to a different buffer in that window, then redrawing > that window should be fine. I don't think it's a very good idea to switch buffers behind user's back. It is better to tell the user there's a problem and let them do whatever is right for them. But yes, we could also consider something like that -- if we find a safe way of doing it.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 13:36:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 09:36:58 2022 Received: from localhost ([127.0.0.1]:45511 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzILK-0001B6-A3 for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:36:58 -0400 Received: from quimby.gnus.org ([95.216.78.240]:49724) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1nzILI-0001As-Uq for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:36:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=VeLIA0h36zkrGQrMTZkm0liLey63AnVehxJ+eJMWeoA=; b=Ne6/99jXkVia4VjRdhQ+UGIcKF u0BZlIJXMqBQrTo9u3QggZ755yBgB+XGlOSFpiX5JFrBLi4ERV7oAoo7OPbsXhfyMYX4iAOMg5GOp toxbOtNi/+ytcJGgGD9KZfbDLlMMY1mb16zOb0BMFLdhnTLI6P8eCwC24uUEFFdRXblk=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1nzIL9-0000IC-PU; Thu, 09 Jun 2022 15:36:50 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEW2qKv9/f3Pz9GR bXoKBQsoHC9EOFhXU4n///9t9cd0AAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQ0jORf1hC8AAAF/ SURBVDjLfdTBcsIgEAbgVGf02qQvkHro2RqN104L9toZWXLtDLK5OqbC63chUQHT7jFffiALJMvy 0SqyxX+wcJX1Na2q1wsULK73CABA3ANIbK1FwhTQg+4lAB/oAe4BtRuLJAEDAnxEJKCBwX2CZtDL NZcpNDSFyp54kshZa6w9FY/gJxEhdEe7zIsNdwsTbzdolpNJWZSaI2IIoumyWtWrtdQS0EM+gNHT s3zeSM04hICtKq0qBPo+honTqrJmRU1OoetKa5Z9IARVVXOrp4iuLxFsEU0zMwgYr0pZiWeJ9ix1 DNRbRAIK6ATofZqBAiCjD3Sgwbc9AYNyAEiAWi76HRQfEXDQ/B7ayg5HJIZDc5zb7ShUNY4nXvAK GML3jA6vP+9SdCGoGqVFwXhViyjhNggtwcMC9usA3Ce3hi7OV6nlIQFl3Y3aCz4MVfYgWH+bdrSA EPqnQ8VwvZpMxEBjX+TzBn70wx9wq90Vfhgb9gLc1qsrFCN/GQ9j9Qu61v+elm2MfwAAACV0RVh0 ZGF0ZTpjcmVhdGUAMjAyMi0wNi0wOVQxMzozNTo1NyswMDowMLAiuqgAAAAldEVYdGRhdGU6bW9k aWZ5ADIwMjItMDYtMDlUMTM6MzU6NTcrMDA6MDDBfwIUAAAAAElFTkSuQmCC X-Now-Playing: Prince's _Sign 'O' the Times (7): Live in Utrecht II_: "Let's Go Crazy (Live In Utrecht)" Date: Thu, 09 Jun 2022 15:36:45 +0200 In-Reply-To: <83mtem2dc9.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 09 Jun 2022 16:09:10 +0300") Message-ID: <87y1y63qmq.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > That might be something to do after ending _this_ redisplay cycle, but > we first need to end _this_ cycle, Yes. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > That might be something to do after ending _this_ redisplay cycle, but > we first need to end _this_ cycle, Yes. > and end it in a way that Emacs won't immediately re-enter redisplay > and try to redraw that same window. But if we switch to a different buffer in that window, then redrawing that window should be fine. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 13:09:20 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 09:09:20 2022 Received: from localhost ([127.0.0.1]:45407 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzHua-0004XO-Cq for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:09:20 -0400 Received: from eggs.gnu.org ([209.51.188.92]:55038) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1nzHuZ-0004X8-Gv for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:09:19 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:55036) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzHuU-0006w0-8S; Thu, 09 Jun 2022 09:09:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=2kWOhcAG1MWbk4GGiSEzN2R3fhviVWAUqpWslwT7uPI=; b=cg0tw1lfDLK6 vGR31YWryct9SWYOLT4gbfhvC1F8CE1C+ceoVb3M0w9HGrWmVN9wCnFRUhYEh9ulD6gE/JZ6RsjW6 zzF38Lk0AtJwzq/ceQ94+kKjhfmTB9rhvrzXcuBmrssl+6jYG+YfNTPzh83Z166QN5MnHuC66S4sT KHKy7Yf/j6dligDXP4HhNzz+QUVhpgG5IQQg76dv60nE7d9VOLQhLktZ5jiKyUKwxgS9Mj2gszt2f 9zTKgbNxJkMYp6P9+RWVQG07V4jeHcVq6ynYOhAc8Os0JDjYktbVo5XU0x0+uZNhjx6oYV+rQ8605 74nqZVjZlRXBPORqElfkPQ==; Received: from [87.69.77.57] (port=2422 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzHuT-00018R-LT; Thu, 09 Jun 2022 09:09:14 -0400 Date: Thu, 09 Jun 2022 16:09:10 +0300 Message-Id: <83mtem2dc9.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87zgim6qtt.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 09 Jun 2022 13:04:14 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Thu, 09 Jun 2022 13:04:14 +0200 > > Eli Zaretskii <eliz@HIDDEN> writes: > > > Then there's a problem of determining which window is the problematic > > one. > > Idea: Perhaps our "redisplay is wedged" function should basically be > "switch to a *warning* buffer". I.e., if we can determine that Window > Foo is the problem, then switch the buffer in that window to a buffer > that reads "Redisplay was hanging in buffer *foo*". If we can't > determine the window that's handing, then just switch all windows (in > all frames) to that warning buffer. That might be something to do after ending _this_ redisplay cycle, but we first need to end _this_ cycle, and end it in a way that Emacs won't immediately re-enter redisplay and try to redraw that same window.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 13:07:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 09:07:10 2022 Received: from localhost ([127.0.0.1]:45393 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzHsU-0004Sx-Fh for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:07:10 -0400 Received: from eggs.gnu.org ([209.51.188.92]:54664) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1nzHsS-0004Sl-Nu for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:07:09 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54998) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzHsN-0006h0-9v; Thu, 09 Jun 2022 09:07:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=CGIHsjeEne5mXLAl3bl9iEHtEFP2ppPb4+QTrpBkcHI=; b=r66Z5iCykitb UWI+F+Iew68wAjWERbQOqqog2Be9x9lHZocNpbpFfUZknewLk5djFoXo4JGuBZXlms9UNNaSgV7IW X39lGHbVH+y7C3+cXM+l3qzCaEubynA4ZIKxOUkC7q6fo+nT+qrpQPMZdU/vQk2kWU34pMrum0Dmf dJtx2Z7hdxIOaHn6TvSma0PrWJBc3CAcEqO0UyE3Bu1rkmbkU9Rmu97rmmRiFeZuIXLvK4JevN1VM OjHISsW64cPnma/ORHNvYYzF2ZdPcvH7OWt8B8+yVKRUpYGZhXInDYXo1HUMKsLABRinorwOTFmOW iY29gQOTaLYfjKyqtzYg6w==; Received: from [87.69.77.57] (port=2284 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzHsH-0002O7-9F; Thu, 09 Jun 2022 09:07:03 -0400 Date: Thu, 09 Jun 2022 16:06:54 +0300 Message-Id: <83pmji2dg1.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <874k0u864t.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 09 Jun 2022 12:48:18 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <87pmji8774.fsf@HIDDEN> <83tu8u2k6g.fsf@HIDDEN> <874k0u864t.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Thu, 09 Jun 2022 12:48:18 +0200 > > Eli Zaretskii <eliz@HIDDEN> writes: > > > I also think that activating a mode is not TRT in these cases. I'm > > trying to think about something better, like mark the offending window > > as "not for display" or somesuch. > > Yes, that sounds promising. But it has to be displayed ... a little > bit, at least. :-) Why?
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 11:04:27 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 07:04:27 2022 Received: from localhost ([127.0.0.1]:45245 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzFxi-00033j-RZ for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 07:04:27 -0400 Received: from quimby.gnus.org ([95.216.78.240]:47976) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1nzFxh-00033Q-6q for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 07:04:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=UbYLdHnsNpoWWuf+ERjKYsMUiNDcuYI8OSlklbwGA6g=; b=oUXpQMlU/7OV//y66lp05sGXuU EGNBu/2CO/mn9nHCKK1SGEzrAY0l+UMx+/jyfmotW75szlNS3yNCpqp/uk5he6Ps0XEdA/rJhBUWc 2QutYmmv6mGAWokMpY94JIagkvEW8d7cVGqC37RR8U5yKYhRMqQQjUFWCXBNo/t8oX0U=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1nzFxX-0006mG-CK; Thu, 09 Jun 2022 13:04:17 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX22Cb20Q7Xszs0 LjguWqbi0qSjSzv69t7///9X/eT6AAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQoZLrTAyRQAAAGz SURBVDjLddLBjpswEAZguhLtFbNK7piFB+gQvwBEvQOO72Hj3Lsi8/qdsQ2YZGspQfKnGfyPSZIf QoiM/rI3aDpeLfAvEcvKKvDS0mMHIwCsMEUwNK0rea54a5vONfsOSDRtfnatSo7WHpWFQqQMHaAZ CDqCSR0nYPBn0vchVHgQC3Rq4BwM1EpZIX4G6AhaUInIayllLouPAOcJWmAQpZ2gBLWBAg9C5CLP 5doKFDRxjnSD/RC1XoDTb7PKtB7/B/gtUCuc/dQpIOwrnDhQMQx/EHH0N6sgrugIcH6FURsWniFE cNDjmfdxolNZGYNuHIDSuj/uwHWa4YRz/x6D28eHg/IVBlBGy2mDPHSyAJWMIdO+E8FVSniBC12n 2kHioSawNgI3Q1cBBPUGaYC/DsoVEhPyIe3Z6wr05jU4WFlMAfhEM5kLDlVfQIAUHdTGTYRH6CEz M4nBx9WDLBdAv2Z70wPc+hUOASgdxbv1tX2GC4OurQyn+oWbcLyrLHfAJ7iAsrZYhhgBXZOtCk7I YNZW9In8NthLWT+9gypOyOA/n3SDL7jTDGT1Ag+4azS66uEfmeES2gHEP+0AAAAldEVYdGRhdGU6 Y3JlYXRlADIwMjItMDYtMDlUMTA6MjU6NDYrMDA6MDCmuwKMAAAAJXRFWHRkYXRlOm1vZGlmeQAy MDIyLTA2LTA5VDEwOjI1OjQ2KzAwOjAw1+a6MAAAAABJRU5ErkJggg== X-Now-Playing: The Cure's _Wild Mood Swings_: "Gone !" Date: Thu, 09 Jun 2022 13:04:14 +0200 In-Reply-To: <83sfoe2k0j.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 09 Jun 2022 13:45:00 +0300") Message-ID: <87zgim6qtt.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > Then there's a problem of determining which window is the problematic > one. Idea: Perhaps our "redisplay is wedged" function should basically be "switch to a *warning* buffer". I.e., if we can determine that Window Foo is the problem, then switch the buffer in that window to [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > Then there's a problem of determining which window is the problematic > one. Idea: Perhaps our "redisplay is wedged" function should basically be "switch to a *warning* buffer". I.e., if we can determine that Window Foo is the problem, then switch the buffer in that window to a buffer that reads "Redisplay was hanging in buffer *foo*". If we can't determine the window that's handing, then just switch all windows (in all frames) to that warning buffer. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:48:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 06:48:31 2022 Received: from localhost ([127.0.0.1]:45132 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzFiI-0002Um-Os for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:48:30 -0400 Received: from quimby.gnus.org ([95.216.78.240]:47872) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1nzFiH-0002UU-Cf for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:48:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=kk16++dja6YucBfZWl3sXRO0acOBuNk0U6JMBpF8vj4=; b=FpsBjGG7B+ezoHFo+zlI0HLmne j9F5AdTjhMUWtWqPGc2Lu1HlcC4fCOmeMV6Mj86P6ivJKGSyMoqvvb1dO0EAOtI9zWSSu5/K29ung NlptDDzljSI4hySumWJ4ZiQid2BO5l5S+KTsdtrmzglNw0UOyAAamkN2p3W0difE2X/c=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1nzFi7-0006b7-UZ; Thu, 09 Jun 2022 12:48:22 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <87pmji8774.fsf@HIDDEN> <83tu8u2k6g.fsf@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX22Cb20Q7Xszs0 LjguWqbi0qSjSzv69t7///9X/eT6AAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQoZLrTAyRQAAAGz SURBVDjLddLBjpswEAZguhLtFbNK7piFB+gQvwBEvQOO72Hj3Lsi8/qdsQ2YZGspQfKnGfyPSZIf QoiM/rI3aDpeLfAvEcvKKvDS0mMHIwCsMEUwNK0rea54a5vONfsOSDRtfnatSo7WHpWFQqQMHaAZ CDqCSR0nYPBn0vchVHgQC3Rq4BwM1EpZIX4G6AhaUInIayllLouPAOcJWmAQpZ2gBLWBAg9C5CLP 5doKFDRxjnSD/RC1XoDTb7PKtB7/B/gtUCuc/dQpIOwrnDhQMQx/EHH0N6sgrugIcH6FURsWniFE cNDjmfdxolNZGYNuHIDSuj/uwHWa4YRz/x6D28eHg/IVBlBGy2mDPHSyAJWMIdO+E8FVSniBC12n 2kHioSawNgI3Q1cBBPUGaYC/DsoVEhPyIe3Z6wr05jU4WFlMAfhEM5kLDlVfQIAUHdTGTYRH6CEz M4nBx9WDLBdAv2Z70wPc+hUOASgdxbv1tX2GC4OurQyn+oWbcLyrLHfAJ7iAsrZYhhgBXZOtCk7I YNZW9In8NthLWT+9gypOyOA/n3SDL7jTDGT1Ag+4azS66uEfmeES2gHEP+0AAAAldEVYdGRhdGU6 Y3JlYXRlADIwMjItMDYtMDlUMTA6MjU6NDYrMDA6MDCmuwKMAAAAJXRFWHRkYXRlOm1vZGlmeQAy MDIyLTA2LTA5VDEwOjI1OjQ2KzAwOjAw1+a6MAAAAABJRU5ErkJggg== X-Now-Playing: The Cure's _Wild Mood Swings_: "Mint Car" Date: Thu, 09 Jun 2022 12:48:18 +0200 In-Reply-To: <83tu8u2k6g.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 09 Jun 2022 13:41:27 +0300") Message-ID: <874k0u864t.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > I also think that activating a mode is not TRT in these cases. I'm > trying to think about something better, like mark the offending window > as "not for display" or somesuch. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > I also think that activating a mode is not TRT in these cases. I'm > trying to think about something better, like mark the offending window > as "not for display" or somesuch. Yes, that sounds promising. But it has to be displayed ... a little bit, at least. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:45:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 06:45:13 2022 Received: from localhost ([127.0.0.1]:45124 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzFf7-0002Lt-1f for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:45:13 -0400 Received: from eggs.gnu.org ([209.51.188.92]:50112) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1nzFf4-0002Ld-Qn for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:45:11 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:51804) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzFez-0004hr-Er; Thu, 09 Jun 2022 06:45:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Rwxbg106W0DpYOeAMO2VYgBYH04nNO/y/gd/uCLo1U8=; b=SUYtoFiyFcmx ZdSp4/GmnbmdPLk9fumdN+5a5Egr+mCoOBHfa4TXvS/fZuMgGzyCoN9y2pjenaJCctqYAASpjnfUH 4RGgnPp58yfJ2HlxySr779Rge5uRqB7tS9c6y6d+u84UZDrBSDBUTX/5Uzcu3QqmoHXT/Oxzw1Z7g X0oxSMf7R1pQfmcSXLT1RNK9qGJXefrhcv//O8bu8zfrvMv+6TVtuEE63QFXf10i757/fRoVAXoVM hozuCXAq3th0ISGo+TeHHNwiRvs+B9Wq73NQZQ1V5FpVjg9w1afuEUfsMcERAZNW5I8Wp+UyKq6h4 Duh9BIEFYOFYnEuInWTOvA==; Received: from [87.69.77.57] (port=1226 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzFey-0002j5-Qx; Thu, 09 Jun 2022 06:45:05 -0400 Date: Thu, 09 Jun 2022 13:45:00 +0300 Message-Id: <83sfoe2k0j.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87leu686z4.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 09 Jun 2022 12:30:07 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Thu, 09 Jun 2022 12:30:07 +0200 > > > As for the C-g idea, I think a better and cleaner idea would be to use > > atimers to detect signs of potentially a very long redisplay cycle, > > and then do...something. Not unlike what we already do with the > > hourglass-cursor feature. > > Ah, yes, that's true -- we already almost have something here via the > hourglass thing. Hm... So we could call something from an atimer... > but do we have a way to (safely) signal to redisplay that it should stop > what it's doing? Atimers just set a flag, and the function is invoked the first time that flag is tested, which is currently at some random time after that, depending on what the code does. So this will need to be somehow improved to make sure we don't delay the check for too long (or maybe it is already "good enough", I don't know). Then there's a problem of determining which window is the problematic one.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:41:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 06:41:39 2022 Received: from localhost ([127.0.0.1]:45115 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzFbf-0002Ee-6t for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:41:39 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49658) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1nzFbd-0002EN-9g for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:41:37 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:51788) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzFbX-0004NI-Kv; Thu, 09 Jun 2022 06:41:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=GCU4ewOJWYHjuCpYIEfuXMxEcxKQmR7EF1BjUnsEPGU=; b=WJaVFgoOTbzE RlwBSQfqE0GJ6kUXT71b1ieRDQR5W/m3vyxw0z/fR8wtLLo1lH6vUdsVnG/1ciVjmFD86rg149OHw NP7HAd+LItLZiiV3m3Ew7uAvnY2dLmH2/3sDg/ox2bYNfw3c4AZj56R2GuAG6gV1AT9cEi05iDVvI hxfQrjX2H6dSC6mLkVykqFRZjb+aRkNHVEuHidb331RRszXGePcbXLtU83iMA31BBj3brOG/hsE0b x5QjXUuti0KwXsC7MElt4JeoKpTLz4Ze9mrjJMgd9UEjWDt5Tqf1dGaeZwJJ8CrIsqWeSBEU5nxH/ SGR8hEJMCr7MBkns6kTpeA==; Received: from [87.69.77.57] (port=4984 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nzFbX-0006x2-3C; Thu, 09 Jun 2022 06:41:31 -0400 Date: Thu, 09 Jun 2022 13:41:27 +0300 Message-Id: <83tu8u2k6g.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87pmji8774.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 09 Jun 2022 12:25:19 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <87pmji8774.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Thu, 09 Jun 2022 12:25:19 +0200 > > Eli Zaretskii <eliz@HIDDEN> writes: > > > One problem with this is that we already have the "emergency exit" > > feature, which is triggered by 2 or more C-g's. This only works > > reliably on TTY frames, but it's still a feature we don't want to > > lose. > > I think that could be made to fit into the general feature, really. The > "emergency exit" feature currently queries "Abort (and dump core)?" if I > remember correctly? We could extend that to "Abort, enter > so-long-mode (or whatever)...?" etc. That's called from a signal handler, where we cannot do anything non-trivial, definitely not call Lisp. We need some machinery that is currently missing. I also think that activating a mode is not TRT in these cases. I'm trying to think about something better, like mark the offending window as "not for display" or somesuch.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:40:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 06:40:28 2022 Received: from localhost ([127.0.0.1]:45110 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzFaV-0002C8-TQ for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:40:28 -0400 Received: from sonic302-21.consmr.mail.ne1.yahoo.com ([66.163.186.147]:35163) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <luangruo@HIDDEN>) id 1nzFaU-0002Br-AV for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:40:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1654771220; bh=pQOl1gDDKrWGhhRt+auX7mechrHmwjdtnbX/7qNTi+8=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From:Subject:Reply-To; b=ghfKARoaVd0d2L5GfNeiyk4yJHXWlTyiOYesEa/UrzvJfR/Qy6kkW/CPcQO6HxPuC8twg8XSqn3reBlbHdSOZmwKgbzdH89iBJur+P88Z9IMp/WprPqgiPeWtNMcvWSMAb2MwLdMR6BjMjEMaFW1/5OLOO+DZwd5MMf9+VYENmkpP/csrm8Ak+SgsrFAi3iKEnSaqBVd701WjU92kl5fisIZJrGdztdxI390/XeTGzj4Xvy8rxUcMUkRkkIfwouvvo86Zjt5hQOwr1VX6mWvR7KKEY54pdQBQu9oS2v+9MaQ9x0eI4LfvE6aNP3YxAY4bNuL6iXFZbysV17iXy7z4g== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1654771220; bh=YMlCu6WLaOEdPWIEDEByZC0o/fPfGBBUakIgmfFm2CF=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=ni9ymcvD8QLVw6Ilv8zn4J/NxQGcwO0/hrDDdfX+t6X1FEJYBQmGPHwN+qhDPLrfUAxNMFsw8fQTCZnK1kpWsHJQ4s6t+1niSZB4fkup2L1NhrwDzTyzIYvqD3LlF9z9skMihgauM0ZSk++uulLNhHA8rRf8UXCCtNRn550iVG1GwF/jthaEP3HPeUHPwAKE5sQm+xtinCCwydKg3p78vw/2pflWMqX6ChMmVjE36K5zcI7a0FJsoeWvzGu+hYgor6URvk7gyUSrxtVSqQ1XQpYzvQ0EvaQnHIbX+TlZmLzsMkmGzLVH02tQ54Bk1H9YAFcugnQXNjgRuXpsDo0PsA== X-YMail-OSG: 8D0c2IMVM1knBAknBUH4W3ptM3L84fUTqHSGGGOD1vTtsjrKNtav2appU0FISEs mcwpoFu0wwyQeKNQisX4JUpqXTJlox2Uhk9ivFeP3JCvwp.GJrXZXC5gwuClcbri79mHBJeUreL2 XntBFuh7.GJ2EwBriSzW.aV3Qo7oAYAvih5Y.S0fhPuTILIfqQxaW8pWsrC2l7z8VPZ8B5eK9mba n7y5MpiIyQjO0MYVMG0hxfK.1EUFkIgIi_IspAlSXMO9QHnw_qH18IIXdtah3W15mjpkY3J3MrJl FAP.SDEtzfwEgIh0CK7_2C9DJbkVBQpaXEQWml0jvGnclhmLtCiHzmhqnPBrHFe_NUQ2xXWLygxl jrfBS9cjLbieHEDYijs8ToCQXrbcfDlIwIJ0wmBAT4Noc8s0sQwyhpiYl96X_kX1VRSD5tq4iUNm Se2MgaqPwghn8yrdVlDXmbBTfebyCo1LD8VszUk14D424Fyn5SVy7vyWyI6A3QICV7ny_OAcKvrB NzBi_TSiaLYzrgxO1IsoL89Hk8R_FxmjAHsdPBVxvLQfcdhnPjnW2xUtgW534yPOplhxBqWvOqFw 2KdJdbdWUl1fpkg_beZ.3E3A0y1CQZLEnt.J1KeQadAtNdf9bNuNepaubSHr53bzzNyumqB7JwTm BNcdCCr2o48nZQqvdL6Deizo_K3dASm865hpDpzLs8ACI16mHMLby.DNy6rpmdIYlemsRsBe5gnL MJXPrfDCuecV3IbkvAfTNr.euSxVMTvPK7dQLzocvlx7M5hkg5J_4o7tJ2_yG2NKYDIR2f9CvTZH vqpO.tskEj7lffAdPZkVU4zIY08fXLEIoIxIgWQI4tSuF5cAqNN6Ggb4qFL3rD3wDQr2nxLFagPu S1YBM33vkWwLnCF2byEH.99hX9bfa9Mokf_v_LO6JbDngC_8YVv0lSRNUm6s5EGe6Dqp2Wt2NLic bncL3beZMQjyfQ01kDqUXk8z5gJjO_9_gnlU.iA8kp1vDH4R2DXIVi1MAq3T.04V_YCnrCAMzL.L NYvp_l7ctxlnk7XtDr_Xdomp.kYcJzr0PHs_oPgcoYRcgDnIoz855lgphVDtGuGLH5iyuhI.szfq YW6JoxPe7ULZrMBpWzyZ0NaR3wrCeue3X2ROJNTbL9hIFQnph6Kk8ddHHfVQ_wALrbPR2ziAiR0x tQ8JjswOi7Wt8JBkNBnIFHKiVhgKtSeS3ijxm6B70e7lwa9SfUhQY9_8KJOCF4Td_CyYTduK4U93 aodjXOYEwTIds.v.4bwaTQggs4xd9KEi2YptKTTMhlOiC9QRGpjHN0vRz2rVJ_BpQ3rlK9PpcStV f.VblIYuzWNTNdL5qjDVS4K6cUPrtiNzqC7hIiG.VxctyNQ5B7ls9VXpIcMVn5A9tNWIp6Mk_A27 OJXhsyqAsmmfPf_F0GNW8kB53n4AlNOFaysMmE4N9FCDgT73J_NxUWkhQWb97BJ7mclzujCdXm8d simIZlVTxEYFgizXw.80dXDedxB5YYRuJi8Y9f151ZiCxgy4GIR9iWmq6OmaCCTSVdx2_AUzHSLo hK13aQr0Ndz17VWnvfSAeMUVWQ8NJeLweHAFOuGt7yLDvJfegk3.V4EJeCzfzXOOfnCgFdEVs2tT IIBSieiRUmoKMNnfJcAnPrHpnM6NjaatWD5edaoW1qa9.6JWR0_ZSq89PT7CLGngHcH2W410ba32 i4o_K54NANItPO2pT4q8imMeAMRIPnqz15s7WuLW.YqQ0VXV6xRLzO78U35V0yPFb8Sc5b4SoYfy NGaifsZqObY7LTkJOD6Ox6wbsf_J27ovEWTFm86VYc8lEBwgbrEbqpZrFYyTF9hDxh4DIdxE3uqH 54b1hKHeUvdJ6r_v.sR3L3Gyr512opqdznGj0MfeGw_MroCDDm8Yq4XmAIYt.oJEropPBT0uWJf_ WbyVWXdOiXvgCyrIE.exposXKCA1gTAxw0t7QdzuOkuqpJcLDJimWBZqS_1vH8OAYPA41PHrXRDt ZbY8nRfrlvE8cBGXBT40BPnahn26dN55M2RtOWkPJV29Okm8IdQpocOBPdo6jAXEsoz2H13ozWVq EaahAc3PyS3GXPbPhg7hJHw1OC8iofflkn.XvB7JmZzK.li4I5uOGirQp7TxOMuby.DJcCHqy6zb H7GtNHwrPPo5NaU8MPsAbCYm8ipJRVyO.Xi5x00HNheuRvaOV_RA1A7LpyJWUqFP6HCrPSF8MdFS 0TT_5yOPa_B6K8ZpeHsqrPUn1QGzDKbNoW.h9ufIhZUeCqK_EjIpvv4Xuk1iP8g-- X-Sonic-MF: <luangruo@HIDDEN> Received: from sonic.gate.mail.ne1.yahoo.com by sonic302.consmr.mail.ne1.yahoo.com with HTTP; Thu, 9 Jun 2022 10:40:20 +0000 Received: by hermes--canary-production-sg3-5f7658c994-bv4wk (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 6c6b7c8c3272bb3b39ef0d7a932cade6; Thu, 09 Jun 2022 10:40:13 +0000 (UTC) From: Po Lu <luangruo@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <87pmji8774.fsf@HIDDEN> Date: Thu, 09 Jun 2022 18:40:08 +0800 In-Reply-To: <87pmji8774.fsf@HIDDEN> (Lars Ingebrigtsen's message of "Thu, 09 Jun 2022 12:25:19 +0200") Message-ID: <87h74unmrb.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20280 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 795 X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: Eli Zaretskii <eliz@HIDDEN>, Emacs-hacker2018@HIDDEN, 45898 <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: -1.0 (-) Lars Ingebrigtsen <larsi@HIDDEN> writes: >> One problem with this is that we already have the "emergency exit" >> feature, which is triggered by 2 or more C-g's. This only works >> reliably on TTY frames, but it's still a feature we don't want to >> lose. > > I think that could be made to fit into the general feature, really. The > "emergency exit" feature currently queries "Abort (and dump core)?" if I > remember correctly? We could extend that to "Abort, enter > so-long-mode (or whatever)...?" etc. "Emergency exit" only works on TTY frames (in fact, only if Emacs is running on a single text terminal), and relies on operating system support for suspending and resuming the process. Nothing comparable exists on X, and I'm not sure how starting `so-long-mode' would work either.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:30:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 06:30:22 2022 Received: from localhost ([127.0.0.1]:45081 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzFQk-0001s5-LE for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:30:22 -0400 Received: from quimby.gnus.org ([95.216.78.240]:47626) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1nzFQf-0001rj-G2 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:30:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=kxdd9c1K017mpCiYHTI4Z4oZgZrKRwLAAqxrOtN2qvg=; b=U+BKuYfyN1TJOZFw+dBzE9+3jO MaMUpEPvpCWNoU04o4XkLp/m8DjnCeJPieo0ZSNmgIu1t0xYJlf+VUpNc+jxy5yW+W9yzI4p1uZ5F 8VkJcRmvGCgz5/h+iw+FDUaE6eIS3LLRziBKn0Wmdsxlg/LtxUkVjqBCbTU1o7anuGOA=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1nzFQV-0006O2-Te; Thu, 09 Jun 2022 12:30:10 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX22Cb20Q7Xszs0 LjguWqbi0qSjSzv69t7///9X/eT6AAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQoZLrTAyRQAAAGz SURBVDjLddLBjpswEAZguhLtFbNK7piFB+gQvwBEvQOO72Hj3Lsi8/qdsQ2YZGspQfKnGfyPSZIf QoiM/rI3aDpeLfAvEcvKKvDS0mMHIwCsMEUwNK0rea54a5vONfsOSDRtfnatSo7WHpWFQqQMHaAZ CDqCSR0nYPBn0vchVHgQC3Rq4BwM1EpZIX4G6AhaUInIayllLouPAOcJWmAQpZ2gBLWBAg9C5CLP 5doKFDRxjnSD/RC1XoDTb7PKtB7/B/gtUCuc/dQpIOwrnDhQMQx/EHH0N6sgrugIcH6FURsWniFE cNDjmfdxolNZGYNuHIDSuj/uwHWa4YRz/x6D28eHg/IVBlBGy2mDPHSyAJWMIdO+E8FVSniBC12n 2kHioSawNgI3Q1cBBPUGaYC/DsoVEhPyIe3Z6wr05jU4WFlMAfhEM5kLDlVfQIAUHdTGTYRH6CEz M4nBx9WDLBdAv2Z70wPc+hUOASgdxbv1tX2GC4OurQyn+oWbcLyrLHfAJ7iAsrZYhhgBXZOtCk7I YNZW9In8NthLWT+9gypOyOA/n3SDL7jTDGT1Ag+4azS66uEfmeES2gHEP+0AAAAldEVYdGRhdGU6 Y3JlYXRlADIwMjItMDYtMDlUMTA6MjU6NDYrMDA6MDCmuwKMAAAAJXRFWHRkYXRlOm1vZGlmeQAy MDIyLTA2LTA5VDEwOjI1OjQ2KzAwOjAw1+a6MAAAAABJRU5ErkJggg== X-Now-Playing: The Cure's _Wild Mood Swings_: "Want" Date: Thu, 09 Jun 2022 12:30:07 +0200 In-Reply-To: <8335gf5er3.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 08 Jun 2022 18:58:08 +0300") Message-ID: <87leu686z4.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > So one challenge is to detect the "during redisplay" situation, > including the fact that it's "still the same redisplay cycle". Yes. This reminds me of something else I was thinking about a while back -- if we had something that could tell us "this redisplay cycle has lasted X seconds", then we could possibly have something to [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > So one challenge is to detect the "during redisplay" situation, > including the fact that it's "still the same redisplay cycle". Yes. This reminds me of something else I was thinking about a while back -- if we had something that could tell us "this redisplay cycle has lasted X seconds", then we could possibly have something to react to that. I.e., if the redisplay cycle has gone on for more than 10 seconds, then switch on so-long-mode and see whether that helps... > As for the C-g idea, I think a better and cleaner idea would be to use > atimers to detect signs of potentially a very long redisplay cycle, > and then do...something. Not unlike what we already do with the > hourglass-cursor feature. Ah, yes, that's true -- we already almost have something here via the hourglass thing. Hm... So we could call something from an atimer... but do we have a way to (safely) signal to redisplay that it should stop what it's doing? > Other clever ideas are welcome. Indeed. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:25:34 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 09 06:25:34 2022 Received: from localhost ([127.0.0.1]:45072 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nzFM5-0001hb-Oe for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:25:33 -0400 Received: from quimby.gnus.org ([95.216.78.240]:47600) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1nzFM3-0001hL-Dv for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:25:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=dGKWhbZ9upOwzsLCXEIepkyn42fIOjt10FBMetbXKhU=; b=bnht/G8/IzIfziwIOJeE7Zwrib URA5eWnhN85vZ8OLJzHqvUfzJiOP0ss50An0IhNh1TkuC1aqNIKlv6/ADi1s/ZtlLsqrFe2AJKK4R dATSa/2zw+Qwqoi0zPR2TtleBj7J1Ix/yln7+2WCqKw0I9lBWOEFeIIfNV2Ilrfi0Zvw=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1nzFLt-0006Ld-SY; Thu, 09 Jun 2022 12:25:24 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEXCta2+sarFubG3 q6WwpZ6topupnpfNwLj///+vw1mlAAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQoNFStl92UAAAF1 SURBVDjLbVPJTQRBDLRNArYmAat5zBs1hLAhEAIJkP8DX+3pWdZaIabKt6sBGcZmMBQcQHBrWIMr M5fGoQ0bBBoeqhehBnm8iPh3mYDhan/QcGGwXwYIRK1EMYIyYBqR4dY2gnTtw4ixiN0EVufY3tHM gNV+EQ3mf+pDsOxLSK8cS2hfWm3lln/f2GWUu6tma3JS0pGVYJDG/mxoCfe7IYvcgP7yRBtnU5F2 9Fpt+K3ie48cBBdOebE4XhyNYzy6XT1aYXMl7/NtPuYnRyXx4rL28P7z/fXgukvWyDznb6VCYXQi k59j4asjXnXPTXLeube0qVfXUFCC3a9AjvoPnohKB7yrvYQLsatr8mddaRQMj/0Z3A70TwTIry+I rvZdvf1QgukvoOsF9cEVWuhUmuaSKxUxlg4iinqk4U8who066x342tNZ5ocToyRgiSmIY05jWm1j 9eT4lLq3R0YrKDNM2hhTd0cSXiXNmjFtNR4xmVP+ALMAQJrUEnDKAAAAJXRFWHRkYXRlOmNyZWF0 ZQAyMDIyLTA2LTA5VDEwOjEzOjIxKzAwOjAwMY8jwwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0w Ni0wOVQxMDoxMzoyMSswMDowMEDSm38AAAAASUVORK5CYII= X-Now-Playing: Massimo's _invalidObject Series (var)_: "sel.moveBy(-i, -v; } }" Date: Thu, 09 Jun 2022 12:25:19 +0200 In-Reply-To: <83a6an5jt3.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 08 Jun 2022 17:08:56 +0300") Message-ID: <87pmji8774.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > One problem with this is that we already have the "emergency exit" > feature, which is triggered by 2 or more C-g's. This only works > reliably on TTY frames, but it's still a feature we don't want [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > One problem with this is that we already have the "emergency exit" > feature, which is triggered by 2 or more C-g's. This only works > reliably on TTY frames, but it's still a feature we don't want to > lose. I think that could be made to fit into the general feature, really. The "emergency exit" feature currently queries "Abort (and dump core)?" if I remember correctly? We could extend that to "Abort, enter so-long-mode (or whatever)...?" etc. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 8 Jun 2022 15:58:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 08 11:58:23 2022 Received: from localhost ([127.0.0.1]:44032 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nyy4d-0007co-Cv for submit <at> debbugs.gnu.org; Wed, 08 Jun 2022 11:58:23 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39070) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1nyy4b-0007cT-6Y for 45898 <at> debbugs.gnu.org; Wed, 08 Jun 2022 11:58:21 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:36554) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nyy4V-0008OA-F1; Wed, 08 Jun 2022 11:58:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Q+XtxrO2SWKas9gvute4TZUkTEindfFhWM99A2WPTRw=; b=CivhbzPOPMwN +cvdqqlQxbZl7qSUwGy6MQXKcKbuiqHadphL4zt+AH3GSRfCeLo+379eFAvRRWFCgdJjh9A0lew4z BH07RFHatZUBYqkEe8IcoCjshkbLWEcq8S2k3W1RIPOVjfTxbSKlHkQVBbl78+jftZpioM2QeFpu6 6AFz8C4mknT7XwhsQ1n1iZ6GwE144ZaZdnUlsqh6lya5i1SzMMg4DZ6ZqoQnCWiJFTYzlVMWWp1fD Jww8BBjb8amBcUl5YgQqnu0vOd/QRSK1i7O5NAsZDslchmUIbi3elnRk0V0mMpz80mmjy/ZQsLz4Y isnMDsTVqIKvE8cTPU2X1Q==; Received: from [87.69.77.57] (port=2640 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nyy4U-0005aB-Pw; Wed, 08 Jun 2022 11:58:15 -0400 Date: Wed, 08 Jun 2022 18:58:08 +0300 Message-Id: <8335gf5er3.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: larsi@HIDDEN In-Reply-To: <83a6an5jt3.fsf@HIDDEN> (message from Eli Zaretskii on Wed, 08 Jun 2022 17:08:56 +0300) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Wed, 08 Jun 2022 17:08:56 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > From: Lars Ingebrigtsen <larsi@HIDDEN> > > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > > Date: Wed, 08 Jun 2022 13:47:28 +0200 > > > > But if we had this facility (i.e., a way to make Emacs call some > > function after `C-g'-ing a lot during redisplay), then we can start > > experimenting -- and users can, too. So I think having a > > `break-during-redisplay-function' variable that specifies something to > > be called in these situations would allow some possible progress in this > > area. > > One problem with this is that we already have the "emergency exit" > feature, which is triggered by 2 or more C-g's. This only works > reliably on TTY frames, but it's still a feature we don't want to > lose. > > The other problem is that I don't know how to do this safely. Btw, this says "redisplay", but that's somewhat misleading: in many cases I've seen, at least half of the time, and sometimes most of it, is spent in the move_it_* functions, which are called both from the display engine (to make layout decisions), and more-or-less directly from Lisp, like via posn-at-point, vertical-motion, and scrolling commands. These are not "redisplay", strictly speaking, although they reuse a lot of the display code. So one challenge is to detect the "during redisplay" situation, including the fact that it's "still the same redisplay cycle". As for the C-g idea, I think a better and cleaner idea would be to use atimers to detect signs of potentially a very long redisplay cycle, and then do...something. Not unlike what we already do with the hourglass-cursor feature. Other clever ideas are welcome.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 8 Jun 2022 14:09:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 08 10:09:09 2022 Received: from localhost ([127.0.0.1]:43929 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nywMv-0002mB-NW for submit <at> debbugs.gnu.org; Wed, 08 Jun 2022 10:09:09 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39122) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1nywMu-0002ly-0c for 45898 <at> debbugs.gnu.org; Wed, 08 Jun 2022 10:09:08 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33842) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nywMo-0006zy-Bk; Wed, 08 Jun 2022 10:09:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=GFKXkXz7KHG6RIZ6Xop2SlHPI1vNwmtNsfHuBWXiMEg=; b=lkaHqxhp5xFF KlGTe7mvr8KD2pXAVIq4RvzWQjmVJFPLtOMjeD+Hj18Outi8ReG7MtcVXfhpXhjnVaiLMfVTRXF3e 9bibddPp7RgXVRUbZBinqAUB/IltB77JZlWpy+6cNWmbeFo/bHvzrIs6c2E+dk33piSHIRBz9Lz0e iHI+dTlevwel/jS5SAoGvL4vEMNxPocaI4xtpxa4iOCbU1prpFIzyusJOQvwL9sC1Xn3s8gxBouVT k7LdWUEal2eOQ6zu1QQnzHI74r7xt6KHV0ZF1AvyHytMFr4oJNQgtEaGBacrFC/J/bnWLR+howuVb Kzwof6V9Skn4IeqV8Ygw9g==; Received: from [87.69.77.57] (port=3939 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nywMn-0005wg-QD; Wed, 08 Jun 2022 10:09:02 -0400 Date: Wed, 08 Jun 2022 17:08:56 +0300 Message-Id: <83a6an5jt3.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87k09rbcmn.fsf@HIDDEN> (message from Lars Ingebrigtsen on Wed, 08 Jun 2022 13:47:28 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org > Date: Wed, 08 Jun 2022 13:47:28 +0200 > > But if we had this facility (i.e., a way to make Emacs call some > function after `C-g'-ing a lot during redisplay), then we can start > experimenting -- and users can, too. So I think having a > `break-during-redisplay-function' variable that specifies something to > be called in these situations would allow some possible progress in this > area. One problem with this is that we already have the "emergency exit" feature, which is triggered by 2 or more C-g's. This only works reliably on TTY frames, but it's still a feature we don't want to lose. The other problem is that I don't know how to do this safely.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 8 Jun 2022 11:47:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 08 07:47:41 2022 Received: from localhost ([127.0.0.1]:42631 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nyuA1-00034F-6j for submit <at> debbugs.gnu.org; Wed, 08 Jun 2022 07:47:41 -0400 Received: from quimby.gnus.org ([95.216.78.240]:36268) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1nyu9z-00033N-1Z for 45898 <at> debbugs.gnu.org; Wed, 08 Jun 2022 07:47:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=GGbQssFkWqkTq55920gkkXvkYbFOSv98+J95lNoL+LY=; b=ELMIJUUsdKM29Z5V8jor8deUaz RwltV1MZjJbvBuF90fJcYc1gzAqKo1hkL+tMwhA2wKxMOrCp4jjWXeX8ZiMy18mYulKb1GOpqDHaF EAnIUJEf/zIdSAt0T7NBUA5a0aDb5Iu61biKNGJ/dBV/LwRSoOyAKAy/E+GJquJ+Fk30=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1nyu9o-0005pM-PK; Wed, 08 Jun 2022 13:47:31 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> Date: Wed, 08 Jun 2022 13:47:28 +0200 In-Reply-To: <83bkv47evy.fsf@HIDDEN> (Eli Zaretskii's message of "Tue, 07 Jun 2022 17:00:01 +0300") Message-ID: <87k09rbcmn.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > We could perhaps push an event onto the input queue that would do > something Lispy when processed, like turn on some mode. But I think > the main problem here is that we don't necessarily read the [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) Eli Zaretskii <eliz@HIDDEN> writes: > We could perhaps push an event onto the input queue that would do > something Lispy when processed, like turn on some mode. But I think > the main problem here is that we don't necessarily read the keyboard > or do QUIT processing inside redisplay, at least the parts of it which > triggered this discussion. > > We also don't currently have any mechanism to quickly exit redisplay, > so we will need to develop that somehow. Right. > Basically, each time this issue comes up, I get the impression that it > is not quite clear what (not how, but what) people would like to > happen. They want to unwedge Emacs, that much is clear, but what to > do after that to avoid immediately wedging it again? Because even > so-long-mode is not a guarantee of getting a responsive Emacs. It's better than nothing, though, and will unwedge Emacs in many situations. But if we had this facility (i.e., a way to make Emacs call some function after `C-g'-ing a lot during redisplay), then we can start experimenting -- and users can, too. So I think having a `break-during-redisplay-function' variable that specifies something to be called in these situations would allow some possible progress in this area. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 7 Jun 2022 15:54:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 07 11:54:11 2022 Received: from localhost ([127.0.0.1]:41202 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nybX1-0005Yv-OL for submit <at> debbugs.gnu.org; Tue, 07 Jun 2022 11:54:11 -0400 Received: from eggs.gnu.org ([209.51.188.92]:33594) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1nybWx-0005Yf-Fy for 45898 <at> debbugs.gnu.org; Tue, 07 Jun 2022 11:54:11 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:38972) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nybWr-0002D1-S3; Tue, 07 Jun 2022 11:54:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=M1X7b3nToQ0Fzldh5FhXOlcQUqyUFyps3Epl+teu0yE=; b=ewI4w0DdvA7d H3GhXgR5nPJMPCjR+YXEfNVJMvh0bKT8UBMHom0fbAYLWO8V6YH0jnDcE5MlUCzzTbQHogL06yT8F lryqni+ODfYi5hsH6dQahSgsvXV5Amm+slMHMLb/jmOoOOU0PsVkAN3agMOynB0l5RiPSuBSWMtho 4Ft47GcJZteXVdkG78uoVcqtjvR1iYMnxTIdSyTi+iXVfoSvLCpIiuzL36u85obiDR8qy95Pn/o2M UGjfBc3XnxWlHMVniiIs+CCdibCJL8fLLh/xlkzXcsnzQYV9VD0+8dtHXkjyk36ge1JsIO145neNH fOjP0EPC4iLoN1KorFiXMQ==; Received: from [87.69.77.57] (port=1720 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nybWr-0003Ln-BZ; Tue, 07 Jun 2022 11:54:01 -0400 Date: Tue, 07 Jun 2022 18:53:52 +0300 Message-Id: <83a6ao79m7.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Devon Sean McCullough <Emacs-hacker2018@HIDDEN> In-Reply-To: <b7f81bfc-bbfb-83bc-3660-d0b1474498f7@HIDDEN> (message from Devon Sean McCullough on Tue, 7 Jun 2022 10:03:26 -0400) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <b7f81bfc-bbfb-83bc-3660-d0b1474498f7@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: 45898 <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 (---) > Date: Tue, 7 Jun 2022 10:03:26 -0400 > From: Devon Sean McCullough <Emacs-hacker2018@HIDDEN> > > On 2022-06-07 10:00, Eli Zaretskii wrote: > > so-long-mode is not a guarantee of getting a responsive Emacs. > > It is if you bury the un-displayable buffer. If we succeed in knowing which buffer that is, which isn't easy (and it could be shown in more than one window, btw) and bury it, then there's no need for so-long-mode, is there?
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 7 Jun 2022 14:00:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 07 10:00:24 2022 Received: from localhost ([127.0.0.1]:41023 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nyZkt-0002Vr-GD for submit <at> debbugs.gnu.org; Tue, 07 Jun 2022 10:00:23 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58994) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1nyZkq-0002Vc-3g for 45898 <at> debbugs.gnu.org; Tue, 07 Jun 2022 10:00:22 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:36172) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nyZkk-0006L0-DT; Tue, 07 Jun 2022 10:00:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=1t2/yS9fSp/f4K9jHAwlyy2vfzyRJeuqBkmzsCRpSYA=; b=Y6L2/27yQUdq cY/HPQCM5AoZPuDOWh129DiDeDxSxXkLIoGYk7/B+NfemynQfC0GBOhQGD7IHumhBbQNoR5lo/NpO /EDzv9nan1M4EpIqvn4I35cvtQEzI+tNcSo73HpnsSRJ8OJd1cDFprOxj8vwzoXBDCqb9fstJM5P1 MOwsgH+kiDzoth1fWfQlpuPnEUXN8y/ocKH6Kxb26I7zb7v6GzFH2da0kKUINmfwW6m2Tro81AuVa pDpuFu6CchEGWdWXMSYJlsxKti65xPihKes4/+GPaFJqApL4A+FTGuitCDfhFEttOzHf/s5EnENS5 /JMKFYwQGil/XGm7xcN/TQ==; Received: from [87.69.77.57] (port=2715 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1nyZkh-0006kk-Eg; Tue, 07 Jun 2022 10:00:14 -0400 Date: Tue, 07 Jun 2022 17:00:01 +0300 Message-Id: <83bkv47evy.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lars Ingebrigtsen <larsi@HIDDEN> In-Reply-To: <87h74wh9x7.fsf@HIDDEN> (message from Lars Ingebrigtsen on Tue, 07 Jun 2022 15:37:08 +0200) Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> <87h74wh9x7.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 45898 Cc: Emacs-hacker2018@HIDDEN, 45898 <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 (---) > From: Lars Ingebrigtsen <larsi@HIDDEN> > Cc: 45898 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> > Date: Tue, 07 Jun 2022 15:37:08 +0200 > > Devon Sean McCullough <Emacs-hacker2018@HIDDEN> writes: > > > If lldb forces read_char to return Qnil or redisplay_internal to return, > > will Emacs crash immediately or survive long enough to save all buffers > > or better yet continue working? > > (I'm going through old bug reports that unfortunately weren't resolved > at the time.) > > It probably won't continue working, but it's hard to say. I think it is more important to realize that Emacs will re-enter redisplay right away. > > P.S. If there exists a way to quickly and safely abort redisplay, > > perhaps there should be a hook invoked when repeated keyboard-quit > > has no effect, allowing experimentation into workarounds for this > > apparently intractable redisplay problem? > > I wonder whether there's been any discussion about handling `C-g' during > redisplay. For instance, if the user hits `C-g' six times in a row > during redisplay, that should be an indication that perhaps Emacs should > stop doing what it's doing -- and, for instance, switch on so-long-mode. > > Eli, would it be possible to implement something like that? Not directly from redisplay, I think, no. We could perhaps push an event onto the input queue that would do something Lispy when processed, like turn on some mode. But I think the main problem here is that we don't necessarily read the keyboard or do QUIT processing inside redisplay, at least the parts of it which triggered this discussion. We also don't currently have any mechanism to quickly exit redisplay, so we will need to develop that somehow. Basically, each time this issue comes up, I get the impression that it is not quite clear what (not how, but what) people would like to happen. They want to unwedge Emacs, that much is clear, but what to do after that to avoid immediately wedging it again? Because even so-long-mode is not a guarantee of getting a responsive Emacs.
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at 45898) by debbugs.gnu.org; 7 Jun 2022 13:37:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 07 09:37:35 2022 Received: from localhost ([127.0.0.1]:39016 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1nyZOp-0007hn-HU for submit <at> debbugs.gnu.org; Tue, 07 Jun 2022 09:37:35 -0400 Received: from quimby.gnus.org ([95.216.78.240]:53654) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <larsi@HIDDEN>) id 1nyZOY-0007hI-RV for 45898 <at> debbugs.gnu.org; Tue, 07 Jun 2022 09:37:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=JLM93w3kpsxtV8XMRXC3ST7T2xFFdT9r07KNQ6n1sP4=; b=BGSJ9/8mxXLrw31rwP07oXGACd w4aBW1dPQCSLXNr/ItNu9s+Ux2JVsGWlX9b9ZCRxTOvtD5jaQcJWt22XUExql0SS0W/Snlcm038bc 9EdonZ8AMZTG2vsM9atKGWY6N7VKvHV8R/gK4utnVUFXymqxbX4XiEf1BYnIepz5ZZV0=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <larsi@HIDDEN>) id 1nyZOO-0003Cm-SW; Tue, 07 Jun 2022 15:37:11 +0200 From: Lars Ingebrigtsen <larsi@HIDDEN> To: Devon Sean McCullough <Emacs-hacker2018@HIDDEN> Subject: Re: bug#45898: 27.1; wedged in redisplay again References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> X-Now-Playing: Blaine L. Reininger's _The Blue Sleep_: "Jacob's Ladder" Date: Tue, 07 Jun 2022 15:37:08 +0200 In-Reply-To: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> (Devon Sean McCullough's message of "Fri, 15 Jan 2021 13:13:16 -0500") Message-ID: <87h74wh9x7.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.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 @@CONTACT_ADDRESS@@ for details. Content preview: Devon Sean McCullough <Emacs-hacker2018@HIDDEN> writes: > If lldb forces read_char to return Qnil or redisplay_internal to return, > will Emacs crash immediately or survive long enough to save all buffers > or better yet continue working? Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 45898 Cc: Eli Zaretskii <eliz@HIDDEN>, 45898 <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 (---) Devon Sean McCullough <Emacs-hacker2018@HIDDEN> writes: > If lldb forces read_char to return Qnil or redisplay_internal to return, > will Emacs crash immediately or survive long enough to save all buffers > or better yet continue working? (I'm going through old bug reports that unfortunately weren't resolved at the time.) It probably won't continue working, but it's hard to say. > P.S. If there exists a way to quickly and safely abort redisplay, > perhaps there should be a hook invoked when repeated keyboard-quit > has no effect, allowing experimentation into workarounds for this > apparently intractable redisplay problem? I wonder whether there's been any discussion about handling `C-g' during redisplay. For instance, if the user hits `C-g' six times in a row during redisplay, that should be an indication that perhaps Emacs should stop doing what it's doing -- and, for instance, switch on so-long-mode. Eli, would it be possible to implement something like that? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.Received: (at submit) by debbugs.gnu.org; 15 Jan 2021 18:13:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 15 13:13:41 2021 Received: from localhost ([127.0.0.1]:41709 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1l0TbR-0002J8-KE for submit <at> debbugs.gnu.org; Fri, 15 Jan 2021 13:13:41 -0500 Received: from lists.gnu.org ([209.51.188.17]:33468) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <emacs-hacker2018@HIDDEN>) id 1l0TbP-0002J0-Af for submit <at> debbugs.gnu.org; Fri, 15 Jan 2021 13:13:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52216) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <emacs-hacker2018@HIDDEN>) id 1l0TbP-0002SS-4x for bug-gnu-emacs@HIDDEN; Fri, 15 Jan 2021 13:13:39 -0500 Received: from gateway33.websitewelcome.com ([192.185.146.78]:21169) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <emacs-hacker2018@HIDDEN>) id 1l0TbN-0003go-AW for bug-gnu-emacs@HIDDEN; Fri, 15 Jan 2021 13:13:38 -0500 Received: from cm14.websitewelcome.com (cm14.websitewelcome.com [100.42.49.7]) by gateway33.websitewelcome.com (Postfix) with ESMTP id 9222427830B1 for <bug-gnu-emacs@HIDDEN>; Fri, 15 Jan 2021 12:13:17 -0600 (CST) Received: from leaf.websitewelcome.com ([192.185.82.99]) by cmsmtp with SMTP id 0Tb3lO4Lrsvw90Tb3lfhCC; Fri, 15 Jan 2021 12:13:17 -0600 X-Authority-Reason: nr=8 Received: from pool-72-83-171-228.washdc.east.verizon.net ([72.83.171.228]:60246 helo=[192.168.1.165]) by leaf.websitewelcome.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from <Emacs-hacker2018@HIDDEN>) id 1l0Tb3-001LRa-Ah for bug-gnu-emacs@HIDDEN; Fri, 15 Jan 2021 12:13:17 -0600 To: bug-gnu-emacs@HIDDEN From: Devon Sean McCullough <Emacs-hacker2018@HIDDEN> Subject: 27.1; wedged in redisplay again Message-ID: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> Date: Fri, 15 Jan 2021 13:13:16 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - leaf.websitewelcome.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - jovi.net X-BWhitelist: no X-Source-IP: 72.83.171.228 X-Source-L: No X-Exim-ID: 1l0Tb3-001LRa-Ah X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: pool-72-83-171-228.washdc.east.verizon.net ([192.168.1.165]) [72.83.171.228]:60246 X-Source-Auth: devon2011@HIDDEN X-Email-Count: 1 X-Source-Cap: am92aW5ldDtkZXZvbjtsZWFmLndlYnNpdGV3ZWxjb21lLmNvbQ== X-Local-Domain: yes Received-SPF: pass client-ip=192.185.146.78; envelope-from=emacs-hacker2018@HIDDEN; helo=gateway33.websitewelcome.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.6 (-) 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: -2.6 (--) An elisp expression output a bigger list than expected so I hit m-< and went out for a walk. After four hours of 99% CPU, lldb backtrace shows main → Frecursive_edit → recursive_edit_1 → command_loop → command_loop.cold.1 → internal_catch → command_loop_2 → internal_condition_case → command_loop_1 → read_key_sequence → read_char → redisplay_internal → redisplay_windows → redisplay_windows → internal_condition_case_1 → redisplay_window_0 → redisplay_window → compute_window_start_on_continuation_line → move_it_to → move_it_in_display_line_to → gui_produce_glyphs → macfont_encode_char If lldb forces read_char to return Qnil or redisplay_internal to return, will Emacs crash immediately or survive long enough to save all buffers or better yet continue working? Would calling Fgoto-char(Fpoint_min()) from the lldb break immediately corrupt or crash Emacs? Peace --Devon P.S. If there exists a way to quickly and safely abort redisplay, perhaps there should be a hook invoked when repeated keyboard-quit has no effect, allowing experimentation into workarounds for this apparently intractable redisplay problem?
Devon Sean McCullough <Emacs-hacker2018@HIDDEN>
:bug-gnu-emacs@HIDDEN
.
Full text available.bug-gnu-emacs@HIDDEN
:bug#45898
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.