From ae4260bb64817c11f9a7140324cd3e3ba113e297 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 15 May 2007 00:13:09 +0000 Subject: [PATCH] [svn-upgrade] Integrating new upstream version, ion3 (20070506) --- ChangeLog | 376 ++++++ LICENSE | 81 +- README | 15 +- RELNOTES | 33 + TODO.riot | 38 +- build/ac/README.autoconf | 45 - build/ac/aclocal.m4 | 57 - build/ac/configure.ac | 440 ------- build/ac/system-ac.mk.in | 190 --- build/mkman.lua | 93 +- build/rules.mk | 20 +- config.h | 6 +- de/brush.c | 31 +- de/brush.h | 11 +- de/colour.c | 5 +- de/colour.h | 5 +- de/draw.c | 137 +- de/font.c | 5 +- de/font.h | 5 +- de/fontset.h | 5 +- de/init.c | 216 +++- de/init.h | 8 +- de/private.h | 11 +- de/style.c | 40 +- de/style.h | 10 +- doc/ChangeLog | 72 ++ doc/Makefile | 32 +- doc/conf-bindings.tex | 110 +- doc/conf-menus.tex | 25 +- doc/conf-statusbar.tex | 124 ++ doc/conf-winprops.tex | 81 +- doc/conf.tex | 28 +- doc/confintro.tex | 78 +- doc/cstyle.tex | 4 +- doc/de.tex | 149 ++- doc/designnotes.tex | 12 +- doc/exact-version | 4 +- doc/fnref.tex | 22 +- doc/fullhierarchy.tex | 1 - doc/hookref.tex | 28 +- doc/ionconf.dvi.gz | Bin 122729 -> 118229 bytes doc/ionconf.out | 40 +- doc/ionconf.ps.gz | Bin 243933 -> 239925 bytes doc/ionconf.tex | 11 +- doc/ionconf/images.log | 22 +- doc/ionconf/images.pl | 36 + doc/ionconf/images.tex | 29 +- doc/ionconf/img1.png | Bin 0 -> 196 bytes doc/ionconf/img2.png | Bin 0 -> 363 bytes doc/ionconf/img3.png | Bin 0 -> 352 bytes doc/ionconf/img4.png | Bin 0 -> 173 bytes doc/ionconf/img5.png | Bin 0 -> 234 bytes doc/ionconf/img6.png | Bin 0 -> 767 bytes doc/ionconf/index.html | 274 ++-- doc/ionconf/internals.pl | 182 ++- doc/ionconf/ionconf.css | 1 + doc/ionconf/ionconf.html | 274 ++-- doc/ionconf/labels.pl | 516 +++++--- doc/ionconf/node1.html | 236 ++-- doc/ionconf/node10.html | 63 +- doc/ionconf/node11.html | 1132 ++--------------- doc/ionconf/node12.html | 57 +- doc/ionconf/node13.html | 77 ++ doc/ionconf/node2.html | 120 +- doc/ionconf/node3.html | 159 ++- doc/ionconf/node4.html | 651 ++++++---- doc/ionconf/node5.html | 257 ++-- doc/ionconf/node6.html | 88 +- doc/ionconf/node7.html | 2035 ++++++++++++++---------------- doc/ionconf/node8.html | 42 +- doc/ionconf/node9.html | 21 +- doc/ionnotes.dvi.gz | Bin 27882 -> 27915 bytes doc/ionnotes.ps.gz | Bin 109509 -> 108727 bytes doc/ionnotes.tex | 2 +- doc/ionnotes/index.html | 2 +- doc/ionnotes/ionnotes.css | 1 + doc/ionnotes/ionnotes.html | 2 +- doc/ionnotes/node2.html | 89 +- doc/ionnotes/node3.html | 10 +- doc/ionnotes/node4.html | 18 +- doc/ionnotes/node5.html | 12 +- doc/ionnotes/node6.html | 4 +- doc/ionnotes/node8.html | 74 +- doc/ionnotes/node9.html | 2 +- doc/macros.tex | 5 +- doc/miscref.tex | 44 + doc/objects.tex | 43 +- doc/objectsimpl.tex | 6 +- doc/prelim.tex | 13 +- doc/statusd.tex | 15 +- doc/tricks.tex | 12 +- etc/Makefile | 6 +- etc/cfg_ion.lua | 16 + etc/cfg_ioncore.lua | 12 +- etc/cfg_kludges.lua | 17 +- etc/look_brownsteel.lua | 16 - etc/look_clean.lua | 11 +- etc/look_cleanios.lua | 2 - etc/look_cleanviolet.lua | 2 - etc/look_dusky.lua | 15 - etc/look_greenlight.lua | 73 ++ etc/look_greyviolet.lua | 24 +- etc/look_ios.lua | 40 +- etc/look_newviolet.lua | 29 +- etc/look_simpleblue.lua | 4 - etc/lookcommon_clean.lua | 96 +- etc/lookcommon_clean_frame.lua | 30 - etc/lookcommon_clean_stdisp.lua | 19 - etc/lookcommon_clean_tab.lua | 60 - etc/lookcommon_emboss.lua | 110 +- etc/lookcommon_emboss_frame.lua | 17 - etc/lookcommon_emboss_stdisp.lua | 16 - etc/lookcommon_emboss_tab.lua | 62 - exact-version | 4 +- ion/ion.c | 5 +- ioncore/Makefile | 2 +- ioncore/activity.c | 11 +- ioncore/activity.h | 5 +- ioncore/attach.c | 5 +- ioncore/attach.h | 5 +- ioncore/basicpholder.c | 5 +- ioncore/basicpholder.h | 5 +- ioncore/binding.c | 10 +- ioncore/binding.h | 23 +- ioncore/bindmaps.c | 5 +- ioncore/bindmaps.h | 5 +- ioncore/classes.h | 5 +- ioncore/clientwin.c | 78 +- ioncore/clientwin.h | 7 +- ioncore/colormap.c | 5 +- ioncore/colormap.h | 5 +- ioncore/common.h | 5 +- ioncore/conf-bindings.c | 27 +- ioncore/conf-bindings.h | 5 +- ioncore/conf.c | 22 +- ioncore/conf.h | 5 +- ioncore/cursor.c | 5 +- ioncore/cursor.h | 5 +- ioncore/detach.c | 57 +- ioncore/detach.h | 5 +- ioncore/dummywc.h | 5 +- ioncore/event.c | 5 +- ioncore/event.h | 5 +- ioncore/eventh.c | 5 +- ioncore/eventh.h | 5 +- ioncore/exec.c | 5 +- ioncore/exec.h | 5 +- ioncore/extlconv.c | 5 +- ioncore/extlconv.h | 5 +- ioncore/extlrx.c | 5 +- ioncore/float-placement.c | 5 +- ioncore/float-placement.h | 5 +- ioncore/focus.c | 40 +- ioncore/focus.h | 5 +- ioncore/frame-draw.c | 85 +- ioncore/frame-draw.h | 9 +- ioncore/frame-pointer.c | 7 +- ioncore/frame-pointer.h | 5 +- ioncore/frame.c | 179 ++- ioncore/frame.h | 16 +- ioncore/framedpholder.c | 5 +- ioncore/framedpholder.h | 5 +- ioncore/framep.h | 5 +- ioncore/fullscreen.c | 10 +- ioncore/fullscreen.h | 5 +- ioncore/global.h | 8 +- ioncore/gr-util.h | 5 +- ioncore/gr.c | 20 +- ioncore/gr.h | 6 +- ioncore/grab.c | 9 +- ioncore/grab.h | 8 +- ioncore/group-cw.c | 9 +- ioncore/group-cw.h | 5 +- ioncore/group-ws.c | 53 +- ioncore/group-ws.h | 5 +- ioncore/group.c | 46 +- ioncore/group.h | 5 +- ioncore/groupedpholder.c | 5 +- ioncore/groupedpholder.h | 5 +- ioncore/grouppholder.c | 5 +- ioncore/grouppholder.h | 5 +- ioncore/infowin.c | 5 +- ioncore/infowin.h | 5 +- ioncore/ioncore.c | 8 +- ioncore/ioncore.h | 5 +- ioncore/ioncore_bindings.lua | 23 +- ioncore/ioncore_efbb.lua | 5 +- ioncore/ioncore_ext.lua | 8 +- ioncore/ioncore_luaext.lua | 5 +- ioncore/ioncore_menudb.lua | 13 +- ioncore/ioncore_misc.lua | 5 +- ioncore/ioncore_tabnum.lua | 49 + ioncore/ioncore_wd.lua | 5 +- ioncore/ioncore_winprops.lua | 38 +- ioncore/kbresize.c | 5 +- ioncore/kbresize.h | 5 +- ioncore/key.c | 259 +++- ioncore/key.h | 10 +- ioncore/llist.c | 5 +- ioncore/llist.h | 5 +- ioncore/manage.c | 37 +- ioncore/manage.h | 30 +- ioncore/modules.c | 5 +- ioncore/modules.h | 5 +- ioncore/mplex.c | 304 +++-- ioncore/mplex.h | 7 +- ioncore/mplexpholder.c | 5 +- ioncore/mplexpholder.h | 5 +- ioncore/mwmhints.c | 5 +- ioncore/mwmhints.h | 5 +- ioncore/names.c | 9 +- ioncore/names.h | 5 +- ioncore/navi.c | 33 +- ioncore/navi.h | 5 +- ioncore/netwm.c | 5 +- ioncore/netwm.h | 5 +- ioncore/pholder.c | 5 +- ioncore/pholder.h | 5 +- ioncore/pointer.c | 5 +- ioncore/pointer.h | 5 +- ioncore/presize.c | 5 +- ioncore/presize.h | 5 +- ioncore/property.c | 15 +- ioncore/property.h | 5 +- ioncore/rectangle.c | 5 +- ioncore/rectangle.h | 5 +- ioncore/regbind.c | 10 +- ioncore/regbind.h | 10 +- ioncore/reginfo.c | 5 +- ioncore/reginfo.h | 5 +- ioncore/region-iter.h | 5 +- ioncore/region.c | 18 +- ioncore/region.h | 5 +- ioncore/resize.c | 5 +- ioncore/resize.h | 5 +- ioncore/return.c | 5 +- ioncore/return.h | 5 +- ioncore/rootwin.c | 5 +- ioncore/rootwin.h | 5 +- ioncore/saveload.c | 5 +- ioncore/saveload.h | 5 +- ioncore/screen-notify.c | 14 +- ioncore/screen-notify.h | 5 +- ioncore/screen.c | 5 +- ioncore/screen.h | 5 +- ioncore/selection.c | 5 +- ioncore/selection.h | 5 +- ioncore/sizehint.c | 59 +- ioncore/sizehint.h | 5 +- ioncore/sizepolicy.c | 37 +- ioncore/sizepolicy.h | 9 +- ioncore/stacking.c | 41 +- ioncore/stacking.h | 8 +- ioncore/strings.c | 5 +- ioncore/strings.h | 5 +- ioncore/tags.c | 10 +- ioncore/tags.h | 5 +- ioncore/window.c | 5 +- ioncore/window.h | 5 +- ioncore/xic.c | 5 +- ioncore/xic.h | 5 +- ioncore/xwindow.c | 5 +- ioncore/xwindow.h | 5 +- libextl/exact-version | 17 + libextl/libextl-mkexports.in | 3 + libextl/luaextl.c | 309 +++-- libextl/luaextl.h | 16 + libmainloop/defer.c | 16 +- libmainloop/defer.h | 5 +- libmainloop/exec.c | 5 +- libmainloop/exec.h | 5 +- libmainloop/hooks.c | 5 +- libmainloop/hooks.h | 5 +- libmainloop/rx.mk | 1 + libmainloop/select.c | 5 +- libmainloop/select.h | 5 +- libmainloop/signal.c | 5 +- libmainloop/signal.h | 5 +- libtu/exact-version | 6 + libtu/objlist.c | 10 +- libtu/objlist.h | 1 + libtu/ptrlist.c | 10 +- libtu/ptrlist.h | 1 + libtu/stringstore.c | 2 +- man/Makefile | 5 +- man/ion3.cs.in | 25 +- man/ion3.de.in | 160 --- man/ion3.fi.in | 25 +- man/ion3.in | 17 +- man/pwm3.cs.in | 26 +- man/pwm3.de.in | 106 -- man/pwm3.fi.in | 24 +- man/pwm3.in | 24 +- man/welcome.de.head | 22 - mod_dock/dock.c | 6 +- mod_menu/grabmenu.c | 8 +- mod_menu/main.c | 5 +- mod_menu/main.h | 5 +- mod_menu/menu.c | 5 +- mod_menu/menu.h | 5 +- mod_menu/mkmenu.c | 11 +- mod_menu/mkmenu.h | 5 +- mod_menu/mod_menu.lua | 5 +- mod_mgmtmode/Makefile | 26 - mod_mgmtmode/main.c | 71 -- mod_mgmtmode/main.h | 22 - mod_mgmtmode/mgmtmode.c | 222 ---- mod_mgmtmode/mgmtmode.h | 33 - mod_query/complete.c | 5 +- mod_query/complete.h | 5 +- mod_query/edln.c | 5 +- mod_query/edln.h | 5 +- mod_query/fwarn.c | 9 +- mod_query/fwarn.h | 5 +- mod_query/history.c | 5 +- mod_query/history.h | 5 +- mod_query/input.c | 5 +- mod_query/input.h | 5 +- mod_query/inputp.h | 5 +- mod_query/listing.c | 5 +- mod_query/listing.h | 5 +- mod_query/main.c | 5 +- mod_query/main.h | 5 +- mod_query/mod_query.lua | 17 +- mod_query/mod_query_chdir.lua | 5 +- mod_query/query.c | 9 +- mod_query/query.h | 5 +- mod_query/wedln-wrappers.c | 5 +- mod_query/wedln.c | 12 +- mod_query/wedln.h | 5 +- mod_query/wmessage.c | 5 +- mod_query/wmessage.h | 5 +- mod_sm/sm.c | 5 +- mod_sp/main.c | 99 +- mod_sp/main.h | 5 +- mod_statusbar/draw.c | 5 +- mod_statusbar/draw.h | 5 +- mod_statusbar/main.c | 7 +- mod_statusbar/main.h | 5 +- mod_statusbar/mod_statusbar.lua | 27 +- mod_statusbar/statusbar.c | 16 +- mod_statusbar/statusbar.h | 5 +- mod_tiling/main.c | 5 +- mod_tiling/main.h | 5 +- mod_tiling/ops.c | 5 +- mod_tiling/panehandle.c | 5 +- mod_tiling/panehandle.h | 5 +- mod_tiling/placement.c | 17 +- mod_tiling/placement.h | 5 +- mod_tiling/split-stdisp.c | 5 +- mod_tiling/split-stdisp.h | 5 +- mod_tiling/split.c | 39 +- mod_tiling/split.h | 5 +- mod_tiling/splitfloat.c | 5 +- mod_tiling/splitfloat.h | 5 +- mod_tiling/tiling.c | 59 +- mod_tiling/tiling.h | 5 +- modulelist.mk | 4 +- po/Makefile | 7 +- po/cs.po | 1254 +++++++++--------- po/de.po | 1667 ------------------------ po/fi.po | 1268 ++++++++++--------- po/ru.po | 1637 ------------------------ pwm/cfg_pwm.lua | 15 +- pwm/pwm.c | 5 +- version.h | 2 +- 366 files changed, 8028 insertions(+), 11944 deletions(-) delete mode 100644 build/ac/README.autoconf delete mode 100644 build/ac/aclocal.m4 delete mode 100644 build/ac/configure.ac delete mode 100644 build/ac/system-ac.mk.in create mode 100644 doc/conf-statusbar.tex create mode 100644 doc/ionconf/node13.html create mode 100644 doc/miscref.tex create mode 100644 etc/look_greenlight.lua delete mode 100644 etc/lookcommon_clean_frame.lua delete mode 100644 etc/lookcommon_clean_stdisp.lua delete mode 100644 etc/lookcommon_clean_tab.lua delete mode 100644 etc/lookcommon_emboss_frame.lua delete mode 100644 etc/lookcommon_emboss_stdisp.lua delete mode 100644 etc/lookcommon_emboss_tab.lua create mode 100644 ioncore/ioncore_tabnum.lua delete mode 100644 man/ion3.de.in delete mode 100644 man/pwm3.de.in delete mode 100644 man/welcome.de.head delete mode 100644 mod_mgmtmode/Makefile delete mode 100644 mod_mgmtmode/main.c delete mode 100644 mod_mgmtmode/main.h delete mode 100644 mod_mgmtmode/mgmtmode.c delete mode 100644 mod_mgmtmode/mgmtmode.h delete mode 100644 po/de.po delete mode 100644 po/ru.po diff --git a/ChangeLog b/ChangeLog index ae08861..4410265 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,379 @@ +2007-05-06 14:43 UTC Tuomo Valkonen + tagged ion-3rc-20070506 + +2007-05-06 14:43 UTC Tuomo Valkonen + * Oops + +2007-05-06 14:38 UTC Tuomo Valkonen + * Doc comment fix + +2007-05-06 14:31 UTC Tuomo Valkonen + * predist.sh support for specifying additional repository base path + +2007-05-06 14:26 UTC Tuomo Valkonen + * Release notes date + +2007-05-06 14:23 UTC Tuomo Valkonen + * Removed mod_mgmtmode. + As it is not quite finished, it does not belong in the "stable" Ion3. + It will be distributed separately. + +2007-05-06 14:19 UTC Tuomo Valkonen + * Some more name policy clarifications + +2007-05-06 13:55 UTC Tuomo Valkonen + * Made the scrachpad (scratchws) pseudomodal. + (This will only take effect when a new scratchpad is created.) + +2007-05-06 13:54 UTC Tuomo Valkonen + * Added back pseudomodal option for regions managed by WMPlexes. + +2007-05-06 13:12 UTC Tuomo Valkonen + * Stacking list traversal improvements + +2007-05-06 11:27 UTC Tuomo Valkonen + * Removed redundant code + +2007-05-05 19:04 UTC Tuomo Valkonen + * Doc fix + +2007-05-05 17:36 UTC Tuomo Valkonen + * Update notify window when name of window with activity changes. + +2007-05-05 16:44 UTC Tuomo Valkonen + * *sigh* + +2007-05-04 21:34 UTC Tuomo Valkonen + * Display tab numbers on modifier release. + Seems to work better than delayed display. + +2007-05-04 21:34 UTC Tuomo Valkonen + * Simplified ioncore.tabnum interface. + +2007-05-04 21:29 UTC Tuomo Valkonen + * Added submat_wait called on modifier release. + +2007-05-04 16:10 UTC Tuomo Valkonen + * Increased default tab numbers display delay to 250ms + +2007-05-04 15:57 UTC Tuomo Valkonen + * Draw tab numbers on right, unless tab text alignment is right. + +2007-05-04 15:53 UTC Tuomo Valkonen + * Added automatically displayed tab numbers. + The functions in `ioncore.tabnum` can be used to display + tab numbers on a frame after a specified delay, and clear + them when the submap grab is released. + +2007-05-04 15:41 UTC Tuomo Valkonen + * Added submap enter events and ungrab hook + +2007-05-04 15:36 UTC Tuomo Valkonen + * Fixed defer to allow NULL parameters + +2007-05-04 06:50 UTC Tuomo Valkonen + * Name policy refinements + +2007-05-03 23:58 UTC Tuomo Valkonen + * Removed useless property setting special case. + +2007-05-03 16:31 UTC Tuomo Valkonen + * Oops. + +2007-05-02 22:06 UTC Tuomo Valkonen + * Some watches weren't being initialised + +2007-05-02 21:59 UTC Tuomo Valkonen + * Release notes updates + +2007-05-02 21:43 UTC Tuomo Valkonen + * Removed obsoleted and redundant WFrame.set_numbers. + (Didn't I do this already?) + +2007-05-02 18:50 UTC Tuomo Valkonen + * Store the region pointer in a Watch in binding handler. + It might get destroyed. + +2007-05-01 14:12 UTC Tuomo Valkonen + * Drawing engine extras table storage improvements. + Copy only unknown values, thus freeing memory. Append + to replaced style's table. + +2007-05-01 12:31 UTC Tuomo Valkonen + * Added "userattr1" for frames to stock styles. + This could be used by e.g. a "place new windows here" script, + via `WFrame.set_grattr`. (Of course, arbitrary attributes may + be defined and used, but this is one that all stock styles at + least are bound to define.) + +2007-05-01 11:55 UTC Tuomo Valkonen + * Documentation fixes and style clean up + +2007-05-01 11:05 UTC Tuomo Valkonen + * Quasiactivate frames for detachs from groups within them too. + +2007-04-30 18:31 UTC Tuomo Valkonen + * More based_on fixes. + (Still missing copying/appending of data_table.) + +2007-04-30 17:59 UTC Tuomo Valkonen + * Detach stacking level fix + +2007-04-30 17:51 UTC Tuomo Valkonen + * Oops, size hints fixing had broken unsqueeze + +2007-04-29 10:47 UTC Tuomo Valkonen + * Style file border tuning + +2007-04-29 10:47 UTC Tuomo Valkonen + * Drawing engine border calculation tuning + +2007-04-29 10:26 UTC Tuomo Valkonen + * Style file tuning + +2007-04-29 10:23 UTC Tuomo Valkonen + * Added special "inherit" colour value. + This is needed in common style templates to not override padding_colour + with background_colour, as if padding_colour isn't set, it is set to + background_colour. + +2007-04-28 19:56 UTC Tuomo Valkonen + * Support based_on too after all + +2007-04-28 18:06 UTC Tuomo Valkonen + * Use based_on's based_on + +2007-04-27 23:57 UTC Tuomo Valkonen + * Removed based_on fields from style files + +2007-04-27 23:45 UTC Tuomo Valkonen + * Changes in de.defstyle + The based_on field is no longer used. Instead, the style is + based on the existing best-matching style. Thus the function + also amends to existing exactly matching style, instead of + redefining it. + +2007-04-27 21:58 UTC Tuomo Valkonen + * Added name policy notice + +2007-04-27 21:50 UTC Tuomo Valkonen + tagged pre-namepolicy-notice + +2007-04-27 16:06 UTC Tuomo Valkonen + * Removed note of removed autoconf script from README + +2007-04-27 15:15 UTC Tuomo Valkonen + * Changed license header in source files + +2007-04-25 13:34 UTC Tuomo Valkonen + * Release notes draft + +2007-04-24 23:53 UTC Tuomo Valkonen + * Fixed dockapp hack with those few that actually have WM_CLASS. + +2007-04-24 14:25 UTC Tuomo Valkonen + * Added green tabnumber substyle to tab-frame styles. + (Tab numbering can be toggled/set/unset with + `frame:set_grattr('numbers', 'toggle')` etc.) + +2007-04-24 14:23 UTC Tuomo Valkonen + * Fixes and improvements to previously blind-written code. + +2007-04-24 11:08 UTC Tuomo Valkonen + * Added WFrame.set_grattr/WFrame.is_grattr + +2007-04-24 11:38 UTC Tuomo Valkonen + * Added numbering hack to drawing engine + +2007-04-24 11:23 UTC Tuomo Valkonen + * Drawing engine attribute matching improvements + +2007-04-24 11:22 UTC Tuomo Valkonen + * Oops, const + +2007-04-24 11:08 UTC Tuomo Valkonen + * Added gr_stylespec_isset + +2007-04-24 10:02 UTC Tuomo Valkonen + * Store current frame base style in WFrame.baseattr + instead of reconstructing it all the time. + +2007-04-24 09:08 UTC Tuomo Valkonen + * Removed unused setting from config.h + +2007-04-23 23:26 UTC Tuomo Valkonen + * Fixed size hints ICCCM compliance degradation + code clean-up + +2007-04-23 23:01 UTC Tuomo Valkonen + * Improved dockapp winprop support hack. + Copy WM_CLASS from the (undisplayed) main window as _ION_DOCKAPP_HACK + property on the (displayed) icon window. Have WClientWin.get_ident + then report this information as `class` and `instance` for the dockapp + window, so that winprop matching code can use it. + +2007-04-22 18:10 UTC Tuomo Valkonen + * Place dockapps in the statusbar's systray. + (Added winprop in default `cfg_kludges.lua`.) + +2007-04-22 18:07 UTC Tuomo Valkonen + * Removed possibly obsolete Galeon winprop. + (Isn't the browser also dead already? Downwards slide started at Gnome 2.0.) + +2007-04-22 18:02 UTC Tuomo Valkonen + * Ugly hack for dockapp winprop support. + We save the dockapp state ourselves over restarts to get the right + winprop after that, because the way windows are loaded after restart, + the dockapp state would not be easily available otherwise. In addition, + dockapps usually don't have any class/role/instance identification + information in the dockapp (icon) window, so this method can not + be used -- easily. Some dockapps would function fine with us simply + using the main window instead of the icon window as specified by + the dockapp protocol, and this would provide better winprop support, + but then other dockapps don't display anything meaningful in the + main window, that the expect not to be shown. Hence this ugly hack + for at least basic all-dockapps winprop matching. For better matching + dockapps should preferrably be able to start normally, as `asclock` + can do (an does by default), instead of the "withdrawn" mode. + +2007-04-22 15:11 UTC Miroslav Kure + * Updated Czech translation + +2007-04-22 10:16 UTC Tuomo Valkonen + * Updated Finnish translation + +2007-04-22 10:10 UTC Tuomo Valkonen + * Man page tuning + +2007-04-22 09:58 UTC Tuomo Valkonen + * Man page binding documentation extraction script improvements. + (To generate better PWM man pages.) + +2007-04-22 09:58 UTC Tuomo Valkonen + * Removed duplicate Mod1+T binding + +2007-04-22 09:13 UTC Tuomo Valkonen + * Updates to PWM config file + +2007-04-22 00:33 UTC Tuomo Valkonen + * Removed ru translation, as it has not been updated as requested. + +2007-04-22 00:32 UTC Tuomo Valkonen + * Remove de translation, as it has not been updated as requested. + +2007-04-22 00:32 UTC Tuomo Valkonen + * Removed de and ru from translations to build + (to allow separately rolling back other removals to be recorded). + +2007-04-22 00:23 UTC Tuomo Valkonen + * Removed autoconf shit. + Since I will have nothing to do with that shit, and nobody else + seems to maintain or support it either, it has no place here. + +2007-04-21 17:23 UTC Tuomo Valkonen + * Changes in prepare_manage to cope with nested workspaces. + A priority parameter is passed instead of just a redirection + hint, which was poorly utilised anyway. + +2007-04-20 16:30 UTC Tuomo Valkonen + * Added is_transient field to WClientWin.get_ident and for winprop matching. + +2007-04-20 16:30 UTC Tuomo Valkonen + * Removed unused transient_for field from WClientWin + +2007-04-20 16:09 UTC Tuomo Valkonen + * Added look_greenlight + +2007-04-20 16:07 UTC Tuomo Valkonen + * Hmm... + +2007-04-09 09:42 UTC Tuomo Valkonen + * Added commented-out bindings for plain-old-menus in cfg_ion.lua + +2007-04-08 12:37 UTC Tuomo Valkonen + * Ref. to size policy section etc. + +2007-04-08 12:18 UTC Tuomo Valkonen + * Use strings instead of numeric size policies + +2007-04-06 11:29 UTC Tuomo Valkonen + * Docs from $(LUA_SOURCES) too.. + +2007-04-06 11:18 UTC Tuomo Valkonen + * Added exports.tex make rule + +2007-04-06 11:00 UTC Tuomo Valkonen + * Added padding to default look's transient style + +2007-04-05 16:30 UTC Tuomo Valkonen + * Fixed documentation mixup + +2007-04-05 16:27 UTC Tuomo Valkonen + * Statusbar documetnation improvements + +2007-04-03 15:41 UTC Tuomo Valkonen + * Updated Finnish translation + +2007-04-03 15:23 UTC Tuomo Valkonen + * Tiling navigation code changes and semi-fixes + +2007-03-31 21:04 UTC Miroslav Kure + * Updated Czech translation + +2007-03-31 14:20 UTC Tuomo Valkonen + * Redirect frame placeholders in frame_rescue_clientwins. + Dispose code changes had disabled the creation of a frame + recreation placeholder. + +2007-03-29 21:39 UTC Tuomo Valkonen + * Unsqueeze includes base size hint + +2007-03-29 21:35 UTC Tuomo Valkonen + * Put the scratchpad in the group *scratchws* + +2007-03-29 21:34 UTC Tuomo Valkonen + * WGroup attach only switches to floating mode frames in tiled mode + (and not those in unknown or transient mode). + +2007-03-29 21:33 UTC Tuomo Valkonen + * Detach stacks one level above source now + +2007-03-29 17:12 UTC Tuomo Valkonen + * Don't override "level" by "bottom" in WGroup.attach + +2007-03-29 16:00 UTC Tuomo Valkonen + * Move tiled transient handling from tiling code to frame code + (check by frame mode). This is the place to get correct behaviour + on a more complex scratchpad configuration. + +2007-03-28 18:19 UTC Tuomo Valkonen + * Context menu generation changes. + The `ctxmenu` menu generator automatically uses WGroup.bottom, so that + it suffices to pass _sub instead of _chld to the menu functions. This + should fix tab drop-down menus. + +2007-03-25 11:53 UTC Tuomo Valkonen + * region_may_control_focus policy change. + The focus may be controlled, if a manager is about to be given + the focus (which makes sense, since we have not requested focus + within a particular region within it). This fixes unsqueeze focus + issues. + +2007-03-20 11:35 UTC Tuomo Valkonen + * Export name fix + +2007-03-19 19:02 UTC Tuomo Valkonen + * Removed redundant MPLEX_ATTACH_MODAL parameter + +2007-03-19 18:57 UTC Tuomo Valkonen + * Menus and queries use STACKING_LEVEL_MODAL1+1. + This is to not let transients steal the focus. + +2007-03-19 18:37 UTC Tuomo Valkonen + * Oops, return in wrong place in fs rq check was breaking other cfgrqs + +2007-03-19 18:19 UTC Tuomo Valkonen + * Unsqueeze infinite loop fix + 2007-03-18 20:31 UTC Tuomo Valkonen tagged ion-3ds-20070318 diff --git a/LICENSE b/LICENSE index cf9b6b9..b5cf6d2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,9 +1,70 @@ +Copyright (c) Tuomo Valkonen 1999-2007. + +The code of this project is "essentially" licensed under the LGPL, version +2.1, unless otherwise indicated in components taken from elsewhere. It is +reproduced below. Additionally, the following terms apply to the use of +the names Ion, Ion3, and other derived names: + + Derived works and altered versions that significantly differ from the + original copyright holder's versions, must either a) be given names + that can not be associated with the "Ion" project, or b) be qualified + as "Ion soup", and still be considerable as customised versions of this + software. In both cases, executables must also be given names that do + not conflict with the original copyright holder's version, and the + copyright holder may not be referred to for support. + + Modules and other (standalone) extensions to Ion must also be named + so that they can not be confused to be supported by the copyright + holder. If "Ion" occurs in the name, it must be in the form + "Foo for Ion" instead of "Ion Foo", etc. + + If the name of the project (Ion), resp. names of particular branches + (Ion1, Ion2, Ion3, etc.), are used without further prominent version + qualifiers and notices of possible out-datedness to distribute this + software, then the following conditions must hold: a) The version + distributed online may not significantly differ from the copyright + holder's latest release marked stable, resp. latest release on a + branch, within a reasonable delay (normally 28 days) from the release. + b) The holders of physical distribution media are provided ways to + upgrade to the latest release within this same delay. + + This name policy notice may not be altered, and must be included in + any altered versions and binary redistributions. It may only be + removed when using small portions of the code in unrelated projects. + + The copyright holder and the Ion project retain the same rights to + your modifications that it would have under the LGPL or GPL without + these or similar additional terms. + +Explanations: + +Significant change: Bug fixes are a priori insignificant as additions. +Basic changes that are needed to install or run the software on a target +platform are a priori insignificant. Additionally, basic configuration +changes to better integrate the software with the target platform, +without obstructing the standard behaviour, are a priori insignificant. +The copyright holder, however, reserves the right to refine the +definition of significant changes on a per-case basis. Please consult +when in doubt. + +Distributions: For example, suppose an aggregate distribution of software +provides a `installpkg` command for installing packages. Then the action +`installpkg ion3` (resp. `installpkg ion`) should always install the +latest release of Ion3 (resp. the latest stable release), online +connectivity provided. The action `installpkg ion-3ds-20070318` may +at any date install this particular mentioned release. Likewise +`installpkg ion-soup` may install any non-conflicting customised +version. + +--- + + GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -57,7 +118,7 @@ modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. -^L + Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a @@ -113,7 +174,7 @@ modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. -^L + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION @@ -218,7 +279,7 @@ instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. -^L + Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. @@ -269,7 +330,7 @@ Library will still fall under Section 6.) distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. -^L + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work @@ -331,7 +392,7 @@ restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. -^L + 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined @@ -372,7 +433,7 @@ subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. -^L + 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -425,7 +486,7 @@ conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. -^L + 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is @@ -459,7 +520,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS -^L + How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest @@ -490,7 +551,7 @@ notice is found. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/README b/README index 29fcb90..226bbe4 100644 --- a/README +++ b/README @@ -17,17 +17,8 @@ Building and installing * GNU make * Lua 5.1 (see ). -2. a) Edit `system.mk` to suit your system. Most GNU/Linux users should - need very few changes. - - b) Alternatively, go to the directory `build/ac`, run `autoreconf` - and then `./configure`. Switch back to the top lvel directory - afterwards. See `build/ac/README.autoconf` for details on parameters, - especially if you are using the Debian Lua packages. If you try - this method and it fails for some reason, please make sure - `build/ac/system-ac.mk` does not exist before falling back to - alternative a). Also in such a case, find someone else to complain - to: I (tuomov) will have nothing to do with autoconf. +2. Edit `system.mk` to suit your system. Most GNU/Linux users should + need very few changes. 3. If you want to build some extra modules now or do not want to build some of the standard modules, edit `modulelist.mk`. @@ -118,8 +109,6 @@ Credits Ion was written by Tuomo Valkonen. -The autoconf script written by Tom Payne for the most part. - The dock module was written by Tom Payne and Per Olofsson. `utils/ion-completefile/ion-completefile.c` is based on editline, (c) diff --git a/RELNOTES b/RELNOTES index c8621c1..4a3998e 100644 --- a/RELNOTES +++ b/RELNOTES @@ -1,4 +1,37 @@ +ion-3rc-20070506 +---------------- + +This is the first "rc" or "(stable) release candidate" release of +Ion3. This means that there will not be any further major changes +to it. Bugs will be fixed, and as an exception to the general +feature freeze, some hooks may still be added, if deemed useful. +Translations may also be included. After no new bugs (that can not +be deemed features) have been found in this or following "rc" +releases, the stable Ion3 will be released. + +Most of the changes in this release to the previous one already +are bug fixes, in addition to some general clean-up. Other notable +changes are: + + * Winprop matching improvements: it is possible to match against + `is_dockapp` and `is_transient` (booleans), and there's a hack + to support `class` and `instance` for dockapps too. + + * The default configuration puts dockapps in the statusbar's + tray area. + + * The autoconf kludge has been removed, as I will have nothing + to do with it, and nobody else seems to support or maintain + it either. + + * Tab numbers are displayed when releasing modifiers in the + `Mod1+K` submap. + +Distributors should pay heed to the name policy notice in the +LICENSE file. + + ion-3ds-20070318 ---------------- diff --git a/TODO.riot b/TODO.riot index ffb8781..162a268 100644 --- a/TODO.riot +++ b/TODO.riot @@ -56,25 +56,6 @@ In-Reply-To: Better support for the few applicable EWMH hints -From background-static Thu Mar 23 17:52:17 EET 2006 -Message-Id: -Date: Thu Mar 23 17:52:17 EET 2006 -Status: RO -X-Riot-Version: 1ds-yyyymmdd -From: Riot -X-Riot-Edited: Sat Apr 22 19:08:23 EEST 2006 -Content-Type: text/plain; charset=utf-8 -Subject: Numbered tabs -In-Reply-To: - -Numbered tabs - -Either togglable, or perhaps the numbers should be shown when -a prefix of the key combo to switch tabs has been entered. -The latter will be quite more complicated to implement. - -Done: basic toggleable numbering. - From background-static Thu Mar 23 18:00:25 EET 2006 Message-Id: Date: Thu Mar 23 18:00:25 EET 2006 @@ -556,6 +537,25 @@ Subject: Done Done +From background-static Thu Mar 23 17:52:17 EET 2006 +Message-Id: +Date: Thu Mar 23 17:52:17 EET 2006 +Status: RO +X-Riot-Version: 1ds-yyyymmdd +From: Riot +X-Riot-Edited: Sat Apr 22 19:08:23 EEST 2006 +Content-Type: text/plain; charset=utf-8 +Subject: Numbered tabs +In-Reply-To: + +Numbered tabs + +Either togglable, or perhaps the numbers should be shown when +a prefix of the key combo to switch tabs has been entered. +The latter will be quite more complicated to implement. + +Done: basic toggleable numbering. + From background-static Thu Mar 23 17:40:03 EET 2006 Message-Id: Date: Thu Mar 23 17:40:03 EET 2006 diff --git a/build/ac/README.autoconf b/build/ac/README.autoconf deleted file mode 100644 index 9af494e..0000000 --- a/build/ac/README.autoconf +++ /dev/null @@ -1,45 +0,0 @@ - -Ion autoconf script README - - -CONFIGURE SCRIPT OPTIONS - -The Ion-specific options to ./configure are: - - --disable-xinerama - --disable-xfree86-textprop-bug-workaround - --enable-Xutf8 - --disable-shared - --with-lua* (see DEBIAN NOTES below) - --enable-c99-source - --enable-xopen-source - --disable-locale - --enable-sun-f1x-remap - -Run ./configure --help for more information on these options. The -defaults are chosen to generate a configuration very similar to the -Ion default. - - -DEBIAN NOTES - -If you are using the Lua 5.1 package on Debian then use - - ./configure --with-lua-suffix=5.1 \ - --with-lua-includes=/usr/include/lua5.1 - -This will allow the script to find the Lua headers, binaries and -libraries as renamed and located on Debian. - - -CYGWIN NOTES - -Under Cygwin you must use statically linked modules: - - ./configure --disabled-shared - - -AUTHORS - -Tom Payne - diff --git a/build/ac/aclocal.m4 b/build/ac/aclocal.m4 deleted file mode 100644 index c80e0ac..0000000 --- a/build/ac/aclocal.m4 +++ /dev/null @@ -1,57 +0,0 @@ - -dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) -dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page -dnl also defines GSTUFF_PKG_ERRORS on error -AC_DEFUN(PKG_CHECK_MODULES, [ - succeeded=no - - if test -z "$PKG_CONFIG"; then - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - fi - - if test "$PKG_CONFIG" = "no" ; then - echo "*** The pkg-config script could not be found. Make sure it is" - echo "*** in your path, or set the PKG_CONFIG environment variable" - echo "*** to the full path to pkg-config." - echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." - else - PKG_CONFIG_MIN_VERSION=0.9.0 - if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then - AC_MSG_CHECKING(for $2) - - if $PKG_CONFIG --exists "$2" ; then - AC_MSG_RESULT(yes) - succeeded=yes - - AC_MSG_CHECKING($1_CFLAGS) - $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` - AC_MSG_RESULT($$1_CFLAGS) - - AC_MSG_CHECKING($1_LIBS) - $1_LIBS=`$PKG_CONFIG --libs "$2"` - AC_MSG_RESULT($$1_LIBS) - else - $1_CFLAGS="" - $1_LIBS="" - ## If we have a custom action on failure, don't print errors, but - ## do set a variable so people can do so. - $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` - ifelse([$4], ,echo $$1_PKG_ERRORS,) - fi - - AC_SUBST($1_CFLAGS) - AC_SUBST($1_LIBS) - else - echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." - echo "*** See http://www.freedesktop.org/software/pkgconfig" - fi - fi - - if test $succeeded = yes; then - ifelse([$3], , :, [$3]) - else - ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) - fi -]) - - diff --git a/build/ac/configure.ac b/build/ac/configure.ac deleted file mode 100644 index 88a8d4d..0000000 --- a/build/ac/configure.ac +++ /dev/null @@ -1,440 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -dnl Please report bugs in this autoconf script Tom Payne -dnl $Header: /home/twp/cvsroot/twp/ion/ion-devel-autoconf/configure.ac,v 1.16 2004/01/14 11:32:19 twp Exp $ - -AC_INIT([Ion Window Manager], - [3ds-20070318], - [nobody@nowhere.invalid], - [ion3]) -AC_PREREQ([2.58]) -AC_REVISION([$Revision: 1.16 $]) - -dnl Checks for programs. {{{ -AC_PROG_CC() -AC_PROG_EGREP() -AC_PROG_INSTALL() -AC_PROG_RANLIB() -AC_CHECK_TOOL([STRIP], [strip], [:]) -AC_CHECK_TOOL([AR], [ar], []) -AC_CHECK_PROG(XMESSAGE, xmessage, xmessage) -if test "x${XMESSAGE}" = "x"; then - AC_MSG_WARN([*** ion needs xmessage to run correctly]) -fi -dnl }}} - -dnl Checks for libraries. {{{ -AC_PATH_XTRA() -AC_CHECK_HEADER([libintl.h], [], - [AC_MSG_ERROR([*** libintl.h not found. - *** You probably need to install libc6-dev])]) -dnl Perhaps we should check for -lintl, but on my machine, -dnl the library isn't needed. Only the #include is necessary. - -test "${X_DISPLAY_MISSING+set}" = set && exit 1 -AC_CHECK_HEADER([X11/SM/SMlib.h], [], - [AC_MSG_ERROR([*** SMlib.h not found. - *** You probably need to install libsm-dev])]) -AC_CHECK_HEADER([X11/Xresource.h], [], - [AC_MSG_ERROR([*** Xresource.h.h not found. - *** You probably need to install libx11-dev])]) -AC_CHECK_LIB([Xext], - [XMissingExtension], - [X_LIBS="$X_LIBS -lXext"], - [AC_MSG_ERROR([*** Missing symbol XMissingExtension in Xext])], - [$X_PRE_LIBS -lX11 $X_LIBS $X_EXTRA_LIBS]) -dnl }}} - -dnl XINERAMA_LIBS, _DCF_NO_XINERAMA {{{ - -AC_SUBST([XINERAMA_LIBS]) -AC_SUBST([_DCF_NO_XINERAMA]) - -AC_ARG_ENABLE([xinerama], - [AS_HELP_STRING([--disable-xinerama], - [Disable Xinerama support])]) - -if test "x$enable_xinerama" != xno; then - AC_CHECK_LIB([Xinerama], - [XineramaQueryExtension], - [XINERAMA_LIBS="-lXinerama"], - [AC_MSG_WARN([*** Xinerama disabled (not available)]) - enable_xinerama="no"], - [$X_PRE_LIBS -lX11 $X_LIBS $X_EXTRA_LIBS]) - -fi - -if test "x$enable_xinerama" = xno; then - _DCF_NO_XINERAMA="-DCF_NO_XINERAMA" -fi - -dnl }}} - -dnl _DCF_XFREE86_TEXTPROP_BUG_WORKAROUND {{{ - -AC_SUBST([_DCF_XFREE86_TEXTPROP_BUG_WORKAROUND]) - -AC_ARG_ENABLE([xfree86-textprop-bug-workaround], - [AS_HELP_STRING([--disable-xfree86-textprop-bug-workaround], - [Disable the XFree86 textprop bug workaround])]) - -if test "x$enable_xfree86_textprop_bug_workaround" != xno; then - _DCF_XFREE86_TEXTPROP_BUG_WORKAROUND="-DCF_XFREE86_TEXTPROP_BUG_WORKAROUND" -fi - -dnl }}} - -dnl _DCF_DE_USE_XUTF8 {{{ - -AC_SUBST([_DCF_DE_USE_XUTF8]) - -AC_ARG_ENABLE([Xutf8], - [AS_HELP_STRING([--enable-Xutf8], - [Use the Xutf8 routines (XFree86 extension) - instead of Xmb routines in an UTF-8 locale.])]) - -if test "x$enable_Xutf8" = xyes; then - AC_MSG_CHECKING([for Xutf8*]) - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $X_CFLAGS" - AC_RUN_IFELSE([AC_LANG_SOURCE([[ -#include - -int main() -{ -#ifdef X_HAVE_UTF8_STRING - exit(0); -#else - exit(1); -#endif -} - ]])], - [AC_MSG_RESULT([yes]) - _DCF_DE_USE_XUTF8="-DCF_DE_USE_XUTF8"], - [AC_MSG_RESULT([no]) - exit 1]) - CFLAGS="$save_CFLAGS" -fi - -dnl }}} - -dnl _DCF_SUN_F1X_REMAP {{{ - -AC_SUBST([_DCF_SUN_F1X_REMAP]) - -AC_ARG_ENABLE([sun-f1x-remap], - [AS_HELP_STRING([--enable-sun-f1x-remap], - [Remap F11 key to SunF36 and F12 to SunF37])]) - -if test "x$enable_sun_f1x_remap" == xyes; then - _DCF_SUN_F1X_REMAP="-DCF_SUN_F1X_REMAP" -fi - -dnl }}} - -dnl DL_LIBS {{{ - -AC_SUBST([DL_LIBS]) - -AC_CHECK_HEADER([dlfcn.h], [], [AC_MSG_ERROR([*** missing header dlfcn.h])]) -AC_CHECK_LIB([dl], [dlopen], [DL_LIBS="-ldl"], - [AC_MSG_ERROR([*** missing library dl])]) - -dnl }}} - -dnl PRELOAD_MODULES {{{ - -AC_SUBST(PRELOAD_MODULES) - -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--disable-shared], - [Do not dynamically load modules (preload modules - instead)])]) - -if test "x$enable_shared" = xno; then - PRELOAD_MODULES="1" -fi - -dnl }}} - -dnl LUA, LUAC, LUA_INCLUDES, LUA_LIBS {{{ - -AC_SUBST([LUA]) -AC_SUBST([LUAC]) -AC_SUBST([LUA_INCLUDES]) -AC_SUBST([LUA_LIBS]) - -dnl Arguments {{{ -AC_ARG_WITH([lua-prefix], - [AS_HELP_STRING([--with-lua-prefix=DIR], - [Lua files are in DIR])]) -AC_ARG_WITH([lua-includes], - [AS_HELP_STRING([--with-lua-includes=DIR], - [Lua include files are in DIR])]) -AC_ARG_WITH([lua-libraries], - [AS_HELP_STRING([--with-lua-libraries=DIR], - [Lua library files are in DIR])]) -AC_ARG_WITH([lua-suffix], - [AS_HELP_STRING([--with-lua-suffix=ARG], - [Lua binary and library files are suffixed with - ARG])]) -dnl }}} - -dnl LUA {{{ -if test "x$with_lua_prefix" = x; then - lua_search_path="$PATH" -else - lua_search_path="$with_lua_prefix/bin" -fi -if test "x$LUA" = x; then - AC_PATH_PROG([LUA], [lua$with_lua_suffix], [], [$lua_search_path]) - test "x$LUA" = x && AC_MSG_ERROR([*** Can't build ion without lua]) -fi -dnl }}} - -dnl lua_version {{{ -AC_MSG_CHECKING([for lua version >= 5.1]) -lua_version=$($LUA -v 2>&1 | head -n 1 | cut -d' ' -f2) -dnl lua_version=$($LUA -v 2>&1 >/dev/null | head -n 1 | $EGREP -o '[0-9]+(\.[0-9]+)+') -case $lua_version in -0.* | 1.* | 2.* | 3.* | 4.* | 5.0) - AC_MSG_RESULT([no (found $lua_version)]) - AC_MSG_ERROR([*** can't build ion with this version of lua]) - ;; -*) - AC_MSG_RESULT([yes (found $lua_version)]) - ;; -esac -dnl }}} - -dnl LUAC {{{ -if test "x$LUAC" = x; then - AC_PATH_PROG([LUAC], [luac$with_lua_suffix], [], [$lua_search_path]) - test "x$LUAC" = x && exit 1 -fi -dnl }}} - -dnl luac_version {{{ -AC_MSG_CHECKING([for lua version = luac version]) -luac_version=$($LUAC -v 2>&1 | head -n 1 | cut -d' ' -f2) -if test "x$lua_version" = "x$luac_version"; then - AC_MSG_RESULT([yes (found $luac_version)]) -else - AC_MSG_RESULT([no (found $luac_version)]) - exit 1 -fi -dnl }}} - -dnl LUA_INCLUDES {{{ -if test "x$with_lua_includes" != x; then - LUA_INCLUDES="-I$with_lua_includes" -elif test "x$with_lua_prefix" != x; then - LUA_INCLUDES="-I$with_lua_prefix/include" -fi -save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS $LUA_INCLUDES" -AC_CHECK_HEADERS([lua.h lualib.h], [], - [AC_MSG_ERROR([*** missing headers lua.h or lualib.h. - *** install the lua's -dev package or check --with-lua-includes option.])], []) -CFLAGS="$save_CFLAGS" -dnl }}} - -dnl LUA_LIBS {{{ -if test "x$with_lua_libraries" != x; then - LUA_LIBS="-L$with_lua_libraries" -elif test "x$with_lua_prefix" != x; then - LUA_LIBS="-L$with_lua_prefix/lib" -fi -AC_CHECK_LIB([m], [exp], [lua_extra_libs="$lua_extra_libs -lm"], []) -AC_CHECK_LIB([dl], [dlopen], [lua_extra_libs="$lua_extra_libs -ldl"], []) -AC_CHECK_LIB([lua$with_lua_suffix], - [lua_call], - [LUA_LIBS="$LUA_LIBS -llua$with_lua_suffix $lua_extra_libs"], - [AC_MSG_ERROR([*** Can't find lua_call in lua$with_lua_suffix. - *** Check for liblua installation or --with-lua-libraries or --with-lua-suffix options])], - [$LUA_LIBS $lua_extra_libs]) -dnl }}} - -dnl liblua_version {{{ -AC_MSG_CHECKING([for liblua version >= 5.1]) -save_CFLAGS="$CFLAGS" -save_LIBS="$LIBS" -CFLAGS="$CFLAGS $LUA_INCLUDES" -LIBS="$LIBS $LUA_LIBS" -AC_RUN_IFELSE([AC_LANG_SOURCE([[ - -#include -#include -#include -#include - -int main() -{ - printf("(found %s, %d)... ", LUA_VERSION, LUA_VERSION_NUM); - if(LUA_VERSION_NUM >= 501) - exit(EXIT_SUCCESS); - exit(EXIT_FAILURE); -} - -]])], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - exit 1]) -CFLAGS="$save_CFLAGS" -LIBS="$save_LIBS" -dnl }}} - -dnl }}} - -dnl HAS_SYSTEM_ASPRINTF {{{ - -AC_SUBST([HAS_SYSTEM_ASPRINTF]) - -AC_CHECK_FUNC([asprintf], - [AC_CHECK_FUNC([vasprintf], - [HAS_SYSTEM_ASPRINTF="1"])]) - -dnl }}} - -dnl XOPEN_SOURCE {{{ - -AC_SUBST([XOPEN_SOURCE]) - -AC_ARG_ENABLE([xopen-source], - [AS_HELP_STRING([--enable-xopen-source], - [Enable X/Open C flags (development use only)])]) - -if test "x$enable_xopen_source" = xyes; then - AC_MSG_CHECKING([for $CC flags to accept X/Open C]) - case $host in - # FIXME: what flags are required for other hosts/compilers? - *-*-solaris* | *-*-sunos*) - XOPEN_SOURCE="-D__EXTENSIONS__" - ;; - *) - XOPEN_SOURCE="-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED" - ;; - esac - AC_MSG_RESULT([$XOPEN_SOURCE]) -fi - -dnl }}} - -dnl C99_SOURCE {{{ - -AC_SUBST([C99_SOURCE]) - -AC_ARG_ENABLE([c99-source], - [AS_HELP_STRING([--enable-c99-source], - [Enable C99 source (development use only)])]) - -if test "x$enable_c99_source" = xyes; then - AC_MSG_CHECKING([for $CC flags to accept C99]) - case $CC in - # FIXME: what flags are required for other hosts/compilers? - gcc*) - C99_SOURCE="-std=c99" - ;; - esac - AC_MSG_RESULT([$C99_SOURCE]) -fi - -dnl }}} - -dnl _DCF_HAS_VA_COPY {{{ - -AC_SUBST([_DCF_HAS_VA_COPY]) - -dnl check for va_copy {{{ - -AC_MSG_CHECKING([for va_copy]) -save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS $C99_SOURCE" -AC_RUN_IFELSE([AC_LANG_SOURCE([[ - -#include -#include - -void f(void *last, ...) -{ - va_list ap, aq; - va_start(ap, last); - va_copy(aq, ap); - va_end(ap); - exit(va_arg(aq, int)); -} - -int main() -{ - f(NULL, EXIT_SUCCESS); - exit(EXIT_FAILURE); -} - -]])], - [AC_MSG_RESULT([yes]) - _DCF_HAS_VA_COPY="-DCF_HAVE_VA_COPY"], - [AC_MSG_RESULT([no])]) -CFLAGS="$save_CFLAGS" - -dnl }}} - -dnl check whether -ansi breaks va_copy {{{ - -if test "x${XOPEN_SOURCE}" != "x"; then - AC_MSG_CHECKING([whether XOPEN_SOURCE breaks va_copy]) - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $XOPEN_SOURCE $C99_SOURCE" - AC_LINK_IFELSE([AC_LANG_SOURCE([[ - -#include -#include - -void f(void *last, ...) -{ - va_list ap, aq; - va_start(ap, last); - va_copy(aq, ap); - va_end(ap); - va_end(aq); -} - -int main() -{ - f(NULL); - exit(EXIT_SUCCESS); -} - -]])], - [AC_MSG_RESULT([no])], - [AC_MSG_RESULT([yes, clearing XOPEN_SOURCE]) - XOPEN_SOURCE=""]) - CFLAGS="$save_CFLAGS" -fi -dnl }}} - -dnl }}} - -dnl _DCF_NO_LOCALE {{{ - -AC_SUBST([_DCF_NO_LOCALE]) - -AC_ARG_ENABLE([locale], - [AS_HELP_STRING([--disable-locale], - [Disable locale support])]) - -if test "x$enable_locale" == xno; then - _DCF_NO_LOCALE="-DCF_NO_LOCALE" -fi - -dnl }}} - - -AC_OUTPUT([system-ac.mk]) - -if test "x$lua_version" = "x5.0"; then - AC_MSG_NOTICE([**]) - AC_MSG_NOTICE([** lua version 5.0 is buggy, consider upgrading to 5.0.1]) - AC_MSG_NOTICE([** see http://lua-users.org/lists/lua-l/2003-10/msg00039.html]) - AC_MSG_NOTICE([**]) -fi - -dnl vim: foldmethod=marker tabstop=4 shiftwidth=4 diff --git a/build/ac/system-ac.mk.in b/build/ac/system-ac.mk.in deleted file mode 100644 index 035a515..0000000 --- a/build/ac/system-ac.mk.in +++ /dev/null @@ -1,190 +0,0 @@ -## -## System settings -## - - -## -## Installation paths -## - -prefix=@prefix@ -exec_prefix=@exec_prefix@ - -# Unless you are creating a package conforming to some OS's standards, you -# probably do not want to modify the following directories: - -# Main binaries -BINDIR=@bindir@ -# Configuration .lua files -ETCDIR=@sysconfdir@/@PACKAGE_TARNAME@ -# Some .lua files and ion-* shell scripts -SHAREDIR=@datadir@/@PACKAGE_TARNAME@ -# Manual pages -MANDIR=@datadir@/man -# Some documents -DOCDIR=@datadir@/doc/@PACKAGE_TARNAME@ -# Nothing at the moment -INCDIR=@includedir@ -# Nothing at the moment -LIBDIR=@libdir@ -# Modules -MODULEDIR=@libdir@/@PACKAGE_TARNAME@/mod -# Compiled Lua source code -LCDIR=@libdir@/@PACKAGE_TARNAME@/lc -# ion-completefile (does not belong in SHAREDIR being a binary file) -EXTRABINDIR=@libexecdir@/@PACKAGE_TARNAME@/bin -# For ion-completeman system-wide cache -#VARDIR=@localstatedir@/cache/@PACKAGE_TARNAME@ -VARDIR=/var/cache/@PACKAGE_TARNAME@ -# Message catalogs -LOCALEDIR=@prefix@/share/locale - - -## -## Modules -## - -# Set PRELOAD_MODULES=1 if your system does not support dynamically loaded -# modules through 'libdl' or has non-standard naming conventions. -PRELOAD_MODULES=@PRELOAD_MODULES@ - -# Flags to link with libdl. -DL_LIBS=@DL_LIBS@ - - -## -## Lua -## - -# If you have installed Lua 5.0 from the official tarball without changing -# paths, this should do it. -#LUA_DIR=/usr/local -LUA_LIBS = @LUA_LIBS@ -LUA_INCLUDES = @LUA_INCLUDES@ -LUA=@LUA@ -LUAC=@LUAC@ - -# If you are using the Debian packages, the following settings should be -# what you want. -#LUA_LIBS=`lua-config50 --libs` -#LUA_INCLUDES=`lua-config50 --include` -#LUA=lua50 -#LUAC=luac50 - - -## -## X libraries, includes and options -## - -#X11_PREFIX=/usr/X11R6 -# SunOS/Solaris -#X11_PREFIX=/usr/openwin - -X11_LIBS=@X_EXTRA_LIBS@ @X_PRE_LIBS@ -lX11 @X_LIBS@ -X11_INCLUDES=@X_CFLAGS@ - -# Change commenting to disable Xinerama support -XINERAMA_LIBS=@XINERAMA_LIBS@ -DEFINES += @_DCF_NO_XINERAMA@ - -# XFree86 libraries up to 4.3.0 have a bug that will cause Ion to segfault -# if Opera is used when i18n support is enabled. The following setting -# should work around that situation. -DEFINES += @_DCF_XFREE86_TEXTPROP_BUG_WORKAROUND@ - -# Use the Xutf8 routines (XFree86 extension) instead of Xmb routines in -# an UTF8 locale. -DEFINES += @_DCF_DE_USE_XUTF8@ - -# Remap F11 key to SunF36 and F12 to SunF37? You may want to set this -# on SunOS. -DEFINES += @_DCF_SUN_F1X_REMAP@ - - -## -## libc -## - -# You may uncomment this if you know your system has -# asprintf and vasprintf in the c library. (gnu libc has.) -# If HAS_SYSTEM_ASPRINTF is not defined, an implementation -# in sprintf_2.2/ is used. -HAS_SYSTEM_ASPRINTF=@HAS_SYSTEM_ASPRINTF@ - - -# If you're on an archaic system (such as relatively recent *BSD releases) -# without even dummy multibyte/widechar and localisation support, you may -# have to uncomment the following line: -DEFINES += @_DCF_NO_LOCALE@ - - -## -## C compiler -## - -CC=@CC@ - -# Same as '-Wall -pedantic' without '-Wunused' as callbacks often -# have unused variables. -WARN= -W -Wimplicit -Wreturn-type -Wswitch -Wcomment \ - -Wtrigraphs -Wformat -Wchar-subscripts \ - -Wparentheses -pedantic -Wuninitialized - -CFLAGS=@CFLAGS@ $(WARN) $(DEFINES) $(EXTRA_INCLUDES) $(INCLUDES) -LDFLAGS=@LDFLAGS@ $(EXTRA_LIBS) $(LIBS) -EXPORT_DYNAMIC=-Xlinker --export-dynamic - -# The following options are mainly for development use and can be used -# to check that the code seems to conform to some standards. Depending -# on the version and vendor of you libc, the options may or may not have -# expected results. If you define one of C99_SOURCE or XOPEN_SOURCE, you -# may also have to define the other. - -#C89_SOURCE=-ansi - -#POSIX_SOURCE=@_D_POSIX_SOURCE@ - -# Most systems -#XOPEN_SOURCE=-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED -# SunOS, (Irix) -#XOPEN_SOURCE=-D__EXTENSIONS__ - -#C99_SOURCE=-std=c99 -DCF_HAS_VA_COPY - -# The -DCF_HAS_VA_COPY option should allow for some optimisations, and -# in some cases simply defining -C99_SOURCE=@_DCF_HAS_VA_COPY@ -# might allow for those optimisations to be taken without any special -# libc or compiler options. - - -## -## make depend -## - -DEPEND_FILE=.depend -DO_MAKE_DEPEND=$(CC) -MM $(DEFINES) $(EXTRA_INCLUDES) $(INCLUDES) -MAKE_DEPEND=$(DO_MAKE_DEPEND) $(SOURCES) > $(DEPEND_FILE) - -## -## AR -## - -AR=@AR@ -ARFLAGS=cr -RANLIB=@RANLIB@ - - -## -## Install & strip -## - -INSTALL=@INSTALL@ -INSTALLDIR=mkdir -p - -BIN_MODE=755 -DATA_MODE=644 - -STRIP=@STRIP@ - -RM=rm diff --git a/build/mkman.lua b/build/mkman.lua index bd867c6..95f0bd9 100644 --- a/build/mkman.lua +++ b/build/mkman.lua @@ -68,10 +68,24 @@ end local function dobindings(fn, bindings) local p={} + local dummy = function() end p.META="Mod1+" p.ALTMETA="" + p.dopath=dummy + p.defmenu=dummy + p.defctxmenu=dummy + p.menuentry=dummy + p.submenu=dummy + p.submap_enter=dummy + p.submap_leave=dummy + p.submap_wait=dummy + + p.ioncore={ + set=dummy, + } + function p.bdoc(text) return {action = "doc", text = text} end @@ -124,26 +138,43 @@ local function dobindings(fn, bindings) return mact("mdrag", buttonspec, cmd, guard) end - function p.defbindings(context, bnd) - if not bindings[context] then - bindings[context]=bnd + function ins(t, v) + if not t.seen then + t.seen={} + end + + if (not v.kcb) or v.submap then + -- Submap rebinds are not presently handled + table.insert(t, v) else - for _, v in ipairs(bnd) do - table.insert(bindings[context], v) + local id=v.action..":"..v.kcb..":"..(v.area or "") + local i=t.seen[id] + if i then + t[i].invalid=true + end + if v.cmd then + table.insert(t, v) + t.seen[id]=#t + else + -- Unbind only + t.seen[id]=nil end end end - - local function dummy() - end - p.defmenu=dummy - p.defctxmenu=dummy - p.menuentry=dummy - p.submenu=dummy + function p.defbindings(context, bnd) + if not bindings[context] then + bindings[context]={} + else + -- Reset documentation + table.insert(bindings[context], { action = "doc", text = nil }) + end + + for _, v in ipairs(bnd) do + ins(bindings[context], v) + end + end - p.ioncore={ set=dummy } - local env=setmetatable({}, { __index=p, __newindex=function(x) @@ -175,22 +206,30 @@ local function docgroup_bindings(bindings) local function parsetable(t, prefix) for _, v in ipairs(t) do - if v.kcb then - v.kcb=string.gsub(v.kcb, "AnyModifier%+", "") - end - if v.action=="doc" then - outi=outi+1 - out[outi]={doc=v.text, bindings={}} - elseif v.submap then - parsetable(v.submap, prefix..v.kcb.." ") - else - assert(out[outi]) - v.kcb=prefix..v.kcb - table.insert(out[outi].bindings, v) + if not v.invalid then + if v.kcb then + v.kcb=string.gsub(v.kcb, "AnyModifier%+", "") + end + if v.action=="doc" then + if outi==0 or #out[outi].bindings>0 then + outi=outi+1 + end + out[outi]={doc=v.text, bindings={}} + elseif v.submap then + parsetable(v.submap, prefix..v.kcb.." ") + else + assert(out[outi]) + v.kcb=prefix..v.kcb + table.insert(out[outi].bindings, v) + end end end end + if outi~=0 and #out[outi].bindings==0 then + out[outi]=nil + end + parsetable(bindings, "") return out @@ -227,7 +266,7 @@ end local function write_bindings_man(db) local function write_binding_man(v) - return '.TP\n.B '..combine_bindings(v)..'\n'..gettext(v.doc)..'\n' + return '.TP\n.B '..combine_bindings(v)..'\n'..gettext(v.doc or "?")..'\n' end local s="" diff --git a/build/rules.mk b/build/rules.mk index 3f8a42d..b61e2f6 100644 --- a/build/rules.mk +++ b/build/rules.mk @@ -40,11 +40,11 @@ depend: subdirs-depend _depend install: subdirs-install _install +ifdef MAKE_EXPORTS + # Exports ###################################### -ifdef MAKE_EXPORTS - EXPORTS_C = exports.c EXPORTS_H = exports.h @@ -56,14 +56,28 @@ _exports: $(EXPORTS_C) $(EXPORTS_H): $(EXPORTS_C) -$(EXPORTS_C): $(SOURCES) +$(EXPORTS_C): $(SOURCES) $(MKEXPORTS_EXTRA_DEPS) $(MKEXPORTS) -module $(MAKE_EXPORTS) -o $(EXPORTS_C) -h $(EXPORTS_H) \ $(SOURCES) $(MKEXPORTS_EXTRAS) +# Exports documentation +###################################### + +EXPORTS_DOC = exports.tex + +TO_CLEAN := $(TO_CLEAN) $(EXPORTS_DOC) + +_exports_doc: $(EXPORTS_DOC) + +$(EXPORTS_DOC): $(SOURCES) $(LUA_SOURCES) $(MKEXPORTS_EXTRA_DEPS) + $(MKEXPORTS) -mkdoc -module $(MAKE_EXPORTS) -o $(EXPORTS_DOC) \ + $(SOURCES) $(LUA_SOURCES) $(MKEXPORTS_EXTRAS) + else # !MAKE_EXPORTS EXPORTS_C = EXPORTS_H = +EXPORTS_DOC = endif # !MAKE_EXPORTS diff --git a/config.h b/config.h index f9d7131..03e80ee 100644 --- a/config.h +++ b/config.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * FOOBARBAZQUK */ #ifndef ION_CONFIG_H @@ -21,7 +18,6 @@ #define CF_MAX_MOVERES_STR_SIZE 32 -#define CF_TAB_TEXT_ALIGN ALIGN_CENTER #define CF_RESIZE_DELAY 1500 #define CF_XMESSAGE "xmessage -file " diff --git a/de/brush.c b/de/brush.c index 3101324..74b47f1 100644 --- a/de/brush.c +++ b/de/brush.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -29,6 +26,13 @@ /*{{{ Brush creation and releasing */ +#define MATCHES(S, A) (gr_stylespec_score(&(S), A)>0) +#define MATCHES2(S, A1, A2) (gr_stylespec_score2(&(S), A1, A2)>0) + +#define ENSURE_INITSPEC(S, NM) \ + if((S).attrs==NULL) gr_stylespec_load(&(S), NM); + + static GrStyleSpec tabframe_spec=GR_STYLESPEC_INIT; static GrStyleSpec tabinfo_spec=GR_STYLESPEC_INIT; static GrStyleSpec tabmenuentry_spec=GR_STYLESPEC_INIT; @@ -185,6 +189,7 @@ void debrush_get_border_widths(DEBrush *brush, GrBorderWidths *bdw) uint tmp=0; uint tbf=1, lrf=1; uint pad=bd->pad; + uint spc=style->spacing; switch(bd->sides){ case DEBORDER_TB: @@ -195,16 +200,22 @@ void debrush_get_border_widths(DEBrush *brush, GrBorderWidths *bdw) break; } + /* Ridge/groove styles use 'padding' for the spacing between the + * 'highlight' and 'shadow' portions of the border, and 'spacing' + * between the border and contents. Inlaid style also uses 'spacing' + * between the contents and the border, and padding as its outer + * component. Elevated style does not use spacing. + */ switch(bd->style){ case DEBORDER_RIDGE: case DEBORDER_GROOVE: - tmp=bd->sh+bd->hl; - bdw->top=tbf*tmp+pad; bdw->bottom=tbf*tmp+pad; - bdw->left=lrf*tmp+pad; bdw->right=lrf*tmp+pad; + tmp=bd->sh+bd->hl+pad; + bdw->top=tbf*tmp+spc; bdw->bottom=tbf*tmp+spc; + bdw->left=lrf*tmp+spc; bdw->right=lrf*tmp+spc; break; case DEBORDER_INLAID: - tmp=bd->sh; bdw->top=tbf*tmp+pad; bdw->left=lrf*tmp+pad; - tmp=bd->hl; bdw->bottom=tbf*tmp+pad; bdw->right=lrf*tmp+pad; + tmp=bd->sh+pad; bdw->top=tbf*tmp+spc; bdw->left=lrf*tmp+spc; + tmp=bd->hl+pad; bdw->bottom=tbf*tmp+spc; bdw->right=lrf*tmp+spc; break; case DEBORDER_ELEVATED: default: @@ -225,7 +236,7 @@ bool debrush_get_extra(DEBrush *brush, const char *key, char type, void *data) { DEStyle *style=brush->d; while(style!=NULL){ - if(extl_table_get(style->data_table, 's', type, key, data)) + if(extl_table_get(style->extras_table, 's', type, key, data)) return TRUE; style=style->based_on; } diff --git a/de/brush.h b/de/brush.h index d9a040a..3828a43 100644 --- a/de/brush.h +++ b/de/brush.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_DE_BRUSH_H @@ -27,11 +24,11 @@ INTRCLASS(DEBrush); typedef void DEBrushExtrasFn(DEBrush *brush, const WRectangle *g, DEColourGroup *cg, - GrBorderWidths *bdw, - GrFontExtents *fnte, + const GrBorderWidths *bdw, + const GrFontExtents *fnte, const GrStyleSpec *a1, const GrStyleSpec *a2, - bool pre); + bool pre, int index); DECLCLASS(DEBrush){ GrBrush grbrush; diff --git a/de/colour.c b/de/colour.c index 5693d81..d3be1ef 100644 --- a/de/colour.c +++ b/de/colour.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/de/colour.h b/de/colour.h index 06d8654..0f99863 100644 --- a/de/colour.h +++ b/de/colour.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_DE_COLOUR_H diff --git a/de/draw.c b/de/draw.c index 40a2f8f..c48d49a 100644 --- a/de/draw.c +++ b/de/draw.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -15,6 +12,7 @@ #include #include #include +#include #include "brush.h" #include "font.h" #include "private.h" @@ -296,17 +294,43 @@ static void copy_masked(DEBrush *brush, Drawable src, Drawable dst, } -static GrStyleSpec dragged_spec=GR_STYLESPEC_INIT; -static GrStyleSpec tagged_spec=GR_STYLESPEC_INIT; -static GrStyleSpec submenu_spec=GR_STYLESPEC_INIT; + +#define ISSET(S, A) ((S)!=NULL && gr_stylespec_isset(S, A)) + + +GR_DEFATTR(dragged); +GR_DEFATTR(tagged); +GR_DEFATTR(submenu); +GR_DEFATTR(numbered); +GR_DEFATTR(tabnumber); + + +static void ensure_attrs() +{ + GR_ALLOCATTR_BEGIN; + GR_ALLOCATTR(dragged); + GR_ALLOCATTR(tagged); + GR_ALLOCATTR(submenu); + GR_ALLOCATTR(numbered); + GR_ALLOCATTR(tabnumber); + GR_ALLOCATTR_END; +} + + +static int get_ty(const WRectangle *g, const GrBorderWidths *bdw, + const GrFontExtents *fnte) +{ + return (g->y+bdw->top+fnte->baseline + +(g->h-bdw->top-bdw->bottom-fnte->max_height)/2); +} void debrush_tab_extras(DEBrush *brush, const WRectangle *g, - DEColourGroup *cg, GrBorderWidths *bdw, - GrFontExtents *fnte, + DEColourGroup *cg, const GrBorderWidths *bdw, + const GrFontExtents *fnte, const GrStyleSpec *a1, const GrStyleSpec *a2, - bool pre) + bool pre, int index) { DEStyle *d=brush->d; GC tmp; @@ -315,22 +339,55 @@ void debrush_tab_extras(DEBrush *brush, const WRectangle *g, */ static bool swapped=FALSE; - ENSURE_INITSPEC(dragged_spec, "dragged"); - ENSURE_INITSPEC(tagged_spec, "tagged"); + ensure_attrs(); if(pre){ - if(!MATCHES2(dragged_spec, a1, a2)) - return; - - tmp=d->normal_gc; - d->normal_gc=d->stipple_gc; - d->stipple_gc=tmp; - swapped=TRUE; - XClearArea(ioncore_g.dpy, brush->win, g->x, g->y, g->w, g->h, False); + if(ISSET(a2, GR_ATTR(dragged)) || ISSET(a1, GR_ATTR(dragged))){ + tmp=d->normal_gc; + d->normal_gc=d->stipple_gc; + d->stipple_gc=tmp; + swapped=TRUE; + XClearArea(ioncore_g.dpy, brush->win, g->x, g->y, g->w, g->h, False); + } return; } - if(MATCHES2(tagged_spec, a1, a2)){ + + if((ISSET(a1, GR_ATTR(numbered)) || ISSET(a2, GR_ATTR(numbered))) + && index>=0){ + + DEColourGroup *cg; + GrStyleSpec tmp; + + gr_stylespec_init(&tmp); + gr_stylespec_append(&tmp, a2); + gr_stylespec_set(&tmp, GR_ATTR(tabnumber)); + + cg=debrush_get_colour_group2(brush, a1, &tmp); + + gr_stylespec_unalloc(&tmp); + + if(cg!=NULL){ + char *s=NULL; + + libtu_asprintf(&s, "[%d]", index+1); + + if(s!=NULL){ + int l=strlen(s); + uint w=debrush_get_text_width(brush, s, l); + if(w < g->w-bdw->right-bdw->left){ + int ty=get_ty(g, bdw, fnte); + int tx=(d->textalign==DEALIGN_RIGHT + ? g->x+bdw->left + : g->x+g->w-bdw->right-w); + debrush_do_draw_string(brush, tx, ty, s, l, TRUE, cg); + } + free(s); + } + } + } + + if(ISSET(a2, GR_ATTR(tagged)) || ISSET(a1, GR_ATTR(tagged))){ XSetForeground(ioncore_g.dpy, d->copy_gc, cg->fg); copy_masked(brush, d->tag_pixmap, brush->win, 0, 0, @@ -338,7 +395,7 @@ void debrush_tab_extras(DEBrush *brush, const WRectangle *g, g->x+g->w-bdw->right-d->tag_pixmap_w, g->y+bdw->top); } - + if(swapped){ tmp=d->normal_gc; d->normal_gc=d->stipple_gc; @@ -355,28 +412,26 @@ void debrush_tab_extras(DEBrush *brush, const WRectangle *g, void debrush_menuentry_extras(DEBrush *brush, const WRectangle *g, DEColourGroup *cg, - GrBorderWidths *bdw, - GrFontExtents *fnte, + const GrBorderWidths *bdw, + const GrFontExtents *fnte, const GrStyleSpec *a1, const GrStyleSpec *a2, - bool pre) + bool pre, int index) { int tx, ty; if(pre) return; - ENSURE_INITSPEC(submenu_spec, "submenu"); + ensure_attrs(); - if(!MATCHES2(submenu_spec, a1, a2)) - return; - - ty=(g->y+bdw->top+fnte->baseline - +(g->h-bdw->top-bdw->bottom-fnte->max_height)/2); - tx=g->x+g->w-bdw->right; + if(ISSET(a2, GR_ATTR(submenu)) || ISSET(a1, GR_ATTR(submenu))){ + ty=get_ty(g, bdw, fnte); + tx=g->x+g->w-bdw->right; - debrush_do_draw_string(brush, tx, ty, DE_SUB_IND, DE_SUB_IND_LEN, - FALSE, cg); + debrush_do_draw_string(brush, tx, ty, DE_SUB_IND, DE_SUB_IND_LEN, + FALSE, cg); + } } @@ -401,7 +456,8 @@ static void debrush_do_draw_textbox(DEBrush *brush, DEColourGroup *cg, bool needfill, const GrStyleSpec *a1, - const GrStyleSpec *a2) + const GrStyleSpec *a2, + int index) { uint len; GrBorderWidths bdw; @@ -412,7 +468,7 @@ static void debrush_do_draw_textbox(DEBrush *brush, grbrush_get_font_extents(&(brush->grbrush), &fnte); if(brush->extras_fn!=NULL) - brush->extras_fn(brush, geom, cg, &bdw, &fnte, a1, a2, TRUE); + brush->extras_fn(brush, geom, cg, &bdw, &fnte, a1, a2, TRUE, index); debrush_do_draw_box(brush, geom, cg, needfill); @@ -436,14 +492,13 @@ static void debrush_do_draw_textbox(DEBrush *brush, tx=geom->x+bdw.left; } - ty=(geom->y+bdw.top+fnte.baseline - +(geom->h-bdw.top-bdw.bottom-fnte.max_height)/2); + ty=get_ty(geom, &bdw, &fnte); debrush_do_draw_string(brush, tx, ty, text, len, FALSE, cg); }while(0); if(brush->extras_fn!=NULL) - brush->extras_fn(brush, geom, cg, &bdw, &fnte, a1, a2, FALSE); + brush->extras_fn(brush, geom, cg, &bdw, &fnte, a1, a2, FALSE, index); } @@ -455,7 +510,7 @@ void debrush_draw_textbox(DEBrush *brush, const WRectangle *geom, if(cg!=NULL){ debrush_do_draw_textbox(brush, geom, text, cg, needfill, - attr, NULL); + attr, NULL, -1); } } @@ -480,7 +535,7 @@ void debrush_draw_textboxes(DEBrush *brush, const WRectangle *geom, if(cg!=NULL){ debrush_do_draw_textbox(brush, &g, elem[i].text, cg, needfill, - common_attrib, &elem[i].attr); + common_attrib, &elem[i].attr, i); } if(i==n-1) diff --git a/de/font.c b/de/font.c index 957cc61..5521125 100644 --- a/de/font.c +++ b/de/font.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/de/font.h b/de/font.h index 7e40121..4ce1923 100644 --- a/de/font.h +++ b/de/font.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_DE_FONT_H diff --git a/de/fontset.h b/de/fontset.h index 994c769..632f6e2 100644 --- a/de/fontset.h +++ b/de/fontset.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_DE_FONTSET_H diff --git a/de/init.c b/de/init.c index bc771d0..60c8715 100644 --- a/de/init.c +++ b/de/init.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -130,45 +127,58 @@ void de_get_border(DEBorder *border, ExtlTab tab) /*{{{ Colours */ -bool de_get_colour(WRootWin *rootwin, DEColour *ret, - ExtlTab tab, DEStyle *based_on, - const char *what, DEColour substitute) +static bool de_get_colour_(WRootWin *rootwin, DEColour *ret, + ExtlTab tab, const char *what, + DEColour substitute, DEColour inherit) { char *name=NULL; - bool ok=FALSE; + bool set=FALSE; if(extl_table_gets_s(tab, what, &name)){ - ok=de_alloc_colour(rootwin, ret, name); + if(strcmp(name, "inherit")==0){ + set=de_duplicate_colour(rootwin, inherit, ret); + }else{ + set=de_alloc_colour(rootwin, ret, name); - if(!ok) - warn(TR("Unable to allocate colour \"%s\"."), name); - + if(!set) + warn(TR("Unable to allocate colour \"%s\"."), name); + } free(name); - }else if(based_on!=NULL){ - return de_get_colour(rootwin, ret, based_on->data_table, - based_on->based_on, what, substitute); } - if(!ok) - ok=de_duplicate_colour(rootwin, substitute, ret); + if(!set) + de_duplicate_colour(rootwin, substitute, ret); - return ok; + return set; } +static bool de_get_colour(WRootWin *rootwin, DEColour *ret, + ExtlTab tab, const char *what, DEColour substitute) +{ + return de_get_colour_(rootwin, ret, tab, what, substitute, substitute); +} + + void de_get_colour_group(WRootWin *rootwin, DEColourGroup *cg, ExtlTab tab, DEStyle *based_on) { - de_get_colour(rootwin, &(cg->hl), tab, based_on, "highlight_colour", - DE_WHITE(rootwin)); - de_get_colour(rootwin, &(cg->sh), tab, based_on, "shadow_colour", - DE_WHITE(rootwin)); - de_get_colour(rootwin, &(cg->bg), tab, based_on, "background_colour", - DE_BLACK(rootwin)); - de_get_colour(rootwin, &(cg->fg), tab, based_on, "foreground_colour", - DE_WHITE(rootwin)); - de_get_colour(rootwin, &(cg->pad), tab, based_on, "padding_colour", - cg->bg); + bool bgset; + DEColour padinh; + + de_get_colour(rootwin, &(cg->hl), tab, "highlight_colour", + (based_on ? based_on->cgrp.hl : DE_WHITE(rootwin))); + de_get_colour(rootwin, &(cg->sh), tab, "shadow_colour", + (based_on ? based_on->cgrp.sh : DE_WHITE(rootwin))); + de_get_colour(rootwin, &(cg->fg), tab, "foreground_colour", + (based_on ? based_on->cgrp.fg : DE_WHITE(rootwin))); + bgset=de_get_colour(rootwin, &(cg->bg), tab, "background_colour", + (based_on ? based_on->cgrp.bg : DE_BLACK(rootwin))); + + padinh=(based_on ? based_on->cgrp.pad : DE_WHITE(rootwin)); + + de_get_colour_(rootwin, &(cg->pad), tab, "padding_colour", + (bgset ? cg->bg : padinh), padinh); } @@ -258,6 +268,63 @@ void de_get_transparent_background(uint *mode, ExtlTab tab) /*}}}*/ +/*{{{ Extras filter/copy */ + + +static const char * const known_values[]={ + "based_on", + "font", + "shadow_pixels", + "highlight_pixels", + "padding_pixels", + "border_style", + "border_sides", + "spacing", + "foreground_colour", + "background_colour", + "shadow_colour", + "highlight_colour", + "padding_colour", + "text_align", + NULL +}; + + +static bool filter_extras_iter_fn(ExtlAny k, ExtlAny v, void *p) +{ + ExtlTab *tgt=(ExtlTab*)p; + const char *s; + int i; + + if(k.type!='s' && k.type!='S') + return TRUE; + + for(i=0; known_values[i]; i++){ + if(strcmp(known_values[i], k.value.s)==0) + return TRUE; + } + + if(*tgt==extl_table_none()) + *tgt=extl_create_table(); + + extl_table_set(*tgt, 'a', 'a', k, v); + + return TRUE; +} + + +static void filter_extras(ExtlTab *tgt, ExtlTab src) +{ + /* Copy any unknown string-keyed values from src to tgt, + * possibly creating tgt. + */ + extl_table_iter(src, filter_extras_iter_fn, tgt); +} + + +/*}}}*/ + + /*{{{ de_defstyle */ @@ -265,8 +332,6 @@ void de_get_nonfont(WRootWin *rootwin, DEStyle *style, ExtlTab tab) { DEStyle *based_on=style->based_on; - style->data_table=extl_ref_table(tab); - if(based_on!=NULL){ style->border=based_on->border; style->transparency_mode=based_on->transparency_mode; @@ -295,40 +360,37 @@ void de_get_nonfont(WRootWin *rootwin, DEStyle *style, ExtlTab tab) EXTL_EXPORT bool de_defstyle_rootwin(WRootWin *rootwin, const char *name, ExtlTab tab) { - DEStyle *style; - char *fnt; + DEStyle *style, *based_on=NULL; + int based_on_score=-1; + char *fnt, *bss; uint n; - char *based_on_name; - DEStyle *based_on=NULL; - GrStyleSpec based_on_spec; if(name==NULL) return FALSE; style=de_create_style(rootwin, name); - + if(style==NULL) return FALSE; - - if(get_spec(tab, "based_on", &based_on_spec, &based_on_name)){ - based_on=de_get_style(rootwin, &based_on_spec); + + if(extl_table_gets_s(tab, "based_on", &bss)){ + GrStyleSpec bs; - gr_stylespec_unalloc(&based_on_spec); - - if(based_on==style){ - warn(TR("'based_on' for %s points back to the style itself."), - name); - }else if(based_on==NULL){ - warn(TR("Unknown base style. \"%s\""), based_on_name); - }else{ - style->based_on=based_on; - based_on->usecount++; - /* Copy simple parameters */ - } + gr_stylespec_load(&bs, bss); + + based_on=de_get_style(rootwin, &bs); - free(based_on_name); + gr_stylespec_unalloc(&bs); + free(bss); + }else{ + based_on=de_get_style(rootwin, &style->spec); } - + + if(based_on!=NULL){ + style->based_on=based_on; + based_on->usecount++; + } + de_get_nonfont(rootwin, style, tab); if(extl_table_gets_s(tab, "font", &fnt)){ @@ -341,6 +403,54 @@ bool de_defstyle_rootwin(WRootWin *rootwin, const char *name, ExtlTab tab) if(style->font==NULL) de_load_font_for_style(style, CF_FALLBACK_FONT_NAME); + if(based_on!=NULL && + gr_stylespec_equals(&based_on->spec, &style->spec)){ + + /* The new style replaces based_on, so it may be dumped. */ + if(!based_on->is_fallback) + destyle_dump(based_on); + + if(based_on->usecount==1){ + uint nb=based_on->n_extra_cgrps; + uint ns=style->n_extra_cgrps; + /* Nothing else is using based_on: optimise and move + * extra colour groups here, so that based_on can be freed. + */ + + if(nb>0){ + DEColourGroup *cgs=ALLOC_N(DEColourGroup, nb+ns); + + if(cgs!=NULL){ + memcpy(cgs, based_on->extra_cgrps, sizeof(DEColourGroup)*nb); + memcpy(cgs+nb, style->extra_cgrps, sizeof(DEColourGroup)*ns); + + free(style->extra_cgrps); + style->extra_cgrps=cgs; + style->n_extra_cgrps=nb+ns; + + free(based_on->extra_cgrps); + based_on->extra_cgrps=NULL; + based_on->n_extra_cgrps=0; + + } + } + + /* style->extras_table should be none still */ + style->extras_table=based_on->extras_table; + based_on->extras_table=extl_table_none(); + + style->based_on=based_on->based_on; + based_on->based_on=NULL; + + destyle_unref(based_on); + } + + } + + filter_extras(&style->extras_table, tab); + + destyle_add(style); + return TRUE; } diff --git a/de/init.h b/de/init.h index c751bb0..5a51ee6 100644 --- a/de/init.h +++ b/de/init.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_DE_INIT_H @@ -20,9 +17,6 @@ extern void de_get_border_val(uint *val, ExtlTab tab, const char *what); extern void de_get_border_style(uint *ret, ExtlTab tab); extern void de_get_border(DEBorder *border, ExtlTab tab); -extern bool de_get_colour(WRootWin *rootwin, DEColour *ret, - ExtlTab tab, DEStyle *based_on, - const char *what, DEColour substitute); extern void de_get_colour_group(WRootWin *rootwin, DEColourGroup *cg, ExtlTab tab, DEStyle *based_on); extern void de_get_extra_cgrps(WRootWin *rootwin, DEStyle *style, diff --git a/de/private.h b/de/private.h index dde51c4..cb3700a 100644 --- a/de/private.h +++ b/de/private.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_DE_PRIVATE_H @@ -15,10 +12,4 @@ #define DE_SUB_IND " ->" #define DE_SUB_IND_LEN 3 -#define MATCHES(S, A) (gr_stylespec_score(&(S), A)>0) -#define MATCHES2(S, A1, A2) (gr_stylespec_score2(&(S), A1, A2)>0) - -#define ENSURE_INITSPEC(S, NM) \ - if((S).attrs==NULL) gr_stylespec_load(&(S), NM); - #endif /* ION_DE_PRIVATE_H */ diff --git a/de/style.c b/de/style.c index b449337..2e61bf2 100644 --- a/de/style.c +++ b/de/style.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -176,7 +173,7 @@ void destyle_deinit(DEStyle *style) if(style->extra_cgrps!=NULL) free(style->extra_cgrps); - extl_unref_table(style->data_table); + extl_unref_table(style->extras_table); XFreeGC(ioncore_g.dpy, style->normal_gc); @@ -195,7 +192,7 @@ void destyle_deinit(DEStyle *style) } -static void dump_style(DEStyle *style) +void destyle_dump(DEStyle *style) { /* Allow the style still be used but get if off the list. */ UNLINK_ITEM(styles, style, next, prev); @@ -241,7 +238,7 @@ bool destyle_init(DEStyle *style, WRootWin *rootwin, const char *name) style->n_extra_cgrps=0; style->extra_cgrps=NULL; - style->data_table=extl_table_none(); + style->extras_table=extl_table_none(); create_normal_gc(style, rootwin); @@ -251,7 +248,7 @@ bool destyle_init(DEStyle *style, WRootWin *rootwin, const char *name) } -static DEStyle *do_create_style(WRootWin *rootwin, const char *name) +DEStyle *de_create_style(WRootWin *rootwin, const char *name) { DEStyle *style=ALLOC(DEStyle); if(style!=NULL){ @@ -264,33 +261,12 @@ static DEStyle *do_create_style(WRootWin *rootwin, const char *name) } -DEStyle *de_create_style(WRootWin *rootwin, const char *name) +void destyle_add(DEStyle *style) { - DEStyle *oldstyle, *style; - uint score; - - style=do_create_style(rootwin, name); - - if(style==NULL) - return NULL; - - for(oldstyle=styles; oldstyle!=NULL; oldstyle=oldstyle->next){ - if(oldstyle->rootwin!=rootwin) - continue; - if(gr_stylespec_equals(&oldstyle->spec, &style->spec)) - break; - } - - if(oldstyle!=NULL && !oldstyle->is_fallback) - dump_style(oldstyle); - LINK_ITEM_FIRST(styles, style, next, prev); - - return style; } - /*EXTL_DOC * Clear all styles from drawing engine memory. */ @@ -301,7 +277,7 @@ void de_reset() for(style=styles; style!=NULL; style=next){ next=style->next; if(!style->is_fallback) - dump_style(style); + destyle_dump(style); } } @@ -315,7 +291,7 @@ void de_deinit_styles() warn(TR("Style is still in use [%d] but the module " "is being unloaded!"), style->usecount); } - dump_style(style); + destyle_dump(style); } } diff --git a/de/style.h b/de/style.h index 172b509..11fbc5e 100644 --- a/de/style.h +++ b/de/style.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_DE_STYLE_H @@ -73,7 +70,7 @@ DECLSTRUCT(DEStyle){ int textalign; uint spacing; - ExtlTab data_table; + ExtlTab extras_table; /* Only initialised if used as a DETabBrush */ bool tabbrush_data_ok; @@ -100,5 +97,8 @@ extern void de_deinit_styles(); extern DEStyle *de_get_style(WRootWin *rootwin, const GrStyleSpec *spec); +extern void destyle_add(DEStyle *style); +extern void destyle_dump(DEStyle *style); + #endif /* ION_DE_STYLE_H */ diff --git a/doc/ChangeLog b/doc/ChangeLog index 00fe495..c73b316 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,75 @@ +2007-05-06 14:40 UTC Tuomo Valkonen + tagged ion-doc-3rc-20070506 + +2007-05-06 14:25 UTC Tuomo Valkonen + * mod_mgmtmode removal + +2007-05-06 13:09 UTC Tuomo Valkonen + * Removed obsolete example + +2007-05-04 21:46 UTC Tuomo Valkonen + * Fixes and updates to binding docs + +2007-05-04 16:13 UTC Tuomo Valkonen + * Documen the submap leave/enter stuff + +2007-04-26 22:44 UTC Tuomo Valkonen + * Improved string marking + +2007-04-26 22:28 UTC Tuomo Valkonen + * Drawing stuff doc improvements + +2007-04-22 18:14 UTC Tuomo Valkonen + * Document is_dockapp + +2007-04-22 12:29 UTC Tuomo Valkonen + * Winprop doc. improvements/fixes + +2007-04-22 00:16 UTC Tuomo Valkonen + * Minor fixes and improvements + +2007-04-20 16:36 UTC Tuomo Valkonen + * Document is_transient + +2007-04-15 12:33 UTC Tuomo Valkonen + * Updates to implementation notes + +2007-04-08 12:38 UTC Tuomo Valkonen + * Removed quotation abuse + +2007-04-08 12:37 UTC Tuomo Valkonen + * Size policy documentation + +2007-04-08 11:53 UTC Tuomo Valkonen + * Quote changes + +2007-04-08 11:49 UTC Tuomo Valkonen + * Fixed typos etc. + +2007-04-08 11:34 UTC Tuomo Valkonen + * Intro improvements + +2007-04-06 11:27 UTC Tuomo Valkonen + * Systray stuff improvs + +2007-04-06 11:23 UTC Tuomo Valkonen + * Year changed.. + +2007-04-06 11:17 UTC Tuomo Valkonen + * Function reference building improvements + +2007-04-05 16:32 UTC Tuomo Valkonen + * Bah, stupid latex2html + +2007-04-05 16:27 UTC Tuomo Valkonen + * mod_statusbar documentation + +2007-04-05 15:21 UTC Tuomo Valkonen + * Oops, mod_statusbar.lua was missing from sources + +2007-03-20 11:27 UTC Tuomo Valkonen + * Fixes + 2007-03-18 20:09 UTC Tuomo Valkonen tagged ion-doc-3ds-20070318 diff --git a/doc/Makefile b/doc/Makefile index aa203d8..ca10058 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -15,9 +15,9 @@ L2H=latex2html -show_section_numbers -short_index -local_icons -noaddress \ DOCS=ionconf ionnotes -FNTEXES=ioncore-fns.tex mod_tiling-fns.tex \ - mod_query-fns.tex de-fns.tex mod_menu-fns.tex \ - mod_dock-fns.tex mod_sp-fns.tex mod_statusbar-fns.tex +FNTEXES=ioncore.exports mod_tiling.exports \ + mod_query.exports de.exports mod_menu.exports \ + mod_dock.exports mod_sp.exports mod_statusbar.exports # Generic rules ###################################### @@ -106,29 +106,13 @@ realclean: clean # Function reference rules ###################################### -ioncore-fns.tex: $(TOPDIR)/ioncore/*.c $(TOPDIR)/ioncore/*.lua - $(MKEXPORTS) -module ioncore -mkdoc -o $@ $+ +include $(TOPDIR)/libmainloop/rx.mk -mod_tiling-fns.tex: $(TOPDIR)/mod_tiling/*.c - $(MKEXPORTS) -module mod_tiling -mkdoc -o $@ $+ +$(TOPDIR)/%/exports.tex: + $(MAKE) -C $$(dirname $@) _exports_doc -mod_query-fns.tex: $(TOPDIR)/mod_query/*.c $(TOPDIR)/mod_query/mod_query.lua - $(MKEXPORTS) -module mod_query -mkdoc -o $@ $+ - -mod_menu-fns.tex: $(TOPDIR)/mod_menu/*.c $(TOPDIR)/mod_menu/mod_menu.lua - $(MKEXPORTS) -module mod_menu -mkdoc -o $@ $+ - -mod_dock-fns.tex: $(TOPDIR)/mod_dock/*.c - $(MKEXPORTS) -module mod_dock -mkdoc -o $@ $+ - -mod_sp-fns.tex: $(TOPDIR)/mod_sp/*.c - $(MKEXPORTS) -module mod_sp -mkdoc -o $@ $+ - -mod_statusbar-fns.tex: $(TOPDIR)/mod_statusbar/*.c - $(MKEXPORTS) -module mod_statusbar -mkdoc -o $@ $+ - -de-fns.tex: $(TOPDIR)/de/*.c - $(MKEXPORTS) -module de -mkdoc -o $@ $+ +%.exports: $(TOPDIR)/%/exports.tex + cp $< $@ # Function list ###################################### diff --git a/doc/conf-bindings.tex b/doc/conf-bindings.tex index 9afb2b8..efec6a4 100644 --- a/doc/conf-bindings.tex +++ b/doc/conf-bindings.tex @@ -8,7 +8,7 @@ This, however, does not have to be so as long as the module has been loaded prior to defining any module-specific bindings. Bindings are defined by calling the function -\fnrefx{ioncore}{defbindings} with the ''context'' of the +\fnrefx{ioncore}{defbindings} with the ``context'' of the bindings and the a table of new bindings to make. The context is simply string indicating one of the classes of regions (or modes such as \type{WMoveresMode}) introduced in section \ref{sec:objects}, and fully @@ -23,7 +23,7 @@ defbindings("WFrame", { \end{verbatim} There has been some confusion among users about the need to define the -''context'' for each binding, so let me try to explain this design +``context'' for each binding, so let me try to explain this design decision here. The thing is that if there was a just a simple 'bind this key to this action' method without knowledge of the context, some limitations would have to be made on the available actions and writing @@ -34,27 +34,27 @@ classes being based on \type{WMPlex}, and in the stock configuration the switch to $n$:th workspaces is bound to \key{Mod1+n} while the switch to $n$:th tab is bound to the sequence \key{Mod1+k n}. -Currently known ''contexts'' include: -\code{WScreen}, -\code{WMPlex}, -\code{WMPlex.toplevel}, -\code{WFrame}, -\code{WFrame.toplevel}, -\code{WFrame.floating}, -\code{WFrame.tiled}, -\code{WFrame.transient}, -\code{WMoveresMode}, -\code{WGroup}, -\code{WGroupCW}, -\code{WGroupWS}, -\code{WClientWin}, -\code{WTiling}, and -\code{WStatusBar}. +Currently known contexts include: +\codestr{WScreen}, +\codestr{WMPlex}, +\codestr{WMPlex.toplevel}, +\codestr{WFrame}, +\codestr{WFrame.toplevel}, +\codestr{WFrame.floating}, +\codestr{WFrame.tiled}, +\codestr{WFrame.transient}, +\codestr{WMoveresMode}, +\codestr{WGroup}, +\codestr{WGroupCW}, +\codestr{WGroupWS}, +\codestr{WClientWin}, +\codestr{WTiling}, and +\codestr{WStatusBar}. Most of these should be self-explanatory, corresponding to objects -of class with the same name. The ones with \code{.toplevel} suffix -refer to screens and ''toplevel'' frames, i.e. frames that are -not used for transient windows. Likewise \code{.transient} refers -to frames in transient mode, and \code{.tiled} and \code{.floating} +of class with the same name. The ones with \codestr{.toplevel} suffix +refer to screens and ``toplevel'' frames, i.e. frames that are +not used for transient windows. Likewise \codestr{.transient} refers +to frames in transient mode, and \codestr{.tiled} and \codestr{.floating} to frames in, respectively, tiled and floating modes. @@ -75,9 +75,9 @@ gets to handle the action. \subsection{Binding handlers and special variables} Unlike in Ion2, in Ion3 binding handlers are not normally passed as -''anonymous functions'', although this is still possible. The preferred -method now is to pass the code of the handler as a string. Two special -variables are available in this code. These are +``anonymous functions'', although this is still possible. The preferred +method now is to pass the code of the handler as a string. Two following +special variables are available in this code. \begin{tabularx}{\linewidth}{lX} \tabhead{Variable & Description} @@ -93,11 +93,12 @@ variables are available in this code. These are the binding. \\ \code{_chld} & Object corresponding to the currently active child window of the - object referred to by \code{_}. + object referred to by \code{_}. This should seldom be needed. \end{tabularx} -For example, supposing '\code{_}' is a \type{WFrame}, the following -handler should move the active window to the right, if possible: +For example, supposing \code{_} (underscore) is a \type{WFrame}, the +following handler should move the active window to the right, if +possible: \begin{verbatim} "_:inc_index(_sub)" @@ -106,14 +107,14 @@ handler should move the active window to the right, if possible: \subsection{Guards} To suppress error messages, each binding handler may also be accompanied -by a ''guard'' expression that blocks the handler from being called when +by a ``guard'' expression that blocks the handler from being called when the guard condition is not met. Currently the following guard expressions are supported (for both \code{_sub} and \code{_chld}): \begin{tabularx}{\linewidth}{lX} \tabhead{Guard & Description} - \code{"_sub:non-nil"} & The \code{_sub} parameter must be set. \\ - \code{"_sub:SomeClass"} & The \code{_sub} parameter must be member + \codestr{\_sub:non-nil} & The \code{_sub} parameter must be set. \\ + \codestr{\_sub:SomeClass} & The \code{_sub} parameter must be member of class \type{SomeClass}. \\ \end{tabularx} @@ -127,27 +128,33 @@ functions. Key presses: \begin{itemize} - \item \fnref{kpress}\code{(keyspec, handler [, guard])}, - \item \fnref{kpress_wait}\code{(keyspec, handler [, guard])} and - \item \fnref{submap}\code{(keyspec, \{ ... more key bindings ... \})}. + \item \fnrefx{ioncore}{kpress}, and + \fnrefx{ioncore}{kpress_wait}\code{(keyspec, handler [, guard])}. + \item \fnrefx{ioncore}{submap}\code{(keyspec, \{ ... more key bindings ... \})}. + \item \fnrefx{ioncore}{submap_enter}, and + \fnrefx{ioncore}{submap_wait}\code{(handler [, guard])}. \end{itemize} Mouse actions: \begin{itemize} - \item \fnref{mclick}\code{(buttonspec, handler [, guard])}, - \item \fnref{mdblclick}\code{(buttonspec, handler [, guard])}, - \item \fnref{mpress}\code{(buttonspec, handler [, guard])} and - \item \fnref{mdrag}\code{(buttonspec, handler [, guard])}. + \item \fnrefx{ioncore}{mclick}, + \fnrefx{ioncore}{mdblclick}, + \fnrefx{ioncore}{mpress}, and + \fnrefx{ioncore}{mdrag}\code{(buttonspec, handler [, guard])}. \end{itemize} The actions that most of these functions correspond to should be clear -and as explained in the reference, \fnref{kpress_wait} is simply -\fnref{kpress} with a flag set instructing Ioncore wait for all -modifiers to be released before processing any further actions. +and as explained in the reference, \fnrefx{ioncore}{kpress_wait} is simply +\fnrefx{ioncore}{kpress} with a flag set instructing Ioncore wait for +all modifiers to be released before processing any further actions. This is to stop one from accidentally calling e.g. -\fnref{WRegion.rqclose} multiple times in a row. The \fnref{submap} -function is used to define submaps or ''prefix maps''. The second -argument to this function is table listing the key press actions -(\fnref{kpress}) in the submap +\fnref{WRegion.rqclose} multiple times in a row. The +\fnrefx{ioncore}{submap} function is used to define submaps or +``prefix maps''. The second argument to this function is table listing +the key press actions (\fnrefx{ioncore}{kpress}) in the submap. +The \fnrefx{ioncore}{submap_enter} handler is called when the submap +is entered, in which this handler is defined. Likewise, the +\fnrefx{ioncore}{submap_wait} handler is called when all modifiers +have been released while waiting for further key presses in the submap. The parameters \var{keyspec} and \var{buttonspec} are explained below in detail. The parameter \var{handler} is the handler for the binding, @@ -195,10 +202,10 @@ Most of the key names are quite intuitive while some are not. For example, the \key{Enter} key on the main part of the keyboard has the less common name \key{Return} while the one the numpad is called \key{KP\_Enter}. -The \var{keyspec} string may optionally have multiple ''modifier'' names +The \var{keyspec} string may optionally have multiple ``modifier'' names followed by a plus sign (\code{+}) as a prefix. X defines the following modifiers: -\begin{quotation} + \key{Shift}, \key{Control}, \key{Mod1} to \key{Mod5}, \key{AnyModifier} and \key{Lock}. \index{Shift@\key{Shift}} @@ -206,14 +213,13 @@ modifiers: \index{ModN@\key{ModN}} \index{AnyModifier@\key{AnyModifier}} \index{Lock@\key{Lock}} -\end{quotation} X allows binding all of these modifiers to almost any key and while this list of modifiers does not explicitly list keys such as \key{Alt}\index{Alt@\key{Alt}} that are common on modern keyboards, such keys are bound to one of the \key{ModN}. On systems running XFree86 \key{Alt} is usually \key{Mod1}. On Suns \key{Mod1} is the diamond key -and \key{Alt} something else. One of the ''flying window'' keys on so +and \key{Alt} something else. One of the ``flying window'' keys on so called Windows-keyboards is probably mapped to \key{Mod3} if you have such a key. Use the program \file{xmodmap}\index{xmodmap@\file{xmodmap}} to find out what exactly is bound where. @@ -241,8 +247,8 @@ and one of the button names \key{Button1} to specification may end with an optional area name following an @-sign. Only frames currently support areas, and the supported values in this case are -\code{"border"}, \code{"tab"}, \code{"empty_tab"}, \code{"client"} and -\code{nil} (for the whole frame). +\codestr{border}, \codestr{tab}, \codestr{empty\_tab}, \codestr{client} +and \code{nil} (for the whole frame). For example, the following code binds dragging a tab with the first button pressed to initiate tab drag\&drop handling: @@ -258,7 +264,7 @@ defbindings("WFrame", { The default binding configuration contains references to the variables \code{META} and \code{ALTMETA} instead of directly using the default -values of \code{"Mod1+"} and \code{""} (nothing). As explained in +values of \codestr{Mod1+} and \codestr{} (nothing). As explained in section \ref{sec:walkthrough}, the definitions of these variables appear in \file{cfg\_ion.lua}. This way you can easily change the the modifiers used by all bindings in the default configuration without diff --git a/doc/conf-menus.tex b/doc/conf-menus.tex index f47a5a8..531f63a 100644 --- a/doc/conf-menus.tex +++ b/doc/conf-menus.tex @@ -44,26 +44,26 @@ just like the menus defined as above. \begin{tabularx}{\linewidth}{lX} \tabhead{Menu name & Description} - \code{windowlist} & + \codestr{windowlist} & List of all client windows. Activating an entry jumps to that window. \\ - \code{workspacelist} & + \codestr{workspacelist} & List of all workspaces. Activating an entry jumps to that workspaces. \\ - \code{focuslist} & + \codestr{focuslist} & List of client windows with recent activity in them, followed by previously focused client windows. \\ - \code{focuslist_} & + \codestr{focuslist\_} & List of previously focused client windows. \\ - \code{stylemenu} & + \codestr{stylemenu} & List of available \file{look\_*.lua} style files. Activating an entry loads that style and ask to save the selection. \\ - \code{ctxmenu} & + \codestr{ctxmenu} & Context menu for given object. \\ \end{tabularx} \subsection{Defining context menus} -The ''ctxmenu'' is a special menu that is assembled from a defined context +The ``ctxmenu'' is a special menu that is assembled from a defined context menu for the object for which the menu was opened for, but also includes the context menus for the manager objects as submenus. @@ -81,9 +81,9 @@ defctxmenu("WFrame", { }) \end{verbatim} -Some of the same ''modes'' as were available for some bindings -may also be used: \code{WFrame.tiled}, \code{WFrame.floating}, -and \code{WFrame.transient}. +Some of the same ``modes'' as were available for some bindings +may also be used: \codestr{WFrame.tiled}, \codestr{WFrame.floating}, +and \codestr{WFrame.transient}. \subsection{Displaying menus} @@ -105,10 +105,7 @@ handlers (and elsewhere): \fnref{mod_menu.grabmenu} & A special version of \fnref{mod_menu.menu} that grabs the keyboard and is scrolled with a given key until all modifiers have been released, - after which the selected entry is activated. This function is meant to - be used for implementing, for example, Win***s-style \key{Alt-Tab} - handling.\footnote{See the \file{wcirculate.lua} script in the Ion - scripts repository \url{http://iki.fi/tuomov/repos/ion-scripts-3/}.} \\ + after which the selected entry is activated. \\ \end{tabularx} The \fnrefx{mod_menu}{grabmenu} function takes the extra key parameter, but diff --git a/doc/conf-statusbar.tex b/doc/conf-statusbar.tex new file mode 100644 index 0000000..2475552 --- /dev/null +++ b/doc/conf-statusbar.tex @@ -0,0 +1,124 @@ +\section{The statusbar} +\label{sec:statusbar} + +The \file{mod\_statusbar} module provides a statusbar that adapts to +layouts of tilings, using only the minimal space needed. Ion only +supports one adaptive ``status display'' object per screen, so this +statusbar is mutually exclusive with the embedded mode of \file{mod\_dock} +docks. + +The statusbar is configured in \file{cfg\_statusbar.lua}. Typically, +the configuration consists of two steps: creating a statusbar with +\fnref{mod\_statusbar.create}, and then launching the separate +\command{ion-statusd} status daemon process with +\fnref{mod_statusbar.launch_statusd}. This latter phase is done +automatically, if it was not done by the configuration file, but +the configuration file may pass extra parameters to \command{ion-statusd} +monitors. (See Section \ref{sec:statusd} for more information on +writing \command{ion-statusd} monitors.) + +A typical \file{cfg\_statusbar.lua} configuration might look as follows: + + +\begin{verbatim} +-- Create a statusbar +mod_statusbar.create{ + screen = 0, -- First screen, + pos = 'bl', -- bottom left corner + systray = true, -- Swallow systray windows + + -- The template + template = "[ %date || load:% %>load || mail:% %>mail_new/%>mail_total ]" + .. " %filler%systray", +} + +-- Launch ion-statusd. +mod_statusbar.launch_statusd{ + -- Date meter + date={ + -- ISO-8601 date format with additional abbreviated day name + date_format='%a %Y-%m-%d %H:%M', + }, +} +\end{verbatim} + + +\subsection{The template} + +The template specifies what is shown on the statusbar; for information +on the other options to \fnref{mod_statusbar.create}, see the reference. +Strings of the form \codestr{\%spec} tokens specially interpreter by +the statusbar; the rest appears verbatim. The \code{spec} typically +consists of the name of the value/meter to display (beginning with a latin +alphabet), but may be preceded by an alignment specifier and a number +specifying the minimum width. The alignment specifiers are: \codestr{>} +for right, \codestr{<} for left, and \codestr{|} for centring. Additionally, +space following \codestr{\%} (that is, the string \codestr{\% }), adds +``stretchable space'' at that point. The special string \codestr{\%filler} +may be used to flush the rest of the template to the right end of +the statusbar. + +The stretchable space works as follows: \file{mod\_statusbar} remembers +the widest string (in terms of graphical presentation) that it has +seen for each meter, unless the width has been otherwise constrained. +If there is stretchable space in the template, it tries to make the +meter always take this much space, by stretching any space found in +the direction indicated by the alignment specifier: the opposite +direction for left or right alignment, and both for centring. + +\subsection{The systray} + +The special \codestr{\%systray} and \codestr{\%systray\_*} +(\codestr{*} varying) monitors indicate where to place system tray +windows. There may be multiple of these. KDE-protocol system tray +icons are placed in \codestr{\%systray} automatically, unless disabled +with the \var{systray} option. Otherwise the \var{statusbar} winprop may +be used to place any window in any particular \codestr{\%systray\_*}. + +\subsection{Monitors} + +The part before the first +underscore of each monitor name, describes the script/plugin/module +that provides the meter, and any configuration should be passed +in the a corresponding sub-table \fnref{mod_statusbar.launch_statusd}. +Ion comes with date, load and mail (for plain old mbox) +\command{ion-statusd} monitor scripts. More may be obtained from +the scripts repository \cite{scripts}. These included scripts +provide the following monitors and their options + +\subsubsection{Date} + +Options: \var{date_format}: The date format in as seen above, +in the usual \code{strftime} format. \code{formats}: table of +formats for additional date monitors, the key being the name +of the monitor (without the \codestr{date\_} prefix). + +Monitors: \codestr{date} and other user-specified ones with the +\codestr{date\_} prefix. + + +\subsubsection{Load} + +Options: \var{update_interval}: Update interval in milliseconds +(default 10s). \var{important_threshold}: Threshold above which +the load is marked as important (default 1.5), so that the +drawing engine may be suitably hinted. \var{critical_threshold}: +Threshold above which the load is marked as critical (default 4.0). + + +Monitors: \codestr{load} (for all three values), +\codestr{load\_1min}, \codestr{load\_5min} and \codestr{load\_15min}. + + +\subsubsection{Mail} + +Options: \var{update_interval}: Update interval in milliseconds +(default 1min). \var{mbox}: mbox-format mailbox location +(default \verb!$MAIL!). +\var{files}: list of additional mailboxes, the key giving the +name of the monitor. + +Monitors: \codestr{mail\_new}, \codestr{mail\_unread}, +\codestr{mail\_total}, and corresponding +\codestr{mail\_*\_new}, \codestr{mail\_*\_unread}, and \codestr{mail\_*\_total} +for the additional mailboxes (\codestr{*} varying). diff --git a/doc/conf-winprops.tex b/doc/conf-winprops.tex index e564b47..e5e0133 100644 --- a/doc/conf-winprops.tex +++ b/doc/conf-winprops.tex @@ -1,7 +1,7 @@ \section{Winprops} \label{sec:winprops} -The so-called ''winprops''\index{Winprops} can be used to change how +The so-called ``winprops''\index{Winprops} can be used to change how specific windows are handled and to set up some kludges to deal with badly behaving applications. They are defined by calling the function \code{defwinprop} with a table containing the properties to set and the @@ -94,9 +94,9 @@ usual method of identifying windows, and how to obtain this information. \begin{winprop}{statusbar}{string} \index{statusbar@\var{statusbar}} Put the window in the statusbar, in the named tray component, - (The default tray component is called simply \code{"systray"}, + (The default tray component is called simply \codestr{systray}, and others you give names to in your custom template, always - prefixed by \code{"systray_"}. + prefixed by \codestr{systray\_}. \end{winprop} @@ -116,10 +116,10 @@ usual method of identifying windows, and how to obtain this information. \begin{winprop}{transient_mode}{string} \index{transient-mode@\var{transient_mode}} - \code{"normal"}: No change in behaviour. \code{"current"}: + \codestr{normal}: No change in behaviour. \codestr{current}: The window should be thought of as a transient for the current active client window (if any) even if it is not marked as a - transient by the application. \code{"off"}: The window should + transient by the application. \codestr{off}: The window should be handled as a normal window even if it is marked as a transient by the application. \end{winprop} @@ -159,15 +159,22 @@ only for floating windows. \subsection{Classes, roles and instances} \label{sec:classesrolesinstances} -The identification information in the winprop specification is usually the +The identification information supported are \var{class}\index{class@\var{class}!winprop}, \var{role}\index{role@\var{role}!winprop}, -\var{instance}\index{instance@\var{instance}!winprop} and -\var{name} -of the window. The \var{name} field is a Lua-style regular expression -matched against the window's title and the rest are strings that must -exactly match the corresponding window information. It is not necessary -to specify all of these fields. +\var{instance}\index{instance@\var{instance}!winprop}, +\var{name}\index{name@\var{name}!winprop}, +\var{is_transient}\index{is-transient@\var{is_transient}!winprop}, and +\var{is_dockapp}\index{is-dockapp@\var{is_dockapp}!winprop}. +It is not necessary to specify all of these fields. +The first three are strings, and must exactly match the +corresponding information obtained from the window's properties. +The \var{name} field is a Lua-style regular expression matched against +the window's title. The \var{is_transient} field is a boolean that can +be used to include or exclude transients only, while the \var{is_dockapp} +field is set by Ion for the dock windows of Window Maker dockapp protocol +dockapps. Usually this is the only information available for these +\emph{icon} windows. Ion looks for a matching winprop in the order listed by the following table. An 'E' indicates that the field must be set in the winprop @@ -179,7 +186,7 @@ fields) is tried. \begin{center} \begin{tabular}{llll} - \tabhead{\var{class} & \var{role} & \var{instance} & \var{name}} + \tabhead{\var{class} & \var{role} & \var{instance} & other} E & E & E & E \\ E & E & E & * \\ E & E & * & E \\ @@ -191,8 +198,10 @@ fields) is tried. \end{tabular} \end{center} -If there are multiple winprops with other identification information -the same but different \var{name}, the longest match is chosen. +If there are multiple matching winprops with the same +\var{class}, \var{role} and \var{instance}, but other information +different, the most recently defined one is used. + \subsection{Finding window identification} @@ -209,10 +218,10 @@ windows have this property -- use the command \command{xprop WM_ROLE}. This method, however, will not work on transients. \index{transient} -So-called ''transient windows'' are usually short-lived dialogs (although +So-called ``transient windows'' are usually short-lived dialogs (although some programs abuse this property) that have a parent window that they are -''transient for''. On tiled workspaces Ion displays these windows -simulatenously with the parent window at the bottom of the same frame. +``transient for''. On tiled workspaces Ion displays these windows +simultaneously with the parent window at the bottom of the same frame. Unfortunately \command{xprop} is stupid and can't cope with this situation, returning the parent window's properties when the transient is clicked on. For this reason you'll have to do a little extra work to get the properties @@ -221,9 +230,13 @@ fix this, but nothing seems to be happening with respect to including it in XFree86.} Finally, it should be mentioned that too many authors these days -''forget'' to set this vital identification to anything meaningful: -everything except name is the same for all of the programs's -windows, for example. +``forget'' to set this vital identification to anything meaningful: +everything except name is the same for all of the program's +windows, for example. Some other programs only set this information +after the window has been mapped, i.e. the window manager has been +told to start managing it, which is obviously too late. +Gtk applications in particular are often guilty on both counts. + \subsection{Some common examples} @@ -239,28 +252,6 @@ defwinprop{ } \end{verbatim} -\subsubsection{Fixing a Mozilla Firebird transient} - -Mozilla Firebird (0.7) incorrectly does not set the \code{WM_TRANSIENT_FOR} -property for the dialog that is used to ask the action to take for a file. -It, however, sets the the property point to the main window for the save -dialog. This can be annoying and confusing, as the first dialog is not -closed before the second is displayed. - -We'd like the first dialog to be transient to the main window. The closest -we can get to that is to consider it transient to the current window (if -there's one). Unfortunately Firebird does not set any meaningful classes, -instances or roles for the windows, so we'll have to rely on an ugly title -match. - -\begin{verbatim} -defwinprop{ - class = "MozillaFirebird-bin", - name = "Opening .*", - transient_mode = "current", -} -\end{verbatim} - \subsubsection{Forcing newly created windows in named frames} The following winprop should place xterm started with command-line parameter @@ -275,7 +266,7 @@ defwinprop{ \end{verbatim} For this example to work, we have to somehow create a frame named -\code{sysmonframe}. One way to do this is to make the following +\codestr{sysmonframe}. One way to do this is to make the following call in the \key{Mod1+F3} Lua code query: \begin{verbatim} @@ -285,5 +276,5 @@ mod_query.query_renameframe(_) Recall that \code{_} points to the multiplexer (frame or screen) in which the query was opened. Running this code should open a new query prefilled with the current name of the frame. In our example we would change the -name to \code{sysmonframe}, but we could just as well have used the +name to \codestr{sysmonframe}, but we could just as well have used the default name formed from the frame's class name and an instance number. diff --git a/doc/conf.tex b/doc/conf.tex index eb0f565..ed19b51 100644 --- a/doc/conf.tex +++ b/doc/conf.tex @@ -15,8 +15,8 @@ configuration file \file{ion.lua} is provided in section \ref{sec:walkthrough}. How keys and mouse action are bound to functions is described in detail in \ref{sec:bindings} and in section \ref{sec:winprops} winprops are -explained. For a reference on exported functions, see section -\ref{sec:exports}. +explained. Finally, the statusbar is explained in \ref{sec:statusbar}. +For a reference on exported functions, see section \ref{sec:exports}. \section{The configuration files} \label{sec:conffiles} @@ -44,7 +44,7 @@ file in \file{\~{}/.ion3/} and modify this file. When searching for a file, if no extension or path component is given, compiled \file{.lc} files are attempted before \file{.lua} files. -All the configuration files are named \file{cfg\_*.lua} with the ''\file{*}'' +All the configuration files are named \file{cfg\_*.lua} with the ``\file{*}'' part varying. The configuration file for each module \file{mod\_modname} is \file{cfg\_modname.lua}, with \file{modname} varying by the module in question. The following table summarises these and other configuration @@ -91,19 +91,21 @@ file. Some basic 'feel' settings are usually configured there and the necessary modules and other configuration files configuring some more specific aspects of Ion are loaded there. In this section we take a walk through the stock \file{cfg\_ion.lua}. -Notice that most of the settings are commented-out (\code{--} is a +Notice that most of the settings are commented-out (\verb!--! is a line comment in Lua) in the actual file, as they're the defaults nevertheless. -The first thing one in the file is to set +The first thing done in the file, is to set \begin{verbatim} META="Mod1+" ALTMETA="" \end{verbatim} These settings cause most of Ion's key bindings to use \key{Mod1} as the -modifier key. If \code{ALTMETA} is set, it is used as modifier for the keys -that don't normally use a modifier. for details on modifiers and key -binding setup in general see section \ref{sec:bindings}. +modifier key. If \code{ALTMETA} is set, it is used as modifier for the +keys that don't normally use a modifier. Note that these two are Lua +variables used in the configuration files only, and not Ion settings. +For details on modifiers and key binding setup in general, see section +\ref{sec:bindings}. Next we do some basic feel configuration: @@ -134,7 +136,7 @@ There are some other options as well; see the documentation for \fnref{ioncore.set} for details. As a next step, in the actual \file{cfg\_ion.lua} file, we load -\file{cfg\_defaults.lua}. However, it is merely a conveniency file for +\file{cfg\_defaults.lua}. However, it is merely a convenience file for doing exactly what we will going through below, and what is commented out in the actual file. If you do not want to load what \file{cfg\_defaults.lua} loads, just comment out the corresponding @@ -150,8 +152,8 @@ dopath("cfg_layouts") Most bindings and menus are defined in \file{cfg\_ioncore.lua}. Details on making such definitions follow in sections \ref{sec:bindings} and \ref{sec:menus}, respectively. -some kludges or ''winprops'' to make some applications behave better -under Ion are colledted in \file{cfg\_kludges.lua}; see section +some kludges or ``winprops'' to make some applications behave better +under Ion are collected in \file{cfg\_kludges.lua}; see section \ref{sec:winprops} for details. In addition to these, this file lists quite a few statements of the form \begin{verbatim} @@ -184,3 +186,7 @@ dopath("mod_sp") \input{conf-menus.tex} \input{conf-winprops.tex} + +\input{conf-statusbar.tex} + + diff --git a/doc/confintro.tex b/doc/confintro.tex index 9331614..a04af82 100644 --- a/doc/confintro.tex +++ b/doc/confintro.tex @@ -1,52 +1,50 @@ \chapter{Introduction} -This document is an ''advanced user'' manual for Ion, the X11 window manager, -and version 3 specifically. It is an attempt attempt at documenting what is -in Ion's configuration files, how to configure Ion by simple modifications +This document is an ``advanced user'' manual for the X11 window manager +Ion, version 3. It is an attempt at documenting things that go into Ion's +configuration files, how to configure Ion by simple modifications to these files and how to write more complex extensions in Lua, the lightweight configuration and scripting language used by Ion. -Readers unfamiliar with Lua is advised to first glance at the Lua manual at +Readers unfamiliar with Lua might first want to first glance at some +Lua documentation at -\centerurl{http://www.lua.org/docs.html} +\begin{center} + \url{http://www.lua.org/docs.html}, or \\ + \url{http://lua-users.org/wiki/LuaTutorial}, +\end{center} -and perhaps some tutorial pages at the lua-users wiki: - -\centerurl{http://lua-users.org/wiki/LuaTutorial} +although this should not be strictly necessary for basic modifications +of configuration files for anyone with at least some familiarity with +programming languages. Back in this document, first in chapter \ref{chap:prelim} some key -concepts and relations are explained. These include the module system -and Ion's object and class hierarchies. While it might not at first -occur that knowing such things would be necessary to \emph{configure} -a program, this material is essential because of the object-oriented -nature of most of Ion's scripting interface. - -The new user, fed up with the default key bindings and eager to just -quickly configure Ion to his liking may question the reasons for -exposing the ''heavy'' internal OO structure in the scripting and -configuration interface. I'm not the one to blame him for that. -Sure it would be faster to configure Ion to everyone's liking -if a simpler binding configuration interface was provided. Such an -interface would, however, also be far more limited and make writing -extensions more complicated and the advantages from using a real -scripting language would be partly lost. One more advantage from -a rich scripting and configuration interface is that it allows -implementing scripts to read alternate configuration file formats, -ones that could be, for example, modified by external configuration tools. - -In chapter \ref{chap:config} the very basic Ion configuration know-how -is provided. All the different configuration files and their locations -are explained and instructions are given to allow the reader to -configure bindings and so-called ''winprops''. Chapter \ref{chap:gr} -explains the notion of drawing engines and graphical styles and how to -write new looks for Ion and more advanced aspects of Ion's scripting -interface are documented in chapter \ref{chap:tricks} (a work in -progress). - +concepts and relations are explained. These include the module system, +and Ion's object (or ``region'') and class hierarchies. While it may +not be necessary to study the latter for basic copy-paste modifications +of configuration files -- for that you should not really need this +manual either -- it is, however, essential to for more extensive +customisation, due to the semi-object-oriented nature of most of +Ion's scripting interface. Knowing the different object types also +helps dealing with the different binding ``contexts'' (see +Section \ref{sec:bindings}) that to some extent mirror these classes. + +The new user, fed up with the default key bindings and eager to +just quickly configure Ion to his liking, may therefore just want +to skip to Chapter \ref{chap:config}, and attempt to work from therefore. +That chapter provides the very basic Ion configuration know-how +is provided: all the different configuration files and their locations +are explained, instructions are given to allow the reader to +configure bindings and so-called ``winprops'', and the statusbar +templates are also explained. + +Next, Chapter \ref{chap:gr} explains the notion of drawing engines +and graphical styles and how to write new looks for Ion. More advanced +aspects of Ion's scripting interface are documented in Chapter +\ref{chap:tricks}. Finally, most of the functions provided by Ion's scripting interface -are listed and documented in the Function reference in chapter -\ref{sec:exports}. At the end of the document is an alphabetical -listing of all these functions. - +are listed and documented in the Function reference in Chapter +\ref{sec:exports}. At the end of the document an alphabetical +listing of all these functions may be found. diff --git a/doc/cstyle.tex b/doc/cstyle.tex index 328a7c3..e7f5917 100644 --- a/doc/cstyle.tex +++ b/doc/cstyle.tex @@ -1,6 +1,6 @@ \section{C coding style} -If you want to submit patches to Ion, you MUST follow my coding +If you want to submit patches to Ion, you \textbf{must} follow my coding style, even if you think it is the root of all evil. We don't want the code to be an incomprehensible mess of styles and I have better things to do than fix other people's style to match mine. The style @@ -10,7 +10,7 @@ things to take note of. \subsection{Whitespace} \begin{itemize} - \item Indentations of 4 with \emph{tab size=4}. + \item Indentations of 4 with spaces. \item No extra spaces between operators, delimiters etc. except \begin{itemize} diff --git a/doc/de.tex b/doc/de.tex index 4697dc6..93402a7 100644 --- a/doc/de.tex +++ b/doc/de.tex @@ -5,7 +5,9 @@ This chapter first gives in section \ref{sec:engines} a general outline of how drawing engines are used, of style specifications and then in section \ref{sec:defaultde} describes how to specify styles -for the default drawing engine. +for the default drawing engine. Some additional settings and +user attributes are explained in Sections \ref{sec:grmisc}. + \section{Drawing engines, style specifications and sub-styles} \label{sec:engines} @@ -13,7 +15,7 @@ for the default drawing engine. Ion's drawing routines are abstracted into so-called drawing engine modules that can, again depending on the system, be dynamically -loaded as needed. The drawing engine modules provide ''brushes'' +loaded as needed. The drawing engine modules provide ``brushes'' that objects can use to draw some high-level primitives such as borders and text boxes (in addition to simple text and rectangle drawing) on their windows and configure e.g. the shape and @@ -28,16 +30,16 @@ are strings of the form element1-element2-...-elementn \end{verbatim} -An example of such a style specification is \code{tab-frame}; +An example of such a style specification is \codestr{tab-frame}; see the table in subsection \ref{sec:styles} for more styles. When an object asks for a brush of certain style, the selected drawing engine will attempt to find the closest match to this specification. The styles/brushes defined by the drawing engines -may have asterisks (\verb!*!) as some of the elements indicating +may have asterisks (\codestr{*}) as some of the elements indicating a match to anything. Exact matches are preferred to asterisk matches and longer matches to shorter. For example, let a brush -for style \code{foo-bar-baz} be queried, then the following +for style \codestr{foo-bar-baz} be queried, then the following brushes are in order of preference: \begin{verbatim} @@ -70,19 +72,19 @@ tag and drag states.) \begin{tabularx}{\linewidth}{lX} \tabhead{Style name & Description} -\code{frame} & Style for frames. - Substyle attributes: \code{active}/\code{inactive} +\codestr{frame} & Style for frames. + Substyle attributes: \codestr{active}/\codestr{inactive} (mutually exclusive) and - \code{quasiactive}\nobreak/\code{not_quasiactive}. + \codestr{quasiactive}/\codestr{not\_quasiactive}. A frame is ``quasiactive'' when an active region - has a backlink to it, such as a detached window. \\ -\code{frame-tiled} & A more specific style for tiled frames. - Substyle attributes as for \code{frame}. \\ -\code{frame-tiled-alt} & An alternative style for tiled frames. + has a back-link to it, such as a detached window. \\ +\codestr{frame-tiled} & A more specific style for tiled frames. + Substyle attributes as for \codestr{frame}. \\ +\codestr{frame-tiled-alt} & An alternative style for tiled frames. Often used to disable the tab-bar. \\ -\code{frame-floating} & A more specific style for floating +\codestr{frame-floating} & A more specific style for floating frames. \\ -\code{frame-transient} & A more specific style for frames +\codestr{frame-transient} & A more specific style for frames containing transient windows. \\ \end{tabularx} @@ -90,25 +92,25 @@ tag and drag states.) \begin{tabularx}{\linewidth}{lX} \tabhead{Style name & Description} -\code{tab} & Style for frames' tabs and menu entries. +\codestr{tab} & Style for frames' tabs and menu entries. Substyle attributes: - \code{active}\nobreak/\code{inactive} and - \code{selected}\nobreak/\code{unselected} \\ -\code{tab-frame} & A more specific style for frames' tabs. + \codestr{active}/\codestr{inactive} and + \codestr{selected}/\codestr{unselected} \\ +\codestr{tab-frame} & A more specific style for frames' tabs. Additional substyle attributes include: - \code{tagged}\nobreak/\code{not_tagged}, - \code{dragged}\nobreak/\code{not_dragged}, - \code{activity}\nobreak/\code{no_activity} and - \code{quasiactive}\nobreak/\code{not_quasiactive}. \\ -\code{tab-frame-tiled}, & \\ -\code{tab-frame-tiled-alt}, & \\ -\code{tab-frame-floating}, & \\ -\code{tab-frame-transient} & More specific styles for frames in the + \codestr{tagged}/\codestr{not\_tagged}, + \codestr{dragged}/\codestr{not\_dragged}, + \codestr{activity}/\codestr{no\_activity}, + \codestr{quasiactive}/\codestr{not\_quasiactive}. \\ +\codestr{tab-frame-tiled}, & \\ +\codestr{tab-frame-tiled-alt}, & \\ +\codestr{tab-frame-floating}, & \\ +\codestr{tab-frame-transient} & More specific styles for frames in the different modes. \\ -\code{tab-menuentry} & A more specific style for entries in \type{WMenu}s. - Additional substyle attributes include \code{submenu} and - occasionally also \code{activity} is used.\\ -\code{tab-menuentry-bigmenu} & +\codestr{tab-menuentry} & A more specific style for entries in \type{WMenu}s. + Additional substyle attributes include \codestr{submenu} and + occasionally also \codestr{activity} is used.\\ +\codestr{tab-menuentry-bigmenu} & An alternate style for entries in \type{WMenu}s. \\ \end{tabularx} @@ -116,16 +118,21 @@ tag and drag states.) \begin{tabularx}{\linewidth}{lX} \tabhead{Style name & Description} -\code{input} & A style for \type{WInput}s. \\ -\code{input-edln} & A more specific style for \type{WEdln}s. - Substyle attributes: \code{selection} for selected text and - \code{cursor} for the cursor indicating current editing point. \\ -\code{input-message} & A more specific style for \type{WMessage}s. \\ -\code{input-menu} & A more specific style for \type{WMenu}s. \\ -\code{input-menu-bigmenu} & An alternate style for \type{WMenu}s. \\ -\code{moveres_display} & The box displaying position/size when +\codestr{input} & A style for \type{WInput}s. \\ +\codestr{input-edln} & A more specific style for \type{WEdln}s. + Substyle attributes: \codestr{selection} for selected text and + \codestr{cursor} for the cursor indicating current editing point. \\ +\codestr{input-message} & A more specific style for \type{WMessage}s. \\ +\codestr{input-menu} & A more specific style for \type{WMenu}s. \\ +\codestr{input-menu-bigmenu} & An alternate style for \type{WMenu}s. \\ +\codestr{moveres\_display} & The box displaying position/size when moving or resizing frames. \\ -\code{dock} & The dock. \\ +\codestr{stdisp} & Any status display. \\ +\codestr{stdisp-dock} & The dock. \\ +\codestr{stdisp-statusbar} & The statusbar. Substyles include: + the name of any monitor/meter (such as \codestr{date}), and + the supplied hint. Typical hints are: \codestr{normal}, + \codestr{important}, and \codestr{critical}. \\ \end{tabularx} @@ -153,13 +160,13 @@ end The \fnref{gr.select_engine} function sees if the engine given as argument is registered (the default drawing engine is -simply called ''de''). If the engine could not be found, it +simply called ``de''). If the engine could not be found, it tries to load a module of the same name. If the engine still -is not registered, \fnref{gr.select_engine} returns \code{false} +is not registered, \fnref{gr.select_engine} returns \codestr{false} and in this case we also exit the style setup script. If the engine was found, \fnref{gr.select_engine} sees that further requests for brushes are forwarded to that engine -and returns \code{true}. +and returns \codestr{true}. Before defining new styles it may be a good idea to clear old styles from memory so if the old configuration defines more @@ -230,16 +237,16 @@ in \file{/usr/X11R6/lib/X11/rgb.txt} (exact path varying). \begin{tabularx}{\linewidth}{lX} \tabhead{Field & Description} \var{highlight_colour} & - Colour for the ''highlight'' part of a border. \\ + Colour for the ``highlight'' part of a border. \\ \var{shadow_colour} & - Colour for the ''highlight'' part of a border. \\ + Colour for the ``shadow'' part of a border. \\ \var{foreground_colour} & Colour for the normal drawing operations, e.g. text. \\ \var{background_colour} & Window background colour (unless transparency is enabled) and background colour boxes. \\ \var{padding_colour} & - Colour for the ''padding'' part of a border border. Set to + Colour for the ``padding'' part of a border border. Set to \var{background_colour} if unset. \\ \end{tabularx} @@ -252,12 +259,12 @@ indicating a number of pixels. \begin{tabularx}{\linewidth}{lX} \tabhead{Field & Description} \var{border_style} & A string indicating the style of border; one of - elevated/inlaid/ridge/groove as seen in the - above sketch. \\ + \codestr{elevated}/\codestr{inlaid}/\codestr{ridge}/\codestr{groove} + as seen in the above sketch. \\ \var{border_sides} & A string indicating which sides of the border - to draw: all/tb/lr for all, top and bottom, and - left and right. To control between left/right - and top/bottom, use the pixel options below. \\ + to draw: \codestr{all}/\codestr{tb}/\codestr{lr} for all, + top and bottom, and left and right. To control between + left/right and top/bottom, use the pixel options below. \\ \var{highlight_pixels} & Width of the highlight part of the border in pixels. \\ \var{shadow_pixels} & @@ -276,7 +283,7 @@ indicating a number of pixels. \var{font} & Font to be used in text-drawing operations; standard X font name. \\ \var{text_align} & How text is to be aligned in text boxes/tabs; one of - the strings left\nobreak/right\nobreak/center. \\ + the strings \codestr{left}/\codestr{right}/\codestr{center}. \\ \end{tabularx} @@ -295,13 +302,13 @@ indicating a number of pixels. \subsubsection{Substyles} As discussed in previous sections, styles may have substyles to e.g. -indicate different states of the object being drawn. The ''de'' engine +indicate different states of the object being drawn. The ``de'' engine limits what can be configured in substyles to the set of colours in the first table above, but also specifically interprets for the main style -\code{tab-frame} the substyles \code{*-*-tagged} and \code{*-*-*-dragged} +\codestr{tab-frame} the substyles \codestr{*-*-tagged} and \codestr{*-*-*-dragged} by, respectively, drawing a right angle shape at the top right corner of a tab and by shading the tab with a stipple pattern. Also for -menus the substyles \code{*-*-submenu} are handled as a special case. +menus the substyles \codestr{*-*-submenu} are handled as a special case. Substyles are defined with the function \fnref{de.substyle} within the table defining the main style. The parameters to this function are @@ -359,18 +366,32 @@ de.defstyle("tab-frame", { \section{Miscellaneous settings} +\label{sec:grmisc} + + +\subsection{Frame user attributes} + +The function \fnref{WFrame.set_grattr} may be used to give frames +(and their tabs) arbitrary extra attributes to be passed to the +drawing engine. Hence, by configuring such substyles in the style +configuration files, and turning on the attribute when needed, +scripts may display visual cues related to the frame. There is +also one extra attribute specially interpreted by the default +drawing engine: the \codestr{numbered} attribute, which causes +numbers to be displayed on the tabs. + + +\subsection{Extra fields for style \codestr{frame}} The following style fields are independent of the drawing engine used, but are related to objects' styles and therefore configured in the drawing engine configuration file. -\subsection{Extra fields for style \code{frame}} - \begin{tabularx}{\linewidth}{lX} \tabhead{Field & Description} \code{bar} & Controls the style of the tab-bar. Possible values - are the strings \code{"none"}, \code{"inside"}, \code{"outside"} - and \code{"shaped"}, with the last providing the PWM-style + are the strings \codestr{none}, \codestr{inside}, \codestr{outside} + and \codestr{shaped}, with the last providing the PWM-style tab-bars for floating frames. \\ \code{floatframe_tab_min_w} & Minimum tab width in pixels for the shaped style, given that this number times number of tabs @@ -380,15 +401,17 @@ engine configuration file. interval $(0, 1]$. \end{tabularx} -\subsection{Extra fields for style \code{dock}} + + +\subsection{Extra fields for style \codestr{dock}} \begin{tabularx}{\linewidth}{lX} \tabhead{Field & Description} \code{outline_style} & How borders are drawn: - \code{"none"} -- no border, - \code{"all"} -- border around whole dock, - \code{"each"} -- border around each dockapp. \\ -\code{tile_size} & A table with entries \code{width} and \code{height}, + \codestr{none} -- no border, + \codestr{all} -- border around whole dock, + \codestr{each} -- border around each dockapp. \\ +\code{tile_size} & A table with entries \codestr{width} and \codestr{height}, indicating the width and height of tiles in pixels. \end{tabularx} diff --git a/doc/designnotes.tex b/doc/designnotes.tex index 4bb6485..e22ed89 100644 --- a/doc/designnotes.tex +++ b/doc/designnotes.tex @@ -6,8 +6,8 @@ To keep Ion's code as simple as possible yet safe, there are restrictions when the \type{WObj} \code{destroy_obj}\index{destroy-obj@\code{destroy_obj}} function that calls watches, the deinit routine and frees memory may -be called directly. In all other cases the -\code{defer_destroy}\index{defer-destroy@\code{defer_destroy}} +be called directly. In all other cases the \code{mainloop_defer_destroy}% +\index{mainloop-defer-destroy@\code{mainloop_defer_destroy}} function should be used to defer the call of \code{destroy_obj} until Ioncore returns to its main event loop. @@ -20,8 +20,8 @@ following cases: that wants to get rid of the object. This is the case, for example, when the function created a frame to manage some other object but for some reason failed to reparent the object to this frame. - \item In a deferred action handler set with - \code{defer_action}\index{defer-action@\code{defer_action}}. + \item In a deferred action handler set with \code{mainloop_defer_action}% + \index{mainloop-defer-action@\code{mainloop_defer_action}}. Like deferred destroys, other deferred actions are called when Ioncore has returned to the main loop. \item You are absolute sure that C code outside your code has no @@ -30,7 +30,7 @@ following cases: If there are no serious side effects from deferring destroying the object or you're unsure whether it is safe to destroy the object -immediately, use \code{defer_destroy}. +immediately, use \code{mainloop_defer_destroy}. \subsection{The types \code{char*} and \code{const char*} as function parameters and return values} @@ -47,7 +47,7 @@ parameters to functions. For further reference a copy must be made. \\ \code{char*} & The string is the caller's responsibility and it \emph{must} free it when no longer needed. & - The called function may modify the string but the ''owner'' of + The called function may modify the string but the ``owner'' of the string is case-dependant. \\ \end{tabularx} diff --git a/doc/exact-version b/doc/exact-version index 483b164..8549f12 100644 --- a/doc/exact-version +++ b/doc/exact-version @@ -1,5 +1,5 @@ Context: -[TAG ion-doc-3ds-20070318 -Tuomo Valkonen **20070318200902] +[TAG ion-doc-3rc-20070506 +Tuomo Valkonen **20070506144001] diff --git a/doc/fnref.tex b/doc/fnref.tex index c0590b6..7c6e45a 100644 --- a/doc/fnref.tex +++ b/doc/fnref.tex @@ -3,40 +3,44 @@ \section{Functions defined in \file{ioncore}} \label{sec:ioncoreref} -\input{ioncore-fns.tex} +\input{ioncore.exports} \section{Functions defined in \file{mod\_tiling}} \label{sec:tilingref} -\input{mod_tiling-fns.tex} +\input{mod_tiling.exports} %\section{Functions defined in \file{mod\_panews}} %\label{sec:panewsref} -%\input{mod_panews-fns.tex} +%\input{mod_panews.exports} \section{Functions defined in \file{mod\_query}} \label{sec:queryref} -\input{mod_query-fns.tex} +\input{mod_query.exports} \section{Functions defined in \file{mod\_menu}} \label{sec:menuref} -\input{mod_menu-fns.tex} +\input{mod_menu.exports} \section{Functions defined in \file{mod\_dock}} \label{sec:dockref} -\input{mod_dock-fns.tex} +\input{mod_dock.exports} \section{Functions defined in \file{mod\_sp}} \label{sec:spref} -\input{mod_sp-fns.tex} +\input{mod_sp.exports} \section{Functions defined in \file{mod\_statusbar}} \label{sec:statusbarref} -\input{mod_statusbar-fns.tex} +\input{mod_statusbar.exports} \section{Functions defined in \file{de}} \label{sec:deref} -\input{de-fns.tex} +\input{de.exports} \section{Hooks} \label{sec:hookref} \input{hookref} + +\section{Miscellaneous} +\label{sec:miscref} +\input{miscref} diff --git a/doc/fullhierarchy.tex b/doc/fullhierarchy.tex index 8e1cfa9..51a0e84 100644 --- a/doc/fullhierarchy.tex +++ b/doc/fullhierarchy.tex @@ -11,7 +11,6 @@ |-->WHook |-->WTimer |-->WMoveresMode - |-->WMgmtMode (mod_mgmtmode) |-->WRegion | |-->WClientWin | |-->WWindow diff --git a/doc/hookref.tex b/doc/hookref.tex index 4c26562..5e0c05f 100644 --- a/doc/hookref.tex +++ b/doc/hookref.tex @@ -12,7 +12,7 @@ \var{switchto} & bool & Do we want to switch to the client window. \\ \var{jumpto} & bool & Do we want to jump to the client window. \\ \var{userpos} & bool & Geometry set by user. \\ - \var{dockapp} & bool & Client window is a dockapp. \\ + \var{dockapp} & bool & Client window is a dock-app. \\ \var{maprq} & bool & Map request (and not initialisation scan). \\ \var{gravity} & number & Window gravity. \\ \var{geom} & table & Requested geometry; \var{x}, \var{y}, \var{w}, \var{h}.\\ @@ -75,9 +75,9 @@ reg:attach(cwin) \begin{tabularx}{\linewidth}{llX} \tabhead{Field & Type & Description} \var{reg} & WFrame & The frame in question \\ - \var{mode} & string & \var{"switchonly"}, \var{"reorder"}, - \var{"add"} or \var{"remove"} \\ - \var{sw} & bool & Switch occured \\ + \var{mode} & string & \codestr{switchonly}, \codestr{reorder}, + \codestr{add} or \codestr{remove} \\ + \var{sw} & bool & Switch occurred \\ \var{sub} & WRegion & The managed region (primarily) affected \\ \end{tabularx} \end{funcdesc} @@ -111,7 +111,7 @@ reg:attach(cwin) \hookparams{()} \begin{funcdesc} Called when Ion has done all initialisation and is almost ready to - enter the mainloop, except no windows are yet being managed. + enter the main-loop, except no windows are yet being managed. \end{funcdesc} \end{function} @@ -126,6 +126,16 @@ reg:attach(cwin) \end{function} +\begin{function} + \index{ioncore-submap-ungrab-hook@\code{ioncore_submap_ungrab_hook}} + \hookname{ioncore_submap_ungrab_hook} + \hookparams{()} + \begin{funcdesc} + This hook is used to signal whenever Ion leaves the submap grab mode. + \end{funcdesc} +\end{function} + + \begin{function} \index{tiling-placement-alt@\code{tiling_placement_alt}} \hookname{tiling_placement_alt} @@ -141,7 +151,7 @@ reg:attach(cwin) the moment) to be placed \\ \var{mp} & \type{table} & This table contains the same fields as the parameter of \fnref{clientwin_do_manage_alt} \\ - \var{res_frame} & \type{WFrame} & A succesfull handler should + \var{res_frame} & \type{WFrame} & A successful handler should return the target frame here. \\ \end{tabularx} This hook is just for placing within a given workspace after the @@ -196,12 +206,12 @@ reg:attach(cwin) \code{unset_manager} & The region no longer has a manager. \\ \code{set_manager} & The region now has a manager. \\ \code{tag} & Tagging state has changed. \\ - \code{pseudoactivated} & The region has become pseudoactive + \code{pseudoactivated} & The region has become pseudo-active (see below). \\ - \code{pseudoinactivated} & The region is no longer pseudoactive. \\ + \code{pseudoinactivated} & The region is no longer pseudo-active. \\ \end{tabularx} - A region is pseudoactive, when a) it is itself not active (does + A region is pseudo-active, when a) it is itself not active (does not not have the focus, and may not even have a window that could have it), but b) some region managed by it is active. \end{funcdesc} diff --git a/doc/ionconf.dvi.gz b/doc/ionconf.dvi.gz index acdd8088aa7b8987e290b0e4a02d1d75bfe4d2b1..f7e0ba99fa0e4f963aeb71929495da5ca3e9c06b 100644 GIT binary patch literal 118229 zcmV(vKODpP18Hw=V{dL|E@XCT0PI}}Y#i5lUQv>zII51FzgvLvO|VZ|QqzTF*hc4jpP$#v@@i4hoZNr>zWik&JSG`367IZ92#=cM2T{f#-+MJA8mcDTxn0C1Pf12WD3nV` z(@;(*iJ1v8kKnN$(sx59l=E{8OD1nI*5 zSV9PoYiJUl$cUP%z=xz|%wkSP(?U3_8e#^h8A7;VDtS>ei?Rp+gw?#Npa~(Y5sHQ+ zXOR%^7Q%;2)j&Gj1dev6gm7LHfpj$11*Mp>jNsL*n9l=~*k^WJ7Q#rDrIIe`@U55? z^#Xh<^fM=`Py~ExV#bhg_41}9lLBOvGq_7l$`|0eC@Ch;0h|CAQx}yis}vM8F6zj+ zqVL;R>~(U<{lecS#ZVfCCT3Al)PMsy3D;5xZ`Wl~(xGJtI8ziev{opuA*e@5Hg(29V@lOcV50=m9X1N^ zvvVnCOaq=SnnJWIPM9sJSu7@$Y6fK`Sr(x}3ilG!t|;mmQzq5x>LNcMGDXe6(g5EJ zqMTzzvD>;3?S^LbP$>%cuyT8N5$&PE7w&Ob(nF=P2axEk)}@~j>1Raxc_RJJ%Y*E> zLH67r|Jng) zSU8*J?d3kPZ=AD|11h$4;0FwHiEl;$X0Zqt4=-WigOOrIm zIjUT}r@ZM7ombmULV5%YHyG=Z2yTIK9dsY!1kIx@?t+~L?es2q)GUHq^VN`emENeg z*nm(=87wI|DQ{|GU0HO9?)64>tbp7kg`8ARVB#F(AM_^OBTR|%gaA%RHS+}_lgmF4 zjdx-KvMJUnz+v!+cLAU{Okvb4hOrJ!haW|6(6&elF$e{qD`T&T>FXsh-J&c^g2syD zp6qcjjk|cX!@Ibx;GDC*$T=K&z?)nj%HfbD4@^hGIBkkA>JD#)ys7t3i^Y=9)+d%0 zzSv>_DQ|ONpuH{LBGO4eoY-O-1_*QG)KgXJ4|`MZ5ppI3#Sm;kB!~nk2s0c)LJ@)y zoAEwWby3-!)v~wNFzEAxZR5MkRC|}DYhgqhM z??w7OU`av0iOrJ~-4JoV)=wc0gjw%G2AEnv?X&8XAYq$b)lEO8I7sfV!6dbaJzB8{ zN{M_MtR#o#P;GAsY%xq7dXIG=O)c%yW9Jbx5L8k$Q2kn_I5bCU6V=N)bgb(JADCv$ zkL}-~Dw3hrkB%@w2d820XlAP>mI}B>4Gb-NVPuCg4mgwE;Ph$Y6qYZf=J5r5a7Mtsg5Tr)n;blXW${PNN*W z)jBd{Xwc;`HE?h_Qk?HVk#8a&rtk9^y7*-uABq2I4R>8N1%61zm$t==ys)Ha5cKjD zq?)>*Bg60xwW_q^ej=9v4R>Ts9fAwdFf?f#y5Bxn!3UhERtyJb0iZ*2mWmNol817* z)I0nXMoR_QvAsxR3 zg|x>~sij@4Tk-}>g;u@_L`@NNXx2!u*fe!)*5PLyg9&h*QMKA8oev9YL`LaeS%Q!Y zB2wtRu%hZgoN{@n8Ub{gnyrQi$9xgqs;OqFF~T01kEICrrW+&et6xh=r$-wjom|?y zEFz5!RbzBhzN$Q^{+QFNLa%RFQ>V*~G$HO4>Mx?+pOqVeH11Q-2NgUsry;@)JH{`J=Q!j?>6rUmSWsssT%~P>dLP}Pe?&$F|jbXr)Wg+7p zwHGEOUBXd@p$gkgv0axu;Hwt3W$9s3S5aGlq=YBDl)UBzQ10B_5py`cnaxd{l+YBs z5FUa8d&pz^H{%(BQ6W44KJ!3$7%oT`BD_mSL$rK63FU0mnNSFZp&cY&GiuK%JRbV# zZGAJ9p2vsJUGv!gZ8;R$u=V@o-&zrA(azJosAfwo7I z?U5AR{!8C;K;iH1i#8AQ_(!LK1g3EAbDh}}+e25Li-)eXTN_#6c(?k5QHyuaT=nfE zgixIIaw#-Yw-LT#V|ZGjqDqiW6oZcJIC#_p<6 zCQ0SrTY&~2mzL8arFor<|K^Aq(;Y`+&6jDk-EzKkNhK1DtSY_E7ha0Aja;AKb z1H;7!b%o-Kph2gmkS*1Yo}v~^%`teusxvww7SuI=>1 z05o7|U*sx`- zYcQ%n%#A85i7|TvMj!{3D5@H=vd9o6S?>Vty%|*eiB;df^@mZWvu!?Awxhnz#(e7R z$E&XYN2;?oUH9XKw?kLwa>PPiA)@i=XzW!`+9zjTGBD%yS^V6wJ42zfF{d<^A-%hv zm3Zccx8Iwg5zx4(DAYTU>3=;6nUhu906GR1TlI$bdS2Oo#gXi(l_0 z<{Qo|z{PCk55fm_5L<}nDmqoGtls%YAfIh7odI#5TmOx9)eEcjZ5hAKRIWStg%lRy zV8nqF+t7k+g#zl*NUW0p=ulM+=NwdzP)*!qvB46H z%&4Ac?#7-{?Vx`6vnQ7mbi%CefSDC{F)L1(#pZr<;=cAXkF~`8V&Qx2hPU5c_V~)d z^-P=uSY!fz1>&jMaTW>nU?`^`;1T5si!G(F&fW5dz1JV%dndXajl7o0 z?^`H4BZO}rqgH7R#1qWxGgELOx#7kD}xK<-w9-0Z^m9uU8O)cfTI9MkF z3f zT};LCZ{5j-mCwIV&o_#6GGL@#MwErueQ2Y?bPDHI?Uimk^#A>AGeduAph~!)N)V{* zMT30w`R^|@Gd33!;Z(o~CtV093BnN5;5?7*&o*Wjrr z)7 zH(KpZFOBHosn=S7HV$o9z|h8B(4N=Z17C(`TA^vf0*L2bDtm>vv-uFdG$^@zE$isf zEi~|aJIAV8E`UP+_D{_RP-8%L2Ny5#UAZKQm+ZYt_)$yr^%i7-i@?d?bUEpYjgl-j zVmr;?kqNBHQ|AfB;oJVEB^Nbuj70;r$w^mGlw?7Xy{`{;on&htGV)N}+J{&4(9M@O zpqB=exC;~-&I~vMLS!qXBY09a-VJHquv0I5=H)-nU5>z98aNUzIB490H;kg8CEhd2 zLg(kJ+h%`$IYQtEpa2KU`P^j6p2$MdlJ@#FUMoKO>*j+bIN0NX>Sf9mgQQpt!qB&O zN8^)tmFrvJHx6pBL-Z+EK$2nsiLKIPcRIXAiHG&Z@fNI~CV=BEfN5}J?-R&RKwJN> zEnF`e!rZ#A7+d$X+TXgb_Mg>X_Z4q+t>$u1!gV6HGYK*Yx4Lg6o`|a(hfm#9c13Hz zntOiys~B0(^z?@_m0MozT<+L~A75BVuvxf$nur5?7UVwX6xKy}d!LvS=y zsCl7%qqy=pdMWVh4p>FvF8pX5+CyeEv1AVKP19d$f%ZFq8;=I(W_Vob@(I`GJESAY zHeTj4**|@+g|J^VV}Yt_+~v*e1rl_J5|L(M@xIrVv+p%Oy#JFQHZ!hOyaIHMahGef zmsya#y)jlB@$TLv%Cp_0_0YLnzq##|U-L`T3?mwOoop|@a0fSlc*FL~8_i3jUoMl$ zTwzVTUdMaq@xWBp{>vXX2{OlSc=m-rk{HfZi!(`*#Hemu@5)<@KJfW?JSg|d5Bx7A zS<>P@yd+VbaJkco+b?f%Sn1!WxW{tUn$J=$dB_$Vx zYGCf%br8f%vYJew2TNdNxs7(5^CkEQY~7EV4`g2bf&gDmcH4(Px=ADNnJ(=}ah z^}+|uhmbdFiQt@RoCA#ZRh>gmAl5>2&NMo!di059AAQ2->8^eGa)hu72=ij<@&Mv_ zn9EF(EecAL-X=LE1}X=r9D6^PJKO1ugK;Dx9qn~DFQr6Y2QUw?BqRe2za1eslOo~wK;`3Ky}0qJZ|4ffzjVXV zcxO;y7e5DPA;rRRk{Pl0#KsmRi#95BpVZeRdN5EW^wh6;>+y58sak8Z7b0ez0R~vE zvyx^~)xpa2lh4zmmn?kbONFf3WSH`DP6mqJqPz%8jEs<=q*hjB zeb;a^BS_Io1g&fCv`CcYMd-Q0o}tI}^UaJ@P4t4*HFs7d%F-g_=w{E1*1PYtz*`Eu zWYDVTPKrcXR)n064c+Z2Pwo5SjuwC}*n-tLcYY*F6D0KHaWBY1FZZ_~Td{iRPNGC< z7A5a#K--?Ux&`K^N@LyWl_<@x;G-z%=4DGJ$=-Xb1+rg2Q$cI2JNXi&*%t#Jso)v) zoOrQ?X9IW!H4}pGe#GidgrKMBK4?fXR^8Aq`gpT^@KxH3rkW11SOJ5`pv7EMAMClM z>Cuub8JuNUDxvR2`2K$W!=}}@V3VLp zm%iDDX{7tGC8WrB4IkcqvZZo3_@VT!x(bwC zya;{$>TQ>$%6v-E9Oq2H)jbXCRT;Ii*G;aX7gU1K6QL;le4;mWGZd%?{;-7!z$C6`=CNH5QN<%0U*w z;3{Lv;Ss2S3!I=TWaBd7k@KDI`*zXO=|+UvINK zD{q^^cf{3!k@c)%?*tzE#RDrYj3#hoUF;v^mPV#@6;Wk5CEQVhn@M`k6IyrH6)VZU zCpI8-&(}K;1`clr!tCjX-hptz;q5@cvk!dq$o9+kkH#H@2PPfj(5snsG=XPUtH!N? ziHXsvnML%~cy&i}x9>VT+||W^Su-_rao_T0cO!MxPCa^dkrN?-N(uX&)T3uvxcNj3 z8pUm`Pt2EaDP>XO22Y+t{iu&8No-axgJL3O8v52 zJN@QK5B*wl2-Hg7!9&#dVsHMf3K>y$ zWSxY|ciQPiKheLNf|_^Ii(bm(Y+d15IC);E=rX?N#djpl#WT4hzV)T7=0iW!aT**w z;o>F-JiVR9Ft_`po+0ceyiM|+;oBZ;t5n`eGZ1xQ(nsOz3$kNk`BItis98a7y%Z47 z1TnZM6qQ7BZffS#z7@^uOoJq!2081NpgLhxEZZ_%;e`@B#`=iWpj?EAH`B}?k{ zdd?1voa2_36rF;XEBh5&E9mU0B#*7_e|guwgEfxTwwr-RbX+3**hlx@bz})AIAW@S+orLlFCjcj&B_%t`DkH zdWS}EGm_}>qr_$UBR$}?kg?UZ*vpvi zgi$ba;;O2nu0Zl}5n^F|(fT4z9wb|uSUq1h_#&(nC82>Pq-qlZWk7V#B1r(OuZpNNW~Nz^qHea{wCL`%ugR3!-1~b4^5jaaq zg!G(jfu13oG8o=%Kcq~ly6j1p0?@y{ewLjX#%6s?*y@Ly*N_}%+G+c1S_(R8`|hK5 zE#mnJXQQd|SRrUAtQJ|MBHy%{xOk24$`hsVBE|S}D;eWa#oE;0-lae(=^ic7G-nOj zTmv|YwNQy9b{B?MlVk_H$P$XACEO8NLSDuqEl-f8k#s;{7Tc-I-m$8k)MalUEscr_ z?H9z1%*i!Y6>bMfZ!!X8*`>N+O-9uT=nW2sfz-=91*Js!eA6FK7>YseBHfw6;lgII zlkPkKZuf>n)E6Oq$Y3(zE~E2l5tB2FL1K~kB>B6xv ztQx)$oFc2M?>H49%=U7Eu`3#f*fj#Jo{S79NivCz#te{`BMnOuFR0PSgw@nO2eyf(L#1o z&)q>Dk>NYoxR?l8OhRZD0)F|H!alnpIT@m@gQw7+f)@nlwpkQnAVi=so*DF=S||0) z5Xp9(yc3z&vILwbMDom_#uEgP37!=RdZ3-;oRFx~!$UeLL@I#*LNcu)A6Wbu=EZhc zex&o*MS760>-ivc$U6q4e)2-@QOK5m{DpG_Wp&SW2F|*5U9~-M)-9aqq0uXrz9T@7<7EiI32Q<$ zra2l?a1+k~ac&Jv^EMGrgWxdH zidn!u;VejWK~@panV&USY4fmL$~U&t_w36Dgy4x%AmgeD^hj-~e~Rtyc~*6*_z{8i zBj&m$s$)f`X87eOq1-&k>HbS|*+Up`9OS=G^+<~G`<1bT+31F@D<{{+Jk?$dAdxtw z4Is=La$*H_h8*edLbB=O6cImvUDfHNpT9P-DiA5fuZ)DBEa2pD&b+al%esdLNOHkh z!$k#tBCu`14ya{Ck0CZ2r z)0Z;8*D6I9$Sr_v^6b&`en@Sve4)JM(KUR<= zDVfY_;OFfKULQJf(ff%3VE$&$3_$wpv)v8E?P=zAyMOAN7)0-sCPmFl2N^J0)~s5m zYO8;02IC-)l;25@8E!G_)W|RzfX&o{Rn77xd+0_6oZE?qjw70>)}~i0-L>H&w);Q$ zI-BlZ18u}HP^RE_kVpA~||%8W1`gSV%I;qcJL%eCFKED=C$Q>Xsmp3SrFV`BA z!~&^6w3y72T6j4$-iVZd{#L@!@xu6J{C1{e_=t4yW;M|YcAB_I+^o>#^Ma=$4Nql& zLN?437q3RN=EmOB#f@8k5vS%tUQUO+EYK8A|nH!gHQun~Pxp*qNrAnTQc3Xwfp`gwN) zNvwumkrCiP-HQZMXg`+|&t9!8xDohHC2|l%T9q?%X7L=QzTFLBVBJogcq0X#)4hSG zh$85aN7Co0v6VXUCL>`ENCyJO6AgX@`N*Q>6#~yQv2NhWMSKOeX^I5={l5sidjgf^ zI#4Wo<4M-vf?*-rI>o)V4?pELrXQGo&WYQ!1s^qqZS zsPROtC)9Z0UlD3d&7QjEo@Q62=u})Cj!(Uqi47*rnGcV7;=q?n>Dr5Z3*gY{zqDbxE1yTOk$$qCtWNb* zVk3+rovKE-D2oOFF{zO)8t{;L$aGR8R!{C9zi$mVafLKJTPq4ZUDN|$Zpg^7)sTZR zqr4#wU3H>&oU2$pmb~5n@=Zpo|K%G=c*>kPRnT3Mw!M7gx^?u^VjU?^7aeM?avX|K znHWjuAQ7K)2}8{q+3s_9H^=>Ude>sh6I{H&!da>a-bwFT)T51pb8{T@+r*}-Dv%^1 zS6w5Lu%&EunV}Bq()BU`DtFLMA6ryOScNshRO$S}cPo9Y85V>r&YxFIRV^1>Z7>Rc z4DvaaMv#Rx!lu8UA5c%LfLbhUr8oTpFoCY}I7l(eI>&#q98!Zuq?bWWxP%^*GpW^- z7a|eR1EqF9SBLDxc_sF;T+$5m+Lx)JO{Sxj+WkW^3m68n5M_vSLTwztB#>~Cj%Ny; zYf0oR1{OR;r0TqTXJEn8aqdMYx8_va#Q22N1uim)(A>J^spEOPvaBR;6BxE&9vZ{&)*`x%aN{Jh*GINe> zB3inT21nfA#wD!B&|w>e0n1aFH&zo6=@2=;ZE*d%^sUb-*tSYIT#qlJv{shF{ zy2!l zJDnOWsrZ9fkXq_m9<#e=L1bBSh9cLY7UL?VUNBgXrAI<%n^`OFQW?&kwS==V2$FOd z<4}Ci$tN9%Gz2M*DcSh2M(Wg|(nnVvY#lQT{LJgrfURe!z`rV7k?Lv-*8lFsp3~`n z_YxFX)>x=r$s;B16Wsl0r$&(}@er)>45I|8?BP_4D292_vk`TC0YjmUA^!=B6t1V* z4WLs4k*6SWNXDSr8E#aNuE2YuRI{6K4>p-VAbdh37iE{m;iatCUv(0Nl^O?J~{|6G~`>yvVmzQewp ze}(*V36Xt1MuNItt^(oqz>0rKPy?4D8yv9-O^iT>)o2Z@_-ADHII{rvW3dNThMEOm z=!{&=;LQVi7~Kg4iw`bj(AY^mc&b5ut%QbL!vf14Mgd41c$!>KDJ7f>=?7-pDiZ_f6(D%^(^)-OC-u`^*kmULw^^`|0-Sk=#S5bEitJLT!v7z+O1BH(#wA3h}c!< z+dKt&RHKkAb>j2vnRTR#KKc$wN)i~&>{TF!wlg+zW)uc`M@WquerC`8ouUd`_|>R=)gMnh40^y&HiC%vmR96w0`Hn z9sD(~5ex9#Us#Un;n!_^E%*n%mS)cP>X$W0QGMz!>IQ&0Ked*9>nDmf$4Qcq7)u@T zF|hl!;fkZt-AE6mQ6GGu%i%O!s}imUYl~)lKiQ{Hr0*^JtY22&Fs~RZEk~^-=+0ywl4g}Q(fiFq59-z$C^#S#fhb{uq6HQ!39RFC&L0cCLvDZ>gmK$ zsKC$gAkQL=Hy2a)q8)}x*qVO!Sf;6jc#oElsn(T$@-Ca7n?Eo*shfZODaI$X$ZYEe zkwy({AMkSfkdAP53q;r!l1PSbty9J;zMlsq*z#RAa9g@zhsq{~&JJkJSliIg^ z?sX)weEgaT+q$XNnk#ZF0p0KQt{$iBX?Yk3VCh9UIP^deC*E6ykU=3@ zBdf_#k$vikY1O$Zg!4p=A|nAMb=Z;j#C^Pt&LsVgw#H#|%%@ZZb?3vJl0^*Q@z!KgzYPIh-Qy{i@CE*IMa^osxXCy*$rAW#aOB>4OOvreBY^f8vkeq@$I}?83LyTRe`0riwwIbBSWf7x14E6?%2bI@vVWS z_A1&+B{}@4SXB#doQB8;C@Bo-7j4u|^9GYlp2YGU6w_vs9z>%M;=;9mLtN;|7N?K< z8LJhSNJyKR!*!yoiX|uNTj}H8QuPL1J=Ow)7>!LV(u0~ZpBF@VHbs;Q0I?Zb@3>MK z-UK_R|A)A1500xk?`H3nX+qLqVmp9MU1U>9c(t|>koW;aHV`Y=Ah0vgP_VCdujGwZ zyJGLIWf2}8rXd6(;hkIE+<04rTS~ASnh9yr&W^z)f5hXAlqsG8lQM2YJtX~uVjj~p zQ^L^ib;)p&2&cnmb&!C$3V<5fzeSEu*#Mo0$Kmk(ZUs&KJuf(I}!Y1P;ZKs6Jzgs;&O z8P|N6R9||1AoqZ&4#uuUMVeRnU95zbQV~=fe9U~t!MpJN>>{KE1beoxr;+H2g~Gg; zu6WgHb;YI_7JoDDS?R*i5JEA~V}My>3(}wh<}xu4FeN8``x`W*6bcEfbyvd+Rcl=r z&8{eB0cLxVfDWVc!kD;Y*ET~|ahAr+^O$o4r)?BB#2p>1?rNQ@vTAqjB``|AI4aDP z6C*qUTFwl|HHO$ED%A_g{ohY{23VhX`$^8his|F5B5_%u+Z1&g!D5m#Mj>lB6!@7t zzjzvtZnJpcMN7V-Jh~DQ6kisU5kzj?z56f2$iW)z9uj{K!%wtVVRF86a%`%10ykqr&_1X=@aFyp1!I3=ijh&tfm}T_KEIjJS+Bz_2R?YWB9PDaGBg#A+?tL&E&`; zUk6V8QBcRF@qWGQz|WQ>|0%E^wsi?r`{5Q&B{ThbS@cMZ;CK6@9zO5*(NS3xWW#q< z=V4?jBqxad(3I8~p|UzRN3v=in0u!{Ogbvof%9=68RovlpXwfEKO8uJ027Jw3h#TsGDNFf#oHqK{UvUMn81hx?vA@K^Idrd-R(OJ@eW=C5LY_l-OSeNH8R3v2 zPbehj2qg?c-x&>r%ZNqT8H?4J0&qr@?6YIKM-v~PucPFICaoks{sU0xN;!&WfwV5< z!UDRrNNLFy@jmweE;#h}s|k?8TL@xM3CNL824;OV@q-VCprSH@6cRu9UrINtuOW-E zWVk2Bt!iZ|+$<|P$!_Oe4k{GMkOP(>%OM(F(5bwV2TJI{js2WJfCgPPaj=JS3bdLa zc>9uWZpPP^cuzj#x*QdhPgy9>P!%FKc4UVGEBP0aaRZ81a>5ZnA!QF`No7?)kz8Sb ztR5Oibe6}WOSl1W^ino}?g0muo61rO?BY_&?$MJP@fwJfFGYAD-<*8$=o`F_OG0vk z&gKm4ie_M!IRp2Nk;!gv+(=ua)>fe7~<33-WA~%V>ywi!{LJ9WFwQ9VNd0$*q5jfAG`ISXrNhZWSq(WumLOeNm#&FCI zSnlZ^+w$(nY_ZHu`i8K~Tq^#FXy$G7NBfnRKrNt!tls{UX!4>!*AQn(F_d%<&nK`3 z?A3XfvLPeWAGRnED#Q4HdWNCv7yv)5y40lU&njK1i*=m4KxYYmueO? z0&P-L6Ox^FVjKRxyf6Nt@7Km{TN#{!V+&?Y-X%mn2A5uZ>f8D5B2 zGeY-hY#9FU$kC)+NsPHR{bS0fjmG8{9pSHUsjNiwtHLBeXAnZd+O=zZSBLVPDxW9k z5b$1Pd{9z5%KbaZRM1{YtY-^o6WB!7?>r8#QzDMI&D~w;9O#8;#=@uaX0|iyj)aI{ z0X0HGB8?wFZ330P_cf$8=siZWL+}8L)092oqsb%-xMKCbT~)w}?Ar9RG_BYwP{RnvP17@*u92 z>S-%7PXIY_l5`1e6CsWYtamS|_L~Ir*byXPz@< zRm7QMBJi?caeuTFy~jY9_7)gqxqO1Z?Bbp{|%~Dcs0`aLmR7NjC2l%qGMBgw76H z7Qg4v`_-1k@8h0KTSu7{4vkAk@15x|LlMf^DEQa8;^?8R?yUCkHBmbZ1`c+W5-&?& zA6E0~$pw3EB~F2^B!LeK zl!HO3qUH`j`5nx-Py$H>YBy2`a8g@1*qEI{WaKN#UU7wx3FTI}rSuBS23vti2IV|v zr3coV2RN}F^sG1cqXfDQRM&qQe6slu)B{$;KKX1Uw~X;!A|lA^ITp;u$aE zv8!AvgN@lO99Wg-6ek)|CRFGNjzt%try1@0DO86pBI1+!qU= zZq0p3#u1TzNQyalt;Q>ze5UHG_WyV-)2)yN%QAM9&F~@!7Gjc*t|`{YPV*WA^vI zNpp$_Ui~R+MT#UtEk%h9Q5+E-eAIKDVj8}PlE5qQCgLo@diBN}pupO9H9^yGEmW+1 z*RVsf5OV%4Txd{n^t*(W!L}I*h{+HMKqiQs2Sb?{dE9q3O+Ype@&m{S^i@)yJ-1XM zzPcZZq~A?(=#?EA}zUC<{g6($|6(xfnCq@7&=s@sLVD1bJmYGeEIrY+cf4M_Od( zAPvSdJCFl}Sb53jrtOJ?O`)4l`YijP%coK~u`sX2Mg+!;|6t7(>o;q`G~oKx zMQlbb$tkE)#*^!6MiZF%*hm?-*Z!GKsjb>;?*{2W@l}%GTNPo6Q0Rr6PR{w4Sw_8( z^9|Y1c#Db?;bJX|nc!sj;y)JT*yMLMTuq4)=l%5;-+Sg0-&j0`H|EZnb2H4Mag=>y zm3uBdcB3m~awvgej@b8~&~NQiuTT$&wG_QtlgugH?ivOV3xl5jZha95Bd;rFgPEXj zXQyR+s&;m&N7%8Eu!cy6SpKq`SJtV?x+sGUr7EVAz}oZ^a>{M`N9EH%M+Y<_T(4f_ zRB+HQ3=gDaTnQwHJYrBP(wSHn{~Hx}@xMm}YDABWahum*ZfadU6h;8j#HC!(fGcN# zr0i67S&D}L+Wvvqhz;h-86-uHkJuL847{MFXSh_Tw)EVG96;D#At}^~WRoP3j^Cm$ zpaO5?vuQUsDmgxQLG8DbYVgvq8lbr>&SK;Y$}x}Hr&AL493NkfVcMP>oV!BCNL&=+Ty|3MoOT7635$C}XUs42H6Kl{V2W3_HCNED~U;aN=-rzIJd z*;Y(JPi`?5zzq_f6`d`bV=rv$cimi@(h>=CHE7?Y^#cb0M>8c`G!td(&3F(mKBX!uD3;4MiUL7e1*z zuWG+=LD~UxM$_8TEK)3?YQIKbB|J119@$L1QLDx)9cy2xF)Nm)cL$q@-{XzHr=LXR z>FvIzxsYRH)AAXxsFHggf-bMx{TcXxWMKEZBv3-(@(81r=wm{-MH-EqZ!3lQLUD*D zI=mJ-M)M!Nee35so93+}Xd;L3rMz3ZteG%t0v+Lk5aM#FgxmOA zN0@2Cg9#SmSt@1ZzQTS%MIosG4Fu3b`4m}ElqQ1AM|G%moHIkv0I*on7&1s4?5PjO$9pG7;?Hoe`%vOc!Jye^8Q@*xop_jf9tmBKjuchb}Ga6dzvo=P9c zxD~s9p71I#s*v0yNxz&2Syd|Mbt{rSi{u{VW2A4(c?HgzbNZ;vyNE28aNc}ykRwdG zh+6aAMflaQ6c;XDW+ZSV-uOG*Srcy@FmgAT^%e8>3Hs>fa%)MDlr(FiV)E8(asJ8N z8N)gn6L3~wN7zN0<`<1=>7qc6?7Qsz_3v=^9IxDP*@O}Is`W>5nEG%jYsX$-zxVe} z)qd~!JZ6ExSPmzN@haNpO%)@o(JoD$8lo!0ch#;hTF6F|sth#b3e=HRQ+fzS4VhE_ zoCss{ybSVL3?AV{mP_}_7%%a z1HDR)Yzb_5IUhaGaC4#oQ<;XMezIG~p{*#!pu9#z6{vE|>D%6FwzRcFUN&#a9GdZ- znBOzrgB=RZ$kq-e9?>ZhSTBD|DOgqO<;MkrO0JMFGB{DIsQ1XgthteAXGq{VVnJ0n zC47zOn3N+8M)jLFYI=5J2z4d)aISO&8o)DO`PEV7hMkx6WlG_5pm!_TPa;u<5yO1Z zVIWM%0%nHvDn1$5t3Mm}pzJj~D0mmoIzU^N02L_BEB5M(*q#udiLb`i@ZHqbnp)iW zSvj-tlx`G7rL1HjnqZFj2qfv$bCYb9p)4YbD4)3&nP3wg7ZH=NSXWTwkXn9fTEoJF zt+QBiF(J0S_3nGu+_QWQp>+Jr(x}?2GDIk}$8Eun}3NekuZ)2kc#q*l5&nfmf_pj@^z70FH zjeaT@m5-O#Vv+rkTUB{g#q*vx`d-mrBdI z#U0h0#zi_o1eWpBhfA2CyzFzFsB`3H!#}sTKJ;9%j{Foi70KTr_Z*#^NSYF&>x_UB zdK8cR6sek#0$RDq*cPr=pQ`qYuh&M1!^M8_*pOnE@AQU!@e0333OQv`a`5{j0YOWV{u?QtScg5cHMoYh%OU1cS+_A5xy_-(oA0nY|P!80MBqq0Y{RLjz3JiVSnLboRQ zF35wr_t&vW+}_IBUad*Yx>GLI&Q4USH)Yu|XUs^na9n?&09!K0IQNY`*ny?KMS%lM z`#Sz4Cbe6~_o!o^m|nAx?=KTLhEiMT#BNV01;mV3RNnjI|tQknyqaS1u{WP;1ffz2+(B6xtResk_nRT#pglZbRqQ> z<*$puC<85EL!Fd01VUR<-1oX@YOD=f2?|OYK(cJXVP`UTzku_tcaL(jPqfee_N9BD3vQ#j)W)?f0sse zU6nY9B;Zi&4WE0xhR8=geQAQwkX8FfUxRt-k4R!3o&_ArkyL9c_K&jLrzMNA)|L$6 z2lbNqcdCSE1?+Tla*>1!{0;3@zsyGv%&o7hL|C})M-L-NE`CL&5X;rgg`K=vWul5G z&k)PEK7LdE+;FG7@PEu*e{@vUoe!Cb;v$lOJ$6wOlIQzkmR^(MbvI&TNmrua}ZoowX|Zjr@HIe)q2*& zuBUst-BtGc>)vTN6zlYP0 z->j-BHUdHb|m2DE=Mt~ zR#FKC;U-`oPof8t?r0e?#HRR~D78gx(DVI;pU20MC33?o+uda*n1+;BfAEX;49(5L*4Qk`^C zHrNV*$seFb6qx*P*a%N~o(JDp7AV-Ix3Llr9etQ8?!f11=c;l~rRd;#r%{alnfGAT z-~yf!n_M8estZ%iJ>HV2un;Lv72c&zbJFA}X@GAP?=aK=yI zI3+KG>VdR|oC9TQ4Y-thQ_)*uV34^#n1|qlatIa!D}KnBH>nuWF1BaoG)hNoA*jnT z-w2*UXcWP!g1x%pSqYR1_Du@WMPR99h{s!1HJo@bd|+YNBZ*iXM&W{&K6AXgIA57gt5@<7#x~%<5MTVAz9#~!l`D(9SB82 zx3bSeEM~%NQ>qvNQ})97Oz`=bHnK6H(niD;vLz9ZQEEpac>d;Cq8L2?hBe8=d<-pO z*kFOO8}n|X%!1~ovh-StilW*|kY?SF9uiu!RBMTAum<$d`gfG&QViDriu77gkzucZ zCE;SSMcI?xOL87oitXyW31O%pBes`;^)XJzi3M6CdqFKo#X37tz?h(p(6HMACwQbty9YZ{x#{v z_dxz}KCmnVXA5V9N+$5zH=#yU`Sv&33{qD*t{+zLEe0xN;7eCJlKpQiASG8c z$vD1_yo&JV%9oFq`7$5*9@q+gS#IL(zjngK%9lTH#p3jrk89X9K|*6kvPuXd$dXo4 z*I65_%j=+p%n#z06&Ro_%EEwC7Q`&Gq(Gkcfbx%;v*>?EFYpml@=jq}SG?Ujha25Z zSGD-s(tL_y)#7EM#EmtpIrteYQaJB5(+OM=nlJO2KD@Jen#^-r zH#?F%C8e5RjFI+Lu{WZ)TbPOej76FN%uIP+1+6~^{GJ;F82{hL^V23%g)T5w2z&~K+ zm-!Mu2LiMr9|KZ^N9y7w?T$7jsXmSa%8Jecrkr|A#c@VIv6_PL_)og03;jrRUp?Jp z_OwS4Z>N|~0re=|Ni7dAdH?t0Z1r*h-YE~ir?$F;cvpy~0_Kic-G_UB+5qzoC)T&S zv#;}i@WxwW?Zi2tJO*Mvd%P`X77dEJGgJFpc+$Z|jH!9CHAV9CY-)d0wB038^&A-5 z6@kQfPpuwU8|}wcBYEPmJF7nZ>apZ0AFOVAp&F;5N&Sa$H(Yqf3xv5gKHR;)BJ`NW^+2ZmLBS_up*zNgesDEmGiB0WSe zsCx0;?r49yH`*4azZbVWFUKSO*}3YO?eveH-~ivycl%m8-tdnHDjtmNy{T?+@PUfQ ze$ehj2A`~aiK;NO4qE3PcT3;+0~@5wU{RJ?u8^xJ4={&gn?fgV4WJx$Zn z98JL4q$X$YNzaTA8`?87@F&a-Z#Cq@gLRB$K-j@)$`ghUTj zjA#K(x6zm^F{_}cHu$NW{7PRIJ2oC z+r)grF!X8L#P=KA%i*u+H9CDfTnt37J~P$B1|QnU$*6~f1Hj3Hr(>&jpWIgUp&Pks zzGtgS`lXehVNunytpU`)7Fxr-VPw%*hLXwlA|pki@@Mx5#1&Rh=PG}8FS;b{DE}YQ-`ds|YiI8eI?fA$ zRawcB%>`E7LM0Q&dQaKBD8}#9&28~yI_i63{6sG_KYB^!g1ieUPitz-8FRTm$=icMn^oqc%}-)=nOzMl{h~h1 z5lz?7c-UNw?Wr7+)I&{Mhy+V}2go;42)uSsI$jLC_6oWP1Rj94kgakBLuZ~K@Kdfk zwjgloR6YWaBoEvdWa5(T`ev5>{Lx7+&MJ^HU6lSDRr9O!_vEL2S27B)mo?X6xgPvP;$3NUlRT9(7zv z&Nj4HOyLpL?pWDogTvF_`cH);PzZF_YF~7^Y?z_ZSL95bAutqkD{k@?zG(Cn8*%km zXnJYm9~{i$a5YAQ%r>tvw>f`Yf8wAbxh>NlAL=!Q;Z^_g$wW zR8qvQGrbhX2V*rLleFqx+4Q$YU#PyKy63K_{SPOWN!#>yL~7Q!s1_E9DB(KoNK#@c zmxeMo+>y0fZ3$xvuGV>54~`RkC^L9NHTy1C(T9Z`eOSq%-1OkkwEx*Z;HV&P)zKGq zkhkjS-@^$?3H~aVT>ycMr0M#>+*Nx*4%Psx409D$#Y$e=Ll?%-?gRSaO|j0d-NQ37 zgSmC*T;p)sHm6JWF$9BpGOQ@DIKoSqRVC3w$^jXwPTf~p#ldOW-ZBn8A43fGguTe{ z@3qZM^chGN)|Uy@)z*c_dZK>R-I=aXz1&S@AF1yMcN!6bTbc6v(HFpQa}(`@$sbPQ z7t>$!wyb1<*f{la=m`CD)#{g_Lon4}|M+Rd+0qIANPH=kXUEc~PM7ACcVjGlp9a3v zX=+}b1`%}{7-IqkH;>8nH_XS^!$@?ldd9!C-{?b=4N2Ze|9&>|VU^I3U;fU$j-^?R z2>q8>%ZZ+cyDs(TWCtz^FPV@`VS~kaeVsR^l+`c21Ws=3($Sb6TSqxUfD&X|InAS9}T|1df`sTer;B3hPYm~?P*1|B^n6%`;M zuD$*?#}Eo(7mOMAGqxT}r?XLcqZzBq38iq;m|J^{0xdprWuLA!egkVu?cwqp-ne<( zy`HOSeDpTG>nC6G#5gj#%t10V^^@zAjBe0Hz&L;^|Mj9aMd?T)dl{%UJ8w_J63Yd5 z-eE2RN^LH{MVBFiK_;;XT`dKjcIaZk3S|>gqQ)>=v;5)c!xph!dlNrodcN4Bb^!)Ex`(MYT=io~_O5HS4 z^H=t~SmeVz%8zVYOOmPjkK&kHHGS(J9I~5rsg5Zc5>!6IFx!MdQVjlbdW^Ex;V1b=xUBjBc@NJ=UkUZ8U+*+U;-A6l8fvmI2mTqv{7kqHvoa;p4BvFAzErCO-+?9d;C&-xSScQy{nIoqy1%0!vDTBq0Iy^jd@}#`-_0 z9&4{}cKg-v$QDN`UtpAiR}YmLb03xpwqmH`^S-~$;niD!ADDs-Zh1^;q9EV7f)Ove zPM>PmLaE`2!QVyOu{nVYuUPrscos1$u#A(~-^v|qi~P9!XG70H<~eno?Ja9&8y`jK z(FqlXJ%xY~1BW(u#X3N%o4(*#zGyJFep;3+9r}44{?G=ubPwicIFHh-Zp#HS9hzvh5XhvI$RpNY zg{x*1_NR?0h6TZUDz18VAFf3(Z||i z87aVK8rA+ZlMxo-1}hEc<+3;q);B&TEMQxKrcz~To&gr3sf5kXw&rnfq{GnqyVT0y z(3G8@QA$_^#^xqp_Qt@#8}$)fi_;oz9r|5Gg$YUF5lG`N1bm!n)TSLnBnhPPRVcTu zyO-X9iy-TgintUEpN8(rtUgq6PDKU%ugZ$1n@Gb#xBA@s zuGn**DE39T-X6p1agA|``$FFI<-fYvagk$)HX8b<3a#zx8HD4nYn*DtXqAOp2)wcx zu|!_EA)Qp&o?E5JaSrYcC9Km$xCi>9sA%jSff=C6UG;qnV54`eaFC9J(d0zVdMD_7`NMr2nt+$&0{?xlBV0FlcoJ-$!t%qyUz=ua2Uq0}PuqAe zypsr?>X8|;3Eud3q4CjMd2Y-O`)VO z1ZO`k=W;PP`!Nz)p#G(ifEvCXl)ScNX97tV;G;Jr%@1Ccc^>T-P`l)fR$RYO3h!n= zMx5Rn(hd7h#yb)bB8-fn3((*qr0vFg^r#1)h`?cmBvi%V6LWYEnd1Ah8+SPd6fx25 zQ8>xmYvHE@PUzJQxvKZ)eR|&7-?sGYYVxYKo>cw3eb?lI&pl8-Fz{+qVZxF6rhF6T zmLF)_*WlFIW=*+$XhXKgeEpKAQx26dQil(L5eFxodBcW_8=Y1>$MJ*Z6IoMb;89x0 zr(U02P@+%HAFWTu1-TnHIMM4dN&(@PqMKTfQZ)jFxSA$cEE~s+DdVRYs+qe_nK6x0 z*GEpo6Ie2-O#=?!P^jFME44+6mAiHm`!HL+D0^koP@RuJ2WGL9Pn?j15R1ZDE#8iP z)=+GHN)yoS#`i5bjJY(L{7ddL#ttKZb}caT>=I?A3|1uf9prJtZ=Q8Xg76j4Ug{q{ zOtE{D7N8K=l_Qb8>w%JQg}EVIpeU?&N?S#uO3@NgC9v4o@$jd>ElcO1>W8mEM%qH) zsvfBW=YkaGa>~0I^tr%Q32ZGLRv38nqs__nT#*yck_#Je<@!8J7?E2>T4}K=G=YrO zN>Bn%Wm-lM3$VYLufUDOQk&sg_43AyFK0B@7=QWByPc5WlOva0Tqt_$P~}r@%;5Du zHjR;D@cJKl6joJmi3(vF=@vRWNiRgeAvbB59GEiS?Ah1+s4$^mN|VTgC$NDl+EdA1 zjtfCkO`w(i<`N(N3d%(Z)ygtj3ax2>Lobdd{cLy^Cmp(QoXuHA(HWZB@vhpOi!{wb z{Ua(!Po>oY*`Xzy=*%7}p5bY!&77kixO`CVECw#Wf2^Agvpt>Hc_nG_FqIPbm0Kyk zsxAcZe#X@g`-+7u^5NspyFmId6OIU)Lg1rzkPC`VyBPQ=noX;!H8q0nrouYRmJxDI zDHMlU`4Egc>SlEjdzqJRlQ8ZXGbZ@-$6pjfYq%JE`rr9`w8+&dMX` zi(t%d=7qyUD4T_AuzGV z0;6)`R3niFwI(`ui+EkYPRR(J+al zA*5B#1TiTaJU(q_@uDM8h&g=1 zMi6hf*qV=G3yeKTbnnoJt2rMSc?7q)nLX&{zK0RB<&&CY3bC(AGHbg^xd*giSDO$2N7-Q3DF4T5BCX=|e+9m$G+=!WVm)Q65e zBv7(EnW5TfUo1n2v7!;N(<8Lu1H1^@W2!$?y9qwSN~vg#N;66ERUNPKKC=?qEqNf_ zmCdv#cO>)^NVicp__(0TsvezFEShr)gSvW$>u>VC$NdC#b*rVB z^ToiTh+~FEH7Ys9v(Qjd7}ttKNJO+4QZDAVZQLt^C`luQ;N-J3h+t`1a}R;{fW|WU zY`l`{$GZj7kPpy|z;(EpB?{h2rHUyu@>H}CTzZWdw8h}ktLe66nmmf7P&Fjfm6uQl z@fo^S9x)PKN(dX04D%_>+KMs{Z0;?exyeW~pE@09f~;rX>&0&#=@@51F);HC&_Ft2<!wIvHc! z$L?=)>C_RfoZD``e4{1~K|0edA+C7#n6bRr8Eg_Z6mU`j!=C4kbnY<|y(v}O9d{a&si0*k!K@>#SS>`si> zCu}!eM*|sb?wl}=m?;NjaNczfDlsz}$N)imF}B{9Vc|zc7@ae@+pD?jxQ%Oyf!rN2 z4l!uBFm+}NorjH>Y=|g<f>Sq^J{X@oVWxLF!Z^SAd1 z;+6>J9X7%-zjLX3PQtw`r4cqo!Mmmvn3m_2X>8PeCuc`dDzFKk$6W8)VC1vcoUsFc zK{E!e9k>-|&60U5z~3CoVc=6rwh+Ooz|`$in9prmbF$=oAKrcn6x?QE4J~eYeyl8FO_1h%ciD^dBOJzyRx%%RYk&0Hw8 zAbHJ&3xT`8O>VBczoU|+2=a*57Gs^*y1=G%k>iGl;G?B5?6!~^V+IfIxDJ)MYqC+e zpiLT~Uz*hxWRs^z;z}`nr};B|zw5{JExQ;?O36f*;h9F<^pN>Gq_>r#tm-g)IVw zkWLbuvG94}{EH7Tu1N+%CIL?#otuP5ArGiE!EKYaF3?UHQidjk+Jv@wlzv~o-91Ux z{j7|s{?Xm-?r(q3@B91tmck5L9CitQ2}exFB&@c>%~2!Bo5pKysu9PF;T8xWN`_R# zed_%By(r{P4sJ>3MQ6bwd(Urw*+9ZQi8x36W}JPtmkD1wGFq=as zI+sS^0;Y306wc(e-Ag8!Nx}eWVd<1MamlLfL@#qok~FPM!K(cXlOYzBf<#vZ>NsA+ z%Gr!;7H({|ZIK>^Kz_E=f?{|AjFR}y1Iv8#Bld%3QCWh}SI zPB4EIebaFkVvtg36`Bh=&K5&$KLd1TIP7*9ghn@w1{%C2>IRmoFOsi`q6oCCvo;yE zD22sCE3`h=sDT%V5odw{S1ZV!r)}qA2v@)O|Fi3>ET)OaEZoVsbd#x9zQ;ARSic3~ zJZICi7h+fcB(P$OI!slur8FFdSK1h>sUxT(wQcf6Yu3ji?E=3H6FYzpa27Qi)|n6$ ztXcDf5RDU|nkzs{bdtcbS3?VX$y)YWrIDTO<YVPM3K5BYv}=9 zo|qI~kUfa%^xDZZ$3{2<7=m{j+3z9&8HDCP;zuF^2$&heNjQ_TXx(^8)XiQs;Apvl zKg`E{B9jACc~$*+W$n!(WvwC^N(V=?tl+trFLL8jG$=Zrj`O2jJ_Km7b0fvr*>l_s z7815~F=CCpg29irp4>zscJ@cnt;NxVO2-oJ)M&hV^=Nj2%qz(YN5u+=acc^CP>8iU zk`m83h{}r=_$a~Uuris$F0V+fFgVGP4h9kHu>8#u(TODrI0%$#2YEq_v&cBn0M~pJ z_NVMh&ZfO$LA=UxnP9;~D`R#aM!$P5X8zpf=E{w|55PqES>Q{VCQ5{lsB;*R3=eey zp|SRyf~}XVJu|T)OSRo&U|{pdyxcJ2$}EWAizQk7Htw3*Kv{4JztdA#>e9|AUI zBTRaGU9J|88xe;hbP*G?%Rgolr|)`Lbk#jr5yzSZ)Y6CI;T>K%=7IGtua9pTe=i9#aL|>{u_h&d#^}E|obfnf7 zSL?d&CF_f;FzwgD0`!ui8P;-Vj?6tsUZF719CI@jWw-cLM9 zDBDxbOvdp9S?`tAJ%arD)i??K4u3s3)0PY0d;Usx65~w1`m?ufJtu>4 zXq(m|4I-MSDftwGJOL2-(|WtswRh9UbJRQh+k%ZhZM(X=^SXBWcGdHz@z1O8dUI3f zx|QoUK`%4Aie*{a>92(e?k}zddZfK9a=+0lPk1|C3eq$eO5?zuNj$lr3vN}m8UgX< z((57xKc(PCGsUfDu#khW7-$|dK+z|GEwb4IRRcGliT@E3Vp1#!Cj`dB5U&R>;-%@& zo=LKdM$LQBI% zWs&ZD$!k>z=I*a&IQr} zPrk}~NM`&rrNij9v%?@I)&B;or1>8JHY|wVX?p}-I!-5_Vs=eJmZbR!Fo419#v7f= zO{B_3siF4kdlXIg)-GnLB8vBLWsoTy(yhF+F|WWz|MvQVs%|3Af6khaM*& zrg@jyo`-orXsVpIEC{FLG-10RMDm2+*qP#;!&TE#wwum3M>x~ObRdiKaK|{*d2-3B17-KKrMQ-Jn?~clV3@)gfY}VnJw1=@$ zD(+&cqfE%OxK_;tXri&3!ix1_m*j<+&rbS8DK_)D0MkK=z5BO}VbXQZ9?_mgax>(W zq#5@kci@~oc?W|{LI3y;I6G7a+Q0;U(gn9rc6Il?=Tf*-`Q)W7!t%68s{V6vU)&d_q3&DRe-|Yz`=D}>z!Cm+0@MR{eamyHk+Lhxg z5b9E*V$B_mH<*kYr#KJI#aada=}_~ zL}!C)Bb62h$MXZf(M=JmM-x63h>8@FtGQ1WfE+2_jU(W z$^++l7{{VbuA>L${OsZ#P1uRP|W;~uPbOhnh3b7ZrSL=X@KmyG~Z7mmE`hs-h z*nYiamoK`Kf4l16=SwGUI8u^M+*_>^CZYl~Q`w2DHKr& zj{wyT^tLFEbFOtXuz#+TPUbaa-xOmu0<_(V6^`eg#p&}^n>1h+YHR?S{O|xw5&m z=-Wp}RLF_Y_jAzM(cwlYrS;@xGUZNhIR)$yDWkMI7LT{2p%psd$C`BS5NXD-f!y! zpO}GBLe`6qx%ooum*2@d9-#>Nl-T4m>JM9_yZ}-JH?(Hgm?F)^VrdF$n=Zi8T&3Ek z2COSi?+{5x%ti^dzL$KlWE0|^5SIU-O@a_||4iOd7~w>C&tiPWSj&j*dGG1}uxAQh zT(v&y!KCKJl2Sz_A)P#yf`2fVCCmdtKm(l@K`nH;1IWPWuEYZz;JZZqtrb30ILro1 zZN%0no*T=Ip8uE$S2L-Q3|tMy37qm{_KQYsnlUq(F@#9m*lyIW5fC~hhnWcqX4PR` zt{wA{H&17(Kj+c6B6<@-fxuq4`5vN^1?%Q7RC}oj$AM<_duRP)8^5>yfd$EI-xlB+ zFlCoNv%HKhT!Od1`3rbv0@pqUO=#;dy7D7Xhl*GP=cy7e(E&Qhj|7GsSlHnk$X|c> zMqMRUqp88>MbtvL!Wl7@#jsU$gR=u(C+>(i+CmVC7!?rD7p+B)RRkh#fhK0UeyaLLCyMaX#vrGf0W%P9 z1|B1R65YrY5u_wTg21VB;v&vF{vo$7OSruej)Ou5!raxi{*9yz=1aA$FHsPf!X1VX zG!npq2S9A3iaZq(Lc=bdiIvVt=z`G+7~o*4+$4rwMKb8TFau5+QD)eFqX$61Gie zu>}n!pZmA=y+63ZWdM`M?-=0Z5c}u0#;<|xmw48u{(s<&@&sJ&NsQ5NC!{S1u z=|A0nq*~J^-U?_Ylp3h{T{FJ2{qM?T>5pW_;Iv81diyB#2>-#;?eauBDav1+>Xt=8 z*n8#mMPUS)=>cw{%R3kCHABy4Rm#hz2I5Sf!SyIP<>t8xvuo)ExWQTrB0)_!O*{dwtwPdkalFu@; zB>(tP150w%jXeR1DQfI5>DVfNE2_d&kwdYwP9gZ!fw}iN^i&(?S(PmBZH>9-Web+~ ztA58L7K$_H2lEz{-4(j>y* z{sPQvI@d+3Z5=F3$!c4x4^Ojrdl6XM;9wfb-qJBN?0xggo7U2&C5;^{uP%F|;p#PQ zU0u-e>wi9m^Z;E-gdnFFCX;FyxP7EagaLExNQ9BF4bMTiszfoi<`9KaNsomyntB`yH*P5d1SxuVT$x&(;@e-g*Wx3%BZnsgq{# z!h|3azaGz6i7qktycz8?(gMOMZrJo&nc|BN|CQ7%8r{8N{TkqBg|+w0DGR!G5cjQ9 zoCgG21nsAk-m?{BKu{c$=nz6J4ZL(HhtIt)MUQsrRD+_m^7pf&s!yO;)DZ_0l%;~T z@(=leY|d**qYp6|1Uom{X?96cI)R2F*WliEFHB(3s(lD&qhQrO98NFV`kGj{)U_UJ zAGUq+ZYdAHXr~t411m5>cR-(JM?8)sQz*QWxgS7HbD@z(n)G>jP*i z4j1q@B0cejGd6va4_j_QU4NfV)uQ7b&-5-DOGZv{YLk>$V;6rcr)!jRAdEXhRy2p5MCFy^{MnZ#k! zO6nS>pk#pyrCkrP$vFKAC`XQPVB}C&_Cz#eJB)8S`6%O;j6)e;Iv!;lgaG1F6?XNS zm(Fv&Qq4=}S2*+qy@FsdIRuQrA}E53QBVmPF)zldB>7SD{%jaF%txKiY+MoXy3O_M zv?j7i-mjXO0h62y%r5q|dJrH+2wPVTLSNy3YB;@u-0M019agB`+1BR_c?y+G<#O&K z?_`8yA?sOW>&vM}`&HL{q2AwIvbuJr!pt&YaY!SG2P;h}$kL)TI(~(@jH14RodY7( z`a?nEh1mKrOx2(`bPPDRhlUhYB~3Vq5?rhdSC=FT%I?thEWK=+lBozZk?#oM;#{w} zXmx)tNR`Cwh+d^}m1K!9Br4&r^0rh$)q;i_VSq@nvMEHo>>qa1$X2o}!NEMp%lfjz z;?|O~hN;mh#MWx44@l!hY!%c8g1;ajBC4O_1XT{_9$dWRkR-uiggWQJ5Dx8<33+ad zs=ZlDz6fR&vCp7^t~Z}e4?ucQjP9+uYR{x|RW&6ryF2iTR7{t)LkX1tZUs`#HaH1`KJ8S&I@0n8Fyu@G zV3Dm0)kKt5BNs;t$s(s-*vzIT`1~jT{H6RzevnZ&*w8OoX1c12Ep=W%J)ZLv-B|e(R|H$0g4dgPvW_+N6}J3qw1kl7E&qEh0Gz*Y^c^o{Ew zx-Tpt*6sP!MO3$^5~O#@644CLHq#7WecM1YtZJQ@pcw|$4sshfeK6Ohp?WcfljXu@ zkSiUyv|+&Zv4$J60U(kCa05KpB{czU7ThFKm!e$tX2L+%NI4>hbkIPjR3L~jJ3|~P zbkF((h|Y#ww2UlP=toNV)Q`Wfp-~Q`e=6C9`m$9OI_IQW)gtm#26w_1obm8y{j6RRUMgZVdwGiIMvj-Z5s0@qaH+;g_G zv*~LaC~}R|JCNigL##`ckZU?-Z`SLD=z*rjk0% z9OyPTRH%7xCWa_8WUaQdh2=k@z+gI>m*3QxDaL*{3nNQp+Z19yJd?1Ybfw)s6`=7` zGk61xdffit1GrTQOe)?)0H82B_%W^Jw4l;<&5xSVqEo8*(S=^5PC`bcu0e4dvi}2L z5zn*M%(qYuXeMyFE5ha-WML;Ka>XZp{=nq<>($EF)Zg|j=dVlg8lZCp>+Tt0nEc-Q zr47W+O0oN&(xC3a<$|^OyBgRX1wV>mfIcX@7`y*qaGT;nZ%KQ|Lt3R6Qwr->VU36a z+zJ{VxnmXO$e^hZ%ez>oo{drW)~WLb-HeM-qonq!jN>E`ff!R{$%PdL7~}~-o?hh= zPKiI8yP;S?L?OE_5;-lQ8fcb0;|TBIX3%)qQ5FmUMIAEv>Usg&fQ05L=r-7b&Y&Wh zHJOx(RkRBa;in$-$e|ep`D!wN}{n7K9^Za&4TI)H+@Cr$}1J4yvZixk}e|FX0}*;mAFgu0Si4fUFE` z=HX1>hN=@K^~?CF}rCK(N0zggc_G`s+JSD#S}LHJmQO(ec-id%`KR&!r`0 z_Rp^g=5E)FM;=Q?78e;tHyJec&k=Lw&;WWib)^Z=+_R|4M$R4u))!*?KZ*>+X2@&0 z7ybMb4(7R7sfm3er2n>mD|)#UYyalCGX&1f}>9?|=1?j37* zU!Al3!f;=;KX$AvB7Z)i8Zj@Vi`ffw{$#=j>>b#6e}nYPArXeri+^k=RUc)rN!@X(Kj#L zPHu#;@?G)XbX?!qOLk8m(E)vi2Gq@RT3AHo_Tl!ft(bkh)t9TRUSo+Meu#&FP63^E zrWHH+DyrRPzafdEyyFf6lU~u_H+&jD;17ego2DP|Lk~!W7s*F2>%lC4b|E%-U0q!w zK_EbWL&^n7G1nkn5>*j8#GP3~q`{}CWM0n1gbA%AWO`!x`IXpDI+5}-cKq`HWA5sM zGo^Kcq33tbx$oUw zOWsElchC%Y_w9T4-H&tc`TCu6Oa*qiXWPzOQdevm913_)LZwvwbS=8u2G!l(mP~hhVMzkr zt>Y1$G(Kcg^7xQVCO(8k)S*vDBy{+^uimBk{l9;XxoY87Jg$-2aKHZ+NOY1kr)0{$ zMXP)j!)n_O5!@ko3)Tn)(M)V%$1x;euKhnT($^~lC8|F1GZBIs&W;xmqF&_`%UbF# z9qd%6p4QyOl#&j$76A**9+LkV(p=&?-cepbNc%5t5m0unLJA(ZuHl{5Dgn6WzIX#% zjB))nF94PtM!?C0NX5$%LCLkM`KqVRY*s@fYcoJhK9%hOpYVgn1J|iLse!kxIipM|rU9VK9fRE5RQ1}iU zR6 zssPvBt}n&y3Lk0q_-@yuDwvIiQ8+_`uCAk8=b}DhR z-${P>{jbQ(Km4rp|32-%?>zjRWCmd0nTPMTpn&fSDCw1>%}Q<(3Ti-WM$JCQ!R!w| zyC2GWRc9~kWf}2gsG(>$4e$%SYOWTT=G=S9UhBNrLoH_xBD^|trbqqB|Ka8G$R=h{L=rJ3l4 z(5?s{N?A-1j19^%TX(PQ(`*)3uH!J;c$?A{YcCB8E_TX9j+hej1px_%EQHa&6%#BJ zw`3)SQ~#6MU|f>}Ta1Wm{>P`_!yRKoK61?P;q@(iSOhCn5sv^;BQIHXE^zRhTm=nh zY4Pwtk2&99XuHTYk>@;-bauH9cn}ga!i9OIHW*2p=&iOTdb(TZ3&iSxC zvV~MaA$^?tnNizV*%=>jSpuIyXi_sErew=f4Yx`Mw^S#9ewQs(@4n-Fexu)g$J;u* zbW;+*D>Y;1(D2_reP)z4MJel*YB9xoddG$$pAtWr48qq9xgV2Iqvp9KR^xv9GQ%&WqADu5}mu~cicR5hO~hwS_AGbdWK!xm@(ECM-m z?r`K^dvr?OJ@Fx$suV-$8}5mjH@ewp)BiPv{?E|t!|@nn%~Q|U?lp&@ zYc{&q{1MmW<^-N0&<2ylDER0Nru(o>)*S9M-Xt-|)J$ykyZr{W`klYlvifD8H*&|Tb7X?9d z^p%iQ*1Sd98-}m!!og09oG8Zo!om40t5+~9o%2~C)Qi9QyP}FBi1qTXH;3!ag+uIy zxp2_3Bf!sSq%SEiCr&5CrQnIGNiN%2CEAn-*-c0DIH_4s1~*=`yD7a$bJ~ke?I%gf zF70_z9f$_)uKXuG!d8BZ4q*M6!V_XBpx?^J9-5LtkxMU(O9tt-AyVnplG%LM z9$t+R;^~|TsgLFH$7c=S7?z4JxJQecONj>rKc}o{nSdkLBkxdKt1S-p^&8bjb3rm2 z&GElVV58|c+wK1KBRAuq!>7eINC(5h;pOA`mJQ-=ytorhB+0u%&CJ)PqAhaiAMBPb z(*MCL3MJy2`!YqMm)o}tf?hUW{BEoPQ-pydt1?avtt!CITBI)Ih`W-0*lWD8LxWyl zI>9DM76>>wRj!auUKLpN(=S`uDi9Gx%)FSDy07T-=l^(@xfs}+xIw?blO9a??&l9< zD}xt>njk00kyh`8g-P{%l4erHeP&4EQ2H`bgS|3qKq$g@)*<#kv#`vEW)7v{b3rU4 z`_5SpdbI+!+>GQQAXO~EtR%9gjKL&7hQ$IR`Ued~M1Sr>_LSW5u6H$&Rj747fFVU_ zs)F{6&df$(xMpcOLdjlaUJ|eD#`Itx5(BkuU_1-mgQFuj8Um4Ok=@4Yg9QUOjSNi| zO7QyY*UR{;)_0N{{A$Go4wF5uU0yB4-M{_H+~MGK>k)M0aZyC zeD~0hUSs!%$p+Z24VVYlX+x}M>6NH4seYb~@6{%w2<7%6-mMc)Y;FM!zLmpWrX23V zL>#W`?1=;%t|RYg_d*QCEsRZMriiLLLT+yv`;#MVn(k)Ux^XvnGl{XSi8}aH^Rvxk~V#` zYNKSre6EzM(0Y>W1GFiGBZ)l;vlR{*%VQwICb%dkEA{>A4jHd^zvauOpjBWDrz;Fv z8V29)w>(zWwCLKM;Pel7eLP&N&{Uv$IxRpDl}JxS_rc!;Lt z?iR+GZn)uR82N5(4Xq3ynNlDW2AOJ=UR$f`3~Jp6*5By`>P+{5(mwrDvmu_E4e`_v z=UQ>?w--W?ZS3fvTYmJvfgsyx+;i8Hc=5nDm~`Bao}r}EA7~m1I+RAPXd@C7#?Uks zK(0Ud!PzD$;)pqT|KqW+;=AvEqC#|9(1cKco>wawu5biFrHmWmLM!xO*dpT?3yg>R zOd1I`oFe;0-97t2Hpdh!C#HD+eE00S*aQ37+Mk`FLtAWoEPRN}p>QvqghEb%TJ_=xqbJdD0?_n zDNGXik;F(;^vM^znj{6t&mG5r2^e$L4g^cR%n)U1vfRV1@uGx?+18Ad`ccijF*G<`2laIo7ON3(O@CtAS z+4)l?&^^fuLy%H$HnIIm9EoX=vm|8A9b9(NuguQpcuK27DgCfMl}@M4m(twfWf%3&HaC~* z&TdzMwGC&tgCZ$4ne$9^vW8XdaY2Wje=N z*rm-d<9sNLIEvT>!Y_&O-$snC-u1+imdw1!-0f*iETNO~xZm}}S!1~h*X%K6(feC# zwzVH$90026#w9e|S)N)^$~K(kX-1c!0` zh*{gux$4K7%T2@jOzsalcdq)02!VY}f#q1V6+)4Wb|wuTZqI1q1Z)qOyg8l$mZUAn zu2S#5vkQQb$~Sa!!BQoMU0h;2s|L+(8JFX?oL`^Zps)ZL#v|1SR!t*3ZlNoTOK<|&uqj*!i zu66gGx*kQgTgrFuIRK<85CF8QdrK15otsPtH`2!t-LBv!o1dFAjTogFk%(ZcHrn_f zX^md7Y6Gv`qU^0fcbN2;M)B9Fpf$N2TtD*n$e1dR2SYCG^ zIXSpu`H8PB;(=6Vaq4iu1JA(&$+wDxd{e1>@8OmEOAUC>s{w|EAP;7A@^$XudHX-2 zp^FlYcxVxGQU~+T!S_789G3Yn?3-Ai0C#hzo^;SX7;uREMWst#Nl=BG&PL(b=9!(! z$Vd!0Hg0N0duiX<{lZSOeAeC^rqflb6E%AV_RN!1rC);H$*`8vEk^B1#6^9{xhqW2 z1uXl0jV0$^B-V;MYZIK-I*^IyheBC(WUWiXmgn)=ES}; zmqM*SGr@VtM_Gp4i@?mi+M?D~sP;qH;do-spq|ZDGm=}+$hAC=o5u4kvzO8;@@5V< z`_9J)Cb`7Y$1k^PKN=xH^in)yrZ-q(T+qvOHq zLo909b8&Y(7cCXoytbO!(dbNa!Hz9kv#dGVIkAr^IvHm}h=3-hhVI_8zcYJ;QsDk{ci8y|ZN7^NY}nzhv7{dq_6$&>D(o4duXRO3y(OR5 z-r~?PU;E<`ft%R3MBn@UpI`a7PD-IVqc@Di->pVEA8_r5OEf>`fa$k$z@7BF?EHRf zN5(hAyK>>*+cp<>dAk;gTVQW__U2M?FP4(TN}?ONoYh3}rZ+&WQp)&1@n&}ofpO&j+wpkpM6D16nd8w6VMG{uV= zCorSGhZY=PYP67-#^Z6a4q=YsTE)So7=e{Zyg@u~3?-8BRgZFsEqYIk#=Y9Wu-I zrs4-vxoojyJ?+0~-xem(H|^iN7^}H$3q7+4D<4)th}tseBlW)7Q}5ognsrrUFfisi zsW#)4E0*I%E+B4LCipK71X)L1h1)6HzK-}c1_RoT?O_ui|iP?xi_GjXz7%+I8Yum8-R6+gW zOf+$l@_hg~=6(0L Cq%OO|U1~?ui6gc&QSyo$gu>>=(il*&Ba0~zwBfwwLo4Fuf zOYh~;6jBej^c>qE4nAJ+nFvhRI^^!rD`S9PqkDANV)oJ5INVZ*UUMA5ubGNzxLU4A zKt$cW>y=(hWHx}BK8X`>@A^sA&a2N*gmkb=gD{koP0a{3VS*)_x=iquMkoy97Tps; z5R_-q-vej-*4h8Hu;-%_Bzox=z9F6u1w>z;TTxQC2a(tV->^MNkz(4W1kW8lujdo9 z&Fd?Oh{yGY^YUx*lkdFzs!H1{*l+OitEhvadD}E~#gQVw{^h+R`?ph7&=WTkx>KbVM29Q{&K>xk6g-iw6*QF01JMedq)gB!`4nS>50CAUxu1J>cO@)S}? zjdOW%*iTPd+h%(1;JHt|vZyg)eP?6Db1#T7V!ahjS7$p!r8ZWrRU&Iwd$@9hmv(~h zXl7^DiICULcY<$o3ZUp@1rbU4Y|?_+%i*zAA9uFxfc_wM$%s=ej-!uZ)7ar2XFtpp zi-3np8gq`Yjxcr>9F$%g)=GOZ8cnuBbGPjNchAlj#t}e?@NA+oVV@(?lituNluPIrCsttE(Hn*%V9Y|P^?+jiNStPN+u%uQ2Rs;h@1zYGrZf()`_}7S zKN`=9IMe9*Q69;cB6$y$i%b9{=O4`kd1h2W7LOIOxeUyIW5ryi!m$w+tOnIlCUcVr zF(8VF>Xw&L7cm%U;W_M)^f_0?UWO83fSN_XEk z6DZvs@t&%5zk1V+PtQK^+TQP_#fi41nA->E)G%b5ZKYzSKp%L!nxvGeG~DYhkOue>kr(q<@eQ-!(RNy`7hB#{Dd?S-yu!dzoUuxd)!2wdTbsK z%yUsQ`kd)V$LH#FJN*;Tok8cjwb|$``r7p31B~V*@c^xPTX34~-_e9M@0?i!xyB@O z24F!&`Va1i;2L0VvSr#BY5F_`h!6D6^MOM5cmH^2^M(Q-I@k*v(?i1sA!~V=#`%WM z7_hmyVCP;q2oNNzZea_~A~{jn1s-|vfM_we0Jc;uzeEzbkF#=kY=&8g?#PCFY&zcb zah`kyEl66U;%Q?Jw7p4A@v8LpPj6No6g4&KYD( zB40Ll8cY*0cATY#Epg4fm8M>v#BrDMVzz8QZ`(xsxx-8U^zY>mW4&-3p#i<>oBf4% z6i%TIb<*IM{ozrg4z=s>L!VYr{RU`g2`&`30aHFaP0W3EMwt{VQdA2B4D-$k;7elOD zv3vm2>+`l2Y~t^W*T)_qYC#8!|>1Wm@)_T8=D)oQ17 zrO3!isbXhA4x=MAK1QR+$M~$Y5mVKucumVWB3vMNY2q|dqQyfNz@U@Vx$5Yxvq!FD ze2h1@s7IjFR$l(r4YSQH0`jaow?2rpEVmxwD1Tk>j7f80Ashv98*>y5tVV9NQ^n}> zUP+Y0|Gk@w#q!v%!d8bNB4mE#mx5+Gcn|xEiv>L?fPb)veOYj|Uy^}uiJ*s*o%wbxRo2Yxsr^*{v2RANvH zLyT=dpJuBZsCkuv_YMv1*fdZqjN;QkB|n<3PFH>Bd$%-uxqKS3C{MISj2yh~$rJGF z{PlPLVFAC+4Fy_9HcNZI^Hc|4PLdL0n2#%ygkhtESR`7Bs&?oZ(b?Xy=g(zIq7q=} zTvN!|&ZGU&Hx*aujM6V^Ykk^orI{@J%$8oKaXKFGq(42 zj3KV}=pO$vJsar5b@%vVa(~!sGU~wb&gDGDW>Bmz$GG%tpL&+4HIor0122n#+v^6F zsLJUU$5Z0LCkfic;Em3q)Fva}@ci*ptlpXXKM;|fJ{}RBf9C%8XM!l6ftaJvU$7H3 zCdx8!X|B@b?d(uByzt%}fAwkroQ_QKXiSOv+?PnzlCm z0NO%nkdN9HQbC>GOm32CXXeJ4J0wvGxQf1@shwUKZW*P5fU=9<3Nj0b1zmR~pbNN) ziwM5xzKc>6@nc=#eLl`P_ugbO_asgDx%KCd$;`d?oco;TJm>lRKS}=dRSl63 z=B!*x&g?U|)`HS&`^>yQ3msv_-D0+7*PX~Y-2w)h%vWx^4kuD_j)N!CKi*lXdm?2= ze>*)V(&Dh(2T!zkWbn&$K?b?EU}DuZr8jq6!%9Zw&8t@UG63GZYGuG9YxTNHuCJt) zdsZ*Dyn&}|!#WUhA&DF=bRp5lJi3tRQy;mIs!ioX-&GN)6s1Gob(6%Y@s+lVhZdCE zz?W>GO)1^8dm>69_|8~L9d`4DOsUdg`)>46>acxf)iQ=|lz}o&6Xzl=cW{NG7}(!L z7rUGOlgR^VqF4VHNVrP$>i-A7#^EMzOskqq#R>48z`igkSmMQj0YLQ&;@M!= zlISWV6RT6a^McFLg>uSQZ{XLZlu8m@3~bdS_V8rYs>N-(8p;G}mCh?Dol0x|laU{~ zs>wvBv(D_rz0*E-UCjc~_h|0^Np5Dq$lGmIUqZVGY-sj95Z)jr0%e>XX~ZsoiGvQo zCG7Id-j^Htp2*}y=h_4ryJ2PHr(K`KQ{%Zgvuow2dB?^(w%s#L$HrpaW24tXSQ1G$ zn1JZ3A}SA=dS2}!%5ES;i;CI@ROpphDv|3k@;%O0ut3o>K|xe{lS%El@J^v({x}=P z!FqWo^X$Seznh>CgKxEgc31h3kMF}fDu;ahW=cp9XjpWEs2s-3IUkt88JHQo(&fX? z-=q>HBs>}9IIxvC`9Olvr<9368eUq_zUAlLKJv(g=|alPWVr9(M7$K%PpYLWj=c2K zbxZ2<(w+n zrHK&SCnZAq3x$QN4o7T(rJ!fg(0B@*g~~SuGS8rB^yICY#o_6!%A~{gyn^wPQutfB zF>gtEbF)vAARmS!U6q;PQseAXg-cjv%!po?>eb~Na`uo!_C$&lxB;VNw6o^rM;`I# z<8kM*nyeOvaCYPuz6-j1p&WhgfgWJpqC^=S=Vguif~D)Odc2aI0sq%#fkIRdm+hGX)3n5v3gc+z$|? z_j8YN4V=xHLF9CFg?>s-Xm%6_pw#eQ?D#`j3_cGWW^+k+94uHv0fF_wjavv_w{gq! zS+4LEzU)BV0xJQ&8N$ztS{Aj)A_7wW_^U-Ns%(H`&y0|K$B4jq!8Ktd02%B#|LqdK zqZB!Rx#6-lSjNv-#qWB>_|)eVl~50um~sBmOKKoBXd)c)MxBL2-sE1d;QLe}l}8xB z8dGHk5IJCgT4v-D?i#G=#7ZH~0V)IopDA4bG}uXhOdqA|AO59_VL z>hv>xIkN3Z12YA-Juy+R#huw;3%%APf-Q@~L;1CXEpnjoAwuqq?W>*_DI7!w;_UxUE{2MIs|sqhrx0>DPYo__QrhEISo{T{rEm!gX_! zp6jOb9U88iP;G6j>n1ED#Zlmedk*8s6MphBrMyG@>5F5vfA4nhj-AbM@kx9K1Md`( z*5i+OyiTMw%u96i=!G)UDsXt$Hu>oF((G0#n%(D1TJDK#qR-^)nth=*G$L~%iv!} zhq`V;mKeigBm*Q?{6hLXp@Wo{N9v5R1finTx-^^y(|$pb~YE zjANj~cHKGex^|I%-hQ>0gWZ13f&7de#$D^Fe`fIZ zCnQ5%rU)TOwn#--Aa1llRt`Ep#-ORVo)Ye}dk{v7n)URQqp>p?^`uU@(~43ww%R5* zc}zT)Hv4d2Q44gvOv)pURwh8<_t5D`$w-xZA48nk43vCD(l|0?}&T* z>uk-iWRfG-@0D9q`VEx6_Pxo!a$1F!?dgmUSu|Qm91i!>ByOK2%iCu@?`&kmwWcMn_=4d5xM1 zcmWpJsnR(1zlhwN#x57D3v<~2x6;_P7b9R82jWsg>|{%S2(ujxY^uBG48~jdS!gv! z@A^WxCa*JQgGlQw$- zG({hx=zKNlVB`{=?kOR(l}#)Hv^9om(H1@oeLKtFTy@n2?;A^PV@OeZ%~u68l_G1t z!bE>x(Xt81qyk?dtUkdY(QmGVKHcYS0l6Rn5tDG%_~o;dEDU2M(W38-wf^hM((K3E z?rnQdRkK z!?{A%Dkl!XAcOrDmt6K>IV)9*c=}};*GdZb;XfQu4(ND2BzSHU!oiTL)emW zK_INT4-#ulDYEEza)p&6i#kvgS0am6$gWuAek7(>avPLHis;1sSt969<9%cJsYKWA z7C|#SzSCR`?~i>V1KD)sUn-5`4c6}Da%%@xVjO?c2!?kF+_xNk_G{?)k3Rd=jA(W5O6%Ac z@8t?&Hk%Arg0C`wGSJgy5T9bckiZ9$F+{NlQMG`^2eoo09KmvQ)w8_v*_EZ}s^>(W zDeByFJj68Doa^*69snGc7x6XyU|a1d;7tr&EXpt)hRdLudUV8qwqK5>{|+A3A|D}e z1WM8L;qo37#IA+zPrtZ=cce7Dw2jw_V2XpmGO%Mg>TMeZ1h5196#K%HR3aD=%<%QEIj8a8%G~oM(kFFRfv*8l&_YfH$QlAt-k6z zkT$?P5+FSFDWMY;qsQ|3|K-aQ(t!lSa8Dh-gUHHNqBnmFnIPt|do$wjpnF0=M+la} z`XUt&OE{Z3_C=sxlIbK~HulX>a0bj+*%_uIY!&MYy|5UPa;Z*OtTrimB%mg+QlLYg z08y4Oxhr<7igWc*uQEhr+>f(GnGIpZ$6QnCV{Xw2nk zAIe6+et|ENg1u0wfRuOprHCh?h1B<)EF|l_zS!~Ctpmm~goR}$fsg*<_>Pf_EZZzM z-0~ArKLiyj4YxccGb_chim&4e*bR7{IoKnWfyM+z-&{&lMg0XOHD;6wimJm`ww-GD z>u45f)Pn&yYV4rAhoDZC8vgnyWrG0OFFxnu6%KVSMEq2OIYpa7LWrdPbfh z1)~>pMc{b_n~>Iuz{uoItca(V8-Df`Zz_!0SR{C$B6iKiyn%Hs=<#x_ZkHx5aN%WP zcEQeD?l9IfGSoFqkDyfOvBH}h?K>}+{F89teX%}qw=9(Obh*AfXwIaoIK99eR4CcE zUSWul#zGy_5s+rsg_lMDI6F#FFHWb@c7_ntY?JVd3@%1iFQPJ#c%o!072=eWc3{Vh ziFT`ddyKfB^oia|q~jCAH=v9xMLKp3 z;%nG0$W;UXETk!I4l9bfoOPKrnv7l8+M#0?^8i^EE^}+jc6a0``8elNgJ?P(4_q450t6jKts_KcH_$4lZY^ogbewKkExCdo5GU8`Xa&avHrqrj;_!uW z{bNj$zVp5)cF|QU7X=iYJ4U#Ct{mNb2N*8C>gX9*l# zpI$nMLgLBe=tU^lGw|D(N8TOteac8jd`%asfvk;=nFw+*;e-4GW(hS@|;CyD|?~Ijnbo=ATV8 zdV$tp?hiN$Zk(DboB6aMwI#b8dGrYMy*xU{-%k%#n7Rn@A;E2kh8*!Y*L$37ksf7Uh<+g(oO?!d&-y9Z8KgKdx?uPC$&fgL(7C5 zvFRT8LtAn!)5_RXBghQRgv!tq!ppCp&I48N6nbld|`OXtgx2XB-`zLm&><*k`?H~I`@;Ty=p z!iv|!yd6qXv-(`pu&u2ADjtlb#;I3+fL@*g{RKyIQmUUgC0OpEtKQ*P!DCxHiSBU6 z8V4sGcMn|kI?xF>KXJ@p5_ts}WmunH2VPrc!b?E>!ug34FY*f!b-q{0A+)I;U&T^e6pTj_yezK_=Q7B zqEXVZG!cfzAWAymLRNXZO0Pb5G3QmG-gM2ZeZQMEtKQ1#q@}@QUS9OVky}%<{tjLr z|9^;K+IHLGC*}F@mRWyop${jX{y*GK1>@Bh{P>keu}g|=<oZZq5_u!y7EGrEd(rj%JFCEpeV{iccHKGe$5&IsWRprY;FQ^aDb_?p_IFX?i-b3K4Ssod z+vusimQ`)SUK#v3No{IeS*GE_>1oQWIm1!J!*rTQIB1zvUzVarUs}b^%sBIl-Wf&! z9rYU?;}PJ)FA4&z8TANoZgqJTOBgQNguMtVaKnLt8IxFI*d!1Niz4-fv^@Nn`FgUzBD1*VQ43}&P)5x8b(jDE4GbH@&FEjJr5fMbru+d+B*~Q{k$JvBmF}S_dEeix|>q- z%}T>Pk5imkRS7W4d|+7D*Q6rc40*ej8R94KqGx}@#B9C!k#vrFBkw9*^3YGJDtX1< z)aRBF?yuBveH8mKG+f_^SE%{Bh6jY2aJ?pYnc?v-=6HmF4b_Cb$FcULNu`LZu|9UG zZB-gRc1f?1N@vm}emI89DFd853-m#onQ~USP-xt?ta6_w3{sciaWKA%qr;4wr~_2f zF7Ch{U9^O27+W~#C-c12YjTL%-%Xg42Y^WQAcX%F)i(%cO*eyJ8tBL7P!fTIyLV^a zSj4z8Wjm;5X-qD-kn#rI9TM2Q6v?~^8IZ%*j;M61-IHouODaq<5*@A3;_S?o8&kK# zOI8|FcgPeMfk@NTOL-cuI0dl3l`R)faCy4Gq!vit>Arq2=iy1+c@RD+gCgLR<|39= zwAfL-%(3;{-2CxsvnQDMVhd69%A2^@bs?4%V=%8O+$E9spUPL4Bkw=0hVWg}ToswK zMhg4;dQ~{`1zG5$R;TboRKUVx=5&FNGf6|rdhHFMci>lTt*vp#PX}&xJ+^0%w0|&4 zoIh@aBg7cuRIU@1CY=TGo4|*xPh-odLD$4T=prYTH{r3Eb&_MuZ55Cw2E%(-%lG1I z`O8={FArAQ<;u}mkw@kgHA>Og6`p5HR&a_$ra{s-T!Dg5Ps8g$RHgG+(6S`}enHd3 z(3EK8iCrrVv8n0agqn4LNs0qVFJcl&aql9_T8$OcKsBRKq*g5!HT&vUmDI!|HTg`@ zWd-&ck!8pUF&_~#gaT&b0rdc?;xgN7~)wJAobMVKyBwEsop+M(4ykUNxxp67#~}Bfk?UNF-$l` zq!ZU$f0Tl=W{=605oNuF)gKV48)KMnbzAEq5NoY*WcHR8r>)gt2!1)*PMP1LwuI#4 z)l{dG*lwkBF}d&2*ycWbELEH1vaq-?hFO*gW;s=lS#I8`!7QO>k4BwJ7~gdPIP(RkeF@(niJSBbS zpUo!;%3UU0jXVxd|cY%xr&f&cVv-1`Dtw0o@1x>(m=tU8A zzX_DXhP~^~hLavW@b;R7=$*~J541Q7$ahBjq#v` z(NCRwC>d-)6L#DrWz9}F=U9|ujb05be}Pl=z^a;*PWAVs^Keq+XNKH5(6#l*P193U zPAZne(mY9Su?lzeJ()NA1Xn(EY^%EQiHk<-tjIbFmQ!J-fLFjaZx*FCg35;J#MoI4 z%`@!1qv-CH6V|s+i3}S4UuP6k7I&ea2Sd>fxeE`RS$oB->_9qWCR5p-ur)igWh!f? zQ(#+n&3J-L{2SVqi&eYn#kate`SV?;d|j;CSDtm?Td``7mR{^D8hLTi3u`;;ts9S0 zj&8Y;#fruX{mmow%mYA+@|mpu_TkSC%N*}9Q1s2p={IkNR)xV6P20GMgvtG-;zDFu@& zz2WFYHSS`+VmCOB!#$@7rH0`aMJr!PXR@KFaFtI959d=@XY2~d3_F&Km6%xg$G1}G zec83TTW7h32H}i~&09M4#9jd+#E{Vi>LuX}xCnJ9Kt`<``uCT8By3=v0~;PAR{0Gt zo4m>=ENZAGoOQIMyV<#f28K%o5P}9YU0HjkK?9A$%#rix-c0jge?5!d1(!UQ6Ta-W zk7wAI{r1jx#`u2{W;haSNgs;Ci2x5Y#X7Sm|3Ff#cbf(QFKfg$l#$C05egTjEh8!ycRqXJPp;V-M3Z= zkc+$4)o(>c57%l%hBSbupZK|t)<#Ve4pV~kA{{;5W0o8KavEiLR2u%$BwV%vbqgqn zzhdlxGn+Jspq29_SEqDp|2AwO*bA0HI1M^9jxg7Ib}aSLYP#UcX612bp-`z8inmV} zsGUy%kD&>)Tew47JX*H!WH(I5!J5Lp3D(kOtsI(y-nIx_JNu|icb$!aeKKKRTvwGh zRU+5ji-re0l_JqYw#J%i9GLE?m?w;T`q%yq4$2K?USm(_v_^AB#q6=c-Rh4cLx@h1 zl)Orrtq8W>D|o^KjzN*i;z-thTQi<}vST1`7W9e)i2w(a$irietKf+{rkzTx#Ku0a zTQPIH4_PGP!xkYkm+OQJ!U$bG(Kb!lLx?XvBQ~g3E4YwdD(0uou9(`c@Qc`>-+S^1 z;k>H9C4n)ymj|}BK-YZH5&P2RT^S~&b=tdu31|-q4?tYwk$MOr2rXAS_Jh|}y-u*A zaVs1>{3;k~zzrBoO?tcV{+_1i{r${8Xn21^&(yKr-`YAAtS%oqS~*ISc9-gOObg>a zpE?v&p{ROMai2i`Bc-#x50yDF+Igi>igxZq#S>#mN^Qy*E~drX75I^aCyt}RL|WQ| zNW48^)t@+-z%^`}@yX60fsG<-z)(7l2-o1Y>ErzOoQ|8Uy;aL%W{xH|8MzGPn>!25 z?11eKFXVcB%;)lVG*7U~k>^9e>J`sew`NTQR3p2FGQs-a*gmRa!pSC!xqk!>2QslW*~Iwo&>tCr!-d~rhT z37@2seiA~fi|#*+MIHiMR-*ggfF3B4d-zjlxJ#$KRm=94Xr4#^>2_Yj6Tb0bV_*OS z#=A;u|L=DZs;OYwob}|x%|q-7V?g593XlbyzSrcYg?X8wc}*@I_Z17F6*}R0Es8us zd3@DWczhbpYcanX=QWof3aeA+ur_2xi-)a4@Nb*~K=La7I_p~#)I!06)s{%+keNzi z#raG~q=R)D;N(;gEUCgX?A#h7qr8~RJvZk)SN{_ijb_b!UU~Y(Q(k&4#?=5uhApPI z{&GQ`72i}uFJk1@;jlN>%C^0ASUBO2{lF(E5wHwjaViIz@#(ykqX=Cka_f-aQH__K z)46%$1#6Jm-i4bRZGUP^&oKlAZeh8WEp|1f>{C0n=q<-uy_M)KZ^28pmZAVvK&ro= z`FBkZNPDYRZ&wa19Y6F4N*)YcpsWkA_1arCGy_-AOFSCn)chfZ7iUl_sGJ)Mv#Q$L zbTGAW#T)N?rrI1AId(`xKXgesy5VK8FtZq9fXN__7CAsyif;J5k#mNCud+@IgaL<8 z@lQ%Zd3x1Pso@DbYQpKJ(`wfBl9~%cBB{BxD__i|b2LfJ z?H&D9mAM_4i;hn385vu%~!|44v+Ds{GLCEDIfo2 zaLTtnU*)8l!j1~u!MLlKA47((V~TWo$LPg8MBghZ_Yey2`MGqVA3+Q`i#>;DTv`=D zIt)1H!7G9UJ-em^#c+7CU|eDLrm^kO44isejagBSlKw$|86!r(ISo=Xp`5QcV|Dx` z)$u3a!Shb@r)R$RF%I7-rz>KyKC;0QM3B}6O#oChIM4Aigb;Jn z+=9>5jKH<)w4ilHy-AmrfB##eW0Tlk!i8a^DKU-k`@l{l+(FyS6{sd%c<6G3^fd9_ z5`Y~dn{GzfL03o7Wd{%KV@%|SUqW#~Ou26T{BZb}K7?Gu%FFE5`S<&O+`9fp1%C4E z)PtX_!zLFn5MXhj9R0{J|ERI>T7Dkp>BrMgZ-2jskN%OWMUbomedKEQXN6epB;rx{O+AQH^CX7gq0JRydYcK>Yq zk8O3Bud4#bB~B)^J`Jg`Sf}*@)~9(6MwTn{W$C$`b~qpEv{?>_wxw-9uL?X+Ay>Uj zEqCHGtQR!yB}3TIfuuo83TzrXUV6H{W$>fY`dRCd6XH~|~1 zPv?3B3ZOsHgvy?FOK?^_?_v95J;w|TeE6aNT&1_rI_nl|`B?~zkvI=kdg?4qU>bs2 z1@!n$m_>*BjArKJhwq;XD;%sxM3y37wferKVhNSg7)YyA$&i6iBw2moP7_pJW-|G) zeX&;P!=LtvyG`YxO{#6HVzK!5{|x;ye6f5H z90d21V+t2{Z4V&KO*3LQrBhR@({~8%CXU!CJv@Y&H?fh(G#VGO^EEMc4isiQw(O6Q z>cyAawb~a?6kqnoJQ1uQh}AYhC=JN26-t}hfvD3&IE*VaBWbV^bdEpRL6yd}-IQTd zYFul0i8pQx+l;R@u*g|uuGf-PYKuj&F+OE^RGK?4M#KDx9tsh1WNC**(3JQjqgAW)N zZPb(s;Z0iWO9dek0&oG)&fRQ9zDuA{fKk zi7}{OfueCn(eAhMaX7RG+~GVIl*67&r_5$dM7r;h2^<2Hq@T8jlf76C9YVx8AL^M3 z5p`Wre%vx((f}2Kb_pe~SAji37n3NviR{7g~1n@I4rEF zm!28+(^aVTTq!}a1)O+kk0BLNWucBztPyXsm;VfjD|W(_hHX}&FV2-2ysjAC8Fuj% z-C_=#(}l-_bQ-X_qjGAcc<1F+h4&cxY^@lbgkOBy%^6OCRwYb`7h`5*CZ-xz!#$+c znUmZ@ey~ZdP6SRh1k9wbP@XuIj$lhDS5Cjoh7c8u6V$^gsN`@aPECP{m+0y(dQ2QZ zStj01D&9>i-i>(z!Oz9B8n(bwSY0NBt37IK8bIQzk@BtE(WV zJydm>_0f+hH>IfYVAyoDkfV(Uc}DYAude!lmGwr@i9yi_MGOR$PP+Sls_8-{YJ3Yl z7TE#Y>?y;~uoUQoFt7w8Zw_RPl*EZ~2(1<=faxWQM?$8h)BKM1fn>gtx%kN{r*+7T zM~4^;L?JDRFUKQiIo__o3vwoQ7Buo=`|~2H?t$fK$K$qDigr8!&uJ<+O@$_zP7%c`$x+npJGm-aaZ$!Ub~#PC{YD;CLJ1*>6EP^outh~R(M2wL#&S;(Y>$|xM!|VX zPepJa(L4msG-nJ_*uMAP*(=xOw*PpPn`NgK{Hxbsd$YQE7hbshzdq>O+tepnHQ9#y zZsD6wX_XgmM23)}*aD*~%}AFtIjjjy&@&F-yI0)VMi*PoDIM|=orDirju?NC-=2e=RXRBqh)u*XZ4#+?rdY)&gLk}f<(>+xaa3%DS7o{CqOqYu0r$43*Z z5`ExuI>mRS`FvMTbyc97OfiC3!(bG$0z3^{s};)8Eema{65Vog*4Tlw6lixuZJLnF zeXDt!rOe7)T=c1`gM!|4@hCsBFKgr zg2+xRc<4=#eqD0{AhiLt!ZuR&uwcrbIc~c2`Uh0q2!9ja;D= zZTm;q)>_eRohCh!4#(|%h2!QZDnSv3VKBs5iHr&2*he(ya;p?t zAZkol2M7$axWh#7()?6Jux^$YmLrJVoBC$3R}>M*(D8{`6u}At>801|+R0Sd5Z${d zy{C_q?-`l0}4%q5(QyvBL+Qw|qAI2>Pfin&aBhbvo{%w$I@ z%c9OMs@g^~BB$5aMLgYSg9`xfrw@_Lf(N^3crjv7dq?20Kzm2nJXqzpvGW{Jg5bmo z{U&t}#R7*kqck_m{2X+lV6r_@Tl64IfEh4v=LGQ+%86s@C(~hoVsp>lKZUKP)ANNr zPMc{S;akm1lY_06^tPJ1o!lr%wdv9xqF7ArKHtWsaDcdI_M+s^G=hetyED^rxh)2g zvu2*KuG1PtjXFJ4oKc)q>4=jSS0_%1?X^=&jCB2TKZu}l&PggE=||cl;a;d#(-IYzuqY8|o|Pfa@{u_uwF64j{9Ps+ zgyluLg{iRO^d6`<;To(M%$L9rQ$1F*gmZVw$s|NJoiv;&Zr^DSTzX^+sFA)DoIqI4 z?@hzH9OX?z_nF_DcERYeJ@^cPl{fqSU!UWv*!lF^&ZmS@z0e#iOT&TJuoKKnvwSP# z4(eggw(DWuvI+l|V=Az3T$V0cfjK>7TP6mA&%LJubQXE$`Op|#t--Xs5gu)keARe4 zQal4r)k>t;dLTdJ2W!r_BArCnz4q~{1z|hU@ruK-N%@q`X5{%dZq6~Vn{oYPfi{`` zzC`TzSKT%Itrw_^0yeyKtc*$6;##{?2kn-2XU^))TbM0S+J4~c)K8ZjL{wsekUhAK zgi#xS9JU<150Ae(`U6TJrv3~FARP?cX%RpMhCsumD1;?%dn`=Cw)Snt_4Tv zNuPbkRXvS+veHKncUMrhbkcJj)wl`-o8@Tt?!QUtqXV!z?b3(r!BVul6c9i+c>>7k zb}e^u;zu__XL`iXy87ZrIMhO=(EFw$g>-XjwY_ONQpoep_?>KjxbM(yB0Ol+?VA*ICvD42kBclD_D$nWm|ancHtr=Sg4Z>y;2MSD96cTu#wr$8 z%4U1)lgnf%|3?9!_X{Wn=-Ck?mRU^OayX*!wGLnV%LGSb(Y@l*IW6cFFAWE zE3fOqIOvtP`<2=1Wv2TV{-xJqF~tG_M=Geo(vjLa|Nf~mhu^cR<4n~9K_+MFkq_Td z{a?gyzQFF1RuR~3)(hhUzq9E63`HKE$ch+W=E6A=AO5o|YYeZ=xytCN4Fr z%i$8!?|-8Rtm8G2uN8Lm?f=FU1fVu{_rWUQ@-6s_=dazahH!59F z%kBXt;N;b^*IV08NlWXzVrfJ^afqIni^MKgA~+Znda787RV_Lw~w zH(}$fa2A(b)-Geg&MwKU)l&?GwV8YCucks*-I_~1y5e+exE%Qfl=k42vG~&8Z*k?F2Y_E0PyqX)~78$#&_TePZs#N98%+OcYrQ5ZR=F!C!K#1=V zpfV6qP#KX=eV|oA%!oi05qcw;)L0edcLgl{$)`LzUod)XJv!eshR*Y`bCW|OVRv85 z=Wz!eeQ@b^9Tazk6fCP`>jI9kyqlTzoAxSC|KbJ8yz;)ROgvop(+g`m{VR7=rrQVl z1ncPk@x766puZr8z6SjJBQ1~Wt!(4a@wQcJ96Es)H)rKq!~)}&a*cU{{Ehx~l*peC3C^h2NT0rd-x0b{zo&MNJwQgqv@}cNNG3IVbPle5N z^Uk!{OnPDdmZKP)HFLyW{@9Xc1Y?OFD!lL^Uh>KqA7bd!wc??k5An)h*7hMfT7zjt zNtF-r!9)E%L}cW@MIYi49eDQX@FDKnH~Wp}PvH6Y&ANWL_M1BAOhSf7F)Rl+~MEBsxK-v7k5QMBaXk4p6Z$6?oR8#Qvn)u!gjv=dvRgFx=8 zt$$j)p_(ORB5XzOV8vMpW-=x=hhL!wThmFtLhUcOz(SaBTje#um(wlSdVfirc^i@V7#oZJ- zMvks>Wt0{Hbb!VM0az66eV)hMc`uJR|FW6gI9_egFC&dD5FMwpSkM+a-%x$AnAaRNn)_u(%3-j zI9La|^Pf8zViUlzq0nMNu)$93MBbD3?v|6ZVt3`cGp?H^P})gqylgGD)+C_;Oh{;8 z3ZXL!o-}2c(hL{UmQdOWe?oy!(vE=yG7xI_ec$)q+g+WceUg2xnPK3x|K9uF`~JM| z&+kLZ0`@Xr*)V{ZNq{*7Qcu#iJ*H{JWR`7iWDKyw=i*#6tPI4gTquDn=|7mF zz7p&wt)4oy1QYfu1|ESx(wCVAq%w7=^0J+RS#<{e&9H3z_#qQ2md)b|;$0=2SD=}Jm zSnmSO0-l51XAYCfxF6Kz6`T%j2}CR&k6zOg`zql$tGoTeu8aGYJd~3*tRWdXEg3or z!1VeNHtCE!cZQjI`J#gncgB{>o>ocd|H8KdaHe9>O?}}$>CXrtZhRWDjTv)rPntU! z^g_Rn{f*;|Hx+cW@ezM<6U`ofn&#RWf0h5&XHzM!Ij;R~|F z;J+_!4A$5$%+9T+E_^u%M_{3WFFzh9Xw>kWd2zwnrS%PC)Q?maM00r+OANxH(-k~) zdahFFG;NL93v^6f9521I;;#xy~Cscew-k{QMWk5%6Uk) zW>9k#)z(YCengb;@LYjTxSjaDS~7ESnnXvxC%;6E0L9A{_M=i#EHc??|Gb8p+E5X2 zRQKt@5JDI-WWE)6-DB3K}_LzvVyN|oX?)J_MyY-|1wf=OXwei<(s;2Ha^1Cme-uUT=Ud&Llp}jbfg||EaXDUZ=ZPx(_AJ5@QB8E0Q>y2J$qiTNjMw>vW z;1pVTvzwr@M0IscqwQItF8*OpoVr9Hgm2V%iJ}5@?eSB90J(2n0B6S*!1cCN%J9o- zOJ$4VCw8FY%W=my-wqWyG1FNVIk6?{lnK_kL@wlHi(LgJ|9a4|q#4wS@*;{w6O6|( z4@;_|cEn0*b%X28OPQ*e1CQxhn2YF$cgvXTL3~eE;GO%_~$_My=%@} z-x&=G|AEJ1$f{EG3a^ z%m%0@o;lK#G|WbiMhggQ%@Ge1%Lfz3TUK$Kvg0{MM{Rt;_u`VjE8CaJ|&8l=H ze{z$)kz zQl71f83VJmA@6P+{Cpi|e9EGG`HVI9ltteVy=lD78?G+uQ=$3c+xGJ;KFsSX>ywb} z!_OLp<_rm(S~uLKVqf6Af}F-McL7TF=yb=)o^;6opDf(GC{Gbf$AmR2I!48YwF$8o zL3m(e1iet}Gw+4;_;I69(93S0`Ayy<#)ih@Hrc{jen9MRSuTi#_*(jjnJ#FdVov}q z5IqL}TKvGaoS+GBVnZ(b+c(kg*KHbN3&Ym5i9-AoQA+oQ@8@ARpBk#P?bS9Nv;kEkZ#1#!3=PNPpkpW+2; z%+Y#s!RqZZMa|}MC?0n5(?D_RlSvq*BZd5k68RQZqLh2De>n0A_9FsopP1WXK9 z83iW>yW~xkYH6I(#E4LG-A<|R?3?+Nn7Syjlcr(o%pfV)K0tI5_E~5qh#WW#%FEQO z0#!Dn?kho9K`dT5RJBX!nO)9X#TnIc-o%6#Z~t5R<H@SDtsOe86Otx&uj2R$UDH9uW!5bnjPh(c z>=$$pli?HaCvnJkAqJ=Ns8!MxI*uCblIB64X=?C=CS~96;b?tM?5+u{YFf4(D%)0U zXZ+s`R@L4jw7XfF+Of2<4SAb(XJhPc=W6h1^1ET+He+d~iEIcC;mf<<$*R`VXpxa_ zmSz>$!E|NYX{U40s+l)R%u+WCZI$bLr(BM-t|#9+8F0hkJsw{jpHIbO>M*QZM{CJv zzOj9#S}0nLrCz#P86dw=8G-G}9;9sykhbavrCGG9g~n2$+S2keFjaONFKhJWEv<=Vq?%94hQL&wZ6(%Rtzp@%nm2}N%jqb_jedOYf4jB za_&U+#O8fmPb_d~>KFafM*3y_o|UMG-L2VTWYV&9#$^MhY4bV2$yFuQULE z24!3k8dTvtQP3Pf)h04fumCo^?juN_3FiVq9014PnhU?8p4$33Nl7OB+0n10leJXv zN4#l>)NRehQA{b|w>8(aUp}#!NOb;@Rb&UaSH1Z+ywe7|o9!5*qRj8-wFg8Srftc7akTF*>0=5T_2i@fyQJ z+>e)0^W!Z$sNlzo9a$J7m;87$!g_J7SDy&L9z`=&!s0AeIc$1*=bzZEkh^RI12RnN3DXX9dbdg*T_9^G2PdNmrb#Uva(qZqi@HM}D^Yzl# z{PrU!$CPDqcXJG;mZt`&HLQX>(1d*T@srL~K)xDQsq}9`zPjXFUu~H2z`nyOrR2g< z4&jQ&O}u`kj4@p*Qi)VNwcPdP%(OB@>OS~ zx=^>4dyW~uUMhvp-VBK9_l;~6^)0QljqLHN0~ye9>r}a?hjmh}&{bR~K2{k9>=Z1$ zlz>@9bTo*U8csM=+J-7+tzwUxvE>8b`)DszQ7vgzqzWIa5>++|YbGE~`(#o_8ynLL zxjeJTV!NXEMhVp-R5eP_c`ns zO~Pb~6e5Od#3Bi|K_e+9>#Ak;JpI+VP`9}uC4Dv&1j=|-wEEcZoG&%ooAd$9TA?w( zuv$4OAFlh6U$1KroOnlZ$d@xN`LaiGcx?NIwcYMY$(LcoHyS~%h)|=@~~1R=dlJ&Zf)gD z$IDy@q^wE-W*0&`N0&n8*5deeZE?yAjCaiIx5QnoV{zM+KA z8(MVt!UYdDObXMOg7JbHC_?g^zU~a6Z_8 zh1Ki=UJKz-3JlrlytCMWHXUFlH7oY4(wkUQRnBT+4aO;tl3b!482fP;_k>_jq`lP< zcgC*jwZ5$%)ZD(UADU#+ioG2M?p+RPiJ&rg7j?J}t$i?K!=LtDqqZW92naR#p#uDjH^R&kW=WY|#UlT$cV$(BH0``U;URTl3$-qD zn9AkZHXGA(70ayXRy?r!_s;2MBOO~u(UcT@IVt*R8q(qp>KDbt=!cHIW+n|$3ALtn zW8|XohqmUJC4Tiwul=>WN;Qn@pFIh#i=oTjL9o9vat7g7!U2I`Dl$^^gxy(elb6hb z9+Xsu5Cg89IYT&Bp|-LEGi-olvVt)>UF$pN{Tk)Mv9rUZ+jq{XKp3A<#-m&mxMP!w zX`xcC?ajd80a51S+d#vbWhlXeuWp~=EpI8as>1$aGBMiLk6G9FTc(yg>pUg|>&dgu zC0aoMOE)kH^@5DQViiPkhE@)GYuWbqu}jD9Ip_DO95lp0Qci~0Mo|E$6qmOZ0J!np zp*#PT$IrGu%)4CxJO{6d-?Wm3wkIgB<*~JAPYQU!wH`g(WC(Gj0EG>pWWR1%ha7oz z@X1dV3 zM}iJT@Sdac;=QR?IKp5e`&eW*E?;yokQdBgh+N$H(7a%)y7zp!b7&TK>)Bt`a7ZCh z0qMzZ^6al+inGYGr^+CV(t1W2E)ybZxX+K5#=0&_e1nqvMAcze@(>+0XwQP>y|ab>d$d zu;Dq+D|}MPWsAV6?t;;U6b(>#t&$}gTF`)t5z~uVLRKv?`6`=+k!M1NyZxsiIhinD zAi1krg5+e&O-%mG9EID5R*pbjG}hY`Y|Ir@7^{*;mbR9=@IS6>$Uy}~>~Qd@rSdhO|PP zgq^7zh$5?u)^&^~_>Euwpa)H$g0RpXYSfgprvrx`&7y_v5{P4UeBD6sUh`+aGRwtj zdE%k>0-}^LD$SalJOfeR_s}W06C#48YvND@m1SL6;wmr>%$m3YX|k3i_9q^FU#uaH ziCyiCU%N}=cmDbR)5~r-wh#-gj>R(Ni*1{nG#~=g_t7(!=j29;n!eEKK^nmkyMU?d zz-VCVI&#tZ)rycO@Akq3H+rNA!98m+P-Kurmbh7^`UD&emSeV!c+CaBVR4m<&ORzod zg$+G0hB9bF*pD~%`n7Jugx9KxB?pHLDn692#8F8J z(Q@0!44*V0OTPG%Mw*IXw~b(h7#j)<6Ur!!MY?78d(iZ5o91+bER-Emvc2GafED@4 z=K?TkKiF^soC37*V1GhIBT<$af#7|%c`E54V{W|A{QZMNgG0jM%>Fm<;|_LeWkH)R zH>nx1jToQ$buV0@>a|nkia<-ikfm}+%Y$2#Sr~r=5R{BPLd?=RK@KuKYKdL98+JXh zt7cR95WpS}jm=psK?o-U7?4}TC#2-(1&N~P-X<}Sn4)AV~ql{F}>sGNe1!! z8pi1s#(YRh*@JMqKznc22>dI=p~oA09yoMCOWrK#qp?^}^PhUJ7p_!|;j1M(;y|Uz zmX=%@&1-!A@h|b5MzHTYMk7Xb4AtvXdcMk4kb*o{DwM#qMQAK1av~{110aPk)yu53 zNB;!h+_-5@%#EZ}?ly5b8$!H8u64`%asF&mGG92Wf-O$aho-YhLA@gGcHsVkH;(k1 zh+nB;B}=fW+03OamxQr*ejFU8V3_6#qs4eN)(gYL_uh+9V>r$hUPnH1`a2Q>gt8P^WoVf9}!9q;thg9N72@J0Uq2F4Y8uTDoI5LD2uwvQKYpQ^l`jNc3oD--hzPPYAfc5oHR?EF z6g-@^Hh@b7OB;(*Em^A<)uL(ux8Ii*ue1Vvo|Zah)}Dk0fKs!(ek2{*lOMSMiwc@0 zx$AkYp4|0ZH}0B}$qOp+chW3r8Ph@B)LLRcLLYFr9d>U$vEM1^JB+;E@1f?Q_U&1e{wHY5VB0t_T02pq`TQZ^3qu1rQlzga> zab045s4?m5cm%~Ei6*Q#6uQ-$^fgB7`;qe_ZevpIdh&x zT+l~_b4uAj$R17oQ|N;-&=T(BS4+Kd>lF&Vm#k9iVX#EM`&X~gdMy3iKk_A7`OGaG z`)J=NEs?uvr$u3X)N>inaNN`zdz+A;ZMEoARtfuqkI+5G+u4B7oNSe*yj@idi;88K z>~Iaq0_Lml(Z}kEpFYQwc`fnNXW8ub62dY#XFb%^wgFrUTAl4i3f3V63S(*{hCb!E z>uLb6c>v5cFs7HW z)VSc=)e(UUHrP)w={CLrm1x`PzSE07Q4K@4)hF$uZO6_xAdeJ#--h_q-nWjQQ$<$6 z5bAWQz)Tj%H1b7c(36&?PZSK*U)Yhp8~=Z%Pus38qiho6Iop{o>OiHqG@ENL>0!sN zI$8^e4^wW`AkR_`oPLRc(YS`*1NJG$JoYBa+&*9n%3kFyD(ZH7mml!IR+*D?*{Y-U zv(ngFu=PZKMB0l%Qb|TSUL)jFsgTt^!j5IylEC;I*Bn1jhc-|1X&}NS=+8Q}QLDI6 z7Dno^tH_;42aS5_u??DHBzu(_+@6f6uXyM?4J>QVS1mgfri0!&JXS|?-xo198W|rg zooYnu95zTm)MK2AQh?CpY4$<)WuC!wyg29D0mjgrEWeYJdWl9Fkuph5@q zgIhnv?vs=Zs;SH%**+(a@1e9$IJ6^am5=C&cN0z+u)|Hfn?z6%IHFTBbJc@AjaD=) z0L=ibXSg?V2=?X>_JVyjXIi{;PSJu>X(%$oDea!N>MOZW(knl4gZ~^G* z?Qs60+FCccTH_}%?kI@Rug)$L4vDB<^PzgJ2yIiRiRQwa#~)>f%L6YXQ0ak}xYvx_ z5A@DyXzai)jT>X*MQV4DXK$nw5xe4J4~PQX!L!d|wWLx~ZfK9WnI9b<43Uiwl9B29 z(|_5}>{{aS?+|V3iN_z(z`L@SW5fF*`_iY>%Zv}1FLEdP*o&1T7%@`;Fm zB`OT|L8|4Tn_6?@T55OY)A-mkm5OIt4p3mtjYd5BQdXsRi65Q5zK?i&4+`355WbExJ8R2UYdf%2xI_q&go zJNue%M;3?r4D_dN2B-=l&Pil=NQr6ZhTCGiS2zex-bvoq&bh zvuW97BF7Gp1Hl|Zni4QqTMMC0<7`41f0XN1a~8CEq;^Bud?tb-{(Je&0D1t`8>EpQ zU?X%?t6Om^QT_RJ(_0JQ6g+?AdQQm=#UAU7Jkl`f&i^C=b9~bE5p5hTZkUE7bpvzm z976GaM2Hy-fXq-Pe7hW_t80aMhCK}?1FH8(AW>ltT4jaNE(C5|hIee?ftf~j*a&5~ zD1{!4lUo)-j}B!`SDY*cR(RA8yo_owLM|g(9u*c``?TF)k+^O#>Uc)b-JnM&=bwxlMm#a%x1YxL2iZ?kHNj=tNsm{<2JLu- zF88EE+eg7=VC`b|(;A?+Cs#B_imj7xdf6s1EXm6;{aFNEU;Dq^!D>HE+Q0_{W6dVD#>E&D_4rv5v{Lm1{KT;DG?(_nUQSd zvyZ*lhPH-KI%ydQ7C=n55-5cfi&;2(^Bv6e_(FSDw6ZB&uKvMBm7ijoi@3Lgo7oXQ zo3Q^8_%2lQ55RYE(c@gO6jVy~G*R+w+Y6d~vgqaQqHEy!K-c*-6Hbjh-N2J4zyDbo zOG3_A5e$k(mPULO@??9*)kNI)(yu}i==ygDcI}zBmNls#P_u>b(z}ESukXBP(Y^{3 zZGe6izDc3NYLdM0izOEy41%k|^cJbE-gn36c;;N=)}=n7&*1pzE)2EeQjk4QjEfhI zU2_pZZG9ra{mDY>6GI8sQZ%k+MKZxHH6!k&zbxZ=jtp$1lX2pbg>2ijzt*yL!5)g_{c5SmJ{hXt@Bv0@JYL~ zNZt{5_=?{hFgk}^#+kZ9bJ^6L^rQC%`YyfjvH|)kc5*j+`@CPz+;rK7i^xz0qOaH; zzGgC}DMLA@ffR!;W_MD-*ewJD;x>q7LLJ&nf(xf6_uCP8i-3PoUis?R5) zjdO}l)3gkx1qs~_ol%$Mv*4_7>;;Sd*Xoci9UnIkyT{MDJMdxv3j@A-ZLu*z3`iCl7kbCDF* zzWO1NEV`0u-U*8ZX=q2ZtWJS+R~5qLxwL#2-V|XEw(^ujIH|Heb{Go?*C#@VBrk$k zRZn2D`DDtEcPp4p8mLc1Ly4hdtzn8*{)pE%FpEXZ&HR?UW+;Q; z98J&k2Wd#raQf+ho#}TAPO?sc{gKl2{R%G+0?$!SZt@O3>8&VV0n>@1YNzzpTdxV# zj~BOn?1dl;h0RFuj=kb{_yq_;I34g)D=hEI@*j`)d%&Fc+!{B_~hb4LCk4P zyNarMNH#S3>g(q}#TN|-U29bz;pH^T_A9;XLv=n_j%sT`>uY$(3j8lN z*wxji9$O6BRgN5}gCkl_-8Ma^UJ#P$dJ7`PTf@DfPf+X7TjyB^X;m7Rjk|h?7m^rS zDn%R$dLIf{Oq*;tx`5mw&OcmXtB5&X`AfSR;ZV7BW5lAJo?|cwt8;*rg9l(Q0Pf^0 zp}d{QxhO3h(OUr)ZVXI+$k#NzY*9=vj_PHL)?79%IW5Lr6w@_>u9lZnRi0%}(J>=< zzP+*#T>d^;BzIMOU?`jtm42U-1}N3p4n9evgDfsINIb0RnXEvjSRK(Gb!N{k24>^0 zA?!}aL=P3dJgdaLl4QNH5pW@mh=V^{41MdTjENIsp{3BbepcnjazGau0rQ98MP65O zq8!E&eNif^KWU1N@eKh%7bl#9Fdfg@iFzj0fP0AgR|a|WmQTib7UW!97UZ6r5Lpo4 zBek-8vZh%w3bKYMQVUi+8O8K#nUcWq(FZY08dOpO^r0A@^&(t4C8Bwd#H}en5U~e` zjK%ys6=^0bM-w4u%E=PC=qe#%rO-uJOCn~uB4&9+%%UP@?PHMdLg=TfZ7oM$!uSf| zp1bV03{PfELl2UNP~zrw5I}{#-4#VseEorPjd+NL;g^X&xh)^$z`?o{7_-!2Rr6A` z($PE1F12@(1mMsGeNy5TP8XS-Z&h(ST!Vl3)zB02hu>NJ&mxlxylQ?eI6oXFu3|1; z3VoO&s{>IM5CbJk#7Kc`Pfi`m8!YHYBQkVYRpm-P0ir0T#g0{G6H}P~YMU zyTf-gbqZCpNzwCZgGY1ONXecQEV5ltA5Bxq#4E72QfL=bKI5R_pc2 zKl?y~@QII-pPY60VG%y*;o*}z_smvT-?fh>QEFi&Kz)K@5^{-6g@1I}rl+joXQEeOs^8AxHh1?gAV@Gob(urPjM| zA%}dS_3j-x;KYPnutj-fK|JWYDO#oBr*$w*UMvnAIAzP9+lbI;6xVfS91?>k&R%Cn ztSdwY3Nc<3A&kh|FFbU;ouM!rD?w{qRJph%bg+Z>XfK2g`U({)=XnqaiId6%x%XKk zkBEe-|HV=1PI7SpG9cGqKDnNvT_KrQBA;=bZ;sfLK#&^OX*t~MxoLwT4s5(UtxWK3 zJeXC`AjBx9RYjRyo<8}a%t{6(>Nsbv*o)OIgUATTv}|s_--AM=Eql(ZfBvw6H$3aw zK722Lro=RFn93<6=SaqD1)Zepkn>2KO`s~J<7fGSyQJf1)2;6!xTjx_Fz#t~#uP%Y zFCl7@shUhY8wb?Y5UP7X6w~j4pA<7jUb7?S8fbp1#C3z-6>M!Soz|>zk=%y5V`Noy z6w|tZRYmjDWHA4ZO*R`urt@Tz=X6733D%W6C!=4OE$&+0bJwjcEyKe{B^EsQz_B-< zPTu}Z%Teo8V1bA4eCfI;rMV^3O=NW2e>y*b(ZfIZkfle#60dFG%;XI>;MMLDnIHC_)^}9$Zxzm zxh!KxhdJV5bnYqa8Q~D?*-PXzONZId!T@e8iw}?foHlPJA8M>(=#AUth%sk0U2%1rGODH3#Mb&!*-z8?5G#W3t)f+> z{i3Q=o2IH#kJWxIfC-rnX0JTlZ}i{f@`DzGN@k0pT?^vLB;{{#JsiCh+O?3oJzQ!H z&GPIk3Lj$dWQ*d5VDe$Za?^@oiE11DLz;nT8POJ?H(nG&wc3=zWn;yd{g||Y)WsO) z_BxnSdV|lS5;qtoR-r1-=(c%?V0EoEQ1!v#d^$}As3<JWi5rHH(> zJ9>Y+CzWG=`@p+!nd>NuauqVy%wwWqGn#dPA)9Q>B8sz`1<6*`S|V;o4XV=;B|~$V zVpfO`mA&@#)KZ)Cm_5YI5G4baS5D6CW103Dlm(^~dhTr~sUfN?R}4M(4j-B&Y5-uL z`8k+4#!2%8ZXMpzeCSv+&$oY2`euf;@M8x=bqj;D2+)!lwMD_yW)$_1#5 z<;Tu%RSjK950^scALZQM?`*=*L7HX2#X}RY%uTjB4CxP|O_&+PfQ(8u2?e^8{sZzI zTHc_##Tto^vWDbvznY;>wrL>riP0~C4z)mmh8{cc_nQ7|I;p;QGM4tT6+C6R6qmAm@;iu>rLR_!3%A%sD);Z@+yAUzG4x{i zxC68?)^YnQb)&ENqpFCRZv1wU%f5(^`3g5m@v`%N?uJY44CSCQM3uSaaf~foS$Gt~ zOenPdx4&<9xfN#lY+BKA$_zu~N0nJth5GW74$ib$Ia(zG%iVrhyJGUB@@oNhA%@a# zio3AVw(ugb+?_}pcjQK0o^v_>u)eL=$v^m}cS@}vJVViq;F=X$KX{fx9L;fmxyR5D zis0?+uK6}Ro5dckNbW;Z2$r1eu#Dz%mKd5pizho^03BLZcnR8YF|_v`k^Cry_P$*| z|6w_q50;>@s?r{0>PDJutsm3Ite$yh)ImKmVXX62#}}9+>sx z`63CjtRe}rcEFnk*;A1QskoDm{s!TpU#qywK)?4c552yo#?Bn*7qL!OjOS-l{&-%H ztP6&1vCiHc=x003gW8hAogUngs3_!nlJCx!e(|TCi$R>z(Uj*5{)b0Xl0E6>V~lr~ zN&!*mv&R0qd*LMlQ{rE6N@NVHP;jJ=t^=?2%i$%0no0rjX$I~LX@EmzdY+!K*a7tTKKi7fLzx&-`+;t0QCtKbl*$MI1t7^If*^$p_WWRS#$;Cm zz2r0S2bdX0HDHwMri-;ZH~&t%p}K}*nO8MI!=Ok!>7$MA3!;iJ)$rA-$mw7-anrv? zgt{eJe`)v>^(JyF7Rn^I4nO8+BcMw1$z}MVaH=(F0|{Iy{8%gHd424ts$;>L`mum1$y#;y4aEn9;g;Roy{SZz#|4G^yV9*KL{j1P^r-esr5psDm6W3615T zi74q7GvX|0m1Xg;hwqa6s6S`PSMVjLIHKwWuSieIU?x=Ts`j+DaVD+D&t z#CpjXP6**8pL+HT6fhCP!C;o@bOCtq^WWp4VvbGpyF89OL7<7wzNc(w;u3*}OEyys zjmX-&v9^x#B;G6NFv-n&M0j^ zm8e8aMSnFa(LtL@{8#bY;|!IUy5x%tl}L;T4=PcvB%_y~duL07~9{iVT!AD^Ze# z(A~3Cu`le znZhzlt^2N|)YTnvlYeH_LOxp6$j7FjnXzsxtk4V1^b8sg&6FOeNz7iX8;dfm4&Tzj zB2b!s!Q5s?j71sdv)O!R2>hOgV}AGWg<2`}?i*0yGnzLzyQGzsNl29>`NrXlnK$yl zIcg~riFAH31fF-(YwC>9w7~nVFo8L(r>BXh!i1sVskq7Ec_5dRyt8<8?&?1H3VRM! zH{mW_6j5jjdtu9T+Y8|5(Sc&kg;+O+xVugf1NYN_uzQfD19tPN5%yW8{D#+HXiDOG zFww0V7-7CP4Kcz2&Xyi*#-#!nTyMYTj0Eo?DUHgLsNj_fH_lV7Av`~--KY|X5=!m@&AqR zPA06A9s9~n%sp0Pj_OK2sriaY_=TNU0F>y3I~+1zhYA>=;%(wOOnPR*!azSgXUajG zb}?}(g*WVAl3xsOxFxA344Q{x<@-!kWHgIhB?8}sSvNCe5ISY104obt5JGInf5ZpC zdIc83$Nw+WiA*{`$uL@Ii+(0Ri<)pGEXN6R9ze(dtbB zgautSAcdbB#sVDbXislFNnpIRMbc&7dFmKhVCKKPz#}jl%5xl;?N>uj_%TKG{*}tC zTmK@D7^b|yp>cmCWOH8m40JAHR)Q%^1WPe_Mh9_QRE$pu%o(qq$eHgcExOC#Py@(E3vM^ha;yHA1>$m=cJ3?pVs>j=}oO+a;#B5dZEk<)%sCbx4z9Y7(OW zoai*TR!`rm+3D1`m@*8sz9mEbf240wjKS@_^2pelmsH zeK&YzYISAJEj=-q(DJ^Wc!DKXW0-P)rkttFgkyWUxFY%hL5$G)nbV3Qc~43M-XwA$ ztLY=;|KREvoa`zkMW%joO$P&(HlNG+w^^EXOCrc|jn&-Pq}N?W!+!Rv<+FbHv8Lns+MI1Bj~NSQKH`SkC$`dUdDG`Y`ZxA7WLOeWRk6wHT)2nv!4H5kj;hlm#1`+W{u_{njVNP zae`bE7)>yPSZP$vAh~tv*r9%Vr7_~+VrtGo#`O8Fa*%OPfeLn$v(ciDAeye`>c$5F z34n6EgPrK;M%I`Uy>Ngd{EF?iYjD@`t_q<|Gtmwf zu0641YPa5CN6db@)fVrZZ2!B*89rW(r-7?`tnjh2Kc3Db+ib>g?Tf|3FTCw-z>%)J z{r1WCBTtg${iE!qZ!K83sB3r2ac}js9M{s)@|i?N-@5eNe`@*J(w!gxi_#H$L!5)? zSZO!>ihSPfe7m^T^(NpNT{{@yi>AmhJj`QeEp4bBS za9@4Ri^|NM^!8%`jvh>v+QF5HJ;Cpdw$71-*xzIoL%sG{iU|rx? z49x^M+^4cmB!(%q^kc6kuP*t1Kie>uU(wBqM7*1&Gh+2+O#un&^7i_mXnxU&gb{WC z3@E20v{Y8rDY?dZds4z2`GLInN>#!`;IB1VMsnrcX3nX{`M8{WY6ak8Zl6E zrO@+RnD}tMB7i*+p-w35y~;ebrDj(`cM>9V9OFzbNi3o?F^*uq$e%f8G7XWpn7K5R zgGMF)$J^Bh$x$75+dBdbB$jl7fRI3P6mt@*l};dOR|?2NA3>O}LJA^w%BQ*A*}Kv0 z?JPU9oCGMb%fTwgK`zys6_7EJaK%+fiLp(p zFv{zGA2YK%x6?c5`0qYu-n{p^Uw6O$_%*Dxue@hc(F&|kH1LTma!0v2=On0ByEW(J z7!Xb%*TVYtOphBzjZHK8$kOUT_+B#3%H422ul7pvY*6Yv{AsHWtv+?WJoox{%b+nu z@+4a&Hlfg~?0VSLUcOj1@KhCm5#sqgTh-NGUbv&o-TKj80lr6C^4e>p=i@o_AU?h_ zeoW2~VC~8h>QW9~5+Crz2gJxsm^8J^u4P|qX_sw==stcLWDtB5nGRS-_o0+0_CrE~ zi2?PhLWi*`B}DPit4Bm$ZWd?dGXtt5wc*s-xgR=tb*w_Xx7d>8!c=@c3*6 zjPX#PxQIdwTKJxkRF&)WKJo%6T`Do&8+JW#;(Gg4m*Bz4x|0*W=_BZyW*kyss>~=Y zk9CUp`#sZ{*~1{nn(WrfA5TNoRLw5?rmA#n_2FTNT%$Jc{4~jD+z-9;l=hZA=}qxD z0ImmsMc;vm*esgfkYbOpVH89Bfwnwg z2=)({ylF9!pF#-88cQb{l^zmN>8nUlY3;l#2vO-oLUu-_XU11Z5Fa8YjSve339(=u zKDrp9Ifi{Bz(18@T4;B)N4=3Lb9}sHO~0dI_!E{FJP!XF(`~;45!0xG3^b~6e`97yFVd7vcAX$J>FS#-RJ6!G$inBE znk)(3>8(eACSC_YS{Z9f;JL#ikj$mmYD_j@Gz{tEb4Xr~6DT}@%wB09JG9XH) z=@23c6rIchNvPqlj?CpwnlMV_l~*_%&Lfi;H7OxAI0su?=rc zb2J7eJiLX;Xj4=3f9a;##dJ1xPsR>Fr#g(S&P`;B6E-oc_&Q>7eKzwgZ23OXsAN_2 zMm@ou*;`*d3!0d-N2L3UkfO`cPl1bNZv)TK>!XH)4MT0msBJhjwe-$4(jD=$xgSB_ z!iWBO>r>nvLA-qDN$n@GNK-5nZ&>b?C;qR!3crywKBcHvZ4ln<-HE^adfT{!DbSGD z1Xjj2&Aom6;gv)D8M#@!WUuV30w8H#N9+FSy!os7Q#V;Cn)z^#@_)q)z_XWE0bUaK zFic(apFLG9Cr<*$&mG97;COPo#XdNmPq!aYo>h^X2+x}bY}jn^-!K37H@f*9_L4sU z>>hp_qDhV=V6h;W6#3`zd-sMQ`vEnpm#=n=y*%F3w(qp+Ep7X)qjhxOdC_Cz2gk;T zW8;}sPb60OC9^J!G;edUXwtqBI!Kcm!4P>I^COhemWE0*y2vr>>9Xux+E&JQSoM7jvWH`E6vHeJKu5`-V1`6fbs&WQ$^N^IH zG%Zw-A0jo{428P}S6s|v6)R7?BdG)difBvCfw5=8AMLn5Ch3Ez`A^K37s#R2;s(j* z5Ysxi1JGXV!w8fc4v&ve)LNPz!g+f4&MsE}(s%9(Clf&JLr!TBoVen5;UoFUd0&@H zQMzPMS#&8YVzzM@k9uoPYkTBU=*#=coYpps4<-Z!@{}%}sz>m@zrpJW{1FpH7B|8Et|t97JLM5_C$#%Q5-U5q zapbOBC3U^Dq>J!+6?^d|Gvk$C4Z)%gFSw~4+xtOLSvv2it0q{4y{Rm{Z&50HSV%Xk zKvAJZ8`Tnh#WY;W9xG;F0~$}C3YP0?$Hut<%8bv$aFc+;e{8P=T9cTfh}_IO;FyrC zApk<8NIBG5oh0-tt$>BQWcyXEBzU~IJe;snJv@}psXJPvSS9Lb3cmxm4x@F-ZB6+6 zwAEK&N3zw~z`rlzxeus#F2MX?5SR&Mvji0k-rPu(0Lxf>W1h>#3DWAi(qhn`)n8h5 zo&ws}S;B(RruDH@PrgM6+pTYsr*kcai5J1S4z3UEUNNZd6_FR1Q6()U2t^Y7iP|SN zBe_3ut-2i$k{k0Bct6!3?h8v~YNhEwx|8r;ZuE5z*N&Ew1pZC@GAXkWNdM6{mcY$A z$+WEXm%Nt86S9J;yoi{xh6v>E|Dv5z!5~LgiddEZ*HX4FkBSLU%X(71fKOltQ z62*LH2yW{PhtL^jvZQQ|HtLvSGb<&cc@o@RUq>Spk8bYwU32Oqx|&xvqQ1(hz*-mH%NgSR^OV%Di&QsT&3flO|8Wzw@TU^Kv&Y z@Y^N?e6Vd#S5qF_WfK6Uy{O_K%BRo)4W{a663LchB?U%T-jPBilOXrH>QKVukK)u= zfd41xAL@${et}(hl|(*%@7`W;@~~?T;2AcxPd*$1#v@RzkM#KqCO5VLXcW@1L@kP| zeR2vFw(0o$WwsYsmJT$(m}K{}8lu5kbrri~>J?K*AYZKvc2%)~Ep?ckfE@?xHSpw_ zm^6mLz2$^e^wA@Z_vPfXxyf>jrgqjbFiKk5SwBT%FQ^4%OR@J?(Vtwms#e3^=!cNy zCe2C(@hRB`@O1w%k!m4EuNy^!gHNgqH??5V93=cXQFF+6JKl*i3hnwThR%$pVXJ)R z1Da&~IkKS{nz1r6gs?mIqc2-!Wo-;9Sr?ITm!4Rnyf>7nvnqtg50k7B3i4c-bHJV@ zj7o2U+YCI3@&&J%_Anmn#Gvm#E=$2_ zq_*&MVJh)-B4tf{`ux{u7&tr*<2c1(A6fgu_l=m7C-sVtBIe*snFKdhl|VWe$i=1u zS=SH`wxD46a&}?z*_E`!3}Ea!B;?2@c0YNxE0WnkMAO-yM8?_^X~>wWQ&b8vvIVFs zYACiD9_ihECln!j=fmy5{T1V4QX!M!5^5B)s0rnec?xb_RO57Iw+2+2&}+5i#%<}2 zTBS0u297e@vFdlTBQaZo2TpA~ z#RI48ABlYoeTDe92<{OI*juMai@$|I&x=`+W)!$Mq(o4E4^4$4n;NM}Xpi==Gkx)ts^At?E&aE%RZauol5|NbBZ9Y}q@7@jf_sQgAz$bg= z#81cmD|ewh50nc51!Jz06j#TRqHbB>=t#V)r6mVdv+ur@O++*cydxLLNpskF=RJtBK5!~q4ne`;C0^g?i-PD z=3clmoKmrM+YQ@xZDZS7K6gdCR<|6yGFp|UcF&IoZNq43_q?E2Y|A@Yo4p|L7IgPQ zXV`JGLXUb=u;!+N!EyP8J>TXL;7yAU!^halZ<{wSS|JXJHX-jF6ngOZuU`tP3m9i} z(4$f_v+E<^sB2|*W#WBxys+Q$76E`)!|}|r4_6BG?wJ_pnRAI z&Dr&hJ<}z_teQ^y^6*tO=Tp4y6vR6?U-HPi`3H6iICvku?vy&`JPjL;pW;i7z0(#p zr*zo!quKnbz>&?iGR?!L(?J3*T1q+pX6d2g_=O_GD=}!%>l%*P>s&smM%=u|46N8M z^5$-cmKGm967qDIoe#D$_IQF482FvPPN4)S0C@dfAR>Bz8BD`UXRDPczsR6c0}+M2 zdeQd+9l^9fjpd5f7He`3FAywWZhFjggR)S&rHCDpJ^9d!+~!uA_wtw{0ba z3KLB-9x8m~xBmcR;2@p4?3TN~a;s5n)I~Qa2thpZSAumssn=SWNAA;=v8dc{j*=R7 zOgSpA<7eZ;adovrBT39aYCV2vWEwZxUAR+c=e5cHfX7uF8-4=VV?{`PgS2Xd9*Ufm zY~bsiRTpwWmJC8=8&5)$~!m2p!?lBLdKqNz~;= z9gPT)Or6CZQS5y~borZonkvhfN>hTh+arNm$g~cz7xX}uyWr3P z-sr~7>^?^80iLJ8J9^VF`uUY9uv>JmVK?-ODqmC(gVKBx)>AXH^w6Mc2)^|Gq(>QYKv3 z82smr&ASQJLQFj4S7A-w7FA~qun+3i%QR!3XoPth6e7;my>MVX=J@WJF4wIpT&LhJ zwr6@oFOCCtRTqw)AT5W?O7_z&`21UGh)Y!=yLaL|l8t{`J%?`7VRZ|TUb<+JSlF&- zWL93ffyxNoOUJ)SpjRIXBjTFd6i*t%A;+)>9!o);d@6k58IPVF+kY$?#7?44&_^$P zBL8S^L7@oWzWwDS2-VYj#Ya&DF4jlg%;|B8|C@qssT_9e&gL4QFf2(Kasc0p*Vfyr zYS5eT8?tLJT*&x3Vo-ghvjJg419ab*hEXBjqC~1viF67`z960BdG^- z!mQ}^rgq(*u>GIS3a~CYOY|b-DFvo8c@d%oro1wYZ+WyL%xfF_02adIz06(hy4!`2 z@H&MAo-7GYCZt6xv-=z=Fb;#ju-UEmZ0XVVM*!tz_t}Arz|aFHSF)@qkZ#3r;LhLs zR@)x48kG_{(%Cf(jv2d%`MQ{}kX)E?&E$Y*)jQITQ81Ksv%*eZd>|VLNJ(@`lXP4- zv#Fr*M=qS^l$31~z%Pam7rO%~>#KLfbPHZ2o7%w>@KrWIOFQ@`?fk6%vtPCzc(ndisS&}p`HR6OdOG@j9D(b_Jvum8Y`!CK6aNKW1AjJ;3yr?X<0Onf;n@@gCTg0yeEc z!l~@K1%x-7a0`g^+V041Evr|e_12+JK7z;_32QQ~9STh%2|nu`$So%V+`E0tLa-o0f}n2Vb8Q_f40>zXqBbC7K}?%nq>yD)R$ZA(3mvZg6BuEuiab-sRIv;)wcwkpdTE=4sXeJw&6Psc z>|zFTz1uYD=uC=FLA6w(_?WuDNP}8lprBE9%MY9v{uTk|mz7eHzQ5t-RUvt=hQMHs z6a3b@P=wbY;^RN$AuF*-mmcs8+AOlrK^3rG6F`T24vmrQx(DpDf8`_>E zgc&xTD|bjJsI_sslgv>A+rE-!d#LsTWqZPX7YCJM3UAJH7p=ynX4URQP>4+z%8QtF)r(Obz3wzKtz8oqGcxX^ zc+CqGfIz0N`St7470cSHBkhC*VJb-Y#e7TDr6#jyK(`Mg#aiUb$M_tYPZkxA06LN0j4D3P0 zZta^nQZ=>di#fvZ7TsPi!33MYlJJ`Hr zx)~l<%i}wZX(8-Qc5D;LnXokxa;_8PtjCZts{Kd7z}HIx!EQE4O7*OSr8`Ic1d8UQ zBMfG#NIR^gJ)d`=_DS=11LJLqz6q~5T{48%ukz=0`2B$Wxd3H%GwMpa{y zDU^z(mzXlK5znT=xH$~oxK_A(^E7ww=jRjLy@`UN)7`tVlYG1x+%RW>*>U<(&@{We z0x^W-Q;o4}_~c{kno#Nhge*eONgR)vJ;7N0)8Hk?kKRz{>D6{id-PM_1)eK7Vjeay zb}XOU66{|bJP+7_u?Cc^bsaQnh>ipnifTZt3zPuVMGdUqQEq7i`Kl$4wpI3J4jaf? zD2N@eqH3-}i&&1U++asu*jc*ci!7Y3>P~G-O;vYte(x~KU2V%9m`+@Q)E$uXMpbMF zAIq`RRH+QxdO1M~9i4y8 zw^KeY)(ABQ?vk~fHieG1+n{5INIIO&xz zMWFB#Pxqp5f`u|Q|C(>I@w^)B?X8%}A#J zi?Tu2fLo4`174tEcETjxk6pGV-hkxHQM76aWhH40NDBIA54M0w;m`X%_v)bZCX1GA zV1JYhqo$5~?<0Pg9r0G?;g{Hu-hQ8ue^{VEiu!Wm?vk5Vv~zCe;eXvh8Jb{L_|trK z?xjNu188X99)rFO002`pR#uEVJ);6&<;#MWFU%asf?Gybfr?Ccyj#MEOrO_y#XiJX zONQup8OIY4Y$Hjee%XQq4LUPhz`VNILP`o|jY>(ughsE>6WdX7>#kI|56d=X{tGxg zA?%={xjg9Xtik^~WW`dJp?jsQ}2Z10*NCH7|9csF3X3BI|HC5G_8By@u{i&NsQ_>V^H6n)_S6w_7 zcSm$R)&rM87yXOi?f!JVR{Y7L?z)Tr=Xu_vs(QMo-|5OsCPVT006o>!RqyeApZgGy z8fgodwj|KA(&U0TdaTwxVMQUCYEY$SCaf*I=D4H3GBvDFn`=;|uBA6U5=1zj_R?D( z?+yuaQi^LBrgk?rt$he?Wb)gV(o;XVLWpkV^c$D)7%{I3wah&vi3FUHkzi!%J6biEt>G5krA2c_;cRYW~y+{X6LYBx|NveZZ4+-Pn}Ww<~3=4tWf(weWGkHyH~8V^*hq(1r<=EBB& z8AdVMywfa@BdLZa;>#iB0sdl-VNLZkkqgXzLIlaoQsWv@Npv-`pd`V_;lJdBk5)Cd z>f^qVK{emVZOavWBMlK#?HdV&OGa#CUG0r>Mwnyd0lHO0{}*zGTf_EQ6)ixwsdcdX zRx<*WN(IjvX?8R$X%P#eN`k6c(E!8H{g^Nk{G}LhFYB9t)}x^VdK`putTKyEVIHC3 zPkKR3b;m23AUrjOrdnZ6K4RW$kYt&GS{tQS)_d1gO;9+M+MYb62ZyrNG)2@R>`-_E zB0bB)rM;sCPeQ){u_f3tjB-?p@d(O#(~s2xJXA_>R&U2Wwf91;eSC9!(OhzBy;Bpe zHWv-c3;p7;XMNa|E#q-ZLU|3R|LhFTa9;F*KP#4rJ~OB`S4yAx!$`q7I!J8Su(2Fw z2HP(AYT!m!VHcI`874J_EuH$@S5LKj8}%{G$4oDgtBm=b=~w?irT+4uO07s%p6=Ou zDxsP+)M=KIb4%%0e}B<6x*v>Lr?FO}dv7YJ)r~^Esj#|ACJnxuFZ{>=NQu}BNtFCX z|CP;E89vrEJhOa#t#j+zn&}i23cWw$k!Fr=Gf^YKIgCb(%b~I>(U{55*##-zXFQ||cw3k-G-Mn~b|OI-&f0O$lD`^fq;RR4R_nnMS&~L%j>~ z@I3iD$_IM#|G8EH(VWvqTowb$#HIbp;*wfXRB@zU^q%vPD*BQpQr$WjNBA6zjz##* z-7Y7K4Y+Fq9wkMrUYYfss~uliMS0nMbbN;z#nd#F+|XQ+)v#GTVlD~JE*#_`2`Vk* zrgya3T4fiA z6#v$0T3bVpLTV>qii$x5rWYMQC}GO$ht`)B16#taWJ^#3mugP=oKZXXZnBnLA=G-7 z>l-6JVYZeKA}E-KjaZz9r3T*c&&{yEX1mMotmjb_!>y$uhJOU4O5$N=y-VOKaD{(u zyuk^22>#{ThcuHFGso6Y3P$@kZ6lWXrYowf4L(^L(2&QKO<%=ss8$}8!RYm`p%h-< zv{-VtY~*C>6T*^+g$rJLzTs9vhv8FtAFRs8xw7 z<^@(!6Ru{haT6Re9p&sR89H zT8RVBjp6FHsK)V{)ZfqMrgza=4(H-)Px9*5z)Zg;>QqUjsz~}ORZV?%Bu;$J!Kot4 zTF)swSV1K4r^TF0=cHad#d{+vJX^^qFrwwCDbyJ^Y-5E)Ss zxQ1TEPYseG*J^lVHZ^l(lpBwzG8Q)2IUbORn9=*_dx9Fv+u#0&Fwc42Cy$prhovfR z{{B(&IAgvHV>%d3qrh{Xx{r9yQ=e+cb8uQ7CZ03|tOBbR#hFj;dFGU1`ZJixx_VFV z>`<%0D!2(h03n7_PW|gW0Z*x<{`G?aTk!(6;_sBUU6n!2p&!T#9{uH19!nR>h8=>I z@#55t-=%l z?yrQrXJbtqVsX!roJ9`%#v1U6Z}?(Ucx`vPhIaomc}{^l;L`$ z-vHeB`%tq1FI3xnwjs<-O*_X3b5$>3sj}MvaaGFg4>ML2PARCKGl)>f1Fuzaq)Plx zh{RZRk6O4}Cg={fWsCTi+UBnCd2e*s&%Lmj!>&}^G+;i_xV6Zk|L}`G*)F+|JoJ%H z*U>}&`}>b>4J@$X^9^TuJXAVyh7;f~*FHq2s{Tpltv@hENAVPY;P?C#BXQ@acD3WN zgG_d<^aq}7xSC3xqCfDY^boxG_gf-o*OO=0lczRX1Z1|itGce)x!u|M-0-=5Yq=OPP3Gp|SQjcwB#0=;fMc@{&b-8W8!2NLlWZwumHCVhC2I*?p3zoO-<4a;FShFpWs&#kQ7Mpi{BF|MA=#jE$p#WxeZ^Mp=`!|T?M4N7yUs>z6hgj0` z(g*)qAy4QXkFh)5y6Is(XN^y-_5=Zj z6T}r5PKHCSwb@27m*B$FkLiGeBU?Q2<5NzZ_PDCzqE>xWvX~dYbInwHC3V_wwyMlU zrG97V;jIT>fPFPVBw1B0A`ay*s0~|&2jpP3AEx`-Pj6nyYO`7?_2MriX14D-E zYMC*~_(J8>!a;v9+}TpNa9;2@P%|5@sY--DJZE}@&9HRlUq3lTFn~v3W8W|daIKjJ z^4Z?46n8J7yL#)lsNqO?cbF9U)t6EK|I64=HQE1yikfBUkhf2xD^>alB_p> zRY@gKDfJkdfA`r_K%U?H6$7Lh%v+~|@@-U2g97`r75I|X9g|Q|T`;BYl7SD!ejr5L zL@YRvxH7eU4NoLZqZ!iN%)?)boB!Qca6!CVR zAd)?9&R?oSRGy1uI?T4 z3xN2_8x;Z|8cwP@0OGvazz#!>6aFyE>MNIEtcvZLJKSLo66LeSKS+K)r}V&CwwhFr z+RFg5BHD=OJO4#5EE(ToxOP`3oMx|r@r(#*Q%tx z^iQ@1`FD;G(*zNp)itVT*ySjXge`m#N%k7V+V z>ffF4?!Rj8c&plbL`FO|bEFSfpLi!5{66N;Vr65c#NPR#jkw&FhW>Z)}8|*R5@ea;X}Z)PcjtEAbL! ziRTMBeWFcr2Wgc5;aA@|8+fF9k0FRZKa>G8+x(QoYZ_SHbmL$v6v`Ymxear#h*hV| zk=&E2kb%)~(UQhhj)H=~;R3ut#iP7s;|{>7&9idhRQhQCgw9|OW>!9$ZCw?l{FP0=)kO&bCnD(aIY^2h z1iI3!ct#_Ar$8wT@(3FrUS9oh($lcmY*wF8Ae1UaLA_~{m$d`Y zr_NTkc^xd|1hsu+=s6G>9T!i@h6dYPC^qUM(DeQussdqiKO{IQ_Qzw-`f#h<=&+8D znPWo1pM8I~6B8ihjiTyk26si z;Ub{})IgumM4tixhk~B9;uVj9p0(l?-(3ZwF>q9t#RMma&rK9GWt-}8rPy2B>0_n` z+G(llfa8x?MU(3B&xjI$k*zr9yoMX5;_8IwOjG&(eWf#3JUK;`4D^h#N_Wce6?Gv; z^E4F|sjN8WWwZ@qMzo+TUZA1Is8Tl7pN3t)c!{mgo62ZKM;Gp+VJ!nX#_n-Xv$K^{ z;aM~aZ>*Fm9E)S{smTHF9p$<0Ww@?nCsiq~>Q8eBl+M2S`Y9Hb=A#W+g%Ydv4TfhQ z`<~xVVR<+on^PDzYl1+;SCm-c4YpTJ2!n~hmWtFuvgSO|1y$>7)ADYFC`7^)LWTN( z&nmXFqB_H{hWxQ!P+)jAeW7uU!)DiSzNNm}ZB|1|hiybfjl3yLA?871p>DT?6{0WW_|G^(MT4I%oiujyqt>{|Lm^F^ge~~%t+b4!H)jEuM zS)K*rueqjtRLd1x9S?6`3-{x6*V1ov)@VyNadop7u(}ZV`_`;Jq7`%QI%>gc7xgvm z`1HF@?e3n-L{xOk8WTZf|F)f6+27gCt3*boXRthI;FoJE>7Tw_OwEf-td#!g1^8pE z5O3lic_X(rn4~NMLufKJ1oKRxP0EYX(uoS#h#7>YVv8`|Fhm&AXGzk8 zNtM%&zE315Ve_JJ=SkNpr5`vXXl8P1wvy&Vl4PpM~V3V68G3C4G}D&^Y5w z-#dK@^W)N={sXnNsiZ&sdtpkJLqR)h5uM6D3jy>D*MSjbts-~ci(jxdprUw*SzdAW ze`AiyinIS~mF>7pnHskZSNB8J>1LaZQnV<(ooDx~F7@z^OqZWHOb(AtfAgWBZk-R3 z#^bM_KM(FE+|zBgH9;au^mwb9)>H~PPKVyaPVi~Bvh%t5F_()NrK?x2917`Fk>iO9 zU|?%2ryl&wR4az)gYK&mq_0xOk$1N~@x=bAyyj0v4yH#j738C!5NA&-r5?N=doh3* z1M+ta0JnaD-sE+{wDG4zr;DHgc}L z#BWC6RVe^DNB$7i9D;uEVJ`(5aDWaMMAx6+{uyK*!`-9hiX!H$W7TKI02(>bG#-rx z9K%)+ct*fBUCedn#=}`8=1Xx;#(968@`_`xqM>?X6Ho&`c4xyCQxW^%Inw#@k_Xa) z=I^>}8(d={X2SV`_u_YKEQZ;p9KftnUXu2XEj0`!`>S_MQPSXRTG_R7>NRT^Yf&{F zsFZ>9r{!kCOV?f3iZAu?nn4FUsPcpF=ZBcVhMO4BdVnku_awF4Xf!C5vW@thX^tou zReRenDfMl+p;c1L$D|NJ)(czD=!}{;UTb5Ltx_LR!eQ0D*G{!@a=_X88eelF0qhj= zHKqe${@nHe8)I-65gXksr9O8hqk1F7Ty9bb6Cg1tkUF&@hVrbznAgAPhN+OuVu>;G zlT&Va|7C)Ecx>%_Oao9_I~8_EveUCBKRcx~JtgMEg6&TH_Al|7rIzXEd(% zzOwTd%}6vVHQ{1OG=at&o{Us<16L!b_&hRiHg5%KvX4E+$h_w4b}H$|zAGYks9!MU zM$((mJq72<%v%09lbvxC{+RBR;71s>XN8g(DZs0o`u@8m8>ytee=Bopc&wl`3%P3d zwo;#7M<{ecIhCC8@f+stFu~(9mW}Ny8FdbU`VEL7HTM;iBTX%_3M{@3_e7ZZ`@{vhT$EZG14{-YVX+oTgv zNS{1oYql!;fc$d$zHcD%wMzQFudmAKAu9xoK=j1+*-r_u3Y1Kxjvgp?MP@{J?tg&h zi62h=(4~3J$Ypq6ysf3pYuOi9J*y?p%LSBnKXv1I^x^tX{{;>)V8oPWUrwL0mm4hG zyy2pYZAyzCYQ$&&Xh4_0_VM?Cc34WEvQINTEk_0^7lkK}&krUKQ)FTTe~QqFx%_^& z3%bQw7s87@Sgmzud974K4Wk3HwXl@BFuVtr_4Ajr{DSq zp36~5zxDU@D|}uK-qE^x-Rd=Me&}cL)Lf3Yyaza9D6D4s*O1vwxAR`B6ul{ax11W; z382XvXvfs^fVU!Syk)Ne)bKcwQfg!e2h)QvueI=0!$i|(9*Yf)`xYCEgM)$5$b6Gr zj%7UT_9n4oOcAFJ^Kcw$or*0WM)1Gkv7>&n$~2rYOg|xm#)Y#2Z`5)vB}t%3+lErL z$3p|ZU@8)9K|T8r2!T8{0%7WoHwJQmS0x0LQg_@`PY!SZTOl5o_5G+x+CO5rzJh*KgX{05?3W13zjpe!Z1c5ud_BbS`QlYE{h9q3 z!@$lJwRz(As^P5h5e;)-pCf&BLQn?A-w4Vpo_kdk%9Rz*z53E3l0Q~iJs_tfeu65) z#LqpYKkMJoY=fc$Rx6-DMUR5Hl~&yU!>QG*L7O-hTuseYR&4)~j+UuC1}KzyR6WZp zw*Qz}r+leLi^vu{L_RxTKCOz+<8$Eeuqlg)+U3-@E)|)1mDIOh0h7hL7QUP@*@aak z86}-evnki(hdonls=k<{S2aT)tAdqaaE;!pQj!v%GkpWY+jA~|CX3)Y_Vbd&>RuX$1}lLK$|scYk4$TDz3MZ&y1m_ zbo%+(DWFTmJQF~8a?b3k3EW$3q?#;$XEU5sr8MWEI$AJ^da6mAG#fd^;ZTRVF&%#u zc*4Ru^!B&^p`i?Ux62ORjF1SP9}WkR-9XiQc-|e`nIf0n>qV}xodFsS5-C}i8g0)i9FjJAv#x9Y_kKx=aU3awF8()@3V3fRZ;_wH|B>k zC{=Qa!fuRGm@ywqdVIz0XdSimFua zlMC(@tf+>)E8%fe-;Ej$it?TyjfQJ-&-PxWC?oz-e=2x>8_m|>-XUu@`dG8L1+xWC z3y@Rb`@HajPL;Z>hYZ{_5B7H?;XI^W&EDRe5&2`k%MJR+K1M(WQbHBr5mP|!ZGRkO zeT})TO&Q$`Y}F19b{>?+rU%)yM*#+W1XIlOpEtJ%&#E z#4X_7oGjp-Dphj>3;0Qs1twRX(sxDJ0)Fvn7jX;tj@wpfvMhXQPx=C81Ha+(r{g#e ziw*p0cyUb|_(8OR&+evi#)>Xhxol*%`NVNeVRYdPkzyhenpJKZ_7`s+J}aB-dQsRN z*>yIjE}oz+o}@0IQQ+~i`g6PcXlkjzs_zhqq8 z*$UvpQu3_-IM$SmK7#U!D1iYPhm8@aMdFkq7Db2gIz>mvn{wqRj%^Ai3#XGfB6)H)bzk130GHIiUd)-%zit&$m9KeYSeo9o zu%54}XXq?bw~`$@E^hZOhA$nmp=rZwr7f1LrK}JpMQ>BY_JgT&+hIWG?lvjI!yLj# zJ7kRAJnMF;O2y4?+QR86Rq}A84p8WDbKA_Uhx>1y$#yIKH_wv06^%6r%f2KlL@)WR zaP+O=(z5-lUke*6D@y`}Fj#TtA3tjs5QvLxt612zV@)ajBkEIAO8@v+IJe%I&om+* zs0Qp~TN$n!7_}qaU*yi9J``ENhzQTW0%_2=;Q%_W?__2B@PLb9F|QoCy{_+Ijw%o@ zX;yU1*`v8yMP8G@5R62Pim%d*6oiC}WH9-Z$cc*qn+0DNS$~m5VxmyJTzdw_N!>9U zHN$9D5L!6(jAkJX8A1EOF#P}lHXPxLnI1Cua&N;{ag3&{d$!cnxN;0zQ%S9RPN*}1 zCclD>XK!pA#oDP-Fx(H~W?O%}YsyeC40fv20uRcfoc*HlsgSQ&HhU%ZD&=y=(@w`~ zAUcn5^DYj2PZ}r3C@FLoj@Hr$;4NXLH*iaiLE0&B_RlLXa&e}jh(?t@&&YDv(pH7uJ+%t>$ z)RU5E{}f8@HM@0(UYM@4bwSC!*`y@dK7q_q8V~q8`geD+2Vt?etX^=(R18!*So$hy zG@%+mn%G)Rv@B;s3;D@9xu5KOH9y(u-&gRHH9X|iezL(jh#1%Gd2*3;Dpx31M+1&l zqM=oyA-wIt>tvBF?gy{$3S&oge{fW(lYu;;w732QcS?JCAM{%T-=z{C-l#!k=n?t?3T($^eJ znrhM#O|q*hJR~#uBV>I>5^S_>L)8<}8dSi)f-aOnDS+kg{N+dJaZbp6-k=^p%Tsp* zBdD}I^#N+z#xrboU6{?8q(-X%OUamBU{fib^^x~Y+4=|yE1>ORP(i~NsMUNI3s8FT z?(a@vs{{|U1hjs+APNeTId)4Rt)rY?@hFqku@Z6+!)zCMK?Kt;=0T*#NC+z6q&rI0 zv^!O*wuc6L&cv^$XyrqJ*jPZOobGyW2qCCfRnlGWVQuzUAsUsz%rz_aB?lg1G_UQ| z_pz+l4PW~0RO95FPL<;3;TN5iU&mh5dd|r@KLtFIE@>r*tO0qRII@o9awqcfS_VsoQmP`h|;e2o%P`3 zy;0JIH?_B9e&gEdpI!`#!1OsG8N5d8`8AMGQJu+-W*KB>QHQNnT4lP&>>f1KAXsV)OvtXZ-1I&zR{*6Lz|L4jspX~v0l*!<2y&W{!>i)GzG<0j*{{4>zu_C)Q)`2* z+_)6{xCCQs*r+ zOcM=bxvABZb4BW)FUmktAf4C;K6t*M;FQe8Vlv$3gckqW z)X#Kv(`{7$j2WHgPW@CBgJ=Qj5IKu95D|ktgp8aOaSWFk4%bJSSp+k*Y7-4J=$m92 zs*1rJ7Hy(t*T?4cDZXZ$FnGLIFdk$@{HpbDWW(Y34cpqgxUKyHHCy|-6$-ZYh9sie z)?Ujjk+BMm%0xA5XIClsuPjCsYL$m-WR|FJVBcgFgms-zK%B!xK^D#s$zG-OWp|;c zl?%qc>j{p&UvhK`j?Wo|Vc*j1ESGa@>1>%|!*lnq%@m*QY^vozoi!Fd$3vmE!TMtN zy-Mor%Sob2oqYvcVvpo0pDl6fUv9)D_Sq79bQ@b`zi_KuWgmlqaFsn=WxR)1I258$ zRvJrKycbtrkP!CQ*bH`i!~OV3Gy9?3y`b@auwhC)BWT?c+LEvSf6obR$?O5Zfk}xi zHzflH>Kv|CE$Hfv%ni*#SEb8=;!^4JW^vH5J(4gq)P~cDf%)t6v_`5S=8e~g4fD{! zX%hxy?p4Y-Q0hE@83%%YQuK$JC9I+;Uo$CghbwD!B^+So<60wQPtzy+&>7kJIOPrm zMZH6N@lfeEp}m+rvLkF~$A{OnvfoqPkdM}kOGHDaf@s(zh7X;geJor^9u{s$E}SW) z#b`Ue3&SfIvN2$6nef|Ewj37YACm@#Sqsq@a#}_&w|u&URH4%H>6>c^;rKO0twxkZ zblCGbpj#5tT9}&))lvm1RHfYkCacm^g4%AVDqeSQ!-uO_fZ;jQSp6KEJnU?n0+sQ) zzoVe+>+Th`8Vi^)!rjMWvXnv&3*hHLnRekRe}{wg#_%TmO9%i|h*g%Mvhqj)$Py#0 zE|`ew^HlmqkVaK?o*;ebB-{Fs#^En4q*HrN4JnnC)SgqKbvO5%$|EMZ%_=}Mc7hC{ zSuG(445WKRm7X(1~Ddm}=rhDC;R?$US+@2HARP_K>%& zW})b+i5|U5rbG}uSZ&W2yy(Z9QEE;blx@#f}MT+Lcx0OZlevoueq;Lu5S zfloVH7zgRVA+u#|4yn7C3~uFgsi3^9-txKDP(#OY(^x!o5?-AJbgdc;Qu>)cbM2L_ z5~iU=1qCJq&e`i}28)UcMbqsR$r1} zEdLbM$?H;##*Y7{DaN4-mZ-Djf$RTJPz)IblYXTqqF}s`6-e^4wo>|)@17Y0<5k7L zaIb&h)~bqsK|OS4{0r$qGXr0$l+;>AYLx(iCJ&FQBwy7OF|-lDHrplJ459%Jg@w-*E|Zt5xlFFSUcqJ3 zkkePYOkQ3CjR@mV{P{e2PgFVtDGGRjaimW3C3Y!NfHH*G|C#t%h>-KHsP$bdI|z^n z1G0StZ{hxtz8Xtf(42-A`4irFQ8Oo8rMZzJt)@}RX+Z8@O7E`XgEF<2`9)Qm&(8$G>vwigk1yNQ+)cU9lc>^+TO5s5(C;UizU_S<~`$ z&CVH=_^+8h`wbEhOx!kH8DyauChA_StV;oje@$#)qkwtBhN^j8k^1wV1}dRWQUz|T zFohWPOa;{2SWQV;&1)8%B+9tqtzHMNa4mv{qOCeXYj&*; zbP8Dzi#?AD*+o`4ebTAuW0vY{K;=v6lU9X7u*1q%5N_=a`;#8iqj-Lrh(ZmUF527o z)ui}T>j)M`AIiYJjRNUTdjE5q+LS}*C6VKmTM$a0#2FkqiqG1>~Qq*en{A*d#7nzU99wY?!rd3-SlFSw`^J?6jQ%I9S;L z_yvn#21NiRNgi(zwg6F+hEN0sCEdKN)_THwfJ!y4jMh}vjY``*mYJWyH78#j5>^t$>RQ!F$(Pn}05($95}&mhxt4N zH!|9`rS#NKt`JnMoPOgnUWnN+y@&JG%|rcJtbl#<`yVJ$CUW$IVtEZL65T#(Yr_hK zvKixVg7C$uw<2m^qoU22mHox1#DJyEC2%l@i)=hp`b|(28&0kK3Hl#~?=A%Nkmr8o`3dhJBIn71^?{O1XYF^r*$PHzi zsn`LfQ>8b*G`_4z$#nL6W?Fe-|VMRL`YcU)j_m8YY z)fLosqo1APutl|TtPzT(JgKsY4$^I{isYCm0(aO}adeE|h3+BS(4D9ixrbYkH>g>W zUwfB=6}ch0tF6cbwNIhK32fGStkQ#XZYMA}eQ*EN>sqDe89seLorBYd1qS6$;3y7B znS`G{q}N08aE4AF_J0dbA1{8}s8$X|o2MVrv{L#Zq!eD!N23?@F~OK~du>i1am(;! z##pD{QE9g6%ThUK-gy61yN@+P!p&$@UZdoak=t_W=fBVP3SMa0`+`a@?CR$4 zA7xVg`OA+m0nIu@vN9No#Xu313m1Q%%c zc8#F~5Vpz({oPVmK8m8Yo~@*={0_7D`@`r=1KC?NFjs($O8ZKG8jd8)^ZAcmKE?Xw zidvbv>_r69h=ol-gH9VVTd~~o>q}j$((>!e$Z;1Pqe8FdPL+0((`>U=-2X#1R@k+v zHNIm}V{O(giNiEV*Uja;QJev0SR&YYb!XW&x!m&g=W5*D7#(%HcOjOJDYbn4B#Y>X z6Jjv5pIK2@ixpNl%;X|VjG@C46s{mGn8W-Fc&8{-WEzWwt>O8nvrwb;49sGJU{;&#=*5$<}NDD;FP%w zS>{WdA9Eue0Ll4X2PjTsp#0Tan*vHR_Chhya7W{a_!oFQr4u5ek_83nFkBS=k_N;^ zzJ@P8D4|qIeQ~-9O(IKEiD#)uV)ZpqpI!|^E3%HG#N6dW+G%xLADo`cnyT=ES=KbG z=d{V_lJ10+qH1L~hs%HXto%584A#rh_jqLAK^+4GLKqc^P)<90+P(v49K5|oX;V7u z1qHS5#1CHC%xRC+p{%CXSBUV3Ah#0ERhu-<1xg>5BbGn->DyjAB-KBm^!@(+qlcvW zXNopiXo+cPV>xM+w6SDmeN+c~k=a&ZE%vlExha5J+mf&gQo0Cj@tDX>5jG-hv7GwV zBXF=B*z;d~o3$#IQeuSGz-w#}lmqGC9kU!A>n1He>yAnrG!@k4nK75iqk{c_-5Do7~3rZZbjOyq92<*QM0KOl@=OXGJ%)Ia^1{=}TV1qU`i+DSgRm=F-OuIiyr@M2JGQ;a8%ADRIJf zPqwMR@n0_c78Jq?#wiE?!*b!bD%h0$Ec4DXm)=Z;ZP;9C1O%L!0P z5pMDXG!>#Zw~Y(pAP?yYkdclxSM%jHRuhFBZA{m)LsTVko{mCOS!Oj?RE}4Qu%U3G zpw447^yRYfLI#e-*(F!1=SYeWwE;polwRx&7f&UnC*-Q?<*urYYObm`{!+nJ)lea* zc2(7MQa4z6?xlJNZd7qn--=G^tmS2He*Xiz_uUEN-PReJQr61srclh0oTVWKhOps= zIn*dR`QS+}oo+_p>r!r{*2qwTBX3|R2~Mz>oy6Oa#2d}GhR(#Jo6(KUz=?skyDr-% zn!q3x4tKhJP3rH%VYz>~_94-^Wch8`-3Z+S^*geY@osc9M{z=@v9Wqtw9sHk+-?Wd ztHu`SE|q>~GaF76$LcBonY@(lLv;I1OPgw)!rWrdjl8b{xaD`korQtzf7pK+SoxRT^r|G}H&X z9f^vPM)_zFykM_E3<$_igDO`#iDD1Gx8V$wDkwbsUb)g=K6z@jQ-&)U%Um^Dv?-0L zl6v@kG{tsr2RZ;=J8wo4wxM&e{&%T#_L>g%WYxXbvJ-e#ejPLQci;I)*on+K@n(ZH z_jziLtBLBkxDxwn5+3Zd{knN*c+jQNv1_LMRFm$oF)Gm=6|H$YJrNW)H@D)}NbN`KFRSYOZ`Z=_6F>E?9PuU_;~{F=Rg+94&Z)x2*r(TT$5&qVJcOuBgjy^;VqArz^+~mw)Msspn z;E<-cbSK7hIebk`*hfNw+CC=c-9DG`sL*{J5BxE6I4sWA`WVNYk$D*XV10r`7`XetZI z;CxT*?w-qhRZI>z-%%Uo=U~Fc!ns+jzc+54iy>y`+Q#UZ=gMhaWK+p@cdUH$zg@zj zieOTuqyKH|IAzJ3`ZyE0=PQn?fGNcGz3!k92ZBR&b(DBi%$po5i)H?OIw)BQrqasEe`4c!e&74B-hUWo!&ng41C2lcYX>>F;O67Lv9;kq zR5%bkM^NXkcRzay2Y}5a(bPN{I(DqLIy04ydouxhf$)J|`J8DYsvAsEYB}Ui!*mmU z0@K_LH%B2sN_|JW)CzG&IYB5l9Z#qSs-HimnWJ!?_8nN&o~~{5Xs~1lPC(X(Mvp$_ z$b7)nftEf0RAosNzdZOy91%C(>83yVV%i#2;HhwN$8qBmqu zJN;*8gfV*2@q-ehvnPsdB9c={-S(+E`1BnsuVau26_YGzSi%=2+uQ!3;c_bJ=(qht z&|dq8Uz=hjJFycAbxI^GSBKH!&u+~&e7%yl=GLqLwWgDBerp!qUrF7ngQzN??FG=r zZaGzm_G=)T4>^SEQ=Z*do1!;h9S2UjrJGUoeszjY!x%=7L14+B>g(gC{7q`6{K~Bg zru>GCuiBJ_FRIvX|nGm;b-CI#O6{OKz7^RAGR2ajkpRHZ^9@SJH^2hu@n&m>Y9Ohoa7k-!47 zb{g!?^%Uv5gO?k6+?XHTK^*RG6xW!_03QRnouu|V=CUFxB0H`~NbRk$7~4SP<@)P7 zBz_O=Z}?)R=<|p6PoL%H&f2%He99M|H`S*2XeHYWJ=%sxd&&Hd(8{bao0u zbwS@D?cI0R%&;IRKu0OvAECnoWkcu*Wm*UX?Vy`57M0aiWD1N;%}|JfQF5CkV7@hX ztScqc;70;`PrfLCorF@;zis$Xeq7PU^&12{# z1>15-1-5c)JoX%lm@_ieahj{bJqK@}l^q)aj-+&IYP zL<965w3kXz8hP_Qb%N*UdE9oX1;r-Y_uYji`-^5-znlhQ+8Dpku;}Z_%bHrp`I2hb z;N?07p(uPh(uLA0HRjC7sLG07YH8VW`pYkuITcPN{pAhlW1)9aXTS&H_O<*?r4`+O zJw-X7Vc(q)d>U%DDrx`zG>yIV-2eH(6bW50cG6%Ayqjh26C>DrAoodKt1-aTqfbrc zEff0__-wXbB&(4Z4$}-Kr&C@+#J*QB zE*E-E`@TD7C7H!Swy_4&>`_-WmCg02vq9G&nc**hW)8_SFT`oKt|Hp3&az&G;Km14 z(tmK}I7;b16eA5HeP%9WN2ZM5Qf7p&jexr2J33ZTz@(nXi}RY=Fq8eM+Wb}Wuzf|B}WP|^+>&_>*( z>YRs*qb_QBCkCqw30Mr#sZ|mj=B~%9Iyv^F~ik4BRpd@kWIzQDYKeFRDkllyx!s)&JdRt=ZEyDHI>9+B$(QsSK%=UTO}*p?+4FHlc>bJX1VDir}(OBVFsobb>0ObJJ?Mky3h z#=ZddX+ynzA{+L+Zd6nCY-igjX}5;`845USc&A{0S|w|!-YK+9^F%y!mxQg6G}uwfS)l?d zb8)DslmrkCm6Lz4Y>KKXkhIABDqJ=cCTQkKsb_`W9#y!j%X&;pahyBLAkzsLl~5q&%N6f4ThG#?vuyQg32BBh&Iydx{T79E2CU_ z^75vZy{YQ6hhW)<5G zBg~^U(AcAu)uTSFe(uBCtmeb|#B~ZjtcDv@?Zb*T1jy=GILdJ+8=mB5U02HWGQwOv z%VgitOJ2?*i}FXmPz+NdDd-jvB7x|14jId$;w}ieGEx&*dxIiqxR1i8g{%~hAyphX zzupQC*_P#w8;v~tC;n!4FnZ0H)Pp4zHBDTuBMOfC>s3n!Bo1@tKBCqGIAPss3 zAwk_;fsi!2G^*M`M0MtC6E46ZhAB}W1lxxR34p$!xgal_L6&ZamVgu{Y02!7RACh3 zs|77Nu=dA=+B~QM#XNA*&hIlGG{|_+#n#P31J-V5-+^b`HXb(dWpajYBAkb^))0#_ z9MWPCCW_fSCxBPcyNJ5wmzJ>$`(-BL*4P9X( z#6W$-s!6Z}6D$R}YZHxqmn_%<;|t{k0FGumZ)6xOr$#=A5yYj`$UW2-)f@LU){L(L zm)LAUH8=HfpH_-`)o@xzMt=MyGqdv|gT5#+n6X&ovcasuNGyZyavrbQbl0Xmogza2 zbH}IZ*K8_X@U#D}4wCpkC%ozq#pri;sW3GvI5cj!nXw>%7lu_8z>A}@WTV+&K|T7Z zKgMdz=pL=7AFO6|kcY~sRWl1-Tg(@l8Z-WIwgJy+jaBmwijHoFf-q_h_afbb17=UM z9$Q#$3VpNq%ejwBH9r7DsI@|2)^X99M1wr~_i3eIHL+=z&*G`Q-D}|yb04E>k+Hm1 zu&w&%gP(bv`OkH5Dn=9<9Dpl4GDcO!hhkJ`Mewf(p6TRwL)iUdqV@x`!q^)ZVNA}s!vp#6u7(T-4_VCmttX<|u3!eLw zPihYvuC3XVyj~wh>E^VIo)-gIeiC`MF`)t^;?}I5F{tV-ykvaL0FF{hEq^Yh0I}E` zV%Od-e-oqEFiY-9=c6CB*0kgFw(=^*8O_n#JSzXkDzf7w_`R6Gy^bZLw`NeK#jN_!>s@wc+1Dh!RHJ;Br~Q3`I*nzhWp6} z5-||$f}R~3v#dsq$(}X&AfUBLiMU%Oo2r3C%!XP+U&q16l773D@~LoifzaDnwgm=E z*>NP(jA=gh9-u+u@uyql@sHvIy)#PE5~v2Bu$V#!85YB%~Wf9 zn2NK7yiuO!T6z49k@Z?Jya?aC22dl?5LoMSOf92RZ`Q(1xaQ9QH?m%+W@LTnMG8jN zhU|HkM1cUtMRN``hgn;j2C%B#zCM7(XlnqN<5bvAn}n*WUDzz!{7acMb9D&7u*kWPmIb|8Z;n(s$*t zY@aZ)%5gm1DyeW0TE3TZb(wMOg41rDK(k_L+s>|Nq3x5-yC~v?#l_+Vr7Wk)3&2X1 zbKFKmG9;QuhlDMVk5`g84rt7RVKZQVM{?QXlVqh#vXI@f5v6_alY-J>3OoEO38YA? zDW%@~duzC~Z2#)lf*|a0e#`q?dbBnkv!WZK4FM|{jbPs?(sDv1dW^SyATtueKV(Qc z(7N%@!jSacO}(=ilFoV2<55FWY4|n2J5+Y0URAY(WL>6}z<{Q9ZDIOHUXF+--LPeX z1tp!cMlO)bpi~Vnc`K`jM-`;L;E1l{#xE?`AfqX4o%W0+_<`&@wVK6M*m~aDqff1# zt6tZuYK(El!y^q_IdH5yaHJSyjE9>HFVuxKJLlmj7k9`0CZYZ0rMRM-DNX=WYP{Bh zZR9oE$W5;Cv{Ol0}`i%WGq`Ba*WZ;SWbn^-4TPv^{NWwd|1Nu zGbH>Re3*=aMe=py)3RPwxmZe&jhOa@&u2{g!WRH{M%);nRu;&)m(d-^N7AEDVEgr| z^5Gui)Bd)tn@j1OG8Vd|RnmpT|Z`HceLXI_qha4^|}G_Vq=>ZQpm`r1Q3f)jhE{@NRb~r%l4m zLyqni3kutGPn zvx$i3bh6qpv7gP`!#M`!!004~q$JnC?gm4`g6=ksGl+E%Riz|0ETI7oi9MCWtZ@+I zMig`_<(;c*d@I_%Pn38?+Yf43Fz{<6zMQ{e147X6Yx^81OHymkStdZyXAwLKzi7!V(Tjd71Rc?!# zRqo&3-qjTuT7QITRi(84?N%*E z3Ekc#I^K7Afxpk!T)crgPg-kP?K6A?cj&C)42QRjMC6f5cGsLL4tA?#u`z|a5T2HF zGqXvNkMRY}2ohw!a#{$)pp>?rPY~ywBfWwanh_@#+(q^H#JrgZ>jrnJ+6t8#z(x(k z-FH4RBy5H(P79mzu}hcSwj+qrD&^CAc}c0y=ZK<$c>Kp>0;}R&4FXD8T<{#5<#l4c zKlc7rPrQMf14B5DT76*GHk8tz`I1x2pwc)}%$3uhJ&yN+siZ&qZ0_!4X(>LdTw`P6 zo!oVL1)fPX%L%9TftMW|A+p05@ZK;3er?flE2+Ij^h6`xku+nTxPcCiQDYArBi;1J zJ>gx(pHns|Geo1)n193F*YFx3#^v-WFQ7w&O7$rxlg}DWf5Zgvmsx#8E9QWGgr2}# z-JoeiPO(|=)=Vl{AS#T*;0%N)|I2E zPFdibGE6}5KK>v7DqQ}6mA+}h8574!snjzV7f%%CsoLj=D<-n95myYTQ2d)OzMvz% zGNqi%r|61tj*GftN-5{q8QvJLjw=Rl)_8}{dhVDTH&P$#8#h&XWRNKH&WWt!xaLyh z#2e;~uFmH1Qzoq{T@(Y?-Ku-9Wq3I&zb=FqB&qEBww+xew3H@pe1#;gu!amSGg>U( zQ-eCf0vRKdDi(;C)KS&sT8BEaan|r(9)hExY6T4fM;KXb6LdP9I|2IiY<;oF=0GRt z-~N*s8UO7`tkj9pd$H%yC#fcWGRpe@GIGq#@N<#Q;?%g5j_625uC%0TjF3&=_k zvVn;(c?zTl`AQf!c-`W4`wr~-URgLY|MuYfYG{c&0K`;r<$>iafK&4$QjNf-@dP2*!EkJSHJRzS{O<7^S@AQ*OT)-hy<3qmQhdF@V)dw{q2rp@{Ej&1hEi&Lfc>(Z8s7vzuKr1z$2k7@ zW^E1AYB@FYF^pf{=CxAVj!x12^wk)5H3@A9Mw$MH7D2Atm~)C6n6pj@z~N0Ed|XQZ zLrN3Tq9iSQ8Pc$MY_j35Y4e7GX%34pdn8(+MUY}U3umQK(@=d}g22q(-@(n?7pa-K z|L{TuGj~HcRtKMkIxz(~rH$IV1sx|lJ6KlfWrmZ{b2-h_ts<+RHCU%kS7%4VLR}|~ zjP9jEU3f2h{tn}HI@aha+Q*!BR?D)PppY2*{+z|JF4pcu8k{D z;mHSAgJlS=g%_mi*fy!S> z-}^Eyisvmxz_R!x%|>_-F|>8=MzGM30AnNqXgjQ+$OmuFT9xz%_XAC15m3kD_*Qx$ zmz>QA@JVfsKafvHdWSPKBZ zF6!2k?uA@-KpalT96;F3_B9x&A~V2^uM3&qBrT^&kE)M zYipsy5+*&$xB|=JV$<6h06V*}H-#U~ImbH743OG@!g!KKUPezq+ANxY^!B zKPasj8QHM!z)N6eh-&!jqRX%HF49fi)^gsq;xH_mcc}p<%+dE9IIrgx(B}{A`Q#MU z&S$X11?+0`E-9M2*Eu-Yx$nSp;kMExUwY;ytAORDS;H>8?aOaG=uLGF4h*)@o!*uT zI$p4hy*1*Z_Zdkl-nhlb13~J2o43`>wC_7`_ANi(TiSTIe&?xMHW z+fg(?-0SY{X!ACL?uNg-Y=hU))!Es(wzIpVzs-mcus(*rUR&csQ3kY{$)D%F&7&UnsoVJ@R%o@Bx^C#gPTSePL0+zM%6#6knP0-9N z&^KwdET^9Q2LmY0#z}O2`mPNmu&t7M@*nZQ08mP)C-1C{6_}N8ka-1Q#)dFj1g46% zZJoUxUc}#DPW|vt;UNS;>@-4}9FE)8pGOH}yD@{T$kGr)U*byA{gls%k!h|2FG2F; zw3pMRkDzJ3k}iETI%HoA84ghn2`Ik9qLR7f++*HBUH8KvEy3fMi%Z~iHNGpd4XHO? z0F$Yt-uQBOB8z|WiK?TsW)uVrAX*l_7nqA>J3goafIajP6di_*cE1&+AI1xOF%Wo9 z^2!|oSgw@9{<e_SlVGD3v>1-vF#FU7Jh}PhK$(3plKB4 z)EhpGk4Mtvkf#OCrn8$37l{xiC;-Xgb*0!qNY-+qZ}wcwQ>Vgw$SQOj!$ROKvIIJ) z3r5ax4c2%UX%b%_+#`J33@{0^RQL?Q&&2&K+Rhlkv(^sWfVaM3+XfAU&-LIVZglU8bbN%<@W>!Ey52TeU+LPw5=LIr>>pLZQghN=J zWDsVMF)$X+m6M6efn8h<+^QxAp7kF z5`~lCbwn1x+|>)tI=6$Y5-Q?YdqksU28n+RNz9qLIDnt$C|(pxIj`) z-S%lLhJfr_xK#+cIeirPt&p!Ahr4a)y=;3!ScTV}OLC2Xdvr+c`wl*L@?Lr^c4}=a zuQ=yd*wSFdIlmMw4H!pV?TDxd5tk0@fkY)#U8e-Ul7xjHV!DQqMXQlbWQ ztVzm#B#Z3RuB7a56I4K~5&(wrqv)u4kpa>C4N$rE7}+Au02EFH8+$j!L|GR4sSce0wLpuDl|DKR#ts@Ww4S-+BhT6!ca0#?4i4 zq)yErzvA8!wc_*PfXH!^^dA;0tjYui)@8qLxENnt}R zAF5O-BPhqTd}zN$Eq(=$zZg7|(=(Wt!A!hjA}$NRtfX)J9R*;P(lV7$`OjnscUb^0XZw8 z_~Er)49pCOEJl|C_rF&Docn(aGm|T#N{=tZ9D|$zS}XtB6zN^KZaQl=b$s-=u54f9 zU8pe;ffEVhI$AahqBAC~&@`Y`dS!(&h6*@mcM8x4|crEn9FmbQISDYDeOJ*jg z8F?UJfZK??x}LvnHxfL(P)VP25guuPcsYH}7NOX&XEC*o(QA~Gi2n1lLu<^#vb14G zH#0hkL}my>(HED~SFXUpjq*rXT)9&E%A**Y3yZK^M;6f0@GiCpf(Z$e6(@3N%%_}W zB#@z>3hE-Dl3sNjhe~?YvBF}b`Je-%w1XFMI)yQB(m}6=&kjCaM+(X9Q}7Fd87KK> z7H_}~i*Sl0snN&|EHpIMnvJw8l-q5xlKPV&**D|7G*BRU z*%dl3T~+6$oO-f@xy?(dC(jKuFf!QUCBD)?f9W%CWECbVl9e*|j$mFsvqIgBCIr3; z*bRz8HU4yqMgpoNRHf9PN>N(X#)U)%cDf;?F*2J*KasdLo)5UeFv6(ZEVI) zH3(Z{V&Y5Nzuc-}0A=a?JKDuQrI$aNznPh1(#yY-(TWbUh6hTczlvq$`WZkJfe99y zQ+aWMF+#@Rt}dJdynvZ$Q2xgwfFU!~2NfU2PBr|2JsW&F&j1X5ThuPn&FvzWsM$qM z`?-Q$q+yI-wSTO7wHt)w@tB9brE}i>zNyyX>J?A@_;=XfmP}PYeuAwy(RUI?@mfIB zL(oLz{rCw^zS}rgL>6daPehxWP~bhF?WI2ZF9pqZE2+;u7|t}aD8icrQ;L)Hg|JZT z%)#$j2)Z@WCeuIp-U^+poYJN!M2kjINok+fDC?euNdeg-@f-A2SS%Z@3pUDL)yGEA zTmEn%-S0cNeBVhk*1kckAxHYZe5o}f)_v$3 zLAwkrE{R1pMdWzEL48(Qd-umcYH5q2yyfAKk#<{ddHCbBqe!Lbeo>*&=b{cNyg+7% z=duh99`Xaf{TO1w02ci4$JrTl#A#w~Xwc4E?tK=|g=CBY&LuEvRIlN=02k2G;H#E< zkJZppWm-j3WZN=%n>Y)66>xa|hD_AQdiLq;Y*$iezmQ}Je%6@{Rv4;0v;l?rFaEF< zP=pqxHlHaiwFyJZw?8BZBCt9%pYTVl;p74BO5grla=H=A^FyW))>B#RAmNEWo!REo z7yL1xnOsKJb2%Ije@EM04ZXX^|{uaOn{C2F8y2u1!EOn6;*~K;-9&*r&EYcx; zA&-~gN>pVa4F$_W8>pTzT@9X(uM-t<(dQOC-FMs9>^tzB)gRr<>=pBgL!;ND=URA`0!^))85$k{Bb!|dXni2l~n2X(ce=Vu`k~R4?~LUQ{e;R1y0)fSbA1Zjtdi`6TqU;P)%WgW5PGm9OQ)P+Xx zl+v$$wLXE~e^G^($sPbn_WCw%SYxU;aaNx84XO=#sNk2(08h(-vD%uQ1u=ve4?Myf zNBNlh!Wi^vLT%;L4IKt>(HqX?p%u6chSZkvYd$}*=;Vt)ohanAA|oV=U~pU^0N-$~ zaHmKk3Kv|Oi0XK1Y+yYsv+JcN;;+|x0FN<@yu!sG7D5(!vUTYbx{U@= zygBeYG8YNPU06A}Qe;1^+SHKMN~99f@N<;NyT_M@gdpQZMQgEqTg`Gh^(QUM$Zs3y zt>}7B{kJwcifb=k#f?TH>6ngt__30dp}rLwb^53w{!Jx))OD@GVx`Fk)f(FxpGv$U zDY0_JJkuh9H(NF)(Mnrc`V}7xuSg~RihG#WEi4Ocl(sO?L}n0@YlLN|HvTbPtXi&V zkd7b?z1=eut$`2m_+(;UmDIrBR)rZwEH$L^MGih5Sk$SQDVFOme8636%Bg$)-Y_ev zd+rOxwFRLA2)Im<+cEsZ7ganM*5qkd7 zO(kk`%eEt+4W&Nv;~8t&AdTXn&|4!4(S{62eg$SLE~kHTl;L_((Z_FcIvGRkNM~{{ zk0b`vp|vPHGWJI19Vt}NLIEY&k(2&R@*P)FJMxTP)-;FDTs_n%VP9vi9!iHMYXrox znt|tAtP&xs$b)1x>=;C?4A~se3Z`_ehplYG#r(;P#cYu2agWe+0!2rxB+7o})KL#0 z2|em-;*c`Z=A)6KO~gPOSr#YYVuc_Fo%QJPLN=#sHiiE9VSA1g^+2g8r%!nl$@+d_ z9rwt_a>{o!3Qa*B#KbTxjI=uCJ7no)A!`{HnT1yiV?Hy*pfpAdiCYweNJd*)Zu#k* zVdBtMY5C~~G>Hw6QE7W4U=Z?T32tRTisC2wf^^^OGpy`ETPfXl0}Jr2z^54yscCbl zf4~kgM9!^tQZ+~dxM!wP7CCJ#4}Lv-+E{yU#wUmdh~Oo%=yM@}j9lfcXo+tX zOI%66YmlvPDgCZ>8Tf_X?zgh!`gg4h^5!Xk%V3e$v>PYD(j1wVP3`` z*XB#oUlldSJb=u$LC}Nuh-19szxXkh0i@_oqvCdkTS~9^?@%wTHm{H?I?Mp1ISvK< z8r;Q(Okf0KlCk-xA=om!2#shUM1OafeoGPV-_3|}dZGp!xBP&}M>NXdo;OllFp43U zlcE?&)f4(!{&>C!?UnSp{)_oxK-UJma$TS1px{Jg5>J4y3#FK8302D!rd$|*=ku5l zcnkOcmDA6-i17-Rr!Cw)Qa=toqLhBdmR2-jGsi1`7p(Cx8Ak{ZYxv{wAb_lR3aO|X zoiP$+^NjimZMK!I4IZN1pd*-ij+qM_6gk$2#o>Jin32<&bi_&l^(&`dvJN|%ykt-+ zSA047GNR?jLGcPz4xguq$x)CQm8Ys{oG2Q)6GBz+q;`H~>qt3$&4bmVdkDR#Ma>{9 zrSvt^2G)u|9~=pcNINKpo$3?GI4b@Y)VIs2w>nxS^;VljyAm!b4xr5^otQttM-u_( z<$Ox=nLc-{)<8$(MKAun&|oX67e7fa!E`!$8tJm(`T8=zG5owXU+4K8=uk#G7D@>G zE!_A>T+r58cOO`7EQUj+Z`kZ*K_mWTmcb!eQ)E?rELcd@ankOuXEMb`xoaWsNzV+S z{(qh=yeI#292+WZOc~{y3S0^NDQ$SGLy-~8F2SsTA<g_pQ#1pJq#nx1;ZJAgM0n_@u4J}L;On2-E~KQ;4E!om_Nnb05@_JZAQM0h&CHNqIRl1`oZcZA_Ey8N zrTB6b1zU<2gl&lw%*HY&$@U>_Vvd3S*=XoHJOY2qVgxRGrL;u?_nm($z-kzx@6 z44gib07$1a6z^F|Z=a$Fl@W9y*3oq-;#r0?L<}1ghLigB>8uVKC6uABnM=_W$Y)z) z#xNEL$H0zK>er`XP>zo=_PEzsi(=E*D)==t{Bq0Z-mw#nTo(`m% z;i2Q-GZb|Sp<~tBO7OrcJ6-C&_mWrRzV`?thiv39=itNcrrMi4|Z3-HSEmeb|`ni0}0#t(!xNDwXm z(UtiUHMX$bXWac=8;T35uVABqRqo6LTL-IEU8akOGd^Zs$#XYK+4h> z%+ASQg9n@HcW28jzq@gaBE;G&Ex)@-9W->H$>jpM!Ex`v6Q}Xt%zSiABWe9dqm-KOmN{3!~1|n7Iggc&z>RH`oTLLO$Fk6CsTTY-(zOvbob+WpZ_>dTWIlry^)EqA|V5*X{MOd?7)(eG3-n+?~ot?s>khLAOYm|&kt+4K(^4s?`6Ji%H72+ zAit>3V^*ctjCJLM=WDFz2Rap_zxBj#QS4=hE<6@Ts>UuLVt?SS^9n^x&K5$Akjx1BYj@BR<66@ zvKRw;K8rYGKUyCdAAcQI-%TAno9Uz&WOMLE(K(6eJ}zc)|KzA`P&mfHv-zILq*$4G z4Bv%;FN|1|4lu>G@`|pbgvX+^qU&hf4p}^umzspj1(vKW64nb8@qqi`T}F|YcnhwP zg$ed7YlOcC?GWYEkKQ_pxwb%yrM-#|$El=#^fqqn9S5z{vngf~W)sbg{?S{*HYQG3 zgn0%-=u_Wb$>xO6fiutK2Fqko0**+Up*)F<;LoMhw~r?d$9~Ey<$6WYJze0H(u~f{ zS|$eC=l>dIX{wFvVRT6Toh0FT&KSWNRY8_`>_>Q1csB3|P8x$4*8p>OyL=`rB1cBO zbIun?ZHzgi)@Wf;Gk*%J7k%FW4lvLh-Z%4vid<%#7!Cx(DJZuGgRSvIvn&fk=P_g= zG>q{#VHgv9F4R&Ng~yqpHTCT$4WsM=#dRPM%*yF*lMJHW`D(-bxk&FENu*@dj^hRK z^w{c|XYcvK`eX+(B{Mu$QX4)qOaZ>B4WAV$Uq1Fa*znn5jARVbIWPou!)KWz1x>jQ z@jARFB>zbA2V7^_GiZ|#HX1aAIpvnAd}!2_mML?ll?FDCap){1FzXWtX+Z9%jz21l zp;985T{yP2ochfAApN3}`pnBfDr3=NEP^Gn7;T=&-HR+S@ZLz_3*_Z8{-&JD9E$>N z-Xi(E$dddFT~KP+8IQeF&$gFRnd7#af;MVQVhl~wz)mWR-@)oTVQuVgHZgAbEuK+H{q!Ics8Rn#$_4*#_jhpj5$54z zU<`XClBW{Shho-1 zM;$DER)<5CBN>1t=+Ns$)~D2bFkutu2%JIF5dkHj$g_~RU;nRoO)2&3{{g&F`nUR6o_&Ws;DE2CeA`n3`r?Z|lWNkA2VxC1d z*~Awzr$wO1QszQgcE~9xvMh7j@xX203@ng|RIe_jRKi&~k zMu`F!gZuD?5Mh#$aJb;0HKpDQ=ev|ny^pQ)2nc`p7ps{Q+8O@SrohNshH{x6tZPpW3uNDJYEfgl)=PfDQV__rF`q0*yEK?=Z-|dbv zZorGBQO5DdZrb+k%dOIi{QbL1Pwg}))Y_e_V-0H%J#~jb`c$V(l6#_!(xjjHM0X@j z`jL%#M%({|tBdIQd3Yyd8ou=Oh%5qHwo>|G*kUgOGxSH9g-Ar0d*h`)AM+~B76J7c6jn*DFYYWO!0Y`KavXG<@v1WHJ*sf8lBbOL@ir zoI{cObol5VG-o<)`Og=nGz2)_0UQlMD|QAB0O8;DnEWQW39;{T>ik={rHCE^V>Ymo z(D^X#TVW0q1&=qeslY(kA|0A^$%t>#zftCL_I{?v-C&8lO z1+Ar+D=Jd}SY6VP6;awuL90*iA+0_=&VLtvElX;|kWO5!F}PB~2~mL>N~rQzxh69A z5u5~;eksrmb|7t%Nuiv&d=k}Ii>Gl{QkTCDHVcD#ZNu3e1p4^b7d7#0+)DP`JnC>^ zo6J;yA2-Tere>76@>T_-Ov4({)kc{|U^~*c?Ii`|w!aSTq`~T@c#~EUCk& z{1(3eOx)W82jRB8S$%}!ZS}Um^fHOIu)oV{j#JFT)Bi5RVCS&-ZmfxcMV1`R#`T`W zs!+IVdyEWix2>~%Fl-i&Y}3^8PCyhoh_S z!6V3G9|8yBFo+?q{LRd>NM>?aGqgEpnJtD+*;=VajFwZMeI=E^K*(30I&^=RQlGsB zzpFZLlk~$e)Ng5lyu5|}ljt!`XFe2m4pq{bgV7U-=444vd~Mi*FJPCvVXSCDGm+uk zlNh0Y;~68kzc8p9&jghWM3_-j0p&R?!*v*}&uKO&Rt1Wxp<6I(f*r3Mn(Bmhjj}jt z*I0kQlAeBJ7GA+0T~1Hm1T4ZK?_$yA`NtkFrvd6FJE$myS#y8+Umesh>Sl!Aq1jZDbJ<700U$`-Yyz`o*^)gwfrj9d|t()Kfm2upp4P-AR-?q22^3+eRpohR0 zucQFj%R&9(@+Lg1WzVM{@19ZN`J9G=?|~Cu+PZgYE3DB!b}(;7DgBS3&ZG!%9 zhmY~cSoV-KO;XMw0L;R$F!q{K`V5oDG_4{s#Y$6BQ6O|sW1#C9Cfcjvk4YZF21LN& z_E7jTlv2K)W!2!T;dSu9O1k_{tiM<(UH+VmbhaoHU$BnuNhp%*L4ig@=r~tTYxQBS0zuGpvgAuB|&S7PR+@t9HWszq;Y_S5{JY ze+9ImuYPC4_U#)k-}%b*Qp)B*g!Bq20!ON`p&jV%uU>ZHcJbIv7sDfP88>X)dg<1k zuPmodzaF{%>E4#DJ1@U*#}01`JoAd}aHX)p+vacB?(f{X>8eXNZ1=WZwSC(aJ1%U; zn|J84<_)uD)~}(=EA~<$QZ%eNGpbNLFf9(`0}s`TZhPP%USYyVq4j}>Tv5XHfj8H# zYb*FI3r+h(3y+F49C6ClqqP-IX7&y!Jl_Z{Mbx&^woF)URuqpJMu1@$Iily!-;2f_ z>-nT7ShQC_xRI(#-HoUu0UW+&h_9Fq1?YWBUf%{7nH5@PVlM zNK}0!s#FSs5ml-7(6eq9&nl;0wI3UufbRUN3gK_V#vNB&dezPgFGZxlxqH=LU4DfZ zIoDKl1%AiRiBNiO75$iTeAhXc2I`Nmj=0KN-m{;R@Jh>jDq$+#hTkDJxOoq4S{QGj z=co+}#TtZsd_bF+U?8fy@;G}b%Tf7Taw9W}b{(rMnpsW9T%K@h5h1GIwM<@#8K(3L z6h|rK%oF7cN-dMykN}KVR^0!?ac>F-OMm+rPjmu>|A`(0czd|&kFZJ#HUaMxUWS&R zYP=L%%TKS9;lWpoP~4EiBE#h{!~&t{#ytXzK(mIUe$byyv?*Yv5rH?h9Qb~n2~4eL z0Yoe=gc*EI(VyIcSFOz;+1gEBcyw47VF&cQ^E_nrB+!A_%|k=sZJbM$sGJ}V_n^)q z_@#`7Ax+)s`L1&at*KQ2&yryB+!JUAB+%^<^kS< z_hN2d(|m`bh}L_Q3KiOKJdw^i6tMuRY#AtEi0ICwsS}MRV(p=*#>}K*6f89+Tn?6{ zv!Hy={cwfAVE`|`@Bv6S)5G8yjHE|mTzE8Mwf!&`4 z;x(pKRZ^cgGc>Yr+=L?&CH&B9sRD#hyT(K1y?NnWcpily3#g;Dn77hE@rRd_uO|la zV)8Qs3&L!1fV0Ib)YxL-Tm`n+umhS(myL}LlxrC9j4m4+S(lA1rKb+Ifm(#EHsHuP zjt5FEtW@UKz4wp7{=#KEO3WtZU0T%E;$H7Nuy`__${M-}mZ@c6xzbAV={(F?B zyKZO4qgM>ScHdpc!t+a~ba%Xd?b`EqU5s5o?+E_hi8LmB;WBFv9_-63meC_F^Zv&C z3civqZ=xpGyNsFN?7~i3zf^{LvZw~(z&g_eLW7% zvce+>y=p5+i8H_9k0i&=M$Im*IIqx}x3WXb)ibQwYif;JH;eL4;6lY(H*GaRB9wPs zU)1f%HIap3Lxwvq%;rp`8!tmLKdR4mFWz<$P>4c}5z+NsJL-M2Y1fP=?KCi~Nxsje zKi7nzumebhTkD3Nk?VpRwwiFl>)j>aMz_xTK)Dih*Or{6HGVe(YpvTZzy0RWdw0&b zCE|n_ zU<$r1KjY0uv%laEFZr~H(Zp=^n@1W7&fN1vJHxM+{W?d>90#2bl?(BfW z-pr@n%9@jIehk!p%N+*>u&-q9zcvBlJi@9lKd`E5+}MRJ$eTu<BSz=)$NF7a-Jq z>^TX97V)PA1>#_5Z6F>z?o01d!J
    RMRDmZ}MBU38xo7J6MVXrMw<@@X9|*hult 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 C)r4^X diff --git a/doc/ionconf.out b/doc/ionconf.out index 7882440..385ef4f 100644 --- a/doc/ionconf.out +++ b/doc/ionconf.out @@ -26,6 +26,10 @@ \BOOKMARK [2][-]{subsection.3.5.2}{ Classes, roles and instances}{section.3.5} \BOOKMARK [2][-]{subsection.3.5.3}{ Finding window identification}{section.3.5} \BOOKMARK [2][-]{subsection.3.5.4}{ Some common examples}{section.3.5} +\BOOKMARK [1][-]{section.3.6}{ The statusbar}{chapter.3} +\BOOKMARK [2][-]{subsection.3.6.1}{ The template}{section.3.6} +\BOOKMARK [2][-]{subsection.3.6.2}{ The systray}{section.3.6} +\BOOKMARK [2][-]{subsection.3.6.3}{ Monitors}{section.3.6} \BOOKMARK [0][-]{chapter.4}{ Graphical styles}{} \BOOKMARK [1][-]{section.4.1}{ Drawing engines, style specifications and sub-styles}{chapter.4} \BOOKMARK [2][-]{subsection.4.1.1}{ Known styles and substyles}{section.4.1} @@ -34,15 +38,16 @@ \BOOKMARK [2][-]{subsection.4.2.2}{ Defining the styles}{section.4.2} \BOOKMARK [2][-]{subsection.4.2.3}{ An example}{section.4.2} \BOOKMARK [1][-]{section.4.3}{ Miscellaneous settings}{chapter.4} -\BOOKMARK [2][-]{lstlisting.4.-399}{ Extra fields for style !frame!}{section.4.3} -\BOOKMARK [2][-]{lstlisting.4.-421}{ Extra fields for style !dock!}{section.4.3} +\BOOKMARK [2][-]{subsection.4.3.1}{ Frame user attributes}{section.4.3} +\BOOKMARK [2][-]{subsection.4.3.2}{ Extra fields for style `frame'}{section.4.3} +\BOOKMARK [2][-]{subsection.4.3.3}{ Extra fields for style `dock'}{section.4.3} \BOOKMARK [0][-]{chapter.5}{ Scripting}{} \BOOKMARK [1][-]{section.5.1}{ Hooks}{chapter.5} \BOOKMARK [1][-]{section.5.2}{ Referring to regions}{chapter.5} \BOOKMARK [2][-]{subsection.5.2.1}{ Direct object references}{section.5.2} \BOOKMARK [2][-]{subsection.5.2.2}{ Name-based lookups}{section.5.2} \BOOKMARK [1][-]{section.5.3}{ Alternative winprop selection criteria}{chapter.5} -\BOOKMARK [1][-]{lstlisting.5.-462}{ Writing !ion-statusd! monitors}{chapter.5} +\BOOKMARK [1][-]{lstlisting.5.-266}{ Writing !ion-statusd! monitors}{chapter.5} \BOOKMARK [0][-]{chapter.6}{ Function reference}{} \BOOKMARK [1][-]{section.6.1}{ Functions defined in ioncore}{chapter.6} \BOOKMARK [2][-]{subsection.6.1.1}{ WClientWin functions}{section.6.1} @@ -50,17 +55,19 @@ \BOOKMARK [2][-]{subsection.6.1.3}{ WGroup functions}{section.6.1} \BOOKMARK [2][-]{subsection.6.1.4}{ WGroupCW functions}{section.6.1} \BOOKMARK [2][-]{subsection.6.1.5}{ WGroupWS functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.6}{ WInfoWin functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.7}{ WMPlex functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.8}{ WMoveresMode functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.9}{ WRegion functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.10}{ WRootWin functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.11}{ WScreen functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.12}{ WWindow functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.13}{ global functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.14}{ gr functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.15}{ string functions}{section.6.1} -\BOOKMARK [2][-]{subsection.6.1.16}{ table functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.6}{ WHook functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.7}{ WInfoWin functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.8}{ WMPlex functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.9}{ WMoveresMode functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.10}{ WRegion functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.11}{ WRootWin functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.12}{ WScreen functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.13}{ WTimer functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.14}{ WWindow functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.15}{ global functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.16}{ gr functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.17}{ string functions}{section.6.1} +\BOOKMARK [2][-]{subsection.6.1.18}{ table functions}{section.6.1} \BOOKMARK [1][-]{section.6.2}{ Functions defined in mod\137tiling}{chapter.6} \BOOKMARK [2][-]{subsection.6.2.1}{ WSplit functions}{section.6.2} \BOOKMARK [2][-]{subsection.6.2.2}{ WSplitInner functions}{section.6.2} @@ -80,6 +87,9 @@ \BOOKMARK [2][-]{subsection.6.7.1}{ WStatusBar functions}{section.6.7} \BOOKMARK [1][-]{section.6.8}{ Functions defined in de}{chapter.6} \BOOKMARK [1][-]{section.6.9}{ Hooks}{chapter.6} +\BOOKMARK [1][-]{section.6.10}{ Miscellaneous}{chapter.6} +\BOOKMARK [2][-]{subsection.6.10.1}{ Size policies}{section.6.10} \BOOKMARK [0][-]{appendix.A}{ The GNU General Public License}{} \BOOKMARK [0][-]{appendix.B}{ Full class hierarchy visible to Lua-side}{} -\BOOKMARK [0][-]{section*.17}{Index}{} +\BOOKMARK [0][-]{section*.19}{Index}{} +\BOOKMARK [0][-]{section*.21}{Bibliography}{} diff --git a/doc/ionconf.ps.gz b/doc/ionconf.ps.gz index 3f368d759a705b891ca95f54443e24027c03494e..c59b71a2975da81af6c57321c5d3d3dce49a4112 100644 GIT binary patch literal 239925 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Ͳ%*Q@Wn)voAng3wmX*T2u!SMwzcUnt$CF!C5b(3F7r3^S z9$V@WbLo-m$ITwXz!BDZeWmB@&q7Za()1eIM8f4+YNp0Uk^&W{ue&dVj8x}BY;q0v zOLy z00C1qV1p>~6sq*czlChiRpkG}-)kdn&LthN+fp|X064e_s{{V0<_sz|wE#=0o4El0 z;F_>kfR3#jCFEsQ_8Hvhu@&fZm?_X1)^;(p)d4-bSTnRW!q34;*lkq#fA$sN%aSEg zk*Zn*4wiE?C<>_hcN=9@Q#pmh=~rV(cyZg1C{o673kZgqIN`!{g_opdVgiDxlcQFfai1ndWiJzt<5bi(B^HUKWAfaNJnd-j)Pl(jv(8kL7~#fiZ_u*D(uG_3Yfqs zGIO%~Z{UOTKbY+)u942y5rRO|Gdc9TuAeG>d7GDpk$)~V6ej7 z{7>EDWieGga6ZSSPy_U8`}^Zs0XJ{#<A4(z^aT)yAW>UJ!uADonnNFin)_#QlU za2Ip9Lv}=km7I>roGS@b`zVLD5rZX&CG0iGAz0?=ce23^d-vhy^^U6fsGB1fY#R$Z zg*CN7J>R}m{g68@JXQScTlG%8URa&qxgDV*7U6vrvEPA6FI_jRCUn${PfYKQH~uX4 zP1%adux38Dxv`F&{F4!E^)bJ$+P&s^Rh#OUg0-cC5WktPm5})}nI%{7!`6eq4M#*B zCbV@(Jfn#&ZsGx&hj~sHyEWdtNB+Ctb{zH_cCdB5k*I4Q_cJMHY>mTq`FfS|uc@_` z8R5)StH1L17%USdU7b5B#CIri&7esb~$q^S)HBQuy%-T2Zj4!8d!OCZN6cV~4Z4 zv*Xfe+@0a%LR3x!a@sj#f5`Fn-H6`X)mrZ&A2p8G)n!i%Z2d*uZ(CmL);d#JPuO}$ z{8?q*2K`uK{%W5^!~^}US7Yp#`gHJaos%$ENbFO$KU*PNzcN2d>`q1I^CNQ30{N$x z{}TU%H$7>4G>;l(?EU4i7*nFZJM`2$JS;WpdiS5q4&O?BD*Wv9(u%I1bM|yZjlqYH z@e!%J>SHexPcxznt3$vml4zz>uc&?kHMfi!Bi@;RTdPLdi6Ao6rwpe3&$U&t zr@}vdLVa!Zrp?NhOy?f9Uj!UsN!xvjW=2h)TYwv5#OGd@QFAEAZFj@)ZpcvKd_cfw z9vwEk*=-`MPBF^e7mAKtKn3y{->Ak(n=TXr-u%vdeBYjs@Z)7V&&C>Cv!$0?#;?5h=^Y||zZtruA!KDy z@zH7PtGDvPvOvK5G*q=OCM}<#qe4!w+Alx>|9TepZUPat{ho(iM^OEBH*Z?-!P+b; zQIqFVvbO_L#JL;rbAP>i?a6uTR>{E)G3ORo#&P1uPcng@x9Z-A0p0AW7Jtlw!H3(+pB{V8yhcd z1!XJ|Z*a6mEH9e-Hh)%HR5w$tszO;pk#{<(1<(GlsPf$Dgvajw_;0!uCycPu9CUxl z(R6_y^TjVWZFpBH4Z5Jd5Qi%0x@c=WRjNaNYiUhj8y&@o_CRbb^GBlCc?K|D)9*ZG z<(-a@$l4PY#u)!R5v~=tl+niucf(o(ME7Kt(#wK=w|!3iRljt48;ULr?ba)uP+d}T zO!#!`NO?Dkn`MBp%_O}l$B@rTJzW^9pOd~ClARKmAxir~tMVXJq<5?XYhn=sIyzM3*Pe8yE>)^A4 zy3II8!yR4TlG_q8@w5_SIeD5ZULICU$)#?3(frejVsW!b@svnGjW2DD>B~bsa*9D$ z4Gy431C4U-QoG5hx)k~`vw@btt&V6}{jgV+sZ+8aOe`7V-{{ME<&1N_^JX8Ov$#kw zxbIc1x1sKLB-Z@2@1@C`Pi~GcP(I0LO#l;4nk>tEW~cj(cHhZvhD{~S3|n1ESwjP- zsIVf%fh!D>Y0vzH;wnpS$t+@vf4}By#&z7UKl6&;>=0Ml#!rvQ7_aH=Bw|l ze>kWfI4nBws#WfFLLa+lGchqNv?^XUF+FYkg-&r6sJ}&kSABSb-A?{@a$j(csC=-p zN`X3>8$vT7Df2n)Jhx91aqAje6CVyIy=(@9xh3KmnoAh%hHdiLi_px5dRSYYtz}sO7V$3n=6Dr)No$!o7yZ>p#$ZZJ1M`U-O;yCBMwoGUtGJ ze(&uq`%ZWI*Zj%5vu=Imf=3R|Q&Ll+In)@e_~Pr|3J=XjLpeFjnXD3wZ!*j_@3mJc zK-#jQT^6BN%><{@eveE+r1jMpVEk&;iTTSA`@?{PCXAq>osU0Kz`)p|$1Gqowe9h% zL$+h2nvVqeXAOPr;}Exr3{?Hlre7%YJMX3_GymlAy==CD(@wVA=9^SVjkTEEF-pbs`5v4OqaOXQ#@gAA362M#Vr{1 z)=!u9HLMi|5$Wf*p_+v}HS&HuM;7PBvqeIk7mnD_`;DRkwtjIVr@%5k4Rs?S?M`G)@U1*r$X5~5To7qLDX$?at{MC8og}}TtaoHK+Y3oj4n9WA+o4Q6OVQsWy2PKB zA*F?9-b%t(ccvG~ur@u(d5tslimjL3WpC30Kk^frah@dR{ajY}eo|5x?46kaiQ{nu zEswGOtXdiUVe45%=n6|+)=h(v=fYgqMPwN~*}^J_(V)|TcD@k{-E(mo0y9re8X^#K z%Q;#2Sz}g@35$ow2iDT2w?-y`)^w^0fsdNZ`rGO{6mRI$_6l9U6m*EStWMW&cPaWb z`sQSD@{>#9V{@POOt!f-Lt~rPO9KvlmmdvO%Chbz~m{YA~Dd-ev_WG%}@DJI+p28PL^b{CQ&3^%SY1o4?Q z6x5=M80p^A)E?;Nbbea?y015_D;a3{V-|Xip@;WAjf@(-%uE6SD}zZ0Uk_*A7r_7*t*BJX`4)?cBTX+4~3r$4t{wfK%u9nx}t@vG{#qeG0I z`Jm(Q*GcXbMzUBgC&P{PsAMtiLs}~$R`zIFYf+(&SXp*0+GNAhjn0FsUOSuie8f(Y zyMe8*=hnKepbA4R%@;9fmm=KPQSF3({ezZk9&w;s`0fvWw=gCLzR)OGgq(Z`_vJlI z)}&^^t6qAY%!dQHH|3_ajJ;az3+aEP>8t_N7%1%i_V>F-FO6XcSps^9I1SOSfHEP) zubx`XOKSIHIcWalTgiQ;w%glgV=S21bG*LvxwnYL1;A`#ch`TPfuYt&aFVdhkh)Pp zyX~Q6`Dy=&%~wHgJ5nN%&gI~FfrnzJf+XK2caW4juURM0GE=7|ox$tWR{J&Hw;A!F zD{Z1C{P1rRQ4$!MhcQu?@R$T5udu0%c{()C*TgP#?!3NsLh@3bkwk(?aAm2*qRdO0 z9M-upWwyItxvzFf`Nyg8#)y{32$kNMhYTokmjr8R7NkX2wQ)z#a&=45UdDg)IN_)i za~`~7@r66jfAy}%{HJY;D%~_gZKwjtNdkCYZ88)zRQKXefbIhT|qJvC|qx*h@ zngFea+{Vr1@E&idW|qa1dGGhIb60On{6hZ4ih`u>LUy_FFFmK;mi6Mu)INpT%Rf>rN^C8h zzD3Y!n0Dx;UeY=Jc+Pi4Vu!o#@pC%0NXuFIH2GYD61%a{q9ypPoGZVo`L&uV(@<^y z&ifrQFXF(lVg(+v7S*(N;pqMPTw}+~<)B^Zw-UI^rqX_00^+y2MU$gB8IA5Y3ZLBS zW^PMq3mJf0?BX|n)JSw~3R!<0MlSOZez!w($L$BB)(2WTr3aIsbH%Kevl)?hJrDgP z8F_e;UwN`Php{AxcAd2Ybib-EI}cFxWBg@=={5Zh_nwT=H_jOA=Q1_!{_(T3hcwrG zE-AZ0qr&skQTJk^PGXjh{nE{tk0!PKA3Yf^<7HhwDVEHcly%2I9%d0ADLwXo=i6mu zj1S{4F2rXR9!U<2;nE&-WSHY-nozVk`Rdm+Xtm}0>CA!4o17&KJC(g)3C?VYj79aj z=Up~WgDI@_zs2qWxP|?nP)F8<%Wd>Ff&$RZwik$KI(|3?a{S3RT?4D zxnPVWSLtnwR=Xd`%WxV~Xrwl7PYf`pWQ*Nkkw-LXvS@jl&;;4aspR;WyE;kTucjRj z3MyrqoNeTIj4~d8A&4f9e$l`FlL%mvuSN)8LNG{+mF>dL>$&}*%q)hPAL!t#O=a1k zbJ~R-d3hIomX3F^{QUuy&lNm8{5X!mYC(KV*Ddz4Q*dUcl3>PHd`y2bWEx{;dR20N z`7hmHzt^XRG0|f`k(fjclqs%k-c-gtO}tzH)V2K`|A>9Zzb@(?w#@6NDz}O6ic|6u zbK&>%$k2yof$-CAef6fPJAOIyobPDlW3_U^>rP~Yl2`1Y){;-ujAGb;azdYJCN{L( z6h>NkU6X;Wa8rg@eHsIL7xu&94?sEI{=u#oG3I6|;T4STo!GiQQ7l7%uJOFN>S6_( zvN$x&f_+(95*ShG5j|CfVCQPV_eF_0^7E(a=5_6<>{W8)OZ8c}1#_@u_CHrj`&=pM z}4lmZ?C_Md4|Xloc6f!rDfQUU z!)RFsXSM3s+~qIJhaTYQxQDNHv$7AqpfAVZ#_w7{wD_EK)VP318n5Ngab9U!E_LUf ze^oMgEq_Of0mH7I{t$O3cbMGPJK_{v30p zOzoC6F{$Zo=6Nw#a*MM08OK-8sx{Lj>&xtoxuZ4sC~}RyRi=(snP$m3t6sDEHn$t4 z?fl1$+jzK2SRW+J=6CXUDi6>vh5X1cY$ep2#3_Ac_I4sZbnUHFxfM2b+!>i{D%YAS zWw0o@rqlIpsrnWR-PGltFcp(mCqwQF)q&BW-E~+q7#&+pSE>j!&xJWi;p0$BP3*TU zhEUq>6inR}2k?EDP};J_BI+%)7tPFZ!80KjvFQ7Bmy{M3>o;Xm0%-obL6;rGAF4L+ zmKoZPDY-^FXmV3&MX?UgeD?F%2yZQYEUn-Tvqi5qn{$4XwU~v!g7UXox}a}80e0%u zx2Newqk(P<(Mf~9w4=46{jzz@4A+uo+M`Wettw@htR!ShP5$e9(+i!}mr(M~8@N`f zTcQ8p_jnjfypjgk!B1y6(d2;zzw6!gbu;IdX4Pun*HJ3=4{1^AU&I+-GR1XDy!Y6x z&z)hq%M+f}EMk3?R1lHrrzLm8g+Z{=94E<>!G9_6V(@m;)d0X#hnyrP8mxe-8Go1D zIxk%d=f|#_3z~@zfKJzDW@DeM1eb@#Lb0oKw`KRHiz}oBa-tFkNItS38X(yATdVf* z+%cz`|DLtv{>!~*FAxb=Kk{iBm;#2{ScUF)-SBhsD=+iPqPx|z^POoiGb(iJN6cMs zo4md_J`0Yvicjsl>!E(A9`;O57AI>et(x>iPHS1Wr2WFUQ*h+%Ggw5w23J*Ma4=X* zq!g8bd4~QSeu)-BC+xH!uIu<=oOdAD*Ke_g-8;B+S6H@5#^&()kL6C#tveIyfgb20 z^GfT00rBa(BT3JeuAYP-I%@4~cg^&Ck`q>Ju!QagL0c)?D4DfT{M15HmmNOZ^i>e4F5kf0t}_yuKtrP#Lwyd-y1uEZZ}cBD+jTT8DrqBLu3AVw;5pPc!!ohtoY<*f4_rz}5cpm998w%Q+m*T{ z#UP2#`gRypHqoyVJ!w4U2>NQ7D{NN7@Nfy?m=NfnDRSvKyX)J9I)RctOFdBr)DIf3 zm}_RQ8Qy)b6C-l&B@P{5q0KvwW_A`ZVsUQ~X*Q_5C4J7293ZD$x2v=)7kTG*6pg$d z?Kc*&OXrn!I(P#ep5$j;k!$anuF&5FcpNM`)t3zSD;}r)oLVvvXk7#|W7!Ro3 z-~RC+n)&4)gWJx_^$NzX_UKUxG2ylCU((s<3``R9W2Lpx(3mrR23=%ll)_cXyj(M{?WJ#mZBL?3d7t zENyG{GS~JP-KO@4{#tx46w1F$BlPEd_#TZi&)&;?@ssfgjounPU~>)b7xCnKZD=^FX`4_T7Bc|d3ABVPqN>eYU1>x_27a} zet91B2W^+ECuy?qxcBcYzSHfzRofMmy^``1QLLN5_qYoGQt0cVP<(@FTxWH;!<_Y% zyo~aQn2hx6#(fECv{};6I;{*Qx_SDpukZd>!gjaYzwYy;u>w&q1vO0?tf3C0hDz1) z#-Z{fR8vaHytBpiPcL)C5WA4Gg|GTMu_i6~)vx772~|C{y2P~TJ9Ue@aN zrkCCs+QLYnf=gHGnw*KD<*I^pI{j1csq1CCd(`A z4%#ZOD3 zBShF=UT65yt6=v#S>jt&*B_NyZCy9zU+*|J*#*11Mhs{4-C{w0LY+F|qFjI-E0H;i zh*}dJjvR?jcQ*! zH^{%WtZxxxAj4}^I9N5}%GvqEpfYn=rRjcQleZAqlUAcFZSTck=Z?0BF*|tepJp7X z24-P6Q`K)xLAA+naJaA>(O5(L?Y#cWU6Lrl0Y6%{Uho1-=`+D-vt$8W8zEP;P0biQr8D;Z7qamDPTq`9w78dbqgiwl z%9KW=Nh`V7A-;|`djQWZ?N5JQC`k6{HPcuZdB^yj@NayD9N>L>gHd0lcg*##Otyu z9i8s>Cp?y7)t%&2kLQF{McTHmc4Owf_$2xPdI?h=bvm(RwW((UOQXyJf`Y>S#nxai z-Zq7W!|6*hca^-Ee2hdNvnPk9+A(GR+L?*85tFc6x7-Y--BNLxt@`9x#j|b3G$7=1 z$TZ07qQoln*v>XKxV74p|5r~q-C-Ba?A5(u3)2pOQMAB}Y@|~ON34Sksq}GOL@ejY zbsU>2kR8-Y$Oo|h{*Q+$`HF`uPn zFpDksxD`7k|Fe2jCj(Vc&i~If%J9i;RJd&<}>_7XNp3cIw_Wx&h-I7ghf+sUxn>RRkRu5zW=Zu>fA}LS)fx zw(O_*zm9P>b*7vq^W!qTzAKliK1f~8nLnF+c*3qa2o5Xbz{=i<_?r4CQ01_2R7Knk zpYAOlVgI4%_u?;e`IW0H9o87K?hdD`JYvnP>fNucjJUxtyN45ZTNXCxH^n{N(G!|8 zX0Mr2oa|>iL3OK0-$~RjEqTYQICzhHNxGLIp{K{StSdUl{~5>22!m52L_->l zDA&WOW9Mj&!5+5NPpx;)^H>~uw-;+Lu8nGM;oebeSoeS06!f#qRiQN>J9q~J+1)no?v*N= z<5WQ+gk^XNUJjWuEw@aXmn3!hq>eK`ytN)A^K-S`AD~LBz0HH+R1gG)wtch|Hq@Cf zE3U2K`>HFrr|a+}=gjS?|EkDt%4fRE2GNOIxqEd!hp(8CDqz2F3BB%YabA~ZnTYS! zr1k1(ewC$rGFUe)6#8M~zI=2bmsGO%c`HjqbL~lZIb4mP8B(m1Y+`1=FT>~V@FDuy zxZKs4f}aX^4mGtOaQ$-Y_UcTr*}r*(YazPQuR6XiD;F1Ow-aO4a3sBH1F2@wV1_I% z3bfFes1*v_a*2}G@#wjsU`2bnxIFM)S^TFOq)Kq<`gchIvDy6# zzAEubbeCq?=(JUwnWV%ngd}22fsP8KqY`Yz+M>stGaf6}=U7nIvw^sFWN2ObCEqrTj?o9Zc zMm&t4AA+_?Nhp6nO=x zpHSpgyX&b}oe?}4zv)oAccPz3^nA&Pkn$9uVTmqMGkvy+z}7nqyFZG(#>2k^H87Vd zz!>Bvn&LG|b_0~RLs}&QU$z_=D|)AZWTV9#{-|si7`|;4QD-AE_#7FtDmrpKi0G}4 zm!*?^O;drFyUJ1$0)29@EtH~c+G}~W*K$N`R(-(*b-eLv(7`L>%*!3|d&Xn=7Tt*1 zS5c2|8}hx_=?`uzN|#w)*z{lXs5S)VsrVgVS&Ad;DHi>_L`?kSM5cpn%hp#El zN9zTBrB-kMw%u}NOIyUL-|R->Em@Jo^7Kox^pe0|%eBy`?9k3|hOg4&WoawdBc=OBoft`DmeYTVWNMTa1N(F` zW6;NSwIUO+KOxd-C4R__y;5zr^6F^MX!BfwP|>H@;OP`e4|<7;I$qYOXkI0Bu67PH zeq{;eKA09+%DCQ?k3gC`hjoXF(~`a;htN4aSc5MDk=#c zh@Pd>#yk#?87W#=-KJjd`&kYp{;3Li;p-d!Vl}f}N@wA7ZjBB5&6TvX(U`lpLp+5x zTgLJ@J2Nf0AWGN-TPqdAZaV*!4ZkwK25X6dCKD|d&PC_jQkU-h5X!{28pBZG6%74x zh!=d~>=MhW(T|~W+wHC*o&zp|^;x6FN+~>%p;=v4$qyP>-gVZF@fzDfS5oE}gCc|h zB6uc0ww*+tXfADyN2Q+4+%0<@&I(4a{aSn0wxY}FFXw$uU%IVe!99(iEE+K#SrSTP zKVkY>?3+LL7D={X>g1Ce@q zy@c=AzVat$+ztQIXI9^nv~xXktzjcl!ZoXUg@Ag>1E!a8`Dx!&taKv89e?ms(|LyO z*H7#kQ_a%hvpvcWU?3wCYVOWM*GO!bYgSpPSU^)(p?aJ@?{7i>ANTIa7eaN)7@FKu zh3*>g{Oy96zVx~2%4&{eZHShNzLV~_!#JSF+1F{5`Lt;2mw|KYi;3+Gh2gd4#LY1A zltObY0|4{bAuQyQYR;U;{u3E&j%xkW*e`|ZY&6`--BeG+MZiQv$tsWKp}wUwq@nYY z4D9}Qh0f(`gJW~^{TeE>s+V-d?Y9kBUwCiSY!xo&88DB`G@i7-8#TNs-QvVG#a9*; zLZSVhh@*XNq&#<)Mb+~~$)cH;@&{&xB2L;qj@Qb3Az zZmBQGhOYHMxGwHgtm&5?*E5R-`;mM8@p67qvni~99ZxM*9b>QFif|j`O8VIumTJ*8oN#2jPO z&-g(vr}&oHi*Cuo0&dRc#h6!SG`y)=hLQzhwed`^I2JPYQI5)l!rqW4TNafIK8RO> z){AE%AnacD(%?6qYme@g)2@4LY5jdCc}tpZ32P?h$LR9h#C`%7cBZQsMivN4 zaEUj!+6i~QoDJq)Y!UNQ2$Q@$1lfL>i9zT|*cx=LIV5HbOf6<`^-dW zl!4d&pqr^)kok~^AEEZ}`es(G4;`Msgbg#>g|T`EP*{_%hR>phoU)cs7@dO&MwGyL zn>Eh24E@ut^Gf|vo~CCLuU#qi7I$Zp;h*%7FD9mzeT`Q?6}Kk*Tp#ikoA)y{S|QO) zt3EIr$T17N*R_vkaj9#&6ePKnd;c8jo44RBpt*LYy-L*9p_guRZ!T*LU>=pLe)UUl zp@C_*CUiZ3=M7NFLy`0@%_L)`8`>zm65Yx(kQZXAW2fTsrfJyCStmHOP<>%dFV;I< zs0p(E-s_4TH;Ew4miw`p&O+u_xq}Vkse;m{=Fc}u=r(ySpqfV0d0OM|7zH(;P{f9% z@AWW2+3Zm!)d$M*(KoA=yh50VvXPaYv15GynHVn@{Aa7T*e>t^C^W|clL_I7DPy+6 z%K!3n*U9TT%H2pH&-;k}rDMp^wqNh;m&E8K2a7M-h^UDiJbNXRWI7I+r-8O){Txf@ zCNW=!q$%D}D%(@Z6|E`>@}v{B;Pow84QTyIAN#{8joP5VqCd-p9u7NxvKQQ=OcOoq zG$#JAL7q#z{5E5DcIRV4|Jhv$*hu_GL*b^2lz^sD@3>b;@n)3oR{zSH+$ph-Zj7LtIM{QWow(c#&=Q>YUFOsa`90{6ZTk_48dqQ=h_=V*{C)r;Y^9n6!j=R-o&7qBq1?qc6< z{ac|dH{3EDpiPb>3G=$!lHFRP^gsQWe`o_g7{0rv*v}Y%D*;BSpbFV zig`!v;iCu7on+m+@|Zi#)e~t>Bn6-%&s~4A@hG&bS=!x8o?~vWK8uQR(u@hlMW#mN zznbF-HR!+N@bS^vt#})=MkA{r9r{o0F;Jo^%aE@+#J-+&6=RsYIiBS+h)m*=a~+g` zeQs~EpGuHk;wX?Y%l35q!=zP9-fqnQJT{#Xufk6k7|?T-{w5vI{xx+s_Br>TK{g+& z^CsRk3}wldXg(-H{TgUDlUL4WQAfB{<{*9DT7e&z9%!S3GuZ!F`^#5YR;twashf1! zZ18u6L_du%N_&%T&WWA3Z+>JLs~I-ok~s}ijyn8dr+74lrCc>mQ0RUnBT75QiV*Ty z@mgRIimxl4wzM0)mu9pOFLf>Gyh8M-;>&%bc@>FueT>SpEM(cfGzbY0R(8!v#W_Jbdk)$JNzwil=`-yUYseR+~)YOEG9 z&3f(L%lof^@Xmf;_nzSp}SnaJ5e=3(5{{ATZ(hUsX8fKzw2tY(;w!x?X=hzg;1;?6ax%ZY1-ZqVMCwZ(&04@1Z zmWe0|Z~@a{iqS2@agEjHFX6>&V(HfbUJVb=z6cWo^sbbZs zl|X%V;K63*ksINIG=Eq}_ILzTOOD)dKKNlLl-!HKjz{hO^c0PN zb#PXcB#cv#X&w>7Vj9I6`W%FL= zGSBcE?B?N8QHuR!T|+JCL=ko#wY*g6(9EbM}k@W9dsuN#)i zY=FBPl#=HO2>=q8#a&1c_r70M9R@mHJFvPQ4UwiTbg8bHC&&z6Xv!U}|6)muakR0LmiyNWcP1J1p zNpt54TdVfaW@RZta8qT$rrlk`d+lv(;mVsy=i*{X=sGble--QTbmwmSu13kY)_*iw<&z6!E^>*F!rr2+w8D~1Hd&1z^AG|>vXq5?6KB2GN2Vs+m^=3P7jy4~2pfrOKmDMG72c4f?Nj-m=jBJ!%ba127T>H=y5 zWQ(#F@=j_6*b54m3|ww6gweA-5UVn1uuXig!Yfz+pulGHH&h}P^?epMi#+qn3JgHG z2Cx@cTEJ}tB-RCZmti7hZu9xCm55ga6J8goV`)~Mk%%G9o{F}FL)}UhaSKPsOG@&L zX1#8Lh2lO?!eT#Fv^ppOFi7c_{d)7@<^Tv1f1x#LkT^WQA?0oM%^oD>TS>t6f@!ik zN&bL060{Tp1lAHi^Xfr1%r07f4z?8qCj+7_t2|qYcyBSc{bI4P3-ba92s@Sja|c=3 zuDOQ-a9HPh1K=-P4AsVj0Fdl^vy^KyiepH@TBtnb7d&0Fsmvp)ZeNZ&=@&_;&Nj#f z3q7vXMh_cgu)5hrZuHJdu%it$3OEY*HyrBNs;Xj%%nqrxbBjOZvbSVUgiXXj;j?9U zig4~%SAd3`t|%XIkk{bG_#1B+ZyWY@(oM>jOq&l^xB*xY^AfECaAmtii+LWx5Io%k z8KVFbmAwYdI=DK)>l6i4>`!F z;KD;t7I3m7?n}GK{xDKCy$&)CZkf&qT!fZkE)XC=C;^M*vp7S!j}_bYc#*(xEQ+Mz zqJ%p>u!Y`<@E75Bt5b(U@dXLG5LtcTJy>fH>`$C@{#HZD*~ z-7JH>jw7VS>Y#WXZY&in+P)424tD#ORz1qjXmC@UJyO=acjC&WQWEdiirt0BPC~R| zvRUy{h=p6(>T2iJtqzCrlE6$LCeapxhz-h~g&%2+%dDlkNGJsEgFC?nx#R5;wrztE_MVm0_g|)>U(4-3vicZoAr-n)7Uw4C+vD@f$aE?(+!G6J4!+ z;1gh-ws6(KdLNN)DWqL1TUisxH2DFGIIJ+|D(*YDHGX0Yc6R~BK*&4=5;Okp(FVyA zG}fg9xszXTi?g=5Y2|SyumIR(Qxe!7Dz7ReYv&b2_rZ3>>#hbrSg)D1p`sBwcSCFOQSXVx^33^7O|4|jjtCR`5JWmA8JBs;O5 zlCYr3H7OK%Du-e*-%i-=`(~vv@fH#~W{Y(p19Md#n0xSEWj%wKXt@UdQZez_uw)$q zj44O}356wLrDh$>HF2vXehbC2g`2x&B<^pqrICgp;;}jRcTw?g}8l@o!yAq z8k8YgzH#SdYZ$b~1JVpq8Df*_mM9)g>L=)65(V6Gd+xFbjPQFnOL1SZ*5TeKA5H!r zy;=ej`g*ukXdBG%j0sYEyIrw~RHf(OC`<9|vmx%-h6gXNwr(mV#7bD>!Mj;n1d1Nu zf(A^IZ3hdUaV3wA?NL33$&uLAE$$(U;EWe(0!z7UP_v%e9$8{kS0yWLi#w>R8p<{< zt)BYrrCT66G&nd2Sep!SlVsqG!xC5vu3=Z%{c`}uajTo6ZXn@%1RR+VvRT_c8f^C5 zj-hN4)YL8S{Z_PZFX!R8FezaXz@4)UACNc&szDPUNeB- znFRW{$IQe$*r>eYX*WBG#e)sjx!Ov3sxFX}|0L^^&d9s4*KTjm(0y1`dyj#g=`bGH zWjbYzPEvIdEgc>o3?+D>%<86s`)o!ggb|}|E4cAGl~9QjIN=WM%jAE&4KFJ0*=9?d-pu8#VJt&1s5mUeimc5X=qa%t7bXIJ!N4HcKvFryCbHE z1lor|nP3%21s@ESEaK<;AWNmy(lW;x%T|RU|>Ph-6Zr5V2!z2Q+Zs=9$OY%!q2aas?|lMD~m7 z*;aKLr_h00G{orHfOq?u3Q+Ut&j$VmFwY7V__cbfxRQ;Hy2NGaLNbhY(iGwAvUJ+w z@w8bfw|N9m+}Ax-A_Wz@G2PT8D=XkXfSxxlxbDf$vM{W}DYvju#1>d9deec0iDi!!E`L_35wcq5BE02 zHdc&v_g~x8R=}%T-6yv-J(+S7r~`%&mrYW2h!U{BYVFZ>Uj_ihgkW04j!j7gMMUnk z*ycb+0MQovn!BoXmyOU9aoLcow1E1U7AfAtVmozANT`G-TLyPfu8Cw^t1ao;Or$=QcCw6r4bs z9>vsltGGni23HZ7RxYp22iFvJOg=_y+VAAK(X4OFvoOKt0K&Nq>)q;>Xpf56AOWq2 zbW`;m&c58DcS0s_PoS{9)`m(OqHo2AAx+0A56iIKCSSF;7=E)AMF{e_#IZ&bKao!5 zkj6S*$2uz_)H0owy+g3f+m(CDHt#7vetHW) zGt!zn?8P1x?5T}Qi66)dkII8i>=`G?%6?m!PxW>!U3N?H9Nl?`3uI{UPFiit)}mF~)fUacdxF}{85UGIX~I)VJE3P0&2U

    s)ja{7FLB~HsN^?OoUvMXZD_$s52dIyCor*x3dxy^>zOxB)sUl zRFEea!JY5s1dHJjnj<{AHAwE&sN?0S8cT`+r>4%aodyaluLpjA&!(8gEIs5YQl-?d zs2-Q$#K4j*Hs@tB>K!(XPr+c_EwK0BVT7uSD9H(!ZrXvx zKNzf5I%~CHMwatoUJj~=vsV@Kus}tPmc%0{?)urqGWKP6!w^Gv*vS?NL1b_8MpTCN zw6O!Y=Y3Ci&fA<%(U0}q9`!tSqB4n=XLDmTin5I~d-dBKv*0P!ZgHJ8&YfU!DA%4V zVRls|7*f7iU*Z9S6IMK;AqS}2=_mkf4>EaK!Qg0?+}%%9@#XF{*fmX}zZSt@w-3Kq z6zVhBujVe3dS)Ipg^i~q6CfeQdb%@b<+@#+ymDQ5LYD|-mKy|a>LkRDtl&OzZ6kSA zi|`d*bNa~D>Pq+}PAcGk6jB>>>^#Dn?aZwNrQ7qy%Z|ign{ouv64GLKe}F{4k+0p# z$5D#%9g2yh)A|8>7u41AEQQb;?P(Oc&C+U_&`pXctAkY_ogTT^f7_OH;Wk+j{$c-S zkaSw~gR`f=HCwH)lVh{>1y#r#;POElYOg^gwb_Pylt|*U@RKAj62yzu^b8)dDnYt+ zLc@^%a;*cD1#?p7u`j{en`l>qbzUBYVyf*VU7sZDEhewNL-=PZH%tudn1kvE1LH6R_Fr{RGW4w@zig1|wCP1RRG6U-l5~ zu?5RZhZ7W7hr9qN2-?6K8*mQ$cr&&DI{?tR$$3u!I#52r6!e2hcF&#QlRTF_U5mw< z4oAq=uHd=X?qddFTd|{jrv)4e%=3^e(^9Cp+M_Wnt|GCVis~oNR&F~dE=3Q6g=+xm z-DwV%oG7WkZ{e{0@PO3=K8R}k?-dl@v+?ts(^s4_l%|vrnTCh~{P< zh;>yX1a1{<^iQ@&Ld6~KGL9vv-eF}u(3JNjBfwUi@n08j((H+DEV(2Sn_3WCslpXX3(w5N6<6wOOTfXVnM@>KVdm;Th=w zM_DyB(f}9brrS2PffTB1OMu!stYLR-2+{g*L_@4ZFLi3ki%`=3sK)3JC{+gR>T*8Q z*yIZX8aFD&V}TpNj6~i~9v_4SpmRuktMvnlUfApbJK#41#O+>y@`n|04~r>@ta2-) zwgT@)$$$WY!v&A&(YkLkG0&SY#EVH)87JDvunPfrg0u;xNdOgaKs4%6%^2%tW$ZH0 zK2NXJfaAgWXsgx5>*DwiJBMv>wPOa~OtscMi+_Q=@Xj z!|~m(9zuHv+fQ=+N#6fkkIMaTHYj&4(|@x`xnDkY68C?8RPN)${A-_;`(HBK_P^TH z+W$&3TYos0^gn4d;ggqPRHg2aBU^iW|!;B7_~Ta)b15#eG1h%|><`;lO$69_|FMET#Pbu=@2# zt31%MlC&-Ry1ENATZJ6L=y*owKdw2u_pLhk38dRD2coD4T`fqm`Nj6keppqj>dpp3 zKkhK`A`86(h1FP%)vh{~hSeBva2R!CnhHlM6~H1v_U<<98;^{|JFnO*LR7ElP}?z9 zJJBxt_rqOSd+7TO1(&79R6<)oyVu<1u6E}*%FebiFrobe+1f9gBy2OAqqKrO#EHjO znoa+nhS+OX(pd!Fmad;}W@e{F9XFK9$&`UR1cT1$t-FkIRo-!UGJP*Fm2J0yz~jfd zHRt-Nu>q%Sysr~5&Rm=dWEp?7FK#s0GR&f->)IDq&_O%c84u4gPKD6aC4n`m8*E|w zZUvV+4#gt2yE;+8ekto%7l>=Uti{;1uH&{m-V?uLo+o%p9IP%DghSj9Ft>^!&cq$_ z&~Le#^?Vi%-j9vHDr#7AYBdz5eRVfW?TLq4tu{TUc1O5Pf^KIACAy0Q8$aDTQxqIi z>339J3u9AJ)%{uJ8!UrU`b@E|Z2fz-l9s2iS`P*hmc3t;;|@+xDtytC|z@#3l0=-tOS?2DZ4oI{aw~w`GmpEu7Us!31xI zG9HR!Ltgm`8h)s^ycIR6Ld=duBLw%54&p(b?L4c;plXipjxFqm4OiCvy6L%|n`Mea7 zo966dLU3{mBF`!txN}c~=VCdJy*CyHEZK@-{%}g(~$^?ef-NbV&q@>(%M~9tS?sx2}1rrYUi~s8*$!8*q-Tq;V=>bk2bJjo}JKb&Pqy1bPIRQ#@5_O9}& z%Ggf8<4#spm(-BK2S^KHU&*pnnWb~eN?9uq8aW^U1WwD&7SBO3o*iFzWRyx;DL8Xf z!JsXBoZBv&BM4d5#@EeuV+R~N@wVpK@8O0CXw2y^!IQv4Asc&Q+@^92<{;{Nnh)k^ zr<*pV5FJ#xtIK7rv-{(UNBF-1ejyW9RbTsQa2S9e7f-+n{4-wHw zDqgavm-Sd~NaMIWku1fwoAt@egeo3Fyvx~Cc)C>qCMG)Sba)tIQ%E?#O1@N$B^#sivE}YmaP^o;uvj8s zk6gIePe4ZAEjl*II?QG&#)4C=Q@t%GvifgU7&d!4<|GafI6$Su1N1 zeAS7PmTMQ4&aP}3L}@u%&r&RkS}pl-Pk!+%+X2p=dVuxFV0R)~t*UD}R@d^*9_>|S zVUGqN3Po|20 z=Psnef96Izp-Mcxxodi3w@G#Mv8^nD zqzoJBnrc#av4;!)z+*tvciMag#a3dQ2=b}BS+|Hw@)RyLJna`g6drRlT#wFckm_p1SL%$T+CxRP&A> z*9?3d)zai!@gR%O$>s_LpJ7XuSRQV;6Cs0>l!?)MC1ZQYV|f_we>g^TX<+QV*>Eyq zA>(bTFZC-rmrn%f7Ja!A(DYWF)o$rV7PqLfcxbWYGY`l)A1?h4%GOQ&O=7}neSl35 ztH6E^=D-}4W5G8|xE<)?032sFIO5vIHSjhl7N)Ffh04DU#Boq7F1{(YblQYvzq|UU zs_HBxcU3!-Z+}b|RTN3$zlobzd zV6qom$ws(gw&c6pK~e18sE+ce8z369j*CN=@KA#+5!@Mp)+m!f=0ONn4m|-fY;rSI zh2?GJMkldYeKMA)2117uWHN-svk>SGx`zk@`^!%7*wq{eGMKf@Ik08+hIFt9Z-5as z2SE&@YIEwh^Wl9e#P4b$$LaZ0-J1o4fL6G^hnTAaXKyq4qaYC{AMe7jRrs@2U7uP4gQxnGusfE>cPTf?cA-|hqn(h)CX5$_vFu2Qpd zENO=rJE$XqA4Fq^a>&ZPI+fC9oHIDNTil85;I)g@*U6D>u-2yjo0<(=<*kS~2q25~ z6tE-$&Z9nKf!zuYTNtJ`2kLo@iBq!jj=sWp1O*#7$WEbMEd<`2P=+UAVHQgfWiA!1 z&xPPOi-((wZv!4A&e^&luh2uQuTC2oz@2K|CdJ-`8OQ2SmS_oDw5Y~@nf-L$GVyT5 zTgmutTjXmhC)@810)^#4-$GLO_!bYg%YCHoe4t%9&5TRfH;Ajb-?KZHdpn3K&EreQ zx~nk>^IhkdajP=-#YXpjcpR(>)a?M={gRngM{HPcWu*dtxZ6{uUf{Z)4t91Z8So6O z?9;`KY(OD}+S&=*b<|O@9QB&B=5J5}Cbg2dgX40XscZFYzHuhv?NG0t+~WuzJeeiC zR6%P7QHuso`>veDv)zE3Lsuh@Vqjri+zx8R6I5H{adkKXZBJh*T+yWw5&uM42IfJULunratRND$w zf#))L$hgL$@Rh^$tdUKd-Cn%HB3R7T;aO2SWyPEa#Mu_*9x97Kp*v8oSdgQf;MLR+JLA|!gy;rhVvp_@+P3bh!X+*R{KIQ>;`{DGESUPoG7De4RjjJA12w@~tgS zx-7FJ^Zx2l5FhapLkf-Uhw;FqdELt zfYc{ABH?k%nNhB}OHRn-ZLb9+_22q#P* zv)&j}-qSJ5^O^{FPGqwoUC39eQ#@f6!BSZunqLrfSS|(9FxRG(vb$<&4u5rE#FUKb z$D{lQn5u-`p0FJ#=47;8?NgOZ>?9^v)n!g?0~!T4+kpJ53W1w-XHMS@L`Eg+69Krd z9+P!EH@Rqjh`#P|vglusAsJu-uXxm1GVl9odw7I0iL1 zJ4_u8L)TW6FwTm?xGx1|yWG>m5=om)38<9ppsQj(M_K`>0Y}#GlVMKz;%3vvtcXbiv=Z5HWg8tpyXCDN{U{CeS&Z)hYHms zv@YJlK|)Xgn?S4yIo(1@X4|O=27%Z~ARMRNRKtNJ4g~Fcbchz*x!9iT04(tzuG28U zwQyB#j`38@*94v02&;yvGn#A&1|;!9^1`NqiK;2AwhGC%2`ax?q!@N%6H=qfwT?e= zI?)LYz6qNi@K(i~iE!>YWrt?-fRsAAgsNbX%b|WHz#xlCIPTBvNn09ZjO39a2n9c# zeti!WsXz?belm#KI_tE>H#S#t&3Ef6m8k`uw>h6Z5dxP32gMZw7BWC=QwQIXww4m+ zIfNT$v0X)NE0u!4mzJjW3uHXOEx` zv`5!v>(>(23OKR%4HO&g(YhR0f2&{(>Qto(1Z;YO#*xJg=hoMC!tH*$mxdK^Gla)v zN0~WrwW;zxpyP9f&K+%Ka3WjWS4;i#FfHLkfXWL?1nJbNM~Jb24|hjq?M}HD(>f7a ziJ!HRHSnwwF3)f-Pu$$+#uu6gYC-jLteLkZQ*K0yb~|gu=8x{wot@Oua@h$I>aMUH zGDn^nj3r*YI~Rq~ChZmZ*p2;l>t90H4B zS+KfKVV&a^qp}+??0J(gAhn9pIpSq*=NnZ};O_4OjLc38E?VD^SRHwp#j!A)@sLy(KIg7`%%|Qo^qzD=2 zIsnAhmx4f7&l3HSnv-*f_#QUo0LnK|%I4$%&)dLR%en;}mk{hx4sK(>aLlFcURiAt zyY9N8#y-(%arEdx0JRd@u*7aDc20Jg^+pPv4G3gvW5}tvEbj*&1m|J8^L$pp@j5*5 zI@WvHTr~@s%T!i%;MM5X*4z4aIJ=5VatydZ`WmpfqbR0&UKMvC9-J26&M>@fMEKKL zE?k|*BzpzYDD8GSOu4ErTZ4_DPDDCXLoD02*q|BJGw(_xGRnOAQvMxPoxI(qTA?3{Xu|huv6$K?IsI>M>1CCx^Shwe0+E>Wz=I z_yjj65WoVRd8Y`t{VgO8<;@6IkTt>&_??`P?e>M?1a(WCmJRu~q}>XLRPgkob|;s& zsduYn)Nq@ssrPw1kdkmQn$iSztZhc1#VxVb%97MXES?i8D5F3|QY_`z-MX;rFWG|c zPCHntScqShnO&l@ov`y2k9W-7Zo`vP<}By8gc?T+@!D2J=WUa^vJ$Y(C_P|~i+xH? z39gEGxvv%;r#-o}POal(+uS$DR_5#y8?A{Cd15X&lOjcmJ=%T<`KiiBUa0?*TV7)}9I@P~XbBn?Do5Tv6{vIA`|Jb3k>^;}!7 zpjRT{aulc5%$dhkAxo)vlPKY|_qNT(Rv-l_wc##=s@Ts?4wq^wiL@vN;$EWd8AT1= z$8q=9Zryj&3(MtZOlor^-r5`<1w1%BKt7;-ha+KwKAas00*N8JFr71DxG6d3aM3(B$E;6b}T59VtikVs4@XZ;6+xeW?7{UEFwI z$a8H~(oIHchr}&I+NV~|l!9=Qva;Mzc(uBnX9bUhi@=avL;%4!AU%*A^(@?3Zgwed zSd>H-|4DXbf|?Z@fyix6n@w{Lx`WZWH9K)`+e1y9naD$TN=L9tZJl)+P6p&^NjT04 zvzRP84W_FmNM5+q@Z$;l+#Oap&#PI2ree|TUh?da6(f`t)qI-7e6v?>J*@`194G>m zTc?QIp1^pdUa-uRm;~om+aP*SntL>Rsk##r9C1zv#SUz=2pdF)INt1z577fW)lGa1 zv^Fy3;!qF}mZG3$^sA_H2pVzTXSGL188X|zJa>17upJ-P72LMK9YEdTm>?`fJ?VVf zYE3!?<@I8h+W`l1AOVpb`{LqPHxr$fqx2o=dBL`d!_ezt=cL|Y zv&)5FZrF&Dn!Dpo@aJ|o1W0+=9;0Gb#d%^XMI;9)$2|p4nCAM!Io{9lJ1o$-?Qb62 z0+``Roht4CT5V+9Y)p@yUhVBLOolA_0;O)>Qb1QJfN-UBvqu25eOe5>i6RPIo`HhahuSPGkj zLvx!YSk%f@6U$BF4)jsx%bv=MH3&l?aF2wVJvYO~Xxz=GvnqnJsp>?Iu>6CR>^AV! zmj$En$4gK@swhf3lINxkf~DAzlf#EI*%fzo!e+AUAf@e5EsvGUS2)(NVC93MBl=y zTM?NfZkJQfYFS2)x{5QeZ*o%c03B~KR1?@1$oNgZSB=IEDNpo0XW&Vc(~;}v)j;sd8Ueq-A zI4wYTrwWXt3Cx$PN5I(lHK(mPYd6Ow9^8&9g-$Bs!FmoxjCVU$D6`6HvD*7mJTa~I z@LE#|Lznb{RAEmx3IhS+cB>GUkEw%fTdl&t*(U1M=}X6)!DwkHhEyCf<@WU=-JH6D z;er!%r9|~dh~4RA44W8-heh**MJ-l*ajK1_tYphr?9Z)ME0PH|ORQOZP@%1-b8Zu4 zR}Ch&X%7$c$@A`ds(^WT%DedD$A00{aS~xj}APn+o0seDnf|F403+@2~>LK@2=v z>GFB;Njsq30nwN>SEov${lvQkTf~h-s13*BC{G)YHT|Kwqr~F0Q&=^vT~{Vbs~v}N z!zOW{S+$=OuLlDy7L1W7STqB^3mX+GxSdqK5?zKftQ@_!sdNZ8Z==?G>Ru0f_!kH} z*P7?{p&8N|&S6Q`4kS5R_H5J*$xR4QS$E~L0?`F_Xb*}CdZ0Gbuv9Ha8>a|oBS zJ8$c=oef4FJ%M?b6@Vbzq432$+pjkTHIwbo&PO710t6hIei8)Stb&TOl8!AUDhHFb zBO0qiH%ZB`1JDvYm#_v@bHLZZBfKGI>+s+nHy{VkZuFKGl}J>svM|MRBBIGwoaSUP zJx@CeCqe}V$GKtb!DMqf6i$c}hh+{iIg+BG$kW8Ame?r!IH*Q^)T8*-UUL z4p-e7Iwn3iz~VAGR+)5|996q30WyM9{79_8asq-?E3jwsA&3Qw3_JL7Rh&)H&ZrnA zA8%Fesd##*Q_37V9cI%)Q2!0Qwp$)PESXE2eD_*OZ7k}g;%sm#pisvByVD_UJFu99 zl&aPJwb$khmF&IGx`3)|-Qu}v0=`*p<1u+sOwnpZGMkJmOdUr9tJ-42$q*jD^Lf_6 zuXT~s@+~g|6V|)960QhqhfVOvnZNphiPn6pbk2;yQRB3m=4xO z>{xea3y=kz{fZS_(K;Ck+Gf+QlX=`(xcjvL_ta9^l7rF0+$`jyNXN;kSHbb*mPuCY zIw0rZX;CIDm-txL=HQb8U-JNmFh4s46vQTfD6oZ1yPc45hk0mnR#nyru7SKgf;|e0 z#TK{I18^#sw}aU#lmb^(Oo~L}AZ*(Zh++>i~}u{|hO8|z_USqPHx>r!BxGSassM{objV(A(v-sZe;{_ih@bxycbZ| z-gA&sj)RPw(E*M$!C32m%#Wb7a!Sr)Q zry@cCS#@PQjo8ql<5;2KkejW76M>*W$=wDCQE>-|SlS;{6twUN@CJz?(AK!}B1h8@ zo0S3LAzYv|mjIlHm7CP3@K5%%p{`ZYx&-EOR7!CFgjc{fFw&;*ltsIQb@--31`fxD zTcGdMTTh!*5+i4hQ-NS$T|YcZgcoc+8B?)YaB-FeZczv%7NY=mc{6ebmV7&s5pdo} z@O933C_C%AM-~6wBz4gBawuqr*>kH3pplA!)}7!gL#nrsjAToIuQrq*$giiqg!kOx!@t(2NMC^dvwvl2zj=|NIa9f01RVGSPom_Dc z=X=^H5PT@rsoYULdJk8eSfF6GwIH|{tc_nghWR3^Cy$1w)SuPJI0DGYF+}c2SOXZz z15MToHWF6wPHovSo1#dgyL`kvJ1{E0b`B$kTkWPhtaP?;IvQ_)o3mHUR+NzmY1bO< zp2%RWxivo(JA6*@K4OQy9Ic5~+#TRMh6slclWaz7QsvU?$F<0G}4CL7dHXtTQF3aTTz$^T>SO(oWN=)2?^C z+)@-zLWaYT{S(J;!vy1GzA9<(Z?^UbvSXzV$O9A z<-YZQNEcUj7iTzF>@k*!OKdRc>Sj)gQN?o(RDD$vggq5wmQ9iBG3+sP zi2Hs_BH;v@jbvl1pu_3ykON8a@VT3+8nn()EpT@FQMa`#k~(+GRd*fu_I%iJ>E*S&8~i-GEKkQj&EehV3J?qknJ_Q+OVKmLY+zBh1t!~e*x(?jLMFJ& zeb(QqQB3H;(SWq7W=CAh({mD!vq#r#-!b=hPqEPo0KLcyHFrnzw5#vro9d+K=HL*6DEeF*g@x%?#8|8B)cT&4eJ+9PjX zefO70kIX0e*Qh-5Cj>%%D5UX6Vi`Xay!g*(Sp0>u6n{oq;z!}(M+EkV67vIu;{O0; z3Fr5!Kd|jw$jcSX+!96Ta-?n<*x`XIc65-SVZ#g_GgDFDrf=X_eGl$ec+bnT` zmh{oW7C>I)v|>N;RzX81O6Me>j&IoyXH9pqZZus%#pk3@&s?$trns`P+)<^uV+UpK zkAu^OC$FS$E1NRp+ur^Aa)g^@kefnpaKlMOp+XDvg*#9Uw2?a_ixE{vTSX~{mCT^J z`zFz^d*0!4it07xDGob3&Sv@SIf6%!wz@fk9Rg;fdoQ!5)Def(;|3VU8cthXvs!l6 z9fJ(}ayi!Xv^s69_So=gY1jY{Wlp0w9roCE-_EknJgW7vc6^*2@DkMbxYTx2jDaQ3 z$~|&Fipy{7?Mx_7w5@l7shv~6&mp#U#W&bwK9z(`!i@~Z3%QrwqOjcEDpK}vgU|^B zs&X9eu8anUIFihLO{Lw=a|KitYc?DKer{GJJqp#c6o7#O`K}7Jk3AF>fZ<1w>Tm!$ z;r2@}cI-JRJ$aJsZ1fC7b3zgX(CORdj_MzBFJtaExQOo6oRt-ij@3~n0R*BAR`5ya zpj=N}%DOr^{WK^-F{p81 zQ|oXXthKVk!5Sd2zNls`tPTmbH%}C-o>}=su;6Wd&5liF4@c(d7@Td`w&EOPu+p_m z0Cz=&OD(WbY*Ssi7CaZjz`($nCw^S+$Knlb&2!_^Ym5WzH=I_eu!K_fV8b$JTOPLH zg6y4vVae|0KEY569ENi!Jqy~K>}J71Y_;{XqG~Gcy07~jz^m}RUG%_zD<|FR0qB>! zZB^-O>@{!;A>K~XO0loa!aPTlG=c7=ns>=E1r-jDYgl${|DOlSt6sZ7mzFg*2l=)Q zx0^MU!yOw)ox81@HQ!3`5|J#XYJ@1&y)Wkg+4!NF0N~fs zP1|drUn_7}h0znkmtE;jPMr7j9>3-eZ5_u{>O~ZQxmX8$MF+e%Vk5OOODUX(;+&hx zhgmFnLa4i4Z*Joxt2r*`VS~;yE{4ZqXE3jNR(Frx=x_v(W6E#d`?@;r%%!Y7wscq< z3e_D%Ht210_duqCVcF?@V(d9tl2Y5$^M;PE7{GF!4n>UXEJd$Y60J@~R0_dqcCFv% zW)D$t6hy;4HYIg}Ej7Hp)1`*4fk^gBsiRl;sWI3n^jm z1dqPmi-VaRycHbxd^x_*a!L2^_>elUV;fe6X?`mYNg0wo8>q^-&TGMdNePf`Lo9K! zVRD&uQyFHBb1aeCu)NkC5)XT@!_d`!h7exIVqegyQX~P&!kF`ptg(lraou7bQBvv# zlVdIq2MIO{1srFW2(e?qY=UE0Yg`o(x7zY{(7PLnEC-Cqc9=rY&yld={y(>3gO8P{ z4m&%Y#7ic^isDdCfyl7-8@na!ux2$o6_ABh74{fbvss_Eo$j9Xu-Lt9<536)R&Sk^ zLtG)HTdv8-14F&02rf>?t>fS-#B@iFjASeNy4%Llt@ld1awTeIAG7D)LqwjvM}WsJ1`OG3b__ zUyd$Y;gnmLs!Q(5=4`oC-?7lG@79_*Kj!A)2BPP1NW-pD(>``JKS|k_UD0!#-4r{W zr)^H_xk7fz_Ffd0nI{ToOyO21<8}xYPgy}GH3)8k>}6M6nsV0ForzVo^>G*C0ZX`F ztbE*C!taWkf&_MV4-S^;Aln}vhOrDviX?ni#r$}#R`xB##~T-2hdZr%xos%A!knqc znnk>3+lzfL`?lIuW7mVKP63~D{OMxde7-z+u@A@*5xSezpIm`WmxMES$)blj8m*!h z%E8#8=1dyZJi2PEyCwXv`LH>yJ$v*qvh#@T?=RVb^!G7k7koyl=EjD@FP31K{0MzE zD>m?6P;h3pJAl=?75NTcAPy4g(!Mwm>2${H;m%3uLFJx&AM0)FpSz_F zb8<|md+>x=yHwQ^Al*4EWN9jhVaHYVq^1CHf1I7z?UPee1;22<$qqD0xS3mqZhsjh z4~L;P>v0Q#yhcT5JobH@Wn%PWZm(^*~4`wAX0_be+evB&0O)qIbTB9k9OhsFgtus>wT7 z{!U8|Q|rjynF4h6}b$2X6Z5j}&sBPm}hzo&st!a8^+-NrV13%6l-a}BNww12aG{CLp=ZQDxC6;LgP^tkz0$J_zJE8`iUnrT5jRbr909AuaP;w1UIkvxoozj1MgTID1_)GVz_dmN`z5hkK)%7Pa|98Aw zz5n%ZR_}k6d)5Crh2$SfB7f8|{&Ty_)!pUv00Vlcd;7QD<-fMw{ z{vr(sKp+X()bs>HUhpl5pKUp(uu*l&8+u)xmI?XbIrUVQq5fzEa8;H}cB{^_;|2lb z-5H`bi_e<1Il|PUDmS3G%oWsH4xYkr$aic$J$NVo*|^B9LXKKcGeO;uIwydfpv4MkaUS7i!)8)|Ei7E{94@Jj zOLUU=>7?h(jXEh8`?E-wHHEE29u|-k#Inwsarg$eke!K}2aE)yWqlLtx4Rt!%d3h-K*gP(T&AgO-4)hW+vb+Bf_D2_ShwDlvOFZ5QMGAHt6@6;=eVo= zq0mvWt=I8DPP|obtU)!FOEKutX%!|KpUoI$vjQHyO1AUqp=tD7+}cFc?` zIhM64tQzsQ!&+0tFo{r>gq+1{tF97kxUsy=(-`;rhJ#li$Q?)g?^!ln zeF*Z@B1Dk?ILBU*L|Ecx9rH%q8t`Sp+mZ<#a7Aa?c8G)RFvFtt8QBJP!!HMn#s&02ZUOVJ{jsr_^PJo3oZCA5ob>k1+ z<6*I5IULBfu&h^Co-E(sbSuvlAYS2*ezx_PRUrVr?H9g!C*|f8d%yBYyx*1*tbN|| zxZQzT9kOKKo{Dha$X^fp5SmU7LJu4JaH=6heZ+1=#SG1UQA)h#L(T6m7lp{W_7rs$)CjHO-*LTlN^ zA+9JcZW%ghu*^-U;od5F5hEh=&4G?bn1h-RD@X6*w#yMSY~5K(ur{JHoIZM-SQY%a ztW;~s8P2P^ZNmw<>ZGp2xx$y!(&H(dmyFd?owr~n#noVUJvqI6CGkP06$siC-f3h! ziwF~RZaeb98#~0ShqJHB&03#*TDE&eTWAj!;LOg=w0IDn9Pq)78z3!9=aM5y6`v!! zM#B2eOM@fVLQ|n^OxYzK`v@0!Adyiq;B^Z5RTwIfeb`yfPRMw=RQ2?{;YQ;mF*pX1tL=8n|VJ8;AiUhE^1>nUOXtu~Zx{u8>FfB+YFq zz}zhk>?DM-oCu6ZTlhjULXuS)Y%-WT!0M{`0Gw3CoqyKd!0wC z%umM_?m3ZK@v#w0{wrY5|Mmud4R7$5?O}ZO_kV5=gWvo`dl=y-G5vSDhruHKpR$MX zqy5LZ{ud1V@?ripZe;xNysf-HJbC%e$01ZD^NQym$1t_{@Z@J7ziSUqe(}F^xYZxb ztNP)9sz0pe``3p|{b$SfYIrvqD)66w8x8gUN28%!1mWpk+Cnb(d@ZlLgY^7*I_?^O}@_XR?iCf%b!Vz)ty)Q4S(KjZeKghcpb?9w+MszmDM83wgrfPwIyc~`J2@6M+NcnM`%Uct z<*jQwtP1KL&|h=h<+_U8EP(G+Hj@PNS zVl+r^TNQcsQ>vv2$~kfOo9e5!qg#H&_472QOa@kQ-!LK`ln4B*{{}+b4wr(pXbyR< zBTh~CST2viFDp)(#R1KB_<`XrP8wI{7oRwIACHvQa#aw4mW}h+*T@Ao;-MMTk zg*$*maZdFQ@JAr;?Agbe>QRQgq0AQcGUvGo6 z`vR9zNe=k#0pbBIv-Ih5#7WT z)OjGz(kk4L=hH-2^{|o+>w!yy2tuhgi!Sn#)X`B@DUPAKiu+&cR@JGj#C;#r ze&y^_Ww~1~XZ3`oHOpGhquI^{2TiqY&00B?BP_dAU`8Fy z3*5JQB)`UDcb(zHR;GCtzNag~8i_GmIMicX6*b+*P}t-Sis z9dPq_j5+THBg4Gga&&@2+a0eBdFP9Ksr?Pr-nk>yUs+U#&m2t+eI=exTqV1`T%4~( zrn!hCXW=$C58Z2k{*$#FErKoLtj-J|{Z<8iE;kA`D^^eCX2W5Rt}VuJKvmSpQ2Cz1 z3)c0iQ|(xqquP9iv%$s6PP}!~!AaU&!*a_@mFnZe(^_}8-&q`|en4egwHA)VGVWyfKbI*i zL1b}9y`AYk01AW_r}-$|XALF^-syhuSs3?q+>YtOV%(vqyBZ#6s#Ciplf*5<@_fX@ zmYyNhW7dW$$wBlc-|%W4ndb(!9!qdU26wG_)?DLwYJ<94gzu{&a{s(EOU-JwpD z+lhqp%EPqkW$Esl_Ei83!s`fc;{#f^An=_O8>T7qkb4H(YG|1n(!-K#kW>t02n2zRRwH4`#7HPoDIUpM!sRTiJ~_8Oq*8ek@3 zE!KV7Tu>b}#|Nmx4xlqGDf^$)GYxiQ9zYS5`WHJIn-#hH7OImeO`73T>+eTw~ZqK?dZJm5P@v zj^uON%$EAGJ5=J_yoTAGuv?~_@elho$cpM$y2E{vlz`@g+>;jrgNi+n9u+byobSQ* z_#ocJQnCU;>gqHHn>ua=r0<@TL!i#GbVo*J;f@N(!G;vaFH}|XYIc4puiG3DMBW(P z!tiL}Pgm2xae3BVk>JY?28yKrW&zycs8Dd7D$@b4J*RT&zB*F|*m|@v1(UH*-k_+! zwHEvI^P~LsxhCZ`$H|rK3g8vuYa8}1D296}-r(E;t{14gI)XGn{BHF~aP#qw?j2+qFf0MZ5a#*aUCaDS# zj`kcR{>!r(;GEW;E=MqJ`Bu3FM{j_11Ef-(dk#x6VD5lv=Q32~IzmxTnn11^S5ian z_9Qeb5-=`x@XLiY@RF8NSO|b16%2%j<>;NTs`8kx$H6dn8#_=|1;oqoUC^YgEMHQh z3wWp{V%{(;H83p%Jh}ra5(en$LoaZQ+tH60&SrOto6v+OE^+DyB~J z?oR*dM6F(`N7>gVs#oLqmg1-u7a%;`3ZRUL)YsKcdb{TVsL=){^;9z~$wPh;Wu24F z)YKw)i{VvHy$@ay+ZapUdsL$sg5?;CdSWOJw>_11lShy4Nk8|7Ltcl+d4*>Pq$3F2 z&d(r)Sn$VFIz89F93Yn+>v)>935M8qju{%-JsVOm)kY1==pCxISO&c2j_)Yve4QSU zDXq<4CSwPeYX#(`IHnCBtJTC%vWThS=uVDuDqAQEQK$Zb^1}`i#Q_`yw%i+-GAgQN{d09ZO1j_;hZCYK z2Ix3mw@BNq3aiX62;PNpawUsRpxj zehg0|9j5nv9>7;i8C3Eaf9yMi~vnu#iL zt&W?qG^0Dk__S7I1Kb==U?5&@vPuxq+DJ7RV>}mU1SLD;ilct5FlA-1;W;!JoSxOw zCoVc}a;iM7Q&_clNVdZ>m*~lx^D@?X>e_dwQm;LA@vqaSvuD^2)`7*gduq)nPKu9^ zQf`IPR`Ty4Fy1LENgb>@Axcy=>kYrf`A`xOM{-Dd2_|GLa3PqfF0*C@_q#00wg6dW z8xr_ERH}n&UvM;@pZ>jKlc%EYwH?hy&oM|W_#I3hXI?Fm+0=#t9%riy=9CNW=}1-y zIPz_`O{VR#BI}|L(0USDW&ZBQ?s-}4%?ZO73FNebnM-pVz^R~B_AIfJAjq|j1awmB zLa0m!2_skmOHvuT_<}v8%P|H_-;|SDZ;gbI=gS5JP;AOBfrzm^8U5G72o7FLsnDUjK`_9Dyn#kYy{cUq94{M*z zw4fuvadjqy>P42KhrSseL33$cPW_&R;I@a5;UE&hqqZu(n)w=U2P1N$xjAm6xU*JQ z3!;EaeYq|u->we#aFYjXP@t_TELEKexy3nY))q)RQec)2Qa_;;%E>C(cRN?W;vZ#E z_w6{{Da5+-EF`e)0|Nsp04LO;RYo5m2-w>l9K0{8bpjuDrCh>1xs8`&P8}Wzt;kua zc}IkT(X6BybF9?0_1#YCb;#^6)p*OekEUOckPb+YM;bjhUbIfs2 zW+?>-2Y9zz!w{AFE>3jYZa{0Xv+zkb2;yO<*xRp!tMCEFTJw5PFyC=u z4p(180?H}#YpKK??wy#ps{MzztBq;FBX)yHB`)x+gw-&oUJT2)2;4-mFw~w>Tgoc< zFNH<+sM!t+F5VqpsIt}GZ1n-(Zz_MLVpKWz!s8&dInXOQCVX8L@3ord zhNctB2}E$_&E6xHZ9XN83%pgfMMPtFM>Gh&OP=>}W5T~+d(vw6yFXY8vYYy(tPXO~M~ET`Ep zOQnt#`34O`W3TFgNwQ@wI}!d;$8{HUsV*co#(UDh$QGN%Z`*?pxBrGlx{|--xFnqJ z5H)vX7eUgPc~wx&?^ zWD?75XZb#-fx>VG*cb>|L8ILe04Bx>2tST;*jPBz&edv}gIS%H4Wi`@2*i)Htehu| z?yuk+``_N+ui*{;vTB0!7oYuoSpQ5x!Q(IglA3~4f0F)% zGFbWCum55Rp+9Ky;B)`uUtFQ^=k$gi8$|e^-~Frg3tM?tzW`hPxB7*@zWRkV-;R}4 zHfW7g6B-h7o}RR;t!!oF2}GLWst_%=r##P4#r|*tr$?u1SQN0`*gOD$2)a$Zx_Q$* zmaz!+9*48I)ck|pwHWPZK2~7$cI4_D&{)Sh;B}rudTgD5?km{Rsdy}6b%!1#>X@L* zI&-!_6+2ircmGa>SX7e9W%3j| zeflne&Q?m)yLtZ89dNtAy846x6N{w)e#4wo3GN#{GRYF!51upL28Py!Qz4D{eU{ z7p>X>lx8xr6;^?9o(ZsisJ&@Ntpnb%@+%!hg~@c>+0EG#u9v$Sw$4F!G?*R0{1N|C zH(=sm2^8f4Z{Bc`J06%wQFmkx5AX1Pcee6SuDm5rYSrAxQFAPdBFU%ofIO1hR4P~U z!|C5Jo9vESmrB?um5CJ!!>&0w@$K5Gv+5vw-I0UNv~@cVn^a&Z+9k!ab>iXb(;$jC zOQJ^mb+$SWW$jF{St&;aJ*`Y{aBhOYwpCp8&;Uj|kE7%JcP~z1-;)P3L?mk-K+Wfp zRPlj7m*aMe?Xb=sd$+HocITPiAnN3JYxv8d5;#xX7MpuETBSv$nzloKlsJfL3LkY- z%-u2UZF*(1ECzSP-H-KjtU|IP2wo0fUL0f4_U*CZ*#l>me_jR{8#fcO!p2N99wsq1j z9@{}ytLyM+2ymY#lNetz^Obdh)dFK2LmTbw2_)+?Ivv;II8yVvE4xf^-PhZJQI{qA z`MA_-*;`x}yBWHQO*^4#oWYX37}`2#{$0fZbi)8;V4vi>%D9hn-|*FAv;{i~)pKUD znzI~L8H!Hz#Q-jzyJ+B?Te^J?#>yi%XF4axp7XM$wsp6)LqRcoyp8TA4Vmh4Qr@Zi zfIe0y9k$JZ1J+^SiB5Ukw*6S_4%)G20)Z7(DL9hKXA+%`Lx5m;9AP(l{ z7PZ~D8hFjgM2-+7a}tRAMGQJ^6m=$*yOvYr+@6bt04iQ;4*u|Hfn{{}ka(G$5Usq@ zIj%Z3J>FLwtrOdnd)u5&Do1vaYs!+19!N8yvF21($UkOCfJ}N8L0~nMcrSH+Gwfg0pQe&zH%w z#1GsYbnMKCTPJfY3TSn~qfR%qiN+#v>mxViv?@2ImZOyfxY!y&5sqvv9uX0#j$)PC zI2SeMaS=yW&8Zg-=TsLbIquLb(4D@zMyCwrTdDEv;X|@x%MV^I&j7^-(1G3I3n6l0 zgdnx*NwmXh2PxmgrKT2G+1*RO05K}8?UrcbBs~vefk$OY6|6H0udO8@Q{jv}0MBSt zQ@8mKD253UHJ!)1fIn6hm2#g|2=OL+4>G8=bk-K0ma0Vu2y~mtlp!Sv9d4GY?6@y- zoo1tVT#fH;ck-xk&|vd;hCsO~e&s=iBDk;I<<_F7yZCfD&CaWBOgC24XL55$JD&pZ zv(OWOc3?`*b5WlNOSleFKwdpCb8y}=TkQG&-COlA6xV~h-S8l>6KKLi^sTONosCby zio}!!z)!kA>tcg`UoDBQ0ix*sI*Fw_RfN<@gdX-4TSL?CDXE#rFTkuT^5}M+g3Mw! zPbh!y=^~)Y#&M@)0&Cpz-UW2W>162D&c3FWsp3N5w6a)xu{)qZnfEH}v4b2irTkwn zo^#mPN{Fyi)|#)`?Rt9fK**{KT$4a?)l94azG0OktI>B^fkgykg~^es_N0q@g&b@S z+k;SxzRqj0TK2NW)UN(A`4gczs?OyolCou=K(%OrH*zo80R^5M*=1YTWzU`Hu}y6x zYk7c_*2{zZPq3pCW--B}Q2tGBXWi!ndNLoGumSlOVggZ(FiNC2Ed?p6!{NGcjME}Y ztapwWvU0i}o+NvcQr*@DZio*+Tvdjts-TV6yakUmIH@n&vAWNcyn<1q!c8ooW0FCq zP#3~FLD?b=!UDF75ovkgQ2coX-<=1{F3QTlNW+R7h0lWZme?H#(s4T0YkFW*oXW^b z#Vx9(XUyA4lAg!gYzp@#^IF1IE!}h!7=Dr$KzV4+?j~g%BAKeU7_M@+Jb2G=ThIS` zc|5jI1k@46Td-^^@f3ii0LHD@-+yG)6@jb4;yE>Nqjh!)%9h*7T09)R6E@w6Kstz2Fbv)=hu zf43H=$0$ITc7p0I#f;72RQTWKltdmJ_R_}XC}G%#M^w!Mhsj3BfY+R{X7lR;_9kgM zjm(KVhC)ROvEvLI#<~>eaFm75zdK)qkRi%aZ*nSZY4mZpvmK?H8{)! zSl3qdam5Ot+gP+)qTkZ7RkBL4c^g_Boqe>bF}x|=cv&j3?Fx|Gxy_-;w_}Oa9EB>8 z3YR&n5FAeAbi$rvtTB?JR>)#lgJ;rVcJA zJ@Ck#IkP8sk~Ztt>Z)`_(}Y0_8wAV&O|gQ~l&K@q9*+Ae&ZBI@LM)5Qh;XxW#agz_ z3g`febcWIDWcn$g8>7ucgh}-(?8G_XzOWXDWMNex=I#VjaFvpQNi~*cndITTDqt6Q zn>QG>UTUDgs+`)R$~BBaApl}%v%5vbN3yaqH!G`Api4??7WG^fY(|ZTW)T=E?b>Du zjC+-e2@@UEO<3nNBo_3LUs*GI9M&0PA4_ygQsx%4{44VRI9#uoU5BW?nXMe7f0$` z(Q#H1Hu+6rm5MCf`H|KMuv8YLuZw!wB|69D&I-^d;^>5QlKx4*_V9I@0CeeIVuUb7^(UeG>uBLJ4$ z2Ij=#?`RFaDe;~IV-LbKIf1z1AXef|a?4ZqwbuPyjzT!k8=TiNa4y28H8Nn$ZVf}?$-#6%lC1**aCKsKvRW}#^~Fi&TeL>sT3Pw#4zFVQ zE^FHeUkhHYkZ(H(X%dwE=5dn=)>2iNutuLy4!$Ll@j~b)I;9eqBzP;5NK=KNh5PD zqctRTBx1Z$1xgoN$lk2^x*c(5F$pNe=8Of`&r^~h<&|JXs8-hY=CSA1D$iRPgQiR? zcz+J6N`NSfILK_Uw}n+&qm^x^lOKt5o*)FbEd`*Y1vloSlyp~0WSyy0qL-bdeBX=U zOQkD-q>8uQ0lvvH1v3;WcjLmW99*5eIGj-c%2B_YWVQlb6hDF>VPF zT`;ELY&YwxVyI3buB~M3;#7^Jh|HxF^X~jXQAlPMi)RGA}89J~#qfe<6u7Jn13X7~Da%erz&y%6m8R0sf6BVF-%bZ;* z#+R)@sxm%sw0ZlgU;u0#hYWPewN&fvs*|4V{Q(kUFbgKTT0rUf*#<~Fuc&;joBAYo z)lyU*uFe}v4j2vPiibnG_pK>wvREze=8hGABtbXgz%eZXdW@dkw`*AT?M}#UU!rBp z@O*IX9nQGmR3n}aZSV1@kmzGmrvuy>EaM5pa0sXkR?2DF5ZZxd7wpdoU@T%QYO`3| zeKjwag6Mot_7n!jCh7MO#*7DA4lc2YUtG+9?fRv<~Zp{Y(w zba8|ze1ZGbCvj^`-W(+xBbhZU>bv8_Q{ zlk5_e;Sa7XDbC!`@Z>dt3sfz4UR&kyV6t7T@7~L*;)nIHgky}7pn6@`=17Rcg=WbP z7DZLq`?A@w&BLWQtELC^_;hsH?5e?=lZr8TDz2J5Td~x%0J_)hu|DxQmFtgUFz~X4 zmczv84(1MYBF?xAv0p1`LFqk!<+fW{x8r0nf>UrKho?AOd98}Hs6*G+;0Tg-2W#KE zET}6Qe>lk6(bVuD>~v@4Aq+ghZPJ!<9Yi%n&j@k{V1ZN&Fgb2dai!X8a}GEb-<>!tsWR@&Wg2_Q`~f|Pym1&#%yz;vxJ>&VV}j?mksi_CmzUd?SHcIOd-7i zhdG+PGh1{bj$|GP;i>cN%z(88Pv;#)YoY80hS(?bwr9AI3U22}!&7bjn>u%}eR&|P z6Ap4K>g6V3T0q2VKwr1r3~S0~s*dU)@`@YB8Fxa+t}L`84eWyzd>7~@PKO73K(R)r zUn}+oC%$Y~c3K2^%UCLS5==!9m^r)J-((b2Wu0t3 z+rw4aK0RaKf*N8rDifm`cemWYNBFU=&$m_3?x+J5oTv!5bU+Nbrq)58Dq_Uyrak@= zv76G)Zsk3HXX|=0lM^4^7d}VxyyQ}gfH>_C+!OvuY93SGfEY-IupxIL8`wcU^tr>K zyf`#aq*+Jr4!cM6f^GN>-hBfA{|but{_PF^8s6Y9E1~?^pVMRd*lV}g@Z>*!_mah$Yw|&yDL*{<{N>kQf2^bY6NQ$4 zq~NqZJbClmkA;jS@cmb>p8a`^C+^_MvmbnL-B`O1-)+3(_^1KJU;q5iDMJ09RP@Ou zeD%q<|EJY}{udN|20r(@~**Hr%xDhd5J)$soU)$j}a#GPOTu*qO? zB8)>ZWd5~bbYyz6L1maPUzt z;r3stNDwg=upwlrcN@d8yD}VH*-}}O2ceLs0C%&$-?2y~S_Ik-1s}o)vc}@G56aD2 zsQ}fw9kvozfH6$?81P%Cn!{;!dk<|x+kvb5?Y7{YvsK$xPA7Chw*&n0*a3pksug(c z4o!yY?-G-J)H`6So;zcl?mz71aJx$SGT^q*$YZZ-U8k7Na@eNpn+yxPhLs;TME_8P z3d&p#o33oH4%nGJplU8zCG9Y>)BdeZdF8wYt}P$Oz8+m##nX1j3ix~-EG~r6O+QBr zDODt`fFz`m@5PN5@V=9zwzfz6-rdy)jYAI97k0s1g8y4wjw&tI)v--*ea^_b365F z8$6Qc1W<^9gW3748tnX4Y_`h{ys>ws z7DBXuG68W8;#|D2=PgY!2EoO&y^;t6wp0940vEl7MuabACP4aOJuZPMy~!x#w6c zZ-ErGyKZn|)p`$%ujSFMbw8Ap4=U^JL0$gU;b<)Awxyhw3tDzLM6|nkW%Hop4Xn!? z3jBlE-V-ZWi=8O7iW#YK_KXa*lZNDRnhqaVO2&*?KoQi-9f;vh=mIgU{?cV zzp8p`gbbWn-GSyV4D_A&;6XYoyI1F0o~trSLUwYo?{c_V(%w z$DlL0n3RZhS8K@AzRbfGyLi{O zaxKnwyXTaIR%26o>BQm=V%Fus>2YlBvGB>-vLo(JfIAe?xXf^#Rri4*s0qH`DwnH; zq`*N|*W2A&E^*G}3P;=&s^$tR2?H))ErOc$rabz!-wJB6^gOa0unC!e#!_?^|^xjSVMV+vh^v=laz>AOIuAZ;-;D}RFp-B+7(e7Ku`1_61snb)BG(7B7 z0RJAr8gqBqK`ljfEHcyqI&1DaRS(t`n{g&z$2FtnWyfLVh@u3GQzA)({js41gm`(L zgh>PoC~gcpvjjt&z~k#q`s2!+M%%!`p)7|79HIhlIT0|i*RIFd?Coj5k+&;4{kd8j z6i-!DHe3~gFpmhx3u7;OoKoWnSaf@4rL-9Kib2}?(xYN-9vMWz>_L!c!SOo+$ikED zmwU^myp>$ab0SCX!fz}4Q}lq96fE3r9=s4sop{)GY^wBSjyhi3W_kPVC;-dL9Z^nF zNe&U%F7@DTJXQ}Rs3{1V-Y`Z5<&I?s@8HbNZcw+;B8;ry03irI;B(C3HYt$TTfhf^ z^-2v`KXq5^07%(Z%k{3N?uh3rJc#NL)_PP$_8fs+iVYo}(vFE{|Jsy|Yz4O}`{D-w*I6%B+uM;9K#&XX(!fH?E%2mr#K<+8z} zj%^54_q>44Yycp@?P?Ppq@Z;#YC~>7W_N$PGaGVC)<{-(*9xs#eN>l#9z#-SWGWw# znhmZ*0f(gmg3@MXDL*oJB<^z#sU2YKZR?sezhCgZDF|if%8o5ys=ACSGS=AaQ+%q< zay?dq1j#)T*VLKAz)pjzgFwMnm=^fa^TY;soAtL!##ni(;3v<%6I8pSp$TCXepDkP_#X*?$&f!qnXZyMU}#=K;YCZs8CCm z2Z?Xl%kQio&{Y@Yk$1XNP_pW-yXWGmw&ie4r*&-?+14I@bpwWVYxXHQJKa{14KwEr zTF}>ALWK}WBle)(q`TtAw_E>CUA(O(&p2qp@=06dL_OuqHeL`>RevzGb2G)kC{B`2 zFgxo6KzrHKS)fDD)>Bn7i)wrxu6QmCHRDQ4Y6`qX%bgebI0!o1xj^K$#zC&91Th!8 zl0ZGu>m3MGwfM&xrPB%GO%b?d5D2ju76%l)9mM+q^?+|*l z3Y8KpL$y^Z*=k7?v>MT2^b*H12U(q#C}%~$2x(F~HH58gBe-l1MaFfU9}hCE_7VuD z*Pzm20Yf{1q>`JHEPQd8gxVvHu&moTU2AnQ zuagVOd{9}|DA=EXSpX&47d1ki#s96kZ2bTE= z9MQbOFRYQa85dI_N3}Xl&o`)5D3%Mq4)}B`=ZnYYW+`(THFgu}N zp>53%3nI*^(@SjXz4}m`^3jw5UL&gwxHyly0yL5XVq58$#N}QTcGl+DYRkHdilpvL zMGPNk9G4iaXw}mJA%~K+*K9fj)Dg|peO&pQc5F_s4wxZK{u2JEvqm6X9EM{Z|3QQu zE!bT(W(vUlc280v0AOGnkJZ4dgv3oPJ`fDREat`G$0Pu8FIlwMIt2DUOLB&M_k&C! z)$%bot4%janVSpxQk~zmoR_TxE2grN_U%+7c5!j$TfnlVOP2c+#XVzlRJsy`HNvLP z(=QNq>kA1TRMX0Mi;G*HS+dbg?L03;?78Vt&M znhfYx(hQ7OxwSs*DFTA;__W64Y&U1S;7IlwC_;Wte(jX9JpHjsi%1=OS|i4TSV${@ zq%-6@T|TS=-P8rUY|vqefUX3k@^l|XIU=Q3h4r3Nld{MrKnR>_QG#t) z*sTQwo*Ow@wLS0yK(bgqGOX7nES}&4u*k++Z#`db(~Ny_C&k_;#T2b9waTBzZPj&h z#1c=<8DRUZ0Pf*Ar@zHKs!B(p5>&I=r1RI=ex&B{zUA(=y^8~!-$TaA_AFmTi@q(3 zw{Ok#ZU)7pm79f=!ZEuWm+&g?vss-0jkjErL`9-k#?d-{%kgf<@Tg37?^^ce>@bkr z9?$KbwJAYDZ))DuG$T^;Qf>-EHxszAW@-GgnQ_~3SwF^u364m#dm;tL39?FuTegJ& z4C&lR!}(B-u)4>muHJIlNZOo7W{(?qnyUurCjvhmDa233k%7LJ-bxo4J)6pv@b zrC1E_LRQqDUL109Q-Wp;pba$i*{6edvu$<_f+L)TkGCU*DPlop|BZhW@f zRc3SoS50v?g|f5`MYm2*9m`uGEV%I+mxFuS91p$Q)bjsh@88ySX|}68@I0?#-2h&( zk4T+mMn>4!#^r)?**+9zVPr2PAt7Am>g#=D%FJINsZ?g8^*jg=`p2AOeqU}PdT*^q z@2%$!3T%f!3#t9N zt)-G!z(2S3uc!!kI6au`%6OFqRnAIcE2b0_O-tqAvM`oCf8 zj{Du)(IH6-X;e{WGQ|GWEapC|c{wHj z0umd#&<%BAj?+4A=j*MIc1X5cTA}_i5p$8T2E4W%Ei8N5oxEJlmc!TOq35EHG^ z1`GSe`5yPtXBB($sC9v38*1|4ur$y;*_62nQ6K?(z2jV$J=}K9xM1zXp1QY@I-CSs zK`n5lL|;3}eg4Z1GuE1;d-ElAUbn4a>Rz}N%d1F{vs&Q77JowZur2%;PP>zsCR#IInS^LsplEWtnPF4_s zC-WX2t)`&^eLk>xU$@cL@)+3%BJSZ-b^Znp>KPoL0PV1qs0>9>csUk59~Hmhvv0ZB zmcZL#`T6i2>Q~0VrA!o zT~kmDvLjr6Uxmz7%*DFfE^+k>_Mb}Xxd~ny#g~V5Kmv79i0CKa@Vqt7*cT8fE(<-Y zHHTdE<(tuI*86eLpmU{8qY!qv%BJ_FZi7(I;X%~6HhcYZ@RU^(2;Z#gO;~W|BN&4l zpYo`!%?H{J_PJ!D;;aE8Ue`4hSp+l~2B1p32nWTu&7@4dj&^WQg^0oJ&Xo}YJ`(=X zF^L1XPp)t#Y->DXcjtUq6}+G>AR~Q=)KuRHs_H8*uH4MWV~5;obqQxu8s23dKMi+| z;+#lmis~xBoNC`)F=kfFCSS<>?9OeZ$b|n5A z$|%0dzFILFKAjw{rQ0NIqrT1JqE~HU#hHo7|}lq2UaJ*BO8=AHj(G7({(2G^z4&QxcU4^DH%T-kEN)X)S)H zIiOQJ=cl%^DxnK$2WBM5VBh|5YQ&fRBq=-W_<>-7p&C4A4Nx=>Raeu=rOQlFd%tf`Y>{cuH!YulFtLF!gE5XO+zceCc-HAI}=|P4kpTN0rHX z@vM%}EXZ&GiQ8ra5-p}0p10y9&vO3eI1R8?*~Vbzi!HG%1}}IVPvC{Y2kWZP1&dI_ zXz5-P6S3h*Ml3Za!7a}?r!S1C$}I$Wz?}Dy#RQbLFYp@45l_q~#3g$p-SWV0Cs%V? z5XiWAT+3;og6;k0!cn#$kew{6_R~{EC-3^Q((EWl#8~RFOh+enQb2&0A)a$ zzYfod?&ofIe^^tH1#r-JxI@3JZ5C&|Qq(jyC0ig^jwv_@ogTK26|Z~8<()rvWe_TrhXQ1o?CZ^+rpMjld!&9VT!&)%Pi8pQA z>M6ePbif_|D;vk224Z*pfgGcAwTt`)R0tlZx(;@FS#-Chs3>@3*}y4=lY>Oc+gIEc z=@Za;R?(D&9p2!;_Z0}Bw~eJUIcb(05iulzQf`Mx*-FmoSnyU4*kZ@hAsMFTQC_`B z8LSQ)G9J~Ajp-mG!WEBH*RL~y0pbL;E7GmrCn-$LaFNRWD*w6w9$C|&p|ZD@)$CJ# zNn5axqSFPP+|N2;O$sW81FzjvhoNq0d9sS6;N{GgWbX>yS@%#71H`b7o@7Z*KorZ5 ztfF_F==wM|)83rV{K(LC*2@fAxhCT)iCU*Jko7zj3RZDFhQm;dR}b}m@$ADH9@XF} zY9-!>O6w|a>jt$30I|wux?*In@>Ng~k^!V+>%r5UWG6AmCn^!`h^juX^7ug8+gg<7 z0h3j!w^0{^bnA9xaDdbG9S8TSoP^R}j&CM%G2fE($IzWeq)#v#Hl6Fb{HnS2bVb)| zxxNNu=?}D%mj-LD+9Q8tVVU}}lZJSoI;+P9W{>KYf^Hyin{?)LIr!5ZCe{oJPOC*x z&~N?r87tADCK%skVuVO)sl;;Xx^@TF^jV2nVR+4J;K)!S7Wyk=J(Kp&jJ+zjL{p-8IHwK$a~!n`8@y*LDX`?##MYG!A<_ z)*C)My;XlxF~QM7kHYOO;jvxCx;k56cIOftg(n38k=H!!(Y!(c<38uftdq%ue3iS( zkdm^%gBSElkM8Wys&+84lx;ziH>bst1QS?g6}O5RZu`SM^V74yLtCJNb{u@ZnBfhN z#eh$Nbxjneh5)yMAjfLL9&h5sb|X4F)mVv7vw`DP*??3stD5T?fjw#x*ql*#7UYMu z-^L;oHb1N=D2^cS1Fdh*|4H~Is&E79;eqqa;E~|Rax9KX+#xBM!_K|g8Ja0e3t-BL zx4?GyT@jObD?DN1t(73Fnq;jn6=ATKu8&T3o@ox&*Zq1VeCCfk|q$Jzg#x zk$=wK1L}L|dc@0SIX>{`h%_CEd{V|my!A*z&EPOW`xvuzI3UNZuf~5Ab^TJ3f~Ay;PC%B!*ptRr!|O$Qyyszh=YV%^quPdTTno}8JTRz3oQ1F08(}A$X?-h8V0~n5QS*h3k%9w zsGMxG0wZci(i|pOdeier)$bQ0?d%>)$CZ-q~X?a}L6y)m9Nvm+P0zM2vlvs0Wy8P4(tI9o}TYCti9|*AEKI z2L1HRQ*Qh&XJx#8P`)-9->I^2yy}N1@9dl&HH5UCi(KLaE!&{CqY-ew^VUOwUAy@0 zOF=9$^YG0@o|B_S3c_sR_+SZhpWC{%UUPeSq^6XfRyPj#=L^zqX?`f=@u@gzKc`YP zTqt2@IR-faT9a^Jpb$J>7Ew^kQNNxC-nf+h7taD>fE>gg!ejTmDR(by>cT|)SQbAD z;S8hzR%Hu5aweM>RMof%+XM-goKsL$=ROC;B1tNMM;tmz-SsX3)yF>Bukix1oUePH zPn%J02DHG=E57^3XZjqWc%Yr?@G2TqXw>nd>uRjsla*+4*SlUg#Bu}rLmGulk%X@9h^d3&xf^l1CVxLEC{&p%FE;?G|n5PY0_7526MIQbE zncluMmA4jaEb4Op0xHWlQvsYl>`9R}+w)Uv^82B~v(?O7+lla}L3v2AkdDaCx|bE@ z54x)i1zV%D%3p%5Rke59b^+DuY7V|zzEVHwKdG_$|D4_)){AVU0ndo>zV1Og$(nZ= zwGV5O8Gg@sW}PFxOHp&1^w^JaD?>Lu-d5f4ID@(%*c17)(dyPePPhk4YOFSP<70

    90pG_}s*jk$=K!}xc7Lo6(*k6XtJp8`3lj2SlE3X?%aoHMRAUm{Rb&!*R#F3Oi%mND`4B} z&8lT{vbO8)9w?bZdEjv`; ztF;xFymei9QFnmPto&q+3+jD=iR>EtzFRetk(>$!AcBmb z^R{q2@ArtvtcEFU(iA>qmE5}TrGDAOON!#I?EiFnR^J&Gj*aexi;qh)Jl13+UFy-m z!d{Avk^Mm4m%T$Rvjru_1Kw4>A4TV3Jc5Vx$$hZ>rtQymI+JV^%mGF}`b`Xgb_WTp z__5+tj;IQqfJ2OHHv64aE#-p*P#X#R!$5DAVJzC(cEM`z?tLf?7r^J;I@kdEo#G^t#oa|TM37i>(~EF( zt$fJ!o~dp)%svW?ij46LZSyj?FD=SKCf%lLt@C+~mZe=|Id$DJuO{x`5}m8iB$`WI zXVe*R%E~l`4`4ievMKV@kGw`xtOuISs<#|i9`O4kKr8P_D;Jp+VJf9HWrBMKGzBdE%iyv9nyNO>x)B z{8pjb;IwtxJC67gPwY{&tttY=t)}du5WMvGbg6cADbE4E)RUF%OKfE`foP`;+A;1G zKN&mJ$7kd=J>wn&^8LcTP5wFtrFXo&HO3KT9qDlPeUDVCs;qb zPCz$AWwyOib8LUG7ik6r4FGd^L)E#eV4tGf_S@;qA!GpN$Fr@TkC@2DD$eD$MW*6W z#gl&(cpgCkgg28J}Df#wQKxchf zTFQ(8CU}AnL~_w`qCwK7Ml`9GNYeG0)o{%@aL@c3J0F-vCRe8n;+xecZ4h`E8!+D0RyvM5T#5j>xRdPfMgMUd*RSL6H?9<9LtaXt*!y(R_XW9hmd{yASwX z_<+CRwC(t-rftXHaN4$n|9q!y$M62M?f9LXw*CKaME0+oz-<551ZEF^H-Y)PIDvU| z9*bHLr1bC1Lbf%R{pD@&@FAxc4?XJ1p>dhY5<>$$@zAaNC?9ACBCHtj570=>XQtIj zRy`AVcx8{vAsiY8P6hLxe#&!wC7`+IibGphSV%Ipr}sVCHa}nMWOmiptRMyWFi09U z51{Q)+JsM8|NcG>ywu=AT}OC@st*651p?+*mYi0QtDi%X+s4zThki_jYQy%+ictuwu)~ym=E2GKSMF z{rzy_jUGzB_A}oe!KkF7oUO`8Svvs_H-m#VD>bE3&)7`6?ac-J1AsvO0LYdu5U-*} zDm%kGZ5@n9C7kWiJhH3uO$Y95tpdv>_2GXUFFNxuu6rH7oMgoX3N25CT`&I6%!iCQ zj#OBjtVU~(39tw*uQ_*{*z5H`)Zd!GYxnTnmbIa2-y*Ilzr5r2)e(l`*w3jQ?*}OUV>Iy&5+=2b;)d%Ti*UusQvdmLU;p z`9bRJCJRjCwb&yw^+Y0sh3~R-sDDDE5q^@$bgx{Qh$QFzz+oR9c za=PBN75nVgm?C_wIWNl6oawRsszM8!B*E?MthP22DsJU!d9Q0rYN}c9`kq;~ zDzQQ7ubg10B{*{Hv!PFC|B>4A%hs?Em2`(1)?s;9#IdF4qZ;N(g|g(Nt5%ZT>XOn- zTE)V1FU7z4vKk#vBCU8FrGth(nZ_!Q|I`e-i;mBP(+3tCVP{9LZLSLvmWzEmLt0A0 zW5?@rq+q`$LFzU?QpwB{D2}dwQKdpV^F0c0#+UUp<6>@@oVF7^R`%MBoYO9pJIWX$F!Ssl7!`c z@s$M8M>7c0Xtz1i^rssrEYm=fmIs<%O|&d(A){2g4^t+-Tnby0&vsJHom9Zx@h?@C znq65bJ9%QV>rgfFZT}fj$U5J`;=mOLICY_68*VqGB4LD<+u1)0$Brfz{_oQC`!;<*pvi_h z!}8?R3?9*9?sOV?YC{yZhfmjIB4*jHMEn{K7B2hAZQQ@3HYS>t6%PqVc<;*9c8#cR zRXeo`zLH}P8eixo;F#f_mLkJ5jb*`}`TJQd+s7WZf2*{0Q5&?SFDRZCty@^C$_7uC zah+{M#mPOxc#5j^>Tau&XrEmRo_pIR*2+7t=RDtKhu&AUS(+bDbq-IDi7vX<*e3GW zC~rjDS&dZEZvtD83`9x>)SUr=FIM%BQ^vn;RF7rE~jjYzsln@ zroU0)p!{C_&)MNLrvC)~rvE;LgYzPP7fT2KmQdGUqR3T$_3MB3fBx}5`^`@kslQC5 zYy9fh|N1w7^0Vade?zs)EBT{8`>8)wvzPX-{u*5`^{IaIuYPf5|E|(k?Z5i)gm|omipgIYzgSw{dc9e-@VeC(hGKAaBEvn&2_h~di!aw zy~9)-4XPb=Dv*>e=cM@xNa$_%!*=Kk6dt#{uO4ZWVW%bp-XmBz%e=wnpvWG+2Z&v6 z`wyOd7f1H*A3bg3I0OWZ*z_d%peG>x5Z-tPSWUY$+kACUO|Rvb zGbFs0ae7Z|h?GeJ$N9jmR?*N+G)L7$B+9a-TN((-;M;R?e!&U1=A7UD9;fg(aKzL7 zaH(ssSbUb;p3|14$&3s=75h!Jom5TT)}W;XN42L2I9(m6%HO4&+a0>nNDvYpyu;l= zyIlK})lh%4L)lKPuq0AX=e{QVyYCTTNZlgTPRE1`PVlOMJ`3*wV%Xvf6A4gVy)OH% zE6?ex>!1y_*cd$oS4)KO1+7hm}~#;Zuq*PTj$?m-%-&MX!gzH8s= zKj>s!Y-F|e(Q~yz@U67U@u`yl@#wR1JeqOXsSEGq`+bd_m0h|Ho3KH6b=|CoP4FwM z#-OpxR&PyV1eWBd?Dp-E`kBnX9iPrN(6_G-hi6_7!WH1qoAg$5Gq~uEmqL> z)!4b(zQ@U)YBvEK{Y=VeYONZx^GBs;FH8fjp{?ckMyxz;XLt6a{e=aNOS=T^etCT^ zRs|FGP~d4l&LjTNQsZvBgO|rZ%`aM(5-q6JE0*E7+P&p?dcBn`&C2q1zC}Nu#XfwZ zo=jYqoiTN@?)21x^5xG8%)+ewjxbc~&fOY_I^_=UX=?ShuD^r}Wyh8BrPqXR73uClVT!NXxU3(= zH;+M5Ris)WVML=J>wf)FnYE}Ob9a%i7*mvyP|!1m3r zL46Ig#jEczaTB&nbSX&}5y!l;h6B2sP4ysx?usmBB1sJdl6vf;?$_4OmEJL|wB@Od zbZ0HujCAW__VGNNnH%-77r9=qJ+JxnH?UBMn%U~+bLzE`lyR%`pNXX&{Ik&FQ2t|S zsZjH`;`KOiWUFX84zJ6Jrg7RX2uR(!Y+p9>lO^r%BjS@^^r&h}x8D1j-;t@((Sb+M ztqpd)(;82$SS}h&iD{0e+)f$P*TF-5 zV?FR-1?%QVj%Im3Wxw`MJI0Nil0@ug)-gIxpBwlrK-_saZpyZ0mS> zeda|M1bx+w8Mpr~1F7{6^$*XCNokYtzzU^*9}8FSe! z6pf%jVJlrjeK&9x=<6sXDO}?` z#e6*!A#bkR<{<}7wOAQT%Q1D=G-V|A1l0y!OX}ll-NwaK)gKLfEZ4KSU!DW2I%-|R zCG`m?dv5I)OMD4Zt!Xh1GXDS=9#>SJobtCCJ;6t|^H`~T;cDk_aeS&2t$b$8xaRPt<5WMT0lGEx zq5uPnn1F9Q((6HE*?GAz?ec$`(!IrAL7$-erN8spTImvhRLk|WQw2^Z!>sQbMDtbD zyIopTM1TeH)W$;6gY%^OTSMD)7Lw~$QPnSm=#sSsvJ*()3+WsN)T+U$2QwR(XN=0c zuXh=VXBbW0n@AKhtDXT#JL$mmx17oSyzC#g5X?g*i0Z_uvlXzfYX{zfRz_;p%ohft z%d(SgDfR1kQvdn%QS!JXk5?_YPWBnQYk#4{Rx99WbtFmQuks{>y;MO0*Bc}RLnk?C z*(3B}j}*P+Cy$RM#G6Q-_iTrb9c5Ai7+!X>3tPYJ!Aq*iw5n7{Bbn#~`F7&0o>pTi zu9c<-rA?QioVAsN#epLLZWjpb(*PEvPVP;%$95AcbyFF%Wnl?2XP=OF09lfVHJ%EMZOEqiHzu-4S>6Wz8A+X){+$sU|eo?P- z;Lq*Eu6~Cv7xOr@rohm}GX)(9-^qK0*sGfodCWF=&}ve`fjnI_JSXfe*$V#&hUYy4 zwk`sUMB>vF$2niE@j~xjJeve;O~$a-zHDbbTh>B+H*#@fTfHFF5I)KN-Igu<05-eH zVH{-pv7uRUCuh8QEaVoJpSJ1QE>C+(=WZU!^Z_#>EZMga`98UsGKN2-;$pPVdaC;2 zKeH2^oH$wK%1ZF&Pqi(^*QHY_1Nlawdm^R_Sl=SCoDY zqvHKW6HFvpDcQxQH0|9ig{6@a>L-#DSrZ>9^y^3MI zI((098G>LiUlG&3YS)!tbwKF4Sozw_&;f6nd?RtnmB8>5P#>Ogs`aUi0 z-#Q15ueQnCkqGdUE&6Tw`gJzq`m`k?BjzFCB{c*kQuVzjAis~&AcSx-BxEKyI%kOO z0MQ)T;6Cc#% zQ{@1R`)N}&!Ak&C-!Z|`?kk0@*`x22Xx>&pDzt(0?wmiURMoE&yfeLksO&9zUzUn#x21DqssAY z=VY5baF^7>)~&#np22zL2nIio(_j#ZJF6smfWoH{dae#cPbKW@do=i1J-|P^9Mr~* z#XR=`XJ*oW%VB!Z1y7YMe#6JK!ZR_gOOM>-3a%5#NIn3NfH1%Y{yw1^P&IiQtSR0h zdxF%cK!*+OFQ0kY4Haeb_8Ux{0Nz2sj1B>S)H|p-=)4HV0GiGk*}%F| zJ&^Ry&MH@%ntYq7Z$)8wrZK-zUt4w9gqqF)`5+>S%k9Sm!CHNx&W}tXeEOcLC< zwufenR=Eu_T?b`Hl}IR19)iPh*fmsE!eDmTnE(mGBLkB$*)pmMlGJ#rM0+EIgVRcx zC-QcHI<}D?oO8j=GK$t(a=bO(N|O`=vMWGiJDV>7GVIy zQOR|wB>y}QT@P!I$u=sM<6OM6b8{9hz<9icu1Mx~W-9?Sb3gj_q<{ySq(Xl;>wd=v znr~P5*H*z#5iB9Sq}$PwDywN1H%54i+mnl-(CwR=(l2pZ5Q3oIwk8EZUsr{=0P=ZY z{5>liEOC{=hHD@S#V|-~#d+Xz=0E`ve3f#a@997V-4g)d|CMK8&o1$?U)kCH_$ef4 zNl9do1bsIFY9;pH0uQJGf6iG{fi0>HBrw{j3C^Tj;3jl^u*j$>g(~D?okYk5Q9g=S zbbFq%nvAyD@$8!xoQV)jVu5i+0NAabQ`B5LDx^u`Z0xxbHLJJZYFc&WsdAHW-g$G) zr#5prh`85s{z_?1C4Pw=JWCA)5tI|u7c7uTlD zt(qZLGaw6{M}2$)*JV$yrxgw-Plr;qdeAUBJ6c$py-=Phoz|wEb(A3ZeN&l$oAq(E zsrN+witUBXcq9!!?X+f49dRKTHU%!rK&AL~t9W!vv)mDf!M%n!5=V0xzF zT2|K`Ow%Xpg$&-m*V%R;dDXsI_XZLjw+P23r|j)~@fCm+&RU1?9_f@hVzk&!FqkS% zHES+B`Le2FQ4I*MLwR*N(9yVSIEtA-NE28Z99@Ke00Qr0kD2X%ga0Zqm|jw|W2Gd_ z;ll}bsa^ycQW`<|RDlSdpDs5WN(IQ7j{>N`86)>{tlRY+S$O9d07%DPuxk;Z{t?&r zcQkcswN3&Me1MY^KnIet#5i)Yw_NO`p*LwG zTnP%Xjxa*q{-RX_HajT}x=1X_Ym(}|pumRbW^CqsBx#Q%LKxaxPu{Vut0Zb$bB`gM>2HQ?`G-jcc&)fs_P(CF?ZUAwh}m;FX`YLG9GH=X88} zbp^WmsiyK=wP(3(mmZr0sNJp3QKYF?lk+Wl*U$Q8#ppWWNVLw{5E3nY&tyP%h`m_Q zC1da<@PM_o1%WBFX=f?_MoSSzraMT=2Fq7zwd7-XjYvFtEqLJAL%(PUaEW$u7iTNM z8CgAbvYv&h*vz_YLbain0`dga9FOxv?qK~I-`4FyB?+0|g>D2(5S@ka&5Fu5;323I z=DJu7m`D5#W@|W}no6%s$7S`B>OlSE2XM89<$HTV25fKg$#xSP_<~QtXazy*r>Z5( zpzQRrwG~YvA`wul?oDJmWy!lxadn?qn~FRU50p_V3PFj-38v{dWIWkJRbWf7kU95G z<0J!JWlCU)+h7hTgm?m18foDvT1}5)-5HurvYBssUfHE~QJ&sEQ<2~1x+QPhc2G1{ z)>R%#rb?p?)^j<Dt(j*%4sQnQ%O8W$}r6P?yTCiMFM}f!D)KdH) zs6|~og>gRuMZDCs;mWMtYETrlw5e7gJT=g8!SNdq_by5@H4QT?6hVlEBQGm)KG2do zssw$OJL$nR_@0ewt7lNizL_W=(RYWC)gtJ z$Ctf{3hhz*;{=5fE%^1S+OQ4ig(ZEHsCu|yC^zV&dX-7R`lJ~N*fK71lClO{!VKD~ zPW?CnWgmkhI#HRWOCcCOp1dNCv}-`6Y*s@KgD~<5CRwphGo2H2wrn&*ODvG_rPp(_ zv*B7*IlZZ!!*Dih1`w0P@=WoAULmVsPUnt1Hd7^BaUSc+z&S{vk|m1ws;*N>M^Fl_ zxXZCid&vxo#JkP&NzZLZnw;4tJHrY+MkM@XkSI^&^(6lxL`L$Frrx9vGF~Jx+d%;y zQ<&N62mHJ3OItA#&8PcVC(}fpeLK?rul4TFQTGnxAO<(jtd@u&RY6mcL|^^Pzeq@; zZU`$WYcp-KXjanh8Nq!c@R}di6%R*7_Gy3a@%4EIT4SUm>21xQ+@y=xPy$Kl7zqg~ zOCOQ}bbN;Bg$F&=0bwC6sP%j58oZ&DmFW>3Bp<@o!mD}yTFN9AJCi)(itp2(%;V zZ;*>dM&LyCGalXPhXaX(58|>DV_HH^!g!m{@T_+YA;yS~8L=kR>T2cP?NTaMsSl;O z?gYdM*0HveI%?ij_1)lbO8RN0xWwtaXbKs>@KAoY`lmaZHn7pNONSdk~$ zp37mBDE9ylY#zj$_*}vgsO;%_8@bn$%4{R5MiOn)NLw?L%*uy52LGNl@)3$k9vN9#@?@~q<6Q%1)RSb} z@f4)4w=IQSDa`ER+3pN3%T*zu5U2XLT@V6p&YxX_LqSW}h!U&K!BR)=Jkj%QT|*5i z3%W)~Lk0jR=?bdQ`gjDps%h@AoxmDu#93fP5mPh^YR@O|lw-rhHqovI&v$ z$huJ|Owp>BH>Ck&)g!FEj%x{QMUvJN9|w!q+Z^uYl}=kz zuVz<-Dkh{xrCpRmWTjd-^gU&(^4#DaHW|^^l}`>Z6(*t0%w$=CnD^8{RJH(6Kcxz8}*KOB;)?*RiqPrb1d$kt&@xOEo+)b$QnI-C^ z$nCLiT$gH4uvi7vqwimtK9%6?%Qbhk$aA!Xmz2>+{4PZ<7ih)H2MCdws#Xk%sJsK5 zMOm^@j#cBf^-PhzeLq%7xiv5x2yHtSuK6#o>{6!7q0r$Ud4B!ONyO2I$}LiAb;1yA z1V4FnIQbl2jYXlK2gZ2m0LF?SSc1KwuIKEf<@#f!POm&3?iue_Y!cW?dU=aBCQlVB zTuaZSW^L!5M|)pD#fv_kk%6U^DvMXaJ=@jPK({yy>(e6YuC`bCwhB zYr25gwyr6svxFbmaQwNj(>p9dvC-H&Hr;*>|G#lxRvG~yo?&DggFBf)c_Q95uhq(C zSa8ctgw02~t`IM|OC2oPImLG48K78YY7M}he{~a@KC`HOBuZD3y5QSGpH%Q+via?_ zwee7GsZ!>#D)^mADDZ;U*xaf6bQ6*Bu1$(&gPs}eRl9%<@!7nu!9=pLLdO3c4w5? zYj#*gm{qpm{5IGpFBBiXbAX_%4!vg5wkKXC&~MsGvGi=@LO zB={T`_IZhHm%VDX^pzXj*EY98+gYQ|P z1T$h5x3nP_!)OaF%2!vEUj=C%R#l_eJ~C$sJTfJyl7&`12QFPlS`jEf`Z?B14H9nT;O0SM9!P7Fxs^ZO^EjdF`{|}}SNbfwg`lzkftu`earG{?; zm`x0EB>s5#)E@$IEJPB!ehbeHua0o0a-t!$joeV076!@2E)N7Wf4nWP++{0q3od)t zmlYEvKRWz9u3+P=hEl=X_;ZwPO9N=hb5^G%jxUmxHW)4IU-8?K8<+ZgAl3du0hLwr zS;_BlI7%q|)=J;vY{SlOD?uN3o)vIeDNn zDo4OpO`{&JZ|Dsn=f{-0Z7)!em8LB=yYOH9uGhu(nbB z>Q#qdpe1x4qx~WEJCiZ+9M@d>Tkr(Z@8+BZ_3Z##gE~M0FDK?@Q z3RuQQm9A2vMjC{nIyZ`n0i-^lh)fu*b<@RX8sU*A{GQI~>!M0SfXRrg93 z^5$7u478pUtQ>i|vvuk8gpjKlULj0e>x_5s$K+WpG0)J@W204;cd66@Mo!=h4+;8X zQHuBkBU7B%0WTJXlNcW35f2O!`B(wi-w7-LJ+LQzvdJ5ora@6>aFRrfhj;W8`st;yb|&E8?&SAV=Ph00mj zON^tr&uxLk-Dr!E^~`3ik{#Q!@~{EW7(P4h+C{F?)4E$Zv|*OJI3Bt_>hkK-am$}x z^)?FpsKBxMYqMd0J<2vF5;oP6o;GB41=kgY<)RJABPGw+?Ole7X_#wAvS}*r&eDVa zLqRlmveD~(iZUo$N=ZJ`X-;(w^|n9-xe;7|6?FSr;*hb}$obg#UIT&Bfz>$xR~ z;nUQ4=>FWA+NRCfK-SH0BmzoL*i_uhCKhFE2`-)=4Tm?krE5j9r|kgJlZ&|X5GHSX zo=UWnoZwlcoB`rc>_Vt2az21G9=>U}MXkaf&)vdDdM_h7K%|7f0{-K8wfQcq9zQ^` z$whq-dIH?T4!&Pj$99N<{qO*`mAC;LbpG}0NxjYcl^~9GaXT@ifWCdTs=nBk(v))Xm=Zd!11oW5rAuoYy{5QPpuDrQ zL*wP+{9rc>uh;|E`_bKOc?v#mF*$&O=(WqmJ&jv<$fk_ia`3!u_S@E!oT7lTWapE# ztm5wn5UsD%(R|yteGz>;8dVO)e*Rk{qBEEK@X)pTcms=92e&sUy3!o_($H7~SY9B^ zRjn$0{?uSnLh9Yl#cjn`-5-m*1hGbh zv1doI*vZBR06%da6|^U-Z*}I4U@`CoHjw?#9-=IOB~ek}+WE6Dbd{2oT?YJ5(zf0= zPi}g}ROd3jS+12m*G{`zA_7eV%E6V}Zm0+m9=Be7%kgFwxd#QT_@*P^JsPk@E5z?3 z(!u9ky#TLO^@HFq^@ddmh>v!RB><4_eU8}Y8D(^asFB{|ODdWgfNIYOv;^Yr7l1L(4cG1(8v+afB%Sk&S6526zU&;mFgv#f$1xo7L%SZ^0?X_BF&(`ws_!9J zJ3{ePau_t@w#|5I8x!5-7OvRuoB#D)wk#?NNL)GyG|bw-cv`o*tM}grym^vxkzyyYmkqE2WA8UqB=B#gdX6j-PT8yqFR09 zXH&L^w!FA+LSHRmPok9@+4)Z3u`XUM9BKII(9UDE`+=a@qO4c=xLE4oDEoZM(XHk| zH(*B9Wl2RuRyi1MettQC`n4B)1wie4hBU_oI#dwQk~?{)NoXNNKv3P|?Emj9-K8!8 zL`l5Tohk>YKe`|}_wGAO;YhXf@4!TbHO0H-MGUqgf!L0-FAxrAS|bw#thACtZ6l4B z9lR`W)?%^HG+!RLZt3yujr={f-8r`>OnoSeuXDVfAs!-lCU6nKiNqgEmZcpv<6%!X z9c-%>t4a4JmW7>p#wV5g9SljtWqmv51u5IIcc8jb>BUxYGMv+yUvlE^cJL{TdzMGZ z0Ya!PUtrLh?clV!&)Oid$s7@iafR635h4#vME-3mah13k?p!CpF(!fU)Fe zTVb-=uaN)LP_DqJUVzC9%iZ=Fi4Dm##=Z0ia(LQKb%?F?}^rZhhKhaj9Z)~RBbsCNzHVr`p zplowCA3#b5WW%*SjjMX_uy6sXxJtY0_vt)$B0#T2+pQM3jD0{h8tQhsA;QfcuvDf- zOA0DNT!x2l+?o9AM<$2P`MiF}wzCMg`F{hp*&I$YbCdiRt02Bs+PIloUe=2<#o#3# zpA(M{F=6Y0Tvb;i*<3IQbqTujoACFb(wUO>lcle142$5?3r#gumPaE0!4*K*Ta}Pp zFDqN=ar%cBJoO?v{#LdvOb-BfpqgN88-ktFuopRZ3(p<^#KAKds$rJu;jLCA&M|3A zvUI$w4h8Hpo39D1-tN53aEwU?Y%IsiwJK~)v5)Y%<=AMt8NBYauYlY=ck}5>$Z6#{gCmn9XmAE zTMVoNkAcBq!k7Jsf&`e~YfI;P^#ltqbnJ7qmX`rp;_<7d>wJIiKN?-tCef;)l8;um zT?Ejx?>LiCgnXGC;2Q3%4?2{^&7V+_TX3LISn2$g&XeLhYk@&$0AMYcp2hg1dpj#1 z2!?bjeAZQg;)9sTLt0f;mUjzRLvL)Aa%(r{!LFyJO{W=K_bYJ7HhKp?pU7H#Sc%-= zP4FS$c&4ePv85dKYsgFWI2lg05n&EofNgQ-$fd&@!3&TsyE3Nk)628x&T8Ab|B+Dp zQod7v*a=j-`E{tiE#(0P5uR%`~+5NSVZMjRKb zf&C*2nYL|dkbc1dZ1}O61?a1{mlN^dsG2lYHlGD=Xo7B{#Nzw(qu(sNIZ4V^wgL2Z zE(E(Ubd!A)aPdr_D9w}4xHMl3Ea`P`eW-6m1Rfi@t)&sZKRtF+%X;S6CZpHON4^D` zu)q`r9$F!jd_dMh7_m6X8!pa3peSg3PgV^o$Ix|5~<6jNpgVIL# z(f0XBR>}F<_$X)6PU-HlRVdndVP7@xoCSCTYT*h|Pst$d9*{uxQZ_v6$_J$Qs&n2W z>goyNU~SnyLE0x4zpBn8C8Y=luCA?lQFHWv>+2a=47?4pg2?3Jj-tw04put9M7ruEo-_;+flfA;}@{sDh8wbXy~-vUkkaTjZ!TEg$8|9ov$ zd`kaGj8^{M{a=*!@1dD`Ugz(kW@^sA`Za(3+u#4GJXzAOe*OD@%2WG;Km93I`8SkK z?Z5iq$}(H?EjjK8#-%7gWYx@bFM7yWxx4c@8+f(cN8hTadzr)Cum zL4v9~I=cysoNcDC;WIXz1KZ+W;$aQVNzwAd1C_jOTHl|| zdQAxt1-kC=UYs5}m)aOv@bOmP$mx?Vfm{WBW2#Yxtkh^sUffT0UgcLleIlb%& z<~zrei#|PYm#)GmfckOPb>)?vs8FG+%pVr8DgX(H{m1k&-OE7Ic^1`|u(WkdSc()JfPu5iJtiDfF!^`0V2cywZTY6#%%>A_E44@8$s zPmuVf1I#?~4sTYV*3rMLF6Fpti3$ArHX!cfbQM5X7nhW>YMiigOOI0-4HnOPsPf*S zygXK0@~$GEeR`<&8NnJ|YOnrHw_Q|^Mz-r1@djH!q2?^=TdyQ-9$D#E?ml6sL<3YY zgVO*`K(W7xb4Ayd@qG>?JWfbD6CA8{H0K&%84z=O1yTmLXBQIp#wOD>ofRYJhhTy5 zyY=+86pL-_P&h_UP6p^JRNgPIa>0upD+^!h({kHmZQd!&;F;A6ClAiLEzhA#7|^i? zGX82%S$NF(a@f6Pi^6>Kw>M-c4X&lh#?irFAVZY(2v#6 z8CcDF=Eer?g*a*EsKALPOhkbPuFWVsxHuh`zeUHy^ zT%3VYuOV#K1zwX@8ch{C3WLbq6m&xjv|KjJl;PGcuo8F z6n}(f_6_;oii0Wbkso%`Q1^4`CG>tr`lN=dIHC~7u1$}akBHW7dw6FZA5j4AzT)!^ zYXn&do0Y?tRY#rNS%U=k&r`_!LkHQ;qZr(RuSb=ZSscizL~#we;QLcW3awE~dmaDwajCZC*`6bNTob><_uNQcp$eaM4XbXfn#!{Ku3@u7{p|0Uo|PoWqZI;JcWH#(o-H-rXB0l1 zBTFZbNn47MzU;X4LF6LPP%aA<+(0KiAIxF!;agQSI=vwsz+_DQheaNlASI>*dluDWrt-W!46X3{_2^M z8vUM5V4v2dJ2?`(oQ_jj)g8}PzF0kP$u?y3=$4u@J0x{EOSPXZtJbR}%J!xd#d>W@ zQsjW|7^_|i?-oZVJ_mj+JV(6)mAi_LMOI7Z-%+S@5RtWA>Nv6?R&=-p;%BfPt=m=~ z$?3P#r*-c(9~`u+vYKP)TvIuDf#f{LE-UrR0P?|Nqxk->T7&d z7FjB)aoS~NfDGwzp5HMs#~Csgrn)Fk>|-4~4ggLa$~_l%OrH1kjXlD4F@1Hn<0pQ5 zuPPOgFx&=@&QRZF9|n*^fh{ig(fRD=ZgdAO&#}zzo(j?;NuczQN$zbg0a+6$4Oh)R){NLhx%viu{OCcP!t`r4yKEsi8g1O5T zY!HY2#q7RtZT`=rs&mxuek&3;dIV^xN;la#pVu>|^L0)8?#O1a$6v1}mh5G(Js-rn z>Deo8Ci+=E5MLp}f%J-q=qy{kur2oU;H!>!gEexk(428q$TL`WLR5g4kMW3$yu!n}#~IRi=UdKFB@$R;t*0S^ zRR!37^-yGo^XN)CEyyHzw#)=f63)Q7^ZPt`YYsfmBW$&mIwe~@>0%4@uIKj?p2gBs zf`HIGRql3TiUgxBfc-$LwFEp=NP&$>q={txD>w)B5`ka+$ejOh=$Z`G2n04a1W%nv zMXD)8MS~i<=XS32%zj;mC)pUPUm23@xL9Lva8Sjk;^9ULY9ijU|2pg+IGO_ zBk!vX9vovdjI+-)OI*c+dV;<3c%feaE`YNQ*tCNx_LO!jQ(ja|{i+&RBc1uH=TRVS&!r^Ae6MMj_YL4- zflg01)YvZg!ZRp=g zgdb|dvz)3bH{~YTX2M9G)8=oG2;h;toQ*UY5|_G@7Pg!KacrrFxTW?*MeKkVf#3t_ z;4Sh-x@|tQMdG~f0({dw_xpI}r^iEvH_qUvsujxWQ6g5WK!w-|H9VMP&l5ST0Bl(j zO+U*C0aQjJ#CSn4CUD2Y$nRNP02|MaO0}#%^)nSXDN&q7WVIOu*hcitulicwxJq#Z zPc=A4ti3>0w)pg{f~6heO2G(Bcp1b${aM5QJOs8=JX|(I!nvl__K!Akwo(a^Uu`}~ zxyre1XDNx2&U+^X@XO+hwzChHCYXygRgRrWD+4;~Mmi!CFfG=OLJ2Hylh-yHZ~$^w>2 zWK)Px$df=QQDcJkktv8(%{D!rmKtoDe+0ELn`e|}gu^kT;}bS|EA?)|AXKp?d5uD; zVl%4xPvbPQxuTpNP}Zns?vE(+jiWu!&R97Yg%H#LA4iwOR)OfiuwTVe7>X0sGiBwf z(rdzLG`=D(AP-?p|BV~a7Q5@fIb++#2{R}6>=JChc92ko4TuWAZ)B z`8CB@mJ@7RF382_o@ND@YHE(7@$?3C_6+5)IhHbNu+^o?fi1tV5XZUHYJ|;t4!x%H zd0+%Up!Sc1x%Mc4a@i?!q$%Kt@A0VAilXe-vQ}0O>}4NU?I1EaTnm$64dj z*M?+sCmSotJtWtV9Tu}+(ME^>Gtd)fbTaFw2ruw%7=EVG=U0?yEOCGWd+7}8L|e9$ z+=CkYkRJz(HdV4;N60<)XHS9{2@Kbxt`hfWzx`{Q?W>%C!XUbl-j1HD`9!w2vCNsj zLH=gl2CEzIdpU=rtj7}_<-Z++(w|!W#^+wW+lr|IP!RS2ekOZ|54^Qm=t7)FHNHwf zg!ZYD;-Cz?7P_DyI{O#y)bx{9wA`}CcgHg}TNS8i@d6NvjZJAEFIV_d0gF6?=!tjy zY>t^(u}Mw0i**c#5bT`>y6($iN>IhnzzM)A$=xOhlT14UNbmwxJV8&q`S6e_kDhd{ zRXb9suM!=xyrjYg9pz4^0=QaezfLYHKQc87zKyY9_bF6?=@Yg=#FzN=Rhsg7Z&jzs z?79~zwrx2>6+~$}cUsyLr3>oSeBhGmd~I~9M|Xyh05onTh0bn!;*XAs<9{kcv)JJT zMO$h8&vj9<-GbL}%aiJ@uWkPbQVXB)B57Y)msVb;D zh@8cwLhsTi1vsHFMFDoii;I3T1STEBr=rqZ80}b7zu+eBb~ROHeexC!@{y}8j^Kt0 z4!&L|(pY`rJ0g&FA`T+3qGv~*wJUnYw)<4j*;e)l%j%s5djO$*`LpZcQ=Jx)dX}C@ zeOsy~2LgP3s&TTzd4$@LJw+jV5(N*WAF$0mHzMHR){4IDn)Qt8W6*zgIe(s%2qLX^ z)!13wb~O#=s!uhLJauiJH?|YNnCXXkiaI> zE;@x+mA5JKDK^XBPN5l5`EovhH>B!)?oRM2j0Fkh`ovku=5776UVwrARUqkl{&8ii z@XkZMG;ANI(Ea#aO0ufgoL2vFP^2-iY}gq9lAZj9|5a>uQB;3kxAP4mO&)?Via`8W zcz1B1e)D!p$8OacFFdd%>sfBqf;=d1co05riaCP{p(ye)q7);wEuUmd~`uCp%^ zIoRstV`FOtudGEVqEjab_<453n-lsZQbca`Kdd1__!iU#c2;;(tF&ebJ_V$WB zwVx;Y>F1&oRdX0^&8CTVReAcY4r_)W#$zoKya_Xe>3x(mQVtrMLx4n2cHi6nPV9vr z0j1f0Ux}AiL{WyPj4IePZ@A)@;5+Zq=|Dj~N4tZ7_XIf=R@pIA7MQ^YlcdT^h8Vq4 zi=fmek&HK9be-5oT^VRrNNvERY?)E}C#%&&5cMoId2s&6F1+1-%m`M8zE$@1U<*)9 zkn0ZZ4Tq+)HgTk%Nd~`$7G;SvyDV|5F-&HM_08`%T&o@!G>wSLmpC!uES=yw*$qFV z@^cQ)RR^K&xQ~MvBwRz6ypm^_Ai(V;5G$PDIYT>BS+^n48kf4gx?ZT^GR`YJXms3tzIanBUjXD;py`dZ@fGx5Rl}ao26+)fwV8Y7dc(r`WcmcLe!jI8mT;t;HA@@&(tdt0=l9+Im@r_z+Smu6X}?a8^K&P(bR2jUZy{|hpx zo0Jal2f=*-%J!DdTG(I=9$)gW&KFp-D%V@2DSCIP&7g-3nC5f2dO)oPmp&UFFCA6s zM`e8Zu>&M7yNmE)n)lqe^ISIHd1f9wD$);5p=ZTa*er?2{yCc(SM{_yXrggtH6YZG zRZ^6j_-aw(QOkIs@@S+JZ%ccSs{h*Ux*<$IHbAq9fjIERbA;&v#C~-KcaD}7c|y!wx(JXz|xj; zRb%)dHs2BgoW^s4?H($M!#Ewwd12EUNVaP^D8Pp6KaS=Cc__emz%?CsMh*yEyDjPM zh&|3v1gg&SffDbdY8WXk68JYS>5YMXs`=epAv+%WvV@`)S)#5IZ~e&8Iy$L^%iAr+ zd3*%WDhiN;C7z`I?rU9*MCWWoQ9ohc&hA&D8mVI=L=&aV( zKRc}lNxxdI1n!X?*(D%xazH)`3Z8ruu-AsC5pkOd>{T+>@r&_T6L)fl-J>7ccytVX zHKlOaaazd%;>d(P9mMWWw@CJkrF-%R&+-G-M0JQH=zYMO`cO>D&XY7ioNVvQu6$zY z1HUE*s}7WGV&?g3DNB@d2#4*WOu-1O%SSCyl9IBT?;<8Xpt}gw(Dlt5rP~vcPD0X>4koj#3>OFCnma&`M2J3F3l<1c^<3pu9PS=o zaf@es=2I-ISY~*R9V}NuhITliTTR#=k_S@!zF5<|xu6sZh;n^oo+v-hMA;AjE^F$`aWY|}Mq{_S0glHI*g(R=iAy$ABNPhB4CgCi1}gLE-E% z`@Tu^!zqS4#`k*k5A{@~2pHrqPSGt(tMG+a|A}@g;m)0J-WID3#GbXZg#+d5Ig>Wg zD5cR!1Fk8#6;x}|Ugw_dfVH_AZsj;eKHm=^z)zXDed%q~jaTRVJx3M0hi8>UovtKy zBDX$zE(0!)+A@)mH$w>fnhJWKVk1-UNj=9Rt5Y=_ou~oHn+2*YdQQq>1x5DO&B|=j zd_S_)i;H?K*x9DfdnTI42Np_Z&|brVaZP4((%hyRTVT#^I7K8TyX1N_&E4dBl^z{C z=@$Enic+m8#wMO4MnCGVR9~gS?aKPe!t#5mj>@kV1qLV7Wjp%a6fmjhsQy-1^3jp+ zjza}XXW2i`LwQc2^eZa1$^K`-d6a0kjFV`VsFimqp1S~8Yjq|}XWjR)Q_Im&aPg-O z0lS&NWmR66ouQJ%Aij-Z>QkHfBf|hg)Ns;JbLlNfl7VWme0c^Sg)kc%D)m*M(AAM1 z2jGU?CoBe1YE=C+-7Hq;x1A~AC2He!X!K=I@FrH*kTwbj+jGq~4I zl9_d%X^Jh)TZfCJfu5yak?BXk3?5nbV@s%qXL5{kUuyg-Nw9TEkszMK-f8P0uY5zg zO8wgKB+Kdl38Mp45%CfUmrJ@F*k0O*+AS~~zB!d|54asW|J28HqLh_+thZmi&$9B2 z#1WvDjOF9cly~5sZti^sRUEm}sBrE&({j8CM>~}kQ#vZ~dJ+tCy*C)iV;nZjH$AWA z3Zwpcp3mtq)r)}OXrx-cZ8rfzn=J6T2)-v8>dii|X7|4boI)s_u8g{WPF^ zKQMvDSX@DL^Kv@`RfS%<{h9_|N0W$I$J}!1QAYZD$fj&>rE$q7T}7m7q;Xb+w{Y8_ zHKbc40g?p4&GtCT;kxgSB0l*LvWaESl>D4?{&Br$CEM6G`I>GKtR3Q^D5Tar4p-t{c2rplt6sG=FC;p%k)WPRp+Nv(+5C;CA;A4NYp(ui zfM+QpS@YP%x~6Unn<^UeW*a13nhe}Hv!^xDG1W(R1X0N=F!!TT7h zO>3~h?Qny<=v%n0tQN1!R>i_n%*sRBJ-S)^jkQzCQsO-KLvn0rV#{e{sT!1r+)+jf zs^uTD8JwAOEE5{TMe4g;6(zNtmYrL?WHM(8_dX}4jv$}vJNqkqr;?~0X|15Y0pEtP zgR8fPW0uHC?*M8xUWEzl$10#z`Ko>vv~<}Q22Xl*`mIVr1}!1DFZ&!?WGU?niqCo*M!8d*a;2g zwLvIf!)luvbQOl6R{vLBwXC$9@(~B$O^pFEBGi*C!!qba4JiT{(COm!l24O;zFps2 zeRkuc3o@yg-9UO)s=XP+fibpdbny4*%MS&p8)M*gE0g%T0Uc%~A-i5@8LWf?GjN<* z&m4HbqcUJjQn{p%g){h_I8Ks*rv~+pcKOJ(HeV3O3BtyO3Kk)C@1qpBY!!KxScKF#6iWb{sF}a!y{&SXonaFqUWN%S*?b)0+EaeT;KVcm=bq2lY1L<<>!n(;iJS z!TX%njX=Cu1Pov^`JeYMzoe zODuxNE_IR*iU0au{@EvNVS|G8G^`lg_DwQ_>VDIwlb!85>PdhkwQXA%nnI;{DRZ#( zQ;r_w0G2JG4qq1!iYV1RG~Jp)sxVUy5cnLiA4dYCT+YuPAuZrVwf#zlq=6d`t=Vlx zaMQM3Aqm|QY|X2-HWGey(YTCN`jyzu^5{8dp*=fc-9R#yMEK31YtE-l#@K<4%=Oyh zsh7dkCEL(>eQZ^&N@fSr-;ZPF^YUka8Dj~N$vuGeF$s}(3n-nnpi$I?@TYffr@d+2pduqiy1 zga}+$50-%KSt2k^BSYZBw!Mx`X;0MV30Kz8T(iL^^f@&_T1#8402@Q#&dL-f$OmM!Co>x9Agbx8t>xsVCG#ySa&W4jEUz!9 zwer|Ue|^pb^K|$}56eu+LkPAuujAO9y$biMM4%0lh&}!A%LNKRYGLnz#~YJvaqRqW zA5qLL=ACMcm0`m@uU~QsIi4q$Sa%1b=NImK>568n6XErGjdfcdlwfPxsLKJd@peGwNzb)D)rZJfZ~~8cqZ24l zW7Q8?;mM9&gU72X%JTRqXJ>-uOPF1~U%{E0cI)(0BJ1d>Fc7D%Xkc*F}+_hT-ntB%?yYa%^d%JatcH+rx!5^1qABxsT zsT6<#*cYJqlnRv4m_Z?#r}HX_F-_SlWlDm=+hUBfq^{(73-N-xp zXm?FYix)guzlLqsfQIBZtOBGv04wafVEHwlVHy&W$MQpU+`B*hC>^mEJgz;5T;FrE z4IHom@F*$`d{AfIMRI#mFyBYx&3H!Af!~hs2R73zHSS|isf6R=!2<4*GxebQTZbfV zp(ab3hn^K^)5=)y^_QShJ-Aj}f(O?`%$kKH9Vv?@^S2Jz1WE#GdWJoNiw6OoIZ~l% zkdDaCI_%kLNQiWt>0R~cQ)=$b<**>2K~1M+g02r#(bG>%*pINut4pq#g5=pWypGz8 z-2h2HHAM?~)&5GhfGXJfvXBFKR-o1%mb&LGz0is$xjN+Bp5Sw}Y{_uCC096gPLkbi zkBK#;uN+~Enn5T;OiLxV;?R*y0`=9)S#c*WUTZ0+T2dw@1@(xUFa{FSw4P#(up3LV zTPiB_Xyd@saya%K_B1}a4z6uu5SS4}QJbpa(+;rAw}o=~={igXvAzuxa>cEww2As5 zbE~7L20WR6s3gvN-_A3DUwE!pJgpZ=4HLO?^L#V)1}+EpnRNG4ofYYEWv>uy(ErX_9s~){CzA8bx(jrTY=C|QP(p3Ub#U4w6P7s9kyLP$ z$=We);4$`>SfG?XAvjwZ)E!emzw`*IT-tinbxS1b&hi(}TB+yB5}jrRZ-93?5IAX{ zF05n6+35F@+H4bamVnI+G*B&sBbilMA<;z^Z5rcCAoT;lFb*toLw1stb zqH?kYRXsuWD>>ShJGT5%ZLN-=Op@?c^WJc&!IIR-OTBrl54*f8sc@c3wh~K0i{D$Q zw>3U!HWal1jpBC!7Ux_RlgaVl!O^y4N} zf*-q00v3%jM6B2-b*nslXFcbEIJeqDBrzL+So!bPlqN5=jo3lO0tlgHI9GL__F4h- zvR0*2`V%f|X6$Frh1kn_CW9OdK8lQz^9R9h_H5(A_t+Cl@;m8PBn3~t>|)o`5sa5? zS=gT5K+UWcaVxMVd-|3RFPyaWYm=TazH?_EL) z8A!_%h)Cbt6F0lfp=}zFX&r9y9vmF4HUUG4R=RjxiYEdwm9-YsL_Jo?bYmSc<*ue0 z{NcIxWN{|NqQOb__yHvW`OoFS@=Ctm3ip8JEzboM+SV5I_^~^C&jo^ltkRIv_@#LK z4S9Z-hoYa@p6v08pEaI`Z!Z(T=}Ly%1?9B3Hu6n4&PnVfd*bU?uITjcBYg<4zM?!i zDEqzPU|Hzn!B&}eyMV2RUgK_f+hJjK(8Y_jX0qZ%C?7fCCe!@q5awi0K7cr~YCVEc zAUd^O6Uh(Sl~0HKWk*(8IjIiaY_<5TtC6^m$BC}Ix3h|gNWPC8x&9vA0kY{>d%Ygp zR;mV<0;2{sa(Kd)6WAM>MtdEVnhT51Q>3S;-KX~x^tCQa;~o%-NkJtJMYDBBo!T-w zFqLd^R1GtEYUY7l(iu#9NsHMFzTl~5QWL;I&gdkx{R5Ubvj^1nyBwowMY_kbu;G|I zs3ILN1ihxu*f&|&6%W4oPE?35_w9-LDTmN4QPDZpeZIARUBz2%&-(^uvM)+ z91Gg?s!EXr*OL%NJiZ7p6Wo}SvVUJwlO1Y$dz|ikbdi&?llB?b8J?IvHddSgA=1#e zzQ@yOb*TYfVX&^218)H$$#ZjVQ9)w%2WV5tectY;MFvcaXGCK0&`;jl&!o48FHzgR zWHCP5?#km!t3JS|=sEID!tQ!PE>>dDSmme{2S>h|W|BNzOI}VJ10MB1h6d>M8-H!HjJXboS6SsPI&C}Qbv;l<2w6zE8r?P(Q zt^%d*sUJTG3)WR*Cr!uLlTHt11rAt?!fRdO72>eeU}vUPJpU6S#aF^Ofe@Ru#l~Me z1C8BoMImnJnu`BixAO6PD4^Stw($%&4*=rj-<~%?ke?$#UI^bGH-3HLl1Gc*~ zkapID{ym5CpC_JO9ppzRcHYl4$=VjKEn6pmsH~~5@+M9K<3>we>lBcV6EyI5uE5rP zB7tn*>6_Ar)`7rSJq=$gH^GBEZ52Bt(WY4d{tabLq+7jVY*lxVqJcpm)qC)!f%YKq ztH0&mIGd)CNOc*j{CMe1Dq52i?tdjd^yyekh4MV46R+X$nmTg&VjzUD$^b$SfM256{r2)ozaq9|z5&u8l`?ptr?dum#G;kzVLGOD}4T z4xl(bU3EF)XUjx&0x~a$j%+;94_qs*%R!4%^#z(Mcj-U`#EnQte$f+qDfG-651tW_ zFeWJ{c1y&ghb7c~rdg2ZuYV_*5k3mP07sEo_B0%_c?kh~9u;7gs4b#fu?LWe68^zD zCXbe+9TPE}T?A4rcGXnfH$inUxjR~U?=TDSgAn|4$Q_*M0T$t@%q7zxqQGCL%a=SoEPk?V2|L&bD6(lmk`MMzG?pIfb-f zp94vZb)u~adE+j>0}6(J_W{2PAMiKRk$nHBzfwoizfwmM)bf`oNv2=z-~40#ga7w? zwftUaf7?ou;r(0FlJrUa2hfsy|LC{>&e!}>NizIvY*d@33U;g}wTl=qm{=|L#{hvSa?f=c+NF=lK z?f>1+pZNCw$G^XTCg1)){QQaU`yYQwX0|_HGr#@KKmGYY|1%TW{M%C1Gh6u;ROCN`e5L|rQ12IX?l}QaH=o&!tk!_qQuAptbZgF^DlKC_*0|znG1adl z?ta|EdLG(1fTQPUF?Pfrulp$AIqcY53rAJYVUU-P(LwWbfT_a*cL(0u#`L~$Eh&Aj zTp2tgeX1MYinHr6avvFt^**s457-Jo*Y-Er^JRg&y=s$-yJ4_(To$dgz*QjXRn#D- z=osxi>@Xig%RNX*=TG1=p?qrXIpXwykjFc&^nL)_wpG7~y3Fc|8uWgty1L6^n=U$C zw*;qvpo-!9p7kBwmt-}VtA2~UKKahN6E!I6TAFIZe4ksT%JL;$J8ko+^>JKJSjs;d zSMRUAU5-(Eh^C|%Jh>^O=W zeC7kG>FX|1%K;+46+cpdtj=xO{F&+pT%i8sp&&#y*=VEjT;L^q9wQa_iLQCsIoYKo z)=)1mdPJtx2?X|1%l(DgW|48_$+4AODL2jcrYZD>lP z9-#gpsXH!oA7z*OvqTp)FGveoFj&&X8d`}vLXH*>Ho%_BrO3*fwpVopb>RI;d8#_B zU}Pu3avs{A2HOYiS{aYWjrN_vYuh!q&XU~beJKZdnBJQj3?(FzbQ^Ll@FR~3<(qWr-Zf8Bw zMTw8^D0O-&tz+5^jWw%ukXEZz*R<=*{oYwi=C9uNM-z?M*hKcCwva(ihp)#& ziNPZ%zUYrXlK-zytvM}52v9Sa8?amotU#Gy)~Ybtjm++ zmYqm40w?_ zxnI)fV8z8Q{BfKs&UidrDcId-#rt^zABh zLP8m4)^08&K_}*&Hl5}Y@2Qlh&lv5nsG9BNe3f(OE$r<|D}2D~aIQ+s=KYrp_VAl3 z&$0)N%N~tb_{l8z@3{!uWmp2!0-AL2CeMJ^IeQoc)m+stbFR{{%uoz|DiM%b_^6bw zd5`1z9J!xWJR2hZ5y@3=Yu3TC4&1$15na{R4>pGl8TM6nl^^*d{;vb|cWzFwws?kf zScyC6Tc^{uvWUgL^vxPn$vNl8hQ|B7K63wwgPIt6Q9Dvc>8OeyiB*fYME}=LxQ^Tv*n9tb2y>Tv1PP0@|87PTrdQeI5A0e$VY3 zwZ20M6L#?IPWG~5chxM-wy_qj>XBWw!Ow17@ZNN0+!I$`NG0St*&3bs{Sq+2abVV{ zc9iUKmcun46_{I29-Mbwxu>q?%VT&==&(AZV_5;E7Z|WI8-LiL*=^$>wAn|k zt0s|+#FCGa-|n^nZQE>w!FL;;^8e^*V7aJ66X$>Ljy$l$}Q>`7#s>59(;tzZo2JFP>VJuF0uvB5qYrJ zroopin^e-@fI`_j>cYvSb5Ie$@j7d zn?9Nz@>B($n{Iq;qSF-3VCyt|cZb}{WuwmvOtLM8(Dc|BqZaGd&@8{E#r)RKLj7ACrauoktH(; zDJuIyfVFj!eFfP5vZBmAvV+HEhaI~Bw5;j;tL_*uViH^i*Z%aSp7LW8py!rZJFn-} ze`_hyJ?rI6in_L+nTS|4>zuP_e3;$&I%eLQus+IGu}~byT^}j8-nKc1YpDmvT3jCB zfh_I*a|Lcix8qV-%vOV~^?WBx3DypYYE-h#^hBITikH??M{3S*)?v z0CDZ=PAZBTMTRU0Erdg=o^*p&0EXklMlMqw!li6%SA>lW$-8+9$yF_8k0KsG8w(o< zIc<+kP#Uxk#t@z8)m5|!Gftia`aq zit+@?=*YrQmhC-z;U;XdUigP37O~jC5jo%Oiu9&#;bV_;h>_5ecQwa0dW z23SE(`}4rzIf{J(y3dg4b2PDS6(G;Fqjvg+1Op+6Srvd-KfHy9g|}4+X?9U32b3Qk z1KS0j1gTRvL}v|K*or&^%=A><$be(@+QaE?f)p|RR>oQ}ZV!2#8!;BxJE-P~rffxy z+nigrJ8T2{ZjkB&LRK$ND&s_jaIiUD5R#z&X~MUvQ0Us9^MhnDoxb@81AxJ!;AYsS z?Z<)Cr%fi|Xmj%sj-bpX3=V8W1X&uGWio~!5KK!Nz6S67xW7(2Zana<{Hr@m$4$f; zp5+5w>9tWD>E2!MP!&NHB<~R# zVefV!n>s4ZW`)ys=Qi(jEhp<(i?Awi93jyeLPduO#Eu21$63NuozE^?vIU$O@O9gt zpJTtm(aK@NtfFosl!H~rMgvN*#f!=dwmN1H%8M%9PFAT}mKxC-zA&_re($cwF$>@^ zO=!CT-YZ@074Q=u@^Do$XI;^)91yKEE?;nGpe3kLEn3BoA*|&9uy+3ARY9ongh|ey zwKBq;mWH;)74=R%?1kPc_QzV-d^WeJB4;4dztMSCz_w$SQ#C+`W0Z*lkb%Dl?ulmr z31V9`n3c}Ia2~?C`Y?}D3ZI>QLy44!HL4nc4Fw}X&YZThYakG&wQA6&o2R4N(r4>d zvVU@tSM|jt#*-Pq4$CI7tXIyf7j*?}!%x-eaSlY?2mOOzZOkDVZyYK)5(QOzH%d4> zEG1tlTLjE3v+MOA7k0amUByejo@92bLZ*7=+OL|H!3NjG`d2r3sZ)0}=$ydmFo@aM zY^53iwE%e`o1hg{E4I^5k-e&jr^>zANm*^A->we#y2zBQD629}%U3pAI|3fIBsMjY zhO=V;58KjMR|?_Vdai*oac^BD^Y>^T>>rVdEvXZtqFB>b3R?xYG?&-JrkNo+q<6g4 zAHm+0HsC7(47*I`=r(d`(S|^<2kD3;{8@pxRnTqrA%g@rAM1?JGN^`+)TD9|5sW~f zxYk_-y$RqfWCVEIlVGMK58A!%paUB)tAfg!(Nm^0vM{I+7MOY6&QfY|eHh5u?b#~d zrxfxF7AlIT5WL58O;g(>Djcu|7H>+ebpkx^L3hU-1BfFLkF4;%EWV&-1Ej~YuOMrT zFIn4FdPfs@y~7L7iaf?j<7&x$w^o-qX!}~oRMQKdngox_UatY?tf6YTLt-cGpMG5y zyrqvoG>clX@DJGq?1{2iV4!=xtJW*2+0KhOsOi@Hl5_(E{Em0|Ln3h!N(mQz7ubGa z)z_Bd=V(IMZO$UHqdIm8QB);N|CIJe^hVgp@oy=x*h;C7uLu-~Jvav8*ShmuDBP$7U@;Y}g48 z8ADS6J(7q%j`$cj+0yGxI>slGjQY>u@uthN0mmW}Iqrmb=x_3^ji}-H(JUfOqq{KLj)ZIUMZ&$>TdS%EG<>*Q|vwE4yZDTLz=$m6Geg!c5QXZE`v~7F5)gY_8S}5cd zFP&AQ!b@yF2o0;#3RSwr)`KWmShJUHu-vAdJqZ8|Z%(Z3$)dMs4M^DJ80zhQpj5{) zpJ%EiRt3-Z257E!^lAVpW-SN4<~k}TM3+2N96Me{-2Va=KPvmR$m;;#@y8-n&mokx zb1s-WKD9Pbj0ytN)CpdA%DYHY+H32ep@3h~Q>E|A#hUoy?{y&5d9)1+=Iv`Gwh9E+ ziX0oI!3Ap23ijC>YUr>oPvRmeLS;Omc$8r!LY^>B`i^>*0O@bi@&iZs^w*GcIfj)9 zEYq^kYDj&#ELC`7rkSX=&x z_>))aoEfXXniu@Fp>a$h)|3tfTCYAvHYssRePwlg4-RjBgq$LqP^=0gop zg)y~v=z7l5y9YM+4UOFOkYjx- zgi10`^AcFa?-biuE8^{?L7zek>~jLizKIY+PH|2GfxA!vACR@fdtTZqJ00{Wh@sO0 zzpn~0U=N0-F4Q14D|fDBe^b~e0AF8C`D}r`;1vA*f*tYC#yHLJUC{X2JFXnmdH7?i z!=j?!E2M*?S_t8(xDKpTW+x?FLPTJPph*8MR91=W&kb8jt$6nJktD5=#Q6~S9@=^si$bo5}A|27G{8byH-^dx%0(~ zlW6gL^_2LGq`X-IN_9$LhUO^xJ74vPAGW{a9%{0+4U}T>vCr5y>r`o9PX{K;diG20 zEMB|TRF4COgm+>9uh{{DQk7ul_N*bRhaexlo!0%FdtFv>hKWQVr*8u9w~OmT9NuEnHzvUN|S{(>wP3#6(0$W zijl&4ScoGlj|IR;Kv`RZJvDLb0g=)>jx+%ad9aEs%M7cD5L_@VPlk+C?{EdsfrG5e zM4=1EF`UuBv1HiLl4%?ll>UQ|=}bh@2?UF*f-f-7>KZ{FkfilHZ%&~e5|y*>&4CEGtyeyHhC_qH6Qpc%`DJidm{gwK)Am;o!U{n*4^v zq2zmN+ zMAb}7jcff#bbzrlMbY|m5Io=HAle2xsmJU14cxk}a5+Yx3Dq7T5I|vYj)GmK&4bMv z-w5{Jn?}Ib$r26>ww%z)M-NTXl#>J>ESsktFLmhe3}|(AP1cb*dsGx~f>?(jK9kk) zD94wt&KA!+mPQJI`Y9v$#51`!JRfsp3n)`bn>#xiqtB(XFyH`q5g`rw|9#VX+tQOa zsg$OQ!|+WQM@SO$XscK#23x#U88ooBTfO%qUfEe@!(m$OCjeG#DdkH&kM}fwdiwiq zy97umV~LWuuGAZV_6km2s$|K(Gu}P+Z%i+%^We{kwln_2!^olELDu6;Z5@$Q7}vum zaqC_<&sqtn#}SRL97}}=>Iymn%OFwD4Xo9D7o5O_Yv}+ z%3nJ%8%~{!e|2BsewA=Yl}ML$MYRnj5j!3LA@?*u3p_g2vAHy8#(NLDi%6nXynTHN zJ3JZ#G(b4$T>KSO^C+wpc3d%lu-3>61P9)fD`}px-3A(7kn!wk2>C#-z`xpUQK zVPNOgD45Z*)-PNKp-4o-=Q%Q`7jAS;uq!M=+)3)ce#M@LXr-d*a@ANO#)R&1XEOy6 zga}ERP+cUPY`ep&l+)4cXEiFO)b+D#iuNm&qi}w)#@)1)Xo^714bQ$+1coer1P9oZ z6S^}fnAHnPf#UUov<+L2};8mK*ZO&NVKd+;0-QvG|{k<%fZ z;CYqAo3=peSpXOVsg1AiAgsC+uD%wJOgHYW)SP16dAX(^<<^$g43eI07Xo1XNR5!S zM+F7~iV1pGR`5y_Ha${pWzwW1n7S2l@!Y{o;2}{|4l~T^{TFpsas2i5CB%E!Lr!v(jV2 zxOR4zeA4s~N+L{U)`=+E<}3|1<>cBnv$-_*f^NjM9HQG#^Z^W~m2Wk&RWN|oUHMIF z&r}canwlLqOUGR6VX02{#~~MTaJ!v5tA=PL;$(LK)p(6nJ#tlbRPI)*%`-pyJYYDt zwGE)#u^oL>D2At;?@;jW)(r9@R09#g@n=Wdr$|IgHVtVy7L^E}nGL38nrgJ_Y-%uR z$s~W`1D9eAQL6<#ZGwb=Wzj??LqH?ToMx`56OFddOLG+<>xl>K5$4a4 z*fCnStD25#1pcZPVBFDdF%bv({#%(6KA1%dbO{SQzUIZQe~u?QH)#8;7Bc*w_!0bv z_7EPM*bf@s@3yMxSo)aW4j8VctKLWFLUAP}yQ+R|N~3 zE4wF_dPwSPWW^3TT&|Ws*Mx^_NfVx?u3(7g;Cn6*jTuGvK85nN@F6b~-KPC@x2ni8 z`>4S{^9mk=^`}sWO+etIXQyHM5XwS;B#e_ zs&<@B6|d2p`znNkU`hZ>M7h28-l{sB(|zED&IAqq;;wK=dfV%ItRDQ3Z)+!YKkCZr zWm+Y3O}_5 zn&P|)sFH~lW;+Li7Ib;{I(e{?c-kjnFSj$HL>2i}J%&!FnpT`kf9%aSoUu!n%m=Wt z6xgU)TUuy$=vLUTqwzt8W-+k@bgCyesW-Qr@5^7t)IB2)AnwcZm9B0!ZB{(KH;|7KMI~GQBf4`H5wxm0PTC& z8$)Hw#|~|Uh2g$U(blP2b!pcT<|L*Of$U5reJYhriqpK9mRRt0NL#U#nZ z8UcGYq{!3U-3P!^Ab&=6AEAQmZcjSw9)$CzPG$;CyAKK7iK(fa6>1B^3~-?%>a3S5 zAbk|#mUce#J)ID&=6*#L-ZHqA74<;!YSL$i7pJWl*O83r7B`6*7Th&Di^nWlmiXn% zahZ>g%RkK26JPw2Y?E#gj+KKDS!-Lh=|_POb!v!)MN`r5t-&(Tao2TnS|AtC0a)=& z1S&4@)$$||q~QgHNAXIs>+OeVl5m02dx`eG!_Pz70Oh-@QAb#biABU6!(p>RkV-7K z7aRrnp2ShM542B^#!Eh@n^Eb(l$C*4={fX!eL*Ft;UEnph;_Us%etr~3iWt2&$Q;7 zhP!B1wg3yywj&)@u$&f$i77`Pt{JvAHBBzWyR#x{ZMdhKmvSqD z5uy%0J$ZOzMWEdT#+UG_cf@lkL#f3_R!4s+tggjK_N4dLTbxXkv`~R?a+$0mKm=gc zYNqHXUiSC%MHaRnabi85vyqpTimjULm8k3+PxI5L)HaQv+oz{EZ0ZXd9Hdl7{I`;? zd(=w$bpS#mG$6bBdiu?feB=B)&8^2WblG$XZ(R1tYJ)`rh&B~Mio9F+yCSrpE!*+l zhs~l`VR1Sr4R6biVlDrwT}H!u1oIHHk`pN#h2 zuPtUTR|e=)(yoW(dDf72s05Y-jC+QYWw z7S;GB3GBNacW@!aoHaJ~Ltlc%Z9CQQUKf|)RogKwj;h&O_S}Hz$4a;$xAQmkN2O62 zSnz$Z703Z4^5ufh%+XBr|&tI9$g@Eg_pB z%-pB~Mpoi&YJ+`F@|7pnHpQ0I-ah5KZ8POx-2?&x#FeBJU=t+^)?amFd9JG_@>De#$g<}q0@HpdoQX3Ww`xmr}LUEIrZeUi7sy$wjF z`cLy}uhRj=T*QN^-6$NOvV8wnjvJDS(mju?T28VB;dmVa)V1Za6DG49^vr!M6A;mf zKtt0GNQDh=pz`Hdr1c_=y>y>)RP>yJed~($SA_JajcJSBWA)P05{RSvq4o^%54xiL zfMjms3!V>zEUK^SE^hL&w!IZn3wTwi_kA@7d^N$JMmmsPf#9k^{fbHtWU>FR6c zBhJX9BGEtl258#cso)U75Hfk!t;zO0eP2NR<`LbiF*C5j;WkgdH@RiU*12Emr+^e+-D;%?`U8F3hGFSNq5x<+PyfW3y0XAf6X2zSo6>c63}#1+Xbo7;8>2sYr{5TE@v2S$%xmzEZqI%?F7h3#YG#|rz*_z#sV|;!8@4qc(LHkQ zOTF!S>z7Jwc@@zD1Sb}fEh~Yqee6Z4Qnce0-ZX3Mtg8VK)yHiXpzLQ8{--^RwI`l1 zdEs{O01{a}DpEuk#H#|ZtuA`05$lN+f`0Zj|05YVmXEqNq;f^aM>X^Lc!v6r6R&J~ zWz_=(9I*m#@SN7eE(Zyc9kMZGxh+^}m+FZ@AG)NKv;@$ZQVk!sqCsDa$Dd~F$?owL zTM80+o}%7Dx4n5mbwKzAP}3osTnU#O43No^$9K&6-xS@*TpPSpO{dP~mv4@1D1Zv6 z2ZPG4c>l?69s4KO`|inefN(yZK?#3sxB6WD#9WQ_!o}nDOk_#ft?xYc4ibgC1_XKw zz_iTtFpWwG9BLX>^^CVpj87({nGH4{8C^n4w9}g%vVm!@pA7{tK`22G=A1^b%x+Jkm{Zw77;EyT+rdLO`Yw8LJm07BevTzhkdp{ek z>*rv^5A99@4$QOpr-?mEeFJ#-v zf(H-^T?66*!+4&e2o<^lSX74`om_S-`orrgNtoZy4PRIeT(LT~R7@`&HYdBLSO+36 zNqI%mQy2L0DD3Q+9e7j^?sRDZ-L)HJ3)y|>xt}r*mQ7e0w%r1G#XUN!dE!LWeSr&R z4*1*!78($-yw}t_1lBxmJK5RYumjuTlQlq%$R-;c-1z}Fti`?7>nbRXhg5aJ2_Mm) z2&O9J@ng|SMxbHok|3e$DX+Tf1gs~57C6rG#LY&k>3D)z=e2#F7zTmarwx#0&eK@H zuWc~M3dw>4o!W-PAGbZ7HMG8L1(XO**DE~nSah%-I){0tdt8RHrS9ycFq9&jZQ@15 zWw{A%tE0e*>uv6L+kq8|6Gz1sNS49p89lqI+88l(09DUUJDzGl_Wu^GB5XiX{?V2X zo8Qvsx^q0hK~~;zQ`cd7n$3^#%FYSBws5jaLBH14M(>6Tq2duQghe@3;NgkQZ6y{5 zv+lNS_H|xmk#)CTuEe-tTHB;zzV;lrk-R;)VYd-IHGJ&4-aZQSjvu1@~`ZRyVuZEW*cB6xZhBM8Zr)+ zQ8?9dqOMH&Y(xmP2iKw|&-$%KFLelBs|JxxujInMl@Zu%56BkGLar}Z*UzEa9>sQ+ zYgeU>AvHYF7GS&}PTR@n)aD3;)9)gPn(ySM)S|YHdM-8U>>JR;c02oUPP@J{IHdxtd2}7fUQ#D&yX6^*z4i7|c{7QKo5o*_+@qB3zK@d(7jV zKeqK49B{pM7Y{C&uh&e^G0HndKKnlBteQ~90Z$%BSimXMuM%m%x;{l)@716uL#Dof zvcYmC!7GQMTBhEyD!$uL^xoYPe0Gjnn+x03OTQi~Rjf4lMiGR(1Tek0TeS+XHMzDD zoK@i^ole^xkBhfsY}3AVyGu+`nNL4gIc+hKnHJKuWp%dSXP+6lIoMQA##weXd|&7U zl%OxG9-?4^@UX>iTO){)k9YEEd9kW3ue$KEUIEB_Mg#~b1sg5^ihXU53B-OcRa=+c zep!i}cd{@&O&66w(nx6p4drjNb0UqwT${}UPEUy(`j1dzU0>g1GIVnT^rXc18RjQ# zTLl8nzy;Wc7YqpW?g{ETj`2>jf8(e=kd1}CB`Xw?T$95|7i%1!X?Up-aZ(!(pZ!Pt zwww(8DOTKu-S6O(J^9BsVI1IUr}2I40WDGJPn51xDqx$jiYf~Omd~ERkSZp2SK=gDj=mlhO^N)h^Pd$#+dK#p3@}FlKpFObUg3;P7phzb9P+6NJ zajJU~D8kb=xQ;#1&V!TbtX$rT)|9>`|MCJbv1$RNL6075J8XvghfpPaEA;Q2Ynw2> zr#s2MwMP8-&H6c62e4a?kaIOaxx1?)aBHyc&;wLP;|E?~bWqPO^xJ-&kJLt*<;(ZQ zR~ID<`b+L3_`$4>3sV}r942ldddwFd#YG#msW+76@NFq9UWs60%&Gt1^julZSYlr)K=`ti;-B`chwI}@o3V!4dpDm z*4FV3&yIq%SB5dtae7pK+}?lB;g5VzEksnFW&x02VX563);e7_8OG1o*ejq}h^3!o zhk{cpgX?<$I0~bv1?hHe>C!~0*lw6e3Ol|>>tiijuq;ip(T@_nFmhRSvpc70;xd&) ze~1TG&verRZ7eRwQ_(XKIY5p!Y_N1~#=0#tMi4G&;sY3*Y8LzWa*jMWp*uBkwofaN zIVU)**>lChgWsv_@CF56jtT)!oX6s{dTy7#n8A#~mZ)mCs_RX0d3?AcW6pMd zJ7{+R6->(86g9xj->RFHWToZFg}gAFVKtrD>IM+(&@`|DYg_tW6F0*$xfMqT1@MYt zu_3k99RpdNh!iY2+hp|}5uzh=1#HTlF#p1`NlnM2N_$N(+-=(?0C?9S7r$a`#|6mK zM$m~8H^I(32<_C}D|@c>`f}_rNypTA!B(`}9HqUg59rU8Y@`I^@M+)>VrCOBiH5$d zK`;B@CV}gk`#A0c`HA462*4Qj*Z1RltXj#|U`Ex2M&z>HLu6b52xY#H<-Pn(D+db5 zknxv_ZC^dMU~Kgls7CPrJizA>#s$3k4%jEPscBI`D)u@y4NSgcUC9y+1yU~mfm6X! zKqf~tdIQ~W?0OaiB!2Kb{{BTy_l;2!}Qs0}kzGD2GTaXKLmc#qX7$(pc(MvJunwS<#Tl~GVG+C+thV(lZ#_MTQ3Qxb zdk}(`J%m}m9VhtI#!2y%!sl_tQ`rfa>mfD_mEAb?P~GJe==|FVBl#BWD>tRUIe0m=<%Q5vF&~whyktINuYFpKK@4O z2I^X4%1KjYUa@m1`shIzJE(TrKsLEkN4fx-AQ$H{f@R*8^~%vu-J ze(-&i*ZQSRx2IztYs)59)#ZIlTv=ATjrR#$$!5fm^lJ6kgv}xAcVOWn6#(gZtxg3A z+zpAlzn+Nz_1l7PmYu_9Dj%O%mliD47-?Q1ML9nyq1`G>ovOkv#E9!r$zU0dx0qqM0F02p>?7>oS3~g8{ zP_jo&o5;=xS_}#^P3^@ggXLT=>zw2o6*pi{>XNBr;x`@HD?I9RzUq;_w&yx}XYcN?c_CIXE};QaV=(j6E{Y9cij zs*hRRG9KiK_KiWYKLOme9I*~Cxn)ztAumPryD!xt?&{2m!U?=j9v5MyDJ5V*d^xgl zG%H|D7I;66VyA}ZEcp>GAG4Y)X+BOY5V49gX+&ga>9kiWiepYC*kqH^g8Mx-JtYxk zul2Bk355g|{oiej`P7-QIblEvte?WPl`K%`A@Mx*H|Eu|96#QIViZ=%rRuVJPx12$ zqXsNlr670M3?1O#JZeY*nQNUFteD&87Mziog!tsVtU&{+y2L;5nWS*7W_$w0>>MGB z*gCL!4Ll9@?4`|}TBlZb$?{+Xs5&&wt+_tW>J+TG^&5U3eTX;FMSeLvItE|>;<%j& zCG$5}fZDxQ->bO5F~+wH5B(M(CUnbFO1xOSC(MuMdPB^Fh}(jmy@T*HJFH2QAK-C6 zZ5*w#F1mr!kV4%OacUK!M(m}bh7t|69qoloA`gTwCoR9*)oMwu*&)Mz4kTIK%c^B% zRax(NSFtz7lTSvW1TWIgRZ3@=JmV`W= zpt)=;Km5&sg(!K=w+*3oEoDVnh<*(!VFQ)k%CF_6qH$t(afPe6Qkt$!AbO&nhDood zxBRc}PzfQEC}RijZDAa+M|4jXD!?A;y_87N-z_CIWMBlZ!hR}eC^-;K@I-nYyUCvp z%v$R_04wU=)vj|*S@82HO#}SN_wRrm$=`jz@4^TC%}inb(f|Bcn!@;3n!@~LmN4;G z&!7FTzl!x&q5obAzgPR;wk6Epnjwr&=|6xW%s=?eKly_{`{#e1CCuN8<-Z^!|9cq2 zoEQ4LXbcm6_3MBB2Y>hr%a_C-{Mm2+R0m$1*_Bg+zPz?b11>q_1)5@h%UWO#s zXs*)H4(bR9vQ{%C4c3$8WqgJ5YM%Dm@&V-(M`{VLoEX2(mpu&_16o(#HbG|kxZdYyFK@;*5Tj$sF}PRY;xwCe5HA2w-8O@Ybz&FH z4>c%YY#^TL;Wwc4b%;CJ?)Qb6N6}Y20hgQsk+7F(m;A~(D`RZQ$djkL0i;02x<%-t znzY(hq@zK>oUX8Q%r?w5RCNI&K{uhz(Z&y_>r_c!aJ5U#msc5zUf~;HzE4`f8UbV4 zkp5a-rGqZS z(5U<7;arYky+@i;rAs@XgJsj`V2qXp4jz0zM9+AeL!pZg^yJj?V-M$5p?4lHs{IYk zS&9-mb@j4rl6B_%BsVD&M~!HHWp?g_r5wvik$ysX2Xi z>9?#CgcE^Q<6fRaIz`KUIgFDnQ%7(6ajxUGNx)%CNrCMkp5r`LRCM{a)*5bg;5Q3o zUkZ{w+%3;PI&BNd0=lV{`oe1JQtT#pTCYR#X!eUwt61l3r>=fk#Ou>88~ZTxr&F!x z=bmILzG5AiW#<4c5C2Il?Rj_2d9@_%5Hu*6M?!t;wR$Ty7<3y?d^*ouTkA(7f%k>u zXv^_Ac)pZ+fxV4!y{Gpd0uQ-`l4SUY?fI!GV4teT-Nb9=mYIwyV{!)s$dE(dU@<5x-; zb-swW(Cg0c^ZESL_985fM_ygF#_Feci04z|5o6LtJ1oc9n)6nX?eOU_`9q91DHvlX zDt82pcN~H@5$@PdqphXG<{_{eU<91k=*Jd@qqU-PY?s3*LZafI=GzXdSG^sGl0)5K zNNRvveQK}324_f*N*41Co#6Ho;Imqbkx*GI9xYgFAo{{zbUS{&a4FTyKIEPCNhl0j z5|`a=!y=Wvg!=rXW4cX=wV(GmbiOY_E#qj!? zq&8<@-}v5V$nk-|-%sV~IQT1Pzk>%E4s~lDn~%KK`i^A@Zz3wXp&JG}aA#6*btFLf z$?g2~um$$JwE(rNty%tOaaOp#uGaj=_%0XV8ExTBKUS{vT3IYAb`i{dDtH&mxR2Gk zC)dX^b~g($;XNOqh}g^PnI=}fEzE3+Cab(kSl(tvIb0?iuu< z(Ln+ZT$yL5wTEM*tQ-A^2!Ou>4D0Vc;CJBz{$@P)AN>8llIQwY@Z1>wQl{H}^+sP1{Ezl&5?tIvPSr?lSxw!bNi^w+=r&7c0{ z!wu^Dzq&Gi^V9h8FIsQ@^`@79z1!r!ag6*ceI3)E+d76ae${LEk3f@eXQ}nN1H?~< z9YN}3HL&9Qtt&gItpZ!uyMcVNc8V&!$M!TW1%sz)cgPau8RDr}6~8RvM^D=&wh*VgE6S51;$$MAMhSsGRj z3%?=UPbd#$>TBA*bX$?^<@Fr&z3ih;YH&5VE!os_=h~|M8{gKcV1u}d22eH&b8&#F zZrj|p4iBo8I3)-w0QQ@F=$-FzBp$&)YHohoad}Kb#%(LkPj~uT-TN*1xJ2iLd(NjX zIyW`hJvRhvhv>Km5u@sAsTrjwU`tm)_%~mq#L%UQ#FwH)!*&9@oOrB!Bq?Vr(83S#xDPtQW+t$AtBRC8DJ5H}6m24)Yb7#E9U zct+rPhmLMhtyX76qNbd+*fS1Jy3bVo(RKmuel`#|;Joh(^6{SIc9xRT=1a}O<7oo$ z{hsb=h}|Dc5f_%vSPB&J!B6J_LlJGuC>lIUkZhKiYW`37i*q!}n}UU*Lbp0n?{o9J z_c;A-J7xv_Zi`9x8=zxRmBMpoSdL=>_!+*RR0Fk}xx8xZrN=>1RtCr$lp8Pbts}cC zI(~ew6c75Hv zf+tw^vEswF>!)+*ZrvuPVxyf6GBv!XO@7SDizEO!XLjE*s1@4TG()wJ64}R!oK@Qb zjW#>p>ac}HP%6P@dKJ8yZUC=S7xiW>*KVlWMi?fP#GhhW(CDiqmNKMJyC(>% zwGkzsWPr=@p<@Qi!s*uTSTw$Kd+^d$&DL8`|4ge;8)k-rifvW3ZEv01ERY1kjYYQ2 zKa6AX6uZLQ-gguOdEPeX1e7YZHht1RW<2Cb31y7 zulV#04}`9CN(+_l;{Hfa8W|7!SBFvz-{{e1L;D;QQ|#^fs>NBA-N-P-DQsSt zv*P0>GMGw;7S5e#Zg7)n;F0g<9VF*Zo_5XP#?bvG+0gz;+M`q0{p3udXD@1&jOiGV zKFP#%OO;~{65qVGW6(#kzgrlEk+P-Ojlp>|JJ6c~x95 zo267(a8fRm_3qRvSF5U7v$ZypnjOqj0$h_pM=IEGv6Ow~T2&=^j>~J=+P{=j7wu6S zT_S*b`(T$zxKXOIb=yHVfh)<2ue#SweA3ZJkT*d{D%K?Q`B9y?=o9dgdr(WiDi z?zV=p@eAQ7Ge6FWm6zMS*g}1GZN$nV^DB)KqLzcU(B96qwQaiQqi!eo0Vq0P>}VM+ zz3m##WqwD^$#xNz(w%@RLwDmnfA|y)GJKDrJAz39R0L1`7B)58xm1?!+fTt}r`yTz zo_W;zY(TR>Rw<5yZg3;7zWUKi}jtF*5ZCxfV zjWK{O0-dSS^xih%KOtM4@l7pIosZK_=H0A=@yu-GW36dnmQT-5B;;;3t=e%f2vNsV ztxCbULnEMJXK864**P4e4uXM(-!FMVugt7kPgTRsB&wpBG6CvUs^M<~x?Y8LTy;A= z2>Pm@oJo_5*RO5ww8vGYJKcrIiJ{IU^lw_bv7m0)?chmms)Ckj;Vcm%p1M|! z`koxsL#+(CikJf%P>qccE@#;Fv`K1jvph&+JB6;XChs|);YhAKRsFT&abrqrD&|Y% z>p+~F%~MHcWPc$j->gQ74!7#==%koEBvG}yX=m$r^>ApV+BVKJ0Pi_B8O{li(&4%^ z5m!2EL)P;?;p>D?0)k?I74mUA!jjDs`a-fC$tu7O8?)7#cd>DC#lWy6T-n||dyR_H zsN=XlKTyNZ0n~gcU!r#5xr*a_I$wJL_i{`@jUyJ*qo&&ZTKx}-4HEGP+e6EiixdHv z9Y0K+h7OeWH4e4AzP9!NsueKrJZ1xmp|Ux_k!ODZQPMSba3a&J@r9RY1x^}4K**BR zgml?l2G~-xL2dN*+E5&;nr-Sfvm%yMHl0BTQX)%Ean3;)fz)a~Qlrp@ue)s`?3E;; z_U zss=%Xc=}WM-0F}Z2Abvk3E`3?##N{E**y zfqT16C%Wh~BJH+u4zhea?6l_*u@3vcwO;_K@;8DyAlWefDfgVI~-Bxx<@bG%f%l(HD+CyFuB7by0(|S6oND$?a|9yWcXc;^H|7XX%w9vh$3FRIvL&*!BP*Q-Wx z6u5C~%j!AA%Dv%Gz^od$I89xb-tyD6x@-(w%Ku*t>`!`T0Zb@S-K=K(t1tafpCC9>i(n>~I%F%3&w2^#0pscK^pXV70OtAY{Aog_H4aidB z7G7;VK`liY&!CDpn@*Q+o}4OfJQnT3w;ojF1JGwu;=xlabH^ecsHd3KT=)$Or`j;h!XrGVYr&)VU?FcUjGMR*Ts#k8#y zdClgPuE5r(2ikZ&nu1F0<`mkttiABALE6d~l1= zq^cg*>xmug<|7xLXH<0%`*(mexl)D)?WWcLH?59B2}U#o`UTkTFHdj>Un zopkJEU^ZxS0FpJJCt-WkGS<^T5uv7r(-@~seTabSv&k)zqu+WhX)DSNk{rnE&Aa{a!7ev6|kAC~x-~V}Pl*g}r{rms?k6A^(|A#-1pz{6aAMqFeeF?w%^&kKK zpZw+z|3b%QiGTj5|JE;aAHV;ne#D>t??3;L%l+fu{-U$9lz;oMtJGip`k(!ufBesW z^Ycimw14N2tn^>~`cHrR`+xe+e*Ot}@~?mMCx7(w54edx`orJ+JXhoD|Kk5B}9JeuK;XQ|`u`4d<2U;g}w$Mj$Q{E2J&`#*o;V*cx& zKXEPp&Cj2>mjCwWPh87C_$y8?JJ<66_%}ZduI0b~`4iXj|NQwA*YXd4{=~KXqn|%< zE&s2dKXEPp!_S|%mjCz9pSYI)@#jxm%m4KAC$8mx{&|ube{>iB@4xw%e_<1l4gSrh z`-^{(|II)6i~HklfBrB2;;(ZhKlj34e~Qav`6s{l(be)7yQ6;*RP2iWUw`oL31-Uj~<$ zxU}E=^MCVae`NzXLFLbn#(6GxyZ<8`jaw>Bt*ZuG#Q7@Ne-^&JamOpbt#wK*uP*MN zT3Cwbz6$ujjhYsL5%OzqmHlh45+9CQTmOItUALYFb@Qu$YE`}zf4rlTDo0_r->deJ z^oPjGvA*Y^!zs*MgTjsW-@-g$W%WotsXgMjlSe{nlv2y;p?}k(S}pqE%wCu%ZWb+=ac=}d~b08wpxU}?&Pt* zf=~%I8V20V>YNH$wk>*w=_%7rWrY!zCNx_urzi6ATAf$AtBXbbKP3rNER{w+PO+*7 zm5)KK%E&rmc1Pw@4|yNg)wkD6!LIu8S55%KeVYzvVLzu67>?)2ryAzLXQbnHShsr7 zx9an&%&X``mt?ZK-HcU&))FNtaGVzRV{_tDb$OipUM!!okOc}J9Hre?@+9<&il8Xh z%LlOd`=ho>D{8GT1@m?4A1h-W@u^lQ~m< z&O~xxB_5mAn_V1Kd$&2>Q?NI0rGT7HP-|Sf!_G3+fArL>2>_}V#`h|DS_-gEz4M!5 zQdYQ!XiK`PKSiV4vOdC1J{l%!+39tmP^!^0R=2SypYURciK&*;OdcG6i+gC_z znb+Nl7oe}zt0iqz2{yFazjb@aOn`VtubS_@_QjSFj?mQVi{&^KA&EM&5Icx?+(yw? zDZEbavL`~&H$>BS4QNgS!~X2VRr#Lq(&`nog~-<8H8XKryPVG;ZC72f@sI1wL0eEw zRgNKINW9tiQF-Wc^wb8{q(k4Cu2g^YNRIVXj!wo68p1id)+xKytH##B#VySAI{w|lk>LkdwcUAN*M*OPrF^HlPQ z@5jk-uB9_|uSdq6yYjT@`w@0*E_$EO;Q`{jhPEmhIxCbWp+K|ZJJ{lXd89;4%&d^< z*&^>S91}H<@*iD-?Ai&hokC+HjjXhFj+^-& zPk0@C<~A(QlWevUKz2-oOG(YQDk%TiZ;+yb=by75dP5Ob6!X_6iA#FPmi*p#;&!mc znbP&JE=nds6Bv_i@5;N8gKXa}#II;C8Ovm`j96sWf;EqPzvM7Xzc0RAw{wDD)6Bua@r(O zT&w8%p5FDWuIj&5d7GtINC%H@rde;(<(UsTnDn3v0rw6J@OU^~>d5n>3MUHEkTx|- zJ?E_U{yU|wtH=MBy?^hH?7Ggo(f{|Sz{`;w0SUXg?-x4B@V+`6mMk5Swv<8UC}^Mn z6p2e41&E{-pU-}t-&||$+EoCWg_h{}eUGemvr(wpwXX9%p9e%%2tH^Hp$!K}8=$zW zXaJc-B1x;=Ow`d(4gusnS!H^=EeQxtUYfwk!5FGkzpr!&rTnAH3jgbg!zg2-Z1h#l zRDzY4NQXDtOejU_L~39na$naZKzdtDKukfN)bVVjg(OQWo%^~jIgcG@8$2FhcS-|~ zZ3$Hl+LN{f)1n8~REt=r+Q3T3MB)MvSt)@S43!4ltc)GgsW0Jw&>mFu`DgHzN~ZL( z7NSPtGY2fAN$Mh&sFp4$3rGfN|A9PARsf`QT?$`ES_0z=se~4`)Y3-q9icsF|4L;N zG(AYP);Ln95M0O>fkzjHoe=<{Mo*C~PyozdQ*=YS+I03o8Up~Ykv0au+8 zFju9mx(SrAF2fj_hN>89Z4P-PnJ}4n4*!M626YeJ9*6* zln$N53>xvNC^B7@VoV{dg`}1^I!sh8y^@l%!!Xez0vcM=!ib27(#>vU>SDFTBs}X_ zR@pcdBMcs8Lrqlz#l|?uWSPcN<{^n`(3mG3G zWdWZTR7ivFHK6j=BhofjuQo|HrujtuRXgb5=qQjv?%=D73oXW^LqbwcDxm6hlyYNf zF0;0RzF2G0LRmO~F4q((M7GixvVYQP(ALP}=(A~}bfJQJG=_7no;Z0~=7=F=;zr>6 zjXJ0`#tHC>68X}vIY9Q(@=}?y)JNdXCu+d(H0VldF}guCjbN~l-30*X1S{=8Nm>iF zSq;(;JlO3d69#sMz5$jhjiDv##+odgL|O;!PDT!V0Nw;{pAv+>J_ARzEmOG`ZB?LQ zV4Hz6vyc{$u%Vc5im;bD05JxTRr6LxC1~$@W+S1UH|TzyY>;ha0*_#SWhvGH40lB} zA`iIRtyF*2kob`RAww@U0Z~O|S!akFTT($~nL@iDB`MbnXDg0KbGNc);3y~)OiM{f zOPpjdJ_7X%l?8VM1%W9G3M=fGIeaw{;wh~YnTdS{+zK#EKu<_MNd!XQAfJi6NFfgZ zs1_}Zj7JHG9AN!6ng(*D$at*(TsBaH7?APMYjx#XNh8Og^-&y(xdjGsBTr+XPfiag zK)9WxH#@+nV<}awGVOwB0J$vsBw`pqAr5#C>n|*mnz<~4p@_;(-iMhMnT(QN`m7#h z_>&)%q1AA>5J>P1#3cN|F~k#;_0@1vqJAp0axr{va$b^Rl5CT&1$v`IeJMdQRaUOp zkki%Cl4wogCNIe8W>T)YBsqM3F(i$+S8$V!sg*U;9L0HO;QQK5?pjEpsRpo%^9{=(8>06R}>fF0Cku zfsrfipmjF;yK8#5@!D~s1_a6&a==u^=*G}6o!4-TwJ>-9Bi{Cu&Sw>+bJA!)>JNjC zkB&3tlpuxX)IFv^ZOOC%f=AXwo`BCIH6VY1R!sRFkxUcg%Nu12)@XsjNFpW83tFrT z(3|?KvI1`1s65M{W34e}fi!O-D*APi;P0rQ8lxOLE_9A+V67_nm>e8Ob)_ zxn&6>Z5NrNELjQSu>2lr?Md^L#gOXb@)PnBr=jRT4g>Q@zLo?@LQ+}^Db+S+uqn&ZE|BX(nlclDvN2PPg*{bmMdi&D@wX$(aLiwwNiNDJp?_3 za0Y6X02)t6Y+yK~aiL^Ay!H}(8g-i#~#=7e4oOPgH z44s8r6I>sLiP1emT4D@F31c+k=rMXDM@S551RMwmI=X9YG&o>`k;0@!r6dL_U5cWD z0>+1kf%Sg=3+KAdbhD@CE6?sQ5F0=zhP70he`R=7T}uz@s0(C z@n|ES$U~c>tfKe4%(dV*6-R@&1%3ojxYfFESUjcTf)?)2WQJ=$Pz}A;^NC4J6`NW? z-n*u&6>=y)^3He^IK|@{sraF~#*z6p)lrx8K zwnvjWT2>prWlR5a@^KfFKcnS%ROtgK9%V2;s<(1zLZiu6rWjs4~$V>=8;ZES1LqQ#lUDDOlKDO1IR0ij{mhEmYz z;D<`6`O03A zVv_fiDt5)^qg$KUeNa6w5HIZ{zG=IeC<0D=+3#G#*qnUgo=sOi1r&+q4e-!(NBpR2 zX4e}6lTDZ}7eIuf&KgprrILODRi;`ccO`y4$PZ>0jj;Lu-7;R;lqR%`f`^9C47bA%d~>%J(r-Qb#7+;M}z>b)q@GyZnu8k+Fjul>XDG zCYP8UuaOA-4bH9Ba#qUGncrJ7-3G|&*9rqJl3X3S2%2+BNmORYE7lqP$}i&agwd0~ zN|O;ur;1fa!`Ydq1VhjG=I-xPGEs8e8vB64(m*EKg@>BWTdl3N_5XTx87+2@@1f%w z6|{9}*!lc-ke7CQ&Gw1gnO=d3PC4pD(4-Tk*)?le`J2NGceU?s-b-_To;Fsq%zDg} z{Qa9kbnt~)MAS(_wF1M8f+UG3_cgP%R= z+~>W8H0n`>_DJI@cAFda`j?oOXBp{y%pZE)KM_+}Jku|dM2*IppW_q2PZRMshB)Zd zQsCTiO|W8r&x`rW(#!f|-F(CH1~+~lxj?)6m-{OutwNt*Ec9}(wQ+>^ogi9!-!J|B ziNtf=$OCebJg0TdVke|WcJeG+DVBDNbcHD?;VbK(bN9am6ThO?`3LEJC{|E(S5fxi zeY}$7QGK0r1ply9e;S*K_G!(Oi=)NE1oHy#!pBtghdqQB}PVBp%{cQ?g_Wj;)2*&3h|Rbm4! z32KroH-_i}avd%cA|Qn%=97pw9Ow5A7&M}tCQs&a=%&+liyCeaQ>xG(>7N;@skq9B zk=!#_skeVYQQyA+za${~k0=GmLW4MF1z`rmOzfdkIElgxw=RLjh+x2 z^Ep_!D+BG1kWn0N6V~_4=9P)H0O=EQyQHPsBwoJ*)`wNjrptRuPL7phW07^4THBy7 z_SX(9cf!QxO~qf0A*j4F6y|!dQ4cMv*EKh|CScY4iZd&K%F|xL|F| zWQp?O4@@S}62Zc$5(FcyyxFgd7`@VlBZGa+<+c*`7gM9rcR39jU091->5TX?mCqUn zby5`1Um}BE3PZ##z_Jj)Tfs?3apJhylYlxULUy3U&$Sj()VN+5I^63=K{6k)xy@8PppYt+UWDJzZ zNu^m(CC6ShzD>+TiA=8+Le0Zx+Zc9OX93y_eS=rXk!rOfXRCSP@boSwTh`ODTqJUduS}ory{|FZ zD6d3t8O^)JgHI}YrhFc0t?L_2-^aF50by!T!9~yI8*TL+Xz{7-IzJ=ZRL;FH5y!hK zy2j#&faAojFvsT7DhK#krIfOwCm6+SgI0Tne0y2`+2xk&Mf*nM!k6dbOAT)?u5tiY zL8+QjYR$Ja54(O;)r3{Q!|HI@daCdhfk!(OaHgR6@&uiXpDLAe#_9c#_kgQWpl{Se zsa^h4;dM!?Bx8D>IVqvHGAG*@%I%>wTCbRP@d#`u;zUN)B ziiYwGyDf+teu!t}9Lm&B6k(SbH9m;L0+fA3`wh9wZT?}lpPS)Bl zvwWBmbMpE`Mu{6089od7DT$BtvO~Rf&Q3_==!>3L{ofJ6fQ$O249hhZl8Ow=E*x}e zcbD=e3=l<_7><`O)JvgXJKIuOv|b*i=!)WE{wk$T&v8r}v+&-vksq{Y-hpt_tN-p(ZOf_M{V}^jjIM;u5SK6Sh0W!Yq<>MTn z;0xLZcthn=?w4_OX2#2NuJ3Wm*w=@PBt!8OCEpdkvjB}g&Fe~oHa3k6MMSL9G(|V; zWsb5lOZlEQBx6FQ4VS(*4}&FaWMN$^zQ+7qexjdH<``9e9nyJpvJ^$d^^-rbHkz{D zP%ra_7>he@0Y2%5CW1cBGdrm+A30>+46mxT{sYbk^3ZHLO>NwI!$R%nP59Wvi^N=u zzm@g?`AWH4@nR|^()S41jbnk}2oj;8JUT+fbi zVA;K?@G|%BN2B%*Za|R%N7TjaS~m7EbDJ*2o-%wOpQN{ZH;=KdL9jsJC1?e%?HXAM z?Tg>}VCx9yv<9%K%|>p5c`YmYduA+b*+C=7@3Q=7kHvlPQ#S>}MzNL_#mb7?jq17C z?i4JNSXj5i#hwdz&Akk*}5?jnh7e_&!OQV4vfo5zBY;xI^yXzPP~0`>l?+ag-maYBYuq)&<3=ck3% zjCaYdZ`G8Hm@;Bpn88}&jND?FIc2JucJQXYuU(0+6>v`Rq6ajm;YTsYG(fV21(swK z@y2?PR*x^j%Qzt=%Fs?Rr%d4lN1?u4EhWA_`Hc0;6VpZsTBxzuT3AibZ{NK8_UV$j z%=|-%aRmGyH@+D`YqJczs1EWEMNhAxG@zy(65jQ_=+1?ILIv*1A zMDM_HQG3MvI;Us;!1SMW@;-x4`g*-gn4;Ws>dEKHL-zvzKMubbKmW!z!mAozLO%7$ z?%tVITyv{fT77LB+eldzj&ZhqydF`1T_pl-J*i%pJhbC-b?c^>h zuMEH#>Q=ZcAQ;dltb3)$V^&ZKbYGGXY^8i-utmd=`5pXM$ZA5Wy$a7jI?Hk9NQY`( zpF2ja0dApqW@%9x>3EEsAEEp3=7=s^IM{-vJH<-YWZLDrKj{z3dcU# zTk+t16#`gzE}y4XH{M-I2P=DQRQNk{Oa>_rg3cdOA1|b2z8kcWixB3Tn3cB2zGm8J zSZRTfRG)_8!9q)F-`OLlD;kW0+CM#WEV=4U(3LBAJG_v~ONi%XjiU0dX7iSTj3ix7 z3O8jI*tuLf37(=UzJIDvE0heH)MkZ{uXW7UUJRGVY0ZkbDY3U>;ul zh@~Pxts9g{uvR*bjrmih21uD4r6?hC;x8NqMf6G@YqW4trnEE0R4YaiVYS4KOk)f( zZE~Xh4KyC}7S#0R{u7>|=S<%ebL2m6rM+PeWp=pL^P$vQ`rib1Jcq$v6Bd*xnBDcs z7J(i&=IvxX@?-gvQPtyUt6YKtYjJ&YeES?fQ)&BP*1dj&)`ZoW*1ZF}4lt#7OISg6 z0~w3*BINr^lIwMuBg@yN-gG>-4SUDl%f=J7lOa+1ZtP3kC)FCi{%_(B08K$~%4zwP zXRvimhZk|V_>gJx0tI2V3fM&kW)PU%i~e3orBcGSLaK<{S$+@nrhll!ds+^yj6`7j zn6Hxn#<1KMBlRG&{$_lnH0q07ZllO!M3lr z8K$$E)>XZkx8;i@M|g2dy`M%*A`mZ;SBrv76Y{=U8!P+P9U^YiGvno74*)x02oakla)q3ge5}JKZHca%jzV0Vqq?>BCx%@o=tCst%I%059 zcz8UhxkmNeR&tc~{tri#PidYVEu;dBg#1+<0}_HeBjCz+`ocK=To1~GOZb@h&VO$? zQ{hP=XfH3#7Y(iXptm*%nS@v+&3F!;5fc}Q4W|FBhuG^=R1$}4ZuXc%>y5a=Ad)z_ zBn#vV+B=fV>bU)R0Rpq6_H2t1^9?AI?#E%cu?v?@1vY7hxz=VrH-zJpgRM+{=O^BC zkPJDIMx(dzG8Cx(b?*FSl7^;CxiCm6%Tek(ru_W)?B_Nyhv;2(S%9VIK%Klva(G zw22!ICX0^QIjeNuX(@C`4r0pmiU6X&>R$0d)?cWC#3xbgf$-*lunqYm`LB*l#spcC znZNWBo5<3(G7n(92zi7W(a*j&O2xG`Cm6BZF{s4ky{UnE_?DOT)cTkXJ^57}`OA{m zb>vQ1p!u(4x=Ev0m&`HF3W*<;EUx9@^# ztGOKqi~AMvGgQ^%{*_gSqq?KgjO5EP*4U;+*-mc_R?nB9FO$bP+Yj0z@?ha}eN%>O z4^R`m>&B$DE1?Sz-Ty4Tg<)lfn8&T=4)26uQBpqM+#(;~p%*?)usQ-PQ;^;Yv% zIJmOgiZ@=VR8`|%yBbg6=hgS;G!9haM$CXSvpLP&&z}RCJq~;c?wLb-+?H-71CW}` zikpdbG|q{TwO6yj51oYDO7qgi@!H`(Un(1PZ>DJd2)Yz#3 zX41LBLH-i@f&CK9^Ap6Z#9hZpt-7urmM>-pBz(&Yq;DsFWI1-nFEjmY7IvNhZWcOU zJ#w*inVME9WUVUqAf4tJ_CwMbjWP;!4vS0a9&6}m?J0Kq7X31GldP~L(|y~9xT4zH z?>KqaUAlj?6-vZYL91m>NQx#}4?F~UX%R*Vj>8MXVu09>sXXQ0woQD507H$FYWBqY z!LFq}%91s`)$z6 zu#XO5_}6#tu;lcX1d4=m0~;N$I*OZpCm@p!g&_NN#f0L-xaO<~Eg(Uf5xpa95WPZM zepGH!=1zG1I5&}K$azYi!hQZ1i^AE*Vpe5{kJcu0mG%`C`K-UFGf-;3<+%v|BvM9q zty=FOXc<{0jxQRfxR1-}za=AO|1{@Rqm^%e%V1uK`QYEtX>)AfZj{##SL6h3FWSBZ zR_JMoTPA=CDEwH+sz$&Q&L~g^keQQ}V}Cu0hs&IcOV9qTwUC;VEqfb3_Rg1LGrJtp z!Z3H7y6u20OLYDce6UoLVydojobkpSDSOh{ux$r_6~7(i{|GTml1$rsN)cuOU~AH~ zYQz0L}i(K*?4=abNRp7|h#YUUN! zk={m{hF#;h(w;5~Wc{FyB`ImU9Ar!yLpAEk_4=2WxPD`9FkKY_@oXj;t}=}5xITL( zdEgjA?dy{?5BZH%MsPRfdvDJ2#Lv(cPsekbw=U`qFGxaf{n;e%qsv3n;e2?UelqWf>t9{!2W>_AOfD80o zkXB2yb*oid5abUU-LN$GfKqdNgh>Ub+|+%s+tKRrIYa$=*bdu)o!!KjG1&OcP7Bst zpJp~WTKajA2b*f>Rupjob=K*yOYTovJ#@TcKuBesZFEEhDMe~iYOJzC$nR!hkRor# z?>$7jtAnCCZ6&n(O;cGn%aD$&!91QZN_nb>Uu;o+Hlx%f8ta?ersMoWp2MurYDMY( zzQ?FIwR-oPlC-~}0bWEWr})lO|DvACcg@VR7nug*(~V*lvr6oLEr;pMUEDBhmTOjG zpflE%=e~dN$FHp)p3aL`&d`M0=XV~Fvm}fM_tGlP8%$0G(jC&$sKX322kSY+>(0tU zq^843grt0peVcc6dv16bz34O@|CE=FjhPea#ppL2^qU?|iw zq$OaMoE14h4{@j3F~E3Th8Ssiv(LT*kD`+RwZLv zV~Jt@Eoe=hGJ;K?q+x&ZtBWsN-Gl!wT3}1UqL06yY9tdCzVYoOF`QhGr{(SL#Di%H#svSIGwGY_TT)&A-huaV572kZe$k*z& zD!f~V%=7wE*iCt1ccipWkO~R099;&Z#%qbQpev^@a2ILi_L@0`_zJl%Ah|m3*zN6Rd1mqQejfalzyJn zOS2}8T(;lNwFLs6hwcq>t$u(zmQ)=Y4aI2&Ki-SWkh5CXw*8WeiOQp>=J>Kn)^)CB zEfr&j*PJ}!ptjlv?sJY|xyOADW=ervF81cJw|}$oG8=jV2zO;C+8V=^e`IyE=&6hh zm7Bq3YrhFq(+M{&?qBY*_vPYF?JkN)x7F}f${QU5ucYC9r01+^I4DkYFUo$o%poG% zSZAkIA|wydJEOAmg6m22vyUQZu{#+wZ-AqIak``QY-Q2-8wPrS^`TX4mIWPUtLGi%ap)%3uOVPZ~L0<#v3xf~Ux%R7ofFiajcZ_RoIOWqz z;vFxAG4Hj~*C>__3-Ff4tNNITmEJV>VNlkV&1sz6?XbJ}b2ehI;}eXQVUwiV`njw@ zQNzS)buP{?sLr;AR<-u1&i&+m%ZTNhRSVIi0Ok>SYoyMAtBixLTQ6(l^_^!f4aKf? z{5Q?Ii+)*!41N841=OaI$WIPqzuL9R^8&WUFQZK?qg9L^vgp@L#dFOK+yB)|yLLTO z9Q?oWekrJ-Q>s4Zx{m#T_SmRVj<$JnPYb->QhmQ|r3ZH!vB2FiOG10@d4lM!YRQU^ z?|+Q^W~-LvBKU=viYNf}GN7T;;KY~s^z zf~hjEmWIb{+1*!v$$b31vpm%9Uzxwo*fu~$pH*NaGSs&$xbcQG^DrM$Z}E`)b4A#; z(sZ*HwL;yqgluJ2Td18AS!K#O3S{Nl7AQNb)XnR(=0S%V?_uOEXd7#>g@<>SIDZy$ z-}L7MNt>yz##Xjg&YrD@+aVZCYf+Hl_C*y$BCbbgO{}c+cT@WW{H<2B+?i~rWJS~e z8m(Kxam^{l++RCq9Gr+l9Phl}?jlAAo1DcDLVSyx zuI~T29gSW2x>W_^9jF9}EuiVJK*BGtRbc7rfNo72ub|9LOBd#L6*FBvXVoFq0JWpt zV72nHD@@`1?IP;2RjIxEZ3$OHKbLwKY?cwD?T~aosIPziCkj>PpmwiENn|5PnCRkk zt@zuW7Wv`vPco7jHF^33Puu17bjH)Z7Vrp|FTaDW^w@KL$g(9qxYjmkR!8!*$-W9z z+!~dDIr@Oup9{8Ve6Oc3+L9W8-veOx@|~Z6l%9e5mZpN_AG!~kOpMxbnT+r9KUCoS zBgZoz+J;Nv$$ueV6*+$5kY==AKWR-`QSz1SKS=;rzszzi7RmY@`C9J{dFFK;7G>+J z9TypVYkCZZ=sK|C8pUKNR)95Hq~N9O+xGxKR>N58lcdh8jth1im}bD=l+puAkL5SM zO;$y%$~;Xqc}d@jy!4baM2+#I=unsBy4!djm#RQOuW)?wsmFN&8DhRugAf}8?}c}iiP|o z-R75V1)TO`07n(#fXSs%F$WnbB^H@Q%uM=j`9M>^ojs1jiu8Q)8-k@p&Y#Bj4dF%B zT4BEmMX1s}k_tSAT2r3S2vB;q9nBX)!;;^1kWmQ)0QLH{Wm`rZbeJe|-PvSsGesmj z)U0#T9Odx3T&`vn=C!N7oW|Y=>rJ;#4&m9hvff16ra7;;1gX#JN4B*!UH6_TjtGK@ z2wlW(0%~IH=v{If>Z#7mQ|du(=Ym+qA7nH-q|4d1#UEtTNeHI@;7`aTQO4&9_X|3} z>0s}<^iLp%0OK55uU5=6G2p!UI}5dXWZ>*hG17}wCgm3VmUn7Zp<&T#_-&khLDfA_ zCC}c~dXms6z&>6=X4eeA`y8dx=nWgY;V-z^{JgwuM6zD04RRz9Dp3ZgK{A~N@uQGY z_OdR@y6beMne6O#z2=L<5}S@PfHUtC3Gi;*b{wI1$=+dE%9j?YZrcG~z8D?$m3=jl z3|4Rb;YAnis-KGGkSP*^%kkuSuxSE zNcBXPR0~3w`IPrP%3g}eDH^K;oAiIh&5)v^Yi-TBg+OwAo|cd2=4Z)T2tPsJ@E zzXxjUmn$WTl4UerW%d10S#tV?%6?|a-C=nxJP6Lo#Dm9d_ho#PD_UgM7UeoQQ-W%} z>34%QtoDg$hsKEqbFFIiO978D9IH9tXt#h^wQ(h>L7lpdrWO*H>MrW9%tucGZ*rh6 zm;l3UXtq>Z>6JNJV!pdL-Lqu-z%e9s(hvVU_GR*FrO@-GJjnN<6+J|>(6yD?zS}1$ zur=5bJ|~PLNz0J@D9&5?%v87^n2aLD+Q7`uw3e^36){e9(4p}?W-+OTFX`BVy63Us z>rPy=@dV~XLXn6klL+X$E{R!r%|5{$+~FgfqEXANPjf6F2+$??Lj2W|AuXUgO`Kryg<%h@MrTN0o)Mjce(!e=T4kNvC}}V0DIi(kO|7tc$lU}MUS&g&A zi=m6_H%m8JThqEdQey&*SYf&&+*r|F0Qr*0=tQG-)jT{Qg zL~3gyO5}RN3cjqbQoG+odLDPFi6GFjKf9f$^Wda#IPaNrNtiTO5(jFQ^0C8~O)x zToru}YKF>7E8FQs1%I_$nu$RiZUw7VhAeN}N(sJTHO_ny(0(4LAtzVPOuYt~?9k=u zY2pa^5dUDsTyI&#<_&R9HB+v*m`egWvdET{D@g!tPtwbtKU60c_E=h6*3%}rjP%bc zk-k#pATB>a5y0FG*Y(UN@dCa1>P`mWZF4n+xeGz&_qx|OF4_XSB2}<$ZL8_>Ov_b5 zBY-CnW`N7G=4~X2mMf({){B`ze(}JcUAixx*q$G*sIOTF^&Q>V zHXX;bCVw+jBF6f6a^<563Rcu#u=27mot)yo< zbPIS!kG+^pWGmpfsaJ3PzCojtPgt*vT^0C;8vHcK&=+`>@AN$V^DcX9ct%{1;rGq1 ztY}c%L;g;Vo{E|)qv@@3njNAy$*Ld9>Xh`dv;*Q43^*69fo zv-9DxYpr4U zh7P_2$NplsbgKQSSYT$H`I(D8->kQO=m7R9c+@{B$E7>AXPxv!^0^6002iCS;1Sja z+_A1}xBV8Tqy4i}OTDj6?`TGL)#&UB@LiZq|0?Hg1GuF&mTTZYBc!Boe8%%jo8X)p zBwm{&)AB4AJ$INpPO|I$V%A>TtaK;GH4WfEeO#Vg`j)W7ovOfhRn#pwZ@@(|fjEiK zH#J?BGpn4hdY}6jM0XQ*cH!hkv)nd!b9#D}6z&Hk#RDeYEIiZ?^V0IaWoJu9g%o|Z z>#F|xHtuB4I~`}aRsVc16Q5|MFU02!WeNKu!;mk(=+#0c6(2~0`|^b+vhwOYp;STLi zpY<)}sNNvTMAPsBR7H!e%41<*bl;rlV2wq?Va$& zO!Q@F^wpy>bqy{K;~b+ge%31cIbJQoq8W-%u-6iSOg;x|MAolAW-#u@CGX%&m@TO1 z?Lsn=-!=eVc@1CY(eCi0QU}!DY;K!CC3DBzA;MlVQu!fPp?2Fv zTtVty0i*1vTfXmpA4x`DXSl)8_ix7Y?&rYsidBPoIPZ+_Y%xJL3WjR|<#`sbkQGNN z{H5D=HhpprMCk(8&aOh2_vb@beY4z}qt-JThjaP(dP^r=V5;P+Pc;BdAl7z&o*PQ*`B0DFU_!uIc;5m7#6jQ!&MkJHwy=R`42Et?}Lr0}@kR*_2& z>1zRxesS!#mQ4^$&6_2-HxRGnz9${*?m)EU^G0JE-w>P36zP<2?aa5PJpX62r~&e3 z=4C6V5{62p0r~>Y53Hf1)GPLOUFGM5)AaL@MW*Bjlyp>Sw$Ts*JbM_>+}SLPx6vHA zDR7%2Uvt{$*CR&lB$zyf#+0QIZIzbM9jT3f5atF2pz`5?xBU2&jUYtmes&}w_JV}L zIH0<`Q$9z)?`mQ4Y`o8nor&Cac#%yj6JWsA(IBPwquf7U*E)F7T_i5leAzUf-&mbD z4cf!3FOCBWLpAGa8FKDQp2{CWxxxFYcpZhSmLW}J`H`^?Xs=rf(iMdcwPn^F3e~Ab z0PY9S*1-~(X_8s~#klRT@r~*hWcD4A+`<`4@D)IGOYAq7X1k)`m4M~eVL+I@hs_n@ zEeVGMzR-Tyv~w1XZP{a82>Zx~o+5XCP4Hv77V3X3cZQU*y$0z~pp)J1T5g3@u5G>d z%1_chh(n-9R|5X0b43MJuI*{on{vspmwumi*WrNrKVWq(l~)sEn{E2Ixni@^)WTY{ zxU1r)!xoqzKjIE+AN*=*A!()(nl0=sPLa)9xZ-<0jJ%q$o_vR0^Nd5x+vc36-!DWZ zEX9lTL|4^PHjR?Nx?RaXdOCP&er`~7lQ+(sauw$oM2m+or0!Zq*PK?RD0>N>^oQ3c zRX2%jM!0EL_Z4M<^oaPnZw)biFQ=gpovsP|)()jF56Q>xuZa`CKp)rfufTd*$6PMw zuBQ~5kq&HH;!*yweX|){C4D#3HdTt4u)Q8&_i@V`=5tC#@&H&}P1Z+It zIZ@M0)2bG=k9gtpsb}3M8_cGE5(&#<4#HH3?~_FSH^avC>iCU$QeAms*9{9t2^D&p zpW{exX>7}i%1m8X&NWH$yXeTY#`VS`B|k11)*<<@Ry6x}lD+b>HT`CM{d;lC3`uLa z;0NeIFSo@nWN2zpEH?SIEJ#7eV2V0Xx^J0%}&@8say=4 zPpGJ?Y?hz2;BRxiwTx~@$k(m=y7$XxuL1QvSAZ%^v@vXU6j!0KbnQpZA7T(U_!BSg zqcbqKO?#%644?6-7FFYr88u8QmRis0^R!u(F;`0xyeO3Gm_um_fNJRAfpRSMAUOP? zO!E^@z1rB!?rM5JvyM{$0%z;$;D7Wl%=0Bs~j6KqEs5_ zm7o}^4lL32L%9k1z9$1eQtyBa8@Y6U?zT70_tEX+nMY!S_-G}Kc@c(=c1 z^g&OVeN@jYBQE>CA0Os>#5 zB}-S`Yy=jZEm&+0&>LA5JF00z&Ve0ZaT_7F?Sw@K^n!gkt3-iGm4Gc2G8|&%0+-zIx&=|XUsq~54 zthufU&-p`l>*AlcChCf0dT%`Z5OEQp{;#cZPjh2xP5X72K4du2)rk_!;?~KFH9X7o z;mP06)yLr5+NKdT-ryYVv5=4OJMD!xKKN)@`!VE+rFO$=v3$Oxu+~fk``2_);d*sO z5wnfctDJ5^uT-Zca8Y85xC->b-(6%TTiwM^nG3*zc)<@q>76=`RDNE#O0gQt>_2Y` z86};?@2ZHlVl8t$@PCtmsT9G6!xIQQVj{=H7Cjhdg6Cyk+iv2 zZ8pV_DYjb)5E-|Y%sWAO4eFNa zQ+{BX#LCw7qLMJ+kdF7ifB+x3Gp zZh^8WN6gH$8g{J-%Vhh&JbFmAE`6CI_lsVxUdi^-md22!p#8*>Di&MvoD?B)|Mk%j zR&b?d3nh6zv)!tRtJQP;j`W2TulFZRapX#!d*?^;!)$hn`72fjOj5f_g6nE!UE^ey zk&fpdjh^UBa+2-F@|3h%i_NoLcpQ_PHd>jo6)XxS_yC$@bBbgdbKKxR9D z{3?%+QVm;&kTfNQU`FvhjN1h=HLPK#GjDNP&AL=>HYljaluz`T%qutSuCUXg)b1Wj zXB;j;47TP~EU*2L&?Fe%4_d~L5-d8YPY?c70w4D|Gxg7lwD4OIY>c@3UQ1dIXKLxG zR3tSYA}Ej82kOugelT`(?%7FyasTCabg_O+b8I^U*2&B&eQdXTo7iQ4=GEi!@|!Cq0y#u2mk#1;$;&{7l<*ft zS84YBZZ2-GPxp&fO^mPRdv{^^Ci0r#OYzWu^y~!7CEK{@cO#YqlAIQgNj4R_F zEutQAypQ${La-J03?@%N8^>FKXJ@FM6fJT3!t|r8)ns?7lx*jKM$LqdUfzy}GvY)q`=s%B|B3 z>z%Q)J*=F0Q&zg5BKqXWTCFiPAAe3s>0+9gMeq&eFkY;OyyNrDnoA5?b%QR6g=Kiu zPhe`9*f*S}H@3qRDSoYx!_eV5!!PQ&nqI6w*fYhkVer!i@U9x%AzBOAPE%}h9v7ZG zvsX_3j(a6MHylmwH)&Py1}EC$TCW~(5!CQS;xj}6dn1IX*MHgnjAPEmJX4gcVx9w0 zt+lZ(=Qk%*_##WR@B3KHHjeN=pScObURj6p5zA5vOv%5UC9XJb_TVvljt$uOH}Ld) zoNh$E(cRG1ZHjL+r59xczg9%2#ye~Sv-j7@qwqlHMK9~9$?$nh*jP2=Stt`LN|`@W zYxjCra_tLLo_xM=K=np8iSynI$qx{tr)q&{Up-i+s=ANG0xLShb8W~>t9Ldct&yqY!K^2Jc^Iyc0xW9Dr(m)3pNe#$esXXY?G_ps97On5hvzry`5VyCK0sXDVxmV80$ z;6+RG^H}x1&-8jlF2vdYv>k(rnf~Dh-{ElEKZws)&_?v9C)zhgPlU8M1*LHRJSBHw zJi^1RwtZ6@j-2pPMM&V$&1;KaubpuMdqD?AG1QDc&YPLT6_f<{eKf+Vcf_Ipoc^<(kqa#ZrDAU8(T9{fVO1_Iy&swXSN3Lpr z;znp7e`?+nUtHr2Ek?cWo`@^_Y8~Zvj+v2@VIv>zRtDC(Bq6es)`NBcdtrv=RnC_; zw!HgVenqu-9JqfAK~@--n2JBe&E&VQlFZOAN-y9g{H!Zru^eq z&@sS%_1fNOe?|R=S)tjsy!SQ_gs>YG;UewP@}PetVj(Lb&uE~--X2jPNW=@S%L^HL6l!WFad}wa$e3R3DN&+<+ zZE4+kKJ3YPc~KSi3~RZ+?kG-`&txw1-$IHHd3NX7d#4mH91}3o#vN7=qC8Vb~o>>sGC|~*ogulX}DIGvg6B$oNJhb|2bEM;l;9c3=uk4w3 z5S8xA7b=z33hC+;Vs-`e88CFb&SXf|&CN~2&i9Qi9+1x`%O+bol8f7u+bMgm@eJLq ze{7;#=fb*WoIkf8oEF9R0Sytte`iBhK5(^8mJUFKYX_6&P9ai>TL|Ot?s{9Rr~5eC zX~U5m7n&<#hXtz6sgd9$Aq-H|#_75bE=}l8Rn* zy3ve0<1mL52Dxg7(be1=Mc((k0fm^K;mPSPSzS?10q@E$>7x#qkO`G(Y%FoNpBVqZ z!v28C4a*3Vr4{y9g(=sz-oPWyiOzwc9i@NA7_=y94i=F_Nh>~i*T=b_e>gJ4#sO1R zcZzeUUFPsz0!DOx07pg3EIsFWksHmPXTfp0xYk$CG6!9fP^&d&7c_sXj89numGJ*= zgi@nqtRFV5zh>rv?65q~w#WJA>NRuS@ zfb~b1xQoVQ3e5kzV0E}$TmSpC%F!OeYt(ty{HCJrpW|evIHy&aP2s?Gx*+?X@!e=j zL@TsqS$O_F=~1l{E3cy)an`v-X)xn|-7>qXh=2D;RFP@(W-e!lF*X#-T|mAT=`CIh zG8JyqOI9^Q%k1UN(lRTwv>kPsw2Yv?Tw|vFNrRmiHTK*1nNei9c>YWwm)bJbZf^F+ zRh*E+hlI@gh1|%_mApt@&FHW~9liu{hc}tukw1ZP$86v$4k9h<)J0w@KQ}$&giL$9 z=o*Oh95TKi-8FiqQeX=`eC2O7_oaG!fE{w#)L0PNi)G#mQS>XDM$cXiZ%bnpaINSs zROjxMe5~Di;$sYXsGL@YetVt2sxb0*+JTETn6kV@3vMd?Pct;bPQk(Y8H&ZEtWQpn zAAi`V3l+}|=#pdZ5gTam^lMzjyg+}<$k{&7V?oHGcOCwk0mYq5GLz*>f1_)HbP9^+ zv^Z3T&hxx)Ut!qc;~j);hfjAc(v>UA8!FjbujPE2Yu{t?zSe5bHFr(3^n<_|$L`e) zTXt82N3;Ew_ZQH39EeA1Nbr?n=`lsLfX@BYVh+yJW!oT#C%@0ZP$A%blpAYn|*zlfh` z+%R+`nV3ESXh%u7lhRb?Kichon%A}?FRYN(mny7mrTEKphFd7Asz>>ml!a9(fP-S5 z^Ed<%FFV3<3Dxe{Ks~*Y&S!3s!YX|~)4ZKy_CqvsF@6`UBEQf!JR^5Do!7^xdNf7a z3tF@@KeVs{vKCfq&wqg(sUGR&u=~K^Z?O*q{h~RQABnu?eQv?6q%&M@i0!%f*F3WL zb_y7KzvWSd9^XEXQFHUF@xY$o(kiOb;~~Nz>WB-_FX8VCLSW6Upoh3$hP}F>Yo4YL&R{{X_te6ZMu&U8^sK zk2v(5>HKV>TH2m|n|)*0ix9)oFR-=un)9^PBJn+s7XRV*>qw({v5JIpm9!n#2VWOi zL4qzRTZ@lt#8oXcl$|`xO}p0JZ?KKG6pEiHUmW@!b@2$g65tT$wV_XNQFY24VPX;x zKE~va$NUMMVgZq_eZoXuA?*1qm)&;k^y^V?lDr6+@hXtr04;J}SUVjL(e}IpRA*%Y zHX+{gtZ5TMRFshQC~r$aA?JF00t74KV0Z@Fp2#Di+Es&5tg42(JzZsY^MqyG=@;YF zn>F)(aqCTr@4ebQ5_nx)(b;`l09Q?=q$k+RNp#w@7&i_ z8!}{UvbCtuut@V8c*D0+bz>j|hdIT^qi=RJt2ZnEPb)7tU<37)^~JsCmyV6_T2w!a zdCfN!fU-MUpgO0iPo>46mBXZ^X!cXwD z1JdxNgrO|pTg+*?R{VuG3A3RC6_yz!g20Xct zR3*l6k?3k@#%X2%5R@{?vahKyBl`x-nKo6Xh79>UDWPZ3=p-p*KxH?w8_ZH zs6eU#`IG}frArD_g4RHO+Ne=#3%k07mZLJhO=9Osk7|>N*U*8S(*#=qZqpU=R`Qx= z+eTU)GK4Bg!G+S%kR<`^P%e+Osagsc0Hp;qqy`O}PXB3uF&uDwSx=3{3$*!=qyic> zXjlfJ$Sy(P(3G^`z!MEP09>H5^#Nw;tzDOC2@B+QLcA%^8yKt8GKE-M_*g~m;sz!B7YQVu_X$8IXkx)}bb6HNl4s794eiU6~nIV^HyQmSBVV_WxHqZ^*^`)F3&^Q|+sNmF= zWP)?KzRhG63UptORDE!(yNcE`0x6TMb&AxAWYOk z0!Spq71brIYSQr(Recrl1Q(-F-^0 zfo-SNkiu+AXdr-~8MvSVM+!#9rmT+`f`LR9V;X6DxC5*)u!verxvnt#O(68khox@^ zrmaSnRVi~*_g+#=Cdf1bpcm<@b%u3YK-cR=YL|1)Er?+?`4cLc8<|L2IGpMU5r}zH zX}Yr5=&+Q&FK`!n5M}zT1|UyMl9gJP9HiMSMsO!|Im!}|64Jeq;L+7C+DOW*hvpSp zLS4ij1jwT9;X0ufM3Qu*Bmgv5okA!-sB4ungak-}IWk%$EkvOcFOw&hO43o(V$m_B zrILFpO=h{csxo9r@OtT#%jA1!H5N)cOjR>z-MTbOWhJE}oy?G%c8CJW9>W!ocU{wB z-hgUN^|L&VF^OnkltgU7rPMKxjm$>7QleX=RipUN{J+0G;Qtv9IJ;h*-ap*koZf#I z{m1_}-kwi)w+~19XScds-}1xfNBysUo21cy{J(zl<(u~W?%j%4-z0An|C^)aZLAOU z_p8%~_1*1o`mp-^NG3^g)IMGwrSVZxexB8z$3^rXkNUg!Ki;n|uO5z$`xD+&9kn;B z`}NuB?a{AJAFft6ddAu5_0gAiXY19&k8h9K>+7T6@`=sSZ&#bu{U2B7Z=)nRI$xhX z9KBW{1YjRtjetU;a}X^7`{x7R-&ov$vU&;H>~-?h?6 z{t|=QfB5uxeft@Zt#N)I{XuBmYzUvZjkFhk zbGp8L`0B^^^W%7z{hVxn*0S8Me>nO&ek;F8Z`A+7zy9ammyEY(cjxO{orI!1I=#O? z{V~#!&`-tDpOT~X?fL45qty=@>1S_m?;iA#BQ3_i9$nnsN9?19_1VRm*X+l{$+K4H@{HCN1r`>zxX-hsefE;U&xO>+h|7f&-$Lt z>W_=Bsr8Ppwm<1h|7re7C+4%$`6t<fQ%(sTr%JrxdR=% zwV72=0brR#VBfVMwRH3y4I_@=gzl1wA48HW4Vpk#(#tugo}ZjZLcPj3$vQ})2Co&s zm=Yl9ks8Mqavwb=mA^wjOHsvCeH;8OC1T}}V_`!Im`|jD0qm0J2*qw+G@#YXP->GR zPHRg3$tw;$D4g;pyQ=KuRmuyXwxKF&DtlT0-7u=Cq0TZYaI}qemB^cv{U;-yh_Q*S7tRZjkGnDtXYXAq1PMP+))O71#QXcP>`TbTFW{P zfVR~sZ9p*pwXpeB1|y%2AYKgk*nm_-!0uue$`aIWO0!CbkKBuO zP_>W>%GQ%zSb@KkWfSw$E+s8xE;@Fk&Za0YWW2|8H-ktfH@6`+SSMXv(dr^k5{6w( zpdqFM)*M)8a_Dsvh+9PzZ$RS!%6OVkxJFpAre~|vY1C-}*^StIKIT~=CpW7mDi$eb z(|SUYlgbg2XBSVc+&_@)z%-q5+4^-u6R&(}c{SEeqLrj-7P7ZVe&Jw1K?QxfL{hp& zjzsTZ3}|w#iWX|I5=QG-r;T`MPO%GssgMx>q8#a><6LEc*;Mk*3?&KlW%|Ite2(La z>epdlYg(|G=mwoe;`nkOBDn%>2GF@~Nd^;-74U0%2@nL}yCiUG=sm24>}FjCO+zkK z2@p~iC30D+9+X5K0RV8d`!&tklqSnxrqDm5W=TE^b!^lC<;19QDD$R{TvSfhL`@aCt+ItYIwFio#MPhzteThzcge(id9M;QIM;1W zd3O!$&!iJU3^$XA(&Rv#%3zDtk3}DY^hjbbpOOMVucU;%7jPV-2<{rFOC|B*ZtCln zq*w$O)&#<2t&?7AMF(;N1--I*DW$SJ(N)nYrHwW%<*CBO4K|zheaa&X3Dl%*yHW>c zf+0~;L&~+d`SMnC(6L5}jpRgjl7}EA6UZhk70I70#=eDicI+vzODo;HM0*PmjiiTU zl(i0nsFc982!a~5(&0Nkv1c>CtqCWMV_BzQ(jKAUhDbVN8N>7m#op5)NLp4+ZTBvuawq#of-<) z;G)v=`?4i7qs}N0Fd84JCffOtUkwNx z68vdQaJ|;@4D>T61<|lNXW@IDrAYd^pcRth!^+6V)0*0E04b9Z8quWBz{G%wP<960 zVszO}aUt#8=Mhb^RD5cG+LE+P5|`63K-mgB2V|AVRtnlu0&dWbRYX03l^>@jBJD@@ zM+<6grSmW)onddlfCH0V+0bv-Cpi#@vLU26sS=+kanrqzs$6bie#gt zMOuPU!`Y7~dWitVMttZxbyP()DR{A3rkWmR#5!OrlKgcS!x=Ud^krfm=3NeC8vyPW zn{Q){bEv>gD%CSRFgt5kiew#v}T6&Leoaq!K;$AgXC3TO;q}&(n^vF3FR5os?jw|w@Ex{(MO@3#Cy^i%U0U5^qU0W>{fWVVHLSoV1W9 zHdNi0rg}?qyfQZ@ogz?svp&j5Nn=2eN~#QswFf(zLJj&WTeu&kb^y(y{jHJ31!+>E zt5j1em~)QC4A5s%H=Qn4Ru33f(us5}#2SBIGQDAh|4Ii51bLc%Yc5ln(`HHCdl!Ru zL+L?fwbNu;bW>Am1yVrE5>Q^?`h?z18*XtfT2A9CN1vsmweC&S=f_l`w%{X5o>f2$ z)`b3GaBqR`(3i^Ip;0aZo;Jqp%|;!r5spdS`Aj>^_ZH*~b)a-6Vye18n~_gC5v&$&G~49jOFu;|LKMY{nT-hSbjv3Bm8IkrmcedES6=)dTYjnJUqI2qY(I zXwWApEPzm@CdUO!feaq%V}MGX63VB$45K3-#z@*s2RkMaS;cVyD+S6UuOI_#sCJD9 z@PYvpPaq!$5x1l63y{DujU-{D6D2^v>85te&<-R&sBQ+Y1#%`Sk{q}~sn!}6Wr$du zh^`}$#C0nq=lfoxgC88`YTCAPne2H}Hl!I!&dXHLIo49-2z6mWAeAsT#PP7U4Y1rw z4UC;tfmM*J=^Dn?F|4Cp($ro9vLKyB1)u)aMFmJ;z}V1g2|v!5lIQ{XOBR>(3qT+v zlq`U(>IWJ1kZAXWPqhJ&-Y|^tutTFf$r-5A7C>-a8>-XliLPrplG7a8+dcy-dOKHlUcFm%pq&hbM%HBFbDuW7;3n`~7Z(2w}iOx$( z!O}uce+kY`F&bsKjA=51vRq+RhfP7MESGAMKdj3H!3ouuQ*2Hhn za79J5Im+P{&VXFgJYi9%f{I$ErWrEMvK-^I%DI8?X{A~yX{roz+I*ygT;^O~(Mn%P zVQJt%8tX#Q=sD{2>F9y?R8lxx*K`5sj&wAYchqXg@ifY%Ha42>1}>5kc<|B+0CC-^ zF6e1#Xlccd>GYE6$w4d$_(L(&|QTJ*G_e?sgZe`sDW$}NE5oDOM5BrNq$Cez_YdMh907EBps*u3}m3C`#Ks< zCDC$uS6UJF9Lheqd=qu>CGb*1(U$NI${UFa(n_>i>9->c9;qyX92KYeS5O%BCG~-F zo+?5p8G$C*$s6fs@92yrkI&8v@k|an79{CN2}O%DRg&5aB6x z4jq=fR;tM$fttXFsfZ`Z?*fsXf)oi%t!O)S5uEhY+0%z48y^uiVH#;|bBjaNa{Z)b zTUx#hc??=II5G*7G-ISwkXBN_x~f_Uc;026%2xs%x5Zzs(}cpd&LCF$JO;Ie{2UZ2 z66BGti4-GUp&9M80N{apU4q*MEwntW2|nHeW3ZwyvH-zZ`L`tHUb0rTz8khDOStvk$_b@RIB#QM=9W$7&yT*DlDAy@E z(yMV!HhGlrDMotq!2{|>3Nk2c=qivj*}MjPHqyVOs#B|z(N}dWO%5#yCCxhb+7Ku> zibzWhECx1MM>bL7v8DMxZfofLCIB)e&&g6_;gFW6JGdp?O+RRa6@FsYvo{3f7N9dyl6Q_?;pYsp&j$RY!S z2aStPQ9?m&TLG5R8&6bE&Xw*z%lS@aDW6HpT0?(3(oR=Zpr=S(5{L!=hkUPe?nLPn zFl4QiQctabekJW)WRdOC2#$+{eGY~fq8p^qk@}q;@1&={M7IpgWGFFY?*rB+_o*EK zh>=!qQtKM2WM{_k1jYmGq9qW)vWg_4056tUlvOW%27DV7dvI4qfLmxRlr% zlS|4Ftkq2&V9o?yKyFtiu|7hE2&@+M+ieno|C)?c=%teLjcgh!EgG;mx|S?+1{#Kb zB}rGv3kOwOiv=3*C?V79Bx+X^ZLyR}XY45>IGQs|W(W9tCI?Hx88bR51`q>)*v!U+-fo==nwBEilynXz zSWzo1PW&YeRdW`ziE{;H#aW%dXQNRwbh*qmmF<@KJ`d z)W|dr^j42`En5$)8)y^d%F;9xrGV2mO;r{lZSb%|(1W>ZrE9$T&%l%Pw(%bQbiGh}&FgWOb)h9cThGZslQH_+o% zloMfUB~s10U@0VSIy!J{S|Krj_PXsd(yCU^Pbzxbi0fh*Vj?Rv%z`T=emEoVI zaEDmHPKU;r3pj~Hhe%(8AW8U`0m`J-OC>ssf%E0qbW1fNHzXCzdwSCU1me7>)+9GAQ@iMK6+(fx=mBpbbgO{9QKFrq@g zAq0>>El=Q}vgXf{o)WA0Pt44&I{YjydrFSONXYBP5Ngp!8LgsIZ22+VF>*PD%q5V3 zWpWMhDR!wYTMv&4g>N+-I&%1<0&Mi5w}4AUO|+bG2@oCXPJ@>q1xDHWpy2)KjB`m6 zOsY?tBU>dZA*q*W(TSHrL)4SskPyWv*Ml1h!TLfo&m_SHtL3h!o&*R@JJ zdNkmN&gI6+z1Cf$I+B10o?Ig5ALwO5{`AOC#HXa9b6qB|-QoW9m+7 zF-C{b&<{Zkh>snRRe^*=r+0jF6Y~ zlN`2;G%MJY($)~|rN+B5ITIwUlT`Ny7+9HfIu25YZ5q*$pX77^5%QfZ0o_nnDr?=r z)sRS_V|6f)QqY!$wn`u{?dpFArAvQ(z`utF99lqDy;wk29aun?=Kp_OKvwHtq~6a6VV zna8qXiwesIt!4f|fW#n4V*?aY0tF0A642H;Xj83>u2{b?!qTRUniA>;$Y3a%sXAa@ z+Z+gpOs3mVXY6S<&?8Nc8%^Q`J!3$}$;a-ahT5_ka@>M)cpZeyz=ddQ1N%k(2+<@a zluep$TLGa;dsY`~HRL8XFc)=r!t`wG{Eb*Q02U13V&%ZuXb_+^#6=E!fcChSACnu| zP^6b+eG=^Hv3-iXC?`=z^0h0p0?*E$qX)H1aH1gt?@!%M+#fp z4q@Xce@Ld-pc9v5vdkMJ6N9qV(45B9P=$$%MUckJTaNQmzAFgXBQf7JOTp6yEMOdm zQu9io`vbt!;KQ*f zs=^&T)KO0@00kd0T%t0vfpgc9lWAU6Fe%DzuCWFipaWCVsC_9@8^;)G)CdSq*ygAe zs52|<&>rP9p-%ElhKi(f+(4XA6ZgfPrZ=A2wMJ%s1WhI^hB4Ju$&|&$riWA87T_(* z?gvo<(yNM!5x`@KL21cyfPAAC_9)r0W6$lYI*L*9E`zke;Pf=ys+YH?)uY8Ur#7X? z@=iuQWV>CIg2fFB2NjhyQSwwT12RO~uTN?QlxS@9XQhZg-RPJMnEYz(EOhloTqIwi zwKPwbwTY$6Gq7yysVh_Y_XRXZxvqyS^dtvxvgt_`R#7d}Dv=Nw@{ITB3A(`0ox{F2 zRs+b@9bLG6jZBlAD&(xDrQ9c=BAQ6TcA&myA`l=~yUL5ivW1X+O4NrHqq)qC>DB%1ZaL0*&Go(Tk@oH9B}Cn6RIIPp|>ESC>m4$>DR z?h3utI<1{HyP`y>%o3e5`u0HxqwlQC>zqCw=niAJ_!{CHx@~}vz$07}DAT==!;ic* z9H0!m?3g}gD88CZekL`QgSFu1uq;A(QFZz$B`wfY7W*agtMTZTSCSmDo3M$a$vB$E0o>wus68zhBJp$( zw83d%s4qPg!N}TTN_AReh-^mCo#oz2$LeB4072{KqX^=z*AYw%)3w!>^uUrel&Q*Z zma;&|!F~V+rHTAjYfL*9N|O>4$%$BZNoo?7$PTn`P--Rg$sxdPQ~+0;W>PmPgdY@B zMpHUYfaj3_Ar}l8YYtokdHD*QRVfrIO#3(nbe0;uxS(VgPS?1K;0BX~$g512Pv20g z0L3cRUm&iPlzTy0LnkEt_b~(+Wt=lLaQh*LI~YOpjYvFtsNe#x@%;i5bu<%HcTOks;MBG2>Mfqq;ptxm~%iF zS80^@^tF$L^s8iMHv!QDZ#eL>Muj($ozn5H30>rXZ71;8cTk8HV;>dBz=j&co`y`q zAYBd|*g!uc#@HCwK(3{I0@ZjTb50URHd$h9no(aqrTK-?*|lc5O-Dt(NQD5nsH^+bD%BEwdKoT)B}IaWYV0Zb{eDD9y0 z*XfQ(xsJmq9RS{rhL7DQr$L7 zBUy`MLf3fP!xB)-8iKU}pn|>zINu-_Wn4?tOLb}kDGSk^ixb-P>xdE;K#@UD>@6@z z5lBrE7X+t@UWvM)REZgq`>T^;#P8?W?9t(wa{kh zLj+#sTIO0$lH5vi2~}{rsko6U?R3DU!{{y0PE#a{h0AeBr0Poeh$#^+f!igaOv85{ zQBq5h7|hB8@poA6DvTsRW)MlVnrbdRsjh~a%f7-FfC_wy^GKRf->Uh-bWTyFn*Y>lvdT%PIj&k8=K+GBgQ<(Qq0``O8FW>$snEH4~~f!N`>^DQSfO zaz^?i0cf<5{Fbndb(Fznjt9V?fOL}v0n9ML!s*kx%%}rRVFb$b5j|lVDSHF7CX<_x z>M~_1jVS0v8S}bkZ3fXXjO-v8)86!Ly{O2_WVvmwQFQ63B5e33=V0#_XIH*+H+J}(P+O9$fw z2C+!aKt-Y!0u0g|H7UcEMI`Jk7Y<}03KRxuB>A4L%+Udu6p8GbR0A7eb(&3{gXgS; zDnQK7A}uey_1XiX1Jd-mO91iF9?2e%@EZ%tU!@I_w3gJ)G+KFG)JONm6d3gobfh&2Y^;ZlY)O-qlE-p{ z$=piq!V-@a2?ppS{WQVHDyK+uY@?V=a30eJpo3ll_tw$~(<5u8vl2+QI#BVX0^!7@ z+QkL?!T9JST}#9zjLGCY@K4LwQneZEdlktTk{AGwRK>&w>EPwk719wh#UhMET^zU> zdpKq(b(3GLlb>n8kgQG#^?(KBv{u(CH#-K!Fow0Zjfz^T%xKf(^XPtN5@96yHDox6 zMym0kDj<)Of{03e5qM%03J+})jr1C%lzK{)LChqNT{e`gf`W7)>=`m5HN~_6{S)&< z#wPfYS_iFJgov3mU{J&XW05i%buTH>&SA;bX_JGcg`yBiTLLm=34WMPNUz%$!OlWU zMatcywgMQpu#@!o#3bE9;el8mz^s#1E86qrIsg(StH+Kq$b#m#wOu1E!J|jyNtrIm^oq zylq+a2_W|plF&zJ!wUj`RSZ3;T%`gqr3RR>tdl`1outF0t)Z)f+RjeuX4HjgWP(xj z!8PltMjvH?7BVVFkUP5(MzaFS5y=jGQMo*lo4NFwoC0D5uxaWfN@vneKt(^5=WPce zXiT0{g1^zlkx#S|s#!H3g6W z!s@P)YA?Caa?3ivT#V%m%;1S4+)BPhM^j0M8I%Hjt9uIr2|Skds0$wHYL+rDrJ2no zj~&mf4uhWG8eAV{ws96q_-TGJt`bNHjBl-rBV(r`G&RYdA3*7@sR2T1=+7G$Rmt0icdZ`_knA;l+S(o#L`*MP!ne)GrkY#8PtoAm`&q(EtE;og79P zOmhFL)WDrcqDtaZjZ)Not8djRRk6IeQQEknPFtHOkzVQ^NWaN-OX?|(K;@8~PAzRm zEmSIVY^3WcH$G);N>4*p))(>%E1+FRgU>GeUPpJDBKdEURWOftCA52#G~&h&W+0r{vh!(*@zql_>%sQf*X0AVoCDPX7onTH@;5>qQkEd!m5+DiC& zX%0xh8_LJw$hZE7OB(gPJRs&eCXmoybEMhzlbq0be-4fOzM zP1?*-4iM;YL~+3E(Y=xag%-GhF-}KIHZJ`TqYOUHw4~RGU-oq5Ca@y`G?*FR{n+L@ z{d#%^kg|liEFoMfpoVd^wfumnR#>?d{AWFEHvrO7I}>Sjpyixk*~kHJhHgyDK`arh ze%O|Qr3G7x@O(-O@h_YPmXP<+#Na(+!RYUWVB`zP5(!82{z0^ZHq*Ppv zF{&-*P{~h?8eR3CTd+LUBVPx);0!Es?fGl+iYk!a;mhRw14O_=?##j84@!!269s=qt;!4 zUs{hIajt09CVViqGFuD!v%4(ET$Y_k1XwDpqKU2c+Jg1!?PV^?^o;<6HP?3I5yG%{P2~_VX5IgKcX7!A%t_k>- zQ?7*_VmP*AV9Q!9yPWD8EKg8|2o6)3BKx4k0-AE`5sg3q)sW=r5Nekq?ZDrnAwX}X zuehSm4>~^?F&%w|WEo0sxeVK0>K&jz3dh>qfn?{P^=jL2B^%f+bcZXF9g>kUfpqPM zP9hC&Os+>0$(}9agho@4wq&SH6~$6OBKOiA5{dMZwA9Q}e?7>HN40iz)#=QQQJi9q z%k=~(ps(of);jCDkGNbDMRi(<1eC~$;DfFiLEi)h*SJh&r6rOKH549{XweZX36)?p zQ3x~k8J#$i$xSO$L&KFd13{Vw1ba?7Mevf7MyRdHQdZpvcbw#JRl;4C!>QYJMOi11 zBkBCY7~W`MWW5b?KqJ^8K}eJSr0b%qI|xLj({WaGmpgiput{jG9^u=ekzLeBSyS}8r2CF4fHCC!ha{_G~1fvwdlSgw&O-%jIacLFzVYuJJ$*Jbmi)S`aUfbr&eU%p-bBnz*uV5D7j)aHGr!TJvH6%%GXl74G30 zrO!e3?(pxRUgob4`1kOD7pj)NTK#^Q%Yu%i`Lafy;gRfO$Z|_cKH{U&|Nrs&?)L2N z_TugNAJ-?*-)cHe9N&GtVServx- zNPkTJeJZnK$s}gN@{+YHb+^`-4MStCBoL@JUfhCn+*9D(z^hX0qzs@uvhLM(()x0f=bRI@z z!#LM4G>7EK{mJ}4^RL5Sse8qKF7zbH{^o6&YCLYyQ#YNJo>P3CY4P|g;V=H1B<#~s zmA{n*UPtzk#(m<#zB$i$vlc66oB1K-J5z?DHPtI}>67?tHtg#{t6tfh_$#r0Rr-Qt z{ssp1v~#p;z=U7GL|G73@3jNbGN&ikM&K zCF__REvDc7{>xw5e(KAv?8|bkQo=Dyn2euS?0>46jy{>%o0w_jUQU^%o9mH#rDnp~ z3_U2b6K4O6!?YvYS@*{l%a$#-wJU8IQ_fzoT$bN9ZpYV0X{`0r#O+Vs@Xn*Me48iK zis_BD+n{gVJ(AhUVBE~~Xn%)N{;n%dy-hb|*9+D#*Ka8(@>i{~9cq@>U|u(U%XjWu z^pxfZrP>^oX%GRNef`8uO^+HaOv1agNcx9+J!6|9{vF#Zh?tt;P-3PV%5v4YyF&Vx zevC`^k5qp}iQVC^B^PVfP@gQn&g`DQ{6`$t*P&vjBqioHNRME5@}gp z|K}$@WsAM|r~mnxPc7d0;%guJvi)!R;Fo>ydrT}sS+qS5TiJc1#caOTJx%#5e6TF} z8}X#Ws7(()>Mikqoq@jAqomkpk8VC zE@UkyMMH?fIQ(CFeipmI)nD^NhJ4$R@f>Y;({8o(5^AMgnZk6D-JSU=C13B}By@lz z4OhxuN9xq}iEx?ptNLpI_jFiew194!9dfCKO26X}9+esY(0F71t3S+1zl=?>dAi0r>R(=;7@CCW#y5@LT?kFZ|9BCV!OlhNB56p_baxaua+N3{14^{gpa!CY`?Es zJZbr!Wc#G~pV8jCvYk&g6W^CP3(pOd}$htFqw3mJaS=I2M@0sez~3mp3g z?=QT6Ve!4eTXJ8WJlR3_mD#xex_js1^=Ri8PX^?NG{0^emek?(FrbQaq(eWy*Z;z9 z@fcU(^?BlYQL}NUew<%V*sCbES{46`ar?F5;P9HCfj?K3dwmM8+jE#&w*7^dIeolX z$tldN3KQ|K*Zy_){AlMF_2P?T|6}D}Pv*n6`?|jgJSYpl@K-*ptbe`t3;xXOi-q7p zwhPQ_`HN>>ub+M0-@&cdz4wdPzW(p%LDh2)+FjJ-g~gs)b4%qVbZ1?rby&g`sn;Q?BFTTI(VMz1q$>J)+lo7=4wIpa5_aHaY#U%`P zEe@~yv+sm>xR8rW&Sj2*%(7op;g-$%Y*&m_Tir6>bpMNJRvGc~7xVwQ*IyENFG|Rl zMCywo_(hrhl8}E%DZHpfUQ|0Tsi_zB+DnS?MaB7|rhQ2@zo^Pz)cr3S3ojWLFIyuo znJ-VwodPC`t}n{szeS16`{8Jehy(7KuCh}9`6!W>pL(ZCf12iNZ=TC<-SJ)iN3i4X zqalk`s=FnA-4h#1ebUYkwn&u=-2K+YgbteF1HBM*90hYTrxtIi3?p4 zIwLmP;I&pZY7L|21@|Yl-?_h1o3?x)J;r>XG+D;t2D-|)>q z4E?uXt{xuW>xXG|`tW$a`uylW{dTpvyMCn4mLT@|`}JHF3Fm+ODgyW2e4 zJ~=$=H>a2M=N=_{;c}Wc-`%~pX3o>2zqJ=P?^kE*)9a(Z-K-w`zoWm^6T|BX0qXoi zZ$DbR9i*|N9}au(?z^Ic-u2@5e#AGvIOV^N{;#9|>*)VF`oE6;ucQC#=>IzUzmEQ| zqyOvZ|2q1=j{g6-qc16$h^tzT?(}%v-`#!_C;8>${rdLuBu}Gv$EUaFCs)U-A0G4} zUc5a1;_fy(xj6oQ{cxq<{POYignrhev`Dj~ACIPoPo1 zy@`uAae4CoXeEE%1ptEApFZ*W6Z86i+LPbeskCY2$xoZT#Ymf@7Z>BwEyiW!R>P`X zN)5Qbdw+6!Yye#P@59N((e(cKo3uzyF8Kn@C;JnVI>`!6{42LgZrS49WxKUyduz`w zlS0q_>T10?$#Z?~{O;ub`0VjU%W7Y8tY55;FYZ^XztImr^4UiX@$B?gW4~XWuQw0( z>vxY2tCQ97`r%|9F|E(;?)Byy9(BIH_>nDm(Aytx&sX<)-^0~PKRvAOZ#MeX-30@Q zsIREY+{!zdCyVdRL{`6Y!{>|gN>-CvF{LA&(>UP5ePWkkEUf*1;&h@Kz zC%2J?cx6wyJf7T)HS`nh*t_E|?=BuR{_pkwr}vE4zu`{fGDNn&(N}8;R$6|Ilhvv1 zsQgi%aPVj+=f|lVvip*YFq}{If=&7xj@&x(D|N3A+`Z@7-<)U}Pg&F-_089(n!R4w zKG}97O5!95+wtB0UR<&lSI65WXU^+eKa{KED;<#gV+|_O3ygwQ=W1PF>p$=8ciM!_ z>f-VGQ(k%GnZNtutN;G%fBZ`SYX9MXxIrXou0j0n7&2?Ed%8|_|Nn6S6}r1_)GmO<;MT! zAAkFsUw=8i)$3obR`Wic>BCp2?^*V%W4EB|hieTtN%Wy_zTv#3oRVJwIpv(a;EcE zr|+%KDTnx{|Go2C^iyv*@L|#N#l$p-Uz56ia=;OcM+5V&b?f+c2`FFq7LnT$dJ$^5B zZ4!GU!E07ibbNDqD{*>%_{C1M=$V7^@*X#Cf@zw+YL7F&$6r3)+??KPLk~5bvzIn> zXQMv)fIoMwKQwtnGfia&YY}ON%xQ-1bR)HCa`|kwdQY8(IB+#mX;H05l9XQA`!)h)}Sc*~$bLe@@O#14>t&_ZF z`O5ykludMh_b5L?KE%!O*~R4v2&&S<_IR0HdGtsA^F6&kZ?ENs94eP|Wxi(%{yd2s zy=ryzJxR*yMCmK^wN@u{r$olX#@TXCHQk%?4ie{JMf9RX{y%V7awoiM-N#ofhf`4c ze7ANUshyfDt;#i$_QHFt8*?-Gkbd~%$s5*C#@OjQyH5w+aCz*9$h*UK-%s~7`k3ja zURM9zj!P`ie9A??p$u*_UqiSymtHJ~8{k&mNb_ zEU$2#IRj_GTRQYA)cafh^E)Fuv(IG+AL@)S`_j+8dwh719q?x_KvsUx{W#<-A975h z-N`%SJ1ffKRg}L8e_x{mKlHHZ$qF>_2haTep_m=cFSkaEWf5LlftL?)@geQ@lN#;M zS%vM*sBIDQIC<60aEd;9dJJ@-F>+Tw5S@SZnW$bo6VFcOkX87}nJ3u?FTj(T=V9jS z&HL+9LM%4<}wj5YtzB-y`NapU&+bV`|IeL-G;!0hoJUfy}n}^fev!`K^7iB>CI;r@f*}rJ%x*11#Q9nr(d~n7=>P<^; zR(pMZXIa3DorQS)i$u6UEa=D?S8 z_=e@M!~U?+hM&r|KRB(Bf3%Tv$nGCDdl$`t`{z}&PxoiP`Em1bfBLGl%1>vL{*8pZ zUxTE0)oqwX-mmU%*AI8E$c{+V{3W87$IpbVK4$XEBzpQx5K>Din8 z`&-lCw{F(k;a}OLE}7I~PKO5fk`Ic$zerp@b&-wo6{cGraya|G+jfSRR*Z7#tDfe_ z&GGs6cxd?Ua2y^M36e1S&=wyyYv;RFuQ1>8kS*Vl=MVRfXSDa7SOr#?@P1V4YMa|T zG>BLI<#G{zvUSrO9E#6FUi`&S{EIjAMOhU>)rUv5{z7J)IcLy%>?`J<`Pk)pbGEv^KD}MtJ#Kt#diC(|Q%RT|{ZPFqntyUme-ROv zrLHz6eVUf|&;rc2Jrr%8;=T~5d)%z3qC9=@MURJTsXBgDKI+fkdq4H;!#Rm3QxAsg z_ygvuZ976>b$z~(Pkv!lk+VL(I{sf;fa&`9!j|YgWoN%Qya>jhjw1RP`~I+4by$YH z{9y7q+FyojPRkv-43U=M{O;^K7UUJH5LF*M7zeMyOTsa%f~#&UpV&AbDxoR#lrPWj z*YCOYhZj`V3FUJ?CiUZrJTn+<#E_Xj6h+)nsa zsU>3%y_Q9&Tm0?nVs-CJ_EE=ovYhX&F70q#+@$~Ko$Abm6w)|8Tr3w0BWzgTTd5ur z`EI{<@18|ky((__vYPt&=ANX7%jIHGs|fS=n|G(1)w!GQwYw&duLu|y`A?ZAKNKxbM*}yPOQ{bXxW`%Zu_cawo)q&H*VQYkBFYdn zv6Fp!++VL<#^ZNu?`K`iD|B#D;EB#Zcq$*2{mE_KQCc^LOK;{Kr1$ThcoeUn^V2NX zzs;WKzUU#24;SIgJzMPg-`(FmzW>1y=ee^m1U}p1Y zIOi^MlBG{;?msx?Vt>lN`|_iA`*jZUUu?=*{<`B`hADf8#dVCne!khWL8FiId|!XU zn^3^`x)WZ7xqoqcac5#Y`KY-UAKy3i(H3c#bMcBQedb(;IsfW6*Q+01A;focn;$R4 zm;ZisNHm=C^22>|PiEcB0A@g$zq2OW;W~v^8`oL*Q=05W8|kOJ4F57)U8JF4@$jI( zSu62LiK!Nvzdll7=T9Wrzm47s({AF!bJsTQBuv{RnzPS7PN+5i#zMTvU7-pLJFl8@ z>ZknW+5Kwu@p9}*GseHsPUoQ@@$f*uO*`|`{%U=*x_`y2cO#fjl9m59vaBfFW~ccp zositm`ge2r)koSW#fJ;-KQxh#7iNX8I4oc1f+U5T_2u>5yHI!h`n^tHS84XM%|5SQ zXQd^jpZ!Ol@_#Q$y|4mB{W@DMsoV;H*Ade8uU~~%RvP~0_umz3z`Ops+1GCN4>SgT z>=7tGzU}reHF>Mhsgu_neqXZjGzfL{d=SbZ<uZZf9vq^g zK4&LH^)s6QrPB&c`kMQ(O)mWI%lFsohmSoX&ufHNU-plixeHDeasC>QW}8}YGymfD zR;GXzGkt_Y{5Ourg(<(LG_hP%c(^GC^Zw(EzMlw*f9MFj-sGvQ8Zq+Kh}kpMi1|^m zSB;qKe;-ke=o>l@#tFBGcRDw;x~27(>4VDV<(i2P<|=;%)mnMu;x%q!x(#}LKqEkP<&8{zD8<(Xpx>2hc72yHy?B=qy348f}!7iar^%9qa|MYx*+ghHr-mf zT(yJ!J6ICrf0iV$FZ(Aa1$+y7q_l2NpZbnoeJtFU`D5XLC$)0leK;?^>#9}%wr8XC)s`SL z9(*>6?b#T%lQgK<*B_5OJ`_^yC#Auw&G6D3(e>jS@XND&6Nx_NO?cF#yc;k%Evya`&KWi2CPnNAh zmH1-W4@b0~tioF|m`4s=!3hQcSMILYXV0LyzT8-t{MqU0k6DJN_)=O1tAqTB(v*E{ zvfK`e`DK8VzMN6a50#k`*MvE%)R$-GhZ~07N$JqDU3up9wF8JhGZ5OV z8F=;P_=+x8EyEwzn>8W(OUm6ZL7{)MS)adRta*($S$PoAsyG~#uG1HXk9O3b=E8UOt`K%D)+*5h5q+3&BKS&^hKatJG5?(LTc;|G8&@gStwhlk?Iroh8sg>esSP4=2$YWc-W0 zp*vu)hb!xGyK=bom&cc!JBQH1zx1`g*l^olZ1rSRS8l*IqQ;=(^Llg=s7u z@uQ=9*w~}bn4aCOPfr5o+I3)da2y4zndsr^#Md6MWiz)5T^&pJTs~@}^vg$j70&$} zZT%d*K$<2nN&I$odJdrHxvZLt)0_46`V{Jd1qa8)@lE)4x5oDyqY?l>_Vy%lXU=B5 z{pIB~hwbEBwpk+sf5bg(wYTS|^U+ST6j*(IzzN&K?XxIJAW6;Tbe>XgfA#S2{`1d1 z`~LgyfvbIccYpcW$sNsMRN%k8(%%m^`s?~&iK6Sqp}M;dNXUmH5H~dvx{h~7rcu2) zd5G*5ZWy0N^V#=n{r%mVq5kqwf1Q5C-w*oIyJJ1+6b!Z~s{&YwjA;hI+r_Ua);mx>Rovk(-V5>vJ-8;i_zI^U>$N;&!IC+W+ zXyd3ecr3z&Sx6aAfngLRm>+iNE{rte_Z`j`=h~ZnzH)1DwRaHN;BbDUOGl-#;EA|6P-&%yt0_|XHoNsPG%S0p z1(CniTh@XrV=93p=Kb~QTKHXu6LIU?v+Kw6)hxzu0s(=h2oB2X=F^ia zk8kY6>815?MWK%ii|ZSXds>(VaZPTYoV-b_5%a{o!#!Z%bhwQSwB3&_r4a1+cUNnD z`FD=^<>u5&TTb59eDb!(%?Xo8XYuj;N6957v4$nZ@pW7nwMsaPXO0Nx&3m1el|P%& z-r=;7WYlIoe@K_Y{7?QHE~B7-Jk8BTxHA|2%G|F`ul+?a@)duxw(3-m@a!>HdaTjj zpbOpQlr72S^jhQA6R6yO>X-nu5?&?hIp4A#7yin4h2ph`Ysk_;ecU|U-K;k@A2#>= zQA%p%S`?i^*{p8XZx-EpZ|?4W{|CG$jHsZZ>G;-2ljZ$r7zV6xbGKpOMswqp??TmF zc-6eRzc@Wxz17!wKn{Mniu?(*{m54Lvx%~78%#|uv5N-FXvV_z27Pk1x_)ol7iA>{ zM{=uAEyZ^puD^%5*nfP0DNQotbJ;>0Zax9-U5lX^a)!V3t!tMD20utN9O%z+PcFkD zGTXr}`=#4EKhT@?{k>BwQC8KJBR$##ur7zr=C4vij@`TojvSC>s1G*#Vub+OB`4=-RYw?NLpZdsW*=g-);I!ElQbV%qs$T1>`36_*$em`+BLW2&FSkJa*> z9{#Ca1INE)GU$GFac82-JwKQZv*oZp-h8)y&vx>tU=*(og>gRAqdfjJkipD`sJH4E z(B1ua=$ZSw8{3XNsT#K(ZuD>6IsMA*=Rz}FqJt>PmRq#(gjRvf=|@ya5LI88sCg=U zzH=Amjh6*0$FjA3==tX-k*#|Q;H&P&wWC1t;JmwM|EYA_LZDnk9<*JbTq8uSc{NDM zZ#@y#tX@7fyW0V+*gG!l9nwsfYfty&2+2TUHT&9#%&xCzOV|$Ky&0H(bE7@`d+#`+ z?%$m05jxSS^IifTqiG-AW=Y7(E1yfh*4yB!ji)fPC%~O~Zk1C*iZQuzxvxR<5@`J6 zf6&GJ)LBWdJ%ah+P=Uld{r7KX4K0o0&VotY1y)aV5rCXdF8!P@XS}KP0t;rf>xS3~ zuA1QZSjVn+Nu2Ds4q>~XP|Yv6I{uYou-f+-jjP9FV;iTE2D+M!ho$GSR0saVXxF{1 z^~SBYRmA&zBkIRQu~}SU;SZI^#lg~;V9&I^HJxoi+)v#JGxfIGVhCL=g4io}3nO<8 zIj&~9te???dlP5<3#)>+6|kFez1}?7Q`}DNnxAv@*bibi=ipA|wt?2Z?P6Z7i$g>A zuUM`1aq9(&yT&UU^t?>$W0A<*{Bb}2;CY?ww!ObPHT&+tpI4T^Sq)~0A#hbH{V4=9zeo2mMGhwB;UA*?OO)Y?jSi zd*41?S06W-AE42v=}Gb!3}{_zd0YwshKYfI5qe??l(Jb(^KlIPtEXl!@N3p zjOi<`sd>3+b#UKFl$0rF^*dXOq(buk%JKHG-uAdM@n`OfP?dRgx(T}s$)k2>wOL=@ zuAIiUoi?YPg<2i|Leu?)ZQbhZ(N%oICveS?vk04siU>lT`CtYkNha+d*JoiQ6`-fb zw(bvd^sb!z`TlC{NYYlAS&`XUPn>|OW0|7on-fnqxd>uz>B7F%4R9{qJA*}Jj*shW zPakU5>-C*G%R((A;K7J~HtT=!(q|RcCCXyp z8J3$Kkfi6aefl&c!3G(BY~;C7y;JSP{)O3geig3tpj(q&b|>#R9b6Y65Z88KA3b{CF=^_Hvs zLKjP z!y6x6xW2aY?erN^GDH}xd}uL{C<`zD)3Q)F4B`K+ zpVlFw`;8xjF6_Oxh<$8!gBRo6?hQtX@gD~(_=ce0<;vf9tIzcjk0_7X@BM{2vX>Vn zi#NxQW^XZ~FXxRvNv+Dy;?{xO;ZrB*kMAr*@?IzL&AA7U4a0G!k-h2k{`}3IgUgjC ztrc7A1ix`edl&OFy$6}#YCTyxd-+KPP?5O7&Ue;@SxtprEfl0tT*@re)!BY{72bDd zCU%IPo}SC1auVM3#R^epzdT2nMR}PW<(UPF1KP{#)G5*3b7TITBgZiF@4@dyo>tH8 z1ut*w1UJW|j=y_uhNa()i$y)5J0-tc+~i-K+6LUu(RtqXMnYs`0^-WD1dD>iz&##z z)k65ioh=X>YSWgtAZNj?lvy)-i?cdD-ORdVUTHt?vZ$Y%H!p9C-*OMhNe|m0Vr_-C&Hs|RzVo-t)cbAvfb^`BiKfA-sAq4D0OmEyQs|o@C zJ>e>>4-Mt^J7@ev!KeI%?ETH%_39Tcp?VSWaz5?x#zgh~=Fa?uE7yE(R=TZ3T|c`L zyc|~IW_uBJt<5$!R_q=5e6c5D;u6)Xoca`5}jNVE8VWZdg#kDHA* z%UloCG3);~C*N6w`9le$7tQ}Cp`;HO|4U@_@)>8iI;!`a;Y$DeXk>Kng{EK;Y#z3^ z@ambMrrmX?d@en-R%ZSyPg&TA7C}bCy0HKCGRAPR=L&{0fxBCGYlFschOLW5mS%$D z)mq$drz*3IGkeEUt1g7edsl;Z;pEJAhS7(nxSb(+sPAtwvp4r9X%Wb8mVQfcRxJMJ zL(Z-RXn)D-=*iPk7cE=aX}z#;-qX=}4tl9tZ_~O6;+-X=@Jb&}e9m@z-kmbDu;GE> z%p|XaH<@~G(i2+ObC6a(ayk3R^}nC^=-5BLC&42tF{s%0@9hqn8S<$cO$|$#jmB{Uh1S z8@NsDt+)A_ZO8Z5dwDwk(2gSnRyyqH6$+i=a33WrM^ z<%_U*CaJExjQW1P*`}unh|UJ4Il!(CY#GJ;)L_lAy?xz_eP|V|Qcoc7Yh#>pBqA>r zYvHZ6dAggstqD1A=^{{jv6q~*VI)9N`S_bh@bxiZA6+yE^HBP(n`I3$7N=UD`EnfR zL%2$}Tk1odaI-V)2kWkAWOww9F6bNk#y3wd!xs*O^Hax19+Y>KWmV?J@=rVdu&c-_ zeZSrf|RCabYQ7;r(-p{Y)k+hoyDWSx4&!E$*R3wFhVaC~2N$VK@z!Pm5@D z!YzHinhS7!EY20=vBZ9Niu!O&@gz4h?iOu5_i%W9jqKYm|8?QUxN>XzYZph^l5P0P z5S;{P&7ZmrcFN%PZ2kUv4nw@GmCK{8R+feLaOF(CyX(8lAKj&fica!m?V~`kiCUwk z`y1+`sBOEZPRMJ=tFWmUKHu!B7=zJrso?cYZ+GD&g#VOPZCHuMxmVDU(?c8Fri+!8 z$Ap>;W1u|#!iHy0({p@sob9|{Z&usHx2^N#?j9feFy&ik)qQb0pNzB9jZfIDhzj4z z0erLG`692k_Mhj%eL0yq1nc=6$J!bN-s2_w_i%5HiV18lZmzaDj)&QX*E*X&h(Eir zRE!P9ER0Y-i~0VoUo0PLS%qSNi1H^_h-LDZi)yyNIb$yOJgr?-z|WA(Nhz2o`)CL9 z@nM!rz9{3l`^TI@R&Hl5Uf5kObVSf<{&@Ics=4IaK@+QA%*Nj3_Jr=(R6Yh6B<8O__!4ft;80WqPnDUdo%B@|z_9$36{yf)B?4BGT z_i`^MsWq?mAM97n*;}hQAYs;;887!*3X=_iG}_hr+;Po)8aS*8^?qg*zIEY@I7Tat zK1O9)dO7r*qhsF7ws4GRgmGV5%Id;QRG+MH3ecGaYhM}TR9)~QLV-7S*!$CvNV4H1 zRx9nF?k}tJRGb&~Zq01;p@$&w*zQRGc0m;@M7f%$>ocBO`O|YJf9BZqX67bdb5-^2 zQJz|5^jRS5{B|+TwVS0C1by?(AJ_K}kEhq4oLsm)GF2T8x37H-7Q}rh&%mSFmCzga zK@H14SN7EE6Sopsj>ucAx`n^}fc^%d;WV1G`2Fg^O63DbLioB}tG_<-g@)efcf$?t zQWPW&dO+Xeqg{D{QRz0r75$X8Ke^Ie4%+(0L0gBr!4c+bPZ#&y9o%jDVmD8?@Ccwt zE#~vTyHsTe-d;SDm5?N~EiCKA*Mh9(_}3;Rvey31elAs$`MJ2*=#8GYoJI2dMGO%M zHefxMqY(4o$y0AaO4l+Kb_*?r`un}CiXLeJkhKNBzhj&>lg9inegBP?=$j`{;>+^Q zt&4uK`*@cU*!coqfyi^eIeB~HLR3X;TDGxxjn&i;Wjj5Zu8tGk!kBj)-t!za$&;d$Wwcu{YH-A-MXe*$ctd`rk){ z;HY0t8{gsZ>v!LtWOXXJgbVS%-@N&6Ge&BiMn#J3{NE=@gD$Y&+73A+QGKkml9d0g znb|Mxlznd>t!SWkztLLQZ#~YgK322T`o)F&CI96OlS5P2ryJ@Jwx14f2%w&NL=qE4 zUc4o@LSr|BySsUWNlN?2b`D`M4&B3~|2LAD=YKGBo{DsReUeeQu=r4J6<+p1!$W!L zbC%qA{&TSS zFIQXt?Q+KtODfrY_SMfMH8Y<;F{`jS+6mi6smv1h$z2z&TDWjeif_DWZPZrIMKqp8 zgsMBx3(Lk-(CHJqW+6_kGV0QYD@@iWwJAocD7b#W)%oEQ73|Gmlu*H zeX}~fojcpmWAfg7S37F+y*J`RSNZ8Kq5Tb-s5G%ap6Bzr?QhH^28jiGAo3 z_bP2LT)1aOB?V};+CDD52;E)Ud2((W{;+fBH&zBY$3Hm%(qYJ+Q*U3NK0kdcT5<)E z+q#5}UGa-;3dAZLwufW>qK$L#F#jGeHMlipf|m2xEYzHZ+-yimiB|djnnq=PZ5o{B zD~rv&#Vh*exIM$tucVgjbmOy_x_Ia3A^z+xkIQWMTK<(J=c3z-lGh#kbmvBJq_YxI3~h(y!tROm z5eR%ZeYe4ia_*v`QhU?bDW}CPOoP98<;35`-ojn-0SmGQDS!5OeQFUbJJWN|j@>u+ zZZnzo3vD*0jTX!ls3WFO=OG|q8}1+B>-H94SM;RbGW~p558z93InoZ7rYn z;pIJgy1aTu^sE}+U0peJRdDFM&9`uXOd)9ry}KK{-Tgc7PIYLZzC&(>h52?F(Ft83 zMo+*uI%9FMn^m;Cn?d23FJax1-~6*Hh6>p<`HSUD*-Ph{DJM;26P)mGCEA<>UG3xq zPeVWM-NVBj#Z%_+*48o+Vo9@T2~9IME0j4?pLOHKT%YA`W3=DjU<T;^u6XO}KE6)yL(X`z0`No?d7?Rklf{`cp4iNT}V?E8vedb6NR zOxc5EwE4hZz?vq@D`gf9Bvaflwf2a2c^-h2X-rsEkmWjLJ)EwWNBKBvpk$_8z zB;NIo67!By$tCFMlB_uxZpFJtzjB7g+1<^J#q4}+QF8ZBE)RRX+vx2YKP+Hm*?3Ze zG~T&Gc(I!uPYP>seebbNKUqYVU1RN4K-#$UcB-`zg>dIiV90dG-R+#<2@zRWdgq!y zn%pY#bq8Fp`7-(AT6=Goob0Z#$ISX|%l2NaO5_aq=ecdJW)-$MnUlj8zGpU#Nlwi< zX>;4rhVO!TyLN?cAz!sD83_$979I|D0>K|jUc>WP#M`V|0ALNFd5g2>Pl{eXUk0nM z{E4`69T85f&EZ4my*gXt#v5TyT>i=DqOX0kw{z5qB32-v-Y^U9F3Ea{ZidG|!Jc*bM}(onT%+1lQCA5eM*W=fN(GYN5-W(v8|x zh2XfGwqUfOwC{JzVpF%y?rerxtbGUdIS*dT+g!$UomXoD@M+xBckXY$!HS&S!P^e| zaybO=xX#_Q!Fsw3Ik$}~3Jv>uvQr!Pd!L>)xwlW8hjEHpwoYW-e|zewJnhFHdf@A6-pFBH;sK52PV=C`?Pj@3r&&XoFKAXhp}jmsdbs>+Tm{Sl9}hBbZ+Yuny(hh-4|9F;MdL;Nec6f?&Luqz|nnX&fSNmqDR#y_Pw&xfPUqYVhRBFU3MI zJ_B0gj*A19@x{c;U2qYC41?Eu1tzn1@>HjDHtyb{46C=7Z|Ba&oz{cdvRLza6n=5B zQ*wB^Ej3`SCq5njy(g7+urU&%&?d z<8HS8yEh{IJ^fR-58v*Z4pE-x2Pf4qn4RfhyZhZ7R5d`SMf}GH2*Z}zNS$6-?Yz%- zFJMdX{&lo%a`9D*e+;2)Q`Osk^t_6nFh{&t3-wd2de2jNpFTXCo^hA{0F1)zpVS~&%X0d*(P!4`OJ&F-N);@Q!lgqnA~(ij(7XvXTF|z16I)-YFPPE z{AzXk=$;dD!5@6i3)4VRtuI`Q1o|eVdu?_;iM*JV+gI8O*Js}u@a4nf#RWHa^C;@J~c42eR}vwd?fq)BuR@VN}9uo5ts3i*?wQmAfvN>S}*idR;3{ET4(6{ z<8RU=woqaeATlhkclZ9ywNn#hYF;SU!8-P~oo@{b>9PQ(V_jc+g=`^v^WH2fm(jE2 zqJi&k!>=YHzj`JU6~4rKe{+UX6N}QqkQ|m1v*tGc5evwM767X|{AMQ`Ozmp4O`t5Y zEoNc(b{yYSv0Rl;Pg1J|d<^|bw*SBLHQzppX$fmXia-962vi6YhrW&(?8k=m5MtY_ zAI`2H161AGMV&%+`j6|?_fDC6OUX)7EiE0{Mmv=D{q^`eH$xY$+5-24(mBhC=v7*q zLBU(Hp_6xcu%zQ+9bKK^BLCt3;p@Yq@Uty|fux53{I{&}VwJu*`P9`0x~{=_CjuJU z97jH1->(d3^Ky3_zJ1kydk7!vWMmGBe19dDJLJCEwJ2`u)V5V${MLl(YA4aS-rshT zhbIBx#9U^VSTqEsC*P;x`|M|uxx(!At!bgB2lG_d`!WPB-2q)D``Aq?S?rKMoA&$E zJRJkJISn4`E+U9k%=+=9CYZN3*Q-nnd`)p_!26}P0@>}-VD|s|*3Pi6te6LN8SRwH zedFTD?q=C{XC}-SSB!~~MLIJaKWTAkv`wItrGtH+?Yyr^$ey`<~!xAr>J`&pzNBU zEc!V&W%J=3(7u54U?7vT8GXO=I7^y2h-edA;XMK9ko{<9_jUfY!G^s%edpSiPp@g^ z`O$~ZE%4$StGujmU-0PiwGNacl;=MMdk!Iy89w@C3--)`{o+Eq?gsLU`vCWL>2Hne z67mj%LsF_SX=i-rEd=h;oj3`Itk#n><5;>@l;_}_uY5DLpE>$>~{uYIm@g9DY~a!^Mmi?T|jvH3zJnakSpHbi16^>Msvi zdt?;b&PcTHdjYxZ155ZpIL2KVG6(OK9i1Krgiqfy4v5?mq4Qz^+i3Wo`L?!Zi;HsM zBAZ*ZICl&VUZvMSBVH|q zYO*tDORW9H<3h#G{TflOwU<{O`Psb^eC#*B9j7mTZ+PD<42ktp-~XD2Mf1bPulnJO z-y)?qGZmI^FuVEAd~<%YMT@lLAbUc|a1uV#qKXlrp@ z%x&wJzN_(SOHMJPIbJPJ&Q{`uylW^aI&)QJKF~Su5Lny>0eDVn)aF5_(IP~1(V4We z&d@Wvo(}q{w9ii3;B#7`@$pm zZ9+@z9@z7h>kTs-`66%S7&n8~tk| z@z-}}KrfnCaCQNM#vfRdI|;nIW2^&O*sQQ{J(HKXY3x`FXM(-G_vaKW zyrbcKW7l;(Lu6X~J%z*e`2G=FR%#`%t4my@xu>pyOE5)5?Wnc|o&Il<*!Q2x4C z|KHEvI?3j7YrZw>aJ5_ZKu|tl7Ob`?S5&us$jovTm^D7*b{owx-`?FhKKNk~9nGfO z;!&X_$WP5z7&+V#gB`!vOKe2J6}gztd}UE)XWHLhl6mreiT3TmQ0P%2-kyp;v|f8; z2@`|e~5rQ=C8 zb`1SpJfwhG;>@heo%5Kd+h!h9u)E9Zw!?j#5&!PW1IfE0(QsgouR>!`sPvi7%cm~k zc@?>${G}^wBG}M0EuQQmKXW9>m9Y5a_ovQzLHD3p4N&#^Y+G|3=xTyd8j@hqj{zzq z*mK)Eap|6dW4w5V3$ug_R+2myW=W5dY(LCG8{D6T*4084&}=&*UOc@%yRHR2z2S~9 z4TP$`y3zwO41z`1)_<}oUhx$R44S02N<`$*&GCOa@hx4SxK=4^jkbcs*>?HSA}Gei z9-7_f@x58VdF|MlCxHkhgvPEGAYr?ZAzINmwr2#iNc+XDbt|UZ?yt(hg!%b4Mfv<^ zY|if;y;7hb+V&6ZJauP^Zq}}{%cFcn4&^H=j`olOZw=5%*WZU9zcS^z10ZU_%WH=f zZ0Xr`DD+<$V1&n|HVbC`Y-p@BW5I9z=f2Yxn={L+%yrr}`BAO2cPiIQUsY7}KMgC7 zcCW{{&rk~YPxj_Ub3ENHVkR#@FGb5U6P)%eE(2KNDwK||pC`ufJ09^3Nt`FHcwze$ z_S!$qkEiRGXd0iU+{- zxl(C9XnwlS%Yt3+))2uwlAOabU%7A2>W@TVe+_|-OeA(bckS>yJI`x==fAstJcsbh zcHUwBfj?4xxoXfeT_A?2-EX<2SCEV@$%pt1o80W#vv$ZI#A^uF4 zRLg-*06W2L@`a%ay@&z-fkhnsY;r~Dn+(RyyjPF8Nl;vHD?#+WZoVwvOW`S zKNQlW3%=uUmTdramOdE(ukAEbxo_s}4XDS#~xCtSqc8B zN$NlNoNB!E7ReT^$En8WvOrsD{iTy=uDjyu_!k$e)%7p7ZjcYmr51MQ0$U7X+j_R6 zF+5w>Y(}`Vv8CpV_K^EsD(59*<6<{9=*p+IZ<;$cd_Rk)w%b*IS4-NVkT!AN(h`e4 zjNHHgXHdsQ2zv&od%)9iTn~O93+rn0Sqi%l?le5-eytaKNtu&<_@8#S(fi{o3L@7= zg6eLbtIl;kRp_~#H)-v$VTg=`cFH$*j~+9tH1fi4jwM&8>*F_XobA01nIB2k5LKBQ zh0T`y<>RS!doG$_POWd7oea*Dr5o+nKmKCj*L(7~&B+tC1dmfyH36sUa>4u>(4Wp- zAJEnUSvqfKattMRM$zkc$oyYu8ff8wKCmhEkS`IYnDG zGoe-@=X#@GnXq}r?){0BOU41j{zb;Ej zIJ!ytT$m%1V%-mO&{O&6f|74MEcW(DUb<-7rANAUx0ms|N-ST4GxKY^_N&K-2RkMX zDA9waIT?F?_vo_btQET8Q%k-t_@OA=2@=~!F77-)^U1}NMniY90EN*o<-?y*q2zYH zbVYAZckHOL0OQ^JQ(4G=a8LZN5BHC&le@_8SZ!PS{ptOC_Y0oa*e3p~tN4grm;1&u ziEah=td=%=UGqyNwYqgT`oa&w5}&&h``l%~oUiI#rqBGF*2^Bu&>!tfdSY%e>-p`o zC5k>;;`mZmA*gxfGwUV_*HVAyG!brN?B>5)O^hG!I*ixL()0C(85!9n5ys!+^8EU@ z9`-u5?xe?ec2*n(wo4XS+1$2x>)cs0OLn8kHLrS*zby)o9ZSCL@m8Yx;qi7c-cLh~ z*rVlRJYuA$UCRx;#_9)6vR&SvzMIYW-A84y~xi(=L;G zZZuA_C_ugVVEVij?*m%1)tlIzxxW4zyI3&uUC4W=&rCb(W@dG)y zbKjU@5oWI|-g?|>%P+{b_bGnt;2*4S>0$N$)1_%M8&y{e>oAvevS&PJ=`W(gpPp>- zM6qR;4@o7V-9v)w>TR;6op}*TQ5LZ9=CVcW&ahpO34Xa?$X$FI||E zHNi!_a|e6%!>QG)t{v3rY96zfvX^(x?3-PwEx<-ZrCZRn_Gwq>Ws+*W33UZGOBj*6 z$A_I2j=~bJXU}J~gT8&W>~LR{u6fK+TUn|$tvP8COiI$s4duBNcCFyh$FS5!qCm-p zu^8`|+hM@Lu6Y7{dTsu66jtH!cJblRM0RZ;>bn-)(t%1-2V21u7KIBZOUky-eUVjc z;3?OUd7v%z9Wi?=nwQn2vqw@XtzP(xWK+v9VQr;E9~z+bnzF5Dx1L}(cg_7~;qc<{!c z0kMM6=_!ap0rYwJ28T5rWpPsY1jHt!qPFzLjzVV@^v};wkR@-z6=WSKJoWJW;JD$Z zP8WLTdghJ_f$!NdzX%alSMK8BZnm_{7moVbcz#?G(M3m6gW2Z^=eyz7izngMWuvW( zDl1gfr@ojg<}MfE)oljc3(2y`BKx{$0>ZZSK}&6m0zF1{aww3;bER!R4f1aBuvw|B z2~3;=02a`Pod;|d*QX(5v5>$HuKLO|d|WKpUWiC;F>?$`D%!HG-roeUv~t&s)a94W za{nM{uZwtl`OPu+@oW9{|M~oX>hJ&j`AKBT?wjMc|LL2PZ;t=V*YTU?fBxtH_RYyB zcs`%}hvYw`|KWe@@Bi}l?c4v5hO3+vMH($#@$zU173#dTwC9TCxd!$yiDhJzNg#D?ok5P8^YJkdIan4D`#h&zI*H5uot}0 zDDE#Gw?cjG%CN7FfAi}vzxcfYCR}>(GY_V|_9a}Wo`B*aT1=Tn;)lSyVz}J~bmq$s zW~if;o7Ha6Eeh7gI`pF7yF8CQmj+2I)$xEEj?+6l#&IjV=Joy`-@iNk7p~s@@qckQFmpfsH}}&o zTy>H@ZEt<+Fl<~5{qp5c{f(17PCah@dTzD_gdAkJThUNrX?qq5GjU(6;`v997_>gn zOq5NU?%Sjvs1HhaZPJ_L<;|1Afmr=O1J@LnRd4SV!KV4qB5R%2W#TZ?UrhH{v2;+N zzFx(lnwyMv6!9lJ?bgf58G+WaMd}Eocl=?8Yax~N%Vd@^g1r= z%^xVK0l#x?Y6%A`@SH_Uk2dhY1-RWEXbjU%b64G62vc0&IS7K&(4=K$E7qsDt-CQZ z?do(UfnMEi(@KN_*LNN*Et)+L*9Pt(53gQa>#GGxmBkcdi>A+oA6A^;?AxVl6Y!ov zGTRo}UPcS8b|`;cl0abhT0ZL4#e7Dt4^)x4kEB>#lnb|7Z_hX1`0gx8%uk%Dnuj`I z3r!?Ry+v@_oTRBIfeWOiM(yVtmMn?mY@K(D;+eZ`0b{_bbA3tvdjq_c=T^sl_Tf4n z;wzb55HbT=kj$0Yuye)FlCi~J+`@E!<7y7Q>evKtGFr4zKZk1<(sGN|HtqfSZts$v z8CX^ibyL!(O-wI3q5*{D+|;0>S9dLX-d_GWnXt_JJiUIn^1&jHJZ9yu;VJ|pcAJv9 zIeoudpX7*)1ICmKlNKIA$zoX7J^)LFXGs6f_U@QWbTq&JbEw2wP&xbINX$j>r&ei z&KWu2lhtt=!#aKTFT00n1T%sWhLTO2zn`A9Kv@giwP_(Ma>GLR2Hui}&jsuQSJ=4@ zlCS!8YjGL*I?`YZu4k-$t0;HTJZp+{RSs5|X|c0F6=ab;NS|0DL#EX)e!);r=8}S0 zz57Nr+<9HgO(4Em;&>(%*XfX|<0VCsr9wrl6XgS}m8SYLCg+I(uy zmm2VDR|DRho(Dj^XqKb5PfYh}?o8Yka|C26i#Ym{4Xui71FJZi85vjGkp$a(9nh(% zs>7jae(c0d6!Y%`m`_wlgub+4_ZoM3Hw-1k6(ogs1yW@?vey(D_-0AN;or^4} ze{gj2fxvvJXlzlvS99u;=XTm1Zahwk8-Z>|v^Y!-Eof=Jn*aE;gvi^uVW7U!^a_{z z)>&nrTW$9~i2FKNO4h;Z3putW6aV?v6*2`w)EBzUU*k|T4J?Jgp%rZIeWQnG2#c`j zl%30FXr{1jSbXt!PHW$WfUkq3v^Zq{cz-|l-&}>;IKzNMcI{lg_w4%7l9>U#d*`TPc_48jLpxRmnd-8Vdag4G)SFINQQ z-!r2Uh4)0C9Lc?d9FZj#zT=MD(6iE82OGlDz8hvW z%dgGq`r?hLoZD01y5`cd#-p~M*71sYH%mQ(;sj2UB}?yo-_84RJD*d>lwGbapV(&;pF&G=@Ni;B|FAs@b_zLNtoxcJ#1kjHvEkv|C)yp>eiRv-~y;I ztd?_>Cf!0l&R?-O?S2{7;rQ&|l~D7w_*M?vOF0q$eeN3q495;$Pw)W(nPP=A@s;V0 zofeKu*AF)HA1`|S@oVQ;x0yxTQ11n%>u%IPcqdyE*<2-jX)D>XGv9cV=hPul|EziV zk8vHd%(;#-5H{Ol8gFraujP*}cWTb(FSuH&g!lKWKd$c{H@m*!+`r}`#82!j$38f_ zXZP!K=h~k?dIQFV%RQd5d;23FHwy&^3a|o?rmBa2dUEOGI?n3y<`TBx`%})@gO!n> z__C}%a(naID#6?JwTrC=`#Mj}P7C(6b^0w%$C7J%VJ2QY3o`M7=d?YrAyivo?6g*n z!m8ZfJ*>8chMsQd#uB(Qw8^fdoUQML={Lg!yL`>;B+Ll6>)YGay|3x~#(j+o($!pyn6OZs@ZdhmzfGAwksaLx}143ueeILCoLV924_+su(l z>pOjj%N1?SK0^qJO2BR$$EkjhQ&R3=87%lhHpl;X8weS#2-H^pi@V$OQ=bPmpoy)w zY&B2*+bo^8+R}4{npZY%Gn34las16Ur?(~*ek5A!)IGQ6%>w$=l>sdHT^whM4`Iyi zp({IoSUc9ZE$;msnxeHIt>>D-w(cV1^pbzQ3GVNEvmrvYc%baD6yFYXSN>cSzBo$C z{U|&H7k^f<<-^q+F?FKta*IIZ;%by6edUWVqbHhgrnfy=Kdlpv=frVvSEId5lfQnU z8O2dHxYwJ;WOd~|yJPd?}CzC_1})AqEPvB;|EpZv$N4=u~S;)_fs|G@_D z$eJ9`5|Me`#fCK2Z|59j=tm2Jb_ro^SOykKU*Orf+qpg7K3;)&w7$GVip{8SwT#=! zsDgK-7V}-tH0R!dI$dz>ZW{o$jR}kB>4Nk919d3Te%$%sq|Nij!+{@$*xOhjiN&!1 zweb@#;`HBn&EX&YRu?#L%7Zho^XUE{9e9%0zQOPxeFIHk-CA%NE?v#lLYaJP-NG|) z{{9{r`ih6+*wvMue=rCQvkaMP5*wPFOBXbCdDJ{*{P<}Yi$9#)xu#~1CBMLBUkChi zW6OJV7@wiu$)nc*7U}hkGo(%bY*VrtsCL+roIsJgTYSI5C2^O3!8tWUkA;BR_L%di z=yKQG)mElu`oT7f=MUN+&aR}Zb1E>H`mdKXC)v?6p5EnlXar4{JAAR+;o~h^#lrBo z+!7YpYUGxz-DP4wT5NC#f;s!4LT0B;{yNejx3ljfUn2UIZ-)x-4{~(R?`{?mLt?v# z5*Ng-@Us?ez|Atuez_&Ewm>0-H;JL&9%%3{26*v|#Jq@HeKiK)5?uAuC6>XCTDe## zqcFv2S!(VIoejE{kAJ(^vnA#CnR5u;H{2U;OmzI<;U<=(I0ic=Sd`sSNU2KI@sI871METdeA&!S;P2e;{;qd(5uUpk{+7ZroOOe5!{>0RpAfKxQ#Nw5|0spBiULwfmefbD zdC*VE{orFN4D)kY$8T^uec;An zlw))xiB6=xpn1I;E5(Cf=?R}V3kP{USKG{~IqMX3o#ts{Je14f(F1F|lp(a!6pQgi zHldFYpJ9B_PmfPWj@Nvnh*yXn_&YkD#}|Uq_2H!TlKoqmka>EsVQb%Hz7c#G_;9h# z(4WjYq^=fq-u0Pa)qRo={&9Wo$u#HqNwkd#Y;Dk$&&OZwRZCj(;O8XYSlWlqeIcH6 zXjN|P3`MUWOqGPN?;K;>vWi5P&ncQMd1lzj(oC?wU;TJ8ca44S+hda_gL^pyR;5Q- zEnnhvf$&YOPy7)eeBU`$@Bwm?ozHpO&ph*=wX7tJ%P!XUr|XB4yTj`*pB$GD8@7_u z->rV+rB9v96_m}@@z;b7oWz#~_@6R3mg%DU!^D3(D`&e#59QvjxsJvQ~v)h#mk_Q2y{$JQVneqS@j`Go&$-*;@)`{7tyP~&Us+YM&Y zot^E)-sMS6$o5y}$eG9CeYwv=5V<~FnzFSrS@yQpJ>#`*z>T#ZAKbKOJ9_c6YMPtS z6Mb@X;71)S*w30@SydBZPCLgZXECnJ1wk+(9#J!Kf{_5{N7_x%q5hs5ThSI)k_^uUpx1Qc&eB^X5S_kqat=e--RG`*O?lFe_4wF=)# z9KcR|v(~ay(tVXhOnq1l>TY|(53b{dUxy^qTlcW9e9aS44`UQrxLp?^2X5DM9@0#L z>k&Mh$7Xpgs(eGQ_G()#cXb>hNI^t?Yk))lCQ|8eC2Oq83*sKPp#Qe#V9Q4@;$7?Tg`Tz5x5wW*unM~=bDqemaP3{&sM>n7sM9qfg+*CTfVS`Sa0P#Gg|-ZTHBO+@UsQR_tz(^)A?Y?(WRFX@+n2HN)z8cu3=y z_ex^z3nEuR>1-Lswtz7~LzqrTllF}g9kD|67TOF5Th&q@PkU5B5|AW+T@$FTF-4r4~SfQ!F3DOS><+h z<1_BF(Yb){3ihWCuDDeS`ZjP{7u-H`$2_+TGAueK4$+(#fsmktW(J!RtnF&E4z zdr2d+ovgtA+*MD7lRTrbElPPk@S5uc-&QCuGlZdQdzU@f^rNTYNiqwwE*|?^aymE1 zF5%|CAO!k+zqPfUg{Lv@9e!QE0RidY>iHm{C8HykN=xcz`$4Rzm@fRievr~SkepuB z`wRw;Q9sbC&u~8Z!{@djSASr@-$)^TVyuH%5hayjs_uR`+5Z&%oQeOG1G=$}nQi+> zQL71i?jUy!i%*IC?@;`h|B;CFq!K@L`Xv!c?&Z7W%>7|;hOR#!`x&7^DEjsX3 z+-A)#2gzwTRKdUAoY3_D@Tu$hVHpyi0x=GWP;hQ74~gZ9*SFFN>rh_ohrC4}vjw!j z9OFr_A7*nfTKSafww-!m7`V)$qeNTZtglb+;he=RSzM1@Az~uNU+pV*P3=wxv&`RV zK*~d@{?*Y=ss7n9#A^iPpS#{RcSm4mJ7Hzz&(}`Oyp}VO=Y`7_yN;IUIs}sC{oj)( zpDw}0wpX5<^yYE39bRBE+pBNl(0)Fn5TcbFevHt%u9|_jY;zbP^S*-ccLt z%zV8~EI43}=VgLE6s3)!z0V&)9IT%g2Npd{>x%Rg`Tu|Q65=RJ4CymSh%AdgnAzAp z?ZrZO6kd0bF0r&#CxtqTICVNUEG!C=8&?AEth{i%l;Se(SwBJ;h| zq&u^q-s_;Q?_JknmeyI66|czPJh7dUnjBE>Inx&|TWEB)4D&L7HuC@loqlR*PuHuu zTJXefy|+tiBnauo)8%xn_0)HCMlQ91%6CPR?z6wg`dOWxoADF+*=gJMxS>DZ=;Xe= zI+*kDO=fGb*8NI~xQX019-0EHw^1BNGH5}vxG2LizH%de|M!1zpclcvrT}vv%73;# zTuVk^!f#b$jaOEGrXQ-_Pf1%2ra77mLP6v23Z-MF2raU1O}6> zLC!sEi`J}w{%qVCm%fMPD7WOXz2)40%efe)!50Ce^ zp2EZC5hS;R?e&L?7|jjL-{yjT8wGF3r4wAM>+SL1{|0;lNke;S2~aT4aT$@#%Gi4= znWS-^=C6<@`?oAGZundB?Y5~f80uyvUm22p01H@#o>C*5|7ORZqjlAthK%}~E#{YJ zs&<80F4Fk^`f(Ei%{cVdoNBaY-yBQXlzzIewMzbTfJF$#(5dqS{Xt&o?yeVTE}=kX zzifZkP4#)6GOOIaeR;LMcnFjx7wF0U&Nl4+?mE1DxdcPL3MTXR#ln?@_&2tE{73hj z8Im|~0ogl#$?wiikTLHUXQH+M1SpoLez7-;Vx^V$x|c!v0J6Csojtww5&b#rx`)RR zuB{K5AtFI`FbTTn*1N!-VZa6S3D;q0{ZRN=>$CO4+&j-*4Uo&L8C1@yYYh^oy?$_9 zVID8aNeq8IueJciK!@J*!|v_g82Ye(sxMlOoqFcRMRQo`^k}*|PN1OY9Um?~+qquA zr+B{P1yjm}kyc;LnDN`B$Axufx(?JC0(2(%(rLMHbd0}GlHZn}`PNE)GSafEE{}h0Fn~r5$eF!= zy!G%PzxPT&#(Z7+5?^-+&S#+ic}^|!NDPuI2OheFLS1is0hm8E-_M{7k)r`|2)+v>{UAJ_ z6O>ox3*S1rIMM(!Xz-=Kf!oS#l>6y?P^}{^v{FR|p?bE(`SlpkNHL3H&iuK)wSHj( z*>|}<&uGr4S*T`>m5_t^|R~&tosVGTgU!w0fx9RT11DS^42*53rG)Zvb?gT zl?}hSyR`~dw~`VqcbB)ucx4jxAMSRSaOIt7hnTnMHM!bT7opYl%2qa*+zyb&9AR4o zS8sghfHHkop9A^xTk7kjDTHvFZB1=50X&JV-OD|-XEy0RYQIxWUS(Y@<;>buNFx;P zkN?48iTLXBJX505v?@mS-*y+=5xlOZZ(CmMobWC0K`;j+2V`vx z$yXj=`(lfJ66)TISI~gwi&E{aV>tndiz{@n(h@|;h46@?mP7nN~a zxIiEYT`n`O>Z5CPI|%@_jtlb2)24*)xcJd6(=*mi;+!5UNVeW9o&BX4{nXvhz`MJ6 zK+>HW!CB}czuN2ni53Oq&PhDo1n7<# zf@4`?zM9+Kt{+z$2UEJlzcEhYU_1I6=y!MbIPptBi8M1{A^!#dH3DkFx8X(LR)741 z{VLi+s5rY`U_yADg(RcB5}4Y+2#vFe|2;e9-mwVYr;UNx z&7rwCJ2+$&;VR4$tnw19b^16YA}?HD_tiEmF`F|>Xs)MRE-p}5B#R34(kjsXXScrH zQ+BKMBG$!?nv0}1K?1t%3l}A{kEV44taJ7eX-Z?=Ns9$>Ed+2s^{fw*_&Cp`^x2dk zj4iWlK85p?JPD6SZ@6+W=Wda zy`s*Er6C6*`c6AA7+^UnSnP))nBp;Fn%E6*5RzE1r0*)bF%-FDF6l*F(; zP&m}8kl>W1)#ON4u9J5VVicuqWL7wj?$eVz^7c-bkV$=P&enp>SRX?AE^rMtn}tt| z*SZ#^nE!tr)^Lm?k-=~(sbE?PxVI-SEOJ4cAihBo?D85&Fm~Pih8MW8$(IK6du=81 zFlcykR7F^rRqb{TIPxbz& z=?;0OPcFQ>%aUZ;gCSv}w6vK>5PlB^T1_3M)9afK;>k#@cE)rIfp(xxA;)){Hz12~@Yr4}+q>loEtc$+5g?KR-`P(9L$S`CPms+Mugg4V zgQ0JvsB23Oi2pzjFDjMWsmaXp3qv-|_8?B_tD)nhV1SM{pfG=`SIoPEEnS<##pWh2SI2&m;2-P5)1v{jUTasmCR^f|Iv)2&{P&HCFLwj;5^r#Y=5LOS=g2e`ndf%fJ;+A zt{r4k86*^---d2-&ePpX4i%8iS{7GzLcv{%WJe2vXt{Y{!lMSNH=Y4)E&T3&)`kv) z-NDuqtm|gK?;RUj6tMXL4-~~$@hMrHAIJ$DCla+Zb`BKI`O5mRs+2A0B1juxb&Y>v zW;odZ*GscaLTgLqNW^b7modH~L{Mrqbu_n2Gk+j{L5mNPE43AM**fEDM}r#s|GZ`K zE;>{g5(R?$#leYV9V(oT#?&l2bX6+J%g1GTv8d z7M^NkrCE>KaXNF3VIq#E@$C6o25AUEnw>tUttz25!BsJLTE52CaCZ2 z`ys`bitFq#A@KL-(2}ArrlZl+F(IG=_5qb%3Az)6s9^0z&7Wa7i2sm68+OStSA(y8 zD+8CEIq!Y*NQ-RqB>9eax{%Fv9)@#jp^cLf7p2i8LlX9Bf{K$qsv=nZrv)hj9(ID% zntRv===DI`q4SWFx%E@p4{6zP%tJ|Wp8`x(O~j>9~#@d8ow@nR0Fy#fJ}ELQgz zRbxUi_>)-{c&#^~brRo67RS3=iCab2+{*+vz#YoH4#!U*1w93ZFtc2=0rKxGW&t78 zPIiRGh-b#5#nt_M%C8WhRSdGB0YeXiXni2LBr7G-m69cQ-Q^7NL|(gdkX4F|Ar(sW zvbGF%c&}^f&=C3Hur*)j%2hZ=1|W6Au{?g{!QgREXXF%opEM5%sM_<;<)>jz?a{Np7;eHf}G{(6gWjL5sr@PkR_odrzg^orfF<8 z$R(W9Hz^@>@x=kY=lg0flwwJ$VB$ zUg2qzgoQww{0sm0dc8K+ozdz2!co&dzBfNdw2zKn8}#4v+4lmRRPN)7tw*aKkVz8Z zM@aJ1swILb?wD$mbfz;8pqd|Ea3GjbgCHE4J#!^@&iC<140EA6B3?y88Q&r{yG_TO z^F*BX4{8ZWwHT%8<_9`z1Wdt>Wqet9KoA(CQ7h(& z(kT!NZdBK%CGfF*UH7vI+h6mE=crB##1igEZtPgZUP+f5R zZSmMlK!eT}+CmGp4jLAZC!=;0!{48zsSw)6Q{r>`MY)|eJ0hH+^cU>4*%yx-?O)3Z zU;;GI0{nLm&5qtP=xbF>Kg!hB@F4aJma4MDE?&>ONL>s+)EB*y<8ilnAi~O&M3X2) zS?7g#q08NVi-NZ}%$_XdjyVchvVq2P-mS9#%uGV<@fRDgz7f;5MgHNfhxe)J-#+`J;&&?&%dGDvtIyz5Ql8I{rmZJxMt-K!) zSmR+O$}h{v%Tq{|*lm6RJsS^b>miY^W(ZCr$MX}^8TTR`MyZ5fmivg`Mqh;t4FCPw z?jp%13h0xD;@}*%Ru>HnM3T-F2`9DU10a#P4gu)+2!lG=7Vo6R{t#7Q{(rtOsP&%Bx4g1ePjh4`g0 zs0Zub8n<=tH@bPk8r0cHR*f(UHE8m&H*<}Ll?Au3+4F;Rnoc1LsETS4l!CX@73q}BkW`eYQQkn0W`?Dl z2}C&Ouow!V_*c@t7$~E z!fUKgQ)sGfw277xda0`g;$lzsYNcE)BdACFf&vTk!T@8PvL2|)@mSF$V-YzvF~*ZQ z+YZ{dIC35?R`Ox@Aj?wP-9E?{UQjS<&N)EK8ZNGIkozF0N^!+)L1AB6JCa@+UZpEp zq};cN203%t_d?5cdeY#;Z0Gf9RpuHjQ`s912n=mLc)M6R4RAJ{?5z9nBGEzkq`Jn@ zpew5D@gOR_zhi<2a@+)Uj4kCe+QYRF#IR@zf77|Nai`=}&}AR)Y05g7ot;_f9e3EFSE z`TM4T)?oMc=VrEi9UKwqD0v7~mUqd5~+jCSVwl=**ily4>G z&p3bYMQmR&edjAOvNP>|VXRS19kS;6`jh`3_otk(Pi#-W=4Ug1`vEQAbSk_&Vy7}x zALVEC4t!FA__wuCBUUJrqYOlYGY3M8M64Vw1BF{hRO!rP>`K;BSO$2^9! zk#$U*%$sc*AT`*d)4n!$jf_`B>&>zC!K1J;WT0&_0RsxNF zHu@}7QDYS+$@TG?T{y_$SW@;gYZxiGGfOzuC0w)*eS!Vk8H@xpxZpgkD(RJu!9zyc zeySwhNCq!Vh@GMNzT;639Ho8V(|RqT{_^Y_-%Wu)YQ3>p3a>mmae?RB*K>`s+&r-6 zrok-^8z2efzEQ2(fxqS48&*x@)uyu!XY%t?$&F~{S>7y*a{rH(Rf-xf7?05B9GFvn zLqK61NEGKQQD)=^Y`LAY<8A;}G63)7NmjodmfSCs!|c?N?NS8n5^oyEs6Tk?f#DZ^ z8I;gJd=NGUDaOg(H%xJ(w9StaGb47w&$#H%=XrQ(#C#BTNA4wG7$(Cwx#r$*tbY8S zX!>d~c*cX9-0{ow=2iOBw|}MQ{ra1~zWm#_!_DB$k1zl9yFdTP4=aJ8G<>#o8-D)fV9eooi39k35jvR_SV6 zlfmmUt{D6R`vJtMHLVAFi|rRWR`b~?YL6A^E%i1nq#JMM2S$rA&aZ{3LIFObc^Wh; zFAEz`Nj0f#_u5*QmH;#S%)NaC6VK*HrukFHwX#$PwdFaeL8yRCtT619j76by*&H$x zU?=Ewq~H?C2iDv(4?rPL<)Hv6RLwsGSlgOCFb(+k;kaY9M$WcB@Zpxmb2Cjl1pF+m z_{;Kd3wCt4i3X3x(_b$>(Y>$4N?PtxiqmECqQNKiODit~z^rQ1I{7$X7pxkJL3HFl z82k*VAAc; zpjg!FgSPEq-o_cROY!Dk+Ra}z7ewI;DOP}l0JS4Nh4`G2V!MNY84IJEqL$@v=qQ_(5>-W3*u%zrFjsx+JbkpUM;d|$?8lDcS5IrIlkk;eRW;bwC z9UzeXcCqIz-!euiqd~h*{+E;W>Y5Ht9=WEE%3b}wfwHtKp7M6wAw{xM;8R!8+=#5p zU!}W{w|C0uOYZAQpmB5V`;3YyEjv-IH08FRmFPM4i%*{1I2Yki^PqL64b73FJjnW? zp%>4RrW){A4NCq7Rfd))W1lt@shFLzHj5dpGK~|fu-rYK;VxTGCvt643Qfmxd)Cc! zbOmp&pe+W|8xdNZKeN+G5}teCzok3|Z`&qYhueHn74-gWP~{R!mavZ_Hm$BfIA`7o z$J0rdck*gu7CLy-`Dhx2-d7Xj9QTawIJ1o34{!ira4DnpD$f-iWgN|!JbB-p-|$4Xz9tBoG@7}O(e#F{S69$Ce&}Xr z{IbBfM_G!-j_$b2R$yjZ*{5HD7jy8ZRw7a;Mf_Z#*@%?SP!J%JT1R`8LPXfT$Slx3 zBtpKlj4=us;!6naDtHWSH0OQ5U1m=w}Sl_9(?<9>PftR4_#rc=OQ%upB(|8*XxYk_DH)%290if>f zq*=puQ&3@-?WU!MXoM|QUJXP;bTzF*tVy>s{eOR)*j5uV-DtR!Gd_jxeKAe>7jHZO6`$*UrNkGr^Hd( zyNtXbrr$RQ^E^yRXq@HAB&Lh?kM1_+jdpUeEkh4YJU0nl?26Pe{p4t`lTiulmN(qz z^gQ);X~Gm-suBd&JiYBLB|Ab!-3%UOM`Fu3&*LZ(Tl4rfvU!(&kpUe>yT+B{c#_;k zKJPBw9Nu`A&O%r0lTqsobnUn&yOp$eu1#gXr`j|bk0}=|oE>|h`pcT+R#6AQAh=YK zR&A(Rz&M`9P-?JHA}|pcvecS5yl9b~8DIWzcf=2cGJWIYpYaS23fE!I6V!nK|&9 zNr_HnhLLh5Xj9X~OE!q3qVH-oOA(o+%rOo%zB8N~`xlS8vW?F#EwfnmPrC!h-popb zV_r@_tApwz5L=6iUpkp(vm2k`-(US@ci>iI&K0wc(tF{ajbaYUj<&E&Q&D;=v@qV9 zXcMRbPhG)83R`kjX}UDebT1{Ef_vnK(qJjFTgVPaatPQR;`IV42^(kwhR~&EIunvj zhrA)O5?ie&IIpU7c`DE#z7=os;LUWR<%~*c|M{u6fO-KRR*4tr<*YGU*|<@$I#`;q zi(P$9pJbA`^HjU~ASFw^gg8w1yESiq;o>xLIJk0HfM7QDI!YjcX3MD_MON7;AuATw%p!jD{Pz)C}#!*T0z; zSOI*(CqO!yjcy#E`ao3&7ejF#dM@-y_YA;;-JQ)MnbW@K?12u~)o%HoLiepI!@m?~ zypn9MLl!6u!BM<1nyvKVQ$=JC7R$@w^;|G;%93gu{}b__sFeWPhE=-(L&1U5%}lRJ zT+U7yfa5D)ijT9!jb$52wcp2I*__pbH1#5^;|=+RP>?$8#Uot=y;q}bDo@)x>n|+Z z2OSx;H55Mn@w9lb4R2@_IZ-c78Ts1jg?)AIb)^g|Qt*lbNm4|D*0K;3~PK!3*l8HZ+^P7m}9jb#=rKKSoK8KAV*kuR!(u`633p+L(B zreOlQib9)@c$Y&JpeF26!5sa~T5RIjZZn!2=_#e%#jSx01icPeQCcU=rwyXxW(Az9 zz>M6ma{{A*QY_fdrA)@x^g>^J`-LDE(R?gErI4d9jzcXK==7EyA|RHF+GnwtSW4TZSZPk2y+efXD?AS(1`ADm2ZY)2);7wLZj!v(% zcw&YM&-l1;ab`#%nCOx|YKqiP@rdQAc`g=a`u6pK`p>@j)fdbHtkY2_2z%izgOw=P zR5H^#Nx3_kJeC2efZ~}FfVWVae8+SO_3@Ce(Ztbu6hdCeXo5>V_aY;%x#)4FM;aPV z7>s2c(-jy7;wc*3W2*a4m|`F?dl0H9*Cte2j!{faJRwQ{2dITgX|r+#Hz!g1%h?y?x=v&N^Q&U2X)Bn@1v`COE~ zraL~$cRN!yR1Qv0&7 zMw;6I_mc4n$+YuR3!>WHqjK(qJbuYH(_)ke@A9&+DGi3 zi2^y;Q~H4KqRU_3#`U8#Ztu3WJ%d7P)#W9yT|&|s90l{cRgSQ<&}?Mwdmm1@lS3Ly zEM_fO;}SG~gx)UQxZ-SdlaI!71XD1ktHFOz#KM>>x7^BR3tAY36qWcgxLR!tzS+>A zCFaEB0r>10`Qguh{FakLX8gt&KcJ~?Bf!0+Xeo-SEQJpzKJU54_JMIia1 zb}*@FU1Ty}+0K~d;Pva~{-h^y1NMRgEjnW15jZuRL$%uPLjyZKI5$+cUQ-BM zoaQ(}lRrZyt`@PcC{D+1oEbqCI2v|+@Iu>iXjI#&H`{DxkkhQqiq1K|S~sas-D{Lh z(=9I{8C6QIxn^!&MUF0$-5A@fT@L=8?A`ISU4TzCo{#48Dz}-qJW^cT;dpwgwY>>E z(q9}wT>d1Xq^-ROtx7zmq@5Xv;|b>Xp118DLTo<0b8sL`G)bL~jW(g$rPWdO@n==y zCTrKWjMSl0dEpa`FjK%hR`dxDC6-;WsHiWnvl{D;j+=<`5sZmg*GHymyHo{{)NI-LSYGF9kBd^|lbASb4_=W6c_yIF>Z8LzD4@Sq zhlvS^U56=>H9I6bM9M{2XZ?+_lC2WQP+2nXZ^q{Ze>O~?IWtCA4)GkrKq)lUkQ%NQjGYtZIw+CPt-?A)7z$CDKPH*s#2+I z1f@x2uYP}gj}ASbDV>uQO$UTIrgp^SZb=Q|$5&Mj<{*5QS<_r|;1ZXl2EBU$U!o`fKLwe{5=)$*9ecj^{$>e6Zks}&6U~b9EeJ*hu|C@L zyKQ~kK{?bJqoGg}FZe9h{a0u=dd!UdXO>TvAs^XZK7aqK85UU&*?2zftewFNegpnY zluel=QQ-LI6SaNt&XH8y%TX&EI+2w;~QBiqgp5N*h3We7Z; z2HOdoTW0v0Uq-wu8l?~59vQayL^wBMOm(HFqV(UqGczbKc?QS9wsUk~2cUQVGs{vpRxEZKdVjHY*!qz}Me$eP|TSjMB7mO;?us+W=d z$f_%^WfCebf^r`y@@B9-j#os20=(I;z2QQFI`klmiR!lY~XgDeXyV|J?@x;xTt65(LP zD7rq0)&eB}0T~LtsM2?v$9cznCx@%K!YXX!L?oS%Swt2pyWnT$qOv>AiyMn_BAl~Uw1cjfZ2)FowIql&R z7n0radptPgB2&T2Nqde5d8;Bp>Fl0242o>0sTKtxfIH0jbEwrodmGC*&~`hf<7qX#^PacjpwH{q$2{Q1Uwb-G1nadx zF4)Vo!_EnpUzBQBSjgO6H$+9IhwHV<1|BRMOJIw{@M&wSbdjSqPBN5B4mtVD<{rj# zc~%wROg(Hzr{aV8e}4QGE6d7upsYl`LDGlzI8l+a><+KgU!2=*>yK*0!-_Gf+^<$w z>ykLJ&@rjqh@?3!BuT)(8$4BuL#`1zw3(2q*-^Hkxqit|)CGO?=nh~7j;>fMN*nq# zMc!QJkqTm|U&};nmg{TP`9|fm*HyYSQoRW!K=b&)a7-rgER`4Tjfd>4jhscZ5FQ=4 zx%U;25wAolko#)8nYME`8&D46+LRvYPf79!@ZG9~U1GJoea%SQ@r>Gerx(ktcR|NZ z-dkUK)p%*`=bd8-eQg`_K#f^g<9IhQu>?L8w2k0N=t})<6wh8-0)7)bFAjc^Yh4 z?l|cICzC+xrTJDh_~PxFc!1NX_r0Mc zD8Kt}^aJyE`XzxT>UHC{^n*9XS^m=gi%tTw?REpo&w_dGf4vya#`7o}q22uPkq3lG z`{_$XZM^C|{Y_p?WB3>ifGHUpe?A+rNB(&JbRsHX@sKW|@zW-Jp7NpbnZN zNm7w%-wjs(A$bP~*<$Q|w}3dLWMJr*lX+&&T^ga^{Ks%?T%BwNTnf$0;N`17Kg=eh zm}tTmN68CsM3aO$&TQ`%5q&M*z9s$!;n-L$$e)92j0?|Myu|$W4PWLrU(m2Dh8YQ= z&|m+@1O0b{|E|y#pN;>3`S|_|;p!d%a`>N|K^w=w{QYMqa!*5%JDm&d$eoVbe_m_c z#J0x4dxs{Yu31h{c*0*9kiGirx`~40y758;Ezxm21ivk;WUb%|yG(v<6QfNifaUKg zBs&j^C3uY7iy|2yP`~^Wm|i_^U_E$L59@la4LWKMxt6Vq$cYG}soK`uT?C6IJ+w{4 z*r?`us;fe0ED{iwj{&VBiUu%|H0>>wO)M2q>dl1u3xph?P*s&~X&$*! zL;2zjJZoAe=82+b5)@~6ALu>61$Xp4bj}+9b*+AQ(yFJnl@JQ2mbyOWU$XtcmssP# zF`^gJF-s5H%+8@tcuj6RFgeB(!{@*hOBHMsYfh)>y?qVI*!>^#x1RUi?_>fg{Q?ZCz)h@HX5Y*t1UGwwQ$AL27tdm%a0sd(#mHqr*W>ap~y*+DQb2 zZl%OvLLpGd=5eRByaJa37%$Ws7EO4R7Inem%XPy;EE?&7cs`Pgo=NLSGy6W@xU9oo zn@1{6O{~})$xsqAi>QUiQ|5il_ZunqVpu%F_z2YJya;i!Af>6x=7>BschBY8Mp0T? z=4v1;&c<4wwri$PKMHfh3OultXavWz#Bz_CD*=s;W9viBJxOHHjE_}sB~c_(u+Oz@ z*c$9Y2D|bT(jK9UJUzE3O5R%&+>$67Yhxt34s-50ZLz=zrL=9+;53m^dJB)pJ7qkG zyr-0$$5sMOT^ho|ay|rO0)N*s-Ufv&@s0+Q6VOA z_hE+YUML!uzZZqSc!GN9mOxjIE}AdXuwar9O0GvFP7>#0p<6QYTrBpxNgG5WaP-4# zh7>7OUr6VsyL#u{}Z^~O^L zG94^gLD6uHRRZs+1XB5ip+B-N{LY-5YjUEMWU_Edt$PKoQ0t7NJxC5CCx zsc3n6E8q8O)SNB=@p*V@dR4tN?L!Vbp1Xae!1V8R%`%3e!8%UU_{3NlykD`i%{_%j zTVRZrIewPhqRl+R-f6(sA2Mei+29puR^Bo_p@sZ`dF9Ke^{IRi0x2|2)Y~sz^})~TM#1~fiC{y<6bTb@CD_U{@wb_BG{>qZ zLNoIbX}2_y;k$vO@mxlaa%EU5pegvC7i5dFqi_wx$i~E=IT3{yf4LnHw&{tuL+$i` zw)2~3bD{CInb5)i5>op^4mcdTV`)6yQ@90f3rg%CM%J6(cpH__F-n!Ly+bwh5+%yV zdym0(YCOx|X-2~Qs7E)?Y{YPeKl4Su8jeTA9+lqE^1ouqHd?Nda{^NQD|0+>0&vAy z5lu)%eDW-~br)`CQzp2@PROkD#<gAPTfIi^?0ORePAYDF{6rI$R!SeRsqLsBOUM>)b{}>r;L}!ibVT5<1ZL-^9cW<`6&LrQeL*ucW44HNWb8K%O<3 z3&8e!a!TY!Jy>MAyL2?Yos_~oCmO$zrO|k#WGH) zKGeD~OdYG~$Yzqy$unpggm&|Lje0y!q`3leIXl|vkg}Z%X{x3q<4|Mn#6<9b4W ze&OQXghSxn;G1gkM9DpXyECyLsQCWgCPFEDYND-A+7=N{ zA2g&C!K7K4PGUs<6fTJq&ZNA5I8y`;)`q(!XKujl|izxWW1AE?H+q-3T zF%^vYGOA%7)ltKrbA2vWFv{w@=o^<;MpM~iay7CfO9?aQrxD7QUX(|7RoKVJ0_GBn zBC}$qnNd@=3i$*CoI%G7(d7HvLzIx5+!1-a^pE4wJlN@oz?#_{L?tVi{%A${QE2^2 zwY11OT^UejkLjhsY7DI62IoEcC8rtVQ)wB-Q|iq49a63s7r<0y?cDPw*fxvAH|K2QPEKup1B18fu!Iqo>=i`*%n@$<8_OGx~ zr>=4c*aO#aQOZ~@w)c{W1#cu6x}c%X;A&BOv=#VLGN|`M>C-|E{gXLLB>h>!TX8;@ zVq6QU4TT&|PNvT$9IDx;%>9%=JVnRv+x_WKk$AW?TB6?Lfn5)x3=hT}*04n$Qf@o6 zGJREDRu60LBV2RSOuea(YO_c|j-5+R3{OGSEX5+62So7XmObbv>S*8}6*(82D!XH} z&IUq&T)(BIP^v>Lw&fb#M{by24{h@|5*(b|g`}(3GKF?aIE_(L+h~wKqJk=AJ7cG% zR>(JfizMZHqEp9v_&E56%HEG?>3`P^8(b5bHKwU#oA;b8Em+ZvJKDM4f_8I^f-7{l zxwc#eRVt^4LoN9O58R9>@U>Q0EfODjJ8poh7JJfMM2^T-4HmVk7gA1w3-(RI6pDUm zu~GWeS%LqA^p`YI{xy!*87Z={^weS(@ znMWJ|ikoI4*9X7X;@8y1Z{ju8%jC3_=$ScXM{}909hDxg3U@IYqrdQhp{1KK;ed}v zbTa-(?gaBSY+EZIs)38cdoP7XX|X*Q{db__U*`KGD^u#_HIr8Oip$=1&fS3lCJH)n zSUE?Nt}(OTu)>QaC?@KW-64nPXUW!b?Hw}H5rw8olEO6Z`ubmri6^sRNr}oP_^56h zpe#*O&j5MpaIZbaQK%hQr={h_gPek^`nzT-v6QtuL`Re(fphr%O{15v^qbce>6lS9 z>s#W*8)g||OJT-TRZ?Q`By1NoF09yxvz%|G|M5tz_j)dd3i!2h*!GND`uK zOkFxoI2oXpH5&ElMR@%vpvUern~NxRyN9=nz4`zDt8v2jxTq zo#Ncmsb&-EL*?UAxf3z`PZsX>6+b@fAhezYmtfTd`th&q4@K5MJ}VGQWO9GifmlvL zN!6)wOxjV}l>U59b0jyPiwt!YO2sw35vrfc2+~><+`Q*w%cSe6)T9>#+KOaX>WFQe zhZ2M||M{MJ)Md)IMsd!(mNbeIVfSnTwD= z$)B8%8;%DetH}2ScW*7&bwgQ(U2>q?#G_08Us}@3%Ix ztnv*R?LYYBMbRMFfU*iY_=qzkzY6(A4l`CQ=Oxk`=|Suk4dcZ;R7=S|jCEwiXLT7v zduy{0asU#X93ZE}@8THxjwr(*kkEc&;}PJ$rRCr^Z&ePtJ1(~!6>&Q4p;b5*{&RL0 z7}4|Jx8T6r^3rvYp}rLlf)_5v(-DD)9I1k%MliqXL5+YfOy|aYO;hf&pHt4mgySHP zv3?=Oh1m&^sr3Y6xL4nNX-+L8`2Ku4HhzsB6`s#E98bw$*vleu#Cx9E9pH?*DMzBg zT9vOHL`n2a`Kn*a4~-WuKj!>Ai^DTE=z)fMb|)+^(#SYL{O+|f0^Y}=oIL$MPK!ew zyqgJR0Bt~$zuw@tEU#+*OP|?^GOz*-2k%^=vic+s%yX({aDWC-j5~%*+ z>p9t_(n)9Xri7!%ksHxayvN;?zQu~W0cPv@%?Ig}UggJya&i}blxL4>yj@WP!p9ZlIN^Gg5dN8Slb4Y|YlOP9Q0mTFwI5Qf>}w4zLjT!Z zY*I=sMopV0-2hY2#5D{W-)%e^>zBu~j18Iul6K@kV{5NSP_?E#`+|=VO$_Ju?Mm?4YlGtFSMn=r8!2RK0h=O{`|z*C?z}Oc>%*YS`_@mvfzlkDy=!Q%g&3D z!PZ}B{RsDnGtaQl5g-1p{f&M(PFx`j<6a*>b-wq;{ibo#Wa4eiD^8gO^}>;<+EKRE zH+)$N9<}z=H0<>~ta_H=^b3CyW^(5~ZGy3pw_4n%TP90B40?vZrLD2ylaW+cfVJG) zMv3q$Idm-zv&Sncyye0R$-qIzWagh=^f+eYoy=qGbsmPdJU6Q2{P-) z?|Dl@FQl`6=iHm>tzUp}8=;aaNH_u2(_4DnCY-2-F2&OLyV?O0;TB_1Byeb_NQ1zN z)ZTERa-LHJj3X*EMh|c6lCyI5A?B%^oZKPAC#Rodlx%@-*tF*74N(KXG!2E?BnZ$B zwP*C_bMQ;t+XP0W!|@!D>0+`j8_k+tGVP`2fg&_A(HO?C>mrX$w9E$z;jis^Qg5G5 zM_rXuR5)Z+b`ISiU(#n~jk5~0Y)@R|Az!U6dL*0jmEeg=+j(<+7oNkTyp=zGYcA1s z!y9K%oQ&c-mW6H{CH$s*^H>~vC-O+H0TnuwO-8=DJnawWa~A5x*-%T-L%+lQ=2>#r zP*#KPv`6BT5Aqdv(AUitD}*GYan>HJ4KeGL_6SQ^oBT@8%Z}Igd=;6Km`>bJjhTJ$ zx3Za({_dT(eQ4jt$!rw52XETYj=k&d*r>5(n|Ck~?c9e{?0zCL=r`O9`N>6BQ|b4` zWc&CS*EY$C22aH7OBMl)ILuj**{0GSJV!hVbO@2qrCE>1qlt!2`udaDJFX8$x|wrB z=KRi-=)rpnA4sE>6HFNLrqeWOU+jU@bL@lxRc2cw9SeD$T1 zcOJ1(YnwsrLw%VBZ&Yb@n2$vJL^%gPiI=O zPqbps1q55M_Y*7*1mS41ID56Rd1}caah;xWMf7aHa|tdO4*5{&2a%jaJ1AXs>5*(R zR~^C&m&8EtlIH64E{mkyvB2-az5$9GZlYSzSNT_%arzCV6_V&}VC7i;of%pl z^%=DwpKHFamJ(_tO%YVZM~RP%M~nUO^rT8xtUY+;5&B&7d>E`(65ZV+pj_L*8xv_3 zb$NAn2eGcmsFae3rWA9Ra2=izqYvhZ#HKPSZqzw^v&6|KD^Mj}x71X&K^8{zpIOjy zFLhud(iU>tLJRB%hSD^b06hWz^S93I3ojLy{--@eO~zBrIVLve=(-4x`_uBsC;_`x zLcKz|nh{xNvDY323*fq-l;VN8aF(4J{lSdRjLuH5n5}X-aXWeE@Hu4oB9A0HrF!YTUq>qx~19 zjx!6I8t!;aYuGSkrcERoYw9?JtMb5G2DosFZeRFkFYO5yCg&*C`v{oqoC3sG z#r74aJ=%~~P#emL6-Dc;%>q1r3aOFBe&vL|aTzYo!xxu_TFQy2b7wtFBEV`iC}dOc zH2oXHz?O>VV0%tzZa?Y6TE6A~(pq&BL6 zp!(f-G@26bs@fge(YrFnc+3Ypl&z;{XpNb{sAy@J3Q3?|gKVJBC#`hgk3@iRd~Ix@ zpSuB4Viro@%#Cl-PT$Pw&n@YjiENH<*ZEIW#Q(~e2=d@xZr6+2{40Zr|Dj%)TMx%m ziqL+)-pW^GeAK`k@1j%jlm2?KFnu7$@<}dscTy2iO*z4nJ#1Q|ekIPrPn<9<iuhU?k^KR0GkcgzSn0KQ{y zaxP42<5T>A-b73Jo}fg=t%JMv8vzBc&Ho>%Im;N4cjl)ArCO|ZALwK!hK1h{I)@Ow zX3I>?H{-E7#NX9`+#)@dJ;q3vjVYzlvp;U|3ZaC>(81g6f>RZQ>^av89Eh5LH7WK} ze(GyTk7V2gWW~6cJ=@2*GGZfgg0h}K;ImY!?T-Je4@K7>2nYGm_;ZINo#NN>rDo!B zE)I=`g9fR=mU58-To_4;o^zOwjI?cw=OD|0adW67H{K1tdaKqFH3v+7?R0t9lo9~<#r9?#o z4vqY%h}mwkn9l~|0`BvIIy7-Q;Fs`kul4~aE-Y1Y8$VYwwmoXCW{L4kj-Xd|29mk0 zyoQoFU05r3qqynGML$$sM;ER9qHbS%gTIa)I_Uhf*{dRO&5Obbg(PRso8tY z^BSCMUO0fKt~nla`$_a!o`@QAcLKazJ9t3#veJ~(OsJ&L{k7Y!1TCvX03Rw2_f@4B zvnMT0(ZKOQ=zjZ3x-qh;by9QyUk_eTR^@?cLe0MkUH-!S=YANWeM<;qN9bs@B@Odt zBx>>#HS7vAY|J{fkB`Da3+j{qlvSQ)iAQJ2m@P}z&W+iwyjN?-j@P9nfc=t3!0J1# z1%Oj36GXel$&yI0_C?3Er{h#{hRcR&vS{K$bk3MKtmrmm@k7Z0R$bk$c0K)vB(G+C zR&EC00C#!NpY|XIm`oW%`>iyGEIraE$-H7I6->`4-tg}J``7FBZuuw5_0p^EhtY#D);%)z?Qa5sS=XA`VJ1WAtw>d(Q5ty6GOF^A zixIP`tqfjw6qk`_=?ks?!x74}y5<&N{)1e^d zUOYdqZ9$aUg9-XmuV3qzY5Tr_E4e>fC^&01SfHE?CK<+V{(DVI^6n?M~Y^x z=er9$AHGV~=!K}ZNsC?Z;l|_a+I~&b8-~=Ls+M`;(-EAMXdAV>{WWns0xli)QS$60!QH-;B5ZdjLlAG?i$Yh+x`eVL6 zs0}9~)`kh6&SsHX@CgtsT?;--6rV}D4U5}f7tC=CN1wAy(AQ==a-~?vfE%4&&FD`P z_jcX?8uX%Dsi&E+W29xNo6Y*q)pPD!m6qH|BVt=0!iq__mDHynd;;xL>bU6L#B zfcC4jd2{eMF<5{OUV`C~N*-x?gPm*)BX|hCVVuTp6szVcvAjLGe68}y%Nwq)-@E;l zyh1wm0Di>3MV=nlmWtG+2n8*0iyZt+KuIE}2!j2hw#CEtPLg8lk zU?wu|oCeSDhqgb%J9IdoMRMY;&>y2N3LnV6AETZ^<+roB(*XUFK}iN^}hc1r1iG)6rcrOFYat zmQd3S?_pt@KU?NR7S@1#rExqKQnUK7%-8G1Hm4L5GXlpwRG;yM*;G3@lF7thK=Z5v z)sR|EkJJ-4U~Ko6FM5#^hJRP0!H65=khu~0x$iJ zZfSMGt9<>$ZZ8pDm<3Ffhz=PaPr;49ff*D2xX!uH7Q&wXQQ3eEFq&W*hpLjldT~E= zB}nrQGqS2GGWmPfkMz7mszN3sGz8ngT(h)53;$*a*Y(AJ$?<VE&}=`LxZBG$)6s|}?Kt4gRTvb)nh+tC zg+<{(lOz9*-~Cte(xTznv^~s3VeHleVN(yx-3H`Jcr z)9+Onw6nIC&2_h2nkT~bvdJuJFKn5y)+bpOG_b0Z$XlTk^MCWXerEy*XkbQconZPJ*A6E(e`KM@p zz6bAWjO;5N~I^ERBKzrPzgT3D{3{@Yvflc zMPn8aft%je$Ngf@)ZbGWOlIlIFYtv4=picAv1@hTD0+%$fd4>TY|ytHvPOUl5OJhO zw*RnbI{e_Gf?+l%D(itXz&)aN7nBb_I8h@4olEss4`z>m47{b(PLm7s?ETPJx{-kv z2Z#)z*By$b^HU8Om1?j&35I4ZBw}`G3Z4jQp<`9=gEk`6k>trb+-Qw}g_*u2auxdd z7|aEbTV3%0`7rO=WizFDM#8Pmz5? z9E9fmmktiJiF^tTaqy^AQ0!+)gZ21!;l8?+q zzEJXeuVG49ry2^Ot*%YQ4srF9xWj}9Sv*r|{yN*BM!3uabM8^Bj-Yr3 zw2Th{{i50Ye{k`+Bhw8fWE$*pZM@_8O{Fzh;9#3PVDrh`R$&8~(mMgAdc0q0k2-9k z`9vak8f6MR(BhduVOxznjmnK>S1Ja7A;hDl23DvLDR9{SWOeo_tC++HgEVyw583uE zZ}Xv3C9uU=DpK0EWt+CxosQlwWU4GpCZ%OO4i<&c;t5j38}vkIN?tDxM{s`%*ERAz z%5(acAHRR_6Q=y$2TRcD5kS$!iM}iI+U6hPEWL;iIa357q8Hvv>%klH+*r4Y6iCe9 zJ`CfzV4c2q%EAe`O7vN$a$1v35I?<;CzffIw3VL_ra{MHM~&AqR+F(+tx4w&wBAuZ z9*}TV$b@N`3S3O3asYDU4FMh>H`5~SV*VE?>AuV+o!o^1nA^rUy zwEXYh(u(_j@zIVW)OmQK2_uWKEC&BL?T)n#kFgh&u24P_c_Ym4GzU$%8*7gjnvU|X zsST?=k`d1uPg6ir2{5q%Wm3M|4}Lw2Wg*1>OY1j%q{ot(v-s&v7N02_*x-x*o0>JF z++W57ctxLaJP#LrvdP4L#kkVFi#{qgu~7)kT#!jpgG((@hNX?)TN-2Iv24E@=1nuC z?T`OKYkKF`)9;72vn>jSV+~$JYzZmQ^bdAw-!2f;j%#OLcuAEW#xQ@ z=GAh&niDy$y~~KveR`teG>B|^SIvlal>kUY5|Ye>*5GTq85l0k0*wutAsGqY0u5Vi zmxytaUFq?@iRrOUlWwzx4%rNO8hn?Fzpi#)uZ4Y#TxTiDa~TS0ygzW+w>XiP$3+oi zzrH|A%64}uE9=>Vb(uV<-3b)f3!um&sge+#EBh$T?i_MX&(O9iu>~`TW71zzf(j20 zE^$FRtahij%nx}ytz0Kz{t>M8WuqscO9^1z@>YH|;ea)21gvH(vv$Cm(w|>k=VlVn zxf!d@4O#nFYzL&^L5aY~)3za7;c44cvfy1`g=O3KBvHr;=L=$0Xc6QStwtUgNnWZ4 z|4E{FhErUvF9?UT?9K|wv%G~?LnT=B*yPPJUi~zT*k*4@#u$E%yNPtFTCB<9P%np_ zmLPtXdCEbgHVa@aaR-qboNFa+E^4*}ItCIF!oE5$%>l&w!I(8$%ySz1dw{3}E=Guu zPhyr?YXYeuW~?TaEeoC348lPJKU)rE#(+v`j209oD9wH;)FPI=8N6+${Xux{z2*zo zti!Msq@l3EpO~c>2@hRAn_v4FXj(D=n7w}8WHNnW;<`#+?UAqWC;n1pf6h)&!Soc7 za!nLIW4$WEAk9TlOie6O50w+>uF7v~IEh>trV$xo^wmz@|)FNyXr=y9yKwqt4bg{35KBkfv zWKR2izOiJd{P^BcF5}7TLl*BG6&P7;REf|pt>jA$J`2lI?)tP?VnKIo&LlRtm_!uC zFUrDWHUK28x2RXrab;ZBYG-c0yH=QMA`O|EuM%355uz|{J-E0w^nM2sh!3qKAosz}lLZnCNQU?ckM?%SSOA-Z~1N8u*9WE?e5h+F{mu7Iz+flfHdU0IqD>6BBkh>*f)8cw@>%8et`4?GD-EHcE_AK+r_`pkx>~N#uItxPeWq@?sClSOHX@q zEs##)fD~@n7elc6;M`Psuv++gSR_ntSb7IP`_SBYO^@|nuEy14R%>$+GJHSAXi;eW z*FXR6&lJ<47({wrxp5HqxNCZm>IRBCf#p>*P7}s|v6k2(P5NX~V|9d-3hxK>f}*>6 zswh@wl~>Hvs7Di~HgJ!XSB%1HD0{K^*Y53ba_1{_*@Y!{6BQS2a$(Ln56yNEqV_$* zqz_&_Z3&t@QTDXNHB9I{}n<{Rc_vRNy5DHmE?9E>kTC{unj(i%vxYvw?+&q2>3swuzGOT9K%x(A^Z=_1m>KTl?WbI8N|&$pZZ^&7cX6pw(h)T2F4 z03Wo_o1HC#>VxL=pj@{C)2>HcSMH9x#$(9+VJ zhbbkORla=h_DS%?zvfzZEwd-JQ(;f;yk8w8CK*yG7Ui^{LSl_HAb^argcCzX!3uxV8VyNFyz#nnlLtalNB47^2}R(r3OFS^yITcsJPYtljoTjB&tDT)dF> z9&roq#X0(A(XjgB8wxu34N)h-W9|BpqWs&AscIq-vvp@43T=xe`efhH`{&Y4ht!Bq zG@0`*q@+$L$<|d?78VILXPhnIr(ixUek~I@VmFa1Fk}{>++JLoCJJATpdrHI+9py}fH+;-e=yd@K9wujGSt>ESVIMuc+ zlzRns87ygZj%Hl0=G0N1QX#I1QZSAEq6vv+X2pBt!5ggnYa!u|7dQd6 zjkMf}gUAI2UYadB@xu4N?%8jInd|l1*AhP21j7%!$IYDKd3wEOIrz&uXYNmRqFK}# z#FhEI-Mii!AGl+U>w=*6S=!B0_?u_tlV-gWWR=<7#+l7kz+1C+hm-HRQk)5o#!+km z8l)Y<$gq&>LqSPe&k}`xT?c*kM z8fDxgxa1}*3SJdy__fP&Z_K=7v6^8q!9KOQI1P#dH1herUP$lPRN&_?kDR>$POB*< z4NnQmiIjLyhz4 zkx08*774zEm`&n&XYQY`2h)RBXjuaz5aR%bjRt9b{*^j@BxRxwyEO%S6Zfc$s^!94 zJ0OMIU64y4ZJ#6BE_c$ykYzEW&Lzu6;fHkX>m8T}H%`nP)64g#SVGMqkC@3s4_JM_ z!c+IXmx5tJ1%19(UlYvq%D5S*MLyKhH%0hq3M9}gh}!3RaljqT)sIw09F|J`yJMAl zJRiYEjx{W;uZ>Ot{!!`0LX43=ckUWq5gdH86H05b>J@e3aunN5aa}rb?%^t~Y*HU* z0TfK=ZC3x3gOdFNwz_@J%Idt^PyNEXVd+a&Lyi?FwAaR&+w2ZU*2DC{#G<_HZ5Sl> z8cP5w3k|_-3NTy>+7fh!v!K2xN7cq@TDKDYPRcPTDLX!{C5t32_Ql}uYh#EBEOF8n zQDgrOU;Xp^Qb4_GYTwYXW^vqYuAWKtOJ5KE{!-J-U(^5YHjr@n=e>p|AB|mq7<=j9MhkFQU}QRF%!S+M`_StoYHJM zy-VUw$^F9Mql&Pi!58VIl_=W0htAP)$9eB)j6%Lt3*I{!C1kTu`KmN|X0Z*GUPA46 z6spyzOTh&Q8|aoh#dk@Upio&Ia`FSr*T%-P8TW!0xP?ZIU;4U<(8`&WRT>9_58^3O ziUikEZ|uFk0yFW-17RZBV$-rIBAyiG1u z1Axo97$HN>ZD{k6@GWpj%v>mqXLs~dzcbU#6N|nd-XDhZ@hHOk_4Se312<;=3HW}H z)%a!UdiB00K&PQK#sHnByDP6_=2@`>g?gCzV!tF=uL>PFNJPG7`HxDZD5yzguJy-S zPREzDTe!+3MKCfOk!sq=59u!|S%f5X#UfvyB+Xar&QTzV+azW;qoW?2M0kqW*Gh9M zOB!F(5mlyb;DJJ}MYFS-4<5{Bi->Gj%DuUJV3%krRG_6oiFcU9=F@RJzla12dxdV= z9_uZbP;>2|x9ut}Ga_OQc&iLqb=_IMALzZuFab~NLE5`M^j8%`6&Q`cy$q&g(B@j3;Ur<`U=yI&p!MXV*ze zu0QEgAjG_bIXCq?9QCtZ8e(HxDtOi~w^i_b5xl4?f~S4u(6W%X7G&8dqa)&_=*3gR zs>7rR=L#?GFGMNM9*1}yq^xB%=62852VEmfSic%<6#Yz+F~-O)7Y9vtBf}koi%*v< zJKzfjA&c{V5YFy&#NF|cZb{jXuLmz+PX}*~)U3QA%#XPiSQ4bK_yskTGax5QvTQ8< zTsG0ccvNie=Bl0=XM(;Ebr!W!4V!^tb|lQ+VtM4=Kd+03fA6&(@$M@{%hXc$h<;w- z*$BM?KcF($1C(tix~7OfZ*w(PgLpJT*ASXv$jxyRp}DG1!PiDfUr8Ngly(ZY9<2wD z8Xah_$*fDcFPSm7Pj{XOpv4W}lyqThC*RcX&e1=v8ffNM|ING#uSPC}rjRf@y9%nB z&erXbZ?hb{(4l%E1=p0NzH-W9;Cie)aPflndgb5+?@hTH3B~&*;xwE4mCkgM&RVMt z%Yj|?dPh|nnt!(OC;BmDHg)qgPKw#xTc12ll1Y^}$5Iz6w9Zm*a)u6nS2G;6ts_DC z&YW(D^f8jG)P4GuAjan1sy%srxbAOsyr}%J&k>qZj=}6h8Za;i?5(^*Hp*h#Mk(F9 z`Y^g47l6gc+KP$`uxa&bSK2R155$O-dN0{?(dY9j@cPo6PX#v-I&N2xc3$jVsRP#& z*c9O=F6@BQ6HOTJ09jyJ7E|oSpC?PUBl-wx*QZHa98P-{=tU)Px5=v=n`KUuAPLh4kWNdP4kqfBLB8DZ*L~SJeJPL;0-TeOvq0QGLN(`yayjDT@!`p zx^y!L2XgCEQ_cjXP-m%f*fG|oJfWFf&IPBi*2?)3htkfjarGBV9UP=|%<1V`why3x zhJGkdHK!Ax4gm)NOyr_gRQ0d-lT=-yvAXz7)b0V^Nd?gib-jU>4U)HKCyis-~;$j z17Ek0i!<3?z8N;QXA$ZtrjvA8l;j+aW@$vX2*!2@gGz_-7OWy1dt&SG6MA5|EGjFU|-?86_&^1H)uV3e7D0MG+UK6=MnA+MHRcjV@aOMkvYj} z1Cvhe&P*DeH+%xUpd1z$So8$~i*^!9^h}KnZ!g*@{rROkrzTmTb84bQQ8ZBBiBP6m zQn;ZOCn?d&`07$fWc+eYE=_Ffj)u-+5 z=};R>GcnFYJe^&H+J?)e%?#pSe*l2WY;gEN=5$a8cBIHxuMPDpv*b#%Xb)@k6Fo#05szIJ!pylB;mGy;{*O%en9PzS>T|!l#{G7j$EjLLtbL6;0xtBz97~gV z@SUC?`8SxgbTk+9_JSecq=P~&?=&mWyO#Eg7T1yZBRD}6mK&hBOCb&e^ehX0nH04L)uwKwsUT9lSla&2c*eYA4~+(dDTki%JV`M${qv}A zI3-2vN0jaBz-A^1;1f_Bz(>vxO3bKv8N}GyQA;hB zxYii#X*5ai?8Y=cO2jwmYoys81hQw}7&4vowz;|}j6p7$#!bae z=hM+$#u5NM*`&-B)c;T!Mdl4j##3tK>t6Huok=fCvUP`c`&Q+hTD2$O{lHU@0x1DC zZ!~`acQR}+SXuJ49h$4C2DQ>!oUzdJDC@z<>*i6XCGt@~+ubms`t@^{3~yt(WG*f7 zmXL5u2_76uF0_5Y@1LO?td>qC8mdRL&Et-;#ravCCf$WSjz4>0o5!@l#Tu^QZcD+; zy|Cx&@7%JUY6iHmtSgnP6|N}z#g))-h!hZ{Po~DF&L+tX-mE;`aI5S34`elybecw? z3tl1NAO|gD4G+>Uqx?GLF7x5G;@lF3eKzI{`OuN>uzgrjLM6mP@H1oKJhS`$X-}GZ zJz(QxtMcRW@z*%Sk&McFvAhq6nd-{6W+1ktOwS#^a(HF4Y1|`(??gjUHXro}TF->= zX7w+RA3?Og;XvN}Qz9Xop|~3}gI6Hp^wvBox^{_I%JpyiWBv6%H`Z)CO0MQ{@z($G zqsA?X*+zGLuHtb^k#+&Sj}^zT3J5CVR@fKt>7^crQKQLo8cNa`$70@2(#`14KLw4| z&Rr!*k6yg9HqssL(gKG@GUfqP!VITEr9~k`Fg$yd_SE{B7WPxsP2X5*8jD8 z>X$a8%QsKJ6`1&K?s~=9W!kA86Hv37{uJ)$X`dX+q;sTBewNh&gR*6VBFkmcUM{oX zaw*+%L1KV*B`+7Gjc7)LauqWBb3eC0N|#i-We~a8e+RjeFkXUd|*lvV)jSIgpGb{|%@Hy&Vr0a)YqgQy`wFPn3H3rW| zT}@+4IZ?RgCQ|JWzXKN{rnN`_7!ItsbI?R0xV1jt27JbM5MUc2m}jVTeS2} zwvJISJ;q0~#HiN&dH|qqp{nnB<>P$lcdakn?CFv9&A0CTTm?uR2uBx2I%^a=?H#P`mB& zNT}Evq<~zGOfHs4p7n~7q+8#6ex&$pZ|4b7kd*F`!{VpBpehobLz1g5pv1zx(6$Pd z%|ofQYVZSHEMkx)9V)idO8MLwVHjU5yGPHQx&l$``}*=e?f18RG(BE_Itx|ED{7np zPvlV9Zilw39cK67cb*Zf$~YtD7$O)9F+;&Jh-d@A=KKiBJSCp->r1-MwY1M(czRP9 z!Ws6W1i=dwR^iJ#q(Aetnf}f+#YBy3xJ1QHBKf36`hXyTUV^Ht;SvOrsD~& zbwlc4|A|}p=)Y8#cUe&JsB4PjSXS3K)K--hS`Cq9yVssXu1(GXuSNR@b$`IQq-7xt z>gi`rd76%I$Q-}j?bgi+XP=JYo$SWG0?-SIQnVZdrt3Sp3VdR49&{Mow3BG4Y&Der;c-uA z1W>+VT^_XnW1brJnuHGfT*_nVfBTM2HB$7RoHbW*WnjeerlgAUIWVDgp7wzWg`-zF zKN%AA2ADz%7xI#E@i^o$U^mmL$(n{Cj8N{a+3HG+(1=P&qwbpQjSmsVd~F(}JIo(Z-O53^Ktz07inZaar*d(`Y{A3~I_la`G~ zpN)<(Z{8{g2+x35{0i9tyzdX)|>D4&rQjJ@v^Y3lK=hqpM`?EWmgahhqj>m*!;R`f}b*KuciEyl+-lyr2#& ziq|~mYPtxwm$Ki(oS@R#S*t<|QtA|KerhyZmPGzpsczm{apS^Y^5)|#w?1BkL4yT@Cb zs+AO8et?rN+li_TXUv!K#Bj+V%~e{jovyX(H4>UyZf`tsp&0C=$Q3eX=73arK3JTN)eh=L z%N@m-pPYPsL}jpgnUmp=w)h_2N7_9;<57A8#9v8yV1Ao>8xYKz2v7!Z3Uuqiy|(Jw zlWnLaJ21D(#U$DjD7 zO#aF!o}GW9S6UF%wh8l~eNf?{#WtDWfWJJq*nE~xZjpTLk8t4`bHJW2Ei)J@2jUz0 z3~?=nRd2CPlPI3WH>4|Mv6aomHm6F*^_RP8u_YsDxHlFX56&%%t^S2pS~42<8s{y4cN`Z$b`GqvaL{eK}1QZcLR9=rF7_2is>h<6+e}47y@Am-f(q{VOY4QI7 z2OmN!uSF*EIXxTfw0Pb*T16lxGB;;CKYw4FYn}=PtkN(;;J&bC4gE z16>*PW)YG+QL1ma4Uls=V4IUH)WW5Hk-3f0nC%pwz;DCFs(c09(HDm=T#5Id64dEk zI=Th?hG)<399X^f3s6w&i;T718z;(ROjA9&dix;N2_Th(0nBOrVSFOdyOP?DZgMV8 zJ8^U1idiegvA{eegu8vwzw0lwVmQqyU1KJAK#AYlA`?VV&&lHu-yfp}^Iv0Kga36tG(p83Daz5SbK!sc z70@Ef#nX{VAJDWCQRuSZZFyR(@8#EMSrK~ZJ;YMY_${SCAIDi7rBlN2Qc8uFw%J!X z6}@dO0V){zM~ZUrkks&J9+E&2{}{Y8izgLX)Q0FEdq>`iER?2hw^s!zRRYO{H=w~% zOb>UL&I$GF6|Yh~zA77-YPIh}UT19>#%*og>b(9wIBiztTCiou+B+VSY zL@xDS%C}lK(=sAtOjJMhUTH)rSN-v*RucDBIw!tI3{|j$kOUDR#tdwfC13*oudHGG zf0GL2z*GbN%N@78(|q_>1<*Z$a$u- zj5?_Gf&SaM2cj%m;DNN+&c@3sd0o|9*3f6-c9kgbP+qeOw)k=M9cx+J1Tor!T{PcUn<|7b3!&!ppeL7kk#NBF<~l2}80v(q#2K zkgU$AYps>6rk{;&Nmg^uuW-ixXrAr&<~Vt}=cZ$5z5@$J)Gy@RUrtP)UnfkTROla{j9`5 z-1^Bu>H~biYPV)hb5=m2PL z^%7M_9X}pMQvX=#k|hHM++~`Yc>bBzfirP|c|r%fWC-~LVC)|)Q8KmBVn}OD#M4RQ zm#v6DQ5Jxwkk;Siay7eEYMpnC=`_9JH3;KdDt}B6D*W1+PNip% zhJd42-W{1MIPXlh@RygrV-ic2F6Aj+TWNrp;>J>JHZXEL>D=(3mO~WZC)TAQ# zxRz3vSBC(gP%qr%`K6#mF!(nXBI5fn-JyqJ4r9@r2T;NA%3O4Y}BV~ zSE!GY*{lZ;EVMc1mwQ^y`Da?uIy(r0Rp2e6pD#JBQLAqbkf{0lJ;gdo76D|KWVu1c ztKea%?1r|~j_Ww#5v(+G6i*1{6?eHKugiWYt(ubG(Y2FgI*&q^e0~V|#kHNF@|r%O z4DNM%a)u>Mr?VTM-WyP;4~q@p5aVj||Ct;csyFo${H8ZsW*_Ns7L-lpgEG>S-1ER1 z{J2sgwaU}$+*n!)?58~fdnw^=cZG@IjyAX#n|v?Y8Jg*MORJiL&W?n-2$$~=J#+a) zVEp6D#rfztzat%YG3!@^59h1Wyoc>9d3njQm6t5+23FRK!Y#MREZM}{zm_<JTQVLYCjy*s^(N;;pGD}#F%#KYZ7K0kD_cQ<$5-evC!@8R#=lK1X7 zz42B&m|Nbm!ooF!;3HEj_Sn18&8}N(@6zAF)A||Px9D!)@)y{?=`X*1v$zl9FOUGs z;@J&h!-eR-y?r$c;L*rsSsZdttHCRCSaPud=YtoITINjInzpUHkTNZMX~_3JGM<(h z>;JT)PHDOI~{(lNt(z{Isi}3vt`K}OJ5ogBRU~~tEbSp z5=DT*y->+mhB9!9NT~Waj2?_z8()tGn0A>adPzeDCikp=wLMm?sST!fBB{h&p6R=D zGp!>ZX}*UOJo8`)?0H*UuNw;;mm+1KgBZZ^O3nsc^#rVw!*@){o zQKOy{-(^X=oe3#Q2}YRJ7m2g z8wbB;m=CBddOe9(6c`QCqPWHMJ1uNr>DptWEDjDtAFbWU z)Poiw$7mELZ)*&TpV`^cMq3btcL+zX#mQRf{)`VB&u;1Jl73Z}gdX()vj>Jd8C~ux zKQr9tZLu3`FyL*%*C>P;7VGhjUu@ zjkFu(^)Qy{C?1oB?+v&bM})#?KaT_eBbx$oS#PUcl7=EMvXY(Ts%X|DyE>ZQ@da~4mo%yU{g1%FqJY>{OMBb$_@G-WKFuQ2) zH+f?L0Tun%78m(sv6AofXRFtA}?S z?LO=mPrBiySYu}5v=q0Og9k)5_#`Q55NaQ5)0cae#Y{eQJe7g&yRf!gaXc&u^N{Ny z8GN-XSdMWqg7DMT?QmF7+)El5`JU^oq?P z??5e_a#>dDP~5axC&ZzVPHqt{P%D&(*zeQA>_s!(<}8l0(KLGQs%LzUol=q;+d6*s z(ar#K$WU#S>rzR0PX}e+B{b=hLkfhairm)$%bCJRCIw?QW6cG@e^N^r(_L!VtgJ?T z2(|*@SvnuxFwqVO+BrO)cE*e-Xn|^!KIpCYsGn*8qX(1l(Z`( zcmYBgpe@R7=|?=nElCVj9Kd^Rx!ELrj+Mf;<#NaZ1X`qgS3_z+;g$E2Z>6jy;~u1O zp;w>W!oPYB=4hkIH^j0K?V7#sjh2*7JSkcd0g#JDJc8VN=rb=!MaK^)3ooG5P~)Jn z1|gy}+RInK=|arOY#kHvWz$|<07*0K<03>N^K5aKv)S}koeYLuE`8W#JT`{C&*gf< zE*+U|LfnV9Jv!i)yoEzpOCe+$`#3E*Knj5<4GRmqbZCtx?y^xYi9`J_iLnjsdPzcm z{&nglKke#Oc&q*6lpnZ4%Tj}864xzIvClVgu5|K)TnIXOdcvW}+g?`*9K7X{B$Jrc zF#2M8%rg~yNSV!RH6)^zna>q6Zr{ySW#D_fYqf7`!-;oPJq{mC)HS)@OCO~n0{T8| zHqX!6p)UPmdK6ECgbn53o5hJ5aXt9FZ`YJAlM7tY;81U#pv;$ltdBB?3|VIWVK%y? zc%6SKC`^$<=pju^3`d;?1j0ey;IGICbsR5ha$D?=KHeaijl-GVANaHPoac2fT3Gf| z+axOKIO@^4+Q5%YSkjg2o8Hjjb748~%bG}o{o-wlxB~4*b_CSp7A%({Gx!%uy+wCAg_zucCVo9lSnE&_HIb3|<;o_^P zspl7`vm1Lq>8Xn6G7$}-fzsl-TVhaI5;_KrXOp#$!Ib{o*an(p;}%;&l5tcVM<75m+sgaCs}N}r-eDHhRpL#mh^w;Lvn{0mDNlzm^q%2aruTva=$}6 zzqT2dmIu;Ri{shE4C6SBJ`LLK_KFd}9V_!3bY|@roV}==?Op8`vb7dwh0*mUM0PjW zpWfn_+rLF-f|AIq)81+Rl#NRw7XW9C{8N&r;%9^98PuCizN(EGCz)NUqAko)NC{)6 zE5(;4#wXDDjzgYJA_=(D1+n9WNo4Rr%NJHt+IGmA(4agG)Z28`zJSQnp$(S`jrrnP0KkiNhbdeJgt-lO%gegb5Lhn?Sa zOxYg4;S`AlvPYs*S=FmmzHN!Jx*(3w6%TT)2~fhe!NI(JoQ=l))0b#Urk7VjYHEAj zuFUKtSuDU$=Nuzkf8_xa&_Kp5<-*;vSgn9|{J`}FtYtO|UGLIqCE?KG(rJ?ap? zCVBcWN=cI5&|$xNyEa>9`JU!>m9H0{h9=_IxfL5?93nDLQygGxJ&>__Rm3L8(xfYy zf4o-(U6ue@?M~zk@T+AYbkPrzElqF9tiOLNN6)j5jV)v!TX@4ZCeW%6x$!AhN{C!2 z{{}C}WCEfW^k_p{d`GGfSmSc%8W@tnD!0poE^cQla@24S$>e%aQWShgbjfWNABWj& zbQhkT*2$i?pS^OY^V z#Aa(eEacU3b$~EuNssh{eYmw51bQ}QoWo&68X3lW-5K|KcGo_SP-pvtM>$vx@MVq^ zbWjWXWF?LZ?1*%N$N{_tS_odP_iENDVS0LcVBcaZY$N1FQVsZlEp)^uMQu-={b{A& zhk;3_F-qwEmj*|XQzK)_cZlc~bfvOU12%)b+HEWs&jZX=Z!5al8D9^5_y{!HBbX7y z<9qrHHoV|43$=S+xyLbn3nD&w!IeE9(|P7qyASK#)6*yS)bTjJXcy1)-fj=ZbI;9= znZ{?G={P1=@$1uZ_uxL?TBTo#!<5C;2&rW4hcC^isb~00QlmDO&G;r)uUKc<7UtIb zg*jyCDWfw_iJiI8vAw*0w0vZ4mP z0tCX5V!Rh-%GCgMq|J_!pY!p^1jMr&pcKAIqlRvrToKn+v`?mS1XKEXP%RDsnH-pS z2$ff^*jadV&N)#6W5^k{kN~b&P^UL@JW`2+(j2(qG@Qs|CjLwz?+0`H zd-KXj$1jf9zvLU5`3B8eAHBfPaR&2L3r9rbb!#90oa-wy6B@Di=(}?ujDPr0{i^x$ zHKA1YRQ$`i++520D_s&TfABi(0eXc_v1-NxVZ;>&tRDZu?^>f;Z%sHPf+0sw)G$eD zrOYn#4n6PVAjfA;;hnYtGC{IgJ2fH!#@LM+px$^;ND|All5u{jKj!PhmrE9OVRLm_ zlcpQ)W&F~LkI;i-ZuPXJ`K?moNyq{StbX39E6GGy_gNZBM`d@}xSfuo`ow3llC1~g zQAmjknR6aiCo)9rNd!q*pK{UFW{|_{K{6WARvVA#SV~892*sn3vIV4*9;ydvr%#X0 zhW^>rbMWy)n@A$aA~6Z7MflmxizE`Ia7aXzPa+XhlJkbO-(`LP)!#GMI+J#B#1DY` znC+b=lTqkmS23t4V@21a5+?` zBOr|p9gO&lWXQK$?Ip40B)^(ggB++)V2YDImHCj~b%4$5GwL7P#nYkM`PH=O3|*I5 zC+?Vr>1>t>vw4qBp#Z$sOzjO^A?NnRaZ#2Wzb%a)v-hio@ia`9GWd725}I#{-N$(; zKB)G^^r`iBU-B-VC4IWFpQrfO_l$hZK8}UTga-63UO&t@ERWa_zHw?Ua_P!Xli%~u zFm}cK-mY`%f1?B^JxPv%Gmd03nT_w_`7N>_{Ok?cQtg%LqjDTD7v_li8O3AVI_mU`iyQ2Y90+i4?71M3N`rJOrVw|N%nK`wav%4+-CxZo{{n}AzF*CO@^gstq%aA z>K7twOR_#3&LJ)C0PD)_hmwogH$fU_5vkbyl<)V1zI82FOn(}H%>7lkazAmnfP#c& zf*r=hG@eXuY4CNu2zFW^Qb9S`Cl2_jV!0-!sah5XMc#fXKw3LF1xrA*nrgE?ayCjp zq&is9C(U%DyhQ%#&NlI)gm8}yvnF!Qcs8Cy$uoSg;dinFTST5c8j2b=Ewp56JcQ>i z{#*iQ1z+_^qD_fOllkQO&^x3(`TX$`@F=guY#BG;gP7R{5BU7HvKcNj#HY8YzMOL?d3XnJj{C(jUo|_j(F~~Wb2?AYfQDF3MF4xd zHp%hXnSYKL^BN6Le)=nKi0He3R4Pd!98fIS3qN#D8b82kN5#YDStU z%UiOF@LU(w|V z)qRiDw0?=ZJ{vkxo82mR>}8UFaYDuE8PNatNYW9$V#V9i>p_Qhr#VCOJy*e{tcs*D zd0xrLgc$U!{YR0W*5hv{rSYnP77&di+oP9z4SG-HYDvk%Y9?eEk=EK?y(j*Ve4Eip z+ZFR!yC7-u3Y+ha?zA=p!vaS%+$gnD(M+(HcV{+SVcZ9F>0;St8e2Bnr6Z zGLJ|RQZaa*s9<-`3IDsf&)4Qsf1>NJ-O?=mbs1q{cF`0K_-Yoa7Z`gtY1a$J^ygov zizCd_?OPp4)Ndo-*7VvHXSzGU7(JC8ab)Vf)@H~tBNYS7?4}{H5RUY1_P=auf(fm% z)tP4Bbio8Zu3G~Yy@Z^i*gUH?m9pQ6#j##Lh*%e0jh4y&sGursENpLIoQb$7V?q$5 z&8PF|8C{d}>-Vo_Y^;TiEESh;XYaap)-LA_!^Ayqh(`vQPp_|*P_Ic>E<3w{0x--! z9ysLMep6t{MIFD1yrnr%1dcVZ={9-mG#YHvB>(t?o>Ouukj;3<1Lia&Mze78k{QpT zv)QrYaWaefLHce-JZ&MhqXsEVJe^a?p+~W=aZMQk&Lr@*a>r0YD43g`*OOr9N^v?e zZgk*MSG4K7*$_6edCJ9FP$J}n?MqM{+^*`S*^{b7M4(g#ydKe}#o`_2KMZXjE+ZPu zcgBl*i-a*lcUK39s6(87Jk@#b4c*zR<7yuYHHDNmmqqn+Q6DX#*pu&02gU_3f!k(x zQqm{PIvSkINOf3qfhZeqH9vZaN#9D+4DM=W-BsK_BR5>$7{=YWAWo^r8n7bhf82Az ze{n!=ZdpGOdf0+NlBrqT{DQqn5gIGe=GYg`mTN^O;of{mc=3Z;vo4fBwBXk4_O56*+NAR$=REM!@kT{q{+XQl3pc=H-2_8}f!MpZT4w^=~{dwQ87qPK+9 z$2auLJ#=&Qj1F^aXbCfQNCDWwGBW1IwQ$3oFZ$QvA7xH`Pd}F=7&p*+J@0nB)#3b(q z<%z(MHfx#8XQ5P7A;#mNa7r`PwJLKq5b;X6q??@m@`Z8-06omosKWJ>l7DF6X<`FRZ0A6FGS% zD!TGrZ&Rw0H`!cSS~DgD3BtE0*WFYB?~AsaB$=7FOfRcrh7WACWOI_=lEsKSzNpcy zAg7Cm7u5~ID|8Zr+()RFg`mNBhJ+XvWm=WvEL_y(TgBAv^S<*Ik@Nd#(9zFBHxQ2=>adICcnohIhPluZ!^aV z>r}F|2r2a@ag@%xfSK!9JR+awMkO~k3zYp)uR~2{0n|({ z`t~gC(js1865(}ccH|O55ylCH%O;8YRk1$ma-^T%^B^zbEH}kLjr(>+x{T8pWMD*c zkcQylt(X|S;|dQk6ouz{uq5K9ea*~Ykxok_O3`4$O{IY5osP%d zR?e?f-Ld!W^NUE80?~nU$C6ZnId#WY4R@?oKHkW4$0~KlN_NMz@05ei1&lqlHx=@f z(qTa1)!;)_6Nkl2o9@C6l=&(;IrL#oK} z%85GQ6_`lM+Qpa*;rJPt$@9M4yXVg;M1}{nXzH1CrIW#D(sjPVpj9Ion=f{1B$K;r z+OCmI=+D1SjihCJyk_n8zKU95&NCcWJ~kr?VKaW_y0Y4XE5E0;;am+8>H;nh5 z4Dd+ME13CzXP>KZN+{m&lmcZt_zL#*wm#M%(5Ut6l)&eW)3(!B?u9_?a5m16CW3&k zdZCG+yK&-xCS32GlW$M?_PFPg9w(e#Jni-kB|mq2{P)SkhOQo$PC|74#o*t~N{@uL zq^(Q?u9{U2u?JevTRJD#02U(0M(lLV*-%ptdaVRn;((_#7|->;gqIP#XNPPO&p?#v z_4?e&Q*k3ZwRvhWJF3inKAaZZ4?-)4A9LZnsZ!rTv#^y{E=!X+)uOs^(d$@y%jgpE z_VX`q=W<6e;u}n4Jhy2v+C8=Fb7#k`w5gHEQYP&V3J&>26D4+`MuSHa*lKt$#hB}9 zoSAhF@b;I*kQ#E$`so2qyfl2dS2PoJ-#s_N6iU)oGD%wmmNs2<3DJUo&ST)lp1>qi zr_-fram@O&9z5;q-Jay6sixbw_&W(5=rtlHQdx71#SsAHHaVw*aKdd}A-qtQI<8?z ztMuvch;G`y>K2?MlcNo|@AQEP0JJc} zQ^`quIDT5^=wpg}_4i2qr z;b*m@rJ(j%o(gSUQpBLl|MIQWWABZRG1E74TVo!F1|oN@9aFgXwR1{xW{WqrN+N(7 zKq9&6xj3MX9QXlbBS`6v66LFg|6|Kryv1!Xj2OBjdDOl&1Sx8vaSv(rN&y%EIHF;%~wIDEmzjc8YG;0 z?Ac>ZT_YKUXP}MG#uaJSMT6hGTV1^lV-Ud_wFhAuKQjn~TyG>8Yb`U$nCOtKWSKXH zBuaZl!`&f?`iR1xJ>%K=I4O2Sf-M>k^BcI7a4h-fg>(QOTy362*@J}!inWsQxlpTe zp;i&u5Ub&*X|djSk0gGnz4)cNvSxW(HcSRV1W`a$=?3KLR>WjtTM=v5K(eqY8^)Iu z!BCS@H!exev7!aRQwtP{q{HvJLTQYb(Z+pbPR9YE`pNY@ z{%7r|*~nY0kjDd;;@E$mMzrlw+N)Mpg+UxBA)*Etoc%S9JsLk`r&F-y0KePLA zwaIg};Mpv`US}h4%soe{-*bBK7Bo9xlN1;;6VrMvNrYC70{F*D!0^a0o2lv`$%zaA ze)J@b`Vi`OxSUxJjpTmK3gIfKu{Rr{m1gxa@n*_Fxi=3|aW=x@T&U<4Y0+&GYD}7% zsc9G8ru66Yh|CTGeN7{<5Z_0_$v{Hq57G@vxFOh_cb)F>+(AW3wL|n;bXxjkh-ZsW7w|V75-zj+Zpb2^ zqkdT&j|<=+;NO9i1D1z1BzLa(6!vymk6OA2l7uRdUD_98y<_T{pIipzofin*DFTsm z>Y$1x&srO)7WNUU$ZzDwUaMuUT_enaQ^BZaQOmdczIpKXk@w`BozotScxD3k>1C>? z=TuHNPqvG~#Pk%kmZAfPOEi}=dQd`9{4;fw}dQBc|u9=aKXg2257~Wa8 zJN{Y?;6x~C&Bk~qJIj1gw;?KqoI+)=Eq(DnRDa+%#Fq1)77JU8YS2lylX?C=?h~CL zci(LXlgIcm9>yc88~td;5%TTkf1%)xrVXdz$wi|+GJ4Z_2ssc#%dfAdl-KX(iOjDp z*sERgj@UYR;|D6|cbZeNXfFGVfVXrZlASkO&#ZA zOb9Z=)%#l^USM3TD#%WhSU;@}2uB{r6-+V!6&rw34S+eD_Bq1F9VabqC&=r;!B+N& z7mgfVufADnHWN#H*2@%hef@ZLeR(U?kmGH?4P(G50wXkGcVoK#g*XmztJQM2Lij3E z;uXGPp*;cdcxF7N(Jcb8fB*01O5D3PM8T0e2yj+9@f8~fb7}ctQw@I~`hr{NW=fz4 z>rExHUrKmSUO*a;@8orR?hzg`7dMc!#`Oz!(&>#ePuqv|@rtS5o>pb9$k7XSI2i{^ z9{zL_B^5$m+5;blP1R5E5x;{OHVc0P=_gtWHMBxse)G*Y-_t#J#?z=5s-R;&{Gft% zv=K>n)mBRSpc1+xd6!IY(dWiUzV8m>KTf-2E~Sz!cd>Dc;rSuGOE?DX4(Y2Lc%Mju z4JB09${m5xzzV$n#LYAD+_);q>=w1|rPs&I&y@8bT<^O1QSuC%(3wDpHCh7h!bgTK zKeIa1B!~=GFTvOH{d;R+)+?!X+ZH5eMk>G857A@V=cJq@&TC7^Ycmh=<9EXcsJKu( zoRS~c^w`pIAM%s1$Cgf#&uVq}@jFpodaMuNI<6M0d}WlZhacs)a=$JyX)hCy&OcB7)r}KK;)QX&+U@KAErS)=(P|G?7M}se zddH_zNIUMz63#6yE)MP*&=XDMb`F!HaS8C_-`M3y!@wwZ~%vh?~cy-Q=8^{JqS#&-OfJ?%C^_c~HS8sHZOJn8s6b`d?nnju7|hy_IRZW*=r zXyl~BTQB@Omr3(rxgxb*IbSl;xS;Sw5b3t1q9FK3rvq9!6k$sY1k5W^AA$`Pm3D#` z%vDg?A{J#BK%BvdI7L$cDMuiRoz&*=|(@pG?ZE;UafX&l@vq%h58vnh6QWF zOo;`yUpnH>b~8ZL7YP`;PU*l^+@|dU5?(5S`G&J$9Ab@BS^)J@0qTz)krVgUPQ0|w z*_Bc9%7E-61N|CHgX^Pr-)$5hSA&XYPldUSp#Ia0&)|gvgMpBVpLbtWJ(G%lMuoM{q;& z2J4qIyMYy3sb;IJ*t=&}Ea})VmYx`BOiX$>t(~MIzf!5nVNCXPk1m^9d9JJsIim^Q zf{vC>3_4T_h8`Z^fq=XkzI0Xo-;NIV|RgIBr&2B%u#g$F)bNJlY? z%=gFOIvtCvQFN5)NL$x`_nrEb9vQQeNm!7LuyO zT8#&^3ND=od`Ob4ha5-87RB@AoLVbZ_bZO>07aq)d#9`1!?Dt}$bMDK1-$#Md8#z+ zwAMTyF|6~S^0m3|H(TuBY9)UVa+RCxL}U z<3%~lf}?x-;IF}+loQMHE9u&}k_v(Rw9#YSqrVC}dp4uY!Aq*4ELN+U@8|`X2llAT zW>Ty4_hX^UeWVi5oM1piRVNLC7mf&HG{69oq|_lo0n&A0mWj4y3ocBa^dA zzTP>F9*IRVze323>r4MPbFP?ce!&LBgg2B)zlE8Np1~&|>I3HK27KlM-J0q1ex4Wd z+Ck&GP;pwX&2Z$#^IdzVIO#?|d4o5eo)KX~S%^UCH{^E6FV-UvYmOd<0z`fuB}vGC ztFj9{sF%h8?xx8t3;>~_Q}<)T0(Nf6vGY@2(zDBE!N|mHUn^)wXM`tcmwWDx0tAta ziRZ@a$);@MwG^CbKpzBk&G870 z?ovhaDtlwfsOT8?yfMV_a#3O9WP3myFM>K=!Tq4p8>-@XrCQC7IG%azUP_M0Nqi*U>6c*YX%@rf|tBb-VZz)5FtMR-!1J?wYr~CC#XqD9QLLf ziN3}1*}6H7iXU47h6!~Xaxl!%S9J~=^t{0_`JyPV8@7Br;K zxABuag7e=v_t1QT4~nXtkk!1830W2VJv*bI*l6HDTqSnanAtdrd(naWdyCursnaQo z@A_OObOgv_(oyf_go9MMxUH&?pt)<>4-<&2Qux2f5nn0y<~21UpQkpe+x zvq2=@63Pa}#KMhiP!tp8P48@w&2G%6?6IHCVw5(-lq?347(!%a1OG@P|KFOQ{uz(D zSaZ~#_D?UAIf;ABgrDj6=3n`7Zvu1FrIJw(HCTJekH{j~9QE9sS#+WPQ~F5{O7u59_?pHWc+V3&FHdPAQ&K-GF)#IuX2*-Nmz693>Zpd1g;vIoe}v|ia}CV(iWSBny$GMNle)KBfX+XQ=(vt8RZ=~~O| zMdYm_WSYl)poP=aod*-O*nij!55zzmI1G|$ACN6y{m{nQ&PF$&&^(tOOw2ogmlrF> z*z(WHLG`{BhvtQkwH>8#*eILJP*=6Z%7Udzk3omlv>isV2zE6u)@vpy zrZ&=CzN;kA>1afH3*D!>0?P27$>6v-a$lDvDFO)?cyt-q7In|`7XEb9Ws~ofRPg4I z#)%5=k)6i^^VneC@#oQa@^M(8?&V<^0k4~kdVxqe2WoCXt!{K(9e;G2N(RvqbC1&r z?$F=3nmIw$MNq)$_0XWO{w)%rlkZ)`r$Jms3 z9;Mmr>RzhmzDj3&7=b-PD=yesa%Nn+u_F1d-B|>(c<#B*L=*2VJtWif$KY~mY_TZq zAqCp>%cts>zuXo(bVqjWa5lPZ5~Anru(`(cv-DW)^KEQIs=AY}-7ky5lLw$dINDS~ z-Yh=4xHQVrQP^*`h$1Bll$PF{mO(B4DbZ=SgeL{C+*4>;=VGR3A{V#QNp~hDl-j4z$Rr9=-fjlv1 zdwNT=5AR~z2Hk|ORH0Obx8bmu06{lPdpgyZ>lxg72(mDWg>EVGp+sY9V!i2Ya>9V4 zAi2Xg+DWuW$wtm`5Z{uIlL53{6C+td1oz#<$TU`z%*6PR*RJa3Q)QGoZ6O7qHNqg7 zQrXd7v-qIL8hr+wl4KXaDYIB*6=3T=qy5nNM0oCv=S%Q!ozf&{FGCEKIQa~OlLQcf}ghA)8;J%Wyu_z zdr%s=-|ff@fN|uB=zAmX4+*mWw}ku3c<^&)-`Sad?(93q(_zoP-9U>yG$!U0BCwyl z&9)Es*TZbq8Mfy=1A$SU88+;YFpP>iXU1JlRoZ>>hMRL`3A+;T11M#U@vHbZgGz<|ivd6Ve2C^QouNWxkWO|M_;6?t8};54*|P2@bbNkWaRjRmuG zusZ5nGoB!F)fLnAH_^CqY1{6Y4>sm851ON8ab120dM#OGV!A!Lv%;}s zG2j9be2c>EM7Al?P8x-~lTi52z&03I{B&#P=y2@Vd1J z;A}j;sMLL-T;h2xaCa5nsMQmC3pBvy%%{2(xnB6>vpDTS5YHhHqn;4NAObN;=E>wT z0`dF-J`2#SKf`kIZ2PG_n^yT!PzZb+?HU<}s0^kYGt)Syz|2!pvg~@ zE-}{?9HPF&yqm&Ofh3W-6fP`0mooAaz~eXx%92x8Jqo0?x>Ut5j%R645|R#%Xy>Gx ze7Diq$i|Uad8L#h8mR!q2@e;ealy;#MohqEAen0r%`F{7P6q`vr z!ARW(nQ`JV>{NS0z`kigS|&i4z}_&#MAjN1!LR3O2&}b9m*oA5*iiWM8Y_*umU*!q zj&!^^)N&&U;j)kE{0!gw?-ij$;F=T7gnwK%CDtn_z+b5)@OjR<6N8l(++2BA<2{0M znf+K_ycoUp$Pc4#$<1i7*NjHN(CA`3*L>u_agdGrz>6;(2lcjf97K)t;No#$&g5{` z|9ck5)AN8>S#E$L(0L$d{_DMPsJ{@_f-`4A6gm^8^JgF6k|`I38W-z&nvu>V zMp=3bi=J0ecasQoym+JAD<)9SgGlswFX82byf4?8|3n}zmTbaIoAH0=(Q{NXm(J*1 zaUZq#--5V*hJXCoBRZr5+^aZlrz3#4?@Wfrpx*)ALnAl9o2{7pr4P7Y*%e>gm;-=s zqC32i%ElXLhq)h*sD5+(!a?|?HL+(+qG`4J;_v@_IsjD-gtGV&P+_xP{Fx!GcmR^ zVGrl1SwWZ*LIC$7Yhy+{2k8$Fw~Ye5sfk<|(VQCwiBsr}DdJfzhVvw)=e)J{ymQ^{ zv+Mh|qtGPHFHh35?F6kEsu@VfKP_BM(1Gb9wZD%4B|bA_dcZ(Lt6I*tgRL(2Nw^Sh4OC>$ia4GUJNYfvTv%m1 zh_f{6bEBXaY>RZsgxKY8dhRv%$k20}6=Kyo_A>vIuDR>g$7%-j1{&*-y>snT8t6np z%hzGu3AR#2@%)StL@$+g>y;!6UB9i@B3CQYnnK5}Js`x67SC?6Y_`7&Kr7?8J$IRB zBh>|oN3@j1iU!l4Pwp0!6utsCzx!Z=J8sUZ*~A3stMV{?RY@IL^;!C=Trzii+m{6_ z0-a8EvoT8m^rJ~1Y;=HhChoORlk+JRw@`beRCuX6d?kMsl?3SDT1uKM3wC7lvUS

    bKMfx!JGoe&NUVcWOO)B8GMpLm%Rz4xTp2#jZ=ZiPj3=}CT{1@B+;{&N zydI54+<+Jl34=2D*>=v4D4EV~I3v%1Y~9ZE(%I+nbVu8OG76Wy%%1yl=`le`ZaepL+f1`*%=#os zX18c5G$N34@K=ThF#45NF6xd8V6=&;Xiw(eS2FgHQmA>vNRu=?l<^q=7o)%qezB8# ze1Utol9)_ZVP8F;4h(X`=+Wp}QA9eLhBRW0y6-&?LXwVceZPS@EF9)g3%&b%xhuEz z0d0+}r<_chBv*H7nmLlIcs6dgHS*WeS*#>iBxZSKTcd|x+>scTh)xR zwFg2FJ@VIH7B0@yfhxGo36QC!MAfR4Muj%G*YSp_iijGR&K3u0nH?=ME|G? z&KT~VjgrjVoyw*#OZ03d3(vYqZOrLD=jE+TzAK0;F{U~6V6r;Y#9^qjn2HAjRY(QG zb-j`%SYju3xU73FJhfg6O)zn{<-XThmnFBbrg*&b?x3@j^G$h}b9Gw+Ifv7!e^^*# z$80_(MyDG(75HWvFf`_Z1!u@Z{;)q%>9>^zJmhP0MCB{BOpO-$s^%;fsT({_=AGlP7{#QZ9B6+f!_3$=9Alfuai}Vl+>O(ARVtxB|CFi}_x;Un-`~!- zi$9tF&-eM^duohd<$*T9s7EU=69aa;0MpOZNBiC!uXsrFgzLfMl7tx7QgHEpwHl~o z3LET6P$}e{)t{Py#U0(Z?x6b8T#ewLbu{4ntQmQ1T@3KV(uucwTKwY##8&6atks)4 z;+rXaX@m}DxxE|YTMABA02NPqfc^u-i_esspGQ452e+t=8((z?H)@S8)fGZk_u}wI z{tyWnAjJ^Kzb~GikmvA5x>S~{Qb(Jw71`l_P~8B)ouOyP(VjQLar}AImT`OwlBfX| zYmPA>V`gAn*30{S&f{$DWt;^OM0Jzr(it){M5O|L1trgy$$E(H5-)tGN^uK3^ZY{N zru-B$UUn%*VGqcKO=$Q%@CCEIa%#$K8~luXH@#qy!X z1!-Ufi}ocqt8azFzY8fj|BB`&o&0l}+<-|rzXWCaH&-n}8YABYr3ILb$21D`w#Q~+ z?YMgaS&sZ5S87IGqfs)MoDtZl_VxBXlOckTt=uzHPC4kB&ZxOw3#?bh+ndN&mCQw& z62Q@N@bz+;Ke2U^>>)ugDY<*6$z9}3{2-q3c{ziNn;|%)~qGrjwkRS-nMMHl8fv*_@=%4?N8# z5?}AOAX*!d6TH$c!^)k5w6bD!CF@cs_*=uOt9H!r?cIJQ`r(`XLefdsEMEvmgOW4pq{~fqO&P{pJ47>QACpML(ZgV-oI=z0Z`Ih-l9LbB zt*#Ffb_PxIw@MWej1+uNmg^Xk$z3{~^&n62D~hg)fkd<@!X21&O@LmP7%Cd0-Dkyl z70KP!*p=L)zY#<|dc^D#UE2qc&0HTqg}_r$QwTi8@j@XXQmw?=YgM*;v>N=`wb#2f zh`eBoHkJINA%c_-qe)R8BNItY_DC8F)v3t_48kJAGM#AaAp@ubB#M@ zBYDa_9a9T&C6G#&5~EZixlMv-pp+O4?m9C_%F!o~YP*ph;&Ilal{ujOXrjr_t~onX z?U&CbB$i*Ahc5SC4xTCh&q10Ug?J;Mde8j4AnR<^DHwOVINFkjF(~y43=Satc>TJO zA|$y@2fKa2ASi9N(R*Y2fGYn&?~P`4V@kq@lni>d@kw5|M|CYgyLVe&*w1vRuR=Xz zyN#4oq9)+Xow#Rm!47r^5gEosTX&A75+<|B-E%48XPOT!WV$|58=|H7`n7-s_`T|g zkKEi4Q41;+;bX34C$#}DTA z=7ey48-ea)(ezH4DUcSUy^T2#_Ia*-xzo|;Hu@>=S(ZYu`i>!q6oNYb-pbJs0$2n3 zCVHUt5th?2QSDB|YcrW$EiVwo(@DoHO|I8O4fX>x4w`aj4$qx8DNUOc&CUp)`YQDk z1p|2nrZ}6%(e$#k=`&vcJ=hU!Ce2eX$B|?4wYFpr7l!O3ng=OJS?r%2Gq>@#(M~}m z*Mmd7q5L}XeT*0=$Q@Xo4hj}PRYR}BxdgZk<|UC!2MLzhsk1&5yN#D*BOx-!lm+?I zj&Nc25H5rxB5L&h;Y|;pwn&KVciY|R@N4VR+adZ;Lwx~atPu^E;wCFMqMXgA$czw6 zIiKQ6K2^8@DVbW8(rX-oc>M{|mH^hBtOr#`sIZV^H{>&$z<+;jBSCaBUcth6Fvgs` zF$bl;(pxMCX2p(!O_YKDFkD#p4#vijiPJtLuz{5h*hoAx@kgIa1yJFj5TFxWGGCO7 zqjVaQdQ%e>()Ihdj#%XZ=|?f4q8W+(hx(vW&%Lx6#$Bss#_^_PW7w?K2TF6mPH0&r z>~k3d8}3LK>92TlJ*8~BmDy?0bB1I^8!A5x-&5<&iqqMgr`~Zt&KERo*w^)XMeY}V zL)6T&6@M$wJnPXBHttpq;@K_E+7)A6A3sU`AUxX1=nOW+j5aDIzGVlSmPgGaxHAy9 z#pIpEbMnqUBdf%ZbQwL;8qDs(P2%|T$hiZ9xmi3tsYbbuWYikUGz)XwOAmgMP#W^; z!AZIc7kw=2{7W$@_JAd}%Xhq5%|Euw{BYdu5l~Ar*y^{OYES#9=5?28lw`N`{Cji< zfss8f%CbGOO^+v;q~Rz`2X-9a5T*F!2K)>%NRx371YdXgnG0OzdFq{d;E;UZO+C;n z*wjNZ4-z{CyQwW{8@!rI?m%61qY+hr`mrxXZ3hawVcsWY5ZcA_*$q%!X%uS*KVT!h zbn2uOt6l7Xc50nlrldqJeQXY+^chL}XB|#{fTWMwWI&Q2>B^5>k^KFUBBc)jXN~g> z$L6TDd8o4a<+e<3)Eq;(rQ>6e`YeqJR(}H~wLOH!4)hb`YU98V6!zb_yWNop_ZwT+ zEV{k<`3JD{Uv_k(bUF(+goU;)SQ%T|aFh8sN+*|5@XxuCTuGFX>>(5rJc84kVlWR0 z(O8N5e=OI#LmoJNy+p-6U+rGxp{jfbzLMqIUxKXmjTg&-BQPTd0H=U zak|W>C+Ys#6+@q!la?Gx(7gI8Gz3w=oo_59Do3p3+vbZ0(f*}^$}{^Pb#i0c>z-y)0^wipP5XrxEd)yPfAG6+|M=}+zvW!& z(|!PFK$yP=itwdbEANR=GY6~i`mp<@>p|ZjX(ehMROzKW!0yU>+6Jh<`ZT6BCleHi zA?%hUp8lY?ca;8hB_oM|b%V5lEW|pPH87Wv_Ou;CB+1=}mq|1OwKh|%Yz~513$U=g z%|lSi)xF9fQ>E@?mP_V(vZeE5mDk%^JBs;@8r+{|Ild$wBr}}+R{i5}F$+rx#@`E{ z-+?8<=vB-C9^>+#5r(S^CB+rWXdxiiRuix~-Rp39^Cx_U0Q8axLW9kpHI}z|q^=}$ zsVOC|&Nd?lpBQ?{xPhOy(Gy66L7QM~m`&>Zm+$JBHKaHQNXRUERd{6<)O&Qc5b@e3opUnhn0J z!iX2y>EP5#q))uHcIm4&TV=M-FWL$1EiSAI(5BdGZjb)gs24JdV>RpMJw+bXSySzR znXz})5Xb^pu~k*mOx84ym~i1w|Nh56ay}gSW*e&a^n3W0;vWOvM zFt74pv7Uc`E%id|)a4DF-h$f=m)R5n*NHVf z!KZ;2Le0k^*B?G=q)sYJp6=k$2_W1YTVKK?_=0cqB)*$vHzt#JzBW@KkDAb#YcAQ} z1uj`vRyx~jV--$|wOMJlOkP`t6F4nV4EB$KmtD-w5IVW0#LOEHR?m5|C2gXuDi~<05_?`-xpbawJIIrf?$Gp4^qOxb@-Cl;61rix}b! zRlv^S!{38I<_2L88{~X(U?)fORF-AGXq{{kDFu1uL#e5m5AAF7Hmv63dZnd~VVu7n z9!i&^HBP#9jN6lz`+oqt+|5@uXo}2dJes2HOhrRs!Qd*vWkK3i4!&tM&>~KX1UFbU zvG7SOSomZ-9}z8BpDd7VU|%_SxRqEh_B(S#3Jrid{mKKdSiZMR0GOunv_}$l+O@&) zq}#}M#qs`%SrP*IE8$NdfbBDN#@XaD%E!xM$wfh@6Hl|xf%h~rF7d37IA7ohi~9-a zCYOsIfYq9Tb2X%k%e}$MMZ9Qd>5Tvn@oP#oS*Y=%l-g}Z${nNhh93G3HaVVAA5f2L z`5jOnxOnSWwuJcp;00{1R9GrM)}g_UC40pu%@R}()K7NA{3~B-kP)|C#Jd-}f z2BKyw;iTjAj#;H+O?DujE5p|`m&DaHUlmnE=)>s_vlu`_l8ndHG`yrPqPVTIi&~%d?t})W3F#k_I)%gE>}>4}LWVR@Vth=4qdrT5{P5Y3xPh zNw}%#l2bx5vtH#Uo`j0kW?$Buni9%NC{_PcqVtVU>?J1Vy8D{v1P(p_NL_;*6*snQ zBq%Z6vPfSSx@9>>C-t)o0&lW?6N;2uJNRG>HkQ>p#&Oy8;%(1LamPO)xaAvn{)=P5b05#Y?UK@ zj+P-|jm=Cn|Jsi86QdY zH<&x4v=?F^>-KP_vu^kQ^XAd-;q(j%Wk{4|c6&Trf|g{XAZL;X@TaPYa%R+4`J8M2 z(|MH6yJSi?}KOx53M0Ogu0y*Ty^Z7jBchA1lVDWic?W|W9)>`f9day zQ4y$zleU-zb3QFr6s3Gxe^LznkjZl;%}_8scnI^6Ow7P>p|Q91QCy0{TxRpjI&ED5 ztDVwBrc_1_exsXCk8}#9w=7h88{ds5?b6$r{`~9o+%(ltWGn>cxMHv6mGXJ&0=g*i zZfT0z8Yua`ULuoTuP72_77ST0V9>rv$OO;iZSl)M(PxF2#9&}RK2NppwiXhP z@Xx-biH~wgyYSD7*6ZEHGpdUOo0#aUsKetcS_hc-$k_%gZ#?hAqZUA3+IQ>DT_ls& zq>|bk^5vnaS2QTLem!6k)+QvoOH63VXnadoHy$YwVzJ}S*jnNj7{=*z6ooGN{0tXc zF4B_3;RKXq*I&hpOlUkf#k#52>)QNtwu!~j*I?{ol5LKY znDXe;8>+gvFYtQknb!kxvpXSi4PR;}cvV<;4*5B|v@*{6GG`DE$(MLtpxm%9V&W`0 zctPD#TNIAKqTWimURY{a+l%Yt)!lcS!N$Y{hr_U@!PtSG-27~{UzA8!Y5SU#4N0QB zhb0S`LKA@BFpQolY|XVY$B5l%PPhZS$MbMSoaY-pFRsMXZJZ+$koQ0VG^V?-(_J;D zTQZ_&rn|J$U4^GRO-XDy7+-P+pxZ4w!YbF!$AQVSsiUAg6gBcKR!q`k48%~xPI42?nMcVP0oGvM zVDOjOxUe)pe(&Btu1^a^qe`NxM|XQjb2%Wy+s9kb5h;uzth{lESXVbV4*c1UdiWPS zI&b%<1IZ_@*eg8IB41JM0?|70J)_pkXTUc902YSzZm|MH`M`}d>%7GlGY)00%&({I z%+-Yc{Oe?{T-JqWf;r|XA1(_^&T>~qmY;7fXRt~otUO8o5crG%cvE08_m{ku`FcTQ zqx8vnTgu3M7L|}a&Cm*RFz-e9$J+^oK3Gr??|BoYuPaPJ84IpZlg6;pU$UN=k8nVZ zS&-WAx6CFCEQsYZJ0Tlo)%zAl$`=XVr9ODTZP&I@H{YMvCgYk~o=BxIvbBIwsF!QI zQWCb>Val0%O)NPbHfTDehN#_X4`ds?QI5yTkIP4{G`DDc*q|H~4G0c;rUmdGS11xW zBvUk}6y=fif+mjGBj)l&y3JFg@ptvF1+2c?yM|@jyU_)b$)5q5V9t;o1^5f9JHJsg z-B&y<2L9~Y^CFvjXW5jAO=aH&&a)8j`(=Pw*JQ*=7ngE%mo+5`s@%lf+^cg~6yV>d zUwaAeIGco6aba@4U%W@fV{WcY@a+CBKHW?C5%4e%^cads?e+y+7@))({24nEoRNhs zXeHaGSszb)9!$2)MmMCP_>o9c?di$Pk})&!e3BB(v`6mEK6A`b7;I0Hnm8G*Wbf39c{RoNCFWdy_9|!i(PB6qg#5{?KCcTPoFf5I?@!9e@7Z;9FG$eHH>RJ37)WU8=%~xl?6hFSF5OtL@oGbtAC&r`>`Og-$v_aeLGpRQ5X7jeqtzIXs2W1Tgb3n z5}-LLLfg1`@8n_5F(_r}nYJIb)N#a?nq)l-Dk+L`*%y`;k?_hC=H-&7XHrLGBa=xS zM_KY&jY0Q(JRBs-#C20b%RG18s|cL3bkgG}3C&#E#bEWR+y-V&`?y|PP>lIsZ^|Y? z9V%(gNje*>)s~2)LrkI+*|@9Was_?UqGsUbDqk-?DYThzDp8|yYMxdSERHb7@>fjz zkW@|rqdx6ZaKCE57)yPu;X^YnV9nVn`w>eno}8hzD~8kYJj&*y8}R3H7Y&J-SHDFK zQ2>-XtayXnb6#h>gWDnE6*TP!X&El1o#LoFwzkx9jP)YGnO>_D*e|r%$xYRySv)o_ zue@_#Ct5}>z~Ma!Wo6BMX6>x(l>YqFbS#s{SamF4J+13wuwc|}bGl6U7C3@w?S94y zEDyK!B>#Y@!%xjBk>ARKozUD}N5^ZN*M*jmD0NHpR#f1z^dOO~jJAkO%;ur?>V$Z= z#@!8YMQ(~8+9QX^Mm_q+JKk+H=_3j4fW-6|FSjHyo@MQ!R%$&r*j0P5=cDnng;PhV zr(YL^9|A~CFXz544xWn*=6yJq0>rlS%TSU_L9-x1yf+8aXshRew5jn@_saV`x|+$1-i z#Dw0w!8-cuol%dM=^|TZCUeJZ(l}<>-geXVln3uaA`(=IPDWh^|JsAVpD2FFbx>8v z`#{d4pJO%aDfm}NreB<`-qYtLPu0XXXe z#dbX<$zw{BYR5~3{kk4hGU)?F3A<2C_uSWtHu>xP$AoNa>77yX^Uie6rlG{ENkpS@p!vMv$R)1BD@RJo7jB1yO4jt zyYTJa+kO0tyycHYX_&;v+kT0iFPqR%NU6#VliwTIdT2LE(h-3QFC){#nFxMVlvyl+ ztYkQ}>7#HOyFzt5op3_~Bhc{?Tt~T-`-H_II_k-16qY^L&z~pr3etJ!{c5F_$6^j= z!Fuz%5S@=36wVwI^+Y=Ds-9ds2iQ%&rkr#QSgGYwA|Y(_Z3&&yk`~5${Vf!?ciSWV z-eZ7CXMHHpLy7qSJh)dgKywO;b^YWd(=P0myDZK^b?18U9bE#cz?MtF^gpS2-fYyT zN2cjgc(we>gbhP{1<1b|%fR65c-l$Qh0q^|vu1q&{k5-&yiFHK+LW zmVQDWIDVMd>gC{sQjVHhe@ecw3%@bXAGxSUxXoou>U+m`Y>atjY09)+uMeA&Z3Yp^g= zC+^W&Q^b@!d#y8c4g89@-rj}qFjV^q~=bko+wP84fVKOBL*^?2XN@ ziKX@y!NTMIl#6}~!P3Fmx6c<0jF89I?4HPgS0MHs^JWOZNBP#6U9)c`hh`mZcW+ zn};p6HOQW&F4+lCZI7miM6yNKyrI?jz;>98`cUPL zY@HI#mHDEuRdHouPZJZcKKCByLog;RuNrdyAYl{J972Lf;4XXvE2m;MquE*qrF34{s(R5x z6&q8YC3pNdeVrH^ErA|V2xmHkLYRtKk{R#QA+XGfHy*CMWzX9Zb)?ery>3uOS|7Vf z8EKg$eS_X0sWzj|U0`N3=JHs5{U({hB078coCy<{Z-MGdfp}qc=@iO^*^*F*PN_U< zvRV=%O5QD*U?%!+3ib(ku1RL>{QwR@zTfZmS~^bVedu<^9rRk1j`~S;`qo=Am6;bS zG-!D3w$Sw!bIrNTcPXyV2eQ*6UHv<;*1Hnc7nl5F8^NS@W#S}YcY_Q2;lLiOOzGk+ zapZK8AaC=vSuw)pTn6$e2&&tDw{I$W{q7Nu_KKt|@^y-R%-(Hjar| zR0i|5bdi*Ar0HywM4_u)eX6LeX-#n&HA{TN!wT__YMh9X`%1@aWv2R_Z+Yy-LP>*^ z0zc7J-wl>n9>fk$5_nhJf?3z=%Hms^s4njb=W2PTn-iR+epPV3-tH*R?_S10ar9!L<8Q4v+4Mbuh+Ym2G1G`9S%mF9`(JMs9cV5-IL&TaPcv5 zZAX1>+F3(_3M0DhckC#JoRqS)^CIV@WYjz9QEjW2!pUKO*Gh+l(r}X(Ll~=3tV4U# zu*sHshb=|rQUu$meb>dfccO6&@(8uvo9n$X=V4yujNxjGxvZM?#k7GMlx4ow@ z99NtNTWoOyVA<{&NyGi1PSip85h8kS&#;U2NoGV${mk=({XReS-L^ig(Fr+JNztD% zLv-XXL>ou#kPSvyg2b91u6mAp1S5gK@41ranKZyNCg_NET<>s>!W9;;DdJq&^A!tq zP!ExL{T>L_{>%^EH@Wf(#}Pv zsk7;sO``?lPlEDd2}!E~Z0nB1mDFw$G7;4zn%sgHv1uvXZ?WBp{JEaesv=Gsg6r6a z`t3TuXL1;b)p|I~f5-0=L|4Hr(6pYI=JU zYfFCspY_$1uYFrXt-cs*8|BNZJ84a{1{=&5@Tr%XityT8OQ0Y-=_j@ony6^-xXBL( zv(W%N*gUQCkM~^Z0%?vXNf=I&{EpqH2(=AuNYG0%O$(hS@$?oAEj*47qB9<29}r!) z{U;9e5A{;kZLf3msYzg?dEa<^sZE@zW0i+1YLi+~_N3J~zS-@0EX`uyDDxHdkXOH` z78bqg)_YZC;`;JUCGoUJ9yYMbljM3QJk*TRp0KJu9Cv#XkbJXT=Zn3^@JAg2vp`2- zIrs*j#AK{%h%Dx-`Uumb*Tcc4jRt+RbOQ%@lJz0d3SpI9|9|Mk?TS^>>|)><=46_L z$#5;rfe>7F7+|=r8m=fW<*_XJ?`GNK7$$ z<;CThj=E5;UduBbO>davh9b#@U3oBDjY9jVLGx&$O+?dj5$4RXKseURn-l->+Yc-H zpyK1K4xx-~7KfTJ3)^V+i3<=IOSmEAbr_?|FlIc6K5OA-K#p~MRRe%x@DOYKzujS0 zB#}*C%W1n(U0BX|Q=!yL=*MwvpSEwIhsbyk?yI0V^sT69|3Nb9aD>qy%i8qdOyam8Nvu;N_}!OH``CYmrvtl8Y|y>Ms_6KI<0LlE{$IHH(%$RonGVxt7R z<}vHrWW)<%CD{vAHA@iPgHEZtS4j!)1}CvgisL&xx&hc5=Fc{0a?((%c-iFG#V6w%XH9?W;>wI1-joC9B?L!-f5{dO3|Q?viF z$(VM@YZDC@i_`k}l_;<5PdU{WA3&tpyV}`&WJuNv)r*P5-deU7VXiZej-v0`rzVm= zhl$$KtZnM`!;s$qk;=ew#_$VxFH{YZ@rYk$PI&OXwq88yhixN_v4OOKr?QG7#F{FnXC%_(fEag%k?%eR1`7Af{BRJPT3{g%omu4J^toJ2DnzqeQUPLSa`&UDJ zB@SLn>ZNc)6;I}qh%ekbZHrWBVT;^sO@93TFZAPzUtr^@obnxJO-OMS?5|MyUVxwDZET8Qta`ept&!W58>pJzLKgeoM?6^337}nN#L* zIGZFlX3Ax443pHOuA^;XH)yT|<@>0!xXt<1I2GOG8 ze$E+qz_nygFiVBC?s;P*joU(2*9<3k5aJ%-tH^gp1d9<9v*L3XIh$IwSDDYkS9yMk zKke$RP%`kr(wIj72yk-?&*%1s=8g&#v$K}N!&fz(9=j5_ENb3%8q1XRy*s_$cR_{3OA75Cn8g9U~aJ zt0ydJ?i6j^823o}W!+L+lFn|(8lF4R-%!DVQD4h-O@Obp)+@b^i^(VyP9c#a5tW&2 zJrfs)_Xv~F%**CdRB&*#EGRahTY)IYxQ0#)E?1wBo<~|6-wnW>f$d~lCZ_S+%r4^$ zY`b1*t+LGrGku&E{gLH7vZr=X=yc>qQC@p&{)_tc<_=4$K5j)II++1UuV#X)Xfz$r zZ@+TIxivPs+=bsw!~pfcb} z8d~nsv`>F)xBN`Cj~nO)F0L@3N20FvN+&@yo2vIHAk8`PvS~D2b zf&j6v=)29}%eVFR%R{Ad03}O`u~V;K=Q;(X;OhemrF9YOl^}E0EbKS<;;S!S4;6P? zc-fE-HAE52LT9Q!T8=q)4x^0ucS)|~`wgpSydH?F$i!Jf7?IFpm<6?|w+IMw^xB%q zrtT$d6Y*!57?qb=NkW5WupZ1!>n)|gHmWsfRvw6eF>GtjLepE&YiM5qJn9;H9cHY} zS7hC5vVgTxb8$gHueB&RIvu>+2ZVtuHTlOdg7uPhntx5`F83kJwvpXKhjlOuNH z1=3!LBO!0JgOc#p>D->O6))1#J7r5gWfcsGRb-FZ(mQ2WIA!a>!K^n&AW*=8JRMk* zj+bu4g%AW5RB27fOz5PrRqdRojpNi4uicced(ch__6E|)a~~-@3o}&BC3d}&kfyz`wv=KQe1f>$mf_;a2xEk zW~uE4|EcGk4{4u_%o)%rPsMkWq+Onh>CeAzdCK33<`{B2@tzr|jE8j%$ro)%kf(+= zBpdJz8eAwPo)4Y~`B`@|k^+$dL*BoA@?1W!#25=~j%Y~aQrd`;9ygJQ(Sz8!7E%v# z0(0SJ%g$*`(lF+I``206g+LmX9gcX$#q|D9A|CZdlXmja|y+7tV$UXSJ zZJLbaj4K<-659nXEeaHzxQ5qRI=Q~EF%2=^-$Jl?(T(Oo{9uJf;Da;~_Fg*?)e6qE z%wP@9Jzh~ARBe7(XyPi5FsfC<*>0$vB(wSS4kgrEsQe@YF8r>1`5nNzLgE}x(JW)r z`SZlg)#MfuM|O9V7?i{?R{6oUQ!+Q8vJe%7U_8S2D~9Ia96fu_Glm8CY$5{-?IvXa zCq$oAC>mXx7;G(qPWzBbW`QE;Y;;4z=_P|`Mh+;?Z77n95=H`Fh~&oIe5u);!r&+# zq_Ki~O=e1UuCO;Ylfog7%#SkLEVc*Mu@F9~Xz;}+HCD|DeK5~jc%sP`QDaCd% z=chWy7_XRR#!o9&91EMfOsEEN!wC||D$-&5@UUPbwHf>d_s5KmQ}HdYNh(GcvWk6@ zijkjHyaOxHg{3aJOz&F`0A^?F+S$X`s8HOOx|?S;a$jI)Yhf6UZzk z^YpCZxw!Y%$0^(UTz4$CdC}VDX3*b}CO28impfn}Uo*|?fgmo(4RRyrUeju$43H>V zyUR7?*feJ+-zexBW_fKnE@u6$5|wxR5xpp!2edakY%F=qhtrbwVWo1gC^_fm4G+fy z&Ekq|QF+D|u_>xxfk-Q^X@ANAqG;HkqGf-~t$N9226`)!F0t_Q)PNUP#-Z}k&Dz{Y zKXgqISy=dw*GAl38=7)9_IG!XOa*0Sw%dFu^pcu%9=v+>2UNEIU_N<}@P)Dt4>kdY z_a2WSDYef50sx$m+W;tQ{r`OVXrB1X_giEJx9Ef=au@oNaYm^V*8I;0Jk7zAx)oW8 ztB>T)PL0yZ>?(`hS=Q9Ktkp4bPAX#>mlm zJER5jjwVth{iudnZ;dUeLHvMF`bYES-;=`PkFU&=mr^_DeK)9ZhguW8#y*&7xd*Em zr+Be-wDjfjyBthC3bPH8|9>VM1YLC$02UHCbX5H0{=A`G>X$m(INoqK6~!SA9t7v$ zXzsEYX@6L|+ACfRG~HHH4J7g#j|X&ae|nOj&_nt)#~zu_xQ_~6z(2{7%RT2etjACJ z!R)KuCD5Egp*A*yn~g&;pqPwg;)g3{q^H#Ao_0BVuYlSJ zK27qH5Mv8n=~_4z6HZBO%)C2lV}*1jxZ^Q*X9@Vqj4LsrmfhT8Qy3COLg5KX^T|N= zboq5YmX=%{?oH@oSGX1YhC%}Q&Vi3)$&UL_fd=H{vPtrD1lQELK`VCgmUyCxHyna3 z9SfSx#-T_W7W8*6AIZ(?WbxDk{2Hjilhl@tHzRdr?PkZ!5!>cyHo42DUD~*7!&+aY zc{cq_k>+`~zpK9|sbkBeCv9gz7*ID08s#^u{OMQ?eS(}&^2|7KuefJMd~L6J-5g9h z)O58E zGG#$7%Ax6qnE2ycnyuyW;b>sw9r`a$Q^Izl*W2|M(29^;n9h%FBai1}^Bm?qf0hOy zf}xK|ks|3s!ri){G59$(tO;njw$8jLw3G_g<}^AtH*fg}%|9OZO5Y=`U$*19mIpm`p-u#6+YwxR;)4E*@^j z0+5U4d-cfq=f-)?>3>~LXEYiG8;!qrGSNt%wwmo%LLSNa5##DD)zdSVjC=T^0cRw6 zrd#`22C~)=xF}go7!N|^xJr^~h~?9qiaAmX@Yz%rgBBIVnf9e4zC@o6@j%u-Nv~&l zj-Gq#_hjzOru(qluP&?re)91+%%Js3b-=LzESo~kTad@1Y_0&XxvhB6sz$-Nqi4AUuQj- zv%2dv5{8?fXR8`NU}slocbm?~!NWTm{C;Oi@N{yJW-yN=nNJ+yYwjGwr6xU2?Z9iN zqtOkH-I>=uysw|GSg1(CB}tHqmxchT0v>|hnGsOtR)S7ZJ(v17W$ZdY_t#E}6cgsk2I1(+VT2})D-X0zD8cNEIu^_EV8Sae5WMZIjB z0WRh8q=Y^0(c%+&;Ys)OyZMDZWMpe&HHg!fpO)(;mHNh4m5Iz?BMg8qnQVYj6?8xHNk znBwJ;dZI|N=}Z3zYqWuIk3T%mnx!roLmFi!cd)Z1n?fqG`*Oo?y=8>v*EXWYZ+a%R&U(_m}=B!po! zFYmgC@G4SwhO&cqQl`OIywkSS)3)+YTd|oDHK05pL24r8tGKwYSn4-GTh9#P>3AW+ zh#+HdY4pZAdUe2saibS|qc=V?dJSJiK;F&K6Q2jC4@0q8UO+-ij(7yIA)Y*!nP%5> zrrrexJeu7iSQn0MV>^!wqom@GIw+qu4l| zhtO!@C^kp>4ka%LO91AZYT#=suE($?V9(Tbi2X&4c+t>LY6Z_x7&Z9ZN61OfHMnbeue|Pk)4d- zp#?INt%OfJ@2>P-Ban=`gb25eK!g2Kw97*WoF%6%!RhIhOp_!Hr*419pVokBXC0#H z(z+)Wdxs!3Dpk_gj}8#c%5y^4Kmp90y;qfT(s@qe>yy4-wGVHETpIP#D7y#&py}=U zAAJyxmLd=$a}Jpt0nihni3`^`=ZK++tIbg%I|*K8Qnk>iM)Zy0#S3KQ9CIX%vPC1D z7ffw~gO>5R-NJn@>z$1I_3~e`-c3SQgw)rqNb7gTwi!lnX#-58YYOKaPR^aTt8lPe4 zd3H6XHzj_;tI=FQB$S$m>%HIY>O&hyCo^2ddAWTu&hI=X4DT&x7~MsiNU#t&2aIQ0 zAiL(-gd7W-6N&8+zDtvFkNXFXpfu@oigyX+8zW4OLvLusF#&9}xttRo$04v@=?MM( zAlS<;N@7QqHq#y{?a&B}yIdT%9>OS-F<}z6PP9Ak%B9o!8RU#Q>yhs857ln1l#KG$ zv&$PJdiJenSr38ItKa&#gZJ@F^(h-o!)D!o^##+QwrX^+Kwi$$XKQWdx+8D6vQeLw z&`{hQUj_^I$vw1(i=&)QO~D&3NFRO9a5c;cH%G8;QKOU>WzW#kJZrDBY;=PVY1m$S z!(@wj;jI*9lQhh9PS;a8lQSTb)CqGJfA1n2G4|2Xs0 zn4Q`coOAJ(qpOR}*>v)Gy*}Brn=^jCqobjgVY8lG0c?a`ReKRjzA|j>87}58Qe3ix z7zsHwHLHqp`N@0{m>)`pCdoL7o=f0f3V9`so~sN%X^AXem*sRDblk)TaO3EJ##GHxemGy3zdlb{Xz z5)!{QsRxDm=WKX?E@S(OtCsL7aA6;kcZ1tj78*kPcZLnlfUxU z!j$pOySwdik)~)Ssa`wkXCO-v?3$s=NkoFHWcY1Cv_$CEMH!Y^Sfc@CW9lO-Q`CoH z(Qb)BvtPd0uWRWEUTn1&P^8_#Rzto6@uo9n0i|=OZYZiVx;1I;JI_bZZEg)i2vaFzG@8 zZ}rtJ4xEdW&p}!AV=jS8nUH`K-K%!tGWQFYd{&b@N)-1~{z?3^+Jo`O^XnPrqTry; zyF9SBT5K6q_$;2??i9Su`FQStI!dKW%3kk97k1h7ibC}+LE!;S{aJ#Bw?GlXt~)?@ z*SYRVHV-%XQUzzs6&w);vjv>0;k-u+>Sp2Aj)^tA0LMg zb5h2=cCi?X*U9uxCO25I@M=Tj{}YvaK+$KOvyHUqth?DPoM}47Crdp@pZlyw zBScso*+dGT=YR6k8Si4bFgs~&N0Wa}`EvaJ|KHx5F1c+b>!Sbh6czr{WJHxr44mwU zd%||x-8!c|gr(lv9Y-g0P$WP?MFKPcTB?2befPU^SOW%== zPl-o7t57INX|X}uNxzAufQ)H#?L;ZB@B$Qz(05$nVchuh?kNU?tPL+flPRbWrIC&! z*3wkXt+P<_@D^U~Ven)*2hotDcv(|zJCB>VH6a%k`KXq}lPf5`k?02%% z&i=5%aP{E4;p)K@_#}+s>Oj`E9qbtk!uh}*U&^#Cba&d|piafA==cD?9W+C)^6(!2 z(U{szWOq!22aZ9O!~X&c0_6X&xqGO4NDiV!L^ffzO3AX*BH1RJFlR*gbBv(orvZaR zf9*bn`c^2vdqc7EGl2XE6{=J$F_|c$O-S(dC>%p`&>D~%QT2i>>Sb0}AVWVqpN$Gh z;VXHzU#+n*7d;}KF2s?SP6dbx+JLC>&16ysqQ>y&a)7AHW`+Uu_+Nu8s z8DtCJwQS-eXq02NMh7&Tex(E-*Z6ALan0{GQB1g1o<>M;DqLL;Mr8IQBsE9a^K{QT zBeCzz@apzmpOs@yP$>@dLrEcPpc?xUB_?ZIjV5NT#IiK0Dw$R#>G;t7Mocu$IP!MU zi|=@?z`gkZaUAo;6C>&}$)iQNd88I2c=d8%t5jgzbCjjf2TY8rQL&VX8${wFrTyUT zy;(=JXApN*dQlJhL*78}zfgFb69Vzx1E7rvpqe=5&ZnN!LL_!tV&ZHNAxUi@4s~9v z%vwB}J_?J_+^t+LIipU1NPj$TE)z2Y!lI6F=$`!seFtkrGyw-!6`3aNGSnv?M}0@8 ziGeBgG_EKb6tG<#&39^yO&Z3U<+kMspx63)Y($2mypzK*7YI{I5EEbhQjR5HQXkwc zFf?t}V`v&_D1uQiCH1;iLSmF_!CEw+S{d5Cq^EOa)d>D@1Gue-3fib&PitSfgry>U zK~dqfdFt0b0dA(@hLPy7s^y0812`MM!c)@MBlvIQcH*~<^yH8fc*H$1~ z5~lg?x!zIssHom~$Mvz3Ts|($zhc_iuKJf9CvjU<0V0;4o&Ahz0vH~aVJgA0h@TX?I9qVrMDPY zXNSA%`W*EZ3<}&`2yq~p>a>x7?Cfrt<)R>yU3ycf^LDO?HGlq(T%mG z;e+hu6qFU&P~+k+grRb$fxV%sh?a(-y8(~-d<`{xk;00qBBjVJdHaQd3=ERsExRz9zW}o>dmI@%nKMbJIHTq zWN`Hu1Z0JSx|clL-7#WRi3YJDz>%I^BzDrqoZZX5B{%*O+6#4s;-b*dyDymIp+M;y zE>LZ*B(4J!zBOmKToWZL4(EC5&^|Ls`)Rd~2-*#bZesDr-Dfb= z;!bZ)YN7>o22-=FfX;~qotIV6*%4y3DTW)jaI~I@l^Q~otwD!n3f0KX#4Hjz;ijR2 zjA$um-;|i6P3Yt&pkVm4-wqd!IU$82Bk-*?>1ho8+$FMLKPuZHwFM6VbCvCo%#v#r zOvwogZHvNmj4ay>ERwvzI={#pcZQe#Whdeok7GYbZ| z4oSZYX_d?=9D#2&JF7(i{&619o&qS>s*}SM!7bvM6s^UBREmQj^EUqxFE|H=hrp)t zRIW3n2K=wYa){YWw>Th*R+Z&sWYe$KBFmQX4SkiQmL=At7|L>0-%PV{J4=mO)Miwl zRQs*!`)M|{NTjvNpck)ay9~<5T@=t7uygU(r!DgCh3BO$k*WrPEg`j()Xwphc>CevU z?q&aKnJpevWfcz@^xilc`&5yqj;jx6{jalKq600`J#62)Hi404& zT5Y%yTF7$Dx5YGRj%5$XTn-bfCle%D=q|4swytZHrpKfGni8K%_iwBzNB^o{W0P$3 zW;S=bL!j+%b>4kcSS#7+Uo&I|gkw$9u*p8+k3qPL2S8`u{2DQ%ZXW3oZz7$WqW#t9?$D#&VqF3$$7yjC<0= zjky;I*y?rxv2>hPFNa7Z;NvRDC~|aHC8TVK2+AG9%-I1x+ua1Ron56jY3YZb^cjF< z*jD4gVKmi$MeJ7?r_ez4W(SCyf5orzfDKAP=TR&!2oR4u7GiRzeP(CT?F|rgHnDK0 zTE_Ib^FBazySxfMJ$!T=R#~yZf}F;Hit3s=>ildYIFY+Q66bC-^8mKA>SA@8^76ge z$;%vK0;Yv~Gb8I78W1ejbyHQrmyiK=xb=m~n!_Xqob`qPQxOqYaaQP%4F~@#dK`KH z^9}xkka@U3F`NKRK(fDM_e=$NrR#XY#bMyp3w);|@M`$|fO>g>OMyQ70rN4yTR&lj z*`=->)2ss$31d@j!MR;lz5jR)U_s7w)jlUYKfdG*E+=TdD4^V*9y zY&bYZ)9jrW%zGfRt6X?lO6L3Bmkbkr355w?=E-V}N!$R1@Hd18K8UysbRy@x33TKs ziZm0D7C(b&83}Lt9iOYZpiaonr(#WuHjCsKhU11KIbCBgcuba#cLgJ*&jccz6 zC0CPL?r;%~KLVXLKt?aTCuC!#(+T;;5~C{v7oo4YI9l*6CZ7Dp_WIPOjn>0{vrz8u ziV{}Txgr4*-mnEG6N|}|Dn*O^-9X(qoHJ1j(f5o0-wZMBdk^Ck_LvEF=QkvsUJeEP zi>PSC?O;H|0(*u?=ss3b(5x+qrhKTKcDaTA2Lqhbsq;AahA=>yMr(r3M2i@Gg!ZVU zL~I*GjG1>&gq`A^y_ot~`Qn^ftRF~JLY)hG_S8QWrmJWvt6lADjUjZL91I{~apb|TZeT6tEaOhh#1-Ar^^Wz0sr{W8a8Vl$ukTIhXCz99u0}W~w>&9tljpz`a z;J`i5BPgjLDLxEPYpJu2tpiI(>H%zqa)HAm81<>Xg6F7~Ug_MZH->W0mdl<#IPjz~ z+jz-lg1J5B1_i+p4dv}naiH!~^T)()igW33PzQgrB(Z2#QJP*LoI)7VfnsLS@O%Vn zvEv=>1Vo44bqh7eodtd$9+1xarv+zd!VFFoX9&gz$U(ltvrIaszJ(&Sg%Wx*MMhh8 zkuwp?4lygRUgIeY0|zIw9{_>F7LW*44T)XR6azVaf| z_Mc)-H8(T_Wo)qFJkjX(A^*F*vE!X9`xZ8GqM zKe6j3paFQ4qnY2mL(UAYe4w&wJjpNMom1rV)zF>K#?GYK19ZAU;fr$f1r>VUidam9 z3Kmy!jH~2d$T8zyFdLn^O8dipaWB>aZ|8<;g1wm=v|Z_RO!~#WSkD^0d1I(L4#|YE z#CJmxs85_3V3PyI&JN{BNg9#{TQQoI?I?ajKfV;6wu)?&RTSXUbEZk7Q_*%h9>r*38B6V>@WHqAuEF>wKZwFb_Or$>nH{q z?<8KF!T2HzG;QiDgT_2mVgLIyqP3aKO(@(BIFbD0CDE!a;+65Z^H%;Nw4VRS#Eyhh ztgAGOp`0#@7pHnTXgwF-x|4SaggU3FwOj*WRm1e9G4(y+MO-w`E8aW`{PnhUXPn?2)e`+3)l_EV3Fl_+yL%E!Gs+6kWtnC z8p>nt48YW#ARZf7WK%0otusiT+sw!x$sjdRaN(Qv==^P#Ygaa%`Ug!3RFj>80~2$I zJBeRchz!d(e;d7jEd4Qbs4TW@VNO2se!S|vO+dvmH2;jeIY-$ED_G%F!TlfWVoK59j(+~dtF z$Gab#$`Us+E338=*Ei6|F+;9D9Sw?m1E})-R@#|Fw@K(X73;7d0pvPT30IyPWivFO zdC+|Sc+c}mUN8NSTP6y{oyOja;_R-15wU~qsgO_utt^O9RmxU&0QdWnA>;wAr|VO{xQ42 z6exu+W)9;6+R!OX@U;S@ab-+Y0~h^OLsMk&BBK0@>WI|HJqoH zQyHqNWmhE{S1*C$SK~L{xqal23)t;FA>5;t{tFt(}VZBatOxEaEowO^#q1XQyptqO%*Jl4|Je4E|gWI;+hK)C53}Ra}(N{<=lZRi;Cy z2wM#UUsW3e57BM@l|{>g-;L(l9z%>K%_8J+vsvXd@^j>Y-{o0Wen^N2@XfE{A8!&Y zQluZ>68^+$k43@~f#pnbW@kk*I5nt+CC`w|O;s|Oo5`8(VKIV#rGc5AT>jW%m4+ZzY-TKONqV6x5Ho4M7Tmk(uT zZRLMZD9h!4K-}KdQtD6w#(A!x3aJ6&4+CibgE~4?6(m!t^{R^090^)xil;-1b>*0H zy%SH@y}C=S^!rnMUuuM*VQ#n`&4y_;4X(eoN$~PHC?pG zzeSliEJB4cuXKsEi^Sju--i6feB6VM1S-A4-R{V(zf+G&q>RcIMnq~88dYD;;NebO z4Fuu&N0X5UIFZ6#{u`7y9(Y$jhC5nC&NSOVLW6VX9d0&d4igbKGe%yB=#vs@Q@=qV zdfH&D^6>YhH1a$3WSKX|@I`wFu+9}m*5Zq1e0_&S+x9CEuU?nGvH=@`rem)0h#Ndt zyhpwsdXq6gMt%CkKB^?^bmH!`Whcp%6KlKTAOR=-L#gujXTfx zdZ>;PryEGgzY*_Jodxht=a}xNw+q~*@|d9dqvl#eH4qFHfaWIxJuu~Kw!;ii=zeL4 ziLe_r#tb2K=&ovmxmOi_pp}HtC>O3~*$ZG)6eg6LTz3av1?C z^j2Jbkt_+c!rOmXC!F+gWW6pWTd8T8OkqPdYnl3?el=*1AFMJshv;&=Op&ENA-<&| zf^d~Gu`m!5$?~vWnF<%Na*djZzM|Hqw}XWct+4Qf!^}BUq{8O8h-LXpmYWW`lwwsq zMVdaReyO#rnwIl`)PYx7uC;i=TkLXQ4jpekAKlolg1Qdi(Wt@&8wKco;0feK$<=|# zgkbs=D}zDA7!eRr$u^c5s3+o0$AO^NY@a%)CFVeb^LMppmE$O`GVMVDR&gAK>fc4w zhq}(P2Zmfm?m>q!@Mk?Tp4wgHIN0@D*iEVEiO!+#HXXz@s&{r6kO@nC(4ncfRaa3v z3bCmTh%*$PuA_22Bzh;9%=%PCYtcK<0G;ikynN)`$b!lzQ}a#CWeTAACVCQ=wz%%H zasAZ98tuG;?d5j^n;YvX(Dltr_KuPz$zQUjtrfQz9~P4nDJ+Gp6;1^3tGqReX0SA4 z9TtiO)R6?`P%}P!7+_xoM0h2vQ;_Q z`&1rn++1=?>2kxCvweb4v;D5=etQq~O|WlTYflhpmZy5$Jk>a`WRs=DMtA5KSAvqb zkuc#ZUr8BDjFbN<%-YMp4$ZNU#$~=na<%A**)$E!w{Zq9K8j6l(X+y%xP$IJ1oN?> zvDSvhnt44qSz_!g05(v3ElWwfkLNF~?5rDi6wD4PtGNvkP!%>JbZm04&PQ&ok=$A_ zkE2>MqY_3)xaNY2Ut-o;+5Hgq<9p%f74&`im@B2Oz}q4zh`l2#4wIb0uql@85aE~X zXpqR2-kdQiG3_T*;D!d;;QAxKiZ;0Z%yT5#;EqPM3foD&!j`WSxO3+}

      OS>Ciq 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 e((FU}|H^;WcMAZT?kYwA literal 243933 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 @@ -57,13 +57,13 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      Tuomo Valkonen

      tuomov at iki.fi

      -

      2007-03-18

      +

      2007-05-06

      Configuring and extending Ion3 with Lua
      -Copyright © 2003-2005 Tuomo Valkonen. +Copyright © 2003-2007 Tuomo Valkonen.

      This document is free; you can redistribute it and/or modify @@ -75,7 +75,7 @@ the Free Software Foundation; either version 2 of the License, or This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -chapter entitled ''GNU General Public License'' for more details. +chapter entitled ``GNU General Public License'' for more details.



      @@ -83,264 +83,294 @@ chapter entitled ''GNU General Public License'' for more details.
      -
    1. A. The GNU General Public License
      -
    2. B. Full class hierarchy visible to Lua-side -
    3. List of functions -
    4. Index -
    5. About this document ... +
    6. Bibliography +
    7. About this document ...

      diff --git a/doc/ionconf/internals.pl b/doc/ionconf/internals.pl index 0c3453a..e2b61be 100644 --- a/doc/ionconf/internals.pl +++ b/doc/ionconf/internals.pl @@ -18,6 +18,10 @@ $key = q/fn:gr.select_engine/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WHook.add/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.x_get_window_property/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -26,6 +30,14 @@ $key = q/fn:WEdln.context/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.get_hook/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/fn:ioncore.tabnum.clear/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:mod_query.query_exec/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -34,11 +46,11 @@ $key = q/fn:ioncore.goto_first/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.insstr/; +$key = q/fn:WClientWin.quote_next/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WClientWin.quote_next/; +$key = q/fn:WEdln.insstr/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -50,11 +62,19 @@ $key = q/fn:WFrame.is_shaded/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/sec:sizepolicies/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/fn:WTimer.set/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.goto_activity/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WTiling.farthest/; +$key = q/fn:ioncore.submap_enter/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -62,11 +82,11 @@ $key = q/fn:ioncore.create_ws/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.finish/; +$key = q/fn:WTiling.farthest/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.mark/; +$key = q/fn:WEdln.finish/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -74,6 +94,10 @@ $key = q/fn:WEdln.bskip_word/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WEdln.mark/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WMPlex.switch_prev/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -106,19 +130,19 @@ $key = q/fn:ioncore.kpress/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.is_mapped/; +$key = q/fn:ioncore.goto_prev_screen/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.goto_prev_screen/; +$key = q/fn:WRegion.is_mapped/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.transpose_words/; +$key = q/sec:ioncoreref/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/sec:ioncoreref/; +$key = q/fn:WEdln.transpose_words/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -146,6 +170,10 @@ $key = q/fn:ioncore.shutdown/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:mod_statusbar.launch_statusd/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.getbindings/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -166,6 +194,10 @@ $key = q/fn:ioncore.defmenu/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WTimer.reset/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fig:borders/; $ref_files{$key} = "$dir".q|node5.html|; $noresave{$key} = "$nosave"; @@ -198,8 +230,8 @@ $key = q/fn:WMoveresMode.resize/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WStatusBar.is_systray_extl/; -$ref_files{$key} = "$dir".q|node7.html|; +$key = q/sec:statusbar/; +$ref_files{$key} = "$dir".q|node4.html|; $noresave{$key} = "$nosave"; $key = q/fn:WMenu.select_nth/; @@ -214,6 +246,10 @@ $key = q/fn:ioncore.warn_traced/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.create_timer/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WTiling.managed_i/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -226,7 +262,7 @@ $key = q/sec:modules/; $ref_files{$key} = "$dir".q|node3.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplitSplit.tl/; +$key = q/fn:ioncore.defctxmenu/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -234,7 +270,7 @@ $key = q/fn:mod_tiling.mkbottom/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.defctxmenu/; +$key = q/fn:WSplitSplit.tl/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -246,11 +282,11 @@ $key = q/fn:WInput.scrollup/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.set_name_exact/; +$key = q/fn:WMPlex.switch_nth/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WMPlex.switch_nth/; +$key = q/fn:WRegion.set_name_exact/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -266,6 +302,10 @@ $key = q/fn:ioncore.menuentry/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WFrame.set_grattr/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WEdln.forward/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -298,6 +338,10 @@ $key = q/fn:ioncore.snapshot/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.tabnum.show/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/region_do_warp_alt/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -314,6 +358,10 @@ $key = q/fn:ioncore.write_savefile/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:mod_statusbar.inform/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.tagged_i/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -378,6 +426,10 @@ $key = q/fn:WFrame.p_tabdrag/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/cite_scripts/; +$ref_files{$key} = "$dir".q|node12.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.clientwin_i/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -394,11 +446,11 @@ $key = q/fn:WMPlex.switch_next/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.unsqueeze/; +$key = q/fn:WGroup.bottom/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WGroup.bottom/; +$key = q/fn:ioncore.unsqueeze/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -462,15 +514,15 @@ $key = q/chap:tricks/; $ref_files{$key} = "$dir".q|node6.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.groupleader_of/; +$key = q/fn:ioncore.get_savefile/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.get_savefile/; +$key = q/fn:WRegion.groupleader_of/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:mod_query.history_push/; +$key = q/fn:ioncore.lookup_clientwin/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -478,7 +530,7 @@ $key = q/fn:mod_query.get/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.lookup_clientwin/; +$key = q/fn:mod_query.history_push/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -494,11 +546,11 @@ $key = q/sec:winprops/; $ref_files{$key} = "$dir".q|node4.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplit.parent/; +$key = q/fn:ioncore.getctxmenu/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.getctxmenu/; +$key = q/fn:WSplit.parent/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -546,6 +598,10 @@ $key = q/fn:WEdln.point/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.defer/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WMenu.select_prev/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -642,6 +698,10 @@ $key = q/fn:ioncore.defshortening/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WHook.listed/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.refresh_stylelist/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -718,11 +778,11 @@ $key = q/fn:WSplitSplit.br/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:string.shell_safe/; +$key = q/fn:mod_query.query_restart/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:mod_query.query_restart/; +$key = q/fn:string.shell_safe/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -786,14 +846,14 @@ $key = q/fn:WRegion.begin_kbresize/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.deflayout/; -$ref_files{$key} = "$dir".q|node7.html|; -$noresave{$key} = "$nosave"; - $key = q/sec:classesrolesinstances/; $ref_files{$key} = "$dir".q|node4.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.deflayout/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.tagged_attach/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -838,6 +898,10 @@ $key = q/fn:ioncore.detach/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/sec:miscref/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WClientWin.xid/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -910,6 +974,10 @@ $key = q/fn:ioncore.find_manager/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.match_winprop_dflt/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.get_paths/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -922,7 +990,7 @@ $key = q/sec:walkthrough/; $ref_files{$key} = "$dir".q|node4.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WFrame.set_numbers/; +$key = q/fn:mod_statusbar.update/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -946,6 +1014,10 @@ $key = q/fn:WMPlex.attach_new/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:mod_statusbar.create/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WGroup.attach/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -954,11 +1026,11 @@ $key = q/fn:ioncore.mdblclick/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplitSplit.flip/; +$key = q/fn:WTiling.split_top/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WTiling.split_top/; +$key = q/fn:WSplitSplit.flip/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -970,11 +1042,11 @@ $key = q/fn:mod_query.popen_completions/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.defwinprop/; +$key = q/fn:ioncore.popen_bgread/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.popen_bgread/; +$key = q/fn:ioncore.defwinprop/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -986,11 +1058,15 @@ $key = q/fn:ioncore.mdrag/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WSplit.transpose/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WClientWin.kill/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplit.transpose/; +$key = q/fn:ioncore.submap_wait/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -998,11 +1074,15 @@ $key = q/ioncore_snapshot_hook/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WSplitSplit.dir/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:table.map/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplitSplit.dir/; +$key = q/fn:WMPlex.set_stdisp/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -1010,7 +1090,7 @@ $key = q/fn:WFrame.set_shaded/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WMPlex.set_stdisp/; +$key = q/fn:WStatusBar.is_systray/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -1022,11 +1102,11 @@ $key = q/fn:ioncore.x_change_property/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WInput.cancel/; +$key = q/fn:WRegion.parent/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.parent/; +$key = q/fn:WInput.cancel/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -1074,10 +1154,6 @@ $key = q/clientwin_do_manage_alt/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.match_winprop_name/; -$ref_files{$key} = "$dir".q|node7.html|; -$noresave{$key} = "$nosave"; - $key = q/ioncore_sigchld_hook/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -1142,6 +1218,10 @@ $key = q/fn:ioncore.getwinprop/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WHook.remove/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.request_selection/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -1174,6 +1254,10 @@ $key = q/fn:ioncore.aboutmsg/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/sec:grmisc/; +$ref_files{$key} = "$dir".q|node5.html|; +$noresave{$key} = "$nosave"; + $key = q/chap:prelim/; $ref_files{$key} = "$dir".q|node3.html|; $noresave{$key} = "$nosave"; @@ -1202,6 +1286,10 @@ $key = q/fn:WRegion.is_activity/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/sec:statusd/; +$ref_files{$key} = "$dir".q|node6.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WRegion.rqgeom/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -1238,6 +1326,10 @@ $key = q/sec:tilingref/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WTimer.is_set/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WRegion.set_name/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; @@ -1346,6 +1438,10 @@ $key = q/fn:WEdln.skip_word/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/ioncore_submap_ungrab_hook/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WGroup.attach_new/; $ref_files{$key} = "$dir".q|node7.html|; $noresave{$key} = "$nosave"; diff --git a/doc/ionconf/ionconf.css b/doc/ionconf/ionconf.css index f0cd026..86d99dc 100644 --- a/doc/ionconf/ionconf.css +++ b/doc/ionconf/ionconf.css @@ -29,6 +29,7 @@ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } +DIV.flushleft { } DIV.center { } SPAN.sc { } DIV.quote { } diff --git a/doc/ionconf/ionconf.html b/doc/ionconf/ionconf.html index a2f4405..4783107 100644 --- a/doc/ionconf/ionconf.html +++ b/doc/ionconf/ionconf.html @@ -25,27 +25,27 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -57,13 +57,13 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      Tuomo Valkonen

      tuomov at iki.fi

      -

      2007-03-18

      +

      2007-05-06

      Configuring and extending Ion3 with Lua
      -Copyright © 2003-2005 Tuomo Valkonen. +Copyright © 2003-2007 Tuomo Valkonen.

      This document is free; you can redistribute it and/or modify @@ -75,7 +75,7 @@ the Free Software Foundation; either version 2 of the License, or This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -chapter entitled ''GNU General Public License'' for more details. +chapter entitled ``GNU General Public License'' for more details.



      @@ -83,264 +83,294 @@ chapter entitled ''GNU General Public License'' for more details.
      -
    8. A. The GNU General Public License
      -
    9. B. Full class hierarchy visible to Lua-side -
    10. List of functions -
    11. Index -
    12. About this document ... +
    13. Bibliography +
    14. About this document ...

      diff --git a/doc/ionconf/labels.pl b/doc/ionconf/labels.pl index a14d1d0..54a83c4 100644 --- a/doc/ionconf/labels.pl +++ b/doc/ionconf/labels.pl @@ -18,6 +18,10 @@ $key = q/fn:gr.select_engine/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WHook.add/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.x_get_window_property/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -26,6 +30,14 @@ $key = q/fn:WEdln.context/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.get_hook/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/fn:ioncore.tabnum.clear/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:mod_query.query_exec/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -34,11 +46,11 @@ $key = q/fn:ioncore.goto_first/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.insstr/; +$key = q/fn:WClientWin.quote_next/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WClientWin.quote_next/; +$key = q/fn:WEdln.insstr/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -50,11 +62,19 @@ $key = q/fn:WFrame.is_shaded/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/sec:sizepolicies/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/fn:WTimer.set/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.goto_activity/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WTiling.farthest/; +$key = q/fn:ioncore.submap_enter/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -62,11 +82,11 @@ $key = q/fn:ioncore.create_ws/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.finish/; +$key = q/fn:WTiling.farthest/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.mark/; +$key = q/fn:WEdln.finish/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -74,6 +94,10 @@ $key = q/fn:WEdln.bskip_word/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WEdln.mark/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WMPlex.switch_prev/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -106,19 +130,19 @@ $key = q/fn:ioncore.kpress/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.is_mapped/; +$key = q/fn:ioncore.goto_prev_screen/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.goto_prev_screen/; +$key = q/fn:WRegion.is_mapped/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.transpose_words/; +$key = q/sec:ioncoreref/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/sec:ioncoreref/; +$key = q/fn:WEdln.transpose_words/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -146,6 +170,10 @@ $key = q/fn:ioncore.shutdown/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:mod_statusbar.launch_statusd/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.getbindings/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -166,6 +194,10 @@ $key = q/fn:ioncore.defmenu/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WTimer.reset/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fig:borders/; $external_labels{$key} = "$URL/" . q|node5.html|; $noresave{$key} = "$nosave"; @@ -198,8 +230,8 @@ $key = q/fn:WMoveresMode.resize/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WStatusBar.is_systray_extl/; -$external_labels{$key} = "$URL/" . q|node7.html|; +$key = q/sec:statusbar/; +$external_labels{$key} = "$URL/" . q|node4.html|; $noresave{$key} = "$nosave"; $key = q/fn:WMenu.select_nth/; @@ -214,6 +246,10 @@ $key = q/fn:ioncore.warn_traced/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.create_timer/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WTiling.managed_i/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -226,7 +262,7 @@ $key = q/sec:modules/; $external_labels{$key} = "$URL/" . q|node3.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplitSplit.tl/; +$key = q/fn:ioncore.defctxmenu/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -234,7 +270,7 @@ $key = q/fn:mod_tiling.mkbottom/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.defctxmenu/; +$key = q/fn:WSplitSplit.tl/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -246,11 +282,11 @@ $key = q/fn:WInput.scrollup/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.set_name_exact/; +$key = q/fn:WMPlex.switch_nth/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WMPlex.switch_nth/; +$key = q/fn:WRegion.set_name_exact/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -266,6 +302,10 @@ $key = q/fn:ioncore.menuentry/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WFrame.set_grattr/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WEdln.forward/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -298,6 +338,10 @@ $key = q/fn:ioncore.snapshot/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.tabnum.show/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/region_do_warp_alt/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -314,6 +358,10 @@ $key = q/fn:ioncore.write_savefile/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:mod_statusbar.inform/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.tagged_i/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -378,6 +426,10 @@ $key = q/fn:WFrame.p_tabdrag/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/cite_scripts/; +$external_labels{$key} = "$URL/" . q|node12.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.clientwin_i/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -394,11 +446,11 @@ $key = q/fn:WMPlex.switch_next/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.unsqueeze/; +$key = q/fn:WGroup.bottom/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WGroup.bottom/; +$key = q/fn:ioncore.unsqueeze/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -462,15 +514,15 @@ $key = q/chap:tricks/; $external_labels{$key} = "$URL/" . q|node6.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.groupleader_of/; +$key = q/fn:ioncore.get_savefile/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.get_savefile/; +$key = q/fn:WRegion.groupleader_of/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:mod_query.history_push/; +$key = q/fn:ioncore.lookup_clientwin/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -478,7 +530,7 @@ $key = q/fn:mod_query.get/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.lookup_clientwin/; +$key = q/fn:mod_query.history_push/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -494,11 +546,11 @@ $key = q/sec:winprops/; $external_labels{$key} = "$URL/" . q|node4.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplit.parent/; +$key = q/fn:ioncore.getctxmenu/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.getctxmenu/; +$key = q/fn:WSplit.parent/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -546,6 +598,10 @@ $key = q/fn:WEdln.point/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.defer/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WMenu.select_prev/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -642,6 +698,10 @@ $key = q/fn:ioncore.defshortening/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WHook.listed/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.refresh_stylelist/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -718,11 +778,11 @@ $key = q/fn:WSplitSplit.br/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:string.shell_safe/; +$key = q/fn:mod_query.query_restart/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:mod_query.query_restart/; +$key = q/fn:string.shell_safe/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -786,14 +846,14 @@ $key = q/fn:WRegion.begin_kbresize/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.deflayout/; -$external_labels{$key} = "$URL/" . q|node7.html|; -$noresave{$key} = "$nosave"; - $key = q/sec:classesrolesinstances/; $external_labels{$key} = "$URL/" . q|node4.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.deflayout/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.tagged_attach/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -838,6 +898,10 @@ $key = q/fn:ioncore.detach/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/sec:miscref/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WClientWin.xid/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -910,6 +974,10 @@ $key = q/fn:ioncore.find_manager/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.match_winprop_dflt/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.get_paths/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -922,7 +990,7 @@ $key = q/sec:walkthrough/; $external_labels{$key} = "$URL/" . q|node4.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WFrame.set_numbers/; +$key = q/fn:mod_statusbar.update/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -946,6 +1014,10 @@ $key = q/fn:WMPlex.attach_new/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:mod_statusbar.create/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WGroup.attach/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -954,11 +1026,11 @@ $key = q/fn:ioncore.mdblclick/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplitSplit.flip/; +$key = q/fn:WTiling.split_top/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WTiling.split_top/; +$key = q/fn:WSplitSplit.flip/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -970,11 +1042,11 @@ $key = q/fn:mod_query.popen_completions/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.defwinprop/; +$key = q/fn:ioncore.popen_bgread/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.popen_bgread/; +$key = q/fn:ioncore.defwinprop/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -986,11 +1058,15 @@ $key = q/fn:ioncore.mdrag/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WSplit.transpose/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WClientWin.kill/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplit.transpose/; +$key = q/fn:ioncore.submap_wait/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -998,11 +1074,15 @@ $key = q/ioncore_snapshot_hook/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WSplitSplit.dir/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:table.map/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplitSplit.dir/; +$key = q/fn:WMPlex.set_stdisp/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -1010,7 +1090,7 @@ $key = q/fn:WFrame.set_shaded/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WMPlex.set_stdisp/; +$key = q/fn:WStatusBar.is_systray/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -1022,11 +1102,11 @@ $key = q/fn:ioncore.x_change_property/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WInput.cancel/; +$key = q/fn:WRegion.parent/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.parent/; +$key = q/fn:WInput.cancel/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -1074,10 +1154,6 @@ $key = q/clientwin_do_manage_alt/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.match_winprop_name/; -$external_labels{$key} = "$URL/" . q|node7.html|; -$noresave{$key} = "$nosave"; - $key = q/ioncore_sigchld_hook/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -1142,6 +1218,10 @@ $key = q/fn:ioncore.getwinprop/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WHook.remove/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.request_selection/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -1174,6 +1254,10 @@ $key = q/fn:ioncore.aboutmsg/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/sec:grmisc/; +$external_labels{$key} = "$URL/" . q|node5.html|; +$noresave{$key} = "$nosave"; + $key = q/chap:prelim/; $external_labels{$key} = "$URL/" . q|node3.html|; $noresave{$key} = "$nosave"; @@ -1202,6 +1286,10 @@ $key = q/fn:WRegion.is_activity/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/sec:statusd/; +$external_labels{$key} = "$URL/" . q|node6.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WRegion.rqgeom/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -1238,6 +1326,10 @@ $key = q/sec:tilingref/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/fn:WTimer.is_set/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WRegion.set_name/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -1346,6 +1438,10 @@ $key = q/fn:WEdln.skip_word/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; +$key = q/ioncore_submap_ungrab_hook/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + $key = q/fn:WGroup.attach_new/; $external_labels{$key} = "$URL/" . q|node7.html|; $noresave{$key} = "$nosave"; @@ -1378,11 +1474,15 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.mx_nth/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:gr.select_engine/; -$external_latex_labels{$key} = q|6.1.14|; +$external_latex_labels{$key} = q|6.1.16|; +$noresave{$key} = "$nosave"; + +$key = q/fn:WHook.add/; +$external_latex_labels{$key} = q|6.1.6|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.x_get_window_property/; @@ -1393,6 +1493,14 @@ $key = q/fn:WEdln.context/; $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.get_hook/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + +$key = q/fn:ioncore.tabnum.clear/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + $key = q/fn:mod_query.query_exec/; $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; @@ -1401,14 +1509,14 @@ $key = q/fn:ioncore.goto_first/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.insstr/; -$external_latex_labels{$key} = q|6.3.2|; -$noresave{$key} = "$nosave"; - $key = q/fn:WClientWin.quote_next/; $external_latex_labels{$key} = q|6.1.1|; $noresave{$key} = "$nosave"; +$key = q/fn:WEdln.insstr/; +$external_latex_labels{$key} = q|6.3.2|; +$noresave{$key} = "$nosave"; + $key = q/fn:mod_query.query_renameworkspace/; $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; @@ -1417,32 +1525,44 @@ $key = q/fn:WFrame.is_shaded/; $external_latex_labels{$key} = q|6.1.2|; $noresave{$key} = "$nosave"; +$key = q/sec:sizepolicies/; +$external_latex_labels{$key} = q|6.10.1|; +$noresave{$key} = "$nosave"; + +$key = q/fn:WTimer.set/; +$external_latex_labels{$key} = q|6.1.13|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.goto_activity/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; -$key = q/fn:WTiling.farthest/; -$external_latex_labels{$key} = q|6.2.5|; +$key = q/fn:ioncore.submap_enter/; +$external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.create_ws/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:WTiling.farthest/; +$external_latex_labels{$key} = q|6.2.5|; +$noresave{$key} = "$nosave"; + $key = q/fn:WEdln.finish/; $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.mark/; +$key = q/fn:WEdln.bskip_word/; $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.bskip_word/; +$key = q/fn:WEdln.mark/; $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.switch_prev/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:WTiling.unsplit_at/; @@ -1450,7 +1570,7 @@ $external_latex_labels{$key} = q|6.2.5|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.dec_index/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.current/; @@ -1473,22 +1593,22 @@ $key = q/fn:ioncore.kpress/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.is_mapped/; -$external_latex_labels{$key} = q|6.1.9|; -$noresave{$key} = "$nosave"; - $key = q/fn:ioncore.goto_prev_screen/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; -$key = q/fn:WEdln.transpose_words/; -$external_latex_labels{$key} = q|6.3.2|; +$key = q/fn:WRegion.is_mapped/; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/sec:ioncoreref/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:WEdln.transpose_words/; +$external_latex_labels{$key} = q|6.3.2|; +$noresave{$key} = "$nosave"; + $key = q/fn:mod_statusbar.statusbars/; $external_latex_labels{$key} = q|6.7|; $noresave{$key} = "$nosave"; @@ -1502,7 +1622,7 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WWindow.p_resize/; -$external_latex_labels{$key} = q|6.1.12|; +$external_latex_labels{$key} = q|6.1.14|; $noresave{$key} = "$nosave"; $key = q/fn:WComplProxy.set_completions/; @@ -1513,6 +1633,10 @@ $key = q/fn:ioncore.shutdown/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:mod_statusbar.launch_statusd/; +$external_latex_labels{$key} = q|6.7|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.getbindings/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; @@ -1526,13 +1650,17 @@ $external_latex_labels{$key} = q|4.1.1|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.get_stdisp/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.defmenu/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:WTimer.reset/; +$external_latex_labels{$key} = q|6.1.13|; +$noresave{$key} = "$nosave"; + $key = q/fig:borders/; $external_latex_labels{$key} = q|4.1|; $noresave{$key} = "$nosave"; @@ -1554,7 +1682,7 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WScreen.id/; -$external_latex_labels{$key} = q|6.1.11|; +$external_latex_labels{$key} = q|6.1.12|; $noresave{$key} = "$nosave"; $key = q/fn:WFrame.set_mode/; @@ -1562,11 +1690,11 @@ $external_latex_labels{$key} = q|6.1.2|; $noresave{$key} = "$nosave"; $key = q/fn:WMoveresMode.resize/; -$external_latex_labels{$key} = q|6.1.8|; +$external_latex_labels{$key} = q|6.1.9|; $noresave{$key} = "$nosave"; -$key = q/fn:WStatusBar.is_systray_extl/; -$external_latex_labels{$key} = q|6.7.1|; +$key = q/sec:statusbar/; +$external_latex_labels{$key} = q|3.6|; $noresave{$key} = "$nosave"; $key = q/fn:WMenu.select_nth/; @@ -1581,6 +1709,10 @@ $key = q/fn:ioncore.warn_traced/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.create_timer/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + $key = q/fn:WTiling.managed_i/; $external_latex_labels{$key} = q|6.2.5|; $noresave{$key} = "$nosave"; @@ -1593,16 +1725,16 @@ $key = q/sec:modules/; $external_latex_labels{$key} = q|2.1|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplitSplit.tl/; -$external_latex_labels{$key} = q|6.2.4|; +$key = q/fn:ioncore.defctxmenu/; +$external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:mod_tiling.mkbottom/; $external_latex_labels{$key} = q|6.2|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.defctxmenu/; -$external_latex_labels{$key} = q|6.1|; +$key = q/fn:WSplitSplit.tl/; +$external_latex_labels{$key} = q|6.2.4|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.set_selection/; @@ -1613,12 +1745,12 @@ $key = q/fn:WInput.scrollup/; $external_latex_labels{$key} = q|6.3.3|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.set_name_exact/; -$external_latex_labels{$key} = q|6.1.9|; +$key = q/fn:WMPlex.switch_nth/; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; -$key = q/fn:WMPlex.switch_nth/; -$external_latex_labels{$key} = q|6.1.7|; +$key = q/fn:WRegion.set_name_exact/; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:WEdln.prev_completion/; @@ -1633,6 +1765,10 @@ $key = q/fn:ioncore.menuentry/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:WFrame.set_grattr/; +$external_latex_labels{$key} = q|6.1.2|; +$noresave{$key} = "$nosave"; + $key = q/fn:WEdln.forward/; $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; @@ -1658,13 +1794,17 @@ $external_latex_labels{$key} = q|3.3|; $noresave{$key} = "$nosave"; $key = q/fn:WInfoWin.set_text/; -$external_latex_labels{$key} = q|6.1.6|; +$external_latex_labels{$key} = q|6.1.7|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.snapshot/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.tabnum.show/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + $key = q/region_do_warp_alt/; $external_latex_labels{$key} = q|6.9|; $noresave{$key} = "$nosave"; @@ -1681,6 +1821,10 @@ $key = q/fn:ioncore.write_savefile/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:mod_statusbar.inform/; +$external_latex_labels{$key} = q|6.7|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.tagged_i/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; @@ -1694,7 +1838,7 @@ $external_latex_labels{$key} = q|5.1|; $noresave{$key} = "$nosave"; $key = q/fn:WWindow.xid/; -$external_latex_labels{$key} = q|6.1.12|; +$external_latex_labels{$key} = q|6.1.14|; $noresave{$key} = "$nosave"; $key = q/sec:statusbarref/; @@ -1734,7 +1878,7 @@ $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; $key = q/fn:gr.read_config/; -$external_latex_labels{$key} = q|6.1.14|; +$external_latex_labels{$key} = q|6.1.16|; $noresave{$key} = "$nosave"; $key = q/fn:WTiling.split_at/; @@ -1754,21 +1898,21 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.screen_of/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.switch_next/; -$external_latex_labels{$key} = q|6.1.7|; -$noresave{$key} = "$nosave"; - -$key = q/fn:ioncore.unsqueeze/; -$external_latex_labels{$key} = q|6.1|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:WGroup.bottom/; $external_latex_labels{$key} = q|6.1.3|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.unsqueeze/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + $key = q/fn:mod_query.history_search/; $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; @@ -1778,7 +1922,7 @@ $external_latex_labels{$key} = q|6.2.5|; $noresave{$key} = "$nosave"; $key = q/fn:WRootWin.current_scr/; -$external_latex_labels{$key} = q|6.1.10|; +$external_latex_labels{$key} = q|6.1.11|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.navi_first/; @@ -1814,7 +1958,7 @@ $external_latex_labels{$key} = q|6.5.1|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.set_tagged/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/app:fullhierarchy/; @@ -1830,23 +1974,23 @@ $external_latex_labels{$key} = q|5|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.groupleader_of/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.get_savefile/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; -$key = q/fn:mod_query.history_push/; -$external_latex_labels{$key} = q|6.3|; +$key = q/fn:ioncore.lookup_clientwin/; +$external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:mod_query.get/; $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.lookup_clientwin/; -$external_latex_labels{$key} = q|6.1|; +$key = q/fn:mod_query.history_push/; +$external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.restart/; @@ -1861,16 +2005,16 @@ $key = q/sec:winprops/; $external_latex_labels{$key} = q|3.5|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplit.parent/; -$external_latex_labels{$key} = q|6.2.1|; -$noresave{$key} = "$nosave"; - $key = q/fn:ioncore.getctxmenu/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:WSplit.parent/; +$external_latex_labels{$key} = q|6.2.1|; +$noresave{$key} = "$nosave"; + $key = q/fn:WMoveresMode.rqgeom/; -$external_latex_labels{$key} = q|6.1.8|; +$external_latex_labels{$key} = q|6.1.9|; $noresave{$key} = "$nosave"; $key = q/fn:WStatusBar.get_template_table/; @@ -1890,7 +2034,7 @@ $external_latex_labels{$key} = q|6.1.3|; $noresave{$key} = "$nosave"; $key = q/fn:WWindow.p_move/; -$external_latex_labels{$key} = q|6.1.12|; +$external_latex_labels{$key} = q|6.1.14|; $noresave{$key} = "$nosave"; $key = q/sec:objects/; @@ -1898,7 +2042,7 @@ $external_latex_labels{$key} = q|2.2|; $noresave{$key} = "$nosave"; $key = q/fn:WScreen.set_managed_offset/; -$external_latex_labels{$key} = q|6.1.11|; +$external_latex_labels{$key} = q|6.1.12|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.get_dir_for/; @@ -1913,6 +2057,10 @@ $key = q/fn:WEdln.point/; $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.defer/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + $key = q/fn:WMenu.select_prev/; $external_latex_labels{$key} = q|6.4.1|; $noresave{$key} = "$nosave"; @@ -1954,7 +2102,7 @@ $external_latex_labels{$key} = q|6.4.1|; $noresave{$key} = "$nosave"; $key = q/fn:table.copy/; -$external_latex_labels{$key} = q|6.1.16|; +$external_latex_labels{$key} = q|6.1.18|; $noresave{$key} = "$nosave"; $key = q/fn:WSplit.rqgeom/; @@ -1962,7 +2110,7 @@ $external_latex_labels{$key} = q|6.2.1|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.managed_i/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:WEdln.set_mark/; @@ -1974,11 +2122,11 @@ $external_latex_labels{$key} = q|6.9|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.mx_count/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.attach/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fig:managership/; @@ -1990,7 +2138,7 @@ $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; $key = q/fn:WMoveresMode.move/; -$external_latex_labels{$key} = q|6.1.8|; +$external_latex_labels{$key} = q|6.1.9|; $noresave{$key} = "$nosave"; $key = q/fn:mod_tiling.get/; @@ -2009,6 +2157,10 @@ $key = q/fn:ioncore.defshortening/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:WHook.listed/; +$external_latex_labels{$key} = q|6.1.6|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.refresh_stylelist/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; @@ -2018,7 +2170,7 @@ $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.inc_index/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.x_delete_property/; @@ -2026,11 +2178,11 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.rqclose/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.set_activity/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:mod_query.query_runfile/; @@ -2054,7 +2206,7 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.mx_current/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:mod_query.message/; @@ -2085,14 +2237,14 @@ $key = q/fn:WSplitSplit.br/; $external_latex_labels{$key} = q|6.2.4|; $noresave{$key} = "$nosave"; -$key = q/fn:string.shell_safe/; -$external_latex_labels{$key} = q|6.1.15|; -$noresave{$key} = "$nosave"; - $key = q/fn:mod_query.query_restart/; $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; +$key = q/fn:string.shell_safe/; +$external_latex_labels{$key} = q|6.1.17|; +$noresave{$key} = "$nosave"; + $key = q/fn:mod_tiling.set/; $external_latex_labels{$key} = q|6.2|; $noresave{$key} = "$nosave"; @@ -2122,11 +2274,11 @@ $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.current/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.rqclose_propagate/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/region_notify_hook/; @@ -2150,23 +2302,23 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.begin_kbresize/; -$external_latex_labels{$key} = q|6.1.9|; -$noresave{$key} = "$nosave"; - -$key = q/fn:ioncore.deflayout/; -$external_latex_labels{$key} = q|6.1|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/sec:classesrolesinstances/; $external_latex_labels{$key} = q|3.5.2|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.deflayout/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.tagged_attach/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.is_tagged/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:WEdln.next_completion/; @@ -2174,7 +2326,7 @@ $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.set_hidden/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:WMenu.cancel/; @@ -2186,7 +2338,7 @@ $external_latex_labels{$key} = q|6.1.1|; $noresave{$key} = "$nosave"; $key = q/fn:WMoveresMode.geom/; -$external_latex_labels{$key} = q|6.1.8|; +$external_latex_labels{$key} = q|6.1.9|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.goto_nth_screen/; @@ -2205,12 +2357,16 @@ $key = q/fn:ioncore.detach/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/sec:miscref/; +$external_latex_labels{$key} = q|6.10|; +$noresave{$key} = "$nosave"; + $key = q/fn:WClientWin.xid/; $external_latex_labels{$key} = q|6.1.1|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.name/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.x_get_text_property/; @@ -2226,7 +2382,7 @@ $external_latex_labels{$key} = q|6.9|; $noresave{$key} = "$nosave"; $key = q/fn:table.append/; -$external_latex_labels{$key} = q|6.1.16|; +$external_latex_labels{$key} = q|6.1.18|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.mclick/; @@ -2238,7 +2394,7 @@ $external_latex_labels{$key} = q|6.7.1|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.set_index/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:mod_query.history_clear/; @@ -2254,7 +2410,7 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WMoveresMode.finish/; -$external_latex_labels{$key} = q|6.1.8|; +$external_latex_labels{$key} = q|6.1.9|; $noresave{$key} = "$nosave"; $key = q/fn:mod_query.query_gotoclient/; @@ -2277,6 +2433,10 @@ $key = q/fn:ioncore.find_manager/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:ioncore.match_winprop_dflt/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.get_paths/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; @@ -2289,12 +2449,12 @@ $key = q/sec:walkthrough/; $external_latex_labels{$key} = q|3.2|; $noresave{$key} = "$nosave"; -$key = q/fn:WFrame.set_numbers/; -$external_latex_labels{$key} = q|6.1.2|; +$key = q/fn:mod_statusbar.update/; +$external_latex_labels{$key} = q|6.7|; $noresave{$key} = "$nosave"; $key = q/fn:WMoveresMode.cancel/; -$external_latex_labels{$key} = q|6.1.8|; +$external_latex_labels{$key} = q|6.1.9|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.submap/; @@ -2302,7 +2462,7 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.is_active/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:WEdln.bkill_word/; @@ -2310,7 +2470,11 @@ $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.attach_new/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; +$noresave{$key} = "$nosave"; + +$key = q/fn:mod_statusbar.create/; +$external_latex_labels{$key} = q|6.7|; $noresave{$key} = "$nosave"; $key = q/fn:WGroup.attach/; @@ -2337,11 +2501,11 @@ $key = q/fn:mod_query.popen_completions/; $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.defwinprop/; +$key = q/fn:ioncore.popen_bgread/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.popen_bgread/; +$key = q/fn:ioncore.defwinprop/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; @@ -2353,48 +2517,56 @@ $key = q/fn:ioncore.mdrag/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:WSplit.transpose/; +$external_latex_labels{$key} = q|6.2.1|; +$noresave{$key} = "$nosave"; + $key = q/fn:WClientWin.kill/; $external_latex_labels{$key} = q|6.1.1|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplit.transpose/; -$external_latex_labels{$key} = q|6.2.1|; +$key = q/fn:ioncore.submap_wait/; +$external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/ioncore_snapshot_hook/; $external_latex_labels{$key} = q|6.9|; $noresave{$key} = "$nosave"; +$key = q/fn:WSplitSplit.dir/; +$external_latex_labels{$key} = q|6.2.4|; +$noresave{$key} = "$nosave"; + $key = q/fn:table.map/; -$external_latex_labels{$key} = q|6.1.16|; +$external_latex_labels{$key} = q|6.1.18|; $noresave{$key} = "$nosave"; -$key = q/fn:WSplitSplit.dir/; -$external_latex_labels{$key} = q|6.2.4|; +$key = q/fn:WMPlex.set_stdisp/; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:WFrame.set_shaded/; $external_latex_labels{$key} = q|6.1.2|; $noresave{$key} = "$nosave"; -$key = q/fn:WMPlex.set_stdisp/; -$external_latex_labels{$key} = q|6.1.7|; +$key = q/fn:WStatusBar.is_systray/; +$external_latex_labels{$key} = q|6.7.1|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.manager/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.x_change_property/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; -$key = q/fn:WInput.cancel/; -$external_latex_labels{$key} = q|6.3.3|; +$key = q/fn:WRegion.parent/; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; -$key = q/fn:WRegion.parent/; -$external_latex_labels{$key} = q|6.1.9|; +$key = q/fn:WInput.cancel/; +$external_latex_labels{$key} = q|6.3.3|; $noresave{$key} = "$nosave"; $key = q/fn:WEdln.back/; @@ -2418,7 +2590,7 @@ $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.geom/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.kpress_wait/; @@ -2430,21 +2602,17 @@ $external_latex_labels{$key} = q|6.2.5|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.rootwin_of/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.mx_i/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/clientwin_do_manage_alt/; $external_latex_labels{$key} = q|6.9|; $noresave{$key} = "$nosave"; -$key = q/fn:ioncore.match_winprop_name/; -$external_latex_labels{$key} = q|6.1|; -$noresave{$key} = "$nosave"; - $key = q/ioncore_sigchld_hook/; $external_latex_labels{$key} = q|6.9|; $noresave{$key} = "$nosave"; @@ -2482,11 +2650,11 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:gr.refresh/; -$external_latex_labels{$key} = q|6.1.14|; +$external_latex_labels{$key} = q|6.1.16|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.rqorder/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:mod_menu.grabmenu/; @@ -2498,7 +2666,7 @@ $external_latex_labels{$key} = q|6.2.3|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.size_hints/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:WEdln.delete/; @@ -2509,6 +2677,10 @@ $key = q/fn:ioncore.getwinprop/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/fn:WHook.remove/; +$external_latex_labels{$key} = q|6.1.6|; +$noresave{$key} = "$nosave"; + $key = q/fn:ioncore.request_selection/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; @@ -2522,7 +2694,7 @@ $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.goto/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.goto_next_screen/; @@ -2541,6 +2713,10 @@ $key = q/fn:ioncore.aboutmsg/; $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; +$key = q/sec:grmisc/; +$external_latex_labels{$key} = q|4.3|; +$noresave{$key} = "$nosave"; + $key = q/chap:prelim/; $external_latex_labels{$key} = q|2|; $noresave{$key} = "$nosave"; @@ -2566,11 +2742,15 @@ $external_latex_labels{$key} = q|6.1|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.is_activity/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; +$noresave{$key} = "$nosave"; + +$key = q/sec:statusd/; +$external_latex_labels{$key} = q|5.4|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.rqgeom/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:WInput.scrolldown/; @@ -2605,12 +2785,16 @@ $key = q/sec:tilingref/; $external_latex_labels{$key} = q|6.2|; $noresave{$key} = "$nosave"; +$key = q/fn:WTimer.is_set/; +$external_latex_labels{$key} = q|6.1.13|; +$noresave{$key} = "$nosave"; + $key = q/fn:WRegion.set_name/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:table.join/; -$external_latex_labels{$key} = q|6.1.16|; +$external_latex_labels{$key} = q|6.1.18|; $noresave{$key} = "$nosave"; $key = q/fn:ioncore.activity_first/; @@ -2622,11 +2806,11 @@ $external_latex_labels{$key} = q|6.6|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.is_hidden/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:WRegion.get_configuration/; -$external_latex_labels{$key} = q|6.1.9|; +$external_latex_labels{$key} = q|6.1.10|; $noresave{$key} = "$nosave"; $key = q/fn:mod_menu.get/; @@ -2666,7 +2850,7 @@ $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; $key = q/fn:export/; -$external_latex_labels{$key} = q|6.1.13|; +$external_latex_labels{$key} = q|6.1.15|; $noresave{$key} = "$nosave"; $key = q/chap:gr/; @@ -2690,7 +2874,7 @@ $external_latex_labels{$key} = q|6.9|; $noresave{$key} = "$nosave"; $key = q/fn:table.icat/; -$external_latex_labels{$key} = q|6.1.16|; +$external_latex_labels{$key} = q|6.1.18|; $noresave{$key} = "$nosave"; $key = q/fn:WEdln.kill_line/; @@ -2706,13 +2890,17 @@ $external_latex_labels{$key} = q|6.3|; $noresave{$key} = "$nosave"; $key = q/fn:WMPlex.get_index/; -$external_latex_labels{$key} = q|6.1.7|; +$external_latex_labels{$key} = q|6.1.8|; $noresave{$key} = "$nosave"; $key = q/fn:WEdln.skip_word/; $external_latex_labels{$key} = q|6.3.2|; $noresave{$key} = "$nosave"; +$key = q/ioncore_submap_ungrab_hook/; +$external_latex_labels{$key} = q|6.9|; +$noresave{$key} = "$nosave"; + $key = q/fn:WGroup.attach_new/; $external_latex_labels{$key} = q|6.1.3|; $noresave{$key} = "$nosave"; diff --git a/doc/ionconf/node1.html b/doc/ionconf/node1.html index b243cb3..8027def 100644 --- a/doc/ionconf/node1.html +++ b/doc/ionconf/node1.html @@ -28,26 +28,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -60,219 +60,243 @@ Contents

      diff --git a/doc/ionconf/node10.html b/doc/ionconf/node10.html index 6499263..d15711c 100644 --- a/doc/ionconf/node10.html +++ b/doc/ionconf/node10.html @@ -28,31 +28,31 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      @@ -79,10 +79,12 @@ List of functions
      ioncore.chdir_for
      ioncore.clientwin_i
      ioncore.compile_cmd +
      ioncore.create_timer
      ioncore.create_ws
      ioncore.current
      ioncore.defbindings
      ioncore.defctxmenu +
      ioncore.defer
      ioncore.deflayout
      ioncore.defmenu
      ioncore.defshortening @@ -97,6 +99,7 @@ List of functions
      ioncore.getbindings
      ioncore.getctxmenu
      ioncore.get_dir_for +
      ioncore.get_hook
      ioncore.getlayout
      ioncore.getmenu
      ioncore.get_paths @@ -116,7 +119,7 @@ List of functions
      ioncore.lookup_clientwin
      ioncore.lookup_region
      ioncore.lookup_script -
      ioncore.match_winprop_name +
      ioncore.match_winprop_dflt
      ioncore.mclick
      ioncore.mdblclick
      ioncore.mdrag @@ -139,7 +142,11 @@ List of functions
      ioncore.shutdown
      ioncore.snapshot
      ioncore.submap +
      ioncore.submap_enter +
      ioncore.submap_wait
      ioncore.submenu +
      ioncore.tabnum.clear +
      ioncore.tabnum.show
      ioncore.tagged_attach
      ioncore.tagged_clear
      ioncore.tagged_first @@ -194,7 +201,11 @@ List of functions
      mod_query.warn
      mod_sp.set_shown
      mod_sp.set_shown_on +
      mod_statusbar.create +
      mod_statusbar.inform +
      mod_statusbar.launch_statusd
      mod_statusbar.statusbars +
      mod_statusbar.update
      mod_tiling.get
      mod_tiling.mkbottom
      mod_tiling.set @@ -254,8 +265,8 @@ List of functions
      WFrame.mode
      WFrame.p_switch_tab
      WFrame.p_tabdrag +
      WFrame.set_grattr
      WFrame.set_mode -
      WFrame.set_numbers
      WFrame.set_shaded
      WGroup.attach
      WGroup.attach_new @@ -265,6 +276,9 @@ List of functions
      WGroup.set_bottom
      WGroup.set_fullscreen
      WGroupWS.attach_framed +
      WHook.add +
      WHook.listed +
      WHook.remove
      WInfoWin.set_text
      WInput.cancel
      WInput.scrolldown @@ -337,7 +351,7 @@ List of functions
      WSplitSplit.tl
      WSplit.transpose
      WStatusBar.get_template_table -
      WStatusBar.is_systray_extl +
      WStatusBar.is_systray
      WStatusBar.set_systray
      WStatusBar.set_template
      WStatusBar.set_template_table @@ -355,37 +369,40 @@ List of functions
      WTiling.split_tree
      WTiling.transpose_at
      WTiling.unsplit_at +
      WTimer.is_set +
      WTimer.reset +
      WTimer.set
      WWindow.p_move
      WWindow.p_resize
      WWindow.xid
      diff --git a/doc/ionconf/node11.html b/doc/ionconf/node11.html index 4ad6ff2..9803649 100644 --- a/doc/ionconf/node11.html +++ b/doc/ionconf/node11.html @@ -28,26 +28,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -57,1086 +57,184 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      Index


      -
      aboutmsg - : 6.1
      acrobatic - : 3.5 -
      activity_first - : 6.1 -
      activity_i - : 6.1 + : 3.5
      Alt - : 3.3.5 + : 3.3.5
      AnyModifier - : 3.3.5 -
      append - : 6.1.16 + : 3.3.5
      resizeinc - : 3.5.1 - | 3.5.1 -
      attach - : 6.1.3 - | 6.1.7 - | 6.5.1 -
      attach_framed - : 6.1.5 -
      attach_new - : 6.1.3 - | 6.1.7 -
      back - : 6.3.2 -
      backspace - : 6.3.2 -
      bdoc - : 6.1 -
      begin_kbresize - : 6.1.9 -
      bkill_word - : 6.3.2 -
      bol - : 6.3.2 -
      bottom - : 6.1.3 -
      br - : 6.2.4 -
      bskip_word - : 6.3.2 + : 3.5.1 + | 3.5.1
      Button-n - : 3.3.6 -
      cancel - : 6.1.8 - | 6.3.3 - | 6.4.1 -
      chdir_for - : 6.1 + : 3.3.6
      class
      -
      winprop : 3.5.2 +
      winprop : 3.5.2
      -
      clear_mark - : 6.3.2
      clientwin_do_manage_alt - : 6.9 -
      clientwin_i - : 6.1 + : 6.9
      clientwin_mapped_hook - : 6.9 + : 6.9
      clientwin_property_change_hook - : 6.9 + : 6.9
      clientwin_unmapped_hook - : 6.9 -
      compile_cmd - : 6.1 -
      complete - : 6.3.2 -
      contents - : 6.3.2 -
      context - : 6.3.2 + : 6.9
      Control - : 3.3.5 -
      copy - : 6.1.16 - | 6.3.2 -
      create_ws - : 6.1 -
      current - : 6.1 - | 6.1.9 - | 6.2.2 -
      current_scr - : 6.1.10 -
      cut - : 6.3.2 -
      de
      -
      defstyle : 6.8 -
      defstyle_rootwin : 6.8 -
      reset : 6.8 -
      substyle : 6.8 -
      -
      dec_index - : 6.1.7 -
      defbindings - : 6.1 -
      defcmd - : 6.3 -
      defctxmenu - : 6.1 -
      deflayout - : 6.1 + : 3.3.5
      defmenu - : 3.4.1 - | 6.1 -
      defshortening - : 6.1 -
      defstyle - : 6.8 -
      defstyle_rootwin - : 6.8 -
      defwinprop - : 6.1 -
      delete - : 6.3.2 -
      detach - : 6.1 -
      dir - : 6.2.4 + : 3.4.1
      drawing engine - : 4.1 -
      eol - : 6.3.2 + : 4.1
      ETCDIR - : 3.1 -
      exec - : 6.1 -
      exec_on - : 6.1 -
      export - : 6.1.13 -
      farthest - : 6.2.5 -
      find_manager - : 6.1 -
      find_screen_id - : 6.1 -
      finish - : 6.1.8 - | 6.3.2 - | 6.4.1 -
      flip - : 6.2.4 -
      flip_at - : 6.2.5 + : 3.1
      float - : 3.5 -
      focushistory_i - : 6.1 -
      forward - : 6.3.2 + : 3.5
      frame_managed_changed_hook - : 6.9 + : 6.9
      fullscreen - : 3.5 -
      geom - : 6.1.8 - | 6.1.9 - | 6.2.1 -
      get - : 6.1 - | 6.2 - | 6.3 - | 6.4 - | 6.5.1 -
      get_configuration - : 6.1.9 -
      get_dir_for - : 6.1 -
      get_ident - : 6.1.1 -
      get_index - : 6.1.7 -
      get_paths - : 6.1 -
      get_savefile - : 6.1 -
      get_stdisp - : 6.1.7 -
      get_template_table - : 6.7.1 -
      getbindings - : 6.1 -
      getctxmenu - : 6.1 -
      getlayout - : 6.1 -
      getmenu - : 6.1 -
      getwinprop - : 6.1 -
      goto - : 6.1.9 -
      goto_activity - : 6.1 -
      goto_first - : 6.1 -
      goto_next - : 6.1 -
      goto_next_screen - : 6.1 -
      goto_nth_screen - : 6.1 -
      goto_prev_screen - : 6.1 -
      goto_previous - : 6.1 -
      gr
      -
      read_config : 6.1.14 -
      refresh : 6.1.14 -
      select_engine : 6.1.14 -
      -
      grabmenu - : 6.4 -
      groupleader_of - : 6.1.9 -
      history_clear - : 6.3 -
      history_get - : 6.3 -
      history_next - : 6.3.2 -
      history_prev - : 6.3.2 -
      history_push - : 6.3 -
      history_search - : 6.3 -
      history_table - : 6.3 -
      icat - : 6.1.16 -
      id - : 6.1.11 + : 3.5
      ignore_resizeinc - : 3.5.1 - | 3.5.1 + : 3.5.1 + | 3.5.1
      ignore_cfgrq - : 3.5 + : 3.5
      ignore_max_size - : 3.5.1 + : 3.5.1
      ignore_min_size - : 3.5.1 + : 3.5.1
      ignore_net_active_window - : 3.5 -
      inc_index - : 6.1.7 -
      insstr - : 6.3.2 + : 3.5
      instance
      -
      winprop : 3.5.2 -
      -
      ioncore
      -
      aboutmsg : 6.1 -
      activity_first : 6.1 -
      activity_i : 6.1 -
      bdoc : 6.1 -
      chdir_for : 6.1 -
      clientwin_i : 6.1 -
      compile_cmd : 6.1 -
      create_ws : 6.1 -
      current : 6.1 -
      defbindings : 6.1 -
      defctxmenu : 6.1 -
      deflayout : 6.1 -
      defmenu : 6.1 -
      defshortening : 6.1 -
      defwinprop : 6.1 -
      detach : 6.1 -
      exec : 6.1 -
      exec_on : 6.1 -
      find_manager : 6.1 -
      find_screen_id : 6.1 -
      focushistory_i : 6.1 -
      get : 6.1 -
      get_dir_for : 6.1 -
      get_paths : 6.1 -
      get_savefile : 6.1 -
      getbindings : 6.1 -
      getctxmenu : 6.1 -
      getlayout : 6.1 -
      getmenu : 6.1 -
      getwinprop : 6.1 -
      goto_activity : 6.1 -
      goto_first : 6.1 -
      goto_next : 6.1 -
      goto_next_screen : 6.1 -
      goto_nth_screen : 6.1 -
      goto_prev_screen : 6.1 -
      goto_previous : 6.1 -
      is_i18n : 6.1 -
      kpress : 6.1 -
      kpress_wait : 6.1 -
      load_module : 6.1 -
      lookup_clientwin : 6.1 -
      lookup_region : 6.1 -
      lookup_script : 6.1 -
      match_winprop_name : 6.1 -
      mclick : 6.1 -
      mdblclick : 6.1 -
      mdrag : 6.1 -
      menuentry : 6.1 -
      mpress : 6.1 -
      navi_first : 6.1 -
      navi_next : 6.1 -
      popen_bgread : 6.1 -
      progname : 6.1 -
      read_savefile : 6.1 -
      refresh_stylelist : 6.1 -
      region_i : 6.1 -
      request_selection : 6.1 -
      resign : 6.1 -
      restart : 6.1 -
      restart_other : 6.1 -
      set : 6.1 -
      set_paths : 6.1 -
      set_selection : 6.1 -
      shutdown : 6.1 -
      snapshot : 6.1 -
      submap : 6.1 -
      submenu : 6.1 -
      tagged_attach : 6.1 -
      tagged_clear : 6.1 -
      tagged_first : 6.1 -
      tagged_i : 6.1 -
      TR : 6.1 -
      unsqueeze : 6.1 -
      version : 6.1 -
      warn : 6.1 -
      warn_traced : 6.1 -
      write_savefile : 6.1 -
      x_change_property : 6.1 -
      x_delete_property : 6.1 -
      x_get_atom_name : 6.1 -
      x_get_text_property : 6.1 -
      x_get_window_property : 6.1 -
      x_intern_atom : 6.1 -
      x_set_text_property : 6.1 +
      winprop : 3.5.2
      ioncore_deinit_hook - : 6.9 + : 6.9
      ioncore_post_layout_setup_hook - : 6.9 + : 6.9
      ioncore_sigchld_hook - : 6.9 + : 6.9
      ioncore_snapshot_hook - : 6.9 -
      is_active - : 6.1.9 -
      is_activity - : 6.1.9 -
      is_fullscreen - : 6.1.3 -
      is_hidden - : 6.1.7 -
      is_histcompl - : 6.3.2 -
      is_i18n - : 6.1 -
      is_mapped - : 6.1.9 -
      is_shaded - : 6.1.2 -
      is_systray_extl - : 6.7.1 -
      is_tagged - : 6.1.9 -
      join - : 6.1.16 + : 6.9 +
      ioncore_submap_ungrab_hook + : 6.9 +
      is_dockapp
      +
      winprop : 3.5.2 +
      +
      is_transient
      +
      winprop : 3.5.2 +
      jumpto - : 3.5 + : 3.5
      keysymdef.h - : 3.3.5 -
      kill - : 6.1.1 -
      kill_line - : 6.3.2 -
      kill_to_bol - : 6.3.2 -
      kill_to_eol - : 6.3.2 -
      kill_word - : 6.3.2 -
      kpress - : 6.1 -
      kpress_wait - : 6.1 -
      load_module - : 6.1 -
      Lock : 3.3.5 -
      lookup_clientwin - : 6.1 -
      lookup_region - : 6.1 -
      lookup_script - : 6.1 -
      managed_i - : 6.1.3 - | 6.1.7 - | 6.2.5 -
      manager - : 2.2.2.1 - | 6.1.9 -
      map - : 6.1.16 -
      mark - : 6.3.2 -
      match_winprop_name - : 6.1 +
      Lock + : 3.3.5 +
      manager + : 2.2.2.1
      max_size - : 3.5.1 -
      maximize_horiz - : 6.1.2 -
      maximize_vert - : 6.1.2 -
      mclick - : 6.1 -
      mdblclick - : 6.1 -
      mdrag - : 6.1 -
      menu - : 6.4 + : 3.5.1
      menuentry - : 3.4.1 - | 6.1 + : 3.4.1
      menus - : 3.4.1 -
      message - : 6.3 + : 3.4.1
      min_size - : 3.5.1 -
      mkbottom - : 6.2 -
      mod_dock
      -
      set_floating_shown_on : 6.5 -
      -
      mod_menu
      -
      get : 6.4 -
      grabmenu : 6.4 -
      menu : 6.4 -
      pmenu : 6.4 -
      set : 6.4 -
      -
      mod_query
      -
      defcmd : 6.3 -
      get : 6.3 -
      history_clear : 6.3 -
      history_get : 6.3 -
      history_push : 6.3 -
      history_search : 6.3 -
      history_table : 6.3 -
      message : 6.3 -
      popen_completions : 6.3 -
      query : 6.3 -
      query_attachclient : 6.3 -
      query_editfile : 6.3 -
      query_exec : 6.3 -
      query_gotoclient : 6.3 -
      query_lua : 6.3 -
      query_man : 6.3 -
      query_menu : 6.3 -
      query_renameframe : 6.3 -
      query_renameworkspace : 6.3 -
      query_restart : 6.3 -
      query_runfile : 6.3 -
      query_shutdown : 6.3 -
      query_ssh : 6.3 -
      query_workspace : 6.3 -
      query_yesno : 6.3 -
      set : 6.3 -
      show_about_ion : 6.3 -
      show_tree : 6.3 -
      warn : 6.3 -
      -
      mod_sp
      -
      set_shown : 6.6 -
      set_shown_on : 6.6 -
      -
      mod_statusbar
      -
      statusbars : 6.7 -
      -
      mod_tiling
      -
      get : 6.2 -
      mkbottom : 6.2 -
      set : 6.2 -
      untile : 6.2 -
      -
      mode - : 6.1.2 + : 3.5.1
      ModN - : 3.3.5 -
      move - : 6.1.8 -
      mpress - : 6.1 -
      mx_count - : 6.1.7 -
      mx_current - : 6.1.7 -
      mx_i - : 6.1.7 -
      mx_nth - : 6.1.7 -
      name - : 6.1.9 -
      navi_first - : 6.1 -
      navi_next - : 6.1 + : 3.3.5 +
      name
      +
      winprop : 3.5.2 +
      new_group - : 3.5 -
      next_completion - : 6.3.2 -
      nextto - : 6.2.5 -
      node_of - : 6.2.5 -
      nudge - : 6.1.1 + : 3.5
      NumLock - : 3.3.5 + : 3.3.5
      Obj - : 2.2.1 + : 2.2.1
      oneshot - : 3.5 -
      p_move - : 6.1.12 -
      p_resize - : 6.1.12 -
      p_switch_tab - : 6.1.2 -
      p_tabdrag - : 6.1.2 -
      parent - : 2.2.2.1 - | 6.1.9 - | 6.2.1 -
      paste - : 6.3.2 -
      pmenu - : 6.4 -
      point - : 6.3.2 -
      popen_bgread - : 6.1 -
      popen_completions - : 6.3 + : 3.5 +
      parent + : 2.2.2.1
      PREFIX - : 3.1 -
      prev_completion - : 6.3.2 -
      progname - : 6.1 -
      query - : 6.3 -
      query_attachclient - : 6.3 -
      query_editfile - : 6.3 -
      query_exec - : 6.3 -
      query_gotoclient - : 6.3 -
      query_lua - : 6.3 -
      query_man - : 6.3 -
      query_menu - : 6.3 -
      query_renameframe - : 6.3 -
      query_renameworkspace - : 6.3 -
      query_restart - : 6.3 -
      query_runfile - : 6.3 -
      query_shutdown - : 6.3 -
      query_ssh - : 6.3 -
      query_workspace - : 6.3 -
      query_yesno - : 6.3 -
      quote_next - : 6.1.1 -
      read_config - : 6.1.14 -
      read_savefile - : 6.1 -
      refresh - : 6.1.14 -
      refresh_stylelist - : 6.1 -
      reg - : 6.2.3 + : 3.1
      region_do_warp_alt - : 6.9 -
      region_i - : 6.1 + : 6.9
      region_notify_hook - : 6.9 -
      request_selection - : 6.1 -
      reset - : 6.8 -
      resign - : 6.1 -
      resize - : 6.1.8 - | 6.5.1 -
      restart - : 6.1 -
      restart_other - : 6.1 + : 6.9
      role
      -
      winprop : 3.5.2 +
      winprop : 3.5.2
      root window - : 2.2.1 -
      rootwin_of - : 6.1.9 -
      rqclose - : 6.1.9 -
      rqclose_propagate - : 6.1.9 -
      rqgeom - : 6.1.8 - | 6.1.9 - | 6.2.1 -
      rqorder - : 6.1.9 + : 2.2.1
      screen
      -
      physical : 2.2.1 -
      X : 2.2.1 +
      physical : 2.2.1 +
      X : 2.2.1
      screen_managed_changed_hook - : 6.9 -
      screen_of - : 6.1.9 -
      scrolldown - : 6.3.3 + : 6.9
      ScrollLock - : 3.3.5 -
      scrollup - : 6.3.3 -
      select_engine - : 6.1.14 -
      select_next - : 6.4.1 -
      select_nth - : 6.4.1 -
      select_prev - : 6.4.1 -
      set - : 6.1 - | 6.2 - | 6.3 - | 6.4 - | 6.5.1 -
      set_activity - : 6.1.9 -
      set_bottom - : 6.1.3 -
      set_completions - : 6.3.1 -
      set_context - : 6.3.2 -
      set_floating - : 6.2.5 -
      set_floating_at - : 6.2.5 -
      set_floating_shown_on - : 6.5 -
      set_fullscreen - : 6.1.3 -
      set_hidden - : 6.1.7 -
      set_index - : 6.1.7 -
      set_managed_offset - : 6.1.11 -
      set_mark - : 6.3.2 -
      set_mode - : 6.1.2 -
      set_name - : 6.1.9 -
      set_name_exact - : 6.1.9 -
      set_numbers - : 6.1.2 -
      set_paths - : 6.1 -
      set_selection - : 6.1 -
      set_shaded - : 6.1.2 -
      set_shown - : 6.6 -
      set_shown_on - : 6.6 -
      set_stdisp - : 6.1.7 -
      set_systray - : 6.7.1 -
      set_tagged - : 6.1.9 -
      set_template - : 6.7.1 -
      set_template_table - : 6.7.1 -
      set_text - : 6.1.6 -
      shell_safe - : 6.1.15 + : 3.3.5
      Shift - : 3.3.5 -
      show_about_ion - : 6.3 -
      show_tree - : 6.3 -
      shutdown - : 6.1 -
      size_hints - : 6.1.9 -
      skip_word - : 6.3.2 -
      snapshot - : 6.1 -
      split - : 6.2.5 -
      split_at - : 6.2.5 -
      split_top - : 6.2.5 -
      split_tree - : 6.2.5 + : 3.3.5
      statusbar - : 3.5 -
      statusbars - : 6.7 -
      string
      -
      shell_safe : 6.1.15 -
      + : 3.5
      style - : 4.1 -
      submap - : 6.1 + : 4.1
      submenu - : 3.4.1 - | 6.1 -
      substyle - : 4.1 - | 6.8 -
      switch_next - : 6.1.7 -
      switch_nth - : 6.1.7 -
      switch_prev - : 6.1.7 + : 3.4.1 +
      substyle + : 4.1
      switchto - : 3.5 + : 3.5
      system.mk - : 3.1 -
      table
      -
      append : 6.1.16 -
      copy : 6.1.16 -
      icat : 6.1.16 -
      join : 6.1.16 -
      map : 6.1.16 -
      -
      tagged_attach - : 6.1 -
      tagged_clear - : 6.1 -
      tagged_first - : 6.1 -
      tagged_i - : 6.1 + : 3.1
      target - : 3.5 + : 3.5
      tiling_placement_alt - : 6.9 -
      tl - : 6.2.4 -
      TR - : 6.1 + : 6.9
      transient - : 3.5.3 + : 3.5.3
      transient_mode - : 3.5 + : 3.5
      transparent - : 3.5 -
      transpose - : 6.2.1 -
      transpose_at - : 6.2.5 -
      transpose_chars - : 6.3.2 -
      transpose_words - : 6.3.2 -
      typeahead_clear - : 6.4.1 -
      unsplit_at - : 6.2.5 -
      unsqueeze - : 6.1 -
      untile - : 6.2 -
      update - : 6.7.1 + : 3.5
      userpos - : 3.5.1 -
      version - : 6.1 -
      warn - : 6.1 - | 6.3 -
      warn_traced - : 6.1 -
      WClientWin - : 2.2.1 -
      -
      get_ident : 6.1.1 -
      kill : 6.1.1 -
      nudge : 6.1.1 -
      quote_next : 6.1.1 -
      xid : 6.1.1 -
      -
      WComplProxy
      -
      set_completions : 6.3.1 -
      -
      WDock
      -
      attach : 6.5.1 -
      get : 6.5.1 -
      resize : 6.5.1 -
      set : 6.5.1 -
      -
      WEdln - : 2.2.1 -
      -
      back : 6.3.2 -
      backspace : 6.3.2 -
      bkill_word : 6.3.2 -
      bol : 6.3.2 -
      bskip_word : 6.3.2 -
      clear_mark : 6.3.2 -
      complete : 6.3.2 -
      contents : 6.3.2 -
      context : 6.3.2 -
      copy : 6.3.2 -
      cut : 6.3.2 -
      delete : 6.3.2 -
      eol : 6.3.2 -
      finish : 6.3.2 -
      forward : 6.3.2 -
      history_next : 6.3.2 -
      history_prev : 6.3.2 -
      insstr : 6.3.2 -
      is_histcompl : 6.3.2 -
      kill_line : 6.3.2 -
      kill_to_bol : 6.3.2 -
      kill_to_eol : 6.3.2 -
      kill_word : 6.3.2 -
      mark : 6.3.2 -
      next_completion : 6.3.2 -
      paste : 6.3.2 -
      point : 6.3.2 -
      prev_completion : 6.3.2 -
      set_context : 6.3.2 -
      set_mark : 6.3.2 -
      skip_word : 6.3.2 -
      transpose_chars : 6.3.2 -
      transpose_words : 6.3.2 -
      -
      WFrame - : 2.2.1 -
      -
      is_shaded : 6.1.2 -
      maximize_horiz : 6.1.2 -
      maximize_vert : 6.1.2 -
      mode : 6.1.2 -
      p_switch_tab : 6.1.2 -
      p_tabdrag : 6.1.2 -
      set_mode : 6.1.2 -
      set_numbers : 6.1.2 -
      set_shaded : 6.1.2 -
      -
      WGroup + : 3.5.1 +
      WClientWin + : 2.2.1 +
      WEdln : 2.2.1 -
      -
      attach : 6.1.3 -
      attach_new : 6.1.3 -
      bottom : 6.1.3 -
      is_fullscreen : 6.1.3 -
      managed_i : 6.1.3 -
      set_bottom : 6.1.3 -
      set_fullscreen : 6.1.3 -
      +
      WFrame + : 2.2.1 +
      WGroup + : 2.2.1
      WGroupCW - : 2.2.1 -
      WGroupWS - : 2.2.1 -
      -
      attach_framed : 6.1.5 -
      -
      WInfoWin
      -
      set_text : 6.1.6 -
      + : 2.2.1 +
      WGroupWS + : 2.2.1
      Winprops - : 3.5 -
      WInput - : 2.2.1 -
      -
      cancel : 6.3.3 -
      scrolldown : 6.3.3 -
      scrollup : 6.3.3 -
      -
      WMenu
      -
      cancel : 6.4.1 -
      finish : 6.4.1 -
      select_next : 6.4.1 -
      select_nth : 6.4.1 -
      select_prev : 6.4.1 -
      typeahead_clear : 6.4.1 -
      + : 3.5 +
      WInput + : 2.2.1
      WMessage - : 2.2.1 -
      WMoveresMode
      -
      cancel : 6.1.8 -
      finish : 6.1.8 -
      geom : 6.1.8 -
      move : 6.1.8 -
      resize : 6.1.8 -
      rqgeom : 6.1.8 -
      -
      WMPlex
      -
      attach : 6.1.7 -
      attach_new : 6.1.7 -
      dec_index : 6.1.7 -
      get_index : 6.1.7 -
      get_stdisp : 6.1.7 -
      inc_index : 6.1.7 -
      is_hidden : 6.1.7 -
      managed_i : 6.1.7 -
      mx_count : 6.1.7 -
      mx_current : 6.1.7 -
      mx_i : 6.1.7 -
      mx_nth : 6.1.7 -
      set_hidden : 6.1.7 -
      set_index : 6.1.7 -
      set_stdisp : 6.1.7 -
      switch_next : 6.1.7 -
      switch_nth : 6.1.7 -
      switch_prev : 6.1.7 -
      -
      WRegion - : 2.2.1 -
      -
      begin_kbresize : 6.1.9 -
      current : 6.1.9 -
      geom : 6.1.9 -
      get_configuration : 6.1.9 -
      goto : 6.1.9 -
      groupleader_of : 6.1.9 -
      is_active : 6.1.9 -
      is_activity : 6.1.9 -
      is_mapped : 6.1.9 -
      is_tagged : 6.1.9 -
      manager : 6.1.9 -
      name : 6.1.9 -
      parent : 6.1.9 -
      rootwin_of : 6.1.9 -
      rqclose : 6.1.9 -
      rqclose_propagate : 6.1.9 -
      rqgeom : 6.1.9 -
      rqorder : 6.1.9 -
      screen_of : 6.1.9 -
      set_activity : 6.1.9 -
      set_name : 6.1.9 -
      set_name_exact : 6.1.9 -
      set_tagged : 6.1.9 -
      size_hints : 6.1.9 -
      -
      write_savefile - : 6.1 -
      WRootWin + : 2.2.1 +
      WRegion + : 2.2.1 +
      WRootWin + : 2.2.1 +
      WScreen + : 2.2.1 +
      WSplit : 2.2.1 -
      -
      current_scr : 6.1.10 -
      -
      WScreen - : 2.2.1 -
      -
      id : 6.1.11 -
      set_managed_offset : 6.1.11 -
      -
      WSplit - : 2.2.1 -
      -
      geom : 6.2.1 -
      parent : 6.2.1 -
      rqgeom : 6.2.1 -
      transpose : 6.2.1 -
      -
      WSplitInner
      -
      current : 6.2.2 -
      -
      WSplitRegion
      -
      reg : 6.2.3 -
      -
      WSplitSplit
      -
      br : 6.2.4 -
      dir : 6.2.4 -
      flip : 6.2.4 -
      tl : 6.2.4 -
      -
      WStatusBar
      -
      get_template_table : 6.7.1 -
      is_systray_extl : 6.7.1 -
      set_systray : 6.7.1 -
      set_template : 6.7.1 -
      set_template_table : 6.7.1 -
      update : 6.7.1 -
      -
      WTiling - : 2.2.1 -
      -
      farthest : 6.2.5 -
      flip_at : 6.2.5 -
      managed_i : 6.2.5 -
      nextto : 6.2.5 -
      node_of : 6.2.5 -
      set_floating : 6.2.5 -
      set_floating_at : 6.2.5 -
      split : 6.2.5 -
      split_at : 6.2.5 -
      split_top : 6.2.5 -
      split_tree : 6.2.5 -
      transpose_at : 6.2.5 -
      unsplit_at : 6.2.5 -
      -
      WWindow +
      WTiling : 2.2.1 -
      -
      p_move : 6.1.12 -
      p_resize : 6.1.12 -
      xid : 6.1.12 -
      -
      x_change_property - : 6.1 -
      x_delete_property - : 6.1 -
      x_get_atom_name - : 6.1 -
      x_get_text_property - : 6.1 -
      x_get_window_property - : 6.1 -
      x_intern_atom - : 6.1 -
      x_set_text_property - : 6.1 -
      xid - : 6.1.1 - | 6.1.12 +
      WWindow + : 2.2.1
      Xinerama - : 2.2.1 + : 2.2.1
      xmodmap - : 3.3.5 + : 3.3.5
      xprop - : 3.5.3 + : 3.5.3
      diff --git a/doc/ionconf/node12.html b/doc/ionconf/node12.html index 0bbefa4..a2daa50 100644 --- a/doc/ionconf/node12.html +++ b/doc/ionconf/node12.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -About this document ... - +Bibliography + @@ -19,58 +19,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds + + +

      + +

      +Bibliography +

      1 +
      The Ion 3 scripts repository, + http://iki.fi/tuomov/repos/ion-scripts-3/. +
      -

      -About this document ... -

      - Configuring and extending Ion3 with Lua

      -This document was generated using the -LaTeX2HTML translator Version 2002-2-1 (1.71) -

      -Copyright © 1993, 1994, 1995, 1996, -Nikos Drakos, -Computer Based Learning Unit, University of Leeds. -
      -Copyright © 1997, 1998, 1999, -Ross Moore, -Mathematics Department, Macquarie University, Sydney. -

      -The command line arguments were:
      - latex2html -show_section_numbers -short_index -local_icons -noaddress -up_url http://iki.fi/tuomov/ion/ -up_title 'Ion homepage' -nofootnode -split 3 ionconf

      -The translation was initiated by tuomov on 2007-03-18


      diff --git a/doc/ionconf/node13.html b/doc/ionconf/node13.html new file mode 100644 index 0000000..b65d8cd --- /dev/null +++ b/doc/ionconf/node13.html @@ -0,0 +1,77 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + + + + + +

      +About this document ... +

      + Configuring and extending Ion3 with Lua

      +This document was generated using the +LaTeX2HTML translator Version 2002-2-1 (1.71) +

      +Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
      +Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

      +The command line arguments were:
      + latex2html -show_section_numbers -short_index -local_icons -noaddress -up_url http://iki.fi/tuomov/ion/ -up_title 'Ion homepage' -nofootnode -split 3 ionconf +

      +The translation was initiated by tuomov on 2007-05-06 +


      + + + diff --git a/doc/ionconf/node2.html b/doc/ionconf/node2.html index daebdf4..a824fd2 100644 --- a/doc/ionconf/node2.html +++ b/doc/ionconf/node2.html @@ -28,31 +28,31 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -63,99 +63,91 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      -This document is an ''advanced user'' manual for Ion, the X11 window manager, -and version 3 specifically. It is an attempt attempt at documenting what is -in Ion's configuration files, how to configure Ion by simple modifications +This document is an ``advanced user'' manual for the X11 window manager +Ion, version 3. It is an attempt at documenting things that go into Ion's +configuration files, how to configure Ion by simple modifications to these files and how to write more complex extensions in Lua, the lightweight configuration and scripting language used by Ion.

      -Readers unfamiliar with Lua is advised to first glance at the Lua manual at +Readers unfamiliar with Lua might first want to first glance at some +Lua documentation at

      - -

      -and perhaps some tutorial pages at the lua-users wiki: + HREF="http://www.lua.org/docs.html">http://www.lua.org/docs.html, or +
      http://lua-users.org/wiki/LuaTutorial, -

      -

      -Back in this document, first in chapter 2 some key -concepts and relations are explained. These include the module system -and Ion's object and class hierarchies. While it might not at first -occur that knowing such things would be necessary to configure -a program, this material is essential because of the object-oriented -nature of most of Ion's scripting interface. +although this should not be strictly necessary for basic modifications +of configuration files for anyone with at least some familiarity with +programming languages.

      -The new user, fed up with the default key bindings and eager to just -quickly configure Ion to his liking may question the reasons for -exposing the ''heavy'' internal OO structure in the scripting and -configuration interface. I'm not the one to blame him for that. -Sure it would be faster to configure Ion to everyone's liking -if a simpler binding configuration interface was provided. Such an -interface would, however, also be far more limited and make writing -extensions more complicated and the advantages from using a real -scripting language would be partly lost. One more advantage from -a rich scripting and configuration interface is that it allows -implementing scripts to read alternate configuration file formats, -ones that could be, for example, modified by external configuration tools. +Back in this document, first in chapter 2 some key +concepts and relations are explained. These include the module system, +and Ion's object (or ``region'') and class hierarchies. While it may +not be necessary to study the latter for basic copy-paste modifications +of configuration files - for that you should not really need this +manual either - it is, however, essential to for more extensive +customisation, due to the semi-object-oriented nature of most of +Ion's scripting interface. Knowing the different object types also +helps dealing with the different binding ``contexts'' (see +Section 3.3) that to some extent mirror these classes.

      -In chapter 3 the very basic Ion configuration know-how -is provided. All the different configuration files and their locations -are explained and instructions are given to allow the reader to -configure bindings and so-called ''winprops''. Chapter 4 -explains the notion of drawing engines and graphical styles and how to -write new looks for Ion and more advanced aspects of Ion's scripting -interface are documented in chapter 5 (a work in -progress). +The new user, fed up with the default key bindings and eager to +just quickly configure Ion to his liking, may therefore just want +to skip to Chapter 3, and attempt to work from therefore. +That chapter provides the very basic Ion configuration know-how +is provided: all the different configuration files and their locations +are explained, instructions are given to allow the reader to +configure bindings and so-called ``winprops'', and the statusbar +templates are also explained.

      +Next, Chapter 4 explains the notion of drawing engines +and graphical styles and how to write new looks for Ion. More advanced +aspects of Ion's scripting interface are documented in Chapter +5. Finally, most of the functions provided by Ion's scripting interface -are listed and documented in the Function reference in chapter -6. At the end of the document is an alphabetical -listing of all these functions. - -

      +are listed and documented in the Function reference in Chapter +6. At the end of the document an alphabetical +listing of all these functions may be found.

      diff --git a/doc/ionconf/node3.html b/doc/ionconf/node3.html index 63c2666..cfe57dd 100644 --- a/doc/ionconf/node3.html +++ b/doc/ionconf/node3.html @@ -28,31 +28,31 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -61,22 +61,22 @@ original version by: Nikos Drakos, CBLU, University of Leeds Subsections @@ -140,7 +140,7 @@ should be loaded. Currently Ion provides the following modules:
      mod_dock
      -
      Module for docking Window Maker dockapps. +
      Module for docking Window Maker dock-apps. The dock can both float and be embedded as the statusbar.
      @@ -149,12 +149,6 @@ should be loaded. Currently Ion provides the following modules: be toggled on/off everywhere. Think of the 'console' in some first-person shooters. - -
      mod_mgmtmode
      -
      Support module for implementing ''management - modes'' with a XOR-frame similar to move/resize mode around selected - region. -
      mod_sm
      Session management support module. @@ -167,10 +161,10 @@ So-called drawing engines are also implemented as a modules, but they are not discussed here; see chapter 4.

      -The stock configuration for the 'ion3' executable loads all of the modules -mentioned above except mod_dock and filemod_mgmtmode. -The stock configuration for the 'pwm3' executable (which differs from the -'ion3' executable in a few configuration details, such as Xinerama usage) +The stock configuration for the ion3 executable loads all of the +modules mentioned above except mod_dock. +The stock configuration for the pwm3 executable (which differs +from the ion3 executable in a few configuration details) loads another set of modules.

      @@ -186,9 +180,9 @@ loads another set of modules.

      While Ion does not not have a truly object-oriented design 2.1, + HREF="#foot297">2.1, things that appear on the computer screen are, however, quite -naturally expressed as such ''objects''. Therefore Ion implements +naturally expressed as such ``objects''. Therefore Ion implements a rather primitive OO system for these screen objects and some other things. @@ -206,7 +200,7 @@ basic relations.

      For simplicity we consider only the essential-for-basic-configuration Ioncore, mod_tiling and mod_query classes. -See Appendix B for the full class hierachy visible +See Appendix B for the full class hierarchy visible to Lua side.

      @@ -227,7 +221,7 @@ implement.

      -

      +
      - + - + @@ -501,36 +527,39 @@ functions. Key presses: Mouse actions:

      The actions that most of these functions correspond to should be clear -and as explained in the reference, kpress_wait is simply -kpress with a flag set instructing Ioncore wait for all -modifiers to be released before processing any further actions. +and as explained in the reference, kpress_wait is simply +kpress with a flag set instructing Ioncore wait for +all modifiers to be released before processing any further actions. This is to stop one from accidentally calling e.g. -WRegion.rqclose multiple times in a row. The submap -function is used to define submaps or ''prefix maps''. The second -argument to this function is table listing the key press actions -(kpress) in the submap +WRegion.rqclose multiple times in a row. The +submap function is used to define submaps or +``prefix maps''. The second argument to this function is table listing +the key press actions (kpress) in the submap. +The submap_enter handler is called when the submap +is entered, in which this handler is defined. Likewise, the +submap_wait handler is called when all modifiers +have been released while waiting for further key presses in the submap.

      The parameters keyspec and buttonspec are explained below @@ -583,36 +612,35 @@ defbindings("WFrame", { As seen above, the functions that create key binding specifications require a keyspec argument. This argument should be a string containing the name of a key as listed in the X header file keysymdef.h3.1 without the XK_ prefix. - + HREF="#foot876">3.1 without the XK_ prefix. + Most of the key names are quite intuitive while some are not. For example, the Enter key on the main part of the keyboard has the less common name Return while the one the numpad is called KP_Enter.

      -The keyspec string may optionally have multiple ''modifier'' names +The keyspec string may optionally have multiple ``modifier'' names followed by a plus sign (+) as a prefix. X defines the following modifiers: -

      + +

      Shift, Control, Mod1 to Mod5, AnyModifier and Lock. - - - - - - -

      + + + + +

      X allows binding all of these modifiers to almost any key and while this list of modifiers does not explicitly list keys such as -Alt that are common on modern keyboards, such +Alt that are common on modern keyboards, such keys are bound to one of the ModN. On systems running XFree86 Alt is usually Mod1. On Suns Mod1 is the diamond key -and Alt something else. One of the ''flying window'' keys on so +and Alt something else. One of the ``flying window'' keys on so called Windows-keyboards is probably mapped to Mod3 if you have -such a key. Use the program xmodmap +such a key. Use the program xmodmap to find out what exactly is bound where.

      @@ -623,11 +651,14 @@ specified modifiers in nested regions. For this reason, Ion recognises default.

      -Ion ignores the Lock modifier and any ModN () -bound to NumLock or -ScrollLock +Ion ignores the Lock modifier and any ModN ($N=1{\ldots} 5$) +bound to NumLock or +ScrollLock by default because such3.2 locking keys may otherwise + HREF="#foot855">3.2 locking keys may otherwise cause confusion.

      @@ -640,12 +671,12 @@ cause confusion. Button specifications are similar to key definitions but now instead of specifying modifiers and a key, you specify modifiers and one of the button names Button1 to -Button5. Additionally the +Button5. Additionally the specification may end with an optional area name following an @-sign. Only frames currently support areas, and the supported values in this case are -"border", "tab", "empty_tab", "client" and -nil (for the whole frame). +`border', `tab', `empty_tab', `client' +and nil (for the whole frame).

      For example, the following code binds dragging a tab with the first @@ -667,7 +698,7 @@ defbindings("WFrame", {

      The default binding configuration contains references to the variables META and ALTMETA instead of directly using the default -values of "Mod1+" and "" (nothing). As explained in +values of `Mod1+' and `' (nothing). As explained in section 3.2, the definitions of these variables appear in cfg_ion.lua. This way you can easily change the the modifiers used by all bindings in the default configuration without @@ -691,10 +722,10 @@ to it is available virtually everywhere.

      - - - - + + + + In the stock configuration file setup, menus are defined in the file cfg_menus.lua as previously mentioned. The mod_menu module must be loaded for one to be able to define menus, and this is done with @@ -743,24 +774,24 @@ just like the menus defined as above.

      - + - + - + - + - + - +
      Figure 2.1: Partial Ioncore, mod_tiling and mod_query @@ -259,77 +253,76 @@ The core classes:

      Obj
      -
      +
      Is the base of Ion's object system.

      WRegion
      -
      +
      is the base class for everything corresponding to something on the screen. Each object of type WRegion has a size and position relative to the parent WRegion. While a big part of Ion operates on these instead of more specialised classes, WRegion - is a ''virtual'' base class in that there are no objects of ''pure'' + is a ``virtual'' base class in that there are no objects of ``pure'' type WRegion; all concrete regions are objects of some class that inherits WRegion.

      WClientWin
      -
      is a class for +
      is a class for client window objects, the objects that window managers are supposed to manage.

      WWindow
      -
      is the base class for all +
      is the base class for all internal objects having an X window associated to them (WClientWins also have X windows associated to them). -

      -

      -
      WRootWin
      -
      is the class for - root windows of X screens. - Note that an ''X screen'' or root window is not necessarily a - single physical screen as a root window - may be split over multiple screens when hacks such as - Xinerama are used. (Actually there can be only - one root window when Xinerama is used.) -

      WMPlex
      -
      is a base class for all regions that''multiplex'' +
      is a base class for all regions that ``multiplex'' other regions. This means that of the regions managed by the multiplexer, - only one can be displayed at a time. Classes that inhereit WMPlex - include screens and frames. + only one can be displayed at a time.

      WScreen
      -
      is the class for objects - corresponding to physical screens. Screens may share a root - window when the Xinerama extension is used as explained above. +
      is an instance of WMPlex + for screens. + +

      +

      +
      WRootWin
      +
      is the class for + root windows of X screens. + It is an instance of WScreen. + Note that an ``X screen'' or root window is not necessarily a + single physical screen as a root window + may be split over multiple screens when ugly hacks such as + Xinerama are used. (Actually there can be only + one root window when Xinerama is used.)

      WFrame
      -
      is the class for frames. - While most Ion's objects have no graphical presentation, frames basically - add to WMPlexes the decorations around client windows - (borders, tabs). +
      is the class for frames. + While most Ion's objects have no graphical presentation, frames + basically add to WMPlexes the decorations around client + windows (borders, tabs).

      WGroup
      -
      is the base class for groups. +
      is the base class for groups. Particular types of groups are workspaces - (WGroupWS) + (WGroupWS) and groups of client windows - (WGroupCW). + (WGroupCW).
      @@ -339,12 +332,12 @@ Classes implemented by the mod_tiling module:

      WTiling
      -
      is the class for tilings +
      is the class for tilings of frames.
      WSplit
      -
      (or, more specifically, classes +
      (or, more specifically, classes that inherit it) encode the WTiling tree structure.
      @@ -355,26 +348,26 @@ Classes implemented by the mod_query module:

      WInput
      -
      is a virtual base class for the +
      is a virtual base class for the two classes below.
      WEdln
      -
      is the class for the ''queries'', +
      is the class for the ``queries'', the text inputs that usually appear at bottoms of frames and sometimes - screens. Queries are the functional equivalent of ''mini buffers'' in + screens. Queries are the functional equivalent of ``mini buffers'' in many text editors.
      WMessage
      -
      implements the boxes for +
      implements the boxes for warning and other messages that Ion may wish to display to the user. These also usually appear at bottoms of frames.

      -There are also some other ''proxy'' classes that do not refer +There are also some other ``proxy'' classes that do not refer to objects on the screen. The only important one of these for basic configuration is WMoveresMode that is used for binding callbacks in the move and resize mode. @@ -391,7 +384,7 @@ binding callbacks in the move and resize mode. 2.2.2.1 Parent-child relations Each object of type WRegion has a parent and possibly a manager -associated to it. The parent for an object is always a +associated to it. The parent for an object is always a WWindow and for WRegion with an X window (WClientWin, WWindow) the parent WWindow is given by the same relation of the X windows. For other WRegions the relation is not as clear. @@ -401,7 +394,7 @@ Figure 2.2.

      -

      +
      @@ -422,7 +415,7 @@ Most common parent-child relations

      WRegions have very little control over their children as a parent. -The manager WRegion has much more control over its +The manager WRegion has much more control over its managed WRegions. Managers, for example, handle resize requests, focusing and displaying of the managed regions. Indeed the manager--managed relationship gives a better picture of the logical ordering of objects on @@ -440,7 +433,7 @@ but all have a parent-a screen if not anything else.

      -

      +
      Figure 2.2: Most common parent-child relations
      @@ -504,7 +497,7 @@ consideration:



      Footnotes

      -
      ... design... design2.1
      the author doesn't like such artificial designs @@ -512,31 +505,31 @@ consideration:
      diff --git a/doc/ionconf/node4.html b/doc/ionconf/node4.html index 0aab7cc..4eaa00e 100644 --- a/doc/ionconf/node4.html +++ b/doc/ionconf/node4.html @@ -28,31 +28,31 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -61,60 +61,77 @@ original version by: Nikos Drakos, CBLU, University of Leeds Subsections
      @@ -140,8 +157,8 @@ configuration file ion.lua is provided in section 3.2. How keys and mouse action are bound to functions is described in detail in 3.3 and in section 3.5 winprops are -explained. For a reference on exported functions, see section -6. +explained. Finally, the statusbar is explained in 3.6. +For a reference on exported functions, see section 6.

      @@ -155,9 +172,9 @@ explained. For a reference on exported functions, see section Ion3, to which document applies, stores its stock configuration files in /usr/local/etc/ion3/ unless you, the OS package maintainer or whoever installed the package on the system has modified the variables -PREFIX or -ETCDIR in -system.mk before compiling Ion. +PREFIX or +ETCDIR in +system.mk before compiling Ion. In the first case you probably know where to find the files and in the other case the system administrator or the OS package maintainer should have provided documentation to point to the correct location. @@ -177,7 +194,7 @@ for a file, if no extension or path component is given, compiled .lua files.

      -All the configuration files are named cfg_*.lua with the ''*'' +All the configuration files are named cfg_*.lua with the ``*'' part varying. The configuration file for each module mod_modname is cfg_modname.lua, with modname varying by the module in question. The following table summarises these and other configuration @@ -232,20 +249,22 @@ file. Some basic 'feel' settings are usually configured there and the necessary modules and other configuration files configuring some more specific aspects of Ion are loaded there. In this section we take a walk through the stock cfg_ion.lua. -Notice that most of the settings are commented-out (- is a +Notice that most of the settings are commented-out (-- is a line comment in Lua) in the actual file, as they're the defaults nevertheless.

      -The first thing one in the file is to set +The first thing done in the file, is to set

       META="Mod1+"
       ALTMETA=""
       
      These settings cause most of Ion's key bindings to use Mod1 as the -modifier key. If ALTMETA is set, it is used as modifier for the keys -that don't normally use a modifier. for details on modifiers and key -binding setup in general see section 3.3. +modifier key. If ALTMETA is set, it is used as modifier for the +keys that don't normally use a modifier. Note that these two are Lua +variables used in the configuration files only, and not Ion settings. +For details on modifiers and key binding setup in general, see section +3.3.

      Next we do some basic feel configuration: @@ -283,7 +302,7 @@ for ioncore.set for details.

      As a next step, in the actual cfg_ion.lua file, we load -cfg_defaults.lua. However, it is merely a conveniency file for +cfg_defaults.lua. However, it is merely a convenience file for doing exactly what we will going through below, and what is commented out in the actual file. If you do not want to load what cfg_defaults.lua loads, just comment out the corresponding @@ -301,8 +320,8 @@ dopath("cfg_layouts") Most bindings and menus are defined in cfg_ioncore.lua. Details on making such definitions follow in sections 3.3 and 3.4, respectively. -some kludges or ''winprops'' to make some applications behave better -under Ion are colledted in cfg_kludges.lua; see section +some kludges or ``winprops'' to make some applications behave better +under Ion are collected in cfg_kludges.lua; see section 3.5 for details. In addition to these, this file lists quite a few statements of the form

      @@ -348,7 +367,7 @@ loaded prior to defining any module-specific bindings.
       
       

      Bindings are defined by calling the function -defbindings with the ''context'' of the +defbindings with the ``context'' of the bindings and the a table of new bindings to make. The context is simply string indicating one of the classes of regions (or modes such as WMoveresMode) introduced in section 2.2, and fully @@ -365,7 +384,7 @@ defbindings("WFrame", {

      There has been some confusion among users about the need to define the -''context'' for each binding, so let me try to explain this design +``context'' for each binding, so let me try to explain this design decision here. The thing is that if there was a just a simple 'bind this key to this action' method without knowledge of the context, some limitations would have to be made on the available actions and writing @@ -373,31 +392,37 @@ custom handlers would be more complicated. In addition one may want to bind the same function to different key for different types of objects. Indeed, the workspace and frame tab switching functions are the same both classes being based on WMPlex, and in the stock configuration the -switch to :th workspaces is bound to Mod1+n while the switch to -:th tab is bound to the sequence Mod1+k n. - -

      -Currently known ''contexts'' include: -WScreen, -WMPlex, -WMPlex.toplevel, -WFrame, -WFrame.toplevel, -WFrame.floating, -WFrame.tiled, -WFrame.transient, -WMoveresMode, -WGroup, -WGroupCW, -WGroupWS, -WClientWin, -WTiling, and -WStatusBar. +switch to $n$:th workspaces is bound to Mod1+n while the switch to +$n$:th tab is bound to the sequence Mod1+k n. + +

      +Currently known contexts include: +`WScreen', +`WMPlex', +`WMPlex.toplevel', +`WFrame', +`WFrame.toplevel', +`WFrame.floating', +`WFrame.tiled', +`WFrame.transient', +`WMoveresMode', +`WGroup', +`WGroupCW', +`WGroupWS', +`WClientWin', +`WTiling', and +`WStatusBar'. Most of these should be self-explanatory, corresponding to objects -of class with the same name. The ones with .toplevel suffix -refer to screens and ''toplevel'' frames, i.e. frames that are -not used for transient windows. Likewise .transient refers -to frames in transient mode, and .tiled and .floating +of class with the same name. The ones with `.toplevel' suffix +refer to screens and ``toplevel'' frames, i.e. frames that are +not used for transient windows. Likewise `.transient' refers +to frames in transient mode, and `.tiled' and `.floating' to frames in, respectively, tiled and floating modes.

      @@ -422,9 +447,9 @@ gets to handle the action.

      Unlike in Ion2, in Ion3 binding handlers are not normally passed as -''anonymous functions'', although this is still possible. The preferred -method now is to pass the code of the handler as a string. Two special -variables are available in this code. These are +``anonymous functions'', although this is still possible. The preferred +method now is to pass the code of the handler as a string. Two following +special variables are available in this code.

      Figure 2.3: Most common manager-managed relations
      @@ -445,13 +470,14 @@ variables are available in this code. These are + object referred to by _. This should seldom be needed.
      _chld Object corresponding to the currently active child window of the - object referred to by _.

      -For example, supposing '_' is a WFrame, the following -handler should move the active window to the right, if possible: +For example, supposing _ (underscore) is a WFrame, the +following handler should move the active window to the right, if +possible:

      @@ -466,7 +492,7 @@ handler should move the active window to the right, if possible:
       
       

      To suppress error messages, each binding handler may also be accompanied -by a ''guard'' expression that blocks the handler from being called when +by a ``guard'' expression that blocks the handler from being called when the guard condition is not met. Currently the following guard expressions are supported (for both _sub and _chld): @@ -475,10 +501,10 @@ are supported (for both _sub and _chld):

      Guard Description
      "_sub:non-nil"
      `_sub:non-nil' The _sub parameter must be set.
      "_sub:SomeClass"
      `_sub:SomeClass' The _sub parameter must be member of class SomeClass.
      Menu name Description
      windowlist
      `windowlist' List of all client windows. Activating an entry jumps to that window.
      workspacelist
      `workspacelist' List of all workspaces. Activating an entry jumps to that workspaces.
      focuslist
      `focuslist' List of client windows with recent activity in them, followed by previously focused client windows.
      focuslist_
      `focuslist_' List of previously focused client windows.
      stylemenu
      `stylemenu' List of available look_*.lua style files. Activating an entry loads that style and ask to save the selection.
      ctxmenu
      `ctxmenu' Context menu for given object.
      @@ -772,7 +803,7 @@ just like the menus defined as above.

      -The ''ctxmenu'' is a special menu that is assembled from a defined context +The ``ctxmenu'' is a special menu that is assembled from a defined context menu for the object for which the menu was opened for, but also includes the context menus for the manager objects as submenus. @@ -793,9 +824,9 @@ defctxmenu("WFrame", {

      -Some of the same ''modes'' as were available for some bindings -may also be used: WFrame.tiled, WFrame.floating, -and WFrame.transient. +Some of the same ``modes'' as were available for some bindings +may also be used: `WFrame.tiled', `WFrame.floating', +and `WFrame.transient'.

      @@ -828,10 +859,7 @@ handlers (and elsewhere): mod_menu.grabmenu A special version of mod_menu.menu that grabs the keyboard and is scrolled with a given key until all modifiers have been released, - after which the selected entry is activated. This function is meant to - be used for implementing, for example, Win***s-style Alt-Tab - handling.3.3 + after which the selected entry is activated. @@ -859,7 +887,7 @@ defbindings("WFrame", {

      -The so-called ''winprops'' can be used to change how +The so-called ``winprops'' can be used to change how specific windows are handled and to set up some kludges to deal with badly behaving applications. They are defined by calling the function defwinprop with a table containing the properties to set and the @@ -877,7 +905,7 @@ usual method of identifying windows, and how to obtain this information.

      Description:
      -
      +
      Set this to true for Acrobat Reader. It has an annoying habit of trying to manage its dialogs instead of setting them as transients and letting the window manager do its job, causing @@ -895,7 +923,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      Set this to open the window in a floating frame, when in a group. @@ -910,7 +938,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      Should the window be initially in full screen mode?
      @@ -924,7 +952,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      Should configure requests on the window be ignored? Only has effect on floating windows. @@ -939,7 +967,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      Ignore extended WM hints _NET_ACTIVE_WINDOW request.
      @@ -953,7 +981,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      Should a newly created client window always be made active, even if the allocated frame isn't. @@ -968,7 +996,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      If the region specified by target winprop does not exist (or that winprop is not set), create a new workspace using the previously stored layout (see ioncore.deflayout) named by @@ -987,7 +1015,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      Discard this winprop after first use.
      @@ -1001,11 +1029,11 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      Put the window in the statusbar, in the named tray component, - (The default tray component is called simply "systray", + (The default tray component is called simply `systray', and others you give names to in your custom template, always - prefixed by "systray_". + prefixed by `systray_'.
      @@ -1018,7 +1046,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      Should a newly mapped client window be switched to within its frame. @@ -1033,7 +1061,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      The name of an object (workspace, frame) that should manage windows of this type. See also new_group. @@ -1048,11 +1076,11 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      - "normal": No change in behaviour. "current": +
      + `normal': No change in behaviour. `current': The window should be thought of as a transient for the current active client window (if any) even if it is not marked as a - transient by the application. "off": The window should + transient by the application. `off': The window should be handled as a normal window even if it is marked as a transient by the application. @@ -1067,7 +1095,7 @@ usual method of identifying windows, and how to obtain this information.
      Description:
      -
      +
      Should frames be made transparent when this window is selected?
      @@ -1082,15 +1110,15 @@ usual method of identifying windows, and how to obtain this information.

      Additionally, the winprops -max_size, -min_size, -aspect, -resizeinc, +max_size, +min_size, +aspect, +resizeinc, and -ignore_max_size, -ignore_min_size, -ignore_aspect, -ignore_resizeinc, +ignore_max_size, +ignore_min_size, +ignore_aspect, +ignore_resizeinc, may be used to override application-supplied size hints. The four first ones are tables with the fields w and h, indicating the width and height size hints in pixels, and the latter ignore @@ -1098,7 +1126,7 @@ winprop is a boolean.

      Finally, the boolean -userpos option may be used to +userpos option may be used to override the USPosition flag of the size hints. Normally, when this flag is set, Ion tries to respect the supplied window position more than when it is not set. Obviously, this makes sense @@ -1113,15 +1141,22 @@ only for floating windows.

      -The identification information in the winprop specification is usually the -class, -role, -instance and -name -of the window. The name field is a Lua-style regular expression -matched against the window's title and the rest are strings that must -exactly match the corresponding window information. It is not necessary -to specify all of these fields. +The identification information supported are +class, +role, +instance, +name, +is_transient, and +is_dockapp. +It is not necessary to specify all of these fields. +The first three are strings, and must exactly match the +corresponding information obtained from the window's properties. +The name field is a Lua-style regular expression matched against +the window's title. The is_transient field is a boolean that can +be used to include or exclude transients only, while the is_dockapp +field is set by Ion for the dock windows of Window Maker dockapp protocol +dockapps. Usually this is the only information available for these +icon windows.

      Ion looks for a matching winprop in the order listed by the following @@ -1138,7 +1173,7 @@ fields) is tried. class role instance -name +other E E @@ -1184,8 +1219,9 @@ fields) is tried.

      -If there are multiple winprops with other identification information -the same but different name, the longest match is chosen. +If there are multiple matching winprops with the same +class, role and instance, but other information +different, the most recently defined one is used.

      @@ -1199,7 +1235,7 @@ can be used to list the identification information required to set winprops for a window and all the transient windows managed within it.

      - + Another way to get the identification information is to use xprop. Simply run To get class and instance, simply run xprop WM_CLASS and click on the particular window of interest. The class is the latter of @@ -1208,21 +1244,24 @@ windows have this property - use the command xprop WM_ROLE. This method, however, will not work on transients.

      - -So-called ''transient windows'' are usually short-lived dialogs (although + +So-called ``transient windows'' are usually short-lived dialogs (although some programs abuse this property) that have a parent window that they are -''transient for''. On tiled workspaces Ion displays these windows -simulatenously with the parent window at the bottom of the same frame. +``transient for''. On tiled workspaces Ion displays these windows +simultaneously with the parent window at the bottom of the same frame. Unfortunately xprop is stupid and can't cope with this situation, returning the parent window's properties when the transient is clicked on. For this reason you'll have to do a little extra work to get the properties -for that window.3.4 +for that window.3.3

      Finally, it should be mentioned that too many authors these days -''forget'' to set this vital identification to anything meaningful: -everything except name is the same for all of the programs's -windows, for example. +``forget'' to set this vital identification to anything meaningful: +everything except name is the same for all of the program's +windows, for example. Some other programs only set this information +after the window has been mapped, i.e. the window manager has been +told to start managing it, which is obviously too late. +Gtk applications in particular are often guilty on both counts.

      @@ -1251,36 +1290,7 @@ defwinprop{

      -3.5.4.2 Fixing a Mozilla Firebird transient -

      - -

      -Mozilla Firebird (0.7) incorrectly does not set the WM_TRANSIENT_FOR -property for the dialog that is used to ask the action to take for a file. -It, however, sets the the property point to the main window for the save -dialog. This can be annoying and confusing, as the first dialog is not -closed before the second is displayed. - -

      -We'd like the first dialog to be transient to the main window. The closest -we can get to that is to consider it transient to the current window (if -there's one). Unfortunately Firebird does not set any meaningful classes, -instances or roles for the windows, so we'll have to rely on an ugly title -match. - -

      -

      -defwinprop{
      -    class = "MozillaFirebird-bin",
      -    name = "Opening .*",
      -    transient_mode = "current",
      -}
      -
      - -

      - -

      -3.5.4.3 Forcing newly created windows in named frames +3.5.4.2 Forcing newly created windows in named frames

      @@ -1297,7 +1307,7 @@ defwinprop{

      For this example to work, we have to somehow create a frame named -sysmonframe. One way to do this is to make the following +`sysmonframe'. One way to do this is to make the following call in the Mod1+F3 Lua code query:

      @@ -1309,35 +1319,192 @@ mod_query.query_renameframe(_) Recall that _ points to the multiplexer (frame or screen) in which the query was opened. Running this code should open a new query prefilled with the current name of the frame. In our example we would change the -name to sysmonframe, but we could just as well have used the +name to `sysmonframe', but we could just as well have used the default name formed from the frame's class name and an instance number.

      +

      + +
      +3.6 The statusbar +

      + +

      +The mod_statusbar module provides a statusbar that adapts to +layouts of tilings, using only the minimal space needed. Ion only +supports one adaptive ``status display'' object per screen, so this +statusbar is mutually exclusive with the embedded mode of mod_dock +docks. + +

      +The statusbar is configured in cfg_statusbar.lua. Typically, +the configuration consists of two steps: creating a statusbar with +mod_statusbar.create, and then launching the separate +ion-statusd status daemon process with +mod_statusbar.launch_statusd. This latter phase is done +automatically, if it was not done by the configuration file, but +the configuration file may pass extra parameters to ion-statusd +monitors. (See Section 5.4 for more information on +writing ion-statusd monitors.) + +

      +A typical cfg_statusbar.lua configuration might look as follows: + +

      +

      +-- Create a statusbar
      +mod_statusbar.create{
      +    screen = 0,     -- First screen, 
      +    pos = 'bl',     -- bottom left corner
      +    systray = true, -- Swallow systray windows
      +
      +    -- The template
      +    template = "[ %date || load:% %>load || mail:% %>mail_new/%>mail_total ]"
      +               .. " %filler%systray",
      +}
      +
      +-- Launch ion-statusd. 
      +mod_statusbar.launch_statusd{
      +    -- Date meter
      +    date={
      +        -- ISO-8601 date format with additional abbreviated day name
      +        date_format='%a %Y-%m-%d %H:%M',
      +    },      
      +}
      +
      + +

      + +

      +3.6.1 The template +

      + +

      +The template specifies what is shown on the statusbar; for information +on the other options to mod_statusbar.create, see the reference. +Strings of the form `%spec' tokens specially interpreter by +the statusbar; the rest appears verbatim. The spec typically +consists of the name of the value/meter to display (beginning with a latin +alphabet), but may be preceded by an alignment specifier and a number +specifying the minimum width. The alignment specifiers are: `>' +for right, `<' for left, and `|' for centring. Additionally, +space following `%' (that is, the string `% '), adds +``stretchable space'' at that point. The special string `%filler' +may be used to flush the rest of the template to the right end of +the statusbar. + +

      +The stretchable space works as follows: mod_statusbar remembers +the widest string (in terms of graphical presentation) that it has +seen for each meter, unless the width has been otherwise constrained. +If there is stretchable space in the template, it tries to make the +meter always take this much space, by stretching any space found in +the direction indicated by the alignment specifier: the opposite +direction for left or right alignment, and both for centring. + +

      + +

      +3.6.2 The systray +

      + +

      +The special `%systray' and `%systray_*' +(`*' varying) monitors indicate where to place system tray +windows. There may be multiple of these. KDE-protocol system tray +icons are placed in `%systray' automatically, unless disabled +with the systray option. Otherwise the statusbar winprop may +be used to place any window in any particular `%systray_*'. + +

      + +

      +3.6.3 Monitors +

      + +

      +The part before the first +underscore of each monitor name, describes the script/plugin/module +that provides the meter, and any configuration should be passed +in the a corresponding sub-table mod_statusbar.launch_statusd. +Ion comes with date, load and mail (for plain old mbox) +ion-statusd monitor scripts. More may be obtained from +the scripts repository [1]. These included scripts +provide the following monitors and their options + +

      + +

      +3.6.3.1 Date +

      + +

      +Options: date_format: The date format in as seen above, +in the usual strftime format. formats: table of +formats for additional date monitors, the key being the name +of the monitor (without the `date_' prefix). + +

      +Monitors: `date' and other user-specified ones with the +`date_' prefix. + +

      + +

      +3.6.3.2 Load +

      + +

      +Options: update_interval: Update interval in milliseconds +(default 10s). important_threshold: Threshold above which +the load is marked as important (default 1.5), so that the +drawing engine may be suitably hinted. critical_threshold: +Threshold above which the load is marked as critical (default 4.0). + +

      +Monitors: `load' (for all three values), +`load_1min', `load_5min' and `load_15min'. + +

      + +

      +3.6.3.3 Mail +

      + +

      +Options: update_interval: Update interval in milliseconds +(default 1min). mbox: mbox-format mailbox location +(default $MAIL). +files: list of additional mailboxes, the key giving the +name of the monitor. + +

      +Monitors: `mail_new', `mail_unread', +`mail_total', and corresponding +`mail_*_new', `mail_*_unread', and `mail_*_total' +for the additional mailboxes (`*' varying). + +

      +



      Footnotes

      -
      ...keysymdef.h...keysymdef.h3.1
      This file can usually be found in the directory /usr/X11R6/include/X11/.
      -
      ... such... such3.2
      Completely useless keys that should be gotten rid of in the author's opinion.
      -
      ... handling.... window.3.3
      -
      See the wcirculate.lua script in the Ion - scripts repository http://iki.fi/tuomov/repos/ion-scripts-3/. - -
      -
      ... window.3.4
      There's a patch to xprop to fix this, but nothing seems to be happening with respect to including it in XFree86. @@ -1346,31 +1513,31 @@ XFree86.
      diff --git a/doc/ionconf/node5.html b/doc/ionconf/node5.html index de5ae5e..b5247f6 100644 --- a/doc/ionconf/node5.html +++ b/doc/ionconf/node5.html @@ -28,31 +28,31 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -61,51 +61,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds Subsections
      @@ -120,12 +122,13 @@ original version by: Nikos Drakos, CBLU, University of Leeds This chapter first gives in section 4.1 a general outline of how drawing engines are used, of style specifications and then in section 4.2 describes how to specify styles -for the default drawing engine. +for the default drawing engine. Some additional settings and +user attributes are explained in Sections 4.3.

      - +
      4.1 Drawing engines, style specifications and sub-styles

      @@ -133,7 +136,7 @@ for the default drawing engine.

      Ion's drawing routines are abstracted into so-called drawing engine modules that can, again depending on the system, be dynamically -loaded as needed. The drawing engine modules provide ''brushes'' +loaded as needed. The drawing engine modules provide ``brushes'' that objects can use to draw some high-level primitives such as borders and text boxes (in addition to simple text and rectangle drawing) on their windows and configure e.g. the shape and @@ -150,17 +153,17 @@ element1-element2-...-elementn

      -An example of such a style specification is tab-frame; +An example of such a style specification is `tab-frame'; see the table in subsection 4.1.1 for more styles.

      When an object asks for a brush of certain style, the selected drawing engine will attempt to find the closest match to this specification. The styles/brushes defined by the drawing engines -may have asterisks (*) as some of the elements indicating +may have asterisks (`*') as some of the elements indicating a match to anything. Exact matches are preferred to asterisk matches and longer matches to shorter. For example, let a brush -for style foo-bar-baz be queried, then the following +for style `foo-bar-baz' be queried, then the following brushes are in order of preference:

      @@ -177,7 +180,7 @@ specified, also in the form

       attr1-attr2-...-attrn
       
      -These extra attributes are called substyles +These extra attributes are called substyles and allow, for example, the state of the object to be indicated by different colour sets while keeping the interface at an abstract level and the drawing engine completely ignorant @@ -206,27 +209,27 @@ tag and drag states.) Style name Description -frame +`frame' Style for frames. - Substyle attributes: active/inactive + Substyle attributes: `active'/`inactive' (mutually exclusive) and - quasiactive/not_quasiactive. + `quasiactive'/`not_quasiactive'. A frame is ``quasiactive'' when an active region - has a backlink to it, such as a detached window. + has a back-link to it, such as a detached window. -frame-tiled +`frame-tiled' A more specific style for tiled frames. - Substyle attributes as for frame. + Substyle attributes as for `frame'. -frame-tiled-alt +`frame-tiled-alt' An alternative style for tiled frames. Often used to disable the tab-bar. -frame-floating +`frame-floating' A more specific style for floating frames. -frame-transient +`frame-transient' A more specific style for frames containing transient windows. @@ -243,39 +246,39 @@ tag and drag states.) Style name Description -tab +`tab' Style for frames' tabs and menu entries. Substyle attributes: - active/inactive and - selected/unselected + `active'/`inactive' and + `selected'/`unselected' -tab-frame +`tab-frame' A more specific style for frames' tabs. Additional substyle attributes include: - tagged/not_tagged, - dragged/not_dragged, - activity/no_activity and - quasiactive/not_quasiactive. + `tagged'/`not_tagged', + `dragged'/`not_dragged', + `activity'/`no_activity', + `quasiactive'/`not_quasiactive'. -tab-frame-tiled, +`tab-frame-tiled',   -tab-frame-tiled-alt, +`tab-frame-tiled-alt',   -tab-frame-floating, +`tab-frame-floating',   -tab-frame-transient +`tab-frame-transient' More specific styles for frames in the different modes. -tab-menuentry +`tab-menuentry' A more specific style for entries in WMenus. - Additional substyle attributes include submenu and - occasionally also activity is used. + Additional substyle attributes include `submenu' and + occasionally also `activity' is used. -tab-menuentry-bigmenu +`tab-menuentry-bigmenu' An alternate style for entries in WMenus. @@ -291,30 +294,39 @@ tag and drag states.) Style name Description -input +`input' A style for WInputs. -input-edln +`input-edln' A more specific style for WEdlns. - Substyle attributes: selection for selected text and - cursor for the cursor indicating current editing point. + Substyle attributes: `selection' for selected text and + `cursor' for the cursor indicating current editing point. -input-message +`input-message' A more specific style for WMessages. -input-menu +`input-menu' A more specific style for WMenus. -input-menu-bigmenu +`input-menu-bigmenu' An alternate style for WMenus. -moveres_display +`moveres_display' The box displaying position/size when moving or resizing frames. -dock +`stdisp' +Any status display. + +`stdisp-dock' The dock. +`stdisp-statusbar' +The statusbar. Substyles include: + the name of any monitor/meter (such as `date'), and + the supplied hint. Typical hints are: `normal', + `important', and `critical'. +

      @@ -354,13 +366,13 @@ end

      The gr.select_engine function sees if the engine given as argument is registered (the default drawing engine is -simply called ''de''). If the engine could not be found, it +simply called ``de''). If the engine could not be found, it tries to load a module of the same name. If the engine still -is not registered, gr.select_engine returns false +is not registered, gr.select_engine returns `false' and in this case we also exit the style setup script. If the engine was found, gr.select_engine sees that further requests for brushes are forwarded to that engine -and returns true. +and returns `true'.

      Before defining new styles it may be a good idea to clear old @@ -412,7 +424,7 @@ border elements and styles referred to there are explained in Figure

      -

      +
      @@ -450,10 +462,10 @@ in /usr/X11R6/lib/X11/rgb.txt (exact path varying). - + - + @@ -463,7 +475,7 @@ in /usr/X11R6/lib/X11/rgb.txt (exact path varying). background colour boxes. -
      Figure 4.1: Sketch of different border styles and elements
      Description
      highlight_colourColour for the ''highlight'' part of a border.Colour for the ``highlight'' part of a border.
      shadow_colourColour for the ''highlight'' part of a border.Colour for the ``shadow'' part of a border.
      foreground_colour Colour for the normal drawing operations, e.g. text.
      padding_colourColour for the ''padding'' part of a border border. Set to +Colour for the ``padding'' part of a border border. Set to background_colour if unset.
      @@ -485,14 +497,14 @@ indicating a number of pixels. border_style A string indicating the style of border; one of - elevated/inlaid/ridge/groove as seen in the - above sketch. + `elevated'/`inlaid'/`ridge'/`groove' + as seen in the above sketch. border_sides A string indicating which sides of the border - to draw: all/tb/lr for all, top and bottom, and - left and right. To control between left/right - and top/bottom, use the pixel options below. + to draw: `all'/`tb'/`lr' for all, + top and bottom, and left and right. To control between + left/right and top/bottom, use the pixel options below. highlight_pixels Width of the highlight part of the border in pixels. @@ -525,7 +537,7 @@ indicating a number of pixels. text_align How text is to be aligned in text boxes/tabs; one of - the strings left/right/center. + the strings `left'/`right'/`center'. @@ -558,13 +570,13 @@ indicating a number of pixels.

      As discussed in previous sections, styles may have substyles to e.g. -indicate different states of the object being drawn. The ''de'' engine +indicate different states of the object being drawn. The ``de'' engine limits what can be configured in substyles to the set of colours in the first table above, but also specifically interprets for the main style -tab-frame the substyles *-*-tagged and *-*-*-dragged +`tab-frame' the substyles `*-*-tagged' and `*-*-*-dragged' by, respectively, drawing a right angle shape at the top right corner of a tab and by shading the tab with a stipple pattern. Also for -menus the substyles *-*-submenu are handled as a special case. +menus the substyles `*-*-submenu' are handled as a special case.

      Substyles are defined with the function de.substyle within the @@ -629,21 +641,39 @@ de.defstyle("tab-frame", {

      -

      -4.3 Miscellaneous settings +

      + +
      +4.3 Miscellaneous settings

      -The following style fields are independent of the drawing engine used, -but are related to objects' styles and therefore configured in the drawing -engine configuration file. + +

      +4.3.1 Frame user attributes +

      +The function WFrame.set_grattr may be used to give frames +(and their tabs) arbitrary extra attributes to be passed to the +drawing engine. Hence, by configuring such substyles in the style +configuration files, and turning on the attribute when needed, +scripts may display visual cues related to the frame. There is +also one extra attribute specially interpreted by the default +drawing engine: the `numbered' attribute, which causes +numbers to be displayed on the tabs. -

      -4.3.1 Extra fields for style frame +

      + +

      +4.3.2 Extra fields for style `frame'

      +

      +The following style fields are independent of the drawing engine used, +but are related to objects' styles and therefore configured in the drawing +engine configuration file. +

      @@ -651,8 +681,8 @@ engine configuration file. @@ -663,14 +693,17 @@ engine configuration file. + interval $(0, 1]$.
      Field
      bar Controls the style of the tab-bar. Possible values - are the strings "none", "inside", "outside" - and "shaped", with the last providing the PWM-style + are the strings `none', `inside', `outside' + and `shaped', with the last providing the PWM-style tab-bars for floating frames.
      floatframe_tab_min_w
      floatframe_bar_max_w_q Maximum tab-bar width quotient of frame width for the shaped styles. A number in the - interval .

      -

      -4.3.2 Extra fields for style dock +

      +4.3.3 Extra fields for style `dock'

      @@ -680,12 +713,12 @@ engine configuration file. outline_style How borders are drawn: - "none" - no border, - "all" - border around whole dock, - "each" - border around each dockapp. + `none' - no border, + `all' - border around whole dock, + `each' - border around each dockapp. tile_size -A table with entries width and height, +A table with entries `width' and `height', indicating the width and height of tiles in pixels. @@ -699,31 +732,31 @@ style configuration files.

      diff --git a/doc/ionconf/node6.html b/doc/ionconf/node6.html index 17e8f34..88aa9be 100644 --- a/doc/ionconf/node6.html +++ b/doc/ionconf/node6.html @@ -28,31 +28,31 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -61,20 +61,20 @@ original version by: Nikos Drakos, CBLU, University of Leeds Subsections @@ -89,7 +89,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      This chapter documents some additional features of the Ion configuration and scripting interface that can be used for more advanced scripting than -the basic configuration exlained in chapter 3. +the basic configuration explained in chapter 3.

      @@ -101,16 +101,16 @@ the basic configuration exlained in chapter 3 Hooks are lists of functions to be called when a certain event occurs. -There are two types of them; normal and ''alternative'' hooks. Normal +There are two types of them; normal and ``alternative'' hooks. Normal hooks do not return anything, but alt-hooks should return a boolean -indicating whether it handled its assigned task succesfully. In the case +indicating whether it handled its assigned task successfully. In the case that true is returned, remaining handlers are not called.

      Hook handlers are registered by first finding the hook -with ioncore.get_hook and then calling WHook.add -on the (succesfull) result with the handler as parameter. Similarly -handlers are unregistered with WHook.remove. For example: +with ioncore.get_hook and then calling WHook.add +on the (successful) result with the handler as parameter. Similarly +handlers are unregistered with WHook.remove. For example:

      @@ -125,7 +125,7 @@ handlers do. The types of parameters for each hook are listed in
       the hook reference, section 6.9.
       
       

      -Note that many of the hooks are called in ''protected mode'' and can not +Note that many of the hooks are called in ``protected mode'' and can not use any functions that modify Ion's internal state. TODO: More detailed documentation when this is final. @@ -142,7 +142,7 @@ documentation when this is final.

      -All Ion objects are passed to Lua scriptss as 'userdatas', and you may +All Ion objects are passed to Lua scripts as 'userdatas', and you may safely store such object references for future use. The C-side object may be destroyed while Lua still refers to the object. All exported functions gracefully fail in such a case, but if you need to explicitly @@ -219,8 +219,10 @@ and ioncore.x_get_text_p

      -

      -5.4 Writing ion-statusd monitors +

      + +
      +5.4 Writing ion-statusd monitors

      @@ -228,11 +230,11 @@ All statusbar meters that do not monitor the internal state of Ion should go in the separate ion-statusd program.

      -Whenever the user requests a meter %foo or %foo_bar to be -inserted in a statusbar, mod_statusbar asks ion-statusd to -load statusd_foo.lua on its search path (same as that for Ion-side +Whenever the user requests a meter `%foo' or `%foo_bar' to +be inserted in a statusbar, mod_statusbar asks ion-statusd +to load statusd_foo.lua on its search path (same as that for Ion-side scripts). This script should then supply all meters with the initial part -'foo'. +`foo'.

      To provide this value, the script should simply call statusd.inform @@ -241,11 +243,11 @@ Additionally the script should provide a 'template' for the meter to facilitate expected width calculation by mod_statusbar, and may provide a 'hint' for colour-coding the value. The interpretation of hints depends on the graphical style in use, and currently the -stock styles support the normal, important and -critical hints. +stock styles support the `normal', `important' and +`critical' hints.

      -In our example of the 'foo monitor', at script init we might broadcast +In our example of the 'foo monitor', at script initialisation we might broadcast the template as follows:

      @@ -319,31 +321,31 @@ local settings=table.join(statusd.get_config("foo"), defaults)

      diff --git a/doc/ionconf/node7.html b/doc/ionconf/node7.html index 9b8b3e3..11dd84a 100644 --- a/doc/ionconf/node7.html +++ b/doc/ionconf/node7.html @@ -28,31 +28,31 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -61,97 +61,106 @@ original version by: Nikos Drakos, CBLU, University of Leeds Subsections +
    15. 6.10 Miscellaneous +
      @@ -170,9 +179,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
    16. -
      - - +
      Synopsis:
      ioncore.TR(s, ...) @@ -187,9 +194,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      -
      - - +
      Synopsis:
      ioncore.bdoc(text) @@ -205,9 +210,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      -
      - - +
      Synopsis:
      ioncore.chdir_for(reg, dir) @@ -222,9 +225,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      -
      - - +
      Synopsis:
      ioncore.compile_cmd(cmd, guard) @@ -249,9 +250,22 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      +
      +
      Synopsis:
      +
      WTimer ioncore.create_timer() + +
      +
      Description:
      +
      Create a new timer. + +
      +
      + +

      + +

      +
      Synopsis:
      ioncore.create_ws(scr, tmpl, layout) @@ -268,9 +282,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.defbindings(context, bindings) @@ -287,9 +299,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.defctxmenu(ctx, ...) @@ -305,9 +315,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.deflayout(name, tab) @@ -324,9 +332,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.defmenu(name, tab) @@ -343,9 +349,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.defwinprop(list) @@ -360,9 +364,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.exec_on(reg, cmd, merr_internal) @@ -383,9 +385,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      table ioncore.read_savefile(string basename) @@ -400,9 +400,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      string ioncore.get_savefile(string basename) @@ -418,9 +416,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      string ioncore.lookup_script(string file, string sp) @@ -436,9 +432,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      bool ioncore.write_savefile(string basename, table tab) @@ -454,9 +448,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.find_manager(obj, t) @@ -472,9 +464,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.get_dir_for(reg) @@ -489,9 +479,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.getbindings(maybe_context) @@ -506,9 +494,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.getctxmenu(name) @@ -523,9 +509,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.getlayout(name, all) @@ -541,9 +525,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.getmenu(name) @@ -558,9 +540,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      ioncore.getwinprop(cwin) @@ -575,9 +555,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      string ioncore.aboutmsg() @@ -592,16 +570,14 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      WRegion ioncore.activity_first()
      Description:
      -
      Return first regio non activity list. +
      Returns first region on activity list.
      @@ -609,9 +585,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      bool ioncore.activity_i(function iterfn) @@ -628,9 +602,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      bool ioncore.clientwin_i(function fn) @@ -647,9 +619,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      WRegion ioncore.current() @@ -664,9 +634,7 @@ The string guard maybe set to pose limits on _sub. Currently

      -
      - - +
      Synopsis:
      bool ioncore.defshortening(string rx, string rule, bool always) @@ -718,9 +686,7 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      bool ioncore.detach(WRegion reg, string how) @@ -728,11 +694,12 @@ Similarly to sed's 's' command, rule may contain characters that are
      Description:
      Detach or reattach reg, depending on whether how - is 'set'/'unset'/'toggle'. (Detaching means making reg - managed by its nearest ancestor WGroup, framed if reg is - not itself WFrame. Reattaching means making it managed where - it used to be managed, if a return-placeholder exists.) - If reg is the 'bottom' of some group, the whole group is + is `set', `unset' or `toggle'. (Detaching + means making reg managed by its nearest ancestor WGroup, + framed if reg is not itself WFrame. Reattaching means + making it managed where it used to be managed, if a return-placeholder + exists.) + If reg is the `bottom' of some group, the whole group is detached. If reg is a WWindow, it is put into a frame. @@ -742,9 +709,7 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      integer ioncore.exec(string cmd) @@ -762,9 +727,7 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      WScreen ioncore.find_screen_id(integer id) @@ -779,9 +742,7 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      bool ioncore.focushistory_i(function iterfn) @@ -798,9 +759,7 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      table ioncore.get() @@ -815,16 +774,15 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      table ioncore.get_paths(table tab)
      Description:
      -
      Get important directories (userdir, sessiondir, searchpath). +
      Get important directories (the fields userdir, + sessiondir, searchpath in the returned table).
      @@ -832,9 +790,7 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      bool ioncore.goto_activity() @@ -849,20 +805,17 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      WRegion ioncore.goto_first(WRegion reg, string dirstr, table param)
      Description:
      -
      Go to first region within reg in direction dirstr - (up/down/left/right/beg/end/any). For information on param, - see ioncore.navi_next. Additionally this function supports - the boolean nofront field, for not bringing the object to - front. +
      Go to first region within reg in direction dirstr. + For information on param, see ioncore.navi_next. + Additionally this function supports the boolean nofront field, + for not bringing the object to front.
      @@ -870,20 +823,17 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      WRegion ioncore.goto_next(WRegion reg, string dirstr, table param)
      Description:
      -
      Go to region next from reg in direction dirstr - (up/down/left/right/next/prev/any). For information on param, - see ioncore.navi_next. Additionally this function supports - the boolean nofront field, for not bringing the object to - front. +
      Go to region next from reg in direction dirstr. + For information on param, see ioncore.navi_next. + Additionally this function supports the boolean nofront + field, for not bringing the object to front.
      @@ -891,9 +841,7 @@ Similarly to sed's 's' command, rule may contain characters that are

      -
      - - +
      Synopsis:
      WScreen ioncore.goto_next_screen() @@ -912,9 +860,7 @@ Note that this function is asynchronous; the screen will not

      -
      - - +
      Synopsis:
      WScreen ioncore.goto_nth_screen(integer id) @@ -933,9 +879,7 @@ Note that this function is asynchronous; the screen will not

      -
      - - +
      Synopsis:
      WScreen ioncore.goto_prev_screen() @@ -954,9 +898,7 @@ Note that this function is asynchronous; the screen will not

      -
      - - +
      Synopsis:
      WRegion ioncore.goto_previous() @@ -975,9 +917,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool ioncore.is_i18n() @@ -992,9 +932,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool ioncore.load_module(string modname) @@ -1009,9 +947,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WClientWin ioncore.lookup_clientwin(string name) @@ -1026,9 +962,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRegion ioncore.lookup_region(string name, string typenam) @@ -1044,18 +978,15 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRegion ioncore.navi_first(WRegion reg, string dirstr, table param)
      Description:
      -
      Find first region within reg in direction dirstr - (up/down/left/right/beg/end/any). For information on param, - see ioncore.navi_next. +
      Find first region within reg in direction dirstr. + For information on param, see ioncore.navi_next.
      @@ -1063,9 +994,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRegion ioncore.navi_next(WRegion reg, string dirstr, table param) @@ -1073,8 +1002,9 @@ Note that this function is asynchronous; the region will not
      Description:
      Find region next from reg in direction dirstr - (up/down/left/right/next/prev/any). The table param may - contain the boolean field nowrap, instructing not to wrap + (`up', `down', `left', `right', + `next', `prev', or `any'). The table param + may contain the boolean field nowrap, instructing not to wrap around, and the WRegions no_ascend and no_descend, and boolean functions ascend_filter and descend_filter on WRegion pairs (to, from), are used to decide when @@ -1086,9 +1016,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      integer ioncore.popen_bgread(string cmd, function h, function errh) @@ -1105,9 +1033,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      string ioncore.progname() @@ -1122,9 +1048,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool ioncore.region_i(function fn, string typenam) @@ -1142,9 +1066,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void ioncore.request_selection(function fn) @@ -1160,9 +1082,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void ioncore.resign() @@ -1178,9 +1098,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void ioncore.restart() @@ -1195,9 +1113,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void ioncore.restart_other(string cmd) @@ -1212,9 +1128,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void ioncore.set(table tab) @@ -1250,7 +1164,8 @@ Note that this function is asynchronous; the region will not frame_default_index (string) Specifies where to add new regions on the mutually exclusive list of a frame. One of - ''last'', ''next'' (for after current), ''next-act'' + `last', `next', (for after current), + or `next-act' (for after current and anything with activity right after it). @@ -1279,11 +1194,13 @@ Note that this function is asynchronous; the region will not float_placement_method (string) How to place floating frames. - One of ''udlr'' (up-down, then left-right), - ''lrud'' (left-right, then up-down) or ''random''. + One of `udlr' (up-down, then left-right), + `lrud' (left-right, then up-down), or + `random'. mousefocus -String: ''disable'' or ''sloppy''. +(string) Mouse focus mode: + `disable' or `sloppy'. unsqueeze (boolean) Auto-unsqueeze transients/menus/queries/etc. @@ -1308,16 +1225,15 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      bool ioncore.set_paths(table tab)
      Description:
      -
      Set important directories (sessiondir, searchpath). +
      Set important directories (the fields sessiondir, searchpath + of tab).
      @@ -1325,9 +1241,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.set_selection(string p) @@ -1342,9 +1256,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.shutdown() @@ -1359,9 +1271,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.snapshot() @@ -1376,9 +1286,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.tagged_clear() @@ -1393,16 +1301,14 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      WRegion ioncore.tagged_first(bool untag)
      Description:
      -
      Returns first tagged object, untagging it as well if untagis set. +
      Returns first tagged object, untagging it as well if untag is set.
      @@ -1410,9 +1316,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      bool ioncore.tagged_i(function iterfn) @@ -1429,9 +1333,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.unsqueeze(WRegion reg, bool override) @@ -1449,9 +1351,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      string ioncore.version() @@ -1466,9 +1366,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.warn(string str) @@ -1484,9 +1382,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.warn_traced(string str) @@ -1501,9 +1397,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.x_change_property(integer win, integer atom, integer atom_type, integer format, string mode, table tab) @@ -1511,7 +1405,7 @@ When a keyboard resize function is called, and at most kbresize_t_max
      Description:
      Modify a window property. The mode is one of - "replace", "prepend" or "append", and format + `replace', `prepend' or `append', and format is either 8, 16 or 32. Also see ioncore.x_get_window_property and the XChangeProperty(3) manual page. @@ -1521,9 +1415,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.x_delete_property(integer win, integer atom) @@ -1538,9 +1430,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      string ioncore.x_get_atom_name(integer atom) @@ -1556,17 +1446,14 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      table ioncore.x_get_text_property(integer win, integer atom)
      Description:
      -
      Get a text property for a window (STRING, COMPOUND_TEXT, - or UTF8_STRING property converted). The fields in the returned +
      Get a text property for a window. The fields in the returned table (starting from 1) are the null-separated parts of the property. See the XGetTextProperty(3) manual page for more information. @@ -1576,9 +1463,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      table ioncore.x_get_window_property(integer win, integer atom, integer atom_type, integer n32expected, bool more) @@ -1598,9 +1483,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      integer ioncore.x_intern_atom(string name, bool only_if_exists) @@ -1615,9 +1498,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void ioncore.x_set_text_property(integer win, integer atom, table tab) @@ -1634,9 +1515,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      ioncore.kpress(keyspec, cmd, guard) @@ -1653,9 +1532,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      ioncore.kpress_wait(keyspec, cmd, guard) @@ -1673,12 +1550,40 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      +
      +
      Synopsis:
      +
      bool ioncore.defer(function fn) + +
      +
      Description:
      +
      Defer execution of fn until the main loop. + +
      +
      + +

      + +

      +
      Synopsis:
      -
      ioncore.match_winprop_name(prop, cwin) +
      WHook ioncore.get_hook(string name) + +
      +
      Description:
      +
      Find named hook name. + +
      +
      + +

      + +

      +
      +
      +
      Synopsis:
      +
      ioncore.match_winprop_dflt(prop, cwin, id)
      Description:
      @@ -1690,9 +1595,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      ioncore.mclick(buttonspec, cmd, guard) @@ -1710,9 +1613,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      ioncore.mdblclick(buttonspec, cmd, guard) @@ -1728,9 +1629,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      ioncore.mdrag(buttonspec, cmd, guard) @@ -1749,9 +1648,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      ioncore.menuentry(name, cmd, guard_or_opts) @@ -1773,9 +1670,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      ioncore.mpress(buttonspec, cmd, guard) @@ -1791,9 +1686,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      ioncore.refresh_stylelist() @@ -1808,9 +1701,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      ioncore.submap(kcb_, list) @@ -1828,9 +1719,37 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      +
      +
      Synopsis:
      +
      ioncore.submap_enter(cmd, guard) + +
      +
      Description:
      +
      Submap enter event for bindings. + +
      +
      + +

      + +

      +
      +
      +
      Synopsis:
      +
      ioncore.submap_wait(cmd, guard) + +
      +
      Description:
      +
      Submap modifier release event for bindings. + +
      +
      + +

      + +

      +
      Synopsis:
      ioncore.submenu(name, sub_or_name, options) @@ -1851,9 +1770,40 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      +
      +
      Synopsis:
      +
      ioncore.tabnum.clear() + +
      +
      Description:
      +
      Clear all tab numbers set by ioncore.tabnum.show. + +
      +
      + +

      + +

      +
      +
      +
      Synopsis:
      +
      ioncore.tabnum.show(frame, delay) + +
      +
      Description:
      +
      Show tab numbers on frame, clearing them when submap + grab is released the next time. If delay is given, in + milliseconds, the numbers are not actually displayed until this + time has passed. + +
      +
      + +

      + +

      +
      Synopsis:
      ioncore.tagged_attach(reg, param) @@ -1877,9 +1827,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      table WClientWin.get_ident(WClientWin cwin) @@ -1897,17 +1845,15 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void WClientWin.kill(WClientWin cwin)
      Description:
      -
      Attempt to kill (with XKillWindow) the client that owns the X - window correspoding to cwin. +
      Attempt to kill (with XKillWindow) the client that owns + the X window correspoding to cwin.
      @@ -1915,9 +1861,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void WClientWin.nudge(WClientWin cwin) @@ -1933,9 +1877,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void WClientWin.quote_next(WClientWin cwin) @@ -1950,9 +1892,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      double WClientWin.xid(WClientWin cwin) @@ -1973,9 +1913,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      bool WFrame.is_shaded(WFrame frame) @@ -1990,9 +1928,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void WFrame.maximize_horiz(WFrame frame) @@ -2007,9 +1943,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void WFrame.maximize_vert(WFrame frame) @@ -2024,9 +1958,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      string WFrame.mode(WFrame frame) @@ -2041,9 +1973,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void WFrame.p_switch_tab(WFrame frame) @@ -2059,9 +1989,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      void WFrame.p_tabdrag(WFrame frame) @@ -2070,7 +1998,7 @@ When a keyboard resize function is called, and at most kbresize_t_max
      Description:
      Start dragging the tab that the user pressed on with the pointing device. This function should only be used by binding it to mpress or - mdrag action with area ''tab''. + mdrag action with area `tab'.
      @@ -2078,16 +2006,16 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      -
      bool WFrame.set_mode(WFrame frame, string modestr) +
      bool WFrame.set_grattr(WFrame frame, string attr, string how)
      Description:
      -
      Set frame mode. +
      Set extra drawing engine attributes for the frame. + The parameter attr is the attribute, and how is + one of `set', `unset', or `toggle'.
      @@ -2095,18 +2023,14 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      -
      bool WFrame.set_numbers(WFrame frame, string how) +
      bool WFrame.set_mode(WFrame frame, string modestr)
      Description:
      -
      Control whether tabs show numbers (set/unset/toggle). - Resulting state is returned, which may not be what was - requested. +
      Set frame mode.
      @@ -2114,9 +2038,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      bool WFrame.set_shaded(WFrame frame, string how) @@ -2124,7 +2046,8 @@ When a keyboard resize function is called, and at most kbresize_t_max
      Description:
      Set shading state according to the parameter how - (set/unset/toggle). Resulting state is returned, which may not be + (`set', `unset', or `toggle'). + Resulting state is returned, which may not be what was requested.
      @@ -2139,9 +2062,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      WRegion WGroup.attach(WGroup ws, WRegion reg, table param) @@ -2158,9 +2079,7 @@ When a keyboard resize function is called, and at most kbresize_t_max

      -
      - - +
      Synopsis:
      WRegion WGroup.attach_new(WGroup ws, table param) @@ -2176,22 +2095,22 @@ When a keyboard resize function is called, and at most kbresize_t_max Description type -Class name (a string) of the object to be created. Mandatory. +(string) Class of the object to be created. Mandatory. name -Name of the object to be created (a string). Optional. +(string) Name of the object to be created. switchto -Should the region be switched to (boolean)? Optional. +(boolean) Should the region be switched to? level -Stacking level; default is 1. +(integer) Stacking level; default is 1. modal -Make object modal; ignored if level is set. +(boolean) Make object modal; ignored if level is set. sizepolicy -Size policy. +(string) Size policy; see Section 6.10.1. @@ -2205,16 +2124,14 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      WRegion WGroup.bottom(WGroup ws)
      Description:
      -
      Returns the 'bottom' of ws. +
      Returns the `bottom' of ws.
      @@ -2222,9 +2139,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WGroup.is_fullscreen(WGroup grp) @@ -2239,9 +2154,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WGroup.managed_i(WGroup ws, function iterfn) @@ -2259,16 +2172,14 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WGroup.set_bottom(WGroup ws, WRegion reg)
      Description:
      -
      Sets the 'bottom' of ws. The region reg must already +
      Sets the `bottom' of ws. The region reg must already be managed by ws, unless nil.
      @@ -2277,9 +2188,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WGroup.set_fullscreen(WGroup grp, string how) @@ -2287,8 +2196,9 @@ In addition parameters to the region to be created are passed in this
      Description:
      Set client window reg full screen state according to the - parameter how (set/unset/toggle). Resulting state is returned, - which may not be what was requested. + parameter how (one of `set', `unset', or + `toggle'). Resulting state is returned, which may not be + what was requested.
      @@ -2308,9 +2218,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WGroupWS.attach_framed(WGroupWS ws, WRegion reg, table t) @@ -2341,15 +2249,66 @@ In addition parameters to the region to be created are passed in this

      -6.1.6 WInfoWin functions +6.1.6 WHook functions +

      + +

      + +

      +
      +
      +
      Synopsis:
      +
      bool WHook.add(WHook hk, function efn) + +
      +
      Description:
      +
      Add efn to the list of functions to be called when the + hook hk is triggered. + +
      +
      + +

      + +

      +
      +
      +
      Synopsis:
      +
      bool WHook.listed(WHook hk, function efn) + +
      +
      Description:
      +
      Is fn hooked to hook hk? + +
      +
      + +

      + +

      +
      +
      +
      Synopsis:
      +
      bool WHook.remove(WHook hk, function efn) + +
      +
      Description:
      +
      Remove efn from the list of functions to be called when the + hook hk is triggered. + +
      +
      + +

      + +

      +6.1.7 WInfoWin functions

      -
      - - +
      Synopsis:
      void WInfoWin.set_text(WInfoWin p, string str, integer maxw) @@ -2363,16 +2322,14 @@ In addition parameters to the region to be created are passed in this

      -

      -6.1.7 WMPlex functions +

      +6.1.8 WMPlex functions

      -
      - - +
      Synopsis:
      WRegion WMPlex.attach(WMPlex mplex, WRegion reg, table param) @@ -2389,9 +2346,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      WRegion WMPlex.attach_new(WMPlex mplex, table param) @@ -2434,8 +2389,14 @@ In addition parameters to the region to be created are passed in this by e.g. the mutually exclusive list being empty. This option overrides switchto. +pseudomodal +(boolean) The attached region is ``pseudomodal'' + if the stacking level dictates it to be modal. + This means that the region may be hidden to display + regions with lesser stacking levels. + sizepolicy -(integer) Size policy. +(string) Size policy; see Section 6.10.1. geom (table) Geometry specification. @@ -2452,16 +2413,14 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      void WMPlex.dec_index(WMPlex mplex, WRegion r)
      Description:
      -
      Move r ''right'' within objects managed by mplex on list 1. +
      Move r ``left'' within objects managed by mplex on list 1.
      @@ -2469,9 +2428,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      integer WMPlex.get_index(WMPlex mplex, WRegion reg) @@ -2488,9 +2445,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      table WMPlex.get_stdisp(WMPlex mplex) @@ -2506,16 +2461,14 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      void WMPlex.inc_index(WMPlex mplex, WRegion r)
      Description:
      -
      Move r ''right'' within objects managed by mplex on list 1. +
      Move r ``right'' within objects managed by mplex on list 1.
      @@ -2523,9 +2476,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WMPlex.is_hidden(WMPlex mplex, WRegion reg) @@ -2540,9 +2491,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WMPlex.managed_i(WMPlex mplex, function iterfn) @@ -2560,9 +2509,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      integer WMPlex.mx_count(WMPlex mplex) @@ -2577,9 +2524,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      WRegion WMPlex.mx_current(WMPlex mplex) @@ -2595,9 +2540,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WMPlex.mx_i(WMPlex mplex, function iterfn) @@ -2615,9 +2558,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      WRegion WMPlex.mx_nth(WMPlex mplex, integer n) @@ -2633,9 +2574,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WMPlex.set_hidden(WMPlex mplex, WRegion reg, string how) @@ -2643,7 +2582,8 @@ In addition parameters to the region to be created are passed in this
      Description:
      Set the visibility of the region reg on mplex - as specified with the parameter how (set/unset/toggle). + as specified with the parameter how + (one of `set', `unset', or `toggle'). The resulting state is returned.
      @@ -2652,9 +2592,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      void WMPlex.set_index(WMPlex mplex, WRegion reg, integer index) @@ -2664,10 +2602,16 @@ In addition parameters to the region to be created are passed in this
      Set index of reg to index within the mutually exclusive list of mplex. Special values for index are: - + - +
      $-1$ Last.
      $-2$ After WMPlex.mx_current.
      @@ -2678,9 +2622,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      WRegion WMPlex.set_stdisp(WMPlex mplex, table t) @@ -2699,14 +2641,15 @@ In addition parameters to the region to be created are passed in this pos The corner of the screen to place the status display - in. One of tl, tr, bl or br. + in: one of `tl', `tr', `bl' + or `br'. action -If this field is set to keep, corner +If this field is set to `keep', corner and orientation are changed for the existing - status display. If this field is set to remove, + status display. If this field is set to `remove', the existing status display is removed. If this - field is not set or is set to replace, a + field is not set or is set to `replace', a new status display is created and the old, if any, removed. @@ -2718,9 +2661,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      void WMPlex.switch_next(WMPlex mplex) @@ -2736,9 +2677,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      void WMPlex.switch_nth(WMPlex mplex, integer n) @@ -2753,9 +2692,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      void WMPlex.switch_prev(WMPlex mplex) @@ -2770,16 +2707,14 @@ In addition parameters to the region to be created are passed in this

      -

      -6.1.8 WMoveresMode functions +

      +6.1.9 WMoveresMode functions

      -
      - - +
      Synopsis:
      void WMoveresMode.cancel(WMoveresMode mode) @@ -2795,9 +2730,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      void WMoveresMode.finish(WMoveresMode mode) @@ -2813,9 +2746,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      table WMoveresMode.geom(WMoveresMode mode) @@ -2830,9 +2761,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      void WMoveresMode.move(WMoveresMode mode, integer horizmul, integer vertmul) @@ -2863,9 +2792,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      void WMoveresMode.resize(WMoveresMode mode, integer left, integer right, integer top, integer bottom) @@ -2883,9 +2810,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      table WMoveresMode.rqgeom(WMoveresMode mode, table g) @@ -2900,16 +2825,14 @@ In addition parameters to the region to be created are passed in this

      -

      -6.1.9 WRegion functions +

      +6.1.10 WRegion functions

      -
      - - +
      Synopsis:
      WMoveresMode WRegion.begin_kbresize(WRegion reg) @@ -2929,16 +2852,14 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      WRegion WRegion.current(WRegion mgr)
      Description:
      -
      Return the object, if any, that is considered ''currently active'' +
      Return the object, if any, that is considered ``currently active'' within the objects managed by mplex.
      @@ -2947,9 +2868,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      table WRegion.geom(WRegion reg) @@ -2965,9 +2884,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      table WRegion.get_configuration(WRegion reg, bool clientwins) @@ -2983,9 +2900,7 @@ In addition parameters to the region to be created are passed in this

      -
      - - +
      Synopsis:
      bool WRegion.goto(WRegion reg) @@ -3005,9 +2920,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRegion WRegion.groupleader_of(WRegion reg) @@ -3023,9 +2936,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WRegion.is_active(WRegion reg) @@ -3040,9 +2951,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WRegion.is_activity(WRegion reg) @@ -3057,9 +2966,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WRegion.is_mapped(WRegion reg) @@ -3074,9 +2981,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WRegion.is_tagged(WRegion reg) @@ -3091,9 +2996,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRegion WRegion.manager(WRegion reg) @@ -3108,9 +3011,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      string WRegion.name(WRegion reg) @@ -3125,9 +3026,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WWindow WRegion.parent(WRegion reg) @@ -3142,9 +3041,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRootWin WRegion.rootwin_of(WRegion reg) @@ -3159,9 +3056,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WRegion.rqclose(WRegion reg, bool relocate) @@ -3174,8 +3069,8 @@ Note that this function is asynchronous; the region will not the client supports the WM_DELETE protocol (see also WClientWin.kill). The region will not be destroyed when this function returns. To find out if and when it is destroyed, - use the "deinit" notification. If relocate is not set, and - reg manages other regions, it will not be closed. Otherwise + use the `deinit' notification. If relocate is not set, + and reg manages other regions, it will not be closed. Otherwise the managed regions will be attempted to be relocated.
      @@ -3184,9 +3079,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRegion WRegion.rqclose_propagate(WRegion reg, WRegion maybe_sub) @@ -3205,9 +3098,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table WRegion.rqgeom(WRegion reg, table g) @@ -3225,9 +3116,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WRegion.rqorder(WRegion reg, string ord) @@ -3235,7 +3124,7 @@ Note that this function is asynchronous; the region will not
      Description:
      Request ordering. Currently supported values for ord - are 'front' and 'back'. + are `front' and `back'.
      @@ -3243,9 +3132,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WScreen WRegion.screen_of(WRegion reg) @@ -3260,17 +3147,15 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WRegion.set_activity(WRegion reg, string how)
      Description:
      -
      Set activity flag of reg. The how parameter most be - one of (set/unset/toggle). +
      Set activity flag of reg. The how parameter must be + one of `set', `unset' or `toggle'.
      @@ -3278,9 +3163,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WRegion.set_name(WRegion reg, string p) @@ -3288,7 +3171,7 @@ Note that this function is asynchronous; the region will not
      Description:
      Set the name of reg to p. If the name is already in use, - an instance number suffix <n> will be attempted. If p has + an instance number suffix `<n>' will be attempted. If p has such a suffix, it will be modified, otherwise such a suffix will be added. Setting p to nil will cause current name to be removed. @@ -3298,9 +3181,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WRegion.set_name_exact(WRegion reg, string p) @@ -3309,7 +3190,7 @@ Note that this function is asynchronous; the region will not
      Description:
      Similar to WRegion.set_name except if the name is already in use, other instance numbers will not be attempted. The string p should - not contain a <n> suffix or this function will fail. + not contain a `<n>' suffix or this function will fail.
      @@ -3317,9 +3198,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WRegion.set_tagged(WRegion reg, string how) @@ -3327,7 +3206,8 @@ Note that this function is asynchronous; the region will not
      Description:
      Change tagging state of reg as defined by how - (set/unset/toggle). Resulting state is returned. + (one of `set', `unset', or `toggle'). + The resulting state is returned.
      @@ -3335,9 +3215,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table WRegion.size_hints(WRegion reg) @@ -3353,16 +3231,14 @@ Note that this function is asynchronous; the region will not

      -

      -6.1.10 WRootWin functions +

      +6.1.11 WRootWin functions

      -
      - - +
      Synopsis:
      WScreen WRootWin.current_scr(WRootWin rootwin) @@ -3376,16 +3252,14 @@ Note that this function is asynchronous; the region will not

      -

      -6.1.11 WScreen functions +

      +6.1.12 WScreen functions

      -
      - - +
      Synopsis:
      integer WScreen.id(WScreen scr) @@ -3400,9 +3274,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WScreen.set_managed_offset(WScreen scr, table offset) @@ -3419,16 +3291,65 @@ Note that this function is asynchronous; the region will not

      -

      -6.1.12 WWindow functions +

      +6.1.13 WTimer functions +

      + +

      + +

      +
      +
      +
      Synopsis:
      +
      bool WTimer.is_set(WTimer timer) + +
      +
      Description:
      +
      Is timer set? + +
      +
      + +

      + +

      +
      +
      +
      Synopsis:
      +
      void WTimer.reset(WTimer timer) + +
      +
      Description:
      +
      Reset timer. + +
      +
      + +

      + +

      +
      +
      +
      Synopsis:
      +
      void WTimer.set(WTimer timer, integer msecs, function fn) + +
      +
      Description:
      +
      Set timer to call fn in msecs milliseconds. + +
      +
      + +

      + +

      +6.1.14 WWindow functions

      -
      - - +
      Synopsis:
      void WWindow.p_move(WWindow wwin) @@ -3445,9 +3366,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WWindow.p_resize(WWindow wwin) @@ -3464,9 +3383,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      double WWindow.xid(WWindow wwin) @@ -3480,15 +3397,14 @@ Note that this function is asynchronous; the region will not

      -

      -6.1.13 global functions +

      +6.1.15 global functions

      -
      - +
      Synopsis:
      export(lib, ...) @@ -3502,23 +3418,21 @@ Note that this function is asynchronous; the region will not

      -

      -6.1.14 gr functions +

      +6.1.16 gr functions

      -
      - - +
      Synopsis:
      void gr.read_config()
      Description:
      -
      Read drawing engine configuration file draw.lua. +
      Read drawing engine configuration file look.lua.
      @@ -3526,9 +3440,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void gr.refresh() @@ -3543,16 +3455,14 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool gr.select_engine(string engine)
      Description:
      -
      Future requests for ''brushes'' are to be forwarded to the drawing engine +
      Future requests for ``brushes'' are to be forwarded to the drawing engine engine. If no engine of such name is known, a module with that name is attempted to be loaded. This function is only intended to be called from colour scheme etc. configuration files and can not be used to change the @@ -3563,16 +3473,14 @@ Note that this function is asynchronous; the region will not

      -

      -6.1.15 string functions +

      +6.1.17 string functions

      -
      - - +
      Synopsis:
      string.shell_safe(str) @@ -3586,16 +3494,14 @@ Note that this function is asynchronous; the region will not

      -

      -6.1.16 table functions +

      +6.1.18 table functions

      -
      - - +
      Synopsis:
      table.append(t1, t2) @@ -3610,9 +3516,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table.copy(t, deep) @@ -3628,9 +3532,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table.icat(t1, t2) @@ -3645,9 +3547,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table.join(t1, t2) @@ -3663,9 +3563,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table.map(f, t) @@ -3686,9 +3584,7 @@ Note that this function is asynchronous; the region will not
      -
      - - +
      Synopsis:
      table mod_tiling.get() @@ -3703,9 +3599,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool mod_tiling.mkbottom(WRegion reg) @@ -3721,9 +3615,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void mod_tiling.set(table tab) @@ -3739,9 +3631,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool mod_tiling.untile(WTiling tiling) @@ -3763,9 +3653,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table WSplit.geom(WSplit split) @@ -3780,9 +3668,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WSplitInner WSplit.parent(WSplit split) @@ -3797,9 +3683,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table WSplit.rqgeom(WSplit node, table g) @@ -3816,9 +3700,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WSplit.transpose(WSplit node) @@ -3839,9 +3721,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WSplit WSplitInner.current(WSplitInner node) @@ -3862,9 +3742,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRegion WSplitRegion.reg(WSplitRegion node) @@ -3885,9 +3763,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WSplit WSplitSplit.br(WSplitSplit split) @@ -3903,17 +3779,15 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      string WSplitSplit.dir(WSplitSplit split)
      Description:
      -
      Returns the direction of split; either ''vertical'' or - ''horizontal''. +
      Returns the direction of split; either `vertical' or + `horizontal'.
      @@ -3921,9 +3795,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WSplitSplit.flip(WSplitSplit split) @@ -3938,9 +3810,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WSplit WSplitSplit.tl(WSplitSplit split) @@ -3962,9 +3832,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WTiling.flip_at(WTiling ws, WRegion reg) @@ -3979,9 +3847,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WTiling.transpose_at(WTiling ws, WRegion reg) @@ -3996,9 +3862,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRegion WTiling.farthest(WTiling ws, string dirstr, bool any) @@ -4007,8 +3871,8 @@ Note that this function is asynchronous; the region will not
      Description:
      Return the most previously active region on ws with no other regions next to it in direction dirstr - (left/right/up/down). If any is not set, the status - display is not considered. + (`left', `right', `up', or `down'). + If any is not set, the status display is not considered.
      @@ -4016,9 +3880,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WTiling.managed_i(WTiling ws, function iterfn) @@ -4036,9 +3898,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WRegion WTiling.nextto(WTiling ws, WRegion reg, string dirstr, bool any) @@ -4046,7 +3906,8 @@ Note that this function is asynchronous; the region will not
      Description:
      Return the most previously active region next to reg in - direction dirstr (left/right/up/down). The region reg + direction dirstr (`left', `right', `up', + or `down'). The region reg must be managed by ws. If any is not set, the status display is not considered. @@ -4056,9 +3917,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WSplitRegion WTiling.node_of(WTiling ws, WRegion reg) @@ -4074,9 +3933,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WTiling.set_floating_at(WTiling ws, WRegion reg, string how, string dirstr) @@ -4084,9 +3941,10 @@ Note that this function is asynchronous; the region will not
      Description:
      Toggle floating of the sides of a split containin reg as indicated - by the parameters how (set/unset/toggle) and dirstr - (left/right/up/down/any). The new status is returned (and false - also on error). + by the parameters how (`set', `unset', or + `toggle') and dirstr (`left', `right', + `up', or `down'). The new status is returned + (and false also on error).
      @@ -4094,9 +3952,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WSplitSplit WTiling.set_floating(WTiling ws, WSplitSplit split, string how) @@ -4104,8 +3960,8 @@ Note that this function is asynchronous; the region will not
      Description:
      Toggle floating of a split's sides at split as indicated by the - parameter how (set/unset/toggle). A split of the appropriate is - returned, if there was a change. + parameter how (`set', `unset', or `toggle'). + A split of the appropriate is returned, if there was a change.
      @@ -4113,18 +3969,17 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WFrame WTiling.split(WTiling ws, WSplit node, string dirstr)
      Description:
      -
      Create a new frame on ws above/below/left of/right of - node as indicated by dirstr. If dirstr is - prefixed with ''floating:'' a floating split is created. +
      Create a new frame on ws `above', `below' + `left' of, or `right' of node as indicated + by dirstr. If dirstr is prefixed with + `floating:' a floating split is created.
      @@ -4132,9 +3987,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WFrame WTiling.split_at(WTiling ws, WFrame frame, string dirstr, bool attach_current) @@ -4142,11 +3995,12 @@ Note that this function is asynchronous; the region will not
      Description:
      Split frame creating a new frame to direction dirstr - (one of ''left'', ''right'', ''top'' or ''bottom'') of frame. + (one of `left', `right', `top' or + `bottom') of frame. If attach_current is set, the region currently displayed in frame, if any, is moved to thenew frame. - If dirstr is prefixed with ''floating:'' a floating split is - created. + If dirstr is prefixed with `floating:', a floating + split is created.
      @@ -4154,9 +4008,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WFrame WTiling.split_top(WTiling ws, string dirstr) @@ -4171,9 +4023,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      WSplit WTiling.split_tree(WTiling ws) @@ -4188,9 +4038,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WTiling.unsplit_at(WTiling ws, WRegion reg) @@ -4212,9 +4060,7 @@ Note that this function is asynchronous; the region will not
      -
      - - +
      Synopsis:
      mod_query.defcmd(cmd, fn) @@ -4229,9 +4075,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.message(mplex, str) @@ -4246,9 +4090,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table mod_query.get() @@ -4264,9 +4106,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void mod_query.history_clear() @@ -4281,9 +4121,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      string mod_query.history_get(integer n) @@ -4298,9 +4136,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool mod_query.history_push(string str) @@ -4315,9 +4151,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      integer mod_query.history_search(string s, integer from, bool bwd, bool exact) @@ -4336,9 +4170,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      table mod_query.history_table() @@ -4353,9 +4185,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void mod_query.set(table tab) @@ -4389,9 +4219,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.popen_completions(cp, cmd, fn, reshnd) @@ -4413,9 +4241,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query(mplex, prompt, initvalue, handler, completor, @@ -4440,18 +4266,16 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_attachclient(mplex)
      Description:
      -
      This query asks for the name of a client window and switches - focus to the one entered. It uses the completion function - ioncore.complete_clientwin. +
      This query asks for the name of a client window and attaches + it to the frame the query was opened in. It uses the completion + function ioncore.complete_clientwin.
      @@ -4459,9 +4283,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_editfile(mplex, script, prompt) @@ -4478,9 +4300,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_exec(mplex) @@ -4499,18 +4319,16 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_gotoclient(mplex)
      Description:
      -
      This query asks for the name of a client window and attaches - it to the frame the query was opened in. It uses the completion - function ioncore.complete_clientwin. +
      This query asks for the name of a client window and switches + focus to the one entered. It uses the completion function + ioncore.complete_clientwin.
      @@ -4518,9 +4336,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_lua(mplex) @@ -4538,9 +4354,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_man(mplex, prog) @@ -4557,9 +4371,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_menu(mplex, sub, themenu, prompt) @@ -4574,9 +4386,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_renameframe(frame) @@ -4592,9 +4402,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_renameworkspace(mplex, ws) @@ -4611,9 +4419,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_restart(mplex) @@ -4629,9 +4435,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_runfile(mplex, script, prompt) @@ -4648,9 +4452,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_shutdown(mplex) @@ -4667,9 +4469,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_ssh(mplex, ssh) @@ -4685,9 +4485,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_workspace(mplex) @@ -4706,9 +4504,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.query_yesno(mplex, prompt, handler) @@ -4725,9 +4521,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.show_about_ion(mplex) @@ -4742,9 +4536,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.show_tree(mplex, reg, max_depth) @@ -4759,9 +4551,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      mod_query.warn(mplex, str) @@ -4782,9 +4572,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WComplProxy.set_completions(WComplProxy proxy, table compls) @@ -4809,9 +4597,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.back(WEdln wedln) @@ -4826,9 +4612,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.backspace(WEdln wedln) @@ -4843,9 +4627,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.bkill_word(WEdln wedln) @@ -4861,9 +4643,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.bol(WEdln wedln) @@ -4878,9 +4658,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.bskip_word(WEdln wedln) @@ -4896,9 +4674,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.clear_mark(WEdln wedln) @@ -4913,9 +4689,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.complete(WEdln wedln, string cycle, string mode) @@ -4924,11 +4698,12 @@ Note that this function is asynchronous; the region will not
      Description:
      Call completion handler with the text between the beginning of line and current cursor position, or select next/previous completion from list if in - auto-show-completions mode and cycle is set to ``next'' or ``prev'', - respectively. The mode may be ``history'' or ``normal''. If it is + auto-show-completions mode and cycle is set to `next' or + `prev', respectively. + The mode may be `history' or `normal'. If it is not set, the previous mode is used. Normally next entry is not cycled to despite the setting of cycle if mode switch occurs. To override - this, use ``next-always'' and ``prev-always'' for cycle. + this, use `next-always' and `prev-always' for cycle.
      @@ -4936,9 +4711,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      string WEdln.contents(WEdln wedln) @@ -4953,9 +4726,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      string WEdln.context(WEdln wedln) @@ -4970,9 +4741,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.copy(WEdln wedln) @@ -4987,9 +4756,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.cut(WEdln wedln) @@ -5005,9 +4772,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.delete(WEdln wedln) @@ -5022,9 +4787,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.eol(WEdln wedln) @@ -5039,9 +4802,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.finish(WEdln wedln) @@ -5056,9 +4817,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.forward(WEdln wedln) @@ -5073,9 +4832,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.history_next(WEdln wedln, bool match) @@ -5092,9 +4849,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.history_prev(WEdln wedln, bool match) @@ -5111,9 +4866,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.insstr(WEdln wedln, string str) @@ -5128,9 +4881,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WEdln.is_histcompl(WEdln wedln) @@ -5145,9 +4896,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.kill_line(WEdln wedln) @@ -5162,9 +4911,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.kill_to_bol(WEdln wedln) @@ -5179,9 +4926,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.kill_to_eol(WEdln wedln) @@ -5196,9 +4941,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.kill_word(WEdln wedln) @@ -5214,9 +4957,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      integer WEdln.mark(WEdln wedln) @@ -5233,9 +4974,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      bool WEdln.next_completion(WEdln wedln) @@ -5250,9 +4989,7 @@ Note that this function is asynchronous; the region will not

      -
      - - +
      Synopsis:
      void WEdln.paste(WEdln wedln) @@ -5272,9 +5009,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      integer WEdln.point(WEdln wedln) @@ -5290,9 +5025,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      bool WEdln.prev_completion(WEdln wedln) @@ -5307,9 +5040,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WEdln.set_context(WEdln wedln, string context) @@ -5324,9 +5055,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WEdln.set_mark(WEdln wedln) @@ -5341,9 +5070,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WEdln.skip_word(WEdln wedln) @@ -5359,9 +5086,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WEdln.transpose_chars(WEdln wedln) @@ -5376,9 +5101,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WEdln.transpose_words(WEdln wedln) @@ -5399,9 +5122,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WInput.cancel(WInput input) @@ -5416,9 +5137,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WInput.scrolldown(WInput input) @@ -5433,9 +5152,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WInput.scrollup(WInput input) @@ -5456,9 +5173,7 @@ Note that this function is asynchronous; the selection will not
      -
      - - +
      Synopsis:
      mod_menu.grabmenu(mplex, sub, menu_or_name, param) @@ -5475,9 +5190,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      mod_menu.menu(mplex, sub, menu_or_name, param) @@ -5502,9 +5215,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      table mod_menu.get() @@ -5519,9 +5230,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void mod_menu.set(table tab) @@ -5554,9 +5263,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      mod_menu.pmenu(win, sub, menu_or_name) @@ -5579,9 +5286,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WMenu.cancel(WMenu menu) @@ -5596,9 +5301,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WMenu.finish(WMenu menu) @@ -5614,9 +5317,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WMenu.select_next(WMenu menu) @@ -5631,9 +5332,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WMenu.select_nth(WMenu menu, integer n) @@ -5648,9 +5347,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WMenu.select_prev(WMenu menu) @@ -5665,9 +5362,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WMenu.typeahead_clear(WMenu menu) @@ -5688,9 +5383,7 @@ Note that this function is asynchronous; the selection will not
      -
      - - +
      Synopsis:
      void mod_dock.set_floating_shown_on(WMPlex mplex, string how) @@ -5711,9 +5404,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      bool WDock.attach(WDock dock, WRegion reg) @@ -5728,9 +5419,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      table WDock.get(WDock dock) @@ -5746,9 +5435,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WDock.resize(WDock dock) @@ -5763,9 +5450,7 @@ Note that this function is asynchronous; the selection will not

      -
      - - +
      Synopsis:
      void WDock.set(WDock dock, table conftab) @@ -5788,7 +5473,10 @@ Note that this function is asynchronous; the selection will not string in - +$\{t,m,b\}\times\{t,c,b\}$ Dock position. Can only be used in floating mode. @@ -5819,9 +5507,7 @@ Any parameters not explicitly set in conftab will be left unchanged.
      -
      - - +
      Synopsis:
      bool mod_sp.set_shown(WFrame sp, string how) @@ -5829,7 +5515,9 @@ Any parameters not explicitly set in conftab will be left unchanged.
      Description:
      Toggle displayed status of sp. - The parameter how is one of (set/unset/toggle). + The parameter how is one of + `set', `unset', or `toggle'. + The resulting status is returned.
      @@ -5837,9 +5525,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      bool mod_sp.set_shown_on(WMPlex mplex, string how) @@ -5847,7 +5533,9 @@ Any parameters not explicitly set in conftab will be left unchanged.
      Description:
      Change displayed status of some scratchpad on mplex if one is - found. The parameter how is one of (set/unset/toggle). + found. The parameter how is one of + `set', `unset', or `toggle'. + The resulting status is returned.
      @@ -5861,9 +5549,88 @@ Any parameters not explicitly set in conftab will be left unchanged.
      -
      - - +
      +
      +
      Synopsis:
      +
      mod_statusbar.create(param) + +
      +
      Description:
      +
      Create a statusbar. The possible parameters in the + table param are: + +

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      VariableTypeDescription
      templatestringThe template; see + Section 3.6.
      posstringPosition: "tl", "tr", + "bl" or "br" + (for the obvious combinations of + top/left/bottom/right).
      screenintegerScreen number to create the statusbar on.
      fullsizebooleanIf set, the statusbar will waste + space instead of adapting to layout.
      systrayboolaenSwallow (KDE protocol) systray icons.
      + +

      +
      + +

      + +

      +
      +
      +
      Synopsis:
      +
      mod_statusbar.inform(name, value) + +
      +
      Description:
      +
      Inform of a value. + +
      +
      + +

      + +

      +
      +
      +
      Synopsis:
      +
      mod_statusbar.launch_statusd(cfg) + +
      +
      Description:
      +
      Load modules and launch ion-statusd with configuration + table cfg. The options for each ion-statusd monitor + script should be contained in the corresponding sub-table of cfg. + +
      +
      + +

      + +

      +
      Synopsis:
      table mod_statusbar.statusbars() @@ -5875,6 +5642,22 @@ Any parameters not explicitly set in conftab will be left unchanged.
      +

      + +

      +
      +
      +
      Synopsis:
      +
      mod_statusbar.update(update_templates) + +
      +
      Description:
      +
      Update statusbar contents. To be called after series + of mod_statusbar.inform calls. + +
      +
      +

      @@ -5884,9 +5667,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      table WStatusBar.get_template_table(WStatusBar sb) @@ -5901,12 +5682,10 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      -
      bool WStatusBar.is_systray_extl(WStatusBar sb) +
      bool WStatusBar.is_systray(WStatusBar sb)
      Description:
      @@ -5918,9 +5697,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      bool WStatusBar.set_systray(WStatusBar sb, string how) @@ -5928,7 +5705,8 @@ Any parameters not explicitly set in conftab will be left unchanged.
      Description:
      Enable or disable use of sb as systray. - The parameter how can be one of (set/unset/toggle). + The parameter how can be one of + `set', `unset', or `toggle'. Resulting state is returned.
      @@ -5937,9 +5715,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      void WStatusBar.set_template(WStatusBar sb, string tmpl) @@ -5954,9 +5730,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      void WStatusBar.set_template_table(WStatusBar sb, table t) @@ -5971,9 +5745,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      void WStatusBar.update(WStatusBar sb, table t) @@ -5994,9 +5766,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      bool de.defstyle(string name, table tab) @@ -6011,9 +5781,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      bool de.defstyle_rootwin(WRootWin rootwin, string name, table tab) @@ -6028,9 +5796,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      void de.reset() @@ -6045,9 +5811,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      - - +
      Synopsis:
      table de.substyle(string pattern, table tab) @@ -6070,7 +5834,7 @@ Any parameters not explicitly set in conftab will be left unchanged.

      -
      +
      Hook name:
      @@ -6105,7 +5869,7 @@ Any parameters not explicitly set in conftab will be left unchanged. dockapp bool -Client window is a dockapp. +Client window is a dock-app. maprq bool @@ -6142,7 +5906,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6162,7 +5926,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6183,7 +5947,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6204,7 +5968,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6231,12 +5995,12 @@ reg:attach(cwin) mode string -"switchonly", "reorder", - "add" or "remove" +`switchonly', `reorder', + `add' or `remove' sw bool -Switch occured +Switch occurred sub WRegion @@ -6250,7 +6014,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6271,7 +6035,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6291,7 +6055,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6304,7 +6068,7 @@ reg:attach(cwin)
      Description:
      Called when Ion has done all initialisation and is almost ready to - enter the mainloop, except no windows are yet being managed. + enter the main-loop, except no windows are yet being managed.
      @@ -6312,7 +6076,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6332,7 +6096,27 @@ reg:attach(cwin)

      -
      +
      + +
      +
      Hook name:
      +
      ioncore_submap_ungrab_hook + +
      +
      Parameters:
      +
      () + +
      +
      Description:
      +
      This hook is used to signal whenever Ion leaves the submap grab mode. + +
      +
      + +

      + +

      +
      Hook name:
      @@ -6368,7 +6152,7 @@ reg:attach(cwin) res_frame WFrame -A succesfull handler should +A successful handler should return the target frame here. @@ -6384,7 +6168,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6405,7 +6189,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6427,7 +6211,7 @@ reg:attach(cwin)

      -
      +
      Hook name:
      @@ -6476,16 +6260,16 @@ reg:attach(cwin) Tagging state has changed. pseudoactivated -The region has become pseudoactive +The region has become pseudo-active (see below). pseudoinactivated -The region is no longer pseudoactive. +The region is no longer pseudo-active.

      -A region is pseudoactive, when a) it is itself not active (does +A region is pseudo-active, when a) it is itself not active (does not not have the focus, and may not even have a window that could have it), but b) some region managed by it is active. @@ -6496,35 +6280,96 @@ A region is pseudoactive, when a) it is itself not active (does

      +

      + +
      +6.10 Miscellaneous +

      + +

      + +

      + +
      +6.10.1 Size policies +

      + +

      +Some functions accept a sizepolicy parameter. The possible +values are: + +

      +

      +`default', +`full', +`full_bounds', +`free', +`free_glue', +`northwest', +`north', +`northeast', +`west', +`center', +`east', +`southwest', +`south', +`southeast', +`stretch_top', +`stretch_bottom', +`stretch_left', +`stretch_right', +`free_glue_northwest', +`free_glue_north', +`free_glue_northeast', +`free_glue_west', +`free_glue_center', +`free_glue_east', +`free_glue_southwest', +`free_glue_south', and +`free_glue_southeast'. + +
      + +

      +The ``free'' policies allow the managed +object to be moved around, whereas the other versions do not. +The ``glue'' policies glue the object to some border, while allowing +it to be moved away from it by user action, but not automatically. +The ``stretch'' policies stretch the object along the given border, +while the coordinate-based policies simply place the object along +that border. + +

      +

      diff --git a/doc/ionconf/node8.html b/doc/ionconf/node8.html index 555d7bf..33cb380 100644 --- a/doc/ionconf/node8.html +++ b/doc/ionconf/node8.html @@ -28,31 +28,31 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -61,7 +61,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds Subsections @@ -565,31 +565,31 @@ General Public License instead of this License. diff --git a/doc/ionconf/node9.html b/doc/ionconf/node9.html index 06f6690..0b16372 100644 --- a/doc/ionconf/node9.html +++ b/doc/ionconf/node9.html @@ -28,31 +28,31 @@ original version by: Nikos Drakos, CBLU, University of Leeds @@ -70,7 +70,6 @@ B. Full class hierarchy visible to Lua-side |-->WHook |-->WTimer |-->WMoveresMode - |-->WMgmtMode (mod_mgmtmode) |-->WRegion | |-->WClientWin | |-->WWindow diff --git a/doc/ionnotes.dvi.gz b/doc/ionnotes.dvi.gz index 1d53cb60189a766c054dd4fa40ffe6f873df8ee9..d69a4eee3d476f19cdb525978db95fb0a3990344 100644 GIT binary patch literal 27915 zcmV(tKODpP18Hw=Zf|sDb1r0dX#ngz3vgW3b!+b$I}m~mH8|nZ2Lx<` zq}A%u4>_&8wT5+nbtKtxK$KTlHm_F)uQQpA+yi zac3c&S(i3b%*dG94L4}jJM4`bDKpKCtlS?^t;IWQL-9>4lc5$&p|-ZSrA><` zEjkD@Qp7S1_+VDb&1ZBvti{u&Ls9_E(c(GR$P&xV>jVT4H?yWe4`^{qKy;X%rdsP- zEq>579csfMaCGe|EuOUqfKIfm0W7YrQ&^fN*(@+geWsJT7N@$-3O2LhTRu(f9DEw` zGozb;0zNI0au|}Ab(t;@=rrSm9xay5!E>G&F2Dgffm~dh7->ZmAW9OO22XN*?MW>c zkD)i=VSz@%a4eFhd13(vG7PEI;@fOpP~6=KdZbvnJI#R6Vq<&M5O7qdwhfDPwZH^; zwt9P~{7kF@sia&Bg;a#6RVX9#05y`tf=6Ix061k9ii%25vqL#FKl8yRSK+{wY~;E|+U2WID8 zEwQFmFq@faR1*m`Mbk{z2@qt276Em6Vy9ePkhf-yczw_%mV?>=-*ZIIC{$|L))H%B z8y!-M;vEWaM_5HWr1Hf(0+w`0t?U3vY^>ALsep7UAe~_#ox$QRHLpv}>k7~73g&f! zKZx&8$h*~|Znda8yr{c2DOj9$b%z!7A`B`m=vNT>6@>mUg#KXVZuPzoybf9eweq0j zNgZAh1%jw4Bn*NmB1iy=NH!5P{W_bd0zwrK8U{jx#Z1j(Y90&EW5GO%Y%&ybQ!O&p zA~U?mtW63Qr`aGALyAeRTJNg$Zg{;LtShSbj$~4?_GTaWU~OU`>@W9_P05g#+-#z+ zgE-)bM;uImm`NTU#MJmr-~i;TJ*1G?1T0Jv#}AydgU?baR=3lRyhp03M zX|&d%&7wg{8g>!FMP6h1f==_mCqeeC8Whm_shOeo<*2sJB^tx9ks&EME6CQlC}po( zD3}m9(i&RXDYc_DB)VNQL+u?v}Rf=-0MT1A>sQ?R1kmOKIB} z1YUb~>2%cLZ%{SnAfrPtJ>FfQMu(WRcLP>-5c)SWN81EdAm5%aJ8p9*KMy3f^-FO%5kop6W7?&K)Xn_lFLSEOB?a?ovFAWq6VG5E_IAF@D$tn%2$OW!Wx&pq=dFA{JOW(e-l zzREkVbh{=1irpQ#l@tBI$l+%pl{d=ev5!O|xYEJbFgjR)Da7II0BgFej6Y)y_be=J zC-AO_?^ZQ%tm^^m^4m+37pzWyeOu(*$=1lZfNuezR-$=aY$N)0=j3gS-15+rU5q?2 zP~XIZ=ifJ4+GrN;ePTe=N!&pQlb4U*-kz24;ol-BW#tpiYulf@`v@NgGFq3yuQuLS zJ#on{+yKAT$IU%4fSYS7k6kqGmHI#wl?A)n(ug0@P-=`mG2nO$cC|Ag4yu^-yy%-Q zPZ6UEgHRfQU$9sbQd7ijf%Lr1%}n`$5Sqs2jj@97NA1#S>b8m!1om(N!*;p&4Ne=U^{-1LrMem5BhSo;L{<=r`Xod zrOi>rC!h@!!R7%&(wrFrNzN?z6uzORID80-5}t$s*QOa)Z{RT3i*5b$hQ>o4fiN0s4;4-rmam-+gm4!0PVd9eig6r}pr^u8sZM zI(j^Kx3j-zXLoOB6U_T@FQqW_&xlj`22KGTdYCl6Sd6lSHB)5?h!l&LAm35F^QJ|4 znmUB(HgNOebG}-d{PS<#xL}vCigW9h*!;bYB(RdCobuR(+MA`xE2R0TNz#12D+CeU z&Ivoxq@!sq2bvGvh@!Y%)RyXM(B?$6;g3_RlL#WN~4V7)Gev>M+EiN4?(K#*70{Vwo1$m$tWAYt|C`wD?ACZvwtH z@0(LORGQQz>y=YdtUs10dyDn&i-M>UOWco6$V_^X$2`oQxvFJGj$DrA%)}xjmIAS* zLy_0t{_B=9NFA3?=%;BH)7D_6ad;?uAC2!5WP6})iq3n{bru6Mz1XA8rII)QsqZ$G z%aui+TUdYKXTSYFzLmVC`!7DTQm?0FCHO9c-VN$Gx*XNB5=b6=n<%)sD!92QxP8YK zVYOCqhcsi}N51oZ&HC3q@2M5M2Qr&t3TO-<9^zJb9dw zLcNmtN1?K(o7O;6TLr0oP?G_T+gt*L3z8;}FvGOXTY2Q+Rb^R!o*|2B4QF_*D#OD= z(R*)sNSuqJb91mVEbwqH>Mi`zug)6TAH{f9ok0g0I%O`ks?@G?xG*Aw&5SHcyMC-3 zmiFUI&r19Emh9>?D%p_3QK3;?7GTDXZl^9-k)Ef-DH09WZF_$9!4vX(AgH#GpxT6> zrkqNn4T{r~Kr|!PZ67?z{1N55rd%$MT@i^uh<)U$Zzam*uV4e%{JAuM!OwN4Zo+Dr zTNBpd<4*zz0pT=fAAyb?YZK|m6cxinL|(q}lQazyq&I(ad`&G0x$?QyXTT)d!bwP* zNzJu=UyBh7VsIC(--@UfGH%A05B+x^mgO>c-J=2#BXf zdrBjhAYKqR!{X_h)}Pj~-LSkLv2A+zU&e`DkHuA35L_5zVD{yOF(33!(4UA)zC2{WG^6sAP)z)GFqNN1k4Ly0vQhE9ugB zyYe2vjdsXaEXcol)>oVXpK@lUA5=8$%BRTggOK2(`>#JM`1e*VE_nT}MDrQdi`I}{ z$a+XLl7w@Ix86Cc79TXVXbY*uG}TwwYkc|1v+8kL#r};mlEicbNlZuhD0a(^em=FI zqSml7r5-xA=!pcBj7aI&C11TN+-DWK@SnBm;Lk2@DwRq{5z3|idsN-~-yNyl`yVY# zx%WT(EZ(Y?$1eIYFO5SYqti-sX+C2jH zXxWwdFYO`T{FioH1bd!%!D4ylut6WnmzQ>Tcf+gY>iz*hRADwuvniK^`XNjr$+yis z51wNqQyWVagj$mqZ(WD+b3@Nh{@ zgP(MPo4Rds!BDfHi)I|yp8!yaEldMkW^ohtIb`r8Gel|+Rm^2s;GXE|xlE_F7h4F% z0*RGPECwu1;TD+T0|7ACcSs7mubiA{oJygN0}j}0CD#A9A+o0S4)CR3tpD#s)0;s- zIsoi|VfsTrB1`$X8Z|h{hPtT0Ez@Ur(PIB-3bmlQv^0N3fsnZ zFd_RKOw^&&@}f`ufEfaf=>1cO>?YnN`kQbQ1=lM0*t{g#*%t+1wM&2parHscqu8_?xxQ&{d0vjwl9;3H{)FXQTZfTN)jyN?j3 z8oTcf5U}m=+C1NuSDt|0$7K}VNXBPQ0|zOi_0%wl=0Mv)g~N%1BiN-^1QbbPv(%J( z>n3o6 z2YX6^T{ZB@Yp>aO$!NGFxAjExkEBw6+F^KH4djgrX_g*?7o+&%pbKPsvA_85aiLeh zPA^(|w3kxeQ7HJZe>Pm=$3FSVvUlN$(Q&jEcwOVD)I~m}TM2;=GMgoJiu#ME*$n5dmI`uCGL2 zT@MD7&FRHz^wo7R8@;CDDPIwCQa*TASZ<4T*j4JQSt~)!9iegH)X;y~%Xx;Pp9QG^ zqAr0_EUUz#i7XS{l)!~(i^ae!&|8G%;phA!s$EkRW^~D}%M=kd=gYqeZDavR>Exz} z5(5J57P~` z6O5MNWGN0Sx8+OMsYD5TG&6W{)MXlhLkCT$U#^4dq0hiv3Z|iX*XFD%k1g&>q9v&7 zd9a3$9juIZ**Ft{C8dCo*yYp2EYu@dt-8u!^_rvSjblgf!C%4ZYV6>z1pv8CY%!(E zvx!g&Zpwlk2s@IY%rQm06>m{*MVGCJ%ZLdrwUdZ|REdrr3aIg-qaJ#GUmi?W;jz}} zmJ^C)vpYoxxi4_pOoU45Q3XNhT2SLeTbwXwSl_5nBAlj5l>Vp4@HnYP>2H!Oi#>FX z;*D<##Nb5H1Z#l>tr8;v7>H>06+5LVaK8*yUJ0S0Ja)lm=Zld@CKCZ{W9MJ}qf%+| znw59lc1Pqx;Cer#GO@KkOf=!~pENGtY{s+TY2Wk;jXmj=*ZQ@8leB@XLL`K6bs3N~dkda=c}3n- zp>*XGO6xE>)4DOIiQ6#=%+lHB;utSgncIOuNoTf>{!5#-dO(S%Lstzzmly08msd z62JU=3mG!)S_80j+-QZz1|ZoHhQWnemc83P{i^Wct-mD-1bXfiPQd~T(qXU_f5?lq zzG)__HLMLH_?Ssw(jc&knIdzkwHTu!zcc(hdN^yeEzJq3mmd-@n=4aID!yG zB%sMxfyxyFpaB7gAf7;t=I02Ov>KPTmMUJW$*7G znCyLPnvK*%D{6$rdElY^Uj^v!5>W0YE$m8{1o{pPX{~FUKBe54K?c7C@P}dv(O+J z$nEg@9=xA2mEPTYXtU6}WnZhOF=Cy{{Hn2K57re*DETfgw(JWvs89|1@~>T{pzjT` z2jB|+aakpL|96m4)&Jw|+GFG@ue;fM7qEzejf~rZ!^24IEFO>JT^_N45VNuI8XG7! zEKQ*1?#!Lp$q*w!kkWFt*U%1(mhT4od3tl^@T0c|hG@8tEO_+qc)SCmQ{wF; zD28LN!UNY5iCfzm98oz5)s8?h5l~BKz`dzf)FCh0R)zwL(o~vz4cAU3ZpwMCLOYy%*hcK;MayO&pj zK47g_PO26M0qICXn>-P{BxpBDaIwO8xK&><08el0{xsgs435@im;snk-z0UHS$knp zLLH_Z#_>UHnH_N_K09($n6|^Qdf=pW_XteeCopYm5{dCoNcL@q+{T@IyDpu2>%!K7 z%t-p1Z8RX+X-Nm@&T^jv8s&w{){vQAy%=MVK+;m_j(=<9R34))rS0Ae9O4 zm?ed`NU`N)f9=IcZ6pF|vyIYCYu~ZbPB`9MxAq+up=x1(pXQ!|cDe7kLU9|i=Z67% z%CkNltL-XZTv5Abz3}V~61Si-jC;D;ft} zdw8gv5EJaCa#+J4lFU|%tT%AAgii*fj^eTUVvw4++M;}6GFs5CKO7f1uE8-T>Ro?0 zo>aS_#9k(nzg|gsFojuA6|1-}3xHDy^wsQt2Di3g5rl?S4AT+aH@lwruuL7*=;eCX z6CXfXoY6xO?p?YkrmShe&nTVf>8Ax{-tIt-q?Py(l`tmWT#}=H;FCJ~-1@xK_JASR z?0RkxXDyZv3_uI@8N)fUxCbja*A+*dp2}kV40oY9z({edVWsab2*ONeOM15>s$l?c z@K}+RSIw_OUCuG&Z3H&n;zTl_vNGaeO~IklCIv(wdisW0^z>z8vLtaTfb~4Rcco91#~Oaimwx7N5-6-G1qbj|2ko=_0M9ib#x@Pm}}+M zA^~C2RAUu((Y$%HYmOcC*u5vPy(eV}Sa+PQF2T+RpgA&9X)nt#QfV(+?u6rr6wxFJ zOi#-t;uE5xB=2ifI7V_E=JQ2_UF8(0ug-0|J0HQReQWfO#N#Wgogi?sBU>x(cp}tn zmeh@oTQ@m*NZRCFjiu$)TltUFIe$id(CV(b@tIhXfKaB5?V4tFnwT)du)Y-VBF(u% zgJ=QdhyqE#kKuoQMyer^W;B~E(_!FyBU`3lNI+LZKn%@b#ei!Z0pwK4Dn|%aIvhnv zhC7A>tO0;@Z0WM-BUxSJm;#0gb=VIR(rU3!!S5H`@=v$kA>B^HJm|h8A9!QSOX7_$ zHM=hxw7`a@H5j4>oquq~ zFtz+>cI~Orte{qt!c*_s6Qs(a@mlmMK}c0#YK{sQ(F0=Skir84N2WJ zvEpUCn@PpMSViaa#ZgzL<*#Wh-QAuok*)|^mnJNy3MByBd?Pbw!XqOSYef|iL@RFM zeb$ixOR{Q|?3xf(l$Jkrd&L!Ao_Mt=zcg#S>Zl0&(59uZp*X z9mi|Z8++8u;TVw+PF4X8?Vw*7D0j=IYPD2ynj}-IVNjfch z@g>AOComQXb4K8Ed!deR9~6HK*w(sY)eq7Q>s>qWn%28k!3|7cFdN%x2~={baXg}% zYjpv^7RNyws9W#66#@E5LJ$I{z1e%&SXD>a&<4^A#S$7gY1Jk=N~JWGkL%Q1e5YZ(dJUag>(wp7opmoN3PvR%YhG0GYdUZk z7#^Mk1O(Gc!3unJi;k{SCg$%!iTUd#UU|YnZ2AyN5z3(BKBI$*SOX?qMDz-7NIIC( zFMJV5g7N$tgbAO+h+9fp66a}4;@G)a5<>%>Es66#ZicnQkRF(Jn%045p$JF-g96$} zTe*Nys(`q+>o3gI=|Nx!QI0WB7_Y~>!y&N~p@iGTfrJ%0RcUReP`5-=wb$spmxztk z4pW!833{TKjf0YzRYi-b3iD)!fbrQ5+U6R{NmdH!y4C0}IMrb&d8TS3c%K2i@ zlixYDz#}nU%r@Mkuh|eSPBL2;TtQ)I07KcVXmZxxPe9m+*ZQ!m4+6QEd*YjTDanxjT?3U z+B4kp9M}2N!SXCBTtS_ow+0f(2ZI5JNn`S--0vMpP;^pZ7w!KP1cg>$8E3wAo-UJw za-Uo#Y3C!0O4Z3}DGd9IhjiOb`xg%{sjwoIz&eF_CIeLk_SIEUnT_hu=O~-PS0p`a zr5q8DuAkd|!TU6bX7>fZGi#Y=6G-F}M1dZJ`ee&A(Vwv;!sZ!ZKJ57@ymJ!lHO0&T zfl!L8I7xU;ohHLe!z>=t0oEs4L&IA9y_O`ED)2C0A0=#uE*Qi5`Un&gTx3p1J;~x3 zt5C?2_<~nvry0FM9Z8TJ7CY1EI<#*vTEXy>t$aj(CX+x9J<5r%W`>#@6%wD;NO9-I47^y65M_Ts`<~?ms zGgDKBps}n8qApgLL^%ZSo(+jI3d72k017hp&>Ut>%HTcgpf2j*YE6_hZ8B-sAM4Q= z_x@mk#SzoTeD2}>56r)P3F#uo&O2r>CmxvM61NIWg_xs*!pUxR=VZO~&Zh?A8fmPJ zPwtxc)RphC22tcv*Q6TRJ6?}kzK@!{;XfNid0V)PerZrxO@W$*N(c`s$FHGz-1S>u&dJL;uSUl?x;iXZhfxbI z^h$F5`lrSMxxRLLP~r;M&am#}Y9nP?ns_mXkXLWm^Cx-pYAIM(ndL1*i5YqG%M(>k z-dt0WjHE<8m~(dG-`)*pUnJQGgBRqAr)s@NJR^n{nskpSfQ|w7(pNox5417Wv$>~k z4W7Yjw-c~kfr!IE$uc1bQhRZ2y=qAFgs?3B!kWR#GficcNZ1K!^dEg@{R zR%RbE(#>#ujfMe(OS#p6mq{0jXC_+JP!OOelYS;pf*)v&cViJ1_1$r@b<&Nl-}uFR zv+Fm36RUSnq4JE8Xv zxpW43Ur)LGv$DZw9DgG9&3~@^{9|(M{15Nc#}NCyVs^6XXlW5y<%y>?Pnh`rbf#g? zx2}$r>lho>2g06j&ta|?e7w2-{uVvgXaBNRF|)n6_^ezVI9uu2*0=ujolevJ+#IK? zrZZt;q6IHNC3*)o5*PzMf)KHWhPD12hQqD(%ZRQzOn%kJoBV|j$}~@Z|8_l1`f<_2 zhvn*}?%x+&1R7rZZ{L_siEgK{M+T#tG^8X&lIc*&FK1a_!PhG%&g_lV07Md0-A31A zYa^6|kv4m;HAxqMxI6F^6hYhvJP| zvj59ljgO&1bLYQT-S|wZ7xC`j{{FNs|Af^#QcN7aEkTA`i{tiu4YwROH@GD`*%@x> zcpzuMEkk!j@DkB~?ULAlXj-+;x7iR34Yb+H0PK(a%<4$%Urql<;kj!UzVT%phRy^QzKLmP(p#4b^IEx||79?DQ%k zZeBa~(c$Ky!OQB_j(hRViX9IJ9tm3d`Ox?j60hlSNo@uMu{G)Ph+7(q!f;pyKz52P z78{qVky~4J!ttsOxUA~*Mu(L--Ls*6I+m5FJDvg^BTxF2vrXqq4h{RGidk9_Ji_K* z0a=AQeZM`59uH}BCR|IcA^E{TKq%MtKRY->H;ReGC}`ghnh@~A;lQ$GlB!EQhgl6L z3Lpxyf^V7Xc@D#kj97atb^zS0e4ft=nf+80dkHRh^LZ-Z(Wf ziDmkk-f%F$3&|XbC_vRDV3?g{pQf7)M;q3r&(K_iZehB*b!*dUQk^0$&xU#hcX8ze zs2AAoO{b9%#JVJo1Pm&;(ujc~*EY7&#iuHAQ<-2)vYu$M(*p=8G6JjZJ%{qb8x+)jl|GSHbZ;YbgjqorVQ{3>jm@h*3~26nl@f;r=M<4Ki9OM<)u*3K9o4q&*qzcoA%ewP05FH5IrQsRV+bjgp%?lY4`X>k|If6sNq}EY!8cTLg%cL z6wgWwNe7`d7u#X&bz3$Xn_;UFUTd$r>dLFPAb(@%@@YOwsF>2|UiAzj%)3`TZRRu+ zfYUB8HBj$fb%pQMs##a0xfse}nRWZ^IQ=*pv`T(vtkkeR{70$BQHhY<2!dwlPlD3| zI-MW>=oJm!_?c|ozW=>xhM?HX!u@d}ldzcYbeQI(dv98E`C6gWx7KWB)p~MLmS?jG z9=MqQSpMtx%N~F)q2>Bl9>0WhK=SnnIYzWbewW5-H#xi#G}cVGhRjB0jgo>Ws5+iC zs0i3bp;+PAb=-r_*02jt^bGaX?ZV9<5p9b#?ZV^WQM;k`jfF8rjK^DYFo%hPCJv-_@T~ zlh4!{XoOqpt6PgsZ2?Hwnr72L$3;V_5#Ke}YN?HBI+IRm9>f~_X4l&(lQ`A&c2Df= z!+$EGG@@Jy{y^|ADLZfX00V++goHkRvU4ZYDRyYd%O`LSt<|ao;@kDBGwEOr)VmJ9 zMNKukezkPik-$#Tdu8P8AC_baZIQK{0Hv!Aajd$|*u{Y|0)zUBXuV+_s0pf!nBk^% zU|R{x;sPUWeG4T}qE-j$)`6QM1`UUr+PJc16bPytt_2PI`jryTb$y=((>NxfHkJUu znsn13R*p(K%h?s9HE88<-e~O2)bT!2=*WZTY2SRq7I-X8Yv1vDIC{%hw(MXSX=py) zHEHn4EfTy2O|~HO_M78n{jtZU{pL2}UoHtL5*^BfC`-i{0l7?`01(3|jsJ#OWx!v* zPEF{*fCQ1^>LAQCciZl`C`r>&$7l+pL8~s5Yw<=o?J7BLKxjCJYOID#EcgrY;X%lD zjE45_oBvy@#5vrgHlqGb6w1_;ROyK*Uq_L48je?Da#p$+l-k&*l8dT1uur^sbb_Cf zgpV)$%f`N@{e@p9NkpZRaSBHk#YP|D=x`D1nj#_6wZQLHk`AODi;eEWy9vUrcNgA^ zNR?LIMXGX>E++Pyy-Z2NlfyoA>^q10S7m<^=)8pM7pu^~PP;i8X45|Ht5J8FL@P{o za(>#VSZ5*gtz=+@9;oPGS!S*F$}@zk=5Y44h$oUZ)J*KiOOvvACSUJsWeQT+L5w&O z^jW6{AO}p9J>G&pH|;xbpnV4CtJ`;8&tF<(9_CaFZh%W5a$4-NteLN9$-|MD@bHMC z5M5#bmxLZvjK$vvs$hN3etEYZg{l!(E4dP-K2Wz`UJu)a)`nVrxnT%GP+o0#>xywO z+yZeDIuaw`YNw1bsT$S~Uvw)l+?&=9Ux!i3qgb6ldOz^uwDo&NxMZW)! zvTKi$qpb2tR|hu8Y7&7xm_%NZnF*bNnIu5MCLuh6!y^eKfV`IUbXU)m)7>>xb%)G` zIg275I0r_Wg0@1dA-k9mL_uYdZBP-;`dE$u++7Lk9ue_?@Q0!YR#ud~zkBajRXv$Z zH~hn->#O=+_q*SH{%*)Bq$9rCh-XJs86T(vC<8$tA6mcYpsGtdxBJ{RuZrrTj(1Zm zL~9fsP%PxKm-Dvq(50^#Y7x7x8JA=K_Z^U-E`5Rvm3Ff%JeHxPn1k}tm%}hJ7 z{ry=|=WqPA>E$Wuh5kN$=4$zI)pr&`T+dVASC+T6?YsZ|SsIgl=iP$C*6Q>2=ZwHO z{fhQ?f`EU}70tWG`%~L=$?;95sx0$GW3a8Kk8&e~`t(tw-Ej4-EB9nrrH(m5h9nI; zSEc(ix-&VrDJ0b;6KF6bC{k{BgLV^JE>Ba-<==E>xvad~-g4QN*bcB)0*|hP~v339qp7zPgg;uODEiATtcR7aW=M8$~x7p8&5=`+#5f3FzJGw zglG`U7Cn53Fyvb5 z$(sz#sNmWvvY0>-#~`($!=a)(m?iD~s$1FkjTLEFSKZRhf@szcOg?Zp>bXPoHO`v= z^>Er}+(8eMlw|hA9s;(Kkp%kEpU3Wo3AC1e>D?07>JCYUxSOetjSF}XeJsR01DYkI z9TEp$dRMnE%*Wn(2wDd?dwaD{r02SrCl=B=s}axEtM?b;yg7 zLz-axpsv=95R))Tf2M`$n2Gc&$H?mq>nk6P4UlkF8UhVt>a5t1U7XlWBT#jdZ$pHz z=UBinnc$vQAnKjii=<7qb{lIcvHrg}Bye2wS0`aP#f>}2K}f9iaBr+P`LizhbW{Hj`?i$r zSi0ip^4sZeH`$Tkpq@vq@IT*Z@}WvBA`44ST+f5Sf^;VE(=36y>y&YW*Jq_aYJ~a5 ztn@JmM>XLEB5xi*cFa0LrP07G=0h`_Wa>Uvn+7{;@yu!0r4vIeeIv0n3&-`&_}SIb z(#&~Bm*&U&8MQ^O0 zzC1KJ47K#-JCfN6d_Lmfj|M&Fxb^F0gfa*c%iFE_`wO+0f58!YE)M-;?ATrP*m?~= zs4j^dyH^hHWykI(SG?DBU=+}_m3n%;ts&cu^!hxUh4wZ*2dxVeN;`Y+nJWYfZ z9Bft{SUZ!mTKg-dq`y9ynAJn`byg$)N4lg>bNPp_{;ZieeY6 z@``!IQiRbLIQu>;XxmdIZfU>FCH`&N5SoxoKV;sT&fUN1_)(xK0r&F z%7nmJWA@M&G=x+%{9RM#2dC$4NF={#(1->^*3$FVOLmPAOVwkvC7~L%=b2?fTLFUQ z3~Js}a90_S=g@kMZC6D;IXw=vP$vtPE>p9{Zb$;V#JnXoJj?J%rYIO-W=xuB``ana zl!x22VSRh%vlla98?<&8z>*q1Q*nIA(^6QnUBV{Nw)*IXn&E8O> zccanL9|jE_gvH6;#6s^{z)RUk-?cDmnT<^@#;M1frN=uQjsh`xbrnTN!j|as(Fsr3 zo=#WW)9lV{Pq#kW-uBe?o=MuCpmUDAE_=D;@}8!;OzWxLzd{mpYWK_8LEkM_k-}E> z1WOG*#@)M&9i6TgBs6HX56{@wc`?dv*dp#sqOk+lIC0GYTc`+nz(h z1ee7K?fJ|D*igo@0|RR`iH2QIht&lH*)nDj+rVh+&>!*nsPr7E>k#t9@R4Yl}R#cK6xFB%_zM~2z)!vOrKZLZ%{lbdgGyL! zV~GCr5s|R^6B%$DJ|bx`cU<%xL|8_@8L|pN7 z(G#1aj#fSN96CDh@gF^tsCXK*mOG7IC7Aox+It(yZ170HIjv=gg{@ut4G zYLa8Fmippq6`|Rw#ugDCE5C#|)k8kLS&h~zSwQd;hlP4GxvAQ_N%Y=bsCs;f$H^NA z{T$^?6?Sx*cO*NQMqSDxoh9)e4mw4L6L0F)9lzrMl1lJA&#Y!W^B+wpDENu5*0QTRBqks>3QGw7q|KRi z<}TTs#;h~%jgGl&PAD0+PGM})=A=(}QwN_u;r9w87t9g2ukFp%*bB4X#%aP<2FPwp z@-`pDaz3l2Xym`08_u2*t)dN!+&Sln3iRpa>I;PqO}FW_r<*Fr_x@n4$nMX9Lc^MU zsX863*_(lC8C2jjC#GL=D#Tqx7sNyQl?0SbNHofgpD7Vjr^ODN%+N@HE#bV)-Yhpa zTjMLi7%&EHhOl%Bc#7A#OdN2zoJ!p~_S25vu#WvyB~ihM7K}rGwmQY$kR$6k;-IS% zvS?0&#Cr)hd>8@FWP!{FE4yb8BgPc&8sGtiY@)_C7Huu&)=0aT57g4`2@!lFhZ9yR zQ6W1lMIPb?eRaV$#mpHExbR$;PxHH*zlUZeUaGJ}`Z4=zbn=O)v_H&|5xPjK+sXpT zU^v#W{xH|CRP&MCA;F!3N&`8j3uZwzY)Yv;Q(BOij09J*ZDayfj))N)~Enf&aUKogUIrW+ri!Z%#rlrWqofo1;-w58>C3u;|#zcx~Dg(Eb9bOYtbU= z23cb5oaf6rlGJXvfj;-4WBQvt(@jJuyev_w*z>h zCz>rvt+k@)V>Fy4C zl#=*N96eJ@pRh&vPT<5~Hh?@2^9(tsIXe;{VazubsVB$uWy0DMUu`vjiFs>5*)am$ z0gO{9&a0=l^pC2LA?fV-v08e|QsCBa>CcLL%5#f=%B$EMeXQ8H95{=n+7IT^>RAZU}IekUU8GRh`^qN5@_ zErLqTI&o$UD174al6NB)tNbdNyLcv^5LdjlttUuNnuFlS6OT78U=A18LPyft7y%7D zT6)XvdAE_?a+}mgLO`S^5SmhUXVQV8IcDG@Hf2NG8}65NM=J7?TF;{s`M=ZyPq zC^dB#7~Jue-JgV3m%e2W!cF5%K_TKK{wP{h+)RMhu&L=*$bzfm!Nk7u3Qr4Iy1Y}s z(&Z-XbUi~G9|RRL%5;6fgXAPO7KyatNJOzYL^Yop)DDL>AZ<1E!gUxei6RwF0Sz~s z_-1~Q!77|G=^oo6R|eW+#=-z|F<^?R`H=Hmznx&byaT`6z7r(a=80d@b??AY4Uc2f zmxMlA@T#W&3Q3zOOzfOd1y-_Bz^cW*-$ekz~w6dM4k^fy01lws;O-;XX?+{Kfz z>yq0dw^e6NRs#OUEFtyN|GPw zOp<({uLDW4?NmGQBv{^OaXZ|@m_Odl64=8YJ~{gV+f3~SJv-mdcX2dgUiD-F!3|ni z9tTD;AYhb3Ph2o60>sEy3pisnFrI&0Io?pV?EIshU#U{-zLOVk-_GLEMcMM0`D7yE zeDTQ>yQHa60dj8M?lyJIwyPAZashvlo$?4rY0`XA zxB%W(;)B{6_uzXlF0E}rxI1tCrNMbpRw39} z9W0U}ccGKB%fx~?jN;B2JGVa4yo?Pwp3j%H`llDlS@Y})FJK+m6fq&8LS}4()R%~fIHUXkdHi4klnx^=3HD(a51B!MS1Hn zkl$Gfnd}kk%rvaG{tc8!BvP~9`j@Gx1j$#L6>L=RA-1}Q720U-9lj0ezi$2V&&eSK z(ExaaJUNWpvybA6sUx8{9rZw%hge2#Z-U|-E|3Q34%E-7eH9XEBVGGi>ySe;WO!;E z2B4HR)l4nHYPRh#NuD+OoM=miLc7pc%Qjdyu7OR`y75ee{gow6j!hvNR32V0IrUtV z+7DrcalrOMaTU?Zhuxc^idvx=2=&u)QqntKZ5_%aYS{5A%+gW$D^ehKyb4cBddF+H z@34>Q9rs`83?lF`)Wr!~7YC+Yfv@Q80Rbx$=jciHa0NW_z&Lw#h73iG>sX_;k;_z1 zKhluwEQ#vRj?~hRe1S`hwd{2UP#Ty)gC2XvuZvEUY%*L(Y}9iAe7S)-)uGc^W$<-t z_OUvCzhTWjZt|fhiLo_QS|UwBEazJ17O!)-MRZES1PhRZ&ozY+ui7 z0R#lyUa8N_?l!ERe1D`2{7shP(N*5nv<$IwgSTl6Uiv40Pampqd9a_HA#Zzu$10;Q z+YkK;52JIRjJD$k=$O`Z(8+W4m=Fp@#l@pMF<;?y98_#Wejb0&Q<=ku9T^AHABn0W z_#D`iR~1?ZV(R3z#QAaAl_IAOx&}9elawOA7CW;X(Ne&Wba9NvdjKUFJ5urh&}*iB z(=)^!QiFkhV{KG zhBW=O^#JzYUboce(H`=3cOd3um%LYBhneXoJ3EcU%38i5HD8fc! zu3NW0|M(;@c%f#AzBa-Z+x%793Uz4{q?j`e_9DJ8NP|s+CXnbj7ASN{{~tSBqy*JonsY@f{T|BiS2(%%4_d` zS^|T)e6|GNdL9@t&6~MD8mgQUChv+~JQ@&*qvZ}kjNSgHbn*+L3=_ujtfyXk5e`J~ zJeXRfb|R;{)l#qRhwuv~s`?ZH49vOEz(iry7&_Wtues}EiVdc6X-seR^n%qc5rso~ zTBea+u!iX}i^Ko{`0-p4R7*zm^8~*-r`3q1fCXM-$P}ppx{$-Mr0%Erw8@|oxu{Dj z1&vnKGimmFol}mgDc7xemW-ic%}cQ$VPq^0J>WP=-1=%a0U$wf4Dlq?-oknZvf86) zM@)mZV_r%Q5#P(4F2)iR>3oR=vAh@ZxJW%xQ-8{ILIRc{T^hV%btVVIlSh5gtxjGd zTHQg0-QvDEC)3FHhO@wAw)$L-a|3m%bD@@Az0Ra3A}hml>XA2MlIIpG`? z=;D^3lVZ_q-)3>8jDjK!tJ7?5b&qNd5YfO;93W;21_r?#i=5UZa9M*g;e!jl`P)Bs zul`BTf6e${p}?-RL$h|y&-I=1pPSKLeOBoSeC6!8$8~qyeJpiKI;-?}&ZHhW1a0YKDsP+;};+6QO+UGo$KiHHUc^rdY_s^r?RwjHIK z2@_#-(se|v=tCHfx#8o6qSkG^nh5;V~#)U79j=sq$;Y4 zngFMZS#v(9M$(dOpwWY4QJl-hia4IW`hRs&EK@boSHC@HqfBIOCRsr|BQZ`oVOGFJ zQi!Krqn8;nG^5+1bQP5BEHD$C%CL@IpM)HF&fTFP zr5FM$T>gl=(q4GZ4QtEcxuj(yEM|l2SJtd8A7GB?aHxr|LFbt;izo2kj6^k#6l5`s zdq0J*Nkc{a`Z)*PJQYpdIVN z^g+4>LL<9SZ%U$P)KlXRR1A*31~WHO<9oSgNKTUABr!0X;~Yir|C_rOD7nh|9_HS) zJe9~J_7r3dgzP4h%^O0ZctS`>D26n_vqj{`B|mEn@n z0`?G&fc245AX=dIh!qg1V2h%rQt8oiDAA_!I!EdM`Q7i%&bq7TkS(X4X7AklJ^$bT z`#*pGIy;1|Jypw&>JEi`)_BYEP3IG5qXpaf#4KnYU0?Mx2 z))6W96KB)qR;)4Nft&(8>39~JnSIBxi>;B_cdQPv2Vt5dTup$KU@~|?kpEDiI`Nvo zuka$bCaNPfF66-^c$%(5yncf^>fP*~&r?}fl{EBotSyT1MPJIC@#Gj5I$@>3(I=FP zE>tEea(t_+tEcP{CVN*`FJXog#8AS*sK75Bqb9#mB$d}bm>@c`=&p9<*i%|z1p;*D z-?H!zssfx;blp$_F*;`JvRSmJR3qo<3Uyt&dx z6`5xU=jA@w{DyPiY%O&{3_D^2jDCf`+l*YezL+n`iGab9_szz#Eri|#mqa|eLi!>% zbD`RDe|$NfWe*Et{rC#ip13j5orps-m<{kcV?*QGcr`*(4k<_#C7_C8(?TC9p?F2B z>)qE=diA@nBL$8Zj?Oqfv-G&OUBO=k1|ELFzwCkNDZ}Vc@|tOAgnX^!s&wMKc(2fj z^WvA)T;s){bE1HQ53%d&_J|AqA#51-iqDZlYSMuWNLW4^e_s4DZFSj0%F}QRQN%bd zjvZHjhIe?fA(pa2HPUvf2c2x2s0)J}HRhyD%S4_e_GGTmS%07Z#FVOwmJwH?_t%KOqFT1_4 z;qG}ZK~>2jCB(!z#K?yFGnF$e7Ya4by&O*5Tr~!Q!N?gEYM1YBPX{7mnZPB>l4r;sYNx}l>Nt$T7T#<@8rimTT1&^@crGt@py_bcV}EV09e`;`*O zg4SkOrV5N%WOkj!H~9v{>&`FXk1|12=RR_4)eCAZ_akuv9ZJS7;9(?uCh&l5hs>w| z@I9v?`@>liE-hWC($#cNdI}>uWe6T_KqSRiM#y-{;UmQ$PYt4$F^)_xEvp2-d(3K2 z5Z1&5^`0wk?8)g;uN!WKfC8k8h@#}CmQjLL_C2Fb@gg@CrfS!o7 z3-wpGTGu)-&|k&!w}KA_V!CNFK=q&j>Q}d-r6>!!U6LE;)!LTryEmx3(r~_ey@$>O zZKYQ*8oe6+M9ww7-7LcgArIouYV#nHl0MiH-*rNmaHwpn>ja9SK~x~cp2w!8q!m&( z)}4(!a}kg*0FyN2$c^``*2swEP4~)^7+s3vliON?)FkC zP6EudT90c+j~ZZ)#*MS&`!Wmfq4?t@FeEux4d=$Qm~|x#f#R(Y<14NePosbri5k$G z+8=H@qjNc*S?(^;qF6j&*rxtgh*Y&?SHaHJmkvDQbxsv=r+l zSWr2j|rts#U(a(^wyx@JITpG&e#Ic{*jlu~}@?plI~5XbG|&i+Y>x=EsV#VVfVf zve8Wjejo{@1T=+8SG#N%CyGbNaOd%&$S#AVHi*Ed6t}#}j4SV<^*Y?^Imt{*Jcl3WME-z$(;*(z{O_`Aq#K<$`^0wiBM zI{(lsBrP`G5B-MOrDf`7878)uE>4z?grY^M3Q`Sd1znBO3)3nEe?b?1*$awr|0vF6 z%IDV-L>1r^5veyT;7n&bEan8!+nx0rUCcd{X#4G3inW&W?IxenSgYiqJtC`6e?=am zSBpzYE0a|*h!3~iLzWR@ZZF=!0q zi%dvq`bl@-{J;@}C=l>}kl|`NwkxCsPk+zpilvx9nna*gKFrV&1*i%~`{PMue!Kr^ zf{1TJBPqo!b>N(PiuQrS!sIu9il+tyRhA3d3?+~ zo^n*MALjKEb5xe(U9AWy#~LjXh+7&kSYOm{0`;RIyHh zEAguFpcNR02BG4pyhkys?8Ii}WS;b6%y&&^)6s;4)z@-1{fQ=EQrNrRX4-2uHfOwT zd^8+|o|PY^BRR;hO0zXoR4R#t|J(fK9yC>x zi!zqJK%N;QD+!T8Z&GWq>=7xG@LFc3%fS!YO^*WgXPcSlAEiLepi(GhTbbv-Ly5{L zbo9oGq{Vjw8x*-ZTugo@sRe;uTGSKNE1@nO7kx8gP1|tPVBiTyEHb{Gy&=*LA{8xs zK7GO${)oyBnSRk-KlTh`o*YJD3~`7soKea`qeA6e4~A_XQY(bB8Qk0n9LtL2*m85n zlV_jx;Yix(P@{2ds|jV8ya}r#66ohmC*75LXgTvv%=vXqJqn{X4W$F6WhF-owFatl zn6fwOj5y{Wl?+^IbQYFMCJ4W6q!BrGk~=B2s8r_%F9@;;kGT*h!j!ZG`X%j7l8pZo zagt>GAM;Q_h-ji<(}E|7+a!yxh7|Tdsx|WIv^l_7bor2?Z9x*?6VIP5br0O4(gj9@ z4a6prVkI%B8WxMGvBtB50&09~aQJ~eIA|>yTnGIMwqowvEybke%sm096nD`t=2@wy zIHq)g6$2+7w}%=U1EAo>wVV&Xt}|#jAAT*x(_*0vv|vbZCcdLCR`Ld6jy6UZu?ih# z@dYGX_N=yd2b48eU6dMp79}~Pch03?N)vb0aPFLwKw~4TA#y|Wk2svvRvr{A9JeB6 z!3@_+%+pInuaYC3atsar0WR&O?KJ2tIYCWuYB_8;OO8iVevb0l)0VKXh)!4$E+p&= zUdPWR5*{-=){-EDA&zPVLggO?qOOJg6j}&mK<13F(Y25;U+@8mM6vD^)G?%m zCfk8$j*O0pQ`RW}yR{HB?fCAtpvS&Qb88r*Dmji#XZcTyES!WYptYRk2NPT{D?vdF zy}AZ;ThETv`lvE_VhSDM+$<&G?Gy(F2XOtdI-G>*BsmTx4oE1VN|+;2%$dVZv=aZV)s zi`A3r@_J-GMjaRBC&k*(tArxBum7kn{q-O7W#I`uwTGi!xsn7Si`Ptzm9Sn2dr?_2 zN0buQbT{)TtV(W!MB*t5rF-!s%$#Tj5mj*lZZHxQcytZ-;(t=ZJYM|0kzyWT;2*G> znqnhJ&xvQJYt}QVyQ0-K>-!Y(1}uj`-*f2q7H5bFPO~P_?uCoiX}}^gyQaHzYYyF4 zHCy@#eKr#`+@)KvI%5cDB`lWXda1?<-z7~@^g%`$k!Z$5{7KVJ)1CDkIYK#dQ!?xX zqMm~etY$<&9z!IYWP?Gj67ils+V1)LZE?sw|LY#bUL*x+H0uR}^So$GEH|saT6^21 znMzNBTkMr;(dax3pl&+%@31(ckf+U1h$tG){X1F3MV5f>5@l|a zkYG92wg)7V^L}L;?k)G!6la($6G^_PWTMNC;hSVD01+INW_I%w)1fy@#K!ZE$=P^* zcG4tlJQG49h7tw_#pNdh_^4hU@pS)W+ob;9yq2L^a4e!#}hz&Ey z$rr|y-4}~32a9K!l`qynD}qlXhNuDGaCA9;xdNJ-ks2%_7T30`^(e%3azFl`$?RJ0 z$A3-;I~=knA;9AO8wucajN%8fM<&hHr1;px)_@n;evvgBBkqaJGhYPNFZ0YDTDv-` zF(ztU<@kE|Nx4mx!WwXYq7QH)2LrURP+Th1GU zbdXFNDPd}Oz7;pGgfQTR>PffAsQTE z%gEWvJOR!KdrHt)8)oq(TfVnnjXCcHUqRCY*}FnZsp!fL>UcQ`q${`CUPvvQ;pHhA zxv&$78EAH-fFD)26NaU|Cen72LeX?LuLH4*|6A^fYi2*xCp} zrBNmdQ!FOFqiG}*nb(@Gr(Oik@_i4L%b{LkO5gjia|Mey466_J$PE1vJtCsKep22id>}XL%NuD}%kA~w9r=T1yuYX&HqIf&>o|0m_6oeH-ei|CD>Fnx~0m+Uj z%}Ii6%|aV#IJ@4~pWLo#fDa1Wvy}mffU#@^?xE{+fkC^13xBVUEULuyGG}oHdJ{C< zL)RLMVWJ8F1MrQx0sc1QCQD&DKZT7%tg6}*iN>Err^7zkaGRt5`r3sHtP988aurLG zEq6;vGIrb86q%L7HfcVVlsJ)XDS1`VEh379>lAzBtU0Akm6tm7*jAPp9-&Y;YfetY z6h)gri%BZ9&M1+3-cyeL$Nmus9pjS2^tIM-9(#y$*9vh8q(*X?*EH?b&f@DdFsY#( zuZbAU1H0@`b$R*y>7829a4vsf2jU=TrA>Um&}6jib^;(G&l?qf5IM#E67wp!=5?uLiV1yo+PxS3{WI(RMpyZpgN@$} z6e(1?Hrm0YH9_#x9ZJ~;7Meu1!@ZQieC*-HsRZU{FDT@^o4>V*0MfdfWNYrer3wdH zB8yGhbrYTwRl{5mdT!6RHjNa>A57o^Sc+vwZrxiwf9?_{Gi$O_yAuvv4op; zJ>D;(H${HdqN))%hDKwN-cgw?dD!TVzG(GM1<*t~X*&1L$0*sBb8jDu)%X@#B*R+s z&5ImQ0a}=Eh(Rz$ z7|TR%kT06BoY`Vv zSzrzP zbfPhk*67OeFs)*r%MySkX8y$%Z1*eeDcic5gS zbiENMKu4`=vVnWV3rwosvlzI$>{AsV?q5869Jye;fN%n%u_us>+<52_#fmRQx}Wq^ z5?=P#79fXixnG-)n1}6$Ez4O)Vq1+3y^S{T!|guhf8f8%KGo7N@!j*0h1_TxG7C}L zj$jzPVIkfS?hc$Cgwv);m>}#?G$!wRnfX$bk3A4jMo<|tM-FHP2C?tIg+YUwRHY~w zdIfVF_#~Ai>f6-zA`5U0UTk$evMCSj0-6SmEo^o@G6?rUD46ydRZrJK04H6}B$xIf z?qb~bI=g1qqt%{dfGD1KJ?dLr0r#WibFe$i2^Y2&dH50>Zul6UMf{*TRFIfNG#3*{ z74r5cX23vTcXPRV;2~{d3h)!B!W6MttU`p@PoPH=dEie-?0%q584$~2;+6c7%HhMr zlZqvTJ#rtM3s~k*^50u2^lGu`3Yzwmzbjw6omUWxQ-IA1tFi9*+uQ@vtj^+1O*#oZ9<>kH@O?68@b8Y#>BFh)uh zgbTsPU@qJu^#g)bD?tVu|Eh}%UaX{@!I9TG4y=O0ExL9swtWFF`2c!cFHDyfHi0qd_3=|taFRmNrpGTyM zm(L{S|K+o+tSEsueR=wLSfOET>F#7}u$A5pT2<3|{}0==Dutl2bn`{3o*Hc&tKCSp zMIhDBdrg=<8r;yLKsDZs?IB5(f;G%Muuj)7^T5T$&^FWyU<)u}1|P4<-X-c9G6|rT zY>eXU;JSgemtHm?t*>0arI9KB4pg3hd2Z##jVsp=Y*~Rt*A*9ri(7C9BJQRT4q&1m zSiLb`wHCg_by<1Ax=VCl)(vcFI=v5Lh;i>v*Q^^@zq-FaS_2cjbYrwK+JK7f%8k*$ zx>c85vT|d?>3wL!Wg9nK+P}IF{(Z2&z_LE=VDG~np@?9;bSoJ{m!Lt>N*1<5L%7ps z=uw<@syT{DFq((Y6^A0}_{}%dNUHdjTCOO1QM1cnxti{+Y)6)zT7gzmIG>3nflVr% zt(muO9s`t|jh3FLL|`zIangSfOfoVAMAaj{oX@8s|FMQEMknszKtqI@%1KTTnz9O* zj~4iqVoosW1Twx1D=a)5ou~c`I(q)8)x-_ZmY182$p}rIi=- zUwX-91FJ7VO4$OxU$p+xsO?z4R7cB>oRFxNl$vCPXm$y7M z#_!1pDeyb-Zvy(=^5hO69ULCqS@7vo?d+VBuoA#kaaf87M{u;1YsBe&+Za(ZH=7Q* zIo}3!9lZpZ(ZATP(?J=O;=>HuKqE7{;Yny^N2}|b2X{mVkeKQ3I2Rp|3ZF7}_Gpc6 zu+sM<+v13$g+A3|ka^K##?Z>VxXr}RTsll~J|SCZ63_#I*hG=dF3lcsX+yTlZKtS3 zb&wH2A>4_X+kP_61P-i-DB6d^I+R^=yJa7`nwP^X?<&fZ#aN>{9IHY(JQc5a668R; zkZ?rkO`x9}1nMV|61OQHsR>@)dM&S7%h`GzB@d1iY9?A3*_0oT#(1G^y{<>FZ}H!n zxK5ubn=BWCUbM5bpd7?uE@FFi3Do+n*A|BfOvnW5;feq++qwYbUJ*B8>%tS;kQKHr zNKlfd6VX^w4~6!q9e~Y$(OSV;@Zylde^zjskhR}b&|^7@RzRw}3>51_yl1q6(HwWy zm}jGi#s+j91?3o}koh?81m$wMyJc{C5YvofHgb+0u^$s31-S+BK|_=!HNzt8)x1CQ zonA~ONY;9}2;L7&$pX$bs0Zpzrh2oWKT#}THd+Y!QBW*J2<)%tpS>P;*33&AVB`!p zfQMoeP`yEeL{a62UE`q1=P_ePyp@?7K7zFb%LGb|_WjtGybmQKbD2<_i3N=*TcY;; zzNWkO1=O|H{;UnRT(-166!;i3i#H6RqjL(Qzy_B|D_Z-4A{r1(B9{ARnMrIH*q{1k zo6i23AXZ;RRZ;i9#~PU(_z;@BhS=&>d_Jsh?Xcjs1-lm7qhMhr^*Tp9i6|Qhy!$vs z9U=jD9~&89UybL=)%ecIU5(T4nZ(sNVXY&*8ozS$OE=wi(odF9I}c&C%AI6j`{VsuFN{Qmk-jsCs_D4~1)1r*WQeffg!1>Fn(vU~oj?#ma#KNrA1SJKD* z-SaQ<2mJ2&7s{G}G;#j<_482`IF1td(d|rykzLvpemp zm*WP)^cMf^zaN3=b=*IxtonPWH;Fo=zi)c*ZF?ffQDO0e_%!a_~?&WDt4(N2d= z!<@ZOKQ&cc=#HCK!+_UR-umv((eBR~(>xx;t{wJ$61HL)%ns9=zW}1Imj*_kfoK+yBAWmZOK|2PT}odv^EOckf-_hva2KLzC%r^4LY|Q+6&|rgGAdV5TJ* zhDlq&n9d{x5(n~Vnp!0-Yc+VrHus>tQmRto_o&sedl|B z=X~<3ix++F$Uk1XAp$?q|F}dOq`NiCbBmsa_?3I5$*sT^IL|BJ`O z+M_4GdAR45NMwnCVWkgf8~bj$1-`@HsHs~SX6EGnfNCw#(-=x@X4x#YVG4D$eI1=z zB5l(Vn4uHfGU0>Sx>v{=^stu5ST4~4nyV%9o|z-IS1+ zIxTU?vs~)HAaHcu8ZD8t34l&^tOYEdVNh6_A-NndNquJ0hL)g)!HN!Z;9DU>oIHG* z@-u5#fC4^kqPq;q%X!QY2n?EaLytDg<>9%&Ob_6IoIoy~L(GgK3J|4(a0X>FzXtA-qY6v)LP{)BqhFV|& zJV(8~Q+_7bfK+tPMj@5pX${KAI!MhlvEdPz835L;Vo6a6ik79o0A>Qquj>F5R*vb! zFfDi)hkrAmx(S=+m;*bbz?lNkB~>(MQ=p@0c#h(rJ8C%|u#tgwC)_-|4jzf_xiGun zY00%I!E9z_P)#IMoo1L}5Fp45EduHa#L+!NkhgZNczwttwu{;T-}A)CDpYFN(UR+6 z8{JZi65R@KcUVQcrSc`Z1D144t?UL#Y--Zdqk!}%AU$CqJ;CB$HLq9A>kZHA4d(TL zKS=CQ$otfyKDDSXyr{1+DOg@W9{&FPSr++v}x zgE-)dM;uIom`MR1#MH!1-~i;Ty`-4k3@l6&*AajZg#q78jgff*7E?oj@tL|{xgoE8 z3g3<>ZxbjzR~l6~oN1eYXO4yr(2`Lt4_qL&4j&E%E-`sPOKi0UEeHzQDu)Uei!lg5 zBlN*A^o~nl6t}fW(tm#}!A7>t&c6Y#08wck z(nvL-&7na`8cqqqML}bQqCpG5Cqed{8Whm_$=RU~=Bc*LBO1f7ktI5v6J%;WN;%*a zixvcqjD}WrTJ1=MM7Mi(s6B@fC|X?BGxfP;)`T3eK%c{i2qZoL7unE+EfgF~d=`F$ zk)-BB{&wc*kYEv$LO!IKn8=(Sa%U6r-q|HM6EbA6EN9MzKtT^+@0y+J&5#q@RtdQ? z40^c!v@~~ygjt;(E^3`n4($p(PwZ>25bVA}2gbWvW5j7n1HBITXpxKHM4P%Egp?6t zc(d%%Z~(1?>Jo2Dt!a|9V-82HDTnU3C1Y+Y=xW02n|+JJc?KdV&T3Hs&$>c9yLEPe zH$n1!dZpHICT1H+Iv4_JX}_s>(cPY*LtyxZq?OIvpgXTh?O0L{w>Va_9u42!*&aEoFRwyNrEt$m`VnP z;bu#38*m{Zp1U@jxMAu3@^s6JA5K0WY1#U44w97}sZyz=()^aa;t9@rK+cRCe07f>!C)K0cfik(CsaNoLiPGLmp56(dmkMZr4n}$!t`a6w|C_veE41F>UJU7zOL)(yN~fnAS1N`{^{g{ z^*1ltjeFp`eB9ro!??eAWn%ecwLA#Ys4dyunL+%JiBfa?(P6i`WOo+>;-HY(z)Qa6 zah;fT7=-EwT!YQhkezboBC${w`I35;E#a7FW~kVd52P0yZe=T9F2iFjI{hKg%WCwM zlS(zYRLy#HxTZ_^j}>a^U+a5GHQU=2lT;1h5^y#38Ez`bT`ZTJY(JJpxY0nedX&uHZ^w;H?UbHlxZH}?$< z!q?&M9eaS};p!Vt|FpZmzkA2vo(;9wi+y-x12)d7*o=gYNely2qdu{1pw|V8VQ<@e z`u$Be!%AdH_f5UqdI$GZW50PFwz;KuunnN^=ouKOE&lJXZvj|+{k)s+tl`vtKG?fy zXj^xG72fR}>fhNn&=ZGwKOUeIhW;6GD)+!CphG8RqsG z$}`j@%y5947oPK#^7Kc)e#4U8!Ya;f8e{wSy3@c)qPvxe4{5KKr!SZ0qb5o7`K}N| zbYl-FY|q6~VJBY_f*>ZSo@M8V$?gOO>6T$Ax~*(Ax^c4^GB^uVZ8UEo7hzA_wWOt? z8TMR^X6RHVz)h4byA~ZhEX;B8r93Q$nY}_OKK|PK%f~la=DkOsa#1u+<*%;%{!~Zc z^c2&sJ>7}e#Ki{|m8WvJFilJ|RB?5i;@qQIa&2SgL8!7U8|+Kl*RHi|$^BYlleRAj zU)%T3t0F2-Ym)WKDJj;UNLH#JG`=rtqFO9@KRO{RU5$LRiU~AV<;>Wz%dn!ET86|@ zAhvuY^789{*--(hYyK)RujAY4d@f{q}$OR<5o%aN)vAy_uPn;kyueAE@W}N>tBUAbId@qUPqR=H{a2 z_FYGW)ke`B(u_qP_@{S+W(baU3XZP6|5|wtb7nX?OXXh{PnGIb=dRxg=7U`0?h2jb zc>-Eiv)B*u?wr`q-VMBaN3Gx;kl74VKw|)zsl%BS>TG50`q)EjDzg4uAd5Je-SGmww^bXN~L+VmxaW(1C^yn#(Db+VvbRjtOBiGl$Y{ zo-Bu@{m6>5(*C_Ad);YRmpB^yyx%TvZ zSRM20!#aBMF#sVToZ;*v(6JMpBK?@5Vwi}?`#1g;O@jpK)!&|6+ekvLc>1~pFp17^ z64I%X5P74AXYeX64Rdt}u|6D`7CXadP2>OV`p%%7Pkq5z?o`I%#(4Cb_5j}pZ6ReyfVQ@;xzzPfI*{aL)V6;nPudC9evO7+Sc#wQ^l zo*wOKja-6wR$LB?r>j#xYht^8#!iWGseK|%R6H}Qhk&DRNNbf zth0LFXKr6tsT{*%Ya!f7SKvmv0!b(4=Xu6b7kqrnT!AB2#{H);LS+%&}<-3yY3#u2X zkY31oNc56~bBEX7II9-#HMQsrsl_R(udvtn;$vsk^YYURZbO%XHclaoF>y9Bl zv!9~Turi|_IBL1}xiZ{p6}s@Bv+3YZE{vDU<>LtDlK(lb?)~qMH17S6 z7iZl2AAJgMRVx$Af6U91kjNOc79IOZFC>f6v40haY~K>CIN&05t5EbHO|C^(A8>S=QWN`J z*rVmt7C*O_R2M(D$0peG#EUj7Fqe(^P`*63r>_rQtyK390HO}FVVXm^B-9UK5=p*e z6)3k5k}r21uN+(cji<`JZY}oUO6G7RRtS!Pb|S>sgV)S#U6b8v*dt>An~+JcEWpDh zHLZTy18y3Q#RWsHq9K}bV1EKYEw(fRaGA|5*ypIp)65j9JybE5=74*mr{_|GI@Q=x zFcwIx9AYzIsg7GSa$f?_2@Hy>WI!aoniZ5sTzIeE-)@13tN^!1AOK#%QQ+7dq`2+KvCNS?6$D_ z_+U>u*i|c^zUJyp7mbHYa>q!v|41tJr(A}|)j-~)kmds}ycow9hddy=8smRIDf9~2 zIY24zE*5>*JUd+GCqD6sN_BbS%E?BHC-PEip_GJbQ$naC%wcJ;0uUJ*qRAW+ZIr-;Xot-l!R?SZY%p%Wg!&e*!;D_pZmAPtY`*-9&^8u;l-_Md#~DTh zV%DN{l19f?kJi&+FYgl$+D(1oA%xjT^vY;#WSHd!%tC(37FY-vYKL4vHUzi8z8Y?3 zWWQt8qa(M2ZtyJ(w4Cy(?3oFwSphzXsL3E;`gkw}67uARz{Vtl{TWjm}nM#zfM=Og~(rcN4CkIVv-l~J@p|ijw3Z|i5H|DIbOnk66jh3M9<-r<0 za;P@h>)=cTmX-oWVppCbSfL)lYSm5#tJfYsZxUO95B(Ze*JFo%BLK*4qNP*i(nJge z|761sgdNEk=2{}qinpk@qPVnk?Kr7N>2K34hs|@Y;*DMZd6+5Lm_+5r7uY}NAnYdt!`}s&Dn~eariSw`eQMo*Q_3Arr zyCd>G@VW0(DcHInCgXT6dH%`gC;lrEnMwt|Z$>6J_mL+q7v1K|r-=B|c8G3c8$UxG zbEV4-c5wWOyD8>d5XxbD>{6swC8AFFPG+)0UCKn~cPDdA{PdSHsd-+?ym9{vPWkAY zAK7xGTwS%}rDyxn2h{aP{JbYW-PU$vLm$5^N2(W2e_9N0GQbtP!|d&EU@T*eHim0B z%*BiCI}LjHE#vad7CZz#<(mPav2S@*P5t%1N!mbGAreBkdQC`|t4kh#epSIzF?96| zN}DixGKM*?iQ6&z%h9>!;Bgn~Per?_vM zFmVycuUx(1neR^>cw!im9bp(;sAZ*k+oxU>K0Nh1qClYM)^Q3}R*(mSt@xwWSn5?PU2kA* z6~V_!`;rEMRm>EbOQW|K6#@1`q^paB;=$pX~HbWj$JkiWPNhaRY+F!5%gd6 z=p(;)OK8C?fC&nzZGz0h9LW=ZMBGX~@(U<1cEjh-8@s?E#}R+u!-y*gQA7foLLI1F zH4GXMa0ucF6lZ>(aIE5Y`vMRjh2bz5h$tAn3ai80>BoB*OR;&^ku73BNmuMA=>@!2 zxlX`8p(H?da#%(~$fxlSq*Uc?`Yrfwmweaa2N2Xwns92dmOo=oJ=Su!IF1MvhZrL< zhx3bhR6+;;UkTnQ+A)OAplMvn6cR!JB{CHVZU$@Mv*Zy66eizF6uA7q5NI{}t+=8d zb379`sPlu481{6Y2mblH8J_MGNDT(@PnfU>jQgv)bu=uaByGrtEK(s7r6Ot)RyPoM zF-`QtjKg{p1g^khohU&5FK^c#BUg3a&EC6!m8!&%aa(XG7%97h$78(9BQ~$t8yl}5 zK(WKp05NxG?#xbh9?RT2Uav)JNJXGR>oUH0a`2cq)Ch=+z$p)j6$+$}P$^)76cI&f zRZ^-nRJ4=;6@iBI`+eUz_nw)xca}=Q|9Iy<&htCpOBG945!sF|T%x_+E+DU->!Q1QkSKvCM}DT@8tDA!?jC|9+A5 z8lEow&X(#qqg+XVQ62&v2A(PkUgfHBv=rDyLWRwv#|wr-GvW_A^5fmV_6V^nD}v}d%T@zHxvvEbg@*l=Zr z`P`qs9;?kfBfSohsCzK>W~skH4CCQ-;^&2$H!;R@ghAt1Ru~@Q2{PdP=$JIya(?s@ z8{ACKUJi^xZ;H<#2HA+TjGm7Bsv&<*&Ema=kM@tU4GPd8&4HiZXwb%ShgHBWX=UVM0398fXK{jz2wzmg_=c*Ji@|el32_*J8Q`n9Z_0KNSPfJEI>a` zZ_XZm{MOJ24fnxC3r^zkT2yOec{m+P&ISqU{T=eVT#W#)t+8e;N(h|y*L}crE5=MR zU3r}cXQ=)VWNl3N%*^&SF8l8IOnKBI;@u%|Aop-lVP3sN~#`q!$UFxDn_uF?S2Y zYB{hZs9G&YmSq;B1x5UdWy_yPM-5l4@dQYU@nxE=e@nfnBXzW;5A_>GwTwzpKa;pA zr{@xVl^NZe;_*g)t{7HpZ4%OKHmRo%)BM{U5bnZ%XHJVrs9id_7KzCfZ~+>9!(I3b zQ5?$BjOHOga-du>;%o#7?}mtd84)8E5PUWEgdjT{P6KNp5AZ@pSV$$y*v9Y-*JU?K z)4B8lTCSFJ=^!_g_&dlrsbSxDO)XMwtWIEYRrB-W)o3$8+OQjpPqR6wGh|w{I^ffm zJ9q#ZPBpItJHcA9oK$Uo4HESuTa9|@2U{g3T46lgYQQQZ-q!tTHvy9}t;;CGN8^FX zMJKy&r;@4ys35i5_-lwQv;Xk4XU0wlGIu$z4}NCDeF8EM2*})?`(oTGk~G{UC3Ekg zo^=P_x}<#|vvL*Z8VyKxMzR=rFmtCd?me{lF9xR#*5d3GYLxdeqZ)#6i{eacI(OYK9nkTpw4A#RqHzY_^$Fr9Dhculak50n z0k`6Dz$1x=%9i|L@0!Q5gh(=5E3$;(A`hPo#2$x{4I~gdaka(y!gRc#J-nobQW&QBP%weulfy9AKMq&j)PY?#1XdpiFC%v4uXX+wI0{&zCJsKQWlB8_}%U_jAw)F}IKh3!y(+-RY-h zx2Ub7DZE7zdRyp)^dDdwA++sd_h>uj!)5l^?W`Juh|$@Lo2>sm>rw&a>fqKz3>go4ji1r4(#d% zYqJB(?X?Xe+XiG6cJYD*b8C)W^w>k6Vnb4@DX{K1S2=~f4?=SU2W+~_Ghl%&clio0 znnZw$CQ0C!S}qZv5EaF~ukq6a?UZ1UBBI4|3e?x&w*9@|!Kr;~{CC9TD{H(k^s-|+ zD*mJuAvZ_HN!P8Lo<1gRa*D~a@|qp|NB?<$M19ceuD82#7jZ!7&v3=yYaF=b)yOJG z7KdqqC1 zPOKgJyuiTL$D!k8s$_wO5FibBf^#XF<=5_w!IBGG_Ao9-KHZG z9-1{wEk9a42kSH|sMVzKGgDf02Ubj~DMwWhP<_gUfGahmun6JIQg zHXDIAp{L;M-e{mqXpVsH8I`n(vD_m&ttZvbJ7BiE={PTX#IXyJj#cW95%R`@pS+S1 zm|T&e>AYlc@-%kK_YjQ%olHV3+vqpYeR)miSG#G1TE%NPznbEu=nJgrWTLB$pKKN; zAN5yjcuUxEvL>m->tqhcm_(kk3TS8t{mMYOTQ*fYy~oOO0O0(nA-PJb46&y(2QN5Y zsCGB$wD`rB5UOoqEE1iKcff_^`hY}XL;xM(qn&ry_|O#0HCvLVac> zA>s0a6*_997_{8W@29h0V#_TzMOTa2B&b@+p!AA!Br4XNh|LgTATW=40~Dp<(?wVs z45(ULl+x%5t`8&dr8!_HH{_~BILx9M5ytmNXw&N`idiY78%}eu;MGQ<^O@R{V1)() z%M%$*nFGk$B;yh2E37u%AOG5`hgFj5#ca#{@dtsI_qqP+aj*tP`w;3PA<@v$)$G7U zHLQd4lAt`@owZF(cgbh^*>yJpHcwaiFvMGw5}01ZXX3hy9KL|iP-8=hO7!)i(h&U#@FI3CyL!(!yBZ>IKVrQB?$BqogD;RyU^_%EVJC*g=Uo!%WOaPVB zq`r&Sjn&w;(mz5r`kg832=H7{RJhJzGq_k!{j1bSb5|YYLI|jlMw$$pmCk*``KmUrnW-s5 z&{$TBsEZXQQI03PZ&0*H08{W48+M|vX*F;IvCJT4tx#!au4?X{B zhr_>5`urnDA6$6HQc_J$UU1TIP8>4DrG5<%3o%Cz<)8i9-swi^o!=WuD!s9CKD}?j z6IZ{-N<@(hc9W*$?tVRP`2lM7rvGRbf8L ze&Z7ppu3@`Sn^3%FGZ_bbQQUFb&qkaMHk&K0N0XtZk?zHV`l$3 zWh{2!w%oN_%ief|$*G(w1gPkdYN6y zNSZUzp{$?OPt+({CypzWL8pmp>}kF8c6peGIYRE9WMwu7($pRi1cS>r+$Tn<4XQp>u7b zTqjVmJ`nCgcOG-S_~Xs>fA{FQKJ%4&#mx4y;xlq}=yOWXwz1>Yce+jY^Yfgpn#n}g zL<`k0+#`72*cQ!63y6Q6d)gN#2mpmlX{NwlU(9@(Jmp<~ETwUis zSMU*GcHO_-Inyt?orWSAn{LsNY>Fh)p_E_2vc7`Pa88|*O4I-Z7LYmJ^XU2*G+{Z{ z>Ung7_G()vSDIDY2&=>=K&YLcwqqVvl$jA%EBH>sqwAASEnMLujVqioKU^VqWp`Ym zE2+)G6%g^(eXEW)%hQ9r=NL2lljhvK!J_r z|DB7e`9xjJqr%s*glv``yKi!`~togUUH=|2xVegI?u$LequqHEP zrD<5gLR088)UQa)iI!8pyu+ekprGBdM>Ji|3+Z^p_>>4n45i$lHiBx@ff;LK7OAc7 z+M|-%>aP7R?0+^8OFooFuY`}46vi+DWkvwYpQl92SSo1}HUz8<>vAUQXLlIs#*<^( z<&O@xjSOGeaCYC1k8tdMB&?FmrJoN^9zZ5Joiiymf$+8#T^{pG6LEkJivy0&XR|D^ zGuI%hzUD=fH64dp(`lO?>vg(kLwIyTD{*%`1v*hx=~Iq59W|j?_EZ(Kv?6$fEx`h^ zC3QW5&iHyfq=A}fJ+)Se#M=!t2=(XwXE$da$I+4)1#KFF7D9eF8d|q>Or%Ko4fos%V?I!~YEzQ7oTPl( z2xpKXdd3NW(-VgEc?7>T7jL# zSJ5e=I5aq?h?%kWq-&7rU|07?Z02eQ2#Q0qmCNZ7s}3gejYB$T;^NV?ukP0`jBmHx zuV2tFU;aT{kq}q0xW>$R*e zqEu|=sLX2qE}VWG4O*ojGf`?fAO3@QN-8nP8>7*T0!r9gNT>6|zkfxeI6)@ca1XyX z!)O%yU${T6%n}vz-44^d)bOoqH?J2;eQWIw*0QIkWqG!lu!76@j}^aozgz_dCbZo6 z>SI@M9zebkgUE>E$nVpz?N*Ohg2tMO){+IutWi=c1z^Xs1|R|3C=@Fk)sA~m-8ARRhBuLc zq2m)fd{rFp+UdaJTr2qg|5QGG*T*GIn$F@g0$-;O%18GMM8eGsG@Qj}wgDw0lR4A#c3)6cdKUOk#bicgD={I62_{YF?LJ^Z zaFLM2$4_?hL^|^hEmiXt-l6qbWg)*kKR<^~)lj47wYR9LR?p9ujd~LADH^YgoV~n~ zW1%gxHu6`xh7yOc>wIdQCL=AVub9xA&XaXPmk~5Xi$wq73vcf5Z0ob2D$Q7;x^ST8Ld7mk8_7( zUZ8Xskd$qz!UJ_=q2UQUmX>qmR6QKM<*V9uFpAYPB*ZQ>x&8JQ32uWX+Yoy9&B?O< zbY;tZb0;w`pClB?4P_#iCDmHME|We0?Fbo z+47`DPQ__Fid55RvXYRq(xt7`mH}lis^WM*@#;yb8uttTyk(%}e&L^N`cVB=?1DPJ z5H^|!M~sU=*W?Icu0?%HNs5s6E;f4$?^;yb=qvpH<^Qi!NH5&8{Zf-sDga z9S_gp|25eh3!;}0{$dTf*IBp5!)&={eJ$=z(`SWgP7Y583G2*czGcT+=z)s%m1U;t zt~y)zX$}Wp3wNStL(0U9s%cUa&*AF>?HoaBRfzdUB0lTYf#!gtvfEog=$3o;O|;2i zdky#Q8~LM=%)q=_!4Gi>6i$m>mNg3$EqOGSP#qpIKozX%xi9b6 zqfm8XX(eAG*M}PJ%Nt>}(ArR|FEJE zCVR{I{tx5f#$b8u&Qcs9Ajcx53km5hQ?p)!KhnIIX*xTXjOe`fmb3G8R}FrmF`@5SB}u&W@(L=)M>wB~7Tbk_<# zb~j=+DHAoN(b`H<7I|zQ?)jZ_zI$)at6TqZ=)Qfw_xaA_cYf#oQd>lkpnT;48;_0z zY(s$^?#k#ujoBIP4S4>KskiKJTJx5b4mS6eHT8~)w+z2M^p{6=Up}Gv)C>h6*yd-J z8eFTXz@mkp##CV0{t8|92WJ-^l$c@i#@+_)@5a7KwX7DLzIaFEi<`6gHBqF_d*72- z0WfS$T~|*vvmV}^Z+Fh-S4}HFkXGpL6;s#Bhikqw4^~5#+P=Q9yJ_29@6Ov8Z#(Pe z9QL1IaWZ4{*2!nItCh+E6V7PXHSws*mTNy!=PjNV-(uuNt|rfNL-PORS%YneKW-?r zr`WiUBvgvj9y?Q}%RIcm8Fv+s5tZ^4u!(&ss)q6j9hTVPTR9}|nXpvsMmCBV-=-Do zt=`y<6o?qv=&GkI)Fu|1$dIYQoQAT)U8-8Q%}2T4+devxR>46+JP_#=?W0tx8hsn< zVi?|%J5iI7VM2$`R1@F(EXUR*J(Giu3q8}_4&S6hX5G0WhbxKi-ELM#mDNTy#ehT{ z!!_HRcYD%gs^4&z0O4o~YSs;Rwz1-wR)P>DqYrv+FTIJ=C$K=A{TaQyomWi~d}84U z(l&qor=fe`>#QVy{^tR%G9Hl1a1SpkdlB$O_@V&g^J#R@Y)JL{`JZ*If@~C_hf*~r zz>7_R>|7UP!{k}he?oIC(%f?d`NE1wLx``4YtXG&(_fMl(wL0LHfo%F@%xgNXPyXm z;+M~npVq7|e>n0mA~0!oVGwP>k_{Ebi9#~Mu{ZkC1A0BfdIYuNdRi|DZu?KZyl;zf zgOV`)i$nUvjem7wE>T>lJq$Eri-uca8w#y)TAHK@+MIO|C>>weMR9J92=nB$YhM%h z{IqLdjXOAf@ool_N}3kDn?WRI=5Dx2BOKP+qAkTmmahCC`E14S>Kq+#P<5n|``Op) zd}v}5$9j+xRUHZR6eHZR7$&S!z{Omhmi(|$&}-9@=KykQpaY^tj@e!;4+7nbzMIbm zrYj~(A2UpyoVIA{r1Q~=SC!roo056MDtUkM>2OMB{86XmM<=5xp?~L&KPRr%{4EbN zVvyYjx7!!6_h96z_tZUmKqGpjnJ=0Ovm+b|Mo*1TLADH-xm1;Q^|N3Cvlb*UJ0{j8 zns_Xah$68}bEFz7gpoSIb(>UmxHLv-P_+&Z%#DND?v)@=I?Iv%!v#{knd3U7YBv3C zb`iJWVf9a-A#ox8!>=^#cg@qJA?KW43G9A1As>HY&o5vyjZ|*j@>bp6ov{Z?CdX9~ z76vs+8niG|yMrOBi_AccUQBRgR*>Ox(@D<3K$BfR9Cl=cv)w@bV&G0dJB{ zkdobO&fgt+V$LUL>ybF^?I=3B=CO^6C@3!uqoddN9pmWe%`4xjJFxFHF{PT^Xe$c4 zmfV;{(9hnjN1$_ypo{S#!?q-~R>@a+v{SYQ4B)^M*83CCIu*DmSk( za*|^#RjjW)Fa!rdi9z_O81rVF9wVZZ3-eBz zMym~kK73iZ*Q-kOi@jvqDm z(KQu?aYP#|q5d~zeHZU&=cMt^Jern6?;(ctnd51hLbK~&(6#_OS=xdj5*JVBE`7fo zsrkSDUuhATvl|zZ4W=;Pz;sGCFeitnBu_1(WHt{ms3Yc*Q70~M4I@nYLcFG|C5H$g zQ9?;_c+3oG2(y|v@(biDCyu<5?kT$YGE&RRo=~14=6B?RO=@PM8tc@P2qR7g)#lL=g4ocq- zfBGZIl=lPY&?nc-t6s|uK*)w|j9~2h?w<1Jhc6S#d1;HYL&5|cdM(a4 z{=|6Q9m9^zBKn*7(wb4>uu9@fYgN_dP!@YGxUc*psEyMyl8$SiMiD4fixf{Slf$oy{)cjE0u_OMa?44 zeS3JkMLc`4S;Vtbn!GQov9RceoDfB4akPd#PTt|1m#Ve@*NoXH`OovnD%LaqQHLRc zkNCPOxVl2(s$oB^;LS%Z&a{gU%i`3gU3@4!=CU|}B)2-bp;3#IJpZ@a`Q-V(QA#&| zrUYAUZ>GW>%zT@81$zUaeJ#$~d=LxSw3f7y{|;`tblm*kCL;3SjM*jFy~{Q32V0je z%$ru2GRcRY8p?xHq28UVC5QGH-~Z5F@Jsq7coXR#B=-lL5(yZSFg~=GF4t~^gX9;% z)!Vjgr6(_Ef#%0d@-kaPPNBbQy*7nZa_iN1 zR2?;B{OXstcRBeEpONgOy|^gl!umD!6F=o`q9(IIglPyBysZEyxM%kP*NLbJ*m*{z zpiu6`BJUd%lCyFrv30uXkEi4CZgA|>=u1-v&;_#`(zpG&yOk0@tYJqxw8&71JZDQ8 zAWSeoHmz|zn-;6q&%VU95lf1Vc6JXWuTC%GprO5MZTn#XxOYSd1tbq;6l- zzmfnO1-roK+0Bt$nBXd3-pr|S-)xov&n!1iji`+EI7SVa7b7rgQ3-pNiD&nDkhg&7 zam})NjA1$c`;E*2EXZ{wdtz^KEa{Zqh%7gx)R4-WwIwz}_nuwKboim$7FUM5^_dUS zixX}MD%XK0(;AF`|!!m9-fs2OB!H47atYe`AlyO&<~fpfa*?UM~e zFdqehil+0;T5d_9lAK0rdY$pq^%xy-m9f$@3d3#eR<0x(E(aYA9Cg6SxOs^$VtL6V zO1!yYKoXtayxbjh3XF0^?gz3rigAhs#)l#L<Po zEnUp!+V?cns#>Ym?|WLaervakwSF%gW&Ji!s%l8+y6npPPv92AKss0H^?bwH^Ex`1 z|DXQqA$_KQHU2@*k|B~V=S!>fy9u5e9uaQvVKGVGyYxd7%CV+t1dCo4Ii@CwRAe7H zc;=a(8?zHOG3vX(Fq!kyJ$RBGP;#S7aZ5==Cefa%B+uU|a>sXK6f-@68)TUgP7`MY zsZa_%8SDh){bjJ_v9~t*wZv;Rx8N8pZ;arS9p_b(JG%x|^N{rN>`*1Sb17)$cXp*E zw&b~aFxi!CMgc2zEdyBbD7PMl;-crY-^{v-YvqKKYoi_8z6V^9J!!A4-5;*En<{pp z1`2Vm&Lr+s6zPs{|Eg|(r$8qjBp@Zfr{O5j?x*(BYu5DO(FF_q%mvvsYwULZvip^9 z=mw(4hV^IW|MfoMaAs05(BtS84C<%69q&{yNtdKYe$*G{2~GQJ*7!X>y5nEqXYnsv zADX;R8qf-X0^|Azf$S-qnpCQ{gtjl7IsuAWdht2W=j#1H%?{lPCgWPN@H^GoNU|Zc5ggdr&Z4xp~oys>^Ws%ANwhRNP+(o zfLeAk`rW>0f*CFlniDce?0zTQ)CE*Ez>W?JA~mQh6>I*~i0^m)N5oSv7pr_KnY8#$ z!WgcES{qN0o-_wI#Q7gF@mq#%Ytbor+SFTAeo$;(baQBqErhHPKxO>Wddk5;e3e3HD=aHLX>Lu?y3glqwt zLw1Kj3OtWNiww*}944kJL&kH9&2;1CEyT@EoG&<;Ctju--$9@m5yN^>66LNxr z6_~Fs&xKi?0m&XFQ&yB0NjQ^BUlPgSktDfk^vnm2E$UpN0nscj(|YE6ThlWibX(9f zn+|odFpCKySl;JxLEOtUJl^L7n8UFz>o-U}#w{{O zUzp2If-sDYFd5Zcsn~5I_qcVu-gE(sm#b89J#pcpJ$qO~x;kALGOvuGt`}W6a#$WU zRzSwh+HI!N*dA4cRh3{>SfA&QW$-_G70ugLf9{iUvye`T3=Z0E|Aol47i<-fh>Qg;yHR*&JScg?=X+_`kg$5Q^bE$gu`Q>V?lT+@+| zfzW{Q89>Uu5GShNRZCfvJf{cIE~IMoP{#n-9dx7?9iPp-Op>3KN*F?gW1Nn6Zhi@g zWYBDp;6qB0_=CfmDx}v1pg%?w|L!UOx}o@;&172*>_7BWkNEv~bzWMntq2sGD^L{U zQ%6r|sN3l^(Y-X22KZ@uKhphi&3X*k$RZWkm2!ugZen^zlXB`YY`;sC)Yv1@nW|Z* zzJ;AgTcl#0`j_!{2~wdnJJ(p>z3hz-O0>}2I$|Eue${&UPw_7JVF$Q}JUH~*v(I8L zU4J0)Mm-SbOH3m_Zvg5J6JdZq0~Ky6Ux89uOIE(x*yX@<84(g0hGnpBTZhy~>$Zyl+bc-Mnm8Z@?;YGKx$Ru@x){I_<3Q{M5<;Sx z58AebHLn8G5o)L5q$Cf#-q@8p^o@H!$a$pdfTzQZ~u4?J*{(*xjQ zppz3cP7bxHG!h-{*uW~p8U4tSFQ0qvn>eqIkjbKP9V;ISGK;Fo<2A{Z60m)`zmh!u zPh147VXaf3w7>{z^tER~x@bhVO^Qo>4SEi^C^u1~+I3*nx${-)^mDcU#hP{cd7}@- zfH+i*BA;vcOE{G>jCXO6%Mn8b0!b&w7`nlJRe4|xGY&*!Ru57 z?~K+IyyGvnpx`x)4US=k3cW{n{U!7sIk}2;*I#wu;|{o3X8PP3J*HcVeQzuz!Nue7 zDsio2KWEb`<)}nlOI+WoNW1@{wOskEVqLTjLX8fNGsrd6XaO!-2Y|g5GM6kpI$%x=hyg0}3SoE}lA{%o4mlhT4F?q`onpq6FZ%n4}h57(QZHrMBiZmK$M(Oa}#YSR|Isr*oS zy^=nyGhq_$X(k|K_$E?^1N|x#GzNg%DMH3cv$%E);Soq8eSt^S5dy`H*sSsa_iGw`y|kT9-D3Lv~uK zmYlne_hlNuej(cNTvAjAjOynJrF2H?1xtwu{EVqfq)z8NMq){2PV;KR_au7JLaF65 zSk@4wS?>)_A*^>?wPsn;hnh7j!HR^@u{b)-2uR%e>Nf#5Kz;}~6MEjleETxngLsaF z1}(>|ga)s1FLQPmYfxnK#U{k^Ud-Ym^~g;9G4B&nu*}w_&MSRpyhA*AQ~=%OWCg40 z_Avbwx6S#HM!z?b1zxkYmovl-yHn!}mE_tDCUX#36`o_4NQ0{}vU)3>Xn1|^VG4&5 zevgf3HoPn_-T>?fE_g055vPFXSsDU;f=-GEML|dh+C?sE$ru4KqZSqe-r8kO|3;0t z=t=C8eBLbIR*9wzVn-TLry0!}A=N4!Vu69LKN1Rtl)xN|j1~)U*@802!MTtA>g~3* zFSP&Hl=tUy9B4Z&ZD)#^&L#i370p$r4LpIjTpG2wVgEhnQln(EN{g3`YLTHJU;q0# zSG(M5<()I?4A*1>+{*RF5vkpviff?+>b}bRr~GYw3BV&_frABU_XkyTty#OzQpq6(4Q9~1|AB=P&)JhY%9nTl$n z#z^8K(VX?mp|&IoXzbuf73adPqK+p&{d*l0>r}Pmr++tNvkYWrDqhVwCDC*^)G5dsURiSUBmt5rP6!DJgOIXI zHVIU6_U_%yh5K0VxtC-IYOweKE(K&aV-yN< zqf+kQp2U}1u`c=kdJ62M<1Dng_8cN!wr1C!gKdcOfS9CVY>H__lfebSE<}aQ#5IAh zaFM4bY9n=C6$ap6^yH0*Q4Xd&VIi(SV(F^+{!SqpINapR&( zjESlo-|p_7R}L5^y}P@YVZ0gbCt+b+f|rj`OWr85%9}ozh!SJb-R#P7V6-9%1nJDb z7vY~&1v;s4-Ei(Ne6x*mjR56TL>LVi*uWEO{ z=UUE;e$O?mz{$e#8OO7f9@nue_*IeF=@^q6Ys@)luo=C zzhvf`ASRs?0uCOc>(T9zl;i_~7kb5Wa7fEH&;cpShwg84 z`b*s5$%dqq6|Q2o)12sR+k`Gma@4q!G9|K1a#EIdoRpS-=h;%tuIb;oHqo`%REtMK zZ6c5rk=T3ZS`DGv=q_cmawazzc3Hq*Nb#Nf7g#pN}E7z>eJm`()4#d zn*g2UKnXE(4mGktf98UNE{uJw;@b z5Y&4wxqe>WmU_c*%m3`voOzazj>-5^WkZuHLc_*^0LnrSuz_%4l*Z5o`$I`C$>}KV zV!kaWN-OUmI8oEPZ9ZO(iTZ%G5vwr6dMsBojRoUIo5%b7DKjN5_pV)3YeOU{lfLbJ z{ghPZDE095`6Ob~eN64(4{Df5gcL6pKJX-{RH_ZS8yWUL7Kxfm_u!|r5MU=F>q7nY zEvajr80fEK{o9}bYihdbFhI?N0qWPcz*3YW-7ZOs3+f%q_TB4DUTJ#Yy*7X|!CL86 zxWu52pV+x3w_D2a!8m~U*=!z6Qrd@D;=2zE6AqPYcOS+vGyv~040trHRi;4Qs0TTw*1SE5E!7gf7y{vAg`m!LsT3`M|d64`WolQgX!&PzL00Yx&0se>_BQP~+G#;G4I|3mME?BsuFZiob9@OvpH zO?!r?u#nR(!ko+zJ(V^;OsGL*2B=8P!A$2Gs8qM?VKXDH`pQ3YX*6*BgDvBs&{K=t-e z@YjbJonA)v zd@1Kz{@mj^bfW3cJpuGsw{m{;zcxKHQ++?JU$_@Z{S>7&;yc z0CR*e)oiqR#-@Qvs%gU%n{s&)QoPhzszOIL6Dd8wRe0eh!z@SrbHrVYj9~EvQt*Y( zvVf(gMU~F6$P-EE2C(i%{nXRWwm^ep)hlr9BR#OD_tf{zfPhCqbVXb(HOeC2G3FA` z2}E$h0ZuJOt83pP(XXRa#n*P%zQuzMf+0J8C)dPgzH#PCcZ-bIsip{tPU}>sc3L02 z-|aB1@^?F(^`S+7WUoqhBg|t@rw%xFiwzBmM<1(}pzE=;x8-ksv`8Da`LR?kx=X&V zX`(3uMM3H6l4z?g`%aIqE1a}1+GTzMQD|Szo?69Ij9xs{xJy1jL)yF zSSiFQB35r!(V5Oou$WT>a8In?*kbPD1l(`kj3mx)wd9n>R;>p1h@2tx6=jG)JucBb zUT1%rKspqH8i)7*EL`HtDh$FbavmuaE&sI;jNP&Wa?(=Mf33yC+hZ}gKnfE8E-@aMD8^gb@=yI#nmOdq#i^fkv{4q5S%w(YpfQXWg^;rJ zlkLF!fv4%JB;fy`OH)=;^wFlLf8=zx5o%QqGj+rPs>;#+|0J@g)BiL@#J8i7 zjAE8KaNga;^npXc^IBOf>e#NPclTu$r^Lp4l|0#`h4fpuMj5lrscM#a$MnoHPd+;h zv&@vani;dq+8eg*)lJ`Ro8I!i@=?bnP`IJ#edRjIW(i8P+7);0D!dWLYvLu2^~W|< z0I*UnqhOO*WvCyN@}_(7&@_#lht8ueJiA_1t;nt<&^eJ)Tx8cf6XTSPN^YR@<`%RDjFws*$+-EE~_H5s&l z)$kxp9M$(YW>uWnqMR(yew_KPOo7=?S*&(5Ul^@dOf7gWa@tW4wz}@w6|}qV z`E*h|K1mbE#p45z(wCd0GC>(t_numE1>Id8Iog#e#Vv31JsJMD`AhR)s%95utbLI@ zGsspFCWYRl{9!p@QfA?`EKFB|AFP{s2AiL2bv^fO4%Dnw3Z-1T>$&f6t}=v<-q*PK|>F&r}(1j-SMf=`#;5N!t_MN6K`p713< z=JG$TU%2bXpJAlRAqrzqLWJpzav~bn4wup_V)M|l9g@x9=MR%uR*+-c&mYR3ebI*_ zZDWE$h2vXID8uDVq&i}Oe!*GS`cj7^dxbcKu zp+Lu-p@z-?sEBZF@58Uz44U4DU(N8eSSbS*3=Pi2JLY0#ZxGV75n&`MbeO{nAY1XQ zc6LXUHQ!v67JL>ZX{2||=U_?~ch&UnI3+=}2CHFmgZW1tPG&2w70MF%E0!$2cpD|* z>7`;&$+J#5jt2h(m-g~b8uXSOW+phZ95%gWhr*Pf=alxWB`hq$39G_|hJDfN_*^65 zk>RnP1sQ}mniUAjKLn!gC4C%PNMyj~jIi0gq#uinU-+1&BRFx7g2Xc9jxW;o0(d#< zW?{@2G~j-2`wzx!H$~FMgSW7mGftt|0WE)faggEF2ccYZorYA9vMUr?dZKgA$DbYdxa<*^eOJ?85 zxd?C)H1n`&vaZvnS7eldILkBJ7c+bf5ujK!lcW|VY>r{`w*5P2nQVJ18#otF92og8SN!+R|V9v8paSo z5QJ6DZO}+O!=UufeMFcO&miKOO2iFDY6Tfx(?9oL%rK9Ozc(`20|fpNtEn42g7%zv zcDhe|I&)XFyHET+N4ycs5zzKL{NCyealvV+NpyPQq74?XD9oLLne!{Al z37Y=$EvS+h(pd?M<+xF*OTu@_5)`W>ql{=YVl;({f>U1Ds_l57l)*>;@>>gKy}1u05%eS3{X za@nt3)4%!dx*-U&Wg^KJ)l78VF}%sP0usSVX%;t6F&lcbOl>^xoSu#6=hMkOpAr>o zTml-W0-d;NDVRW!ViS$TFAFDW0J-{ahGv8?JX%HAvp>g|H5J;HqK!uUl?M4xC3QIo!r=yLgT6*V^}GgyEX*SDMXD8xGXAOEjpc5VOTzhICZ3E9&S zVD(4ps?lt=5jUZ?jTh(s&O15?B>6@ zER}qnwk8=Z@`smkr9sE+mRlEpgS?K!!%WV#`AB#51n2x6_S=%UWB1k2-V zIPtUD74@eA<&z+J@EXm(i_F$k!)+$UMbk|9?E7=pTGCe2pK~@0jtpfw8fm-~oe}Yr zz*rmR@KRd7Prn*V-V0uV>4EKCVM?j!&JWmlB?+WEzd5~-R`wzo;$-B)P7pKE>_`D0 zjc#Wc%k-LP+er#V%ip|##4d>kYx|qm%gvr%gj{4$Vw z#&+9^62X!twMim0q-WI2+fdPr8!j>+MkjjBp*sLWUM@UZd&eEKQ$g?&%F0LPRMh$p zhH~eqGV6dJM}kwt6{bmWMUq5CJo-1o6GMyOhXh(A5{sS%ZW3D?0a_Yoq6ozz@g1g- zP-WiKbT!YZ<==aJ767B|-#b?%W@xxzSM>iE#(nCG$uz@%N#g}>WI7FFU#S+Y25b`v!HeOEh+VWJ8V z1E@N41O4sB&6dJ!eu@~0L{&{sB$|8{6CL*HhT9zYH&-uNoVsxQEtiWV+4i@TG-J1e zO|e-y?2zVTO^H+4mXlWv-6G;hxQSwqymd!)sPbA89&P2A;V}w@x9-S9Ofj?xSWGgZ zbxw)2^PX|^Kl;xgbi^fx*=w!oJ^GO3t`*`8NR8$)uWO}OJBQbKU|P{SUKa_N2fFOb zbb0ap*_~R|^e%p22XGLqFeV-dG=lRnl1y{)128;d_ZW~Rh9JiD0tOem_;l)zxCMJP zUizKtu`j*CXN-{uMyf#x`_!hV%;#!XSVWfy&vd~wIJyG5Z^nR(^T%chgEyLBNe#0^ zMD}vkBz6WMV$T~Fgitvp{U!1$qylv*DVF=0S@)dtk58XpZFZNxG0^-&f009_>thp` zw5AAty4@&y?-G~Dw!fDXm=E56Y9@jCnX?M{;HGbGVt}-s7TcP8ZXTrrt&znp?Yc$J znW||nfS%j+%}pZ(_6IY#0IIO;XufgKRvWcix^{naQ?=IWeym?En^?n5yC3UQ(VHVb z>(QtaI0naJmENJumI5@oV_~#*r(tM6IVm01^MKY|n-Z;k#R9@rv zh**vJ65%u5n}}w~t!CChQ*Hmw_l`)f3!x6B$4b)^R_}Q`t9%_qy?C5 ziL9ArkgPRZ4FF8%TK<)fY5uK$<>TtBE3h69g{)W@$|a%vg8U9`Kn;R1kSr6qLBDAE zuRfRRR!~uz{;NMO7izQvv|p8a6Ek8o8A*RSre47fK8$=}dNYWUIg7<0Wr5kdWVxDP z4xgS0W`Ex_OfXYI*mjy=o`J4hh1bP@HrLNl!Z5b9{bv^dh%ps3^x;Ne6OD<}KSHWo&GQqE1NcelRCgdAT{;0i&AmqjqwL068! zx*dj%vZ?s&KHm&s-N)KVzt|;btuWN**azryUh&}(K44TxWQI3M)SCHc%C#j@S z-!^}-0N3focK0KjhKOBI)1QOFtMNfCGZ23z*x4ydTi^uN3My+NuDEp(M{`Mb!dmlGKKWt%X<9t%-RH#H% z(zAB&TRIMm^OUJU@7LWT^&o&-kLJCXcINnELkEeVPetYtR>F)i&t6~RpM6Jcd^0k!5VT`0JsR)qEQA29DY zaC~=bq*v4X{FzA-#sN1Pmz-bRkp`%q86r zl~ptpNik&^GLj*B;C>mTY*1e>+0N$&`lLQui`nJh%{O92BV4WAb`9P=LnQpL;1v-1D)38}0o zg*Sb9_GDP0VVu(4+18L&dMD7TTHXhK)S*=w1WigeUux>9)5cNoMzbwyTD`p2h1tX4 z28#mMesi{mBvp#mu;Py)a(0p1#Do ztUhbQdA2Vb`nR;a-iHxl-21b28~V>*+t(MZqX}McVYE8h2*q~wg;D>8H5Z+?`ogBy z`_RUVF5GxQ-`a)r@8|mpBJ1-G_C7oz6cMeLZKYu7GBhZxWML;Xggt>)Fl8U&LpXEK5q)4hjkq9(4s)oSa z0}|(prlVOdnFXp(^O%aJuQ9d0RM;6P?)AHt1-@JeNLrX<|GlepCH@AnN?3) zk&D-)d=|t=V=z)K9RLzkM(PwLZflpd)#`ewk*}5uVY}<4D_CDzeOBKE=Uvpl_B>F^ z7W)01^Dl@xj`d3oSa$S;MD?Tur6^3>LP^x-D#|Bk99{mFCxE)V<;ih=PeDkb-Ylr1xzTM9uuke8}DTcA)F<5_FCI z)pnZ>WKfO|b7%w2uCa|zP%Asy-QReAN3<8j%zwxEXs?!o)47XBYiwgGeLqTD95Gtz z(>w-UF9yOG+FdVhbMZ4540D`MC>ELo^gtmtA+n`Qt7~OnvCD1es6}&-F+d^RiCwq; zbdm||T@`V(kA!s?yOws#RqAR%9#`JwoF|J|qXr$TLODDdS3C=Hq+Mt@BK4-w&rJsP z(@2S14Ug0XuWr3sR;}%Ay@rzqM+$WpEetkQjmKhKXj`wDr`Wgnw>?=F;xHeHy}Cqd{no3C!we?mg7vT>#LKoWM%*iK6SginyaQQb>*53@X*Ls0O6uXz z9KG zGRSMGjWlwB8^EF1L{#t4AR($; zchw|l@wn&X zTdrH$7_3zhGm9IB(a|M^QDKA2tQD<)!4M4?CXob*SY#%(U7$bn%eK6G=aN``Iaf=) z_r0l+r2`*Am)8)dx>cW#s9QTyaNCMqOYL#6u#tL0BA!%~jTGK}lA;cgg1e883`k#% zr|Z@DuIXKk?|S<*uEr_L9og0R<(po*;npL5x{TX-2xTjGvVraI<~}~5qCFKv(`{WF zFFTTrY}CkYzyH^pUYf9(sS4K|LaVbETo{Y3W#V(uz9BR<7*r}f?|Wa*qW-Z_`gS#< zLwXkVH3sYa_jyDKJ&Vrbh|Zpi7xyggS@PFCi`Mj9yoCO_nEtt%Kkn;UbWXLu+Oz0v zT{Ds<&O8(Ucly2q(M^H6x$%of4gBJUDT@D0qvCI>-1sqHxme1L&n>TXMd{D}aeZ$N zEdEWM;R>7Kiqs6X{OBK@;dDxWPCUb;p!&Ht_q_#EJj14VMrw+;Pc^@36eE4Y%>)HM zPkFb@aKV4SS{=NMX7_<(Z28 zAAh!+H;u}Fe{62_ZMcmRzTt-83ro zO*T8JB>rd4Y^G5jaN_xeg}O1FOO0+}W<}F9=ipOM&fJ{W(ty`h-u&)Qv+hqD*F9Tg zg25RY!=4*RqoiMJZ+`#Ftp8={YaF-01(FQ)<_}@14Pj|!2}m#3Se=Ck^=Ge^j&-JK+ zI)}&1m~kUC+~h{|6OxIw5>90RRj3GYtR$ diff --git a/doc/ionnotes.ps.gz b/doc/ionnotes.ps.gz index d83c4f96f524dab0f7f3f0b155792689c4e9a21d..1180c8ada1c20982cbe5734b15d1255540ff1a89 100644 GIT binary patch literal 108727 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

      apSn)*=E2_yHe@9 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 Zt$+RBDtEvC=H1W9{{b{oobiCA0|3H diff --git a/doc/ionnotes/ionnotes.css b/doc/ionnotes/ionnotes.css index d22be91..f0cd026 100644 --- a/doc/ionnotes/ionnotes.css +++ b/doc/ionnotes/ionnotes.css @@ -35,3 +35,4 @@ DIV.quote { } PRE.preform { } SPAN.textit { font-style: italic } SPAN.arabic { } +SPAN.textbf { font-weight: bold } diff --git a/doc/ionnotes/ionnotes.html b/doc/ionnotes/ionnotes.html index 27c31f2..9ebfb0d 100644 --- a/doc/ionnotes/ionnotes.html +++ b/doc/ionnotes/ionnotes.html @@ -74,7 +74,7 @@ the Free Software Foundation; either version 2 of the License, or This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -section entitled ''GNU General Public License'' for more details. +section entitled ``GNU General Public License'' for more details.

      diff --git a/doc/ionnotes/node2.html b/doc/ionnotes/node2.html index d181c54..4996b37 100644 --- a/doc/ionnotes/node2.html +++ b/doc/ionnotes/node2.html @@ -87,9 +87,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      For simplicity we consider only the essential-for-basic-configuration Ioncore, mod_tiling and mod_query classes. -See Appendix [*] for the full class hierachy visible +See Appendix [*] for the full class hierarchy visible to Lua side.

      @@ -128,7 +128,7 @@ implement.

      -

      +
      Figure 1: Partial Ioncore, mod_tiling and mod_query @@ -160,77 +160,76 @@ The core classes:

      Obj
      -
      +
      Is the base of Ion's object system.

      WRegion
      -
      +
      is the base class for everything corresponding to something on the screen. Each object of type WRegion has a size and position relative to the parent WRegion. While a big part of Ion operates on these instead of more specialised classes, WRegion - is a ''virtual'' base class in that there are no objects of ''pure'' + is a ``virtual'' base class in that there are no objects of ``pure'' type WRegion; all concrete regions are objects of some class that inherits WRegion.

      WClientWin
      -
      is a class for +
      is a class for client window objects, the objects that window managers are supposed to manage.

      WWindow
      -
      is the base class for all +
      is the base class for all internal objects having an X window associated to them (WClientWins also have X windows associated to them). -

      -

      -
      WRootWin
      -
      is the class for - root windows of X screens. - Note that an ''X screen'' or root window is not necessarily a - single physical screen as a root window - may be split over multiple screens when hacks such as - Xinerama are used. (Actually there can be only - one root window when Xinerama is used.) -

      WMPlex
      -
      is a base class for all regions that''multiplex'' +
      is a base class for all regions that ``multiplex'' other regions. This means that of the regions managed by the multiplexer, - only one can be displayed at a time. Classes that inhereit WMPlex - include screens and frames. + only one can be displayed at a time.

      WScreen
      -
      is the class for objects - corresponding to physical screens. Screens may share a root - window when the Xinerama extension is used as explained above. +
      is an instance of WMPlex + for screens. + +

      +

      +
      WRootWin
      +
      is the class for + root windows of X screens. + It is an instance of WScreen. + Note that an ``X screen'' or root window is not necessarily a + single physical screen as a root window + may be split over multiple screens when ugly hacks such as + Xinerama are used. (Actually there can be only + one root window when Xinerama is used.)

      WFrame
      -
      is the class for frames. - While most Ion's objects have no graphical presentation, frames basically - add to WMPlexes the decorations around client windows - (borders, tabs). +
      is the class for frames. + While most Ion's objects have no graphical presentation, frames + basically add to WMPlexes the decorations around client + windows (borders, tabs).

      WGroup
      -
      is the base class for groups. +
      is the base class for groups. Particular types of groups are workspaces - (WGroupWS) + (WGroupWS) and groups of client windows - (WGroupCW). + (WGroupCW).
      @@ -240,12 +239,12 @@ Classes implemented by the mod_tiling module:

      WTiling
      -
      is the class for tilings +
      is the class for tilings of frames.
      WSplit
      -
      (or, more specifically, classes +
      (or, more specifically, classes that inherit it) encode the WTiling tree structure.
      @@ -256,26 +255,26 @@ Classes implemented by the mod_query module:

      WInput
      -
      is a virtual base class for the +
      is a virtual base class for the two classes below.
      WEdln
      -
      is the class for the ''queries'', +
      is the class for the ``queries'', the text inputs that usually appear at bottoms of frames and sometimes - screens. Queries are the functional equivalent of ''mini buffers'' in + screens. Queries are the functional equivalent of ``mini buffers'' in many text editors.
      WMessage
      -
      implements the boxes for +
      implements the boxes for warning and other messages that Ion may wish to display to the user. These also usually appear at bottoms of frames.

      -There are also some other ''proxy'' classes that do not refer +There are also some other ``proxy'' classes that do not refer to objects on the screen. The only important one of these for basic configuration is WMoveresMode that is used for binding callbacks in the move and resize mode. @@ -292,7 +291,7 @@ binding callbacks in the move and resize mode. 1.2.1 Parent-child relations Each object of type WRegion has a parent and possibly a manager -associated to it. The parent for an object is always a +associated to it. The parent for an object is always a WWindow and for WRegion with an X window (WClientWin, WWindow) the parent WWindow is given by the same relation of the X windows. For other WRegions the relation is not as clear. @@ -302,7 +301,7 @@ Figure 2.

      -

      +
      @@ -323,7 +322,7 @@ Most common parent-child relations

      WRegions have very little control over their children as a parent. -The manager WRegion has much more control over its +The manager WRegion has much more control over its managed WRegions. Managers, for example, handle resize requests, focusing and displaying of the managed regions. Indeed the manager--managed relationship gives a better picture of the logical ordering of objects on @@ -341,7 +340,7 @@ but all have a parent-a screen if not anything else.

      -

      +
      Figure 2: Most common parent-child relations
      @@ -405,7 +404,7 @@ consideration:



      Footnotes

      -
      ... design... design1
      the author doesn't like such artificial designs diff --git a/doc/ionnotes/node3.html b/doc/ionnotes/node3.html index 0309e19..63c9852 100644 --- a/doc/ionnotes/node3.html +++ b/doc/ionnotes/node3.html @@ -64,20 +64,20 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      First, to get things clear, what are considered objects here are C -structures containing a properly initialized +structures containing a properly initialised structure defined in ioncore/obj.h as the first element (or the first element of the structure which is the first element and so on which gives rise to inheritance). The WObj structure contains a pointer -to a WObjDescr class type info structure and -a list of so called ''watches''. The WObjDescr structure simply +to a WObjDescr class type info structure and +a list of so called ``watches''. The WObjDescr structure simply lists the class name, a table of dynamic functions and a pointer to -deinitialisation function (or ''destructor''). +deinitialisation function (or ``destructor'').

      Ion does not do any reference counting, garbage collecting or other fancy things related to automatic safe freeing of objects with its simplistic object system. Instead special watches (the WWatch - structure) may be used to create safe references to + structure) may be used to create safe references to objects that might be destroyed during the time the specific pointer is needed. When an object is destroyed, its list of watches is processed, setting the pointers in the watches to NULL and the watch handlers for diff --git a/doc/ionnotes/node4.html b/doc/ionnotes/node4.html index 1ae2bf7..41c8521 100644 --- a/doc/ionnotes/node4.html +++ b/doc/ionnotes/node4.html @@ -126,11 +126,11 @@ C side of Ion and Lua:

      - + - + @@ -195,7 +195,7 @@ initialisation and deinitialisation code.

      You've seen the terms level 1 and 2 call handler mentioned above. - + The Lua support code uses two so called call handlers to convert and check the types of parameters passed from Lua to C and back to Lua. The first one of these call handlers is the same for all exported functions and @@ -230,10 +230,10 @@ supported by the generated L2 call handlers).

      The functions -extl_call, -extl_call_named, -extl_dofile and -extl_dostring +extl_call, +extl_call_named, +extl_dofile and +extl_dostring call a referenced function (ExtlFn), named function, execute a string and a file, respectively. The rest of the parameters for all these functions are similar. The 'spec' argument is a string of identifier @@ -249,7 +249,7 @@ passing succeeded or not.

      Sometimes it is necessary to block calls to all but a limited set of Ion functions. This can be accomplished with -extl_set_safelist. +extl_set_safelist. The parameter to this function is a NULL-terminated array of strings and the return value is a similar old safelist. The call extl_set_safelist(NULL) removes any safelist and allows @@ -263,7 +263,7 @@ calls to all exported functions.

      Configuration files should be read as before with the function -read_config_for +read_config_for except that the list of known options is no longer present.

      diff --git a/doc/ionnotes/node5.html b/doc/ionnotes/node5.html index d3aba2e..45b1c29 100644 --- a/doc/ionnotes/node5.html +++ b/doc/ionnotes/node5.html @@ -83,10 +83,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      To keep Ion's code as simple as possible yet safe, there are restrictions when the WObj -destroy_obj +destroy_obj function that calls watches, the deinit routine and frees memory may -be called directly. In all other cases the -defer_destroy +be called directly. In all other cases the mainloop_defer_destroy function should be used to defer the call of destroy_obj until Ioncore returns to its main event loop. @@ -103,8 +102,7 @@ following cases: when the function created a frame to manage some other object but for some reason failed to reparent the object to this frame. -

    17. In a deferred action handler set with - defer_action. +
    18. In a deferred action handler set with mainloop_defer_action. Like deferred destroys, other deferred actions are called when Ioncore has returned to the main loop.
    19. @@ -116,7 +114,7 @@ following cases:

      If there are no serious side effects from deferring destroying the object or you're unsure whether it is safe to destroy the object -immediately, use defer_destroy. +immediately, use mainloop_defer_destroy.

      @@ -145,7 +143,7 @@ parameters to functions.

      -
      Figure 3: Most common manager-managed relations
       
      tExtlTabExtlTab Reference to Lua table
      fExltFnExltFn Reference to Lua function.
      o
      char* The string is the caller's responsibility and it must free it when no longer needed.The called function may modify the string but the ''owner'' of +The called function may modify the string but the ``owner'' of the string is case-dependant.
      diff --git a/doc/ionnotes/node6.html b/doc/ionnotes/node6.html index 8c20249..61cff1a 100644 --- a/doc/ionnotes/node6.html +++ b/doc/ionnotes/node6.html @@ -78,7 +78,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds

      -If you want to submit patches to Ion, you MUST follow my coding +If you want to submit patches to Ion, you must follow my coding style, even if you think it is the root of all evil. We don't want the code to be an incomprehensible mess of styles and I have better things to do than fix other people's style to match mine. The style @@ -94,7 +94,7 @@ things to take note of.

        -
      • Indentations of 4 with tab size=4. +
      • Indentations of 4 with spaces.

      • diff --git a/doc/ionnotes/node8.html b/doc/ionnotes/node8.html index 6e12241..d14a7c0 100644 --- a/doc/ionnotes/node8.html +++ b/doc/ionnotes/node8.html @@ -58,77 +58,77 @@ original version by: Nikos Drakos, CBLU, University of Leeds Index
        call handler - : 3.2 -
        defer_action - : 4.1 -
        defer_destroy - : 4.1 + : 3.2
        destroy_obj - : 4.1 + : 4.1
        extl_call - : 3.3 + : 3.3
        extl_call_named - : 3.3 + : 3.3
        extl_dofile - : 3.3 + : 3.3
        extl_dostring - : 3.3 + : 3.3
        extl_set_safelist - : 3.3 + : 3.3
        ExtlFn - : 3.1 -
        ExtlTab : 3.1 +
        ExtlTab + : 3.1 +
        mainloop_defer_action + : 4.1 +
        mainloop_defer_destroy + : 4.1
        manager - : 1.2.1 + : 1.2.1
        Obj - : 1.1 + : 1.1
        parent - : 1.2.1 + : 1.2.1
        read_config_for - : 3.4 + : 3.4
        root window - : 1.1 + : 1.1
        screen
        -
        physical : 1.1 -
        X : 1.1 +
        physical : 1.1 +
        X : 1.1
        WClientWin - : 1.1 + : 1.1
        WEdln - : 1.1 + : 1.1
        WFrame - : 1.1 + : 1.1
        WGroup - : 1.1 + : 1.1
        WGroupCW - : 1.1 -
        WGroupWS : 1.1 +
        WGroupWS + : 1.1
        WInput - : 1.1 + : 1.1
        WMessage - : 1.1 + : 1.1
        WObj - : 2 + : 2
        WObjDescr - : 2 + : 2
        WRegion - : 1.1 + : 1.1
        WRootWin : 1.1
        WScreen - : 1.1 + : 1.1
        WSplit - : 1.1 -
        WTiling : 1.1 +
        WTiling + : 1.1
        WWatch - : 2 + : 2
        WWindow - : 1.1 + : 1.1
        Xinerama - : 1.1 + : 1.1
        diff --git a/doc/ionnotes/node9.html b/doc/ionnotes/node9.html index fd8126b..288d589 100644 --- a/doc/ionnotes/node9.html +++ b/doc/ionnotes/node9.html @@ -70,7 +70,7 @@ Mathematics Department, Macquarie University, Sydney. The command line arguments were:
        latex2html -show_section_numbers -short_index -local_icons -noaddress -up_url http://iki.fi/tuomov/ion/ -up_title 'Ion homepage' -nofootnode -split 4 ionnotes

        -The translation was initiated by tuomov on 2007-03-18 +The translation was initiated by tuomov on 2007-05-06


        diff --git a/doc/macros.tex b/doc/macros.tex index 0e172d3..134aeed 100644 --- a/doc/macros.tex +++ b/doc/macros.tex @@ -17,8 +17,7 @@ % URL settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\urlstyle{rm} -\newcommand{\centerurl}[1]{\begin{center}\url{#1}\end{center}} +\urlstyle{tt} % listings package %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -47,6 +46,7 @@ %begin{latexonly} \newcommand{\key}[1]{\mbox{\textbf{#1}}} \newcommand{\code}[1]{\lstinline!#1!} +\newcommand{\codestr}[1]{`\texttt{#1}'} \newcommand{\var}[1]{\lstinline!#1!} \newcommand{\command}[1]{\lstinline!#1!} @@ -60,6 +60,7 @@ \newcommand{\key}[1]{\textbf{#1}} \newcommand{\code}[1]{\texttt{#1}} +\newcommand{\codestr}[1]{`\texttt{#1}'} \newcommand{\var}[1]{\texttt{#1}} \newcommand{\command}[1]{\texttt{#1}} diff --git a/doc/miscref.tex b/doc/miscref.tex new file mode 100644 index 0000000..44b0818 --- /dev/null +++ b/doc/miscref.tex @@ -0,0 +1,44 @@ + +\subsection{Size policies} +\label{sec:sizepolicies} + +Some functions accept a \var{sizepolicy} parameter. The possible +values are: + +\begin{flushleft} +\codestr{default}, +\codestr{full}, +\codestr{full\_bounds}, +\codestr{free}, +\codestr{free\_glue}, +\codestr{northwest}, +\codestr{north}, +\codestr{northeast}, +\codestr{west}, +\codestr{center}, +\codestr{east}, +\codestr{southwest}, +\codestr{south}, +\codestr{southeast}, +\codestr{stretch\_top}, +\codestr{stretch\_bottom}, +\codestr{stretch\_left}, +\codestr{stretch\_right}, +\codestr{free\_glue\_northwest}, +\codestr{free\_glue\_north}, +\codestr{free\_glue\_northeast}, +\codestr{free\_glue\_west}, +\codestr{free\_glue\_center}, +\codestr{free\_glue\_east}, +\codestr{free\_glue\_southwest}, +\codestr{free\_glue\_south}, and +\codestr{free\_glue\_southeast}. +\end{flushleft} + +The ``free'' policies allow the managed +object to be moved around, whereas the other versions do not. +The ``glue'' policies glue the object to some border, while allowing +it to be moved away from it by user action, but not automatically. +The ``stretch'' policies stretch the object along the given border, +while the coordinate-based policies simply place the object along +that border. diff --git a/doc/objects.tex b/doc/objects.tex index 5a5b04f..b9de147 100644 --- a/doc/objects.tex +++ b/doc/objects.tex @@ -5,7 +5,7 @@ While Ion does not not have a truly object-oriented design \footnote{the author doesn't like such artificial designs}, things that appear on the computer screen are, however, quite -naturally expressed as such ''objects''. Therefore Ion implements +naturally expressed as such ``objects''. Therefore Ion implements a rather primitive OO system for these screen objects and some other things. @@ -21,7 +21,7 @@ basic relations. For simplicity we consider only the essential-for-basic-configuration Ioncore, \file{mod\_tiling} and \file{mod\_query} classes. -See Appendix \ref{app:fullhierarchy} for the full class hierachy visible +See Appendix \ref{app:fullhierarchy} for the full class hierarchy visible to Lua side. \subsection{Class hierarchy} @@ -73,7 +73,7 @@ The core classes: screen. Each object of type \type{WRegion} has a size and position relative to the parent \type{WRegion}. While a big part of Ion operates on these instead of more specialised classes, \type{WRegion} - is a ''virtual'' base class in that there are no objects of ''pure'' + is a ``virtual'' base class in that there are no objects of ``pure'' type \type{WRegion}; all concrete regions are objects of some class that inherits \type{WRegion}. @@ -85,27 +85,26 @@ The core classes: internal objects having an X window associated to them (\type{WClientWins} also have X windows associated to them). + \item[\type{WMPlex}] is a base class for all regions that ``multiplex'' + other regions. This means that of the regions managed by the multiplexer, + only one can be displayed at a time. + + \item[\type{WScreen}]\indextype{WScreen} is an instance of \type{WMPlex} + for screens. + \item[\type{WRootWin}]\indextype{WRootWin} is the class for root windows\index{root window} of X screens\index{screen!X}. - Note that an ''X screen'' or root window is not necessarily a - single physical screen\index{screen!physical} as a root window - may be split over multiple screens when hacks such as + It is an instance of \type{WScreen}. + Note that an ``X screen'' or root window is not necessarily a + single physical screen\index{screen!physical} as a root window + may be split over multiple screens when ugly hacks such as Xinerama\index{Xinerama} are used. (Actually there can be only - one root window when Xinerama is used.) + one root window when Xinerama is used.) - \item[\type{WMPlex}] is a base class for all regions that''multiplex'' - other regions. This means that of the regions managed by the multiplexer, - only one can be displayed at a time. Classes that inhereit \type{WMPlex} - include screens and frames. - - \item[\type{WScreen}]\indextype{WScreen} is the class for objects - corresponding to physical screens. Screens may share a root - window when the Xinerama extension is used as explained above. - \item[\type{WFrame}]\indextype{WFrame} is the class for frames. - While most Ion's objects have no graphical presentation, frames basically - add to \type{WMPlex}es the decorations around client windows - (borders, tabs). + While most Ion's objects have no graphical presentation, frames + basically add to \type{WMPlex}es the decorations around client + windows (borders, tabs). \item[\type{WGroup}]\indextype{WGroup} is the base class for groups. Particular types of groups are workspaces @@ -130,16 +129,16 @@ Classes implemented by the \file{mod\_query} module: \begin{description} \item[\type{WInput}]\indextype{WInput} is a virtual base class for the two classes below. - \item[\type{WEdln}]\indextype{WEdln} is the class for the ''queries'', + \item[\type{WEdln}]\indextype{WEdln} is the class for the ``queries'', the text inputs that usually appear at bottoms of frames and sometimes - screens. Queries are the functional equivalent of ''mini buffers'' in + screens. Queries are the functional equivalent of ``mini buffers'' in many text editors. \item[\type{WMessage}]\indextype{WMessage} implements the boxes for warning and other messages that Ion may wish to display to the user. These also usually appear at bottoms of frames. \end{description} -There are also some other ''proxy'' classes that do not refer +There are also some other ``proxy'' classes that do not refer to objects on the screen. The only important one of these for basic configuration is \type{WMoveresMode} that is used for binding callbacks in the move and resize mode. diff --git a/doc/objectsimpl.tex b/doc/objectsimpl.tex index ccc440d..a224aa5 100644 --- a/doc/objectsimpl.tex +++ b/doc/objectsimpl.tex @@ -1,14 +1,14 @@ \section{Object system implementation} First, to get things clear, what are considered objects here are C -structures containing a properly initialized \type\indextype{WObj} +structures containing a properly initialised \type\indextype{WObj} structure defined in \file{ioncore/obj.h} as the first element (or the first element of the structure which is the first element and so on which gives rise to inheritance). The \type{WObj} structure contains a pointer to a \type{WObjDescr}\indextype{WObjDescr} class type info structure and -a list of so called ''watches''. The \type{WObjDescr} structure simply +a list of so called ``watches''. The \type{WObjDescr} structure simply lists the class name, a table of dynamic functions and a pointer to -deinitialisation function (or ''destructor''). +deinitialisation function (or ``destructor''). Ion does not do any reference counting, garbage collecting or other fancy things related to automatic safe freeing of objects with its diff --git a/doc/prelim.tex b/doc/prelim.tex index c5db5f8..8a0a6c3 100644 --- a/doc/prelim.tex +++ b/doc/prelim.tex @@ -33,14 +33,11 @@ should be loaded. Currently Ion provides the following modules: keyboard-operated in-frame menus. \item[\file{mod\_statusbar}] Module that implements a statusbar that can be adaptively embedded in each workspace's layout. - \item[\file{mod\_dock}] Module for docking Window Maker dockapps. + \item[\file{mod\_dock}] Module for docking Window Maker dock-apps. The dock can both float and be embedded as the statusbar. \item[\file{mod\_sp}] This module implements a scratchpad frame that can be toggled on/off everywhere. Think of the 'console' in some first-person shooters. - \item[\file{mod\_mgmtmode}] Support module for implementing ''management - modes'' with a XOR-frame similar to move/resize mode around selected - region. \item[\file{mod\_sm}] Session management support module. \emph{Loaded automatically when needed!} \end{description} @@ -48,10 +45,10 @@ should be loaded. Currently Ion provides the following modules: So-called drawing engines are also implemented as a modules, but they are not discussed here; see chapter \ref{chap:gr}. -The stock configuration for the 'ion3' executable loads all of the modules -mentioned above except \file{mod\_dock} and file{mod\_mgmtmode}. -The stock configuration for the 'pwm3' executable (which differs from the -'ion3' executable in a few configuration details, such as Xinerama usage) +The stock configuration for the \file{ion3} executable loads all of the +modules mentioned above except \file{mod\_dock}. +The stock configuration for the \file{pwm3} executable (which differs +from the \file{ion3} executable in a few configuration details) loads another set of modules. diff --git a/doc/statusd.tex b/doc/statusd.tex index e1fe6b2..82e70eb 100644 --- a/doc/statusd.tex +++ b/doc/statusd.tex @@ -1,14 +1,15 @@ \section{Writing \command{ion-statusd} monitors} +\label{sec:statusd} All statusbar meters that do not monitor the internal state of Ion should go in the separate \command{ion-statusd} program. -Whenever the user requests a meter \code{\%foo} or \code{\%foo_bar} to be -inserted in a statusbar, \file{mod\_statusbar} asks \command{ion-statusd} to -load \fnref{statusd_foo.lua} on its search path (same as that for Ion-side +Whenever the user requests a meter \codestr{\%foo} or \codestr{\%foo\_bar} to +be inserted in a statusbar, \file{mod\_statusbar} asks \command{ion-statusd} +to load \fnref{statusd_foo.lua} on its search path (same as that for Ion-side scripts). This script should then supply all meters with the initial part -'\code{foo}'. +\codestr{foo}. To provide this value, the script should simply call \code{statusd.inform} with the name of the meter and the value as a string. @@ -16,11 +17,11 @@ Additionally the script should provide a 'template' for the meter to facilitate expected width calculation by \file{mod\_statusbar}, and may provide a 'hint' for colour-coding the value. The interpretation of hints depends on the graphical style in use, and currently the -stock styles support the \code{normal}, \code{important} and -\code{critical} hints. +stock styles support the \codestr{normal}, \codestr{important} and +\codestr{critical} hints. -In our example of the 'foo monitor', at script init we might broadcast +In our example of the 'foo monitor', at script initialisation we might broadcast the template as follows: \begin{verbatim} diff --git a/doc/tricks.tex b/doc/tricks.tex index 69fe945..9cf86d1 100644 --- a/doc/tricks.tex +++ b/doc/tricks.tex @@ -4,20 +4,20 @@ This chapter documents some additional features of the Ion configuration and scripting interface that can be used for more advanced scripting than -the basic configuration exlained in chapter \ref{chap:config}. +the basic configuration explained in chapter \ref{chap:config}. \section{Hooks} \label{sec:hooks} Hooks are lists of functions to be called when a certain event occurs. -There are two types of them; normal and ''alternative'' hooks. Normal +There are two types of them; normal and ``alternative'' hooks. Normal hooks do not return anything, but alt-hooks should return a boolean -indicating whether it handled its assigned task succesfully. In the case +indicating whether it handled its assigned task successfully. In the case that \var{true} is returned, remaining handlers are not called. Hook handlers are registered by first finding the hook with \fnref{ioncore.get_hook} and then calling \fnref{WHook.add} -on the (succesfull) result with the handler as parameter. Similarly +on the (successful) result with the handler as parameter. Similarly handlers are unregistered with \fnref{WHook.remove}. For example: \begin{verbatim} @@ -31,7 +31,7 @@ handlers do. The types of parameters for each hook are listed in the hook reference, section \ref{sec:hookref}. -Note that many of the hooks are called in ''protected mode'' and can not +Note that many of the hooks are called in ``protected mode'' and can not use any functions that modify Ion's internal state. TODO: More detailed documentation when this is final. @@ -39,7 +39,7 @@ documentation when this is final. \subsection{Direct object references} -All Ion objects are passed to Lua scriptss as 'userdatas', and you may +All Ion objects are passed to Lua scripts as 'userdatas', and you may safely store such object references for future use. The C-side object may be destroyed while Lua still refers to the object. All exported functions gracefully fail in such a case, but if you need to explicitly diff --git a/etc/Makefile b/etc/Makefile index 6a940a1..16aa8f4 100644 --- a/etc/Makefile +++ b/etc/Makefile @@ -14,10 +14,8 @@ ETC = cfg_ion.lua cfg_ioncore.lua cfg_kludges.lua cfg_defaults.lua \ look_brownsteel.lua look_clean.lua look_dusky.lua \ look_greyviolet.lua look_ios.lua look_cleanviolet.lua \ look_simpleblue.lua look_cleanios.lua look_newviolet.lua \ - lookcommon_clean.lua lookcommon_clean_stdisp.lua \ - lookcommon_clean_tab.lua lookcommon_clean_frame.lua \ - lookcommon_emboss.lua lookcommon_emboss_stdisp.lua \ - lookcommon_emboss_tab.lua lookcommon_emboss_frame.lua + look_greenlight.lua \ + lookcommon_clean.lua lookcommon_emboss.lua ###################################### diff --git a/etc/cfg_ion.lua b/etc/cfg_ion.lua index d1255e5..790cc46 100644 --- a/etc/cfg_ion.lua +++ b/etc/cfg_ion.lua @@ -58,3 +58,19 @@ dopath("cfg_defaults") --dopath("mod_dock") --dopath("mod_sp") + +-- +-- Common customisations +-- + +-- Uncommenting the following lines should get you plain-old-menus instead +-- of query-menus. + +--defbindings("WScreen", { +-- kpress(ALTMETA.."F12", "mod_menu.menu(_, _sub, 'mainmenu', {big=true})"), +--}) +-- +--defbindings("WMPlex.toplevel", { +-- kpress(META.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"), +--}) + diff --git a/etc/cfg_ioncore.lua b/etc/cfg_ioncore.lua index 4cfe2a3..be393c9 100644 --- a/etc/cfg_ioncore.lua +++ b/etc/cfg_ioncore.lua @@ -179,8 +179,8 @@ defbindings("WMPlex.toplevel", { kpress(META.."G", "mod_query.query_gotoclient(_)"), bdoc("Display context menu."), - --kpress(META.."M", "mod_menu.menu(_, _chld, 'ctxmenu')"), - kpress(META.."M", "mod_query.query_menu(_, _chld, 'ctxmenu', 'Context menu:')"), + --kpress(META.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"), + kpress(META.."M", "mod_query.query_menu(_, _sub, 'ctxmenu', 'Context menu:')"), }) @@ -197,7 +197,7 @@ defbindings("WFrame", { }), bdoc("Display context menu."), - mpress("Button3", "mod_menu.pmenu(_, _chld, 'ctxmenu')"), + mpress("Button3", "mod_menu.pmenu(_, _sub, 'ctxmenu')"), bdoc("Begin move/resize mode."), kpress(META.."R", "WFrame.begin_kbresize(_)"), @@ -222,13 +222,13 @@ defbindings("WFrame", { -- Frames for transient windows ignore this bindmap defbindings("WFrame.toplevel", { - bdoc("Tag current object within the frame."), - kpress(META.."T", "WRegion.set_tagged(_sub, 'toggle')", "_sub:non-nil"), - bdoc("Query for a client window to attach."), kpress(META.."A", "mod_query.query_attachclient(_)"), submap(META.."K", { + -- Display tab numbers when modifiers are released + submap_wait("ioncore.tabnum.show(_)"), + bdoc("Switch to n:th object within the frame."), kpress("1", "WFrame.switch_nth(_, 0)"), kpress("2", "WFrame.switch_nth(_, 1)"), diff --git a/etc/cfg_kludges.lua b/etc/cfg_kludges.lua index 974ac08..ce0f39c 100644 --- a/etc/cfg_kludges.lua +++ b/etc/cfg_kludges.lua @@ -9,13 +9,6 @@ defwinprop{ acrobatic = true } --- Galeon's find dialog does not always have its transient_for hint --- set when the window is being mapped. -defwinprop{ - class = "galeon_browser", - instance = "dialog_find", - transient_mode = "current", -} defwinprop{ class = "Xpdf", @@ -24,6 +17,16 @@ defwinprop{ } +-- Put all dockapps in the statusbar's systray, also adding the missing +-- size hints necessary for this to work. +defwinprop{ + is_dockapp = true, + statusbar = "systray", + max_size = { w = 64, h = 64}, + min_size = { w = 64, h = 64}, +} + + -- You might want to enable these if you really must use XMMS. --[[ defwinprop{ diff --git a/etc/look_brownsteel.lua b/etc/look_brownsteel.lua index 5aa488e..68346d4 100644 --- a/etc/look_brownsteel.lua +++ b/etc/look_brownsteel.lua @@ -17,20 +17,7 @@ de.defstyle("*", { text_align = "center", }) -de.defstyle("frame", { - based_on = "*", - shadow_colour = "#404040", - highlight_colour = "#707070", - padding_colour = "#505050", - background_colour = "#000000", - foreground_colour = "#ffffff", - padding_pixels = 1, - highlight_pixels = 1, - shadow_pixels = 1, -}) - de.defstyle("tab", { - based_on = "*", font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*", de.substyle("active-selected", { shadow_colour = "#304050", @@ -59,9 +46,7 @@ de.defstyle("tab", { text_align = "center", }) - de.defstyle("input", { - based_on = "*", shadow_colour = "#404040", highlight_colour = "#707070", background_colour = "#000000", @@ -81,7 +66,6 @@ de.defstyle("input", { }) de.defstyle("input-menu", { - based_on = "*", de.substyle("active", { shadow_colour = "#304050", highlight_colour = "#708090", diff --git a/etc/look_clean.lua b/etc/look_clean.lua index a95cbf3..033655f 100644 --- a/etc/look_clean.lua +++ b/etc/look_clean.lua @@ -18,7 +18,6 @@ de.defstyle("*", { }) de.defstyle("tab", { - based_on = "*", font = "-misc-fixed-medium-r-*-*-13-*-*-*-*-60-*-*", de.substyle("active-selected", { shadow_colour = "white", @@ -48,15 +47,7 @@ de.defstyle("tab", { }) de.defstyle("input", { - based_on = "*", - shadow_colour = "grey", - highlight_colour = "grey", - background_colour = "#545d75", foreground_colour = "white", - padding_pixels = 1, - highlight_pixels = 1, - shadow_pixels = 1, - border_style = "elevated", de.substyle("*-cursor", { background_colour = "white", foreground_colour = "#545d75", @@ -71,8 +62,8 @@ de.defstyle("input", { dopath("lookcommon_clean") de.defstyle("tab-menuentry-big", { - based_on = "tab-menuentry", padding_pixels = 7, + font = "-misc-fixed-medium-r-*-*-18-*-*-*-*-*-*-*", }) gr.refresh() diff --git a/etc/look_cleanios.lua b/etc/look_cleanios.lua index 8af1548..e1173b7 100644 --- a/etc/look_cleanios.lua +++ b/etc/look_cleanios.lua @@ -19,7 +19,6 @@ de.defstyle("*", { }) de.defstyle("tab", { - based_on = "*", font = "-*-helvetica-bold-r-normal-*-10-*-*-*-*-*-*-*", de.substyle("active-selected", { shadow_colour = "#f0f066", @@ -49,7 +48,6 @@ de.defstyle("tab", { }) de.defstyle("input-edln", { - based_on = "*", de.substyle("*-cursor", { background_colour = "#000000", foreground_colour = "#d8d8d8", diff --git a/etc/look_cleanviolet.lua b/etc/look_cleanviolet.lua index d52efac..542fb7e 100644 --- a/etc/look_cleanviolet.lua +++ b/etc/look_cleanviolet.lua @@ -30,7 +30,6 @@ de.defstyle("*", { de.defstyle("tab", { - based_on = "*", font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*", de.substyle("active-selected", { @@ -52,7 +51,6 @@ de.defstyle("tab", { de.defstyle("input", { - based_on = "*", text_align = "left", spacing = 1, -- Greyish violet background diff --git a/etc/look_dusky.lua b/etc/look_dusky.lua index 4387e9d..aaa76f6 100644 --- a/etc/look_dusky.lua +++ b/etc/look_dusky.lua @@ -17,20 +17,7 @@ de.defstyle("*", { text_align = "center", }) -de.defstyle("frame", { - based_on = "*", - shadow_colour = "#404040", - highlight_colour = "#707070", - padding_colour = "#505050", - background_colour = "#000000", - foreground_colour = "#ffffff", - padding_pixels = 2, - highlight_pixels = 1, - shadow_pixels = 1, -}) - de.defstyle("tab", { - based_on = "*", font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*", de.substyle("active-selected", { shadow_colour = "#452727", @@ -60,7 +47,6 @@ de.defstyle("tab", { }) de.defstyle("input", { - based_on = "*", shadow_colour = "#404040", highlight_colour = "#707070", background_colour = "#000000", @@ -77,7 +63,6 @@ de.defstyle("input", { }) de.defstyle("input-menu", { - based_on = "*", de.substyle("active", { shadow_colour = "#452727", highlight_colour = "#866868", diff --git a/etc/look_greenlight.lua b/etc/look_greenlight.lua new file mode 100644 index 0000000..d797b74 --- /dev/null +++ b/etc/look_greenlight.lua @@ -0,0 +1,73 @@ +-- +-- look_greenlight for Ion's default drawing engine. +-- + +if not gr.select_engine("de") then + return +end + +-- Clear existing styles from memory. +de.reset() + +-- Base style +de.defstyle("*", { + highlight_colour = "#666666", + shadow_colour = "#666666", + background_colour = "#333333", + foreground_colour = "#cccccc", + + shadow_pixels = 1, + highlight_pixels = 1, + padding_pixels = 1, + spacing = 0, + border_style = "elevated", + border_sides = "tb", + + font = "-*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-*", + text_align = "center", +}) + + +de.defstyle("frame", { + background_colour = "#000000", + transparent_background = false, +}) + + +de.defstyle("tab", { + font = "-*-helvetica-medium-r-normal-*-10-*-*-*-*-*-*-*", + spacing = 1, + + de.substyle("active-selected", { + highlight_colour = "#8ac267", + shadow_colour = "#8ac267", + background_colour = "#354743", + }), + + de.substyle("inactive-selected", { + highlight_colour = "#6aa247", + shadow_colour = "#6aa247", + }), +}) + + +de.defstyle("input", { + text_align = "left", + spacing = 1, + + de.substyle("*-selection", { + background_colour = "#354743", + }), + + de.substyle("*-cursor", { + background_colour = "#8ac267", + foreground_colour = "#333333", + }), +}) + + +dopath("lookcommon_clean") + + +-- Refresh objects' brushes. +gr.refresh() diff --git a/etc/look_greyviolet.lua b/etc/look_greyviolet.lua index 43dafee..38bdd63 100644 --- a/etc/look_greyviolet.lua +++ b/etc/look_greyviolet.lua @@ -17,20 +17,7 @@ de.defstyle("*", { text_align = "center", }) -de.defstyle("frame", { - based_on = "*", - shadow_colour = "#777777", - highlight_colour = "#eeeeee", - padding_colour = "#aaaaaa", - background_colour = "#000000", - foreground_colour = "#ffffff", - padding_pixels = 2, - highlight_pixels = 1, - shadow_pixels = 1, -}) - de.defstyle("tab", { - based_on = "*", font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*", de.substyle("active-selected", { shadow_colour = "#333366", @@ -60,21 +47,12 @@ de.defstyle("tab", { }) de.defstyle("input", { - based_on = "*", - shadow_colour = "#777777", - highlight_colour = "#eeeeee", - background_colour = "#aaaaaa", - foreground_colour = "#000000", - padding_pixels = 1, - highlight_pixels = 1, - shadow_pixels = 1, - border_style = "elevated", de.substyle("*-cursor", { background_colour = "#000000", foreground_colour = "#aaaaaa", }), de.substyle("*-selection", { - background_colour = "#aaaaaa", + background_colour = "#666699", foreground_colour = "black", }), }) diff --git a/etc/look_ios.lua b/etc/look_ios.lua index 85afceb..8427773 100644 --- a/etc/look_ios.lua +++ b/etc/look_ios.lua @@ -17,26 +17,7 @@ de.defstyle("*", { text_align = "center", }) -de.defstyle("frame", { - based_on = "*", - shadow_colour = "#606060", - highlight_colour = "#ffffff", - padding_colour = "#d8d8d8", - background_colour = "#000000", - foreground_colour = "#000000", - padding_pixels = 2, - highlight_pixels = 1, - shadow_pixels = 1, - de.substyle("active", { - shadow_colour = "#606060", - highlight_colour = "#ffffff", - background_colour = "#d8d8d8", - foreground_colour = "#000000", - }), -}) - de.defstyle("tab", { - based_on = "*", font = "-*-helvetica-bold-r-normal-*-10-*-*-*-*-*-*-*", de.substyle("active-selected", { shadow_colour = "#f09000", @@ -66,15 +47,6 @@ de.defstyle("tab", { }) de.defstyle("input", { - based_on = "*", - shadow_colour = "#606060", - highlight_colour = "#ffffff", - background_colour = "#d8d8d8", - foreground_colour = "#000000", - padding_pixels = 1, - highlight_pixels = 1, - shadow_pixels = 1, - border_style = "elevated", de.substyle("*-cursor", { background_colour = "#000000", foreground_colour = "#d8d8d8", @@ -87,5 +59,17 @@ de.defstyle("input", { dopath("lookcommon_emboss") +de.defstyle("frame-tiled", { + spacing = 0, +}) + +de.defstyle("frame-tiled-alt", { + spacing = 0, +}) + +de.defstyle("tab-frame-tiled", { + spacing = 0, +}) + gr.refresh() diff --git a/etc/look_newviolet.lua b/etc/look_newviolet.lua index 76e2d5a..5647d5e 100644 --- a/etc/look_newviolet.lua +++ b/etc/look_newviolet.lua @@ -28,7 +28,6 @@ de.defstyle("*", { de.defstyle("tab", { - based_on = "*", font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*", de.substyle("active-selected", { @@ -48,7 +47,6 @@ de.defstyle("tab", { de.defstyle("input", { - based_on = "*", text_align = "left", highlight_colour = "#eeeeff", shadow_colour = "#eeeeff", @@ -66,7 +64,6 @@ de.defstyle("input", { de.defstyle("input-menu", { - based_on = "input", highlight_pixels = 0, shadow_pixels = 0, padding_pixels = 0, @@ -74,40 +71,20 @@ de.defstyle("input-menu", { de.defstyle("frame", { - based_on = "*", - background_colour = "#000000", - transparent_background = false, shadow_pixels = 1, highlight_pixels = 1, padding_pixels = 0, border_sides = "all", - de.substyle("quasiactive", { - -- Something detached from the frame is active - padding_colour = "#901010", - }), }) -de.defstyle("frame-tiled", { - based_on = "frame", - shadow_pixels = 0, - highlight_pixels = 0, - padding_pixels = 1, -}) - -de.defstyle("frame-tiled-alt", { - based_on = "frame-tiled", +de.defstyle("frame-transient", { bar = "none", + padding_pixels = 1, }) -de.defstyle("frame-floating", { - based_on = "frame", - bar = "shaped", - padding_pixels = 0, -}) +dopath("lookcommon_clean") -dopath("lookcommon_clean_stdisp") -dopath("lookcommon_clean_tab") -- Refresh objects' brushes. gr.refresh() diff --git a/etc/look_simpleblue.lua b/etc/look_simpleblue.lua index 1bce224..3b1cb6a 100644 --- a/etc/look_simpleblue.lua +++ b/etc/look_simpleblue.lua @@ -18,7 +18,6 @@ de.defstyle("*", { }) de.defstyle("frame", { - based_on = "*", shadow_colour = "black", highlight_colour = "black", padding_colour = "black", @@ -36,7 +35,6 @@ de.defstyle("frame", { }) de.defstyle("tab", { - based_on = "*", font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*", de.substyle("active-selected", { shadow_colour = "black", @@ -66,7 +64,6 @@ de.defstyle("tab", { }) de.defstyle("input", { - based_on = "*", shadow_colour = "black", highlight_colour = "black", background_colour = "#3f3f3f", @@ -86,7 +83,6 @@ de.defstyle("input", { }) de.defstyle("input-menu", { - based_on = "input", padding_pixels=0, }) diff --git a/etc/lookcommon_clean.lua b/etc/lookcommon_clean.lua index 43399d9..49bf70a 100644 --- a/etc/lookcommon_clean.lua +++ b/etc/lookcommon_clean.lua @@ -1,5 +1,93 @@ --- Settings common to the "clean" styles. +-- Common settings for the "clean" styles -dopath("lookcommon_clean_stdisp") -dopath("lookcommon_clean_tab") -dopath("lookcommon_clean_frame") +de.defstyle("frame", { + background_colour = "#000000", + de.substyle("quasiactive", { + -- Something detached from the frame is active + padding_colour = "#901010", + }), + de.substyle("userattr1", { + -- For user scripts + padding_colour = "#009010", + }), +}) + +de.defstyle("frame-tiled", { + shadow_pixels = 0, + highlight_pixels = 0, + padding_pixels = 1, + spacing = 1, +}) + +de.defstyle("frame-tiled-alt", { + bar = "none", +}) + +de.defstyle("frame-floating", { + bar = "shaped", + padding_pixels = 0, +}) + + +de.defstyle("actnotify", { + shadow_colour = "#c04040", + highlight_colour = "#c04040", + background_colour = "#901010", + foreground_colour = "#eeeeee", +}) + +de.defstyle("tab", { + de.substyle("*-*-*-unselected-activity", { + shadow_colour = "#c04040", + highlight_colour = "#c04040", + background_colour = "#901010", + foreground_colour = "#eeeeee", + }), + + de.substyle("*-*-*-selected-activity", { + shadow_colour = "#c04040", + highlight_colour = "#c04040", + background_colour = "#b03030", + foreground_colour = "#ffffff", + }), + + de.substyle("*-*-*-tabnumber", { + background_colour = "black", + foreground_colour = "green", + }), +}) + +de.defstyle("tab-frame", { + spacing = 1, +}) + +de.defstyle("tab-frame-floating", { + spacing = 0, +}) + +de.defstyle("tab-menuentry", { + text_align = "left", +}) + +de.defstyle("tab-menuentry-big", { + font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*", + padding_pixels = 7, +}) + + +de.defstyle("stdisp", { + shadow_pixels = 0, + highlight_pixels = 0, + text_align = "left", + background_colour = "#000000", + foreground_colour = "grey", + font="-misc-fixed-medium-r-*-*-13-*-*-*-*-60-*-*", + + de.substyle("important", { + foreground_colour = "green", + }), + + de.substyle("critical", { + foreground_colour = "red", + }), +}) diff --git a/etc/lookcommon_clean_frame.lua b/etc/lookcommon_clean_frame.lua deleted file mode 100644 index b118558..0000000 --- a/etc/lookcommon_clean_frame.lua +++ /dev/null @@ -1,30 +0,0 @@ --- Common frame settings for the "clean" styles - -de.defstyle("frame", { - based_on = "*", - background_colour = "#000000", - transparent_background = false, - de.substyle("quasiactive", { - -- Something detached from the frame is active - padding_colour = "#901010", - }), -}) - -de.defstyle("frame-tiled", { - based_on = "frame", - shadow_pixels = 0, - highlight_pixels = 0, - padding_pixels = 1, - spacing = 1, -}) - -de.defstyle("frame-tiled-alt", { - based_on = "frame-tiled", - bar = "none", -}) - -de.defstyle("frame-floating", { - based_on = "frame", - bar = "shaped", - padding_pixels = 0, -}) diff --git a/etc/lookcommon_clean_stdisp.lua b/etc/lookcommon_clean_stdisp.lua deleted file mode 100644 index 73abd0d..0000000 --- a/etc/lookcommon_clean_stdisp.lua +++ /dev/null @@ -1,19 +0,0 @@ --- Common stdisp configuration for the "clean styles" - -de.defstyle("stdisp", { - based_on = "*", - shadow_pixels = 0, - highlight_pixels = 0, - text_align = "left", - background_colour = "#000000", - foreground_colour = "grey", - font="-misc-fixed-medium-r-*-*-13-*-*-*-*-60-*-*", - - de.substyle("important", { - foreground_colour = "green", - }), - - de.substyle("critical", { - foreground_colour = "red", - }), -}) diff --git a/etc/lookcommon_clean_tab.lua b/etc/lookcommon_clean_tab.lua deleted file mode 100644 index e6a619d..0000000 --- a/etc/lookcommon_clean_tab.lua +++ /dev/null @@ -1,60 +0,0 @@ --- Common tab configuration (mostly activity stuff) for the "clean styles" - -de.defstyle("actnotify", { - based_on = "*", - shadow_colour = "#c04040", - highlight_colour = "#c04040", - background_colour = "#901010", - foreground_colour = "#eeeeee", -}) - -de.defstyle("tab-frame", { - based_on = "tab", - -- TODO: some kind of amend option. It should not be necessary to - -- duplicate this definition for both tab-frame and tab-menuentry, - -- or for each style, nor use more complex hacks to communicate - -- this stuff otherwise. - de.substyle("*-*-*-unselected-activity", { - shadow_colour = "#c04040", - highlight_colour = "#c04040", - background_colour = "#901010", - foreground_colour = "#eeeeee", - }), - - de.substyle("*-*-*-selected-activity", { - shadow_colour = "#c04040", - highlight_colour = "#c04040", - background_colour = "#b03030", - foreground_colour = "#ffffff", - }), -}) - -de.defstyle("tab-frame-tiled", { - based_on = "tab-frame", - spacing = 1, -}) - -de.defstyle("tab-menuentry", { - based_on = "tab", - text_align = "left", - - de.substyle("*-*-*-unselected-activity", { - shadow_colour = "#c04040", - highlight_colour = "#c04040", - background_colour = "#901010", - foreground_colour = "#eeeeee", - }), - - de.substyle("*-*-*-selected-activity", { - shadow_colour = "#c04040", - highlight_colour = "#c04040", - background_colour = "#b03030", - foreground_colour = "#ffffff", - }), -}) - -de.defstyle("tab-menuentry-big", { - based_on = "tab-menuentry", - font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*", - padding_pixels = 7, -}) diff --git a/etc/lookcommon_emboss.lua b/etc/lookcommon_emboss.lua index b32289a..b15de6a 100644 --- a/etc/lookcommon_emboss.lua +++ b/etc/lookcommon_emboss.lua @@ -1,5 +1,107 @@ --- Settings common to "emboss" styles. +-- Common settings for the "emboss" styles -dopath("lookcommon_emboss_stdisp") -dopath("lookcommon_emboss_tab") -dopath("lookcommon_emboss_frame") +de.defstyle("frame", { + background_colour = "#000000", + -- The special "inherit" value causes setting 'background_colour' + -- above not to set padding_colour, but this colour being inherited. + padding_colour = "inherit", + de.substyle("quasiactive", { + -- Something detached from the frame is active + padding_colour = "#901010", + }), + de.substyle("userattr1", { + -- For user scripts + padding_colour = "#009010", + }), + border_style = "ridge", + padding_pixels = 2, + highlight_pixels = 1, + shadow_pixels = 1, + spacing = 1, +}) + +de.defstyle("frame-tiled", { + border_style = "inlaid", + padding_pixels = 1, +}) + +de.defstyle("frame-tiled-alt", { + bar = "none", +}) + +de.defstyle("frame-floating", { + bar = "shaped", + spacing = 0, +}) + +de.defstyle("frame-transient", { + bar = "none", + spacing = 0, +}) + +de.defstyle("actnotify", { + shadow_colour = "#600808", + highlight_colour = "#c04040", + background_colour = "#b03030", + foreground_colour = "#ffffff", +}) + +de.defstyle("tab", { + de.substyle("*-*-*-unselected-activity", { + shadow_colour = "#600808", + highlight_colour = "#c04040", + background_colour = "#901010", + foreground_colour = "#eeeeee", + }), + + de.substyle("*-*-*-selected-activity", { + shadow_colour = "#600808", + highlight_colour = "#c04040", + background_colour = "#b03030", + foreground_colour = "#ffffff", + }), + + de.substyle("*-*-*-tabnumber", { + background_colour = "black", + foreground_colour = "green", + }), +}) + + +de.defstyle("tab-frame", { + spacing = 1, +}) + +de.defstyle("tab-frame-floating", { + spacing = 0, +}) + +de.defstyle("tab-frame-transient", { + spacing = 0, +}) + +de.defstyle("tab-menuentry", { + text_align = "left", + highlight_pixels = 0, + shadow_pixels = 0, +}) + +de.defstyle("tab-menuentry-big", { + font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*", + padding_pixels = 7, +}) + + +de.defstyle("stdisp", { + shadow_pixels = 0, + highlight_pixels = 0, + text_align = "left", + + de.substyle("important", { + foreground_colour = "green", + }), + + de.substyle("critical", { + foreground_colour = "red", + }), +}) diff --git a/etc/lookcommon_emboss_frame.lua b/etc/lookcommon_emboss_frame.lua deleted file mode 100644 index 41e1e95..0000000 --- a/etc/lookcommon_emboss_frame.lua +++ /dev/null @@ -1,17 +0,0 @@ -de.defstyle("frame-tiled", { - based_on = "frame", - border_style = "inlaid", - padding_pixels = 1, - spacing = 1, -}) - -de.defstyle("frame-floating", { - based_on = "frame", - border_style = "ridge", - bar = "shaped" -}) - -de.defstyle("frame-tiled-alt", { - based_on = "frame-tiled", - bar = "none", -}) diff --git a/etc/lookcommon_emboss_stdisp.lua b/etc/lookcommon_emboss_stdisp.lua deleted file mode 100644 index b6a0ed2..0000000 --- a/etc/lookcommon_emboss_stdisp.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Common stdisp settings for the "emboss" styles - -de.defstyle("stdisp", { - based_on = "*", - shadow_pixels = 0, - highlight_pixels = 0, - text_align = "left", - - de.substyle("important", { - foreground_colour = "green", - }), - - de.substyle("critical", { - foreground_colour = "red", - }), -}) diff --git a/etc/lookcommon_emboss_tab.lua b/etc/lookcommon_emboss_tab.lua deleted file mode 100644 index 614ba82..0000000 --- a/etc/lookcommon_emboss_tab.lua +++ /dev/null @@ -1,62 +0,0 @@ --- Common tab settings for the "emboss" styles - -de.defstyle("actnotify", { - based_on = "*", - shadow_colour = "#600808", - highlight_colour = "#c04040", - background_colour = "#b03030", - foreground_colour = "#ffffff", -}) - -de.defstyle("tab-frame", { - based_on = "tab", - -- TODO: some kind of amend option. It should not be necessary to - -- duplicate this definition for both tab-frame and tab-menuentry, - -- or for each style, nor use more complex hacks to communicate - -- this stuff otherwise. - de.substyle("*-*-*-unselected-activity", { - shadow_colour = "#600808", - highlight_colour = "#c04040", - background_colour = "#901010", - foreground_colour = "#eeeeee", - }), - - de.substyle("*-*-*-selected-activity", { - shadow_colour = "#600808", - highlight_colour = "#c04040", - background_colour = "#b03030", - foreground_colour = "#ffffff", - }), -}) - -de.defstyle("tab-frame-tiled", { - based_on = "tab-frame", - spacing = 1, -}) - -de.defstyle("tab-menuentry", { - based_on = "tab", - text_align = "left", - highlight_pixels = 0, - shadow_pixels = 0, - - de.substyle("*-*-*-unselected-activity", { - shadow_colour = "#600808", - highlight_colour = "#c04040", - background_colour = "#901010", - foreground_colour = "#eeeeee", - }), - - de.substyle("*-*-*-selected-activity", { - shadow_colour = "#600808", - highlight_colour = "#c04040", - background_colour = "#b03030", - foreground_colour = "#ffffff", - }), -}) - -de.defstyle("tab-menuentry-big", { - based_on = "tab-menuentry", - font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*", - padding_pixels = 7, -}) diff --git a/exact-version b/exact-version index 05c81ed..09adb20 100644 --- a/exact-version +++ b/exact-version @@ -1,5 +1,5 @@ Context: -[TAG ion-3ds-20070318 -Tuomo Valkonen **20070318203122] +[TAG ion-3rc-20070506 +Tuomo Valkonen **20070506144318] diff --git a/ion/ion.c b/ion/ion.c index 7c53d31..9dc0c93 100644 --- a/ion/ion.c +++ b/ion/ion.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/Makefile b/ioncore/Makefile index ae41fa5..ccf7c36 100644 --- a/ioncore/Makefile +++ b/ioncore/Makefile @@ -29,7 +29,7 @@ SOURCES=binding.c conf-bindings.c cursor.c event.c exec.c focus.c \ LUA_SOURCES=\ ioncore_ext.lua ioncore_luaext.lua ioncore_bindings.lua \ ioncore_winprops.lua ioncore_misc.lua ioncore_efbb.lua \ - ioncore_wd.lua ioncore_menudb.lua + ioncore_wd.lua ioncore_menudb.lua ioncore_tabnum.lua ifeq ($(PRELOAD_MODULES),1) CFLAGS += -DCF_PRELOAD_MODULES diff --git a/ioncore/activity.c b/ioncore/activity.c index 60c0519..25e2a5a 100644 --- a/ioncore/activity.c +++ b/ioncore/activity.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -96,8 +93,8 @@ bool region_set_activity(WRegion *reg, int sp) /*EXTL_DOC - * Set activity flag of \var{reg}. The \var{how} parameter most be - * one of (set/unset/toggle). + * Set activity flag of \var{reg}. The \var{how} parameter must be + * one of \codestr{set}, \codestr{unset} or \codestr{toggle}. */ EXTL_EXPORT_AS(WRegion, set_activity) bool region_set_activity_extl(WRegion *reg, const char *how) @@ -137,7 +134,7 @@ bool ioncore_activity_i(ExtlFn iterfn) /*EXTL_DOC - * Return first regio non activity list. + * Returns first region on activity list. */ EXTL_SAFE EXTL_EXPORT diff --git a/ioncore/activity.h b/ioncore/activity.h index a718f7c..5197786 100644 --- a/ioncore/activity.h +++ b/ioncore/activity.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_ACTIVITY_H diff --git a/ioncore/attach.c b/ioncore/attach.c index a1dc7ad..5d81222 100644 --- a/ioncore/attach.c +++ b/ioncore/attach.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/attach.h b/ioncore/attach.h index c4a2d96..ec518ae 100644 --- a/ioncore/attach.h +++ b/ioncore/attach.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_ATTACH_H diff --git a/ioncore/basicpholder.c b/ioncore/basicpholder.c index d5c85a4..77e863d 100644 --- a/ioncore/basicpholder.c +++ b/ioncore/basicpholder.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/basicpholder.h b/ioncore/basicpholder.h index 6b0df42..780c793 100644 --- a/ioncore/basicpholder.h +++ b/ioncore/basicpholder.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_BASICPHOLDER_H diff --git a/ioncore/binding.c b/ioncore/binding.c index 7b80d11..740e67b 100644 --- a/ioncore/binding.c +++ b/ioncore/binding.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -486,6 +483,11 @@ static WBinding *do_bindmap_lookup_binding(WBindmap *bindmap, binding=search_binding(bindmap, &tmp); + if(BINDING_IS_PSEUDO(act)){ + /* No use trying anything else */ + return binding; + } + if(binding==NULL){ tmp.state=AnyModifier; binding=search_binding(bindmap, &tmp); diff --git a/ioncore/binding.h b/ioncore/binding.h index a776a64..32cc2be 100644 --- a/ioncore/binding.h +++ b/ioncore/binding.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_BINDING_H @@ -20,12 +17,20 @@ #include -#define BINDING_KEYPRESS 0 -#define BINDING_BUTTONPRESS 1 -#define BINDING_BUTTONMOTION 2 -#define BINDING_BUTTONCLICK 3 -#define BINDING_BUTTONDBLCLICK 4 +enum{ + BINDING_KEYPRESS, + BINDING_BUTTONPRESS, + BINDING_BUTTONMOTION, + BINDING_BUTTONCLICK, + BINDING_BUTTONDBLCLICK, + BINDING_SUBMAP_ENTER, + BINDING_SUBMAP_RELEASEMOD + /*BINDING_SUBMAP_LEAVE*/ +}; +#define BINDING_IS_PSEUDO(A) \ + ((A)==BINDING_SUBMAP_ENTER || (A)==BINDING_SUBMAP_RELEASEMOD) + #define BINDMAP_INIT {0, NULL, NULL, NULL, NULL} #define FOR_ALL_BINDINGS(B, NODE, MAP) \ diff --git a/ioncore/bindmaps.c b/ioncore/bindmaps.c index c3be60f..5948c02 100644 --- a/ioncore/bindmaps.c +++ b/ioncore/bindmaps.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/bindmaps.h b/ioncore/bindmaps.h index f9e0579..41e2f58 100644 --- a/ioncore/bindmaps.h +++ b/ioncore/bindmaps.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/classes.h b/ioncore/classes.h index 3836bc7..b1bce1b 100644 --- a/ioncore/classes.h +++ b/ioncore/classes.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_CLASSES_H diff --git a/ioncore/clientwin.c b/ioncore/clientwin.c index 4a5b4da..35164de 100644 --- a/ioncore/clientwin.c +++ b/ioncore/clientwin.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -323,8 +320,6 @@ static bool clientwin_init(WClientWin *cwin, WWindow *par, Window win, set_sane_gravity(cwin->win); - cwin->transient_for=None; - cwin->n_cmapwins=0; cwin->cmap=attr->colormap; cwin->cmaps=NULL; @@ -481,11 +476,30 @@ again: xwindow_unmanaged_selectinput(win, 0); - win=hints->icon_window; + /* Copy WM_CLASS as _ION_DOCKAPP_HACK */ + { + char **p=NULL; + int n=0; + + p=xwindow_get_text_property(win, XA_WM_CLASS, &n); + + if(p!=NULL){ + xwindow_set_text_property(hints->icon_window, + ioncore_g.atom_dockapp_hack, + (const char **)p, n); + XFreeStringList(p); + }else{ + const char *pdummy[2]={"unknowndockapp", "UnknownDockapp"}; + xwindow_set_text_property(hints->icon_window, + ioncore_g.atom_dockapp_hack, + pdummy, 2); + } + } /* It is a dockapp, do everything again from the beginning, now * with the icon window. */ + win=hints->icon_window; param.dockapp=TRUE; goto again; } @@ -754,8 +768,8 @@ static bool send_clientmsg(Window win, Atom a, Time stmp) /*EXTL_DOC - * Attempt to kill (with XKillWindow) the client that owns the X - * window correspoding to \var{cwin}. + * Attempt to kill (with \code{XKillWindow}) the client that owns + * the X window correspoding to \var{cwin}. */ EXTL_EXPORT_MEMBER void clientwin_kill(WClientWin *cwin) @@ -1041,12 +1055,27 @@ EXTL_SAFE EXTL_EXPORT_MEMBER ExtlTab clientwin_get_ident(WClientWin *cwin) { - char **p=NULL, *wrole=NULL; + char **p=NULL, **p2=NULL, *wrole=NULL; int n=0, n2=0, n3=0, tmp=0; + Window tforwin=None; ExtlTab tab; + bool dockapp_hack=FALSE; p=xwindow_get_text_property(cwin->win, XA_WM_CLASS, &n); - wrole=xwindow_get_string_property(cwin->win, ioncore_g.atom_wm_window_role, &n2); + + p2=xwindow_get_text_property(cwin->win, ioncore_g.atom_dockapp_hack, &n2); + + dockapp_hack=(n2>0); + + if(p==NULL){ + /* Some dockapps do actually have WM_CLASS, so use it. */ + p=p2; + n=n2; + p2=NULL; + } + + wrole=xwindow_get_string_property(cwin->win, ioncore_g.atom_wm_window_role, + &n3); tab=extl_create_table(); if(n>=2 && p[1]!=NULL) @@ -1056,8 +1085,18 @@ ExtlTab clientwin_get_ident(WClientWin *cwin) if(wrole!=NULL) extl_table_sets_s(tab, "role", wrole); + if(XGetTransientForHint(ioncore_g.dpy, cwin->win, &tforwin) + && tforwin!=None){ + extl_table_sets_b(tab, "is_transient", TRUE); + } + + if(dockapp_hack) + extl_table_sets_b(tab, "is_dockapp", TRUE); + if(p!=NULL) XFreeStringList(p); + if(p2!=NULL) + XFreeStringList(p2); if(wrole!=NULL) free(wrole); @@ -1085,9 +1124,9 @@ static bool check_fs_cfgrq(WClientWin *cwin, XConfigureRequestEvent *ev) if(!region_fullscreen_scr(grp, scr, sw)) cwin->flags&=~CLIENTWIN_FS_RQ; + + return TRUE; } - - return TRUE; } return FALSE; @@ -1260,8 +1299,8 @@ WRegion *clientwin_load(WWindow *par, const WFitParams *fp, ExtlTab tab) WClientWin *cwin=NULL; XWindowAttributes attr; WRectangle rg; - bool got_chkc; - + bool got_chkc=FALSE; + if(!extl_table_gets_d(tab, "windowid", &wind) || !extl_table_gets_i(tab, "checkcode", &chkc)){ return NULL; @@ -1294,14 +1333,7 @@ WRegion *clientwin_load(WWindow *par, const WFitParams *fp, ExtlTab tab) warn(TR("Saved client window does not want to be managed.")); return NULL; } - - /* - attr.x=fp->g.x; - attr.y=fp->g.y; - attr.width=fp->g.w; - attr.height=fp->g.h; - */ - + cwin=create_clientwin(par, win, &attr); if(cwin==NULL) diff --git a/ioncore/clientwin.h b/ioncore/clientwin.h index 855bc9e..d81b11a 100644 --- a/ioncore/clientwin.h +++ b/ioncore/clientwin.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_CLIENTWIN_H @@ -54,8 +51,6 @@ DECLCLASS(WClientWin){ int orig_bw; - Window transient_for; - Colormap cmap; Colormap *cmaps; Window *cmapwins; diff --git a/ioncore/colormap.c b/ioncore/colormap.c index 564336d..ea3fedd 100644 --- a/ioncore/colormap.c +++ b/ioncore/colormap.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/colormap.h b/ioncore/colormap.h index 143f1ec..881d692 100644 --- a/ioncore/colormap.h +++ b/ioncore/colormap.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_COLORMAP_H diff --git a/ioncore/common.h b/ioncore/common.h index 61bd5df..091b9c4 100644 --- a/ioncore/common.h +++ b/ioncore/common.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_COMMON_H diff --git a/ioncore/conf-bindings.c b/ioncore/conf-bindings.c index 56d679e..c449a87 100644 --- a/ioncore/conf-bindings.c +++ b/ioncore/conf-bindings.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -199,12 +196,13 @@ static bool do_submap(WBindmap *bindmap, const char *str, ExtlTab subtab, uint action, uint mod, uint ksb) { WBinding binding, *bnd; - uint kcb; + uint kcb=0; if(action!=BINDING_KEYPRESS) return FALSE; kcb=XKeysymToKeycode(ioncore_g.dpy, ksb); + bnd=bindmap_lookup_binding(bindmap, action, mod, kcb); if(bnd!=NULL && bnd->submap!=NULL && bnd->state==mod) @@ -239,6 +237,9 @@ static StringIntMap action_map[]={ {"mclick", BINDING_BUTTONCLICK}, {"mdblclick", BINDING_BUTTONDBLCLICK}, {"mdrag", BINDING_BUTTONMOTION}, + {"submap_enter", BINDING_SUBMAP_ENTER}, + {"submap_wait", BINDING_SUBMAP_RELEASEMOD}, + /*{"submap_leave", BINDING_SUBMAP_LEAVE},*/ {NULL, 0} }; @@ -271,14 +272,16 @@ static bool do_entry(WBindmap *bindmap, ExtlTab tab, goto fail; } } + + if(!BINDING_IS_PSEUDO(action)){ + if(!extl_table_gets_s(tab, "kcb", &ksb_str)) + goto fail; - if(!extl_table_gets_s(tab, "kcb", &ksb_str)) - goto fail; - - if(!ioncore_parse_keybut(ksb_str, &mod, &ksb, - (action!=BINDING_KEYPRESS && action!=-1), - init_any)){ - goto fail; + if(!ioncore_parse_keybut(ksb_str, &mod, &ksb, + (action!=BINDING_KEYPRESS && action!=-1), + init_any)){ + goto fail; + } } if(extl_table_gets_t(tab, "submap", &subtab)){ diff --git a/ioncore/conf-bindings.h b/ioncore/conf-bindings.h index e86c871..7186cc4 100644 --- a/ioncore/conf-bindings.h +++ b/ioncore/conf-bindings.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_CONF_BINDINGS_H diff --git a/ioncore/conf.c b/ioncore/conf.c index b8545e2..eb464cb 100644 --- a/ioncore/conf.c +++ b/ioncore/conf.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -61,7 +58,8 @@ static ExtlFn get_layout_fn; * for hidden workspaces with activity? \\ * \var{frame_default_index} & (string) Specifies where to add new regions * on the mutually exclusive list of a frame. One of - * ''last'', ''next'' (for after current), ''next-act'' + * \codestr{last}, \codestr{next}, (for after current), + * or \codestr{next-act} * (for after current and anything with activity right * after it). \\ * \var{dblclick_delay} & (integer) Delay between clicks of a double click.\\ @@ -74,9 +72,11 @@ static ExtlFn get_layout_fn; * \var{kbresize_maxacc} & (floating point) See below. \\ * \var{framed_transients} & (boolean) Put transients in nested frames. \\ * \var{float_placement_method} & (string) How to place floating frames. - * One of ''udlr'' (up-down, then left-right), - * ''lrud'' (left-right, then up-down) or ''random''. \\ - * \var{mousefocus} & String: ''disable'' or ''sloppy''. \\ + * One of \codestr{udlr} (up-down, then left-right), + * \codestr{lrud} (left-right, then up-down), or + * \codestr{random}. \\ + * \var{mousefocus} & (string) Mouse focus mode: + * \codestr{disable} or \codestr{sloppy}. \\ * \var{unsqueeze} & (boolean) Auto-unsqueeze transients/menus/queries/etc. \\ * \var{autoraise} & (boolean) Autoraise regions in groups on goto. \\ * \end{tabularx} @@ -209,7 +209,8 @@ ExtlTab ioncore_get_layout(const char *layout) /*EXTL_DOC - * Get important directories (userdir, sessiondir, searchpath). + * Get important directories (the fields \var{userdir}, + * \var{sessiondir}, \var{searchpath} in the returned table). */ EXTL_SAFE EXTL_EXPORT @@ -224,7 +225,8 @@ ExtlTab ioncore_get_paths(ExtlTab tab) /*EXTL_DOC - * Set important directories (sessiondir, searchpath). + * Set important directories (the fields \var{sessiondir}, \var{searchpath} + * of \var{tab}). */ EXTL_EXPORT bool ioncore_set_paths(ExtlTab tab) diff --git a/ioncore/conf.h b/ioncore/conf.h index 696852d..6f82163 100644 --- a/ioncore/conf.h +++ b/ioncore/conf.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_CONF_H diff --git a/ioncore/cursor.c b/ioncore/cursor.c index 6973a16..884dd5b 100644 --- a/ioncore/cursor.c +++ b/ioncore/cursor.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include "common.h" diff --git a/ioncore/cursor.h b/ioncore/cursor.h index 8d03f79..5c9c6e5 100644 --- a/ioncore/cursor.h +++ b/ioncore/cursor.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_CURSOR_H diff --git a/ioncore/detach.c b/ioncore/detach.c index 8493b9a..72c7406 100644 --- a/ioncore/detach.c +++ b/ioncore/detach.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -41,7 +38,8 @@ static void get_relative_geom(WRectangle *g, WRegion *reg, WRegion *mgr) } -bool ioncore_do_detach(WRegion *reg, WGroup *grp, WFrameMode framemode) +static bool ioncore_do_detach(WRegion *reg, WGroup *grp, WFrameMode framemode, + uint framelevel) { WGroupAttachParams ap=GROUPATTACHPARAMS_INIT; WRegionAttachData data; @@ -71,6 +69,9 @@ bool ioncore_do_detach(WRegion *reg, WGroup *grp, WFrameMode framemode) ap.geom_weak_set=TRUE; ap.geom_weak=0; + + ap.level_set=TRUE; + ap.level=framelevel+1; get_relative_geom(&fpa.inner_geom, reg, (WRegion*)grp); @@ -84,8 +85,8 @@ bool ioncore_do_detach(WRegion *reg, WGroup *grp, WFrameMode framemode) ap.szplcy=st->szplcy; ap.szplcy_set=TRUE; - ap.level=maxof(st->level, STACKING_LEVEL_NORMAL); ap.level_set=TRUE; + ap.level=maxof(st->level, STACKING_LEVEL_NORMAL); } ap.geom_set=TRUE; @@ -123,14 +124,19 @@ static WRegion *check_mplex(WRegion *reg, WFrameMode *mode) } -static WGroup *find_group(WRegion *reg) +static WGroup *find_group(WRegion *reg, uint *level) { WRegion *mgr=REGION_MANAGER(reg); while(mgr!=NULL){ + reg=mgr; mgr=REGION_MANAGER(mgr); - if(OBJ_IS(mgr, WGroup)) + if(OBJ_IS(mgr, WGroup)){ + WStacking *st=ioncore_find_stacking((WRegion*)reg); + if(st!=NULL) + *level=st->level; break; + } } return (WGroup*)mgr; @@ -143,10 +149,11 @@ bool ioncore_detach(WRegion *reg, int sp) WFrameMode mode; WGroup *grp; bool set, nset; + uint level=STACKING_LEVEL_NORMAL; reg=region_groupleader_of(reg); - grp=find_group(check_mplex(reg, &mode)); + grp=find_group(check_mplex(reg, &mode), &level); /* reg is only considered detached if there's no higher-level group * to attach to, thus causing 'toggle' to cycle. @@ -158,7 +165,7 @@ bool ioncore_detach(WRegion *reg, int sp) return set; if(!set){ - return ioncore_do_detach(reg, grp, mode); + return ioncore_do_detach(reg, grp, mode, level); }else{ WPHolder *ph=region_get_return(reg); @@ -177,11 +184,12 @@ bool ioncore_detach(WRegion *reg, int sp) /*EXTL_DOC * Detach or reattach \var{reg}, depending on whether \var{how} - * is 'set'/'unset'/'toggle'. (Detaching means making \var{reg} - * managed by its nearest ancestor \type{WGroup}, framed if \var{reg} is - * not itself \type{WFrame}. Reattaching means making it managed where - * it used to be managed, if a return-placeholder exists.) - * If \var{reg} is the 'bottom' of some group, the whole group is + * is \codestr{set}, \codestr{unset} or \codestr{toggle}. (Detaching + * means making \var{reg} managed by its nearest ancestor \type{WGroup}, + * framed if \var{reg} is not itself \type{WFrame}. Reattaching means + * making it managed where it used to be managed, if a return-placeholder + * exists.) + * If \var{reg} is the `bottom' of some group, the whole group is * detached. If \var{reg} is a \type{WWindow}, it is put into a * frame. */ @@ -197,24 +205,27 @@ bool ioncore_detach_extl(WRegion *reg, const char *how) void do_unsqueeze(WRegion *reg) { - WSizeHints hints; + WSizeHints h; + WRegion *mgr=REGION_MANAGER(reg); - if(REGION_MANAGER_CHK(reg, WScreen)!=NULL) + if(OBJ_IS(reg, WScreen)) return; - region_size_hints(reg, &hints); + region_size_hints(reg, &h); - if(!hints.min_set) + if(!h.min_set) return; - if(hints.min_width<=REGION_GEOM(reg).w && - hints.min_height<=REGION_GEOM(reg).h){ + if(h.min_width<=REGION_GEOM(reg).w && + h.min_height<=REGION_GEOM(reg).h){ return; } - if(!ioncore_detach(reg, SETPARAM_SET)) - return; + ioncore_detach(reg, SETPARAM_SET); + if(REGION_MANAGER(reg)==mgr) + return; + do_unsqueeze(reg); } diff --git a/ioncore/detach.h b/ioncore/detach.h index 237d887..f407a08 100644 --- a/ioncore/detach.h +++ b/ioncore/detach.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_DETACH_H diff --git a/ioncore/dummywc.h b/ioncore/dummywc.h index 6d1a491..03d6955 100644 --- a/ioncore/dummywc.h +++ b/ioncore/dummywc.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ /* This file contains dummy implementations of multibyte/widechar routines diff --git a/ioncore/event.c b/ioncore/event.c index 260d6b0..217fe1b 100644 --- a/ioncore/event.c +++ b/ioncore/event.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/event.h b/ioncore/event.h index b81edf1..d83f508 100644 --- a/ioncore/event.h +++ b/ioncore/event.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_EVENT_H diff --git a/ioncore/eventh.c b/ioncore/eventh.c index 0a9a57a..bba225c 100644 --- a/ioncore/eventh.c +++ b/ioncore/eventh.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/eventh.h b/ioncore/eventh.h index 3220791..67d4e30 100644 --- a/ioncore/eventh.h +++ b/ioncore/eventh.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_EVENTH_H diff --git a/ioncore/exec.c b/ioncore/exec.c index 06838a6..65683dc 100644 --- a/ioncore/exec.c +++ b/ioncore/exec.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/exec.h b/ioncore/exec.h index b76f01e..2661b50 100644 --- a/ioncore/exec.h +++ b/ioncore/exec.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_EXEC_H diff --git a/ioncore/extlconv.c b/ioncore/extlconv.c index 9fc7af9..b0a2bb8 100644 --- a/ioncore/extlconv.c +++ b/ioncore/extlconv.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/extlconv.h b/ioncore/extlconv.h index 28fbb95..9e4cd53 100644 --- a/ioncore/extlconv.h +++ b/ioncore/extlconv.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_EXTLCONV_H diff --git a/ioncore/extlrx.c b/ioncore/extlrx.c index a13038a..50c2acb 100644 --- a/ioncore/extlrx.c +++ b/ioncore/extlrx.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ diff --git a/ioncore/float-placement.c b/ioncore/float-placement.c index 3f6a64d..2fae298 100644 --- a/ioncore/float-placement.c +++ b/ioncore/float-placement.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/float-placement.h b/ioncore/float-placement.h index 760030e..4c8db43 100644 --- a/ioncore/float-placement.h +++ b/ioncore/float-placement.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_FLOAT_PLACEMENT_H diff --git a/ioncore/focus.c b/ioncore/focus.c index b2341ab..573dceb 100644 --- a/ioncore/focus.c +++ b/ioncore/focus.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -166,10 +163,8 @@ void region_set_await_focus(WRegion *reg) } -static bool region_is_await(WRegion *reg) +static bool region_is_parent(WRegion *reg, WRegion *aw) { - WRegion *aw=(WRegion*)await_watch.obj; - while(aw!=NULL){ if(aw==reg) return TRUE; @@ -180,6 +175,18 @@ static bool region_is_await(WRegion *reg) } +static bool region_is_await(WRegion *reg) +{ + return region_is_parent(reg, (WRegion*)await_watch.obj); +} + + +static bool region_is_focusnext(WRegion *reg) +{ + return region_is_parent(reg, ioncore_g.focus_next); +} + + /* Only keep await status if focus event is to an ancestor of the await * region. */ @@ -299,6 +306,18 @@ bool region_is_active(WRegion *reg) } +static bool region_manager_is_focusnext(WRegion *reg) +{ + if(reg==NULL || ioncore_g.focus_next==NULL) + return FALSE; + + if(reg==ioncore_g.focus_next) + return TRUE; + + return region_manager_is_focusnext(REGION_MANAGER(reg)); +} + + bool region_may_control_focus(WRegion *reg) { if(OBJ_IS_BEING_DESTROYED(reg)) @@ -306,8 +325,11 @@ bool region_may_control_focus(WRegion *reg) if(REGION_IS_ACTIVE(reg) || REGION_IS_PSEUDOACTIVE(reg)) return TRUE; - - if(region_is_await(reg)) + + if(region_is_await(reg) || region_is_focusnext(reg)) + return TRUE; + + if(region_manager_is_focusnext(reg)) return TRUE; return FALSE; diff --git a/ioncore/focus.h b/ioncore/focus.h index 683d8ae..9f16415 100644 --- a/ioncore/focus.h +++ b/ioncore/focus.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_FOCUS_H diff --git a/ioncore/frame-draw.c b/ioncore/frame-draw.c index 5be2e6b..0b3411a 100644 --- a/ioncore/frame-draw.c +++ b/ioncore/frame-draw.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -321,18 +318,7 @@ void frame_recalc_bar(WFrame *frame) FRAME_MX_FOR_ALL(sub, frame, tmp){ textw=init_title(frame, i); if(textw>0){ - if(frame->flags&FRAME_SHOW_NUMBERS){ - char *s=NULL; - libtu_asprintf(&s, "[%d]", i+1); - if(s!=NULL){ - title=grbrush_make_label(frame->bar_brush, s, textw); - free(s); - }else{ - title=NULL; - } - }else{ - title=region_make_label(sub, textw, frame->bar_brush); - } + title=region_make_label(sub, textw, frame->bar_brush); frame->titles[i].text=title; } i++; @@ -340,19 +326,6 @@ void frame_recalc_bar(WFrame *frame) } -static void set_common_attrs(const WFrame *frame, GrBrush *brush) -{ - ensure_create_attrs(); - - grbrush_set_attr(brush, REGION_IS_ACTIVE(frame) - ? GR_ATTR(active) - : GR_ATTR(inactive)); - grbrush_set_attr(brush, frame->quasiactive_count>0 - ? GR_ATTR(quasiactive) - : GR_ATTR(not_quasiactive)); -} - - void frame_draw_bar(const WFrame *frame, bool complete) { WRectangle geom; @@ -367,7 +340,7 @@ void frame_draw_bar(const WFrame *frame, bool complete) grbrush_begin(frame->bar_brush, &geom, GRBRUSH_AMEND); - set_common_attrs(frame, frame->bar_brush); + grbrush_init_attr(frame->bar_brush, &frame->baseattr); grbrush_draw_textboxes(frame->bar_brush, &geom, frame->titles_n, frame->titles, complete); @@ -386,7 +359,7 @@ void frame_draw(const WFrame *frame, bool complete) grbrush_begin(frame->brush, &geom, (complete ? 0 : GRBRUSH_NO_CLEAR_OK)); - set_common_attrs(frame, frame->brush); + grbrush_init_attr(frame->brush, &frame->baseattr); grbrush_draw_border(frame->brush, &geom); @@ -564,14 +537,52 @@ bool frame_set_background(WFrame *frame, bool set_always) void frame_setup_dragwin_style(WFrame *frame, GrStyleSpec *spec, int tab) { + gr_stylespec_append(spec, &frame->baseattr); gr_stylespec_append(spec, &frame->titles[tab].attr); +} + + +/*}}}*/ + + +/*{{{ Activated/inactivated */ + + +void frame_inactivated(WFrame *frame) +{ + ensure_create_attrs(); + + gr_stylespec_set(&frame->baseattr, GR_ATTR(inactive)); + gr_stylespec_unset(&frame->baseattr, GR_ATTR(active)); + + window_draw((WWindow*)frame, FALSE); +} + + +void frame_activated(WFrame *frame) +{ + ensure_create_attrs(); + + gr_stylespec_set(&frame->baseattr, GR_ATTR(active)); + gr_stylespec_unset(&frame->baseattr, GR_ATTR(inactive)); + + window_draw((WWindow*)frame, FALSE); +} + + +void frame_quasiactivity_change(WFrame *frame) +{ + bool is=(frame->quasiact_source!=NULL); - gr_stylespec_set(spec, REGION_IS_ACTIVE(frame) - ? GR_ATTR(active) - : GR_ATTR(inactive)); - gr_stylespec_set(spec, frame->quasiactive_count>0 - ? GR_ATTR(quasiactive) - : GR_ATTR(not_quasiactive)); + ensure_create_attrs(); + + if(is){ + gr_stylespec_set(&frame->baseattr, GR_ATTR(quasiactive)); + gr_stylespec_unset(&frame->baseattr, GR_ATTR(not_quasiactive)); + }else{ + gr_stylespec_set(&frame->baseattr, GR_ATTR(not_quasiactive)); + gr_stylespec_unset(&frame->baseattr, GR_ATTR(quasiactive)); + } } diff --git a/ioncore/frame-draw.h b/ioncore/frame-draw.h index b0134f5..e286bc3 100644 --- a/ioncore/frame-draw.h +++ b/ioncore/frame-draw.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_FRAME_DRAW_H @@ -39,4 +36,8 @@ extern void frame_update_attr(WFrame *frame, int i, WRegion *reg); extern void frame_setup_dragwin_style(WFrame *frame, GrStyleSpec *spec, int tab); +extern void frame_inactivated(WFrame *frame); +extern void frame_activated(WFrame *frame); +extern void frame_quasiactivity_change(WFrame *frame); + #endif /* ION_IONCORE_FRAME_DRAW_H */ diff --git a/ioncore/frame-pointer.c b/ioncore/frame-pointer.c index 09f1c0a..494a7b2 100644 --- a/ioncore/frame-pointer.c +++ b/ioncore/frame-pointer.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -336,7 +333,7 @@ static void p_tabdrag_end(WFrame *frame, XButtonEvent *ev) /*EXTL_DOC * Start dragging the tab that the user pressed on with the pointing device. * This function should only be used by binding it to \emph{mpress} or - * \emph{mdrag} action with area ''tab''. + * \emph{mdrag} action with area \codestr{tab}. */ EXTL_EXPORT_MEMBER void frame_p_tabdrag(WFrame *frame) diff --git a/ioncore/frame-pointer.h b/ioncore/frame-pointer.h index c7163a1..90ba94e 100644 --- a/ioncore/frame-pointer.h +++ b/ioncore/frame-pointer.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_FRAME_POINTER_H diff --git a/ioncore/frame.c b/ioncore/frame.c index f0e786e..bcecf23 100644 --- a/ioncore/frame.c +++ b/ioncore/frame.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -84,6 +81,9 @@ bool frame_init(WFrame *frame, WWindow *parent, const WFitParams *fp, frame->mode=mode; frame->tab_min_w=0; frame->bar_max_width_q=1.0; + frame->quasiact_source=NULL; + + gr_stylespec_init(&frame->baseattr); if(!mplex_init((WMPlex*)frame, parent, fp)) return FALSE; @@ -117,6 +117,7 @@ void frame_deinit(WFrame *frame) { frame_free_titles(frame); frame_release_brushes(frame); + gr_stylespec_unalloc(&frame->baseattr); mplex_deinit((WMPlex*)frame); } @@ -511,51 +512,56 @@ void frame_size_hints(WFrame *frame, WSizeHints *hints_ret) /*{{{ Focus */ -void frame_inactivated(WFrame *frame) -{ - window_draw((WWindow*)frame, FALSE); -} - - -void frame_activated(WFrame *frame) +static void frame_quasiactivation(WFrame *frame, Obj *src, bool act) { - window_draw((WWindow*)frame, FALSE); -} - - -void frame_quasiactivation(WFrame *frame, WRegion *reg, bool act) -{ - bool was, is; - - was=(frame->quasiactive_count>0); + if(frame->quasiact_source==src || act){ + bool was, is; + + was=(frame->quasiact_source!=NULL); - frame->quasiactive_count=maxof(0, frame->quasiactive_count - + (act ? 1 : -1)); - - is=(frame->quasiactive_count>0); + frame->quasiact_source=(act ? src : NULL); - if(was!=is && !REGION_IS_ACTIVE(frame)) - window_draw((WWindow*)frame, FALSE); + is=(frame->quasiact_source!=NULL); + + if(was!=is){ + frame_quasiactivity_change(frame); + if(!REGION_IS_ACTIVE(frame)) + window_draw((WWindow*)frame, FALSE); + } + } } static bool actinact(WRegion *reg, bool act) { WPHolder *returnph=region_get_return(reg); - WFrame *frame; + WFrame *frame=NULL; + Obj *src=NULL; + WRegion *tgt; if(returnph==NULL || pholder_stale(returnph)) return FALSE; - frame=OBJ_CAST(pholder_target(returnph), WFrame); + tgt=pholder_target(returnph); + + frame=OBJ_CAST(tgt, WFrame); if(frame!=NULL){ - /* Ok, reg has return placeholder set to a frame: - * do quasiactivation/inactivation + src=(Obj*)returnph; + }else{ + /* Show quasiactivation for stuff detached from + * groups contained in the frame as well. */ - frame_quasiactivation(frame, reg, act); + WGroup *grp=OBJ_CAST(tgt, WGroup); + if(grp!=NULL){ + frame=REGION_MANAGER_CHK(grp, WFrame); + src=(Obj*)grp; + } } + if(frame!=NULL) + frame_quasiactivation(frame, src, act); + return TRUE; } @@ -671,9 +677,10 @@ static WFramedPHolder *frame_make_recreate_pholder(WFrame *frame) ph=region_make_return_pholder((WRegion*)frame); - if(ph==NULL) + if(ph==NULL){ return NULL; - + } + fparam.mode=frame->mode; fph=create_framedpholder(ph, &fparam); @@ -724,6 +731,13 @@ static void frame_modify_pholders(WFrame *frame) } +bool frame_rescue_clientwins(WFrame *frame, WRescueInfo *info) +{ + frame_modify_pholders(frame); + return mplex_rescue_clientwins(&frame->mplex, info); +} + + /*}}}*/ @@ -774,7 +788,8 @@ bool frame_set_shaded(WFrame *frame, int sp) /*EXTL_DOC * Set shading state according to the parameter \var{how} - * (set/unset/toggle). Resulting state is returned, which may not be + * (\codestr{set}, \codestr{unset}, or \codestr{toggle}). + * Resulting state is returned, which may not be * what was requested. */ EXTL_EXPORT_AS(WFrame, set_shaded) @@ -795,39 +810,51 @@ bool frame_is_shaded(WFrame *frame) } -bool frame_set_numbers(WFrame *frame, int sp) +/* EXTL_DOC + * Is the attribute \var{attr} set? + */ +bool frame_is_grattr(WFrame *frame, const char *attr) { - bool set=frame->flags&FRAME_SHOW_NUMBERS; - bool nset=libtu_do_setparam(sp, set); - - if(XOR(nset, set)){ - frame->flags^=FRAME_SHOW_NUMBERS; - frame_recalc_bar(frame); - frame_draw_bar(frame, TRUE); - } - - return frame->flags&FRAME_SHOW_NUMBERS; + GrAttr a=stringstore_alloc(attr); + bool set=gr_stylespec_isset(&frame->baseattr, a); + stringstore_free(a); + return set; } -/*EXTL_DOC - * Control whether tabs show numbers (set/unset/toggle). - * Resulting state is returned, which may not be what was - * requested. - */ -EXTL_EXPORT_AS(WFrame, set_numbers) -bool frame_set_numbers_extl(WFrame *frame, const char *how) +bool frame_set_grattr(WFrame *frame, GrAttr a, int sp) { - return frame_set_numbers(frame, libtu_string_to_setparam(how)); + bool set=gr_stylespec_isset(&frame->baseattr, a); + bool nset=libtu_do_setparam(sp, set); + + if(XOR(set, nset)){ + if(nset) + gr_stylespec_set(&frame->baseattr, a); + else + gr_stylespec_unset(&frame->baseattr, a); + window_draw((WWindow*)frame, TRUE); + } + + return nset; } /*EXTL_DOC - * Does \var{frame} show numbers for tabs? + * Set extra drawing engine attributes for the frame. + * The parameter \var{attr} is the attribute, and \var{how} is + * one of \codestr{set}, \codestr{unset}, or \codestr{toggle}. */ -bool frame_is_numbers(WFrame *frame) +EXTL_EXPORT_AS(WFrame, set_grattr) +bool frame_set_grattr_extl(WFrame *frame, const char *attr, const char *how) { - return frame->flags&FRAME_SHOW_NUMBERS; + if(attr!=NULL){ + GrAttr a=stringstore_alloc(attr); + bool ret=frame_set_grattr(frame, a, libtu_string_to_setparam(how)); + stringstore_free(a); + return ret; + }else{ + return FALSE; + } } @@ -867,6 +894,14 @@ static void frame_managed_changed(WFrame *frame, int mode, bool sw, { bool need_draw=TRUE; + if(mode==MPLEX_CHANGE_REMOVE && (Obj*)reg==frame->quasiact_source){ + /* Reset indirect quasiactivation through group that + * is being removed. + */ + frame->quasiact_source=NULL; + frame_quasiactivity_change(frame); + } + if(mode!=MPLEX_CHANGE_SWITCHONLY) frame_initialise_titles(frame); else @@ -907,6 +942,32 @@ int frame_default_index(WFrame *frame) /*}}}*/ +/*{{{ prepare_manage_transient */ + + +WPHolder *frame_prepare_manage_transient(WFrame *frame, + const WClientWin *transient, + const WManageParams *param, + int unused) +{ + /* Transient manager searches should not cross tiled frames + * unless explicitly floated. + */ + if(IS_FLOATING_MODE(frame) || + extl_table_is_bool_set(transient->proptab, "float")){ + return region_prepare_manage_transient_default((WRegion*)frame, + transient, + param, + unused); + }else{ + return NULL; + } +} + + +/*}}}*/ + + /*{{{ Save/load */ @@ -1016,6 +1077,12 @@ static DynFunTab frame_dynfuntab[]={ {(DynFun*)mplex_default_index, (DynFun*)frame_default_index}, + + {(DynFun*)region_prepare_manage_transient, + (DynFun*)frame_prepare_manage_transient}, + + {(DynFun*)region_rescue_clientwins, + (DynFun*)frame_rescue_clientwins}, END_DYNFUNTAB }; diff --git a/ioncore/frame.h b/ioncore/frame.h index 7aa5014..c8827a5 100644 --- a/ioncore/frame.h +++ b/ioncore/frame.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_FRAME_H @@ -36,7 +33,6 @@ /*#define FRAME_SZH_USEMINMAX 0x1000 */ /*#define FRAME_FWD_CWIN_RQGEOM 0x2000 */ -#define FRAME_SHOW_NUMBERS 0x4000 typedef enum{ FRAME_MODE_UNKNOWN, @@ -64,10 +60,11 @@ DECLCLASS(WFrame){ int saved_x, saved_y; int tab_dragged_idx; - uint quasiactive_count; + void *quasiact_source; GrBrush *brush; GrBrush *bar_brush; + GrStyleSpec baseattr; GrTransparency tr_mode; GrTextElem *titles; int titles_n; @@ -121,6 +118,13 @@ extern bool frame_managed_rqdispose(WFrame *frame, WRegion *reg); extern void ioncore_frame_quasiactivation_notify(WRegion *reg, WRegionNotify how); +extern WPHolder *frame_prepare_manage_transient(WFrame *frame, + const WClientWin *transient, + const WManageParams *param, + int unused); + +extern bool frame_rescue_clientwins(WFrame *frame, WRescueInfo *info); + /* Save/load */ extern ExtlTab frame_get_configuration(WFrame *frame); extern WRegion *frame_load(WWindow *par, const WFitParams *fp, ExtlTab tab); diff --git a/ioncore/framedpholder.c b/ioncore/framedpholder.c index 6ef378b..de437a2 100644 --- a/ioncore/framedpholder.c +++ b/ioncore/framedpholder.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/framedpholder.h b/ioncore/framedpholder.h index dfbbe50..49becc2 100644 --- a/ioncore/framedpholder.h +++ b/ioncore/framedpholder.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_FRAMEDPHOLDER_H diff --git a/ioncore/framep.h b/ioncore/framep.h index 9dabf48..b614abe 100644 --- a/ioncore/framep.h +++ b/ioncore/framep.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_FRAMEP_H diff --git a/ioncore/fullscreen.c b/ioncore/fullscreen.c index a49d4f5..12de118 100644 --- a/ioncore/fullscreen.c +++ b/ioncore/fullscreen.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -159,8 +156,9 @@ WScreen *clientwin_fullscreen_chkrq(WClientWin *cwin, int w, int h) /*EXTL_DOC * Set client window \var{reg} full screen state according to the - * parameter \var{how} (set/unset/toggle). Resulting state is returned, - * which may not be what was requested. + * parameter \var{how} (one of \codestr{set}, \codestr{unset}, or + * \codestr{toggle}). Resulting state is returned, which may not be + * what was requested. */ EXTL_EXPORT_AS(WGroup, set_fullscreen) bool group_set_fullscreen_extl(WGroup *grp, const char *how) diff --git a/ioncore/fullscreen.h b/ioncore/fullscreen.h index 2436a98..fe58fc0 100644 --- a/ioncore/fullscreen.h +++ b/ioncore/fullscreen.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_FULLSCREEN_H diff --git a/ioncore/global.h b/ioncore/global.h index 7ac7841..c6ae9a7 100644 --- a/ioncore/global.h +++ b/ioncore/global.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_GLOBAL_H @@ -67,7 +64,8 @@ DECLSTRUCT(WGlobal){ Atom atom_checkcode; Atom atom_selection; Atom atom_mwm_hints; - + Atom atom_dockapp_hack; + WRootWin *rootwins; WScreen *screens; WRegion *focus_next; diff --git a/ioncore/gr-util.h b/ioncore/gr-util.h index 52cf384..1e90e38 100644 --- a/ioncore/gr-util.h +++ b/ioncore/gr-util.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_GR_UTIL_H diff --git a/ioncore/gr.c b/ioncore/gr.c index f864792..835c7ca 100644 --- a/ioncore/gr.c +++ b/ioncore/gr.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -98,7 +95,7 @@ static bool gr_do_select_engine(const char *engine) /*EXTL_DOC - * Future requests for ''brushes'' are to be forwarded to the drawing engine + * Future requests for ``brushes'' are to be forwarded to the drawing engine * \var{engine}. If no engine of such name is known, a module with that name * is attempted to be loaded. This function is only intended to be called from * colour scheme etc. configuration files and can not be used to change the @@ -299,7 +296,7 @@ void gr_stylespec_init(GrStyleSpec *spec) } -static bool gr_stylespec_find_(GrStyleSpec *spec, GrAttr a, int *idx_ge) +static bool gr_stylespec_find_(const GrStyleSpec *spec, GrAttr a, int *idx_ge) { bool found=FALSE; uint i; @@ -315,6 +312,15 @@ static bool gr_stylespec_find_(GrStyleSpec *spec, GrAttr a, int *idx_ge) return found; } + +bool gr_stylespec_isset(const GrStyleSpec *spec, GrAttr a) +{ + int idx_ge; + + return gr_stylespec_find_(spec, a, &idx_ge); +} + + bool gr_stylespec_add(GrStyleSpec *spec, GrAttr a, uint score) { static const uint sz=sizeof(GrAttrScore); @@ -632,7 +638,7 @@ void grbrush_unset_attr(GrBrush *brush, GrAttr attr) /*EXTL_DOC - * Read drawing engine configuration file \file{draw.lua}. + * Read drawing engine configuration file \file{look.lua}. */ EXTL_EXPORT_AS(gr, read_config) void gr_read_config() diff --git a/ioncore/gr.h b/ioncore/gr.h index 2d55298..b42c663 100644 --- a/ioncore/gr.h +++ b/ioncore/gr.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_GR_H @@ -110,6 +107,7 @@ extern uint gr_stylespec_score2(const GrStyleSpec *spec, const GrStyleSpec *attr extern void gr_stylespec_init(GrStyleSpec *spec); extern bool gr_stylespec_set(GrStyleSpec *spec, GrAttr a); +extern bool gr_stylespec_isset(const GrStyleSpec *spec, GrAttr a); extern void gr_stylespec_unset(GrStyleSpec *spec, GrAttr a); extern bool gr_stylespec_add(GrStyleSpec *spec, GrAttr a, uint score); extern bool gr_stylespec_append(GrStyleSpec *dst, const GrStyleSpec *src); diff --git a/ioncore/grab.c b/ioncore/grab.c index aad2dfd..5af822c 100644 --- a/ioncore/grab.c +++ b/ioncore/grab.c @@ -4,10 +4,10 @@ * Copyright (c) Lukas Schroeder 2002, * Tuomo Valkonen 2003-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. + * + * Alternatively, you may apply the Clarified Artistic License to this file, + * since Lukas' contributions were originally under that. */ #include @@ -119,6 +119,7 @@ void ioncore_grab_establish(WRegion *reg, GrabHandler *func, current_grab->cursor=IONCORE_CURSOR_DEFAULT; current_grab->confine_to=None; /*region_root_of(reg);*/ current_grab->sqid=last_sqid++; + watch_init(¤t_grab->watch); do_grab_install(current_grab); } } diff --git a/ioncore/grab.h b/ioncore/grab.h index ecdf256..d579984 100644 --- a/ioncore/grab.h +++ b/ioncore/grab.h @@ -4,10 +4,10 @@ * Copyright (c) Lukas Schroeder 2002, * Tuomo Valkonen 2003-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. + * + * Alternatively, you may apply the Clarified Artistic License to this file, + * since Lukas' contributions were originally under that. */ #ifndef ION_IONCORE_GRAB_H diff --git a/ioncore/group-cw.c b/ioncore/group-cw.c index 8181af8..544cd15 100644 --- a/ioncore/group-cw.c +++ b/ioncore/group-cw.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -72,9 +69,9 @@ static WPHolder *groupcw_transient_pholder(WGroupCW *cwg, WPHolder *groupcw_prepare_manage(WGroupCW *cwg, const WClientWin *cwin, - const WManageParams *param, int redir) + const WManageParams *param, int priority) { - if(redir==MANAGE_REDIR_STRICT_YES) + if(!MANAGE_PRIORITY_OK(priority, MANAGE_PRIORITY_GROUP)) return NULL; /* Only catch windows with transient mode set to current here. */ diff --git a/ioncore/group-cw.h b/ioncore/group-cw.h index b8616a7..37d96e2 100644 --- a/ioncore/group-cw.h +++ b/ioncore/group-cw.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_GROUPCW_H diff --git a/ioncore/group-ws.c b/ioncore/group-ws.c index 48ee838..647cef0 100644 --- a/ioncore/group-ws.c +++ b/ioncore/group-ws.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -173,34 +170,12 @@ bool groupws_attach_framed_extl(WGroupWS *ws, WRegion *reg, ExtlTab t) static WPHolder *groupws_do_prepare_manage(WGroupWS *ws, const WClientWin *cwin, const WManageParams *param, - int redir, int geom_weak) + int geom_weak) { WGroupAttachParams ap=GROUPATTACHPARAMS_INIT; WFramedParam fp=FRAMEDPARAM_INIT; WPHolder *ph; - if(redir==MANAGE_REDIR_PREFER_YES){ - WRegion *r=(ws->grp.current_managed!=NULL - ? ws->grp.current_managed->reg - : NULL); - WGroupIterTmp tmp; - WPHolder *ph=NULL; - - if(r!=NULL) - ph=region_prepare_manage(r, cwin, param, MANAGE_REDIR_PREFER_YES); - - if(ph==NULL){ - FOR_ALL_MANAGED_BY_GROUP(&ws->grp, r, tmp){ - ph=region_prepare_manage(r, cwin, param, - MANAGE_REDIR_PREFER_YES); - if(ph!=NULL) - break; - } - } - } - - if(redir==MANAGE_REDIR_STRICT_YES) - return NULL; fp.inner_geom_gravity_set=TRUE; fp.inner_geom=param->geom; @@ -223,8 +198,10 @@ static WPHolder *groupws_do_prepare_manage(WGroupWS *ws, WPHolder *groupws_prepare_manage(WGroupWS *ws, const WClientWin *cwin, const WManageParams *param, - int redir) + int priority) { + int cpriority=MANAGE_PRIORITY_SUB(priority, MANAGE_PRIORITY_GROUP); + int bpriority=MANAGE_PRIORITY_SUBX(priority, MANAGE_PRIORITY_GROUP); WRegion *b=(ws->grp.bottom!=NULL ? ws->grp.bottom->reg : NULL); WPHolder *ph=NULL; bool act_b=(ws->grp.bottom==ws->grp.current_managed); @@ -249,13 +226,23 @@ WPHolder *groupws_prepare_manage(WGroupWS *ws, const WClientWin *cwin, : act_b); if(b!=NULL && use_bottom) - ph=region_prepare_manage(b, cwin, param, redir); + ph=region_prepare_manage(b, cwin, param, bpriority); + + if(ph==NULL){ + /* Check current */ + WRegion *r=(ws->grp.current_managed!=NULL + ? ws->grp.current_managed->reg + : NULL); + + if(r!=NULL && r!=b) + ph=region_prepare_manage(r, cwin, param, cpriority); + } + + if(ph==NULL && MANAGE_PRIORITY_OK(priority, MANAGE_PRIORITY_GROUP)) + ph=groupws_do_prepare_manage(ws, cwin, param, weak); - if(ph==NULL) - ph=groupws_do_prepare_manage(ws, cwin, param, redir, weak); - if(ph==NULL && b!=NULL && !use_bottom) - ph=region_prepare_manage(b, cwin, param, redir); + ph=region_prepare_manage(b, cwin, param, cpriority); return ph; } diff --git a/ioncore/group-ws.h b/ioncore/group-ws.h index 1fee223..e5a2613 100644 --- a/ioncore/group-ws.h +++ b/ioncore/group-ws.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_GROUPWS_H diff --git a/ioncore/group.c b/ioncore/group.c index 61a3235..9c67348 100644 --- a/ioncore/group.c +++ b/ioncore/group.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -499,7 +496,7 @@ static void group_do_set_bottom(WGroup *grp, WStacking *st) /*EXTL_DOC - * Sets the 'bottom' of \var{ws}. The region \var{reg} must already + * Sets the `bottom' of \var{ws}. The region \var{reg} must already * be managed by \var{ws}, unless \code{nil}. */ EXTL_EXPORT_MEMBER @@ -521,7 +518,7 @@ bool group_set_bottom(WGroup *ws, WRegion *reg) /*EXTL_DOC - * Returns the 'bottom' of \var{ws}. + * Returns the `bottom' of \var{ws}. */ EXTL_SAFE EXTL_EXPORT_MEMBER @@ -571,7 +568,7 @@ WStacking *group_do_add_managed_default(WGroup *ws, WRegion *reg, int level, frame=OBJ_CAST(reg, WFrame); if(frame!=NULL){ WFrameMode m=frame_mode(frame); - if(m!=FRAME_MODE_FLOATING && m!=FRAME_MODE_TRANSIENT) + if(m==FRAME_MODE_TILED || m==FRAME_MODE_TILED_ALT) frame_set_mode(frame, FRAME_MODE_FLOATING); } @@ -742,6 +739,12 @@ static void get_params(WGroup *ws, ExtlTab tab, WGroupAttachParams *par) par->geom_set=0; par->bottom=0; + if(extl_table_is_bool_set(tab, "bottom")){ + par->level=STACKING_LEVEL_BOTTOM; + par->level_set=1; + par->bottom=1; + } + if(extl_table_gets_i(tab, "level", &tmp)){ if(tmp>=0){ par->level_set=STACKING_LEVEL_NORMAL; @@ -749,12 +752,6 @@ static void get_params(WGroup *ws, ExtlTab tab, WGroupAttachParams *par) } } - if(extl_table_is_bool_set(tab, "bottom")){ - par->level=STACKING_LEVEL_BOTTOM; - par->level_set=1; - par->bottom=1; - } - if(!par->level_set && extl_table_is_bool_set(tab, "modal")){ par->level=STACKING_LEVEL_MODAL1; par->level_set=1; @@ -822,12 +819,12 @@ WRegion *group_attach(WGroup *ws, WRegion *reg, ExtlTab param) * * \begin{tabularx}{\linewidth}{lX} * \tabhead{Field & Description} - * \var{type} & Class name (a string) of the object to be created. Mandatory. \\ - * \var{name} & Name of the object to be created (a string). Optional. \\ - * \var{switchto} & Should the region be switched to (boolean)? Optional. \\ - * \var{level} & Stacking level; default is 1. \\ - * \var{modal} & Make object modal; ignored if level is set. \\ - * \var{sizepolicy} & Size policy. \\ + * \var{type} & (string) Class of the object to be created. Mandatory. \\ + * \var{name} & (string) Name of the object to be created. \\ + * \var{switchto} & (boolean) Should the region be switched to? \\ + * \var{level} & (integer) Stacking level; default is 1. \\ + * \var{modal} & (boolean) Make object modal; ignored if level is set. \\ + * \var{sizepolicy} & (string) Size policy; see Section \ref{sec:sizepolicies}. \\ * \end{tabularx} * * In addition parameters to the region to be created are passed in this @@ -1006,12 +1003,6 @@ static WStacking *prv(WGroup *ws, WStacking *st, bool wrap) typedef WStacking *NxtFn(WGroup *ws, WStacking *st, bool wrap); -static bool mapped_filt(WStacking *st, void *unused) -{ - return (st->reg!=NULL && REGION_IS_MAPPED(st->reg)); -} - - static bool focusable(WGroup *ws, WStacking *st, uint min_level) { return (st->reg!=NULL @@ -1030,7 +1021,7 @@ static WStacking *do_get_next(WGroup *ws, WStacking *sti, stacking=group_get_stacking(ws); if(stacking!=NULL) - min_level=stacking_min_level(stacking, mapped_filt, NULL); + min_level=stacking_min_level_mapped(stacking); st=sti; while(1){ @@ -1290,7 +1281,8 @@ static ExtlTab group_get_configuration(WGroup *ws) subtab=region_get_configuration(st->reg); if(subtab!=extl_table_none()){ - extl_table_sets_i(subtab, "sizepolicy", st->szplcy); + extl_table_sets_s(subtab, "sizepolicy", + sizepolicy2string(st->szplcy)); extl_table_sets_i(subtab, "level", st->level); tmpg=REGION_GEOM(st->reg); diff --git a/ioncore/group.h b/ioncore/group.h index d9a37ea..d4f2d26 100644 --- a/ioncore/group.h +++ b/ioncore/group.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_GROUP_H diff --git a/ioncore/groupedpholder.c b/ioncore/groupedpholder.c index 4112372..cce1a16 100644 --- a/ioncore/groupedpholder.c +++ b/ioncore/groupedpholder.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/groupedpholder.h b/ioncore/groupedpholder.h index 3fb9edd..d0edf68 100644 --- a/ioncore/groupedpholder.h +++ b/ioncore/groupedpholder.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_GROUPEDPHOLDER_H diff --git a/ioncore/grouppholder.c b/ioncore/grouppholder.c index aa6f5cf..3c2ed30 100644 --- a/ioncore/grouppholder.c +++ b/ioncore/grouppholder.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/grouppholder.h b/ioncore/grouppholder.h index cb0ab19..86974ad 100644 --- a/ioncore/grouppholder.h +++ b/ioncore/grouppholder.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_GROUPPHOLDER_H diff --git a/ioncore/infowin.c b/ioncore/infowin.c index f3c2da9..d23823e 100644 --- a/ioncore/infowin.c +++ b/ioncore/infowin.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/infowin.h b/ioncore/infowin.h index 799c128..26f2ef9 100644 --- a/ioncore/infowin.h +++ b/ioncore/infowin.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_INFOWIN_H diff --git a/ioncore/ioncore.c b/ioncore/ioncore.c index 49da6c7..097801d 100644 --- a/ioncore/ioncore.c +++ b/ioncore/ioncore.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -58,6 +55,7 @@ #include "llist.h" #include "exec.h" #include "screen-notify.h" +#include "key.h" #include "../version.h" @@ -273,6 +271,7 @@ static bool init_hooks() INIT_HOOK_(clientwin_mapped_hook); INIT_HOOK_(clientwin_unmapped_hook); INIT_HOOK_(clientwin_property_change_hook); + INIT_HOOK_(ioncore_submap_ungrab_hook); INIT_HOOK_(region_notify_hook); ADD_HOOK_(region_notify_hook, ioncore_frame_quasiactivation_notify); @@ -504,6 +503,7 @@ static bool ioncore_init_x(const char *display, int stflags) ioncore_g.atom_wm_window_role=XInternAtom(dpy, "WM_WINDOW_ROLE", False); ioncore_g.atom_checkcode=XInternAtom(dpy, "_ION_CWIN_RESTART_CHECKCODE", False); ioncore_g.atom_selection=XInternAtom(dpy, "_ION_SELECTION_STRING", False); + ioncore_g.atom_dockapp_hack=XInternAtom(dpy, "_ION_DOCKAPP_HACK", False); ioncore_g.atom_mwm_hints=XInternAtom(dpy, "_MOTIF_WM_HINTS", False); ioncore_init_xim(); diff --git a/ioncore/ioncore.h b/ioncore/ioncore.h index ace4908..d443631 100644 --- a/ioncore/ioncore.h +++ b/ioncore/ioncore.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_IONCORE_H diff --git a/ioncore/ioncore_bindings.lua b/ioncore/ioncore_bindings.lua index ec03ddd..aa52c74 100644 --- a/ioncore/ioncore_bindings.lua +++ b/ioncore/ioncore_bindings.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- local ioncore=_G.ioncore @@ -140,6 +137,24 @@ function ioncore.kpress_wait(keyspec, cmd, guard) return putcmd(cmd, guard, {action = "kpress_wait", kcb = keyspec}) end +--DOC +-- Submap enter event for bindings. +function ioncore.submap_enter(cmd, guard) + return putcmd(cmd, guard, {action = "submap_enter"}) +end + +--DOC +-- Submap modifier release event for bindings. +function ioncore.submap_wait(cmd, guard) + return putcmd(cmd, guard, {action = "submap_wait"}) +end + +-- DOC +-- Submap leave event for bindings. +--function ioncore.submap_leave(cmd, guard) +-- return putcmd(cmd, guard, {action = "submap_leave"}) +--end + local function mact(act_, kcb_, cmd, guard) local st, en, kcb2_, area_=string.find(kcb_, "([^@]*)@(.*)") return putcmd(cmd, guard, { diff --git a/ioncore/ioncore_efbb.lua b/ioncore/ioncore_efbb.lua index af1134c..982f2d6 100644 --- a/ioncore/ioncore_efbb.lua +++ b/ioncore/ioncore_efbb.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- warn(TR([[ diff --git a/ioncore/ioncore_ext.lua b/ioncore/ioncore_ext.lua index 2255bdd..dde9195 100644 --- a/ioncore/ioncore_ext.lua +++ b/ioncore/ioncore_ext.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- -- This is a slight abuse of the package.loaded variable perhaps, but @@ -28,6 +25,7 @@ dopath('ioncore_winprops') dopath('ioncore_misc') dopath('ioncore_wd') dopath('ioncore_menudb') +dopath('ioncore_tabnum') -- Modifier setup compatibility kludge local oldindex @@ -57,6 +55,8 @@ setmetatable(_G, newmeta) -- Export some important functions into global namespace. export(ioncore, "submap", + "submap_enter", + "submap_wait", "kpress", "kpress_wait", "mpress", diff --git a/ioncore/ioncore_luaext.lua b/ioncore/ioncore_luaext.lua index b361593..c8e94f4 100644 --- a/ioncore/ioncore_luaext.lua +++ b/ioncore/ioncore_luaext.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- diff --git a/ioncore/ioncore_menudb.lua b/ioncore/ioncore_menudb.lua index 4286054..0248b14 100644 --- a/ioncore/ioncore_menudb.lua +++ b/ioncore/ioncore_menudb.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- local ioncore=_G.ioncore @@ -405,12 +402,16 @@ local function sortmenu(m) end -function menus.ctxmenu(reg, sub_or_chld) +function menus.ctxmenu(reg, sub) local m, r, s + if obj_is(sub, "WGroup") then + sub=(sub:bottom() or sub) + end + -- First, stuff between reg (inclusive) and sub_or_chld (inclusive) -- at the top level in the menu. - r=(sub_or_chld or reg) + r=(sub or reg) while r and s~=reg do local mm=get_ctxmenu(r, s) m=((m and table.icat(mm, m)) or mm) diff --git a/ioncore/ioncore_misc.lua b/ioncore/ioncore_misc.lua index 4637279..1781765 100644 --- a/ioncore/ioncore_misc.lua +++ b/ioncore/ioncore_misc.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- local group_tmpl = { type="WGroupWS" } diff --git a/ioncore/ioncore_tabnum.lua b/ioncore/ioncore_tabnum.lua new file mode 100644 index 0000000..e9161b8 --- /dev/null +++ b/ioncore/ioncore_tabnum.lua @@ -0,0 +1,49 @@ +-- +-- ion/share/ioncore_tabnum.lua -- Ioncore tab numbering support +-- +-- Copyright (c) Tuomo Valkonen 2007. +-- +-- See the included file LICENSE for details. +-- + +ioncore.tabnum={} + +local framestate={} + +local function do_show(frame) + frame:set_grattr('numbered', 'set') + framestate[frame]='set' +end + +--DOC +-- Show tab numbers on \var{frame}, clearing them when submap +-- grab is released the next time. If \var{delay} is given, in +-- milliseconds, the numbers are not actually displayed until this +-- time has passed. +function ioncore.tabnum.show(frame, delay) + if delay and delay>0 then + local tmr=ioncore.create_timer() + framestate[frame]=tmr + tmr:set(delay, function() do_show(frame) end) + else + do_show(frame) + end +end + +--DOC +-- Clear all tab numbers set by \fnref{ioncore.tabnum.show}. +function ioncore.tabnum.clear() + local st=framestate + framestate={} + + for f, s in pairs(st) do + if s=='set' then + f:set_grattr('numbered', 'unset') + elseif obj_is(s, "WTimer") then + s:reset() + end + end +end + +ioncore.get_hook("ioncore_submap_ungrab_hook") + :add(ioncore.tabnum.clear) diff --git a/ioncore/ioncore_wd.lua b/ioncore/ioncore_wd.lua index 8b1f6ce..cdb7a36 100644 --- a/ioncore/ioncore_wd.lua +++ b/ioncore/ioncore_wd.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- local savefile="saved_wd" diff --git a/ioncore/ioncore_winprops.lua b/ioncore/ioncore_winprops.lua index c241d63..6a6ca51 100644 --- a/ioncore/ioncore_winprops.lua +++ b/ioncore/ioncore_winprops.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- local ioncore=_G.ioncore @@ -56,7 +53,7 @@ function ioncore.getwinprop(cwin) props={} pcall(function() props=winprops[c][r][i] or {} end) for idx, prop in ipairs_r(props) do - if prop:match(cwin) then + if prop:match(cwin, id) then if prop.oneshot then table.remove(props, idx) end @@ -82,7 +79,7 @@ local function ensure_winproptab(class, role, instance) end end -local function do_add_winprop(class, role, instance, name, prop) +local function do_add_winprop(class, role, instance, prop) ensure_winproptab(class, role, instance) table.insert(winprops[class][role][instance], prop) end @@ -90,10 +87,25 @@ end --DOC -- The basic name-based winprop matching criteria. -function ioncore.match_winprop_name(prop, cwin) - if not prop.name then - return true - else +function ioncore.match_winprop_dflt(prop, cwin, id) + local function chkf(p, i) + if p==nil then + return true + else + return (p==(i and true)) + -- hack for nil + end + end + + if not chkf(prop.is_transient, id.is_transient) then + return false + end + + if not chkf(prop.is_dockapp, id.is_dockapp) then + return false + end + + if prop.name then local nm=cwin:name() if nm then local st, en=string.find(nm, prop.name) @@ -102,6 +114,8 @@ function ioncore.match_winprop_name(prop, cwin) return false end end + + return true end @@ -123,9 +137,9 @@ function ioncore.defwinprop(list) end if not list2.match then - list2.match=ioncore.match_winprop_name + list2.match=ioncore.match_winprop_dflt end - do_add_winprop(class, role, instance, name, list2) + do_add_winprop(class, role, instance, list2) end diff --git a/ioncore/kbresize.c b/ioncore/kbresize.c index b4dbc7b..0a4e951 100644 --- a/ioncore/kbresize.c +++ b/ioncore/kbresize.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/kbresize.h b/ioncore/kbresize.h index 637cf63..b4ac87a 100644 --- a/ioncore/kbresize.h +++ b/ioncore/kbresize.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_KBRESIZE_H diff --git a/ioncore/key.c b/ioncore/key.c index 57ada80..4134ab7 100644 --- a/ioncore/key.c +++ b/ioncore/key.c @@ -3,14 +3,15 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include + #include +#include +#include + #include "common.h" #include "key.h" #include "binding.h" @@ -19,7 +20,6 @@ #include "cursor.h" #include "grab.h" #include "regbind.h" -#include #include "strings.h" #include "xwindow.h" @@ -97,9 +97,7 @@ void clientwin_quote_next(WClientWin *cwin) static bool waitrelease_handler(WRegion *reg, XEvent *ev) { - if(!ioncore_unmod(ev->xkey.state, ev->xkey.keycode)) - return TRUE; - return FALSE; + return (ioncore_unmod(ev->xkey.state, ev->xkey.keycode)==0); } @@ -120,29 +118,63 @@ static void waitrelease(WRegion *reg) } -static void free_subs(WSubmapState *p) +static void free_sub(WSubmapState *p) { - WSubmapState *next; + /*extl_unref_fn(p->leave); + watch_reset(&p->leave_reg); + */ - while(p!=NULL){ - next=p->next; - free(p); - p=next; + free(p); +} + + +void region_free_submapstat(WRegion *reg) +{ + while(reg->submapstat!=NULL){ + WSubmapState *p=reg->submapstat; + reg->submapstat=p->next; + free_sub(p); } } +WHook *ioncore_submap_ungrab_hook=NULL; + + +static void call_submap_ungrab_hook() +{ + hook_call_v(ioncore_submap_ungrab_hook); +} + + static void clear_subs(WRegion *reg) { - while(reg->submapstat!=NULL){ - WSubmapState *tmp=reg->submapstat; - reg->submapstat=tmp->next; - free(tmp); + region_free_submapstat(reg); + mainloop_defer_action(NULL, (WDeferredAction*)call_submap_ungrab_hook); +/* + while(reg!=NULL && reg->submapstat!=NULL){ + WSubmapState *p=reg->submapstat; + reg->submapstat=p->next; + + if(p->leave!=extl_fn_none() && p->leave_reg.obj!=NULL){ + Watch regw=WATCH_INIT; + + watch_setup(®w, (Obj*)reg, NULL); + + extl_call(p->leave, "o", NULL, p->leave_reg.obj); + + reg=(WRegion*)regw.obj; + + watch_reset(®w); + } + + free_sub(p); } +*/ } -static bool add_sub(WRegion *reg, uint key, uint state) +static WSubmapState *add_sub(WRegion *reg, uint key, uint state) { WSubmapState **p; WSubmapState *s; @@ -159,14 +191,16 @@ static bool add_sub(WRegion *reg, uint key, uint state) s=ALLOC(WSubmapState); if(s==NULL) - return FALSE; + return NULL; s->key=key; s->state=state; + /*s->leave=extl_fn_none(); + watch_init(&s->leave_reg);*/ *p=s; - return TRUE; + return s; } @@ -189,88 +223,159 @@ bool ioncore_current_key(uint *kcb, uint *state, bool *sub) } -/* Return value TRUE = grab needed */ -static bool do_key(WRegion *reg, XKeyEvent *ev) +enum{GRAB_NONE, GRAB_SUBMAP, GRAB_WAITRELEASE}; + + +static WBinding *lookup_binding_(WRegion *reg, + int act, uint state, uint kcb, + WSubmapState *st, + WRegion **binding_owner, WRegion **subreg) { - WBinding *binding=NULL; - WRegion *oreg=NULL, *binding_owner=NULL, *subreg=NULL; - bool grabbed; + WBinding *binding; - oreg=reg; - grabbed=(oreg->flags®ION_BINDINGS_ARE_GRABBED); + *subreg=NULL; - if(grabbed){ - /* Find the deepest nested active window grabbing this key. */ - while(reg->active_sub!=NULL) - reg=reg->active_sub; + do{ + binding=region_lookup_keybinding(reg, act, state, kcb, st, + binding_owner); - do{ - binding=region_lookup_keybinding(reg, ev, oreg->submapstat, - &binding_owner); + if(binding!=NULL) + break; - if(binding!=NULL) - break; - if(OBJ_IS(reg, WRootWin)) - break; - - subreg=reg; - reg=REGION_PARENT_REG(reg); - }while(reg!=NULL); + if(OBJ_IS(reg, WRootWin)) + break; + + *subreg=reg; + reg=REGION_PARENT_REG(reg); + }while(reg!=NULL); + + return binding; +} + +static WBinding *lookup_binding(WRegion *oreg, + int act, uint state, uint kcb, + WRegion **binding_owner, WRegion **subreg) +{ + WRegion *reg=oreg; + + /* Find the deepest nested active window grabbing this key. */ + while(reg->active_sub!=NULL) + reg=reg->active_sub; + + return lookup_binding_(reg, act, state, kcb, oreg->submapstat, + binding_owner, subreg); +} + + +static void do_call_binding(WBinding *binding, WRegion *reg, WRegion *subreg) +{ + WRegion *mgd=region_managed_within(reg, subreg); + + /* TODO: having to pass both mgd and subreg for some handlers + * to work is ugly and complex. + */ + extl_call(binding->func, "ooo", NULL, reg, mgd, subreg); +} + + +static int do_key(WRegion *oreg, XKeyEvent *ev) +{ + WBinding *binding=NULL; + WRegion *binding_owner=NULL, *subreg=NULL; + bool grabbed=(oreg->flags®ION_BINDINGS_ARE_GRABBED); + int ret=GRAB_NONE; + + if(grabbed){ + binding=lookup_binding(oreg, BINDING_KEYPRESS, ev->state, ev->keycode, + &binding_owner, &subreg); }else{ - binding=region_lookup_keybinding(oreg, ev, oreg->submapstat, + binding=region_lookup_keybinding(oreg, BINDING_KEYPRESS, + ev->state, ev->keycode, + oreg->submapstat, &binding_owner); } if(binding!=NULL){ + bool subs=(oreg->submapstat!=NULL); + WBinding *call=NULL; + if(binding->submap!=NULL){ - if(add_sub(oreg, ev->keycode, ev->state)) - return grabbed; - else - clear_subs(oreg); - }else if(binding_owner!=NULL){ - WRegion *mgd=region_managed_within(binding_owner, subreg); - bool subs=(oreg->submapstat!=NULL); - - clear_subs(oreg); + WSubmapState *s=add_sub(oreg, ev->keycode, ev->state); + if(s!=NULL){ + /*WRegion *own2, *subreg2; + + call=lookup_binding(binding_owner, BINDING_SUBMAP_LEAVE, 0, 0, + oreg->submapstat, &own2, &subreg2); + + if(call!=NULL){ + s->leave=extl_ref_fn(call->func); + watch_setup(&s->leave_reg, (Obj*)own2, NULL); + }*/ + + call=lookup_binding_(binding_owner, BINDING_SUBMAP_ENTER, 0, 0, + oreg->submapstat, + &binding_owner, &subreg); + + ret=(grabbed ? GRAB_SUBMAP : GRAB_NONE); + } + }else{ + call=binding; if(grabbed) XUngrabKeyboard(ioncore_g.dpy, CurrentTime); + if(ev->state!=0 && !subs && binding->wait) + ret=GRAB_WAITRELEASE; + } + + if(call!=NULL){ current_kcb=ev->keycode; current_state=ev->state; current_submap=subs; - /* TODO: having to pass both mgd and subreg for some handlers - * to work is ugly and complex. - */ - extl_call(binding->func, "ooo", NULL, binding_owner, mgd, subreg); + do_call_binding(call, binding_owner, subreg); current_kcb=0; - - if(ev->state!=0 && !subs && binding->wait) - waitrelease(oreg); } - }else if(oreg->submapstat!=NULL){ - clear_subs(oreg); - }else if(OBJ_IS(oreg, WWindow)){ + }else if(oreg->submapstat==NULL && OBJ_IS(oreg, WWindow)){ insstr((WWindow*)oreg, ev); } - return FALSE; + return ret; } static bool submapgrab_handler(WRegion* reg, XEvent *xev) { XKeyEvent *ev=&xev->xkey; - if(ev->type!=KeyPress) + if(ev->type!=KeyPress){ + if(ioncore_unmod(ev->state, ev->keycode)==0){ + WBinding *binding; + WRegion *binding_owner, *subreg; + + binding=lookup_binding(reg, + BINDING_SUBMAP_RELEASEMOD, 0, 0, + &binding_owner, &subreg); + + if(binding!=NULL) + do_call_binding(binding, binding_owner, subreg); + } return FALSE; + } + if(ioncore_ismod(ev->keycode)) return FALSE; - return !do_key(reg, ev); + if(do_key(reg, ev)!=GRAB_SUBMAP){ + clear_subs(reg); + return TRUE; + }else{ + return FALSE; + } } + + static void submapgrab(WRegion *reg) { ioncore_grab_establish(reg, submapgrab_handler, clear_subs, 0); @@ -283,7 +388,25 @@ void ioncore_do_handle_keypress(XKeyEvent *ev) WRegion *reg=(WRegion*)XWINDOW_REGION_OF(ev->window); if(reg!=NULL){ - if(do_key(reg, ev)) - submapgrab(reg); + Watch w=WATCH_INIT; + int grab; + + /* reg might be destroyed by binding handlers */ + watch_setup(&w, (Obj*)reg, NULL); + + grab=do_key(reg, ev); + + reg=(WRegion*)w.obj; + + if(reg!=NULL){ + if(grab==GRAB_SUBMAP) + submapgrab(reg); + else if(grab==GRAB_WAITRELEASE) + waitrelease(reg); + else if(grab==GRAB_NONE && reg->submapstat!=NULL) + clear_subs(reg); + } + + watch_reset(&w); } } diff --git a/ioncore/key.h b/ioncore/key.h index 35d8d55..059ca5d 100644 --- a/ioncore/key.h +++ b/ioncore/key.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_KEY_H @@ -14,6 +11,7 @@ #include +#include #include "common.h" #include "clientwin.h" @@ -21,4 +19,8 @@ extern void ioncore_do_handle_keypress(XKeyEvent *ev); extern void clientwin_quote_next(WClientWin *cwin); extern bool ioncore_current_key(uint *kcb, uint *state, bool *sub); +extern void region_free_submapstat(WRegion *reg); + +extern WHook *ioncore_submap_ungrab_hook; + #endif /* ION_IONCORE_KEY_H */ diff --git a/ioncore/llist.c b/ioncore/llist.c index 657a9e3..ecee912 100644 --- a/ioncore/llist.c +++ b/ioncore/llist.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include "common.h" diff --git a/ioncore/llist.h b/ioncore/llist.h index 32ac441..ebe71f8 100644 --- a/ioncore/llist.h +++ b/ioncore/llist.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_LLIST_H diff --git a/ioncore/manage.c b/ioncore/manage.c index 2eb6f38..bcc8a53 100644 --- a/ioncore/manage.c +++ b/ioncore/manage.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -74,8 +71,8 @@ static WPHolder *try_target(WClientWin *cwin, const WManageParams *param, if(r==NULL) return NULL; - - return region_prepare_manage(r, cwin, param, MANAGE_REDIR_PREFER_NO); + + return region_prepare_manage(r, cwin, param, MANAGE_PRIORITY_NONE); } @@ -118,7 +115,7 @@ static bool handle_target_winprops(WClientWin *cwin, const WManageParams *param, if(ph==NULL){ ph=region_prepare_manage(reg, cwin, param, - MANAGE_REDIR_PREFER_YES); + MANAGE_PRIORITY_NONE); if(ph==NULL) destroy_obj((Obj*)reg); @@ -159,7 +156,7 @@ static bool try_fullscreen(WClientWin *cwin, WScreen *dflt, if(fs_scr!=NULL){ WPHolder *fs_ph=region_prepare_manage((WRegion*)fs_scr, cwin, param, - MANAGE_REDIR_STRICT_NO); + MANAGE_PRIORITY_NOREDIR); if(fs_ph!=NULL){ int swf=(param->switchto ? PHOLDER_ATTACH_SWITCHTO : 0); @@ -208,8 +205,8 @@ bool clientwin_do_manage_default(WClientWin *cwin, if(ph==NULL){ /* Find a placeholder for non-fullscreen state */ ph=region_prepare_manage((WRegion*)scr, cwin, param, - MANAGE_REDIR_PREFER_YES); - + MANAGE_PRIORITY_NONE); + if(try_fullscreen(cwin, scr, param)){ if(pholder_target(ph)!=(WRegion*)region_screen_of((WRegion*)cwin)){ WRegion *grp=region_groupleader_of((WRegion*)cwin); @@ -245,29 +242,25 @@ bool clientwin_do_manage_default(WClientWin *cwin, WPHolder *region_prepare_manage(WRegion *reg, const WClientWin *cwin, - const WManageParams *param, int redir) + const WManageParams *param, int priority) { WPHolder *ret=NULL; CALL_DYN_RET(ret, WPHolder*, region_prepare_manage, reg, - (reg, cwin, param, redir)); + (reg, cwin, param, priority)); return ret; } WPHolder *region_prepare_manage_default(WRegion *reg, const WClientWin *cwin, - const WManageParams *param, int redir) + const WManageParams *param, int priority) { - WRegion *curr; - - if(redir==MANAGE_REDIR_STRICT_NO) - return NULL; - - curr=region_current(reg); + int cpriority=MANAGE_PRIORITY_SUB(priority, MANAGE_PRIORITY_NONE); + WRegion *curr=region_current(reg); if(curr==NULL) return NULL; - return region_prepare_manage(curr, cwin, param, MANAGE_REDIR_PREFER_YES); + return region_prepare_manage(curr, cwin, param, cpriority); } @@ -298,10 +291,10 @@ WPHolder *region_prepare_manage_transient_default(WRegion *reg, bool region_manage_clientwin(WRegion *reg, WClientWin *cwin, - const WManageParams *par, int redir) + const WManageParams *par, int priority) { bool ret; - WPHolder *ph=region_prepare_manage(reg, cwin, par, redir); + WPHolder *ph=region_prepare_manage(reg, cwin, par, priority); int swf=(par->switchto ? PHOLDER_ATTACH_SWITCHTO : 0); if(ph==NULL) diff --git a/ioncore/manage.h b/ioncore/manage.h index 45ddf6a..d0faed2 100644 --- a/ioncore/manage.h +++ b/ioncore/manage.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_MANAGE_H @@ -28,12 +25,29 @@ INTRSTRUCT(WManageParams); {FALSE, FALSE, FALSE, FALSE, FALSE, ForgetGravity, {0, 0, 0, 0}, NULL} enum{ - MANAGE_REDIR_PREFER_YES, - MANAGE_REDIR_PREFER_NO, - MANAGE_REDIR_STRICT_YES, - MANAGE_REDIR_STRICT_NO + MANAGE_PRIORITY_NONE, + MANAGE_PRIORITY_LOW, + MANAGE_PRIORITY_NORMAL, + MANAGE_PRIORITY_GROUP, + MANAGE_PRIORITY_NO, + /* Special */ + MANAGE_PRIORITY_NOREDIR }; +#define MANAGE_PRIORITY_OK(PRIORITY, OUR) \ + ((PRIORITY) <= (OUR) || (PRIORITY)==MANAGE_PRIORITY_NOREDIR) + +#define MANAGE_PRIORITY_SUB(PRIORITY, OUR) \ + ((PRIORITY)==MANAGE_PRIORITY_NOREDIR \ + ? MANAGE_PRIORITY_NO \ + : (PRIORITY) < (OUR) ? (OUR) : (PRIORITY)) + +#define MANAGE_PRIORITY_SUBX(PRIORITY, OUR) \ + ((PRIORITY)==MANAGE_PRIORITY_NOREDIR || (OUR) < (PRIORITY) \ + ? MANAGE_PRIORITY_NO \ + : MANAGE_PRIORITY_NONE) + + DECLSTRUCT(WManageParams){ bool switchto; bool jumpto; diff --git a/ioncore/modules.c b/ioncore/modules.c index 34d64c8..b49f95c 100644 --- a/ioncore/modules.c +++ b/ioncore/modules.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/modules.h b/ioncore/modules.h index 0d00e52..e73e108 100644 --- a/ioncore/modules.h +++ b/ioncore/modules.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_MODULES_H diff --git a/ioncore/mplex.c b/ioncore/mplex.c index 28dc48a..71943a4 100644 --- a/ioncore/mplex.c +++ b/ioncore/mplex.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -346,7 +343,7 @@ int mplex_get_index(WMPlex *mplex, WRegion *reg) /*EXTL_DOC - * Move \var{r} ''right'' within objects managed by \var{mplex} on list 1. + * Move \var{r} ``right'' within objects managed by \var{mplex} on list 1. */ EXTL_EXPORT_MEMBER void mplex_inc_index(WMPlex *mplex, WRegion *r) @@ -359,7 +356,7 @@ void mplex_inc_index(WMPlex *mplex, WRegion *r) /*EXTL_DOC - * Move \var{r} ''right'' within objects managed by \var{mplex} on list 1. + * Move \var{r} ``left'' within objects managed by \var{mplex} on list 1. */ EXTL_EXPORT_MEMBER void mplex_dec_index(WMPlex *mplex, WRegion *r) @@ -514,84 +511,126 @@ static void mplex_managed_rqgeom(WMPlex *mplex, WRegion *sub, /*{{{ Focus */ -static WStacking *mplex_do_to_focus(WMPlex *mplex, WStacking *to_try) -{ - WStacking *stacking=mplex_get_stacking(mplex); - WStacking *st=NULL; - - if(stacking==NULL) - return NULL; +typedef struct{ + WMPlex *mplex; + WStacking *to_try; + WStacking *group_st; + PtrList **hidelist; + bool try_hard; +} FiltData; - if(to_try!=NULL && (to_try->reg==NULL || !REGION_IS_MAPPED(to_try->reg))) - to_try=NULL; - - st=stacking_find_to_focus_mapped(stacking, to_try, NULL); - - if(st!=NULL) - return st; - else if(mplex->mx_current!=NULL) - return mplex->mx_current->st; - else - return NULL; -} - -static WStacking *maybe_focusable(WRegion *reg) +static WRegion *manager_within(WMPlex *mplex, WStacking *st) { - if(reg==NULL || !REGION_IS_MAPPED(reg)) - return NULL; - - return ioncore_find_stacking(reg); + return region_managed_within((WRegion*)mplex, st->reg); } -static WStacking *stacking_within(WMPlex *mplex, WRegion *reg) +static WStacking *stacking_within(WMPlex *mplex, WStacking *st) { - while(reg!=NULL && REGION_MANAGER(reg)!=(WRegion*)mplex) - reg=REGION_MANAGER(reg); + WRegion *reg=manager_within(mplex, st); - return maybe_focusable(reg); + return (reg==NULL + ? NULL + : (reg==st->reg + ? st + : ioncore_find_stacking(reg))); } -static WStacking *mplex_to_focus(WMPlex *mplex) +/* Mutually exclusive regions can't be pseudomodal */ +#define IS_PSEUDOMODAL(ST) ((ST)->lnode==NULL && (ST)->pseudomodal) + + +static bool mapped_pseudomodal_include_filt(WStacking *st, void *data_) { - WStacking *to_try=NULL; - WRegion *reg=NULL; + FiltData *data=(FiltData*)data_; + WStacking *stw; - to_try=maybe_focusable(REGION_ACTIVE_SUB(mplex)); + if(st->reg==NULL || !REGION_IS_MAPPED(st->reg)) + return FALSE; + + if(!data->hidelist + || (data->to_try==NULL && data->group_st==NULL) + || st->levelactive_next){ - to_try=stacking_within(mplex, reg); - if(to_try!=NULL) - break; - } + /* Ok, modal node in the way. Let's see if it is pseudomodal + * and can be hidden. + */ + + stw=stacking_within(data->mplex, st); + + /* This should not happen */ + if(stw==NULL || stw->reg==NULL) + return FALSE; + + /* The node is within the same group, so it can not be hidden. + * Latter case should not happen. + */ + if(stw==data->group_st || stw==data->to_try) + return TRUE; + + if(IS_PSEUDOMODAL(stw)){ + /* Don't insert multiple times. */ + return !ptrlist_reinsert_first(data->hidelist, stw); } + + return TRUE; +} + + +static bool mgr_pseudomodal_approve_filt(WStacking *st, void *data_) +{ + FiltData *data=(FiltData*)data_; - return mplex_do_to_focus(mplex, to_try); + return (data->group_st==NULL || st==data->group_st || + manager_within(data->mplex, st)==data->group_st->reg); } -static WStacking *mplex_do_to_focus_on(WMPlex *mplex, WStacking *node, - WStacking *to_try) +WStacking *mplex_find_to_focus(WMPlex *mplex, + WStacking *to_try, + WStacking *group_st, + PtrList **hidelist) { + WStackingFilter *fi=mapped_pseudomodal_include_filt; + WStackingFilter *fa=mgr_pseudomodal_approve_filt; WStacking *stacking=mplex_get_stacking(mplex); - WStacking *st=NULL; + FiltData data; + WStacking *st; if(stacking==NULL) return NULL; - + if(to_try!=NULL && (to_try->reg==NULL || !REGION_IS_MAPPED(to_try->reg))) to_try=NULL; - return stacking_find_to_focus_mapped(stacking, to_try, node->reg); + data.mplex=mplex; + data.to_try=to_try; + data.group_st=group_st; + data.hidelist=hidelist; + + st=stacking_find_to_focus(stacking, to_try, fi, fa, &data); + + if(st==NULL && hidelist!=NULL) + ptrlist_clear(hidelist); + + return st; +} + + +static WStacking *mplex_do_to_focus(WMPlex *mplex, WStacking *to_try, + PtrList **hidelist) +{ + return mplex_find_to_focus(mplex, to_try, NULL, hidelist); } -static WStacking *mplex_to_focus_on(WMPlex *mplex, WStacking *node, - WStacking *to_try) +static WStacking *mplex_do_to_focus_on(WMPlex *mplex, WStacking *node, + WStacking *to_try, + PtrList **hidelist) { WGroup *grp=OBJ_CAST(node->reg, WGroup); WStacking *st; @@ -599,17 +638,71 @@ static WStacking *mplex_to_focus_on(WMPlex *mplex, WStacking *node, if(grp!=NULL){ if(to_try==NULL) to_try=grp->current_managed; - st=mplex_do_to_focus_on(mplex, node, to_try); + st=mplex_find_to_focus(mplex, to_try, node, hidelist); if(st!=NULL || to_try!=NULL) return st; + if(hidelist!=NULL) + ptrlist_clear(hidelist); /* We don't know whether something is blocking focus here, * or if there was nothing to focus (as node->reg itself * isn't on the stacking list). */ } - st=mplex_do_to_focus(mplex, node); - return (st==node ? st : NULL); + st=mplex_do_to_focus(mplex, node, hidelist); + + if(st==node) + return st; + + if(hidelist!=NULL) + ptrlist_clear(hidelist); + + return NULL; +} + + +static WStacking *maybe_focusable(WRegion *reg) +{ + if(reg==NULL || !REGION_IS_MAPPED(reg)) + return NULL; + + return ioncore_find_stacking(reg); +} + + +static WStacking *has_stacking_within(WMPlex *mplex, WRegion *reg) +{ + while(reg!=NULL && REGION_MANAGER(reg)!=(WRegion*)mplex) + reg=REGION_MANAGER(reg); + + return maybe_focusable(reg); +} + + +static WStacking *mplex_to_focus(WMPlex *mplex) +{ + WStacking *to_try=NULL; + WRegion *reg=NULL; + WStacking *st; + + to_try=maybe_focusable(REGION_ACTIVE_SUB(mplex)); + + if(to_try==NULL){ + /* Search focus history */ + for(reg=ioncore_g.focus_current; reg!=NULL; reg=reg->active_next){ + to_try=has_stacking_within(mplex, reg); + if(to_try!=NULL) + break; + } + } + + st=mplex_do_to_focus(mplex, to_try, NULL); + + return (st!=NULL + ? st + : (mplex->mx_current!=NULL + ? mplex->mx_current->st + : NULL)); } @@ -726,7 +819,7 @@ static bool mplex_refocus(WMPlex *mplex, WStacking *node, bool warp) bool ret=TRUE; if(node!=NULL){ - foc=mplex_to_focus_on(mplex, node, NULL); + foc=mplex_do_to_focus_on(mplex, node, NULL, NULL); ret=(foc!=NULL); } @@ -746,24 +839,33 @@ bool mplex_do_prepare_focus(WMPlex *mplex, WStacking *node, WStacking *sub, int flags, WPrepareFocusResult *res) { + bool ew=(flags®ION_GOTO_ENTERWINDOW); + PtrList *hidelist=NULL; + PtrList **hidelistp=(ew ? NULL : &hidelist); WStacking *foc; if(sub==NULL && node==NULL) return FALSE; /* Display the node in any case */ - if(node!=NULL && !(flags®ION_GOTO_ENTERWINDOW)) + if(node!=NULL && !ew) mplex_do_node_display(mplex, node, TRUE); if(!region_prepare_focus((WRegion*)mplex, flags, res)) return FALSE; if(node!=NULL) - foc=mplex_to_focus_on(mplex, node, sub); + foc=mplex_do_to_focus_on(mplex, node, sub, hidelistp); else - foc=mplex_do_to_focus(mplex, sub); + foc=mplex_do_to_focus(mplex, sub, hidelistp); if(foc!=NULL){ + while(hidelist!=NULL){ + WStacking *st=(WStacking*)ptrlist_take_first(&hidelist); + st->hidden=TRUE; + region_unmap(st->reg); + } + if(ioncore_g.autoraise && !(flags®ION_GOTO_ENTERWINDOW) && foc->level>STACKING_LEVEL_BOTTOM){ @@ -883,7 +985,8 @@ bool mplex_set_hidden(WMPlex *mplex, WRegion *reg, int sp) /*EXTL_DOC * Set the visibility of the region \var{reg} on \var{mplex} - * as specified with the parameter \var{how} (set/unset/toggle). + * as specified with the parameter \var{how} + * (one of \codestr{set}, \codestr{unset}, or \codestr{toggle}). * The resulting state is returned. */ EXTL_EXPORT_AS(WMPlex, set_hidden) @@ -1108,16 +1211,13 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph) : SIZEPOLICY_FULL_EXACT)); modal=(param->flags&MPLEX_ATTACH_LEVEL - ? param->level>=STACKING_LEVEL_MODAL1 - : param->flags&MPLEX_ATTACH_MODAL); + && param->level>=STACKING_LEVEL_MODAL1); level=(param->flags&MPLEX_ATTACH_LEVEL ? param->level - : (param->flags&MPLEX_ATTACH_MODAL - ? STACKING_LEVEL_MODAL1 - : (param->flags&MPLEX_ATTACH_UNNUMBERED - ? STACKING_LEVEL_NORMAL - : STACKING_LEVEL_BOTTOM))); + : (param->flags&MPLEX_ATTACH_UNNUMBERED + ? STACKING_LEVEL_NORMAL + : STACKING_LEVEL_BOTTOM)); hidden=(param->flags&MPLEX_ATTACH_HIDDEN && (param->flags&MPLEX_ATTACH_UNNUMBERED @@ -1160,6 +1260,7 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph) node->hidden=TRUE; node->szplcy=szplcy; node->level=level; + node->pseudomodal=(param->flags&MPLEX_ATTACH_PSEUDOMODAL ? 1 : 0); if(lnode!=NULL){ llist_link_after(&(mplex->mx_list), @@ -1283,17 +1384,20 @@ static void get_params(WMPlex *mplex, ExtlTab tab, int mask, { int layer=1; int tmp; + char *tmpstr; int ok=~mask; - if(extl_table_gets_i(tab, "level", &tmp)){ - if(tmp>=0 && ok&MPLEX_ATTACH_LEVEL){ - par->flags|=MPLEX_ATTACH_LEVEL; - par->level=tmp; + if(ok&MPLEX_ATTACH_LEVEL){ + if(extl_table_gets_i(tab, "level", &tmp)){ + if(tmp>=0){ + par->flags|=MPLEX_ATTACH_LEVEL; + par->level=tmp; + } } - } - if(extl_table_is_bool_set(tab, "modal")) - par->flags|=MPLEX_ATTACH_MODAL&ok; + if(extl_table_is_bool_set(tab, "modal")) + par->level=maxof(par->level, STACKING_LEVEL_MODAL1); + } if(extl_table_is_bool_set(tab, "unnumbered")) par->flags|=MPLEX_ATTACH_UNNUMBERED&ok; @@ -1303,12 +1407,23 @@ static void get_params(WMPlex *mplex, ExtlTab tab, int mask, if(extl_table_is_bool_set(tab, "hidden")) par->flags|=MPLEX_ATTACH_HIDDEN&ok; + + if(extl_table_is_bool_set(tab, "pseudomodal")) + par->flags|=MPLEX_ATTACH_PSEUDOMODAL&ok; if(extl_table_gets_i(tab, "index", &(par->index))) par->flags|=MPLEX_ATTACH_INDEX&ok; - if(extl_table_gets_i(tab, "sizepolicy", &tmp)){ - if(ok&MPLEX_ATTACH_SIZEPOLICY){ + if(ok&MPLEX_ATTACH_SIZEPOLICY){ + if(extl_table_gets_s(tab, "sizepolicy", &tmpstr)){ + WSizePolicy tmpp; + if(string2sizepolicy(tmpstr, &tmpp)){ + par->flags|=MPLEX_ATTACH_SIZEPOLICY; + par->szplcy=tmpp; + } + free(tmpstr); + }else if(extl_table_gets_i(tab, "sizepolicy", &tmp)){ + /* Backwards compat. numeric version */ par->flags|=MPLEX_ATTACH_SIZEPOLICY; par->szplcy=tmp; } @@ -1374,7 +1489,11 @@ WRegion *mplex_attach_new_(WMPlex *mplex, WMPlexAttachParams *par, * \var{hidden} & (boolean) Attach hidden, if not prevented * by e.g. the mutually exclusive list being empty. * This option overrides \var{switchto}. \\ - * \var{sizepolicy} & (integer) Size policy. \\ + * \var{pseudomodal} & (boolean) The attached region is ``pseudomodal'' + * if the stacking level dictates it to be modal. + * This means that the region may be hidden to display + * regions with lesser stacking levels. \\ + * \var{sizepolicy} & (string) Size policy; see Section \ref{sec:sizepolicies}. \\ * \var{geom} & (table) Geometry specification. \\ * \end{tabularx} * @@ -1410,33 +1529,32 @@ static bool mplex_handle_drop(WMPlex *mplex, int x, int y, WPHolder *mplex_prepare_manage(WMPlex *mplex, const WClientWin *cwin, - const WManageParams *param, int redir) + const WManageParams *param, int priority) { + int cpriority=MANAGE_PRIORITY_SUB(priority, MANAGE_PRIORITY_NORMAL); WMPlexAttachParams ap; WPHolder *ph=NULL; WMPlexPHolder *mph; WLListNode *after; - if(redir==MANAGE_REDIR_STRICT_YES || redir==MANAGE_REDIR_PREFER_YES){ + /* Check current */ { WStacking *cur=mplex_current_node(mplex); if(cur!=NULL){ - ph=region_prepare_manage(cur->reg, cwin, param, - MANAGE_REDIR_PREFER_YES); + ph=region_prepare_manage(cur->reg, cwin, param, cpriority); if(ph!=NULL) return ph; } if(mplex->mx_current!=NULL && mplex->mx_current->st!=cur){ ph=region_prepare_manage(mplex->mx_current->st->reg, - cwin, param, - MANAGE_REDIR_PREFER_YES); + cwin, param, cpriority); if(ph!=NULL) return ph; } } - if(redir==MANAGE_REDIR_STRICT_YES) + if(!MANAGE_PRIORITY_OK(priority, MANAGE_PRIORITY_NORMAL)) return NULL; ap.flags=((param->switchto ? MPLEX_ATTACH_SWITCHTO : 0) @@ -1655,12 +1773,13 @@ static bool do_attach_stdisp(WRegion *mplex, WRegion *reg, void *unused) * \begin{tabularx}{\linewidth}{lX} * \tabhead{Field & Description} * \var{pos} & The corner of the screen to place the status display - * in. One of \code{tl}, \code{tr}, \var{bl} or \var{br}. \\ - * \var{action} & If this field is set to \code{keep}, \var{corner} + * in: one of \codestr{tl}, \codestr{tr}, \codestr{bl} + * or \codestr{br}. \\ + * \var{action} & If this field is set to \codestr{keep}, \var{corner} * and \var{orientation} are changed for the existing - * status display. If this field is set to \var{remove}, + * status display. If this field is set to \codestr{remove}, * the existing status display is removed. If this - * field is not set or is set to \code{replace}, a + * field is not set or is set to \codestr{replace}, a * new status display is created and the old, if any, * removed. \\ * \end{tabularx} @@ -1891,13 +2010,16 @@ static void save_node(WMPlex *mplex, ExtlTab subs, int *n, if(st!=extl_table_none()){ if(mplex->mx_current!=NULL && node==mplex->mx_current->st) extl_table_sets_b(st, "switchto", TRUE); - extl_table_sets_i(st, "sizepolicy", node->szplcy); + extl_table_sets_s(st, "sizepolicy", + sizepolicy2string(node->szplcy)); extl_table_sets_i(st, "level", node->level); g=extl_table_from_rectangle(®ION_GEOM(node->reg)); extl_table_sets_t(st, "geom", g); extl_unref_table(g); if(STACKING_IS_HIDDEN(node)) extl_table_sets_b(st, "hidden", TRUE); + if(STACKING_IS_PSEUDOMODAL(node)) + extl_table_sets_b(st, "pseudomodal", TRUE); if(unnumbered) extl_table_sets_b(st, "unnumbered", TRUE); diff --git a/ioncore/mplex.h b/ioncore/mplex.h index 21e4a81..08289f0 100644 --- a/ioncore/mplex.h +++ b/ioncore/mplex.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_MPLEX_H @@ -33,7 +30,7 @@ #define MPLEX_ATTACH_SWITCHTO 0x0001 /* switch to region */ #define MPLEX_ATTACH_UNNUMBERED 0x0002 /* do not put on mut.ex list */ #define MPLEX_ATTACH_HIDDEN 0x0004 /* should be hidden */ -#define MPLEX_ATTACH_MODAL 0x0008 /* shortcut.. */ +#define MPLEX_ATTACH_PSEUDOMODAL 0x0004 /* pseudomodal (if modal) */ #define MPLEX_ATTACH_LEVEL 0x0010 /* level field set */ #define MPLEX_ATTACH_GEOM 0x0020 /* geometry field is set */ #define MPLEX_ATTACH_SIZEPOLICY 0x0040 /* size policy field is set */ diff --git a/ioncore/mplexpholder.c b/ioncore/mplexpholder.c index 478ac2d..623b60a 100644 --- a/ioncore/mplexpholder.c +++ b/ioncore/mplexpholder.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/mplexpholder.h b/ioncore/mplexpholder.h index 5a98922..be49317 100644 --- a/ioncore/mplexpholder.h +++ b/ioncore/mplexpholder.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_MPLEXPHOLDER_H diff --git a/ioncore/mwmhints.c b/ioncore/mwmhints.c index 2c2269c..a2bb33d 100644 --- a/ioncore/mwmhints.c +++ b/ioncore/mwmhints.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include "common.h" diff --git a/ioncore/mwmhints.h b/ioncore/mwmhints.h index 09571f3..9a64eb3 100644 --- a/ioncore/mwmhints.h +++ b/ioncore/mwmhints.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_MWMHINTS_H diff --git a/ioncore/names.c b/ioncore/names.c index 5f3c386..b7a8668 100644 --- a/ioncore/names.c +++ b/ioncore/names.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ @@ -449,7 +446,7 @@ bool clientwin_register(WClientWin *cwin) /*EXTL_DOC * Set the name of \var{reg} to \var{p}. If the name is already in use, - * an instance number suffix \code{} will be attempted. If \var{p} has + * an instance number suffix \codestr{} will be attempted. If \var{p} has * such a suffix, it will be modified, otherwise such a suffix will be * added. Setting \var{p} to nil will cause current name to be removed. */ @@ -466,7 +463,7 @@ bool region_set_name(WRegion *reg, const char *p) /*EXTL_DOC * Similar to \fnref{WRegion.set_name} except if the name is already in use, * other instance numbers will not be attempted. The string \var{p} should - * not contain a \code{} suffix or this function will fail. + * not contain a \codestr{} suffix or this function will fail. */ EXTL_EXPORT_MEMBER bool region_set_name_exact(WRegion *reg, const char *p) diff --git a/ioncore/names.h b/ioncore/names.h index 57dd5aa..b35bc60 100644 --- a/ioncore/names.h +++ b/ioncore/names.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_NAMES_H diff --git a/ioncore/navi.c b/ioncore/navi.c index 7109038..3ce27d3 100644 --- a/ioncore/navi.c +++ b/ioncore/navi.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2006-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -230,8 +227,9 @@ static WRegion *release(WRegionNaviData *data, WRegion *res) /*EXTL_DOC * Find region next from \var{reg} in direction \var{dirstr} - * (up/down/left/right/next/prev/any). The table \var{param} may - * contain the boolean field \var{nowrap}, instructing not to wrap + * (\codestr{up}, \codestr{down}, \codestr{left}, \codestr{right}, + * \codestr{next}, \codestr{prev}, or \codestr{any}). The table \var{param} + * may contain the boolean field \var{nowrap}, instructing not to wrap * around, and the \type{WRegion}s \var{no_ascend} and \var{no_descend}, * and boolean functions \var{ascend_filter} and \var{descend_filter} * on \var{WRegion} pairs (\var{to}, \var{from}), are used to decide when @@ -264,9 +262,8 @@ WRegion *ioncore_navi_next(WRegion *reg, const char *dirstr, ExtlTab param) /*EXTL_DOC - * Find first region within \var{reg} in direction \var{dirstr} - * (up/down/left/right/beg/end/any). For information on \var{param}, - * see \fnref{ioncore.navi_next}. + * Find first region within \var{reg} in direction \var{dirstr}. + * For information on \var{param}, see \fnref{ioncore.navi_next}. */ EXTL_EXPORT WRegion *ioncore_navi_first(WRegion *reg, const char *dirstr, ExtlTab param) @@ -296,11 +293,10 @@ static WRegion *do_goto(WRegion *res) /*EXTL_DOC - * Go to region next from \var{reg} in direction \var{dirstr} - * (up/down/left/right/next/prev/any). For information on \var{param}, - * see \fnref{ioncore.navi_next}. Additionally this function supports - * the boolean \var{nofront} field, for not bringing the object to - * front. + * Go to region next from \var{reg} in direction \var{dirstr}. + * For information on \var{param}, see \fnref{ioncore.navi_next}. + * Additionally this function supports the boolean \var{nofront} + * field, for not bringing the object to front. */ EXTL_EXPORT WRegion *ioncore_goto_next(WRegion *reg, const char *dirstr, ExtlTab param) @@ -310,11 +306,10 @@ WRegion *ioncore_goto_next(WRegion *reg, const char *dirstr, ExtlTab param) /*EXTL_DOC - * Go to first region within \var{reg} in direction \var{dirstr} - * (up/down/left/right/beg/end/any). For information on \var{param}, - * see \fnref{ioncore.navi_next}. Additionally this function supports - * the boolean \var{nofront} field, for not bringing the object to - * front. + * Go to first region within \var{reg} in direction \var{dirstr}. + * For information on \var{param}, see \fnref{ioncore.navi_next}. + * Additionally this function supports the boolean \var{nofront} field, + * for not bringing the object to front. */ EXTL_EXPORT WRegion *ioncore_goto_first(WRegion *reg, const char *dirstr, ExtlTab param) diff --git a/ioncore/navi.h b/ioncore/navi.h index b1ed6a0..c86a3a4 100644 --- a/ioncore/navi.h +++ b/ioncore/navi.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2006-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_NAVI_H diff --git a/ioncore/netwm.c b/ioncore/netwm.c index 4f65cdf..07e1dee 100644 --- a/ioncore/netwm.c +++ b/ioncore/netwm.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/netwm.h b/ioncore/netwm.h index 312f96b..1203e23 100644 --- a/ioncore/netwm.h +++ b/ioncore/netwm.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_NETWM_H diff --git a/ioncore/pholder.c b/ioncore/pholder.c index 018de2b..f5f9aae 100644 --- a/ioncore/pholder.c +++ b/ioncore/pholder.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/pholder.h b/ioncore/pholder.h index 4ccc654..b2b4986 100644 --- a/ioncore/pholder.h +++ b/ioncore/pholder.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2005-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_PHOLDER_H diff --git a/ioncore/pointer.c b/ioncore/pointer.c index f1dc9e7..63a408e 100644 --- a/ioncore/pointer.c +++ b/ioncore/pointer.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include "common.h" diff --git a/ioncore/pointer.h b/ioncore/pointer.h index 7b73cdb..cd1a62b 100644 --- a/ioncore/pointer.h +++ b/ioncore/pointer.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_POINTER_H diff --git a/ioncore/presize.c b/ioncore/presize.c index 5b16ba4..fb121d9 100644 --- a/ioncore/presize.c +++ b/ioncore/presize.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include "presize.h" diff --git a/ioncore/presize.h b/ioncore/presize.h index a480033..79133ed 100644 --- a/ioncore/presize.h +++ b/ioncore/presize.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_PRESIZE_H diff --git a/ioncore/property.c b/ioncore/property.c index 798dbf5..57214d2 100644 --- a/ioncore/property.c +++ b/ioncore/property.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -218,13 +215,8 @@ void xwindow_set_text_property(Window win, Atom a, const char **ptr, int n) if(!ioncore_g.use_mb){ st=XStringListToTextProperty((char **)&ptr, n, &prop); }else{ -#ifdef X_HAVE_UTF8_STRING - st=XmbTextListToTextProperty(ioncore_g.dpy, (char **)ptr, n, - XUTF8StringStyle, &prop); -#else st=XmbTextListToTextProperty(ioncore_g.dpy, (char **)ptr, n, XTextStyle, &prop); -#endif st=!st; } @@ -340,7 +332,7 @@ static bool get_mode(const char *mode, int *m) /*EXTL_DOC * Modify a window property. The \var{mode} is one of - * \code{"replace"}, \code{"prepend"} or \code{"append"}, and format + * \codestr{replace}, \codestr{prepend} or \codestr{append}, and format * is either 8, 16 or 32. Also see \fnref{ioncore.x_get_window_property} * and the \code{XChangeProperty}(3) manual page. */ @@ -382,8 +374,7 @@ void ioncore_x_delete_property(int win, int atom) /*EXTL_DOC - * Get a text property for a window (\code{STRING}, \code{COMPOUND_TEXT}, - * or \code{UTF8_STRING} property converted). The fields in the returned + * Get a text property for a window. The fields in the returned * table (starting from 1) are the null-separated parts of the property. * See the \code{XGetTextProperty}(3) manual page for more information. */ diff --git a/ioncore/property.h b/ioncore/property.h index cb9252e..aeb8182 100644 --- a/ioncore/property.h +++ b/ioncore/property.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_PROPERTY_H diff --git a/ioncore/rectangle.c b/ioncore/rectangle.c index 50dcc09..3096cd9 100644 --- a/ioncore/rectangle.c +++ b/ioncore/rectangle.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/rectangle.h b/ioncore/rectangle.h index 701d2b2..fa0a2b2 100644 --- a/ioncore/rectangle.h +++ b/ioncore/rectangle.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_RECTANGLE_H diff --git a/ioncore/regbind.c b/ioncore/regbind.c index 0b2f371..68ef792 100644 --- a/ioncore/regbind.c +++ b/ioncore/regbind.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -199,7 +196,8 @@ void region_remove_bindings(WRegion *reg) } -WBinding *region_lookup_keybinding(WRegion *reg, const XKeyEvent *ev, +WBinding *region_lookup_keybinding(WRegion *reg, + int act, uint state, uint kcb, const WSubmapState *sc, WRegion **binding_owner_ret) { @@ -233,7 +231,7 @@ WBinding *region_lookup_keybinding(WRegion *reg, const XKeyEvent *ev, continue; } - binding=bindmap_lookup_binding(bindmap, BINDING_KEYPRESS, ev->state, ev->keycode); + binding=bindmap_lookup_binding(bindmap, act, state, kcb); if(binding!=NULL) break; diff --git a/ioncore/regbind.h b/ioncore/regbind.h index ad1fe6d..adf78ff 100644 --- a/ioncore/regbind.h +++ b/ioncore/regbind.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_REGBIND_H @@ -21,6 +18,8 @@ DECLSTRUCT(WSubmapState){ uint key, state; WSubmapState *next; + /* ExtlFn leave; */ + /* Watch leave_reg; */ }; @@ -29,7 +28,8 @@ extern void region_remove_bindmap(WRegion *reg, WBindmap *bindmap); extern void region_remove_bindings(WRegion *reg); -extern WBinding *region_lookup_keybinding(WRegion *reg, const XKeyEvent *ev, +extern WBinding *region_lookup_keybinding(WRegion *reg, + int act, uint state, uint kcb, const WSubmapState *sc, WRegion **binding_owner_ret); extern WBinding *region_lookup_binding(WRegion *reg, int act, uint state, diff --git a/ioncore/reginfo.c b/ioncore/reginfo.c index 9815880..41fc8d6 100644 --- a/ioncore/reginfo.c +++ b/ioncore/reginfo.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/reginfo.h b/ioncore/reginfo.h index 0a75a98..6e5ffb5 100644 --- a/ioncore/reginfo.h +++ b/ioncore/reginfo.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_REGINFO_H diff --git a/ioncore/region-iter.h b/ioncore/region-iter.h index 157ab7d..f012d23 100644 --- a/ioncore/region-iter.h +++ b/ioncore/region-iter.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_REGION_ITER_H diff --git a/ioncore/region.c b/ioncore/region.c index 10f7c28..ebec9e7 100644 --- a/ioncore/region.c +++ b/ioncore/region.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -27,6 +24,7 @@ #include "activity.h" #include "region-iter.h" #include "return.h" +#include "key.h" #define D2(X) @@ -112,7 +110,9 @@ void region_deinit(WRegion *reg) D(warn("Region to be focused next destroyed[1].")); ioncore_g.focus_next=NULL; } - + + assert(reg->submapstat==NULL); + /*region_free_submapstat(reg);*/ region_detach_manager(reg); region_unset_return(reg); region_unset_parent(reg); @@ -235,7 +235,7 @@ void region_managed_remove(WRegion *mgr, WRegion *reg) /*EXTL_DOC - * Return the object, if any, that is considered ''currently active'' + * Return the object, if any, that is considered ``currently active'' * within the objects managed by \var{mplex}. */ EXTL_SAFE @@ -382,8 +382,8 @@ static void region_rqclose_default(WRegion *reg, bool relocate) * the client supports the \code{WM_DELETE} protocol (see also * \fnref{WClientWin.kill}). The region will not be destroyed when * this function returns. To find out if and when it is destroyed, - * use the "deinit" notification. If \var{relocate} is not set, and - * \var{reg} manages other regions, it will not be closed. Otherwise + * use the \codestr{deinit} notification. If \var{relocate} is not set, + * and \var{reg} manages other regions, it will not be closed. Otherwise * the managed regions will be attempted to be relocated. */ EXTL_EXPORT_MEMBER @@ -742,7 +742,7 @@ bool region_rqorder(WRegion *reg, WRegionOrder order) /*EXTL_DOC * Request ordering. Currently supported values for \var{ord} - * are 'front' and 'back'. + * are \codestr{front} and \codestr{back}. */ EXTL_EXPORT_AS(WRegion, rqorder) bool region_rqorder_extl(WRegion *reg, const char *ord) diff --git a/ioncore/region.h b/ioncore/region.h index 33baf48..82483ad 100644 --- a/ioncore/region.h +++ b/ioncore/region.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_REGION_H diff --git a/ioncore/resize.c b/ioncore/resize.c index ec94cda..22950ee 100644 --- a/ioncore/resize.c +++ b/ioncore/resize.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/resize.h b/ioncore/resize.h index c56b964..2c69ed9 100644 --- a/ioncore/resize.h +++ b/ioncore/resize.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_RESIZE_H diff --git a/ioncore/return.c b/ioncore/return.c index 444f548..092483c 100644 --- a/ioncore/return.c +++ b/ioncore/return.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/return.h b/ioncore/return.h index 6870f18..0d20b92 100644 --- a/ioncore/return.h +++ b/ioncore/return.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_RETURN_H diff --git a/ioncore/rootwin.c b/ioncore/rootwin.c index a1db720..f9b6905 100644 --- a/ioncore/rootwin.c +++ b/ioncore/rootwin.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/rootwin.h b/ioncore/rootwin.h index 74e50bd..8e8bf7d 100644 --- a/ioncore/rootwin.h +++ b/ioncore/rootwin.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_ROOTWIN_H diff --git a/ioncore/saveload.c b/ioncore/saveload.c index b179ccf..db8a12f 100644 --- a/ioncore/saveload.c +++ b/ioncore/saveload.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/saveload.h b/ioncore/saveload.h index bc2ad6c..d15992e 100644 --- a/ioncore/saveload.h +++ b/ioncore/saveload.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_SAVELOAD_H diff --git a/ioncore/screen-notify.c b/ioncore/screen-notify.c index e65208a..add918d 100644 --- a/ioncore/screen-notify.c +++ b/ioncore/screen-notify.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -377,11 +374,10 @@ void screen_managed_notify(WScreen *scr, WRegion *reg, WRegionNotify how) void ioncore_screen_activity_notify(WRegion *reg, WRegionNotify how) { if(how==ioncore_g.notifies.activity){ - WScreen *scr=region_screen_of(reg); - - screen_update_infowin(scr); - screen_update_notifywin(scr); - + screen_update_notifywin(region_screen_of(reg)); + }else if(how==ioncore_g.notifies.name){ + if(region_is_activity(reg)) + screen_update_notifywin(region_screen_of(reg)); } } diff --git a/ioncore/screen-notify.h b/ioncore/screen-notify.h index d5f27cd..a7b37b8 100644 --- a/ioncore/screen-notify.h +++ b/ioncore/screen-notify.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_SCREEN_NOTIFY_H diff --git a/ioncore/screen.c b/ioncore/screen.c index 00d675f..8d59d12 100644 --- a/ioncore/screen.c +++ b/ioncore/screen.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/screen.h b/ioncore/screen.h index 8c1b9b5..743a134 100644 --- a/ioncore/screen.h +++ b/ioncore/screen.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_SCREEN_H diff --git a/ioncore/selection.c b/ioncore/selection.c index 3941436..95bf225 100644 --- a/ioncore/selection.c +++ b/ioncore/selection.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/selection.h b/ioncore/selection.h index 7710e08..fc2437a 100644 --- a/ioncore/selection.h +++ b/ioncore/selection.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_SELECTION_H diff --git a/ioncore/sizehint.c b/ioncore/sizehint.c index ee5560f..0dc0702 100644 --- a/ioncore/sizehint.c +++ b/ioncore/sizehint.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -70,11 +67,11 @@ static void correct_aspect(int max_w, int max_h, const WSizeHints *hints, void sizehints_correct(const WSizeHints *hints, int *wp, int *hp, bool min, bool override_no_constrain) { - int w=*wp, wa; - int h=*hp, ha; + int w=*wp, tw, bw=(hints->base_set ? hints->base_width : 0); + int h=*hp, th, bh=(hints->base_set ? hints->base_height : 0); int bs=0; - if(min){ + if(min && hints->min_set){ w=maxof(w, hints->min_width); h=maxof(h, hints->min_height); } @@ -84,30 +81,27 @@ void sizehints_correct(const WSizeHints *hints, int *wp, int *hp, *hp=h; return; } - - wa=w-hints->base_width; - ha=h-hints->base_height; - if(wa>=0 && ha>=0){ - correct_aspect(wa, ha, hints, &wa, &ha); - w=wa+hints->base_width; - h=ha+hints->base_height; + tw=w-bw; + th=h-bh; + + if(tw>=0 && th>=0) + correct_aspect(tw, th, hints, &tw, &th); + + if(hints->inc_set){ + if(tw>0) + tw=(tw/hints->width_inc)*hints->width_inc; + if(th>0) + th=(th/hints->height_inc)*hints->height_inc; } + w=tw+bw; + h=th+bh; + if(hints->max_set){ w=minof(w, hints->max_width); h=minof(h, hints->max_height); } - - if(hints->inc_set){ - /* base size should be set to 0 if none given by user program */ - bs=(hints->base_set ? hints->base_width : 0); - if(w>bs) - w=((w-bs)/hints->width_inc)*hints->width_inc+bs; - bs=(hints->base_set ? hints->base_height : 0); - if(h>bs) - h=((h-bs)/hints->height_inc)*hints->height_inc+bs; - } *wp=w; *hp=h; @@ -132,22 +126,17 @@ void xsizehints_sanity_adjust(XSizeHints *hints) } } - if(hints->min_width<0) - hints->min_width=0; - if(hints->min_height<0) - hints->min_height=0; + hints->min_width=maxof(hints->min_width, 0); + hints->min_height=maxof(hints->min_height, 0); if(!(hints->flags&PBaseSize) || hints->base_width<0) - hints->base_width=0; + hints->base_width=hints->min_width; if(!(hints->flags&PBaseSize) || hints->base_height<0) - hints->base_height=0; - + hints->base_height=hints->min_height; if(hints->flags&PMaxSize){ - if(hints->max_widthmin_width) - hints->max_width=hints->min_width; - if(hints->max_heightmin_height) - hints->max_height=hints->min_height; + hints->max_width=maxof(hints->max_width, hints->min_width); + hints->max_height=maxof(hints->max_height, hints->min_height); } hints->flags|=(PBaseSize|PMinSize); diff --git a/ioncore/sizehint.h b/ioncore/sizehint.h index 4ddfb41..55f3f29 100644 --- a/ioncore/sizehint.h +++ b/ioncore/sizehint.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_SIZEHINT_H diff --git a/ioncore/sizepolicy.c b/ioncore/sizepolicy.c index 7101da8..a99b7a3 100644 --- a/ioncore/sizepolicy.c +++ b/ioncore/sizepolicy.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -283,14 +280,8 @@ void sizepolicy(WSizePolicy *szplcy, WRegion *reg, } -struct szplcy_spec { - const char *spec; - int szplcy; -}; - - /* translation table for sizepolicy specifications */ -static struct szplcy_spec szplcy_specs[] = { +static StringIntMap szplcy_specs[] = { {"default", SIZEPOLICY_DEFAULT}, {"full", SIZEPOLICY_FULL_EXACT}, {"full_bounds", SIZEPOLICY_FULL_BOUNDS}, @@ -324,17 +315,21 @@ static struct szplcy_spec szplcy_specs[] = { bool string2sizepolicy(const char *szplcy, WSizePolicy *value) { - const struct szplcy_spec *sp; + int tmp; - *value=SIZEPOLICY_DEFAULT; - - for(sp=szplcy_specs; sp->spec; ++sp){ - if(strcasecmp(szplcy,sp->spec)==0){ - *value=sp->szplcy; - return TRUE; - } - } + tmp=stringintmap_value(szplcy_specs, szplcy, -1); - return FALSE; + if(tmp==-1){ + *value=SIZEPOLICY_DEFAULT; + return FALSE; + }else{ + *value=tmp; + return TRUE; + } } + +const char *sizepolicy2string(WSizePolicy szplcy) +{ + return stringintmap_key(szplcy_specs, szplcy, NULL); +} diff --git a/ioncore/sizepolicy.h b/ioncore/sizepolicy.h index 602652d..a0aa1e3 100644 --- a/ioncore/sizepolicy.h +++ b/ioncore/sizepolicy.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_SIZEPOLICY_H @@ -72,7 +69,7 @@ extern void sizepolicy(WSizePolicy *szplcy, WRegion *reg, WFitParams *fp); -bool string2sizepolicy(const char *szplcy, WSizePolicy *value); - +extern bool string2sizepolicy(const char *szplcy, WSizePolicy *value); +extern const char *sizepolicy2string(WSizePolicy szplcy); #endif /* ION_IONCORE_SIZEPOLICY_H */ diff --git a/ioncore/stacking.c b/ioncore/stacking.c index 9d77ac9..9c0be9f 100644 --- a/ioncore/stacking.c +++ b/ioncore/stacking.c @@ -3,13 +3,11 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include +#include #include "common.h" #include "region.h" @@ -32,6 +30,7 @@ WStacking *create_stacking() st->szplcy=SIZEPOLICY_DEFAULT; st->hidden=FALSE; st->lnode=NULL; + st->pseudomodal=FALSE; } return st; @@ -521,8 +520,8 @@ uint stacking_min_level(WStacking *stacking, WStackingFilter *include_filt, void *filt_data) { + uint min_level=STACKING_LEVEL_BOTTOM; WStacking *st=NULL; - uint min_level=0; if(stacking==NULL) return STACKING_LEVEL_BOTTOM; @@ -546,35 +545,39 @@ uint stacking_min_level(WStacking *stacking, } -WStacking *stacking_find_to_focus(WStacking *stacking, WStacking *to_try, +WStacking *stacking_find_to_focus(WStacking *stacking, + WStacking *to_try, WStackingFilter *include_filt, WStackingFilter *approve_filt, void *filt_data) { + uint min_level=STACKING_LEVEL_BOTTOM; WStacking *st=NULL; - uint min_level=0; if(stacking==NULL) return NULL; - min_level=stacking_min_level(stacking, include_filt, filt_data); - - if(to_try!=NULL && to_try->level>=min_level) - return to_try; - st=stacking; do{ st=st->prev; - if(st->levelreg==NULL) + continue; - if(st->reg!=NULL - && !(st->reg->flags®ION_SKIP_FOCUS) - && cf(include_filt, filt_data, st) - && cf(approve_filt, filt_data, st)){ - return st; + if(st!=to_try && (st->reg->flags®ION_SKIP_FOCUS || + !cf(include_filt, filt_data, st))){ + /* skip */ + continue; } + + if(st->levellevel>=STACKING_LEVEL_MODAL1) + min_level=maxof(min_level, st->level); }while(st!=stacking); return NULL; diff --git a/ioncore/stacking.h b/ioncore/stacking.h index 2810bda..e325269 100644 --- a/ioncore/stacking.h +++ b/ioncore/stacking.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_STACKING_H @@ -22,8 +19,8 @@ #define STACKING_LEVEL_ON_TOP 2 #define STACKING_LEVEL_MODAL1 1024 - #define STACKING_IS_HIDDEN(ST) ((ST)->hidden) +#define STACKING_IS_PSEUDOMODAL(ST) ((ST)->pseudomodal) DECLSTRUCT(WStacking){ @@ -37,6 +34,7 @@ DECLSTRUCT(WStacking){ /* flags */ uint to_unweave:2; uint hidden:1; + uint pseudomodal:1; /* WMPlex stuff */ WLListNode *lnode; diff --git a/ioncore/strings.c b/ioncore/strings.c index 37487fd..eb7e408 100644 --- a/ioncore/strings.c +++ b/ioncore/strings.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/strings.h b/ioncore/strings.h index df30189..e285085 100644 --- a/ioncore/strings.h +++ b/ioncore/strings.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_STRINGS_H diff --git a/ioncore/tags.c b/ioncore/tags.c index f01385d..6f1e029 100644 --- a/ioncore/tags.c +++ b/ioncore/tags.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -46,7 +43,8 @@ bool region_set_tagged(WRegion *reg, int sp) /*EXTL_DOC * Change tagging state of \var{reg} as defined by \var{how} - * (set/unset/toggle). Resulting state is returned. + * (one of \codestr{set}, \codestr{unset}, or \codestr{toggle}). + * The resulting state is returned. */ EXTL_EXPORT_AS(WRegion, set_tagged) bool region_set_tagged_extl(WRegion *reg, const char *how) @@ -84,7 +82,7 @@ void ioncore_tagged_clear() /*EXTL_DOC - * Returns first tagged object, untagging it as well if \var{untag}is set. + * Returns first tagged object, untagging it as well if \var{untag} is set. */ EXTL_SAFE EXTL_EXPORT diff --git a/ioncore/tags.h b/ioncore/tags.h index 6f30292..43a9b1f 100644 --- a/ioncore/tags.h +++ b/ioncore/tags.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_TAGS_H diff --git a/ioncore/window.c b/ioncore/window.c index 0b12200..3de0eef 100644 --- a/ioncore/window.c +++ b/ioncore/window.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/window.h b/ioncore/window.h index e4de5bb..b605485 100644 --- a/ioncore/window.h +++ b/ioncore/window.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_WINDOW_H diff --git a/ioncore/xic.c b/ioncore/xic.c index 21339d6..2fe2238 100644 --- a/ioncore/xic.c +++ b/ioncore/xic.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/xic.h b/ioncore/xic.h index f745442..1e935ac 100644 --- a/ioncore/xic.h +++ b/ioncore/xic.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_XIC_H diff --git a/ioncore/xwindow.c b/ioncore/xwindow.c index 9d4cea7..b9cd1aa 100644 --- a/ioncore/xwindow.c +++ b/ioncore/xwindow.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/ioncore/xwindow.h b/ioncore/xwindow.h index 6379ddf..2e37fc6 100644 --- a/ioncore/xwindow.h +++ b/ioncore/xwindow.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_IONCORE_XWINDOW_H diff --git a/libextl/exact-version b/libextl/exact-version index 66bf973..24226a2 100644 --- a/libextl/exact-version +++ b/libextl/exact-version @@ -1,6 +1,23 @@ Context: +[Use S if not copy +Tuomo Valkonen **20070506140705] + +[Added extl_table_iter +Tuomo Valkonen **20070430164248] + +[Added ExtlAny +Tuomo Valkonen **20070430162426] + +[Cleanup/reorganisation +Tuomo Valkonen **20070430144940] + +[Don't put functions into documentation index +Tuomo Valkonen **20070408124504 + (The function list should suffice.) +] + [Improved mechanisms for unregistration of functions. Tuomo Valkonen **20070226150118 Makes for a bit smaller memory footprint. diff --git a/libextl/libextl-mkexports.in b/libextl/libextl-mkexports.in index bbb672d..a23ab1f 100644 --- a/libextl/libextl-mkexports.in +++ b/libextl/libextl-mkexports.in @@ -69,6 +69,7 @@ desc2human={ ["o"]="object", ["s"]="string", ["S"]="string", + ["a"]="any value", } -- }}} @@ -619,12 +620,14 @@ function write_fndoc(h, fn, info) fn=info.exported_name end + --[[ if info.class~="global" then fprintf(h, "\\index{%s@%s!", texfriendly(info.class), texfriendly_typeormod(info.class)); fprintf(h, "%s@\\code{%s}}\n", texfriendly(fn), fn) end fprintf(h, "\\index{%s@\\code{%s}}\n", texfriendly(fn), fn) + ]] if info.class~="global" then fprintf(h, "\\hyperlabel{fn:%s.%s}", info.class, fn) diff --git a/libextl/luaextl.c b/libextl/luaextl.c index a2cc2b9..b58545d 100644 --- a/libextl/luaextl.c +++ b/libextl/luaextl.c @@ -637,7 +637,7 @@ void extl_deinit() /*}}}*/ -/*{{{ Stack get/push -- all unsafe */ +/*{{{ Stack get/push -- all unsafe */ static bool extl_stack_get(lua_State *st, int pos, char type, @@ -649,11 +649,18 @@ static bool extl_stack_get(lua_State *st, int pos, char type, if(wasdeadobject!=NULL) *wasdeadobject=FALSE; + + if(type=='b'){ + if(valret) + *((bool*)valret)=lua_toboolean(st, pos); + return TRUE; + } - if(type=='i' || type=='d'){ - if(lua_type(st, pos)!=LUA_TNUMBER) + switch(lua_type(st, pos)){ + case LUA_TNUMBER: + if(type!='i' && type!='d' && type!='a') return FALSE; - + d=lua_tonumber(st, pos); if(type=='i'){ @@ -661,21 +668,23 @@ static bool extl_stack_get(lua_State *st, int pos, char type, return FALSE; if(valret) *((int*)valret)=d; + }else if(type=='a'){ + if(valret){ + ((ExtlAny*)valret)->type='d'; + ((ExtlAny*)valret)->value.d=d; + } }else{ if(valret) *((double*)valret)=d; } return TRUE; - } - - if(type=='b'){ - if(valret) - *((bool*)valret)=lua_toboolean(st, pos); - return TRUE; - } - - if(lua_type(st, pos)==LUA_TNIL || lua_type(st, pos)==LUA_TNONE){ - if(type=='t' || type=='f'){ + + case LUA_TNIL: + case LUA_TNONE: + if(type=='a'){ + if(valret) + ((ExtlAny*)valret)->type='v'; + }else if(type=='t' || type=='f'){ if(valret) *((int*)valret)=LUA_NOREF; }else if(type=='s' || type=='S'){ @@ -688,10 +697,9 @@ static bool extl_stack_get(lua_State *st, int pos, char type, return FALSE; } return TRUE; - } - if(type=='s' || type=='S'){ - if(lua_type(st, pos)!=LUA_TSTRING) + case LUA_TSTRING: + if(type!='s' && type!='S' && type!='a') return FALSE; if(valret){ str=lua_tostring(st, pos); @@ -700,95 +708,141 @@ static bool extl_stack_get(lua_State *st, int pos, char type, if(str==NULL) return FALSE; } - *((const char**)valret)=str; + if(type=='a'){ + ((ExtlAny*)valret)->type=(copystring ? 's' : 'S'); + ((ExtlAny*)valret)->value.s=str; + }else{ + *((const char**)valret)=str; + } } return TRUE; - } - if(type=='f'){ - if(!lua_isfunction(st, pos)) + case LUA_TFUNCTION: + if(type!='f' && type!='a') return FALSE; if(valret){ lua_pushvalue(st, pos); - *((int*)valret)=lua_ref(st, 1); + if(type=='a'){ + ((ExtlAny*)valret)->type='f'; + ((ExtlAny*)valret)->value.f=lua_ref(st, 1); + }else{ + *((int*)valret)=lua_ref(st, 1); + } } return TRUE; - } - - if(type=='t'){ - if(!lua_istable(st, pos)) + + case LUA_TTABLE: + if(type!='t' && type!='a') return FALSE; if(valret){ lua_pushvalue(st, pos); - *((int*)valret)=lua_ref(st, 1); + if(type=='a'){ + ((ExtlAny*)valret)->type='t'; + ((ExtlAny*)valret)->value.f=lua_ref(st, 1); + }else{ + *((int*)valret)=lua_ref(st, 1); + } } return TRUE; - } - - if(type=='o'){ - bool invalid=FALSE, dead=FALSE; - Obj *obj=extl_get_obj(st, pos, &invalid, &dead); - if(wasdeadobject!=NULL) - *wasdeadobject=dead; - if(valret){ - *((Obj**)valret)=obj; - D(fprintf(stderr, "Got obj %p, ", obj); - fprintf(stderr, "%s\n", OBJ_TYPESTR(obj))); + + case LUA_TUSERDATA: + if(type=='o'|| type=='a'){ + bool invalid=FALSE, dead=FALSE; + Obj *obj=extl_get_obj(st, pos, &invalid, &dead); + if(wasdeadobject!=NULL) + *wasdeadobject=dead; + if(valret){ + if(type=='a'){ + ((ExtlAny*)valret)->type='o'; + ((ExtlAny*)valret)->value.o=obj; + }else{ + *((Obj**)valret)=obj; + } + } + return !invalid; } - return !invalid; } return FALSE; } -static void extl_stack_push(lua_State *st, char spec, void *ptr) +static void extl_to_any(ExtlAny *a, char type, void *ptr) { - if(spec=='i'){ - lua_pushnumber(st, *(int*)ptr); - }else if(spec=='d'){ - lua_pushnumber(st, *(double*)ptr); - }else if(spec=='b'){ - lua_pushboolean(st, *(bool*)ptr); - }else if(spec=='o'){ - extl_push_obj(st, *(Obj**)ptr); - }else if(spec=='s' || spec=='S'){ - lua_pushstring(st, *(char**)ptr); - }else if(spec=='t' || spec=='f'){ - lua_rawgeti(st, LUA_REGISTRYINDEX, *(int*)ptr); - }else{ - lua_pushnil(st); + if(type=='a'){ + *a=*(ExtlAny*)ptr; + return; + } + + a->type=type; + + switch(type){ + case 'i': a->value.i=*(int*)ptr; break; + case 'd': a->value.d=*(double*)ptr; break; + case 'b': a->value.b=*(bool*)ptr; break; + case 'o': a->value.o=*(Obj**)ptr; break; + case 's': + case 'S': a->value.s=*(char**)ptr; break; + case 't': a->value.t=*(ExtlTab*)ptr; break; + case 'f': a->value.f=*(ExtlFn*)ptr; break; } } -static bool extl_stack_push_vararg(lua_State *st, char spec, va_list *argsp) +static void extl_to_any_vararg(ExtlAny *a, char type, va_list *argsp) { - switch(spec){ - case 'i': - lua_pushnumber(st, (double)va_arg(*argsp, int)); - break; - case 'd': - lua_pushnumber(st, va_arg(*argsp, double)); - break; - case 'b': - lua_pushboolean(st, va_arg(*argsp, bool)); - break; - case 'o': - extl_push_obj(st, va_arg(*argsp, Obj*)); - break; - case 'S': - case 's': - lua_pushstring(st, va_arg(*argsp, char*)); - break; - case 'f': - case 't': - lua_rawgeti(st, LUA_REGISTRYINDEX, va_arg(*argsp, int)); - break; - default: - return FALSE; + if(type=='a'){ + *a=va_arg(*argsp, ExtlAny); + return; } + a->type=type; + + switch(type){ + case 'i': a->value.i=va_arg(*argsp, int); break; + case 'd': a->value.d=va_arg(*argsp, double); break; + case 'b': a->value.b=va_arg(*argsp, bool); break; + case 'o': a->value.o=va_arg(*argsp, Obj*); break; + case 's': + case 'S': a->value.s=va_arg(*argsp, char*); break; + case 't': a->value.t=va_arg(*argsp, ExtlTab); break; + case 'f': a->value.f=va_arg(*argsp, ExtlFn); break; + } +} + + +static void extl_stack_pusha(lua_State *st, ExtlAny *a) +{ + switch(a->type){ + case 'i': lua_pushnumber(st, a->value.i); break; + case 'd': lua_pushnumber(st, a->value.d); break; + case 'b': lua_pushboolean(st, a->value.b); break; + case 'o': extl_push_obj(st, a->value.o); break; + case 's': + case 'S': lua_pushstring(st, a->value.s); break; + case 't': lua_rawgeti(st, LUA_REGISTRYINDEX, a->value.t); break; + case 'f': lua_rawgeti(st, LUA_REGISTRYINDEX, a->value.f); break; + default: lua_pushnil(st); + } +} + + +static void extl_stack_push(lua_State *st, char spec, void *ptr) +{ + ExtlAny a; + + extl_to_any(&a, spec, ptr); + extl_stack_pusha(st, &a); +} + + +static bool extl_stack_push_vararg(lua_State *st, char spec, va_list *argsp) +{ + ExtlAny a; + + extl_to_any_vararg(&a, spec, argsp); + extl_stack_pusha(st, &a); + return TRUE; } @@ -802,21 +856,29 @@ static bool extl_stack_push_vararg(lua_State *st, char spec, va_list *argsp) enum{STRINGS_NONE, STRINGS_NONCONST, STRINGS_ALL}; -static void extl_free(void *ptr, char spec, int strings) +static void extl_any_free(ExtlAny *a, int strings) { - if(((spec=='s' && strings!=STRINGS_NONE) || - (spec=='S' && strings==STRINGS_ALL)) && *(char**)ptr!=NULL){ - if(*(char**)ptr!=NULL) - free(*(char**)ptr); - *(char**)ptr=NULL; - }else if(spec=='t'){ - extl_unref_table(*(ExtlTab*)ptr); - }else if(spec=='f'){ - extl_unref_fn(*(ExtlFn*)ptr); + if((a->type=='s' && strings!=STRINGS_NONE) || + (a->type=='S' && strings==STRINGS_ALL)){ + if(a->value.s!=NULL) + free((char*)a->value.s); + }else if(a->type=='t'){ + extl_unref_table(a->value.t); + }else if(a->type=='f'){ + extl_unref_fn(a->value.f); } } +static void extl_free(void *ptr, char spec, int strings) +{ + ExtlAny a; + + extl_to_any(&a, spec, ptr); + extl_any_free(&a, strings); +} + + /*}}}*/ @@ -1019,6 +1081,11 @@ static bool extl_table_do_gets(ExtlTab ref, const char *entry, return extl_table_get(ref, 's', type, entry, valret); } +bool extl_table_gets_a(ExtlTab ref, const char *entry, ExtlAny *ret) +{ + return extl_table_do_gets(ref, entry, 'a', (void*)ret); +} + bool extl_table_gets_o(ExtlTab ref, const char *entry, Obj **ret) { return extl_table_do_gets(ref, entry, 'o', (void*)ret); @@ -1060,6 +1127,11 @@ static bool extl_table_do_geti(ExtlTab ref, int entry, char type, void *valret) return extl_table_get(ref, 'i', type, entry, valret); } +bool extl_table_geti_a(ExtlTab ref, int entry, ExtlAny *ret) +{ + return extl_table_do_geti(ref, entry, 'a', (void*)ret); +} + bool extl_table_geti_o(ExtlTab ref, int entry, Obj **ret) { return extl_table_do_geti(ref, entry, 'o', (void*)ret); @@ -1165,6 +1237,10 @@ bool extl_table_set(ExtlTab ref, char itype, char type, ...) return retval; } +bool extl_table_sets_a(ExtlTab ref, const char *entry, const ExtlAny *val) +{ + return extl_table_set(ref, 's', 'a', entry, val); +} bool extl_table_sets_o(ExtlTab ref, const char *entry, Obj *val) { @@ -1202,6 +1278,11 @@ bool extl_table_sets_t(ExtlTab ref, const char *entry, ExtlTab val) } +bool extl_table_seti_a(ExtlTab ref, int entry, const ExtlAny *val) +{ + return extl_table_set(ref, 'i', 'a', entry, val); +} + bool extl_table_seti_o(ExtlTab ref, int entry, Obj *val) { return extl_table_set(ref, 'i', 'o', entry, val); @@ -1290,6 +1371,58 @@ bool extl_table_cleari(ExtlTab ref, int entry) +/*}}}*/ + + +/*{{{ Table iteration */ + + +typedef struct{ + ExtlTab ref; + ExtlIterFn *fn; + void *d; +} IterP; + + +int extl_table_iter_do(lua_State *st, IterP *par) +{ + lua_rawgeti(st, LUA_REGISTRYINDEX, par->ref); + + lua_pushnil(st); + + while(lua_next(st, -2)!=0){ + ExtlAny k, v; + + if(extl_stack_get(st, -2, 'a', FALSE, NULL, &k)){ + bool ret=TRUE; + if(extl_stack_get(st, -1, 'a', FALSE, NULL, &v)){ + ret=par->fn(k, v, par->d); + extl_any_free(&v, STRINGS_NONE); + } + extl_any_free(&k, STRINGS_NONE); + if(!ret) + return 0; + } + + lua_pop(st, 1); + } + + return 0; +} + + +void extl_table_iter(ExtlTab ref, ExtlIterFn *fn, void *d) +{ + IterP par; + + par.ref=ref; + par.fn=fn; + par.d=d; + + extl_cpcall(l_st, (ExtlCPCallFn*)extl_table_iter_do, &par); +} + + /*}}}*/ diff --git a/libextl/luaextl.h b/libextl/luaextl.h index f31cc97..f016088 100644 --- a/libextl/luaextl.h +++ b/libextl/luaextl.h @@ -28,6 +28,7 @@ * t: table * f: function (c or lua) * v: void + * a: ExtlAny */ typedef int ExtlTab; @@ -43,6 +44,11 @@ typedef union{ ExtlTab t; } ExtlL2Param; +typedef struct{ + char type; + ExtlL2Param value; +} ExtlAny; + typedef bool ExtlL2CallHandler(void (*fn)(), ExtlL2Param *in, ExtlL2Param *out); @@ -88,6 +94,7 @@ extern bool extl_table_get_vararg(ExtlTab ref, char itype, char type, va_list *args); extern bool extl_table_get(ExtlTab ref, char itype, char type, ...); +extern bool extl_table_gets_a(ExtlTab ref, const char *entry, ExtlAny *ret); extern bool extl_table_gets_o(ExtlTab ref, const char *entry, Obj **ret); extern bool extl_table_gets_i(ExtlTab ref, const char *entry, int *ret); extern bool extl_table_gets_d(ExtlTab ref, const char *entry, double *ret); @@ -97,6 +104,7 @@ extern bool extl_table_gets_f(ExtlTab ref, const char *entry, ExtlFn *ret); extern bool extl_table_gets_t(ExtlTab ref, const char *entry, ExtlTab *ret); extern int extl_table_get_n(ExtlTab ref); +extern bool extl_table_geti_a(ExtlTab ref, int entry, ExtlAny *ret); extern bool extl_table_geti_o(ExtlTab ref, int entry, Obj **ret); extern bool extl_table_geti_i(ExtlTab ref, int entry, int *ret); extern bool extl_table_geti_d(ExtlTab ref, int entry, double *ret); @@ -110,6 +118,7 @@ extern bool extl_table_set_vararg(ExtlTab ref, char itype, char type, va_list *args); extern bool extl_table_set(ExtlTab ref, char itype, char type, ...); +extern bool extl_table_sets_a(ExtlTab ref, const char *entry, const ExtlAny *ret); extern bool extl_table_sets_o(ExtlTab ref, const char *entry, Obj *val); extern bool extl_table_sets_i(ExtlTab ref, const char *entry, int val); extern bool extl_table_sets_d(ExtlTab ref, const char *entry, double val); @@ -118,6 +127,7 @@ extern bool extl_table_sets_s(ExtlTab ref, const char *entry, const char *val); extern bool extl_table_sets_f(ExtlTab ref, const char *entry, ExtlFn val); extern bool extl_table_sets_t(ExtlTab ref, const char *entry, ExtlTab val); +extern bool extl_table_seti_a(ExtlTab ref, int entry, const ExtlAny *ret); extern bool extl_table_seti_o(ExtlTab ref, int entry, Obj *val); extern bool extl_table_seti_i(ExtlTab ref, int entry, int val); extern bool extl_table_seti_d(ExtlTab ref, int entry, double val); @@ -134,6 +144,12 @@ extern bool extl_table_clear(ExtlTab ref, char itype, ...); extern bool extl_table_clears(ExtlTab ref, const char *entry); extern bool extl_table_cleari(ExtlTab ref, int entry); +/* Table/iterate */ + +typedef bool ExtlIterFn(ExtlAny k, ExtlAny v, void *d); + +extern void extl_table_iter(ExtlTab ref, ExtlIterFn *fn, void *d); + /* Call */ extern void extl_protect(ExtlSafelist *sl); diff --git a/libmainloop/defer.c b/libmainloop/defer.c index c8d5616..3153955 100644 --- a/libmainloop/defer.c +++ b/libmainloop/defer.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ /* This file contains routines for deferred execution of potentially @@ -117,7 +114,8 @@ bool mainloop_defer_action_on_list(Obj *obj, WDeferredAction *action, d->action=action; d->list=list; d->fn=extl_fn_none(); - + watch_init(&(d->watch)); + if(obj!=NULL) watch_setup(&(d->watch), obj, defer_watch_handler); @@ -156,7 +154,6 @@ bool mainloop_defer_extl_on_list(ExtlFn fn, WDeferred **list) d->action=NULL; d->list=list; d->fn=extl_ref_fn(fn); - watch_init(&(d->watch)); LINK_ITEM(*list, d, next, prev); @@ -186,8 +183,11 @@ static void do_execute(WDeferred *d) free_defer(d); if(a!=NULL){ - if(obj!=NULL) - a(obj); + /* The deferral should not be on the list, if there + * was an object, and it got destroyed. + */ + /*if(obj!=NULL)*/ + a(obj); }else if(fn!=extl_fn_none()){ extl_call(fn, NULL, NULL); extl_unref_fn(fn); diff --git a/libmainloop/defer.h b/libmainloop/defer.h index ee7d400..90f77a2 100644 --- a/libmainloop/defer.h +++ b/libmainloop/defer.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_LIBMAINLOOP_DEFER_H diff --git a/libmainloop/exec.c b/libmainloop/exec.c index 6038e36..fd6ef6b 100644 --- a/libmainloop/exec.c +++ b/libmainloop/exec.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/libmainloop/exec.h b/libmainloop/exec.h index 796e453..d9a87e7 100644 --- a/libmainloop/exec.h +++ b/libmainloop/exec.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_LIBMAINLOOP_EXEC_H diff --git a/libmainloop/hooks.c b/libmainloop/hooks.c index 9b873a5..d2d2127 100644 --- a/libmainloop/hooks.c +++ b/libmainloop/hooks.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/libmainloop/hooks.h b/libmainloop/hooks.h index 11487de..b9b3318 100644 --- a/libmainloop/hooks.h +++ b/libmainloop/hooks.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_LIBMAINLOOP_HOOKS_H diff --git a/libmainloop/rx.mk b/libmainloop/rx.mk index ba54cc9..ff6cc20 100644 --- a/libmainloop/rx.mk +++ b/libmainloop/rx.mk @@ -8,4 +8,5 @@ MAINLOOP_SOURCES_ = select.c defer.c signal.c hooks.c exec.c MAINLOOP_SOURCES = $(patsubst %,$(MAINLOOP_DIR)/%, $(MAINLOOP_SOURCES_)) +MKEXPORTS_EXTRA_DEPS += $(MAINLOOP_SOURCES) MKEXPORTS_EXTRAS += -reexport mainloop $(MAINLOOP_SOURCES) diff --git a/libmainloop/select.c b/libmainloop/select.c index 2876222..e66d35c 100644 --- a/libmainloop/select.c +++ b/libmainloop/select.c @@ -3,10 +3,7 @@ * * Partly based on a contributed code. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/libmainloop/select.h b/libmainloop/select.h index 465f134..91204cc 100644 --- a/libmainloop/select.h +++ b/libmainloop/select.h @@ -3,10 +3,7 @@ * * Based on a contributed readfds code. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_LIBMAINLOOP_SELECT_H diff --git a/libmainloop/signal.c b/libmainloop/signal.c index fea01ba..e87e154 100644 --- a/libmainloop/signal.c +++ b/libmainloop/signal.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/libmainloop/signal.h b/libmainloop/signal.h index 7e8682e..b05e20e 100644 --- a/libmainloop/signal.h +++ b/libmainloop/signal.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_LIBMAINLOOP_SIGNAL_H diff --git a/libtu/exact-version b/libtu/exact-version index 694c1e0..e850700 100644 --- a/libtu/exact-version +++ b/libtu/exact-version @@ -1,6 +1,12 @@ Context: +[Some list code improvements +Tuomo Valkonen **20070506140559] + +[Oops, fixed comparison function order. +Tuomo Valkonen **20070424170047] + [Renamed `prog_execname` `libtu_progname` and added `libtu_progbasename`. Tuomo Valkonen **20070310230536] diff --git a/libtu/objlist.c b/libtu/objlist.c index 643f3fa..9d5062f 100644 --- a/libtu/objlist.c +++ b/libtu/objlist.c @@ -136,6 +136,12 @@ static ObjList *objlist_find_node(ObjList *objlist, Obj *obj) } +bool objlist_contains(ObjList *objlist, Obj *obj) +{ + return (objlist_find_node(objlist, obj)!=NULL); +} + + bool objlist_insert_last(ObjList **objlist, Obj *obj) { ObjList *node=reuse(objlist); @@ -177,7 +183,7 @@ bool objlist_reinsert_last(ObjList **objlist, Obj *obj) node=objlist_find_node(*objlist, obj); if(node==NULL) - return FALSE; + return objlist_insert_last(objlist, obj); UNLINK_ITEM(*objlist, node, next, prev); LINK_ITEM_LAST(*objlist, node, next, prev); @@ -195,7 +201,7 @@ bool objlist_reinsert_first(ObjList **objlist, Obj *obj) node=objlist_find_node(*objlist, obj); if(node==NULL) - return FALSE; + return objlist_insert_first(objlist, obj); UNLINK_ITEM(*objlist, node, next, prev); LINK_ITEM_FIRST(*objlist, node, next, prev); diff --git a/libtu/objlist.h b/libtu/objlist.h index 678706f..62533cb 100644 --- a/libtu/objlist.h +++ b/libtu/objlist.h @@ -48,6 +48,7 @@ extern bool objlist_insert_first(ObjList **objlist, Obj *obj); extern bool objlist_reinsert_last(ObjList **objlist, Obj *obj); extern bool objlist_reinsert_first(ObjList **objlist, Obj *obj); extern bool objlist_remove(ObjList **objlist, Obj *obj); +extern bool objlist_contains(ObjList *objlist, Obj *obj); extern void objlist_clear(ObjList **objlist); extern void objlist_iter_init(ObjListIterTmp *state, ObjList *objlist); extern Obj *objlist_iter(ObjListIterTmp *state); diff --git a/libtu/ptrlist.c b/libtu/ptrlist.c index 1ea6726..f86d9a4 100644 --- a/libtu/ptrlist.c +++ b/libtu/ptrlist.c @@ -53,6 +53,12 @@ static PtrList *ptrlist_find_node(PtrList *ptrlist, void *ptr) } +bool ptrlist_contains(PtrList *ptrlist, void *ptr) +{ + return (ptrlist_find_node(ptrlist, ptr)!=NULL); +} + + bool ptrlist_insert_last(PtrList **ptrlist, void *ptr) { PtrList *node=mknode(ptr); @@ -84,7 +90,7 @@ bool ptrlist_reinsert_last(PtrList **ptrlist, void *ptr) PtrList *node=ptrlist_find_node(*ptrlist, ptr); if(node==NULL) - return FALSE; + return ptrlist_insert_last(ptrlist, ptr); UNLINK_ITEM(*ptrlist, node, next, prev); LINK_ITEM_LAST(*ptrlist, node, next, prev); @@ -98,7 +104,7 @@ bool ptrlist_reinsert_first(PtrList **ptrlist, void *ptr) PtrList *node=ptrlist_find_node(*ptrlist, ptr); if(node==NULL) - return FALSE; + return ptrlist_insert_first(ptrlist, ptr); UNLINK_ITEM(*ptrlist, node, next, prev); LINK_ITEM_FIRST(*ptrlist, node, next, prev); diff --git a/libtu/ptrlist.h b/libtu/ptrlist.h index cadec02..70da547 100644 --- a/libtu/ptrlist.h +++ b/libtu/ptrlist.h @@ -46,6 +46,7 @@ extern bool ptrlist_insert_first(PtrList **ptrlist, void *ptr); extern bool ptrlist_reinsert_last(PtrList **ptrlist, void *ptr); extern bool ptrlist_reinsert_first(PtrList **ptrlist, void *ptr); extern bool ptrlist_remove(PtrList **ptrlist, void *ptr); +extern bool ptrlist_contains(PtrList *ptrlist, void *ptr); extern void ptrlist_clear(PtrList **ptrlist); extern void ptrlist_iter_init(PtrListIterTmp *state, PtrList *ptrlist); extern void *ptrlist_iter(PtrListIterTmp *state); diff --git a/libtu/stringstore.c b/libtu/stringstore.c index e47c902..3c5b7a1 100644 --- a/libtu/stringstore.c +++ b/libtu/stringstore.c @@ -40,7 +40,7 @@ static int cmp(const void *d_, const char *nodekey) return (res!=0 ? res - : (nodekey[d->len]=='\0' ? 0 : 1)); + : (nodekey[d->len]=='\0' ? 0 : -1)); } diff --git a/man/Makefile b/man/Makefile index c35c5a9..ed81982 100644 --- a/man/Makefile +++ b/man/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/build/system-inc.mk ###################################### -TRANSLATIONS=fi cs de +TRANSLATIONS=fi cs WELCOME_TARGETS=\ welcome.txt \ @@ -31,7 +31,8 @@ CONFIGS=../etc/cfg_ioncore.lua \ # TODO: PWM configuration file is undocumented PWM_CONFIGS=\ ../etc/cfg_ioncore.lua \ - ../etc/cfg_menu.lua + ../etc/cfg_menu.lua \ + ../pwm/cfg_pwm.lua ###################################### diff --git a/man/ion3.cs.in b/man/ion3.cs.in index 81efb95..4d9044f 100644 --- a/man/ion3.cs.in +++ b/man/ion3.cs.in @@ -7,7 +7,7 @@ Ion - spr .SH "POPIS" Ion je dla¾dicový správce oken se zálo¾kami navr¾ený pro klávesnicové u¾ivatele. - + .SH "VOLBY" .TP .B \-display poèítaè:displej.obrazovka @@ -35,12 +35,12 @@ Zobraz Zobrazí verzi .TP .B \-about -Zobrazí informace o programu (verze, copyright) +Zobrazí informace o programu (verze, autor, copyright) .SH Základní pojetí Tato sekce pøiná¹í pøehled typù objektù, které se objevují na X displeji -spravovaném Ionem. To je nezbytné pro pochopení operací s objekty a pro +spravovaném Ionem. To je nezbytné pro pochopení operací s objekty a pro pochopení, proè jsou rùzná klávesová pøiøazení dostupná jen u nìkterých objektù. Podrobnìj¹í popis nutný pro psaní vlastních pøizpùsobení naleznete na webových stránkách Ionu. @@ -79,19 +79,19 @@ definuje toto p BINDINGS:WScreen -.SS Pøiøazení pro práci s nejvy¹¹ími rámy a obrazovkami a jejich potomky - -BINDINGS:WMPlex.toplevel - -.SS Pøiøazení pro práci s rámy a obrazovkami a jejich potomky +.SS Pøiøazení pro práci s rámy a obrazovkami BINDINGS:WMPlex -.SS Pøiøazení pro práci se v¹emi rámy (vèetnì doèasných) a jejich potomky +.SS Pøiøazení pro práci se v¹emi rámy BINDINGS:WFrame -.SS Pøiøazení pro práci s nejvy¹¹ími rámy (ne s doèasnými) a jejich potomky +.SS Pøiøazení pro práci s nejvy¹¹ími rámy (ne s doèasnými) a obrazovkami + +BINDINGS:WMPlex.toplevel + +.SS Pøiøazení pro práci s nejvy¹¹ími rámy (ne s doèasnými) BINDINGS:WFrame.toplevel @@ -104,11 +104,10 @@ BINDINGS:WFrame.floating BINDINGS:WTiling .\" BINDINGS:WFrame.tiled -.SS Pøiøazení pro kientská okna +.SS Pøiøazení pro klientská okna BINDINGS:WClientWin - -BINDINGS:WGroupWS +BINDINGS:WGroupCW .SS Pøiøazení pro pøesun/zmìnu velikosti diff --git a/man/ion3.de.in b/man/ion3.de.in deleted file mode 100644 index fa60e7b..0000000 --- a/man/ion3.de.in +++ /dev/null @@ -1,160 +0,0 @@ -.TH ION 1 -.SH NAME -Ion - ein X11 Fenster Manager -.SH ÜBERSICHT -.B ion3 -.I "[optionen]" -.SH "BESCHREIBUNG" - -Ion ist ein tabellarisch aufgebauter Fenster Manager, entwickelt für -Benutzer welche auf die Tastatur spezialisiert sind. - -.SH "OPTIONEN" -.TP -.B \-display host:display.screen -X Anzeige zum darstellen -.TP -.B \-conffile Konfigurationsdatei -Konfigurationsdatei welche anstelle der Vorgegebenen benutzt werden soll -.TP -.B \-searchdir Verzeichnis -Verzeichnis worin die Konfigurationsdateien und andere Scripte gesucht werden -.TP -.B \-oneroot -Auf X Servern mit mehreren (traditionell non-Xinerama) Screens; handhabt nur den -voreingestellten Screen (Wurzelfenster); nicht alle, welche durch die '-display' -Option oder in der DISPLAY Umgebungsvariable bereitgestellt werden -.TP -.B \-session sitzungs_name -Setzt einen Sitzungsnamen. Diese Option beeinflusst wo der Arbeitsbereich und -andere Sicherungsdateien abgelegt werden (~/.ion3/sitzungs_name wenn die Option -gesetzt wurde). -.TP -.B \-help -Zeigt die Hilfe für die Kommandozeilenoptionen -.TP -.B \-version -Zeigt die Version -.TP -.B \-about -Zeigt Informationen über den Autor, die Version und das Copyright - -.SH BASIS KONZEPTE - -Diese Kapitel ist ein Überblick über die Objekttypen welche auf der X Anzeige -durch Ion behandelt werden. Die Beziehungen sind auf die Standardeinstellungen -ausgerichtet. Diese Informationen hier sind nötig um die Operationen und -Möglichkeiten der unterschiedlichen Tastenkombinationen zu verstehen. Siehe -dazu auch die weiteren Erklärungen unten. Für detailliertere Erklärungen, -welche zum schreiben eigener Konfigurationsdateien benötigt werden, siehe die -zusätzlichen Dokumentationen auf der Ion Webseite - -Die obersten Objekte welche benutzt werden können sind \fBScreens\fP. -Sie sind mit physikalischen Sceeens zu vergleichen. Screens enthalten -\fBArbeitsbereiche\fP und \fBClient Fenster\fP gepackt in einem Vollbildmodus. -Diese Objekte sind \fBgebündelt\fP, mit dem Hintergrund, dass nur einer auf -einmal angezeigt werden kann. - -Derzeit unterstützt Ion zwei Arten von Arbeitsbereichen; \fBgeteilt\fP in den -traditionellen Ion-Style und den herkömlichen \fBfliessenden\fP Arbeitsbereich -des PWM. Arbeitsbereiche sind keine sichtbaren Objekte sondern eher eine -Sammlung von gleichzeitig erkennbaren \fBFrames\fP. - -Ähnlich wie Screens, bündeln Frames andere Objekte, in diesem Fall sind dies -meist Client Fenster. Die meiste Zeit, sind Frames das einzige von Ion was auf -dem Screen zu sehen ist. Frames können Rahmen haben und sie haben einen -\fBReiter\fP für jedes in ihnen gebündelte Objekt. - -\fBAnfragen\fP sind Textboxen die am unteren Rand eines Frames oder Screens -erscheinen. Sie können nach Texteingaben zum ausführen einer Aktion verlangen. -Diese sind abhängig von den an sie gebundenen Aktionen. Die meisten Anfragen -unterstützen Autovervollständigung. - -.SH BINDUNGEN - -Hier sind die voreingestellten Tasten- und Mauszeigerbindungen beschrieben. -(\fBMod1\fP) hängt vom jeweiligen verwendeten System ab. Auf PC's mit XFree86 -ist es höchstwahrscheinlich an die linke 'ALT-Taste' gebungen (\fBALT_L\fP). -Auf SUN Systemen ist es sicherlich an die 'Diamant' Tasten gebunden -(\fBMETA_L\fP, \fBMETA_R\fP). Benutze \fIxmodmap(1x)\fP um die Belegung -herauszufinden. - -Die Zeichenkette in den eckigen Klammern nach einer Bindungsgruppe (wird unten -gezeigt) deutet auf die Konfigurationsdatei des Modules in welchem die Bindungen -definiert sind. - -.SS Global verfügbare Bindungen - -BINDINGS:WScreen - -.".SS Bindungsoperationen auf Frames und Screens und ihren Kindern - -BINDINGS:WMPlex - -.SS Bindungsoperationen auf Frames und ihren Kindern - -BINDINGS:WFrame - -.SS Bindungen zum Bewegungs-/Veränderungsmodus - -BINDINGS:WMoveresMode - -.SS Bindungen zum teilen der Arbeitsfläche [mod_ionws] - -BINDINGS:WTiling -.\" BINDINGS:WFrame.tiled - -.SS Bindungen für den fliessenden Arbeitsbereich und Frames [mod_floatws] - -BINDINGS:WGroupWS - -BINDINGS:WFrame.floating - -.SS Bindungen für Message- und Anfrageboxen [mod_query] - -BINDINGS:WInput - -.SS Bindungen zum Editieren in Anfragen [mod_query] - -Diese Bindungen sind vergleichbar mit denen des \fIjoe(1)\fP Texteditors. -Auschneiden, Kopieren und Einfügen arbeiten nach konventionellen -Gesichtspunkten. Etwas überarbeitet aber die gleichen Tasten. - -BINDINGS:WEdln - -.SS Bindungen für die Menüs [mod_menu] - -BINDINGS:WMenu - - -.SH DATEIEN und VERZEICHNISSE -.TP -.B ETCDIR/cfg_ion.lua -Voreingestellte Hauptkonfigurationsdateien -.TP -.B ETCDIR/cfg_*.lua -Andere Konfigurationsdateien -.TP -.B ETCDIR/look_*.lua -Farbschemata Konfigurationsdateien -.TP -.B ~/.ion3/ -Benutzerkonfigurationsdateien -.TP -.B ~/.ion3/cfg_ion.lua -Voreingestellte Benutzer Hauptkonfigurationsdateien (überschreiben die -systemweiten Konfigurationen) - -.SH SIEHE AUCH -Die Ion Homepage, \fIhttp://iki.fi/tuomov/ion/\fP -.PP -Das Dokument "Ion: Configuring and extending with Lua" kann auf der Ion Webseite -gefunden werden. - -.PP -.I DOCDIR/ -.PP -\fIX(7x)\fP, \fIpwm3(1)\fP, \fIjoe(1)\fP - -.SH AUTOR -Ion wurde von Tuomo Valkonen geschrieben diff --git a/man/ion3.fi.in b/man/ion3.fi.in index 82fca51..896a4d5 100644 --- a/man/ion3.fi.in +++ b/man/ion3.fi.in @@ -35,11 +35,11 @@ N Näytä Ionin versio. .TP .B \-about -Näytä tietoja Ionista (versio, tekijänoikeudet). +Näytä tietoja Ionista (versio, tekijä, lisenssi). .SH PERUSKÄSITTEET -Tämä kappale on katsaus erilaisiin niin kutsuttuihin \fBolioihin\fP, +Tämä kappale on katsaus erilaisiin niin kutsuttuihin \fBkappaleisiin\fP, joita ilmenee Ionin hallitsemalla X-näytöllä, ja niiden suhteisiin tavallisessa kokoonpanossa. Sinun tarvitse ymmärtää nämä suhteet tietääksesi milloin mitkäkin alempana kuvattavat näppäinsidonnat @@ -47,20 +47,20 @@ ovat k tehdäksesi omat asetustiedostot, katso Ionin seittisivulta saatavaa yksityiskohtaisempaa dokumentaatiota. -Ylimmän tason olioita, joilla on merkitystä tässä yhteydessä, +Ylimmän tason kappaleista, joilla on merkitystä tässä yhteydessä, kutsutaan \fBnäytöiksi\fP. Ne vastaavat fyysisiä näyttöjä. Näytöt sisältävät \fBtyöpöytiä\fP (jotka ovat itse eräänlaisia \fBryhmiä\fP) -ja kokoruudun tilassa olevia \fBasiakasikkunoita\fP. Nämä oliot ovat +ja kokoruudun tilassa olevia \fBasiakasikkunoita\fP. Nämä kappaleet ovat \fBlomitettu\fP siten, että vain yksi voi näkyä kerrallaan. Työpöydät voivat vuorostaan sisältää \fBlaatoituksia\fP sekä kelluvia/irroitettuja \fBkehyksiä\fP. Laatoitukset taasen sisältävät \fBkehyksiä\fP laatoitettuna täyttämään koko näytön, sekä mahdollisesti tilapalkin tai telakan (dock). Näyttöjen tapaan kehykset lomittavat -muita olioita, mutta tässä tapauksessa lähinnä asiakasikkuna\fBryhmiä\fP. +muita kappaleita, mutta tässä tapauksessa lähinnä asiakasikkuna\fBryhmiä\fP. Kehykset ovat suurimman osan ajasta ainut asia, minkä näet Ionista. Niillä voi olla reunakoristukset, ja lisäksi kehyksissä on \fBvälilehti\fP -jokaiselle lomitetulle oliolle. +jokaiselle lomitetulle kappaleelle. \fBKyselyt\fP ovat näyttöjen tai kehysten alaosiin imestyviä laatikoita, jotka odottavat sinulta tekstin syöttöä jonkin siitä riippuvan toiminnon @@ -82,11 +82,7 @@ jonka asetustiedosto m BINDINGS:WScreen -.SS Näytöillä tai ylimmän tason kehyksissä toimivat sidonnat - -BINDINGS:WMPlex.toplevel - -.SS Näytöillä tai (kaikissa) kehyksissä toimivat sidonnat +.SS Näytöillä ja kaikissa kehyksissä toimivat sidonnat BINDINGS:WMPlex @@ -94,7 +90,11 @@ BINDINGS:WMPlex BINDINGS:WFrame -.SS Ylimmän tason kehyksissä (ei ns. transient-dialogi) toimivat sidonnat +.SS Näytöillä ja ylimmän tason kehyksissä (ei ns. transientit) toimivat sidonnat + +BINDINGS:WMPlex.toplevel + +.SS Ylimmän tason kehyksissä (ei ns. transientit) toimivat sidonnat BINDINGS:WFrame.toplevel @@ -110,7 +110,6 @@ BINDINGS:WTiling .SS Asiakasikkunoiden sidonnat BINDINGS:WClientWin - BINDINGS:WGroupCW .SS Siirto- ja koonmuutostilan sidonnat diff --git a/man/ion3.in b/man/ion3.in index b9ab3f1..304498d 100644 --- a/man/ion3.in +++ b/man/ion3.in @@ -35,7 +35,7 @@ Show help on command line options Show version .TP .B \-about -Show about text (version, copyright) +Show about text (version, author, license) .SH BASIC CONCEPTS @@ -79,19 +79,19 @@ the module that whose configuration file defines these bindings. BINDINGS:WScreen -.SS Bindings operating on top-level frames and screens and their children - -BINDINGS:WMPlex.toplevel - -.SS Bindings operating on frames and screens and their children +.SS Bindings operating on all frames and screens BINDINGS:WMPlex -.SS Bindings operating on all frames (including transient) and their children +.SS Bindings operating on all frames BINDINGS:WFrame -.SS Bindings operating on top-level (non-transient) frames and their children +.SS Bindings operating on top-level (non-transient) frames and screens + +BINDINGS:WMPlex.toplevel + +.SS Bindings operating on top-level (non-transient) frames BINDINGS:WFrame.toplevel @@ -107,7 +107,6 @@ BINDINGS:WTiling .SS Bindings for client windows BINDINGS:WClientWin - BINDINGS:WGroupCW .SS Move/resize mode bindings diff --git a/man/pwm3.cs.in b/man/pwm3.cs.in index 548a16f..5b6f443 100644 --- a/man/pwm3.cs.in +++ b/man/pwm3.cs.in @@ -37,15 +37,15 @@ Zobraz Zobrazí verzi .TP .B \-about -Zobrazí informace o programu (verze, copyright) +Zobrazí informace o programu (verze, autor, copyright) .SH PØIØAZENÍ -Toto jsou implicitní pøiøazení klávesových zkratek. Pøiøazení modifikátoru +Toto jsou výchozí pøiøazení klávesových zkratek. Pøiøazení modifikátoru (\fBMod1\fP) závisí na systému. Na PCèkách s XFree86 bude nejspí¹ navázán na levou klávesu Alt (\fBAlt_L\fP). Na Sunech je obvykle namapován na klávesy s diamanty (\fBMeta_L\fP, \fBMeta_R\fP). Konkrétní pøiøazení zjistíte -programem \fIxmodmap(1x)\fP. +programem \fIxmodmap(1)\fP. Øetìzec v hranatých závorkách urèuje modul, jeho¾ konfiguraèní soubor definuje toto pøiøazení. @@ -54,23 +54,31 @@ definuje toto p BINDINGS:WScreen -.".SS Pøiøazení pro práci s rámy, obrazovkami a jejich potomky +.SS Pøiøazení pro práci s rámy, obrazovkami a jejich potomky BINDINGS:WMPlex .SS Pøiøazení pro práci s rámy a jejich potomky BINDINGS:WFrame +BINDINGS:WFrame.floating -.SS Pøiøazení pro pøesun/zmìnu velikosti +.SS Pøiøazení pro práci s nejvy¹¹ími (ne s doèasnými) rámy a obrazovkami -BINDINGS:WMoveresMode +BINDINGS:WMPlex.toplevel -.SS Pøiøazení pro plovoucí pracovní plochy [mod_floatws] +.SS Pøiøazení pro práci s nejvy¹¹ími (ne s doèasnými) rámy -BINDINGS:WGroupWS +BINDINGS:WFrame.toplevel -BINDINGS:WFrame.floating +.SS Pøiøazení pro práci s klientskými okny + +BINDINGS:WClientWin +BINDINGS:WGroupCW + +.SS Pøiøazení pro pøesun/zmìnu velikosti + +BINDINGS:WMoveresMode .SS Pøiøazení pro menu [mod_menu] diff --git a/man/pwm3.de.in b/man/pwm3.de.in deleted file mode 100644 index 5f6138d..0000000 --- a/man/pwm3.de.in +++ /dev/null @@ -1,106 +0,0 @@ -.TH PWM 1 -.SH NAME -PWM - ein X11 Fenster Manager -.SH ÜBERSICHT -.B pwm3 -.I "[optionen]" -.SH "BESCHREIBUNG" - -Der originale PWM war der erste Fenster Manager, welcher einen tabellenartigen -Aufbau seiner Objekte unterstützte. Diese Version des PWM basiert auf dem -Quellcode von Ion und unterscheidet sich zu diesem nur durch Unterschiede in den -Konfigurationsdateien, den Pfaden und einigen wenigen zusätzliche Optionen. - -.SH "OPTIONEN" -.TP -.B \-display host:display.screen -X Anzeige zum darstellen -.TP -.B \-conffile Konfigurationsdatei -Konfigurationsdatei welche anstelle der Vorgegebenen benutzt werden soll -.TP -.B \-searchdir dir -Verzeichnis worin die Konfigurationsdateien und andere Scripte gesucht werden -.TP -.B \-oneroot -Auf X Servern mit mehreren (traditionell non-Xinerama) Screens; handhabt nur den -voreingestellten Screen (Wurzelfenster); nicht alle, welche durch die '-display' -Option oder in der DISPLAY Umgebungsvariable bereitgestellt werden -.TP -.B \-sessionname sitzungs_name -Setzt einen Sitzungsnamen. Diese Option beeinflusst wo der Arbeitsbereich und -andere Sicherungsdateien abgelegt werden (~/.pwm3/sitzungs_name wenn die Option -gesetzt wurde). -.TP -.B \-help -Zeigt die Hilfe für die Kommandozeilenoptionen -.TP -.B \-version -Zeigt die Version -.TP -.B \-about -Zeigt Informationen über den Autor, die Version und das Copyright - -.SH BINDUNGEN -Hier sind die voreingestellten Tasten- und Mauszeigerbindungen beschrieben. -(\fBMod1\fP) hängt vom jeweiligen verwendeten System ab. Auf PC's mit XFree86 -ist es höchstwahrscheinlich an die linke 'ALT-Taste' gebungen (\fBALT_L\fP). -Auf SUN Systemen ist es sicherlich an die 'Diamant' Tasten gebunden -(\fBMETA_L\fP, \fBMETA_R\fP). Benutze \fIxmodmap(1x)\fP um die Belegung -herauszufinden. - -Die Zeichenkette in den eckigen Klammern nach einer Bindungsgruppe (wird unten -gezeigt) deutet auf die Konfigurationsdatei des Modules in welchem die Bindungen -definiert sind. - -.SS Global verfügbare Bindungen - -BINDINGS:WScreen - -.".SS Bindungsoperationen auf Frames und Screens und ihren Kindern - -BINDINGS:WMPlex - -.SS Bindungsoperationen auf Frames und ihren Kindern - -BINDINGS:WFrame - -.SS Bindungen zum Bewegungs-/Veränderungsmodus - -BINDINGS:WMoveresMode - -.SS Bindungen für den fliessenden Arbeitsbereich und Frames [mod_floatws] - -BINDINGS:WGroupWS - -BINDINGS:WFrame.floating - -.SS Bindungen für die Menüs [mod_menu] - -BINDINGS:WMenu - - -.SH DATEIEN und VERZEICHNISSE -.TP -.B ETCDIR/cfg_pwm.lua -Voreingestellte Hauptkonfigurationsdateien -.TP -.B ETCDIR/cfg_*.lua -Andere Konfigurationsdateien -.TP -.B ETCDIR/look_*.lua -Farbschemata Konfigurationsdateien -.TP -.B ~/.pwm3/ -Benutzerkonfigurationsdateien -.TP -.B ~/.pwm3/cfg_pwm.lua -Voreingestellte Benutzer Hauptkonfigurationsdateien (überschreiben die -systemweiten Konfigurationen) - -.SH SIEHE AUCH - -Weitere Informationen siehe \fIion3(1)\fP. - -.SH AUTOR -PWM und Ion wurde von Tuomo Valkonen geschrieben diff --git a/man/pwm3.fi.in b/man/pwm3.fi.in index 40c140f..b8d6465 100644 --- a/man/pwm3.fi.in +++ b/man/pwm3.fi.in @@ -36,7 +36,7 @@ N Näytä Ionin versio. .TP .B \-about -Näytä tietoja PWM:sta (versio, tekijänoikeudet). +Näytä tietoja PWM:sta (versio, tekijä, lisenssi). .SH SIDONNAT @@ -53,23 +53,31 @@ jonka asetustiedosto m BINDINGS:WScreen -.\".SS Kehyksiä ja näyttöjä, sekä niiden lapsia käsittelevät sidonnat +.SS Näytöillä ja kaikissa kehyksissä toimivat sidonnat BINDINGS:WMPlex -.SS Kehyksiä, sekä niiden lapsia käsittelevät sidonnat +.SS Kaikissa kehyksissä toimivat sidonnat BINDINGS:WFrame +BINDINGS:WFrame.floating -.SS Siirto ja koonmuutostilan sidonnat +.SS Näytöillä ja ylimmän tason kehyksissä (ei ns. transientit) toimivat sidonnat -BINDINGS:WMoveresMode +BINDINGS:WMPlex.toplevel -.SS Kelluvien työpöytien ja kehyksien sidonnat [mod_floatws] +.SS Ylimmän tason kehyksissä (ei ns. transientit) toimivat sidonnat -BINDINGS:WGroupWS +BINDINGS:WFrame.toplevel -BINDINGS:WFrame.floating +.SS Asiakasikkunoiden sidonnat + +BINDINGS:WClientWin +BINDINGS:WGroupCW + +.SS Siirto- ja koonmuutostilan sidonnat + +BINDINGS:WMoveresMode .SS Valikoiden sidonnat [mod_menu] diff --git a/man/pwm3.in b/man/pwm3.in index e38625b..8ea21b9 100644 --- a/man/pwm3.in +++ b/man/pwm3.in @@ -38,7 +38,7 @@ Show help on command line options Show version .TP .B \-about -Show about text (version, copyright) +Show about text (version, author, license) .SH BINDINGS @@ -54,23 +54,31 @@ the module that whose configuration file defines these bindings. BINDINGS:WScreen -.".SS Bindings operating on both frames and screens and their children +.SS Bindings operating on all frames and screens and their children BINDINGS:WMPlex -.SS Bindings operating on frames and their children +.SS Bindings operating on all frames and their children BINDINGS:WFrame +BINDINGS:WFrame.floating -.SS Move/resize mode bindings +.SS Bindings operating on top-level (non-transient) frames as well as screens -BINDINGS:WMoveresMode +BINDINGS:WMPlex.toplevel -.SS Bindings for floating workspaces and frames [mod_floatws] +.SS Bindings operating on top-level (non-transient) frames -BINDINGS:WGroupWS +BINDINGS:WFrame.toplevel -BINDINGS:WFrame.floating +.SS Bindings for client windows + +BINDINGS:WClientWin +BINDINGS:WGroupCW + +.SS Move/resize mode bindings + +BINDINGS:WMoveresMode .SS Bindings for menus [mod_menu] diff --git a/man/welcome.de.head b/man/welcome.de.head deleted file mode 100644 index 519e364..0000000 --- a/man/welcome.de.head +++ /dev/null @@ -1,22 +0,0 @@ -Willkommen bei Ion! - -Wenn Sie nie zuvor Ion benutzt haben, empfehlen wir Ihnen unbedingt das -Ion Handbuch zu studieren, bevor Sie weiter fortfahren. Obwohl es -unten aufgeführt ist, können Sie später wieder darauf zurückgreifen, indem -Sie drücken und dann , oder, indem Sie 'man ion3' in einem -Terminal ausführen. All das setzt voraus, dass Sie Ion in einem -Standardspeicherplatz installiert haben, damit die System Kommandos die -Handbuchseite finden können. - -Wenn Sie zu wild darauf sind, Ion auszuprobieren und gegen alle -Empfehlungen das Lesen des Handbuches überspringen wollen, so sollten Sie -zumindestens wissen, dass mit drücken der - Taste ein Terminal -gestartet werden kann, und dass man auf das Hauptmenü mit zugreifen kann. - -Wenn Sie sich bereit fühlen, individuelle Konfigurationsdateien zu -schreiben (was jederzeit möglich ist), so schauen sich bitte in das -Konfigurationshandbuch, welches auf der Ion Webseite zu finden ist. -(Link siehe Ende des Benutzerhandbuches) Ausserdem kann es nuetzlich sein, -sich erst ein wenig mit Ion vertraut zu machen bevor man sich eingehend -damit befasst. Damit Sie die Grundkonzepte erfassen koennen, die notwendig -sind, um die nötigen Konfigurationsdateien zu verstehen. diff --git a/mod_dock/dock.c b/mod_dock/dock.c index ca41852..dabe075 100644 --- a/mod_dock/dock.c +++ b/mod_dock/dock.c @@ -1437,9 +1437,9 @@ static WPHolder *dock_managed_get_pholder(WDock *dock, WRegion *mgd) static WPHolder *dock_prepare_manage(WDock *dock, const WClientWin *cwin, const WManageParams *param UNUSED, - int redir) + int priority) { - if(redir==MANAGE_REDIR_STRICT_YES) + if(!MANAGE_PRIORITY_OK(priority, MANAGE_PRIORITY_LOW)) return NULL; return (WPHolder*)create_basicpholder((WRegion*)dock, @@ -1583,7 +1583,7 @@ static bool clientwin_do_manage_hook(WClientWin *cwin, const WManageParams *para } return region_manage_clientwin((WRegion*)dock, cwin, param, - MANAGE_REDIR_PREFER_NO); + MANAGE_PRIORITY_NONE); } diff --git a/mod_menu/grabmenu.c b/mod_menu/grabmenu.c index 05e801f..9192a95 100644 --- a/mod_menu/grabmenu.c +++ b/mod_menu/grabmenu.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -17,6 +14,7 @@ #include #include #include +#include #include "menu.h" #include "mkmenu.h" @@ -93,9 +91,11 @@ WMenu *mod_menu_do_grabmenu(WMPlex *mplex, ExtlFn handler, ExtlTab tab, extl_table_gets_i(param, "initial", &(fnp.initial)); par.flags=(MPLEX_ATTACH_SWITCHTO| + MPLEX_ATTACH_LEVEL| MPLEX_ATTACH_UNNUMBERED| MPLEX_ATTACH_SIZEPOLICY); par.szplcy=SIZEPOLICY_FULL_BOUNDS; + par.level=STACKING_LEVEL_MODAL1+1; menu=(WMenu*)mplex_do_attach_new(mplex, &par, (WRegionCreateFn*)create_menu, diff --git a/mod_menu/main.c b/mod_menu/main.c index 601e11e..6daa80f 100644 --- a/mod_menu/main.c +++ b/mod_menu/main.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_menu/main.h b/mod_menu/main.h index e779d15..883cefb 100644 --- a/mod_menu/main.h +++ b/mod_menu/main.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_MENU_MAIN_H diff --git a/mod_menu/menu.c b/mod_menu/menu.c index df3a2b0..c87dc59 100644 --- a/mod_menu/menu.c +++ b/mod_menu/menu.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_menu/menu.h b/mod_menu/menu.h index 8d856e0..7ad247c 100644 --- a/mod_menu/menu.h +++ b/mod_menu/menu.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_MENU_MENU_H diff --git a/mod_menu/mkmenu.c b/mod_menu/mkmenu.c index 0c27f73..041e666 100644 --- a/mod_menu/mkmenu.c +++ b/mod_menu/mkmenu.c @@ -3,15 +3,13 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include #include #include +#include #include #include #include "menu.h" @@ -49,11 +47,12 @@ WMenu *mod_menu_do_menu(WMPlex *mplex, ExtlFn handler, ExtlTab tab, fnp.refg.h=0; par.flags=(MPLEX_ATTACH_SWITCHTO| - MPLEX_ATTACH_MODAL| + MPLEX_ATTACH_LEVEL| MPLEX_ATTACH_UNNUMBERED| MPLEX_ATTACH_SIZEPOLICY); par.szplcy=SIZEPOLICY_FULL_BOUNDS; - + par.level=STACKING_LEVEL_MODAL1+1; + return (WMenu*)mplex_do_attach_new(mplex, &par, (WRegionCreateFn*)create_menu, (void*)&fnp); diff --git a/mod_menu/mkmenu.h b/mod_menu/mkmenu.h index 610047f..7a961c8 100644 --- a/mod_menu/mkmenu.h +++ b/mod_menu/mkmenu.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_MENU_MKMENU_H diff --git a/mod_menu/mod_menu.lua b/mod_menu/mod_menu.lua index 705a66e..368115b 100644 --- a/mod_menu/mod_menu.lua +++ b/mod_menu/mod_menu.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- -- This is a slight abuse of the package.loaded variable perhaps, but diff --git a/mod_mgmtmode/Makefile b/mod_mgmtmode/Makefile deleted file mode 100644 index 2d0b769..0000000 --- a/mod_mgmtmode/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -## -## Management mode module Makefile -## - -# System-specific configuration is in system.mk -TOPDIR=.. -include $(TOPDIR)/build/system-inc.mk - -###################################### - -INCLUDES += $(X11_INCLUDES) $(LIBTU_INCLUDES) $(LIBEXTL_INCLUDES) -I.. -CFLAGS += $(XOPEN_SOURCE) $(C99_SOURCE) - -SOURCES=main.c mgmtmode.c - -MAKE_EXPORTS=mod_mgmtmode - -MODULE=mod_mgmtmode - -###################################### - -include $(TOPDIR)/build/rules.mk - -###################################### - -_install: module_install diff --git a/mod_mgmtmode/main.c b/mod_mgmtmode/main.c deleted file mode 100644 index ef62c52..0000000 --- a/mod_mgmtmode/main.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * ion/mod_mgmtmode/main.c - * - * Copyright (c) Tuomo Valkonen 2004-2007. - * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. - */ - -#include -#include -#include - -#include "exports.h" - -/*{{{ Module information */ - - -#include "../version.h" - -char mod_mgmtmode_ion_api_version[]=ION_API_VERSION; - - -/*}}}*/ - - -/*{{{ Bindmaps */ - - -WBindmap *mod_mgmtmode_bindmap=NULL; - - -/*}}}*/ - - -/*{{{ Init & deinit */ - - -void mod_mgmtmode_deinit() -{ - if(mod_mgmtmode_bindmap!=NULL){ - ioncore_free_bindmap("WMgmtMode", mod_mgmtmode_bindmap); - mod_mgmtmode_bindmap=NULL; - } - - mod_mgmtmode_unregister_exports(); -} - - -bool mod_mgmtmode_init() -{ - mod_mgmtmode_bindmap=ioncore_alloc_bindmap("WMgmtMode", NULL); - - if(mod_mgmtmode_bindmap==NULL) - return FALSE; - - if(!mod_mgmtmode_register_exports()){ - mod_mgmtmode_deinit(); - return FALSE; - } - - extl_read_config("cfg_mgmtmode", NULL, TRUE); - - return TRUE; -} - - -/*}}}*/ - diff --git a/mod_mgmtmode/main.h b/mod_mgmtmode/main.h deleted file mode 100644 index 5c9fde4..0000000 --- a/mod_mgmtmode/main.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * ion/mod_mgmtmode/main.h - * - * Copyright (c) Tuomo Valkonen 2004-2007. - * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. - */ - -#ifndef ION_MOD_MGMTMODE_MAIN_H -#define ION_MOD_MGMTMODE_MAIN_H - -#include - -extern bool mod_mgmtmode_init(); -extern void mod_mgmtmode_deinit(); - -extern WBindmap *mod_mgmtmode_bindmap; - -#endif /* ION_MOD_MGMTMODE_MAIN_H */ diff --git a/mod_mgmtmode/mgmtmode.c b/mod_mgmtmode/mgmtmode.c deleted file mode 100644 index 4b86aa4..0000000 --- a/mod_mgmtmode/mgmtmode.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - * ion/mod_mgmtmode/mgmtmode.c - * - * Copyright (c) Tuomo Valkonen 2004-2007. - * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. - */ - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include "mgmtmode.h" -#include "main.h" - - -static WMgmtMode *mgmt_mode=NULL; - - -static void cancel_mgmt(WRegion *reg); - - -/*{{{ WMgmtMode */ - - -static bool mgmtmode_init(WMgmtMode *mode, WRegion *reg) -{ - watch_init(&(mode->selw)); - watch_setup(&(mode->selw), (Obj*)reg, NULL); - return TRUE; -} - - -static WMgmtMode *create_mgmtmode(WRegion *reg) -{ - CREATEOBJ_IMPL(WMgmtMode, mgmtmode, (p, reg)); -} - - -static void mgmtmode_deinit(WMgmtMode *mode) -{ - if(mgmt_mode==mode) - mgmt_mode=NULL; - - watch_reset(&(mode->selw)); -} - - -/*EXTL_DOC - * Select management mode target. - */ -EXTL_EXPORT_MEMBER -void mgmtmode_select(WMgmtMode *mode, WRegion *reg) -{ - watch_setup(&(mode->selw), (Obj*)reg, NULL); -} - - -/*EXTL_DOC - * Return management mode target. - */ -EXTL_SAFE -EXTL_EXPORT_MEMBER -WRegion *mgmtmode_selected(WMgmtMode *mode) -{ - return (WRegion*)(mode->selw.obj); -} - - -/*EXTL_DOC - * End management mode. - */ -EXTL_EXPORT_MEMBER -void mgmtmode_finish(WMgmtMode *mode) -{ - if(mgmt_mode==mode) - cancel_mgmt(NULL); -} - - -EXTL_EXPORT -IMPLCLASS(WMgmtMode, Obj, mgmtmode_deinit, NULL); - - -/*}}}*/ - - -/*{{{ Rubberband */ - - -static void draw_rubberbox(WRootWin *rw, const WRectangle *rect) -{ - XPoint fpts[5]; - - fpts[0].x=rect->x; - fpts[0].y=rect->y; - fpts[1].x=rect->x+rect->w; - fpts[1].y=rect->y; - fpts[2].x=rect->x+rect->w; - fpts[2].y=rect->y+rect->h; - fpts[3].x=rect->x; - fpts[3].y=rect->y+rect->h; - fpts[4].x=rect->x; - fpts[4].y=rect->y; - - XDrawLines(ioncore_g.dpy, WROOTWIN_ROOT(rw), rw->xor_gc, fpts, 5, - CoordModeOrigin); -} - - -static void mgmtmode_draw(WMgmtMode *mode) -{ - WRegion *reg=mgmtmode_selected(mode); - - if(reg!=NULL){ - WRootWin *rw=region_rootwin_of(reg); - WRectangle g=REGION_GEOM(reg); - int rx=0, ry=0; - - region_rootpos(reg, &rx, &ry); - - g.x=rx; - g.y=ry; - - draw_rubberbox(rw, &g); - } -} - - -static void mgmtmode_erase(WMgmtMode *mode) -{ - mgmtmode_draw(mode); -} - - -/*}}}*/ - - -/*{{{ The mode */ - - -static bool mgmt_handler(WRegion *reg, XEvent *xev) -{ - XKeyEvent *ev=&xev->xkey; - WBinding *binding=NULL; - WMgmtMode *mode; - - if(ev->type==KeyRelease) - return FALSE; - - if(reg==NULL) - return FALSE; - - mode=mgmt_mode; - - if(mode==NULL) - return FALSE; - - binding=bindmap_lookup_binding(mod_mgmtmode_bindmap, - BINDING_KEYPRESS, - ev->state, ev->keycode); - - if(!binding) - return FALSE; - - if(binding!=NULL){ - mgmtmode_erase(mode); - extl_call(binding->func, "o", NULL, mode); - if(mgmt_mode!=NULL) - mgmtmode_draw(mgmt_mode); - } - - return (mgmt_mode==NULL); -} - - -static void cancel_mgmt(WRegion *reg) -{ - if(mgmt_mode!=NULL){ - mgmtmode_erase(mgmt_mode); - destroy_obj((Obj*)mgmt_mode); - } - ioncore_grab_remove(mgmt_handler); -} - - -/*EXTL_DOC - * Begin management mode. - */ -EXTL_EXPORT -WMgmtMode *mod_mgmtmode_begin(WRegion *reg) -{ - if(mgmt_mode!=NULL) - return NULL; - - mgmt_mode=create_mgmtmode(reg); - - if(mgmt_mode==NULL) - return NULL; - - ioncore_grab_establish((WRegion*)region_rootwin_of(reg), - mgmt_handler, - (GrabKilledHandler*)cancel_mgmt, 0); - - mgmtmode_draw(mgmt_mode); - - return mgmt_mode; -} - - -/*}}}*/ diff --git a/mod_mgmtmode/mgmtmode.h b/mod_mgmtmode/mgmtmode.h deleted file mode 100644 index daf7eae..0000000 --- a/mod_mgmtmode/mgmtmode.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * ion/mod_mgmtmode/mgmtmode.h - * - * Copyright (c) Tuomo Valkonen 2004-2007. - * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. - */ - -#ifndef ION_MOD_MGMTMODE_MGMTMODE_H -#define ION_MOD_MGMTMODE_MGMTMODE_H - -#include -#include - -INTRCLASS(WMgmtMode); - -DECLCLASS(WMgmtMode){ - Obj obj; - Watch selw; -}; - - -extern WMgmtMode *mod_mgmtmode_begin(WRegion *reg); - -extern void mgmtmode_select(WMgmtMode *mode, WRegion *reg); -extern WRegion *mgmtmode_selected(WMgmtMode *mode); - -extern void mgmtmode_finish(WMgmtMode *mode); - -#endif /* ION_MOD_MGMTMODE_MGMTMODE_H */ diff --git a/mod_query/complete.c b/mod_query/complete.c index 87cd934..a658037 100644 --- a/mod_query/complete.c +++ b/mod_query/complete.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_query/complete.h b/mod_query/complete.h index d9c9773..3386b18 100644 --- a/mod_query/complete.h +++ b/mod_query/complete.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_COMPLETE_H diff --git a/mod_query/edln.c b/mod_query/edln.c index 911dee7..ca28b38 100644 --- a/mod_query/edln.c +++ b/mod_query/edln.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_query/edln.h b/mod_query/edln.h index ea00f6f..2d46535 100644 --- a/mod_query/edln.h +++ b/mod_query/edln.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_EDLN_H diff --git a/mod_query/fwarn.c b/mod_query/fwarn.c index 5122948..32eb497 100644 --- a/mod_query/fwarn.c +++ b/mod_query/fwarn.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ @@ -14,6 +11,7 @@ #include #include #include +#include #include #include "wmessage.h" #include "fwarn.h" @@ -56,10 +54,11 @@ WMessage *mod_query_do_message(WMPlex *mplex, const char *p) return NULL; par.flags=(MPLEX_ATTACH_SWITCHTO| - MPLEX_ATTACH_MODAL| + MPLEX_ATTACH_LEVEL| MPLEX_ATTACH_UNNUMBERED| MPLEX_ATTACH_SIZEPOLICY); par.szplcy=SIZEPOLICY_FULL_BOUNDS; + par.level=STACKING_LEVEL_MODAL1+1; return (WMessage*)mplex_do_attach_new(mplex, &par, (WRegionCreateFn*)create_wmsg, diff --git a/mod_query/fwarn.h b/mod_query/fwarn.h index 9aed256..9355286 100644 --- a/mod_query/fwarn.h +++ b/mod_query/fwarn.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_FWARN_H diff --git a/mod_query/history.c b/mod_query/history.c index 168f606..0501da7 100644 --- a/mod_query/history.c +++ b/mod_query/history.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_query/history.h b/mod_query/history.h index f27be88..ad98f90 100644 --- a/mod_query/history.h +++ b/mod_query/history.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_HISTORY_H diff --git a/mod_query/input.c b/mod_query/input.c index 57a23c5..2cf1f25 100644 --- a/mod_query/input.c +++ b/mod_query/input.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_query/input.h b/mod_query/input.h index 3dbde2e..3a39b17 100644 --- a/mod_query/input.h +++ b/mod_query/input.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_INPUT_H diff --git a/mod_query/inputp.h b/mod_query/inputp.h index d91960f..5366a1d 100644 --- a/mod_query/inputp.h +++ b/mod_query/inputp.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_INPUTP_H diff --git a/mod_query/listing.c b/mod_query/listing.c index 271d17e..fbac450 100644 --- a/mod_query/listing.c +++ b/mod_query/listing.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_query/listing.h b/mod_query/listing.h index b4d10f0..c8a669f 100644 --- a/mod_query/listing.h +++ b/mod_query/listing.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_LISTING_H diff --git a/mod_query/main.c b/mod_query/main.c index aeef9ae..a360378 100644 --- a/mod_query/main.c +++ b/mod_query/main.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_query/main.h b/mod_query/main.h index 0a3f34f..2fd127f 100644 --- a/mod_query/main.h +++ b/mod_query/main.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_MAIN_H diff --git a/mod_query/mod_query.lua b/mod_query/mod_query.lua index 1bd3e23..b5bdd71 100644 --- a/mod_query/mod_query.lua +++ b/mod_query/mod_query.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- @@ -514,9 +511,9 @@ end --DOC --- This query asks for the name of a client window and attaches --- it to the frame the query was opened in. It uses the completion --- function \fnref{ioncore.complete_clientwin}. +-- This query asks for the name of a client window and switches +-- focus to the one entered. It uses the completion function +-- \fnref{ioncore.complete_clientwin}. function mod_query.query_gotoclient(mplex) mod_query.query(mplex, TR("Go to window:"), nil, mod_query.gotoclient_handler, @@ -525,9 +522,9 @@ function mod_query.query_gotoclient(mplex) end --DOC --- This query asks for the name of a client window and switches --- focus to the one entered. It uses the completion function --- \fnref{ioncore.complete_clientwin}. +-- This query asks for the name of a client window and attaches +-- it to the frame the query was opened in. It uses the completion +-- function \fnref{ioncore.complete_clientwin}. function mod_query.query_attachclient(mplex) mod_query.query(mplex, TR("Attach window:"), nil, mod_query.attachclient_handler, diff --git a/mod_query/mod_query_chdir.lua b/mod_query/mod_query_chdir.lua index 8c60cb1..dcf4d2a 100644 --- a/mod_query/mod_query_chdir.lua +++ b/mod_query/mod_query_chdir.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- local function ws_chdir(mplex, params) diff --git a/mod_query/query.c b/mod_query/query.c index 9418af5..7585b02 100644 --- a/mod_query/query.c +++ b/mod_query/query.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -16,6 +13,7 @@ #include #include #include +#include #include #include "query.h" #include "wedln.h" @@ -45,10 +43,11 @@ WEdln *mod_query_do_query(WMPlex *mplex, const char *prompt, const char *dflt, fnp.completor=completor; par.flags=(MPLEX_ATTACH_SWITCHTO| - MPLEX_ATTACH_MODAL| + MPLEX_ATTACH_LEVEL| MPLEX_ATTACH_UNNUMBERED| MPLEX_ATTACH_SIZEPOLICY); par.szplcy=SIZEPOLICY_FULL_BOUNDS; + par.level=STACKING_LEVEL_MODAL1+1; wedln=(WEdln*)mplex_do_attach_new(mplex, &par, (WRegionCreateFn*)create_wedln, diff --git a/mod_query/query.h b/mod_query/query.h index 3c67b3c..bc23d2b 100644 --- a/mod_query/query.h +++ b/mod_query/query.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_QUERY_H diff --git a/mod_query/wedln-wrappers.c b/mod_query/wedln-wrappers.c index fa5f0e4..ebb76dc 100644 --- a/mod_query/wedln-wrappers.c +++ b/mod_query/wedln-wrappers.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include "wedln.h" diff --git a/mod_query/wedln.c b/mod_query/wedln.c index 470b05b..da29aa9 100644 --- a/mod_query/wedln.c +++ b/mod_query/wedln.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -787,11 +784,12 @@ bool wedln_prev_completion(WEdln *wedln) /*EXTL_DOC * Call completion handler with the text between the beginning of line and * current cursor position, or select next/previous completion from list if in - * auto-show-completions mode and \var{cycle} is set to ``next'' or ``prev'', - * respectively. The \var{mode} may be ``history'' or ``normal''. If it is + * auto-show-completions mode and \var{cycle} is set to \codestr{next} or + * \codestr{prev}, respectively. + * The \var{mode} may be \codestr{history} or \codestr{normal}. If it is * not set, the previous mode is used. Normally next entry is not cycled to * despite the setting of \var{cycle} if mode switch occurs. To override - * this, use ``next-always'' and ``prev-always'' for \var{cycle}. + * this, use \codestr{next-always} and \codestr{prev-always} for \var{cycle}. */ EXTL_EXPORT_MEMBER void wedln_complete(WEdln *wedln, const char *cycle, const char *mode) diff --git a/mod_query/wedln.h b/mod_query/wedln.h index e966b41..9a72864 100644 --- a/mod_query/wedln.h +++ b/mod_query/wedln.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_WEDLN_H diff --git a/mod_query/wmessage.c b/mod_query/wmessage.c index e7c5d3d..f3dda0f 100644 --- a/mod_query/wmessage.c +++ b/mod_query/wmessage.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_query/wmessage.h b/mod_query/wmessage.h index be1bfca..6e936a8 100644 --- a/mod_query/wmessage.h +++ b/mod_query/wmessage.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_QUERY_WMESSAGE_H diff --git a/mod_sm/sm.c b/mod_sm/sm.c index 16bd2d2..03de1c6 100644 --- a/mod_sm/sm.c +++ b/mod_sm/sm.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2004-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_sp/main.c b/mod_sp/main.c index c9f13b4..e30d8c8 100644 --- a/mod_sp/main.c +++ b/mod_sp/main.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2004-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -19,11 +16,14 @@ #include #include #include +#include #include #include #include #include #include +#include +#include #include "main.h" #include "exports.h" @@ -43,6 +43,7 @@ char mod_sp_ion_api_version[]=ION_API_VERSION; #define SP_NAME "*scratchpad*" +#define SPWS_NAME "*scratchws*" /*}}}*/ @@ -58,34 +59,69 @@ static WRegion *create_frame_scratchpad(WWindow *parent, const WFitParams *fp, } -static WFrame *create(WMPlex *mplex, int flags) +static WRegion *create_scratchws(WWindow *parent, const WFitParams *fp, + void *unused) { - WFrame *sp; + WRegion *reg; + WRegionAttachData data; + WGroupAttachParams par; + WGroupWS *ws; + + ws=create_groupws(parent, fp); + + if(ws==NULL) + return NULL; + + region_set_name((WRegion*)ws, SPWS_NAME); + + data.type=REGION_ATTACH_NEW; + data.u.n.fn=create_frame_scratchpad; + data.u.n.param=NULL; + + par.szplcy_set=TRUE; + par.szplcy=SIZEPOLICY_FREE_GLUE; + + par.geom_set=TRUE; + par.geom.w=minof(fp->g.w, CF_SCRATCHPAD_DEFAULT_W); + par.geom.h=minof(fp->g.h, CF_SCRATCHPAD_DEFAULT_H); + par.geom.x=(fp->g.w-par.geom.w)/2; + par.geom.y=(fp->g.h-par.geom.h)/2; + + par.level_set=TRUE; + par.level=STACKING_LEVEL_MODAL1; + + par.bottom=TRUE; + + reg=group_do_attach(&ws->grp, &par, &data); + + if(reg==NULL){ + destroy_obj((Obj*)ws); + return NULL; + } + + region_set_name((WRegion*)reg, SP_NAME); + + return (WRegion*)ws; +} + + +static WRegion *create(WMPlex *mplex, int flags) +{ + WRegion *sp; WMPlexAttachParams par; - int sw=REGION_GEOM(mplex).w, sh=REGION_GEOM(mplex).h; par.flags=(flags |MPLEX_ATTACH_UNNUMBERED - |MPLEX_ATTACH_MODAL |MPLEX_ATTACH_SIZEPOLICY - |MPLEX_ATTACH_GEOM); - par.szplcy=SIZEPOLICY_FREE_GLUE; - - par.geom.w=minof(sw, CF_SCRATCHPAD_DEFAULT_W); - par.geom.h=minof(sh, CF_SCRATCHPAD_DEFAULT_H); - par.geom.x=(sw-par.geom.w)/2; - par.geom.y=(sh-par.geom.h)/2; + |MPLEX_ATTACH_PSEUDOMODAL); + par.szplcy=SIZEPOLICY_FULL_EXACT; - sp=(WFrame*)mplex_do_attach_new((WMPlex*)mplex, &par, - create_frame_scratchpad, - NULL); + sp=mplex_do_attach_new((WMPlex*)mplex, &par, + create_scratchws, + NULL); - - if(sp==NULL){ + if(sp==NULL) warn(TR("Unable to create scratchpad.")); - } - - region_set_name((WRegion*)sp, SP_NAME); return sp; } @@ -99,16 +135,19 @@ static bool is_scratchpad(WRegion *reg) if(nm==NULL) return FALSE; - if(inst_off<0) - return (strcmp(nm, SP_NAME)==0); - else - return (strncmp(nm, SP_NAME, inst_off)==0); + return (inst_off<0 + ? (strcmp(nm, SP_NAME)==0 || + strcmp(nm, SPWS_NAME)==0) + : (strncmp(nm, SP_NAME, inst_off)==0 || + strncmp(nm, SPWS_NAME, inst_off)==0)); } /*EXTL_DOC * Change displayed status of some scratchpad on \var{mplex} if one is - * found. The parameter \var{how} is one of (set/unset/toggle). + * found. The parameter \var{how} is one of + * \codestr{set}, \codestr{unset}, or \codestr{toggle}. + * The resulting status is returned. */ EXTL_EXPORT bool mod_sp_set_shown_on(WMPlex *mplex, const char *how) @@ -137,7 +176,9 @@ bool mod_sp_set_shown_on(WMPlex *mplex, const char *how) /*EXTL_DOC * Toggle displayed status of \var{sp}. - * The parameter \var{how} is one of (set/unset/toggle). + * The parameter \var{how} is one of + * \codestr{set}, \codestr{unset}, or \codestr{toggle}. + * The resulting status is returned. */ EXTL_EXPORT bool mod_sp_set_shown(WFrame *sp, const char *how) diff --git a/mod_sp/main.h b/mod_sp/main.h index 45b85e0..c08030f 100644 --- a/mod_sp/main.h +++ b/mod_sp/main.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 2004-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_SP_MAIN_H diff --git a/mod_statusbar/draw.c b/mod_statusbar/draw.c index 19ba93a..639295f 100644 --- a/mod_statusbar/draw.c +++ b/mod_statusbar/draw.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_statusbar/draw.h b/mod_statusbar/draw.h index 0724973..2cda82b 100644 --- a/mod_statusbar/draw.h +++ b/mod_statusbar/draw.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_STATUSBAR_DRAW_H diff --git a/mod_statusbar/main.c b/mod_statusbar/main.c index bf0e1d0..b6a0e73 100644 --- a/mod_statusbar/main.c +++ b/mod_statusbar/main.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -254,7 +251,7 @@ static bool clientwin_do_manage_hook(WClientWin *cwin, const WManageParams *para return FALSE; return region_manage_clientwin((WRegion*)sb, cwin, param, - MANAGE_REDIR_PREFER_NO); + MANAGE_PRIORITY_NONE); } diff --git a/mod_statusbar/main.h b/mod_statusbar/main.h index fa4dbfd..806adc9 100644 --- a/mod_statusbar/main.h +++ b/mod_statusbar/main.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_STATUSBAR_MAIN_H diff --git a/mod_statusbar/mod_statusbar.lua b/mod_statusbar/mod_statusbar.lua index 3164927..81db1a4 100644 --- a/mod_statusbar/mod_statusbar.lua +++ b/mod_statusbar/mod_statusbar.lua @@ -3,10 +3,7 @@ -- -- Copyright (c) Tuomo Valkonen 2004-2007. -- --- Ion is free software; you can redistribute it and/or modify it under --- the terms of the GNU Lesser General Public License as published by --- the Free Software Foundation; either version 2.1 of the License, or --- (at your option) any later version. +-- See the included file LICENSE for details. -- -- This is a slight abuse of the package.loaded variable perhaps, but @@ -238,7 +235,9 @@ end --DOC --- Load modules and launch ion-statusd with configuration table \var{cfg}. +-- Load modules and launch \file{ion-statusd} with configuration +-- table \var{cfg}. The options for each \file{ion-statusd} monitor +-- script should be contained in the corresponding sub-table of \var{cfg}. function mod_statusbar.launch_statusd(cfg) if statusd_pid>0 then return @@ -292,7 +291,23 @@ end -- Initialisation and default settings {{{ --DOC --- Create a statusbar. +-- Create a statusbar. The possible parameters in the +-- table \var{param} are: +-- +-- \begin{tabularx}{\linewidth}{llX} +-- Variable & Type & Description \\ +-- \var{template} & string & The template; see +-- Section \ref{sec:statusbar}. \\ +-- \var{pos} & string & Position: \code{"tl"}, \code{"tr"}, +-- \code{"bl"} or \code{"br"} +-- (for the obvious combinations of +-- top/left/bottom/right). \\ +-- \var{screen} & integer & Screen number to create the statusbar on. \\ +-- \var{fullsize} & boolean & If set, the statusbar will waste +-- space instead of adapting to layout. \\ +-- \var{systray} & boolaen & Swallow (KDE protocol) systray icons. \\ +-- \end{tabularx} +-- function mod_statusbar.create(param) local scr=ioncore.find_screen_id(param.screen or 0) if not scr then diff --git a/mod_statusbar/statusbar.c b/mod_statusbar/statusbar.c index 261560c..e4adc77 100644 --- a/mod_statusbar/statusbar.c +++ b/mod_statusbar/statusbar.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -553,9 +550,9 @@ static WRegion *statusbar_attach_ph(WStatusBar *sb, int flags, static WPHolder *statusbar_prepare_manage(WStatusBar *sb, const WClientWin *cwin, const WManageParams *param, - int redir) + int priority) { - if(redir==MANAGE_REDIR_STRICT_YES) + if(!MANAGE_PRIORITY_OK(priority, MANAGE_PRIORITY_LOW)) return NULL; return (WPHolder*)create_basicpholder((WRegion*)sb, @@ -664,7 +661,7 @@ WPHolder *statusbar_prepare_manage_transient(WStatusBar *sb, if(mgr!=NULL) return region_prepare_manage(mgr, cwin, param, - MANAGE_REDIR_PREFER_NO); + MANAGE_PRIORITY_NONE); else return NULL; } @@ -1038,7 +1035,8 @@ bool statusbar_set_systray(WStatusBar *sb, int sp) /*EXTL_DOC * Enable or disable use of \var{sb} as systray. - * The parameter \var{how} can be one of (set/unset/toggle). + * The parameter \var{how} can be one of + * \codestr{set}, \codestr{unset}, or \codestr{toggle}. * Resulting state is returned. */ EXTL_EXPORT_AS(WStatusBar, set_systray) @@ -1051,7 +1049,7 @@ bool statusbar_set_systray_extl(WStatusBar *sb, const char *how) /*EXTL_DOC * Is \var{sb} used as a systray? */ -EXTL_EXPORT_MEMBER +EXTL_EXPORT_AS(WStatusBar, is_systray) bool statusbar_is_systray_extl(WStatusBar *sb) { return sb->systray_enabled; diff --git a/mod_statusbar/statusbar.h b/mod_statusbar/statusbar.h index 8392f16..8c1cec0 100644 --- a/mod_statusbar/statusbar.h +++ b/mod_statusbar/statusbar.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_STATUSBAR_STATUSBAR_H diff --git a/mod_tiling/main.c b/mod_tiling/main.c index 4787870..36c5e26 100644 --- a/mod_tiling/main.c +++ b/mod_tiling/main.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_tiling/main.h b/mod_tiling/main.h index 08bb446..ade0cf5 100644 --- a/mod_tiling/main.h +++ b/mod_tiling/main.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_TILING_MAIN_H diff --git a/mod_tiling/ops.c b/mod_tiling/ops.c index 6ec45e4..75570e0 100644 --- a/mod_tiling/ops.c +++ b/mod_tiling/ops.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_tiling/panehandle.c b/mod_tiling/panehandle.c index 480e02d..4321d3c 100644 --- a/mod_tiling/panehandle.c +++ b/mod_tiling/panehandle.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_tiling/panehandle.h b/mod_tiling/panehandle.h index fe06f3e..8aa8b7c 100644 --- a/mod_tiling/panehandle.h +++ b/mod_tiling/panehandle.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_PANEWS_PANEHANDLE_H diff --git a/mod_tiling/placement.c b/mod_tiling/placement.c index 07de5f4..7e45806 100644 --- a/mod_tiling/placement.c +++ b/mod_tiling/placement.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -72,16 +69,14 @@ static bool placement_mrsh_extl(ExtlFn fn, WTilingPlacementParams *param) WPHolder *tiling_prepare_manage(WTiling *ws, const WClientWin *cwin, - const WManageParams *mp, int redir) + const WManageParams *mp, int priority) { + int cpriority=MANAGE_PRIORITY_SUBX(priority, MANAGE_PRIORITY_NORMAL); WRegion *target=NULL; WTilingPlacementParams param; WPHolder *ph; bool ret; - - if(redir==MANAGE_REDIR_STRICT_NO) - return NULL; - + param.ws=ws; param.reg=(WRegion*)cwin; param.mp=mp; @@ -95,7 +90,7 @@ WPHolder *tiling_prepare_manage(WTiling *ws, const WClientWin *cwin, target=(WRegion*)param.res_frame; - ph=region_prepare_manage(target, cwin, mp, redir); + ph=region_prepare_manage(target, cwin, mp, cpriority); if(ph!=NULL) return ph; } @@ -108,6 +103,6 @@ WPHolder *tiling_prepare_manage(WTiling *ws, const WClientWin *cwin, return NULL; } - return region_prepare_manage(target, cwin, mp, redir); + return region_prepare_manage(target, cwin, mp, cpriority); } diff --git a/mod_tiling/placement.h b/mod_tiling/placement.h index a61f892..f9d9338 100644 --- a/mod_tiling/placement.h +++ b/mod_tiling/placement.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_TILING_PLACEMENT_H diff --git a/mod_tiling/split-stdisp.c b/mod_tiling/split-stdisp.c index 352ba41..ac6175c 100644 --- a/mod_tiling/split-stdisp.c +++ b/mod_tiling/split-stdisp.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_tiling/split-stdisp.h b/mod_tiling/split-stdisp.h index 4f6ca59..b2b9159 100644 --- a/mod_tiling/split-stdisp.h +++ b/mod_tiling/split-stdisp.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_TILING_SPLIT_STDISP_H diff --git a/mod_tiling/split.c b/mod_tiling/split.c index 381bbb3..d05cc58 100644 --- a/mod_tiling/split.c +++ b/mod_tiling/split.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -1341,6 +1338,11 @@ WSplit *split_current_todir(WSplit *node, WPrimn hprimn, WPrimn vprimn, } +/* Note: both hprimn and vprimn are inverted when descending. Therefore + * one should be either PRIMN_NONE or PRIMN_ANY for sensible geometric + * navigation. (Both are PRIMN_TL or PRIMN_BR for pseudo-linear + * next/previous navigation.) + */ WSplit *splitsplit_nextto(WSplitSplit *node, WSplit *child, WPrimn hprimn, WPrimn vprimn, WSplitFilter *filter) @@ -1348,26 +1350,21 @@ WSplit *splitsplit_nextto(WSplitSplit *node, WSplit *child, WPrimn primn=(node->dir==SPLIT_HORIZONTAL ? hprimn : vprimn); WSplit *split=NULL, *nnode=NULL; - if(node->tl==child && (primn==PRIMN_BR || primn==PRIMN_ANY)){ + if(node->tl==child && (primn==PRIMN_BR || primn==PRIMN_ANY)) split=node->br; - primn=PRIMN_TL; - }else if(node->br==child && (primn==PRIMN_TL || primn==PRIMN_ANY)){ + else if(node->br==child && (primn==PRIMN_TL || primn==PRIMN_ANY)) split=node->tl; - primn=PRIMN_BR; - } if(split!=NULL){ - if(node->dir==SPLIT_HORIZONTAL){ - hprimn=primn; - vprimn=primn_none2any(vprimn); - }else{ - vprimn=primn; - hprimn=primn_none2any(vprimn); - } - - nnode=split_current_todir(split, hprimn, vprimn, filter); + nnode=split_current_todir(split, + primn_none2any(primn_invert(hprimn)), + primn_none2any(primn_invert(vprimn)), + filter); } - + + if(nnode==NULL) + nnode=split_nextto((WSplit*)node, hprimn, vprimn, filter); + return nnode; } @@ -1818,8 +1815,8 @@ WSplit *splitsplit_br(WSplitSplit *split) } /*EXTL_DOC - * Returns the direction of \var{split}; either ''vertical'' or - * ''horizontal''. + * Returns the direction of \var{split}; either \codestr{vertical} or + * \codestr{horizontal}. */ EXTL_SAFE EXTL_EXPORT_MEMBER diff --git a/mod_tiling/split.h b/mod_tiling/split.h index 10a0e5f..332b92c 100644 --- a/mod_tiling/split.h +++ b/mod_tiling/split.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_TILING_SPLIT_H diff --git a/mod_tiling/splitfloat.c b/mod_tiling/splitfloat.c index ff71afd..d746061 100644 --- a/mod_tiling/splitfloat.c +++ b/mod_tiling/splitfloat.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/mod_tiling/splitfloat.h b/mod_tiling/splitfloat.h index 8d51b59..270aed0 100644 --- a/mod_tiling/splitfloat.h +++ b/mod_tiling/splitfloat.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_TILING_SPLITFLOAT_H diff --git a/mod_tiling/tiling.c b/mod_tiling/tiling.c index bbefef7..6fec372 100644 --- a/mod_tiling/tiling.c +++ b/mod_tiling/tiling.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -262,25 +259,6 @@ Window tiling_xwindow(const WTiling *ws) } -WPHolder *tiling_prepare_manage_transient(WTiling *ws, - const WClientWin *transient, - const WManageParams *param, - int unused) -{ - /* Transient manager searches should not cross tilings unless - * explicitly floated. - */ - if(extl_table_is_bool_set(transient->proptab, "float")){ - return region_prepare_manage_transient_default((WRegion*)ws, - transient, - param, - unused); - }else{ - return NULL; - } -} - - /*}}}*/ @@ -1021,9 +999,10 @@ static WFrame *tiling_do_split(WTiling *ws, WSplit *node, /*EXTL_DOC - * Create a new frame on \var{ws} above/below/left of/right of - * \var{node} as indicated by \var{dirstr}. If \var{dirstr} is - * prefixed with ''floating:'' a floating split is created. + * Create a new frame on \var{ws} \codestr{above}, \codestr{below} + * \codestr{left} of, or \codestr{right} of \var{node} as indicated + * by \var{dirstr}. If \var{dirstr} is prefixed with + * \codestr{floating:} a floating split is created. */ EXTL_EXPORT_MEMBER WFrame *tiling_split(WTiling *ws, WSplit *node, const char *dirstr) @@ -1049,11 +1028,12 @@ WFrame *tiling_split_top(WTiling *ws, const char *dirstr) /*EXTL_DOC * Split \var{frame} creating a new frame to direction \var{dirstr} - * (one of ''left'', ''right'', ''top'' or ''bottom'') of \var{frame}. + * (one of \codestr{left}, \codestr{right}, \codestr{top} or + * \codestr{bottom}) of \var{frame}. * If \var{attach_current} is set, the region currently displayed in * \var{frame}, if any, is moved to thenew frame. - * If \var{dirstr} is prefixed with ''floating:'' a floating split is - * created. + * If \var{dirstr} is prefixed with \codestr{floating:}, a floating + * split is created. */ EXTL_EXPORT_MEMBER WFrame *tiling_split_at(WTiling *ws, WFrame *frame, const char *dirstr, @@ -1177,7 +1157,8 @@ WSplit *tiling_split_tree(WTiling *ws) /*EXTL_DOC * Return the most previously active region next to \var{reg} in - * direction \var{dirstr} (left/right/up/down). The region \var{reg} + * direction \var{dirstr} (\codestr{left}, \codestr{right}, \codestr{up}, + * or \codestr{down}). The region \var{reg} * must be managed by \var{ws}. If \var{any} is not set, the status display * is not considered. */ @@ -1198,8 +1179,8 @@ WRegion *tiling_nextto(WTiling *ws, WRegion *reg, const char *dirstr, /*EXTL_DOC * Return the most previously active region on \var{ws} with no * other regions next to it in direction \var{dirstr} - * (left/right/up/down). If \var{any} is not set, the status - * display is not considered. + * (\codestr{left}, \codestr{right}, \codestr{up}, or \codestr{down}). + * If \var{any} is not set, the status display is not considered. */ EXTL_SAFE EXTL_EXPORT_MEMBER @@ -1375,8 +1356,8 @@ WSplitSplit *tiling_set_floating(WTiling *ws, WSplitSplit *split, int sp) /*EXTL_DOC * Toggle floating of a split's sides at \var{split} as indicated by the - * parameter \var{how} (set/unset/toggle). A split of the appropriate is - * returned, if there was a change. + * parameter \var{how} (\codestr{set}, \codestr{unset}, or \codestr{toggle}). + * A split of the appropriate is returned, if there was a change. */ EXTL_EXPORT_AS(WTiling, set_floating) WSplitSplit *tiling_set_floating_extl(WTiling *ws, WSplitSplit *split, @@ -1390,9 +1371,10 @@ WSplitSplit *tiling_set_floating_extl(WTiling *ws, WSplitSplit *split, /*EXTL_DOC * Toggle floating of the sides of a split containin \var{reg} as indicated - * by the parameters \var{how} (set/unset/toggle) and \var{dirstr} - * (left/right/up/down/any). The new status is returned (and \code{false} - * also on error). + * by the parameters \var{how} (\codestr{set}, \codestr{unset}, or + * \codestr{toggle}) and \var{dirstr} (\codestr{left}, \codestr{right}, + * \codestr{up}, or \codestr{down}). The new status is returned + * (and \code{false} also on error). */ EXTL_EXPORT_AS(WTiling, set_floating_at) bool tiling_set_floating_at_extl(WTiling *ws, WRegion *reg, const char *how, @@ -1771,9 +1753,6 @@ static DynFunTab tiling_dynfuntab[]={ {(DynFun*)region_xwindow, (DynFun*)tiling_xwindow}, - {(DynFun*)region_prepare_manage_transient, - (DynFun*)tiling_prepare_manage_transient}, - END_DYNFUNTAB }; diff --git a/mod_tiling/tiling.h b/mod_tiling/tiling.h index 31abe91..26737ab 100644 --- a/mod_tiling/tiling.h +++ b/mod_tiling/tiling.h @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #ifndef ION_MOD_TILING_TILING_H diff --git a/modulelist.mk b/modulelist.mk index 4339987..b36b752 100644 --- a/modulelist.mk +++ b/modulelist.mk @@ -3,8 +3,8 @@ ## MODULE_LIST = mod_tiling mod_query mod_menu \ - mod_dock mod_sp mod_sm de \ - mod_mgmtmode mod_statusbar + mod_dock mod_sp mod_sm mod_statusbar \ + de # Modules to -dlpreload into pwm if statically linking. diff --git a/po/Makefile b/po/Makefile index 2339738..2db7db1 100644 --- a/po/Makefile +++ b/po/Makefile @@ -13,7 +13,7 @@ MSGMERGE = msgmerge MSGCAT = msgcat LXGETTEXT = lua-xgettext -TRANSLATIONS := fi cs de ru +TRANSLATIONS := fi cs MO_FILES := $(patsubst %,%.mo, $(TRANSLATIONS)) PO_FILES := $(patsubst %,%.po, $(TRANSLATIONS)) @@ -89,8 +89,3 @@ update_fi: pot update_cs: pot $(MSGMERGE) -U cs.po $(POTFILE) -update_ru: pot - $(MSGMERGE) -U ru.po $(POTFILE) - -update_de: pot - $(MSGMERGE) -U de.po $(POTFILE) diff --git a/po/cs.po b/po/cs.po index 41235cf..8debea9 100644 --- a/po/cs.po +++ b/po/cs.po @@ -1,7 +1,7 @@ # # Czech language translations for Ion3. # -# Copyright (c) Miroslav Kure 2004,2005,2006. +# Copyright (c) Miroslav Kure 2004,2005,2006,2007. # # This file is distributed under the same license as the Ion3 package. # @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Ion3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-11-12 12:07+0100\n" -"PO-Revision-Date: 2006-11-12 12:16+0100\n" +"POT-Creation-Date: 2007-04-22 15:41+0200\n" +"PO-Revision-Date: 2007-04-22 15:42+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: none\n" "MIME-Version: 1.0\n" @@ -92,7 +92,7 @@ msgid "Time request from X server failed." msgstr "Èasový po¾adavek od X serveru selhal." # -#: ../ioncore/exec.c:177 +#: ../ioncore/exec.c:186 msgid "Not saving state: running under session manager." msgstr "Neukládám stav: bì¾ím pod správcem sezení." @@ -147,36 +147,32 @@ msgstr "Nebyl zad msgid "Invalid arguments." msgstr "Neplatné argumenty." -#: ../ioncore/screen.c:298 -msgid "act: " -msgstr "act: " - -#: ../ioncore/screen.c:481 -msgid "Only workspace may not be destroyed." -msgstr "Poslední pracovní plocha nemù¾e být zru¹ena." +#: ../ioncore/screen.c:385 +msgid "Only workspace may not be destroyed/detached." +msgstr "Jediná pracovní plocha nemù¾e být zru¹ena." -#: ../ioncore/screen.c:489 +#: ../ioncore/screen.c:396 msgid "Screens may not be destroyed." msgstr "Obrazovky nesmí být znièeny." -#: ../ioncore/screen.c:525 +#: ../ioncore/screen.c:432 msgid "Invalid offset." msgstr "Neplatné odsazení" -#: ../ioncore/screen.c:568 +#: ../ioncore/screen.c:471 #, c-format msgid "Unable to create a workspace on screen %d." msgstr "Nemohu vytvoøit pracovní plochu na obrazovce %d." -#: ../ioncore/sizehint.c:151 +#: ../ioncore/sizehint.c:157 msgid "Invalid client-supplied width/height increment." msgstr "Klient zadal neplatný pøírùstek ¹íøky/vý¹ky." -#: ../ioncore/sizehint.c:159 +#: ../ioncore/sizehint.c:165 msgid "Invalid client-supplied aspect-ratio." msgstr "Klient zadal neplatný pomìr stran." -#: ../ioncore/ioncore.c:74 +#: ../ioncore/ioncore.c:78 msgid "" "This program is free software; you can redistribute it and/or\n" "modify it under the terms of the GNU Lesser General Public\n" @@ -196,16 +192,16 @@ msgstr "" "JAKÉKOLIV ZÁRUKY. Pro více podrobností se podívejte do licence GNU\n" "Lesser General Public License.\n" -#: ../ioncore/ioncore.c:155 +#: ../ioncore/ioncore.c:159 msgid "No encoding given in LC_CTYPE." msgstr "V LC_CTYPE není zadáno kódování." -#: ../ioncore/ioncore.c:437 +#: ../ioncore/ioncore.c:470 #, c-format msgid "Could not connect to X display '%s'" msgstr "Nemohu se pøipojit na X displej \"%s\"" -#: ../ioncore/ioncore.c:489 +#: ../ioncore/ioncore.c:522 msgid "Could not find a screen to manage." msgstr "Nemohu najít obrazovku, kterou bych mohl spravovat." @@ -225,12 +221,12 @@ msgstr "Vstupn msgid "Failed to create input context." msgstr "Selhalo vytvoøení vstupního kontextu." -#: ../ioncore/clientwin.c:411 +#: ../ioncore/clientwin.c:379 #, c-format msgid "The transient_for hint for \"%s\" points to itself." msgstr "Nápovìda transient_for pro \"%s\" ukazuje sama na sebe." -#: ../ioncore/clientwin.c:415 +#: ../ioncore/clientwin.c:383 #, c-format msgid "" "Client window \"%s\" has broken transient_for hint. (\"Extended WM hints\" " @@ -239,36 +235,36 @@ msgstr "" "Klientské okno \"%s\" má poru¹enou nápovìdu transient_for. (Schizofrenie " "více rodièù \"Extended WM hints\"?)" -#: ../ioncore/clientwin.c:420 +#: ../ioncore/clientwin.c:388 #, c-format msgid "The transient_for window for \"%s\" is not on the same screen." msgstr "Okno transient_for pro \"%s\" není na stejné obrazovce." -#: ../ioncore/clientwin.c:440 ../ioncore/clientwin.c:527 -#: ../ioncore/clientwin.c:1300 +#: ../ioncore/clientwin.c:408 ../ioncore/clientwin.c:496 +#: ../ioncore/clientwin.c:1292 #, c-format msgid "Window %#x disappeared." msgstr "Okno %#x zmizelo." -#: ../ioncore/clientwin.c:547 +#: ../ioncore/clientwin.c:516 msgid "Unable to find a matching root window!" msgstr "Nemohu najít odpovídající koøenové okno!" -#: ../ioncore/clientwin.c:582 +#: ../ioncore/clientwin.c:555 #, c-format msgid "Unable to manage client window %#x." msgstr "Nemohu spravovat klientské okno %#x." -#: ../ioncore/clientwin.c:633 +#: ../ioncore/clientwin.c:604 msgid "Changes is WM_TRANSIENT_FOR property are unsupported." msgstr "Zmìny vlastnosti WM_TRANSIENT_FOR nejsou podporovány." # -#: ../ioncore/clientwin.c:809 +#: ../ioncore/clientwin.c:776 msgid "Client does not support the WM_DELETE protocol." msgstr "Klient nepodporuje protokol WM_DELETE." -#: ../ioncore/clientwin.c:1306 +#: ../ioncore/clientwin.c:1298 msgid "Saved client window does not want to be managed." msgstr "Ulo¾ené klientské okno nechce být spravováno." @@ -277,74 +273,65 @@ msgstr "Ulo msgid "Unable to store colourmap watch info." msgstr "Nemohu ulo¾it informace o barevné mapì." -#: ../ioncore/region.c:46 +#: ../ioncore/region.c:47 msgid "Creating region with negative width or height!" msgstr "Vytváøím oblast se zápornou ¹íøkou nebo vý¹kou!" -#: ../ioncore/region.c:94 +#: ../ioncore/region.c:95 #, c-format msgid "Destroying object \"%s\" with client windows as children." msgstr "Nièím objekt \"%s\" spoleènì s klientskými okny jako dìtmi." -#: ../ioncore/region.c:395 +#: ../ioncore/region.c:434 +#, c-format +msgid "Can not destroy %s: contains client windows." +msgstr "Nemohu znièit %s: obsahuje klientská okna." + +#: ../ioncore/region.c:435 +msgid "(unknown)" +msgstr "(neznámý)" + +#: ../ioncore/region.c:498 msgid "Failed to rescue some client windows - not closing." msgstr "Záchrana nìkterých klientských oken selhala - nezavírám." -#: ../ioncore/attach.c:71 ../ioncore/pholder.c:46 -msgid "Unable to reparent." -msgstr "Nemohu zmìnit rodièe." - -#: ../ioncore/attach.c:157 ../ioncore/frame-pointer.c:282 +#: ../ioncore/attach.c:58 ../ioncore/frame-pointer.c:280 #, c-format msgid "Attempt to make region %s manage its ancestor %s." msgstr "Pokus, aby oblast %s spravovala svého pøedka %s." -#: ../ioncore/manage.c:77 +#: ../ioncore/attach.c:83 +msgid "Unable to reparent." +msgstr "Nemohu zmìnit rodièe." + +#: ../ioncore/attach.c:92 +msgid "Unexpected attach error: trying to recover by attaching to screen." +msgstr "Neoèekávaná chyba pøipojení: zkou¹ím obnovit pøipojením k obrazovce." + +#: ../ioncore/attach.c:111 +msgid "Failed recovery." +msgstr "Obnovení selhalo." + +#: ../ioncore/manage.c:193 msgid "Unable to find a screen for a new client window." msgstr "Nemohu najít obrazovku pro nové klientské okno." -#: ../ioncore/rootwin.c:223 +#: ../ioncore/rootwin.c:218 #, c-format msgid "Unable to redirect root window events for screen %d." msgstr "Nemohu pøesmìrovat události koøenového okna na obrazovce %d." -#: ../ioncore/rootwin.c:319 ../ioncore/rootwin.c:344 -msgid "Xinerama sanity check failed; overlapping screens detected." -msgstr "Kontrola Xineramy selhala: byly nalezeny pøekrývající se obrazovky." - -#: ../ioncore/rootwin.c:326 ../ioncore/rootwin.c:351 -msgid "Xinerama sanity check failed; zero size detected." -msgstr "Kontrola Xineramy selhala: byla nalezena nulová velikost." - -#: ../ioncore/rootwin.c:379 ../ioncore/rootwin.c:397 -msgid "Don't know how to get Xinerama information for multiple X root windows." -msgstr "Nevím, jak zpracovat informace z Xineramy pro více koøenových oken." - -#: ../ioncore/rootwin.c:393 -msgid "Error retrieving Xinerama information." -msgstr "Chyba pøi získávání informaci z Xineramy." - -#: ../ioncore/rootwin.c:432 ../ioncore/rootwin.c:451 -#, c-format -msgid "Unable to setup Xinerama screen %d." -msgstr "Nemohu nastavit obrazovku Xineramy %d." - -#: ../ioncore/rootwin.c:464 -#, c-format -msgid "Unable to setup X screen %d." -msgstr "Nemohu nastavit X obrazovku %d." - -#: ../ioncore/names.c:90 +#: ../ioncore/names.c:91 #, c-format msgid "Corrupt instance number %s." msgstr "Poru¹ená instance èíslo %s." -#: ../ioncore/saveload.c:125 +#: ../ioncore/saveload.c:98 #, c-format msgid "Unknown class \"%s\", cannot create region." msgstr "Neznámá tøída \"%s\", nemohu vytvoøit oblast." -#: ../ioncore/saveload.c:205 +#: ../ioncore/saveload.c:202 #, c-format msgid "" "There were errors loading layout. Backing up current layout savefile as\n" @@ -362,46 +349,46 @@ msgstr "" "Pøedtím nezapomeòte opravit konfiguraèní soubory, které zpùsobily tyto\n" "problémy. (Mo¾ná chybìjící modul?)" -#: ../ioncore/saveload.c:248 +#: ../ioncore/saveload.c:253 msgid "Unable to get file for layout backup." msgstr "Nemohu získat soubor pro zálohu rozlo¾ení." -#: ../ioncore/saveload.c:252 +#: ../ioncore/saveload.c:257 #, c-format msgid "Backup file %s already exists." msgstr "Zálo¾ní soubor %s ji¾ existuje." -#: ../ioncore/saveload.c:258 +#: ../ioncore/saveload.c:263 msgid "Failed backup." msgstr "Selhala záloha." # -#: ../ioncore/saveload.c:263 +#: ../ioncore/saveload.c:268 msgid "Unable to initialise layout on any screen." msgstr "Na ¾ádné obrazovce nemohu inicializovat rozlo¾ení." -#: ../ioncore/saveload.c:283 +#: ../ioncore/saveload.c:295 #, c-format msgid "Unable to get configuration for screen %d." msgstr "Nemohu získat nastavení pro obrazovku %d." -#: ../ioncore/saveload.c:296 +#: ../ioncore/saveload.c:308 msgid "Unable to save layout." msgstr "Nemohu ulo¾it rozlo¾ení." -#: ../ioncore/conf.c:143 +#: ../ioncore/conf.c:235 msgid "User directory can not be set." msgstr "U¾ivatelský adresáø nemù¾e být nastaven." -#: ../ioncore/conf.c:217 +#: ../ioncore/conf.c:309 msgid "Some bindmaps were empty, loading ioncore_efbb." msgstr "Nìkteré tabulky kláves jsou prázdné, nahrávám ioncore_efbb." -#: ../ioncore/fullscreen.c:98 +#: ../ioncore/fullscreen.c:49 msgid "Failed to enter full screen mode." msgstr "Selhal pøechod do celoobrazovkového re¾imu." -#: ../ioncore/fullscreen.c:120 +#: ../ioncore/fullscreen.c:83 msgid "" "Failed to return from full screen mode; remaining manager or parent from " "previous location refused to manage us." @@ -409,44 +396,40 @@ msgstr "" "Návrat z celoobrazovkového re¾imu se nezdaøil; zbývající správce nebo rodiè " "z pøedchozího umístìní nás nechce spravovat." -#: ../ioncore/mplex.c:172 -msgid "Refusing to destroy - not empty." -msgstr "Odmítám zru¹it - není prázdné." - # -#: ../ioncore/mplex.c:1678 +#: ../ioncore/mplex.c:1685 msgid "Invalid position setting." msgstr "Neplatné nastavení pozice." # -#: ../ioncore/mplex.c:1718 +#: ../ioncore/mplex.c:1725 msgid "Invalid action setting." msgstr "Neplatné nastavení akce." -#: ../ioncore/gr.c:119 +#: ../ioncore/gr.c:120 #, c-format msgid "Drawing engine %s is not registered!" msgstr "Vykreslovací jednotka %s není registrována!" -#: ../ioncore/gr.c:138 +#: ../ioncore/gr.c:139 #, c-format msgid "Unable to find brush for style '%s'." msgstr "Nemohu najít ¹tìtec pro styl \"%s\"." -#: ../ioncore/gr.c:408 +#: ../ioncore/gr.c:646 msgid "No drawing engines loaded, trying \"de\"." msgstr "Nebyly nahrány ¾ádné vykreslovací jednotky, zkou¹ím \"%s\"." -#: ../ioncore/group.c:184 ../mod_tiling/tiling.c:96 +#: ../ioncore/frame-draw.c:314 +msgid "" +msgstr "" + +#: ../ioncore/group.c:186 ../mod_tiling/tiling.c:92 #, c-format msgid "Error reparenting %s." msgstr "Chyba zmìny rodièe %s." -#: ../ioncore/group.c:481 ../mod_tiling/tiling.c:668 -msgid "Workspace not empty - refusing to destroy." -msgstr "Pracovní plocha není prázdná - odmítám zru¹it." - -#: ../ioncore/group.c:680 +#: ../ioncore/group.c:711 msgid "'bottom' already set." msgstr "'bottom' je ji¾ nastaven." @@ -458,100 +441,109 @@ msgstr "Neplatn msgid "Invalid direction parameter." msgstr "Neplatný parametr smìru." -#: ../ioncore/group-ws.c:67 +#: ../ioncore/group-ws.c:51 #, c-format msgid "Unknown placement method \"%s\"." msgstr "Neznámý zpùsob umístìní \"%s\"." +#: ../ioncore/detach.c:176 +msgid "Failed to reattach." +msgstr "Znovupøipojení selhalo." + +#: ../ioncore/screen-notify.c:190 +msgid "act: " +msgstr "akt: " + # -#: ../mod_tiling/tiling.c:77 +#: ../mod_tiling/tiling.c:73 msgid "Split not on workspace." msgstr "Rozdìlení není na pracovní plo¹e." -#: ../mod_tiling/tiling.c:373 +#: ../mod_tiling/tiling.c:348 msgid "Unable to create a node for status display." msgstr "Nemohu vytvoøit uzel pro stavový øádek." -#: ../mod_tiling/tiling.c:386 +#: ../mod_tiling/tiling.c:361 msgid "Unable to create new split for status display." msgstr "Nemohu vytvoøit nové rozdìlení pro stavový øádek." -#: ../mod_tiling/tiling.c:937 +#: ../mod_tiling/tiling.c:710 +msgid "Tiling in useless state." +msgstr "Dl¾dice v neu¾iteèném stavu." + +#: ../mod_tiling/tiling.c:924 msgid "Invalid direction" msgstr "Neplatný smìr" # -#: ../mod_tiling/tiling.c:970 ../mod_tiling/split.c:1018 +#: ../mod_tiling/tiling.c:957 ../mod_tiling/split.c:1018 msgid "Invalid node." msgstr "Neplatný uzel." # -#: ../mod_tiling/tiling.c:989 +#: ../mod_tiling/tiling.c:976 msgid "Unable to split." msgstr "Nemohu rozdìlit." -#: ../mod_tiling/tiling.c:1092 -msgid "Nil frame." -msgstr "Prázdný rám." - -#: ../mod_tiling/tiling.c:1097 -msgid "The frame is not managed by the workspace." -msgstr "Rám není spravován pracovní plochou." +#: ../mod_tiling/tiling.c:1090 +msgid "" +"Unable to unsplit: Could not move client windows elsewhere within the tiling." +msgstr "Nemohu slouèit: Nemohu pøesunout klientské okno nìkam do dla¾dic." -#: ../mod_tiling/tiling.c:1196 +#: ../mod_tiling/tiling.c:1207 msgid "Nil parameter." msgstr "Prázdný parametr." -#: ../mod_tiling/tiling.c:1201 +#: ../mod_tiling/tiling.c:1212 msgid "Manager doesn't match." msgstr "Správce se neshoduje." -#: ../mod_tiling/tiling.c:1238 +#: ../mod_tiling/tiling.c:1249 msgid "The status display is not a valid parameter for this routine." msgstr "Stavový displej není v této rutinì platným parametrem." -#: ../mod_tiling/tiling.c:1329 +#: ../mod_tiling/tiling.c:1340 msgid "Refusing to float split directly containing the status display." msgstr "Odmítám rozdìlit pøímo prvek obsahující stavový displej." -#: ../mod_tiling/tiling.c:1392 +#: ../mod_tiling/tiling.c:1403 msgid "No suitable split here." msgstr "®ádné vhodné rozdìlení." # -#: ../mod_tiling/tiling.c:1428 +#: ../mod_tiling/tiling.c:1439 msgid "Could not get split tree." msgstr "Nemohu získat strom rozdìlení" -#: ../mod_tiling/tiling.c:1449 +#: ../mod_tiling/tiling.c:1460 msgid "Workspace already has a status display node." msgstr "Pracovní plocha ji¾ obsahuje stavový displej." # -#: ../mod_tiling/tiling.c:1487 +#: ../mod_tiling/tiling.c:1498 msgid "Missing region parameters." msgstr "Chybìjící parametry oblasti." -#: ../mod_tiling/tiling.c:1531 ../mod_tiling/splitfloat.c:780 +#: ../mod_tiling/tiling.c:1542 ../mod_tiling/splitfloat.c:780 msgid "Invalid direction." msgstr "Neplatný smìr." # -#: ../mod_tiling/tiling.c:1606 +#: ../mod_tiling/tiling.c:1617 msgid "No split type given." msgstr "Nebyl zadán typ rozdìlení." -#: ../mod_tiling/tiling.c:1619 +#: ../mod_tiling/tiling.c:1630 msgid "Unknown split type." msgstr "Neznámý typ rozdìlení." # # -#: ../mod_tiling/tiling.c:1659 +#: ../mod_tiling/tiling.c:1670 msgid "The workspace is empty." msgstr "Pracovní plocha je prázdná." -#: ../mod_tiling/placement.c:106 +#: ../mod_tiling/placement.c:104 #, c-format msgid "" "Ooops... could not find a region to attach client window to on workspace %s." @@ -569,15 +561,15 @@ msgid "REGION_RQGEOM_TRYONLY unsupported for status display." msgstr "REGION_RQGEOM_TRYONLY není stavovým displejem podporován." # -#: ../mod_tiling/split.c:1082 +#: ../mod_tiling/split.c:1083 msgid "Splitting the status display is not allowed." msgstr "Rozdìlení stavového displeje není povoleno." -#: ../mod_tiling/split.c:1113 ../mod_tiling/splitfloat.c:903 +#: ../mod_tiling/split.c:1114 ../mod_tiling/splitfloat.c:903 msgid "Unable to split: not enough free space." msgstr "Nelze rozdìlit: nedostatek volného místa." -#: ../mod_tiling/split.c:1864 +#: ../mod_tiling/split.c:1865 #, c-format msgid "Unable to get configuration for %s." msgstr "Nemohu získat nastavení pro %s." @@ -590,33 +582,33 @@ msgstr "Stavov msgid "Status display badly located in split tree." msgstr "Stavový øádek je ve stromu rozdìlení umístìn na ¹patném místì." -#: ../mod_tiling/ops.c:28 -msgid "Already detached" -msgstr "Ji¾ je odpojen" - -#: ../mod_tiling/ops.c:142 +#: ../mod_tiling/ops.c:72 ../mod_tiling/ops.c:120 msgid "Not member of a group" msgstr "Není èlenem skupiny" -#: ../mod_tiling/ops.c:147 +#: ../mod_tiling/ops.c:77 msgid "Manager group already has bottom" -msgstr "Øídící skupina ji¾ je na dnì" +msgstr "Øídící skupina ji¾ má dno" + +#: ../mod_tiling/ops.c:154 +msgid "Unable to move a region from tiling to group." +msgstr "Nemohu pøesunout regiion z dlá¾dìní do skupiny." -#: ../mod_query/wedln.c:777 +#: ../mod_query/wedln.c:813 msgid "history" msgstr "historie" -#: ../mod_query/fwarn.c:34 +#: ../mod_query/fwarn.c:35 msgid "Error:\n" msgstr "Chyba:\n" # -#: ../mod_menu/menu.c:537 +#: ../mod_menu/menu.c:601 msgid "Empty menu." msgstr "Prázdné menu." # -#: ../mod_sm/sm.c:110 +#: ../mod_sm/sm.c:111 msgid "Failed to set session directory." msgstr "Selhalo nastavení adresáøe s relací." @@ -646,7 +638,7 @@ msgstr "Spr msgid "Unable to connect to the session manager." msgstr "Nemohu se pøipojit ke správci sezení." -#: ../mod_sp/main.c:85 +#: ../mod_sp/main.c:126 msgid "Unable to create scratchpad." msgstr "Nemohu vytvoøit poznámkový blok." @@ -654,53 +646,54 @@ msgstr "Nemohu vytvo msgid "reading a pipe" msgstr "ètu rouru" -#: ../mod_statusbar/main.c:97 -msgid "ion-statusd launch timeout." -msgstr "Èas spou¹tìní ion-statusd vypr¹el." - -#: ../mod_statusbar/main.c:160 +#: ../mod_statusbar/main.c:159 msgid "ion-statusd timed out." msgstr "Èas ion-statusd vypr¹el." -#: ../mod_statusbar/statusbar.c:1046 +#: ../mod_statusbar/statusbar.c:1081 #, c-format msgid "[ %date || load: %load ] %filler%systray" msgstr "[ %date || vytí¾ení: %load ] %filler%systray" -#: ../de/init.c:42 +#: ../de/init.c:68 #, c-format msgid "Border attribute %s sanity check failed." msgstr "Selhala kontrola atributu okraje %s." -#: ../de/init.c:65 +#: ../de/init.c:91 #, c-format msgid "Unknown border style \"%s\"." msgstr "Neznámý styl okraje \"%s\"." -#: ../de/init.c:97 +#: ../de/init.c:111 +#, c-format +msgid "Unknown border side configuration \"%s\"." +msgstr "Neznámé nastavení okraje \"%s\"." + +#: ../de/init.c:144 #, c-format msgid "Unable to allocate colour \"%s\"." msgstr "Nemohu alokovat barvu \"%s\"." -#: ../de/init.c:160 +#: ../de/init.c:210 #, c-format msgid "Corrupt substyle table %d." msgstr "Poru¹ená tabulka stylù %d." -#: ../de/init.c:193 +#: ../de/init.c:243 #, c-format msgid "Unknown text alignment \"%s\"." msgstr "Neznámý textový prvek \"%s\"." -#: ../de/init.c:263 +#: ../de/init.c:319 #, c-format msgid "'based_on' for %s points back to the style itself." msgstr "Èást 'based_on' stylu %s ukazuje sama na sebe." -#: ../de/init.c:266 +#: ../de/init.c:322 #, c-format -msgid "Unknown base style \"%s\"." -msgstr "Neznámý základní styl \"%s\"." +msgid "Unknown base style. \"%s\"" +msgstr "Neznámý základní styl. \"%s\"" #: ../de/font.c:47 #, c-format @@ -722,8 +715,8 @@ msgstr "Nahr #: ../de/style.c:315 #, c-format -msgid "Style %s still in use [%d] but the module is being unloaded!" -msgstr "Styl %s se stále pou¾ívá [%d], ale modul se ji¾ ru¹í z pamìti!" +msgid "Style is still in use [%d] but the module is being unloaded!" +msgstr "Styl se stále pou¾ívá [%d], ale modul se ji¾ ru¹í z pamìti!" #: ../ion/ion.c:42 ../pwm/pwm.c:42 msgid "X display to use" @@ -738,52 +731,44 @@ msgid "Add directory to search path" msgstr "Pøidá adresáø do prohledávané cesty" #: ../ion/ion.c:51 ../pwm/pwm.c:51 -msgid "Manage default root window/non-Xinerama screen only" -msgstr "Spravuje pouze implicitní koøenové okno/obrazovku bez Xineramy" - -#: ../ion/ion.c:55 -msgid "Use Xinerama screen information (default: 1/yes)" -msgstr "Pou¾ít Xineramu (implicitnì: 1/ano)" +msgid "Manage default screen only" +msgstr "Spravuje pouze výchozí obrazovku" -#: ../ion/ion.c:58 ../pwm/pwm.c:58 -msgid "Ignored: not compiled with Xinerama support" -msgstr "Ignorováno: program je sestaven bez podpory Xineramy" - -#: ../ion/ion.c:62 ../pwm/pwm.c:62 +#: ../ion/ion.c:54 ../pwm/pwm.c:54 msgid "Name of session (affects savefiles)" msgstr "Jméno sezení (ovlivní místo ulo¾ení)" -#: ../ion/ion.c:65 ../pwm/pwm.c:65 +#: ../ion/ion.c:57 ../pwm/pwm.c:57 msgid "Session manager client ID" msgstr "Klientské ID správce sezení" -#: ../ion/ion.c:68 ../pwm/pwm.c:68 +#: ../ion/ion.c:60 ../pwm/pwm.c:60 msgid "Do not create startup error log and display it with xmessage." msgstr "" "Nevytváøet záznam o chybách pøi startu a nezobrazovat jej pomocí xmessage." -#: ../ion/ion.c:72 ../pwm/pwm.c:72 +#: ../ion/ion.c:64 ../pwm/pwm.c:64 msgid "Show this help" msgstr "Zobrazí tuto nápovìdu" -#: ../ion/ion.c:75 ../pwm/pwm.c:75 +#: ../ion/ion.c:67 ../pwm/pwm.c:67 msgid "Show program version" msgstr "Zobrazí verzi programu" -#: ../ion/ion.c:78 ../pwm/pwm.c:78 +#: ../ion/ion.c:70 ../pwm/pwm.c:70 msgid "Show about text" msgstr "Zobrazí nìco o programu" -#: ../ion/ion.c:93 +#: ../ion/ion.c:85 msgid "Could not get user configuration file directory." msgstr "Nemohu získat u¾ivatelùv adresáø s nastavením." -#: ../ion/ion.c:107 +#: ../ion/ion.c:99 #, c-format msgid "%s/welcome.txt" msgstr "%s/welcome.cs.txt" -#: ../ion/ion.c:140 ../pwm/pwm.c:87 +#: ../ion/ion.c:132 ../pwm/pwm.c:79 #, c-format msgid "" "Usage: %s [options]\n" @@ -792,28 +777,20 @@ msgstr "" "Pou¾ití: %s [volby]\n" "\n" -#: ../ion/ion.c:200 ../pwm/pwm.c:150 -msgid "Invalid parameter to -xinerama." -msgstr "Neplatný parametr pro -xinerama." - # -#: ../ion/ion.c:219 ../pwm/pwm.c:169 +#: ../ion/ion.c:200 ../pwm/pwm.c:150 msgid "Invalid command line." msgstr "Neplatná pøíkazová øádka." -#: ../ion/ion.c:241 +#: ../ion/ion.c:222 msgid "Ion startup error log:\n" msgstr "Záznam chyb pøi startu Ionu:\n" -#: ../ion/ion.c:252 ../pwm/pwm.c:202 +#: ../ion/ion.c:233 ../pwm/pwm.c:183 msgid "Refusing to start due to encountered errors." msgstr "Odmítám se spustit kvùli zaznamenaným chybám." -#: ../pwm/pwm.c:55 -msgid "Use Xinerama screen information (default: 0/no)" -msgstr "Pou¾ít Xineramu (implicitnì: 0/ne) " - -#: ../pwm/pwm.c:191 +#: ../pwm/pwm.c:172 msgid "PWM startup error log:\n" msgstr "Záznam chyb pøi startu PWM:\n" @@ -927,16 +904,16 @@ msgid "" msgstr "Funkce '%s' má víc parametrù, ne¾ lze zpracovat obsluhou v 1. úrovni" # -#: ../libextl/luaextl.c:2373 +#: ../libextl/luaextl.c:2347 msgid "Maximal serialisation depth reached." msgstr "Dosa¾ena maximální hloubka serializace." -#: ../libextl/luaextl.c:2394 +#: ../libextl/luaextl.c:2368 #, c-format msgid "Unable to serialise type %s." msgstr "Nemohu serializovat typ %s." -#: ../libextl/luaextl.c:2425 +#: ../libextl/luaextl.c:2399 msgid "-- This file has been generated by Ion. Do not edit.\n" msgstr "-- Tento soubor byl vytvoøen Ionem. Neupravujte jej.\n" @@ -949,305 +926,296 @@ msgstr "" "Kontrola typu selhala ve druhé úrovni obsluhy volání pro parametr %d " "(obdr¾el %s, oèekával %s)." -msgid "Grow-D" -msgstr "Rùst dolù" +msgid "Scroll the message or completions up/down." +msgstr "Roluje zprávu nebo seznam dokonèení nahoru/dolù." -msgid "Grow-U" -msgstr "Rùst nahoru" +msgid "Close the query/message box, not executing bound actions." +msgstr "Zavøe okno s dotazem/zprávou, ani¾ by se spustily svázané akce.." -msgid "Grow-R" -msgstr "Rùst vpravo" +msgid "Close the query and execute bound action." +msgstr "Zavøe dotaz a spustí svázanou akci." -msgid "Grow-L" -msgstr "Rùst vlevo" +msgid "Complete from history" +msgstr "Doplní z historie." -msgid "Pos-BR" -msgstr "Pozice PD" +msgid "Try to complete the entered text or cycle through completions." +msgstr "Zkusí doplnit zadaný text nebo bude cyklovat mezi mo¾nostmi." -msgid "Pos-BL" -msgstr "Pozice LD" +# +msgid "Clear mark/cancel selection." +msgstr "Sma¾e znaèku/zru¹í výbìr." -msgid "Pos-TR" -msgstr "Pozice PH" +# +msgid "Copy selection." +msgstr "Zkopíruje výbìr." -msgid "Pos-TL" -msgstr "Pozice LH" +# +msgid "Cut selection." +msgstr "Vyjme výbìr." -msgid "Toggle floating dock." -msgstr "Zapne plovoucí dok." +# +msgid "Set mark/begin selection." +msgstr "Nastaví znaèku/zaèátek výbìru." -msgid "Clear the menu's typeahead find buffer." -msgstr "Vyma¾e buffer pro dopøedné hledání v menu." +msgid "Paste from the clipboard." +msgstr "Vlo¾í ze schránky." -msgid "Select next/previous menu entry." -msgstr "V menu vybere dal¹í/pøedchozí polo¾ku." +msgid "Select next/previous (matching) history entry." +msgstr "Vybere dal¹í/pøedchozí (odpovídající) polo¾ku historie." -# -# -msgid "Activate current menu entry." -msgstr "Aktivuje vybranou polo¾ku v menu." +msgid "Transpose characters." +msgstr "Transponuje znaky." -msgid "Close the menu." -msgstr "Zavøe menu." +msgid "Delete the whole line." +msgstr "Sma¾e celý øádek." -msgid "New tiling" -msgstr "Vytvoøit dla¾dice" +msgid "Delete to end of line." +msgstr "Sma¾e text do konce øádky." -msgid "Detach" -msgstr "Odpojit" +msgid "Delete one word forward/backward." +msgstr "Sma¾e slovo pøed/za kurzorem." -msgid "Transpose" -msgstr "Transponovat" +msgid "Delete previous character." +msgstr "Sma¾e pøedchozí znak." -msgid "Flip" -msgstr "Obrátit" +msgid "Delete next character." +msgstr "Sma¾e následující znak." -msgid "Split horizontally" -msgstr "Rozdìlit horizontálnì" +msgid "Skip one word forward/backward." +msgstr "Pøeskoèí slovo dopøedu/dozadu." -msgid "Split vertically" -msgstr "Rozdìlit vertikálnì" +msgid "Go to end/beginning." +msgstr "Skoèí na konec/zaèátek." -msgid "At root" -msgstr "Na koøenu" +msgid "Move one character forward/backward." +msgstr "Posune se o znak vpøed/vzad." -msgid "Below" -msgstr "Dole" +msgid "Kill" +msgstr "Ukonèit" -msgid "Above" -msgstr "Nahoøe" +msgid "Attach tagged" +msgstr "Pøipojit oznaèené" -msgid "At right" -msgstr "Vpravo" +msgid "Rename" +msgstr "Pøejmenovat" -msgid "At left" -msgstr "Vlevo" +msgid "Close" +msgstr "Zavøít" -msgid "Float split" -msgstr "Plovoucí okraj" +msgid "De/reattach" +msgstr "Od/pøipojit" -msgid "Destroy frame" -msgstr "Znièit rám" +msgid "Toggle tag" +msgstr "(Od)znaèit" -msgid "Tile frame, if no tiling exists on the workspace" -msgstr "" -"Zmìní rám na dla¾dice (pokud zatím dla¾dice na pracovní plo¹e neexistují)." +msgid "Window info" +msgstr "Informace o oknì" -msgid "Detach window from tiled frame" -msgstr "Odpojí okno od dla¾dicového rámu" +msgid "Clear tags" +msgstr "Vyèistit znaèky" -msgid "Destroy current frame." -msgstr "Znièí aktuální rám." +msgid "Exit" +msgstr "Ukonèit" -msgid "Split current frame horizontally." -msgstr "Rozdìlí rám horizontálnì." +msgid "Restart TWM" +msgstr "Restartovat TWM" -msgid "Go to frame above/below/right/left of current frame." -msgstr "Pøejde do rámu nad/pod/vpravo/vlevo od aktuálního rámu." +msgid "Restart" +msgstr "Restartovat" -msgid "Split current frame vertically." -msgstr "Rozdìlí rám vertikálnì." +msgid "Save" +msgstr "Ulo¾it" -msgid "Failed to create statusbar." -msgstr "Selhalo vytvoøení stavového øádku." +msgid "Session" +msgstr "Sezení" -msgid "Screen already has an stdisp. Refusing to create a statusbar." -msgstr "Obrazovka ji¾ obsahuje stdisp. Odmítám vytvoøit stavový øádek." +msgid "Styles" +msgstr "Styly" -msgid "Screen not found." -msgstr "Obrazovka nebyla nalezna." +msgid "About Ion" +msgstr "O Ionu" -msgid "Failed to start ion-statusd." -msgstr "Selhalo spu¹tìní ion-statusd." +msgid "Help" +msgstr "Nápovìda" -msgid "Errors starting ion-statusd:\n" -msgstr "Chyba pøi startu ion-statusd:\n" +msgid "Lock screen" +msgstr "Zamknout obrazovku" -msgid "Could not find %s" -msgstr "Nemohu najít %s" +msgid "Terminal" +msgstr "Terminál" -msgid "ion-statusd quit." -msgstr "ion-statusd konèí." +# +msgid "Run..." +msgstr "Spustit..." -msgid "Not a directory." -msgstr "Není adresáøem." +# +msgid "Move in specified direction." +msgstr "Posune se v zadaném smìru." -msgid "Invalid command" -msgstr "Neplatný pøíkaz" +msgid "Shrink in specified direction." +msgstr "Zmen¹uje v zadaném smìru." -msgid "Error in command string: " -msgstr "Chyba v pøíkazu: " +# +msgid "Grow in specified direction." +msgstr "Roste v zadaném smìru." -msgid "Error compiling guard: %s" -msgstr "Chyba pøi sestavení strá¾ce: %s" +msgid "End the resize mode." +msgstr "Ukonèí re¾im zmìny velikosti." -msgid "Invalid guard %s." -msgstr "Neplatná ochrana %s." +msgid "Cancel the resize mode." +msgstr "Zru¹í re¾im zmìny velikosti." -msgid "Main menu:" -msgstr "Hlavní menu:" +msgid "Move the frame." +msgstr "Pøesune rám." -msgid "Context menu:" -msgstr "Kontextové menu:" +msgid "Lower the frame." +msgstr "Pøesune rám do pozadí" -msgid "Floating frame" -msgstr "Plovoucí rám" +# +msgid "Raise the frame." +msgstr "Pøesune rám do popøedí." -msgid "Tiled frame" -msgstr "Dla¾dicový rám" +msgid "Toggle shade mode" +msgstr "Pøepne stínový re¾im" -msgid "Tiling" -msgstr "Dla¾dice" +msgid "Attach tagged objects to this frame." +msgstr "Pøipojí oznaèené objekty k tomuto rámu." -# -msgid "Workspace" -msgstr "Pracovní plocha" +msgid "Maximize the frame horizontally/vertically." +msgstr "Maximalizuje rám horizontálnì/vertikálnì." -msgid "Screen" -msgstr "Obrazovka" +msgid "Move current object within the frame left/right." +msgstr "Pøesune objekt v rámu vlevo/vpravo." -msgid "Frame" -msgstr "Rám" +msgid "Switch to next/previous object within the frame." +msgstr "Pøepne se na dal¹í/pøedchozí objekt v rámu." -msgid "Recursive table - unable to deepcopy" -msgstr "Rekurzivní tabulka - nemohu provést hlubokou kopii" +msgid "Switch to n:th object within the frame." +msgstr "Pøepne se do n-tého objektu v rámu." -msgid "" -"Making the following minimal emergency mappings:\n" -" F2 -> xterm\n" -" F11 -> restart\n" -" F12 -> exit\n" -" Mod1+C -> close\n" -" Mod1+K P/N -> WFrame.switch_next/switch_prev\n" -msgstr "" -"Vytváøím nouzové pøiøazení kláves:\n" -" F2 -> xterm\n" -" F11 -> restart\n" -" F12 -> exit\n" -" Mod1+C -> close\n" -" Mod1+K P/N -> WFrame.switch_next/switch_prev\n" - -msgid "Unable to append to non-table menu" -msgstr "Nelze pøidat do netabulkového menu" - -msgid "Cannot save selection." -msgstr "Nemohu ulo¾it výbìr." - -msgid "Save look selection in %s?" -msgstr "Ulo¾it nastavení vzhledu do %s?" - -msgid "Too much result data" -msgstr "Pøíli¹ mnoho výsledkù" - -msgid "Could not find client window %s." -msgstr "Nemohu najít klientské okno %s." +# +msgid "Query for a client window to attach." +msgstr "Dotá¾e se na klientské okno, které má pøipojit." -msgid "Cannot attach: different root windows." -msgstr "Nemohu pøipojit: rùzná koøenová okna." +msgid "Move objects between frames by dragging and dropping the tab." +msgstr "Pøesune objekty mezi rámy pomocí ta¾ení za zálo¾ku." -msgid "Unknown error" -msgstr "Neznámá chyba" +msgid "Resize the frame." +msgstr "Zmìní velikost rámu." -msgid "Go to window:" -msgstr "Jít do okna:" +msgid "Switch the frame to display the object indicated by the tab." +msgstr "Pøepne rám, aby zobrazoval objekt urèený zálo¾kou." -msgid "Attach window:" -msgstr "Pøipojit okno:" +msgid "Begin move/resize mode." +msgstr "Zahájí re¾im pøesunu/zmìny velikosti." -msgid "Go to or create workspace:" -msgstr "Vytvoøit nebo pøejít na pracovní plochu:" +msgid "Display context menu." +msgstr "Zobrazí kontextové menu." -msgid "Exit Ion/Shutdown session (y/n)?" -msgstr "Ukonèit Ion/ukonèit sezení (y/n)?" +# +msgid "Query for a client window to go to." +msgstr "Dotá¾e se na klientské okno, do nìho¾ má pøejít." -msgid "Restart Ion (y/n)?" -msgstr "Restartovat Ion (y/n)?" +msgid "Query for workspace to go to or create a new one." +msgstr "Zeptá se na pracovní plochu, na kterou má pøejít, nebo ji vytvoøit." -msgid "Frame name:" -msgstr "Název rámu:" +msgid "Query for file to view." +msgstr "Zeptá se na soubor, který chcete zobrazit." -msgid "Workspace name:" -msgstr "Název pracovní plochy:" +msgid "Query for file to edit." +msgstr "Zeptá se na soubor, který chcete upravit." -msgid "Edit file:" -msgstr "Upravit soubor:" +msgid "Query for host to connect to with SSH." +msgstr "Zeptá se na jméno poèítaèe, ke kterému se má pøipojit pomocí SSH." -msgid "View file:" -msgstr "Prohlédnout soubor:" +msgid "Query for Lua code to execute." +msgstr "Zeptá se na lua kód, který má vykonat." -msgid "Run:" -msgstr "Spustit:" +msgid "Query for command line to execute." +msgstr "Zeptá se na pøíkaz, který má spustit." -msgid "Failed to open ~/.ssh/known_hosts" -msgstr "Selhalo otevøení ~/.ssh/known_hosts" +# +msgid "Run a terminal emulator." +msgstr "Spustí emulátor terminálu." -msgid "Failed to open ~/.ssh/config" -msgstr "Selhalo otevøení ~/.ssh/config" +msgid "Show the Ion manual page." +msgstr "Zobrazí manuálovou stránku Ionu." -msgid "SSH to:" -msgstr "SSH na:" +msgid "Query for manual page to be displayed." +msgstr "Zeptá se na manuálovou stánku, kterou má zobrazit." -msgid "Manual page (%s):" -msgstr "Manuálová stránka (%s):" +msgid "Toggle tag of current object." +msgstr "Pøepne oznaèení aktuálního objektu." -msgid "Lua code:" -msgstr "Lua kód:" +msgid "Detach (float) or reattach an object to its previous location." +msgstr "Odpojí nebo znovu pøipojí objekt z/do pùvodního umístìní." -msgid "Unknown menu %s." -msgstr "Neznámé menu %s." +msgid "Close current object." +msgstr "Zavøe aktuální objekt." -msgid "Missing submenu " -msgstr "Chybìjící podmenu" +msgid "Toggle client window group full-screen mode" +msgstr "Pøepne skupinu klientského okna do celoobrazovkového re¾imu." -msgid "%s:" -msgstr "%s:" +# +msgid "" +"Send next key press to the client window. Some programs may not allow this " +"by default." +msgstr "" +"Po¹le následující stisk klávesy klientskému oknu. Nìkteré programy to " +"implicitnì nepovolují." -msgid "No entry '%s'" -msgstr "®ádný záznam '%s'" +# +msgid "Kill client owning the client window." +msgstr "Ukonèí klienta vlastnícího klientské okno." +# msgid "" -"\n" -"%sClass: %s\n" -"%sRole: %s\n" -"%sInstance: %s\n" -"%sXID: 0x%x" +"Nudge the client window. This might help with some programs' resizing " +"problems." msgstr "" -"\n" -"%sTøída: %s\n" -"%sRole: %s\n" -"%sInstance: %s\n" -"%sXID: 0x%x" +"Postrèí klientské okno. To mù¾e pomoci nìkterým programùm, které mají " +"problémy se zmìnou velikosti." -msgid "Toggle scratchpad." -msgstr "Zapne poznámkový blok." +msgid "Raise focused object, if possible." +msgstr "Pokud je to mo¾né, pøesune zamìøený objekt nahoru." -msgid "Programs" -msgstr "Programy" +msgid "Backward-circulate focus." +msgstr "Cykluje vzad." -msgid "Lock screen" -msgstr "Zamknout obrazovku" +msgid "Forward-circulate focus." +msgstr "Cykluje vpøed." -msgid "Help" -msgstr "Nápovìda" +msgid "Display the window list menu." +msgstr "Zobrazí menu se seznamem oken." + +msgid "Display the main menu." +msgstr "Zobrazí hlavní menu." # -msgid "Workspaces" -msgstr "Pracovní plochy" +# +msgid "Create a new workspace of chosen default type." +msgstr "Vytvoøí novou pracovní plochu vybraného typu." -msgid "New" -msgstr "Nový" +# +msgid "Go to next/previous screen on multihead setup." +msgstr "Ve víceobrazovkovém nastavení pøejde na dal¹í/pøedchozí obrazovku." -msgid "Styles" -msgstr "Styly" +# +msgid "Go to n:th screen on multihead setup." +msgstr "U víceobrazovkového nastavení pøejde na n-tou obrazovku." -msgid "Session" -msgstr "Sezení" +# +msgid "Clear all tags." +msgstr "Vyèistí v¹echny znaèky." -msgid "Close" -msgstr "Zavøít" +msgid "Go to first region demanding attention or previously active one." +msgstr "" +"Pøejde do prvního regionu vy¾adujícího pozornost nebo do pøedchozího " +"aktivního." -msgid "List" -msgstr "Seznam" +# +msgid "Switch to next/previous object within current screen." +msgstr "Pøepne se na dal¹í/pøedchozí objekt v aktuální obrazovce." # msgid "" @@ -1257,301 +1225,317 @@ msgstr "" "Pøepne se na n-tý objekt (pracovní plochu, celoobrazovkové okno) na aktuální " "obrazovce." -# -msgid "Switch to next/previous object within current screen." -msgstr "Pøepne se na dal¹í/pøedchozí objekt v aktuální obrazovce." +msgid "List" +msgstr "Seznam" -msgid "Go to first region demanding attention or previously active one." -msgstr "" -"Pøejde do prvního regionu vy¾adujícího pozornost nebo do pøedchozího " -"aktivního." +msgid "New" +msgstr "Nový" -# -msgid "Clear all tags." -msgstr "Vyèistí v¹echny znaèky." +msgid "Dillo" +msgstr "Dillo" -# -msgid "Go to n:th screen on multihead setup." -msgstr "U víceobrazovkového nastavení pøejde na n-tou obrazovku." +msgid "Konqueror" +msgstr "Konqueror" -# -msgid "Go to next/previous screen on multihead setup." -msgstr "Ve víceobrazovkovém nastavení pøejde na dal¹í/pøedchozí obrazovku." +msgid "Links" +msgstr "Links" -# -# -msgid "Create a new workspace of chosen default type." -msgstr "Vytvoøí novou pracovní plochu vybraného typu." +msgid "Opera" +msgstr "Opera" -msgid "Display the main menu." -msgstr "Zobrazí hlavní menu." +msgid "Rxvt" +msgstr "Rxvt" -msgid "Display the window list menu." -msgstr "Zobrazí menu se seznamem oken." +msgid "W3M" +msgstr "W3M" -msgid "Forward-circulate focus." -msgstr "Cykluje vpøed." +msgid "XTerm" +msgstr "XTerm" -msgid "Backward-circulate focus." -msgstr "Cykluje vzad." +# +msgid "Workspaces" +msgstr "Pracovní plochy" -msgid "Raise focused object, if possible." -msgstr "Pokud je to mo¾né, pøesune zamìøený objekt nahoru." +msgid "Programs" +msgstr "Programy" -# -msgid "" -"Nudge the client window. This might help with some programs' resizing " -"problems." -msgstr "" -"Postrèí klientské okno. To mù¾e pomoci nìkterým programùm, které mají " -"problémy se zmìnou velikosti." +msgid "Show the PWM manual page." +msgstr "Zobrazí manuálovou stránku PWM." -# -msgid "Kill client owning the client window." -msgstr "Ukonèí klienta vlastnícího klientské okno." +msgid "Toggle scratchpad." +msgstr "Zapne poznámkový blok." -# msgid "" -"Send next key press to the client window. Some programs may not allow this " -"by default." +"\n" +"%sClass: %s\n" +"%sRole: %s\n" +"%sInstance: %s\n" +"%sXID: 0x%x" msgstr "" -"Po¹le následující stisk klávesy klientskému oknu. Nìkteré programy to " -"implicitnì nepovolují." +"\n" +"%sTøída: %s\n" +"%sRole: %s\n" +"%sInstance: %s\n" +"%sXID: 0x%x" -msgid "Toggle client window group full-screen mode" -msgstr "Pøepne skupinu klientského okna do celoobrazovkového re¾imu." +msgid "No entry '%s'" +msgstr "®ádný záznam '%s'" -msgid "Close current object." -msgstr "Zavøe aktuální objekt." +msgid "%s:" +msgstr "%s:" -msgid "Query for manual page to be displayed." -msgstr "Zeptá se na manuálovou stánku, kterou má zobrazit." +msgid "Missing submenu " +msgstr "Chybìjící podmenu" -msgid "Show the Ion manual page." -msgstr "Zobrazí manuálovou stránku Ionu." +msgid "Unknown menu %s." +msgstr "Neznámé menu %s." -# -msgid "Run a terminal emulator." -msgstr "Spustí emulátor terminálu." +msgid "Lua code:" +msgstr "Lua kód:" -msgid "Query for command line to execute." -msgstr "Zeptá se na pøíkaz, který má spustit." +msgid "Manual page (%s):" +msgstr "Manuálová stránka (%s):" -msgid "Query for Lua code to execute." -msgstr "Zeptá se na lua kód, který má vykonat." +msgid "SSH to:" +msgstr "SSH na:" -msgid "Query for host to connect to with SSH." -msgstr "Zeptá se na jméno poèítaèe, ke kterému se má pøipojit pomocí SSH." +msgid "Failed to open ~/.ssh/config" +msgstr "Selhalo otevøení ~/.ssh/config" -msgid "Query for file to edit." -msgstr "Zeptá se na soubor, který chcete upravit." +msgid "Failed to open ~/.ssh/known_hosts" +msgstr "Selhalo otevøení ~/.ssh/known_hosts" -msgid "Query for file to view." -msgstr "Zeptá se na soubor, který chcete zobrazit." +msgid "Run:" +msgstr "Spustit:" -msgid "Query for workspace to go to or create a new one." -msgstr "Zeptá se na pracovní plochu, na kterou má pøejít, nebo ji vytvoøit." +msgid "View file:" +msgstr "Prohlédnout soubor:" -# -msgid "Query for a client window to go to." -msgstr "Dotá¾e se na klientské okno, do nìho¾ má pøejít." +msgid "Edit file:" +msgstr "Upravit soubor:" -# -msgid "Query for a client window to attach." -msgstr "Dotá¾e se na klientské okno, které má pøipojit." +msgid "Workspace name:" +msgstr "Název pracovní plochy:" -msgid "Display context menu." -msgstr "Zobrazí kontextové menu." +msgid "Frame name:" +msgstr "Název rámu:" -msgid "Maximize the frame horizontally/vertically." -msgstr "Maximalizuje rám horizontálnì/vertikálnì." +msgid "Restart Ion (y/n)?" +msgstr "Restartovat Ion (y/n)?" -msgid "Begin move/resize mode." -msgstr "Zahájí re¾im pøesunu/zmìny velikosti." +msgid "Exit Ion/Shutdown session (y/n)?" +msgstr "Ukonèit Ion/ukonèit sezení (y/n)?" -msgid "Switch the frame to display the object indicated by the tab." -msgstr "Pøepne rám, aby zobrazoval objekt urèený zálo¾kou." +msgid "Go to or create workspace:" +msgstr "Vytvoøit nebo pøejít na pracovní plochu:" -msgid "Resize the frame." -msgstr "Zmìní velikost rámu." +msgid "Attach window:" +msgstr "Pøipojit okno:" -msgid "Move the frame." -msgstr "Pøesune rám." +msgid "Go to window:" +msgstr "Jít do okna:" -msgid "Move objects between frames by dragging and dropping the tab." -msgstr "Pøesune objekty mezi rámy pomocí ta¾ení za zálo¾ku." +msgid "New workspace layout (default):" +msgstr "Rozlo¾ení nové pracovní plochy (default):" + +msgid "Unknown error" +msgstr "Neznámá chyba" + +msgid "Unknown layout" +msgstr "Neznámé rozlo¾ení." + +msgid "Cannot attach: different root windows." +msgstr "Nemohu pøipojit: rùzná koøenová okna." -msgid "Tag current object within the frame." -msgstr "Oznaèí aktuální objekt v rámu." +msgid "Could not find client window %s." +msgstr "Nemohu najít klientské okno %s." + +msgid "Too much result data" +msgstr "Pøíli¹ mnoho výsledkù" -msgid "Switch to n:th object within the frame." -msgstr "Pøepne se do n-tého objektu v rámu." +msgid "Could not find %s" +msgstr "Nemohu najít %s" -msgid "Switch to next/previous object within the frame." -msgstr "Pøepne se na dal¹í/pøedchozí objekt v rámu." +msgid "Not a directory." +msgstr "Není adresáøem." -msgid "Move current object within the frame left/right." -msgstr "Pøesune objekt v rámu vlevo/vpravo." +msgid "Invalid command" +msgstr "Neplatný pøíkaz" -msgid "Attach tagged objects to this frame." -msgstr "Pøipojí oznaèené objekty k tomuto rámu." +msgid "Error in command string: " +msgstr "Chyba v pøíkazu: " -msgid "Toggle shade mode" -msgstr "Pøepne stínový re¾im" +msgid "Error compiling guard: %s" +msgstr "Chyba pøi sestavení strá¾ce: %s" -# -msgid "Raise the frame." -msgstr "Pøesune rám do popøedí." +msgid "Invalid guard %s." +msgstr "Neplatná ochrana %s." -msgid "Lower the frame." -msgstr "Pøesune rám do pozadí" +msgid "Main menu:" +msgstr "Hlavní menu:" -msgid "Cancel the resize mode." -msgstr "Zru¹í re¾im zmìny velikosti." +msgid "Context menu:" +msgstr "Kontextové menu:" -msgid "End the resize mode." -msgstr "Ukonèí re¾im zmìny velikosti." +msgid "Floating frame" +msgstr "Plovoucí rám" -# -msgid "Grow in specified direction." -msgstr "Roste v zadaném smìru." +msgid "Tiled frame" +msgstr "Dla¾dicový rám" -msgid "Shrink in specified direction." -msgstr "Zmen¹uje v zadaném smìru." +msgid "Tiling" +msgstr "Dla¾dice" # -msgid "Move in specified direction." -msgstr "Posune se v zadaném smìru." +msgid "Workspace" +msgstr "Pracovní plocha" -msgid "About Ion" -msgstr "O Ionu" +msgid "Screen" +msgstr "Obrazovka" -msgid "XTerm" -msgstr "XTerm" +msgid "Frame" +msgstr "Rám" -msgid "W3M" -msgstr "W3M" +msgid "Recursive table - unable to deepcopy" +msgstr "Rekurzivní tabulka - nemohu provést hlubokou kopii" -msgid "Rxvt" -msgstr "Rxvt" +msgid "" +"Making the following minimal emergency mappings:\n" +" F2 -> xterm\n" +" F11 -> restart\n" +" F12 -> exit\n" +" Mod1+C -> close\n" +" Mod1+K P/N -> WFrame.switch_next/switch_prev\n" +msgstr "" +"Vytváøím nouzové pøiøazení kláves:\n" +" F2 -> xterm\n" +" F11 -> restart\n" +" F12 -> exit\n" +" Mod1+C -> close\n" +" Mod1+K P/N -> WFrame.switch_next/switch_prev\n" -msgid "Opera" -msgstr "Opera" +msgid "Unable to append to non-table menu" +msgstr "Nelze pøidat do netabulkového menu" -msgid "Links" -msgstr "Links" +msgid "Cannot save selection." +msgstr "Nemohu ulo¾it výbìr." -msgid "Konqueror" -msgstr "Konqueror" +msgid "Save look selection in %s?" +msgstr "Ulo¾it nastavení vzhledu do %s?" -msgid "Dillo" -msgstr "Dillo" +msgid "ion-statusd quit." +msgstr "ion-statusd konèí." -# -msgid "Run..." -msgstr "Spustit..." +msgid "Errors starting ion-statusd:\n" +msgstr "Chyba pøi startu ion-statusd:\n" -msgid "Save" -msgstr "Ulo¾it" +msgid "Failed to start ion-statusd." +msgstr "Selhalo spu¹tìní ion-statusd." -msgid "Restart" -msgstr "Restartovat" +msgid "Screen not found." +msgstr "Obrazovka nebyla nalezna." -msgid "Restart TWM" -msgstr "Restartovat TWM" +msgid "Screen already has an stdisp. Refusing to create a statusbar." +msgstr "Obrazovka ji¾ obsahuje stdisp. Odmítám vytvoøit stavový øádek." -msgid "Exit" -msgstr "Ukonèit" +msgid "Failed to create statusbar." +msgstr "Selhalo vytvoøení stavového øádku." -msgid "Kill" -msgstr "Ukonèit" +msgid "Split current frame vertically." +msgstr "Rozpùlí rám vertikálnì." -msgid "Toggle tag" -msgstr "(Od)znaèit" +msgid "Go to frame above/below/right/left of current frame." +msgstr "Pøejde do rámu nad/pod/vpravo/vlevo od aktuálního rámu." -msgid "Attach tagged" -msgstr "Pøipojit oznaèené" +msgid "Split current frame horizontally." +msgstr "Rozpùlí rám horizontálnì." -msgid "Clear tags" -msgstr "Vyèistit znaèky" +msgid "Destroy current frame." +msgstr "Znièí aktuální rám." -msgid "Window info" -msgstr "Informace o oknì" +msgid "Tile frame, if no tiling exists on the workspace" +msgstr "" +"Zmìní rám na dla¾dice (pokud zatím dla¾dice na pracovní plo¹e neexistují)." -# -msgid "New workspace" -msgstr "Nová pracovní plocha" +msgid "Destroy frame" +msgstr "Znièit rám" -msgid "New empty workspace" -msgstr "Nová prázdná pracovní plocha" +msgid "Split vertically" +msgstr "Rozpùlit vertikálnì" -# -msgid "Close workspace" -msgstr "Zavøít pracovní plochu" +msgid "Split horizontally" +msgstr "Rozpùlit horizontálnì" -msgid "Move one character forward/backward." -msgstr "Posune se o znak vpøed/vzad." +msgid "Flip" +msgstr "Obrátit" -msgid "Go to end/beginning." -msgstr "Skoèí na konec/zaèátek." +msgid "Transpose" +msgstr "Transponovat" -msgid "Skip one word forward/backward." -msgstr "Pøeskoèí slovo dopøedu/dozadu." +msgid "Untile" +msgstr "Zru¹it dla¾dice" -msgid "Delete next character." -msgstr "Sma¾e následující znak." +msgid "Float split" +msgstr "Plovoucí okraj" -msgid "Delete previous character." -msgstr "Sma¾e pøedchozí znak." +msgid "At left" +msgstr "Vlevo" -msgid "Delete one word forward/backward." -msgstr "Sma¾e slovo pøed/za kurzorem." +msgid "At right" +msgstr "Vpravo" -msgid "Delete to end of line." -msgstr "Sma¾e text do konce øádky." +msgid "Above" +msgstr "Nahoøe" -msgid "Delete the whole line." -msgstr "Sma¾e celý øádek." +msgid "Below" +msgstr "Dole" -msgid "Transpose characters." -msgstr "Transponuje znaky." +msgid "At root" +msgstr "Na koøenu" -msgid "Select next/previous (matching) history entry." -msgstr "Vybere dal¹í/pøedchozí (odpovídající) polo¾ku historie." +msgid "New tiling" +msgstr "Vytvoøit dla¾dice" -msgid "Paste from the clipboard." -msgstr "Vlo¾í ze schránky." +msgid "Close the menu." +msgstr "Zavøe menu." # -msgid "Set mark/begin selection." -msgstr "Nastaví znaèku/zaèátek výbìru." - # -msgid "Cut selection." -msgstr "Vyjme výbìr." +msgid "Activate current menu entry." +msgstr "Aktivuje vybranou polo¾ku v menu." -# -msgid "Copy selection." -msgstr "Zkopíruje výbìr." +msgid "Select next/previous menu entry." +msgstr "V menu vybere dal¹í/pøedchozí polo¾ku." -# -msgid "Clear mark/cancel selection." -msgstr "Sma¾e znaèku/zru¹í výbìr." +msgid "Clear the menu's typeahead find buffer." +msgstr "Vyma¾e buffer pro dopøedné hledání v menu." -msgid "Try to complete the entered text or cycle through completions." -msgstr "Zkusí doplnit zadaný text nebo bude cyklovat mezi mo¾nostmi." +msgid "Toggle floating dock." +msgstr "Zapne plovoucí dok." -msgid "Complete from history" -msgstr "Doplní z historie." +msgid "Pos-TL" +msgstr "Pozice LH" -msgid "Close the query and execute bound action." -msgstr "Zavøe dotaz a spustí svázanou akci." +msgid "Pos-TR" +msgstr "Pozice PH" -msgid "Close the query/message box, not executing bound actions." -msgstr "Zavøe okno s dotazem/zprávou, ani¾ by se spustily svázané akce.." +msgid "Pos-BL" +msgstr "Pozice LD" -msgid "Scroll the message or completions up/down." -msgstr "Roluje zprávu nebo seznam dokonèení nahoru/dolù." +msgid "Pos-BR" +msgstr "Pozice PD" + +msgid "Grow-L" +msgstr "Rùst vlevo" + +msgid "Grow-R" +msgstr "Rùst vpravo" + +msgid "Grow-U" +msgstr "Rùst nahoru" + +msgid "Grow-D" +msgstr "Rùst dolù" msgid "press" msgstr "stisk" @@ -1571,6 +1555,72 @@ msgstr "%s %s" msgid "%s %s at %s" msgstr "%s %s na %s" +#~ msgid "Tag current object within the frame." +#~ msgstr "Oznaèí aktuální objekt v rámu." + +#~ msgid "Xinerama sanity check failed; overlapping screens detected." +#~ msgstr "Kontrola Xineramy selhala: byly nalezeny pøekrývající se obrazovky." + +#~ msgid "Xinerama sanity check failed; zero size detected." +#~ msgstr "Kontrola Xineramy selhala: byla nalezena nulová velikost." + +#~ msgid "" +#~ "Don't know how to get Xinerama information for multiple X root windows." +#~ msgstr "Nevím, jak zpracovat informace z Xineramy pro více koøenových oken." + +#~ msgid "Error retrieving Xinerama information." +#~ msgstr "Chyba pøi získávání informaci z Xineramy." + +#~ msgid "Unable to setup Xinerama screen %d." +#~ msgstr "Nemohu nastavit obrazovku Xineramy %d." + +#~ msgid "Unable to setup X screen %d." +#~ msgstr "Nemohu nastavit X obrazovku %d." + +#~ msgid "Refusing to destroy - not empty." +#~ msgstr "Odmítám zru¹it - není prázdné." + +#~ msgid "Workspace not empty - refusing to destroy." +#~ msgstr "Pracovní plocha není prázdná - odmítám zru¹it." + +#~ msgid "Nil frame." +#~ msgstr "Prázdný rám." + +#~ msgid "The frame is not managed by the workspace." +#~ msgstr "Rám není spravován pracovní plochou." + +#~ msgid "Already detached" +#~ msgstr "Ji¾ je odpojen" + +#~ msgid "ion-statusd launch timeout." +#~ msgstr "Èas spou¹tìní ion-statusd vypr¹el." + +#~ msgid "Use Xinerama screen information (default: 1/yes)" +#~ msgstr "Pou¾ít Xineramu (implicitnì: 1/ano)" + +#~ msgid "Ignored: not compiled with Xinerama support" +#~ msgstr "Ignorováno: program je sestaven bez podpory Xineramy" + +#~ msgid "Invalid parameter to -xinerama." +#~ msgstr "Neplatný parametr pro -xinerama." + +#~ msgid "Use Xinerama screen information (default: 0/no)" +#~ msgstr "Pou¾ít Xineramu (implicitnì: 0/ne) " + +#~ msgid "Detach window from tiled frame" +#~ msgstr "Odpojí okno od dla¾dicového rámu" + +# +#~ msgid "New workspace" +#~ msgstr "Nová pracovní plocha" + +#~ msgid "New empty workspace" +#~ msgstr "Nová prázdná pracovní plocha" + +# +#~ msgid "Close workspace" +#~ msgstr "Zavøít pracovní plochu" + #~ msgid "Unable to re-initialise workspace. Destroying." #~ msgstr "Nemohu znovu inicializovat pracovní plochu. Nièím." diff --git a/po/de.po b/po/de.po deleted file mode 100644 index a4f05ef..0000000 --- a/po/de.po +++ /dev/null @@ -1,1667 +0,0 @@ -# -# German language translations for Ion3. -# -# Copyright (c) Schott Robert 2005. -# -# This file is distributed under the same license as the Ion3 package. -# - -msgid "" -msgstr "" -"Project-Id-Version: Ion3\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2004-10-11 18:33+0300\n" -"PO-Revision-Date: 2005-02-13 23:50+0300\n" -"Last-Translator: Schott Robert \n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../ioncore/conf-bindings.c:96 -msgid "Insane key combination." -msgstr "Unsinnige Tastenkombination." - -#: ../ioncore/conf-bindings.c:100 -msgid "Could not convert keysym to keycode." -msgstr "Konnte 'keysym' nicht in 'keycode' umwandeln." - -#: ../ioncore/conf-bindings.c:111 -#, c-format -msgid "Unknown button \"%s\"." -msgstr "Unbekannte Taste \"%s\"." - -#: ../ioncore/conf-bindings.c:116 -msgid "Insane button combination." -msgstr "Unsinnige Tastenkombination." - -#: ../ioncore/conf-bindings.c:123 ../ioncore/conf-bindings.c:130 -msgid "Insane modifier combination." -msgstr "Unsinnige Modifikationskombination." - -#: ../ioncore/conf-bindings.c:168 -#, c-format -msgid "Can not wait on modifiers when no modifiers set in \"%s\"." -msgstr "" -"Kann nicht auf Modifikator warten, wenn kein Modifikator in \"%s\" gesetzt ist." - -#: ../ioncore/conf-bindings.c:186 -#, c-format -msgid "Unable to add binding %s." -msgstr "Die Bindung %s konnte nicht eingestellt werden." - -#: ../ioncore/conf-bindings.c:191 -#, c-format -msgid "Unable to remove binding %s." -msgstr "Die Bindung %s konnte nicht entfernt werden." - -#: ../ioncore/conf-bindings.c:230 -#, c-format -msgid "Unable to add submap for binding %s." -msgstr "Die 'submap' für die Bindung %s konnte nicht eingestellt werden." - -# -#: ../ioncore/conf-bindings.c:260 -msgid "Binding type not set." -msgstr "Bindungsart nicht gesetzt." - -#: ../ioncore/conf-bindings.c:270 -#, c-format -msgid "Unknown binding type \"%s\"." -msgstr "Unbekannte Bindungsart \"%s\"." - -#: ../ioncore/conf-bindings.c:291 -#, c-format -msgid "Unknown area \"%s\" for binding %s." -msgstr "Unbekannter Bereich \"%s.\" für die Bindung %s." - -#: ../ioncore/conf-bindings.c:332 -#, c-format -msgid "Unable to get bindmap entry %d." -msgstr "Der 'bindmap' Eintrag %d wurde nicht gefunden." - -#: ../ioncore/conf-bindings.c:374 -msgid "Unable to convert keysym to string." -msgstr "Konnte keysym nicht in Zeichenkette umwandeln." - -#: ../ioncore/conf-bindings.c:388 -msgid "Unable to convert button to string." -msgstr "Konnte Taste nicht in Zeichenkette umwandeln." - -# -#: ../ioncore/event.c:78 -msgid "Time request from X server failed." -msgstr "Zeitanfrage des X Servers fehlgeschlagen." - -# -#: ../ioncore/exec.c:101 -msgid "Could not find a root window." -msgstr "Konnte kein Wurzelfenster finden." - -#: ../ioncore/exec.c:134 -msgid "reading a pipe" -msgstr "Weiterleitung wird ausgelesen" - -# -#: ../ioncore/exec.c:296 -msgid "Not saving state: running under session manager." -msgstr "Nicht gespeicherter Zustand: läuft im Sitzungsmanager." - -#: ../ioncore/strings.c:107 ../ioncore/strings.c:143 -msgid "Invalid multibyte string." -msgstr "Unzulässige multibyte Zeichenkette." - -#: ../ioncore/strings.c:234 -#, c-format -msgid "Error compiling regular expression: %s" -msgstr "Fehler beim erstellen der regulären Ersetzung: %s" - -#: ../ioncore/modules.c:158 -msgid "Invalid module name." -msgstr "Unzulässiger Modulname." - -# -#: ../ioncore/modules.c:170 -msgid "The module is already loaded." -msgstr "Das Modul wurde bereits geladen." - -#: ../ioncore/modules.c:185 -msgid "" -"Module version information not found or version mismatch. Refusing to use." -msgstr "" -"Information zur Modulversion wurde nicht gefunden oder die Versionen stimmen nicht überein." -"Benutzung wurde abgelehnt." - -#: ../ioncore/modules.c:196 -#, c-format -msgid "Unable to initialise module %s." -msgstr "Module %s konnte nicht initialisiert werden." - -#: ../ioncore/modules.c:220 ../../libextl/readconfig.c:368 -#, c-format -msgid "Unable to find '%s' on search path." -msgstr "Im Suchpfad konnte '%s' nicht gefunden werden." - -#: ../ioncore/modules.c:291 -msgid "Unknown module." -msgstr "Unbekanntes Modul." - -#: ../ioncore/modules.c:299 -msgid "Unable to initialise module." -msgstr "Module konnte nicht initialisiert werden." - -#: ../ioncore/modules.c:344 -msgid "No module to load given." -msgstr "Kein Modul zum laden vorhanden." - -#: ../ioncore/screen.c:301 -msgid "act: " -msgstr "act: " - -#: ../ioncore/screen.c:490 -msgid "Invalid offset." -msgstr "Ungültiges offset." - -#: ../ioncore/screen.c:535 -msgid "Could not find a complete workspace class. Please load some modules." -msgstr "" -"Konnte keine komplette Workspace-Klasse finden." -"Laden Sie bitte einige Module." - -#: ../ioncore/screen.c:545 -#, c-format -msgid "Unable to create a workspace on screen %d." -msgstr "Konnte keinen Arbeitsbereich auf dem Schirm %d erzeugen." - -#: ../ioncore/signal.c:291 -#, c-format -msgid "Caught fatal signal %d. Dying without deinit." -msgstr "" -"Abbruch Signal %d aufgefangen. Beendet ohne deinit." - -#: ../ioncore/signal.c:300 -#, c-format -msgid "Caught signal %d. Dying." -msgstr "Signal %d wurde aufgefangen. Beendet." - -#: ../ioncore/sizehint.c:150 -msgid "Invalid client-supplied width/height increment." -msgstr "Client lieferte ungültige Breiten/Höhen - Schrittweite." - -#: ../ioncore/sizehint.c:158 -msgid "Invalid client-supplied aspect-ratio." -msgstr "Client lieferte ungültiges Seitenverhältnis." - -#: ../ioncore/ioncore.c:66 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU Lesser General Public\n" -"License as published by the Free Software Foundation; either\n" -"version 2.1 of the License, or (at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" -"Lesser General Public License for more details.\n" -msgstr "" -"Dieses Programm ist freie Software; Sie können es weiter verteilen und/oder\n" -"modifizieren solange es den Bedingungen der \"GNU Lesser General Public\"\n" -"Lizenz entspricht. Veröffentlicht durch die \"Free Software Foundation\"; jede\n" -"Lizenz der Version 2.1, oder (nach eigener Wahl) jede spätere Version.\n" -"\n" -"Dieses Programm wird mit der Hoffnung das es nützlich ist verteilt, \n" -"aber OHNE JEGLICHE GARANTIE; ohne jede Garantie von MARKTFÄHIGKEIT oder\n" -"EIGNUNG ZU EINEM BESTIMMTEN ZWECK. Siehe die \"GNU Lesser General Public\"\n" -"Lizenz für detailliertere Angaben.\n" - -#: ../ioncore/ioncore.c:385 -#, c-format -msgid "Could not connect to X display '%s'" -msgstr "Konnte keine Verbindung zur X Anzeige '%s' herstellen." - -#: ../ioncore/ioncore.c:438 -msgid "Could not find a screen to manage." -msgstr "Konnte keinen Bildschirm für diese Aktion finden." - -#: ../ioncore/xic.c:43 -msgid "Failed to open input method." -msgstr "Öffnen der Eingabemethode ist fehlgeschlagen." - -#: ../ioncore/xic.c:48 -msgid "Input method doesn't support any style." -msgstr "Die Eingabemethode unterstützt keine Art von Styles" - -#: ../ioncore/xic.c:63 -msgid "input method doesn't support my preedit type." -msgstr "Die Eingabemethode unterstützt nicht meine Art von 'preedit'." - -#: ../ioncore/xic.c:91 -msgid "Failed to create input context." -msgstr "Erstellen des Eingabezusammenhangs ist fehlgeschlagen. " - -#: ../ioncore/clientwin.c:376 -#, c-format -msgid "The transient_for hint for \"%s\" points to itself." -msgstr "Der 'transient_for' Tip für \"%s\" zeigt auf sich selbst." - -#: ../ioncore/clientwin.c:380 -#, c-format -msgid "" -"Client window \"%s\" has broken transient_for hint. (\"Extended WM hints\" " -"multi-parent brain damage?)" -msgstr "" -"Client Fenster \"%s\" hat einen fehlerhaften 'transient_for'-Tip " -"(\"Erweiterte WM Tips\" *** Gehirnschaden?)" - -#: ../ioncore/clientwin.c:385 -#, c-format -msgid "The transient_for window for \"%s\" is not on the same screen." -msgstr "Das 'transient_for'-Fenster für \"%s\" ist nicht auf dem gleichen Schirm." - -#: ../ioncore/clientwin.c:405 ../ioncore/clientwin.c:492 -#: ../ioncore/clientwin.c:1554 -#, c-format -msgid "Window %#x disappeared." -msgstr "Fenster %#x verschwunden." - -#: ../ioncore/clientwin.c:512 -msgid "Unable to find a matching root window!" -msgstr "Unmöglich ein passendes Wurzelfenster zu finden." - -#: ../ioncore/clientwin.c:547 -#, c-format -msgid "Unable to manage client window %#x." -msgstr "Unmöglich die Client Fenster %#x zu bearbeiten." - -#: ../ioncore/clientwin.c:597 -msgid "Changes is WM_TRANSIENT_FOR property are unsupported." -msgstr "Änderung der 'ist WM_TRANSIENT_FOR' Eigenschaft wird nicht unterstützt." - -# -#: ../ioncore/clientwin.c:874 -msgid "Client does not support the WM_DELETE protocol." -msgstr "Client unterstützt nicht das WM_DELETE Protocol." - -#: ../ioncore/clientwin.c:1103 ../mod_ionws/ionws.c:76 -#: ../mod_floatws/floatws.c:103 -#, c-format -msgid "Error reparenting %s." -msgstr "Fehler wieder herstellen %s." - -#: ../ioncore/clientwin.c:1560 -msgid "Saved client window does not want to be managed." -msgstr "Gespeichertes Client Fenster braucht nicht behandelt werden." - -# -#: ../ioncore/colormap.c:96 -msgid "Unable to store colourmap watch info." -msgstr "Unmöglich die 'colourmap' Überwachungsinformation zu speichern." - -#: ../ioncore/region.c:36 -msgid "Creating region with negative width or height!" -msgstr "Gebiet mit negativer Breite oder Höhe erzeugt!" - -#: ../ioncore/region.c:84 -#, c-format -msgid "Destroying object \"%s\" with client windows as children." -msgstr "Zerstörtes Objekt \"%s\", mit Client Fenstern." - -#: ../ioncore/attach.c:80 -msgid "Unable to reparent." -msgstr "Unmöglich wieder herzustellen." - -#: ../ioncore/attach.c:112 ../ioncore/frame-pointer.c:295 -#, c-format -msgid "Attempt to make region %s manage its ancestor %s." -msgstr "Versuche Bereich %s zu erstellen und seine Vorläufer %s zu behandeln." - -# -#: ../ioncore/defer.c:93 -msgid "Object destroyed while deferred actions are still pending." -msgstr "Objekt zerstört während zurückgestellte Aktionen noch bevorstehen." - -#: ../ioncore/manage.c:90 -msgid "Unable to find a screen for a new client window." -msgstr "Konnte keinen Screen für ein neues Client Fenster finden." - -#: ../ioncore/manage.c:187 -#, c-format -msgid "Unable to rescue \"%s\"." -msgstr "Konnte \"%s\" nicht retten." - -#: ../ioncore/rootwin.c:222 -#, c-format -msgid "Unable to redirect root window events for screen %d." -msgstr "Die Ereignisse für das Wurzelfenster des Screens %d können nicht umgeleitet werden." - -#: ../ioncore/rootwin.c:316 -msgid "Xinerama sanity check failed; overlapping screens detected." -msgstr "Xinerama Zustandsüberprüfung fehlgeschlagen; überlappende Screens gefunden." - -#: ../ioncore/rootwin.c:342 -msgid "Don't know how to get Xinerama information for multiple X root windows." -msgstr "Weiß nicht wie die Xinerama Information für multiple X Wurzelfenster zu bekommen ist." - -#: ../ioncore/rootwin.c:378 -#, c-format -msgid "Unable to setup Xinerama screen %d." -msgstr "Konnte Xinerama Screen %d nicht einrichten." - -#: ../ioncore/rootwin.c:389 -#, c-format -msgid "Unable to setup X screen %d." -msgstr "Konnte X Screen %d nicht einrichten." - -#: ../ioncore/names.c:90 -#, c-format -msgid "Corrupt instance number %s." -msgstr "Unbrauchbare Instanznummer %s." - -#: ../ioncore/saveload.c:55 -#, c-format -msgid "Unknown class \"%s\", cannot create region." -msgstr "Unbekannte Klasse \"%s\", Bereich konnte nicht erzeugt werden." - -#: ../ioncore/saveload.c:124 -#, c-format -msgid "" -"There were errors loading layout. Backing up current layout savefile as\n" -"%s.\n" -"If you are _not_ running under a session manager and wish to restore your\n" -"old layout, copy this backup file over the layout savefile found in the\n" -"same directory while Ion is not running and after having fixed your other\n" -"configuration files that are causing this problem. (Maybe a missing\n" -"module?)\n" -msgstr "" -"Fehler beim Laden des Layouts. Sichere jetzige Layoutsicherungsdatei als\n" -"%s.\n" -"Wenn Sie KEINEN Sitzungsmanager gestartet haben, können sie ihr altes Layout wieder herstellen.\n" -"Kopieren sie die Sicherungsdatei über die aktuelle Layoutsicherungsdatei welche im selben Verzeichnis\n" -"zu finden ist.\n" -"Ion kann neu gestartet werden, nachdem alle anderen Konfigurationsdateien überprüft wurden,\n" -"welche zu dem Problem beführt haben. (Eventuell fehlende Module?)\n" - -#: ../ioncore/saveload.c:167 -msgid "Unable to get file for layout backup." -msgstr "Konnte keine Datei für die Layoutsicherung finden." - -#: ../ioncore/saveload.c:171 -#, c-format -msgid "Backup file %s already exists." -msgstr "Sicherungsdatei %s ist bereits vorhanden." - -#: ../ioncore/saveload.c:177 -msgid "Failed backup." -msgstr "Sicherung fehlgeschlagen." - -# -#: ../ioncore/saveload.c:182 -msgid "Unable to initialise layout on any screen." -msgstr "Konnte für keinen Screen ein Layout initialisieren." - -#: ../ioncore/saveload.c:202 -#, c-format -msgid "Unable to get configuration for screen %d." -msgstr "Konnte für Screen %d keine Konfiguration finden." - -#: ../ioncore/saveload.c:215 -msgid "Unable to save layout." -msgstr "Konnte Layout nicht sichern." - -#: ../ioncore/frame.c:122 -msgid "Frame is not empty." -msgstr "Frame ist nicht leer." - -#: ../ioncore/conf.c:134 -msgid "User directory can not be set." -msgstr "Benutzerverzeichnis konnte nicht gesetzt werden." - -#: ../ioncore/conf.c:197 -msgid "Some bindmaps were empty, loading ioncore-efbb." -msgstr "Einige 'bindmaps' sind leer, lade 'ioncore-efbb'." - -#: ../ioncore/fullscreen.c:100 -msgid "Failed to enter full screen mode." -msgstr "Vollbildmode fehlgeschlagen." - -#: ../ioncore/fullscreen.c:158 -msgid "" -"WClientWin failed to return from full screen mode; remaining manager or " -"parent from previous location refused to manage us." -msgstr "" -"'WClientWin' konnte nicht aus dem Vollbildmode zurückkehren;" -"Der vorhandene Manager oder der Elternteil der vorherigen Position verhinterten das." - -# -#: ../ioncore/mplex.c:1247 -msgid "Invalid position setting." -msgstr "Ungültige Positionseinstellung." - -# -#: ../ioncore/mplex.c:1280 -msgid "Invalid action setting." -msgstr "Ungültige Aktionseinstellung." - -#: ../ioncore/gr.c:119 -#, c-format -msgid "Drawing engine %s is not registered!" -msgstr "Zeichenfunktion %s ist nicht registriert." - -#: ../ioncore/gr.c:138 -#, c-format -msgid "Unable to find brush for style '%s'." -msgstr "Konnte Pinsel für Style '%s' nicht finden." - -#: ../ioncore/gr.c:409 -msgid "No drawing engines loaded, trying \"de\"." -msgstr "Keine Zeichenfunktionen geladen, versuche \"de\"." - -# -#: ../ioncore/hooks.c:219 -msgid "No function given." -msgstr "Keine Funktion gegeben." - -#: ../mod_ionws/ionws.c:311 -msgid "Unable to create a node for status display." -msgstr "Konnte keinen Knoten für die Statusanzeige erstellen." - -#: ../mod_ionws/ionws.c:323 -msgid "Unable to create new split for status display." -msgstr "Konnte keine neu Teilung für die Statusanzeige erzeugen." - -# -#: ../mod_ionws/ionws.c:742 -msgid "Frame not managed by the workspace." -msgstr "Frame wird nicht durch den Arbeitsbereich behandelt." - -# -#: ../mod_ionws/ionws.c:747 -msgid "Invalid direction parameter." -msgstr "Unzulässiger Richtungsparameter." - -# -#: ../mod_ionws/ionws.c:765 -msgid "Unable to split." -msgstr "Unmöglich zu Teilen." - -#: ../mod_ionws/ionws.c:803 -msgid "Nil frame." -msgstr "'NIL'(leeres) Frame" - -#: ../mod_ionws/ionws.c:807 -msgid "The frame is not managed by the workspace." -msgstr "Das Frame wird nicht durch den Arbeitsbereich behandelt." - -#: ../mod_ionws/ionws.c:812 -msgid "Frame may not be destroyed." -msgstr "Frame darf nicht zerstört werden." - -#: ../mod_ionws/ionws.c:817 -msgid "Failed to rescue managed objects." -msgstr "Rettung der 'managed objects' fehlgeschlagen." - -#: ../mod_ionws/ionws.c:1028 -msgid "Nil parameter." -msgstr " 'NIL' (leer) Parameter" - -#: ../mod_ionws/ionws.c:1033 -msgid "Manager doesn't match." -msgstr "Manager passt nicht." - -# -#: ../mod_ionws/ionws.c:1055 -msgid "Could not get split tree." -msgstr "Kann Teilungsbaum nicht finden." - -#: ../mod_ionws/ionws.c:1076 -msgid "Workspace already has a status display node." -msgstr "Arbeitsbereich besitzt schon eine Knoten für die Statusanzeige." - -# -#: ../mod_ionws/ionws.c:1126 -msgid "Missing region parameters." -msgstr "Fehlende Bereichsparameter." - -#: ../mod_ionws/ionws.c:1162 ../mod_ionws/splitfloat.c:783 -msgid "Invalid direction." -msgstr "Ungültige Richtung." - -# -#: ../mod_ionws/ionws.c:1236 -msgid "No split type given." -msgstr "Kein Teilungstyp gegeben." - -#: ../mod_ionws/ionws.c:1249 -msgid "Unknown split type." -msgstr "Unbekannter Teilungstype." - -# -# -#: ../mod_ionws/ionws.c:1289 -msgid "The workspace is empty." -msgstr "Der Arbeitsbereich ist leer." - -#: ../mod_ionws/placement.c:97 ../mod_panews/placement.c:299 -#, c-format -msgid "" -"Ooops... could not find a region to attach client window to on workspace %s." -msgstr "Ooops ... konnte keinen Bereich finden um das Client Fenster an den Arbeitsbereich %s einzufügen." - -#: ../mod_ionws/split.c:906 -msgid "REGION_RQGEOM_TRYONLY unsupported for status display." -msgstr "'REGION_RQGEOM_TRYONLY' wird nicht unterstützt für die Statusanzeige." - -# -#: ../mod_ionws/split.c:979 -msgid "Invalid node." -msgstr "Ungültiger Knoten." - -# -#: ../mod_ionws/split.c:1044 -msgid "Splitting the status display is not allowed." -msgstr "Teilung der Statusanzeige ist nicht erlaubt." - -#: ../mod_ionws/split.c:1072 ../mod_ionws/splitfloat.c:896 -msgid "Unable to split: not enough free space." -msgstr "Teilung nicht möglich: nicht genügend freier Speicher." - -# -#: ../mod_ionws/split.c:1558 -msgid "Unable to move the status display out of way of transpose." -msgstr "Es ist unmöglich die Statusanzeige so zu verschieben." - -#: ../mod_ionws/split.c:1722 -#, c-format -msgid "Unable to get configuration for %s." -msgstr "Konnte keine Konfiguration für \"%s\" finden." - -#: ../mod_ionws/split-stdisp.c:591 ../mod_ionws/split-stdisp.c:616 -msgid "Status display in bad split configuration." -msgstr "Statusanzeige hat eine schlechte Teilungskonfiguration." - -#: ../mod_ionws/split-stdisp.c:657 -msgid "Status display badly located in split tree." -msgstr "Statusanzeige liegt schlecht im Teilungsbaum." - -#: ../mod_floatws/floatws.c:351 ../mod_panews/panews.c:259 -msgid "Workspace may not be destroyed." -msgstr "Arbeitsbereich kann nicht zerstört werden." - -#: ../mod_floatws/floatws.c:358 -msgid "Failed to rescue some client windows!" -msgstr "Rettung einiger Client Fenster fehlgeschlagen." - -#: ../mod_floatws/floatws.c:370 ../mod_panews/panews.c:254 -msgid "Refusing to close non-empty workspace." -msgstr "Schließen von 'nicht-leerem' Arbeitsbereich abgelehnt." - -# -#: ../mod_floatws/floatws.c:462 -msgid "Failure to create a new frame." -msgstr "Konnte kein neues Frame erzeugen." - -# -#: ../mod_floatws/floatws.c:1037 ../mod_floatws/floatws.c:1115 -msgid "Region not managed by the workspace." -msgstr "Bereich wird nicht behandelt durch diesen Arbeitsbereich." - -#: ../mod_floatws/floatws.c:1236 -msgid "No geometry specified." -msgstr "Keine Geometrie angegeben." - -#: ../mod_floatws/placement.c:125 -#, c-format -msgid "Unknown placement method \"%s\"." -msgstr "Unbekannte Platzierungsmethode \"%s\"." - -#: ../mod_panews/panews.c:193 -msgid "Unable to re-initialise workspace. Destroying." -msgstr "Konnte den Arbeitsbereich nicht neu initialisieren. Zerstört." - -#: ../mod_panews/placement.c:104 ../mod_panews/placement.c:108 -#: ../mod_panews/placement.c:175 ../mod_panews/placement.c:180 -#, c-format -msgid "Malfunctioning placement hook; condition #%d." -msgstr "Fehlfunktion der Platzierung; Zustand #%d." - -#: ../mod_query/fwarn.c:34 -msgid "Error:\n" -msgstr "Fehler:\n" - -# -#: ../mod_menu/menu.c:490 -msgid "Empty menu." -msgstr "Leeres Menü." - -# -#: ../mod_sm/sm.c:110 -msgid "Failed to set session directory." -msgstr "Konnte Sitzungsverzeichnis nicht setzen." - -#: ../mod_sm/sm_session.c:85 -msgid "Too many ICE connections." -msgstr "Zu viele 'ICE' Verbindungen." - -#: ../mod_sm/sm_session.c:227 -msgid "Failed to save session state" -msgstr "Konnte Sitzungszustand nicht sichern." - -#: ../mod_sm/sm_session.c:246 -msgid "Failed to request save-yourself-phase2 from session manager." -msgstr "Konnte die 'save-yourself-phase2' Anfrage des Sitzungsmanagers nicht gehandeln." - -# -#: ../mod_sm/sm_session.c:295 -msgid "SESSION_MANAGER environment variable not set." -msgstr "'SESSION_MANAGER' Umgebungsvariable nicht gesetzt." - -#: ../mod_sm/sm_session.c:300 -msgid "Session Manager: IceAddConnectionWatch failed." -msgstr "Sitzungsmanager: 'IceAddConnectionWatch' fehlgeschlagen." - -# -#: ../mod_sm/sm_session.c:325 -msgid "Unable to connect to the session manager." -msgstr "Konnte keine Verbindung zu Sitzungsmanager aufbauen." - -#: ../mod_sp/main.c:137 -#, c-format -msgid "Unable to create scratchpad for screen %d." -msgstr "Konnte 'Scratchpad' (Schmirblock) für Screen %d nicht erstellen." - -#: ../de/init.c:41 -#, c-format -msgid "Border attribute %s sanity check failed." -msgstr "Überprüfung der Rahmeneigenschaft %s fehlgeschlagen." - -#: ../de/init.c:64 -#, c-format -msgid "Unknown border style \"%s\"." -msgstr "Unbekannter Rahmenstyle \"%s\"." - -#: ../de/init.c:96 -#, c-format -msgid "Unable to allocate colour \"%s\"." -msgstr "Konnte Farbe \"%s\" nicht zuweisen." - -#: ../de/init.c:160 -#, c-format -msgid "Corrupt substyle table %d." -msgstr "Zerstörte 'substyle' Tabelle %d" - -#: ../de/init.c:193 -#, c-format -msgid "Unknown text alignment \"%s\"." -msgstr "Unbekannte Textausrichtung \"%s\"." - -#: ../de/init.c:263 -#, c-format -msgid "'based_on' for %s points back to the style itself." -msgstr " 'based_on' für %s zeigt zurück auf den selben Style. " - -#: ../de/init.c:266 -#, c-format -msgid "Unknown base style \"%s\"." -msgstr "Unbekannter Basisstyle \"%s\"." - -#: ../de/font.c:47 -#, c-format -msgid "" -"Fontset for font pattern '%s' implements context dependent drawing, which is " -"unsupported. Expect clutter." -msgstr "" -"Schriftart für Schriftmuster '%s' enthält fallspezifische Abhängigkeiten zum Zeichnen" -"Dies wird nicht unterstützt. Erwartet 'clutter'." - -#: ../de/font.c:58 -#, c-format -msgid "Could not load font \"%s\", trying \"%s\"" -msgstr "Konnte Schrift \"%s\" nicht laden, versuche \"%s\"." - -#: ../de/style.c:315 -#, c-format -msgid "Style %s still in use [%d] but the module is being unloaded!" -msgstr "Style %s wird derzeit benutzt [%d] aber das Modul ist nicht mehr geladen." - -#: ../ion/ion.c:41 ../pwm/pwm.c:41 -msgid "X display to use" -msgstr "Benutze X Anzeige" - -#: ../ion/ion.c:44 ../pwm/pwm.c:44 -msgid "Configuration file" -msgstr "Konfigurationsdatei" - -#: ../ion/ion.c:47 ../pwm/pwm.c:47 -msgid "Add directory to search path" -msgstr "Addiere Verzeichnis zum Suchpfad " - -#: ../ion/ion.c:50 ../pwm/pwm.c:50 -msgid "Manage default root window/non-Xinerama screen only" -msgstr "Behandle nur das vorgegebene Wurzelfenster/nicht-Xinerama." -#: ../ion/ion.c:54 -msgid "Use Xinerama screen information (default: 1/yes)" -msgstr "Benutze Xinerama Screen Information (Vorgabe: 1/ja)" - -#: ../ion/ion.c:57 ../pwm/pwm.c:57 -msgid "Ignored: not compiled with Xinerama support" -msgstr "Ignoriert: keine Xinerama Unterstützung kompiliert." - -#: ../ion/ion.c:61 ../pwm/pwm.c:61 -msgid "Name of session (affects savefiles)" -msgstr "Name der Sitzung (betrifft Sicherungsdateien)" - -#: ../ion/ion.c:64 ../pwm/pwm.c:64 -msgid "Session manager client ID" -msgstr "Sitzungsmanager Client ID" - -#: ../ion/ion.c:67 ../pwm/pwm.c:67 -msgid "Do not create startup error log and display it with xmessage." -msgstr "Erstelle keine Fehlerdateien während des Starts und zeige sie mit 'xmessage'. " - -#: ../ion/ion.c:71 ../pwm/pwm.c:71 -msgid "Show this help" -msgstr "Zeige diese Hilfe" - -#: ../ion/ion.c:74 ../pwm/pwm.c:74 -msgid "Show program version" -msgstr "Zeige Programmversion" - -#: ../ion/ion.c:77 ../pwm/pwm.c:77 -msgid "Show about text" -msgstr "Zeige 'About' Text" - -#: ../ion/ion.c:92 -msgid "Could not get user configuration file directory." -msgstr "Konnte das Verzeichnis mit den Benutzerkonfigurationsdateien nicht finden." - -#: ../ion/ion.c:106 -#, c-format -msgid "%s/welcome.txt" -msgstr "%s/welcome.de.txt" - -#: ../ion/ion.c:139 ../pwm/pwm.c:86 -#, c-format -msgid "" -"Usage: %s [options]\n" -"\n" -msgstr "" -"Anwendung: %s [Optionen]\n" -"\n" - -#: ../ion/ion.c:199 ../pwm/pwm.c:149 -msgid "Invalid parameter to -xinerama." -msgstr "Ungültiger Parameter für '-xinerama'." - -# -#: ../ion/ion.c:218 ../pwm/pwm.c:168 -msgid "Invalid command line." -msgstr "Ungültige Kommandozeile." - -#: ../ion/ion.c:239 -msgid "Ion startup error log:\n" -msgstr "Ion-Start Fehlerausgabe:\n" - -#: ../ion/ion.c:249 ../pwm/pwm.c:199 -msgid "Refusing to start due to encountered errors." -msgstr "Start abgebrochen wegen aufgetretenen Fehlern." - -#: ../pwm/pwm.c:54 -msgid "Use Xinerama screen information (default: 0/no)" -msgstr "Benutze Xinerama Screen Information (Vorgabe: 0/nein)" - -#: ../pwm/pwm.c:189 -msgid "PWM startup error log:\n" -msgstr "PWM-Start Fehlerausgabe:\n" - -#: ../../libextl/readconfig.c:86 -msgid "$HOME not set" -msgstr "Variable '$HOME' nicht gesetzt." - -#: ../../libextl/readconfig.c:113 -msgid "User directory not set. Unable to set session directory." -msgstr "" -"Benutzerverzeichnis nicht gesetzt." -"Konnte Sitzungsverzeichnis nicht setzen." - -#: ../../libextl/readconfig.c:247 -#, c-format -msgid "Falling back to %s." -msgstr "Yritetään tiedostoa %s." - -#: ../../libextl/readconfig.c:441 -#, c-format -msgid "Unable to create session directory \"%s\"." -msgstr "Konntedas Sitzungsverzeichnis \"%s\" nicht erstellen." - -#: ../../libextl/luaextl.c:113 -msgid "Lua stack full." -msgstr "Lua Stapelverarbeitung voll." - -# -#: ../../libextl/luaextl.c:139 -msgid "Unknown Lua error." -msgstr "Unbekannter Lua Fehler." - -#: ../../libextl/luaextl.c:456 -msgid "Stack trace:" -msgstr "Stapelverfolgung:" - -#: ../../libextl/luaextl.c:463 -#, c-format -msgid "" -"\n" -"(Unable to get debug info for level %d)" -msgstr "" -"\n" -"(Konnte Debuginformation für Level %d nicht finden.)" - -#: ../../libextl/luaextl.c:481 -msgid "" -"\n" -" [Skipping unnamed C functions.]" -msgstr "" -"\n" -" [Überspringe unbenannte C Funktionen.]" - -#: ../../libextl/luaextl.c:532 -msgid "Internal error." -msgstr "Interner Fehler." - -#: ../../libextl/luaextl.c:551 -msgid "Unable to initialize Lua." -msgstr "Konnte Lua nicht initialisieren." - -#: ../../libextl/luaextl.c:1277 -msgid "" -"Too many return values. Use a C compiler that has va_copy to support more." -msgstr "" -"Zu viele Rückgabewerte. Benutzen Sie einen C Compiler der 'va_copy' benutzt." - -#: ../../libextl/luaextl.c:1295 -#, c-format -msgid "Invalid return value (expected '%c', got lua type \"%s\")." -msgstr "" -"Ungültiger Rückgabewert (erwartet '%c', bekommener Luatype \"%s\")." - -#: ../../libextl/luaextl.c:1330 ../../libextl/luaextl.c:1594 -msgid "Stack full." -msgstr "Stapel voll." - -#: ../../libextl/luaextl.c:1570 -msgid "L1 call handler upvalues corrupt." -msgstr "L1 Abruf 'upvalues' fehlerhaft." - -#: ../../libextl/luaextl.c:1575 -msgid "Called function has been unregistered." -msgstr "Aufgerufene Funktion wurde noicht registriert." - -#: ../../libextl/luaextl.c:1587 -#, c-format -msgid "Attempt to call an unsafe function \"%s\" in restricted mode." -msgstr "Versuchte eine unsichere Funktion \"%s\" im begrenzten Modus aufzurufen." - -#: ../../libextl/luaextl.c:1603 -#, c-format -msgid "" -"Argument %d to %s is of invalid type. (Argument template is '%s', got lua " -"type %s)." -msgstr "" -"Argument %d von %s hat einen ungültigen Type (Argumentvorgabe ist '%s', " -"von Lua kam '%s'.)" - -#: ../../libextl/luaextl.c:1782 -#, c-format -msgid "" -"Function '%s' has more parameters than the level 1 call handler can handle" -msgstr "" -"Funktion %s hat mehr Parameter als der Level 1 Handler bearbeiten kann " - -# -#: ../../libextl/luaextl.c:2199 -msgid "Maximal serialisation depth reached." -msgstr "Maximum der Serialisierungstiefe erreicht." - -#: ../../libextl/luaextl.c:2220 -#, c-format -msgid "Unable to serialise type %s." -msgstr "Konnte den Type %s nicht serialisieren." - -#: ../../libextl/luaextl.c:2251 -msgid "-- This file has been generated by Ion. Do not edit.\n" -msgstr "-- Dies Datei wurde von Ion erzeugt. Bitte nicht verändern.\n" - -#: ../../libextl/misc.c:17 -#, c-format -msgid "" -"Type checking failed in level 2 call handler for parameter %d (got %s, " -"expected %s)." -msgstr "" -"Type Überprüfung im Level 2 Handler für den Parameter #%d fehlgeschlagen" -"(gekam %s, erwartet %s)." - -#: ../etc/cfg_floatws.lua:34 -msgid "Lower the frame." -msgstr "Frame in den Hintergrund." - -#: ../etc/cfg_bindings.lua:171 -msgid "Display frame context menu." -msgstr "Anzeige Frame Kontexmenü" - -# -#: ../etc/cfg_ionws.lua:44 -msgid "Flip at root" -msgstr "An der Wurzel drehen" - -# -#: ../etc/cfg_bindings.lua:43 -msgid "Go to n:th screen on multihead setup." -msgstr "Gehe zu n'ten Screen bei 'multihead' Aufbau." - -#: ../ext_statusbar/ext_statusbar.lua:308 -msgid "Failed to create statusbar." -msgstr "Konnte Statusbar nicht erzeugen." - -#: ../pwm/cfg_pwm_menus.lua:13 ../etc/cfg_menus.lua:10 -msgid "Help" -msgstr "Hilfe" - -#: ../mod_query/mod_query.lua:566 -msgid "SSH to:" -msgstr "SSH to:" - -#: ../etc/cfg_menus.lua:28 -msgid "Restart" -msgstr "Neustart" - -#: ../mod_menu/mod_menu.lua:231 -msgid "Cannot save selection." -msgstr "Konnte Auswahl nicht speichern." - -#: ../etc/cfg_bindings.lua:206 -msgid "End the resize mode." -msgstr "Beende den Anpassungsmode." - -# -# -#: ../etc/cfg_ionws.lua:48 ../etc/cfg_ionws.lua:58 -msgid "Vertically" -msgstr "Vertikal" - -#: ../ioncore/ioncore-bindings.lua:34 -msgid "Invalid guard %s." -msgstr "Ungültiger Wächter %s." - -#: ../etc/cfg_bindings.lua:109 -msgid "Query for Lua code to execute." -msgstr "Anfrage um Lua Code auszuführen." - -# -#: ../etc/cfg_bindings.lua:47 -msgid "Go to next/previous screen on multihead setup." -msgstr "Gehe zum nächsten/vorherigen Screen bei 'multihead' Aufbau." - -#: ../mod_query/mod_query.lua:344 -msgid "none" -msgstr "keine" - -#: ../etc/cfg_bindings.lua:219 -msgid "Shrink in specified direction." -msgstr "Verkleinern in angegebener Richtung." - -#: ../etc/cfg_bindings.lua:160 -msgid "Maximize the frame horizontally/vertically." -msgstr "Maximiere das Frame horizontal/vertikal." - -#: ../etc/cfg_bindings.lua:156 -msgid "Move current object within the frame left/right." -msgstr "" -"Bewege das aktuelle Objekt im Frame nach links/rechts." - -#: ../etc/cfg_ionws.lua:12 -msgid "Go to frame above/below/right/left of current frame." -msgstr "" -"Gehe zu Frame oben/unten/rechts/links" -"Bezogen auf aktuelles Frame" - -#: ../ext_statusbar/ext_statusbar.lua:289 -msgid "Screen not found." -msgstr "Screen nicht gefunden." - -#: ../etc/cfg_bindings.lua:182 -msgid "Resize the frame." -msgstr "Anpassen des Frame." - -#: ../etc/cfg_bindings.lua:189 -msgid "Move objects between frames by dragging and dropping the tab." -msgstr "Bewege Objekte zwischen Frames durch 'ziehen/fallen lassen' des Reiters." - -#: ../mod_query/mod_query.lua:99 -msgid "Could not find %s" -msgstr "Ei löydettyä %s:ää." - -#: ../ext_statusbar/ext_statusbar.lua:295 -msgid "Screen already has an stdisp. Refusing to create a statusbar." -msgstr "Screen hat bereits ein 'stdisp'. Erstellen der Statusbar wurde abgelehnt." - -#: ../etc/cfg_bindings.lua:112 -msgid "Query for host to connect to with SSH." -msgstr "Anfrage zur Verbindung mit SSH." - -# -#: ../etc/cfg_bindings.lua:229 -msgid "Move in specified direction." -msgstr "Bewegt in festgelegte Richtung" - -# -#: ../ext_statusbar/ext_statusbar.lua:27 -msgid "mail" -msgstr "Post" - -#: ../mod_query/mod_query.lua:807 -msgid "" -"\n" -"Transients:\n" -msgstr "" -"\n" -"Flüchtige:\n" - -#: ../etc/cfg_menu.lua:21 -msgid "Select next/previous menu entry." -msgstr "Wähle nächsten/vorherigen Menüeintrag." - -#: ../ioncore/ioncore-luaext.lua:30 -msgid "Recursive table - unable to deepcopy" -msgstr "Rekursive Tabelle - unmöglich zu kopieren." - -# -#: ../etc/cfg_bindings.lua:209 -msgid "Grow in specified direction." -msgstr "Wachse in angegebener Richtung." - -#: ../ioncore/ioncore-bindings.lua:68 -msgid "Invalid command" -msgstr "Ungültiges Kommando" - -#: ../mod_query/mod_query.lua:189 ../mod_menu/mod_menu.lua:245 -msgid "Too much result data" -msgstr "Zu viele Ergebnisdaten" - -#: ../mod_query/mod_query.lua:344 -msgid "Workspace type (%s):" -msgstr "Type des Arbeitsbereichs (%s):" - -#: ../etc/cfg_bindings.lua:36 -msgid "Go to previous active object." -msgstr "Gehe zu vorherigem aktivem Objekt" - -# -#: ../etc/cfg_query.lua:67 -msgid "Clear mark/cancel selection." -msgstr "Lösche Markierung/Abbruch Auswahl." - -#: ../mod_query/mod_query.lua:772 -msgid "No entry '%s'" -msgstr "Kein Eintrag '%s'." - -# -# -#: ../etc/cfg_bindings.lua:90 -msgid "Toggle fullscreen mode of current client window." -msgstr "Schalte das aktuelle Client Fenster in den Vollbildmode." - -#: ../etc/cfg_bindings.lua:103 -msgid "Query for manual page to be displayed." -msgstr "Anfrage um 'Manual' Seiten anzuzeigen." - -#: ../etc/cfg_bindings.lua:51 -msgid "Show the Ion manual page." -msgstr "Zeige die Ion 'Manual' Seite." - -#: ../etc/cfg_bindings.lua:60 -msgid "Display the main menu." -msgstr "Zeige das Hauptmenü." - -# -#: ../etc/cfg_bindings.lua:54 -msgid "Run a terminal emulator." -msgstr "Starte einen Terminal." - -#: ../etc/cfg_bindings.lua:121 -msgid "Query for workspace to go to or create a new one." -msgstr "Anfrage um auf einen Arbeitsbereich zu wechseln oder einen neuen zu erzeugen." - -#: ../etc/cfg_menus.lua:38 -msgid "Kill" -msgstr "Zerstören" - -#: ../pwm/cfg_pwm_menus.lua:25 ../etc/cfg_menus.lua:37 -msgid "Close" -msgstr "Schließen" - -#: ../mod_query/mod_query.lua:381 -msgid "Go to or create workspace:" -msgstr "Erzeuge einen Arbeitsbereich:" - -#: ../etc/cfg_query.lua:35 -msgid "Delete one word forward/backward." -msgstr "Lösche ein Wort vorwärts/rückwärts." - -#: ../etc/cfg_query.lua:17 -msgid "Go to end/beginning." -msgstr "Gehe zum Ende/Anfang." - -# -#: ../etc/cfg_ionws.lua:43 -msgid "Transpose" -msgstr "Vertauschen" - -#: ../etc/cfg_bindings.lua:152 -msgid "Switch to next/previous object within the frame." -msgstr "Wechsel zum nächsten/vorherigen Objekt im Frame" - -#: ../mod_query/mod_query.lua:402 -msgid "Restart Ion (y/n)?" -msgstr "Neustart Ion (y/n)?" - -#: ../mod_query/mod_query.lua:724 -msgid "Lua code: " -msgstr "Lua Code:" - -#: ../mod_query/mod_query.lua:367 -msgid "Attach window:" -msgstr "Fenster verknüpfen:" - -#: ../etc/cfg_bindings.lua:186 ../etc/cfg_floatws.lua:37 -msgid "Move the frame." -msgstr "Gehe zu Frame." - -#: ../pwm/cfg_pwm_menus.lua:11 ../etc/cfg_menus.lua:8 -msgid "Programs" -msgstr "Programme" - -#: ../etc/cfg_query.lua:23 -msgid "Skip one word forward/backward." -msgstr "Überspringe ein Wort vorwärts/rückwärts." - -#: ../mod_query/mod_query.lua:738 -msgid "Unknown menu %s." -msgstr "Unbekanntes Menü %s." - -#: ../etc/cfg_floatws.lua:12 -msgid "Backwards-circulate focus and raise the newly focused frame." -msgstr "Rückwärts laufender Fokus und zeige fokussiertes Frame." - -#: ../etc/cfg_menus.lua:44 -msgid "Window info" -msgstr "Fensterinformation" - -# -#: ../etc/cfg_query.lua:58 -msgid "Set mark/begin selection." -msgstr "Setze Markierungs/Anfangs - Auswahl." - -#: ../etc/cfg_menus.lua:30 -msgid "Restart TWM" -msgstr "Neustart TWM" - -#: ../etc/cfg_ionws.lua:9 -msgid "Split current frame vertically." -msgstr "Teile aktuelles Frame vertikal." - -# -# -#: ../etc/cfg_bindings.lua:57 -msgid "Create a new workspace of chosen default type." -msgstr "Erzeuge einen neuen Arbeitsbereich mit ausgewähltem Vorgabetype." - -# -#: ../etc/cfg_floatws.lua:29 -msgid "Raise the frame." -msgstr "Bringe Frame nach vorne." - -#: ../etc/cfg_floatws.lua:46 -msgid "(Un)stick" -msgstr "anheften/ablösen" - -#: ../mod_query/mod_query.lua:287 ../mod_query/mod_query.lua:297 -msgid "Could not find client window %s." -msgstr "Konnte Client Fenster %s nicht finden." - -#: ../etc/cfg_query.lua:82 -msgid "Close the query/message box, not executing bound actions." -msgstr "Schließe die Anfrage/Message Box und führe keine daran gebundenen Aktionen aus." - -# -#: ../etc/cfg_bindings.lua:168 -msgid "Query for a client window to attach to active frame." -msgstr "Anfrage für ein Client Fenster um sich mit einem aktivem Frame zu verbinden " - -#: ../mod_query/mod_query.lua:488 -msgid "Run:" -msgstr "Starte:" - -# -#: ../etc/cfg_panews.lua:11 -msgid "Resize the area." -msgstr "Verändere die Ansicht." - -# -#: ../etc/cfg_bindings.lua:95 -msgid "Kill client owning current client window." -msgstr "Beende aktuelles Client Fenster." - -#: ../mod_query/mod_query.lua:595 -msgid "Manual page (%s):" -msgstr "Handbuch für (%s):" - -# -#: ../etc/cfg_bindings.lua:124 -msgid "Query for a client window to go to." -msgstr "Anfrage wohin ein Client Fenster geschickt werden soll." - -# -#: ../etc/cfg_ionws.lua:39 -msgid "Destroy frame" -msgstr "Zerstöre Frame" - -#: ../mod_query/mod_query.lua:339 -msgid "Unknown error" -msgstr "Unbekannter Fehler" - -#: ../etc/cfg_bindings.lua:175 ../etc/cfg_panews.lua:8 -msgid "Begin move/resize mode." -msgstr "Beginne Bewegungs/Veränderungs - Modus." - -#: ../etc/cfg_bindings.lua:136 -msgid "Tag current object within the frame." -msgstr "Markiere aktuelles Objekt im Frame." - -#: ../etc/cfg_bindings.lua:140 -msgid "Switch to n:th object within the frame." -msgstr "Wechsel zum n'ten Objekt im Frame." - -#: ../etc/cfg_bindings.lua:203 -msgid "Cancel the resize mode." -msgstr "Abbruch des Veränderungsmodus." - -#: ../build/mkman.lua:196 -msgid "%s %s" -msgstr "%s %s" - -#: ../etc/cfg_query.lua:27 -msgid "Delete next character." -msgstr "Lösche nächsten Buchstaben." - -#: ../mod_query/mod_query.lua:356 -msgid "Go to window:" -msgstr "Gehe zu Fenster:" - -#: ../build/mkman.lua:182 -msgid "drag" -msgstr "ziehen" - -#: ../build/mkman.lua:181 -msgid "click" -msgstr "anklicken" -#: ../build/mkman.lua:180 -msgid "press" -msgstr "drücken" - -#: ../etc/cfg_menu.lua:27 -msgid "Clear the menu's typeahead find buffer." -msgstr "Lösche den Menüpuffer." - -#: ../etc/cfg_ionws.lua:47 -msgid "Split" -msgstr "Teilung" - -# -#: ../etc/cfg_bindings.lua:98 -msgid "" -"Send next key press to current client window. Some programs may not allow " -"this by default." -msgstr "" -"Sende den nächsten Tastendruck zum aktuellen Client Fenster. " -"Einige Programme unterstützen dies nicht in ihrer Voreinstellung." - -#: ../etc/cfg_menu.lua:11 -msgid "Close the menu." -msgstr "Schließe das Menü." - -#: ../etc/cfg_query.lua:87 -msgid "Scroll the message or completions up/down." -msgstr "Verschiebe die Nachricht oder Vervollständigung nach oben/unten." - -#: ../etc/cfg_query.lua:74 -msgid "Close the query and execute bound action." -msgstr "Schließe die Anfrage und führe die daran gebundene Aktion aus." - -# -#: ../etc/cfg_bindings.lua:31 -msgid "Switch to next/previous object within current screen." -msgstr "Wechsel zum nächsten/vorherigen Objekt im aktuellen Screen." - -#: ../etc/cfg_query.lua:39 -msgid "Delete to end of line." -msgstr "Lösche bis zum ende der Zeile." - -#: ../pwm/cfg_pwm_menus.lua:14 ../etc/cfg_menus.lua:11 -msgid "About Ion" -msgstr "Über Ion" - -#: ../mod_query/mod_query.lua:804 -msgid "" -"Title: %s\n" -"Class: %s\n" -"Role: %s\n" -"Instance: %s\n" -"XID: 0x%x" -msgstr "" -"Titel: %s\n" -"Klasse(class): %s\n" -"Rolle(role): %s\n" -"Instanz(instance): %s\n" -"XID: 0x%x" - -# -#: ../etc/cfg_query.lua:61 -msgid "Cut selection." -msgstr "Ausschneiden." - -#: ../etc/cfg_query.lua:53 -msgid "Paste from the clipboard." -msgstr "Einfügen aus Clipboard." - -# -#: ../etc/cfg_query.lua:45 -msgid "Select next/previous (matching) history entry." -msgstr "Auswahl des nächsten/vorherigen (Treffers) 'History' Eintrags." - -#: ../etc/cfg_menus.lua:43 -msgid "Clear tags" -msgstr "Lösche Markierungen" - -#: ../etc/cfg_query.lua:42 -msgid "Delete the whole line." -msgstr "Lösche die ganze Zeile." - -#: ../etc/cfg_query.lua:71 -msgid "Try to complete the entered text." -msgstr "Versuche den eingegebenen Text zu komplettieren." - -#: ../etc/cfg_query.lua:31 -msgid "Delete previous character." -msgstr "Lösche vorheriges Zeichen." - -#: ../mod_query/mod_query.lua:299 -msgid "Cannot attach: different root windows." -msgstr "Keine Verknüpfung: unterschiedliche Wurzelfenster." - -#: ../build/mkman.lua:183 -msgid "double click" -msgstr "Doppelklick" - -#: ../etc/cfg_query.lua:11 -msgid "Move one character forward/backward." -msgstr "Bewege ein Zeichen vorwärts/rückwärts." - -#: ../etc/cfg_menus.lua:29 -msgid "Restart PWM" -msgstr "Neustart PWM" - -#: ../etc/cfg_bindings.lua:115 -msgid "Query for file to edit." -msgstr "Anfrage um eine Datei zu bearbeiten." - -# -#: ../etc/cfg_bindings.lua:39 -msgid "Clear all tags." -msgstr "Lösche alle Markierungen." - -#: ../etc/cfg_bindings.lua:178 -msgid "Switch the frame to display the object indicated by the tab." -msgstr "Wechsle das Frame um das Objekt anzuzeigen welches durch den Reiter angegeben ist." - -# -# -#: ../etc/cfg_ionws.lua:50 ../etc/cfg_ionws.lua:60 -msgid "Horizontally" -msgstr "Horizontal" - -#: ../pwm/cfg_pwm_menus.lua:16 ../pwm/cfg_pwm_menus.lua:24 -msgid "New" -msgstr "Neu" - -#: ../mod_query/mod_query.lua:410 -msgid "Frame name:" -msgstr "Framename:" - -# -#: ../etc/cfg_bindings.lua:18 -msgid "" -"Switch to n:th object (workspace, full screen client window) within current " -"screen." -msgstr "" -"Wechsle zum n'ten Objekt (Arbeitsbereich, Vollbild Fenster) im aktuellen Arbeitsbereich." - -#: ../etc/cfg_bindings.lua:64 -msgid "Display the window list menu." -msgstr "Zeige das Menü mit der Fensterliste." - -#: ../etc/cfg_floatws.lua:26 -msgid "Toggle shade mode" -msgstr "Wechsle in den Schattenmodus" - -#: ../mod_query/mod_query.lua:393 -msgid "Exit Ion/Shutdown session (y/n)?" -msgstr "Beende Ion/Schließe Sitzung (y/n)?" - -#: ../etc/cfg_floatws.lua:15 -msgid "Raise/lower active frame." -msgstr "vorbringen/zurücklegen des aktiven Frames" - -#: ../mod_menu/mod_menu.lua:235 -msgid "Save look selection in %s?" -msgstr "Sichere Aussehen in %s?" - -#: ../etc/cfg_bindings.lua:82 -msgid "Close current object." -msgstr "Schließe aktuelles Objekt." - -# -#: ../etc/cfg_query.lua:64 -msgid "Copy selection." -msgstr "Kopiere Auswahl." - -#: ../etc/cfg_bindings.lua:164 -msgid "Attach tagged objects to this frame." -msgstr "Verknüpfe markierte Objekte mit diesem Frame." - -#: ../etc/cfg_ionws.lua:57 -msgid "Floating split" -msgstr "Fließende Teilung" - -#: ../mod_query/mod_query.lua:768 -msgid "%s menu:" -msgstr "menu: %s" - -#: ../ext_statusbar/ext_statusbar.lua:318 -msgid "Failed to create a timer for statusbar." -msgstr "Erzeugen des Timers für die Statusbar fehlgeschlagen." - -#: ../etc/cfg_ionws.lua:52 ../etc/cfg_ionws.lua:62 -msgid "Vertically at root" -msgstr "Vertikal an der Wurzel" - -# -# -#: ../etc/cfg_menu.lua:16 -msgid "Activate current menu entry." -msgstr "Aktiviere aktuellen Menüeintrag." - -#: ../ioncore/ioncore-efbb.lua:12 -msgid "" -"Making the following minimal emergency mappings:\n" -" F2 -> xterm\n" -" F11 -> restart\n" -" F12 -> exit\n" -" Mod1+C -> close\n" -" Mod1+K P/N -> WFrame.switch_next/switch_prev\n" -msgstr "" -"Erstelle die folgenden minimalen Rettungseinstellungen:\n" -" F2 -> xterm\n" -" F11 -> Neustart\n" -" F12 -> Beenden\n" -" Mod1+C -> Schließen\n" -" Mod1+K P/N -> nächstes/vorheriges Frame\n" - -# -#: ../etc/cfg_ionws.lua:45 -msgid "Transpose at root" -msgstr "Vertausche an der Wurzel" - -#: ../pwm/cfg_pwm_menus.lua:17 ../etc/cfg_menus.lua:12 -msgid "Styles" -msgstr "Aussehen ändern" - -#: ../etc/cfg_bindings.lua:106 -msgid "Query for command line to execute." -msgstr "Anfrage um Kommandozeile auszuführen." - -#: ../mod_query/mod_query.lua:323 -msgid "Unable to create workspace: no screen." -msgstr "Unmöglich Arbeitsbereich zu erzeugen: kein Screen." - -#: ../ext_statusbar/ext_statusbar.lua:27 -msgid "load" -msgstr "lade" - -# -#: ../etc/cfg_ionws.lua:42 -msgid "Flip" -msgstr "Umdrehen" - -#: ../etc/cfg_ionws.lua:41 -msgid "Flip&transpose" -msgstr "Umdrehen und Vertauschen" - -#: ../pwm/cfg_pwm_menus.lua:12 ../etc/cfg_menus.lua:9 -msgid "Lock screen" -msgstr "Sperre Screen" - -#: ../mod_query/mod_query.lua:449 -msgid "Edit file:" -msgstr "Bearbeite Datei:" - -#: ../etc/cfg_menus.lua:19 -msgid "XTerm" -msgstr "XTerm" - -#: ../build/mkman.lua:198 -msgid "%s %s at %s" -msgstr "%s %s auf %s" - -# -#: ../etc/cfg_bindings.lua:85 -msgid "" -"Nudge current client window. This might help with some programs' resizing " -"problems." -msgstr "" -"Anstupsen des aktuellen Fensters. Dies könnte helfen bei einigen Programmen " -" (xterm) mit Darstellungsproblemen." - -#: ../etc/cfg_ionws.lua:22 -msgid "Destroy current frame." -msgstr "Zerstöre aktuelles Frame." - -#: ../ioncore/ioncore-bindings.lua:53 -msgid "Error in command string: " -msgstr "Fehler in Kommandozeichenkette: " - -#: ../etc/cfg_ionws.lua:19 -msgid "Split current frame horizontally." -msgstr "Teile aktuelles Frame horizontal." - -#: ../etc/cfg_menus.lua:42 -msgid "Attach tagged" -msgstr "Markierte Objekte verknüpfen" - -#: ../etc/cfg_ionws.lua:54 ../etc/cfg_ionws.lua:64 -msgid "Horizontally at root" -msgstr "Horizontal an der Wurzel" - -#: ../etc/cfg_menus.lua:40 -msgid "(Un)tag" -msgstr "Markieren" - -#: ../mod_query/mod_query.lua:459 -msgid "View file:" -msgstr "Zeige Datei:" - -#: ../mod_query/mod_query.lua:421 -msgid "Workspace name:" -msgstr "Name des Arbeitsbereichs:" - -#: ../etc/cfg_menus.lua:31 -msgid "Exit" -msgstr "Beenden" - -#: ../etc/cfg_menus.lua:27 -msgid "Save" -msgstr "Speichern" - -# -#: ../pwm/cfg_pwm_menus.lua:15 -msgid "Workspaces" -msgstr "Arbeitsbereiche" - -#: ../etc/cfg_menus.lua:20 -msgid "Mozilla Firefox" -msgstr "Mozilla Firefox" - -#: ../ioncore/ioncore-bindings.lua:45 -msgid "Error compiling guard: %s" -msgstr "Fehler Erstellungswächter: %s" - -#: ../mod_menu/mod_menu.lua:271 -msgid "Refresh list" -msgstr "Aktualisiere Liste" - -#: ../etc/cfg_floatws.lua:9 -msgid "Circulate focus and raise the newly focused frame." -msgstr "Rückwärts laufender Fokus und zeige fokussiertes Frame." - -# -#: ../etc/cfg_menus.lua:21 -msgid "Run..." -msgstr "Starte..." - -#: ../etc/cfg_bindings.lua:118 -msgid "Query for file to view." -msgstr "Anfrage um Datei anzuzeigen." - -#: ../mod_query/mod_query.lua:511 -msgid "Failed to open ~/.ssh/known_hosts" -msgstr "Konnte ~/.ssh/known_hosts nicht öffnen." - -#: ../pwm/cfg_pwm_menus.lua:18 ../etc/cfg_menus.lua:13 -msgid "Session" -msgstr "Sitzung" - -#: ../pwm/cfg_pwm_menus.lua:27 -msgid "List" -msgstr "Anzeige" - -#~ msgid "Vertically/root" -#~ msgstr "Pystysuunnassa juuressa" - -# -# -#~ msgid "Horizontally/root" -#~ msgstr "Vaakasuunnassa juuressa" - -#~ msgid "Transpose parent" -#~ msgstr "Käännä vanhempi" - -#~ msgid "Flip parent" -#~ msgstr "Peilaa vanhempi" diff --git a/po/fi.po b/po/fi.po index 229dc45..f17a924 100644 --- a/po/fi.po +++ b/po/fi.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Ion3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-11-11 17:36+0200\n" +"POT-Creation-Date: 2007-04-22 13:13+0300\n" "PO-Revision-Date: 2004-07-31 23:50+0300\n" "Last-Translator: Tuomo Valkonen \n" "Language-Team: none\n" @@ -96,7 +96,7 @@ msgid "Time request from X server failed." msgstr "Ajan pyyntö X-palvelimelta epäonnistui." # -#: ../ioncore/exec.c:177 +#: ../ioncore/exec.c:186 msgid "Not saving state: running under session manager." msgstr "Tilaa ei talleteta, koska olemme istunnonhallinnan alaisia." @@ -152,38 +152,34 @@ msgstr "Ladattava moduulia ei ole annettu." msgid "Invalid arguments." msgstr "Virheelliset parametrit." -#: ../ioncore/screen.c:298 -msgid "act: " -msgstr "act: " - # -#: ../ioncore/screen.c:481 -msgid "Only workspace may not be destroyed." -msgstr "Ainoata työpöytää ei voi tuhota." +#: ../ioncore/screen.c:385 +msgid "Only workspace may not be destroyed/detached." +msgstr "Ainoata työpöytää ei voi tuhota/irroitaa." # -#: ../ioncore/screen.c:489 +#: ../ioncore/screen.c:396 msgid "Screens may not be destroyed." msgstr "Näyttöjä ei voi tuhota." -#: ../ioncore/screen.c:525 +#: ../ioncore/screen.c:432 msgid "Invalid offset." msgstr "Virheellinen poikkeama." -#: ../ioncore/screen.c:568 +#: ../ioncore/screen.c:471 #, c-format msgid "Unable to create a workspace on screen %d." msgstr "Työpöydän luonti ruudulle %d epäonnistui." -#: ../ioncore/sizehint.c:151 +#: ../ioncore/sizehint.c:157 msgid "Invalid client-supplied width/height increment." msgstr "Asiakkaan ilmoittama pysty/vaakalisäys koolle on virheellinen." -#: ../ioncore/sizehint.c:159 +#: ../ioncore/sizehint.c:165 msgid "Invalid client-supplied aspect-ratio." msgstr "Asiakkaan ilmoittama sivusuhde on virheellinen." -#: ../ioncore/ioncore.c:74 +#: ../ioncore/ioncore.c:78 msgid "" "This program is free software; you can redistribute it and/or\n" "modify it under the terms of the GNU Lesser General Public\n" @@ -206,16 +202,16 @@ msgstr "" "hyväksyttävästä laadusta tai soveltuvuudesta tiettyyn tarkoitukseen.\n" "Katso LGPL lisenssistä lisää yksityiskohtia.\n" -#: ../ioncore/ioncore.c:155 +#: ../ioncore/ioncore.c:159 msgid "No encoding given in LC_CTYPE." msgstr "LC_CTYPE ei kerro enkoodausta." -#: ../ioncore/ioncore.c:437 +#: ../ioncore/ioncore.c:470 #, c-format msgid "Could not connect to X display '%s'" msgstr "Yhteydenotto X-palvelimeen '%s' epäonnistui." -#: ../ioncore/ioncore.c:489 +#: ../ioncore/ioncore.c:522 msgid "Could not find a screen to manage." msgstr "Yhtään hallittavissa olevaa juuri-ikkunaa ei löytynyt." @@ -235,48 +231,48 @@ msgstr "Sy msgid "Failed to create input context." msgstr "Syöttökontekstin luonti epäonnistui." -#: ../ioncore/clientwin.c:411 +#: ../ioncore/clientwin.c:379 #, c-format msgid "The transient_for hint for \"%s\" points to itself." msgstr "Ikkunan \"%s\" transient_for neuvo osoittaa itseensä." -#: ../ioncore/clientwin.c:415 +#: ../ioncore/clientwin.c:383 #, c-format msgid "" "Client window \"%s\" has broken transient_for hint. (\"Extended WM hints\" " "multi-parent brain damage?)" msgstr "Ikkunan \"%s\" transient_for neuvo on rikki." -#: ../ioncore/clientwin.c:420 +#: ../ioncore/clientwin.c:388 #, c-format msgid "The transient_for window for \"%s\" is not on the same screen." msgstr "Ikkunan \"%s\" transient_for neuvo osoittaa eri näytölle." -#: ../ioncore/clientwin.c:440 ../ioncore/clientwin.c:527 -#: ../ioncore/clientwin.c:1300 +#: ../ioncore/clientwin.c:408 ../ioncore/clientwin.c:496 +#: ../ioncore/clientwin.c:1292 #, c-format msgid "Window %#x disappeared." msgstr "Ikkuna %#x katosi." -#: ../ioncore/clientwin.c:547 +#: ../ioncore/clientwin.c:516 msgid "Unable to find a matching root window!" msgstr "Vastaavaa juuri-ikkunaa ei löytynyt." -#: ../ioncore/clientwin.c:582 +#: ../ioncore/clientwin.c:555 #, c-format msgid "Unable to manage client window %#x." msgstr "Asiakasikkunan %x hallittavaksi saattaminen epäonnistui." -#: ../ioncore/clientwin.c:633 +#: ../ioncore/clientwin.c:604 msgid "Changes is WM_TRANSIENT_FOR property are unsupported." msgstr "Muutoksia WM_TRANSIENT_FOR ominaisuudessa ei tueta." # -#: ../ioncore/clientwin.c:809 +#: ../ioncore/clientwin.c:776 msgid "Client does not support the WM_DELETE protocol." msgstr "Asiakasikkuna ei tue WM_DELETE-protokollaa." -#: ../ioncore/clientwin.c:1306 +#: ../ioncore/clientwin.c:1298 msgid "Saved client window does not want to be managed." msgstr "Talletettu asiakasikkuna ei halua sitä hallittavan." @@ -285,75 +281,66 @@ msgstr "Talletettu asiakasikkuna ei halua sit msgid "Unable to store colourmap watch info." msgstr "Värikartan valvonnan alustaminen epäonnistui." -#: ../ioncore/region.c:46 +#: ../ioncore/region.c:47 msgid "Creating region with negative width or height!" msgstr "Yritys luoda korkeudeltaan tai leveydeltään negatiivinen alue." -#: ../ioncore/region.c:94 +#: ../ioncore/region.c:95 #, c-format msgid "Destroying object \"%s\" with client windows as children." -msgstr "Olio \"%s\", jolla on vielä asiakasikkunoita lapsena, tuhotaan." +msgstr "Tuhotaan kappale \"%s\", jolla on vielä asiakasikkunoita." + +#: ../ioncore/region.c:434 +#, c-format +msgid "Can not destroy %s: contains client windows." +msgstr "Kappaletta %s ei voida tuhota, sillä se sisältää asiakasikkunoita." + +#: ../ioncore/region.c:435 +msgid "(unknown)" +msgstr "(tuntematon)" # -#: ../ioncore/region.c:395 +#: ../ioncore/region.c:498 msgid "Failed to rescue some client windows - not closing." msgstr "Joidenkin asiakasikkunoiden pelastaminen epäonnistui - ei suljeta." -#: ../ioncore/attach.c:71 ../ioncore/pholder.c:46 -msgid "Unable to reparent." -msgstr "Vanhemman vaihto epäonnistui." - -#: ../ioncore/attach.c:157 ../ioncore/frame-pointer.c:282 +#: ../ioncore/attach.c:58 ../ioncore/frame-pointer.c:280 #, c-format msgid "Attempt to make region %s manage its ancestor %s." msgstr "Yritys saattaa alue %s hallitsemaan sen esivanhempaa %s." -#: ../ioncore/manage.c:77 +#: ../ioncore/attach.c:83 +msgid "Unable to reparent." +msgstr "Vanhemman vaihto epäonnistui." + +#: ../ioncore/attach.c:92 +msgid "Unexpected attach error: trying to recover by attaching to screen." +msgstr "Tuntematon liitäntävirhe: yritetään toipua liittämällä näyttöön." + +#: ../ioncore/attach.c:111 +msgid "Failed recovery." +msgstr "Toipuminen epäonnistui." + +#: ../ioncore/manage.c:193 msgid "Unable to find a screen for a new client window." msgstr "Uudelle asiakasikkunalle ei löytynyt näyttöä." -#: ../ioncore/rootwin.c:223 +#: ../ioncore/rootwin.c:218 #, c-format msgid "Unable to redirect root window events for screen %d." msgstr "Juuri-ikkunan %d viestien uudelleenohjaus epäonnistui." -#: ../ioncore/rootwin.c:319 ../ioncore/rootwin.c:344 -msgid "Xinerama sanity check failed; overlapping screens detected." -msgstr "Xinerama-tiedon järkevyystarkastus havaitsi päällekkäisiä ruutuja." - -#: ../ioncore/rootwin.c:326 ../ioncore/rootwin.c:351 -msgid "Xinerama sanity check failed; zero size detected." -msgstr "Xinerama-tiedon järkevyystarkastus havaitsi päällekkäisiä ruutuja." - -#: ../ioncore/rootwin.c:379 ../ioncore/rootwin.c:397 -msgid "Don't know how to get Xinerama information for multiple X root windows." -msgstr "Xinerama-tietoa ei osata käyttää usealle juuri-ikkunalle." - -#: ../ioncore/rootwin.c:393 -msgid "Error retrieving Xinerama information." -msgstr "Xinerama-tietoja ei saatu." - -#: ../ioncore/rootwin.c:432 ../ioncore/rootwin.c:451 -#, c-format -msgid "Unable to setup Xinerama screen %d." -msgstr "Xinerama-ruudun %d hallittavaksi saattaminen epäonnistui." - -#: ../ioncore/rootwin.c:464 -#, c-format -msgid "Unable to setup X screen %d." -msgstr "X-ruudun %d hallittavaksi saattaminen epäonnistui." - -#: ../ioncore/names.c:90 +#: ../ioncore/names.c:91 #, c-format msgid "Corrupt instance number %s." msgstr "Rikkinäinen instanssinumero %s." -#: ../ioncore/saveload.c:125 +#: ../ioncore/saveload.c:98 #, c-format msgid "Unknown class \"%s\", cannot create region." msgstr "Luokka \"%s\" on tuntematon. Aluetta ei voida luoda." -#: ../ioncore/saveload.c:205 +#: ../ioncore/saveload.c:202 #, c-format msgid "" "There were errors loading layout. Backing up current layout savefile as\n" @@ -372,46 +359,46 @@ msgstr "" "tilanteen aiheuttavat virheet (mahdollisesti puuttuva moduuli?) muissa\n" "asetustiedostoissasi." -#: ../ioncore/saveload.c:248 +#: ../ioncore/saveload.c:253 msgid "Unable to get file for layout backup." msgstr "Sijoittelun varmuuskopiolle ei voitu muodostaa tiedostonimeä." -#: ../ioncore/saveload.c:252 +#: ../ioncore/saveload.c:257 #, c-format msgid "Backup file %s already exists." msgstr "Varmuuskopio %s on jo olemassa." -#: ../ioncore/saveload.c:258 +#: ../ioncore/saveload.c:263 msgid "Failed backup." msgstr "Varmuuskopionti epäonnistui." # -#: ../ioncore/saveload.c:263 +#: ../ioncore/saveload.c:268 msgid "Unable to initialise layout on any screen." msgstr "Sijoittelun alustus epäonnistui kaikilla näytöillä." -#: ../ioncore/saveload.c:283 +#: ../ioncore/saveload.c:295 #, c-format msgid "Unable to get configuration for screen %d." msgstr "Ruudun %d asetukset puuttuvat." -#: ../ioncore/saveload.c:296 +#: ../ioncore/saveload.c:308 msgid "Unable to save layout." msgstr "Sijoittelun talletus epäonnistui." -#: ../ioncore/conf.c:143 +#: ../ioncore/conf.c:235 msgid "User directory can not be set." msgstr "Käyttäjän hakemistoa ei pystytä asettamaan." -#: ../ioncore/conf.c:217 +#: ../ioncore/conf.c:309 msgid "Some bindmaps were empty, loading ioncore_efbb." msgstr "Jotkut sidontakartat olivat tyhjiä. Ladataan ioncore_efbb." -#: ../ioncore/fullscreen.c:98 +#: ../ioncore/fullscreen.c:49 msgid "Failed to enter full screen mode." msgstr "Vaihto kokoruudun tilaan epäonnistui." -#: ../ioncore/fullscreen.c:120 +#: ../ioncore/fullscreen.c:83 msgid "" "Failed to return from full screen mode; remaining manager or parent from " "previous location refused to manage us." @@ -420,45 +407,40 @@ msgstr "" "tai vanhempi kieltäytyi hallitsemasta ikkunaa." # -#: ../ioncore/mplex.c:172 -msgid "Refusing to destroy - not empty." -msgstr "Tuhoamisesta kieltäydytään - ei tyhjä." - -# -#: ../ioncore/mplex.c:1678 +#: ../ioncore/mplex.c:1685 msgid "Invalid position setting." msgstr "Virheellinen paikka-asetus." # -#: ../ioncore/mplex.c:1718 +#: ../ioncore/mplex.c:1725 msgid "Invalid action setting." msgstr "Virheellinen toiminto-asetus." -#: ../ioncore/gr.c:119 +#: ../ioncore/gr.c:120 #, c-format msgid "Drawing engine %s is not registered!" msgstr "Piirtomoottoria %s ei ole rekisteröity!" -#: ../ioncore/gr.c:138 +#: ../ioncore/gr.c:139 #, c-format msgid "Unable to find brush for style '%s'." msgstr "Tyylille '%s' ei löytynyt pensseliä." -#: ../ioncore/gr.c:408 +#: ../ioncore/gr.c:646 msgid "No drawing engines loaded, trying \"de\"." msgstr "Yhtään piirtomoottoria ei ole ladattu. Yritetään oletusta \"de\"." -#: ../ioncore/group.c:184 ../mod_tiling/tiling.c:96 +# +#: ../ioncore/frame-draw.c:314 +msgid "" +msgstr "" + +#: ../ioncore/group.c:186 ../mod_tiling/tiling.c:92 #, c-format msgid "Error reparenting %s." msgstr "Virhe alueen %s vanhemman vaihdossa." -# -#: ../ioncore/group.c:481 ../mod_tiling/tiling.c:668 -msgid "Workspace not empty - refusing to destroy." -msgstr "Työpöytää ei voida tuhota, koska se ei ole tyhjä." - -#: ../ioncore/group.c:680 +#: ../ioncore/group.c:711 msgid "'bottom' already set." msgstr "'pohja' on jo asetettu." @@ -471,101 +453,112 @@ msgstr "Virheellinen parametri." msgid "Invalid direction parameter." msgstr "Virheellinen suunta." -#: ../ioncore/group-ws.c:67 +#: ../ioncore/group-ws.c:51 #, c-format msgid "Unknown placement method \"%s\"." msgstr "Tuntematon sijoittelumenetelmä \"%s\"." +#: ../ioncore/detach.c:176 +msgid "Failed to reattach." +msgstr "Uudelleenliittäminen epäonnistui" + +#: ../ioncore/screen-notify.c:190 +msgid "act: " +msgstr "act: " + # # -#: ../mod_tiling/tiling.c:77 +#: ../mod_tiling/tiling.c:73 msgid "Split not on workspace." msgstr "Jako ei ole tällä työpöydällä." -#: ../mod_tiling/tiling.c:373 +#: ../mod_tiling/tiling.c:348 msgid "Unable to create a node for status display." msgstr "Solmun luonti tilanäytölle epäonnistui." -#: ../mod_tiling/tiling.c:386 +#: ../mod_tiling/tiling.c:361 msgid "Unable to create new split for status display." msgstr "Uuden jaon tekeminen tilanäytölle epäonnistui." -#: ../mod_tiling/tiling.c:937 +#: ../mod_tiling/tiling.c:710 +msgid "Tiling in useless state." +msgstr "Laatoitus kelvottomassa tilassa." + +#: ../mod_tiling/tiling.c:924 msgid "Invalid direction" msgstr "Virheellinen suunta." # -#: ../mod_tiling/tiling.c:970 ../mod_tiling/split.c:1018 +#: ../mod_tiling/tiling.c:957 ../mod_tiling/split.c:1018 msgid "Invalid node." msgstr "Epäkelpo solmu." # -#: ../mod_tiling/tiling.c:989 +#: ../mod_tiling/tiling.c:976 msgid "Unable to split." msgstr "Halkaisu ei ole mahdollista." -#: ../mod_tiling/tiling.c:1092 -msgid "Nil frame." -msgstr "Kehys on asettamatta." - -#: ../mod_tiling/tiling.c:1097 -msgid "The frame is not managed by the workspace." -msgstr "Kehys ei ole tämän työpöydän hallinnoima." +#: ../mod_tiling/tiling.c:1090 +msgid "" +"Unable to unsplit: Could not move client windows elsewhere within the tiling." +msgstr "" +"Ei voida poistaa halkaisua: asiakasikkunoita ei voitu siirtää muualle " +"laatoituksessa." -#: ../mod_tiling/tiling.c:1196 +#: ../mod_tiling/tiling.c:1207 msgid "Nil parameter." msgstr "Parametri on asettamatta." -#: ../mod_tiling/tiling.c:1201 +#: ../mod_tiling/tiling.c:1212 msgid "Manager doesn't match." msgstr "Hallitsija on väärä." -#: ../mod_tiling/tiling.c:1238 +#: ../mod_tiling/tiling.c:1249 msgid "The status display is not a valid parameter for this routine." msgstr "Tilanäyttö ei ole kelpo parametri tälle toiminnolle." -#: ../mod_tiling/tiling.c:1329 +#: ../mod_tiling/tiling.c:1340 msgid "Refusing to float split directly containing the status display." msgstr "Tilanäytön suoraan sisältävää jakoa ei voida kelluttaa." -#: ../mod_tiling/tiling.c:1392 +#: ../mod_tiling/tiling.c:1403 msgid "No suitable split here." msgstr "Ei sopivaa jakoa tässä." # -#: ../mod_tiling/tiling.c:1428 +#: ../mod_tiling/tiling.c:1439 msgid "Could not get split tree." msgstr "Halkaisupuu puuttuu." -#: ../mod_tiling/tiling.c:1449 +#: ../mod_tiling/tiling.c:1460 msgid "Workspace already has a status display node." msgstr "Työpöydällä on jo solmu tilanäytölle." # -#: ../mod_tiling/tiling.c:1487 +#: ../mod_tiling/tiling.c:1498 msgid "Missing region parameters." msgstr "Alueen parameterit puuttuu." -#: ../mod_tiling/tiling.c:1531 ../mod_tiling/splitfloat.c:780 +#: ../mod_tiling/tiling.c:1542 ../mod_tiling/splitfloat.c:780 msgid "Invalid direction." msgstr "Virheellinen suunta." # -#: ../mod_tiling/tiling.c:1606 +#: ../mod_tiling/tiling.c:1617 msgid "No split type given." msgstr "Halkaisun tyyppiä ei ole asetettu." -#: ../mod_tiling/tiling.c:1619 +#: ../mod_tiling/tiling.c:1630 msgid "Unknown split type." msgstr "Tuntematon halkaisutyyppi." # # -#: ../mod_tiling/tiling.c:1659 +#: ../mod_tiling/tiling.c:1670 msgid "The workspace is empty." msgstr "Työpöytä on tyhjä." -#: ../mod_tiling/placement.c:106 +#: ../mod_tiling/placement.c:104 #, c-format msgid "" "Ooops... could not find a region to attach client window to on workspace %s." @@ -581,15 +574,15 @@ msgid "REGION_RQGEOM_TRYONLY unsupported for status display." msgstr "REGION_RQGEOM_TRYONLY:ä ei tueta tilanäytölle." # -#: ../mod_tiling/split.c:1082 +#: ../mod_tiling/split.c:1083 msgid "Splitting the status display is not allowed." msgstr "Tilanäytön halkaisu ei ole sallittu." -#: ../mod_tiling/split.c:1113 ../mod_tiling/splitfloat.c:903 +#: ../mod_tiling/split.c:1114 ../mod_tiling/splitfloat.c:903 msgid "Unable to split: not enough free space." msgstr "Ei voida halkaista: liian vähän tilaa." -#: ../mod_tiling/split.c:1864 +#: ../mod_tiling/split.c:1865 #, c-format msgid "Unable to get configuration for %s." msgstr "Alueelle \"%s\" ei saatu asetuksia." @@ -602,33 +595,33 @@ msgstr "Tilan msgid "Status display badly located in split tree." msgstr "Tilanäyttö on huonosti sijoittuneena halkaisupuuhun." -#: ../mod_tiling/ops.c:28 -msgid "Already detached" -msgstr "Irroitettu jo" - -#: ../mod_tiling/ops.c:142 +#: ../mod_tiling/ops.c:72 ../mod_tiling/ops.c:120 msgid "Not member of a group" msgstr "Ei jäsenenä missään ryhmässä" -#: ../mod_tiling/ops.c:147 +#: ../mod_tiling/ops.c:77 msgid "Manager group already has bottom" msgstr "Managerilla on jo 'pohja'" -#: ../mod_query/wedln.c:777 +#: ../mod_tiling/ops.c:154 +msgid "Unable to move a region from tiling to group." +msgstr "Ei voitu siirtää kappaletta laatoituksesta ryhmään." + +#: ../mod_query/wedln.c:813 msgid "history" msgstr "hist.täyd." -#: ../mod_query/fwarn.c:34 +#: ../mod_query/fwarn.c:35 msgid "Error:\n" msgstr "Virhe:\n" # -#: ../mod_menu/menu.c:537 +#: ../mod_menu/menu.c:601 msgid "Empty menu." msgstr "Tyhjä valikko." # -#: ../mod_sm/sm.c:110 +#: ../mod_sm/sm.c:111 msgid "Failed to set session directory." msgstr "Istuntohakemiston asetus epäonnistui." @@ -658,7 +651,7 @@ msgstr "Virhe istunnonhallinan kutsussa IceAddConnectionWatch." msgid "Unable to connect to the session manager." msgstr "Yhteydenotto istunnonhallintaohjelmaan epäonnistui." -#: ../mod_sp/main.c:85 +#: ../mod_sp/main.c:126 msgid "Unable to create scratchpad." msgstr "Suttausalueen luonti epäonnistui." @@ -666,44 +659,53 @@ msgstr "Suttausalueen luonti ep msgid "reading a pipe" msgstr "putken luku" -#: ../mod_statusbar/statusbar.c:1046 +#: ../mod_statusbar/main.c:159 +msgid "ion-statusd timed out." +msgstr "ion-statusd:n käynnistyksen aikaraja umpeutui." + +#: ../mod_statusbar/statusbar.c:1081 #, c-format msgid "[ %date || load: %load ] %filler%systray" msgstr "" -#: ../de/init.c:42 +#: ../de/init.c:68 #, c-format msgid "Border attribute %s sanity check failed." msgstr "Reunan arvon '%s' järkevyystarkistus epäonnistui." -#: ../de/init.c:65 +#: ../de/init.c:91 #, c-format msgid "Unknown border style \"%s\"." msgstr "Reunan tyyli \"%s\" on tuntematon." -#: ../de/init.c:97 +#: ../de/init.c:111 +#, c-format +msgid "Unknown border side configuration \"%s\"." +msgstr "Reunan sivuasetus \"%s\" on tuntematon." + +#: ../de/init.c:144 #, c-format msgid "Unable to allocate colour \"%s\"." msgstr "Värin \"%s\" varaaminen epäonnistui." -#: ../de/init.c:160 +#: ../de/init.c:210 #, c-format msgid "Corrupt substyle table %d." msgstr "Alityylin %d taulu on rikki." -#: ../de/init.c:193 +#: ../de/init.c:243 #, c-format msgid "Unknown text alignment \"%s\"." msgstr "Tuntematon tekstin tasaus \"%s\"." -#: ../de/init.c:263 +#: ../de/init.c:319 #, c-format msgid "'based_on' for %s points back to the style itself." msgstr "Tyylin %s 'based_on' -asetus osoittaa itseensä." -#: ../de/init.c:266 +#: ../de/init.c:322 #, c-format -msgid "Unknown base style \"%s\"." +msgid "Unknown base style. \"%s\"" msgstr "Tuntematon pohjatyyli \"%s\"." #: ../de/font.c:47 @@ -725,8 +727,7 @@ msgid "Failed to load fallback font." msgstr "Hätävarakirjaisimen lataus epäonnistui." #: ../de/style.c:315 -#, c-format -msgid "Style %s still in use [%d] but the module is being unloaded!" +msgid "Style is still in use [%d] but the module is being unloaded!" msgstr "Tyyli %s on vielä käytössä [%d], mutta moduulia poistetaan!" #: ../ion/ion.c:42 ../pwm/pwm.c:42 @@ -742,53 +743,43 @@ msgid "Add directory to search path" msgstr "Lisää hakemisto hakupolulle" #: ../ion/ion.c:51 ../pwm/pwm.c:51 -msgid "Manage default root window/non-Xinerama screen only" -msgstr "" -"Hallitse vain oletusarvoista juuri-ikkunaa. (Vastaa ensisijaista näyttöä jos " -"Xinerama ei ole käytössä.)" - -#: ../ion/ion.c:55 -msgid "Use Xinerama screen information (default: 1/yes)" -msgstr "Hyödynnä Xineramaa (oletus: 1/kyllä)" +msgid "Manage default screen only" +msgstr "Hallitse vain oletusarvoista juuri-ikkunaa." -#: ../ion/ion.c:58 ../pwm/pwm.c:58 -msgid "Ignored: not compiled with Xinerama support" -msgstr "Jätetään huomiotta: ohjelmaa ei ole käännetty Xinerama-tuella" - -#: ../ion/ion.c:62 ../pwm/pwm.c:62 +#: ../ion/ion.c:54 ../pwm/pwm.c:54 msgid "Name of session (affects savefiles)" msgstr "Istunnon nimi (vaikuttaa talletustiedostoihin)" -#: ../ion/ion.c:65 ../pwm/pwm.c:65 +#: ../ion/ion.c:57 ../pwm/pwm.c:57 msgid "Session manager client ID" msgstr "Istunnonhallinnan asiakastunniste" -#: ../ion/ion.c:68 ../pwm/pwm.c:68 +#: ../ion/ion.c:60 ../pwm/pwm.c:60 msgid "Do not create startup error log and display it with xmessage." msgstr "Älä luo käynnistysvirhelokia ja näytä sitä xmessage:lla." -#: ../ion/ion.c:72 ../pwm/pwm.c:72 +#: ../ion/ion.c:64 ../pwm/pwm.c:64 msgid "Show this help" msgstr "Näytä tämä aputeksti" -#: ../ion/ion.c:75 ../pwm/pwm.c:75 +#: ../ion/ion.c:67 ../pwm/pwm.c:67 msgid "Show program version" msgstr "Näytä ohjelman versio" -#: ../ion/ion.c:78 ../pwm/pwm.c:78 +#: ../ion/ion.c:70 ../pwm/pwm.c:70 msgid "Show about text" msgstr "Näytä tietoja ohjelmasta" -#: ../ion/ion.c:93 +#: ../ion/ion.c:85 msgid "Could not get user configuration file directory." msgstr "Käyttäjän asetustiedostohakemisto puuttuu, eikä sitä voitu luoda." -#: ../ion/ion.c:107 +#: ../ion/ion.c:99 #, c-format msgid "%s/welcome.txt" msgstr "%s/welcome.fi.txt" -#: ../ion/ion.c:140 ../pwm/pwm.c:87 +#: ../ion/ion.c:132 ../pwm/pwm.c:79 #, c-format msgid "" "Usage: %s [options]\n" @@ -797,28 +788,20 @@ msgstr "" "Käyttö: %s [valintoja]\n" "\n" -#: ../ion/ion.c:200 ../pwm/pwm.c:150 -msgid "Invalid parameter to -xinerama." -msgstr "Virheellinen parametri -xinerama:lle" - # -#: ../ion/ion.c:219 ../pwm/pwm.c:169 +#: ../ion/ion.c:200 ../pwm/pwm.c:150 msgid "Invalid command line." msgstr "Virheellinen komentorivi." -#: ../ion/ion.c:241 +#: ../ion/ion.c:222 msgid "Ion startup error log:\n" msgstr "Ionin käynnistysvirheloki:\n" -#: ../ion/ion.c:252 ../pwm/pwm.c:202 +#: ../ion/ion.c:233 ../pwm/pwm.c:183 msgid "Refusing to start due to encountered errors." msgstr "Ohjelma kieltäytyy käynnistymästä tavattujen virheiden johdosta." -#: ../pwm/pwm.c:55 -msgid "Use Xinerama screen information (default: 0/no)" -msgstr "Hyödynnä Xineramaa (oletus: 0/ei)" - -#: ../pwm/pwm.c:191 +#: ../pwm/pwm.c:172 msgid "PWM startup error log:\n" msgstr "PWM:n käynnistysvirheloki:\n" @@ -889,7 +872,7 @@ msgstr "" #: ../../libextl-3/luaextl.c:1356 msgid "Returned dead object." -msgstr "Kuollut olio palautettu." +msgstr "Kuollut kappale palautettu." #: ../../libextl-3/luaextl.c:1359 #, c-format @@ -938,16 +921,16 @@ msgstr "" "kykenee." # -#: ../../libextl-3/luaextl.c:2373 +#: ../../libextl-3/luaextl.c:2347 msgid "Maximal serialisation depth reached." msgstr "Suurin mahdollinen talletuksen rekursiosyvyys saavutettu." -#: ../../libextl-3/luaextl.c:2394 +#: ../../libextl-3/luaextl.c:2368 #, c-format msgid "Unable to serialise type %s." msgstr "Tyyppiä %s ei voida tallettaa." -#: ../../libextl-3/luaextl.c:2425 +#: ../../libextl-3/luaextl.c:2399 msgid "-- This file has been generated by Ion. Do not edit.\n" msgstr "-- Tämä tiedosto on Ionin luoma. Älä editoi sitä.\n" @@ -960,619 +943,629 @@ msgstr "" "Tyyppitarkistus epäonnistui tason 2 kutsunkäsittelijässä parametrille #%d " "(oli %s, odotettiin %s)." -msgid "Grow-D" -msgstr "Kasvu: alas" - -msgid "Grow-U" -msgstr "Kasvu: ylös" - -msgid "Grow-R" -msgstr "Kasvu: oikealle" - -msgid "Grow-L" -msgstr "Kasvu: vasemmalle" - -msgid "Pos-BR" -msgstr "Paikka: alaoikea" - -msgid "Pos-BL" -msgstr "Paikka: alavasen" - -msgid "Pos-TR" -msgstr "Paikka: yläoikea" +msgid "Scroll the message or completions up/down." +msgstr "Vieritä viestiä tai täydennyksiä ylös/alas." -msgid "Pos-TL" -msgstr "Paikka: ylävasen" +msgid "Close the query/message box, not executing bound actions." +msgstr "Sulje kysely/viesti suorittamatta sidottuja toimintoja." -msgid "Toggle floating dock." -msgstr "Näytä/piiloita kelluva laituri (dock)." +msgid "Close the query and execute bound action." +msgstr "Sulje kysely ja suorita sidottu toiminta." -msgid "Clear the menu's typeahead find buffer." -msgstr "Tyhjää valikon hakupuskuri." +msgid "Complete from history" +msgstr "Täydennä historiasta" -msgid "Select next/previous menu entry." -msgstr "Siirry seuraavaan/edelliseen valintaan." +msgid "Try to complete the entered text or cycle through completions." +msgstr "Yritä täydentää syötetty teksti tai selaa täydennyksiä." # -# -msgid "Activate current menu entry." -msgstr "Suorita valinta." - -msgid "Close the menu." -msgstr "Sulje valikko." - -msgid "New tiling" -msgstr "Uusi laatoitus" - -msgid "Detach" -msgstr "Irroita" +msgid "Clear mark/cancel selection." +msgstr "Lopeta tekstin valinta." # -msgid "Transpose" -msgstr "Käännä" +msgid "Copy selection." +msgstr "Kopioi valittu teksti." # -msgid "Flip" -msgstr "Peilaa" +msgid "Cut selection." +msgstr "Leikkaa valittu teksti." # -# -msgid "Split horizontally" -msgstr "Jaa vaakasuunnassa" +msgid "Set mark/begin selection." +msgstr "Aloita tekstin valinta." -# -# -msgid "Split vertically" -msgstr "Jaa pystysuunnassa" +msgid "Paste from the clipboard." +msgstr "Liimaa teksti leikelaudalta." # -msgid "At root" -msgstr "Juuressa" +msgid "Select next/previous (matching) history entry." +msgstr "Näytä seuraava/edellinen vastaus muistista." -msgid "Below" -msgstr "Alapuolella" +msgid "Transpose characters." +msgstr "Transponoi merkit." -msgid "Above" -msgstr "Yläpuolella" +msgid "Delete the whole line." +msgstr "Tuhoa koko rivi." -msgid "At right" -msgstr "Oikealla" +msgid "Delete to end of line." +msgstr "Tuhoa merkit rivin loppuun saakka." -msgid "At left" -msgstr "Vasemmalla" +msgid "Delete one word forward/backward." +msgstr "Tuhoa yksi sana eteen/taakse." -msgid "Float split" -msgstr "Kelluta" +msgid "Delete previous character." +msgstr "Tuhoa edellinen merkki." -# -msgid "Destroy frame" -msgstr "Tuhoa kehys" +msgid "Delete next character." +msgstr "Poista seuraava merkki." -msgid "Tile frame, if no tiling exists on the workspace" -msgstr "Laatoita kehys, jos työpöydällä ei ole kehystä" +msgid "Skip one word forward/backward." +msgstr "Ohita yksi sana eteen/taaksepäin" -msgid "Detach window from tiled frame" -msgstr "Irroita ikkuna laatoitetusta kehyksestä" +msgid "Go to end/beginning." +msgstr "Mene rivin alkuun/loppuun." -msgid "Destroy current frame." -msgstr "Tuhoa tämänhetkinen kehys." +msgid "Move one character forward/backward." +msgstr "Siirry yksi merkki eteen/taakse." -msgid "Split current frame horizontally." -msgstr "Halkaise tämänhetkinen kehys vaakasuunnassa." +msgid "Kill" +msgstr "Tapa" -msgid "Go to frame above/below/right/left of current frame." -msgstr "" -"Siirry tämänhetkisen kehyksen yllä/alla/vasemmalle/oikealla olevaan " -"kehykseen." +msgid "Attach tagged" +msgstr "Liitä merkityt" -msgid "Split current frame vertically." -msgstr "Halkaise tämänhetkinen kehys pystysuunnassa." +msgid "Rename" +msgstr "Uudelleennimeä" -msgid "Failed to create statusbar." -msgstr "Epäonnistuttiin tilarivin luonnissa" +msgid "Close" +msgstr "Sulje" -msgid "Screen already has an stdisp. Refusing to create a statusbar." -msgstr "Ruudulla on jo tilanäyttö. Kieltäydytään luomasta tilariviä." +msgid "De/reattach" +msgstr "Irroita/liitä" -msgid "Screen not found." -msgstr "Ruutua ei löytynyt." +msgid "Toggle tag" +msgstr "Muuta merkintää" -msgid "Failed to start ion-statusd." -msgstr "Ion-statusd:n käynnistys eopäonnistui." +msgid "Window info" +msgstr "Ikkunan tiedot" -msgid "Errors starting ion-statusd:\n" -msgstr "Ion-statusd:n käynnistysvirheet:\n" +msgid "Clear tags" +msgstr "Poista merkinnät" -msgid "Could not find %s" -msgstr "Ei löydettyä %s:ää." +msgid "Exit" +msgstr "Poistu" -msgid "ion-statusd quit." -msgstr "ion-statusd päätti suorituksen." +msgid "Restart TWM" +msgstr "Käynnistä TWM" -msgid "Not a directory." -msgstr "Ei hakemisto." +msgid "Restart" +msgstr "Uudelleenkäynnistä" -msgid "Invalid command" -msgstr "Virheellinen komento" +msgid "Save" +msgstr "Talleta" -msgid "Error in command string: " -msgstr "Virhe komentojonossa:" +msgid "Session" +msgstr "Istunto" -msgid "Error compiling guard: %s" -msgstr "Virhe vahdin käännössä. %s" +msgid "Styles" +msgstr "Tyylit" -msgid "Invalid guard %s." -msgstr "Virheellinen vahti %s." +msgid "About Ion" +msgstr "Tietoja Ionista" -msgid "Main menu:" -msgstr "Päävalikko:" +msgid "Help" +msgstr "Ohjeet" -msgid "Context menu:" -msgstr "Kontekstivalikko:" +msgid "Lock screen" +msgstr "Lukitse näyttö" -msgid "Floating frame" -msgstr "Kelluva kehys" +msgid "Terminal" +msgstr "Pääteohjelma" -msgid "Tiled frame" -msgstr "Laatoitettu kehys" +# +msgid "Run..." +msgstr "Suorita..." -msgid "Tiling" -msgstr "Laatoitus" +# +msgid "Move in specified direction." +msgstr "Liiku vastaavaan suuntaan." + +msgid "Shrink in specified direction." +msgstr "Kutista vastaavaan suuntaan." # -msgid "Workspace" -msgstr "Työpöytä" +msgid "Grow in specified direction." +msgstr "Kasvata vastaavaan suuntaan." -msgid "Screen" -msgstr "Näyttö" +msgid "End the resize mode." +msgstr "Siirry tilasta pois." -msgid "Frame" -msgstr "Kehys" +msgid "Cancel the resize mode." +msgstr "Peruuta tilasta." -msgid "Recursive table - unable to deepcopy" -msgstr "Rekursiivinen taulu - ei voida syväkopioida." +msgid "Move the frame." +msgstr "Siirrä kehystä." -msgid "" -"Making the following minimal emergency mappings:\n" -" F2 -> xterm\n" -" F11 -> restart\n" -" F12 -> exit\n" -" Mod1+C -> close\n" -" Mod1+K P/N -> WFrame.switch_next/switch_prev\n" -msgstr "" -"Tehdään seuraavat vähimmäiset hätäsidonnat:\n" -" F2 -> xterm\n" -" F11 -> uudelleenkäynnistys\n" -" F12 -> lopetus\n" -" Mod1+C -> sulkeminen\n" -" Mod1+K P/N -> vaihto kehyksen sisällä\n" +msgid "Lower the frame." +msgstr "Alenna kehystä." -msgid "Unable to append to non-table menu" -msgstr "Ei voida lisätä valikkoon, koska sitä ei ole määritelty tauluna " +# +msgid "Raise the frame." +msgstr "Nosta kehys." -msgid "Cannot save selection." -msgstr "Ei voida tallettaa valintaa." +msgid "Toggle shade mode" +msgstr "Kytke litistys päälle/pois." -msgid "Save look selection in %s?" -msgstr "Talletaanko ulkonäköasetus tiedostoon %s?" +msgid "Attach tagged objects to this frame." +msgstr "Liitä merkityt kappaleet tähän kehykseen." -msgid "Too much result data" -msgstr "Liian suuri vastaus" +msgid "Maximize the frame horizontally/vertically." +msgstr "Maksimoi kehys vaaka/pystysuunnassa." -msgid "Could not find client window %s." -msgstr "Asiakasikkunaa %s ei löytynyt." +msgid "Move current object within the frame left/right." +msgstr "" +"Siirrä kehyksessä tällä hetkellä näytettävää kappaletta vasemmalle/oikealle." -msgid "Cannot attach: different root windows." -msgstr "Ei voida liittää: eri juuri-ikkunat." +msgid "Switch to next/previous object within the frame." +msgstr "Siirry seuraavaan/edelliseen kehyksen jakavaan kappaleeseen." -msgid "Unknown error" -msgstr "Tuntematon virhe" +msgid "Switch to n:th object within the frame." +msgstr "Siirry n:teen kehyksen jakavaan kappaleeseen." -msgid "Go to window:" -msgstr "Mene ikkunaan:" +# +msgid "Query for a client window to attach." +msgstr "Kysy liitettävää asiakasikkunaa." -msgid "Attach window:" -msgstr "Liitä ikkuna:" +msgid "Move objects between frames by dragging and dropping the tab." +msgstr "" +"Siirrä kappaletta kehysten välillä raahaamalla ja pudottamalla välilehti." -msgid "Go to or create workspace:" -msgstr "Mene tai luo työpöytä:" +msgid "Resize the frame." +msgstr "Muuta kehyksen kokoa." -msgid "Exit Ion/Shutdown session (y/n)?" -msgstr "Poistu Ionista/Lopeta istunto (kyllä: y, ei: n)?" +msgid "Switch the frame to display the object indicated by the tab." +msgstr "Vaihda kehys näyttämään välilehden ilmoittama kappale." -msgid "Restart Ion (y/n)?" -msgstr "Uudelleenkäynnistä Ion (kyllä: y, ei: n)?" +msgid "Begin move/resize mode." +msgstr "Aloita siirto ja koonmuutostila." -msgid "Frame name:" -msgstr "Kehyksen nimi:" +msgid "Display context menu." +msgstr "Näytä kontekstivalikko." -msgid "Workspace name:" -msgstr "Työpöydän nimi:" +# +msgid "Query for a client window to go to." +msgstr "Kysy asiakasikkunaa, johon siirtyä." -msgid "Edit file:" -msgstr "Muokkaa tiedostoa:" +msgid "Query for workspace to go to or create a new one." +msgstr "Kysy työpöytää jolle siirtyä, tai luo uusi." -msgid "View file:" -msgstr "Näytä tiedosto:" +msgid "Query for file to view." +msgstr "Kysy tiedostoa näytettäväksi." -msgid "Run:" -msgstr "Suorita:" +msgid "Query for file to edit." +msgstr "Kysy tiedostoa muokattavaksi." -msgid "Failed to open ~/.ssh/known_hosts" -msgstr "Tiedostoa ~/.ssh/known_hosts avaaminen epäonnistui." +msgid "Query for host to connect to with SSH." +msgstr "Ota SSH-yhteys kyseltävään koneeseen." -msgid "Failed to open ~/.ssh/config" -msgstr "Tiedoston ~/.ssh/config avaaminen epäonnistui." +msgid "Query for Lua code to execute." +msgstr "Kysy Lua-koodia ajettavaksi." -msgid "SSH to:" -msgstr "Avaa SSH-yhteys:" +msgid "Query for command line to execute." +msgstr "Kysy komentoriviä suoritettavaksi." -msgid "Manual page (%s):" -msgstr "Ohjesivu (%s):" +# +msgid "Run a terminal emulator." +msgstr "Käynnistä pääte-emulaattori." -msgid "Lua code:" -msgstr "Lua-koodia:" +msgid "Show the Ion manual page." +msgstr "Näytä Ionin ohjesivu." -msgid "Unknown menu %s." -msgstr "Tuntematon valikko %s." +msgid "Query for manual page to be displayed." +msgstr "Kysy ohjesivua näytettäväksi." -msgid "Missing submenu " -msgstr "Puuttuva alivalikko " +msgid "Toggle tag of current object." +msgstr "Merkitse aktiivinen kappale." -msgid "%s:" +msgid "Detach (float) or reattach an object to its previous location." msgstr "" +"Irroita (kelluta) tai uudelleenliitä kappale sen edelliseen sijaintiin." -msgid "No entry '%s'" -msgstr "Tuntematon valinta '%s'." +msgid "Close current object." +msgstr "Sulje aktiivinen kappale." +msgid "Toggle client window group full-screen mode" +msgstr "Muuta asiakasikkunaryhmän kokoruudun tilaa" + +# msgid "" -"\n" -"%sClass: %s\n" -"%sRole: %s\n" -"%sInstance: %s\n" -"%sXID: 0x%x" +"Send next key press to the client window. Some programs may not allow this " +"by default." msgstr "" -"\n" -"Luokka(class): %s\n" -"Rooli(role): %s\n" -"Instanssi(instance): %s\n" -"XID: 0x%x" - -msgid "Toggle scratchpad." -msgstr "Kytke suttausalue päälle/pois" +"Lähetä seuraava näppäinpainallus aktiiviselle asiakasikkunalle. Kaikki " +"ohjelmat eivät välttämättä salli tätä oletuksena." -msgid "Programs" -msgstr "Ohjelmat" +# +msgid "Kill client owning the client window." +msgstr "Tapa aktiivisen asiakasikkunan omistava ohjelma." -msgid "Lock screen" -msgstr "Lukitse näyttö" +# +msgid "" +"Nudge the client window. This might help with some programs' resizing " +"problems." +msgstr "" +"Tönäise aktiivista asiakasikkunaa. Tämä saattaa auttaa joidenkin ohjelmien " +"koko-ongelmien kanssa." -msgid "Help" -msgstr "Ohjeet" +msgid "Raise focused object, if possible." +msgstr "Nosta aktiivista kappaletta, jos mahdollista." -# -msgid "Workspaces" -msgstr "Työpöydät" +msgid "Backward-circulate focus." +msgstr "Kierrätä fokusta taaksepäin" -msgid "New" -msgstr "Uusi" +msgid "Forward-circulate focus." +msgstr "Kierrätä fokusta eteenpäin." -msgid "Styles" -msgstr "Tyylit" +msgid "Display the window list menu." +msgstr "Näytä ikkunavalikko." -msgid "Session" -msgstr "Istunto" +msgid "Display the main menu." +msgstr "Näytä päävalikko." -msgid "Close" -msgstr "Sulje" +# +# +msgid "Create a new workspace of chosen default type." +msgstr "Luo uusi työpöytä ennalta asetettua tyyppiä." -msgid "List" -msgstr "Lista" +# +msgid "Go to next/previous screen on multihead setup." +msgstr "Mene seuraavalle/edelliselle näytölle usean näytön järjestelmässä." # -msgid "" -"Switch to n:th object (workspace, full screen client window) within current " -"screen." -msgstr "" -"Siirry n:teen tämänhetkisen näytön lomittamaan olioon (työpöytä, kokoruudun " -"asiakasikkuna)." +msgid "Go to n:th screen on multihead setup." +msgstr "Siirry näytölle n usean näytön järjestelmässä." # -msgid "Switch to next/previous object within current screen." -msgstr "Siirry seuraavaan/edelliseen tämänhetkisen näytön lomittamaan olioon." +msgid "Clear all tags." +msgstr "Poista kaikki merkinnät." msgid "Go to first region demanding attention or previously active one." msgstr "" "Mene ensimmäiseen huomiota vaativaan alueeseen, tai edelliseen aktiiviseen." # -msgid "Clear all tags." -msgstr "Poista kaikki merkinnät." +msgid "Switch to next/previous object within current screen." +msgstr "" +"Siirry seuraavaan/edelliseen tämänhetkisen näytön lomittamaan kappaleeseen." # -msgid "Go to n:th screen on multihead setup." -msgstr "Siirry näytölle n usean näytön järjestelmässä." +msgid "" +"Switch to n:th object (workspace, full screen client window) within current " +"screen." +msgstr "" +"Siirry n:teen tämänhetkisen näytön lomittamaan kappaleeseen (työpöytä, " +"kokoruudun asiakasikkuna)." -# -msgid "Go to next/previous screen on multihead setup." -msgstr "Mene seuraavalle/edelliselle näytölle usean näytön järjestelmässä." +msgid "List" +msgstr "Lista" -# -# -msgid "Create a new workspace of chosen default type." -msgstr "Luo uusi työpöytä ennalta asetettua tyyppiä." +msgid "New" +msgstr "Uusi" -msgid "Display the main menu." -msgstr "Näytä päävalikko." +msgid "Dillo" +msgstr "" -msgid "Display the window list menu." -msgstr "Näytä ikkunavalikko." +msgid "Konqueror" +msgstr "" -msgid "Forward-circulate focus." -msgstr "Kierrätä fokusta eteenpäin." +msgid "Links" +msgstr "" -msgid "Backward-circulate focus." -msgstr "Kierrätä fokusta taaksepäin" +msgid "Opera" +msgstr "" -msgid "Raise focused object, if possible." -msgstr "Nosta fokusoitu olio, jos mahdollista." +msgid "Rxvt" +msgstr "" -# -msgid "" -"Nudge the client window. This might help with some programs' resizing " -"problems." +msgid "W3M" msgstr "" -"Tönäise aktiivista asiakasikkunaa. Tämä saattaa auttaa joidenkin ohjelmien " -"koko-ongelmien kanssa." -# -msgid "Kill client owning the client window." -msgstr "Tapa aktiivisen asiakasikkunan omistava ohjelma." +msgid "XTerm" +msgstr "" # +msgid "Workspaces" +msgstr "Työpöydät" + +msgid "Programs" +msgstr "Ohjelmat" + +msgid "Show the PWM manual page." +msgstr "Näytä PWM:n ohjesivu." + +msgid "Toggle scratchpad." +msgstr "Kytke suttausalue päälle/pois" + msgid "" -"Send next key press to the client window. Some programs may not allow this " -"by default." +"\n" +"%sClass: %s\n" +"%sRole: %s\n" +"%sInstance: %s\n" +"%sXID: 0x%x" msgstr "" -"Lähetä seuraava näppäinpainallus aktiiviselle asiakasikkunalle. Kaikki " -"ohjelmat eivät välttämättä salli tätä oletuksena." +"\n" +"Luokka(class): %s\n" +"Rooli(role): %s\n" +"Instanssi(instance): %s\n" +"XID: 0x%x" -msgid "Toggle client window group full-screen mode" -msgstr "Muuta asiakasikkunaryhmän kokoruudun tilaa" +msgid "No entry '%s'" +msgstr "Tuntematon valinta '%s'." -msgid "Close current object." -msgstr "Sulje aktiivinen olio." +msgid "%s:" +msgstr "" -msgid "Query for manual page to be displayed." -msgstr "Kysy ohjesivua näytettäväksi." +msgid "Missing submenu " +msgstr "Puuttuva alivalikko " -msgid "Show the Ion manual page." -msgstr "Näytä Ionin ohjesivu." +msgid "Unknown menu %s." +msgstr "Tuntematon valikko %s." -# -msgid "Run a terminal emulator." -msgstr "Käynnistä pääte-emulaattori." +msgid "Lua code:" +msgstr "Lua-koodia:" -msgid "Query for command line to execute." -msgstr "Kysy komentoriviä suoritettavaksi." +msgid "Manual page (%s):" +msgstr "Ohjesivu (%s):" -msgid "Query for Lua code to execute." -msgstr "Kysy Lua-koodia ajettavaksi." +msgid "SSH to:" +msgstr "Avaa SSH-yhteys:" -msgid "Query for host to connect to with SSH." -msgstr "Ota SSH-yhteys kyseltävään koneeseen." +msgid "Failed to open ~/.ssh/config" +msgstr "Tiedoston ~/.ssh/config avaaminen epäonnistui." -msgid "Query for file to edit." -msgstr "Kysy tiedostoa muokattavaksi." +msgid "Failed to open ~/.ssh/known_hosts" +msgstr "Tiedostoa ~/.ssh/known_hosts avaaminen epäonnistui." -msgid "Query for file to view." -msgstr "Kysy tiedostoa näytettäväksi." +msgid "Run:" +msgstr "Suorita:" -msgid "Query for workspace to go to or create a new one." -msgstr "Kysy työpöytää jolle siirtyä, tai luo uusi." +msgid "View file:" +msgstr "Näytä tiedosto:" -# -msgid "Query for a client window to go to." -msgstr "Kysy asiakasikkunaa, johon siirtyä." +msgid "Edit file:" +msgstr "Muokkaa tiedostoa:" -# -msgid "Query for a client window to attach." -msgstr "Kysy liitettävää asiakasikkunaa." +msgid "Workspace name:" +msgstr "Työpöydän nimi:" -msgid "Display context menu." -msgstr "Näytä kontekstivalikko." +msgid "Frame name:" +msgstr "Kehyksen nimi:" -msgid "Maximize the frame horizontally/vertically." -msgstr "Maksimoi kehys vaaka/pystysuunnassa." +msgid "Restart Ion (y/n)?" +msgstr "Uudelleenkäynnistä Ion (kyllä: y, ei: n)?" -msgid "Begin move/resize mode." -msgstr "Aloita siirto ja koonmuutostila." +msgid "Exit Ion/Shutdown session (y/n)?" +msgstr "Poistu Ionista/Lopeta istunto (kyllä: y, ei: n)?" -msgid "Switch the frame to display the object indicated by the tab." -msgstr "Vaihda kehys näyttämään välilehden ilmoittama olio." +msgid "Go to or create workspace:" +msgstr "Mene tai luo työpöytä:" -msgid "Resize the frame." -msgstr "Muuta kehyksen kokoa." +msgid "Attach window:" +msgstr "Liitä ikkuna:" -msgid "Move the frame." -msgstr "Siirrä kehystä." +msgid "Go to window:" +msgstr "Mene ikkunaan:" -msgid "Move objects between frames by dragging and dropping the tab." -msgstr "Siirrä olioita kehysten välillä raahaamalla ja pudottamalla välilehti." +msgid "New workspace layout (default):" +msgstr "Uuden työpöydän sijoitelma (default):" + +msgid "Unknown error" +msgstr "Tuntematon virhe" + +msgid "Unknown layout" +msgstr "Tuntematon sijoittelu." + +msgid "Cannot attach: different root windows." +msgstr "Ei voida liittää: eri juuri-ikkunat." + +msgid "Could not find client window %s." +msgstr "Asiakasikkunaa %s ei löytynyt." + +msgid "Too much result data" +msgstr "Liian suuri vastaus" + +msgid "Could not find %s" +msgstr "Ei löydettyä %s:ää." -msgid "Tag current object within the frame." -msgstr "Merkitse kehyksen tällä hetkellä näyttämä olio." +msgid "Not a directory." +msgstr "Ei hakemisto." -msgid "Switch to n:th object within the frame." -msgstr "Siirry n:teen kehyksen jakavaan olioon." +msgid "Invalid command" +msgstr "Virheellinen komento" -msgid "Switch to next/previous object within the frame." -msgstr "Siirry seuraavaan/edelliseen kehyksen jakavaan olioon." +msgid "Error in command string: " +msgstr "Virhe komentojonossa:" -msgid "Move current object within the frame left/right." -msgstr "" -"Siirrä kehyksessä tällä hetkellä näytettävää oliota vasemmalle/oikealle." +msgid "Error compiling guard: %s" +msgstr "Virhe vahdin käännössä. %s" -msgid "Attach tagged objects to this frame." -msgstr "Liitä merkityt oliot tähän kehykseen." +msgid "Invalid guard %s." +msgstr "Virheellinen vahti %s." -msgid "Toggle shade mode" -msgstr "Kytke litistys päälle/pois." +msgid "Main menu:" +msgstr "Päävalikko:" -# -msgid "Raise the frame." -msgstr "Nosta kehys." +msgid "Context menu:" +msgstr "Kontekstivalikko:" -msgid "Lower the frame." -msgstr "Alenna kehystä." +msgid "Floating frame" +msgstr "Kelluva kehys" -msgid "Cancel the resize mode." -msgstr "Peruuta tilasta." +msgid "Tiled frame" +msgstr "Laatoitettu kehys" -msgid "End the resize mode." -msgstr "Siirry tilasta pois." +msgid "Tiling" +msgstr "Laatoitus" # -msgid "Grow in specified direction." -msgstr "Kasvata vastaavaan suuntaan." +msgid "Workspace" +msgstr "Työpöytä" -msgid "Shrink in specified direction." -msgstr "Kutista vastaavaan suuntaan." +msgid "Screen" +msgstr "Näyttö" -# -msgid "Move in specified direction." -msgstr "Liiku vastaavaan suuntaan." +msgid "Frame" +msgstr "Kehys" -msgid "About Ion" -msgstr "Tietoja Ionista" +msgid "Recursive table - unable to deepcopy" +msgstr "Rekursiivinen taulu - ei voida syväkopioida." -msgid "XTerm" +msgid "" +"Making the following minimal emergency mappings:\n" +" F2 -> xterm\n" +" F11 -> restart\n" +" F12 -> exit\n" +" Mod1+C -> close\n" +" Mod1+K P/N -> WFrame.switch_next/switch_prev\n" msgstr "" +"Tehdään seuraavat vähimmäiset hätäsidonnat:\n" +" F2 -> xterm\n" +" F11 -> uudelleenkäynnistys\n" +" F12 -> lopetus\n" +" Mod1+C -> sulkeminen\n" +" Mod1+K P/N -> vaihto kehyksen sisällä\n" -msgid "W3M" -msgstr "" +msgid "Unable to append to non-table menu" +msgstr "Ei voida lisätä valikkoon, koska sitä ei ole määritelty tauluna " -msgid "Rxvt" -msgstr "" +msgid "Cannot save selection." +msgstr "Ei voida tallettaa valintaa." -msgid "Opera" -msgstr "" +msgid "Save look selection in %s?" +msgstr "Talletaanko ulkonäköasetus tiedostoon %s?" -msgid "Links" -msgstr "" +msgid "ion-statusd quit." +msgstr "ion-statusd päätti suorituksen." -msgid "Konqueror" -msgstr "" +msgid "Errors starting ion-statusd:\n" +msgstr "Ion-statusd:n käynnistysvirheet:\n" -msgid "Dillo" -msgstr "" +msgid "Failed to start ion-statusd." +msgstr "Ion-statusd:n käynnistys eopäonnistui." -# -msgid "Run..." -msgstr "Suorita..." +msgid "Screen not found." +msgstr "Ruutua ei löytynyt." -msgid "Save" -msgstr "Talleta" +msgid "Screen already has an stdisp. Refusing to create a statusbar." +msgstr "Ruudulla on jo tilanäyttö. Kieltäydytään luomasta tilariviä." -msgid "Restart" -msgstr "Uudelleenkäynnistä" +msgid "Failed to create statusbar." +msgstr "Epäonnistuttiin tilarivin luonnissa" -msgid "Restart TWM" -msgstr "Käynnistä TWM" +msgid "Split current frame vertically." +msgstr "Halkaise tämänhetkinen kehys pystysuunnassa." -msgid "Exit" -msgstr "Poistu" +msgid "Go to frame above/below/right/left of current frame." +msgstr "" +"Siirry tämänhetkisen kehyksen yllä/alla/vasemmalle/oikealla olevaan " +"kehykseen." -msgid "Kill" -msgstr "Tapa" +msgid "Split current frame horizontally." +msgstr "Halkaise tämänhetkinen kehys vaakasuunnassa." -msgid "Toggle tag" -msgstr "Muuta lippua" +msgid "Destroy current frame." +msgstr "Tuhoa tämänhetkinen kehys." -msgid "Attach tagged" -msgstr "Liitä merkityt" +msgid "Tile frame, if no tiling exists on the workspace" +msgstr "Laatoita kehys, jos työpöydällä ei ole kehystä" -msgid "Clear tags" -msgstr "Poista merkinnät" +# +msgid "Destroy frame" +msgstr "Tuhoa kehys" -msgid "Window info" -msgstr "Ikkunan tiedot" +# +# +msgid "Split vertically" +msgstr "Jaa pystysuunnassa" # -msgid "New workspace" -msgstr "Uusi työpöytä" +# +msgid "Split horizontally" +msgstr "Jaa vaakasuunnassa" -msgid "New empty workspace" -msgstr "Uusi tyhjä työpöytä" +# +msgid "Flip" +msgstr "Peilaa" # -msgid "Close workspace" -msgstr "Sulje työpöytä" +msgid "Transpose" +msgstr "Käännä" -msgid "Move one character forward/backward." -msgstr "Siirry yksi merkki eteen/taakse." +msgid "Untile" +msgstr "Hajoita laatoitus" -msgid "Go to end/beginning." -msgstr "Mene rivin alkuun/loppuun." +msgid "Float split" +msgstr "Kelluta" -msgid "Skip one word forward/backward." -msgstr "Ohita yksi sana eteen/taaksepäin" +msgid "At left" +msgstr "Vasemmalla" -msgid "Delete next character." -msgstr "Poista seuraava merkki." +msgid "At right" +msgstr "Oikealla" -msgid "Delete previous character." -msgstr "Tuhoa edellinen merkki." +msgid "Above" +msgstr "Yläpuolella" -msgid "Delete one word forward/backward." -msgstr "Tuhoa yksi sana eteen/taakse." +msgid "Below" +msgstr "Alapuolella" -msgid "Delete to end of line." -msgstr "Tuhoa merkit rivin loppuun saakka." +# +msgid "At root" +msgstr "Juuressa" -msgid "Delete the whole line." -msgstr "Tuhoa koko rivi." +msgid "New tiling" +msgstr "Uusi laatoitus" -msgid "Transpose characters." -msgstr "Transponoi merkit." +msgid "Close the menu." +msgstr "Sulje valikko." # -msgid "Select next/previous (matching) history entry." -msgstr "Näytä seuraava/edellinen vastaus muistista." +# +msgid "Activate current menu entry." +msgstr "Suorita valinta." -msgid "Paste from the clipboard." -msgstr "Liimaa teksti leikelaudalta." +msgid "Select next/previous menu entry." +msgstr "Siirry seuraavaan/edelliseen valintaan." -# -msgid "Set mark/begin selection." -msgstr "Aloita tekstin valinta." +msgid "Clear the menu's typeahead find buffer." +msgstr "Tyhjää valikon hakupuskuri." -# -msgid "Cut selection." -msgstr "Leikkaa valittu teksti." +msgid "Toggle floating dock." +msgstr "Näytä/piiloita kelluva laituri (dock)." -# -msgid "Copy selection." -msgstr "Kopioi valittu teksti." +msgid "Pos-TL" +msgstr "Paikka: ylävasen" -# -msgid "Clear mark/cancel selection." -msgstr "Lopeta tekstin valinta." +msgid "Pos-TR" +msgstr "Paikka: yläoikea" -msgid "Try to complete the entered text or cycle through completions." -msgstr "Yritä täydentää syötetty teksti tai selaa täydennyksiä." +msgid "Pos-BL" +msgstr "Paikka: alavasen" -msgid "Complete from history" -msgstr "Täydennä historiasta" +msgid "Pos-BR" +msgstr "Paikka: alaoikea" -msgid "Close the query and execute bound action." -msgstr "Sulje kysely ja suorita sidottu toiminta." +msgid "Grow-L" +msgstr "Kasvu: vasemmalle" -msgid "Close the query/message box, not executing bound actions." -msgstr "Sulje kysely/viesti suorittamatta sidottuja toimintoja." +msgid "Grow-R" +msgstr "Kasvu: oikealle" -msgid "Scroll the message or completions up/down." -msgstr "Vieritä viestiä tai täydennyksiä ylös/alas." +msgid "Grow-U" +msgstr "Kasvu: ylös" + +msgid "Grow-D" +msgstr "Kasvu: alas" msgid "press" msgstr "painallus" @@ -1592,6 +1585,71 @@ msgstr "" msgid "%s %s at %s" msgstr "%s %s osassa %s" +#~ msgid "Tag current object within the frame." +#~ msgstr "Merkitse kehyksen tällä hetkellä näyttämä kappale." + +#~ msgid "Xinerama sanity check failed; overlapping screens detected." +#~ msgstr "Xinerama-tiedon järkevyystarkastus havaitsi päällekkäisiä ruutuja." + +#~ msgid "Xinerama sanity check failed; zero size detected." +#~ msgstr "Xinerama-tiedon järkevyystarkastus havaitsi päällekkäisiä ruutuja." + +#~ msgid "" +#~ "Don't know how to get Xinerama information for multiple X root windows." +#~ msgstr "Xinerama-tietoa ei osata käyttää usealle juuri-ikkunalle." + +#~ msgid "Error retrieving Xinerama information." +#~ msgstr "Xinerama-tietoja ei saatu." + +#~ msgid "Unable to setup Xinerama screen %d." +#~ msgstr "Xinerama-ruudun %d hallittavaksi saattaminen epäonnistui." + +#~ msgid "Unable to setup X screen %d." +#~ msgstr "X-ruudun %d hallittavaksi saattaminen epäonnistui." + +# +#~ msgid "Refusing to destroy - not empty." +#~ msgstr "Tuhoamisesta kieltäydytään - ei tyhjä." + +# +#~ msgid "Workspace not empty - refusing to destroy." +#~ msgstr "Työpöytää ei voida tuhota, koska se ei ole tyhjä." + +#~ msgid "Nil frame." +#~ msgstr "Kehys on asettamatta." + +#~ msgid "The frame is not managed by the workspace." +#~ msgstr "Kehys ei ole tämän työpöydän hallinnoima." + +#~ msgid "Already detached" +#~ msgstr "Irroitettu jo" + +#~ msgid "Use Xinerama screen information (default: 1/yes)" +#~ msgstr "Hyödynnä Xineramaa (oletus: 1/kyllä)" + +#~ msgid "Ignored: not compiled with Xinerama support" +#~ msgstr "Jätetään huomiotta: ohjelmaa ei ole käännetty Xinerama-tuella" + +#~ msgid "Invalid parameter to -xinerama." +#~ msgstr "Virheellinen parametri -xinerama:lle" + +#~ msgid "Use Xinerama screen information (default: 0/no)" +#~ msgstr "Hyödynnä Xineramaa (oletus: 0/ei)" + +#~ msgid "Detach window from tiled frame" +#~ msgstr "Irroita ikkuna laatoitetusta kehyksestä" + +# +#~ msgid "New workspace" +#~ msgstr "Uusi työpöytä" + +#~ msgid "New empty workspace" +#~ msgstr "Uusi tyhjä työpöytä" + +# +#~ msgid "Close workspace" +#~ msgstr "Sulje työpöytä" + #~ msgid "Could not find a complete workspace class. Please load some modules." #~ msgstr "" #~ "Yhtäkään täydellistä työpöytäluokkaa ei löydy. Ole hyvä ja lataa joitakin " @@ -1678,8 +1736,8 @@ msgstr "%s %s osassa %s" #~ msgid "Restart PWM" #~ msgstr "Käynnistä PWM" -#~ msgid "Refresh list" -#~ msgstr "Virkistä lista" +msgid "Refresh list" +msgstr "Virkistä lista" #~ msgid "Unable to create workspace: no screen." #~ msgstr "Ei voida luoda työpöytää: ei ruutua." diff --git a/po/ru.po b/po/ru.po deleted file mode 100644 index 01d0a08..0000000 --- a/po/ru.po +++ /dev/null @@ -1,1637 +0,0 @@ -# translation of ru.po to RUSSIAN -# # -# This file is distributed under the same license as the Ion3 package. -# Vassily Leushin , 2006. -# -msgid "" -msgstr "" -"Project-Id-Version: ru\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2004-10-11 18:33+0300\n" -"PO-Revision-Date: 2006-02-01 19:55+0300\n" -"Last-Translator: Vassily Leushin \n" -"Language-Team: RUSSIAN \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=KOI8-R\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Russian\n" -"X-Poedit-Country: RUSSIAN FEDERATION\n" -"X-Generator: KBabel 1.10.1\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: ../ioncore/conf-bindings.c:96 -msgid "Insane key combination." -msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ËÏÍÂÉÎÁÃÉÑ ËÌÁ×ÉÛ." - -#: ../ioncore/conf-bindings.c:100 -msgid "Could not convert keysym to keycode." -msgstr "îÅ ÍÏÇÕ ÐÅÒÅ×ÅÓÔÉ keysym × keycode" - -#: ../ioncore/conf-bindings.c:111 -#, c-format -msgid "Unknown button \"%s\"." -msgstr "îÅÉÚ×ÅÓÔÎÁÑ ËÎÏÐËÁ \"%s\" " - -#: ../ioncore/conf-bindings.c:116 -msgid "Insane button combination." -msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ËÏÍÂÉÎÁÃÉÑ ËÎÏÐÏË" - -#: ../ioncore/conf-bindings.c:123 -#: ../ioncore/conf-bindings.c:130 -msgid "Insane modifier combination." -msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ËÏÍÂÉÎÁÃÉÑ ÍÏÄÉÆÉËÁÔÏÒÏ×" - -#: ../ioncore/conf-bindings.c:168 -#, c-format -msgid "Can not wait on modifiers when no modifiers set in \"%s\"." -msgstr "ïÖÉÄÁÎÉÅ ÍÏÄÉÆÉËÁÔÏÒÏ× ÎÅ×ÏÚÍÏÖÎÏ, ÅÓÌÉ ÏÎÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÙ × \"%s\" " - -#: ../ioncore/conf-bindings.c:186 -#, c-format -msgid "Unable to add binding %s." -msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÐÒÉ×ÑÚËÕ %s." - -#: ../ioncore/conf-bindings.c:191 -#, c-format -msgid "Unable to remove binding %s." -msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÐÒÉ×ÑÚËÕ %s." - -#: ../ioncore/conf-bindings.c:230 -#, c-format -msgid "Unable to add submap for binding %s." -msgstr "" - -# -#: ../ioncore/conf-bindings.c:260 -msgid "Binding type not set." -msgstr "ôÉÐ ÐÒÉ×ÑÚËÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ" - -#: ../ioncore/conf-bindings.c:270 -#, c-format -msgid "Unknown binding type \"%s\"." -msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÐÒÉ×ÑÚËÉ \"%s\"." - -#: ../ioncore/conf-bindings.c:291 -#, c-format -msgid "Unknown area \"%s\" for binding %s." -msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÂÌÁÓÔØ \"%s\" ÄÌÑ ÐÒÉ×ÑÚËÉ %s." - -#: ../ioncore/conf-bindings.c:332 -#, c-format -msgid "Unable to get bindmap entry %d." -msgstr "" - -#: ../ioncore/conf-bindings.c:374 -msgid "Unable to convert keysym to string." -msgstr "îÅ ÍÏÇÕ ÐÅÒÅ×ÅÓÔÉ keysym × ÓÔÒÏËÕ." - -#: ../ioncore/conf-bindings.c:388 -msgid "Unable to convert button to string." -msgstr "îÅ ÍÏÇÕ ÐÅÒÅ×ÅÓÔÉ ËÎÏÐËÕ × ÓÔÒÏËÕ." - -# -#: ../ioncore/event.c:78 -msgid "Time request from X server failed." -msgstr "îÅÕÄÁÞÎÙÊ ÚÁÐÒÏÓ ×ÒÅÍÅÎÉ ÏÔ X ÓÅÒ×ÅÒÁ" - -# -#: ../ioncore/exec.c:101 -msgid "Could not find a root window." -msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ËÏÒÎÅ×ÏÅ ÏËÎÏ." - -#: ../ioncore/exec.c:134 -msgid "reading a pipe" -msgstr "ÞÔÅÎÉÅ ÉÚ ËÁÎÁÌÁ" - -# -#: ../ioncore/exec.c:296 -msgid "Not saving state: running under session manager." -msgstr "óÏÓÔÏÑÎÉÅ ÎÅ ÓÏÈÒÁÎÅÎÏ: ÒÁÂÏÔÁ ÐÏÄ ÍÅÎÅÄÖÅÒÏÍ ÓÅÓÓÉÊ." - -#: ../ioncore/strings.c:107 -#: ../ioncore/strings.c:143 -msgid "Invalid multibyte string." -msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ÍÎÏÇÏÂÁÊÔÎÁÑ ÓÔÒÏËÁ" - -#: ../ioncore/strings.c:234 -#, c-format -msgid "Error compiling regular expression: %s" -msgstr "ïÛÉÂËÁ ËÏÍÐÉÌÑÃÉÉ ÒÅÇ. ×ÙÒÁÖÅÎÉÑ: %s" - -#: ../ioncore/modules.c:158 -msgid "Invalid module name." -msgstr "îÅÐÒÁ×ÉÌØÎÏÅ ÉÍÑ ÍÏÄÕÌÑ." - -# -#: ../ioncore/modules.c:170 -msgid "The module is already loaded." -msgstr "äÁÎÎÙÊ ÍÏÄÕÌØ ÕÖÅ ÚÁÇÒÕÖÅÎ." - -#: ../ioncore/modules.c:185 -msgid "Module version information not found or version mismatch. Refusing to use." -msgstr "" -"éÎÆÏÒÍÁÃÉÑ Ï ×ÅÒÓÉÉ ÍÏÄÕÌÑ ÎÅ ÎÁÊÄÅÎÁ, ÉÌÉ ÎÅÓÏÏÔ×ÅÔÓÔ×ÉÅ ×ÅÒÓÉÊ " -"ïÔËÁÚ × ÉÓÐÏÌØÚÏ×ÁÎÉÉ." - -#: ../ioncore/modules.c:196 -#, c-format -msgid "Unable to initialise module %s." -msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍÏÄÕÌØ %s ." - -#: ../ioncore/modules.c:220 -#: ../../libextl/readconfig.c:368 -#, c-format -msgid "Unable to find '%s' on search path." -msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ '%s' × ÐÕÔÉ ÐÏÉÓËÁ." - -#: ../ioncore/modules.c:291 -msgid "Unknown module." -msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÍÏÄÕÌØ." - -#: ../ioncore/modules.c:299 -msgid "Unable to initialise module." -msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍÏÄÕÌØ." - -#: ../ioncore/modules.c:344 -msgid "No module to load given." -msgstr "îÅ ÕËÁÚÁÎ ÍÏÄÕÌØ ÄÌÑ ÚÁÇÒÕÚËÉ." - -#: ../ioncore/screen.c:301 -msgid "act: " -msgstr "act: " - -#: ../ioncore/screen.c:490 -msgid "Invalid offset." -msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÏÔÓÔÕÐ." - -#: ../ioncore/screen.c:535 -msgid "Could not find a complete workspace class. Please load some modules." -msgstr "" -"îÅ ÍÏÇÕ ÎÁÊÔÉ ËÌÁÓÓ ÐÏÌÎÏÇÏ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ. ðÏÖÁÌÕÊÓÔÁ " -"ÚÁÇÒÕÚÉÔÅ ËÁËÉÅ-ÎÉÂÕÄØ ÍÏÄÕÌÉ." - -#: ../ioncore/screen.c:545 -#, c-format -msgid "Unable to create a workspace on screen %d." -msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÒÁÂ. ÐÒÏÓÔÒÁÎÓÔ×Ï ÎÁ ÜËÒÁÎÅ %d ." - -#: ../ioncore/signal.c:291 -#, c-format -msgid "Caught fatal signal %d. Dying without deinit." -msgstr "ðÒÉÎÑÔ ÆÁÔÁÌØÎÙÊ ÓÉÇÎÁÌ %d. õÍÉÒÁÀ ÂÅÚ deinit'Á." - -#: ../ioncore/signal.c:300 -#, c-format -msgid "Caught signal %d. Dying." -msgstr "ðÏÌÕÞÅÎ ÓÉÇÎÁÌ %d. õÍÉÒÁÀ." - -#: ../ioncore/sizehint.c:150 -msgid "Invalid client-supplied width/height increment." -msgstr "ðÏÌÕÞÅÎ ÎÅÐÒÁ×ÉÌØÎÙÊ ÉÎËÒÅÍÅÎÔ ÛÉÒÉÎÙ/×ÙÓÏÔÙ ÏÔ ËÌÉÅÎÔÁ." - -#: ../ioncore/sizehint.c:158 -msgid "Invalid client-supplied aspect-ratio." -msgstr "ðÏÌÕÞÅÎÙ ÎÅÐÒÁ×ÉÌØÎÙÅ ÐÒÏÐÏÒÃÉÉ ÏÔ ËÌÉÅÎÔÁ." - -#: ../ioncore/ioncore.c:66 -msgid "" -"This program is free software; you can redistribute it and/or\n" -"modify it under the terms of the GNU Lesser General Public\n" -"License as published by the Free Software Foundation; either\n" -"version 2.1 of the License, or (at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" -"Lesser General Public License for more details.\n" -msgstr "" - -#: ../ioncore/ioncore.c:385 -#, c-format -msgid "Could not connect to X display '%s'" -msgstr "îÅ ÍÏÇÕ ÓÏÅÄÉÎÉÔØÓÑ Ó X ÄÉÓÐÌÅÅÍ '%s'" - -#: ../ioncore/ioncore.c:438 -msgid "Could not find a screen to manage." -msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÜËÒÁÎ ÄÌÑ ÕÐÒÁ×ÌÅÎÉÑ." - -#: ../ioncore/xic.c:43 -msgid "Failed to open input method." -msgstr "íÅÔÏÄ ××ÏÄÁ ÎÅ ÏÔËÒÙÔ." - -#: ../ioncore/xic.c:48 -msgid "Input method doesn't support any style." -msgstr "íÅÔÏÄ ××ÏÄÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÓÔÉÌÉ" - -#: ../ioncore/xic.c:63 -msgid "input method doesn't support my preedit type." -msgstr "íÅÔÏÄ ××ÏÄÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÍÏÊ ÔÉÐ preedit'Á. " - -#: ../ioncore/xic.c:91 -msgid "Failed to create input context." -msgstr "ëÏÎÔÅËÓÔ ××ÏÄÁ ÎÅ ÓÏÚÄÁÎ." - -#: ../ioncore/clientwin.c:376 -#, c-format -msgid "The transient_for hint for \"%s\" points to itself." -msgstr "èÉÎÔ transient_for ÄÌÑ \"%s\" ÕËÁÚÙ×ÁÅÔ ÎÁ ÓÁÍÏÇÏ ÓÅÂÑ." - -#: ../ioncore/clientwin.c:380 -#, c-format -msgid "Client window \"%s\" has broken transient_for hint. (\"Extended WM hints\" multi-parent brain damage?)" -msgstr "" - -#: ../ioncore/clientwin.c:385 -#, c-format -msgid "The transient_for window for \"%s\" is not on the same screen." -msgstr "ïËÎÏ transient_for ÄÌÑ \"%s\" ÎÅ ÎÁ ÔÏÍ ÖÅ ÜËÒÁÎÅ." - -#: ../ioncore/clientwin.c:405 -#: ../ioncore/clientwin.c:492 -#: ../ioncore/clientwin.c:1554 -#, c-format -msgid "Window %#x disappeared." -msgstr "ïËÎÏ %#x ÉÓÞÅÚÌÏ." - -#: ../ioncore/clientwin.c:512 -msgid "Unable to find a matching root window!" -msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ ËÏÒÎÅ×ÏÅ ÏËÎÏ!" - -#: ../ioncore/clientwin.c:547 -#, c-format -msgid "Unable to manage client window %#x." -msgstr "îÅ ÍÏÇÕ ÕÐÒÁ×ÌÑÔØ ËÌÉÅÎÔÓËÉÍ ÏËÎÏÍ %#x." - -#: ../ioncore/clientwin.c:597 -msgid "Changes is WM_TRANSIENT_FOR property are unsupported." -msgstr "" - -# -#: ../ioncore/clientwin.c:874 -msgid "Client does not support the WM_DELETE protocol." -msgstr "ëÌÉÅÎÔ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÐÒÏÔÏËÏÌ WM_DELETE. " - -#: ../ioncore/clientwin.c:1103 -#: ../mod_ionws/ionws.c:76 -#: ../mod_floatws/floatws.c:103 -#, c-format -msgid "Error reparenting %s." -msgstr "ïÛÉÂËÁ ÐÅÒÅÎÁÚÎÁÞÅÎÉÑ ÒÏÄÉÔÅÌÑ %s." - -#: ../ioncore/clientwin.c:1560 -msgid "Saved client window does not want to be managed." -msgstr "óÏÈÒÁÎÅÎÎÏÅ ÏËÎÏ ËÌÉÅÎÔÁ ÎÅ ÈÏÞÅÔ ÂÙÔØ ÐÏÄ ÕÐÒÁ×ÌÅÎÉÅÍ." - -# -#: ../ioncore/colormap.c:96 -msgid "Unable to store colourmap watch info." -msgstr "" - -#: ../ioncore/region.c:36 -msgid "Creating region with negative width or height!" -msgstr "óÏÚÄÁÎÉÅ ÒÅÇÉÏÎÁ Ó ÏÔÒÉÃÁÔÅÌØÎÏÊ ×ÙÓÏÔÏÊ ÉÌÉ ÛÉÒÉÎÏÊ!" - -#: ../ioncore/region.c:84 -#, c-format -msgid "Destroying object \"%s\" with client windows as children." -msgstr "õÄÁÌÅÎÉÅ ÏÂßÅËÔÁ \"%s\" Ó ÏËÎÁÍÉ ËÌÉÅÎÔÁ ËÁË ÐÏÔÏÍËÁÍÉ." - -#: ../ioncore/attach.c:80 -msgid "Unable to reparent." -msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÎÁÚÎÁÞÉÔØ ÒÏÄÉÔÅÌÑ." - -#: ../ioncore/attach.c:112 -#: ../ioncore/frame-pointer.c:295 -#, c-format -msgid "Attempt to make region %s manage its ancestor %s." -msgstr "ðÏÐÙÔËÁ ÕÐÒÁ×ÌÅÎÉÑ ÒÅÇÉÏÎÏÍ %s ÅÇÏ ÐÒÅÄËÏÍ %s." - -# -#: ../ioncore/defer.c:93 -msgid "Object destroyed while deferred actions are still pending." -msgstr "ïÂßÅËÔ ÕÄÁÌÅÎ ÐÒÉ ÏÔÌÏÖÅÎÎÏÍ ÄÅÊÓÔ×ÉÉ." - -#: ../ioncore/manage.c:90 -msgid "Unable to find a screen for a new client window." -msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÜËÒÁÎ ÄÌÑ ÎÏ×ÏÇÏ ËÌÉÅÎÔÓËÏÇÏ ÏËÎÁ." - -#: ../ioncore/manage.c:187 -#, c-format -msgid "Unable to rescue \"%s\"." -msgstr "îÅ ÍÏÇÕ ÓÐÁÓÔÉ \"%s\"." - -#: ../ioncore/rootwin.c:222 -#, c-format -msgid "Unable to redirect root window events for screen %d." -msgstr "îÅ ÍÏÇÕ ÐÅÒÅÎÁÐÒÁ×ÉÔØ ÓÏÂÙÔÉÑ ËÏÒÎÅ×ÏÇÏ ÏËÎÁ ÄÌÑ ÜËÒÁÎÁ %d." - -#: ../ioncore/rootwin.c:316 -msgid "Xinerama sanity check failed; overlapping screens detected." -msgstr "ðÒÏ×ÅÒËÁ Xinerama ÎÅ ÕÄÁÌÁÓØ; ÏÂÎÁÒÕÖÅÎÏ ÎÁÌÏÖÅÎÉÅ ÜËÒÁÎÏ×." - -#: ../ioncore/rootwin.c:342 -msgid "Don't know how to get Xinerama information for multiple X root windows." -msgstr "îÅ ÚÎÁÀ ËÁË ÐÏÌÕÞÉÔØ ÉÎÆÏÒÍÁÃÉÀ ÐÏ ÍÎÏÖÅÓÔ×ÅÎÎÙÍ ËÏÒÎÅ×ÙÍ ÏËÎÁÍ × Xinerama." - -#: ../ioncore/rootwin.c:378 -#, c-format -msgid "Unable to setup Xinerama screen %d." -msgstr "îÅ ÍÏÇÕ ÎÁÓÔÒÏÉÔØ ÜËÒÁÎ Xinerama %d." - -#: ../ioncore/rootwin.c:389 -#, c-format -msgid "Unable to setup X screen %d." -msgstr "îÅ ÍÏÇÕ ÎÁÓÔÒÏÉÔØ ÜËÒÁÎ X %d." - -#: ../ioncore/names.c:90 -#, c-format -msgid "Corrupt instance number %s." -msgstr "îÅ×ÅÒÎÙÊ ÎÏÍÅÒ ÜËÚÅÍÐÌÑÒÁ %s." - -#: ../ioncore/saveload.c:55 -#, c-format -msgid "Unknown class \"%s\", cannot create region." -msgstr "îÅÉÚ×ÅÓÔÎÙÊ ËÌÁÓÓ \"%s\", ÎÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÒÅÇÉÏÎ." - -#: ../ioncore/saveload.c:124 -#, c-format -msgid "" -"There were errors loading layout. Backing up current layout savefile as\n" -"%s.\n" -"If you are _not_ running under a session manager and wish to restore your\n" -"old layout, copy this backup file over the layout savefile found in the\n" -"same directory while Ion is not running and after having fixed your other\n" -"configuration files that are causing this problem. (Maybe a missing\n" -"module?)\n" -msgstr "" - -#: ../ioncore/saveload.c:167 -msgid "Unable to get file for layout backup." -msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÒÅÚÅÒ×ÎÙÊ ÆÁÊÌ ÒÁÓÐÏÌÏÖÅÎÉÑ." - -#: ../ioncore/saveload.c:171 -#, c-format -msgid "Backup file %s already exists." -msgstr "ÒÅÚÅÒ×ÎÙÊ ÆÁÊÌ %s ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ." - -#: ../ioncore/saveload.c:177 -msgid "Failed backup." -msgstr "òÅÚÅÒ×ÎÁÑ ËÏÐÉÑ ÎÅ ÓÏÚÄÁÎÁ." - -# -#: ../ioncore/saveload.c:182 -msgid "Unable to initialise layout on any screen." -msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÒÁÓÐÏÌÏÖÅÎÉÅ ÎÉ ÎÁ ÏÄÎÏÍ ÜËÒÁÎÅ." - -#: ../ioncore/saveload.c:202 -#, c-format -msgid "Unable to get configuration for screen %d." -msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ËÏÎÆÉÇÕÒÁÃÉÀ ÜËÒÁÎÁ %d." - -#: ../ioncore/saveload.c:215 -msgid "Unable to save layout." -msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÒÁÓÐÏÌÏÖÅÎÉÅ." - -#: ../ioncore/frame.c:122 -msgid "Frame is not empty." -msgstr "æÒÅÊÍ ÎÅ ÐÕÓÔ." - -#: ../ioncore/conf.c:134 -msgid "User directory can not be set." -msgstr "äÉÒÅËÔÏÒÉÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ." - -#: ../ioncore/conf.c:197 -msgid "Some bindmaps were empty, loading ioncore-efbb." -msgstr "" - -#: ../ioncore/fullscreen.c:100 -msgid "Failed to enter full screen mode." -msgstr "ïÛÉÂËÁ ÐÏÌÎÏÜËÒÁÎÎÏÇÏ ÒÅÖÉÍÁ." - -#: ../ioncore/fullscreen.c:158 -msgid "WClientWin failed to return from full screen mode; remaining manager or parent from previous location refused to manage us." -msgstr "" - -# -#: ../ioncore/mplex.c:1247 -msgid "Invalid position setting." -msgstr "îÅÐÒÁ×ÉÌØÎÙÅ ÕÓÔÁÎÏ×ËÉ ÍÅÓÔÏÐÏÌÏÖÅÎÉÑ" - -# -#: ../ioncore/mplex.c:1280 -msgid "Invalid action setting." -msgstr "îÅÐÒÁ×ÉÌØÎÙÅ ÕÓÔÁÎÏ×ËÉ ÄÅÊÓÔ×ÉÑ." - -#: ../ioncore/gr.c:119 -#, c-format -msgid "Drawing engine %s is not registered!" -msgstr "ä×ÉÖÏË ÏÔÒÉÓÏ×ËÉ %s ÎÅ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎ." - -#: ../ioncore/gr.c:138 -#, c-format -msgid "Unable to find brush for style '%s'." -msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ËÉÓÔØ ÄÌÑ ÓÔÉÌÑ '%s'." - -#: ../ioncore/gr.c:409 -msgid "No drawing engines loaded, trying \"de\"." -msgstr "îÉ ÏÄÎÏ Ä×ÉÖËÁ ÏÔÒÉÓÏ×ËÉ ÎÅ ÚÁÇÒÕÖÅÎÏ, ÐÒÏÂÕÀ \"ru\"." - -# -#: ../ioncore/hooks.c:219 -msgid "No function given." -msgstr "îÅÔ ÆÕÎËÃÉÉ." - -#: ../mod_ionws/ionws.c:311 -msgid "Unable to create a node for status display." -msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÕÚÅÌ ÄÌÑ ÐÏËÁÚÁ ÓÔÁÔÕÓÁ." - -#: ../mod_ionws/ionws.c:323 -msgid "Unable to create new split for status display." -msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÎÏ×ÏÅ ÒÁÚÄÅÌÅÎÉÅ ÄÌÑ ÐÏËÁÚÁ ÓÔÁÔÕÓÁ." - -# -#: ../mod_ionws/ionws.c:742 -msgid "Frame not managed by the workspace." -msgstr "æÒÅÊÍ ÎÅ ÕÐÒÁ×ÌÑÅÔÓÑ ÒÁÂÏÞÉÍ ÓÔÏÌÏÍ." - -# -#: ../mod_ionws/ionws.c:747 -msgid "Invalid direction parameter." -msgstr "îÅ×ÅÒÎÙÊ ÐÁÒÁÍÅÔÒ ÎÁÐÒÁ×ÌÅÎÉÑ." - -# -#: ../mod_ionws/ionws.c:765 -msgid "Unable to split." -msgstr "îÅ ÍÏÇÕ ÒÁÚÄÅÌÉÔØ." - -#: ../mod_ionws/ionws.c:803 -msgid "Nil frame." -msgstr "îÕÌÅ×ÏÊ ÆÒÅÊÍ" - -#: ../mod_ionws/ionws.c:807 -msgid "The frame is not managed by the workspace." -msgstr "äÁÎÎÙÊ ÆÒÅÊÍ ÎÅ ÕÐÒÁ×ÌÑÅÔÓÑ ÒÁÂÏÞÉÍ ÓÔÏÌÏÍ." - -#: ../mod_ionws/ionws.c:812 -msgid "Frame may not be destroyed." -msgstr "æÒÅÊÍ ÎÅ ÕÄÁÌÑÅÔÓÑ" - -#: ../mod_ionws/ionws.c:817 -msgid "Failed to rescue managed objects." -msgstr "" - -#: ../mod_ionws/ionws.c:1028 -msgid "Nil parameter." -msgstr "îÕÌÅ×ÏÊ ÐÁÒÁÍÅÔÒ." - -#: ../mod_ionws/ionws.c:1033 -msgid "Manager doesn't match." -msgstr "íÅÎÅÄÖÅÒ ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ." - -# -#: ../mod_ionws/ionws.c:1055 -msgid "Could not get split tree." -msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÄÅÒÅ×Ï ÒÁÚÄÅÌÅÎÉÊ." - -#: ../mod_ionws/ionws.c:1076 -msgid "Workspace already has a status display node." -msgstr "òÁÂÏÞÉÊ ÓÔÏÌ ÕÖÅ ÉÍÅÅÔ ÕÚÅÌ ÐÏËÁÚÁ ÓÔÁÔÕÓÁ." - -# -#: ../mod_ionws/ionws.c:1126 -msgid "Missing region parameters." -msgstr "ïÔÓÕÔÓÔ×ÕÀÔ ÐÁÒÁÍÅÔÒÙ ÒÅÇÉÏÎÁ." - -#: ../mod_ionws/ionws.c:1162 -#: ../mod_ionws/splitfloat.c:783 -msgid "Invalid direction." -msgstr "îÅÐÒÁ×ÉÌØÎÏÅ ÎÁÐÒÁ×ÌÅÎÉÅ" - -# -#: ../mod_ionws/ionws.c:1236 -msgid "No split type given." -msgstr "îÅÔ ÕËÁÚÁÎ ÔÉÐ ÒÁÚÄÅÌÅÎÉÑ" - -#: ../mod_ionws/ionws.c:1249 -msgid "Unknown split type." -msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÒÁÚÄÅÌÅÎÉÑ" - -# -# -#: ../mod_ionws/ionws.c:1289 -msgid "The workspace is empty." -msgstr "òÁÂÏÞÉÊ ÓÔÏÌ ÐÕÓÔ." - -#: ../mod_ionws/placement.c:97 -#: ../mod_panews/placement.c:299 -#, c-format -msgid "Ooops... could not find a region to attach client window to on workspace %s." -msgstr "ïÊ... ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÒÅÇÉÏÎ ÄÌÑ ÐÒÉÓÏÅÄÉÎÅÎÉÑ ÏËÎÁ ËÌÉÅÎÔÁ ÎÁ ÒÁÂÏÞÅÍ ÓÔÏÌÅ %s." - -#: ../mod_ionws/split.c:906 -msgid "REGION_RQGEOM_TRYONLY unsupported for status display." -msgstr "REGION_RQGEOM_TRYONLY ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ ÄÉÓÐÌÅÑ ÓÔÁÔÕÓÁ." - -# -#: ../mod_ionws/split.c:979 -msgid "Invalid node." -msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÕÚÅÌ." - -# -#: ../mod_ionws/split.c:1044 -msgid "Splitting the status display is not allowed." -msgstr "òÁÚÄÅÌÅÎÉÅ ÄÉÓÐÌÅÑ ÓÔÁÔÕÓÁ ÎÅ ÄÏÐÕÓËÁÅÔÓÑ." - -#: ../mod_ionws/split.c:1072 -#: ../mod_ionws/splitfloat.c:896 -msgid "Unable to split: not enough free space." -msgstr "îÅ ÍÏÇÕ ÒÁÚÄÅÌÉÔØ: ÎÅÄÏÓÔÁÔÏÞÎÏ Ó×ÏÂÏÄÎÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á." - -# -#: ../mod_ionws/split.c:1558 -msgid "Unable to move the status display out of way of transpose." -msgstr "" - -#: ../mod_ionws/split.c:1722 -#, c-format -msgid "Unable to get configuration for %s." -msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÎÁÓÔÒÏÊËÉ ÄÌÑ \"%s\"." - -#: ../mod_ionws/split-stdisp.c:591 -#: ../mod_ionws/split-stdisp.c:616 -msgid "Status display in bad split configuration." -msgstr "" - -#: ../mod_ionws/split-stdisp.c:657 -msgid "Status display badly located in split tree." -msgstr "äÉÓÐÌÅÊ ÓÔÁÔÕÓÁ ÐÌÏÈÏ ÒÁÚÍÅÝÅÎ × ÄÅÒÅ×Å ÒÁÚÄÅÌÅÎÉÊ." - -#: ../mod_floatws/floatws.c:351 -#: ../mod_panews/panews.c:259 -msgid "Workspace may not be destroyed." -msgstr "òÁÂÏÞÉÊ ÓÔÏÌ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÕÄÁÌÅÎ." - -#: ../mod_floatws/floatws.c:358 -msgid "Failed to rescue some client windows!" -msgstr "îÅËÏÔÏÒÙÅ ÏËÎÁ ËÌÉÅÎÔÏ× ÎÅ ÓÏÈÒÁÎÅÎÙ!" - -#: ../mod_floatws/floatws.c:370 -#: ../mod_panews/panews.c:254 -msgid "Refusing to close non-empty workspace." -msgstr "ïÔËÁÚ × ÚÁËÒÙÔÉÉ ÎÅ ÐÕÓÔÏÇÏ ÒÁÂ. ÐÒÏÓÔÒÁÎÓÔ×Á." - -# -#: ../mod_floatws/floatws.c:462 -msgid "Failure to create a new frame." -msgstr "îÏ×ÙÊ ÆÒÅÊÍ ÎÅ ÓÏÚÄÁÎ." - -# -#: ../mod_floatws/floatws.c:1037 -#: ../mod_floatws/floatws.c:1115 -msgid "Region not managed by the workspace." -msgstr "òÅÇÉÏÎ ÎÅ ÕÐÒÁ×ÌÑÅÔÓÑ ÒÁÂÏÞÉÍ ÓÔÏÌÏÍ." - -#: ../mod_floatws/floatws.c:1236 -msgid "No geometry specified." -msgstr "çÅÏÍÅÔÒÉÑ ÎÅ ÕËÁÚÁÎÁ." - -#: ../mod_floatws/placement.c:125 -#, c-format -msgid "Unknown placement method \"%s\"." -msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÍÅÔÏÄ ÒÁÚÍÅÝÅÎÉÑ \"%s\"." - -#: ../mod_panews/panews.c:193 -msgid "Unable to re-initialise workspace. Destroying." -msgstr "îÅ ÍÏÇÕ ÒÅÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÒÁÂÏÞÅÅ ÐÒÏÓÔÒÁÎÓÔ×Ï. õÄÁÌÅÎÉÅ." - -#: ../mod_panews/placement.c:104 -#: ../mod_panews/placement.c:108 -#: ../mod_panews/placement.c:175 -#: ../mod_panews/placement.c:180 -#, c-format -msgid "Malfunctioning placement hook; condition #%d." -msgstr "" - -#: ../mod_query/fwarn.c:34 -msgid "Error:\n" -msgstr "ïÛÉÂËÁ:\n" - -# -#: ../mod_menu/menu.c:490 -msgid "Empty menu." -msgstr "ðÕÓÔÏÅ ÍÅÎÀ." - -# -#: ../mod_sm/sm.c:110 -msgid "Failed to set session directory." -msgstr "äÉÒÅËÔÏÒÉÑ ÓÅÓÓÉÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ." - -#: ../mod_sm/sm_session.c:85 -msgid "Too many ICE connections." -msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÅÄÉÎÅÎÉÊ 'ICE'." - -#: ../mod_sm/sm_session.c:227 -msgid "Failed to save session state" -msgstr "óÏÓÔÏÑÎÉÅ ÓÅÓÓÉÉ ÎÅ ÓÏÈÒÁÎÉÌÏÓØ" - -#: ../mod_sm/sm_session.c:246 -msgid "Failed to request save-yourself-phase2 from session manager." -msgstr "" - -# -#: ../mod_sm/sm_session.c:295 -msgid "SESSION_MANAGER environment variable not set." -msgstr "ÐÅÒÅÍÅÎÎÁÑ ÏËÒÕÖÅÎÉÑ SESSION_MANAGER ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ." - -#: ../mod_sm/sm_session.c:300 -msgid "Session Manager: IceAddConnectionWatch failed." -msgstr "" - -# -#: ../mod_sm/sm_session.c:325 -msgid "Unable to connect to the session manager." -msgstr "îÅ ÍÏÇÕ ÓÏÅÄÉÎÉÔØÓÑ Ó ÍÅÎÅÄÖÅÒÏÍ ÓÅÓÓÉÊ." - -#: ../mod_sp/main.c:137 -#, c-format -msgid "Unable to create scratchpad for screen %d." -msgstr "" - -#: ../de/init.c:41 -#, c-format -msgid "Border attribute %s sanity check failed." -msgstr "" - -#: ../de/init.c:64 -#, c-format -msgid "Unknown border style \"%s\"." -msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÓÔÉÌØ ÂÏÒÄÀÒÁ \"%s\"." - -#: ../de/init.c:96 -#, c-format -msgid "Unable to allocate colour \"%s\"." -msgstr "îÅ ÍÏÇÕ ÒÁÚÍÅÓÔÉÔØ Ã×ÅÔ \"%s\"." - -#: ../de/init.c:160 -#, c-format -msgid "Corrupt substyle table %d." -msgstr "ðÏ×ÒÅÖÄÅÎÎÁÑ ÔÁÂÌÉÃÁ ÐÏÄÓÔÉÌÅÊ %d." - -#: ../de/init.c:193 -#, c-format -msgid "Unknown text alignment \"%s\"." -msgstr "îÅÉÚ×ÅÓÔÎÏÅ ×ÙÒÁ×ÎÉ×ÁÎÉÅ ÔÅËÓÔÁ \"%s\"." - -#: ../de/init.c:263 -#, c-format -msgid "'based_on' for %s points back to the style itself." -msgstr "'based_on' ÄÌÑ %s ÕËÁÚÙ×ÁÅÔ ÎÁ ÓÁÍ ÓÔÉÌØ." - -#: ../de/init.c:266 -#, c-format -msgid "Unknown base style \"%s\"." -msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÂÁÚÏ×ÙÊ ÓÔÉÌØ \"%s\"." - -#: ../de/font.c:47 -#, c-format -msgid "Fontset for font pattern '%s' implements context dependent drawing, which is unsupported. Expect clutter." -msgstr "" - -#: ../de/font.c:58 -#, c-format -msgid "Could not load font \"%s\", trying \"%s\"" -msgstr "îÅ ÍÏÇÕ ÚÁÇÒÕÚÉÔØ ÛÒÉÆÔ \"%s\", ÐÒÏÂÕÀ \"%s\"" - -#: ../de/style.c:315 -#, c-format -msgid "Style %s still in use [%d] but the module is being unloaded!" -msgstr "óÔÉÌØ %s ×ÓÅ ÅÝÅ ÉÓÐÏÌØÚÕÅÔÓÑ [%d] ÎÏ ÍÏÄÕÌØ ×ÙÇÒÕÖÁÅÔÓÑ!" - -#: ../ion/ion.c:41 -#: ../pwm/pwm.c:41 -msgid "X display to use" -msgstr "éÓÐÏÌØÚÏ×ÁÔØ X ÄÉÓÐÌÅÊ" - -#: ../ion/ion.c:44 -#: ../pwm/pwm.c:44 -msgid "Configuration file" -msgstr "æÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ" - -#: ../ion/ion.c:47 -#: ../pwm/pwm.c:47 -msgid "Add directory to search path" -msgstr "äÏÂÁ×ÉÔØ ÄÉÒÅËÔÏÒÉÀ Ë ÐÕÔÉ ÐÏÉÓËÁ" - -#: ../ion/ion.c:50 -#: ../pwm/pwm.c:50 -msgid "Manage default root window/non-Xinerama screen only" -msgstr "" - -#: ../ion/ion.c:54 -msgid "Use Xinerama screen information (default: 1/yes)" -msgstr "" - -#: ../ion/ion.c:57 -#: ../pwm/pwm.c:57 -msgid "Ignored: not compiled with Xinerama support" -msgstr "éÇÎÏÒÉÒÕÀ: ÓËÏÍÐÉÌÉÒÏ×ÁÎÏ ÂÅÚ ÐÏÄÄÅÒÖËÉ Xinerama" - -#: ../ion/ion.c:61 -#: ../pwm/pwm.c:61 -msgid "Name of session (affects savefiles)" -msgstr "" - -#: ../ion/ion.c:64 -#: ../pwm/pwm.c:64 -msgid "Session manager client ID" -msgstr "" - -#: ../ion/ion.c:67 -#: ../pwm/pwm.c:67 -msgid "Do not create startup error log and display it with xmessage." -msgstr "îÅ ÓÏÚÄÁ×ÁÔØ ÖÕÒÎÁÌ ÏÛÉÂÏË ÚÁÐÕÓËÁ, Á ÐÏËÁÚÙ×ÁÔØ ÅÇÏ Ó ÐÏÍÏÝØÀ xmessage." - -#: ../ion/ion.c:71 -#: ../pwm/pwm.c:71 -msgid "Show this help" -msgstr "ðÏËÁÚÁÔØ ÐÏÍÏÝØ" - -#: ../ion/ion.c:74 -#: ../pwm/pwm.c:74 -msgid "Show program version" -msgstr "ðÏËÁÚÁÔØ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ" - -#: ../ion/ion.c:77 -#: ../pwm/pwm.c:77 -msgid "Show about text" -msgstr "ðÏËÁÚÁÔØ 'ï ÐÒÏÇÒÁÍÍÅ...'" - -#: ../ion/ion.c:92 -msgid "Could not get user configuration file directory." -msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÄÉÒÅËÔÏÒÉÀ Ó ÆÁÊÌÁÍÉ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ÎÁÓÔÒÏÅË " - -#: ../ion/ion.c:106 -#, c-format -msgid "%s/welcome.txt" -msgstr "%s/welcome.ru.txt" - -#: ../ion/ion.c:139 -#: ../pwm/pwm.c:86 -#, c-format -msgid "" -"Usage: %s [options]\n" -"\n" -msgstr "" - -#: ../ion/ion.c:199 -#: ../pwm/pwm.c:149 -msgid "Invalid parameter to -xinerama." -msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÐÁÒÁÍÅÔÒ ÄÌÑ '-xinerama'." - -# -#: ../ion/ion.c:218 -#: ../pwm/pwm.c:168 -msgid "Invalid command line." -msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ËÏÍÁÎÄÎÁÑ ÓÔÒÏËÁ" - -#: ../ion/ion.c:239 -msgid "Ion startup error log:\n" -msgstr "öÕÒÎÁÌ ÏÛÉÂÏË ÚÁÐÕÓËÁ Ion:\n" - -#: ../ion/ion.c:249 -#: ../pwm/pwm.c:199 -msgid "Refusing to start due to encountered errors." -msgstr "÷ ÚÁÐÕÓËÅ ÏÔËÁÚÁÎÏ × ÓÉÌÕ ×ÏÚÎÉËÛÉÈ ÏÛÉÂÏË." - -#: ../pwm/pwm.c:54 -msgid "Use Xinerama screen information (default: 0/no)" -msgstr "" - -#: ../pwm/pwm.c:189 -msgid "PWM startup error log:\n" -msgstr "öÕÒÎÁÌ ÏÛÉÂÏË ÚÁÐÕÓËÁ PWM:\n" - -#: ../../libextl/readconfig.c:86 -msgid "$HOME not set" -msgstr "$HOME ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ" - -#: ../../libextl/readconfig.c:113 -msgid "User directory not set. Unable to set session directory." -msgstr "äÉÒÅËÔÏÒÉÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ. îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÄÉÒÅËÔÏÒÉÀ ÓÅÓÓÉÉ." - -#: ../../libextl/readconfig.c:247 -#, c-format -msgid "Falling back to %s." -msgstr "ïÔËÁÔ Ë %s." - -#: ../../libextl/readconfig.c:441 -#, c-format -msgid "Unable to create session directory \"%s\"." -msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÄÉÒÅËÔÏÒÉÀ ÓÅÓÓÉÉ \"%s\"." - -#: ../../libextl/luaextl.c:113 -msgid "Lua stack full." -msgstr "óÔÅË Lua ÐÏÌÏÎ." - -# -#: ../../libextl/luaextl.c:139 -msgid "Unknown Lua error." -msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ × Lua." - -#: ../../libextl/luaextl.c:456 -msgid "Stack trace:" -msgstr "ôÒÁÓÓÉÒÏ×ËÁ ÓÔÅËÁ:" - -#: ../../libextl/luaextl.c:463 -#, c-format -msgid "" -"\n" -"(Unable to get debug info for level %d)" -msgstr "" -"\n" -"(îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÄÌÑ ÕÒÏ×ÎÑ %d)" - -#: ../../libextl/luaextl.c:481 -msgid "" -"\n" -" [Skipping unnamed C functions.]" -msgstr "" - -#: ../../libextl/luaextl.c:532 -msgid "Internal error." -msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ." - -#: ../../libextl/luaextl.c:551 -msgid "Unable to initialize Lua." -msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ Lua." - -#: ../../libextl/luaextl.c:1277 -msgid "Too many return values. Use a C compiler that has va_copy to support more." -msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ×ÏÚ×ÒÁÝÁÅÍÙÈ ÚÎÁÞÅÎÉÊ. éÓÐÏÌØÚÕÊÔÅ ËÏÍÐÉÌÑÔÏÒ C Õ ËÏÔÏÒÏÇÏ ÅÓÔØ va_copy ÄÌÑ ÂÏÌØÛÅÊ ÐÏÄÄÅÒÖËÉ" - -#: ../../libextl/luaextl.c:1295 -#, c-format -msgid "Invalid return value (expected '%c', got lua type \"%s\")." -msgstr "îÅÄÏÐÕÓÔÉÍÏÅ ×ÏÚ×ÒÁÝÁÅÍÏÅ ÚÎÁÞÅÎÉÅ (ÏÖÉÄÁÌÏÓØ '%c', ÐÏÌÕÞÅÎ lua-ÔÉÐ \"%s\")." - -#: ../../libextl/luaextl.c:1330 -#: ../../libextl/luaextl.c:1594 -msgid "Stack full." -msgstr "óÔÅË ÐÏÌÏÎ." - -#: ../../libextl/luaextl.c:1570 -msgid "L1 call handler upvalues corrupt." -msgstr "" - -#: ../../libextl/luaextl.c:1575 -msgid "Called function has been unregistered." -msgstr "" - -#: ../../libextl/luaextl.c:1587 -#, c-format -msgid "Attempt to call an unsafe function \"%s\" in restricted mode." -msgstr "ðÏÐÙÔËÁ ×ÙÚÏ×Á ÎÅÂÅÚÏÐÁÓÎÏÊ ÆÕÎËÃÉÉ \"%s\" × ÏÇÒÁÎÉÞÅÎÎÏÍ ÒÅÖÉÍÅ. " - -#: ../../libextl/luaextl.c:1603 -#, c-format -msgid "Argument %d to %s is of invalid type. (Argument template is '%s', got lua type %s)." -msgstr "" - -#: ../../libextl/luaextl.c:1782 -#, c-format -msgid "Function '%s' has more parameters than the level 1 call handler can handle" -msgstr "" - -# -#: ../../libextl/luaextl.c:2199 -msgid "Maximal serialisation depth reached." -msgstr "äÏÓÔÉÇÎÕÔÁ ÍÁËÓÉÍÁÌØÎÁÑ ÇÌÕÂÉÎÁ ÓÅÒÉÁÌÉÚÁÃÉÉ." - -#: ../../libextl/luaextl.c:2220 -#, c-format -msgid "Unable to serialise type %s." -msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÅÒÉÁÌÉÚÉÒÏ×ÁÔØ ÔÉÐ %s." - -#: ../../libextl/luaextl.c:2251 -msgid "-- This file has been generated by Ion. Do not edit.\n" -msgstr "-- äÁÎÎÙÊ ÆÁÊÌ ÂÙÌ ÓÏÚÄÁÎ éÏÎÏÍ. îÅ ÒÅÄÁËÔÉÒÏ×ÁÔØ.\n" - -#: ../../libextl/misc.c:17 -#, c-format -msgid "Type checking failed in level 2 call handler for parameter %d (got %s, expected %s)." -msgstr "" - -#: ../etc/cfg_floatws.lua:34 -msgid "Lower the frame." -msgstr "ïÐÕÓÔÉÔØ ÆÒÅÊÍ" - -#: ../etc/cfg_bindings.lua:171 -msgid "Display frame context menu." -msgstr "ðÏËÁÚÁÔØ ËÏÎÔÅËÓÔÎÏÅ ÍÅÎÀ ÆÒÅÊÍÁ." - -# -#: ../etc/cfg_ionws.lua:44 -msgid "Flip at root" -msgstr "ðÅÒ×ÅÒÎÕÔØ × ËÏÒÎÅ×ÏÍ" - -# -#: ../etc/cfg_bindings.lua:43 -msgid "Go to n:th screen on multihead setup." -msgstr "" - -#: ../ext_statusbar/ext_statusbar.lua:308 -msgid "Failed to create statusbar." -msgstr "óÔÁÔÕÓÂÁÒ ÎÅ ÓÏÚÄÁÎ" - -#: ../pwm/cfg_pwm_menus.lua:13 -#: ../etc/cfg_menus.lua:10 -msgid "Help" -msgstr "ðÏÍÏÝØ" - -#: ../mod_query/mod_query.lua:566 -msgid "SSH to:" -msgstr "SSH to:" - -#: ../etc/cfg_menus.lua:28 -msgid "Restart" -msgstr "ðÅÒÅÚÁÐÕÓË" - -#: ../mod_menu/mod_menu.lua:231 -msgid "Cannot save selection." -msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ×ÙÄÅÌÅÎÉÅ" - -#: ../etc/cfg_bindings.lua:206 -msgid "End the resize mode." -msgstr "úÁ×ÅÒÛÉÔØ ÒÅÖÉÍ ÒÁÚÍÅÒÁ." - -# -# -#: ../etc/cfg_ionws.lua:48 -#: ../etc/cfg_ionws.lua:58 -msgid "Vertically" -msgstr "÷ÅÒÔÉËÁÌØÎÏ" - -#: ../ioncore/ioncore-bindings.lua:34 -msgid "Invalid guard %s." -msgstr "" - -#: ../etc/cfg_bindings.lua:109 -msgid "Query for Lua code to execute." -msgstr "ïÞÅÒÅÄØ ÎÁ ×ÙÐÏÌÎÅÎÉÅ ËÏÄÁ Lua." - -# -#: ../etc/cfg_bindings.lua:47 -msgid "Go to next/previous screen on multihead setup." -msgstr " " - -#: ../mod_query/mod_query.lua:344 -msgid "none" -msgstr "ÎÉÞÅÇÏ" - -#: ../etc/cfg_bindings.lua:219 -msgid "Shrink in specified direction." -msgstr "õÍÅÎØÛÉÔØ × ÕËÁÚÁÎÎÏÍ ÎÁÐÒÁ×ÌÅÎÉÉ" - -#: ../etc/cfg_bindings.lua:160 -msgid "Maximize the frame horizontally/vertically." -msgstr "òÁÚ×ÅÒÎÕÔØ ÆÒÅÊÍ ÐÏ ×ÅÒÔÉËÁÌÉ/ÇÏÒÉÚÏÎÔÁÌÉ." - -#: ../etc/cfg_bindings.lua:156 -msgid "Move current object within the frame left/right." -msgstr "ðÅÒÅÍÅÓÔÉÔØ ÔÅËÕÝÉÊ ÏÂßÅËÔ × ÐÒÅÄÅÌÁÈ ÆÒÅÊÍÁ ×ÐÒÁ×Ï/×ÌÅ×Ï" - -#: ../etc/cfg_ionws.lua:12 -msgid "Go to frame above/below/right/left of current frame." -msgstr "ðÅÒÅÊÔÉ Ë ÆÒÅÊÍÕ ×ÙÛÅ/ÎÉÖÅ/ÐÒÁ×ÅÅ/ÌÅ×ÅÅ ÔÅËÕÝÅÇÏ ÆÒÅÊÍÁ" - -#: ../ext_statusbar/ext_statusbar.lua:289 -msgid "Screen not found." -msgstr "üËÒÁÎ ÎÅ ÎÁÊÄÅÎ" - -#: ../etc/cfg_bindings.lua:182 -msgid "Resize the frame." -msgstr "éÚÍÅÎÉÔØ ÒÁÚÍÅÒ ÆÒÅÊÍÁ" - -#: ../etc/cfg_bindings.lua:189 -msgid "Move objects between frames by dragging and dropping the tab." -msgstr "ðÅÒÅÍÅÓÔÉÔØ ÏÂßÅËÔÙ ÍÅÖÄÕ ÆÒÅÊÍÁÍÉ ÐÒÉ ÐÏÍÏÝÉ ÐÅÒÅÔÁÓËÉ×ÁÎÉÑ ÔÁÂÏ×." - -#: ../mod_query/mod_query.lua:99 -msgid "Could not find %s" -msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ %s:" - -#: ../ext_statusbar/ext_statusbar.lua:295 -msgid "Screen already has an stdisp. Refusing to create a statusbar." -msgstr "üËÒÁÎ ÕÖÅ ÉÍÅÅÔ stdisp. ïÔËÁÚ × ÓÏÚÄÁÎÉÉ ÓÔÁÔÕÓÂÁÒÁ." - -#: ../etc/cfg_bindings.lua:112 -msgid "Query for host to connect to with SSH." -msgstr "úÁÐÒÏÓ ÈÏÓÔÁ ÄÌÑ ÓÏÅÄÉÎÅÎÉÑ ÞÅÒÅÚ SSH." - -# -#: ../etc/cfg_bindings.lua:229 -msgid "Move in specified direction." -msgstr "ðÅÒÅÍÅÓÔÉÔØ × ÕËÁÚÁÎÎÏÍ ÎÁÐÒÁ×ÌÅÎÉÉ." - -# -#: ../ext_statusbar/ext_statusbar.lua:27 -msgid "mail" -msgstr "ÐÏÞÔÁ" - -#: ../mod_query/mod_query.lua:807 -msgid "" -"\n" -"Transients:\n" -msgstr "" - -#: ../etc/cfg_menu.lua:21 -msgid "Select next/previous menu entry." -msgstr "×ÙÂÒÁÔØ ÓÌÅÄ/ÐÒÅÄ ÐÕÎËÔ ÍÅÎÀ" - -#: ../ioncore/ioncore-luaext.lua:30 -msgid "Recursive table - unable to deepcopy" -msgstr "òÅËÕÒÓÉ×ÎÁÑ ÔÁÂÌÉÃÁ - ÇÌÕÂÏËÏÅ ËÏÐÉÒÏ×ÁÎÉÅ ÎÅ×ÏÚÍÏÖÎÏ" - -# -#: ../etc/cfg_bindings.lua:209 -msgid "Grow in specified direction." -msgstr "÷ÙÒÁÓÔÉ × ÕËÁÚÁÎÎÏÍ ÎÁÐÒÁ×ÌÅÎÉÉ." - -#: ../ioncore/ioncore-bindings.lua:68 -msgid "Invalid command" -msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ËÏÍÁÎÄÁ" - -#: ../mod_query/mod_query.lua:189 -#: ../mod_menu/mod_menu.lua:245 -msgid "Too much result data" -msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ËÏÎÅÞÎÙÈ ÄÁÎÎÙÈ " - -#: ../mod_query/mod_query.lua:344 -msgid "Workspace type (%s):" -msgstr "ôÉÐ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ (%s):" - -#: ../etc/cfg_bindings.lua:36 -msgid "Go to previous active object." -msgstr "ÐÅÒÅÊÔÉ Ë ÓÌÅÄ. ÁËÔÉ×ÎÏÍÕ ÏÂßÅËÔÕ" - -# -#: ../etc/cfg_query.lua:67 -msgid "Clear mark/cancel selection." -msgstr "ïÞÉÓÔËÁ ÍÅÔËÉ/ÏÔÍÅÎÁ ×ÙÄÅÌÅÎÉÑ" - -#: ../mod_query/mod_query.lua:772 -msgid "No entry '%s'" -msgstr "îÅÔ ÐÕÎËÔÁ '%s'" - -# -# -#: ../etc/cfg_bindings.lua:90 -msgid "Toggle fullscreen mode of current client window." -msgstr "ðÅÒÅËÌÀÞÉÔØ ÔÅËÕÝÅÅ ÏËÎÏ × ÐÏÌÎÏÜËÒÁÎÎÙÊ ÒÅÖÉÍ." - -#: ../etc/cfg_bindings.lua:103 -msgid "Query for manual page to be displayed." -msgstr "úÁÐÒÏÓ ÎÁ ÏÔÏÂÒÁÖÅÎÉÅ ÓÔÒÁÎÉÃÙ man." - -#: ../etc/cfg_bindings.lua:51 -msgid "Show the Ion manual page." -msgstr "ðÏËÁÚÁÔØ ÓÔÒÁÎÉÃÕ ÒÕËÏ×ÏÄÓÔ×Á ÐÏ éÏÎ." - -#: ../etc/cfg_bindings.lua:60 -msgid "Display the main menu." -msgstr "ðÏËÁÚÁÔØ ÇÌÁ×ÎÏÅ ÍÅÎÀ" - -# -#: ../etc/cfg_bindings.lua:54 -msgid "Run a terminal emulator." -msgstr "úÁÐÕÓË ÜÍÕÌÑÔÏÒÁ ÔÅÒÍÉÎÁÌÁ" - -#: ../etc/cfg_bindings.lua:121 -msgid "Query for workspace to go to or create a new one." -msgstr "" - -#: ../etc/cfg_menus.lua:38 -msgid "Kill" -msgstr "õÂÉÔØ" - -#: ../pwm/cfg_pwm_menus.lua:25 -#: ../etc/cfg_menus.lua:37 -msgid "Close" -msgstr "úÁËÒÙÔØ" - -#: ../mod_query/mod_query.lua:381 -msgid "Go to or create workspace:" -msgstr "ðÅÒÅÊÔÉ Ë ÉÌÉ ÓÏÚÄÁÔØ ÒÁÂÏÞÉÊ ÓÔÏÌ:" - -#: ../etc/cfg_query.lua:35 -msgid "Delete one word forward/backward." -msgstr "õÄÁÌÉÔØ ÏÄÎÏ ÓÌÏ×Ï ×ÐÅÒÅÄÉ/ÓÚÁÄÉ." - -#: ../etc/cfg_query.lua:17 -msgid "Go to end/beginning." -msgstr "ðÅÒÅÊÔÉ × ËÏÎÅÃ/ÎÁÞÁÌÏ" - -# -#: ../etc/cfg_ionws.lua:43 -msgid "Transpose" -msgstr "ðÅÒÅÍÅÓÔÉÔØ" - -#: ../etc/cfg_bindings.lua:152 -msgid "Switch to next/previous object within the frame." -msgstr "ðÅÒÅËÌÀÞÉÔØÓÑ ÎÁ ÓÌÅÄ/ÐÒÅÄ ÏÂßÅËÔ ×ÎÕÔÒÉ ÆÒÅÊÍÁ." - -#: ../mod_query/mod_query.lua:402 -msgid "Restart Ion (y/n)?" -msgstr "ðÅÒÅÚÁÐÕÓÔÉÔØ éÏÎ (y/n)?" - -#: ../mod_query/mod_query.lua:724 -msgid "Lua code: " -msgstr "ëÏÄ Lua:" - -#: ../mod_query/mod_query.lua:367 -msgid "Attach window:" -msgstr "ðÒÉÃÅÐÉÔØ ÏËÎÏ:" - -#: ../etc/cfg_bindings.lua:186 -#: ../etc/cfg_floatws.lua:37 -msgid "Move the frame." -msgstr "ðÅÒÅÍÅÓÔÉÔØ ÆÒÅÊÍ." - -#: ../pwm/cfg_pwm_menus.lua:11 -#: ../etc/cfg_menus.lua:8 -msgid "Programs" -msgstr "ðÒÏÇÒÁÍÍÙ" - -#: ../etc/cfg_query.lua:23 -msgid "Skip one word forward/backward." -msgstr "ðÒÏÐÕÓÔÉÔØ ÏÄÎÏ ÓÌÏ×Ï ×ÐÅÒÅÄ/ÎÁÚÁÄ." - -#: ../mod_query/mod_query.lua:738 -msgid "Unknown menu %s." -msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÍÅÎÀ %s." - -#: ../etc/cfg_floatws.lua:12 -msgid "Backwards-circulate focus and raise the newly focused frame." -msgstr "" - -#: ../etc/cfg_menus.lua:44 -msgid "Window info" -msgstr "éÎÆÏÒÍÁÃÉÑ Ï ÏËÎÅ" - -# -#: ../etc/cfg_query.lua:58 -msgid "Set mark/begin selection." -msgstr "" - -#: ../etc/cfg_menus.lua:30 -msgid "Restart TWM" -msgstr "ðÅÒÅÚÁÐÕÓË TWM" - -#: ../etc/cfg_ionws.lua:9 -msgid "Split current frame vertically." -msgstr "òÁÚÄÅÌÉÔØ ÔÅËÕÝÉÊ ÆÒÅÊÍ ÐÏ ×ÅÒÔÉËÁÌÉ" - -# -# -#: ../etc/cfg_bindings.lua:57 -msgid "Create a new workspace of chosen default type." -msgstr "óÏÚÄÁÔØ ÎÏ×ÙÊ ÒÁÂÏÞÉÊ ÓÔÏÌ Ó ÔÉÐÏÍ ×ÙÂÒÁÎÎÙÍ ÐÏ-ÕÍÏÌÞÁÎÉÀ." - -# -#: ../etc/cfg_floatws.lua:29 -msgid "Raise the frame." -msgstr "ðÏÄÎÑÔØ ÆÒÅÊÍ" - -#: ../etc/cfg_floatws.lua:46 -msgid "(Un)stick" -msgstr "" - -#: ../mod_query/mod_query.lua:287 -#: ../mod_query/mod_query.lua:297 -msgid "Could not find client window %s." -msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÏËÎÏ ËÌÉÅÎÔÁ %s." - -#: ../etc/cfg_query.lua:82 -msgid "Close the query/message box, not executing bound actions." -msgstr "" - -# -#: ../etc/cfg_bindings.lua:168 -msgid "Query for a client window to attach to active frame." -msgstr "" - -#: ../mod_query/mod_query.lua:488 -msgid "Run:" -msgstr "úÁÐÕÓÔÉÔØ:" - -# -#: ../etc/cfg_panews.lua:11 -msgid "Resize the area." -msgstr "éÚÍÅÎÉÔØ ÒÁÚÍÅÒ ÏÂÌÁÓÔÉ." - -# -#: ../etc/cfg_bindings.lua:95 -msgid "Kill client owning current client window." -msgstr "õÂÉÔØ ËÌÉÅÎÔÁ ÔÅËÕÝÅÇÏ ÏËÎÁ." - -#: ../mod_query/mod_query.lua:595 -msgid "Manual page (%s):" -msgstr "óÔÒÁÎÉÃÁ ÒÕËÏ×ÏÄÓÔ×Á (%s):" - -# -#: ../etc/cfg_bindings.lua:124 -msgid "Query for a client window to go to." -msgstr "" - -# -#: ../etc/cfg_ionws.lua:39 -msgid "Destroy frame" -msgstr "õÄÁÌÉÔØ ÆÒÅÊÍ" - -#: ../mod_query/mod_query.lua:339 -msgid "Unknown error" -msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ" - -#: ../etc/cfg_bindings.lua:175 -#: ../etc/cfg_panews.lua:8 -msgid "Begin move/resize mode." -msgstr "÷ÈÏÄ × ÒÅÖÉÍ ÐÅÒÅÍÅÝÅÎÉÑ/ÒÁÚÍÅÒÁ" - -#: ../etc/cfg_bindings.lua:136 -msgid "Tag current object within the frame." -msgstr "" - -#: ../etc/cfg_bindings.lua:140 -msgid "Switch to n:th object within the frame." -msgstr "" - -#: ../etc/cfg_bindings.lua:203 -msgid "Cancel the resize mode." -msgstr "ïÔÍÅÎÁ ÒÅÖÉÍÁ ÒÁÚÍÅÒÁ." - -#: ../build/mkman.lua:196 -msgid "%s %s" -msgstr "%s %s" - -#: ../etc/cfg_query.lua:27 -msgid "Delete next character." -msgstr "õÄÁÌÉÔØ ÓÌÅÄÕÀÝÉÊ ÓÉÍ×ÏÌ" - -#: ../mod_query/mod_query.lua:356 -msgid "Go to window:" -msgstr "ðÅÒÅÊÔÉ Ë ÏËÎÕ:" - -#: ../build/mkman.lua:182 -msgid "drag" -msgstr "ÐÅÒÅÔÁÝÉÔØ" - -#: ../build/mkman.lua:181 -msgid "click" -msgstr "ËÌÉËÎÕÔØ" - -#: ../build/mkman.lua:180 -msgid "press" -msgstr "ÎÁÖÁÔØ" - -#: ../etc/cfg_menu.lua:27 -msgid "Clear the menu's typeahead find buffer." -msgstr "" - -#: ../etc/cfg_ionws.lua:47 -msgid "Split" -msgstr "òÁÚÄÅÌÉÔØ" - -# -#: ../etc/cfg_bindings.lua:98 -msgid "Send next key press to current client window. Some programs may not allow this by default." -msgstr "" - -#: ../etc/cfg_menu.lua:11 -msgid "Close the menu." -msgstr "úÁËÒÙÔØ ÍÅÎÀ" - -#: ../etc/cfg_query.lua:87 -msgid "Scroll the message or completions up/down." -msgstr "" - -#: ../etc/cfg_query.lua:74 -msgid "Close the query and execute bound action." -msgstr "" - -# -#: ../etc/cfg_bindings.lua:31 -msgid "Switch to next/previous object within current screen." -msgstr "ðÅÒÅËÌÀÞÉÔØÓÑ ÎÁ ÓÌÅÄ./ÐÒÅÄ. ÏÂßÅËÔ ×ÎÕÔÒÉ ÔÅËÕÝÅÇÏ ÜËÒÁÎÁ." - -#: ../etc/cfg_query.lua:39 -msgid "Delete to end of line." -msgstr "õÄÁÌÉÔØ ÄÏ ËÏÎÃÁ ÓÔÒÏËÉ." - -#: ../pwm/cfg_pwm_menus.lua:14 -#: ../etc/cfg_menus.lua:11 -msgid "About Ion" -msgstr "ï Ion" - -#: ../mod_query/mod_query.lua:804 -msgid "" -"Title: %s\n" -"Class: %s\n" -"Role: %s\n" -"Instance: %s\n" -"XID: 0x%x" -msgstr "" -"îÁÚ×ÁÎÉÅ: %s\n" -"ëÌÁÓÓ(class): %s\n" -"òÏÌØ(role): %s\n" -"üËÚÅÍÐÌÑÒ(instance): %s\n" -"XID: 0x%x" - -# -#: ../etc/cfg_query.lua:61 -msgid "Cut selection." -msgstr "÷ÙÒÅÚÁÔØ ×ÙÄÅÌÅÎÎÏÅ." - -#: ../etc/cfg_query.lua:53 -msgid "Paste from the clipboard." -msgstr "÷ÓÔÁ×ÉÔØ ÉÚ ËÌÉÐÂÏÒÄÁ." - -# -#: ../etc/cfg_query.lua:45 -msgid "Select next/previous (matching) history entry." -msgstr "÷ÙÂÒÁÔØ ÓÌÅÄ./ÐÒÅÄ. (ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ) ÐÕÎËÔ ÉÓÔÏÒÉÉ." - -#: ../etc/cfg_menus.lua:43 -msgid "Clear tags" -msgstr "ïÞÉÓÔÉÔØ ÔÅÇÉ" - -#: ../etc/cfg_query.lua:42 -msgid "Delete the whole line." -msgstr "õÄÁÌÉÔØ ÓÔÒÏËÕ ÃÅÌÉËÏÍ" - -#: ../etc/cfg_query.lua:71 -msgid "Try to complete the entered text." -msgstr "ðÏÐÙÔËÁ ÚÁ×ÅÒÛÉÔØ ××ÅÄÅÎÎÙÊ ÔÅËÓÔ." - -#: ../etc/cfg_query.lua:31 -msgid "Delete previous character." -msgstr "õÄÁÌÉÔØ ÐÒÅÄÙÄÕÝÉÊ ÓÉÍ×ÏÌ." - -#: ../mod_query/mod_query.lua:299 -msgid "Cannot attach: different root windows." -msgstr "îÅ ÍÏÇÕ ÐÒÉÃÅÐÉÔØ: ÒÁÚÎÙÅ ËÏÒÎÅ×ÙÅ ÏËÎÁ." - -#: ../build/mkman.lua:183 -msgid "double click" -msgstr "Ä×ÏÊÎÏÊ ËÌÉË" - -#: ../etc/cfg_query.lua:11 -msgid "Move one character forward/backward." -msgstr "ðÅÒÅÍÅÓÔÉÔØÓÑ ÎÁ ÏÄÉÎ ÓÉÍ×ÏÌ ×ÐÅÒÅÄ/ÎÁÚÁÄ." - -#: ../etc/cfg_menus.lua:29 -msgid "Restart PWM" -msgstr "ðÅÒÅÚÁÐÕÓË PWM" - -#: ../etc/cfg_bindings.lua:115 -msgid "Query for file to edit." -msgstr "úÁÐÒÏÓ ÎÁ ÒÅÄÁËÔÉÒÏ×ÁÎÉÅ ÆÁÊÌÁ." - -# -#: ../etc/cfg_bindings.lua:39 -msgid "Clear all tags." -msgstr "ïÞÉÓÔÉÔØ ×ÓÅ ÔÅÇÉ." - -#: ../etc/cfg_bindings.lua:178 -msgid "Switch the frame to display the object indicated by the tab." -msgstr "ðÅÒÅËÌÀÞÉÔØ ÆÒÅÊÍ ÎÁ ÐÏËÁÚ ÏÂßÅËÔÁ ÕËÁÚÁÎÎÏÇÏ ÔÁÂÏÍ." - -# -# -#: ../etc/cfg_ionws.lua:50 -#: ../etc/cfg_ionws.lua:60 -msgid "Horizontally" -msgstr "çÏÒÉÚÏÎÔÁÌØÎÏ" - -#: ../pwm/cfg_pwm_menus.lua:16 -#: ../pwm/cfg_pwm_menus.lua:24 -msgid "New" -msgstr "îÏ×ÙÊ" - -#: ../mod_query/mod_query.lua:410 -msgid "Frame name:" -msgstr "éÍÑ ÆÒÅÊÍÁ:" - -# -#: ../etc/cfg_bindings.lua:18 -msgid "Switch to n:th object (workspace, full screen client window) within current screen." -msgstr "ðÅÒÅËÌÀÞÉÔØÓÑ ÎÁ n-ÎÙÊ ÏÂßÅËÔ (ÒÁÂ.ÓÔÏÌ, ÐÏÌÎÏÜËÒÁÎÎÏÅ ÏËÎÏ) ×ÎÕÔÒÉ ÔÅËÕÝÅÇÏ ÜËÒÁÎÁ." - -#: ../etc/cfg_bindings.lua:64 -msgid "Display the window list menu." -msgstr "ðÏËÁÚÁÔØ ÍÅÎÀ ÓÐÉÓËÁ ÏËÏÎ." - -#: ../etc/cfg_floatws.lua:26 -msgid "Toggle shade mode" -msgstr "ðÅÒÅËÌÀÞÉÔØ ÒÅÖÉÍ ÔÅÎÉ" - -#: ../mod_query/mod_query.lua:393 -msgid "Exit Ion/Shutdown session (y/n)?" -msgstr "÷ÙÈÏÄ ÉÚ éÏÎ/úÁ×ÅÒÛÉÔØ ÓÅÓÓÉÀ (y/n)?" - -#: ../etc/cfg_floatws.lua:15 -msgid "Raise/lower active frame." -msgstr "ðÏÄÎÑÔØ/ÏÐÕÓÔÉÔØ ÁËÔÉ×ÎÙÊ ÆÒÅÊÍ" - -#: ../mod_menu/mod_menu.lua:235 -msgid "Save look selection in %s?" -msgstr "óÏÈÒÁÎÉÔØ ×ÎÅÛÎÉÊ ×ÉÄ × %s?" - -#: ../etc/cfg_bindings.lua:82 -msgid "Close current object." -msgstr "úÁËÒÙÔØ ÔÅËÕÝÉÊ ÏÂßÅËÔ." - -# -#: ../etc/cfg_query.lua:64 -msgid "Copy selection." -msgstr "ëÏÐÉÒÏ×ÁÔØ ×ÙÄÅÎÅÎÉÅ" - -#: ../etc/cfg_bindings.lua:164 -msgid "Attach tagged objects to this frame." -msgstr "ðÒÉÃÅÐÉÔØ ÏÂßÅËÔ Ó ÔÅÇÏÍ Ë ÜÔÏÍÕ ÆÒÅÊÍÕ." - -#: ../etc/cfg_ionws.lua:57 -msgid "Floating split" -msgstr "ðÌÁ×ÁÀÝÅÅ ÒÁÚÄÅÌÅÎÉÅ." - -#: ../mod_query/mod_query.lua:768 -msgid "%s menu:" -msgstr "%s ÍÅÎÀ:" - -#: ../ext_statusbar/ext_statusbar.lua:318 -msgid "Failed to create a timer for statusbar." -msgstr "ôÁÊÍÅÒ ÄÌÑ ÓÔÁÔÕÓÂÁÒÁ ÎÅ ÓÏÚÄÁÎ." - -#: ../etc/cfg_ionws.lua:52 -#: ../etc/cfg_ionws.lua:62 -msgid "Vertically at root" -msgstr "÷ÅÒÔÉËÁÌØÎÏ × ËÏÒÎÅ×ÏÍ" - -# -# -#: ../etc/cfg_menu.lua:16 -msgid "Activate current menu entry." -msgstr "áËÔÉ×ÉÒÏ×ÁÔØ ÔÅËÕÝÉÊ ÐÕÎËÔ ÍÅÎÀ." - -#: ../ioncore/ioncore-efbb.lua:12 -msgid "" -"Making the following minimal emergency mappings:\n" -" F2 -> xterm\n" -" F11 -> restart\n" -" F12 -> exit\n" -" Mod1+C -> close\n" -" Mod1+K P/N -> WFrame.switch_next/switch_prev\n" -msgstr "" -"Making the following minimal emergency mappings:\n" -" F2 -> xterm\n" -" F11 -> restart\n" -" F12 -> exit\n" -" Mod1+C -> close\n" -" Mod1+K P/N -> WFrame.switch_next/switch_prev\n" - -# -#: ../etc/cfg_ionws.lua:45 -msgid "Transpose at root" -msgstr "ðÅÒÅÍÅÓÔÉÔØ × ËÏÒÎÅ×ÏÍ" - -#: ../pwm/cfg_pwm_menus.lua:17 -#: ../etc/cfg_menus.lua:12 -msgid "Styles" -msgstr "óÔÉÌÉ" - -#: ../etc/cfg_bindings.lua:106 -msgid "Query for command line to execute." -msgstr "úÁÐÒÏÓ ÎÁ ÉÓÐÏÌÎÅÎÉÅ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ" - -#: ../mod_query/mod_query.lua:323 -msgid "Unable to create workspace: no screen." -msgstr "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÒÁÂÏÞÉÊ ÓÔÏÌ: ÎÅÔ ÜËÒÁÎÁ." - -#: ../ext_statusbar/ext_statusbar.lua:27 -msgid "load" -msgstr "ÚÁÇÒÕÚËÁ" - -# -#: ../etc/cfg_ionws.lua:42 -msgid "Flip" -msgstr "ðÅÒÅ×ÅÒÎÕÔØ" - -#: ../etc/cfg_ionws.lua:41 -msgid "Flip&transpose" -msgstr "ðÅÒÅ×ÅÒÎÕÔØ É ÐÅÒÅÍÅÓÔÉÔØ" - -#: ../pwm/cfg_pwm_menus.lua:12 -#: ../etc/cfg_menus.lua:9 -msgid "Lock screen" -msgstr "úÁÂÌÏËÉÒÏ×ÁÔØ ÜËÒÁÎ" - -#: ../mod_query/mod_query.lua:449 -msgid "Edit file:" -msgstr "òÅÄÁËÔÉÒÏ×ÁÔØ ÆÁÊÌ:" - -#: ../etc/cfg_menus.lua:19 -msgid "XTerm" -msgstr "XTerm" - -#: ../build/mkman.lua:198 -msgid "%s %s at %s" -msgstr "%s %s ÎÁ %s" - -# -#: ../etc/cfg_bindings.lua:85 -msgid "Nudge current client window. This might help with some programs' resizing problems." -msgstr "" - -#: ../etc/cfg_ionws.lua:22 -msgid "Destroy current frame." -msgstr "õÄÁÌÉÔØ ÔÅËÕÝÉÊ ÆÒÅÊÍ." - -#: ../ioncore/ioncore-bindings.lua:53 -msgid "Error in command string: " -msgstr "ïÛÉÂËÁ × ÓÔÒÏËÅ ËÏÍÁÎÄÙ:" - -#: ../etc/cfg_ionws.lua:19 -msgid "Split current frame horizontally." -msgstr "òÁÚÄÅÌÉÔØ ÔÅËÕÝÉÊ ÆÒÅÊÍ ÐÏ ÇÏÒÉÚÏÎÔÁÌÉ." - -#: ../etc/cfg_menus.lua:42 -msgid "Attach tagged" -msgstr "ðÒÉÃÅÐÉÔØ ÏËÎÁ Ó ÔÅÇÁÍÉ" - -#: ../etc/cfg_ionws.lua:54 -#: ../etc/cfg_ionws.lua:64 -msgid "Horizontally at root" -msgstr "çÏÒÉÚÏÎÔÁÌØÎÏ × ËÏÒÎÅ×ÏÍ" - -#: ../etc/cfg_menus.lua:40 -msgid "(Un)tag" -msgstr "ðÏÓÔÁ×ÉÔØ/ÕÄÁÌÉÔØ ÔÅÇ" - -#: ../mod_query/mod_query.lua:459 -msgid "View file:" -msgstr "ðÒÏÓÍÏÔÒ ÆÁÊÌÁ:" - -#: ../mod_query/mod_query.lua:421 -msgid "Workspace name:" -msgstr "éÍÑ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ:" - -#: ../etc/cfg_menus.lua:31 -msgid "Exit" -msgstr "÷ÙÈÏÄ" - -#: ../etc/cfg_menus.lua:27 -msgid "Save" -msgstr "óÏÈÒÁÎÉÔØ" - -# -#: ../pwm/cfg_pwm_menus.lua:15 -msgid "Workspaces" -msgstr "òÁÂÏÞÉÅ ÓÔÏÌÙ" - -#: ../etc/cfg_menus.lua:20 -msgid "Mozilla Firefox" -msgstr "Mozilla Firefox" - -#: ../ioncore/ioncore-bindings.lua:45 -msgid "Error compiling guard: %s" -msgstr "" - -#: ../mod_menu/mod_menu.lua:271 -msgid "Refresh list" -msgstr "ïÂÎÏ×ÉÔØ ÓÐÉÓÏË" - -#: ../etc/cfg_floatws.lua:9 -msgid "Circulate focus and raise the newly focused frame." -msgstr "ðÅÒÅÄÁÔØ ÆÏËÕÓ É ÐÏÄÎÑÔØ ÆÒÅÊÍ Ó ÎÏ×ÙÍ ÆÏËÕÓÏÍ." - -# -#: ../etc/cfg_menus.lua:21 -msgid "Run..." -msgstr "÷ÙÐÏÌÎÉÔØ..." - -#: ../etc/cfg_bindings.lua:118 -msgid "Query for file to view." -msgstr "úÁÐÒÏÓ ÐÒÏÓÍÏÔÒÁ ÆÁÊÌÁ." - -#: ../mod_query/mod_query.lua:511 -msgid "Failed to open ~/.ssh/known_hosts" -msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ~/.ssh/known_hosts" - -#: ../pwm/cfg_pwm_menus.lua:18 -#: ../etc/cfg_menus.lua:13 -msgid "Session" -msgstr "óÅÓÓÉÑ" - -#: ../pwm/cfg_pwm_menus.lua:27 -msgid "List" -msgstr "óÐÉÓÏË" - diff --git a/pwm/cfg_pwm.lua b/pwm/cfg_pwm.lua index 805daf0..97026b2 100644 --- a/pwm/cfg_pwm.lua +++ b/pwm/cfg_pwm.lua @@ -50,16 +50,16 @@ dopath("mod_dock") -- --- Unbind anything using mod_query and rebinding to mod_menu where +-- Unbind anything using mod_query and rebind to mod_menu where -- applicable. defbindings("WScreen", { + bdoc("Display the main menu."), kpress(ALTMETA.."F12", "mod_menu.menu(_, _sub, 'mainmenu', {big=true})"), }) defbindings("WMPlex.toplevel", { kpress(ALTMETA.."F1", nil), - kpress(META.. "F1", "ioncore.exec_on(_, ':man pwm3')"), kpress(ALTMETA.."F3", nil), kpress(META.. "F3", nil), kpress(ALTMETA.."F4", nil), @@ -67,11 +67,16 @@ defbindings("WMPlex.toplevel", { kpress(ALTMETA.."F6", nil), kpress(ALTMETA.."F9", nil), kpress(META.."G", nil), - kpress(META.."A", nil), + + bdoc("Show the PWM manual page."), + kpress(META.. "F1", "ioncore.exec_on(_, ':man pwm3')"), + + bdoc("Display context menu."), + kpress(META.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"), }) -defbindings("WFrame", { - kpress(META.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"), +defbindings("WFrame.toplevel", { + kpress(META.."A", nil), }) -- Make a new main menu with additional workspace menu. diff --git a/pwm/pwm.c b/pwm/pwm.c index c4a0804..a96e306 100644 --- a/pwm/pwm.c +++ b/pwm/pwm.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include diff --git a/version.h b/version.h index 31b30f5..d33136a 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define ION_VERSION "3ds-20070318" +#define ION_VERSION "3rc-20070506" #define ION_API_VERSION "3-"ION_VERSION -- 2.39.5

      While Ion does not not have a truly object-oriented design 1, + HREF="#foot210">1, things that appear on the computer screen are, however, quite -naturally expressed as such ''objects''. Therefore Ion implements +naturally expressed as such ``objects''. Therefore Ion implements a rather primitive OO system for these screen objects and some other things. @@ -107,7 +107,7 @@ basic relations.

    20. qR2-MAj(dER>RgN`lovBuqMkTP$}>Ow}7ZQl>`4 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[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 on input line 235. LaTeX Font Info: External font `cmex10' loaded for size (Font) <6> on input line 235. -l2hSize :tex2html_wrap_inline1041:7.0626pt::0.0pt::7.1201pt. +l2hSize :tex2html_wrap_inline1055:7.0626pt::0.0pt::7.1201pt. [1 ] -l2hSize :tex2html_wrap_inline1045:7.48248pt::0.0pt::48.86426pt. +l2hSize :tex2html_wrap_inline1059:7.48248pt::0.0pt::48.86426pt. [2 ] -l2hSize :tex2html_wrap_inline2020:8.7125pt::8.7125pt::23.6642pt. +l2hSize :tex2html_wrap_inline2241:8.7125pt::8.7125pt::23.6642pt. [3 ] -l2hSize :tex2html_wrap_inline6387:7.5626pt::7.5626pt::14.53923pt. +l2hSize :tex2html_wrap_inline5502:7.5626pt::7.5626pt::14.53923pt. [4 ] -l2hSize :tex2html_wrap_inline6389:7.5626pt::7.5626pt::14.53923pt. +l2hSize :tex2html_wrap_inline5504:7.5626pt::7.5626pt::14.53923pt. [5 ] -l2hSize :tex2html_wrap_inline9409:8.7125pt::8.7125pt::86.9574pt. +l2hSize :tex2html_wrap_inline7754:8.7125pt::8.7125pt::86.9574pt. [6 ] (./images.aux) ) Here is how much of TeX's memory you used: - 4443 strings out of 94501 - 62984 string characters out of 1175795 - 122206 words of memory out of 1000000 - 7587 multiletter control sequences out of 10000+50000 + 4467 strings out of 94501 + 63452 string characters out of 1175795 + 123525 words of memory out of 1000000 + 7611 multiletter control sequences out of 10000+50000 7874 words of font info for 24 fonts, out of 500000 for 2000 580 hyphenation exceptions out of 8191 28i,5n,21p,200b,182s stack positions out of 1500i,500n,5000p,200000b,5000s diff --git a/doc/ionconf/images.pl b/doc/ionconf/images.pl index 6d0ccb4..d6e7651 100644 --- a/doc/ionconf/images.pl +++ b/doc/ionconf/images.pl @@ -2,5 +2,41 @@ # Associate images original text with physical files. +$key = q/-1;MSF=1.6;LFS=11;AAT/; +$cached_env_img{$key} = q|$-1$|; + +$key = q/(0,1];MSF=1.6;LFS=11;AAT/; +$cached_env_img{$key} = q|$(0, 1]$|; + +$key = q/N=1{ldots}5;MSF=1.6;LFS=11;AAT/; +$cached_env_img{$key} = q|$N=1{\ldots} 5$|; + +$key = q/-2;MSF=1.6;LFS=11;AAT/; +$cached_env_img{$key} = q|$-2$|; + +$key = q/n;MSF=1.6;LFS=11;AAT/; +$cached_env_img{$key} = q|$n$|; + +$key = q/{t,m,b}times{t,c,b};MSF=1.6;LFS=11;AAT/; +$cached_env_img{$key} = q|$\{t,m,b\}\times\{t,c,b\}$|; + 1; diff --git a/doc/ionconf/images.tex b/doc/ionconf/images.tex index 8ab5731..2912e90 100644 --- a/doc/ionconf/images.tex +++ b/doc/ionconf/images.tex @@ -18,8 +18,7 @@ \usepackage{calc} -\urlstyle{rm}% -\providecommand{\centerurl}[1]{\begin{center}\url{#1}\end{center}} +\urlstyle{tt} % \providecommand{\note}[1]{\color{red}**#1**}% @@ -31,6 +30,7 @@ % \providecommand{\key}[1]{\textbf{#1}}% \providecommand{\code}[1]{\texttt{#1}}% +\providecommand{\codestr}[1]{`\texttt{#1}'}% \providecommand{\var}[1]{\texttt{#1}}% \providecommand{\command}[1]{\texttt{#1}} @@ -82,7 +82,7 @@ \title{Configuring and extending Ion3 with Lua} \author{Tuomo Valkonen \\tuomov at iki.fi} -\date{2007-03-18} +\date{2007-05-06} \makeindex @@ -231,7 +231,7 @@ \stepcounter{section} \stepcounter{section} {\newpage\clearpage -\lthtmlinlinemathA{tex2html_wrap_inline1041}% +\lthtmlinlinemathA{tex2html_wrap_inline1055}% $n$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} @@ -242,7 +242,7 @@ $n$% \stepcounter{subsection} \stepcounter{subsection} {\newpage\clearpage -\lthtmlinlinemathA{tex2html_wrap_inline1045}% +\lthtmlinlinemathA{tex2html_wrap_inline1059}% $N=1{\ldots} 5$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} @@ -275,6 +275,12 @@ $N=1{\ldots} 5$% \stepcounter{subsection} \stepcounter{subsubsection} \stepcounter{subsubsection} +\stepcounter{section} +\stepcounter{subsection} +\stepcounter{subsection} +\stepcounter{subsection} +\stepcounter{subsubsection} +\stepcounter{subsubsection} \stepcounter{subsubsection} \stepcounter{chapter} \stepcounter{section} @@ -293,8 +299,9 @@ $N=1{\ldots} 5$% \stepcounter{subsection} \stepcounter{section} \stepcounter{subsection} +\stepcounter{subsection} {\newpage\clearpage -\lthtmlinlinemathA{tex2html_wrap_inline2020}% +\lthtmlinlinemathA{tex2html_wrap_inline2241}% $(0, 1]$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} @@ -316,14 +323,15 @@ $(0, 1]$% \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} +\stepcounter{subsection} {\newpage\clearpage -\lthtmlinlinemathA{tex2html_wrap_inline6387}% +\lthtmlinlinemathA{tex2html_wrap_inline5502}% $-1$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} {\newpage\clearpage -\lthtmlinlinemathA{tex2html_wrap_inline6389}% +\lthtmlinlinemathA{tex2html_wrap_inline5504}% $-2$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} @@ -337,6 +345,7 @@ $-2$% \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} +\stepcounter{subsection} \stepcounter{section} \stepcounter{subsection} \stepcounter{subsection} @@ -352,7 +361,7 @@ $-2$% \stepcounter{section} \stepcounter{subsection} {\newpage\clearpage -\lthtmlinlinemathA{tex2html_wrap_inline9409}% +\lthtmlinlinemathA{tex2html_wrap_inline7754}% $\{t,m,b\}\times\{t,c,b\}$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} @@ -362,6 +371,8 @@ $\{t,m,b\}\times\{t,c,b\}$% \stepcounter{subsection} \stepcounter{section} \stepcounter{section} +\stepcounter{section} +\stepcounter{subsection} \appendix \stepcounter{chapter} \addtocounter{enumi}{-1} diff --git a/doc/ionconf/img1.png b/doc/ionconf/img1.png index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9d458d5539b431f6bef3387b0f39772ee459f8dc 100644 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngd!py+HSh_gd3&>Fq@Ck9)8&^9GKW|MS-u0F7nvboFyt=akR{0A#2?1^@s6 literal 0 HcmV?d00001 diff --git a/doc/ionconf/img2.png b/doc/ionconf/img2.png index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d68136459c7deaf4d33aa93f958a9d50fddfeaa1 100644 GIT binary patch literal 363 zcmV-x0hIoUP)RHR400001 zbW%=J06^y0W&i*H=}AOER49>SV1R)JIE#Ue!-0VjC;}AX0CM>mKr}}SNNNEC3YY+u z{>Z@Kz|heEVwN#*a6p;-47h+ljDf6#h2aO9D2VQb%jY+60A1O@F#)HsIKTxMV+w@o zKLD~#g9C0a7&L$g4t}6$M@I)-v}pm5U}aN4Rm;E*CLf@xJs<)kZotE+JK+EW5JohR z=vRHR400001 zbW%=J06^y0W&i*H-bqA3R49?PkwFfEFc3vQ4T%jb$_YFJ8~5D6D|GG3Bd{EP z6IxnYDk>^+a&i(95<)^kJUl#XY-|h+3{+H9BqStwczA%CUPYds2c#HFg8YIR9G=}s z19CDvT^vIsrY0vaFqN^bQDEqZs z%#P#iK}J!AkLB<09h|`M(CF}+-~Q7+x-f3*T6^LS8{0W=E&L29O f%2X=r&cwj*QitE)Y-;N-pq&h!u6{1-oD!MRHR400001 zbW%=J06^y0W&i*JeMv+?R7i>KRXvCkK@|S>C!5VC*yFMaoqx}>!abLCH{NIVYX#$t65EkH(5uu7Ck`#LED=H;W zpPgQ!k-kG6p^!SqW7&Eh!gJUzlUbwOUNhlpT%2cB*LY-2B8ED>J#P(vjtH?fM^MEE zJPCmTQ$|z)%qwmHSf@i`$|WHZv+O0XFUWCqi|QUFg$9BO#X^NegP2}q_)-+N!W+X;84<0Ak;g^hPYItE+9g zpwhL?of2wW6_mPMQ&IR^)NT226D5)#Tq2zv!_lS{W!A}6ZDm4v_}6jNJM*wmZBAp) z?$X}>lIK4Cs-hV=18D~laH_UnQS8xcFVBhYyBy;tw2k!tCBoJBk9q8~#q~lbX4b#8 zspDJ{lowo^_H{1L-5AJO1IOeMm=7`PJyL3Ytl3o+>J2KNUA6}gNOyMQ76#9HW ztYZnr2gzNVocFJ|&ZV+>4_M)(SXtx7rc?Sv3co`ScnNH!^9u05ctP{(;|&5Ub}8)8 z8BUoO#>KkuZo+O{q%|G7-R%1Cl4X`J$t-LJdwH*Fb)2fa30Eh2rzTrtHy`I?&U;+3 xg^@C>1MXhq@_y#b6xBha|Ko4Q96!5x@Dp4$1rhy2Ci?&Y002ovPDHLkV1kWHTL}OF literal 0 HcmV?d00001 diff --git a/doc/ionconf/index.html b/doc/ionconf/index.html index a2f4405..4783107 100644 --- a/doc/ionconf/index.html +++ b/doc/ionconf/index.html @@ -25,27 +25,27 @@ original version by: Nikos Drakos, CBLU, University of Leeds