* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode @ 2019-12-17 1:23 Peter Ludemann 2019-12-17 13:59 ` Michael Albinus ` (2 more replies) 0 siblings, 3 replies; 14+ messages in thread From: Peter Ludemann @ 2019-12-17 1:23 UTC (permalink / raw) To: 38644 [-- Attachment #1: Type: text/plain, Size: 12094 bytes --] This problem occurs with emacs 26.3 but didn't occur with 25.x. Possibly related to bug#33194. My hypothesis is that emacs is monitoring some files that it shouldn't but I need some help in figuring out which files are being monitored and whether that is indeed a bug. When I run a CPU-bound job that also does quite a bit of I/O, emacs becomes very unresponsive -- running "top", I see CPU usage for emacs go into the 50-100% range. (Ubuntu 18.04, emacs 26.3 on a 4-CPU machine with SSD disk) The job I'm running is parallel -v --will-cite --keep-order --group -L80 -j8 (the problem does not go away when I change to "-j3") As far as I know, I don't have any of the output files or directories open (I have global-auto-revert-mode set) -- all the outputs go into one directory and when I search the Buffer List, I don't see that directory. I upgraded from emacs 25.3 to 26.3 today, with the same .emacs.desktop, and the problem wasn't showing with emacs 25.3. I double-checked the output of lsof on one of the running CPU processes and again couldn't find anything that matched with the Emacs buffer. However, I did notice that file-name-history did match some. Any suggestions on how to track down what's causing the polling? As I mentioned, this didn't happen with emacs 25.3 with the same files open. It also doesn't happen when I start 26.3 without the .emacs.desktop (that is, with nothing in the Buffer List). "strace -c" emacs when not running the CPU/IO job: % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 31.63 0.009027 3 2950 2534 recvmsg 23.19 0.006618 3 2057 poll 13.38 0.003819 3 1100 rt_sigprocmask 12.10 0.003454 17 209 pselect6 9.17 0.002618 6 466 writev 7.62 0.002174 5 405 rt_sigreturn 1.21 0.000344 57 6 openat 0.37 0.000105 4 30 1 read 0.31 0.000089 3 26 timerfd_settime 0.28 0.000080 11 7 ioctl 0.22 0.000064 64 1 vfork 0.11 0.000032 11 3 fcntl 0.11 0.000030 4 8 close 0.09 0.000026 1 51 9 stat 0.06 0.000017 17 1 pipe2 0.06 0.000016 0 48 11 faccessat 0.04 0.000011 11 1 getuid 0.03 0.000009 5 2 wait4 0.01 0.000003 1 4 write 0.00 0.000000 0 3 fstat 0.00 0.000000 0 3 lseek 0.00 0.000000 0 1 inotify_add_watch 0.00 0.000000 0 1 1 readlinkat ------ ----------- ----------- --------- --------- ---------------- 100.00 0.028536 7383 2556 total "strace -c" emacs when running the CPU/IO job: % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 30.79 0.013978 1 15384 poll 21.05 0.009554 1 15799 12395 recvmsg 19.44 0.008827 1 6538 writev 13.96 0.006339 1 12446 rt_sigprocmask 6.97 0.003162 2 1554 pselect6 2.96 0.001342 0 3108 rt_sigreturn 2.95 0.001338 1 1551 read 1.88 0.000855 1 1551 ioctl 0.00 0.000000 0 10 stat 0.00 0.000000 0 1 restart_syscall 0.00 0.000000 0 10 faccessat ------ ----------- ----------- --------- --------- ---------------- 100.00 0.045395 57952 12395 total "strace -c emacs when running the CPU/IO job without global-auto-revert-mode: % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 37.41 0.001833 1 1860 1576 recvmsg 27.88 0.001366 1 1619 poll 14.78 0.000724 5 142 pselect6 7.43 0.000364 2 201 writev 6.29 0.000308 1 570 rt_sigprocmask 6.06 0.000297 1 318 24 rt_sigreturn 0.08 0.000004 1 6 write 0.06 0.000003 0 8 read 0.02 0.000001 1 2 openat 0.00 0.000000 0 2 close 0.00 0.000000 0 6 3 recvfrom 0.00 0.000000 0 1 1 faccessat ------ ----------- ----------- --------- --------- ---------------- 100.00 0.004900 4735 1604 total In GNU Emacs 26.3 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2019-09-16 built on lcy01-amd64-030 Windowing system distributor 'The X.Org Foundation', version 11.0.11906000 System Description: Ubuntu 18.04.3 LTS Recent messages: Making completion list... Saving file /tmp/t10.kythe.json-decoded... Wrote /tmp/t10.kythe.json-decoded Quit [5 times] command-execute: Buffer is read-only: #<buffer *Help*> Mark set Quit Mark saved where search started Quit [2 times] Mark saved where search started [2 times] Quit [4 times] Configured using: 'configure --build=x86_64-linux-gnu --prefix=/usr '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules '--libdir=${prefix}/lib/x86_64-linux-gnu' '--libexecdir=${prefix}/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --sharedstatedir=/var/lib --program-suffix=26 --with-modules --with-file-notification=inotify --with-mailutils --with-x=yes --with-x-toolkit=gtk3 --with-xwidgets --with-lcms2 'CFLAGS=-g -O2 -fdebug-prefix-map=/build/emacs26-TP6iDo/emacs26-26.3~1.git96dd019=. -fstack-protector-strong -Wformat -Werror=format-security -no-pie' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro -no-pie'' Configured features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD LCMS2 Important settings: value of $LC_MONETARY: en_CA.UTF-8 value of $LC_NUMERIC: en_CA.UTF-8 value of $LC_TIME: en_CA.UTF-8 value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: GNUmakefile Minor modes in effect: shell-dirtrack-mode: t diff-auto-refine-mode: t global-auto-revert-mode: t show-paren-mode: t display-time-mode: t savehist-mode: t desktop-save-mode: t cl-old-struct-compat-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /usr/share/emacs/site-lisp/llvm-6.0/llvm-mode hides /usr/share/emacs/site-lisp/llvm-7/llvm-mode /usr/share/emacs/site-lisp/llvm-6.0/emacs hides /usr/share/emacs/site-lisp/llvm-7/emacs /usr/share/emacs/site-lisp/llvm-6.0/tablegen-mode hides /usr/share/emacs/site-lisp/llvm-7/tablegen-mode /home/peter/.emacs.d/elpa/go-mode-1.5.0/go-mode hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.5.0/go-mode /home/peter/.emacs.d/elpa/go-mode-1.5.0/go-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.5.0/go-mode-autoloads /home/peter/.emacs.d/elpa/go-mode-1.5.0/go-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.5.0/go-mode-pkg /usr/share/emacs/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/26.3/lisp/textmodes/flyspell /usr/share/emacs/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/26.3/lisp/textmodes/ispell /usr/share/emacs/site-lisp/rst hides /usr/share/emacs/26.3/lisp/textmodes/rst ~/emacs/prolog hides /usr/share/emacs/26.3/lisp/progmodes/prolog /usr/share/emacs/site-lisp/latex-cjk-thai/thai-word hides /usr/share/emacs/26.3/lisp/language/thai-word Features: (shadow mail-extr emacsbug sendmail eieio-opt speedbar sb-image ezimage dframe find-func completion help-fns tabify man novice pulse misearch multi-isearch solarized dash quail inf-haskell haskell-decl-scan haskell haskell-completions haskell-load haskell-commands highlight-uses-mode haskell-modules haskell-sandbox haskell-repl haskell-debug haskell-interactive-mode haskell-presentation-mode haskell-collapse haskell-navigate-imports haskell-compile haskell-process haskell-session haskell-hoogle edmacro kmacro sort autoload radix-tree cl-extra lisp-mnt help-mode mm-archive network-stream starttls url-http tls gnutls url-gw nsm url-cache url-auth vc vc-dispatcher server erlang tempo cl perl-mode asm-mode conf-mode jka-compr add-log rst haskell-mode haskell-cabal haskell-utils haskell-font-lock haskell-indentation haskell-string haskell-sort-imports haskell-lexeme rx haskell-align-imports haskell-compat haskell-complete-module haskell-ghc-support flymake-proc flymake warnings dabbrev haskell-customize go-mode url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap find-file ffap etags xref project sh-script executable tar-mode markdown-mode noutline outline message rmc puny rfc822 mml mml-sec epa derived epg gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader elec-pair mhtml-mode css-mode smie color dired dired-loaddefs make-mode python tramp-sh tramp tramp-compat tramp-loaddefs trampver ucs-normalize parse-time format-spec smerge-mode prolog align shell pcomplete vc-git diff-mode easy-mmode js advice sgml-mode dom json map imenu thingatpt cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs finder-inf info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv autorevert filenotify grep compile comint ansi-color ring cus-start cus-load time-date paren time savehist desktop frameset cl-loaddefs cl-lib mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type 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 elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic 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 charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting xwidget-internal move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 791439 152674) (symbols 48 44537 1) (miscs 40 2000 2396) (strings 32 134121 30613) (string-bytes 1 6691533) (vectors 16 70253) (vector-slots 8 1997947 168512) (floats 8 365 431) (intervals 56 50166 2906) (buffers 992 501)) [-- Attachment #2: Type: text/html, Size: 14345 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2019-12-17 1:23 bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode Peter Ludemann @ 2019-12-17 13:59 ` Michael Albinus 2019-12-17 16:17 ` Eli Zaretskii 2020-01-05 13:04 ` Mattias Engdegård 2 siblings, 0 replies; 14+ messages in thread From: Michael Albinus @ 2019-12-17 13:59 UTC (permalink / raw) To: Peter Ludemann; +Cc: 38644 Peter Ludemann <peter.ludemann@gmail.com> writes: Hi Peter, > This problem occurs with emacs 26.3 but didn't occur with 25.x. > Possibly related to bug#33194. That's a good catch. > My hypothesis is that emacs is monitoring some files that it shouldn't > but I need some help in figuring out which files are being monitored > and whether that is indeed a bug. > > When I run a CPU-bound job that also does quite a bit of I/O, emacs > becomes very unresponsive -- running "top", I see CPU usage for emacs > go into the 50-100% range. (Ubuntu 18.04, emacs 26.3 on a 4-CPU > machine with SSD disk) > > The job I'm running is > parallel -v --will-cite --keep-order --group -L80 -j8 > (the problem does not go away when I change to "-j3") You are reading commands from STDIN? Which? > As far as I know, I don't have any of the output files or directories > open (I have global-auto-revert-mode set) -- all the outputs go into > one directory and when I search the Buffer List, I don't see that > directory. It might be the default directory of a buffer not bound to a file. > I upgraded from emacs 25.3 to 26.3 today, with the same . > emacs.desktop, and the problem wasn't showing with emacs 25.3. In bug#33194, a patch for Emacs 27.0.50 is mentioned. Do you have a chance to run this for test? > Any suggestions on how to track down what's causing the polling? As I > mentioned, this didn't happen with emacs 25.3 with the same files > open. It also doesn't happen when I start 26.3 without the > .emacs.desktop (that is, with nothing in the Buffer List). Could you show the contents of .emacs.desktop? What happens if you set auto-revert-use-notify to nil? What's the value of (pp file-notify-descriptors) ? What do you see, if you remove the comment of the message call in file-notify-handle-event (lisp/filenotify.el, line 93)? > "strace -c" emacs when not running the CPU/IO job: > % time seconds usecs/call calls errors syscall > ------ ----------- ----------- --------- --------- ---------------- > 31.63 0.009027 3 2950 2534 recvmsg > 23.19 0.006618 3 2057 poll > 13.38 0.003819 3 1100 rt_sigprocmask > 12.10 0.003454 17 209 pselect6 > 9.17 0.002618 6 466 writev > 7.62 0.002174 5 405 rt_sigreturn > 1.21 0.000344 57 6 openat > 0.37 0.000105 4 30 1 read > 0.31 0.000089 3 26 timerfd_settime > 0.28 0.000080 11 7 ioctl > 0.22 0.000064 64 1 vfork > 0.11 0.000032 11 3 fcntl > 0.11 0.000030 4 8 close > 0.09 0.000026 1 51 9 stat > 0.06 0.000017 17 1 pipe2 > 0.06 0.000016 0 48 11 faccessat > 0.04 0.000011 11 1 getuid > 0.03 0.000009 5 2 wait4 > 0.01 0.000003 1 4 write > 0.00 0.000000 0 3 fstat > 0.00 0.000000 0 3 lseek > 0.00 0.000000 0 1 inotify_add_watch > 0.00 0.000000 0 1 1 readlinkat > ------ ----------- ----------- --------- --------- ---------------- > 100.00 0.028536 7383 2556 total inotify_add_watch is an indication, that file notifications are in place. Best regards, Michael. ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2019-12-17 1:23 bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode Peter Ludemann 2019-12-17 13:59 ` Michael Albinus @ 2019-12-17 16:17 ` Eli Zaretskii 2019-12-17 18:27 ` Peter Ludemann 2020-01-05 13:04 ` Mattias Engdegård 2 siblings, 1 reply; 14+ messages in thread From: Eli Zaretskii @ 2019-12-17 16:17 UTC (permalink / raw) To: Peter Ludemann; +Cc: 38644 > From: Peter Ludemann <peter.ludemann@gmail.com> > Date: Mon, 16 Dec 2019 17:23:30 -0800 > > My hypothesis is that emacs is monitoring some files that it shouldn't Emacs actually monitors the directory of every file whose buffer has auto-revert-mode turned on, if you use file notifications for auto-reverting (which is the default). > When I run a CPU-bound job that also does quite a bit of I/O, emacs > becomes very unresponsive -- running "top", I see CPU usage for emacs go > into the 50-100% range. Does "a bit of I/O" includes creating, deleting, or modifying files in a directory where you have a file whose buffer has auto-revert-mode? > As far as I know, I don't have any of the output files or directories > open (I have global-auto-revert-mode set) -- all the outputs go into one > directory and when I search the Buffer List, I don't see that > directory. Turn off auto-revert-use-notify and try again, would be my advice. ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2019-12-17 16:17 ` Eli Zaretskii @ 2019-12-17 18:27 ` Peter Ludemann 2019-12-17 19:30 ` Michael Albinus 0 siblings, 1 reply; 14+ messages in thread From: Peter Ludemann @ 2019-12-17 18:27 UTC (permalink / raw) Cc: 38644 [-- Attachment #1: Type: text/plain, Size: 1590 bytes --] So many questions (thank-you!) ... I'll try to answer them soon (and there are also a few experiments I should try first). But first: I see different versions of this discussion at https://lists.gnu.org/archive/html/bug-gnu-emacs/2018-10/msg00997.html and http://emacs.1067599.n8.nabble.com/bug-33194-26-1-Auto-revert-mode-causes-emacs-to-use-100-cpu-whenever-a-file-is-being-written-to-in-ty-tt468378.html#none (the former has a 2nd thread, which mentions the patch in Emacs 27) ... what is the correct way to interact with emacs bugs? On Tue, 17 Dec 2019 at 08:17, Eli Zaretskii <eliz@gnu.org> wrote: > > From: Peter Ludemann <peter.ludemann@gmail.com> > > Date: Mon, 16 Dec 2019 17:23:30 -0800 > > > > My hypothesis is that emacs is monitoring some files that it shouldn't > > Emacs actually monitors the directory of every file whose buffer has > auto-revert-mode turned on, if you use file notifications for > auto-reverting (which is the default). > > > When I run a CPU-bound job that also does quite a bit of I/O, emacs > > becomes very unresponsive -- running "top", I see CPU usage for emacs go > > into the 50-100% range. > > Does "a bit of I/O" includes creating, deleting, or modifying files in > a directory where you have a file whose buffer has auto-revert-mode? > > > As far as I know, I don't have any of the output files or directories > > open (I have global-auto-revert-mode set) -- all the outputs go into one > > directory and when I search the Buffer List, I don't see that > > directory. > > Turn off auto-revert-use-notify and try again, would be my advice. > [-- Attachment #2: Type: text/html, Size: 2787 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2019-12-17 18:27 ` Peter Ludemann @ 2019-12-17 19:30 ` Michael Albinus 2019-12-28 21:12 ` Peter Ludemann 0 siblings, 1 reply; 14+ messages in thread From: Michael Albinus @ 2019-12-17 19:30 UTC (permalink / raw) To: Peter Ludemann; +Cc: 38644 Peter Ludemann <peter.ludemann@gmail.com> writes: > But first: I see different versions of this discussion at > https://lists.gnu.org/archive/html/bug-gnu-emacs/2018-10/msg00997.html > and > http://emacs.1067599.n8.nabble.com/bug-33194-26-1-Auto-revert-mode-causes-emacs-to-use-100-cpu-whenever-a-file-is-being-written-to-in-ty-tt468378.html#none > (the former has a 2nd thread, which mentions the patch in Emacs 27) . > .. what is the correct way to interact with emacs bugs? Just reply to this message, and keep 38644@debbugs.gnu.org in Cc. Whether you keep me (or anybody else) in the list of recipients depends on your taste. Best regards, Michael. ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2019-12-17 19:30 ` Michael Albinus @ 2019-12-28 21:12 ` Peter Ludemann 2019-12-29 15:23 ` Michael Albinus 0 siblings, 1 reply; 14+ messages in thread From: Peter Ludemann @ 2019-12-28 21:12 UTC (permalink / raw) To: Michael Albinus; +Cc: 38644 [-- Attachment #1: Type: text/plain, Size: 29452 bytes --] > In bug#33194, a patch for Emacs 27.0.50 is mentioned. Do you have a chance to run this for test? Emacs 27.0.50 somewhat fixes the problem with global-auto-revert-mode, using the same desktop file (and same open files) that was causing problems with Emacs 26.3. (Sorry I took so long to test this.) Emacs CPU utilization is now ~30-80% (according to top(1)) instead of 100%; and responsiveness is good. Of course, it would be nicer if emacs CPU utilization were less, so that I could fully utilize that core (I only have 4 cores, so losing half a core is notable on large tests). Michael Albinus - you had a number of other questions ... do you still want them (or some of them) answered? best, - peter PS: Here's the desktop file, in case that can give some clue as to what file or directory is causing problems. The "compilation" processes both input from and output into /tmp/pykythe_test -- as you can see, there are a couple of open files from that directory, but they're not being continuously updated, only once or twice per test. begin 644 bug38644-desktop.gz M'XL(`&;#!UX``^P]:W/B2)+?YU<HV+AHN^,$>DO@(&)I@]UL8^,SN&=F;S<4 M0BI`8[U:*FSHN)C??IDE(0D0-G;;O7>Q3,>@K*RL4E96/JI2)?GLC.,_\IP? M.J3%$=^R$]YSD^B,\\C2M2V/G[B!XP:S%CWC[)!!W().>8-GQ*SU+V=P>;/_ ML+<N2>YI&'$7KD>X:1AS/;S9V]_G/"86)0XWLBC<T^8D@Q/EEJ"T9(.3!+%9 MYF6:\>(#[0.)$S<,@$9#$L9=@33J0ET5?L&:2R^<6!Z7$)M"5>N7DX30;YR3 M=LDGU@-Q^&EL^03PW'_GD,B=2(J@BYPJ")+$Z4U#D1$6A%/N)&O-U;F:)!BU M4ZX6$4KBOSZZ";5BUU(G-2YP/?;_"?SGNX$[64RG)(8F%#I8!`ZQPQA'#J40 M^(Y=A_`Q<=P8&`7<-`PH'UG(#F7-:GRW<]7A[R:+@"ZXJS`(^0!%X6U=/O*2 M`3_XS^<%WDU"4=`4C1=K6:]OU=<DC!T2\X^N0^?0)\K%#8#7`%5VMRYV9W/* M.^Z#NUTS"2D-_<HJ$`QE-I#8<>A!OU:<0!7K"ZKG8>Q^AR%M$K!QQF06AR!F MW@Z]D,EOXEGV/6,<KMN5CW.7$JSTPT5"JAJE(]JM@!L3$O`SR_<M*'IN0/@D MLFRP4RR2*07U@@*!5D8NAPT4B#^)B.W",&;>*IHG:;?9>/AB,)OX8AS(-PD6 M#(L,H(Q$0%)KLH%#D<X),@`%#4LT#+T=$NI2C\#UT7(IWIU_]#.]S<FC,''1 MGA`?1FSJY^X$R)UP,?$(GVI[*@/7#@.>KB*2=6(M:,C'EIN0=<$+'TD,!7L1 M)W"[C'82+C<'O-8,4=O$YT-B%987S:U4JM/07B0\W-VWHA1CV3:):%J!>K+P MO'0"4=G<!(;@N725,9K<NQ%/K>0>;@+%[SQ*&SLBP8,;AP'(G'(UL]V8ASYI M,!?02!TX>BY>E'A1;X#W3I&VYP)]C:L-SLUQ_ZK7)H%YWJG?C2]X`["7XR]F M_\J\&G;O!KTVN(L$27NCT?"F=]W^'ZZQ2&+6F4>2)')!0O^!%".@Z`^OS:O. M=>>R=]OV0C"71N&(6G]M4#]JU/OG/7X1N,N&**GZ?S*H1%1!@RS];61V>Y_N M+LWQ\*9_/FK_;<3U;F^'MV<`#(:7Z5CZW=[UN'_1/^^,@9&M4=UTQI\WY%.' M_ODH#M&7XW!:Y<J(Q)ZZ@WVR2=VVXEFXBT[EP-`HN+28;)7S8E'!@+28XV88 M$\KM,D026!%2P3A_ZUZ:Y\/KB_ZEV>W?CMH-0NW&TIGA__R"^=G6&H?DG;OQ MY^%M?_Q[NQ$O`N@:>!8AN#1FCM_X#8P"71M=93W?WEVCQF#76_1`T/UT-S+7 M:H!PI]N]A6(;I[(5672^?8],MX:7UQU00R8PG.WK(=ZB-_H"LYUWV.^VZ=Q- MP/?S#HD@.&',0NKN54;23H>7*79OT+OY/+S>UFX<Q:C7&;<3"/?(]>CSX.N@ M+0)TW?_-'(T&YGGO=FQ>]$'YF:"2Q&O8X/Z3AFWQ"+A3%V^>U.V8YNR.>[=7 M_>O.`#J__0KZVVZ)=5E04?-ZMP-UT/_4WE4PSYVD$'9S<VF"X5R/S?[UQ7!G M-H)%-&N,ZK-HQELS,-^6T!+7TWUW>XOM,HEE8F@QOH`$;#E3B)O/G5&O+6$S ML&ZPE!XHR%]=?VWD_S7>-?S1Y]Y@T&;V/K&2.6"^CGOF5VB)$E<E`;O#P;>7 M,"Z?EU2-A2;`_MJ_[@Y_98:'K(Y^[7^]2C6G;!_)H_O@,P.]P4[_WFM[A&:* M`)XHY6;4GEFNU[+H/3^!!<J,9'(U!\-SD#E(U[P=#L>[(DZ5X?KNJG?;/]]V M=+E7&=Z-;^Y`)2A$UCAMLM;=+2^"][RZ,H<WXW;_>C3N#`;F)Q1JU8U354NU M=W-NLLIN9]S)K)39_MR*26-MHR5GP?"M$DVK\6#%3'O0\IU&M@S<NN?X]YM> M>RF*Z<QVSL\1_ZD_0&-G$S+ZG&G<#1B7**L"F\K?QMWA5:=_W79]6&4$4Q?] MQ&?0I?(@41:_=C>&G<1V(UK=K^B<9,;$IAYL/[J?);N^UR%3LHSBACVW@H!X M22.C;+VX!?J>WD7G;C`>I?<LB6J&0\B$6H<.K(5'Z^B+*BSW_+8'$:X1QC.P M-[SW:#7`*6&AN"%,9UN#:Q(2PJIJ*/A'-B6QHIBA.)4FR%4-IBALR9-I> M,,/FDS38A"@E6UNZ/AO#AL<K=.4.?$KN'<LSC-.6:7AG)XZ/P.P'0U`N7-E` M&0(S*-SP]O>G9>1;@6/1,%ZMI<34!**$.1J>?]GV2_=DA8LK<)+SC+>OX^M; MQA5RO>'74^/YQ(R'Y]T`@K[GF>!5"/>/VHX!_:,&3=@(F'>A\8*L'4LZ;\PS MY:(`2?8*B5UVO\!T=D"T;,4#F.&@6Z6PZ^IN?W0SZ/S>;J$-##K7ERC,NU'A M*[I?4L<)([SJ7=^9-[>]B_YO;:8G?#H'5Q!MQIW;W[?F`6J8;]M&`^/G@R'Z MCHH%5;JFPDY[G='=;0_N.=[N()_@.&D++<=M"^*9K+2\@`%:RY^W!:$5N6U% M.)/E5A(RO-IRUL#$2:O.!+%EE^`P9K"(L.]B)\FB+>MGBMA*9FU9.%/DEFTQ M0&S11P9(K1``!8&$,F*E19;L1E+K8QW6=PP6$9Y]SV$KMDOP'P6-5=!X<ZN` MORLE>%Z"_8*(>D5CNBS!W\,"U@O\=S<JX!SZ>PXY!;+$NA>7X#)8W*1T[^\@ ME8*/4F'R72K!!<TF+)4:%WR120['D9_#?Y2$_5B"20E.2G!<@JW24"R;%/R' MQ;#LR"T*)3F6!&);!6N/;L%:\EC`3@DFB5.P'\TR!468%`6_7.-O5,W<:0Y/ M_"B'HXE?P+,2'!4PG5DYO"S1+\LTI?X!+@I14#"1/&S`WPM>2T21O2SPX4,! ME\>V,6JI1'1?P(^DQ&M8&IL?*06LE.]0*CR$DQS^1G,P6)1NX!>PE11#COT2 M^%!T,_7L@O[!+>'+<-'GS,M!IP"7=G&GY:.3PZL29W9IM,2?EJ3P4((+.5L6 M<":@3P1XD8-3KX3W%:N`7:<,NT7AOD04R26XZ"B<S7(X+L@?K8<228$/HT62 M%Y)HF</+))IF!8R$@[LQ!,*M10.F`-TD\JS5.E?!8N1F;@D3NE#C9;FJ++=1 MD4"BKGV_PER1E629"7X1P6)@G2]9YR0A>#O84F^*&G]N=`S>4`6-5SKR16V# M#-.-',U:YTD3EKE$IC#5D^<A810NI=:$)7PP6X6D35EGR1[,<,K-=0HG@/Z+ MD2,G$+8Q&[*$/FR7I@2`P'QGD93!#!<B"D8R1$K!NQ#,8V1(*1,6:'63/+&F MB)4VB+>0D;LD7L&!)&]6Y)PH0D6#XLXBRR=MM2NJ]<K6&2NJ4=%TS:8!4GJP MN9-M=AB?6\R+NLA2>2%F.0L92CDNIU2;+,?%,K=%\[I08//F#&F'/BQ_+$SC M\9[KNY1I@#4]C"]#%PYC2Q8JV!+JZCZVLD1Y[2/P%[D>X^]C#>R$>,1.$^;S M-/F7I2O37&K"&?`OR[JC[*UX!HO=K%3.'R.-!/:!5R&]8O9OHT^'."S;@'>+ M0I=ES46C*4B&UF0V:\5KE*BP^3R)8O*0Y3T3[J0V6;@>!0;J;&M6_R,!*6/2 MW\'TB<C2L]M#%`6M*2CI16/U0QO<!M9P*EI'#3R$:8?A/7'JT:H&BF08S?0W MJV5H130$]L/Z@'%9U)ZS7D2%]6N:ON4&ILFH10[&U#P]S6<?_5#F'PY2!.5` M_92J]/,`1:BSW4(]WVWGFI`Q^:_1!EF2#+&D"K)HZ%J%'F1[\WKDL0G0#38I MG]*Q#=R$LHG15)7-8&Q+&:6LB:=L4BH>'VT%'S\,PLK8XUCQ?47HR1]V5&;_ MJYZ=8)P@MCMU\6'9;-]#E#+59%9^WD3IJE9^]M#<"$S/QJ6#'VYD`4P5\O"E M"A41]%Q4!5[IBEV^*8GGO-;[)%9%T-U8MA&BGHIEF^%I![T9*\07Q#+EM#*2 M/1W(*L+?OLIJSJJ"&$BG,EH(%2ZBPD'L^@?C9>%K[1XVG-GS44*`?X?Z!>$5 M?H$YTU*$0"/^Y^G68V??31)@A\='&CSL%0,HL#MD=-2:)6DEKJFXVIZ$7WX= M=RY'M8W&S'3P(`'E/IP<V'[=00([5GO.H\"@\5^@.3X>RFA-2A):`Y&(.JP+ MUZ1D!JM`?KH(V%-V)K1UG6TE!):UGL.G"&976:?1V>H>^S)^H*O:HTOGYO1; M@*D;?&+N@?^LX8,$N&`L,R<K2LQP.H7!80V(%2[V/#;Q`AZ*!#0Q4510#@C$ M%1IRBX1P]!$3>%;`$3]BSV*6P``2=0(L84BOPS59)7C!9_I3\$5.(<AL+)OR MK,U<"OL%WV=WAR4!:STCL%BP8^(S'O'`17I)1^-;]X3_`P<8^^R'X^,I`/3> M@5TQ,BEB!BUY="./X_FL!5SR65M0%SO"XISFQ8PJC$APLL$V"(/$O,7TYR3] M7>LNECYRBHY/YVT*C'Y8TS_DJ,US%'+3T+BFIJD0YB1#%CE%3@]2K!OFAR76 M!R;8Z0<,,21PN"7X].7I\4C$O].1B+<Y_E"UO$G#!A_%F>\^?>5YAY]VJ`&9 M7I]IV#BO\`XIB/2,`M;=!1',!XLB'*#<=`&WO9"Z,"X4WK@`DU"-CL)WI&[G MB51$<?1$*J__)'5W`5AQ8FIC19C-(O-,5;S^'T0RKF.V-GZ&^=-2)J8IY4M9 M/95:X(2/F?A52=%A3ZIABW!!F:?8K99JIYL9G)V#+L^D=&!Q8\7`6]JM(NFZ M+.O'1,_K$SVZ49GH8:F%K76RI.\NE#7Q92OE@Q,]E7P9S0/9DJO8.F!_7UZB M)&SW^Z(=_K.K^-+N_J`5/$R$7EK!-P7]H.1(M?"JLF25POO)6;*WE]KVI@<7 M<N^>8'BK3,A[)BH.3$HT-?&"5W3]G)>%3SHO2+)0F92H"(X'!)0#0\\1>40> MD4?D$7E$'I%'Y!%Y1!Z11^01>40>D4?D$7E$'I%'Y!%Y1!Z11^01>40>D4?D M$?GOB3P>D?__<$2^_`[*P2?DGSTA(KSTA(BH-YO:]C&1?U:?(L1C$Q1UZQ[9 MN"<\\')/8G:NQ'(<?AZ&]]R']9EDA^`A$(8[\2Q_XECI46(\-Y$VY*`CAIH! M:BT7[B,E?O2QQHZK^/?P\Z$X;L%TG<^/*)=J_ECX$8_'/4O'E[&+[/AT?FZ? MGT-U&*_PT/>?C?5K3(WM]YEJZ4='\*,T,$MA(-?U1G8P'%]I@*951_;+<[J' MI%YO7('HINF!=W:(/W_!:*O)#ITHIC??.?K?^/+[^'-O%SVZ^S0:-S[=]0?C M_O6H\>3K;_OYO>UUNE>]NK^?:$8"<]VYF:Q\<$=/R6!#3+M<3^+P$;^J85E6 MG9VO_Y/1/"RR>E!5ZMH-*@JF8]&,YH!N7BBV/:]G(`6[+\R'<(@DP0;=B"8H MR2T!E$[7[65N'Q>KB"1SXH`P'-12N6%-[!(W!^K?GWN&5J_OKWQ*3W>;)&G# M?,IS_65?%\JM+'ET\7-B7CC#8FS%J\8[S-B/S'3*^0'\)LO2*,&VGY[?E[&T MOD["D"8TMB+S:9O^:2K_OC?*I?E-?LJOK-^UW5]MLE.&K_*BKV3YY_N;*K5- MA5?2Q,5"VBAEA5WU?HV1'FJ-`)49_/8M>7A+8]F^TS.3<V!?IND&+LU>;=P? MFNISZC\;`<L!H#IHD"58N9WK[0$!<Q]3.7X_U\N"Z6='546PMV)K$<%HUN'; MC*W'=9A_5@+"P;(R`_+X0L&^Z?W?29$K?<RN*-?H)YPUUAZ\NCK(H583;;P* M_",=;7UGX0DJ%,,3)+!V@DV5Z9#)8O;2>'&0J"LG_@F[9.COA]SCF3M6S&WQ MT=6&OZH8+/<\R8MGZ1GY/Z41Y>"5B7W'*'#MN[[@RPQ)PR?QC,`:TRVUC_!- M5<>DB\@C=7RUEP0'K`X*]4IC9N4^!MQL14?UA*[@5BLKFN;-K7U+C0/M/5K) MC-Z<Q?CBYH;D4]IL`Q8V(``\X.<'ES&9)NEO?19N4>-6L'N@"&#OC-]JS[Z* MD7VKG>-Y;OT=#7QA@3B<&W`)OA#/WCSEK`01V68>*5J_Y&\IV^R[\NN=/GXE MGMN<WWW;<:3;17TH/LS/7BE!U`GQG-!.WS"9L:_,\^E;H`3?T67X4Z!C'PIA M]`!I:6H%BG#)?S^<K%_AR-]G<6&4Z0?HE::A:YRA:9RJ:NGWYS-BEFA(_R0` MGZQ`0/C::NE/`["/.6->X@5B>68/C>2;Q0_I*JV0RAY1<`FSG%PLHFXP<E$V M#%E[C50T'6!9%61.-Y1#!7.H2-XA[8']/E/_8;H('`O=!TCP.8DR*3*"IBZ( MBF&\0HC82FSJ(LA25>4#A(A_N,`%;M]*MS;]`+;8P7Q(TV(OM3OV621&KXJ2 MMD_#J#7)DZ:8775A@`'%SV<D:4_<4_(SM*;(&4)35T5.%J3WD%\Y:\?$4\"' MFA[S0EJJ*N++E<304$E40]$5$*KZUI;VO(*4-./'5`*_B95*05.5=U((2>%4 M3=4EE5/%0]SUID*D?PSD,79IYBE_7(#E)1#2;Y5?*4K\S`TC5U#WWT64JMB$ M**'*"OXEF'^9:\K6H(5G*A"O%)UH*$^:XH^)33)DA6NJNB)JG*2)[R&WIQY7 M(,%&Z;5"$IK-+3'1-Q02A`1.%PQ)5CE#>A<A/;'>WLU38XL*W&MM4Q;2M94! M"O#V2B:`9Q,%%91,%'2=:S9?[N;>QCBSO=_:-(OB*^4&OON]#%/@%%TVP#"; M.JY;P;7]Y#`:A?D"JP!?*2?94.5T0Z,;[R0K6+%Q34F398G3C)^H7OGS)20J M%S[X68&?I8^C#UAS2<I:HZ2FVFSND=2V9#;?Z:^2C@+['4Y4FIRL'K(:>TO7 M5:0&UUXK!U_KZ"4EVPB*RCNLR01.PL4#ITNPC0;/_],,;^?1"'-3/RRM=+_W M+E8GP2Y0X72EJ8&@1.W@7,,+=S*EC<PK]C&:*&;+SI=F4@38Z&I-6);K@@RK M?_GP9,J+!I@>G$@G6_S1-9#Z?O%(-&1#AS40[%301@[9N[Y(&+N+1"A)-)01 M$Y-\V;-1^B&K>.N%HM8$DU!$`=93HJQ+H#$_T=GN?="#C:J0+S$B_`AC&I<4 M;9_/W2\44<3X`_L_637^E[DKZVT<2=+O_2N(?C$6`]MY'X\+]*(QV-D#F'T7 M:)MEJTN'6Z+:=OWZC2"3ARA1RDPQ60-TEYCI*ML9C(P[OH#[.+LE,\QG_I*= MP9`*I(@VU0\')K*2L6"22,'A#[A%($"5GM-9[7*=^+>.5G=8^?:R_0B_3@+X MHJ:&$*.QV?[%$A=O$;H+8#0R1C.C)Y>Z5]AEI%X,_^GXEX(TDI%.3,-A@SF' M:Z$R@_^49;9BG92<,Y9J_V/?&G/UX]T?>S])PH23)(P&QI^5`<8P"HQ]<,/! MJN6IW<AKJ6='@?[:EPQ"*EG?&'S2$80`40K*1G&#P8G93=32MO:\O5$5:U[' M!0V1DYLM0"EA01,K8I#*C/K<EUA*';%+"C$K':48'[LYOB+6@&UB3*8Y)02, M%ITD$7&A,@MH;!JAVGL.,DF(BRE0V=V?TN?VZ"J-13`.I4'/"/8SPE%PC,.J M6.#LOH80IULA]`#_JQ8HP08:T@-->RHXX6"U\KFY`4<+*M&0X6@5I%<5<^D[ M:6PP1U#0I]*`=P-R521+S$U81%UYC"=;O@K(UGDM$:J#@50$@[C::$K!@ITS MUG:F.O,7%P>?)$K"*!F+N=V@@A3(;8525BG">";)Q*4']>_X:U<"C[_QRW)7 MO/C)#=[(T?Z5N3`"HGL+O_[;95Y1&9.:<W@V5-/,UNG-2=Y_]_*G>?,,WDR" M-\^DLCJ3&@LF,IU&T71E_;ALGZ)SC;4,I:-JY`:"2(QP4RR_X023M-,;KKU" M_$H^MH]!JM1P,;@3GM)19I2`*LFD!'6B0"/YB,>H*-D9-?K\EN_VRVUS]N-E MV/E-;4I(IL,4J<B4@"N?<6*5X*!DTE6X_-F]XY@CDJCW*^!/"]:SLE6FE$]? MW-+K?ZB,XT-,[0[5RK#8`\+!1`8"6V*^B$S.P%U+1WV^&-.?B\C["<>CC%"L MM+%@Q`CC4\$VA>?<1&?KTKU%-0G(2>S3K?C$F'OI5(Q%%&X0WB*C5D@+:AR) MEG&=Q/2[(-_V^7K5\$WO.<A%X+I6;QLWT,M?L%$CX4].I(%[8462TL=+PAU. MT!?N1\L0$DCA4LPQ)!!@QAE.F1'H0\]$`NPG?(1OB1-XVO=_M`PYOV"2-<4( M3(93`-0:2$A0`Z#JDL3MSU#@\_T9A$K+$(]5L;;;6.#!VJS&R590R:>65L7S M!L6DN;1:@8A(4"'E_)Q>]U^8H\.H/G<V]'3.D/R:;X,GY@ICL)SKC%GBZ=KT M>PEQH_<<J.&I4X%:ZU`G'GYY%`,9M]8R-,=3IN0N=NO]XI((S>)NC4^^`4!7 M!V)4:`(.#!Q#L23&**,S,WUFW^/\S_LNA^*>[^#3,XOB9!AE;"QJ?O'L)*-* M4L%P\&ZZJUKWD(5=4^U$T*5PQ-G^SBL7EF?@BV/5/5P8:K`:*CP84;6OY9_W M8$*:A_*SO-\^[;<K^%+](L>^$MFDT1-4GJ\6SB@H',[02BH)X7.OI\Z0/:U@ M(]^\++:[?/-:M'P^LN_-\U2?V"W^9*&@LC,NM`:IE[PV_/R-[S*&@;E"<,?Y M#2>7!AQQKK">4'OY.PF.WI/UG:CW/#Z86;><'LT1`MH.0T\I?-EA0^POO:1P M;\\[,8Q%0\<"T/.T+),$S@OTPG`K*+4D_MF%WNU&F4W4J::EIKHF!3P2&JKG MX+XKP6FFP$YC&L7'3TCS#=NY*QJ=[L76G[M"$JX31*]17E)F\8>@K2A-TM:0 M,RZO(]#*14FZ16"L:!`)\W)H,`T*JCR35G+@/)/&WS_3*W]ZB8)41:2D!.FH M!.@):J0`W][8))6+#DD`G^N/2,,H5#+2JD89CF@H%@\ELW<1Y"#0V"62G'+G MG1N@?LVDQ0"T9MBDB$8?J+JX]-KKLKP_O(.^*A[V;W6=VW#G;O_F6]WE^A?8 M:&W^^&G`T"&9@IL&I[%I6'!BO`;\GA>^%MUU>MD"N$&HH]]'@<J"6&[`42!S MMG!W]'SFB[QM_NN>XUO_:AEOQ5B-_TTDLQQ;(X4F6F0BHNE]PA[=/HX'_KW! M.EB@"LTNMPQ<H`K<5/"FP<BB6=71ERC1UU;?]HIM(]E$7\X:W<8DE#$LI.*$ MH^TP6W/$[PY\I?PL*RH-UG=E\5GZL0(HD`A+"20V0:=:8_08[*4D-0X7>D-> MBPT#R?V]:!-J_44DJ\BA!)ZJ0X2`'8U6B"("KHU4J0,T_L@]E2H[OQ][WTY, M[RGOFR06S',CM;%9&M=D0$8_2"/\E_W%W>O6,\BCF>,YK<U8^C:L]1.H)*AE M5;.)MAA9G8U,-983?KU]FBT*"C8.Q9@7UIN!69R:-^J@\-,*OF-;MC%8ASBL MUM92V(269H+T556;O8`/RD`A^>CD*3MGON7?"_C.C30Y7L:#\M2FG4_)>Y@0 MP68TH>!B8-<X<(VQ<^,ZN&)&W6HN?6N?O2O>8VFH16U5QVJQT&W>LOF.6LOU M^W97[MNFV<$Z-I+&4YF&%=V,`8)QBT$(/F>S7T>V)_B-X6>TEW.PCF4XU_;' MZ/2%TS7AE`'WRS"-@8'4OFJ-XE?[5>WC#4!^3(HHYTIBW%%)EBDE929Y@L"U MBUA5YPZ,60G"G+>MC_IN!CG:*\$K/".S5&1*4L[!@I/AP:N'IWS_MGNN7UCW M[!NL$B+^]5`+9B?XOH2#Z\/G2+,ZDV)@8<1$Q)N08VA&!3L.-0<#0TOP]5AF M2,J^PZ-,8DD7:&\7;4/[<".H=H8W04HQBHMQ@01"*)59K!FQ48AMX=)\_[%\ M7]V_P"E6C^M\T[("R*`C7G#K($,[0T'VU[+XN%\O-]M=9X8*9TLPR\>22Q>( M1#1!B:T-5B.P)/?C0N8(H5W;3O_^(NR>-,J-J`X-TB<F`@2@AE!,-A!C5`U( M-"N78)/Z2\4K_Y5O#OFJ89GJ</<HZW&@3R\M?_'+`459H/%."FR]N8:"UE.9 M5@23]I+.D0#P(MH&#"/X!W!!<H09/B7;V%\(()R@CG""CD*P7:0<_&D95O*! M;)I;*(VS6['>+G\49QAM\(40%B/,W,)B@F"85AN3<39']J-/J!1=X?8:-3R; MPBOJ&*XKI4;1STO7O//D`OK!,ED-B@,]7[QVG7B<PT6Q&;BQ,_9EN:+LYU5^ MV`\KM8\VPQ!YE!,8C-`.F]9+/>F,*@.O&P&=!'@9:>Q7#XK`63[RU?<A38ZW MPTP[3EP(!)^"J2(EQ[R6X9E.8]E=)\I^>]@]#]GD:#.(32BKPZB2J7`F`0L( M_#-CP8CCJ9%F4%3N7HJRZ7/`YX8*O><PB`CA``%"0ZG5X;%9FQHKL)UQKDZ/ MJM>E^'S/-VVKR]$JZ/@:'.RA;O!Z]RIC##,&2FAL=)%V;D2(_/U]]=7F?7N+ MD/.C>',N3!=+]SP_%8(@Y!^KO/TT0/=5XW:-\U!U!S;%@;UE>,X$[!M;1S48 MMZ-M@.,'-\IBW[+3F:G1':I9>T7^<O_']@E>:Q.</-V*!C:NE0$=:Q"Y(3RI M$-&.9AHIAHWM$W?*N@A=$P();G8ZL0JO]5%<"]A),!2P_X\*.++(S&1@#IOM M8K-:Y.6BV+20PV?V8A-(_%K;P`T\T-"$,9"3-M/3HV)>I=Y^N<;"LP;^H;^* M[B,FR9(A+<$,V!8<[+6?@Q_3GY.'_V*PO@E+)"FC<8YE:!FM4Y4W&IR'70'G M?C^T=M;)3E!CK6PPA:0)4[?-X4#E"C`WX%=/I6[?RO)]@:^R>%EBA*O,J^S' MKR/[=_#I=79^TEKJJ7";HX.)8='L\,%3VFQA:P,_?[_<;KQ[3K^QNM^T_@PV M++C#G@OUO)L#*J*I@0^OKO%;)&0_W(*EN?EKL7]\KHK'=MOG8K]_>&X\JVYU M]]P1(7]Z@K-?URM*NUB$&LM]7J6)T03][S2N9OW6W4N/,R;9E8+):P?47%&! M%L/D*"(^+QTO=1JXVV::`;L1ZK8EE&%,$\1VG</+'B=6+0;AE\S+YQ:6\-QF M$*J`Y;4MRD4HT&E''VFT(9E,XH=ZDZ=\0\=D@<^M=WYF+VS*ENOVPX=8XEA) M$%0K.1ZN!_.\YSN0,/"7]T?L<[(=%L=P&6OPL4)3U@V-+*8QJ6>G?V(:?>SR M]_<NE7UF+X@ZPC4!XD,L=13.&\F\O)>4Q%FO%E671$>:P4Z0/4J4RZB12`W- M$%()I/W/)@O*WZ_-XF.[^SZ\6*?[@=%A=[/@(9)$G(/62I7C#R/2<8G(Z580 M]X@&GYN2T.AQ0QHCK4+2S.'C7B%-C2[6(TQO(PPW3[N8.F>C8*E7;Q6U4I)4 MA*G1`3_KT'']&5EZKCB)LWQ1<%A-5,;25'Y48=/=[O.S/F7W.%>-?7=.02A. MA9%)KG_5,-S$:'[<6.'K1MR-VJ`W1V<8PMV"RY39V6`%6Y#H>DI@W<=:A7-[ MTW(&6]%Q5'L-AV,""G*BA`')Z34D)HJ?5BM7%E9_AG=,<J[J:`\\L3B'!J$5 M&&98%$OB\)VVRSTM<49Z5_S=6\4&.]5Y/+5)N4%**T3&U-QHBPF]8<F;5@-+ M@^86=%31',<&,3UWV49'%?Q9QX9H?R?(SN*RN4V"1Y%#$%T-)DM9)E^+V^!" M^=HQ4^JH$.4"M'KSZ9>*8PCP1:W)1.VAA*F1W[8?F]4V?]D__F]]__F#>A"/ M_X!7G[BWUCC,=3L]:$U+&<S)@K]O;1+Y6H,XUJ'5/^/L+MI`]09"%[8GU(PA MQ#8SR2#&SPWBP\;@SK3HK6(3]#K-S.:.3(9)HT`ZI';B/>X3CE%OB-=[CB2= MU=*Y*6+40YV`@,92U#;4S!$%P6^P>]MNP:#=%44)WZJW=5A6?^??W]\?_CK4 MD(N]9U^()*E-XPB,"J!K-`'2@QL,S)L.)NG'U\/V4)<$]9[#K54KE7)I67"Z M1W'"+I^85]-=<8;C+&6`#1S/8`(.RS<OO!T6]+6L3=FC96P;H]/4"5T;CB5U MQ(*=DF:XT'D2/M?T>/R_"MFH`:%_VY9[^+\OCDZW8K&+:FN.)_.R>0:.*";+ MC/*X?<O]]GZ5E\O-/8TFY>JC>'K\^/B`+WR4V]H*QE_[L\5<.5KY(ZY0QET# M(CQ$7DR)B-LXR6`N-/939V"ZV*+D9[!__4FA!5:U"Z]!U)$(;TXDA5;CG8?< M/^,)M#+/SP7@E40&]6QT!)QQ&S<&!B\/Y>,?^5]Y+2,6Q6=>%Y+5KW7T*V$% M0E'P?>U1-3&2$Q"@L\73'5W@H[WJO>>`B\ZUJNU]32V/"YO#^;$<5V56)@77 M;TX=R.*<JS,XFV<XO$]87R8W%"'>L.[B]JJW-.DB'*=9*SZ$T8R17H9+#<Z@ M21'&N(AE!%H=38.W8IV[CY;9CY?^_"X5):[M1$H5../8401<#D4$Q7[K%+#- M/QH@TE@D4I<>C/3?JTDR5H!?F@PJ;HSW4U2Q2.4,F1[R3`#W"^`8(1!F-UG8 M?U?`>19"DZ['X'@C-JUD+NJTF\U=8!$&(B'37J/&TAAXQ6ZW/9:3_9VPR7+* MV0`@TJ,8Q3+L=DS4D.6'^%;#Q/;TQ9$Z<1APIUO>2'#<^5"4C,[V",.!Z\D< M@CU!U&L,=AI>Z@\\'FX$3?(";1GM*V!GEU0<;"D?'S).X'S_HSIC_1%1>LN< M/16;FX<S*D.EA;?]<X"Z2M,F#<RM,057BB.GGTG:4@NL##159+J,P8_:X(CC M!]?%I`-1M;OC4:;1RO2:@C!MAU(I6D80MW8F"1>[3<D(AN*`:Y8&TG@,U_EU M62Y?-]M='=<^7@9S"[MLE%PUQJA0",<^]\"'2DNLX;?!*$BC)`;KH/)&9D\& MYX19I9QBU3#U`KI*HR]K$^),POW,%X(L,:5<YDW*2),=;&>%2'4_!]"P;!$@ MRQNQ'RV]#"HR@4R1!EQ\"Q\)E(L+W0#K!/<(CT8ES[.F9[Q&9(H)BG5P*F(B MQ<-J^YROCA+0ZG&/T/EM6:M+;FP/9=6I6'/!T2JVQDWIX3R.Z7E!2:8LCE9. M-WBO)E`@.X!3,.CV.A/!\W\[OKR"(!6JA4*?.&5<"8U%_K[LGA[>:H3/X<;= M6[[_7JQ6P<8IL]>:/R=@&LMJ?R5%O:!CFI9JH7QCZ(FG,A+[[5Z,+W=8R;0" MP1F;WO`I*/A'OGG]^_-VTU85##?"1Y<9-[?,Q'55R`S,#L)!CJ:3$8=E:#D; M/SLZ^^)K/D]TOY>/.*,5CGF=[_$OBW]\`E%T>+^G^>:%XD1.>T\,_/>X.KP4 MZWS3`_`[V;GSAJ$#&[F9/RNLC8L"R^IP%/-#LZ2RK[V8#9P-AT<?P*9\A+^? MHGE6&(=;!F?V*5NZWCXK$;>.5=U]<YBBUXCX43RA+GP``?)M^=J,A#R[ZSW6 M3;H!1_@0R6G4&HR<ZEE&C@0QVA]_'HK=%WO\?7?8E/C[-#0;;OB22U_M5+A& M+)P:J#CB1/ZK$<OQ$79ZW;OH,QICAW*)!3YE7A[V#?F.5M[E<>SRS):KE#,2 M;F&JQJ<([5Z5-#F*])Z]>8FXP!N)B[R!*I=$&X&`C>G2]KO0*=M"GVW>B%#F M^'=\%3K"AA.&8^>]-+H[76NIA_JW\BSZ7>@9.Q_"^Y@6SPG6FV^Y0MRO4X/` ME(U#<[R,=6>H=1"K"=T964TYECR3,D%@[49W1M!)N,:75X``.*5(*S]><8?[ MMMMNRF+SXJ*`H;4Z9!)+?O!+^!]96KP>7$0BR`7]4H-U<UG.;T=?F@YVEE'M M`PH3>6^DU<94)0$_6[L.Z5P5+C;4[2^B:9I>"BDNN259E0V?D9HIO"IF:K.M MA_)[HT^E+':Z@J2>HQYM_?7^5<7V[ZO8/GR7\O'YK0`[]WF5[_?`3`T&YJ_G MMV,G22MN6*QAIRW%P>M*):]'S=<XW2;?U?F/ZB>T-7HG.P%EJ3=Z218'6[$9 M!C,-BW&P'!G,G_7CZW;[NBH>P1FJBW+J+^>;?/7UH]B!:_G7^O&W__CGWW__ M[^:Z':VBKQN?"G._)B4"_UG&L<)UKO1\TPN"[$.;N=_]A>\4)=D,^61Q+J/* M&.722$^4N"G9Z/GS\Q'.LORVA"\V#P_/-3[@8'WW_+>_=?3PQ`CDRK389UK& MQ8(5MO=J;3)+DN;CNV[/]6%5+AT\(M:[@6.Q*9ZKP2;-R.[A3FR^35!^-G<P MG98'\B$:A\CX+!&)T7F%"S#/Z>.R&UMX8]*:,=?6)_7T,\];VDG&")=8/#0C M[1K1]&WYN?BVW2W:F]C,%3V_'XUKXM*>X\F:*0AIK*2(VSL'$XXT3AZ6<*\W M^ZYU<K`16Y0EFN)O>$A'026UJ6IQ?DJQ"6N+3=B-Z`<NGDA'VX`FH)4V#+SK M[*?J4[3/=Z@B%OF^?*CMBS-[@<B[V7Y=[%Z+G@9A-?-I%I<843@,2%*2V32] M!U?(!4;L>KN99%RV8K>TUVF<I0[.L$HSZ\*/#-]_+-]KO,?6##O=BK+$#+L- MH;LJFC<(>):BN]27/E6?,9ID_XE?^9^JXNF?)7S#M;M@(_L1\-;ZJHMSC6`, M^U9$&K.UGQD([L7UF8PQ?`E^L4T<F4*UE9E4$>-LJPE(!6O^=Z^T?8IXB53Q M`;Q*X#L4I`)MUBD&`+EW".<+;C7UC=`C)7W?''A91MT0E;ZN"/>-3#O9B1)I MU!@'Q0E6)8_#*`6IC_U4!HL2_R6,A?W04MA',[]U+:@FLD53X]PK@6.>U3R@ M)\<88,^\*?=NG\)FGYEF]EDL:V"A*L<;,>?Q1QWGQ?[P]+AL6TF6-[:2*!<P MIZ/(&S?;X2`WX7(QGGG-O+B%@%CXMMX4^V7NXGE-6V]O$39&T56VD3A\RPKE M1E*9"3WY0*1+`VWR90>/W5^$G%UR[DK`=5=K%=`8`6?7P%PLDUZ-ZU-VC1SU MZ<:VZ'+CIN8)RV-Z*W5FM,96,Z=)9Y<;*"Z_6L%YV_2XQ(TA.K-4$X4XT7-- M6*P&3*Z+_1YK]=L>J^-U"+M8PFHB&:UBX$R!!-P(8C/EU9DXM99='X!MMIMN MX.IP(TSG2I>%Q7D<<8+3:EU5QI@Y`EW#0"'''?@1;8CP>!G?OGMY=M3-]\AD M0H#UCB[G3^"A)HZZ*#[+77X27CW>CNY,:G`3DIDK)C.*<H[()C^IH:_7T7=C M=H03!T,W.J-@`G)1!BJ>9A7/)9C\Z=(@H>5KQ!=J;)AN\7.4#>9I#9AVDD96 M-XXZ@>^[HBR_%N^[Y:87`#R[&^<P4P>I8"(AB0P\*\UT-1UX7M-N^UZ^Y[MN M?/Q@'=;YR[6;^B)I#%85D$%9(Q%[;@XE=35COZC*N@=I^_YF7,38S8M@1L8! MMN',=&:ER6912CZAE57Q.0RNN*V(\(H0\J2Y/I`^0A/.+%`Z0>;%"=&&#,%% MP+X5LJ-T]Q6GPL)]5'7OTD081<_UQ,LJ:Y!O7A;80+)O@(G.;88#3'#B+%UX MB'S[4G#,NRFODJ>YPDMY%U_*;W0>57T];$*#35HMC<U$BM82#V>ARN(VYFY_ M$6NUN0Y3-MIK,P'-E.;,F"K,,[,*W[WLB[+UN8^700J\26$A]'^4_E96&5B( M65#4!E#4OQ7KK<,@W#_^7FR*75YNV]J>X4:LNR1I<I=3:V[!D*0SU94=$1&G M"J`HJ^79TU>)L9NO-N9[M!--0JY.E&`"GY/+JB&()KB.C2-5R:O@;G>'FL_) M%0M@*!=]%3_8E988!/".T_QG(I_+W?-AE>\6"(K?,L39W9LFW*<K\\(J5\*L MP+J>GV(5O!S6ZR^T"=Q355CO"'FR$XUBYF;^6ILP.F$%JY(1R9-/5:+]I2C3 MC-H.D$#7Z^QQ:("RF)9*71KG<'*>EIO'K_R]GL+>/$3762:?OV<1B4)2;$=( M@GAVW2C?_)6OEB\+9YRWQOC9[6C%Y@C)>+K[9Q%"@'"=F12AHLT-,$^,^P<( M*YLC",_)9IQ2#CX)DWYU-.XH[=T(*>3R+0/";^[_^RMF!/'N43__PYSPV[F> MM>/E'7SZ&?I7[OO_4W=MVXW;2O97N#(/F1=9Q!UXS'1G,EDGMSG)K'G4HF5: M9EH7'Y%J=^?KIXH$*4K4!8`$.O-@FP!E2=C$I5"HVOM:4P3RS<E$Q&`:.]WN M#__UW2\_?/_3KS_4S3XH?3M_R=:+?.)\L$CXM?:7+YNW2;7-BB4VY>VE@(GD M-9NW;,C7!K$3:;)!X=A4Z,03P.3?X55+>-5RMUK#;<4C>"U4-T&J>]AU45<6 MJ2@J\KD1T$;@TKRKMKP]C".H3NJ_`0<P#.#`DEJT9_2\&A@MU0Q:6F7+3RT: M)^I<\1B$Y-O`,Q-VR&)@J(`1@H1%L7,A:ZOUY^Q3CF]=P]`O@,W:%"8+O+K+ MC!TX!2G-T%\3)46A#<,%+'RWR$.:I7-QN`BTZP*L&5*$)2S4(UY_6,VUU46" MS7W[]#U67PR(24G"TK$GO*8X.X!@4.6%A.AH4:7<QTMZS7@FI52E"95C[NM_ M^O'#][_\_GT-0>_:GRP@;7-KH$E!TYI.X4TX4HK%H'2\W!V62*?0]81^R2LN MD+?^0&*H#(@,U!A*K#4#>_1]`DQ.^7;HT+ES8X(?M;+HL3S/`*,QJO;LN,!X M9RI_T;F9Q3TLSH@@$<XP"H^^8\9MMEW8(`U[1G9<$2`#D1IV$;FKL!CT2\"F MYCWB"QM88,998!+;;%;`5#2;[8\0CRK\4R!;I1#)2%#6`P!$,;`!_1=17(07 MM+5KL?6G;?%YG^E^4`I-=#@F=+PKOP("I@`QF1`5)7_V&F"U('WQ5^>D/RJ' MSDZLS2N&%9^86-`Q`@85[G1&MPD:>_#+-G\^,A%[57YGTD38D:?3@+0)!$-) MU$XD)MXF9[[TY9!4SKF&EP)QG+8^``$8EYRRI$X&\.3']'6>FH'BM4>[.A$T MC^18;![\ICK1H:[5$_:([`)V]I>AAIL-:8(.")OR*#8)5PK,_\2,PL%\S7DH M.^>A_'L[#P$X00F#@4%B1`HZ=;-]+[LQ*LS$U1?1&%!'\.")LW?"2NR'I+AQ M2+8D?2X\\:%H&3`:L8-%W$M]W+RMEQN,=[)PS6I1`I).4C:A9$+H0[5HU.&N MO>#;*MLZFL+Z<@3496`(V'-4U62M#G;P>C-IV(?+8K.^,8@5C(X*EIEJL\T6 M8,5AJ49F4!.P>6H3PL-<.`3CWHVIJ8C>0Z.YOIRT.+3\CR=K/3@@"6EWE(J? M)0^]!@Q#7F^9T#MGPCCK5N,Y#GY*MI[4'"FP:>H$V\_>\@!)<&.)-%)Y-FC@ M&D@\Y<A@)>,H^;KUGMVVF)2O^?RH^QQ7NT-#E<W_Q(M08(0D3"<\1J)$&RK1 MS1HQ(B6&\Y>;24PP=%O!#E`1+T9\?*"^C>'V,3'FT9BZY[BV16AJ8"F5Y`ZI M#+TNBPQ01]VU7^6C2F\W/3!]AXYA20U!0S2.-J;;;#?9?,9-6/[6H7*FWF." M8\9*5LF>,+<O-H92SI-11'C.])7Y9O6:5<7CLKF$C]Z61WWGTDL\^E)JK@5' M7X-+,527:0.-W@>O04\Z7>V."S3FFGS$-5R@`TJ-<?4N1I9_6FT89YBKPIV/ M0Z06K(()I3W7]WNJRSS;KJL\F_ZR@<U7_?"ZJP#3N*6Z8&',!=@8)='UITP\ MOK<SPFZ>3Y-H>E(6&!_G*G\JLBFT\1/M@]U\<'E66<[M@5-8-Q@3NE%6=E_N MVT?M;;^T2[Z\T&N[?N3:!C#RD>J#^YDL#63;\NMZCL"Q"8%M;>K[Y*R+;F#" MN#VV539_W&P^<?P"JOX"%'^G9L+3Z<>F#=/37]09'6'`$!:)YF[2MZ?1$9,4 MOIE\/W0DMIH"1FI"-52<0\=^46=TD&N5ZEK^YV83<9M#URWS:?;ZFJ\7Q3J? MXME%.;6*+C;=]:`4,"^*5M<EC#,`PQTXDS11HZ2)]?')OV2K5Y2,>\S^RI=V MP:^WP"W=_[#*E?2?TI;&F)NP]8+A/(*'7T*/;?^\Y8^U9'&'4)NR<E0.3EI1 M2C0Q('AQC\050(NA490ZYLK?[F*Q$>O+;+VP(^@PK6=P(SS#1YE61O7L$/,% MBW.#@49F='Z*=DZ*(IS*=+-]Y>1NO4I@D(R&R6ETH'9E-9UGV\5F8H.36ZG& M;4^J<1MFS3)IG1U,RM#923+!*1Y9CNWJ76RF.+AVR,?62&MA$ED-AUW2>M<! MD8Q6K9Q0%J1'`M`HHO!(AL?7/1HD(66/9;7-YE5[PG14#@V1$:0-DM'\7(>Y M^:P)@#.8_)"P48X/RK?B=8DRL;#V8WE33J&,GU4^6&:E@V(`!0RZ^ZUY),,< M:BS1AC+HB22Z%7#F$"X%"U=.4CD19P[A3KS`_1!.2LM#%L2CJCGZQ(TP8&\Y MP'/K*5PMPE;_JK7&GMI0Q<:.'E0%#+;C5!&BE8VRBC7H.&HX$U36TF.P,`TY M4N:;Y;*12BH=`AX#-45$=!2%`$L_?2>F&1LVVL;]?44YR@[#PV(H@MQRWI)8 M&D"`H82U%Z6QR1C3_WE%Q;=LNX;/&D@J#NK][:[4-"?LC(NP0P0`21F)_*=J MC(YV"J3GXDNUV\*V>;V!+P?;000@?^KZV^EJ?ZQLI+(*6SAYHF`^0SLU.I,! M_`N&C^([3_-J/K77#T]3N-.Z$O:7KBX$0HBE$*,A/-.(@-$H3J:BZP8^V";7 M+>T77-MJ[`1MSDXOU]JJJ>#(N!CCW-'Z($,%LZGQ%\P&#)]V]:KH*YF-6`A- MD3;0T8GN^S6ZJUFQPI`:P/";`WP.Z_VY\\#LK5\C1-CF%#5U8)8$FR;&)&E[ MP\([6F*HL.064>SVV`5N70U+3,.4[LS]9,.PO8^(`AO3A7V[MHH3G/Y,J%[0 M9<_!8;'U'YRL#?`DI%UX9MABCP+"=2Z2DYON7F%C0Y3N(;X&T_-%$_QJYP;[ M&M4-682UK#U%/&BU;ZZW/GMDZH6U\V#7,-I1E.G6*=Y!NOX>S]_:O6%:XM!> M2C6%&9V-HBYW$9U=,45JV!FT;(>G1[OM,HH[F]U70QLP9"F1"J#4T3+WBO5\ MN0.TU@`:_$#9RE6U%R$R53#PFZD#$\0##&%HN#12PAZ=QS,.;<M];0)RUC3L MP^DZ*8A4(41,N9D`AQ_R1<N9Y)-EL=Y]F2S6NRE`,BTW\T]YJT[:+X2([:6Z M54()V<]`\[A,M4K&X.L[9JUNLKF>OQ;X<\"G?E0.(]X_H;GH.3]*IN!OHD?Q MXIU1WT1'0>TG**ML6\V05VAF[;UV&WSVCO/!NF'76/ZN0F5@@R3AS]AAYCVH M8'*<S9<%K)\S1*WM3*>KP_I4RBT)LCK'1GH-*`73)A)ECGWV"591P]U;#[HZ M:&6659M5\1>\^+#8FNPG:_V-%*)NLU(U-1JL,DK&[EJ++B/(HE83=\V@Z=LB M/RJUF)VJ](;,D$&>K.\>!WHJRJ6,$[?1P;6KBB4.P_[?%IG#HC<F6@^B87TQ M,10F.N18?H_09QOFTY@"7>3SR5KWP&>NU6VHR(3#9I@D<I3DX)/Q4/4YP`P` M^%2V"]JPRG4E@[GB1CQ@7@:3*!$Q%,FM6=NMU-X;8LH#/42]J;_WZ8XV,(;% MPSX!^DI#H^C:SGK]\*4^&$;R.[3P7%2F:_LHD00+CB'Q-S]'EMY"\-`1(80\ M2B1.D29APBL8'+Z*=U?URUZX$*'EVC26:L90`M7+6=OG)_!NHRL7X15:!.<6 M<HHL:$:Y>JCPZ.PI?\YVRVJZV.YJ/8)OVHMOYYOU<SUUN?I>6Y^!T?WV.L^M M3*DZ4'(4T<V]<^E^KK8P$U;6`36<U^S<XU+N[!;;[/6EDW\Y+'I1[7!!CRCF MO!X]%_#D52+C\%)>#8B!]^[.TGO7P41-AE[L#S?';:`!`EOJ%#YJ#.K*IWFU MF'[,GS$P*/^PS'9E_L<V6Y?+#(\I?]AFJU6V+?\`*+9%MFQ=LK[_$.ZU5<VN M6SH%RESWVDJP=U.1JH0Y;<-O8S.L0TCO2%'^-^`G!P`53&5(9!(0&G`S23D* MSW_^W,YIW947KZBPU`I,G-6VO0H!=")N$J)B^R7V0:3%>KYE[?#K%VXX$%%[ MDMD[#2[-*(/!)>Z=2SL<7$O814[>WM[@QENUF?Z^>UP5U6]9-7_I=M@GZMSW MUY+9>1ZY^,-ZB4FE)&8$U5(<%1A:-EEC0F[7_F&51UZU=0OKLUQ(5UO/ZL1$ MY31-W(,UMJ6;1T.;M?Z$?L'9)RXOA[=>;;G&..-$1M>TP>?^`OO?-;3@=?EU MTL:/IZ+K`Y=O>Q`VT&-:3R]08+WE4H!IHV+R7AVG(2#].(8"("=BHU\WFR^* M=O4X*GN9Q,H>!M!4A9W`*]3KI`;I;&*R3_JJT.'27K^&JXM)W)>1=MO3*E1] M0O&G.G4Y).KBRK.&!SK/R_+@>1_6^3QS3JV*-4L#V5R@P0HY^A,QBF5_'IV_ MO7`:0`5VA*9@:>DQ=HU7.A)JA]8'&/V>=%3ITY5HRF[SW0,\6F#JF*3O"\\' M%##YJ2BKO=4QK/)896Y$A>&IO8#Q%3M">V^7_]:X$=B#?."U3&J;-K+-G[-Y M3VGVJ!R:.&)B9S"IA&N!X3W$)0<L8M\ZFK[#9VY8K2T!2VC:(.QHP)(G.I:: MAG,NS>,&WOPXD>:PTMN_"6UJ3LY@/QAJS$B"9'H)'R73M(9GNUMCBSO)QJ-R MJ'M/\P$'W_T'&*9I4HU'3^^=<Y1M%WOO:+_@'Y"<MH1.84X5E2A:GW`H)U+/ MNZ#2<-QM=MMY/L4#D6+1J.VV,HHGZCRU%(D*8W$!-!043#)*Y,L^$=>VN$Z[ M[5:N4Y6!XXOS-F./GD7F#@-,4Z2_270Z+GKVN*V;DX[*H3SQ;'#R?W_$3(I< M\8GF8\0[]OH;+F"]GG90#)W#TY9X^6Q2Z#T`4RE+22)&85.L/7E$6.`P.M8" MUKL.1(M))BV-ET!^\DB`:4RGTIAH2\8"+`I:FMG@AG@<\1J341A)$R7'B!1M M^U9_,816%TCJ,'LI,`SR:[<BGKOAO"QR87E?N0H4MM.8T)@2#-F)EWY@08F6 MDMB"[N8I@R8;C)Q(-'$3N;XP'AYWQ?*I'1#]0O#JU%*5H^L[VI!@4K%4@/T0 M+P/U85'X*I*V;'WP]\H#S\'<_I1-Z.L4/\;YN7--A48M8QWVW/<?:Z_J:-/I MQPW<6F7KAX;[:G_I<3ZF9;.GEBK0QM5)'>=`$SZ*RLH9*/[V<KR`$VIK8/CR M&,O!&9B^KPO_#SS'.E$ITOO'HDR_R&T*WQ,S<HJ,3NI[>$"'`3:3S7;2P/GP M#'V@V1R<K@])LK`G<T2&'<YAFA,G7,!^:8P>5D<<_3EYS3!8%[K0SQ_['6I? M"NY0AMB8(1=J-9<>9;06-<NCBUO9GR'<8N&;(>T<@7H`N-O*8Q(!.QN>J$8B M(]0YCI_\``.BZ_!MP9G1C)+;,OD,&BB"<&0+C\MH-FSU@Z5W.RH[M]VFO802 M)YJ$4T(-'K..(*E4=[+YJES-_Q5EE9#-,D'I7<:TP=Q>3I6;?^V6>(0:ESCY M[.VT[[(3=8)$(5TV%&)%*C?$HDUS[89\7_CV-=^ZKGC<1H6&!"1C0!9C!GF< MXN7YX%/WI8!1KNDO=9=RG<<5)<@"19IPUZ!HR_9D=W_IODU@.E7M%BF,?<@@ MO;40"M[J[OKC7L9<F:T>LTG-2SG]5%3SEWQ=*[KLX%_@XK4.L$IK@OH4=U@[ M-.+*)%L_);_G%6J"E=/?FJ7"DMN7V>=\\K4K[A[GD^HE+XMR^N=N3?A\6KW@ M#KTJND=P7.$A(,/U)5WFB\\`B1@540IJO(;,TZ8<]RG8?T&U@$=,"KOQ*;S^ MV[Q9S;\Y&-/>!ZP\/9D0Y0P^1>(YGOBI-CN"?S5_`GE\L^IESW_9*X3R']NT M<"EB^9L-ZAQQ@[*D8YQ(YT_S2(M\2UKH<I)Q=8T'5`1N%RD&RHS.I=TD+F;K M;/GUKQP#\?[,YY6].=ONUNO].="IRM`31R,'3%+W[VS"I&!D)VJ4'*=CIFTH M?%X5>Y+MKA!`*J,T$_IBC[L&A>*""Y/4<7OO`44C+]*!T2N&<.Q0-11E]`1$ M"^@5JF8/'1>0#S]_]X]N/NH7PEUUTLB[3D>&"H'RABK*='0B._*G'S]\_\OO MW]>0]*X#DT)#%W28DZ1BB8@^"]>9(6LP9K(Z!(@\P!ZK"V'M2MZM%](NX&E0 ML(\AT).X-*J1P8ZV_W[8/#W.'XIU8[@<E#P3H&^9$J&Q!C69H'!G_V&3Y(W- M*M9EU37TN,(WV?N&KDT22J5&Q:U1!$M/!H]B\Z=/^6HS?=MLG]9YU4:0'A:] M(DA%EPW&0WL\H[7#2<D()D)[:EV/=%\_LCB1W'WD=>A-(TY^!V@N)X)H))CT MX<[#R1KFI&Q=I[%/6[W4B7H@#[Q^XI_9#,#*%_FZF\J&5?X[-,'-2>^+\]/E M\$>AE_G.V6[K4!(.ELJS_B0WJ%V?-)@W)*6)=O8PN7T\P`6;A'R65=6V>-QA M%F/[Q,_?\G[RL`PUQRAJOQ?U>O""4XXZ:5%">4\@U>S+)^R!/[".:_)?R_G# MBP6G=^T?Q#LX;/'#0G/<7`H5P?2W`R&,%Y3+L\KJKA"[C@;)M90H3NO&E^3^ M!>#^S`Z3[EF?J/-GG$MO>^B*"$,H6/)1%GP?=!Z+JCR`IE_ACXNZS1!2`F4# M6NG1]\(E*TMH5(?*8=%_UR,(&["L^:%BN%9(!G-W7_[)H]@_LP8@BF^.0?Y/ MEHBIL68.MD-'=2&:UE8O\2R=PC5T,'.<@C'A<F![WWWA8YZM>AO#MGC[OM@+ M`1@NDA"%P0=Q3ZQ[[7_-MZN]:7%0\F]]8TH+'42:8%"O6S%-'&.7X@P/F$-F MJZ*<=Y`<5_C;6#?0*0`F5"A&9!N*,DI2YRE<,OAWR[@W>R[6V;(#Z.P=?[^* M53T([3Z,$B/``&/QHF01"T_K2]J0>2/VF^<3F\S+\+O97P"!XEJHEIW(M57- MY_F&>Y.S/(='R[/KE^=$HLW@:CS:+^]/\T`$]3&(G;^^H1(5$)D;E^;E&;D] M"NH50G.F96.SB+.IB3>?`,&8DZG&X!FG?*`X,W<S!;']-OFP[#]OZYNXJ`$4 MF:*+>X0\/!=@^!$P/'R9;Q,]\"(4&B6)HI&"K3R1$4?(B'!D;NPPBAA.1<+\ M0ATBP4*/8*'A_L7;]"@0&$FY!,,X>LKX%2,(/]#:.GO[YT2EO^ES&WTW0&2( M%@*ES6(?//>6JKMFCS!MX];/;1]#TD<0&`F3,`>K,.:FH@=*$_K2BX()ZA#J MMO[`$KP@,8\7CQFL_\P^9S4'!;JSIXO-9K',IT_YYR;PI7F-#7_9EO6K]Q(O MKY\6TP^;51VL]H"WFD/[XYIO\<([BH&3FS1>`$L-&XL4&1I&DPKXWU__^8_? M?_ON0]./#DK^<TL;M1"V!64)X016IH2,PK9T18UZD:_I=-'0['9!>4?E`,=> MTT-"`:)I$^IBHK)<-^8_>U#3+ZOEM,R^X`]R<'6[A:-RX(9!4]%T&-A,GE9( MNWG#P#"6%DS`I";CC]ZG&LKY9?;8NZH)P5O@^H50WH6F!V&D:J1=%DLP<-]( M)%]X'\R>NY[V?"O3D-(M$TJLM&G$RRB#F1UQ@O$P^B1[K2QK0/FP+,KJX6GZ MF/V5+^M"DV1^4!PUT@HE?Y12'";P,8+O!C,W;"2J'OM\K^!_-*O,;8&(@(4Q M*=&))O$T7^O5R=,9I<Z[T?P8]YJET<U9Q>J=-ZJA,-^PA?TJU'[P<_$EW\X: M,D@[.QS7!,X22E]27KC#!*%XJI!M*@:OPD5YBE<\MX$W7L^_=@Q_@RHO?M;4 M!GI32@(T2M#(E:E*51R5\S-]N<J^8-:0QGR>^IV:,[A3M?XS!KOIX(7!*LL5 M0]G"NY.Y7^H7=7%65MG\4X_Z\;C.C_$_M=8M[(1Y0-?@&/A,:"+BL+$-)Y95 M5BP?-U]ZO$6]8BAU4:I,TQ_JJS@3"D^$EAKVWO$"NIO4+V@Q8K98O9*TS;SY MF#\6V;J??;.O"1@]EN&;L*`>8\"^TRBY-0H.5;%^WHCI?W[WWW7S[=]1;2V. M@C44TS73V-;YZ?ES,'7Z)4C>.%UR^*)@:J=@:L;(D3RC>?#AUU_^^.>/__$_ M?_SXRP]=IL>P[N_!S8(824VD3+08@_ETF,LXWRR7^1QUBLII]CC?,Y_NKV_; M_`H7>H+`F94)S6#Y(G$8!\];MXU97;-_=H>RO4)H#BAO7"PHM!UK+8*YUW#I M&)1]WV1'Z$W30Q;5>]"GDJ$(Z/W[&5>$IR;!R6PTU.8-'M.?L_GT(Z9N_/;C MAS\>MYNW$NX5\W5SV=&$'M>$PBG-Y<2>>]A#7'$&MG3T=$CG#?*]1S)TE]@@ M2B$I48DV8[#3]H]T8)=1;:8`6[Z%?YPM-K.Z!MZ@<P1>NAG,0FZN15[<`53% M.$=:C3BF>L"AQM.V^)SOSS0.B_ZVK"4:U2R(GA``TE00KA,5Y]1GN.#FZ^9= MRRGLIF>Z[6#]0CA)YT7+_@Z]"<8FY2(AZ1A'A$>K1KUBE)OYI[PJI]NFLM,% M."B&XD>O':#>`4%C8$"B%VH,:V5H&\/XFM<GU=T`'-0$B`*8&]1SC4B$8BDL MGG(,'O>A4'/%VE[4785:NZ3!09IHAV,P]J2"!3*6X3:<K_K]8]!A;EG^C+3Q M4D02'<GU+1)*A(2")G>7I#LQM:,+;]I(*&1/3]VF8%`3&N)*B`UQ$%I%`TPJ MU)P2T8/S<#1^S5Z?ZU]-1,TV?]YL5UD%MV>/65G,9UC?TU8Z?S<T"(`9?4VE MZPZ@,IXRC8Z1<<;L8[%^R3O'\D$IF,RI32!G1D1R*XN$$[`N,`YI'//BA*)H M=B`IFGEJBA)M4U"9#ET+N1(HFJ*B*TXX[R3W44='04@W="<N2+/W@:G_7&SU M'?H3&!:"L"2&Q%E[%-Z..=^LDJ&M>9R:L1_.;H?=^)MPBCX=7S:&_4=ER*I7 M;*;SS7:SJXIUWBW[_]?<M30Y3@/AO^+BPFF(]9:NL!RHX@:<4T[66Q/()"%V MV%E^/=VV[,B)G4A*Y*'V,)9J=NQN2:U^?GTU$]U<@]J4&)DJ/B402A]6/F,I M:M3O^`2+W6Y?%XWW>9`L,#$?ZX[)\S8.SA,>'Z4H.F14&MB#<2ZFP=>S*-I. MHM]#(0Z!.!@JQ[+X>2J<IT7T-Y3'9T0]9Q2YLXQHKS#88>EVEA&4,@HTSY&P M97=6TP9EV=WVS^Z00KIL4GQ(Q3@)YDP.$EZE@!NP-]J`3:&W&O-%-QY=$[][ M3F8F-XJ"#A'9)N?:*V)3/^'YN?%":2O(J)ZL%7_"GB`2MAQ6E7],N'5?+9;+ MS6Y3+Y<]ZRXG8@W>Y`YR.%%,H-(T8_"P*NO3H<]E=P;1;@$+24&H3R^,2#XQ MRK7.9^KLYD*^=3ECQ:[:@,5_?.L2QBXG@IIS*XO6'-DL&!EB.*B9H&W/X;8< M8TB")#HP'-K;7T@6RQ=N8#]B&&_&9/1SBN'+:77:U:>652\K4+<WZW.6NN?O M1:#"=-Z1<;_</9XAE@,QV#CU?Q*EJ_=_E;M>G`]&$7@ICU68RTSFC%$*:L\< MD>%1M.%-[8(-=Z,(K&'*M+P-]GV/&8J"^D,0\OJ#P+W?C^67-K]@:9M)GY,, MW)GHNBRK2*N42I/F6G*P0-0\0:<)+CZ[;VGB1!=0O<%NDR#<4P@J:X`@8P+M M#D&O),QMN^-Z);QM#Y5K+"C1*L[XF/R`!L+\G$@V',:Z6>GMP.S#&T)EF%VB M,B;GN+C<G)VOY6IQVBQ^_..77S\U#.N?P@N'K?HL)VOT[C&!$,YT@P'_@;*D MLZ(;_KP4GS];5'P;T!B?]HUL,-:Z&]ED:ZY[/()GS=#S,Z/+YQZ3;'KA@$.# M.6_VB,?*]N`$@2%"P;S2"?*TK&"-\^FP/-"G,\UT/QF+T@1T'`09SY\L8X>K MO]Z6V!'777QWRCOH]^#*<TX(8P@L.7-QWG%5'TL,Y[2FXW`89DR;%L:#$*Q# M#C>`5":DQM9A*7;_31X45;5?]PX%9Q!"O^86:(V"`1=%OB3"4);)65)?)X_' M[S__YI:8#(?QC5K;FV.R,5Q8Z$4A8!D%%51Z-95($CLXGG9-ZDEO^EQ.Q(9> M.LLPSY-%]11"%E/08'W`5Q-XBT_'+3X<R[]/;?+.QN;V#,81.ES71C4.J@U, M&HJ9F=BU;*Y68O6B?"_>#MNS"+X8!\K@FZK^7?(-%PS,XC2]K6Y(X`J#XE6] M6?=<N)H):N+!F`4T=#R[0;+8,/R7&9*N<2@(V_)8[M:A&*M"W\T:<3C\?EB7 MB[=BM^A?YZF!:>`B5S0S+9Z&=V,26X0;$"^\[MKF0X\O%5HQREMX,'_OPR%X M5?@X6OHM*OS703&%Y46A\!67+[3/3<.<]6M9]8?-'82<,Q"X%P5!`8=,-\4O M$E1\G0ZE!&D-SLH:[9)P:R5=QOJN*L5L2H$E52$[LWU3J/4639$O,8R#L("! M]),5-Q/RJ\6:=8J4W9[#<<@.59TW-!:H7</)9CDAH!-\J%J>(B7JN27?.A.Y MY!1_I/,+UZ&'F?@Z+JPVYKOCA0`5(\<?\4+9B>%VM81]`'<P$;+C)7Q2\SO, MT'%$NWNDR5Q09C*:HF6A7<;RK5B'YQ6-8E;@4DZTE6[>XKVBB@JL0*(J)J.H MX<?+;H\-JCJ`BK%)?Y`*R5HU3T0V7@2"X&XAPK,!\"/(J-?E5-5Z?X"_G_<) M+L-Q;"2#=RQ)91B#NBB9U`23V%)E+GP!TV;5%E%U3VW;QNI0K/W@@Q\!;]&9 MR3G(B"PIP)$CY5;[?;UHPN56NCG/89T9N;"1K"BC#@@73&`UM)C;P0B__[E- M][9>UN$XB`LY>8@+!@4<Q9*XN6W\U[H^+/ZLL$"WY8+S'.1H%?DMI+Q[Y&,1 M()"ODU07C9#?9)+\T#9U_,X=!.&:2=I>ZB0.\0Y6'?XCR3,Y,]UX4SB4=\-9 MX:J`>"FPKY"8_>"WZ1Q;)[4C'-*.]NBQ47$%DS&2*ZG`VI[[Q*]?RW-2HCL( M`WNTMWZLO&-:@JP#L3%W:.WS9GVV8=U!T/+G\B*?)XAX#GH,Q[C[W#N_>H6G MWIGK#((NNX=./=><*M#H=-)VE:.T%V?*BQB_FNUBA`!J,92C7PZC8\F;SCO% M25]_6G[:KT]-$X-%TR:D2<OMC*&KF0!+2%C+3PH^%3^\QQ&EJ8$;P,^)\X12 MK0$W3M6R+M[+:MFG(%_-1%Z(<8$>`YHPH;"WB%><ZUEXKV#L;,ON8+B#[P_E MT1-EA-JC02@/!^L$BP?[\PB323*W/-P6_WYK5KN_$:YF`MB@QINZ>7/!<(/- MNL+P*Y_`!7Q#A3`$VUXHG(=!-X/*3;16@!P@F&9/,Y6P@?6P/"'0VT4N(4H[ M7]=$\8./EZNAVW!A:*994-@!7A@:#[.5D%S(*0I\/QDN<43#Y%2D_60PC,<. M%7[R/P5L:=C'(9_-3),E;4A((?YJL\.7-"F:Q_*PKS;U_FAKQT>GH_$0A<V5 ;R$>/SX.>M$;2,FV4P;38J!/V'[#+5#J+:`(` ` end [-- Attachment #2: Type: text/html, Size: 40329 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2019-12-28 21:12 ` Peter Ludemann @ 2019-12-29 15:23 ` Michael Albinus 2020-01-04 18:50 ` Peter Ludemann 0 siblings, 1 reply; 14+ messages in thread From: Michael Albinus @ 2019-12-29 15:23 UTC (permalink / raw) To: Peter Ludemann; +Cc: 38644 Peter Ludemann <peter.ludemann@gmail.com> writes: Hi Peter, >> In bug#33194, a patch for Emacs 27.0.50 is mentioned. Do you have a >> chance to run this for test? > > Emacs 27.0.50 somewhat fixes the problem with global-auto-revert-mode, > using the same desktop file (and same open files) that was causing > problems with Emacs 26.3. (Sorry I took so long to test this.) Thanks for the feedback, the fix in Emacs 27 seems to work. > Emacs CPU utilization is now ~30-80% (according to top(1)) instead of > 100%; and responsiveness is good. Of course, it would be nicer if > emacs CPU utilization were less, so that I could fully utilize that > core (I only have 4 cores, so losing half a core is notable on large > tests). If I count correctly, your desktop file contains 489 buffers. Heavy load for global-auto-revert-mode. > Michael Albinus - you had a number of other questions ... do you still > want them (or some of them) answered? No, I don't believe so. > PS: Here's the desktop file, in case that can give some clue as to > what file or directory is causing problems. The "compilation" > processes both input from and output into /tmp/pykythe_test -- as you > can see, there are a couple of open files from that directory, but > they're not being continuously updated, only once or twice per test. auto-revert watches directories. Even if you watch only some few files in a directory (I count 29 buffers which are bound to "/tmp"), there will be lot of file notification events when other files in that directory are changed. Maybe it helps to set auto-revert-use-notify to nil for those files? You could do it via directory-local variales, as in (dir-locals-set-class-variables 'auto-revert-with-polling '((nil . ((auto-revert-use-notify . nil))))) (dir-locals-set-directory-class "/tmp/" 'auto-revert-with-polling) (This is untested.) > best, > - peter Best regards, Michael. ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2019-12-29 15:23 ` Michael Albinus @ 2020-01-04 18:50 ` Peter Ludemann 2020-01-05 9:28 ` Michael Albinus 0 siblings, 1 reply; 14+ messages in thread From: Peter Ludemann @ 2020-01-04 18:50 UTC (permalink / raw) To: Michael Albinus; +Cc: 38644 [-- Attachment #1: Type: text/plain, Size: 3450 bytes --] A few small comments/questions inline ... On Sun, 29 Dec 2019 at 07:23, Michael Albinus <michael.albinus@gmx.de> wrote: > Peter Ludemann <peter.ludemann@gmail.com> writes: > > Hi Peter, > > >> In bug#33194, a patch for Emacs 27.0.50 is mentioned. Do you have a > >> chance to run this for test? > > > > Emacs 27.0.50 somewhat fixes the problem with global-auto-revert-mode, > > using the same desktop file (and same open files) that was causing > > problems with Emacs 26.3. (Sorry I took so long to test this.) > > Thanks for the feedback, the fix in Emacs 27 seems to work. > Correction: Emacs 28.05, cloned from git://git.sv.gnu.org/emacs.git and built using the instructions at https://www.emacswiki.org/emacs/EmacsSnapshotAndDebian#toc3 > > Emacs CPU utilization is now ~30-80% (according to top(1)) instead of > > 100%; and responsiveness is good. Of course, it would be nicer if > > emacs CPU utilization were less, so that I could fully utilize that > > core (I only have 4 cores, so losing half a core is notable on large > > tests). > > If I count correctly, your desktop file contains 489 buffers. Heavy load > for global-auto-revert-mode. > This is the result of working on a project for several months (using emacs-daemon). For example, 94 of those files are from Python and SWI-Prolog standard libraries, because I needed to get implementation details ("use the source, Luke"); and I'm using pieces from about 5 packages, whose source I also need to look at. So, it's a little sloppy, but not unreasonable, I think. > > > Michael Albinus - you had a number of other questions ... do you still > > want them (or some of them) answered? > > No, I don't believe so. > > > PS: Here's the desktop file, in case that can give some clue as to > > what file or directory is causing problems. The "compilation" > > processes both input from and output into /tmp/pykythe_test -- as you > > can see, there are a couple of open files from that directory, but > > they're not being continuously updated, only once or twice per test. > > auto-revert watches directories. Even if you watch only some few files > in a directory (I count 29 buffers which are bound to "/tmp"), there > will be lot of file notification events when other files in that > directory are changed. Maybe it helps to set auto-revert-use-notify to > nil for those files? You could do it via directory-local variales, as in > If I understand you correctly, Emacs doesn't watch individual files but instead watches the directories that those files are in ... if a file changes, then the directory will be changed with the file is written/closed. Is this a correct understanding? (Presumably the reason for this is that if files /path/to/dir/A, /path/to/dir/B, /path/to/dir/C are open in buffers, it suffices to only watch for changes to /path/to/dir; and if /path/to/dir/D is opened, no change to the watch list is needed.) > > (dir-locals-set-class-variables 'auto-revert-with-polling > '((nil . ((auto-revert-use-notify . nil))))) > > (dir-locals-set-directory-class > "/tmp/" 'auto-revert-with-polling) > > (This is untested.) > I haven't tested this because emacs 28.05 gives me adequate performance and I can live with turning global-auto-revert on/off when I do a big test (turning it off makes the test run a bit faster because there's another 0.5 CPU available for the test). Thanks again! - peter > > best, > > - peter > > Best regards, Michael. > [-- Attachment #2: Type: text/html, Size: 6061 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2020-01-04 18:50 ` Peter Ludemann @ 2020-01-05 9:28 ` Michael Albinus 0 siblings, 0 replies; 14+ messages in thread From: Michael Albinus @ 2020-01-05 9:28 UTC (permalink / raw) To: Peter Ludemann; +Cc: 38644-done Version: 27.1 Peter Ludemann <peter.ludemann@gmail.com> writes: Hi Peter, > I haven't tested this because emacs 28.05 gives me adequate > performance and I can live with turning global-auto-revert on/off when > I do a big test (turning it off makes the test run a bit faster > because there's another 0.5 CPU available for the test). So it's OK for you; I'll close the bug. > Thanks again! > > - peter Best regards, Michael. ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2019-12-17 1:23 bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode Peter Ludemann 2019-12-17 13:59 ` Michael Albinus 2019-12-17 16:17 ` Eli Zaretskii @ 2020-01-05 13:04 ` Mattias Engdegård 2020-01-05 19:31 ` Peter Ludemann 2 siblings, 1 reply; 14+ messages in thread From: Mattias Engdegård @ 2020-01-05 13:04 UTC (permalink / raw) To: 38644; +Cc: Michael Albinus, Peter Ludemann Just out of curiosity --- did you try setting auto-revert-avoid-polling? If so, did it have any effect? ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2020-01-05 13:04 ` Mattias Engdegård @ 2020-01-05 19:31 ` Peter Ludemann 2020-01-05 19:57 ` Mattias Engdegård 0 siblings, 1 reply; 14+ messages in thread From: Peter Ludemann @ 2020-01-05 19:31 UTC (permalink / raw) To: Mattias Engdegård; +Cc: 38644, Michael Albinus [-- Attachment #1: Type: text/plain, Size: 939 bytes --] Mattias: Are you asking if I've tried this: (dir-locals-set-class-variables 'auto-revert-with-polling '((nil . ((auto-revert-use-notify . nil))))) (dir-locals-set-directory-class "/tmp/" 'auto-revert-with-polling) No, I haven't. Which version of Emacs would you like me to try this with? And what result are you expecting/hoping to see? (e.g., might it reduce the current 30-80% CPU load for polling with emacs 28.0.50?) There are only a few open files directly under /tmp, so would this have any effect or does it propagate down to subdirectories? [Also, I'd need a few more details (not being an emacs-internals person) ... should I add this to my .emacs and restart, or execute in a scratch buffer, or ...?] On Sun, 5 Jan 2020 at 05:05, Mattias Engdegård <mattiase@acm.org> wrote: > Just out of curiosity --- did you try setting auto-revert-avoid-polling? > If so, did it have any effect? > > [-- Attachment #2: Type: text/html, Size: 2850 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2020-01-05 19:31 ` Peter Ludemann @ 2020-01-05 19:57 ` Mattias Engdegård 2020-01-07 0:01 ` Peter Ludemann 0 siblings, 1 reply; 14+ messages in thread From: Mattias Engdegård @ 2020-01-05 19:57 UTC (permalink / raw) To: Peter Ludemann; +Cc: 38644, Michael Albinus 5 jan. 2020 kl. 20.31 skrev Peter Ludemann <peter.ludemann@gmail.com>: > Which version of Emacs would you like me to try this with? And what result are you expecting/hoping to see? (e.g., might it reduce the current 30-80% CPU load for polling with emacs 28.0.50?) There are only a few open files directly under /tmp, so would this have any effect or does it propagate down to subdirectories? > > [Also, I'd need a few more details (not being an emacs-internals person) ... should I add this to my .emacs and restart, or execute in a scratch buffer, or ...?] 'auto-revert-avoid-polling' is a single global customisable variable, so you would set it using M-x customise-variable RET auto-revert-avoid-polling RET , then turn it on and apply the change. I believe it was introduced in Emacs 27. The idea is to save CPU by not having to look at files periodically to see if they have changed. I have no idea if you would see any improvement at all, but it shouldn't make anything worse. ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2020-01-05 19:57 ` Mattias Engdegård @ 2020-01-07 0:01 ` Peter Ludemann 2020-01-07 0:34 ` Peter Ludemann 0 siblings, 1 reply; 14+ messages in thread From: Peter Ludemann @ 2020-01-07 0:01 UTC (permalink / raw) To: Mattias Engdegård; +Cc: 38644, Michael Albinus [-- Attachment #1: Type: text/plain, Size: 1491 bytes --] If anything, auto-revert-avoid-polling makes responsiveness worse -- the window locked up a few times on me while doing ctrl-N while running a CPU-intensive (and possibly IO-intensive) compilation. Although I might not have set the value correctly ... I did M-x customise-variable RET auto-revert-avoid-polling RET then "toggle" then "apply". . On Sun, 5 Jan 2020 at 11:57, Mattias Engdegård <mattiase@acm.org> wrote: > 5 jan. 2020 kl. 20.31 skrev Peter Ludemann <peter.ludemann@gmail.com>: > > > Which version of Emacs would you like me to try this with? And what > result are you expecting/hoping to see? (e.g., might it reduce the current > 30-80% CPU load for polling with emacs 28.0.50?) There are only a few open > files directly under /tmp, so would this have any effect or does it > propagate down to subdirectories? > > > > [Also, I'd need a few more details (not being an emacs-internals person) > ... should I add this to my .emacs and restart, or execute in a scratch > buffer, or ...?] > > 'auto-revert-avoid-polling' is a single global customisable variable, so > you would set it using > > M-x customise-variable RET auto-revert-avoid-polling RET > > , then turn it on and apply the change. I believe it was introduced in > Emacs 27. > > The idea is to save CPU by not having to look at files periodically to see > if they have changed. I have no idea if you would see any improvement at > all, but it shouldn't make anything worse. > > [-- Attachment #2: Type: text/html, Size: 2080 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode 2020-01-07 0:01 ` Peter Ludemann @ 2020-01-07 0:34 ` Peter Ludemann 0 siblings, 0 replies; 14+ messages in thread From: Peter Ludemann @ 2020-01-07 0:34 UTC (permalink / raw) To: Mattias Engdegård; +Cc: 38644, Michael Albinus [-- Attachment #1: Type: text/plain, Size: 2234 bytes --] Correction -- the "lock-up" I observed might have been due to paging (possibly related to emacs - I'll have to investigate later). Toggling auto-revert-avoid-polling appeared to reduc emacs CPU usage, according to top(1) - it's a bit difficult to tell because there seems to be some lag in when the command takes effect and my compilation process switches a certain amount between CPU-intensive and IO-intensive. Anyway, CPU seemed to drop from ~60% to ~30% (please take this observation with a large grain of salt). I'll try more things in the future and report if anything interesting shows up. - peter On Mon, 6 Jan 2020 at 16:01, Peter Ludemann <peter.ludemann@gmail.com> wrote: > If anything, auto-revert-avoid-polling makes responsiveness worse -- the > window locked up a few times on me while doing ctrl-N while running a > CPU-intensive (and possibly IO-intensive) compilation. > Although I might not have set the value correctly ... I did M-x > customise-variable RET auto-revert-avoid-polling RET then "toggle" then > "apply". > . > > On Sun, 5 Jan 2020 at 11:57, Mattias Engdegård <mattiase@acm.org> wrote: > >> 5 jan. 2020 kl. 20.31 skrev Peter Ludemann <peter.ludemann@gmail.com>: >> >> > Which version of Emacs would you like me to try this with? And what >> result are you expecting/hoping to see? (e.g., might it reduce the current >> 30-80% CPU load for polling with emacs 28.0.50?) There are only a few open >> files directly under /tmp, so would this have any effect or does it >> propagate down to subdirectories? >> > >> > [Also, I'd need a few more details (not being an emacs-internals >> person) ... should I add this to my .emacs and restart, or execute in a >> scratch buffer, or ...?] >> >> 'auto-revert-avoid-polling' is a single global customisable variable, so >> you would set it using >> >> M-x customise-variable RET auto-revert-avoid-polling RET >> >> , then turn it on and apply the change. I believe it was introduced in >> Emacs 27. >> >> The idea is to save CPU by not having to look at files periodically to >> see if they have changed. I have no idea if you would see any improvement >> at all, but it shouldn't make anything worse. >> >> [-- Attachment #2: Type: text/html, Size: 3372 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2020-01-07 0:34 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-12-17 1:23 bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode Peter Ludemann 2019-12-17 13:59 ` Michael Albinus 2019-12-17 16:17 ` Eli Zaretskii 2019-12-17 18:27 ` Peter Ludemann 2019-12-17 19:30 ` Michael Albinus 2019-12-28 21:12 ` Peter Ludemann 2019-12-29 15:23 ` Michael Albinus 2020-01-04 18:50 ` Peter Ludemann 2020-01-05 9:28 ` Michael Albinus 2020-01-05 13:04 ` Mattias Engdegård 2020-01-05 19:31 ` Peter Ludemann 2020-01-05 19:57 ` Mattias Engdegård 2020-01-07 0:01 ` Peter Ludemann 2020-01-07 0:34 ` Peter Ludemann
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).