From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: "Herman, Geza" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Mar 2023 20:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 62352@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.167942893324993 (code B ref -1); Tue, 21 Mar 2023 20:03:02 +0000 Received: (at submit) by debbugs.gnu.org; 21 Mar 2023 20:02:13 +0000 Received: from localhost ([127.0.0.1]:60876 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peiBQ-0006V2-KA for submit@debbugs.gnu.org; Tue, 21 Mar 2023 16:02:13 -0400 Received: from lists.gnu.org ([209.51.188.17]:59754) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peiBN-0006Uu-Sj for submit@debbugs.gnu.org; Tue, 21 Mar 2023 16:02:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1peiBM-0005my-1f for bug-gnu-emacs@gnu.org; Tue, 21 Mar 2023 16:02:08 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1peiBG-0002I4-Pl for bug-gnu-emacs@gnu.org; Tue, 21 Mar 2023 16:02:06 -0400 Received: by mail-wm1-x32e.google.com with SMTP id o11-20020a05600c4fcb00b003eb33ea29a8so10201408wmq.1 for ; Tue, 21 Mar 2023 13:02:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679428920; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=fqDtfzOQKqLlM9SGKQ4QKme0PTw2bkDjAGwLl6RpcQQ=; b=Y9djeKRjVOr9JWk8IsaxUNcuaeMFmFEFCGx8zEDFeela/CMUZGpcECBgVRWUKE3Eq3 OFp5Jc/GYSMAVNsHkVzAySXQ1UkoTgIexAOCQ0sQ3dKpIb2gVGVLiv48W9StW2A7saXX z//rVcOimQYcWCEN3bHgHYTCguddP8ezx1TfdpTFSyqdjz6n57vdmah/9fBZSJDGhdH+ kJ0nk27flH5KTVLuNdnhY10yk1wI3hQxEUCroysxMU40xhcOH0OsRs21XBSoVUWVjzyW gu5jHlxCwEbuVgqd7Sf5F85vdtBageiL0K1lsKEp87kbhFBA5qmfu5zyUcKXZVZyPYuD IEAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679428920; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fqDtfzOQKqLlM9SGKQ4QKme0PTw2bkDjAGwLl6RpcQQ=; b=6Hflzjkv8b5THnPasRm3d50ylXpOCZV9BzD6zXuDadXvFFcczaM2JHfA64db6dASoJ zG26/4KdLrAOgvO3OkkvDunp3xU4BTg7MkvTuyk55u401sbD8ld8aMHY5es2Z9N7jZMi dF9qvkXEl7RhGdbkZU+RIRAWmCEVbgUx0uSDFLorZ0zVtwQpjlwTT3+AS265irKi/Kcz zT60S8fA2DCDuz3QJwIZsWRphbV5QMjPom15c+PCzb114d9GueqKj4UJwZt9z0VpWpEa 37Mn1ChSJKWOrlKyYiIPvNLyk0SgUV28xV2LFXBtMm8oNIDyzXvOCIbG4Oe6gWjtNERB kk2g== X-Gm-Message-State: AO0yUKXisjS+v+WHp0iXJ38OHsdEAoPSCDfJ0EuyCDpef8dgcMIY9pbO HqCQtmAy54MDHQHC8jdwQl0hbePU/AI= X-Google-Smtp-Source: AK7set/QMBACyYSOjZfQmuo8GFL2EoqYqVg1IPvtuNK6pL3QWApg8WZbpekEq90UBGdKTqW/ynLCwQ== X-Received: by 2002:a1c:f718:0:b0:3ed:2ae9:6c75 with SMTP id v24-20020a1cf718000000b003ed2ae96c75mr3307423wmh.37.1679428920174; Tue, 21 Mar 2023 13:02:00 -0700 (PDT) Received: from [192.168.8.108] (netacc-gpn-204-172-116.pool.yettel.hu. [5.204.172.116]) by smtp.gmail.com with ESMTPSA id bi8-20020a05600c3d8800b003dc434b39c7sm3602360wmb.0.2023.03.21.13.01.59 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Mar 2023 13:01:59 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------BgNMqBAAV7o0gSOVQGhZNeef" Message-ID: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> Date: Tue, 21 Mar 2023 21:01:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Content-Language: en-US From: "Herman, Geza" Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=geza.herman@gmail.com; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) This is a multi-part message in MIME format. --------------BgNMqBAAV7o0gSOVQGhZNeef Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Emacs can freeze for seconds when scroll-down-line is called multiple times if the buffer contains a lot of text properties. I noticed this when using lsp-mode for C++. To reproduce the issue without lsp-mode, execute this elisp command with M-:, this will add a face to operators: (font-lock-add-keywords 'c++-mode '(("[][~!^&\|<>:=,.\\+*/%-]" 0 'error))) Also, bind scroll-down-line to a key, like shift-up: (global-set-key (kbd "") 'scroll-down-line) Then, put the attached example.cpp into a c++ buffer, move the point to the bottom, then press and hold shift-up. Emacs will update the window for several scroll events, but after that it won't update the screen for a while. Even after shift-up is released, Emacs needs several seconds to be interactive again. In GNU Emacs 29.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version  3.24.36, cairo version 1.16.0) of 2023-03-21 built on okoska Repository revision: 7a1272168af1a5b82979efa29451147c5d867981 Repository branch: emacs-29 Windowing system distributor 'The X.Org Foundation', version 11.0.12101006 System Description: Debian GNU/Linux bookworm/sid Configured using:  'configure --with-native-compilation=aot --without-compress-install  --with-json --with-xinput2 --with-xwidgets --with-tree-sitter  --with-cairo' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB Important settings:   value of $LC_ALL: C.UTF-8   value of $LANG: en_US.UTF-8   value of $XMODIFIERS: @im=none   locale-coding-system: utf-8-unix Major mode: C++//l Minor modes in effect:   tooltip-mode: t   global-eldoc-mode: t   show-paren-mode: t   electric-indent-mode: t   mouse-wheel-mode: t   tool-bar-mode: t   menu-bar-mode: t   file-name-shadow-mode: t   global-font-lock-mode: t   font-lock-mode: t   blink-cursor-mode: t   line-number-mode: t   indent-tabs-mode: t   transient-mark-mode: t   auto-composition-mode: t   auto-encryption-mode: t   auto-compression-mode: t   abbrev-mode: t Load-path shadows: /home/geza/.emacs.d/elpa/transient-20230304.1149/transient hides /usr/local/share/emacs/29.0.60/lisp/transient Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra help-mode bytecomp byte-compile cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs cl-loaddefs cl-lib info evil-surround-autoloads scad-mode-autoloads qml-mode-autoloads evil-exchange-autoloads evil-args-autoloads cmake-font-lock-autoloads visual-fill-column-autoloads evil-textobj-anyblock-autoloads evil-visualstar-autoloads impatient-mode-autoloads volatile-highlights-autoloads maxima-autoloads evil-cleverparens-autoloads consult-dir-autoloads gnuplot-autoloads helpful-autoloads git-modes-autoloads font-lock-profiler-autoloads paredit-autoloads math-preview-autoloads modern-cpp-font-lock-autoloads column-enforce-mode-autoloads plantuml-mode-autoloads yaml-mode-autoloads magit-todos-autoloads hl-todo-autoloads treemacs-evil-autoloads define-word-autoloads paradox-autoloads highlight-quoted-autoloads rg-autoloads lsp-pyright-autoloads peep-dired-autoloads highlight-numbers-autoloads dired-filter-autoloads fold-this-autoloads eterm-256color-autoloads xterm-color-autoloads rainbow-mode-autoloads evil-org-autoloads evil-mc-autoloads doom-modeline-autoloads hungry-delete-autoloads vterm-autoloads magit-tbdiff-autoloads embark-consult-autoloads literate-calc-mode-autoloads free-keys-autoloads memory-usage-autoloads ccls-autoloads svg-tag-mode-autoloads atomic-chrome-autoloads websocket-autoloads test-simple-autoloads frog-jump-buffer-autoloads frog-menu-autoloads gcmh-autoloads elisp-refs-autoloads evil-textobj-line-autoloads yasnippet-autoloads highlight-doxygen-autoloads vertico-autoloads elfeed-autoloads consult-lsp-autoloads dired-narrow-autoloads highlight-autoloads smeargle-autoloads clean-aindent-mode-autoloads cmake-mode-autoloads string-inflection-autoloads ws-butler-autoloads ov-autoloads gif-screencast-autoloads diredfl-autoloads go-mode-autoloads centered-cursor-mode-autoloads lsp-ui-autoloads camcorder-autoloads easy-mmode org-jira-autoloads ag-autoloads queue-autoloads orderless-autoloads hide-lines-autoloads git-timemachine-autoloads csv-mode-autoloads broadcast-autoloads evil-leader-autoloads hide-mode-line-autoloads company-box-autoloads transpose-frame-autoloads lsp-treemacs-autoloads evil-textobj-entire-autoloads htmlize-autoloads dired-subtree-autoloads dired-hacks-utils-autoloads evil-multiedit-autoloads iedit-autoloads orgit-autoloads evil-textobj-column-autoloads names-autoloads advice wgrep-autoloads ninja-mode-autoloads smartparens-autoloads powerthesaurus-autoloads request-autoloads git-gutter-fringe-autoloads git-gutter-autoloads highlight-indent-guides-autoloads parent-mode-autoloads pcre2el-autoloads rust-mode-autoloads evil-snipe-autoloads fringe-helper-autoloads glsl-mode-autoloads disk-usage-autoloads highlight-symbol-autoloads git-identity-autoloads consult-flycheck-autoloads consult-autoloads shrink-path-autoloads treemacs-projectile-autoloads winum-autoloads svg-lib-autoloads org-superstar-autoloads rmsbolt-autoloads dired-git-info-autoloads all-the-icons-autoloads ob-ipython-autoloads dash-functional-autoloads evil-collection-autoloads annalist-autoloads treemacs-magit-autoloads treemacs-autoloads cfrs-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads demangle-mode-autoloads frame-local-autoloads evil-anzu-autoloads anzu-autoloads evil-indent-plus-autoloads better-jumper-autoloads delight-autoloads company-autoloads projectile-autoloads marginalia-autoloads dumb-jump-autoloads popup-autoloads bm-autoloads vdiff-magit-autoloads vdiff-autoloads hydra-autoloads evil-lion-autoloads evil-autoloads goto-chg-autoloads evil-matchit-autoloads async-autoloads simple-httpd-autoloads lorem-ipsum-autoloads expand-region-autoloads shut-up-autoloads flycheck-autoloads pkg-info-autoloads epl-autoloads page-break-lines-autoloads embark-autoloads which-key-autoloads blamer-autoloads posframe-autoloads git-link-autoloads drag-stuff-autoloads code-review-autoloads emojify-autoloads forge-autoloads yaml-autoloads deferred-autoloads uuidgen-autoloads ghub-autoloads treepy-autoloads a-autoloads magit-autoloads magit-section-autoloads git-commit-autoloads with-editor-autoloads transient-autoloads closql-autoloads emacsql-autoloads compat-autoloads lsp-mode-autoloads lv-autoloads markdown-mode-autoloads spinner-autoloads ht-autoloads f-autoloads s-autoloads dash-autoloads rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads xwidget-internal dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 150387 10063)  (symbols 48 11460 0)  (strings 32 32439 3583)  (string-bytes 1 1406757)  (vectors 16 19041)  (vector-slots 8 386441 14177)  (floats 8 38 102)  (intervals 56 7894 0)  (buffers 984 13)) --------------BgNMqBAAV7o0gSOVQGhZNeef Content-Type: text/x-c++src; charset=UTF-8; name="example.cpp" Content-Disposition: attachment; filename="example.cpp" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPGFycmF5PgoKc3RydWN0IEFmZmluZU1hdHJpeCB7CiAgICBzdGQ6OmFycmF5 PGZsb2F0LCAxMj4gYzsKfTsKCkFmZmluZU1hdHJpeCBmb28oY29uc3QgQWZmaW5lTWF0cml4 ICZhLCBjb25zdCBBZmZpbmVNYXRyaXggJmIpIHsKICAgIEFmZmluZU1hdHJpeCByOwoKICAg IHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAq IGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNb NV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsg YS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1sw XSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNb M107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsg YS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1 XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBi LmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzdd ID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzEx XSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICog Yi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5j WzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBd ID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sx MF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsg YS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIu Y1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0g PSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDld OwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5j WzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAq IGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5j WzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAg IHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAq IGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNb Nl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsg YS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNb IDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIu Y1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVd ICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsg YS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5j WzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBh LmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0 XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBh LmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBd ICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIu Y1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIu Y1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVd ICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIu Y1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0g PSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBd OwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5j WzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBd ICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0g YS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07 CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5j WzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzld ICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9 IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07 CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNb Ml0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICog Yi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1sz XSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAg ci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICog Yi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1 XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBh LmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRd ICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3 XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsg YS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5j WzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhd ICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICBy LmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAq IGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEu Y1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0g KiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5j WzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5j WzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSAr IGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5j WzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9 IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07 CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNb Nl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICog Yi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5j WzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAg ICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEw XSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICog Yi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5j WzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoK ICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1sy XSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBi LmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJd ICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEu Y1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBh LmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRd ICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEu Y1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0g KiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5j WzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5j WzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzld ICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICog Yi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNb MTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIu Y1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzdd ICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAq IGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNb MV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNb IDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsg YS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sx XSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0g YS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsK ICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2 XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBi LmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNd ICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICBy LmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAq IGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5j WzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJd ICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0g YS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0g KyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIu Y1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0g KyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5j WzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAg IHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAq IGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5j WzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAq IGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNb Nl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNb MTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsg YS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5j WzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDld ID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sg OV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsg YS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5j WzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1sw XSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sg OF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBh LmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFd ICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIu Y1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107Cgog ICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZd ICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIu Y1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0g KyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5j WzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEu Y1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRd ICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsg YS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5j WzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAg ICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEw XSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSAr IGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNb MF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAg ci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICog Yi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3 XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICog Yi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1 XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sg OV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBh LmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVd ICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0g YS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07 CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5j WzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzld ICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICog Yi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFd OwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEu Y1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0g KiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5j WzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9 IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0g KyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5j WzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSAr IGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNb NF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAg ci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICog Yi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5j WzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhd ICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICBy LmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAq IGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5j WzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHJldHVybiByOwp9Cg== --------------BgNMqBAAV7o0gSOVQGhZNeef-- From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Mar 2023 20:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: "Herman, Geza" Cc: 62352@debbugs.gnu.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.167943035627610 (code B ref 62352); Tue, 21 Mar 2023 20:26:02 +0000 Received: (at 62352) by debbugs.gnu.org; 21 Mar 2023 20:25:56 +0000 Received: from localhost ([127.0.0.1]:60919 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peiYO-0007BG-G3 for submit@debbugs.gnu.org; Tue, 21 Mar 2023 16:25:56 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58394) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peiYN-0007B3-3I for 62352@debbugs.gnu.org; Tue, 21 Mar 2023 16:25:55 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1peiYH-0007rz-PA; Tue, 21 Mar 2023 16:25:49 -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=nYxMaNe4p8IQhHGzmC29PVEURKnC5skS3lSPp+Quy9o=; b=SOwblzS0zZ+q IloVX6ON8QGbKBUktlRu/UN8lrg6DfKXJmqi/aJ/we6AuSMhoK/aGEpV+fUin32q/KmZcR0TJgUg4 xn1awrWd5lWcBvCHlma787mLcsHmQYFRbwWdtSG/Zppyitlqmx7eRPZ460aAsIumh5eQ2BJw/azBA usbdR0oqtxU6vy5Ig5klYUBsTcRFdoaTcqLY4oS1Ty4JZ4wKpmVfm4eADMhPjGowK1/vb5Nkosggg XgOYhSRJj2ezml/NuckUs18lEPhOgKASIEV4rywMEd4h9jkQbaz9fkC4p7NOqp6Op5z72KUwC6QKv d4xJu6ionkTJRhBzpr701Q==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1peiYH-0001Hd-76; Tue, 21 Mar 2023 16:25:49 -0400 Date: Tue, 21 Mar 2023 22:26:01 +0200 Message-Id: <83355x7sx2.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> (geza.herman@gmail.com) References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Tue, 21 Mar 2023 21:01:58 +0100 > From: "Herman, Geza" > > Emacs can freeze for seconds when scroll-down-line is called multiple > times if the buffer contains a lot of text properties. Not any text properties: 'face' text properties. Right? > To reproduce the issue without lsp-mode, execute this elisp command with > M-:, this will add a face to operators: > > (font-lock-add-keywords 'c++-mode '(("[][~!^&\|<>:=,.\\+*/%-]" 0 'error))) > > Also, bind scroll-down-line to a key, like shift-up: > > (global-set-key (kbd "") 'scroll-down-line) > > Then, put the attached example.cpp into a c++ buffer, move the point to > the bottom, then press and hold shift-up. Emacs will update the window > for several scroll events, but after that it won't update the screen for > a while. Even after shift-up is released, Emacs needs several seconds to > be interactive again. In general, any change in faces causes the display iterator to stop and load the new face, before it continues. They also cause drawing on the screen to be in smaller chunks, since each stretch of characters in the same face is drawn together. And this example basically changes to a new face every character. So this is expected to display slower than usual. However, are you saying that this is slower in Emacs 29 than it was in Emacs 28? If so, bisection will be appreciated. From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Herman, =?UTF-8?Q?G=C3=A9za?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Mar 2023 20:40:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 62352@debbugs.gnu.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.16794311525876 (code B ref 62352); Tue, 21 Mar 2023 20:40:02 +0000 Received: (at 62352) by debbugs.gnu.org; 21 Mar 2023 20:39:12 +0000 Received: from localhost ([127.0.0.1]:60934 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peilE-0001Wh-44 for submit@debbugs.gnu.org; Tue, 21 Mar 2023 16:39:12 -0400 Received: from mail-wm1-f50.google.com ([209.85.128.50]:36517) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peilD-0001WU-0U for 62352@debbugs.gnu.org; Tue, 21 Mar 2023 16:39:11 -0400 Received: by mail-wm1-f50.google.com with SMTP id j18-20020a05600c1c1200b003ee5157346cso478956wms.1 for <62352@debbugs.gnu.org>; Tue, 21 Mar 2023 13:39:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679431145; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=racb5c/3LWLcaMe6xe2cqG16cYp2fy12lDqn/kOPWzA=; b=j8ROrG5500t7oYBRscebomsRe2h9PCvXtfGY9zEYnaw32yDRIgvGRIZVEfafAsdGsQ uWb13UI5GS+8UTMu7kPsl7/57jAfxQfn1DRjCdVyDOKPCJhlIJQauwioZFAThSte9Z7h 2JM0IYRbcg+3IBId+v4C6dj08FcsJIiQjIX64AtHugjhqo9xfIiYXE/EDlssYPM+Q4JZ 7v+dGlvOFFNMEp5i63/G49w9cf29qAHKK8INPv5G4LrvbZdMfdu5XZmNARQr+1T8fp9R qZ6bdSFzzSwbT+mO6LFYP06ebsZj2S5oal1dB8Ym8r2AK7dWM0Ns+VTZq806Myk4CjIY u1hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679431145; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=racb5c/3LWLcaMe6xe2cqG16cYp2fy12lDqn/kOPWzA=; b=ZG2t7R8G7v+y4fWZeiGW+3/APK0IYyQkSPDy44pGFu4bpcPEb6tzS2CiYO6VZFF10o S8Zu6MUVLD/3sc2lQe/y97SL9ltoSSzIJ2PE53PDaIHQlCdEX/xqjGRUPicnscy8nuxD yZxmFuaiDbfmNlD7IgNwvqfQqLxEfisvzYMCHAq/DXEjydvhsrJhuNHfkkxug5Q+TT+3 Ao5sX65H7SzZi+OHvWyi9Rli538StEKokaTblgWN6Ya8iZBzgCYseFJHH9DxjCrplJoZ GcZo2QcSksYVz6x1HlrL/DtSBeYPqf8vYS96qA5VohVoMuRI/eMawpWUdnxHAvY87RSl It5Q== X-Gm-Message-State: AO0yUKVZX3ViTwGvnCXYyBPIJosKhJOoYYIZVcHgQ72+Ic0QdMhF0S/z TInR5wB6cHymAGU0GsOK5oU= X-Google-Smtp-Source: AK7set+xiss/sr6cNAhxST3yBjM5Vomex8zZ65rMzIbETL2w80/0viGxQRnGKqiQRJXfhUB31Ypo6Q== X-Received: by 2002:a05:600c:203:b0:3ee:5a48:5b4b with SMTP id 3-20020a05600c020300b003ee5a485b4bmr11074wmi.8.1679431144762; Tue, 21 Mar 2023 13:39:04 -0700 (PDT) Received: from [192.168.8.4] (netacc-gpn-204-172-116.pool.yettel.hu. [5.204.172.116]) by smtp.gmail.com with ESMTPSA id d17-20020a05600c34d100b003ee443bf0c7sm1942064wmq.16.2023.03.21.13.39.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Mar 2023 13:39:04 -0700 (PDT) Message-ID: <1d181da0-349b-e535-e290-b161ca0723c7@gmail.com> Date: Tue, 21 Mar 2023 21:39:03 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> Content-Language: sv-FI From: Herman, =?UTF-8?Q?G=C3=A9za?= In-Reply-To: <83355x7sx2.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -1.1 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) On 3/21/23 21:26, Eli Zaretskii wrote: >> Date: Tue, 21 Mar 2023 21:01:58 +0100 >> From: "Herman, Geza" >> >> Emacs can freeze for seconds when scroll-down-line is called multiple >> times if the buffer contains a lot of text properties. > Not any text properties: 'face' text properties. Right? Probably, I don't know how to check other properties. > In general, any change in faces causes the display iterator to stop > and load the new face, before it continues. They also cause drawing > on the screen to be in smaller chunks, since each stretch of > characters in the same face is drawn together. And this example > basically changes to a new face every character. So this is expected > to display slower than usual. > > However, are you saying that this is slower in Emacs 29 than it was in > Emacs 28? If so, bisection will be appreciated. I checked this with emacs 28 now, it behaves the same, so it's not a regression. It seems this issue is scroll-down-line specific. I mean, it doesn't happen with the "normal" scrolling (when the point is also moved, not just the window start point). If I set scroll-conservatively to 101 (this way normal scrolling behaves the same as scroll-down-line after the point hits the edge of the window), and move upwards with the cursor key, scrolling is more-or-less OK. It's a little bit erratic, but no freeze happens. From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Gregory Heytings Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Mar 2023 21:59:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 62352@debbugs.gnu.org, "Herman, Geza" Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.167943588923979 (code B ref 62352); Tue, 21 Mar 2023 21:59:02 +0000 Received: (at 62352) by debbugs.gnu.org; 21 Mar 2023 21:58:09 +0000 Received: from localhost ([127.0.0.1]:32839 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pejzc-0006Eg-Tk for submit@debbugs.gnu.org; Tue, 21 Mar 2023 17:58:09 -0400 Received: from heytings.org ([95.142.160.155]:48920) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pejzb-0006EZ-B4 for 62352@debbugs.gnu.org; Tue, 21 Mar 2023 17:58:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1679435885; bh=nT0mcBsaNDlK23pLiRZfOP9zZ6hYs051X4VEmJmoZ4k=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=6RnoKuNk7V21H3KYpoyXsEAvGOB5Nao1cThFUywa56uYjHbME/q4i8MWRhW92WtgP nyk0gYZ91aU3SWNawATtuWwTCU71lw/B+yHnSTd4QK8Xs45Jb5P0EaO6848ZpyB5es 3XD/n1CLOj9ML6neEXW6Oyh2yj7UzccaAX+d/0gGsbGaXrmnwuTCEDqPSuIRBEAjN/ e6PghwFFJFGlLx8Gcx9EzkFExWuu1TXNKQGbdf0w7lrYBw9ilSKc6NmwLA95C+62GO Y5jWsSEb5C7eo7BQ+i5oa2FxZtm2m1rHBFaPbmn3bhAuLSMl/487X8uzWmKQGzuT38 h8+BVwW9l+cnQ== Date: Tue, 21 Mar 2023 21:58:05 +0000 From: Gregory Heytings In-Reply-To: <83355x7sx2.fsf@gnu.org> Message-ID: <08b5f766dd5d453016a7@heytings.org> References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > > However, are you saying that this is slower in Emacs 29 than it was in > Emacs 28? If so, bisection will be appreciated. > FTR, I see the same behavior in Emacs 26, 27, 28 and 29 with that recipe. From unknown Sun Aug 17 22:08:26 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: "Herman, Geza" Subject: bug#62352: closed (Re: bug#62352: Very slow scroll-down-line with a lot of text properties) Message-ID: References: <83sfdtcab8.fsf@gnu.org> <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> X-Gnu-PR-Message: they-closed 62352 X-Gnu-PR-Package: emacs Reply-To: 62352@debbugs.gnu.org Date: Sat, 25 Mar 2023 11:59:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1679745542-15706-1" This is a multi-part message in MIME format... ------------=_1679745542-15706-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #62352: Very slow scroll-down-line with a lot of text properties which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 62352@debbugs.gnu.org. --=20 62352: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D62352 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1679745542-15706-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 62352-done) by debbugs.gnu.org; 25 Mar 2023 11:58:15 +0000 Received: from localhost ([127.0.0.1]:41918 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg2XH-000445-8E for submit@debbugs.gnu.org; Sat, 25 Mar 2023 07:58:15 -0400 Received: from eggs.gnu.org ([209.51.188.92]:52660) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg2XF-00043r-MW for 62352-done@debbugs.gnu.org; Sat, 25 Mar 2023 07:58:14 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg2XA-0002R0-Bg; Sat, 25 Mar 2023 07:58:08 -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=kgjhWlmP9WRQ7ng/qBy1293fBlYOzP8mE/D3nfROugM=; b=rLAS3/xJv9mj PoB2CYwyf0Tm3QdwiaCxzeXtKZqn9Urabpcls+JyW7l8KqPAqwjgDD8qSZsI7ROMCcLEg5QS4ZbLv Lsx5IIogJnLEH4XOYv666becjlfJpiMiGJ7GRPOeoo4gzZWqWfS299D/3EgoFfIWfEa1SOkK+lUEN dX1jQAfogrszmiT7MiZtZ7lvzRzMI7rb4EIIm+C3pwdwi1oRzJeVZ0AXFldMXoHjUcrkHegicbNdr V4bVrwmXypTANwaAMxhOXvKrbTY+jXwkp2sy9P1eVfocHCL3kHvEtxMyCO4fa/5d0dJIGbuLVCybJ VKiGZ+/Z4C/Mrg/z28mpXQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg2X8-0003L4-IT; Sat, 25 Mar 2023 07:58:08 -0400 Date: Sat, 25 Mar 2023 14:58:03 +0300 Message-Id: <83sfdtcab8.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <08b5f766dd5d453016a7@heytings.org> (message from Gregory Heytings on Tue, 21 Mar 2023 21:58:05 +0000) Subject: Re: bug#62352: Very slow scroll-down-line with a lot of text properties References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 62352-done Cc: 62352-done@debbugs.gnu.org, geza.herman@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.9 (--) > Date: Tue, 21 Mar 2023 21:58:05 +0000 > From: Gregory Heytings > cc: "Herman, Geza" , 62352@debbugs.gnu.org > > > However, are you saying that this is slower in Emacs 29 than it was in > > Emacs 28? If so, bisection will be appreciated. > > FTR, I see the same behavior in Emacs 26, 27, 28 and 29 with that recipe. That figures: the relevant code didn't see any significant changes in the recent years. I also think the impression that C-n/C-p (with scroll-conservatively) are free of this problem is inaccurate. They are a bit faster, indeed, but in my unoptimized build I see the scroll taking almost the same time in both cases, close to 1 sec. I think OP's impression is based on where each of these crosses the threshold of Emacs being able to keep up with the repeated keystrokes, and that depends on both the auto-repeat rate and the CPU power, so it is different on different systems. E.g., in an optimized build I see no stuttering with scroll-down-line, either. So I think there's no bug here we need to look into, and I'm therefore closing this bug report. ------------=_1679745542-15706-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 21 Mar 2023 20:02:13 +0000 Received: from localhost ([127.0.0.1]:60876 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peiBQ-0006V2-KA for submit@debbugs.gnu.org; Tue, 21 Mar 2023 16:02:13 -0400 Received: from lists.gnu.org ([209.51.188.17]:59754) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peiBN-0006Uu-Sj for submit@debbugs.gnu.org; Tue, 21 Mar 2023 16:02:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1peiBM-0005my-1f for bug-gnu-emacs@gnu.org; Tue, 21 Mar 2023 16:02:08 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1peiBG-0002I4-Pl for bug-gnu-emacs@gnu.org; Tue, 21 Mar 2023 16:02:06 -0400 Received: by mail-wm1-x32e.google.com with SMTP id o11-20020a05600c4fcb00b003eb33ea29a8so10201408wmq.1 for ; Tue, 21 Mar 2023 13:02:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679428920; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=fqDtfzOQKqLlM9SGKQ4QKme0PTw2bkDjAGwLl6RpcQQ=; b=Y9djeKRjVOr9JWk8IsaxUNcuaeMFmFEFCGx8zEDFeela/CMUZGpcECBgVRWUKE3Eq3 OFp5Jc/GYSMAVNsHkVzAySXQ1UkoTgIexAOCQ0sQ3dKpIb2gVGVLiv48W9StW2A7saXX z//rVcOimQYcWCEN3bHgHYTCguddP8ezx1TfdpTFSyqdjz6n57vdmah/9fBZSJDGhdH+ kJ0nk27flH5KTVLuNdnhY10yk1wI3hQxEUCroysxMU40xhcOH0OsRs21XBSoVUWVjzyW gu5jHlxCwEbuVgqd7Sf5F85vdtBageiL0K1lsKEp87kbhFBA5qmfu5zyUcKXZVZyPYuD IEAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679428920; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fqDtfzOQKqLlM9SGKQ4QKme0PTw2bkDjAGwLl6RpcQQ=; b=6Hflzjkv8b5THnPasRm3d50ylXpOCZV9BzD6zXuDadXvFFcczaM2JHfA64db6dASoJ zG26/4KdLrAOgvO3OkkvDunp3xU4BTg7MkvTuyk55u401sbD8ld8aMHY5es2Z9N7jZMi dF9qvkXEl7RhGdbkZU+RIRAWmCEVbgUx0uSDFLorZ0zVtwQpjlwTT3+AS265irKi/Kcz zT60S8fA2DCDuz3QJwIZsWRphbV5QMjPom15c+PCzb114d9GueqKj4UJwZt9z0VpWpEa 37Mn1ChSJKWOrlKyYiIPvNLyk0SgUV28xV2LFXBtMm8oNIDyzXvOCIbG4Oe6gWjtNERB kk2g== X-Gm-Message-State: AO0yUKXisjS+v+WHp0iXJ38OHsdEAoPSCDfJ0EuyCDpef8dgcMIY9pbO HqCQtmAy54MDHQHC8jdwQl0hbePU/AI= X-Google-Smtp-Source: AK7set/QMBACyYSOjZfQmuo8GFL2EoqYqVg1IPvtuNK6pL3QWApg8WZbpekEq90UBGdKTqW/ynLCwQ== X-Received: by 2002:a1c:f718:0:b0:3ed:2ae9:6c75 with SMTP id v24-20020a1cf718000000b003ed2ae96c75mr3307423wmh.37.1679428920174; Tue, 21 Mar 2023 13:02:00 -0700 (PDT) Received: from [192.168.8.108] (netacc-gpn-204-172-116.pool.yettel.hu. [5.204.172.116]) by smtp.gmail.com with ESMTPSA id bi8-20020a05600c3d8800b003dc434b39c7sm3602360wmb.0.2023.03.21.13.01.59 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Mar 2023 13:01:59 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------BgNMqBAAV7o0gSOVQGhZNeef" Message-ID: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> Date: Tue, 21 Mar 2023 21:01:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Content-Language: en-US To: bug-gnu-emacs@gnu.org From: "Herman, Geza" Subject: Very slow scroll-down-line with a lot of text properties Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=geza.herman@gmail.com; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) This is a multi-part message in MIME format. --------------BgNMqBAAV7o0gSOVQGhZNeef Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Emacs can freeze for seconds when scroll-down-line is called multiple times if the buffer contains a lot of text properties. I noticed this when using lsp-mode for C++. To reproduce the issue without lsp-mode, execute this elisp command with M-:, this will add a face to operators: (font-lock-add-keywords 'c++-mode '(("[][~!^&\|<>:=,.\\+*/%-]" 0 'error))) Also, bind scroll-down-line to a key, like shift-up: (global-set-key (kbd "") 'scroll-down-line) Then, put the attached example.cpp into a c++ buffer, move the point to the bottom, then press and hold shift-up. Emacs will update the window for several scroll events, but after that it won't update the screen for a while. Even after shift-up is released, Emacs needs several seconds to be interactive again. In GNU Emacs 29.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version  3.24.36, cairo version 1.16.0) of 2023-03-21 built on okoska Repository revision: 7a1272168af1a5b82979efa29451147c5d867981 Repository branch: emacs-29 Windowing system distributor 'The X.Org Foundation', version 11.0.12101006 System Description: Debian GNU/Linux bookworm/sid Configured using:  'configure --with-native-compilation=aot --without-compress-install  --with-json --with-xinput2 --with-xwidgets --with-tree-sitter  --with-cairo' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB Important settings:   value of $LC_ALL: C.UTF-8   value of $LANG: en_US.UTF-8   value of $XMODIFIERS: @im=none   locale-coding-system: utf-8-unix Major mode: C++//l Minor modes in effect:   tooltip-mode: t   global-eldoc-mode: t   show-paren-mode: t   electric-indent-mode: t   mouse-wheel-mode: t   tool-bar-mode: t   menu-bar-mode: t   file-name-shadow-mode: t   global-font-lock-mode: t   font-lock-mode: t   blink-cursor-mode: t   line-number-mode: t   indent-tabs-mode: t   transient-mark-mode: t   auto-composition-mode: t   auto-encryption-mode: t   auto-compression-mode: t   abbrev-mode: t Load-path shadows: /home/geza/.emacs.d/elpa/transient-20230304.1149/transient hides /usr/local/share/emacs/29.0.60/lisp/transient Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra help-mode bytecomp byte-compile cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs cl-loaddefs cl-lib info evil-surround-autoloads scad-mode-autoloads qml-mode-autoloads evil-exchange-autoloads evil-args-autoloads cmake-font-lock-autoloads visual-fill-column-autoloads evil-textobj-anyblock-autoloads evil-visualstar-autoloads impatient-mode-autoloads volatile-highlights-autoloads maxima-autoloads evil-cleverparens-autoloads consult-dir-autoloads gnuplot-autoloads helpful-autoloads git-modes-autoloads font-lock-profiler-autoloads paredit-autoloads math-preview-autoloads modern-cpp-font-lock-autoloads column-enforce-mode-autoloads plantuml-mode-autoloads yaml-mode-autoloads magit-todos-autoloads hl-todo-autoloads treemacs-evil-autoloads define-word-autoloads paradox-autoloads highlight-quoted-autoloads rg-autoloads lsp-pyright-autoloads peep-dired-autoloads highlight-numbers-autoloads dired-filter-autoloads fold-this-autoloads eterm-256color-autoloads xterm-color-autoloads rainbow-mode-autoloads evil-org-autoloads evil-mc-autoloads doom-modeline-autoloads hungry-delete-autoloads vterm-autoloads magit-tbdiff-autoloads embark-consult-autoloads literate-calc-mode-autoloads free-keys-autoloads memory-usage-autoloads ccls-autoloads svg-tag-mode-autoloads atomic-chrome-autoloads websocket-autoloads test-simple-autoloads frog-jump-buffer-autoloads frog-menu-autoloads gcmh-autoloads elisp-refs-autoloads evil-textobj-line-autoloads yasnippet-autoloads highlight-doxygen-autoloads vertico-autoloads elfeed-autoloads consult-lsp-autoloads dired-narrow-autoloads highlight-autoloads smeargle-autoloads clean-aindent-mode-autoloads cmake-mode-autoloads string-inflection-autoloads ws-butler-autoloads ov-autoloads gif-screencast-autoloads diredfl-autoloads go-mode-autoloads centered-cursor-mode-autoloads lsp-ui-autoloads camcorder-autoloads easy-mmode org-jira-autoloads ag-autoloads queue-autoloads orderless-autoloads hide-lines-autoloads git-timemachine-autoloads csv-mode-autoloads broadcast-autoloads evil-leader-autoloads hide-mode-line-autoloads company-box-autoloads transpose-frame-autoloads lsp-treemacs-autoloads evil-textobj-entire-autoloads htmlize-autoloads dired-subtree-autoloads dired-hacks-utils-autoloads evil-multiedit-autoloads iedit-autoloads orgit-autoloads evil-textobj-column-autoloads names-autoloads advice wgrep-autoloads ninja-mode-autoloads smartparens-autoloads powerthesaurus-autoloads request-autoloads git-gutter-fringe-autoloads git-gutter-autoloads highlight-indent-guides-autoloads parent-mode-autoloads pcre2el-autoloads rust-mode-autoloads evil-snipe-autoloads fringe-helper-autoloads glsl-mode-autoloads disk-usage-autoloads highlight-symbol-autoloads git-identity-autoloads consult-flycheck-autoloads consult-autoloads shrink-path-autoloads treemacs-projectile-autoloads winum-autoloads svg-lib-autoloads org-superstar-autoloads rmsbolt-autoloads dired-git-info-autoloads all-the-icons-autoloads ob-ipython-autoloads dash-functional-autoloads evil-collection-autoloads annalist-autoloads treemacs-magit-autoloads treemacs-autoloads cfrs-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads demangle-mode-autoloads frame-local-autoloads evil-anzu-autoloads anzu-autoloads evil-indent-plus-autoloads better-jumper-autoloads delight-autoloads company-autoloads projectile-autoloads marginalia-autoloads dumb-jump-autoloads popup-autoloads bm-autoloads vdiff-magit-autoloads vdiff-autoloads hydra-autoloads evil-lion-autoloads evil-autoloads goto-chg-autoloads evil-matchit-autoloads async-autoloads simple-httpd-autoloads lorem-ipsum-autoloads expand-region-autoloads shut-up-autoloads flycheck-autoloads pkg-info-autoloads epl-autoloads page-break-lines-autoloads embark-autoloads which-key-autoloads blamer-autoloads posframe-autoloads git-link-autoloads drag-stuff-autoloads code-review-autoloads emojify-autoloads forge-autoloads yaml-autoloads deferred-autoloads uuidgen-autoloads ghub-autoloads treepy-autoloads a-autoloads magit-autoloads magit-section-autoloads git-commit-autoloads with-editor-autoloads transient-autoloads closql-autoloads emacsql-autoloads compat-autoloads lsp-mode-autoloads lv-autoloads markdown-mode-autoloads spinner-autoloads ht-autoloads f-autoloads s-autoloads dash-autoloads rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads xwidget-internal dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 150387 10063)  (symbols 48 11460 0)  (strings 32 32439 3583)  (string-bytes 1 1406757)  (vectors 16 19041)  (vector-slots 8 386441 14177)  (floats 8 38 102)  (intervals 56 7894 0)  (buffers 984 13)) --------------BgNMqBAAV7o0gSOVQGhZNeef Content-Type: text/x-c++src; charset=UTF-8; name="example.cpp" Content-Disposition: attachment; filename="example.cpp" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPGFycmF5PgoKc3RydWN0IEFmZmluZU1hdHJpeCB7CiAgICBzdGQ6OmFycmF5 PGZsb2F0LCAxMj4gYzsKfTsKCkFmZmluZU1hdHJpeCBmb28oY29uc3QgQWZmaW5lTWF0cml4 ICZhLCBjb25zdCBBZmZpbmVNYXRyaXggJmIpIHsKICAgIEFmZmluZU1hdHJpeCByOwoKICAg IHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAq IGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNb NV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsg YS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1sw XSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNb M107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsg YS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1 XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBi LmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzdd ID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzEx XSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICog Yi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5j WzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBd ID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sx MF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsg YS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIu Y1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0g PSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDld OwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5j WzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAq IGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5j WzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAg IHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAq IGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNb Nl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsg YS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNb IDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIu Y1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVd ICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsg YS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5j WzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBh LmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0 XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBh LmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBd ICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIu Y1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIu Y1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVd ICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIu Y1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0g PSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBd OwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5j WzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBd ICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0g YS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07 CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5j WzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzld ICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9 IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07 CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNb Ml0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICog Yi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1sz XSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAg ci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICog Yi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1 XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBh LmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRd ICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3 XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsg YS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5j WzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhd ICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICBy LmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAq IGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEu Y1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0g KiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5j WzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5j WzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSAr IGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5j WzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9 IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07 CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNb Nl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICog Yi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5j WzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAg ICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEw XSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICog Yi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5j WzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoK ICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1sy XSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBi LmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJd ICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEu Y1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBh LmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRd ICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEu Y1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0g KiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5j WzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5j WzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzld ICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICog Yi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNb MTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIu Y1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzdd ICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAq IGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNb MV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNb IDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsg YS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sx XSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0g YS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsK ICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2 XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBi LmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNd ICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICBy LmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAq IGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5j WzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJd ICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0g YS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0g KyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIu Y1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0g KyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5j WzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAg IHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAq IGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5j WzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAq IGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNb Nl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNb MTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsg YS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5j WzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDld ID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sg OV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsg YS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5j WzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1sw XSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sg OF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBh LmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFd ICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIu Y1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107Cgog ICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZd ICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIu Y1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0g KyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5j WzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEu Y1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRd ICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsg YS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5j WzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAg ICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEw XSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSAr IGEuY1sxXSAqIGIuY1s0XSArIGEuY1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNb MF0gKiBiLmNbMV0gKyBhLmNbMV0gKiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAg ci5jWzJdID0gYS5jWzBdICogYi5jWzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICog Yi5jWzEwXTsKICAgIHIuY1szXSA9IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3 XSArIGEuY1syXSAqIGIuY1sxMV0gKyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICog Yi5jWzBdICsgYS5jWzVdICogYi5jWzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1 XSA9IGEuY1s0XSAqIGIuY1sxXSArIGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sg OV07CiAgICByLmNbNl0gPSBhLmNbNF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBh LmNbNl0gKiBiLmNbMTBdOwogICAgci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVd ICogYi5jWzddICsgYS5jWzZdICogYi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0g YS5jWzhdICogYi5jWzBdICsgYS5jWzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07 CiAgICByLmNbIDldID0gYS5jWzhdICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5j WzEwXSAqIGIuY1sgOV07CiAgICByLmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzld ICogYi5jWzZdICsgYS5jWzEwXSAqIGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICog Yi5jWzNdICsgYS5jWzldICogYi5jWzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFd OwoKICAgIHIuY1swXSA9IGEuY1swXSAqIGIuY1swXSArIGEuY1sxXSAqIGIuY1s0XSArIGEu Y1syXSAqIGIuY1sgOF07CiAgICByLmNbMV0gPSBhLmNbMF0gKiBiLmNbMV0gKyBhLmNbMV0g KiBiLmNbNV0gKyBhLmNbMl0gKiBiLmNbIDldOwogICAgci5jWzJdID0gYS5jWzBdICogYi5j WzJdICsgYS5jWzFdICogYi5jWzZdICsgYS5jWzJdICogYi5jWzEwXTsKICAgIHIuY1szXSA9 IGEuY1swXSAqIGIuY1szXSArIGEuY1sxXSAqIGIuY1s3XSArIGEuY1syXSAqIGIuY1sxMV0g KyBhLmNbM107CgogICAgci5jWzRdID0gYS5jWzRdICogYi5jWzBdICsgYS5jWzVdICogYi5j WzRdICsgYS5jWzZdICogYi5jWyA4XTsKICAgIHIuY1s1XSA9IGEuY1s0XSAqIGIuY1sxXSAr IGEuY1s1XSAqIGIuY1s1XSArIGEuY1s2XSAqIGIuY1sgOV07CiAgICByLmNbNl0gPSBhLmNb NF0gKiBiLmNbMl0gKyBhLmNbNV0gKiBiLmNbNl0gKyBhLmNbNl0gKiBiLmNbMTBdOwogICAg ci5jWzddID0gYS5jWzRdICogYi5jWzNdICsgYS5jWzVdICogYi5jWzddICsgYS5jWzZdICog Yi5jWzExXSArIGEuY1s3XTsKCiAgICByLmNbIDhdID0gYS5jWzhdICogYi5jWzBdICsgYS5j WzldICogYi5jWzRdICsgYS5jWzEwXSAqIGIuY1sgOF07CiAgICByLmNbIDldID0gYS5jWzhd ICogYi5jWzFdICsgYS5jWzldICogYi5jWzVdICsgYS5jWzEwXSAqIGIuY1sgOV07CiAgICBy LmNbMTBdID0gYS5jWzhdICogYi5jWzJdICsgYS5jWzldICogYi5jWzZdICsgYS5jWzEwXSAq IGIuY1sxMF07CiAgICByLmNbMTFdID0gYS5jWzhdICogYi5jWzNdICsgYS5jWzldICogYi5j WzddICsgYS5jWzEwXSAqIGIuY1sxMV0gKyBhLmNbMTFdOwoKICAgIHJldHVybiByOwp9Cg== --------------BgNMqBAAV7o0gSOVQGhZNeef-- ------------=_1679745542-15706-1-- From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Herman, =?UTF-8?Q?G=C3=A9za?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Mar 2023 12:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii , Gregory Heytings Cc: 62352-done@debbugs.gnu.org Received: via spool by 62352-done@debbugs.gnu.org id=D62352.167974764919705 (code D ref 62352); Sat, 25 Mar 2023 12:35:02 +0000 Received: (at 62352-done) by debbugs.gnu.org; 25 Mar 2023 12:34:09 +0000 Received: from localhost ([127.0.0.1]:42054 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg35x-00057g-R2 for submit@debbugs.gnu.org; Sat, 25 Mar 2023 08:34:09 -0400 Received: from mail-ed1-f53.google.com ([209.85.208.53]:34541) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg35s-00057A-I8 for 62352-done@debbugs.gnu.org; Sat, 25 Mar 2023 08:34:04 -0400 Received: by mail-ed1-f53.google.com with SMTP id b20so17996305edd.1 for <62352-done@debbugs.gnu.org>; Sat, 25 Mar 2023 05:34:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679747634; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=q+NkO59i0NEEby/EA5PxSCuNijBFmgz0Tlaj4jHPjgM=; b=qvE24uMsJbYOctOVzau5OxGuMEecThEMNxqfBiiLMdF2MDIa/Y5KjMluHytSPZ2fAU ybXe66dwrj+u9N8kL1dNVi5gZj+UlVOgG0WJyx3B0cy3hhwMXddiRhEuyGd9Dshd1hYQ CmU89t2uiGfZKGOncKxYMidkB8O0U3WLdupMBAnmjPYEPq0s3GA7gU2s07ZfZdcg9CZ0 alBVFHNZM/YBu+i8qEWPE1iFkzhYQmcqRbHUGWhwP7DZY5mSnfkTTCzTaXznNdrIPrP4 ElXYZGYenler64MkYTzvziEbJslcRbzuUIBtKeeaC48z74gdvEQGlFLcUcfcAmO9YFGi ogVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679747634; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=q+NkO59i0NEEby/EA5PxSCuNijBFmgz0Tlaj4jHPjgM=; b=O3v3f6fM6XBtxJ9qCyovP6te9OlLO/+t+vys14CYxXnU3T32xaTC3M0qKBB5xdDut5 0LCFpF4HdTbC5iU5jVNvivpQKljgBAMRNW3UP0C9RVzaPa40l0kcnc/p03TUnAKrh/vV NaTZIQyisi4OX+a2VYVhCyMn4moBz5y7MkSyKC0ooXAFPurJ69nplBuyw85aFoaNihj+ Y7Knw1rZc9wIu873oJpP3PGFPldz/Xws4yx3YOSutVJvTYy6qLy4l80OUog20LUbDUMa rbvf9788VmK9bv7HJiNTvMswhgPbX9/UoF+OQLx0hbafxdygtnWXpaTlmragMrNOSTo7 +73Q== X-Gm-Message-State: AAQBX9dHdSh84SjPzCdOMvl4Fc9BwYVW3X+tdkI9kIHRSQKGip/L/QZV nvRRx1PiWe6M3uvUuTLkAfg= X-Google-Smtp-Source: AKy350ZAMt3006wUPeKrPTRU7yLCqAOOZN+FP6KjPMHMH8GoV0XBeK8eyyfeKeA9b2frTj+1kiLOdw== X-Received: by 2002:a17:906:e112:b0:933:1b05:8851 with SMTP id gj18-20020a170906e11200b009331b058851mr5670205ejb.16.1679747634526; Sat, 25 Mar 2023 05:33:54 -0700 (PDT) Received: from [192.168.8.4] (netacc-gpn-204-88-167.pool.yettel.hu. [5.204.88.167]) by smtp.gmail.com with ESMTPSA id x92-20020a50bae5000000b004fa19f5ba99sm12245736ede.79.2023.03.25.05.33.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 25 Mar 2023 05:33:54 -0700 (PDT) Message-ID: Date: Sat, 25 Mar 2023 13:33:53 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Content-Language: sv-FI References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> From: Herman, =?UTF-8?Q?G=C3=A9za?= In-Reply-To: <83sfdtcab8.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -1.1 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) There is a behavior difference. I'm not sure what the exact reason is, but the two different scrolls behave differently. With a more complex case (~250 lines, each line is 150 characters long), I can scroll "normally" from the bottom to the top in ~5 seconds (with scroll-conservatively=101). The scrolling stutters. If I disable font-lock, it won't get any faster, still ~5 seconds (but fluid). With scroll-down-line, emacs freezes for 40 seconds, and when it unfreezes, it didn't even reach the top. I analyzed the issue little bit, the root cause of the slowdown is composition handling (yet the composition feature is completely unused by this example). If I comment out these lines in composition_compute_stop_pos(), emacs works better ("normal" scrolling becomes completely fluid, scroll-down-line still freezes, but for a much shorter time):   /* if (charpos < endpos */   /*     && find_composition (charpos, endpos, &start, &end, &prop, string) */   /*     && start >= charpos */   /*     && composition_valid_p (start, end, prop)) */   /*   { */   /*     cmp_it->stop_pos = endpos = start; */   /*     cmp_it->ch = -1; */   /*   } */ It seems that emacs does a huge amount of redundant work by scanning approximately the same area over and over again for composition properties. I'm not sure how it is possible that you don't see any stuttering with scroll-down-line. On my system it freezes for seconds with my original example (and others can also reproduce it). On 3/25/23 12:58, Eli Zaretskii wrote: >> Date: Tue, 21 Mar 2023 21:58:05 +0000 >> From: Gregory Heytings >> cc: "Herman, Geza" , 62352@debbugs.gnu.org >> >>> However, are you saying that this is slower in Emacs 29 than it was in >>> Emacs 28? If so, bisection will be appreciated. >> FTR, I see the same behavior in Emacs 26, 27, 28 and 29 with that recipe. > That figures: the relevant code didn't see any significant changes in > the recent years. > > I also think the impression that C-n/C-p (with scroll-conservatively) > are free of this problem is inaccurate. They are a bit faster, > indeed, but in my unoptimized build I see the scroll taking almost the > same time in both cases, close to 1 sec. I think OP's impression is > based on where each of these crosses the threshold of Emacs being able > to keep up with the repeated keystrokes, and that depends on both the > auto-repeat rate and the CPU power, so it is different on different > systems. E.g., in an optimized build I see no stuttering with > scroll-down-line, either. > > So I think there's no bug here we need to look into, and I'm therefore > closing this bug report. From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Mar 2023 12:43:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: geza.herman@gmail.com Cc: gregory@heytings.org, 62352-done@debbugs.gnu.org Received: via spool by 62352-done@debbugs.gnu.org id=D62352.167974817320640 (code D ref 62352); Sat, 25 Mar 2023 12:43:01 +0000 Received: (at 62352-done) by debbugs.gnu.org; 25 Mar 2023 12:42:53 +0000 Received: from localhost ([127.0.0.1]:42092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg3EL-0005Me-LC for submit@debbugs.gnu.org; Sat, 25 Mar 2023 08:42:52 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49520) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg3EC-0005MF-D9 for 62352-done@debbugs.gnu.org; Sat, 25 Mar 2023 08:42:44 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg3E4-0000EN-9E; Sat, 25 Mar 2023 08:42: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=O/6e4YSmfoQqwxjcc6Ms/g0sCKs2by4ZVtadg01rHhM=; b=DqWxW2dAf+3yLVJaCdbq WUQpPzXbOrramNfxKSp2OlcsHS21vhCCe+RLCUzeHji67KmUAYcdfP1hzmgqcGMNHQRsKd+SkWj1o 3qXKc9Qx0hSiZvo3c2nzvBWIGtRclVzVJX2T2cY5k4hIbuHHWedFhW2P5XM3Kyl9BLSvqQer+ZIMi W9OC6Tf3Jl0IjFqRJol2M5VSK7TjUOoSTxAKdeDwv1ZdDDFLVj5jac19LZJwYNf0adqZuYeMGK/HQ WUqp4FEoLWmvC1Vkx7i8Un+FZVOYlzVtHfTRI/nqkjv2HlfaVZ/3gZSzkm2tP6Qm4FmllcytzsiL0 6l24x6VAqaOXkg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg3Dz-00019o-Hy; Sat, 25 Mar 2023 08:42:23 -0400 Date: Sat, 25 Mar 2023 15:42:20 +0300 Message-Id: <83h6u9c89f.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Herman, =?UTF-8?Q?G=C3=A9za?= on Sat, 25 Mar 2023 13:33:53 +0100) References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 25 Mar 2023 13:33:53 +0100 > Cc: 62352-done@debbugs.gnu.org > From: Herman, Géza > > There is a behavior difference. I'm not sure what the exact reason is, > but the two different scrolls behave differently. > > With a more complex case (~250 lines, each line is 150 characters long), > I can scroll "normally" from the bottom to the top in ~5 seconds (with > scroll-conservatively=101). The scrolling stutters. If I disable > font-lock, it won't get any faster, still ~5 seconds (but fluid). Like I said: the threshold where it starts stuttering depends on many local factors. Basically, the code does a very similar job, except that in one case it needs to determine the window's starting position, while in the other it doesn't (so the jobs the code does are somewhat different). > I analyzed the issue little bit, the root cause of the slowdown is > composition handling (yet the composition feature is completely unused > by this example). > > If I comment out these lines in composition_compute_stop_pos(), emacs > works better ("normal" scrolling becomes completely fluid, > scroll-down-line still freezes, but for a much shorter time): > >   /* if (charpos < endpos */ >   /*     && find_composition (charpos, endpos, &start, &end, &prop, > string) */ >   /*     && start >= charpos */ >   /*     && composition_valid_p (start, end, prop)) */ >   /*   { */ >   /*     cmp_it->stop_pos = endpos = start; */ >   /*     cmp_it->ch = -1; */ >   /*   } */ > > It seems that emacs does a huge amount of redundant work by scanning > approximately the same area over and over again for composition properties. This is a non-starter, unfortunately: the display engine _must_ support character composition, or else some scripts will display incorrectly, and some features (like prettify-symbols-mode) will stop working. If you never need to display scripts which require character composition, turn off auto-composition-mode in your local configuration (but then expect incorrect display with some characters). > I'm not sure how it is possible that you don't see any stuttering with > scroll-down-line. On my system it freezes for seconds with my original > example (and others can also reproduce it). Get a faster computer, or make your keyboard auto-repeat rate lower? From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Herman, =?UTF-8?Q?G=C3=A9za?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Mar 2023 13:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: gregory@heytings.org, 62352-done@debbugs.gnu.org Received: via spool by 62352-done@debbugs.gnu.org id=D62352.167975167426933 (code D ref 62352); Sat, 25 Mar 2023 13:42:02 +0000 Received: (at 62352-done) by debbugs.gnu.org; 25 Mar 2023 13:41:14 +0000 Received: from localhost ([127.0.0.1]:42193 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg48w-00070L-Eq for submit@debbugs.gnu.org; Sat, 25 Mar 2023 09:41:14 -0400 Received: from mail-ed1-f46.google.com ([209.85.208.46]:39466) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg48t-000707-T6 for 62352-done@debbugs.gnu.org; Sat, 25 Mar 2023 09:41:12 -0400 Received: by mail-ed1-f46.google.com with SMTP id ek18so18370025edb.6 for <62352-done@debbugs.gnu.org>; Sat, 25 Mar 2023 06:41:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679751666; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=ZUoyXjsZESf3UOS81x+MtlvIjcUTWxnghMXTyk6gaY8=; b=os7Sv1GmglT3f8T6F/VCGRXrSaH68pD8sCeKGQyM0P585y9wX7TYw1EyBgxo4Bbd/d ctO14It2DB2WCcjoocki9X6gfq27PYtjr/fnHnjFqoBem7n8SXOaivYQQluPVivi6pax p9x5gxT0mFDsDglvTuqN43gGjK0BH6Z6wEH4eAV+y2NwYAUrv7eTbTFs0WbQPqMWowWw 5FfGiJE98M2vTTX+eqY+WlQvSKUCjmF/J69uWBX+iMQn9k4Q7nkMessbhBO06jdNqhn0 BbGcw7oMh7k55cXwnqk7Gt7poBUbnoB/I8ZxqJIlf1UK2dkaHH94BLboRW+LmiYFOUNe iYnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679751666; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ZUoyXjsZESf3UOS81x+MtlvIjcUTWxnghMXTyk6gaY8=; b=M50Nq/u5J3ZDdR2IMHJbKOxslZhbhQKqQFF9KxlMyxNV4gcyXnjedGJGdtqMqVJxDv zb1tJ5inYuf65uxzoa3GjDpMKlxCkC8iq8jK/PbAgDmXP5Eg5yOHhfMDHW+lT1Mn35F5 /sVWEeIGKxITrsO1tg99oN+5nbObyYLrfrJv2UxveIj8FqcnTvumg9FlmikvXnM9jZLt Ts1HHnNHLbhY4aG58nFP3Zod4dIrYG+lo6J4QjsgXKZSHd1q6anclhH324UNt0cKBE7o 8dhxQIo2jWTuOzRaguzwzL6GMg8CJBHgeFo6UTF9ky9bPQhfecTwFYd0Fw6OBM+Ai/aA 9nRw== X-Gm-Message-State: AAQBX9eDqNM2xBikqj3cOLUKa1+fVDWixgjifr292+Y1IQehyEJMaz2y ORHrjcS1mOZG39C91OOXd+E= X-Google-Smtp-Source: AKy350b6KxD7zRiJRRb0Ba/NBZY06hjaXCWyf4FmPy+Okv0NA/EfPgoa7MoNwVMmeJz1VxqPlcO2XQ== X-Received: by 2002:a05:6402:4c:b0:4c0:1120:a15d with SMTP id f12-20020a056402004c00b004c01120a15dmr5980973edu.5.1679751665785; Sat, 25 Mar 2023 06:41:05 -0700 (PDT) Received: from [192.168.8.4] (netacc-gpn-204-88-167.pool.yettel.hu. [5.204.88.167]) by smtp.gmail.com with ESMTPSA id r12-20020a50c00c000000b00501d2f10d19sm7830492edb.20.2023.03.25.06.41.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 25 Mar 2023 06:41:05 -0700 (PDT) Message-ID: Date: Sat, 25 Mar 2023 14:41:04 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Content-Language: sv-FI References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> <83h6u9c89f.fsf@gnu.org> From: Herman, =?UTF-8?Q?G=C3=A9za?= In-Reply-To: <83h6u9c89f.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -1.1 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) On 3/25/23 13:42, Eli Zaretskii wrote: >> I analyzed the issue little bit, the root cause of the slowdown is >> composition handling (yet the composition feature is completely unused >> by this example). >> >> If I comment out these lines in composition_compute_stop_pos(), emacs >> works better ("normal" scrolling becomes completely fluid, >> scroll-down-line still freezes, but for a much shorter time): >> >>   /* if (charpos < endpos */ >>   /*     && find_composition (charpos, endpos, &start, &end, &prop, >> string) */ >>   /*     && start >= charpos */ >>   /*     && composition_valid_p (start, end, prop)) */ >>   /*   { */ >>   /*     cmp_it->stop_pos = endpos = start; */ >>   /*     cmp_it->ch = -1; */ >>   /*   } */ >> >> It seems that emacs does a huge amount of redundant work by scanning >> approximately the same area over and over again for composition properties. > This is a non-starter, unfortunately: the display engine _must_ > support character composition, or else some scripts will display > incorrectly, and some features (like prettify-symbols-mode) will stop > working. I'm not saying that this is the solution. I just wanted to point out that emacs does unnecessary work. Note, even with this code commented out, composition still seems to work. Maybe it's buggy, of course. But the point is, it seems possible to fix this performance issue. Maybe it's a lot of work and it doesn't worth it. I understand that if this issue is closed because of this. But saying that this issue is not a (performance) bug is not correct, in my opinion. It is not unreasonable to expect that my example file can be scrolled without any problem. > Get a faster computer, or make your keyboard auto-repeat rate lower? Maybe there is a 2x single-thread performance factor between my computer and a current fast consumer desktop PC. It is highly unlikely that getting a faster computer will solve this problem. From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Mar 2023 14:03:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Herman, =?UTF-8?Q?G=C3=A9za?= Cc: 62352@debbugs.gnu.org, gregory@heytings.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.167975294230038 (code B ref 62352); Sat, 25 Mar 2023 14:03:01 +0000 Received: (at 62352) by debbugs.gnu.org; 25 Mar 2023 14:02:22 +0000 Received: from localhost ([127.0.0.1]:43121 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg4TO-0007oP-81 for submit@debbugs.gnu.org; Sat, 25 Mar 2023 10:02:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39978) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg4TL-0007oB-V3 for 62352@debbugs.gnu.org; Sat, 25 Mar 2023 10:02:21 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg4TG-0004f8-FP; Sat, 25 Mar 2023 10:02:14 -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=4lL9zPLhd3M7DkiFcIV57vuj7Md2PSTcGNtwMeLtLys=; b=Hq70DcBZ8RHLeKLTG2ZL wlgba3FMJia8LIKYidayIH9ZHdG/gDMNJmxyNJIBv+kKAzyV4wSkzAWP72zhAy/Abc1/J9alBC3jv 319WkHHVCQiIBC7ZGNVXNxydXgrZUSx834cZc40FYhUtu5FpnHGwRJtTx2tHt/aAztOz2nOaawJW5 jgdmQBiz++Lj7u9+Y77C+VwbM1tlfyhCTp2FpAVyRLTIwrNYqqeV2SAlCsMvnKGkZ34Iw80GPwmI6 D/CLwykFlbQgvEJndyR9KBBH1B9/R6ujWGx22O989eUs50v5NF8f5QVpCPLDCLc90xyaQNqIhsKZI UudLi6Z1bQHqxQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg4TF-00086x-Tx; Sat, 25 Mar 2023 10:02:14 -0400 Date: Sat, 25 Mar 2023 17:02:12 +0300 Message-Id: <834jq9c4kb.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Herman, =?UTF-8?Q?G=C3=A9za?= on Sat, 25 Mar 2023 14:41:04 +0100) References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> <83h6u9c89f.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 25 Mar 2023 14:41:04 +0100 > Cc: gregory@heytings.org, 62352-done@debbugs.gnu.org > From: Herman, Géza > > >> If I comment out these lines in composition_compute_stop_pos(), emacs > >> works better ("normal" scrolling becomes completely fluid, > >> scroll-down-line still freezes, but for a much shorter time): > >> > >>   /* if (charpos < endpos */ > >>   /*     && find_composition (charpos, endpos, &start, &end, &prop, > >> string) */ > >>   /*     && start >= charpos */ > >>   /*     && composition_valid_p (start, end, prop)) */ > >>   /*   { */ > >>   /*     cmp_it->stop_pos = endpos = start; */ > >>   /*     cmp_it->ch = -1; */ > >>   /*   } */ > >> > >> It seems that emacs does a huge amount of redundant work by scanning > >> approximately the same area over and over again for composition properties. > > This is a non-starter, unfortunately: the display engine _must_ > > support character composition, or else some scripts will display > > incorrectly, and some features (like prettify-symbols-mode) will stop > > working. > I'm not saying that this is the solution. I just wanted to point out > that emacs does unnecessary work. How can Emacs know that this is "unnecessary work"? You cannot know if the buffer contains any composable characters unless you search for them and fail to find them. > Note, even with this code commented > out, composition still seems to work. Maybe it's buggy, of course. If you comment out the call to find_composition, prettify-symbols-mode will stop working, and likewise any other features that use the 'composition' text property. > But the point is, it seems possible to fix this performance issue. yes, it is possible to make the Emacs display faster by removing some of the features it provides. But that is hardly the right way of "fixing" performance problems. > But saying that this issue is not a (performance) bug is not > correct, in my opinion. That's not what I said, though. > > Get a faster computer, or make your keyboard auto-repeat rate lower? > Maybe there is a 2x single-thread performance factor between my computer > and a current fast consumer desktop PC. It is highly unlikely that > getting a faster computer will solve this problem. My computer is a 10-year old machine. From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Herman, =?UTF-8?Q?G=C3=A9za?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Mar 2023 15:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 62352@debbugs.gnu.org, gregory@heytings.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.16797579106076 (code B ref 62352); Sat, 25 Mar 2023 15:26:02 +0000 Received: (at 62352) by debbugs.gnu.org; 25 Mar 2023 15:25:10 +0000 Received: from localhost ([127.0.0.1]:43245 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg5lT-0001Zr-JS for submit@debbugs.gnu.org; Sat, 25 Mar 2023 11:25:10 -0400 Received: from mail-ed1-f47.google.com ([209.85.208.47]:35783) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg5lK-0001Z2-Pd for 62352@debbugs.gnu.org; Sat, 25 Mar 2023 11:25:01 -0400 Received: by mail-ed1-f47.google.com with SMTP id y4so19182457edo.2 for <62352@debbugs.gnu.org>; Sat, 25 Mar 2023 08:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679757893; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=JAqlatj7c1/Fkx+T3lu773hLXqrCkFxi0FE8f6syQag=; b=T2gSlH680N7Fj0aalLpA6OgX47ftHDU20hfobrW4UxnODTWAJ6+JqYq6AvCUBJ3BsI KlUEUuTmmO9FBUNRIew0vti86M6mXxv4W72YsrCCmWcGAl7K/POmaJK8UyA2RKApdcvp GTsCeCpkObEvFh9uTbwnRJseeRrwDllCfsONugzpR9nk+cImKIIC86pVqIRNvwasxc/t s1UPE2Zorp50PWS1AYBordc/uRcGBrXIEol25F+yldKKQfRSZfIEtzg5TmT3+4tW4gJZ rwwrsuZ2W+klPAwnJ1Wo1H9EzBF4Vor8zfsfPszuVBHPxOHRx4tThB4BjDTWhL9LP/Pi nRyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679757893; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=JAqlatj7c1/Fkx+T3lu773hLXqrCkFxi0FE8f6syQag=; b=Tpw2TFE0oXPqnmxWIIBWytp2Y3QJIgBUUL8F8y5asOTv1paRjBqWLr6gMTLb3v2dZK JeD6fOU6l4VGBtPacnnYCRUiJwaPU6Mvldw8ieHJ7HrDaJ+yoQLS0xMzWu97Isx/AkNB skxP3c4yp90M0Y3pAUy0b9xpCNgxmMSKsNcZ8CnN65xxpph7mHu+8/ofzZVS9vxIzOLe fPruJ4k3KY/lhwHAutDVvoqovSY0I82/jg46o5auI3Ri7sr+A9prGNqFw53b9x10MmkC JJshTbq8NuqabjEIUb6yoK00ULWbWNHDJgW+JPW355CL+4ag5cVyNJwMbaSKB3TCf7/E A+zA== X-Gm-Message-State: AAQBX9cJ76aziKWr0Ed8Y/vEUF1+zW8cUmuSsQVu8YRo55Yu1gO148lh itHbU+EWwnGr6dCxlvZCcww= X-Google-Smtp-Source: AKy350b54MtimyS7i69igF2WETyCh43ks6orwE8kYRJE/5+xqVE4E1IbEjZhSxGjiTB3UegCUUhWQg== X-Received: by 2002:a17:906:4805:b0:92b:3c78:91fa with SMTP id w5-20020a170906480500b0092b3c7891famr6093973ejq.28.1679757892621; Sat, 25 Mar 2023 08:24:52 -0700 (PDT) Received: from [192.168.8.4] (netacc-gpn-204-88-167.pool.yettel.hu. [5.204.88.167]) by smtp.gmail.com with ESMTPSA id ot9-20020a170906ccc900b009331450d04esm10854723ejb.178.2023.03.25.08.24.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 25 Mar 2023 08:24:52 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------200Z0tMNsudk5uhI73nbm3tS" Message-ID: Date: Sat, 25 Mar 2023 16:24:50 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Content-Language: sv-FI References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> <83h6u9c89f.fsf@gnu.org> <834jq9c4kb.fsf@gnu.org> From: Herman, =?UTF-8?Q?G=C3=A9za?= In-Reply-To: <834jq9c4kb.fsf@gnu.org> X-Spam-Score: -1.1 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) This is a multi-part message in MIME format. --------------200Z0tMNsudk5uhI73nbm3tS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 3/25/23 15:02, Eli Zaretskii wrote: >> >> I'm not saying that this is the solution. I just wanted to point out >> that emacs does unnecessary work. > How can Emacs know that this is "unnecessary work"? You cannot know > if the buffer contains any composable characters unless you search for > them and fail to find them. Properties don't appear out of thin air, emacs is the one who puts the properties to characters. So Emacs could build a parallel data structure which contains this information in a better searchable way. This data structure can be lazily constructed/updated, if it's needed. Even, for my example problem, a simple "does-this-buffer-have-any-characters-with-composition-property" would be enough. I'm not saying that this is the solution I want. I'm just saying this because you asked. >> Note, even with this code commented >> out, composition still seems to work. Maybe it's buggy, of course. > If you comment out the call to find_composition, prettify-symbols-mode > will stop working, and likewise any other features that use the > 'composition' text property. I commented out those lines I wrote, and I still see prettified symbols. I only commented out one find_composition call, all the other ones are still called. This call is bad, because it searches a 500-character area. A lot of other calls are fine because they only check one position (when limit<0). >> But the point is, it seems possible to fix this performance issue. > yes, it is possible to make the Emacs display faster by removing some > of the features it provides. But that is hardly the right way of > "fixing" performance problems. I didn't mean that. It can be made faster by using additional data structures/algorithms. >> But saying that this issue is not a (performance) bug is not >> correct, in my opinion. > That's not what I said, though. You said "So I think there's no bug here we need to look into". But I do think that there is a (performance) bug here. >>> Get a faster computer, or make your keyboard auto-repeat rate lower? >> Maybe there is a 2x single-thread performance factor between my computer >> and a current fast consumer desktop PC. It is highly unlikely that >> getting a faster computer will solve this problem. > My computer is a 10-year old machine. What is the conclusion then? You don't have this problem for some reason, or you do some part of the repro steps differently so it doesn't preproduce for you. Gregory Haythings could reproduce it, as far as I understand. So the problem is not at my side. I attached scroll_problem.cpp, for which this problem is more apparent, maybe this reproduces for you. This is the file for which emacs freezed for 40 seconds, when I moved the point to the bottom, and pressed and hold Shift-up for 1-2 seconds. For this file, if I intentionally prettify a lot of characters with "(setq prettify-symbols-alist '(("a" . ?λ)))", then the problem disappears, because emacs doesn't have to search for 500 characters to find nothing, but each search stops after a small amount of characters. For me, this shows that there is a problem. --------------200Z0tMNsudk5uhI73nbm3tS Content-Type: text/x-c++src; charset=UTF-8; name="scroll_problem.cpp" Content-Disposition: attachment; filename="scroll_problem.cpp" Content-Transfer-Encoding: base64 dm9pZCBmb28oZmxvYXQgKmEpIHsKICAgIGZsb2F0IHg7CgogICAgeCA9IGFbMV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbM10gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzRd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdOwogICAgeCA9IGFbNV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzZdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwog ICAgeCA9IGFbN10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzhdICogYVsxXSAqIGFbMF0gKiBhWzFdICog YVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbOV0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07IHggPSBhWzEwXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzExXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsg eCA9IGFbMTJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTNdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxNF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07CiAgICB4ID0gYVsxNV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzE2XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsK ICAgIHggPSBhWzE3XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMThdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFb MTldICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVsyMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsyMV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzIyXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzIzXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFb MjRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMjVdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsyNl0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07CiAgICB4ID0gYVsyN10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzI4XSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHgg PSBhWzI5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMzFdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOyB4ID0gYVszMl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVszM10gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHgg PSBhWzM0XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzM1XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMzZdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOwogICAgeCA9IGFbMzddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVszOF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAg ICB4ID0gYVszOV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzQwXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzQx XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbNDJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNDNdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OyB4ID0gYVs0NF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs0NV0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzQ2 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsKICAgIHggPSBhWzQ3XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNDhdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OwogICAgeCA9IGFbNDldICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs1MF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0g YVs1MV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzUyXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzUzXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsgeCA9IGFbNTRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNTVdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVs1Nl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs1N10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzU4XSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsKICAgIHggPSBhWzU5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNjBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAg eCA9IGFbNjFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs2Ml0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs2M10g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07IHggPSBhWzY0XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzY1XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsg eCA9IGFbNjZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNjddICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs2OF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07CiAgICB4ID0gYVs2OV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzcwXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsK ICAgIHggPSBhWzcxXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNzJdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFb NzNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVs3NF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs3NV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzc2XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzc3XSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFb NzhdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNzldICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs4MF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07CiAgICB4ID0gYVs4MV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzgyXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHgg PSBhWzgzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsgeCA9IGFbODRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbODVdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOyB4ID0gYVs4Nl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs4N10gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHgg PSBhWzg4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzg5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbOTBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOwogICAgeCA9IGFbOTFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs5Ml0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAg ICB4ID0gYVs5M10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzk0XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzk1 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbOTZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbOTddICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OyB4ID0gYVs5OF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs5OV0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEw MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICog YVswXSAqIGFbMV07CiAgICB4ID0gYVsxMDFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMDJdICogYVsx XSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBh WzFdOwogICAgeCA9IGFbMTAzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTA0XSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAg IHggPSBhWzEwNV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEwNl0gKiBhWzFdICogYVswXSAqIGFbMV0g KiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsx MDddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVsxMDhdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTA5XSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsgeCA9IGFbMTEwXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICog YVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzExMV0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHgg PSBhWzExMl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMTNdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMTRd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdOwogICAgeCA9IGFbMTE1XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTE2XSAqIGFbMV0g KiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsx XTsKICAgIHggPSBhWzExN10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzExOF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4 ID0gYVsxMTldICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMjBdICogYVsxXSAqIGFbMF0gKiBhWzFdICog YVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTIx XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbMTIyXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzEyM10gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzEyNF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMjVdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVsxMjZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsx XSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTI3XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTI4XSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXTsKICAgIHggPSBhWzEyOV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEzMF0gKiBhWzFdICog YVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07 CiAgICB4ID0gYVsxMzFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMzJdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9 IGFbMV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbM10gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNV0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzZd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdOwogICAgeCA9IGFbN10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzhdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwog ICAgeCA9IGFbOV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEwXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzEx XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbMTJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTNdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OyB4ID0gYVsxNF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxNV0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzE2 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsKICAgIHggPSBhWzE3XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMThdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OwogICAgeCA9IGFbMTldICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsyMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0g YVsyMV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzIyXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzIzXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsgeCA9IGFbMjRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMjVdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVsyNl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsyN10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzI4XSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsKICAgIHggPSBhWzI5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAg eCA9IGFbMzFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVszMl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVszM10g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07IHggPSBhWzM0XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzM1XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsg eCA9IGFbMzZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMzddICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVszOF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07CiAgICB4ID0gYVszOV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzQwXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsK ICAgIHggPSBhWzQxXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNDJdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFb NDNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVs0NF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs0NV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzQ2XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzQ3XSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFb NDhdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNDldICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs1MF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07CiAgICB4ID0gYVs1MV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzUyXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHgg PSBhWzUzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNTRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNTVdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOyB4ID0gYVs1Nl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs1N10gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHgg PSBhWzU4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzU5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNjBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOwogICAgeCA9IGFbNjFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs2Ml0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAg ICB4ID0gYVs2M10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzY0XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzY1 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbNjZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNjddICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OyB4ID0gYVs2OF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs2OV0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzcw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsKICAgIHggPSBhWzcxXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNzJdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OwogICAgeCA9IGFbNzNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs3NF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0g YVs3NV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzc2XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzc3XSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsgeCA9IGFbNzhdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNzldICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVs4MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs4MV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzgyXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsKICAgIHggPSBhWzgzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbODRdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAg eCA9IGFbODVdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs4Nl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs4N10g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07IHggPSBhWzg4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzg5XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsg eCA9IGFbOTBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbOTFdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs5Ml0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07CiAgICB4ID0gYVs5M10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzk0XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsK ICAgIHggPSBhWzk1XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbOTZdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFb OTddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVs5OF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs5OV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzEwMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMDFdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVsxMDJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsx XSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTAzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTA0XSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXTsKICAgIHggPSBhWzEwNV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEwNl0gKiBhWzFdICog YVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07 CiAgICB4ID0gYVsxMDddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMDhdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9 IGFbMTA5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTEwXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzExMV0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07IHggPSBhWzExMl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsx XSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMTNdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OyB4ID0gYVsxMTRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTE1XSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFb MTE2XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0g KiBhWzBdICogYVsxXTsKICAgIHggPSBhWzExN10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzExOF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAq IGFbMV07CiAgICB4ID0gYVsxMTldICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMjBdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwog ICAgeCA9IGFbMTIxXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTIyXSAqIGFbMV0gKiBhWzBdICogYVsx XSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBh WzEyM10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzEyNF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMjVdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOyB4ID0gYVsxMjZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0g KiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTI3XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsg eCA9IGFbMTI4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzEyOV0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEz MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICog YVswXSAqIGFbMV07CiAgICB4ID0gYVsxMzFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMzJdICogYVsx XSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBh WzFdOwogICAgeCA9IGFbMV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzJdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9 IGFbM10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbN10gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzhd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdOwogICAgeCA9IGFbOV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEwXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsK ICAgIHggPSBhWzExXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTJdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFb MTNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVsxNF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxNV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzE2XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzE3XSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFb MThdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTldICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsyMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07CiAgICB4ID0gYVsyMV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzIyXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHgg PSBhWzIzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMjRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMjVdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOyB4ID0gYVsyNl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsyN10gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHgg PSBhWzI4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzI5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOwogICAgeCA9IGFbMzFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVszMl0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAg ICB4ID0gYVszM10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzM0XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzM1 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbMzZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMzddICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OyB4ID0gYVszOF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVszOV0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzQw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsKICAgIHggPSBhWzQxXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNDJdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OwogICAgeCA9IGFbNDNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs0NF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0g YVs0NV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzQ2XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzQ3XSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsgeCA9IGFbNDhdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNDldICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVs1MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs1MV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzUyXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsKICAgIHggPSBhWzUzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNTRdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAg eCA9IGFbNTVdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs1Nl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs1N10g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07IHggPSBhWzU4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzU5XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsg eCA9IGFbNjBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNjFdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs2Ml0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07CiAgICB4ID0gYVs2M10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzY0XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsK ICAgIHggPSBhWzY1XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNjZdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFb NjddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVs2OF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs2OV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzcwXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzcxXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFb NzJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNzNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs3NF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07CiAgICB4ID0gYVs3NV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzc2XSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHgg PSBhWzc3XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNzhdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNzldICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOyB4ID0gYVs4MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs4MV0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHgg PSBhWzgyXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzgzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbODRdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOwogICAgeCA9IGFbODVdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs4Nl0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAg ICB4ID0gYVs4N10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzg4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzg5 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbOTBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbOTFdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OyB4ID0gYVs5Ml0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs5M10gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzk0 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsKICAgIHggPSBhWzk1XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbOTZdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OwogICAgeCA9IGFbOTddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs5OF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0g YVs5OV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzEwMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMDFdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOyB4ID0gYVsxMDJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0g KiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTAzXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsg eCA9IGFbMTA0XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzEwNV0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEw Nl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICog YVswXSAqIGFbMV07CiAgICB4ID0gYVsxMDddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMDhdICogYVsx XSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBh WzFdOwogICAgeCA9IGFbMTA5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTEwXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAg IHggPSBhWzExMV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzExMl0gKiBhWzFdICogYVswXSAqIGFbMV0g KiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsx MTNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVsxMTRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTE1XSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsgeCA9IGFbMTE2XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICog YVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzExN10gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHgg PSBhWzExOF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMTldICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMjBd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdOwogICAgeCA9IGFbMTIxXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTIyXSAqIGFbMV0g KiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsx XTsKICAgIHggPSBhWzEyM10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEyNF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4 ID0gYVsxMjVdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMjZdICogYVsxXSAqIGFbMF0gKiBhWzFdICog YVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTI3 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbMTI4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzEyOV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzEzMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMzFdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVsxMzJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsx XSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzJdICogYVsx XSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBh WzFdOwogICAgeCA9IGFbM10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzRdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9 IGFbNV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbN10gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzhdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbOV0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsKICAgIHggPSBhWzExXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTJdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OwogICAgeCA9IGFbMTNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxNF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0g YVsxNV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzE2XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzE3XSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsgeCA9IGFbMThdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTldICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVsyMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsyMV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzIyXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsKICAgIHggPSBhWzIzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMjRdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAg eCA9IGFbMjVdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsyNl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsyN10g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07IHggPSBhWzI4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzI5XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsg eCA9IGFbMzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMzFdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVszMl0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07CiAgICB4ID0gYVszM10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzM0XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsK ICAgIHggPSBhWzM1XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMzZdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFb MzddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVszOF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVszOV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzQwXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzQxXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFb NDJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNDNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs0NF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07CiAgICB4ID0gYVs0NV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzQ2XSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHgg PSBhWzQ3XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNDhdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNDldICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOyB4ID0gYVs1MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs1MV0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHgg PSBhWzUyXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzUzXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNTRdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOwogICAgeCA9IGFbNTVdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs1Nl0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAg ICB4ID0gYVs1N10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzU4XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzU5 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbNjBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNjFdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OyB4ID0gYVs2Ml0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs2M10gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzY0 XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsKICAgIHggPSBhWzY1XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNjZdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OwogICAgeCA9IGFbNjddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs2OF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0g YVs2OV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzcwXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzcxXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsgeCA9IGFbNzJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbNzNdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVs3NF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs3NV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzc2XSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXTsKICAgIHggPSBhWzc3XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbNzhdICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAg eCA9IGFbNzldICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs4MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs4MV0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07IHggPSBhWzgyXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzgzXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsg eCA9IGFbODRdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbODVdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs4Nl0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07CiAgICB4ID0gYVs4N10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzg4XSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsK ICAgIHggPSBhWzg5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbOTBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFb OTFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOyB4ID0gYVs5Ml0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVs5M10gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzk0XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzk1XSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFb OTZdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdOwogICAgeCA9IGFbOTddICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVs5OF0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07CiAgICB4ID0gYVs5OV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEwMF0gKiBhWzFdICogYVswXSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4 ID0gYVsxMDFdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMDJdICogYVsxXSAqIGFbMF0gKiBhWzFdICog YVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTAz XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXTsgeCA9IGFbMTA0XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzEwNV0gKiBhWzFd ICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV07IHggPSBhWzEwNl0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMDddICogYVsxXSAqIGFbMF0g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0g YVsxMDhdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsx XSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTA5XSAqIGFbMV0gKiBhWzBdICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTEwXSAq IGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXTsKICAgIHggPSBhWzExMV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzExMl0gKiBhWzFdICog YVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07 CiAgICB4ID0gYVsxMTNdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMTRdICogYVsxXSAqIGFbMF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9 IGFbMTE1XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTE2XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBhWzExN10g KiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV07IHggPSBhWzExOF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsx XSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMTldICogYVsxXSAq IGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd OyB4ID0gYVsxMjBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdOwogICAgeCA9IGFbMTIxXSAqIGFbMV0gKiBhWzBdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFb MTIyXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0g KiBhWzBdICogYVsxXTsKICAgIHggPSBhWzEyM10gKiBhWzFdICogYVswXSAqIGFbMV0gKiBh WzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07IHggPSBhWzEyNF0gKiBh WzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAq IGFbMV07CiAgICB4ID0gYVsxMjVdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFb MV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOyB4ID0gYVsxMjZdICogYVsxXSAqIGFb MF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwog ICAgeCA9IGFbMTI3XSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVsw XSAqIGFbMV0gKiBhWzBdICogYVsxXTsgeCA9IGFbMTI4XSAqIGFbMV0gKiBhWzBdICogYVsx XSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXTsKICAgIHggPSBh WzEyOV0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFd ICogYVswXSAqIGFbMV07IHggPSBhWzEzMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBd ICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV07CiAgICB4ID0gYVsxMzFdICog YVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0gKiBhWzBdICogYVsxXSAqIGFbMF0g KiBhWzFdOyB4ID0gYVsxMzJdICogYVsxXSAqIGFbMF0gKiBhWzFdICogYVswXSAqIGFbMV0g KiBhWzBdICogYVsxXSAqIGFbMF0gKiBhWzFdOwp9Cg== --------------200Z0tMNsudk5uhI73nbm3tS-- From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Mar 2023 16:21:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Herman, =?UTF-8?Q?G=C3=A9za?= Cc: 62352@debbugs.gnu.org, gregory@heytings.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.167976125612548 (code B ref 62352); Sat, 25 Mar 2023 16:21:02 +0000 Received: (at 62352) by debbugs.gnu.org; 25 Mar 2023 16:20:56 +0000 Received: from localhost ([127.0.0.1]:43316 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg6dT-0003GJ-PI for submit@debbugs.gnu.org; Sat, 25 Mar 2023 12:20:56 -0400 Received: from eggs.gnu.org ([209.51.188.92]:53188) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg6dR-0003G5-Dn for 62352@debbugs.gnu.org; Sat, 25 Mar 2023 12:20:54 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg6dM-0002I9-4M; Sat, 25 Mar 2023 12:20:48 -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=vcGIYGCnyHbteh3uR7uy8P6IiZIO/m4e/DsNhB9IJUk=; b=PGdOC+PbA6o0+xktNXSB DXAJl1Ngj7tTm+aFgRd/ljE/3+PuMhEib1Qr3S0+BdVwk35jq0B5RgeJEO6v1JuS+tmqLh2N4toJh 8lu95Z1EAysMnRuUz62T7ebgJWGcZ458HB09sbjHT2zKGI3jLeSSfripBQCkVlCA9iai+IU0U/X5r pjw5VmfG4g03IXssXNbt/gVf9U8DtIxrzFlMRRg3nF5UAOZIpE8AlYwFZuOmhMyqghdwVqyD+sY8Y JFzuaqbvuXc88pNxF4rqeLZzsKFYWZBpPX9I7NytwsEmLlcIJ2jq3Ld9bi9aTzEXp7I9DZC91e0XK tC8kJqbqVVlkzw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg6dL-0008Hq-Hz; Sat, 25 Mar 2023 12:20:47 -0400 Date: Sat, 25 Mar 2023 19:20:45 +0300 Message-Id: <83pm8wby5e.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Herman, =?UTF-8?Q?G=C3=A9za?= on Sat, 25 Mar 2023 16:24:50 +0100) References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> <83h6u9c89f.fsf@gnu.org> <834jq9c4kb.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -1.9 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.9 (--) > Date: Sat, 25 Mar 2023 16:24:50 +0100 > Cc: gregory@heytings.org, 62352@debbugs.gnu.org > From: Herman, Géza > > > How can Emacs know that this is "unnecessary work"? You cannot know > > if the buffer contains any composable characters unless you search for > > them and fail to find them. > Properties don't appear out of thin air, emacs is the one who puts the > properties to characters. So Emacs could build a parallel data structure > which contains this information in a better searchable way. This data > structure can be lazily constructed/updated, if it's needed. It is not easy to maintain such a cache. It needs to be kept up to date at all times, and discarded/recreated when no longer accurate. Any Lisp program can in principle add or remove text properties at any moment, even inside a hook called by the display engine itself, such as fontification-functions. IOW, it is not as simple as you seem to think. > Even, for my example problem, a simple > "does-this-buffer-have-any-characters-with-composition-property" would > be enough. That would be a one-time condition. It could become false before the next redisplay cycle. And checking this condition even once in a large buffer with many text properties takes non-negligible time. > I'm not saying that this is the solution I want. I'm just saying this > because you asked. Please believe me when I say that such shortcuts aren't possible, at least not in the simplistic way you are suggesting them. There could be some clever ideas that somehow do accomplish that, but I'd need to see working code which implements them, not just ideas based on simplifications of the real-life situations with which the Emacs display code needs to cope in a production session. It is no accident that any caches we do employ in the display code are very localized and usually very short-lived; most are discarded when a redisplay cycle ends. > > That's not what I said, though. > You said "So I think there's no bug here we need to look into". But I do > think that there is a (performance) bug here. There's a performance problem, I agree. But as long as the design of the display engine is what it is, I don't see how that can be helped, in a way that will cope much better with the massive amount of face properties as in these examples. > >>> Get a faster computer, or make your keyboard auto-repeat rate lower? > >> Maybe there is a 2x single-thread performance factor between my computer > >> and a current fast consumer desktop PC. It is highly unlikely that > >> getting a faster computer will solve this problem. > > My computer is a 10-year old machine. > What is the conclusion then? You don't have this problem for some > reason, or you do some part of the repro steps differently so it doesn't > preproduce for you. Gregory Haythings could reproduce it, as far as I > understand. So the problem is not at my side. I didn't say the problem is on your side, I just mentioned the factors that could cause it be more severe on your system than on mine. > I attached scroll_problem.cpp, for which this problem is more apparent, > maybe this reproduces for you. Yes, it does. But only in scroll-down-line, not in scroll-up-line. > This is the file for which emacs freezed > for 40 seconds, when I moved the point to the bottom, and pressed and > hold Shift-up for 1-2 seconds. Here it "freezes" for just 4 to 5 seconds, not 40. From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Herman, =?UTF-8?Q?G=C3=A9za?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Mar 2023 17:39:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 62352@debbugs.gnu.org, gregory@heytings.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.167976590930314 (code B ref 62352); Sat, 25 Mar 2023 17:39:02 +0000 Received: (at 62352) by debbugs.gnu.org; 25 Mar 2023 17:38:29 +0000 Received: from localhost ([127.0.0.1]:43394 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg7qX-0007ss-A5 for submit@debbugs.gnu.org; Sat, 25 Mar 2023 13:38:29 -0400 Received: from mail-ed1-f45.google.com ([209.85.208.45]:44836) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg7qV-0007se-Ru for 62352@debbugs.gnu.org; Sat, 25 Mar 2023 13:38:28 -0400 Received: by mail-ed1-f45.google.com with SMTP id eh3so19913814edb.11 for <62352@debbugs.gnu.org>; Sat, 25 Mar 2023 10:38:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679765902; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=PxOyn8Z39qdqD3B4RQRzJHv3VlG3nZKofOvfDJScZbo=; b=fPOA2YPKamAjIhECAeobc2eC7H375coAkV+BhBzrxZRH21EYsomkfheeOlFDICXYdh cDMFJ687U9lrNweXuWd4kVN5ij9zJwd4xPbh7OSmNDchdwfvgMsHcDkxozPN9uMABj+j c4s6hCLhThJ01z1f6Ph/YSVDhWk6mz2ZP5dSXxIrjImwBiKyE4OvYaCzKTYMchlLM8Y8 8hasbzdB0ZgavKR2oHW8xE6efsqNRBehEX2THVjtFbPQrD98HzCAU3uQvO285l0AOrSp +FRD1+wlM/X1qG4arfXmA7luhB6Tq+Dp4RH2QjU1YvdmR2/HJWhmDqfA8LkNDd90k9MD yU5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679765902; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PxOyn8Z39qdqD3B4RQRzJHv3VlG3nZKofOvfDJScZbo=; b=HxAC23kYbfhXJPKsGJ7cQKmM4tzuivcSoRei8lqSyQTH0Sv5geWp35EzTTqT5BJLbh OyqJ9EY74iZJEN4TQVCZfG+PYvZoLCRkRO+/2DuteYqUk4kl011oqVdAOiuQnAqIB9T5 RCZkML7MNMXr4W7XCNUiTgnImdR4NqMWf9zhK9RZ2WVyH6mOE+nVSjVxvKrlOIsv23Gg wHs7NVnzDuaLwY9yiG8/oiqXNfy74bYBsX9k35CRkdHqdmPrcW3MdaKTlR/22pkZ101m F3ao+K9YMem06ZuZKuxLyErStwXQd5AcMOebbEnjSsCdIYRA3anDge+2h4E0oNcY8i21 +PYg== X-Gm-Message-State: AAQBX9cOev/aVa8invg68z/iYc8m8FYbOmezA+XOWM7cJ2Azyqt6KczU XZHAH1508WVmf+kC20wry8s= X-Google-Smtp-Source: AKy350b8izeA5FAVL/Yf2F8xV/4FvWTq/HPYSVTFggkMuNBFg/GzKndKYefRp5x6UNueOQTRGiK/4A== X-Received: by 2002:a05:6402:d3:b0:4fa:e1fd:5a30 with SMTP id i19-20020a05640200d300b004fae1fd5a30mr6482048edu.19.1679765901465; Sat, 25 Mar 2023 10:38:21 -0700 (PDT) Received: from [192.168.8.4] (netacc-gpn-204-88-167.pool.yettel.hu. [5.204.88.167]) by smtp.gmail.com with ESMTPSA id x2-20020a50ba82000000b004fb30fc1dabsm12386220ede.96.2023.03.25.10.38.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 25 Mar 2023 10:38:21 -0700 (PDT) Message-ID: <38eca973-0d1b-cd3b-1602-00d22c8c1afe@gmail.com> Date: Sat, 25 Mar 2023 18:38:19 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Content-Language: sv-FI References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> <83h6u9c89f.fsf@gnu.org> <834jq9c4kb.fsf@gnu.org> <83pm8wby5e.fsf@gnu.org> From: Herman, =?UTF-8?Q?G=C3=A9za?= In-Reply-To: <83pm8wby5e.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -1.1 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) On 3/25/23 17:20, Eli Zaretskii wrote: >> Properties don't appear out of thin air, emacs is the one who puts the >> properties to characters. So Emacs could build a parallel data structure >> which contains this information in a better searchable way. This data >> structure can be lazily constructed/updated, if it's needed. > It is not easy to maintain such a cache. It needs to be kept up to > date at all times, and discarded/recreated when no longer accurate. > Any Lisp program can in principle add or remove text properties at any > moment, even inside a hook called by the display engine itself, such > as fontification-functions. > > IOW, it is not as simple as you seem to think. I didn't meant to imply that it is easy. It is certainly not. But, tbh, while emacs is fluid most of the time, it can be very stuttery sometimes. In my experience, this is usually caused by some lisp code. But when it isn't, it is usually caused by some code in this area. When I profile emacs, these functions (next_property_change and similar) are usually on the top of the list. So it would make sense to optimize around this area. Not just because of this issue, but in general. I'm not necessarily suggesting a cache. Maybe it's better to actually always manage additional data structures. So, if a text property is added, it's not just set for the specific character area, but it will also modify search structures right away. So additional data structures were always in sync. Sure, it has some overhead. But if emacs does a lot of linear searches (and having a look at these functions, I see a lot of linear searches), this overhead will be quickly mitigated by the much faster searches. For example, if emacs had a list which only contained text segments with the composition property, the current 500-char area search will be much faster. I'd definitely trade some CPU time in a way that emacs will use some more CPU time in general (to manage additional data structures), but it will never freeze (because corner cases are handled much better). But maybe that's just me, others have different opinions about this. Anyways, this is not the best place to discuss this, and I also don't know too much about emacs's internals. My intuition is that these problems can be solved in faster way, that's all. >> Even, for my example problem, a simple >> "does-this-buffer-have-any-characters-with-composition-property" would >> be enough. > That would be a one-time condition. It could become false before the > next redisplay cycle. And checking this condition even once in a > large buffer with many text properties takes non-negligible time. I'm not sure I understand. If a composition text property is added to a character, then emacs would increase a buffer-local counter (I mean a counter at the C side, not a buffer-local lisp variable). If a composition text property is removed from a character, then emacs would decrease the buffer-local counter. And of course there are other events that modifies the value of the counter (char copy, delete, etc.). So this counter would always contain the number of composition characters in a buffer, or in other words, whether a buffer has a composition char or not. So, if find_composition sees that this counter is zero, it can return right away. I'm sure that this extra check won't take any significant CPU time. Why wouldn't this work, why does the redisplay cycle break this idea? (I'm not acutally suggesting this idea, of course, because it's just a bandaid instead of a proper solution. I'm just asking because I'm curious why this wouldn't work) > There's a performance problem, I agree. But as long as the design of > the display engine is what it is, I don't see how that can be helped, > in a way that will cope much better with the massive amount of face > properties as in these examples. Yeah, I understand this. This is what I meant in one of my previous comments: if this is a large work, then it makes sense to close this bug report, because maybe it's not worth fixing this. Too much work for a small gain. >> This is the file for which emacs freezed >> for 40 seconds, when I moved the point to the bottom, and pressed and >> hold Shift-up for 1-2 seconds. > Here it "freezes" for just 4 to 5 seconds, not 40. Ok, cool, at least you can reproduce the problem now. I'm not sure what causes the large difference (4/5 sec vs. 40 sec). Maybe window size, or something else. But it doesn't matter too much. The point is, that for some buffers, scroll-down-line can cause some freezing. (In my real life code, emacs freezes for about a second, so it's not too bad. But it's annoying if I hit by this too often, that's why I reported this issue) From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Mar 2023 17:51:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: geza.herman@gmail.com Cc: 62352@debbugs.gnu.org, gregory@heytings.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.167976660831832 (code B ref 62352); Sat, 25 Mar 2023 17:51:01 +0000 Received: (at 62352) by debbugs.gnu.org; 25 Mar 2023 17:50:08 +0000 Received: from localhost ([127.0.0.1]:43434 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg81n-0008HM-GK for submit@debbugs.gnu.org; Sat, 25 Mar 2023 13:50:07 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48736) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pg81k-0008Gh-S5 for 62352@debbugs.gnu.org; Sat, 25 Mar 2023 13:50:05 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg81d-0006ha-C0; Sat, 25 Mar 2023 13:49:57 -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=xsUb3a1Or0Zm4/EapgdfsFRm4ntu1Oro1YySMXocG2Y=; b=VpWOr58W1c6S9+y7C5YY XiU7at5GLUlz4Osce3KbiJgoE2wreY3eu6tZT/VOjc6rBVPeFErWQaqwuOFrRWTDEJJbMV0y5WZnP OaiPf1a7ikeW8qUkmMLtV3nSKlDAHFcT9oasueQdShJNdHNH2cy7EvXdVOAOb+xtlix+v2R4nCQQ3 GqOA8LKxxy0KAIjRkyVymI1LGbGS9MlJqEqA2DlZFmTdmfGid++6egtiXsVxE8lcbwR8yLMLZl6Lc 5wHezI3mV9JXrhuAfq+Vco0xhb5gl31o2Xa2zmsUaVYCg7tsJl77ZDed/SZKXYQIZTC4XFZpM2M+l tEvAF1vEjTin3g==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pg81c-00072V-Pc; Sat, 25 Mar 2023 13:49:57 -0400 Date: Sat, 25 Mar 2023 20:49:54 +0300 Message-Id: <83ileobu0t.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <38eca973-0d1b-cd3b-1602-00d22c8c1afe@gmail.com> (message from Herman, =?UTF-8?Q?G=C3=A9za?= on Sat, 25 Mar 2023 18:38:19 +0100) References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> <83h6u9c89f.fsf@gnu.org> <834jq9c4kb.fsf@gnu.org> <83pm8wby5e.fsf@gnu.org> <38eca973-0d1b-cd3b-1602-00d22c8c1afe@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 25 Mar 2023 18:38:19 +0100 > Cc: gregory@heytings.org, 62352@debbugs.gnu.org > From: Herman, Géza > > > IOW, it is not as simple as you seem to think. > I didn't meant to imply that it is easy. It is certainly not. But, tbh, > while emacs is fluid most of the time, it can be very stuttery > sometimes. In my experience, this is usually caused by some lisp code. > But when it isn't, it is usually caused by some code in this area. When > I profile emacs, these functions (next_property_change and similar) are > usually on the top of the list. So it would make sense to optimize > around this area. Not just because of this issue, but in general. > > I'm not necessarily suggesting a cache. Maybe it's better to actually > always manage additional data structures. So, if a text property is > added, it's not just set for the specific character area, but it will > also modify search structures right away. So additional data structures > were always in sync. Sure, it has some overhead. But if emacs does a lot > of linear searches (and having a look at these functions, I see a lot of > linear searches), this overhead will be quickly mitigated by the much > faster searches. For example, if emacs had a list which only contained > text segments with the composition property, the current 500-char area > search will be much faster. Emacs already handles text properties using an efficient data structure, see intervals.c. Feel free to suggest improvements to the algorithms we use there. From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Herman, =?UTF-8?Q?G=C3=A9za?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Mar 2023 21:40:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 62352@debbugs.gnu.org, gregory@heytings.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.167978038423096 (code B ref 62352); Sat, 25 Mar 2023 21:40:02 +0000 Received: (at 62352) by debbugs.gnu.org; 25 Mar 2023 21:39:44 +0000 Received: from localhost ([127.0.0.1]:43601 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pgBc0-00060R-5e for submit@debbugs.gnu.org; Sat, 25 Mar 2023 17:39:44 -0400 Received: from mail-ed1-f54.google.com ([209.85.208.54]:37640) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pgBby-00060F-B0 for 62352@debbugs.gnu.org; Sat, 25 Mar 2023 17:39:42 -0400 Received: by mail-ed1-f54.google.com with SMTP id cn12so21349077edb.4 for <62352@debbugs.gnu.org>; Sat, 25 Mar 2023 14:39:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679780376; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=u/w+aBXlnVcUfLQkKzUUYwOkIkj/6BarQhIlxUpBcMM=; b=CBxS+UmrPNztnei1LuHQ4oWAdZhklhWOpDUy0dqvfN/pCRLf+BnNVG49BQMN0WMcA5 4uKJ8aGdPhb9ohTcpgd6DYXtLGEdLZsYBDnpiLpmqpolR0rSnbs9Pgv9nH+4Eh73BIoi vahRloAfLJdwWp1d8fbPLEpETAxH0dT78YtF4IjFBdHm9ZXrvW2+YoLYT4rRKRJmZZ8J psFaLPyu8LB+bgT1WZ2kB+MieEwZ1b3cS6GhjNt38JhDugEZn7aH6wzA+zLTn8fsYcXB 6/w34MU1sQwx0KA0MIbnMr07E+58PI4KrPJb6bajUP/QLvQ73jZ35J2pvHNCygtgb0Pz 4hRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679780376; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=u/w+aBXlnVcUfLQkKzUUYwOkIkj/6BarQhIlxUpBcMM=; b=N5Y/QaxcduDRSktpubwpuUJDRB2aDTIoXOnLyHrMfDZjYFVdVtX2sujmaQ2K+/TLqG L2c3RtYJ7ny/n489rBTVQqMI4lCANX+vovk9pQqPD8ffn2fj4F5oz1++03Iio3C+gaXu OBsoSuVKy+A361YYzxEkw9iIFLzlUKgDvEmHo+/7HjONY8SSSn4YTyZrKvlSlOy00UwJ uQmXz57XWQoqLZYBRqYvS14UYdwtqyvAS50dLKnEvl/0FOYS69xlEV8L1UAKP5oJU9Bw Qys8PHRp1AbxmRfIRNS4LbKb6w5i/v93snYxv2EEMAwRVKDmtXqoR2hR5vy5kwvgKSxT uEWw== X-Gm-Message-State: AAQBX9eY1YDi6Ny5omfvWmoPTn1NtKYdIO0LJOwtjr0vPT/H/Y+MWfyg QHnajv4uh/p2kjMIBaj7sbc= X-Google-Smtp-Source: AKy350YK9UFX4zUFo4rRFdFtdHoQofw4sZIqFb32RnpxL0RwNklwjt81xD1OT44oyW9CkN3T/dt34A== X-Received: by 2002:a17:907:c008:b0:8ad:51e9:cd57 with SMTP id ss8-20020a170907c00800b008ad51e9cd57mr8822036ejc.49.1679780376025; Sat, 25 Mar 2023 14:39:36 -0700 (PDT) Received: from [192.168.8.4] (netacc-gpn-204-88-167.pool.yettel.hu. [5.204.88.167]) by smtp.gmail.com with ESMTPSA id x11-20020a1709064a8b00b009342fe44911sm9240652eju.123.2023.03.25.14.39.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 25 Mar 2023 14:39:35 -0700 (PDT) Message-ID: Date: Sat, 25 Mar 2023 22:39:34 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Content-Language: sv-FI References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> <83h6u9c89f.fsf@gnu.org> <834jq9c4kb.fsf@gnu.org> <83pm8wby5e.fsf@gnu.org> <38eca973-0d1b-cd3b-1602-00d22c8c1afe@gmail.com> <83ileobu0t.fsf@gnu.org> From: Herman, =?UTF-8?Q?G=C3=A9za?= In-Reply-To: <83ileobu0t.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -1.1 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) On 3/25/23 18:49, Eli Zaretskii wrote: >> Date: Sat, 25 Mar 2023 18:38:19 +0100 >> Cc: gregory@heytings.org, 62352@debbugs.gnu.org >> From: Herman, Géza >> >>> IOW, it is not as simple as you seem to think. >> I didn't meant to imply that it is easy. It is certainly not. But, tbh, >> while emacs is fluid most of the time, it can be very stuttery >> sometimes. In my experience, this is usually caused by some lisp code. >> But when it isn't, it is usually caused by some code in this area. When >> I profile emacs, these functions (next_property_change and similar) are >> usually on the top of the list. So it would make sense to optimize >> around this area. Not just because of this issue, but in general. >> >> I'm not necessarily suggesting a cache. Maybe it's better to actually >> always manage additional data structures. So, if a text property is >> added, it's not just set for the specific character area, but it will >> also modify search structures right away. So additional data structures >> were always in sync. Sure, it has some overhead. But if emacs does a lot >> of linear searches (and having a look at these functions, I see a lot of >> linear searches), this overhead will be quickly mitigated by the much >> faster searches. For example, if emacs had a list which only contained >> text segments with the composition property, the current 500-char area >> search will be much faster. > Emacs already handles text properties using an efficient data > structure, see intervals.c. Feel free to suggest improvements to the > algorithms we use there. The problem is not there. The problem is that find_composition is only interested in the composition property, yet it scans all the properties linearly. And it scans it for 500 characters. This file has a lot of properties, this means a lot of unnecessary and duplicated work (because it does this for each character displayed, or something like this). If the composition property had its own list, then this problem wouldn't exist. Anyways, I commented out those lines, the problem is gone, and everything still seems to work. I'll report back if I find some problems with it. From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 26 Mar 2023 04:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: geza.herman@gmail.com Cc: 62352@debbugs.gnu.org, gregory@heytings.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.16798065221414 (code B ref 62352); Sun, 26 Mar 2023 04:56:02 +0000 Received: (at 62352) by debbugs.gnu.org; 26 Mar 2023 04:55:22 +0000 Received: from localhost ([127.0.0.1]:43820 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pgIPZ-0000Mj-Sn for submit@debbugs.gnu.org; Sun, 26 Mar 2023 00:55:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:46712) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pgIPY-0000MU-Fy for 62352@debbugs.gnu.org; Sun, 26 Mar 2023 00:55:21 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pgIPR-0000PA-1X; Sun, 26 Mar 2023 00:55:14 -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=5v0/T+sadwrZ/6EuKni/CAbRYX95adNrPywJvhWi4I0=; b=REK7o+Fif3YrOq09DABl vo8agC9F5Ly+Sd4avfmaEGe1t+JhLsnr5Mbl/FUs7TOYOPNG6Q+UyvXmxrm9nS2s/AnP2QMCP7pNm 28oUHCkzKD7Rxh6gx0JYGFsgxbnXdlZgNpAdnrB0gU3OofY8J2HkpnGj76H4fS5sEh1XqsQNRwbWb cbvKr14B7wMrHTzQ3Rst6aHNgccwXj3BNfNCSJ71ELatiGiBseme9KwBhIGo5g3ZFTUdTuXhmwQbu S2ZP6I1rhsSLuAv8Ybp+GrkoAwFuIhgDriMmDVKOGL1mRX3ZzEBKMl5t335NeR0MeC0uAWkDNpCNU NW4j6qxjGpQlyQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pgIPN-0001Eu-IB; Sun, 26 Mar 2023 00:55:10 -0400 Date: Sun, 26 Mar 2023 07:55:08 +0300 Message-Id: <834jq8az83.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Herman, =?UTF-8?Q?G=C3=A9za?= on Sat, 25 Mar 2023 22:39:34 +0100) References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> <83h6u9c89f.fsf@gnu.org> <834jq9c4kb.fsf@gnu.org> <83pm8wby5e.fsf@gnu.org> <38eca973-0d1b-cd3b-1602-00d22c8c1afe@gmail.com> <83ileobu0t.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 25 Mar 2023 22:39:34 +0100 > Cc: gregory@heytings.org, 62352@debbugs.gnu.org > From: Herman, Géza > > >> I'm not necessarily suggesting a cache. Maybe it's better to actually > >> always manage additional data structures. So, if a text property is > >> added, it's not just set for the specific character area, but it will > >> also modify search structures right away. So additional data structures > >> were always in sync. Sure, it has some overhead. But if emacs does a lot > >> of linear searches (and having a look at these functions, I see a lot of > >> linear searches), this overhead will be quickly mitigated by the much > >> faster searches. For example, if emacs had a list which only contained > >> text segments with the composition property, the current 500-char area > >> search will be much faster. > > Emacs already handles text properties using an efficient data > > structure, see intervals.c. Feel free to suggest improvements to the > > algorithms we use there. > The problem is not there. The problem is that find_composition is only > interested in the composition property, yet it scans all the properties > linearly. It doesn't scan linearly. It calls next-single-property-change, which traverses the interval tree we use for storing text properties. Please take a look at the implementation of next-single-property-change in textprop.c. > And it scans it for 500 characters. This file has a lot of > properties, this means a lot of unnecessary and duplicated work (because > it does this for each character displayed, or something like this). If > the composition property had its own list, then this problem wouldn't exist. If the composition property had its own data structure, Emacs would need to search them both when it looks for a change in _any_ property (something that happens quite a lot in other places), and handle various combinations of hits in both data structures. That'd be a significant complication for a small gain. From unknown Sun Aug 17 22:08:26 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62352: Very slow scroll-down-line with a lot of text properties Resent-From: Herman, =?UTF-8?Q?G=C3=A9za?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 26 Mar 2023 07:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62352 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 62352@debbugs.gnu.org, gregory@heytings.org Received: via spool by 62352-submit@debbugs.gnu.org id=B62352.167981489117703 (code B ref 62352); Sun, 26 Mar 2023 07:15:02 +0000 Received: (at 62352) by debbugs.gnu.org; 26 Mar 2023 07:14:51 +0000 Received: from localhost ([127.0.0.1]:43994 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pgKaY-0004bT-Hl for submit@debbugs.gnu.org; Sun, 26 Mar 2023 03:14:50 -0400 Received: from mail-ed1-f48.google.com ([209.85.208.48]:46888) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pgKaW-0004bF-9t for 62352@debbugs.gnu.org; Sun, 26 Mar 2023 03:14:48 -0400 Received: by mail-ed1-f48.google.com with SMTP id eg48so23652522edb.13 for <62352@debbugs.gnu.org>; Sun, 26 Mar 2023 00:14:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679814882; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=JH/BRlHZh9Yl/eXlNzjsX5ykAhjLwciZ5FuiW/y0hGk=; b=llBTRmi8aZQi/600nu8OCppoMWEyky1MLEjd6gB+EZRbmDgu3qic5zh6+dBix1RgCC ggr67RluJoEBytLh/aVxnSI8DqUncVEcoq7xFONHby8NBO4ZMsqJIC9RzwTBPNySI0Cz KyECnpDnr6tr62pPUt1DY+UajdqFtAmDT0MPzvxkH4ou9Tw1t2UFDdK0DzwE5Jg/F8jJ esKEoClzsEhdN+51ZWe+P0Z8913jkmbXqFTUT14z1hfawuW7vCZiNgthDejyO5hXfmik qJPq8E3yNNfr1sv/5p1WWjXH+EIcIIchBcdz3Jmq1MRrLz/g9tNgriYK65iqQuTMBx3e fogg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679814882; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JH/BRlHZh9Yl/eXlNzjsX5ykAhjLwciZ5FuiW/y0hGk=; b=ScJP92cDIL9qbLnCNoO9qQJVSycbc1bi/KQNW9LYj0NLqdv6igPj+yrr+g/50FEDCI a79tjdfV/ygOJ1u/2rC3liZ/Muz54WVK3hhjEtjWSD6KXjs7unK5phpCAcBROfuxC4GH nRfCxMre+K+WFeg5A/kyVXTsBx6Azn+iDVC0VVFFoYdYO8DMM0J801i3hv6Nh8uir9rL inTFlDYVNFoyRULMJBAl3E4ZCmoTcFMKLtTaO/KzG7qKIPZwucASeW+EfGdNicBAFEZH n8ywet09bVhUePYdCBoG5wQUUN5lrsmyWH/lVvt4oSutYgZET7CdWn2ETxzhiSh0QR9C UqMQ== X-Gm-Message-State: AAQBX9cdqZak6VCLNmB3dHI5L3HpbrPN1FkxJIp6ts2GDQ3QubF+VDfG PfCttdhcFdSYe95+gR/0G5o= X-Google-Smtp-Source: AKy350Z8uaF/S1nJCAMUMdmkpy9QmKdIn9oXglhb7CSoV/yqNHzq4LxeaAZfteKwagB4f+DN2qpR+g== X-Received: by 2002:a05:6402:1055:b0:4ab:ec2:3cd1 with SMTP id e21-20020a056402105500b004ab0ec23cd1mr6929764edu.25.1679814882133; Sun, 26 Mar 2023 00:14:42 -0700 (PDT) Received: from [192.168.8.4] (netacc-gpn-204-88-167.pool.yettel.hu. [5.204.88.167]) by smtp.gmail.com with ESMTPSA id n4-20020a5099c4000000b00501cc88b3adsm9257176edb.46.2023.03.26.00.14.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 26 Mar 2023 00:14:41 -0700 (PDT) Message-ID: <5624c78c-c424-deec-2649-f11a5c149d22@gmail.com> Date: Sun, 26 Mar 2023 09:14:40 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Content-Language: sv-FI References: <51545b85-029c-a6ff-f733-e486f261f6c0@gmail.com> <83355x7sx2.fsf@gnu.org> <08b5f766dd5d453016a7@heytings.org> <83sfdtcab8.fsf@gnu.org> <83h6u9c89f.fsf@gnu.org> <834jq9c4kb.fsf@gnu.org> <83pm8wby5e.fsf@gnu.org> <38eca973-0d1b-cd3b-1602-00d22c8c1afe@gmail.com> <83ileobu0t.fsf@gnu.org> <834jq8az83.fsf@gnu.org> From: Herman, =?UTF-8?Q?G=C3=A9za?= In-Reply-To: <834jq8az83.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -1.1 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) On 3/26/23 06:55, Eli Zaretskii wrote: >> >> The problem is not there. The problem is that find_composition is only >> interested in the composition property, yet it scans all the properties >> linearly. > It doesn't scan linearly. It calls next-single-property-change, which > traverses the interval tree we use for storing text properties. > Please take a look at the implementation of > next-single-property-change in textprop.c. It finds the starting point by traversing the tree (presumably an O(log(number_of_properties)) operation (that's good), but then scans linearly. My example buffer has a different property for (almost) all characters, this means that this function will search the tree for ~500 elements to conclude that there is no such property around. And it does this operation for every single character visible in the window, or something like this. >> And it scans it for 500 characters. This file has a lot of >> properties, this means a lot of unnecessary and duplicated work (because >> it does this for each character displayed, or something like this). If >> the composition property had its own list, then this problem wouldn't exist. > If the composition property had its own data structure, Emacs would > need to search them both when it looks for a change in _any_ property > (something that happens quite a lot in other places), and handle > various combinations of hits in both data structures. That'd be a > significant complication for a small gain. If that's the case, then emacs could have a data structure which contains all the properties (like now), and one which points only to the composition properties. Yes, this is a complication, it will make emacs generally a little bit slower, but it would avoid freezes. But maybe this is not the correct solution. I have a feeling that this 500-character search area is not a good solution for the problem it tries to solve. Maybe it's a result of some optimization that was relevant a long time ago, but now it isn't, and it is actually a de-optimization if the buffer contains a lot of properties. A lot of people wouldn't care if emacs used a little more CPU power in general (as an example, during general editing, it would use 30% CPU instead of 20%), if this means that there is no stuttering. That's why people (me included) set the garbage collector threshold to a high value, because of the introduced micro-stuttering by the GC. But I'm not even sure that having more specialized search structures would actually slow down emacs in general. Maybe the net result would be that not only emacs won't freeze, but it would also become generally faster.