emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/hyperbole caf91d4 50/53: Merge branch 'master' of http:


From: Robert Weiner
Subject: [elpa] externals/hyperbole caf91d4 50/53: Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole
Date: Wed, 15 Nov 2017 22:47:10 -0500 (EST)

branch: externals/hyperbole
commit caf91d41a648e4d7e109e8fa1a7ef24a42cde91f
Merge: b9b37a2 cf8ae0c
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>

    Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into 
externals/hyperbole
---
 .hypb                                        |  Bin 2681 -> 4188 bytes
 Changes                                      | 1317 ++++-
 DEMO                                         |  625 ++-
 DEMO-ROLO.otl                                |   17 +
 HY-ABOUT                                     |   23 +-
 HY-ANNOUNCE                                  | 1237 +----
 HY-NEWS                                      |  345 +-
 HY-WHY.kotl                                  |  131 +-
 INSTALL                                      |    2 +-
 MANIFEST                                     |   12 +-
 Makefile                                     |   77 +-
 README                                       |   61 +-
 README.md                                    |  173 +-
 README.md.html                               | 1209 ++---
 _hypb                                        |  Bin 1951 -> 2234 bytes
 hact.el                                      |   89 +-
 hactypes.el                                  |   37 +-
 hargs.el                                     |   29 +-
 hbdata.el                                    |  134 +-
 hbut.el                                      |   57 +-
 hib-debbugs.el                               |   35 +-
 hib-doc-id.el                                |    2 +-
 hib-kbd.el                                   |  183 +-
 hib-social.el                                |  590 ++-
 hibtypes.el                                  |  444 +-
 hload-path.el                                |    5 +
 hlvar.el                                     |    2 +-
 hmouse-drv.el                                |  512 +-
 hmouse-key.el                                |   39 +-
 hmouse-mod.el                                |    9 +
 hmouse-sh.el                                 |  484 +-
 hmouse-tag.el                                |   95 +-
 hpath.el                                     |  264 +-
 hsettings.el                                 |   28 +-
 hsys-www.el                                  |   54 +-
 hui-em-but.el                                |   33 +-
 hui-jmenu.el                                 |   16 +-
 hui-menu.el                                  |   78 +-
 hui-mini.el                                  |   44 +-
 hui-mouse.el                                 |  522 +-
 hui-select.el                                |   68 +-
 hui-window.el                                | 1015 ++--
 hui-xe-but.el                                |   33 +-
 hui.el                                       |   50 +-
 hvar.el                                      |    2 +-
 hversion.el                                  |    9 +-
 hycontrol.el                                 | 1808 +++++--
 hypb.el                                      |   44 +-
 hyperbole-pkg.el                             |    8 +
 hyperbole.el                                 |  137 +-
 hyrolo-demo.el                               |   89 +
 hyrolo-logic.el                              |  136 +-
 hyrolo.el                                    |  254 +-
 kotl/EXAMPLE.kotl                            |    7 +-
 kotl/kexport.el                              |   35 +-
 kotl/kimport.el                              |   13 +-
 kotl/klink.el                                |    1 +
 kotl/{kotl-loaddefs.el => kotl-autoloads.el} |   24 +-
 kotl/kotl-mode.el                            |   18 +-
 kotl/kview.el                                |   10 +-
 kotl/kvspec.el                               |   26 +-
 dir => man/dir                               |    0
 man/hkey-help.txt                            |   48 +-
 man/hyperbole.css                            |  453 ++
 man/hyperbole.html                           | 6591 +++++++++++++++-----------
 man/hyperbole.info                           |  Bin 436710 -> 483045 bytes
 man/hyperbole.pdf                            |  Bin 798585 -> 1255114 bytes
 man/hyperbole.texi                           | 5019 ++++++++++++--------
 man/im/menu-customization.eps                | 6212 ------------------------
 man/im/menu-customization.png                |  Bin 15975 -> 15911 bytes
 man/im/menu-display-referents.png            |  Bin 0 -> 54520 bytes
 man/im/menu-find.png                         |  Bin 0 -> 14459 bytes
 man/im/menu-key-bindings.png                 |  Bin 0 -> 60741 bytes
 man/im/menu-url-browser.png                  |  Bin 0 -> 58667 bytes
 man/im/menu-web-search-browser.png           |  Bin 0 -> 59112 bytes
 man/im/wgrid-2x2.png                         |  Bin 0 -> 203175 bytes
 man/im/wgrid-2x3.png                         |  Bin 0 -> 320989 bytes
 man/im/wgrid-3x5.png                         |  Bin 0 -> 354585 bytes
 man/im/wgrid-4x6.png                         |  Bin 0 -> 361485 bytes
 man/version.texi                             |    8 +-
 set.el                                       |    1 +
 topwin.py                                    |   49 +
 82 files changed, 15865 insertions(+), 15317 deletions(-)

diff --git a/.hypb b/.hypb
index d5ddee3..65fd41d 100644
Binary files a/.hypb and b/.hypb differ
diff --git a/Changes b/Changes
index 7f9bb15..317f854 100644
--- a/Changes
+++ b/Changes
@@ -1,7 +1,1312 @@
--- Almost all changes listed herein are new as of 2016. --
+2017-11-15  Bob Weiner  <address@hidden>
+
+* hversion.el: Updated to 7.0.0 for major release.
+
+* Makefile (help): Removed misplaced double quote characters.
+
+* hui-window.el (hmouse-drag-window-side): Fixed coordinate error when drag 
release is outside of Emacs.
+
+* hui-mouse.el (smart-helm-assist): Fixed message formatting bugs in 
hkey-debug message.
+
+* hlvar.el (hack-local-variables): Changed from use of older 
inhibit-local-variables variable to newer
+    (inhibit-local-variables-p) function call.
+
+* Makefile (version): Removed HY-ANNOUNCE-SHORT from distribution.
+
+* kotl/kexport.el (kexport:html): Changed to wrap cell contents in <PRE></PRE> 
tags if soft-newline-flag is nil
+    rather than using <BR> hard newlines, so all cell formatting is preserved. 
 Also changed NAME attribute to
+    ID for HTML5.
+
+2017-11-14  Bob Weiner  <address@hidden>
+
+* kotl/kimport.el (kimport:star-heading): Added and replaced use of hard-coded 
regexps in star outline importation.
+    Also, stopped allowing leading whitespace before outline heading stars so 
can use indented stars as list items
+    rather than outline headings.
+
+* hibtypes.el (text-toc): Expanded file names to include DEMO and TUTORIAL.
+  DEMO: Added Table of Contents and a section on using it, Table of Contents 
Browsing.
+
+* hbut.el (ebut:label-p): Changed last parameter to limit search to two lines 
rather than one, so Info node matches can
+    span two lines as they often do.
+
+* HY-ABOUT: Added link to HY-WHY.kotl.
+  HY-WHY.kotl: Added links to relevant DEMO sections throughout.
+ DEMO (Koutliner): Updated this section.
+  hui-menu.el (infodock-hyperbole-menu): Added Why-Use? entry.
+  hui-mini.el (hui:menus): Added WhyUse entry to display HY-WHY.kotl, list of 
Hyperbole use cases.
+  man/hyperbole.css (code, tt): Removed leading and trailing padding of 5px 
from code samples so display inline better.
+
+2017-11-13  Bob Weiner  <address@hidden>
+
+* hui-window.el (hmouse-drag-thing): Added error if drag ends within the 
delimited thing region, so user knows
+    that this is an invalid drag.
+                (hmouse-yank-region, hmouse-kill-and-yank-region): Made no-op 
unless hkey-region is non-nil.
+    This handles the hmouse-drag-thing case when we want that predicate true 
(so no other predicate matches)
+    but there is no region to copy or kill, e.g. when the release point is 
within the thing itself.
+
+* hui-select.el (hui-select-delimited-thing): Fixed to match doc and work as a 
predicate.
+
+* hui-window.el (hmouse-goto-depress-prev-point): Deleted since it duplicated 
hmouse-goto-region-prev-point.
+                (hmouse-goto-region-prev-point): Added missing check for 
prev-point nil when setting loc.
+    This caused the Smart Keys to fail when used if a Lisp backtrace was 
active.
+                (hmouse-drag-thing): Erased any saved location of a region 
prior to Smart Key depress since
+    now we have a new region location.  This prevents 
hmouse-kill-and-yank-region from jumping to the old
+    location.  Also fixed edge cases where want to copy or move thing to the 
beginning or end of the thing region.
+                (hmouse-goto-region-point): Renamed to 
hmouse-goto-region-prev-point, for clarity.
+                (hmouse-kill-and-yank-region, hmouse-kill-region): Used value 
of point saved in hkey-value to determine
+    the region if non-nil. 
+
+* hui-select.el (hui-select-delimited-thing, hui-select-thing): Changed to use 
use-region-p.
+  hmouse-drv.el (hmouse-use-region-p): Added and used to improve 
hmouse-drag-thing.
+                (hmouse-save-region): Simplified.
+  hui-window.el (hmouse-drag-region-active): Changed call of region-active-p 
to hmouse-use-region-p.
+
+
+* hui-window.el (hmouse-kill-and-yank-region): Fixed error that was testing 
not in depress buffer (as desired) but the
+    buffer prior to depress.  Also protected insertion from syntax-directed 
indentation errors.
+
+* hui-em-but.el
+  hui-xe-but.el (hproperty:but-create-on-yank): Added as handler for 
yank-handled-properties so explicit buttons are
+    re-highlighted when yanked after being killed.
+
+2017-11-06  Bob Weiner  <address@hidden>
+
+* hyrolo-demo.el (hyrolo-demo-quit): Added to unload hyrolo-demo code and used 
in demo.
+
+* man/hyperbole.texi (Menus): Documented hyperbole-popup-menu.
+
+* hui-menu.el (hyperbole-popup-menu): With a non-nil prefix arg, rebuild the 
Hyperbole popup menu in case it did
+    not initialize properly for any reason.
+
+* man/hyperbole.texi (Using URLs with Find-File): Added URL browser 
customization menu reference and image.
+                     (Smart Key - WWW URLs): Added browse-url-browser-function 
and Cust/URL-Display reference.
+                    (Referent Display): Added this section and documented 
display options for standard link referents.
+
+* hyrolo-logic.el (hyrolo-map-logic): Removed improper outline test for old 
format Emacs outlines.
+                  (hyrolo-fgrep-logical): Fixed to include sub-entries in 
logical searches.
+
+* hib-kbd.el (kbd-key:mark-spaces-to-keep): Added to preserve spaces in (), 
[], or <> delimited sections of
+    Hyperbole sequences of brace delimited keys; used this function in 
kbd-key:normalize.
+
+2017-11-04  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-windows-grid-buffer-list): Replaced all uses of (eq 
major-mode 'dired-mode) with
+    (derived-mode-p 'dired-mode) to generalize.
+
+2017-11-03  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (HyRolo Settings): Added Google Contacts set up and use 
description.
+
+* hyrolo.el (hyrolo-file-list-initialize): Made interactive and displayed a 
message with the resulting list
+    if called interactively.  Added autoload.
+            (hyrolo-initialize-file-list): Renamed from 
hyrolo-file-list-initialize.
+
+* hui-window.el (hmouse-split-window): Changed to split selected window 
parallel to its shortest dimension.
+
+* DEMO: Added new section on HyRolo.
+  DEMO-ROLO.otl: Added.
+  hyrolo-demo.el: Added with the functions hyrolo-demo-fgrep and 
hyrolo-demo-fgrep-logical.
+  hyrolo-logic.el (hyrolo-map-logic): Fixed issue where a buffer was required 
but a buffer name was
+    given as an argument preventing search from matching.
+                  (hyrolo-fgrep-logical): Fixed that logical searches were not 
forced to case insensitive
+    to match hyrolo-fgrep.  Also updated to handle non-logical string searches.
+
+* hbut.el (ebut:operate): Fixed issue where user had selected a region to use 
as a button label but then
+    the same text was inserted when the label was created.  Solved by moving 
point to the beginning of
+    any marked region so buffer text comparison succeeds.
+
+* hui-window.el (hmouse-x-coord, hmouse-y-coord): Simplified logic in GNU 
Emacs clause.
+                (hmouse-emacs-modeline-event-p): If a drag release was to an 
unselected frame mode-line,
+    on click-to-focus systems, the release event will not include the 
mode-line area when release was on
+    the mode-line, so manually compute if that was the location.
+
+2017-11-02  Bob Weiner  <address@hidden>
+
+* hmouse-drv.el (hkey-help): Fixed that arguments were being stripped from 
action calls in the help
+    output.
+
+* hibtypes.el (pathname): Fixed to handle "-subr.elc" whose prefix character 
"-" tells Hyperbole
+    to load, not display subr.elc.  Also handled subr.el.gz compressed source 
files.
+
+* hib-kbd.el (kbd-key): Prevented matches to brace delimited things that are 
not preceded by
+    whitespace or at the beginning of buffers, e.g. ${variable}.
+
+* man/hyperbole.texi (Implicit Buttons): Added examples.
+  hib-kbd.el (kbd-key): Improved doc.
+
+* hibtypes.el (hyp-address): Fixed to grab email address using thing-at-point 
and work in mail-mode
+    not just whatever mode hmail:composer is.
+              (Info-node): Added check for ``dual single quotes'' used in 
Texinfo smart quotes.
+
+* hpath.el (hpath:substitute-value):
+           (hpath:substitute-dir): Fixed to handle unbound symbol names.  This 
fixed an error when an
+    environment variable matched a symbol but the symbol was unbound, e.g. 
(hpath:substitute-value
+    "${PATH}/python")
+
+* hmouse-tag.el (smart-lisp-at-definition-p): Fixed to ignore lines like: 
(default (find-tag--default))
+    so the function in that line can be found as a tag.
+
+* HY-NEWS: Updated for next major release
+
+* man/hyperbole.texi (Button Colors): Added doc on 
hproperty:but-highlight-flag.
+                     (Hook Variables): Added doc of: action-key-depress-hook, 
action-key-release-hook,
+    assist-key-depress-hook and assist-key-release-hook.
+
+* hsettings.el (hproperty:but-highlight-flag): Added as a setting.
+  hui-em-but.el (hproperty:but-highlight-p): Renamed to 
hproperty:but-highlight-flag.
+                (hproperty:but-emphasize-p): Renamed to 
hproperty:but-highlight-flag.
+  hui-xe-but.el (hproperty:but-highlight-p): Renamed to 
hproperty:but-highlight-flag.
+                (hproperty:but-emphasize-p): Renamed to 
hproperty:but-highlight-flag.
+
+2017-11-01  Bob Weiner  <address@hidden>
+
+* hib-kbd.el (kbd-key:special-sequence-p): Added and used in implicit button 
type kbd-key and kbd-key:act.
+             (kbd-key:key-and-arguments): Added to allow for key sequences 
with interactive arguments and
+    added an example in DEMO.
+
+* hui-mini.el (hui:menus):
+  hui-menu.el (hui-menu-key-bindings): Added Find Web and Jump Thing key 
binding change entries.
+
+* hyperbole.el (mouse-position-function): Added this setting to make 
mouse-position and mouse-pixel-position
+    always return the selected frame.
+
+* hsettings.el (helm-allow-mouse): Changed to require Hyperbole-modified 
branch of Helm named global_mouse
+    and set helm-allow-mouse to the proper value of 'global-mouse-bindings.
+
+* man/hyperbole.texi (Version): Updated to 6.0.2g and rebuilt output formats.
+
+* hui-window.el (hmouse-prior-active-region): Changed to call use-region-p 
rather than active-region-p, for a tighter test.
+    This is used as a predicate; fixed bug that moved point, causing Smart Key 
release logic to use the wrong point.
+
+* hmouse-key.el (hmouse-add-unshifted-smart-keys): Removed GNU Emacs-only 
dependencies.
+
+* kotl/kotl-autoloads.el: Renamed from kotl/kotl-loaddefs.el to match package 
autoload naming scheme.
+
+* hmouse-sh.el (hmouse-unshifted-setup): In Info-mode, Emacs uses 
key-translation-map to link mouse-1 to do whatever
+    mouse-2 does but because Hyperbole uses both down and up bindings on 
mouse2, this does not work.  So we rebind
+    mouse-1 and double-mouse-1 in Info mode to be actual Action Mouse Keys 
(which makes them follow Info
+    links/cross-references properly, doing a superset of what they did before).
+               (hmouse-posn-set-point): Added to handle frames rather than 
windows returned by some events; used in
+    hmouse-move-point-emacs.
+
+* hui-mouse.el (hmouse-tag): Added require of hmouse-info and hmouse-tag for 
smart-info, smart-lisp etc. when autoload
+    file is not available.
+
+* hmouse-sh.el (hmouse-bind-key-emacs):
+  hui-select.el (hui-select-initialize): Added missing double-down-* and 
triple-down-* bindings.
+
+2017-10-31  Bob Weiner  <address@hidden>
+
+* hyperbole.el (hyperb:init): Added an "Initializing Hyperbole..." message at 
the beginning of this function.
+    Removed 'Hyperbole loading' message at the beginning of this file since 
Emacs load function outputs a similar
+    message.  Moved Hyperbole 'ready for action' message here rather than at 
the end of this file since Hyperbole
+    initialization may be deferred until after Emacs initializaton time.  
Hyperbole init. is complete only after
+    this function is run.
+
+2017-10-30  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Glossary): Removed mention of old remote file access 
packages: ange-ftp and EFS.  Use Tramp only
+    now.
+                     (Searching and Summarizing): Renamed from Location.
+
+* hibtypes.el (mail-address): Made lower priority than pathname so when an 
email-like address@hidden is part of a remote
+    pathname, this won't trigger.
+
+* hpath.el (hpath:remote-at-p): Fixed to return /ftp: prepended to ftp paths 
since Tramp requires it.
+           (hpath:rfc): Prepended /ftp: to value so tramp recognizes it as a 
remote file path.
+
+* man/hyperbole.texi (Smart Mouse Key Modifiers):
+  hmouse-mod.el: Disabled this feature since it conflicts with present Emacs 
bindings of Control- and Meta- mouse keys.
+
+* hui-mini.el (Doc/Manifest):
+  hui-menu.el (Documentation/Manifest): Changed to use 
hypb:display-file-with-logo so can quit after viewing.
+
+* hversion.el (id-browse-file): Changed alias from find-file-read-only to 
view-file.
+  hui-mini.el (Doc/SmartKeys): Changed command used to match that used when 
same doc is displayed with a click at the right
+    of a modeline.
+
+* man/hyperbole.texi (Smart Keys): Added section on Smart Mouse Key Drags to 
match those in the DEMO file.
+                     (Global Key Bindings): Replaced hkey-toggle-bindings with 
proper reference to
+    hyperbole-toggle-bindings.
+                     (Smart Key Bindings): Included hyperbole-toggle-bindings 
(toggles keyboard and mouse keys)
+    rather than hmouse-toggle-bindings (toggles only mouse keys); moved the 
latter to the Global Key Bindings appendix.
+
+2017-10-27  Bob Weiner  <address@hidden>
+
+* man/hyperbole.css: Added to format HTML version of the Hyperbole manual like 
the Hyperbole web page, greatly improving
+    its appearance.
+
+* man/hkey-help.txt:
+  man/hyperbole.texi (Modeline Clicks and Drags):  Documented new drag below.
+  hui-window.el (hmouse-alist): Added context of a drag from a window with a 
release to a modeline which for Action Mouse
+    Key splits the release window (which contains the modeline) and then 
displays the item or the buffer from the depress
+    window in the release window.  With the Assist Mouse Key, just swaps 
buffers with no new window creation.
+
+                (hmouse-modeline-click): Updated to do full testing for a 
click, so this can be called at any point
+    after Smart Mouse Key release.
+                (hmouse-buffer-to-window, hmouse-item-to-window): Added 
optional boolean new-window parameter to force
+    a new window before buffer display.
+                (hmouse-split-window): Added.
+               (hmouse-modeline-event-p): Fixed conditional error that caused 
fall through past Modern GNU Emacs clause.
+               (action-mouse-key, assist-mouse-key): Set above new variables.
+                (action-key, assist-key): Added clear of any value of 
*-key-depress/release-position.
+  hmouse-drv.el (action-key-release-position, assist-key-release-position): 
Added these to compare to existing
+    *-key-depress-position value.
+
+* README.md, HY-ANNOUNCE: Updated for public release.
+
+2017-10-26  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Smart Mouse Drags outside a Window): Added this new 
section.
+    Updated manual with all new drag actions.
+
+* hui-window.el (hmouse-goto-region-point, hmouse-prior-active-region): 
Rewrote these to work properly so that Smart
+    Mouse yanking and killing feature works as documented.  Previously, it was 
not switching to the buffer of the
+    depress point when checking for an active region.
+
+* hmouse-drv.el: Updated doc.
+
+* MANIFEST (topwin): Renamed to topwin.py.
+
+* hycontrol.el (hycontrol-windows-grid): Improved doc.
+
+* hyperbole.el (hkey-initialize): Added global {C-c @} binding to 
hycontrol-windows-grid.
+  hui-mini.el (hui:menus): Under cust-keys, added GridOfWindows key change 
entry.
+  hui-menu.el (hui-menu-key-bindings): Added Grid-of-Windows-Key entry.
+  man/hyperbole.texi (Global Key Bindings): Documented this binding.
+
+* DEMO (Modeline Mouse Clicks): Added section, "Running Dired on the Current 
Directory".
+
+* man/hyperbole.texi (Smart Key - Image Thumbnails): Added this section.
+                     Wrapped all images with @example and removed @center so 
do not appear way to the left of text when
+    formatted as html.
+                     (Koutliner): Centralized all key binding index entries 
under "koutliner, ".
+                    (Glossary): Added Windows Grid entry.
+                    (HyControl): Added Concept Index entries.
+                    (Manual Overview): Improved pointer to DEMO.
+
+* hycontrol.el (hycontrol-windows-grid-rows-columns): Renamed to 
hycontrol-make-windows-grid.
+               (hycontrol--frames-prompt-format, 
hycontrol--windows-prompt-format): Changed FRAME: and WINDOW: prompt
+    to plural to match mode and variable names.
+
+2017-10-25  Bob Weiner  <address@hidden>
+
+* hycontrol.el: Extended initial commentary with new features and improved 
explanations.
+                (hycontrol-split-windows-rows-columns): Modified to 
temporarily exit HyControl mode if need
+    to read a rows-columns argument.
+                (hycontrol-split-windows-buffer-list, hycontrol-split-windows, 
hycontrol-split-windows-by-major-mode
+                hycontrol-split-windows-repeatedly, 
hycontrol-split-windows-rows-columns): Renamed by replacing
+    'split-windows' with 'windows-grid'.
+                (hycontrol-window-minimize-lines): Previously did not resize 
window if it could not display all of the
+    buffer lines in the window.  Now will resize to 1 line if cannot or if all 
lines are already displayed.
+                (hycontrol-split-windows-buffer-list): Added doc string.
+
+* DEMO (HyControl): Added interactive examples of newest HyControl commands.
+
+* hui-window.el (hmouse-goto-depress-prev-point): Fixed to handle when no 
prev-point is saved.
+                (hmouse-drag-region-active): Return nil if no prev-point saved.
+
+* hpath.el (hpath:is-p): Fixed to handle single % in path argument when sent 
as format string near the
+    end of the function.
+
+* hib-kbd.el (kbd-key:normalize): Quoted % characters as %% to prevent format 
from treating them specially.
+             (kbd-key:hyperbole-hycontrol-key-p): Added to match key sequences 
within HyControl since
+    its prefix arguments are specified without C-u or ESC or META prefixes.
+             (kbd-key, kbd-key:act): Used above function here.
+
+* hmouse-drv.el (hkey-either): Fixed to ignore prefix args set by HyControl.
+
+* hyperbole.el (hkey-initialize):
+  hui-menu.el (hui-menu-key-bindings): Changed {C-c \} entry from 
hycontrol-windows to new hycontrol-enable-windows-mode.
+
+2017-10-24  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Version): Updated to 6.0.2f and rebuilt output formats.
+
+* hycontrol.el (hycontrol-universal-arg-digit): Removed first argument and 
replaced with global hycontrol-arg,
+    so could set this value internally.
+
+               (hycontrol-debug): Renamed from hycontrol--debug.  Made public 
so can be set directly.
+               (hycontrol-setup, hycontrol-frames, hycontrol-windows): : 
Removed debug parameter; no longer needed since
+    all events are handled normally by Emacs now.
+
+               (hycontrol-windows-mode-map): [ and ] bindings; don't call 
these interactively because a prefix arg of 1
+    tries to make one window 1 line tall.
+
+               (hycontrol-split-windows-repeatedly): Added to allow rapid 
visual testing of various window layouts until
+    satisfied.
+
+               (hycontrol-post-command-hook): Made this automatically quit 
from HyControl whenever a minibuffer prompt
+    becomes active so can use regular keys to type.
+
+              (hycontrol-invert-mode-line-flag, hycontrol-invert-mode-line): 
Added to invert mode-line to emphasize the
+    special key bindings in effect in HyControl modes.
+
+2017-10-23  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-split-windows-buffer-list): Added to prefix 
buffer-list with any marked items
+    when in a Dired, Buffer-Menu or iBuffer listing buffer.  If any such items 
exist, the buffer-list
+    is not filtered by hycontrol-display-buffer-predicate-list.
+
+               (hycontrol-pre-command-hook): Added and changed setting of 
prefix-arg to pre-command-hook.  This set it
+    properly for HyControl commands.
+
+               (hycontrol--prompt-format): Added to generalize help prompt 
handling.
+               (hycontrol-post-command-hook): Replaced windows and frames 
post-command-hook with this one.
+
+               (hycontrol-frames-mode, hycontrol-windows-mode): Made these 
global minor modes and added their
+    variables to the hyperbole-screen group.  Buffer local minor modes renamed 
to hycontrol-local-*-mode.
+               (hycontrol-quit-frames-mode, hycontrol-quit-windows-mode): 
Changed defs to disable its global
+    minor mode.
+
+               (hycontrol-post-command-hook): Fixed so HyControl help messages 
are not logged to the
+    *Messages* buffer.
+
+               (hycontrol-disable-modes): Added.
+
+* set.el (set:create): Added autoload in case is ever used without a require.
+
+* hycontrol.el (hycontrol-split-windows, hycontrol-split-windows-rows-columns, 
hycontrol-split-windows-by-major-mode):
+    Incredible new autoloaded commands that split a frame into a number of 
balanced
+    windows specified by rows and columns (typically as prefix arg
+    digits).  Each window shows a different buffer, if possible, with the
+    by-major-mode command preferring buffers with the specified major mode.  
The hycontrol-split-windows
+    chooses the by-major-mode command when given a prefix arg of 0; otheriwse, 
the rows-column one.
+               (hycontrol-window-display-buffer, 
hycontrol-display-buffer-predicate-list)
+                hycontrol--invert-display-buffer-predicates): Added to support 
new commands.
+               (require 'set): Added for set:create used in 
hycontrol-split-windows-by-major-mode.
+               (hycontrol-*-mode-map): Bound address@hidden to 
hycontrol-split-windows-rows-columns, also in Buffer-menu,
+    IBuffer and Dired modes.
+
+* hycontrol.el (hycontrol--initial-which-key-inhibit): Added.
+               (hycontrol-end-mode, hycontrol-frames, hycontrol-windows): Used 
above flag.
+
+              (hycontrol-setup): Refactored common parts of hycontrol-frames 
and hycontrol-windows here.
+              (hycontrol-frames-setup, hycontrol-windows-setup): Added and 
used in
+    hycontrol-frames and hycontrol-windows, respectively.
+
+2017-10-22  Bob Weiner  <address@hidden>
+
+* Makefile ($(pkg_dir)/hyperbole-$(HYPB_VERSION).tar): Ensured `topwin.py' 
script was made executable.
+  hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Changed to find 
`topwin.py' executable in
+    hyperb:dir so no additional installation is necessary.
+
+* hycontrol.el (hycontrol-window-to-new-frame): Fixed to duplicate prior 
selected window size properly.
+
+* hui-window.el
+  man/hkey-help.txt: Noted that a modeline click on a dired Buffer ID shows 
the parent directory.
+
+2017-10-20  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-help-flag):
+               (hycontrol-toggle-help): Added to allow toggling minibuffer key 
binding help off.
+              (hycontrol-frames-mode, hycontrol-windows-mode): Made HyControl 
modes into minor modes.
+               (hycontrol-enable-frames-mode, hycontrol-enable-windows-mode): 
Renamed from
+    hycontrol-toggle-to-*-mode.
+  man/hyperbole.texi (HyControl): Updated documentation with these changes.
+
+* hbut.el (ibtype:create): Expanded this doc for defact, explaining how 
actions are connected to its
+   'at-p' parameter.
+
+* hycontrol.el (hycontrol-abort-mode): Added and used when {C-g} is pressed; 
exits HyControl
+    and executes (keyboard-quit).
+               (hycontrol-end-mode, hycontrol-quit-frames-mode, 
hycontrol-quit-windows-mode,
+                hycontrol-toggle-to-frames-mode, 
hycontrol-toggle-to-windows-mode): Added
+    and used as key bindings.
+    (hycontrol-exit-mode): Deleted and replaced with above commands.
+
+    (hycontrol-frame-fit-to-screen): Changed to adjust width and height 
separately which fixed
+      a bug in our call to set-frame-size which kept increasing the frame 
height slightly.
+
+    (hycontrol-frames, hycontrol-windows): Prevented `which-key' package from 
popping up its key
+       help and interferring with the minibuffer message while in HyControl.  
Otherwise, the
+       which-key help could be left onscreen after a quit of HyControl.
+
+* hui-window.el (hmouse-pulse-flag): Made t the default because timing and 
display issues with
+    pulsing drag items were resolved now.
+
+2017-10-19  Bob Weiner  <address@hidden>
+
+* Makefile (pkg): Changed hyperbole source dir from hyperbole-<version> to 
hyperbole since that
+    is the name of the git repo top-level directory from which packages are 
now built.
+
+* hui-jmenu.el (hui-menu-hywconfig): Fixed improper variable reference that 
kept Delete-Name
+    and Restore-Name from ever being active.
+
+2017-10-19  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Version): Updated to 6.0.2e and rebuilt output formats.
+
+* hycontrol.el (hycontrol-frame-adjust-widths, hycontrol-frame-adjust-heights,
+    hycontrol-frame-adjust-widths-full-height, 
hycontrol-frame-adjust-heights-full-width,
+    hycontrol-set-width-percentage-full-height, 
hycontrol-set-height-percentage-full-width,
+    hycontrol-frame-widths-pointer, hycontrol-frame-widths, 
hycontrol-frame-heights-pointer,
+    hycontrol-frame-heights: Added to cycle through resizing height or width 
of frames to
+      common sizes.  Also cycle through one dimension while fixing the other 
dimension
+      at full-screen size.
+    (hycontrol--frames-prompt-format): Added {a} and {A} bindings to both 
frames and windows
+        keymaps to adjust frame width and height respectively by cycle through 
a list of common
+        fixed percentages such as 25% and 50%.  Added to Hyperbole manual.
+
+2017-10-18  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-restore-frame-configuration, 
hycontrol-restore-window-configuration,
+                hycontrol-save-configurations, hycontrol-delete-other-frames,
+                hycontrol-delete-other-windows, 
hycontrol-clone-window-to-new-frame
+                hycontrol-make-frame): Made interactive.
+               (hycontrol-frames, hycontrol-windows): Forced arg to numeric 
value on entry.
+              (hycontrol-stay-in-mode, hycontrol-universal-arg-digit,
+               hycontrol--debug, hycontrol--exit-status, hycontrol-arg,
+               hycontrol--frames-prompt-format, 
hycontrol--windows-prompt-format,
+               hycontrol-frames-pre-command-hook, 
hycontrol-windows-pre-command-hook,
+               hycontrol-frames-mode-map, hycontrol-windows-mode-map, 
hycontrol-exit-mode): Added.
+              (hycontrol-prettify-event, hycontrol-handle-event): Removed.
+
+              (hycontrol-frames, hycontrol-windows): Rewrote HyControl to use 
a frame-mode
+   and window-mode transient keymap which allows for regular key bindings and 
eliminates
+   the need for a HyControl event loop and processing of non-HyControl events. 
 There should
+   be no change in HyControl user-visible behavior from this other than that 
key bindings
+   may now be customized (remember to update the HyControl minibuffer prompts 
if you do change
+   any).  And mouse wheels now work for fast multi-window scrolling.
+
+2017-10-17  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-screen-offset-alist, hycontrol-set-screen-offsets,
+                hycontrol-display-screen-offsets):
+    Changed ordering of items to match Emacs window-edges and frame-edges.
+               (hycontrol-fit-to-screen): Added and used to ensure resized and 
repositioned
+    windows fit on the screen.
+               (hycontrol-set-frame-height, hycontrol-set-frame-position, 
hycontrol-set-frame-size,
+                hycontrol-set-frame-width): Added with calls to 
hycontrol-fit-to-screen.
+
+* man/hyperbole.texi: Removed InfoDock and XEmacs references since they are so 
old and no
+    longer maintained that no one uses them today.
+
+* hmouse-sh.el (hmouse-unshifted-setup): Changed to enable right mouse key as 
Assist Key unless
+    optional argument MIDDLE-KEY-ONLY-FLAG is non-nil (which is how it is 
called from
+    hmouse-shifted-setup).
+
+* hycontrol.el (hycontrol-frame-percentage-of-screen): Automatically adjusted 
out of bounds
+    percentages to the closest number of 0 and 0.998 (so does not overflow 
screen.
+    Automatically moved frame if right or bottom edges are offscreen as a 
result of size change.
+
+* DEMO (Dragging Buffers and Windows): Renamed this from 'Moving Buffers' and 
added subsections.
+
+2017-10-16  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Smart Key Modeline Clicks): Renamed from Smart Key 
Modeline.  Added
+    up-to-date info on click locations and actions.
+                     (Implicit Buttons): Added git-reference, 
git-commit-reference and
+    github-reference.
+                     (Future Work): Added Direct Manipulation section.
+                    (Smart Keys): Moved before Buttons chapter since Buttons 
references
+    Smart Keys and the benefits of Smart Keys are quicker to understand.
+
+* hui-mouse.el (smart-dired, smart-dired-assist): Made end of first line 
behave just like
+    last line for quitting and executing actions.
+
+* hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Further optimized 
for when
+    depress and release windows are the same and frame has an auto-raise 
property, then we
+    know release window was uppermost at the point of release and can skip 
finding what app
+    owned the topmost window.
+
+* hui-window.el (hmouse-dired-readin-hook):
+                (hmouse-dired-display-here-mode): Added and used in 
hmouse-drag-item-mode-forms.
+    Once a dired buffer item has been dragged, make next Action Key press on 
an item display it
+    in the same dired window.
+  man/hyperbole.texi (Smart Key - Dired Mode): Documented here and in 
smart-dired function.
+
+* man/hkey-help.txt:
+  hui-window.el: Updated drag acton summaries with the latest information.
+
+* hui-window.el (hmouse-drag-vertically-within-emacs): Added to allow for 
modeline vertical drags
+    between windows.
+
+* hui-mouse.el (smart-dired-pathname-up-to-point): Added this to change the 
behavior of smart-dired.
+    When on the first line of a Dired buffer where its directory path is 
shown, treat any ancestor
+    subdirectory of the current directory as a selectable path.  Thus, you can 
run Dired on any
+    ancestor subdirectory simply by pressing the Action Key at the end of the 
subdirectory you want.
+    A press on the first / character, runs dired on the root directory.
+  man/hyperbole.texi (Smart Key - Dired Mode): Updated doc to reflect this 
change.
+
+* hui-window.el (hmouse-drag-between-frames): Removed from hmouse-alist; treat 
this context
+    the same as a drag between windows within one frame, for consistency.
+
+* hui-menu.el (hui-menu-key-bindings): Added for use as menu filter for
+    Hyperbole/Options/Change-Key-Bindings so displayed key bindings are always 
up-to-date.
+
+* hui-mouse.el (smart-outline-level): Added and used instead of 
(outline-level) which assumes
+    its caller has already generated match data, which is not always the case 
in Hyperbole.
+
+* hmouse-sh.el (hmouse-move-point-emacs): Added 
mouse-select-region-move-to-beginning handling
+    that appeared in Emacs 26.1 and noted this in the function documentation.
+
+* hui-window.el (hmouse-buffer-to-window): Added along with drag from 
mode-line to another
+    window context to replace the buffer in a dest. window with the buffer 
from the source
+    window.
+
+* hib-debbugs.el (debbugs-query:at-p): eliminated match of #id-number and 
always required
+   'bug' or similar prefix so there is no ambiguity with social references 
including
+   git #commit-number.
+
+* hmouse-drv.el (hkey-help): Updated to handle call-interactively actions and 
'or'ed action
+    intelligently when printing action documentation.
+
+2017-10-15  Bob Weiner  <address@hidden>
+
+* hmouse-drv.el (action-key-depress-position, assist-key-depress-position): 
Added to
+    test whether or not last Action Mouse Key event was a mouse click 
(non-drag event).
+
+2017-10-14  Bob Weiner  <address@hidden>
+
+* hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Added optional 
Python script,
+    topwin.py, for macOS window-system only.  It determines the topmost 
application window at
+    the given position and returns the application name, so Emacs can tell if 
its frame is
+    obscured by another application or not.
+                (hmouse-verify-release-window-flag): Added so can turn off use 
of the macOS
+    Python script when desired since it slows Smart Key action handling at 
least 1/3 of a
+    second.
+
+* hycontrol.el (hycontrol-frames): Changed = command call to set-frame-size to 
use pixel
+    dimensions rather than chars/lines for better accuracy.
+    (hycontrol-window-to-new-frame): Same.
+
+* hui-menu.el (hui-menu-key-binding-item): Added.
+
+* hmouse-drv.el (hmouse-set-point): Fixed to return a posn object as a 
fallback, i.e. what
+    event-start and event-end return; previously, had returned point as a 
marker in this case.
+    Keyboard-based emulation of mouse drags via hkey-operate had been broken; 
this fixed it.
+* hui-window.el (hmouse-x-coord, hmouse-y-coord): Updated to accept a posn.
+                (hmouse-modeline-event-p): Ignored case where args is a posn 
or point-marker,
+    not an event.
+
+2017-10-13  Bob Weiner  <address@hidden>
+
+* hversion.el (hyperb:window-sys-term): Emacs set-frame-parameter does not 
return the value, so
+    this function was always returning nil.  Fixed it to return what the doc 
says it does.
+
+* hycontrol.el (hycontrol-frame-at-left-p, hycontrol-frame-at-top-p, 
hycontrol-frame-at-right-p,
+    hycontrol-frame-at-bottom-p): Added.
+    (hycontrol-frame-expand-to-*): Rewrote these: first they expand a frame to 
a particular edge;
+      then the next invocation when already at that edge, cuts that frame 
dimension in half from the
+      opposite side (or to any percentage specified as an argument), leaving 
the particular edge fixed.
+      Renamed to hycontrol-frame-resize-to-*.  This allows both rapid 
expansion and contraction of
+      frames with just 4 keys whenever needed.
+    (hycontrol-frame-resize-percentage, hycontrol-frame-resize-arg): Added as 
support functions.
+    (hycontrol-frame-edges): Added to ensure outer edges of frames are always 
used.
+    (hycontrol-frames): Added arg as a 0-100 percentage for i,j,k,m commands.
+    (hycontrol-windows): Added same c (cycle frame positions), i,j,k,m keys 
and numeric
+       keypad keys to here.
+    (hycontrol-frames/windows): Added p (virtual numeric keypad) to allow 
keyboard-based frame
+       quadrant movement when a numeric keypad is not available.  This can be 
interrupted
+       with a q to return to the control menu or a C-g to abort the control 
menu.
+
+* hui-window.el (hmouse-horizontal-action-drag): Replaced doc typo of 
'vertical' with 'horizontal'.
+
+* DEMO (Help buffers): Added description of how to get help for Smart Mouse 
Key-only events.
+
+* hycontrol.el (hycontrol-windows, hycontrol-frames): In window-control mode, 
changed {f}
+    to clone window to new frame without deleting the source window to match 
similar
+    Action Key drag from window/modeline to outside of any Emacs window.  
Added {F} to clone but
+    delete the source window.  Added these 2 bindings to frame-control mode 
too.  Documented
+    in Hyperbole manual.
+
+    Expanded control help to 4 lines, added = command to equalize sizes of 
windows/frames,
+    added f/F commands.
+
+* hibtypes.el (texinfo-ref): Added doc display for Emacs Lisp @findex 
(function) and @vindex
+   (variable) entries.  Changed so does nothing if function or variable is 
unbound.
+   Updated its doc string and doc in the Hyperbole manual.
+
+* hmouse-drv.el (hkey-help): Changed to print "WHICH WILL:" rather than 
"WHICH:" when the first
+    word of the doc string does not end in an 's', e.g. "Display this" instead 
of "Displays this".
+
+* hui-window.el (hmouse-release-left-edge): Noted that left edge mode-line 
clicks must be on the
+    first blank character of the mode-line because Emacs overrides the Smart 
Mouse Key bindings
+    immediately after that position.  Noted in Hyperbole manual as well.
+
+* Makefile (version): Added hyperbole.el to version check.
+  hyperbole.el: Updated the Commentary with a description of Hyperbole in case 
the Emacs package
+    system or a user looks here for it.
+
+* hycontrol.el (hycontrol-clone-window-to-new-frame): Added and used in 
hmouse-alist.
+
+2017-10-12  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-window-to-frame): Renamed to 
hycontrol-window-to-new-frame.
+               (hycontrol-keep-window-flag): Added: When non-nil (default is 
nil), leave
+    original window when tear off window to another frame.
+
+* hui-window.el (hmouse-emacs-modeline-event-p, hmouse-modeline-event-p): 
Added.
+    (hmouse-modeline-depress, hmouse-modeline-release): Simplified and speeded 
up for GNU Emacs.
+    (action-key-modeline, assist-key-modeline):
+  man/hyperbole.texi (Modeline Clicks and Drags): Updated with new modeline 
buffer id click actions.
+  man/hkey-help.txt: Updated with most new drag and click actions.
+
+* hywconfig.el: Changed all (called-interactively-p 'interactive) to 
(called-interactively-p)
+    so will work if called interactively from one of the Smart Key lists.
+
+* DEMO: Fixed a number of small issues with implicit buttons therein.
+
+* hui-window.el (hmouse-drag-diagonally, hmouse-drag-horizontally, 
hmouse-drag-vertically):
+    Added explicit test that press and release are in the same window.
+    (hmouse-drag-item-to-display, hmouse-item-to-window): Added dired support.
+    (hmouse-pulse-flag): Disabled by default due to sluggishness and improper 
visuals at times.
+    (hmouse-map-modes-to-form, hmouse-drag-item-mode-forms): Added.
+    (hmouse-drag-item-to-display, hmouse-item-to-window): Updated to use the 
new variable,
+       hmouse-drag-item-mode-forms so users can add new modes for named item 
drags.
+
+* hui-window.el (hmouse-drag-between-frames): Added and used in hmouse-alist.
+                (hmouse-alist): Added modeline drags between frames and 
outside of Emacs.
+    Added window drags outside of any window (outside of Emacs).
+                (hmouse-clone-window-to-frame): Added and used in hmouse-alist.
+  man/hkey-help.txt: Updated with latest modeline and between window drag 
movements.
+
+2017-10-11  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-window-to-frame): Modified in the case of only one 
window in the frame,
+    then clone the window into a new frame.  This allows you to create a bunch 
of staggered frames
+    when in Window Control mode.  Also made this an autoload and called in 
"hui-window" within
+    hmouse-alist.
+
+* hui-window.el (hmouse-drag-outside-all-windows): Added to handle the case 
where a drag release is
+    outside of any Emacs window or frame and used in hmouse-alist.
+
+* hmouse-drv.el (hmouse-vertical-line-spacing): Added and used to compute 
vertical character positions.
+                (hmouse-key-release-window-emacs): Renamed to 
hmouse-key-release-window and used in
+    hmouse-function to set action/assist-key-release-window accurately.
+                (hmouse-function): Fixed so 
action/assist-key-release-prev-point is set properly,
+    before point is set to the location of the mouse button release.
+
+* hui-window.el (hmouse-drag-thing): Fixed to handle when release location is 
outside Emacs and
+    end-point is nil.
+                (hmouse-drag-same-window): Added and used in horizontal and 
vertical drag tests.
+
+* hmouse-key.el (hmouse-update-smart-keys): Extended to also re-initialize 
Smart Key bindings.
+
+* hmouse-drv.el (smart-scroll-up): Removed 's' from the end of verbs in all 
function comments,
+   e.g. scroll window instead of scrolls window, for consistency within the 
file.
+   (hmouse-window-at-absolute-pixel-position, hmouse-window-coordinates): 
Added to compute the
+      actual window and location of the release of a mouse drag which Emacs 
does not compute.
+      Proper top-to-bottom listing of frames is available only in Emacs 26 and 
above.  For
+      prior versions, the ordering of the frames returned is not guaranteed, 
so the frame
+      whose window is returned may not be the uppermost.
+
+   (hmouse-key-release-window-emacs, hmouse-key-release-args-emacs): Updated 
to use new window
+      of release functions.  Now drags between frames work properly.
+
+2017-10-10  Bob Weiner  <address@hidden>
+
+* hyperbole.el (after-init-time): Added hyperb:init to the end of 
after-init-hook;
+   previously was added at the beginning.  This is intended to ensure that 
Hyperbole
+   key bindings are set after any others, notably {M-RET}.
+
+* hypb.el (hypb:rgrep-command): Changed to zgrep when available to handle 
compressed source files.
+
+2017-10-09  Bob Weiner  <address@hidden>
+
+* hibtypes.el (annot-bib): Eliminated matches for any programming mode (modes 
derived from `prog-mode').
+
+* README.md: Fixed link markup in Mailing Lists and Ftp and Git Source 
Code-only Downloads
+
+2017-10-08  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Implicit Buttons): Re-arranged types to reflect newest 
prioritization.
+
+* hib-social.el (github-reference): Added support for showing status of Github 
services
+    with gh#status.
+
+2017-10-06  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Hiding and Showing): Added paragraph on using {C-x 4 c} 
to clone
+    a Koutline and display multiple views of it.  But commented this out 
because of an
+    Emacs bug which alters the narrowing of indirect buffers after an outline 
hide or show.
+
+2017-10-06  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Version): Updated to 6.0.2d and rebuilt output formats.
+
+* Makefile (README.md.html): Added build rule as part of 'make doc'.
+  README*: Rewrote the Summary intro paragraph and first two numbered items in 
simpler terms
+    for new users.
+
+* hib-social.el (git-commit-reference): Added new implicit button type to 
display a diff for
+    any commit listed in 'git log' output.
+                (git-reference): Fixed a few typos and added support for 
git#=branch:file syntax
+    to view (not edit) a file from a specific branch.  Hyperbole finds which 
project the branch
+    and file are associated with if a default is not specified.  Documented in 
this file and DEMO.
+
+2017-10-05  Bob Weiner  <address@hidden>
+
+* hib-social.el (hibtypes-git-build-repos-cache): Fixed to prune matches like 
'file-git',
+    leaving just .git parent directories.
+                (hibtypes-git-find-execute, hibtypes-git-find, git-find-file): 
Added
+    to locate and edit any git-versioned filename.
+                (hibtypes-social-regexp, git-reference): Updated with 
git#=file syntax
+    to find git-versioned files by name.
+  DEMO (Git (Local) References): Added example of new git#=file implicit 
button.
+
+2017-10-04  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Version): Updated to 6.0.2c and rebuilt output formats.
+
+* hmouse-sh.el (hmouse-bind-key): Renamed to hmouse-bind-key-emacs since is 
emacs-only.
+               (hmouse-bind-shifted-key): Renamed to 
hmouse-bind-shifted-key-emacs.
+
+2017-10-03  Bob Weiner  <address@hidden>
+
+* hui-window.el (hmouse-alist): In hmouse-drag-horizontally test, removed 
check of
+   (not (hmouse-drag-between-windows)) since was tested earlier in 
hmouse-alist.
+                (hmouse-resize-window-side, hmouse-release-left-edge,
+                 hmouse-swap-buffers, hmouse-swap-windows,
+                 hmouse-modeline-resize-window, hmouse-release-right-edge,
+                 hmouse-modeline-click, hmouse-modeline-release): Removed 
optional
+    assist-flag arg; used assist-flag free variable instead.
+
+* hmouse-tag.el (smart-tags-display): Fixed to include tags-table found in any
+    ancestor directory of current directory when tags-table-list already
+    contains items.
+
+* hpath.el (hpath:find-program): Changed so Hyperbole external and internal
+    file suffix lists are consulted before using standard directory or
+    image display methods.  So for example, Emacs.app on macOS, which is 
actually
+    a directory, can be displayed/run externally.
+           (hpath:external-display-alist-macos): Added .app suffix.
+
+* hui-jmenu.el (hui-menu-buffer-mode-name): mode-name might not be a string; 
pass it through
+    format-mode-line to ensure it is a string.  Without this, 
hui-menu-of-buffers could
+    trigger an error on some buffers.
+
+2017-10-02  Bob Weiner  <address@hidden>
+
+* hui-window.el (hmouse-pulse-flag): Added to allow disabling visual pulsing 
in Action Mouse
+    Key buffer/file window placement.  Used in hmouse-pulse-buffer and 
hmouse-pulse-line.
+
+* hload-path.el (stringp): Forced use of hyperb:dir truename (after resolving 
pathname links).
+
+* hbdata.el (hbdata:build): Modified to ensure that but-sym or hbut:current 
(if but-sym is nil)
+    is updated with all modified button attributes.  This is used after 
interactive explicit
+    button creation or modification to display current attributes.
+
+* hui.el (hui:ebut-operate): Removed as this was obsoleted long ago; use 
ebut:operate instead.
+
+* hbut.el (ebut:operate): Updated documentation to clarify that this modified 
button properties,
+    notably its action's argument list.
+  hbut.el (hattr:copy, hattr:set):
+  hpath.el (hpath:substitute-var): Clarified documentation.
+
+* hui.el (hui:ebut-message): Added message for use when creating and modifying 
explicit buttons.
+         (hui:ebut-create, hui:ebut-modify): Called hui:ebut-message after 
interactively creating
+    or modifying an explicit button (just as hui:link-directly already did).
+         (hui:link-directly): Modified to call hui:ebut-message.
+
+* hact.el (actype:param-list): Added.
+  hui.el (hui:action): Fixed to handle parameter lists with keywords such as 
&optional.
+
+* hactypes.el (link-to-file): When modifying a link, changed to handle a 
variable in the pathname
+    and also to maintain any prior in-file location as a default when 
prompting for changes even
+    if the linked-to file is not yet loaded in a buffer.
+
+* hact.el (action:params-emacs): Added to use doc strings and autoload 
functions to get calling
+    signatures for Emacs25 byte-coded functions.  Previously, functions with 
bit-coded integer
+    argument parameter placeholders were not supported.
+          (action:params): Called action:params-emacs on byte-coded objects.  
Also, rewrote
+    to handle indirect byte-coded actions as well.
+
+2017-10-01  Bob Weiner  <address@hidden>
+
+* hui-window.el (hmouse-item-to-window): When drag from fixed menu header 
line, pulse the menu
+    buffer and move the menu buffer itself to the drag release window.
+
+* man/hyperbole.texi (Version): Updated to 6.0.2b and rebuilt output formats.
+
+* hycontrol.el (hycontrol-handle-event):
+               (hycontrol-prettify-event): Fixed to handle large integer code 
events, e.g. M-p.
+
+2017-09-30  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (HyControl):
+  hycontrol.el (hycontrol-frames, hycontrol-windows): Removed ESC as a quit 
command since now that
+    key sequences are supported, this is often used as a meta key prefix.  Use 
{q} to quit.
+
+* hact.el (actype:act, actype:action): Fixed regexp match to beginning of 
string; quote mark used
+   had somehow been changed to the end of string match regexp.  As a result, 
when explicit
+   buttons were being created or modified, no arguments were prompted for.
+
+* hargs.el (hargs:delimited): Removed unneeded properties from any returned 
string.
+
+* hpath.el (hpath:at-p): Added missing non-exist parameter to 
hpath:delimited-possible-path call.
+    This extends the prior bug fix for hpath:at-p.  See below.
+
+* hmouse-drv.el (hmouse-key-release-args-emacs): Updated to handle cross-frame 
drags properly
+    for when Emacs' event system is fixed to return the proper frame for a 
cross-frame drag
+    release event (as of 25.3, it returns the depress frame rather than the 
release frame).
+
+2017-09-29  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-prettify-event): Added.
+
+2017-09-28  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-handle-event): Expanded to handle single 
non-self-inserting
+    keys and key sequences.
+
+* man/hyperbole.texi (Version): Updated to 6.0.2a and rebuilt output formats.
+
+* man/hyperbole.texi (View Specs): Noted that ellipses can no longer be
+    turned off.
+  kotl/kvspec.el (kvspec:compute): Removed `e' ellipses viewspec because
+    it no longer works with modern Emacs outlining.
+                 (kvspec:update): Force display of `e' viewspec.
+                 (kvspec:activate): Changed to always compute new 
kvspec:current
+    even if requested view-spec seems the same so the 'e' viespec is added if
+    not included.
+
+* kotl/kotl-mode.el (kotl-mode): Handled removal of newest
+    outline-minor-mode mode-line indication for Koutlines.
+
+2017-09-28  Bob Weiner  <address@hidden>
+
+* hui-mouse.el (smart-push-button-help): Added 2nd optional arg, 
use-mouse-action,
+    which if non-nil, displays help for mouse-action property if any, and falls
+    back to action property otherwise.
+               (hkey-alist): push-button - Changed to use mouse-action if
+    last-command-event was a mouse event.  Previously, mouse actions were
+     not supported.
+
+* hmouse-tag.el (smart-lisp-at-tag-p): Changed to not match anywhere on the 
first
+    line of def constructs.  This aids in using Smart Keys for outline
+    folding within Lisp buffers.
+                (smart-lisp-at-definition-p): Added to test if point is on
+    the first line of a non-alias Lisp definition.
+                (smart-lisp-at-load-expression-p): Added to test if point
+    is on any type of Lisp library load expression.
+                (smart-lisp): Changed call of buffer-substring-no-properties
+    to match-string-no-properties.
+                (smart-lisp): Fixed regexp matching of require and autoload 
expressions.
+       For require and load, moved point to start of the buffer.
+       For autoload, triggered an error if library is found but symbol def is 
not.
+
+* hui-mouse.el (smart-outline-char-invisible-p): Substituted 
outline-invisible-p
+    call for kproperty:get, which may not yet be defined.
+               (smart-outline-subtree-hidden-p): Fixed to match only when 
point is
+    on a heading.
+               (smart-imenu-item-at-p): Updated to ignore when 
smart-lisp-at-definition-p
+    or smart-lisp-at-load-expression-p tests are true.
+               (hkey-alist): smart-imenu - ignored non-alias identifiers on the
+    first line of a Lisp def.
+
+2017-09-27  Bob Weiner  <address@hidden>
+
+* hui-mouse.el (smart-buffer-menu-no-marks): Added and called in 
smart-buffer-menu.
+               (smart-ibuffer-menu-no-marks): Added and called in 
smart-ibuffer-menu.
+    Makes Action Key display the selected buffer in the buffer menu window 
(like RET does)
+    rather than restoring previous window configuration and then displaying 
buffer.  This
+    works better with the new buffer item drag to display in a window feature.
+
+* hui-window.el (pulse): Added require for momentary highlighting of 
buffer/file
+    item lines.
+                (hmouse-pulse-line): Added.
+                (hmouse-item-to-window): Added pulses to source and dest. 
lines.
+
+2017-09-26  Bob Weiner  <address@hidden>
+
+* hmouse-drv.el (action-key-depress): Added action-key-depress-hook.
+                (assist-key-depress): Added assist-key-depress-hook.
+               (action-mouse-key):   Added action-key-release-hook.
+               (assist-mouse-key):   Added assist-key-release-hook.
+                (action-key): Added action-key-depress/release-hook.
+               (assist-key): Added assist-key-depress/release-hook.
+  hui-window.el (action-key-depress-hook): Set to select helm items
+    prior to a drag outside the helm buffer window.
+
+* hui-mouse.el (smart-helm-line-has-action): Fixed to use position of
+    Action Key depress; this properly selects the item chosen, even when
+    a cross-window drag is used; this allows helm buffer and file items to
+    be used in Hyperbole drag actions.
+
+* hib-social.el (github-reference): Added support for
+    gh#orgs/<org-name>/people query to list users in an org.
+
+* hmouse-drv.el (hmouse-depress-inactive-minibuffer-p): Improved doc and
+    changed param name to `event'.
+                (action-key-depress-window, assist-key-depress-window):
+    Improved doc.
+
+* hui-window.el (smart-coords-in-window-p, smart-window-of-coords,
+                 hmouse-inactive-minibuffer-p):
+  hmouse-drv.el (hmouse-depress-inactive-minibuffer-p):
+  hargs.el (hargs:select-event-window): Updated to handle multiple frames and 
minibuffers.
+
+* hui-window.el (hmouse-alist): Extended hmouse-drag-between-windows to
+    allow dragging items from a buffer menu or file menu buffer to a 
destination
+    window for display.  Helm buffer items are supported as well.
+                (hmouse-item-to-window, hmouse-drag-buffer-to-window): Added.
+  hui-mouse.el (smart-helm-to-minibuffer): Added to encapsulate when to
+    return to minibuffer, and called.
+
+* hversion.el (hyperb:version): Start adding a letter at the end of the 
version number for
+    significant pre-releases published to git, so we know which version is in 
use.
+
+2017-09-25  Bob Weiner  <address@hidden>
+
+* hui-mini.el (hui:menu-item): Improved so that if menu item has no help 
string but its action is a
+    function with a doc string, then it will use the first line of the action 
doc string for displaying
+    help on the item.
+
+* hmouse-key.el (hmouse-check-action-key, hmouse-check-assist-key): Added to 
check that both depress
+    and release events are set to Smart Mouse Keys.  Mainly for use with helm. 
 Called from smart-helm
+    and smart-helm-assist respectively.
+
+* hui-mouse.el (action-key-error, assist-key-error): Maded explicit these are 
messages from Hyperbole.
+               (smart-helm-at-header): Corrected doc string.
+              (smart-helm-at): Added to test type of helm thing point is at.
+              (smart-helm, smart-helm-assist): Updated to complement each 
other better; made section header
+    clicks work.
+
+* hmouse-key.el (hmouse-add-unshifted-smart-keys): Renamed from 
hmouse-add-unshifted-keys.
+    Made interactive and added error if invoked under something other than GNU 
Emacs 19 or higher.
+                (hmouse-update-smart-keys): Added to provide interactive 
updating of Smart Keys
+      whenever a matching context or action has been changed in the source 
code; reloads any
+      changes to "hui-mouse", "hui-window", "hibtypes" or "hactypes", most 
notably changes to
+      hkey-alist and hmouse-alist.
+
+* hui-mouse.el (hkey-alist, smart-outline-char-invisible-p, smart-eolp):
+    Added and used to improve and narrow matching of end-of-lines.  
Previously, did not handle
+    new-style Emacs outlines properly nor helm section header lines.
+
+* kotl/kotl-mode.el (kotl-mode:action-key, kotl-mode:assist-key):
+  hui-mouse.el (smart-outline, smart-outline-assist): Changed to invoke 
action/assist-key-eol-function
+    for end-of-line scrolling, eliminating hard-coded call.
+  man/hyperbole.texi (Smart Key - Emacs Outline Mode): Documented this change.
+
+* hargs.el (hargs:at-p): Fixed bug when linking to files or directories, would 
choose
+    symbol at Action Key release point rather than the file or directory 
containing
+    that symbol.  This was caused by allowing matches to non-existent files 
and dirs
+    when the 'no-default' argument was t.  Now prevented such matching.  This 
could
+    occur when creating or editing explicit button links.
+
+2017-09-24  Bob Weiner  <address@hidden>
+
+* hib-social.el (hibtypes-git-get-locate-command): Added this function to 
trigger an
+    error if locate command is not available when a git-reference is 
activated.  So
+    user knows what happened.
+
+2017-09-23  Bob Weiner  <address@hidden>
+
+* hib-debbugs.el (debbugs-version-sufficient-p): Added to eliminate use of 
version testing
+    function from package.el which some people prefer not to load.
+
+2017-09-22  Bob Weiner  <address@hidden>
+
+* hib-social.el (hibtypes-git-add-project-to-repos-cache)
+                (hibtypes-git-build-or-add-to-repos-cache): Added to allow
+    for adding a single new project to the cache.
+
+* hact.el (actype:act): Expand arguments as pathnames only in functions
+    defined with defact (actions may be regular defuns as well).
+
+* hib-social.el (github-reference): Added support for listing all active or 
showing
+    individual branches, issues, pull requests and commit tags.  See the
+    doc string for this function and the examples in the file commentary.
+                (git-reference): Added support for listing all active or 
showing
+    individual branches and commit tags.  See the doc string for this function 
and
+    the examples in the file commentary.
+                (defact*): Changed all these to regular functions to
+    prevent Hyperbole from trying to expand their arguments as pathnames.
+
+2017-09-21  Bob Weiner  <address@hidden>
+
+* hui-mouse.el (smart-helm): Added: On a source section header, moves to the 
next source
+    section or first if on last.  But this doesn't yet work properly (helm is 
scrolling
+    the buffer and not leaving point in the proper location).
+
+* hui-mini.el (hyperbole): Removed interactive use of prefix argument to set 
doc-flag and
+    help-string-flag parameters since this didn't interactively display doc.  
Instead,
+    this change lets the prefix arg flow through to any menu commands that can 
use it.
+
+* hib-social.el: Added full Commentary with implicit link examples.
+
+2017-09-20  Bob Weiner  <address@hidden>
+
+* DEMO (Git References): Added.
+  hib-social.el (hibtypes-github-default-project): Renamed from 
hibtypes-social-github-default-project.
+                (hibtypes-github-default-user): Renamed from 
hibtypes-social-github-default-user.
+               (hibtypes-git-default-project): Added.
+               (hibtypes-git-*, git-reference): Updated to allow
+    git#project/commit-hashtag references.  So now all of the
+    following are recognized as local git references if the default
+    project setting is set up:
+      git#hyperbole/5ae3550    (project name and commit hashtag can be given; 
commit diff displayed)
+      gt#5ae3550               (project default is used; commit diff displayed)
+      gt#/hyperbole            (project home directory is displayed)
+                (github-reference): Renamed from github-commit-reference.  
Also added support for syntax:
+      gh#/hyperbole            (project home directory is displayed; uses 
default user setting)
+      gh#/rswgnu/hyperbole     (project home directory is displayed)
+
+    Requires GNU locate for finding all local git repositories.
+
+* hibtypes.el (grep-msg): Added match to context lines produced by 'grep 
-A<num>'
+    which use '-' around the line number rather than ':'.
+    (hib-debbugs): Lowered priority below hib-social so it doesn't shadow valid
+       social references since its matching is broad.
+
+* hib-social.el (social-reference, hibtypes-social-regexp): Added missing '-'
+    character in social-reference matches.
+
+* hui-mouse.el (smart-image-dired-thumbnail, 
smart-image-dired-thumbnail-assist):
+    Added to support browsing of directories of images via thumbnails.
+    Action Key displays a scaled version of the original image in an Emacs 
window.
+    Assist Key displays the original image in an external viewer.
+
+2017-09-19  Bob Weiner  <address@hidden>
+
+* hib-social.el (hibtypes-social-default-service): Changed to use a radio
+    button choice when customizing this.
+                (hibtypes-social-hashtag-alist, 
hibtypes-social-username-alist): Added
+    github user and commit lookup via social link syntax.
+                (hibtypes-social-github-default-user):
+                (hibtypes-social-github-default-project)
+                (github-commit-reference): Added this new action and its
+    above default values.
+                (hibtypes-social-regexp): Updated to allow
+    github#user/project/commit-hashtag references.  So now all of the
+    following are recognized as github commit links if the default user
+    and project settings are set up:
+      gh#rswgnu/hyperbole/5ae3550 (if include user must include project)
+      github#hyperbole/5ae3550    (project can be given with user default)
+      gh#5ae3550                  (user and project defaults are used)
+
+    Additionally, address@hidden can be used to jump to user rswgnu's github
+    home page.
+  DEMO (Github): Added to demonstrate github references.
+
+* hibtypes.el (annot-bib): Moved in priority below social hashtags and
+    denied matching to anything containing a # or @ character so
+    address@hidden doesn't match as an annot-bib entry.
+
+* hui-mouse.el (hkey-alist): Added helm support for Smart Key presses in
+   the minibuffer window (runs the standard RET command).
+
+2017-09-18  Bob Weiner  <address@hidden>
+
+* hui-mouse.el (smart-helm): Finalized and added doc. of contexts and actions.
+    Made smart-helm ignore helm candidate separator lines.
+
+* hui-window.el (smart-coords-in-window-p):
+                (hmouse-drag-window-side): Handled null value of coords.
+
+2017-09-17  Bob Weiner  <address@hidden>
+
+* hui-mouse.el (hkey-alist): Changed minibuffer handling to support Helm.
+
+* man/hkey-help.txt: Small updates to Special Mode doc.
+
+* hmouse-key.el (hmouse-add-unshifted-keys): Added to allow user init
+    of unshifted Smart Keys.  For GNU Emacs only, this binds
+    [mouse-2] to the Action Key and [mouse-3] to the Assist Key.
+  man/hyperbole.texi (Smart Key Bindings): Added doc for 
hmouse-add-unshifted-keys.
+
+* hmouse-sh.el (hmouse-get-unshifted-bindings): Uncommented inclusion of
+   mouse-3 for times when user manually sets mouse-3 as the Assist Key.
+   Otherwise, hmouse-toggle-bindings will never change its value.
+               (hmouse-bind-key, hmouse-bind-shifted-key): Added and used
+   these to ensure depress and release bindings are wholly reset before
+   rebinding them under GNU Emacs.
+
+2017-09-14  Bob Weiner  <address@hidden>
+
+* hpath.el (hpath:external-open-office-suffixes): Added .odt suffix.
+
+* hui-select.el (hui-select-at-p): Protect against empty buffer error.
+
+2017-09-12  Bob Weiner  <address@hidden>
+
+* hibtypes.el (grep-msg):
+              (pathname): Don't match in helm completion buffers.
+
+* hui-mouse.el (smart-helm-line-has-action): Ignore any actions helm
+    imputes to header lines and candidate separator lines in helm
+    completion buffers, as they are non-actionable lines.  Also, ignore
+    if at the end of the buffer.
+               (hkey-alist): Lowered smart-helm priority so can use Smart
+    Key end-of-line functions in such buffers.
+
+* hsys-www.el (eww-link-at-point): Basic stylistic improvements.
+
+2017-09-11  Bob Weiner  <address@hidden>
+
+hyrolo.el: Added basic commentary to the file header.
+
+2017-09-10  Bob Weiner  <address@hidden>
+
+* hui-mouse.el (smart-helm, smart-helm-assist, smart-helm-line-has-action):
+  hsettings.el (helm-allow-mouse): Set to t.
+    New helm completion activation support.
+    Added to allow mouse direct selection of helm completion items and to see
+    match item actions prior to invoking them.  The smart-helm function
+    behaves similarly to the {C-j} and {C-z} key bindings that helm mode
+    provides when a helm completion is active. If helm is not active,
+    Hyperbole resumes the prior helm session before triggering the action.
+    The smart-helm-assist function displays the match item and its associated
+    action.
+
+* hsys-www.el (www-url): Added Action and Assist Key support for browsing
+    links in eww (the Emacs web browser) and for activating history links
+    in the eww history buffer.
+
+2017-09-08  Bob Weiner  <address@hidden>
+
+* hpath.el (hpath:url-regexp3): Added a third pattern match for URLs,
+   allowing for partial http urls with non-www site names preceded by the
+   literal url or URL followed by a : or =.  For example:
+   url:photos.google.com or url=calendar.google.com
+
+2017-09-07  Bob Weiner  <address@hidden>
+
+* hui-menu.el (hui-menu-browser): Changed the Default setting to always
+    use the current setting of browse-url-default-browser since that is the
+    default in browse-url (eliminated use of browse-url-generic).
+
+* hypb.el (hypb:decode-url): Added.
+  hpath.el (hpath:is-p): Fixed to handle and decode encoded URL paths before
+    returning the path.
+
+2017-09-06  Bob Weiner  <address@hidden>
+
+* hui-mouse.el (hkey-alist): Changed Python predicate to match more
+broadly, namely in any non-file buffer whose name includes Pydoc: or
+Python (case-sensitive).
+
+* hmouse-tag.el (smart-python-at-tag-p): Expanded to handle tags with
+   periods embedded such as `sys.path'.
+
+2017-09-04  Bob Weiner  <address@hidden>
+
+* hibtypes.el (debugger-source): Added support for Python pdb stack trace 
lines.
+
+2017-08-31  Bob Weiner  <address@hidden>
+
+* hibtypes.el (pathname): Wrapped mode-name reference in format-mode-line
+    call since mode-name is not always a string.
+
+* hui-em-but.el (hproperty:but-highlight-p): Added to allow disabling of 
explicit button highlighting.
+                (hproperty:but-create-all):  Used this new flag.
+  hui-xe-but.el (hproperty:but-highlight-p): Added to allow disabling of 
explicit button highlighting.
+                (hproperty:but-create-all):  Used this new flag.
+
+* hbut.el (ebut:map): Changed to ignore explicit button matches in
+    programming languages when outside of a comment.  For example, syntax like
+    this in a Rust buffer had been improperly matched: fn parse_kv(kv_list:
+    Vec<(syn::Ident, syn::StrLit)>, function: &Function) -> LispFnArgs
+
+2017-08-25  Bob Weiner  <address@hidden>
+
+* hui-mouse.el (smart-ibuffer-menu): Ibuffer calling conventions have
+    changed across time (as of Emacs25) to allow for regional arguments;
+    updated to account for these.
+
+* hpath.el (hpath:remote-at-p): For Emacs 26 where
+    tramp-file-name-structure is now a function instead of a variable, call
+    the function.
+
+* hyrolo.el (hyrolo-kill): Triggered error if FILE contains a '*' character,
+    mainly in case a buffer name is passed as an argument.
+            (hyrolo-file-list-initialize): Added this function so can
+    re-initialize the hyrolo-file-list later if BBDB or Google Contacts
+    support is loaded after the Hyperbole Rolo is initialized.
+
+* hbut.el (hbut:source): Allowed for spaces in buffer names.
+
+* hyrolo.el (hyrolo-edit-entry): Avoided error if bbdb-file is nil.
+
+* hbut.el (ebut:label-p): Added one-line-flag to constrain label search to a 
single line.
+  hibtypes.el (Info-node): Constrained Info-node hyper-button matches to a 
single line.
+
+* hyrolo.el: Added support for Google Contacts when the google-contacts
+    package is in use and a public key package is available for Google
+    authorization.
+
+2016-09-08  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi: Documented Pages Directory Listing handling.
+
+* kotl/klink.el: (require 'hbut): Added to define defib when compiled.
+
+2016-08-26  Bob Weiner  <address@hidden>
+
+* hui-mouse.el (hkey-alist): Added Smart Key jump to associated page in 
pages-directory-mode (page-ext.el).
+  man/hkey-help.txt: Documented Pages Directory Listing and Imenu Programming 
Identifier handling.
+
+* hmouse-drv.el (hkey-help-show): Modified to invoke help-mode only if buffer 
name includes 'Help' to
+    support other specialized modes that use temp buffers.
+
+2016-08-25  Bob Weiner  <address@hidden>
+
+* README.md, README.md.html: Updated to match Hyperbole home page.
+
+2016-08-18  Bob Weiner  <address@hidden>
+
+* DEMO: Wrote small textual updates.
+
+* hib-debbugs.el: Added a note about bug-reference-mode.el and the differences.
+
+2016-08-17  Bob Weiner  <address@hidden>
+
+* README: Added Summary section with a description of Hyperbole since this 
file may be shown prior to
+    download in the Emacs package manager.
+
+* kotl/kexport.el (kexport:label-html-font-attributes): Fixed improper 
'defvar' definition which should
+    have been a 'defcustom'.
+
+2016-08-16  Bob Weiner  <address@hidden>
+
+* hib-kbd.el (kbd-key:normalize): Fixed so C-M-<char> is normalized the same 
way as M-C-<char>.
+             (kbd-key:extended-command-prefix): Added.
+             (kbd-key, kbd-key:act): Added kbd-key:extended-command-p test and 
used in this implicit button
+    type and action type to support Action Key presses on M-x extended 
commands like {M-x occur RET} since
+    these are included in the Hyperbole DEMO.
+
+2016-08-15  Bob Weiner  <address@hidden>
+
+* hpath.el (hpath:substitute-dir): Added support for environment variables 
including those with PATH
+    in their name (colon-separated paths) that should have been there.
+    Added call to hpath:exists-p to test path with hpath:suffixes added.  This 
fixed the bug where
+    "${load-path}/simple.el" did not resolve properly when the file was stored 
compressed
+    as simple.el.gz, for example.
+
+2016-08-12  Bob Weiner  <address@hidden>
+
+* hui-mini.el (hui:menu-enter): Fixed potential error of (wrong-type-argument 
char-or-string-p 134217741)
+    when insert was called with a non-character code integer.
+
+2016-08-10  Bob Weiner  <address@hidden>
+
+* HY-ANNOUNCE-SHORT - Added as a shorter release announcement.
+
+* HY-ABOUT, README, README.md, README.md.html - Synchronized with Hyperbole 
web home page
+    and typo fixes.
+
+* hpath.el (hpath:external-open-office-suffixes): Added external display of
+    Open Office documents based on this new option.
+           (hpath:command-string): Quoted filename argument to allow spaces in 
filenames.
+    This fixed an issue when an external viewer such as `open' was called 
under OS X
+    and the filename to be opened contained spaces.
+
+* hyperbole.el (Maintainer): Changed back to single line so ELPA parses it 
correctly.
+
+* hib-debbugs.el (debbugs-gnu-query:list):
+  hyperbole.el (hkey-global-set-key, Info-directory-list):
+  hvar.el (var:append): Removed improper function quoting of variable.
+
+==============================================================================
+V6.0.3 changes ^^^^:
+==============================================================================
 
 2016-08-08  Bob Weiner  <address@hidden>
 
+* Makefile (release, elpa, ftp): Updated to work better.
+
 * hactypes.el (link-to-web-search): Added so Hyperbole global and explicit 
buttons can execute web searches.
   hsettings.el (hyperbole-read-web-search-arguments): Added and used in 
hyperbole-web-search and link-to-web-search.
   DEMO (Sample Explicit Buttons and Types):
@@ -46,7 +1351,7 @@
 
 * man/hyperbole.texi (Customization): Renamed from Configuration.
                      (Web Search Engines): Added this section under 
Customization.
-                     (HyControl): Added FramesControl key sequence.
+                     (HyControl): Added WindowsControl key sequence.
                      (Smart Key - Smart Scrolling): Documented 
{action,assist}-key-eol-function variables.
 
 * hsmail.el (mail-indent-citation, mail-yank-original): Updated for Emacs 25 
compatibility.
@@ -62,7 +1367,7 @@
 * Demo (HTML and Markdown Hash Links): Added this section.
   hibtypes.el (pathname):
   hpath.el (hpath:to-markup-anchor): Renamed from hpath:to-html-anchor and 
generalized for use with Markdown as well.
-    Added recognition of section links like: 
+    Added recognition of section links like:
         - [Why was Hyperbole developed?](#why-was-hyperbole-developed)
       so the pathname implicit button type matches when the Action Key is 
pressed anywhere on or after the
       hash character and jumps to the section:
@@ -99,7 +1404,7 @@
   hui-menu.el (infodock-hyperbole-menu): Added optional rebuild-flag to force 
rebuilding of the
     Hyperbole menubar menu.
 
-* man/hyperbole.texi (HyControl): Documented ESC as a way to quit from 
HyControl.
+* man/hyperbole.texi (HyControl): Documented ESC as a way to quit from 
HyControl. (REMOVED IN A FUTURE REVISION).
 
 2016-08-02  Bob Weiner  <address@hidden>
 
@@ -194,7 +1499,7 @@ V6.0.2 changes ^^^^:
     man/version.texi used in hyperbole.texi.
 
 * README.md: Added this, a markdown formatted introduction combining README,
-    INSTALL and HY-ABOUT. 
+    INSTALL and HY-ABOUT.
 
 2016-07-26  Mats Lidell  <address@hidden>
 
@@ -273,7 +1578,7 @@ V6.0.2 changes ^^^^:
     then skip setup to generate hyperbole-autoloads with autoloads from the 
kotl/
     subdirectory.
 
-* hib-social.el (social-reference): 
+* hib-social.el (social-reference):
   hibtypes.el (mail-address-at-p): Let case-fold-search be t since 
mail-addresses
     are case-insensitive.
 
diff --git a/DEMO b/DEMO
index e7d4b3f..1775c76 100644
--- a/DEMO
+++ b/DEMO
@@ -1,10 +1,26 @@
-* GNU Hyperbole Demonstration and Introduction by Bob Weiner
+* GNU Hyperbole Demonstration by Bob Weiner
+
+    Table of Contents
+    -----------------
+    * Introduction
+    * Smart Keys 
+    * Koutliner
+    * HyControl
+    * HyRolo
+    * History
+    * Implicit Buttons
+    * Explicit Buttons
+    * Smart Mouse Keys
+    * Epilog
+    * References
+
+* Introduction
 
 Welcome to GNU Hyperbole.  Hyperbole will super-charge your GNU Emacs
 experience, allowing you to work faster, utilize fewer key bindings, recall
 more information and link it all together by learning just a few concepts and
-keys.  Invest an hour learning Hyperbole now and save many hours for years to
-come.
+keys.  Invest an hour learning Hyperbole now and speed your daily information
+management for years to come.
 
 If you simply want to know what Hyperbole is, see the file "HY-ABOUT".
 Hyperbole displays that file when you press {C-h h d a}.  Hyperbole assumes
@@ -26,29 +42,38 @@ terms used here are unfamiliar to you.
 
 * Smart Keys 
 
-Hyperbole provides two context-sensitive keys, the Action Key and the
-Assist Key, jointly referred to as Smart Keys that each do dozens of
-things, essentially whatever is most helpful in any given textual
-context where they are pressed.  The Action Key is {M-RET} (ESC RETURN
-if you are unsure) on the keyboard and the shift-middle mouse button
-on a 3-button mouse or the shift-left button on a two button mouse.  The
-Assist Key is {C-u M-RET} and the shift-right mouse button. Memorize
-these keys; you will use them a lot.  To distinguish the mouse buttons
-from the keyboard keys, we will often refer to the Action Mouse Key or
-Assist Mouse Key.
-
-The Action Key selects entities, creates links and activates buttons.
-The Assist Key provides help, such as reporting on a button's
-attributes, or serves a complementary function to whatever the Action
-Key does within a context.  Press the Action Key within this
-<(button)> to see all of the contexts and operations of the Smart
-Keys.  SPACE scrolls forward and backwards DELETE scrolls backward
-within the Smart Key summary; {q} quits and returns here.
+Hyperbole provides two context-sensitive keys, the Action Key and the Assist
+Key, jointly referred to as Smart Keys that each do dozens of things,
+essentially whatever is most helpful in any given textual context where they
+are pressed.  The Action Key is {M-RET} (ESC RETURN if you are unsure) on the
+keyboard and the shift-middle mouse button on a 3-button mouse or the
+shift-left button on a two button mouse.  The Assist Key is {C-u M-RET} and
+the shift-right mouse button.  Memorize these keys; you will use them a lot.
+To distinguish the mouse buttons from the keyboard keys, we will often refer
+to the Action Mouse Key or Assist Mouse Key.  (It is possible to rebind these
+keys to the unshifted middle and right mouse buttons, if desired.  See the
+Smart Key Bindings section of the Hyperbole Manual, "(hyperbole)Smart Key
+Bindings").
+
+The Action Key selects entities, creates links and activates buttons.  The
+Assist Key provides help, such as reporting on a button's attributes, or
+serves a complementary function to whatever the Action Key does within a
+context.  Press the Action Key within this <(button)> to see all of the
+contexts and operations of the Smart Keys.  SPACE scrolls forward and
+backwards DELETE scrolls backward within the Smart Key summary; {q} quits
+and returns here.
 
 See also the later section, <(Smart Mouse Keys)>.
 
 Now let's look at many of the things you can do with the Smart Keys.
 
+** Table of Contents Browsing
+
+In DEMO, README and TUTORIAL files, Hyperbole recognizes table of contents
+entries and jumps to their associated sections (by default, in another
+window) with a press of the Action Key.  Go back to the table of contents at
+the start of this file and try navigating to different sections.
+
 ** Smart Scrolling
 
 By default, the variable `smart-scroll-proportional' is set to t (TRUE).  This
@@ -57,8 +82,8 @@ the current line is placed at the top of the window; the 
Assist Key does the
 reverse when pressed at the end of line; it places the current line at the
 bottom of the window.  This is called proportional scrolling because the
 amount of scrolling is relative to the point's position in the window.  Try
-it with this DEMO buffer to see how you can precisely control what is displayed
-in a window and then come back here.
+it with this DEMO buffer to see how you can precisely control what is
+displayed in a window and then come back here.
 
 Alternatively, if this variable is set to nil (FALSE), the Smart Keys scroll
 forward or backward a windowful when at the end of a line, regardless of
@@ -114,6 +139,7 @@ You can change which browser is used with {C-h h c w}, the 
Cust/Web-Search
 menu.  Advanced users can change the search engines listed by editing the
 option, <(hyperbole-web-search-alist)>.
 
+
 ** Help Buffers
 
 Since the Smart Keys do so many things, it is helpful to see what they will
@@ -123,6 +149,14 @@ current context; {C-u C-h A} displays the same kind of 
help for the Assist
 Key.  Only a capital A will work, so be sure to press shift.  Try these
 help commands.
 
+You can also see what mouse-only events like modeline clicks and drags across
+frames will do.  Depress the Smart Mouse Key you are interested in at
+a location, then while holding it down, depress the other Smart Mouse Key, move
+to any release point and then release both keys.  The help displayed will show
+you exactly what will happen in that context.  Try this for the Action Mouse 
Key
+by dragging horizontally at least 10 characters in this buffer and depressing
+the Assist Mouse Key before you finish the drag.
+
 Any buffer whose name ends in `Help*' is presumed to be a temporary buffer
 that you want to inspect and then remove from view.  If you press either the
 Action or Assist Key at the end of a help buffer, the buffer is buried from
@@ -137,23 +171,20 @@ generated it.
 
 * Koutliner
 
-A unique feature of Hyperbole for those who like to outline thoughts and be
-able to easily identify each outline entry and hyperlink to it is the
-Koutliner.
-
-The Hyperbole Koutliner should work under any modern version of GNU Emacs.
-Your Emacs supports the Koutliner if when you press {C-h h} to display the
-Hyperbole menu, you have a Kotl/ entry in the menu.
+A unique feature of Hyperbole is the Koutliner; it is for outlining thoughts,
+developing requirements or listing tasks and hyperlinking them to other
+documents.
 
 The Hyperbole Koutliner produces structured, autonumbered documents composed
 of hierarchies of cells.  Each cell has two identifiers, a relative
 autonumber indicating its present position within the outline and a permanent
 identifier suitable for use within hyperlink references to the cell.
 
-The Kotl/Example menu entry on {C-h h k e} gives you an editable copy of
-Hyperbole's example Koutliner file.  This explains the Koutliner commands
-and lets you try them out as you learn.  Additional documentation can be
-found in "(hyperbole)Koutliner".  "(hyperbole)Koutliner Keys" summarizes in
+A demonstration of the Koutliner is found on the Hyperbole Kotl/Example menu
+entry.  {C-h h k e}, gives you an editable copy of Hyperbole's example
+Koutliner file.  This explains the Koutliner commands and lets you try them
+out as you learn.  Additional documentation can be found in
+"(hyperbole)Koutliner".  "(hyperbole)Koutliner Keys" summarizes in
 alphabetical order the Koutliner commands which are bound to keys.
 
 
@@ -161,30 +192,199 @@ alphabetical order the Koutliner commands which are 
bound to keys.
 
 Hyperbole includes the fastest, easiest-to-use Emacs window and frame
 management system available, HyControl, found under the Hyperbole Screen
-menu.  If you use a lot of Emacs windows or frames (typically, window system
-windows) then this tool is for you.  A long video demonstrating most of
-HyControl's features is available at https://youtu.be/M3-aMh1ccJk.
-
-HyControl interactively adjusts the layout of your windows and frames
-down to the pixel-level if desired.  You adjust the location, size and
-display elements of your windows and frames until they look as you like
-and then simply quit HyControl and go back to work.  It has smart features to
-avoid covering toolbars anchored at the edges of your screen and allows you
-to quickly set numeric arguments to apply to operations, like resizing a
-frame to a percentage of your screen size.
-
-Hyperbole binds {C-c \} to invoke HyControl window control; otherwise, the
+menu, {C-h h s}.  If you use a lot of Emacs windows or frames (native window
+system windows), then this tool is for you.  A long video demonstrating most
+of HyControl's features is available at https://youtu.be/M3-aMh1ccJk.
+
+HyControl interactively adjusts the layout of your windows and frames down to
+the pixel-level, if desired.  You adjust the location, size and display
+elements of your windows and frames until they look as you like and then
+simply quit HyControl and go back to work.  It has smart features for laying
+out large grids of windows, avoiding having frames cover graphical toolbars
+anchored at the edges of your screen, and allows you to quickly set numeric
+arguments to apply to operations, like resizing a frame to a percentage of
+your screen size.
+
+There are two submodes of HyControl: one for controlling windows and one for
+controlling frames, although a number of commands are available in both modes
+where they are useful.
+
+Hyperbole binds {C-c \} to invoke HyControl windows control; otherwise, the
 Hyperbole minibuffer menu item, Screen/WindowsControl {C-h h s w}, will do
 the same thing.
 
 Once in HyControl, your minibuffer window at the bottom of the selected frame
 will display a summary of keys you may use to adjust your windows until you
-press {q} to quit from HyControl.  The key, {t}, will always switch you
-between controlling frames and windows, the "submodes" of HyControl, with the
-upper left of the minibuffer prompt showing which type of control is active.
-
+press {q} to quit from HyControl.  If you don't see it, press {?}, to turn on
+this help display.  The key, {t}, will always switch you between controlling
+frames and windows, the minor modes of HyControl, with a modeline indicator
+of either "HyFrm" or HyWin" depending on which type of control is active.
 See "(hyperbole)HyControl" for full usage information.
 
+** Frame Commands
+
+Let's try some of the more interesting commands.  You can either type the
+following key sequences (ignoring the braces) for practice or simply press
+the Action Key within them to see what they look like.
+
+   {C-h h s f}  - enter HyControl Frames mode
+
+   {.50 %}      - make frame 50% of screen size
+   { c }        - use this multiple times to move frame around screen edges
+   { a }        - use this multiple times to adjust frame width
+   { A }        - use this multiple times to adjust frame height
+
+The following 4 commands use the prefix argument as a percentage of the
+screen height, except that no argument or an argument of 1 mean 50% since
+the argument is used to adjust one dimension of the frame.
+
+   { i }        - move to top edge, next press cuts height by ARG %
+   { m }        - move to bottom edge, next press cuts height by ARG %
+   { j }        - move to left edge, next press cuts width by ARG %
+   { k }        - move to right edge, next press cuts width by ARG %
+
+   { f }        - clone the selected window to a new frame
+   { F }        - tear off the selected window (if more than one window)
+                 into a new frame
+
+** Windows Grid
+
+The address@hidden command splits a frame into a grid of up to 9 rows by 9 
columns of
+windows, showing a different buffer in each window, if available.  First
+let's expand our frame to full screen with the {.1 %} command and then show
+a 2 x 3 grid.  We can do multiple commands in one key sequence.  Press the
+action key here: {.1 % .23 @}.
+
+You can even write something like this to do the whole thing in one sequence.
+First, let's quit out of HyControl Frames mode with {q}.  Then go back to one
+window with {C-x 1}.  Now we can execute a single sequence from any buffer that
+creates our 2x3 window grid:  {C-h h s f  .1 %  .23 @  q}.  Pretty amazing,
+right?  You can separate each command by any number of spaces or even jam them
+all together: address@hidden
+
+A zero argument to the address@hidden command is special.  It means you want 
to display
+buffers with a particular major mode first, e.g. c-mode.  You will be
+prompted for the major mode and then the size of the grid.
+
+To try it, activate: {C-hhsf .0 @}.
+
+If you ever need to experiment with different sized window grids, use {M-x
+hycontrol-window-grid-repeatedly RET}.  It will repeatedly prompt you for a
+grid size and then display it.  When you are done, simply press {RET} to
+exit.
+
+Outside of HyControl, you can invoke the grid of windows command with {C-c @}
+in most buffers.
+
+There is lots more to discover in HyControl as you explore.
+
+
+* HyRolo
+
+HyRolo is an advanced hierarchical, record-oriented retrieval system that
+uses text files for storing its records.  Most often this is used for contact
+management but it can quickly be adapted to most any record-oriented lookup
+task requiring fast retrieval.
+
+HyRolo manages and searches rolo files which consist of an optional header
+that starts and ends with a line of equal signs (at least three equal signs
+starting at the beginning of a line), followed by zero or more rolo records.
+You must manually add a header to any rolo file if you want it to have one.
+
+We call rolo records, entries.  Entries begin with a delimiter of one or more
+`*' characters at the beginning of a line.  Entries may be arranged in a
+hierarchy, where child entries start with one more `*' character than do
+their parents.  Top-level entries begin with a single `*'.
+
+Beyond this initial delimiter, entries are completely free-form text.  It is
+best to use a "lastname, firstname" format, however, when adding contact
+entries into a rolo.  Then HyRolo will automatically keep your entries
+alphabetized as you enter them.  Then you can sort the entries if you ever
+need.
+
+HyRolo commands are invoked from the Hyperbole Rolo menu.  See
+"(hyperbole)HyRolo" for a full reference on commands including adding
+entries, regular expression searches and manipulating the HyRolo search
+results buffer.
+
+For demonstration purposes, we discuss only the most common searches and use
+a global key binding for quick access to HyRolo searches of existing entries.
+Below is a sample rolo file (indented 3 spaces) that we will work with in
+this DEMO.  The date at the end of each record is automatically added by
+HyRolo whenever a new record is added.
+
+   ==================================================================
+                         DEMO ROLO
+   ==================================================================
+   *    HiHo Industries
+   **     Strong, Hugo            <address@hidden>  W708-555-9821
+               Manager
+               04/12/2017
+   ***      Smith, John           <address@hidden>  W708-555-2001
+               Chief Ether Maintainer
+               05/24/2017
+   *    Work Industries
+   **     Hansen, Dan             <address@hidden>  W218-555-2311
+               Manager
+               02/18/2017
+   ***      Dunn, John            <address@hidden>  W218-555-3233
+               Media Maker
+               11/2/2017
+
+** String Searches
+
+Any search done on the rolo scans the full text of each entry and ignores the
+case of the text.  During a search, the rolo file header separator lines and
+anything in between are appended to the buffer of matched entries before any
+entries are retrieved from the file.  Whenever an entry is matched, it and
+all of its descendant entries are retrieved.  If your emacs version supports
+textual highlighting, each search match is highlighted for quick, visual
+location.
+
+Let's try the HyRolo.  First load the HyRolo demo commands with an Action Key
+click on "-hyrolo-demo.el".  Now {C-x 4 r} will search the DEMO ROLO file.
+Action Key click on {C-x4r work RET} to search for all entries from Work
+Industries; then type {q} to quit from the HyRolo search results buffer.
+{C-x4r manager RET} finds all managers plus their staff across companies.
+{C-x4r Dunn,\ J RET} finds just that staffer.  Notice that you must quote the
+space with a backslash when including it in a key sequence search string or
+else the space will be removed; when just typing the same string
+interactively, don't add the backslash.
+
+A prefix argument used with any of the find commands listed above limits the
+search to a maximum number of matches given by the argument.  For example
+{C-u 1 C-x4r John RET}, finds only the John Smith entry and ignores John
+Dunn.
+
+** Logical Searches
+
+The same search command can be used to perform logical searches of the HyRolo
+files.  A simple parenthesis delimited prefix format is used with the
+following logical operators.
+
+Operator Name   Number of Arguments    Description
+=====================================================================
+and             two or more            Match entries with all args
+or              two or more            Match entries with any args
+xor             two or more            Match entries with 1 arg only
+not             one                    Match entries without the arg
+=====================================================================
+
+So for example, {C-x4r (or smith dunn) RET} finds both the Smith and Dunn
+entries.  (Note that you do not need to backslash quote spaces within
+parentheses, square brackets, angle brackets or double quotes when used in
+key sequences).  To find any Managers and their staffers at HiHo Industries,
+use: {C-x4r (and manager hiho) RET}.  To find managers anywhere but at HiHo:
+{C-x4r (and manager (not hiho)) RET}.  Finally, this will find all people who
+are not managers at HiHo: {C-x4r (not (and manager hiho)) RET}.
+
+See "(hyperbole)HyRolo Keys" for how to navigate the HyRolo Matches buffer
+when many entries are found or how to edit a matched entry.
+
+We are now finished with the HyRolo section of the demo.  Activate this
+to remove the HyRolo demo code and restore any prior key binding:
+{M-x hyrolo-demo-quit RET}.
+
 
 * History
 
@@ -201,7 +401,7 @@ command to return to this DEMO later.
 An incredibly powerful feature of Hyperbole is known as implicit buttons,
 i.e. a specific format of text within a buffer that Hyperbole recognizes as a
 button and lets you activate.  Hyperbole recognizes these by context and does
-require much of any specialized markup.
+not require any specialized markup.
 
 Note that you must press a Smart Key on the first line of an implicit button
 to utilize it if it spans multiple lines and always press on a regular
@@ -211,7 +411,7 @@ used to select groups of text.
 Hyperbole has many built-in implicit button types, a number of which you will
 see here, and allows you to create your own.  Once a type is known, you can
 embed an infinite number of buttons of that type within your text simply by
-typing them.  Let's look at some of these buttontypes and how you can use
+typing them.  Let's look at some of these button types and how you can use
 them.
 
 ** Key Sequence Buttons
@@ -219,9 +419,9 @@ them.
 Any Emacs key sequence delimited with curly braces is an implicit button.
 Press the Action Key with {C-u C-p} for example and the point should move
 four lines upward.  An Assist Key press on the key sequence displays the
-documentation for its command binding, i.e. what it does.  If it does not
-represent a bound key sequence, it will not be treated as a key sequence
-button.
+documentation for its command binding, i.e. what it does.  Key sequences
+together with the arguments their commands prompt for also may be given,
+e.g. {M-x apropos RET hyperbole RET}.  Click in the braces to try it out.
 
 Hyperbole minibuffer menu items may also be activated as key sequences.  For
 example, {C-h h d i} displays the online browsable Info version of the
@@ -251,16 +451,17 @@ Any existing absolute or relative pathname (whether 
doubly quoted or not)
 acts as an implicit button that either displays the referenced path within a
 buffer, passes it to an external viewer program, or runs a function that
 operates upon the path.  These are `pathname' implicit buttons.  For example,
-activate "HY-ABOUT".  HY-ABOUT or `HY-ABOUT' would work as well or
-"~/.emacs".
+activate "HY-ABOUT".  HY-ABOUT or `HY-ABOUT' would work as well.   Or try
+"~/.emacs".  Pathname implicit buttons provide one example of how Hyperbole
+can improve your working environment without requiring any work from you.
 
 *** Paths with Line and Column Numbers
 
 If you want to display a path at a specific line number and optionally column
 number, then add each number preceded by a colon at the end of the path.
 For example, "HY-ABOUT:10" displays HY-ABOUT at line 10, the second
-paragraph, with point at the start of the line.  "HY-ABOUT:18:7" shows the
-first numbered item on line 18 at column 7, where the text starts.
+paragraph, with point at the start of the line.  "HY-ABOUT:17:7" shows the
+first numbered item on line 17 at column 7, where the text starts.
 
 *** HTML Markdown and Emacs Outline Hash Links
 
@@ -303,13 +504,13 @@ to know whether the file is compressed or not or what 
values are set for
 load-path at your particular location.  Thus, you can provide path links that
 vary from site to site, especially handy if you email Hyperbole buttons to
 your associates.  Shell environment variables also work.  To see your home
-directory, try "${HOME}".  Press the Action Key within "(hyperbole)Link
-Variable Substitution" for a bit more on this topic.
+directory, try "${HOME}".  Press the Action Key within the quoted text of
+"(hyperbole)Link Variable Substitution" for a bit more on this topic.
 
-For the special cases of Emacs Lisp files and Info manual files, you don't
-even need to give the variable of directories to search since Hyperbole knows
-them already.  Thus an Action Key press on "simple.el", "hyperbole.info"
-or even "(hyperbole)" will display these properly as well.
+For the special cases of Emacs Lisp files and Info manual files, you can omit
+the variable of directories to search since Hyperbole knows them already.
+Thus an Action Key press on "simple.el", "hyperbole.info" or even
+"(hyperbole)" will display these properly as well.
 
 Some file types require external programs to view them, such as pdf files.
 The function (hpath:get-external-display-alist) determines the file
@@ -321,11 +522,10 @@ hpath:external-display-alist-macos, 
hpath:external-display-alist-mswindows,
 and hpath:external-display-alist-x.  Examine and modify these
 values to suit your needs.
 
-Under the X WINDOW SYSTEM, if you have the `xv' program, all of the
-following file formats may be displayed as images: gif, tiff, xbm, pm, pbm,
+Under the X Window System, if you have the `xv' program, all of the following
+file formats may be displayed externally as images: gif, tiff, xbm, pm, pbm,
 and jpeg.  Under X or Mac OS, try a press of the Action Key on
-"man/hyperbole.pdf" to browse the printable version of the Hyperbole
-Manual.
+"man/hyperbole.pdf" to browse the printable version of the Hyperbole Manual.
 
 *** Path Prefixes
 
@@ -336,8 +536,8 @@ non-windowed shell program.  For example, try "!/bin/date" 
on UNIX.  This
 will run the program in a subshell within Emacs.  An ampersand prefix means
 run the full pathname as a windowed program, outside of Emacs.  Under the X
 window system, try "&/usr/X11/bin/xeyes".  Finally, a hyphen indicates that
-the filename should be executed as an Emacs Lisp library,
-e.g. "-hibtypes.elc", rather than displayed.
+the filename should be executed as an Emacs Lisp library, e.g. "-subr.elc",
+rather than displayed.
 
 *** Info Paths
 
@@ -349,27 +549,23 @@ the filename.
 
 Refname can be an Info node name or any Info index item (an item listed in
 any of a manual's indices).  Index items let you jump to a specific,
-referenced point within an Info node.  As an example, suppose you want
-quick access to a summary of Hyperbole's key bindings.  Store
-"(hyperbole)key binding list" in your personal file of buttons (accessed with
-{C-h h b p}) and it will always be there.  Press the Action Key on it and
-try it.  Press the Action Key on the key binding of your personal button
-file and then store the implicit link there if you like.
-
-If you want to learn a rapid way to create explicit buttons, see "(hyperbole)By
-Dragging".
+referenced point within an Info node.  As an example, suppose you want quick
+access to a summary of Hyperbole's key bindings.  Store "(hyperbole)key
+binding list" in your personal file of buttons (accessed with {C-h h b p})
+and you will always have quick access to a list of Hyperbole's global key
+bindings.  Press the Action Key on the Info reference and try it.  Press the
+Action Key on the key binding of your personal button file and then store the
+implicit link there if you like.
 
 Since Emacs and most GNU programs include Info manuals, you now a simple way to
-link to and jump to any marked item within any manual.  Pathname implicit 
buttons
-provide one example of how Hyperbole can improve your working environment 
without
-requiring any work from you.
+link to and jump to any named item within a manual.
 
 *** Remote Paths
 
 If you use the standard Emacs library "tramp.el" for working with remote
 files and directories, then remote pathnames of the form:
 
-         /address@hidden:/path
+       /protocol:address@hidden:/path
 
 will be recognized by Hyperbole.
 
@@ -377,17 +573,16 @@ Once you have Tramp configured for loading and are on the 
Internet, you can
 click on any of the following to jump to the ftp site of Hyperbole tarball
 distributions:
 
-        "/address@hidden:/pub/gnu/hyperbole/"
-        ftp.gnu.org:/pub/gnu/hyperbole/
+        /ftp:address@hidden:/pub/gnu/hyperbole/
 
-You can see that for Tramp pathnames, Hyperbole recognizes them with or
-without the double quote delimiters.
+For Tramp pathnames, Hyperbole recognizes them with or without double quote
+delimiters.
 
 If you enable the Hyperbole option to use URLs when finding files with
 the {C-x C-f} (find-file) command via the {C-h h c f} key sequence, then
 you can also use paths of the form:
 
-        ftp://ftp.gnu.org/pub/
+       ftp://ftp.gnu.org/pub/
 
 ** Internet Request For Comments (RFC) Document Browsing
 
@@ -443,23 +638,68 @@ includes your system information.
 
 ** Social Media Hashtags and Usernames
 
-An Action Key press a social media hashtag or username reference at point
+An Action Key press on a social media hashtag or username reference at point
 displays the web page associated with the reference at the associated
 service.  References are of the form:
-[facebook|instagram|address@hidden<hashtag-or-username> or
-[fb|in|address@hidden<hashtag-or-username>.  If no service is given, it 
defaults to
-the value of @code{hibtypes-social-default-service} which is initially
-"twitter".
 
-So all of the following make the same hashtag reference: #gnu twitter#gnu
-tw#gnu and display the page for tweets with that hashtag.  Similarly,
address@hidden or address@hidden would display the page for the user lostart
-at instagram.  Try pressing the Action Key on these if you like.
+             [facebook|instagram|address@hidden<hashtag-or-username>
+          or
+             [fb|in|address@hidden<hashtag-or-username>.
+
+If the service is omitted and there is no other usage of a hash reference
+without a prefix in the buffer, then the service defaults to the value of
+`hibtypes-social-default-service', which is initially "twitter".
+
+For example, these make the same hashtag reference: twitter#gnu or tw#gnu
+and display the page for tweets with that hashtag.  Similarly, address@hidden 
or
address@hidden would display the page for the user lostart at instagram.
+Try pressing the Action Key on these if you like.
 
 The file "hib-social.el" has more details on this.
 
-** Grep, Occurrence, Debugger and Compiler Error Buttons, and Cscope Analyzer
-   Lines
+** Github (Remote) References
+
+For software developers who use Github for publishing and version control,
+Github links are similar to social media links but reference specific Github
+web pages.
+
+Press the Action Key on address@hidden to go to RSW's gihub home page.
address@hidden works too. 
+
+References to project home pages look like this (the / is required):
+
+  github#/hyperbole           (uses user default setting)
+  github#/rswgnu/hyperbole
+
+References to specific commits use the # hash symbol and short versions
+of the git commit hash code:
+
+  gh#rswgnu/hyperbole/5ae3550 (if include user, must include project)
+  github#hyperbole/5ae3550    (project can be given with user default)
+  gh#5ae3550                  (user and project defaults are used)
+
+An Action Key press on the first commit reference above works because
+user, project and commit hash code are all included.  The second and
+third versions require the setup of default values, as explained in
+the commentary near the top of "hib-social.el".
+
+** Git (Local) References
+
+Similarly, again for software developers, git references work on local
+git repositories.  If you have a clone of the Hyperbole git repository
+on your local system, then you can activate all of the following buttons.
+
+  git#/hyperbole            (displays the top directory of the hyperbole 
repository)
+  git#/hyperbole/55a1f0     (displays hyperbole git commit diff)
+  git#=hactypes.el          (displays a git-versioned file regardless of 
directory)
+  git#=master:kotl/kview.el (displays file in subdirectory from master branch)
+  gt#55a1f0                 (when within a git repo, displays its commit diff)
+
+The first four examples work anywhere regardless of the buffer since Hyperbole
+locates all git repositories for you by repository/project name.  If you set a
+default project, then the last example will work anywhere as well.
+
+** Grep, Occurrence, Debugger and Compiler Error Buttons, and Cscope Analyzer 
Lines
 
 The output of `grep -n', the UNIX line pattern matcher, can be activated as
 buttons that jump to each matched line within its source file; use {M-x grep
@@ -471,7 +711,7 @@ along with GDB breakpoint listing lines also link to source 
lines.
 
 {C-h h f o} or {M-x occur RET} (find matches in a single buffer) and {C-h h f
 m} or {M-x moccur RET} (find matches across multiple buffers and files) also
-produce implicit button output that displays associated source lines.
+produce implicit button output that display associated source lines.
 
 If you have the Cscope C/C++ code analyzer from the AT&T Toolchest and have
 loaded the cscope.el library add-on for GNU Emacs, then the output lines
@@ -480,14 +720,15 @@ source lines.  Cscope goes beyond the basic Emacs tags 
facility to allow you
 to see the callers of a function and the functions called by a specific
 routine.
 
-Many of these `find a line' features exist in the Hyperbole Find/ menu.  Give
-it a try, e.g. to filter a file to just lines that don't match a pattern.
+Many of these find-a-line features exist in the Hyperbole Find/ menu,
+{C-h h f}.  Give it a try for fast access to complex file line filters,
+e.g. filter a file to just lines that don't match a pattern (RemoveLines).
 
 ** Annotated Bibliography Buttons
 
-Here's a use of an annotated bibliography reference implicit button which
-allows you to see a bibliography entry such as [FSF 16] when you activate the
-button between brackets.
+Annotated Bibliography references such as [FSF 16] may be embedded in any file
+and activated with the Action Key to find the reference at the end of the file.
+Try that one by pressing between the square brackets.
 
 ** Completion Selection
 
@@ -500,8 +741,8 @@ displayed.  Test this technique with a {C-x C-f} 
(find-file) and then a {?}.
 
 ** Hyperbole Source Buttons
 
-If you ask for help with the Assist Key or {C-u C-h A} from within the [FSF
-16] button, the first line of the help buffer will look like this:
+If you ask for help with the Assist Key or {C-u C-h A} from within the
+[FSF 16] button, the first line of the help buffer will look like this:
 
 @loc> "DEMO"
 
@@ -515,8 +756,8 @@ If you click the Action Key on the buffer name, the buffer 
will be displayed
 just as a file buffer would.  This type of implicit button is called a
 `hyp-source' button.
 
-You can also activate any explicit buttons shown in help buffers thanks to
-hyp-source buttons.
+You can also activate any explicit buttons (see "#Explicit Buttons") shown in
+help buffers thanks to hyp-source buttons.
 
 ** UNIX Man Apropos Buttons
 
@@ -720,9 +961,10 @@ USENET news messages has not yet been updated for use with 
Emacs 24 and 25,
 so these features are disabled by default.  If you want to try them knowing
 this, {C-h h c m} will toggle this feature on and off.
 
+
 * Smart Mouse Keys
 
-If you use Emacs with mouse support under the OS X window system, the X
+If you use Emacs with mouse support under the macOS window system, the X
 Window System or MS Windows, Hyperbole automatically configures your mouse
 keys for use as Smart Keys and provides additional display-oriented
 operations as demonstrated here.
@@ -745,16 +987,17 @@ For example:
 
 ** Thing Selection
 
-Hyperbole has some radically cool ways to select regions of structured text
-or source code and to copy or move them between buffers with a single mouse
-drag or two key presses.  A great deal of smarts are built-in so that it
-does the right thing most of the time.
+Hyperbole has some radically cool ways to select, copy and move
+regions of structured text or source code that we call `things'.  You
+can copy or move things between buffers with a single mouse drag or
+two key presses.  A great deal of smarts are built-in so that it does
+the right thing most of the time.
 
-We use the term things to refer to structured entities that Hyperbole can
-select.  These include: delimited pairs of (), {}, <>, [] and quote marks,
-source code functions, source code comments and matching tag pairs in HTML
-and SGML modes.  Delimited things are those things that contain a
-selectable delimiter such as an opening parenthesis.
+Things are structured entities that Hyperbole can select and
+manipulate.  These include: delimited pairs of (), {}, <>, [] and
+quote marks, source code functions, source code comments and matching
+tag pairs in HTML and SGML modes.  Delimited things are those things
+that contain a selectable delimiter such as an opening parenthesis.
 
 The best way to mark a delimited thing is to move your cursor to the
 starting delimiter of the thing and then press the Action Key.  Typically,
@@ -770,7 +1013,7 @@ somewhere outside of the thing, either within the same 
window or within
 another window.  The thing will be copied to the point of release.  If you
 want to move a thing, simply perform the same drag but with the Assist
 Mouse Key.  Ensure that you do not move any explicit buttons from one
-buffer to another as that does not presently work.
+buffer to another as that does not work.
 
 Try out some of these operations in HTML or source code files to see
 how they can speed your editing.
@@ -803,7 +1046,8 @@ is important to have context-sensitive help available.  
The earlier section
 on Help Buffers explained how to display such help from the keyboard.  The
 same help can be displayed using the mouse by depressing the Smart Key for
 which you want help, performing any action necessary to register a context,
-such as a drag motion, and then pressing the other Smart Key.
+such as a drag motion, and then pressing the other Smart Key and releasing
+both.
 
 Here is an example.  Depress the Action Key somewhere within this paragraph
 and while holding it down, depress the Assist Key.  Then release the keys in
@@ -818,7 +1062,7 @@ without having to trigger any of them.
 ** Creating and Deleting Windows
 
 Horizontal and vertical drags of the Smart Mouse Keys are used to split and
-to delete Emacs windows.
+delete Emacs windows.
 
 An Action Mouse Key horizontal drag of five or more characters in either
 direction within a single window creates a new window by splitting the
@@ -829,13 +1073,13 @@ within a single window, deletes that window.
 
 Let's try these.  You need only move your mouse pointer a few characters to
 register a drag.  First, split this window with an Action Key horizontal
-drag.  Then click the Action Key in the first few characters of the modeline
-of one of the windows to change the buffer that it displays so you can tell
-the windows apart.  Then delete either one of the windows with a horizontal
-drag of the Assist Key within the window.  If you split windows many times
-and then delete a number of the windows, you'll be left with windows of
-differing heights.  Use {C-x +} to re-balance the heights of the remaining
-windows, so they are fairly even.
+drag.  Then click the Assist Key on the buffer name in the modeline of one of
+the windows to change the buffer that it displays, so you can tell the windows
+apart.  Then delete either one of the windows with a horizontal drag of the
+Assist Key within the window.  If you split windows many times and then
+delete a number of the windows, you'll be left with windows of differing
+heights.  Use {C-x +} to re-balance the sizes of the remaining windows, so
+they are fairly even.
 
 Now try a side-by-side window split.  Drag vertically with the Action Key by
 three or more lines to split the window.  Again, change the buffer of one of
@@ -849,9 +1093,9 @@ You can easily resize Emacs windows by dragging their 
window separators
 Smart Key on a modeline or near a window side, hold it down while you drag
 to a new location and then release.  The window separator will then jump to
 the location of release.  Basically, just drag the window separator to where
-you want it.  Nowadays a better version of stacked window resizing exists on
-the left mouse key.  A drag from a blank area of a modeline with this key
-shows visible feedback as the window is resized.
+you want it.  Nowadays a better version of Emacs window resizing exists on
+the left mouse key.  A drag with this key from a blank area of a modeline or
+a window side divider shows visible feedback as the window is resized.
 
 Did you follow all that?  Let's try it to be sure.  First, you need at least
 two windows, so create a new one with the drag techniques you just learned.
@@ -863,19 +1107,58 @@ window.
 Try to drag the bottom modeline.  You see that you can't; you would have to
 resize the frame to move the bottom up.
 
-** Swapping Buffers
+** Dragging Buffers, Windows and Items
+
+*** Swapping Buffers
 
 Swapping buffer locations is quick and easy with Hyperbole.  Simply drag from
-one window to another with the Assist Key (remember the Action Key creates
-buttons when you use the same drag).
+one window to another with the Assist Key (not the Action Key).
 
 Split the current window into two, one above the other.  Drag the upper
-modeline so that one window is clearly bigger than the other.
+modeline so that one window is clearly bigger than the other.  Now switch to
+another buffer in one of the windows.  Then depress your Assist (not Action)
+Mouse Key within one window, drag to the other window and release the key.
+Boom, the buffers are swapped.  This works across frames as well.
+
+If you have just two windows in an Emacs frame, you can swap their buffers
+from the keyboard.  Use this Hyperbole minibuffer menu key sequence to swap
+the buffers and quit from the Hyperbole minibuffer menu: {C-h h s w ~ q}.
+
+*** Displaying Buffers
+
+What if you want to display the same buffer in another window and not swap
+buffers?  Depress the Action Key in the open area of the modeline of the source
+window and drag to the text area of the destination window.  Voila, the buffer
+appears in the new location as well as the old one.
+
+If you want a new window where you release (so the original destination 
window's
+buffer stays onscreen), just drag to a window's modeline; that window will be
+split before the buffer is displayed.
 
-Then use this Hyperbole minibuffer menu key sequence to swap the buffers and
-quit from the menu: {C-h h s w ~ q}.
+*** Cloning Windows
 
-** Saving and Restoring Window Configurations
+To clone a window with its buffer to a new frame, simply drag the Action Mouse
+Key from the window to outside of Emacs and release the key.  A new frame will
+be created, selected and sized according to the original window.  Do the same
+thing with the Assist Mouse Key and the original window will be deleted as 
well,
+unless it is the only window in that frame.  Create a few windows and try these
+actions.
+
+*** Displaying File and Buffer Items
+
+You can do the same thing with items in dired, buffer menu and ibuffer menus
+rather than buffers themselves.  Drag with the Action Mouse Key and the 
selected
+item will be displayed in any Emacs window in which you release.  Drag outside
+Emacs and it will be displayed in a new frame.
+
+So now you can rapidly put a bunch of buffers and files on your screen wherever
+you like.  Typically, a brief visual pulse is shown first at the source item 
and
+then in the whole destination window, to help you see that the transfer has 
been
+made.  An Assist Key Drag will move the the item list buffer to the destination
+(swapping buffers), just as it does with other buffers.  Practice these drags 
as
+they will prove very beneficial across time.
+
+** Window Configuration Drags
 
 A window configuration consists of the set of windows within a single Emacs
 frame.  This includes their locations, buffers, and scrolled positions of
@@ -899,11 +1182,11 @@ restoring them.
 ** Modeline Mouse Clicks
 
 Smart Mouse Key clicks on window modelines are treated specially by
-Hyperbole.  They are broken up into three regions, each with their own Smart
-Mouse Key operations.  The regions are: the left edge, the right edge, and
-the blank middle portion (the non-edge part of the modeline).  The edge
-regions are the left or rightmost three characters of the modeline, by
-default.
+Hyperbole.  They are broken up into separate regions, each with their own
+Smart Mouse Key operations.  The regions are: the left edge, the buffer ID,
+the blank middle portion (the non-edge part of the modeline), and the right
+edge.  The edge regions are the left first character and the rightmost three
+characters of the modeline, by default.
 
 *** Switching to Another Buffer
 
@@ -911,7 +1194,18 @@ An Action Key click in the left edge of a modeline buries 
the current buffer,
 i.e. puts it on the bottom of the buffer list and removes it from view, if it
 is not the only available buffer.  An Assist Key click in the left edge of a
 modeline unburies the bottom buffer.  Repeated clicks of either key allow you
-to cycle through buffers to get to the one you want.  Try this out.
+to cycle through buffers to get to the one you want.  Try this out.  A
+similar thing can be accomplished by using the left mouse key and the Assist
+Mouse Key on the modeline buffer name if you need a wider space as a target.
+
+*** Running Dired on the Current Directory
+
+An Action Key click on the modeline buffer name runs dired on the current
+directory.  An Action key click on an item in the dired buffer, displays the
+item.  An Action Key click on part of the directory name in the first line of
+the dired buffer runs dired on the ancestor directory given by the text to
+the left of the click location.  A click at the end of the first line quits
+the dired session.
 
 *** Displaying Documentation
 
@@ -932,27 +1226,36 @@ you must click on the modeline of the window displaying 
the summary.
 
 *** Buffer Menu and Screen Control
 
-An Action Key click in the center portion of a modeline displays a buffer
-menu, a summary of available buffers.  An Action Key click on any buffer menu
-line then displays that buffer.
+An Action Key click in the blank center portion of a modeline displays
+a buffer menu, a summary of available buffers.  An Action Key click on
+any buffer menu line then displays that buffer and closes the buffer
+menu.
+
+If you want to display several buffers, first create some new windows, then
+display the buffer menu and drag from each buffer name to the window in which
+you want it displayed.  This works across frames and also works in ibuffer
+and dired modes too!  Try it now.
 
-An Assist Key click in the center portion of a modeline pops up a menu of
-convenient screen commands that lets you select buffers grouped by major
-mode, use HyControl, or jump to specific windows, window configurations or
-frames.
+Alternatively, you may display the buffer menu, use its {m} command to mark
+buffers and then use the address@hidden command to display the marked buffers 
in a grid
+of popup windows whose number of rows and columns you specify at the prompt
+or via a prefix argument.  This also works in ibuffer-menu and dired modes.
+
+An Assist Key click in the blank center portion of a modeline pops up
+a menu of convenient screen commands that lets you select buffers
+grouped by major mode, use HyControl, or jump to specific windows,
+window configurations or frames.
 
 See "(hyperbole)action-key-modeline-function" for how to adjust this
 behavior.
 
 * Epilog
 
-We hope you have enjoyed this introduction to Hyperbole and see how it can
-help you as an every-ready sidekick as you work with information every day.
-Explore the Hyperbole menus to learn more interactively.  For reference, the
-Hyperbole Manual has more detail about the many things that Hyperbole does
-when you are ready to dive deeper.  Read it online with the GNU Info reader
-at "(hyperbole)Top".
-
+We hope you have enjoyed this introduction to Hyperbole. It can be your
+ever-ready sidekick in your daily knowledge work.  Explore the Hyperbole
+menus to learn more interactively.  For reference, the Hyperbole Manual, has
+extensive detail about the many things that Hyperbole does when you are ready
+to dive deeper.  Read it online with the GNU Info reader at "(hyperbole)Top".
 
 * References
 
diff --git a/DEMO-ROLO.otl b/DEMO-ROLO.otl
new file mode 100644
index 0000000..05e401d
--- /dev/null
+++ b/DEMO-ROLO.otl
@@ -0,0 +1,17 @@
+==================================================================
+                       DEMO ROLO
+==================================================================
+*    HiHo Industries
+**     Strong, Hugo            <address@hidden>  W708-555-9821
+             Manager
+             04/12/2017
+***      Smith, John           <address@hidden>  W708-555-2001
+             Chief Ether Maintainer
+             05/24/2017
+*    Work Industries
+**     Hansen, Dan             <address@hidden>  W218-555-2311
+             Manager
+             02/18/2017
+***      Dunn, John            <address@hidden>  W218-555-3233
+             Media Maker
+             11/2/2017
diff --git a/HY-ABOUT b/HY-ABOUT
index 00cd435..b8f0a59 100644
--- a/HY-ABOUT
+++ b/HY-ABOUT
@@ -1,14 +1,16 @@
                          ABOUT GNU HYPERBOLE
+
                   Designed and Written by Bob Weiner
+               Maintained by Mats Lidell and Bob Weiner
                 https://www.gnu.org/software/hyperbole/
-                            Version 6.0.2
+                            Version 7.0.0
 
 GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
 an efficient and programmable hypertextual information management
 system implemented as a GNU Emacs package.  It works well on GNU Emacs
-24.4 or above.
+24.4 or above.  (See also: "HY-WHY.kotl" for Hyperbole uses).
 
-It includes easy-to-use, powerful hypertextual button types without
+Hyperbole includes easy-to-use, powerful hypertextual buttons without
 the need to learn a markup language; a hierarchical, record-based
 contact manager; a rapid window and frame control system; and a
 powerful multi-level auto-numbered outliner.  All features are aimed
@@ -25,13 +27,12 @@ explains the many ways it differs from and is complementary 
to Org mode.
 
 Hyperbole consists of five parts:
 
-   1.  Buttons and Smart Keys: A set of hyperbutton types which supply
-       core hypertext and other behaviors.  Buttons may be added to
-       documents (explicit buttons) with a simple drag between windows,
-       no markup language needed.  Implicit buttons are patterns
-       automatically recognized within text that perform actions,
-       e.g. bug#24568 displays the bug status information for that bug
-       number.
+   1.  Buttons and Smart Keys: Hyperbole hyperlink and other kinds of
+       buttons may be added to documents (explicit buttons) with a
+       simple drag between windows, no markup language needed.
+       Implicit buttons are patterns automatically recognized within
+       text that perform actions, e.g. bug#24568 displays the bug
+       status information for that bug number.
        
        Buttons are accessed by clicking on them or referenced by name
        (global buttons), so they can be activated regardless of what is
@@ -44,7 +45,7 @@ Hyperbole consists of five parts:
        context-sensitive operations across emacs usage, including
        activating and showing help for Hyperbole buttons.  In many
        popular Emacs modes, they allow you to perform common, sometimes
-       complex operations without having to a different key for each
+       complex operations without having to use a different key for each
        operation.  Just press a Smart Key and the right thing happens;
 
    2.  Contact and Text Finder: an interactive textual information
diff --git a/HY-ANNOUNCE b/HY-ANNOUNCE
index b3a88bb..58e3b03 100644
--- a/HY-ANNOUNCE
+++ b/HY-ANNOUNCE
@@ -1,1199 +1,96 @@
-            ANNOUNCE: GNU Hyperbole 6.0.2 for Emacs 24.4 to 25 is released
+To: address@hidden, address@hidden, address@hidden
+ANNOUNCE: GNU Hyperbole 7, a.k.a the Git Ready for Action Release
 
-GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is an
-amazing programmable hypertextual information management system implemented as
-a GNU Emacs package.  This is the second public release in 2016.  Hyperbole has
-been greatly expanded and modernized for use with the latest Emacs 25
-releases; it supports GNU Emacs 24.4 or above.  It contains an extensive set
-of improvements that can greatly boost your day-to-day productivity with Emacs
-and your ability to manage information stored across many different machines
-on the internet.  People who get used to Hyperbole find it helps them so much
-that they prefer never to use Emacs without it.
-
-Hyperbole includes easy-to-use, powerful hypertextual button types and links
-that can be made without the need to learn a markup language.  It also
-includes a hierarchical, record-based contact manager, a rapid window and
-frame control system and a powerful multi-level auto-numbered outliner.  All
-features are aimed at making textual information management and display fast
-and easy.
-
-Hyperbole embeds hypertext buttons within unstructured and structured files,
-mail messages and news articles.  It offers intuitive keyboard and mouse-based
-control of information display within multiple windows.  It also provides
-point-and-click access to World-Wide Web URLs, Info manuals, ftp archives, etc.
-
-The Hyperbole wiki page, "https://www.emacswiki.org/emacs/Hyperbole";, explains
-the many ways it differs from and is complementary to Org mode.
-
-Instructions follow on how to download, install and utilize GNU Hyperbole as an
-Emacs package.  These are followed by What's New with Hyperbole in 2016.
-
-Bob Weiner designed and programmed GNU Hyperbole. He and Mats Lidell maintain
-it for the Free Software Foundation.  It includes an interactive demo to
-introduce you to its features and a detailed reference manual.
-
-===========================================================================
-*                          About
-===========================================================================
-
-http://git.savannah.gnu.org/cgit/hyperbole.git/tree/man/im contains a number
-of screenshots of Hyperbole and its menus.
-
-GNU Hyperbole consists of five parts:
-
-* Buttons and Smart Keys
-     a set of hyperbutton types which supply core hypertext and other
-     behaviors.  Buttons may be added to documents (explicit buttons)
-     with a simple drag between windows, no markup language needed.
-     Implicit buttons are patterns automatically recognized within text
-     that perform actions, e.g.  bug#24568 displays the bug status
-     information for that bug number.
-
-     Buttons are accessed by clicking on them or referenced by name
-     (global buttons), so they can be activated regardless of what is on
-     screen.  Users can make simple changes to button types.  Emacs Lisp
-     programmers can prototype and deliver new types quickly.
-
-     Hyperbole includes two special `Smart Keys', the Action Key and the
-     Assist Key, that perform an extensive array of context-sensitive
-     operations across emacs usage, including activating and showing
-     help for Hyperbole buttons.  In many popular Emacs modes, they
-     allow you to perform common, sometimes complex operations without
-     having to a different key for each operation.  Just press a Smart
-     Key and the right thing happens;
-
-* Contact and Text Finder
-     an interactive, textual information management interface,
-     including fast, flexible file and text finding commands.  A
-     powerful, hierarchical contact manager, HyRolo, which anyone can
-     use, is also included.  It is easy to learn since it introduces
-     only a few new mechanisms and has a menu interface, which may be
-     operated from the keyboard or the mouse;
-
-* Screen Control
-     the fastest, easiest-to-use window and frame control available for
-     GNU Emacs, called HyControl.  With just a few keystrokes, you can
-     shift from increasing a window's height by 5 lines to moving a
-     frame by 220 pixels or immediately moving it to a screen corner.
-     Text in each window or frame may be enlarged or shrunk (zoomed) for
-     easy viewing, plus many other features;
-
-* Hypertextual Outliner
-     an advanced outliner, the Koutliner, with multi-level
-     autonumbering and permanent identifiers attached to each outline
-     node for use as hypertext link anchors, per node properties and
-     flexible view specifications that can be embedded within links or
-     used interactively;
-
-* Programming Library
-     a set of programming libraries, for system developers who want to
-     integrate Hyperbole with another user interface or as a back-end
-     to a distinct system.  (All of Hyperbole is written in Emacs Lisp
-     for ease of modification.  It has been engineered for real-world
-     usage and is well structured).
-
-The GNU Hyperbole project home page gives a more extensive description:
-"https://www.gnu.org/software/hyperbole/";.
-
-===========================================================================
-*                       Browsing the Source
-===========================================================================
-
-To explore the Hyperbole source code rather than installing it for use,
-download a tar.gz source archive from either:
-
-    ftp://ftp.gnu.org/gnu/hyperbole/
-
-or
-
-    http://ftpmirror.gnu.org/hyperbole/
-
-which will find the closest mirror of the GNU ftp site and show it to you.
-
-===========================================================================
-*                          Package Installation
-===========================================================================
-
-Once you have Emacs set up at your site, GNU Hyperbole may be
-installed simply by using the Emacs Package Manager.  If you are not
-familiar with it, see the Packages section of the GNU Emacs Manual,
-"(emacs)Packages", or:
-"https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html";. 
-
-If you have Hyperbole 5.10 or higher already installed and simply want to
-upgrade it, invoke the Emacs Package Manager with {M-x list-packages RET},
-then use the {U} followed by the {x} key to upgrade all out-of-date
-packages, Hyperbole among them.  Then skip the text below and move on to
-the next section, Invocation.
-
-Otherwise, to download and install the Hyperbole package, add the following
-lines to your personal Emacs initialization file, typically "~/.emacs".
-
-(require 'package)
-(setq package-enable-at-startup nil) ;; Prevent double loading of libraries
-(package-initialize)
-(unless (package-installed-p 'hyperbole)
-  (package-refresh-contents)    
-  (package-install 'hyperbole))
-(require 'hyperbole)
-
-Now restart Emacs and Hyperbole will be downloaded and compiled for use with
-your version of Emacs.  You may see a bunch of compilation warnings but these
-can be safely ignored.
-
-===========================================================================
-*                           Invocation
-===========================================================================
-
-Once Hyperbole has been installed for use at your site and loaded into your
-Emacs session, it is ready for use.  You will see a Hyperbole menu on your
-menubar and {C-h h} will display a Hyperbole menu in the minibuffer for
-quick keyboard-based selection.
-
-You can invoke Hyperbole commands in one of three ways:
-
-   use the Hyperbole menu on your menubar;
-
-   type {C-h h} or {M-x hyperbole RET} to bring up the Hyperbole main menu
-   in the minibuffer window, for fast keyboard or mouse-based selection;
-   select an item from this menu by typing the item's first letter; use {q}
-   to quit from the menu.
-
-   use a specific Hyperbole command such as an Action Key click {M-RET} on
-   a pathname to display the associated file or directory.
-
-Use {C-h h d d} for an interactive demonstration of standard Hyperbole
-button capabilities.
-
-{C-h h k e} offers a interactive demonstration of the Koutliner,
-Hyperbole's multi-level autonumbered hypertextual outliner.
-
-To try out HyControl, Hyperbole's interactive frame and window control
-system, use {C-h h s w} for window control or {C-h h s f} for frame
-control.  {t} switches between window and frame control once in one of
-them.  Hyperbole also binds {C-c \} for quick access to HyControl's
-window control menu if it was not already bound prior to Hyperbole's
-initialization.  A long video demonstrating most of HyControl's features
-is available at https://youtu.be/M3-aMh1ccJk.
-
-The above are the best interactive ways to learn about Hyperbole.  The
-Hyperbole Manual is a reference manual, not a simple introduction.  It is
-included in the "man/" subdirectory of the Hyperbole package directory in
-four forms:
-
-"man/hyperbole.info"   - online Info browser version
-"man/hyperbole.html"   - web HTML version
-"man/hyperbole.pdf"    - printable version
-"man/hyperbole.texi"   - source form
-
-The Hyperbole package installation places the Info version of this manual
-where needed and adds an entry for Hyperbole into the Info directory under
-the Emacs category.  {C-h h d i} will let you browse the manual.  For web
-browsing, point your browser at "${hyperb:dir}/man/hyperbole.html",
-wherever the Hyperbole package directory is on your system; often this is:
-"~/.emacs.d/elpa/hyperbole-${hyperb:version}/".
-
-===========================================================================
-*                           User Quotes
-===========================================================================
-
-
-  *** MAN I love Hyperbole!!!  Wow! ***
-
-                                        -- Ken Olstad
-                                           Cheyenne Software, Inc.
-
--------
-
-  I *love* koutlines.
-
-                                        -- Bob Glickstein
-                                           Z-Code Software Corporation
-
--------
-
-  For me, Emacs isn't Emacs without Hyperbole.  I have depended on Hyperbole
-  daily since 1992, when I first started using it to manage my development
-  environment.  It didn't take long before I could summon almost any
-  information I needed directly from within my editing environment with an
-  implicit button. Since I almost never have to slow down to look for
-  things--one context-dependent button usually produces exactly what I need
-  --I am able to maintain focus on the task I am working on and complete it
-  more quickly.  With its gestural interface, seamless integration with other
-  Emacs packages and incredibly useful set of core features.  I think that
-  Hyperbole is one of the best designed and most easily extensible software
-  products I have ever come across.  It is certainly the one which has made
-  the biggest improvement in my personal productivity.
-
-                                        -- Chris Nuzum
-                                           Co-founder, Traction Software, Inc.
-
--------
-
-  I've found Hyperbole (in conjunction with XEmacs) to be very useful
-  for signal processing algorithm development.
-
-  For me, it has almost completely obsoleted the engineering notebook:
-  I keep a set of files with ideas, algorithms, and results, linked
-  together and to the implementation in C++ files.  Using XEmacs'
-  support for embedding graphics, I've written a mode that accepts
-  image tags (formatted like HTML), and reads in GIF files to display
-  plots.  I have another program that converts the file to HTML (not
-  perfect, but adequate), so I can put any aspect of development on
-  our internal web for others to see.
-
-                                        -- Farzin Guilak
-                                           Protocol Systems, Inc., Engineer
-
--------
-
-  I am blind and have been using Hyperbole since 1992.  I used to use a PC as
-  a talking terminal attached to a UNIX system, but then I developed
-  Emacspeak which lets me use Emacs and Hyperbole from standard UNIX
-  workstations with an attached voice synthesizer.
-
-  My main uses are:
-    1) Global and implicit buttons for jumping to ftp sites.
-    2) The contact manager with Emacspeak support.
-    3) Explicit buttons as part of comments made about a structured document.
-       Each button jumps to the document section referred to by the comment.
-       This is very, very useful.
-    4) The Hyperbole Koutliner, which I find a very useful tool.  I've
-       implemented Emacspeak extensions to support it.
-
-                                        -- TV Raman
-                                           Google Inc.
-
--------
-
-  I've been a grateful Hyperbole user for a few years now.  Hyperbole's
-  flexibility and ease of use is a marvel.
-
-  Mainly, I write easy little implicit button types (and corresponding action
-  types) to make my life easier.  For example, I have an implicit button type
-  to bury certain buffers when I click at their bottoms, one that recognizes
-  a bug report record in various contexts and edits it, one that links pieces
-  of test output in a log file to the corresponding test case source code
-  (EXTREMELY helpful in interpreting test output), others that support our
-  homegrown test framework, one that handles tree dired mode the way I'd
-  like, one that completely handles wico menus (I've also overloaded the
-  wconfig actions triggered by diagonal mouse drags with wicos actions), and
-  a couple that support interaction with BBDB.
-
-  Other than that, I keep a global button file with 30 or so explicit buttons
-  that do various little things, and I index saved mail messages by putting
-  explicit link-to-mail buttons in an outline file.
-
-                                        -- Ken Olstad
-                                           Cheyenne Software, Inc.
-
--------
-
-  In general, Hyperbole is an embeddable, highly extensible hypertext
-  tool.  As such, I find it very useful. As it stands now, Hyperbole is
-  particularly helpful for organizing ill-structured or loosely coupled
-  information, in part because there are few tools geared for this purpose.
-  Hyperbole also possesses a lot of potential in supporting a wider
-  spectrum of structuredness, ranging from unstructured to highly
-  structured environments, as well as structural changes over time.
-
-  Major Uses:
-
-  * Menu interface to our own collaborative support environment called
-    CoReView: This interface brings together all top-level user commands
-    into a single partitioned screen, and allows the end user to interact
-    with the system using simple mouse-clicking instead of the meta-x key.
-
-  * Gateway to internet resources: this includes links to major Internet
-    archive sites of various types of information. Links are made at both
-    directory and file levels.
-
-  * Alternative directory organizer: The hierarchical nature of the Unix
-    file system sometimes makes it difficult to find things quickly and
-    easily using directory navigational tools such as dired. Hyperbole
-    enables me to create various "profile" views of my directory tree, with
-    entries in these views referring to files anywhere in the hierarchy.
-
-  * Organizing and viewing online documentation: using Hyperbole along with
-    Hyper-man and Info makes it truly easy to look up online documentation.
-      
-  * Other desktop organization tasks: including links to various mail
-    folders, saved newsgroup conversation threads, online note-taker,
-    emacs-command invocations, etc.
-
-                                        -- Dadong Wan
-                                           University of Hawaii
-
--------
-
-  Hyperbole is the first hyper-link system I've run across that is
-  actually part of the environment I use regularly, namely Emacs. The
-  complete flexibility of the links is both impressive and expected -- the
-  idea of making the link itself programmable is clever, and given that one
-  assumes the full power of Emacs.  Being able to send email with buttons
-  in it is a very powerful capability.  Using ange-ftp mode, one can make
-  file references "across the world" as easily as normal file references.
-
-                                        -- Mark Eichin
-                                           Cygnus Support
--------
-
-   I just wanted to say how much I enjoy using the Hyperbole Koutliner.
-   It is a great way to quickly construct very readable technical documents
-   that I can pass around to others.   Thanks for the great work.  
-
-                                        -- Jeff Fried
-                                           Informix
-
--------
-
-   The Hyperbole system provides a nice interface to exploring corners of
-   Unix that I didn't know existed before.
-
-                                        -- Craig Smith
-
-===========================================================================
-*                 What's New in GNU Hyperbole V6.0.2
-===========================================================================
-
-  BUTTONS
-
-    - pathname Implicit Button Type: generalized to handle hash-style links to
-      HTML files, to Github Markdown # sections and to Emacs outline *
-      sections.  So an Action Key press on any of the following links displays
-      the link referent:
-            "man/hyperbole.html#Questions-and-Answers"
-           "README.md#why-was-hyperbole-developed"
-           "DEMO#HTML Markdown and Emacs Outline Hash Links"
-      Even links split across 2 lines like this now work: "DEMO#Social Media
-      Hashtags and Usernames", as long as point is on the first line.
-
-      Within HTML and Markdown files, in-file hash links without any file name
-      prefix work as well.
-
-      HTML hash-links are case-sensitive; other hash-links are not.  Hash links
-      typically use dashes in place of the spaces that referents may contain,
-      but if the link is enclosed in quotes, Hyperbole allows spaces to be used
-      as well.  In fact, it is best practice to always enclose hash-style links
-      in quotes so Hyperbole can distinguish them from other similar looking
-      constructs, such as social media hashtags (see "(hyperbole)Social 
Media").
-
-      Pathnames surrounded by literal non-ASCII quote marks now work as well.
-      For example, ‘http://ftp.gnu.org/gnu/hyperbole/’.
-
-    - New Implicit Button Type, markdown-internal-link, displays any in-file
-      Markdown link referent, aside from pathnames and urls.  Together with
-      other types, all Markdown links can now be followed by the Action Key.
-
-    - social-reference Implicit Button Type: Disabled this type within quoted
-      strings (all modes) and within parentheses (markdown-mode), so in-file
-      hash link references are not matched as social hash tags.  Made the list
-      of modes a variable, hibtypes-social-inhibit-modes.
-
-    - New link-to-web-search Action Type: Allows global and explicit buttons
-      to link to specific web term searches from `hyperbole-web-search-alist'.
-
-    - org-mode Implicit Button Type: Improved to invoke org-meta-return when
-      not on an Org link or outline heading.
-
-  DOCUMENTATION
-
-    - Added pointer to HyControl video and {C-c \} binding which invokes
-      HyControl window control.
-
-    - README File: New Org-mode user testimonial.
-
-    - DEMO File: Added description and exercise using the new Find/Web menu.
-
-    - Added README.md.html introduction with images combining README, INSTALL
-      and HY-ABOUT information.
-
-    - Full set of hand-written changes are now in the file "Changes".  The
-      former name, ChangeLog, is now auto-generated from the version controlled
-      'git log' but not as complete.
-
-  KEYS
-
-    - New variables, action-key-eol-function and assist-key-eol-function, used
-      to control what the Action and Assist Keys do at the end of a line.
-      Default behaviors remain as before but now one can set these to do
-      something other than scrolling, if desired.  See "(hyperbole)Smart Key -
-      Smart Scrolling"
-
-    - When in HyControl, pressing {ESC} now quits in addition to {q}.
-
-  MENUS
-
-    - New submenu, Find/Web, for quick access to major web search engines.
-      The Find/Web menu looks like this:
-        Web> Amazon Bing Dictionary Elisp Facebook Google Hub(git) Images Maps 
RFCs StackOverflow Twitter Wikipedia Youtube
-
-      Hyperbole binds the key {C-c /} for quick access to this menu, if it is
-      not already bound prior to Hyperbole's initialization. The
-      Cust/Web-Search menu, {C-h h c w}, sets the option,
-      hyperbole-web-search-browser-function, which determines whether web
-      search results are displayed within Emacs or with an external web
-      browser.  A short video introduction to the Find/Web menu may be found at
-      https://youtu.be/8lMlJed0-OM.
-
-      Advanced users can change the search engines listed in the Find/Web menu
-      with M-x customize-variable RET hyperbole-web-search-alist RET.  Changes
-      are automatically reflected in the Hyperbole menus once applied.
-      Remember each search engine name must begin with a unique letter and each
-      URL must have a %s format field indicating where to place the web search
-      term when a search is performed.  See "(hyperbole)Web Search Engines".
-
-===========================================================================
-*                            V6.0.0 - V6.0.1
-===========================================================================
-
-NOTE: Version 6.0.1 was the first public release by the author, Bob Weiner,
-since version 4.18.  All version 5 releases made this year were test releases,
-so you should look through all of the V5 news items to understand all that is
-new in V6 as well.  In other words, all news items listed below are new for
-2016.
-
-  BUTTONS
-
-    - New implicit button type for social media hashtag or username
-      references, social-reference.  Action key activation displays
-      the web page associated with the hashtag or username.  References
-      can look like #hashtag or @username for Twitter references.
-      fb#hashtag or address@hidden for Facebook references or
-      in#hashtag or address@hidden for Instagram references.
-      See the new file "hib-social.el" for more information.
-
-  DOCUMENTATION
-
-    - The introductory parts of the manual have been improved and the flow
-      from section to section is better.  Added menu key sequences to
-      "(hyperbole)Suggestion or Bug Reporting".  Expanded and added
-      instructions on using the customize interface to change the functions
-      run by Smart Key modeline clicks.  See "(hyperbole)Smart Key Modeline".
-
-  HYROLO
-
-    - The Hyperbole contact manager has been renamed to HyRolo and all of its
-      identifiers now begin with hyrolo-.  If you had a custom value of
-      `rolo-file-list' in your ~/.emacs file, you should rename it to
-      `hyrolo-file-list'.
-
-  KEYS
-
-    - Removed the {RET} key bindings of the Action Key in read-only modes since
-      it was not consistent across all modes and probably was little used.  It
-      also could interfere with mode-specific usage of this key.  Just use the
-      standard Action Key bindings.
-
-  MAIL
-
-    - Implicit mail address buttons are recognized in many more programming
-      modes.  See the value of `mail-address-mode-list'.
-
-  VARIABLES
-
-    - Hyperbole is now integrated with the Emacs option customization system,
-      allowing for interactive editing and permanent setting of many Hyperbole
-      options.  Use {M-x customize-browse RET} and find the Hyperbole group
-      under Applications.  Hyperbole's options are divided into logical
-      subgroups such as Rolo and Koutliner.  See "(emacs)Easy Customization"
-      for details on the customization system and "(hyperbole)Configuration"
-      for Hyperbole specifics.
-
-    - hsettings.el is now included in the Hyperbole package rather than
-      generated (formerly called hsite.el).  Use the Hyperbole customization
-      variables to change anything in there rather than editing the file
-      manually as before.
-
-    - Renamed any Hyperbole hook variables that had a colon in their names to
-      use a hyphen instead.
-
-    - hsite.el is now included in the Hyperbole package rather than generated.
-      Use the Hyperbole customization variables to change anything in there
-      rather than editing the file manually as before.
-
-  WINDOW CONFIGURATIONS
-
-    - Similarly, the commands from the Win/ menu from Wconfig have been renamed
-      to begin with hywconfig- and the library is now called hywconfig.el.
-
-===========================================================================
-*                                   V5.15
-===========================================================================
-
-  BUTTONS
-
-    - New Implicit Button Type, debbugs-gnu-mode: When on a GNU Debbugs listing
-      entry in debbugs-gnu-mode, an Action Key press displays the discussion of
-      the selected issue; an Assist Key press pretty prints the status of the
-      issue to a window below the listing window.  This augments the
-      debbugs-gnu-query implicit button type from V5.14 which recognizes
-      bug/issue ids and queries in any buffer.
-
-    - Initial Org Mode Support: The new implicit button type, org-mode, follows
-      Org mode hyperlinks and cycles display views of Org mode outline 
headings.
-      When on a heading, the Action Key cycles the view of the subtree at point
-      and the Assist Key cycles the view of all headings in the buffer.
-
-      Suggest other good ideas for Smart Key actions on Org entities and we'll
-      likely implement them.
-
-    - Links to Info Manual Index Items: You can now drag between windows with
-      the Action Mouse Key depressed to an Info Manual index menu entry to
-      create an explicit button link to it (or use {C-h h e c} with an action
-      type of link-to-Info-index-item).  Then the button will always take you
-      to the line in the manual referenced by that index item.  This also works
-      with other Info menu items and cross-references.  Implicit buttons that
-      reference index items work too, like "(hyperbole)C-c C-m"!  And when you
-      are creating the link, full completion of the file name (within
-      parentheses) and the index item name is provided; just type ? to list
-      completions after typing a few characters.  Since Emacs and most GNU
-      programs include Info manuals, you now ​have ​a simple way to link to and
-​      ​jump​ ​to any marked item within any manual.
-      
-      Previously, when creating a link to an Info manual node, Hyperbole
-      would ignore cross-references and menu items and just link directly
-      to the node rather than anything it referenced.  To get that behavior
-      now, simply link to a place in the node that does not reference another
-      place.
-
-    - Link Button Creation: Hyperbole now shows you what you linked to at
-      global or explicit link button creation time.  Previously, it showed you
-      only the type of the link.  So if you drag across windows from a button
-      label to an Info index item now, you will know that the link goes to the
-      index item entry and not to the index node containing the item reference.
-
-    - New Implicit Button Type, pathname-line-and-column: A whitespace or quote
-      delimited existing pathname followed by a :line-num and an optional
-      :column-num displays the path at line-num and column-num.  So
-      "~/.emacs:10:40" shows your Emacs initialization file at line 10 and
-      column 40.  The column number is optional.​
-
-    - GNU Info Manual Key Sequences: Previously, Hyperbole recognized​ ​key
-      sequences delimited by curly braces only, {}.  Now it recognizes​ the​
-      ​quotation ​marks used in GNU Info manuals as well and can execute them
-      with an Action Key press within Info buffers.
-
-    - Imenu Item Recognition: When the Emacs imenu library is in use and an
-      identifier menu has been generated for the current buffer, an Action Key
-      press on an identifier at point jumps to the identifier definition
-      within the current buffer; an Assist Key press prompts with completion
-      for an identifier defined within the buffer and then jumps to its
-      definition.
-
-  DOCUMENTATION
-
-    - Smart Key Debugging: Added a section, "(hyperbole)Smart Key Debugging",
-      to the Hyperbole Manual, documenting the usage of the Customize Menu
-      option, Toggle-Smart-Key-Debug (minibuffer menu Cust/Debug-Toggle,
-      {C-h h c d}).
-
-  KEYS
-
-    - Toggle Hyperbole Keys: The new command, {M-x hyperbole-toggle-bindings
-      RET}, toggles Hyperbole mouse and keyboard keys off and on.  This is not
-      bound to a key because it will make Hyperbole unusable until the keys are
-      re-established with another toggle.  This forces you to know what you are
-      doing before you utilize this feature.
-
-  MENUS
+This is the main public release of GNU Hyperbole for 2017.  It offers many
+new productivity-enhancing features including Git and Github object links
+as summarized here:
 
-    - Minibuffer Keyboard Direct Selection:  You have always been able to click
-      with your mouse on a minibuffer menu item to directly select it.  Now
-      Hyperbole has the keys {TAB} or {M-f} to move to the next menu item and
-      {Shift-TAB}, {M-TAB} or {M-b} to move to the previous item, with each
-      cycling back when it reaches the end or beginning of the menu.  The
-      fastest way to select minibuffer menu items from the keyboard remains
-      typing the first letter (case-insensitive) of the menu item.
+  https://git.savannah.gnu.org/cgit/hyperbole.git/plain/HY-NEWS
 
-    - Minibuffer Menu Navigation Changes: A press of {RET} with point at the
-      end of a menu, quits from the menu.  {RET} with point in a menu prefix
-      (before the '>' character), returns to the top-level Hyperbole menu.
-      Clicks of the Action Mouse Key do the same thing, so now you can
-      navigate and quit from menus with just the Action Mouse Key.
+A short explanation of Hyperbole is included below.  For more detail
+or how to obtain and install it, see:
 
-===========================================================================
-*                               V5.13 and V5.14
-===========================================================================
+  https://www.gnu.org/software/hyperbole
 
-  BUTTONS
+For a list of use cases, see:
 
-    - Instant Bug Lookups and Queries: New Gnu Debbugs bug/issue tracking
-      implicit button type, debbugs-gnu-query, that jumps to the description
-      and discussion of issues by issue number and displays an issue's status.
-      This works for the GNU Hyperbole issue tracker as well as many other GNU
-      projects.  All of these button formats may be embedded within any text:
+  https://www.gnu.org/software/hyperbole/HY-WHY.html
 
-             #id-number
-             bug#id-number, bug# id-number, bug #id-number or bug id-number
-             bug?attr1=val1&attr2=val2&attr3=val3
-             bug#id-number?attr1=val1&attr2=val2&attr3=val3
+For what users think about Hyperbole, see:
 
-      Note that `issue' or `debbugs' may be used in place of `bug'.
+  https://www.gnu.org/software/hyperbole/hyperbole.html#user-quotes
 
-      See the documentation at the start of "hib-debbugs.el" for more
-      information.
+----
 
-    - During the creation of link-to-Info-node explicit buttons with an
-      argument of the type (filename)nodename, full completion is offered for
-      both the filename and the node name; just type ? to list completions
-      after typing a few characters.  You now can drop the .info suffix from
-      filenames as well, so "(hyperbole)Smart Keys" works fine as a node
-      reference.
-
-    - Implicit links from the output of the UNIX apropos command now work
-      properly in Emacs 25.
-
-    - Implicit pathname matches now handle compressed Emacs Lisp files found
-      anywhere within the directories of `load-path' and do not try to expand
-      paths that begin with a ~.
-
-    - New variable, `hpath:info-suffix', is a regular expression of Info
-      filename suffixes which may be ommitted when using parenthesized Info
-      filenames in links; this allows for compressed Info file matches and Info
-      pathnames of the form "(Hyperbole)" to work.  That displays the top node
-      of the Hyperbole Manual in the Info browser.
-
-    - Pathnames ending in .mp3, .wav or .ogg are played as music files rather
-      than displayed if your Emacs has support for this.  Modify the value of
-      the variable, `hpath:internal-display-alist' to add more formats.
-
-    - New per-window system association list variables determine what if any
-      file types within Hyperbole hyperlinks are displayed by external programs
-      outside of Emacs.  See the values of and documentation for:
-      `hpath:external-display-alist-macos', 
`hpath:external-display-alist-mswindows',
-      and `hpath:external-display-alist-x'.
-
-    - Added support for &, ~, and ^ as identifier characters in Lisp tags and
-      removed #.
-
-  DOCUMENTATION
-
-    - DEMO File: Major updates to reflect the latest Hyperbole features.  Added
-      sections on HyControl, Creating and Modifying Explicit Buttons and
-      Path Suffixes and Variables.  Try it out with {C-h h d d}.
-
-    - Hyperbole Manual
-        - Updated all screenshots in the manual; thanks to Mats L.
-        - In the "(hyperbole)Internal Viewers" section, added a description of
-          the file formats supported by the default setting of the
-          `hpath:internal-display-alist' variable.
-        - Added sections "(hyperbole)Smart Key Modifiers" and
-          "(hyperbole)Smart Key Modeline".
-        - Added a "(hyperbole)Glossary" entry for Chord Keyboard.
-        - In "(hyperbole)Smart Key Thing Selection", added documentation of the
-          {C-c RET} key for syntactical region marking and the {C-c .} key for
-          delimited thing jumping between start and end.
-        - In the Cust/ menu section of "(hyperbole)Menus" which lists all
-          Hyperbole key bindings, indicated which keys are bound only if not
-          bound prior to loading Hyperbole.
-
-  HYCONTROL
-
-    - Frame placement calculations now account for window system decorations
-      around frame, leading to improved placement offsets around screen edges.
-      See the documentation for `hycontrol-set-screen-offsets'.
-
-  MENUS
-
-    - On the Hyperbole menubar menu, the Types submenu which shows
-      documentation for Hyperbole types has been moved below the Documentation
-      menu to match the Hyperbole minibuffer menu location.  Also added a Types
-      menu item under the Explicit-Button menu to match the one under the
-      Implicit-Button menu.
-
-    - On the Hyperbole Customize/Change-Key-Bindings menubar menu, renamed
-      these entries and added Mark-Think-Key.  Similar updates done to the
-      minibuffer menu.
-
-  MOUSE AND SMART KEY SUPPORT
-
-    - An Action Key press on a Hyperbole minibuffer menu key sequence now
-      invokes the associated menu action.  Try it with {C-h h d g} to see the
-      Hyperbole glossary.  An Assist Key press shows help for the menu item.
-
-    - Changed the `assist-key-default-function' which applies in an 
unrecognized
-      context to trigger an error by default to match the behavior of the
-      Action Key.  Its prior value, toggle display of or hide the Smart Key
-      summary, is performed by an Assist Key click in the right of a modeline
-      or via minibuffer menu with {C-h h d s}.
-
-    - Point is now left within the Smart Key summary by default and it is in
-      help mode so you can page through it with SPC and DEL keys and then quit
-      from it with {q}.
-
-    - A click of the Action Mouse Key within an inactive minibuffer menu
-      displays the Hyperbole minibuffer menu, allowing you to invoke menu
-      entries with the mouse.  A click of the Assist Key in the same place
-      displays the buffer, window and frame jump menu just as does a click
-      within the middle of a modeline since it is easy to miss by a little and
-      click on one or the other.  These behaviors are controlled by the new
-      variables, `action-key-minibuffer-function' and
-      `assist-key-minibuffer-function'.
-
-    - Distributed Window System Support: Previously, Hyperbole supported mouse
-      control only on the screen on which it was launched.  If you used
-      emacsclient or other means to create a frame on another screen or outside
-      of a terminal, that frame would not have Hyperbole mouse support even
-      though it was under a window system.  Now each frame receives mouse
-      support whenever its window system has mouse support.
-
-    - Improved support for using the Action and Assist Mouse Keys as Control-
-      and Meta- modifier keys, mainly for use with a chord keyboard or to
-      balance hand use to reduce carpal tunnel stress.  Made `hmouse-mod-mode'
-      a regular minor mode.  See "(hyperbole)Smart Key Modifiers" for more
-      details.
-
-  ROLO
-
-    - Fixed entry sorting to work with Emacs 25.
-
-
-===========================================================================
-*                                   V5.12
-===========================================================================
-
-  BUTTONS
-
-    - Prevented keyword matches as identifiers in Java, C++, C, Objective-C
-      and Python. 
-
-    - Prevented @ annotation matches when matching to Java identifiers/tags.
-
-    - In Info documentation browsing mode, added support for index nodes and
-      for fixed header line and text-property-based breadcrumb header lines
-      now used in Emacs, so the Action Key can now follow links associated
-      with all of these entities.
-
-    - In compilation buffers, e.g. {M-x make RET}, if an error line has a
-      relative pathname which Hyperbole cannot resolve, it will prompt
-      for the directory in which to resolve the path.
-
-  DOCUMENTATION
-
-    - Added printable hyperbole.pdf version of the Hyperbole Manual.
-
-    - DEMO file: Updated horizontal and vertical drag exercises to
-      correspond to current Hyperbole behavior.
-
-    - Added chapter on HyControl, window, frame and buffer control.
-
-    - In the Hyperbole Manual Glossary, added Buffer, Frame, HyControl
-      and Window definitions. 
-
-    - Added additional Q&A in an appendix.
-
-    - Clarified and fixed Smart Key modeline behavior documentation.
-
-    - Made example text larger for easier reading.
-
-    - Added Screen definition to the Glossary.
-
-  EMACS SUPPORT
-
-    - Hyperbole now includes the fastest, easiest-to-use Emacs window and frame
-      management system available; we call it HyControl.  If you use a lot of
-      Emacs windows or frames (typically, window system windows), this is for
-      you.  HyControl lets you interactively adjust the current layout of your
-      windows and frames down to the pixel-level if desired.  You keep
-      adjusting the location, size and display elements of your windows and
-      frames until they look as you like and then you simply quit HyControl and
-      go back to work.
-
-    - Expanded Hyperbole menu of buffers by major mode to allow for
-      `hui-menu-max-list-length' number of buffers, by default, 24.
-
-    - Made a right to left horizontal drag from near a right-side window 
divider
-      properly shrink the window width under Emacs 25.
-
-  KEYS
-
-    - The Hyperbole Screen submenu provides access to HyControl as well as the
-      key binding {C-c \}.
-
-    - Removed {C-c C-t} hmouse-toggle-bindings key binding.  This
-      should be used rarely, so force use of {M-x hmouse-toggle-bindings RET). 
-
-    - Updated "hmouse-mod.el" library for Emacs 25; it allows using the Smart
-      Mouse Keys as Control and Meta modifiers when desired.
-
-  KOUTLINER
-
-    - Improved recognition of Klinks, preventing false matches.
-
-    - Added missing {C-c C-i}/{C-c TAB} binding mentioned in the EXAMPLE.kotl
-      file; sets cell attributes.
-
-    - {C=t} Transpose characters - Added error checks at the beginning of cells
-      and end of lines for times when there are not 2 chars to transpose.
-
-  ROLO
-  
-    - Improved {M-s} interactive string searching for rolo match buffer 
strings.
-      Made {C-u M-s} to a regexp search for rolo match buffer strings.
-
-    - Documented the {l} hyrolo-locate command in the Hyperbole manual.
-
-    - The format of the rolo entry date added to new entries is now 
configurable
-      via the variable, `hyrolo-date-format'.  It uses the formatting
-      strings listed in the documentation of the function `format-time-string'.
-
-    - All rolo find and search commands are now case-insensitive.
-
-    - Using a numeric prefix argument with rolo find commands now
-      properly limits the number of matches to a maximum of that number.
-
-    - If the Big Brother Database (BBDB) is loaded before the rolo, its
-      `bbdb-file' is added to the list of files searched by the rolo.
-      You can manually added this file to `hyrolo-file-list' as well and
-      its format will automatically be handled by the rolo.
-
-===========================================================================
-*                                   V5.11
-===========================================================================
-
-  BUTTONS
-
-    - Improved support for remote pathname access (outside local
-      filesystems).
-
-  EMACS SUPPORT
-
-    - Much faster and better lookup of active Emacs Lisp identifiers
-      when the Action Key is pressed over one.  Face definitions are
-      also found now.  TAGS files are used only if the identifier has
-      not been loaded within the current Emacs session.
-
-  KOUTLINER
-
-    - Proper support for isearch temporary display of invisible text
-      when it contains a search match.  {C-s}, interactive search,
-      expands and contracts text dynamically to show any search
-      results, just as it does in the regular Emacs outline mode.  You
-      can toggle whether such searches include invisible/hidden text
-      (the default) or not.  Use the
-      Customize/Toggle-Isearch-Invisible-Text menubar item or the
-      Cust/Isearch-Invisible minibuffer menu item to toggle this
-      setting.
-
-  MAIL AND NEWS READERS
-
-    - New variable, `inhibit-hyperbole-messaging' with default value
-      of t inhibits Hyperbole's support for explicit buttons within
-      mail and news buffers.  When t, Hyperbole will not alter
-      messaging mode hooks nor overload functions from these packages,
-      preventing potential incompatibilities.
-
-      If you want to use Hyperbole buttons in mail and news buffers,
-      use the new Customize/Toggle-Messaging-Explicit-Buttons menubar
-      item or the minibuffer menu Cust/Msg-Toggle-Ebuts item.  These
-      not only change the variable value but also add or remove the
-      setup hooks as necessary.
-
-  ROLO
-  
-    - New {o} key binding for an overview of all Rolo matches at all
-      levels, one line per entry.
-
-    - {t} top-level cells command works in all cases now.
-
-    - {Shift-TAB} added as an additional key to move backwards one
-      Rolo match.
-
-    - Improved operation of {l} and {M-s C-s} commands that search for
-      occurrences of match strings and allow extending the search term.
-
-    - Support for looking up contacts in the Big Brother Database
-      (BBDB) file of email addresses, when that package is used.
-      The functions, hyrolo-grep-bbdb finds regular expression matches
-      and hyrolo-fgrep-bbdb finds string matches.  All regular Rolo
-      match buffer commands may then be applied. The {e} command for
-      editing an entry signals an error when applied to the BBDB file,
-      however.
-
-  SMART KEYS
-
-    - The Assist Key when pressed in the middle portion of a modeline
-      now pops up a very useful menu of display-oriented commands.
-      Jump to buffers categorized by major mode, to windows by buffer
-      name, or to frames by name.  Manage your windows and frames
-      quickly with this menu as well.  Another can't live without
-      feature.  This comes from the new file, hui-jmenu.el.
-
-    - Added Python etags support for jumping to Python definitions.
-      With the separate OO-Browser package, definition location is
-      much better than just with etags.
-      See "(hyperbole)Smart Key - Python Source Code" for help.
-
-    - The Hyperbole Manual Smart Key Reference appendix now has a
-      subsection for each context, allowing quick reference of a
-      particular Smart Key context.  Also, added documentation for
-      delimited thing selection, copying and moving.
-
-    - New function, hyperbole-popup-menu, to display the Hyperbole
-      menubar menu at the mouse point (or the left of the menubar when
-      running on a dumb terminal).  This is useful as a setting
-      of `action-key-default-function' if you want some undefined
-      Action Key context to popup this menu in order to use Hyperbole
-      commands.
-
-===========================================================================
-*                                   V5.10
-===========================================================================
-
-  EMACS SUPPORT
-
-    - Hyperbole now downloads, builds and installs as a regular
-      Emacs package (but from a special archive location while pre-testing).
-
-    - Automatic time-zone handling under MS Windows (already existed
-      for UNIX-like operating systems).  Plus support for 3 mouse
-      buttons under Windows.
-
-  IMPLICIT BUTTON TYPES
-
-    - Updated the extended find-file commands which handle http (www) and ftp
-      URLs to support the Tramp library included with newer versions of Emacs.
-      Use the menu item Hyperbole/Customization/Find-File-Accepts-URLs to
-      enable or to disable this.  See "(hyperbole)Using URLs with Find-File"
-      for details.
-
-  KOUTLINER
-
-    - Editing commands that normally delete/replace an active region
-      now do this in the Koutline.  If a region extends beyond one
-      cell, an error is triggered or if `kotl-mode:shrink-region-flag'
-      is set to t, the Koutliner automatically shrinks the region to
-      the first cell within the region and then continues the editing
-      operation.
-
-    - Updated yanking and other editing commands for improved
-      compatibility with Emacs 25.
-
-    - Internal improvements to many tree handling, filling and view
-      changing commands.
-
-    - New Shift-TAB key binding to demote trees (shift them up a
-      level), for compatibility with other outliners.
-
-  MENUS
-
-    - The new Find/Locate-Files menu item (minibuffer menu
-      Find/LocateFiles) prompts for a pattern and displays a list of
-      all matching pathnames found throughout the file system.  On Mac
-      OS X, this uses Spotlight (the mdfind command); on UNIX, it uses
-      the `locate' command.  Within the result *Locate* buffer, you
-      can then use the Find/Grep-Files menu item to find matching
-      lines within only these paths (files and directories).
-
-  SMART KEYS
-
-    - Action Key now ignores JavaScript keywords when searching for
-      identifiers to match.
-
-    - Commands that interactively prompt for a Koutline cell label now
-      offer completion and require a match to a visible outline cell.
-      This helps prevent operating on an invisible cell unintentionally.
-
-  THING SELECTION
-
-    - Selection of open/close matched tag pairs and jumping between
-      them now works in web-mode, which supports multiple web
-      languages within one file (previously only html-mode was
-      supported).  Also, can now select chained identifiers like:
-      parent.child.subchild in html and web modes with the {C-c
-      RETURN} thing selection key.
-
-    - Can now select comments when at a comment start; try it with
-      the Action Key.
-
-    - Can now select Lisp symbols with colons in them within help
-      buffers since they often appear there.
-
-  VARIABLES
-
-    - hyperb:init-hook renamed to hyperbole-init-hook, a more standard name.
-      See the GNU Hyperbole Manual for its usage.
-
-===========================================================================
-*                                   V5.09
-===========================================================================
-
-  FRAMES
-
-    - The Window-Configuration menu (minibuffer Win/ menu) now stores and
-      restores frame-specific window configurations, allowing each frame to be
-      dedicated to different types of work or groups of buffers.
-
-  INSTALLATION
-
-    - Installation is greatly simplified.  A single emacs initialization line
-      of the form:  
-
-        (require 'hyperbole (expand-file-name "hyperbole" "<HYPERBOLE-DIR>/")
-
-      loads and initializes Hyperbole.  Please change your site-wide or
-      personal initialization to this.  (No more setting of hyperb:dir and
-      load-path nor copying of hsite-ex.el to hsite.el is required; Hyperbole
-      does this for you).
-
-  KEYS
-
-    - A new Customize Menu option, Toggle-Smart-Key-Debug (minibuffer menu
-      Cust/Debug-Toggle, {C-h h c d}), displays a message in the minibuffer
-      every time the Action Key or Assist Key is pressed, showing the context
-      of the press and its associated action, allowing you to easily see
-      what is happening whenever you use a Smart Key.
-
-      These messages are all prefaced with "(HyDebug)" and are accumulated in
-      the *Messages* buffer for later viewing.
-
-    - Smart Keys work in any completion buffer now, e.g. the ido.el completion
-      buffer.
-
-    - Horizontal and vertical mouse drags within a single window, that do not
-      begin on a thing delimiter, are now simpler and more consistent.  An
-      Action Key drag splits the window either below (horizontal drag) or
-      side-by-side (vertical drag).  An Assist Key drag deletes the window.
-
-    - Hyperbole no longer uses the right mouse button, so it is free for popup 
menus.
-      The Assist Mouse Key is always on the Shift-Right mouse button as well as
-      on a C-u prefix to the Action Mouse Key.
-
-    - A new setting, `hmouse-middle-flag', when set to t (true) before 
Hyperbole
-      is loaded adds the middle mouse key as an Action Key.  InfoDock does this
-      by default.
-
-    - ibuffer-mode, the dired-like menu listing for buffers, is now supported
-      by the Smart Keys; it behaves similarly to that of Buffer-menu-mode.
-
-    - Xref item listing mode is now supported by the Smart Keys; The Action
-      Key displays an xref file line or just a file containing an xref.
-      The Assist Key displays the same but leaves point in the listing buffer.
-      Xref is a built-in Emacs package that displays definitions and
-      cross-references of identifier strings.  It is similar to etags, but
-      more general. 
-
-  KOUTLINER
-
-    - Now compatible with the latest version of outline.el (using invisible 
overlays).
-
-    - All menus for the Hyperbole auto-numbered outliner, called the Koutliner,
-      now begin with 'K'.  Some used to start with 'O'.  To edit the example
-      Koutline, use {C-h h k e}.
-
-    - {C-c C-a}  - Show-all, expand all cells nihe current view.
-      {C-c C-o}  - Overview, show only first line of outline cells.
-      {C-c C-t}  - Top-level, hide all cells below level 1 and show
-                   only the first line of each level 1 cell.
-
-      By default, these commands no longer affect the display of blank lines
-      between cells.  But if given a prefix argument, they toggle blank
-      lines display for quick view changes.
-
-    - Values of `user-mail-address' or `message-user-fqdn' are now
-      used to set the creator and modifier names in Koutline cells.
-
-  MAIL LISTS
-
-    - The menu item that composes mail to the bug-hyperbole mail list now
-      includes any (HyDebug) messages output when the Hyperbole configuration
-      option, hkey-debug is enabled (via the Customize Menu or via
-      {C-h h c d}).
-
-
-===========================================================================
-*                                   V5.08
-===========================================================================
-
-  DOCUMENTATION
-
-    - Added web version of the Hyperbole Manual.
-
-  HYPERLINKS
-
-    - Action Key presses on Texinfo menu items and @node item references now
-      display the associated Texinfo node.  @code and @var references to Emacs
-      Lisp identifiers now show the documentation for the identifiers.  As
-      before, cross-references and file includes show the referenced items;
-      keyboard key sequences invoke their associated bindings.
-
-    - Action Key press on an Emacs push button activates the button.  An Assist
-      Key press shows help for the button.
-
-  KEYS
-
-    - Delimited things, including lists, comments, strings, arrays/vectors,
-      sets, functions and markup pair tags (e.g. <div> </div>), may now be
-      selected, copied or moved with the Action and Assist mouse and keyboard
-      keys whenever point is on the first character of the starting or ending
-      delimiter.  For strings and comments, point must be on the first line.
-
-    - New {C-c .} binding that jumps between the start and end delimiters of
-      delimited things.  Try it on matching markup tag pairs in HTML and SGML
-      modes.  If point is not immediately before or after a delimiter, this
-      generally does nothing.
-
-    - New {C-c RET} binding selects bigger and bigger syntactical units within
-      a buffer with each successive invocation.  Double clicks of the left
-      mouse button do the same thing.  Try it, you'll like it.
-
-===========================================================================
-*                                   V5.07
-===========================================================================
+GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is an
+amazing, programmable hypertextual information management system
+implemented as a GNU Emacs package and extensively documented.  Hyperbole
+has been greatly expanded and updated for use with the latest Emacs 26
+releases; it supports GNU Emacs 24.4 or above.
 
-  EMACS VERSIONS
+Hyperbole can boost your day-to-day productivity with Emacs and your
+ability to manage information stored across many different machines on the
+internet.  People who get used to Hyperbole often find they prefer never to
+use Emacs without it.
 
-    - Support for the latest pre-releases of Emacs 25 and new versions of
-      XEmacs.
+Hyperbole includes its own easy-to-use hypertextual buttons and links that
+can be created without the need for any markup language.
 
-  HYPERLINKS
+It also comes out-of-the-box with:
 
-    - URL handling updated along with customization menus to support most
-      popular web browsers in use.
+  - a hierarchical, record-based contact manager
 
-    - Action Key on a mailto: URI starts composing mail to that address.
+  - a rapid window and frame control system
 
-    - When testing file formats/suffixes for an external viewer in
-      which to display the file, as a fallback, a MIME system mailcap
-      file is used to find additional possible viewers.  See
-      "http://www.wikiwand.com/en/Mailcap"; for information on mailcap files.
+  - a powerful multi-level auto-numbered outliner
 
-    - Jump to JavaScript identifier definitions.
+  - and two very smart context-dependent mouse and keyboard keys that
+    simplify operations in many editing and browsing modes.  All features
+    are aimed at making textual information management and display fast and
+    easy.
 
-    - History, {C-h h h}, now restores full multi-window and multi-frame 
display
-      configurations (within a single Emacs session), rather than just 
returning
-      to a prior location in a buffer.
+Bob Weiner designed and programmed GNU Hyperbole.  He and Mats Lidell
+maintain it with the Free Software Foundation.  It includes an interactive
+demo to introduce you to its features as well as a detailed reference manual,
+as explained here:
 
-    - Type {q} in a Hyperbole Help buffer hide that buffer and return to your 
prior
-      location.
+  https://www.gnu.org/software/hyperbole/hyperbole.html#invocation-and-doc
 
-  KEYS
+----
 
-    - By default, Hyperbole now removes any mode-specific, local key
-      bindings that conflict with the global Smart Key bindings
-      (typically {Meta-Return}). Use the Customize/Toggle-Override-Local-Keys
-      to disable (or re-enable) this feature.
+Please give Hyperbole a try.  It's free, man.  It adapts to your needs.
+It connects everything.  It rewires your brain.  It speeds your web
+searches for `carpal tunnel syndrome'.  It makes you feel like the
+sun is out on a gray winter day :-)
 
-  KOUTLINER
+But wait, there's more and this part is serious.  For a limited time,
+to encourage use and feedback, the first 30 people who try out the
+Hyperbole DEMO or read the Hyperbole Manual and send a few thoughtful
+sentences to <rsw at gnu dot org> will receive either of their choice of
+the following as yet unpublished single file Emacs Lisp libraries:
 
-    - When running under InfoDock, its Go and Options menus now appear within
-      the Koutliner menu.
+;;  rsw-linecol.el: User-editable mode-line column and line number display 
formats
+;;
+;;  GNU Emacs buries the formatting of mode-line line and column
+;;  numbers in a way that makes it virtually impossible for a user
+;;  to change this formatting.  This library fixes that with a new
+;;  variable which may be modified to instantly alter the mode-line
+;;  column and line number display.
 
-    - With a prefix argument, Koutlines are exported to HTML with soft newlines
-      rather than hard newlines, so text will flow based on browser window 
size.
-      This option will remove line-by-line formatting within a cell, however.
+or
 
-  MENUS
+;;  rsw-chrome-macos.el: Open a URL or file in Google Chrome and reuse an 
existing
+;;    tab/window if already displayed.
+;;
+;;  This library resolves the many problems of sending URLs to Google Chrome
+;;  on MacOS.  It properly sends # hash in-file links (these are
+;;  typically stripped when Chrome is called as a MacOS application).
+;;  It reuses any tab already displaying any matching URL that is sent
+;;  and it does this even if the ultimately displayed URL goes through
+;;  several redirects before display.
 
-    - New Find menu which can reduce a buffer to just matching or non-matching
-      lines, run the 'grep' or 'fgrep' utilities on a file directory tree, or
-      list matching lines in the current buffer or across all buffers with
-      attached files.
+Enjoy,
 
-    - Renamed Customization menu to Customize.
+Bob and Mats
 
-    - New Customize/Change-Key-Bindings menu lets you rebind any Hyperbole
-      keys for your current emacs session.
 
--- The End --
diff --git a/HY-NEWS b/HY-NEWS
index e9ad7ce..44b430b 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -1,7 +1,350 @@
                          What's New in GNU Hyperbole
                                 by Bob Weiner
 
-          (See "ChangeLog" for more complete details of changes.)
+===========================================================================
+*                                   V7.0.0
+===========================================================================
+
+        (See the "Changes" file for even more details of changes).
+
+  BUTTONS AND SMART (ACTION AND ASSIST) KEYS
+
+    - Git References: New implicit button and action type with a compact syntax
+        that displays many types of git entities, e.g. git#commit/55a1f0.  Such
+        references work across all git repositories on your local disks.
+
+        See "DEMO#Git (Local) References" or the commentary at the top of the
+        "hib-social.el" file for extensive examples of these references.  {C-h
+        f git-reference RET} explains its syntax.
+
+    - Github References: New implicit button and action type with a compact
+        syntax that displays many types of github entities,
+        e.g. gh#emacs-helm/helm/1878, displays issue #1878 for user emacs-helm
+        and project helm.  See "DEMO#Github (Remote) References" or the
+        commentary at the top of the "hib-social.el" file for extensive
+        examples of these references.  {C-h f github-reference RET} explains
+        its syntax.
+
+    - Extensive new support for cross-window and cross-frame drags of the
+      Action and Assist Mouse Keys.  See "DEMO#Smart Mouse Keys" and the Info
+      manual section, "(hyperbole)Smart Mouse Key Drags" for details.  These
+      actions allow for rapid display of buffers, windows and frames wherever
+      you like.
+
+      Major new features include:
+
+        * Dragging items from Dired or the Buffer Menu for display in existing
+          or new windows and frames.  Action Key drag from the first line (or
+          header line) to another window to move the listing buffer itself.
+          Visual pulsing of source and destination to highlight the transfer
+          taking place (hmouse-pulse-flag controls this).  A following click on
+          an item displays it in the source window, replacing the Dired or
+          Buffer Menu listing.
+
+        * Dragging from a buffer or an item to a modeline splits the window of
+          the modeline and displays the buffer/item dragged in the leftmost
+         or uppermost of the split windows.
+
+        * Cloning or moving an Emacs window to a similarly sized new frame or
+         another existing frame.
+
+        * Displaying a buffer in specific other windows.
+
+        * With Emacs 26 on macOS, Hyperbole detects the window of any drag
+          release or whether the release was outside of Emacs, e.g. in another
+         application whose window is atop an Emacs frame (uses a Python script
+         included with Hyperbole, so Python must be available or this will do
+         nothing).
+
+          The hmouse-verify-release-window-flag (default is t) controls whether
+          checking for non-Emacs areas on macOS is done or not, as this slows
+          Smart Key action handling at least 1/3 of a second in a number of 
cases.
+
+    - {}-delimited Key Sequence Implicit Buttons have been greatly expanded.
+      An Action Key press on any of the following execute the associated 
commands:
+        {M-x occur RET}                 - M-x extended commands
+        {M-x apropos RET hyperbole RET} - commands with arguments
+       {C-x 2 C-x 3}                   - sequences of commands
+       {ESC: (+ 2 3) RET}              - lisp expressions
+
+    - Pathname Environment Variables: Implicit Buttons may contain environment
+      variables such as "${PATH}/python" and Hyperbole resolves them to the
+      first matching directory when activated.
+
+    - Compressed Elisp: Quoted, compressed Emacs Lisp source file names without
+      any path now work as implicit buttons that display the source file, with
+      or without the compressed file suffix, e.g. "subr.el" or "subr.el.gz".
+
+    - Prefixed URLs: Partial URLs with prefixes such as, url:photos.google.com
+      or url=calendar.google.com, can now be displayed with Action Key presses
+      even though they lack a www site name or an http protocol prefix.
+
+    - Link to File: When modifying an explicit file link button, a variable in
+      a pathname is maintained as is any prior in-file location when prompting
+      for changes.
+
+    - Yanking Explicit Buttons: When copying or moving explicit buttons, they
+      are now re-highlighted when yanked into a new position.
+
+    - EWW Support: Added Action and Assist Key support for browsing links in
+      eww (the Emacs web browser) and for activating history links in the eww
+      history buffer.
+
+    - Open Office Documents: An Action Key press on an Open Office pathname
+      displays it in Open Office.  See hpath:external-open-office-suffixes for
+      file suffixes supported.
+
+    - macOS Apps: An Action Key press on a pathname that ends in ".app" on a
+      macOS system will run the app externally (previously it would have been
+      browsed as a directory).
+
+    - File Page Browsing: Dynamic table-of-contents-type browsing for files
+      separated into pages with form-feed (Control-L) page separators.  Use
+      {M-x pages-directory RET} to generate the listing of pages and then press
+      the Action Key on any entry to jump to it.
+
+    - Explicit Buttons in Comments: Explicit buttons in programming languages
+      are now matched only within comments to avoid language syntax that looks
+      like the delimiters of an explicit button, e.g. in Rust.
+
+    - New hproperty:but-highlight-flag: This controls whether Hyperbole
+      explicit buttons are highlighted with a special colored face or not.  By
+      default, they are.
+
+    - Python PDB Backtraces: Action Key presses jump to the associated source
+      line.
+
+    - Python Symbols: Action Key presses now look these up in any buffer whose
+      name includes Pydoc: or Python, mainly help buffers.
+
+    - Compressed File Grep: {C-h h f g} now uses zgrep when available to
+      handle compressed source files.
+
+    - Grep -A Support: The grep -A option produces context lines around any
+      matched lines but uses a different syntax for separating line numbers at
+      the beginning of lines.  The Action Key now supports jumping to the
+      source of any such lines.
+
+    - Dired Quit: An Action Key press at the end of the first line in a Dired
+      buffer nows quit and execute requested actions, just as presses at the
+      end of the buffer do.
+
+    - Image Thumbnail Browsing: See the Info manual section,
+      "(emacs)Image-Dired", for how to create a buffer of image thumbnails.
+      Once created, the Action Key displays a scaled version of the original
+      image in an Emacs window.  The Assist Key displays the original image in
+      an external viewer.
+
+    - Emacs Push-buttons: An Assist Key press on an Emacs push-button 
previously
+      displayed its keyboard-action help string but not its mouse-action help
+      string.  Now it displays the mouse-action when appropriate.
+
+    - Texinfo References: An Action Key press on an Emacs Lisp @findex
+      (function) or @vindex (variable) entry displays the documentation for
+      that entry.
+
+    - Debbugs Issues: Eliminated match of #id-number as a bug reference; 'bug'
+      or similar prefix is now required so there is no ambiguity with social
+      references including 'git #commit-number'.
+
+  CUSTOMIZATON
+
+    - Smart Key Hooks: New hooks run before and after Smart Key depress and
+      release events: action-key-depress-hook, action-key-release-hook,
+      assist-key-depress-hook and assist-key-release-hook.
+
+  DOCUMENTATION
+
+    - Why Use Hyperbole: "HY-WHY.kotl" lists use cases for Hyperbole with
+      hyperlinks to associated "DEMO" sections for each.  View this via
+      the minibuffer menu with {C-h h d w} or via the `Why-Use?' Hyperbole
+      menubar menu entry.
+
+    - Hyperbole HTML Manual: The HTML version of the Hyperbole Manual now uses
+      the same css stylesheet as used for the Hyperbole Home page, making
+      it look much better and easier to navigate.
+
+    - Drags: Updated Hyperbole Manual with all new Smart Mouse Key drag 
actions.
+
+    - Smart Key Help: Improved help documentation for Smart Keys when they
+      contain multiple clauses connected with 'or' logic, e.g. do 'a' or 'b'
+      or 'c'.
+
+    - New Hyperbole Manual Sections:
+        * Referent Display - setting of where link referents are displayed
+        * Smart Mouse Key Drags
+        * Smart Mouse Drags outside a Window
+        * Smart Key - Image Thumbnails
+       * Future Work - Direct Manipulation
+
+    - Git References: In the Implicit Buttons section of the Hyperbole Manual,
+      added documentation for git-reference, git-commit-reference and
+      github-reference.
+
+    - Toggle Key Bindings: In the Smart Key Bindings section of the Hyperbole
+      Manual, explained hyperbole-toggle-bindings (toggles keyboard and mouse
+      keys) rather than hmouse-toggle-bindings (toggles only mouse keys).
+      Moved the latter to the Global Key Bindings appendix.
+
+    - Other Hyperbole Manual Section Changes:
+        * Button Colors: Added doc on hproperty:but-highlight-flag.
+        * Glossary: Added Windows Grid entry.
+        * Hook Variables: Added doc of: action-key-depress-hook,
+          action-key-release-hook, assist-key-depress-hook
+          and assist-key-release-hook.
+        * HyControl: Added Google Contacts use and additional Concept Index 
entries.
+        * Koutliner: Centralized all key binding index entries under 
"koutliner, ".
+        * Manual Overview: Improved pointer to DEMO.
+        * Smart Key - WWW URLs: Added browse-url-browser-function and 
Cust/URL-Display reference.
+        * Using URLs with Find-File: Added URL browser customization menu 
reference and image.
+
+    - New DEMO File Sections:
+        * Table of Contents Browsing
+        * Dragging Buffers, Windows and Items
+        * HyControl Frame Commands and Windows Grid subsections
+       * HyRolo
+        * Running Dired on the Current Directory
+
+  HYCONTROL
+
+    - HyControl Minor Modes: HyControl is now two minor modes, one for frames
+      and one for windows.  It uses standard key bindings and standard Emacs
+      event processing instead of its own event loop, so any keys not bound in
+      a HyControl mode now work normally.  HyControl Windows Mode displays
+      HyWin in the modeline and HyControl Frames Mode displays HyFrm while
+      active.  Both modes invert the modeline colors so you don't forget you
+      are in a special mode.
+
+    - address@hidden is an incredible new key binding and command that creates 
a grid of
+      windows within a frame by splitting the frame into a number of equally
+      sized windows specified by a number of rows and columns (typically as
+      prefix arg digits).  Each window shows a different buffer, if possible,
+      with a prefix arg of 0 prompting for a major mode and first displaying
+      buffers of that mode.
+
+      The same address@hidden command works in Dired, Buffer Menu and IBuffer 
modes and
+      first displays any items marked for display in the windows grid,
+      i.e. marked with the {m} command.
+
+      Hyperbole also supplies the global key binding {C-c @} so this command
+      can be used at any time.
+
+      The variable, hycontrol-display-buffer-predicate-list, determines which
+      buffers are first displayed in the grid except when filtering by major
+      mode or by items marked in a listing buffer.
+
+      {M-x hycontrol-windows-grid-repeatedly RET} allows rapid visual testing
+      of different grid layouts or filters as it prompts you for a grid size,
+      displays it and then prompts you again until your press RET without
+      giving a size.
+
+      See "Demo#Windows Grid" for example use.
+
+    - {a} adjusts the selected frame width by cycling through a list of common
+      fixed percentages such as 25% and 50% (given by the variable,
+      hycontrol-frame-widths.
+
+      {A} does the same for the selected frame's height, using
+      hycontrol-frame-heights.
+
+    - {f} now clones a window to a new frame without deleting the source window
+      {F} moves a window to a new frame and deletes the the source window
+
+    - {i}, {j}, {k}, {m} first expand the selected frame to an edge based on
+      their respective positions on a U.S. keyboard, e.g. {i} expands the
+      frame to the top edge; with further invocations, they keep the frame at
+      that edge but cut its perpendicular dimension in half (or to any
+      percentage specified as an argument), leaving the particular edge fixed.
+      This allows both rapid expansion and contraction of frames with just 4
+      keys whenever needed.
+
+      It is easiest to understand by simply trying the keys. See "Demo#Frame
+      Commands" for example use.
+
+    - {c} for frame edge location cycling now is available in HyControl
+      Windows mode.
+
+    - {p <num>} displays a virtual numeric keypad and moves the selected frame
+      to the screen edge position based on the numeric keypad layout, e.g. 3
+      moves it to the southeast corner of the screen.  This is for keyboards
+      that do not have a physical numeric keypad.  Before a number is
+      selected, {C-g} or {q} will exit and return to the top-level of the
+      active HyControl mode.
+
+    - {-} in HyControl Windows mode minimizes a window size while trying to
+      display its entire buffer.  Now it will resize the window to 1 line if
+      it cannot display all lines or if all lines are already displayed.
+
+    - Minibuffer Help: Improved help strings shown in the minibuffer while
+      HyControl is active.  Added {?} key which toggles this display on and
+      off.
+      
+    - ESC: Removed this as a quit key since now that regular key sequences are
+      supported, this is often used as a meta key prefix.  Use {q} to quit.
+
+    - Minibuffer Prompts: Automatically quit from any HyControl mode whenever
+      a minibuffer prompt becomes active so that arguments may be typed
+      normally.  Examples include use of {M-:} for Lisp expression evaluation
+      and M-x for entering commands by name.
+
+  HYROLO
+
+    - Google Contacts: New support for searching your Google Contacts with the
+      HyRolo Contact Manager; for advanced users only.  Requires use of the
+      Emacs google-contacts package and the non-Emacs gpg public key package
+      to support Google services authorization.  Once configured, these
+      contacts are automatically searched together with local HyRolo files any
+      time a contact search is performed.  See the Google Contacts part in
+      "(hyperbole)HyRolo Settings".
+
+    - Dynamic HyRolo List: The HyRolo list of files to search is now computed
+      dynamically so you can enable Big Brother Database (BBDB) or Google
+      Contacts support after HyRolo is initialized and these contacts will also
+      be searched.
+
+  KEYS
+
+    - Unshifted Mouse Keys: By default, Hyperbole mouse keys are Shift-Middle
+      (Action Key) and Shift-Right (Assist Key).  For frequent mouse users,
+      there is now {M-x hmouse-add-unshifted-smart-keys RET} which
+      additionally makes the Middle mouse key the Action Key and the Right
+      mouse key the Assist Key, replacing their default Emacs functions.  {M-x
+      hmouse-toggle-bindings RET} will toggle between the Emacs and Hyperbole
+      mouse bindings.
+
+    - Smart Key Reload: If you ever edit any of the Smart Key contexts or
+      actions in "hui-mouse.el", "hui-window.el", "hibtypes.el" or
+      "hactypes.el" and re-byte-compile those files, then you may reload your
+      new settings with {M-x hmouse-update-smart-keys RET}.  No need to reload
+      or restart Hyperbole.
+
+    - Find Web: Added Find Web key binding entry to Hyperbole menus.  This key
+      displays the Hyperbole Web search menu.
+
+    - Jump Thing: Added Jump Thing key binding entry to Hyperbole menus.  This
+      key jumps between the start and end of a matching delimiter or tag pair.
+
+    - Mod Mouse Keys: Disallowed this feature meant to enable one hand on the
+      keyboard while the other hand pressed the mouse keys as Control and Meta
+      modifier keys.  Use would conflict with Emacs bindings of Control and
+      Meta mouse keys.
+
+  KOUTLINER
+
+    - `e' Viewspec: Removed ellipses viewspec because ellipses can no longer
+      be turned off with modern Emacs outlining.
+
+  MENUS
+
+    - Prefix Arguments: Prefix arguments may now be given to any Hyperbole
+      menu command that accepts them.
+
+    - Action Doc Strings: If a menu item has no help string but its action is
+      a function with a doc string, then that doc string will be used to
+      display help for the menu item.
+
+    - Key Bindings: The pulldown menu, Hyperbole/Options/Change-Key-Bindings
+      now displays the current keys bound to each command for easy reference.
 
 ===========================================================================
 *                                  V6.0.2
diff --git a/HY-WHY.kotl b/HY-WHY.kotl
index 6f3f0d0..4ba7036 100644
--- a/HY-WHY.kotl
+++ b/HY-WHY.kotl
@@ -2,62 +2,107 @@
 "Kotl-4.0" ;; file-format
 
    1. Create a library of documents, link them on-the-fly and retrieve
-      any one at the touch of a button containing its short id.
+      any one at the touch of a button containing its short id.  See
+      "hib-doc-id.el".  (Use the Action Key to activate any
+      cross-reference herein).
 
-   2. Utilize a single key to follow URLs with section links, Markdown
+   2. Action Key click to follow URLs with section links, Markdown
       links, Emacs outline heading links, Org mode links, file and
       directory links and program identifier references.
+      See "DEMO#HTML Markdown and Emacs Outline Hash Links".
 
-   3. Display and edit local or remote files and directories simply by
+   3. Random access to sections of a Table of Contents in DEMO, README
+      and TUTORIAL files as well as Internet RFCs.  Entries in a
+      code library MANIFEST file work the same way.  See "DEMO#Table
+      of Contents Browsing".
+
+   4. Display and edit local or remote files and directories simply by
       pressing on their names.  Hyperbole will automatically embed
       certain key variables in link pathnames so that as these links
       are moved from site to site and the variable values change at
-      each site, the links automatically maintain proper linkages.
+      each site, the links maintained properly.  See "DEMO#Path
+      Suffixes and Variables" and "DEMO#Path Prefixes".
+
+   5. Quickly search the web for targeted types of information such as
+      programming questions, code libraries, images, videos,
+      locations, word definitions, wikipedia entries or even tweets.
+      See "DEMO#Hyperbole Menus".
+
+   6. Embed social media hashtags and user names in any text files.
+      Then jump to the associated web page in your favorite web
+      browser with an Action Key press.  See "DEMO#Social Media
+      Hashtags and Usernames".
 
-   4. Full-text search for any contact-related information across
+   7. Similarly, you can embed github and git object links in any
+      files with a simple syntax and Hyperbole will display the
+      associated objects with an Action Key press.  See "DEMO#Github
+      (Remote) References" and "DEMO#Git (Local) References".
+
+   8. Full-text search for any contact-related information across
       thousands of contacts in under a second.  The fastest contact
       manager you have ever used, with hierarchical entries so you can
       easily find everyone on a particular team or within an
       organization.  Then collapse all matches to a single line each
       while still seeing name, phone number and email information.
-      Edit entries with a single key press.
+      Edit entries with a single key press.  See "DEMO#HyRolo".
+
+   9. Select regions of structured text or source code and to copy or
+      move them between buffers with a single mouse drag or two key
+      presses.  These selectable things include: delimited pairs of
+      (), @address@hidden, <>, [] and quote marks, source code functions, 
source
+      code comments and matching tag pairs in HTML and SGML modes.
+      See "DEMO#Thing Selection".     
 
-   5. Hyperbole has some radically cool ways to select regions of
-      structured text or source code and to copy or move them between
-      buffers with a single mouse drag or two key presses.  These
-      selectable things include: delimited pairs of (), @address@hidden, <>, []
-      and quote marks, source code functions, source code comments and
-      matching tag pairs in HTML and SGML modes.
+  10. Use the fantastic, auto-numbered Koutliner with per-item links
+      and rapidly changeable views.  See "DEMO#Koutliner".
 
-   6. Use the fantastic, auto-numbered Koutliner with per-item links
-      and rapidly changeable views.
+  11. Rapid control over what is displayed where in multiple windows
+      and frames with mouse drags and the Hyperbole HyControl system.
+      See "DEMO#HyControl".
 
-   7. Rapid control over what is displayed where in multiple windows
-      and frames with the Hyperbole HyControl system.
+    11a. Drag Buffer Menu or Dired items to other windows to display
+         them wherever you want.  Drag-and-drop text regions across
+         Emacs frames.  See "DEMO#Displaying File and Buffer Items".
 
-     7a. Use a quick mouse key press to scroll any window line to the
+    11b. Swap buffers in windows across frames with a mouse drag.
+         See "DEMO#Swapping Buffers".
+
+    11c. With one command, rapidly create a grid of tiled windows
+         displaying either selected buffers, buffers with a specific
+         major mode or the most recently used buffer list, e.g.
+         {63 C-c @} creates 6 rows, each with 3 columns of windows (18
+         total) and displays the first 18 buffers in them when in a
+         HyControl mode.  You can mark buffers, files and directories
+         in the Buffer menu, iBuffer and Dired modes and then use the
+         same above command to display them in a grid of windows.  See
+         "DEMO#Windows Grid".
+
+    11d. Use a quick mouse key press to scroll any window line to the
          top or bottom of a window, to see exactly what you want on
-         screen.
+         screen.  See "DEMO#Smart Scrolling".
 
-     7b. For each frame, store a series of window configurations
-         (layouts) that each allow for working with a set of specific
-         buffers, rapidly moving among them.
+    11e. Clone or tear off a window into its own frame with a quick
+         mouse drag.  See "DEMO#Cloning Windows".
 
-     7c. Easily adjust the height and width of windows as needed.
+    11f. Each frame can store a series of window configurations
+         (layouts) which support working with sets of buffers and
+         rapidly moving among them.  See "DEMO#Window Configuration
+         Drags".
 
-     7d. Quick clicks on different areas of a buffer's modeline will
+    11g. Easily adjust the height and width of windows and frames as
+         needed.  See "DEMO#Frame Commands".
+
+    11h. Quick clicks on different areas of a buffer's modeline will
          rotate through your working list of buffers, changing what
          each window displays.  A popup menu gives you quick access to
          Hyperbole commands plus frame, window and buffer selection
          and management commands.  GNU documentation manuals may be
-         shown and navigated with a single mouse key.
-
-     7e. A single mouse drag swaps what is displayed in each of two
-         windows, even across frames.
+         shown and navigated with a single mouse key.  See
+         "DEMO#Buffer Menu and Screen Control".
 
 
 "ben" ;; kvspec:current
-18 ;; id-counter
+36 ;; id-counter
 alpha ;; label-type
 4 ;; label-min-width
 ". " ;; label-separator
@@ -65,13 +110,21 @@ alpha ;; label-type
 
 ;; depth-first kcell attributes
 [[0
-  (creator nil create-time "20160806:03:21:53" id-counter 18 file 
"/Users/bk/sw-dev/emacs/hyperbole-6.0.1/HY-WHY.kotl")]
+  (creator "address@hidden" create-time "20171114:17:51:59" id-counter 36 file 
"/Users/bk/sw-dev/emacs/hyperbole/HY-WHY.kotl")]
  [1
   (creator "address@hidden" create-time "20160524:15:04:17" no-fill t)]
  [17
   (creator "address@hidden" create-time "20160809:03:31:21" no-fill t)]
+ [36
+  (creator "address@hidden" create-time "20171114:23:37:20" no-fill t)]
  [2
   (creator "address@hidden" create-time "20160524:15:04:24" no-fill t)]
+ [31
+  (creator "address@hidden" create-time "20171114:23:18:01" no-fill t)]
+ [33
+  (creator "address@hidden" create-time "20171114:23:24:51" no-fill t)]
+ [34
+  (creator "address@hidden" create-time "20171114:23:24:57" no-fill t)]
  [9
   (creator "address@hidden" create-time "20160530:15:05:18" no-fill t)]
  [16
@@ -80,14 +133,20 @@ alpha ;; label-type
   (idstamp 3 idstamp 1 creator "address@hidden" create-time 
"20160524:15:04:17" no-fill t)]
  [6
   (creator "address@hidden" create-time "20160524:15:32:11" no-fill t)]
+ [20
+  (creator "address@hidden" create-time "20171019:22:07:29" no-fill t)]
+ [23
+  (creator "address@hidden" create-time "20171108:01:15:39" no-fill t)]
+ [22
+  (creator "address@hidden" create-time "20171024:13:41:50" no-fill t)]
+ [32
+  (idstamp 22 creator "address@hidden" create-time "20171024:13:41:50" no-fill 
t)]
  [15
   (creator "address@hidden" create-time "20160613:15:05:40" no-fill t)]
+ [21
+  (creator "address@hidden" create-time "20171019:22:09:06" no-fill t)]
+ [30
+  (creator "address@hidden" create-time "20171114:21:36:09" no-fill t)]
  [8
   (creator "address@hidden" create-time "20160526:02:56:59" no-fill t)]
- [10
-  (creator "address@hidden" create-time "20160530:15:10:18" no-fill t)]
- [11
-  (creator "address@hidden" create-time "20160530:15:10:41" no-fill t)]
- [12
-  (creator "address@hidden" create-time "20160530:15:14:46" no-fill t)]
- nil nil nil nil nil nil]
+ nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil]
diff --git a/INSTALL b/INSTALL
index 47c2e9e..d71cbe1 100644
--- a/INSTALL
+++ b/INSTALL
@@ -88,7 +88,7 @@ You can invoke Hyperbole commands in one of three ways:
 Use {C-h h d d} for an interactive demonstration of standard Hyperbole
 button capabilities.
 
-{C-h h k e} offers a interactive demonstration of the Koutliner,
+{C-h h k e} offers an interactive demonstration of the Koutliner,
 Hyperbole's multi-level autonumbered hypertextual outliner.
 
 To try out HyControl, Hyperbole's interactive frame and window control
diff --git a/MANIFEST b/MANIFEST
index 7727f20..aed31f7 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,6 +1,8 @@
 --- INTRODUCTION ---
 COPYING             - GNU General Public License
-DEMO                - Demonstration of basic GNU Hyperbole button capabilities
+DEMO                - Interactive Demonstration of many GNU Hyperbole 
capabilities
+DEMO-ROLO.otl       - Sample Hyperbole Rolo file for use with DEMO
+hyrolo-demo.el      - Code to support DEMO introduction to HyRolo
 HY-ABOUT            - Introductory description of GNU Hyperbole
 HY-ANNOUNCE         - GNU Hyperbole release announcement
 HY-COPY             - GNU Hyperbole Copyright
@@ -16,7 +18,7 @@ hyperbole.el        - Loads and initializes GNU Hyperbole
 Changes             - Summary of changes in recent GNU Hyperbole releases
 
 --- DOCUMENTATION ---
-dir                 - GNU Hyperbole Info directory tree entry
+man/dir             - GNU Hyperbole Info directory tree entry
 man/hyperbole.html  - The GNU Hyperbole Manual  (web version)
 man/hyperbole.info  - The GNU Hyperbole Manual  (GNU Info version)
 man/hyperbole.pdf   - The GNU Hyperbole Manual  (printable version)
@@ -27,7 +29,7 @@ man/hkey-help.txt   - Summarizes Smart Key behaviors in 
different contexts
 hmouse-info.el      - Walks through Info networks using one key
 hmouse-drv.el       - Smart Key/Mouse driver functions
 hmouse-key.el       - Setup Smart Key mouse bindings
-hmouse-mod.el       - Action Key acts as CONTROL modifier and Assist Key as 
META modifier (Optional)
+hmouse-mod.el       - Action Key acts as CONTROL modifier and Assist Key as 
META modifier (Unused)
 hmouse-sh.el        - System-dependent Smart Mouse Key bindings
 hmouse-tag.el       - Smart Key support of programming language tags location
 hycontrol.el        - Interactive sizing, moving, replicating and deleting of 
windows and frames
@@ -58,7 +60,6 @@ hyrolo-logic.el     - Logic functions for GNU Hyperbole Rolo 
files
 hywconfig.el        - Save ring of window configurations
 set.el              - General mathematical operators for unordered sets
 
-
 --- MAIL SYSTEM SUPPORT ---
 hmh.el              - GNU Hyperbole buttons in mail reader:   Mh
 hrmail.el           - GNU Hyperbole buttons in mail reader:   Rmail
@@ -80,7 +81,7 @@ hibtypes.el         - GNU Hyperbole default implicit button 
types
 hib-debbugs.el      - Implicit button type for browsing GNU debbugs issues
 hib-doc-id.el       - Implicit button type for document id index entries
 hib-kbd.el          - Implicit button type for key sequences delimited with {}
-hib-social.el       - Implicit button type for social media hashtag and 
username references
+hib-social.el       - Implicit button type for social media/git hashtag and 
username references
 hinit.el            - Standard initializations for GNU Hyperbole
 hload-path.el       - GNU Hyperbole load-path setup
 hlvar.el            - GNU Hyperbole variables in local variable lists
@@ -88,6 +89,7 @@ hsettings.el        - Hyperbole settings which may require 
customization
 hvar.el             - Variable manipulation routines for GNU Hyperbole
 hyperbole-banner.png- Graphic of GNU Hyperbole for display with About Hyperbole
 smart-clib-sym      - Test whether symbol appears within a set of C libraries
+topwin.py           - Python script to find the topmost macOS app window at a 
screen position
 .hypb & _hypb       - Button data files used by the Hyperbole DEMO file
 
 --- EXTERNAL SYSTEM ENCAPSULATIONS ---
diff --git a/Makefile b/Makefile
index 00e305c..799739d 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
 #
 # Orig-Date:    15-Jun-94 at 03:42:38
 #
-# Copyright (C) 1994-2016  Free Software Foundation, Inc.
+# Copyright (C) 1994-2017  Free Software Foundation, Inc.
 # See the file HY-COPY for license information.
 #
 # This file is part of GNU Hyperbole.
@@ -32,14 +32,16 @@
 #   USAGE:     For those installing GNU Hyperbole, use:
 #                   make help
 #
-#               For OO-Browser maintainers:
-#                 To assemble a Hyperbole Emacs package for testing:
+#               To build only the output formats of the Hyperbole MANUAL:
+#                   make doc
+#
+#               To assemble a Hyperbole Emacs package for testing:
 #                   make pkg
-#                 To release a Hyperbole Emacs package to ELPA and ftp.gnu.org:
+#
+#               To release a Hyperbole Emacs package to ELPA and ftp.gnu.org:
 #                   make release
 #
 #               The Hyperbole Manual is included in the package in four forms:
-#
 #                  "man/hyperbole.info"   - GNU browsable version
 #                  "man/hyperbole.html"   - Web browsable version
 #                  "man/hyperbole.pdf"    - Printable version
@@ -52,7 +54,7 @@
 
 # This ver setup won't work under any make except GNU make, so set it manually.
 #HYPB_VERSION = "`head -3 hversion.el | tail -1 | sed -e 's/.*|\(.*\)|.*/\1/'`"
-HYPB_VERSION = 6.0.2
+HYPB_VERSION = 7.0.0
 
 # Emacs executable used to byte-compile .el files into .elc's.
 # Possibilities include: emacs, infodock, xemacs, etc.
@@ -80,7 +82,7 @@ TEXI2INFO = makeinfo --no-split
 # Command used to build the .html version of the user manual.
 # TEXI2HTML = id-texi2html -html_only -number -split_chapter # 
InfoDock-specific command
 # TEXI2HTML = makeinfo --html --split=chapter # Chapter splitting doesn't seem 
to work in 6.0
-TEXI2HTML = makeinfo --html --no-split
+TEXI2HTML = makeinfo --html --no-split --css-ref="hyperbole.css"
 
 # Command used to build the .pdf version of the user manual.
 TEXI2PDF = makeinfo --pdf --no-split
@@ -118,7 +120,7 @@ ZIP = \zip -qry
 
 # Directory in which to create new package distributions of Hyperbole.
 pkg_dir = /tmp
-pkg_hyperbole = $(pkg_dir)/hyperbole-$(HYPB_VERSION)
+pkg_hyperbole = $(pkg_dir)/hyperbole
 
 # Temp file to use to build .elc files.
 ELISP_TO_COMPILE = $(pkg_dir)/elc-${USER}
@@ -149,7 +151,7 @@ EL_COMPILE = hact.el hactypes.el hargs.el hbdata.el 
hbmap.el hbut.el \
             hpath.el hrmail.el hsettings.el hsmail.el hsys-org.el hsys-www.el 
htz.el \
             hycontrol.el hui-jmenu.el hui-menu.el hui-mini.el hui-mouse.el 
hui-select.el \
             hui-window.el hui.el hvar.el hversion.el hvm.el hypb.el 
hyperbole.el \
-            hyrolo-logic.el hyrolo-menu.el hyrolo.el hywconfig.el set.el
+            hyrolo-demo.el hyrolo-logic.el hyrolo-menu.el hyrolo.el 
hywconfig.el set.el
 
 EL_KOTL = kotl/kexport.el kotl/kfile.el kotl/kfill.el kotl/kimport.el 
kotl/klabel.el \
          kotl/klink.el kotl/kmenu.el kotl/knode.el kotl/kotl-mode.el \
@@ -164,7 +166,7 @@ ELC_COMPILE =  hactypes.elc hibtypes.elc hib-debbugs.elc 
hib-doc-id.elc hib-kbd.
             hpath.elc hrmail.elc hsettings.elc hsmail.elc hsys-org.elc 
hsys-www.elc htz.elc \
             hycontrol.elc hui-jmenu.elc hui-menu.elc hui-mini.elc 
hui-mouse.elc hui-select.elc \
             hui-window.elc hui.elc hvar.elc hversion.elc hvm.elc hypb.elc 
hyperbole.elc \
-            hyrolo-logic.elc hyrolo-menu.elc hyrolo.elc hywconfig.elc set.elc
+            hyrolo-demo.elc hyrolo-logic.elc hyrolo-menu.elc hyrolo.elc 
hywconfig.elc set.elc
 
 ELC_KOTL = kotl/kexport.elc kotl/kfile.elc kotl/kfill.elc kotl/kimport.elc 
kotl/klabel.elc \
           kotl/klink.elc kotl/kmenu.elc kotl/knode.elc kotl/kotl-mode.elc \
@@ -173,9 +175,9 @@ ELC_KOTL = kotl/kexport.elc kotl/kfile.elc kotl/kfill.elc 
kotl/kimport.elc kotl/
 
 HYPERBOLE_FILES = dir hyperbole-pkg.el info html $(EL_SRC) $(EL_COMPILE) 
$(EL_KOTL) \
        $(ELC_COMPILE) Changes COPYING Makefile HY-ABOUT HY-ANNOUNCE HY-NEWS \
-       HY-WHY.kotl INSTALL DEMO MANIFEST README _hypb .hypb file-newer 
smart-clib-sym \
-       hyperbole-banner.png $(man_dir)/hkey-help.txt \
-       $(man_dir)/hyperbole.texi $(man_dir)/version.texi
+       HY-WHY.kotl INSTALL DEMO DEMO-ROLO.otl MANIFEST README _hypb .hypb 
file-newer smart-clib-sym \
+       topwin.py hyperbole-banner.png $(man_dir)/hkey-help.txt \
+       $(man_dir)/hyperbole.texi $(man_dir)/hyperbole.css 
$(man_dir)/version.texi
 
 EL_TAGS = $(EL_SRC) $(EL_COMPILE) $(EL_KOTL)
 
@@ -189,6 +191,16 @@ help:
        @ echo ""
        @ echo "For Hyperbole maintainers, the Hyperbole distribution package 
is built with:"
        @ echo "     make pkg"
+       @ echo "  To build documentation formats only, use:"
+       @ echo "     make doc"
+       @ echo "  To release a Hyperbole Emacs package to ELPA and ftp.gnu.org:"
+       @ echo "     make release"
+       @ echo ""
+       @ echo "The Hyperbole Manual is included in the package in four forms:"
+       @ echo "    man/hyperbole.info    - GNU browsable version"
+       @ echo "    man/hyperbole.html    - Web browsable version"
+       @ echo "    man/hyperbole.pdf     - Printable version"
+       @ echo "    man/hyperbole.texi    - source form"
 
 all: help
 
@@ -201,9 +213,9 @@ $(info_dir)/hyperbole.info: $(man_dir)/hyperbole.info
          $(INSTALL) im/*.{png,eps} $(info_dir)/im
 
 install-html: $(html_dir)/hyperbole.html
-$(html_dir)/hyperbole.html: $(man_dir)/hyperbole.html
+$(html_dir)/hyperbole.html: $(man_dir)/hyperbole.html $(man_dir)/hyperbole.css
        $(MKDIR) $(html_dir)/im; \
-         cd $(man_dir); $(INSTALL) hyperbole.html* $(html_dir); \
+         cd $(man_dir); $(INSTALL) hyperbole.html* hyperbole.css $(html_dir); \
          $(INSTALL) im/*.{png,eps} $(html_dir)/im
 
 $(data_dir)/hkey-help.txt: $(man_dir)/hkey-help.txt
@@ -238,30 +250,35 @@ TAGS: $(EL_TAGS)
 version: doc
        @ echo ""
        @ echo "Any fgrep output means the version number has not been updated 
in that file."
-       fgrep -L $(HYPB_VERSION) Makefile HY-ABOUT HY-ANNOUNCE HY-NEWS 
hversion.el hyperbole-pkg.el man/hyperbole.texi man/version.texi
+       fgrep -L $(HYPB_VERSION) Makefile HY-ABOUT HY-NEWS README.md 
hversion.el hyperbole.el hyperbole-pkg.el man/hyperbole.texi man/version.texi
        @ echo ""
 
-# Build the Info, HTML and Postscript versions of the user manual.
-doc: info html pdf
+# Build the Info, HTML and Postscript versions of the user manual and 
README.md.html.
+doc: info html pdf README.md.html
 
 info: $(man_dir)/hyperbole.info
 $(man_dir)/hyperbole.info: $(man_dir)/hyperbole.texi $(man_dir)/version.texi 
$(man_dir)/hkey-help.txt
        cd $(man_dir) && $(TEXI2INFO) hyperbole.texi
 
 html: $(man_dir)/hyperbole.html
-$(man_dir)/hyperbole.html: $(man_dir)/hyperbole.texi $(man_dir)/version.texi 
$(man_dir)/hkey-help.txt
+$(man_dir)/hyperbole.html: $(man_dir)/hyperbole.texi $(man_dir)/version.texi 
$(man_dir)/hkey-help.txt $(man_dir)/hyperbole.css
        cd ${man_dir} && $(TEXI2HTML) hyperbole.texi
 
 pdf: $(man_dir)/hyperbole.pdf
 $(man_dir)/hyperbole.pdf: $(man_dir)/hyperbole.texi $(man_dir)/version.texi 
$(man_dir)/hkey-help.txt
        cd $(man_dir) && $(TEXI2PDF) hyperbole.texi
 
+# github-markdown is an npm, installed with: npm install markdown-to-html -g
+#   Documentation is here: https://www.npmjs.com/package/markdown-to-html
+README.md.html: README.md
+       github-markdown README.md > README.md.html
+
 # Generate a Hyperbole package suitable for distribution via the Emacs package 
manager.
 pkg: package
-package: git-pull doc kotl/kotl-loaddefs.el 
$(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.sig
+package: git-pull doc kotl/kotl-autoloads.el 
$(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.sig
 
 # Generate and distribute a Hyperbole release to GNU ELPA and ftp.gnu.org.
-# One step in this is to generate an autoloads file for the Koutliner, 
kotl/kotl-loaddefs.el.
+# One step in this is to generate an autoloads file for the Koutliner, 
kotl/kotl-autoloads.el.
 release: package git-push $(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.gz elpa ftp
        @ echo; echo "Hyperbole $(HYPB_VERSION) released to elpa and 
ftp.gnu.org successfully."
 
@@ -286,8 +303,9 @@ elpa-test: package
 ftp: package
        cd $(pkg_dir) && $(GNUFTP) hyperbole-$(HYPB_VERSION).tar.gz
 
-kotl/kotl-loaddefs.el: $(EL_KOTL)
-       $(EMACS) $(BATCHFLAGS) -eval '(progn (let ((generated-autoload-file 
(expand-file-name "kotl/kotl-loaddefs.el"))) (update-directory-autoloads 
(expand-file-name "kotl/"))))' && sed -i '3 i ;; Copyright (C) 2016  Free 
Software Foundation, Inc.\n;;' $@ && $(RM) kotl/kotl-loaddefs.el~
+kotl/kotl-autoloads.el: $(EL_KOTL)
+       $(EMACS) $(BATCHFLAGS) -eval '(progn (let ((generated-autoload-file 
(expand-file-name "kotl/kotl-autoloads.el"))) (update-directory-autoloads 
(expand-file-name "kotl/"))))' && $(RM) kotl/kotl-autoloads.el~
+#      $(EMACS) $(BATCHFLAGS) -eval '(progn (let ((generated-autoload-file 
(expand-file-name "kotl/kotl-autoloads.el"))) (update-directory-autoloads 
(expand-file-name "kotl/"))))' && sed -i '3 i ;; Copyright (C) 2017  Free 
Software Foundation, Inc.\n;;' $@ && $(RM) kotl/kotl-autoloads.el~
 
 # Used for ftp.gnu.org tarball distributions.
 $(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.gz:
@@ -300,19 +318,21 @@ $(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.sig: 
$(pkg_dir)/hyperbole-$(HYPB_VERSIO
 
 $(pkg_dir)/hyperbole-$(HYPB_VERSION).tar: $(HYPERBOLE_FILES)
        make version
-       $(RM) -r $(pkg_hyperbole)
-       cd .. && COPYFILE_DISABLE=1 $(TAR) -clf $(pkg_dir)/h.tar 
hyperbole-$(HYPB_VERSION)
+       cd $(pkg_dir) && $(RM) -fr $(pkg_hyperbole) 
$(pkg_hyperbole)-$(HYPB_VERSION)
+       cd .. && COPYFILE_DISABLE=1 $(TAR) -clf $(pkg_dir)/h.tar hyperbole
        cd $(pkg_dir) && COPYFILE_DISABLE=1 $(TAR) xf h.tar && cd 
$(pkg_hyperbole) && $(MAKE) packageclean
-       cd $(pkg_hyperbole) && make kotl/kotl-loaddefs.el && \
+       cd $(pkg_hyperbole) && make kotl/kotl-autoloads.el && chmod 755 
topwin.py && \
        cd $(pkg_dir) && $(RM) h.tar; \
+         mv $(pkg_hyperbole) $(pkg_hyperbole)-$(HYPB_VERSION) && \
          COPYFILE_DISABLE=1 $(TAR) -clf 
$(pkg_dir)/hyperbole-$(HYPB_VERSION).tar hyperbole-$(HYPB_VERSION)
        $(INSTALL) HY-ABOUT HY-ANNOUNCE HY-NEWS HY-WHY.kotl INSTALL README 
$(pkg_dir)/; chmod 644 $(pkg_dir)/*.tar
 
 pkgclean: packageclean
 packageclean:
        if [ -d $(pkg_hyperbole) ]; then \
-         cd $(pkg_hyperbole) && $(RM) -r .git* videos ChangeLog.* *autoloads.* 
*.elc TAGS TODO* .DS_Store \
-           core .place* ._* .*~ *~ *\# *- *.orig *.rej .nfs* CVS .cvsignore 
GNUmakefile.id; fi
+         cd $(pkg_hyperbole) && $(RM) -r .git* videos ChangeLog.* *autoloads.* 
*.elc TAGS TODO* HY-ANNOUNCE-* .DS_Store \
+           core .place* ._* .*~ *~ *\# *- *.orig *.rej .nfs* CVS .cvsignore 
GNUmakefile.id \
+           && gsed '/\f/,/\f/{/\f/!d}' .hypb | tail +2 > .hypb2 && rm -f .hypb 
&& mv .hypb2 .hypb; fi # Filter out unneeded TODO file hbut data from .hypb
        if [ -d $(pkg_hyperbole)/kotl ]; then \
          cd $(pkg_hyperbole)/kotl && $(RM) -r *autoloads.* *.elc TAGS TODO* 
.DS_Store \
            core .place* ._* .*~ *~ *\# *- *.orig *.rej .nfs* CVS .cvsignore; fi
@@ -322,4 +342,3 @@ packageclean:
        if [ -d $(pkg_hyperbole)/man/im ]; then \
          cd $(pkg_hyperbole)/man/im && $(RM) -r .DS_Store core .place* ._* .*~ 
*~ \
            *.ps *\# *- *.orig *.rej .nfs* CVS .cvsignore; fi
-
diff --git a/README b/README
index d8d1a31..580afbc 100644
--- a/README
+++ b/README
@@ -1,7 +1,5 @@
 # README --- Information GNU Hyperbole users and maintainers should read
 #
-# See the "HY-ABOUT" file for a description of GNU Hyperbole.
-#
 # Author:       Bob Weiner
 #
 # Orig-Date:    19-Oct-91 at 03:27:47
@@ -12,21 +10,74 @@
 # This file is part of GNU Hyperbole.
 
 We hope you enjoy using GNU Hyperbole.  Feel free to mail or post news
-containing this file wherever it may be of use.
+containing this file wherever it may be of use.  Hyperbole is designed and
+written by Bob Weiner.  It is maintained by him and Mats Lidell.
 
 ===========================================================================
 *                      Table of Contents
 ===========================================================================
+                       * Summary
                        * Files
                        * Programmer Quick Reference
                        * User Quotes
                        * Why was Hyperbole developed?
 
 ===========================================================================
+*                         Summary
+===========================================================================
+
+GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is an
+easy-to-use, yet powerful and programmable hypertextual information
+management system implemented as a GNU Emacs package.  It offers rapid views
+and interlinking of all kinds of textual information, utilizing Emacs for
+editing.  It can dramatically increase your productivity and greatly reduce
+the number of keyboard/mouse keys you'll need to work efficiently.
+
+Hyperbole lets you:
+
+1. Quickly create hyperlink buttons either from the keyboard or by dragging
+between a source and destination window with a mouse button depressed.
+Later, activate buttons by pressing/clicking on them or by giving the name of
+the button.
+
+2. Activate many kinds of `implicit buttons' recognized by context within
+text buffers, e.g. URLs, grep output lines, and git commits.  A single key
+or mouse button automatically does the right thing in dozens of contexts;
+just press and go.
+
+3. Build outlines with multi-level numbered outline nodes, e.g. 1.4.8.6,
+that all renumber automatically as any node or tree is moved in the
+outline. Each node also has a permanent hyperlink anchor that you can
+reference from any other node;
+
+4. Manage all your contacts quickly with hierarchical categories and embed
+hyperlinks within each entry. Or create an archive of documents with
+hierarchical entries and use the same search mechanism to quickly find any
+matching entry;
+
+5. Use single keys to easily manage your Emacs windows or frames and quickly
+retrieve saved window and frame configurations;
+
+6. Search for things in your current buffers, in a directory tree or across
+major web search engines with the touch of a few keys.
+
+The common thread in all these features is making retrieval, management and
+display of information fast and easy. That is Hyperbole's purpose.
+
+Hyperbole works well on GNU Emacs 24.4 or above. It is designed and written
+by Bob Weiner.  It is maintained by him and Mats Lidell.  Its main
+distribution site is: https://www.gnu.org/software/hyperbole.  If any term in
+here is new or unfamiliar to you, you can look it up in the Hyperbole Manual
+Glossary.
+
+===========================================================================
 *                         Files
 ===========================================================================
 
-See the "HY-ABOUT" file for a description and overview of Hyperbole.
+For a more extensive summary of Hyperbole with text and images, see the
+Hyperbole home page: https://www.gnu.org/software/hyperbole.  If you have
+already downloaded Hyperbole, see the "HY-ABOUT" file for a longer
+description and overview of Hyperbole.
 
 See "DEMO" for a demonstration of standard Hyperbole button capabilities.
 This is the best way to initially interactively learn about Hyperbole after
@@ -36,7 +87,7 @@ installing it.
 screenshots of Hyperbole in action.
 
 HyControl is Hyperbole's frame and window manager; a long video
-demonstrating most of HyControl's features is available at
+demonstrating many of HyControl's features is available at
 https://youtu.be/M3-aMh1ccJk.
 
 See the "HY-NEWS" file for a summary of new features in this release.
diff --git a/README.md b/README.md
index fd705ce..b424475 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,17 @@
-# GNU Hyperbole - Version 6.0.2
+# GNU Hyperbole 7.0.0 - The Everyday Hypertextual Information Manager
 
 <!-- START doctoc generated TOC -->
 **Table of Contents**
 
 - [Summary](#summary)
+- [Mailing Lists](#mailing-lists)
+- [Ftp and Git Repository Downloads](#ftp-and-git)
 - [Installation](#installation)
 - [Invocation](#invocation)
-- [Details](#details)
+- [Hyperbole Components](#hyperbole-components)
+- [Hyperbole Buttons](#hyperbole-buttons)
+- [Important Features](#important-features)
+- [Hyperbole Uses](#hyperbole-uses)
 - [Files](#files)
 - [Programmer Quick Reference](#programmer-quick-reference)
 - [User Quotes](#user-quotes)
@@ -14,19 +19,55 @@
 
 <!-- END doctoc generated TOC -->
 
-## Summary
+![Hyperbole screenshot of the Koutliner, DEMO file and 
HyRolo](man/im/hyperbole-cv.png)
 
-`GNU Hyperbole` (pronounced Ga-new Hi-per-bo-lee), or just
-`Hyperbole`, is an efficient and programmable hypertextual information
-management system implemented as a GNU Emacs package.  It works well
-on GNU Emacs 24.4 or above.  It is designed and written by Bob Weiner.
-Its main distribution site is: <https://www.gnu.org/software/hyperbole/>.
+## Summary
 
-It includes easy-to-use, powerful hypertextual button types without
-the need to learn a markup language; a hierarchical, record-based
-contact manager; a rapid window and frame control system; and a
-powerful multi-level auto-numbered outliner.  All features are aimed
-at making textual information management and display fast and easy.
+`GNU Hyperbole` (pronounced Ga-new Hi-per-bo-lee), or just `Hyperbole`,
+is an easy-to-use, yet powerful and programmable hypertextual information
+management system implemented as a GNU Emacs package.  It offers rapid views
+and interlinking of all kinds of textual information, utilizing Emacs for
+editing.  It can dramatically increase your productivity and greatly reduce
+the number of keyboard/mouse keys you'll need to work efficiently.
+
+Hyperbole lets you:
+
+   1. Quickly create hyperlink buttons either from the keyboard or by dragging
+      between a source and destination window with a mouse button depressed.
+      Later, activate buttons by pressing/clicking on them or by giving the
+      name of the button.
+
+   2. Activate many kinds of `implicit buttons` recognized by context
+      within text buffers, e.g. URLs, grep output lines, and git commits.
+      A single key or mouse button automatically does the right thing in
+      dozens of contexts; just press and go.
+
+   3. Build outlines with multi-level numbered outline nodes, e.g. 1.4.8.6,
+      that all renumber automatically as any node or tree is moved in the
+      outline.  Each node also has a permanent hyperlink anchor that you can
+      reference from any other node;
+
+   4. Manage all your contacts quickly with hierarchical categories and
+         embed hyperlinks within each entry.  Or create an archive of documents
+         with hierarchical entries and use the same search mechanism to quickly
+      find any matching entry;
+
+   5. Use single keys to easily manage your Emacs windows or frames and
+      quickly retrieve saved window and frame configurations;
+
+   6. Search for things in your current buffers, in a directory tree or
+         across major web search engines with the touch of a few keys.
+
+The common thread in all these features is making retrieval,
+management and display of information fast and easy.  That is
+Hyperbole's purpose.  It may be broad but it works amazingly well.  If
+it is textual information, Hyperbole can work with it.  In contrast to
+Org mode, Hyperbole works across all Emacs modes and speeds your work
+by turning all kinds of references into clickable hyperlinks and
+allowing you to create new hyperlinks by dragging between two windows.
+The [Hyperbole wiki page](https://www.emacswiki.org/emacs/Hyperbole)
+explains the many ways it differs from and is complementary to Org
+mode.
 
 Hyperbole allows hypertext buttons to be embedded within unstructured
 and structured files, mail messages and news articles.  It offers
@@ -34,24 +75,60 @@ intuitive keyboard and mouse-based control of information 
display
 within multiple windows.  It also provides point-and-click access to
 World-Wide Web URLs, Info manuals, ftp archives, etc.
 
-The [Hyperbole wiki page](https://www.emacswiki.org/emacs/Hyperbole)
-explains the many ways it differs from and is complementary to Org mode.
+Hyperbole includes easy-to-use, powerful hypertextual button types
+without the need to learn a markup language.  Hyperbole's button types
+are written in Lisp and can be wholly independent of the web, i.e. web
+links are one type of Hyperbole link, not fundamental to its link
+architecture.  However, Hyperbole is a great assistant when editing
+HTML or Javascript or when browsing web pages and links.
 
-![Hyperbole screenshot of the Koutliner, DEMO file and 
HyRolo](man/im/hyperbole-cv.png)
+Hyperbole is something to be experienced and interacted with, not
+understood from reading alone.  If you like an Emacs package to do
+only one thing than Hyperbole is not for you, but if you would
+rather learn fewer packages and get more work done faster, then
+Hyperbole is for you.
+
+Hyperbole works well on GNU Emacs 24.4 or above.  It is designed and
+written by Bob Weiner.  It is maintained by him and Mats Lidell.  Its
+main distribution site is: <https://www.gnu.org/software/hyperbole/>.
+If any term in here is new or unfamiliar to you, you can look it up in the
+[Hyperbole Glossary](man/hyperbole.html#Glossary).
+
+Hyperbole is available for [download and installation](#installation)
+through the GNU Emacs package manager.
+
+## Mailing Lists
+
+   - address@hidden - User list for GNU Hyperbole
+
+       [info and subscription]: 
http://lists.gnu.org/mailman/listinfo/hyperbole-users
+       [web archive]: http://lists.gnu.org/pipermail/hyperbole-users/
 
-## Browsing the Source
+   - address@hidden - List for bug reporting
 
-To explore the Hyperbole source code rather than installing it for use,
-download a tar.gz source archive from either:
+       [info and subscription]: 
http://lists.gnu.org/mailman/listinfo/bug-hyperbole
+       [web archive]: http://lists.gnu.org/archive/html/bug-hyperbole/
 
-  - <ftp://ftp.gnu.org/gnu/hyperbole/>
+## Ftp and Git Repository Downloads
 
-or
+To inspect the Hyperbole source code online rather than installing it for
+use (which will also give you the source code), open a web page to:
 
-  - <http://ftpmirror.gnu.org/hyperbole/>
+   - https://git.savannah.gnu.org/cgit/hyperbole.git/tree/
+
+Alternatively, you may download a tar.gz source archive from either:
+
+   - ftp://ftp.gnu.org/gnu/hyperbole/
+
+   - http://ftpmirror.gnu.org/hyperbole/
 
 which will find the closest mirror of the GNU ftp site and show it to you.
 
+If you want to follow along with Hyperbole development and maintain a
+copy/clone of the current version-controlled git tree, use a
+[command listed here](https://savannah.gnu.org/git/?group=hyperbole)
+to clone the Hyperbole project tree.
+
 ## Installation
 
 Once you have Emacs set up at your site, GNU Hyperbole may be
@@ -113,7 +190,7 @@ button capabilities.
 
 ![Hyperbole screenshot of the DEMO](man/im/demo.png)
 
-{C-h h k e} offers a interactive demonstration of the Koutliner,
+{C-h h k e} offers an interactive demonstration of the Koutliner,
 Hyperbole's multi-level autonumbered hypertextual outliner.
 
 ![Hyperbole screenshot of the Koutliner](man/im/koutliner.png)
@@ -123,7 +200,7 @@ system, use {C-h h s w} for window control or {C-h h s f} 
for frame
 control.  {t} switches between window and frame control once in one of
 them.  Hyperbole also binds {C-c \} for quick access to HyControl's
 window control menu if it was not already bound prior to Hyperbole's
-initialization.  A long video demonstrating most of HyControl's
+initialization.  A long video demonstrating many of HyControl's
 features is available at https://youtu.be/M3-aMh1ccJk.
 
 The above are the best interactive ways to learn about Hyperbole.
@@ -144,7 +221,7 @@ wherever the Hyperbole package directory is on your system; 
often this is:
 "~/.emacs.d/elpa/hyperbole-${hyperb:version}/".
 
 
-## Details
+## Hyperbole Components
 
 Hyperbole consists of five parts:
 
@@ -156,6 +233,14 @@ Hyperbole consists of five parts:
        e.g. bug#24568 displays the bug status information for that bug
        number.
        
+       These actions may be links or arbitrary Lisp expressions.  So
+       for example, you could create your own button type of
+       Wikipedia searches that jumped to the named Wikipedia page
+       whenever point was within text of the form [wp<search term>].
+       You define the pattern so {<search term>} might do the same
+       thing if you preferred.  And this works within any Emacs
+       buffer you want it to, regardless of major or minor mode.
+
        Buttons are accessed by clicking on them or referenced by name
        (global buttons), so they can be activated regardless of what is
        on screen.  Users can make simple changes to button types and
@@ -167,7 +252,7 @@ Hyperbole consists of five parts:
        context-sensitive operations across emacs usage, including
        activating and showing help for Hyperbole buttons.  In many
        popular Emacs modes, they allow you to perform common, sometimes
-       complex operations without having to a different key for each
+       complex operations without having to use a different key for each
        operation.  Just press a Smart Key and the right thing happens;
 
    2.  **Contact and Text Finder**: an interactive textual information
@@ -180,12 +265,20 @@ Hyperbole consists of five parts:
 
           ![HyRolo Menubar Menu](man/im/menu-rolo.png)
 
-   3.  **Screen Control**: the fastest, easiest-to-use window and frame
-       control available for GNU Emacs.  With just a few keystrokes,
-       you can shift from increasing a window's height by 5 lines
-       to moving a frame by 220 pixels or immediately moving it to a
-       screen corner.  Text in each window or frame may be enlarged
-       or shrunk (zoomed) for easy viewing, plus many other features;
+   3.  **Screen Control**: Hyperbole includes HyControl, the fastest,
+       easiest-to-use window and frame control available for GNU
+       Emacs.  With just a few keystrokes, you can shift from
+       increasing a window's height by 5 lines to moving a frame by
+       220 pixels or immediately moving it to a screen corner.  Text
+       in each window or frame may be enlarged or shrunk (zoomed) for
+       easy viewing, plus many other features;
+
+          The broader vision for HyControl is to support persistent
+          window and frame configurations as link targets.  Then a user
+          will be able to create the views of information he wants and
+          store them as links for rapid display.  Work remains to
+          implement this feature but it helps explain the connection of
+          HyControl to the rest of Hyperbole;
 
    4.  **The Koutliner**: an advanced outliner with multi-level
        autonumbering and permanent ids attached to each outline node for
@@ -200,6 +293,14 @@ Hyperbole consists of five parts:
        Hyperbole has been engineered for real-world usage and is well
        structured).
 
+We find Hyperbole's parts are more powerful as one package, i.e. the
+sum is greater than the parts, so we don't offer them separately.
+Hyperbole is free software, however, so you may modify it as you see
+fit.
+
+
+## Hyperbole Buttons
+
 A Hyperbole hypertext user works with buttons; he may create, modify, move
 or delete buttons.  Each button performs a specific action, such as linking
 to a file or executing a shell command.
@@ -232,6 +333,8 @@ large or small chunks as you see fit, organizing each bit 
as time allows.
 The Hyperbole Koutliner and HyRolo tools organize textual hierarchies and
 may also contain links to external information sources.
 
+## Important Features
+
 Some of Hyperbole's most important features include:
 
  - Buttons may link to information or may execute commands, such as
@@ -255,6 +358,8 @@ Some of Hyperbole's most important features include:
  - Other hypertext and information retrieval systems may be
    encapsulated under a Hyperbole user interface very easily.
 
+## Hyperbole Uses
+
 Typical Hyperbole applications include:
 
  - *Personal Information Management*  
@@ -361,11 +466,11 @@ Keys).
 
   One of the nicest things about Hyperbole is that it's available
   everywhere. Org-mode is a mode and its features are only available in
-  *.org files. For instance if you dropped into `eshell' or `ansi-term' and
+  Org files. For instance if you dropped into `eshell' or `ansi-term' and
   did `ls', you can move point to any of the directory's contents, do M-RET
   (or Shift-Button2) and jump to that file.  And that's just one example.
   Note that this means that all Hyperbole functionality is available in
-  *.org files as well.  To me, except for the Hyperbole outliner, that means
+  Org files as well.  To me, except for the Hyperbole outliner, that means
   complementary not conflicting. It's Hyperbole *and* org-mode, not
   Hyperbole vs. org-mode.
 
diff --git a/README.md.html b/README.md.html
index d182443..edec72a 100644
--- a/README.md.html
+++ b/README.md.html
@@ -1,985 +1,612 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-
-<meta charset="utf-8">
-<title>README</title>
-
-
-<style type="text/css">
-body {
-  font-family: Helvetica, arial, sans-serif;
-  font-size: 14px;
-  line-height: 1.6;
-  padding-top: 10px;
-  padding-bottom: 10px;
-  background-color: white;
-  padding: 30px; }
-
-body > *:first-child {
-  margin-top: 0 !important; }
-body > *:last-child {
-  margin-bottom: 0 !important; }
-
-a {
-  color: #4183C4; }
-a.absent {
-  color: #cc0000; }
-a.anchor {
-  display: block;
-  padding-left: 30px;
-  margin-left: -30px;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0; }
-
-h1, h2, h3, h4, h5, h6 {
-  margin: 20px 0 10px;
-  padding: 0;
-  font-weight: bold;
-  -webkit-font-smoothing: antialiased;
-  cursor: text;
-  position: relative; }
-
-h1 tt, h1 code {
-  font-size: inherit; }
-
-h2 tt, h2 code {
-  font-size: inherit; }
-
-h3 tt, h3 code {
-  font-size: inherit; }
-
-h4 tt, h4 code {
-  font-size: inherit; }
-
-h5 tt, h5 code {
-  font-size: inherit; }
-
-h6 tt, h6 code {
-  font-size: inherit; }
-
-h1 {
-  font-size: 28px;
-  color: black; }
-
-h2 {
-  font-size: 24px;
-  border-bottom: 1px solid #cccccc;
-  color: black; }
-
-h3 {
-  font-size: 18px; }
-
-h4 {
-  font-size: 16px; }
-
-h5 {
-  font-size: 14px; }
-
-h6 {
-  color: #777777;
-  font-size: 14px; }
-
-p, blockquote, ul, ol, dl, li, table, pre {
-  margin: 15px 0; }
-
-hr {
-  background: transparent 
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4g
 [...]
-  border: 0 none;
-  color: #cccccc;
-  height: 4px;
-  padding: 0;
-}
-
-body > h2:first-child {
-  margin-top: 0;
-  padding-top: 0; }
-body > h1:first-child {
-  margin-top: 0;
-  padding-top: 0; }
-  body > h1:first-child + h2 {
-    margin-top: 0;
-    padding-top: 0; }
-body > h3:first-child, body > h4:first-child, body > h5:first-child, body > 
h6:first-child {
-  margin-top: 0;
-  padding-top: 0; }
-
-a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, 
a:first-child h5, a:first-child h6 {
-  margin-top: 0;
-  padding-top: 0; }
-
-h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
-  margin-top: 0; }
-
-li p.first {
-  display: inline-block; }
-li {
-  margin: 0; }
-ul, ol {
-  padding-left: 30px; }
-
-ul :first-child, ol :first-child {
-  margin-top: 0; }
-
-dl {
-  padding: 0; }
-  dl dt {
-    font-size: 14px;
-    font-weight: bold;
-    font-style: italic;
-    padding: 0;
-    margin: 15px 0 5px; }
-    dl dt:first-child {
-      padding: 0; }
-    dl dt > :first-child {
-      margin-top: 0; }
-    dl dt > :last-child {
-      margin-bottom: 0; }
-  dl dd {
-    margin: 0 0 15px;
-    padding: 0 15px; }
-    dl dd > :first-child {
-      margin-top: 0; }
-    dl dd > :last-child {
-      margin-bottom: 0; }
-
-blockquote {
-  border-left: 4px solid #dddddd;
-  padding: 0 15px;
-  color: #777777; }
-  blockquote > :first-child {
-    margin-top: 0; }
-  blockquote > :last-child {
-    margin-bottom: 0; }
-
-table {
-  padding: 0;border-collapse: collapse; }
-  table tr {
-    border-top: 1px solid #cccccc;
-    background-color: white;
-    margin: 0;
-    padding: 0; }
-    table tr:nth-child(2n) {
-      background-color: #f8f8f8; }
-    table tr th {
-      font-weight: bold;
-      border: 1px solid #cccccc;
-      margin: 0;
-      padding: 6px 13px; }
-    table tr td {
-      border: 1px solid #cccccc;
-      margin: 0;
-      padding: 6px 13px; }
-    table tr th :first-child, table tr td :first-child {
-      margin-top: 0; }
-    table tr th :last-child, table tr td :last-child {
-      margin-bottom: 0; }
-
-img {
-  max-width: 100%; }
-
-span.frame {
-  display: block;
-  overflow: hidden; }
-  span.frame > span {
-    border: 1px solid #dddddd;
-    display: block;
-    float: left;
-    overflow: hidden;
-    margin: 13px 0 0;
-    padding: 7px;
-    width: auto; }
-  span.frame span img {
-    display: block;
-    float: left; }
-  span.frame span span {
-    clear: both;
-    color: #333333;
-    display: block;
-    padding: 5px 0 0; }
-span.align-center {
-  display: block;
-  overflow: hidden;
-  clear: both; }
-  span.align-center > span {
-    display: block;
-    overflow: hidden;
-    margin: 13px auto 0;
-    text-align: center; }
-  span.align-center span img {
-    margin: 0 auto;
-    text-align: center; }
-span.align-right {
-  display: block;
-  overflow: hidden;
-  clear: both; }
-  span.align-right > span {
-    display: block;
-    overflow: hidden;
-    margin: 13px 0 0;
-    text-align: right; }
-  span.align-right span img {
-    margin: 0;
-    text-align: right; }
-span.float-left {
-  display: block;
-  margin-right: 13px;
-  overflow: hidden;
-  float: left; }
-  span.float-left span {
-    margin: 13px 0 0; }
-span.float-right {
-  display: block;
-  margin-left: 13px;
-  overflow: hidden;
-  float: right; }
-  span.float-right > span {
-    display: block;
-    overflow: hidden;
-    margin: 13px auto 0;
-    text-align: right; }
-
-code, tt {
-  margin: 0 2px;
-  padding: 0 5px;
-  white-space: nowrap;
-  border: 1px solid #eaeaea;
-  background-color: #f8f8f8;
-  border-radius: 3px; }
-
-pre code {
-  margin: 0;
-  padding: 0;
-  white-space: pre;
-  border: none;
-  background: transparent; }
-
-.highlight pre {
-  background-color: #f8f8f8;
-  border: 1px solid #cccccc;
-  font-size: 13px;
-  line-height: 19px;
-  overflow: auto;
-  padding: 6px 10px;
-  border-radius: 3px; }
-
-pre {
-  background-color: #f8f8f8;
-  border: 1px solid #cccccc;
-  font-size: 13px;
-  line-height: 19px;
-  overflow: auto;
-  padding: 6px 10px;
-  border-radius: 3px; }
-  pre code, pre tt {
-    background-color: transparent;
-    border: none; }
-
-sup {
-    font-size: 0.83em;
-    vertical-align: super;
-    line-height: 0;
-}
-* {
-       -webkit-print-color-adjust: exact;
-}
address@hidden screen and (min-width: 914px) {
-    body {
-        width: 854px;
-        margin:0 auto;
-    }
-}
address@hidden print {
-       table, pre {
-               page-break-inside: avoid;
-       }
-       pre {
-               word-wrap: break-word;
-       }
-}
-</style>
-
-<style type="text/css">
-
-code[class*="language-"],
-pre[class*="language-"] {
-       color: black;
-       background: none;
-       text-shadow: 0 1px white;
-       font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-       text-align: left;
-       white-space: pre;
-       word-spacing: normal;
-       word-break: normal;
-       word-wrap: normal;
-       line-height: 1.5;
-
-       -moz-tab-size: 4;
-       -o-tab-size: 4;
-       tab-size: 4;
-
-       -webkit-hyphens: none;
-       -moz-hyphens: none;
-       -ms-hyphens: none;
-       hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection, pre[class*="language-"] 
::-moz-selection,
-code[class*="language-"]::-moz-selection, code[class*="language-"] 
::-moz-selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
-pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
-code[class*="language-"]::selection, code[class*="language-"] ::selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
address@hidden print {
-       code[class*="language-"],
-       pre[class*="language-"] {
-               text-shadow: none;
-       }
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-       padding: 1em;
-       margin: .5em 0;
-       overflow: auto;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-       background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-       padding: .1em;
-       border-radius: .3em;
-       white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-       color: slategray;
-}
-
-.token.punctuation {
-       color: #999;
-}
-
-.namespace {
-       opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-       color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-       color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
-       color: #a67f59;
-       background: hsla(0, 0%, 100%, .5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-       color: #07a;
-}
-
-.token.function {
-       color: #DD4A68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
-       color: #e90;
-}
-
-.token.important,
-.token.bold {
-       font-weight: bold;
-}
-.token.italic {
-       font-style: italic;
-}
-
-.token.entity {
-       cursor: help;
-}
-</style>
-
-
-</head>
-
-<body>
-
-<h1 id="toc_0">GNU Hyperbole</h1>
-
-<!-- START doctoc generated TOC -->
+<h1>
+<a 
id="user-content-gnu-hyperbole-700---the-everyday-hypertextual-information-manager"
 class="anchor" 
href="#gnu-hyperbole-700---the-everyday-hypertextual-information-manager" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>GNU Hyperbole 7.0.0 - The Everyday Hypertextual 
Information Manager</h1>
 
 <p><strong>Table of Contents</strong></p>
-
 <ul>
 <li><a href="#summary">Summary</a></li>
-<li><a href="#browsing-the-source">Browsing the Source</a></li>
+<li><a href="#mailing-lists">Mailing Lists</a></li>
+<li><a href="#ftp-and-git">Ftp and Git Repository Downloads</a></li>
 <li><a href="#installation">Installation</a></li>
 <li><a href="#invocation">Invocation</a></li>
-<li><a href="#details">Details</a></li>
+<li><a href="#hyperbole-components">Hyperbole Components</a></li>
+<li><a href="#hyperbole-buttons">Hyperbole Buttons</a></li>
+<li><a href="#important-features">Important Features</a></li>
+<li><a href="#hyperbole-uses">Hyperbole Uses</a></li>
 <li><a href="#files">Files</a></li>
 <li><a href="#programmer-quick-reference">Programmer Quick Reference</a></li>
 <li><a href="#user-quotes">User Quotes</a></li>
 <li><a href="#why-was-hyperbole-developed">Why was Hyperbole 
developed?</a></li>
 </ul>
 
-<!-- END doctoc generated TOC -->
-
-<h2 id="summary">Summary</h2>
-
-<p><code>GNU Hyperbole</code> (pronounced Ga-new Hi-per-bo-lee), or just
-<code>Hyperbole</code>, is an efficient and programmable hypertextual 
information
-management system implemented as a GNU Emacs package.  It works well
-on GNU Emacs 24.4 or above.  It is designed and written by Bob Weiner.
-Its main distribution site is: <a 
href="https://www.gnu.org/software/hyperbole/";>https://www.gnu.org/software/hyperbole/</a>.</p>
-
-<p>It includes easy-to-use, powerful hypertextual button types without
-the need to learn a markup language; a hierarchical, record-based
-contact manager; a rapid window and frame control system; and a
-powerful multi-level auto-numbered outliner.  All features are aimed
-at making textual information management and display fast and easy.</p>
-
+<p><a href="man/im/hyperbole-cv.png" target="_blank"><img 
src="man/im/hyperbole-cv.png" alt="Hyperbole screenshot of the Koutliner, DEMO 
file and HyRolo" style="max-width:100%;"></a></p>
+<h2>
+<a id="user-content-summary" class="anchor" href="#summary" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Summary</h2>
+<p><code>GNU Hyperbole</code> (pronounced Ga-new Hi-per-bo-lee), or just 
<code>Hyperbole</code>,
+is an easy-to-use, yet powerful and programmable hypertextual information
+management system implemented as a GNU Emacs package.  It offers rapid views
+and interlinking of all kinds of textual information, utilizing Emacs for
+editing.  It can dramatically increase your productivity and greatly reduce
+the number of keyboard/mouse keys you'll need to work efficiently.</p>
+<p>Hyperbole lets you:</p>
+<ol>
+<li>
+<p>Quickly create hyperlink buttons either from the keyboard or by dragging
+between a source and destination window with a mouse button depressed.
+Later, activate buttons by pressing/clicking on them or by giving the
+name of the button.</p>
+</li>
+<li>
+<p>Activate many kinds of <code>implicit buttons</code> recognized by context
+within text buffers, e.g. URLs, grep output lines, and git commits.
+A single key or mouse button automatically does the right thing in
+dozens of contexts; just press and go.</p>
+</li>
+<li>
+<p>Build outlines with multi-level numbered outline nodes, e.g. 1.4.8.6,
+that all renumber automatically as any node or tree is moved in the
+outline.  Each node also has a permanent hyperlink anchor that you can
+reference from any other node;</p>
+</li>
+<li>
+<p>Manage all your contacts quickly with hierarchical categories and
+embed hyperlinks within each entry.  Or create an archive of documents
+with hierarchical entries and use the same search mechanism to quickly
+find any matching entry;</p>
+</li>
+<li>
+<p>Use single keys to easily manage your Emacs windows or frames and
+quickly retrieve saved window and frame configurations;</p>
+</li>
+<li>
+<p>Search for things in your current buffers, in a directory tree or
+across major web search engines with the touch of a few keys.</p>
+</li>
+</ol>
+<p>The common thread in all these features is making retrieval,
+management and display of information fast and easy.  That is
+Hyperbole's purpose.  It may be broad but it works amazingly well.  If
+it is textual information, Hyperbole can work with it.  In contrast to
+Org mode, Hyperbole works across all Emacs modes and speeds your work
+by turning all kinds of references into clickable hyperlinks and
+allowing you to create new hyperlinks by dragging between two windows.
+The <a href="https://www.emacswiki.org/emacs/Hyperbole";>Hyperbole wiki page</a>
+explains the many ways it differs from and is complementary to Org
+mode.</p>
 <p>Hyperbole allows hypertext buttons to be embedded within unstructured
 and structured files, mail messages and news articles.  It offers
 intuitive keyboard and mouse-based control of information display
 within multiple windows.  It also provides point-and-click access to
 World-Wide Web URLs, Info manuals, ftp archives, etc.</p>
-
-<p>The <a href="https://www.emacswiki.org/emacs/Hyperbole";>Hyperbole wiki 
page</a>
-explains the many ways it differs from and is complementary to Org mode.</p>
-
-<p><img src="man/im/hyperbole-cv.png" alt="Hyperbole screenshot of the 
Koutliner, DEMO file and HyRolo"></p>
-
-<h2 id="browsing-the-source">Browsing the Source</h2>
-
-<p>To explore the Hyperbole source code rather than installing it for use,
-    download a tar.gz source archive from either:</p>
-
-<ul><li><a 
href="ftp://ftp.gnu.org/gnu/hyperbole/";>ftp://ftp.gnu.org/gnu/hyperbole/</a></li></ul>
-
-<p>or</p>
-
-<ul><li><a 
href="http://ftpmirror.gnu.org/hyperbole/";>http://ftpmirror.gnu.org/hyperbole/</a></li></ul>
-
+<p>Hyperbole includes easy-to-use, powerful hypertextual button types
+without the need to learn a markup language.  Hyperbole's button types
+are written in Lisp and can be wholly independent of the web, i.e. web
+links are one type of Hyperbole link, not fundamental to its link
+architecture.  However, Hyperbole is a great assistant when editing
+HTML or Javascript or when browsing web pages and links.</p>
+<p>Hyperbole is something to be experienced and interacted with, not
+understood from reading alone.  If you like an Emacs package to do
+only one thing than Hyperbole is not for you, but if you would
+rather learn fewer packages and get more work done faster, then
+Hyperbole is for you.</p>
+<p>Hyperbole works well on GNU Emacs 24.4 or above.  It is designed and
+written by Bob Weiner.  It is maintained by him and Mats Lidell.  Its
+main distribution site is: <a 
href="https://www.gnu.org/software/hyperbole/";>https://www.gnu.org/software/hyperbole/</a>.
+If any term in here is new or unfamiliar to you, you can look it up in the
+<a href="man/hyperbole.html#Glossary">Hyperbole Glossary</a>.</p>
+<p>Hyperbole is available for <a href="#installation">download and 
installation</a>
+through the GNU Emacs package manager.</p>
+<h2>
+<a id="user-content-mailing-lists" class="anchor" href="#mailing-lists" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Mailing Lists</h2>
+<ul>
+<li>
+<p><strong><a href="mailto:address@hidden";>address@hidden</a></strong> - User 
list for GNU Hyperbole</p>
+</li>
+<li>
+<p><strong><a href="mailto:address@hidden";>address@hidden</a></strong> - List 
for bug reporting</p>
+</li>
+</ul>
+<h2>
+<a id="user-content-ftp-and-git-repository-downloads" class="anchor" 
href="#ftp-and-git-repository-downloads" aria-hidden="true"><span 
aria-hidden="true" class="octicon octicon-link"></span></a>Ftp and Git 
Repository Downloads</h2>
+<p>To inspect the Hyperbole source code online rather than installing it for
+use (which will also give you the source code), open a web page to:</p>
+<ul>
+<li><a 
href="https://git.savannah.gnu.org/cgit/hyperbole.git/tree/";>https://git.savannah.gnu.org/cgit/hyperbole.git/tree/</a></li>
+</ul>
+<p>Alternatively, you may download a tar.gz source archive from either:</p>
+<ul>
+<li>
+<p><a 
href="ftp://ftp.gnu.org/gnu/hyperbole/";>ftp://ftp.gnu.org/gnu/hyperbole/</a></p>
+</li>
+<li>
+<p><a 
href="http://ftpmirror.gnu.org/hyperbole/";>http://ftpmirror.gnu.org/hyperbole/</a></p>
+</li>
+</ul>
 <p>which will find the closest mirror of the GNU ftp site and show it to 
you.</p>
-
-<h2 id="installation">Installation</h2>
-
+<p>If you want to follow along with Hyperbole development and maintain a
+copy/clone of the current version-controlled git tree, use a
+<a href="https://savannah.gnu.org/git/?group=hyperbole";>command listed here</a>
+to clone the Hyperbole project tree.</p>
+<h2>
+<a id="user-content-installation" class="anchor" href="#installation" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Installation</h2>
 <p>Once you have Emacs set up at your site, GNU Hyperbole may be
 installed by using the Emacs Package Manager.  If you are not
 familiar with it, see the Packages section of the GNU Emacs Manual,
-<a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html";>Emacs
 Packages</a>. </p>
-
+<a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html";>Emacs
 Packages</a>.</p>
 <p>If you have Hyperbole 5.10 or higher already installed and simply want to
 upgrade it, invoke the Emacs Package Manager with {M-x list-packages RET},
 then use the {U} key followed by the {x} key to upgrade all out-of-date
 packages, Hyperbole among them.  Then skip the text below and move on to
 the next section, <a href="#invocation">Invocation</a>.</p>
-
 <p>Otherwise, to download and install the Hyperbole package, you should
 add several lines to your personal Emacs initialization file,
-typically &quot;~/.emacs&quot;.  For further details, see <a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html";>Emacs
 Init
+typically "~/.emacs".  For further details, see <a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html";>Emacs
 Init
 File</a>.</p>
-
 <p>Below are the lines to add:</p>
-
-<div><pre><code class="language-none">(require 'package)
+<pre><code>(require 'package)
 (setq package-enable-at-startup nil) ;; Prevent double loading of libraries
 (package-initialize)
 (unless (package-installed-p 'hyperbole)
   (package-refresh-contents)
   (package-install 'hyperbole))
-(require 'hyperbole)</code></pre></div>
-
+(require 'hyperbole)
+</code></pre>
 <hr>
-
 <p>Now save the file and then restart Emacs.  Hyperbole will then be
 downloaded and compiled for use with your version of Emacs; give it a
 minute or two.  You may see a bunch of compilation warnings but these
 can be safely ignored.</p>
-
-<h2 id="invocation">Invocation</h2>
-
+<h2>
+<a id="user-content-invocation" class="anchor" href="#invocation" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Invocation</h2>
 <p>Once Hyperbole has been installed for use at your site and loaded into your
 Emacs session, it is ready for use.  You will see a Hyperbole menu on your
 menubar and {C-h h} will display a Hyperbole menu in the minibuffer for
 quick keyboard-based selection.</p>
-
 <p>You can invoke Hyperbole commands in one of three ways:</p>
-
 <p>use the Hyperbole menu on your menubar;</p>
-
-<p><img src="man/im/menu-hyperbole.png" alt="Hyperbole Menubar Menu"></p>
-
+<p><a href="man/im/menu-hyperbole.png" target="_blank"><img 
src="man/im/menu-hyperbole.png" alt="Hyperbole Menubar Menu" 
style="max-width:100%;"></a></p>
 <p>type {C-h h} or {M-x hyperbole RET} to bring up the Hyperbole main menu
-   in the minibuffer window, for fast keyboard or mouse-based selection;
-   select an item from this menu by typing the item's first letter; use {q}
-   to quit from the menu.</p>
-
+in the minibuffer window, for fast keyboard or mouse-based selection;
+select an item from this menu by typing the item's first letter; use {q}
+to quit from the menu.</p>
 <p>use a specific Hyperbole command such as an Action Key click {M-RET} on
-   a pathname to display the associated file or directory.</p>
-
+a pathname to display the associated file or directory.</p>
 <p>Use {C-h h d d} for an interactive demonstration of standard Hyperbole
 button capabilities.</p>
-
-<p><img src="man/im/demo.png" alt="Hyperbole screenshot of the DEMO"></p>
-
-<p>{C-h h k e} offers a interactive demonstration of the Koutliner,
+<p><a href="man/im/demo.png" target="_blank"><img src="man/im/demo.png" 
alt="Hyperbole screenshot of the DEMO" style="max-width:100%;"></a></p>
+<p>{C-h h k e} offers an interactive demonstration of the Koutliner,
 Hyperbole's multi-level autonumbered hypertextual outliner.</p>
-
-<p><img src="man/im/koutliner.png" alt="Hyperbole screenshot of the 
Koutliner"></p>
-
+<p><a href="man/im/koutliner.png" target="_blank"><img 
src="man/im/koutliner.png" alt="Hyperbole screenshot of the Koutliner" 
style="max-width:100%;"></a></p>
 <p>To try out HyControl, Hyperbole's interactive frame and window control
 system, use {C-h h s w} for window control or {C-h h s f} for frame
 control.  {t} switches between window and frame control once in one of
 them.  Hyperbole also binds {C-c } for quick access to HyControl's
 window control menu if it was not already bound prior to Hyperbole's
-initialization.  A long video demonstrating most of HyControl's
-features is available at https://youtu.be/M3-aMh1ccJk.</p>
-
+initialization.  A long video demonstrating many of HyControl's
+features is available at <a 
href="https://youtu.be/M3-aMh1ccJk";>https://youtu.be/M3-aMh1ccJk</a>.</p>
 <p>The above are the best interactive ways to learn about Hyperbole.
 Hyperbole also includes the Hyperbole Manual, a full reference manual,
-not a simple introduction.  It is included in the &quot;man/&quot; subdirectory
+not a simple introduction.  It is included in the "man/" subdirectory
 of the Hyperbole package directory in four forms:</p>
-
 <p><a href="man/hyperbole.info">hyperbole.info</a>   - online Info browser 
version<br>
 <a href="man/hyperbole.html">hyperbole.html</a>   - web HTML version<br>
 <a href="man/hyperbole.pdf">hyperbole.pdf</a>     - printable version<br>
-<a href="man/hyperbole.texi">hyperbole.texi</a>   - source form  </p>
-
+<a href="man/hyperbole.texi">hyperbole.texi</a>   - source form</p>
 <p>The Hyperbole package installation places the Info version of this manual
 where needed and adds an entry for Hyperbole into the Info directory under
 the Emacs category.  {C-h h d i} will let you browse the manual.  For web
-browsing, point your browser at &quot;${hyperb:dir}/man/hyperbole.html&quot;,
+browsing, point your browser at "${hyperb:dir}/man/hyperbole.html",
 wherever the Hyperbole package directory is on your system; often this is:
-&quot;~/.emacs.d/elpa/hyperbole-${hyperb:version}/&quot;.</p>
-
-<h2 id="details">Details</h2>
-
+"~/.emacs.d/elpa/hyperbole-${hyperb:version}/".</p>
+<h2>
+<a id="user-content-hyperbole-components" class="anchor" 
href="#hyperbole-components" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Hyperbole Components</h2>
 <p>Hyperbole consists of five parts:</p>
-
 <ol>
-<li><p><strong>Buttons and Smart Keys</strong>: A set of hyperbutton types 
which supply
-   core hypertext and other behaviors.  Buttons may be added to
-   documents (explicit buttons) with a simple drag between windows,
-   no markup language needed.  Implicit buttons are patterns
-   automatically recognized within text that perform actions,
-   e.g. bug#24568 displays the bug status information for that bug
-   number.</p>
-
+<li>
+<p><strong>Buttons and Smart Keys</strong>: A set of hyperbutton types which 
supply
+core hypertext and other behaviors.  Buttons may be added to
+documents (explicit buttons) with a simple drag between windows,
+no markup language needed.  Implicit buttons are patterns
+automatically recognized within text that perform actions,
+e.g. bug#24568 displays the bug status information for that bug
+number.</p>
+<p>These actions may be links or arbitrary Lisp expressions.  So
+for example, you could create your own button type of
+Wikipedia searches that jumped to the named Wikipedia page
+whenever point was within text of the form [wp].
+You define the pattern so {} might do the same
+thing if you preferred.  And this works within any Emacs
+buffer you want it to, regardless of major or minor mode.</p>
 <p>Buttons are accessed by clicking on them or referenced by name
-   (global buttons), so they can be activated regardless of what is
-   on screen.  Users can make simple changes to button types and
-   those familiar with Emacs Lisp can prototype and deliver new
-   types quickly with just a few lines of code.</p>
-
+(global buttons), so they can be activated regardless of what is
+on screen.  Users can make simple changes to button types and
+those familiar with Emacs Lisp can prototype and deliver new
+types quickly with just a few lines of code.</p>
 <p>Hyperbole includes two special `Smart Keys', the Action Key
-   and the Assist Key, that perform an extensive array of
-   context-sensitive operations across emacs usage, including
-   activating and showing help for Hyperbole buttons.  In many
-   popular Emacs modes, they allow you to perform common, sometimes
-   complex operations without having to a different key for each
-   operation.  Just press a Smart Key and the right thing happens;</p></li>
-<li><p><strong>Contact and Text Finder</strong>: an interactive textual 
information
-   management interface, including fast, flexible file and text
-   finding commands.  A powerful, hierarchical contact manager,
-   HyRolo, which anyone can use is also included.  It is easy to
-   learn to use since it introduces only a few new mechanisms and
-   has a menu interface, which may be operated from the keyboard or
-   the mouse.</p>
-
-<p><img src="man/im/menu-rolo.png" alt="HyRolo Menubar Menu"></p></li>
-<li><p><strong>Screen Control</strong>: the fastest, easiest-to-use window and 
frame
-   control available for GNU Emacs.  With just a few keystrokes,
-   you can shift from increasing a window's height by 5 lines
-   to moving a frame by 220 pixels or immediately moving it to a
-   screen corner.  Text in each window or frame may be enlarged
-   or shrunk (zoomed) for easy viewing, plus many other features;</p></li>
-<li><p><strong>The Koutliner</strong>: an advanced outliner with multi-level
-   autonumbering and permanent ids attached to each outline node for
-   use as hypertext link anchors, per node properties and flexible
-   view specifications that can be embedded within links or used
-   interactively;</p></li>
-<li><p><strong>Programming Library</strong>: a set of programming library 
classes for
-   system developers who want to integrate Hyperbole with another
-   user interface or as a back-end to a distinct system.  (All of
-   Hyperbole is written in Emacs Lisp for ease of modification.
-   Hyperbole has been engineered for real-world usage and is well
-   structured).</p></li>
+and the Assist Key, that perform an extensive array of
+context-sensitive operations across emacs usage, including
+activating and showing help for Hyperbole buttons.  In many
+popular Emacs modes, they allow you to perform common, sometimes
+complex operations without having to use a different key for each
+operation.  Just press a Smart Key and the right thing happens;</p>
+</li>
+<li>
+<p><strong>Contact and Text Finder</strong>: an interactive textual information
+management interface, including fast, flexible file and text
+finding commands.  A powerful, hierarchical contact manager,
+HyRolo, which anyone can use is also included.  It is easy to
+learn to use since it introduces only a few new mechanisms and
+has a menu interface, which may be operated from the keyboard or
+the mouse.</p>
+<p><a href="man/im/menu-rolo.png" target="_blank"><img 
src="man/im/menu-rolo.png" alt="HyRolo Menubar Menu" 
style="max-width:100%;"></a></p>
+</li>
+<li>
+<p><strong>Screen Control</strong>: Hyperbole includes HyControl, the fastest,
+easiest-to-use window and frame control available for GNU
+Emacs.  With just a few keystrokes, you can shift from
+increasing a window's height by 5 lines to moving a frame by
+220 pixels or immediately moving it to a screen corner.  Text
+in each window or frame may be enlarged or shrunk (zoomed) for
+easy viewing, plus many other features;</p>
+<p>The broader vision for HyControl is to support persistent
+window and frame configurations as link targets.  Then a user
+will be able to create the views of information he wants and
+store them as links for rapid display.  Work remains to
+implement this feature but it helps explain the connection of
+HyControl to the rest of Hyperbole;</p>
+</li>
+<li>
+<p><strong>The Koutliner</strong>: an advanced outliner with multi-level
+autonumbering and permanent ids attached to each outline node for
+use as hypertext link anchors, per node properties and flexible
+view specifications that can be embedded within links or used
+interactively;</p>
+</li>
+<li>
+<p><strong>Programming Library</strong>: a set of programming library classes 
for
+system developers who want to integrate Hyperbole with another
+user interface or as a back-end to a distinct system.  (All of
+Hyperbole is written in Emacs Lisp for ease of modification.
+Hyperbole has been engineered for real-world usage and is well
+structured).</p>
+</li>
 </ol>
-
+<p>We find Hyperbole's parts are more powerful as one package, i.e. the
+sum is greater than the parts, so we don't offer them separately.
+Hyperbole is free software, however, so you may modify it as you see
+fit.</p>
+<h2>
+<a id="user-content-hyperbole-buttons" class="anchor" 
href="#hyperbole-buttons" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Hyperbole Buttons</h2>
 <p>A Hyperbole hypertext user works with buttons; he may create, modify, move
 or delete buttons.  Each button performs a specific action, such as linking
 to a file or executing a shell command.</p>
-
 <p>There are three categories of Hyperbole buttons:</p>
-
 <ol>
-<li><p><em>Explicit Buttons</em>
-      created by Hyperbole, accessible from within a single document; </p></li>
-<li><p><em>Global Buttons</em>
-      created by Hyperbole, accessible anywhere within a user's
-      network of documents;</p></li>
-<li><p><em>Implicit Buttons</em>
-      buttons created and managed by other programs or embedded
-      within the structure of a document, accessible from within a
-      single document.  Hyperbole recognizes implicit buttons by
-      contextual patterns given in their type specifications.</p></li>
+<li>
+<p><em>Explicit Buttons</em>
+created by Hyperbole, accessible from within a single document;</p>
+</li>
+<li>
+<p><em>Global Buttons</em>
+created by Hyperbole, accessible anywhere within a user's
+network of documents;</p>
+</li>
+<li>
+<p><em>Implicit Buttons</em>
+buttons created and managed by other programs or embedded
+within the structure of a document, accessible from within a
+single document.  Hyperbole recognizes implicit buttons by
+contextual patterns given in their type specifications.</p>
+</li>
 </ol>
-
 <p>Hyperbole buttons may be clicked upon with a mouse to activate them or to
 describe their actions.  Thus, a user can always check how a button will act
 before activating it.  Buttons may also be activated from a keyboard.  (In
 fact, virtually all Hyperbole operations, including menu usage, may be
 performed from any standard terminal interface, so one can use it on distant
 machines that provide limited display access).</p>
-
 <p>Hyperbole does not enforce any particular hypertext or information
 management model, but instead allows you to organize your information in
 large or small chunks as you see fit, organizing each bit as time allows.
 The Hyperbole Koutliner and HyRolo tools organize textual hierarchies and
 may also contain links to external information sources.</p>
-
+<h2>
+<a id="user-content-important-features" class="anchor" 
href="#important-features" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Important Features</h2>
 <p>Some of Hyperbole's most important features include:</p>
-
 <ul>
-<li><p>Buttons may link to information or may execute commands, such as
-computing a complex value or communicating with external programs;</p></li>
-<li><p>Buttons are quick and easy to create with no programming nor
+<li>
+<p>Buttons may link to information or may execute commands, such as
+computing a complex value or communicating with external programs;</p>
+</li>
+<li>
+<p>Buttons are quick and easy to create with no programming nor
 markup needed.  One simply drags between a button source location
 and a link destination to create or to modify a link button.  The
-same result can be achieved from the keyboard.</p></li>
-<li><p>Buttons may be embedded within email messages and activated from
+same result can be achieved from the keyboard.</p>
+</li>
+<li>
+<p>Buttons may be embedded within email messages and activated from
 Emacs mail readers; hyperlinks may include variables so that they
-work at different locations where the variable settings differ;</p></li>
-<li><p>Koutlines allow rapid browsing, editing and movement of chunks of
+work at different locations where the variable settings differ;</p>
+</li>
+<li>
+<p>Koutlines allow rapid browsing, editing and movement of chunks of
 information organized into trees (hierarchies) and offer links
 that include viewspecs which determine how documents are to be
 displayed, e.g. show just the first two lines of all levels in a
-Koutline;</p></li>
-<li><p>Other hypertext and information retrieval systems may be
-encapsulated under a Hyperbole user interface very easily.</p></li>
+Koutline;</p>
+</li>
+<li>
+<p>Other hypertext and information retrieval systems may be
+encapsulated under a Hyperbole user interface very easily.</p>
+</li>
 </ul>
-
+<h2>
+<a id="user-content-hyperbole-uses" class="anchor" href="#hyperbole-uses" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Hyperbole Uses</h2>
 <p>Typical Hyperbole applications include:</p>
-
 <ul>
-<li><p><em>Personal Information Management</em><br>
+<li>
+<p><em>Personal Information Management</em><br>
 Overlapping link paths provide a variety of views into an
 information space.  A single key press activates buttons
 regardless of their types, making navigation easy.</p>
-
 <p>A search facility locates buttons in context and permits quick
-selection.</p></li>
-<li><p><em>Documentation Browsing</em><br>
+selection.</p>
+</li>
+<li>
+<p><em>Documentation Browsing</em><br>
 Embedding cross-references in a favorite documentation format.</p>
-
 <p>Addition of a point-and-click interface to existing documentation.</p>
-
 <p>Linkage of code and design documents.  Jumping to the definition
 of an identifier from its use within code or its reference within
-documentation.</p></li>
-<li><p><em>Brainstorming</em><br>
+documentation.</p>
+</li>
+<li>
+<p><em>Brainstorming</em><br>
 Capture of ideas and then quick reorganization with the Hyperbole
 Koutliner.  Link to related ideas, eliminating the need to copy
-and paste information into a single place.</p></li>
-<li><p><em>Help/Training Systems</em><br>
+and paste information into a single place.</p>
+</li>
+<li>
+<p><em>Help/Training Systems</em><br>
 Creation of tutorials with embedded buttons that show students how
 things work while explaining the concepts, e.g. an introduction
 to UNIX commands.  This technique can be much more effective than
-descriptions alone.</p></li>
-<li><p><em>Archive Managers</em><br>
+descriptions alone.</p>
+</li>
+<li>
+<p><em>Archive Managers</em><br>
 Supplementation of programs that manage archives from incoming
 information stream, having them add topic-based buttons that
 link to the archive holdings.  Users can then search and create
-their own links to archive entries.</p></li>
+their own links to archive entries.</p>
+</li>
 </ul>
-
-<h2 id="files">Files</h2>
-
+<h2>
+<a id="user-content-files" class="anchor" href="#files" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Files</h2>
 <p>See the <a href="HY-ABOUT">HY-ABOUT</a> file for a description and overview 
of Hyperbole.</p>
-
 <p>See the <a href="HY-ABOUT">HY-NEWS</a> file for a summary of new features 
in this release.</p>
-
 <p>See the <a href="INSTALL">INSTALL</a> file for installation and invocation 
instructions.</p>
-
 <p>See the <a href="HY-COPY">HY-COPY</a> and <a href="COPYING">COPYING</a> 
files for license information.</p>
-
 <p>See the <a href="MANIFEST">MANIFEST</a> file for summaries of Hyperbole 
distribution files.</p>
-
 <p>See <a href="DEMO">DEMO</a> for a demonstration of standard Hyperbole 
button capabilities.
 This is the best way to initially interactively learn about Hyperbole after
 installing it.</p>
-
-<p>Various forms of the Hyperbole are below the &quot;man/&quot; 
subdirectory.</p>
-
-<h2 id="programmer-quick-reference">Programmer Quick Reference</h2>
-
+<p>Various forms of the Hyperbole are below the "man/" subdirectory.</p>
+<h2>
+<a id="user-content-programmer-quick-reference" class="anchor" 
href="#programmer-quick-reference" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Programmer Quick Reference</h2>
 <p><a href="MANIFEST">MANIFEST</a> summarizes most of the files in the 
distribution.</p>
-
 <p>See <a href="DEMO">DEMO</a> for a demonstration of standard Hyperbole button
 capabilities.  This is the best way to initially interactively learn
 about Hyperbole.  The Hyperbole Manual is a reference manual, not a
 simple introduction.</p>
-
 <p>Naming conventions:</p>
-
 <ul>
-<li><p>All Hyperbole-specific code files begin with an `h', aside from the
-Koutliner files which are in the kotl/ subdirectory and begin with a 
`k'.</p></li>
-<li><p>Hyperbole user-interface files begin with `hui-' or `hmous'.</p></li>
-<li><p>Files that define implicit button types begin with `hib'.</p></li>
-<li><p>Encapsulations of foreign systems begin with `hsys-'.</p></li>
+<li>
+<p>All Hyperbole-specific code files begin with an 'h', aside from the
+Koutliner files which are in the kotl/ subdirectory and begin with a 'k'.</p>
+</li>
+<li>
+<p>Hyperbole user-interface files begin with 'hui-' or 'hmous'.</p>
+</li>
+<li>
+<p>Files that define implicit button types begin with 'hib'.</p>
+</li>
+<li>
+<p>Encapsulations of foreign systems begin with 'hsys-'.</p>
+</li>
 </ul>
-
 <p>Most of the standard Emacs user interface for Hyperbole is located in
 <a href="hui.el">hui.el</a>.  Most of the Hyperbole application programming
 interface can be found in <a href="hbut.el">hbut.el</a>.  <a 
href="hbdata.el">hbdata.el</a>
 encapsulates the button attribute storage implemented by Hyperbole.
 <a href="hmail.el">hmail.el</a> provides a basic abstract interface for
 integrating mail readers other than Rmail into Hyperbole.</p>
-
-<p>See the <a href="man/hyperbole.html#Questions-and-Answers">Hyperbole 
Questions and Answers</a> appendix in the Hyperbole manual for information on 
how
+<p>See the [Hyperbole Questions and Answers](man/hyperbole.html#Questions
+and Answers) appendix in the Hyperbole manual for information on how
 to alter the default context-sensitive Hyperbole key bindings (Smart
 Keys).</p>
-
-<h2 id="user-quotes">User Quotes</h2>
-
+<h2>
+<a id="user-content-user-quotes" class="anchor" href="#user-quotes" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>User Quotes</h2>
 <p>*** MAN I love Hyperbole!!!  Wow! ***</p>
-
-<div><pre><code class="language-none">                    -- Ken Olstad  
-                       Cheyenne Software, Inc.</code></pre></div>
-
+<pre><code>                    -- Ken Olstad  
+                       Cheyenne Software, Inc.
+</code></pre>
 <hr>
-
 <p>I <em>love</em> koutlines.</p>
-
-<div><pre><code class="language-none">                    -- Bob Glickstein  
-                       Z-Code Software Corporation</code></pre></div>
-
+<pre><code>                    -- Bob Glickstein  
+                       Z-Code Software Corporation
+</code></pre>
 <hr>
-
 <p>One of the nicest things about Hyperbole is that it's available
-   everywhere. Org-mode is a mode and its features are only available in
-   *.org files. For instance if you dropped into `eshell' or `ansi-term' and
-   did `ls', you can move point to any of the directory's contents, do M-RET
-   (or Shift-Button2) and jump to that file.  And that's just one example.
-   Note that this means that all Hyperbole functionality is available in
-   *.org files as well.  To me, except for the Hyperbole outliner, that means
-   complementary not conflicting. It's Hyperbole *and* org-mode, not
-   Hyperbole vs. org-mode.
-
+everywhere. Org-mode is a mode and its features are only available in
+Org files. For instance if you dropped into <code>eshell' or</code>ansi-term' 
and
+did `ls', you can move point to any of the directory's contents, do M-RET
+(or Shift-Button2) and jump to that file.  And that's just one example.
+Note that this means that all Hyperbole functionality is available in
+Org files as well.  To me, except for the Hyperbole outliner, that means
+complementary not conflicting. It's Hyperbole <em>and</em> org-mode, not
+Hyperbole vs. org-mode.</p>
 <p>Additionally, off the bat, I found it very well documented and for me
-   that's a proxy for the quality of a package.  The maintainers are quite
-   responsive.  There's plenty more functionality that I haven't uncovered yet
-   but due to the ease of installation and the quality of the documentation,
-   digging into it is actually fun.</p>
-
-<div><pre><code class="language-none">                    -- Aditya Siram  
-</code></pre></div>
+that's a proxy for the quality of a package.  The maintainers are quite
+responsive.  There's plenty more functionality that I haven't uncovered yet
+but due to the ease of installation and the quality of the documentation,
+digging into it is actually fun.</p>
+<pre><code>                    -- Aditya Siram  
+</code></pre>
 <hr>
-
 <p>For me, Emacs isn't Emacs without Hyperbole.  I have depended on Hyperbole
-  daily since 1992, when I first started using it to manage my development
-  environment.  It didn't take long before I could summon almost any
-  information I needed directly from within my editing environment with an
-  implicit button. Since I almost never have to slow down to look for
-  things--one context-dependent button usually produces exactly what I need
-  --I am able to maintain focus on the task I am working on and complete it
-  more quickly.  With its gestural interface, seamless integration with other
-  Emacs packages and incredibly useful set of core features.  I think that
-  Hyperbole is one of the best designed and most easily extensible software
-  products I have ever come across.  It is certainly the one which has made
-  the biggest improvement in my personal productivity.</p>
-
-<div><pre><code class="language-none">                    -- Chris Nuzum  
-                       Co-founder, Traction Software, Inc.</code></pre></div>
-
+daily since 1992, when I first started using it to manage my development
+environment.  It didn't take long before I could summon almost any
+information I needed directly from within my editing environment with an
+implicit button. Since I almost never have to slow down to look for
+things--one context-dependent button usually produces exactly what I need
+--I am able to maintain focus on the task I am working on and complete it
+more quickly.  With its gestural interface, seamless integration with other
+Emacs packages and incredibly useful set of core features.  I think that
+Hyperbole is one of the best designed and most easily extensible software
+products I have ever come across.  It is certainly the one which has made
+the biggest improvement in my personal productivity.</p>
+<pre><code>                    -- Chris Nuzum  
+                       Co-founder, Traction Software, Inc.
+</code></pre>
 <hr>
-
 <p>I've found Hyperbole (in conjunction with XEmacs) to be very useful
-  for signal processing algorithm development.</p>
-
+for signal processing algorithm development.</p>
 <p>For me, it has almost completely obsoleted the engineering notebook:
-  I keep a set of files with ideas, algorithms, and results, linked
-  together and to the implementation in C++ files.  Using XEmacs'
-  support for embedding graphics, I've written a mode that accepts
-  image tags (formatted like HTML), and reads in GIF files to display
-  plots.  I have another program that converts the file to HTML (not
-  perfect, but adequate), so I can put any aspect of development on
-  our internal web for others to see.</p>
-
-<div><pre><code class="language-none">                    -- Farzin Guilak  
-                       Protocol Systems, Inc., Engineer</code></pre></div>
-
+I keep a set of files with ideas, algorithms, and results, linked
+together and to the implementation in C++ files.  Using XEmacs'
+support for embedding graphics, I've written a mode that accepts
+image tags (formatted like HTML), and reads in GIF files to display
+plots.  I have another program that converts the file to HTML (not
+perfect, but adequate), so I can put any aspect of development on
+our internal web for others to see.</p>
+<pre><code>                    -- Farzin Guilak  
+                       Protocol Systems, Inc., Engineer
+</code></pre>
 <hr>
-
 <p>I am blind and have been using Hyperbole since 1992.  I used to use a PC as
-  a talking terminal attached to a UNIX system, but then I developed
-  Emacspeak which lets me use Emacs and Hyperbole from standard UNIX
-  workstations with an attached voice synthesizer.</p>
-
+a talking terminal attached to a UNIX system, but then I developed
+Emacspeak which lets me use Emacs and Hyperbole from standard UNIX
+workstations with an attached voice synthesizer.</p>
 <p>My main uses are:</p>
-
 <ol>
-<li><p>Global and implicit buttons for jumping to ftp sites.</p></li>
-<li><p>The contact manager with Emacspeak support.</p></li>
-<li><p>Explicit buttons as part of comments made about a structured document.
-  Each button jumps to the document section referred to by the comment.
-  This is very, very useful.</p></li>
-<li><p>The Hyperbole Koutliner, which I find a very useful tool.  I've
-  implemented Emacspeak extensions to support it.</p>
-
-<div><pre><code class="language-none">                -- TV Raman  
-                   Google Inc.</code></pre></div></li>
+<li>
+<p>Global and implicit buttons for jumping to ftp sites.</p>
+</li>
+<li>
+<p>The contact manager with Emacspeak support.</p>
+</li>
+<li>
+<p>Explicit buttons as part of comments made about a structured document.
+Each button jumps to the document section referred to by the comment.
+This is very, very useful.</p>
+</li>
+<li>
+<p>The Hyperbole Koutliner, which I find a very useful tool.  I've
+implemented Emacspeak extensions to support it.</p>
+<pre><code>              -- TV Raman  
+                 Google Inc.
+</code></pre>
+</li>
 </ol>
-
 <hr>
-
 <p>I've been a grateful Hyperbole user for a few years now.  Hyperbole's
-  flexibility and ease of use is a marvel.</p>
-
+flexibility and ease of use is a marvel.</p>
 <p>Mainly, I write easy little implicit button types (and corresponding action
-  types) to make my life easier.  For example, I have an implicit button type
-  to bury certain buffers when I click at their bottoms, one that recognizes
-  a bug report record in various contexts and edits it, one that links pieces
-  of test output in a log file to the corresponding test case source code
-  (EXTREMELY helpful in interpreting test output), others that support our
-  homegrown test framework, one that handles tree dired mode the way I'd
-  like, one that completely handles wico menus (I've also overloaded the
-  wconfig actions triggered by diagonal mouse drags with wicos actions), and
-  a couple that support interaction with BBDB.</p>
-
+types) to make my life easier.  For example, I have an implicit button type
+to bury certain buffers when I click at their bottoms, one that recognizes
+a bug report record in various contexts and edits it, one that links pieces
+of test output in a log file to the corresponding test case source code
+(EXTREMELY helpful in interpreting test output), others that support our
+homegrown test framework, one that handles tree dired mode the way I'd
+like, one that completely handles wico menus (I've also overloaded the
+wconfig actions triggered by diagonal mouse drags with wicos actions), and
+a couple that support interaction with BBDB.</p>
 <p>Other than that, I keep a global button file with 30 or so explicit buttons
-  that do various little things, and I index saved mail messages by putting
-  explicit link-to-mail buttons in an outline file.</p>
-
-<div><pre><code class="language-none">                    -- Ken Olstad  
-                       Cheyenne Software, Inc.</code></pre></div>
-
+that do various little things, and I index saved mail messages by putting
+explicit link-to-mail buttons in an outline file.</p>
+<pre><code>                    -- Ken Olstad  
+                       Cheyenne Software, Inc.
+</code></pre>
 <hr>
-
 <p>In general, Hyperbole is an embeddable, highly extensible hypertext
-  tool.  As such, I find it very useful. As it stands now, Hyperbole is
-  particularly helpful for organizing ill-structured or loosely coupled
-  information, in part because there are few tools geared for this purpose.
-  Hyperbole also possesses a lot of potential in supporting a wider
-  spectrum of structuredness, ranging from unstructured to highly
-  structured environments, as well as structural changes over time.</p>
-
+tool.  As such, I find it very useful. As it stands now, Hyperbole is
+particularly helpful for organizing ill-structured or loosely coupled
+information, in part because there are few tools geared for this purpose.
+Hyperbole also possesses a lot of potential in supporting a wider
+spectrum of structuredness, ranging from unstructured to highly
+structured environments, as well as structural changes over time.</p>
 <p>Major Uses:</p>
-
 <ul>
-<li><p>Menu interface to our own collaborative support environment called
+<li>
+<p>Menu interface to our own collaborative support environment called
 CoReView: This interface brings together all top-level user commands
 into a single partitioned screen, and allows the end user to interact
-with the system using simple mouse-clicking instead of the meta-x key.</p></li>
-<li><p>Gateway to internet resources: this includes links to major Internet
+with the system using simple mouse-clicking instead of the meta-x key.</p>
+</li>
+<li>
+<p>Gateway to internet resources: this includes links to major Internet
 archive sites of various types of information. Links are made at both
-directory and file levels.</p></li>
-<li><p>Alternative directory organizer: The hierarchical nature of the Unix
+directory and file levels.</p>
+</li>
+<li>
+<p>Alternative directory organizer: The hierarchical nature of the Unix
 file system sometimes makes it difficult to find things quickly and
 easily using directory navigational tools such as dired. Hyperbole
-enables me to create various &quot;profile&quot; views of my directory tree, 
with
-entries in these views referring to files anywhere in the hierarchy.</p></li>
-<li><p>Organizing and viewing online documentation: using Hyperbole along with
-Hyper-man and Info makes it truly easy to look up online 
documentation.</p></li>
-<li><p>Other desktop organization tasks: including links to various mail
+enables me to create various "profile" views of my directory tree, with
+entries in these views referring to files anywhere in the hierarchy.</p>
+</li>
+<li>
+<p>Organizing and viewing online documentation: using Hyperbole along with
+Hyper-man and Info makes it truly easy to look up online documentation.</p>
+</li>
+<li>
+<p>Other desktop organization tasks: including links to various mail
 folders, saved newsgroup conversation threads, online note-taker,
 emacs-command invocations, etc.</p>
-
-<div><pre><code class="language-none">                -- Dadong Wan  
-                   University of Hawaii</code></pre></div></li>
+<pre><code>                -- Dadong Wan  
+                   University of Hawaii
+</code></pre>
+</li>
 </ul>
-
 <hr>
-
 <p>Hyperbole is the first hyper-link system I've run across that is
-  actually part of the environment I use regularly, namely Emacs. The
-  complete flexibility of the links is both impressive and expected -- the
-  idea of making the link itself programmable is clever, and given that one
-  assumes the full power of Emacs.  Being able to send email with buttons
-  in it is a very powerful capability.  Using ange-ftp mode, one can make
-  file references &quot;across the world&quot; as easily as normal file 
references.</p>
-
-<div><pre><code class="language-none">                    -- Mark Eichin  
-                       Cygnus Support</code></pre></div>
-
+actually part of the environment I use regularly, namely Emacs. The
+complete flexibility of the links is both impressive and expected -- the
+idea of making the link itself programmable is clever, and given that one
+assumes the full power of Emacs.  Being able to send email with buttons
+in it is a very powerful capability.  Using ange-ftp mode, one can make
+file references "across the world" as easily as normal file references.</p>
+<pre><code>                    -- Mark Eichin  
+                       Cygnus Support
+</code></pre>
 <hr>
-
 <p>I just wanted to say how much I enjoy using the Hyperbole Koutliner.
-   It is a great way to quickly construct very readable technical documents
-   that I can pass around to others.   Thanks for the great work.  </p>
-
-<div><pre><code class="language-none">                    -- Jeff Fried  
-                       Informix</code></pre></div>
-
+It is a great way to quickly construct very readable technical documents
+that I can pass around to others.   Thanks for the great work.</p>
+<pre><code>                    -- Jeff Fried  
+                       Informix
+</code></pre>
 <hr>
-
 <p>The Hyperbole system provides a nice interface to exploring corners of
-   Unix that I didn't know existed before.</p>
-
-<div><pre><code class="language-none">                    -- Craig Smith  
</code></pre></div>
-
-<h2 id="why-was-hyperbole-developed">Why was Hyperbole developed?</h2>
-
+Unix that I didn't know existed before.</p>
+<pre><code>                    -- Craig Smith  
+</code></pre>
+<h2>
+<a id="user-content-why-was-hyperbole-developed" class="anchor" 
href="#why-was-hyperbole-developed" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Why was Hyperbole developed?</h2>
 <p>Hyperbole was originally designed to aid in research aimed at Personalized
 Information production/retrieval Environments (PIEs).  Hyperbole was a
 PIE Manager that provided services to PIE Tools.  PIEmail, a mail reader was
 the only PIE Tool developed as part of this research but Hyperbole has
 greatly expanded since then and has long been a production quality toolset.</p>
-
 <p>An examination of many hypertext environments as background research did
 not turn up any that seemed suitable for the research envisioned, mainly
 due to the lack of rich, portable programmer and user environments.  We also
 tired of trying to manage our own distributed information pools with standard
 UNIX tools.  And so Hyperbole was conceived and raved about until it
 got its name.</p>
-
 <p>Since then Hyperbole has proved indispensible at improving information
 access and organization in daily use over many years.  Why not start
 improving your information handling efficiency today?</p>
-
 <p>-- The End --</p>
 
-</body>
-
-</html>
diff --git a/_hypb b/_hypb
index 58ad652..a3c7217 100644
Binary files a/_hypb and b/_hypb differ
diff --git a/hact.el b/hact.el
index d19119f..67e79da 100644
--- a/hact.el
+++ b/hact.el
@@ -162,12 +162,65 @@ When optional SYM is given, returns the name for that 
symbol only, if any."
   "Returns Hyperbole action that executes a keyboard MACRO REPEAT-COUNT times."
   (list 'execute-kbd-macro macro repeat-count))
 
+;; This function is based on Emacs `help-function-arglist'.
+(defun action:params-emacs (def)
+  "Return the argument list for the function DEF which may be a symbol or a 
function body."
+  ;; Handle symbols aliased to other symbols.
+  (if (and (symbolp def) (fboundp def)) (setq def (indirect-function def)))
+  ;; If definition is a macro, find the function inside it.
+  (if (eq (car-safe def) 'macro) (setq def (cdr def)))
+  (cond
+   ((and (byte-code-function-p def) (listp (aref def 0))) (aref def 0))
+   ((eq (car-safe def) 'lambda) (nth 1 def))
+   ((eq (car-safe def) 'closure) (nth 2 def))
+   ((or (and (byte-code-function-p def) (integerp (aref def 0)))
+       (subrp def))
+    (or (let* ((doc (condition-case nil (documentation def) (error nil)))
+              (docargs (if doc (car (help-split-fundoc doc nil))))
+              (arglist (if docargs
+                           (cdar (read-from-string (downcase docargs)))))
+              (valid t))
+         ;; Check validity.
+         (dolist (arg arglist)
+           (unless (and (symbolp arg)
+                        (let ((name (symbol-name arg)))
+                          (if (eq (aref name 0) ?&)
+                              (memq arg '(&rest &optional))
+                            (not (string-match "\\." name)))))
+             (setq valid nil)))
+         (when valid arglist))
+       (let* ((args-desc (if (not (subrp def))
+                             (aref def 0)
+                           (let ((a (subr-arity def)))
+                             (logior (car a)
+                                     (if (numberp (cdr a))
+                                         (lsh (cdr a) 8)
+                                       (lsh 1 7))))))
+              (max (lsh args-desc -8))
+              (min (logand args-desc 127))
+              (rest (logand args-desc 128))
+              (arglist ()))
+         (dotimes (i min)
+           (push (intern (concat "arg" (number-to-string (1+ i)))) arglist))
+         (when (> max min)
+           (push '&optional arglist)
+           (dotimes (i (- max min))
+             (push (intern (concat "arg" (number-to-string (+ 1 i min))))
+                   arglist)))
+         (unless (zerop rest) (push '&rest arglist) (push 'rest arglist))
+         (nreverse arglist))))
+   ((and (autoloadp def) (not (eq (nth 4 def) 'keymap)))
+    ;; Force autoload to get function signature.
+    (setq def (autoload-do-load def))
+    (unless (autoloadp def)
+      (action:params-emacs def)))))
+
 (defun action:params (action)
-  "Returns unmodified ACTION parameter list."
+  "Returns unmodified ACTION parameter list.
+Autoloads action function if need be to get the parameter list."
+  (when (and (symbolp action) (fboundp action))
+    (setq action (hypb:indirect-function action)))
   (cond ((null action) nil)
-       ((symbolp action)
-        (car (cdr
-              (and (fboundp action) (hypb:indirect-function action)))))
        ((listp action)
         (if (eq (car action) 'autoload)
             (error "(action:params): Autoload not supported: %s" action)
@@ -175,14 +228,9 @@ When optional SYM is given, returns the name for that 
symbol only, if any."
        ((hypb:emacs-byte-code-p action)
         (if (fboundp 'compiled-function-arglist)
             (compiled-function-arglist action)
-          ;; Turn into a list for extraction.  Under Emacs 25, the
-          ;; result could be a parameter list or an integer, a
-          ;; bitstring representing a variable length argument list,
-          ;; in which case there is no present way to get the
-          ;; argument list, so just return nil.  See "(elisp)Byte-Code
-          ;; Objects".
-          (let ((params (car (cdr (cons nil (append action nil))))))
-            (if (listp params) params))))))
+          (action:params-emacs action)))
+       ((symbolp action)
+        (car (cdr (and (fboundp action) (hypb:indirect-function action)))))))
 
 (defun action:param-list (action)
   "Returns list of actual ACTION parameters (removes `&' special forms)."
@@ -222,13 +270,18 @@ If value is nil, however, t is returned instead, to 
ensure that implicit button
 types register the performance of the action.  ACTYPE may be a symbol or symbol
 name for either an action type or a function.  Runs `action-act-hook' before
 performing ACTION."
-  ;; Needed so relative paths are expanded properly.
-  (setq args (action:path-args-abs args))
   (let ((prefix-arg current-prefix-arg)
        (action (actype:action actype))
        (act '(apply action args)))
     (if (null action)
        (error "(actype:act): Null action for: `%s'" actype)
+      ;; Next 2 lines are needed so that relative paths are expanded
+      ;; properly.  But in rare cases, this can improperly expand simple
+      ;; string arguments like "tags" as a pathname, when it is not
+      ;; being used as a path.  So do this only if actype is a defact
+      ;; and not a defun to limit any potential impact. RSW - 9/22/2017
+      (if (symbolp action) (string-match "\\`actypes::" (symbol-name action))
+       (setq args (action:path-args-abs args)))
       (let ((hist-elt (hhist:element)))
        (run-hooks 'action-act-hook)
        (prog1 (or (cond ((or (symbolp action) (listp action)
@@ -252,7 +305,7 @@ ACTYPE may be a Hyperbole actype or Emacs Lisp function."
        (setq actname actype
              actype (intern actype))
       (setq actname (symbol-name actype)))
-    (cond ((htype:body (if (string-match "^actypes::" actname)
+    (cond ((htype:body (if (string-match "\\`actypes::" actname)
                           actype
                         (intern-soft (concat "actypes::" actname)))))
          ((fboundp actype) actype)
@@ -310,9 +363,13 @@ calling form."
     (and action (action:commandp action) (or (call-interactively action) t))))
 
 (defun    actype:params (actype)
-  "Returns list of ACTYPE's parameters."
+  "Returns list of ACTYPE's parameters, including keywords."
   (action:params (actype:action actype)))
 
+(defun    actype:param-list (actype)
+  "Returns list of ACTYPE's parameters without keywords."
+  (action:param-list (actype:action actype)))
+
 (provide 'hact)
 
 ;;; hact.el ends here
diff --git a/hactypes.el b/hactypes.el
index 29cf6a7..7145949 100644
--- a/hactypes.el
+++ b/hactypes.el
@@ -244,7 +244,7 @@ Use `link-to-file' instead for a permanent link."
   (hpath:find directory))
 
 (defact link-to-ebut (key-file key)
-  "Performs action given by another button, specified by KEY-FILE and KEY."
+  "Performs action given by another explicit button, specified by KEY-FILE and 
KEY."
   (interactive
    (let (but-file but-lbl)
      (while (cond ((setq but-file
@@ -285,15 +285,26 @@ Use `link-to-file' instead for a permanent link."
             (describe-symbol symbol)))))
 
 (defact link-to-file (path &optional point)
-  "Displays file given by PATH scrolled to optional POINT.
-With POINT, buffer is displayed with POINT at window top."
+  "Displays a file given by PATH scrolled to optional POINT.
+If POINT is given, the buffer is displayed with POINT at the top of
+the window."
   (interactive
-   (let ((prev-reading-p hargs:reading-p))
+   (let ((prev-reading-p hargs:reading-p)
+        (existing-buf t)
+        path-buf)
      (unwind-protect
-        (let* ((default (car defaults))
+        (let* ((file-path (car defaults))
+               (file-point (cadr defaults))
                (hargs:reading-p 'file)
-               (path (read-file-name "Path to link to: " default default))
-               (path-buf (get-file-buffer path)))
+               (path (read-file-name "Path to link to: " file-path file-path))
+               ;; Ensure any variable is removed before doing path matching.
+               (expanded-path (hpath:substitute-value path)))
+          (setq existing-buf (get-file-buffer expanded-path)
+                path-buf (or existing-buf
+                             (and (file-readable-p expanded-path)
+                                  (prog1 (set-buffer (find-file-noselect 
expanded-path t))
+                                    (when (integerp file-point)
+                                      (goto-char (min (point-max) 
file-point)))))))
           (if path-buf
               (with-current-buffer path-buf
                 (setq hargs:reading-p 'character)
@@ -303,7 +314,9 @@ With POINT, buffer is displayed with POINT at window top."
                     (list path (point))
                   (list path)))
             (list path)))
-       (setq hargs:reading-p prev-reading-p))))
+       (setq hargs:reading-p prev-reading-p)
+       (when (and path-buf (not existing-buf))
+        (kill-buffer path-buf)))))
   (and (hpath:find path)
        (integerp point)
        (progn (goto-char (min (point-max) point))
@@ -427,8 +440,7 @@ Returns t if found, signals an error if not."
 
 (defact link-to-rfc (rfc-num)
   "Retrieves and displays an Internet rfc given by RFC-NUM.
-RFC-NUM may be a string or an integer.  Requires a remote file
-access library, such as Tramp, for ftp file retrievals."
+RFC-NUM may be a string or an integer."
   (interactive "nRFC number to retrieve: ")
   (if (or (stringp rfc-num) (integerp rfc-num))
       (hpath:find (hpath:rfc rfc-num))))
@@ -486,10 +498,11 @@ Optional OPOINT is point to return to in BUF-NAME after 
displaying summary."
            (t (if opoint (goto-char opoint))
               (hypb:error "(rfc-toc): Invalid buffer name: %s" buf-name))))
   (let ((sect-regexp "^[ \t]*[1-9][0-9]*\\.[0-9.]*[ \t]+[^ \t\n\r]")
-       (temp-buffer-show-function 'switch-to-buffer))
+       (temp-buffer-show-function 'switch-to-buffer)
+       occur-buffer)
     (hpath:display-buffer (current-buffer))
     (occur sect-regexp)
-    (set-buffer "*Occur*")
+    (setq occur-buffer (set-buffer "*Occur*"))
     (rename-buffer (format "*%s toc*" buf-name))
     (re-search-forward "^[ ]*[0-9]+:" nil t)
     (beginning-of-line)
diff --git a/hargs.el b/hargs.el
index 61d0415..50cea02 100644
--- a/hargs.el
+++ b/hargs.el
@@ -128,7 +128,9 @@ With optional LIST-POSITIONS-FLAG, return list of 
(string-matched start-pos end
                 (setq end (1- end))
               t)
             (< start end)
-            (let ((string (hypb:replace-match-string "[\n\r]\\s-*" 
(buffer-substring start end) " " t)))
+            (let ((string (substring-no-properties
+                           (hypb:replace-match-string
+                            "[\n\r]\\s-*" (buffer-substring start end) " " 
t))))
               (if list-positions-flag
                   (list string start end)
                 string)))))))
@@ -198,13 +200,12 @@ Optional DEFAULT-PROMPT is used to describe default 
value."
   (if (featurep 'xemacs)
       (if current-mouse-event
          (select-window
-          (or (event-window current-mouse-event)
-              (selected-window))))
-    (let* ((event last-command-event)
-          (window (posn-window (event-start event))))
-      (if (and (eq window (minibuffer-window))
-              (not (minibuffer-window-active-p
-                    (minibuffer-window))))
+          (or (event-window current-mouse-event) (selected-window))))
+    (let ((window (posn-window (event-start last-command-event))))
+      (if (framep window)
+         (setq window (frame-selected-window window)))
+      (if (and (window-minibuffer-p window)
+              (not (minibuffer-window-active-p window)))
          (error "Attempt to select inactive minibuffer window")
        (select-window (or window (selected-window)))))))
 
@@ -260,7 +261,7 @@ If optional argument NO-DEFAULT is non-nil, nil is returned 
instead of any
 default values.
 
 Caller should have checked whether an argument is presently being read
-and set `hargs:reading-p' to an appropriate argument type.
+and has set `hargs:reading-p' to an appropriate argument type.
 Handles all of the interactive argument types that `hargs:iform-read' does."
   (cond ((and (eq hargs:reading-p 'kcell)
              (eq major-mode 'kotl-mode)
@@ -294,7 +295,7 @@ Handles all of the interactive argument types that 
`hargs:iform-read' does."
        ((eq hargs:reading-p 'ebut) (ebut:label-p 'as-label))
        ((ebut:label-p) nil)
        ((eq hargs:reading-p 'file)
-        (cond ((eq major-mode 'dired-mode)
+        (cond ((derived-mode-p 'dired-mode)
                (let ((file (dired-get-filename nil t)))
                  (and file (hpath:absolute-to file))))
               ((eq major-mode 'monkey-mode)
@@ -305,12 +306,12 @@ Handles all of the interactive argument types that 
`hargs:iform-read' does."
               ;; Unquoted remote file name.
               ((hpath:is-p (hpath:remote-at-p) 'file))
               ;; Possibly non-existent file name
-              ((hpath:at-p nil 'non-exist))
+              ((if no-default (hpath:at-p 'file 'non-exist)))
               (no-default nil)
               ((buffer-file-name))
               ))
        ((eq hargs:reading-p 'directory)
-        (cond ((eq major-mode 'dired-mode)
+        (cond ((derived-mode-p 'dired-mode)
                (let ((dir (dired-get-filename nil t)))
                  (and dir (setq dir (hpath:absolute-to dir))
                       (file-directory-p dir) dir)))
@@ -322,8 +323,8 @@ Handles all of the interactive argument types that 
`hargs:iform-read' does."
               ((hpath:at-p 'directory))
               ;; Unquoted remote directory name.
               ((hpath:is-p (hpath:remote-at-p) 'directory))
-              ;; Possibly non-existant directory name
-              ((hpath:at-p 'directory 'non-exist))
+              ;; Possibly non-existent directory name
+              ((if no-default (hpath:at-p 'directory 'non-exist)))
               (no-default nil)
               (default-directory)
               ))
diff --git a/hbdata.el b/hbdata.el
index 3a926bd..f1c2390 100644
--- a/hbdata.el
+++ b/hbdata.el
@@ -139,9 +139,9 @@ Nil is returned when button has not beened modified."
 ;;; ------------------------------------------------------------------------
 
 (defun hbdata:build (&optional mod-lbl-key but-sym)
-  "Tries to construct button data from optional MOD-LBL-KEY and BUT-SYM.
+  "Constructs button data from optional MOD-LBL-KEY and BUT-SYM; modifies 
BUT-SYM attributes.
 MOD-LBL-KEY nil means create a new entry, otherwise modify existing one.
-BUT-SYM nil means use 'hbut:current'.  If successful, returns a cons of
+Nil BUT-SYM means use 'hbut:current'.  If successful, returns a cons of
  (button-data . button-instance-str), else nil."
   (let* ((but) 
         (b (hattr:copy (or but-sym 'hbut:current) 'but))
@@ -150,67 +150,64 @@ BUT-SYM nil means use 'hbut:current'.  If successful, 
returns a cons of
         (new-key (if mod-lbl-key (hattr:get b 'lbl-key) key))
         (lbl-instance) (creator) (create-time) (modifier) (mod-time)
         (entry) loc dir)
-    (if (null l)
-       nil
+    (when l
       (setq loc (if (bufferp l) l (file-name-nondirectory l))
            dir (if (bufferp l) nil (file-name-directory l)))
-      (if (setq entry (hbdata:to-entry key loc dir (not mod-lbl-key)))
-         (if mod-lbl-key
-             (progn
-               (setq creator     (hbdata:creator entry)
-                     create-time (hbdata:create-time entry)
-                     modifier    (let* ((user (hypb:user-name))
-                                        (addr hyperb:user-email))
-                                   (if (equal creator addr)
-                                       user addr))
-                     mod-time    (htz:date-sortable-gmt)
-                     entry       (cons new-key (cdr entry)))
-               (hbdata:delete-entry-at-point)
-               (if (setq lbl-instance (hbdata:instance-last new-key loc dir))
-                   (progn
-                     (setq lbl-instance (concat ebut:instance-sep
-                                                (1+ lbl-instance)))
-                     ;; This line is needed to ensure that the highest
-                     ;; numbered instance of a label appears before
-                     ;; other instances, so 'hbdata:instance-last' will work.
-                     (if (hbdata:to-entry-buf loc dir) (forward-line 1))))
-               )
-           (let ((inst-num (hbdata:instance-last new-key loc dir)))
-             (setq lbl-instance (if inst-num
-                                    (hbdata:instance-next 
-                                     (concat new-key ebut:instance-sep
-                                             (int-to-string inst-num))))))
-           ))
-      (if (or entry (not mod-lbl-key))
-         (cons
-          (list (concat new-key lbl-instance)
-                (hattr:get b 'action)
-                ;; Hyperbole V1 referent compatibility, always nil in V2
-                (hattr:get b 'referent)
-                ;; Save actype without class prefix
-                (let ((actype (hattr:get b 'actype)))
-                  (and actype (symbolp actype)
-                       (setq actype (symbol-name actype))
-                       (intern
-                        (substring actype (if (string-match "::" actype)
-                                              (match-end 0) 0)))))
-                (let ((mail-dir (and (fboundp 'hmail:composing-dir)
-                                     (hmail:composing-dir l)))
-                      (args (hattr:get b 'args)))
-                  ;; Replace matches for Emacs Lisp directory variable
-                  ;; values with their variable names in any pathname args.
-                  (mapcar 'hpath:substitute-var
-                          (if mail-dir
-                              ;; Make pathname args absolute for outgoing mail 
and
-                              ;; news messages.
-                              (action:path-args-abs args mail-dir)
-                            args)))
-                (or creator hyperb:user-email)
-                (or create-time (htz:date-sortable-gmt))
-                modifier
-                mod-time)
-          lbl-instance)
-       ))))
+      (when (setq entry (hbdata:to-entry key loc dir (not mod-lbl-key)))
+       (if mod-lbl-key
+           (progn
+             (setq creator     (hbdata:creator entry)
+                   create-time (hbdata:create-time entry)
+                   modifier    (let* ((user (hypb:user-name))
+                                      (addr hyperb:user-email))
+                                 (if (equal creator addr)
+                                     user addr))
+                   mod-time    (htz:date-sortable-gmt)
+                   entry       (cons new-key (cdr entry)))
+             (hbdata:delete-entry-at-point)
+             (when (setq lbl-instance (hbdata:instance-last new-key loc dir))
+               (setq lbl-instance (concat ebut:instance-sep (1+ lbl-instance)))
+               ;; This line is needed to ensure that the highest
+               ;; numbered instance of a label appears before
+               ;; other instances, so 'hbdata:instance-last' will work.
+               (if (hbdata:to-entry-buf loc dir) (forward-line 1))))
+         (let ((inst-num (hbdata:instance-last new-key loc dir)))
+           (setq lbl-instance (if inst-num
+                                  (hbdata:instance-next 
+                                   (concat new-key ebut:instance-sep
+                                           (int-to-string inst-num))))))))
+      (when (or entry (not mod-lbl-key))
+       (hattr:set b 'lbl-key (concat new-key lbl-instance))
+       (hattr:set b 'loc loc)
+       (hattr:set b 'dir dir)
+       (let ((hbdata (list (hattr:get b 'lbl-key)
+                           (hattr:get b 'action)
+                           ;; Hyperbole V1 referent compatibility, always nil 
in V2
+                           (hattr:get b 'referent)
+                           ;; Save actype without class prefix.
+                           (let ((actype (hattr:get b 'actype)))
+                             (and actype (symbolp actype)
+                                  (setq actype (symbol-name actype))
+                                  (intern
+                                   (substring actype (if (string-match "::" 
actype)
+                                                         (match-end 0) 0)))))
+                           (let ((mail-dir (and (fboundp 'hmail:composing-dir)
+                                                (hmail:composing-dir l)))
+                                 (args (hattr:get b 'args)))
+                             ;; Replace matches for variable values with their 
variable names in any pathname args.
+                             (hattr:set b 'args
+                                        (mapcar 'hpath:substitute-var
+                                                (if mail-dir
+                                                    ;; Make pathname args 
absolute for outgoing mail and news messages.
+                                                    (action:path-args-abs args 
mail-dir)
+                                                  args))))
+                           (hattr:set b 'creator (or creator 
hyperb:user-email))
+                           (hattr:set b 'create-time (or create-time 
(htz:date-sortable-gmt)))
+                           (hattr:set b 'modifier modifier)
+                           (hattr:set b 'mod-time mod-time))))
+         ;; Ensure modified attributes are saved to `but-sym' or hbut:current.
+         (hattr:copy b (or but-sym 'hbut:current))
+         (cons hbdata lbl-instance))))))
 
 (defun hbdata:get-entry (lbl-key key-src &optional directory)
   "Returns button data entry given by LBL-KEY, KEY-SRC and optional DIRECTORY.
@@ -394,8 +391,7 @@ Returns non-nil if KEY-SRC is found or created, else nil."
                     buffer-read-only nil)
               (if (not (hmail:hbdata-to-p))
                   (insert "\n" hmail:hbdata-sep "\n"))
-              (backward-char 1)
-              )
+              (backward-char 1))
       (setq directory (or (file-name-directory key-src) directory))
       (let ((ln-file) (link-p key-src))
        (while (setq link-p (file-symlink-p link-p))
@@ -416,10 +412,8 @@ Returns non-nil if KEY-SRC is found or created, else nil."
                  (create
                   (setq rtn t)
                   (insert "\^L\n\"" key-src "\"\n")
-                  (backward-char 1))
-                 ))))
-    rtn
-    ))
+                  (backward-char 1))))))
+    rtn))
 
 (defun hbdata:write (&optional orig-lbl-key but-sym)
   "Tries to write Hyperbole button data from optional ORIG-LBL-KEY and BUT-SYM.
@@ -427,13 +421,13 @@ ORIG-LBL-KEY nil means create a new entry, otherwise 
modify existing one.
 BUT-SYM nil means use 'hbut:current'.  If successful, returns 
 a button instance string to append to button label or t when first instance.
 On failure, returns nil."
-  (let ((cns (hbdata:build orig-lbl-key but-sym))
+  (let ((cons (hbdata:build orig-lbl-key but-sym))
        entry lbl-instance)
     (if (or (and buffer-file-name
                 (not (file-writable-p buffer-file-name)))
-           (null cns))
+           (null cons))
        nil
-      (setq entry (car cns) lbl-instance (cdr cns))
+      (setq entry (car cons) lbl-instance (cdr cons))
       (prin1 entry (current-buffer))
       (terpri (current-buffer))
       (or lbl-instance t)
diff --git a/hbut.el b/hbut.el
index a2c1807..8198af7 100644
--- a/hbut.el
+++ b/hbut.el
@@ -255,19 +255,21 @@ represent the output of particular document formatters."
                pos (1+ pos)))
        lbl)))
 
-(defun    ebut:label-p (&optional as-label start-delim end-delim pos-flag)
+(defun    ebut:label-p (&optional as-label start-delim end-delim pos-flag 
two-lines-flag)
   "Returns key for Hyperbole button label that point is within.
-Returns nil if not within a label.
-Assumes point is within first line of button label, if at all.
-If optional AS-LABEL is non-nil, label is returned rather than the key
-derived from the label.  Optional START-DELIM and END-DELIM are strings
-that override default button delimiters.  With optional POS-FLAG non-nil,
-returns list of label-or-key, but-start-position, but-end-position.
-Positions include delimiters."
+Returns nil if not within a label.  Assumes point is within first line
+  of button label, if at all.
+All following arguments are optional.  If AS-LABEL is non-nil, label
+is returned rather than the key derived from the label.  START-DELIM
+and END-DELIM are strings that override default button delimiters.
+With POS-FLAG non-nil, returns list of label-or-key,
+but-start-position, but-end-position.  Positions include delimiters.
+With TWO-LINES-FLAG non-nil, constrains label search to two lines."
   (let ((opoint (point))
        (npoint)
        (quoted "\\(^\\|[^\\{]\\)")
        (start)
+       (ebut:max-len ebut:max-len)
        lbl-key end but-start but-end)
     (or start-delim (setq start-delim ebut:start))
     (or end-delim (setq end-delim ebut:end))
@@ -295,6 +297,10 @@ Positions include delimiters."
                  (forward-char -2))
              (error (goto-char (1- opoint))))
          (goto-char (1- opoint)))
+       (when two-lines-flag
+         (save-excursion
+           (forward-line 2)
+           (setq ebut:max-len (- (point) start))))
        (and (< (point) (+ start ebut:max-len))
             (re-search-forward (concat quoted (regexp-quote end-delim))
                                (+ start ebut:max-len) t)
@@ -386,7 +392,7 @@ expression which matches an entire button string."
   (let* ((regexp (symbolp end-delim))
         (end-sym (or regexp (substring end-delim -1)))
         (rtn)
-        (quoted)
+        (ignore)
         start end but lbl)
     (save-excursion
       (goto-char (point-min))
@@ -400,13 +406,16 @@ expression which matches an entire button string."
        (setq start (match-beginning include-delims)
              end (match-end include-delims)
              but (buffer-substring (match-beginning 0) (match-end 0))
-             lbl (buffer-substring (match-beginning 1) (match-end 1)))
+             lbl (buffer-substring (match-beginning 1) (match-end 1))
+             ;; If within a programming language buffer, ignore matches 
outside comments.
+             ignore (and (derived-mode-p 'prog-mode)
+                         ;; Match is outside of a programming language comment
+                         (not (nth 4 (syntax-ppss)))))
        (save-excursion
          (goto-char start)
-         (if (or (eq (preceding-char) ?\\) (eq (preceding-char) ?\{))
-             ;; Ignore matches with quoted delimiters.
-             (setq quoted t)))
-       (cond (quoted (setq quoted nil))
+         ;; Ignore matches with quoted delimiters.
+         (or ignore (setq ignore (memq (preceding-char) '(?\\ ?\{)))))
+       (cond (ignore (setq ignore nil))
              ((or (not regexp-match)
                   (string-match regexp-match but))
               (setq rtn (cons (funcall but-func lbl start end) rtn))))))
@@ -442,7 +451,7 @@ move to the first occurrence of the button."
       (goto-char (+ (match-beginning 0) (length ebut:start)))))
 
 (defun    ebut:operate (curr-label new-label)
-  "Operates on a new or existing Hyperbole button given by CURR-LABEL.
+  "Operates on and modifies properties of a new or existing Hyperbole button 
given by CURR-LABEL.
 When NEW-LABEL is non-nil, this is substituted for CURR-LABEL and the
 associated button is modified.  Otherwise, a new button is created.
 Returns instance string appended to label to form unique label, nil if
@@ -487,14 +496,14 @@ in the current buffer."
                                buf-lbl (buffer-substring start end))
                          (equal buf-lbl curr-label))
                     nil)
-                   ((looking-at (regexp-quote curr-label))
+                   ((progn (if start (goto-char start))
+                           (looking-at (regexp-quote curr-label)))
                     (setq start (point)
                           end (match-end 0)))
                    (t (setq start (point))
                       (insert curr-label)
                       (setq end (point))))
-             (ebut:delimit start end instance-flag))
-           )
+             (ebut:delimit start end instance-flag)))
          ;; Position point
          (let ((new-key (ebut:label-to-key new-label)))
            (cond ((equal (ebut:label-p) new-key)
@@ -714,7 +723,7 @@ Inserts INSTANCE-STR after END, before ending delimiter."
       )))
 
 (defun    hattr:copy (from-hbut to-hbut)
-  "Copies attributes FROM-HBUT TO-HBUT, eliminating attributes TO-HBUT had.
+  "Copies attributes FROM-HBUT TO-HBUT, overwriting TO-HBUT attribute values.
 Returns TO-HBUT."
   (mapc (lambda (hbut)
          (or (and hbut (symbolp hbut))
@@ -795,7 +804,7 @@ Suitable for use as part of `write-file-functions'."
   nil)
 
 (defun    hattr:set (obj-symbol attr-symbol attr-value)
-  "Sets OBJ-SYMBOL's attribute ATTR-SYMBOL to ATTR-VALUE."
+  "Sets OBJ-SYMBOL's attribute ATTR-SYMBOL to ATTR-VALUE and returns 
ATR-VALUE."
   (put obj-symbol attr-symbol attr-value))
 
 (defalias    'hattr:summarize 'hattr:report)
@@ -993,7 +1002,7 @@ Returns number of buttons reported on or nil if none."
   "Returns Hyperbole source buffer or file given at point.
 If a file, always returns a full path if optional FULL is non-nil."
   (goto-char (match-end 0))
-  (cond ((looking-at "#<buffer \"?\\([^ \n\"]+\\)\"?>")
+  (cond ((looking-at "#<buffer \"?\\([^\n\"]+\\)\"?>")
         (get-buffer (buffer-substring (match-beginning 1)
                                       (match-end 1))))
        ((looking-at "\".+\"")
@@ -1091,7 +1100,11 @@ arguments."
 PARAMS are presently ignored.
 
   AT-P is a boolean form of no arguments which determines whether or not point
-is within a button of this type.
+is within a button of this type and if it is, calls `hact' with an
+action to be performed whenever a button of this type is activated.
+The action may be a regular Emacs Lisp function or a Hyperbole action
+type created with `defact'.
+
   Optional TO-P is a boolean form which moves point immediately after the next
 button of this type within the current buffer and returns a list of (button-
 label start-pos end-pos), or nil when none is found.
diff --git a/hib-debbugs.el b/hib-debbugs.el
index abaab91..49d903c 100644
--- a/hib-debbugs.el
+++ b/hib-debbugs.el
@@ -8,10 +8,16 @@
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of Hyperbole.  It requires the Emacs package
-;; Debbugs 0.9.7 or higher.
+;; Debbugs 0.9.7 or higher; there were bugs in earlier versions
+;; that made it incompatible with the queries Hyperbole issues.
 ;;
 ;;; Commentary:
 ;;
+;;   NOTE: Although Emacs now comes with the library "bug-reference-mode.el"
+;;         which displays bug numbers, this library provides a much broader
+;;         set of facilities and is activated via the Smart Keys, so no
+;;         new key bindings are necessary.
+;;
 ;;   Debbugs is a client-server issue tracker used by Gnu projects
 ;;   to manage issues and maintain threads of discussion around them.
 ;;
@@ -21,7 +27,6 @@
 ;;   queries when pressed within any of the following buffer text
 ;;   formats (with point prior to any attribute):
 ;;
-;;      #id-number
 ;;      bug#id-number, bug# id-number, bug #id-number, or bug id-number
 ;;      bug?attr1=val1&attr2=val2&attr3=val3
 ;;      bug#id-number?attr1=val1&attr2=val2&attr3=val3
@@ -62,7 +67,7 @@
 ;;; Other required Elisp libraries
 ;;; ************************************************************************
 
-(eval-and-compile (mapc #'require '(hactypes package)))
+(eval-and-compile (mapc #'require '(hactypes)))
 (eval-when-compile (require 'debbugs-gnu nil t))
 
 ;;; ************************************************************************
@@ -83,14 +88,13 @@ If the query includes a single id number, displays the 
original message
 submission for that id and allows browsing of the followup discussion.
 The following buffer text formats are accepted (with point prior to any
 attribute): 
-   id-number
-   #id-number
+
    bug#id-number or bug# id-number or bug #id-number
    bug?attr1=val1&attr2=val2&attr3=val3
    bug#id-number?attr1=val1&attr2=val2&attr3=val3
 
 Note that `issue' or `debbugs' may be used as well in place of `bug'."
-  (when (package-installed-p 'debbugs (version-to-list "0.9.7"))
+  (when (debbugs-version-sufficient-p)
     (if (debbugs-query:at-p)
        (cond ((and (match-beginning 3) (string-equal "?" (match-string 3)))
               (hact 'debbugs-gnu-query:string (buffer-substring-no-properties
@@ -108,7 +112,7 @@ Note that `issue' or `debbugs' may be used as well in place 
of `bug'."
 (defun debbugs-gnu-query:help (but)
   "Makes a Gnu debbugs id number at point (optionally prefixed with a # sign) 
display the pretty pretted status of the bug id.
 Ignores other types of Gnu debbugs query strings."
-  (if (and (package-installed-p 'debbugs (version-to-list "0.9.7"))
+  (if (and (debbugs-version-sufficient-p)
           (debbugs-query:at-p)
           (match-beginning 2))
       (debbugs-query:status (string-to-number (match-string 2)))
@@ -169,7 +173,7 @@ severity, and package."
   (require 'debbugs-gnu)
   (setq debbugs-gnu-current-query nil)
   (dolist (attr query-attribute-list)
-    (add-to-list #'debbugs-gnu-current-query
+    (add-to-list 'debbugs-gnu-current-query
                 (cons (if (symbolp (car attr)) (car attr) (intern (car attr)))
                       (cdr attr))))
   (debbugs-gnu-show-reports))
@@ -200,10 +204,12 @@ If this is a query with attributes, then (match-string 3) 
= \"?\" and (match-str
          (skip-chars-backward " \t\n\r\f")
          (skip-chars-backward "bugdiseBUGDISE#") ;; bug, debbugs or issue
          ;; Allow for bug#222?package=hyperbole&severity=high as well as
-         ;; bug222, bug#222, or #222.
+         ;; bug222, or bug#222.
          (or (looking-at "[ \t\n\r\f]*\\(bug#?\\|debbugs#?\\|issue#?\\)[ 
\t\n\r\f]*#?\\([1-9][0-9]*\\)?\\(\\?\\)\\([a-z=&0-9%;()]+\\)")
              (looking-at "[ \t\n\r\f]*\\(bug#?\\|debbugs#?\\|issue#?\\)[ 
\t\n\r\f]*#?\\([1-9][0-9]*\\)[\].,;?!\)\>\}]?\\([ \t\n\r\f]\\|\\'\\)")
-             (looking-at "[ \t\n\r\f]*\\(bug\\|debbugs\\|issue\\)?[ 
\t\n\r\f]*#\\([1-9][0-9]*\\)[\].,;?!\)\>\}]?\\([ \t\n\r\f]\\|\\'\\)"))))))
+             ;; Ignore matches like  #222, so this is not confused with 
"hib-social.el" social references.
+             ;; (looking-at "[ \t\n\r\f]*\\(bug\\|debbugs\\|issue\\)?[ 
\t\n\r\f]*#\\([1-9][0-9]*\\)[\].,;?!\)\>\}]?\\([ \t\n\r\f]\\|\\'\\)")
+             )))))
 
 (defun debbugs-query:status (id)
   "Pretty prints to standard-output the status attributes of debbugs ID (a 
positive integer).
@@ -230,6 +236,15 @@ Ignores nil valued attributes.  Returns t unless no 
attributes are printed."
            (princ (format (concat "   %s:%" len "s%S\n") attr " " val))))
        has-attr))))
 
+(defun debbugs-version-sufficient-p ()
+  "Return t iff debbugs version is sufficient for use with Hyperbole (greater 
than equal to 0.9.7)."
+  (let ((debbugs-src (locate-file "debbugs" load-path '(".el")))
+       version)
+    (when debbugs-src
+      (setq version (shell-command-to-string (format "fgrep -m1 Version: %s | 
sed -e 's/[^.0-9]//g' | tr -d '\n'" debbugs-src)))
+      (when (not (equal version ""))
+       (version-list-<= (version-to-list "0.9.7") (version-to-list 
version))))))
+
 (provide 'hib-debbugs)
 
 ;;; hib-debbugs.el ends here
diff --git a/hib-doc-id.el b/hib-doc-id.el
index fb9d04d..5445ad3 100644
--- a/hib-doc-id.el
+++ b/hib-doc-id.el
@@ -143,7 +143,7 @@ signalled."
                        delim-doc-id)))))))
 
 (defib doc-id ()
-  "Displays an index entry for a site-specific document given its id.
+  "Displays a document from a local document library given its id.
 Ids must be delimited by `doc-id-start' and `doc-id-end' and must
 match the function stored in `doc-id-p'."
   (and (not (bolp))
diff --git a/hib-kbd.el b/hib-kbd.el
index 1a5e793..339930a 100644
--- a/hib-kbd.el
+++ b/hib-kbd.el
@@ -34,34 +34,52 @@
 ;;; ************************************************************************
   
 (defact kbd-key (key-sequence)
-  "Executes the command binding or the Hyperbole minibuffer menu action for 
KEY-SEQUENCE, delimited by {}.
-Returns t if this is a valid KEY-SEQUENCE, else nil."
+  "Executes a normalized key sequence without curly braces, {}.
+KEY-SEQUENCE must be a string of one of the following:
+  a Hyperbole minibuffer menu item key sequence,
+  a HyControl key sequence,
+  a M-x extended command,
+  or a valid key sequence together with its interactive arguments.
+
+Returns t if the sequence appears to be valid, else nil."
   (interactive "kKey sequence to execute (no {}): ")
   (kbd-key:act key-sequence))
 
 (defib kbd-key ()
-  "Executes a key sequence delimited by curly braces.
+  "Executes a key sequence found around point, delimited by curly braces, {}, 
if any.
 Key sequences should be in human readable form, e.g. {C-x C-b}, or what 
`key-description' returns.
-Forms such as {\C-b}, {\^b}, and {^b} will not be recognized."
+Forms such as {\C-b}, {\^b}, and {^b} will not be recognized.
+
+Any key sequence must be a string of one of the following:
+  a Hyperbole minibuffer menu item key sequence,
+  a HyControl key sequence,
+  a M-x extended command,
+  or a valid key sequence together with its interactive arguments."
   (unless (or (br-in-browser)
              (and (looking-at "[{}]") (/= ?\\ (preceding-char))))
     (let* ((seq-and-pos (or (hbut:label-p t "{`" "'}" t)
                            (hbut:label-p t "{" "}" t)
+                           ;; Regular dual single quotes (Texinfo smart quotes)
+                           (hbut:label-p t "``" "''" t)
                            ;; Typical GNU manual key sequences; note
                            ;; these are special quote marks, not the
                            ;; standard ASCII characters.
                            (hbut:label-p t "‘" "’" t)))
           (key-sequence (car seq-and-pos))
+          (start (cadr seq-and-pos))
           binding)
-      (when (and (stringp key-sequence)
-                (not (eq key-sequence "")))
-       (setq key-sequence (kbd-key:normalize key-sequence)
-             binding (key-binding key-sequence)))
-      (and (if binding
-              (not (integerp binding))
-            (kbd-key:hyperbole-mini-menu-key-p key-sequence))
-          (ibut:label-set seq-and-pos)
-          (hact 'kbd-key key-sequence)))))
+      ;; Match only when start delimiter is preceded by whitespace or
+      ;; is the 1st buffer character, so do not match to things like 
${variable}.
+      (when (= (char-syntax (or (char-before start) ?\t)) ?\ )
+       (when (and (stringp key-sequence)
+                  (not (eq key-sequence "")))
+         (setq key-sequence (kbd-key:normalize key-sequence)
+               binding (key-binding key-sequence)))
+       (and (stringp key-sequence)
+            (or (and binding (not (integerp binding)))
+                (kbd-key:special-sequence-p key-sequence))
+            (ibut:label-set seq-and-pos)
+            (hact 'kbd-key key-sequence))))))
 
 ;;; ************************************************************************
 ;;; Public functions
@@ -71,13 +89,14 @@ Forms such as {\C-b}, {\^b}, and {^b} will not be 
recognized."
   "Executes the command binding for normalized KEY-SEQUENCE.
 Returns t if KEY-SEQUENCE has a binding, else nil."
   (interactive "kKeyboard key to execute (no {}): ")
-  (setq current-prefix-arg nil) ;; kbd-key:normalize below sets it.
+  (setq current-prefix-arg nil) ;; Execution of the key-sequence may set it.
   (let ((binding (key-binding key-sequence)))
     (cond ((null binding)
-          ;; If this is a Hyperbole minibuffer menu item key sequence, execute 
it
-          ;; by adding its keys to the stream of unread command events.
-          (if (kbd-key:hyperbole-mini-menu-key-p key-sequence)
-              (setq unread-command-events (nconc unread-command-events (mapcar 
'identity key-sequence)))))
+          ;; If this is a special key seqence, execute it by adding
+          ;; its keys to the stream of unread command events.
+          (when (kbd-key:special-sequence-p key-sequence)
+            (setq unread-command-events (nconc unread-command-events (mapcar 
'identity key-sequence)))
+            t))
          ((memq binding '(action-key action-mouse-key hkey-either))
           (beep)
           (message "(kbd-key:act): This key does what the Action Key does.")
@@ -114,49 +133,56 @@ With optional prefix arg FULL, displays full 
documentation for command."
   (let ((kbd-key (hbut:key-to-label (hattr:get but 'lbl-key))))
     (if kbd-key (kbd-key:doc kbd-key t))))
 
-(defun kbd-key:hyperbole-mini-menu-key-p (key-sequence)
-  "Returns t if normalized KEY-SEQUENCE appears to invoke a Hyperbole menu 
item, else nil."
-  (when key-sequence
-    (let ((mini-menu-key (kbd-key:normalize (key-description (car 
(where-is-internal 'hyperbole))))))
-      (if (string-match (regexp-quote mini-menu-key) key-sequence) t))))
-
 (defun kbd-key:normalize (key-sequence)
-  "Returns KEY-SEQUENCE string normalized into a form that can be parsed by 
commands."
+  "Returns KEY-SEQUENCE string (without surrounding {}) normalized into a form 
that can be parsed by commands."
   (interactive "kKeyboard key sequence to normalize (no {}): ")
   (if (stringp key-sequence)
       (let ((norm-key-seq (copy-sequence key-sequence))
-           (case-fold-search nil) (case-replace t))
-       ;; Quote Control and Meta key names
+           (case-fold-search nil)
+           (case-replace t)
+           (substring)
+           (arg))
        (setq norm-key-seq (hypb:replace-match-string
-                           "[ \t\n\r]+" norm-key-seq "" t)
+                           "@key{DEL}\\|<DEL>\\|\\<DEL\\>" norm-key-seq "\177" 
t)
+             norm-key-seq (hypb:replace-match-string
+                           
"@key{RET}\\|<RET>\\|@key{RTN}\\|\\<RETURN\\>\\|\\<RET\\>\\|\\<RTN\\>"
+                           norm-key-seq "address@hidden" t)
              norm-key-seq (hypb:replace-match-string
-                           "@key{SPC}\\|<SPC>\\|SPC" norm-key-seq "\040" t)
+                           "\\<ESC\s-*ESC\\>" norm-key-seq "\233" t)
              norm-key-seq (hypb:replace-match-string
-                           "@key{DEL}\\|<DEL>\\|DEL" norm-key-seq "\177" t)
+                           "@key{ESC}\\|<ESC>\\|\\<ESC\\(APE\\)?\\>" 
norm-key-seq "M-" t)
              norm-key-seq (hypb:replace-match-string
-                           "@key{RET}\\|<RET>\\|@key{RTN}\\|RETURN\\|RET\\|RTN"
-                           norm-key-seq "\015" t)
+                           "C-M-" norm-key-seq "M-C-" t)
+             norm-key-seq (kbd-key:mark-spaces-to-keep norm-key-seq "(" ")")
+             norm-key-seq (kbd-key:mark-spaces-to-keep norm-key-seq "\\[" 
"\\]")
+             norm-key-seq (kbd-key:mark-spaces-to-keep norm-key-seq "<" ">")
+             norm-key-seq (kbd-key:mark-spaces-to-keep norm-key-seq "\"" "\"")
+             norm-key-seq (hypb:replace-match-string "\\\\ " norm-key-seq 
"\0\0\0" t)
              norm-key-seq (hypb:replace-match-string
-                           "ESCESC" norm-key-seq "\233" t)
+                           "[ \t\n\r]+" norm-key-seq "" t)
              norm-key-seq (hypb:replace-match-string
-                           "@key{ESC}\\|<ESC>\\|ESC" norm-key-seq "M-" t)
+                           "\0\0\0\\|@key{SPC}\\|<SPC>\\|\\<SPC\\>" 
norm-key-seq "\040" t)
+             norm-key-seq (hypb:replace-match-string "address@hidden" 
norm-key-seq "\015" t)
              ;; Unqote special {} chars.
              norm-key-seq (hypb:replace-match-string "\\\\\\([{}]\\)"
                                                      norm-key-seq "\\1"))
        (while (string-match "\\`\\(C-u\\|M-\\)\\(-?[0-9]+\\)" norm-key-seq)
-         (setq current-prefix-arg
+         (setq arg
                (string-to-number (substring norm-key-seq (match-beginning 2)
                                             (match-end 2)))
                norm-key-seq (substring norm-key-seq (match-end 0))))
        (let (arg-val)
          (while (string-match "\\`C-u" norm-key-seq)
-           (if (or (not (listp current-prefix-arg))
-                   (not (integerp (setq arg-val (car current-prefix-arg)))))
-               (setq current-prefix-arg '(1)
+           (if (or (not (listp arg))
+                   (not (integerp (setq arg-val (car arg)))))
+               (setq arg '(1)
                      arg-val 1))
            (setq arg-val (* arg-val 4)
-                 current-prefix-arg (cons arg-val nil)
+                 arg (cons arg-val nil)
                  norm-key-seq (substring norm-key-seq (match-end 0)))))
+       (if arg (setq norm-key-seq (concat (format "\025%s" arg) norm-key-seq)))
+       ;;
+       ;; Quote Control and Meta key names
        (setq norm-key-seq (hypb:replace-match-string
                            "C-\\(.\\)" norm-key-seq
                            (lambda (str)
@@ -169,12 +195,83 @@ With optional prefix arg FULL, displays full 
documentation for command."
              norm-key-seq (hypb:replace-match-string
                            "M-\\(.\\)" norm-key-seq
                            (lambda (str)
-                             (char-to-string (+ (downcase (string-to-char
-                                                           (substring str 
(match-beginning 1)
-                                                                      (1+ 
(match-beginning 1)))))
-                                                128))))))
+                             (concat "" (substring str (match-beginning 1)
+                                                     (1+ (match-beginning 
1))))))))
     (error "(kbd-key:normalize): requires a string argument, not `%s'" 
key-sequence)))
 
+;;; ************************************************************************
+;;; Private functions
+;;; ************************************************************************
+
+(defun kbd-key:extended-command-p (key-sequence)
+  "Returns non-nil if the string KEY-SEQUENCE is a normalized extended command 
invocation, i.e. M-x command."
+  (and (stringp key-sequence) (string-match kbd-key:extended-command-prefix 
key-sequence)))
+  
+(defun kbd-key:hyperbole-hycontrol-key-p (key-sequence)
+  "Returns t if normalized KEY-SEQUENCE is given when in a HyControl mode, 
else nil.
+Allows for multiple key sequences strung together."
+  (and key-sequence
+       (featurep 'hycontrol)
+       (or hycontrol-windows-mode hycontrol-frames-mode)
+       ;; If wanted to limit to single key bindings and provide tighter 
checking:
+       ;;   (string-match "[-.0-9]*\\(.*\\)" key-sequence)
+       ;;   (key-binding (match-string 1 key-sequence))
+       t))
+
+(defun kbd-key:hyperbole-mini-menu-key-p (key-sequence)
+  "Returns t if normalized KEY-SEQUENCE appears to invoke a Hyperbole menu 
item or sequence of keys, else nil."
+  (when key-sequence
+    (let ((mini-menu-key (kbd-key:normalize (key-description (car 
(where-is-internal 'hyperbole))))))
+      (if (string-match (regexp-quote mini-menu-key) key-sequence) t))))
+
+(defun kbd-key:key-and-arguments (key-sequence)
+  "Returns t if normalized KEY-SEQUENCE appears to be a bound key sequence 
possibly with following interactive arguments, else nil."
+  (let ((prefix-binding (and (stringp key-sequence) (key-binding (substring 
key-sequence 0 1)))))
+       ;; Just ensure that 1st character is bound to something that is
+       ;; not a self-insert-command or a number.
+    (and prefix-binding
+        (not (or (integerp prefix-binding)
+                 (eq prefix-binding 'self-insert-command)))
+        t)))
+
+(defun kbd-key:mark-spaces-to-keep (string start-delim end-delim)
+  "Return STRING with all spaces between any START-DELIM string and END-DELIM 
string marked for non-replacement."
+  (let ((regexp (format "\\(%s\\S-*\\)\\s-\\(.*%s\\)"
+                       start-delim end-delim))
+       (start 0)
+       (end)
+       (substring))
+    (while (string-match regexp string start)
+      (setq start (match-beginning 0)
+           end (match-end 0)
+           substring (match-string 0 string)
+           string (concat (substring string 0 start)
+                          (hypb:replace-match-string "\\s-" substring "\0\0\0" 
t)
+                          (if (< end (length string))
+                              (substring string end)
+                            ""))
+           start end))
+    string))
+
+(defun kbd-key:special-sequence-p (key-sequence)
+  "Returns non-nil if normalized KEY-SEQUENCE string is one of the following:
+  a Hyperbole minibuffer menu item key sequence,
+  a HyControl key sequence,
+  a M-x extended command,
+  or a valid key sequence together with its interactive arguments."
+  (or (kbd-key:hyperbole-mini-menu-key-p key-sequence)
+      (kbd-key:hyperbole-hycontrol-key-p key-sequence)
+      (kbd-key:extended-command-p key-sequence)
+      (kbd-key:key-and-arguments key-sequence)))
+
+;;; ************************************************************************
+;;; Private variables
+;;; ************************************************************************
+
+(defconst kbd-key:extended-command-prefix
+  (kbd-key:normalize (key-description (where-is-internal 
'execute-extended-command (current-global-map) t)))
+  "Normalized prefix string that invokes an extended command; typically ESC 
x.")
+
 (provide 'hib-kbd)
 
 ;;; hib-kbd.el ends here
diff --git a/hib-social.el b/hib-social.el
index 62e441d..2a00a75 100644
--- a/hib-social.el
+++ b/hib-social.el
@@ -1,4 +1,4 @@
-;;; hib-social.el --- Implicit button type for social media hashtag and 
username references
+;;; hib-social.el --- Implicit button type for social media/git hashtag and 
username references
 ;;
 ;; Author:       Bob Weiner
 ;;
@@ -12,15 +12,122 @@
 ;;; Commentary:
 ;;
 ;;   This defines an implicit button type, social-reference, that displays 
-;;   the web page associated with the given hashtag or username.
+;;   information (often a web page) associated with the given hashtag or 
username.
+;;   When the referent is a web page, this calls the function given by
+;;   `hibtypes-social-display-function' to display it, initially set to 
`browse-url'.
 ;;
-;;   A hashtag reference is either: [facebook|instagram|twitter]?#<hashtag>
-;;   or [fb|in|tw]?#<hashtag>.
+;;   A hashtag reference is either: 
[facebook|github|git|instagram|twitter]#<hashtag>
+;;   or using 2-letter service abbreviations: [fb|gh|gt|in|tw]#<hashtag>.
 ;;
-;;   A username reference is either: [facebook|instagram|twitter]?@<username>
-;;   or [fb|in|tw]?@<username>.
+;;   A username reference is either: 
[facebook|github|instagram|twitter]@<username>
+;;   or [fb|gh|in|tw]@<username>.
 ;;
-;;   If the social media service is not given, it defaults to \"twitter\".
+;;   If the social media service is not given, it defaults to the value of
+;;   `hibtypes-social-default-service', initially set to \"twitter\".
+;;
+;;   Below are a list of examples; simply press the Action Key on each one
+;;   to test it; use the Assist Key to see what it will do.  The git
+;;   examples require that you have a local git clone of the Hyperbole
+;;   repository.
+
+;;     address@hidden                             Display user's home page
+;;     address@hidden
+;;     address@hidden
+;;     address@hidden
+
+;;     fb#technology                             Display page of hashtag 
matches
+;;     in#art
+;;     tw#travel
+
+;;   Git (local) reference links
+;;
+;;     git#branches                              List branches in current 
repo/project
+;;     git#commits                               List and browse commits for 
current project
+;;     git#tags                                  List tags in current project
+;;
+;;     git#/hyperbole                            From any buffer, dired on the 
top
+;;                                               directory of the local 
hyperbole
+;;                                               project (notice no =)
+;; 
+;;     git#/hyperbole/55a1f0 or                  From any buffer, display 
hyperbole
+;;     git#hyperbole/55a1f0                      local git commit diff
+;;                                               
+;;     git#55a1f0                                Based on current 
default-directory,
+;;                                               display current repo's local 
git
+;;                                               commit diff; works when 
default-directory
+;;                                               is inside a git project with 
commit
+;;                                               hashtag 55a1f0
+;;
+;;     commit 55a1f0                             Commits listed in 'git log' 
output
+;;                                               also display diffs.
+;;
+;;     (setq hibtypes-git-default-project "hyperbole")
+;;     git#55a1f0                                From any buffer, once the 
above default
+;;                                               is set, display current 
project's local
+;;                                               git commit diff
+;;     git#master                                Show latest commit entry and 
diff for branch
+;;     git#hyperbole-6.0.2                       From any buffer, show the 
commit diff
+;;                                               for tag `hyperbole-6.0.2'
+;;
+;;     When you want to be more explicit, use:
+;;       
+;;       git#commit/55a1f0
+;;       git#branch/master
+;;       git#tag/hyperbole-6.0.2
+;;
+;;     To edit and view git managed files (note the =):
+;;
+;;       git#=hibtypes.el                        Edit any local git-versioned 
file
+;;                                               in another window; file must 
match
+;;                                               to the last part of a pathname
+;;       git#=partial-path/file
+;;       git#=/path/file                         Both work, constraining the 
lookup more.
+;;       git#=hyperbole.pdf                      Typically displays Hyperbole 
manual
+;;                                               in an external viewer
+;;
+;;       git#=master:hyperbole.el                View a file or other entity 
from a specific branch
+;;       git#=master:kotl/kview.el               View a branch file located in 
a project subdirectory
+;;
+
+
+;;   Github (remote) reference links
+;;
+;;     address@hidden                                 Display user's home page 
& projects
+;;
+;;     github#rswgnu/hyperbole                   Display user's project
+;;     gh#rswgnu/helm/global_mouse               Display user project's branch
+;;     gh#rswgnu/hyperbole/55a1f0                Display user project's commit 
diff
+;;
+;;     gh#orgs/github/people                     List the org, github's staff
+;;
+;;     (setq hibtypes-github-default-user "rswgnu")
+;;     github#/hyperbole                         Display default user's project
+;;
+;;
+;;     Once you set the default user and project variables, you can leave
+;;     them off any reference links:
+;;
+;;       (setq hibtypes-github-default-user "emacs-helm")
+;;       (setq hibtypes-github-default-project "helm")
+;;
+;;     like so:
+;;
+;;       gh#issues                               List emacs-helm/helm's open 
issues
+;;       gh#1878                                 Display a specific project 
issue
+;;
+;;       gh#pulls                                List project's open pull 
requests
+;;       gh#pull/1871                            Display a specific project 
pull request
+;;
+;;       gh#branches                             List project's branches
+;;       gh#branch/global_mouse                  List files in a specific 
branch
+;;       gh#global_mouse                         You can even leave off the 
`branch' keyword
+;;
+;;       gh#tags                                 List project's tagged 
commits, typically releases
+;;       gh#tag/v2.8.4 or gh#v2.8.4              List files in a specific 
tagged commit
+;;
+;;       gh#commits                              List project's commits
+;;       gh#898e55c                              Display default user and 
default
+;;                                               project commit diff
 
 ;;; Code:
 ;;; ************************************************************************
@@ -37,7 +144,11 @@
 
 (defcustom hibtypes-social-default-service "twitter"
   "Lowercase string matching the name of the default social media service to 
use when none is specified."
-  :type 'string
+  :type '(radio (const "facebook")
+               (const "git")
+               (const "github")
+               (const "instagram")
+               (const "twitter"))
   :group 'hyperbole-button)
 
 (defcustom hibtypes-social-display-function #'browse-url
@@ -45,24 +156,50 @@
   :type 'function
   :group 'hyperbole-button)
 
+(defcustom hibtypes-git-default-project nil
+  "Default project name to associate with any local git commit link."
+  :type 'string
+  :group 'hyperbole-button)
+
+(defcustom hibtypes-github-default-project nil
+  "Default project name to associate with any Github commit link."
+  :type 'string
+  :group 'hyperbole-button)
+
+(defcustom hibtypes-github-default-user nil
+  "Default user name to associate with any Github commit link."
+  :type 'string
+  :group 'hyperbole-button)
+
 ;;; ************************************************************************
 ;;; Private variables
 ;;; ************************************************************************
 
 (defconst hibtypes-social-hashtag-alist
-  '(("\\`\\(fb\\|facebook\\)\\'" . "https://www.facebook.com/hashtag/%s";)
-    ("\\`\\(tw\\|twitter\\)\\'" . 
"https://twitter.com/search?q=%%23%s&src=hashtag";)
-    ("\\`\\(in\\|instagram\\)\\'" . 
"https://www.instagram.com/explore/tags/%s/";))
-  "Alist of (social-media-service-regexp  . url-with-%s-for-hashtag) 
elements.")
+  '(("\\`\\(fb\\|facebook\\)\\'"  . "https://www.facebook.com/hashtag/%s";)
+    ("\\`\\(gh\\|github\\)\\'"    . "https://github.com/%s/%s/%s%s";)
+    ("\\`\\(gt\\|git\\)\\'"       . "(cd %s; git %s %s)")
+    ("\\`\\(in\\|instagram\\)\\'" . 
"https://www.instagram.com/explore/tags/%s/";)
+    ("\\`\\(tw\\|twitter\\)\\'"   . 
"https://twitter.com/search?q=%%23%s&src=hashtag";)
+)
+  "Alist of (social-media-service-regexp  . 
expression-to-display-hashtag-reference) elements.")
 
 (defconst hibtypes-social-username-alist
-  '(("\\`\\(fb\\|facebook\\)\\'" . "https://www.facebook.com/%s";)
-    ("\\`\\(tw\\|twitter\\)\\'" . "https://twitter.com/address@hidden";)
-    ("\\`\\(in\\|instagram\\)\\'" . "https://www.instagram.com/%s/";))
+  '(("\\`\\(fb\\|facebook\\)\\'"  . "https://www.facebook.com/%s";)
+    ("\\`\\(gh\\|github\\)\\'"    . "https://github.com/%s/";)
+    ("\\`\\(in\\|instagram\\)\\'" . "https://www.instagram.com/%s/";)
+    ("\\`\\(tw\\|twitter\\)\\'"   . "https://twitter.com/address@hidden";)
+    )
   "Alist of (social-media-service-regexp  . url-with-%s-for-username) 
elements.")
 
-(defconst hibtypes-social-regexp 
"\\([[:alpha:]]*\\)\\(address@hidden)\\([._[:alnum:]]*[_[:alnum:]]\\)"
-  "Regular expression that matches a social media hashtag or username 
reference.
+;; Assume at least a 2-character project name
+(defconst hibtypes-git-project-regexp 
"/?[[:alnum:]]+[-=._/[:alnum:]]*[-=_[:alnum:]]")
+(defconst hibtypes-git-file-regexp "=[-=.:_/[:alnum:]]*[-=_/[:alnum:]]")
+
+(defconst hibtypes-social-regexp
+  (concat "\\([[:alpha:]]*\\)\\(address@hidden)"
+         "\\(" hibtypes-git-project-regexp "\\|" hibtypes-git-file-regexp 
"\\)")
+  "Regular expression that matches a social media/git hashtag or username 
reference.
 See `ibtypes::social-reference' for format details.")
 
 (defvar hibtypes-social-inhibit-modes '(texinfo-mode para-mode)
@@ -73,16 +210,18 @@ See `ibtypes::social-reference' for format details.")
 ;;; ************************************************************************
 
 (defib social-reference ()
-  "Displays the web page associated with a social media hashtag or username 
reference at point.
+  "Display the web page associated with a social hashtag or username reference 
at point.
 Reference format is:
-  [facebook|instagram|address@hidden<hashtag-or-username> or
-  [fb|in|address@hidden<hashtag-or-username>.
+  [facebook|git|github|instagram|address@hidden<reference> or
+  [fb|gt|gh|in|address@hidden<reference>.
 
 The first part of the label for a button of this type is the social
-media service name.  The service name defaults to the value of
+service name.  The service name defaults to the value of
 `hibtypes-social-default-service' (default value of \"twitter\")
 when not given, so #hashtag would be the same as twitter#hashtag.
 
+Local git references allow hashtags only, not username references.
+
 This will not match within any single line, single or
 double-quoted strings or within any buffer whose major mode is
 listed in `hibtypes-social-inhibit-modes'."
@@ -93,32 +232,413 @@ listed in `hibtypes-social-inhibit-modes'."
                      (and (eq major-mode 'markdown-mode)
                           (hargs:delimited "(" ")"))))
             (save-excursion
-              (if (looking-at "address@hidden:alnum:]]")
-                  (skip-chars-backward "address@hidden:alnum:]"))
+              (if (looking-at "address@hidden/.:_[:alnum:]]")
+                  (skip-chars-backward "address@hidden/.:_[:alnum:]"))
               (and (looking-at hibtypes-social-regexp)
+                   ;; Ensure prefix matches to a social web service
+                   (save-match-data
+                     (let ((ref (match-string-no-properties 1)))
+                       (delq nil (mapcar (lambda (regexp) (string-match regexp 
ref))
+                                         (mapcar #'car 
hibtypes-social-hashtag-alist)))))
+                   ;; Heuristic to ensure this is not an email address
                    (save-match-data
-                     ;; Heuristic to ensure this is not an email address
                      (not (and (looking-at mail-address-regexp)
                                (let ((case-fold-search t))
                                  (string-match mail-address-tld-regexp
                                                (match-string-no-properties 
1)))))))))
+
     (save-match-data
       (ibut:label-set (match-string-no-properties 0) (match-beginning 0) 
(match-end 0)))
-    (hact 'social-reference (match-string-no-properties 1)
-         (match-string-no-properties 2) (match-string-no-properties 3))))
+    (let ((ref (match-string-no-properties 0))
+         (service (match-string-no-properties 1))
+         (ref-kind-str (match-string-no-properties 2))
+         (after-hash-str (match-string-no-properties 3)))
+      (cond ((string-match "\\`\\(gt\\|git\\)#" ref)
+            (hact 'git-reference after-hash-str))
+           ((string-match "\\`\\(gh\\|github\\)#" ref)
+            (hact 'github-reference after-hash-str))
+           (t (hact 'social-reference service ref-kind-str after-hash-str))))))
 
-(defact social-reference (service ref-type-char hashtag-or-username)
-  "Display the web page at social media SERVICE for REF-TYPE-CHAR and 
HASHTAG-OR-USERNAME.
-REF-TYPE-CHAR is either \"#\" for a hashtag reference or \"@\" for a username 
reference."
+;; Don't make this a defact or its arguments may be improperly expanded as 
pathnames.
+(defun social-reference (service ref-kind-str hashtag-or-username)
+  "Display the web page at social media SERVICE for REF-KIND-STR and 
HASHTAG-OR-USERNAME.
+REF-KIND-STR is either \"#\" for a hashtag reference or \"@\" for a username 
reference."
   (if (or (null service) (equal service "")) (setq service 
hibtypes-social-default-service))
   (let ((case-fold-search t)
-       url-to-format)
-    (when (or (and (equal ref-type-char "#")
-                  (setq url-to-format
+       expr-to-format)
+    (when (or (and (equal ref-kind-str "#")
+                  (setq expr-to-format
                         (assoc-default service hibtypes-social-hashtag-alist 
#'string-match)))
-             (and (equal ref-type-char "@")
-                  (setq url-to-format
+             (and (equal ref-kind-str "@")
+                  (setq expr-to-format
                         (assoc-default service hibtypes-social-username-alist 
#'string-match))))
-      (funcall hibtypes-social-display-function (format url-to-format 
hashtag-or-username)))))
+      (if expr-to-format
+         (funcall hibtypes-social-display-function (format expr-to-format 
hashtag-or-username))
+       (error "(social-reference): Service `%s' does not support reference 
format, `%s%s'"
+              service ref-kind-str hashtag-or-username)))))
+
+;;; Remote Github commit references
+
+;; Don't make this a defact or its arguments may be improperly expanded as 
pathnames.
+(defun github-reference (reference &optional user project)
+  "Display the Github entity associated with REFERENCE and optional USER and 
PROJECT.
+REFERENCE is a string of one of the following forms:
+    <ref-item>
+    <user>/<project>/<ref-item>
+    <project>/<ref-item>
+or  /<project>.
+
+<ref-item> is one of these:
+  one of the words: branches, commits, issues, pulls, or tags; the associated 
items are listed;
+
+  one of the words: branch, commit, issue, pull or tag followed by a '/' and
+  item id; the item is shown;
+
+  an issue reference given by a positive integer, e.g. 92 or prefaced with 
GH-, e.g. GH-92;
+  the issue is displayed;
+
+  a commit reference given by a hex number, 55a1f0; the commit diff is 
displayed;
+
+  a branch or tag reference given by an alphanumeric name, e.g. hyper20; the
+  files in the branch are listed.
+
+USER defaults to the value of `hibtypes-github-default-user'.
+If given, PROJECT overrides any project value in REFERENCE.  If no
+PROJECT value is provided, it defaults to the value of
+`hibtypes-github-default-project'."
+  (cond ((or (null reference) (equal reference ""))
+        (error "(github-reference): Github reference must not be empty"))
+       ((equal reference "status")
+        (funcall hibtypes-social-display-function "https://status.github.com";))
+       (t (let ((case-fold-search t)
+                (url-to-format (assoc-default "github" 
hibtypes-social-hashtag-alist #'string-match))
+                (ref-type))
+            (when url-to-format
+              (cond ((string-match 
"\\`\\(branch\\|commit\\|issue\\|pull\\|tag\\)/" reference)
+                     ;; [branch | commit | issue | pull | tag]/ref-item
+                     nil)
+                    ((string-match 
"\\`/?\\(\\([^/address@hidden)/\\)\\([^/address@hidden)\\'" reference)
+                     ;; /?user/project
+                     (setq user (or user (match-string-no-properties 2 
reference))
+                           project (or project (match-string-no-properties 3 
reference))
+                           reference nil))
+                    ((string-match 
"\\`/?\\(\\([^/address@hidden)/\\)?\\([^/address@hidden)/\\(address@hidden)\\'" 
reference)
+                     ;; /?[user/]project/ref-item
+                     (setq user (or user (match-string-no-properties 2 
reference))
+                           project (or project (match-string-no-properties 3 
reference))
+                           reference (match-string-no-properties 4 reference)))
+                    ((string-match "\\`/\\([^/address@hidden)\\'" reference)
+                     ;; /project
+                     (setq project (or project (match-string-no-properties 1 
reference))
+                           reference nil)))
+              (unless (stringp user) (setq user hibtypes-github-default-user))
+              (unless (stringp project) (setq project 
hibtypes-github-default-project))
+              (when reference
+                (cond ((equal user "orgs")
+                       ;; A specific organization reference
+                       (setq ref-type reference
+                             reference ""))
+                      ((member reference '("branches" "commits" "issues" 
"pulls" "tags"))
+                       ;; All branches, commits, open issues, pull requests or 
commit tags reference
+                       (setq ref-type reference
+                             reference ""))
+                      ((and (< (length reference) 7) (string-match 
"\\`\\([gG][hH]-\\)?[0-9]+\\'" reference))
+                       ;; Specific issue reference
+                       (setq ref-type "issues/"))
+                      ((string-match "\\`\\(commit\\|issue\\|pull\\)/" 
reference)
+                       ;; Specific reference preceded by keyword branch, 
commit,
+                       ;; issue, or pull
+                       (setq ref-type (substring reference 0 (match-end 0))
+                             reference (substring reference (match-end 0))))
+                      ((string-match "\\`[0-9a-f]+\\'" reference)
+                       ;; Commit reference
+                       (setq ref-type "commit/"))
+                      (t
+                       ;; Specific branch or commit tag reference
+                       (setq ref-type "tree/")
+                       (when (string-match "\\`\\(branch\\|tag\\)/" reference)
+                         ;; If preceded by optional keyword, remove that from 
the reference.
+                         (setq reference (substring reference (match-end 
0)))))))
+              (if (and (stringp user) (stringp project))
+                  (funcall hibtypes-social-display-function
+                           (if reference
+                               (format url-to-format user project ref-type 
reference)
+                             (format url-to-format user project "" "")))
+                (cond ((and (null user) (null project))
+                       (error "(github-reference): Set 
`hibtypes-github-default-user' and `hibtypes-github-default-project'"))
+                      ((null user)
+                       (error "(github-reference): Set 
`hibtypes-github-default-user'"))
+                      (t
+                       (error "(github-reference): Set 
`hibtypes-github-default-project'")))))
+            (unless url-to-format
+              (error "(github-reference): Add an entry for github to 
`hibtypes-social-hashtag-alist'"))))))
+
+;;; Local git repository commit references
+
+(defib git-commit-reference ()
+  "Display the diff for a git commit reference, e.g. \"commit a55e21\", 
typically produced by git log."
+  (if (save-excursion
+       (beginning-of-line)
+       (looking-at "\\s-*commit \\([0-9a-f]+\\)$"))
+      (hact #'git-reference (match-string-no-properties 1))))
+
+(defvar hibtypes-git-repos-cache 
+  (expand-file-name "Local-Git-Repos" hbmap:dir-user)
+  "Filename of cache of local git repository directories found by 
`locate-command'.")
+
+(defun hibtypes-git-get-locate-command ()
+  (require 'locate)
+  (let ((cmd (if (string-match "locate" locate-command) locate-command 
"locate")))
+    (if (executable-find cmd)
+       cmd
+      (error "(git-reference): \"locate\" command required but not found; see 
its man page for setup instructions"))))
+
+(defun hibtypes-git-build-repos-cache (&optional prompt-flag)
+  "Store cache of local git repo directories in `hibtypes-git-repos-cache'.
+With optional prompt-flag non-nil, prompt user whether to build the cache 
before building.
+Return t if built, nil otherwise."
+  (when (or (not prompt-flag)
+           (y-or-n-p "Find all local git repositories (will take some time)?"))
+    (message "Please wait while all local git repositories are found...")
+    (unless (zerop (shell-command (format "%s -r '/\.git$' | sed -e 
's+/.git$++' > %s"
+                                         (hibtypes-git-get-locate-command)
+                                         hibtypes-git-repos-cache)))
+      (error "(hibtypes-git-build-repos-cache): Cache build failed; 
`locate-command' must accept `-r' argument for regexp matching"))
+    (message "Please wait while all local git repositories are found...Done")
+    t))
+
+(defun hibtypes-git-add-project-to-repos-cache (project)
+  "Locate PROJECT directory and add to the cache of local git repo directories 
in `hibtypes-git-repos-cache'.
+Return the project directory found or nil if none."
+  (message "Please wait while %s's local git repository is found..." project)
+  (let ((project-dir (shell-command-to-string
+                     (format "%s -l1 /%s/.git | sed -e 's+/.git++' | tr -d 
'\n'"
+                             (hibtypes-git-get-locate-command)
+                             project))))
+    (message "")
+    (when (and (> (length project-dir) 0) (= ?/ (aref project-dir 0)))
+      ;; project-dir a directory, prepend it to the cache file...
+      (shell-command-to-string (format "echo -e \"%s\n$(cat %s)\" > %s"
+                                      project-dir hibtypes-git-repos-cache
+                                      hibtypes-git-repos-cache))
+      ;; ...and return it.
+      project-dir)))
+
+(defun hibtypes-git-build-or-add-to-repos-cache (project &optional prompt-flag)
+  "Store cache of local git repo directories in `hibtypes-git-repos-cache'.
+With optional prompt-flag non-nil, prompt user whether to build the cache 
before building.
+Return t if built, nil otherwise."
+  (if (and (file-readable-p hibtypes-git-repos-cache)
+          ;; Non-zero file size
+          (not (zerop (nth 7 (file-attributes hibtypes-git-repos-cache)))))
+      (hibtypes-git-add-project-to-repos-cache project)
+    (hibtypes-git-build-repos-cache t)))
+
+(defun hibtypes-git-project-directory (project)
+  "Given git PROJECT name, return local git repository directory or nil if 
none found."
+  (if (or (and (file-readable-p hibtypes-git-repos-cache)
+              ;; Non-zero file size
+              (not (zerop (nth 7 (file-attributes hibtypes-git-repos-cache)))))
+         (hibtypes-git-build-repos-cache t))
+      ;; echo -n deletes trailing newline
+      (shell-command-to-string (format "grep -m1 '/%s$' %s | tr -d '\n'" 
project hibtypes-git-repos-cache))
+    (message "")
+    nil))
+
+;; Pseudo-code for next action definition:
+;;  1. If within a git repo directory, use that repo unless specified in path
+;;  2. If project name is given or is default, see if assocated repo dir is in 
cache and use it.
+;;  3. Prompt to rebuild locate db and then goto 2 if yes else quit
+;;  4. Run: (cd <dir-found>; git <cmd> <item>)
+;;  5. Otherwise, do nothing.
+;;
+;; Don't make this a defact or its arguments may be improperly expanded as 
pathnames.
+(defun git-reference (reference &optional project)
+  "Display the git entity associated with REFERENCE and optional PROJECT.
+REFERENCE is a string of one of the following forms:
+    <ref-item>
+    /?<project>/<ref-item>
+or  /<project>.
+
+<ref-item> is one of these:
+  one of the words: branches, commits, or tags; the associated items are 
listed;
+
+  one of the words: branch, commit, or tag followed by a '/' and item id; the 
item is shown;
+
+  a commit reference given by a hex number, 55a1f0; the commit diff is 
displayed;
+
+  a branch or tag reference given by an alphanumeric name, e.g. hyper20; the
+  files in the branch are listed.
+
+If given, PROJECT overrides any project value in REFERENCE.  If no
+PROJECT value is provided, it defaults to the value of
+`hibtypes-git-default-project'."
+  (cond ((or (null reference) (equal reference ""))
+        (error "(git-reference): Git commit hashtag must not be empty"))
+       ((string-match "\\`=\\([^:address@hidden)\\'" reference)
+        ;; =file
+        (git-find-file (match-string-no-properties 1 reference)))
+       (t (let ((case-fold-search t)
+                (shell-cmd-to-format (assoc-default "git" 
hibtypes-social-hashtag-alist #'string-match)))
+            (when shell-cmd-to-format
+              (cond ((string-match "\\`\\(=\\)\\|\\(branch\\|commit\\|tag\\)/" 
reference)
+                     ;; [branch | commit | tag]/ref-item
+                     nil)
+                    ((string-match 
"\\`/?\\([^/address@hidden)/\\([0-9a-f]+\\)\\'" reference)
+                     ;; /?project/hashtag
+                     (setq project (or project (match-string-no-properties 1 
reference))
+                           reference (match-string-no-properties 2 reference)))
+                    ((string-match "\\`/\\([^/address@hidden)\\'" reference)
+                     ;; /project
+                     (setq project (or project (match-string-no-properties 1 
reference))
+                           reference nil))
+                    ((string-match "/.*/" reference)
+                     ;; Invalid user/project/hashtag
+                     (error "(git-reference): Username or path not allowed, 
only <project>/<commit hashtag>")))
+              (let ((cmd)
+                    (ref-type)
+                    ;; `project' now may be a project directory or a project 
name.
+                    ;; If a project name:
+                    ;;   If reference is within a git project, use its project 
directory.
+                    ;;   Otherwise, look up the project in Hyperbole's local 
git repo directory cache;
+                    ;;   the user is prompted to have it built when necessary.
+                    (project-dir (or (and project (file-readable-p project) 
(file-directory-p project) project)
+                                     (locate-dominating-file default-directory 
".git"))))
+                (unless (or (stringp project) (= (aref reference 0) ?=))
+                  (unless (setq project (cond (project-dir 
(file-name-nondirectory (directory-file-name project-dir)))
+                                              ((stringp 
hibtypes-git-default-project)
+                                               hibtypes-git-default-project)))
+                    (error "(git-reference): Set 
`hibtypes-git-default-project' to a default project name")))
+                (unless project-dir
+                  (setq project-dir (and project 
(hibtypes-git-project-directory project))))
+                (when reference
+                  (cond ((member reference '("branches" "commits" "tags"))
+                         ;; All branches, commits or commit tags reference
+                         (setq ref-type reference
+                               reference ""))
+                        ((string-match "\\`=?\\(commit\\)/" reference)
+                         ;; Specific reference preceded by keyword commit.
+                         (setq ref-type "commit"
+                               reference (substring reference (match-end 0))))
+                        ((string-match "\\`=?[0-9a-f]+\\'" reference)
+                         ;; Commit reference
+                         (setq ref-type "commit"))
+                        ((string-match "\\`\\(=?\\(branch\\|tag\\)/\\)\\|=" 
reference)
+                         ;; Specific branch or commit tag reference
+                         (setq ref-type "tree"
+                               reference (substring reference (match-end 0)))
+                         ;; reference now might be branch-name:subpath or just 
branch-name.
+                         ;; (subpath by itself was handled by git-find-file up 
above).
+                         ;; If reference contains subpath, expand it with 
hibtypes-git-find.
+                         (let (branch-name
+                               file
+                               path)
+                           (if (string-match ":" reference)
+                               (setq branch-name (substring reference 0 
(match-beginning 0))
+                                     file (substring reference (match-end 0))
+                                     path (hibtypes-git-find file)
+                                     reference (concat branch-name ":" file))
+                             (setq path default-directory))
+                           (setq project-dir (or project-dir (and path 
(locate-dominating-file path ".git")))
+                                 project (or project (and project-dir 
(file-name-nondirectory project-dir))
+                                             hibtypes-git-default-project))))
+                        (t
+                         (setq ref-type "tree"))))
+                (when (or (null project-dir) (equal project-dir ""))
+                  (if (and project
+                           ;; Maybe the Hyperbole git project cache is
+                           ;; out-of-date and needs to be rebuilt or added
+                           ;; to.  Prompt user and if rebuilt or added to,
+                           ;; continue.
+                           (hibtypes-git-build-or-add-to-repos-cache project 
t))
+                      (setq project-dir (and project 
(hibtypes-git-project-directory project)))
+                    (error "(git-reference): No git directory found for 
project `%s'" project)))
+                (when (equal project-dir "") (setq project-dir nil))
+                (cond ((and project-dir (file-readable-p project-dir) 
(file-directory-p project-dir))
+                       (if reference
+                           (if (and (equal ref-type "commits") (fboundp 
'vc-print-root-log))
+                               (let ((default-directory project-dir))
+                                 (vc-print-root-log))
+                             ;; Display commit diffs in a help buffer
+                             ;; Ensure these do not invoke 
with-output-to-temp-buffer a second time.
+                             (let ((temp-buffer-show-hook)
+                                   (temp-buffer-show-function))
+                               (setq cmd
+                                     (pcase ref-type
+                                       ("branches" (format shell-cmd-to-format 
project-dir "branch -la" ""))
+                                       ("commits"  (format shell-cmd-to-format 
project-dir "log --abbrev-commit --pretty=oneline" ""))
+                                       ("tags"     (format shell-cmd-to-format 
project-dir "tag -l" ""))
+                                       (_          (format shell-cmd-to-format 
project-dir "show" reference))))
+                               (with-help-window (format "*git%s%s %s%s%s*"
+                                                         (if (equal project 
"") "" " ")
+                                                         project ref-type
+                                                         (if (equal reference 
"") "" " ")
+                                                         reference)
+                                 (princ (format "Command: %s\n\n" cmd))
+                                 (princ (shell-command-to-string cmd)))))
+                         ;; Project-only reference, run dired on the project 
home directory
+                         (hpath:display-buffer (dired-noselect
+                                                (file-name-as-directory 
project-dir)))))
+                      (t (if project-dir
+                             (error "(git-reference): git project `%s' 
directory is unreadable or invalid: \"%s\""
+                                    project project-dir)
+                           (error "(git-reference): No git project found for 
`%s'" project))))))))))
+
+(defun hibtypes-git-find-execute (format-prefix find-dir file)
+  "Build and execute a shell command to find a matching git-versioned file.
+Return nil if no matching file is found."
+  (let ((path
+        (shell-command-to-string
+         (format (concat
+                  ;; Ignore any errors for non-existing paths
+                  "%s %s -path '*/.git' -prune -o -path '*%s' -print 2> 
/dev/null"
+                  ;; Choose the shortest matching path which is usually the 
best guess.
+                  " | awk '{ print length($0) \"\t\" $0 }' - | sort -n | head 
-n 1 | cut -f2- | tr -d '\n'")
+                 format-prefix find-dir file))))
+    (and (stringp path) (> (length path) 0) path)))
+
+(defun hibtypes-git-find (file)
+  "Return the shortest pathname matching git-versioned FILE name.
+
+Search for matches in this order: (1) the git repository of the current
+directory, if any; (2) the git repository of project 
`hibtypes-git-default-project'
+if not nil;  (3) the list of locally cached git repositories in 
`hibtypes-git-repos-cache'.
+
+Return nil if no match is found."
+  (let (root)
+    (cond
+     ;; Try to find in current directory tree first...
+     ((and (fboundp 'locate-dominating-file)
+          (setq root (locate-dominating-file default-directory ".git"))
+          (hibtypes-git-find-execute "find" root file)))
+     ;; then in default project tree...
+     ((and hibtypes-git-default-project
+          (setq root (hibtypes-git-project-directory 
hibtypes-git-default-project))
+          (hibtypes-git-find-execute "find" root file)))
+     ;; then in any of list of cached project trees...
+     ((or (and (file-readable-p hibtypes-git-repos-cache)
+              (not (zerop (nth 7 (file-attributes 
hibtypes-git-repos-cache))))) ; Non-zero file size
+         (hibtypes-git-build-repos-cache t))
+      (hibtypes-git-find-execute (format "cat '%s' | xargs -I{} find" 
hibtypes-git-repos-cache)
+                                "'{}'"
+                                file))
+     ;; otherwise, fail.
+     (t (message "") ; Clear any potential message from building the cache.
+       nil))))
+
+(defun git-find-file (file)
+  "Locate and edit the named FILE with the shortest git-versioned pathname, 
typically in another window.
+Uses `hpath:find' to display the FILE.  FILE must not have any path component.
+
+If the current directory is in a git repository, search only that one;
+otherwise, search all known local repositories.  Signal an error if no match
+is found."
+  (interactive "sFind git-versioned file: ")
+  (let ((path (hibtypes-git-find file)))
+    (if path
+       (progn (message path)
+              (hpath:find path))
+      (error "(git-find-file): `%s' not found in any local git repository" 
file))))
+
 
 (provide 'hib-social)
diff --git a/hibtypes.el b/hibtypes.el
index 41ab6b0..c908cc5 100644
--- a/hibtypes.el
+++ b/hibtypes.el
@@ -70,6 +70,56 @@
 (require 'hsys-org)
 
 ;;; ========================================================================
+;;; Composes mail, in another window, to the e-mail address at point.
+;;; ========================================================================
+
+(defvar mail-address-mode-list
+  '(emacs-lisp-mode lisp-interaction-mode lisp-mode scheme-mode c-mode
+    c++-mode html-mode java-mode js2-mode objc-mode python-mode
+    smalltalk-mode fundamental-mode text-mode indented-text-mode web-mode) 
+  "List of major modes in which mail address implicit buttons are active.")
+
+(defun mail-address-at-p ()
+  "Return e-mail address, a string, that point is within or nil."
+  (let ((case-fold-search t))
+    (save-excursion
+      (skip-chars-backward "^ \t\n\r\f\"\'(){}[];:<>|")
+      (and (or (looking-at mail-address-regexp)
+              (looking-at (concat "mailto:"; mail-address-regexp)))
+          (save-match-data
+            (string-match mail-address-tld-regexp (match-string-no-properties 
1)))
+          (match-string-no-properties 1)))))
+
+(defib mail-address ()
+  "If on an e-mail address in a specific buffer type, compose mail to that 
address in another window.
+Applies to any major mode in `mail-address-mode-list', the HyRolo match buffer,
+any buffer attached to a file in `hyrolo-file-list', or any buffer with
+\"mail\" or \"rolo\" (case-insensitive) within its name."
+  (if (let ((case-fold-search t))
+       (or
+        (and (memq major-mode mail-address-mode-list)
+             (not (string-match "-Elements\\'" (buffer-name)))
+             ;; Don't want this to trigger within an OOBR-FTR buffer.
+             (not (string-match "\\`\\(OOBR.*-FTR\\|oobr.*-ftr\\)"
+                                (buffer-name)))
+             (not (string-equal "*Implementors*" (buffer-name))))
+        (and
+         (string-match "mail\\|rolo" (buffer-name))
+         ;; Don't want this to trigger in a mail/news summary buffer.
+         (not (or (hmail:lister-p) (hnews:lister-p))))
+        (if (boundp 'hyrolo-display-buffer)
+            (equal (buffer-name) hyrolo-display-buffer))
+        (and buffer-file-name
+             (boundp 'hyrolo-file-list)
+             (set:member (current-buffer)
+                         (mapcar 'get-file-buffer hyrolo-file-list)))))
+      (let ((address (mail-address-at-p)))
+       (if address
+           (progn
+             (ibut:label-set address (match-beginning 1) (match-end 1))
+             (hact 'mail-other-window nil address))))))
+
+;;; ========================================================================
 ;;; Displays files and directories when a valid pathname is activated.
 ;;; ========================================================================
 
@@ -85,9 +135,11 @@ See `hpath:suffixes' variable documentation for suffixes 
that are added to or
 removed from pathname when searching for a valid match.
 See `hpath:find' function documentation for special file display options."
   ;;
-  ;; Ignore paths in Buffer menu and dired modes.
-  (unless (delq nil (mapcar (lambda (substring) (string-match substring 
mode-name))
-                    '("Buffer Menu" "IBuffer" "Dired")))
+  ;; Ignore paths in Buffer menu, dired and helm modes.
+  (unless (or (eq major-mode 'helm-major-mode)
+             (delq nil (mapcar (lambda (substring) (string-match
+                                                    substring 
(format-mode-line mode-name)))
+                               '("Buffer Menu" "IBuffer" "Dired"))))
     (let ((path (hpath:at-p))
          full-path)
       (if path
@@ -96,13 +148,15 @@ See `hpath:find' function documentation for special file 
display options."
        ;;
        ;; Match to Emacs Lisp and Info files without any directory component.
        (if (setq path (hpath:delimited-possible-path))
-           (cond ((string-match "\\`[^\\\\/~]+\\.elc?\\'" path)
+           (cond ((string-match "\\`[^\\\\/~]+\\.elc?\\(\\.gz\\)?\\'" path)
                   (ibut:label-set path)
-                  (setq full-path (locate-library path))
-                  (if full-path
-                      (hact 'link-to-file full-path)
-                    (hact 'error "(pathname): \"%s\" not found in `load-path'"
-                                 path)))
+                  (if (string-match hpath:prefix-regexp path)
+                      (hact 'hpath:find path)
+                    (setq full-path (locate-library path))
+                    (if full-path
+                        (hact 'link-to-file full-path)
+                      (hact 'error "(pathname): \"%s\" not found in 
`load-path'"
+                            path))))
                  ;; Match only if "(filename)" references a valid Info file
                  ;; and point is within the filename, not on any delimiters
                  ;; so that delimited thing matches trigger later.
@@ -158,7 +212,7 @@ This triggers only when the \"func-menu.el\" library has 
been loaded and the
 current major mode is one handled by func-menu."
   (if (and (boundp 'fume-function-name-regexp-alist)
           (assq major-mode fume-function-name-regexp-alist)
-          (not (eq major-mode 'dired-mode))
+          (not (derived-mode-p 'dired-mode))
           ;; Not sure if this is defined in early versions of Emacs.
           (fboundp 'skip-syntax-backward)
           ;; Prevent triggering when on method, class or function definition
@@ -210,38 +264,41 @@ current major mode is one handled by func-menu."
 ;;           (hact 'imenu-display-item-where item-name item-pos)))))))
 
 ;;; ========================================================================
-;;; Handles social media hashtag and username references, e.g. 
twitter#myhashtag
-;;; ========================================================================
-
-(require 'hib-social)
-
-;;; ========================================================================
-;;; Handles Gnu debbugs issue ids, e.g. bug#45678 or just 45678.
-;;; ========================================================================
-
-(require 'hib-debbugs)
-
-;;; ========================================================================
 ;;; Handles internal references within an annotated bibliography, delimiters=[]
 ;;; ========================================================================
 
 (defib annot-bib ()
   "Displays annotated bibliography entries referenced internally.
 References must be delimited by square brackets, must begin with a word
-constituent character, and must not be in buffers whose names begin with a
-` ' or `*' character or which do not have an attached file."
+constituent character, not contain @ or # characters, must not be
+in buffers whose names begin with a space or asterisk character, and
+must have an attached file."
   (and (not (bolp))
        buffer-file-name
        (let ((chr (aref (buffer-name) 0)))
         (not (or (eq chr ?\ ) (eq chr ?*))))
-       (not (memq major-mode '(c-mode objc-mode c++-mode java-mode 
markdown-mode)))
+       (not (or (derived-mode-p 'prog-mode)
+               (memq major-mode '(c-mode objc-mode c++-mode java-mode 
markdown-mode))))
        (let* ((ref-and-pos (hbut:label-p t "[" "]" t))
              (ref (car ref-and-pos)))
         (and ref (eq ?w (char-syntax (aref ref 0)))
+             (not (string-match "address@hidden" ref))
              (progn (ibut:label-set ref-and-pos)
                     (hact 'annot-bib ref))))))
 
 ;;; ========================================================================
+;;; Handles Gnu debbugs issue ids, e.g. bug#45678 or just 45678.
+;;; ========================================================================
+
+(require 'hib-debbugs)
+
+;;; ========================================================================
+;;; Handles social media hashtag and username references, e.g. 
twitter#myhashtag
+;;; ========================================================================
+
+(require 'hib-social)
+
+;;; ========================================================================
 ;;; Displays in-file Markdown link referents.
 ;;; ========================================================================
 
@@ -254,7 +311,7 @@ constituent character, and must not be in buffers whose 
names begin with a
       (cond ((markdown-link-p) 
             (condition-case ()
                 ;; Follows a reference link to its referent.
-                (progn (markdown-jump)
+                (progn (markdown-do)
                        (when (/= opoint (point))
                          (setq npoint (point))
                          (goto-char opoint)
@@ -416,8 +473,8 @@ pathname line or line preceding it, jumps to the associated 
file."
 (defib cscope ()
   "Jumps to C/C++ source line associated with Cscope C analyzer output line.
 Requires pre-loading of the cscope.el Lisp library available from the Emacs
-Lisp archives and the commercial cscope program available from UNIX System
-Laboratories.  Otherwise, does nothing."
+Lisp archives and the open source cscope program available from
+http://cscope.sf.net.  Otherwise, does nothing."
   (and (boundp 'cscope:bname-prefix)  ;; (featurep 'cscope)
        (stringp cscope:bname-prefix)
        (string-match (regexp-quote cscope:bname-prefix)
@@ -441,14 +498,14 @@ Laboratories.  Otherwise, does nothing."
 
 (defib text-toc ()
   "Jumps to the text file section referenced by a table of contents entry at 
point.
-File name must contain README and there must be a `Table of Contents' or
-`Contents' label on a line by itself (it may begin with an asterisk),
-preceding the table of contents.  Each toc entry must begin with some
-whitespace followed by one or more asterisk characters.  Each file section
-name line must start with one or more asterisk characters at the very
-beginning of the line."
+File name must contain DEMO, README or TUTORIAL and there must be a `Table
+of Contents' or `Contents' label on a line by itself (it may begin with
+an asterisk), preceding the table of contents.  Each toc entry must begin
+with some whitespace followed by one or more asterisk characters.  Each
+file section name line must start with one or more asterisk characters at
+the very beginning of the line."
   (let (section)
-    (if (and (string-match "README" (buffer-name))
+    (if (and (string-match "DEMO\\|README\\|TUTORIAL" (buffer-name))
             (save-excursion
               (beginning-of-line)
               ;; Entry line within a TOC
@@ -498,10 +555,9 @@ spaces and then another non-space, non-parenthesis, 
non-brace character."
 
 (defib rfc ()
   "Retrieves and displays an Internet rfc referenced at point.
-Requires a remote file access library, such as Tramp, for ftp
-file retrievals.  The following formats are recognized: RFC822,
-rfc-822, and RFC 822.  The `hpath:rfc' variable specifies the
-location from which to retrieve RFCs."
+The following formats are recognized: RFC822, rfc-822, and RFC 822.  The
+`hpath:rfc' variable specifies the location from which to retrieve RFCs.
+Requires the Emacs builtin Tramp library for ftp file retrievals."
   (let ((case-fold-search t)
        (rfc-num nil))
     (and (not (memq major-mode '(dired-mode monkey-mode)))
@@ -558,34 +614,36 @@ location from which to retrieve RFCs."
 (defib grep-msg ()
   "Jumps to line associated with grep or compilation error msgs.
 Messages are recognized in any buffer."
-  (progn
-    ;; Locate and parse grep messages found in any buffer.
+  ;; Locate and parse grep messages found in any buffer other than a
+  ;; helm completion buffer.
+  (unless (eq major-mode 'helm-major-mode)
     (save-excursion
       (beginning-of-line)
       (if (or
-           ;; UNIX C compiler and Introl 68HC11 C compiler errors
-           (looking-at "\\([^ \t\n\r:]+\\): ?\\([0-9]+\\)[ :]")
-           ;; HP C compiler errors
-           (looking-at
-            "[a-zA-Z0-9]+: \"\\([^\t\n\r\",]+\\)\", line \\([0-9]+\\):")
-           ;; BSO/Tasking 68HC08 C compiler errors
-           (looking-at
-            "[a-zA-Z 0-9]+: \\([^ \t\n\r\",]+\\) line \\([0-9]+\\)[ \t]*:")
-           ;; UNIX Lint errors
-           (looking-at "[^:]+: \\([^ \t\n\r:]+\\): line \\([0-9]+\\):")
-           ;; SparcWorks C compiler errors (ends with :)
-           ;; IBM AIX xlc C compiler errors (ends with .)
-           (looking-at "\"\\([^\"]+\\)\", line \\([0-9]+\\)[:.]")
-           ;; Introl as11 assembler errors
-           (looking-at " \\*+ \\([^ \t\n\r]+\\) - \\([0-9]+\\) ")
-           ;; perl5: ... at file.c line 10
-           (looking-at ".+ at \\([^ \t\n\r]+\\) line +\\([0-9]+\\)")
-           ;; Weblint
-           (looking-at "\\([^ \t\n\r:()]+\\)(\\([0-9]+\\)): ")
-           ;; Microsoft JVC
-           ;; file.java(6,1) : error J0020: Expected 'class' or 'interface'
-           (looking-at
-            "^\\(\\([a-zA-Z]:\\)?[^:\( \t\n\r-]+\\)[:\(][ \t]*\\([0-9]+\\),"))
+          ;; Grep matches, UNIX C compiler and Introl 68HC11 C compiler errors
+          (looking-at "\\([^ \t\n\r:]+\\): ?\\([1-9][0-9]*\\)[ :]")
+          ;; HP C compiler errors
+          (looking-at "[a-zA-Z0-9]+: \"\\([^\t\n\r\",]+\\)\", line 
\\([0-9]+\\):")
+          ;; BSO/Tasking 68HC08 C compiler errors
+          (looking-at
+           "[a-zA-Z 0-9]+: \\([^ \t\n\r\",]+\\) line \\([0-9]+\\)[ \t]*:")
+          ;; UNIX Lint errors
+          (looking-at "[^:]+: \\([^ \t\n\r:]+\\): line \\([0-9]+\\):")
+          ;; SparcWorks C compiler errors (ends with :)
+          ;; IBM AIX xlc C compiler errors (ends with .)
+          (looking-at "\"\\([^\"]+\\)\", line \\([0-9]+\\)[:.]")
+          ;; Introl as11 assembler errors
+          (looking-at " \\*+ \\([^ \t\n\r]+\\) - \\([0-9]+\\) ")
+          ;; perl5: ... at file.c line 10
+          (looking-at ".+ at \\([^ \t\n\r]+\\) line +\\([0-9]+\\)")
+          ;; Weblint
+          (looking-at "\\([^ \t\n\r:()]+\\)(\\([0-9]+\\)): ")
+          ;; Microsoft JVC
+          ;; file.java(6,1) : error J0020: Expected 'class' or 'interface'
+          (looking-at "^\\(\\([a-zA-Z]:\\)?[^:\( \t\n\r-]+\\)[:\(][ 
\t]*\\([0-9]+\\),")
+          ;; Grep match context lines (-A<num> option)
+          (and (string-match "grep\\|shell" (buffer-name))
+               (looking-at "\\([^ \t\n\r:]+\\)-\\([1-9][0-9]*\\)-")))
          (let* ((file (match-string-no-properties 1))
                 (line-num  (match-string-no-properties 2))
                 (but-label (concat file ":" line-num))
@@ -605,81 +663,96 @@ Messages are recognized in any buffer."
 
 (defib debugger-source ()
   "Jumps to source line associated with stack frame or breakpoint lines.
-This works with JavaScript traces, gdb, dbx, and xdb.  Such lines are 
recognized in any buffer."
+This works with JavaScript and Python tracebacks, gdb, dbx, and xdb.  Such 
lines are recognized in any buffer."
   (save-excursion
     (beginning-of-line)
-    (cond  ((or (looking-at "[a-zA-Z0-9-:.()? ]+? +at \\([^() \t]+\\) (\\([^:, 
\t()]+\\):\\([0-9]+\\):\\([0-9]+\\))$")
-               (looking-at "[a-zA-Z0-9-:.()? ]+? +at\\( \\)\\([^:, 
\t()]+\\):\\([0-9]+\\):\\([0-9]+\\)$")
-               (looking-at "[a-zA-Z0-9-:.()? ]+?\\( \\)\\([^:, 
\t()]+\\):\\([0-9]+\\)\\(\\)$"))
-          ;; JavaScript traceback
-          (let* ((file (match-string-no-properties 2))
-                 (line-num (match-string-no-properties 3))
-                 (col-num (match-string-no-properties 4))
-                 but-label)
-
-            ;; For Meteor app errors, remove the "app/" prefix which
-            ;; is part of the build subdirectory and not part of the
-            ;; source tree.
-            (if (and (not (eq col-num "")) (string-match "^app/" file))
-                (setq file (substring file (match-end 0))))
-
-            (setq but-label (concat file ":" line-num)
-                  line-num (string-to-number line-num))
-            (ibut:label-set but-label)
-            (hact 'link-to-file-line file line-num)))
-          ((looking-at
-            ".+ \\(at\\|file\\) \\([^ :,]+\\)\\(:\\|, line 
\\)\\([0-9]+\\)\\.?$")
-          ;; GDB or WDB
-          (let* ((file (match-string-no-properties 2))
-                 (line-num (match-string-no-properties 4))
-                 (but-label (concat file ":" line-num))
-                 (gdb-last-file (or (and (boundp 'gud-last-frame)
-                                         (stringp (car gud-last-frame))
-                                         (car gud-last-frame))
-                                    (and (boundp 'gdb-last-frame)
-                                         (stringp (car gdb-last-frame))
-                                         (car gdb-last-frame)))))
-            (setq line-num (string-to-number line-num))
-            ;; The `file' typically has no directory component and so may
-            ;; not be resolvable.  `gdb-last-file' is the last file
-            ;; displayed by gdb.  Use its directory if available as a best
-            ;; guess.
-            (if gdb-last-file
-                (setq file (expand-file-name
-                            file (file-name-directory gdb-last-file))))
-            (ibut:label-set but-label)
-            (hact 'link-to-file-line file line-num)))
-          ((looking-at ".+ (file=[^\"\n\r]+\"\\([^\"\n\r]+\\)\", 
line=\\([0-9]+\\),")
-          ;; XEmacs assertion failure
-          (let* ((file (match-string-no-properties 1))
-                 (line-num (match-string-no-properties 2))
-                 (but-label (concat file ":" line-num)))
-            (setq line-num (string-to-number line-num))
-            (ibut:label-set but-label)
-            (hact 'link-to-file-line file line-num)))
-         ((looking-at ".+ line \\([0-9]+\\) in \"\\([^\"]+\\)\"$")
-          ;; New DBX
-          (let* ((file (match-string-no-properties 2))
-                 (line-num (match-string-no-properties 1))
-                 (but-label (concat file ":" line-num)))
-            (setq line-num (string-to-number line-num))
-            (ibut:label-set but-label)
-            (hact 'link-to-file-line file line-num)))
-         ((or (looking-at ".+ \\[\"\\([^\"]+\\)\":\\([0-9]+\\),") ;; Old DBX
-              (looking-at ".+ \\[\\([^: ]+\\): \\([0-9]+\\)\\]")) ;; HP-UX xdb
-          (let* ((file (match-string-no-properties 1))
-                 (line-num (match-string-no-properties 2))
-                 (but-label (concat file ":" line-num)))
-            (setq line-num (string-to-number line-num))
-            (ibut:label-set but-label)
-            (hact 'link-to-file-line file line-num))))))
+    (cond
+     ;; Python pdb
+     ((looking-at ".+ File \"\\([^\"\n\r]+\\)\", line \\([0-9]+\\)")
+      (let* ((file (match-string-no-properties 1))
+            (line-num (match-string-no-properties 2))
+            (but-label (concat file ":" line-num)))
+       (setq line-num (string-to-number line-num))
+       (ibut:label-set but-label (match-beginning 1) (match-end 1))
+       (hact 'link-to-file-line file line-num)))
+
+     ;; JavaScript traceback
+     ((or (looking-at "[a-zA-Z0-9-:.()? ]+? +at \\([^() \t]+\\) (\\([^:, 
\t()]+\\):\\([0-9]+\\):\\([0-9]+\\))$")
+         (looking-at "[a-zA-Z0-9-:.()? ]+? +at\\( \\)\\([^:, 
\t()]+\\):\\([0-9]+\\):\\([0-9]+\\)$")
+         (looking-at "[a-zA-Z0-9-:.()? ]+?\\( \\)\\([^:, 
\t()]+\\):\\([0-9]+\\)\\(\\)$"))
+      (let* ((file (match-string-no-properties 2))
+            (line-num (match-string-no-properties 3))
+            (col-num (match-string-no-properties 4))
+            but-label)
+
+       ;; For Meteor app errors, remove the "app/" prefix which
+       ;; is part of the build subdirectory and not part of the
+       ;; source tree.
+       (if (and (not (eq col-num "")) (string-match "^app/" file))
+           (setq file (substring file (match-end 0))))
+
+       (setq but-label (concat file ":" line-num)
+             line-num (string-to-number line-num))
+       (ibut:label-set but-label)
+       (hact 'link-to-file-line file line-num)))
+
+     ;; GDB or WDB
+     ((looking-at
+       ".+ \\(at\\|file\\) \\([^ :,]+\\)\\(:\\|, line \\)\\([0-9]+\\)\\.?$")
+      (let* ((file (match-string-no-properties 2))
+            (line-num (match-string-no-properties 4))
+            (but-label (concat file ":" line-num))
+            (gdb-last-file (or (and (boundp 'gud-last-frame)
+                                    (stringp (car gud-last-frame))
+                                    (car gud-last-frame))
+                               (and (boundp 'gdb-last-frame)
+                                    (stringp (car gdb-last-frame))
+                                    (car gdb-last-frame)))))
+       (setq line-num (string-to-number line-num))
+       ;; The `file' typically has no directory component and so may
+       ;; not be resolvable.  `gdb-last-file' is the last file
+       ;; displayed by gdb.  Use its directory if available as a best
+       ;; guess.
+       (if gdb-last-file
+           (setq file (expand-file-name
+                       file (file-name-directory gdb-last-file))))
+       (ibut:label-set but-label)
+       (hact 'link-to-file-line file line-num)))
+
+     ;; XEmacs assertion failure
+     ((looking-at ".+ (file=[^\"\n\r]+\"\\([^\"\n\r]+\\)\", 
line=\\([0-9]+\\),")
+      (let* ((file (match-string-no-properties 1))
+            (line-num (match-string-no-properties 2))
+            (but-label (concat file ":" line-num)))
+       (setq line-num (string-to-number line-num))
+       (ibut:label-set but-label)
+       (hact 'link-to-file-line file line-num)))
+
+     ;; New DBX
+     ((looking-at ".+ line \\([0-9]+\\) in \"\\([^\"]+\\)\"$")
+      (let* ((file (match-string-no-properties 2))
+            (line-num (match-string-no-properties 1))
+            (but-label (concat file ":" line-num)))
+       (setq line-num (string-to-number line-num))
+       (ibut:label-set but-label)
+       (hact 'link-to-file-line file line-num)))
+
+     ;; Old DBX and HP-UX xdb
+     ((or (looking-at ".+ \\[\"\\([^\"]+\\)\":\\([0-9]+\\),") ;; Old DBX
+         (looking-at ".+ \\[\\([^: ]+\\): \\([0-9]+\\)\\]")) ;; HP-UX xdb
+      (let* ((file (match-string-no-properties 1))
+            (line-num (match-string-no-properties 2))
+            (but-label (concat file ":" line-num)))
+       (setq line-num (string-to-number line-num))
+       (ibut:label-set but-label)
+       (hact 'link-to-file-line file line-num))))))
 
 ;;; ========================================================================
 ;;; Jumps to source of Emacs Lisp byte-compiler error messages.
 ;;; ========================================================================
 
 (defib elisp-compiler-msg ()
-  "Jumps to source code for definition associated with byte-compiler error 
message.
+  "Jumps to source code for definition associated with an Emacs Lisp 
byte-compiler error message.
 Works when activated anywhere within an error line."
   (if (or (member (buffer-name) '("*Compile-Log-Show*" "*Compile-Log*"
                                  "*compilation*"))
@@ -756,67 +829,17 @@ Patch applies diffs to source code."
          (hact 'link-to-file-line file line)))))
 
 ;;; ========================================================================
-;;; Composes mail, in another window, to the e-mail address at point.
-;;; ========================================================================
-
-(defvar mail-address-mode-list
-  '(emacs-lisp-mode lisp-interaction-mode lisp-mode scheme-mode c-mode
-    c++-mode html-mode java-mode js2-mode objc-mode python-mode
-    smalltalk-mode fundamental-mode text-mode indented-text-mode web-mode) 
-  "List of major modes in which mail address implicit buttons are active.")
-
-(defib mail-address ()
-  "If on an e-mail address in a specific buffer type, mail to that address in 
another window.
-Applies to any major mode in `mail-address-mode-list', the HyRolo match buffer,
-any buffer attached to a file in `hyrolo-file-list', or any buffer with
-\"mail\" or \"rolo\" (case-insensitive) within its name."
-  (if (let ((case-fold-search t))
-       (or
-        (and (memq major-mode mail-address-mode-list)
-             (not (string-match "-Elements\\'" (buffer-name)))
-             ;; Don't want this to trigger within an OOBR-FTR buffer.
-             (not (string-match "\\`\\(OOBR.*-FTR\\|oobr.*-ftr\\)"
-                                (buffer-name)))
-             (not (string-equal "*Implementors*" (buffer-name))))
-        (and
-         (string-match "mail\\|rolo" (buffer-name))
-         ;; Don't want this to trigger in a mail/news summary buffer.
-         (not (or (hmail:lister-p) (hnews:lister-p))))
-        (if (boundp 'hyrolo-display-buffer)
-            (equal (buffer-name) hyrolo-display-buffer))
-        (and buffer-file-name
-             (boundp 'hyrolo-file-list)
-             (set:member (current-buffer)
-                         (mapcar 'get-file-buffer hyrolo-file-list)))))
-      (let ((address (mail-address-at-p)))
-       (if address
-           (progn
-             (ibut:label-set address (match-beginning 1) (match-end 1))
-             (hact 'mail-other-window nil address))))))
-
-(defun mail-address-at-p ()
-  "Return e-mail address, a string, that point is within or nil."
-  (let ((case-fold-search t))
-    (save-excursion
-      (skip-chars-backward "^ \t\n\r\f\"\'(){}[];:<>|")
-      (and (or (looking-at mail-address-regexp)
-              (looking-at (concat "mailto:"; mail-address-regexp)))
-          (save-match-data
-            (string-match mail-address-tld-regexp (match-string-no-properties 
1)))
-          (match-string-no-properties 1)))))
-
-;;; ========================================================================
 ;;; Displays Texinfo or Info node associated with Texinfo @xref, @pxref or 
@ref at point.
 ;;; ========================================================================
 
 (defib texinfo-ref ()
-  "Displays Texinfo, Info node or help associated with Texinfo node, menu 
item, @xref, @pxref, @ref, @code or @var at point.
+  "Displays Texinfo, Info node or help associated with Texinfo node, menu 
item, @xref, @pxref, @ref, @code, @findex, @var or @vindex at point.
 If point is within the braces of a cross-reference, the associated
 Info node is shown.  If point is to the left of the braces but after
 the @ symbol and the reference is to a node within the current
 Texinfo file, then the Texinfo node is shown.
 
-For @code and @var references, the associated documentation string is 
displayed."
+For @code, @findex, @var and @vindex references, the associated documentation 
string is displayed."
   (if (memq major-mode '(texinfo-mode para-mode))
       (let ((opoint (point))
            (bol (save-excursion (beginning-of-line) (point))))
@@ -829,10 +852,16 @@ For @code and @var references, the associated 
documentation string is displayed.
              ;; Show doc for any Emacs Lisp identifier references,
              ;; marked with @code{} or @var{}.
              ((save-excursion
-                (and (search-backward "@" bol t) (looking-at 
"@\\(code\\|var\\){\\([^\} \t\n\r]+\\)}")
+                (and (search-backward "@" bol t)
+                     (or (looking-at "@\\(code\\|var\\){\\([^\} \t\n\r]+\\)}")
+                         (looking-at "@\\(findex\\|vindex\\)[ ]+\\([^\} 
\t\n\r]+\\)"))
                      (>= (match-end 2) opoint)))
-              (hact 'link-to-elisp-doc
-                    (intern (ibut:label-set (match-string 2) (match-beginning 
2) (match-end 2)))))
+              (let ((type-str (match-string 1))
+                    (symbol (intern-soft (ibut:label-set (match-string 2) 
(match-beginning 2) (match-end 2)))))
+                (when (and symbol (pcase type-str
+                                    ((or "code" "findex") (fboundp symbol))
+                                    ((or "var" "vindex") (boundp symbol))))
+                  (hact 'link-to-elisp-doc symbol))))
              ;; If at an @node and point is within a node name reference
              ;; other than the current node, display it.
              ((save-excursion
@@ -901,15 +930,20 @@ GNUS is a news and mail reader."
 ;;; ========================================================================
 
 (defib Info-node ()
-  "Makes \"(filename)nodename\" buttons display the associated Info node.
-Also makes \"(filename)itemname\" buttons display the associated Info index 
item."
-  (let* ((node-ref-and-pos (or (hbut:label-p t "\"" "\"" t)
+  "Makes a \"(filename)nodename\" button display the associated Info node.
+Also makes a \"(filename)itemname\" button display the associated Info index 
item.
+Examples are \"(hyperbole)Implicit Buttons\" and ``(hyperbole)C-c /''.
+
+Activates only if point is within the first line of the Info-node name."
+  (let* ((node-ref-and-pos (or (hbut:label-p t "\"" "\"" t t)
                               ;; Typical GNU Info references; note
                               ;; these are special quote marks, not the
                               ;; standard ASCII characters.
-                              (hbut:label-p t "‘" "’" t)
+                              (hbut:label-p t "‘" "’" t t)
+                              ;; Regular dual single quotes (Texinfo smart 
quotes)
+                              (hbut:label-p t "``" "''" t t)
                               ;; Regular open and close quotes
-                              (hbut:label-p t "`" "'" t)))
+                              (hbut:label-p t "`" "'" t t)))
         (node-ref (hpath:is-p (car node-ref-and-pos) nil t)))
     (and node-ref (string-match "\\`([^\):]+)" node-ref)
         (ibut:label-set node-ref-and-pos)
@@ -920,22 +954,30 @@ Also makes \"(filename)itemname\" buttons display the 
associated Info index item
 ;;; ========================================================================
 
 (defib hyp-address ()
-  "Turns a Hyperbole support/discussion e-mail address into an implicit button 
which inserts Hyperbole environment information.
-See also the documentation for `actypes::hyp-config'."
-  (if (memq major-mode (list hmail:composer hnews:composer))
-      (let ((addr (hargs:find-tag-default)))
-       (cond ((null addr) nil)
-             ((member addr '("hyperbole" "address@hidden" "address@hidden"))
-              (hact 'hyp-config))
-             ((string-match 
"\\(hyperbole\\|address@hidden|address@hidden)\\(-\\(join\\|leave\\|owner\\)\\)"
 addr)
-              (hact 'hyp-request))))))
+  "Within a mail or Usenet news composer window, makes a Hyperbole 
support/discussion e-mail address insert Hyperbole environment and version 
information.
+See also the documentation for `actypes::hyp-config'.
+
+For example, an Action Mouse Key click on <address@hidden> in
+a mail composer window would activate this implicit button type."
+  (when (memq major-mode (list 'mail-mode hmail:composer hnews:composer))
+    (let ((addr (thing-at-point 'email)))
+      (cond ((null addr) nil)
+           ((member addr '("hyperbole" "address@hidden" "address@hidden"))
+            (hact 'hyp-config))
+           ((string-match 
"\\(hyperbole\\|address@hidden|address@hidden)\\(-\\(join\\|leave\\|owner\\)\\)"
 addr)
+            (hact 'hyp-request))))))
 
 ;;; ========================================================================
 ;;; Makes source entries in Hyperbole reports selectable.
 ;;; ========================================================================
 
 (defib hyp-source ()
-  "Turns source location entries in Hyperbole reports into buttons that jump 
to the associated location."
+  "Turns source location entries in Hyperbole reports into buttons that jump 
to the associated location.
+
+For example, {C-h h d d C-h h e h o} summarizes the properties of
+the explicit buttons in the DEMO file and each button in that
+report buffer behaves the same as the corresponding button in the
+original DEMO file."
   (save-excursion
     (beginning-of-line)
     (if (looking-at hbut:source-prefix)
diff --git a/hload-path.el b/hload-path.el
index db6b3c5..8650d41 100644
--- a/hload-path.el
+++ b/hload-path.el
@@ -51,6 +51,11 @@
   "Directory where the Hyperbole executable code is kept.
 It must end with a directory separator character.")
 
+;; Ensure final name (after resolving all links) of hyperb:dir is
+;; used; otherwise, Hyperbole may fail to substitute this as a
+;; variable into link path buttons.
+(if (stringp hyperb:dir) (setq hyperb:dir (file-truename hyperb:dir)))
+
 ;; Add hyperb:dir to load-path so other Hyperbole libraries can be
 ;; found unless it is already there since the Emacs Package Manager
 ;; may have already added it.
diff --git a/hlvar.el b/hlvar.el
index 7d07754..a6d2eed 100644
--- a/hlvar.el
+++ b/hlvar.el
@@ -44,7 +44,7 @@ for current buffer."
            (and (search-forward "Local Variables:" nil t)
                 (setq local-start (match-beginning 0))
                 (or (and (not (string-match "^19\\." emacs-version))
-                         (not inhibit-local-variables))
+                         (not (inhibit-local-variables-p)))
                     force
                     (if (string-match "^19\\." emacs-version)
                         (cond ((eq enable-local-variables t) t)
diff --git a/hmouse-drv.el b/hmouse-drv.el
index 354563b..cccc888 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -20,7 +20,6 @@
 
 ;; Quiet byte compiler warnings for these free variables.
 (eval-when-compile
-  (defvar assist-flag nil)
   (defvar hkey-action nil)
   (defvar pred-value nil))
 
@@ -28,6 +27,17 @@
 ;;; Public variables
 ;;; ************************************************************************
 
+(defvar hmouse-verify-release-window-flag t
+  "Non-nil means verify whether Smart Mouse Keys are released inside or 
outside of an Emacs frame.
+Presently, this does nothing unless Emacs is running under the
+macOS window system.  It queries the Mac window manager for the
+name of the owner of the top-most window at the point of release,
+if any.  Otherwise, if an Emacs frame is below another
+application's window at the point of release, Emacs will report
+that the release point was in its frame.
+
+See function `hmouse-window-at-absolute-pixel-position' for more details.")
+
 (defvar action-key-depressed-flag nil "t while Action Key is depressed.")
 (defvar assist-key-depressed-flag nil "t while Assist Key is depressed.")
 (defvar action-key-depress-args nil
@@ -41,14 +51,26 @@
   "List of mouse event args from most recent release of the Assist Key.")
 
 (defvar action-key-depress-window nil
-  "The last window in which the Action Key was depressed or nil.")
+  "The last window in which the Action Key was depressed or nil.
+This is set to nil when the depress is on an inactive minibuffer.")
 (defvar assist-key-depress-window nil
-  "The last window in which the Assist Key was depressed or nil.")
+  "The last window in which the Assist Key was depressed or nil.
+This is set to nil when the depress is on an inactive minibuffer.")
 (defvar action-key-release-window nil
   "The last window in which the Action Key was released or nil.")
 (defvar assist-key-release-window nil
   "The last window in which the Assist Key was released or nil.")
 
+;; These store mouse positions and are used only when a mouse is available.
+(defvar action-key-depress-position nil
+  "The last mouse screen position at which the Action Key was depressed or 
nil.")
+(defvar assist-key-depress-position nil
+  "The last mouse screen position at which the Assist Key was depressed or 
nil.")
+(defvar action-key-release-position nil
+  "The last mouse screen position at which the Action Key was released or 
nil.")
+(defvar assist-key-release-position nil
+  "The last mouse screen position at which the Assist Key was released or 
nil.")
+
 (defvar action-key-depress-prev-point nil
   "Marker at point prior to last Action Key depress.
 Note that this may be a buffer different than where the depress occurs.")
@@ -72,6 +94,11 @@ Note that this may be a buffer different than where the 
release occurs.")
 (defvar assist-key-help-flag nil
   "When non-nil, forces display of help for next Assist Key release.")
 
+(defvar assist-flag nil
+  "Non-nil when Hyperbole's Assist Key is in use rather than the Action Key.
+Never set directly.  Bound as a parameter when `hkey-execute' is called
+and then used as a free variable.")
+
 (defcustom hkey-debug nil
   "If non-nil, displays a message with the context and values from each Smart 
Key activation.
 Default is nil."
@@ -112,9 +139,11 @@ This permits the Smart Keys to behave as paste keys.")
        action-key-depress-args (hmouse-set-point args)
        action-key-depress-window (or (hmouse-depress-inactive-minibuffer-p 
args)
                                      (selected-window))
+       action-key-depress-position (mouse-absolute-pixel-position)
        action-key-release-args nil
        action-key-release-window nil
-       action-key-release-prev-point nil))
+       action-key-release-prev-point nil)
+  (run-hooks 'action-key-depress-hook))
 
 (defun assist-key-depress (&rest args)
   (interactive)
@@ -127,9 +156,11 @@ This permits the Smart Keys to behave as paste keys.")
        assist-key-depress-args (hmouse-set-point args)
        assist-key-depress-window (or (hmouse-depress-inactive-minibuffer-p 
args)
                                      (selected-window))
+       assist-key-depress-position (mouse-absolute-pixel-position)
        assist-key-release-args nil
        assist-key-release-window nil
-       assist-key-release-prev-point nil))
+       assist-key-release-prev-point nil)
+  (run-hooks 'assist-key-depress-hook))
 
 (defun action-key-depress-emacs (event)
   (interactive "e")
@@ -158,20 +189,23 @@ Any ARGS will be passed to `hmouse-function'."
   (interactive)
   ;; Make this a no-op if some local mouse key binding overrode the global
   ;; action-key-depress command invocation.
-  (if action-key-depressed-flag
-      (let ((hkey-alist hmouse-alist))
-       (setq action-key-depressed-flag nil)
-       (cond (action-key-cancelled
-               (setq action-key-cancelled nil
-                     assist-key-depressed-flag nil))
-             (assist-key-depressed-flag
-               (hmouse-function nil nil args))
-             ((hkey-mouse-help nil args))
-             (t (hmouse-function #'action-key-internal nil args)))
-       ;; Need to clear these variables so that mouse pasting does
-       ;; not occur repeatedly from a single region selection.
-       (setq hkey-region nil
-             hkey-value nil))))
+  (when action-key-depressed-flag
+    (setq action-key-release-position (mouse-absolute-pixel-position))
+    (let ((hkey-alist hmouse-alist))
+      (setq action-key-depressed-flag nil)
+      (cond (action-key-cancelled
+            (setq action-key-cancelled nil
+                  assist-key-depressed-flag nil))
+           (assist-key-depressed-flag
+            (hmouse-function nil nil args))
+           ((hkey-mouse-help nil args))
+           (t
+            (run-hooks 'action-key-release-hook)
+            (hmouse-function #'action-key-internal nil args)))
+      ;; Need to clear these variables so that mouse pasting does
+      ;; not occur repeatedly from a single region selection.
+      (setq hkey-region nil
+           hkey-value nil))))
 
 (defun assist-mouse-key (&rest args)
   "Set point to the current mouse cursor position and execute `assist-key'.
@@ -179,44 +213,50 @@ Any ARGS will be passed to `hmouse-function'."
   (interactive)
   ;; Make this a no-op if some local mouse key binding overrode the global
   ;; assist-key-depress command invocation.
-  (if assist-key-depressed-flag
-      (let ((hkey-alist hmouse-alist))
-       (setq assist-key-depressed-flag nil)
-       (cond (assist-key-cancelled
-               (setq assist-key-cancelled nil
-                     action-key-depressed-flag nil))
-             (action-key-depressed-flag
-               (hmouse-function nil t args))
-             ((hkey-mouse-help t args))
-             (t (hmouse-function #'assist-key-internal t args)))
-       ;; Need to clear this variable so that mouse pasting does
-       ;; not occur repeatedly from a single region selection.
-       (setq hkey-region nil
-             hkey-value nil))))
+  (when assist-key-depressed-flag
+    (setq assist-key-release-position (mouse-absolute-pixel-position))
+    (let ((hkey-alist hmouse-alist))
+      (setq assist-key-depressed-flag nil)
+      (cond (assist-key-cancelled
+            (setq assist-key-cancelled nil
+                  action-key-depressed-flag nil))
+           (action-key-depressed-flag
+            (hmouse-function nil t args))
+           ((hkey-mouse-help t args))
+           (t
+            (run-hooks 'assist-key-release-hook)
+            (hmouse-function #'assist-key-internal t args)))
+      ;; Need to clear this variable so that mouse pasting does
+      ;; not occur repeatedly from a single region selection.
+      (setq hkey-region nil
+           hkey-value nil))))
 
 ;;; Smart Key Commands
 (defun action-key ()
   "Use one key to perform functions that vary by context.
 If no matching context is found, the default function set with
-the `action-key-default-function' variable is run.  Returns t
+the `action-key-default-function' variable is run.  Return t
 unless the `action-key-default-function' variable is not bound to
 a valid function."
   (interactive)
   ;; Clear all these variables so there can be no confusion between
   ;; mouse presses and keyboard presses.
   (setq action-key-depress-prev-point nil
+       action-key-depress-position nil
        action-key-depress-args nil
        action-key-depress-window nil
+       action-key-release-position nil
        action-key-release-args nil
        action-key-release-window nil
        action-key-release-prev-point nil)
-  (action-key-internal))
+  (prog1 (action-key-internal)
+    (run-hooks 'action-key-depress-hook 'action-key-release-hook)))
 
 (defun action-key-internal ()
   (setq action-key-depressed-flag nil)
-  (if action-key-cancelled
-      (setq action-key-cancelled nil
-           assist-key-depressed-flag nil))
+  (when action-key-cancelled
+    (setq action-key-cancelled nil
+         assist-key-depressed-flag nil))
   (or (hkey-execute nil)
       (when (fboundp action-key-default-function)
        (funcall action-key-default-function)
@@ -225,33 +265,42 @@ a valid function."
 (defun assist-key ()
   "Use one key to perform functions that vary by context.
 If no matching context is found, the default function set with
-the `assist-key-default-function' variable is run.  Returns
+the `assist-key-default-function' variable is run.  Return
 non-nil unless `assist-key-default-function' variable is not
 bound to a valid function."
   (interactive)
   ;; Clear all these variables so there can be no confusion between
   ;; mouse presses and keyboard presses.
   (setq assist-key-depress-prev-point nil
+       assist-key-depress-position nil
        assist-key-depress-args nil
        assist-key-depress-window nil
+       assist-key-release-position nil
        assist-key-release-args nil
        assist-key-release-window nil
        assist-key-release-prev-point nil)
-  (assist-key-internal))
+  (prog1 (assist-key-internal)
+    (run-hooks 'assist-key-depress-hook 'assist-key-release-hook)))
 
 (defun assist-key-internal ()
   (setq assist-key-depressed-flag nil)
-  (if assist-key-cancelled
-      (setq assist-key-cancelled nil
-           action-key-depressed-flag nil))
+  (when assist-key-cancelled
+    (setq assist-key-cancelled nil
+         action-key-depressed-flag nil))
   (or (hkey-execute t)
       (when (fboundp assist-key-default-function)
        (funcall assist-key-default-function)
        t)))
 
 (defun hkey-either (arg)
-  "Executes `action-key' or with non-nil ARG executes `assist-key'."
+  "Execute `action-key' or with non-nil ARG execute `assist-key'."
   (interactive "P")
+  (when (and (featurep 'hycontrol)
+            (or hycontrol-windows-mode hycontrol-frames-mode))
+      ;; Ignore any prefix arg set by HyControl and use prefix arg
+      ;; only if it was given by a user as any number of C-u presses
+      ;; and is therefore a list.
+    (unless (listp arg) (setq arg nil)))
   (if arg (assist-key) (action-key)))
 
 ;;; ************************************************************************
@@ -275,7 +324,7 @@ bound to a valid function."
 (defun hkey-execute (assist-flag)
   "Evaluate Action Key form (or Assist Key form with ASSIST-FLAG non-nil) for 
first non-nil predicate from `hkey-alist'.
 Non-nil ASSIST-FLAG means evaluate second form, otherwise evaluate first form.
-Returns non-nil iff a non-nil predicate is found."
+Return non-nil iff a non-nil predicate is found."
   ;; Keep in mind that hkey-alist may be set to hmouse-alist here, with 
additional predicates.
   (let ((hkey-forms hkey-alist)
        (pred-value) (hkey-action) hkey-form pred)
@@ -293,10 +342,10 @@ Returns non-nil iff a non-nil predicate is found."
 (defun hkey-help (&optional assist-flag)
   "Display help for the Action Key command in current context.
 With optional ASSIST-FLAG non-nil, display help for the Assist Key command.
-Returns non-nil iff associated help documentation is found."
+Return non-nil iff associated help documentation is found."
   (interactive "P")
   (let ((hkey-forms hkey-alist)
-       (hkey-form) (pred-value) (call) (cmd-sym) (doc))
+       hkey-form pred-value call calls cmd-sym doc)
     (while (and (null pred-value) (setq hkey-form (car hkey-forms)))
       (or (setq pred-value (eval (car hkey-form)))
          (setq hkey-forms (cdr hkey-forms))))
@@ -304,13 +353,20 @@ Returns non-nil iff associated help documentation is 
found."
        (setq call (if assist-flag (cdr (cdr hkey-form))
                     (car (cdr hkey-form)))
              cmd-sym (car call))
-      (setq cmd-sym
-           (if assist-flag assist-key-default-function 
action-key-default-function)
+      (setq cmd-sym (if assist-flag assist-key-default-function 
action-key-default-function)
            call cmd-sym))
+    (if (and (consp call) (eq (car call) 'call-interactively))
+       (if (consp (cadr call))
+           (setq cmd-sym (if (memq (caadr call) '(function quote))
+                             (cadadr call) 
+                           (caadr call)))))
+    (setq calls (if (and (consp call) (eq (car call) 'or))
+                   (mapcar 'identity (cdr call))
+                 (list cmd-sym)))
+
     (setq hkey-help-msg
          (if (and cmd-sym (symbolp cmd-sym))
              (progn
-               (setq doc (documentation cmd-sym))
                (let* ((condition (car hkey-form))
                       (temp-buffer-show-hook
                         (lambda (buf)
@@ -341,15 +397,27 @@ Returns non-nil iff associated help documentation is 
found."
                      (or condition
                          "there is no matching context"))
                    (terpri)
-                   (princ "CALLS ") (princ call)
-                   (if doc (progn (princ " WHICH:") (terpri) (terpri)
-                                  (princ doc)))
-                   (if (memq cmd-sym '(hui:hbut-act hui:hbut-help))
-                       (progn
-                         (princ (format "\n\nBUTTON SPECIFICS:\n\n%s\n"
-                                        (actype:doc 'hbut:current t)))
-                         (hattr:report
-                           (nthcdr 2 (hattr:list 'hbut:current)))))
+
+                   (mapc (lambda (c)
+                           (if (> (length calls) 1)
+                               ;; Is an 'or' set of calls
+                               (princ "'OR' "))
+                           (princ "CALLS ") (princ (if (consp c) c (list c)))
+                           (when (and (fboundp (setq call (if (consp c) (car 
c) c)))
+                                      (setq doc (documentation call)))
+                             (princ " WHICH")
+                             (princ (if (string-match 
"\\`[a-zA-Z]*[a-rt-zA-RT-Z]+s[ [:punct:]]" doc)
+                                        ":" " WILL:"))
+                             (terpri) (terpri)
+                             (princ (replace-regexp-in-string "^" "  " doc nil 
t))
+                             (terpri) (terpri)))
+                         calls)
+
+                   (when (memq cmd-sym '(hui:hbut-act hui:hbut-help))
+                     (princ (format "BUTTON SPECIFICS:\n\n%s\n"
+                                    (actype:doc 'hbut:current t)))
+                     (hattr:report
+                      (nthcdr 2 (hattr:list 'hbut:current))))
                    (terpri)
                    ))
                "")
@@ -359,7 +427,7 @@ Returns non-nil iff associated help documentation is found."
 
 (defun hkey-assist-help ()
   "Display doc associated with Assist Key command in current context.
-Returns non-nil iff associated documentation is found."
+Return non-nil iff associated documentation is found."
   (interactive)
   (hkey-help 'assist))
 
@@ -370,8 +438,8 @@ Returns non-nil iff associated documentation is found."
 
 ;;;###autoload
 (defun hkey-help-hide (&optional kill window)
-  "Optionally KILLs current buffer (default is bury) and quits WINDOW.
-Restores frame to configuration prior to help buffer display.
+  "Optionally KILL current buffer (default is bury) and quit WINDOW.
+Restore frame to configuration prior to help buffer display.
 Point must be in a help buffer.  See `hkey-quit-window' for additional
 details."
   (interactive "P")
@@ -395,9 +463,9 @@ details."
 
 ;;;###autoload
 (defun hkey-help-show (&optional buffer current-window)
-  "Saves prior window configuration if BUFFER displays help.  Displays BUFFER.
+  "Save prior window configuration if BUFFER displays help.  Display BUFFER.
 
-Optional second arg CURRENT-WINDOW non-nil forces display of buffer within
+With optional second arg CURRENT-WINDOW non-nil, force display of buffer within
 the current window.  By default, it is displayed according to the setting of
 `hpath:display-where'."
   (if (bufferp buffer) (setq buffer (buffer-name buffer)))
@@ -429,7 +497,8 @@ the current window.  By default, it is displayed according 
to the setting of
          ;; selection.
          (unless (or (where-is-internal 'quit-window (current-local-map))
                      (where-is-internal 'hkey-help-hide (current-local-map)))
-           (help-mode)
+           (if (string-match "^\\*Help\\|Help\\*$" (buffer-name))
+               (help-mode))
            (local-set-key "q" #'hkey-help-hide))))
     ;; If in a *Completions* buffer, re-select the window that
     ;; generated the completions.
@@ -437,10 +506,10 @@ the current window.  By default, it is displayed 
according to the setting of
        (select-window (get-buffer-window completion-reference-buffer t)))))
 
 (defun hkey-mouse-help (assist-flag args)
-  "If a Smart Key help flag is set and the other Smart Key is not down, shows 
help.
+  "If a Smart Key help flag is set and the other Smart Key is not down, show 
help.
 Takes two args:  ASSIST-FLAG should be non-nil iff command applies to the 
Assist Key.
 ARGS is a list of arguments passed to `hmouse-function'.
-Returns t if help is displayed, nil otherwise."
+Return t if help is displayed, nil otherwise."
   (let ((help-shown)
        (other-key-released (not (if assist-flag
                                     action-key-depressed-flag
@@ -462,7 +531,7 @@ Returns t if help is displayed, nil otherwise."
        t))))
 
 (defun hkey-operate (&optional arg)
-  "Uses the keyboard to emulate Smart Mouse Key drag actions.
+  "Use the keyboard to emulate Smart Mouse Key drag actions.
 Each invocation alternates between starting a drag and ending it.
 Optional prefix ARG non-nil means emulate Assist Key rather than the
 Action Key.
@@ -490,8 +559,8 @@ Only works when running under a window system, not from a 
dumb terminal."
       )))
 
 (defun hkey-summarize (&optional current-window)
-  "Displays smart key operation summary in help buffer.
-Optional arg CURRENT-WINDOW non-nil forces display of buffer within
+  "Display smart key operation summary in help buffer.
+With optional arg CURRENT-WINDOW non-nil, force display of buffer within
 the current window.  By default, it is displayed in another window."
   (interactive)
   (let* ((doc-file (hypb:hkey-help-file))
@@ -523,13 +592,182 @@ With optional ARG, override them iff ARG is positive."
     (setq hkey-debug t)
     (message "Smart Key debugging is on; press a Smart Key to see its 
context.")))
 
-(defun hmouse-depress-inactive-minibuffer-p (args)
-  "Return the minibuffer window if the last Smart Mouse Key depress was in it 
and it was inactive, else nil."
-  (if (= (minibuffer-depth) 0)
-      (if (eq (minibuffer-window) (posn-window (event-start args)))
-         (minibuffer-window))))
+(defun hmouse-depress-inactive-minibuffer-p (event)
+  "Return the minibuffer window if the last Smart Mouse Key depress EVENT was 
in it and it was inactive, else nil."
+  (let ((window (posn-window (event-start event))))
+    (if (framep window) (setq window (frame-selected-window window)))
+    (and (window-minibuffer-p window)
+        (not (minibuffer-window-active-p window))
+        window)))
+
+;; Based on code from subr.el.
+(defun hmouse-vertical-line-spacing (frame)
+  "Return any extra vertical spacing in pixels between text lines or 0 if 
none."
+  (let ((spacing (when (display-graphic-p frame)
+                   (or (with-current-buffer (window-buffer 
(frame-selected-window frame))
+                         line-spacing)
+                      (frame-parameter frame 'line-spacing)))))
+    (cond ((floatp spacing)
+          (setq spacing (truncate (* spacing (frame-char-height frame)))))
+         ((null spacing)
+          (setq spacing 0)))
+    spacing))
+
+(defun hmouse-window-at-absolute-pixel-position (&optional position 
release-flag)
+  "Return the top-most Emacs window at optional POSITION ((x . y) in absolute 
pixels) or mouse position.
+If POSITION is not in a window, return nil.  Considers all windows on
+the same display as the selected frame.
+
+If optional RELEASE-FLAG is non-nil, this is part of a Smart Key
+release computation, so optimize window selection based on the depress
+window already computed.
+
+If the selected frame is a graphical macOS window and
+`hmouse-verity-release-window-flag' is non-nil, then return the
+top-most Emacs window only if it is the top-most application window at
+the position (not below another application's window)."
+  (interactive)
+  (setq position (or position (mouse-absolute-pixel-position)))
+  ;; Proper top-to-bottom listing of frames is available only in Emacs
+  ;; 26 and above.  For prior versions, the ordering of the frames
+  ;; returned is not guaranteed, so the frame whose window is returned
+  ;; may not be the uppermost.
+  (let* ((top-to-bottom-frames (if (fboundp 'frame-list-z-order)
+                                  (frame-list-z-order)
+                                (frame-list)))
+        (pos-x (car position))
+        (pos-y (cdr position))
+        edges left top right bottom
+        frame
+        in-frame
+        window)
+    ;; First find top-most frame containing position.
+    (while (and (not in-frame) top-to-bottom-frames)
+      (setq frame (car top-to-bottom-frames)
+           top-to-bottom-frames (cdr top-to-bottom-frames))
+      ;; Check that in-frame is valid with frame-live-p since under macOS
+      ;; when position is outside a frame, in-frame could be invalid and
+      ;; frame-visible-p would trigger an error in that case.
+      (when (and (frame-live-p frame) (frame-visible-p frame))
+       (setq edges (frame-edges frame)
+             left   (nth 0 edges)
+             top    (nth 1 edges)
+             right  (nth 2 edges)
+             bottom (nth 3 edges))
+       (when (and (>= pos-x left) (<= pos-x right)
+                  (>= pos-y top)  (<= pos-y bottom))
+         (setq in-frame frame))))
+    ;; If in-frame is found, find which of its windows contains
+    ;; position and return that.  The window-at call below requires
+    ;; character coordinates relative to in-frame, so compute them.
+    (when in-frame
+      (let ((depress-position (and release-flag (if assist-flag
+                                                   assist-key-depress-position
+                                                 action-key-depress-position)))
+           (depress-window  (and release-flag (if assist-flag
+                                                  assist-key-depress-window
+                                                action-key-depress-window))))
+       (if (and release-flag depress-window (equal position depress-position))
+           ;; This was a click, so we know that the frame of the click
+           ;; is topmost on screen or the mouse events would not have
+           ;; been routed to Emacs.  Reuse saved window of depress rather
+           ;; then running possibly expensive computation to find the
+           ;; topmost application window.
+           (setq window depress-window)
+         (let ((char-x (/ (- pos-x left) (frame-char-width in-frame)))
+               (line-y (/ (- pos-y top) (+ (frame-char-height in-frame)
+                                           (hmouse-vertical-line-spacing 
in-frame)))))
+           (setq window (window-at char-x line-y in-frame)))
+         ;;
+         ;; Otherwise, even if in-frame is found, under click-to-focus 
external window
+         ;; managers, Emacs may have received the drag release event when
+         ;; in-frame was covered by an external application's window.
+         ;; Emacs presently has no way to handle this.  However, for the
+         ;; macOS window system only, Hyperbole has a Python script, 
topwin.py, which
+         ;; computes the application of the topmost window at the point of 
release.
+         ;; If that is Emacs, then we have the right window and nothing need be
+         ;; done; otherwise, set window to nil and return.
+         ;;
+         (when (and hmouse-verify-release-window-flag
+                    window (eq (window-system) 'ns))
+           ;; If depress and release windows are the same and frame has
+           ;; an auto-raise property, then we know this window was
+           ;; uppermost at the point of release and can skip this computation.
+           (unless (and (eq depress-window window) (frame-parameter nil 
'auto-raise))
+             (let ((topwin (expand-file-name "topwin.py" hyperb:dir))
+                   (case-fold-search t)
+                   topmost-app)
+               (when (and topwin (file-executable-p topwin))
+                 (setq topmost-app (shell-command-to-string
+                                    (format "%s %d %d" topwin pos-x pos-y)))
+                 (cond ((string-match "emacs" topmost-app)) ; In an Emacs 
frame, do nothing.
+                       ((or (equal topmost-app "")
+                            ;; Any non-Emacs app window
+                            (string-match "\\`\\[" topmost-app))
+                        ;; Outside of any Emacs frame
+                        (setq window nil))
+                       (t ;; topwin error message
+                        ;; Setup of the topwin script is somewhat complicated,
+                        ;; so don't trigger an error just because of it.  But
+                        ;; display a message so the user knows something 
happened
+                        ;; when topwin encounters an error.
+                        (message "(Hyperbole): topwin.py Python script error: 
%s" topmost-app))))))))))
+
+    (when (called-interactively-p 'interactive)
+      (message "%s at absolute pixel position %s"
+              (or window "No Emacs window") position))
+    window))
+
+(defun hmouse-window-coordinates (&optional event)
+  "Return a list (window (x-chars . y-chars)) for optional EVENT.
+Always ignores EVENT coordinates and uses current mouse position.
+The area of the EVENT is utilized. If EVENT is not given and the
+free variable `assist-flag' is non-nil, EVENT is set to
+`assist-key-release-args', otherwise, `action-key-release-args'.
+
+The coordinates x-chars and y-chars are relative character
+coordinates within the window.  If POSITION is not in a live
+window, return nil.  Considers all windows on the selected frame's display."
+  (interactive)
+  (unless (eventp event)
+    (setq event (if assist-flag assist-key-release-args 
action-key-release-args)))
+  (let* ((position (mouse-absolute-pixel-position))
+        (pos-x (car position))
+        (pos-y (cdr position))
+        (window (hmouse-window-at-absolute-pixel-position position t))
+        (edges (when (window-live-p window) (window-edges window t t t)))
+        left top right bottom
+        frame)
+    (when edges
+      (setq left   (nth 0 edges)
+           top    (nth 1 edges)
+           right  (nth 2 edges)
+           bottom (nth 3 edges))
+      (when (or (and event (eq (posn-area (event-start event)) 'mode-line))
+               (and (>= pos-x left) (<= pos-x right)
+                    (>= pos-y top)  (<= pos-y bottom)))
+       ;; If position is in a live window, compute position's character
+       ;; coordinates within the window and return the window with these
+       ;; coordinates.
+       (setq frame (window-frame window)
+             pos-x (round (/ (- pos-x left) (frame-char-width frame)))
+             pos-y (round (/ (- pos-y top)  (+ (frame-char-height frame)
+                                               (hmouse-vertical-line-spacing 
frame)))))))
+    (when (called-interactively-p 'interactive)
+      (message "%s at %s coordinates (%s . %s)"
+              (if edges window "No live Emacs window")
+              (if frame "character" "absolute pixel")
+              pos-x pos-y))
+    (when edges (list window (cons pos-x pos-y)))))
+
+(defun hmouse-key-release-window ()
+  "Return the window of the current mouse position if any, else nil."
+  (ignore-errors (hmouse-window-at-absolute-pixel-position nil t)))
 
 (defun hmouse-key-release-args-emacs (event)
+  "For GNU Emacs, return a possibly modified version of EVENT as a list.
+For mouse drags and double and triple clicks, remove any depress location,
+compute the actual release location and include that."
   (if (integerp event)
       (list event)
     (let ((ev-type-str (and (listp event) (symbol-name (car event)))))
@@ -537,26 +775,47 @@ With optional ARG, override them iff ARG is positive."
                   (string-match "\\(double\\|triple\\)-mouse" ev-type-str))
              (not (= (length event) 3)))
          event
-       ;; Remove depress coordinates and send only release coordinates.
+       (let ((pos (event-end event))
+             coords window window-and-char-coords)
+         (when (and ev-type-str (string-match "drag-mouse" ev-type-str)
+                    ;; end of drag event; If drag crossed frames, the location
+                    ;; will contain the frame of the depress point and
+                    ;; some relative coordinates; change these to the window of
+                    ;; release and window's character coordinates if within a 
window
+                    ;; and to nil if outside of Emacs (as best we can tell).
+                    (framep (posn-window pos)))
+           (setq window-and-char-coords (hmouse-window-coordinates event)
+                 window (car window-and-char-coords)
+                 coords (cadr window-and-char-coords))
+           ;; Modify the values in the event-end structure even if no
+           ;; valid window was found.
+           (setcar pos window)
+           (setcar (nthcdr 2 pos) coords)))
+       ;; Remove depress coordinates and send only original release 
coordinates.
        (list (car event) (nth 2 event))))))
 
+(defun hmouse-use-region-p ()
+  "Return t if there is a non-empty, highlighted region, else nil."
+  (cond
+   ;; Newer GNU Emacs
+   ((fboundp 'use-region-p)
+    (let ((use-empty-active-region))
+      (use-region-p)))
+   ;; InfoDock and XEmacs
+   ((fboundp 'region-exists-p)
+    (and (fboundp 'region-active-p) (region-active-p) (region-exists-p)))
+   ;; Older GNU Emacs
+   ((boundp 'transient-mark-mode)
+    (and transient-mark-mode mark-active))))
+
 (defun hmouse-save-region (&optional frame)
-  "Saves any active region within the current buffer.
+  "Save to `hkey-region' and return any active region within the current 
buffer.
 Under InfoDock and XEmacs, `zmacs-region' must be t; under GNU Emacs,
 `transient-mark-mode' must be t or the function does nothing."
-  (if (cond
-       ;; Newer GNU Emacs
-       ((fboundp 'use-region-p)
-       (let ((use-empty-active-region))
-         (use-region-p)))
-       ;; InfoDock and XEmacs
-       ((fboundp 'region-exists-p)
-       (and (fboundp 'region-active-p) (region-active-p) (region-exists-p)))
-       ;; Older GNU Emacs
-       ((boundp 'transient-mark-mode)
-       (and transient-mark-mode mark-active)))
-      (setq hkey-region (buffer-substring (region-beginning) (region-end)))
-    (setq hkey-region nil)))
+  (setq hkey-region
+       (when (hmouse-use-region-p)
+         (buffer-substring (region-beginning) (region-end)))))
+
 
 ;; Save any active region to `hkey-region' when the mouse is moved between 
frames or buffers.
 (if (featurep 'xemacs)
@@ -571,8 +830,8 @@ Under InfoDock and XEmacs, `zmacs-region' must be t; under 
GNU Emacs,
 ;; assume this is no longer a problem in 2016 but have this note here
 ;; in case it is.
 (defun hmouse-set-point (args)
-  "Sets point to Smart Key press/release location given by ARGS.
-Returns argument list including x and y frame coordinates in characters and
+  "Set point to Smart Key press/release location given by ARGS.
+Return argument list including x and y frame coordinates in characters and
 lines or if ARGS is null and there is no graphical window system,
 return current point as a marker."
   (and (car args) (listp (car args)) (setq args (car args)))
@@ -587,10 +846,10 @@ return current point as a marker."
                            (+ (nth 1 args) (nth 0 (window-edges win)))
                            (+ (nth 2 args) (nth 1 (window-edges win))))))
                   (t args)))
-    (point-marker)))
+    (posn-at-point)))
 
 (defun hmouse-set-point-at (set-point-arg-list)
-  "Sets point to cursor position using SET-POINT-ARG-LIST and returns t.
+  "Set point to cursor position using SET-POINT-ARG-LIST and returns t.
 If 'hmouse-set-point-command' is not bound to a function, this does nothing
 and returns nil."
   (if (fboundp hmouse-set-point-command)
@@ -608,49 +867,50 @@ line to bottom of window.  Repeated presses then scroll 
up or down a
 windowful.  Nil value instead ignores current line and always scrolls up or
 down a windowful."))
 
-;; The smart keys scroll buffers when pressed at the ends of lines.
+;; The smart keys scroll buffers when pressed at the end of lines.
 ;; These next two functions do the scrolling and keep point at the end
 ;; of line to simplify repeated scrolls when using keyboard smart keys.
 ;;
 ;; These functions may also be used to test whether the scroll action would
-;; be successful, no action is taken if it would fail (because the beginning
+;; be successful: no action is taken if it would fail (because the beginning
 ;; or end of a buffer is already showing) and nil is returned.
 ;; t is returned whenever scrolling is performed.
 
 (defun hmouse-function (func assist-flag set-point-arg-list)
-  "Executes FUNC for Action Key (Assist Key with ASSIST-FLAG non-nil) and sets 
point from SET-POINT-ARG-LIST.
+  "Execute FUNC for Action Key (Assist Key with ASSIST-FLAG non-nil) and set 
point from SET-POINT-ARG-LIST.
 FUNC may be nil in which case no function is called.
 SET-POINT-ARG-LIST is passed to the call of the command bound to
-`hmouse-set-point-command'.  Returns nil if `hmouse-set-point-command' variable
+`hmouse-set-point-command'.  Return nil if `hmouse-set-point-command' variable
 is not bound to a valid function."
-  (if (fboundp hmouse-set-point-command)
-      (let ((release-args (hmouse-set-point set-point-arg-list)))
-       (if assist-flag
-           (setq assist-key-release-window (selected-window)
-                 assist-key-release-args release-args
-                 assist-key-release-prev-point (point-marker))
-         (setq action-key-release-window (selected-window)
-               action-key-release-args release-args
-               action-key-release-prev-point (point-marker)))
-       (and (eq major-mode 'br-mode)
-            (setq action-mouse-key-prev-window 
-                  (if (br-in-view-window-p)
-                      (save-window-excursion
-                        (br-next-listing-window)
-                        (selected-window))
-                    (selected-window))))
-       (setq action-mouse-key-prefix-arg current-prefix-arg)
-       (when func
-         (funcall func)
-         (setq action-mouse-key-prev-window nil
-               action-mouse-key-prefix-arg nil))
-       t)))
+  (when (fboundp hmouse-set-point-command)
+    (if assist-flag
+       (setq assist-key-release-window (hmouse-key-release-window)
+             assist-key-release-prev-point (point-marker))
+      (setq action-key-release-window (hmouse-key-release-window)
+           action-key-release-prev-point (point-marker)))
+    (and (eq major-mode 'br-mode)
+        (setq action-mouse-key-prev-window 
+              (if (br-in-view-window-p)
+                  (save-window-excursion
+                    (br-next-listing-window)
+                    (selected-window))
+                (selected-window))))
+    (setq action-mouse-key-prefix-arg current-prefix-arg)
+    (let ((release-args (hmouse-set-point set-point-arg-list)))
+      (if assist-flag
+         (setq assist-key-release-args release-args)
+       (setq action-key-release-args release-args)))
+    (when func
+      (funcall func)
+      (setq action-mouse-key-prev-window nil
+           action-mouse-key-prefix-arg nil))
+    t))
 
 (defun smart-scroll-down ()
-  "Scrolls down according to value of smart-scroll-proportional.
+  "Scroll down according to value of smart-scroll-proportional.
 If smart-scroll-proportional is nil or if point is on the bottom window line,
-scrolls down (backward) a windowful.  Otherwise, tries to bring current line
-to bottom of window.  Leaves point at end of line and returns t if scrolled,
+scroll down (backward) a windowful.  Otherwise, try to bring current line
+to the bottom of the window.  Leave point at end of line and return t if 
scrolled,
 nil if not."
   (interactive)
   (let ((rtn t))
@@ -672,10 +932,10 @@ nil if not."
     rtn))
 
 (defun smart-scroll-up ()
-  "Scrolls up according to value of smart-scroll-proportional.
+  "Scroll up according to value of smart-scroll-proportional.
 If smart-scroll-proportional is nil or if point is on the top window line,
-scrolls up (forward) a windowful.  Otherwise, tries to bring current line to
-top of window.  Leaves point at end of line and returns t if scrolled, nil if
+scroll up (forward) a windowful.  Otherwise, tyr to bring current line to
+the top of the window.  Leave point at end of line and return t if scrolled, 
nil if
 not."
   (interactive)
   (let ((rtn t))
diff --git a/hmouse-key.el b/hmouse-key.el
index f63735b..48a4ccc 100644
--- a/hmouse-key.el
+++ b/hmouse-key.el
@@ -11,7 +11,7 @@
 ;;
 ;;; Commentary:
 ;;
-;;   Supports Mac OS X, X, NEXTSTEP and MS Windows window systems.
+;;   Supports macOS, X, NEXTSTEP and MS Windows window systems.
 ;;
 ;;   `hmouse-install' globally binds the Action and Assist Mouse Keys
 ;;   to shifted mouse buttons and optionally binds the Action Mouse Key
@@ -44,6 +44,22 @@
 ;;; Public functions
 ;;; ************************************************************************
 
+(defun hmouse-check-action-key ()
+  "After use of the Action Mouse Key, ensure both depress and release events 
are assigned to the key.
+Returns t iff the key is properly bound, else nil."
+  (and (or (and (eventp action-key-depress-args) (eventp 
action-key-release-args))
+          (not (or action-key-depress-args action-key-release-args)))
+       (where-is-internal 'action-key-depress-emacs (current-global-map) t)
+       (where-is-internal 'action-mouse-key-emacs (current-global-map) t)))
+
+(defun hmouse-check-assist-key ()
+  "After use of the Assist Mouse Key, ensure both depress and release events 
are assigned to the key.
+Returns t iff the key is properly bound, else nil."
+  (and (or (and (eventp assist-key-depress-args) (eventp 
assist-key-release-args))
+          (not (or assist-key-depress-args assist-key-release-args)))
+       (where-is-internal 'assist-key-depress-emacs (current-global-map) t)
+       (where-is-internal 'assist-mouse-key-emacs (current-global-map) t)))
+
 (defun hmouse-set-bindings (key-binding-list)
   "Sets mouse keys used as Smart Keys to bindings in KEY-BINDING-LIST.
 KEY-BINDING-LIST is the value of either `hmouse-previous-bindings'
@@ -95,9 +111,15 @@ Assist Key = shift-right mouse key."
   (if (called-interactively-p 'interactive)
       ;; Assume emacs has support for 3 mouse keys.
       (message "%s the Action Mouse Key; {Shift-Mouse-3} invokes the Assist 
Mouse Key."
-              (if hmouse-middle-flag "{Mouse-2} and {Shift Mouse-2} invoke"
+              (if hmouse-middle-flag "{Mouse-2} and {Shift-Mouse-2} invoke"
                 "{Shift-Mouse-2} invokes"))))
 
+(defun hmouse-add-unshifted-smart-keys ()
+  "Binds mouse-2 to the Action Key and mouse-3 to the Assist Key."
+  (interactive)
+  (require 'hyperbole)
+  (hmouse-unshifted-setup))
+  
 (defun hmouse-toggle-bindings ()
   "Toggles between Smart Mouse Key settings and their prior bindings.
 Under InfoDock, the first invocation of this command will make the middle
@@ -120,6 +142,19 @@ mouse key the Paste Key instead of the Action Key."
       (error "(hmouse-toggle-bindings): `%s' is empty."
             (if hmouse-bindings-flag 'hmouse-previous-bindings 
'hmouse-bindings)))))
 
+;; Define function to reload Smart Key bindings and actions after a source 
code change.
+(defun hmouse-update-smart-keys ()
+  "Reloads the contexts and actions associated with the Smart Keys after any 
programmatic changes are made."
+  (interactive)
+  (hkey-initialize)
+  (makunbound 'hkey-alist)
+  (makunbound 'hmouse-alist)
+  (let ((load-prefer-newer t))
+    ;; This also reloads "hui-window" where mouse-only actions are defined.
+    (mapc #'load '("hui-mouse" "hibtypes" "hactypes")))
+  (message "Hyperbole Smart Key and Smart Mouse Key actions have been 
updated."))
+
+
 ;;; ************************************************************************
 ;;; Private variables
 ;;; ************************************************************************
diff --git a/hmouse-mod.el b/hmouse-mod.el
index c6b2332..0c3df2b 100644
--- a/hmouse-mod.el
+++ b/hmouse-mod.el
@@ -11,6 +11,13 @@
 
 ;;; Commentary:
 ;;
+;;   This is presently not used because Emacs binds Control and Meta
+;;   mouse keys which interfere with this mode.  To make this work,
+;;   Hyperbole will first have to unbind those mouse keys before
+;;   invoking this mode.
+;;
+;;   ----
+;;
 ;;   This defines a single minor mode, hmouse-mod-mode (Hmouse
 ;;   Modifier mode) which makes the Action Mouse Key operate as a
 ;;   Control- modifier key and the Assist Mouse Key operate as a Meta-
@@ -116,6 +123,8 @@ This stops the Smart Keys from acting as modifier keys."
 (defun hmouse-mod-enable ()
   "Creates `hmouse-mod--global-map' and installs it as the current global map.
 It accounts for modifier Smart Keys."
+  (error "(hmouse-mod-mode): Don't use this; it conflicts with Emacs mouse 
bindings.")
+
   (setq hmouse-mod--global-map (copy-keymap global-map))
   (substitute-key-definition
     'self-insert-command 'hmouse-mod-insert-command hmouse-mod--global-map)
diff --git a/hmouse-sh.el b/hmouse-sh.el
index ee347ed..b93e6a0 100644
--- a/hmouse-sh.el
+++ b/hmouse-sh.el
@@ -25,12 +25,237 @@
 ;;; ************************************************************************
 
 ;; Other mouse event location prefixes to possibly handle:
-;;   header-line
 ;;   vertical-scroll-bar
 ;;   horizontal-scroll-bar
 ;;   right-divider
 ;;   bottom-divider
 
+(defun hmouse-bind-key-emacs (mouse-key-number depress-cmd release-cmd)
+  "Ensure MOUSE-KEY-NUMBER (1-5), e.g. 1 for [mouse-1], is globally bound to 
DEPRESS-CMD and RELEASE-CMD (includes depresses and drags).
+Use nil as cmd values to unbind a key.  Works under GNU Emacs only."
+  (hmouse-set-key-list
+   depress-cmd
+   (nth (1- mouse-key-number)
+       '(
+         ([down-mouse-1]
+          [double-down-mouse-1] [triple-down-mouse-1]
+          [header-line down-mouse-1]
+          [left-fringe down-mouse-1]
+          [right-fringe down-mouse-1]
+          [vertical-line down-mouse-1]
+          [mode-line down-mouse-1])
+
+         ([down-mouse-2]
+          [double-down-mouse-2] [triple-down-mouse-2]
+          [header-line down-mouse-2]
+          [left-fringe down-mouse-2]
+          [right-fringe down-mouse-2]
+          [vertical-line down-mouse-2]
+          [mode-line down-mouse-2])
+
+         ([down-mouse-3]
+          [double-down-mouse-3] [triple-down-mouse-3]
+          [header-line down-mouse-3]
+          [left-fringe down-mouse-3]
+          [right-fringe down-mouse-3]
+          [vertical-line down-mouse-3]
+          [mode-line down-mouse-3])
+         
+         ([down-mouse-4]
+          [double-down-mouse-4] [triple-down-mouse-4]
+          [header-line down-mouse-4]
+          [left-fringe down-mouse-4]
+          [right-fringe down-mouse-4]
+          [vertical-line down-mouse-4]
+          [mode-line down-mouse-4])
+
+         ([down-mouse-5]
+          [double-down-mouse-5] [triple-down-mouse-5]
+          [header-line down-mouse-5]
+          [left-fringe down-mouse-5]
+          [right-fringe down-mouse-5]
+          [vertical-line down-mouse-5]
+          [mode-line down-mouse-5])
+         )))
+          
+  (hmouse-set-key-list
+   release-cmd
+   (nth (1- mouse-key-number)
+       '(
+         ([drag-mouse-1] [mouse-1]
+          [double-mouse-1] [triple-mouse-1]
+          [header-line drag-mouse-1]
+          [header-line mouse-1]
+          [left-fringe drag-mouse-1]
+          [left-fringe mouse-1]
+          [right-fringe drag-mouse-1]
+          [right-fringe mouse-1]
+          [vertical-line drag-mouse-1]
+          [vertical-line mouse-1]
+          [mode-line drag-mouse-1]
+          [mode-line mouse-1])
+
+         ([drag-mouse-2] [mouse-2]
+          [double-mouse-2] [triple-mouse-2]
+          [header-line drag-mouse-2]
+          [header-line mouse-2]
+          [left-fringe drag-mouse-2]
+          [left-fringe mouse-2]
+          [right-fringe drag-mouse-2]
+          [right-fringe mouse-2]
+          [vertical-line drag-mouse-2]
+          [vertical-line mouse-2]
+          [mode-line drag-mouse-2]
+          [mode-line mouse-2])
+
+         ([drag-mouse-3] [mouse-3]
+          [double-mouse-3] [triple-mouse-3]
+          [header-line drag-mouse-3]
+          [header-line mouse-3]
+          [left-fringe drag-mouse-3]
+          [left-fringe mouse-3]
+          [right-fringe drag-mouse-3]
+          [right-fringe mouse-3]
+          [vertical-line drag-mouse-3]
+          [vertical-line mouse-3]
+          [mode-line drag-mouse-3]
+          [mode-line mouse-3])
+
+         ([drag-mouse-4] [mouse-4]
+          [double-mouse-4] [triple-mouse-4]
+          [header-line drag-mouse-4]
+          [header-line mouse-4]
+          [left-fringe drag-mouse-4]
+          [left-fringe mouse-4]
+          [right-fringe drag-mouse-4]
+          [right-fringe mouse-4]
+          [vertical-line drag-mouse-4]
+          [vertical-line mouse-4]
+          [mode-line drag-mouse-4]
+          [mode-line mouse-4])
+
+         ([drag-mouse-5] [mouse-5]
+          [double-mouse-5] [triple-mouse-5]
+          [header-line drag-mouse-5]
+          [header-line mouse-5]
+          [left-fringe drag-mouse-5]
+          [left-fringe mouse-5]
+          [right-fringe drag-mouse-5]
+          [right-fringe mouse-5]
+          [vertical-line drag-mouse-5]
+          [vertical-line mouse-5]
+          [mode-line drag-mouse-5]
+          [mode-line mouse-5])
+         ))))
+
+(defun hmouse-bind-shifted-key-emacs (shifted-mouse-key-number depress-cmd 
release-cmd)
+  "Ensure shifted MOUSE-KEY-NUMBER (1-5), e.g. 1 for [Smouse-1], is globally 
bound to DEPRESS-CMD and RELEASE-CMD (includes depresses and drags).
+Use nil as CMD value to unbind the key.  Works under GNU Emacs only."
+  (hmouse-set-key-list
+   depress-cmd
+   (nth (1- shifted-mouse-key-number)
+       '(
+         ([S-down-mouse-1] [header-line S-down-mouse-1]
+          [left-fringe S-down-mouse-1]
+          [right-fringe S-down-mouse-1]
+          [vertical-line S-down-mouse-1]
+          [mode-line S-down-mouse-1])
+
+         ([S-down-mouse-2] [header-line S-down-mouse-2]
+          [left-fringe S-down-mouse-2]
+          [right-fringe S-down-mouse-2]
+          [vertical-line S-down-mouse-2]
+          [mode-line S-down-mouse-2])
+
+         ([S-down-mouse-3] [header-line S-down-mouse-3]
+          [left-fringe S-down-mouse-3]
+          [right-fringe S-down-mouse-3]
+          [vertical-line S-down-mouse-3]
+          [mode-line S-down-mouse-3])
+         
+         ([S-down-mouse-4] [header-line S-down-mouse-4]
+          [left-fringe S-down-mouse-4]
+          [right-fringe S-down-mouse-4]
+          [vertical-line S-down-mouse-4]
+          [mode-line S-down-mouse-4])
+
+         ([S-down-mouse-5] [header-line S-down-mouse-5]
+          [left-fringe S-down-mouse-5]
+          [right-fringe S-down-mouse-5]
+          [vertical-line S-down-mouse-5]
+          [mode-line S-down-mouse-5])
+         )))
+         
+  (hmouse-set-key-list
+   release-cmd
+   (nth (1- shifted-mouse-key-number)
+       '(
+         ([S-drag-mouse-1] [S-mouse-1]
+          [S-double-mouse-1] [S-triple-mouse-1]
+          [header-line S-drag-mouse-1]
+          [header-line S-mouse-1]
+          [left-fringe S-drag-mouse-1]
+          [left-fringe S-mouse-1]
+          [right-fringe S-drag-mouse-1]
+          [right-fringe S-mouse-1]
+          [vertical-line S-drag-mouse-1]
+          [vertical-line S-mouse-1]
+          [mode-line S-drag-mouse-1]
+          [mode-line S-mouse-1])
+
+         ([S-drag-mouse-2] [S-mouse-2]
+          [S-double-mouse-2] [S-triple-mouse-2]
+          [header-line S-drag-mouse-2]
+          [header-line S-mouse-2]
+          [left-fringe S-drag-mouse-2]
+          [left-fringe S-mouse-2]
+          [right-fringe S-drag-mouse-2]
+          [right-fringe S-mouse-2]
+          [vertical-line S-drag-mouse-2]
+          [vertical-line S-mouse-2]
+          [mode-line S-drag-mouse-2]
+          [mode-line S-mouse-2])
+
+         ([S-drag-mouse-3] [S-mouse-3]
+          [S-double-mouse-3] [S-triple-mouse-3]
+          [header-line S-drag-mouse-3]
+          [header-line S-mouse-3]
+          [left-fringe S-drag-mouse-3]
+          [left-fringe S-mouse-3]
+          [right-fringe S-drag-mouse-3]
+          [right-fringe S-mouse-3]
+          [vertical-line S-drag-mouse-3]
+          [vertical-line S-mouse-3]
+          [mode-line S-drag-mouse-3]
+          [mode-line S-mouse-3])
+
+         ([S-drag-mouse-4] [S-mouse-4]
+          [S-double-mouse-4] [S-triple-mouse-4]
+          [header-line S-drag-mouse-4]
+          [header-line S-mouse-4]
+          [left-fringe S-drag-mouse-4]
+          [left-fringe S-mouse-4]
+          [right-fringe S-drag-mouse-4]
+          [right-fringe S-mouse-4]
+          [vertical-line S-drag-mouse-4]
+          [vertical-line S-mouse-4]
+          [mode-line S-drag-mouse-4]
+          [mode-line S-mouse-4])
+
+         ([S-drag-mouse-5] [S-mouse-5]
+          [S-double-mouse-5] [S-triple-mouse-5]
+          [header-line S-drag-mouse-5]
+          [header-line S-mouse-5]
+          [left-fringe S-drag-mouse-5]
+          [left-fringe S-mouse-5]
+          [right-fringe S-drag-mouse-5]
+          [right-fringe S-mouse-5]
+          [vertical-line S-drag-mouse-5]
+          [vertical-line S-mouse-5]
+          [mode-line S-drag-mouse-5]
+          [mode-line S-mouse-5])
+         ))))
+          
 (defun hmouse-get-bindings (hmouse-middle-flag)
   "Returns the list of current bindings of mouse keys used by Hyperbole.
 If HMOUSE-MIDDLE-FLAG is non-nil, includes the middle mouse key binding as 
well.
@@ -77,7 +302,7 @@ These may be the bindings prior to initializing Hyperbole or 
the Hyperbole bindi
                             [mode-line S-down-mouse-2] [mode-line 
S-drag-mouse-2]
                             [mode-line S-mouse-2]
                             )
-                        ;; X, OS X or MS Windows
+                        ;; X, macOS or MS Windows
                         '([S-down-mouse-2] [S-drag-mouse-2] [S-mouse-2]
                           [S-down-mouse-3] [S-drag-mouse-3] [S-mouse-3]
                           [S-double-mouse-2] [S-triple-mouse-2]
@@ -147,11 +372,11 @@ These may be the bindings prior to initializing Hyperbole 
or the Hyperbole bindi
         '(("emacs" .
            (mapcar (lambda (key) (cons key (global-key-binding key)))
                    (if (not (eq window-system 'dps))
-                       ;; X, OS X or MS Windows
+                       ;; X, macOS or MS Windows
                        '([down-mouse-2] [drag-mouse-2] [mouse-2]
-                         ;; [down-mouse-3] [drag-mouse-3] [mouse-3]
+                         [down-mouse-3] [drag-mouse-3] [mouse-3]
                          [double-mouse-2] [triple-mouse-2]
-                         ;; [double-mouse-3] [triple-mouse-3]
+                         [double-mouse-3] [triple-mouse-3]
                          [header-line down-mouse-2] [header-line drag-mouse-2]
                          [header-line mouse-2]
                          [left-fringe down-mouse-2] [left-fringe drag-mouse-2]
@@ -160,43 +385,58 @@ These may be the bindings prior to initializing Hyperbole 
or the Hyperbole bindi
                          [right-fringe mouse-2]
                          [vertical-line down-mouse-2] [vertical-line 
drag-mouse-2]
                          [vertical-line mouse-2]
-                         ;; [left-fringe down-mouse-3] [left-fringe 
drag-mouse-3]
-                         ;; [left-fringe mouse-3]
-                         ;; [right-fringe down-mouse-3] [right-fringe 
drag-mouse-3]
-                         ;; [right-fringe mouse-3]
-                         ;; [vertical-line down-mouse-3] [vertical-line 
drag-mouse-3]
-                         ;; [vertical-line mouse-3]
+                         [left-fringe down-mouse-3] [left-fringe drag-mouse-3]
+                         [left-fringe mouse-3]
+                         [right-fringe down-mouse-3] [right-fringe 
drag-mouse-3]
+                         [right-fringe mouse-3]
+                         [vertical-line down-mouse-3] [vertical-line 
drag-mouse-3]
+                         [vertical-line mouse-3]
                          [mode-line down-mouse-2] [mode-line drag-mouse-2]
                          [mode-line mouse-2]
-                         ;; [mode-line down-mouse-3] [mode-line drag-mouse-3]
-                         ;; [mode-line mouse-3]
+                         [mode-line down-mouse-3] [mode-line drag-mouse-3]
+                         [mode-line mouse-3]
                          ))))
           ("xemacs" .
            (nconc
             (mapcar (lambda (key)
                       (cons key (global-key-binding key)))
                     '([button2] [button2up]
-                      ;; [button3] [button3up]
+                      [button3] [button3up]
                       ))
-            ;; (if (boundp 'mode-line-map)
-            ;;   (mapcar (function
-            ;;     (lambda (key)
-            ;;       (cons key (lookup-key mode-line-map key))))
-            ;;    '([button3] [button3up])))
+            (if (boundp 'mode-line-map)
+                (mapcar (function
+                         (lambda (key)
+                           (cons key (lookup-key mode-line-map key))))
+                        '([button3] [button3up])))
             ))
           ("xterm" .
            (mapcar (lambda (key) (cons key (lookup-key mouse-map key)))
                    (list x-button-middle x-button-middle-up
-                         ;; x-button-right  x-button-right-up
+                         x-button-right  x-button-right-up
                          )))
           )))))
 
-;; Based on functions from Emacs mouse.el.
+;; Based on a function from Emacs mouse.el.
+(defun hmouse-posn-set-point (position)
+  "Move point to POSITION, an event posn.
+Select the corresponding window as well."
+  (if (framep (posn-window position))
+      (progn (if (not (windowp (frame-selected-window (posn-window position))))
+                (error "Position not in text area of window"))
+            (select-window (frame-selected-window (posn-window position))))
+    (if (not (windowp (posn-window position)))
+       (error "Position not in text area of window"))
+    (select-window (posn-window position)))
+  (if (numberp (posn-point position))
+      (goto-char (posn-point position))))
+
+;; Based on a function from Emacs mouse.el.
 (defun hmouse-move-point-emacs (event &optional promote-to-region)
   "Move point to the position clicked on with the mouse.
 This should be bound to a mouse click event type.
 If PROMOTE-TO-REGION is non-nil and event is a multiple-click,
-select the corresponding element around point."
+select the corresponding element around point, with the resulting position of
+point determined by `mouse-select-region-move-to-beginning'."
   (interactive "e\np")
   (let ((start-w-or-f (posn-window (event-start event)))
        (end-w-or-f   (posn-window (event-end event))))
@@ -211,7 +451,11 @@ select the corresponding element around point."
       ;; Give temporary modes such as isearch a chance to turn off.
       (run-hooks 'mouse-leave-buffer-hook)
       (if (and promote-to-region (> (event-click-count event) 1))
-         (mouse-set-region event)
+         (progn (mouse-set-region event)
+                (when (and (boundp 'mouse-select-region-move-to-beginning)
+                           mouse-select-region-move-to-beginning)
+                  (when (> (posn-point (event-start event)) (region-beginning))
+                    (exchange-point-and-mark))))
        ;; Use event-end in case called from mouse-drag-region.
        ;; If EVENT is a click, event-end and event-start give same value.
        (if (and (window-minibuffer-p end-w-or-f)
@@ -219,7 +463,7 @@ select the corresponding element around point."
            ;; Select the ending frame only, not the window pressed within.
            (select-frame (window-frame end-w-or-f))
          (condition-case ()
-             (posn-set-point (event-end event))
+             (hmouse-posn-set-point (event-end event))
            (error (select-frame (window-frame end-w-or-f)))))))))
 
 (defun hmouse-move-point-eterm (arg-list)
@@ -258,88 +502,13 @@ select the corresponding element around point."
      (hyperb:emacs-p
       (setq hmouse-set-point-command 'hmouse-move-point-emacs)
       (if (eq window-system 'dps)
-         ;; NEXTSTEP offers only 2 shift-mouse buttons which we use
-         ;; as the Smart Keys.
+         ;; NEXTSTEP offers only 2 shift-mouse buttons which we use as the 
Smart Keys.
          (progn
-           (hmouse-set-key-list #'action-key-depress-emacs
-                                '([S-down-mouse-1] [header-line S-down-mouse-1]
-                                  [left-fringe S-down-mouse-1]
-                                  [right-fringe S-down-mouse-1]
-                                  [vertical-line S-down-mouse-1]
-                                  [mode-line S-down-mouse-1]))
-           (hmouse-set-key-list #'action-mouse-key-emacs
-                                '([S-drag-mouse-1] [S-mouse-1]
-                                  [S-double-mouse-1] [S-triple-mouse-1]
-                                  [header-line S-drag-mouse-1]
-                                  [header-line S-mouse-1]
-                                  [left-fringe S-drag-mouse-1]
-                                  [left-fringe S-mouse-1]
-                                  [right-fringe S-drag-mouse-1]
-                                  [right-fringe S-mouse-1]
-                                  [vertical-line S-drag-mouse-1]
-                                  [vertical-line S-mouse-1]
-                                  [mode-line S-drag-mouse-1]
-                                  [mode-line S-mouse-1]))
-
-           (hmouse-set-key-list #'assist-key-depress-emacs
-                                '([S-down-mouse-2] [header-line S-down-mouse-2]
-                                  [left-fringe S-down-mouse-2]
-                                  [right-fringe S-down-mouse-2]
-                                  [vertical-line S-down-mouse-2]
-                                  [mode-line S-down-mouse-2]))
-           (hmouse-set-key-list #'assist-mouse-key-emacs
-                                '([S-drag-mouse-2] [S-mouse-2]
-                                  [S-double-mouse-2] [S-triple-mouse-2]
-                                  [header-line S-drag-mouse-2]
-                                  [header-line S-mouse-2]
-                                  [left-fringe S-drag-mouse-2]
-                                  [left-fringe S-mouse-2]
-                                  [right-fringe S-drag-mouse-2]
-                                  [right-fringe S-mouse-2]
-                                  [vertical-line S-drag-mouse-2]
-                                  [vertical-line S-mouse-2]
-                                  [mode-line S-drag-mouse-2]
-                                  [mode-line S-mouse-2])))
-       ;; X, OS X or MS Windows
-       (hmouse-set-key-list #'action-key-depress-emacs
-                            '([S-down-mouse-2] [header-line S-down-mouse-2]
-                              [left-fringe S-down-mouse-2]
-                              [right-fringe S-down-mouse-2]
-                              [vertical-line S-down-mouse-2]
-                              [mode-line S-down-mouse-2]))
-       (hmouse-set-key-list #'action-mouse-key-emacs
-                            '([S-drag-mouse-2] [S-mouse-2]
-                              [S-double-mouse-2] [S-triple-mouse-2]
-                              [header-line S-drag-mouse-2]
-                              [header-line S-mouse-2]
-                              [left-fringe S-drag-mouse-2]
-                              [left-fringe S-mouse-2]
-                              [right-fringe S-drag-mouse-2]
-                              [right-fringe S-mouse-2]
-                              [vertical-line S-drag-mouse-2]
-                              [vertical-line S-mouse-2]
-                              [mode-line S-drag-mouse-2]
-                              [mode-line S-mouse-2]))
-
-       (hmouse-set-key-list #'assist-key-depress-emacs
-                            '([S-down-mouse-3] [header-line S-down-mouse-3]
-                              [left-fringe S-down-mouse-3]
-                              [right-fringe S-down-mouse-3]
-                              [vertical-line S-down-mouse-3]
-                              [mode-line S-down-mouse-3]))
-       (hmouse-set-key-list #'assist-mouse-key-emacs
-                            '([S-drag-mouse-3] [S-mouse-3]
-                              [S-double-mouse-3] [S-triple-mouse-3]
-                              [header-line S-drag-mouse-3]
-                              [left-fringe S-drag-mouse-3]
-                              [left-fringe S-mouse-3]
-                              [right-fringe S-drag-mouse-3]
-                              [right-fringe S-mouse-3]
-                              [header-line S-mouse-3]
-                              [vertical-line S-drag-mouse-3]
-                              [vertical-line S-mouse-3]
-                              [mode-line S-drag-mouse-3]
-                              [mode-line S-mouse-3]))))
+           (hmouse-bind-shifted-key-emacs 1 #'action-key-depress-emacs 
#'action-mouse-key-emacs)
+           (hmouse-bind-shifted-key-emacs 2 #'assist-key-depress-emacs 
#'assist-mouse-key-emacs))
+       ;; X, macOS or MS Windows
+       (hmouse-bind-shifted-key-emacs 2 #'action-key-depress-emacs 
#'action-mouse-key-emacs)
+       (hmouse-bind-shifted-key-emacs 3 #'assist-key-depress-emacs 
#'assist-mouse-key-emacs)))
      ;;
      ;; XEmacs
      ((featurep 'xemacs)
@@ -367,83 +536,49 @@ select the corresponding element around point."
       (define-key mouse-map x-button-s-middle-up 'action-mouse-key)
       (define-key mouse-map x-button-s-right 'assist-key-depress)
       (define-key mouse-map x-button-s-right-up 'assist-mouse-key)
-      ;; Use these instead of the above for a true META-BUTTON binding.
-      ;; (define-key mouse-map x-button-m-middle 'assist-key-depress)
-      ;; (define-key mouse-map x-button-m-middle-up 'assist-mouse-key)
       )
      ;;
      ;; NeXT
      ((equal (hyperb:window-system) "next")
       (setq hmouse-set-point-command 'hmouse-move-point-eterm)
-      ;; Use left button to set point.
-      ;; Use shift-left button instead of non-existent middle as Action Key.
+      ;; NEXTSTEP offers only 2 shift-mouse buttons which we use as the Smart 
Keys.
       (mapc
        (lambda (region)
         (global-set-mouse (cons region '(shift left))     'action-key-depress)
         (global-set-mouse (cons region '(shift up left))  'action-mouse-key)
         (global-set-mouse (cons region '(shift right))    'assist-key-depress)
         (global-set-mouse (cons region '(shift up right)) 'assist-mouse-key)
-        ;; Use these instead of the above for a true META-BUTTON binding.
-        ;; (global-set-mouse (cons region '(meta    right))  
'assist-key-depress)
-        ;; (global-set-mouse (cons region '(meta up right))  'assist-mouse-key)
         )
        '(text scrollbar modeline minibuffer))
       ))
     (setq hmouse-bindings (hmouse-get-bindings hmouse-middle-flag)
          hmouse-bindings-flag t)))
 
-(defun hmouse-unshifted-setup (&optional _hmouse-middle-flag)
-  "Binds the middle mouse key to the Action Key."
+(defun hmouse-unshifted-setup (&optional middle-key-only-flag)
+  "Binds the middle mouse key as the Action Key and the right mouse key as the 
Assist Key.
+With optional MIDDLE-KEY-ONLY-FLAG non-nil, binds only the middle mouse key."
   (interactive)
   (cond        ;; GNU Emacs
    (hyperb:emacs-p
-    ;; Get rid of Info-mode [mouse-2] binding since Hyperbole performs
-    ;; a superset of what it does.
+    ;; In Info-mode, Emacs uses key-translation-map to link mouse-1 to
+    ;; do whatever mouse-2 does but because Hyperbole uses both down
+    ;; and up bindings on mouse2, this does work.  So we rebind
+    ;; mouse-1 in Info mode to be an actual Action Mouse Key (which
+    ;; makes it follow Info links/cross-references properly, doing a
+    ;; superset of what it did before).
     (var:add-and-run-hook 'Info-mode-hook
-                         (lambda () (define-key Info-mode-map [mouse-2] nil)))
+                         (lambda ()
+                           (define-key Info-mode-map [down-mouse-1] 
'action-key-depress-emacs)
+                           (define-key Info-mode-map [mouse-1] 
'action-mouse-key-emacs)
+                           (define-key Info-mode-map [double-down-mouse-1] 
'action-key-depress-emacs)
+                           (define-key Info-mode-map [double-mouse-1] 
'action-mouse-key-emacs)
+                           (define-key Info-mode-map [mouse-2] nil)))
     ;;
-    (if (not (eq window-system 'dps))
-       ;; X, OS X or MS Windows
-       (progn (hmouse-set-key-list #'action-key-depress-emacs
-                                   '([down-mouse-2] [header-line down-mouse-2]
-                                     [left-fringe down-mouse-2]
-                                     [right-fringe down-mouse-2]
-                                     [vertical-line down-mouse-2]
-                                     [mode-line down-mouse-2]))
-              (hmouse-set-key-list #'action-mouse-key-emacs
-                                   '([drag-mouse-2] [mouse-2]
-                                     [double-mouse-2] [triple-mouse-2]
-                                     [header-line drag-mouse-2]
-                                     [header-line mouse-2]
-                                     [left-fringe drag-mouse-2]
-                                     [left-fringe mouse-2]
-                                     [right-fringe drag-mouse-2]
-                                     [right-fringe mouse-2]
-                                     [vertical-line drag-mouse-2]
-                                     [vertical-line mouse-2]
-                                     [mode-line drag-mouse-2]
-                                     [mode-line mouse-2]))
-
-              ;; (hmouse-set-key-list #'assist-key-depress-emacs
-              ;;                    '([down-mouse-3] [header-line down-mouse-3]
-              ;;                      [left-fringe down-mouse-3]
-              ;;                      [right-fringe down-mouse-3]
-              ;;                      [vertical-line down-mouse-3]
-              ;;                      [mode-line down-mouse-3]))
-              ;; (hmouse-set-key-list #'assist-mouse-key-emacs
-              ;;                    '([drag-mouse-3] [mouse-3]
-              ;;                      [double-mouse-3] [triple-mouse-3]
-              ;;                      [header-line drag-mouse-3]
-              ;;                      [header-line mouse-3]
-              ;;                      [left-fringe drag-mouse-3]
-              ;;                      [left-fringe mouse-3]
-              ;;                      [right-fringe drag-mouse-3]
-              ;;                      [right-fringe mouse-3]
-              ;;                      [vertical-line drag-mouse-3]
-              ;;                      [vertical-line mouse-3]
-              ;;                      [mode-line drag-mouse-3]
-              ;;                      [mode-line mouse-3]))
-              )))
+    (unless (eq window-system 'dps)
+       ;; X, macOS or MS Windows
+      (hmouse-bind-key-emacs 2 #'action-key-depress-emacs 
#'action-mouse-key-emacs)
+      (unless middle-key-only-flag
+       (hmouse-bind-key-emacs 3 #'assist-key-depress-emacs 
#'assist-mouse-key-emacs))))
    ;;
    ;; XEmacs
    ((featurep 'xemacs)
@@ -451,33 +586,30 @@ select the corresponding element around point."
     ;; system since it can have frames on ttys and windowed displays at
     ;; the same time.
     ;;
-    ;; Get rid of Info-mode button 2 bindings since Hyperbole
+    ;; Get rid of Info-mode button 2 and possibly button 3 bindings since 
Hyperbole
     ;; handles things in Info.
     (var:add-and-run-hook 'Info-mode-hook
                          (lambda () (define-key Info-mode-map 'button2 nil)))
     ;;
     (global-set-key 'button2     'action-key-depress)
     (global-set-key 'button2up   'action-mouse-key)
-    ;; (if (and (boundp 'Info-mode-map) (keymapp Info-mode-map))
-    ;;    (funcall (lambda () (define-key Info-mode-map 'button3 nil)))
-    ;;  (add-hook 'Info-mode-hook unbind-but3))
-    ;; (if (boundp 'mode-line-map)
-    ;;    (progn (define-key mode-line-map 'button3   'assist-key-depress)
-    ;;    (define-key mode-line-map 'button3up 'assist-mouse-key)))
-    ;; (global-set-key 'button3     'assist-key-depress)
-    ;; (global-set-key 'button3up   'assist-mouse-key)
-    )
+    (unless middle-key-only-flag
+      (if (and (boundp 'Info-mode-map) (keymapp Info-mode-map))
+          (funcall (lambda () (define-key Info-mode-map 'button3 nil)))
+       (add-hook 'Info-mode-hook unbind-but3))
+      (when (boundp 'mode-line-map)
+        (define-key mode-line-map 'button3   'assist-key-depress)
+       (define-key mode-line-map 'button3up 'assist-mouse-key))
+      (global-set-key 'button3     'assist-key-depress)
+      (global-set-key 'button3up   'assist-mouse-key)))
    ;;
    ;; X
    ((equal (hyperb:window-system) "xterm")
     (define-key mouse-map x-button-middle 'action-key-depress)
     (define-key mouse-map x-button-middle-up 'action-mouse-key)
-    ;; (define-key mouse-map x-button-right 'assist-key-depress)
-    ;; (define-key mouse-map x-button-right-up 'assist-mouse-key)
-    ;; Use these instead of the above for a true META-BUTTON binding.
-    ;; (define-key mouse-map x-button-m-middle 'assist-key-depress)
-    ;; (define-key mouse-map x-button-m-middle-up 'assist-mouse-key)
-    )))
+    (unless middle-key-only-flag
+      (define-key mouse-map x-button-right 'assist-key-depress)
+      (define-key mouse-map x-button-right-up 'assist-mouse-key)))))
 
 (provide 'hmouse-sh)
 
diff --git a/hmouse-tag.el b/hmouse-tag.el
index e41497e..5ab5e57 100644
--- a/hmouse-tag.el
+++ b/hmouse-tag.el
@@ -565,19 +565,33 @@ buffer."
   (interactive)
   (unless (and (smart-emacs-lisp-mode-p) (fboundp 'find-library)
               ;; Handle Emacs Lisp `require', `load', and `autoload' clauses.
-              (let ((lib)
-                    (opoint (point)))
+              (let ((opoint (point))
+                    type
+                    name
+                    lib)
                 (setq lib (and (search-backward "\(" nil t)
-                               (looking-at (concat
-                                            "(\\(require\\|load\\|autoload\\)"
-                                            "[ \t]+.*['\"]"
-                                            "\\([^][() \t\n\r`'\"]+\\)"))))
+                               (or
+                                ;; load with a filename
+                                (looking-at "(\\(load\\)[ 
\t]+\\(\\)\"\\([^][() \t\n\r`'\"]+\\)")
+                                ;; autoload or require with a name and filename
+                                (looking-at "(\\(autoload\\|require\\)[ 
\t]+'\\([^][() \t\n\r`'\"]+\\)[ \t\n\r]+\"\\([^][() \t\n\r`'\"]+\\)")
+                                ;; require without a separate filename
+                                (looking-at "(\\(require\\)\\(\\)[ 
\t]+'\\([^][() \t\n\r`'\"]+\\)"))))
                 (goto-char opoint)
                 (when lib
-                  (setq lib (buffer-substring-no-properties
-                             (match-beginning 2) (match-end 2)))
+                  (setq type (match-string-no-properties 1)
+                        name (match-string-no-properties 2)
+                        lib (match-string-no-properties 3))
                   (hpath:display-buffer (current-buffer))
                   (find-library lib)
+                  (goto-char (point-min))
+                  (when (equal type "autoload")
+                    ;; Ignore defgroup matches
+                    (if (re-search-forward
+                         (format "^[; \t]*(def.[^r][^ \t\n\r]*[ \t]+%s[ 
\t\n\r]" (regexp-quote name))
+                         nil t)
+                        (goto-char (match-beginning 0))
+                      (error "(smart-lisp): Found autoload library but no 
definition for `%s'" name)))
                   t)))
     (let* ((elisp-p (smart-emacs-lisp-mode-p))
           (tag (smart-lisp-at-tag-p t))
@@ -604,18 +618,31 @@ buffer."
                                       (error nil)))
                          (error "(smart-lisp): `%s' definition not found in 
any tag table" tag)))))))))
 
-(defun smart-lisp-at-tag-p (&optional no-flash)
-  "Returns Lisp tag name that point is within, else nil.
-Returns nil when point is within a Lisp `def' keyword."
-  (let* ((identifier-chars "-_:/*+=%$&?!<>a-zA-Z0-9~^")
-        (identifier (concat "[-<>*a-zA-Z][" identifier-chars "]*"))
-        (opoint (point)))
+(defun smart-lisp-at-definition-p ()
+    "Returns t when point is in a non-help buffer on the first line of a 
non-alias Lisp definition, else nil."
+    (unless (derived-mode-p 'help-mode)
+      (save-excursion
+       (beginning-of-line)
+       ;; Exclude any define- lines.
+       (and (looking-at "\\(;*[ \t]*\\)?(def[[:alnum:]]*[[:space:]]")
+            ;; Ignore alias definitions since those typically have symbol tags 
to lookup.
+            (not (looking-at "\\(;*[ \t]*\\)?(def[^ \t\n\r]*alias"))
+            ;; Ignore lines that start with (default
+            (not (looking-at "\\(;*[ \t]*\\)?(default"))))))
+
+(defun smart-lisp-at-load-expression-p ()
+    "Returns t when point is on the first line of a Lisp library load 
expression, else nil."
     (save-excursion
       (beginning-of-line)
-      (if (and (looking-at "\\(;*[ \t]*\\)?(def[^- \t\n\r]+")
-              (< opoint (match-end 0)))
-         nil
-       (goto-char opoint)
+      (looking-at "\\(;*[ \t]*\\)?(\\(autoload\\|load\\|require\\)")))
+
+(defun smart-lisp-at-tag-p (&optional no-flash)
+  "Returns Lisp tag name that point is within, else nil.
+Returns nil when point is on the first line of a non-alias Lisp definition."
+  (unless (smart-lisp-at-definition-p)
+    (let* ((identifier-chars "-_:/*+=%$&?!<>a-zA-Z0-9~^")
+          (identifier (concat "[-<>*a-zA-Z][" identifier-chars "]*")))
+      (save-excursion
        (skip-chars-backward identifier-chars)
        (if (and (looking-at identifier)
                 ;; Ignore any all punctuation matches.
@@ -795,16 +822,29 @@ If key is pressed:
 (defun smart-python-at-tag-p (&optional no-flash)
   "Return Python tag name that point is within, else nil."
   (let* ((identifier-chars "a-zA-Z0-9_")
-        (identifier (concat "[a-zA-Z_][" identifier-chars "]*")))
+        (identifier-fragment (concat "[a-zA-Z_][" identifier-chars "]*"))
+        (identifier (concat identifier-fragment "\\(\\."
+                            identifier-fragment "\\)*"))
+        start end tag)
     (save-excursion
-      (skip-chars-backward identifier-chars)
+      ;; Allow for name1.name2.module tags.
+      (while (and (/= (skip-chars-backward identifier-chars) 0)
+                 (/= (skip-chars-backward "\.") 0)))
+      (when (= (following-char) ?.)
+       (forward-char 1))
+      (setq start (point))
+      (while (and (/= (skip-chars-forward identifier-chars) 0)
+                 (/= (skip-chars-forward "\.") 0)))
+      (when (= (preceding-char) ?.)
+       (backward-char 1))
+      (setq end (point))
+      (goto-char start)
+      (setq tag (buffer-substring-no-properties start end))
       (if (and (looking-at identifier)
-              (not (member (downcase (match-string 0)) smart-python-keywords)))
+              (not (member (downcase tag) smart-python-keywords)))
          (if no-flash
-             (buffer-substring-no-properties (point) (match-end 0))
-           (smart-flash-tag
-            (buffer-substring-no-properties (point) (match-end 0))
-            (point) (match-end 0)))))))
+             tag
+           (smart-flash-tag tag start end))))))
 
 ;;; ************************************************************************
 ;;; Private functions
@@ -1179,7 +1219,7 @@ See the \"${hyperb:dir}/smart-clib-sym\" script for more 
information."
   (if next (setq tag nil))
   (let* ((tags-table-list (or list-of-tags-tables
                              (and (boundp 'tags-table-list)
-                                  tags-table-list)
+                                  (nconc (smart-tags-file-list) 
tags-table-list))
                              (smart-tags-file-list)))
         (func (smart-tags-noselect-function))
         (tags-file-name (if tags-table-list
@@ -1266,9 +1306,10 @@ to look.  If no tags file is found, an error is 
signaled."
        (setq tags-table-list (list smart-emacs-tags-file)))
     ;; Return the appropriate tags file list.
     (cond (tags-table-list
+          ;; GNU Emacs when tags tables are found or provided by the user
           (nreverse tags-table-list))
          ((fboundp 'tags-table-check-computed-list)
-          ;; GNU Emacs
+          ;; GNU Emacs in other cases
           (tags-table-check-computed-list)
           tags-table-computed-list)
          ((fboundp 'buffer-tag-table-list)
diff --git a/hpath.el b/hpath.el
index 695a079..d26678d 100644
--- a/hpath.el
+++ b/hpath.el
@@ -43,22 +43,33 @@ Default is `nil' since this can slow down normal file 
finding."
 ;;; FILE VIEWER COMMAND SETTINGS
 ;;; ************************************************************************
 
-(defcustom hpath:external-display-alist-macos 
'(("\\.\\(adaptor\\|app\\|bshlf\\|clr\\|concur\\|create\\|diagram\\|dp\\|e?ps\\|frame\\|gif\\|locus\\|Mesa\\|nib\\|pdf\\|project\\|rtf\\|sense\\|tiff\\|tree\\)$"
 . "open"))
-  "*An alist of (FILENAME-REGEXP . DISPLAY-PROGRAM-STRING-OR-LIST) elements 
for the Macintosh window system.
+(defcustom hpath:external-open-office-suffixes 
"doc[mx]?\\|od[st]\\|ppsx?\\|ppt[mx]?\\|xls[mx]?"
+  "*Regexp of Open Office document suffix alternatives to display externally.
+See http://www.openwith.org/programs/openoffice for a full list of
+possible suffixes."
+  :type 'string
+  :group 'hyperbole-commands)
+
+(defcustom hpath:external-display-alist-macos (list (cons (format 
"\\.\\(app\\|%s\\|adaptor\\|app\\|bshlf\\|clr\\|concur\\|create\\|diagram\\|dp\\|e?ps\\|frame\\|gif\\|locus\\|Mesa\\|nib\\|pdf\\|project\\|rtf\\|sense\\|tiff\\|tree\\)$"
+                                                                 
hpath:external-open-office-suffixes)
+                                                         "open"))
+  "*An alist of (FILENAME-REGEXP . DISPLAY-PROGRAM-STRING-OR-LIST) elements 
for the macOS window system.
 See the function `hpath:get-external-display-alist' for detailed format 
documentation."
   :type 'regexp
   :group 'hyperbole-commands)
 
-(defvar hpath:external-display-alist-mswindows nil
+(defvar hpath:external-display-alist-mswindows (list (cons (format 
"\\.\\(%s\\)$" hpath:external-open-office-suffixes)
+                                                          "openoffice.exe"))
     "*An alist of (FILENAME-REGEXP . DISPLAY-PROGRAM-STRING-OR-LIST) elements 
for MS Windows.
 See the function `hpath:get-external-display-alist' for detailed format 
documentation.")
 
-(defvar hpath:external-display-alist-x '(("\\.e?ps$" . "ghostview")
-                                         ("\\.dvi$"  . "xdvi")
-                                         ("\\.pdf$"  . ("xpdf" "acroread"))
-                                         ("\\.ps\\.g?[zZ]$" . "zcat %s | 
ghostview -")
-                                         
("\\.\\(gif\\|tiff?\\|xpm\\|xbm\\|xwd\\|pm\\|pbm\\|jpe?g\\)"  . "xv")
-                                         ("\\.ra?s$" . "snapshot -l"))
+(defvar hpath:external-display-alist-x (list '("\\.e?ps$" . "ghostview")
+                                            '("\\.dvi$"  . "xdvi")
+                                            (cons (format "\\.\\(%s\\)$" 
hpath:external-open-office-suffixes) "openoffice")
+                                            '("\\.pdf$"  . ("xpdf" "acroread"))
+                                            '("\\.ps\\.g?[zZ]$" . "zcat %s | 
ghostview -")
+                                            
'("\\.\\(gif\\|tiff?\\|xpm\\|xbm\\|xwd\\|pm\\|pbm\\|jpe?g\\)"  . "xv")
+                                            '("\\.ra?s$" . "snapshot -l"))
   "*An alist of (FILENAME-REGEXP . DISPLAY-PROGRAM-STRING-OR-LIST) elements 
for the X Window System.
 See the function `hpath:get-external-display-alist' for detailed format 
documentation.")
 
@@ -203,12 +214,12 @@ When embedded within a path, the format is ${variable}."
 ;;; Other public variables
 ;;; ************************************************************************
 
-(defvar hpath:rfc "/address@hidden:rfc/rfc%s.txt"
+(defvar hpath:rfc "/ftp:address@hidden:rfc/rfc%s.txt"
   "*String to be used in the call: (hpath:rfc rfc-num)
 to create a path to the RFC document for `rfc-num'.")
 
 (defcustom hpath:suffixes '(".gz" ".Z")
-  "*List of filename suffixes to add or remove within (hpath:exists-p) calls."
+  "*List of filename suffixes to add or remove within `hpath:exists-p' and 
`hpath:substitute-dir' calls."
   :type '(repeat string)
   :group 'hyperbole-commands)
 
@@ -217,6 +228,7 @@ to create a path to the RFC document for `rfc-num'.")
 
 ;; WWW URL format:  [URL[:=]]<protocol>:/[<user>@]<domain>[:<port>][/<path>]
 ;;             or   [URL[:=]]<protocol>://[<user>@]<domain>[:<port>][<path>]
+;;             or   URL[:=][<user>@]<domain>[:<port>][<path>]  (no protocol 
specified)
 ;; Avoid [a-z]:/path patterns since these may be disk paths on OS/2, DOS or
 ;; Windows.
 (defvar hpath:url-regexp 
"<?\\(URL[:=]\\)?\\(\\([a-zA-Z][a-zA-Z]+\\)://?/?\\([^/:@ 
\t\n\r\"`'|address@hidden)?\\([^/:@ 
\t\n\r\"`'|]+\\)\\(\\)\\(:[0-9]+\\)?\\([/~]\\([^\]\[@ 
\t\n\r\"`'|(){}<>]+[^\]\[@ \t\n\r\"`'|(){}<>.,?#!*]\\)*\\)?\\)>?"
@@ -250,23 +262,39 @@ Its match groupings and their names are:
   7 = hpath:portnumber-grpn  = optional port number to use
   8 = hpath:pathname-grpn    = optional pathname to access.")
 
+(defvar hpath:url-regexp3
+  (concat
+   "<?\\(URL[:=]\\)\\(\\(\\)\\(\\)"
+   "\\([a-zA-Z0-9][^/:@ \t\n\r\"`'|]*\\.[^/:@ \t\n\r\"`'|]+\\)"
+   ":?\\([0-9]+\\)?\\([/~]\\([^\]\[@ \t\n\r\"`'|(){}<>]+[^\]\[@ 
\t\n\r\"`'|(){}<>.,?#!*]\\)*\\)?\\)>?")
+  "Regular expression which matches a Url in a string or buffer.
+  Its match groupings and their names are:
+  1 = hpath:url-keyword-grpn = required `URL:' or `URL=' literal
+  2 = hpath:url-grpn         = the whole URL
+  3 = unused                 = for compatibility with hpath:url-regexp
+  4 = unused                 = for compatibility with hpath:url-regexp
+  5 = hpath:sitename-grpn    = URL site to connect to
+  6 = hpath:hostname-grpn    = hostname used to determine the access protocol, 
e.g. ftp.domain.com
+  7 = hpath:portnumber-grpn  = optional port number to use
+  8 = hpath:pathname-grpn    = optional pathname to access.")
+
 (defconst hpath:url-keyword-grpn 1
-  "Optional `URL:' or `URL=' literal.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp2'.")
+  "Optional `URL:' or `URL=' literal.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp[2,3]'.")
 (defconst hpath:url-grpn 2
-  "The whole URL.  See doc for `hpath:url-regexp' and `hpath:url-regexp2'.")
+  "The whole URL.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp[2,3]'.")
 (defconst hpath:protocol-grpn 3
-  "Access protocol.  See doc for `hpath:url-regexp' and `hpath:url-regexp2'.")
+  "Access protocol.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp[2,3]'.")
 (defconst hpath:username-grpn 4
-  "Optional username.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp2'.")
+  "Optional username.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp[2,3]'.")
 (defconst hpath:sitename-grpn 5
-  "URL site to connect to.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp2'.")
+  "URL site to connect to.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp[2,3]'.")
 (defconst hpath:hostname-grpn 6
   "Hostname used to determine the access protocol, e.g. ftp.domain.com.
-See doc for `hpath:url-regexp' and `hpath:url-regexp2'.")
+See doc for `hpath:url-regexp' and `hpath:url-regexp[2,3]'.")
 (defconst hpath:portnumber-grpn 7
-  "Optional port number to use.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp2'.")
+  "Optional port number to use.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp[2,3]'.")
 (defconst hpath:pathname-grpn 8
-  "Optional pathname to access.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp2'.")
+  "Optional pathname to access.  See doc for `hpath:url-regexp' and 
`hpath:url-regexp[2,3]'.")
 
 (defvar hpath:string-url-regexp (concat "\\`" hpath:url-regexp "\\'")
   "Regular expression that matches to a string that contains a possibly 
delimited Url and nothing else.
@@ -278,6 +306,11 @@ use with string-match.")
 See the documentation for `hpath:url-regexp' for match groupings to
 use with string-match.")
 
+(defvar hpath:string-url-regexp3 (concat "\\`" hpath:url-regexp3 "\\'")
+  "Regular expression that matches to a string that contains a possibly 
delimited terse Url and nothing else.
+See the documentation for `hpath:url-regexp' for match groupings to
+use with string-match.")
+
 ;;; ************************************************************************
 ;;; Private variables
 ;;; ************************************************************************
@@ -295,7 +328,7 @@ use with string-match.")
   "Regexp that matches to a Markdown file suffix.")
 
 (defconst hpath:markup-link-anchor-regexp
- (concat "\\`\\(#?[^#]+\\)\\(#\\)\\([^\]\[#^{}<>\"`'\\\n\t\f\r]*\\)")
+  (concat "\\`\\(#?[^#]+\\)\\(#\\)\\([^\]\[#^{}<>\"`'\\\n\t\f\r]*\\)")
   "Regexp that matches an markup filename followed by a hash (#) and an 
optional in-file anchor name.")
 
 (defconst hpath:outline-section-pattern "^\*+[ \t]+%s\\([ \t[:punct:]]*\\)$"
@@ -353,12 +386,14 @@ Always returns nil if (hpath:remote-available-p) returns 
nil."
              (cond
               ((and (eq remote-package 'tramp)
                     ;; Remove match to bol in this regexp before testing.
-                    (looking-at (substring-no-properties (car 
tramp-file-name-structure) 1)))
+                    (looking-at (substring-no-properties (car (if (fboundp 
'tramp-file-name-structure)
+                                                                  
(tramp-file-name-structure)
+                                                                
tramp-file-name-structure)) 1)))
                (match-string-no-properties 0))
               ((looking-at hpath:url-regexp)
                (if (string-equal (match-string-no-properties 
hpath:protocol-grpn) "ftp")
                    (concat
-                    "/"
+                    "/ftp:"
                     ;; user
                     (if (match-beginning hpath:username-grpn)
                         (match-string-no-properties hpath:username-grpn)
@@ -372,10 +407,11 @@ Always returns nil if (hpath:remote-available-p) returns 
nil."
                         (match-string-no-properties hpath:pathname-grpn)))
                  ;; else ignore this other type of WWW path
                  ))
-              ((looking-at hpath:url-regexp2)
+              ((or (looking-at hpath:url-regexp2)
+                   (looking-at hpath:url-regexp3))
                (if (string-equal (match-string-no-properties 
hpath:hostname-grpn) "ftp")
                    (concat
-                    "/" user "@"
+                    "/ftp:" user "@"
                     ;; site
                     (hpath:delete-trailer
                      (match-string-no-properties hpath:sitename-grpn))
@@ -434,7 +470,8 @@ Always returns nil if (hpath:remote-available-p) returns 
nil."
                          (match-string-no-properties hpath:pathname-grpn 
path)))
                   ;; else ignore this other type of WWW path
                   ))
-               ((string-match hpath:string-url-regexp2 path)
+               ((or (string-match hpath:string-url-regexp2 path)
+                    (string-match hpath:string-url-regexp3 path))
                 (if (string-equal "ftp" (match-string-no-properties 
hpath:hostname-grpn path))
                     (concat
                      "/" user "@"
@@ -447,30 +484,30 @@ Always returns nil if (hpath:remote-available-p) returns 
nil."
                          (match-string-no-properties hpath:pathname-grpn 
path)))
                   ;; else ignore this other type of WWW path
                   ))
-                ;; user, site and path
-                ((string-match "/?[^/:@ \t\n\r\"`'|address@hidden/:@ 
\t\n\r\"`'|]+:[^]@ \t\n\r\"`'|\)\}]*"
-                               path)
-                 (match-string-no-properties 0 path))
-                ;; @site and path
-                ((string-match "@[^/:@ \t\n\r\"`'|]+:[^]@ \t\n\r\"`'|\)\}]*"
-                               path)
-                 (concat "/" user (match-string-no-properties 0 path)))
-                ;; site and path
-                ((and (string-match
-                        "/?\\(\\([^/:@ \t\n\r\"`'|]+\\):[^]@:, 
\t\n\r\"`'|\)\}]*\\)"
-                        path)
-                      (setq result (match-string-no-properties 1 path))
-                      (string-match "[^.]\\.[^.]"
-                                    (match-string-no-properties 2 path)))
-                 (concat "/" user "@" result))
-                ;; host and path
-                ((and (string-match
-                        "/\\([^/:@ \t\n\r\"`'|]+:[^]@:, \t\n\r\"`'|\)\}]*\\)"
-                        path)
-                      (setq result (match-string-no-properties 1 path)))
-                 (concat "/" user "@" result))
-                ))
-       (hpath:delete-trailer result))))
+               ;; user, site and path
+               ((string-match "/?[^/:@ \t\n\r\"`'|address@hidden/:@ 
\t\n\r\"`'|]+:[^]@ \t\n\r\"`'|\)\}]*"
+                              path)
+                (match-string-no-properties 0 path))
+               ;; @site and path
+               ((string-match "@[^/:@ \t\n\r\"`'|]+:[^]@ \t\n\r\"`'|\)\}]*"
+                              path)
+                (concat "/" user (match-string-no-properties 0 path)))
+               ;; site and path
+               ((and (string-match
+                      "/?\\(\\([^/:@ \t\n\r\"`'|]+\\):[^]@:, 
\t\n\r\"`'|\)\}]*\\)"
+                      path)
+                     (setq result (match-string-no-properties 1 path))
+                     (string-match "[^.]\\.[^.]"
+                                   (match-string-no-properties 2 path)))
+                (concat "/" user "@" result))
+               ;; host and path
+               ((and (string-match
+                      "/\\([^/:@ \t\n\r\"`'|]+:[^]@:, \t\n\r\"`'|\)\}]*\\)"
+                      path)
+                     (setq result (match-string-no-properties 1 path)))
+                (concat "/" user "@" result))
+               ))
+        (hpath:delete-trailer result))))
 
 (defun hpath:at-p (&optional type non-exist)
   "Returns delimited path or non-delimited remote path at point, if any.
@@ -485,13 +522,14 @@ paths are allowed.  Absolute pathnames must begin with a 
`/' or `~'."
    ;; ((hpath:is-p (hargs:delimited "file://" "[ \t\n\r\"\'\}]" nil t)))
    ((hpath:remote-at-p))
    ((hpath:www-at-p) nil)
-   ((hpath:is-p (hpath:delimited-possible-path) type non-exist))))
+   ((hpath:is-p (hpath:delimited-possible-path non-exist) type non-exist))))
 
 (defun hpath:delimited-possible-path (&optional non-exist)
   "Returns delimited possible path or non-delimited remote path at point, if 
any.
 No validity checking is done on the possible path.  Delimiters may be:
 double quotes, open and close single quote, whitespace, or Texinfo file 
references.
-With optional NON-EXIST, nonexistent local paths are allowed.  Absolute 
pathnames must begin with a `/' or `~'."
+With optional NON-EXIST, nonexistent local paths are allowed.  Absolute 
pathnames
+must begin with a `/' or `~'."
   (or (hargs:delimited "\"" "\"") 
       ;; Filenames in Info docs or Python files
       (hargs:delimited "[`'‘]" "[`'’]" t t)
@@ -648,7 +686,7 @@ program)."
 
 (defun hpath:to-markup-anchor (hash anchor)
   "Move point to the definition of ANCHOR if found or if only HASH is non-nil, 
move to the beginning of the buffer."
-  (cond ((and (stringp anchor) (not (string-empty-p anchor)))
+  (cond ((and (stringp anchor) (not (equal anchor "")))
         (cond ((memq major-mode hui-select-markup-modes)
                ;; In HTML-like mode where link ids are case-sensitive.
                (let ((opoint (point))
@@ -780,7 +818,7 @@ nonexistent local paths are allowed."
         ;; strip them, if any, before checking path.
         (if (string-match "\\`[^#][^#,]*\\([ \t\n\r]*[#,]\\)" path)
             (setq rtn-path (concat (substring path 0 (match-beginning 1))
-                                    "%s" (substring path (match-beginning 1)))
+                                   "%s" (substring path (match-beginning 1)))
                   path (substring path 0 (match-beginning 1)))
           (setq rtn-path (concat rtn-path "%s")))
         ;; If path is just a local reference that begins with #,
@@ -839,10 +877,16 @@ nonexistent local paths are allowed."
                             (file-directory-p path))
                            (t))))
               (progn
-                ;; Quote any %s except for one at the end of the path
-                ;; part of rtn-path (immediately preceding a # or ,
-                ;; character or the end of string).
-                (setq rtn-path (hypb:replace-match-string "%s" rtn-path "%%s")
+                ;; Might be an encoded URL with % characters, so
+                ;; decode it before calling format below.
+                (when (string-match "%" rtn-path)
+                  (let (decoded-path)
+                    (while (not (equal rtn-path (setq decoded-path 
(hypb:decode-url rtn-path))))
+                      (setq rtn-path decoded-path))))
+                ;; Quote any % except for one %s at the end of the
+                ;; path part of rtn-path (immediately preceding a #
+                ;; or , character or the end of string).
+                (setq rtn-path (hypb:replace-match-string "%" rtn-path "%%")
                       rtn-path (hypb:replace-match-string 
"%%s\\([#,]\\|\\'\\)" rtn-path "%s\\1"))
                 ;; Return path if non-nil return value.
                 (if (stringp suffix) ;; suffix could = t, which we ignore
@@ -900,8 +944,8 @@ See the documentation of the `hpath:rfc' variable."
   (format hpath:rfc rfc-num))
 
 (defun hpath:substitute-value (path)
-  "Substitutes matching value for Emacs Lisp variables and environment 
variables in PATH.
-Returns path with variable values substituted."
+  "Substitutes matching value for Emacs Lisp variables and environment 
variables in PATH and returns PATH."
+  ;; Uses free variables `match' and `start' from `hypb:replace-match-string'.
   (substitute-in-file-name
     (hypb:replace-match-string
       "\\$\{[^\}]+}"
@@ -911,17 +955,17 @@ Returns path with variable values substituted."
               (var-name (substring path (+ match 2) (1- start)))
               (rest-of-path (substring path start))
               (sym (intern-soft var-name)))
-         (if (file-name-absolute-p rest-of-path)
-             (setq rest-of-path (substring rest-of-path 1)))
-         (if (and sym (boundp sym))
+         (when (file-name-absolute-p rest-of-path)
+           (setq rest-of-path (substring rest-of-path 1)))
+         (if (or (and sym (boundp sym)) (getenv var-name))
              (directory-file-name
               (hpath:substitute-dir var-name rest-of-path))
            var-group)))
       t)))
 
 (defun hpath:substitute-var (path)
-  "Replaces up to one match in PATH with the first matching variable from 
`hpath:variables'.
-When embedded within a path, the format is ${variable}."
+  "Replaces up to one match in PATH with the first variable from 
`hpath:variables' whose value contains a string match to PATH.
+After any match, the resulting path will contain a varible reference like 
${variable}."
   (if (not (and (stringp path) (string-match "/" path) (hpath:is-p path)))
       path
     (setq path (hpath:symlink-referent path))
@@ -1029,21 +1073,20 @@ to it."
 ;; available.
 (defun hpath:handle-urls ()
   (let ((remote-fs-package (hpath:remote-available-p)))
-      (progn
-       ;; www-url functions are defined in "hsys-www.el".
-       (put 'expand-file-name   remote-fs-package   'www-url-expand-file-name)
-       (put 'find-file-noselect remote-fs-package   
'www-url-find-file-noselect)
-       ;; Necessary since Dired overrides other file-name-handler-alist
-       ;; settings.
-       (put 'expand-file-name   'dired 'www-url-expand-file-name)
-       (put 'find-file-noselect 'dired 'www-url-find-file-noselect)
+    ;; www-url functions are defined in "hsys-www.el".
+    (put 'expand-file-name   remote-fs-package   'www-url-expand-file-name)
+    (put 'find-file-noselect remote-fs-package   'www-url-find-file-noselect)
+    ;; Necessary since Dired overrides other file-name-handler-alist
+    ;; settings.
+    (put 'expand-file-name   'dired 'www-url-expand-file-name)
+    (put 'find-file-noselect 'dired 'www-url-find-file-noselect)
 
-       (if (not (fboundp 'hyperb:substitute-in-file-name))
-           (progn
+    (unless (fboundp 'hyperb:substitute-in-file-name)
+      (progn
 
 ;; Overload `substitute-in-file-name' to eliminate truncation of URL prefixes 
 ;; such as http://.
-(or (fboundp 'hyperb:substitute-in-file-name)
+(unless (fboundp 'hyperb:substitute-in-file-name)
 (defalias 'hyperb:substitute-in-file-name
   (symbol-function 'substitute-in-file-name)))
 
@@ -1059,7 +1102,7 @@ If `/~' appears, all of FILENAME through that `/' is 
discarded."
        filename)
       (substring filename (match-beginning 2))
     (hyperb:substitute-in-file-name filename)))
-)))))
+))))
 
 (defun hpath:enable-find-file-urls ()
   "Enable the use of ftp and www Urls as arguments to `find-file' commands."
@@ -1136,7 +1179,8 @@ off otherwise."
 (defun hpath:url-at-p ()
   "Return world-wide-web universal resource locator (url) that point 
immediately precedes or nil.
 See the documentation for `hpath:url-regexp' for match-string groupings."
-  (if (or (looking-at hpath:url-regexp) (looking-at hpath:url-regexp2))
+  (if (or (looking-at hpath:url-regexp) (looking-at hpath:url-regexp2)
+         (looking-at hpath:url-regexp3))
       (save-excursion
        (goto-char (match-end hpath:url-grpn))
        (skip-chars-backward ".,?#!*()")
@@ -1148,7 +1192,8 @@ See the documentation for `hpath:url-regexp' for match 
groupings to
 use with string-match."
   (and (stringp obj)
        (or (string-match hpath:string-url-regexp obj)
-          (string-match hpath:string-url-regexp2 obj))
+          (string-match hpath:string-url-regexp2 obj)
+          (string-match hpath:string-url-regexp3 obj))
        t))
 
 (defun hpath:www-at-p (&optional include-start-and-end-p)
@@ -1159,7 +1204,8 @@ With optional INCLUDE-START-AND-END-P non-nil, returns 
list of:
     (skip-chars-backward "^\[ \t\n\r\f\"`'|\(\{<")
     (cond ((not include-start-and-end-p)
           (hpath:url-at-p))
-         ((or (looking-at hpath:url-regexp) (looking-at hpath:url-regexp2))
+         ((or (looking-at hpath:url-regexp) (looking-at hpath:url-regexp2)
+              (looking-at hpath:url-regexp3))
           (goto-char (match-end hpath:url-grpn))
           (skip-chars-backward ".,?#!*()")
           (list (buffer-substring-no-properties (match-beginning 
hpath:url-grpn) (point))
@@ -1181,7 +1227,7 @@ be integrated, otherwise the filename is appended as an 
argument."
   ;; Permit %s substitution of filename within program.
   (if (string-match "[^%]%s" cmd)
       (format cmd filename)
-    (concat cmd " " filename)))
+    (format "%s \"%s\"" cmd filename)))
 
 (defun hpath:remote-available-p ()
   "Return non-nil if a remote file access package is available, nil otherwise.
@@ -1275,15 +1321,15 @@ from path or t."
 Return nil if FILENAME is a directory name or an image file that emacs can 
display.
 See also documentation for the function (hpath:get-external-display-alist) and 
the variable
 `hpath:internal-display-alist'."
-  (cond ((and (stringp filename) (file-directory-p filename))
+  (cond ((let ((case-fold-search t))
+          (hpath:match filename (hpath:get-external-display-alist))))
+       ((let ((case-fold-search nil))
+          (hpath:match filename hpath:internal-display-alist)))
+       ((and (stringp filename) (file-directory-p filename))
         nil)
        ((and (fboundp 'image-mode)
              (string-match hpath:native-image-suffixes filename))
         nil)
-       ((let ((case-fold-search t))
-          (hpath:match filename (hpath:get-external-display-alist))))
-       ((let ((case-fold-search nil))
-            (hpath:match filename hpath:internal-display-alist)))
        (t (hpath:find-file-mailcap filename))))
 
 (defun hpath:match (filename regexp-alist)
@@ -1307,28 +1353,42 @@ list, the first directory prepended to REST-OF-PATH 
which produces a valid
 local pathname is returned."
   (let (sym val)
     (cond ((not (stringp var-name))
-          (error "(hpath:substitute-dir): VAR-NAME arg, `%s', must be a 
string" var-name))
-         ((not (and (setq sym (intern-soft var-name))
-                    (boundp sym)))
-          (error "(hpath:substitute-dir): VAR-NAME arg, \"%s\", is not a bound 
variable"
+          (error "(hpath:substitute-dir): VAR-NAME, `%s', must be a string" 
var-name))
+         ((not (or (and (setq sym (intern-soft var-name))
+                        (boundp sym))
+                   (getenv var-name)))
+          (error "(hpath:substitute-dir): VAR-NAME, \"%s\", is not a bound 
variable nor a set environment variable"
                  var-name))
-         ((stringp (setq val (symbol-value sym)))
+         ((let ((case-fold-search t))
+            (stringp (setq val (cond ((and (boundp sym) sym)
+                                      (symbol-value sym))
+                                     ((string-match "path" var-name)
+                                      (split-string (getenv var-name) ":"))
+                                     (t (getenv var-name))))))
           (if (hpath:validate (expand-file-name rest-of-path val))
               val))
          ((listp val)
-          (let ((dir))
-            (while (and val (not dir))
-              (setq dir (car val) val (cdr val))
-              (or (and (stringp dir)
-                       (file-name-absolute-p dir)
-                       (file-readable-p (expand-file-name rest-of-path dir)))
-                  (setq dir nil)))
-            (if dir (hpath:validate (directory-file-name dir))
+          (let* ((path (locate-file rest-of-path val (cons "" hpath:suffixes)))
+                 (dir (if path (file-name-directory path))))
+            (if dir
+                (hpath:validate (directory-file-name dir))
               (error "(hpath:substitute-dir): Can't find match for \"%s\""
-                     (concat "$\{" var-name "\}/" rest-of-path))
-              )))
-         (t (error "(hpath:substitute-dir): Value of VAR-NAME, \"%s\", must be 
a string or list" var-name))
-         )))
+                     (concat "$\{" var-name "\}/" rest-of-path))))
+          ;; Code prior to utilizing locate-file.
+;;        (let (dir path)
+;;          (while (and val (not dir))
+;;            (setq dir (car val) val (cdr val))
+;;            (or (and (stringp dir)
+;;                     (file-name-absolute-p dir)
+;;                     (setq path (hpath:exists-p (expand-file-name 
rest-of-path dir)))
+;;                     (file-readable-p path))
+;;                (setq dir nil)))
+;;          (if dir
+;;              (hpath:validate (directory-file-name dir))
+;;            (error "(hpath:substitute-dir): Can't find match for \"%s\""
+;;                   (concat "$\{" var-name "\}/" rest-of-path))))
+          )
+         (t (error "(hpath:substitute-dir): Value of VAR-NAME, \"%s\", must be 
a string or list" var-name)))))
 
 (defun hpath:substitute-var-name (var-symbol var-dir-val path)
   "Replaces with VAR-SYMBOL any occurrences of VAR-DIR-VAL in PATH.
diff --git a/hsettings.el b/hsettings.el
index 37a26cc..4200046 100644
--- a/hsettings.el
+++ b/hsettings.el
@@ -56,9 +56,25 @@
       ))
 
 ;;; ************************************************************************
-;;; SMART SETTINGS
+;;; SMART SETTINGS FOR THE ACTION AND ASSIST KEYS AND SMART MENUS
 ;;; ************************************************************************
 
+;; The following setting allows direct selection of Helm completion
+;; entries with the Smart Mouse Keys.  Otherwise, by default, helm
+;; disables all mouse keys while completing.  This setting requires
+;; the 'global_mouse' branch of the Helm git development tree because
+;; it has many changes for Hyperbole mouse support.  Otherwise, the
+;; setting will do nothing.
+;; Find it at: "https://github.com/rswgnu/helm/tree/global_mouse";.
+;;
+;; If you change the value of this setting (e.g. simply comment it out),
+;;  you must restart Emacs for it to take full effect.  Setting this to
+;; 't' or 'nil' will not provide Hyperbole support.
+(eval-after-load "helm" '(if (boundp 'helm--disable-mouse-mode)
+                            ;; Using Helm version heavily modified for
+                            ;; Hyperbole Smart Key use.
+                            (setq helm-allow-mouse 'global-mouse-bindings)))
+
 ;; The Smart Menu system is an attractive in-buffer menu system that
 ;; predates Emacs menu systems; it is included in InfoDock.
 (defvar hkey-always-display-menu nil
@@ -66,7 +82,7 @@
 If a Smart Menu is already displayed, perform another Action or Assist Key
 function.")
 
-(defcustom hmouse-middle-flag (and (boundp 'infodock-version) infodock-version)
+(defcustom hmouse-middle-flag (and (boundp 'infodock-version) infodock-version 
t)
   "*Under InfoDock or when t, additionally bind the middle mouse button as an
 Action Key."
   :type 'boolean
@@ -186,9 +202,12 @@ obtained search string."
        ;; appeal to you. See "hui-em-but.el" for how this works.
        (hproperty:cycle-but-color nil)
        ;;
+       ;; Non-nil means highlight all explict buttons with 
`hproperty:but-face'.
+       (setq hproperty:but-highlight-flag t)
+       ;;
        ;; Non-nil means visually emphasize that button under mouse cursor is
        ;; selectable.
-       (setq hproperty:but-emphasize-p nil)
+       (setq hproperty:but-emphasize-flag nil)
        ;;
        ;; If you find that the Hyperbole button flash time is too slow
        ;; or too fast, adjust it here.
@@ -208,6 +227,9 @@ obtained search string."
        ;; appeal to you. See "hui-xe-but.el" for how this works.
        (hproperty:cycle-but-color nil)
        ;;
+       ;; Non-nil means highlight all explict buttons with 
`hproperty:but-face'.
+       (setq hproperty:but-highlight-flag t)
+       ;;
        ;; Non-nil means visually emphasize that button under mouse cursor is
        ;; selectable.
        (setq hproperty:but-emphasize-p nil)
diff --git a/hsys-www.el b/hsys-www.el
index 7f36bf0..c46b138 100644
--- a/hsys-www.el
+++ b/hsys-www.el
@@ -35,17 +35,54 @@
 ;;; Public functions and types
 ;;; ************************************************************************
 
+;; eww-mode should define these next functions but presently does not,
+;; so define them here when needed.
+(unless (fboundp 'eww-link-at-point)
+  (defun shr-link-at-point ()
+    "Return any shr hyperlink url at point or nil if none."
+    (get-text-property (point) 'shr-url))
+  (defun eww-link-at-point ()
+    "Return any eww web page hyperlink url at point or nil if none."
+    (shr-link-at-point))
+  (defun eww-bookmark-property (property)
+    "Return value of PROPERTY, a symbol, for current eww bookmark line or nil."
+    (if (eq major-mode 'eww-bookmark-mode)
+       (plist-get (get-text-property (line-beginning-position) 'eww-bookmark)
+                  property)))
+  (defun eww-history-property (property)
+    "Return value of PROPERTY, a symbol, for current eww history line or nil."
+    (if (eq major-mode 'eww-history-mode)
+       (plist-get (get-text-property (line-beginning-position) 'eww-history)
+                  property))))
+
 (defib www-url ()
   "Follow any non-ftp url (link) at point.
 The variable, `browse-url-browser-function', customizes the url browser that
 is used.
 Valid values of this variable include `browse-url-default-browser' and
 `browse-url-generic'."
-  (let ((link-and-pos (hpath:www-at-p t)))
-    ;; Skip ftp URLs which are handled elsewhere.
-    (if (and link-and-pos (not (hpath:remote-at-p)))
-       (progn (ibut:label-set link-and-pos)
-              (hact 'www-url (car link-and-pos))))))
+  (cond ((looking-at "\\s-*\\'")
+        ;; Don't match if at the end of the buffer; end of line is
+        ;; handled elsewhere.
+        nil)
+       ((and (eq major-mode 'eww-mode) (eww-link-at-point))
+        (ibut:label-set (eww-link-at-point))
+        (hact 'eww-follow-link))
+       ((eq major-mode 'eww-bookmark-mode)
+        (ibut:label-set (concat (eww-bookmark-property :title)
+                                (if (eww-bookmark-property :url)
+                                    (concat " <" (eww-bookmark-property :url) 
">"))))
+        (hact 'eww-bookmark-browse))
+       ((eq major-mode 'eww-history-mode)
+        (ibut:label-set (concat (eww-history-property :title)
+                                (if (eww-history-property :url)
+                                    (concat " <" (eww-history-property :url) 
">"))))
+        (hact 'eww-history-browse))
+       (t (let ((link-and-pos (hpath:www-at-p t)))
+            ;; Skip ftp URLs which are handled elsewhere.
+            (if (and link-and-pos (not (hpath:remote-at-p)))
+                (progn (ibut:label-set link-and-pos)
+                       (hact 'www-url (car link-and-pos))))))))
 
 (defact www-url (url)
   "Follow a link given by URL.
@@ -56,13 +93,12 @@ is used.  Valid values of this variable include 
`browse-url-default-browser' and
   (or (stringp url)
       (error "(www-url): URL = `%s' but must be a string" url))
   (if (or (functionp browse-url-browser-function)
-          ;; May be a predicate alist of functions from which to select
-          (consp browse-url-browser-function))
+         ;; May be a predicate alist of functions from which to select
+         (consp browse-url-browser-function))
       (let (browse-function-name
            browser)
        (if (symbolp browse-url-browser-function)
-           (setq browse-function-name
-                 (symbol-name browse-url-browser-function)
+           (setq browse-function-name (symbol-name browse-url-browser-function)
                  browser (and (string-match
                                "-\\([^-]+\\)\\'"
                                browse-function-name)
diff --git a/hui-em-but.el b/hui-em-but.el
index fe1a9ba..6ccf25c 100644
--- a/hui-em-but.el
+++ b/hui-em-but.el
@@ -46,7 +46,12 @@
 ;;; Public variables
 ;;; ************************************************************************
 
-(defcustom hproperty:but-emphasize-p nil
+(defcustom hproperty:but-highlight-flag t
+  "*Non-nil (default value) means highlight all explict buttons with 
`hproperty:but-face'."
+  :type 'boolean
+  :group 'hyperbole-buttons)
+
+(defcustom hproperty:but-emphasize-flag nil
   "*Non-nil means visually emphasize that button under mouse cursor is 
selectable."
   :type 'boolean
   :group 'hyperbole-buttons)
@@ -74,11 +79,11 @@ Call (hproperty:set-item-highlight <color>) to change 
value."
 
 (defun hproperty:but-add (start end face)
   "Add between START and END a button using FACE in current buffer.
-If `hproperty:but-emphasize-p' is non-nil when this is called, emphasize that
-button is selectable whenever the mouse cursor moves over it."
+If `hproperty:but-emphasize-flag' is non-nil when this is called, emphasize
+that button is selectable whenever the mouse cursor moves over it."
   (let ((but (make-overlay start end)))
     (overlay-put but 'face face)
-    (if hproperty:but-emphasize-p (overlay-put but 'mouse-face 'highlight))))
+    (if hproperty:but-emphasize-flag (overlay-put but 'mouse-face 
'highlight))))
 
 (defun hproperty:but-color ()
   "Return current color of buffer's buttons."
@@ -105,8 +110,8 @@ expression which matches an entire button string.
 If REGEXP-MATCH is non-nil, only buttons matching this argument are
 highlighted.
 
-If `hproperty:but-emphasize-p' is non-nil when this is called, emphasize that
-button is selectable whenever the mouse cursor moves over it."
+If `hproperty:but-emphasize-flag' is non-nil when this is called, emphasize
+that button is selectable whenever the mouse cursor moves over it."
   (interactive)
   (hproperty:but-clear)
   (hproperty:but-create-all start-delim end-delim regexp-match))
@@ -118,10 +123,18 @@ If END-DELIM is a symbol, e.g. t, then START-DELIM is 
taken as a regular
 expression which matches an entire button string.
 If REGEXP-MATCH is non-nil, only buttons matching this argument are
 highlighted."
-  (ebut:map (lambda (lbl start end)
-             (hproperty:but-add start end hproperty:but-face))
-           start-delim end-delim regexp-match 'include-delims))
-              
+  (when hproperty:but-highlight-flag
+    (ebut:map (lambda (lbl start end)
+               (hproperty:but-add start end hproperty:but-face))
+             start-delim end-delim regexp-match 'include-delims)))
+
+(defun hproperty:but-create-on-yank (prop-value start end)
+  (save-restriction
+    (narrow-to-region start end)
+    (hproperty:but-create-all)))
+
+(add-to-list 'yank-handled-properties '(hproperty:but-face . 
hproperty:but-create-on-yank))
+
 (defun hproperty:but-delete (&optional pos)
   (let ((but (hproperty:but-get pos)))
     (if but (delete-overlay but))))
diff --git a/hui-jmenu.el b/hui-jmenu.el
index 9b0bb8e..981ab85 100644
--- a/hui-jmenu.el
+++ b/hui-jmenu.el
@@ -127,9 +127,9 @@
     "----"
     ["Name-Configuration" hywconfig-add-by-name     t]
     ["Delete-Name"        hywconfig-delete-by-name
-     (if (boundp 'hywconfig-names) hywconfig-names)]
+     (frame-parameter nil 'hywconfig-names)]
     ["Restore-Name"       hywconfig-restore-by-name
-     (if (boundp 'hywconfig-names) hywconfig-names)]
+     (frame-parameter nil 'hywconfig-names)]
     "----"
     ["Pop-from-Ring"      hywconfig-delete-pop      (not 
(hywconfig-ring-empty-p))]
     ["Save-to-Ring"       hywconfig-ring-save       t]
@@ -141,9 +141,13 @@
 ;;; ************************************************************************
 
 (defun hui-menu-buffer-mode-name (buffer)
-  (or (cdr (assq 'mode-name (buffer-local-variables buffer)))
+  (let ((mname (cdr (assq 'mode-name (buffer-local-variables buffer)))))
+    (if mname
+       ;; Next line needed to ensure mode name is always formatted as
+       ;; a string.
+       (format-mode-line mname)
       (capitalize (symbol-name
-                  (cdr (assq 'major-mode (buffer-local-variables buffer)))))))
+                  (cdr (assq 'major-mode (buffer-local-variables buffer))))))))
 
 (defun hui-menu-frame-name (frame)
   "Return the name of FRAME."
@@ -151,8 +155,8 @@
 
 (defun hui-menu-modeline (_ignore)
   (list
-   ["Control-Frames"  hycontrol-frames t]
-   ["Control-Windows" hycontrol-windows t]
+   ["Control-Frames"  hycontrol-enable-frames-mode t]
+   ["Control-Windows" hycontrol-enable-windows-mode t]
    "----"
    (hui-menu-of-buffers)
    (hui-menu-of-frames)
diff --git a/hui-menu.el b/hui-menu.el
index 930e4b8..bf179b4 100644
--- a/hui-menu.el
+++ b/hui-menu.el
@@ -35,10 +35,7 @@
           :style radio
           :selected (eq ,browser-option #'browse-url-chromium)]
          ["Default (System wide)"
-          (setq ,browser-option
-               (if (and (boundp 'browse-url-generic-program) (stringp 
browse-url-generic-program))
-                   #'browse-url-generic
-                 #'browse-url-default-browser))
+          (setq ,browser-option #'browse-url-default-browser)
           :style radio
           :selected (eq ,browser-option #'browse-url-default-browser)]
          ["EWW (Emacs)"
@@ -125,13 +122,33 @@ Return t if cutoff, else nil."
                        '("----" "----")))))
         rest-of-menu)))
 
+(defun hui-menu-key-binding-item (item-name command)
+  "Return a key binding menu item string built from ITEM-NAME and COMMAND."
+  (concat item-name (when (where-is-internal command nil t)
+                     (format "(%s)" (key-description (where-is-internal 
command nil t))))))
+
+(defun hui-menu-key-bindings (rest-of-menu)
+  (nconc
+   (list
+    (vector (hui-menu-key-binding-item "Action-Key          \t\t\t" 
'hkey-either)                        '(hui:bind-key #'hkey-either) t)           
         ;; {M-RET}
+    (vector (hui-menu-key-binding-item "Button-Rename-Key   \t"     
'hui:ebut-rename)                    '(hui:bind-key #'hui:ebut-rename) t)       
         ;; {C-c C-r}
+    (vector (hui-menu-key-binding-item "Drag-Emulation-Key  \t\t"   
'hkey-operate)                       '(hui:bind-key #'hkey-operate) t)          
         ;; {M-o}
+    (vector (hui-menu-key-binding-item "Find-Web-Key        \t\t"   
'hui-search-web)                     '(hui:bind-key #'hui-search-web) t)        
         ;; {C-c /}
+    (vector (hui-menu-key-binding-item "Grid-of-Windows-Key \t"     
'hycontrol-windows-grid)             '(hui:bind-key #'hycontrol-windows-grid) 
t)         ;; {C-c @}
+    (vector (hui-menu-key-binding-item "Hyperbole-Menu-Key  \t"     
'hyperbole)                          '(hui:bind-key #'hyperbole) t)             
         ;; {C-h h}
+    (vector (hui-menu-key-binding-item "Jump-Thing-Key      \t\t"   
'hui-select-goto-matching-delimiter) '(hui:bind-key #'hui-select-thing) t)      
         ;; {C-c .}
+    (vector (hui-menu-key-binding-item "Mark-Thing-Key      \t\t"   
'hui-select-thing)                   '(hui:bind-key #'hui-select-thing) t)      
         ;; {C-c C-m}
+    (vector (hui-menu-key-binding-item "Smart-Help-Key      \t\t"   
'hkey-help)                          '(hui:bind-key #'hkey-help) t)             
         ;; {C-h A}
+    (vector (hui-menu-key-binding-item "Windows-Control-Key\t"      
'hycontrol-enable-windows-mode)      '(hui:bind-key 
#'hycontrol-enable-windows-mode) t)) ;; {C-C \}
+   rest-of-menu))
+
 ;; Dynamically compute submenus for Screen menu
 (defun hui-menu-screen (_ignored)
   (list
    ["Manual" (id-info "(hyperbole)HyControl") t]
    "----"
-   ["Frames-Control"  hycontrol-frames t]
-   ["Windows-Control" hycontrol-windows t]
+   ["Control-Frames"  hycontrol-enable-frames-mode t]
+   ["Control-Windows" hycontrol-enable-windows-mode t]
    "----"
    (hui-menu-of-buffers)
    (hui-menu-of-frames)
@@ -139,23 +156,16 @@ Return t if cutoff, else nil."
 
 (defun hui-menu-web-search ()
   ;; Pulldown menu
-  (let ((web-pulldown-menu
-        (mapcar (lambda (service)
-                  (vector service
-                          (list #'hyperbole-web-search service nil)
-                          t))
-                (mapcar 'car hyperbole-web-search-alist))))
-    web-pulldown-menu))
+  (mapcar (lambda (service)
+           (vector service
+                   (list #'hyperbole-web-search service nil)
+                   t))
+         (mapcar 'car hyperbole-web-search-alist)))
 
 ;;; ************************************************************************
 ;;; Public variables
 ;;; ************************************************************************
 
-;; Ensure that this variable is defined to avert any error within
-;; the Customize menu.
-;; (defvar highlight-headers-follow-url-netscape-new-window nil
-;;   "*Whether to make Netscape create a new window when a URL is sent to it.")
-
 (defconst hui-menu-about
   (vector (concat "About-Hyperbole-"
                  (if (= (aref hyperb:version 0) ?0)
@@ -197,17 +207,9 @@ Return t if cutoff, else nil."
             hpath:find-file-urls-mode
             :style toggle
             :selected hpath:find-file-urls-mode]
-           "----"
-           ("Change-Key-Bindings"
-            ["Action-Key"              (hui:bind-key #'hkey-either) t]         
   ;; {M-RET}
-            ["Button-Rename-Key"       (hui:bind-key #'hui:ebut-rename) t]     
   ;; {C-c C-r}
-            ["Drag-Emulation-Key"      (hui:bind-key #'hkey-operate) t]        
   ;; {M-o}
-            ["Hyperbole-Menu-Key"      (hui:bind-key #'hyperbole) t]           
   ;; {C-h h}
-            ["Mark-Thing-Key"          (hui:bind-key #'hui-select-thing) t]    
   ;; {C-c C-m}
-            ["Smart-Help-Key"          (hui:bind-key #'hkey-help) t]           
   ;; {C-h A}
-            ["Windows-Control-Key"     (hui:bind-key #'hycontrol-windows) t]   
   ;; {C-C \}
-            )
            "----")
+         '(("Change-Key-Bindings" :filter hui-menu-key-bindings))
+         '("----")
          (list (cons "Display-Referents-in"
                      (mapcar (lambda (sym)
                                (vector
@@ -249,7 +251,7 @@ Return t if cutoff, else nil."
             :style toggle :selected (and (boundp 'hyrolo-add-hook)
                                          (listp hyrolo-add-hook)
                                          (memq 'hyrolo-set-date 
hyrolo-add-hook))]
-           ["Toggle-Smart-Key-Debug" hkey-toggle-debug
+           ["Toggle-Smart-Key-Debug (HyDebug)" hkey-toggle-debug
             :style toggle :selected hkey-debug]
            ))
   "Untitled menu of Hyperbole options.")
@@ -285,10 +287,10 @@ Return t if cutoff, else nil."
   ;; Force a menu-bar update.
   (force-mode-line-update))
 
-(defun hyperbole-popup-menu ()
+(defun hyperbole-popup-menu (&optional rebuild-flag)
   "Popup the Hyperbole menubar menu."
-  (interactive)
-  (popup-menu (infodock-hyperbole-menu)))
+  (interactive "P")
+  (popup-menu (infodock-hyperbole-menu rebuild-flag)))
 
 ;;; Don't change this name; doing so will break the way InfoDock
 ;;; initializes the Hyperbole menu.
@@ -310,9 +312,11 @@ REBUILD-FLAG is non-nil, in which case the menu is 
rebuilt."
                 ;; (if (and (boundp 'infodock-version) infodock-version)
                 ;;     ["Manual"      (id-info "(infodock)Hyperbole Menu") t]
                 ;;   ["Manual"      (id-info "(hyperbole)Top") t])
-                ["Manual"      (id-info "(hyperbole)Top") t]
-                ["What-is-New?"  (hypb:display-file-with-logo
-                                  (expand-file-name "HY-NEWS" hyperb:dir)) t]
+                ["Manual"         (id-info "(hyperbole)Top") t]
+                ["What-is-New?"   (hypb:display-file-with-logo
+                                   (expand-file-name "HY-NEWS" hyperb:dir)) t]
+                ["Why-Use?"       (find-file
+                                   (expand-file-name "HY-WHY.kotl" 
hyperb:dir)) t]
                 "----"
                 ["Remove-This-Menu"
                  (progn
@@ -343,7 +347,7 @@ REBUILD-FLAG is non-nil, in which case the menu is rebuilt."
                   ["Demonstration"  (hypb:display-file-with-logo
                                      (expand-file-name "DEMO" hyperb:dir)) t]
                   ["Glossary"    (id-info "(hyperbole)Glossary") t]
-                  ["Manifest"    (find-file-read-only
+                  ["Manifest"    (hypb:display-file-with-logo
                                   (expand-file-name "MANIFEST" hyperb:dir)) t]
                   ["Smart-Key-Summary" (id-browse-file (hypb:hkey-help-file)) 
t]
                   ("Types"
@@ -376,7 +380,7 @@ REBUILD-FLAG is non-nil, in which case the menu is rebuilt."
                   ["Types"
                    (hui:htype-help-current-window 'actypes) t]
                   )
-                (nconc
+                (append
                  '("Find"
                    ["Manual"   (id-info-item "menu, Find") t]
                    "----"
diff --git a/hui-mini.el b/hui-mini.el
index 7d2e120..fb6734e 100644
--- a/hui-mini.el
+++ b/hui-mini.el
@@ -64,7 +64,7 @@ non-nil means show documentation for any item that is 
selected by the
 user.  HELP-STRING-FLAG non-nil means show only the first line of the
 documentation, not the full text."
 
-  (interactive (list nil nil (if current-prefix-arg t) (if current-prefix-arg 
t)))
+  (interactive (list nil nil nil nil))
   (if (and hui:menu-p (> (minibuffer-depth) 0))
       (progn (beep) nil)
     (unwind-protect
@@ -157,11 +157,11 @@ With optional HELP-STRING-FLAG, instead returns the one 
line help string for the
           (if (eventp input)
               (setq input (event-to-character input)))))
     (if (or (symbolp input)
-           (and (integerp input)
-                (= input ?\r)))
+           (and (integerp input) (= input ?\r)))
        (setq input (hargs:at-p)))
     (erase-buffer)
-    (or (symbolp input) (null input) (insert input)))
+    (when (or (characterp input) (stringp input))
+      (insert input)))
   (exit-minibuffer))
 
 (defun hui:menu-forward-item ()
@@ -320,8 +320,12 @@ constructs.  If not given, the top-level Hyperbole menu is 
used."
                  (and doc-flag
                       ;; Not another menu to display
                       (not (and (listp act-form) (atom (car act-form)) (atom 
(cdr act-form))))))
-             (let ((help-str (or (car (cdr (cdr label-act-help-list)))
-                                 "No help documentation for this item.")))
+             (let* ((help-str (car (cdr (cdr label-act-help-list))))
+                    (cmd (if help-str nil (car (cdr label-act-help-list))))
+                    (doc-str (if help-str nil (and (functionp cmd) 
(documentation cmd)))))
+               (and doc-str (string-match "\n" doc-str)
+                    (setq doc-str (substring doc-str 0 (match-beginning 0))))
+               (setq help-str (or help-str doc-str "No help documentation for 
this item."))
                (if help-string-flag
                    help-str
                  (concat (car label-act-help-list) "\n  "
@@ -341,6 +345,7 @@ constructs.  If not given, the top-level Hyperbole menu is 
used."
       menu-line)))
 
 (defun hui:menu-web-search ()
+  "Hyperbole minibuffer menu of web search engines."
   (let ((web-mini-menu
         (cons 'web
               (cons '("Web>")
@@ -476,13 +481,16 @@ constructs.  If not given, the top-level Hyperbole menu 
is used."
          ("Windowful"      (setq smart-scroll-proportional nil))))
        '(cust-keys .
          (("Change Keys>")
-         ("ActionKey"   (hui:bind-key #'hkey-either))            ;; {M-RET}
-         ("ButRename"   (hui:bind-key #'hui:ebut-rename))        ;; {C-c C-r}
-         ("DragKey"     (hui:bind-key #'hkey-operate))           ;; {M-o}
-         ("HypbMenu"    (hui:bind-key #'hyperbole))              ;; {C-h h}
-         ("MarkThing"   (hui:bind-key #'hui-select-thing))       ;; {C-c RET}
-         ("SmartHelp"   (hui:bind-key #'hkey-help))              ;; {C-h A}
-         ("WinControl"  (hui:bind-key #'hycontrol-windows))      ;; {C-c \}
+         ("ActionKey"     (hui:bind-key #'hkey-either))                        
;; {M-RET}
+         ("ButRename"     (hui:bind-key #'hui:ebut-rename))                    
;; {C-c C-r}
+         ("DragKey"       (hui:bind-key #'hkey-operate))                       
;; {M-o}
+         ("FindWeb"       (hui:bind-key #'hui-search-web))                     
;; {C-c /}
+         ("GridOfWindows" (hui:bind-key #'hycontrol-windows-grid))             
;; {C-c @}
+         ("HypbMenu"      (hui:bind-key #'hyperbole))                          
;; {C-h h}
+         ("JumpThing"     (hui:bind-key #'hui-select-goto-matching-delimiter)) 
;; {C-c .}
+         ("MarkThing"     (hui:bind-key #'hui-select-thing))                   
;; {C-c RET}
+         ("SmartHelp"     (hui:bind-key #'hkey-help))                          
;; {C-h A}
+         ("WinControl"    (hui:bind-key #'hycontrol-enable-windows-mode))      
;; {C-c \}
          )) 
        '(cust-referents .
          (("Ref Display>")
@@ -525,7 +533,7 @@ constructs.  If not given, the top-level Hyperbole menu is 
used."
          ("Demo"         (hypb:display-file-with-logo
                            (expand-file-name "DEMO" hyperb:dir))
           "Demonstrates Hyperbole features.")
-         ("Files"        (find-file-read-only
+         ("Files"        (hypb:display-file-with-logo
                            (expand-file-name "MANIFEST" hyperb:dir))
           "Summarizes Hyperbole system files.  Click on an entry to view it.")
          ("Glossary"
@@ -536,10 +544,12 @@ constructs.  If not given, the top-level Hyperbole menu 
is used."
          ("New"          (hypb:display-file-with-logo
                           (expand-file-name "HY-NEWS" hyperb:dir))
           "Recent changes to Hyperbole.")
-         ("SmartKeys"    (find-file-read-only (hypb:hkey-help-file))
+         ("SmartKeys"    (hkey-summarize 'current-window)
           "Summarizes Smart Key mouse or keyboard handling.")
          ("Types/"       (menu . types)
           "Provides documentation on Hyperbole types.")
+         ("WhyUse"       (find-file (expand-file-name "HY-WHY.kotl" 
hyperb:dir))
+          "Lists use cases for Hyperbole Hyperbole.")
         ))
        '(ebut .
         (("EButton>")
@@ -674,9 +684,9 @@ constructs.  If not given, the top-level Hyperbole menu is 
used."
          ))
        '(screen .
         (("Screen>")
-         ("FramesControl"    hycontrol-frames
+         ("FramesControl"    hycontrol-enable-frames-mode
           "Interactively delete, jump to, move, replicate, and resize frames.")
-         ("WindowsControl"   hycontrol-windows
+         ("WindowsControl"   hycontrol-enable-windows-mode
           "Interactively delete, jump to, rebalance, resize, and split 
windows.")))
        '(types .
         (("Types>")
diff --git a/hui-mouse.el b/hui-mouse.el
index b56557f..123ca16 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -19,12 +19,12 @@
 ;;  If you want to use your shift-middle mouse button to select Hyperbole menu
 ;;  items and Hyperbole buttons, follow these instructions.
 ;;
-;;  If you plan to use a mouse only with X windows (XEmacs, GNU Emacs
-;;  19, or InfoDock), Mac OS X, or NEXTSTEP, and you want to use the
+;;  If you plan to use a mouse only with the X window system (XEmacs, GNU Emacs
+;;  19, or InfoDock), macOS, or NEXTSTEP, and you want to use the
 ;;  shift-middle and shift-right buttons, you need not do any mouse
 ;;  configuration.  Your Emacs executable must have been built so as to
 ;;  include the mouse support files for your window system, however.  These
-;;  are in the Emacs "src" directory: for X "x*.c".
+;;  are in the Emacs "src" directory: for X - "x*.c", for macOS - "ns*.c".
 ;;
 ;;  To use a different mouse key or a different window system, modify the
 ;;  mouse key bindings in "hmouse-sh.el".
@@ -38,6 +38,10 @@
 ;;; ************************************************************************
 
 (require 'hbut)
+(unless (fboundp 'smart-info)
+  (require 'hmouse-info))
+(unless (fboundp 'smart-c-at-tag-p)
+  (require 'hmouse-tag))
 
 ;;; ************************************************************************
 ;;; Public variables
@@ -47,9 +51,9 @@
   "*Command that sets point to the mouse cursor position.")
 
 (defun action-key-error ()
-  (hypb:error "(Action Key): No action defined for this context; try another 
location."))
+  (hypb:error "(Hyperbole Action Key): No action defined for this context; try 
another location."))
 (defun assist-key-error ()
-  (hypb:error "(Assist Key): No action defined for this context; try another 
location."))
+  (hypb:error "(Hyperbole Assist Key): No action defined for this context; try 
another location."))
 
 (defcustom action-key-default-function #'action-key-error
   "*Function run by the Action Key in an unspecified context.
@@ -86,14 +90,16 @@ Its default value is #'smart-scroll-down."
   '(
     ;; Handle Emacs push buttons in buffers
     ((and (fboundp 'button-at) (button-at (point))) .
-     ((push-button) . (smart-push-button-help)))
+     ((push-button nil (mouse-event-p last-command-event))
+      . (smart-push-button-help nil (mouse-event-p last-command-event))))
     ;;
     ;; If click in the minibuffer and reading an argument,
     ;; accept argument or give completion help.
     ((and (> (minibuffer-depth) 0)
          (eq (selected-window) (minibuffer-window))
-         (not (eq hargs:reading-p 'hmenu))) .
-     ((exit-minibuffer) . (smart-completion-help)))
+         (not (eq hargs:reading-p 'hmenu))
+         (not (smart-helm-alive-p))) .
+         ((funcall (key-binding (kbd "RET"))) . (smart-completion-help)))
     ;;
     ;; If reading a Hyperbole menu item or a Hyperbole completion-based
     ;; argument, allow selection of an item at point.
@@ -102,25 +108,30 @@ Its default value is #'smart-scroll-down."
       (hargs:select-p hkey-value 'assist)))
     ;;
     ;; If reading a Hyperbole menu item and nothing is selected, just return.
+    ;; Or if in a helm session with point in the minibuffer, quit the
+    ;; session and activate the selected item.
     ((and (> (minibuffer-depth) 0)
          (eq (selected-window) (minibuffer-window))
-         (eq hargs:reading-p 'hmenu)) .
-     ((exit-minibuffer) . (exit-minibuffer)))
+         (or (eq hargs:reading-p 'hmenu)
+             (smart-helm-alive-p))) .
+         ((funcall (key-binding (kbd "RET"))) . (funcall (key-binding (kbd 
"RET")))))
     ;;
     ;; The ID-edit package supports rapid killing, copying, yanking and
     ;; display management. It is available only as a part of InfoDock.
     ;; It is not included with Hyperbole.
     ((and (boundp 'id-edit-mode) id-edit-mode
-         (not buffer-read-only)) .
-     ((id-edit-yank) . (id-edit-yank)))
+         (not buffer-read-only)
+         (not (smart-helm-alive-p))) .
+         ((id-edit-yank) . (id-edit-yank)))
     ;;
     ((and (fboundp 'xref--item-at-point) (xref--item-at-point)) .
      ((xref-goto-xref) . (xref-show-location-at-point)))
     ;;
+    ;; If at the end of a line (eol), invoke the associated Smart Key handler 
EOL handler.
     ((if (eq major-mode 'kotl-mode)
-       (and (not (kotl-mode:eobp)) (kotl-mode:eolp))
-      (and (not (eobp)) (or (eolp) (and selective-display (eq (following-char) 
?\r))))) .
-     ((funcall action-key-eol-function) . (funcall assist-key-eol-function)))
+        (and (not (kotl-mode:eobp)) (kotl-mode:eolp))
+       (smart-eolp)) .
+       ((funcall action-key-eol-function) . (funcall assist-key-eol-function)))
     ;;
     ;; The Smart Menu system provides menus within Emacs on a dumb terminal.
     ;; It is a part of InfoDock, but may also be obtained as a separate
@@ -128,7 +139,7 @@ Its default value is #'smart-scroll-down."
     ((eq major-mode 'smart-menu-mode) . 
      ((smart-menu-select) . (smart-menu-help)))
     ;;
-    ((eq major-mode 'dired-mode) . 
+    ((derived-mode-p 'dired-mode) . 
      ((smart-dired) . (smart-dired-assist)))
     ;;
     ;; If on a Hyperbole button, perform action or give help.
@@ -154,6 +165,14 @@ Its default value is #'smart-scroll-down."
            (t (scroll-up))) .
            (scroll-down)))
     ;;
+    ;; Direct access selection of helm-major-mode completions
+    ((setq hkey-value (and (or (eq major-mode 'helm-major-mode)
+                              (and (featurep 'helm) (equal helm-action-buffer 
(buffer-name))))
+                          (or (eolp)
+                              (smart-helm-at-header)
+                              (smart-helm-line-has-action)))) .
+     ((smart-helm) . (smart-helm-assist)))
+    ;;
     ;; Support the OO-Browser when available.  It is a separate Emacs
     ;; package not included with Hyperbole.  Within an OO-Browser
     ;; OOBR-FTR buffer, an *Implementors* listing buffer, or an
@@ -200,10 +219,14 @@ Its default value is #'smart-scroll-down."
         (string-match "^\\*Help\\|Help\\*$" (buffer-name))) .
         ((hkey-help-hide) . (hkey-help-hide)))
     ;;
+    ;; Pages directory listing mode (page-ext.el)
+    ((eq major-mode 'pages-directory-mode) .
+     ((pages-directory-goto) . (pages-directory-goto)))
+    ;;
     ;; Imenu listing in GNU Emacs
-    ((smart-imenu-item-at-p) .
-     ((smart-imenu-display-item-where (car hkey-value) (cdr hkey-value)) .
-      (imenu-choose-buffer-index)))
+    ((smart-imenu-item-at-p)
+     . ((smart-imenu-display-item-where (car hkey-value) (cdr hkey-value)) .
+       (imenu-choose-buffer-index)))
     ;;
     ;; Function menu listing mode in XEmacs
     ((eq major-mode 'fume-list-mode) .
@@ -238,9 +261,10 @@ Its default value is #'smart-scroll-down."
     ((and (memq major-mode '(js2-mode js-mode js3-mode javascript-mode 
html-mode web-mode))
          buffer-file-name
          (smart-javascript-at-tag-p)) .
-     ((smart-javascript) . (smart-javascript nil 'next-tag)))
+         ((smart-javascript) . (smart-javascript nil 'next-tag)))
     ;;
-    ((and (eq major-mode 'python-mode) buffer-file-name
+    ((and (or (and (eq major-mode 'python-mode) buffer-file-name)
+             (string-match "^Pydoc:\\|\\*?Python" (buffer-name)))
          (smart-python-at-tag-p)) .
          ((smart-python) . (smart-python nil 'next-tag)))
     ;;
@@ -297,15 +321,16 @@ Its default value is #'smart-scroll-down."
     ;;
     ;; Follow references in man pages.
     ((setq hkey-value (smart-man-entry-ref)) .
-     ((smart-man-display hkey-value) .
-      (smart-man-display hkey-value)))
+     ((smart-man-display hkey-value) . (smart-man-display hkey-value)))
     ;;
     ((eq major-mode 'w3-mode) . 
      ((w3-follow-link) . (w3-goto-last-buffer)))
     ;;
-    ((if (boundp 'hyrolo-display-buffer)
-        (equal (buffer-name) hyrolo-display-buffer)) .
-        ((smart-hyrolo) . (smart-hyrolo-assist)))
+    ((and (boundp 'hyrolo-display-buffer) (equal (buffer-name) 
hyrolo-display-buffer)) .
+     ((smart-hyrolo) . (smart-hyrolo-assist)))
+    ;;
+    ((eq major-mode 'image-dired-thumbnail-mode) .
+     ((smart-image-dired-thumbnail) . (smart-image-dired-thumbnail-assist)))
     ;;
     ;; Gomoku game
     ((eq major-mode 'gomoku-mode) . 
@@ -321,10 +346,13 @@ Its default value is #'smart-scroll-down."
     ((and (boundp 'outline-minor-mode) outline-minor-mode) .
      ((smart-outline) . (smart-outline-assist)))
     )
-  "Alist of predicates and form-conses for Action and Assist Keys.
+  "Alist of predicates and form-conses for the Action and Assist Keyboard Keys.
 Each element is: (predicate-form . (action-key-form . assist-key-form)).
 When the Action or Assist Key is pressed, the first or second form,
-respectively, associated with the first non-nil predicate is evaluated.")
+respectively, associated with the first non-nil predicate is evaluated.
+
+See also `hmouse-alist' for a superset of this list utilized by the
+Action and Assist Mouse Keys.")
 
 ;;; ************************************************************************
 ;;; driver code
@@ -337,10 +365,15 @@ respectively, associated with the first non-nil predicate 
is evaluated.")
 (require 'hargs)
 (require 'hmouse-key)
 (defvar hmouse-alist hkey-alist
-  "Alist of predicates and form-conses for context-sensitive smart key mouse 
actions.
-When the action-key or the assist-key is pressed, the first or second
+  "Alist of predicates and form-conses for the Action and Assist Mouse Keys.
+When the Action Mouse Key or Assist Mouse Key is pressed, the first or second
 form, respectively, associated with the first non-nil predicate is
-evaluated.")
+evaluated.
+
+The `hkey-alist' variable is the subset of this alist used by the
+smart keyboard keys.")
+
+;; This next library adds drag actions to `hmouse-alist'.
 (load "hui-window")
 
 ;;; ************************************************************************
@@ -365,7 +398,7 @@ evaluated.")
   (save-excursion (end-of-line) (eobp)))
 
 (defun smart-completion-help ()
-  "Offer completion help for current minibuffer argument, if any."
+  "Offers completion help for current minibuffer argument, if any."
   (if (where-is-internal 'minibuffer-completion-help (current-local-map))
       (minibuffer-completion-help)))
 
@@ -384,6 +417,18 @@ evaluated.")
 ;;; smart-buffer-menu functions
 ;;; ************************************************************************
 
+(defun smart-buffer-menu-no-marks ()
+  "Display this line's buffer in this window and bury the buffer menu unless 
other buffers are marked.
+If buffer menu items are marked, return nil, else t."
+  (let* ((this-buffer (Buffer-menu-buffer t))
+        (menu-buffer (current-buffer))
+        (others (delq this-buffer (Buffer-menu-marked-buffers t))))
+    (unless others
+      (switch-to-buffer this-buffer)
+      (unless (eq menu-buffer this-buffer)
+       (bury-buffer menu-buffer))
+      t)))
+
 (defun smart-buffer-menu ()
   "Uses a single key or mouse key to manipulate buffer-menu entries.
 
@@ -405,11 +450,12 @@ If key is pressed:
   (interactive)
   (cond ((last-line-p) (Buffer-menu-execute))
        ((bolp) (Buffer-menu-mark))
-        ((save-excursion
-             (goto-char (1- (point)))
-            (bolp))
+       ((save-excursion
+          (goto-char (1- (point)))
+          (bolp))
         (Buffer-menu-save))
        ((br-in-browser) (br-buffer-menu-select))
+       ((smart-buffer-menu-no-marks))
        (t (Buffer-menu-select))))
 
 (defun smart-buffer-menu-assist ()
@@ -431,8 +477,8 @@ If assist-key is pressed:
   (cond ((last-line-p) (progn (list-buffers) (forward-line 3)))
        ((bolp) (Buffer-menu-unmark))
         ((save-excursion
-             (goto-char (1- (point)))
-            (bolp))
+          (goto-char (1- (point)))
+          (bolp))
         (Buffer-menu-unmark))
        (t (Buffer-menu-delete))))
 
@@ -440,6 +486,18 @@ If assist-key is pressed:
 ;;; smart-ibuffer-menu functions
 ;;; ************************************************************************
 
+(defun smart-ibuffer-menu-no-marks ()
+  "Display this line's buffer in this window and bury the buffer menu unless 
other buffers are marked.
+If buffer menu items are marked, return nil, else t."
+  (let* ((this-buffer (ibuffer-current-buffer t))
+        (menu-buffer (current-buffer))
+        (others (delq this-buffer (ibuffer-get-marked-buffers))))
+    (unless others
+      (switch-to-buffer this-buffer)
+      (unless (eq menu-buffer this-buffer)
+       (bury-buffer menu-buffer))
+      t)))
+
 (defun smart-ibuffer-menu ()
   "Uses a single key or mouse key to manipulate ibuffer entries.
 
@@ -462,8 +520,9 @@ If key is pressed:
        ((or (bolp) (save-excursion
                      (goto-char (1- (point)))
                      (bolp)))
-        (ibuffer-mark-forward 1))
+        (ibuffer-mark-forward nil nil 1))
        ((br-in-browser) (br-buffer-menu-select))  
+       ((smart-ibuffer-menu-no-marks))
        (t (ibuffer-do-view))))
 
 (defun smart-ibuffer-menu-assist ()
@@ -483,12 +542,14 @@ If assist-key is pressed:
 
   (interactive)
   (cond ((or (first-line-p) (last-line-p))
-        (ibuffer-unmark-all 0))
+        (if (fboundp 'ibuffer-unmark-all-marks)
+            (ibuffer-unmark-all-marks)
+          (ibuffer-unmark-all 0)))
        ((or (bolp) (save-excursion
                      (goto-char (1- (point)))
                      (bolp)))
-        (ibuffer-unmark-forward 1))
-       (t (ibuffer-mark-for-delete 1))))
+        (ibuffer-unmark-forward nil nil 1))
+       (t (ibuffer-mark-for-delete nil nil 1))))
 
 ;;; ************************************************************************
 ;;; smart-calendar functions
@@ -541,6 +602,22 @@ If assist-key is pressed:
 ;;; smart-dired functions
 ;;; ************************************************************************
 
+(defun smart-dired-pathname-up-to-point ()
+  "Assume point is on the first line of a Dired buffer.  Return the part of 
the pathname up through point, else the current directory path.
+Use for direct selection of an ancestor directory of this directory."
+  (interactive)
+  (if (not (looking-at "\\s-*$"))
+      (save-excursion
+       (re-search-forward "[/:\n]" nil t)
+       (buffer-substring-no-properties
+        (if (and (not (bobp)) (= (preceding-char) ?/))
+            (point)
+          (1- (point)))
+        (progn (beginning-of-line)
+               (skip-syntax-forward "-")
+               (point))))
+    default-directory))
+
 (defun smart-dired ()
   "Uses a single key or mouse key to manipulate directory entries.
 
@@ -549,24 +626,40 @@ caller has already checked that the key was pressed in an 
appropriate buffer
 and has moved the cursor there.
 
 If key is pressed:
- (1) within an entry line, the selected file/directory is displayed for
-     editing in the other window;
- (2) on the first line of the buffer, if any deletes are to be
-     performed, they are executed after user verification; otherwise, nothing
-     is done;
- (3) on or after the last line in the buffer, this dired invocation is quit."
+ (1) within an entry line, the selected file/directory is displayed
+     for editing, normally in another window but if an entry has been dragged
+     for display in another window, then this entry is displayed in the current
+     window (DisplayHere minor mode is shown in the mode-line; use {g}
+     to disable it)
+ (2) on the first line of the buffer (other than the end of line):
+     (a) within the leading whitespace, then if any deletes are to be
+         performed, they are executed after user verification; otherwise,
+         nothing is done;
+     (b) otherwise, dired is run in another window on the ancestor directory
+         of the current directory path up through the location of point;
+         if point is before the first character, then the / root directory
+         is used.
+ (3) on or after the last line in the buffer or at the end of the first line,
+     this dired invocation is quit."
 
   (interactive)
   (cond ((first-line-p)
-        (if (save-excursion
-              (goto-char (point-min))
-              (re-search-forward "^D" nil t))
-            (cond ;; For Tree-dired compatibility
-             ((fboundp 'dired-do-flagged-delete)
-              (dired-do-flagged-delete))
-             ((fboundp 'dired-do-deletions)
-              (dired-do-deletions))
-             (t (error "(smart-dired): No Dired expunge function.")))))
+        (cond ((eolp) (quit-window))
+              ((and (looking-at "\\s-")
+                    (save-excursion
+                      (skip-syntax-backward "-"))
+                    (bolp))
+               ;; In whitespace at beginning of 1st line, perform deletes.
+               (if (save-excursion
+                     (goto-char (point-min))
+                     (re-search-forward "^D" nil t))
+                   (cond ;; For Tree-dired compatibility
+                    ((fboundp 'dired-do-flagged-delete)
+                     (dired-do-flagged-delete))
+                    ((fboundp 'dired-do-deletions)
+                     (dired-do-deletions))
+                    (t (error "(smart-dired): No Dired expunge function.")))))
+              (t (hpath:find (smart-dired-pathname-up-to-point)))))
        ((last-line-p)
         (quit-window))
        (t (hpath:find (dired-get-filename)))))
@@ -585,11 +678,11 @@ If assist-key is pressed:
      deletion;
  (3) anywhere else within an entry line, the current entry is marked for
      deletion;
- (4) on or after the last line in the buffer, all delete marks on all entries
-     are undone."
+ (4) on or after the last line in the buffer or at the end of the
+     first line, all delete marks on all entries are undone."
 
   (interactive)
-  (cond ((last-line-p)
+  (cond ((or (last-line-p) (and (first-line-p) (eolp)))
         (dired-unmark-all-files ?D)
         (goto-char (point-max)))
        ((looking-at "~") (dired-flag-backup-files))
@@ -664,7 +757,7 @@ If key is pressed within:
         (if gnus-current-article
             (progn (goto-char (point-min))
                    (re-search-forward
-                     (format "^.[ ]+%d:" gnus-current-article) nil t)
+                    (format "^.[ ]+%d:" gnus-current-article) nil t)
                    (setq this-command 'gnus-summary-next-page)
                    (call-interactively 'gnus-summary-next-page))
           (goto-char (point-min))
@@ -747,6 +840,184 @@ If assist-key is pressed within:
        (t (smart-scroll-down))))
 
 ;;; ************************************************************************
+;;; smart-helm functions
+;;; ************************************************************************
+
+(defun smart-helm-at-header ()
+  "Returns t iff Action Key depress was on the first fixed header line or a 
helm section header of the current buffer."
+  (or (helm-pos-header-line-p)
+      (and (eventp action-key-depress-args)
+          (eq (posn-area (event-start action-key-depress-args))
+              'header-line))))
+
+(defun smart-helm-line-has-action ()
+  "Marks and returns the actions for the helm selection item at the point of 
Action Key depress, or nil if line lacks any action.
+Assumes Hyperbole has already checked that helm is active."
+  (let ((helm-buffer (if (equal helm-action-buffer (buffer-name)) helm-buffer 
(buffer-name))))
+    (save-excursion
+      (with-helm-buffer
+       (setq cursor-type hkey-debug) ; For testing where mouse presses set 
point.
+       (and (eventp action-key-depress-args)
+            (goto-char (posn-point (event-start action-key-depress-args))))
+       (when (not (or (eobp)
+                      (smart-helm-at-header)
+                      (helm-pos-candidate-separator-p)))
+         (let ((helm-selection-point (point)))
+           (helm-mark-current-line)
+           (helm-get-current-action)))))))
+
+(defun smart-helm-alive-p ()
+  ;; Handles case where helm-action-buffer is visible but helm-buffer
+  ;; is not; fixed in helm with commit gh#emacs-helm/helm/cc15f73.
+  (and (featurep 'helm)
+       helm-alive-p
+       (window-live-p (helm-window))
+       (minibuffer-window-active-p (minibuffer-window))))
+
+(defun smart-helm-resume-helm ()
+  "Resumes helm session for the current buffer if not already active."
+  (unless (smart-helm-alive-p)
+    (unless (equal helm-action-buffer (buffer-name))
+      ;; helm-resume doesn't seem to set this properly.
+      (setq helm-buffer (buffer-name)))
+    (helm-resume helm-buffer)
+    (sit-for 0.2)))
+
+(defun smart-helm-at (depress-event)
+  "Returns non-nil iff Smart Mouse DEPRESS-EVENT was on a helm section header, 
candidate separator or at eob or eol.
+If non-nil, returns a property list of the form: (section-header <bool> 
separator <bool> eob <bool> or eol <bool>).
+If a section-header or separator, selects the first following candidate line.
+Assumes Hyperbole has already checked that helm is active."
+  (and (eventp depress-event)
+       ;; Nil means in the buffer text area
+       (not (posn-area (event-start depress-event)))
+       (with-helm-buffer
+        (let ((opoint (point))
+              things)
+          (mouse-set-point depress-event)
+          (setq things (list 'section-header (helm-pos-header-line-p)
+                             'separator (helm-pos-candidate-separator-p)
+                             'eob (eobp)
+                             'eol (eolp)))
+          (cond ((or (plist-get things 'section-header) (plist-get things 
'separator))
+                 (helm-next-line 1)
+                 things)
+                ((plist-get things 'eol)
+                 (helm-mark-current-line)
+                 things)
+                ((plist-get things 'eob)
+                 things)
+                (t
+                 (goto-char opoint)
+                 nil))))))
+
+(defun smart-helm-to-minibuffer ()
+  "Selects minibuffer window when it is active."
+  (if (> (minibuffer-depth) 0)
+      (select-window (minibuffer-window))))
+
+(defun smart-helm()
+  "Executes helm actions based on Action Key click locations:
+  At the end of the buffer, quits from helm and exits the minibuffer.
+  On a candidate line, performs the candidate's first action and remains in 
the minibuffer;
+  On the top, fixed header line, toggles display of the selected candidate's 
possible actions;
+  On an action list line, performs the action after exiting the minibuffer;
+  On a source section header, moves to the next source section or first if on 
last.
+  On a candidate separator line, does nothing.
+  In the minibuffer window, ends the helm session and performs the selected 
item's action."
+  (unless (hmouse-check-action-key)
+    (error "(smart-helm): Hyperbole Action Mouse Key - either depress or 
release event is improperly configured"))
+  (let* ((non-text-area-p (and (eventp action-key-depress-args)
+                              (posn-area (event-start 
action-key-depress-args))))
+        (at-plist (smart-helm-at action-key-depress-args))
+        (section-hdr (plist-get at-plist 'section-header))
+        (separator (plist-get at-plist 'separator))
+        (eob (plist-get at-plist 'eob))
+        (eol (plist-get at-plist 'eol)))
+    (smart-helm-resume-helm)
+    ;; Handle end-of-line clicks.
+    (if (and eol (not eob) (not non-text-area-p))
+       (progn (with-helm-buffer (funcall action-key-eol-function))
+              (smart-helm-to-minibuffer))
+      (smart-helm-to-minibuffer)
+      (when (and (smart-helm-alive-p) (not separator))
+       (let* ((key (kbd (cond
+                         ;; Exit
+                         (eob "C-g")
+                         ;; Move to next source section or first if on last.
+                         (section-hdr "C-o")
+                         ;; If line of the key press is the first /
+                         ;; header line in the window or outside the
+                         ;; buffer area, then use {TAB} command to
+                         ;; switch between match list and action list.
+                         (non-text-area-p "TAB")
+                         ;; RET: Performs action of selection and exits the 
minibuffer.
+                         ;; C-j: Performs action of selection and stays in 
minibuffer.
+                         (hkey-value
+                          (if (helm-action-window) "RET" "C-j"))
+                         (t "RET"))))
+              (binding (key-binding key)))
+         (if hkey-debug
+             (message "(HyDebug): In smart-helm, key to execute is: {%s}; 
binding is: %s"
+                      (key-description key) binding))
+         (call-interactively binding))))))
+
+(defun smart-helm-assist()
+  "Executes helm actions based on Assist Key click locations:
+  At the end of the buffer, quits from helm and exits the minibuffer.
+  On a candidate line, display's the candidate's first action and remains in 
the minibuffer;
+  On the top, fixed header line, toggles display of the selected candidate's 
possible actions;
+  On an action list line, performs the action after exiting the minibuffer;
+  On a source section header, moves to the previous source section or last if 
on first.
+  On a candidate separator line, does nothing.
+  In the minibuffer window, ends the helm session and performs the selected 
item's action."
+  ;; Hyperbole has checked that this line has an action prior to
+  ;; invoking this function.
+  (unless (hmouse-check-assist-key)
+    (error "(smart-helm-assist): Hyperbole Assist Mouse Key - either depress 
or release event is improperly configured"))
+  (let* ((non-text-area-p (and (eventp assist-key-depress-args)
+                              (posn-area (event-start 
assist-key-depress-args))))
+        (at-plist (smart-helm-at assist-key-depress-args))
+        (section-hdr (plist-get at-plist 'section-header))
+        (separator (plist-get at-plist 'separator))
+        (eob (plist-get at-plist 'eob))
+        (eol (plist-get at-plist 'eol))
+        (key))
+    (unwind-protect
+       (smart-helm-resume-helm)
+      ;; Handle end-of-line clicks.
+      (cond ((and eol (not eob) (not non-text-area-p))
+            (with-helm-buffer (funcall assist-key-eol-function)))
+           ((and (smart-helm-alive-p) (not separator))
+            (setq key (cond
+                       ;; Exit
+                       (eob "C-g")
+                       ;; Move to previous source section or last if on last.
+                       (section-hdr "M-o")
+                       ;; If line of the key press is the first /
+                       ;; header line in the window or outside the
+                       ;; buffer area, then use {TAB} command to
+                       ;; switch between match list and action list.
+                       (non-text-area-p "TAB")
+                       ;; Display action for the current line and
+                       ;; return nil.
+                       (t (with-help-window "*Helm Help*"
+                            (let ((helm-buffer (if (equal helm-action-buffer 
(buffer-name))
+                                                   helm-buffer (buffer-name))))
+                              (with-helm-buffer
+                                (princ "The current helm selection item 
is:\n\t")
+                                (princ (helm-get-selection (helm-buffer-get)))
+                                (princ "\nwith an action of:\n\t")
+                                (princ (helm-get-current-action)))
+                              nil)))))
+            (if hkey-debug
+                (message "(HyDebug): In smart-helm-assist, key to execute is: 
{%s}; binding is: %s"
+                         (if key (key-description key) "Help")
+                         (if key (key-binding key) "None")))))
+      (smart-helm-to-minibuffer))
+    (if key (call-interactively (key-binding (kbd key))))))
+
+;;; ************************************************************************
 ;;; smart-hmail functions
 ;;; ************************************************************************
 
@@ -833,6 +1104,20 @@ buffer and has moved the cursor to the selected buffer."
 (defalias 'smart-hyrolo-assist 'smart-hyrolo)
 
 ;;; ************************************************************************
+;;; smart-image-dired functions
+;;; ************************************************************************
+
+(defun smart-image-dired-thumbnail ()
+  "Selects thumbnail and scales its image for display in another Emacs window."
+  (image-dired-mouse-select-thumbnail action-key-release-args)
+  (image-dired-display-thumbnail-original-image))
+
+(defun smart-image-dired-thumbnail-assist ()
+  "Selects thumbnail and uses the external viewer named by 
`image-dired-external-viewer' to display it."
+  (image-dired-mouse-select-thumbnail assist-key-release-args)
+  (image-dired-thumbnail-display-external))
+
+;;; ************************************************************************
 ;;; smart-imenu functions
 ;;; ************************************************************************
 
@@ -850,8 +1135,12 @@ Does nothing unless imenu has been loaded and an index 
has been
 created for the current buffer.  When return value is non-nil, also
 sets `hkey-value' to (identifier . identifier-definition-buffer-position)."
   (and (featurep 'imenu) imenu--index-alist
-       (setq hkey-value (hargs:find-tag-default))
-       (setq hkey-value (cons hkey-value (smart-imenu-item-p hkey-value 
variable-flag)))
+       ;; Ignore non-alias identifiers on the first line of a Lisp def.
+       (not (and (smart-lisp-mode-p) (smart-lisp-at-definition-p)))
+       ;; Ignore Lisp loading expressions
+       (not (smart-lisp-at-load-expression-p))
+       (setq hkey-value (hargs:find-tag-default)
+            hkey-value (cons hkey-value (smart-imenu-item-p hkey-value 
variable-flag)))
        (cdr hkey-value)))
 
 ;; Derived from `imenu' function in the imenu library.
@@ -861,25 +1150,25 @@ If INDEX-ITEM is both a function and a variable, the 
function
 definition is used by default; in such a case, when optional
 VARIABLE-FLAG is non-nil, the variable definition is used instead."
   (when (stringp index-item)
-      ;; Convert a string to an alist element.
-      (if variable-flag
-         ;; Match to variable definitions only.
-         (setq index-item (assoc index-item
-                                 (cdr (assoc "Variables" 
(imenu--make-index-alist)))))
-       ;; First try to match a function definition and if that fails,
-       ;; then allow variable definitions and other types of matches as well.
-       (let ((alist (imenu--make-index-alist)))
-         (setq index-item (or (assoc index-item alist)
-                              ;; Does nothing unless the dash Emacs Lisp
-                              ;; library is available for the -flatten 
function.
-                              (and (require 'dash nil t)
-                                   (assoc index-item (-flatten alist)))))))
-      (if index-item (cdr index-item))))
+    ;; Convert a string to an alist element.
+    (if variable-flag
+       ;; Match to variable definitions only.
+       (setq index-item (assoc index-item
+                               (cdr (assoc "Variables" 
(imenu--make-index-alist)))))
+      ;; First try to match a function definition and if that fails,
+      ;; then allow variable definitions and other types of matches as well.
+      (let ((alist (imenu--make-index-alist)))
+       (setq index-item (or (assoc index-item alist)
+                            ;; Does nothing unless the dash Emacs Lisp
+                            ;; library is available for the -flatten function.
+                            (and (require 'dash nil t)
+                                 (assoc index-item (-flatten alist)))))))
+    (if index-item (cdr index-item))))
 
 ;;; ************************************************************************
 ;;; smart-info functions
 ;;; ************************************************************************
-;;; Autoloaded in "hmouse-info.el".
+;;; In "hmouse-info.el".
 
 ;;; ************************************************************************
 ;;; smart-man functions
@@ -1036,6 +1325,14 @@ If not on a file name, returns nil."
                             (setq smart-outline-cut nil))))
          '(outline-mode-hook outline-minor-mode-hook)))
 
+(defun smart-outline-level ()
+  "Return current outline level if point is on a line that begins with 
`outline-regexp', else 0."
+  (save-excursion
+    (beginning-of-line)
+    (if (looking-at outline-regexp)
+       (funcall outline-level)
+      0)))
+
 (defun smart-outline ()
   "Collapses, expands, and moves outline entries.
 Invoked via a key press when in outline-mode.  It assumes that
@@ -1048,9 +1345,10 @@ If key is pressed:
  (2) at the end of buffer, show all buffer text 
  (3) at the beginning of a heading line, cut the headings subtree from the
      buffer;
- (4) on a header line but not at the beginning or end, if headings subtree is
+ (4) on a heading line but not at the beginning or end, if headings subtree is
      hidden then show it, otherwise hide it;
- (5) anywhere else, scroll up a windowful."
+ (5) anywhere else, invoke `action-key-eol-function', typically to scroll up
+     a windowful."
 
   (interactive)
   (cond (smart-outline-cut
@@ -1063,12 +1361,11 @@ If key is pressed:
          (or (outline-get-next-sibling)
              ;; Skip past start of current entry
              (progn (re-search-forward outline-regexp nil t)
-                    (smart-outline-to-entry-end t (outline-level))))))
+                    (smart-outline-to-entry-end t (funcall outline-level))))))
 
-       ((or (eolp) (zerop (save-excursion (beginning-of-line)
-                                          (outline-level))))
-        (smart-scroll-up))
-       ;; On an outline header line but not at the start/end of line.
+       ((or (eolp) (zerop (smart-outline-level)))
+        (funcall action-key-eol-function))
+       ;; On an outline heading line but not at the start/end of line.
        ((smart-outline-subtree-hidden-p)
         (outline-show-subtree))
        (t (outline-hide-subtree))))
@@ -1087,9 +1384,10 @@ If assist-key is pressed:
  (2) at the end of buffer, hide all bodies in buffer;
  (3) at the beginning of a heading line, cut the current heading (sans
      subtree) from the buffer;
- (4) on a header line but not at the beginning or end, if heading body is
+ (4) on a heading line but not at the beginning or end, if heading body is
      hidden then show it, otherwise hide it;
- (5) anywhere else, scroll down a windowful."
+ (5) anywhere else, invoke `assist-key-eol-function', typically to scroll down
+     a windowful."
 
   (interactive)
   (cond (smart-outline-cut (yank))
@@ -1100,50 +1398,70 @@ If assist-key is pressed:
                      ;; Skip past start of current entry
                      (progn (re-search-forward outline-regexp nil t)
                             (smart-outline-to-entry-end
-                             nil (outline-level)))))
-       ((or (eolp) (zerop (save-excursion (beginning-of-line)
-                                          (outline-level))))
-        (smart-scroll-down))
-       ;; On an outline header line but not at the start/end of line.
+                             nil (funcall outline-level)))))
+       ((or (eolp) (zerop (smart-outline-level)))
+        (funcall assist-key-eol-function))
+       ;; On an outline heading line but not at the start/end of line.
        ((smart-outline-subtree-hidden-p)
         (outline-show-entry))
        (t (outline-hide-entry))))
 
-(defun smart-outline-to-entry-end
-  (&optional include-sub-entries curr-entry-level)
+(defun smart-outline-to-entry-end (&optional include-sub-entries 
curr-entry-level)
   "Goes to end of whole entry if optional INCLUDE-SUB-ENTRIES is non-nil.
 CURR-ENTRY-LEVEL is an integer representing the length of the current level
 string which matched to `outline-regexp'.  If INCLUDE-SUB-ENTRIES is nil,
 CURR-ENTRY-LEVEL is not needed."
   (let (next-entry-exists)
-    (while (and (setq next-entry-exists
-                     (re-search-forward outline-regexp nil t))
+    (while (and (setq next-entry-exists (re-search-forward outline-regexp nil 
t))
                include-sub-entries
                (save-excursion
                  (beginning-of-line)
-                 (> (outline-level)
-                    curr-entry-level))))
+                 (> (funcall outline-level) curr-entry-level))))
     (if next-entry-exists
        (progn (beginning-of-line) (point))
       (goto-char (point-max)))))
 
 (defun smart-outline-subtree-hidden-p ()
   "Returns t if at least initial subtree of heading is hidden, else nil."
-  (outline-invisible-in-p (point) (or (save-excursion (re-search-forward 
"[\n\r]" nil t)) (point))))
+  (and (outline-on-heading-p t)
+       (outline-invisible-in-p
+       (point) (or (save-excursion (re-search-forward "[\n\r]" nil t)) 
(point)))))
+
+(defun smart-outline-char-invisible-p (&optional pos)
+  "Return t if the character after point is invisible/hidden, else nil."
+  (or pos (setq pos (point)))
+  (when (or
+        ;; New-style Emacs outlines with invisible properties to hide lines
+        (outline-invisible-p pos)
+        (delq nil (mapcar (lambda (o) (overlay-get o 'invisible))
+                          (overlays-at (or pos (point)))))
+        ;; Old-style Emacs outlines using \r (^M) characters to hide lines
+        (and selective-display (eq (following-char) ?\r)))
+    t))
+
+(defun smart-eolp ()
+  "Return t if point is at the end of a visible line but not the end of the 
buffer."
+  ;; smart-helm handles eol for helm buffers
+  (unless (and (smart-helm-alive-p) (equal (helm-buffer-get) (buffer-name)))
+    (and (not (eobp)) (eolp) (or (not (smart-outline-char-invisible-p))
+                                (not (smart-outline-char-invisible-p (1- 
(point))))))))
 
 ;;; ************************************************************************
 ;;; smart-push-button functions
 ;;; ************************************************************************
 
 ;; Emacs push button support
-(defun smart-push-button-help (&optional pos)
+(defun smart-push-button-help (&optional pos use-mouse-action)
   "Show help about a push button's action at optional POS or at point in the 
current buffer."
-  (let ((expr (button-get (button-at (or pos (point))) 'action))
+  (let* ((button (button-at (or pos (point))))
+        (action (or (and use-mouse-action (button-get button 'mouse-action))
+                    (button-get button 'action)))
         ;; Ensure these do not invoke with-output-to-temp-buffer a second time.
         (temp-buffer-show-hook)
         (temp-buffer-show-function))
-    (if (functionp expr) (describe-function expr)
-      (with-help-window (print (format "Button's action is: '%s'" expr))))))
+    (if (functionp action)
+       (describe-function action)
+      (with-help-window (print (format "Button's action is: '%s'" action))))))
 
 ;;; ************************************************************************
 ;;; smart-tar functions
diff --git a/hui-select.el b/hui-select.el
index beb318d..6abc237 100644
--- a/hui-select.el
+++ b/hui-select.el
@@ -208,16 +208,17 @@
   "Return non-nil if the character after optional POS (or point) matches a 
syntax entry in `hui-select-syntax-alist'.
 The non-nil value returned is the function to call to select that syntactic 
unit."
   (interactive "d")
-  (or (numberp pos) (setq pos (point)))
-  (setq hui-select-previous 'char)
-  (let* ((syntax (char-syntax (or (char-after pos) (char-before pos))))
-        (pair (assq syntax hui-select-syntax-alist)))
-    (and pair (or hui-select-whitespace (not (eq (cdr pair) 
'thing-whitespace)))
-        ;; Ignore matches that are preceded by '\' as a quote, e.g. ?\'
-        (or (not (char-after pos))
-            (= pos (point-min))
-            (and (char-before pos) (/= ?\\ (char-before pos))))
-        (cdr pair))))
+  (unless (and (bobp) (eobp))
+    (or (numberp pos) (setq pos (point)))
+    (setq hui-select-previous 'char)
+    (let* ((syntax (char-syntax (or (char-after pos) (char-before pos))))
+          (pair (assq syntax hui-select-syntax-alist)))
+      (and pair (or hui-select-whitespace (not (eq (cdr pair) 
'thing-whitespace)))
+          ;; Ignore matches that are preceded by '\' as a quote, e.g. ?\'
+          (or (not (char-after pos))
+              (= pos (point-min))
+              (and (char-before pos) (/= ?\\ (char-before pos))))
+          (cdr pair)))))
 
 ;;;###autoload
 (defun hui-select-goto-matching-delimiter ()
@@ -242,7 +243,9 @@ Also, add language-specific syntax setups to aid in thing 
selection."
   (if hkey-init
       (cond (hyperb:emacs-p
             (transient-mark-mode 1)
+            (hkey-global-set-key [double-down-mouse-1] nil)
             (hkey-global-set-key [double-mouse-1] 'hui-select-thing-with-mouse)
+            (hkey-global-set-key [triple-down-mouse-1] nil)
             (hkey-global-set-key [triple-mouse-1] 
'hui-select-thing-with-mouse))
            ((featurep 'xemacs)
             (add-hook 'mouse-track-click-hook 
#'hui-select-double-click-hook))))
@@ -308,7 +311,7 @@ If invoked repeatedly, this selects bigger and bigger 
things.
 If `hui-select-display-type' is non-nil and this is called
 interactively, the type of selection is displayed in the minibuffer."
   (interactive
-   (cond ((and (fboundp 'region-active-p) (region-active-p))
+   (cond ((and (fboundp 'use-region-p) (use-region-p))
          nil)
         ((and (boundp 'transient-mark-mode) transient-mark-mode mark-active)
          nil)
@@ -317,8 +320,9 @@ interactively, the type of selection is displayed in the 
minibuffer."
          (hui-select-reset)
          nil)))
   (let ((region (hui-select-boundaries (point))))
-    (or region (if (eq hui-select-previous 'punctuation)
-                  (setq region (hui-select-word (point)))))
+    (unless region
+      (when (eq hui-select-previous 'punctuation)
+       (setq region (hui-select-word (point)))))
     (when region
       (goto-char (car region))
       (set-mark (cdr region))
@@ -597,22 +601,21 @@ The non-nil value returned is the function to call to 
select that syntactic unit
 (defun hui-select-delimited-thing ()
   "Selects a markup pair, list, array/vector, set, comment or string at point 
and returns t, else nil."
   (interactive)
-  (hui-select-delimited-thing-call #'hui-select-thing)
-  ;; If selected region is followed by only whitespace and then a
-  ;; newline, add the newline to the region.
-  (if (region-active-p)
-      (if (> (mark) (point))
-         (save-excursion
-           (goto-char (mark))
-           (skip-chars-forward " \t")
-           (and (char-after) (= ?\n (char-after))
-                (set-mark (1+ (point)))))
-       (if (looking-at "[ \t]*\n")
-           (goto-char (match-end 0))))))
+  (prog1 (and (hui-select-delimited-thing-call #'hui-select-thing) t)
+    ;; If selected region is followed by only whitespace and then a
+    ;; newline, add the newline to the region.
+    (if (use-region-p)
+       (if (> (mark) (point))
+           (save-excursion
+             (goto-char (mark))
+             (skip-chars-forward " \t")
+             (and (char-after) (= ?\n (char-after))
+                  (set-mark (1+ (point)))))
+         (if (looking-at "[ \t]*\n")
+             (goto-char (match-end 0)))))))
 
 (defun hui-select-at-delimited-sexp-p ()
-  (if (eolp)
-      nil
+  (unless (eolp)
     (let ((syn-before (if (char-before) (char-syntax (char-before)) 0))
          (syn-after  (if (char-after)  (char-syntax (char-after)) 0)))
       (or (and (/= syn-before ?\\) (or (= syn-after ?\() (= syn-after ?\))))
@@ -625,8 +628,9 @@ Return t if marked, nil otherwise.  If any error occurs 
such as
   unbalanced start and end sexp delimiters, ignore it, and return
   nil."
   (interactive)
-  (let ((mark-sexp-func (lambda () (if (region-active-p) (deactivate-mark))
-                           (mark-sexp) t)))
+  (let ((mark-sexp-func (lambda ()
+                         (if (region-active-p) (deactivate-mark))
+                         (mark-sexp) t)))
     (condition-case nil
        (let ((syn-after (char-syntax (char-after)))
              syn-before)
@@ -690,7 +694,7 @@ mail and news reply modes."
 The non-nil value returned is the function to call to select that syntactic 
unit."
   (unless (and (memq major-mode '(emacs-lisp-mode lisp-mode 
lisp-interaction-mode slime-mode cider-mode))
               ;; Ignore quoted identifier sexpressions, like #'function
-              (char-after) (memq (char-after) '(?# ?\'))))
+              (char-after) (memq (char-after) '(?# ?\')))
       (let ((hui-select-char-p)
            (hui-select-whitespace)
            (hui-select-syntax-alist '((?\" . hui-select-string)
@@ -703,14 +707,14 @@ The non-nil value returned is the function to call to 
select that syntactic unit
                                       ;; multi-char comment delimiters
                                       (?\. . hui-select-punctuation))))
        (hui-select-reset)
-       (funcall func)))
+       (funcall func))))
 
 (defun hui-select-region-bigger-p (old-region new-region)
   "Return t if OLD-REGION is smaller than NEW-REGION and NEW-REGION partially 
overlaps OLD-REGION, or if OLD-REGION is uninitialized."
   (if (null (car old-region))
       t
     (and (> (abs (- (cdr new-region) (car new-region)))
-       (abs (- (cdr old-region) (car old-region))))
+           (abs (- (cdr old-region) (car old-region))))
         ;; Ensure the two regions intersect.
         (or (and (<= (min (cdr new-region) (car new-region))
                      (min (cdr old-region) (car old-region)))
diff --git a/hui-window.el b/hui-window.el
index 8c5dd07..d8dd4ad 100644
--- a/hui-window.el
+++ b/hui-window.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:    21-Sep-92
 ;;
-;; Copyright (C) 1991-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1992-2017  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -13,29 +13,57 @@
 ;;
 ;;   Must be loaded AFTER hmouse-alist has been defined in "hui-mouse.el".
 ;;
-;;   Handles drags in same window or across windows and modeline depresses.
+;;   Handles drags in same window or across windows and modeline presses.
 ;;
 ;; What drags and modeline presses do.  (Note that a `thing' is a
-;; delimited expression, such as a string, list or markup language tag
-;; pair).
-;; 
==============================================================================
+;; delimited expression, such as a string, list or markup language tag pair).
+;; 
======================================================================================================
 ;;                                              Smart Keys
-;; Context                         Action Key                 Assist Key
-;; 
==============================================================================
-;; Drag from thing start or end    Yank thing at release      Kill thing and 
yank at release
+;; Context                         Action Key                  Assist Key
+;; 
======================================================================================================
+;; Drag from thing start or end    Yank thing at release       Kill thing and 
yank at release
+;;
 ;; Drag from shared window side
-;;   or from left of scroll bar    Resize window width        <- same
-;; Modeline depress & wind release Resize window height       <- same
+;;   or from left of scroll bar    Resize window width         <- same
+;; Modeline vertical drag          Resize window height        <- same
+;;
+;; Other Modeline drag to          Replace dest. buffer with   Swap window 
buffers
+;;   another window                  source buffer
+;;
+;; Drag to a Modeline from:
+;;   buffer/file menu item         Display buffer/file in      Swap window 
buffers
+;;                                   new window by release
+;;   buffer/file menu 1st line     Move buffer/file menu to    Swap window 
buffers
+;;                                   new window by release
+;;   anywhere else                 Display buffer in           Swap window 
buffers
+;;                                   new window by release
+;;
+;; Drag between windows from:
+;;   buffer/file menu item         Display buffer/file in      Swap window 
buffers
+;;                                   window of button release
+;;   buffer/file menu 1st line     Move buffer/file menu       Swap window 
buffers
+;;   anywhere else                 Create/modify a link button Swap window 
buffers
+;;
+;; Drag outside of Emacs from:
+;;   buffer/file menu item         Display buffer/file in      Move window to 
a new frame
+;;                                   a new frame
+;;   Modeline or other window      Clone window to a new frame Move window to 
a new frame
+;;
 ;; Click in modeline
-;;     Left window edge            Bury buffer                Unbury bottom 
buffer
-;;     Right window edge           Info                       Smart Key Summary
-;;     Otherwise                   Action Key Modeline Hook   Assist Key 
Modeline Hook
-;; Drag between windows            Create/modify a link but   Swap window 
buffers
-;; Drag in a window, region active Error, not allowed         Error, not 
allowed
-;; Drag horizontally in a window   Split window below         Delete window
-;; Drag vertically in a window     Split window side-by-side  Delete window
-;; Drag diagonally in a window     Save window-config         Restore 
window-config from ring
-;; Active region exists            Yank region at release     Kill region and 
yank at release
+;;     Left modeline edge          Bury buffer                 Unbury bottom 
buffer
+;;     Right modeline edge         Info                        Smart Key 
Summary
+;;     Buffer ID                   Dired on buffer's dir       Next buffer
+;;                                   or on parent when a dir
+;;     Other blank area            Action Key modeline hook    Assist Key 
modeline hook
+;;                                   Show/Hide Buffer Menu      Popup Jump & 
Manage Menu
+;;
+;; Drag in a window, region active Error, not allowed          Error, not 
allowed
+;; Drag horizontally in a window   Split window below          Delete window
+;; Drag vertically in a window     Split window side-by-side   Delete window
+;; Drag diagonally in a window     Save window-config          Restore 
window-config from ring
+;;
+;; Active region exists, click     Yank region at release      Kill region and 
yank at release
+;;   outside of the region
 
 ;;; Code:
 ;;; ************************************************************************
@@ -43,6 +71,9 @@
 ;;; ************************************************************************
 
 (eval-when-compile (defvar assist-flag nil)) ;; Silences free variable 
compiler warnings
+(require 'hycontrol)
+;; For momentary highlighting of buffer/file item lines.
+(require 'pulse nil t)
 
 ;;; ************************************************************************
 ;;; Public variables
@@ -61,6 +92,7 @@ of screen control commands."
   :type 'function
   :group 'hyperbole-keys)
 
+;; Set this to `hmouse-context-ibuffer-menu' if you use the ibuffer package.
 (defcustom action-key-modeline-function #'hmouse-context-menu
   "Function to call when the Action Mouse Key is clicked in the center portion 
of a modeline."
   :type 'function
@@ -71,6 +103,43 @@ of screen control commands."
   :type 'function
   :group 'hyperbole-keys)
 
+(defun hmouse-map-modes-to-form (mode-forms)
+  "Maps over a sequence of (major-mode(s) form-to-eval) lists; returns items 
with a single major-mode in the car, (major-mode form-to-eval)."
+  (apply 'nconc
+        (mapcar (lambda (modes-form)
+                  (if (sequencep (car modes-form))
+                      (mapcar (lambda (mode) (cons mode (cdr modes-form)))
+                              (car modes-form))
+                    (list modes-form)))
+                mode-forms)))
+
+(defvar hmouse-drag-item-mode-forms
+  (hmouse-map-modes-to-form
+  '((Buffer-menu-mode (Buffer-menu-buffer t))
+    (ibuffer-mode (ibuffer-current-buffer t))
+    (helm-major-mode (helm-get-selection (current-buffer)))
+    ;; Note how multiple major modes may be grouped with a single form for 
item getting.
+    ((dired-mode vc-dired-mode wdired-mode) (or (when (dired-get-filename nil 
t)
+                                                 
(hmouse-dired-display-here-mode 1)
+                                                 (dired-get-filename nil t))
+                                               ;; Drag from first line current 
directory
+                                               ;; means move this dired buffer 
to the
+                                               ;; release window.
+                                               (prog1 (current-buffer)
+                                                 (hmouse-pulse-buffer)
+                                                 (bury-buffer))))))
+  "List of (major-mode lisp-form) lists.
+The car of an item must be a major-mode symbol.  The cadr of an item
+is a Lisp form to evaluate to get the item name at point (typically a
+buffer, file or directory name whose contents will be displayed in the
+drag release window.")
+
+
+(defcustom hmouse-pulse-flag t
+  "When non-nil (the default) and when display supports visual pulsing, then 
pulse lines and buffers when an Action Key drag is used to place a buffer or 
file in a window."
+  :type 'boolean
+  :group 'hyperbole-keys)
+
  ;; Mats Lidell says this should be 10 characters for GNU Emacs.
 (defvar hmouse-edge-sensitivity (if hyperb:emacs-p 10 3)
   "*Number of characters from window edges within which a click is considered 
at an edge.")
@@ -89,53 +158,85 @@ of screen control commands."
 (defvar hmouse-y-diagonal-sensitivity 3
   "*Number of lines mouse must move vertically between depress/release to 
register a diagonal drag.")
 
+;; Ensure any helm item at Action Mouse Key depress point is selected
+;; before a drag that ends in another window.
+(add-hook 'action-key-depress-hook
+         (lambda () (if (eq major-mode 'helm-major-mode)
+                        ;; Select any line with an action.
+                        (smart-helm-line-has-action))))
+
 ;;;
 ;;; Add window handling to hmouse-alist dispatch table.
 ;;;
 (if (not (boundp 'hmouse-alist))
-    (error
-      "\"hui-window.el\": `hmouse-alist' must be defined before loading this.")
-  (or (assoc #'(hmouse-drag-thing) hmouse-alist)
-      (setq hmouse-alist
-           (append
-             '(
-               ;; If click in the minibuffer when it is not active (blank),
-               ;; display the Hyperbole minibuffer menu or popup the jump menu.
-               ((hmouse-inactive-minibuffer-p) .
-                ((funcall action-key-minibuffer-function) . 
-                 (funcall assist-key-minibuffer-function)))
-               ((hmouse-drag-thing) .
-                ((hmouse-yank-region) . (hmouse-kill-and-yank-region)))
-               ((hmouse-drag-window-side) .
-                ((hmouse-resize-window-side) . (hmouse-resize-window-side 
'assist)))
-               ((hmouse-modeline-depress) .
-                ((action-key-modeline) . (assist-key-modeline)))
-               ((hmouse-drag-between-windows) .
-                ;; Note that `hui:link-directly' uses any active
-                ;; region as the label of the button to create.
-                ((hui:link-directly) . (hmouse-swap-buffers 'assist)))
-               ((hmouse-drag-region-active) .
-                ((hmouse-drag-not-allowed) . (hmouse-drag-not-allowed)))
-               ((setq hkey-value (and (not (hmouse-drag-between-windows))
-                                      (hmouse-drag-horizontally))) .
-                ((hmouse-horizontal-action-drag) . 
(hmouse-horizontal-assist-drag)))
-               ((hmouse-drag-vertically) .
-                ((hmouse-vertical-action-drag) . 
(hmouse-vertical-assist-drag)))
-               ((setq hkey-value (hmouse-drag-diagonally)) .
-                ((hywconfig-ring-save) . (hywconfig-yank-pop
-                                        (prefix-numeric-value 
current-prefix-arg))))
-               ;;
-               ;; Now since this is not a drag and if there was an active
-               ;; region prior to when the Action or Assist Key was
-               ;; pressed, then store point at one end of the region into
-               ;; `hkey-value' and the string value of the region
-               ;; into `hkey-region' which is either yanked, or
-               ;; killed and yanked at the current point.
-               ((hmouse-prior-active-region) .
-                ((hmouse-yank-region) . (hmouse-kill-and-yank-region)))
-               ;;
-               )
-             hmouse-alist))))
+    (error "\"hui-window.el\": `hmouse-alist' must be defined before loading 
this.")
+  (unless (assoc #'(hmouse-inactive-minibuffer-p) hmouse-alist)
+    (setq hmouse-alist
+         (append
+          '(
+            ;; If click in the minibuffer when it is not active (blank),
+            ;; display the Hyperbole minibuffer menu or popup the jump menu.
+            ((hmouse-inactive-minibuffer-p) .
+             ((funcall action-key-minibuffer-function) . 
+              (funcall assist-key-minibuffer-function)))
+            ((hmouse-drag-thing) .
+             ((hmouse-yank-region) . (hmouse-kill-and-yank-region)))
+            ((hmouse-drag-window-side) .
+             ((hmouse-resize-window-side) . (hmouse-resize-window-side)))
+            ;;
+            ;; Although Hyperbole can distinguish whether
+            ;; inter-window drags are between frames or not,
+            ;; having different behavior for those 2 cases could
+            ;; be confusing, so treat all modeline drags between
+            ;; windows the same and comment out this next clause.
+            ;;   Modeline drag between frames
+            ;;   ((and (hmouse-modeline-depress) (hmouse-drag-between-frames)) 
.
+            ;;    ((hmouse-clone-window-to-frame) . 
(hmouse-move-window-to-frame)))
+            ;;
+            ;; Drag with release on a Modeline
+            ((and (hmouse-modeline-release) (not (hmouse-modeline-click))) .
+             ((or (hmouse-drag-item-to-display t) (hmouse-buffer-to-window t)) 
.
+              (hmouse-swap-buffers)))
+            ;; Non-vertical Modeline drag between windows
+            ((and (hmouse-modeline-depress) (hmouse-drag-between-windows)
+                  (not (hmouse-drag-vertically-within-emacs))) .
+                  ((hmouse-buffer-to-window) . (hmouse-swap-buffers)))
+            ;; Modeline drag that ends outside of Emacs
+            ((and (hmouse-modeline-depress) (hmouse-drag-outside-all-windows)) 
.
+             ((hycontrol-clone-window-to-new-frame) . 
(hycontrol-window-to-new-frame)))
+            ;; Other Modeline click or drag
+            ((hmouse-modeline-depress) .
+             ((action-key-modeline) . (assist-key-modeline)))
+            ((hmouse-drag-between-windows) .
+             ;; Note that `hui:link-directly' uses any active
+             ;; region as the label of the button to create.
+             ((or (hmouse-drag-item-to-display) (hui:link-directly)) . 
(hmouse-swap-buffers)))
+            ((hmouse-drag-region-active) .
+             ((hmouse-drag-not-allowed) . (hmouse-drag-not-allowed)))
+            ((setq hkey-value (hmouse-drag-horizontally)) .
+             ((hmouse-horizontal-action-drag) . 
(hmouse-horizontal-assist-drag)))
+            ((hmouse-drag-vertically) .
+             ((hmouse-vertical-action-drag) . (hmouse-vertical-assist-drag)))
+            ((setq hkey-value (hmouse-drag-diagonally)) .
+             ((call-interactively #'hywconfig-ring-save) .
+              (call-interactively #'hywconfig-yank-pop)))
+            ;; Window drag that ends outside of Emacs
+            ((hmouse-drag-outside-all-windows) .
+             ((or (hmouse-drag-item-to-display)
+                  (hycontrol-clone-window-to-new-frame)) .
+                  (hycontrol-window-to-new-frame)))
+            ;;
+            ;; Now since this is not a drag and if there was an active
+            ;; region prior to when the Action or Assist Key was
+            ;; pressed, then store point at one end of the region into
+            ;; `hkey-value' and the string value of the region
+            ;; into `hkey-region' which is either yanked, or
+            ;; killed and yanked at the current point.
+            ((hmouse-prior-active-region) .
+             ((hmouse-yank-region) . (hmouse-kill-and-yank-region)))
+            ;;
+            )
+          hmouse-alist))))
 
 ;;; ************************************************************************
 ;;; Public functions
@@ -182,19 +283,46 @@ part of InfoDock and not a part of Hyperbole)."
        (ibuffer)))))
 
 (defun hmouse-prior-active-region ()
-  (and (region-active-p)
-       ;; Store and goto any prior value of point from the region
-       ;; prior to the Smart Key depress, so we can return to it later.
-       (setq hkey-value (marker-position
-                        (if assist-flag assist-key-depress-prev-point 
action-key-depress-prev-point)))
-       (goto-char hkey-value)
-       (hmouse-save-region)))
+  "Return t iff there is a non-empty active region in buffer of the last Smart 
Mouse Key release."
+  (when (setq hkey-value (if assist-flag assist-key-depress-prev-point 
action-key-depress-prev-point))
+    (save-excursion
+      (set-buffer (marker-buffer hkey-value))
+      ;; Store and goto any prior value of point from the region
+      ;; prior to the Smart Key depress, so we can return to it later.
+      (and (goto-char hkey-value)
+          (hmouse-save-region)
+          t))))
+
+(defun hmouse-dired-readin-hook ()
+  "Remove local `hpath:display-where' setting whenever re-read a dired 
directory.
+See `hmouse-dired-item-dragged' for use."
+  (hmouse-dired-display-here-mode 0))
+
+(define-minor-mode hmouse-dired-display-here-mode
+  "Once a dired buffer item has been dragged, make next Action Key press on an 
item display it in the same dired window.
+
+By default an Action Key press on a dired item displays it in another
+window.   But once a Dired item is dragged to another window, the next
+Action Key press should display it in the dired window so that the
+behavior matches that of Buffer Menu and allows for setting what is
+displayed in all windows on screen, including the dired window.
+
+If the directory is re-read into the dired buffer with {g}, then Action
+Key behavior reverts to as though no items have been dragged."
+  nil
+  " DisplayHere"
+  nil
+  (if hmouse-dired-display-here-mode
+      (progn (set (make-local-variable 'hpath:display-where) 'this-window)
+            (add-hook 'dired-after-readin-hook 'hmouse-dired-readin-hook nil 
t))
+    (kill-local-variable 'hpath:display-where)
+    (remove-hook 'dired-after-readin-hook 'hmouse-dired-readin-hook t)))
 
 (defun hmouse-drag-region-active ()
   "Return non-nil if an active region existed in the depress buffer prior to 
the depress and a drag motion has occurred."
   (save-excursion
-    (hmouse-goto-depress-prev-point)
-    (and (region-active-p)
+    (and (hmouse-goto-region-prev-point)
+        (hmouse-use-region-p)
         (or (hmouse-drag-vertically) (hmouse-drag-horizontally) 
(hmouse-drag-diagonally))
         (setq hkey-value (point)))))
 
@@ -205,100 +333,132 @@ Delimited constructs include lists, comments, strings,
  </div>.  Point must be on the start or end delimiter or in the
  case of markup pair tags, on the first character of either tag.
  For strings and comments, point must be on the first line."
-    ;; Move point back to Smart Key depress location for testing whether at a 
thing.
-    (let ((depress-args (if assist-flag assist-key-depress-args 
action-key-depress-args))
-         (release-args (if assist-flag assist-key-release-args 
action-key-release-args))
-         (marked-thing))
-      (save-excursion
-       (hmouse-goto-depress-point)
-       (if (and (not (region-active-p)) (hui-select-at-delimited-thing-p)
-                (or (markerp depress-args) (markerp release-args)
-                    (and (not (or (hmouse-drag-window-side) 
(hmouse-modeline-depress)))
-                         (or (hmouse-drag-between-windows) 
(hmouse-drag-vertically) 
-                             (hmouse-drag-horizontally) 
(hmouse-drag-diagonally))))
-                (let ((start-buf (window-buffer (smart-window-of-coords 
depress-args)))
-                      (end-buf (window-buffer (smart-window-of-coords 
release-args)))
-                      (start-point (smart-point-of-coords depress-args))
-                      (end-point (smart-point-of-coords release-args)))
-                  ;; Ignore this, if it is a click or if drag end point is 
within the thing to operate upon
-                  (not (and (eq start-buf end-buf)
-                            (/= start-point end-point)
-                            (setq marked-thing (hui-select-delimited-thing))
-                            (>= end-point (min (point) (mark)))
-                            (<= end-point (max (point) (mark)))))))
-           (progn (if (not (region-active-p)) (hui-select-delimited-thing))
-                  ;; Store any new value of point as a result of marking the 
region,
-                  ;; so we can return to it later.
-                  (setq hkey-value (point))
-                  (hmouse-save-region)
-                  t)
-         (if marked-thing (deactivate-mark))
-         nil))))
+  ;; Move point back to Smart Key depress location for testing whether at a 
thing.
+  (let ((depress-args (if assist-flag assist-key-depress-args 
action-key-depress-args))
+       (release-args (if assist-flag assist-key-release-args 
action-key-release-args))
+       (marked-thing)
+       (ignore-drag))
+    (save-excursion
+      (hmouse-goto-depress-point)
+      (if (and (not (hmouse-use-region-p)) (hui-select-at-delimited-thing-p)
+              (or (markerp depress-args) (markerp release-args)
+                  (and (not (or (hmouse-drag-window-side) 
(hmouse-modeline-depress)))
+                       (or (hmouse-drag-between-windows) 
(hmouse-drag-vertically) 
+                           (hmouse-drag-horizontally) 
(hmouse-drag-diagonally))))
+              (let ((start-buf (window-buffer (smart-window-of-coords 
depress-args)))
+                    (end-buf (window-buffer (smart-window-of-coords 
release-args)))
+                    (start-point (smart-point-of-coords depress-args))
+                    (end-point (smart-point-of-coords release-args)))
+                ;; If it is a click, return nil; if drag end point
+                ;; is within the thing to operate upon, don't set a
+                ;; region, so no operation will be performed but
+                ;; return t (ignore drag).
+                (not (and (eq start-buf end-buf)
+                          start-point
+                          end-point
+                          (/= start-point end-point)
+                          (setq marked-thing (hui-select-delimited-thing))
+                          (setq ignore-drag (and (> end-point (min (point) 
(mark)))
+                                                 (< end-point (max (point) 
(mark)))))))))
+         (progn (when (not (hmouse-use-region-p)) (hui-select-delimited-thing))
+                ;; Erase any saved location of a region prior to Smart Key 
depress since now we have a
+                ;; new region location.  This prevents 
hmouse-kill-and-yank-region from jumping to the
+                ;; old location.
+                (if assist-flag
+                    (setq assist-key-depress-prev-point nil)
+                  (setq action-key-depress-prev-point nil))
+                ;; Store any new value of point as a result of marking the 
region, so we can return to it
+                ;; later.
+                (setq hkey-value (point))
+                (hmouse-save-region)
+                t)
+       (if marked-thing (deactivate-mark))
+       (when ignore-drag (error "(Hyperbole): Smart Key drag of a delimited 
thing must end outside of the thing"))
+       nil))))
 
 (defun hmouse-kill-region ()
   "Kill the marked region near where the Smart Key was depressed.
 Signals an error if the depress buffer is read-only."
-  ;; Move point back to Smart Key depress buffer but not necessarily
-  ;; the same point at the depress since region selection may have
-  ;; moved it.
-  (hmouse-goto-region-point)
+  ;; Region may be in another buffer, so move there if so.
+  (hmouse-goto-region-prev-point)
   (if buffer-read-only
       ;; In this case, we want an error that will terminate execution so that
       ;; hkey-region is not reset to nil.  This allows the user to fix the
       ;; problem and then to try killing again.
       (error "(hmouse-kill-region): Use {%s} to enable killing from this 
buffer."
             (hmouse-read-only-toggle-key))
-    (kill-region (point) (mark))))
+    (kill-region (or hkey-value (point)) (mark))))
 
 (defun hmouse-kill-and-yank-region ()
   "Kill the marked region near where the Smart Key was depressed and yank it 
at the point of release.
 Signals an error if either depress or release buffer is read-only."
-  ;; Move point back to Smart Key depress buffer but not necessarily
-  ;; the same point, for testing if real-only.
-  (hmouse-goto-region-point)
-  (if buffer-read-only
-      ;; In this case, we want an error that will terminate execution so that
-      ;; hkey-region is not reset to nil.  This allows the user to fix the
-      ;; problem and then to try killing again.
-      (error "(hmouse-kill-and-yank-region): Use {%s} to enable killing from 
this buffer."
-            (hmouse-read-only-toggle-key))
-    ;; Depress and release may be in the same buffer, in which case, 
-    ;; save the release point that may change as a result of
-    ;; the kill; also, before the kill, restore the point to where it
-    ;; was when the region was set.
-    (hmouse-goto-release-point)
-    (let ((release-point (point-marker)))
-      (if buffer-read-only
-         ;; In this case, we want an error that will terminate execution so 
that
-         ;; hkey-region is not reset to nil.  This allows the user to fix the
-         ;; problem and then to try yanking again.
-         (error "(hmouse-kill-and-yank-region): Use {%s} to enable yanking 
into this buffer."
-                (hmouse-read-only-toggle-key))
-       ;; Now kill and yank the region into the Smart Key release buffer.
-       (hmouse-goto-region-point)
-       (kill-region (point) (mark))
-       ;; Permanently return to release point
-       (select-window (if assist-flag assist-key-release-window 
action-key-release-window))
-       (goto-char release-point)
-       (hmouse-insert-region)))))
+  (when hkey-region
+    ;; Move point back to Smart Key depress buffer.
+    (hmouse-goto-depress-point)
+    (if buffer-read-only
+       ;; In this case, we want an error that will terminate execution so that
+       ;; hkey-region is not reset to nil.  This allows the user to fix the
+       ;; problem and then to try killing again.
+       (error "(hmouse-kill-and-yank-region): Use {%s} to enable killing from 
this buffer."
+              (hmouse-read-only-toggle-key))
+      ;; Depress and release may be in the same buffer, in which case, 
+      ;; save the release point that may change as a result of
+      ;; the kill; also, before the kill, restore the point to where it
+      ;; was when the region was set.
+      (hmouse-goto-release-point)
+      (let ((release-point (point-marker)))
+       (if buffer-read-only
+           ;; In this case, we want an error that will terminate execution so 
that
+           ;; hkey-region is not reset to nil.  This allows the user to fix the
+           ;; problem and then to try yanking again.
+           (error "(hmouse-kill-and-yank-region): Use {%s} to enable yanking 
into this buffer."
+                  (hmouse-read-only-toggle-key))
+         ;; Region may be in another buffer, so move there if so.
+         (hmouse-goto-region-prev-point)
+         ;; Now kill and yank the region into the Smart Key release buffer.
+         (kill-region (or hkey-value (point)) (mark))
+         ;; Permanently return to release point
+         (select-window (if assist-flag assist-key-release-window 
action-key-release-window))
+         (goto-char release-point)
+         ;; Protect from indentation errors
+         (condition-case ()
+             (hmouse-insert-region)
+           (error nil)))))))
 
 (defun hmouse-yank-region ()
   "Yank the region of text saved in `hkey-region' into the current buffer.
 Signals an error if the buffer is read-only."
   ;; If a region was just selected for yanking, deactivate it as we
   ;; have already copied the region into `hkey-region'.
-  (hmouse-goto-region-point)
-  (if (region-active-p) (deactivate-mark))
-  (hmouse-goto-release-point)
-  (if buffer-read-only
-      ;; In this case, we want an error that will terminate execution so that
-      ;; hkey-region is not reset to nil.  This allows the user to fix the
-      ;; problem and then to try yanking again.
-      (error "(hmouse-yank-region): Use {%s} to enable yanking into this 
buffer."
-            (hmouse-read-only-toggle-key))
-    ;; Permanently return to release point
-    (select-window (if assist-flag assist-key-release-window 
action-key-release-window))
-    (hmouse-insert-region)))
+  (when hkey-region
+    (hmouse-goto-region-prev-point)
+    (if (region-active-p) (deactivate-mark))
+    (hmouse-goto-release-point)
+    (if buffer-read-only
+       ;; In this case, we want an error that will terminate execution so that
+       ;; hkey-region is not reset to nil.  This allows the user to fix the
+       ;; problem and then to try yanking again.
+       (error "(hmouse-yank-region): Use {%s} to enable yanking into this 
buffer."
+              (hmouse-read-only-toggle-key))
+      ;; Permanently return to release point
+      (select-window (if assist-flag assist-key-release-window 
action-key-release-window))
+      ;; Protect from indentation errors
+      (condition-case ()
+         (hmouse-insert-region)
+       (error nil)))))
+
+(defun hmouse-drag-between-frames ()
+  "Returns non-nil if last Action Key depress and release were in different 
frames.
+If free variable `assist-flag' is non-nil, uses Assist Key."
+  (if assist-flag
+      (and (window-valid-p assist-key-depress-window)
+          (window-valid-p assist-key-release-window)
+          (not (eq (window-frame assist-key-depress-window)
+                   (window-frame assist-key-release-window))))
+    (and (window-valid-p action-key-depress-window)
+        (window-valid-p action-key-release-window)
+        (not (eq (window-frame action-key-depress-window)
+                 (window-frame action-key-release-window))))))
 
 (defun hmouse-drag-between-windows ()
   "Returns non-nil if last Action Key depress and release were in different 
windows.
@@ -310,93 +470,144 @@ If free variable `assist-flag' is non-nil, uses Assist 
Key."
     (and action-key-depress-window action-key-release-window
         (not (eq action-key-depress-window action-key-release-window)))))
 
+(defun hmouse-drag-same-window ()
+  "Returns non-nil if last Action Key depress and release were in the same 
window.
+If free variable `assist-flag' is non-nil, uses Assist Key."
+  (if assist-flag
+      (and assist-key-depress-window assist-key-release-window
+          (eq assist-key-depress-window assist-key-release-window))
+    (and action-key-depress-window action-key-release-window
+        (eq action-key-depress-window action-key-release-window))))
+
+(defun hmouse-drag-outside-all-windows ()
+  "Returns non-nil if last Action Key release was outside of an Emacs window.
+If free variable `assist-flag' is non-nil, uses Assist Key."
+  (null (if assist-flag
+           assist-key-release-window
+         action-key-release-window)))
+
+(defun hmouse-drag-item-to-display (&optional new-window)
+  "Depress on a buffer name in Buffer-menu/ibuffer mode or on a file/directory 
in dired mode and release where the item is to be displayed.
+
+If depress is on an item and release is outside of Emacs, the
+item is displayed in a new frame with a single window.  If the
+release is inside Emacs and the optional NEW-WINDOW is non-nil,
+the release window is sensibly split before the buffer is
+displayed.  Otherwise, the buffer is simply displayed in the
+release window.
+
+Return t unless source buffer is not one of these modes or point is
+not on an item, then nil.
+
+See `hmouse-drag-item-mode-forms' for how to allow for draggable
+items in other modes."
+  (let* ((buf (and action-key-depress-window (window-buffer 
action-key-depress-window)))
+        (mode (and buf (cdr (assq 'major-mode (buffer-local-variables buf))))))
+    (when (and buf (with-current-buffer buf
+                    ;; Point must be on an item, not after one
+                    (not (looking-at "\\s-*$")))
+              (memq mode (mapcar #'car hmouse-drag-item-mode-forms)))
+      (hmouse-item-to-window new-window)
+      t)))
+
 (defun hmouse-drag-diagonally ()
   "Returns non-nil iff last Action Key use was a diagonal drag within a single 
window.
 If free variable `assist-flag' is non-nil, uses Assist Key.
 Value returned is nil if not a diagonal drag, or one of the following symbols
 depending on the direction of the drag: southeast, southwest, northwest, 
northeast."
-  (let ((last-depress-x) (last-release-x)
-       (last-depress-y) (last-release-y))
-    (if assist-flag
-       (setq last-depress-x (hmouse-x-coord assist-key-depress-args)
-             last-release-x (hmouse-x-coord assist-key-release-args)
-             last-depress-y (hmouse-y-coord assist-key-depress-args)
-             last-release-y (hmouse-y-coord assist-key-release-args))
-      (setq last-depress-x (hmouse-x-coord action-key-depress-args)
-           last-release-x (hmouse-x-coord action-key-release-args)
-           last-depress-y (hmouse-y-coord action-key-depress-args)
-           last-release-y (hmouse-y-coord action-key-release-args)))
-    (and last-depress-x last-release-x last-depress-y last-release-y
-        (>= (- (max last-depress-x last-release-x)
-               (min last-depress-x last-release-x))
-            hmouse-x-diagonal-sensitivity)
-        (>= (- (max last-depress-y last-release-y)
-               (min last-depress-y last-release-y))
-            hmouse-y-diagonal-sensitivity)
-        (cond
-          ((< last-depress-x last-release-x)
-           (if (< last-depress-y last-release-y)
-               'southeast 'northeast))
-          (t (if (< last-depress-y last-release-y)
-                 'southwest 'northwest))))))
+  (when (hmouse-drag-same-window)
+    (let ((last-depress-x) (last-release-x)
+         (last-depress-y) (last-release-y))
+      (if assist-flag
+         (setq last-depress-x (hmouse-x-coord assist-key-depress-args)
+               last-release-x (hmouse-x-coord assist-key-release-args)
+               last-depress-y (hmouse-y-coord assist-key-depress-args)
+               last-release-y (hmouse-y-coord assist-key-release-args))
+       (setq last-depress-x (hmouse-x-coord action-key-depress-args)
+             last-release-x (hmouse-x-coord action-key-release-args)
+             last-depress-y (hmouse-y-coord action-key-depress-args)
+             last-release-y (hmouse-y-coord action-key-release-args)))
+      (and last-depress-x last-release-x last-depress-y last-release-y
+          (>= (- (max last-depress-x last-release-x)
+                 (min last-depress-x last-release-x))
+              hmouse-x-diagonal-sensitivity)
+          (>= (- (max last-depress-y last-release-y)
+                 (min last-depress-y last-release-y))
+              hmouse-y-diagonal-sensitivity)
+          (cond
+           ((< last-depress-x last-release-x)
+            (if (< last-depress-y last-release-y)
+                'southeast 'northeast))
+           (t (if (< last-depress-y last-release-y)
+                  'southwest 'northwest)))))))
 
 (defun hmouse-drag-horizontally ()
   "Returns non-nil iff last Action Key use was a horizontal drag within a 
single window.
 If free variable `assist-flag' is non-nil, uses Assist Key.
 Value returned is nil if not a horizontal drag, 'left if drag moved left or
 'right otherwise."
-  (let ((last-depress-x) (last-release-x)
-       (last-depress-y) (last-release-y))
-    (if assist-flag
-       (setq last-depress-x (hmouse-x-coord assist-key-depress-args)
-             last-release-x (hmouse-x-coord assist-key-release-args)
-             last-depress-y (hmouse-y-coord assist-key-depress-args)
-             last-release-y (hmouse-y-coord assist-key-release-args))
-      (setq last-depress-x (hmouse-x-coord action-key-depress-args)
-           last-release-x (hmouse-x-coord action-key-release-args)
-           last-depress-y (hmouse-y-coord action-key-depress-args)
-           last-release-y (hmouse-y-coord action-key-release-args)))
-    (and last-depress-x last-release-x last-depress-y last-release-y
-        (>= (- (max last-depress-x last-release-x)
-               (min last-depress-x last-release-x))
-            hmouse-x-drag-sensitivity)
-        ;; Don't want to register vertical drags here, so ensure any
-        ;; vertical movement was less than the vertical drag sensitivity.
-        (< (- (max last-depress-y last-release-y)
-              (min last-depress-y last-release-y))
-           hmouse-y-drag-sensitivity)
-        (if (< last-depress-x last-release-x) 'right 'left))))
+  (when (hmouse-drag-same-window)
+    (let ((last-depress-x) (last-release-x)
+         (last-depress-y) (last-release-y))
+      (if assist-flag
+         (setq last-depress-x (hmouse-x-coord assist-key-depress-args)
+               last-release-x (hmouse-x-coord assist-key-release-args)
+               last-depress-y (hmouse-y-coord assist-key-depress-args)
+               last-release-y (hmouse-y-coord assist-key-release-args))
+       (setq last-depress-x (hmouse-x-coord action-key-depress-args)
+             last-release-x (hmouse-x-coord action-key-release-args)
+             last-depress-y (hmouse-y-coord action-key-depress-args)
+             last-release-y (hmouse-y-coord action-key-release-args)))
+      (and last-depress-x last-release-x last-depress-y last-release-y
+          (>= (- (max last-depress-x last-release-x)
+                 (min last-depress-x last-release-x))
+              hmouse-x-drag-sensitivity)
+          ;; Don't want to register vertical drags here, so ensure any
+          ;; vertical movement was less than the vertical drag sensitivity.
+          (< (- (max last-depress-y last-release-y)
+                (min last-depress-y last-release-y))
+             hmouse-y-drag-sensitivity)
+          (if (< last-depress-x last-release-x) 'right 'left)))))
+
+(defun hmouse-drag-vertically-within-emacs ()
+  "Returns non-nil iff last Action Key use was a vertical drag that started 
and ended within the same Emacs frame.
+If free variable `assist-flag' is non-nil, uses Assist Key.
+Value returned is nil if not a vertical line drag, 'up if drag moved up or
+'down otherwise."
+  (unless (or (hmouse-drag-between-frames) (hmouse-drag-outside-all-windows))
+    (let ((last-depress-x) (last-release-x)
+         (last-depress-y) (last-release-y))
+      (if assist-flag
+         (setq last-depress-x (hmouse-x-coord assist-key-depress-args)
+               last-release-x (hmouse-x-coord assist-key-release-args)
+               last-depress-y (hmouse-y-coord assist-key-depress-args)
+               last-release-y (hmouse-y-coord assist-key-release-args))
+       (setq last-depress-x (hmouse-x-coord action-key-depress-args)
+             last-release-x (hmouse-x-coord action-key-release-args)
+             last-depress-y (hmouse-y-coord action-key-depress-args)
+             last-release-y (hmouse-y-coord action-key-release-args)))
+      (and last-depress-x last-release-x last-depress-y last-release-y
+          (>= (- (max last-depress-y last-release-y)
+                 (min last-depress-y last-release-y))
+              hmouse-y-drag-sensitivity)
+          ;; Don't want to register horizontal drags here, so ensure any
+          ;; horizontal movement was less than or equal to the horizontal drag
+          ;; sensitivity.
+          (<= (- (max last-depress-x last-release-x)
+                 (min last-depress-x last-release-x))
+              hmouse-x-drag-sensitivity)
+          (if (< last-depress-y last-release-y) 'down 'up)))))
 
 (defun hmouse-drag-vertically ()
   "Returns non-nil iff last Action Key use was a vertical drag within a single 
window.
 If free variable `assist-flag' is non-nil, uses Assist Key.
 Value returned is nil if not a vertical line drag, 'up if drag moved up or
 'down otherwise."
-  (let ((last-depress-x) (last-release-x)
-       (last-depress-y) (last-release-y))
-    (if assist-flag
-       (setq last-depress-x (hmouse-x-coord assist-key-depress-args)
-             last-release-x (hmouse-x-coord assist-key-release-args)
-             last-depress-y (hmouse-y-coord assist-key-depress-args)
-             last-release-y (hmouse-y-coord assist-key-release-args))
-      (setq last-depress-x (hmouse-x-coord action-key-depress-args)
-           last-release-x (hmouse-x-coord action-key-release-args)
-           last-depress-y (hmouse-y-coord action-key-depress-args)
-           last-release-y (hmouse-y-coord action-key-release-args)))
-    (and last-depress-x last-release-x last-depress-y last-release-y
-        (>= (- (max last-depress-y last-release-y)
-               (min last-depress-y last-release-y))
-            hmouse-y-drag-sensitivity)
-        ;; Don't want to register horizontal drags here, so ensure any
-        ;; horizontal movement was less than or equal to the horizontal drag
-        ;; sensitivity.
-        (<= (- (max last-depress-x last-release-x)
-               (min last-depress-x last-release-x))
-            hmouse-x-drag-sensitivity)
-        (if (< last-depress-y last-release-y) 'down 'up))))
+  (when (hmouse-drag-same-window)
+    (hmouse-drag-vertically-within-emacs)))
 
 (defun hmouse-drag-window-side ()
-  "Returns non-nil if Action Key was dragged from a window side divider.
+  "Returns non-nil if Action Key was dragged from a window side divider and 
released in the same window.
 If free variable `assist-flag' is non-nil, uses Assist Key."
   (cond ((featurep 'xemacs)
         ;; Depress events in scrollbars or in non-text area of buffer are
@@ -408,10 +619,11 @@ If free variable `assist-flag' is non-nil, uses Assist 
Key."
                                action-key-depress-args))
                (release-args (if assist-flag assist-key-release-args
                                action-key-release-args))
-               (w (smart-window-of-coords depress-args))
-               (right-side-ln (and w (1- (nth 2 (window-edges w)))))
-               (last-press-x   (hmouse-x-coord depress-args))
-               (last-release-x (hmouse-x-coord release-args)))
+               (wd (smart-window-of-coords depress-args))
+               (wr (smart-window-of-coords release-args))
+               (right-side-ln (and wd (1- (nth 2 (window-edges wd)))))
+               (last-press-x   (and wd depress-args (hmouse-x-coord 
depress-args)))
+               (last-release-x (and wr release-args (hmouse-x-coord 
release-args))))
           (and last-press-x last-release-x right-side-ln
                (/= last-press-x last-release-x)
                (not (<= (abs (- right-side-ln (frame-width))) 5))
@@ -442,7 +654,7 @@ Beeps and prints message if the window cannot be split 
further."
           (message "(hmouse-vertical-assist-drag): A single window cannot be 
deleted."))))
 
 (defun hmouse-horizontal-action-drag ()
-  "Handles an Action Key vertical drag within a window: adds a window below 
this one.
+  "Handles an Action Key horizontal drag within a window: adds a window below 
this one.
 Beeps and prints message if the window cannot be split further."
   (interactive)
   (condition-case ()
@@ -462,8 +674,11 @@ Beeps and prints message if the window cannot be split 
further."
 
 (defun smart-coords-in-window-p (coords window)
   "Tests if COORDS are in WINDOW.  Returns WINDOW if they are, nil otherwise."
-  (cond ((and hyperb:emacs-p (eventp coords))
-        (eq (posn-window (event-start coords)) window))
+  (cond ((null coords) nil)
+       ((and hyperb:emacs-p (eventp coords))
+        (let ((w-or-f (posn-window (event-start coords))))
+          (if (framep w-or-f) (setq w-or-f (frame-selected-window w-or-f)))
+          (eq w-or-f window)))
        ((if (featurep 'xemacs)
             (if (eventp coords)
                 (eq (event-window coords) window)
@@ -496,7 +711,9 @@ Ignores minibuffer window."
   (cond ((markerp coords)
         (get-buffer-window (marker-buffer coords)))
        ((and hyperb:emacs-p (eventp coords))
-        (posn-window (event-start coords)))
+        (let ((w-or-f (posn-window (event-start coords))))
+          (if (framep w-or-f) (setq w-or-f (frame-selected-window w-or-f)))
+          w-or-f))
        ((if (featurep 'xemacs)
             (if (eventp coords)
                 (event-window coords)
@@ -514,22 +731,41 @@ Ignores minibuffer window."
 ;;; Private functions
 ;;; ************************************************************************
 
+(defun hmouse-split-window ()
+  "Split selected window parallel to its shortest dimension."
+  (if (>= (window-width) (window-height))
+      ;; side-by-side windows
+      (split-window-horizontally)
+    ;; windows atop the other
+    (split-window-vertically)))
+
+(defun hmouse-buffer-to-window (&optional new-window)
+  "Invoked via drag, replace the buffer in the Action Key release window with 
the buffer from the Action Key depress window.
+With optional boolean NEW-WINDOW non-nil, sensibly split the release window 
before replacing the buffer."
+  (when new-window
+    (with-selected-window action-key-release-window
+      (hmouse-split-window)))
+  (set-window-buffer action-key-release-window (window-buffer 
action-key-depress-window)))
+
 (defun hmouse-drag-not-allowed ()
   "Display an error when a region is active and in-window drags are not 
allowed."
   ;; Return point to where it was prior to depress so the region does not 
permanently change.
   (goto-char hkey-value)
-  (error "(hmouse-drag-region-active): Region is active; Smart Key drags are 
not allowed.  Use a press/click instead."))
+  (error "(hmouse-drag-region-active): Region is active; use a Smart Key 
press/click within a window, not a drag."))
 
 (defun hmouse-set-buffer-and-point (buffer point)
   (when buffer
     (set-buffer buffer)
-    (if point (goto-char point))))
+    (when point (goto-char point))))
 
-(defun hmouse-goto-depress-prev-point ()
-  "Temporarily set point to where the last Smart Key was depressed."
-  (let ((buf (marker-buffer (if assist-flag assist-key-depress-prev-point 
action-key-depress-prev-point)))
-       (loc (marker-position (if assist-flag assist-key-depress-prev-point 
action-key-depress-prev-point))))
-    (hmouse-set-buffer-and-point buf loc)))
+(defun hmouse-goto-region-prev-point ()
+  "Temporarily set point to where it was prior to the last Smart Key depress 
and return t, else nil if no such point is saved."
+  (let* ((prev-point (if assist-flag assist-key-depress-prev-point 
action-key-depress-prev-point))
+        (buf (and prev-point (marker-buffer prev-point)))
+        (loc (and prev-point (marker-position prev-point))))
+    (when (and buf loc)
+      (hmouse-set-buffer-and-point buf loc)
+      t)))
 
 (defun hmouse-goto-depress-point ()
   "Temporarily set point to where the last Smart Key was depressed."
@@ -537,22 +773,18 @@ Ignores minibuffer window."
        (loc (smart-point-of-coords (if assist-flag assist-key-depress-args 
action-key-depress-args))))
     (hmouse-set-buffer-and-point buf loc)))
 
-(defun hmouse-goto-region-point ()
-  "Temporarily set point back to where it was when the region was activated."
-  (let ((buf (window-buffer (if assist-flag assist-key-depress-window 
action-key-depress-window)))
-       (loc hkey-value))
-    (hmouse-set-buffer-and-point buf loc)))
-
 (defun hmouse-goto-release-point ()
-  "Temporarily set point to where the last Smart Key was depressed."
+  "Temporarily set point to where the last Smart Key was released."
   (let ((buf (window-buffer (if assist-flag assist-key-release-window 
action-key-release-window)))
        (loc (smart-point-of-coords (if assist-flag assist-key-release-args 
action-key-release-args))))
     (hmouse-set-buffer-and-point buf loc)))
 
 (defun hmouse-inactive-minibuffer-p ()
   "Return t if the last command event was a mouse press or release within an 
inactive minibuffer, else nil."
-  (if (= (minibuffer-depth) 0)
-      (eq (minibuffer-window) (posn-window (event-start last-command-event)))))
+  (let ((window (posn-window (event-start last-command-event))))
+    (if (framep window) (setq window (frame-selected-window window)))
+    (and (window-minibuffer-p window)
+        (not (minibuffer-window-active-p window)))))
 
 (defun hmouse-insert-region ()
   "Save a mark, then insert at point the text from `hkey-region' and indent 
it."
@@ -567,24 +799,90 @@ Ignores minibuffer window."
   ;; (if (fboundp 'fill-region-and-align) (fill-region-and-align (mark) 
(point)))
   )
 
+(defun hmouse-pulse-buffer ()
+  (when (and hmouse-pulse-flag (featurep 'pulse) (pulse-available-p))
+    (recenter)
+    (pulse-momentary-highlight-region (window-start) (window-end) 
'next-error)))
+
+(defun hmouse-pulse-line ()
+  (when (and hmouse-pulse-flag (featurep 'pulse) (pulse-available-p))
+    (recenter)
+    (pulse-momentary-highlight-one-line (point) 'next-error)))
+
+(defun hmouse-item-to-window (&optional new-window)
+  "Display buffer or file menu item of Action Key depress at the location of 
Action Key release.
+
+Release location may be an Emacs window or outside of Emacs, in
+which case a new frame with a single window is created to display
+the item.  If the release is inside Emacs and the optional
+NEW-WINDOW is non-nil, the release window is sensibly split
+before the buffer is displayed.  Otherwise, the buffer is simply
+displayed in the release window.
+
+If depress is on the top fixed header line or to the right of any
+item, this moves the menu buffer itself to the release location."
+  (let* ((w1 action-key-depress-window)
+        ;; Release may be outside of an Emacs window in which case,
+        ;; create a new frame and window.
+        (w2 (or action-key-release-window (frame-selected-window 
(hycontrol-make-frame))))
+        (buf-name)
+        (w1-ref))
+    (when (and w1 w2)
+      (unwind-protect
+         (progn (select-window w1)
+                (if (eq (posn-area (event-start action-key-depress-args)) 
'header-line)
+                    ;; Drag from fixed header-line means move this menu buffer
+                    ;; to release window.
+                    (progn (setq w1-ref (current-buffer))
+                           (hmouse-pulse-buffer)
+                           (sit-for 0.05)
+                           (bury-buffer))
+                  ;; Otherwise, move the current menu item to the release 
window.
+                  (setq w1-ref (eval (cadr (assq major-mode 
hmouse-drag-item-mode-forms))))
+                  (when w1-ref (hmouse-pulse-line) (sit-for 0.05))))
+       (select-window w2)
+       (when (and new-window action-key-release-window)
+         (hmouse-split-window))))
+    (unwind-protect
+       (cond ((not w1-ref)
+              (if (not (window-live-p w1))
+                  (error "(hmouse-item-to-window): Action Mouse Key item drag 
must start in a live window")
+                (error "(hmouse-item-to-window): No item to display at start 
of Action Mouse Key drag")))
+             ((buffer-live-p w1-ref)
+              (set-window-buffer w2 w1-ref)
+              (set-buffer w1-ref)
+              (hmouse-pulse-buffer))
+             ((and (stringp w1-ref) (file-readable-p w1-ref))
+              (set-window-buffer w2 (set-buffer (find-file-noselect w1-ref)))
+              (hmouse-pulse-buffer))
+             (t (error "(hmouse-item-to-window): Cannot find or read `%s'" 
w1-ref)))
+      ;; If helm is active, end in the minibuffer window.
+      (if (smart-helm-alive-p)
+         (smart-helm-to-minibuffer)))))
+
 (defun action-key-modeline ()
   "Handles Action Key depresses on a window mode line.
 If the Action Key is:
- (1) clicked on left edge of a window's modeline,
-     window's buffer is buried (placed at bottom of buffer list);
+ (1) clicked on the first blank character of a window's modeline,
+     the window's buffer is buried (placed at bottom of buffer list);
  (2) clicked on right edge of a window's modeline,
      the Info buffer is displayed, or if already displayed and the
      modeline clicked belongs to a window displaying Info, the Info
      buffer is hidden;
- (3) clicked anywhere in the middle of a window's modeline,
+ (3) clicked on the buffer id of a window's modeline, dired is run
+     on the current directory, replacing the window's buffer;
+     successive clicks walk up the directory tree
+ (4) clicked anywhere in the middle of a window's modeline,
      the function given by `action-key-modeline-function' is called;
- (4) dragged vertically from modeline to within a window,
+ (5) dragged vertically from modeline to within a window,
      the modeline is moved to point of key release, thereby resizing
      its window and potentially its vertical neighbors."
   (let ((w (smart-window-of-coords action-key-depress-args)))
     (if w (select-window w))
     (cond ((hmouse-modeline-click)
-          (cond ((hmouse-release-left-edge)  (bury-buffer))
+          (cond ((hmouse-emacs-at-modeline-buffer-id-p)
+                 (dired-jump))
+                ((hmouse-release-left-edge) (bury-buffer))
                 ((hmouse-release-right-edge)
                  (if (eq major-mode 'Info-mode)
                      (Info-exit)
@@ -595,74 +893,111 @@ If the Action Key is:
 (defun assist-key-modeline ()
   "Handles Assist Key depresses on a window mode line.
 If the Assist Key is:
- (1) clicked on left edge of a window's modeline,
+ (1) clicked on the first blank character of a window's modeline,
      bottom buffer in buffer list is unburied and placed in window;
  (2) clicked on right edge of a window's modeline,
      the summary of Smart Key behavior is displayed, or if already
      displayed and the modeline clicked belongs to a window displaying
      the summary, the summary buffer is hidden;
- (3) clicked anywhere in the middle of a window's modeline,
+ (3) clicked on the buffer id of a window's modeline,
+     the next buffer in sequence is displayed in the window
+ (4) clicked anywhere in the middle of a window's modeline,
      the function given by `assist-key-modeline-function' is called;
- (4) dragged vertically from modeline to within a window,
+ (5) dragged vertically from modeline to within a window,
      the modeline is moved to point of key release, thereby resizing
      its window and potentially its vertical neighbors."
   (let ((buffers)
        (w (smart-window-of-coords assist-key-depress-args)))
     (if w (select-window w))
-    (cond ((hmouse-modeline-click 'assist)
-          (cond ((hmouse-release-left-edge 'assist)
+    (cond ((hmouse-modeline-click)
+          (cond ((hmouse-emacs-at-modeline-buffer-id-p)
+                 (next-buffer))
+                ((hmouse-release-left-edge)
                  (if (fboundp 'last)
                      (switch-to-buffer (car (last (buffer-list))))
                    (setq buffers (buffer-list))
                    (switch-to-buffer (nth (1- (length buffers)) buffers))))
-                ((hmouse-release-right-edge 'assist)
+                ((hmouse-release-right-edge)
                  (if (string-match "Hyperbole Smart Keys" (buffer-name))
                      (hkey-help-hide)
                    (hkey-summarize 'current-window)))
                 (t (funcall assist-key-modeline-function))))
-         (t (hmouse-modeline-resize-window 'assist)))))
+         (t (hmouse-modeline-resize-window)))))
+
+(defun hmouse-modeline-click ()
+  "Returns non-nil if last Smart Key depress and release were at a single 
point in a modeline."
+  (and (hmouse-modeline-release) (hmouse-modeline-depress)
+       (equal (if assist-flag assist-key-depress-position 
action-key-depress-position)
+             (if assist-flag assist-key-release-position 
action-key-release-position))))
+
+(defun hmouse-emacs-modeline-event-p (event)
+  "GNU Emacs: Returns non-nil if EVENT happened on a window mode line."
+  (or (and (eventp event) (eq (posn-area (event-start event)) 'mode-line))
+      ;; If drag release was to an unselected frame mode-line, on
+      ;; click-to-focus systems, the release event will not include
+      ;; the mode-line area when release was on the mode-line, so
+      ;; manually compute if that was the location.
+      (let* ((w (smart-window-of-coords event))
+            ;; Do all calculations in pixels if possible.
+            (line-height (if w (frame-char-height (window-frame w))))
+            (mode-ln (if w (nth 3 (window-edges w nil t t))))
+            (last-press-y (cdr (posn-x-y (event-start event)))))
+       (and (not (eq w (minibuffer-window)))
+            last-press-y mode-ln (< (- mode-ln last-press-y) line-height)))))
 
-(defun hmouse-modeline-click (&optional assist-flag)
-  "Returns non-nil if last Action Key depress and release was at same point in 
a modeline.
-Optional ASSIST-FLAG non-nil means test for Assist Key click instead."
-  ;; Assume depress was in modeline and that any drag has already been handled.
-  ;; So just check that release was in modeline.
-  (hmouse-modeline-release assist-flag))
+(defun hmouse-modeline-event-p (event)
+  "Returns non-nil if start of EVENT happened on a window mode line."
+    (when (and (hyperb:window-system) event
+              (not (posnp event))
+              (not (markerp event)))
+      (cond
+       ;; Modern GNU Emacs
+       ((fboundp 'posn-area)
+       (hmouse-emacs-modeline-event-p event))
+       ;; XEmacs
+       ((fboundp 'event-over-modeline-p)
+       (event-over-modeline-p event))
+       ;; Early Emacs
+       (t
+       (let* ((w (smart-window-of-coords event))
+              (mode-ln (if w (nth 3 (window-edges w))))
+              (last-press-y (hmouse-y-coord event)))
+         ;; Mode-line is always 1 less than the bottom of the window, unless it
+         ;; is a minibuffer window which does not have a modeline.
+         (if (not (eq w (minibuffer-window))) (setq mode-ln (1- mode-ln)))
+         (and last-press-y mode-ln (= last-press-y mode-ln)))))))
 
 (defun hmouse-modeline-depress ()
   "Returns non-nil if Action Key was depressed on a window mode line.
 If free variable `assist-flag' is non-nil, uses Assist Key."
-  (let ((args (if assist-flag assist-key-depress-args
+  (let ((args (if assist-flag
+                 assist-key-depress-args
                action-key-depress-args)))
-    (if (and (hyperb:window-system) args)
-       (if (fboundp 'event-over-modeline-p)
-           (event-over-modeline-p args)
-         (let* ((w (smart-window-of-coords args))
-                (mode-ln (if w (nth 3 (window-edges w))))
-                (last-press-y (hmouse-y-coord args)))
-           ;; Mode-line is always 1 less than the bottom of the window, unless 
it
-           ;; is a minibuffer window which does not have a modeline.
-           (if (not (eq w (minibuffer-window))) (setq mode-ln (1- mode-ln)))
-           (and last-press-y mode-ln (= last-press-y mode-ln)))))))
-
-(defun hmouse-modeline-release (&optional assist-flag)
-  "Returns non-nil if Action Key was released on a window mode line.
-Optional non-nil ASSIST-FLAG means test release of Assist Key instead."
-  (let ((args (if assist-flag assist-key-release-args
+    (hmouse-modeline-event-p args)))
+
+(defun hmouse-modeline-release ()
+  "Returns non-nil if Smart Key was released on a window mode line."
+  (let ((args (if assist-flag
+                 assist-key-release-args
                action-key-release-args)))
-    (if (and (hyperb:window-system) args)
-       (if (fboundp 'event-over-modeline-p)
-           (event-over-modeline-p args)
-         (let* ((w (smart-window-of-coords args))
-                (mode-ln (and w (1- (nth 3 (window-edges w)))))
-                (last-press-y (hmouse-y-coord args)))
-           (and last-press-y mode-ln (= last-press-y mode-ln)))))))
-
-(defun hmouse-modeline-resize-window (&optional assist-flag)
-  "Resizes window whose mode line was depressed upon by the Action Key.
+    (hmouse-modeline-event-p args)))
+
+(defun hmouse-emacs-at-modeline-buffer-id-p ()
+  "GNU Emacs: Return t if mouse position is within the buffer name field of 
the current window's mode-line, else nil."
+  (when hyperb:emacs-p
+    (let* ((coords (hmouse-window-coordinates)) ;; in characters
+          (x-coord (caadr coords))
+          (mode-line-string (and (integerp x-coord) (>= x-coord 0) 
(format-mode-line mode-line-format)))
+          (keymap (and mode-line-string
+                       (<= x-coord (1- (length mode-line-string)))
+                       (plist-get (text-properties-at x-coord 
mode-line-string) 'local-map))))
+      (when keymap
+       (eq (lookup-key keymap [mode-line mouse-1]) 
'mode-line-previous-buffer)))))
+
+(defun hmouse-modeline-resize-window ()
+  "Resizes window whose mode line was depressed on by the last Smart Key.
 Resize amount depends upon the vertical difference between press and release
-of the Action Key.  Optional arg ASSIST-FLAG non-nil means use values from
-Assist Key instead."
+of the Smart Key."
   (cond ((not (hyperb:window-system)) nil)
        ((and (featurep 'xemacs) (not (fboundp 'window-edges)))
         (error "Drag from a mode-line with button1 to resize windows."))
@@ -704,10 +1039,53 @@ Assist Key instead."
                         (error nil)))
                   (select-window owind))))))))
 
-(defun hmouse-release-left-edge (&optional assist-flag)
-  "Returns non-nil if last Action Key release was at left window edge.
+(defun hmouse-clone-window-to-frame (&optional always-delete-flag)
+  (let ((hycontrol-keep-window-flag t))
+    (hmouse-move-window-to-frame)))
+
+;; Derived from Emacs mouse.el.
+(defun hmouse-move-window-to-frame (&optional always-delete-flag)
+  "Move the selected window to the right of the window of Action Key release.
+If free variable `assist-flag' is non-nil, uses Assist Key release instead.
+
+If optional ALWAYS-DELETE-FLAG is non-nil, delete the source window
+after copying it to the other frame; otherwise, if there is only one
+window in the source frame or if free variable `hycontrol-keep-window-flag'
+is non-nil, leave the original window and just clone it into the new frame."
+  (interactive)
+  (let ((depress-window (if assist-flag
+                           assist-key-depress-window
+                         action-key-depress-window))
+       (release-window (if assist-flag
+                           assist-key-release-window
+                         action-key-release-window))
+       buf)
+    (cond ((or (window-minibuffer-p depress-window)
+              (window-minibuffer-p release-window))
+          (beep)
+          (minibuffer-message "(Hyperbole): Select a non-minibuffer window"))
+         (t
+          ;; Give temporary modes such as isearch a chance to turn off.
+          (run-hooks 'mouse-leave-buffer-hook)
+          (setq buf (window-buffer depress-window))
+          (with-selected-window release-window
+            (split-window-horizontally)
+            (other-window 1)
+            (switch-to-buffer buf nil t))
+          (with-selected-frame (window-frame depress-window)
+            (unless (or hycontrol-keep-window-flag
+                        (and (not always-delete-flag) (one-window-p t)))
+              (delete-window depress-window)))))))
+
+(defun hmouse-release-left-edge ()
+  "Returns non-nil if last Smart Key release was at left window edge.
 `hmouse-edge-sensitivity' value determines how near to actual edge the
-release must be."
+release must be.
+
+GNU Emacs mode-line key bindings override the Smart Mouse Key bindings
+immediately after the first blank mode-line character position.  Therefore,
+mode-line left edge clicks must be on the first blank character of the
+mode-line regardless of the setting of `hmouse-edge-sensitivity'."
   (let ((args (if assist-flag assist-key-release-args
                 action-key-release-args))
        window-left last-release-x)
@@ -722,8 +1100,8 @@ release must be."
                           hmouse-edge-sensitivity)
         (>= (- last-release-x window-left) 0))))
 
-(defun hmouse-release-right-edge (&optional assist-flag)
-  "Returns non-nil if last Action Key release was at right window edge.
+(defun hmouse-release-right-edge ()
+  "Returns non-nil if the last Smart Key release was at right window edge.
 `hmouse-edge-sensitivity' value determines how near to actual edge the
 release must be."
   (let ((args (if assist-flag assist-key-release-args
@@ -740,11 +1118,10 @@ release must be."
                            window-right)
         (>= (- window-right last-release-x) 0))))
 
-(defun hmouse-resize-window-side (&optional assist-flag)
-  "Resizes window whose side was depressed upon by the Action Key.
+(defun hmouse-resize-window-side ()
+  "Resizes window whose side was depressed on by the last Smart Key.
 Resize amount depends upon the horizontal difference between press and release
-of the Action Key.  Optional arg ASSIST-FLAG non-nil means use values from
-Assist Key instead."
+of the Smart Key."
   (cond ((featurep 'xemacs)
         ;; Depress events in scrollbars or in non-text area of buffer are
         ;; not visible or identifiable at the Lisp-level, so always return
@@ -783,9 +1160,8 @@ Assist Key instead."
                     (shrink-window-horizontally shrink-amount))
                 (select-window owind))))))))
 
-(defun hmouse-swap-buffers (&optional assist-flag)
-  "Swaps buffers in windows selected with last Action Key depress and release.
-If optional arg ASSIST-FLAG is non-nil, uses Assist Key."
+(defun hmouse-swap-buffers ()
+  "Swaps buffers in windows selected with the last Smart Key depress and 
release."
   (let* ((w1 (if assist-flag assist-key-depress-window
               action-key-depress-window))
         (w2 (if assist-flag assist-key-release-window
@@ -793,15 +1169,17 @@ If optional arg ASSIST-FLAG is non-nil, uses Assist Key."
         (w1-buf (and w1 (window-buffer w1)))
         (w2-buf (and w2 (window-buffer w2)))
         )
-    (or (and w1 w2)
-       (error "(hmouse-swap-buffers): Last depress or release was not within a 
window."))
-    ;; Swap window buffers.
-    (set-window-buffer w1 w2-buf)
-    (set-window-buffer w2 w1-buf)))
-
-(defun hmouse-swap-windows (&optional assist-flag)
-  "Swaps windows selected with last Action Key depress and release.
-If optional arg ASSIST-FLAG is non-nil, uses Assist Key."
+    (cond ((not (and w1 w2))
+          (error "(hmouse-swap-buffers): Last depress or release was not 
within a window."))
+         ((eq w1 w2)
+          ;; Do nothing silently.
+          )
+         (t ;; Swap window buffers.
+          (set-window-buffer w1 w2-buf)
+          (set-window-buffer w2 w1-buf)))))
+
+(defun hmouse-swap-windows ()
+  "Swaps the sizes of 2 windows selected with the last Smart Key depress and 
release."
   (let* ((w1 (if assist-flag assist-key-depress-window
               action-key-depress-window))
         (w2 (if assist-flag assist-key-release-window
@@ -838,12 +1216,15 @@ If optional arg ASSIST-FLAG is non-nil, uses Assist Key."
                 (hypb:goto-marker args)
                 (current-column))
             (eval (cdr (assoc (hyperb:window-system)
-                              '(("emacs" . (if (eventp args)
-                                               (+ (car (posn-col-row
-                                                        (event-start args)))
-                                                  (nth 0 (window-edges
-                                                          (car (cadr args)))))
-                                             (car args)))
+                              '(("emacs" . (progn (if (eventp args) (setq args 
(event-start args)))
+                                                  (cond
+                                                   ((posnp args)
+                                                    (let ((w-or-f (posn-window 
args)))
+                                                      (if (framep w-or-f)
+                                                          (setq w-or-f 
(frame-selected-window w-or-f)))
+                                                      (+ (car (posn-col-row 
args))
+                                                         (nth 0 (window-edges 
w-or-f)))))
+                                                   (t (car args)))))
                                 ("xemacs" .  (if (eventp args)
                                                  (event-x args)
                                                (car args)))
@@ -855,12 +1236,14 @@ If optional arg ASSIST-FLAG is non-nil, uses Assist Key."
 (defun hmouse-y-coord (args)
   "Returns y coordinate in frame lines from window system dependent ARGS."
   (let ((y (eval (cdr (assoc (hyperb:window-system)
-                            '(("emacs" . (if (eventp args)
-                                             (+ (cdr (posn-col-row
-                                                      (event-start args)))
-                                                (nth 1 (window-edges
-                                                        (car (cadr args)))))
-                                           (cdr args)))
+                            '(("emacs" . (progn (if (eventp args) (setq args 
(event-start args)))
+                                                (cond ((posnp args)
+                                                       (let ((w-or-f 
(posn-window args)))
+                                                         (if (framep w-or-f)
+                                                             (setq w-or-f 
(frame-selected-window w-or-f)))
+                                                         (+ (cdr (posn-col-row 
args))
+                                                            (nth 1 
(window-edges w-or-f)))))
+                                                      (t (cdr args)))))
                               ("xemacs" .  (if (eventp args)
                                                (event-y args)
                                              (cdr args)))
diff --git a/hui-xe-but.el b/hui-xe-but.el
index 35501f9..7e216ac 100644
--- a/hui-xe-but.el
+++ b/hui-xe-but.el
@@ -44,7 +44,12 @@
 ;;; Public variables
 ;;; ************************************************************************
 
-(defcustom hproperty:but-emphasize-p nil
+(defcustom hproperty:but-highlight-flag t
+  "*Non-nil (default value) means highlight all explict buttons with 
`hproperty:but-face'."
+  :type 'boolean
+  :group 'hyperbole-buttons)
+
+(defcustom hproperty:but-emphasize-flag nil
   "*Non-nil means visually emphasize that button under mouse cursor is 
selectable."
   :type 'boolean
   :group 'hyperbole-buttons)
@@ -67,11 +72,11 @@ Call (hproperty:set-item-highlight <color>) to change 
value."
 
 (defun hproperty:but-add (start end face)
   "Add between START and END a button using FACE in current buffer.
-If `hproperty:but-emphasize-p' is non-nil when this is called, emphasize that
-button is selectable whenever the mouse cursor moves over it."
+If `hproperty:but-emphasize-flag' is non-nil when this is called, emphasize
+that button is selectable whenever the mouse cursor moves over it."
   (let ((but (make-extent start end)))
     (set-extent-face but face)
-    (set-extent-property but 'highlight hproperty:but-emphasize-p)))
+    (set-extent-property but 'highlight hproperty:but-emphasize-flag)))
 
 (defun hproperty:but-color ()
   "Return current color of buffer's buttons."
@@ -94,8 +99,8 @@ expression which matches an entire button string.
 If REGEXP-MATCH is non-nil, only buttons matching this argument are
 highlighted.
 
-If `hproperty:but-emphasize-p' is non-nil when this is called, emphasize that
-button is selectable whenever the mouse cursor moves over it."
+If `hproperty:but-emphasize-flag' is non-nil when this is called, emphasize
+that button is selectable whenever the mouse cursor moves over it."
   (interactive)
   (hproperty:but-clear)
   (hproperty:but-create-all start-delim end-delim regexp-match))
@@ -107,10 +112,18 @@ If END-DELIM is a symbol, e.g. t, then START-DELIM is 
taken as a regular
 expression which matches an entire button string.
 If REGEXP-MATCH is non-nil, only buttons matching this argument are
 highlighted."
-  (ebut:map (lambda (lbl start end)
-             (hproperty:but-add start end hproperty:but-face))
-           start-delim end-delim regexp-match 'include-delims))
-              
+  (when hproperty:but-highlight-flag
+    (ebut:map (lambda (lbl start end)
+               (hproperty:but-add start end hproperty:but-face))
+             start-delim end-delim regexp-match 'include-delims)))
+
+(defun hproperty:but-create-on-yank (prop-value start end)
+  (save-restriction
+    (narrow-to-region start end)
+    (hproperty:but-create-all)))
+
+(add-to-list 'yank-handled-properties '(hproperty:but-face . 
hproperty:but-create-on-yank))
+
 (defun hproperty:but-delete (&optional pos)
   (let ((extent (extent-at (or pos (point)))))
     (if extent (delete-extent extent))))
diff --git a/hui.el b/hui.el
index b25eb6f..d1e9368 100644
--- a/hui.el
+++ b/hui.el
@@ -89,9 +89,10 @@ label."
       (hattr:set 'hbut:current 'actype actype)
       (hattr:set 'hbut:current 'args (hargs:actype-get actype))
       (hattr:set 'hbut:current 'action
-                (and hui:ebut-prompt-for-action (hui:action actype)))
-      )
-    (ebut:operate lbl nil)))
+                (and hui:ebut-prompt-for-action (hui:action actype))))
+    (ebut:operate lbl nil)
+    (when (called-interactively-p 'interactive)
+      (hui:ebut-message nil))))
 
 (defun hui:ebut-delete (but-key &optional key-src)
   "Deletes explicit Hyperbole button given by BUT-KEY in optional KEY-SRC.
@@ -175,9 +176,10 @@ Signals an error when no such button is found in the 
current buffer."
       (hattr:set 'hbut:current 'actype actype)
       (hattr:set 'hbut:current 'args (hargs:actype-get actype 'modifying))
       (hattr:set 'hbut:current 'action
-                (and hui:ebut-prompt-for-action (hui:action actype)))
-      )
-    (ebut:operate lbl new-lbl)))
+                (and hui:ebut-prompt-for-action (hui:action actype))))
+    (ebut:operate lbl new-lbl)
+    (when (called-interactively-p 'interactive)
+       (hui:ebut-message t))))
 
 (defun hui:ebut-rename (curr-label new-label)
   "Renames explicit Hyperbole button given by CURR-LABEL to NEW-LABEL.
@@ -501,13 +503,7 @@ See also documentation for `hui:link-possible-types'."
              (hui:link-create
                but-modify but-window
                lbl-key but-loc but-dir type-and-args))))
-    (message "`%s' button %s %s with %S."
-            (hbut:key-to-label lbl-key)
-            (if but-modify "now executes" "executes")
-            (car type-and-args)
-            (if (= 1 (length (cdr type-and-args)))
-                (cadr type-and-args)
-              (cdr type-and-args)))))
+    (hui:ebut-message but-modify)))
 
 ;;; ************************************************************************
 ;;; Private functions - used only within Hyperbole
@@ -518,6 +514,7 @@ See also documentation for `hui:link-possible-types'."
   (and actype
        (let* ((act) (act-str)
              (params (actype:params actype))
+             (params-no-keywords (actype:param-list actype))
              (params-str (and params (concat " " (prin1-to-string params))))
              )
         (while (progn
@@ -533,7 +530,7 @@ See also documentation for `hui:link-possible-types'."
                                (beep) (message "Invalid action syntax.")
                                (sit-for 3) t))))
                 (and (not (symbolp act))
-                     params
+                     params-no-keywords
                      ;; Use the weak condition that action must
                      ;; involve at least one of actype's parameters
                      ;; or else we assume the action is invalid, tell
@@ -548,7 +545,7 @@ See also documentation for `hui:link-possible-types'."
                                                  "[\(\) \t\n\r\"]")
                                          act-str)
                                         t))
-                                 params)))
+                                 params-no-keywords)))
                      ))
           (beep) (message "Action must use at least one parameter.")
           (sit-for 3))
@@ -560,7 +557,7 @@ See also documentation for `hui:link-possible-types'."
                              nil  ;; terminate loop
                              ))
                        ((symbolp act)
-                        (setq act (cons act params)))
+                        (setq act (cons act params-no-keywords)))
                        ((stringp act)
                         (setq act (action:kbd-macro act 1)))
                        ;; Unrecognized form
@@ -582,8 +579,7 @@ DEFAULT-ACTYPE may be a valid symbol or symbol-name."
               (hargs:read-match (or prompt "Button's action type: ")
                                (mapcar 'list (htype:names 'actypes))
                                nil t default-actype 'actype)))
-    (hypb:error "(actype): Invalid default action type received.")
-    ))
+    (hypb:error "(actype): Invalid default action type received.")))
 
 (defun hui:buf-writable-err (but-buf func-name)
   "If BUT-BUF is read-only, signal an error from FUNC-NAME."
@@ -660,8 +656,17 @@ within."
 (defun hui:ebut-delimit (start end instance-str)
   (hypb:error "(hui:ebut-delimit): Obsolete, use ebut:delimit instead."))
 
-(defun hui:ebut-operate (curr-label new-label)
-  (hypb:error "(hui:ebut-operate): Obsolete, use ebut:operate instead."))
+(defun hui:ebut-message (but-modify-flag)
+  (let ((actype (symbol-name (hattr:get 'hbut:current 'actype)))
+       (args (hattr:get 'hbut:current 'args)))
+    (if (string-match "\\`actypes::" actype)
+       (setq actype (intern (substring actype (match-end 0)))))
+    (message "%s%s%s %s %S"
+            ebut:start
+            (hbut:key-to-label (hattr:get 'hbut:current 'lbl-key))
+            ebut:end
+            (if but-modify-flag "now executes" "executes")
+            (cons actype args))))
 
 (defun hui:ebut-unmark (&optional but-key key-src directory)
   "Remove delimiters from button given by BUT-KEY in KEY-SRC of DIRECTORY.
@@ -921,6 +926,11 @@ Buffer without File      link-to-buffer-tmp"
                 (buffer-file-name
                  (list 'link-to-file buffer-file-name (point)))
                 (t (list 'link-to-buffer-tmp (buffer-name))))
+               ;;
+               ;; Deleted link to elisp possibility as it can embed
+               ;; long elisp functions in the button data file and
+               ;; possibly not parse them correctly.
+               ;;
                ;; (and (fboundp 'smart-emacs-lisp-mode-p)
                ;;      (smart-emacs-lisp-mode-p)
                ;;      (or (eq (char-syntax (following-char)) ?\()
diff --git a/hvar.el b/hvar.el
index c71406c..5323935 100644
--- a/hvar.el
+++ b/hvar.el
@@ -60,7 +60,7 @@ Does nothing when `inhibit-hyperbole-messaging' is non-nil."
                           (setq val (list val)))
                       (set var-symbol (set:union val list-to-add)))
              (set var-symbol list-to-add)))
-      (add-to-list #'var::append-list (cons var-symbol result))
+      (add-to-list 'var::append-list (cons var-symbol result))
       (symbol-value var-symbol))))
 
 (defun var:remove (var-symbol list-to-remove)
diff --git a/hversion.el b/hversion.el
index 7242de6..2e0b217 100644
--- a/hversion.el
+++ b/hversion.el
@@ -23,7 +23,7 @@
 ;;; Public variables
 ;;; ************************************************************************
 
-(defconst hyperb:version "6.0.2" "GNU Hyperbole revision number.")
+(defconst hyperb:version "7.0.0" "GNU Hyperbole revision number.")
 
 ;;;###autoload
 (defvar hyperb:microcruft-os-p
@@ -126,7 +126,7 @@ Where a part in the term-type is delimited by a `-' or  an 
`_'."
                          ;; the selected frame has mouse support,
                          ;; then there is a window system to support.
                          (display-mouse-p))
-                     ;; X11, NEXTSTEP (DPS), or OS/2 Presentation Manager (PM)
+                     ;; X11, macOS, NEXTSTEP (DPS), or OS/2 Presentation 
Manager (PM)
                      (cond (hyperb:emacs-p "emacs")
                            ((featurep 'xemacs)  "xemacs")
                            (t                "xterm")))
@@ -137,7 +137,8 @@ Where a part in the term-type is delimited by a `-' or  an 
`_'."
                      "next")
                     )))
     (set-frame-parameter frame 'hyperb:window-system
-                        (and term (substring term 0 (string-match "[-_]" 
term))))))
+                        (and term (setq term (substring term 0 (string-match 
"[-_]" term)))))
+    term))
 
 (defun hyperb:window-system (&optional frame)
   "Returns the string name for window system or term type under which the 
selected frame is running.
@@ -158,7 +159,7 @@ If nil after system initialization, no window system or 
mouse support is availab
 ;;; ************************************************************************
 
 (if (not (fboundp 'id-browse-file))
-(defalias 'id-browse-file 'find-file-read-only))
+(defalias 'id-browse-file 'view-file))
 
 (unless (fboundp 'id-info)
 (defun id-info (string)
diff --git a/hycontrol.el b/hycontrol.el
index d006612..f4e72dd 100644
--- a/hycontrol.el
+++ b/hycontrol.el
@@ -1,10 +1,10 @@
-;;; hycontrol.el --- Interactive sizing, moving, replicating and deleting of 
windows and frames.
+;;; hycontrol.el --- Interactive sizing, moving, replicating and deleting of 
windows and frames
 ;;
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:     1-Jun-16 at 15:35:36
 ;;
-;; Copyright (C) 2016  Free Software Foundation, Inc.
+;; Copyright (C) 2016-2017  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -14,43 +14,104 @@
 ;;   This library provides full interactive control of window and
 ;;   frame sizes and locations utilizing quick single key commands.
 ;;   It has the ability to change from increasing a window height by
-;;   5 lines, {.5 h}, to moving a frame 820 pixels, {.820 right-arrow},
-;;   with just a few keystrokes.
+;;   5 lines, {.5 h}, to moving a frame 82 pixels, {.82 right-arrow},
+;;   with just a few keystrokes (the leading . just resets the numeric
+;;   argument to 0 prior to typing the new number).
 ;;
-;;   It supplies two commands, both of which can toggle to the other
-;;   by pressing {t}.  `hycontrol-frames' manages visible frame
-;;   creation, deletion, sizing, position and face zooming (enlarging
-;;   and shrinking); if called interactively, it stores the current
-;;   frame configuration for restoration via a press of the `)' key.
-;;   `hycontrol-windows' manages per frame window creation, deletion,
-;;   sizing, reframing and face zooming; if called interactively, it
-;;   stores the current window configuration for restoration via a
-;;   press of the `)' key.
+;;   See the Info manual entry "(hyperbole)HyControl" for reference
+;;   documentation.  See below for key usage information.
 ;;
-;;   These commands are available under the Hyperbole Screen menu 
-;;   and `hycontrol-windows' is typically bound by Hyperbole to
-;;   {C-c \}.  Then press {t} if you want to switch to frame control.
+;;   ----
 ;;
-;;   HyControl allows placement of frames at screen edges and corners. 
-;;   (A screen may span multiple physical monitors).  To prevent widgets
-;;   and toolbars at the corners of the screen from being obscured,
-;;   HyControl can offset each frame from each screen edge by a fixed
-;;   number of pixels.  These offsets are specified by the variable,
-;;   `hycontrol-screen-offset-alist' and can differ for each type of
-;;   screen; see its documentation for details.  If you change its value,
-;;   then call `hycontrol-set-screen-offsets' to set any new offset values.
-;;   `hycontrol-get-screen-offsets' returns the list of offsets in clockwise
-;;   order starting from the top edge.
+;;   HyControl is invoked via either of two global minor modes under
+;;   the Hyperbole screen menu, both of which can toggle to the other
+;;   by pressing {t}. `hycontrol-enable-frames-mode' bound to {C-h h s
+;;   f} manages visible frame creation, deletion, sizing, position and
+;;   face zooming (enlarging and shrinking); if called interactively,
+;;   it stores the current frame configuration for restoration via a
+;;   press of the `)' key.  `hycontrol-enable-windows-mode' manages
+;;   per frame window creation, deletion, sizing, reframing and face
+;;   zooming; if called interactively, it stores the current window
+;;   configuration for restoration via a press of the `)' key.
+;;   `hycontrol-enable-windows-mode' is typically bound by Hyperbole
+;;   to {C-c \} or just use {C-h h s w}.  Then press {t} if you want
+;;   to switch to frame control.
+;;
+;;   With a HyControl minor mode active, a multi-line help summary of
+;;   most available key bindings is shown in the minibuffer.  Simply
+;;   read this and try each command out to get a feel for it.  Below
+;;   we highlight some of the most unique commands.
+;;
+;;   ----
+;;
+;;   In either HyControl mode, you can instantly create a grid of
+;;   windows to display many buffers by choosing a number of rows as
+;;   your first digit, then a number of columns of windows as the
+;;   second digit and then pressing address@hidden, e.g. {.26 @} produces 2 
rows,
+;;   each with 6 columns of windows in the selected frame.  Grids can
+;;   be from 1x1 to 9x9 windows.  This command also works outside of a
+;;   HyControl mode when in Dired, Buffer Menu or IBuffer modes with
+;;   a prefix argument (no preceding period).
+;;
+;;   The buffers displayed by the address@hidden command are chosen smartly.
+;;   With a current buffer in Dired, Buffer Menu or IBuffer mode with
+;;   marked items, the buffers associated with those items are
+;;   displayed first.  Then the most recently used buffers are
+;;   displayed in each window, first selecting from buffers which
+;;   match any of the predicate expressions in
+;;   `hycontrol-display-buffer-predicate-list'.  Then, if there are
+;;   not enough buffers for all windows, the buffers that failed to
+;;   match to any predicate are used.  The default predicate list
+;;   chooses buffers with attached files.  In all cases, buffers whose
+;;   names start with a space are filtered out.  If a prefix argument
+;;   of 0 is given, a major mode symbol is prompted for and buffers
+;;   with that major mode are preferred for display instead of those
+;;   matching the predicate list.
+;;
+;;   ----
+;;
+;;   HyControl allows placement of frames at screen edges and corners
+;;   using the keys of the numeric keypad, matching their physical
+;;   layout, e.g. {3} moves to the lower right corner.  Press {p} for
+;;   a prompt with a virtual numeric keypad if you lack a physical one.
+;;   You can also cycle through all of these placement positions with
+;;   the {c} key.
+;;
+;;   HyControl can rapidly resize frames to common percentages of
+;;   screen sizes via a number of commands.  Each press of {a} or {A}
+;;   cycles through resizing the selected frame's width and height
+;;   respectively to a percentage of the screen given by the lists,
+;;   `hycontrol-frame-widths' and `hycontrol-frame-heights', e.g. 25%,
+;;   50%, etc.  The keys: {i} top, {j} left, {k} right, and {m}
+;;   bottom, first maximize a frame to the respective screen edge and
+;;   then with successive presses, shrink the frame dimension
+;;   perpendicular to that edge by 50% while keeping the original edge
+;;   fixed in place.  Try them and you will quickly see how they can
+;;   help.
+;;   
+;;   ----
 ;;
 ;;   When HyControl creates a new frame, it automatically sizes it to the
 ;;   same size as the previously selected frame and offsets it from that
 ;;   frame by the (X . Y) number of pixels given in the variable,
 ;;   `hycontrol-frame-offset'.
 ;;
+;;   A display screen may span multiple physical monitors.  To prevent
+;;   widgets and toolbars at the corners of the screen from being
+;;   obscured, HyControl can offset each frame from each screen edge
+;;   by a fixed number of pixels.  These offsets are specified by the
+;;   variable, `hycontrol-screen-offset-alist' and can differ for each
+;;   type of screen; see its documentation for details.  If you change
+;;   its value, then call `hycontrol-set-screen-offsets' to set any
+;;   new offset values.  `hycontrol-get-screen-offsets' returns the
+;;   list of offsets in clockwise order starting from the top edge.
+;;
+;;   ----
+;;
 ;;   Please note that the frame zoom in/out commands on Z and z will
 ;;   not work unless you have the separately available "zoom-frm.el"
 ;;   library (which itself requires another library).  If not available,
-;;   they command will just beep at you.  The window-based zoom commands
+;;   this command will just beep at you.  The window-based zoom commands
 ;;   utilize a built-in Emacs library, so they will always work under
 ;;   any window system.  These commands enlarge and shrink the default
 ;;   text face.
@@ -60,6 +121,7 @@
 ;;; Other required Elisp libraries
 ;;; ************************************************************************
 
+(require 'set)
 ;; Frame face enlarging/shrinking (zooming) requires this separately available 
library.
 ;; Everything else works fine without it, so don't make it a required 
dependency.
 (require 'zoom-frm nil t)
@@ -68,6 +130,36 @@
 ;;; Public variables
 ;;; ************************************************************************
 
+(defvar hycontrol-debug nil
+  "When set non-nil by a user, some HyControl functions log debugging messages 
to the *Messages* buffer.")
+
+(defvar hycontrol-display-buffer-predicate-list
+  ;; Display only buffers attached to files.
+  (list #'buffer-file-name)
+  "List of single buffer/name predicates.
+If any predicate returns non-nil for a buffer, include that buffer in
+the list to display in the windows created by `hycontrol-windows-grid'.
+
+A predicate may be either a function that takes a single buffer
+argument or a boolean expression, in which case the expression is
+evaluated with the buffer argument as the current buffer, e.g. (eq
+major-mode 'c-mode).")
+
+(defcustom hycontrol-help-flag t
+  "*When t (the default), display key binding help in the minibuffer when in a 
HyControl mode."
+  :type 'boolean
+  :group 'hyperbole-screen)
+
+(defcustom hycontrol-invert-mode-line-flag t
+  "When t (default) and in a HyControl mode, invert mode-line to emphasize the 
special key bindings in effect."
+  :type 'boolean
+  :group 'hyperbole-screen)
+
+(defcustom hycontrol-keep-window-flag nil
+  "*When non-nil (default is nil), leave original window when tear off window 
to another frame."
+  :type 'boolean
+  :group 'hyperbole-screen)
+
 (defcustom hycontrol-maximum-units 1000
   "*Maximum units setting allowed for hycontrol commands.
 The unit counter resets to the last digit entered whenever this value is 
exceeded."
@@ -83,7 +175,8 @@ It's value is an (x-offset . y-offset) pair in pixels."
   :group 'hyperbole-screen)
 
 (defvar hycontrol-screen-offset-alist
-  '(((1920 . 1080) . (10 0 68 0)) ; 24" iMac / HD display
+  '(((1920 . 1080) . (0 10 0 68)) ; 24" iMac HD display
+    ((2560 . 1440) . (0 15 0 93)) ; 27" iMac HD display
     (t . (0 0 0 0)))
   "*Alist of (screen-predicate . (top-offset right-offset bottom-offset 
left-offset) pairs.
 Offsets are integers given in pixels.  The offsets associated with the first
@@ -121,204 +214,710 @@ The final predicate should always be t, for default 
values, typically of zero.")
                                (< value (display-pixel-width)))))
   :group 'hyperbole-screen)
 
+(defvar hycontrol-frame-widths
+  '(1.0 0.75 0.666 0.5 0.333 0.25)
+    "List of frame width percentages that HyControl cycles through when 
adjusting a frame's width.
+0.75 and 75 are treated as the same percentage.")
+
+(defvar hycontrol-frame-heights
+  '(1.0 0.75 0.666 0.5 0.333 0.25)
+  "List of frame height percentages that HyControl cycles through when 
adjusting a frame's height.
+0.75 and 75 are treated as the same percentage.")
+
+(defvar hycontrol-arg nil
+  "HyControl copy of prefix-arg that it changes within key bindings.
+`pre-command-hook' synchronizes this value to `prefix-arg'.")
+
+;;; Frame Keys
+
+(defvar hycontrol-frames-mode-map
+  (let ((map (make-sparse-keymap)))
+    (suppress-keymap map) ;; Disable self-inserting keys.
+
+    (define-key map [up]    (lambda () (interactive) (hycontrol-move-frame 'up 
hycontrol-arg)))
+    (define-key map [down]  (lambda () (interactive) (hycontrol-move-frame 
'down hycontrol-arg)))
+    (define-key map [left]  (lambda () (interactive) (hycontrol-move-frame 
'left hycontrol-arg)))
+    (define-key map [right] (lambda () (interactive) (hycontrol-move-frame 
'right hycontrol-arg)))
+
+    (define-key map [kp-0]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-0 hycontrol-arg)))
+    (define-key map [kp-1]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-1 hycontrol-arg)))
+    (define-key map [kp-2]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-2 hycontrol-arg)))
+    (define-key map [kp-3]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-3 hycontrol-arg)))
+    (define-key map [kp-4]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-4 hycontrol-arg)))
+    (define-key map [kp-5]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-5 hycontrol-arg)))
+    (define-key map [kp-6]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-6 hycontrol-arg)))
+    (define-key map [kp-7]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-7 hycontrol-arg)))
+    (define-key map [kp-8]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-8 hycontrol-arg)))
+    (define-key map [kp-9]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-9 hycontrol-arg)))
+
+    ;; Clear hycontrol-arg
+    (define-key map "."     (lambda () (interactive) (setq hycontrol-arg 0) 
(hycontrol-frame-to-screen-edges 0)))
+    (define-key map "@"     'hycontrol-windows-grid)
+    (define-key map "?"     'hycontrol-toggle-help)
+    (define-key map "a"     'hycontrol-frame-adjust-widths)
+    (define-key map "A"     'hycontrol-frame-adjust-heights)
+    (define-key map "b"     'bury-buffer)
+    (define-key map "c"     'hycontrol-frame-to-screen-edges)
+    (define-key map "d"     'delete-frame)
+    (define-key map "D"     'hycontrol-delete-other-frames)
+    (define-key map "f"     'hycontrol-clone-window-to-new-frame)
+    (define-key map "F"     'hycontrol-window-to-new-frame)
+    (define-key map "\C-g"  'hycontrol-abort-mode)
+    (define-key map "%"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-percentage-of-screen hycontrol-arg))))
+    (define-key map "H"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-height-percentage-of-screen hycontrol-arg))))
+    (define-key map "W"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-width-percentage-of-screen hycontrol-arg))))
+    (define-key map "h"     (lambda () (interactive) 
(hycontrol-set-frame-height nil (+ (frame-height) hycontrol-arg))))
+    (define-key map "i"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-top hycontrol-arg))))
+    (define-key map "j"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-left hycontrol-arg))))
+    (define-key map "k"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-right hycontrol-arg))))
+    (define-key map "l"     'lower-frame)
+    (define-key map "m"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-bottom hycontrol-arg))))
+    (define-key map "n"     (lambda () (interactive) 
(hycontrol-set-frame-width nil (- (frame-width) hycontrol-arg))))
+    (define-key map "o"     (lambda () (interactive) (let ((w 
(selected-window))) (other-window hycontrol-arg) (if (eq w (selected-window)) 
(other-window 1)))))
+    (define-key map "O"     (lambda () (interactive) (let ((w 
(selected-window))) (other-frame hycontrol-arg) (if (eq w (selected-window)) 
(other-frame 1)))))
+    ;; Numeric keypad emulation for keyboards that lack one.
+    (define-key map "p"     (lambda () (interactive) 
(hycontrol-virtual-numeric-keypad hycontrol-arg)))
+    (define-key map "q"     'hycontrol-quit-frames-mode)
+    (define-key map "r"     'raise-frame)
+    (define-key map "s"     (lambda () (interactive) 
(hycontrol-set-frame-height nil (- (frame-height) hycontrol-arg))))
+    (define-key map "t"     'hycontrol-enable-windows-mode)
+    (define-key map "u"     'unbury-buffer)
+    (define-key map "w"     (lambda () (interactive) 
(hycontrol-set-frame-width nil (+ (frame-width) hycontrol-arg))))
+    (define-key map "Z"     (lambda () (interactive) (if (> hycontrol-arg 9) 
(setq hycontrol-arg 1)) (hycontrol-frame-zoom 'zoom-frm-in hycontrol-arg 
hycontrol-debug)))
+    (define-key map "z"     (lambda () (interactive) (if (> hycontrol-arg 9) 
(setq hycontrol-arg 1)) (hycontrol-frame-zoom 'zoom-frm-out hycontrol-arg 
hycontrol-debug)))
+    (define-key map "\["    'hycontrol-make-frame)
+    (define-key map "\]"    'hycontrol-make-frame)
+    (define-key map "\("    'hycontrol-save-frame-configuration)
+    (define-key map "\)"    'hycontrol-restore-frame-configuration)
+    ;; Something in this command's event handling when used within HyControl's 
event loop slows down
+    ;; frame iconification under macOS 100-fold, so don't enable it until this 
issue is resolved.
+    ;; (define-key map "^"    'iconify-frame)
+    (define-key map "~"     (lambda () (interactive)
+                             (or (hycontrol-frame-swap-buffers) 
(hycontrol-window-swap-buffers)
+                                 (hycontrol-user-error hycontrol-debug 
"(HyControl): There must be only two windows on screen to swap buffers."))))
+    (define-key map "-"     'hycontrol-frame-minimize-lines)
+    (define-key map "+"     'toggle-frame-maximized)
+    (define-key map "="     (lambda () (interactive)
+                             (and (> (length (visible-frame-list)) 1)
+                                  (y-or-n-p "Resize all other frames to the 
size of the selected frame?")
+                                  (mapc (lambda (f)
+                                          (hycontrol-set-frame-size
+                                           f (frame-pixel-width) 
(frame-pixel-height) t))
+                                        (visible-frame-list)))))
+
+    (define-key map "\C-u"  (lambda () (interactive) (setq hycontrol-arg (* 
hycontrol-arg 4))
+                             (if (> hycontrol-arg hycontrol-maximum-units) 
(setq hycontrol-arg 4))))
+    (define-key map "0"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 0)))
+    (define-key map "1"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 1)))
+    (define-key map "2"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 2)))
+    (define-key map "3"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 3)))
+    (define-key map "4"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 4)))
+    (define-key map "5"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 5)))
+    (define-key map "6"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 6)))
+    (define-key map "7"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 7)))
+    (define-key map "8"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 8)))
+    (define-key map "9"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 9)))
+
+    map)
+  "Keymap to use when in Hyperbole HyControl frames mode.")
+
+;;; Window Keys
+
+;;;###autoload
+(eval-after-load "buff-menu" '(define-key Buffer-menu-mode-map "@" 
'hycontrol-windows-grid))
+;;;###autoload
+(eval-after-load "ibuffer"   '(define-key ibuffer-mode-map     "@" 
'hycontrol-windows-grid))
+;;;###autoload
+(eval-after-load "dired"     '(define-key dired-mode-map       "@" 
'hycontrol-windows-grid))
+
+(defvar hycontrol-windows-mode-map
+  (let ((map (make-sparse-keymap)))
+    (suppress-keymap map) ;; Disable self-inserting keys.
+
+    (define-key map [up]    (lambda () (interactive) (hycontrol-move-frame 'up 
hycontrol-arg)))
+    (define-key map [down]  (lambda () (interactive) (hycontrol-move-frame 
'down hycontrol-arg)))
+    (define-key map [left]  (lambda () (interactive) (hycontrol-move-frame 
'left hycontrol-arg)))
+    (define-key map [right] (lambda () (interactive) (hycontrol-move-frame 
'right hycontrol-arg)))
+
+    (define-key map [kp-0]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-0 hycontrol-arg)))
+    (define-key map [kp-1]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-1 hycontrol-arg)))
+    (define-key map [kp-2]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-2 hycontrol-arg)))
+    (define-key map [kp-3]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-3 hycontrol-arg)))
+    (define-key map [kp-4]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-4 hycontrol-arg)))
+    (define-key map [kp-5]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-5 hycontrol-arg)))
+    (define-key map [kp-6]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-6 hycontrol-arg)))
+    (define-key map [kp-7]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-7 hycontrol-arg)))
+    (define-key map [kp-8]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-8 hycontrol-arg)))
+    (define-key map [kp-9]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-9 hycontrol-arg)))
+
+    ;; Clear hycontrol-arg
+    (define-key map "."     (lambda () (interactive) (setq hycontrol-arg 0) 
(hycontrol-frame-to-screen-edges 0)))
+    (define-key map "@"     'hycontrol-windows-grid)
+    (define-key map "?"     'hycontrol-toggle-help)
+    (define-key map "a"     'hycontrol-frame-adjust-widths)
+    (define-key map "A"     'hycontrol-frame-adjust-heights)
+    (define-key map "b"     'bury-buffer)
+    (define-key map "c"     'hycontrol-frame-to-screen-edges)
+    (define-key map "d"     'delete-window)
+    (define-key map "D"     'hycontrol-delete-other-windows)
+    (define-key map "f"     'hycontrol-clone-window-to-new-frame)
+    (define-key map "F"     'hycontrol-window-to-new-frame)
+    (define-key map "\C-g"  'hycontrol-abort-mode)
+    (define-key map "h"     (lambda () (interactive) (enlarge-window 
hycontrol-arg)))
+
+    ;; Allow frame resizing even when in window control mode because
+    ;; it may be used often.
+    (define-key map "i"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-top hycontrol-arg))))
+    (define-key map "j"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-left hycontrol-arg))))
+    (define-key map "k"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-right hycontrol-arg))))
+    (define-key map "m"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-bottom hycontrol-arg))))
+    (define-key map "n"     (lambda () (interactive) 
(shrink-window-horizontally hycontrol-arg)))
+
+    (define-key map "o"     (lambda () (interactive) (let ((w 
(selected-window))) (other-window hycontrol-arg) (if (eq w (selected-window)) 
(other-window 1)))))
+    (define-key map "O"     (lambda () (interactive) (let ((w 
(selected-window))) (other-frame hycontrol-arg) (if (eq w (selected-window)) 
(other-frame 1)))))
+    ;; Numeric keypad emulation for keyboards that lack one.
+    (define-key map "p"     (lambda () (interactive) 
(hycontrol-virtual-numeric-keypad hycontrol-arg)))
+    (define-key map "q"     'hycontrol-quit-windows-mode)
+    (define-key map "s"     (lambda () (interactive) (shrink-window 
hycontrol-arg)))
+    (define-key map "t"     'hycontrol-enable-frames-mode)
+    (define-key map "u"     'unbury-buffer)
+    (define-key map "w"     (lambda () (interactive) 
(enlarge-window-horizontally hycontrol-arg)))
+    (define-key map "Z"     (lambda () (interactive) (if (fboundp 
'text-scale-increase)
+                                                        ;; Emacs autoloaded 
function
+                                                        (text-scale-increase 
(if (< hycontrol-arg 10) hycontrol-arg (setq hycontrol-arg 1))))))
+    (define-key map "z"     (lambda () (interactive) (if (fboundp 
'text-scale-decrease)
+                                                        ;; Emacs autoloaded 
function
+                                                        (text-scale-decrease 
(if (< hycontrol-arg 10) hycontrol-arg (setq hycontrol-arg 1))))))
+
+    ;; Don't call these interactively because a prefix arg of 1 tries
+    ;; to make one window 1 line tall.
+    (define-key map "\["    (lambda () (interactive) 
(split-window-vertically)))
+    (define-key map "\]"    (lambda () (interactive) 
(split-window-horizontally)))
+
+    (define-key map "\("    'hycontrol-save-frame-configuration)
+    (define-key map "\)"    'hycontrol-restore-frame-configuration)
+
+    (define-key map "~"     (lambda () (interactive)
+                             (or (hycontrol-window-swap-buffers) 
(hycontrol-frame-swap-buffers)
+                                 (hycontrol-user-error hycontrol-debug 
"(HyControl): There must be only two windows on screen to swap buffers."))))
+    (define-key map "-"     'hycontrol-window-minimize-lines)
+    (define-key map "+"     'hycontrol-window-maximize-lines)
+    (define-key map "="     (lambda () (interactive) (and (> (length 
(window-list)) 1)
+                                                         (y-or-n-p "Resize 
windows evenly across this frame?")
+                                                         (balance-windows))))
+
+    (define-key map "\C-u"  (lambda () (interactive) (setq hycontrol-arg (* 
hycontrol-arg 4))
+                             (if (> hycontrol-arg hycontrol-maximum-units) 
(setq hycontrol-arg 4))))
+    (define-key map "0"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 0)))
+    (define-key map "1"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 1)))
+    (define-key map "2"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 2)))
+    (define-key map "3"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 3)))
+    (define-key map "4"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 4)))
+    (define-key map "5"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 5)))
+    (define-key map "6"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 6)))
+    (define-key map "7"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 7)))
+    (define-key map "8"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 8)))
+    (define-key map "9"     (lambda () (interactive) 
(hycontrol-universal-arg-digit 9)))
+
+    map)
+  "Keymap to use when in Hyperbole HyControl window mode.")
+
+
 ;;; ************************************************************************
 ;;; Private variables
 ;;; ************************************************************************
 
+(defvar hycontrol--frames-prompt-format
+ (concat "FRAMES: (h=heighten, s=shorten, w=widen, n=narrow, %%/H/W=screen 
%%age, arrow=move frame) by %d unit%s, .=clear units\n"
+        ;; d/^/D=delete/iconify frame/others - iconify left out due to some 
bug on macOS (see comment near ^ below)
+        "a/A=cycle adjust width/height, d/D=delete frame/others, o/O=other 
win/frame, [/]=create frame, (/)=save/restore fconfig\n"
+        "@=grid of wins, f/F=clone/move win to new frame, 
-/+=minimize/maximize frame, ==frames same size, u/b/~=un/bury/swap bufs\n"
+        "Frame to edges: c=cycle, i/j/k/m=expand/contract, p/num-keypad=move; 
z/Z=zoom out/in, t=to WINDOWS mode, q=quit")
+ "HyControl frames-mode minibuffer prompt string to pass to format.
+Format it with 2 arguments: prefix-arg and a plural string indicating if
+prefix-arg is not equal to 1.")
+
+(defvar hycontrol--windows-prompt-format
+  (concat
+   "WINDOWS: (h=heighten, s=shorten, w=widen, n=narrow, arrow=move frame) by 
%d unit%s, .=clear units\n"
+   "a/A=cycle adjust frame width/height, d/D=delete win/others, o/O=other 
win/frame, [/]=split win atop/sideways, (/)=save/restore wconfig\n"
+   "@=grid of wins, f/F=clone/move win to new frame, -/+=minimize/maximize 
win, ==wins same size, u/b/~=un/bury/swap bufs\n"
+   "Frame to edges: c=cycle, i/j/k/m=expand/contract, p/num-keypad=move; 
z/Z=zoom out/in, t=to FRAMES mode, q=quit")
+  "HyControl windows-mode minibuffer prompt string to pass to format.
+Format it with 2 arguments: prefix-arg and a plural string indicating if
+prefix-arg is not equal to 1.")
+
+(defvar hycontrol--prompt-format nil
+  "The current HyControl mode help format string or nil if not active.")
+
+(defvar hycontrol--exit-status nil
+  "Internal HyControl status indicator of how it was exited.
+After exit, it should be one of the following symbols triggered by the
+associated key: quit {q}, abort {C-g}, or toggle {t}.")
+
+
 (defvar hycontrol--fconfig nil
   "Used to store a frame configuration while in hycontrol")
 
 (defvar hycontrol--wconfig nil
   "Used to store a window configuration while in hycontrol")
 
+
+(defvar hycontrol--invert-display-buffer-predicates nil)
+
+
+(defvar hycontrol--quit-function nil
+  "Stores function auto-generated by a call to `set-transient-map' to remove 
the transient-map later.")
+
+
 (defvar hycontrol--screen-edge-position 0
   "Cycles between 0-7 representing corner and center edge positions in 
clockwise order from the upper left corner.")
 
+(defvar hycontrol--frame-widths-pointer nil)
+(defvar hycontrol--frame-heights-pointer nil)
+(defvar hycontrol--buffer-list-pointer nil)
+
+(defvar hycontrol--initial-which-key-inhibit nil
+  "Stores value of `which-key-inhibit' flag from \"which-key\" package upon 
entry to HyControl, if any.")
+
+;;; ************************************************************************
+;;; Private functions
+;;; ************************************************************************
+
+;;; HyControl private per keyboard key functions
+
+(defun hycontrol-pre-command-hook ()
+  "Added to `pre-command-hook' while in any HyControl mode."
+  (when (null hycontrol-arg) (setq hycontrol-arg 1))
+  (setq prefix-arg hycontrol-arg))
+
+(defun hycontrol-post-command-hook ()
+  "Added to `post-command-hook' while in HyControl frames mode."
+  (when (null hycontrol-arg) (setq hycontrol-arg 1))
+  (if (zerop (minibuffer-depth))
+      (if hycontrol-help-flag
+         (let ((message-log-max nil) ; prevent logging of HyControl help 
messages
+               (resize-mini-windows t)  ; automatically shrink
+               (use-dialog-box))        ; prevent y-or-n dialog boxes
+           (message hycontrol--prompt-format hycontrol-arg (if (= 
hycontrol-arg 1) "" "s"))))
+    ;; Quit from HyControl at any minibuffer prompt so that
+    ;; self-insert-keys work for typing at the prompt.
+    (hycontrol-disable-modes)))
+
+(defun hycontrol-end-mode ()
+  "Prepare to abort or quit from HyControl."
+  (interactive)
+  (remove-hook 'pre-command-hook  'hycontrol-pre-command-hook)
+  (remove-hook 'post-command-hook 'hycontrol-post-command-hook)
+  (if (boundp 'which-key-inhibit)
+      (setq which-key-inhibit hycontrol--initial-which-key-inhibit))
+  ;; May be called when turning on HyControl before this next function
+  ;; is defined.
+  (if (functionp hycontrol--quit-function)
+      (funcall hycontrol--quit-function))
+  (setq inhibit-quit nil
+       hycontrol--exit-status t
+       hycontrol-arg 1
+       prefix-arg nil
+       hycontrol-debug nil
+       hycontrol-frames-mode nil
+       hycontrol-windows-mode nil
+       hycontrol--prompt-format nil))
+
+(defun hycontrol-stay-in-mode ()
+  "Return non-nil if HyControl mode should remain active."
+  (null hycontrol--exit-status))
+
+(defun hycontrol-universal-arg-digit (digit)
+  "Return the new prefix argument based on existing `hycontrol-arg' and new 
DIGIT."
+  (setq hycontrol-arg (+ (* hycontrol-arg 10) digit)) (if (> hycontrol-arg 
hycontrol-maximum-units) (setq hycontrol-arg digit))
+  hycontrol-arg)
+
+
+;;; HyControl private initialization functions
+
+(defun hycontrol-setup (arg setup-function)
+  "HyControl initialization; passes through ARG and SETUP-FUNCTION.
+SETUP-FUNCTION is HyControl mode-specific."
+  ;; Save status value of which-key help package and quit any
+  ;; in-progress which-key help without any user alert.
+  (when (boundp 'which-key-inhibit)
+    (setq hycontrol--initial-which-key-inhibit which-key-inhibit
+         which-key-inhibit t)
+    (which-key--hide-popup-ignore-command))
+
+  (setq arg (prefix-numeric-value arg)
+       inhibit-quit t
+       hycontrol--exit-status nil)
+  (and hycontrol-debug (not (integerp hycontrol-debug)) (setq hycontrol-debug 
message-log-max))
+  (if (called-interactively-p 'interactive) (hycontrol-save-configurations))
+  (cond ((or (not (integerp arg)) (< arg 1))
+        (setq arg 1))
+       ((> arg hycontrol-maximum-units)
+        (setq arg hycontrol-maximum-units)))
+  (setq hycontrol-arg arg
+       prefix-arg arg)
+  (hycontrol-invert-mode-line)
+  (add-hook 'pre-command-hook  'hycontrol-pre-command-hook)
+  (add-hook 'post-command-hook 'hycontrol-post-command-hook)
+  (funcall setup-function))
+
+(defun hycontrol-frames-setup ()
+  "HyControl frames-specific initializations."
+  (setq hycontrol--prompt-format hycontrol--frames-prompt-format)
+  (hycontrol-post-command-hook)
+  ;; Use normal event loop with transient-map until {C-g} or {q} is
+  ;; pressed, then exit.
+  (setq hycontrol--quit-function
+       (set-transient-map hycontrol-frames-mode-map #'hycontrol-stay-in-mode)))
+
+(defun hycontrol-frames (&optional arg)
+  "Interactively delete, jump to, move, replicate, and resize frames.
+With optional numeric prefix ARG, move and resize by ARG (an
+integer) units.  If ARG is < 1, it is set to 1.  If it is >
+`hycontrol-maximum-units', it is set to `hycontrol-maximum-units'."
+  (interactive "p")
+  (hycontrol-setup arg #'hycontrol-frames-setup)
+  (unless hycontrol-help-flag
+    (message "(HyControl) Frames global minor mode enabled; use {%s} for help"
+            (hycontrol-help-key-description))))
+
+(defun hycontrol-windows-setup ()
+  "HyControl windows-specific initializations."
+  (setq hycontrol--prompt-format hycontrol--windows-prompt-format)
+  (hycontrol-post-command-hook)
+  ;; Use normal event loop with transient-map until {C-g} or {q} is
+  ;; pressed, then exit.
+  (setq hycontrol--quit-function
+       (set-transient-map hycontrol-windows-mode-map 
#'hycontrol-stay-in-mode)))
+
+(defun hycontrol-windows (&optional arg)
+  "Interactively delete, jump to, rebalance, resize, and split windows.
+With optional numeric prefix ARG, move and resize by ARG (an
+integer) units.  If ARG is < 1, it is set to 1.  If it is >
+`hycontrol-maximum-units', it is set to `hycontrol-maximum-units'."
+  (interactive "p")
+  (hycontrol-setup arg #'hycontrol-windows-setup)
+  (unless hycontrol-help-flag
+    (message "(HyControl) Windows global minor mode enabled; use {%s} for help"
+            (hycontrol-help-key-description))))
+
+
+;;; HyControl general private functions
+
+(defsubst hycontrol-frame-edges (&optional frame)
+  "Return the outermost edge coordinates of optional or selected FRAME.
+FRAME must be a live frame and defaults to the selected one.  The
+list returned has the form (Left Top Right Bottom) where all
+values are in pixels relative to the origin - the position (0, 0)
+- of FRAME’s display.  For terminal frames all values are
+relative to Left and Top which are both zero."
+  (frame-edges frame 'outer-edges))
+
+(defsubst hycontrol-frame-x-origin (&optional frame)
+  "Return the X origin coordinate (upper left point) of optional FRAME or the 
selected frame.  This includes all graphical window manager decorations.
+Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
+  (nth 0 (hycontrol-frame-edges frame)))
+
+(defsubst hycontrol-frame-y-origin (&optional frame)
+  "Return the Y origin coordinate (upper left point) of optional FRAME or the 
selected frame.  This includes all graphical window manager decorations.
+Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
+  (nth 1 (hycontrol-frame-edges frame)))
+
+(defun hycontrol-frame-height (&optional frame)
+  "Return the height of optional FRAME or the selected frame.  This includes 
all graphical window manager decorations.
+Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
+  (frame-pixel-height frame))
+
+(defun hycontrol-frame-width (&optional frame)
+  "Return the width of optional FRAME or the selected frame.  This includes 
all graphical window manager decorations.
+Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
+  (frame-pixel-width frame))
+
+;; Frame Resizing Support
+(defconst hycontrol-screen-offset-sensitivity 12
+  "Number of pixels a frame dimension can be off from its screen-offset and 
still be considered at the screen edge.")
+
+(defun hycontrol-frame-at-left-p ()
+  "Return non-nil if selected frame's left edge is at the left edge of the 
screen sans `hycontrol-screen-left-offset'."
+  (<= (- (nth 0 (hycontrol-frame-edges)) hycontrol-screen-left-offset)
+      hycontrol-screen-offset-sensitivity))
+
+(defun hycontrol-frame-at-top-p ()
+  "Return non-nil if selected frame's bottom is at the top of the screen sans 
`hycontrol-screen-top-offset'."
+  (<= (- (nth 1 (hycontrol-frame-edges)) hycontrol-screen-top-offset
+        ;; Under macOS, frames are automatically offset vertically by
+        ;; the height of the global menubar, so account for that.
+        (if (eq system-type 'darwin) 23 0))
+      hycontrol-screen-offset-sensitivity))
+
+(defun hycontrol-frame-at-right-p ()
+  "Return non-nil if selected frame's right edge is at the right edge of the 
screen sans `hycontrol-screen-right-offset'."
+  (<= (- (display-pixel-width) (nth 2 (hycontrol-frame-edges)) 
hycontrol-screen-right-offset)
+      hycontrol-screen-offset-sensitivity))
+
+(defun hycontrol-frame-at-bottom-p ()
+  "Return non-nil if selected frame's bottom is at the bottom of the screen 
sans `hycontrol-screen-bottom-offset'."
+  (<= (- (display-pixel-height) (nth 3 (hycontrol-frame-edges)) 
hycontrol-screen-bottom-offset
+        ;; Under macOS, frames are automatically offset vertically by
+        ;; the height of the global menubar, so account for that.
+        (if (eq system-type 'darwin) -23 0))
+      hycontrol-screen-offset-sensitivity))
+
+;; Frame Zoom Support
+(defun hycontrol-frame-zoom (zoom-func arg max-msgs)
+  "Zoom default frame face using ZOOM-FUNC and amount ARG (must be 1-9).
+MAX-MSGS is a number used only if ZOOM-FUNC is undefined and an error message 
is logged."
+  (if (fboundp zoom-func)
+      (let ((frame-zoom-font-difference arg))
+       (funcall zoom-func))
+    (hycontrol-user-error max-msgs "(HyControl): Zooming requires separate 
\"zoom-frm.el\" Emacs Lisp library installation")))
+
+
+(defun hycontrol-make-frame ()
+  "Create and select a new frame with the same size and selected buffer as the 
selected frame.
+It is offset from the selected frame by `hycontrol-frame-offset' (x . y) 
pixels."
+  (interactive)
+  (select-frame (make-frame (list (cons 'width (frame-width)) (cons 'height 
(frame-height))
+                                 (cons 'left (+ (car hycontrol-frame-offset) 
(car (frame-position))))
+                                 (cons 'top  (+ (cdr hycontrol-frame-offset) 
(cdr (frame-position))))))))
+
+(defun hycontrol-move-frame (arrow pixels)
+  (let ((x (car (frame-position)))
+       (y (cdr (frame-position))))
+    (pcase arrow
+      ('up    (set-frame-position nil x (- y pixels)))
+      ('down  (set-frame-position nil x (+ y pixels)))
+      ('left  (set-frame-position nil (- x pixels) y))
+      ('right (set-frame-position nil (+ x pixels) y)))))
+
+(defun hycontrol-numeric-keypad (e _arg)
+  "Move the selected frame to a screen location based on the location of the 
last pressed numeric keypad key."
+  (let ((num (if (integerp e)
+                e
+              ;; kp-<num> symbol
+              (- (aref (symbol-name e) 3) ?0))))
+    (funcall
+     (nth num '(nil hycontrol-frame-to-bottom-left 
hycontrol-frame-to-bottom-center hycontrol-frame-to-bottom-right
+               hycontrol-frame-to-left-center hycontrol-frame-to-center 
hycontrol-frame-to-right-center
+               hycontrol-frame-to-top-left hycontrol-frame-to-top-center 
hycontrol-frame-to-top-right)))))
+
+(defun hycontrol-set-frame-height (frame height &optional pretend pixelwise)
+  "Set text height of frame FRAME to HEIGHT lines and fit it to the screen.
+Optional third arg PRETEND non-nil means that redisplay should use
+HEIGHT lines but that the idea of the actual height of the frame should
+not be changed.
+
+Optional fourth argument PIXELWISE non-nil means that FRAME should be
+HEIGHT pixels high.  Note: When ‘frame-resize-pixelwise’ is nil, some
+window managers may refuse to honor a HEIGHT that is not an integer
+multiple of the default frame font height."
+  (let ((frame-resize-pixelwise t))
+    (set-frame-height frame height pretend pixelwise)
+    (hycontrol-frame-fit-to-screen frame)))
+
+(defun hycontrol-set-frame-position (frame x y)
+  "Set position of FRAME to (X, Y) and ensure it fits on screen.
+FRAME must be a live frame and defaults to the selected one.  X and Y,
+if positive, specify the coordinate of the left and top edge of FRAME’s
+outer frame in pixels relative to an origin (0, 0) of FRAME’s display.
+If any of X or Y is negative, it specifies the coordinates of the right
+or bottom edge of the outer frame of FRAME relative to the right or
+bottom edge of FRAME’s display."
+  (let ((frame-resize-pixelwise t))
+    (hycontrol-frame-fit-to-screen frame)
+    (set-frame-position frame x y)))
+
+(defun hycontrol-set-frame-size (frame width height &optional pixelwise)
+  "Set text size of FRAME to WIDTH by HEIGHT, measured in characters.
+Ensure frame fits within the screen size.
+
+Optional argument PIXELWISE non-nil means to measure in pixels.  Note:
+When ‘frame-resize-pixelwise’ is nil, some window managers may refuse to
+honor a WIDTH that is not an integer multiple of the default frame font
+width or a HEIGHT that is not an integer multiple of the default frame
+font height."
+  (let ((x-origin (hycontrol-frame-x-origin))
+       (y-origin (hycontrol-frame-y-origin))
+       (frame-resize-pixelwise t))
+    (set-frame-size frame width height pixelwise)
+    (hycontrol-frame-fit-to-screen frame x-origin y-origin)))
+
+(defun hycontrol-set-frame-width (frame width &optional pretend pixelwise)
+  "Set text width of frame FRAME to WIDTH columns and fit it to the screen.
+Optional third arg PRETEND non-nil means that redisplay should use WIDTH
+columns but that the idea of the actual width of the frame should not
+be changed.
+
+Optional fourth argument PIXELWISE non-nil means that FRAME should be
+WIDTH pixels wide.  Note: When ‘frame-resize-pixelwise’ is nil, some
+window managers may refuse to honor a WIDTH that is not an integer
+multiple of the default frame font width."
+  (let ((x-origin (hycontrol-frame-x-origin))
+       (y-origin (hycontrol-frame-y-origin))
+       (frame-resize-pixelwise t))
+    (set-frame-width frame width pretend pixelwise)
+    (hycontrol-frame-fit-to-screen frame x-origin y-origin)))
+
+
+(defun hycontrol-display-buffer-predicate-results (buffer)
+  (condition-case err
+      (mapcar (lambda (expr)
+               (if (functionp expr)
+                   (funcall expr buffer)
+                 (with-current-buffer buffer
+                   (eval expr))))
+             hycontrol-display-buffer-predicate-list)
+    (error "(HyDebug): Invalid expression in 
`hycontrol-display-buffer-predicate-list' - %s" err)))
+
+(defun hycontrol-window-display-buffer (window)
+  "Given a WINDOW, choose the next appropriate buffer to display therein using 
`hycontrol-display-buffer-predicate-list'.
+Also uses the value of free variable `buffer-list' as the list of
+buffers to distribute among the windows."
+  (let ((buf (car hycontrol--buffer-list-pointer)))
+    (setq hycontrol--buffer-list-pointer (cdr hycontrol--buffer-list-pointer))
+    (unless buf
+      ;; Now on each new pass through buffer-list, the buffer predicate tests 
will
+      ;; be inverted to expand the list of allowed buffers because the
+      ;; 1st pass did not produce a buffer for this window.
+      (setq hycontrol--buffer-list-pointer buffer-list
+           buf (car hycontrol--buffer-list-pointer)
+           hycontrol--buffer-list-pointer (cdr hycontrol--buffer-list-pointer))
+      (unless (eq hycontrol--invert-display-buffer-predicates 'ignore)
+       (setq hycontrol--invert-display-buffer-predicates (not 
hycontrol--invert-display-buffer-predicates))))
+    (while (and buf (or (= (aref (buffer-name buf) 0) ?\ )
+                       (and (not hycontrol--invert-display-buffer-predicates)
+                            (not (eval (cons 'or 
(hycontrol-display-buffer-predicate-results buf)))))
+                       (and hycontrol--invert-display-buffer-predicates
+                            (not (eq 
hycontrol--invert-display-buffer-predicates 'ignore))
+                            (eval (cons 'or 
(hycontrol-display-buffer-predicate-results buf))))))
+      ;; Buffer is not one to display, get the next one and test again.
+      (setq buf (car hycontrol--buffer-list-pointer)
+           hycontrol--buffer-list-pointer (cdr 
hycontrol--buffer-list-pointer)))
+    (cond (buf
+          (set-window-buffer window buf))
+         (t
+          ;; Start 2nd or greater pass through buffer list with predicates 
inverted.
+          (hycontrol-window-display-buffer window)))))
+
+
+(defun hycontrol-message (max-msgs &rest msg-args)
+  "Log MAX-MSGS, adding MSG to the *Messages* buffer log."
+  (let ((message-log-max max-msgs))
+    (apply #'message msg-args)))
+
+(defun hycontrol-user-error (max-msgs &rest err)
+  "Log MAX-MSGS, adding ERR to the *Messages* buffer log; display ERR for 2 
seconds."
+  (let ((message-log-max max-msgs))
+    (beep)
+    (apply #'message err)
+    (sit-for 2)))
+
 ;;; ************************************************************************
 ;;; Public functions
 ;;; ************************************************************************
 
+;;; HyControl Global Minor Modes
+
 ;;;###autoload
-(defun hycontrol-frames (&optional arg debug)
-  "Interactively delete, jump to, move, replicate, and resize frames.
-With optional numeric prefix ARG, move and resize by ARG (an integer) units.
-If ARG = -1 or optional DEBUG is non-nil, debugging is enabled and
-unhandled events are logged to the *Messages* buffer.  If ARG is < 1, it is
-set to 1.  If it is > `hycontrol-maximum-units', it is set to
-`hycontrol-maximum-units'."
+(defun hycontrol-enable-frames-mode (&optional arg)
+  "Globally enable HyControl Frames mode for rapid Emacs frame control.
+
+  Interactively delete, jump to, move, replicate, and resize frames.
+With optional numeric prefix ARG, move and resize by ARG (an
+integer) units.  If ARG is < 1, it is set to 1.  If it is >
+`hycontrol-maximum-units', it is set to `hycontrol-maximum-units'."
   (interactive "p")
-  (if (eq arg -1) (setq debug t))
-  (and debug (not (integerp debug)) (setq debug message-log-max))
-  (if (called-interactively-p 'interactive) (hycontrol-save-configurations))
-  (let ((message-log-max nil)
-       (resize-mini-windows t) ;; automatically shrink
-       (use-dialog-box) ;; prevent y-or-n dialog boxes
-       e w)
-    (if (catch 'done
-         (cond ((or (not (integerp arg)) (< arg 1))
-                (setq arg 1))
-               ((> arg hycontrol-maximum-units)
-                (setq arg hycontrol-maximum-units)))
-         (while t
-           (message
-            (concat
-             "FRAME: (h=heighten, s=shorten, w=widen, n=narrow, %%/H/W=screen 
%%age, arrow=move frame) by %d unit%s, .=clear units\n"
-             ;; "c=cycle to edges, keypad=to edges, d/^/D=delete/iconify 
frame/others, o/O=other win/frame, [/]=create frame, (/)=save/restore fconfig\n"
-             "c=cycle to edges, keypad=to edges, d/D=delete frame/others, 
o/O=other win/frame, [/]=create frame, (/)=save/restore fconfig\n"
-             "i/j/k/m=expand to edges, -=min frame, +=max frame, 
u/b/~=un/bury/swap bufs, Z/z=zoom in/out, t=to win control, q=quit")
-            ;; No room to include this binding in the message: ==frames same 
size
-            arg
-            (if (= arg 1) "" "s"))
-           (condition-case ()
-               (progn
-                 (setq e (read-event))
-                 (cond
-                  ((memq e '(up down left right))
-                   (hycontrol-move-frame e arg))
-                  ((memq e '(kp-0 kp-1 kp-2 kp-3 kp-4 kp-5 kp-6 kp-7 kp-8 
kp-9))
-                   (hycontrol-numeric-keypad e arg))
-                  ((eq e ?.) (setq arg 0) (hycontrol-frame-to-screen-edges 0)) 
;; Clear arg
-                  ((eq e ?b) (bury-buffer))
-                  ((eq e ?c) (hycontrol-frame-to-screen-edges))
-                  ((eq e ?d) (delete-frame))
-                  ((eq e ?D) (hycontrol-delete-other-frames))
-                  ((eq e ?\C-g) (keyboard-quit))
-                  ((eq e ?%) (hycontrol-frame-percentage-of-screen arg))
-                  ((eq e ?H) (hycontrol-frame-height-percentage-of-screen arg))
-                  ((eq e ?W) (hycontrol-frame-width-percentage-of-screen arg))
-                  ((eq e ?h) (set-frame-height nil (+ (frame-height) arg)))
-                  ((eq e ?i) (hycontrol-frame-expand-to-top))
-                  ((eq e ?j) (hycontrol-frame-expand-to-left))
-                  ((eq e ?k) (hycontrol-frame-expand-to-right))
-                  ((eq e ?m) (hycontrol-frame-expand-to-bottom))
-                  ((eq e ?n) (set-frame-width nil (- (frame-width) arg)))
-                  ((eq e ?o) (setq w (selected-window)) (other-window arg) (if 
(eq w (selected-window)) (other-window 1)))
-                  ((eq e ?O) (setq w (selected-window)) (other-frame arg) (if 
(eq w (selected-window)) (other-frame 1)))
-                  ((memq e (list ?q (aref (kbd "<escape>") 0))) (throw 'done 
t))
-                  ((eq e ?s) (set-frame-height nil (- (frame-height) arg)))
-                  ((eq e ?t) (throw 'done nil))
-                  ((eq e ?u) (unbury-buffer))
-                  ((eq e ?w) (set-frame-width nil (+ (frame-width) arg)))
-                  ((eq e ?Z) (if (> arg 9) (setq arg 1)) (hycontrol-frame-zoom 
'zoom-frm-in arg debug))
-                  ((eq e ?z) (if (> arg 9) (setq arg 1)) (hycontrol-frame-zoom 
'zoom-frm-out arg debug))
-                  ((memq e '(?\[ ?\])) (hycontrol-make-frame))
-                  ((eq e ?\() (call-interactively 
'hycontrol-save-frame-configuration))
-                  ((eq e ?\)) (hycontrol-restore-frame-configuration))
-                  ;; Something in this command's event handling slows down
-                  ;; frame iconification under Mac OS X 100-fold, so
-                  ;; don't enable it until this issue is resolved.
-                  ;; ((eq e ?^)  (iconify-frame))
-                  ((eq e ?~) (or (hycontrol-frame-swap-buffers) 
(hycontrol-window-swap-buffers)
-                                 (hycontrol-user-error debug "(HyControl): 
There must be only two windows on screen to swap buffers.")))
-                  ((eq e ?-) (hycontrol-frame-minimize-lines))
-                  ((eq e ?+) (toggle-frame-maximized))
-                  ((eq e ?=)
-                   (and (> (length (visible-frame-list)) 1)
-                        (y-or-n-p "Resize all other frames to the size of the 
selected frame?")
-                        (mapc (lambda (f) (set-frame-size f (frame-width) 
(frame-height))) (visible-frame-list))))
-                  ((eq e ?\C-u)
-                   (setq arg (* arg 4))
-                   (if (> arg hycontrol-maximum-units) (setq arg 4)))
-                  ((and (integerp e) (>= e ?0) (<= e ?9))
-                   (setq arg (+ (* arg 10) (- e ?0)))
-                   (if (> arg hycontrol-maximum-units) (setq arg (- e ?0))))
-                  ((hycontrol-handle-event e))
-                  (t (beep)
-                     (if debug (hycontrol-message debug "(HyDebug): 
Frame/window unhandled event - %s" e))))
-                 (discard-input))
-             (error (if debug (hycontrol-message debug "(HyDebug): 
Frame/window unhandled event - %s" e))
-                    (discard-input)
-                    (beep)))))
-       (message "Finished controlling frames")
-      (hycontrol-windows arg debug))))
+  (hycontrol-disable-modes)
+  (hycontrol-frames-mode (if (and (integerp arg) (>= arg 1)) arg 1)))
 
 ;;;###autoload
-(defun hycontrol-windows (&optional arg debug)
-  "Interactively delete, jump to, rebalance, resize, and split windows.
-With optional numeric prefix ARG, move and resize by ARG (an integer) units.
-If ARG = -1 or optional DEBUG is non-nil, debugging is enabled and
-unhandled events are logged to the *Messages* buffer.  If ARG is < 1, it is
-set to 1.  If it is > `hycontrol-maximum-units', it is set to
+(defun hycontrol-enable-windows-mode (&optional arg)
+  "Globally enable HyControl Windows mode for rapid Emacs window control.
+
+Interactively delete, jump to, rebalance, resize, and split windows.
+Optional non-negative numeric prefix ARG is used as the number of
+units for commands issued while the mode is active.  If ARG is < 1, it
+is set to 1.  If it is > `hycontrol-maximum-units', it is set to
 `hycontrol-maximum-units'."
   (interactive "p")
-  (if (eq arg -1) (setq debug t))
-  (and debug (not (integerp debug)) (setq debug message-log-max))
-  (if (called-interactively-p 'interactive) (hycontrol-save-configurations))
-  (let ((message-log-max nil)
-       (resize-mini-windows t) ;; automatically shrink
-       (use-dialog-box) ;; prevent y-or-n dialog boxes
-       e w)
-    (if (catch 'done
-         (cond ((or (not (integerp arg)) (< arg 1))
-                (setq arg 1))
-               ((> arg hycontrol-maximum-units)
-                (setq arg hycontrol-maximum-units)))
-         (while t
-           (message
-            (concat
-             "WINDOW: (h=heighten, s=shorten, w=widen, n=narrow, arrow=move 
frame) by %d unit%s, .=clear units\n"
-             "d/D=delete win/others, o/O=other win/frame, [/]=split win 
atop/sideways, (/)=save/restore wconfig\n"
-             "f=win to own frame, -=min win,+=max win, u/b/~=un/bury/swap 
bufs, Z/z=zoom in/out, t=to frame control, q=quit")
-            ;; No room to include this binding in the message: ==wins same size
-            arg
-            (if (= arg 1) "" "s"))
-           (condition-case ()
-               (progn
-                 (setq e (read-event))
-                 (cond
-                  ((memq e '(up down left right))
-                   (hycontrol-move-frame e arg))
-                  ((eq e ?.) (setq arg 0)) ;; Clear arg
-                  ((eq e ?b) (bury-buffer))
-                  ;; ((memq e '(?d ?^)) (delete-window))
-                  ((eq e ?d) (delete-window))
-                  ((eq e ?D) (hycontrol-delete-other-windows))
-                  ((eq e ?f) (hycontrol-window-to-frame))
-                  ((eq e ?\C-g) (keyboard-quit))
-                  ((eq e ?h) (enlarge-window arg))
-                  ((eq e ?n) (shrink-window-horizontally arg))
-                  ((eq e ?o) (setq w (selected-window)) (other-window arg) (if 
(eq w (selected-window)) (other-window 1)))
-                  ((eq e ?O) (setq w (selected-window)) (other-frame arg) (if 
(eq w (selected-window)) (other-frame 1)))
-                  ((memq e (list ?q (aref (kbd "<escape>") 0))) (throw 'done 
t))
-                  ((eq e ?s) (shrink-window arg))
-                  ((eq e ?t) (throw 'done nil))
-                  ((eq e ?u) (unbury-buffer))
-                  ((eq e ?w) (enlarge-window-horizontally arg))
-                  ((and (eq e ?Z) (fboundp 'text-scale-increase))
-                   ;; Emacs autoloaded function
-                   (text-scale-increase (if (< arg 10) arg (setq arg 1))))
-                  ((and (eq e ?z) (fboundp 'text-scale-decrease))
-                   ;; Emacs autoloaded function
-                   (text-scale-decrease (if (< arg 10) arg (setq arg 1))))
-                  ((eq e ?\[) (split-window-vertically))
-                  ((eq e ?\]) (split-window-horizontally))
-                  ((eq e ?\() (call-interactively 
'hycontrol-save-window-configuration))
-                  ((eq e ?\)) (hycontrol-restore-window-configuration))
-                  ((eq e ?~) (or (hycontrol-window-swap-buffers) 
(hycontrol-frame-swap-buffers)
-                                 (hycontrol-user-error debug "(HyControl): 
There must be only two windows on screen to swap buffers.")))
-                  ((eq e ?-) (hycontrol-window-minimize-lines))
-                  ((eq e ?+) (hycontrol-window-maximize-lines))
-                  ((eq e ?=)
-                   (and (> (length (window-list)) 1)
-                        (y-or-n-p "Resize windows evenly across this frame?")
-                        (balance-windows)))
-                  ((eq e ?\C-u)
-                   (setq arg (* arg 4))
-                   (if (> arg hycontrol-maximum-units) (setq arg 4)))
-                  ((and (integerp e) (>= e ?0) (<= e ?9))
-                   (setq arg (+ (* arg 10) (- e ?0)))
-                   (if (> arg hycontrol-maximum-units) (setq arg (- e ?0))))
-                  ((hycontrol-handle-event e))
-                  (t (beep)
-                     (if debug (hycontrol-message debug "(HyDebug): 
Frame/window unhandled event - %s" e))))
-                 (discard-input))
-             (error (if debug (hycontrol-message debug "(HyDebug): 
Frame/window unhandled event - %s" e))
-                    (beep)
-                    (discard-input)))))
-       (message "Finished controlling windows")
-      (hycontrol-frames arg debug))))
+  (hycontrol-disable-modes)
+  (hycontrol-windows-mode (if (and (integerp arg) (>= arg 1)) arg 1)))
+
+(defun hycontrol-disable-modes ()
+  "Disable HyControl Frames and Windows modes when active."
+  (interactive)
+  (if (or hycontrol-frames-mode hycontrol-windows-mode)
+      (hycontrol-invert-mode-line))
+  (hycontrol-frames-mode -1)
+  (hycontrol-windows-mode -1))
+
+(defun hycontrol-abort-mode ()
+  "Abort HyControl, typically on a press of {C-g}."
+  (interactive)
+  (hycontrol-disable-modes)
+  (keyboard-quit))
+
+(defun hycontrol-quit-frames-mode ()
+  "Globally quit HyControl Frames mode, typically on a press of {q}."
+  (interactive)
+  (hycontrol-disable-modes)
+  (message "Finished controlling frames"))
+
+(defun hycontrol-quit-windows-mode ()
+  "Globally quit HyControl Windows mode, typically on a press of {q}."
+  (interactive)
+  (hycontrol-disable-modes)
+  (message "Finished controlling windows"))
+
+;;;###autoload
+(define-global-minor-mode hycontrol-frames-mode hycontrol-local-frames-mode
+  (lambda () (hycontrol-local-frames-mode 1)))
+
+;; These hooks run by the generated `hycontrol-frames-mode' function
+;; do the global work of turning on and off the mode.
+(add-hook 'hycontrol-frames-mode-on-hook
+         (lambda () (hycontrol-frames current-prefix-arg)))
+
+(add-hook 'hycontrol-frames-mode-off-hook 'hycontrol-end-mode)
+
+;; This just sets the keymap locally and shows the minor mode
+;; indicator in the buffer's mode-line; the separate global minor mode
+;; turns things on and off.
+(define-minor-mode hycontrol-local-frames-mode
+  "Toggle Hyperbole Frames control minor mode in the current buffer."
+  nil " HyFrm" nil
+  :group 'hyperbole-screen
+  :global t)
+
+;;;###autoload
+(define-global-minor-mode hycontrol-windows-mode hycontrol-local-windows-mode
+  (lambda () (hycontrol-local-windows-mode 1)))
+
+;; These hooks run by the generated `hycontrol-windows-mode' function
+;; do the global work of turning on and off the mode.
+(add-hook 'hycontrol-windows-mode-on-hook
+         (lambda () (hycontrol-windows current-prefix-arg)))
+
+(add-hook 'hycontrol-windows-mode-off-hook 'hycontrol-end-mode)
+
+;; This just sets the keymap locally and shows the minor mode
+;; indicator in the buffer's mode-line; the separate global minor mode
+;; turns things on and off.
+(define-minor-mode hycontrol-local-windows-mode
+  "Toggle Hyperbole Windows control minor mode in the current buffer."
+  nil " HyWin" nil
+  :group 'hyperbole-screen
+  :global t)
+
 
 ;;; Frame Display Commands
+(defun hycontrol-delete-other-frames ()
+  "Confirm and then delete all other frames."
+  (interactive)
+  (if (y-or-n-p "Delete all frames on this screen other than the selected 
one?")
+      (delete-other-frames)))
+
 (defun hycontrol-frame-swap-buffers ()
   "Swap the buffers displayed by each of two frames and return t.
 The selected frame may have multiple windows; the selected window is
@@ -343,6 +942,21 @@ nothing and return nil."
 
 ;;; Frame Relocation Commands
 
+(defconst hycontrol--vnk-string
+  "(Virtual   7 8 9   Enter a digit to
+ Numeric   4 5 6   move the frame
+ Keypad)   1 2 3   to that quadrant"
+  "HyControl prompt string for virtual numeric keypad (emulate keypad when not 
available)")
+
+(defun hycontrol-virtual-numeric-keypad (arg)
+  (catch 'quit
+    (let (e)
+      (while (and (setq e (read-char hycontrol--vnk-string))
+                 (not (when (memq e '(?q ?\C-g)) (throw 'quit nil)))
+                 (or (not (numberp e)) (< e ?0) (> e ?9)))
+       (beep))
+      (hycontrol-numeric-keypad (- e ?0) arg))))
+
 (defun hycontrol-frame-to-screen-edges (&optional arg)
   "Cycle the selected frame's position clockwise through the middle of edges 
and corners of the screen; once per call.
 With an optional arg of 0, just reset the cycle position to 0."
@@ -362,130 +976,223 @@ With an optional arg of 0, just reset the cycle 
position to 0."
 (defun hycontrol-frame-to-bottom ()
   "Move the selected frame to the bottom of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (car (frame-position))
-                     (- (display-pixel-height) (hycontrol-frame-height)
-                        hycontrol-screen-bottom-offset)))
+  (hycontrol-set-frame-position
+   nil (car (frame-position))
+   (- (display-pixel-height) (hycontrol-frame-height)
+      hycontrol-screen-bottom-offset)))
 
 (defun hycontrol-frame-to-left ()
   "Move the selected frame to the left of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil hycontrol-screen-left-offset (cdr (frame-position))))
+  (hycontrol-set-frame-position nil hycontrol-screen-left-offset (cdr 
(frame-position))))
 
 (defun hycontrol-frame-to-right ()
   "Move the selected frame to the right of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (- (display-pixel-width) (hycontrol-frame-width)
-                        hycontrol-screen-right-offset)
-                     (cdr (frame-position))))
+  (hycontrol-set-frame-position
+   nil (- (display-pixel-width) (hycontrol-frame-width)
+         hycontrol-screen-right-offset)
+   (cdr (frame-position))))
+
+(defun hycontrol-frame-fit-to-screen (&optional frame x-origin y-origin)
+  "Ensure the selected frame fits within the screen, allowing for 
hycontrol-screen-*-offsets.
+Accepts optional arguments FRAME, X-ORIGIN, and Y-ORIGIN (in pixels) to use 
when resizing FRAME (defaults to selected frame)."
+  (let ((max-width (- (display-pixel-width) hycontrol-screen-left-offset 
hycontrol-screen-right-offset 2))
+       (max-height (- (display-pixel-height) hycontrol-screen-top-offset 
hycontrol-screen-bottom-offset 2))
+       (frame-resize-pixelwise t))
+    (setq x-origin (or x-origin (hycontrol-frame-x-origin frame))
+         y-origin (or y-origin (hycontrol-frame-y-origin frame)))
+    (when (> (hycontrol-frame-width frame) max-width)
+      ;; Adjust frame size to fit within screen
+      (set-frame-width frame (min (hycontrol-frame-width frame) max-width) nil 
t)
+      (if hycontrol-debug (hycontrol-message hycontrol-debug "(HyDebug): 
Screen (X,Y): %d, %d; Frame Edges (L,T,R,B): %s"
+                                             (display-pixel-width) 
(display-pixel-height) (hycontrol-frame-edges frame))))
+    (when (> (hycontrol-frame-height frame) max-height)
+      ;; Adjust frame size to fit within screen
+      (set-frame-height frame (min (hycontrol-frame-height frame) max-height) 
nil t)
+      (if hycontrol-debug (hycontrol-message hycontrol-debug "(HyDebug): 
Screen (X,Y): %d, %d; Frame Edges (L,T,R,B): %s"
+                                  (display-pixel-width) (display-pixel-height) 
(hycontrol-frame-edges frame))))
+    ;; Ensure entire frame is positioned onscreen, keeping the
+    ;; original frame origin coordinates if possible.
+    (set-frame-position frame
+                       (min (max 0 x-origin) 
+                            (- (display-pixel-width) (hycontrol-frame-width 
frame) hycontrol-screen-right-offset))
+                       (min (max 0 y-origin)
+                            (- (display-pixel-height) (hycontrol-frame-height 
frame) hycontrol-screen-bottom-offset)))
+    (if hycontrol-debug (hycontrol-message hycontrol-debug "(HyDebug): Screen 
(X,Y): %d, %d; Frame Edges (L,T,R,B): %s"
+                                           (display-pixel-width) 
(display-pixel-height) (hycontrol-frame-edges frame)))))
 
 
 (defun hycontrol-frame-to-top ()
   "Move the selected frame to the top of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil (car (frame-position)) hycontrol-screen-top-offset))
+  (hycontrol-set-frame-position nil (car (frame-position)) 
hycontrol-screen-top-offset))
 
 (defun hycontrol-frame-to-bottom-center ()
   "Move the selected frame to the center of the bottom of the screen, allowing 
for hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (round (/ (- (display-pixel-width) 
(hycontrol-frame-width)) 2))
-                     (- (display-pixel-height) (hycontrol-frame-height)
-                        hycontrol-screen-bottom-offset)))
+  (hycontrol-set-frame-position
+   nil (round (/ (- (display-pixel-width) (hycontrol-frame-width)) 2))
+   (- (display-pixel-height) (hycontrol-frame-height)
+      hycontrol-screen-bottom-offset)))
 
 (defun hycontrol-frame-to-center ()
   "Move the selected frame to the center of the screen."
   (interactive)
-  (set-frame-position nil
-                     (round (/ (- (display-pixel-width) 
(hycontrol-frame-width)) 2))
-                     (round (/ (- (display-pixel-height) 
(hycontrol-frame-height)) 2))))
+  (hycontrol-set-frame-position
+   nil
+   (round (/ (- (display-pixel-width) (hycontrol-frame-width)) 2))
+   (round (/ (- (display-pixel-height) (hycontrol-frame-height)) 2))))
 
 
 (defun hycontrol-frame-to-left-center ()
   "Move the selected frame to the center of the left of the screen, allowing 
for hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil hycontrol-screen-left-offset (round (/ (- 
(display-pixel-height) (hycontrol-frame-height)) 2))))
+  (hycontrol-set-frame-position
+   nil hycontrol-screen-left-offset (round (/ (- (display-pixel-height) 
(hycontrol-frame-height)) 2))))
 
 (defun hycontrol-frame-to-right-center ()
   "Move the selected frame to the center of the right of the screen, allowing 
for hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (- (display-pixel-width) (hycontrol-frame-width)
-                        hycontrol-screen-right-offset)
-                     (round (/ (- (display-pixel-height) 
(hycontrol-frame-height)) 2))))
+  (hycontrol-set-frame-position
+   nil (- (display-pixel-width) (hycontrol-frame-width)
+         hycontrol-screen-right-offset)
+   (round (/ (- (display-pixel-height) (hycontrol-frame-height)) 2))))
 
 (defun hycontrol-frame-to-top-center ()
   "Move the selected frame to the center of the top of the screen, allowing 
for hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil (round (/ (- (display-pixel-width) 
(hycontrol-frame-width)) 2)) hycontrol-screen-top-offset))
+  (hycontrol-set-frame-position nil (round (/ (- (display-pixel-width) 
(hycontrol-frame-width)) 2)) hycontrol-screen-top-offset))
 
 (defun hycontrol-frame-to-bottom-left ()
   "Move the selected frame to the bottom left of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     hycontrol-screen-left-offset
-                     (- (display-pixel-height) (hycontrol-frame-height)
-                        hycontrol-screen-bottom-offset)))
+  (hycontrol-set-frame-position nil
+                               hycontrol-screen-left-offset
+                               (- (display-pixel-height) 
(hycontrol-frame-height)
+                                  hycontrol-screen-bottom-offset)))
 
 (defun hycontrol-frame-to-bottom-right ()
   "Move the selected frame to the bottom right of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (- (display-pixel-width) (hycontrol-frame-width)
-                        hycontrol-screen-right-offset)
-                     (- (display-pixel-height) (hycontrol-frame-height)
-                        hycontrol-screen-bottom-offset)))
+  (hycontrol-set-frame-position
+   nil
+   (- (display-pixel-width) (hycontrol-frame-width) 
hycontrol-screen-right-offset)
+   (- (display-pixel-height) (hycontrol-frame-height) 
hycontrol-screen-bottom-offset)))
 
 ;; Frame Resizing
 
 (defun hycontrol-frame-to-top-left ()
   "Move the selected frame to the top left of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil hycontrol-screen-left-offset 
hycontrol-screen-top-offset))
+  (hycontrol-set-frame-position nil hycontrol-screen-left-offset 
hycontrol-screen-top-offset))
 
 (defun hycontrol-frame-to-top-right ()
   "Move the selected frame to the top right of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (- (display-pixel-width) (hycontrol-frame-width)
-                        hycontrol-screen-right-offset)
-                     hycontrol-screen-top-offset))
+  (hycontrol-set-frame-position
+   nil (- (display-pixel-width) (hycontrol-frame-width)
+         hycontrol-screen-right-offset)
+   hycontrol-screen-top-offset))
 
 ;;; Frame Resizing Commands
-(defun hycontrol-frame-expand-to-bottom ()
-  "Expand the selected frame to the bottom of the screen, allowing for 
hycontrol-screen-*-offsets."
-  (interactive)
-  (let ((frame-resize-pixelwise t))
-    (set-frame-height nil (- (display-pixel-height) (cdr (frame-position)) 
hycontrol-screen-bottom-offset)
-                     nil t)))
-
-(defun hycontrol-frame-expand-to-left ()
-  "Expand the selected frame to the left of the screen, allowing for 
hycontrol-screen-*-offsets."
-  (interactive)
+(defun hycontrol-frame-resize-percentage (arg)
+  "ARG should be between 0 and 100.  0 means don't resize (return 1).
+1 is the default value which means cut the frame along the given dimension
+in half (return 0.5).  2-100 is converted to a percentage to multiply by.
+Over 100 is set to 100.  Under 0 is set to 0.  Floats between 0 and 1
+are taken as percentages and used.  Other floats are rounded.
+non-integer arguments are ignored and the default value is used."
+  (cond ((numberp arg)
+        (cond 
+         ((= arg 0) 1)
+         ((= arg 1) 0.5)
+         ((and (> arg 1) (<= arg 100)) (/ arg 100.0))
+         ((< arg 0) 0)
+         ((> arg 100) 1)))
+       (t (hycontrol-frame-resize-percentage 1))))
+
+(defun hycontrol-frame-resize-arg (arg)
+  "Inverse result of `hycontrol-frame-resize-percentage' to provide feedback 
on any argument value adjustment."
+  (pcase arg
+    (0 0)
+    (1 1)
+    (50 1)
+    ;; Arg must be a percentage, scale it so not fractional.
+    ((pred numberp) (round (* arg 100)))
+    (_ 1)))
+
+(defun hycontrol-frame-resize-to-bottom (&optional arg)
+  "Expand the selected frame to the bottom of the screen, allowing for 
hycontrol-screen-*-offsets.
+If already at the bottom, adjust its height to ARG percent of the screen (50% 
by default
+if ARG is 1 or nil) but keep it at the bottom of the screen."
+  (interactive "p")
+  (setq arg (hycontrol-frame-resize-percentage arg))
   (let ((frame-resize-pixelwise t))
-    (set-frame-width nil (round (- (+ (hycontrol-frame-width) (car 
(frame-position)))
-                                  (* 2.5 (frame-scroll-bar-width))
-                                  hycontrol-screen-left-offset))
-                    nil t)
-    (set-frame-position nil hycontrol-screen-left-offset (cdr 
(frame-position)))))
-
-(defun hycontrol-frame-expand-to-right ()
-  "Expand the selected frame to the right of the screen, allowing for 
hycontrol-screen-*-offsets."
-  (interactive)
+    (if (hycontrol-frame-at-bottom-p)
+       ;; Reduce frame height to ARG percent, keeping bottom side fixed.
+       (set-frame-height nil (min (floor (* (frame-pixel-height) arg))
+                                  (hycontrol-frame-height))
+                         nil t)
+      ;; Expand frame height all the way to the bottom, keeping top side fixed.
+      (set-frame-height nil (- (display-pixel-height) (cdr (frame-position)) 
hycontrol-screen-bottom-offset)
+                       nil t))
+    (hycontrol-frame-to-bottom))
+  (hycontrol-frame-resize-arg arg))
+
+(defun hycontrol-frame-resize-to-left (&optional arg)
+  "Expand the selected frame to the left of the screen, allowing for 
hycontrol-screen-*-offsets.
+If already at the left, adjust its width to ARG percent of the screen (50% by 
default
+if ARG is 1 or nil) but keep it at the left of the screen."
+  (interactive "p")
+  (setq arg (hycontrol-frame-resize-percentage arg))
   (let ((frame-resize-pixelwise t))
-    (set-frame-width nil (round (- (display-pixel-width) (car (frame-position))
-                                  (* 2.5 (frame-scroll-bar-width))
-                                  hycontrol-screen-right-offset))
-                    nil t)))
-  
-(defun hycontrol-frame-expand-to-top ()
-  "Expand the selected frame to the top of the screen, allowing for 
hycontrol-screen-*-offsets."
-  (interactive)
+    (if (hycontrol-frame-at-left-p)
+       ;; Reduce frame width to ARG percent, keeping left side fixed.
+       (set-frame-width nil (floor (* (frame-pixel-width) arg)) nil t)
+      ;; Expand frame width all the way to the left, keeping right side fixed.
+      (set-frame-width nil (floor (- (+ (hycontrol-frame-width) (car 
(frame-position)))
+                                    (* 2.5 (frame-scroll-bar-width))
+                                    hycontrol-screen-left-offset))
+                      nil t))
+    (hycontrol-frame-to-left))
+  (hycontrol-frame-resize-arg arg))
+
+(defun hycontrol-frame-resize-to-right (&optional arg)
+  "Expand the selected frame to the right of the screen, allowing for 
hycontrol-screen-*-offsets.
+If already at the right, adjust its width to ARG percent of the screen (50% by 
default
+if ARG is 1 or nil) but keep it at the right of the screen."
+  (interactive "p")
+  (setq arg (hycontrol-frame-resize-percentage arg))
   (let ((frame-resize-pixelwise t))
-    (set-frame-height nil (- (+ (cdr (frame-position)) 
(hycontrol-frame-height)) hycontrol-screen-top-offset)
-                     nil t)
-    (set-frame-position nil (car (frame-position)) 
hycontrol-screen-top-offset)))
+    (if (hycontrol-frame-at-right-p)
+       ;; Reduce frame width to ARG percent, keeping right side fixed.
+       (set-frame-width nil (floor (* (frame-pixel-width) arg)) nil t)
+      ;; Expand frame width all the way to the right, keeping left side fixed.
+      (set-frame-width nil (floor (- (display-pixel-width) (car 
(frame-position))
+                                    (* 2.5 (frame-scroll-bar-width))
+                                    hycontrol-screen-right-offset))
+                      nil t))
+    (hycontrol-frame-to-right))
+  (hycontrol-frame-resize-arg arg))
+
+(defun hycontrol-frame-resize-to-top (&optional arg)
+  "Expand the selected frame to the top of the screen, allowing for 
hycontrol-screen-*-offsets.
+If already at the top, adjust its height to ARG percent of the screen (50% by 
default
+if ARG is 1 or nil) but keep it at the top of the screen."
+  (interactive "p")
+  (setq arg (hycontrol-frame-resize-percentage arg))
+  (let ((frame-resize-pixelwise t)
+       (top (nth 1 (hycontrol-frame-edges))))
+    (if (hycontrol-frame-at-top-p)
+       ;; Reduce frame height to ARG percent, keeping top side fixed.
+       (set-frame-height nil (floor (* (frame-pixel-height) arg)) nil t)
+      ;; Expand frame height all the way to the top, keeping bottom side fixed.
+      (set-frame-height nil (- (+ (cdr (frame-position)) 
(hycontrol-frame-height)) hycontrol-screen-top-offset)
+                       nil t))
+    (hycontrol-frame-to-top))
+  (hycontrol-frame-resize-arg arg))
+
 
 (defun hycontrol-frame-minimize-lines ()
   "Shrink the frame to its approximate smallest number of lines to display all 
existing windows."
@@ -498,44 +1205,359 @@ With an optional arg of 0, just reset the cycle 
position to 0."
            (window-list nil 'nomini)))
     (set-frame-height nil l)))
 
-(defun hycontrol-frame-height-percentage-of-screen (percent)
-  "Resize the selected frame's height to be approximately PERCENT of the 
screen."
-  (interactive "nResize frame height to be this percent of the screen (1-100): 
")
-  (hycontrol-frame-percentage-of-screen percent 'height))
-
 (defun hycontrol-frame-percentage-of-screen (percent &optional dimension)
   "Resize the selected frame to be approximately PERCENT of the screen.
 PERCENT may be given as a decimal percentage or a number between 0 and 100.
 Optional DIMENSION if given must be either of the symbols, height or
 width to affect only that dimension." 
   (interactive "nResize frame to be this percent of the screen (1-100): ")
-  (and (numberp percent) (>= percent 1)
-       (setq percent (/ percent 100.0)))
-  (if (and (numberp percent) (> percent 0) (<= percent 1))
-      (let ((frame-resize-pixelwise t))
+  (if (and (numberp percent)
+          (progn
+            ;; Normalize to a fractional percentage
+            (when (> percent 1)
+              (setq percent (/ percent 100.0)))
+            (setq percent (max (min (float percent) 0.998) 0.0))
+            (> percent 0.0)))
+      (let ((frame-resize-pixelwise t)
+           max-height
+           max-width)
        (cond ((eq dimension 'height)
-              (set-frame-height nil (round (* (- (display-pixel-height) 
hycontrol-screen-top-offset hycontrol-screen-bottom-offset)
-                                              percent)) nil t))
+              (set-frame-height
+               nil (min (floor (* (setq max-height (- (display-pixel-height) 
hycontrol-screen-top-offset hycontrol-screen-bottom-offset))
+                                  percent))
+                        max-height)
+               nil t))
              ((eq dimension 'width)
-              (set-frame-width nil (round (* (- (display-pixel-width)
-                                                (* 2.5 
(frame-scroll-bar-width))
-                                                hycontrol-screen-left-offset 
hycontrol-screen-right-offset)
-                                             percent)) nil t))
-             (t (set-frame-size nil (round (* (- (display-pixel-width)
-                                                 (* 2.5 
(frame-scroll-bar-width))
-                                                 hycontrol-screen-left-offset 
hycontrol-screen-right-offset)
-                                              percent))
-                                (round (* (- (display-pixel-height) 
hycontrol-screen-top-offset hycontrol-screen-bottom-offset)
-                                          percent))
-                                t))))
-    (error "(hycontrol-frame-fraction-of-screen): `%s', must be a percent 
value between 0 and 100." percent)))
+              (set-frame-width
+               nil (min (floor (* (setq max-width (- (display-pixel-width)
+                                                     (* 2.5 
(frame-scroll-bar-width))
+                                                     
hycontrol-screen-left-offset hycontrol-screen-right-offset))
+                                  percent))
+                        max-width)
+               nil t))
+             (t (set-frame-size
+                 nil (min (floor (* (setq max-width (- (display-pixel-width)
+                                                       (* 2.5 
(frame-scroll-bar-width))
+                                                       
hycontrol-screen-left-offset hycontrol-screen-right-offset))
+                                    percent))
+                          max-width)
+                 (min (floor (* (setq max-height (- (display-pixel-height) 
hycontrol-screen-top-offset hycontrol-screen-bottom-offset))
+                                percent))
+                      max-height)
+                 t)))
+       ;; If resize has caused right or bottom edge to move
+       ;; offscreen, align these edges to the edge of the screen
+       ;; (moving the frame).
+       (when (> (+ (hycontrol-frame-x-origin) (hycontrol-frame-width))
+                (- (display-pixel-width) hycontrol-screen-right-offset))
+         (hycontrol-frame-to-right))
+       (when (> (+ (hycontrol-frame-y-origin) (hycontrol-frame-height))
+                (- (display-pixel-height) hycontrol-screen-bottom-offset))
+         (hycontrol-frame-to-bottom))
+       ;; Return the scaled percentage for setting as numeric argument.
+       (floor (* percent 100)))
+    (error "(hycontrol-frame-fraction-of-screen): `%s', must be a percent 
value above 0 and less than or equal to 100." percent)))
+
+(defun hycontrol-frame-height-percentage-of-screen (percent)
+  "Resize the selected frame's height to be approximately PERCENT of the 
screen."
+  (interactive "nResize frame height to be this percent of the screen (1-100): 
")
+  (hycontrol-frame-percentage-of-screen percent 'height))
 
 (defun hycontrol-frame-width-percentage-of-screen (percent)
   "Resize the selected frame's width to be approximately PERCENT of the 
screen."
   (interactive "nResize frame width to be this percent of the screen (1-100): 
")
   (hycontrol-frame-percentage-of-screen percent 'width))
 
+;;; Frame Cycle Common Sizes
+
+(defun hycontrol-set-width-percentage-full-height (width-percentage)
+  (hycontrol-frame-width-percentage-of-screen width-percentage)
+  (hycontrol-frame-height-percentage-of-screen 1))
+
+(defun hycontrol-set-height-percentage-full-width (height-percentage)
+  (hycontrol-frame-width-percentage-of-screen 1)
+  (hycontrol-frame-height-percentage-of-screen height-percentage))
+
+;;;###autoload
+(defun hycontrol-frame-adjust-widths ()
+  "Cycle through different common width adjustments of a frame.
+Widths are given in screen percentages by the list
+`hycontrol-frame-widths' and typically go from widest to narrowest."
+  (interactive)
+  (when (null hycontrol--frame-widths-pointer)
+    (setq hycontrol--frame-widths-pointer hycontrol-frame-widths))
+  (hycontrol-frame-width-percentage-of-screen
+   (car hycontrol--frame-widths-pointer))
+  (message "Screen Percentage: Width %.1f%%; Fixed Height %.1f%%"
+          (* 100.0 (car hycontrol--frame-widths-pointer))
+          (* 100.0 (/ (float (hycontrol-frame-height))
+                      (- (display-pixel-height) hycontrol-screen-top-offset 
hycontrol-screen-bottom-offset))))
+  (setq hycontrol--frame-widths-pointer
+       (cdr hycontrol--frame-widths-pointer)))
+
+;;;###autoload
+(defun hycontrol-frame-adjust-widths-full-height ()
+  "Cycle through different common widths adjustments of a frame after fixing 
its height full-screen.
+Widths are given in screen percentages by the list
+`hycontrol-frame-widths' and typically go from widest to narrowest."
+  (interactive)
+  (when (null hycontrol--frame-widths-pointer)
+    (setq hycontrol--frame-widths-pointer hycontrol-frame-widths))
+  (hycontrol-set-width-percentage-full-height
+   (car hycontrol--frame-widths-pointer))
+  (message "Screen Percentage: Width %.1f%%; Fixed Height %d%%"
+          (* (car hycontrol--frame-widths-pointer) 100.0) 100)
+  (setq hycontrol--frame-widths-pointer
+       (cdr hycontrol--frame-widths-pointer)))
+
+;;;###autoload
+(defun hycontrol-frame-adjust-heights ()
+  "Cycle through different common height adjustments of a frame.
+Heights are given in screen percentages by the list
+`hycontrol-frame-heights' and typically go from tallest to shortest."
+  (interactive)
+  (when (null hycontrol--frame-heights-pointer)
+    (setq hycontrol--frame-heights-pointer hycontrol-frame-heights))
+  (hycontrol-frame-height-percentage-of-screen
+   (car hycontrol--frame-heights-pointer))
+  (message "Screen Percentage: Fixed Width %.1f%%; Height %.1f%%"
+          (* 100.0 (/ (float (hycontrol-frame-width))
+                      (- (display-pixel-width)
+                         hycontrol-screen-left-offset 
hycontrol-screen-right-offset)))
+          (* 100.0 (car hycontrol--frame-heights-pointer)))
+  (setq hycontrol--frame-heights-pointer
+       (cdr hycontrol--frame-heights-pointer)))
+
+;;;###autoload
+(defun hycontrol-frame-adjust-heights-full-width ()
+  "Cycle through different common height adjustments of a frame after fixing 
its width full-screen.
+Heights are given in screen percentages by the list
+`hycontrol-frame-heights' and typically go from tallest to shortest."
+  (interactive)
+  (when (null hycontrol--frame-heights-pointer)
+    (setq hycontrol--frame-heights-pointer hycontrol-frame-heights))
+  (hycontrol-set-height-percentage-full-width
+   (car hycontrol--frame-heights-pointer))
+  (message "Screen Percentage: Fixed Width %d%%; Height %.1f%%"
+          100 (* (car hycontrol--frame-heights-pointer) 100.0))
+  (setq hycontrol--frame-heights-pointer
+       (cdr hycontrol--frame-heights-pointer)))
+
+;;; Frame Configuratons
+
+(defun hycontrol-restore-frame-configuration ()
+  (interactive)
+  (when (and (y-or-n-p "Restore previously saved configuration of all frames?")
+            (frame-configuration-p hycontrol--fconfig))
+    (set-frame-configuration hycontrol--fconfig)))
+
+(defun hycontrol-save-frame-configuration ()
+  (interactive)
+  (setq hycontrol--fconfig (current-frame-configuration))
+  (if (called-interactively-p 'interactive)
+      (minibuffer-message "(Hyperbole): Saved configuration of all frames")))
+
+(defun hycontrol-save-configurations ()
+  (interactive)
+  (hycontrol-save-frame-configuration)
+  (hycontrol-save-window-configuration))
+
+
 ;;; Window Commands
+
+(defun hycontrol-invert-mode-line ()
+  "If `hycontrol-invert-mode-line-flag' is non-nil, invert the background and 
foreground faces of the selected window mode-line."
+  (when hycontrol-invert-mode-line-flag
+    (let* ((bg (face-background 'mode-line))
+          (fg (face-foreground 'mode-line)))
+      (set-face-foreground 'mode-line bg)
+      (set-face-background 'mode-line fg))
+    (force-mode-line-update t)))
+
+(defun hycontrol-windows-grid-buffer-list ()
+  "Return the existing frame's buffer list with any marked items prepended.
+Marked items are included when the current buffer is in Dired, Buffer
+Menu or IBuffer mode."
+  ;; If selecting buffers by major-mode, then ignore any marked items.
+  (if (and (boundp 'mode) (symbolp mode))
+      (buffer-list (selected-frame))
+    ;; Get the list of marked items if in an item list buffer and
+    ;; convert items to buffers.
+    (let ((items (cond ((and (derived-mode-p 'dired-mode)
+                            (mapcar #'find-file-noselect 
(dired-get-marked-files))))
+                      ((and (eq major-mode 'Buffer-menu-mode)
+                            (Buffer-menu-marked-buffers)))
+                      ((and (eq major-mode 'ibuffer-mode)
+                            (ibuffer-get-marked-buffers))))))
+      ;; Ignore buffer list predicate filters when items exist so the
+      ;; items are not filtered out.
+      (setq hycontrol--invert-display-buffer-predicates
+           (when items 'ignore))
+      ;; Prepend items to buffer list.
+      (apply 'set:create (nconc items (buffer-list (selected-frame)))))))
+
+;;;###autoload
+(defun hycontrol-windows-grid (arg)
+  "Display a grid of windows in the selected frame, sized according to prefix 
ARG.
+Left digit of ARG is the number of grid rows and the right digit is
+the number of grid columns.
+
+If ARG is 0, prompt for a major mode whose buffers should be
+displayed first in the grid windows, then prompt for the grid size.
+
+Otherwise, prompt for the grid size if ARG is an invalid size.
+
+With a current buffer in Dired, Buffer Menu or IBuffer mode that
+contains marked items, the buffers associated with those items
+are displayed first in the grid (unless ARG is 0).
+
+Then the most recently used buffers are displayed in each window,
+first selecting only those buffers which match any of the
+predicate expressions in `hycontrol-display-buffer-predicate-list'.
+\(The default predicate list chooses buffers with attached files).
+
+Then, if there are not enough buffers for all windows, the buffers
+that failed to match to any predicate are used.  In all cases, buffers
+whose names start with a space are ignored.
+
+When done, this resets the persistent prefix argument to 1 to
+prevent following commands from using the often large grid size
+argument."
+  (interactive "p")
+  (setq arg (abs (prefix-numeric-value (or arg current-prefix-arg))))
+  (if (/= arg 0)
+      (hycontrol-make-windows-grid arg)
+    (setq current-prefix-arg 0)
+    (call-interactively #'hycontrol-windows-grid-by-major-mode)))
+
+;;; Split selected frame into a grid of windows given by row and
+;;; column count, displaying different buffers in each window.
+;;;###autoload
+(defun hycontrol-windows-grid-by-major-mode (arg mode)
+  "Display a grid of windows in the selected frame, sized according to prefix 
ARG, with buffers of major MODE.
+Left digit of ARG is the number of grid rows and the right digit is
+the number of grid columns.
+
+See documentation of `hycontrol-windows-grid' for further details."
+  (interactive
+   (list (prefix-numeric-value current-prefix-arg)
+        (let* ((set:equal-op 'eq)
+               (mode-strings (mapcar 'symbol-name (apply #'set:create (mapcar 
(lambda (buf) (buffer-local-value 'major-mode buf))
+                                                                              
(hycontrol-windows-grid-buffer-list))))))
+          (intern-soft (completing-read "(HyControl Grid Windows): Major mode 
of buffers to display: "
+                                        mode-strings nil t (symbol-name 
major-mode))))))
+  (let ((hycontrol-display-buffer-predicate-list `((eq major-mode ',mode))))
+    (hycontrol-make-windows-grid arg)))
+
+;;;###autoload
+(defun hycontrol-windows-grid-repeatedly (&optional arg)
+  "Repeatedly display different window grid layouts according to prefix ARG 
prompted for each time.
+Left digit of ARG is the number of grid rows and the right digit is
+the number of grid columns. 
+
+See documentation of `hycontrol-windows-grid' for further details."
+  (interactive "p")
+  (catch 'done
+    (let (hycontrol-help-flag)
+      (while t
+       (while (not (or (eq arg 0) (and (integerp arg) (>= arg 11) (<= arg 
99))))
+         (setq arg (read-string "Display grid of ROW digit by COLUMN digit 
windows, e.g. 23 for 2R by 3C (RET to quit): "))
+         (setq arg (if (string-equal arg "")
+                       (throw 'done t)
+                     (string-to-number arg)))
+         (unless (or (eq arg 0) (and (integerp arg) (>= arg 11) (<= arg 99)))
+           (beep)))
+       (hycontrol-windows-grid arg)
+       (setq arg nil)))))
+
+(defun hycontrol-make-windows-grid (arg)
+  "Display a grid of windows in the selected frame, sized according to prefix 
ARG.
+Left digit of ARG is the number of grid rows and the right digit is
+the number of grid columns. 
+
+See documentation of `hycontrol-windows-grid' for further details."
+  (interactive "p")
+
+  ;; Check ARG, must be 2 digits of [1-9], else read a new ARG or
+  ;; signal an error when in a HyControl mode and help is displayed.
+  (if (and (and hycontrol-help-flag (or hycontrol-frames-mode 
hycontrol-windows-mode))
+          (not (and (integerp arg) (>= arg 11) (<= arg 99))))
+      (let ((hyc-mode (if hycontrol-frames-mode #'hycontrol-frames-mode 
#'hycontrol-windows-mode)))
+       (hycontrol-disable-modes)
+       (setq arg 1)
+       (while (not (and (integerp arg) (and (>= arg 11) (<= arg 99))))
+         (unless (or (eq arg 0) (eq arg 1))
+           (beep))
+         (setq arg (read-number "Display grid of ROW digit by COLUMN digit 
windows, e.g. 23 for 2R by 3C: ")))
+       (funcall hyc-mode arg))
+    (while (not (and (integerp arg) (and (>= arg 11) (<= arg 99))))
+      (unless (or (eq arg 0) (eq arg 1))
+       (beep))
+      (setq arg (read-number "Display grid of ROW digit by COLUMN digit 
windows, e.g. 23 for 2R by 3C: "))))
+
+  (let ((wconfig (current-window-configuration)))
+    ;; If an error occurs during a window split because the window is
+    ;; too small, then restore prior window configuration.
+    (condition-case err
+       ;; Make 1 window in selected frame
+       (progn (delete-other-windows)
+
+              (let* ((rows (floor (/ arg 10)))
+                     (columns (- arg (* rows 10)))
+                     (row-index (1- rows))
+                     (row-window-list (list (selected-window)))
+                     col-index)
+
+                ;; Create ARG left-digit rows via split-windows,
+                ;; balancing each time.
+                (while (> row-index 0)
+                  (setq row-window-list (cons (split-window-vertically) 
row-window-list))
+                  (balance-windows)
+                  (setq row-index (1- row-index)))
+
+                ;; Create ARG right-digit columns in each row via
+                ;; split-windows, balancing each time.
+                (setq row-index rows)
+                (while (> row-index 0)
+                  (with-selected-window (car row-window-list)
+                    (setq col-index (1- columns))
+                    (while (> col-index 0)
+                      (split-window-horizontally)
+                      (balance-windows)
+                      (setq col-index (1- col-index)))
+                    (setq row-index (1- row-index)
+                          row-window-list (cdr row-window-list)))))
+
+              ;; Walk windows in this frame and display different
+              ;; buffers.  In the first pass, select only buffers
+              ;; that pass at least one predicate test in
+              ;; `hycontrol-display-buffer-predicate-list'.  If run
+              ;; out of buffers before windows, then start a 2nd
+              ;; pass at the start of the buffer list and use the
+              ;; inverse, choosing only those buffers that fail all
+              ;; the predicate tests.  Always ignore buffers that
+              ;; start with a space.  With each succeeding pass, the
+              ;; predicate list is inverted again.
+              (let ((buffer-list (hycontrol-windows-grid-buffer-list)))
+                (setq hycontrol--buffer-list-pointer buffer-list)
+                (walk-windows #'hycontrol-window-display-buffer 'no-minibuf))
+
+              ;; Prevent user from mistakenly using the typically
+              ;; large argument that invoked this function; reset it
+              ;; to 1 if there was no error.
+              (setq hycontrol-arg 1))
+      (error (set-window-configuration wconfig)
+            (if (and hycontrol-help-flag (or hycontrol-frames-mode 
hycontrol-windows-mode))
+                (pop-to-buffer "*Messages*"))
+            (error "(HyDebug): %s" err)))))
+
+
+(defun hycontrol-delete-other-windows ()
+  "Confirm and then delete all other windows in the selected frame."
+  (interactive)
+  (if (y-or-n-p "Delete all windows in this frame other than the selected 
one?")
+      (delete-other-windows)))
+
 (defun hycontrol-window-maximize-lines ()
   "Grow window to its maximum possible number of lines without removing any 
windows."
   (interactive)
@@ -543,14 +1565,17 @@ width to affect only that dimension."
 
 (defun hycontrol-window-minimize-lines ()
   "Shrink window to its smallest possible number of lines to display entire 
buffer, if possible.
-Otherwise, do nothing."
+Otherwise or if the window is already displaying all of its lines, shrink it 
to about one line,
+if possible."
   (interactive)
   (let ((neg-shrink-amount (- (1+ (count-lines (point-min) (point-max)))))
        (window-min-height 1))
     ;; Don't use minimize-window here since it shrinks regardless of
     ;; buffer size.
     (if (window-resizable-p (selected-window) neg-shrink-amount)
-       (shrink-window (+ (window-height) neg-shrink-amount)))))
+       (progn (goto-char (point-min))
+              (shrink-window (+ (window-height) neg-shrink-amount)))
+      (shrink-window (1- (window-height))))))
 
 (defun hycontrol-window-swap-buffers ()
   "Swap the buffers displayed by each of two windows within the selected frame 
and return t.
@@ -566,38 +1591,66 @@ Do nothing and return nil if there are not precisely two 
windows."
       t)))
 
 ;; Derived from Emacs mouse.el.
-(defun hycontrol-window-to-frame ()
-  "Delete the selected window, and create a new frame displaying its buffer."
+;;;###autoload
+(defun hycontrol-window-to-new-frame ()
+  "Create a new frame sized to match the selected window with the same buffer.
+If there is only one window in the source frame or if 
`hycontrol-keep-window-flag'
+is non-nil, leave the original window and just clone it into the new frame;
+otherwise, delete the original window."
   (interactive)
   (let ((w (selected-window))
+       (frame-resize-pixelwise t)
+       (only-one-window (one-window-p))
        buf)
     (cond ((window-minibuffer-p w)
           (beep)
           (minibuffer-message "(Hyperbole): Select a non-minibuffer window"))
-         ((one-window-p t)
-          (beep)
-          (minibuffer-message "(Hyperbole): Selected window is already in its 
own frame"))
          (t
           ;; Give temporary modes such as isearch a chance to turn off.
           (run-hooks 'mouse-leave-buffer-hook)
           (setq buf (window-buffer w))
-          (delete-window w)
-          (display-buffer-pop-up-frame buf nil)
-          (set-frame-position nil (+ (car hycontrol-frame-offset) (car 
(frame-position)))
-                              (+ (cdr hycontrol-frame-offset) (cdr 
(frame-position))))))))
+          (select-frame (make-frame (frame-parameters)))
+          (unless only-one-window
+            (hycontrol-set-frame-size nil (window-size w t t) (window-size w 
nil t) t))
+          (set-frame-position nil (+ (car hycontrol-frame-offset)
+                                     (car (frame-position (window-frame w))))
+                              (+ (cdr hycontrol-frame-offset)
+                                 (cdr (frame-position (window-frame w)))))
+          (with-selected-frame (window-frame w)
+            (unless (or hycontrol-keep-window-flag (one-window-p t))
+              (delete-window w)))))))
+
+;;;###autoload
+(defun hycontrol-clone-window-to-new-frame ()
+  "Create a new frame sized to match the selected window with the same buffer."
+  (interactive)
+  (let ((hycontrol-keep-window-flag t))
+    (hycontrol-window-to-new-frame)))
+
+(defun hycontrol-restore-window-configuration ()
+  (interactive)
+  (when (and (y-or-n-p "Restore saved window configuration in this frame?")
+            (window-configuration-p hycontrol--wconfig))
+    (set-window-configuration hycontrol--wconfig)))
+
+(defun hycontrol-save-window-configuration ()
+  (interactive)
+  (setq hycontrol--wconfig (current-window-configuration))
+  (if (called-interactively-p 'interactive)
+      (minibuffer-message "(Hyperbole): Saved window configuration for this 
frame")))
 
 ;;; Screen Offsets - Set once when this file is loaded; 
`hycontrol-set-screen-offsets' resets them.
 (defun hycontrol-display-screen-offsets ()
   "Display a user minibuffer message listing HyControl's screen edge offsets 
in pixels."
   (interactive)
-  (message "Screen pixel offsets are: Top: %d; Right: %d; Bot: %d; Left: %d"
+  (message "Screen pixel offsets are: Left: %d; Top: %d; Right: %d; Bot: %d"
+          hycontrol-screen-left-offset
           hycontrol-screen-top-offset
           hycontrol-screen-right-offset
-          hycontrol-screen-bottom-offset
-          hycontrol-screen-left-offset))
+          hycontrol-screen-bottom-offset))
 
 (defun hycontrol-get-screen-offsets ()
-  "Return the first matching list of screen edge offsets from 
`hycontrol-screen-offset-alist'.
+  "Return the first matching list of screen edge .50%%%offsets from 
`hycontrol-screen-offset-alist'.
 See its documentation for more information."
   (interactive)
   (prog1 (catch 'result
@@ -633,143 +1686,26 @@ See its documentation for more information."
 See its documentation for more information."
   (interactive)
   (let ((offsets (hycontrol-get-screen-offsets)))
-    (setq hycontrol-screen-top-offset    (nth 0 offsets)
-         hycontrol-screen-right-offset  (nth 1 offsets)
-         hycontrol-screen-bottom-offset (nth 2 offsets)
-         hycontrol-screen-left-offset   (nth 3 offsets))
+    (setq hycontrol-screen-left-offset   (nth 0 offsets)
+          hycontrol-screen-top-offset    (nth 1 offsets)
+         hycontrol-screen-right-offset  (nth 2 offsets)
+         hycontrol-screen-bottom-offset (nth 3 offsets))
     (if (called-interactively-p 'interactive) 
(hycontrol-display-screen-offsets))
     offsets))
 
 (hycontrol-set-screen-offsets)
 
-;;; ************************************************************************
-;;; Private functions
-;;; ************************************************************************
-
-(defun hycontrol-delete-other-frames ()
-  "Confirm and then delete all other frames."
-  (if (y-or-n-p "Delete all frames on this screen other than the selected 
one?")
-      (delete-other-frames)))
-
-(defun hycontrol-delete-other-windows ()
-  "Confirm and then delete all other windows in the selected frame."
-  (if (y-or-n-p "Delete all windows in this frame other than the selected 
one?")
-      (delete-other-windows)))
-
-(defun hycontrol-frame-height (&optional frame)
-  "Return the height of optional FRAME or the selected frame.  This includes 
all graphical window manager decorations.
-Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
-    (- (nth 3 (frame-edges frame 'outer-edges))
-       (nth 1 (frame-edges frame 'outer-edges))))
-
-(defun hycontrol-frame-width (&optional frame)
-  "Return the height of optional FRAME or the selected frame.  This includes 
all graphical window manager decorations.
-Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
-    (- (nth 2 (frame-edges frame 'outer-edges))
-       (nth 0 (frame-edges frame 'outer-edges))))
+(defun hycontrol-help-key-description ()
+  "Return the key description for the HyControl help key."
+  (key-description (where-is-internal 'hycontrol-toggle-help 
hycontrol-frames-mode-map t)))
 
-;; Frame Zoom Support
-(defun hycontrol-frame-zoom (zoom-func arg max-msgs)
-  "Zoom default frame face using ZOOM-FUNC and amount ARG (must be 1-9).
-MAX-MSGS is a number used only if ZOOM-FUNC is undefined and an error message 
is logged."
-  (if (fboundp zoom-func)
-      (let ((frame-zoom-font-difference arg))
-       (funcall zoom-func))
-    (hycontrol-user-error max-msgs "(HyControl): Zooming requires separate 
\"zoom-frm.el\" Emacs Lisp library installation")))
-
-(defun hycontrol-handle-event (e)
-  "Process input event E or return nil if cannot process it."
-  (cond ((listp e)
-        (cond
-         ((eq (car e) 'delete-frame)
-          (handle-delete-frame e))
-         ((eq (car e) 'focus-in)
-          (handle-focus-in e))
-         ((eq (car e) 'focus-out)
-          (handle-focus-out e))
-         ((eq (car e) 'switch-frame)
-          (handle-switch-frame e))
-         ((or (eq (car e) 'select-window)
-              (and (memq (car e) '(down-mouse-1 mouse-1))
-                   (window-live-p (posn-window (event-end e)))))
-          (handle-select-window e)
-          (mouse-set-point e))
-         (t (setq e nil))))
-       ((symbolp e)
-        (if (commandp (key-binding (vector e)))
-            (call-interactively (key-binding (vector e)))
-          (setq e nil)))
-       ;; Doesn't work right for self-insert-chars, so ignore integers.
-       ;; ((integerp e)
-       ;;  (if (commandp (key-binding (char-to-string e)))
-       ;;      (call-interactively (key-binding (char-to-string e)))
-       ;;    (setq e nil)))
-       (t (setq e nil)))
-  (if e t))
-
-(defun hycontrol-make-frame ()
-   "Create and select a new frame with the same size and selected buffer as 
the selected frame.
-It is offset from the selected frame by `hycontrol-frame-offset' (x . y) 
pixels."
-   (select-frame (make-frame (list (cons 'width (frame-width)) (cons 'height 
(frame-height))
-                                  (cons 'left (+ (car hycontrol-frame-offset) 
(car (frame-position))))
-                                  (cons 'top  (+ (cdr hycontrol-frame-offset) 
(cdr (frame-position))))))))
-
-(defun hycontrol-move-frame (arrow pixels)
-  (let ((x (car (frame-position)))
-       (y (cdr (frame-position))))
-  (cond ((eq arrow 'up)
-        (set-frame-position nil x (- y pixels)))
-       ((eq arrow 'down)
-        (set-frame-position nil x (+ y pixels)))
-       ((eq arrow 'left)
-        (set-frame-position nil (- x pixels) y))
-       ((eq arrow 'right)
-        (set-frame-position nil (+ x pixels) y)))))
-
-(defun hycontrol-numeric-keypad (e _arg)
-  (let ((num (- (aref (symbol-name e) 3) ?0)))
-    (funcall
-     (nth num '(nil hycontrol-frame-to-bottom-left 
hycontrol-frame-to-bottom-center hycontrol-frame-to-bottom-right
-               hycontrol-frame-to-left-center hycontrol-frame-to-center 
hycontrol-frame-to-right-center
-               hycontrol-frame-to-top-left hycontrol-frame-to-top-center 
hycontrol-frame-to-top-right)))))
-
-(defun hycontrol-restore-frame-configuration ()
-  (when (and (y-or-n-p "Restore previously saved configuration of all frames?")
-            (frame-configuration-p hycontrol--fconfig))
-    (set-frame-configuration hycontrol--fconfig)))
-
-(defun hycontrol-save-frame-configuration ()
-  (interactive)
-  (setq hycontrol--fconfig (current-frame-configuration))
-  (if (called-interactively-p 'interactive)
-      (minibuffer-message "(Hyperbole): Saved configuration of all frames")))
-
-(defun hycontrol-restore-window-configuration ()
-  (when (and (y-or-n-p "Restore saved window configuration in this frame?")
-            (window-configuration-p hycontrol--wconfig))
-    (set-window-configuration hycontrol--wconfig)))
-
-(defun hycontrol-save-window-configuration ()
+(defun hycontrol-toggle-help ()
+  "Toggle whether HyControl displays key binding help in the minibuffer."
   (interactive)
-  (setq hycontrol--wconfig (current-window-configuration))
-  (if (called-interactively-p 'interactive)
-      (minibuffer-message "(Hyperbole): Saved window configuration for this 
frame")))
-
-(defun hycontrol-save-configurations ()
-  (hycontrol-save-frame-configuration)
-  (hycontrol-save-window-configuration))
-
-(defun hycontrol-message (max-msgs &rest msg)
-  "Log MAX-MSGS, adding MSG to the *Messages* buffer log."
-  (let ((message-log-max max-msgs))
-    (apply #'message msg)))
-
-(defun hycontrol-user-error (max-msgs &rest err)
-  "Log MAX-MSGS, adding ERR to the *Messages* buffer log; display ERR for 2 
seconds."
-  (let ((message-log-max max-msgs))
-    (beep)
-    (apply #'message err)
-    (sit-for 2)))
+  (setq hycontrol-help-flag (not hycontrol-help-flag))
+  (unless (and hycontrol-help-flag (called-interactively-p 'interactive))
+    (message "(HyControl): Minibuffer help is off; use {%s} to turn it on"
+            (hycontrol-help-key-description))))
 
 (provide 'hycontrol)
 
diff --git a/hypb.el b/hypb.el
index 466fc72..673bed9 100644
--- a/hypb.el
+++ b/hypb.el
@@ -26,7 +26,8 @@
   "Prefix attached to all native Hyperbole help buffer names.
 This should end with a space.")
 
-(defcustom hypb:rgrep-command "grep -insIHr "
+(defcustom hypb:rgrep-command
+  (format "%sgrep -insIHr " (if (executable-find "zgrep") "z" ""))
   "*Grep command string and initial arguments to send to `hypb:rgrep' command.
 It must end with a space."
   :type 'string
@@ -155,6 +156,31 @@ Global keymap is used unless optional KEYMAP is given."
       (load "hbut.el"))
   (setq debug-on-error t))
 
+;; Copied from eww.el so as to not require that package.
+(defun hypb:decode-url (string)
+  (let* ((binary (url-unhex-string string))
+         (decoded
+          (decode-coding-string
+           binary
+           ;; Possibly set by `universal-coding-system-argument'.
+           (or coding-system-for-read
+               ;; RFC 3986 says that %AB stuff is utf-8.
+               (if (equal (decode-coding-string binary 'utf-8)
+                          '(unicode))
+                   'utf-8
+                 ;; But perhaps not.
+                 (car (detect-coding-string binary))))))
+         (encodes (find-coding-systems-string decoded)))
+    (if (or (equal encodes '(undecided))
+            (memq (coding-system-base (or file-name-coding-system
+                                          default-file-name-coding-system))
+                  encodes))
+        decoded
+      ;; If we can't encode the decoded file name (due to language
+      ;; environment settings), then we return the original, hexified
+      ;; string.
+      string)))
+
 (defun hypb:domain-name ()
   "Returns current Internet domain name with '@' prepended or nil if none."
   (let* ((dname-cmd (or (file-exists-p "/usr/bin/domainname")
@@ -203,7 +229,7 @@ Global keymap is used unless optional KEYMAP is given."
 FILE is temporarily read into a buffer to determine the major mode if 
necessary."
   (let ((existing-flag (get-file-buffer file))
        (buf (find-file-noselect file)))
-    (prog1 (if buf (save-excursion (set-buffer buf) major-mode))
+    (prog1 (when buf (save-excursion (set-buffer buf) major-mode))
       (unless (or existing-flag (null buf))
        (kill-buffer buf)))))
 
@@ -212,7 +238,10 @@ FILE is temporarily read into a buffer to determine the 
major mode if necessary.
   (if (stringp string)
       (replace-regexp-in-string
        "@@@" "%%" (replace-regexp-in-string
-                  "%" "%%" (replace-regexp-in-string "%%" "@@@" string)))))
+                  "%" "%%" (replace-regexp-in-string "%%" "@@@" string nil t)
+                  nil t)
+       nil t)))
+
 ;;;###autoload
 (defun hypb:functionp (obj)
 "Returns t if OBJ is a function, nil otherwise."
@@ -489,10 +518,9 @@ Otherwise treat \\ in NEWTEXT string as special:
   \\\\ means insert one \\.
 NEWTEXT may instead be a function of one argument (the string to replace in)
 that returns a replacement string."
-  (if (not (stringp str))
-      (error "(hypb:replace-match-string): 2nd arg must be a string: %s" str))
-  (if (or (stringp newtext) (hypb:functionp newtext))
-      nil
+  (unless (stringp str)
+    (error "(hypb:replace-match-string): 2nd arg must be a string: %s" str))
+  (unless (or (stringp newtext) (hypb:functionp newtext))
     (error "(hypb:replace-match-string): 3rd arg must be a string or function: 
%s"
           newtext))
   (let ((rtn-str "")
@@ -663,7 +691,7 @@ nor nil it means to not count the minibuffer window even if 
it is active."
 
 ;;;###autoload
 (defun hypb:display-file-with-logo (&optional file)
-  "Display an optional text FILE with the Hyperbole banner prepended.
+  "Display an optional text FILE in help mode with the Hyperbole banner 
prepended.
 Without file, the banner is prepended to the current buffer."
   (if file
       ;; A stub for this function is defined in hversion.el when not running 
in InfoDock.
diff --git a/hyperbole-pkg.el b/hyperbole-pkg.el
new file mode 100644
index 0000000..0ecf320
--- /dev/null
+++ b/hyperbole-pkg.el
@@ -0,0 +1,8 @@
+;; -*- no-byte-compile: t -*-
+(define-package "hyperbole" "6.0.2" "GNU Hyperbole: The Everyday Hypertextual 
Information Manager"
+  '((emacs "24.4"))
+  :url "http://www.gnu.org/software/hyperbole";
+  :keywords '("comm" "convenience" "files" "frames" "hypermedia" "languages"
+             "mail" "matching" "mouse" "multimedia" "outlines" "tools" "wp"))
+
+(setq byte-compile-warnings '(not interactive-p find-tag))
diff --git a/hyperbole.el b/hyperbole.el
index 7a952ca..1a617e2 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -1,13 +1,12 @@
 ;;; hyperbole.el --- GNU Hyperbole: The Everyday Hypertextual Information 
Manager
 
-;; Copyright (C) 1992-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1992-2017  Free Software Foundation, Inc.
 
 ;; Author:           Bob Weiner
-;; Maintainer:       Bob Weiner <address@hidden>
-;;                  Mats Lidell <address@hidden>
+;; Maintainer:       Bob Weiner <address@hidden> and Mats Lidell 
<address@hidden>
 ;; Created:          06-Oct-92 at 11:52:51
-;; Released:         09-Aug-16
-;; Version:          6.0.2
+;; Released:         24-Oct-17
+;; Version:          7.0.0
 ;; Keywords:         comm, convenience, files, frames, hypermedia, languages, 
mail, matching, mouse, multimedia, outlines, tools, wp
 ;; Package:          hyperbole
 ;; Package-Requires: ((emacs "24.4"))
@@ -19,23 +18,61 @@
 
 ;;; Commentary:
 ;;
-;;   See the "INSTALL" file for installation instructions and the
-;;   "README" file for general information.
+;; GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is an
+;; easy-to-use, yet powerful and programmable hypertextual information
+;; management system implemented as a GNU Emacs package.  It offers rapid views
+;; and interlinking of all kinds of textual information, utilizing Emacs for
+;; editing.  It can dramatically increase your productivity and greatly reduce
+;; the number of keyboard/mouse keys you'll need to work efficiently.
+;; 
+;; Hyperbole lets you:
+;; 
+;; 1. Quickly create hyperlink buttons either from the keyboard or by dragging
+;; between a source and destination window with a mouse button depressed.
+;; Later activate buttons by pressing/clicking on them or by giving the name of
+;; the button.
+;; 
+;; 2. Activate many kinds of `implicit buttons' recognized by context within
+;; text buffers, e.g. URLs, grep output lines, and git commits.  A single key
+;; or mouse button automatically does the right thing in dozens of contexts;
+;; just press and go.
+;; 
+;; 3. Build outlines with multi-level numbered outline nodes, e.g. 1.4.8.6,
+;; that all renumber automatically as any node or tree is moved in the
+;; outline. Each node also has a permanent hyperlink anchor that you can
+;; reference from any other node;
+;; 
+;; 4. Manage all your contacts quickly with hierarchical categories and embed
+;; hyperlinks within each entry. Or create an archive of documents with
+;; hierarchical entries and use the same search mechanism to quickly find any
+;; matching entry;
+;; 
+;; 5. Use single keys to easily manage your Emacs windows or frames and quickly
+;; retrieve saved window and frame configurations;
+;; 
+;; 6. Search for things in your current buffers, in a directory tree or across
+;; major web search engines with the touch of a few keys.
+;; 
+;; The common thread in all these features is making retrieval, management and
+;; display of information fast and easy. That is Hyperbole's purpose.
+;; 
+;; ----
 ;;
-;;   There is no need to manually edit this file unless there are specific
-;;   customizations you would like to make, such as whether a Hyperbole
-;;   Action Mouse Key is bound to the middle mouse button.  (See the
-;;   call of the function, `hmouse-install', below).
+;; See the "INSTALL" file for installation instructions and the "README" file
+;; for general information.
 ;;
-;;   Other site-specific customizations belong in "hsettings.el".
+;; There is no need to manually edit this file unless there are specific
+;; customizations you would like to make, such as whether a Hyperbole Action
+;; Mouse Key is bound to the middle mouse button.  (See the call of the
+;; function, `hmouse-install', below).
+;;
+;; Other site-specific customizations belong in "hsettings.el".
 
 ;;; Code:
 ;;; ************************************************************************
 ;;; Start Initializations
 ;;; ************************************************************************
 
-(message "Initializing Hyperbole, please wait...")
-
 (defconst hyperbole-loading t
   "Temporary constant available for testing while Hyperbole is loading.") 
 
@@ -196,7 +233,7 @@ Entry format is: (key-description key-sequence 
key-binding)."
          (hkey-bindings-keys hkey-previous-bindings)))
 
 (defun hkey-global-set-key (key command &optional no-add)
-  (or no-add (add-to-list #'hkey-previous-bindings (hkey-binding-entry key)))
+  (or no-add (add-to-list 'hkey-previous-bindings (hkey-binding-entry key)))
   (global-set-key key command))
 
 (defun hkey-initialize ()
@@ -233,8 +270,14 @@ Entry format is: (key-description key-sequence 
key-binding)."
          (hkey-global-set-key "\M-o" 'hkey-operate)
        (hkey-maybe-global-set-key "\M-o" 'hkey-operate)))
     ;;
-    ;; Provides a site standard way of performing explicit button
-    ;; renames without invoking the Hyperbole menu.
+    ;; Binds {C-c @} to created a user-specified sized grid of windows
+    ;; displaying different buffers.
+    ;;
+    ;; Don't override local bindings of this key.
+    (hkey-maybe-global-set-key "\C-c@" 'hycontrol-windows-grid t)
+    ;;
+    ;; Binds {C-c C-r} as a site standard way of performing explicit
+    ;; button renames without invoking the Hyperbole menu.
     ;;
     ;; Don't override local bindings of this key.
     (hkey-maybe-global-set-key "\C-c\C-r" 'hui:ebut-rename t)
@@ -245,7 +288,7 @@ Entry format is: (key-description key-sequence 
key-binding)."
     (hkey-maybe-global-set-key "\C-c\C-m" 'hui-select-thing)
     ;;
     ;; Binds {C-c \} to interactively manage windows and frames.
-    (hkey-maybe-global-set-key "\C-c\\" 'hycontrol-windows)
+    (hkey-maybe-global-set-key "\C-c\\" 'hycontrol-enable-windows-mode)
     ;;
     ;; Binds {C-c /} to display the Hyperbole Find/Web search menu.
     (hkey-maybe-global-set-key "\C-c/" 'hui-search-web)
@@ -332,6 +375,15 @@ bindings after load)."
 ;;; Load Hyperbole mouse bindings
 ;;; ************************************************************************
 
+(if (boundp 'mouse-position-function)
+    (setq mouse-position-function
+         (lambda (frame-x-dot-y)
+           "Make `mouse-position' and `mouse-pixel-position' always return the 
selected frame.
+Under macOS and Windows 7 at least, upon initial selection of a new
+frame, those functions by default still return the prior frame."
+           (if (consp frame-x-dot-y) (setcar frame-x-dot-y (selected-frame)))
+           frame-x-dot-y)))
+
 (require 'hmouse-key)
 
 ;;; ************************************************************************
@@ -341,13 +393,14 @@ bindings after load)."
 ;; Add Hyperbole Info directory to Info-directory-list after the Info
 ;; manual reader package is loaded.
 (eval-after-load "info"
-  #'(if (boundp 'hyperb:dir)
-       (let ((info-dir (expand-file-name "man/" hyperb:dir)))
-         (if (file-exists-p info-dir)
-             (add-to-list #'Info-directory-list info-dir)))))
+  '(when (boundp 'hyperb:dir)
+     (info-initialize)
+     (let ((info-dir (expand-file-name "man/" hyperb:dir)))
+       (if (file-exists-p info-dir)
+          (add-to-list 'Info-directory-list info-dir)))))
 
 ;;; ************************************************************************
-;;; Prevent local key maps from hiding the Action Key (overriding it)
+;;; Prevent local key maps from hiding/overriding the Action and Assist Keys
 ;;; ************************************************************************
 
 ;; (defun hkey-read-only-bindings ()
@@ -378,16 +431,16 @@ bindings after load)."
     (if hkey-init-override-local-keys
        (let (hkey
              binding)
-        (mapc (lambda (descrip-key-cmd)
-                (and (setq hkey (cadr descrip-key-cmd))
-                     ;; To see the key name, use: (key-description hkey)
-                     (setq binding (local-key-binding hkey))
-                     ;; A number indicates an invalid key prefix, so
-                     ;; there is not actually a local binding for
-                     ;; this key sequence.
-                     (not (numberp binding))
-                     (local-unset-key hkey)))
-              hkey-previous-bindings)))))
+         (mapc (lambda (descrip-key-cmd)
+                 (and (setq hkey (cadr descrip-key-cmd))
+                      ;; To see the key name, use: (key-description hkey)
+                      (setq binding (local-key-binding hkey))
+                      ;; A number indicates an invalid key prefix, so
+                      ;; there is not actually a local binding for
+                      ;; this key sequence.
+                      (not (numberp binding))
+                      (local-unset-key hkey)))
+               hkey-previous-bindings)))))
 
 (defun hkey-install-override-local-bindings ()
   ;; Run after any major-mode change within any buffer.
@@ -430,7 +483,7 @@ With optional ARG, override them iff ARG is positive."
 ;; Koutliner autoloads in the kotl/ subdirectory are generated by 'make pkg'.
 ;; This next line ensures they are loaded by hyperbole-autoloads whenever
 ;; the Hyperbole package is activated in an Emacs session.
-;;;###autoload (load "kotl/kotl-loaddefs" nil 'nowarn)
+;;;###autoload (load "kotl/kotl-autoloads" nil 'nowarn)
 
 ;; Before the 6.0.1 release, Hyperbole used to patch the 
package-generate-autoloads 
 ;; function to ensure that kotl/ subdirectories were autoloaded.  This
@@ -635,6 +688,7 @@ If FLAG is nil then text is shown, while if FLAG is t the 
text is hidden."
 (defun hyperb:init ()
   "Standard configuration routine for Hyperbole."
   (interactive)
+  (message "Initializing Hyperbole...")
   (run-hooks 'hyperbole-init-hook)
   (hyperb:check-dir-user)
   (or (stringp hyperb:user-email)
@@ -665,20 +719,23 @@ If FLAG is nil then text is shown, while if FLAG is t the 
text is hidden."
   ;; removal of further local bindings.
   (if (featurep 'hyperbole)
       (hkey-install-override-local-bindings)
-    (add-hook 'after-load-alist #'(hyperbole 
hkey-install-override-local-bindings))))
+    (add-hook 'after-load-alist '(hyperbole 
hkey-install-override-local-bindings)))
+  ;;
+  ;; Hyperbole initialization is complete. 
+  (message "Initializing Hyperbole...done")
+  (message "Hyperbole %s is ready for action." hyperb:version))
 
-;; This call loads the whole Hyperbole system.
+;; This call loads the rest of the Hyperbole system.
 (require 'hinit)
-;; This call initializes Hyperbole.
+
 (if after-init-time
+    ;; This call initializes Hyperbole key bindings and hooks.
     (hyperb:init)
   ;; Initialize after other key bindings are loaded at startup.
-  (add-hook 'after-init-hook #'hyperb:init))
+  (add-hook 'after-init-hook #'hyperb:init t))
 
 (makunbound 'hyperbole-loading)
 
 (provide 'hyperbole)
 
-(message "Hyperbole %s is ready for action." hyperb:version)
-
 ;;; hyperbole.el ends here
diff --git a/hyrolo-demo.el b/hyrolo-demo.el
new file mode 100644
index 0000000..626f372
--- /dev/null
+++ b/hyrolo-demo.el
@@ -0,0 +1,89 @@
+;;; hyrolo-demo.el --- Code to support DEMO introduction to HyRolo
+;;
+;; Author:       Bob Weiner
+;;
+;; Orig-Date:     4-Nov-17 at 13:56:47
+;;
+;; Copyright (C) 2017  Free Software Foundation, Inc.
+;; See the "HY-COPY" file for license information.
+;;
+;; This file is part of GNU Hyperbole.
+
+;;; Code:
+
+;;; ************************************************************************
+;;; Requirements
+;;; ************************************************************************
+
+(require 'hyrolo-logic)
+
+;;; ************************************************************************
+;;; Public variables
+;;; ************************************************************************
+
+(defvar hyrolo-demo-save-key nil)
+
+;;; ************************************************************************
+;;; Public functions
+;;; ************************************************************************
+
+;;;###autoload
+(defun hyrolo-demo-fgrep (string &optional max-matches)
+  "Display rolo entries in \"DEMO-ROLO.otl\" matching STRING (or a logical 
match expression).
+Display to a maximum of optional prefix arg MAX-MATCHES.
+Each entry is displayed with all of its sub-entries.
+
+Nil value of MAX-MATCHES means find all matches, t value means find all
+matches but omit file headers, negative values mean find up to the inverse of
+that number of entries and omit file headers.
+
+Returns number of entries matched.  See also documentation for
+the function `hyrolo-demo-fgrep-logical' for documentation on the
+logical expression matching."
+  (interactive "sFind rolo string (or logical expression): \nP")
+  (let ((hyrolo-file-list (list (expand-file-name "DEMO-ROLO.otl" 
hyperb:dir))))
+    (hyrolo-fgrep string max-matches)))
+
+;;;###autoload
+(defun hyrolo-demo-fgrep-logical (expr)
+  "Display rolo entries in \"DEMO-ROLO.otl\" matching EXPR which may contain 
prefix logical operators.
+A complex example of EXPR might be:
+  (and (or (not time card) (xor (french balloons) spanish)) teacher pet)
+which means:
+  Match neither `time' nor `card'
+    or
+  Matches exactly one of `french balloons' or `spanish'
+    and
+  Matches `teacher' and `pet'.
+
+Either double quotes or parentheses may be used to group multiple words as a
+single argument."
+  (interactive "sLogical rolo search: ")
+  (let ((hyrolo-file-list (list (expand-file-name "DEMO-ROLO.otl" 
hyperb:dir))))
+    (hyrolo-fgrep-logical expr)))
+
+(defun hyrolo-demo-quit ()
+  "Remove the code in this file."
+  (interactive)
+  (when hyrolo-demo-save-key
+    (global-set-key "\C-x4r" hyrolo-demo-save-key))
+  (makunbound 'hyrolo-demo-save-key)
+  (fmakunbound 'hyrolo-demo-fgrep)
+  (fmakunbound 'hyrolo-demo-fgrep-logical)
+  (setq features (delq 'hyrolo-demo features))
+  (mapc (lambda (buf) (when (get-buffer buf) (kill-buffer buf)))
+       '("*Hyperbole Rolo*" "DEMO-ROLO.otl"))
+  (load "hyperbole-autoloads")
+  (fmakunbound 'hyrolo-demo-quit)
+  (message "HyRolo demo code removed and {C-x 4 r} key binding reset."))
+
+;;; ************************************************************************
+;;; Key Bindings
+;;; ************************************************************************
+
+(unless (eq (key-binding "\C-x4r") #'hyrolo-demo-fgrep)
+  (setq hyrolo-demo-save-key (key-binding "\C-x4r")))
+
+(global-set-key "\C-x4r" 'hyrolo-demo-fgrep)
+
+(provide 'hyrolo-demo)
diff --git a/hyrolo-logic.el b/hyrolo-logic.el
index 7ab2106..e257df8 100644
--- a/hyrolo-logic.el
+++ b/hyrolo-logic.el
@@ -48,7 +48,8 @@
 ;;   would find all non-Tool-And-Die Corp. secretaries in your rolo.
 ;;
 ;;   The logical matching routines are not at all optimal, but then most
-;;   rolo files are not terribly lengthy either.
+;;   rolo files are not terribly lengthy either, so results are often
+;;   displayed quickly.
 
 ;;; Code:
 ;;; ************************************************************************
@@ -67,43 +68,49 @@
 
 ;;;###autoload
 (defun hyrolo-fgrep-logical (expr)
-  "Read and execute a rolo string search with prefix logical operators.
-A complex example might be:
-  (and (or (not time card) (xor (french balloons) spanish)) teacher pet)
+  "Display rolo entries matching EXPR which may contain prefix logical 
operators.
+A complex example of EXPR might be:
+  (and (or (not time card) (xor (and french balloons) spanish)) teacher pet)
 which means:
   Match neither `time' nor `card'
     or
-  Matches exactly one of `french balloons' or `spanish'
+  Match exactly one of `french balloons' or `spanish'
     and
-  Matches `teacher' and `pet'.
+  Match `teacher' and `pet'.
 
 Either double quotes or parentheses may be used to group multiple words as a
 single argument."
   (interactive "sLogical rolo search: ")
-  (setq expr (hypb:replace-match-string "\(or " expr "\(| " t))
-  (setq expr (hypb:replace-match-string "\(xor " expr "\(@ " t))
-  (setq expr (hypb:replace-match-string "\(not " expr "\(! " t))
-  (setq expr (hypb:replace-match-string "\(and " expr "\(& " t))
-  (setq expr (hypb:replace-match-string
-             "\"\\([^\"]*\\)\"" expr "{\\1}" nil))
-  (setq expr (hypb:replace-match-string
-             "\(\\([^@|!&()][^()\"]*\\)\)" expr "{\\1}" nil))
-  (let ((saved-expr expr))
-    (while
-       (not (equal
-             saved-expr
-             (setq expr (hypb:replace-match-string
-                         "\\(\\s-\\)\\([^{}()\" \t\n\r]+\\)\\([^{}()]*[()]\\)"
-                         expr "\\1\"\\2\"\\3" nil))))
-      (setq saved-expr expr)))
-  (setq expr (hypb:replace-match-string
-             "{\\([^{}]+\\)}" expr "\"\\1\"" nil))
-  (setq expr (hypb:replace-match-string "\(| " expr "\(hyrolo-or " t))
-  (setq expr (hypb:replace-match-string "\(@ " expr "\(hyrolo-xor " t))
-  (setq expr (hypb:replace-match-string "\(! " expr "\(hyrolo-not " t))
-  (setq expr (hypb:replace-match-string "\(& " expr "\(hyrolo-and " t))
-  (setq expr (format "(hyrolo-logic (quote %s))" expr))
-  (let ((total-matches (eval (read expr))))
+  (let* ((case-fold-search t)
+        (total-matches))
+    (if (not (string-match "\(\\(and\\|or\\|xor\\|not\\)\\>" expr))
+       ;; Search string does not contain embedded logic
+       ;; operators; do a string search instead.
+       (setq total-matches (hyrolo-fgrep expr))
+      (setq expr (hypb:replace-match-string "\(or " expr "\(| " t))
+      (setq expr (hypb:replace-match-string "\(xor " expr "\(@ " t))
+      (setq expr (hypb:replace-match-string "\(not " expr "\(! " t))
+      (setq expr (hypb:replace-match-string "\(and " expr "\(& " t))
+      (setq expr (hypb:replace-match-string
+                 "\"\\([^\"]*\\)\"" expr "{\\1}" nil))
+      (setq expr (hypb:replace-match-string
+                 "\(\\([^@|!&()][^()\"]*\\)\)" expr "{\\1}" nil))
+      (let ((saved-expr expr))
+       (while
+           (not (equal
+                 saved-expr
+                 (setq expr (hypb:replace-match-string
+                             "\\(\\s-\\)\\([^{}()\" 
\t\n\r]+\\)\\([^{}()]*[()]\\)"
+                             expr "\\1\"\\2\"\\3" nil))))
+         (setq saved-expr expr)))
+      (setq expr (hypb:replace-match-string
+                 "{\\([^{}]+\\)}" expr "\"\\1\"" nil))
+      (setq expr (hypb:replace-match-string "\(| " expr "\(hyrolo-or " t))
+      (setq expr (hypb:replace-match-string "\(@ " expr "\(hyrolo-xor " t))
+      (setq expr (hypb:replace-match-string "\(! " expr "\(hyrolo-not " t))
+      (setq expr (hypb:replace-match-string "\(& " expr "\(hyrolo-and " t))
+      (setq expr (format "(hyrolo-logic (quote %s) nil nil t)" expr))
+      (setq total-matches (eval (read expr))))
     (if (called-interactively-p 'interactive)
        (message "%s matching entr%s found in rolo."
                 (if (= total-matches 0) "No" total-matches)
@@ -111,7 +118,7 @@ single argument."
     total-matches))
 
 (defun hyrolo-logic (sexp &optional in-bufs count-only include-sub-entries
-                       no-sub-entries-out)
+                    no-sub-entries-out)
   "Apply SEXP to all entries in optional IN-BUFS, display entries where SEXP 
is non-nil.
 If IN-BUFS is nil, `hyrolo-file-list' is used.  If optional COUNT-ONLY is
 non-nil, don't display entries, return count of matching entries only.  If
@@ -121,7 +128,7 @@ separately.  Entries are displayed with all of their 
sub-entries unless
 INCLUDE-SUB-ENTRIES is nil and optional NO-SUB-ENTRIES-OUT flag is non-nil.
 SEXP should use the free variables `start' and `end' which contain the limits
 of the region on which it should operate.  Returns number of evaluations of
-SEXP that return non-nil."
+SEXP that matched entries."
   (let ((obuf (current-buffer))
        (display-buf (if count-only
                         nil
@@ -129,22 +136,21 @@ SEXP that return non-nil."
                         (setq buffer-read-only nil)
                         (erase-buffer)))))
     (let ((result
-           (mapcar
-            (lambda (in-bufs)
-              (hyrolo-map-logic sexp in-bufs count-only include-sub-entries
-                              no-sub-entries-out))
-             (cond ((null in-bufs) hyrolo-file-list)
-                   ((listp in-bufs) in-bufs)
-                   ((list in-bufs))))))
+          (mapcar
+           (lambda (in-bufs)
+             (hyrolo-map-logic sexp in-bufs count-only include-sub-entries
+                               no-sub-entries-out))
+           (cond ((null in-bufs) hyrolo-file-list)
+                 ((listp in-bufs) in-bufs)
+                 ((list in-bufs))))))
       (let ((total-matches (apply '+ result)))
-       (if (or count-only (= total-matches 0))
-           nil
+       (unless (or count-only (= total-matches 0))
          (hyrolo-display-matches display-buf))
        total-matches))))
 
 (defun hyrolo-map-logic (sexp hyrolo-buf &optional count-only
                            include-sub-entries no-sub-entries-out)
-  "Apply SEXP to all entries in HYROLO-BUF, write to buffer entries where SEXP 
is non-nil.
+  "Apply logical SEXP to each entry in HYROLO-BUF and write out matching 
entries to `hyrolo-display-buffer'.
 If optional COUNT-ONLY is non-nil, don't display entries, return count of
 matching entries only.  If optional INCLUDE-SUB-ENTRIES flag is non-nil, SEXP
 will be applied across all sub-entries at once.  Default is to apply SEXP to
@@ -152,7 +158,8 @@ each entry and sub-entry separately.  Entries are displayed 
with all of their
 sub-entries unless INCLUDE-SUB-ENTRIES is nil and optional NO-SUB-ENTRIES-OUT
 flag is non-nil.  SEXP should use the free variables `start' and `end' which
 contain the limits of the region on which it should operate.  Returns number
-of applications of SEXP that return non-nil."
+of applications of SEXP that matched entries."
+  (setq hyrolo-buf (or (get-buffer hyrolo-buf) hyrolo-buf))
   (if (or (bufferp hyrolo-buf)
          (if (file-exists-p hyrolo-buf)
              (setq hyrolo-buf (find-file-noselect hyrolo-buf t))))
@@ -165,19 +172,18 @@ of applications of SEXP that return non-nil."
              (widen)
              (goto-char 1)
              ;; Ensure no entries in outline mode are hidden.
-             (if (search-forward "\C-m" nil t)
-                 (outline-show-all))
-             (if (re-search-forward hyrolo-hdr-regexp nil t 2)
-                 (progn (forward-line)
-                        (setq hdr-pos (cons (point-min) (point)))))
+             (outline-show-all)
+             (when (re-search-forward hyrolo-hdr-regexp nil t 2)
+               (forward-line)
+               (setq hdr-pos (cons (point-min) (point))))
              (let* ((start)
                     (end)
                     (end-entry-hdr)
                     (curr-entry-level))
                (while (re-search-forward hyrolo-entry-regexp nil t)
-                 (setq start (save-excursion (beginning-of-line) (point))
+                 (setq end-entry-hdr (point)
+                       start (save-excursion (beginning-of-line) (point))
                        next-entry-exists nil
-                       end-entry-hdr (point)
                        curr-entry-level (buffer-substring start end-entry-hdr)
                        end (hyrolo-to-entry-end include-sub-entries 
curr-entry-level))
                  (let ((result (eval sexp)))
@@ -228,12 +234,12 @@ of applications of SEXP that return non-nil."
 Each element may be t, nil, or a string."
   (let ((pat))
     (while (and pat-list
-               (or (not (setq pat (car pat-list)))
-                   (and (not (eq pat t))
+               (or (null (setq pat (car pat-list)))
+                   (and (stringp pat)
                         (goto-char start)
                         (not (search-forward pat end t)))))
       (setq pat-list (cdr pat-list)))
-    (if pat-list nil t)))
+    (not pat-list)))
 
 (defun hyrolo-or (&rest pat-list)
   "Logical <or> rolo entry filter.  PAT-LIST is a list of pattern elements.
@@ -242,8 +248,8 @@ Each element may be t, nil, or a string."
       t
     (let ((pat))
       (while (and pat-list
-                 (or (not (setq pat (car pat-list)))
-                     (and (not (eq pat t))
+                 (or (null (setq pat (car pat-list)))
+                     (and (stringp pat)
                           (goto-char start)
                           (not (search-forward pat end t)))))
        (setq pat-list (cdr pat-list)))
@@ -268,8 +274,7 @@ Each element may be t, nil, or a string."
 (defun hyrolo-and (&rest pat-list)
   "Logical <and> rolo entry filter.  PAT-LIST is a list of pattern elements.
 Each element may be t, nil, or a string."
-  (if (memq nil pat-list)
-      nil
+  (unless (memq nil pat-list)
     (let ((pat))
       (while (and pat-list
                  (setq pat (car pat-list))
@@ -277,7 +282,7 @@ Each element may be t, nil, or a string."
                      (not (goto-char start))
                      (search-forward pat end t)))
        (setq pat-list (cdr pat-list)))
-      (if pat-list nil t))))
+      (not pat-list))))
 
 ;; Work with regular expression patterns rather than strings
 
@@ -286,12 +291,12 @@ Each element may be t, nil, or a string."
 Each element may be t, nil, or a string."
   (let ((pat))
     (while (and pat-list
-               (or (not (setq pat (car pat-list)))
-                   (and (not (eq pat t))
+               (or (null (setq pat (car pat-list)))
+                   (and (stringp path)
                         (goto-char start)
                         (not (re-search-forward pat end t)))))
       (setq pat-list (cdr pat-list)))
-    (if pat-list nil t)))
+    (not pat-list)))
 
 (defun hyrolo-r-or (&rest pat-list)
   "Logical <or> rolo entry filter.  PAT-LIST is a list of pattern elements.
@@ -300,8 +305,8 @@ Each element may be t, nil, or a string."
       t
     (let ((pat))
       (while (and pat-list
-                 (or (not (setq pat (car pat-list)))
-                     (and (not (eq pat t))
+                 (or (null (setq pat (car pat-list)))
+                     (and (stringp pat)
                           (goto-char start)
                           (not (re-search-forward pat end t)))))
        (setq pat-list (cdr pat-list)))
@@ -326,8 +331,7 @@ Each element may be t, nil, or a string."
 (defun hyrolo-r-and (&rest pat-list)
   "Logical <and> rolo entry filter.  PAT-LIST is a list of pattern elements.
 Each element may be t, nil, or a string."
-  (if (memq nil pat-list)
-      nil
+  (unless (memq nil pat-list)
     (let ((pat))
       (while (and pat-list
                  (setq pat (car pat-list))
@@ -335,7 +339,7 @@ Each element may be t, nil, or a string."
                      (not (goto-char start))
                      (re-search-forward pat end t)))
        (setq pat-list (cdr pat-list)))
-      (if pat-list nil t))))
+      (not pat-list))))
 
 (provide 'hyrolo-logic)
 
diff --git a/hyrolo.el b/hyrolo.el
index 57711df..f8b6fc3 100644
--- a/hyrolo.el
+++ b/hyrolo.el
@@ -10,6 +10,14 @@
 ;; This file is part of GNU Hyperbole.
 
 ;;; Commentary:
+;;
+;;  This is Hyperbole's advanced rolo system, HyRolo, for convenient
+;;  management of hierarchical, record-oriented information.  Most
+;;  often this is used for contact management but it can quickly be
+;;  adapted to most any record-oriented lookup task, for fast retrieval.
+;;
+;;  See all the autoloaded functions herein for interactive commands.
+;;  See the Info manual entry "(hyperbole)HyRolo" for usage information.
 
 ;;; Code:
 ;;; ************************************************************************
@@ -24,6 +32,8 @@
 (eval-when-compile
   (unless (require 'bbdb nil t)
     (defvar bbdb-file nil))
+  (unless (require 'google-contacts nil t)
+    (defvar google-contacts-buffer-name nil))
   (defvar next-entry-exists nil))
 
 ;;; ************************************************************************
@@ -40,7 +50,10 @@ See documentation of the function `format-time-string' for 
format options."
   :type 'string
   :group 'hyperbole-rolo)
 
-(defvar hyrolo-display-format-function 'identity
+(defvar hyrolo-display-format-function
+  ;; Set trailing newlines to exactly two.
+  (lambda (entry)
+    (concat (replace-regexp-in-string "[ \t\n\r]+\\'" "" entry nil t) "\n\n"))
   "*Function of one argument, a rolo entry string, which modifies the string 
for display.")
 
 (defcustom hyrolo-email-format "%s\t\t<%s>"
@@ -50,12 +63,37 @@ It must contain a %s indicating where to put the entry name 
and a second
   :type 'string
   :group 'hyperbole-rolo)
 
-(defvar hyrolo-file-list
-  (if (and (boundp 'bbdb-file) (stringp bbdb-file))
-      (if hyperb:microcruft-os-p
-         (list "c:/_rolo.otl" bbdb-file)
-       (list  "~/.rolo.otl" bbdb-file))
-    (if hyperb:microcruft-os-p '("c:/_rolo.otl") '("~/.rolo.otl")))
+(defcustom hyrolo-google-contacts-flag t
+  "*Non-nil means search Google Contacts on each hyrolo query.
+The google-contact package must be loaded and a gpg encryption
+executable must be found as well (for Oauth security)."
+  :type 'boolean
+  :group 'hyperbole-rolo)
+
+(defun hyrolo-google-contacts-p ()
+  "Return non-nil if `hyrolo-google-contacts-flag' is non-nil and 
google-contacts package and gpg executables are available for use."
+  (and hyrolo-google-contacts-flag
+       (featurep 'google-contacts) 
+       ;; If no gpg encryption executable, Oauth login to Google will fail.
+       (or (executable-find "gpg2") (executable-find "gpg"))))
+
+;;;###autoload
+(defun hyrolo-initialize-file-list ()
+  "Initialize the list of files to use for HyRolo searches."
+  (interactive)
+  (let* ((gcontacts (if (hyrolo-google-contacts-p) 
google-contacts-buffer-name))
+        (ms "c:/_rolo.otl")
+        (unix "~/.rolo.otl")
+        (list (delq nil (if (and (boundp 'bbdb-file) (stringp bbdb-file))
+                            (if hyperb:microcruft-os-p
+                                (list ms bbdb-file gcontacts)
+                              (list  "~/.rolo.otl" bbdb-file gcontacts))
+                          (if hyperb:microcruft-os-p (list ms gcontacts) (list 
unix gcontacts))))))
+      (when (called-interactively-p 'interactive)
+       (message "HyRolo Search List: %S" list))
+      list))
+
+(defvar hyrolo-file-list (hyrolo-initialize-file-list)
   "*List of files containing rolo entries.
 The first file should be a user-specific rolo file, typically in the home
 directory.
@@ -310,11 +348,14 @@ Returns entry name if found, else nil."
        src)
     (if name
        (progn (setq src (hbut:key-src))
-              (if (and (boundp 'bbdb-file) (equal src (expand-file-name 
bbdb-file)))
-                  ;; For now, can't edit the bbdb database, signal an error.
-                  (error "(hyrolo-edit-entry): BBDB entries are not editable.")
-                (hyrolo-edit name src)
-                name))
+              (cond ((and (boundp 'bbdb-file) (stringp bbdb-file) (equal src 
(expand-file-name bbdb-file)))
+                     ;; For now, can't edit an entry from the bbdb database, 
signal an error.
+                     (error "(hyrolo-edit-entry): BBDB entries are not 
editable."))
+                    ((and (featurep 'google-contacts) (equal src (get-buffer 
google-contacts-buffer-name)))
+                     ;; For now, can't edit an entry from Google Contacts, 
signal an error.
+                     (error "(hyrolo-edit-entry): Google Contacts entries are 
not editable."))
+                    (t (hyrolo-edit name src)
+                       name)))
       (error "(hyrolo-edit-entry): Move to an entry to edit it."))))
 
 ;;;###autoload
@@ -384,9 +425,12 @@ hyrolo-file-list."
                (or (not (integerp max-matches))
                    (< total-matches (max max-matches (- max-matches)))))
       (setq hyrolo-file-list (cdr hyrolo-file-list)
-           num-matched (if (and (featurep 'bbdb) (equal file bbdb-file))
-                           (hyrolo-bbdb-grep-file file regexp max-matches 
count-only)
-                         (hyrolo-grep-file file regexp max-matches count-only))
+           num-matched (cond ((and (featurep 'bbdb) (equal file bbdb-file))
+                              (hyrolo-bbdb-grep-file file regexp max-matches 
count-only))
+                             ((and (hyrolo-google-contacts-p) (equal file 
google-contacts-buffer-name))
+                              (hyrolo-retrieve-google-contacts (regexp-quote 
regexp))
+                              (hyrolo-google-contacts-grep-file file regexp 
max-matches count-only))
+                             (t (hyrolo-grep-file file regexp max-matches 
count-only)))
            total-matches (+ total-matches num-matched))
       (if (integerp max-matches)
          (setq max-matches
@@ -440,7 +484,7 @@ NAME may be of the form: parent/child to kill child below a 
parent entry
 which begins with the parent string.
 Returns t if entry is killed, nil otherwise."
   (interactive "sKill rolo entry named: \nP")
-  (if (or (not (stringp name)) (string= name ""))
+  (if (or (not (stringp name)) (string= name "") (string-match "\\*" name))
       (error "(hyrolo-kill): Invalid name: `%s'" name))
   (if (and (called-interactively-p 'interactive) current-prefix-arg)
       (setq file (completing-read "Entry's File: "
@@ -751,14 +795,14 @@ of a string."
 
 ;;;###autoload
 (defun hyrolo-bbdb-fgrep (&optional arg)
-  "Fgrep over a BBDB database and format the results as rolo entries.
+  "Fgrep over a bbdb database and format the results as rolo entries.
 With optional prefix ARG, do a grep regexp match instead of a string match."
   (interactive "P")
   (hyrolo-bbdb-grep (not arg)))
 
 ;;;###autoload
 (defun hyrolo-bbdb-grep (&optional arg)
-  "Grep over a BBDB database and format the results as rolo entries.
+  "Grep over a bbdb database and format the results as rolo entries.
 With optional prefix ARG, do an fgrep string match instead of a regexp match.
 
 Output looks like so:
@@ -803,6 +847,178 @@ Returns number of matching entries found."
     (format "* %s: %s: <%s>\n" (elt v 1) (elt v 0) (car (elt v 7)))))
 
 ;;; ************************************************************************
+;;; Google Contacts Integration
+;;; ************************************************************************
+
+;;;###autoload
+(defun hyrolo-google-contacts-fgrep (&optional arg)
+  "Fgrep over a buffer of Google Contacts and format the results as rolo 
entries.
+With optional prefix ARG, do a grep regexp match instead of a string match."
+  (interactive "P")
+  (hyrolo-google-contacts-grep (not arg)))
+
+;;;###autoload
+(defun hyrolo-google-contacts-grep (&optional arg)
+  "Grep over a buffer of Google Contacts and format the results as rolo 
entries.
+With optional prefix ARG, do an fgrep string match instead of a regexp match.
+
+Output looks like so:
+======================================================================
address@hidden> <buffer *Google Contacts*>
+======================================================================
+* Jones     Tom
+* Sera      Kate
+* Yako      Maso"
+  (interactive "P")
+  (require 'google-contacts)
+  (let ((hyrolo-file-list (list google-contacts-buffer-name))
+       ;; Kill the google-contacts buffer after use if it is not already in 
use.
+       (hyrolo-kill-buffers-after-use (not (get-buffer 
google-contacts-buffer-name))))
+    (call-interactively (if arg 'hyrolo-fgrep 'hyrolo-grep))
+    (read-only-mode 0)
+    (re-search-forward hyrolo-entry-regexp nil t)
+    (beginning-of-line)
+    (set-buffer-modified-p nil)
+    (read-only-mode 1)))
+
+(defun hyrolo-google-contacts-grep-file (hyrolo-file-or-buf regexp &optional 
max-matches count-only)
+  "Retrieve entries in google-contacts HYROLO-FILE-OR-BUF matching REGEXP to a 
maximum of optional MAX-MATCHES.
+Nil value of MAX-MATCHES means find all matches, t value means find all matches
+but omit file headers, negative values mean find up to the inverse of that
+number of entries and omit file headers.  Optional COUNT-ONLY non-nil
+means don't retrieve matching entries.
+Returns number of matching entries found."
+  ;; Kill the google-contacts buffer after use if it is not already in use.
+  (let ((hyrolo-kill-buffers-after-use (not (get-buffer 
google-contacts-buffer-name))))
+    (hyrolo-grep-file hyrolo-file-or-buf regexp max-matches count-only)))
+
+;; Derived from google-contacts.el.
+(defun hyrolo-google-contacts-insert-data (contacts token 
contact-prefix-string)
+  (if (not contacts)
+      ;; No contacts, insert a string and return nil
+      (insert "No result.")
+    (print contacts (get-buffer-create "*contacts-data*"))
+    (dolist (contact contacts)
+      (let* ((name-value (nth 0 (xml-get-children contact 'gd:name)))
+             (fullname (xml-node-child-string (nth 0 (xml-get-children 
name-value 'gd:fullName))))
+             (givenname (xml-node-child-string (nth 0 (xml-get-children 
name-value 'gd:givenName))))
+             (familyname (xml-node-child-string (nth 0 (xml-get-children 
name-value 'gd:familyName))))
+
+             (nickname (xml-node-child-string (nth 0 (xml-get-children contact 
'gContact:nickname))))
+             (birthday (xml-get-attribute-or-nil (nth 0 (xml-get-children 
contact 'gContact:birthday)) 'when))
+
+             (organization-value (nth 0 (xml-get-children contact 
'gd:organization)))
+             (organization-name (xml-node-child-string (nth 0 
(xml-get-children organization-value 'gd:orgName))))
+             (organization-title (xml-node-child-string (nth 0 
(xml-get-children organization-value 'gd:orgTitle))))
+
+             (notes (xml-node-child-string (nth 0 (xml-get-children contact 
'content))))
+             ;; Links
+             (links (xml-get-children contact 'link))
+
+             ;; Multiple values
+             ;; Format is ((rel-type . data) (rel-type . data) … )
+             (events (google-contacts-build-node-list contact 'gContact:event
+                                                      (xml-get-attribute (nth 
0 (xml-get-children child 'gd:when)) 'startTime)))
+             (emails (google-contacts-build-node-list contact 'gd:email
+                                                      (xml-get-attribute child 
'address)))
+             (phones (google-contacts-build-node-list contact 'gd:phoneNumber))
+             (websites (google-contacts-build-node-list contact 
'gContact:website
+                                                        (xml-get-attribute 
child 'href)))
+             (relations (google-contacts-build-node-list contact 
'gContact:relation))
+             (postal-addresses (google-contacts-build-node-list contact 
'gd:structuredPostalAddress
+                                                                
(xml-node-child-string
+                                                                 (nth 0 
(xml-get-children child 'gd:formattedAddress)))))
+             (instant-messaging (google-contacts-build-node-list contact 'gd:im
+                                                                 (cons
+                                                                  
(xml-node-get-attribute-type child 'protocol)
+                                                                  (cdr (assoc 
'address (xml-node-attributes child))))))
+             (beg (point)))
+        (unless (and (string= familyname "") (string= givenname "") (string= 
nickname ""))
+         (insert contact-prefix-string familyname (if (or (string= familyname 
"")
+                                                          (string= givenname 
"")) "" ", ")
+                 givenname
+                 (if (string= nickname "")
+                     ""
+                   (format " (%s)" nickname))
+                 "\n"))
+
+        (unless (and (string= organization-name "")
+                     (string= organization-title ""))
+         (insert (google-contacts-margin-element))
+         (if (string= organization-title "")
+             (insert organization-name "\n")
+           (insert organization-title " @ " organization-name "\n")))
+
+        (hyrolo-google-contacts-insert-generic-list emails "E-mails")
+        (hyrolo-google-contacts-insert-generic-list phones "Phones")
+        (hyrolo-google-contacts-insert-generic-list postal-addresses 
"Addresses"
+                                             (lambda (address)
+                                               
(google-contacts-add-margin-to-text (cdr address)
+                                                                               
    (+ 4 (length (car address))))))
+        (hyrolo-google-contacts-insert-generic-list websites "Websites"
+                                             (lambda (website) (cdr website)))
+        (hyrolo-google-contacts-insert-generic-list events "Events")
+        (hyrolo-google-contacts-insert-generic-list relations "Relations"
+                                             (lambda (relation)
+                                               (widget-create 'link
+                                                              :button-prefix 
"" :button-suffix ""
+                                                              :action (lambda 
(widget &optional _event)
+                                                                        
(google-contacts (widget-value widget)))
+                                                              (cdr relation))
+                                               ""))
+        (hyrolo-google-contacts-insert-generic-list instant-messaging "Instant 
messaging"
+                                             (lambda (im)
+                                               (concat (cddr im) " (" (cadr 
im) ")")))
+
+        (when birthday
+          (insert "\n" (google-contacts-margin-element) "Birthday: " birthday 
"\n"))
+
+        (unless (string= notes "")
+          (insert "\n" (google-contacts-margin-element) "Notes:  "
+                  (google-contacts-add-margin-to-text notes 8)
+                  "\n"))
+
+        ;; Insert properties
+        (put-text-property beg (1+ beg) 'google-contacts t)
+        (when emails
+          (put-text-property beg (point)
+                             'google-contacts-email (concat fullname " <" (cdr 
(nth 0 emails)) ">")))))
+    (goto-char (point-min)))
+  ;; Return contacts
+  contacts)
+
+;; Derived from google-contacts.el.
+(defun hyrolo-google-contacts-insert-generic-list (items title &optional 
get-value)
+  "Insert a text for rendering ITEMS with TITLE.
+Use GET-VALUE to get the value from the cdr of the item,
+otherwise just put the cdr of item."
+  (when items
+    (insert "\n" (google-contacts-margin-element) (concat title ":\n"))
+    (dolist (item items)
+      (insert (google-contacts-margin-element) "  "
+              (concat (car item) ":") " "
+             (if get-value
+                  (funcall get-value item)
+                (cdr item))
+              "\n"))))
+
+;; Derived from google-contacts.el.
+(defun hyrolo-retrieve-google-contacts (&optional query-string force-refresh)
+  (interactive
+   (list (read-string "Look for: " (car google-contacts-history)
+                      'google-contacts-history)
+         current-prefix-arg))
+  (let ((buffer (google-contacts-make-buffer))
+        (token (google-contacts-oauth-token))
+        (google-contacts-expire-time (if force-refresh 0 
google-contacts-expire-time))
+        (inhibit-read-only t))
+    (with-current-buffer buffer
+      (setq google-contacts-query-string query-string)
+      (hyrolo-google-contacts-insert-data (xml-get-children 
(google-contacts-data query-string token)
+                                                           'entry)
+                                         token "* "))))
+
+;;; ************************************************************************
 ;;; Public functions
 ;;; ************************************************************************
 
@@ -1007,7 +1223,7 @@ HYROLO-BUF may be a file-name, buffer-name, or buffer."
 (defun hyrolo-highlight-matches (regexp start end)
   "Highlight matches for REGEXP in region from START to END."
   (if (fboundp 'hproperty:but-add)
-      (let ((hproperty:but-emphasize-p))
+      (let ((hproperty:but-emphasize-flag))
        (save-excursion
          (goto-char start)
          (while (re-search-forward regexp nil t)
diff --git a/kotl/EXAMPLE.kotl b/kotl/EXAMPLE.kotl
index 26e74d6..8447400 100644
--- a/kotl/EXAMPLE.kotl
+++ b/kotl/EXAMPLE.kotl
@@ -291,8 +291,9 @@
          3b18c3. cN: Hide any lines greater than N in each cell.  0 means
                  don't cutoff any lines.
 
-         3b18c4. e: Show ellipses when some content is hidden (turning this
-                 off may not work in Emacs25; nothing will happen)
+         3b18c4. e: Show ellipses when some content is hidden (This is
+                 always on in modern versions of Emacs; it cannot be
+                 turned off).
 
          3b18c5. lN: Hide cells at levels deeper than N.  0 means don't hide
                  any cells.
@@ -368,7 +369,7 @@ alpha ;; label-type
 
 ;; depth-first kcell attributes
 [[0
-  (creator "address@hidden" create-time "20160714:20:38:58" id-counter 77 file 
"/Users/bk/sw-dev/emacs/hyperbole-5.15/kotl/EXAMPLE.kotl")]
+  (creator "address@hidden" create-time "20170928:19:50:05" id-counter 77 file 
"/Users/bk/sw-dev/emacs/hyperbole/kotl/EXAMPLE.kotl")]
  [20
   (creator "address@hidden" create-time "19940104:17:38:28" no-fill t)]
  [75
diff --git a/kotl/kexport.el b/kotl/kexport.el
index 16a2273..1e9dc09 100644
--- a/kotl/kexport.el
+++ b/kotl/kexport.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:    26-Feb-98
 ;;
-;; Copyright (C) 1998-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1998-2017  Free Software Foundation, Inc.
 ;; See the "../HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -50,7 +50,7 @@
                 (string))
   :group 'hyperbole-koutliner)
 
-(defvar kexport:label-html-font-attributes
+(defcustom kexport:label-html-font-attributes
   "COLOR=\"#C100C1\" SIZE=\"-1\""
   "*String of HTML font attributes attached to kcell labels when exported."
   :type 'string
@@ -113,9 +113,9 @@ pattern may be:
 ;;; ************************************************************************
 
 ;;;###autoload
-(defun kexport:html (export-from output-to &optional soft-newlines-p)
+(defun kexport:html (export-from output-to &optional soft-newlines-flag)
   "Export a koutline buffer or file in EXPORT-FROM to html format in OUTPUT-TO.
-By default, this retains newlines within cells as they are.  With optional 
prefix arg, SOFT-NEWLINES-P, 
+By default, this retains newlines within cells as they are.  With optional 
prefix arg, SOFT-NEWLINES-FLAG, 
 hard newlines are not used.  Also converts Urls and Klinks into Html 
hyperlinks.
 STILL TODO:
   Make delimited pathnames into file links (but not if within klinks).
@@ -170,13 +170,13 @@ STILL TODO:
                                 title)))
 
     (princ "<HTML><HEAD>\n\n")
-    (princ "<A NAME=\"top\"></A><A NAME=\"0\"></A>\n")
+    (princ "<A ID=\"top\"></A><A ID=\"0\"></A>\n")
     (princ (format "<TITLE>%s</TITLE>\n" title))
     (if kexport:html-description
-       (princ (format "<META NAME=\"description\" CONTENT=\"%s\">\n"
+       (princ (format "<META ID=\"description\" CONTENT=\"%s\">\n"
                       kexport:html-description)))
     (if kexport:html-keywords
-       (princ (format "<META NAME=\"keywords\" CONTENT=\"%s\">\n"
+       (princ (format "<META ID=\"keywords\" CONTENT=\"%s\">\n"
                       kexport:html-keywords)))
     (princ "</HEAD>\n\n")
     (princ (format "<BODY %s>\n\n" kexport:html-body-attributes))
@@ -196,24 +196,23 @@ STILL TODO:
           (setq i (1- i)))
         (princ "<TABLE><TR>\n")
         (setq label (kcell-view:label))
-        (princ (format "<A NAME=\"%s\"></A>" label))
-        (princ (format "<A NAME=\"%s\"></A>\n" (kcell-view:idstamp)))
-        (princ "<TD WIDTH=2% VALIGN=top>\n")
+        (princ (format "<A ID=\"%s\"></A>" label))
+        (princ (format "<A ID=\"%s\"></A>\n" (kcell-view:idstamp)))
+        (princ "<TD WIDTH=2% VALIGN=top><PRE>\n")
         (princ (format
-                "<FONT %s>%s%s</FONT></TD>\n"
+                "<FONT %s>%s%s</FONT></PRE></TD>\n"
                 kexport:label-html-font-attributes
                 label separator))
         (princ "<TD>")
         (setq contents (kcell-view:contents))
         (if (string-match "\\`\\(address@hidden&*=+|/A-Za-z0-9 ]+\\):.*\\S-"
                           contents)
-            (princ (format "<A NAME=\"%s\"></A>"
+            (princ (format "<A ID=\"%s\"></A>"
                            (substring contents 0 (match-end 1)))))
         (setq contents (kexport:html-markup contents))
-        (or soft-newlines-p
-            (setq contents (hypb:replace-match-string
-                            "\n" contents "<BR>\n")))
-        (princ contents)
+        (if soft-newlines-flag
+            (princ contents)
+          (princ "<PRE>") (princ contents) (princ "</PRE>"))
         (princ "</TD>\n")
         (princ "</TR></TABLE>")
         (setq i level)
@@ -260,10 +259,10 @@ Works exclusively within a call to 
`hypb:replace-match-string'."
         (last-str-char (length string))
         (last-url-char (length url)))
     (while (memq (aref url (1- last-url-char))
-                '(?. ?, ?? ?# ?! ?* ?( ?)))
+                '(?. ?, ?? ?# ?! ?* ?\( ?\)))
       (setq last-url-char (1- last-url-char)))
     (while (memq (aref string (1- last-str-char))
-                '(?. ?, ?? ?# ?! ?* ?( ?)))
+                '(?. ?, ?? ?# ?! ?* ?\( ?\)))
       (setq last-str-char (1- last-str-char)))
     (format "<A HREF=\"%s\">%s</A>%s"
            (substring url 0 last-url-char)
diff --git a/kotl/kimport.el b/kotl/kimport.el
index de483b3..702a19c 100644
--- a/kotl/kimport.el
+++ b/kotl/kimport.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:    15-Nov-93 at 11:57:05
 ;;
-;; Copyright (C) 1993-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1993-2017  Free Software Foundation, Inc.
 ;; See the "../HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -62,6 +62,9 @@ cells as the initial set of children of the current cell, if 
any.
    .kotl - imported as a structured koutline
    .aug  - imported as an Augment post-numbered outline.")
 
+(defconst kimport:star-heading "^\\(\\*+\\)"
+  "Regular expression matching a star outline heading with the number of stars 
given by groupoing 1.")
+
 ;;; ************************************************************************
 ;;; Public functions
 ;;; ************************************************************************
@@ -260,13 +263,13 @@ an explanation of where imported cells are placed.
     (outline-show-all)
     (save-excursion
       (goto-char (point-min))
-      ;; If initial text in buffer is not an star outline node, add a star to
+      ;; If initial text in buffer is not a star outline node, add a star to
       ;; make it one, so it is not deleted from the import.
-      (if (not (looking-at "[ \t]*\\*"))
+      (unless (looking-at kimport:star-heading)
          (insert "* "))
       (goto-char (point-min))
       ;; Total number of top-level cells.
-      (setq total (count-matches "^[ \t]*\\*[ \t\n\r]"))
+      (setq total (count-matches (concat kimport:star-heading "[ \t\n\r]")))
       (if initially-empty-output
          nil
        ;; Insert first cell as sibling of current cell.
@@ -612,7 +615,7 @@ COUNT of inserted entries starts at 0.  TOTAL is the total 
number of entries
 in IMPORT-FROM, used to show a running tally of the imported entries."
   (set-buffer import-from)
   (let ((start (point))
-       (hyrolo-entry-regexp "^[ \t]*\\(\\*+\\)")
+       (hyrolo-entry-regexp kimport:star-heading)
        subtree-p end contents node-level child-label)
     ;; While find cells at import-level or deeper ...
     (while (and (re-search-forward hyrolo-entry-regexp nil t)
diff --git a/kotl/klink.el b/kotl/klink.el
index 6bb6426..d63d91f 100644
--- a/kotl/klink.el
+++ b/kotl/klink.el
@@ -61,6 +61,7 @@
 ;;; ************************************************************************
 
 (require 'subr-x) ;; For string-trim
+(eval-when-compile (require 'hbut)) ;; For defib.
 
 ;;; ************************************************************************
 ;;; Public functions
diff --git a/kotl/kotl-loaddefs.el b/kotl/kotl-autoloads.el
similarity index 91%
rename from kotl/kotl-loaddefs.el
rename to kotl/kotl-autoloads.el
index ddd06cc..3b33e73 100644
--- a/kotl/kotl-loaddefs.el
+++ b/kotl/kotl-autoloads.el
@@ -1,23 +1,22 @@
-;;; kotl-loaddefs.el --- automatically extracted autoloads
+;;; kotl-autoloads.el --- automatically extracted autoloads
 ;;
-;; Copyright (C) 2016  Free Software Foundation, Inc.
+;; Copyright (C) 2017  Free Software Foundation, Inc.
 ;;
 ;;; Code:
 
 
-;;;### (autoloads nil "kexport" "kexport.el" (22419 35813 249912
-;;;;;;  697000))
+;;;### (autoloads nil "kexport" "kexport.el" (23052 37373 0 0))
 ;;; Generated autoloads from kexport.el
 
 (autoload 'kexport:html "kexport" "\
 Export a koutline buffer or file in EXPORT-FROM to html format in OUTPUT-TO.
-By default, this retains newlines within cells as they are.  With optional 
prefix arg, SOFT-NEWLINES-P, 
+By default, this retains newlines within cells as they are.  With optional 
prefix arg, SOFT-NEWLINES-FLAG, 
 hard newlines are not used.  Also converts Urls and Klinks into Html 
hyperlinks.
 STILL TODO:
   Make delimited pathnames into file links (but not if within klinks).
   Copy attributes stored in cell 0 and attributes from each cell.
 
-\(fn EXPORT-FROM OUTPUT-TO &optional SOFT-NEWLINES-P)" t nil)
+\(fn EXPORT-FROM OUTPUT-TO &optional SOFT-NEWLINES-FLAG)" t nil)
 
 ;;;***
 
@@ -42,7 +41,7 @@ View an existing kotl version-2 file FILE-NAME in a read-only 
mode.
 
 ;;;***
 
-;;;### (autoloads nil "kimport" "kimport.el" (22415 50714 79447 574000))
+;;;### (autoloads nil "kimport" "kimport.el" (23051 38597 0 0))
 ;;; Generated autoloads from kimport.el
 
 (defvar kimport:mode-alist '((t . kimport:text) (outline-mode . 
kimport:star-outline)) "\
@@ -129,7 +128,7 @@ The variable, `paragraph-start,' is used to determine 
paragraphs.
 
 ;;;***
 
-;;;### (autoloads nil "klink" "klink.el" (22415 50714 80447 205000))
+;;;### (autoloads nil "klink" "klink.el" (22481 28335 0 0))
 ;;; Generated autoloads from klink.el
 
 (autoload 'klink:create "klink" "\
@@ -141,8 +140,7 @@ See documentation for `kcell:ref-to-id' for valid cell-ref 
formats.
 
 ;;;***
 
-;;;### (autoloads nil "kotl-mode" "kotl-mode.el" (22418 11616 709753
-;;;;;;  7000))
+;;;### (autoloads nil "kotl-mode" "kotl-mode.el" (22989 19633 0 0))
 ;;; Generated autoloads from kotl-mode.el
 
 (autoload 'kotl-mode "kotl-mode" "\
@@ -195,15 +193,15 @@ Signal an error if current buffer is not a Hyperbole 
outline, else return t.
 
 ;;;### (autoloads nil nil ("kcell.el" "kfill.el" "klabel.el" "kmenu.el"
 ;;;;;;  "knode.el" "kprop-em.el" "kprop-xe.el" "kproperty.el" "kview.el"
-;;;;;;  "kvspec.el") (22419 36720 3219 570000))
+;;;;;;  "kvspec.el") (22989 23220 0 0))
 
 ;;;***
 
-(provide 'kotl-loaddefs)
+(provide 'kotl-autoloads)
 ;; Local Variables:
 ;; version-control: never
 ;; no-byte-compile: t
 ;; no-update-autoloads: t
 ;; coding: utf-8
 ;; End:
-;;; kotl-loaddefs.el ends here
+;;; kotl-autoloads.el ends here
diff --git a/kotl/kotl-mode.el b/kotl/kotl-mode.el
index d3408f7..7f1b766 100644
--- a/kotl/kotl-mode.el
+++ b/kotl/kotl-mode.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:    6/30/93
 ;;
-;; Copyright (C) 1993-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1993-2017  Free Software Foundation, Inc.
 ;; See the "../HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -91,9 +91,11 @@ It provides the following keys:
   ;; Used by kimport.el functions.
   (unless (and (boundp 'kotl-previous-mode) kotl-previous-mode)
     (setq kotl-previous-mode major-mode
-         ;; Remove outline indication due to selective-display.
+         ;; Remove outline minor-mode mode-line indication.
          minor-mode-alist (copy-sequence minor-mode-alist)
-         minor-mode-alist (set:remove '(selective-display " Outline")
+         minor-mode-alist (set:remove '(outline-minor-mode " Outl")
+                                      minor-mode-alist)
+         minor-mode-alist (set:remove '(selective-display " Outline")
                                       minor-mode-alist)
          minor-mode-alist (set:remove '(selective-display " Otl")
                                       minor-mode-alist)
@@ -1967,10 +1969,11 @@ If key is pressed:
      a cell, then move point to prior location and begin creation of a
      klink to some other outline cell; hit the Action Key twice to select the
      link referent cell;
- (4) anywhere else, scroll up a windowful."
+ (4) anywhere else, invoke `action-key-eol-function', typically to scroll up
+     a windowful."
   (interactive)
   (cond        ((kotl-mode:eobp) (kotl-mode:show-all))
-       ((kotl-mode:eolp) (smart-scroll-up))
+       ((kotl-mode:eolp) (funcall action-key-eol-function))
        ((not (kview:valid-position-p))
         (if (markerp action-key-depress-prev-point)
             (progn (select-window
@@ -2001,10 +2004,11 @@ If assist-key is pressed:
      a cell, then move point to prior location and prompt to move one tree to
      a new location in the outline; hit the Action Key twice to select the
      tree to move and where to move it;
- (4) anywhere else, scroll down a windowful."
+ (4) anywhere else, invoke `assist-key-eol-function', typically to scroll down
+     a windowful."
   (interactive)
   (cond ((kotl-mode:eobp) (kotl-mode:overview))
-       ((kotl-mode:eolp) (smart-scroll-down))
+       ((kotl-mode:eolp) (funcall assist-key-eol-function))
        ((not (kview:valid-position-p))
         (if (markerp assist-key-depress-prev-point)
             (progn (select-window
diff --git a/kotl/kview.el b/kotl/kview.el
index 9886473..d5e7164 100644
--- a/kotl/kview.el
+++ b/kotl/kview.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:    6/30/93
 ;;
-;; Copyright (C) 1993-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1993-2017  Free Software Foundation, Inc.
 ;; See the "../HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -525,10 +525,10 @@ level."
 (defun kview:char-invisible-p (&optional pos)
   "Return t if the character after point is invisible/hidden, else nil."
   (or pos (setq pos (point)))
-  (if (or (kproperty:get pos 'invisible)
-         (delq nil (mapcar (lambda (o) (overlay-get o 'invisible))
-                           (overlays-at (or pos (point))))))
-      t))
+  (when (or (kproperty:get pos 'invisible)
+           (delq nil (mapcar (lambda (o) (overlay-get o 'invisible))
+                             (overlays-at (or pos (point))))))
+    t))
 
 (defun kview:char-visible-p (&optional pos)
   "Return t if the character after point is visible, else nil."
diff --git a/kotl/kvspec.el b/kotl/kvspec.el
index 9a3da5a..98dfc5f 100644
--- a/kotl/kvspec.el
+++ b/kotl/kvspec.el
@@ -4,14 +4,14 @@
 ;;
 ;; Orig-Date:    21-Oct-95 at 15:17:07
 ;;
-;; Copyright (C) 1995-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1995-2017  Free Software Foundation, Inc.
 ;; See the "../HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
 
 ;;; Commentary:
 ;;
-;;; Koutliner view specs
+;;; Koutliner view specs (each viewspec is invoked with its first letter)
 ;; + means support code has been written already.
 ;;
 ;; +      all:     Show all lines of cells and all cells in the outline.
@@ -21,7 +21,7 @@
 ;;          c - set default cutoff lines
 ;;          cNUM - set cutoff lines to NUM
 ;;        descend: Only entries below this entry
-;; +      elide:   Ellipses are on.
+;; +      elide:   Ellipses are on (now always true)
 ;;          e - ellipses on 
 ;;        filter:  Regexp or filter program to select entries for view,
 ;;                 off=select non-matching entries
@@ -77,8 +77,8 @@ VIEW-SPEC is a string or t, which means recompute the current 
view spec.  See
 <${hyperb:dir}/kotl/EXAMPLE.kotl, 2b17=048> for details on valid view specs."
   (interactive (list (read-string "Set view spec: " kvspec:current)))
   (kotl-mode:is-p)
-  (if (or (equal view-spec "") (equal view-spec kvspec:current))
-      (setq view-spec nil))
+  (when (equal view-spec "")
+    (setq view-spec nil))
   (kvspec:initialize)
   (kvspec:update view-spec)
   (kvspec:update-view))
@@ -143,9 +143,16 @@ to be current but does not recompute the viewspec itself.  
See
 view specs." 
   (cond ((stringp view-spec)
         ;; Use given view-spec after removing extraneous characters.
-        (setq kvspec:current
+        (setq view-spec
               (hypb:replace-match-string
-               "[^.*~0-9abcdefgilnrsv]+" view-spec "" t)))
+               "[^.*~0-9abcdefgilnrsv]+" view-spec "" t))
+        (unless (string-match "e" view-spec)
+          ;; Force 'e' elide view spec if not there.
+          (setq view-spec
+                (if (string-match "\\([abcd]+\\)" view-spec)
+                    (replace-match "\\1e" t nil view-spec)
+                  (concat "e" view-spec))))
+        (setq kvspec:current view-spec))
        ((or (eq view-spec t) (null kvspec:current))
         (setq kvspec:current (kvspec:compute))))
   ;; Update display using current specs.
@@ -209,9 +216,8 @@ view specs."
                                       kvspec:label-type-alist)))))))))
 
 (defun kvspec:elide ()
-  "Turn ellipses display following clipped cells on or off according to 
`kvspec:current'."
-  (setq selective-display-ellipses
-       (if (string-match "e" kvspec:current) t)))
+  "Turn ellipses display following clipped cells on.  This cannot be turned 
off."
+  (setq selective-display-ellipses t))
 
 (defun kvspec:hide-levels ()
   "Show a set number of cell levels according to `kvspec:current'."
diff --git a/dir b/man/dir
similarity index 100%
rename from dir
rename to man/dir
diff --git a/man/hkey-help.txt b/man/hkey-help.txt
index 7dcdeef..25dca92 100644
--- a/man/hkey-help.txt
+++ b/man/hkey-help.txt
@@ -28,32 +28,62 @@ Mouse-only Control
     expression, such as a
     string, list or markup
     language tag pair
+
   Drag from shared window side
     or from left of scroll bar  Resizes window width       <- same
+  Modeline vertical drag        Resizes window height      <- same
+
+  Other Modeline drag to        Replaces dest. buffer      Swaps window buffers
+    another window                with source buffer
+
+  Drag to a Modeline from:
+    buffer/file menu item       Displays buffer/file in    Swaps window buffers
+                                  new window by release
+    buffer/file menu 1st line   Moves buffer/file menu to  Swaps window buffers
+                                  new window by release
+    anywhere else               Displays buffer in         Swaps window buffers
+                                  new window by release
+
+  Drag between windows from:
+    buffer/file menu item       Displays buffer/file in    Swaps window buffers
+                                  window of button release 
+    buffer/file menu 1st line   Moves buffer/file menu     Swaps window buffers
+    anywhere else               Creates/modifies a link    Swaps window buffers
 
-  Modeline press+wind release   Resizes window height      <- same
-  Click in modeline
+  Drag outside of Emacs from:
+    buffer/file menu item       Displays buffer/file in    Moves window to new 
frame
+                                  a new frame
+    Modeline or other window    Clones window to new frame Moves window to new 
frame
+
+  Modeline Click
     Left modeline edge          Buries current buffer      Unburies bottom 
buffer
     Right modeline edge         Info manual browser        Smart Key summary
+    Buffer ID                   Dired on buffer's dir      Next buffer
+                                  or on parent when a dir
     Other blank area            Action Key modeline hook   Assist Key modeline 
hook
-                                  Show/Hide Buffer Menu      Popup Jump & 
Manage Menu
+                                  Shows/Hides Buffer Menu    Popup Jump & 
Manage Menu
 
-  Drag between windows          Creates/modifies a link    Swaps wind buffers
   Drag in window, region active Error, not allowed         Error, not allowed
   Horizontal drag in a window   Splits window below        Deletes window
   Vertical drag in a window     Splits window side-by-side Deletes window
   Diagonal drag in a window     Saves wconfig              Restores wconfig 
from ring
-  Active region exists          Yanks sexp at release      Kills & yanks sexp 
at release
+
+  Active region exists, click   Yanks region at release    Kills and yanks at 
release
+   outside of the region
 
 Hyperbole Key Press/Click in Special Modes
-  Emacs push button             Activates button           Button help
-  Thing begin or end            Mark thing region          Mark & kill thing 
region
+  Region Active                 Yanks region at release    Kills and yanks at 
release
+  Emacs Push Button             Activates button           Button help
+  Thing Begin or End            Mark thing region          Mark & kill thing 
region
+  Page Directory Listing        Jumps to page              <- same
+  Imenu Programming Identifier  Jumps to in-buffer def     Prompts for id to 
jump to
   C,C++,Objective-C,Java Modes  Jumps to id/include def    Jumps to next def
+  Assembly Language Mode        Jumps to id/include def    Jumps to next def
   Java Cross-reference Tag      Jumps to identifier def    Jumps to next def
   JavaScript and Python Modes   Jumps to identifier def    Jumps to next def
-  Assembly Language Mode        Jumps to id/include def    Jumps to next def
-  Any Lisp or Fortran Mode      Jumps to id def            Jumps to next def
+  Any Lisp or Fortran Mode      Jumps to identifier def    Jumps to next def
   Emacs Lisp Compiler Error     Jumps to def with error    <- same
+  Other Compiler Error          Jumps to src error line    <- same
   Grep or Occur Match           Jumps to match source line <- same
   Multi-buffer Occur Match      Jumps to match source line <- same
   Etags `TAGS' file entry       Jumps to source line       Button help
diff --git a/man/hyperbole.css b/man/hyperbole.css
new file mode 100644
index 0000000..fc36761
--- /dev/null
+++ b/man/hyperbole.css
@@ -0,0 +1,453 @@
+<style type="text/css">
+body {
+    font-family: Helvetica, arial, sans-serif;
+    font-size: 14px;
+    line-height: 1.6;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    background-color: white;
+    padding: 30px; }
+
+body > *:first-child {
+    margin-top: 0 !important; }
+body > *:last-child {
+    margin-bottom: 0 !important; }
+
+a {
+    color: #4183C4; }
+a.absent {
+    color: #cc0000; }
+a.anchor {
+    display: block;
+    padding-left: 30px;
+    margin-left: -30px;
+    cursor: pointer;
+    position: absolute;
+    top: 0;
+    left: 0;
+    bottom: 0; }
+
+h1, h2, h3, h4, h5, h6 {
+    margin: 20px 0 10px;
+    padding: 0;
+    font-weight: bold;
+    -webkit-font-smoothing: antialiased;
+    cursor: text;
+    position: relative; }
+
+h1 tt, h1 code {
+    font-size: inherit; }
+
+h2 tt, h2 code {
+    font-size: inherit; }
+
+h3 tt, h3 code {
+    font-size: inherit; }
+
+h4 tt, h4 code {
+    font-size: inherit; }
+
+h5 tt, h5 code {
+    font-size: inherit; }
+
+h6 tt, h6 code {
+    font-size: inherit; }
+
+h1 {
+    font-size: 28px;
+    color: black; }
+
+h2 {
+    font-size: 24px;
+    border-bottom: 1px solid #cccccc;
+    color: black; }
+
+h3 {
+    font-size: 18px; }
+
+h4 {
+    font-size: 16px; }
+
+h5 {
+    font-size: 14px; }
+
+h6 {
+    color: #777777;
+    font-size: 14px; }
+
+p, blockquote, ul, ol, dl, li, table, pre {
+    margin: 15px 0; }
+
+hr {
+    background: transparent 
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj
 [...]
+    border: 0 none;
+    color: #cccccc;
+    height: 4px;
+    padding: 0;
+}
+
+body > h2:first-child {
+    margin-top: 0;
+    padding-top: 0; }
+body > h1:first-child {
+    margin-top: 0;
+    padding-top: 0; }
+body > h1:first-child + h2 {
+    margin-top: 0;
+    padding-top: 0; }
+body > h3:first-child, body > h4:first-child, body > h5:first-child, body > 
h6:first-child {
+    margin-top: 0;
+    padding-top: 0; }
+
+a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, 
a:first-child h5, a:first-child h6 {
+    margin-top: 0;
+    padding-top: 0; }
+
+h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
+    margin-top: 0; }
+
+li p.first {
+    display: inline-block; }
+li {
+    margin: 0; }
+ul, ol {
+    padding-left: 30px; }
+
+ul :first-child, ol :first-child {
+    margin-top: 0; }
+
+dl {
+    padding: 0; }
+dl dt {
+    font-size: 14px;
+    font-weight: bold;
+    font-style: italic;
+    padding: 0;
+    margin: 15px 0 5px; }
+dl dt:first-child {
+    padding: 0; }
+dl dt > :first-child {
+    margin-top: 0; }
+dl dt > :last-child {
+    margin-bottom: 0; }
+dl dd {
+    margin: 0 0 15px;
+    padding: 0 15px; }
+dl dd > :first-child {
+    margin-top: 0; }
+dl dd > :last-child {
+    margin-bottom: 0; }
+
+blockquote {
+    border-left: 4px solid #dddddd;
+    padding: 0 15px;
+    color: #777777; }
+blockquote > :first-child {
+    margin-top: 0; }
+blockquote > :last-child {
+    margin-bottom: 0; }
+
+table {
+    padding: 0;border-collapse: collapse; }
+table tr {
+    border-top: 1px solid #cccccc;
+    background-color: white;
+    margin: 0;
+    padding: 0; }
+table tr:nth-child(2n) {
+    background-color: #f8f8f8; }
+table tr th {
+    font-weight: bold;
+    border: 1px solid #cccccc;
+    margin: 0;
+    padding: 6px 13px; }
+table tr td {
+    border: 1px solid #cccccc;
+    margin: 0;
+    padding: 6px 13px; }
+table tr th :first-child, table tr td :first-child {
+    margin-top: 0; }
+table tr th :last-child, table tr td :last-child {
+    margin-bottom: 0; }
+
+pre.menu-comment {font-family: serif; font-size: 18px;}
+
+table.menu {
+    padding: 0; border-collapse: collapse; }
+table.menu tr {
+    border-top: 0;
+    margin: 0;
+    padding: 0; }
+table.menu tr th {
+    font-weight: bold;
+    border: 0;
+    margin: 0;
+    padding: 6px 13px; }
+table.menu tr td {
+    border: 0;
+    margin: 0;
+    padding: 6px 13px; }
+table.menu tr th :first-child, table tr td :first-child {
+    margin-top: 0; }
+table.menu tr th :last-child, table tr td :last-child {
+    margin-bottom: 0; }
+
+img {
+    max-width: 100%;
+    background: transparent; }
+
+span.frame {
+    display: block;
+    overflow: hidden; }
+span.frame > span {
+    border: 1px solid #dddddd;
+    display: block;
+    float: left;
+    overflow: hidden;
+    margin: 13px 0 0;
+    padding: 7px;
+    width: auto; }
+span.frame span img {
+    display: block;
+    float: left; }
+span.frame span span {
+    clear: both;
+    color: #333333;
+    display: block;
+    padding: 5px 0 0; }
+span.align-center {
+    display: block;
+    overflow: hidden;
+    clear: both; }
+span.align-center > span {
+    display: block;
+    overflow: hidden;
+    margin: 13px auto 0;
+    text-align: center; }
+span.align-center span img {
+    margin: 0 auto;
+    text-align: center; }
+span.align-right {
+    display: block;
+    overflow: hidden;
+    clear: both; }
+span.align-right > span {
+    display: block;
+    overflow: hidden;
+    margin: 13px 0 0;
+    text-align: right; }
+span.align-right span img {
+    margin: 0;
+    text-align: right; }
+span.float-left {
+    display: block;
+    margin-right: 13px;
+    overflow: hidden;
+    float: left; }
+span.float-left span {
+    margin: 13px 0 0; }
+span.float-right {
+    display: block;
+    margin-left: 13px;
+    overflow: hidden;
+    float: right; }
+span.float-right > span {
+    display: block;
+    overflow: hidden;
+    margin: 13px auto 0;
+    text-align: right; }
+
+code, tt {
+    margin: 0 2px;
+    padding: 0 0px;
+    white-space: nowrap;
+    border: 1px solid #eaeaea;
+    background-color: #f8f8f8;
+    border-radius: 3px; }
+
+pre code {
+    margin: 0;
+    padding: 0;
+    white-space: pre;
+    border: none;
+    background: transparent; }
+
+.highlight pre {
+    background-color: #f8f8f8;
+    border: 1px solid #cccccc;
+    font-size: 13px;
+    line-height: 19px;
+    overflow: auto;
+    padding: 6px 10px;
+    border-radius: 3px; }
+
+pre {
+    background-color: #f8f8f8;
+    border: 1px solid #cccccc;
+    font-size: 13px;
+    line-height: 19px;
+    overflow: auto;
+    padding: 6px 10px;
+    border-radius: 3px; }
+pre code, pre tt {
+    background-color: transparent;
+    border: none; }
+
+sup {
+    font-size: 0.83em;
+    vertical-align: super;
+    line-height: 0;
+}
+* {
+    -webkit-print-color-adjust: exact;
+}
address@hidden screen and (min-width: 914px) {
+    body {
+        width: 854px;
+        margin:0 auto;
+    }
+}
address@hidden print {
+    table, pre {
+       page-break-inside: avoid;
+    }
+    pre {
+       word-wrap: break-word;
+    }
+}
+</style>
+
+<style type="text/css">
+
+code[class*="language-"],
+pre[class*="language-"] {
+    color: black;
+    background: none;
+    text-shadow: 0 1px white;
+    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+    text-align: left;
+    white-space: pre;
+    word-spacing: normal;
+    word-break: normal;
+    word-wrap: normal;
+    line-height: 1.5;
+
+    -moz-tab-size: 4;
+    -o-tab-size: 4;
+    tab-size: 4;
+
+    -webkit-hyphens: none;
+    -moz-hyphens: none;
+    -ms-hyphens: none;
+    hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] 
::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] 
::-moz-selection {
+    text-shadow: none;
+    background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+    text-shadow: none;
+    background: #b3d4fc;
+}
+
address@hidden print {
+    code[class*="language-"],
+    pre[class*="language-"] {
+       text-shadow: none;
+    }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+    padding: 1em;
+    margin: .5em 0;
+    overflow: auto;
+}
+
+:not(pre) > code[class*="language-"],
+ pre[class*="language-"] {
+    background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+    padding: .1em;
+    border-radius: .3em;
+    white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+    color: slategray;
+}
+
+.token.punctuation {
+    color: #999;
+}
+
+.namespace {
+    opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+    color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+    color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+    color: #a67f59;
+    background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+    color: #07a;
+}
+
+.token.function {
+    color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+    color: #e90;
+}
+
+.token.important,
+.token.bold {
+    font-weight: bold;
+}
+.token.italic {
+    font-style: italic;
+}
+
+.token.entity {
+    cursor: help;
+}
+</style>
diff --git a/man/hyperbole.html b/man/hyperbole.html
index 6b4e9be..a774f55 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -1,9 +1,9 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
 <html>
 <!-- This manual is for GNU Hyperbole
-(Edition 6.0.2, Published August 9, 2016).
+(Edition 7.0.0, Published November 15, 2017).
 
-Copyright (C) 1989-2016  Free Software Foundation, Inc.
+Copyright (C) 1989-2017  Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -20,8 +20,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 See the GNU General Public License for more details in the file,
 "COPYING", within the Hyperbole package directory. -->
-<!-- Created by GNU Texinfo 6.1dev, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
 <head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>GNU Hyperbole Manual</title>
 
 <meta name="description" content="GNU Hyperbole Manual">
@@ -29,7 +30,6 @@ See the GNU General Public License for more details in the 
file,
 <meta name="resource-type" content="document">
 <meta name="distribution" content="global">
 <meta name="Generator" content="makeinfo">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <link href="#Top" rel="start" title="Top">
 <link href="#Key-Index" rel="index" title="Key Index">
 <link href="#SEC_Contents" rel="contents" title="Table of Contents">
@@ -61,6 +61,7 @@ span.sansserif {font-family: sans-serif; font-weight: normal}
 ul.no-bullet {list-style: none}
 -->
 </style>
+<link rel="stylesheet" type="text/css" href="hyperbole.css">
 
 
 </head>
@@ -89,8 +90,8 @@ ul.no-bullet {list-style: none}
 <ul class="no-bullet">
 <li><a name="stoc-GNU-Hyperbole" href="#toc-GNU-Hyperbole">GNU 
Hyperbole</a></li>
 <li><a name="stoc-Introduction-1" href="#toc-Introduction-1">1 
Introduction</a></li>
-<li><a name="stoc-Buttons-1" href="#toc-Buttons-1">2 Buttons</a></li>
-<li><a name="stoc-Smart-Keys-1" href="#toc-Smart-Keys-1">3 Smart Keys</a></li>
+<li><a name="stoc-Smart-Keys-1" href="#toc-Smart-Keys-1">2 Smart Keys</a></li>
+<li><a name="stoc-Buttons-1" href="#toc-Buttons-1">3 Buttons</a></li>
 <li><a name="stoc-Menus-1" href="#toc-Menus-1">4 Menus</a></li>
 <li><a name="stoc-HyControl-1" href="#toc-HyControl-1">5 HyControl</a></li>
 <li><a name="stoc-Koutliner-1" href="#toc-Koutliner-1">6 Koutliner</a></li>
@@ -126,38 +127,50 @@ ul.no-bullet {list-style: none}
   <li><a name="toc-Hyperbole-Overview-1" href="#Hyperbole-Overview">1.3 
Hyperbole Overview</a></li>
   <li><a name="toc-Mail-Lists-1" href="#Mail-Lists">1.4 Mail Lists</a></li>
 </ul></li>
-<li><a name="toc-Buttons-1" href="#Buttons">2 Buttons</a>
+<li><a name="toc-Smart-Keys-1" href="#Smart-Keys">2 Smart Keys</a>
 <ul class="no-bullet">
-  <li><a name="toc-Explicit-Buttons-1" href="#Explicit-Buttons">2.1 Explicit 
Buttons</a></li>
-  <li><a name="toc-Global-Buttons-1" href="#Global-Buttons">2.2 Global 
Buttons</a></li>
-  <li><a name="toc-Implicit-Buttons-1" href="#Implicit-Buttons">2.3 Implicit 
Buttons</a></li>
-  <li><a name="toc-Button-Files-1" href="#Button-Files">2.4 Button 
Files</a></li>
-  <li><a name="toc-Action-Types-1" href="#Action-Types">2.5 Action 
Types</a></li>
-  <li><a name="toc-Button-Type-Precedence-1" 
href="#Button-Type-Precedence">2.6 Button Type Precedence</a></li>
-  <li><a name="toc-Utilizing-Explicit-Buttons-1" 
href="#Utilizing-Explicit-Buttons">2.7 Utilizing Explicit Buttons</a>
+  <li><a name="toc-Smart-Key-Bindings-1" href="#Smart-Key-Bindings">2.1 Smart 
Key Bindings</a></li>
+  <li><a name="toc-Smart-Key-Operations-1" href="#Smart-Key-Operations">2.2 
Smart Key Operations</a></li>
+  <li><a name="toc-Smart-Key-Argument-Selection-1" 
href="#Smart-Key-Argument-Selection">2.3 Smart Key Argument Selection</a></li>
+  <li><a name="toc-Smart-Key-Debugging-1" href="#Smart-Key-Debugging">2.4 
Smart Key Debugging</a></li>
+  <li><a name="toc-Smart-Key-Thing-Selection-1" 
href="#Smart-Key-Thing-Selection">2.5 Smart Key Thing Selection</a></li>
+  <li><a name="toc-Smart-Mouse-Key-Modeline-Clicks-1" 
href="#Smart-Mouse-Key-Modeline-Clicks">2.6 Smart Mouse Key Modeline 
Clicks</a></li>
+  <li><a name="toc-Smart-Mouse-Key-Drags-1" href="#Smart-Mouse-Key-Drags">2.7 
Smart Mouse Key Drags</a>
   <ul class="no-bullet">
-    <li><a name="toc-Creation-1" href="#Creation">2.7.1 Creation</a>
+    <li><a name="toc-Creating-and-Deleting-Windows-1" 
href="#Creating-and-Deleting-Windows">2.7.1 Creating and Deleting 
Windows</a></li>
+    <li><a name="toc-Saving-and-Restoring-Window-Configurations-1" 
href="#Saving-and-Restoring-Window-Configurations">2.7.2 Saving and Restoring 
Window Configurations</a></li>
+    <li><a name="toc-Resizing-Windows-1" href="#Resizing-Windows">2.7.3 
Resizing Windows</a></li>
+    <li><a name="toc-Dragging-Buffers_002c-Windows-and-Items" 
href="#Dragging-Buffers">2.7.4 Dragging Buffers, Windows and Items</a>
     <ul class="no-bullet">
-      <li><a name="toc-Creation-Via-Action-Key-Drags" 
href="#By-Dragging">2.7.1.1 Creation Via Action Key Drags</a></li>
-      <li><a name="toc-Creation-Via-Menus" href="#By-Menu">2.7.1.2 Creation 
Via Menus</a></li>
+      <li><a name="toc-Swapping-Buffers-1" href="#Swapping-Buffers">2.7.4.1 
Swapping Buffers</a></li>
+      <li><a name="toc-Displaying-Buffers-1" 
href="#Displaying-Buffers">2.7.4.2 Displaying Buffers</a></li>
+      <li><a name="toc-Cloning-Windows-1" href="#Cloning-Windows">2.7.4.3 
Cloning Windows</a></li>
+      <li><a name="toc-Displaying-File-and-Buffer-Items-1" 
href="#Displaying-File-and-Buffer-Items">2.7.4.4 Displaying File and Buffer 
Items</a></li>
     </ul></li>
-    <li><a name="toc-Renaming-1" href="#Renaming">2.7.2 Renaming</a></li>
-    <li><a name="toc-Deletion-1" href="#Deletion">2.7.3 Deletion</a></li>
-    <li><a name="toc-Modification-1" href="#Modification">2.7.4 
Modification</a></li>
-    <li><a name="toc-Location-1" href="#Location">2.7.5 Location</a></li>
-    <li><a name="toc-Buttons-in-Mail-1" href="#Buttons-in-Mail">2.7.6 Buttons 
in Mail</a></li>
-    <li><a name="toc-Buttons-in-News-1" href="#Buttons-in-News">2.7.7 Buttons 
in News</a></li>
   </ul></li>
 </ul></li>
-<li><a name="toc-Smart-Keys-1" href="#Smart-Keys">3 Smart Keys</a>
+<li><a name="toc-Buttons-1" href="#Buttons">3 Buttons</a>
 <ul class="no-bullet">
-  <li><a name="toc-Smart-Key-Bindings-1" href="#Smart-Key-Bindings">3.1 Smart 
Key Bindings</a></li>
-  <li><a name="toc-Smart-Key-Operations-1" href="#Smart-Key-Operations">3.2 
Smart Key Operations</a></li>
-  <li><a name="toc-Smart-Key-Modeline-1" href="#Smart-Key-Modeline">3.3 Smart 
Key Modeline</a></li>
-  <li><a name="toc-Smart-Key-Thing-Selection-1" 
href="#Smart-Key-Thing-Selection">3.4 Smart Key Thing Selection</a></li>
-  <li><a name="toc-Smart-Key-Argument-Selection-1" 
href="#Smart-Key-Argument-Selection">3.5 Smart Key Argument Selection</a></li>
-  <li><a name="toc-Smart-Key-Modifiers-1" href="#Smart-Key-Modifiers">3.6 
Smart Key Modifiers</a></li>
-  <li><a name="toc-Smart-Key-Debugging-1" href="#Smart-Key-Debugging">3.7 
Smart Key Debugging</a></li>
+  <li><a name="toc-Explicit-Buttons-1" href="#Explicit-Buttons">3.1 Explicit 
Buttons</a></li>
+  <li><a name="toc-Global-Buttons-1" href="#Global-Buttons">3.2 Global 
Buttons</a></li>
+  <li><a name="toc-Implicit-Buttons-1" href="#Implicit-Buttons">3.3 Implicit 
Buttons</a></li>
+  <li><a name="toc-Button-Files-1" href="#Button-Files">3.4 Button 
Files</a></li>
+  <li><a name="toc-Action-Types-1" href="#Action-Types">3.5 Action 
Types</a></li>
+  <li><a name="toc-Button-Type-Precedence-1" 
href="#Button-Type-Precedence">3.6 Button Type Precedence</a></li>
+  <li><a name="toc-Utilizing-Explicit-Buttons-1" 
href="#Utilizing-Explicit-Buttons">3.7 Utilizing Explicit Buttons</a>
+  <ul class="no-bullet">
+    <li><a name="toc-Creation-1" href="#Creation">3.7.1 Creation</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Creation-Via-Action-Key-Drags" 
href="#By-Dragging">3.7.1.1 Creation Via Action Key Drags</a></li>
+      <li><a name="toc-Creation-Via-Menus" href="#By-Menu">3.7.1.2 Creation 
Via Menus</a></li>
+    </ul></li>
+    <li><a name="toc-Renaming-1" href="#Renaming">3.7.2 Renaming</a></li>
+    <li><a name="toc-Deletion-1" href="#Deletion">3.7.3 Deletion</a></li>
+    <li><a name="toc-Modification-1" href="#Modification">3.7.4 
Modification</a></li>
+    <li><a name="toc-Searching-and-Summarizing-1" 
href="#Searching-and-Summarizing">3.7.5 Searching and Summarizing</a></li>
+    <li><a name="toc-Buttons-in-Mail-1" href="#Buttons-in-Mail">3.7.6 Buttons 
in Mail</a></li>
+    <li><a name="toc-Buttons-in-News-1" href="#Buttons-in-News">3.7.7 Buttons 
in News</a></li>
+  </ul></li>
 </ul></li>
 <li><a name="toc-Menus-1" href="#Menus">4 Menus</a></li>
 <li><a name="toc-HyControl-1" href="#HyControl">5 HyControl</a></li>
@@ -189,11 +202,11 @@ ul.no-bullet {list-style: none}
 </ul></li>
 <li><a name="toc-HyRolo-1" href="#HyRolo">7 HyRolo</a>
 <ul class="no-bullet">
-  <li><a name="toc-Rolo-Concepts-1" href="#Rolo-Concepts">7.1 Rolo 
Concepts</a></li>
-  <li><a name="toc-Rolo-Menu-1" href="#Rolo-Menu">7.2 Rolo Menu</a></li>
-  <li><a name="toc-Rolo-Searching-1" href="#Rolo-Searching">7.3 Rolo 
Searching</a></li>
-  <li><a name="toc-Rolo-Keys-1" href="#Rolo-Keys">7.4 Rolo Keys</a></li>
-  <li><a name="toc-Rolo-Settings-1" href="#Rolo-Settings">7.5 Rolo 
Settings</a></li>
+  <li><a name="toc-HyRolo-Concepts-1" href="#HyRolo-Concepts">7.1 HyRolo 
Concepts</a></li>
+  <li><a name="toc-Rolo-Menu" href="#HyRolo-Menu">7.2 Rolo Menu</a></li>
+  <li><a name="toc-HyRolo-Searching-1" href="#HyRolo-Searching">7.3 HyRolo 
Searching</a></li>
+  <li><a name="toc-HyRolo-Keys-1" href="#HyRolo-Keys">7.4 HyRolo Keys</a></li>
+  <li><a name="toc-HyRolo-Settings-1" href="#HyRolo-Settings">7.5 HyRolo 
Settings</a></li>
 </ul></li>
 <li><a name="toc-Window-Configurations-1" href="#Window-Configurations">8 
Window Configurations</a></li>
 <li><a name="toc-Developing-with-Hyperbole-1" 
href="#Developing-with-Hyperbole">9 Developing with Hyperbole</a>
@@ -220,13 +233,14 @@ ul.no-bullet {list-style: none}
   <li><a name="toc-Invocation-1" href="#Invocation">B.2 Invocation</a></li>
   <li><a name="toc-Customization-1" href="#Customization">B.3 Customization</a>
   <ul class="no-bullet">
-    <li><a name="toc-Web-Search-Engines-1" href="#Web-Search-Engines">B.3.1 
Web Search Engines</a></li>
-    <li><a name="toc-Using-URLs-with-Find_002dFile-1" 
href="#Using-URLs-with-Find_002dFile">B.3.2 Using URLs with Find-File</a></li>
-    <li><a name="toc-Internal-Viewers-1" href="#Internal-Viewers">B.3.3 
Internal Viewers</a></li>
-    <li><a name="toc-External-Viewers-1" href="#External-Viewers">B.3.4 
External Viewers</a></li>
-    <li><a name="toc-Invisible-Text-Searches-1" 
href="#Invisible-Text-Searches">B.3.5 Invisible Text Searches</a></li>
-    <li><a name="toc-Link-Variable-Substitution-1" 
href="#Link-Variable-Substitution">B.3.6 Link Variable Substitution</a></li>
-    <li><a name="toc-Configuring-Button-Colors" href="#Button-Colors">B.3.7 
Configuring Button Colors</a></li>
+    <li><a name="toc-Referent-Display-1" href="#Referent-Display">B.3.1 
Referent Display</a></li>
+    <li><a name="toc-Internal-Viewers-1" href="#Internal-Viewers">B.3.2 
Internal Viewers</a></li>
+    <li><a name="toc-External-Viewers-1" href="#External-Viewers">B.3.3 
External Viewers</a></li>
+    <li><a name="toc-Link-Variable-Substitution-1" 
href="#Link-Variable-Substitution">B.3.4 Link Variable Substitution</a></li>
+    <li><a name="toc-Web-Search-Engines-1" href="#Web-Search-Engines">B.3.5 
Web Search Engines</a></li>
+    <li><a name="toc-Using-URLs-with-Find_002dFile-1" 
href="#Using-URLs-with-Find_002dFile">B.3.6 Using URLs with Find-File</a></li>
+    <li><a name="toc-Invisible-Text-Searches-1" 
href="#Invisible-Text-Searches">B.3.7 Invisible Text Searches</a></li>
+    <li><a name="toc-Configuring-Button-Colors" href="#Button-Colors">B.3.8 
Configuring Button Colors</a></li>
   </ul></li>
 </ul></li>
 <li><a name="toc-Global-Key-Bindings-1" href="#Global-Key-Bindings">Appendix C 
Global Key Bindings</a></li>
@@ -239,8 +253,9 @@ ul.no-bullet {list-style: none}
     <li><a name="toc-Thing-Selection-1" href="#Thing-Selection">E.1.2 Thing 
Selection</a></li>
     <li><a name="toc-Side_002dby_002dSide-Window-Resizing-1" 
href="#Side_002dby_002dSide-Window-Resizing">E.1.3 Side-by-Side Window 
Resizing</a></li>
     <li><a name="toc-Modeline-Clicks-and-Drags-1" 
href="#Modeline-Clicks-and-Drags">E.1.4 Modeline Clicks and Drags</a></li>
-    <li><a name="toc-Smart-Mouse-_002d-Drags-between-Windows-1" 
href="#Smart-Mouse-_002d-Drags-between-Windows">E.1.5 Smart Mouse - Drags 
between Windows</a></li>
-    <li><a name="toc-Smart-Mouse-_002d-Drags-within-a-Window-1" 
href="#Smart-Mouse-_002d-Drags-within-a-Window">E.1.6 Smart Mouse - Drags 
within a Window</a></li>
+    <li><a name="toc-Smart-Mouse-Drags-between-Windows-1" 
href="#Smart-Mouse-Drags-between-Windows">E.1.5 Smart Mouse Drags between 
Windows</a></li>
+    <li><a name="toc-Smart-Mouse-Drags-within-a-Window-1" 
href="#Smart-Mouse-Drags-within-a-Window">E.1.6 Smart Mouse Drags within a 
Window</a></li>
+    <li><a name="toc-Smart-Mouse-Drags-outside-a-Window-1" 
href="#Smart-Mouse-Drags-outside-a-Window">E.1.7 Smart Mouse Drags outside a 
Window</a></li>
   </ul></li>
   <li><a name="toc-Smart-Keyboard-Keys-1" href="#Smart-Keyboard-Keys">E.2 
Smart Keyboard Keys</a>
   <ul class="no-bullet">
@@ -257,31 +272,33 @@ ul.no-bullet {list-style: none}
     <li><a name="toc-Smart-Key-_002d-The-Koutliner-1" 
href="#Smart-Key-_002d-The-Koutliner">E.2.11 Smart Key - The Koutliner</a></li>
     <li><a name="toc-Smart-Key-_002d-RDB-Mode-1" 
href="#Smart-Key-_002d-RDB-Mode">E.2.12 Smart Key - RDB Mode</a></li>
     <li><a name="toc-Smart-Key-_002d-Help-Buffers-1" 
href="#Smart-Key-_002d-Help-Buffers">E.2.13 Smart Key - Help Buffers</a></li>
-    <li><a name="toc-Smart-Key-_002d-Identifier-Menu-Mode-1" 
href="#Smart-Key-_002d-Identifier-Menu-Mode">E.2.14 Smart Key - Identifier Menu 
Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-C-Source-Code-1" 
href="#Smart-Key-_002d-C-Source-Code">E.2.15 Smart Key - C Source Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-C_002b_002b-Source-Code-1" 
href="#Smart-Key-_002d-C_002b_002b-Source-Code">E.2.16 Smart Key - C++ Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Assembly-Source-Code-1" 
href="#Smart-Key-_002d-Assembly-Source-Code">E.2.17 Smart Key - Assembly Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Lisp-Source-Code-1" 
href="#Smart-Key-_002d-Lisp-Source-Code">E.2.18 Smart Key - Lisp Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Java-Source-Code-1" 
href="#Smart-Key-_002d-Java-Source-Code">E.2.19 Smart Key - Java Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-JavaScript-Source-Code-1" 
href="#Smart-Key-_002d-JavaScript-Source-Code">E.2.20 Smart Key - JavaScript 
Source Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Python-Source-Code-1" 
href="#Smart-Key-_002d-Python-Source-Code">E.2.21 Smart Key - Python Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Objective_002dC-Source-Code-1" 
href="#Smart-Key-_002d-Objective_002dC-Source-Code">E.2.22 Smart Key - 
Objective-C Source Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Fortran-Source-Code-1" 
href="#Smart-Key-_002d-Fortran-Source-Code">E.2.23 Smart Key - Fortran Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Occurrence-Matches-1" 
href="#Smart-Key-_002d-Occurrence-Matches">E.2.24 Smart Key - Occurrence 
Matches</a></li>
-    <li><a name="toc-Smart-Key-_002d-Calendar-Mode-1" 
href="#Smart-Key-_002d-Calendar-Mode">E.2.25 Smart Key - Calendar Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-Man-Page-Apropos-1" 
href="#Smart-Key-_002d-Man-Page-Apropos">E.2.26 Smart Key - Man Page 
Apropos</a></li>
-    <li><a name="toc-Smart-Key-_002d-Emacs-Outline-Mode-1" 
href="#Smart-Key-_002d-Emacs-Outline-Mode">E.2.27 Smart Key - Emacs Outline 
Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-Info-Manuals-1" 
href="#Smart-Key-_002d-Info-Manuals">E.2.28 Smart Key - Info Manuals</a></li>
-    <li><a name="toc-Smart-Key-_002d-Email-Composers-1" 
href="#Smart-Key-_002d-Email-Composers">E.2.29 Smart Key - Email 
Composers</a></li>
-    <li><a name="toc-Smart-Key-_002d-GNUS-Newsreader-1" 
href="#Smart-Key-_002d-GNUS-Newsreader">E.2.30 Smart Key - GNUS 
Newsreader</a></li>
-    <li><a name="toc-Smart-Key-_002d-Buffer-Menus-1" 
href="#Smart-Key-_002d-Buffer-Menus">E.2.31 Smart Key - Buffer Menus</a></li>
-    <li><a name="toc-Smart-Key-_002d-Tar-File-Mode-1" 
href="#Smart-Key-_002d-Tar-File-Mode">E.2.32 Smart Key - Tar File Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-Man-Pages-1" 
href="#Smart-Key-_002d-Man-Pages">E.2.33 Smart Key - Man Pages</a></li>
-    <li><a name="toc-Smart-Key-_002d-WWW-URLs-1" 
href="#Smart-Key-_002d-WWW-URLs">E.2.34 Smart Key - WWW URLs</a></li>
-    <li><a name="toc-Smart-Key-_002d-Rolo-Match-Buffers-1" 
href="#Smart-Key-_002d-Rolo-Match-Buffers">E.2.35 Smart Key - Rolo Match 
Buffers</a></li>
-    <li><a name="toc-Smart-Key-_002d-Gomoku-Game-1" 
href="#Smart-Key-_002d-Gomoku-Game">E.2.36 Smart Key - Gomoku Game</a></li>
-    <li><a name="toc-Smart-Key-_002d-The-OO_002dBrowser-1" 
href="#Smart-Key-_002d-The-OO_002dBrowser">E.2.37 Smart Key - The 
OO-Browser</a></li>
-    <li><a name="toc-Smart-Key-_002d-Default-Context-1" 
href="#Smart-Key-_002d-Default-Context">E.2.38 Smart Key - Default 
Context</a></li>
+    <li><a name="toc-Smart-Key-_002d-Pages-Directory-Mode-1" 
href="#Smart-Key-_002d-Pages-Directory-Mode">E.2.14 Smart Key - Pages Directory 
Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Identifier-Menu-Mode-1" 
href="#Smart-Key-_002d-Identifier-Menu-Mode">E.2.15 Smart Key - Identifier Menu 
Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-C-Source-Code-1" 
href="#Smart-Key-_002d-C-Source-Code">E.2.16 Smart Key - C Source Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-C_002b_002b-Source-Code-1" 
href="#Smart-Key-_002d-C_002b_002b-Source-Code">E.2.17 Smart Key - C++ Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Assembly-Source-Code-1" 
href="#Smart-Key-_002d-Assembly-Source-Code">E.2.18 Smart Key - Assembly Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Lisp-Source-Code-1" 
href="#Smart-Key-_002d-Lisp-Source-Code">E.2.19 Smart Key - Lisp Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Java-Source-Code-1" 
href="#Smart-Key-_002d-Java-Source-Code">E.2.20 Smart Key - Java Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-JavaScript-Source-Code-1" 
href="#Smart-Key-_002d-JavaScript-Source-Code">E.2.21 Smart Key - JavaScript 
Source Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Python-Source-Code-1" 
href="#Smart-Key-_002d-Python-Source-Code">E.2.22 Smart Key - Python Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Objective_002dC-Source-Code-1" 
href="#Smart-Key-_002d-Objective_002dC-Source-Code">E.2.23 Smart Key - 
Objective-C Source Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Fortran-Source-Code-1" 
href="#Smart-Key-_002d-Fortran-Source-Code">E.2.24 Smart Key - Fortran Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Occurrence-Matches-1" 
href="#Smart-Key-_002d-Occurrence-Matches">E.2.25 Smart Key - Occurrence 
Matches</a></li>
+    <li><a name="toc-Smart-Key-_002d-Calendar-Mode-1" 
href="#Smart-Key-_002d-Calendar-Mode">E.2.26 Smart Key - Calendar Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Man-Page-Apropos-1" 
href="#Smart-Key-_002d-Man-Page-Apropos">E.2.27 Smart Key - Man Page 
Apropos</a></li>
+    <li><a name="toc-Smart-Key-_002d-Emacs-Outline-Mode-1" 
href="#Smart-Key-_002d-Emacs-Outline-Mode">E.2.28 Smart Key - Emacs Outline 
Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Info-Manuals-1" 
href="#Smart-Key-_002d-Info-Manuals">E.2.29 Smart Key - Info Manuals</a></li>
+    <li><a name="toc-Smart-Key-_002d-Email-Composers-1" 
href="#Smart-Key-_002d-Email-Composers">E.2.30 Smart Key - Email 
Composers</a></li>
+    <li><a name="toc-Smart-Key-_002d-GNUS-Newsreader-1" 
href="#Smart-Key-_002d-GNUS-Newsreader">E.2.31 Smart Key - GNUS 
Newsreader</a></li>
+    <li><a name="toc-Smart-Key-_002d-Buffer-Menus-1" 
href="#Smart-Key-_002d-Buffer-Menus">E.2.32 Smart Key - Buffer Menus</a></li>
+    <li><a name="toc-Smart-Key-_002d-Tar-File-Mode-1" 
href="#Smart-Key-_002d-Tar-File-Mode">E.2.33 Smart Key - Tar File Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Man-Pages-1" 
href="#Smart-Key-_002d-Man-Pages">E.2.34 Smart Key - Man Pages</a></li>
+    <li><a name="toc-Smart-Key-_002d-WWW-URLs-1" 
href="#Smart-Key-_002d-WWW-URLs">E.2.35 Smart Key - WWW URLs</a></li>
+    <li><a name="toc-Smart-Key-_002d-HyRolo-Match-Buffers-1" 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">E.2.36 Smart Key - HyRolo Match 
Buffers</a></li>
+    <li><a name="toc-Smart-Key-_002d-Image-Thumbnails-1" 
href="#Smart-Key-_002d-Image-Thumbnails">E.2.37 Smart Key - Image 
Thumbnails</a></li>
+    <li><a name="toc-Smart-Key-_002d-Gomoku-Game-1" 
href="#Smart-Key-_002d-Gomoku-Game">E.2.38 Smart Key - Gomoku Game</a></li>
+    <li><a name="toc-Smart-Key-_002d-The-OO_002dBrowser-1" 
href="#Smart-Key-_002d-The-OO_002dBrowser">E.2.39 Smart Key - The 
OO-Browser</a></li>
+    <li><a name="toc-Smart-Key-_002d-Default-Context-1" 
href="#Smart-Key-_002d-Default-Context">E.2.40 Smart Key - Default 
Context</a></li>
   </ul></li>
 </ul></li>
 <li><a name="toc-Suggestion-or-Bug-Reporting-1" 
href="#Suggestion-or-Bug-Reporting">Appendix F Suggestion or Bug 
Reporting</a></li>
@@ -309,7 +326,7 @@ Next: <a href="#Introduction" accesskey="n" 
rel="next">Introduction</a>, Previou
 
 <CENTER><H2>The Everyday Hypertextual Information Manager</H2></CENTER>
 
-<P>Copyright &copy; 1989-2016  Free Software Foundation, Inc.</P>
+<P>Copyright &copy; 1989-2017  Free Software Foundation, Inc.</P>
 
 <P>GNU Hyperbole is available for use, modification, and distribution under
 the terms of the GNU General Public License (GPL) Version 3 or later,
@@ -321,8 +338,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
-Edition 6.0.2
-Printed August 9, 2016.
+Edition 7.0.0
+Printed November 15, 2017.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -331,7 +348,7 @@ Printed August 9, 2016.
 </PRE>
 
 <CENTER>
-  <DT><B>Screenshot of the Hyperbole Koutliner, Demonstration and 
Rolo</B></DT><BR><BR>
+  <DT><B>Screenshot of the Hyperbole Koutliner, Demonstration and 
HyRolo</B></DT><BR><BR>
   <IMG NAME="Hyperbole Screenshot" SRC="im/hyperbole-cv.png"><BR>
 </CENTER>
 <br>
@@ -340,7 +357,6 @@ Printed August 9, 2016.
 
 
 <a name="index-credits"></a>
-<a name="index-InfoDock_002c-obtaining"></a>
 <a name="index-Hyperbole_002c-obtaining"></a>
 <a name="index-anonymous-ftp"></a>
 <p>GNU Hyperbole was designed and written by Bob Weiner.
@@ -376,9 +392,9 @@ years.  The Koutliner is dedicated to my lovely wife, Kathy.
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#Introduction" 
accesskey="1">Introduction</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Buttons" 
accesskey="2">Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Keys" 
accesskey="2">Smart Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Keys" 
accesskey="3">Smart Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Buttons" 
accesskey="3">Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Menus" 
accesskey="4">Menus</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -432,6 +448,48 @@ Introduction
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 
+Smart Keys
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Bindings">Smart Key Bindings</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Operations">Smart 
Key Operations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Debugging">Smart 
Key Debugging</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-Key-Drags">Smart Mouse Key 
Drags</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Smart Mouse Key Drags
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Saving-and-Restoring-Window-Configurations">Saving and Restoring Window 
Configurations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Resizing-Windows">Resizing 
Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Dragging-Buffers">Dragging 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+Dragging Buffers, Windows and Items
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Swapping-Buffers">Swapping Buffers</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Displaying-Buffers">Displaying Buffers</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Cloning-Windows">Cloning 
Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
 Buttons
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Explicit-Buttons">Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -460,7 +518,7 @@ Utilizing Explicit Buttons
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Modification">Modification</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Location">Location</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Searching-and-Summarizing">Searching and 
Summarizing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Buttons-in-Mail">Buttons in 
Mail</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -476,24 +534,6 @@ Creation
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 
-Smart Keys
-
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Bindings">Smart Key Bindings</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Operations">Smart 
Key Operations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modeline">Smart 
Key Modeline</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modifiers">Smart 
Key Modifiers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Debugging">Smart 
Key Debugging</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-
 Koutliner
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Menu-Commands">Menu Commands</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -546,15 +586,15 @@ Viewing
 
 HyRolo
 
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Rolo-Concepts">Rolo Concepts</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#HyRolo-Concepts">HyRolo Concepts</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Menu">Rolo 
Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Menu">HyRolo 
Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Searching">Rolo 
Searching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Searching">HyRolo 
Searching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Keys">Rolo 
Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Keys">HyRolo 
Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Settings">Rolo 
Settings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Settings">HyRolo 
Settings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 
@@ -602,18 +642,20 @@ Setup
 
 Customization
 
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Web-Search-Engines">Web Search Engines</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Using-URLs-with-Find_002dFile">Using URLs with 
Find-File</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Referent-Display">Referent Display</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Internal-Viewers">Internal 
Viewers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#External-Viewers">External 
Viewers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Invisible-Text-Searches">Invisible Text 
Searches</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Link-Variable-Substitution">Link Variable 
Substitution</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Web-Search-Engines">Web 
Search Engines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Using-URLs-with-Find_002dFile">Using URLs with 
Find-File</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Invisible-Text-Searches">Invisible Text 
Searches</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Button-Colors">Button 
Colors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
@@ -636,9 +678,11 @@ Smart Mouse Keys
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Modeline-Clicks-and-Drags">Modeline Clicks and 
Drags</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-_002d-Drags-between-Windows">Smart Mouse - Drags between 
Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-Drags-between-Windows">Smart Mouse Drags between 
Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags outside a 
Window</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 
@@ -670,6 +714,8 @@ Smart Keyboard Keys
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Help-Buffers">Smart Key - Help 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Pages-Directory-Mode">Smart Key - Pages Directory 
Mode</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Identifier-Menu-Mode">Smart Key - Identifier Menu Mode 
</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-C-Source-Code">Smart Key - C Source 
Code</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -712,7 +758,9 @@ Smart Keyboard Keys
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW 
URLs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Rolo-Match-Buffers">Smart Key - Rolo Match 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">Smart Key - HyRolo Match 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Image-Thumbnails">Smart Key - Image 
Thumbnails</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Gomoku-Game">Smart Key - Gomoku 
Game</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -728,13 +776,13 @@ Smart Keyboard Keys
 <a name="Introduction"></a>
 <div class="header">
 <p>
-Next: <a href="#Buttons" accesskey="n" rel="next">Buttons</a>, Previous: <a 
href="#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="#Top" accesskey="u" 
rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Keys" accesskey="n" rel="next">Smart Keys</a>, Previous: 
<a href="#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Introduction-1"></a>
 <h2 class="chapter">1 Introduction</h2>
 
 <p>This edition of the GNU Hyperbole Manual is for use with any version
-6.0.2 or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+7.0.0 or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
 or higher.  It will trigger an error if your Emacs is older.
 </p>
 <p>This chapter summarizes the structure of the rest of the manual,
@@ -764,10 +812,17 @@ Next: <a href="#Motivation" accesskey="n" 
rel="next">Motivation</a>, Previous: <
 <a name="Manual-Overview-1"></a>
 <h3 class="section">1.1 Manual Overview</h3>
 
-<p>Remember that the <samp>DEMO</samp> file included in the Hyperbole
-distribution demonstrates many of Hyperbole&rsquo;s standard facilities
-without the need to read through this reference manual.  It is a good
-way to rapidly understand some of what Hyperbole can do for you.
+<a name="index-file_002c-DEMO"></a>
+<a name="index-Hyperbole-demo"></a>
+<a name="index-demo-file"></a>
+<a name="index-tutorial"></a>
+<p>This is a reference manual with extensive details about Hyperbole use.  If
+you prefer a simpler, more interactive introduction to Hyperbole,
+the <samp>DEMO</samp> file included in the Hyperbole distribution demonstrates
+many of Hyperbole&rsquo;s standard facilities without the need to read through
+this reference manual.  It is a good way to rapidly understand some of what
+Hyperbole can do for you.  Once Hyperbole is installed, (see <a 
href="#Setup">Setup</a>),
+you can access the DEMO with the key sequence <kbd>{C-h h d d}</kbd>.
 </p>
 <p>See <a href="#Glossary">Glossary</a>, for definitions of Hyperbole terms.  
In some cases,
 terms are not precisely defined within the body of this manual since
@@ -783,22 +838,22 @@ Hyperbole&rsquo;s basic operation.
 </p>
 <p>See <a href="#Suggestion-or-Bug-Reporting">Suggestion or Bug Reporting</a>, 
for instructions on how to ask a
 question, suggest a feature or report a bug in Hyperbole.  A few
-commonly asked questions are answered in this manual.  See <a 
href="#Questions-and-Answers">Questions and Answers</a>.  See <a 
href="#References">References</a>, if you are interested in classic
-articles on hypertext.
-</p>
-<p>See <a href="#Buttons">Buttons</a>, for an overview of Hyperbole buttons 
and how to use them.
+commonly asked questions are answered in this manual, see <a 
href="#Questions-and-Answers">Questions and Answers</a>.  If you are interested 
in classic
+articles on hypertext, see <a href="#References">References</a>.
 </p>
 <p>See <a href="#Smart-Keys">Smart Keys</a>, for an explanation of the 
innovative, context-sensitive
 mouse and keyboard Action and Assist Keys offered by Hyperbole.
 See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for a complete 
reference on what the Action
 and Assist Keys do in each particular context that they recognize.
-See <a href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a>, 
for special support that Hyperbole
-provides for entering arguments when prompted for them.
+See <a href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a>, 
for how Hyperbole speeds selection of
+prompted for arguments.
 </p>
 <p>Keep in mind as you read about using Hyperbole that in many cases, it
-provides a number of overlapping interaction methods that support
-differing work styles and hardware limitations.  In such instances,
-you need learn only one technique that suits you.
+provides a number of overlapping interaction methods that support differing
+work styles and hardware limitations.  In such instances, you need learn
+only one technique that suits you.
+</p>
+<p>See <a href="#Buttons">Buttons</a>, for an overview of Hyperbole buttons 
and how to use them.
 </p>
 <p>See <a href="#Menus">Menus</a>, for summaries of Hyperbole menu commands 
and how to use
 the minibuffer-based menus that work on dumb terminals, PCs or workstations.
@@ -840,13 +895,12 @@ with in their everyday worklife is seldom stored away in 
neatly defined
 database schemas.  Instead it is scattered among local and remote files,
 e-mail messages, faxes, voice mail and web pages.
 </p>
-<p>The rise of the web has demonstrated how hypertext technologies can be
-used to build massive organized repositories of scattered information.
-But assembling information for the web still remains a great challenge
-to many and the data formats of the web are inherently still too
-structured to deal with the great variety of information that people
-process.  Modern web development often requires the use of many
-languages: HTML, JavaScript, CSS and Java.  This in itself prevents
+<p>The rise of the web has demonstrated how hypertext technologies can be used
+to build massive organized repositories of scattered information.  But
+assembling information for the web still remains a great challenge and the
+data formats of the web are too structured to deal with the great variety
+of information that people process.  Modern web development requires the
+use of many languages: HTML, JavaScript, and CSS.  This in itself prevents
 its use as the prime means of organizing and interlinking the constant
 flows of daily information.
 </p>
@@ -879,7 +933,6 @@ Next: <a href="#Mail-Lists" accesskey="n" rel="next">Mail 
Lists</a>, Previous: <
 <a name="index-hypertext"></a>
 <a name="index-Emacs-Lisp"></a>
 <a name="index-Emacs"></a>
-<a name="index-XEmacs"></a>
 <p>GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
 an efficient and programmable hypertextual information management
 system.  It is intended for everyday work on any GNU Emacs platform.
@@ -893,23 +946,22 @@ archives, and the World-Wide Web (WWW).
 </p>
 <dl compact="compact">
 <dt><em>Buttons and Smart Keys</em></dt>
-<dd><p>a set of hyperbutton types that provides core hypertext and other
-behaviors, see <a href="#Buttons">Buttons</a>.  Buttons may be added to 
documents (explicit
-buttons) with a simple drag between windows, no markup language needed.
-Implicit buttons are patterns automatically recognized within
-text that perform actions, e.g. bug#24568 displays the bug status
-information for that bug number.
+<dd><p>Hyperbole hyperlink and other kinds of buttons (explicit buttons) may be
+added to documents with a simple drag between windows, no markup language
+needed.  Implicit buttons are patterns automatically recognized within text
+that perform actions, e.g. bug#24568 displays the bug status information
+for that bug number.  See <a href="#Buttons">Buttons</a>.
 </p>
 <p>Buttons are accessed by clicking on them or referenced by name (global
 buttons), so they can be activated regardless of what is on screen.
-Users can make simple changes to button types.  Emacs Lisp programmers
-can prototype and deliver new types quickly.
+Users create and activate Hyperbole buttons; Emacs Lisp programmers
+easily can develop new button types and actions.
 </p>
-<p>Hyperbole includes two special <em>Smart Keys</em>, the Action Key and the
-Assist Key, that perform an extensive array of context-sensitive
+<p>Hyperbole includes two special <em>Smart Keys</em>, the Action Key and
+the Assist Key, that perform an extensive array of context-sensitive
 operations across emacs usage, including activating and showing help
-for Hyperbole buttons.  In many popular Emacs modes, they allow you
-to perform common, sometimes complex operations without having to a
+for Hyperbole buttons.  In many popular Emacs modes, they allow you to
+perform common, sometimes complex operations without having to use a
 different key for each operation.  Just press a Smart Key and the
 right thing happens.  See <a href="#Smart-Keys">Smart Keys</a>;
 </p>
@@ -950,7 +1002,7 @@ for real-world usage and is well structured).
 </dl>
 
 <a name="index-C_002dh-h-d-d"></a>
-<a name="index-file_002c-DEMO"></a>
+<a name="index-file_002c-DEMO-1"></a>
 <a name="index-demonstration"></a>
 <a name="index-button-demo"></a>
 <p>Hyperbole may be used simply for browsing through documents
@@ -960,13 +1012,12 @@ Hyperbole demonstration by typing <kbd>{C-h h d 
d}</kbd>, assuming Hyperbole
 has been installed at your site.  If you need to install
 Hyperbole, see <a href="#Setup">Setup</a>, for Hyperbole installation and 
configuration
 information.  The demo offers a much less technical introduction to
-Hyperbole by supplying good examples of how buttons may be used and an
-introduction to the Koutliner.
+Hyperbole by supplying good examples of use.
 </p>
 <div class="float"><a name="image_003aDemo"></a>
 
-<div align="center"><img src="im/demo.png" alt="Hyperbole Minibuffer Menu and 
Demonstration Screenshot">
-</div><div class="float-caption"><p><strong>Image 1.1: </strong>Hyperbole 
Minibuffer Menu and Demonstration Screenshot</p></div></div><br>
+<img src="im/demo.png" alt="Hyperbole Minibuffer Menu and Demonstration 
Screenshot">
+<div class="float-caption"><p><strong>Image 1.1: </strong>Hyperbole Minibuffer 
Menu and Demonstration Screenshot</p></div></div><br>
 
 <a name="index-GNU-Emacs"></a>
 <a name="index-C_002dh-t"></a>
@@ -1028,8 +1079,8 @@ other documents.
 <dt><em>brainstorming</em></dt>
 <dd><p>The Hyperbole outliner (see <a href="#Koutliner">Koutliner</a>) is an 
effective tool for
 capturing ideas and then quickly reorganizing them in a meaningful way.
-Links to related ideas are easy enough to create that copying and
-pasting ideas together quickly becomes a dated technique.
+Links to related ideas are easy to create so the need to copy and
+paste information is greatly reduced.
 </p>
 </dd>
 <dt><em>help/training systems</em></dt>
@@ -1063,2085 +1114,2483 @@ Hyperbole, &lt;address@hidden&gt;.  For more 
details,
 see <a href="#Suggestion-or-Bug-Reporting">Suggestion or Bug Reporting</a>.
 </p>
 <hr>
-<a name="Buttons"></a>
+<a name="Smart-Keys"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Keys" accesskey="n" rel="next">Smart Keys</a>, Previous: 
<a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Buttons" accesskey="n" rel="next">Buttons</a>, Previous: <a 
href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Buttons-1"></a>
-<h2 class="chapter">2 Buttons</h2>
-
-<a name="index-button"></a>
-<p>This chapter explains use of Hyperbole <em>buttons</em>.  There are several
-kinds of Hyperbole buttons: buttons that are created one at a time and
-stored in files (<em>explicit buttons</em>); buttons that can be
-activated by name anytime (<em>global buttons</em>); and buttons defined
-by textual patterns where one definition can create an infinite number
-of buttons (<em>implicit buttons</em>).
-</p>
-<p>Hyperbole buttons are embedded within textual documents; they may be
-created, modified, moved or deleted.  Each button performs a specific
-action, such as linking to a file or executing a shell command.
-</p>
-<a name="index-button_002c-explicit"></a>
-<a name="index-button_002c-global"></a>
-<a name="index-button_002c-implicit"></a>
-<a name="index-button-category"></a>
-<a name="index-explicit-button"></a>
-<a name="index-global-button"></a>
-<a name="index-implicit-button"></a>
-<p>There are three categories of Hyperbole buttons:
-</p><dl compact="compact">
-<dt><em>explicit buttons</em></dt>
-<dd><p>created by Hyperbole, accessible from within a single document;
-</p>
-</dd>
-<dt><em>global buttons</em></dt>
-<dd><p>created by Hyperbole, specific to each user, and accessible anywhere
-within a user&rsquo;s network of documents;
-</p>
-</dd>
-<dt><em>implicit buttons</em></dt>
-<dd><p>created and managed by other programs or embedded within the structure
-of a document, accessible from within a single document.  Hyperbole
-recognizes implicit buttons by contextual patterns given in their type
-specifications (explained later).
-</p></dd>
-</dl>
-
-<p>Explicit Hyperbole buttons may be embedded within any type of text file.
-Implicit buttons may appear only within document contexts allowed by
-their types, which may limit the kinds of documents or the locations
-within those documents at which such buttons may be found.  All global
-buttons for a user are stored in a single location and are activated by
-entering their names, rather than by direct selection, the means used to
-activate explicit and implicit buttons.
-</p>
-<p>To summarize:
-</p>
-<div class="example">
-<pre class="example">Button Category   Active Within        Activation Means   
   Managed By
-========================================================================
-Explicit          a single document    direct selection      Hyperbole
-Global            any document         entering its name     Hyperbole
-Implicit          a matching context   direct selection      other tools
-
-</pre></div>
+<a name="Smart-Keys-1"></a>
+<h2 class="chapter">2 Smart Keys</h2>
 
-<a name="index-terminal-use"></a>
-<p>A click on a Hyperbole button may activate it or describe its actions,
-depending on which mouse key is used.  Buttons may also be activated
-from a keyboard.  (In fact, virtually all Hyperbole operations,
-including menu usage, may be performed from any standard character
-terminal interface, so you need not be anchored to a workstation all
-day).  See <a href="#Smart-Keys">Smart Keys</a>.  There is also a key that 
shows you how a
-button will behave before you activated it, see <a 
href="#Smart-Key-Operations">Smart Key Operations</a>.
+<a name="index-Smart-Key"></a>
+<a name="index-mouse-support"></a>
+<a name="index-Action-Key"></a>
+<a name="index-Assist-Key"></a>
+<a name="index-middle-mouse-key"></a>
+<a name="index-hmouse_002dmiddle_002dflag"></a>
+<a name="index-Action-Key-1"></a>
+<a name="index-Assist-Key-1"></a>
+<p>Hyperbole offers two special <em>Smart Keys</em>, the Action Key and the
+Assist Key, that perform an extensive array of context-sensitive
+operations across emacs usage.  In many popular modes, they allow you
+to perform common, sometimes complex operations without having to use a
+different key for each operation.  Just press a Smart Key and the
+right thing happens.  This chapter explains typical uses of the Smart
+Keys.  See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for 
complete descriptions of their
+behavior in all contexts.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Explicit-Buttons" 
accesskey="1">Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Bindings" 
accesskey="1">Smart Key Bindings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Global-Buttons" 
accesskey="2">Global Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Operations" 
accesskey="2">Smart Key Operations</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Implicit-Buttons" 
accesskey="3">Implicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Argument-Selection" accesskey="3">Smart Key Argument 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Button-Files" 
accesskey="4">Button Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Debugging" 
accesskey="4">Smart Key Debugging</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Action-Types" 
accesskey="5">Action Types</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Thing-Selection" 
accesskey="5">Smart Key Thing Selection</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Button-Type-Precedence" 
accesskey="6">Button Type Precedence</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-Key-Modeline-Clicks" accesskey="6">Smart Mouse Key Modeline 
Clicks</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Utilizing-Explicit-Buttons" 
accesskey="7">Utilizing Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Mouse-Key-Drags" 
accesskey="7">Smart Mouse Key Drags</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="Explicit-Buttons"></a>
+<a name="Smart-Key-Bindings"></a>
 <div class="header">
 <p>
-Next: <a href="#Global-Buttons" accesskey="n" rel="next">Global Buttons</a>, 
Previous: <a href="#Buttons" accesskey="p" rel="prev">Buttons</a>, Up: <a 
href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-Operations" accesskey="n" rel="next">Smart Key 
Operations</a>, Previous: <a href="#Smart-Keys" accesskey="p" rel="prev">Smart 
Keys</a>, Up: <a href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Explicit-Buttons-1"></a>
-<h3 class="section">2.1 Explicit Buttons</h3>
+<a name="Smart-Key-Bindings-1"></a>
+<h3 class="section">2.1 Smart Key Bindings</h3>
 
-<a name="index-explicit-button-1"></a>
-<a name="index-button_002c-explicit-1"></a>
-<a name="index-button-label"></a>
-<a name="index-button-name"></a>
-<p>Hyperbole creates and manages <em>explicit buttons</em> which perform
-specific actions when activated (typically through a button press).
-They look like this &lsquo;<samp>&lt;(fake button)&gt;</samp>&rsquo;.  They 
are quickly
-recognizable, yet relatively non-distracting as you scan the text in
-which they are embedded.  The text between the 
&lsquo;<samp>&lt;(</samp>&rsquo; and &lsquo;<samp>)&gt;</samp>&rsquo;
-delimiters is called the <em>button label</em> or <em>button name</em>.
-Spacing between words within a button label is irrelevant to Hyperbole.
-Button labels may wrap across several lines without causing a problem;
-just be sure to select the first line of the button to activate it.
-</p>
-<p>Explicit buttons may be added to any editable text file; for source
-code files, simply place buttons within comments.  Buttons that you
-use for quick navigation to websites or other things you do often
-should be added to your personal button file.  See <a 
href="#Button-Files">Button Files</a>.
+<a name="index-C_002du-M_002dRET"></a>
+<a name="index-M_002dRET"></a>
+<p>From the keyboard, <kbd>{M-<span class="key">RET</span>}</kbd> is the 
Action Key and <kbd>{C-u
+M-<span class="key">RET</span>}</kbd> is the Assist Key.  These keys allow 
context-sensitive
+operation from any keyboard.
 </p>
-<a name="index-button_002c-moving"></a>
-<a name="index-moving-buttons"></a>
-<p>Explicit buttons may be freely moved about within the buffer in which
-they are created.  (No present support exists for moving buttons between
-buffers; support the Hyperbole project if you would like to help make
-this happen).  A single button may also appear multiple times within the
-same buffer; simply copy the button label with its delimiters
-to a new location if you need another copy of it.
+
+<a name="index-shift_002dmiddle-mouse-key"></a>
+<a name="index-shift_002dleft-mouse-key"></a>
+<a name="index-shift_002dright-mouse-key"></a>
+<a name="index-middle-mouse-key-1"></a>
+<a name="index-hmouse_002dmiddle_002dflag-1"></a>
+<p>From the mouse, the <em>Action Key</em> is bound to your shift-middle
+mouse key (or shift-left on a 2-button mouse).  The <em>Assist Key</em>
+is bound to your shift-right mouse key, assuming Hyperbole is run
+under an external window system.
+</p>
+<a name="index-hmouse_002dadd_002dunshifted_002dsmart_002dkeys"></a>
+<a name="index-unshifted-mouse-bindings"></a>
+<a name="index-unshifted-mouse-keys"></a>
+<a name="index-mouse-keys_002c-unshifted"></a>
+<a name="index-smart-keys_002c-unshifted"></a>
+<p>If you set the variable, <code>hmouse-middle-flag</code>, to 
&lsquo;<samp>t</samp>&rsquo; before
+loading Hyperbole, then you may also use the middle mouse key as the Action
+Key).  If you want both the middle mouse key as the Action Key and the
+right mouse key as the Assist Key for ease of use, then within your
+personal <samp>~/.emacs</samp> file, add: <code>(add-hook 'hyperbole-init-hook
+'hmouse-add-unshifted-smart-keys)</code> and then restart Emacs.
 </p>
-<p>For details on how to create, activate, delete or modify explicit
-buttons, see <a href="#Utilizing-Explicit-Buttons">Utilizing Explicit 
Buttons</a>.
+<a name="index-key-binding_002c-smart-keys"></a>
+<a name="index-smart-key-commands"></a>
+<a name="index-smart-key-assignments"></a>
+<a name="index-action_002dkey"></a>
+<a name="index-assist_002dkey"></a>
+<a name="index-action_002dmouse_002dkey"></a>
+<a name="index-assist_002dmouse_002dkey"></a>
+<a name="index-hkey_002deither"></a>
+<p>If you prefer other key assignments, simply bind the commands
+<code>action-key</code> and <code>assist-key</code> to keyboard keys.
+Hyperbole binds <kbd>{M-<span class="key">RET</span>}</kbd> to the command 
<code>hkey-either</code>.
+It allows for a single key binding for both commands; a prefix
+argument, such as <kbd>{C-u}</kbd>, then invokes <code>assist-key</code>.
 </p>
-<a name="index-link-button"></a>
-<a name="index-referent"></a>
-<p>Each explicit button is assigned an action type that determines the
-actions it performs.  <em>Link action types</em> connect buttons to
-particular types of <em>referents</em>, the targets of their links.  Link
-action type names all begin with <code>link-</code>.  Link action button
-referents are displayed when such buttons are  by
-pressing or clicking upon them.  See <a href="#Action-Types">Action Types</a>, 
for a list of
-standard action types including link types.
+<p>You may also bind <code>action-mouse-key</code> and 
<code>assist-mouse-key</code>
+to other mouse keys, though you won&rsquo;t be able to execute mouse drag
+actions with such key bindings.
 </p>
-<a name="index-linking_002c-in_002dplace"></a>
-<a name="index-Hyperbole-data-model"></a>
-<p>Hyperbole does not manage referent data; this is left to the
-applications that generate the data.  This means that Hyperbole
-provides in-place linking and does not require reformatting of data to
-integrate with Hyperbole.
+<p>Mouse configuration of the Smart Keys is automatic for GNU Emacs under
+Mac OS X, the X Window System and MS Windows assuming your emacs program
+has been built with support for any of these window systems.
 </p>
-<a name="index-button-data"></a>
-<a name="index-button-attribute"></a>
-<a name="index-file_002c-_002ehypb"></a>
-<p>Hyperbole stores the <em>button data</em> that gives an explicit button its
-behavior, separately from the button label, in a file named
-<samp>.hypb</samp> (<samp>_hypb</samp> under MS Windows) within the same 
directory
-as the file in which the button is created.  Thus, all files in the
-same directory share a common button data file.  Button data is
-comprised of individual <em>button attribute</em> values.  A user never
-sees this data in its raw form but may see a formatted version by
-asking for help on a button.
+<a name="index-file_002c-_002eemacs"></a>
+<a name="index-hyperbole_002dtoggle_002dbindings"></a>
+<a name="index-change-key-bindings"></a>
+<a name="index-toggle-key-bindings"></a>
+<a name="index-key-bindings_002c-toggle"></a>
+<a name="index-disable-Hyperbole"></a>
+<a name="index-C_002dc-h"></a>
+<p>If you ever need to temporarily disable the Hyperbole keyboard and mouse
+bindings, use the <code>hyperbole-toggle-bindings</code> command.  It switches
+between the Hyperbole key bindings and those set prior to loading Hyperbole
+and then back again if invoked once more.  There is no default key binding
+for this command; use <kbd>{M-x hyperbole-toggle-bindings
+<span class="key">RET</span>}</kbd>.  Alternatively, you may select a key and 
bind it as part of any
+setting of <code>hyperbole-init-hook</code> within your personal 
<samp>~/.emacs</samp>
+file.  For example, <code>(add-hook 'hyperbole-init-hook (lambda ()
+(global-set-key &quot;\C-ch&quot; 'hyperbole-toggle-bindings)))</code>.
 </p>
 
 <hr>
-<a name="Global-Buttons"></a>
+<a name="Smart-Key-Operations"></a>
 <div class="header">
 <p>
-Next: <a href="#Implicit-Buttons" accesskey="n" rel="next">Implicit 
Buttons</a>, Previous: <a href="#Explicit-Buttons" accesskey="p" 
rel="prev">Explicit Buttons</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-Argument-Selection" accesskey="n" rel="next">Smart 
Key Argument Selection</a>, Previous: <a href="#Smart-Key-Bindings" 
accesskey="p" rel="prev">Smart Key Bindings</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Global-Buttons-1"></a>
-<h3 class="section">2.2 Global Buttons</h3>
+<a name="Smart-Key-Operations-1"></a>
+<h3 class="section">2.2 Smart Key Operations</h3>
 
-<a name="index-global-button-1"></a>
-<a name="index-button_002c-global-1"></a>
-<a name="index-button-label-1"></a>
-<p>Access to explicit buttons depends upon the information on your screen
-since they are embedded within particular buffers.  Sometimes it is
-useful to activate buttons without regard to the information with which
-you are working.  In such instances, you use <em>global buttons</em>, which
-are buttons that may be activated or otherwise operated upon by entering
-their labels/names when they are prompted for, rather than selecting the
-buttons within a buffer.
-</p>
-<p>If you want a permanent link to a file section that you can follow at
-any time, you can use a global button.  Or what about an Emacs keyboard
-macro that you use frequently?  Create an <code>exec-kbd-macro</code> button
-with an easy to type name and then you can activate it whenever the need
-arises.
+<a name="index-button-activation"></a>
+<a name="index-activation"></a>
+<a name="index-button-help"></a>
+<a name="index-help_002c-button"></a>
+<p>The Action Key generally selects entities, creates links and
+activates buttons.  The Assist Key generally provides help,
+such as reporting on a button&rsquo;s attributes, or serves a complementary
+function to whatever the Action Key does within a context.
 </p>
-<a name="index-C_002dh-h-g"></a>
-<a name="index-menu_002c-Gbut"></a>
-<a name="index-menu_002c-Global_002dButton"></a>
-<p>Global buttons are managed with the Hyperbole Gbut/ menu accessed with
-<kbd>{C-h h g}</kbd>.  The Create item, <kbd>{C-h h g c}</kbd>, prompts for a
-global button name, an action type, and the action&rsquo;s associated
-arguments, such as a file to link to.  It then creates the button.  To
-activate the button, use the Act menu item, <kbd>{C-h h g a}</kbd>.  Type
-the button&rsquo;s name and its action will be executed.
+<a name="index-Smart-Key-operation"></a>
+<a name="index-menu-item_002c-Doc_002fSmartKeys"></a>
+<a name="index-Smart-Key-summary"></a>
+<a name="index-modeline_002c-Smart-Keys"></a>
+<p>The Hyperbole Doc/SmartKeys menu entry, <kbd>{C-h h d s}</kbd>, displays a
+summary of what the Smart Keys do in all of their different contexts.
+Alternatively, a click of the Assist Mouse Key in the right corner of a
+window modeline (within the rightmost 3 characters) toggles between
+displaying this summary and hiding it.  Reference this summary whenever you
+need it.
 </p>
-<p>Global buttons are actually explicit buttons stored at the end of your
-personal button file, see <a href="#Button-Files">Button Files</a>.  You can 
always go into that
-file and activate, edit or annotate these buttons with comments.
+<p>The following table is the same summary.  Much of the browsing power
+of Hyperbole comes from the use of the Smart Keys, so spend some time
+practicing how to use them.  Study what modeline clicks and window
+drag actions do as these will give you a lot of power without much
+effort.  This table may appear daunting at first, but as you practice
+and notice that the Smart Keys do just a few context-sensitive things
+per editor mode, you will find it easy to just press or point and
+click and let Hyperbole do the right thing in each context.
+</p>
+
+<div class="format">
+<div class="example">
+<pre 
class="example">========================================================================================
+                                              Smart Keys
+Context                         Action Key                 Assist Key
+========================================================================================
+Hyperbole
+  On a minibuffer menu item     Activates item             Item help
+  On an explicit button         Activates button           Button help
+  Reading argument
+    1st press at an arg value   Value copied to minibuffer &lt;- same
+    2nd press at an arg value   Value used as argument     &lt;- same
+    In minibuffer               Accepts minibuffer arg     Completion help
+  On an implicit button         Activates button           Button help
+  Within a koutline cell        Collapses and expands      Shows tree props
+  Left of a koutline cell       Creates a klink            Moves a tree
+  HyRolo Match Buffer           Edits entries and mails to e-mail addresses
+
+Mouse or Keyboard Display Control
+  Line end, not end of buffer
+    smart-scroll-proportional
+      = t   (default)           Makes curr line top line   Bottom line
+      = nil                     Scrolls up a windowful     Scrolls down
+  End of Any Help buffer        Restores screen to the previous state
+  Read-only View Mode           Scrolls up a windowful     Scrolls wind down
+
+Mouse-only Control
+  Drag from thing start or end  Yanks thing at release     Kills thing and 
yanks
+    A thing is a delimited                                 at release
+    expression, such as a
+    string, list or markup
+    language tag pair
+
+  Drag from shared window side
+    or from left of scroll bar  Resizes window width       &lt;- same
+  Modeline vertical drag        Resizes window height      &lt;- same
+
+  Other Modeline drag to        Replaces dest. buffer      Swaps window buffers
+    another window                with source buffer
+
+  Drag to a Modeline from:
+    buffer/file menu item       Displays buffer/file in    Swaps window buffers
+                                  new window by release
+    buffer/file menu 1st line   Moves buffer/file menu to  Swaps window buffers
+                                  new window by release
+    anywhere else               Displays buffer in         Swaps window buffers
+                                  new window by release
+
+  Drag between windows from:
+    buffer/file menu item       Displays buffer/file in    Swaps window buffers
+                                  window of button release 
+    buffer/file menu 1st line   Moves buffer/file menu     Swaps window buffers
+    anywhere else               Creates/modifies a link    Swaps window buffers
+
+  Drag outside of Emacs from:
+    buffer/file menu item       Displays buffer/file in    Moves window to new 
frame
+                                  a new frame
+    Modeline or other window    Clones window to new frame Moves window to new 
frame
+
+  Modeline Click
+    Left modeline edge          Buries current buffer      Unburies bottom 
buffer
+    Right modeline edge         Info manual browser        Smart Key summary
+    Buffer ID                   Dired on buffer's dir      Next buffer
+                                  or on parent when a dir
+    Other blank area            Action Key modeline hook   Assist Key modeline 
hook
+                                  Shows/Hides Buffer Menu    Popup Jump &amp; 
Manage Menu
+
+  Drag in window, region active Error, not allowed         Error, not allowed
+  Horizontal drag in a window   Splits window below        Deletes window
+  Vertical drag in a window     Splits window side-by-side Deletes window
+  Diagonal drag in a window     Saves wconfig              Restores wconfig 
from ring
+
+  Active region exists, click   Yanks region at release    Kills and yanks at 
release
+   outside of the region
+
+Hyperbole Key Press/Click in Special Modes
+  Region Active                 Yanks region at release    Kills and yanks at 
release
+  Emacs Push Button             Activates button           Button help
+  Thing Begin or End            Mark thing region          Mark &amp; kill 
thing region
+  Page Directory Listing        Jumps to page              &lt;- same
+  Imenu Programming Identifier  Jumps to in-buffer def     Prompts for id to 
jump to
+  C,C++,Objective-C,Java Modes  Jumps to id/include def    Jumps to next def
+  Assembly Language Mode        Jumps to id/include def    Jumps to next def
+  Java Cross-reference Tag      Jumps to identifier def    Jumps to next def
+  JavaScript and Python Modes   Jumps to identifier def    Jumps to next def
+  Any Lisp or Fortran Mode      Jumps to identifier def    Jumps to next def
+  Emacs Lisp Compiler Error     Jumps to def with error    &lt;- same
+  Other Compiler Error          Jumps to src error line    &lt;- same
+  Grep or Occur Match           Jumps to match source line &lt;- same
+  Multi-buffer Occur Match      Jumps to match source line &lt;- same
+  Etags `TAGS' file entry       Jumps to source line       Button help
+  Ctags file entry              Jumps to source line       Button help
+  Texinfo Cross-reference
+    Before opening brace        Jumps to Texinfo referent  Button help
+    Within braces               Jumps to Info referent     Button help
+    Menu Item or node hdr       Jumps to Texinfo referent  Button help
+    Include file                Jumps to Texinfo referent  Button help
+    code/var reference          Displays doc for referent  Button help
+  Org Mode                      Follows links and cycles outline views
+  Outline Major/Minor Modes     Collapses, expands, and moves outline entries
+  Man Apropos                   Displays man page entry    &lt;- same
+  Man Pages                     Follows cross refs, file refs and C code refs
+  I/Buffer Menu                 Saves, deletes and displays buffers
+
+Emacs Info Reader
+  Menu Entry or Cross Ref       To referent                &lt;- same
+  Up, Next or Prev Header       To referent                To prior node
+  File entry of Header          To top node                To (DIR) node
+  End of current node           To next node               To previous node
+  Anywhere else                 Scrolls up a windowful     Scrolls wind down
+
+Subsystems
+  Calendar                      Scrolls or shows appts     Scrolls/marks date
+  GNU Debbugs Tracker           Displays issue discussion  Displays issue 
status
+  Dired Mode                    Views and deletes files from dir listing
+  GNUS News Reader              Toggles group subscriptions, gets new news,
+                                  and browses articles
+  Mail Reader and Summaries     Browses, deletes and expunges messages
+  OO-Browser                    Browses object classes and elements
+  Tar Mode                      Views and edits files from tar archive files
+
+Any other context (defaults)    Invalid context error      Invalid context 
error
+========================================================================================
+</pre></div>
+</div>
+
+<p>See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for extensive 
reference documentation on the
+Smart Keys.
+</p>
+<a name="index-action_002dkey_002ddefault_002dfunction"></a>
+<a name="index-assist_002dkey_002ddefault_002dfunction"></a>
+<a name="index-Smart-Key_002c-default-context"></a>
+<a name="index-default-Smart-Key-context"></a>
+<p>Note how the last line in the table explains that the default behavior of
+the Smart Keys in an unknown context is to report an error.  You can change
+these behaviors by setting two variables.  See the documentation
+for the variables <code>action-key-default-function</code> and
+<code>assist-key-default-function</code> for information on how to customize
+the behavior of the Smart Keys within default contexts.
+</p>
+<a name="index-Smart-Key-help"></a>
+<a name="index-help_002c-Smart-Key"></a>
+<a name="index-context_002dsensitive-help"></a>
+<p>When you use a mouse and you want to find out what either of the Smart
+Keys does within a context, depress the one you want to check on and
+hold it down, then press the other and release as you please.  A help
+buffer will pop up explaining the actions that will be performed in that
+context, if any.  A press of either Smart Key at the end of that
+help buffer will restore your display to its configuration prior to
+invoking help.
+</p>
+<a name="index-C_002dh-A"></a>
+<a name="index-C_002du-C_002dh-A"></a>
+<p>On the keyboard, <kbd>{C-h A}</kbd> displays this same context-sensitive
+help for the Action Key while <kbd>{C-u C-h A}</kbd> displays the help for
+the Assist Key.  Note that <kbd>{C-h a}</kbd> performs a function unrelated
+to Hyperbole, so you must press the shift key when you type
+the <tt class="key">A</tt> character.
 </p>
 <hr>
-<a name="Implicit-Buttons"></a>
+<a name="Smart-Key-Argument-Selection"></a>
 <div class="header">
 <p>
-Next: <a href="#Button-Files" accesskey="n" rel="next">Button Files</a>, 
Previous: <a href="#Global-Buttons" accesskey="p" rel="prev">Global 
Buttons</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-Debugging" accesskey="n" rel="next">Smart Key 
Debugging</a>, Previous: <a href="#Smart-Key-Operations" accesskey="p" 
rel="prev">Smart Key Operations</a>, Up: <a href="#Smart-Keys" accesskey="u" 
rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Implicit-Buttons-1"></a>
-<h3 class="section">2.3 Implicit Buttons</h3>
+<a name="Smart-Key-Argument-Selection-1"></a>
+<h3 class="section">2.3 Smart Key Argument Selection</h3>
 
-<a name="index-button_002c-implicit-1"></a>
-<a name="index-implicit-button-1"></a>
-<p><em>Implicit buttons</em> are virtual buttons recognized within the
-natural structure of a document.  For example, a web URL button that
-displays its link or an email address button that starts a mail
-message to the associated address.  Implicit buttons are identified by
-contextual patterns found within documents.  An <em>Implicit button
-type</em> identifies a pattern or state that when matched triggers
-an <em>action</em> associated with the implicit button type.  The action
-is specified by either a Hyperbole action type (see <a 
href="#Action-Types">Action Types</a>)
-or an Emacs Lisp function.  Implicit button types may use the same
-action types that explicit buttons use.  As an example, a pathname
-implicit button type would match to any existing local filename or
-directory name and its action would be to display the associated file
-or directory, typically in another window.
+<a name="index-Hyperbole-help"></a>
+<p>A prime design criterion of Hyperbole&rsquo;s user interface is that you
+should be able to see what an operation will do before using it.  The
+Assist Key typically shows you what a button or minibuffer menu item
+will do before you activate it.  Hyperbole also displays the result of
+directly selecting an argument value with the Action Key, to provide
+feedback as to whether the correct item has been selected.  A second
+press/click is necessary before an argument is accepted and processed.
 </p>
-<a name="index-file_002c-hibtypes_002eel"></a>
-<a name="index-context"></a>
-<a name="index-boolean-expressions"></a>
-<a name="index-activating-implicit-button"></a>
-<a name="index-menu-item_002c-Ibut_002fAct"></a>
-<a name="index-C_002dh-h-i-a"></a>
-<p>Unlike explicit buttons, implicit buttons have no individual button data
-other than their textual labels.  You use implicit button types which
-include boolean expressions (predicates) that match to both the label
-and the context required of any button of the type.  Each time a Smart
-Key is pressed at a location, Hyperbole evaluates the predicates from
-the list of implicit button types and the first one that evaluates true
-is selected and its associated action is triggered.  The Ibut/Act menu
-item, <kbd>{C-h h i a}</kbd>, also activates any implicit button found at the
-current point.
+<a name="index-argument-entry"></a>
+<a name="index-direct-selection"></a>
+<a name="index-double-click"></a>
+<p>Many Hyperbole commands prompt you for arguments.  The standard
+Hyperbole user interface has an extensive core of argument types that
+it recognizes.  Whenever Hyperbole is prompting you for an argument,
+it knows the type that it needs and provides some error checking to
+help you get it right.  More importantly, it allows you to press the
+Action Key within an entity that you want to use as an argument and it
+will grab the appropriate thing and show it to you at the input prompt
+within the minibuffer.  If you press (click with a mouse) the Action
+Key on the same thing again, it accepts the entity as the argument
+and moves on.  Thus, a double click registers a desired argument.
+Double-quoted strings, pathnames, mail messages, Info nodes, dired
+listings, buffers, numbers, completion items and so forth are all
+recognized at appropriate times.  All of the argument types mentioned
+in the documentation for the Emacs Lisp <code>interactive</code> function
+are recognized.  Experiment a little and you will quickly get used to
+this direct selection technique.
 </p>
-<p>All of this happens transparently and is easy to use once you try it.
-The Hyperbole Smart Keys offer extensive additional context-sensitive
-point-and-click type behavior beyond implicit button types.  See <a 
href="#Smart-Key-Operations">Smart Key Operations</a>.
+<a name="index-completion"></a>
+<p>Wherever possible, standard Emacs completion is offered, as described in
+<a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Completion";>Completion</a>
 in <cite>the GNU Emacs Manual</cite>.  Remember to use <kbd>{?}</kbd>
+to see what your possibilities for an argument are.  Once you have a
+list of possible completions on screen, press the Action Key twice on
+any item to enter it as the argument.
 </p>
-<a name="index-ibtypes_002c-list-of"></a>
-<a name="index-implicit-button-types"></a>
-<p>Below, standard implicit button types are listed in the order in which
-Hyperbole tries to match to the types when looking for an implicit
-button; <kbd>{C-h h i t <span class="key">RET</span>}</kbd> provides similar 
information.  See
-the Hyperbole file, <samp>hibtypes.el</samp>, for complete examples of
-implicit button types.
+<hr>
+<a name="Smart-Key-Debugging"></a>
+<div class="header">
+<p>
+Next: <a href="#Smart-Key-Thing-Selection" accesskey="n" rel="next">Smart Key 
Thing Selection</a>, Previous: <a href="#Smart-Key-Argument-Selection" 
accesskey="p" rel="prev">Smart Key Argument Selection</a>, Up: <a 
href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Key-Debugging-1"></a>
+<h3 class="section">2.4 Smart Key Debugging</h3>
+
+<p>Typically, <kbd>{C-h A}</kbd> and <kbd>{C-u C-h A}</kbd> which show Action 
and
+Assist Key help for the current context, are sufficient for seeing how
+the Smart Keys behave no matter where they are used.
 </p>
-<dl compact="compact">
-<dd>
-<a name="index-ibtypes-completion"></a>
-<a name="index-completion"></a>
-</dd>
-<dt><code>completion</code></dt>
-<dd><p>Inserts the completion at point into the minibuffer or the other window.
+<a name="index-C_002dh-h-c-d"></a>
+<a name="index-Smart-Key-debugging"></a>
+<a name="index-menu-item_002c-Cust_002fDebug_002dToggle"></a>
+<a name="index-debugging-Smart-Keys"></a>
+<a name="index-troubleshooting-Smart-Keys"></a>
+<a name="index-Messages-buffer"></a>
+<a name="index-logging-Smart-Key-behavior"></a>
+<p>However, if a Smart Key ever behaves differently than you think it
+should or if you want to test how the Smart Keys respond in a new
+context, then the Smart Key debugging flag may be of use.  You toggle
+it on and off with <kbd>{C-h h c d}</kbd> (minibuffer menu
+Cust/Debug-Toggle).  Once enabled, this displays a message in the
+minibuffer each time the Action or Assist Key is released, showing
+the context of the press and its associated action, so you can see
+exactly what is happening whenever you use a Smart Key.  These
+messages are all prefaced with &ldquo;(HyDebug)&rdquo; and logged to the
+&ldquo;*Messages*&rdquo; buffer for later viewing.
 </p>
-<a name="index-ibtypes-hyp_002dsource"></a>
-<a name="index-Hyperbole-report"></a>
-</dd>
-<dt><code>hyp-source</code></dt>
-<dd><p>Turns source location entries in Hyperbole reports into buttons that
-jump to the associated location.
+<a name="index-C_002dh-h-m-c"></a>
+<a name="index-C_002dh-h-m-r"></a>
+<p>If you do find a problem with the Smart Keys and want to report a bug,
+use <kbd>{C-h h m r}</kbd> to compose an email message to the bug-hyperbole
+list.  Hyperbole will automatically include all of the &ldquo;(HyDebug)&rdquo;
+messages from your current emacs session into your email.  Similarly,
+when you compose an email to the hyperbole-users mailing list
+with <kbd>{C-h h m c}</kbd>, these messages are also included.
 </p>
-<a name="index-ibtypes-hyp_002daddress"></a>
-<a name="index-Hyperbole-mail-list"></a>
-</dd>
-<dt><code>hyp-address</code></dt>
-<dd><p>Turns a Hyperbole support/discussion e-mail address into an implicit
-button which inserts Hyperbole environment information.  This is
-useful when sending mail to a Hyperbole discussion mail list.  See
-also the documentation for <code>actypes::hyp-config</code>.
+<hr>
+<a name="Smart-Key-Thing-Selection"></a>
+<div class="header">
+<p>
+Next: <a href="#Smart-Mouse-Key-Modeline-Clicks" accesskey="n" 
rel="next">Smart Mouse Key Modeline Clicks</a>, Previous: <a 
href="#Smart-Key-Debugging" accesskey="p" rel="prev">Smart Key Debugging</a>, 
Up: <a href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Key-Thing-Selection-1"></a>
+<h3 class="section">2.5 Smart Key Thing Selection</h3>
+
+<a name="index-sexp-selection"></a>
+<a name="index-code-block-selection"></a>
+<a name="index-selection"></a>
+<a name="index-smart-selection"></a>
+<a name="index-smart-marking"></a>
+<a name="index-region-selection"></a>
+<a name="index-things"></a>
+<a name="index-delimited-things"></a>
+<p>Hyperbole has some radically cool ways to select regions of structured text
+or source code and to copy or move them between buffers with a single mouse
+drag or two key presses.  A great deal of smarts are built-in so that it
+does the right thing most of the time; many other attempts at similar
+behavior such as <samp>thing.el</samp> fail to deal with many file format
+complexities.
 </p>
-<a name="index-ibtypes-Info_002dnode"></a>
-<a name="index-Info-node"></a>
-</dd>
-<dt><code>Info-node</code></dt>
-<dd><p>Makes &quot;(filename)nodename&quot; buttons display the associated 
Info node.
-Also makes &quot;(filename)itemname&quot; buttons display the associated Info
-index item.
+<p>We use the term <em>things</em> to refer to structured entities that
+Hyperbole can select.  These include: delimited pairs of (), {}, &lt;&gt;,
+[] and quote marks, source code functions, source code comments and
+matching tag pairs in HTML and SGML modes.  <em>Delimited things</em> are
+those things that contain a selectable delimiter such as an opening
+parenthesis.
 </p>
-<a name="index-ibtypes-www_002durl"></a>
-<a name="index-URL"></a>
-<a name="index-World_002dwide-Web"></a>
-<a name="index-WWW"></a>
-<a name="index-Action-Key_002c-web-browsing"></a>
-<a name="index-Action-Key_002c-web-browsing-1"></a>
-<a name="index-browse_002durl_002dbrowser_002dfunction"></a>
-</dd>
-<dt><code>www-url</code></dt>
-<dd><p>When not in an Emacs web browser buffer, follows any non-ftp URL (link) 
at point.
-The variable, <code>browse-url-browser-function</code>, may be used to 
customize
-which URL browser is called.  Terse URLs which lack a protocol prefix,
-like www.gnu.org, are also recognized.
+<a name="index-HTML-tag-pair"></a>
+<a name="index-SGML-tag-pair"></a>
+<p>The best way to mark a delimited thing is to move your cursor to the
+starting delimiter of the thing and then press the Action Key.  Typically,
+you will see the thing highlight.  You can then operate upon it as you
+would any Emacs region.  In many cases, you can do the same thing upon
+the closing delimiter, but this is not as reliable.  An Action Key
+press on the start of an HTML or SGML tag pair marks the entire region
+span of the pair.  If you use the Assist Key instead, it will mark and
+kill (delete) the thing.
 </p>
-<a name="index-ibtypes-gnus_002dpush_002dbutton"></a>
-<a name="index-GNUS-push_002dbuttons"></a>
-<a name="index-hiding-signatures"></a>
-<a name="index-signatures_002c-hiding"></a>
-</dd>
-<dt><code>gnus-push-button</code></dt>
-<dd><p>Activates GNUS-specific article push-buttons, e.g. for hiding
-signatures.  GNUS is a news and mail reader.&quot;
+<a name="index-drag_002c-with-region"></a>
+<a name="index-kill-region"></a>
+<a name="index-yank-region"></a>
+<a name="index-cut-region"></a>
+<a name="index-copy-region"></a>
+<a name="index-paste-region"></a>
+<p>Even better are Smart Mouse Key drags which let you copy or move
+delimited things in one operation without even highlighting them.  To
+copy, simply drag with the Action Key from a thing&rsquo;s opening delimiter
+and release somewhere outside of the thing, either within the same
+window or within another window.  The thing will be copied to the
+point of release.  If you want to move a thing, simply perform the
+same drag but with the Assist Mouse Key.  Ensure that you do not move
+any explicit buttons from one buffer to another as that does not
+work.
 </p>
-<a name="index-ibtypes-texinfo_002dref"></a>
-<a name="index-Texinfo-cross_002dreference"></a>
-<a name="index-cross_002dreference_002c-Texinfo"></a>
-</dd>
-<dt><code>texinfo-ref</code></dt>
-<dd><p>Displays Texinfo, Info node or help associated with Texinfo node, menu
-item, @xref, @pxref, @ref, @code or @var at point.  If point is
-within the braces of a cross-reference, the associated Info node is
-shown.  If point is to the left of the braces but after the @ symbol and
-the reference is to a node within the current Texinfo file, then the
-Texinfo node is shown.
+<p>Try out some of these operations in HTML or source code files to see
+how they can speed your editing.
 </p>
-<p>For @code and @var references, the associated documentation string
-is displayed.
+<p>Hyperbole also binds two convenience keys for working with things.
 </p>
-<a name="index-ibtypes-mail_002daddress"></a>
-<a name="index-e_002dmail-address"></a>
-<a name="index-rolo-address"></a>
-<a name="index-address"></a>
-</dd>
-<dt><code>mail-address</code></dt>
-<dd><p>If on an e-mail address in a specific buffer type, mail to that address
-in another window. Applies to the rolo match buffer, any buffer
-attached to a file in <code>hyrolo-file-list</code>, or any buffer with 
<samp>mail</samp>
-or <samp>rolo</samp> (case-insensitive) within its name.
+<a name="index-C_002dc-RET"></a>
+<a name="index-hui_002dselect_002dthing"></a>
+<a name="index-hui_002dselect_002dthing_002dwith_002dmouse"></a>
+<p>The first such key is <kbd>{C-c <span class="key">RET</span>}</kbd> 
<code>hui-select-thing</code> which
+selects bigger and bigger syntactic regions with each successive use.
+Double or triple clicks of the Selection Key (left mouse key) do the same
+thing.  The first press selects a region based upon the character at point.
+For example, with point over an opening or closing grouping character, such
+as { or }, the whole grouping is selected, e.g. a C function.  When on an
+_ or - within a programming language identifier name, the whole name is
+selected.  The type of selection is displayed in the minibuffer as
+feedback.  When using a language in which indentation determines nesting
+level like Python, a double click on the first alpha character of a line,
+such as an if statement, selects the current clause (until the next line at
+the same or lesser indentation).  Use <kbd>{C-g}</kbd> to unmark the region 
when
+done.  Use, <code>hui-select-thing-with-mouse</code> if you want to bind this 
to
+a different mouse key to use single clicks instead of double clicks.
 </p>
-<a name="index-ibtypes-patch_002dmsg"></a>
-<a name="index-patch-output"></a>
-</dd>
-<dt><code>patch-msg</code></dt>
-<dd><p>Jumps to the source code associated with output from the 
&lsquo;<samp>patch</samp>&rsquo;
-program.  Patch applies diffs to source code.
+<a name="index-C_002dc-_002e"></a>
+<a name="index-hui_002dselect_002dgoto_002dmatching_002dtag"></a>
+<p>The second convenience key is bound only in HTML/web mode.  <kbd>{C-c
+.}</kbd> <code>hui-select-goto-matching-tag</code> jumps between the opening 
and
+closing tag of a pair.  It moves point to the start of the tag paired
+with the closest tag that point is within or which it precedes.  A
+second press moves point to the matching tag of the pair, allowing you
+to quickly jump back and forth between opening and closing tags.
+</p>
+<hr>
+<a name="Smart-Mouse-Key-Modeline-Clicks"></a>
+<div class="header">
+<p>
+Next: <a href="#Smart-Mouse-Key-Drags" accesskey="n" rel="next">Smart Mouse 
Key Drags</a>, Previous: <a href="#Smart-Key-Thing-Selection" accesskey="p" 
rel="prev">Smart Key Thing Selection</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Mouse-Key-Modeline-Clicks-1"></a>
+<h3 class="section">2.6 Smart Mouse Key Modeline Clicks</h3>
+
+<p>Smart Mouse Key clicks on a window&rsquo;s modeline offer many powerful 
browsing
+features, including directory editing (dired), user manual browsing, and
+window, buffer and frame selection.  Generally, only Hyperbole-specific
+modeline actions are discussed herein.
+</p>
+<ul>
+<li> Leftmost Character
+
+<a name="index-bury-buffer"></a>
+<a name="index-unbury-buffer"></a>
+<a name="index-modeline_002c-bury-buffer"></a>
+<a name="index-modeline_002c-unbury-buffer"></a>
+<a name="index-modeline_002c-leftmost-character"></a>
+<p>Action Key clicks on the first (usually blank) character of the
+modeline bury the current buffer in the buffer list and display the
+next buffer in the list.  Assist Key clicks do the reverse and unbury
+the bottom buffer.
+</p>
+<a name="index-modeline_002c-next-buffer"></a>
+<a name="index-modeline_002c-prev-buffer"></a>
+<p>A similar effect can be achieved with the standard Emacs mouse 1 (left) and
+3 (right) buttons on the Buffer ID element of modeline to cycle through
+previous and next buffers, respectively.  This may be easier to use since
+you can click anywhere on the buffer identifier.
+</p>
+</li><li> Buffer ID Element
+
+<a name="index-dired"></a>
+<a name="index-modeline_002c-dired"></a>
+<a name="index-buffer-id"></a>
+<a name="index-modeline_002c-buffer-id"></a>
+<a name="index-dragging-items_002c-dired"></a>
+<p>On the left part of the modeline is the buffer identification,
+generally the name of the buffer in use.  An Action Key click on that
+switches the window to edit the buffer&rsquo;s directory using dired.
+Then Action Key clicks on directory items in the dired buffer display the
+items selected in other windows.  An Action Key drag from an item to
+another window displays the item in that window.
+</p>
+<p>An Action Key click on the first line in a dired buffer which contains the
+current directory path, specifically on any ancestor part of the path (the
+part to the left of the click point), starts another dired session on the
+ancestor directory.  Click at the end of this line to end the dired session
+(bury its buffer).
+</p>
+</li><li> Large Blank Area
+
+<a name="index-buffer-menu"></a>
+<a name="index-modeline_002c-buffer-menu"></a>
+<a name="index-jump-menu"></a>
+<a name="index-modeline_002c-jump-menu"></a>
+<a name="index-dragging-items_002c-buffer-menu"></a>
+<p>An Action Mouse Key click in a blank area of a window modeline (away
+from left and right edges) toggles between displaying and hiding a
+list of all buffers.  Once displayed, an Action Key click on a buffer
+item will display it in another window.  You can drag items to specific
+windows for display as well.
+</p>
+<p>Alternatively, you may (1) display the buffer menu, (2) use its 
<kbd>{m}</kbd>
+command to mark buffers, and (3) use the Hyperbole <kbd>address@hidden</kbd> 
command to
+display the marked buffers in a grid of popup windows whose number of
+rows and columns you specify at the prompt or via a prefix argument.
+This also works in <code>ibuffer-menu</code> and <code>dired</code> modes.
+See <a href="#HyControl">HyControl</a>.
+</p>
+<p>An Assist Key click in the blank area of the modeline displays a quick
+access menu of display-oriented commands.  You can jump to buffers
+categorized by major mode, jump to windows by buffer name, or to
+frames by name.  Manage your windows and frames quickly with this menu
+as well.  As always with Hyperbole, just try it and you&rsquo;ll begin to
+wonder how you lived without it before.
+</p>
+</li><li> Right Corner
+
+<a name="index-Info-browser"></a>
+<a name="index-modeline-click-and-drag"></a>
+<a name="index-modeline_002c-Info-Browser"></a>
+<p>A click of the Action Mouse Key in the right corner of a window
+modeline (within the rightmost 3 characters) displays or hides the
+GNU Info Manual Browser, giving you quick point and click access to
+an amazing wealth of documentation, since the Action Key also browses
+through these manuals and follows their hyperlinked cross-references.
+A click of the Assist Key in the same location displays or hides the
+Smart Key summary, as noted earlier.
+</p>
+</li><li> Customizable Variables
+
+<a name="index-action_002dkey_002dmodeline_002dfunction"></a>
+<a name="index-assist_002dkey_002dmodeline_002dfunction"></a>
+<a name="index-action_002dkey_002dmodeline"></a>
+<a name="index-assist_002dkey_002dmodeline"></a>
+<a name="index-hmouse_002dcontext_002dmenu"></a>
+<a name="index-hmouse_002dcontext_002dibuffer_002dmenu"></a>
+<a name="index-ibuffer-menu"></a>
+<p>Hyperbole modeline mouse click actions are controlled by the two functions,
+<code>action-key-modeline</code> and <code>assist-key-modeline</code>.  If you 
know
+a little Emacs Lisp you can change these to do whatever you like.  When a
+Smart Key press is on a blank part of a modeline but not at the left or
+right, the function given by one of these two variables is
+executed: <code>action-key-modeline-function</code> or
+<code>assist-key-modeline-function</code>.  By default, the Action Key toggles
+between displaying and hiding the buffer menu.  If you like the more
+advanced features of <code>Ibuffer Mode</code>, you can change the buffer menu 
to
+use that with the following in your Emacs initialization file:
+<code>(setq action-key-modeline-function #'hmouse-context-ibuffer-menu)</code>.
+To set it back to the default use:
+<code>(setq action-key-modeline-function #'hmouse-context-menu)</code>.
+</p>
+<a name="index-dired_002djump"></a>
+<a name="index-hui_002dmenu_002dscreen_002dcommands"></a>
+<a name="index-directory-editor"></a>
+<a name="index-dired-1"></a>
+<a name="index-modeline_002c-screen-command-menu"></a>
+<p>The default <code>assist-key-modeline-function</code> is to pop up a menu of
+convenient screen commands that lets you select buffers grouped by
+major mode, use HyControl, or jump to specific windows, window
+configurations or frames.  If you would prefer it runs the directory
+editor <code>dired</code> on the directory associated with the window of the
+modeline press, use this: <code>(setq assist-key-modeline-function 
#'dired-jump)</code>.
+To set it back to the default use:
+<code>(setq assist-key-modeline-function #'hui-menu-screen-commands)</code>.
+</p>
+<p>These variables may also be changed permanently with the Emacs
+interactive customization interface.  Use <kbd>{M-x customize-variable
+<span class="key">RET</span> assist-key-modeline-function <span 
class="key">RET</span>}</kbd>.  In the Assist
+Modeline Function text field that appears, change the value
+to <code>dired-jump</code>.  Then press the &ldquo;Apply and Save&rdquo; 
button.
+</p></li></ul>
+
+<hr>
+<a name="Smart-Mouse-Key-Drags"></a>
+<div class="header">
+<p>
+Previous: <a href="#Smart-Mouse-Key-Modeline-Clicks" accesskey="p" 
rel="prev">Smart Mouse Key Modeline Clicks</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Mouse-Key-Drags-1"></a>
+<h3 class="section">2.7 Smart Mouse Key Drags</h3>
+
+<a name="index-smart-mouse-key-drag"></a>
+<a name="index-Action-Mouse-Key-drag"></a>
+<a name="index-Assist-Mouse-Key-drag"></a>
+<a name="index-drag_002c-Smart-Mouse-Key"></a>
+<p>As mentioned in the section on Thing Selection, Hyperbole Smart Mouse Key
+drag actions can be quite useful.  This section summarizes other drag
+contexts and actions; for complete documentation, see <a 
href="#Smart-Mouse-Keys">Smart Mouse Keys</a>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a 
href="#Creating-and-Deleting-Windows" accesskey="1">Creating and Deleting 
Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Saving-and-Restoring-Window-Configurations" accesskey="2">Saving and 
Restoring Window Configurations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Resizing-Windows" 
accesskey="3">Resizing Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Dragging-Buffers" 
accesskey="4">Dragging Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="Creating-and-Deleting-Windows"></a>
+<div class="header">
+<p>
+Next: <a href="#Saving-and-Restoring-Window-Configurations" accesskey="n" 
rel="next">Saving and Restoring Window Configurations</a>, Previous: <a 
href="#Smart-Mouse-Key-Drags" accesskey="p" rel="prev">Smart Mouse Key 
Drags</a>, Up: <a href="#Smart-Mouse-Key-Drags" accesskey="u" rel="up">Smart 
Mouse Key Drags</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Creating-and-Deleting-Windows-1"></a>
+<h4 class="subsection">2.7.1 Creating and Deleting Windows</h4>
+
+<a name="index-drag_002c-horizontal"></a>
+<a name="index-horizontal-drag"></a>
+<a name="index-drag_002c-vertical"></a>
+<a name="index-vertical-drag"></a>
+<p>Horizontal and vertical drags of the Smart Mouse Keys are used to split and
+delete Emacs windows.
+</p>
+<p>An Action Mouse Key horizontal drag of five or more characters in either
+direction within a single window creates a new window by splitting the
+current window into two windows, one atop the other.  An Action Mouse Key
+vertical drag in either direction splits the current window into two
+side-by-side windows.  A horizontal or vertical drag of the Assist Mouse
+Key within a single window, deletes that window.
 </p>
-<a name="index-ibtypes-elisp_002dcompiler_002dmsg"></a>
-<a name="index-byte-compiler-error"></a>
-<a name="index-Emacs-Lisp-compiler-error"></a>
-<a name="index-compiler-error"></a>
-</dd>
-<dt><code>elisp-compiler-msg</code></dt>
-<dd><p>Jumps to the source code for a definition associated with a
-byte-compiler error message.  Works when activated anywhere within an
-error line.
+<a name="index-C_002dx-_002b"></a>
+<a name="index-rebalance-windows"></a>
+<a name="index-windows_002c-rebalance"></a>
+<p>If you split windows many times and then delete a number of the windows,
+you&rsquo;ll be left with windows of differing heights.  Use <kbd>{C-x 
+}</kbd> to
+re-balance the sizes of the remaining windows, so they are fairly even.
 </p>
-<a name="index-ibtypes-debugger_002dsource"></a>
-<a name="index-gdb"></a>
-<a name="index-dbx"></a>
-<a name="index-xdb"></a>
-<a name="index-stack-frame"></a>
-<a name="index-breakpoint"></a>
-<a name="index-source-line"></a>
-</dd>
-<dt><code>debugger-source</code></dt>
-<dd><p>Jumps to the source line associated with a debugger stack frame or
-breakpoint line.  This works with gdb, dbx, and xdb.  Such lines are
-recognized in any buffer.
+<hr>
+<a name="Saving-and-Restoring-Window-Configurations"></a>
+<div class="header">
+<p>
+Next: <a href="#Resizing-Windows" accesskey="n" rel="next">Resizing 
Windows</a>, Previous: <a href="#Creating-and-Deleting-Windows" accesskey="p" 
rel="prev">Creating and Deleting Windows</a>, Up: <a 
href="#Smart-Mouse-Key-Drags" accesskey="u" rel="up">Smart Mouse Key Drags</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Saving-and-Restoring-Window-Configurations-1"></a>
+<h4 class="subsection">2.7.2 Saving and Restoring Window Configurations</h4>
+
+<a name="index-window-configuration-drag"></a>
+<a name="index-drag_002c-window-configuration"></a>
+<a name="index-drag_002c-diagonal"></a>
+<a name="index-diagonal-drag"></a>
+<p>A window configuration consists of the set of windows within a single Emacs
+frame.  This includes their locations, buffers, and the scrolled positions of
+their buffers.
 </p>
-<a name="index-ibtypes-grep_002dmsg"></a>
-<a name="index-grep"></a>
-<a name="index-compiler-error-1"></a>
-</dd>
-<dt><code>grep-msg</code></dt>
-<dd><p>Jumps to a line associated with grep or compilation error messages.
-Messages are recognized in any buffer.
+<p>Hyperbole allows you to save and restore window configurations with simple
+diagonal mouse drags within a single window.  A diagonal drag in any
+direction of the Action Key saves the current window configuration to a
+ring of window configurations, just like the Emacs text kill ring.
+(See <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Kill-Ring";>Kill
 Ring</a> in <cite>the Emacs Manual</cite>).  Each diagonal drag in any
+direction of the Assist Key restores a prior saved window configuration
+from the ring.  Window configurations are restored in reverse order of the
+way they were saved.  Since a ring is circular, after the oldest element is
+restored, the newest element will again be restored and so on.
 </p>
-<a name="index-ibtypes-klink"></a>
-<a name="index-klink"></a>
-<a name="index-koutline-link"></a>
-<a name="index-kcell-link"></a>
-</dd>
-<dt><code>klink</code></dt>
-<dd><p>Follows a link delimited by &lt;&gt; to a koutline cell.
-See the documentation for <code>actypes::link-to-kotl</code> for valid link
-specifiers.
+<hr>
+<a name="Resizing-Windows"></a>
+<div class="header">
+<p>
+Next: <a href="#Dragging-Buffers" accesskey="n" rel="next">Dragging 
Buffers</a>, Previous: <a href="#Saving-and-Restoring-Window-Configurations" 
accesskey="p" rel="prev">Saving and Restoring Window Configurations</a>, Up: <a 
href="#Smart-Mouse-Key-Drags" accesskey="u" rel="up">Smart Mouse Key Drags</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Resizing-Windows-1"></a>
+<h4 class="subsection">2.7.3 Resizing Windows</h4>
+
+<a name="index-resizing-windows"></a>
+<a name="index-drag_002c-resize-window"></a>
+<p>Emacs windows may be resized by dragging their window separators (modelines
+or vertical side lines) within a frame.  Simply depress either Smart Mouse
+Key on a modeline or near a window side, hold it down while you drag to a
+new location and then release.  The window separator will then jump to the
+location of release.  Basically, just drag the window separator to where
+you want it.  Nowadays a better version of Emacs window resizing exists on
+the left mouse key.  A drag with this key from a blank area of a modeline
+or a window side divider shows visible feedback as the window is resized.
+But if you are always using the Smart Mouse Keys, you may prefer to use
+them for resizing windows as well.
 </p>
-<a name="index-ibtypes-man_002dapropos"></a>
-<a name="index-UNIX-manual"></a>
-<a name="index-man-pages"></a>
-<a name="index-man-apropos"></a>
-</dd>
-<dt><code>man-apropos</code></dt>
-<dd><p>Makes man apropos entries (from &lsquo;<samp>man -k</samp>&rsquo;) 
display associated man pages when
-selected.
+<p>Note that you cannot drag the bottom-most modeline; you would have to
+resize the frame to move the bottom of that window up.
 </p>
-<a name="index-ibtypes-rfc"></a>
-<a name="index-Internet-RFC"></a>
-<a name="index-Request-For-Comment"></a>
-<a name="index-RFC"></a>
-<a name="index-remote-file"></a>
-<a name="index-ftp"></a>
-</dd>
-<dt><code>rfc</code></dt>
-<dd><p>Retrieves and displays an Internet rfc referenced at point.  Requires 
remote
-file access, e.g. via the Tramp library, for remote ftp retrievals.  The
-following formats are recognized: RFC822, rfc-822, and RFC 822.  The
-<code>hpath:rfc</code> variable specifies the location from which to retrieve
-RFCs.&quot;
+<hr>
+<a name="Dragging-Buffers"></a>
+<div class="header">
+<p>
+Previous: <a href="#Resizing-Windows" accesskey="p" rel="prev">Resizing 
Windows</a>, Up: <a href="#Smart-Mouse-Key-Drags" accesskey="u" rel="up">Smart 
Mouse Key Drags</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Dragging-Buffers_002c-Windows-and-Items"></a>
+<h4 class="subsection">2.7.4 Dragging Buffers, Windows and Items</h4>
+
+<p>Smart Mouse Key drags let you display buffers and windows however you want
+them.  Dired and buffer-menu items may also be displayed in specific
+locations with drags.  Below we explore these drag actions.
 </p>
-<a name="index-ibtypes-kbd_002dkey"></a>
-<a name="index-key-sequence"></a>
-</dd>
-<dt><code>kbd-key</code></dt>
-<dd><p>Executes the command binding or the Hyperbole minibuffer menu action
-for a key sequence delimited by curly braces.  Key sequences should
-be in human readable form, e.g. <kbd>{C-x C-b}</kbd>.  Formats such
-as {^x^b} will not be recognized.
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#Swapping-Buffers" 
accesskey="1">Swapping Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Displaying-Buffers" 
accesskey="2">Displaying Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Cloning-Windows" 
accesskey="3">Cloning Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Displaying-File-and-Buffer-Items" accesskey="4">Displaying File and 
Buffer Items</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="Swapping-Buffers"></a>
+<div class="header">
+<p>
+Next: <a href="#Displaying-Buffers" accesskey="n" rel="next">Displaying 
Buffers</a>, Previous: <a href="#Dragging-Buffers" accesskey="p" 
rel="prev">Dragging Buffers</a>, Up: <a href="#Dragging-Buffers" accesskey="u" 
rel="up">Dragging Buffers</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Swapping-Buffers-1"></a>
+<h4 class="subsubsection">2.7.4.1 Swapping Buffers</h4>
+
+<a name="index-swap-buffers"></a>
+<a name="index-window_002c-swap-buffer"></a>
+<a name="index-buffer_002c-swap"></a>
+<a name="index-drag_002c-buffer-swap"></a>
+<p>Swapping buffer locations is quick and easy with Hyperbole.  Simply drag
+from one window to another with the Assist Key (not the Action Key).  This
+works across frames as well.
 </p>
-<a name="index-ibtypes-dir_002dsummary"></a>
-<a name="index-file_002c-MANIFEST"></a>
-<a name="index-file_002c-DIR"></a>
-</dd>
-<dt><code>dir-summary</code></dt>
-<dd><p>Detects filename buttons in files named &quot;MANIFEST&quot; or 
&quot;DIR&quot;.
-Displays selected files.  Each file name must be at the beginning of the
-line and must be followed by one or more spaces and then another
-non-space, non-parenthesis, non-brace character.
+<p>If you have just two windows in an Emacs frame, you can swap their buffers
+from the keyboard.  Use this Hyperbole minibuffer menu key sequence
+involving the tilde key to swap the buffers and quit from the Hyperbole
+minibuffer menu: <kbd>{C-h h s w ~ q}</kbd>.
 </p>
-<a name="index-ibtypes-text_002dtoc"></a>
-<a name="index-table-of-contents"></a>
-<a name="index-toc-implicit-button-type"></a>
-</dd>
-<dt><code>text-toc</code></dt>
-<dd><p>Jumps to the text file section referenced by a table of contents entry
-at point.  The file name of the current buffer must contain
-<samp>README</samp> and there must be a &lsquo;Table of Contents&rsquo; or 
&lsquo;Contents&rsquo;
-label on a line by itself (it may begin with an asterisk), preceding the
-table of contents.  Each toc entry must begin with some whitespace
-followed by one or more asterisk characters.  Each line which begins a
-new file section must start with one or more asterisk characters at the
-very beginning of the line.
+<hr>
+<a name="Displaying-Buffers"></a>
+<div class="header">
+<p>
+Next: <a href="#Cloning-Windows" accesskey="n" rel="next">Cloning Windows</a>, 
Previous: <a href="#Swapping-Buffers" accesskey="p" rel="prev">Swapping 
Buffers</a>, Up: <a href="#Dragging-Buffers" accesskey="u" rel="up">Dragging 
Buffers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Displaying-Buffers-1"></a>
+<h4 class="subsubsection">2.7.4.2 Displaying Buffers</h4>
+
+<a name="index-buffer_002c-copy"></a>
+<a name="index-copy-buffer"></a>
+<a name="index-drag_002c-copy-buffer"></a>
+<p>What if you want to display the same buffer in another window and not swap
+buffers?  Depress the Action Mouse Key in the open area of the modeline of
+the source window and drag to the text area of the destination window.
+Voila, the buffer appears in the new location as well as the old one.
 </p>
-<a name="index-ibtypes-cscope"></a>
-<a name="index-C_002fC_002b_002b-call-trees"></a>
-<a name="index-C_002fC_002b_002b-cross_002dreference"></a>
-<a name="index-Cscope"></a>
-</dd>
-<dt><code>cscope</code></dt>
-<dd><p>Jumps to a C/C++ source line associated with a Cscope C analyzer output 
line.
-Requires pre-loading of the cscope.el Lisp library available from the Emacs
-Lisp archives and the commercial cscope program available from AT&amp;T&rsquo;s
-software toolchest.  Otherwise, does nothing.
+<p>If you want a new window where you release (so the original destination 
window&rsquo;s
+buffer stays onscreen), just drag to a window&rsquo;s modeline; that window 
will be
+split before the buffer is displayed.
 </p>
-<a name="index-ibtypes-etags"></a>
-<a name="index-etags-entry"></a>
-<a name="index-TAGS-file"></a>
-<a name="index-tag"></a>
-</dd>
-<dt><code>etags</code></dt>
-<dd><p>Jumps to the source line associated with an etags file entry in a TAGS 
buffer.
-If on a tag entry line, jumps to the source line for the tag.  If on a
-pathname line or line preceding it, jumps to the associated file.
+<hr>
+<a name="Cloning-Windows"></a>
+<div class="header">
+<p>
+Next: <a href="#Displaying-File-and-Buffer-Items" accesskey="n" 
rel="next">Displaying File and Buffer Items</a>, Previous: <a 
href="#Displaying-Buffers" accesskey="p" rel="prev">Displaying Buffers</a>, Up: 
<a href="#Dragging-Buffers" accesskey="u" rel="up">Dragging Buffers</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Cloning-Windows-1"></a>
+<h4 class="subsubsection">2.7.4.3 Cloning Windows</h4>
+
+<a name="index-clone-window"></a>
+<a name="index-window_002c-clone"></a>
+<a name="index-drag_002c-clone-window"></a>
+<p>To clone a window with its buffer to a new frame, simply drag the Action 
Mouse
+Key from the window to outside of Emacs and release the key.  A new frame will
+be created, selected and sized according to the original window.  Do the same
+thing with the Assist Mouse Key and the original window will be deleted as 
well,
+unless it is the only window in that frame.
 </p>
-<a name="index-ibtypes-ctags"></a>
-<a name="index-ctags-entry"></a>
-<a name="index-tags-file"></a>
-</dd>
-<dt><code>ctags</code></dt>
-<dd><p>Jumps to the source line associated with a ctags file entry in any 
buffer.
-Ctags files are used by old editors like vi to lookup identifiers.
-InfoDock and Emacs use the newer, more flexible Etags format.
+<hr>
+<a name="Displaying-File-and-Buffer-Items"></a>
+<div class="header">
+<p>
+Previous: <a href="#Cloning-Windows" accesskey="p" rel="prev">Cloning 
Windows</a>, Up: <a href="#Dragging-Buffers" accesskey="u" rel="up">Dragging 
Buffers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Displaying-File-and-Buffer-Items-1"></a>
+<h4 class="subsubsection">2.7.4.4 Displaying File and Buffer Items</h4>
+
+<a name="index-dired-item-drag"></a>
+<a name="index-buffer-menu-item-drag"></a>
+<a name="index-drag_002c-dired-item"></a>
+<a name="index-drag_002c-buffer-menu-item"></a>
+<p>You can do the same thing with items in dired, buffer menu and ibuffer menus
+rather than buffers themselves.  Drag with the Action Mouse Key and the 
selected
+item will be displayed in any Emacs window in which you release.  Drag outside
+Emacs and it will be displayed in a new frame.
 </p>
-<a name="index-ibtypes-id_002dcflow"></a>
-<a name="index-C-call-tree"></a>
-<a name="index-call-tree_002c-C"></a>
-<a name="index-C-flow-graph"></a>
-</dd>
-<dt><code>id-cflow</code></dt>
-<dd><p>Expands or collapses C call trees and jumps to code definitions.
-Requires cross-reference tables built by the external <code>cxref</code>
-program.
+<p>So now you can put a bunch of buffers and files on your screen wherever
+you like.  Typically, a brief visual pulse is shown first at the source item 
and
+then in the whole destination window, to help you see that the transfer has 
been
+made.  An Assist Key Drag will move the the item list buffer to the
+destination (swapping buffers), just as it does with other buffers.
 </p>
-<a name="index-ibtypes-rfc_002dtoc"></a>
-<a name="index-Internet-RFC-1"></a>
-<a name="index-Request-For-Comment-1"></a>
-<a name="index-RFC-1"></a>
-<a name="index-table-of-contents-1"></a>
-</dd>
-<dt><code>rfc-toc</code></dt>
-<dd><p>Summarizes contents of an Internet rfc from anywhere within an rfc 
buffer.
-Each line of the summary may be selected to jump to the associated section.
+
+
+
+
+
+
+<hr>
+<a name="Buttons"></a>
+<div class="header">
+<p>
+Next: <a href="#Menus" accesskey="n" rel="next">Menus</a>, Previous: <a 
href="#Smart-Keys" accesskey="p" rel="prev">Smart Keys</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Buttons-1"></a>
+<h2 class="chapter">3 Buttons</h2>
+
+<a name="index-button"></a>
+<p>This chapter explains use of Hyperbole <em>buttons</em>.  There are several
+kinds of Hyperbole buttons: buttons that are created one at a time and
+stored in files (<em>explicit buttons</em>); buttons that can be
+activated by name anytime (<em>global buttons</em>); and buttons defined
+by textual patterns where one definition can create an infinite number
+of buttons (<em>implicit buttons</em>).
 </p>
-<a name="index-ibtypes-markdown_002dinternal_002dlink"></a>
-<a name="index-markdown-link"></a>
-</dd>
-<dt><code>markdown-internal-link</code></dt>
-<dd><p>Displays any in-file Markdown link referent.  Pathnames and urls are
-handled elsewhere.
+<p>Hyperbole buttons are embedded within textual documents; they may be
+created, modified, moved or deleted.  Each button performs a specific
+action, such as linking to a file or executing a shell command.
 </p>
-<a name="index-ibtypes-annot_002dbib"></a>
-<a name="index-bibliography"></a>
-<a name="index-reference"></a>
-</dd>
-<dt><code>annot-bib</code></dt>
-<dd><p>Displays annotated bibliography entries defined within the same buffer
-as the reference.  References must be delimited by square brackets, must
-begin with a word constituent character, and must not be in buffers
-whose names begin with a &lsquo; &rsquo; or &lsquo;*&rsquo; character.
+<a name="index-button_002c-explicit"></a>
+<a name="index-button_002c-global"></a>
+<a name="index-button_002c-implicit"></a>
+<a name="index-button-category"></a>
+<a name="index-explicit-button"></a>
+<a name="index-global-button"></a>
+<a name="index-implicit-button"></a>
+<p>There are three categories of Hyperbole buttons:
+</p><dl compact="compact">
+<dt><em>explicit buttons</em></dt>
+<dd><p>created by Hyperbole, accessible from within a single document;
 </p>
-<a name="index-ibtypes-debbugs_002dgnu_002dmode"></a>
-<a name="index-bug-tracking"></a>
-<a name="index-issue-tracking"></a>
 </dd>
-<dt><code>debbugs-gnu-mode</code></dt>
-<dd><p>Debbugs is a client-server issue tracker used by GNU free software
-projects, including Hyperbole, to manage issues and maintain threads
-of discussion around them.  When on a GNU Debbugs listing entry in
-<code>debbugs-gnu-mode</code>, an Action Key press displays the discussion
-of the selected issue; an Assist Key press pretty prints the status of
-the issue to a window below the listing window.
+<dt><em>global buttons</em></dt>
+<dd><p>created by Hyperbole, specific to each user, and accessible anywhere
+within a user&rsquo;s network of documents;
 </p>
-<a name="index-ibtypes-debbugs_002dgnu_002dquery"></a>
 </dd>
-<dt><code>debbugs-gnu-query</code></dt>
-<dd><p>This implicit button type displays the results of a Gnu debbugs query
-based on the string at point and works in most kinds of buffers.  If
-the query includes a single id number, it displays the original message
-submission for that id and allows browsing of the followup discussion.
-The following buffer text formats are accepted (with point prior to
-any attribute):
-</p>
-<div class="smallexample">
-<pre class="smallexample">#id-number
-bug#id-number, bug# id-number, bug #id-number or bug id-number
-bug?attr1=val1&amp;attr2=val2&amp;attr3=val3
-bug#id-number?attr1=val1&amp;attr2=val2&amp;attr3=val3
-</pre></div>
+<dt><em>implicit buttons</em></dt>
+<dd><p>created and managed by other programs or embedded within the structure
+of a document, accessible from within a single document.  Hyperbole
+recognizes implicit buttons by contextual patterns given in their type
+specifications (explained later).
+</p></dd>
+</dl>
 
-<a name="index-file_002c-hib_002ddebbugs_002eel"></a>
-<p>Note that <em>issue</em> or <em>debbugs</em> may be used as well in place
-of <em>bug</em>.  See the documentation at the top of
-the <samp>hib-debbugs.el</samp> file for detailed query format information.
-</p>
-<a name="index-ibtypes-social_002dreference"></a>
-<a name="index-hashtag"></a>
-<a name="index-username"></a>
-<a name="index-social-media"></a>
-<a name="index-social-reference"></a>
-<a name="index-hibtypes_002dsocial_002ddefault_002dservice"></a>
-</dd>
-<dt><code>social-reference</code></dt>
-<dd><p>Displays the web page associated with a social media hashtag or username
-reference at point.  Reference format is:
+<p>Explicit Hyperbole buttons may be embedded within any type of text file.
+Implicit buttons may appear only within document contexts allowed by
+their types, which may limit the kinds of documents or the locations
+within those documents at which such buttons may be found.  All global
+buttons for a user are stored in a single location and are activated by
+typing their names, rather than by direct selection, the means used to
+activate explicit and implicit buttons.
 </p>
-<div class="smallexample">
-<pre 
class="smallexample">[facebook|instagram|address@hidden&lt;hashtag-or-username&gt;
 or
-[fb|in|address@hidden&lt;hashtag-or-username&gt;
+<p>To summarize:
+</p>
+<div class="example">
+<pre class="example">Button Category   Active Within        Activation Means   
   Managed By
+========================================================================
+Explicit          a single document    direct selection      Hyperbole
+Global            any document         typing its name       Hyperbole
+Implicit          a matching context   direct selection      other tools
+
 </pre></div>
 
-<p>For example, &lsquo;<samp>address@hidden</samp>&rsquo; displays the home 
page for facebook user
-&lsquo;<samp>someuser</samp>&rsquo; and &lsquo;<samp>in#hashtag</samp>&rsquo; 
displays photos with the hashtag
-&lsquo;<samp>hashtag</samp>&rsquo;.  The first part of the label for a button 
of this type
-is the social media service name.  The service name defaults to the
-value of <code>hibtypes-social-default-service</code> (default value of
-&ldquo;twitter&rdquo;) when not given, so #hashtag would be the same as
-twitter#hashtag.
+<a name="index-terminal-use"></a>
+<p>A click on a Hyperbole button may activate it or describe its actions,
+depending on which mouse key is used.  Buttons may also be activated from a
+keyboard.  (In fact, many Hyperbole operations, including menu usage, may
+be performed from any standard character terminal interface, so you need
+not be anchored to a desktop all day).  See <a href="#Smart-Keys">Smart 
Keys</a>.  There is
+also a key that shows you how a button will behave before you activate
+it, see <a href="#Smart-Key-Operations">Smart Key Operations</a>.
 </p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#Explicit-Buttons" 
accesskey="1">Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Global-Buttons" 
accesskey="2">Global Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Implicit-Buttons" 
accesskey="3">Implicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Button-Files" 
accesskey="4">Button Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Action-Types" 
accesskey="5">Action Types</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Button-Type-Precedence" 
accesskey="6">Button Type Precedence</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Utilizing-Explicit-Buttons" 
accesskey="7">Utilizing Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+</table>
 
-<a name="index-ibtypes-function_002din_002dbuffer"></a>
-<a name="index-file_002c-func_002dmenu_002eel"></a>
-<a name="index-function-menu"></a>
-<a name="index-func_002dmenu"></a>
-</dd>
-<dt><code>function-in-buffer</code></dt>
-<dd><p>Returns the function name defined within this buffer that point is
-within or after, else &lsquo;<samp>nil</samp>&rsquo;.  This triggers only when 
the
-func-menu library has been loaded and the current major mode is one
-handled by func-menu.
+<hr>
+<a name="Explicit-Buttons"></a>
+<div class="header">
+<p>
+Next: <a href="#Global-Buttons" accesskey="n" rel="next">Global Buttons</a>, 
Previous: <a href="#Buttons" accesskey="p" rel="prev">Buttons</a>, Up: <a 
href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Explicit-Buttons-1"></a>
+<h3 class="section">3.1 Explicit Buttons</h3>
+
+<a name="index-explicit-button-1"></a>
+<a name="index-button_002c-explicit-1"></a>
+<a name="index-button-label"></a>
+<a name="index-button-name"></a>
+<a name="index-label_002c-button"></a>
+<a name="index-name_002c-button"></a>
+<p>Hyperbole creates and manages <em>explicit buttons</em> which perform
+specific actions when activated (typically through a button press).
+They look like this &lsquo;<samp>&lt;(fake button)&gt;</samp>&rsquo;.  They 
are quickly
+recognizable, yet relatively non-distracting as you scan the text in
+which they are embedded.  The text between the 
&lsquo;<samp>&lt;(</samp>&rsquo; and &lsquo;<samp>)&gt;</samp>&rsquo;
+delimiters is called the <em>button label</em> or <em>button name</em>.
+Spacing between words within a button label is irrelevant to Hyperbole.
+Button labels may wrap across several lines without causing a problem;
+just be sure to select the first line of the button to activate it.
 </p>
-<a name="index-link_002c-pathname-line-and-column"></a>
-<a name="index-line-and-column"></a>
-<a name="index-pathname_002c-line-and-column"></a>
-<a name="index-ibtypes-pathname_002dline_002dand_002dcolumn"></a>
-</dd>
-<dt><code>pathname-line-and-column</code></dt>
-<dd><p>Makes a valid pathname:line-num[:column-num] pattern display the path
-at line-num and optional column-num.  Also works for remote pathnames.
+<p>Explicit buttons may be added to any editable text file; for source
+code files, simply place buttons within comments.  Buttons that you
+use for quick navigation to websites or other things you do often
+should be added to your personal button file.  See <a 
href="#Button-Files">Button Files</a>.
 </p>
-<a name="index-ibtypes-pathname"></a>
-<a name="index-hpath_003aat_002dp"></a>
-<a name="index-hpath_003afind"></a>
-<a name="index-hpath_003asuffixes"></a>
-<a name="index-Tramp"></a>
-<a name="index-Ange_002dftp"></a>
-<a name="index-EFS"></a>
-<a name="index-ftp-1"></a>
-<a name="index-pathname"></a>
-<a name="index-remote-path"></a>
-<a name="index-filename"></a>
-<a name="index-link_002c-pathname"></a>
-</dd>
-<dt><code>pathname</code></dt>
-<dd><p>Makes a valid pathname display the path entry.  Also works for
-delimited and non-delimited remote pathnames, Texinfo <samp></samp> entries,
-and hash-style link references to HTML, Markdown or Emacs outline
-headings.  Emacs Lisp library files (filenames without any directory
-component that end in .el and .elc) are looked up using
-the <code>load-path</code> directory list.
+<a name="index-button_002c-moving"></a>
+<a name="index-moving-buttons"></a>
+<p>Explicit buttons may be freely moved about within the buffer in which
+they are created.  (No present support exists for moving buttons between
+buffers; support the Hyperbole project if you would like to help make
+this happen).  A single button may also appear multiple times within the
+same buffer; simply copy the button label with its delimiters
+to a new location if you need another copy of it.
 </p>
-<p>See the function documentation for <code>hpath:at-p</code> for possible
-delimiters.  See the variable documentation for <code>hpath:suffixes</code> for
-suffixes that are added to or removed from the pathname when searching
-for a valid match.  See the function documentation for <code>hpath:find</code>
-for special file display options.
+<p>For details on how to create, activate, delete or modify explicit
+buttons, see <a href="#Utilizing-Explicit-Buttons">Utilizing Explicit 
Buttons</a>.
 </p>
-<a name="index-ibtypes-org_002dmode"></a>
-<a name="index-browse_002durl_002dbrowser_002dfunction-1"></a>
-<a name="index-org_002dmode"></a>
-<a name="index-Org-mode"></a>
-</dd>
-<dt><code>org-mode</code></dt>
-<dd><p>The Action Key follows any Org mode link at point or cycles through
-views of the outline subtree at point.  In any other context besides
-the end of a line, the Action Key will invoke the Org mode standard
-binding of <kbd>{M-<span class="key">RET</span>}</kbd>, (org-meta-return).  
The Assist Key on
-an Org mode heading, cycles through views of the whole buffer outline
-and on an Org mode link, displays standard Hyperbole help.
+<a name="index-link-button"></a>
+<a name="index-referent"></a>
+<p>Each explicit button is assigned an action type that determines the actions
+it performs.  <em>Link action types</em> connect buttons to particular types
+of <em>referents</em>, the targets of their links.  Link action type names all
+begin with <code>link-</code>.  Link action button referents are displayed when
+such buttons are activated with a press or a click.  See <a 
href="#Action-Types">Action Types</a>,
+for a list of standard action types including link types.
 </p>
-<p>The variable, <code>browse-url-browser-function</code>, customizes the url
-browser that is used for urls.  Valid values of this variable
-include <code>browse-url-default-browser</code>
-and <code>browse-url-generic</code>.
+<a name="index-linking_002c-in_002dplace"></a>
+<a name="index-Hyperbole-data-model"></a>
+<p>Hyperbole does not manage referent data; this is left to the
+applications that generate the data.  This means that Hyperbole
+provides in-place linking and does not require reformatting data to
+integrate it with Hyperbole.
+</p>
+<a name="index-button-data"></a>
+<a name="index-button-attribute"></a>
+<a name="index-file_002c-_002ehypb"></a>
+<p>Hyperbole stores the <em>button data</em> that gives an explicit button its
+behavior, separately from the button label, in a file named
+<samp>.hypb</samp> (<samp>_hypb</samp> under MS Windows) within the same 
directory
+as the file in which the button is created.  Thus, all files in the
+same directory share a common button data file.  Button data is
+comprised of individual <em>button attribute</em> values.  A user never
+sees this data in its raw form but may see a formatted version by
+asking for help on a button.
 </p>
-<a name="index-ibtypes-doc_002did"></a>
-<a name="index-online-library"></a>
-<a name="index-document-identifier"></a>
-</dd>
-<dt><code>doc-id</code></dt>
-<dd><p>Displays an index entry for a site-specific document given its id.
-Ids must be delimited by <code>doc-id-start</code> and <code>doc-id-end</code> 
and
-must match the function given by <code>doc-id-p</code>.  This permits
-creation of catalogued online libraries.  (Note that this implicit
-button type is not installed by default.  You must manually configure
-it and load it from the file, 
<samp><code>${hyperb:dir}</code>/hib-doc-id.el</samp>).
-</p></dd>
-</dl>
 
 <hr>
-<a name="Button-Files"></a>
+<a name="Global-Buttons"></a>
 <div class="header">
 <p>
-Next: <a href="#Action-Types" accesskey="n" rel="next">Action Types</a>, 
Previous: <a href="#Implicit-Buttons" accesskey="p" rel="prev">Implicit 
Buttons</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Implicit-Buttons" accesskey="n" rel="next">Implicit 
Buttons</a>, Previous: <a href="#Explicit-Buttons" accesskey="p" 
rel="prev">Explicit Buttons</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Button-Files-1"></a>
-<h3 class="section">2.4 Button Files</h3>
+<a name="Global-Buttons-1"></a>
+<h3 class="section">3.2 Global Buttons</h3>
 
-<a name="index-button-files"></a>
-<p>It is often convenient to create files filled with buttons as a means
-of navigating distributed information pools or for other purposes.
-These files can also serve as useful roadmaps that guide a user
-through both unfamiliar and highly familiar information spaces.  Files
-that are created specifically for this purpose are
-called <em>Hyperbole button files</em>.
+<a name="index-global-button-1"></a>
+<a name="index-button_002c-global-1"></a>
+<a name="index-button-label-1"></a>
+<a name="index-label_002c-button-1"></a>
+<p>Access to explicit buttons depends upon the information on your screen
+since they are embedded within particular buffers.  Sometimes it is
+useful to activate buttons without regard to the information with which
+you are working.  In such instances, you use <em>global buttons</em>, which
+are buttons that may be activated or otherwise operated upon by typing
+their labels/names when they are prompted for, rather than selecting the
+buttons within a buffer.
 </p>
-<a name="index-hbmap_003afilename"></a>
-<a name="index-button-file_002c-personal"></a>
-<a name="index-button-file_002c-directory"></a>
-<p>The Hyperbole menu system provides quick access to two types of these
-button files: personal and directory-specific, through the ButFile menu.
-(The variable, <code>hbmap:filename</code>, contains the base name of these
-button files.  Its standard value is <samp>HYPB</samp>.)
+<p>If you want a permanent link to a file section that you can follow at
+any time, you can use a global button.  Or what about an Emacs keyboard
+macro that you use frequently?  Create an <code>exec-kbd-macro</code> button
+with an easy to type name and then you can activate it whenever the need
+arises.
 </p>
-<a name="index-dir_002c-_007e_002f_002ehyperb"></a>
-<a name="index-hbmap_003adir_002duser"></a>
-<a name="index-global-button-2"></a>
-<p>A personal button file may serve as a user&rsquo;s own roadmap to frequently
-used resources, like a personal home page.  Selection of the
-ButFile/PersonalFile menu item, <kbd>{C-h h b p}</kbd>, displays this file for
-editing.  The default personal button file is stored within the
-directory given by the <code>hbmap:dir-user</code> variable whose standard
-value is <samp>~/.hyperb</samp>.  The default Hyperbole configuration also
-appends all global buttons to the end of this file, one per line, as
-they are created.  So you can edit or annotate them within the file.
+<a name="index-C_002dh-h-g"></a>
+<a name="index-menu_002c-Gbut"></a>
+<a name="index-menu_002c-Global_002dButton"></a>
+<p>Global buttons are managed with the Hyperbole Gbut/ menu accessed with
+<kbd>{C-h h g}</kbd>.  The Create item, <kbd>{C-h h g c}</kbd>, prompts for a
+global button name, an action type, and the action&rsquo;s associated
+arguments, such as a file to link to.  It then creates the button.  To
+activate the button, use the Act menu item, <kbd>{C-h h g a}</kbd>.  Type
+the button&rsquo;s name and its action will be executed.
 </p>
-<p>A directory-specific button file may exist for each file system
-directory.  Such files are useful for explaining the contents of
-directories and pointing readers to particular highlights within the
-directories.  Selection of the ButFile/DirFile menu item, <kbd>{C-h h
-b d}</kbd>, displays the button file for the current directory; this
-provides an easy means of updating this file when working on a file
-within the same directory.  If you want to view some other
-directory-specific button file, simply use the normal Emacs file
-finding commands.
+<p>Global buttons are actually explicit buttons stored at the end of your
+personal button file, see <a href="#Button-Files">Button Files</a>.  You can 
always go into that
+file and activate, edit or annotate these buttons with comments.
 </p>
-<p>One might suggest that quick menu access be provided for group-specific
-and site-specific button files.  Instead, link buttons to such things
-should be placed at the top of your personal button file.  This provides
-a more flexible means of connecting to such resources.
+<a name="index-bookmarks"></a>
+<p>Emacs has a built-in feature similar to Global Buttons called Bookmarks.
+Bookmarks store places in files or link to URLs, so they are more limited
+than Hyperbole&rsquo;s global buttons and cannot utilize all of 
Hyperbole&rsquo;s
+capabilities for performing actions.  See <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Bookmarks";>Bookmarks</a>
 in <cite>the Emacs
+Manual</cite>, for details on bookmarks.
 </p>
 <hr>
-<a name="Action-Types"></a>
+<a name="Implicit-Buttons"></a>
 <div class="header">
 <p>
-Next: <a href="#Button-Type-Precedence" accesskey="n" rel="next">Button Type 
Precedence</a>, Previous: <a href="#Button-Files" accesskey="p" 
rel="prev">Button Files</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Button-Files" accesskey="n" rel="next">Button Files</a>, 
Previous: <a href="#Global-Buttons" accesskey="p" rel="prev">Global 
Buttons</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Action-Types-1"></a>
-<h3 class="section">2.5 Action Types</h3>
+<a name="Implicit-Buttons-1"></a>
+<h3 class="section">3.3 Implicit Buttons</h3>
 
-<a name="index-action-type"></a>
-<a name="index-argument_002c-use"></a>
-<a name="index-action"></a>
-<a name="index-button-action"></a>
-<p><em>Action types</em> are special functions that specify Hyperbole button
-behaviors.  Each action type may be used by any category of button:
-global, explicit, or implicit.  The arguments needed by an action type
-are prompted for at button creation time or in the case of an implicit
-button, computed when the button is activated.  During button
-activation, the arguments are fed to the action type&rsquo;s body to achieve
-the desired result.  This body is called the button <em>action</em>.
+<a name="index-button_002c-implicit-1"></a>
+<a name="index-implicit-button-1"></a>
+<p><em>Implicit buttons</em> are virtual buttons recognized within the
+natural structure of a document.  For example, a web URL button that
+displays its link or an email address button that starts a mail
+message to the associated address.  Implicit buttons are identified by
+contextual patterns found within documents.  An <em>Implicit button
+type</em> identifies a pattern or state that when matched triggers
+an <em>action</em> associated with the implicit button type.  The action
+is specified by either a Hyperbole action type (see <a 
href="#Action-Types">Action Types</a>)
+or an Emacs Lisp function.  Implicit button types may use the same
+action types that explicit buttons use.  As an example, a pathname
+implicit button type would match to any existing local filename or
+directory name and its action would be to display the associated file
+or directory, typically in another window.
+</p>
+<a name="index-file_002c-hibtypes_002eel"></a>
+<a name="index-context"></a>
+<a name="index-boolean-expressions"></a>
+<a name="index-activating-implicit-button"></a>
+<a name="index-menu-item_002c-Ibut_002fAct"></a>
+<a name="index-C_002dh-h-i-a"></a>
+<p>Unlike explicit buttons, implicit buttons have no individual button data
+other than their textual labels.  You use implicit button types which
+include boolean expressions (predicates) that match to both the label
+and the context required of any button of the type.  Each time a Smart
+Key is pressed at a location, Hyperbole evaluates the predicates from
+the list of implicit button types and the first one that evaluates true
+is selected and its associated action is triggered.  The Ibut/Act menu
+item, <kbd>{C-h h i a}</kbd>, also activates any implicit button found at the
+current point.
 </p>
-<p>Hyperbole handles all of this processing transparently.  As a user, all
-you need know is the set of action types that you can work with when
-creating explicit or global buttons.
+<p>All of this happens transparently and is easy to use once you try it.
+The Hyperbole Smart Keys offer additional extensive context-sensitive
+point-and-click type behavior beyond implicit button types.  See <a 
href="#Smart-Key-Operations">Smart Key Operations</a>.
 </p>
-<a name="index-actypes_002c-list-of"></a>
-<p>The standard action types included with Hyperbole in alphabetical order
-are:
+<a name="index-ibtypes_002c-list-of"></a>
+<a name="index-implicit-button-types"></a>
+<p>Below, standard implicit button types are listed in the order in which
+Hyperbole tries to match to the types when looking for an implicit
+button; <kbd>{C-h h i t <span class="key">RET</span>}</kbd> provides similar 
information.  See
+the Hyperbole file, <samp>hibtypes.el</samp>, for complete examples of
+implicit button types (where they are listed in reverse in increasing
+order of priority).
 </p>
 <dl compact="compact">
-<dd><a name="index-actypes-annot_002dbib"></a>
+<dd>
+<a name="index-ibtypes-completion"></a>
+<a name="index-completion-1"></a>
 </dd>
-<dt><code>annot-bib</code></dt>
-<dd><p>Follows an internal reference KEY within an annotated bibliography,
-delimiters = [ ].
+<dt><code>completion</code></dt>
+<dd><p>Inserts the completion at point (from a completions buffer) into the
+minibuffer or the other window.
 </p>
-<a name="index-actypes-completion"></a>
+<a name="index-ibtypes-hyp_002dsource"></a>
+<a name="index-Hyperbole-report"></a>
 </dd>
-<dt><code>completion</code></dt>
-<dd><p>Inserts a completion at point into the minibuffer or a buffer.
-Unless point is at the end of buffer or if a completion has already been 
-inserted, in which case the completions window is deleted.
+<dt><code>hyp-source</code></dt>
+<dd><p>Turns source location entries following an &lsquo;@loc&gt;&rsquo; line 
in Hyperbole
+reports into buttons that jump to the associated location.  For
+example, <kbd>{C-h h d d C-h h e h o}</kbd> summarizes the properties of the
+explicit buttons in the <samp>DEMO</samp> file and each button in that report
+buffer behaves the same as the corresponding button in the original
+<samp>DEMO</samp> file.
 </p>
-<a name="index-actypes-eval_002delisp"></a>
+<a name="index-ibtypes-hyp_002daddress"></a>
+<a name="index-Hyperbole-mail-list"></a>
 </dd>
-<dt><code>eval-elisp</code></dt>
-<dd><p>Evaluates a Lisp expression LISP-EXPR.
+<dt><code>hyp-address</code></dt>
+<dd><p>Within a mail or Usenet news composer window, makes a Hyperbole
+support/discussion e-mail address insert Hyperbole environment and
+version information.  This is useful when sending mail to a Hyperbole
+discussion mail list.  See also the documentation
+for <code>actypes::hyp-config</code>.  For example, an Action Mouse Key
+click on &lt;address@hidden&gt; in a mail composer window would
+activate this implicit button type.
 </p>
-<a name="index-actypes-exec_002dkbd_002dmacro"></a>
+<a name="index-ibtypes-Info_002dnode"></a>
+<a name="index-Info-node"></a>
 </dd>
-<dt><code>exec-kbd-macro</code></dt>
-<dd><p>Executes a KBD-MACRO REPEAT-COUNT times.  KBD-MACRO may be a string of
-editor command characters, a function symbol or nil to use the last
-defined keyboard macro.  Optional REPEAT-COUNT nil means execute once,
-zero means repeat until error.
+<dt><code>Info-node</code></dt>
+<dd><p>Makes a &quot;(filename)nodename&quot; button display the associated 
Info node.
+Also makes a &quot;(filename)itemname&quot; button display the associated Info
+index item.  Examples are &quot;(hyperbole)Implicit Buttons&quot; and
+&ldquo;(hyperbole)C-c /&rdquo;.
 </p>
-<a name="index-actypes-exec_002dshell_002dcmd"></a>
+<a name="index-ibtypes-www_002durl"></a>
+<a name="index-URL"></a>
+<a name="index-World_002dwide-Web"></a>
+<a name="index-WWW"></a>
+<a name="index-Action-Key_002c-web-browsing"></a>
+<a name="index-Action-Key_002c-web-browsing-1"></a>
+<a name="index-browse_002durl_002dbrowser_002dfunction"></a>
 </dd>
-<dt><code>exec-shell-cmd</code></dt>
-<dd><p>Executes a SHELL-CMD string asynchronously.  Optional non-nil second
-argument INTERNAL-CMD inhibits display of the shell command line
-executed.  Optional non-nil third argument KILL-PREV means kill the last
-output to the shell buffer before executing SHELL-CMD.
+<dt><code>www-url</code></dt>
+<dd><p>When not in an Emacs web browser buffer, follows any non-ftp URL (link) 
at point.
+The variable, <code>browse-url-browser-function</code>, may be used to 
customize
+which URL browser is called.  Terse URLs which lack a protocol prefix,
+like www.gnu.org, are also recognized.
 </p>
-<a name="index-actypes-exec_002dwindow_002dcmd"></a>
+<a name="index-ibtypes-gnus_002dpush_002dbutton"></a>
+<a name="index-GNUS-push_002dbuttons"></a>
+<a name="index-hiding-signatures"></a>
+<a name="index-signatures_002c-hiding"></a>
 </dd>
-<dt><code>exec-window-cmd</code></dt>
-<dd><p>Asynchronously executes an external window-based SHELL-CMD string.
+<dt><code>gnus-push-button</code></dt>
+<dd><p>Activates GNUS-specific article push-buttons, e.g. for hiding
+signatures.  GNUS is a news and mail reader.
 </p>
-<a name="index-actypes-function_002din_002dbuffer"></a>
+<a name="index-ibtypes-texinfo_002dref"></a>
+<a name="index-Texinfo-cross_002dreference"></a>
+<a name="index-cross_002dreference_002c-Texinfo"></a>
 </dd>
-<dt><code>function-in-buffer</code></dt>
-<dd><p>Displays the definition of function NAME found at POS in the current 
buffer.
+<dt><code>texinfo-ref</code></dt>
+<dd><p>Displays Texinfo, Info node or help associated with Texinfo node, menu
+item, @xref, @pxref, @ref, @code, @findex, @var or @vindex at point.
+If point is within the braces of a cross-reference, the associated Info node is
+shown.  If point is to the left of the braces but after the @ symbol and
+the reference is to a node within the current Texinfo file, then the
+Texinfo node is shown.
 </p>
-<a name="index-actypes-hyp_002dconfig"></a>
+<p>For @code, @findex, @var and @vindex references, the associated 
documentation
+string is displayed.
+</p>
+<a name="index-ibtypes-mail_002daddress"></a>
+<a name="index-e_002dmail-address"></a>
+<a name="index-rolo-address"></a>
+<a name="index-address"></a>
 </dd>
-<dt><code>hyp-config</code></dt>
-<dd><p>Inserts Hyperbole configuration and debugging information at the end
-of the current buffer or within optional OUT-BUF.
+<dt><code>mail-address</code></dt>
+<dd><p>If on an e-mail address in a specific buffer type, compose mail to that
+address in another window. Applies to the rolo match buffer, any buffer
+attached to a file in <code>hyrolo-file-list</code>, or any buffer
+with <samp>mail</samp> or <samp>rolo</samp> (case-insensitive) within its name.
 </p>
-<a name="index-actypes-hyp_002drequest"></a>
+<a name="index-ibtypes-patch_002dmsg"></a>
+<a name="index-patch-output"></a>
 </dd>
-<dt><code>hyp-request</code></dt>
-<dd><p>Inserts help for composing a Hyperbole support/discussion message into
-the current buffer or the optional OUT-BUF.
+<dt><code>patch-msg</code></dt>
+<dd><p>Jumps to the source code associated with output from the 
&lsquo;<samp>patch</samp>&rsquo;
+program.  Patch applies diffs to source code.
 </p>
-<a name="index-actypes-hyp_002dsource"></a>
+<a name="index-ibtypes-elisp_002dcompiler_002dmsg"></a>
+<a name="index-byte-compiler-error"></a>
+<a name="index-Emacs-Lisp-compiler-error"></a>
+<a name="index-compiler-error"></a>
 </dd>
-<dt><code>hyp-source</code></dt>
-<dd><p>Displays a buffer or file from a line beginning with
-<code>hbut:source-prefix</code>.
+<dt><code>elisp-compiler-msg</code></dt>
+<dd><p>Jumps to the source code for a definition associated with an Emacs
+Lisp byte-compiler error message.  Works when activated anywhere
+within an error line.
 </p>
-<a name="index-actypes-kbd_002dkey"></a>
+<a name="index-ibtypes-debugger_002dsource"></a>
+<a name="index-gdb"></a>
+<a name="index-dbx"></a>
+<a name="index-xdb"></a>
+<a name="index-stack-frame"></a>
+<a name="index-breakpoint"></a>
+<a name="index-source-line"></a>
 </dd>
-<dt><code>kbd-key</code></dt>
-<dd><p>Executes the function binding for KEY-SEQUENCE, delimited by {}.
-Returns &lsquo;<samp>t</samp>&rsquo; if a KEY-SEQUENCE has a binding, else 
&lsquo;<samp>nil</samp>&rsquo;.
+<dt><code>debugger-source</code></dt>
+<dd><p>Jumps to the source line associated with a debugger stack frame or
+breakpoint line.  This works with gdb, dbx, and xdb.  Such lines are
+recognized in any buffer.
 </p>
-<a name="index-link-action-types"></a>
-<a name="index-actypes-link_002dto_002dbuffer_002dtmp"></a>
+<a name="index-ibtypes-grep_002dmsg"></a>
+<a name="index-grep"></a>
+<a name="index-compiler-error-1"></a>
 </dd>
-<dt><code>link-to-buffer-tmp</code></dt>
-<dd><p>Displays a BUFFER.  This type of link generally can
-only be used within a single editor session.  Use <code>link-to-file</code>
-instead for a permanent link.
+<dt><code>grep-msg</code></dt>
+<dd><p>Jumps to a line associated with grep or compilation error messages.
+Messages are recognized in any buffer.
 </p>
-<a name="index-actypes-link_002dto_002ddirectory"></a>
+<a name="index-ibtypes-klink"></a>
+<a name="index-klink"></a>
+<a name="index-koutline-link"></a>
+<a name="index-kcell-link"></a>
 </dd>
-<dt><code>link-to-directory</code></dt>
-<dd><p>Displays a DIRECTORY in Dired mode.
+<dt><code>klink</code></dt>
+<dd><p>Follows a link delimited by &lt;&gt; to a koutline cell.
+See the documentation for <code>actypes::link-to-kotl</code> for valid link
+specifiers.
 </p>
-<a name="index-actypes-link_002dto_002ddoc"></a>
+<a name="index-ibtypes-man_002dapropos"></a>
+<a name="index-UNIX-manual"></a>
+<a name="index-man-pages"></a>
+<a name="index-man-apropos"></a>
 </dd>
-<dt><code>link-to-doc</code></dt>
-<dd><p>Displays an online version of a document given by DOC-ID.  If the online
-version of a document is not found in <code>doc-id-indices</code>, an error is
-signalled.
+<dt><code>man-apropos</code></dt>
+<dd><p>Makes man apropos entries (from &lsquo;<samp>man -k</samp>&rsquo;) 
display associated man
+pages when selected.
 </p>
-<a name="index-actypes-link_002dto_002debut"></a>
+<a name="index-ibtypes-rfc"></a>
+<a name="index-Internet-RFC"></a>
+<a name="index-Request-For-Comment"></a>
+<a name="index-RFC"></a>
+<a name="index-remote-file"></a>
+<a name="index-ftp"></a>
 </dd>
-<dt><code>link-to-ebut</code></dt>
-<dd><p>Performs an action given by another button, specified by KEY and 
KEY-FILE.
+<dt><code>rfc</code></dt>
+<dd><p>Retrieves and displays an Internet rfc referenced at point.  The
+following formats are recognized: RFC822, rfc-822, and RFC 822.  The
+<code>hpath:rfc</code> variable specifies the location from which to
+retrieve RFCs.  Requires the Emacs builtin Tramp library for ftp file
+retrievals.
 </p>
-<a name="index-actypes-link_002dto_002delisp_002ddoc"></a>
+<a name="index-ibtypes-kbd_002dkey"></a>
+<a name="index-key-sequence"></a>
 </dd>
-<dt><code>link-to-elisp-doc</code></dt>
-<dd><p>Displays the documentation for FUNC-SYMBOL.
+<dt><code>kbd-key</code></dt>
+<dd><p>Executes a key sequence found around point, delimited by curly braces, 
{}, if any.
+Key sequences should be in human readable form, e.g. <kbd>{C-x C-b}</kbd>.  
Formats such
+as {^x^b} will not be recognized.
 </p>
-<a name="index-actypes-link_002dto_002dfile"></a>
+<p>Any key sequence must be a string of one of the following:
+</p><ul>
+<li> a Hyperbole minibuffer menu item key sequence,
+</li><li> a HyControl key sequence,
+</li><li> a M-x extended command,
+</li><li> or a valid key sequence together with its interactive arguments.
+</li></ul>
+
+<a name="index-ibtypes-dir_002dsummary"></a>
+<a name="index-file_002c-MANIFEST"></a>
+<a name="index-file_002c-DIR"></a>
 </dd>
-<dt><code>link-to-file</code></dt>
-<dd><p>Displays file given by PATH scrolled to optional POINT.  With POINT,
-buffer is displayed with POINT at window top.
+<dt><code>dir-summary</code></dt>
+<dd><p>Detects filename buttons in files named &quot;MANIFEST&quot; or 
&quot;DIR&quot;.
+Displays selected files.  Each file name must be at the beginning of the
+line and must be followed by one or more spaces and then another
+non-space, non-parenthesis, non-brace character.
 </p>
-<a name="index-actypes-link_002dto_002dfile_002dline"></a>
+<a name="index-ibtypes-text_002dtoc"></a>
+<a name="index-table-of-contents"></a>
+<a name="index-toc-implicit-button-type"></a>
 </dd>
-<dt><code>link-to-file-line</code></dt>
-<dd><p>Displays a file given by PATH scrolled to LINE-NUM.
+<dt><code>text-toc</code></dt>
+<dd><p>Jumps to the text file section referenced by a table of contents entry
+at point.  The file name of the current buffer must contain
+<samp>README</samp> and there must be a &lsquo;Table of Contents&rsquo; or 
&lsquo;Contents&rsquo;
+label on a line by itself (it may begin with an asterisk), preceding the
+table of contents.  Each toc entry must begin with some whitespace
+followed by one or more asterisk characters.  Each line which begins a
+new file section must start with one or more asterisk characters at the
+very beginning of the line.
 </p>
-<a name="index-actypes-link_002dto_002dInfo_002dindex_002ditem"></a>
+<a name="index-ibtypes-cscope"></a>
+<a name="index-C_002fC_002b_002b-call-trees"></a>
+<a name="index-C_002fC_002b_002b-cross_002dreference"></a>
+<a name="index-Cscope"></a>
 </dd>
-<dt><code>link-to-Info-index-item</code></dt>
-<dd><p>Displays an Info index ITEM cross-reference.
-ITEM must be a string of the form (filename)item-name.  During
-button creation, completion for both filename and item-name is
-available.  Filename may be given without the .info suffix.&quot;
+<dt><code>cscope</code></dt>
+<dd><p>Jumps to a C/C++ source line associated with a Cscope C analyzer output 
line.
+Requires pre-loading of the cscope.el Lisp library available from the Emacs
+Lisp archives and the open source cscope program available from
+http://cscope.sf.net.  Otherwise, does nothing.
+</p>
+<a name="index-ibtypes-etags"></a>
+<a name="index-etags-entry"></a>
+<a name="index-TAGS-file"></a>
+<a name="index-tag"></a>
+</dd>
+<dt><code>etags</code></dt>
+<dd><p>Jumps to the source line associated with an etags file entry in a TAGS 
buffer.
+If on a tag entry line, jumps to the source line for the tag.  If on a
+pathname line or line preceding it, jumps to the associated file.
+</p>
+<a name="index-ibtypes-ctags"></a>
+<a name="index-ctags-entry"></a>
+<a name="index-tags-file"></a>
+</dd>
+<dt><code>ctags</code></dt>
+<dd><p>Jumps to the source line associated with a ctags file entry in any 
buffer.
+Ctags files are used by old editors like vi to lookup identifiers.
+Emacs uses the newer, more flexible Etags format.
+</p>
+<a name="index-ibtypes-id_002dcflow"></a>
+<a name="index-C-call-tree"></a>
+<a name="index-call-tree_002c-C"></a>
+<a name="index-C-flow-graph"></a>
+</dd>
+<dt><code>id-cflow</code></dt>
+<dd><p>Expands or collapses C call trees and jumps to code definitions.
+Requires cross-reference tables built by the external <code>cxref</code>
+program.
+</p>
+<a name="index-ibtypes-rfc_002dtoc"></a>
+<a name="index-Internet-RFC-1"></a>
+<a name="index-Request-For-Comment-1"></a>
+<a name="index-RFC-1"></a>
+<a name="index-table-of-contents-1"></a>
+</dd>
+<dt><code>rfc-toc</code></dt>
+<dd><p>Summarizes contents of an Internet rfc from anywhere within an rfc 
buffer.
+Each line of the summary may be selected to jump to the associated section.
 </p>
-<a name="index-actypes-link_002dto_002dInfo_002dnode"></a>
+<a name="index-ibtypes-markdown_002dinternal_002dlink"></a>
+<a name="index-markdown-link"></a>
 </dd>
-<dt><code>link-to-Info-node</code></dt>
-<dd><p>Displays an Info NODE.  NODE must be a string of the form
-(filename)nodename.  During button creation, completion for both
-filename and nodename is available.  Filename may be given without the
-.info suffix.
+<dt><code>markdown-internal-link</code></dt>
+<dd><p>Displays any in-file Markdown link referent.  Pathnames and urls are
+handled elsewhere.
 </p>
-<a name="index-actypes-link_002dto_002dkcell"></a>
-<a name="index-kcell_003aref_002dto_002did"></a>
+<a name="index-ibtypes-git_002dreference"></a>
+<a name="index-git-reference"></a>
+<a name="index-version-control"></a>
+<a name="index-hibtypes_002dgit_002ddefault_002dproject"></a>
 </dd>
-<dt><code>link-to-kcell</code></dt>
-<dd><p>Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
-top of a window.  See the documentation for <code>(kcell:ref-to-id)</code> for
-valid CELL-REF formats.
+<dt><code>git-reference</code></dt>
+<dd><p>Displays the git entity associated with REFERENCE and optional PROJECT.
+See <samp>DEMO#Git (Local) References</samp> for examples.
 </p>
-<p>If FILE is &lsquo;<samp>nil</samp>&rsquo;, the current buffer is used.  If 
CELL-REF is
-&lsquo;<samp>nil</samp>&rsquo;, the first cell in the view is shown.
+<p>REFERENCE is a string of one of the following forms:
+</p><ul>
+<li> &lt;ref-item&gt;
+</li><li> /?&lt;project&gt;/&lt;ref-item&gt;
+</li><li> /&lt;project&gt;.
+</li></ul>
+
+<p>&lt;ref-item&gt; is one of these:
+</p><dl compact="compact">
+<dt>one of the words: branches, commits, or tags</dt>
+<dd><p>the associated items are listed
+</p></dd>
+<dt>one of the words: branch, commit, or tag followed by a &rsquo;/&rsquo; and 
item id</dt>
+<dd><p>the item is shown
+</p></dd>
+<dt>a commit reference given by a hex number, 55a1f0</dt>
+<dd><p>the commit diff is displayed
+</p></dd>
+<dt>a branch or tag reference given by an alphanumeric name, e.g. hyper20</dt>
+<dd><p>the files in the branch are listed.
+</p></dd>
+</dl>
+
+<a name="index-hibtypes_002dgit_002ddefault_002dproject-1"></a>
+<p>If given, PROJECT overrides any project value in REFERENCE.  If no PROJECT
+value is provided, it defaults to the value of 
<code>hibtypes-git-default-project</code>. 
+</p>
+<a name="index-ibtypes-git_002dcommit_002dreference"></a>
+<a name="index-git-commit-reference"></a>
+<a name="index-version-control-1"></a>
+</dd>
+<dt><code>git-commit-reference</code></dt>
+<dd><p>Displays the diff for a git commit reference, e.g. commit a55e21, 
typically
+produced by git log.
+</p>
+<a name="index-ibtypes-github_002dreference"></a>
+<a name="index-github-reference"></a>
+<a name="index-version-control-2"></a>
+<a name="index-hibtypes_002dgithub_002ddefault_002dproject"></a>
+<a name="index-hibtypes_002dgithub_002ddefault_002duser"></a>
+</dd>
+<dt><code>github-reference</code></dt>
+<dd><p>Displays the Github entity associated with REFERENCE and optional USER 
and PROJECT.
+See <samp>DEMO#Github (Remote) References</samp> for examples.
+</p>
+<p>REFERENCE is a string of one of the following forms:
+</p><ul>
+<li> &lt;ref-item&gt;
+</li><li> &lt;user&gt;/&lt;project&gt;/&lt;ref-item&gt;
+</li><li> &lt;project&gt;/&lt;ref-item&gt;
+</li><li> /&lt;project&gt;.
+</li></ul>
+
+<p>&lt;ref-item&gt; is one of these:
+</p><dl compact="compact">
+<dt>&bull; one of the words: branches, commits, issues, pulls, or tags</dt>
+<dd><p>the associated items are listed
+</p></dd>
+<dt>&bull; one of the words: branch, commit, issue, pull or tag followed by a 
&rsquo;/&rsquo; and item id</dt>
+<dd><p>the item is shown
+</p></dd>
+<dt>&bull; an issue reference given by a positive integer, e.g. <em>92</em> or 
prefaced with <em>GH-</em>, like GH-92</dt>
+<dd><p>the issue is displayed
+</p></dd>
+<dt>&bull; a commit reference given by a hex number, 55a1f0</dt>
+<dd><p>the commit diff is displayed
+</p></dd>
+<dt>&bull; a branch or tag reference given by an alphanumeric name, e.g. 
hyper20</dt>
+<dd><p>the files in the branch are listed.
+</p></dd>
+</dl>
+
+<a name="index-hibtypes_002dgithub_002ddefault_002duser-1"></a>
+<p>USER defaults to the value of <code>hibtypes-github-default-user</code>.
+If given, PROJECT overrides any project value in REFERENCE.  If no
+PROJECT value is provided, it defaults to the value of
+<code>hibtypes-github-default-project</code>.
 </p>
-<a name="index-actypes-link_002dto_002dkotl"></a>
+<a name="index-ibtypes-social_002dreference"></a>
+<a name="index-hashtag"></a>
+<a name="index-username"></a>
+<a name="index-social-media"></a>
+<a name="index-social-reference"></a>
+<a name="index-hibtypes_002dsocial_002ddefault_002dservice"></a>
 </dd>
-<dt><code>link-to-kotl</code></dt>
-<dd><p>Displays at the top of a window the referent pointed to by LINK.
-LINK may be of any of the following forms, with or without delimiters:
+<dt><code>social-reference</code></dt>
+<dd><p>Displays the web page associated with a social media hashtag or
+username reference at point.
+</p>
+<p>Reference format is:
 </p><div class="example">
-<pre class="example">  &lt; pathname [, cell-ref] &gt;
-  &lt; [-!&amp;] pathname &gt;
-  &lt; @ cell-ref &gt;
+<pre 
class="example">[facebook|instagram|address@hidden&lt;hashtag-or-username&gt; or
+[fb|in|address@hidden&lt;hashtag-or-username&gt;
 </pre></div>
 
-<p>See the documentation for <code>(kcell:ref-to-id)</code> for valid cell-ref
-formats.
-</p>
-<a name="index-actypes-link_002dto_002dmail"></a>
-</dd>
-<dt><code>link-to-mail</code></dt>
-<dd><p>Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE.  See
-the documentation for the variable <code>hmail:init-function</code> for
-information on how to specify the mail reader to use.
-</p>
-<a name="index-actypes-link_002dto_002dregexp_002dmatch"></a>
-</dd>
-<dt><code>link-to-regexp-match</code></dt>
-<dd><p>Finds REGEXP&rsquo;s Nth occurrence in SOURCE and displays the location 
at the
-top of the selected window.  SOURCE is a pathname unless optional
-BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
-Returns &lsquo;<samp>t</samp>&rsquo; if found, signals an error if not.
-</p>
-<a name="index-actypes-link_002dto_002drfc"></a>
-</dd>
-<dt><code>link-to-rfc</code></dt>
-<dd><p>Retrieves and displays an Internet rfc given by RFC-NUM.  RFC-NUM may be
-a string or an integer.  Requires a remote file access library, such as
-Tramp, for ftp file retrievals.
+<p>For example, &lsquo;<samp>address@hidden</samp>&rsquo; displays the home 
page for facebook user
+&lsquo;<samp>someuser</samp>&rsquo; and &lsquo;<samp>in#hashtag</samp>&rsquo; 
displays photos with the hashtag
+&lsquo;<samp>hashtag</samp>&rsquo;.  The first part of the label for a button 
of this type
+is the social media service name.  The service name defaults to the
+value of <code>hibtypes-social-default-service</code> (default value of
+&ldquo;twitter&rdquo;) when not given, so #hashtag would be the same as
+twitter#hashtag.
 </p>
-<a name="index-actypes-link_002dto_002dstring_002dmatch"></a>
+<a name="index-ibtypes-debbugs_002dgnu_002dmode"></a>
+<a name="index-bug-tracking"></a>
+<a name="index-issue-tracking"></a>
 </dd>
-<dt><code>link-to-string-match</code></dt>
-<dd><p>Finds STRING&rsquo;s Nth occurrence in SOURCE and displays the location 
at the
-top of the selected window.  SOURCE is a pathname unless optional
-BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
-Returns &lsquo;<samp>t</samp>&rsquo; if found, &lsquo;<samp>nil</samp>&rsquo; 
if not.
+<dt><code>debbugs-gnu-mode</code></dt>
+<dd><p>Debbugs is a client-server issue tracker used by GNU free software
+projects, including Hyperbole, to manage issues and maintain threads
+of discussion around them.  You issues queries to a Debbugs server and
+it returns a listing entry for each matching issue.  When on a GNU
+Debbugs listing entry in <code>debbugs-gnu-mode</code>, an Action Key press
+displays the discussion of the selected issue; an Assist Key press
+pretty prints the status of the issue to a window below the listing
+window.
 </p>
-<a name="index-actypes-link_002dto_002dtexinfo_002dnode"></a>
+<a name="index-ibtypes-debbugs_002dgnu_002dquery"></a>
 </dd>
-<dt><code>link-to-texinfo-node</code></dt>
-<dd><p>Displays the Texinfo node with NODENAME (a string) from the current 
buffer.
+<dt><code>debbugs-gnu-query</code></dt>
+<dd><p>Debbugs queries may be issued by activating this implicit button type.
+It displays the results of a Gnu debbugs query based on the string at
+point and works in most kinds of buffers.  If the query includes a
+single id number, it displays the original message submission for that
+id and allows browsing of the followup discussion.  The following
+buffer text formats are accepted (with point prior to any attribute):
 </p>
-<a name="index-actypes-link_002dto_002dweb_002dsearch"></a>
-<a name="index-link_002c-web-search"></a>
-<a name="index-web-search-link"></a>
-</dd>
-<dt><code>link-to-web-search</code></dt>
-<dd><p>Searches web SERVICE-NAME for SEARCH-TERM.  Uses 
<code>hyperbole-web-search-alist</code>
-to match each service to its search url.  Uses 
<code>hyperbole-web-search-browser-function</code>
-and the <code>browse-url</code> package to display search results.
+<div class="smallexample">
+<pre class="smallexample">bug#id-number, bug# id-number, bug #id-number or bug 
id-number
+bug?attr1=val1&amp;attr2=val2&amp;attr3=val3
+bug#id-number?attr1=val1&amp;attr2=val2&amp;attr3=val3
+</pre></div>
+
+<a name="index-file_002c-hib_002ddebbugs_002eel"></a>
+<p>Note that <em>issue</em> or <em>debbugs</em> may be used as well in place
+of <em>bug</em>.  See the documentation at the top of
+the <samp>hib-debbugs.el</samp> file for detailed query format information.
 </p>
-<a name="index-actypes-man_002dshow"></a>
-<a name="index-sm_002dnotify"></a>
+<a name="index-ibtypes-annot_002dbib"></a>
+<a name="index-bibliography"></a>
+<a name="index-reference"></a>
 </dd>
-<dt><code>man-show</code></dt>
-<dd><p>Displays a man page on TOPIC, which may be of the form
-&lsquo;<samp>&lt;command&gt;(&lt;section&gt;</samp>&rsquo;).  If using the 
Superman manual entry
-package, see the documentation for <code>sm-notify</code> to control where the
-man page is displayed.
+<dt><code>annot-bib</code></dt>
+<dd><p>Displays annotated bibliography entries defined within the same buffer
+as the reference.  References must be delimited by square brackets, must
+begin with a word constituent character, and must not be in buffers
+whose names begin with a &lsquo; &rsquo; or &lsquo;*&rsquo; character.
 </p>
-<a name="index-actypes-rfc_002dtoc"></a>
+
+<a name="index-ibtypes-function_002din_002dbuffer"></a>
+<a name="index-file_002c-func_002dmenu_002eel"></a>
+<a name="index-function-menu"></a>
+<a name="index-func_002dmenu"></a>
 </dd>
-<dt><code>rfc-toc</code></dt>
-<dd><p>Computes and displays a summary of an Internet rfc in BUF-NAME.  Assumes
-point has already been moved to the start of the region to summarize.
-Optional OPOINT is the point to return to in BUF-NAME after displaying
-the summary.
+<dt><code>function-in-buffer</code></dt>
+<dd><p>Returns the function name defined within this buffer that point is
+within or after, else &lsquo;<samp>nil</samp>&rsquo;.  This triggers only when 
the
+func-menu library has been loaded and the current major mode is one
+handled by func-menu.
 </p>
-<a name="index-actypes-text_002dtoc"></a>
-<a name="index-table-of-contents-2"></a>
-<a name="index-toc-action-type"></a>
+<a name="index-link_002c-pathname-line-and-column"></a>
+<a name="index-line-and-column"></a>
+<a name="index-pathname_002c-line-and-column"></a>
+<a name="index-ibtypes-pathname_002dline_002dand_002dcolumn"></a>
 </dd>
-<dt><code>text-toc</code></dt>
-<dd><p>Jumps to the text file SECTION referenced by a table of contents entry
-at point.
+<dt><code>pathname-line-and-column</code></dt>
+<dd><p>Makes a valid pathname:line-num[:column-num] pattern display the path
+at line-num and optional column-num.  Also works for remote pathnames.
 </p>
-<a name="index-actypes-www_002durl"></a>
-<a name="index-URL-1"></a>
-<a name="index-World_002dwide-Web-1"></a>
-<a name="index-WWW-1"></a>
-<a name="index-browse_002durl_002dbrowser_002dfunction-2"></a>
+<a name="index-ibtypes-pathname"></a>
+<a name="index-hpath_003aat_002dp"></a>
+<a name="index-hpath_003afind"></a>
+<a name="index-hpath_003asuffixes"></a>
+<a name="index-Tramp"></a>
+<a name="index-ftp-1"></a>
+<a name="index-pathname"></a>
+<a name="index-remote-path"></a>
+<a name="index-filename"></a>
+<a name="index-link_002c-pathname"></a>
 </dd>
-<dt><code>www-url</code></dt>
-<dd><p>Follows a link given by a URL.  The variable,
-<code>browse-url-browser-function</code>, customizes the url browser
-that is used.  See its documentation string for details.
-</p></dd>
-</dl>
-
-<a name="index-action-1"></a>
-<a name="index-hui_003aebut_002dprompt_002dfor_002daction"></a>
-<p>Action types create a convenient way of specifying button behavior
-without the need to know how to program.  Expert users who are familiar
-with Emacs Lisp, however, may find that they often want to tailor button
-actions in a variety of ways not easily captured within a type system.
-In such cases, <code>hui:ebut-prompt-for-action</code> should be set to
-&lsquo;<samp>t</samp>&rsquo;.  This will cause Hyperbole to prompt for an 
action to override
-the button&rsquo;s action type at each explicit button creation.  For those 
cases
-where the action type is sufficient, a &lsquo;<samp>nil</samp>&rsquo; value 
should be
-entered for the action.  An action may be any Lisp form that Emacs
-Lisp can evaluate.
-</p>
-<hr>
-<a name="Button-Type-Precedence"></a>
-<div class="header">
-<p>
-Next: <a href="#Utilizing-Explicit-Buttons" accesskey="n" rel="next">Utilizing 
Explicit Buttons</a>, Previous: <a href="#Action-Types" accesskey="p" 
rel="prev">Action Types</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Button-Type-Precedence-1"></a>
-<h3 class="section">2.6 Button Type Precedence</h3>
-
-<a name="index-button-precedence"></a>
-<a name="index-button-label-overlap"></a>
-<p>Explicit buttons always take precedence over implicit buttons.  Thus, if
-a button selection is made which falls within both an explicit and
-implicit button, only the explicit button will be selected.  Explicit
-button labels are not allowed to overlap; Hyperbole&rsquo;s behavior in such
-cases is undefined.
-</p>
-<a name="index-ibtype_002c-evaluation-order"></a>
-<p>If there is no explicit button at point during a selection request,
-then each implicit button type predicate is tested in turn until one
-returns non-nil or all are exhausted.  Since two implicit button types
-may have overlapping <em>domains</em>, those contexts in which their
-predicates are true, only the first matching type is used.  The type
-predicates are tested in <em>reverse</em> order of definition, i.e.
-most recently entered types are tested first, so that personal types
-defined after standard system types take precedence.  It is important
-to keep this order in mind when defining new implicit button types.
-By making match predicates as specific as possible, one can minimize
-any overlapping implicit button domains.
+<dt><code>pathname</code></dt>
+<dd><p>Makes a valid pathname display the path entry.  Also works for
+delimited and non-delimited remote pathnames, Texinfo <samp></samp> entries,
+and hash-style link references to HTML, Markdown or Emacs outline
+headings.  Emacs Lisp library files (filenames without any directory
+component that end in .el and .elc) are looked up using
+the <code>load-path</code> directory list.
 </p>
-<a name="index-type-redefinition"></a>
-<p>Once a type name is defined, its precedence relative to other types
-remains the same even if its body is redefined, as long as its name is
-not changed.  This allows incremental modifications to types without
-any worry of altering their precedences.  See <a 
href="#Creating-Types">Creating Types</a>, for
-information on how to develop or modify types.
+<p>See the function documentation for <code>hpath:at-p</code> for possible
+delimiters.  See the variable documentation for <code>hpath:suffixes</code> for
+suffixes that are added to or removed from the pathname when searching
+for a valid match.  See the function documentation for <code>hpath:find</code>
+for special file display options.
 </p>
-<hr>
-<a name="Utilizing-Explicit-Buttons"></a>
-<div class="header">
-<p>
-Previous: <a href="#Button-Type-Precedence" accesskey="p" rel="prev">Button 
Type Precedence</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Utilizing-Explicit-Buttons-1"></a>
-<h3 class="section">2.7 Utilizing Explicit Buttons</h3>
-
-<p>Explicit buttons are a fundamental building block for creating personal
-or organizational hypertext networks with Hyperbole.  This section
-summarizes the user-level operations available for managing these
-buttons.
+<a name="index-ibtypes-org_002dmode"></a>
+<a name="index-browse_002durl_002dbrowser_002dfunction-1"></a>
+<a name="index-org_002dmode"></a>
+<a name="index-Org-mode"></a>
+</dd>
+<dt><code>org-mode</code></dt>
+<dd><p>The Action Key follows any Org mode link at point or cycles through
+views of the outline subtree at point.  In any other context besides
+the end of a line, the Action Key will invoke the Org mode standard
+binding of <kbd>{M-<span class="key">RET</span>}</kbd>, (org-meta-return).  
The Assist Key on
+an Org mode heading cycles through views of the whole buffer outline
+and on an Org mode link, displays standard Hyperbole help.
 </p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Creation" 
accesskey="1">Creation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Renaming" 
accesskey="2">Renaming</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Deletion" 
accesskey="3">Deletion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Modification" 
accesskey="4">Modification</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Location" 
accesskey="5">Location</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Buttons-in-Mail" 
accesskey="6">Buttons in Mail</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Buttons-in-News" 
accesskey="7">Buttons in News</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-</table>
-
-<hr>
-<a name="Creation"></a>
-<div class="header">
-<p>
-Next: <a href="#Renaming" accesskey="n" rel="next">Renaming</a>, Previous: <a 
href="#Utilizing-Explicit-Buttons" accesskey="p" rel="prev">Utilizing Explicit 
Buttons</a>, Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" 
rel="up">Utilizing Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
-</div>
-<a name="Creation-1"></a>
-<h4 class="subsection">2.7.1 Creation</h4>
-
-<p>Creating explicit buttons is fun and easy.  You can always try them
-out immediately after creating them or can utilize the Assist Key to
-verify what buttons do.  There are two ways to create them: by
-dragging between windows with the Action Mouse Key or by using the
-Hyperbole menus.
+<p>The variable, <code>browse-url-browser-function</code>, customizes the url
+browser that is used for urls.  Valid values of this variable
+include <code>browse-url-default-browser</code> and 
<code>browse-url-generic</code>.
 </p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#By-Dragging" 
accesskey="1">By Dragging</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">Creation Via Action Key Drags
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#By-Menu" accesskey="2">By 
Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Creation Via 
Menus
-</td></tr>
-</table>
+<a name="index-ibtypes-doc_002did"></a>
+<a name="index-online-library"></a>
+<a name="index-document-identifier"></a>
+</dd>
+<dt><code>doc-id</code></dt>
+<dd><p>Displays a document from a local document library given its id.  Ids 
must be
+delimited by <code>doc-id-start</code> and <code>doc-id-end</code> and must 
match the
+function given by <code>doc-id-p</code>.  (Note that this implicit button type 
is
+not installed by default.  You must manually configure it and load it from
+the file, <samp><code>${hyperb:dir}</code>/hib-doc-id.el</samp>).  See the 
commentary
+at the top of that file for more information.
+</p></dd>
+</dl>
 
 <hr>
-<a name="By-Dragging"></a>
+<a name="Button-Files"></a>
 <div class="header">
 <p>
-Next: <a href="#By-Menu" accesskey="n" rel="next">By Menu</a>, Previous: <a 
href="#Creation" accesskey="p" rel="prev">Creation</a>, Up: <a href="#Creation" 
accesskey="u" rel="up">Creation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Action-Types" accesskey="n" rel="next">Action Types</a>, 
Previous: <a href="#Implicit-Buttons" accesskey="p" rel="prev">Implicit 
Buttons</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Creation-Via-Action-Key-Drags"></a>
-<h4 class="subsubsection">2.7.1.1 Creation Via Action Key Drags</h4>
+<a name="Button-Files-1"></a>
+<h3 class="section">3.4 Button Files</h3>
 
-<a name="index-explicit-button_002c-creation"></a>
-<a name="index-button_002c-creation"></a>
-<a name="index-link_002c-creation"></a>
-<a name="index-drag"></a>
-<a name="index-Action-Key-drag"></a>
-<a name="index-creating-a-link"></a>
-<a name="index-mouse-drag_002c-link-creation"></a>
-<a name="index-direct-link-creation"></a>
-<p>The most efficient way to create an explicit link button interactively
-is to use the Action Mouse Key to drag from a button source window to
-a window showing its link referent.  More specifically, you should
-split your current Emacs frame into two windows: one which contains
-the point at which you want a button to be inserted and another which
-shows the point to which you want to link.  Depress the Action Mouse
-Key at the source point for the button (anywhere but on a paired
-delimiter such as double quotes or parentheses).  Then drag to the
-other window and release the Action Mouse Key at the start point of
-the link referent.  The process becomes quite simple with a little
-practice. (See <a href="#By-Menu">Creation Via Menus</a>, for a more detailed
-explanation of the explicit button creation process).
+<a name="index-button-files"></a>
+<p>It is often convenient to create files filled with buttons as a means
+of navigating distributed information pools or for other purposes.
+These files can also serve as useful roadmaps that guide a user
+through both unfamiliar and highly familiar information spaces.  Files
+that are created specifically for this purpose are
+called <em>Hyperbole button files</em>.
 </p>
-<p>If a region was selected prior to the start of the drag, it is used as
-the button label, otherwise, you are prompted for the label.  Then
-Hyperbole uses the link referent context to determine the type of link
-to make.  If there are a few different types of links which are
-applicable from the context, you will be prompted with a list of the
-types.  Simply use the Action Key or the first letter of the link type
-to select one of the type names and to finish the link creation.
-Hyperbole will then insert explicit button delimiters around the
-button label and will display a message in the minibuffer indicating
-the button label, its action/link type, and any arguments, notably the
-thing to which it links.
+<a name="index-hbmap_003afilename"></a>
+<a name="index-button-file_002c-personal"></a>
+<a name="index-button-file_002c-directory"></a>
+<p>The Hyperbole menu system provides quick access to two types of these
+button files: personal and directory-specific, through the ButFile menu.
+(The variable, <code>hbmap:filename</code>, contains the base name of these
+button files.  Its standard value is <samp>HYPB</samp>.)
 </p>
-<p>The following table shows the type of link that will be created based
-upon the referent context in which the Action Key is released.
+<a name="index-dir_002c-_007e_002f_002ehyperb"></a>
+<a name="index-hbmap_003adir_002duser"></a>
+<a name="index-global-button-2"></a>
+<p>A personal button file may serve as a user&rsquo;s own roadmap to frequently
+used resources, like a personal home page.  Selection of the
+ButFile/PersonalFile menu item, <kbd>{C-h h b p}</kbd>, displays this file for
+editing.  The default personal button file is stored within the
+directory given by the <code>hbmap:dir-user</code> variable whose standard
+value is <samp>~/.hyperb</samp>.  The default Hyperbole configuration also
+appends all global buttons to the end of this file, one per line, as
+they are created.  So you can edit or annotate them within the file.
 </p>
-<div class="format">
-<div class="example">
-<pre class="example">Referent Context         Link Type
-----------------------------------------------------
-Explicit Button          link-to-ebut
-Info Index Item          link-to-Info-index-item
-Info Node                link-to-Info-node
-Mail Reader Message      link-to-mail
-Directory Name           link-to-directory
-File Name                link-to-file
-Koutline Cell            link-to-kcell
-Outline Heading          link-to-string-match
-Buffer attached to File  link-to-file
-Buffer without File      link-to-buffer-tmp
-</pre></div>
-</div>
-
-<a name="index-M_002do"></a>
-<a name="index-C_002du-M_002do"></a>
-<a name="index-C_002dx-o"></a>
-<a name="index-hkey_002doperate"></a>
-<a name="index-Action-Key-drag-emulation"></a>
-<a name="index-keyboard-drag-emulation"></a>
-<p>If you run Emacs under a window system and there is no prior key
-binding on <kbd>{M-o}</kbd> when you load Hyperbole, then you can emulate
-an Action Key drag from the keyboard by typing <kbd>{M-o}</kbd>, the
-<code>hkey-operate</code> command, at the button source location, moving
-to the link destination, e.g. with <kbd>{C-x o}</kbd>, and then typing
-<kbd>{M-o}</kbd> again.  This simulates a depress and then release of the
-Action Key.  <kbd>{C-u M-o}</kbd> emulates drags of the Assist Key.
-This will not work when Hyperbole is run from a dumb terminal Emacs
-session since drag actions are not supported without a window system.
+<p>A directory-specific button file may exist for each file system
+directory.  Such files are useful for explaining the contents of
+directories and pointing readers to particular highlights within the
+directories.  Selection of the ButFile/DirFile menu item, <kbd>{C-h h
+b d}</kbd>, displays the button file for the current directory; this
+provides an easy means of updating this file when working on a file
+within the same directory.  If you want to view some other
+directory-specific button file, simply use the normal Emacs file
+finding commands.
+</p>
+<p>If you want group and site-specific button files, simply place links to such
+files at the top of your personal button file and do so for your colleagues.
+This provides a flexible means of connecting to such resources.
 </p>
 <hr>
-<a name="By-Menu"></a>
+<a name="Action-Types"></a>
 <div class="header">
 <p>
-Previous: <a href="#By-Dragging" accesskey="p" rel="prev">By Dragging</a>, Up: 
<a href="#Creation" accesskey="u" rel="up">Creation</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Button-Type-Precedence" accesskey="n" rel="next">Button Type 
Precedence</a>, Previous: <a href="#Button-Files" accesskey="p" 
rel="prev">Button Files</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Creation-Via-Menus"></a>
-<h4 class="subsubsection">2.7.1.2 Creation Via Menus</h4>
+<a name="Action-Types-1"></a>
+<h3 class="section">3.5 Action Types</h3>
 
-<p>You may instead use the Hyperbole menus to create explicit buttons.
-First, mark a short region of text in any fashion allowed by Emacs
-and then select the Hyperbole menu item sequence, Ebut/Create.  You will
-be prompted for the button&rsquo;s label with the marked region as the
-default.  If you accept the default and enter the rest of the
-information you are prompted for, the button will be created within the
-current buffer and Hyperbole will surround the marked region with
-explicit button delimiters to indicate success.
+<a name="index-action-type"></a>
+<a name="index-argument_002c-use"></a>
+<a name="index-action"></a>
+<a name="index-button-action"></a>
+<p><em>Action types</em> are special functions that specify Hyperbole button
+behaviors.  Each action type may be used by any category of button:
+global, explicit, or implicit.  The arguments needed by an action type
+are prompted for at button creation time or in the case of an implicit
+button, computed when the button is activated.  During button
+activation, the arguments are fed to the action type&rsquo;s body to achieve
+the desired result.  This body is called the button <em>action</em>.
 </p>
-<p>If you do not mark a region before invoking the button create command,
-you will be prompted for both a label and a target buffer for the button
-and the delimited label text will be inserted into the target buffer
-after a successful button creation.
+<p>Hyperbole handles all of this processing transparently.  As a user, all
+you need know is the set of action types that you can work with when
+creating explicit or global buttons.
 </p>
-<p>After Hyperbole has the button label and its target buffer, it will
-prompt you for an action type for the button.  Use the <kbd>{?}</kbd>
-completion list key to see the available types.  The type selected
-determines any following values for which you are prompted.
+<a name="index-actypes_002c-list-of"></a>
+<p>The standard action types included with Hyperbole in alphabetical order
+are:
 </p>
-<a name="index-button-instance"></a>
-<a name="index-instance-number"></a>
-<p>If a previous button with the same label exists in the same buffer,
-Hyperbole will add an <em>instance number</em> to the label when it adds
-the delimiters so that the name is unique.  Thus, you don&rsquo;t have to
-worry about accidental button name conflicts.  If you want the same
-button to appear in multiple places within the buffer, just enter the
-label again and delimit it yourself or copy and paste the button with
-its delimiters.  Hyperbole will interpret all occurrences of the same
-delimited label within a buffer as the same button.
+<dl compact="compact">
+<dd><a name="index-actypes-annot_002dbib"></a>
+</dd>
+<dt><code>annot-bib</code></dt>
+<dd><p>Follows an internal reference KEY within an annotated bibliography,
+delimiters = [ ].
 </p>
-<a name="index-link_002c-creation-1"></a>
-<p>If you create link buttons using the Hyperbole menus, the best
-technique is to place on screen both the source buffer for the button
-and the buffer to which it will link.  Mark the region of text to use
-as your button label, invoke the button create command from the menu,
-choose an action type which begins with <code>link-to-</code> and then use
-the direct selection techniques mentioned in <a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a>, to 
select the link referent.
+<a name="index-actypes-completion"></a>
+</dd>
+<dt><code>completion</code></dt>
+<dd><p>Inserts a completion at point into the minibuffer or a buffer.
+Unless point is at the end of buffer or if a completion has already been 
+inserted, in which case the completions window is deleted.
+</p>
+<a name="index-actypes-eval_002delisp"></a>
+</dd>
+<dt><code>eval-elisp</code></dt>
+<dd><p>Evaluates a Lisp expression LISP-EXPR.
+</p>
+<a name="index-actypes-exec_002dkbd_002dmacro"></a>
+</dd>
+<dt><code>exec-kbd-macro</code></dt>
+<dd><p>Executes a KBD-MACRO REPEAT-COUNT times.  KBD-MACRO may be a string of
+editor command characters, a function symbol or nil to use the last
+defined keyboard macro.  Optional REPEAT-COUNT nil means execute once,
+zero means repeat until error.
+</p>
+<a name="index-actypes-exec_002dshell_002dcmd"></a>
+</dd>
+<dt><code>exec-shell-cmd</code></dt>
+<dd><p>Executes a SHELL-CMD string asynchronously.  Optional non-nil second
+argument INTERNAL-CMD inhibits display of the shell command line
+executed.  Optional non-nil third argument KILL-PREV means kill the last
+output to the shell buffer before executing SHELL-CMD.
+</p>
+<a name="index-actypes-exec_002dwindow_002dcmd"></a>
+</dd>
+<dt><code>exec-window-cmd</code></dt>
+<dd><p>Asynchronously executes an external window-based SHELL-CMD string.
+</p>
+<a name="index-actypes-function_002din_002dbuffer"></a>
+</dd>
+<dt><code>function-in-buffer</code></dt>
+<dd><p>Displays the definition of function NAME found at POS in the current 
buffer.
+</p>
+<a name="index-actypes-hyp_002dconfig"></a>
+</dd>
+<dt><code>hyp-config</code></dt>
+<dd><p>Inserts Hyperbole configuration and debugging information at the end
+of the current buffer or within optional OUT-BUF.
+</p>
+<a name="index-actypes-hyp_002drequest"></a>
+</dd>
+<dt><code>hyp-request</code></dt>
+<dd><p>Inserts help for composing a Hyperbole support/discussion message into
+the current buffer or the optional OUT-BUF.
+</p>
+<a name="index-actypes-hyp_002dsource"></a>
+</dd>
+<dt><code>hyp-source</code></dt>
+<dd><p>Displays a buffer or file from a line beginning with
+<code>hbut:source-prefix</code>.
 </p>
-
-<hr>
-<a name="Renaming"></a>
-<div class="header">
-<p>
-Next: <a href="#Deletion" accesskey="n" rel="next">Deletion</a>, Previous: <a 
href="#Creation" accesskey="p" rel="prev">Creation</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Renaming-1"></a>
-<h4 class="subsection">2.7.2 Renaming</h4>
-
-<a name="index-explicit-button_002c-renaming"></a>
-<a name="index-button_002c-renaming"></a>
-<p>Once an explicit button has been created, its label text must be
-treated specially.  Any inter-word spacing within the label may be
-freely changed, as may happen when a paragraph is refilled, but a
-special command must be invoked to rename it.
+<a name="index-actypes-kbd_002dkey"></a>
+</dd>
+<dt><code>kbd-key</code></dt>
+<dd><p>Executes the function binding for KEY-SEQUENCE, delimited by {}.
+Returns &lsquo;<samp>t</samp>&rsquo; if a KEY-SEQUENCE has a binding, else 
&lsquo;<samp>nil</samp>&rsquo;.
 </p>
-<p>The rename command operates in two different ways.  If point is within
-a button label when it is invoked, it will tell you to edit the button
-label and then to invoke the rename command again after the edit.  The
-second invocation will actually rename the button.  If instead the
-command is originally invoked outside of any explicit button, it will
-prompt for the button label to replace and the label to replace it
-with and then will perform the renaming.  All occurrences of the same
-button in the buffer will be renamed.
+<a name="index-link-action-types"></a>
+<a name="index-actypes-link_002dto_002dbuffer_002dtmp"></a>
+</dd>
+<dt><code>link-to-buffer-tmp</code></dt>
+<dd><p>Displays a BUFFER.  This type of link generally can
+only be used within a single editor session.  Use <code>link-to-file</code>
+instead for a permanent link.
 </p>
-<a name="index-file_002c-_002eemacs"></a>
-<a name="index-file_002c-hyperbole_002eel"></a>
-<a name="index-C_002dc-C_002dr"></a>
-<a name="index-hui_003aebut_002drename"></a>
-<p>The rename command may be invoked from the Hyperbole menu via
-Ebut/Rename.  A faster method is to use a key bound to the
-<code>hui:ebut-rename</code> command.  Hyperbole typically binds this to
-<kbd>{C-c C-r}</kbd>.  <kbd>{C-h w hui:ebut-rename <span 
class="key">RET</span>}</kbd> will show
-what if any key runs it.  If no key binding has been established or if
-you prefer one of your own, simply bind it within your <samp>~/.emacs</samp>
-file: <code>(global-set-key &quot;\C-c\C-r&quot; 'hui:ebut-rename)</code>.
+<a name="index-actypes-link_002dto_002ddirectory"></a>
+</dd>
+<dt><code>link-to-directory</code></dt>
+<dd><p>Displays a DIRECTORY in Dired mode.
 </p>
-
-<hr>
-<a name="Deletion"></a>
-<div class="header">
-<p>
-Next: <a href="#Modification" accesskey="n" rel="next">Modification</a>, 
Previous: <a href="#Renaming" accesskey="p" rel="prev">Renaming</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Deletion-1"></a>
-<h4 class="subsection">2.7.3 Deletion</h4>
-
-<a name="index-explicit-button_002c-deleting"></a>
-<a name="index-button_002c-deleting"></a>
-<p>Ebut/Delete works similarly to the Rename command but deletes the
-selected button.  The button&rsquo;s delimiters are removed to confirm the
-deletion.  If the delete command is invoked with a prefix argument, then
-both the button label and the delimiters are removed as confirmation.
+<a name="index-actypes-link_002dto_002ddoc"></a>
+</dd>
+<dt><code>link-to-doc</code></dt>
+<dd><p>Displays an online version of a document given by DOC-ID.  If the online
+version of a document is not found in <code>doc-id-indices</code>, an error is
+signalled.
 </p>
-<a name="index-hui_003aebut_002ddelete_002dconfirm_002dp"></a>
-<p>Presently there is no way to recover a deleted button; it must
-be recreated.  Therefore, the <code>hui:ebut-delete-confirm-p</code> variable
-is true by default, causing Hyperbole to require confirmation before
-interactively deleting explicit buttons.  Set it to 
&lsquo;<samp>nil</samp>&rsquo; if you
-prefer no confirmation.
+<a name="index-actypes-link_002dto_002debut"></a>
+</dd>
+<dt><code>link-to-ebut</code></dt>
+<dd><p>Performs an action given by another explicit button, specified by KEY 
and KEY-FILE.
 </p>
-<hr>
-<a name="Modification"></a>
-<div class="header">
-<p>
-Next: <a href="#Location" accesskey="n" rel="next">Location</a>, Previous: <a 
href="#Deletion" accesskey="p" rel="prev">Deletion</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Modification-1"></a>
-<h4 class="subsection">2.7.4 Modification</h4>
-
-<a name="index-explicit-button_002c-modifying"></a>
-<a name="index-button_002c-modifying"></a>
-<a name="index-Smart-Mouse-Key-drag"></a>
-<a name="index-button_002c-attributes"></a>
-<p>Ebut/Modify prompts you with each of the elements from the button&rsquo;s
-attributes list and allows you to modify each in turn.  Ebut/Edit does
-the exact same thing and is there for people who prefer that term.
+<a name="index-actypes-link_002dto_002delisp_002ddoc"></a>
+</dd>
+<dt><code>link-to-elisp-doc</code></dt>
+<dd><p>Displays the documentation for FUNC-SYMBOL.
 </p>
-<p>There is a quicker way to modify explicit link buttons, however.  Simply
-drag with the Action Mouse Key from within the button label to a link
-destination in a different window, just as you would when creating a new
-button with a mouse drag.  Remember that drags may also be emulated from
-the keyboard.  See <a href="#Creation">Creation</a>.
+<a name="index-actypes-link_002dto_002dfile"></a>
+</dd>
+<dt><code>link-to-file</code></dt>
+<dd><p>Displays a file given by PATH scrolled to optional POINT.  If POINT is 
given,
+the buffer is displayed with POINT at the top of the window.
 </p>
-<hr>
-<a name="Location"></a>
-<div class="header">
-<p>
-Next: <a href="#Buttons-in-Mail" accesskey="n" rel="next">Buttons in Mail</a>, 
Previous: <a href="#Modification" accesskey="p" rel="prev">Modification</a>, 
Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing 
Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Location-1"></a>
-<h4 class="subsection">2.7.5 Location</h4>
-
-<a name="index-explicit-button_002c-summarizing"></a>
-<a name="index-button_002c-summarizing"></a>
-<a name="index-button_002c-help"></a>
-<p>The Ebut/Help menu may be used to summarize either a single explicit
-button or all such buttons within a buffer.  The buttons summarized may
-then be activated directly from the summary.
+<a name="index-actypes-link_002dto_002dfile_002dline"></a>
+</dd>
+<dt><code>link-to-file-line</code></dt>
+<dd><p>Displays a file given by PATH scrolled to LINE-NUM.
 </p>
-<p>Ebut/Help/BufferButs summarizes the explicit buttons in the order in
-which they appear in the buffer.  Ebut/Help/CurrentBut summarizes only
-the button at point.  Ebut/Help/OrderedButs summarizes the buttons in
-alphabetical order.  All of these summary commands eliminate duplicate
-occurrences of buttons from their help displays.
+<a name="index-actypes-link_002dto_002dInfo_002dindex_002ditem"></a>
+</dd>
+<dt><code>link-to-Info-index-item</code></dt>
+<dd><p>Displays an Info index ITEM cross-reference.
+ITEM must be a string of the form (filename)item-name.  During
+button creation, completion for both filename and item-name is
+available.  Filename may be given without the .info suffix.&quot;
 </p>
-<a name="index-explicit-button_002c-searching"></a>
-<a name="index-button_002c-searching"></a>
-<p>Ebut/Search prompts for a search pattern and searches across all the
-locations in which you have previously created explicit buttons.  It
-asks you whether to match to any part of a button label or to whole
-labels only.  It then displays a list of button matches with a single
-line of surrounding context from their sources.  Any button in the match
-list may be activated as usual.  An Action Key press on the surrounding
-context jumps to the associated source line.  A press on the filename
-preceding the matches jumps to the file without selecting a particular
-line.
+<a name="index-actypes-link_002dto_002dInfo_002dnode"></a>
+</dd>
+<dt><code>link-to-Info-node</code></dt>
+<dd><p>Displays an Info NODE.  NODE must be a string of the form
+(filename)nodename.  During button creation, completion for both
+filename and nodename is available.  Filename may be given without the
+.info suffix.
 </p>
-<p>There are presently no user-level facilities for globally locating
-buttons created by others or for searching on particular button
-attributes.
+<a name="index-actypes-link_002dto_002dkcell"></a>
+<a name="index-kcell_003aref_002dto_002did"></a>
+</dd>
+<dt><code>link-to-kcell</code></dt>
+<dd><p>Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
+top of a window.  See the documentation for <code>(kcell:ref-to-id)</code> for
+valid CELL-REF formats.
 </p>
-<hr>
-<a name="Buttons-in-Mail"></a>
-<div class="header">
-<p>
-Next: <a href="#Buttons-in-News" accesskey="n" rel="next">Buttons in News</a>, 
Previous: <a href="#Location" accesskey="p" rel="prev">Location</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Buttons-in-Mail-1"></a>
-<h4 class="subsection">2.7.6 Buttons in Mail</h4>
-
-<a name="index-C_002dx-m"></a>
-<a name="index-mail"></a>
-<a name="index-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts"></a>
-<p>Hyperbole supports embedding buttons within electronic mail messages
-composed in Emacs or InfoDock.  An enhanced mail reader may then be used
-to activate the buttons within messages just like any other buttons.
-Because this involves complex changes to mail support functions, this
-feature is disabled by default.  Use the Cust/Msg-Toggle-Ebuts
-minibuffer menu item to enable it.
+<p>If FILE is &lsquo;<samp>nil</samp>&rsquo;, the current buffer is used.  If 
CELL-REF is
+&lsquo;<samp>nil</samp>&rsquo;, the first cell in the view is shown.
 </p>
-<a name="index-button_002c-mailing"></a>
-<a name="index-button_002c-posting"></a>
-<a name="index-mailing-buttons"></a>
-<a name="index-posting-buttons"></a>
-<a name="index-mail-reader"></a>
-<a name="index-mailer-initialization"></a>
-<a name="index-Rmail"></a>
-<a name="index-VM"></a>
-<a name="index-MH_002de"></a>
-<a name="index-Gnus"></a>
-<a name="index-USENET"></a>
-<a name="index-news"></a>
-<a name="index-file_002c-hmail_002eel"></a>
-<p>Hyperbole automatically supports the following mail readers: Rmail
-(see <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Rmail";>Reading
 Mail with Rmail</a> in <cite>the GNU Emacs Manual</cite>), VM
-(see <a href="vm.html#Introduction">Introduction</a> in <cite>the VM 
Manual</cite>) and MH-e.  Button inclusion
-and activation within USENET news articles is also supported in the
-same fashion via the Gnus news reader if available at your site
-(see <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/gnus.html#Top";>The 
Gnus Newsreader</a> in <cite>the Gnus Manual</cite>).
-(The <samp>hmail.el</samp> file defines a generalized interface that can be
-used to hook in other mail or news readers if the necessary interface
-functions are written.)
+<a name="index-actypes-link_002dto_002dkotl"></a>
+</dd>
+<dt><code>link-to-kotl</code></dt>
+<dd><p>Displays at the top of a window the referent pointed to by LINK.
+LINK may be of any of the following forms, with or without delimiters:
+</p><div class="example">
+<pre class="example">  &lt; pathname [, cell-ref] &gt;
+  &lt; [-!&amp;] pathname &gt;
+  &lt; @ cell-ref &gt;
+</pre></div>
+
+<p>See the documentation for <code>(kcell:ref-to-id)</code> for valid cell-ref
+formats.
 </p>
-<a name="index-mail_002dyank_002doriginal"></a>
-<a name="index-C_002dc-C_002dy"></a>
-<a name="index-mail-inclusion"></a>
-<p>All explicit buttons to be mailed must be created within the outgoing
-message buffer. There is no present support for including text from
-other buffers or files which contain explicit buttons, except for the
-ability to yank the contents of a message being replied to, together
-with all of its buttons, via the <code>(mail-yank-original)</code> command
-bound to <kbd>{C-c C-y}</kbd>.  From a user&rsquo;s perspective, buttons are
-created in precisely the same way as in any other buffer.  They also
-appear just like any other buttons to both the message sender and the
-reader who uses the Hyperbole enhanced readers.  Button operation may be
-tested any time before a message is sent.  A person who does not use
-Hyperbole enhanced mail readers can still send messages with embedded
-buttons since mail composing is independent of any mail reader
-choice.
+<a name="index-actypes-link_002dto_002dmail"></a>
+</dd>
+<dt><code>link-to-mail</code></dt>
+<dd><p>Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE.  See
+the documentation for the variable <code>hmail:init-function</code> for
+information on how to specify the mail reader to use.
 </p>
-<p>Hyperbole buttons embedded within received mail messages behave as do
-any other buttons.  The mail does not contain any of the action type
-definitions used by the buttons, so the receiver must have these or
-she will receive an error when she activates the buttons.  Buttons
-which appear in message <em>Subject</em> lines are copied to summary
-buffers whenever such summaries are generated.  Thus, they may be
-activated from either the message or the summary buffers.
+<a name="index-actypes-link_002dto_002dregexp_002dmatch"></a>
+</dd>
+<dt><code>link-to-regexp-match</code></dt>
+<dd><p>Finds REGEXP&rsquo;s Nth occurrence in SOURCE and displays the location 
at the
+top of the selected window.  SOURCE is a pathname unless optional
+BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
+Returns &lsquo;<samp>t</samp>&rsquo; if found, signals an error if not.
 </p>
-<p>Nothing bad will happen if a mail message with explicit buttons is sent
-to a non-Hyperbole user.  The user will simply see the text
-of the message followed by a series of lines of button data at its end.
-Hyperbole mail users never see this data in its raw form.
+<a name="index-actypes-link_002dto_002drfc"></a>
+</dd>
+<dt><code>link-to-rfc</code></dt>
+<dd><p>Retrieves and displays an Internet rfc given by RFC-NUM.  RFC-NUM may be
+a string or an integer.
 </p>
-<a name="index-smail_003acomment"></a>
-<a name="index-mail-comment"></a>
-<a name="index-Hyperbole-mail-comment"></a>
-<p>In order to alert readers of your mail messages that you can handle
-Hyperbole mail buttons, you can set the variable, <code>smail:comment</code>,
-to an expression that automatically inserts a comment into each
-outgoing message to announce this fact.  See its documentation for
-technical details.  By default, no comment is added.  To have a
-comment line added to your outgoing message, add the following to
-to your <samp>~/.emacs</samp> file before the point at which you load
-Hyperbole.
+<a name="index-actypes-link_002dto_002dstring_002dmatch"></a>
+</dd>
+<dt><code>link-to-string-match</code></dt>
+<dd><p>Finds STRING&rsquo;s Nth occurrence in SOURCE and displays the location 
at the
+top of the selected window.  SOURCE is a pathname unless optional
+BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
+Returns &lsquo;<samp>t</samp>&rsquo; if found, &lsquo;<samp>nil</samp>&rsquo; 
if not.
 </p>
-<div class="smalllisp">
-<pre class="smalllisp">(setq smail:comment
- (format &quot;Comments: GNU Hyperbole mail buttons accepted, v%s.\n&quot;
-          hyperb:version))
-</pre></div>
-
-<p>This will produce the following line in outgoing messages:
+<a name="index-actypes-link_002dto_002dtexinfo_002dnode"></a>
+</dd>
+<dt><code>link-to-texinfo-node</code></dt>
+<dd><p>Displays the Texinfo node with NODENAME (a string) from the current 
buffer.
 </p>
-<div class="example">
-<pre class="example">Comments: GNU Hyperbole mail buttons accepted, vX.XX.
-</pre></div>
-
-<a name="index-file_002c-_002eemacs-1"></a>
-<p>where the X&rsquo;s indicate your Hyperbole version number.  You can cut
-this out of particular messages before you send them when need be.
+<a name="index-actypes-link_002dto_002dweb_002dsearch"></a>
+<a name="index-link_002c-web-search"></a>
+<a name="index-web-search-link"></a>
+</dd>
+<dt><code>link-to-web-search</code></dt>
+<dd><p>Searches web SERVICE-NAME for SEARCH-TERM.  Uses 
<code>hyperbole-web-search-alist</code>
+to match each service to its search url.  Uses 
<code>hyperbole-web-search-browser-function</code>
+and the <code>browse-url</code> package to display search results.
 </p>
-<a name="index-actype_002c-link_002dto_002dmail"></a>
-<p>A final mail-related facility provided by Hyperbole is the ability to
-save a pointer to a received mail message by creating an explicit button
-with a <code>link-to-mail</code> action type.  When prompted for the mail
-message to link to, if you press the Action Key within the message, the
-appropriate link parameters will be copied to the argument prompt, as
-described in <a href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a>.
+<a name="index-actypes-man_002dshow"></a>
+<a name="index-sm_002dnotify"></a>
+</dd>
+<dt><code>man-show</code></dt>
+<dd><p>Displays a man page on TOPIC, which may be of the form 
&lsquo;<samp>&lt;command&gt;(&lt;section&gt;</samp>&rsquo;).
+If using the Superman manual entry package, see the documentation for 
<code>sm-notify</code>
+to control where the man page is displayed.
+</p>
+<a name="index-actypes-rfc_002dtoc"></a>
+</dd>
+<dt><code>rfc-toc</code></dt>
+<dd><p>Computes and displays a summary of an Internet rfc in BUF-NAME.  Assumes
+point has already been moved to the start of the region to summarize.
+Optional OPOINT is the point to return to in BUF-NAME after displaying
+the summary.
+</p>
+<a name="index-actypes-text_002dtoc"></a>
+<a name="index-table-of-contents-2"></a>
+<a name="index-toc-action-type"></a>
+</dd>
+<dt><code>text-toc</code></dt>
+<dd><p>Jumps to the text file SECTION referenced by a table of contents entry
+at point.
 </p>
+<a name="index-actypes-www_002durl"></a>
+<a name="index-URL-1"></a>
+<a name="index-World_002dwide-Web-1"></a>
+<a name="index-WWW-1"></a>
+<a name="index-browse_002durl_002dbrowser_002dfunction-2"></a>
+</dd>
+<dt><code>www-url</code></dt>
+<dd><p>Follows a link given by a URL.  The variable,
+<code>browse-url-browser-function</code>, customizes the url browser
+that is used.  See its documentation string for details.
+</p></dd>
+</dl>
 
+<a name="index-action-1"></a>
+<a name="index-hui_003aebut_002dprompt_002dfor_002daction"></a>
+<p>Action types create a convenient way of specifying button behavior
+without the need to know how to program.  Expert users who are familiar
+with Emacs Lisp, however, may find that they often want to tailor button
+actions in a variety of ways not easily captured within a type system.
+In such cases, <code>hui:ebut-prompt-for-action</code> should be set to
+&lsquo;<samp>t</samp>&rsquo;.  This will cause Hyperbole to prompt for an 
action to override
+the button&rsquo;s action type at each explicit button creation.  For those 
cases
+where the action type is sufficient, a &lsquo;<samp>nil</samp>&rsquo; value 
should be
+entered for the action.  An action may be any Lisp form that Emacs
+Lisp can evaluate.
+</p>
 <hr>
-<a name="Buttons-in-News"></a>
+<a name="Button-Type-Precedence"></a>
 <div class="header">
 <p>
-Previous: <a href="#Buttons-in-Mail" accesskey="p" rel="prev">Buttons in 
Mail</a>, Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" 
rel="up">Utilizing Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Utilizing-Explicit-Buttons" accesskey="n" rel="next">Utilizing 
Explicit Buttons</a>, Previous: <a href="#Action-Types" accesskey="p" 
rel="prev">Action Types</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Buttons-in-News-1"></a>
-<h4 class="subsection">2.7.7 Buttons in News</h4>
+<a name="Button-Type-Precedence-1"></a>
+<h3 class="section">3.6 Button Type Precedence</h3>
 
-<a name="index-button_002c-posting-1"></a>
-<a name="index-news-reader_002fposter"></a>
-<a name="index-posting-news"></a>
-<a name="index-Gnus-1"></a>
-<a name="index-USENET-1"></a>
-<a name="index-file_002c-hyperbole_002eel-1"></a>
-<a name="index-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts-1"></a>
-<p>Explicit buttons may be embedded within outgoing USENET news articles
-and may be activated from within the Gnus news reader.  Because this
-involves complex changes to news support functions, this feature is
-disabled by default.  Use the Cust/Msg-Toggle-Ebuts minibuffer menu
-item to enable it (enabling it for mail also enables it for news and
-vice versa).
-</p>
-<p>Once enabled, all Hyperbole support should work just as it does when
-reading or sending mail.  See <a href="#Buttons-in-Mail">Buttons in Mail</a>.  
When reading news,
-buttons which appear in message <em>Subject</em> lines may be activated
-within the Gnus subject buffer as well as the article buffer.  When
-posting news, the *post-news* buffer is used for outgoing news
-articles rather than a mail-related buffer.
+<a name="index-button-precedence"></a>
+<a name="index-precedence_002c-buttons"></a>
+<a name="index-button-label-overlap"></a>
+<p>Explicit buttons always take precedence over implicit buttons.  Thus, if
+a button selection is made which falls within both an explicit and
+implicit button, only the explicit button will be selected.  Explicit
+button labels are not allowed to overlap; Hyperbole&rsquo;s behavior in such
+cases is undefined.
 </p>
-<p>Remember that the articles you post do not contain the action type
-definitions used by the buttons, so the receiver must have these or she
-will receive an error when she activates the buttons.  You should also
-keep in mind that most USENET readers will not be using Hyperbole, so if
-they receive a news article containing explicit buttons, they will
-wonder what the button data at the end of the message is.  You should
-therefore limit distribution of such messages.  For example, if most
-people at your site read news with Gnus and use Hyperbole, it would be
-reasonable to embed buttons in postings to local newsgroups.
+<a name="index-ibtype_002c-evaluation-order"></a>
+<p>If there is no explicit button at point during a selection request,
+then each implicit button type predicate is tested in turn until one
+returns non-nil or all are exhausted.  Since two implicit button types
+may have overlapping <em>domains</em>, those contexts in which their
+predicates are true, only the first matching type is used.  The type
+predicates are tested in <em>reverse</em> order of definition, i.e.
+most recently entered types are tested first, so that personal types
+defined after standard system types take precedence.  It is important
+to keep this order in mind when defining new implicit button types.
+By making match predicates as specific as possible, one can minimize
+any overlapping implicit button domains.
 </p>
-<a name="index-news-comment"></a>
-<p>In order to alert readers of your postings that they may send you
-personal replies with embedded Hyperbole buttons, the system inserts
-into news postings the same comment that is included within mail
-messages, if enabled.  See <a href="#Buttons-in-Mail">Buttons in Mail</a>, for 
details and an
-explanation of how to turn this feature on.
+<a name="index-type-redefinition"></a>
+<p>Once a type name is defined, its precedence relative to other types
+remains the same even if its body is redefined, as long as its name is
+not changed.  This allows incremental modifications to types without
+any worry of altering their precedences.  See <a 
href="#Creating-Types">Creating Types</a>, for
+information on how to develop or modify types.
 </p>
-
 <hr>
-<a name="Smart-Keys"></a>
+<a name="Utilizing-Explicit-Buttons"></a>
 <div class="header">
 <p>
-Next: <a href="#Menus" accesskey="n" rel="next">Menus</a>, Previous: <a 
href="#Buttons" accesskey="p" rel="prev">Buttons</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Previous: <a href="#Button-Type-Precedence" accesskey="p" rel="prev">Button 
Type Precedence</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Keys-1"></a>
-<h2 class="chapter">3 Smart Keys</h2>
+<a name="Utilizing-Explicit-Buttons-1"></a>
+<h3 class="section">3.7 Utilizing Explicit Buttons</h3>
 
-<a name="index-Smart-Key"></a>
-<a name="index-mouse-support"></a>
-<a name="index-Action-Key"></a>
-<a name="index-Assist-Key"></a>
-<a name="index-middle-mouse-key"></a>
-<a name="index-hmouse_002dmiddle_002dflag"></a>
-<a name="index-Action-Key-1"></a>
-<a name="index-Assist-Key-1"></a>
-<p>Hyperbole offers two special <em>Smart Keys</em>, the Action Key and the
-Assist Key, that perform an extensive array of context-sensitive
-operations across emacs usage.  In many popular modes, they allow you
-to perform common, sometimes complex operations without having to a
-different key for each operation.  Just press a Smart Key and the
-right thing happens.  This chapter explains typical uses of the Smart
-Keys.  See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for 
complete descriptions of their
-behavior in all contexts.
+<p>Explicit buttons are a fundamental building block for creating personal
+or organizational hypertext networks with Hyperbole.  This section
+summarizes the user-level operations available for managing these
+buttons.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Bindings" 
accesskey="1">Smart Key Bindings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Creation" 
accesskey="1">Creation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Operations" 
accesskey="2">Smart Key Operations</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Renaming" 
accesskey="2">Renaming</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modeline" 
accesskey="3">Smart Key Modeline</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Deletion" 
accesskey="3">Deletion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Thing-Selection" 
accesskey="4">Smart Key Thing Selection</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Modification" 
accesskey="4">Modification</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Argument-Selection" accesskey="5">Smart Key Argument 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Searching-and-Summarizing" 
accesskey="5">Searching and Summarizing</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modifiers" 
accesskey="6">Smart Key Modifiers</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Buttons-in-Mail" 
accesskey="6">Buttons in Mail</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Debugging" 
accesskey="7">Smart Key Debugging</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Buttons-in-News" 
accesskey="7">Buttons in News</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="Smart-Key-Bindings"></a>
+<a name="Creation"></a>
+<div class="header">
+<p>
+Next: <a href="#Renaming" accesskey="n" rel="next">Renaming</a>, Previous: <a 
href="#Utilizing-Explicit-Buttons" accesskey="p" rel="prev">Utilizing Explicit 
Buttons</a>, Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" 
rel="up">Utilizing Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Creation-1"></a>
+<h4 class="subsection">3.7.1 Creation</h4>
+
+<p>Creating explicit buttons is fun and easy.  You can always try them
+out immediately after creating them or can utilize the Assist Key to
+verify what buttons do.  There are two ways to create them: by
+dragging between windows with the Action Mouse Key or by using the
+Hyperbole menus.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#By-Dragging" 
accesskey="1">By Dragging</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">Creation Via Action Key Drags
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#By-Menu" accesskey="2">By 
Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Creation Via 
Menus
+</td></tr>
+</table>
+
+<hr>
+<a name="By-Dragging"></a>
+<div class="header">
+<p>
+Next: <a href="#By-Menu" accesskey="n" rel="next">By Menu</a>, Previous: <a 
href="#Creation" accesskey="p" rel="prev">Creation</a>, Up: <a href="#Creation" 
accesskey="u" rel="up">Creation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Creation-Via-Action-Key-Drags"></a>
+<h4 class="subsubsection">3.7.1.1 Creation Via Action Key Drags</h4>
+
+<a name="index-explicit-button-creation"></a>
+<a name="index-button-creation"></a>
+<a name="index-creating-buttons"></a>
+<a name="index-link-creation"></a>
+<a name="index-creating-links"></a>
+<a name="index-direct-link-creation"></a>
+<a name="index-mouse-drag_002c-link-creation"></a>
+<a name="index-drag"></a>
+<a name="index-Action-Key-drag"></a>
+<p>The most efficient way to create an explicit link button interactively
+is to use the Action Mouse Key to drag from a non-read-only button
+source window to a window showing its desired link referent.  More
+specifically, you should split your current Emacs frame into two
+windows: one which contains the point at which you want a button to be
+inserted and another which shows the point to which you want to link.
+Depress the Action Mouse Key at the source point for the button
+(anywhere but on a paired delimiter such as double quotes or
+parentheses).  Then drag to the other window and release the Action
+Mouse Key at the start point of the link referent.  The process
+becomes quite simple with a little practice. (See <a href="#By-Menu">Creation
+Via Menus</a>, for a more detailed explanation of the explicit button
+creation process).
+</p>
+<p>If a region was selected prior to the start of the drag, it is used as
+the button label, otherwise, you are prompted for the label.  Then
+Hyperbole uses the link referent context to determine the type of link
+to make.  If there are a few different types of links which are
+applicable from the context, you will be prompted with a list of the
+types.  Simply use the Action Key or the first letter of the link type
+to select one of the type names and to finish the link creation.
+Hyperbole will then insert explicit button delimiters around the
+button label and will display a message in the minibuffer indicating
+the button label, its action/link type, and any arguments, notably the
+thing to which it links.
+</p>
+<p>The following table shows the type of link that will be created based
+upon the referent context in which the Action Key is released.
+</p>
+<div class="format">
+<div class="example">
+<pre class="example">Referent Context         Link Type
+----------------------------------------------------
+Explicit Button          link-to-ebut
+Info Index Item          link-to-Info-index-item
+Info Node                link-to-Info-node
+Mail Reader Message      link-to-mail
+Directory Name           link-to-directory
+File Name                link-to-file
+Koutline Cell            link-to-kcell
+Outline Heading          link-to-string-match
+Buffer attached to File  link-to-file
+Buffer without File      link-to-buffer-tmp
+</pre></div>
+</div>
+
+<a name="index-M_002do"></a>
+<a name="index-C_002du-M_002do"></a>
+<a name="index-C_002dx-o"></a>
+<a name="index-hkey_002doperate"></a>
+<a name="index-emulation_002c-Action-Key-drag"></a>
+<a name="index-keyboard-drag-emulation"></a>
+<p>If you run Emacs under a window system and there is no prior key
+binding on <kbd>{M-o}</kbd> when you load Hyperbole, then you can emulate
+an Action Key drag from the keyboard by typing <kbd>{M-o}</kbd>, the
+<code>hkey-operate</code> command, at the button source location, moving
+to the link destination, e.g. with <kbd>{C-x o}</kbd>, and then typing
+<kbd>{M-o}</kbd> again.  This simulates a depress and then release of the
+Action Key.  <kbd>{C-u M-o}</kbd> emulates drags of the Assist Key.
+This will not work when Hyperbole is run from a dumb terminal Emacs
+session since drag actions are not supported without a window system.
+</p>
+<hr>
+<a name="By-Menu"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Operations" accesskey="n" rel="next">Smart Key 
Operations</a>, Previous: <a href="#Smart-Keys" accesskey="p" rel="prev">Smart 
Keys</a>, Up: <a href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Previous: <a href="#By-Dragging" accesskey="p" rel="prev">By Dragging</a>, Up: 
<a href="#Creation" accesskey="u" rel="up">Creation</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Bindings-1"></a>
-<h3 class="section">3.1 Smart Key Bindings</h3>
-
-<a name="index-C_002du-M_002dRET"></a>
-<a name="index-M_002dRET"></a>
-<p>From the keyboard, <kbd>{M-<span class="key">RET</span>}</kbd> is the 
Action Key and <kbd>{C-u
-M-<span class="key">RET</span>}</kbd> is the Assist Key.  These keys allow 
context-sensitive
-operation from any keyboard.
-</p>
+<a name="Creation-Via-Menus"></a>
+<h4 class="subsubsection">3.7.1.2 Creation Via Menus</h4>
 
-<a name="index-shift_002dmiddle-mouse-key"></a>
-<a name="index-shift_002dleft-mouse-key"></a>
-<a name="index-shift_002dright-mouse-key"></a>
-<a name="index-middle-mouse-key-1"></a>
-<a name="index-hmouse_002dmiddle_002dflag-1"></a>
-<p>From the mouse, the <em>Action Key</em> is bound to your shift-middle
-mouse key (or shift-left on a 2-button mouse) and the <em>Assist Key</em>
-is bound to your shift-right mouse key, assuming Hyperbole is run
-under an external window system.  (InfoDock users or those who set the
-variable, <code>hmouse-middle-flag</code>, to &lsquo;<samp>t</samp>&rsquo; 
before loading
-Hyperbole, may also use the middle mouse key as the Action Key).
+<p>You may instead use the Hyperbole menus to create explicit buttons.
+First, mark a short region of text in any fashion allowed by Emacs
+and then select the Hyperbole menu item sequence, Ebut/Create.  You will
+be prompted for the button&rsquo;s label with the marked region as the
+default.  If you accept the default and enter the rest of the
+information you are prompted for, the button will be created within the
+current buffer and Hyperbole will surround the marked region with
+explicit button delimiters to indicate success.
 </p>
-<a name="index-key-binding_002c-smart-keys"></a>
-<a name="index-smart-key-commands"></a>
-<a name="index-smart-key-assignments"></a>
-<a name="index-action_002dkey"></a>
-<a name="index-assist_002dkey"></a>
-<a name="index-action_002dmouse_002dkey"></a>
-<a name="index-assist_002dmouse_002dkey"></a>
-<p>If you prefer other key assignments, simply bind the commands
-<code>action-key</code> and <code>assist-key</code> to keyboard keys.
-<code>hkey-either</code> may be used instead if you prefer a single
-key binding for both commands; a prefix argument, such as <kbd>{C-u}</kbd>,
-then invokes <code>assist-key</code>.  You may also bind 
<code>action-mouse-key</code>
-and <code>assist-mouse-key</code> to other mouse keys, if you like, though
-you won&rsquo;t be able to execute drag actions with such key bindings.
+<p>If you do not mark a region before invoking the button create command,
+you will be prompted for both a label and a target buffer for the button
+and the delimited label text will be inserted into the target buffer
+after a successful button creation.
 </p>
-<p>Mouse configuration of the Smart Keys is automatic for GNU Emacs under
-Mac OS X, the X Window System and MS Windows, as well as for XEmacs
-and InfoDock under the X window system, assuming your emacs program
-has been built with support for any of these window systems.
+<p>After Hyperbole has the button label and its target buffer, it will
+prompt you for an action type for the button.  Use the <kbd>{?}</kbd>
+completion list key to see the available types.  The type selected
+determines any following values for which you are prompted.
 </p>
-<a name="index-file_002c-_002eemacs-2"></a>
-<a name="index-hmouse_002dtoggle_002dbindings"></a>
-<a name="index-mouse-key-toggle"></a>
-<a name="index-Smart-Mouse-Key-toggle"></a>
-<a name="index-C_002dc-t"></a>
-<p>If you ever want to restore the mouse bindings that existed before
-Hyperbole was loaded, use the <code>hmouse-toggle-bindings</code> command.
-It switches between the Hyperbole mouse key bindings and those set
-prior to loading Hyperbole and then back again if invoked once more.
-There is no default key binding for this command; use <kbd>{M-x
-hmouse-toggle-bindings <span class="key">RET</span>}</kbd>.  Alternatively, 
you may select a
-key and bind it as part of any setting of <code>hyperbole-init-hook</code>
-within your personal <samp>~/.emacs</samp> file.  For example, <code>(add-hook
-'hyperbole-init-hook (lambda () (global-set-key &quot;\C-ct&quot;
-'hmouse-toggle-bindings)))</code>.
+<a name="index-button-instance"></a>
+<a name="index-instance-number"></a>
+<p>If a previous button with the same label exists in the same buffer,
+Hyperbole will add an <em>instance number</em> to the label when it adds
+the delimiters so that the name is unique.  Thus, you don&rsquo;t have to
+worry about accidental button name conflicts.  If you want the same
+button to appear in multiple places within the buffer, just enter the
+label again and delimit it yourself or copy and paste the button with
+its delimiters.  Hyperbole will interpret all occurrences of the same
+delimited label within a buffer as the same button.
 </p>
-<a name="index-Paste-Key"></a>
-<a name="index-mouse-paste"></a>
-<a name="index-InfoDock-Action-Key"></a>
-<a name="index-InfoDock-Paste-Key"></a>
-<p>Under InfoDock, the middle mouse key is normally used as the Action Key
-and the meta-middle mouse key is used as the Paste Key.  If you prefer
-that the middle mouse key be used as the Paste Key, then you will want to
-toggle the mouse bindings.  InfoDock includes a built-in way to do this
-via its Options/Mouse/Mouse-Paste-on-Middle-Key menu item.  (Keep in
-mind though that the Action Key will paste any active region within the
-editor when the Action Key is clicked; it will not paste selections from
-other applications).
+<a name="index-link_002c-creation"></a>
+<p>If you create link buttons using the Hyperbole menus, the best
+technique is to place on screen both the source buffer for the button
+and the buffer to which it will link.  Mark the region of text to use
+as your button label, invoke the button create command from the menu,
+choose an action type which begins with <code>link-to-</code> and then use
+the direct selection techniques mentioned in <a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a>, to 
select the link referent.
 </p>
 
 <hr>
-<a name="Smart-Key-Operations"></a>
+<a name="Renaming"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Modeline" accesskey="n" rel="next">Smart Key 
Modeline</a>, Previous: <a href="#Smart-Key-Bindings" accesskey="p" 
rel="prev">Smart Key Bindings</a>, Up: <a href="#Smart-Keys" accesskey="u" 
rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Deletion" accesskey="n" rel="next">Deletion</a>, Previous: <a 
href="#Creation" accesskey="p" rel="prev">Creation</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Operations-1"></a>
-<h3 class="section">3.2 Smart Key Operations</h3>
+<a name="Renaming-1"></a>
+<h4 class="subsection">3.7.2 Renaming</h4>
 
-<a name="index-button-activation"></a>
-<a name="index-activation"></a>
-<a name="index-button-help"></a>
-<p>The Action Key generally selects entities, creates links and
-activates buttons.  The Assist Key generally provides help,
-such as reporting on a button&rsquo;s attributes, or serves a complementary
-function to whatever the Action Key does within a context.
+<a name="index-explicit-button-renaming"></a>
+<a name="index-button-renaming"></a>
+<p>Once an explicit button has been created, its label text must be
+treated specially.  Any inter-word spacing within the label may be
+freely changed, as may happen when a paragraph is refilled, but a
+special command must be invoked to rename it.
 </p>
-<a name="index-Smart-Key-operation"></a>
-<a name="index-menu-item_002c-Doc_002fSmartKeys"></a>
-<a name="index-Smart-Key-summary"></a>
-<a name="index-modeline_002c-Smart-Keys"></a>
-<p>The Hyperbole Doc/SmartKeys menu entry displays a summary of what the
-Smart Keys do in all of their different contexts.  Alternatively, a
-click of the Assist Mouse Key in the right corner of a window
-modeline (within the rightmost 3 characters) toggles between
-displaying this summary and hiding it.  Reference this summary
-whenever you need it.
+<p>The rename command operates in two different ways.  If point is within
+a button label when it is invoked, it will tell you to edit the button
+label and then to invoke the rename command again after the edit.  The
+second invocation will actually rename the button.  If instead the
+command is originally invoked outside of any explicit button, it will
+prompt for the button label to replace and the label to replace it
+with and then will perform the renaming.  All occurrences of the same
+button in the buffer will be renamed.
 </p>
-<p>The following table is the same summary.  Much of the browsing power
-of Hyperbole comes from the use of the Smart Keys, so spend some time
-practicing how to use them.  Study what modeline clicks and window
-drag actions do as these will give you a lot of power without much
-effort.  This table may appear daunting at first, but as you practice
-and notice that the Smart Keys do just a few context-sensitive things
-per editor mode, you will find it easy to just press or point and
-click and let Hyperbole do the right thing in each context.
+<a name="index-file_002c-_002eemacs-1"></a>
+<a name="index-file_002c-hyperbole_002eel"></a>
+<a name="index-C_002dc-C_002dr"></a>
+<a name="index-hui_003aebut_002drename"></a>
+<p>The rename command may be invoked from the Hyperbole menu via
+Ebut/Rename.  A faster method is to use a key bound to the
+<code>hui:ebut-rename</code> command.  Hyperbole typically binds this to
+<kbd>{C-c C-r}</kbd>.  <kbd>{C-h w hui:ebut-rename <span 
class="key">RET</span>}</kbd> will show
+what if any key runs it.  If no key binding has been established or if
+you prefer one of your own, simply bind it within your <samp>~/.emacs</samp>
+file: <code>(global-set-key &quot;\C-c\C-r&quot; 'hui:ebut-rename)</code>.
 </p>
-<div class="format">
-<div class="smallexample">
-<pre 
class="smallexample">========================================================================================
-                                              Smart Keys
-Context                         Action Key                 Assist Key
-========================================================================================
-Hyperbole
-  On a minibuffer menu item     Activates item             Item help
-  On an explicit button         Activates button           Button help
-  Reading argument
-    1st press at an arg value   Value copied to minibuffer &lt;- same
-    2nd press at an arg value   Value used as argument     &lt;- same
-    In minibuffer               Accepts minibuffer arg     Completion help
-  On an implicit button         Activates button           Button help
-  Within a koutline cell        Collapses and expands      Shows tree props
-  Left of a koutline cell       Creates a klink            Moves a tree
-  HyRolo Match Buffer           Edits entries and mails to e-mail addresses
-
-Mouse or Keyboard Display Control
-  Line end, not end of buffer
-    smart-scroll-proportional
-      = t   (default)           Makes curr line top line   Bottom line
-      = nil                     Scrolls up a windowful     Scrolls down
-  End of Any Help buffer        Restores screen to the previous state
-  Read-only View Mode           Scrolls up a windowful     Scrolls wind down
-
-Mouse-only Control
-  Drag from thing start or end  Yanks thing at release     Kills thing and 
yanks
-    A thing is a delimited                                 at release
-    expression, such as a
-    string, list or markup
-    language tag pair
-  Drag from shared window side
-    or from left of scroll bar  Resizes window width       &lt;- same
-
-  Modeline press+wind release   Resizes window height      &lt;- same
-  Click in modeline
-    Left modeline edge          Buries current buffer      Unburies bottom 
buffer
-    Right modeline edge         Info manual browser        Smart Key summary
-    Other blank area            Action Key modeline hook   Assist Key modeline 
hook
-                                  Show/Hide Buffer Menu      Popup Jump &amp; 
Manage Menu
-
-  Drag between windows          Creates/modifies a link    Swaps wind buffers
-  Drag in window, region active Error, not allowed         Error, not allowed
-  Horizontal drag in a window   Splits window below        Deletes window
-  Vertical drag in a window     Splits window side-by-side Deletes window
-  Diagonal drag in a window     Saves wconfig              Restores wconfig 
from ring
-  Active region exists          Yanks sexp at release      Kills &amp; yanks 
sexp at release
-
-Hyperbole Key Press/Click in Special Modes
-  Emacs push button             Activates button           Button help
-  Thing begin or end            Mark thing region          Mark &amp; kill 
thing region
-  C,C++,Objective-C,Java Modes  Jumps to id/include def    Jumps to next def
-  Java Cross-reference Tag      Jumps to identifier def    Jumps to next def
-  JavaScript and Python Modes   Jumps to identifier def    Jumps to next def
-  Assembly Language Mode        Jumps to id/include def    Jumps to next def
-  Any Lisp or Fortran Mode      Jumps to id def            Jumps to next def
-  Emacs Lisp Compiler Error     Jumps to def with error    &lt;- same
-  Grep or Occur Match           Jumps to match source line &lt;- same
-  Multi-buffer Occur Match      Jumps to match source line &lt;- same
-  Etags `TAGS' file entry       Jumps to source line       Button help
-  Ctags file entry              Jumps to source line       Button help
-  Texinfo Cross-reference
-    Before opening brace        Jumps to Texinfo referent  Button help
-    Within braces               Jumps to Info referent     Button help
-    Menu Item or node hdr       Jumps to Texinfo referent  Button help
-    Include file                Jumps to Texinfo referent  Button help
-    code/var reference          Displays doc for referent  Button help
-  Org Mode                      Follows links and cycles outline views
-  Outline Major/Minor Modes     Collapses, expands, and moves outline entries
-  Man Apropos                   Displays man page entry    &lt;- same
-  Man Pages                     Follows cross refs, file refs and C code refs
-  I/Buffer Menu                 Saves, deletes and displays buffers
-
-Emacs Info Reader
-  Menu Entry or Cross Ref       To referent                &lt;- same
-  Up, Next or Prev Header       To referent                To prior node
-  File entry of Header          To top node                To (DIR) node
-  End of current node           To next node               To previous node
-  Anywhere else                 Scrolls up a windowful     Scrolls wind down
-
-Subsystems
-  Calendar                      Scrolls or shows appts     Scrolls/marks date
-  GNU Debbugs Tracker           Displays issue discussion  Displays issue 
status
-  Dired Mode                    Views and deletes files from dir listing
-  GNUS News Reader              Toggles group subscriptions, gets new news,
-                                  and browses articles
-  Mail Reader and Summaries     Browses, deletes and expunges messages
-  OO-Browser                    Browses object classes and elements
-  Tar Mode                      Views and edits files from tar archive files
 
-Any other context (defaults)    Invalid context error      Invalid context 
error
-========================================================================================
-</pre></div>
+<hr>
+<a name="Deletion"></a>
+<div class="header">
+<p>
+Next: <a href="#Modification" accesskey="n" rel="next">Modification</a>, 
Previous: <a href="#Renaming" accesskey="p" rel="prev">Renaming</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
+<a name="Deletion-1"></a>
+<h4 class="subsection">3.7.3 Deletion</h4>
 
-<p>See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for extensive 
reference documentation on the
-Smart Keys.
+<a name="index-explicit-button-deletion"></a>
+<a name="index-button-deletion"></a>
+<p>Ebut/Delete works similarly to the Rename command but deletes the
+selected button.  The button&rsquo;s delimiters are removed to confirm the
+deletion.  If the delete command is invoked with a prefix argument, then
+both the button label and the delimiters are removed as confirmation.
 </p>
-<a name="index-action_002dkey_002ddefault_002dfunction"></a>
-<a name="index-assist_002dkey_002ddefault_002dfunction"></a>
-<a name="index-Smart-Key_002c-default-context"></a>
-<a name="index-default-Smart-Key-context"></a>
-<p>Note how the last line in the table explains that the default behavior of
-the Smart Keys in an unknown context is to report an error.  You can change
-these behaviors by setting two variables.  See the documentation
-for the variables <code>action-key-default-function</code> and
-<code>assist-key-default-function</code> for information on how to customize
-the behavior of the Smart Keys within default contexts.
+<a name="index-hui_003aebut_002ddelete_002dconfirm_002dp"></a>
+<p>Presently there is no way to recover a deleted button; it must
+be recreated.  Therefore, the <code>hui:ebut-delete-confirm-p</code> variable
+is true by default, causing Hyperbole to require confirmation before
+interactively deleting explicit buttons.  Set it to 
&lsquo;<samp>nil</samp>&rsquo; if you
+prefer no confirmation.
 </p>
-<a name="index-Smart-Key-help"></a>
-<a name="index-help_002c-Smart-Key"></a>
-<a name="index-context_002dsensitive-help"></a>
-<p>When you use a mouse and you want to find out what either of the Smart
-Keys does within a context, depress the one you want to check on and
-hold it down, then press the other and release as you please.  A help
-buffer will pop up explaining the actions that will be performed in that
-context, if any.  A press of either Smart Key at the end of that
-help buffer will restore your display to its configuration prior to
-invoking help.
+<hr>
+<a name="Modification"></a>
+<div class="header">
+<p>
+Next: <a href="#Searching-and-Summarizing" accesskey="n" rel="next">Searching 
and Summarizing</a>, Previous: <a href="#Deletion" accesskey="p" 
rel="prev">Deletion</a>, Up: <a href="#Utilizing-Explicit-Buttons" 
accesskey="u" rel="up">Utilizing Explicit Buttons</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Modification-1"></a>
+<h4 class="subsection">3.7.4 Modification</h4>
+
+<a name="index-explicit-button-modification"></a>
+<a name="index-button-modification"></a>
+<a name="index-Smart-Mouse-Key-drag"></a>
+<a name="index-button-attributes"></a>
+<p>Ebut/Modify prompts you with each of the elements from the button&rsquo;s
+attributes list and allows you to modify each in turn.  Ebut/Edit does
+the exact same thing and is there for people who prefer that term.
 </p>
-<a name="index-C_002dh-A"></a>
-<a name="index-C_002du-C_002dh-A"></a>
-<p>On the keyboard, <kbd>{C-h A}</kbd> displays this same context-sensitive
-help for the Action Key while <kbd>{C-u C-h A}</kbd> displays the help for
-the Assist Key.  Note that <kbd>{C-h a}</kbd> performs a function unrelated
-to Hyperbole, so you must press the shift key when you type
-the <tt class="key">A</tt> character.
+<p>There is a quicker way to modify explicit link buttons, however.  Simply
+drag with the Action Mouse Key from within the button label to a link
+destination in a different window, just as you would when creating a new
+button with a mouse drag.  Remember that drags may also be emulated from
+the keyboard.  See <a href="#Creation">Creation</a>.
 </p>
 <hr>
-<a name="Smart-Key-Modeline"></a>
+<a name="Searching-and-Summarizing"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Thing-Selection" accesskey="n" rel="next">Smart Key 
Thing Selection</a>, Previous: <a href="#Smart-Key-Operations" accesskey="p" 
rel="prev">Smart Key Operations</a>, Up: <a href="#Smart-Keys" accesskey="u" 
rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Buttons-in-Mail" accesskey="n" rel="next">Buttons in Mail</a>, 
Previous: <a href="#Modification" accesskey="p" rel="prev">Modification</a>, 
Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing 
Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Modeline-1"></a>
-<h3 class="section">3.3 Smart Key Modeline</h3>
+<a name="Searching-and-Summarizing-1"></a>
+<h4 class="subsection">3.7.5 Searching and Summarizing</h4>
 
-<p>Smart Key clicks on a window&rsquo;s modeline offer many powerful browsing
-features including user manual browsing, as well as window, buffer
-and frame selection.
-</p>
-<a name="index-Info-browser"></a>
-<a name="index-modeline-click-and-drag"></a>
-<a name="index-modeline_002c-Info-Browser"></a>
-<p>A click of the Action Mouse Key in the right corner of a window
-modeline (within the rightmost 3 characters) displays or hides the
-GNU Info Manual Browser, giving you quick point and click access to
-an amazing wealth of documentation, since the Action Key also browses
-through these manuals and follows their hyperlinked cross-references.
-A click of the Assist Key in the same location displays or hides the
-Smart Key summary, as noted earlier.
-</p>
-<a name="index-buffer-menu"></a>
-<a name="index-modeline_002c-buffer-menu"></a>
-<a name="index-jump-menu"></a>
-<a name="index-modeline_002c-jump-menu"></a>
-<p>An Action Mouse Key click in a blank area of a window modeline (away
-from left and right edges) toggles between displaying and hiding a
-list of all buffers.  Once displayed, each buffer is selectable with
-the Action Key as well.  A click in the same location of the Assist
-Key displays a quick access menu of display-oriented commands.  You
-can jump to buffers categorized by major mode, jump to windows by
-buffer name, or to frames by name.  Manage your windows and frames
-quickly with this menu as well.  As always with Hyperbole, just try
-it and you&rsquo;ll begin to wonder how you lived without it before.
+<a name="index-explicit-button-summary"></a>
+<a name="index-button-summary"></a>
+<a name="index-button-help-1"></a>
+<p>The Ebut/Help menu may be used to summarize either a single explicit
+button or all such buttons within a buffer.  The buttons summarized may
+then be activated directly from the summary.
 </p>
-<a name="index-action_002dkey_002dmodeline_002dfunction"></a>
-<a name="index-assist_002dkey_002dmodeline_002dfunction"></a>
-<a name="index-action_002dkey_002dmodeline"></a>
-<a name="index-assist_002dkey_002dmodeline"></a>
-<a name="index-hmouse_002dcontext_002dmenu"></a>
-<a name="index-hmouse_002dcontext_002dibuffer_002dmenu"></a>
-<a name="index-ibuffer-menu"></a>
-<p>Hyperbole modeline mouse click actions are controlled by the two functions,
-<code>action-key-modeline</code> and <code>assist-key-modeline</code>.  If you 
know
-a little Emacs Lisp you can change these to do whatever you like.
-When a Smart Key press is on a blank part of a modeline but not at
-the left or right, the function given by one of these two variables
-is executed: <code>action-key-modeline-function</code> or
-<code>assist-key-modeline-function</code>.  By default, the Action Key toggles
-between displaying and hiding the buffer menu.  If you like the more
-advanced features of <code>Ibuffer Mode</code>, you can change the buffer menu
-to use that with the following in your Emacs initialization file:
-<code>(setq action-key-modeline-function #'hmouse-context-ibuffer-menu)</code>.
-To set it back to the default use:
-<code>(setq action-key-modeline-function #'hmouse-context-menu)</code>.
+<p>Ebut/Help/BufferButs summarizes the explicit buttons in the order in
+which they appear in the buffer.  Ebut/Help/CurrentBut summarizes only
+the button at point.  Ebut/Help/OrderedButs summarizes the buttons in
+alphabetical order.  All of these summary commands eliminate duplicate
+occurrences of buttons from their help displays.
 </p>
-<a name="index-dired_002djump"></a>
-<a name="index-hui_002dmenu_002dscreen_002dcommands"></a>
-<a name="index-directory-editor"></a>
-<a name="index-dired"></a>
-<a name="index-modeline_002c-screen-command-menu"></a>
-<p>The default <code>assist-key-modeline-function</code> is to pop up a menu of
-convenient screen commands that lets you select buffers grouped by
-major mode, use HyControl, or jump to specific windows, window
-configurations or frames.  If you would prefer it runs the directory
-editor <code>dired</code> on the directory associated with the window of the
-modeline press, use this: <code>(setq assist-key-modeline-function 
#'dired-jump)</code>.
-To set it back to the default use:
-<code>(setq assist-key-modeline-function #'hui-menu-screen-commands)</code>.
+<a name="index-explicit-button-searching"></a>
+<a name="index-button-searching"></a>
+<p>Ebut/Search prompts for a search pattern and searches across all the
+locations in which you have previously created explicit buttons.  It
+asks you whether to match to any part of a button label or to whole
+labels only.  It then displays a list of button matches with a single
+line of surrounding context from their sources.  Any button in the match
+list may be activated as usual.  An Action Key press on the surrounding
+context jumps to the associated source line.  A press on the filename
+preceding the matches jumps to the file without selecting a particular
+line.
 </p>
-<p>These variables may also be changed permanently with the Emacs
-interactive customization interface.  Use <kbd>{M-x customize-variable
-<span class="key">RET</span> assist-key-modeline-function <span 
class="key">RET</span>}</kbd>.  In the Assist
-Modeline Function text field that appears, change the value
-to <code>dired-jump</code>.  Then press the &ldquo;Apply and Save&rdquo; 
button.
+<p>There are presently no user-level facilities for globally locating
+buttons created by others or for searching on particular button
+attributes.
 </p>
 <hr>
-<a name="Smart-Key-Thing-Selection"></a>
+<a name="Buttons-in-Mail"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Argument-Selection" accesskey="n" rel="next">Smart 
Key Argument Selection</a>, Previous: <a href="#Smart-Key-Modeline" 
accesskey="p" rel="prev">Smart Key Modeline</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Buttons-in-News" accesskey="n" rel="next">Buttons in News</a>, 
Previous: <a href="#Searching-and-Summarizing" accesskey="p" 
rel="prev">Searching and Summarizing</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Thing-Selection-1"></a>
-<h3 class="section">3.4 Smart Key Thing Selection</h3>
+<a name="Buttons-in-Mail-1"></a>
+<h4 class="subsection">3.7.6 Buttons in Mail</h4>
 
-<a name="index-sexp-selection"></a>
-<a name="index-code-block-selection"></a>
-<a name="index-selection"></a>
-<a name="index-smart-selection"></a>
-<a name="index-smart-marking"></a>
-<a name="index-region-selection"></a>
-<a name="index-things"></a>
-<a name="index-delimited-things"></a>
-<p>Hyperbole has some radically cool ways to select regions of structured
-text or source code and to copy or move them between buffers with a
-single mouse drag or two key presses.  A great deal of smarts are
-built-in so that it does the right thing most of the time; many other
-attempts at similar behavior such as thing.el fail to deal with many
-file format complexities.
-</p>
-<p>We use the term <em>things</em> to refer to structured entities that
-Hyperbole can select.  These include: delimited pairs of (), {}, &lt;&gt;,
-[] and quote marks, source code functions, source code comments and
-matching tag pairs in HTML and SGML modes.  <em>Delimited things</em> are
-those things that contain a selectable delimiter such as an opening
-parenthesis.
-</p>
-<a name="index-HTML-tag-pair"></a>
-<a name="index-SGML-tag-pair"></a>
-<p>The best way to mark a delimited thing is to move your cursor to the
-starting delimiter of the thing and then press the Action Key.  Typically,
-you will see the thing highlight.  You can then operate upon it as you
-would any Emacs region.  In many cases, you can do the same thing upon
-the closing delimiter but this is not as reliable.  An Action Key
-press on the start of an HTML or SGML tag pair marks the entire region
-span of the pair.  If you use the Assist Key instead, it will mark and
-kill (delete) the thing.
+<a name="index-C_002dx-m"></a>
+<a name="index-mail"></a>
+<a name="index-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts"></a>
+<p>Hyperbole supports embedding buttons within electronic mail messages
+composed in Emacs.  An enhanced mail reader may then be used to
+activate the buttons within messages just like any other buttons.
+Because this involves complex changes to mail support functions, this
+feature is disabled by default.  Use the Cust/Msg-Toggle-Ebuts
+minibuffer menu item to enable it.
 </p>
-<a name="index-drag_002c-with-region"></a>
-<a name="index-kill-region"></a>
-<a name="index-yank-region"></a>
-<a name="index-cut-region"></a>
-<a name="index-copy-region"></a>
-<a name="index-paste-region"></a>
-<p>Even better are Smart Mouse Key drags which let you copy or move
-delimited things in one operation without even highlighting them.  To
-copy, simply drag with the Action Key from a thing&rsquo;s opening delimiter
-and release somewhere outside of the thing, either within the same
-window or within another window.  The thing will be copied to the
-point of release.  If you want to move a thing, simply perform the
-same drag but with the Assist Mouse Key.  Ensure that you do not move
-any explicit buttons from one buffer to another as that does not
-presently work.
+<a name="index-button-mailing"></a>
+<a name="index-button-posting"></a>
+<a name="index-mailing-buttons"></a>
+<a name="index-posting-buttons"></a>
+<a name="index-mail-reader"></a>
+<a name="index-mailer-initialization"></a>
+<a name="index-Rmail"></a>
+<a name="index-VM"></a>
+<a name="index-MH_002de"></a>
+<a name="index-Gnus"></a>
+<a name="index-USENET"></a>
+<a name="index-news"></a>
+<a name="index-file_002c-hmail_002eel"></a>
+<p>Hyperbole supports the following mail readers: Rmail (see <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Rmail";>Reading
+Mail with Rmail</a> in <cite>the GNU Emacs Manual</cite>), VM (see <a 
href="vm.html#Introduction">Introduction</a> in <cite>the VM Manual</cite>) and 
MH-e.  Button inclusion and activation within USENET news
+articles is also supported in the same fashion via the Gnus news reader if
+available at your site (see <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/gnus.html#Top";>The 
Gnus Newsreader</a> in <cite>the Gnus
+Manual</cite>).  (The <samp>hmail.el</samp> file defines a generalized 
interface that can
+be used to hook in other mail or news readers if the necessary interface
+functions are written.)
 </p>
-<p>Try out some of these operations in HTML or source code files to see
-how they can speed your editing.
+<a name="index-mail_002dyank_002doriginal"></a>
+<a name="index-C_002dc-C_002dy"></a>
+<a name="index-mail-inclusion"></a>
+<p>All explicit buttons to be mailed must be created within the outgoing
+message buffer. There is no present support for including text from
+other buffers or files which contain explicit buttons, except for the
+ability to yank the contents of a message being replied to, together
+with all of its buttons, via the <code>(mail-yank-original)</code> command
+bound to <kbd>{C-c C-y}</kbd>.  From a user&rsquo;s perspective, buttons are
+created in precisely the same way as in any other buffer.  They also
+appear just like any other buttons to both the message sender and the
+reader who uses the Hyperbole enhanced readers.  Button operation may be
+tested any time before a message is sent.  A person who does not use
+Hyperbole enhanced mail readers can still send messages with embedded
+buttons since mail composing is independent of any mail reader
+choice.
 </p>
-<p>Hyperbole also binds two convenience keys for working with things.
+<p>Hyperbole buttons embedded within received mail messages behave as do
+any other buttons.  The mail does not contain any of the action type
+definitions used by the buttons, so the receiver must have these or
+she will receive an error when she activates the buttons.  Buttons
+which appear in message <em>Subject</em> lines are copied to summary
+buffers whenever such summaries are generated.  Thus, they may be
+activated from either the message or the summary buffers.
 </p>
-<a name="index-C_002dc-RET"></a>
-<a name="index-hui_002dselect_002dthing"></a>
-<a name="index-hui_002dselect_002dthing_002dwith_002dmouse"></a>
-<p>The first such key is <kbd>{C-c <span class="key">RET</span>}</kbd> 
<code>hui-select-thing</code>
-which selects bigger and bigger syntactic regions with each successive
-use.  Double or triple clicks of the Selection Key (left mouse key) do
-the same thing.  The first press selects a region based upon the
-character at point.  For example, with point over an opening or
-closing grouping character, such as { or }, the whole grouping is
-selected, e.g. a C function.  When on an _ or - within a programming
-language identifier name, the whole name is selected.  The type of
-selection is displayed in the minibuffer as feedback.  When using a
-language in which indentation determines nesting level like Python, a
-double click on the first alpha character of a line, such as an if
-statement, selects the whole statement.  Use <kbd>{C-g}</kbd> to unmark the
-region when done.  Use, <code>hui-select-thing-with-mouse</code> if you want
-to bind this to a different mouse key to use single clicks instead of
-double clicks.
+<p>Nothing bad will happen if a mail message with explicit buttons is sent
+to a non-Hyperbole user.  The user will simply see the text
+of the message followed by a series of lines of button data at its end.
+Hyperbole mail users never see this data in its raw form.
 </p>
-<a name="index-C_002dc-_002e"></a>
-<a name="index-hui_002dselect_002dgoto_002dmatching_002dtag"></a>
-<p>The second convenience key is bound only in HTML/web mode.  <kbd>{C-c
-.}</kbd> <code>hui-select-goto-matching-tag</code> jumps between the opening 
and
-closing tag of a pair.  It moves point to the start of the tag paired
-with the closest tag that point is within or which it precedes.  A
-second press moves point to the matching tag of the pair, allowing you
-to quickly jump back and forth between opening and closing tags.
+<a name="index-smail_003acomment"></a>
+<a name="index-mail-comment"></a>
+<a name="index-Hyperbole-mail-comment"></a>
+<p>In order to alert readers of your mail messages that you can handle
+Hyperbole mail buttons, you can set the variable, <code>smail:comment</code>,
+to an expression that automatically inserts a comment into each
+outgoing message to announce this fact.  See its documentation for
+technical details.  By default, no comment is added.  To have a
+comment line added to your outgoing message, add the following to
+to your <samp>~/.emacs</samp> file before the point at which you load
+Hyperbole.
 </p>
-<hr>
-<a name="Smart-Key-Argument-Selection"></a>
-<div class="header">
-<p>
-Next: <a href="#Smart-Key-Modifiers" accesskey="n" rel="next">Smart Key 
Modifiers</a>, Previous: <a href="#Smart-Key-Thing-Selection" accesskey="p" 
rel="prev">Smart Key Thing Selection</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
-</div>
-<a name="Smart-Key-Argument-Selection-1"></a>
-<h3 class="section">3.5 Smart Key Argument Selection</h3>
+<div class="lisp">
+<pre class="lisp">(setq smail:comment
+ (format &quot;Comments: GNU Hyperbole mail buttons accepted, v%s.\n&quot;
+          hyperb:version))
+</pre></div>
 
-<a name="index-Hyperbole-help"></a>
-<p>A prime design criterion of Hyperbole&rsquo;s user interface is that you
-should be able to see what an operation will do before using it.  The
-Assist Key typically shows you what a button or minibuffer menu item
-will do before you activate it.  Hyperbole also displays the result of
-directly selecting an argument value with the Action Key, to provide
-feedback as to whether the correct item has been selected.  A second
-press/click is necessary before an argument is accepted and processed.
+<p>This will produce the following line in outgoing messages:
 </p>
-<a name="index-argument-entry"></a>
-<a name="index-direct-selection"></a>
-<a name="index-double-click"></a>
-<p>Many Hyperbole commands prompt you for arguments.  The standard
-Hyperbole user interface has an extensive core of argument types that
-it recognizes.  Whenever Hyperbole is prompting you for an argument,
-it knows the type that it needs and provides some error checking to
-help you get it right.  More importantly, it allows you to press the
-Action Key within an entity that you want to use as an argument and it
-will grab the appropriate thing and show it to you at the input prompt
-within the minibuffer.  If you press (click with a mouse) the Action
-Key on the same thing again, it accepts the entity as the argument
-and moves on.  Thus, a double click registers a desired argument.
-Double-quoted strings, pathnames, mail messages, Info nodes, dired
-listings, buffers, numbers, completion items and so forth are all
-recognized at appropriate times.  All of the argument types mentioned
-in the documentation for the Emacs Lisp <code>interactive</code> function
-are recognized.  Experiment a little and you will quickly get used to
-this direct selection technique.
+<div class="example">
+<pre class="example">Comments: GNU Hyperbole mail buttons accepted, vX.X.X.
+</pre></div>
+
+<a name="index-file_002c-_002eemacs-2"></a>
+<p>where the X&rsquo;s indicate your Hyperbole version number.  You can cut
+this out of particular messages before you send them when need be.
 </p>
-<a name="index-completion-1"></a>
-<p>Wherever possible, standard Emacs completion is offered, as described in
-<a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Completion";>Completion</a>
 in <cite>the GNU Emacs Manual</cite>.  Remember to use <kbd>{?}</kbd>
-to see what your possibilities for an argument are.  Once you have a
-list of possible completions on screen, press the Action Key twice on
-any item to enter it as the argument.
+<a name="index-actype_002c-link_002dto_002dmail"></a>
+<p>A final mail-related facility provided by Hyperbole is the ability to
+save a pointer to a received mail message by creating an explicit button
+with a <code>link-to-mail</code> action type.  When prompted for the mail
+message to link to, if you press the Action Key within the message, the
+appropriate link parameters will be copied to the argument prompt, as
+described in <a href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a>.
 </p>
+
 <hr>
-<a name="Smart-Key-Modifiers"></a>
+<a name="Buttons-in-News"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Debugging" accesskey="n" rel="next">Smart Key 
Debugging</a>, Previous: <a href="#Smart-Key-Argument-Selection" accesskey="p" 
rel="prev">Smart Key Argument Selection</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Previous: <a href="#Buttons-in-Mail" accesskey="p" rel="prev">Buttons in 
Mail</a>, Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" 
rel="up">Utilizing Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Modifiers-1"></a>
-<h3 class="section">3.6 Smart Key Modifiers</h3>
+<a name="Buttons-in-News-1"></a>
+<h4 class="subsection">3.7.7 Buttons in News</h4>
 
-<p>For advanced users of Emacs and Hyperbole, there is 
<code>hmouse-mod-mode</code>,
-a global minor mode which turns the Action Mouse Key into a <tt 
class="key">Control</tt>
-modifier key and the Assist Key into a <tt class="key">Meta</tt> modifier key. 
 This
-allows for better keyboard energy balance across hands and is useful for
-reducing carpal tunnel stress.  It may also be used with a <em>chord
-keyboard</em> in one hand and a mouse in the other to point at things while
-simultaneously operating upon them.
+<a name="index-button-posting-1"></a>
+<a name="index-news-reader_002fposter"></a>
+<a name="index-posting-news"></a>
+<a name="index-Gnus-1"></a>
+<a name="index-USENET-1"></a>
+<a name="index-file_002c-hyperbole_002eel-1"></a>
+<a name="index-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts-1"></a>
+<p>Explicit buttons may be embedded within outgoing USENET news articles
+and may be activated from within the Gnus news reader.  Because this
+involves complex changes to news support functions, this feature is
+disabled by default.  Use the Cust/Msg-Toggle-Ebuts minibuffer menu
+item to enable it (enabling it for mail also enables it for news and
+vice versa).
 </p>
-<a name="index-hmouse_002dmod_002dmode"></a>
-<a name="index-hmouse_002dmod_002dmode-1"></a>
-<a name="index-Smart-Keys-as-modifiers"></a>
-<a name="index-control-key-modifier"></a>
-<a name="index-meta-key-modifier"></a>
-<a name="index-chord-keyboards"></a>
-<p>Use the <code>hmouse-mod-mode</code> global minor mode to enable this 
feature.
-<kbd>{C-u M-x hmouse-mod-mode <span class="key">RET</span>}</kbd> enables it 
and adds
-&lsquo;<samp>HyMod</samp>&rsquo; to the list of modeline minor modes.  
<kbd>{C-u 0 M-x
-hmouse-mod-mode <span class="key">RET</span>}</kbd> disables it and <kbd>{M-x
-hmouse-mod-mode <span class="key">RET</span>}</kbd> toggles it on and off.
+<p>Once enabled, all Hyperbole support should work just as it does when
+reading or sending mail.  See <a href="#Buttons-in-Mail">Buttons in Mail</a>.  
When reading news,
+buttons which appear in message <em>Subject</em> lines may be activated
+within the Gnus subject buffer as well as the article buffer.  When
+posting news, the *post-news* buffer is used for outgoing news
+articles rather than a mail-related buffer.
 </p>
-<p>When enabled, if the Action Key is held down while alpha characters
-are typed, they are translated into <tt class="key">Control</tt> keys instead. 
 The
-Assist Key translates them into <tt class="key">Meta</tt> keys.  When both 
Smart
-Keys are depressed, <tt class="key">Control-Meta</tt> keys are produced.  The
-commands bound to the characters produced are then run.  For example,
-Action Key + <kbd>{a}</kbd> runs the function for <kbd>{C-a}</kbd>.  If no
-keys are typed while the Smart Keys are down, they operate as
-normally under Hyperbole.
+<p>Remember that the articles you post do not contain the action type
+definitions used by the buttons, so the receiver must have these or she
+will receive an error when she activates the buttons.  You should also
+keep in mind that most USENET readers will not be using Hyperbole, so if
+they receive a news article containing explicit buttons, they will
+wonder what the button data at the end of the message is.  You should
+therefore limit distribution of such messages.  For example, if most
+people at your site read news with Gnus and use Hyperbole, it would be
+reasonable to embed buttons in postings to local newsgroups.
 </p>
-<p>The code for Smart Key modifiers can be found in
-<samp><code>${hyperb:dir}</code>/hmouse-mod.el</samp>.
+<a name="index-news-comment"></a>
+<p>In order to alert readers of your postings that they may send you
+personal replies with embedded Hyperbole buttons, the system inserts
+into news postings the same comment that is included within mail
+messages, if enabled.  See <a href="#Buttons-in-Mail">Buttons in Mail</a>, for 
details and an
+explanation of how to turn this feature on.
 </p>
-<hr>
-<a name="Smart-Key-Debugging"></a>
-<div class="header">
-<p>
-Previous: <a href="#Smart-Key-Modifiers" accesskey="p" rel="prev">Smart Key 
Modifiers</a>, Up: <a href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Smart-Key-Debugging-1"></a>
-<h3 class="section">3.7 Smart Key Debugging</h3>
 
-<p>Typically, <kbd>{C-h A}</kbd> and <kbd>{C-u C-h A}</kbd> which show Action 
and
-Assist Key help for the current context, are sufficient for seeing how
-the Smart Keys behave no matter where they are used.
-</p>
-<a name="index-C_002dh-h-c-d"></a>
-<a name="index-Smart-Key-debugging"></a>
-<a name="index-menu-item_002c-Cust_002fDebug_002dToggle"></a>
-<a name="index-debugging-Smart-Keys"></a>
-<a name="index-troubleshooting-Smart-Keys"></a>
-<a name="index-Messages-buffer"></a>
-<a name="index-logging-Smart-Key-behavior"></a>
-<p>However, if a Smart Key ever behaves differently than you think it
-should or if you want to test how the Smart Keys respond in a new
-context, then the Smart Key debugging flag may be of use.  You toggle
-it on and off with <kbd>{C-h h c d}</kbd> (minibuffer menu
-Cust/Debug-Toggle).  Once enabled, this displays a message in the
-minibuffer each time the Action or Assist Key is released, showing
-the context of the press and its associated action, so you can see
-exactly what is happening whenever you use a Smart Key.  These
-messages are all prefaced with &ldquo;(HyDebug)&rdquo; and logged to the
-&ldquo;*Messages*&rdquo; buffer for later viewing.
-</p>
-<a name="index-C_002dh-h-m-c"></a>
-<a name="index-C_002dh-h-m-r"></a>
-<p>If you do find a problem with the Smart Keys and want to report a bug,
-use <kbd>{C-h h m r}</kbd> to compose an email message to the bug-hyperbole
-list.  Hyperbole will automatically include all of the &ldquo;(HyDebug)&rdquo;
-messages from your current emacs session into your email.  Similarly,
-when you compose an email to the hyperbole-users mailing list
-with <kbd>{C-h h m c}</kbd>, these messages are also included.
-</p>
 
 <hr>
 <a name="Menus"></a>
 <div class="header">
 <p>
-Next: <a href="#HyControl" accesskey="n" rel="next">HyControl</a>, Previous: 
<a href="#Smart-Keys" accesskey="p" rel="prev">Smart Keys</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#HyControl" accesskey="n" rel="next">HyControl</a>, Previous: 
<a href="#Buttons" accesskey="p" rel="prev">Buttons</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Menus-1"></a>
 <h2 class="chapter">4 Menus</h2>
 
-<a name="index-InfoDock"></a>
-<a name="index-XEmacs-1"></a>
 <a name="index-Emacs-1"></a>
+<a name="index-Hyperbole-menubar-menu"></a>
+<a name="index-Hyperbole-pulldown-menu"></a>
 <a name="index-menu-use"></a>
+<a name="index-pulldown-menu"></a>
 <a name="index-menubar_002c-Hyperbole-menu"></a>
 <a name="index-menu-item_002c-Remove_002dThis_002dMenu"></a>
 <a name="index-removing-Hyperbole-menu"></a>
-<p>Under InfoDock, XEmacs, and Emacs, pulldown and popup menus are
-available to invoke Hyperbole commands, including those from the rolo
-and the outliner.  These menus operate like any other application menus
-and are fairly self-explanatory.  Use the <code>Remove-This-Menu</code>
-command on the Hyperbole menubar menu to get rid of the menu if you do
-not need it.  Invoking Hyperbole from the keyboard, as explained below,
-will add the menu back to the menubar.
+<p>Pulldown and popup menus are available to invoke Hyperbole commands,
+including those from the HyRolo and the Koutliner.  These menus operate
+like any other application menus and are fairly self-explanatory.  Use
+the <code>Remove-This-Menu</code> command on the Hyperbole menubar menu to
+get rid of the menu if you do not need it.  Invoking Hyperbole from
+the keyboard, as explained below, will add the menu back to the
+menubar.  Here is the Hyperbole Menubar Menu and its Find submenu.
 </p>
 <div class="float"><a name="image_003aHyperbole-Menu"></a>
 
-<div align="center"><img src="im/menu-hyperbole.png" alt="Hyperbole Menu">
-</div><div class="float-caption"><p><strong>Image 4.1: </strong>Hyperbole 
Menubar Menu</p></div></div><br>
+<img src="im/menu-hyperbole.png" alt="Hyperbole Menu">
+<div class="float-caption"><p><strong>Image 4.1: </strong>Hyperbole Menubar 
Menu</p></div></div>
+<div class="float"><a name="image_003aFind-Menu"></a>
+
+<img src="im/menu-find.png" alt="Find Menu">
+<div class="float-caption"><p><strong>Image 4.2: </strong>Find Menubar 
Menu</p></div></div><br>
 
+<a name="index-hyperbole_002dpopup_002dmenu"></a>
+<a name="index-popup-menu"></a>
+<a name="index-hyperbole-popup-menu"></a>
+<p>The Hyperbole popup menu, <code>hyperbole-popup-menu</code>, replicates the
+Hyperbole menubar menu.  It can be bound to a mouse key but is not
+bound to one by default.   It can also be assigned as the default
+Action or Assist Key action to use when no matching context is found.
+See <a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a>, for details.
+</p>
 <a name="index-minibuffer-menus"></a>
 <p>The rest of this section discusses only the
 specialized <em>minibuffer menus</em> which appear in the minibuffer
@@ -3158,20 +3607,31 @@ similar to key bindings.
 <a name="index-starting-Hyperbole"></a>
 <a name="index-Hyperbole_002c-starting"></a>
 <a name="index-Hyperbole-main-menu"></a>
-<p>The top-level Hyperbole menu is invoked from a key given in your
+<p>The top-level Hyperbole minibuffer menu is invoked from a key given in your
 <samp>hyperbole.el</samp> file (by default, <kbd>{C-h h}</kbd>) or with a click
-of the Action Mouse Key in the minibuffer.
+of the Action Mouse Key in the minibuffer when it is inactive.  It should
+look like this:
 </p>
+<div class="smallexample">
+<pre class="smallexample">Hy&gt;  Act Butfile/ Cust/ Doc/ Ebut/ Find/ Gbut/ 
Hist Ibut/ Kotl/ Msg/ Rolo/ Screen/ Win/
+</pre></div>
+
 <a name="index-submenus"></a>
 <a name="index-menu-help"></a>
 <a name="index-help_002c-menu-items"></a>
 <a name="index-menu-item-selection"></a>
 <a name="index-selection_002c-menu-items"></a>
-<p>All menu items are selected via the first character of their names
-(letter case does not matter) or with presses of the Action Key.  
&quot;/&quot; at
-the end of an item name indicates that it brings up a submenu.  A press
-of the Assist Key on an item displays help for the item, including the
-action that it performs.
+<a name="index-TAB"></a>
+<a name="index-M_002df"></a>
+<a name="index-Shift_002d"></a>
+<a name="index-M_002db"></a>
+<p>All menu items are selected via the first character of their names (letter
+case does not matter), with presses of the Action Key or by using
+{<tt class="key">TAB</tt>} or <kbd>{M-f}</kbd> to move forward an item, 
<kbd>{Shift-<span class="key">TAB</span>}</kbd>
+or <kbd>{M-b}</kbd> to move backward an item and {<tt class="key">RET</tt>} to 
select the
+current item.  A press of the Assist Key on an item displays help for the
+item, including the action that it performs.  &quot;/&quot; at the end of an 
item name
+indicates that it brings up a submenu.
 </p>
 <a name="index-C_002dt"></a>
 <a name="index-q"></a>
@@ -3187,24 +3647,6 @@ selecting an item by using <kbd>{q}</kbd> or pressing 
{<tt class="key">RET</tt>}
 the end of a menu.  <kbd>{C-g}</kbd> aborts from the minibuffer whether you
 are at a menu prompt or any other Hyperbole prompt.
 </p>
-<p>The top-level Hyperbole menu appears in the minibuffer and should look
-like this:
-</p>
-<div class="smallexample">
-<pre class="smallexample">Hy&gt;  Act Butfile/ Cust/ Doc/ Ebut/ Find/ Gbut/ 
Hist Ibut/ Kotl/ Msg/ Rolo/ Screen/ Win/
-</pre></div>
-
-<br>
-<a name="index-TAB"></a>
-<a name="index-M_002df"></a>
-<a name="index-Shift_002d"></a>
-<a name="index-M_002db"></a>
-<p>Each menu item may be selected by typing its first letter (case
-insensitive), by clicking the Action Mouse Key on it, or by
-using {<tt class="key">TAB</tt>} or <kbd>{M-f}</kbd> to move forward an
-item, <kbd>{Shift-<span class="key">TAB</span>}</kbd> or <kbd>{M-b}</kbd> to 
move backward an item
-and {<tt class="key">RET</tt>} to select the current item.
-</p>
 <p>The top-level Hyperbole minibuffer menu items serve the following purposes:
 </p>
 <dl compact="compact">
@@ -3248,7 +3690,7 @@ See <a href="#Customization">Customization</a>.
 keyboard key that Hyperbole binds for its commands, notably the Action
 Key.  See <a href="#Smart-Key-Bindings">Smart Key Bindings</a>, for more 
information.
 </p>
-<p>See <a href="#Global-Key-Bindings">Global Key Bindings</a> for complete 
descriptions of Hyperbole&rsquo;s
+<p>See <a href="#Global-Key-Bindings">Global Key Bindings</a>, for complete 
descriptions of Hyperbole&rsquo;s
 global key bindings, how to temporarily disable them and how to manage
 its overriding of local bindings that hide global Hyperbole keys.
 </p>
@@ -3306,6 +3748,7 @@ access to popular web search engines.
                    is given, limit search to only .el and .el.gz
                    files.  Set <code>hypb:rgrep-command</code> to change the
                    grep command or options.
+
 </li><li> LocateFiles -      Prompt for a pattern and display a list of all 
                    matching pathnames found throughout the file
                    system.  On Mac OS X, this uses Spotlight
@@ -3313,17 +3756,22 @@ access to popular web search engines.
                    the <code>locate</code> command.  Within the resulting
                    *Locate* buffer, Find/Grep-Files will find matching lines
                    within only these paths (files and directories).
+
 </li><li> MatchFileBuffers - Show numbered line matches for regexp in all 
file-based buffers.
+
 </li><li> OccurHere -        Show numbered line matches for regexp from this 
buffer.
+
 </li><li> RemoveLines -      Following point, remove all lines that match 
regexp.
+
 </li><li> SaveLines -        Following point, keep only lines that match 
regexp.
-</li><li> <a name="index-menu_002c-Find_002fWeb"></a>
+<a name="index-menu_002c-Find_002fWeb"></a>
 <a name="index-menu_002c-Web"></a>
 <a name="index-searching-the-web"></a>
 <a name="index-web-search"></a>
 <a name="index-C_002dc-_002f"></a>
 <a name="index-hyperbole_002dweb_002dsearch_002dbrowser_002dfunction"></a>
-Web/ -             Select a search engine and term and search with them.
+
+</li><li> Web/ -             Select a search engine and term and search with 
them.
                    Hyperbole binds the key <kbd>{C-c /}</kbd> for quick
                    access to this menu, if it is not already bound
                    prior to Hyperbole&rsquo;s initialization.  The 
Cust/Web-Search
@@ -3331,11 +3779,13 @@ Web/ -             Select a search engine and term and 
search with them.
                    which determines whether web search results are displayed
                    within Emacs or with an external web browser.  A short
                    video introduction to the Find/Web menu may be
-                   found at <a 
href="https://youtu.be/8lMlJed0-OM";>https://youtu.be/8lMlJed0-OM</a>. The
-                   Find/Web menu looks like this:
+                   found at <a 
href="https://youtu.be/8lMlJed0-OM";>https://youtu.be/8lMlJed0-OM</a>.
+
+<p>The Find/Web menu looks like this:
+</p>
 <div class="smallexample">
-<pre class="smallexample">Web&gt;  Amazon Bing Dictionary Elisp Facebook 
Google Hub(git) Images
-      Maps RFCs StackOverflow Twitter Wikipedia Youtube
+<pre class="smallexample">Web&gt;  Amazon Bing Dictionary Elisp Facebook 
Google Hub(git)
+      Images Maps RFCs StackOverflow Twitter Wikipedia Youtube
 </pre></div>
 </li></ul>
 
@@ -3344,13 +3794,12 @@ Web/ -             Select a search engine and term and 
search with them.
 </dd>
 <dt><strong>Gbut/</strong></dt>
 <dd><p>All global button commands.  Global buttons are accessed by name
-rather than by direct selection.  The window-system-based Hyperbole
-menu also includes an activation menu item for each global button.
-</p>
+rather than by direct selection.  The Hyperbole menubar menu also
+includes an activation menu item for each global button.
 <a name="index-menu-item_002c-Back_002dto_002dPrior_002dLocation"></a>
 <a name="index-menu-item_002c-Hist"></a>
 <a name="index-history"></a>
-</dd>
+</p></dd>
 <dt><strong>Hist</strong></dt>
 <dd><p>Return to previous positions in the button traversal history.
 </p>
@@ -3372,13 +3821,13 @@ a Hyperbole discussion mailing list.
 <a name="index-menu_002c-Kotl"></a>
 </dd>
 <dt><strong>Kotl/</strong></dt>
-<dd><p>Autonumbered, structured outliner and hyper-node manager commands.
+<dd><p>Autonumbered, structured outliner commands with per-node hyperlink 
anchors.
 See <a href="#Koutliner">Koutliner</a>.
 </p>
 <a name="index-menu_002c-Rolo"></a>
 </dd>
 <dt><strong>Rolo/</strong></dt>
-<dd><p>Hierarchical, multi-file rolo lookup and edit commands.
+<dd><p>Hierarchical, multi-file contact manager lookup and edit commands.
 See <a href="#HyRolo">HyRolo</a>.
 </p>
 <a name="index-menu_002c-Screen"></a>
@@ -3390,8 +3839,8 @@ See <a href="#HyRolo">HyRolo</a>.
 <a name="index-menu_002c-WinConfig"></a>
 </dd>
 <dt><strong>Win/</strong></dt>
-<dd><p>Window configuration management, such as adding and restoring window
-configurations by name.  See <a href="#Window-Configurations">Window 
Configurations</a>.
+<dd><p>Window configuration management commands, such as adding and restoring
+window configurations by name.  See <a href="#Window-Configurations">Window 
Configurations</a>.
 </p>
 </dd>
 </dl>
@@ -3408,6 +3857,8 @@ Next: <a href="#Koutliner" accesskey="n" 
rel="next">Koutliner</a>, Previous: <a
 <a name="index-windows-control"></a>
 <a name="index-frames-control"></a>
 <a name="index-HyControl"></a>
+<a name="index-invoking-HyControl"></a>
+<a name="index-starting-HyControl"></a>
 <a name="index-screen"></a>
 <a name="index-display"></a>
 <p>Hyperbole includes the fastest, easiest-to-use Emacs window and frame
@@ -3438,10 +3889,10 @@ f}</kbd>.
 <a name="index-submodes"></a>
 <p>Once in HyControl, your minibuffer window at the bottom of the
 selected frame will display a summary of keys you may use to adjust
-your windows until you press <kbd>{q}</kbd> or <kbd>{<span 
class="key">ESC</span>}</kbd> to quit from
-HyControl.  The key, <kbd>{t}</kbd>, will always toggle between controlling
-frames and windows, the <em>submodes</em> of HyControl, with the upper
-left of the minibuffer prompt showing which type of control is active.
+your windows until you press <kbd>{q}</kbd> to quit from HyControl.  The
+key, <kbd>{t}</kbd>, will always toggle between controlling frames and
+windows, the <em>submodes</em> of HyControl, with the upper left of the
+minibuffer prompt showing which type of control is active.
 </p>
 <a name="index-numeric-argument"></a>
 <a name="index-multiplier"></a>
@@ -3458,18 +3909,92 @@ and frame submodes.
 </p>
 <dl compact="compact">
 <dd>
+<a name="index-HyControl-help"></a>
 <a name="index-HyControl_002c-see-screen"></a>
+<a name="index-screen_002c-_003f"></a>
+<a name="index-_003f"></a>
+</dd>
+<dt><kbd>{?}</kbd></dt>
+<dd><p>Toggle whether HyControl displays key binding help in the minibuffer.
+</p>
+<a name="index-HyControl_002c-see-screen-1"></a>
 <a name="index-screen_002c-_002e"></a>
 <a name="index-_002e"></a>
 </dd>
 <dt><kbd>{.}</kbd></dt>
-<dd><p>Clear the argument to a value of 0.
+<dd><p>Clear the prefix argument to a value of 0.
 </p>
 <a name="index-screen_002c-0_002d9"></a>
 <a name="index-0_002d9"></a>
 </dd>
 <dt><kbd>{0-9}</kbd></dt>
-<dd><p>Multiply the argument by 10 and add the digit pressed.
+<dd><p>Multiply the prefix argument by 10 and add the digit pressed.
+</p>
+<a name="index-windows-grid"></a>
+<a name="index-grid-of-windows"></a>
+<a name="index-HyControl-windows-grid"></a>
+<a name="index-screen_002c-_0040"></a>
+<a name="index-_0040"></a>
+</dd>
+<dt><kbd>address@hidden</kbd></dt>
+<dd>
+<p>Display a <em>grid of windows</em> in the selected frame sized according to
+the prefix argument or via a prompted input.  Left digit of the argument is
+the number of grid rows and the right digit is the number of grid columns
+to display.
+</p>
+<div class="float"><a name="image_003a2x3_002dWindows_002dGrid"></a>
+
+<img src="im/wgrid-2x3.png" alt="2x3 Windows Grid">
+<div class="float-caption"><p><strong>Image 5.1: </strong>2x3 Windows 
Grid</p></div></div><br>
+
+<p>If the prefix argument is 0, prompt for a major mode whose buffers
+should be displayed first in the grid windows, then prompt for the grid size.
+</p>
+<p>Otherwise, prompt for the grid size if the prefix argument is an invalid
+size.
+</p>
+<a name="index-hycontrol_002ddisplay_002dbuffer_002dpredicate_002dlist"></a>
+<p>With a current buffer in Dired, Buffer Menu or IBuffer mode that
+contains marked items, the buffers associated with those items are
+displayed first in the grid (unless the prefix argument is 0).
+</p>
+<p>Then the most recently used buffers are displayed in each window, first
+selecting only those buffers which match any of the predicate expressions
+in <code>hycontrol-display-buffer-predicate-list</code>.  (The default 
predicate
+list chooses buffers with attached files).
+</p>
+<p>Then, if there are not enough buffers for all windows, the buffers that
+failed to match to any predicate are used. In all cases, buffers whose
+names start with a space are ignored.
+</p>
+<p>When done, this resets the persistent prefix argument to 1 to prevent
+following commands from using the often large grid size argument.
+</p>
+<p>If you ever need to experiment with different sized window grids, use
+<kbd>{M-x hycontrol-window-grid-repeatedly <span 
class="key">RET</span>}</kbd>.  It will
+repeatedly prompt you for a grid size and then display it.  When you
+are done, simply press <kbd>{<span class="key">RET</span>}</kbd> to exit.
+</p>
+<a name="index-frame-resize"></a>
+<a name="index-hycontrol_002dframe_002dwidths"></a>
+<a name="index-screen_002c-a"></a>
+<a name="index-a"></a>
+</dd>
+<dt><kbd>{a}</kbd></dt>
+<dd><p>Cycle through common width adjustments of a frame, such as 25% and
+50%. Widths are given in screen percentages by the list
+<code>hycontrol-frame-widths</code> and typically go from widest to
+narrowest.
+</p>
+<a name="index-hycontrol_002dframe_002dheights"></a>
+<a name="index-screen_002c-A"></a>
+<a name="index-A"></a>
+</dd>
+<dt><kbd>{A}</kbd></dt>
+<dd><p>Cycle through common height adjustments of a frame, such as 33.3% and
+75%.  Heights are given in screen percentages by the list
+<code>hycontrol-frame-heights</code> and typically go from tallest to shortest.
 </p>
 <a name="index-screen_002c-h"></a>
 <a name="index-h"></a>
@@ -3500,21 +4025,21 @@ character height).
 <a name="index-_0025"></a>
 </dd>
 <dt><kbd>{%}</kbd></dt>
-<dd><p>In FRAME mode, resize frame&rsquo;s height and width to about argument 
percent
+<dd><p>In FRAMES mode, resize frame&rsquo;s height and width to about argument 
percent
 of the screen size.
 </p>
 <a name="index-screen_002c-H"></a>
 <a name="index-H"></a>
 </dd>
 <dt><kbd>{H}</kbd></dt>
-<dd><p>In FRAME mode, resize frame&rsquo;s height to about argument percent of 
the
+<dd><p>In FRAMES mode, resize frame&rsquo;s height to about argument percent 
of the
 screen size.
 </p>
 <a name="index-screen_002c-W"></a>
 <a name="index-W"></a>
 </dd>
 <dt><kbd>{W}</kbd></dt>
-<dd><p>In FRAME mode, resize frame&rsquo;s width to about argument percent of 
the
+<dd><p>In FRAMES mode, resize frame&rsquo;s width to about argument percent of 
the
 screen size.
 </p>
 <a name="index-screen_002c-up"></a>
@@ -3535,25 +4060,18 @@ screen size.
 <dt><kbd>{right}</kbd></dt>
 <dd><p>Move frame in the specified direction by argument pixels.
 </p>
+<a name="index-frame-relocate"></a>
 <a name="index-screen_002c-c"></a>
 <a name="index-c"></a>
 </dd>
 <dt><kbd>{c}</kbd></dt>
-<dd><p>In FRAME mode, with each press, cycle the selected frame&rsquo;s 
position
-clockwise through the middle of edges and corners of the screen.  With
-an argument of 0, reset the cycle position to the upper left corner.
-Respects the pixel edge offsets returned by 
<code>hycontrol-get-screen-offsets</code>.
-</p>
-<a name="index-screen_002c-keypad-number"></a>
-<a name="index-keypad-number"></a>
-</dd>
-<dt><kbd>{keypad number}</kbd></dt>
-<dd><p>In FRAME mode, move the frame directly to the screen edge position given
-by the numeric keypad layout.  For example, 3 moves the frame to the
-bottom right corner and 8 moves it to the middle of the top edge.
-Keypad numeric keys do not adjust the argument.  Respects the pixel edge
-offsets returned by <code>hycontrol-get-screen-offsets</code>.
+<dd><p>With each press, cycle the selected frame&rsquo;s position clockwise 
through
+the middle of edges and corners of the screen.  With an argument of 0,
+reset the cycle position to the upper left corner.  Respects the pixel
+edge offsets returned by <code>hycontrol-get-screen-offsets</code>.
 </p>
+<a name="index-delete-frame"></a>
+<a name="index-frame_002c-delete"></a>
 <a name="index-screen_002c-d"></a>
 <a name="index-d"></a>
 </dd>
@@ -3566,6 +4084,18 @@ offsets returned by 
<code>hycontrol-get-screen-offsets</code>.
 <dd><p>Prompt for confirmation and then delete non-selected windows or frames
 based on mode.
 </p>
+<a name="index-frame_002c-lower"></a>
+<a name="index-lower-frame"></a>
+<a name="index-screen_002c-l"></a>
+<a name="index-l"></a>
+</dd>
+<dt><kbd>{l}</kbd></dt>
+<dd><p>In FRAMES mode, lower the selected frame below all other Emacs session 
frames.
+</p>
+<a name="index-frame_002c-other"></a>
+<a name="index-other-frame"></a>
+<a name="index-other-window"></a>
+<a name="index-window_002c-other"></a>
 <a name="index-screen_002c-o"></a>
 <a name="index-o"></a>
 </dd>
@@ -3577,6 +4107,36 @@ based on mode.
 <dt><kbd>{O}</kbd></dt>
 <dd><p>Select the next visible frame.
 </p>
+<a name="index-keypad"></a>
+<a name="index-numeric-keypad"></a>
+<a name="index-screen_002c-keypad-number"></a>
+<a name="index-keypad-number"></a>
+</dd>
+<dt><kbd>{keypad number}</kbd></dt>
+<dd><p>In FRAMES mode, move the frame directly to the screen edge position 
given
+by the numeric keypad layout.  For example, 3 moves the frame to the
+bottom right corner and 8 moves it to the middle of the top edge.
+Keypad numeric keys do not adjust the argument.  Respects the pixel edge
+offsets returned by <code>hycontrol-get-screen-offsets</code>.
+</p>
+<a name="index-virtual-numeric-keypad"></a>
+<a name="index-screen_002c-p"></a>
+<a name="index-p"></a>
+</dd>
+<dt><kbd>{p}</kbd></dt>
+<dd><p>Display a virtual numeric keypad for emulating a keypad on keyboards 
without one.
+Each digit key operates just as a numeric keypad key would.
+</p>
+<a name="index-frame_002c-raise"></a>
+<a name="index-raise-frame"></a>
+<a name="index-screen_002c-r"></a>
+<a name="index-r"></a>
+</dd>
+<dt><kbd>{r}</kbd></dt>
+<dd><p>In FRAMES mode, raise the selected frame above all other Emacs session 
frames.
+</p>
+<a name="index-window_002c-make"></a>
+<a name="index-make-window"></a>
 <a name="index-hycontrol_002dframe_002doffset"></a>
 <a name="index-screen_002c-_005b"></a>
 <a name="index-_005b"></a>
@@ -3592,6 +4152,8 @@ selected frame by the pixel amounts given by
 <dt><kbd>{]}</kbd></dt>
 <dd><p>Create a new sideways window or frame depending on mode.
 </p>
+<a name="index-frame-configuration"></a>
+<a name="index-window-configuration"></a>
 <a name="index-screen_002c-_0028"></a>
 <a name="index-_0028"></a>
 </dd>
@@ -3607,13 +4169,25 @@ configuration and wish to save it temporarily.
 <dd><p>After confirmation, restore the last saved window or frame configuration
 based on mode.
 </p>
+<a name="index-window_002c-clone-1"></a>
+<a name="index-clone-window-1"></a>
+<a name="index-hycontrol_002dkeep_002dwindow_002dflag"></a>
 <a name="index-screen_002c-f"></a>
 <a name="index-f"></a>
 </dd>
 <dt><kbd>{f}</kbd></dt>
-<dd><p>In WINDOW mode, delete the selected window and redisplay its buffer in a
-new frame.
-</p>
+<dd><p>Clone the selected window to a new similarly sized frame.
+<a name="index-screen_002c-F"></a>
+<a name="index-F"></a>
+</p></dd>
+<dt><kbd>{F}</kbd></dt>
+<dd><p>Clone the selected window to a new similarly sized frame.  Delete the
+original window unless there is only one window in the source frame or
+if <code>hycontrol-keep-window-flag</code> is non-nil.
+</p>
+<a name="index-frame_002c-to-edge"></a>
+<a name="index-frame_002c-percentage-resize"></a>
+<a name="index-resize-frame-percentage"></a>
 <a name="index-screen_002c-i"></a>
 <a name="index-screen_002c-j"></a>
 <a name="index-screen_002c-k"></a>
@@ -3630,35 +4204,57 @@ new frame.
 <dd><a name="index-m"></a>
 </dd>
 <dt><kbd>{m}</kbd></dt>
-<dd><p>In Frame mode, expand the selected frame to the associated screen edge
-based on key layout.  i=top, j=left, k=right and m=bottom screen edge.
-Respects the pixel edge offsets returned by
+<dd><p>Expand the selected frame to the respective screen edge based on U.S.
+keyboard key layout.  i=top, j=left, k=right and m=bottom screen edge.
+If already at the edge, adjusts the perpendicular dimension to ARG percent
+of the screen (50% by default if ARG is 1 or nil) but keep it at the screen
+edge.  Respects the pixel edge offsets returned by
 <code>hycontrol-get-screen-offsets</code>.
 </p>
+<a name="index-balance-windows"></a>
+<a name="index-windows_002c-balance"></a>
+<a name="index-equalize-windows"></a>
+<a name="index-windows_002c-equalize"></a>
 <a name="index-screen_002c-_003d"></a>
 <a name="index-_003d"></a>
 </dd>
 <dt><kbd>{=}</kbd></dt>
-<dd><p>Make the current frame&rsquo;s windows or all frames approximately the 
same
-size based on mode.  In FRAME mode, all visible frames are set to the
-size of the selected frame.
+<dd><p>After confirmation, in WINDOWS mode, make the current frame&rsquo;s 
windows
+approximately the same size.  In FRAMES mode, make all visible frames
+the size of the selected frame.
 </p>
+<a name="index-shrink-window"></a>
+<a name="index-window_002c-shrink"></a>
 <a name="index-screen_002c-_002d"></a>
 <a name="index-_002d"></a>
 </dd>
 <dt><kbd>{-}</kbd></dt>
-<dd><p>Make the selected window or frame (based on mode) as small as possible
-while still displaying it.
+<dd><p>In WINDOWS mode, shrink window to its smallest possible number of lines
+to display the entire buffer, if possible.  Otherwise or if the window
+is already displaying all of its lines, shrink it to about one line,
+if possible.
+</p>
+<a name="index-frame_002c-shrink"></a>
+<a name="index-shrink-frame"></a>
+<p>In FRAMES mode, make the frame as small as possible while still
+displaying it.
+</p>
+<a name="index-window_002c-maximize"></a>
+<a name="index-maximize-window"></a>
+<a name="index-frame_002c-maximize"></a>
+<a name="index-maximize-frame"></a>
 <a name="index-screen_002c-_002b"></a>
 <a name="index-_002b"></a>
-</p></dd>
+</dd>
 <dt><kbd>{+}</kbd></dt>
-<dd><p>Make the window or frame (based on mode) as large as possible.  In FRAME
-mode, a second press of this key restores its size to whatever it was
-prior to the first use of this command.
+<dd><p>Make the window or frame (based on mode) as large as possible.  In 
FRAMES
+mode, a second press of this key restores its size to whatever it was prior
+to the first use of this command.
 </p>
 <a name="index-burying"></a>
 <a name="index-unburying"></a>
+<a name="index-buffer_002c-bury"></a>
+<a name="index-buffer_002c-unbury"></a>
 <a name="index-screen_002c-b"></a>
 <a name="index-b"></a>
 </dd>
@@ -3673,16 +4269,19 @@ buffer.
 selected window.
 </p>
 <a name="index-swapping"></a>
+<a name="index-buffer_002c-swap-1"></a>
 <a name="index-screen_002c-_007e"></a>
 <a name="index-_007e"></a>
 </dd>
 <dt><kbd>{~}</kbd></dt>
 <dd><p>Swap two buffers between the selected window or frame and one other.
-In WINDOW mode, there must be precisely two windows in the selected
-frame.  In FRAME mode, the second frame mush have a single window.
+In WINDOWS mode, there must be precisely two windows in the selected
+frame.  In FRAMES mode, the second frame must have a single window.
 </p>
-<a name="index-zoom_002dfrm_002eel"></a>
 <a name="index-zooming"></a>
+<a name="index-window_002c-zoom"></a>
+<a name="index-frame_002c-zoom"></a>
+<a name="index-zoom_002dfrm_002eel"></a>
 <a name="index-screen_002c-Z"></a>
 <a name="index-Z"></a>
 </dd>
@@ -3698,20 +4297,26 @@ face size.  Zooming supports an argument of between 1 
and 9 (any other
 value sets the argument to 1).  The argument determines the number of
 sizes by which to zoom.
 </p>
-<p>FRAME mode zooming requires the separately available
-<samp>zoom-frm.el</samp> library.  WINDOW zooming works without this library.
+<p>FRAMES mode zooming requires the separately available
+<samp>zoom-frm.el</samp> library.  WINDOWS zooming works without this library.
 </p>
+<a name="index-HyControl-switch-modes"></a>
+<a name="index-HyControl-toggle-modes"></a>
+<a name="index-toggle-HyControl-mode"></a>
 <a name="index-screen_002c-t"></a>
 <a name="index-t"></a>
 </dd>
 <dt><kbd>{t}</kbd></dt>
-<dd><p>Toggle between WINDOW and FRAME submodes.
+<dd><p>Toggle between WINDOWS and FRAMES submodes.
 </p>
+<a name="index-HyControl-quit"></a>
+<a name="index-HyControl-exit"></a>
+<a name="index-quit-HyControl"></a>
+<a name="index-exit-HyControl"></a>
 <a name="index-screen_002c-q"></a>
-<a name="index-screen_002c-ESC"></a>
-<a name="index-q-or-ESC"></a>
+<a name="index-q-1"></a>
 </dd>
-<dt><kbd>{q or <span class="key">ESC</span>}</kbd></dt>
+<dt><kbd>{q}</kbd></dt>
 <dd><p>Quit from HyControl mode and restore normal key bindings.
 </p></dd>
 </dl>
@@ -3721,17 +4326,22 @@ sizes by which to zoom.
 settings.  You may ignore it if you are not familiar with Emacs
 variables and functions or with customized Emacs.
 </p>
+<a name="index-HyControl-edge-placement"></a>
+<a name="index-HyControl-corner-placement"></a>
+<p>HyControl allows placement of frames at screen edges and corners with the
+frame cycle command, <kbd>{c}</kbd>, and direct placement using the layout of 
the
+numeric keypad keys, if available, or the <kbd>p</kbd> virtual keypad key
+otherwise.  (Note that a screen may span multiple physical monitors).
+</p>
+<a name="index-HyControl-screen-edge-offsets"></a>
+<a name="index-screen_002c-edge-offsets"></a>
 <a name="index-hycontrol_002dscreen_002doffset_002dalist"></a>
 <a name="index-hycontrol_002dset_002dscreen_002doffsets"></a>
 <a name="index-hycontrol_002dget_002dscreen_002doffsets"></a>
-<p>HyControl allows placement of frames at screen edges and corners. with
-the frame cycle command, <kbd>{c}</kbd>, and direct placement matching the
-layout of the numeric keypad keys, if available.  (Note that a screen
-may span multiple physical monitors).  To prevent widgets
-and toolbars at the corners of the screen from being obscured,
-HyControl can offset each frame from each screen edge by a fixed
-number of pixels.  These offsets are specified by the variable,
-<code>hycontrol-screen-offset-alist</code> and can differ for each type of
+<p>To prevent widgets and toolbars at the corners of the screen from
+being obscured, HyControl can offset each frame from each screen edge
+by a fixed number of pixels.  These offsets are specified by the
+variable,<code>hycontrol-screen-offset-alist</code> and can differ for each 
type of
 screen; see its documentation for details.  If you change its value,
 then call <code>hycontrol-set-screen-offsets</code> to set any new offset
 values.  <code>hycontrol-get-screen-offsets</code> returns the list of offsets
@@ -3739,22 +4349,25 @@ in clockwise order starting from the top edge.  Both 
functions display a
 minibuffer message with the current offsets when called interactively.
 </p>
 <a name="index-hycontrol_002dframe_002doffset-1"></a>
-<a name="index-creating-frames"></a>
-<a name="index-frame-creation"></a>
+<a name="index-frame_002c-make"></a>
+<a name="index-make-frame"></a>
 <p>When HyControl creates a new frame, it automatically sizes it to the
 same size as the previously selected frame and offsets it from that
 frame by the (X . Y) number of pixels given in the variable,
 <code>hycontrol-frame-offset</code>.
 </p>
+<a name="index-file_002c-hycontrol_002eel"></a>
+<a name="index-hycontrol_002denable_002dframes_002dmode"></a>
+<a name="index-hycontrol_002denable_002d_002dwindows_002dmode"></a>
 <p>The source code for the HyControl system is in <samp>hycontrol.el</samp>
 within your Hyperbole source directory, given by <code>hyperb:dir</code>.
-Presently, you must edit the code to change any of HyControl&rsquo;s internal
-key bindings.  Eventually, standard local key bindings will be provided.
-You can however bind the two HyControl invocation commands to keys.
-These commands are, <code>hycontrol-windows</code> and 
<code>hycontrol-frames</code>.
+HyControl uses standard Emacs keymaps, so any keys can be rebound.
+Remember that Hyperbole typically binds <kbd>{C-c \}</kbd> to the windows
+control menu, but if you would like to bind either of the two
+HyControl minor mode invocation commands to keys, they are,
+<code>hycontrol-enable-windows-mode</code> and 
<code>hycontrol-enable-frames-mode</code>.
 Generally, you need only one of these bound to a key since when you
-press that key, the other command can be reached by pressing
-<kbd>{t}</kbd>.
+press that key, the other command can be reached by pressing <kbd>{t}</kbd>.
 </p>
 
 <hr>
@@ -3784,16 +4397,6 @@ See <a href="#Autonumbering">Autonumbering</a>.
 <p>Cells also store their time of creation and the user who created the
 cell.  User-defined attributes may also be added to cells.  See <a 
href="#Cell-Attributes">Cell Attributes</a>.
 </p>
-<a name="index-menu_002c-Outline"></a>
-<p>The outliner works under GNU Emacs, XEmacs or under InfoDock.  You can tell
-whether you are running a version of Emacs which supports the outliner by
-pressing <kbd>{C-h h}</kbd> to display the Hyperbole menu (<kbd>{q}</kbd> will
-quit).  If you see a &lsquo;<samp>Kotl/</samp>&rsquo; entry in the menu, then 
the outliner is
-available.  Otherwise, the outliner does not work with your version of
-Emacs, so this section of the manual will not be of interest to you.  (The
-same is true of the Hyperbole/Outline pulldown menu; if it appears, the
-outliner is available for use.)
-</p>
 <a name="index-file_002c-EXAMPLE_002ekotl"></a>
 <a name="index-menu_002c-Outline_002fExample"></a>
 <a name="index-C_002dh-h-k-e"></a>
@@ -3805,13 +4408,12 @@ editing and motion commands with this file since a 
personal copy is made
 when you invoke this command.
 </p>
 <p>See <a href="#Koutliner-Keys">Koutliner Keys</a>, for a full summary of the 
key bindings and
-commands available in the outliner.
+commands available in the Koutliner.
 </p>
 <div class="float"><a name="image_003aKoutliner"></a>
 
-<div align="center"><img src="im/koutliner.png" alt="Koutliner Screenshot">
-</div><div class="float-caption"><p><strong>Image 6.1: </strong>Koutliner 
Screenshot</p></div></div><br>
-
+<img src="im/koutliner.png" alt="Koutliner Screenshot">
+<div class="float-caption"><p><strong>Image 6.1: </strong>Koutliner 
Screenshot</p></div></div><br>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#Menu-Commands" 
accesskey="1">Menu Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -3860,7 +4462,7 @@ a number of major outliner commands:
 <a name="index-kotl_002dmode_003ashow_002dtree"></a>
 <a name="index-kotl_002dmode_003atop_002dcells"></a>
 <a name="index-kvspec_003aactivate"></a>
-<a name="index-menu_002c-Outline-1"></a>
+<a name="index-menu_002c-Outline"></a>
 <div class="example">
 <pre class="example">Menu Item    Command                    Description
 ====================================================================
@@ -3880,14 +4482,14 @@ Vspec        kvspec:activate            Set a view 
specification
 ====================================================================
 </pre></div>
 
-<p>The popup and menubar Koutline menu, as displayed on the following
-page, offers a more complete set of the Koutliner commands.  Experiment
-with the menu or read the following sections explaining commands.
+<p>The popup and menubar Koutline menu, as displayed here, offers a more
+complete set of the Koutliner commands.  Experiment with the menu or
+read the following sections explaining commands.
 </p>
 <div class="float"><a name="image_003aKoutline-Menu"></a>
 
-<div align="center"><img src="im/menu-koutline.png" alt="Koutline Menu">
-</div><div class="float-caption"><p><strong>Image 6.2: </strong>Koutline 
Menu</p></div></div><br>
+<img src="im/menu-koutline.png" alt="Koutline Menu">
+<div class="float-caption"><p><strong>Image 6.2: </strong>Koutline 
Menu</p></div></div><br>
 
 <hr>
 <a name="Creating-Outlines"></a>
@@ -3971,7 +4573,7 @@ to read aloud than equivalent legal ones.  They also 
simplify
 distinguishing between even and odd level labels because of the
 alternating character set.
 </p>
-<a name="index-C_002dc-C_002dl"></a>
+<a name="index-koutliner_002c-C_002dc-C_002dl"></a>
 <a name="index-label-type_002c-changing"></a>
 <p>You can change the labeling scheme used in a particular outline with
 the command <kbd>{C-c C-l}</kbd>.  A <kbd>{?}</kbd> will show all of the
@@ -3981,8 +4583,8 @@ permanent idstamps (permanent cell ids) are all available.
 <a name="index-label-separator_002c-changing"></a>
 <a name="index-cell_002c-label-separator"></a>
 <a name="index-outline_002c-label-separator"></a>
-<a name="index-C_002dc-M_002dl"></a>
-<a name="index-C_002du-C_002dc-M_002dl"></a>
+<a name="index-koutliner_002c-C_002dc-M_002dl"></a>
+<a name="index-koutliner_002c-C_002du-C_002dc-M_002dl"></a>
 <p>A cell label is normally followed by a period and a space, called the
 <em>label separator</em>, prior to the start of the cell contents.  You can
 change the separator for the current outline with <kbd>{C-c M-l}</kbd>.
@@ -4000,8 +4602,8 @@ initialization file, <samp>~/.emacs</samp>, substituting 
for &lsquo;your-separat
 </p>
 <a name="index-label-separator_002c-default"></a>
 <a name="index-kview_003adefault_002dlabel_002dseparator"></a>
-<div class="smalllisp">
-<pre class="smalllisp">(setq kview:default-label-separator 
&quot;your-separator&quot;)
+<div class="lisp">
+<pre class="lisp">(setq kview:default-label-separator 
&quot;your-separator&quot;)
 </pre></div>
 
 
@@ -4093,10 +4695,10 @@ Next: <a href="#Relocating-and-Copying" accesskey="n" 
rel="next">Relocating and
 <a name="Adding-and-Killing-1"></a>
 <h4 class="subsection">6.5.1 Adding and Killing</h4>
 
-<a name="index-C_002dj"></a>
-<a name="index-C_002du-c_002dj"></a>
-<a name="index-C_002dc-a"></a>
-<a name="index-C_002dc-p"></a>
+<a name="index-koutliner_002c-C_002dj"></a>
+<a name="index-koutliner_002c-C_002du-c_002dj"></a>
+<a name="index-koutliner_002c-C_002dc-a"></a>
+<a name="index-koutliner_002c-C_002dc-p"></a>
 <a name="index-cell_002c-adding"></a>
 <a name="index-cell_002c-creating"></a>
 <p><kbd>{C-j}</kbd> adds a new cell as a successor sibling of the
@@ -4107,10 +4709,10 @@ handled specially.  It adds a single cell as a child of 
the current cell.
 <kbd>{C-c a}</kbd> does the same thing.  <kbd>{C-c p}</kbd> adds the cell as
 the successor of the current cell&rsquo;s parent.
 </p>
-<a name="index-C_002dc-C_002dk"></a>
-<a name="index-C_002dc-k"></a>
-<a name="index-C_002du-C_002dc-k"></a>
-<a name="index-C_002dy"></a>
+<a name="index-koutliner_002c-C_002dc-C_002dk"></a>
+<a name="index-koutliner_002c-C_002dc-k"></a>
+<a name="index-koutliner_002c-C_002du-C_002dc-k"></a>
+<a name="index-koutliner_002c-C_002dy"></a>
 <a name="index-cell_002c-killing"></a>
 <a name="index-cell_002c-yanking-contents"></a>
 <a name="index-tree_002c-killing"></a>
@@ -4141,8 +4743,8 @@ child of the cell which precedes it in the outline.  
<em>Promotion</em> is
 the inverse operation.  Note that trees (cells and their entire
 substructure) are promoted and demoted, not individual cells.
 </p>
-<a name="index-TAB-1"></a>
-<a name="index-M_002dTAB"></a>
+<a name="index-koutliner_002c-TAB"></a>
+<a name="index-koutliner_002c-M_002dTAB"></a>
 <p>Trees may be demoted or promoted by pressing <tt class="key">TAB</tt> or
 <kbd>{M-<span class="key">TAB</span>}</kbd> (or <kbd>{<span 
class="key">SHIFT</span>-<span class="key">TAB</span>}</kbd>) respectively, as 
in
 most outliners today.  <kbd>{M-0 <span class="key">TAB</span>}</kbd> and 
<kbd>{M-0 M-<span class="key">TAB</span>}</kbd>
@@ -4154,7 +4756,7 @@ outline may not support movement of the tree by the 
number of levels
 requested, however, in which case the maximal possible adjustment is
 made.
 </p>
-<a name="index-M_002d1-TAB"></a>
+<a name="index-koutliner_002c-M_002d1-TAB"></a>
 <a name="index-inserting-tabs"></a>
 <a name="index-tabs_002c-inserting"></a>
 <a name="index-kotl_002dmode_003aindent_002dtabs_002dmode"></a>
@@ -4172,7 +4774,7 @@ Use <kbd>{M-1 <span class="key">TAB</span>}</kbd> to 
toggle the <tt class="key">
 <a name="index-tree_002c-copying"></a>
 <a name="index-tree_002c-moving"></a>
 <a name="index-Action-Key_002c-cell-argument"></a>
-<a name="index-Action-Key_002c-cell-argument-1"></a>
+<a name="index-koutliner_002c-Action-Key_002c-cell-argument"></a>
 <p>For maximum flexibility in rearranging outlines, there are commands that
 move or copy entire trees.  Each of these commands prompts for the label
 of the root cell to move or copy and for a second cell which specifies
@@ -4355,18 +4957,18 @@ paragraphs.
 <a name="index-paragraph_002c-filling"></a>
 <a name="index-tree_002c-filling"></a>
 <a name="index-margin"></a>
-<a name="index-M_002dq"></a>
-<a name="index-M_002dj"></a>
-<a name="index-C_002dc-M_002dq"></a>
-<a name="index-C_002dc-M_002dj"></a>
-<a name="index-C_002dM_002dq"></a>
-<a name="index-C_002dM_002dj"></a>
+<a name="index-koutliner_002c-M_002dq"></a>
+<a name="index-koutliner_002c-M_002dj"></a>
+<a name="index-koutliner_002c-C_002dc-M_002dq"></a>
+<a name="index-koutliner_002c-C_002dc-M_002dj"></a>
+<a name="index-koutliner_002c-C_002dM_002dq"></a>
+<a name="index-koutliner_002c-C_002dM_002dj"></a>
 <p><kbd>{M-q}</kbd> or <kbd>{M-j}</kbd> refills a paragraph within a
 cell so that its lines wrap within the current margin settings.
 <kbd>{C-c M-q}</kbd> or <kbd>{C-c M-j}</kbd> refills all paragraphs within a
 cell.  <kbd>{C-M-q}</kbd> or <kbd>{C-M-j}</kbd> refills all cells within a 
tree.
-See your InfoDock, XEmacs, or GNU Emacs manual for information on how
-to set the left and right margins.
+See the GNU Emacs manual for information on how to set the left and
+right margins.
 </p>
 <a name="index-kotl_002dmode_003arefill_002dflag"></a>
 <a name="index-refilling"></a>
@@ -4393,7 +4995,7 @@ Next: <a href="#Splitting-and-Appending" accesskey="n" 
rel="next">Splitting and
 following two commands, in contrast, exchange the locations of two
 individual cells.
 </p>
-<a name="index-C_002dc-e"></a>
+<a name="index-koutliner_002c-C_002dc-e"></a>
 <a name="index-cell_002c-transposing"></a>
 <a name="index-cell_002c-exchanging"></a>
 <a name="index-exchanging-cells"></a>
@@ -4401,13 +5003,13 @@ individual cells.
 <p><kbd>{C-c e}</kbd> prompts for two cell addresses and exchanges the cell
 locations.
 </p>
-<a name="index-C_002dc-t-1"></a>
+<a name="index-koutliner_002c-C_002dc-t"></a>
 <p><kbd>{C-c t}</kbd> does not prompt.  It exchanges the current
 and immediatly prior cell, regardless of their levels.  If there is no
 prior cell it exchanges the current and next cell.
 </p>
 <a name="index-cell_002c-mark-and-point"></a>
-<a name="index-M_002d0-C_002dc-t"></a>
+<a name="index-koutliner_002c-M_002d0-C_002dc-t"></a>
 <p><kbd>{M-0 C-c t}</kbd> exchanges the cells in which point and mark fall.
 <kbd>{C-c t}</kbd> with a non-zero numeric prefix argument, N, moves
 the current tree maximally past the next N visible cells.  If there are
@@ -4425,8 +5027,8 @@ Next: <a href="#Inserting-and-Importing" accesskey="n" 
rel="next">Inserting and
 
 <a name="index-splitting-a-cell"></a>
 <a name="index-cell_002c-splitting"></a>
-<a name="index-C_002dc-s"></a>
-<a name="index-C_002du-C_002dc-s"></a>
+<a name="index-koutliner_002c-C_002dc-s"></a>
+<a name="index-koutliner_002c-C_002du-C_002dc-s"></a>
 <p>One cell may be split into two adjacent sibling cells with <kbd>{C-c
 s}</kbd>.  This leaves the cell contents preceding point in the current
 cell, minus any trailing whitespace, and moves the contents following
@@ -4437,7 +5039,7 @@ original cell, rather than as its successor.
 <p>All cell attributes in the original cell are propagated to the new one,
 aside from the creation attributes and idstamp.
 </p>
-<a name="index-C_002dc-_002b"></a>
+<a name="index-koutliner_002c-C_002dc-_002b"></a>
 <a name="index-cell_002c-appending"></a>
 <a name="index-appending-to-a-cell"></a>
 <a name="index-attribute_002c-no_002dfill-1"></a>
@@ -4461,14 +5063,14 @@ Next: <a href="#Exporting" accesskey="n" 
rel="next">Exporting</a>, Previous: <a
 <a name="index-outline_002c-importing-into"></a>
 <a name="index-importing"></a>
 <a name="index-insertion"></a>
-<a name="index-C_002dx-i"></a>
+<a name="index-koutliner_002c-C_002dx-i"></a>
 <a name="index-outline_002c-foreign-file"></a>
 <p>The paragraphs of another buffer or file may be inserted into a koutline
 as a set of cells by using the <kbd>{C-x i}</kbd> command.  When prompted,
 you may use a buffer name or file name from which to insert;
 completion is provided for file names only.
 </p>
-<a name="index-C_002du-C_002dx-i"></a>
+<a name="index-koutliner_002c-C_002du-C_002dx-i"></a>
 <p>The elements from the original buffer are converted into kcells and
 inserted as the successors of the current cell.  If <kbd>{C-u C-x i}</kbd>
 is used, they are instead inserted as the initial children of the current
@@ -4607,6 +5209,9 @@ system yet, so that you can get effective views of an 
outline without
 editing it.  Some of these commands affect the current view spec.
 See <a href="#View-Specs">View Specs</a>.
 </p>
+
+<p>Here are the major commands for showing and hiding Koutline cells.
+</p>
 <dl compact="compact">
 <dd><a name="index-hide-tree"></a>
 <a name="index-tree_002c-show"></a>
@@ -4676,11 +5281,11 @@ between cells.
 </p></dd>
 </dl>
 
-<a name="index-Action-Key_002c-hide-or-show-cell-1"></a>
+<a name="index-koutliner_002c-Action-Key_002c-hide-or-show-cell"></a>
 <a name="index-Action-Key_002c-hide-or-show-cell"></a>
 <a name="index-cell_002c-collapse"></a>
 <a name="index-cell_002c-expand"></a>
-<a name="index-M_002dRET-1"></a>
+<a name="index-koutliner_002c-M_002dRET"></a>
 <p>A click or a press of the Action Key within a cell&rsquo;s body, but not on 
a
 Hyperbole button, toggles between hiding and showing the tree rooted at
 point.  Try it with either your mouse or with <kbd>{M-<span 
class="key">RET</span>}</kbd>.
@@ -4720,7 +5325,7 @@ presently supported and explains how to invoke a view 
spec.  There is no
 user-level means of adding your own view spec characters, so all other
 character codes are reserved for future use.
 </p>
-<a name="index-C_002dc-C_002dv"></a>
+<a name="index-koutliner_002c-C_002dc-C_002dv"></a>
 <a name="index-view-spec_002c-setting"></a>
 <a name="index-view-spec_002c-changing"></a>
 <a name="index-changing-the-view-spec"></a>
@@ -4738,10 +5343,10 @@ view spec is &lt;|ben&gt;.
 <dt><kbd>a</kbd></dt>
 <dd><p>Show all cell levels and all lines in cells.
 </p>
-<a name="index-C_002dc-b"></a>
+<a name="index-koutliner_002c-C_002dc-b"></a>
 <a name="index-blank-lines_002c-toggle"></a>
 <a name="index-view-spec_002c-blank-lines"></a>
-<a name="index-C_002dc-b-1"></a>
+<a name="index-koutliner_002c-C_002dc-b-1"></a>
 <a name="index-toggling-blank-lines"></a>
 </dd>
 <dt><kbd>b</kbd></dt>
@@ -4763,7 +5368,7 @@ lines.
 </dd>
 <dt><kbd>e</kbd></dt>
 <dd><p>Show ellipses when some content of a cell or its subtree is hidden.
-Turning this off may not work in Emacs25; nothing will happen.
+This cannot be turned off.
 </p>
 <a name="index-level-1"></a>
 <a name="index-cell_002c-hiding-levels"></a>
@@ -4822,7 +5427,7 @@ Drags</a>).  A <em>klink</em> is a special implicit link 
button, delimited by
 &lt;&gt; separators, that jumps to a koutline cell.  This section discusses
 klinks.
 </p>
-<a name="index-Action-Key_002c-klink-1"></a>
+<a name="index-koutliner_002c-Action-Key_002c-klink"></a>
 <a name="index-Action-Key_002c-klink"></a>
 <a name="index-klink_002c-activating"></a>
 <a name="index-klink-referent"></a>
@@ -4832,7 +5437,7 @@ window.  If the klink contains a view spec, it will be 
applied when
 the referent is displayed.
 </p>
 <a name="index-klink_002c-inserting"></a>
-<a name="index-C_002dc-l"></a>
+<a name="index-koutliner_002c-C_002dc-l"></a>
 <p>There are a number of easy ways to insert klinks into koutlines.  If you
 have mouse support under Hyperbole, simply click the Action Key within
 the indentation to the left of a cell text.  If you then double click on
@@ -4918,11 +5523,11 @@ that reference the cell.
 <dt><em>create-time</em></dt>
 <dd><p>The time at which the cell was created.  This is stored in a form that
 allows for easy data comparisons but is displayed in a human readable
-format, such as &lsquo;<samp>Jan 28 18:27:59 CST 2016</samp>&rsquo;.
+format, such as &lsquo;<samp>Jan 28 18:27:59 CST 2017</samp>&rsquo;.
 </p></dd>
 </dl>
 
-<a name="index-C_002dc-C_002di"></a>
+<a name="index-koutliner_002c-C_002dc-C_002di"></a>
 <a name="index-attribute_002c-adding"></a>
 <a name="index-attribute_002c-modifying"></a>
 <a name="index-attribute_002c-removing"></a>
@@ -4942,12 +5547,12 @@ commands from refilling the cell, even if the variable,
 you from invoking explicit commands that refill the cell.
 See <a href="#Filling">Filling</a>.
 </p>
-<a name="index-Assist-Key_002c-listing-attributes-1"></a>
+<a name="index-koutliner_002c-Assist-Key_002c-listing-attributes"></a>
 <a name="index-Assist-Key_002c-listing-attributes"></a>
 <a name="index-listing-attributes"></a>
 <a name="index-outline_002c-attribute-list"></a>
-<a name="index-C_002dc-h"></a>
-<a name="index-C_002du-C_002dc-h"></a>
+<a name="index-koutliner_002c-C_002dc-h"></a>
+<a name="index-koutliner_002c-C_002du-C_002dc-h"></a>
 <p>The attribute lists for the cells in the tree rooted at point may be
 inspected by pressing the Assist Key within the contents of a cell.
 <kbd>{C-c h}</kbd> prompts for a cell label and displays the cell&rsquo;s
@@ -5001,47 +5606,47 @@ Next: <a href="#Window-Configurations" accesskey="n" 
rel="next">Window Configura
 <p>Hyperbole includes a complete, advanced rolo system, HyRolo, for
 convenient management of hierarchical, record-oriented information.
 Most often this is used for contact management but it can quickly be
-adapted to most any record-oriented lookup task, for fast retrieval.
+adapted to most any record-oriented lookup task requiring fast retrieval.
 </p>
 <a name="index-rolo_002c-buttons-in"></a>
 <p>Hyperbole buttons may be included within rolo records and then
-manually activated whenever their records are retrieved.
+manually activated whenever their records are retrieved in a search.
 </p>
 <p>The following subsections explain use and basic customization of this
 tool.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Concepts" 
accesskey="1">Rolo Concepts</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Concepts" 
accesskey="1">HyRolo Concepts</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Menu" 
accesskey="2">Rolo Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Menu" 
accesskey="2">HyRolo Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Searching" 
accesskey="3">Rolo Searching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Searching" 
accesskey="3">HyRolo Searching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Keys" 
accesskey="4">Rolo Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Keys" 
accesskey="4">HyRolo Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Settings" 
accesskey="5">Rolo Settings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Settings" 
accesskey="5">HyRolo Settings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="Rolo-Concepts"></a>
+<a name="HyRolo-Concepts"></a>
 <div class="header">
 <p>
-Next: <a href="#Rolo-Menu" accesskey="n" rel="next">Rolo Menu</a>, Previous: 
<a href="#HyRolo" accesskey="p" rel="prev">HyRolo</a>, Up: <a href="#HyRolo" 
accesskey="u" rel="up">HyRolo</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#HyRolo-Menu" accesskey="n" rel="next">HyRolo Menu</a>, 
Previous: <a href="#HyRolo" accesskey="p" rel="prev">HyRolo</a>, Up: <a 
href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Concepts-1"></a>
-<h3 class="section">7.1 Rolo Concepts</h3>
+<a name="HyRolo-Concepts-1"></a>
+<h3 class="section">7.1 HyRolo Concepts</h3>
 
 <a name="index-rolo-file"></a>
 <a name="index-rolo-entry"></a>
 <p>HyRolo manages and searches rolo files.  A <em>rolo file</em> consists of
-an optional header which starts and ends with a line of equal signs
+an optional header that starts and ends with a line of equal signs
 (at least three equal signs starting at the beginning of a line),
-followed by any non-negative number of rolo records.  You must
-manually add a header to any rolo file if you want it to have one.
+followed by zero or more rolo records.  You must manually add a header
+to any rolo file if you want it to have one.
 </p>
 <p>Here is an example of a simple rolo file.  The date at the end is
-automatically added by the rolo system whenever a new record is added.
+automatically added by HyRolo whenever a new record is added.
 </p>
 <div class="example">
 <pre 
class="example">==================================================================
@@ -5050,7 +5655,7 @@ automatically added by the rolo system whenever a new 
record is added.
 ==================================================================
 *   Smith, John       &lt;address@hidden&gt; W708-555-2001  F708-321-1492
         Chief Ether Maintainer, HiHo Industries
-        05/24/2016
+        05/24/2017
 </pre></div>
 
 <p>We call rolo records, <em>entries</em>.  Entries begin with a delimiter
@@ -5061,11 +5666,11 @@ character than do their parents.  Top-level entries 
begin with a single
 </p>
 <p>Beyond this initial delimiter, entries are completely free-form text.
 It is best to use a &quot;lastname, firstname&quot; format, however, when 
adding
-contact entries into a rolo.  Then the rolo system will automatically
-keep your entries alphabetized as you enter them.  You&rsquo;ll also be able
-to resort the entries if you ever need.  This ordering is what the
-rolo will use if you accept the default entry with which it prompts
-you when adding a new entry.
+contact entries into a rolo.  Then HyRolo will automatically keep your
+entries alphabetized as you enter them.  Then you can sort the entries
+if you ever need.  This ordering is what the rolo will use if you
+accept the default entry with which it prompts you when adding a new
+entry.
 </p>
 <p>Any search done on the rolo scans the full text of each entry.  During
 a search, the rolo file header separator lines and anything in between
@@ -5091,12 +5696,12 @@ Searching for Manager turns up all Staffer entries.
 </p>
 
 <hr>
-<a name="Rolo-Menu"></a>
+<a name="HyRolo-Menu"></a>
 <div class="header">
 <p>
-Next: <a href="#Rolo-Searching" accesskey="n" rel="next">Rolo Searching</a>, 
Previous: <a href="#Rolo-Concepts" accesskey="p" rel="prev">Rolo Concepts</a>, 
Up: <a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#HyRolo-Searching" accesskey="n" rel="next">HyRolo 
Searching</a>, Previous: <a href="#HyRolo-Concepts" accesskey="p" 
rel="prev">HyRolo Concepts</a>, Up: <a href="#HyRolo" accesskey="u" 
rel="up">HyRolo</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Menu-1"></a>
+<a name="Rolo-Menu"></a>
 <h3 class="section">7.2 Rolo Menu</h3>
 
 <p>The Rolo submenu of the Hyperbole menu offers a full set of commands
@@ -5105,9 +5710,10 @@ so.
 </p>
 <div class="float"><a name="image_003aRolo-Menu"></a>
 
-<div align="center"><img src="im/menu-rolo.png" alt="Rolo Menu">
-</div><div class="float-caption"><p><strong>Image 7.1: </strong>Rolo 
Menu</p></div></div>
+<img src="im/menu-rolo.png" alt="HyRolo Menu">
+<div class="float-caption"><p><strong>Image 7.1: </strong>HyRolo 
Menu</p></div></div>
 <a name="index-rolo-menu"></a>
+<a name="index-HyRolo-menu"></a>
 <p>The Rolo/ menu entry on the Hyperbole minibuffer menu provides the same
 set of commands as the menubar menu, with more concise labels.
 The Rolo/ menu offers the following commands:
@@ -5127,13 +5733,13 @@ The Rolo/ menu offers the following commands:
 <div class="example">
 <pre class="example">Menu Item       Command                 Description
 =====================================================================
-Add             hyrolo-add              Adds a rolo entry
+Add             hyrolo-add              Adds a hyrolo entry
 Display         hyrolo-display-matches  Displays last matches again
-Edit            hyrolo-edit             Edits an existing rolo entry
-Info                                    Displays a rolo manual entry
-Kill            hyrolo-kill             Deletes a rolo entry
+Edit            hyrolo-edit             Edits an existing hyrolo entry
+Info                                    Displays a hyrolo manual entry
+Kill            hyrolo-kill             Deletes a hyrolo entry
 Mail            hyrolo-mail             Mails to an address at point
-Order           hyrolo-sort             Sorts all rolo levels
+Order           hyrolo-sort             Sorts all hyrolo levels
 RegexFind       hyrolo-grep             Finds all entries containing
                                           a regular expression
 StringFind      hyrolo-fgrep            Finds all entries containing
@@ -5142,7 +5748,7 @@ StringFind      hyrolo-fgrep            Finds all entries 
containing
 WordFind        hyrolo-word             Finds all entries containing
                                           a string of whole words
 Yank            hyrolo-yank             Inserts the first matching
-                                          rolo entry at point
+                                          hyrolo entry at point
 =====================================================================
 </pre></div>
 
@@ -5152,8 +5758,8 @@ The search is terminated whenever that number of matches 
is found.
 </p>
 <p>For any of the above commands that prompt for a name such as Edit or
 Add (not the Find commands), you may use the form parent/child to
-locate a child entry below a specific parent.  Hence, for a rolo which
-looked like so:
+locate a child entry below a specific parent.  Hence, for a HyRolo which
+looks like so:
 </p>
 <div class="example">
 <pre class="example">*    Company
@@ -5161,10 +5767,10 @@ looked like so:
 ***      Staffer
 </pre></div>
 
-<p>you could refer to the Staffer entry with the following hierarchical
+<p>you can refer to the Staffer entry with the following hierarchical
 notation, Company/Manager/Staffer.  This hierarchical
 notation is not used in search expressions since they search the
-entire rolo anyway.  Thus, &quot;Staffer&quot; as a search pattern will find 
an entry
+entire HyRolo anyway.  Thus, &quot;Staffer&quot; as a search pattern will find 
an entry
 containing &quot;Staffer&quot; at any level in a hierarchy, like so:
 </p>
 <div class="example">
@@ -5172,20 +5778,20 @@ containing &quot;Staffer&quot; at any level in a 
hierarchy, like so:
 </pre></div>
 
 <hr>
-<a name="Rolo-Searching"></a>
+<a name="HyRolo-Searching"></a>
 <div class="header">
 <p>
-Next: <a href="#Rolo-Keys" accesskey="n" rel="next">Rolo Keys</a>, Previous: 
<a href="#Rolo-Menu" accesskey="p" rel="prev">Rolo Menu</a>, Up: <a 
href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#HyRolo-Keys" accesskey="n" rel="next">HyRolo Keys</a>, 
Previous: <a href="#HyRolo-Menu" accesskey="p" rel="prev">HyRolo Menu</a>, Up: 
<a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Searching-1"></a>
-<h3 class="section">7.3 Rolo Searching</h3>
+<a name="HyRolo-Searching-1"></a>
+<h3 class="section">7.3 HyRolo Searching</h3>
 
 <a name="index-rolo-searching"></a>
 <a name="index-searching_002c-rolo"></a>
 <a name="index-menu-item_002c-RegexFind"></a>
 <a name="index-menu-item_002c-WordFind"></a>
 <a name="index-menu-item_002c-StringFind"></a>
-<p>See <a href="#Rolo-Menu">Rolo Menu</a>, for the list of rolo search 
commands.  In this
+<p>See <a href="#HyRolo-Menu">HyRolo Menu</a>, for the list of HyRolo search 
commands.  In this
 section, the menu item names from the minibuffer menu are used to
 refer to each command.
 </p>
@@ -5239,13 +5845,13 @@ you should contact.
 
 
 <hr>
-<a name="Rolo-Keys"></a>
+<a name="HyRolo-Keys"></a>
 <div class="header">
 <p>
-Next: <a href="#Rolo-Settings" accesskey="n" rel="next">Rolo Settings</a>, 
Previous: <a href="#Rolo-Searching" accesskey="p" rel="prev">Rolo 
Searching</a>, Up: <a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#HyRolo-Settings" accesskey="n" rel="next">HyRolo Settings</a>, 
Previous: <a href="#HyRolo-Searching" accesskey="p" rel="prev">HyRolo 
Searching</a>, Up: <a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Keys-1"></a>
-<h3 class="section">7.4 Rolo Keys</h3>
+<a name="HyRolo-Keys-1"></a>
+<h3 class="section">7.4 HyRolo Keys</h3>
 
 <a name="index-hyrolo-menu"></a>
 <a name="index-rolo-keys"></a>
@@ -5331,7 +5937,7 @@ to expand all entries in the buffer.
 <dt><kbd>{n}</kbd></dt>
 <dd><p>Move to the next entry at any level.
 <a name="index-rolo_002c-p"></a>
-<a name="index-p"></a>
+<a name="index-p-1"></a>
 </p></dd>
 <dt><kbd>{p}</kbd></dt>
 <dd><p>Move to the previous entry at any level.
@@ -5391,13 +5997,13 @@ rolo match buffer, use <kbd>{q}</kbd> to quit.  This 
will restore your
 current frame to its state prior to the rolo search.
 </p>
 <hr>
-<a name="Rolo-Settings"></a>
+<a name="HyRolo-Settings"></a>
 <div class="header">
 <p>
-Previous: <a href="#Rolo-Keys" accesskey="p" rel="prev">Rolo Keys</a>, Up: <a 
href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Previous: <a href="#HyRolo-Keys" accesskey="p" rel="prev">HyRolo Keys</a>, Up: 
<a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Settings-1"></a>
-<h3 class="section">7.5 Rolo Settings</h3>
+<a name="HyRolo-Settings-1"></a>
+<h3 class="section">7.5 HyRolo Settings</h3>
 
 <a name="index-hyrolo_002dfile_002dlist"></a>
 <a name="index-rolo_002c-personal"></a>
@@ -5413,23 +6019,53 @@ command on the rolo menu adds entries.
 </p>
 <p>Hyperbole releases earlier than 4.17 used a different file name for the
 personal rolo.  If such a file exists, you will be prompted to rename
-it whenever the Rolo system is loaded.
+it whenever the HyRolo system is loaded.
 </p>
 <a name="index-BBDB"></a>
 <a name="index-Big-Brother-DataBase"></a>
 <p>If you use the Big Brother DataBase (BBDB) Emacs package to capture
 email addresses and store contact information, the rolo automatically
-works with it.  If BBDB is loaded before the rolo, then your
+works with it.  If the BBDB package is loaded before HyRolo, then your
 <code>bbdb-file</code> of contacts is added as the second entry in
 <code>hyrolo-file-list</code> and will be searched automatically for any 
matches by
 the rolo find commands.  Presently there is no support for editing
 BBDB entries, just finding them.
 </p>
-<p>For finding matches in the BBDB file only, there are the commands
+<p>For finding matches within only BBDB, there are the commands
 <code>hyrolo-bbdb-fgrep</code> (string finding) and 
<code>hyrolo-bbdb-grep</code>
 (regular expression finding).  They may be bound to keys if desired.
 </p>
-<p>Below are the rest of the settings available with the rolo:
+<a name="index-Google-Contacts"></a>
+<a name="index-Gmail-Contacts"></a>
+<p>If you use Google/Gmail Contacts, you can configure the HyRolo to
+query your Google Contacts for matches.  First you must download and
+install the external <samp>google-contacts</samp> package using the Emacs
+Package Manager.  Then you must install the non-Emacs GNU Privacy
+Guard (GPG) package from <a href="https://gnupg.org";>https://gnupg.org</a> so 
that
+the <samp>gpg</samp> or <samp>gpg2</samp> executable is in your command-line
+search path.  Once these are in place, either restart Emacs or
+use <kbd>{M-x hyrolo-initialize-file-list <span class="key">RET</span>}</kbd> 
to add Google
+Contacts to your searches.
+</p>
+<p>When you next do a search, you will be prompted for your Google
+Contacts password and may also have to enter an authorization code
+that will be displayed on your screen.  After authorization, you may
+at times be re-prompted for your password.
+</p>
+<a name="index-hyrolo_002dgoogle_002dcontacts_002dfgrep"></a>
+<a name="index-hyrolo_002dgoogle_002dcontacts_002dgrep"></a>
+<p>For finding matches within only Google Contacts, there are the commands
+<code>hyrolo-google-contacts-fgrep</code> (string finding) and
+<code>hyrolo-google-contacts-grep</code> (regular expression finding).  They
+may be bound to keys if desired.
+</p>
+<a name="index-hyrolo_002dgoogle_002dcontacts_002dflag"></a>
+<p>Because Google can require frequent reauthorization to search your
+contacts, there is a flag, <code>hyrolo-google-contacts-flag</code>, which
+when set to &lsquo;<samp>nil</samp>&rsquo; disables searching of your Google 
Contacts.
+</p>
+
+<p>Below are the rest of the settings available with HyRolo:
 </p>
 <dl compact="compact">
 <dd>
@@ -5446,7 +6082,7 @@ the face which highlights search matches.
 <dt><code>hyrolo-kill-buffers-after-use</code>
 <a name="index-hyrolo_002dkill_002dbuffers_002dafter_002duse"></a>
 </dt>
-<dd><p>Rolo file buffers are left around after they are searched, on the
+<dd><p>HyRolo file buffers are left around after they are searched, on the
 assumption that another search is likely to follow within this emacs
 session.  You may wish to change this behavior with the following
 setting: <code>(setq hyrolo-kill-buffers-after-use t)</code>.
@@ -5522,16 +6158,16 @@ Next: <a href="#Developing-with-Hyperbole" 
accesskey="n" rel="next">Developing w
 <a name="index-restoring-windows"></a>
 <a name="index-saving-window-configurations"></a>
 <a name="index-file_002c-hywconfig_002eel"></a>
-<p>Hyperbole includes the <samp>hywconfig.el</samp> library which lets you 
save and
-restore window configurations, i.e. the layout of windows and buffers
-displayed within an emacs frame.  This is useful to save a particular
-working context and then to jump back to it at a later time during an
-emacs session.  It is also useful during demonstrations to display many
-informational artifacts all at once, e.g. all of the windows for a
-particular subsystem.  None of this information is stored between emacs
-sessions, so your window configurations will last through only a single
-session of use.  Each window configuration is tied to the emacs frame
-in which it is created.
+<p>This chapter explains Hyperbole&rsquo;s <samp>hywconfig.el</samp> library.  
It lets you
+save and restore window configurations, i.e. the layout of windows and
+buffers displayed within an emacs frame.  This is useful to save a
+particular working context and then to jump back to it at a later time
+during an emacs session.  It is also useful during demonstrations to
+display many informational artifacts all at once, e.g. all of the windows
+for a particular subsystem.  None of this information is stored between
+emacs sessions, so your window configurations will last through only a
+single session of use.  Each window configuration is tied to the emacs
+frame in which it is created.
 </p>
 <p>The hywconfig library offers two independent ways of managing window
 configurations.  The first way associates a name with each stored
@@ -5543,7 +6179,7 @@ the last entry is encountered.  Simply stop when the 
desired
 configuration is displayed.
 </p>
 <p>The Win/ menu entry on the Hyperbole top-level menu displays a menu of
-window configuration commands:
+hywconfig window configuration commands:
 </p>
 <pre class="verbatim">WinConfig&gt;  AddName  DeleteName  RestoreName  PopRing 
 SaveRing  YankRing
 </pre>
@@ -5573,13 +6209,11 @@ YankRing        hywconfig-yank-pop          Restore the 
next wconfig
 =====================================================================
 </pre></div>
 
-<p>The easiest method is to save and restore window configurations by
-name, but it requires that you input the chosen name from the
-keyboard.  Alternately, the ring commands permit saves and restores
-using only the mouse, if desired.  An earlier chapter (see <a 
href="#Smart-Keys">Smart Keys</a>) mentions how to save and restore window 
configurations with the
-Smart Keys.  Since the ring commands are a bit more complex than their
-by-name counterparts, the following paragraphs explain them in more
-detail.
+<p>The easiest method to save and restore window configurations shown here is
+by name, but it requires that you type the chosen name.  Instead, the ring
+commands permit saves and restores using only the mouse.  Since the ring
+commands are a bit more complex than their by-name counterparts, the
+following paragraphs explain them in more detail.
 </p>
 <a name="index-kill_002dring"></a>
 <p>HyWconfig creates a ring structure that operates just like the Emacs
@@ -5676,6 +6310,25 @@ any personal Hyperbole type definitions or key bindings 
you might have.
 It is run after Hyperbole support code is loaded but before Hyperbole is
 initialized, i.e. prior to keyboard and mouse bindings.
 </p>
+</dd>
+<dt><code>action-key-depress-hook</code>
+<a name="index-action_002dkey_002ddepress_002dhook"></a>
+</dt>
+<dt><code>assist-key-depress-hook</code>
+<a name="index-assist_002dkey_002ddepress_002dhook"></a>
+</dt>
+<dd><p>Run after an Action or Assist Mouse Key depress is detected.
+</p>
+</dd>
+<dt><code>action-key-release-hook</code>
+<a name="index-action_002dkey_002drelease_002dhook"></a>
+</dt>
+<dt><code>assist-key-release-hook</code>
+<a name="index-assist_002dkey_002drelease_002dhook"></a>
+</dt>
+<dd><p>Run after an Action or Assist Mouse Key release is detected, before
+any associated action is executed.
+</p>
 <a name="index-hbut_003acurrent"></a>
 </dd>
 <dt><code>action-act-hook</code>
@@ -6123,10 +6776,10 @@ Next: <a href="#Programmatic-Button-Creation" 
accesskey="n" rel="next">Programma
 <a name="Operational-and-Storage-Formats-1"></a>
 <h4 class="subsection">9.3.2 Operational and Storage Formats</h4>
 
-<a name="index-explicit-button_002c-formats"></a>
-<a name="index-explicit-button_002c-storage"></a>
+<a name="index-explicit-button-formats"></a>
+<a name="index-explicit-button-storage"></a>
 <a name="index-storage-manager"></a>
-<a name="index-button-attributes"></a>
+<a name="index-button-attributes-1"></a>
 <a name="index-hbut_003acurrent-1"></a>
 <p>Hyperbole uses a terse format to store explicit buttons and a more
 meaningful one to show users and to manipulate during editing.  The
@@ -6157,7 +6810,7 @@ Previous: <a href="#Operational-and-Storage-Formats" 
accesskey="p" rel="prev">Op
 <a name="Programmatic-Button-Creation-1"></a>
 <h4 class="subsection">9.3.3 Programmatic Button Creation</h4>
 
-<a name="index-explicit-button_002c-creation-1"></a>
+<a name="index-explicit-button_002c-creation"></a>
 <p>A common need when developing with Hyperbole is to create or to modify
 explicit buttons without user interaction.  For example, an application
 might require the addition of an explicit summary button to a file for
@@ -6290,10 +6943,6 @@ with a set of values, called arguments, is an 
<em>action</em>.
 Ordinarily the user presses a key which selects and activates a button.
 </p>
 </dd>
-<dt><b>Ange-ftp</b></dt>
-<dd><p>See <b>Tramp</b>.
-</p>
-</dd>
 <dt><b>Argument</b></dt>
 <dd><p>A button-specific value fed to a Hyperbole type specification when the
 button is activated.
@@ -6411,14 +7060,7 @@ Use the Action Key to select a button.
 <dd><p>The set of koutline cells which share a common parent cell and thus, 
are one
 level deeper than the parent.
 </p>
-</dd>
-<dt><b>Chord Keyboard</b></dt>
-<dd><p>A keyboard which supports pressing multiple keys simultaneously to 
produce
-a unique chord keystroke for issuing commands to a program.  In 
Engelbart&rsquo;s
-Augment system, mouse keys were used as modifiers for a 5-key chord
-keyboard to enable direct manipulation of objects on screen.  Hyperbole
-supports similar behavior with its <code>hmouse-mod-mode</code>.  See <a 
href="#Smart-Key-Modifiers">Smart Key Modifiers</a>.
-</p>
+
 </dd>
 <dt><b>Class</b></dt>
 <dd><p>A group of functions and variables with the same prefix in their names,
@@ -6451,10 +7093,6 @@ location.
 <dd><p>See <b>Hyperbole Environment</b>.
 </p>
 </dd>
-<dt><b>EFS</b></dt>
-<dd><p>See <b>Tramp</b>
-</p>
-</dd>
 <dt><b>Explicit Button</b></dt>
 <dd><p>A button created and managed by Hyperbole, associated with a specific
 action type.  By default, explicit buttons are delimited like
@@ -6486,6 +7124,10 @@ default, this is the same as the user&rsquo;s personal 
button file.
 <dt><b>Global Button File</b></dt>
 <dd><p>See <b>Button File, personal</b> and <b>Global Button</b>.
 </p>
+</dd>
+<dt><b>Grid</b></dt>
+<dd><p>See <b>Windows Grid</b>.
+</p>
 <a name="index-run_002dhooks"></a>
 </dd>
 <dt><b>Hook Variable</b></dt>
@@ -6524,7 +7166,8 @@ followed actually take you to the works themselves.
 <dt><b>HyRolo</b></dt>
 <dd><p>HyRolo, the Hyperbole record/contact manager, provides rapid lookup of
 multi-line, hierarchically ordered free form text records.  It can
-also lookup records from the Big Brother DataBase (BBDB) package.
+also lookup records from Google/GMail Contacts and the Big Brother
+DataBase (BBDB) package.
 </p>
 </dd>
 <dt><b>Implicit Button</b></dt>
@@ -6539,18 +7182,7 @@ to documents created and managed by tools other than 
Hyperbole, for
 example, programming documentation.  <b>Ibtype</b> is a synonym for
 implicit button type.  See also <b>system encapsulation</b>.
 </p>
-<a name="index-InfoDock-1"></a>
-</dd>
-<dt><b>InfoDock</b></dt>
-<dd><p>InfoDock is an integrated productivity toolset for software engineers
-and knowledge workers.  It is presently built atop XEmacs and is no
-longer maintained.  An older version from 1999 may be found at
-infodock.sf.net.  InfoDock has all the power of emacs, but with an
-easier to use and more comprehensive menu-based user interface.  Most
-objections people raise to using emacs have already been addressed in
-InfoDock.  InfoDock was meant for people who wanted a complete,
-pre-customized environment in one package.
-</p>
+
 </dd>
 <dt><b>Instance Number</b></dt>
 <dd><p>A colon prefaced number appended to the label of a newly created button
@@ -6614,14 +7246,19 @@ menus end with a forward slash, 
&lsquo;<samp>/</samp>&rsquo;.
 </p>
 </dd>
 <dt><b>The OO-Browser</b></dt>
-<dd><p>The OO-Browser is a multi-windowed, interactive object-oriented class 
browser
-similar in use to the well-known Smalltalk browsers.  It runs inside Emacs.
-It is unique in a number of respects foremost of which is that it works well
-with most major object-oriented languages in use today.  You can switch from
-browsing in one language to another in a few seconds.  It provides both
-textual views within an editor and graphical views under the X window system
-and Windows.  It includes support for C, C++, Common Lisp and its Object
-System (CLOS), Eiffel, Java, Objective-C, Python and Smalltalk.
+<dd><p>The GNU OO-Browser is a multi-windowed, interactive object-oriented 
class
+browser similar in use to the well-known Smalltalk browsers.  It runs
+inside Emacs.  It is unique in a number of respects foremost of which is
+that it works well with most major object-oriented languages in use today.
+You can switch from browsing in one language to another in a few seconds.
+It provides both textual views within an editor and graphical views under
+the X window system and Windows.  It includes support for C, C++, Common
+Lisp and its Object System (CLOS), Eiffel, Java, Objective-C, Python and
+Smalltalk.
+</p>
+<p>Hyperbole provides the mouse support for the OO-Browser, providing Smart
+Keys that utilize the OO-Browser&rsquo;s capabilities both when it is displayed
+on screen and when editing code.
 </p>
 </dd>
 <dt><b>Outline</b></dt>
@@ -6651,7 +7288,7 @@ button of that type is to be found at point.
 <dd><p>A file or directory on a system not shared within the local area 
network.
 The built-in Emacs library, <b>Tramp</b>, handles remote pathnames and
 Hyperbole uses it to enable viewing and editing of remote paths of the form:
-<samp>/&lt;user&gt;@&lt;host&gt;:&lt;path&gt;</samp> as well as web URLs.  Use 
the
+<samp>/&lt;protocol&gt;:&lt;user&gt;@&lt;host&gt;:&lt;path&gt;</samp> as well 
as web URLs.  Use the
 Cust/Find-File-URLs menu option to enable this feature.
 </p>
 </dd>
@@ -6718,12 +7355,12 @@ other system.
 </p>
 </dd>
 <dt><b>Tramp</b></dt>
-<dd><p>A remote file access library built-in to Emacs.  It does similar things 
as
-the older EFS and ange-ftp packages but uses more secure transfer and works
-with more types of hosts.  It allows one to use remote pathnames that are
-accessible via Internet protocols just like other pathnames, for example when
-finding a file.  Hyperbole recognizes pathnames of the form,
-<samp>/&lt;user&gt;@&lt;host&gt;:&lt;path&gt;</samp> and web URLs.
+<dd><p>A remote file access library built-in to Emacs.  It uses secure
+transfer and works with many types of hosts.  It allows you to use
+remote pathnames that are accessible via Internet protocols just like
+other pathnames, for example when finding a file.  Hyperbole
+recognizes pathnames of the form,
+<samp>/&lt;protocol&gt;:&lt;user&gt;@&lt;host&gt;:&lt;path&gt;</samp> and web 
URLs.
 </p>
 </dd>
 <dt><b>Tree</b></dt>
@@ -6754,6 +7391,12 @@ active for a buffer, the view spec appears within the 
modeline like so,
 Frames may contain many windows.
 </p>
 </dd>
+<dt><b>Windows Grid</b></dt>
+<dd><p>A feature of HyControl invoked with <kbd>address@hidden</kbd> which 
creates, lays out
+and populates a grid of a specified size of new Emacs windows, e.g. 4 rows
+by 3 columns, each displaying a different buffer chosen by a set of user
+specifiable filters.
+</p></dd>
 </dl>
 
 <hr>
@@ -6809,9 +7452,10 @@ several lines to your personal Emacs initialization 
file, <samp>~/.emacs</samp>.
 </p>
 <p>Below are the lines to add:
 </p>
-<div class="smalllisp">
-<pre class="smalllisp">(require 'package)
-(setq package-enable-at-startup nil) ;; Prevent double loading of libraries
+<div class="lisp">
+<pre class="lisp">(require 'package)
+;; Prevent double loading of libraries
+(setq package-enable-at-startup nil)
 (package-initialize)
 (unless (package-installed-p 'hyperbole)
   (package-refresh-contents)   
@@ -6848,9 +7492,11 @@ to quit from the menu.
 <li> use the Hyperbole entry on your menubar;
 
 </li><li> <a name="index-hyperbole"></a>
-type <kbd>{C-h h}</kbd> or <kbd>{M-x hyperbole <span 
class="key">RET</span>}</kbd> to bring up the Hyperbole minibuffer menu;
+type <kbd>{C-h h}</kbd> or <kbd>{M-x hyperbole <span 
class="key">RET</span>}</kbd> to display the Hyperbole minibuffer menu;
 
-</li><li> use a specific Hyperbole command such as the Action Key, 
<kbd>{M-<span class="key">RET</span>}</kbd>, on a pathname to display the 
associated file or directory.
+</li><li> use a specific Hyperbole command, for example, a press of
+<kbd>{M-<span class="key">RET</span>}</kbd> on a pathname to display the 
associated file or
+directory.
 </li></ul>
 
 <p>Use <kbd>{C-h h d d}</kbd> for an interactive demonstration of standard 
Hyperbole
@@ -6919,8 +7565,8 @@ below the Hyperbole menubar menu, as seen here.
 </p>
 <div class="float"><a name="image_003aCustomize-Menu"></a>
 
-<div align="center"><img src="im/menu-customization.png" alt="Hyperbole 
Customize Menu">
-</div><div class="float-caption"><p><strong>Image B.1: </strong>Hyperbole 
Customize Menu</p></div></div><br>
+<img src="im/menu-customization.png" alt="Hyperbole Customize Menu">
+<div class="float-caption"><p><strong>Image B.1: </strong>Hyperbole Customize 
Menu</p></div></div><br>
 
 <p>Alternatively, the minibuffer-based menu, Cust/ may be used.
 </p>
@@ -6932,10 +7578,9 @@ However, if you like to customize your environment 
extensively, there
 are many additional Hyperbole customization options that may be 
 changed with the Emacs customization interface,
 see <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Easy-Customization";>Easy
 Customization Interface</a> in <cite>the GNU
-Emacs Manual</cite>.
-When you save any changes within this interface, the changes are saved
-permanently to your personal Emacs initialization file and are available
-in future Emacs sessions.
+Emacs Manual</cite>.  When you save any changes within this interface, the
+changes are saved permanently to your personal Emacs initialization
+file and are available in future Emacs sessions.
 </p>
 <a name="index-customize_002dbrowse"></a>
 <a name="index-menu-item_002c-Cust_002fAll_002dOptions"></a>
@@ -6943,7 +7588,7 @@ in future Emacs sessions.
 <p>Use Cust/All-Options <kbd>{C-h h c a}</kbd> to display an expandable tree of
 customizable Hyperbole options.  Hyperbole&rsquo;s customizations are
 further grouped into several sub-categories, one for the Koutliner,
-one for the Rolo, etc.  You can select either an entire category or a
+one for the HyRolo, etc.  You can select either an entire category or a
 specfic option and they will appear in another window for editing.
 Simply follow the instructions on screen and then press the &ldquo;Apply
 and Save&rdquo; button to make any changes permanent.
@@ -6958,114 +7603,98 @@ and press <tt class="key">RET</tt> to edit it.
 be of interest to users.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Web-Search-Engines" 
accesskey="1">Web Search Engines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Referent-Display" 
accesskey="1">Referent Display</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Using-URLs-with-Find_002dFile" accesskey="2">Using URLs with 
Find-File</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Internal-Viewers" 
accesskey="2">Internal Viewers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Internal-Viewers" 
accesskey="3">Internal Viewers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#External-Viewers" 
accesskey="3">External Viewers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#External-Viewers" 
accesskey="4">External Viewers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Link-Variable-Substitution" 
accesskey="4">Link Variable Substitution</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Invisible-Text-Searches" 
accesskey="5">Invisible Text Searches</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Web-Search-Engines" 
accesskey="5">Web Search Engines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Link-Variable-Substitution" 
accesskey="6">Link Variable Substitution</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Using-URLs-with-Find_002dFile" accesskey="6">Using URLs with 
Find-File</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Button-Colors" 
accesskey="7">Button Colors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Invisible-Text-Searches" 
accesskey="7">Invisible Text Searches</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Button-Colors" 
accesskey="8">Button Colors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="Web-Search-Engines"></a>
+<a name="Referent-Display"></a>
 <div class="header">
 <p>
-Next: <a href="#Using-URLs-with-Find_002dFile" accesskey="n" rel="next">Using 
URLs with Find-File</a>, Previous: <a href="#Customization" accesskey="p" 
rel="prev">Customization</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Internal-Viewers" accesskey="n" rel="next">Internal 
Viewers</a>, Previous: <a href="#Customization" accesskey="p" 
rel="prev">Customization</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Web-Search-Engines-1"></a>
-<h4 class="subsection">B.3.1 Web Search Engines</h4>
+<a name="Referent-Display-1"></a>
+<h4 class="subsection">B.3.1 Referent Display</h4>
+<a name="index-hpath_003adisplay_002dwhere"></a>
+<a name="index-referent-display"></a>
+<a name="index-link-display"></a>
+<a name="index-display-where"></a>
+<a name="index-where-to-display"></a>
+<p>Hyperbole lets you control where link referents are displayed and even
+what Emacs function or external program is used to display them.
+There are three categories of referents, each with its own display
+setting:
+</p><div class="example">
+<pre class="example">Referent Category             Variable Setting
+========================================================================
+Internal Standard Display     hpath:display-where
+Internal Custom Display       hpath:internal-display-alist
+External Display              hpath:external-display-alist
 
-<a name="index-menu_002c-Find_002fWeb-1"></a>
-<a name="index-menu_002c-Web-1"></a>
-<a name="index-menu_002c-Cust_002fWeb_002dSearch"></a>
-<a name="index-C_002dh-h-c-w"></a>
-<a name="index-C_002dh-h-f-w"></a>
-<a name="index-hyperbole_002dweb_002dsearch_002dalist"></a>
-<a name="index-search-engines-menu"></a>
-<a name="index-web-search-menu"></a>
-<a name="index-customizing-web-search-menu"></a>
-<p>The Find/Web menu offers quick access to major web search engines.  It
-is typically bound to <kbd>{C-c /}</kbd> or if not, then <kbd>{C-h h f 
w}</kbd> is
-always available.  Your standard web browser will be used to return
-the search results.  You can change which browser is used
-with <kbd>{C-h h c w}</kbd>, the Cust/Web-Search menu. Advanced users can
-change the search engines listed in the Find/Web menu with <kbd>{M-x
-customize-variable <span class="key">RET</span> hyperbole-web-search-alist 
<span class="key">RET</span>}</kbd>.
-Changes are automatically reflected in the Hyperbole menus once applied.
-Remember each search engine name must begin with a unique letter and
-each URL must have a %s format field indicating where to place the web
-search term when a search is performed.
-</p>
-<p>Advanced users can
-change the search engines listed by editing the option,
-<code>hyperbole-web-search-alist</code>, with <kbd>{M-x customize-variable
-<span class="key">RET</span> hyperbole-web-search-alist <span 
class="key">RET</span>}</kbd>.  Remember each search engine name
-must begin with a unique letter and each URL must have a %s format
-field indicating where to place the web search term when a search is
-performed.
-</p>
-<hr>
-<a name="Using-URLs-with-Find_002dFile"></a>
-<div class="header">
-<p>
-Next: <a href="#Internal-Viewers" accesskey="n" rel="next">Internal 
Viewers</a>, Previous: <a href="#Web-Search-Engines" accesskey="p" 
rel="prev">Web Search Engines</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Using-URLs-with-Find_002dFile-1"></a>
-<h4 class="subsection">B.3.2 Using URLs with Find-File</h4>
+</pre></div>
 
-<a name="index-find_002dfile"></a>
-<a name="index-find_002dfile_002c-browsing-URLs"></a>
-<a name="index-browsing-URLs"></a>
-<a name="index-URLs_002c-using-with-find_002dfile"></a>
-<a name="index-web-pages_002c-displaying"></a>
-<a name="index-remote-pathnames"></a>
-<p>Hyperbole always recognizes URLs within buffers when the Action Key is
-pressed on them.  But sometimes it is useful to enter a URL at a prompt
-and have it displayed.  Hyperbole can recognize ftp and www URLs given to
-the <code>find-file</code> command (or any other <code>find-file-*</code> 
commands).
-But because there is added overhead with this feature, it is not enabled by
-default.
+<a name="index-menu_002c-Cust_002fReferents"></a>
+<a name="index-C_002dh-h-c-r"></a>
+<p>Regular file links are displayed in an Emacs window specified by the
+<code>hpath:display-where</code> setting which may be changed with the 
Cust/Referents
+<kbd>{C-h h c r}</kbd> menu.
 </p>
-<a name="index-menu-item_002c-Find_002dFile_002dURLs"></a>
-<a name="index-menu-item_002c-Find_002dFile_002dAccepts_002dURLs"></a>
-<p>To enable the feature, use the Hyperbole menu item Cust/Find-File-URLs
-(or Find-File-Accepts-URLs on the Hyperbole/Customize pulldown
-menu).  Either of these toggles acceptance of URLs.  When enabled the
-string, URLs, appears in the parenthesized minor-mode section of the
-modeline.
+<p>Available options are:
 </p>
-<a name="index-hpath_003afind_002dfile_002durls_002dmode"></a>
-<a name="index-enabling-URLs-in-find_002dfile"></a>
-<a name="index-browsing-URLs-in-find_002dfile"></a>
-<p>To enable this feature each time you start the editor, add the following to
-your personal initialization file: <code>(hpath:find-file-urls-mode 1)</code>.
+<dl compact="compact">
+<dt><em>&bull; Any-Frame</em></dt>
+<dd><p>Display in the selected window of another existing frame
+</p></dd>
+<dt><em>&bull; Current-Win</em></dt>
+<dd><p>Display in the selected (current) window
+</p></dd>
+<dt><em>&bull; Diff-Frame-One-Win</em></dt>
+<dd><p>Display in the selected window of another existing frame, deleting its 
other windows
+</p></dd>
+<dt><em>&bull; New-Frame</em></dt>
+<dd><p>Display in a new single window frame
+</p></dd>
+<dt><em>&bull; Other-Win</em></dt>
+<dd><p>Display in another, possibly new window of the selected frame (this is
+the default)
+</p></dd>
+<dt><em>&bull; Single-Win</em></dt>
+<dd><p>Display in  a window of the selected frame and delete its other windows
+</p></dd>
+</dl>
+
+<p>Alternatively, you can use the Hyperbole menubar menu as shown here:
 </p>
-<a name="index-abbreviated-URLs"></a>
-<a name="index-URLs_002c-abbreviated"></a>
-<a name="index-Tramp-1"></a>
-<p>Both full URLs and abbreviated ones, like <samp>www.gnu.org</samp>, are
-recognized.  File name completion does not work with URLs thus you
-have to type or paste in the entire URL.  This feature will work only
-if you have the Tramp Emacs Lisp package installed; if you don&rsquo;t have
-Tramp, an error message will be displayed when you try to enable
-find-file URLs.
+<div class="float"><a name="image_003aMenu_002dDisplay_002dReferents"></a>
+
+<img src="im/menu-display-referents.png" alt="Display Referents Menu">
+<div class="float-caption"><p><strong>Image B.2: </strong>Display Referents 
Menu</p></div></div><br>
+
+<p>Continue reading the next sections for information on custom Internal
+and External Viewers for link referencts.
 </p>
 <hr>
 <a name="Internal-Viewers"></a>
 <div class="header">
 <p>
-Next: <a href="#External-Viewers" accesskey="n" rel="next">External 
Viewers</a>, Previous: <a href="#Using-URLs-with-Find_002dFile" accesskey="p" 
rel="prev">Using URLs with Find-File</a>, Up: <a href="#Customization" 
accesskey="u" rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#External-Viewers" accesskey="n" rel="next">External 
Viewers</a>, Previous: <a href="#Referent-Display" accesskey="p" 
rel="prev">Referent Display</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Internal-Viewers-1"></a>
-<h4 class="subsection">B.3.3 Internal Viewers</h4>
+<h4 class="subsection">B.3.2 Internal Viewers</h4>
 <a name="index-hpath_003ainternal_002ddisplay_002dalist"></a>
 <a name="index-file-display-function"></a>
 <a name="index-display-function"></a>
@@ -7106,10 +7735,10 @@ external, window-system specific viewers.
 <a name="External-Viewers"></a>
 <div class="header">
 <p>
-Next: <a href="#Invisible-Text-Searches" accesskey="n" rel="next">Invisible 
Text Searches</a>, Previous: <a href="#Internal-Viewers" accesskey="p" 
rel="prev">Internal Viewers</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Link-Variable-Substitution" accesskey="n" rel="next">Link 
Variable Substitution</a>, Previous: <a href="#Internal-Viewers" accesskey="p" 
rel="prev">Internal Viewers</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="External-Viewers-1"></a>
-<h4 class="subsection">B.3.4 External Viewers</h4>
+<h4 class="subsection">B.3.3 External Viewers</h4>
 <a name="index-hpath_003aget_002dexternal_002ddisplay_002dalist"></a>
 <a name="index-hpath_003aexternal_002ddisplay_002dalist_002dmacos"></a>
 <a name="index-hpath_003aexternal_002ddisplay_002dalist_002dmswindows"></a>
@@ -7151,36 +7780,13 @@ set of external viewer associations when none are found
 within <code>hpath:get-external-display-alist</code>.
 </p>
 <hr>
-<a name="Invisible-Text-Searches"></a>
-<div class="header">
-<p>
-Next: <a href="#Link-Variable-Substitution" accesskey="n" rel="next">Link 
Variable Substitution</a>, Previous: <a href="#External-Viewers" accesskey="p" 
rel="prev">External Viewers</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Invisible-Text-Searches-1"></a>
-<h4 class="subsection">B.3.5 Invisible Text Searches</h4>
-
-<a name="index-menu-item_002c-Isearch_002dInvisible"></a>
-<a name="index-menu-item_002c-Toggle_002dIsearch_002dInvisible"></a>
-<a name="index-isearch"></a>
-<a name="index-search-1"></a>
-<p>This is largely for outline modes such as the Koutliner.  By default,
-character-by-character interactive search on <kbd>{C-s}</kbd> will search
-through invisible/hidden text, making the text temporarily visible
-until point moves past that hidden part.  When a search match is
-selected, the surrounding text remains visible.
-</p>
-<p>This command toggles that setting (turns it off if a prefix
-argument less than or equal to 0 is given) and makes searches look at
-only visible text.
-</p>
-<hr>
 <a name="Link-Variable-Substitution"></a>
 <div class="header">
 <p>
-Next: <a href="#Button-Colors" accesskey="n" rel="next">Button Colors</a>, 
Previous: <a href="#Invisible-Text-Searches" accesskey="p" rel="prev">Invisible 
Text Searches</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Web-Search-Engines" accesskey="n" rel="next">Web Search 
Engines</a>, Previous: <a href="#External-Viewers" accesskey="p" 
rel="prev">External Viewers</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Link-Variable-Substitution-1"></a>
-<h4 class="subsection">B.3.6 Link Variable Substitution</h4>
+<h4 class="subsection">B.3.4 Link Variable Substitution</h4>
 <a name="index-hpath_003avariables"></a>
 <a name="index-environment-variables"></a>
 <a name="index-Emacs-Lisp-variables"></a>
@@ -7205,43 +7811,170 @@ you in deciding whether or not to modify the value of
 <code>hpath:variables</code>.
 </p>
 <hr>
+<a name="Web-Search-Engines"></a>
+<div class="header">
+<p>
+Next: <a href="#Using-URLs-with-Find_002dFile" accesskey="n" rel="next">Using 
URLs with Find-File</a>, Previous: <a href="#Link-Variable-Substitution" 
accesskey="p" rel="prev">Link Variable Substitution</a>, Up: <a 
href="#Customization" accesskey="u" rel="up">Customization</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Web-Search-Engines-1"></a>
+<h4 class="subsection">B.3.5 Web Search Engines</h4>
+
+<a name="index-menu_002c-Find_002fWeb-1"></a>
+<a name="index-menu_002c-Web-1"></a>
+<a name="index-menu_002c-Cust_002fWeb_002dSearch"></a>
+<a name="index-C_002dh-h-c-w"></a>
+<a name="index-C_002dh-h-f-w"></a>
+<a name="index-hyperbole_002dweb_002dsearch_002dalist"></a>
+<a name="index-search-engines-menu"></a>
+<a name="index-web-search-menu"></a>
+<a name="index-customizing-web-search-menu"></a>
+<p>The Find/Web menu offers quick access to major web search engines.  It
+is typically bound to <kbd>{C-c /}</kbd> or if not, then <kbd>{C-h h f 
w}</kbd> is
+always available.  Your standard web browser will be used to return
+the search results.
+</p>
+<p>Advanced users can change the search engines listed in the Find/Web
+menu with <kbd>{M-x customize-variable <span class="key">RET</span>
+hyperbole-web-search-alist <span class="key">RET</span>}</kbd>.  Changes are 
automatically
+reflected in the Hyperbole menus once applied.  Remember each search
+engine name must begin with a unique letter and each URL must have a
+%s format field indicating where to place the web search term when a
+search is performed.
+</p>
+<p>You can change which browser is used with <kbd>{C-h h c w}</kbd>, the
+Cust/Web-Search menu.  Below is the equivalent Hyperbole menubar menu.
+</p>
+<div class="float"><a name="image_003aWeb_002dSearch_002dBrowser_002dMenu"></a>
+
+<img src="im/menu-web-search-browser.png" alt="Web Search Browser Menu">
+<div class="float-caption"><p><strong>Image B.3: </strong>Web Search Browser 
Menu</p></div></div><br>
+
+<hr>
+<a name="Using-URLs-with-Find_002dFile"></a>
+<div class="header">
+<p>
+Next: <a href="#Invisible-Text-Searches" accesskey="n" rel="next">Invisible 
Text Searches</a>, Previous: <a href="#Web-Search-Engines" accesskey="p" 
rel="prev">Web Search Engines</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Using-URLs-with-Find_002dFile-1"></a>
+<h4 class="subsection">B.3.6 Using URLs with Find-File</h4>
+
+<a name="index-find_002dfile"></a>
+<a name="index-find_002dfile_002c-browsing-URLs"></a>
+<a name="index-browsing-URLs"></a>
+<a name="index-URLs_002c-using-with-find_002dfile"></a>
+<a name="index-web-pages_002c-displaying"></a>
+<a name="index-remote-pathnames"></a>
+<p>Hyperbole always recognizes URLs within buffers when the Action Key is
+pressed on them.  But sometimes it is useful to enter a URL at a prompt
+and have it displayed.  Hyperbole can recognize ftp and www URLs given to
+the <code>find-file</code> command (or any other <code>find-file-*</code> 
commands).
+But because there is added overhead with this feature, it is not enabled by
+default.
+</p>
+<a name="index-menu-item_002c-Find_002dFile_002dURLs"></a>
+<a name="index-menu-item_002c-Find_002dFile_002dAccepts_002dURLs"></a>
+<p>To enable the feature, use the Hyperbole menu item Cust/Find-File-URLs
+(or Find-File-Accepts-URLs on the Hyperbole/Customize pulldown
+menu).  Either of these toggles acceptance of URLs.  When enabled the
+string, URLs, appears in the parenthesized minor-mode section of the
+modeline.
+</p>
+<a name="index-hpath_003afind_002dfile_002durls_002dmode"></a>
+<a name="index-enabling-URLs-in-find_002dfile"></a>
+<a name="index-browsing-URLs-in-find_002dfile"></a>
+<p>To enable this feature each time you start the editor, add the
+following to your personal initialization file after initializing
+Hyperbole: <code>(hpath:find-file-urls-mode 1)</code>.
+</p>
+<a name="index-abbreviated-URLs"></a>
+<a name="index-URLs_002c-abbreviated"></a>
+<a name="index-Tramp-1"></a>
+<p>Both full URLs and abbreviated ones, like <samp>www.gnu.org</samp>, are
+recognized.  File name completion does not work with URLs; you
+have to type or paste in the entire URL.  This feature will work only
+if you have the builtin Tramp Emacs Lisp package; if you don&rsquo;t have
+Tramp, an error message will be displayed when you try to enable
+find-file URLs.
+</p>
+<a name="index-C_002dh-h-c-u"></a>
+<a name="index-menu_002c-Cust_002fURL_002dDisplay"></a>
+<p>The web browser used to display URLs may be set with the minibuffer
+menu Cust/URL-Display <kbd>{C-h h c u}</kbd> or with this Hyperbole menubar
+menu.
+</p>
+<div class="float"><a name="image_003aURL_002dBrowser_002dMenu"></a>
+
+<img src="im/menu-url-browser.png" alt="URL Browser Menu">
+<div class="float-caption"><p><strong>Image B.4: </strong>URL Browser 
Menu</p></div></div><br>
+
+<hr>
+<a name="Invisible-Text-Searches"></a>
+<div class="header">
+<p>
+Next: <a href="#Button-Colors" accesskey="n" rel="next">Button Colors</a>, 
Previous: <a href="#Using-URLs-with-Find_002dFile" accesskey="p" 
rel="prev">Using URLs with Find-File</a>, Up: <a href="#Customization" 
accesskey="u" rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Invisible-Text-Searches-1"></a>
+<h4 class="subsection">B.3.7 Invisible Text Searches</h4>
+
+<a name="index-menu-item_002c-Isearch_002dInvisible"></a>
+<a name="index-menu-item_002c-Toggle_002dIsearch_002dInvisible"></a>
+<a name="index-isearch"></a>
+<a name="index-search-1"></a>
+<p>This is largely for outline modes such as the Koutliner.  By default,
+character-by-character interactive search on <kbd>{C-s}</kbd> will search
+through invisible/hidden text, making the text temporarily visible
+until point moves past that hidden part.  When a search match is
+selected, the surrounding text remains visible.
+</p>
+<p>This command toggles that setting (turns it off if a prefix
+argument less than or equal to 0 is given) and makes searches look at
+only visible text.
+</p>
+<hr>
 <a name="Button-Colors"></a>
 <div class="header">
 <p>
-Previous: <a href="#Link-Variable-Substitution" accesskey="p" rel="prev">Link 
Variable Substitution</a>, Up: <a href="#Customization" accesskey="u" 
rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Previous: <a href="#Invisible-Text-Searches" accesskey="p" 
rel="prev">Invisible Text Searches</a>, Up: <a href="#Customization" 
accesskey="u" rel="up">Customization</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
 <a name="Configuring-Button-Colors"></a>
-<h4 class="subsection">B.3.7 Configuring Button Colors</h4>
-<a name="index-XEmacs-support"></a>
+<h4 class="subsection">B.3.8 Configuring Button Colors</h4>
 <a name="index-Emacs-support"></a>
 <a name="index-button-highlighting-1"></a>
+<a name="index-highlighting-buttons"></a>
 <a name="index-button-flashing"></a>
+<a name="index-flashing-buttons"></a>
 <a name="index-file_002c-hui_002dep_002a_002eel"></a>
 <a name="index-file_002c-hsettings_002eel"></a>
 <a name="index-hproperty_003acycle_002dbut_002dcolor"></a>
-<p>When Hyperbole is run under a window system together with InfoDock,
-Emacs, or XEmacs, it automatically highlights any explicit buttons in
-a buffer and makes them flash when selected.  The main setting you may
-want change is the selection of a color (or style) for button
-highlighting and button flashing.  See the <samp>hui-*-b*.el</samp> files for
-lists of potential colors and the code which supports this behavior.  A
-call to <code>(hproperty:cycle-but-color)</code> in the 
<samp>hsettings.el</samp>
-file changes the color used to highlight and flash explicit buttons.
-</p>
-<a name="index-button-emphasis"></a>
-<a name="index-hproperty_003abut_002demphasize_002dp"></a>
-<p>Additionally, if <code>hproperty:but-emphasize-p</code> is set to 
&lsquo;<samp>t</samp>&rsquo;,
-then whenever the mouse pointer moves over an explicit button, it will
-be emphasized in a different color or style.  This emphasis is in
-addition to any non-mouse-sensitive button highlighting.
+<p>When Hyperbole is run under a window system, it automatically
+highlights any explicit buttons in a buffer and makes them flash when
+selected.  The main setting you may want change is the selection of a
+color (or style) for button highlighting and button flashing.  See
+the <samp>hui-*-b*.el</samp> files for lists of potential colors and the
+code which supports this behavior.  A call
+to <code>(hproperty:cycle-but-color)</code> in the <samp>hsettings.el</samp> 
file
+changes the color used to highlight and flash explicit buttons.
+</p>
+<a name="index-hproperty_003abut_002dhighlight_002dflag"></a>
+<p>Whether or not buttons are highlighted is controlled
+by <code>hproperty:but-highlight-flag</code>, which defaults to 
&lsquo;<samp>t</samp>&rsquo;.
+To disable highlighting, change this setting in <samp>hsettings.el</samp> or
+use Hyperbole menu item, Cust/All-Options, and select the Hyperbole
+Buttons group to edit its options.
 </p>
-<a name="index-button-highlighting_002c-forcing"></a>
 <a name="index-hproperty_003abut_002dcreate"></a>
 <p>If you read in a file with explicit buttons before you load Hyperbole,
 these buttons won&rsquo;t be highlighted.  Load Hyperbole and then use
 <kbd>{M-x hproperty:but-create <span class="key">RET</span>}</kbd> to 
highlight the buttons in
 the current buffer.
 </p>
+<a name="index-button-emphasis"></a>
+<a name="index-hproperty_003abut_002demphasize_002dflag"></a>
+<p>Additionally, if <code>hproperty:but-emphasize-flag</code> is set to 
&lsquo;<samp>t</samp>&rsquo;,
+then whenever the mouse pointer moves over an explicit button, it will
+be emphasized in a different color or style.  This emphasis is in
+addition to any non-mouse-sensitive button highlighting.
+</p>
 
 <hr>
 <a name="Global-Key-Bindings"></a>
@@ -7256,14 +7989,23 @@ Next: <a href="#Koutliner-Keys" accesskey="n" 
rel="next">Koutliner Keys</a>, Pre
 This appendix summarizes all of Hyperbole&rsquo;s global key bindings and
 whether each overrides any existing binding or not.  It also describes
 how to temporarily disable these bindings and how to manage whether
-Hyperbole override local, mode-specific key bindings that hide
+Hyperbole overrides local, mode-specific key bindings that hide
 global Hyperbole keys.
 </p>
-<p>Here are descriptions of Hyperbole&rsquo;s default keyboard key bindings:
+<p>These bindings can be viewed and edited from either the
+Cust/KeyBindings minibuffer menu or from the Hyperbole menubar menu as
+shown here:
+</p>
+<div class="float"><a name="image_003aChange_002dKey_002dBindings"></a>
+
+<img src="im/menu-key-bindings.png" alt="Change Key Bindings">
+<div class="float-caption"><p><strong>Image C.1: </strong>Global Key Bindings 
Menu</p></div></div><br>
+
+<p>Below are descriptions of Hyperbole&rsquo;s default keyboard key bindings:
 </p>
 <dl compact="compact">
 <dd><a name="index-key-binding_002c-M_002dRET"></a>
-<a name="index-M_002dRET-2"></a>
+<a name="index-M_002dRET-1"></a>
 </dd>
 <dt><kbd>{M-<span class="key">RET</span>}</kbd></dt>
 <dd><p>Action Key: Invoke the Action Key in the present context.
@@ -7294,6 +8036,22 @@ associated search.  This binding is made only if the key 
is not bound
 prior to loading Hyperbole; otherwise, the Find/Web minibuffer menu
 item, <kbd>{C-h h f w}</kbd>, will do the same thing.
 </p>
+<a name="index-C_002dc-_0040-1"></a>
+<a name="index-key-binding_002c-C_002dc-_0040"></a>
+<a name="index-windows-grid-1"></a>
+<a name="index-grid-of-windows-1"></a>
+<a name="index-C_002dc-_0040-2"></a>
+</dd>
+<dt><kbd>{C-c @}</kbd></dt>
+<dd><p>Display a grid of windows in the selected frame, sized according to the
+prefix argument.  The left digit of the argument is the number of grid rows
+and the right digit is the number of grid columns.  The argument is
+prompted for if not given.  This binding is made only if the key is not
+bound prior to loading Hyperbole.
+</p>
+<p>For further details, see the <kbd>address@hidden</kbd> key binding 
description
+in <a href="#HyControl">HyControl</a>.
+</p>
 <a name="index-key-binding_002c-C_002dc-C_002dr"></a>
 <a name="index-C_002dc-C_002dr-1"></a>
 </dd>
@@ -7361,22 +8119,37 @@ and restart Emacs.  Then you will have to choose the 
Hyperbole commands
 that you want to use and bind those to keys.
 </p>
 <a name="index-file_002c-_002eemacs-4"></a>
-<a name="index-hkey_002dtoggle_002dbindings"></a>
-<a name="index-change-key-bindings"></a>
-<a name="index-toggle-key-bindings"></a>
-<a name="index-key-bindings_002c-toggle"></a>
-<a name="index-disable-Hyperbole"></a>
+<a name="index-hyperbole_002dtoggle_002dbindings-1"></a>
+<a name="index-change-key-bindings-1"></a>
+<a name="index-toggle-key-bindings-1"></a>
+<a name="index-key-bindings_002c-toggle-1"></a>
+<a name="index-disable-Hyperbole-1"></a>
 <a name="index-C_002dc-h-1"></a>
-<p>If you ever have a need to temporarily disable the Hyperbole keyboard
-and mouse bindings, use the <code>hkey-toggle-bindings</code> command.  It
-switches between the Hyperbole key bindings and those set prior to
-loading Hyperbole and then back again if invoked once more.  There is
-no default key binding for this command; use <kbd>{M-x
-hkey-toggle-bindings <span class="key">RET</span>}</kbd>.  Alternatively, you 
may select a key
-and bind it as part of any setting of <code>hyperbole-init-hook</code>
+<p>If you ever have a need to temporarily disable the Hyperbole keyboard and
+mouse bindings, use the <code>hyperbole-toggle-bindings</code> command.  It
+switches between the Hyperbole key bindings and those set prior to loading
+Hyperbole and then back again if invoked once more.  There is no default
+key binding for this command; use <kbd>{M-x hyperbole-toggle-bindings
+<span class="key">RET</span>}</kbd>.  Alternatively, you may select a key and 
bind it as part of any
+setting of <code>hyperbole-init-hook</code> within your personal 
<samp>~/.emacs</samp>
+file.  For example, <code>(add-hook 'hyperbole-init-hook (lambda ()
+(global-set-key &quot;\C-ch&quot; 'hyperbole-toggle-bindings)))</code>.
+</p>
+<a name="index-file_002c-_002eemacs-5"></a>
+<a name="index-hmouse_002dtoggle_002dbindings"></a>
+<a name="index-mouse-key-toggle"></a>
+<a name="index-Smart-Mouse-Key-toggle"></a>
+<a name="index-C_002dc-t"></a>
+<p>If you want to restore only the mouse bindings that existed before
+Hyperbole was loaded, use the <code>hmouse-toggle-bindings</code> command.
+It switches between the Hyperbole mouse key bindings and those set
+prior to loading Hyperbole and then back again if invoked once more.
+There is no default key binding for this command; use <kbd>{M-x
+hmouse-toggle-bindings <span class="key">RET</span>}</kbd>.  Alternatively, 
you may select a
+key and bind it as part of any setting of <code>hyperbole-init-hook</code>
 within your personal <samp>~/.emacs</samp> file.  For example, <code>(add-hook
-'hyperbole-init-hook (lambda () (global-set-key &quot;\C-ch&quot;
-'hkey-toggle-bindings)))</code>.
+'hyperbole-init-hook (lambda () (global-set-key &quot;\C-ct&quot;
+'hmouse-toggle-bindings)))</code>.
 </p>
 <a name="index-hkey_002dinit_002doverride_002dlocal_002dkeys"></a>
 <a name="index-overriding-local-keys"></a>
@@ -8131,9 +8904,11 @@ are searched in order.
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Modeline-Clicks-and-Drags" 
accesskey="4">Modeline Clicks and Drags</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-_002d-Drags-between-Windows" accesskey="5">Smart Mouse - 
Drags between Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-Drags-between-Windows" accesskey="5">Smart Mouse Drags 
between Windows</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-Drags-within-a-Window" accesskey="6">Smart Mouse Drags 
within a Window</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-_002d-Drags-within-a-Window" accesskey="6">Smart Mouse - 
Drags within a Window</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Mouse-Drags-outside-a-Window" accesskey="7">Smart Mouse Drags 
outside a Window</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
@@ -8163,12 +8938,11 @@ Next: <a href="#Thing-Selection" accesskey="n" 
rel="next">Thing Selection</a>, P
      The variable <code>action-key-minibuffer-function</code> controls this 
behavior.
   ASSIST KEY
      The buffer, window and frame jump menu is displayed for selection, by 
default.
-     You can jump to buffers categorized by major mode, jump to windows by
-     buffer name, or to frames by name.  Manage your windows and frames
-     quickly with this menu as well.  This is the same menu that a click
-     in a blank area of the modeline displays by default since they are
-     typically so close together.  The variable 
<code>assist-key-minibuffer-function</code>
-     controls this behavior. 
+     You can jump to buffers categorized by major mode, jump to windows by 
buffer
+     name, or to frames by name.  Manage your windows and frames quickly with 
this
+     menu as well.  This is the same menu that a click in a blank area of the
+     modeline displays by default since they are typically so close together.  
The
+     variable <code>assist-key-minibuffer-function</code> controls this 
behavior.
 </pre></div>
 
 <hr>
@@ -8254,7 +9028,7 @@ a vertical scroll bar:
 <a name="Modeline-Clicks-and-Drags"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Mouse-_002d-Drags-between-Windows" accesskey="n" 
rel="next">Smart Mouse - Drags between Windows</a>, Previous: <a 
href="#Side_002dby_002dSide-Window-Resizing" accesskey="p" 
rel="prev">Side-by-Side Window Resizing</a>, Up: <a href="#Smart-Mouse-Keys" 
accesskey="u" rel="up">Smart Mouse Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Smart-Mouse-Drags-between-Windows" accesskey="n" 
rel="next">Smart Mouse Drags between Windows</a>, Previous: <a 
href="#Side_002dby_002dSide-Window-Resizing" accesskey="p" 
rel="prev">Side-by-Side Window Resizing</a>, Up: <a href="#Smart-Mouse-Keys" 
accesskey="u" rel="up">Smart Mouse Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
 <a name="Modeline-Clicks-and-Drags-1"></a>
 <h4 class="subsection">E.1.4 Modeline Clicks and Drags</h4>
@@ -8264,43 +9038,78 @@ Next: <a 
href="#Smart-Mouse-_002d-Drags-between-Windows" accesskey="n" rel="next
 <a name="index-action_002dkey_002dmodeline_002dfunction-1"></a>
 <a name="index-assist_002dkey_002dmodeline_002dfunction-1"></a>
 <div class="format">
-<pre class="format">If depressed within a window mode line:
+<pre class="format">If depressed within a window modeline:
   ACTION KEY
-     (1) clicked on the left edge of a window&rsquo;s modeline, the 
window&rsquo;s
-         buffer is buried (placed at the bottom of the buffer list);
+     (1) clicked on the first blank character of a window&rsquo;s modeline,
+         the window&rsquo;s buffer is buried (placed at the bottom of the
+         buffer list);
      (2) clicked on the right edge of a window&rsquo;s modeline, the Info
          buffer is displayed, or if it is already displayed and the
          modeline clicked upon belongs to a window displaying Info,
          the Info buffer is hidden;
-     (3) clicked anywhere within the middle of a window&rsquo;s modeline,
-         the function given by &lsquo;action-key-modeline-function&rsquo; is 
called;
-     (4) dragged vertically from a modeline to within a window, the
+     (3) clicked on the buffer id of a window&rsquo;s modeline, dired is run
+         on the current directory, replacing the window&rsquo;s buffer;
+         successive clicks walk up the directory tree
+     (4) clicked anywhere within the middle of a window&rsquo;s modeline,
+         the function given by <code>action-key-modeline-function</code> is
+         called;
+     (5) dragged vertically from a modeline to within a window, the
          modeline is moved to the point of the drag release, thereby
          resizing its window and potentially its vertically neighboring
          windows.
-  ASSIST KEY
-     (1) clicked on the left edge of a window&rsquo;s modeline, the bottom
-         buffer in the buffer list is unburied and placed in the window;
+     (6) dragged other than straight vertically from a modeline to another
+         window, duplicate the modeline&rsquo;s window buffer to the window of
+         release.
+     (7) dragged from a modeline to outside of Emacs, create a new frame
+         sized to match the selected window with the same buffer.
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
+     (1) clicked on the first blank character of a window&rsquo;s modeline,
+         the bottom buffer in the buffer list is unburied and placed in
+         the window;
      (2) clicked on the right edge of a window&rsquo;s modeline, the summary
          of Smart Key behavior is displayed, or if it is already
          displayed and the modeline clicked upon belongs to a window
          displaying the summary, the summary buffer is hidden;
-     (3) clicked anywhere within the middle of a window&rsquo;s modeline,
-         the function given by &lsquo;assist-key-modeline-function&rsquo; is 
called;
-     (4) dragged vertically from a modeline to within a window, the
+     (3) clicked on the buffer id of a window&rsquo;s modeline, the next
+         buffer in sequence is displayed in the window
+     (4) clicked anywhere within the middle of a window&rsquo;s modeline,
+         the function given by <code>assist-key-modeline-function</code> is
+         called;
+     (5) dragged vertically from a modeline to within a window, the
          modeline is moved to the point of the drag release, thereby
          resizing its window and potentially its vertically neighboring
          windows.
+     (6) dragged other than straight vertically from a modeline to another
+         window, swap buffers in the two windows.
+     (7) dragged from a modeline to outside of Emacs, create a new frame
+         sized to match the selected window with the same buffer.  If there
+         is only one window in the source frame or if 
<code>hycontrol-keep-window-flag</code>
+         is non-nil, leave the original window and just clone it into the
+         new frame;otherwise, delete the original window.
+</pre></div>
+
+<div class="format">
+<pre class="format">If dragged from a window and released within a window 
modeline:
+  ACTION KEY
+     (1) If depress was on a buffer name in Buffer-menu/ibuffer mode or on
+         a file/directory in dired mode, splits the release window and displays
+         the item in the original release window.
+     (2) Otherwise, splits the release window and displays the depress 
window&rsquo;s
+         buffer in the original release window.
+  ASSIST KEY
+     Swaps buffers in the two windows.
 </pre></div>
 
 <hr>
-<a name="Smart-Mouse-_002d-Drags-between-Windows"></a>
+<a name="Smart-Mouse-Drags-between-Windows"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Mouse-_002d-Drags-within-a-Window" accesskey="n" 
rel="next">Smart Mouse - Drags within a Window</a>, Previous: <a 
href="#Modeline-Clicks-and-Drags" accesskey="p" rel="prev">Modeline Clicks and 
Drags</a>, Up: <a href="#Smart-Mouse-Keys" accesskey="u" rel="up">Smart Mouse 
Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Mouse-Drags-within-a-Window" accesskey="n" 
rel="next">Smart Mouse Drags within a Window</a>, Previous: <a 
href="#Modeline-Clicks-and-Drags" accesskey="p" rel="prev">Modeline Clicks and 
Drags</a>, Up: <a href="#Smart-Mouse-Keys" accesskey="u" rel="up">Smart Mouse 
Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Mouse-_002d-Drags-between-Windows-1"></a>
-<h4 class="subsection">E.1.5 Smart Mouse - Drags between Windows</h4>
+<a name="Smart-Mouse-Drags-between-Windows-1"></a>
+<h4 class="subsection">E.1.5 Smart Mouse Drags between Windows</h4>
 
 <a name="index-active-region"></a>
 <a name="index-copy-and-yank-1"></a>
@@ -8320,21 +9129,25 @@ Next: <a 
href="#Smart-Mouse-_002d-Drags-within-a-Window" accesskey="n" rel="next
 <div class="format">
 <pre class="format">Otherwise, if dragged from inside one window to another:
   ACTION KEY
-     Creates a new link button at the drag start location, linked to the
-     drag end location.  If the drag start position is within a button,
-     this modifies the button to link to the drag end location.
+     (1) If depress was on a buffer name in Buffer-menu/ibuffer mode or on
+         a file/directory in dired mode, displays the item in window of 
release.
+         See <code>hmouse-drag-item-mode-forms</code> for how to allow for 
draggable
+         items in other modes.
+     (2) Otherwise, creates a new link button at the drag start location, 
linked
+         to the drag end location.  If the drag start position is within a 
button,
+         this modifies the button to link to the drag end location.
   ASSIST KEY
-     Swaps buffers in the two windows.
+     Swap buffers in the two windows.
 </pre></div>
 
 <hr>
-<a name="Smart-Mouse-_002d-Drags-within-a-Window"></a>
+<a name="Smart-Mouse-Drags-within-a-Window"></a>
 <div class="header">
 <p>
-Previous: <a href="#Smart-Mouse-_002d-Drags-between-Windows" accesskey="p" 
rel="prev">Smart Mouse - Drags between Windows</a>, Up: <a 
href="#Smart-Mouse-Keys" accesskey="u" rel="up">Smart Mouse Keys</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Smart-Mouse-Drags-outside-a-Window" accesskey="n" 
rel="next">Smart Mouse Drags outside a Window</a>, Previous: <a 
href="#Smart-Mouse-Drags-between-Windows" accesskey="p" rel="prev">Smart Mouse 
Drags between Windows</a>, Up: <a href="#Smart-Mouse-Keys" accesskey="u" 
rel="up">Smart Mouse Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Mouse-_002d-Drags-within-a-Window-1"></a>
-<h4 class="subsection">E.1.6 Smart Mouse - Drags within a Window</h4>
+<a name="Smart-Mouse-Drags-within-a-Window-1"></a>
+<h4 class="subsection">E.1.6 Smart Mouse Drags within a Window</h4>
 
 <a name="index-active-region-1"></a>
 <a name="index-region_002c-active"></a>
@@ -8347,8 +9160,8 @@ Previous: <a 
href="#Smart-Mouse-_002d-Drags-between-Windows" accesskey="p" rel="
      Restores region to before Action Key drag and signals an error.
 </pre></div>
 
-<a name="index-drag_002c-horizontal"></a>
-<a name="index-horizontal-drag"></a>
+<a name="index-drag_002c-horizontal-1"></a>
+<a name="index-horizontal-drag-1"></a>
 <a name="index-hmouse_002dx_002ddrag_002dsensitivity"></a>
 <div class="format">
 <pre class="format">(Note that <code>hmouse-x-drag-sensitivity</code> sets the 
minimal horizontal
@@ -8361,8 +9174,8 @@ single window from anywhere but a thing delimiter:
      current frame.
 </pre></div>
 
-<a name="index-drag_002c-vertical"></a>
-<a name="index-vertical-drag"></a>
+<a name="index-drag_002c-vertical-1"></a>
+<a name="index-vertical-drag-1"></a>
 <a name="index-hmouse_002dy_002ddrag_002dsensitivity"></a>
 <div class="format">
 <pre class="format">(Note that <code>hmouse-y-drag-sensitivity</code> sets the 
minimal vertical
@@ -8375,8 +9188,8 @@ single window from anywhere but a thing delimiter:
      current frame.
 </pre></div>
 
-<a name="index-drag_002c-diagonal"></a>
-<a name="index-diagonal-drag"></a>
+<a name="index-drag_002c-diagonal-1"></a>
+<a name="index-diagonal-drag-1"></a>
 <a name="index-hmouse_002dx_002ddiagonal_002dsensitivity"></a>
 <a name="index-hmouse_002dy_002ddiagonal_002dsensitivity"></a>
 <div class="format">
@@ -8392,6 +9205,39 @@ the minimal diagonal movements which register a drag):
 </pre></div>
      
 <hr>
+<a name="Smart-Mouse-Drags-outside-a-Window"></a>
+<div class="header">
+<p>
+Previous: <a href="#Smart-Mouse-Drags-within-a-Window" accesskey="p" 
rel="prev">Smart Mouse Drags within a Window</a>, Up: <a 
href="#Smart-Mouse-Keys" accesskey="u" rel="up">Smart Mouse Keys</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Mouse-Drags-outside-a-Window-1"></a>
+<h4 class="subsection">E.1.7 Smart Mouse Drags outside a Window</h4>
+
+<a name="index-hmouse_002ddrag_002ditem_002dmode_002dforms"></a>
+<a name="index-hycontrol_002dkeep_002dwindow_002dflag-1"></a>
+<a name="index-dragging-items"></a>
+<a name="index-dragging-outside-Emacs"></a>
+<a name="index-window_002c-clone-2"></a>
+<a name="index-clone-window-2"></a>
+<a name="index-window_002c-move"></a>
+<a name="index-move-window"></a>
+<div class="format">
+<pre class="format">If dragged from an Emacs window to outside of Emacs:
+  ACTION KEY
+     (1) If depress was on a buffer name in Buffer-menu/ibuffer mode or on
+         a file/directory in dired mode, display the item in a new frame.
+         See <code>hmouse-drag-item-mode-forms</code> for how to allow for 
draggable
+         items in other modes.
+     (2) If depress was anywhere else, create a new frame sized to match the
+         selected window with the same buffer.
+  ASSIST KEY
+     Create a new frame sized to match the selected window with the same 
buffer.
+     If there is only one window in the source frame or if 
<code>hycontrol-keep-window-flag</code>
+     is non-nil, leave the original window and just clone it into the new 
frame;
+     otherwise, delete the original window.
+</pre></div>
+
+<hr>
 <a name="Smart-Keyboard-Keys"></a>
 <div class="header">
 <p>
@@ -8427,6 +9273,8 @@ Previous: <a href="#Smart-Mouse-Keys" accesskey="p" 
rel="prev">Smart Mouse Keys<
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Help-Buffers">Smart Key - Help 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Pages-Directory-Mode">Smart Key - Pages Directory 
Mode</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Identifier-Menu-Mode">Smart Key - Identifier Menu Mode 
</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-C-Source-Code">Smart Key - C Source 
Code</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -8469,7 +9317,9 @@ Previous: <a href="#Smart-Mouse-Keys" accesskey="p" 
rel="prev">Smart Mouse Keys<
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW 
URLs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Rolo-Match-Buffers">Smart Key - Rolo Match 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">Smart Key - HyRolo Match 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Image-Thumbnails">Smart Key - Image 
Thumbnails</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Gomoku-Game">Smart Key - Gomoku 
Game</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -8587,7 +9437,9 @@ Next: <a href="#Smart-Key-_002d-Smart-Menus" 
accesskey="n" rel="next">Smart Key
      window line, it scrolls up (forward) a windowful.  Otherwise, it tries
      to bring the current line to the top of the window, leaving point at
      the end of the line and returning t if scrolled, nil if not.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      Calls the function given by <code>assist-key-eol-function</code> whose
      default value is <code>smart-scroll-down</code>.  This scrolls down 
according
      to the value of <code>smart-scroll-proportional</code>.  If
@@ -8640,26 +9492,36 @@ Next: <a href="#Smart-Key-_002d-Hyperbole-Buttons" 
accesskey="n" rel="next">Smar
 <a name="Smart-Key-_002d-Dired-Mode-1"></a>
 <h4 class="subsection">E.2.7 Smart Key - Dired Mode</h4>
 <a name="index-click_002c-dired"></a>
+<a name="index-drag_002c-dired"></a>
 <a name="index-dired-browsing"></a>
+<a name="index-DisplayHere-mode"></a>
 <div class="format">
 <pre class="format">If pressed within a dired-mode (directory editor) buffer:
   ACTION KEY
      (1) within an entry line, the selected file/directory is displayed
-         for editing in the other window;
-     (2) on the first line of the buffer, if any deletes are to be
-         performed, they are executed after user verification; otherwise,
-         nothing is done;
-     (3) on or after the last line in the buffer, this dired invocation
-         is quit.
-  ASSIST KEY
-     (1) on a ~ character, all backup files in the directory are marked
-         for deletion;
-     (2) on a # character, all auto-save files in the directory are
-         marked for deletion;
-     (3) anywhere else within an entry line, the current entry is marked
-         for deletion;
-     (4) on or after the last line in the buffer, all delete marks on
-         all entries are undone.
+         for editing, normally in another window but if an entry has been 
dragged
+         for display in another window, then this entry is displayed in the 
current
+         window (DisplayHere minor mode is shown in the mode-line; use 
<kbd>{g}</kbd> to
+         disable it)
+     (2) on the first line of the buffer:
+         (a) within the leading whitespace, then if any deletes are to be
+             performed, they are executed after user verification; otherwise,
+             nothing is done;
+         (b) otherwise, dired is run in another window on the ancestor 
directory
+             of the current directory path up through the location of point;
+             if point is before the first character, then the / root directory
+             is used.
+     (3) on or after the last line in the buffer or at the end of the first 
line,
+         this dired invocation is quit.
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
+     (1) on a ~ character, all backup files in the directory are marked for 
deletion;
+     (2) on a # character, all auto-save files in the directory are marked for
+         deletion;
+     (3) anywhere else within an entry line, the current entry is marked for 
deletion;
+     (4) on or after the last line in the buffer or at the end of the first 
line,
+         all delete marks on all entries are undone.
 </pre></div>
 
 <hr>
@@ -8759,7 +9621,9 @@ Next: <a href="#Smart-Key-_002d-RDB-Mode" accesskey="n" 
rel="next">Smart Key - R
          outline cell; press the Action Key twice on another cell to
          select the link referent cell;
      (4) anywhere else, scrolls up a windowful.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      (1) at the end of the buffer, collapses all cells and hides all
          non-level-one cells;
      (2) on a header line but not at the beginning or end, displays the
@@ -8794,7 +9658,9 @@ relational databases (part of InfoDock):
         the selected attribute value are removed from the current table 
display;
     (5) on or after the last line in the buffer, the current database is 
redisplayed;
     (6) anywhere else (except the end of a line), the last command is 
undone.&quot;
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
     (1) on the name of a relation, the relation is removed from the display;
     (2) on an attribute name, the attribute column is removed from the relation
         display;
@@ -8807,7 +9673,7 @@ relational databases (part of InfoDock):
 <a name="Smart-Key-_002d-Help-Buffers"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-_002d-Identifier-Menu-Mode" accesskey="n" 
rel="next">Smart Key - Identifier Menu Mode</a>, Previous: <a 
href="#Smart-Key-_002d-RDB-Mode" accesskey="p" rel="prev">Smart Key - RDB 
Mode</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-_002d-Pages-Directory-Mode" accesskey="n" 
rel="next">Smart Key - Pages Directory Mode</a>, Previous: <a 
href="#Smart-Key-_002d-RDB-Mode" accesskey="p" rel="prev">Smart Key - RDB 
Mode</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Help-Buffers-1"></a>
 <h4 class="subsection">E.2.13 Smart Key - Help Buffers</h4>
@@ -8821,13 +9687,32 @@ When pressed at the end of a Help buffer:
 </pre></div>
 
 <hr>
+<a name="Smart-Key-_002d-Pages-Directory-Mode"></a>
+<div class="header">
+<p>
+Next: <a href="#Smart-Key-_002d-Identifier-Menu-Mode" accesskey="n" 
rel="next">Smart Key - Identifier Menu Mode</a>, Previous: <a 
href="#Smart-Key-_002d-Help-Buffers" accesskey="p" rel="prev">Smart Key - Help 
Buffers</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Key-_002d-Pages-Directory-Mode-1"></a>
+<h4 class="subsection">E.2.14 Smart Key - Pages Directory Mode</h4>
+
+<div class="format">
+<pre class="format">Pages-directory-mode is used in special buffers that 
contain title lines extracted from files consisting of titled, page-delimited 
contents, e.g. Info files.
+
+When pressed on a pages-directory-mode entry line:
+  ACTION KEY
+     Jumps to the associated line in the pages file that contains the entry.
+  ASSIST KEY
+     Jumps to the associated line in the pages file that contains the entry.
+</pre></div>
+
+<hr>
 <a name="Smart-Key-_002d-Identifier-Menu-Mode"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-_002d-C-Source-Code" accesskey="n" rel="next">Smart 
Key - C Source Code</a>, Previous: <a href="#Smart-Key-_002d-Help-Buffers" 
accesskey="p" rel="prev">Smart Key - Help Buffers</a>, Up: <a 
href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart Keyboard Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-_002d-C-Source-Code" accesskey="n" rel="next">Smart 
Key - C Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Pages-Directory-Mode" accesskey="p" rel="prev">Smart Key 
- Pages Directory Mode</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Identifier-Menu-Mode-1"></a>
-<h4 class="subsection">E.2.14 Smart Key - Identifier Menu Mode</h4>
+<h4 class="subsection">E.2.15 Smart Key - Identifier Menu Mode</h4>
 
 <div class="format">
 <pre class="format">This works only for identifiers defined within the same 
source file in which they are referenced.
@@ -8850,7 +9735,7 @@ When pressed on an identifier name after an identifier 
index has been generated:
 Next: <a href="#Smart-Key-_002d-C_002b_002b-Source-Code" accesskey="n" 
rel="next">Smart Key - C++ Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Identifier-Menu-Mode" accesskey="p" rel="prev">Smart Key 
- Identifier Menu Mode</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-C-Source-Code-1"></a>
-<h4 class="subsection">E.2.15 Smart Key - C Source Code</h4>
+<h4 class="subsection">E.2.16 Smart Key - C Source Code</h4>
 
 <a name="index-smart_002dc_002dcpp_002dinclude_002dpath"></a>
 <a name="index-smart_002dc_002dinclude_002dpath"></a>
@@ -8882,7 +9767,7 @@ Next: <a href="#Smart-Key-_002d-C_002b_002b-Source-Code" 
accesskey="n" rel="next
 Next: <a href="#Smart-Key-_002d-Assembly-Source-Code" accesskey="n" 
rel="next">Smart Key - Assembly Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-C-Source-Code" accesskey="p" rel="prev">Smart Key - C 
Source Code</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-C_002b_002b-Source-Code-1"></a>
-<h4 class="subsection">E.2.16 Smart Key - C++ Source Code</h4>
+<h4 class="subsection">E.2.17 Smart Key - C++ Source Code</h4>
 
 <a name="index-c_002b_002b_002dcpp_002dinclude_002dpath"></a>
 <a name="index-c_002b_002b_002dinclude_002dpath"></a>
@@ -8935,7 +9820,7 @@ buffer:
 Next: <a href="#Smart-Key-_002d-Lisp-Source-Code" accesskey="n" 
rel="next">Smart Key - Lisp Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-C_002b_002b-Source-Code" accesskey="p" rel="prev">Smart 
Key - C++ Source Code</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Assembly-Source-Code-1"></a>
-<h4 class="subsection">E.2.17 Smart Key - Assembly Source Code</h4>
+<h4 class="subsection">E.2.18 Smart Key - Assembly Source Code</h4>
 
 <a name="index-smart_002dasm_002dinclude_002dpath"></a>
 <div class="format">
@@ -8960,7 +9845,7 @@ Next: <a href="#Smart-Key-_002d-Lisp-Source-Code" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-Java-Source-Code" accesskey="n" 
rel="next">Smart Key - Java Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Assembly-Source-Code" accesskey="p" rel="prev">Smart Key 
- Assembly Source Code</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Lisp-Source-Code-1"></a>
-<h4 class="subsection">E.2.18 Smart Key - Lisp Source Code</h4>
+<h4 class="subsection">E.2.19 Smart Key - Lisp Source Code</h4>
 
 <div class="format">
 <pre class="format">When pressed on a Lisp symbol within any of these types of 
buffers
@@ -8982,7 +9867,7 @@ Next: <a href="#Smart-Key-_002d-Java-Source-Code" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-JavaScript-Source-Code" accesskey="n" 
rel="next">Smart Key - JavaScript Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Lisp-Source-Code" accesskey="p" rel="prev">Smart Key - 
Lisp Source Code</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Java-Source-Code-1"></a>
-<h4 class="subsection">E.2.19 Smart Key - Java Source Code</h4>
+<h4 class="subsection">E.2.20 Smart Key - Java Source Code</h4>
 
 <a name="index-smart_002djava_002dpackage_002dpath"></a>
 <div class="format">
@@ -9025,7 +9910,7 @@ buffer:
 Next: <a href="#Smart-Key-_002d-Python-Source-Code" accesskey="n" 
rel="next">Smart Key - Python Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Java-Source-Code" accesskey="p" rel="prev">Smart Key - 
Java Source Code</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-JavaScript-Source-Code-1"></a>
-<h4 class="subsection">E.2.20 Smart Key - JavaScript Source Code</h4>
+<h4 class="subsection">E.2.21 Smart Key - JavaScript Source Code</h4>
 
 <div class="format">
 <pre class="format">When pressed within a JavaScript source code file:
@@ -9046,7 +9931,7 @@ Next: <a href="#Smart-Key-_002d-Python-Source-Code" 
accesskey="n" rel="next">Sma
 Next: <a href="#Smart-Key-_002d-Objective_002dC-Source-Code" accesskey="n" 
rel="next">Smart Key - Objective-C Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-JavaScript-Source-Code" accesskey="p" rel="prev">Smart 
Key - JavaScript Source Code</a>, Up: <a href="#Smart-Keyboard-Keys" 
accesskey="u" rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Python-Source-Code-1"></a>
-<h4 class="subsection">E.2.21 Smart Key - Python Source Code</h4>
+<h4 class="subsection">E.2.22 Smart Key - Python Source Code</h4>
 <div class="format">
 <pre class="format">When the OO-Browser has been loaded and the press is 
within a Python
 buffer:
@@ -9077,7 +9962,7 @@ buffer:
 Next: <a href="#Smart-Key-_002d-Fortran-Source-Code" accesskey="n" 
rel="next">Smart Key - Fortran Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Python-Source-Code" accesskey="p" rel="prev">Smart Key - 
Python Source Code</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Objective_002dC-Source-Code-1"></a>
-<h4 class="subsection">E.2.22 Smart Key - Objective-C Source Code</h4>
+<h4 class="subsection">E.2.23 Smart Key - Objective-C Source Code</h4>
 
 <a name="index-objc_002dcpp_002dinclude_002dpath"></a>
 <a name="index-objc_002dinclude_002dpath"></a>
@@ -9128,7 +10013,7 @@ OO-Browser):
 Next: <a href="#Smart-Key-_002d-Occurrence-Matches" accesskey="n" 
rel="next">Smart Key - Occurrence Matches</a>, Previous: <a 
href="#Smart-Key-_002d-Objective_002dC-Source-Code" accesskey="p" 
rel="prev">Smart Key - Objective-C Source Code</a>, Up: <a 
href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart Keyboard Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Fortran-Source-Code-1"></a>
-<h4 class="subsection">E.2.23 Smart Key - Fortran Source Code</h4>
+<h4 class="subsection">E.2.24 Smart Key - Fortran Source Code</h4>
 
 <div class="format">
 <pre class="format">When pressed within a Fortran source code file:
@@ -9146,7 +10031,7 @@ Next: <a href="#Smart-Key-_002d-Occurrence-Matches" 
accesskey="n" rel="next">Sma
 Next: <a href="#Smart-Key-_002d-Calendar-Mode" accesskey="n" rel="next">Smart 
Key - Calendar Mode</a>, Previous: <a 
href="#Smart-Key-_002d-Fortran-Source-Code" accesskey="p" rel="prev">Smart Key 
- Fortran Source Code</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Occurrence-Matches-1"></a>
-<h4 class="subsection">E.2.24 Smart Key - Occurrence Matches</h4>
+<h4 class="subsection">E.2.25 Smart Key - Occurrence Matches</h4>
 
 <div class="format">
 <pre class="format">When pressed within an occur-mode, moccur-mode or 
amoccur-mode buffer:
@@ -9161,7 +10046,7 @@ Next: <a href="#Smart-Key-_002d-Calendar-Mode" 
accesskey="n" rel="next">Smart Ke
 Next: <a href="#Smart-Key-_002d-Man-Page-Apropos" accesskey="n" 
rel="next">Smart Key - Man Page Apropos</a>, Previous: <a 
href="#Smart-Key-_002d-Occurrence-Matches" accesskey="p" rel="prev">Smart Key - 
Occurrence Matches</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Calendar-Mode-1"></a>
-<h4 class="subsection">E.2.25 Smart Key - Calendar Mode</h4>
+<h4 class="subsection">E.2.26 Smart Key - Calendar Mode</h4>
 
 <div class="format">
 <pre class="format">When pressed within a calendar-mode buffer:
@@ -9188,7 +10073,7 @@ Next: <a href="#Smart-Key-_002d-Man-Page-Apropos" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-Emacs-Outline-Mode" accesskey="n" 
rel="next">Smart Key - Emacs Outline Mode</a>, Previous: <a 
href="#Smart-Key-_002d-Calendar-Mode" accesskey="p" rel="prev">Smart Key - 
Calendar Mode</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Man-Page-Apropos-1"></a>
-<h4 class="subsection">E.2.26 Smart Key - Man Page Apropos</h4>
+<h4 class="subsection">E.2.27 Smart Key - Man Page Apropos</h4>
 <div class="format">
 <pre class="format">When pressed within a man page apropos buffer or listing:
   ACTION KEY
@@ -9210,7 +10095,7 @@ Next: <a href="#Smart-Key-_002d-Emacs-Outline-Mode" 
accesskey="n" rel="next">Sma
 Next: <a href="#Smart-Key-_002d-Info-Manuals" accesskey="n" rel="next">Smart 
Key - Info Manuals</a>, Previous: <a href="#Smart-Key-_002d-Man-Page-Apropos" 
accesskey="p" rel="prev">Smart Key - Man Page Apropos</a>, Up: <a 
href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart Keyboard Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Emacs-Outline-Mode-1"></a>
-<h4 class="subsection">E.2.27 Smart Key - Emacs Outline Mode</h4>
+<h4 class="subsection">E.2.28 Smart Key - Emacs Outline Mode</h4>
 <a name="index-selective_002ddisplay"></a>
 <div class="format">
 <pre class="format">If pressed within an outline-mode buffer or when no other 
context is matched
@@ -9225,7 +10110,8 @@ and outline-minor-mode is enabled:
      (4) on a header line but not at the beginning or end of the line,
          if the headings subtree is hidden, shows it, otherwise hides
          it;
-     (5) anywhere else, scrolls up a windowful.
+     (5) anywhere else, invokes <code>action-key-eol-function</code>, typically
+         to scroll up a windowful.
   ASSIST KEY
      (1) after an outline heading has been cut via the Action Key,
          allows multiple pastes throughout the buffer (the last paste
@@ -9235,7 +10121,8 @@ and outline-minor-mode is enabled:
          (sans subtree) from the buffer;
      (4) on a header line but not at the beginning or end, if the
          heading body is hidden, shows it, otherwise hides it;
-     (5) anywhere else, scrolls down a windowful.
+     (5) anywhere else, invokes <code>assist-key-eol-function</code>, typically
+         to scroll down a windowful.
 </pre></div>
 
 <hr>
@@ -9245,7 +10132,7 @@ and outline-minor-mode is enabled:
 Next: <a href="#Smart-Key-_002d-Email-Composers" accesskey="n" 
rel="next">Smart Key - Email Composers</a>, Previous: <a 
href="#Smart-Key-_002d-Emacs-Outline-Mode" accesskey="p" rel="prev">Smart Key - 
Emacs Outline Mode</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Info-Manuals-1"></a>
-<h4 class="subsection">E.2.28 Smart Key - Info Manuals</h4>
+<h4 class="subsection">E.2.29 Smart Key - Info Manuals</h4>
 
 <div class="format">
 <pre class="format"><a name="index-click_002c-Info"></a><a 
name="index-Info-browsing"></a><a name="index-Info_002dglobal_002dnext"></a><a 
name="index-Info_002dglobal_002dprev"></a>If pressed within an Info manual node:
@@ -9261,7 +10148,9 @@ Next: <a href="#Smart-Key-_002d-Email-Composers" 
accesskey="n" rel="next">Smart
          is bound);
      (5) anywhere else (e.g. at the end of a line), the current node
          is scrolled up a windowful.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      (1) on the first line of an Info Menu Entry or Cross Reference, the
          referenced node is displayed;
      (2) on the Up, Next, or Previous entries of a Node Header (first
@@ -9284,7 +10173,7 @@ Use <kbd>{s}</kbd> within an Info manual to search for 
any concept that interest
 Next: <a href="#Smart-Key-_002d-GNUS-Newsreader" accesskey="n" 
rel="next">Smart Key - GNUS Newsreader</a>, Previous: <a 
href="#Smart-Key-_002d-Info-Manuals" accesskey="p" rel="prev">Smart Key - Info 
Manuals</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Email-Composers-1"></a>
-<h4 class="subsection">E.2.29 Smart Key - Email Composers</h4>
+<h4 class="subsection">E.2.30 Smart Key - Email Composers</h4>
 <a name="index-hmail_003areader"></a>
 <a name="index-hmail_003alister"></a>
 <div class="format">
@@ -9301,7 +10190,9 @@ Next: <a href="#Smart-Key-_002d-GNUS-Newsreader" 
accesskey="n" rel="next">Smart
          corresponding to the header is displayed in the msg window;
      (5) in a msg summary buffer, on or after the last line, the
          messages marked for deletion are expunged.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      (1) in a msg buffer within the first line or at the end of a
          message, the previous undeleted message is displayed;
      (2) in a msg buffer within the first line of an Info cross
@@ -9321,7 +10212,7 @@ Next: <a href="#Smart-Key-_002d-GNUS-Newsreader" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-Buffer-Menus" accesskey="n" rel="next">Smart 
Key - Buffer Menus</a>, Previous: <a href="#Smart-Key-_002d-Email-Composers" 
accesskey="p" rel="prev">Smart Key - Email Composers</a>, Up: <a 
href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart Keyboard Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-GNUS-Newsreader-1"></a>
-<h4 class="subsection">E.2.30 Smart Key - GNUS Newsreader</h4>
+<h4 class="subsection">E.2.31 Smart Key - GNUS Newsreader</h4>
 <a name="index-click_002c-Gnus"></a>
 <a name="index-Gnus-browsing"></a>
 <div class="format">
@@ -9334,7 +10225,9 @@ Next: <a href="#Smart-Key-_002d-Buffer-Menus" 
accesskey="n" rel="next">Smart Key
          whitespace, the current group is unsubscribed or resubscribed;
      (4) at the end of the GNUS-GROUP buffer after all lines, the
          number of waiting messages per group is updated.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      (1) on a GNUS-GROUP line, that newsgroup is read;
      (2) if &lsquo;gnus-topic-mode&rsquo; is active, and on a topic line, the 
topic is
          expanded or collapsed as needed;
@@ -9352,7 +10245,9 @@ Next: <a href="#Smart-Key-_002d-Buffer-Menus" 
accesskey="n" rel="next">Smart Key
          and scrolled forward;
      (2) at the end of the GNUS-SUBJECT buffer, the next undeleted
          article is read or the next group is entered.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      (1) on a GNUS-SUBJECT line, that article is read and scrolled
          backward;
      (2) at the end of the GNUS-SUBJECT buffer, the group is exited and
@@ -9367,7 +10262,9 @@ Next: <a href="#Smart-Key-_002d-Buffer-Menus" 
accesskey="n" rel="next">Smart Key
      (2) on the first line of an Info cross reference, the referent is
          displayed;
      (3) anywhere else, the window is scrolled up a windowful.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      (1) on the first line or end of an article, the previous message is
          displayed;
      (2) on the first line of an Info cross reference, the referent is
@@ -9382,7 +10279,7 @@ Next: <a href="#Smart-Key-_002d-Buffer-Menus" 
accesskey="n" rel="next">Smart Key
 Next: <a href="#Smart-Key-_002d-Tar-File-Mode" accesskey="n" rel="next">Smart 
Key - Tar File Mode</a>, Previous: <a href="#Smart-Key-_002d-GNUS-Newsreader" 
accesskey="p" rel="prev">Smart Key - GNUS Newsreader</a>, Up: <a 
href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart Keyboard Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Buffer-Menus-1"></a>
-<h4 class="subsection">E.2.31 Smart Key - Buffer Menus</h4>
+<h4 class="subsection">E.2.32 Smart Key - Buffer Menus</h4>
 <a name="index-click_002c-buffer-menu"></a>
 <a name="index-buffer-menu-2"></a>
 <div class="format">
@@ -9398,7 +10295,9 @@ Next: <a href="#Smart-Key-_002d-Tar-File-Mode" 
accesskey="n" rel="next">Smart Ke
          is displayed);
      (4) on or after the last line in the buffer, all saves and deletes
          are done.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      (1) on the first or second column of an entry, the selected buffer
          is unmarked for display and for saving or deletion;
      (2) anywhere else within an entry line, the selected buffer is
@@ -9419,7 +10318,9 @@ Next: <a href="#Smart-Key-_002d-Tar-File-Mode" 
accesskey="n" rel="next">Smart Ke
          within the OO-Browser user interface, only the selected buffer is
          displayed);
      (3) on the first or last line in the buffer, all deletes are done.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      (1) on the first or second column of an entry, the selected buffer is 
unmarked
          for display or deletion; 
      (2) anywhere else within an entry line, the selected buffer is marked for
@@ -9435,7 +10336,7 @@ Next: <a href="#Smart-Key-_002d-Tar-File-Mode" 
accesskey="n" rel="next">Smart Ke
 Next: <a href="#Smart-Key-_002d-Man-Pages" accesskey="n" rel="next">Smart Key 
- Man Pages</a>, Previous: <a href="#Smart-Key-_002d-Buffer-Menus" 
accesskey="p" rel="prev">Smart Key - Buffer Menus</a>, Up: <a 
href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart Keyboard Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Tar-File-Mode-1"></a>
-<h4 class="subsection">E.2.32 Smart Key - Tar File Mode</h4>
+<h4 class="subsection">E.2.33 Smart Key - Tar File Mode</h4>
 <a name="index-click_002c-tar"></a>
 <a name="index-tar-archive-browsing"></a>
 <a name="index-extracting-from-tar-files"></a>
@@ -9447,7 +10348,9 @@ Next: <a href="#Smart-Key-_002d-Man-Pages" accesskey="n" 
rel="next">Smart Key -
      (2) on or after the last line in the buffer, if any deletes are to
          be performed, they are executed after user verification;
          otherwise, this tar file browser is quit.
-  ASSIST KEY
+</pre></div>
+<div class="format">
+<pre class="format">  ASSIST KEY
      (1) on an entry line, the current entry is marked for deletion;
      (2) on or after the last line in the buffer, all delete marks on
          all entries are undone.
@@ -9460,7 +10363,7 @@ Next: <a href="#Smart-Key-_002d-Man-Pages" accesskey="n" 
rel="next">Smart Key -
 Next: <a href="#Smart-Key-_002d-WWW-URLs" accesskey="n" rel="next">Smart Key - 
WWW URLs</a>, Previous: <a href="#Smart-Key-_002d-Tar-File-Mode" accesskey="p" 
rel="prev">Smart Key - Tar File Mode</a>, Up: <a href="#Smart-Keyboard-Keys" 
accesskey="u" rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Man-Pages-1"></a>
-<h4 class="subsection">E.2.33 Smart Key - Man Pages</h4>
+<h4 class="subsection">E.2.34 Smart Key - Man Pages</h4>
 <a name="index-man-page-references"></a>
 <a name="index-smart_002dman_002dc_002droutine_002dref"></a>
 <div class="format">
@@ -9477,46 +10380,73 @@ containing its pathname:
 <a name="Smart-Key-_002d-WWW-URLs"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-_002d-Rolo-Match-Buffers" accesskey="n" 
rel="next">Smart Key - Rolo Match Buffers</a>, Previous: <a 
href="#Smart-Key-_002d-Man-Pages" accesskey="p" rel="prev">Smart Key - Man 
Pages</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-_002d-HyRolo-Match-Buffers" accesskey="n" 
rel="next">Smart Key - HyRolo Match Buffers</a>, Previous: <a 
href="#Smart-Key-_002d-Man-Pages" accesskey="p" rel="prev">Smart Key - Man 
Pages</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-WWW-URLs-1"></a>
-<h4 class="subsection">E.2.34 Smart Key - WWW URLs</h4>
+<h4 class="subsection">E.2.35 Smart Key - WWW URLs</h4>
 <a name="index-click_002c-world_002dwide-web"></a>
 <a name="index-W3"></a>
 <a name="index-URL-2"></a>
-<a name="index-world_002dwide-web"></a>
+<a name="index-browse_002durl_002dbrowser_002dfunction-3"></a>
+<a name="index-World_002dwide-Web-2"></a>
+<a name="index-WWW-2"></a>
+<a name="index-C_002dh-h-c-u-1"></a>
+<a name="index-menu_002c-Cust_002fURL_002dDisplay-1"></a>
 <div class="format">
 <pre class="format">If pressed on a World-Wide Web universal resource locator 
(URL):
   ACTION KEY
-     Displays the referent for the URL at point.
+     Displays the referent for the URL at point using the web browser
+     given by the variable, <code>browse-url-browser-function</code>.  Adjust
+     this setting with the Cust/URL-Display <kbd>{C-h h c u}</kbd> menu.
   ASSIST KEY
      Displays help for the ACTION KEY.
 </pre></div>
 
 <hr>
-<a name="Smart-Key-_002d-Rolo-Match-Buffers"></a>
+<a name="Smart-Key-_002d-HyRolo-Match-Buffers"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-_002d-Gomoku-Game" accesskey="n" rel="next">Smart 
Key - Gomoku Game</a>, Previous: <a href="#Smart-Key-_002d-WWW-URLs" 
accesskey="p" rel="prev">Smart Key - WWW URLs</a>, Up: <a 
href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart Keyboard Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-_002d-Image-Thumbnails" accesskey="n" 
rel="next">Smart Key - Image Thumbnails</a>, Previous: <a 
href="#Smart-Key-_002d-WWW-URLs" accesskey="p" rel="prev">Smart Key - WWW 
URLs</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-_002d-Rolo-Match-Buffers-1"></a>
-<h4 class="subsection">E.2.35 Smart Key - Rolo Match Buffers</h4>
+<a name="Smart-Key-_002d-HyRolo-Match-Buffers-1"></a>
+<h4 class="subsection">E.2.36 Smart Key - HyRolo Match Buffers</h4>
 <a name="index-click_002c-hyrolo-matches"></a>
 <a name="index-hyrolo-matches"></a>
 <div class="format">
-<pre class="format">If pressed within an entry in the Rolo search results 
buffer:
+<pre class="format">If pressed within an entry in the HyRolo search results 
buffer:
   ACTION KEY or ASSIST KEY
      The entry is edited in the other window.
 </pre></div>
 
 <hr>
+<a name="Smart-Key-_002d-Image-Thumbnails"></a>
+<div class="header">
+<p>
+Next: <a href="#Smart-Key-_002d-Gomoku-Game" accesskey="n" rel="next">Smart 
Key - Gomoku Game</a>, Previous: <a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers" accesskey="p" rel="prev">Smart Key 
- HyRolo Match Buffers</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Key-_002d-Image-Thumbnails-1"></a>
+<h4 class="subsection">E.2.37 Smart Key - Image Thumbnails</h4>
+<a name="index-images"></a>
+<a name="index-thumbnails"></a>
+<a name="index-dired_002c-images"></a>
+<a name="index-image_002ddired_002dexternal_002dviewer"></a>
+<div class="format">
+<pre class="format">If pressed within a Dired Image Thumbnail buffer:
+  ACTION KEY
+     Selects the chosen thumbnail and scales its image for display in another 
Emacs window.
+  ASSIST KEY
+     Selects thumbnail and uses the external viewer named by 
<code>image-dired-external-viewer</code>
+     to display it.
+</pre></div>
+
+<hr>
 <a name="Smart-Key-_002d-Gomoku-Game"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-_002d-The-OO_002dBrowser" accesskey="n" 
rel="next">Smart Key - The OO-Browser</a>, Previous: <a 
href="#Smart-Key-_002d-Rolo-Match-Buffers" accesskey="p" rel="prev">Smart Key - 
Rolo Match Buffers</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-_002d-The-OO_002dBrowser" accesskey="n" 
rel="next">Smart Key - The OO-Browser</a>, Previous: <a 
href="#Smart-Key-_002d-Image-Thumbnails" accesskey="p" rel="prev">Smart Key - 
Image Thumbnails</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Gomoku-Game-1"></a>
-<h4 class="subsection">E.2.36 Smart Key - Gomoku Game</h4>
+<h4 class="subsection">E.2.38 Smart Key - Gomoku Game</h4>
 <a name="index-game_002c-gomoku"></a>
 <a name="index-gomoku"></a>
 <div class="format">
@@ -9534,7 +10464,7 @@ Next: <a href="#Smart-Key-_002d-The-OO_002dBrowser" 
accesskey="n" rel="next">Sma
 Next: <a href="#Smart-Key-_002d-Default-Context" accesskey="n" 
rel="next">Smart Key - Default Context</a>, Previous: <a 
href="#Smart-Key-_002d-Gomoku-Game" accesskey="p" rel="prev">Smart Key - Gomoku 
Game</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-The-OO_002dBrowser-1"></a>
-<h4 class="subsection">E.2.37 Smart Key - The OO-Browser</h4>
+<h4 class="subsection">E.2.39 Smart Key - The OO-Browser</h4>
 
 <a name="index-OO_002dBrowser"></a>
 <a name="index-object_002doriented-code-browsing"></a>
@@ -9608,11 +10538,11 @@ buffer after an OO-Browser Environment has been loaded:
 Previous: <a href="#Smart-Key-_002d-The-OO_002dBrowser" accesskey="p" 
rel="prev">Smart Key - The OO-Browser</a>, Up: <a href="#Smart-Keyboard-Keys" 
accesskey="u" rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Default-Context-1"></a>
-<h4 class="subsection">E.2.38 Smart Key - Default Context</h4>
+<h4 class="subsection">E.2.40 Smart Key - Default Context</h4>
 <a name="index-action_002dkey_002ddefault_002dfunction-1"></a>
 <a name="index-assist_002dkey_002ddefault_002dfunction-1"></a>
 <a name="index-hyperbole-1"></a>
-<a name="index-hyperbole_002dpopup_002dmenu"></a>
+<a name="index-hyperbole_002dpopup_002dmenu-1"></a>
 <a name="index-hkey_002dsummarize"></a>
 <a name="index-Smart-Key_002c-default-context-1"></a>
 <div class="format">
@@ -9720,9 +10650,10 @@ Next: <a href="#Future-Work" accesskey="n" 
rel="next">Future Work</a>, Previous:
 people have canceled meditation trips to the Far East after
 discovering that pressing the Action Key in random contexts serves a
 similar purpose much more cheaply.  We have not seen anyone&rsquo;s mind
-turn to jelly but with the thinking Hyperbole saves you, you might
+turn to jelly but with the cognition Hyperbole saves you, you might
 just grow a second one.  Eventually, you will be at peace and will
-understand that there is no adequate description of Hyperbole.
+understand that there is no adequate description of Hyperbole.  Just
+let it flow through you.
 </p>
 <p>Ok, joking aside, now that we have your attention, here are some
 serious questions and answers.
@@ -9854,7 +10785,7 @@ in mind, however.
 <dl compact="compact">
 <dt>Button Copying, Killing, and Yanking</dt>
 <dd><p>There is as yet no means of transferring explicit buttons among
-buffers. We realize this is a critical need.  Users should be able to
+buffers. We realize this is an important need.  Users should be able to
 manipulate text with embedded buttons in ordinary ways.  With this
 feature, Hyperbole would store the button attributes as text
 properties within the buffers so that if a button is copied, its
@@ -9869,6 +10800,16 @@ view of a Koutline and to move around in it, for ease 
of study.
 Switching between view and edit modes will also be simple.
 </p>
 </dd>
+<dt>Direct Manipulation</dt>
+<dd><p>Hyperbole is designed to let you rapidly navigate and manipulate
+large, distributed information spaces.  Being able to directly
+manipulate entities in these spaces will accelerate understanding and
+production of new information.  Already Hyperbole lets you drag
+buffers, windows, files, and directories and place them where you
+like.  But there is much more that can be done to allow for
+higher-level browsing and information organization.
+</p>
+</dd>
 <dt>Trails</dt>
 <dd><p>Trails are an extension to the basic history mechanism presently offered
 by Hyperbole.  Trails will allow a user to capture, edit and store a
@@ -10105,11 +11046,15 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
  &nbsp; 
 <a class="summary-letter" href="#Key-Index_ky_symbol-9"><b>=</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-10"><b>[</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-10"><b>?</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Key-Index_ky_symbol-11"><b>@</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-11"><b>]</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>[</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>~</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-13"><b>]</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Key-Index_ky_symbol-14"><b>~</b></a>
  &nbsp; 
 <br>
 <a class="summary-letter" href="#Key-Index_ky_letter-A"><b>A</b></a>
@@ -10171,14 +11116,14 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a 
href="#index-_002b"><code>+</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_symbol-5">,</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002c-or-_003e"><code>, or 
&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002c-or-_003e"><code>, or 
&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_symbol-6">-</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_002d"><code>-</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_symbol-7">.</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_002e"><code>.</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002e-or-_003c"><code>. or 
&lt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002e-or-_003c"><code>. or 
&lt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_symbol-8">0</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-0_002d9"><code>0-9</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyControl">HyControl</a></td></tr>
@@ -10186,32 +11131,35 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><th><a name="Key-Index_ky_symbol-9">=</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_003d"><code>=</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Key-Index_ky_symbol-10">[</a></th><td></td><td></td></tr>
+<tr><th><a name="Key-Index_ky_symbol-10">?</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-_003f"><code>?</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Key-Index_ky_symbol-11">@</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-_0040"><code>@</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Key-Index_ky_symbol-12">[</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_005b"><code>[</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Key-Index_ky_symbol-11">]</a></th><td></td><td></td></tr>
+<tr><th><a name="Key-Index_ky_symbol-13">]</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_005d"><code>]</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Key-Index_ky_symbol-12">~</a></th><td></td><td></td></tr>
+<tr><th><a name="Key-Index_ky_symbol-14">~</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_007e"><code>~</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-A">A</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-a"><code>a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-A"><code>A</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Action-Key-1"><code>Action 
Key</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-cell-argument-1"><code>Action Key, cell 
argument</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-hide-or-show-cell-1"><code>Action Key, hide or 
show cell</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-klink-1"><code>Action Key, 
klink</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-web-browsing-1"><code>Action Key, web 
browsing</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Assist-Key-1"><code>Assist 
Key</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-Assist-Key_002c-listing-attributes-1"><code>Assist Key, listing 
attributes</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-B">B</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-b"><code>b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-b-1"><code>b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-b-1"><code>b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-C">C</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-c"><code>c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_0024"><code>C-c 
$</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-_002b"><code>C-c 
+</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_002c"><code>C-c 
,</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_002e"><code>C-c 
.</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_002e-1"><code>C-c 
.</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
@@ -10222,9 +11170,8 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_003c"><code>C-c 
&lt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_003e"><code>C-c 
&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_0040"><code>C-c 
@</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-a"><code>C-c 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-b"><code>C-c 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-b-1"><code>C-c 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-_0040-1"><code>C-c 
@</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-_0040-2"><code>C-c 
@</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-c"><code>C-c 
c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002da"><code>C-c 
C-a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002db"><code>C-c 
C-b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
@@ -10232,9 +11179,6 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dd"><code>C-c 
C-d</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002df"><code>C-c 
C-f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dh"><code>C-c 
C-h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002di"><code>C-c 
C-i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dk"><code>C-c 
C-k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dl"><code>C-c 
C-l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dm"><code>C-c 
C-m</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dn"><code>C-c 
C-n</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002do"><code>C-c 
C-o</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
@@ -10244,24 +11188,14 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002ds"><code>C-c 
C-s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dt"><code>C-c 
C-t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002du"><code>C-c 
C-u</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dv"><code>C-c 
C-v</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dy"><code>C-c 
C-y</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-e"><code>C-c 
e</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-h"><code>C-c 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-h"><code>C-c 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-h-1"><code>C-c 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-k"><code>C-c 
k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-l"><code>C-c 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-m"><code>C-c 
m</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-M_002dc"><code>C-c 
M-c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-M_002dj"><code>C-c 
M-j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-M_002dl"><code>C-c 
M-l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-M_002dq"><code>C-c 
M-q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-p"><code>C-c 
p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-RET"><code>C-c <span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-RET-1"><code>C-c <span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-s"><code>C-c 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-t"><code>C-c 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-t-1"><code>C-c 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-t"><code>C-c 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_005c"><code>C-c 
\</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_005c-1"><code>C-c 
\</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-_005e"><code>C-c 
^</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
@@ -10272,6 +11206,9 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-C_002dh-h-1"><code>C-h 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dh-h-c-a"><code>C-h h c 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Customization">Customization</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dh-h-c-d"><code>C-h h c 
d</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dh-h-c-r"><code>C-h h c 
r</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dh-h-c-u"><code>C-h h c 
u</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Using-URLs-with-Find_002dFile">Using URLs with Find-File</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dh-h-c-u-1"><code>C-h h c 
u</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW URLs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dh-h-c-w"><code>C-h h c 
w</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Web-Search-Engines">Web Search Engines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dh-h-d-d"><code>C-h h d 
d</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dh-h-d-i"><code>C-h h d 
i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Invocation">Invocation</a></td></tr>
@@ -10285,49 +11222,41 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-C_002dh-h-s-f"><code>C-h h s 
f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dh-h-s-w"><code>C-h h s 
w</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dh-t"><code>C-h 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-C_002dj"><code>C-j</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Adding-and-Killing">Adding and Killing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-C_002dM_002dh"><code>C-M-h</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-C_002dM_002dj"><code>C-M-j</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Filling">Filling</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-C_002dM_002dq"><code>C-M-q</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Filling">Filling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-C_002dM_002dx"><code>C-M-x</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Creating-Types">Creating Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-C_002dt"><code>C-t</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002du-C_002dc-c"><code>C-u C-c 
c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-C_002du-C_002dc-C_002dc"><code>C-u C-c 
C-c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-C_002du-C_002dc-C_002dm"><code>C-u C-c 
C-m</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002du-C_002dc-h"><code>C-u C-c 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002du-C_002dc-k"><code>C-u C-c 
k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002du-C_002dc-m"><code>C-u C-c 
m</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-C_002du-C_002dc-M_002dl"><code>C-u C-c 
M-l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002du-C_002dc-s"><code>C-u C-c 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002du-C_002dh-A"><code>C-u C-h 
A</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002du-C_002dh-A-1"><code>C-u 
C-h A</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002du-c_002dj"><code>C-u 
c-j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002du-C_002dx-i"><code>C-u C-x 
i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002du-M_002do"><code>C-u 
M-o</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002du-M_002dRET"><code>C-u 
M-<span class="key">RET</span></code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002du-M_002dRET-1"><code>C-u 
M-<span class="key">RET</span></code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dx-_0024"><code>C-x 
$</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dx-_002b"><code>C-x 
+</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dx-C_002de"><code>C-x 
C-e</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Types">Creating Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dx-i"><code>C-x 
i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dx-m"><code>C-x 
m</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dx-o"><code>C-x 
o</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-C_002dy"><code>C-y</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Adding-and-Killing">Adding and Killing</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-D">D</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-d"><code>d</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-D"><code>D</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-DEL"><code><span 
class="key">DEL</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-DEL"><code><span 
class="key">DEL</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-down"><code>down</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-F">F</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-f"><code>f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-f-1"><code>f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-F"><code>F</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-f-1"><code>f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-H">H</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-h"><code>h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-H"><code>H</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-HyControl_002c-see-screen"><code>HyControl, see 
screen</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-HyRolo_002c-see-rolo"><code>HyRolo, see 
rolo</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-HyControl_002c-see-screen-1"><code>HyControl, see 
screen</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-HyRolo_002c-see-rolo"><code>HyRolo, see 
rolo</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-I">I</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-i"><code>i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10338,70 +11267,107 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><th><a name="Key-Index_ky_letter-K">K</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-k"><code>k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-keypad-number"><code>keypad 
number</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-Action-Key_002c-cell-argument"><code>koutliner, 
Action Key, cell argument</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-Action-Key_002c-hide-or-show-cell"><code>koutliner, 
Action Key, hide or show cell</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-Action-Key_002c-klink"><code>koutliner, Action Key, 
klink</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-Assist-Key_002c-listing-attributes"><code>koutliner,
 Assist Key, listing attributes</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Cell-Attributes">Cell Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-_002b"><code>koutliner, C-c 
+</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-a"><code>koutliner, C-c 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-b"><code>koutliner, C-c 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-b-1"><code>koutliner, C-c 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-C_002di"><code>koutliner, C-c 
C-i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-C_002dk"><code>koutliner, C-c 
C-k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-C_002dl"><code>koutliner, C-c 
C-l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-C_002dv"><code>koutliner, C-c 
C-v</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-e"><code>koutliner, C-c 
e</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-h"><code>koutliner, C-c 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-k"><code>koutliner, C-c 
k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-l"><code>koutliner, C-c 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-M_002dj"><code>koutliner, C-c 
M-j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-M_002dl"><code>koutliner, C-c 
M-l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-M_002dq"><code>koutliner, C-c 
M-q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-p"><code>koutliner, C-c 
p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-s"><code>koutliner, C-c 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-t"><code>koutliner, C-c 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dj"><code>koutliner, 
C-j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dM_002dj"><code>koutliner, 
C-M-j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dM_002dq"><code>koutliner, 
C-M-q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002du-C_002dc-h"><code>koutliner, C-u C-c 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002du-C_002dc-k"><code>koutliner, C-u C-c 
k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002du-C_002dc-M_002dl"><code>koutliner, C-u C-c 
M-l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002du-C_002dc-s"><code>koutliner, C-u C-c 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002du-c_002dj"><code>koutliner, C-u 
c-j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002du-C_002dx-i"><code>koutliner, C-u C-x 
i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dx-i"><code>koutliner, C-x 
i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dy"><code>koutliner, 
C-y</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-M_002d0-C_002dc-t"><code>koutliner, M-0 C-c 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-M_002d1-TAB"><code>koutliner, M-1 <span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-M_002dj"><code>koutliner, 
M-j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-M_002dq"><code>koutliner, 
M-q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-M_002dRET"><code>koutliner, M-<span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-M_002dTAB"><code>koutliner, M-<span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-TAB"><code>koutliner, <span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-L">L</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-l"><code>l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-left"><code>left</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-M">M</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-m"><code>m</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-M_002d0-C_002dc-t"><code>M-0 C-c 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-M_002d1-TAB"><code>M-1 <span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-M_002db"><code>M-b</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-M_002df"><code>M-f</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-M_002dj"><code>M-j</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Filling">Filling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-M_002do"><code>M-o</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#By-Dragging">By Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-M_002do-1"><code>M-o</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-M_002dq"><code>M-q</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Filling">Filling</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-M_002dRET"><code>M-<span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-M_002dRET-1"><code>M-<span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-M_002dRET-2"><code>M-<span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-M_002dTAB"><code>M-<span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-M_002dRET-1"><code>M-<span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-M_002dx-kotl_002dmode_003ashow_002dsubtree"><code>M-x 
kotl-mode:show-subtree</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-middle-mouse-key-1"><code>middle 
mouse key</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-N">N</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-n"><code>n</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-n-1"><code>n</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-n-1"><code>n</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-O">O</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-o"><code>o</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-O"><code>O</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-P">P</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-p"><code>p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-p"><code>p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-p-1"><code>p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-Q">Q</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-q"><code>q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-q-or-ESC"><code>q or <span 
class="key">ESC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-q-1"><code>q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-r"><code>r</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-right"><code>right</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-_002c"><code>rolo, 
,</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-_002e"><code>rolo, 
.</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-_003c"><code>rolo, 
&lt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-_003e"><code>rolo, 
&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-a"><code>rolo, 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-b"><code>rolo, 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-C_002dr"><code>rolo, 
C-r</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-C_002ds"><code>rolo, 
C-s</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-DEL"><code>rolo, <span 
class="key">DEL</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-e"><code>rolo, 
e</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-f"><code>rolo, 
f</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-h"><code>rolo, 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-l"><code>rolo, 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-M_002ds"><code>rolo, 
M-s</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-M_002dTAB"><code>rolo, 
M-<span class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-n"><code>rolo, 
n</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-o"><code>rolo, 
o</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-p"><code>rolo, 
p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-q"><code>rolo, 
q</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-r"><code>rolo, 
r</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-s"><code>rolo, 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-SHIFT_002dTAB"><code>rolo, <span 
class="key">SHIFT</span>-<span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-SPC"><code>rolo, <span 
class="key">SPC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-t"><code>rolo, 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-TAB"><code>rolo, <span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-u"><code>rolo, 
u</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-_002c"><code>rolo, 
,</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-_002e"><code>rolo, 
.</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-_003c"><code>rolo, 
&lt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-_003e"><code>rolo, 
&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-a"><code>rolo, 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-b"><code>rolo, 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-C_002dr"><code>rolo, 
C-r</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-C_002ds"><code>rolo, 
C-s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-DEL"><code>rolo, <span 
class="key">DEL</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-e"><code>rolo, 
e</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-f"><code>rolo, 
f</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-h"><code>rolo, 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-l"><code>rolo, 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-M_002ds"><code>rolo, 
M-s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-M_002dTAB"><code>rolo, 
M-<span class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-n"><code>rolo, 
n</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-o"><code>rolo, 
o</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-p"><code>rolo, 
p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-q"><code>rolo, 
q</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-r"><code>rolo, 
r</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-s"><code>rolo, 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-SHIFT_002dTAB"><code>rolo, <span 
class="key">SHIFT</span>-<span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-SPC"><code>rolo, <span 
class="key">SPC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-t"><code>rolo, 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-TAB"><code>rolo, <span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-u"><code>rolo, 
u</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-S">S</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-s"><code>s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10413,6 +11379,10 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-screen_002c-_002e"><code>screen, 
.</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-screen_002c-0_002d9"><code>screen, 
0-9</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-_003d"><code>screen, 
=</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-_003f"><code>screen, 
?</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-_0040"><code>screen, 
@</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-a"><code>screen, 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-A"><code>screen, 
A</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-b"><code>screen, 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-c"><code>screen, 
c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-screen_002c-C_002dc-_005c"><code>screen, C-c 
\</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10421,20 +11391,23 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-screen_002c-d"><code>screen, 
d</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-D"><code>screen, 
D</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-down"><code>screen, 
down</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-screen_002c-ESC"><code>screen, 
<span class="key">ESC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-f"><code>screen, 
f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-F"><code>screen, 
F</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-h"><code>screen, 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-H"><code>screen, 
H</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-i"><code>screen, 
i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-j"><code>screen, 
j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-k"><code>screen, 
k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-screen_002c-keypad-number"><code>screen, keypad 
number</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-l"><code>screen, 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-left"><code>screen, 
left</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-m"><code>screen, 
m</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-n"><code>screen, 
n</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-o"><code>screen, 
o</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-O"><code>screen, 
O</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-p"><code>screen, 
p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-q"><code>screen, 
q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-r"><code>screen, 
r</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-right"><code>screen, 
right</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-s"><code>screen, 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-t"><code>screen, 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10451,16 +11424,15 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a 
href="#index-shift_002dleft-mouse-key"><code>shift-left mouse 
key</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-shift_002dmiddle-mouse-key"><code>shift-middle mouse 
key</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-shift_002dright-mouse-key"><code>shift-right mouse 
key</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-SPC"><code><span 
class="key">SPC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-SPC"><code><span 
class="key">SPC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-T">T</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-t"><code>t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-TAB"><code><span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-TAB-1"><code><span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-U">U</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-u"><code>u</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-u-1"><code>u</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-u-1"><code>u</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-up"><code>up</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-W">W</a></th><td></td><td></td></tr>
@@ -10490,11 +11462,15 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
  &nbsp; 
 <a class="summary-letter" href="#Key-Index_ky_symbol-9"><b>=</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-10"><b>[</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-10"><b>?</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Key-Index_ky_symbol-11"><b>@</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-11"><b>]</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>[</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>~</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-13"><b>]</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Key-Index_ky_symbol-14"><b>~</b></a>
  &nbsp; 
 <br>
 <a class="summary-letter" href="#Key-Index_ky_letter-A"><b>A</b></a>
@@ -10593,11 +11569,13 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey"><code>action-key</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002ddefault_002dfunction">action-key-default-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002ddefault_002dfunction-1">action-key-default-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002ddepress_002dhook">action-key-depress-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002deol_002dfunction">action-key-eol-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dminibuffer_002dfunction">action-key-minibuffer-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Minibuffer-Menu-Activation">Minibuffer Menu 
Activation</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline"><code>action-key-modeline</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline_002dfunction">action-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline"><code>action-key-modeline</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key 
Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline_002dfunction">action-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key 
Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline_002dfunction-1">action-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Modeline-Clicks-and-Drags">Modeline Clicks and 
Drags</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002drelease_002dhook">action-key-release-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dmouse_002dkey"><code>action-mouse-key</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-actype_003acreate"><code>actype:create</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Action-Type-Creation">Action Type Creation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-actype_003acreate-1"><code>actype:create</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Action-Type-Creation">Action Type Creation</a></td></tr>
@@ -10638,17 +11616,20 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey"><code>assist-key</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002ddefault_002dfunction">assist-key-default-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002ddefault_002dfunction-1">assist-key-default-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002ddepress_002dhook">assist-key-depress-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002deol_002dfunction">assist-key-eol-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dminibuffer_002dfunction">assist-key-minibuffer-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Minibuffer-Menu-Activation">Minibuffer Menu 
Activation</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline"><code>assist-key-modeline</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline_002dfunction">assist-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline"><code>assist-key-modeline</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key 
Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline_002dfunction">assist-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key 
Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline_002dfunction-1">assist-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Modeline-Clicks-and-Drags">Modeline Clicks and 
Drags</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002drelease_002dhook">assist-key-release-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dmouse_002dkey"><code>assist-mouse-key</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-B">B</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-browse_002durl_002dbrowser_002dfunction">browse-url-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-browse_002durl_002dbrowser_002dfunction-1">browse-url-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-browse_002durl_002dbrowser_002dfunction-2">browse-url-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Action-Types">Action Types</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-browse_002durl_002dbrowser_002dfunction-3">browse-url-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW 
URLs</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-C">C</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-c_002b_002b_002dcpp_002dinclude_002dpath">c++-cpp-include-path</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-C_002b_002b-Source-Code">Smart Key - 
C++ Source Code</a></td></tr>
@@ -10668,7 +11649,7 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-defact"><code>defact</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Action-Type-Creation">Action Type Creation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-defib"><code>defib</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Implicit-Button-Types">Implicit Button 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-dir_002c-_007e_002f_002ehyperb">dir, 
~/.hyperb</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Files">Button Files</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-dired_002djump"><code>dired-jump</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dired_002djump"><code>dired-jump</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key 
Modeline Clicks</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-E">E</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ebut_002dcreate_002dhook">ebut-create-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
@@ -10682,14 +11663,15 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-eval_002dlast_002dsexp"><code>eval-last-sexp</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Creating-Types">Creating Types</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-F">F</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Renaming">Renaming</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-1">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-2">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-1">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Renaming">Renaming</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-2">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-3">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-4">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-5">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-_002ehypb">file, 
.hypb</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-file_002c-_002ekotl-suffix">file, .kotl 
suffix</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Outlines">Creating Outlines</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file_002c-DEMO">file, 
DEMO</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-file_002c-DEMO-1">file, 
DEMO</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-DIR">file, 
DIR</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-file_002c-EXAMPLE_002ekotl">file, 
EXAMPLE.kotl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-file_002c-func_002dmenu_002eel">file, 
func-menu.el</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -10735,33 +11717,39 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hbut_003alabel_002dto_002dkey">hbut:label-to-key</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Button-Label-Normalization">Button Label 
Normalization</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dbegin_002dload_002dhook">hibtypes-begin-load-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dend_002dload_002dhook">hibtypes-end-load-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dgit_002ddefault_002dproject">hibtypes-git-default-project</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dgit_002ddefault_002dproject-1">hibtypes-git-default-project</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dgithub_002ddefault_002dproject">hibtypes-github-default-project</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dgithub_002ddefault_002duser">hibtypes-github-default-user</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dgithub_002ddefault_002duser-1">hibtypes-github-default-user</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dsocial_002ddefault_002dservice">hibtypes-social-default-service</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002dalist">hkey-alist</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002dalways_002ddisplay_002dmenu">hkey-always-display-menu</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Smart-Menus">Smart Key - Smart 
Menus</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hkey_002deither"><code>hkey-either</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002dinit">hkey-init</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002dinit_002doverride_002dlocal_002dkeys">hkey-init-override-local-keys</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002doperate"><code>hkey-operate</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#By-Dragging">By Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002dsummarize"><code>hkey-summarize</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hkey_002dtoggle_002dbindings"><code>hkey-toggle-bindings</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmail_003alister">hmail:lister</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-_002d-Email-Composers">Smart Key - Email 
Composers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmail_003areader">hmail:reader</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-_002d-Email-Composers">Smart Key - Email 
Composers</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dadd_002dunshifted_002dsmart_002dkeys"><code>hmouse-add-unshifted-smart-keys</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dalist">hmouse-alist</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dcontext_002dibuffer_002dmenu"><code>hmouse-context-ibuffer-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dcontext_002dmenu"><code>hmouse-context-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dcontext_002dibuffer_002dmenu"><code>hmouse-context-ibuffer-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key 
Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dcontext_002dmenu"><code>hmouse-context-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key 
Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002ddrag_002ditem_002dmode_002dforms">hmouse-drag-item-mode-forms</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags 
outside a Window</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dget_002dbindings"><code>hmouse-get-bindings</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dget_002dbindings-1"><code>hmouse-get-bindings</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dmiddle_002dflag">hmouse-middle-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Keys">Smart Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dmiddle_002dflag-1">hmouse-middle-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dmod_002dmode-1">hmouse-mod-mode</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modifiers">Smart Key Modifiers</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dmod_002dmode"><code>hmouse-mod-mode</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modifiers">Smart Key Modifiers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dsetup"><code>hmouse-setup</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dsetup-1"><code>hmouse-setup</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dtoggle_002dbindings"><code>hmouse-toggle-bindings</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dx_002ddiagonal_002dsensitivity">hmouse-x-diagonal-sensitivity</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - 
Drags within a Window</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dx_002ddrag_002dsensitivity">hmouse-x-drag-sensitivity</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - 
Drags within a Window</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dy_002ddiagonal_002dsensitivity">hmouse-y-diagonal-sensitivity</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - 
Drags within a Window</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dy_002ddrag_002dsensitivity">hmouse-y-drag-sensitivity</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - 
Drags within a Window</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dtoggle_002dbindings"><code>hmouse-toggle-bindings</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dx_002ddiagonal_002dsensitivity">hmouse-x-diagonal-sensitivity</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags 
within a Window</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dx_002ddrag_002dsensitivity">hmouse-x-drag-sensitivity</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags 
within a Window</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dy_002ddiagonal_002dsensitivity">hmouse-y-diagonal-sensitivity</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags 
within a Window</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dy_002ddrag_002dsensitivity">hmouse-y-drag-sensitivity</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags 
within a Window</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hpath_003aat_002dp"><code>hpath:at-p</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hpath_003adisplay_002dwhere">hpath:display-where</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Referent-Display">Referent Display</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hpath_003aexternal_002ddisplay_002dalist_002dmacos">hpath:external-display-alist-macos</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#External-Viewers">External Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hpath_003aexternal_002ddisplay_002dalist_002dmswindows">hpath:external-display-alist-mswindows</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#External-Viewers">External Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hpath_003aexternal_002ddisplay_002dalist_002dx">hpath:external-display-alist-x</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#External-Viewers">External Viewers</a></td></tr>
@@ -10772,20 +11760,28 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hpath_003asuffixes">hpath:suffixes</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hpath_003avariables">hpath:variables</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Link-Variable-Substitution">Link Variable 
Substitution</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hproperty_003abut_002dcreate"><code>hproperty:but-create</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Button-Colors">Button Colors</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hproperty_003abut_002demphasize_002dp">hproperty:but-emphasize-p</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Button-Colors">Button Colors</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hproperty_003abut_002demphasize_002dflag">hproperty:but-emphasize-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Button-Colors">Button Colors</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hproperty_003abut_002dhighlight_002dflag">hproperty:but-highlight-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hproperty_003acycle_002dbut_002dcolor"><code>hproperty:cycle-but-color</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-htype_002dcreate_002dhook">htype-create-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-htype_002ddelete_002dhook">htype-delete-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hui_002dmenu_002dscreen_002dcommands"><code>hui-menu-screen-commands</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hui_002dmenu_002dscreen_002dcommands"><code>hui-menu-screen-commands</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key 
Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_002dselect_002dgoto_002dmatching_002dtag"><code>hui-select-goto-matching-tag</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_002dselect_002dthing"><code>hui-select-thing</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_002dselect_002dthing_002dwith_002dmouse"><code>hui-select-thing-with-mouse</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_003aebut_002ddelete_002dconfirm_002dp">hui:ebut-delete-confirm-p</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Deletion">Deletion</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_003aebut_002dprompt_002dfor_002daction">hui:ebut-prompt-for-action</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Action-Types">Action Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_003aebut_002drename"><code>hui:ebut-rename</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Renaming">Renaming</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002ddisplay_002dbuffer_002dpredicate_002dlist">hycontrol-display-buffer-predicate-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002denable_002d_002dwindows_002dmode"><code>hycontrol-enable--windows-mode</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002denable_002dframes_002dmode"><code>hycontrol-enable-frames-mode</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dframe_002dheights">hycontrol-frame-heights</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dframe_002doffset">hycontrol-frame-offset</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dframe_002doffset-1">hycontrol-frame-offset</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dframe_002dwidths">hycontrol-frame-widths</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dget_002dscreen_002doffsets"><code>hycontrol-get-screen-offsets</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dkeep_002dwindow_002dflag">hycontrol-keep-window-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dkeep_002dwindow_002dflag-1">hycontrol-keep-window-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags 
outside a Window</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dscreen_002doffset_002dalist">hycontrol-screen-offset-alist</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dset_002dscreen_002doffsets"><code>hycontrol-set-screen-offsets</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hypb_003argrep_002dcommand">hypb:rgrep-command</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Menus">Menus</a></td></tr>
@@ -10793,33 +11789,39 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hyperbole"><code>hyperbole</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Invocation">Invocation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyperbole-1"><code>hyperbole</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dinit_002dhook">hyperbole-init-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dpopup_002dmenu"><code>hyperbole-popup-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dpopup_002dmenu"><code>hyperbole-popup-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dpopup_002dmenu-1"><code>hyperbole-popup-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dtoggle_002dbindings"><code>hyperbole-toggle-bindings</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dtoggle_002dbindings-1"><code>hyperbole-toggle-bindings</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dweb_002dsearch_002dalist">hyperbole-web-search-alist</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Web-Search-Engines">Web Search Engines</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dweb_002dsearch_002dbrowser_002dfunction">hyperbole-web-search-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd"><code>hyrolo-add</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd_002dhook">hyrolo-add-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd"><code>hyrolo-add</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd_002dhook">hyrolo-add-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd_002dhook-1">hyrolo-add-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dformat_002dfunction">hyrolo-display-format-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dformat_002dfunction">hyrolo-display-format-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dhook">hyrolo-display-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dmatches"><code>hyrolo-display-matches</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit"><code>hyrolo-edit</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit_002dhook">hyrolo-edit-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dmatches"><code>hyrolo-display-matches</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit"><code>hyrolo-edit</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit_002dhook">hyrolo-edit-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit_002dhook-1">hyrolo-edit-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002demail_002dformat">hyrolo-email-format</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dentry_002dregexp">hyrolo-entry-regexp</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfgrep"><code>hyrolo-fgrep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfile_002dlist">hyrolo-file-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dgrep"><code>hyrolo-grep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dhdr_002dregexp">hyrolo-hdr-regexp</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dhighlight_002dface">hyrolo-highlight-face</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dkill"><code>hyrolo-kill</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dkill_002dbuffers_002dafter_002duse">hyrolo-kill-buffers-after-use</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dmail_002dto"><code>hyrolo-mail-to</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002demail_002dformat">hyrolo-email-format</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dentry_002dregexp">hyrolo-entry-regexp</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfgrep"><code>hyrolo-fgrep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfile_002dlist">hyrolo-file-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dgoogle_002dcontacts_002dfgrep"><code>hyrolo-google-contacts-fgrep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dgoogle_002dcontacts_002dflag">hyrolo-google-contacts-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dgoogle_002dcontacts_002dgrep"><code>hyrolo-google-contacts-grep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dgrep"><code>hyrolo-grep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dhdr_002dregexp">hyrolo-hdr-regexp</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dhighlight_002dface">hyrolo-highlight-face</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dkill"><code>hyrolo-kill</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dkill_002dbuffers_002dafter_002duse">hyrolo-kill-buffers-after-use</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dmail_002dto"><code>hyrolo-mail-to</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dmode_002dhook">hyrolo-mode-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsave_002dbuffers_002dafter_002duse">hyrolo-save-buffers-after-use</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsort"><code>hyrolo-sort</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dword"><code>hyrolo-word</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dyank"><code>hyrolo-yank</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsave_002dbuffers_002dafter_002duse">hyrolo-save-buffers-after-use</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsort"><code>hyrolo-sort</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dword"><code>hyrolo-word</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dyank"><code>hyrolo-yank</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dyank_002dreformat_002dfunction">hyrolo-yank-reformat-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hywconfig_002dadd_002dby_002dname"><code>hywconfig-add-by-name</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Window-Configurations">Window 
Configurations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hywconfig_002ddelete_002dby_002dname"><code>hywconfig-delete-by-name</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Window-Configurations">Window 
Configurations</a></td></tr>
@@ -10847,6 +11849,9 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-elisp_002dcompiler_002dmsg"><code>ibtypes 
elisp-compiler-msg</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-ibtypes-etags"><code>ibtypes 
etags</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-function_002din_002dbuffer"><code>ibtypes 
function-in-buffer</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-ibtypes-git_002dcommit_002dreference"><code>ibtypes 
git-commit-reference</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-ibtypes-git_002dreference"><code>ibtypes 
git-reference</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-ibtypes-github_002dreference"><code>ibtypes 
github-reference</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-gnus_002dpush_002dbutton"><code>ibtypes 
gnus-push-button</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-grep_002dmsg"><code>ibtypes 
grep-msg</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-hyp_002daddress"><code>ibtypes 
hyp-address</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -10869,6 +11874,7 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-text_002dtoc"><code>ibtypes 
text-toc</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-www_002durl"><code>ibtypes 
www-url</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibut_003aat_002dp"><code>ibut:at-p</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Button-Types">Implicit Button 
Types</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-image_002ddired_002dexternal_002dviewer">image-dired-external-viewer</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Image-Thumbnails">Smart Key - Image 
Thumbnails</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Info_002ddirectory_002dlist">Info-directory-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Invocation">Invocation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Info_002dglobal_002dnext"><code>Info-global-next</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Info-Manuals">Smart Key - Info 
Manuals</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Info_002dglobal_002dprev"><code>Info-global-prev</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Info-Manuals">Smart Key - Info 
Manuals</a></td></tr>
@@ -11119,6 +12125,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
  &nbsp; 
 <a class="summary-letter" href="#Concept-Index_cp_letter-P"><b>P</b></a>
  &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp; 
 <a class="summary-letter" href="#Concept-Index_cp_letter-R"><b>R</b></a>
  &nbsp; 
 <a class="summary-letter" href="#Concept-Index_cp_letter-S"><b>S</b></a>
@@ -11155,24 +12163,23 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-action-1">action</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Action-Types">Action Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Action-Key">Action 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Action-Key-drag">Action Key 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-Action-Key-drag-emulation">Action Key drag 
emulation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-cell-argument">Action Key, cell 
argument</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-hide-or-show-cell">Action Key, hide or show 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Action-Key_002c-klink">Action 
Key, klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-web-browsing">Action Key, web 
browsing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Action-Mouse-Key">Action Mouse 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Thing-Selection">Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Action-Mouse-Key-1">Action Mouse 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Action-Mouse-Key-drag">Action 
Mouse Key drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Drags">Smart Mouse Key Drags</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-action-type">action 
type</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Action-Types">Action 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action-type_002c-creation">action type, 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Action-Type-Creation">Action Type Creation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-activating-implicit-button">activating implicit 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-activation">activation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-active-region">active 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-between-Windows">Smart Mouse - Drags between 
Windows</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-active-region-1">active 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-active-region">active 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-between-Windows">Smart Mouse Drags between 
Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-active-region-1">active 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-actype_002c-link_002dto_002dmail">actype, 
link-to-mail</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-actypes_002c-list-of">actypes, 
list of</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Action-Types">Action 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-address">address</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-alpha-labels">alpha 
labels</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-Ange_002dftp">Ange-ftp</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-anonymous-ftp">anonymous 
ftp</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Top">Top</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-API">API</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Embedding-Hyperbole">Embedding Hyperbole</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-appending-to-a-cell">appending 
to a cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
@@ -11192,6 +12199,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-Assist-Key_002c-listing-attributes">Assist Key, listing 
attributes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Assist-Mouse-Key">Assist Mouse 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Thing-Selection">Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Assist-Mouse-Key-1">Assist Mouse 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Assist-Mouse-Key-drag">Assist 
Mouse Key drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Drags">Smart Mouse Key Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-attribute">attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-attribute_002c-adding">attribute, 
adding</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Cell-Attributes">Cell 
Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-attribute_002c-modifying">attribute, 
modifying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
@@ -11206,28 +12214,41 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-autonumber-1">autonumber</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-B">B</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-BBDB">BBDB</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Settings">Rolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-balance-windows">balance 
windows</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-BBDB">BBDB</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-bibliography">bibliography</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Big-Brother-DataBase">Big 
Brother DataBase</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Settings">Rolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Big-Brother-DataBase">Big 
Brother DataBase</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-blank-lines_002c-toggle">blank 
lines, toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-bookmarks">bookmarks</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Buttons">Global Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-boolean-expressions">boolean 
expressions</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-breakpoint">breakpoint</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-browsing-URLs">browsing 
URLs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Using-URLs-with-Find_002dFile">Using URLs with Find-File</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-browsing-URLs-in-find_002dfile">browsing URLs in 
find-file</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Using-URLs-with-Find_002dFile">Using URLs with Find-File</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-buffer-menu">buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer-id">buffer 
id</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer-menu">buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-buffer-menu-1">buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-buffer-menu-2">buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Buffer-Menus">Smart Key - Buffer Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer-menu-item-drag">buffer 
menu item drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer_002c-bury">buffer, 
bury</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer_002c-copy">buffer, 
copy</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-Buffers">Displaying Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer_002c-swap">buffer, 
swap</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Swapping-Buffers">Swapping Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer_002c-swap-1">buffer, 
swap</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer_002c-unbury">buffer, 
unbury</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-bug-tracking">bug 
tracking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-bury-buffer">bury 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-burying">burying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-button">button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-action">button 
action</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Action-Types">Action 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-activation">button 
activation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-attribute">button 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button-attributes">button 
attributes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Operational-and-Storage-Formats">Operational and Storage 
Formats</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-attributes">button 
attributes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modification">Modification</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-attributes-1">button 
attributes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Operational-and-Storage-Formats">Operational and Storage 
Formats</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-category">button 
category</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-click">button 
click</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Hyperbole-Buttons">Smart Key - Hyperbole 
Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-creation">button 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-data">button 
data</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-data-saving">button data 
saving</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Hook-Variables">Hook 
Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-deletion">button 
deletion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Deletion">Deletion</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-demo">button 
demo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-emphasis">button 
emphasis</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-button-file_002c-directory">button file, 
directory</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Files">Button Files</a></td></tr>
@@ -11236,37 +12257,33 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-button-files">button 
files</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Button-Files">Button 
Files</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-flashing">button 
flashing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-help">button 
help</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-help-1">button 
help</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Searching-and-Summarizing">Searching and Summarizing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-highlighting">button 
highlighting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-highlighting-1">button 
highlighting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-button-highlighting_002c-forcing">button highlighting, 
forcing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-instance">button 
instance</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Menu">By 
Menu</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-key">button 
key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Label-Normalization">Button Label Normalization</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-label">button 
label</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-label-1">button 
label</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Global-Buttons">Global 
Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-label-2">button 
label</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Label-Normalization">Button Label Normalization</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-label-overlap">button 
label overlap</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Type-Precedence">Button Type Precedence</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-mailing">button 
mailing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-modification">button 
modification</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modification">Modification</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-name">button 
name</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-posting">button 
posting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-posting-1">button 
posting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-News">Buttons in News</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-precedence">button 
precedence</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Type-Precedence">Button Type Precedence</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-attributes">button, 
attributes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modification">Modification</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-creation">button, 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-deleting">button, 
deleting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Deletion">Deletion</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-renaming">button 
renaming</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Renaming">Renaming</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-searching">button 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Searching-and-Summarizing">Searching and Summarizing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-button-summary">button 
summary</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Searching-and-Summarizing">Searching and Summarizing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button_002c-explicit">button, 
explicit</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button_002c-explicit-1">button, 
explicit</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button_002c-global">button, 
global</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button_002c-global-1">button, 
global</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Buttons">Global Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-help">button, 
help</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Location">Location</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button_002c-implicit">button, 
implicit</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button_002c-implicit-1">button, 
implicit</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-mailing">button, 
mailing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-modifying">button, 
modifying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modification">Modification</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button_002c-moving">button, 
moving</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-button_002c-multiple-lines">button, multiple 
lines</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Label-Normalization">Button Label Normalization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-posting">button, 
posting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-posting-1">button, 
posting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-News">Buttons in News</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-renaming">button, 
renaming</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Renaming">Renaming</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-searching">button, 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Location">Location</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-button_002c-split-across-lines">button, split across 
lines</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Label-Normalization">Button Label Normalization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-button_002c-summarizing">button, 
summarizing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Location">Location</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-byte-compiler-error">byte 
compiler error</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-C">C</a></th><td></td><td></td></tr>
@@ -11303,19 +12320,22 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-cell_002c-top_002dlevel-1">cell, 
top-level</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Idstamps">Idstamps</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-transposing">cell, 
transposing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-cell_002c-yanking-contents">cell, yanking 
contents</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-change-key-bindings">change key 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-change-key-bindings">change key 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-change-key-bindings-1">change 
key bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-changing-the-view-spec">changing 
the view spec</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-chord-keyboards">chord 
keyboards</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modifiers">Smart Key Modifiers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-buffer-menu">click, 
buffer menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Buffer-Menus">Smart Key - Buffer Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-button">click, 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Hyperbole-Buttons">Smart Key - Hyperbole 
Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-dired">click, 
dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Dired-Mode">Smart Key - Dired Mode</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-end-of-line">click, 
end of line</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-Gnus">click, 
Gnus</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-GNUS-Newsreader">Smart Key - GNUS 
Newsreader</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-click_002c-hyrolo-matches">click, hyrolo 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Rolo-Match-Buffers">Smart Key - Rolo Match 
Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-click_002c-hyrolo-matches">click, hyrolo 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">Smart Key - HyRolo Match 
Buffers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-ibuffer-menu">click, 
ibuffer menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Buffer-Menus">Smart Key - Buffer Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-Info">click, 
Info</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Info-Manuals">Smart Key - Info Manuals</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-tar">click, 
tar</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Tar-File-Mode">Smart Key - Tar File Mode</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-click_002c-world_002dwide-web">click, world-wide 
web</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW URLs</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-clone-window">clone 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cloning-Windows">Cloning Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-clone-window-1">clone 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-clone-window-2">clone 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags outside a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-code-block-selection">code block 
selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-collaboration">collaboration</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Koutliner-History">Koutliner History</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-collapse-lines">collapse 
lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
@@ -11324,21 +12344,21 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-comment-1">comment</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-compiler-error">compiler 
error</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-compiler-error-1">compiler 
error</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-completion">completion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-completion-1">completion</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-completion">completion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-completion-1">completion</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-completion-2">completion</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-_002d-Argument-Completion">Smart Key - 
Argument Completion</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-configuration">configuration</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Customization">Customization</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-context">context</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-context_002dsensitive-help">context-sensitive 
help</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-control-key-modifier">control 
key modifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modifiers">Smart Key Modifiers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-copy-and-yank">copy and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Thing-Selection">Thing 
Selection</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-copy-and-yank-1">copy and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-between-Windows">Smart Mouse - Drags between 
Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-copy-and-yank-1">copy and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-between-Windows">Smart Mouse Drags between 
Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-copy-and-yank-2">copy and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-copy-buffer">copy 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-Buffers">Displaying Buffers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-copy-region">copy 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-copying">copying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-create_002dtime-attribute">create-time 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-creating-a-link">creating a 
link</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-creating-frames">creating 
frames</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-creating-buttons">creating 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-creating-links">creating 
links</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-creator-attribute">creator 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-credits">credits</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Top">Top</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cross-referencing">cross 
referencing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner-History">Koutliner History</a></td></tr>
@@ -11348,54 +12368,78 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-customization">customization</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Customization">Customization</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-customization-1">customization</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Customization">Customization</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-customize">customize</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-additions">customize, rolo 
additions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-datestamps">customize, rolo 
datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-edits">customize, rolo 
edits</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-additions">customize, rolo 
additions</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-datestamps">customize, rolo 
datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-edits">customize, rolo 
edits</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-customizing-web-search-menu">customizing web search 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Web-Search-Engines">Web 
Search Engines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cut-region">cut 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cutoff-lines">cutoff 
lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-D">D</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-database">database</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-RDB-Mode">Smart Key - RDB Mode</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-datestamps">datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-datestamps">datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-dbx">dbx</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-debugging-Smart-Keys">debugging 
Smart Keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-default-label-type">default 
label type</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-default-Smart-Key-context">default Smart Key 
context</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-definitions">definitions</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Glossary">Glossary</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-delete-frame">delete 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-delimited-things">delimited 
things</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-demo-file">demo 
file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Manual-Overview">Manual 
Overview</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-demonstration">demonstration</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-demotion">demotion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-depress_002c-modeline">depress, 
modeline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modeline-Clicks-and-Drags">Modeline Clicks and Drags</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-diagonal-drag">diagonal 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-diagonal-drag">diagonal 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Saving-and-Restoring-Window-Configurations">Saving and Restoring Window 
Configurations</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-diagonal-drag-1">diagonal 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-digital-signature">digital 
signature</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-direct-link-creation">direct 
link creation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#By-Dragging">By Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-direct-selection">direct 
selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-directory-editor">directory 
editor</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-dired">dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-directory-editor">directory 
editor</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dired">dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dired-1">dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-dired-browsing">dired 
browsing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Dired-Mode">Smart Key - Dired Mode</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-dired-item-drag">dired item 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-dired_002c-images">dired, 
images</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Image-Thumbnails">Smart Key - Image 
Thumbnails</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-disable-global-key-bindings">disable global key 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-disable-Hyperbole">disable 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-disable-Hyperbole">disable 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-disable-Hyperbole-1">disable 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-disable-local-key-override">disable local key 
override</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-display">display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-display-function">display 
function</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-display-where">display 
where</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-DisplayHere-mode">DisplayHere 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Dired-Mode">Smart Key - Dired Mode</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-distributed-collaboration">distributed 
collaboration</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner-History">Koutliner History</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-document-identifier">document 
identifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-double-click">double 
click</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-drag">drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#By-Dragging">By Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-drag-1">drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-drag-2">drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-drag_002c-diagonal">drag, 
diagonal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-drag_002c-horizontal">drag, 
horizontal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-drag_002c-buffer-menu-item">drag, buffer menu 
item</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-buffer-swap">drag, 
buffer swap</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Swapping-Buffers">Swapping Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-clone-window">drag, 
clone window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cloning-Windows">Cloning Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-copy-buffer">drag, 
copy buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-Buffers">Displaying Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-diagonal">drag, 
diagonal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Saving-and-Restoring-Window-Configurations">Saving and Restoring Window 
Configurations</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-diagonal-1">drag, 
diagonal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-dired">drag, 
dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Dired-Mode">Smart Key - Dired Mode</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-dired-item">drag, 
dired item</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-horizontal">drag, 
horizontal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-horizontal-1">drag, 
horizontal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-resize-window">drag, 
resize window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Resizing-Windows">Resizing Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-side-edge">drag, side 
edge</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Side_002dby_002dSide-Window-Resizing">Side-by-Side Window 
Resizing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-drag_002c-vertical">drag, 
vertical</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-Smart-Mouse-Key">drag, 
Smart Mouse Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Drags">Smart Mouse Key Drags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-vertical">drag, 
vertical</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-vertical-1">drag, 
vertical</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-drag_002c-window-configuration">drag, window 
configuration</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Saving-and-Restoring-Window-Configurations">Saving and Restoring Window 
Configurations</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-with-region">drag, 
with region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-drag_002c-with-region-1">drag, 
with region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-with-region-1">drag, 
with region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-dragging-items">dragging 
items</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags outside a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dragging-items_002c-buffer-menu">dragging items, buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dragging-items_002c-dired">dragging items, 
dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-dragging-outside-Emacs">dragging 
outside Emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags outside a 
Window</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-E">E</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-e_002dmail-address">e-mail 
address</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-e_002dmail-address-1">e-mail 
address</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-EFS">EFS</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ellipses">ellipses</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Emacs">Emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Emacs-1">Emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
@@ -11404,25 +12448,28 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Emacs-Lisp-variables">Emacs Lisp 
variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Link-Variable-Substitution">Link Variable Substitution</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-emacs-outline">emacs 
outline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Emacs-support">Emacs 
support</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-emulation_002c-Action-Key-drag">emulation, Action Key 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-enabling-URLs-in-find_002dfile">enabling URLs in 
find-file</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Using-URLs-with-Find_002dFile">Using URLs with Find-File</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-end-of-line-click">end of line 
click</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Engelbart">Engelbart</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner-History">Koutliner History</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Engelbart-1">Engelbart</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-environment-variables">environment 
variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Link-Variable-Substitution">Link Variable Substitution</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-equalize-windows">equalize 
windows</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-etags-entry">etags 
entry</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-exchanging-cells">exchanging 
cells</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-exit-HyControl">exit 
HyControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-expanding">expanding</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-explicit-button">explicit 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-explicit-button-1">explicit 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-creation">explicit button, 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-creation-1">explicit button, 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Programmatic-Button-Creation">Programmatic Button Creation</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-deleting">explicit button, 
deleting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Deletion">Deletion</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-formats">explicit button, 
formats</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Operational-and-Storage-Formats">Operational and Storage 
Formats</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-modifying">explicit button, 
modifying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modification">Modification</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-renaming">explicit button, 
renaming</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Renaming">Renaming</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-searching">explicit button, 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Location">Location</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-storage">explicit button, 
storage</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Operational-and-Storage-Formats">Operational and Storage 
Formats</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-summarizing">explicit button, 
summarizing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Location">Location</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-explicit-button-creation">explicit button 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-explicit-button-deletion">explicit button 
deletion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Deletion">Deletion</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-explicit-button-formats">explicit button 
formats</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Operational-and-Storage-Formats">Operational and Storage 
Formats</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-explicit-button-modification">explicit button 
modification</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modification">Modification</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-explicit-button-renaming">explicit button 
renaming</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Renaming">Renaming</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-explicit-button-searching">explicit button 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Searching-and-Summarizing">Searching and Summarizing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-explicit-button-storage">explicit button 
storage</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Operational-and-Storage-Formats">Operational and Storage 
Formats</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-explicit-button-summary">explicit button 
summary</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Searching-and-Summarizing">Searching and Summarizing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-explicit-button_002c-creation">explicit button, 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Programmatic-Button-Creation">Programmatic Button Creation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-exporting">exporting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Exporting">Exporting</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-exporting-an-outline">exporting 
an outline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-external-klink">external 
klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
@@ -11433,6 +12480,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-F">F</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file-display-function">file 
display function</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-file_002c-DEMO">file, 
DEMO</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Manual-Overview">Manual 
Overview</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-file_002c-hycontrol_002eel">file, 
hycontrol.el</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-importing">file, 
importing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-filename">filename</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-fill-prefix">fill 
prefix</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Label-Normalization">Button Label Normalization</a></td></tr>
@@ -11440,7 +12489,20 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-filling-1">filling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Find">Find</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-find_002dfile_002c-browsing-URLs">find-file, browsing 
URLs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Using-URLs-with-Find_002dFile">Using URLs with Find-File</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-frame-creation">frame 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-flashing-buttons">flashing 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame-configuration">frame 
configuration</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame-relocate">frame 
relocate</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame-resize">frame 
resize</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame_002c-delete">frame, 
delete</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame_002c-lower">frame, 
lower</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame_002c-make">frame, 
make</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame_002c-maximize">frame, 
maximize</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame_002c-other">frame, 
other</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-frame_002c-percentage-resize">frame, percentage 
resize</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame_002c-raise">frame, 
raise</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame_002c-shrink">frame, 
shrink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame_002c-to-edge">frame, to 
edge</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-frame_002c-zoom">frame, 
zoom</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-frames-control">frames 
control</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ftp">ftp</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ftp-1">ftp</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11452,11 +12514,15 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><th><a name="Concept-Index_cp_letter-G">G</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-game_002c-gomoku">game, 
gomoku</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Gomoku-Game">Smart Key - Gomoku Game</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-gdb">gdb</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-git-commit-reference">git commit 
reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-git-reference">git 
reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-github-reference">github 
reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-global-button">global 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-global-button-1">global 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Buttons">Global Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-global-button-2">global 
button</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Button-Files">Button 
Files</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-global-button_002c-modify">global button, 
modify</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Questions-and-Answers">Questions and Answers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-glossary">glossary</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Gmail-Contacts">Gmail 
Contacts</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-GNU-Emacs">GNU 
Emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-GNU-Hyperbole">GNU 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Gnus">Gnus</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
@@ -11464,14 +12530,18 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Gnus-browsing">Gnus 
browsing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-GNUS-Newsreader">Smart Key - GNUS 
Newsreader</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-GNUS-push_002dbuttons">GNUS 
push-buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-gomoku">gomoku</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Gomoku-Game">Smart Key - Gomoku Game</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Google-Contacts">Google 
Contacts</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-grep">grep</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Grep">Grep</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-grep-files">grep 
files</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-grid-of-windows">grid of 
windows</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-grid-of-windows-1">grid of 
windows</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-groupware">groupware</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-H">H</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hashtag">hashtag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-help-buffer">help 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Help-Buffers">Smart Key - Help Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-help_002c-button">help, 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-help_002c-menu-items">help, menu 
items</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-help_002c-Smart-Key">help, Smart 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-hide-levels">hide 
levels</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
@@ -11480,22 +12550,37 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-hide-tree">hide 
tree</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hiding">hiding</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-hiding-signatures">hiding 
signatures</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-highlighting-buttons">highlighting 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-history">history</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-hook-variables">hook 
variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-horizontal-drag">horizontal 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-horizontal-drag">horizontal 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-horizontal-drag-1">horizontal 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-HTML-conversion">HTML 
conversion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Exporting">Exporting</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-HTML-tag-pair">HTML tag 
pair</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-HyControl">HyControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-HyControl-corner-placement">HyControl corner 
placement</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-HyControl-edge-placement">HyControl edge 
placement</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-HyControl-exit">HyControl 
exit</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-HyControl-help">HyControl 
help</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-HyControl-quit">HyControl 
quit</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-HyControl-screen-edge-offsets">HyControl screen edge 
offsets</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-HyControl-switch-modes">HyControl switch 
modes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-HyControl-toggle-modes">HyControl toggle 
modes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-HyControl-windows-grid">HyControl windows 
grid</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole">Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-API">Hyperbole 
API</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Embedding-Hyperbole">Embedding Hyperbole</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole-applications">Hyperbole 
applications</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-data-model">Hyperbole 
data model</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Hyperbole-demo">Hyperbole 
demo</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Manual-Overview">Manual 
Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-features">Hyperbole 
features</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-help">Hyperbole 
help</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole-mail-comment">Hyperbole mail 
comment</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-mail-list">Hyperbole 
mail list</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-main-menu">Hyperbole 
main menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-manual">Hyperbole 
manual</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Invocation">Invocation</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-Hyperbole-menubar-menu">Hyperbole menubar 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-hyperbole-popup-menu">hyperbole 
popup menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-Hyperbole-pulldown-menu">Hyperbole pulldown 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-report">Hyperbole 
report</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-types">Hyperbole 
types</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Types">Creating Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-version">Hyperbole 
version</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Suggestion-or-Bug-Reporting">Suggestion or Bug Reporting</a></td></tr>
@@ -11510,9 +12595,10 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-hypertext-1">hypertext</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hypertext-2">hypertext</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-HyRolo">HyRolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo">HyRolo</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyrolo-commands">hyrolo 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Menu">Rolo 
Menu</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyrolo-matches">hyrolo 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Rolo-Match-Buffers">Smart Key - Rolo Match 
Buffers</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyrolo-menu">hyrolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-hyrolo-commands">hyrolo 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-hyrolo-matches">hyrolo 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">Smart Key - HyRolo Match 
Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-HyRolo-menu">HyRolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-hyrolo-menu">hyrolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-hywconfig-commands">hywconfig 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Window-Configurations">Window Configurations</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-I">I</a></th><td></td><td></td></tr>
@@ -11524,7 +12610,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-ibtype_002c-predicate">ibtype, 
predicate</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-ibtype_002c-return-val">ibtype, 
return val</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-ibtypes_002c-list-of">ibtypes, 
list of</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ibuffer-menu">ibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-ibuffer-menu">ibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-ibuffer-menu-1">ibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Buffer-Menus">Smart Key - Buffer Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-idea-structuring">idea 
structuring</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner-History">Koutliner History</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-idstamp">idstamp</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
@@ -11532,6 +12618,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-idstamp-0">idstamp 
0</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Idstamps">Idstamps</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-idstamp-attribute">idstamp 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-idstamp-counter">idstamp 
counter</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Idstamps">Idstamps</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-images">images</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Image-Thumbnails">Smart Key - Image 
Thumbnails</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-implicit-button">implicit 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-implicit-button-1">implicit 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-implicit-button-type">implicit 
button type</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -11539,15 +12626,10 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-importing">importing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-importing-a-file">importing a 
file</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-inactive-minibuffer">inactive 
minibuffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Info-browser">Info 
browser</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Info-browser">Info 
browser</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Info-browsing">Info 
browsing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Info-Manuals">Smart Key - Info Manuals</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Info-manual">Info 
manual</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Invocation">Invocation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Info-node">Info 
node</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-InfoDock">InfoDock</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-InfoDock-1">InfoDock</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-InfoDock-Action-Key">InfoDock 
Action Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-InfoDock-Paste-Key">InfoDock 
Paste Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-InfoDock_002c-obtaining">InfoDock, 
obtaining</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Top">Top</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-initialization-file">initialization 
file</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-inserting-tabs">inserting 
tabs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-insertion">insertion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
@@ -11565,18 +12647,20 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-internal-viewer">internal 
viewer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Internet-RFC">Internet 
RFC</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Internet-RFC-1">Internet 
RFC</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-invoking-HyControl">invoking 
HyControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-invoking-Hyperbole">invoking 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-isearch">isearch</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Invisible-Text-Searches">Invisible Text Searches</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-issue-tracking">issue 
tracking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-J">J</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-jump-menu">jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-jump-menu">jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-jump-menu-1">jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-K">K</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-kcell-link">kcell 
link</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-key-binding-list">key binding 
list</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-key-binding_002c-C_002dc-_002e">key binding, C-c 
.</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-key-binding_002c-C_002dc-_0040">key binding, C-c 
@</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-key-binding_002c-C_002dc-C_002dr">key binding, C-c 
C-r</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-key-binding_002c-C_002dc-RET">key binding, C-c <tt 
class="key">RET</tt></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-key-binding_002c-C_002dc-_005c">key binding, C-c 
\</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
@@ -11587,11 +12671,13 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-key-binding_002c-M_002dRET">key 
binding, M-<tt class="key">RET</tt></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-key-binding_002c-menu">key 
binding, menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-key-binding_002c-smart-keys">key 
binding, smart keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-key-bindings_002c-toggle">key 
bindings, toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-key-bindings_002c-toggle">key 
bindings, toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-key-bindings_002c-toggle-1">key 
bindings, toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-key-sequence">key 
sequence</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-keyboard-drag-emulation">keyboard drag 
emulation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-keypad">keypad</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-kill-and-yank">kill and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Thing-Selection">Thing 
Selection</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-kill-and-yank-1">kill and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-between-Windows">Smart Mouse - Drags between 
Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-kill-and-yank-1">kill and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-between-Windows">Smart Mouse Drags between 
Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-kill-and-yank-2">kill and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-kill-region">kill 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-klink">klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11619,6 +12705,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-label-type_002c-idstamps">label 
type, idstamps</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-label-type_002c-legal">label 
type, legal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-label-type_002c-legal-1">label 
type, legal</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-label_002c-button">label, 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-label_002c-button-1">label, 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Buttons">Global Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-legal-labels">legal 
labels</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-level">level</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-level-1">level</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
@@ -11626,8 +12714,9 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-link">link</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-link-action-types">link action 
types</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Action-Types">Action 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-link-button">link 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-link_002c-creation">link, 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-link_002c-creation-1">link, 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Menu">By 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-link-creation">link 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-link-display">link 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-link_002c-creation">link, 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Menu">By 
Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-link_002c-display-function">link, display 
function</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-link_002c-pathname">link, 
pathname</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-link_002c-pathname-line-and-column">link, pathname line and 
column</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11640,7 +12729,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-listing-attributes">listing 
attributes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-locate-files">locate 
files</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-logging-Smart-Key-behavior">logging Smart Key 
behavior</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-logical-rolo-searches">logical 
rolo searches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-logical-rolo-searches">logical 
rolo searches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-lower-frame">lower 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-M">M</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mail-address">mail 
address</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
@@ -11652,6 +12742,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-mailer-initialization">mailer 
initialization</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mailing-an-outline">mailing an 
outline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mailing-buttons">mailing 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-make-frame">make 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-make-window">make 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-man-apropos">man 
apropos</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-man-page-references">man page 
references</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Man-Pages">Smart Key - Man Pages</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-man-pages">man 
pages</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11660,6 +12752,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-markup-pair">markup 
pair</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Thing-Selection">Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-markup-pair-1">markup 
pair</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-match-lines">match 
lines</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-maximize-frame">maximize 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-maximize-window">maximize 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-help">menu 
help</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-item-selection">menu item 
selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-item_002c-Act">menu item, 
Act</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
@@ -11680,20 +12774,23 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-menu-item_002c-LocateFiles">menu 
item, LocateFiles</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu-item_002c-MatchFileBuffers">menu item, 
MatchFileBuffers</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-item_002c-OccurHere">menu 
item, OccurHere</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu-item_002c-RegexFind">menu 
item, RegexFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu-item_002c-RegexFind">menu 
item, RegexFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu-item_002c-Remove_002dThis_002dMenu">menu item, 
Remove-This-Menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-item_002c-RemoveLines">menu 
item, RemoveLines</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-item_002c-SaveLines">menu 
item, SaveLines</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu-item_002c-StringFind">menu 
item, StringFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu-item_002c-StringFind">menu 
item, StringFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu-item_002c-Toggle_002dIsearch_002dInvisible">menu item, 
Toggle-Isearch-Invisible</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Invisible-Text-Searches">Invisible Text Searches</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu-item_002c-WindowsControl">menu item, 
WindowsControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu-item_002c-WordFind">menu 
item, WordFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu-item_002c-WordFind">menu 
item, WordFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-prefix">menu 
prefix</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-use">menu 
use</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Butfile">menu, 
Butfile</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Button_002dFile">menu, 
Button-File</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Cust">menu, 
Cust</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Cust-1">menu, 
Cust</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Customization">Customization</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-menu_002c-Cust_002fReferents">menu, 
Cust/Referents</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-menu_002c-Cust_002fURL_002dDisplay">menu, 
Cust/URL-Display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Using-URLs-with-Find_002dFile">Using URLs with Find-File</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-menu_002c-Cust_002fURL_002dDisplay-1">menu, 
Cust/URL-Display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW URLs</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu_002c-Cust_002fWeb_002dSearch">menu, 
Cust/Web-Search</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Web-Search-Engines">Web Search Engines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Customize">menu, 
Customize</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Doc">menu, 
Doc</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
@@ -11715,13 +12812,12 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Koutline">menu, 
Koutline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Mail_002dLists">menu, 
Mail-Lists</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Msg">menu, 
Msg</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu_002c-Outline">menu, 
Outline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu_002c-Outline-1">menu, 
Outline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Menu-Commands">Menu 
Commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu_002c-Outline">menu, 
Outline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Menu-Commands">Menu 
Commands</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu_002c-Outline_002fExample">menu, 
Outline/Example</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Outliner">menu, 
Outliner</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Rolo">menu, 
Rolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Screen">menu, 
Screen</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-menu_002c-Toggle_002dRolo_002dDates">menu, 
Toggle-Rolo-Dates</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-menu_002c-Toggle_002dRolo_002dDates">menu, 
Toggle-Rolo-Dates</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-top_002dlevel">menu, 
top-level</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-top_002dlevel-1">menu, 
top-level</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Types">menu, 
Types</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
@@ -11732,7 +12828,6 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-menu_002c-Window_002dConfigurations">menu, 
Window-Configurations</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menubar_002c-Hyperbole-menu">menubar, Hyperbole 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Messages-buffer">Messages 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-meta-key-modifier">meta key 
modifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modifiers">Smart Key Modifiers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-MH_002de">MH-e</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-middle-mouse-key">middle mouse 
key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-MIME">MIME</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
@@ -11742,26 +12837,35 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-minibuffer_002c-buffer-menu">minibuffer, buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-minibuffer_002c-default-actions">minibuffer, default 
actions</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-minibuffer_002c-jump-menu">minibuffer, jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline-click-and-drag">modeline click and 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline-click-and-drag">modeline click and 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-modeline-depress">modeline 
depress</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modeline-Clicks-and-Drags">Modeline Clicks and Drags</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-buffer-menu">modeline, buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-Info-Browser">modeline, Info 
Browser</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-jump-menu">modeline, jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-screen-command-menu">modeline, screen command 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-buffer-id">modeline, buffer 
id</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-buffer-menu">modeline, buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-bury-buffer">modeline, bury 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-modeline_002c-dired">modeline, 
dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-Info-Browser">modeline, Info 
Browser</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-jump-menu">modeline, jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-leftmost-character">modeline, leftmost 
character</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-next-buffer">modeline, next 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-prev-buffer">modeline, prev 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-screen-command-menu">modeline, screen command 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-modeline_002c-Smart-Keys">modeline, Smart 
Keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-unbury-buffer">modeline, unbury 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-modeline_002c-view-spec">modeline, view 
spec</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-mouse">mouse</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse-bindings">mouse 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-mouse-drag_002c-link-creation">mouse drag, link 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse-key-bindings">mouse key 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Questions-and-Answers">Questions and Answers</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mouse-key-toggle">mouse key 
toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mouse-paste">mouse 
paste</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-mouse-key-toggle">mouse key 
toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-mouse-keys_002c-unshifted">mouse 
keys, unshifted</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse-support">mouse 
support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse_002c-moving-trees">mouse, 
moving trees</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-move-window">move 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags outside a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-moving-buttons">moving 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-multiplier">multiplier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-N">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-name_002c-button">name, 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-named-window-configuration">named window 
configuration</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Window-Configurations">Window Configurations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-news">news</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-news-comment">news 
comment</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-News">Buttons in News</a></td></tr>
@@ -11771,6 +12875,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-no_002dfill-attribute">no-fill 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-normalized-label">normalized 
label</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Label-Normalization">Button Label Normalization</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-numeric-argument">numeric 
argument</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-numeric-keypad">numeric 
keypad</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-O">O</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-object_002doriented-code-browsing">object-oriented code 
browsing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-The-OO_002dBrowser">Smart Key - The 
OO-Browser</a></td></tr>
@@ -11782,6 +12887,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Org-mode">Org 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Org-mode-1">Org 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Questions-and-Answers">Questions and Answers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-org_002dmode">org-mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-other-frame">other 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-other-window">other 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-outline-file-suffix">outline 
file suffix</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Outlines">Creating Outlines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-outline-mode">outline 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-outline-processor">outline 
processor</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
@@ -11817,10 +12924,9 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-P">P</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-paragraph_002c-filling">paragraph, 
filling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Paste-Key">Paste 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-paste-region">paste 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-pasting-a-region">pasting a 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pasting-a-region-1">pasting a 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-between-Windows">Smart Mouse - Drags between 
Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-pasting-a-region-1">pasting a 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-between-Windows">Smart Mouse Drags between 
Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-pasting-a-region-2">pasting a 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-patch-output">patch 
output</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-pathname">pathname</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11828,20 +12934,29 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-permanent-identifier">permanent 
identifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-permanent-identifier-1">permanent 
identifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Idstamps">Idstamps</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-pipe-character">pipe 
character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-popup-menu">popup 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-posting-buttons">posting 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-posting-news">posting 
news</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-News">Buttons in News</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-precedence_002c-buttons">precedence, 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Type-Precedence">Button Type Precedence</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-programming-interface">programming 
interface</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Embedding-Hyperbole">Embedding Hyperbole</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-promotion">promotion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-proportional-scrolling">proportional 
scrolling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-proportional-scrolling-1">proportional 
scrolling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-pulldown-menu">pulldown 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Concept-Index_cp_letter-Q">Q</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-quit-HyControl">quit 
HyControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-raise-frame">raise 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-rdb_002dmode">rdb-mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-RDB-Mode">Smart Key - RDB Mode</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rebalance-windows">rebalance 
windows</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-reference">reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-referent">referent</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-referent-display">referent 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-refilling">refilling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-region-selection">region 
selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-region_002c-active">region, 
active</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-region_002c-active">region, 
active</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-relative-autonumber">relative 
autonumber</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-relative-identifier">relative 
identifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-remote-file">remote 
file</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11851,32 +12966,34 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-removing-Hyperbole-menu">removing Hyperbole 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Request-For-Comment">Request For 
Comment</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Request-For-Comment-1">Request 
For Comment</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-resize-frame-percentage">resize 
frame percentage</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-resizing-windows">resizing 
windows</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Resizing-Windows">Resizing Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-restoring-windows">restoring 
windows</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Window-Configurations">Window Configurations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-RFC">RFC</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-RFC-1">RFC</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Rmail">Rmail</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Rolo">Rolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo">HyRolo</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-rolo-address">rolo 
address</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-commands">rolo 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Menu">Rolo 
Menu</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-entry">rolo 
entry</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Concepts">Rolo 
Concepts</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-file">rolo 
file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Concepts">Rolo 
Concepts</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-keys">rolo 
keys</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-menu">rolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Menu">Rolo 
Menu</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-searching">rolo 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-commands">rolo 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-entry">rolo 
entry</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Concepts">HyRolo Concepts</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-file">rolo 
file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Concepts">HyRolo 
Concepts</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-keys">rolo 
keys</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-menu">rolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-searching">rolo 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-rolo_002c-buttons-in">rolo, 
buttons in</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo">HyRolo</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-datestamps">rolo, 
datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-editing">rolo, 
editing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-extending-a-match">rolo, extending a 
match</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-finding-matches">rolo, 
finding matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-highlighting-matches">rolo, highlighting 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-highlighting-matches-1">rolo, highlighting 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Settings">Rolo 
Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-interactive-searching">rolo, interactive 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-locating-a-name">rolo, 
locating a name</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-moving-through-matches">rolo, moving through 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-moving-to-entries">rolo, moving to 
entries</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-outlining">rolo, 
outlining</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-personal">rolo, 
personal</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Settings">Rolo 
Settings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-quitting">rolo, 
quitting</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-datestamps">rolo, 
datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-editing">rolo, 
editing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-extending-a-match">rolo, extending a 
match</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-finding-matches">rolo, 
finding matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-highlighting-matches">rolo, highlighting 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-highlighting-matches-1">rolo, highlighting 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-interactive-searching">rolo, interactive 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-locating-a-name">rolo, 
locating a name</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-moving-through-matches">rolo, moving through 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-moving-to-entries">rolo, moving to 
entries</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-outlining">rolo, 
outlining</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-personal">rolo, 
personal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-quitting">rolo, 
quitting</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-root-cell">root 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Outlines">Creating Outlines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-root-cell-1">root 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Idstamps">Idstamps</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
@@ -11885,6 +13002,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-saving-window-configurations">saving window 
configurations</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Window-Configurations">Window Configurations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-screen">screen</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Screen">Screen</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-screen_002c-edge-offsets">screen, edge 
offsets</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-scrolling">scrolling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-scrolling-1">scrolling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-search">search</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
@@ -11892,7 +13010,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-search-engines-menu">search 
engines menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Web-Search-Engines">Web Search Engines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-searching-the-web">searching the 
web</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-searching-the-web-1">searching 
the web</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-searching_002c-rolo">searching, 
rolo</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Searching">Rolo 
Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-searching_002c-rolo">searching, 
rolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-selection">selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-selection_002c-menu-items">selection, menu 
items</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-set">set</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
@@ -11903,6 +13021,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-show-subtree">show 
subtree</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-show-tree">show 
tree</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-showing">showing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-shrink-frame">shrink 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-shrink-window">shrink 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-side-drag">side 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Side_002dby_002dSide-Window-Resizing">Side-by-Side Window 
Resizing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-signatures_002c-hiding">signatures, 
hiding</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Smart-Key">Smart 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
@@ -11917,13 +13037,14 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-Smart-Key_002c-default-context">Smart Key, default 
context</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Smart-Key_002c-default-context-1">Smart Key, default 
context</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Smart-Keyboard-Keys">Smart 
Keyboard Keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Argument-Completion">Smart Key - Argument 
Completion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Smart-Keys-as-modifiers">Smart 
Keys as modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modifiers">Smart Key Modifiers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-smart-keys_002c-unshifted">smart 
keys, unshifted</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-smart-marking">smart 
marking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Smart-Menu">Smart 
Menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Smart-Menus">Smart Key - Smart Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Smart-Mouse-Key">Smart Mouse 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Thing-Selection">Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Smart-Mouse-Key-1">Smart Mouse 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-smart-mouse-key-drag">smart 
mouse key drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Drags">Smart Mouse Key Drags</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Smart-Mouse-Key-drag">Smart 
Mouse Key drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modification">Modification</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Smart-Mouse-Key-toggle">Smart 
Mouse Key toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Smart-Mouse-Key-toggle">Smart 
Mouse Key toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Smart-Mouse-Keys">Smart Mouse 
Keys</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Mouse-Keys">Smart 
Mouse Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-smart-selection">smart 
selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-social-media">social 
media</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11932,6 +13053,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-splitting-a-cell">splitting a 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-stack-frame">stack 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-star-outline">star 
outline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-starting-HyControl">starting 
HyControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-starting-Hyperbole">starting 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-storage-manager">storage 
manager</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Operational-and-Storage-Formats">Operational and Storage 
Formats</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-string">string</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
@@ -11940,6 +13062,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-submodes">submodes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-subtree_002c-hide">subtree, 
hide</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-subtree_002c-show">subtree, 
show</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-swap-buffers">swap 
buffers</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Swapping-Buffers">Swapping Buffers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-swapping">swapping</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-system-encapsulation">system 
encapsulation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Encapsulating-Systems">Encapsulating Systems</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
@@ -11959,9 +13082,12 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-thing">thing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-thing-1">thing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-things">things</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-thumbnails">thumbnails</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Image-Thumbnails">Smart Key - Image 
Thumbnails</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-toc-action-type">toc action 
type</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Action-Types">Action 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-toc-implicit-button-type">toc 
implicit button type</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-toggle-key-bindings">toggle key 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-toggle-HyControl-mode">toggle 
HyControl mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-toggle-key-bindings">toggle key 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-toggle-key-bindings-1">toggle 
key bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-toggling-blank-lines">toggling 
blank lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-top_002dlevel-cell">top-level 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Outlines">Creating Outlines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-top_002dlevel-cell-1">top-level 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Idstamps">Idstamps</a></td></tr>
@@ -11983,13 +13109,17 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-tree_002c-show-1">tree, 
show</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-tree_002c-show-subtree">tree, 
show subtree</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-troubleshooting-Smart-Keys">troubleshooting Smart 
Keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-tutorial">tutorial</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Manual-Overview">Manual Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-type-definition">type 
definition</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Types">Creating Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-type-redefinition">type 
redefinition</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Type-Precedence">Button Type Precedence</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-type-redefinition-1">type 
redefinition</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Types">Creating Types</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-U">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-unbury-buffer">unbury 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-unburying">unburying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-UNIX-manual">UNIX 
manual</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-unshifted-mouse-bindings">unshifted mouse 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-unshifted-mouse-keys">unshifted 
mouse keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-URL">URL</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-URL-1">URL</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Action-Types">Action Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-URL-2">URL</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW URLs</a></td></tr>
@@ -12004,8 +13134,12 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-variables">variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-vector">vector</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-vector-1">vector</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-version-control">version 
control</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-version-control-1">version 
control</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-version-control-2">version 
control</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-version-description">version 
description</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Suggestion-or-Bug-Reporting">Suggestion or Bug Reporting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-vertical-drag">vertical 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-vertical-drag">vertical 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-vertical-drag-1">vertical 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-view">view</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Viewing">Viewing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-view-mode">view 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-View-Mode">Smart Key - View Mode</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-view-spec">view 
spec</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
@@ -12020,6 +13154,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-view-spec_002c-lines-per-cell">view spec, lines per 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-view-spec_002c-setting">view 
spec, setting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-view-spec_002c-show-levels">view 
spec, show levels</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-virtual-numeric-keypad">virtual 
numeric keypad</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-VM">VM</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-W">W</a></th><td></td><td></td></tr>
@@ -12030,30 +13165,46 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-web-search-link">web search 
link</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Action-Types">Action 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-web-search-menu">web search 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Web-Search-Engines">Web 
Search Engines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-web-search-menu-1">web search 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-where-to-display">where to 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window-configuration">window 
configuration</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-window-configuration-commands">window configuration 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Window-Configurations">Window Configurations</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-window-configuration-drag">window configuration 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Saving-and-Restoring-Window-Configurations">Saving and Restoring Window 
Configurations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-window-configuration-ring">window configuration 
ring</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Window-Configurations">Window Configurations</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-window-configurations">window 
configurations</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Window-Configurations">Window Configurations</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-window-system">window 
system</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-clone">window, 
clone</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cloning-Windows">Cloning Windows</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-clone-1">window, 
clone</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-clone-2">window, 
clone</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags outside a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-make">window, 
make</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-maximize">window, 
maximize</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-move">window, 
move</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags outside a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-other">window, 
other</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-shrink">window, 
shrink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-swap-buffer">window, 
swap buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Swapping-Buffers">Swapping Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window_002c-zoom">window, 
zoom</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-windows">windows</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-windows-control">windows 
control</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-windows-grid">windows 
grid</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-windows-grid-1">windows 
grid</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-windows_002c-balance">windows, 
balance</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-windows_002c-equalize">windows, 
equalize</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-windows_002c-rebalance">windows, 
rebalance</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-word-wrap">word 
wrap</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-World_002dwide-Web">World-wide 
Web</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-World_002dwide-Web-1">World-wide 
Web</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Action-Types">Action 
Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-world_002dwide-web">world-wide 
web</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW URLs</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-World_002dwide-Web-2">World-wide 
Web</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW URLs</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-WWW">WWW</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-WWW-1">WWW</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Action-Types">Action Types</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-WWW-2">WWW</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW URLs</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-X">X</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-xdb">xdb</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-XEmacs">XEmacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-XEmacs-1">XEmacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-XEmacs-support">XEmacs 
support</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-Y">Y</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-yank-region">yank 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-yank_002c-reformatting">yank, 
reformatting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-yanking">yanking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-yanking-1">yanking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-between-Windows">Smart Mouse - Drags between 
Windows</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-yanking-1">yanking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-between-Windows">Smart Mouse Drags between 
Windows</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-yanking-2">yanking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-Z">Z</a></th><td></td><td></td></tr>
@@ -12097,6 +13248,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
  &nbsp; 
 <a class="summary-letter" href="#Concept-Index_cp_letter-P"><b>P</b></a>
  &nbsp; 
+<a class="summary-letter" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp; 
 <a class="summary-letter" href="#Concept-Index_cp_letter-R"><b>R</b></a>
  &nbsp; 
 <a class="summary-letter" href="#Concept-Index_cp_letter-S"><b>S</b></a>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index b88ba83..3682d9d 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 0dda22d..d74d0e4 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index c615436..5c5e513 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -16,7 +16,7 @@
 @c Emacs documentation style settings
 @c @documentencoding UTF-8
 @c These two require Texinfo 5.0 or later, so we use the older
address@hidden equivalent @set variables supported in 4.11 and hence
address@hidden equivalent @set variables supported in 4.11 and hence.
 @ignore
 @codequotebacktick on
 @codequoteundirected on
@@ -52,7 +52,7 @@
 This manual is for GNU Hyperbole
 (Edition @value{EDITION}, Published @value{UPDATED}).
 
-Copyright @copyright{} 1989-2016  Free Software Foundation, Inc.
+Copyright @copyright{} 1989-2017  Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -81,7 +81,7 @@ See the GNU General Public License for more details in the 
file,
      right thing, a powerful contact manager, an advanced, auto-
      numbered outliner with hyperlink anchors for each outline
      cell, and easily editable and extensible hyperlink buttons,
-     even embeddable within mail and news messages.
+     even embeddable within mail and news messages.@
 @end direntry
 
 @c
@@ -139,7 +139,7 @@ Texinfo markup language.
 
 <CENTER><H2>The Everyday Hypertextual Information Manager</H2></CENTER>
 
-<P>Copyright &copy; 1989-2016  Free Software Foundation, Inc.</P>
+<P>Copyright &copy; 1989-2017  Free Software Foundation, Inc.</P>
 
 <P>GNU Hyperbole is available for use, modification, and distribution under
 the terms of the GNU General Public License (GPL) Version 3 or later,
@@ -151,8 +151,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
-Edition 6.0.2
-Printed August 9, 2016.
+Edition 7.0.0
+Printed November 15, 2017.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -161,7 +161,7 @@ Printed August 9, 2016.
 </PRE>
 
 <CENTER>
-  <DT><B>Screenshot of the Hyperbole Koutliner, Demonstration and 
Rolo</B></DT><BR><BR>
+  <DT><B>Screenshot of the Hyperbole Koutliner, Demonstration and 
HyRolo</B></DT><BR><BR>
   <IMG NAME="Hyperbole Screenshot" SRC="im/hyperbole-cv.png"><BR>
 </CENTER>
 @end html
@@ -176,11 +176,11 @@ Printed August 9, 2016.
 
 @center The Everyday Hypertextual Information Manager
 
address@hidden Edition 6.0.2, August 9, 2016.
address@hidden Edition 7.0.0, November 15, 2017.
 
 @sp 2
 @noindent
-Copyright @copyright{} 1989-2016  Free Software Foundation, Inc.
+Copyright @copyright{} 1989-2017  Free Software Foundation, Inc.
 
 GNU Hyperbole is available for use, modification, and distribution
 under the terms of the GNU General Public License (GPL) Version 3 or
@@ -201,7 +201,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 @float Image,image:Sample
 @caption{Sample Hyperbole screenshot of the Koutliner, DEMO file and HyRolo}
address@hidden @image{im/hyperbole-cv,6in,,Sample Hyperbole Screenshot}
address@hidden/hyperbole-cv,6in,,Sample Hyperbole Screenshot}
 @end float
 @sp 1
 @center --------------------
@@ -209,7 +209,6 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 @end ifinfo
 
 @cindex credits
address@hidden InfoDock, obtaining
 @cindex Hyperbole, obtaining
 @cindex anonymous ftp
 GNU Hyperbole was designed and written by Bob Weiner.
@@ -244,8 +243,8 @@ years.  The Koutliner is dedicated to my lovely wife, Kathy.
 
 @menu
 * Introduction::
-* Buttons::
 * Smart Keys::
+* Buttons::
 * Menus::
 * HyControl::
 * Koutliner::
@@ -275,6 +274,30 @@ Introduction
 * Hyperbole Overview::
 * Mail Lists::
 
+Smart Keys
+
+* Smart Key Bindings::
+* Smart Key Operations::
+* Smart Key Argument Selection::
+* Smart Key Debugging::
+* Smart Key Thing Selection::
+* Smart Mouse Key Modeline Clicks::
+* Smart Mouse Key Drags::
+
+Smart Mouse Key Drags
+
+* Creating and Deleting Windows::
+* Saving and Restoring Window Configurations::
+* Resizing Windows::
+* Dragging Buffers::
+
+Dragging Buffers, Windows and Items
+
+* Swapping Buffers::
+* Displaying Buffers::
+* Cloning Windows::
+* Displaying File and Buffer Items::
+
 Buttons
 
 * Explicit Buttons::
@@ -291,7 +314,7 @@ Utilizing Explicit Buttons
 * Renaming::
 * Deletion::
 * Modification::
-* Location::
+* Searching and Summarizing::
 * Buttons in Mail::
 * Buttons in News::
 
@@ -300,16 +323,6 @@ Creation
 * By Dragging::                 Creation Via Action Key Drags
 * By Menu::                     Creation Via Menus
 
-Smart Keys
-
-* Smart Key Bindings::
-* Smart Key Operations::
-* Smart Key Modeline::
-* Smart Key Thing Selection::
-* Smart Key Argument Selection::
-* Smart Key Modifiers::
-* Smart Key Debugging::
-
 Koutliner
 
 * Menu Commands::
@@ -340,11 +353,11 @@ Viewing
 
 HyRolo
 
-* Rolo Concepts::
-* Rolo Menu::
-* Rolo Searching::
-* Rolo Keys::
-* Rolo Settings::
+* HyRolo Concepts::
+* HyRolo Menu::
+* HyRolo Searching::
+* HyRolo Keys::
+* HyRolo Settings::
 
 Developing with Hyperbole
 
@@ -373,12 +386,13 @@ Setup
 
 Customization
 
-* Web Search Engines::
-* Using URLs with Find-File::
+* Referent Display::
 * Internal Viewers::
 * External Viewers::
-* Invisible Text Searches::
 * Link Variable Substitution::
+* Web Search Engines::
+* Using URLs with Find-File::
+* Invisible Text Searches::
 * Button Colors::
 
 Smart Key Reference
@@ -392,8 +406,9 @@ Smart Mouse Keys
 * Thing Selection::
 * Side-by-Side Window Resizing::
 * Modeline Clicks and Drags::
-* Smart Mouse - Drags between Windows::
-* Smart Mouse - Drags within a Window::
+* Smart Mouse Drags between Windows::
+* Smart Mouse Drags within a Window::
+* Smart Mouse Drags outside a Window::
 
 Smart Keyboard Keys
 
@@ -410,6 +425,7 @@ Smart Keyboard Keys
 * Smart Key - The Koutliner::
 * Smart Key - RDB Mode::
 * Smart Key - Help Buffers::
+* Smart Key - Pages Directory Mode::
 * Smart Key - Identifier Menu Mode ::
 * Smart Key - C Source Code::
 * Smart Key - C++ Source Code::
@@ -431,7 +447,8 @@ Smart Keyboard Keys
 * Smart Key - Tar File Mode::
 * Smart Key - Man Pages::
 * Smart Key - WWW URLs::
-* Smart Key - Rolo Match Buffers::
+* Smart Key - HyRolo Match Buffers::
+* Smart Key - Image Thumbnails::
 * Smart Key - Gomoku Game::
 * Smart Key - The OO-Browser::
 * Smart Key - Default Context::
@@ -439,11 +456,11 @@ Smart Keyboard Keys
 @end detailmenu
 @end menu
 
address@hidden Introduction, Buttons, Top, Top
address@hidden Introduction, Smart Keys, Top, Top
 @chapter Introduction
 
 This edition of the GNU Hyperbole Manual is for use with any version
-6.0.2 or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+7.0.0 or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
 or higher.  It will trigger an error if your Emacs is older.
 
 This chapter summarizes the structure of the rest of the manual,
@@ -463,10 +480,17 @@ braces @address@hidden @}}, function and variable names 
use this @code{typeface}.
 @node Manual Overview, Motivation, Introduction, Introduction
 @section   Manual Overview
 
-Remember that the @file{DEMO} file included in the Hyperbole
-distribution demonstrates many of Hyperbole's standard facilities
-without the need to read through this reference manual.  It is a good
-way to rapidly understand some of what Hyperbole can do for you.
address@hidden file, DEMO
address@hidden Hyperbole demo
address@hidden demo file
address@hidden tutorial
+This is a reference manual with extensive details about Hyperbole use.  If
+you prefer a simpler, more interactive introduction to Hyperbole,
+the @file{DEMO} file included in the Hyperbole distribution demonstrates
+many of Hyperbole's standard facilities without the need to read through
+this reference manual.  It is a good way to rapidly understand some of what
+Hyperbole can do for you.  Once Hyperbole is installed, (@pxref{Setup}),
+you can access the DEMO with the key sequence @bkbd{C-h h d d}.
 
 @xref{Glossary}, for definitions of Hyperbole terms.  In some cases,
 terms are not precisely defined within the body of this manual since
@@ -482,23 +506,23 @@ Hyperbole's basic operation.
 
 @xref{Suggestion or Bug Reporting}, for instructions on how to ask a
 question, suggest a feature or report a bug in Hyperbole.  A few
-commonly asked questions are answered in this manual.  @xref{Questions
-and Answers}.  @xref{References}, if you are interested in classic
-articles on hypertext.
-
address@hidden, for an overview of Hyperbole buttons and how to use them.
+commonly asked questions are answered in this manual, @pxref{Questions
+and Answers}.  If you are interested in classic
+articles on hypertext, @pxref{References}.
 
 @xref{Smart Keys}, for an explanation of the innovative, context-sensitive
 mouse and keyboard Action and Assist Keys offered by Hyperbole.
 @xref{Smart Key Reference}, for a complete reference on what the Action
 and Assist Keys do in each particular context that they recognize.
address@hidden Key Argument Selection}, for special support that Hyperbole
-provides for entering arguments when prompted for them.
address@hidden Key Argument Selection}, for how Hyperbole speeds selection of
+prompted for arguments.
 
 Keep in mind as you read about using Hyperbole that in many cases, it
-provides a number of overlapping interaction methods that support
-differing work styles and hardware limitations.  In such instances,
-you need learn only one technique that suits you.
+provides a number of overlapping interaction methods that support differing
+work styles and hardware limitations.  In such instances, you need learn
+only one technique that suits you.
+
address@hidden, for an overview of Hyperbole buttons and how to use them.
 
 @xref{Menus}, for summaries of Hyperbole menu commands and how to use
 the minibuffer-based menus that work on dumb terminals, PCs or workstations.
@@ -534,13 +558,12 @@ with in their everyday worklife is seldom stored away in 
neatly defined
 database schemas.  Instead it is scattered among local and remote files,
 e-mail messages, faxes, voice mail and web pages.
 
-The rise of the web has demonstrated how hypertext technologies can be
-used to build massive organized repositories of scattered information.
-But assembling information for the web still remains a great challenge
-to many and the data formats of the web are inherently still too
-structured to deal with the great variety of information that people
-process.  Modern web development often requires the use of many
-languages: HTML, JavaScript, CSS and Java.  This in itself prevents
+The rise of the web has demonstrated how hypertext technologies can be used
+to build massive organized repositories of scattered information.  But
+assembling information for the web still remains a great challenge and the
+data formats of the web are too structured to deal with the great variety
+of information that people process.  Modern web development requires the
+use of many languages: HTML, JavaScript, and CSS.  This in itself prevents
 its use as the prime means of organizing and interlinking the constant
 flows of daily information.
 
@@ -567,7 +590,6 @@ Hyperbole and start moving further, faster.
 @cindex hypertext
 @cindex Emacs Lisp
 @cindex Emacs
address@hidden XEmacs
 GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
 an efficient and programmable hypertextual information management
 system.  It is intended for everyday work on any GNU Emacs platform.
@@ -577,28 +599,28 @@ intuitive mouse-based control of information display 
within multiple
 windows.  It also provides point-and-click access to Info manuals, ftp
 archives, and the World-Wide Web (WWW).
 
address@hidden
 @noindent
 Hyperbole consists of five parts:
 
 @table @emph
 @item Buttons and Smart Keys
-a set of hyperbutton types that provides core hypertext and other
-behaviors, @pxref{Buttons}.  Buttons may be added to documents (explicit
-buttons) with a simple drag between windows, no markup language needed.
-Implicit buttons are patterns automatically recognized within
-text that perform actions, e.g. bug#24568 displays the bug status
-information for that bug number.
+Hyperbole hyperlink and other kinds of buttons (explicit buttons) may be
+added to documents with a simple drag between windows, no markup language
+needed.  Implicit buttons are patterns automatically recognized within text
+that perform actions, e.g. bug#24568 displays the bug status information
+for that bug number.  @xref{Buttons}.
 
 Buttons are accessed by clicking on them or referenced by name (global
 buttons), so they can be activated regardless of what is on screen.
-Users can make simple changes to button types.  Emacs Lisp programmers
-can prototype and deliver new types quickly.
+Users create and activate Hyperbole buttons; Emacs Lisp programmers
+easily can develop new button types and actions.
 
-Hyperbole includes two special @dfn{Smart Keys}, the Action Key and the
-Assist Key, that perform an extensive array of context-sensitive
+Hyperbole includes two special @dfn{Smart Keys}, the Action Key and
+the Assist Key, that perform an extensive array of context-sensitive
 operations across emacs usage, including activating and showing help
-for Hyperbole buttons.  In many popular Emacs modes, they allow you
-to perform common, sometimes complex operations without having to a
+for Hyperbole buttons.  In many popular Emacs modes, they allow you to
+perform common, sometimes complex operations without having to use a
 different key for each operation.  Just press a Smart Key and the
 right thing happens.  @xref{Smart Keys};
 
@@ -644,12 +666,11 @@ Hyperbole demonstration by typing @bkbd{C-h h d d}, 
assuming Hyperbole
 has been installed at your site.  If you need to install
 Hyperbole, @pxref{Setup}, for Hyperbole installation and configuration
 information.  The demo offers a much less technical introduction to
-Hyperbole by supplying good examples of how buttons may be used and an
-introduction to the Koutliner.
+Hyperbole by supplying good examples of use.
 
 @float Image,image:Demo
 @caption{Hyperbole Minibuffer Menu and Demonstration Screenshot}
address@hidden @image{im/demo,6in,,Hyperbole Minibuffer Menu and Demonstration 
Screenshot}
address@hidden/demo,6in,,Hyperbole Minibuffer Menu and Demonstration Screenshot}
 @end float
 @sp 1
 
@@ -718,8 +739,8 @@ other documents.
 @item brainstorming
 The Hyperbole outliner (@pxref{Koutliner}) is an effective tool for
 capturing ideas and then quickly reorganizing them in a meaningful way.
-Links to related ideas are easy enough to create that copying and
-pasting ideas together quickly becomes a dated technique.
+Links to related ideas are easy to create so the need to copy and
+paste information is greatly reduced.
 
 @item help/training systems
 Tutorials with buttons can show students how things work while
@@ -743,1778 +764,2132 @@ There is a separate mail list to report problems or 
bugs with
 Hyperbole, <bug-hyperbole@@gnu.org>.  For more details,
 @pxref{Suggestion or Bug Reporting}.
 
address@hidden Buttons, Smart Keys, Introduction, Top
address@hidden Buttons
-
address@hidden button
-This chapter explains use of Hyperbole @emph{buttons}.  There are several
-kinds of Hyperbole buttons: buttons that are created one at a time and
-stored in files (@dfn{explicit buttons}); buttons that can be
-activated by name anytime (@dfn{global buttons}); and buttons defined
-by textual patterns where one definition can create an infinite number
-of buttons (@dfn{implicit buttons}).
-
-Hyperbole buttons are embedded within textual documents; they may be
-created, modified, moved or deleted.  Each button performs a specific
-action, such as linking to a file or executing a shell command.
address@hidden Smart Keys, Buttons, Introduction, Top
address@hidden Smart Keys
 
address@hidden button, explicit
address@hidden button, global
address@hidden button, implicit
address@hidden button category
address@hidden explicit button
address@hidden global button
address@hidden implicit button
address@hidden
-There are three categories of Hyperbole buttons:
address@hidden @dfn
address@hidden explicit buttons
-created by Hyperbole, accessible from within a single document;
address@hidden Smart Key
address@hidden mouse support
address@hidden Action Key
address@hidden Assist Key
address@hidden middle mouse key
address@hidden hmouse-middle-flag
address@hidden Action Key
address@hidden Assist Key
+Hyperbole offers two special @dfn{Smart Keys}, the Action Key and the
+Assist Key, that perform an extensive array of context-sensitive
+operations across emacs usage.  In many popular modes, they allow you
+to perform common, sometimes complex operations without having to use a
+different key for each operation.  Just press a Smart Key and the
+right thing happens.  This chapter explains typical uses of the Smart
+Keys.  @xref{Smart Key Reference}, for complete descriptions of their
+behavior in all contexts.
 
address@hidden global buttons
-created by Hyperbole, specific to each user, and accessible anywhere
-within a user's network of documents;
address@hidden
+* Smart Key Bindings::
+* Smart Key Operations::
+* Smart Key Argument Selection::
+* Smart Key Debugging::
+* Smart Key Thing Selection::
+* Smart Mouse Key Modeline Clicks::
+* Smart Mouse Key Drags::
address@hidden menu
 
address@hidden implicit buttons
-created and managed by other programs or embedded within the structure
-of a document, accessible from within a single document.  Hyperbole
-recognizes implicit buttons by contextual patterns given in their type
-specifications (explained later).
address@hidden table
address@hidden Smart Key Bindings, Smart Key Operations, Smart Keys, Smart Keys
address@hidden   Smart Key Bindings
 
-Explicit Hyperbole buttons may be embedded within any type of text file.
-Implicit buttons may appear only within document contexts allowed by
-their types, which may limit the kinds of documents or the locations
-within those documents at which such buttons may be found.  All global
-buttons for a user are stored in a single location and are activated by
-entering their names, rather than by direct selection, the means used to
-activate explicit and implicit buttons.
address@hidden C-u address@hidden
address@hidden address@hidden
+From the keyboard, @address@hidden is the Action Key and @bkbd{C-u
address@hidden is the Assist Key.  These keys allow context-sensitive
+operation from any keyboard.
 
address@hidden
-To summarize:
address@hidden Removed the following in Hyperbole 6.00 since it was not 
consistent
address@hidden across all read-only modes and the standard bindings are easy
address@hidden enough to use.
address@hidden
address@hidden In many read-only modes like Dired (the directory editor and file
address@hidden manager) and Rmail (the mail reader), @address@hidden@} also 
functions as
address@hidden the Action Key and @bkbd{C-u @key{RET}} functions as the Assist 
Key.
 
address@hidden
-Button Category   Active Within        Activation Means      Managed By
-========================================================================
-Explicit          a single document    direct selection      Hyperbole
-Global            any document         entering its name     Hyperbole
-Implicit          a matching context   direct selection      other tools
address@hidden shift-middle mouse key
address@hidden shift-left mouse key
address@hidden shift-right mouse key
address@hidden middle mouse key
address@hidden hmouse-middle-flag
+From the mouse, the @dfn{Action Key} is bound to your shift-middle
+mouse key (or shift-left on a 2-button mouse).  The @dfn{Assist Key}
+is bound to your shift-right mouse key, assuming Hyperbole is run
+under an external window system.
+
address@hidden hmouse-add-unshifted-smart-keys
address@hidden unshifted mouse bindings
address@hidden unshifted mouse keys
address@hidden mouse keys, unshifted
address@hidden smart keys, unshifted
+If you set the variable, @code{hmouse-middle-flag}, to @samp{t} before
+loading Hyperbole, then you may also use the middle mouse key as the Action
+Key).  If you want both the middle mouse key as the Action Key and the
+right mouse key as the Assist Key for ease of use, then within your
+personal @file{~/.emacs} file, add: @code{(add-hook 'hyperbole-init-hook
+'hmouse-add-unshifted-smart-keys)} and then restart Emacs.
 
address@hidden example
address@hidden key binding, smart keys
address@hidden smart key commands
address@hidden smart key assignments
address@hidden action-key
address@hidden assist-key
address@hidden action-mouse-key
address@hidden assist-mouse-key
address@hidden hkey-either
+If you prefer other key assignments, simply bind the commands
address@hidden and @code{assist-key} to keyboard keys.
+Hyperbole binds @address@hidden to the command @code{hkey-either}.
+It allows for a single key binding for both commands; a prefix
+argument, such as @bkbd{C-u}, then invokes @code{assist-key}.
 
address@hidden terminal use
-A click on a Hyperbole button may activate it or describe its actions,
-depending on which mouse key is used.  Buttons may also be activated
-from a keyboard.  (In fact, virtually all Hyperbole operations,
-including menu usage, may be performed from any standard character
-terminal interface, so you need not be anchored to a workstation all
-day).  @xref{Smart Keys}.  There is also a key that shows you how a
-button will behave before you activated it, @pxref{Smart Key
-Operations}.
+You may also bind @code{action-mouse-key} and @code{assist-mouse-key}
+to other mouse keys, though you won't be able to execute mouse drag
+actions with such key bindings.
 
address@hidden
-* Explicit Buttons::
-* Global Buttons::
-* Implicit Buttons::
-* Button Files::
-* Action Types::
-* Button Type Precedence::
-* Utilizing Explicit Buttons::
address@hidden menu
+Mouse configuration of the Smart Keys is automatic for GNU Emacs under
+Mac OS X, the X Window System and MS Windows assuming your emacs program
+has been built with support for any of these window systems.
 
address@hidden Explicit Buttons, Global Buttons, Buttons, Buttons
address@hidden   Explicit Buttons
address@hidden file, .emacs
address@hidden hyperbole-toggle-bindings
address@hidden change key bindings
address@hidden toggle key bindings
address@hidden key bindings, toggle
address@hidden disable Hyperbole
address@hidden C-c h
+If you ever need to temporarily disable the Hyperbole keyboard and mouse
+bindings, use the @code{hyperbole-toggle-bindings} command.  It switches
+between the Hyperbole key bindings and those set prior to loading Hyperbole
+and then back again if invoked once more.  There is no default key binding
+for this command; use @bkbd{M-x hyperbole-toggle-bindings
address@hidden  Alternatively, you may select a key and bind it as part of any
+setting of @code{hyperbole-init-hook} within your personal @file{~/.emacs}
+file.  For example, @code{(add-hook 'hyperbole-init-hook (lambda ()
+(global-set-key "\C-ch" 'hyperbole-toggle-bindings)))}.
+
address@hidden @cindex Paste Key
address@hidden @cindex mouse paste
address@hidden @cindex InfoDock Action Key
address@hidden @cindex InfoDock Paste Key
address@hidden Under InfoDock, the middle mouse key is normally used as the 
Action Key
address@hidden and the meta-middle mouse key is used as the Paste Key.  If you 
prefer
address@hidden that the middle mouse key be used as the Paste Key, then you 
will want to
address@hidden toggle the mouse bindings.  InfoDock includes a built-in way to 
do this
address@hidden via its Options/Mouse/Mouse-Paste-on-Middle-Key menu item.  
(Keep in
address@hidden mind though that the Action Key will paste any active region 
within the
address@hidden editor when the Action Key is clicked; it will not paste 
selections from
address@hidden other applications).
+
address@hidden Smart Key Operations, Smart Key Argument Selection, Smart Key 
Bindings, Smart Keys
address@hidden   Smart Key Operations
 
address@hidden explicit button
address@hidden button, explicit
address@hidden button label
address@hidden button name
-Hyperbole creates and manages @dfn{explicit buttons} which perform
-specific actions when activated (typically through a button press).
-They look like this @samp{<(fake button)>}.  They are quickly
-recognizable, yet relatively non-distracting as you scan the text in
-which they are embedded.  The text between the @samp{<(} and @samp{)>}
-delimiters is called the @dfn{button label} or @dfn{button name}.
-Spacing between words within a button label is irrelevant to Hyperbole.
-Button labels may wrap across several lines without causing a problem;
-just be sure to select the first line of the button to activate it.
address@hidden button activation
address@hidden activation
address@hidden button help
address@hidden help, button
+The Action Key generally selects entities, creates links and
+activates buttons.  The Assist Key generally provides help,
+such as reporting on a button's attributes, or serves a complementary
+function to whatever the Action Key does within a context.
 
-Explicit buttons may be added to any editable text file; for source
-code files, simply place buttons within comments.  Buttons that you
-use for quick navigation to websites or other things you do often
-should be added to your personal button file.  @xref{Button Files}.
address@hidden Smart Key operation
address@hidden menu item, Doc/SmartKeys
address@hidden Smart Key summary
address@hidden modeline, Smart Keys
+The Hyperbole Doc/SmartKeys menu entry, @bkbd{C-h h d s}, displays a
+summary of what the Smart Keys do in all of their different contexts.
+Alternatively, a click of the Assist Mouse Key in the right corner of a
+window modeline (within the rightmost 3 characters) toggles between
+displaying this summary and hiding it.  Reference this summary whenever you
+need it.
 
address@hidden button, moving
address@hidden moving buttons
-Explicit buttons may be freely moved about within the buffer in which
-they are created.  (No present support exists for moving buttons between
-buffers; support the Hyperbole project if you would like to help make
-this happen).  A single button may also appear multiple times within the
-same buffer; simply copy the button label with its delimiters
-to a new location if you need another copy of it.
+The following table is the same summary.  Much of the browsing power
+of Hyperbole comes from the use of the Smart Keys, so spend some time
+practicing how to use them.  Study what modeline clicks and window
+drag actions do as these will give you a lot of power without much
+effort.  This table may appear daunting at first, but as you practice
+and notice that the Smart Keys do just a few context-sensitive things
+per editor mode, you will find it easy to just press or point and
+click and let Hyperbole do the right thing in each context.
 
-For details on how to create, activate, delete or modify explicit
-buttons, @pxref{Utilizing Explicit Buttons}.
address@hidden
address@hidden
address@hidden
address@hidden hkey-help.txt
address@hidden smallexample
address@hidden format
address@hidden ifnothtml
 
address@hidden link button
address@hidden referent
-Each explicit button is assigned an action type that determines the
-actions it performs.  @dfn{Link action types} connect buttons to
-particular types of @dfn{referents}, the targets of their links.  Link
-action type names all begin with @code{link-}.  Link action button
-referents are displayed when such buttons are  by
-pressing or clicking upon them.  @xref{Action Types}, for a list of
-standard action types including link types.
address@hidden
address@hidden
address@hidden
address@hidden hkey-help.txt
address@hidden example
address@hidden format
address@hidden ifhtml
 
address@hidden linking, in-place
address@hidden Hyperbole data model
-Hyperbole does not manage referent data; this is left to the
-applications that generate the data.  This means that Hyperbole
-provides in-place linking and does not require reformatting of data to
-integrate with Hyperbole.
address@hidden
address@hidden Key Reference}, for extensive reference documentation on the
+Smart Keys.
 
address@hidden button data
address@hidden button attribute
address@hidden file, .hypb
-Hyperbole stores the @dfn{button data} that gives an explicit button its
-behavior, separately from the button label, in a file named
address@hidden (@file{_hypb} under MS Windows) within the same directory
-as the file in which the button is created.  Thus, all files in the
-same directory share a common button data file.  Button data is
-comprised of individual @dfn{button attribute} values.  A user never
-sees this data in its raw form but may see a formatted version by
-asking for help on a button.
address@hidden action-key-default-function
address@hidden assist-key-default-function
address@hidden Smart Key, default context
address@hidden default Smart Key context
+Note how the last line in the table explains that the default behavior of
+the Smart Keys in an unknown context is to report an error.  You can change
+these behaviors by setting two variables.  See the documentation
+for the variables @code{action-key-default-function} and
address@hidden for information on how to customize
+the behavior of the Smart Keys within default contexts.
 
address@hidden Smart Key help
address@hidden help, Smart Key
address@hidden context-sensitive help
+When you use a mouse and you want to find out what either of the Smart
+Keys does within a context, depress the one you want to check on and
+hold it down, then press the other and release as you please.  A help
+buffer will pop up explaining the actions that will be performed in that
+context, if any.  A press of either Smart Key at the end of that
+help buffer will restore your display to its configuration prior to
+invoking help.
 
address@hidden Global Buttons, Implicit Buttons, Explicit Buttons, Buttons
address@hidden   Global Buttons
address@hidden C-h A
address@hidden C-u C-h A
+On the keyboard, @bkbd{C-h A} displays this same context-sensitive
+help for the Action Key while @bkbd{C-u C-h A} displays the help for
+the Assist Key.  Note that @bkbd{C-h a} performs a function unrelated
+to Hyperbole, so you must press the shift key when you type
+the @key{A} character.
 
address@hidden global button
address@hidden button, global
address@hidden button label
-Access to explicit buttons depends upon the information on your screen
-since they are embedded within particular buffers.  Sometimes it is
-useful to activate buttons without regard to the information with which
-you are working.  In such instances, you use @dfn{global buttons}, which
-are buttons that may be activated or otherwise operated upon by entering
-their labels/names when they are prompted for, rather than selecting the
-buttons within a buffer.
address@hidden Smart Key Argument Selection, Smart Key Debugging, Smart Key 
Operations, Smart Keys
address@hidden   Smart Key Argument Selection
 
-If you want a permanent link to a file section that you can follow at
-any time, you can use a global button.  Or what about an Emacs keyboard
-macro that you use frequently?  Create an @code{exec-kbd-macro} button
-with an easy to type name and then you can activate it whenever the need
-arises.
address@hidden Hyperbole help
+A prime design criterion of Hyperbole's user interface is that you
+should be able to see what an operation will do before using it.  The
+Assist Key typically shows you what a button or minibuffer menu item
+will do before you activate it.  Hyperbole also displays the result of
+directly selecting an argument value with the Action Key, to provide
+feedback as to whether the correct item has been selected.  A second
+press/click is necessary before an argument is accepted and processed.
 
address@hidden C-h h g
address@hidden menu, Gbut
address@hidden menu, Global-Button
-Global buttons are managed with the Hyperbole Gbut/ menu accessed with
address@hidden h g}.  The Create item, @bkbd{C-h h g c}, prompts for a
-global button name, an action type, and the action's associated
-arguments, such as a file to link to.  It then creates the button.  To
-activate the button, use the Act menu item, @bkbd{C-h h g a}.  Type
-the button's name and its action will be executed.
address@hidden argument entry
address@hidden direct selection
address@hidden double click
+Many Hyperbole commands prompt you for arguments.  The standard
+Hyperbole user interface has an extensive core of argument types that
+it recognizes.  Whenever Hyperbole is prompting you for an argument,
+it knows the type that it needs and provides some error checking to
+help you get it right.  More importantly, it allows you to press the
+Action Key within an entity that you want to use as an argument and it
+will grab the appropriate thing and show it to you at the input prompt
+within the minibuffer.  If you press (click with a mouse) the Action
+Key on the same thing again, it accepts the entity as the argument
+and moves on.  Thus, a double click registers a desired argument.
+Double-quoted strings, pathnames, mail messages, Info nodes, dired
+listings, buffers, numbers, completion items and so forth are all
+recognized at appropriate times.  All of the argument types mentioned
+in the documentation for the Emacs Lisp @code{interactive} function
+are recognized.  Experiment a little and you will quickly get used to
+this direct selection technique.
 
-Global buttons are actually explicit buttons stored at the end of your
-personal button file, @pxref{Button Files}.  You can always go into that
-file and activate, edit or annotate these buttons with comments.
address@hidden completion
+Wherever possible, standard Emacs completion is offered, as described in
address@hidden,,,emacs,the GNU Emacs Manual}.  Remember to use @bkbd{?}
+to see what your possibilities for an argument are.  Once you have a
+list of possible completions on screen, press the Action Key twice on
+any item to enter it as the argument.
 
address@hidden Implicit Buttons, Button Files, Global Buttons, Buttons
address@hidden   Implicit Buttons
address@hidden Smart Key Debugging, Smart Key Thing Selection, Smart Key 
Argument Selection, Smart Keys
address@hidden   Smart Key Debugging
 
address@hidden button, implicit
address@hidden implicit button
address@hidden buttons} are virtual buttons recognized within the
-natural structure of a document.  For example, a web URL button that
-displays its link or an email address button that starts a mail
-message to the associated address.  Implicit buttons are identified by
-contextual patterns found within documents.  An @dfn{Implicit button
-type} identifies a pattern or state that when matched triggers
-an @emph{action} associated with the implicit button type.  The action
-is specified by either a Hyperbole action type (@pxref{Action Types})
-or an Emacs Lisp function.  Implicit button types may use the same
-action types that explicit buttons use.  As an example, a pathname
-implicit button type would match to any existing local filename or
-directory name and its action would be to display the associated file
-or directory, typically in another window.
+Typically, @bkbd{C-h A} and @bkbd{C-u C-h A} which show Action and
+Assist Key help for the current context, are sufficient for seeing how
+the Smart Keys behave no matter where they are used.
 
address@hidden file, hibtypes.el
address@hidden context
address@hidden boolean expressions
address@hidden activating implicit button
address@hidden menu item, Ibut/Act
address@hidden C-h h i a
-Unlike explicit buttons, implicit buttons have no individual button data
-other than their textual labels.  You use implicit button types which
-include boolean expressions (predicates) that match to both the label
-and the context required of any button of the type.  Each time a Smart
-Key is pressed at a location, Hyperbole evaluates the predicates from
-the list of implicit button types and the first one that evaluates true
-is selected and its associated action is triggered.  The Ibut/Act menu
-item, @bkbd{C-h h i a}, also activates any implicit button found at the
-current point.
address@hidden C-h h c d
address@hidden Smart Key debugging
address@hidden menu item, Cust/Debug-Toggle
address@hidden debugging Smart Keys
address@hidden troubleshooting Smart Keys
address@hidden Messages buffer
address@hidden logging Smart Key behavior
+However, if a Smart Key ever behaves differently than you think it
+should or if you want to test how the Smart Keys respond in a new
+context, then the Smart Key debugging flag may be of use.  You toggle
+it on and off with @bkbd{C-h h c d} (minibuffer menu
+Cust/Debug-Toggle).  Once enabled, this displays a message in the
+minibuffer each time the Action or Assist Key is released, showing
+the context of the press and its associated action, so you can see
+exactly what is happening whenever you use a Smart Key.  These
+messages are all prefaced with ``(HyDebug)'' and logged to the
+``*Messages*'' buffer for later viewing.
 
-All of this happens transparently and is easy to use once you try it.
-The Hyperbole Smart Keys offer extensive additional context-sensitive
-point-and-click type behavior beyond implicit button types.  @xref{Smart
-Key Operations}.
address@hidden C-h h m c
address@hidden C-h h m r
+If you do find a problem with the Smart Keys and want to report a bug,
+use @bkbd{C-h h m r} to compose an email message to the bug-hyperbole
+list.  Hyperbole will automatically include all of the ``(HyDebug)''
+messages from your current emacs session into your email.  Similarly,
+when you compose an email to the hyperbole-users mailing list
+with @bkbd{C-h h m c}, these messages are also included.
 
address@hidden ibtypes, list of
address@hidden implicit button types
-Below, standard implicit button types are listed in the order in which
-Hyperbole tries to match to the types when looking for an implicit
-button; @bkbd{C-h h i t @key{RET}} provides similar information.  See
-the Hyperbole file, @file{hibtypes.el}, for complete examples of
-implicit button types.
address@hidden Smart Key Thing Selection, Smart Mouse Key Modeline Clicks, 
Smart Key Debugging, Smart Keys
address@hidden   Smart Key Thing Selection
 
address@hidden @code
address@hidden sexp selection
address@hidden code block selection
address@hidden selection
address@hidden smart selection
address@hidden smart marking
address@hidden region selection
address@hidden things
address@hidden delimited things
+Hyperbole has some radically cool ways to select regions of structured text
+or source code and to copy or move them between buffers with a single mouse
+drag or two key presses.  A great deal of smarts are built-in so that it
+does the right thing most of the time; many other attempts at similar
+behavior such as @file{thing.el} fail to deal with many file format
+complexities.
 
address@hidden ibtypes completion
address@hidden completion
address@hidden completion
-Inserts the completion at point into the minibuffer or the other window.
+We use the term @dfn{things} to refer to structured entities that
+Hyperbole can select.  These include: delimited pairs of (), @address@hidden, 
<>,
+[] and quote marks, source code functions, source code comments and
+matching tag pairs in HTML and SGML modes.  @dfn{Delimited things} are
+those things that contain a selectable delimiter such as an opening
+parenthesis.
 
address@hidden ibtypes hyp-source
address@hidden Hyperbole report
address@hidden hyp-source
-Turns source location entries in Hyperbole reports into buttons that
-jump to the associated location.
address@hidden HTML tag pair
address@hidden SGML tag pair
+The best way to mark a delimited thing is to move your cursor to the
+starting delimiter of the thing and then press the Action Key.  Typically,
+you will see the thing highlight.  You can then operate upon it as you
+would any Emacs region.  In many cases, you can do the same thing upon
+the closing delimiter, but this is not as reliable.  An Action Key
+press on the start of an HTML or SGML tag pair marks the entire region
+span of the pair.  If you use the Assist Key instead, it will mark and
+kill (delete) the thing.
 
address@hidden ibtypes hyp-address
address@hidden Hyperbole mail list
address@hidden hyp-address
-Turns a Hyperbole support/discussion e-mail address into an implicit
-button which inserts Hyperbole environment information.  This is
-useful when sending mail to a Hyperbole discussion mail list.  See
-also the documentation for @code{actypes::hyp-config}.
address@hidden drag, with region
address@hidden kill region
address@hidden yank region
address@hidden cut region
address@hidden copy region
address@hidden paste region
+Even better are Smart Mouse Key drags which let you copy or move
+delimited things in one operation without even highlighting them.  To
+copy, simply drag with the Action Key from a thing's opening delimiter
+and release somewhere outside of the thing, either within the same
+window or within another window.  The thing will be copied to the
+point of release.  If you want to move a thing, simply perform the
+same drag but with the Assist Mouse Key.  Ensure that you do not move
+any explicit buttons from one buffer to another as that does not
+work.
 
address@hidden ibtypes Info-node
address@hidden Info node
address@hidden Info-node
-Makes "(filename)nodename" buttons display the associated Info node.
-Also makes "(filename)itemname" buttons display the associated Info
-index item.
+Try out some of these operations in HTML or source code files to see
+how they can speed your editing.
 
address@hidden ibtypes www-url
address@hidden URL
address@hidden World-wide Web
address@hidden WWW
address@hidden Action Key, web browsing
address@hidden Action Key, web browsing
address@hidden browse-url-browser-function
address@hidden www-url
-When not in an Emacs web browser buffer, follows any non-ftp URL (link) at 
point.
-The variable, @code{browse-url-browser-function}, may be used to customize
-which URL browser is called.  Terse URLs which lack a protocol prefix,
-like www.gnu.org, are also recognized.
address@hidden
+Hyperbole also binds two convenience keys for working with things.
 
address@hidden ibtypes gnus-push-button
address@hidden GNUS push-buttons
address@hidden hiding signatures
address@hidden signatures, hiding
address@hidden gnus-push-button
-Activates GNUS-specific article push-buttons, e.g. for hiding
-signatures.  GNUS is a news and mail reader."
address@hidden C-c @key{RET}
address@hidden hui-select-thing
address@hidden hui-select-thing-with-mouse
+The first such key is @bkbd{C-c @key{RET}} @code{hui-select-thing} which
+selects bigger and bigger syntactic regions with each successive use.
+Double or triple clicks of the Selection Key (left mouse key) do the same
+thing.  The first press selects a region based upon the character at point.
+For example, with point over an opening or closing grouping character, such
+as @{ or @}, the whole grouping is selected, e.g. a C function.  When on an
+_ or - within a programming language identifier name, the whole name is
+selected.  The type of selection is displayed in the minibuffer as
+feedback.  When using a language in which indentation determines nesting
+level like Python, a double click on the first alpha character of a line,
+such as an if statement, selects the current clause (until the next line at
+the same or lesser indentation).  Use @bkbd{C-g} to unmark the region when
+done.  Use, @code{hui-select-thing-with-mouse} if you want to bind this to
+a different mouse key to use single clicks instead of double clicks.
 
address@hidden ibtypes texinfo-ref
address@hidden Texinfo cross-reference
address@hidden cross-reference, Texinfo
address@hidden texinfo-ref
-Displays Texinfo, Info node or help associated with Texinfo node, menu
-item, @@xref, @@pxref, @@ref, @@code or @@var at point.  If point is
-within the braces of a cross-reference, the associated Info node is
-shown.  If point is to the left of the braces but after the @@ symbol and
-the reference is to a node within the current Texinfo file, then the
-Texinfo node is shown.
address@hidden C-c .
address@hidden hui-select-goto-matching-tag
+The second convenience key is bound only in HTML/web mode.  @bkbd{C-c
+.} @code{hui-select-goto-matching-tag} jumps between the opening and
+closing tag of a pair.  It moves point to the start of the tag paired
+with the closest tag that point is within or which it precedes.  A
+second press moves point to the matching tag of the pair, allowing you
+to quickly jump back and forth between opening and closing tags.
 
-For @@code and @@var references, the associated documentation string
-is displayed.
address@hidden Smart Mouse Key Modeline Clicks, Smart Mouse Key Drags, Smart 
Key Thing Selection, Smart Keys
address@hidden   Smart Mouse Key Modeline Clicks
 
address@hidden ibtypes mail-address
address@hidden e-mail address
address@hidden rolo address
address@hidden address
address@hidden mail-address
-If on an e-mail address in a specific buffer type, mail to that address
-in another window. Applies to the rolo match buffer, any buffer
-attached to a file in @code{hyrolo-file-list}, or any buffer with @file{mail}
-or @file{rolo} (case-insensitive) within its name.
+Smart Mouse Key clicks on a window's modeline offer many powerful browsing
+features, including directory editing (dired), user manual browsing, and
+window, buffer and frame selection.  Generally, only Hyperbole-specific
+modeline actions are discussed herein.
 
address@hidden ibtypes patch-msg
address@hidden patch output
address@hidden patch-msg
-Jumps to the source code associated with output from the @samp{patch}
-program.  Patch applies diffs to source code.
address@hidden @bullet
address@hidden Leftmost Character
+
address@hidden bury buffer
address@hidden unbury buffer
address@hidden modeline, bury buffer
address@hidden modeline, unbury buffer
address@hidden modeline, leftmost character
+Action Key clicks on the first (usually blank) character of the
+modeline bury the current buffer in the buffer list and display the
+next buffer in the list.  Assist Key clicks do the reverse and unbury
+the bottom buffer.
+
address@hidden modeline, next buffer
address@hidden modeline, prev buffer
+A similar effect can be achieved with the standard Emacs mouse 1 (left) and
+3 (right) buttons on the Buffer ID element of modeline to cycle through
+previous and next buffers, respectively.  This may be easier to use since
+you can click anywhere on the buffer identifier.
+
address@hidden Buffer ID Element
 
address@hidden ibtypes elisp-compiler-msg
address@hidden byte compiler error
address@hidden Emacs Lisp compiler error
address@hidden compiler error
address@hidden elisp-compiler-msg
-Jumps to the source code for a definition associated with a
-byte-compiler error message.  Works when activated anywhere within an
-error line.
address@hidden dired
address@hidden modeline, dired
address@hidden buffer id
address@hidden modeline, buffer id
address@hidden dragging items, dired
+On the left part of the modeline is the buffer identification,
+generally the name of the buffer in use.  An Action Key click on that
+switches the window to edit the buffer's directory using dired.
+Then Action Key clicks on directory items in the dired buffer display the
+items selected in other windows.  An Action Key drag from an item to
+another window displays the item in that window.
+
+An Action Key click on the first line in a dired buffer which contains the
+current directory path, specifically on any ancestor part of the path (the
+part to the left of the click point), starts another dired session on the
+ancestor directory.  Click at the end of this line to end the dired session
+(bury its buffer).
+
address@hidden Large Blank Area
 
address@hidden ibtypes debugger-source
address@hidden gdb
address@hidden dbx
address@hidden xdb
address@hidden stack frame
address@hidden breakpoint
address@hidden source line
address@hidden debugger-source
-Jumps to the source line associated with a debugger stack frame or
-breakpoint line.  This works with gdb, dbx, and xdb.  Such lines are
-recognized in any buffer.
address@hidden buffer menu
address@hidden modeline, buffer menu
address@hidden jump menu
address@hidden modeline, jump menu
address@hidden dragging items, buffer menu
+An Action Mouse Key click in a blank area of a window modeline (away
+from left and right edges) toggles between displaying and hiding a
+list of all buffers.  Once displayed, an Action Key click on a buffer
+item will display it in another window.  You can drag items to specific
+windows for display as well.
+
+Alternatively, you may (1) display the buffer menu, (2) use its @bkbd{m}
+command to mark buffers, and (3) use the Hyperbole @bkbd{@@} command to
+display the marked buffers in a grid of popup windows whose number of
+rows and columns you specify at the prompt or via a prefix argument.
+This also works in @code{ibuffer-menu} and @code{dired} modes.
address@hidden
+
+An Assist Key click in the blank area of the modeline displays a quick
+access menu of display-oriented commands.  You can jump to buffers
+categorized by major mode, jump to windows by buffer name, or to
+frames by name.  Manage your windows and frames quickly with this menu
+as well.  As always with Hyperbole, just try it and you'll begin to
+wonder how you lived without it before.
+
address@hidden Right Corner
 
address@hidden ibtypes grep-msg
address@hidden grep
address@hidden compiler error
address@hidden grep-msg
-Jumps to a line associated with grep or compilation error messages.
-Messages are recognized in any buffer.
address@hidden Info browser
address@hidden modeline click and drag
address@hidden modeline, Info Browser
+A click of the Action Mouse Key in the right corner of a window
+modeline (within the rightmost 3 characters) displays or hides the
+GNU Info Manual Browser, giving you quick point and click access to
+an amazing wealth of documentation, since the Action Key also browses
+through these manuals and follows their hyperlinked cross-references.
+A click of the Assist Key in the same location displays or hides the
+Smart Key summary, as noted earlier.
 
address@hidden ibtypes klink
address@hidden klink
address@hidden koutline link
address@hidden kcell link
address@hidden klink
-Follows a link delimited by <> to a koutline cell.
-See the documentation for @code{actypes::link-to-kotl} for valid link
-specifiers.
address@hidden Customizable Variables
 
address@hidden ibtypes man-apropos
address@hidden UNIX manual
address@hidden man pages
address@hidden man apropos
address@hidden man-apropos
-Makes man apropos entries (from @samp{man -k}) display associated man pages 
when
-selected.
address@hidden action-key-modeline-function
address@hidden assist-key-modeline-function
address@hidden action-key-modeline
address@hidden assist-key-modeline
address@hidden hmouse-context-menu
address@hidden hmouse-context-ibuffer-menu
address@hidden ibuffer menu
+Hyperbole modeline mouse click actions are controlled by the two functions,
address@hidden and @code{assist-key-modeline}.  If you know
+a little Emacs Lisp you can change these to do whatever you like.  When a
+Smart Key press is on a blank part of a modeline but not at the left or
+right, the function given by one of these two variables is
+executed: @code{action-key-modeline-function} or
address@hidden  By default, the Action Key toggles
+between displaying and hiding the buffer menu.  If you like the more
+advanced features of @code{Ibuffer Mode}, you can change the buffer menu to
+use that with the following in your Emacs initialization file:
address@hidden(setq action-key-modeline-function 
#'hmouse-context-ibuffer-menu)}.
+To set it back to the default use:
address@hidden(setq action-key-modeline-function #'hmouse-context-menu)}.
 
address@hidden ibtypes rfc
address@hidden Internet RFC
address@hidden Request For Comment
address@hidden RFC
address@hidden remote file
address@hidden ftp
address@hidden rfc
-Retrieves and displays an Internet rfc referenced at point.  Requires remote
-file access, e.g. via the Tramp library, for remote ftp retrievals.  The
-following formats are recognized: RFC822, rfc-822, and RFC 822.  The
address@hidden:rfc} variable specifies the location from which to retrieve
-RFCs."
address@hidden dired-jump
address@hidden hui-menu-screen-commands
address@hidden directory editor
address@hidden dired
address@hidden modeline, screen command menu
+The default @code{assist-key-modeline-function} is to pop up a menu of
+convenient screen commands that lets you select buffers grouped by
+major mode, use HyControl, or jump to specific windows, window
+configurations or frames.  If you would prefer it runs the directory
+editor @code{dired} on the directory associated with the window of the
+modeline press, use this: @code{(setq assist-key-modeline-function 
#'dired-jump)}.
+To set it back to the default use:
address@hidden(setq assist-key-modeline-function #'hui-menu-screen-commands)}.
 
address@hidden ibtypes kbd-key
address@hidden key sequence
address@hidden kbd-key
-Executes the command binding or the Hyperbole minibuffer menu action
-for a key sequence delimited by curly braces.  Key sequences should
-be in human readable form, e.g.@: @bkbd{C-x C-b}.  Formats such
-as @address@hidden will not be recognized.
+These variables may also be changed permanently with the Emacs
+interactive customization interface.  Use @bkbd{M-x customize-variable
address@hidden assist-key-modeline-function @key{RET}}.  In the Assist
+Modeline Function text field that appears, change the value
+to @code{dired-jump}.  Then press the ``Apply and Save'' button.
address@hidden itemize
 
address@hidden ibtypes dir-summary
address@hidden file, MANIFEST
address@hidden file, DIR
address@hidden dir-summary
-Detects filename buttons in files named "MANIFEST" or "DIR".
-Displays selected files.  Each file name must be at the beginning of the
-line and must be followed by one or more spaces and then another
-non-space, non-parenthesis, non-brace character.
address@hidden Smart Mouse Key Drags,  , Smart Mouse Key Modeline Clicks, Smart 
Keys
address@hidden Smart Mouse Key Drags
 
address@hidden ibtypes text-toc
address@hidden table of contents
address@hidden toc implicit button type
address@hidden text-toc
-Jumps to the text file section referenced by a table of contents entry
-at point.  The file name of the current buffer must contain
address@hidden and there must be a `Table of Contents' or `Contents'
-label on a line by itself (it may begin with an asterisk), preceding the
-table of contents.  Each toc entry must begin with some whitespace
-followed by one or more asterisk characters.  Each line which begins a
-new file section must start with one or more asterisk characters at the
-very beginning of the line.
address@hidden smart mouse key drag
address@hidden Action Mouse Key drag
address@hidden Assist Mouse Key drag
address@hidden drag, Smart Mouse Key
+As mentioned in the section on Thing Selection, Hyperbole Smart Mouse Key
+drag actions can be quite useful.  This section summarizes other drag
+contexts and actions; for complete documentation, @pxref{Smart
+Mouse Keys}.
 
address@hidden ibtypes cscope
address@hidden C/C++ call trees
address@hidden C/C++ cross-reference
address@hidden Cscope
address@hidden cscope
-Jumps to a C/C++ source line associated with a Cscope C analyzer output line.
-Requires pre-loading of the cscope.el Lisp library available from the Emacs
-Lisp archives and the commercial cscope program available from AT&T's
-software toolchest.  Otherwise, does nothing.
address@hidden
+* Creating and Deleting Windows::
+* Saving and Restoring Window Configurations::
+* Resizing Windows::
+* Dragging Buffers::
address@hidden menu
 
address@hidden ibtypes etags
address@hidden etags entry
address@hidden TAGS file
address@hidden tag
address@hidden etags
-Jumps to the source line associated with an etags file entry in a TAGS buffer.
-If on a tag entry line, jumps to the source line for the tag.  If on a
-pathname line or line preceding it, jumps to the associated file.
address@hidden Creating and Deleting Windows, Saving and Restoring Window 
Configurations, Smart Mouse Key Drags, Smart Mouse Key Drags
address@hidden Creating and Deleting Windows
 
address@hidden ibtypes ctags
address@hidden ctags entry
address@hidden tags file
address@hidden ctags
-Jumps to the source line associated with a ctags file entry in any buffer.
-Ctags files are used by old editors like vi to lookup identifiers.
-InfoDock and Emacs use the newer, more flexible Etags format.
address@hidden drag, horizontal
address@hidden horizontal drag
address@hidden drag, vertical
address@hidden vertical drag
+Horizontal and vertical drags of the Smart Mouse Keys are used to split and
+delete Emacs windows.
+
+An Action Mouse Key horizontal drag of five or more characters in either
+direction within a single window creates a new window by splitting the
+current window into two windows, one atop the other.  An Action Mouse Key
+vertical drag in either direction splits the current window into two
+side-by-side windows.  A horizontal or vertical drag of the Assist Mouse
+Key within a single window, deletes that window.
+
address@hidden C-x +
address@hidden rebalance windows
address@hidden windows, rebalance
+If you split windows many times and then delete a number of the windows,
+you'll be left with windows of differing heights.  Use @bkbd{C-x +} to
+re-balance the sizes of the remaining windows, so they are fairly even.
+
address@hidden Saving and Restoring Window Configurations, Resizing Windows, 
Creating and Deleting Windows, Smart Mouse Key Drags
address@hidden Saving and Restoring Window Configurations
+
address@hidden window configuration drag
address@hidden drag, window configuration
address@hidden drag, diagonal
address@hidden diagonal drag
+A window configuration consists of the set of windows within a single Emacs
+frame.  This includes their locations, buffers, and the scrolled positions of
+their buffers.
+
+Hyperbole allows you to save and restore window configurations with simple
+diagonal mouse drags within a single window.  A diagonal drag in any
+direction of the Action Key saves the current window configuration to a
+ring of window configurations, just like the Emacs text kill ring.
+(@xref{Kill Ring,,,emacs, the Emacs Manual}).  Each diagonal drag in any
+direction of the Assist Key restores a prior saved window configuration
+from the ring.  Window configurations are restored in reverse order of the
+way they were saved.  Since a ring is circular, after the oldest element is
+restored, the newest element will again be restored and so on.
+
address@hidden Resizing Windows, Dragging Buffers, Saving and Restoring Window 
Configurations, Smart Mouse Key Drags
address@hidden Resizing Windows
+
address@hidden resizing windows
address@hidden drag, resize window
+Emacs windows may be resized by dragging their window separators (modelines
+or vertical side lines) within a frame.  Simply depress either Smart Mouse
+Key on a modeline or near a window side, hold it down while you drag to a
+new location and then release.  The window separator will then jump to the
+location of release.  Basically, just drag the window separator to where
+you want it.  Nowadays a better version of Emacs window resizing exists on
+the left mouse key.  A drag with this key from a blank area of a modeline
+or a window side divider shows visible feedback as the window is resized.
+But if you are always using the Smart Mouse Keys, you may prefer to use
+them for resizing windows as well.
+
+Note that you cannot drag the bottom-most modeline; you would have to
+resize the frame to move the bottom of that window up.
+
address@hidden Dragging Buffers,  , Resizing Windows, Smart Mouse Key Drags
address@hidden Dragging Buffers, Windows and Items
+
+Smart Mouse Key drags let you display buffers and windows however you want
+them.  Dired and buffer-menu items may also be displayed in specific
+locations with drags.  Below we explore these drag actions.
 
address@hidden ibtypes id-cflow
address@hidden C call tree
address@hidden call tree, C
address@hidden C flow graph
address@hidden id-cflow
-Expands or collapses C call trees and jumps to code definitions.
-Requires cross-reference tables built by the external @code{cxref}
-program.
address@hidden
+* Swapping Buffers::
+* Displaying Buffers::
+* Cloning Windows::
+* Displaying File and Buffer Items::
address@hidden menu
 
address@hidden ibtypes rfc-toc
address@hidden Internet RFC
address@hidden Request For Comment
address@hidden RFC
address@hidden table of contents
address@hidden rfc-toc
-Summarizes contents of an Internet rfc from anywhere within an rfc buffer.
-Each line of the summary may be selected to jump to the associated section.
address@hidden Swapping Buffers, Displaying Buffers, Dragging Buffers, Dragging 
Buffers
address@hidden Swapping Buffers
+
address@hidden swap buffers
address@hidden window, swap buffer
address@hidden buffer, swap
address@hidden drag, buffer swap
+Swapping buffer locations is quick and easy with Hyperbole.  Simply drag
+from one window to another with the Assist Key (not the Action Key).  This
+works across frames as well.
+
+If you have just two windows in an Emacs frame, you can swap their buffers
+from the keyboard.  Use this Hyperbole minibuffer menu key sequence
+involving the tilde key to swap the buffers and quit from the Hyperbole
+minibuffer menu: @bkbd{C-h h s w ~ q}.
+
address@hidden Displaying Buffers, Cloning Windows, Swapping Buffers, Dragging 
Buffers
address@hidden Displaying Buffers
+
address@hidden buffer, copy
address@hidden copy buffer
address@hidden drag, copy buffer
+What if you want to display the same buffer in another window and not swap
+buffers?  Depress the Action Mouse Key in the open area of the modeline of
+the source window and drag to the text area of the destination window.
+Voila, the buffer appears in the new location as well as the old one.
+
+If you want a new window where you release (so the original destination 
window's
+buffer stays onscreen), just drag to a window's modeline; that window will be
+split before the buffer is displayed.
+
address@hidden Cloning Windows, Displaying File and Buffer Items, Displaying 
Buffers, Dragging Buffers
address@hidden Cloning Windows
+
address@hidden clone window
address@hidden window, clone
address@hidden drag, clone window
+To clone a window with its buffer to a new frame, simply drag the Action Mouse
+Key from the window to outside of Emacs and release the key.  A new frame will
+be created, selected and sized according to the original window.  Do the same
+thing with the Assist Mouse Key and the original window will be deleted as 
well,
+unless it is the only window in that frame.
+
address@hidden Displaying File and Buffer Items,  , Cloning Windows, Dragging 
Buffers
address@hidden Displaying File and Buffer Items
+
address@hidden dired item drag
address@hidden buffer menu item drag
address@hidden drag, dired item
address@hidden drag, buffer menu item
+You can do the same thing with items in dired, buffer menu and ibuffer menus
+rather than buffers themselves.  Drag with the Action Mouse Key and the 
selected
+item will be displayed in any Emacs window in which you release.  Drag outside
+Emacs and it will be displayed in a new frame.
+
+So now you can put a bunch of buffers and files on your screen wherever
+you like.  Typically, a brief visual pulse is shown first at the source item 
and
+then in the whole destination window, to help you see that the transfer has 
been
+made.  An Assist Key Drag will move the the item list buffer to the
+destination (swapping buffers), just as it does with other buffers.
+
address@hidden @node Smart Mouse Key Modifiers,  , Smart Mouse Key Drags, Smart 
Keys
address@hidden @section   Smart Mouse Key Modifiers
+
address@hidden For advanced users of Emacs and Hyperbole, there is 
@code{hmouse-mod-mode},
address@hidden a global minor mode which turns the Action Mouse Key into a 
@key{Control}
address@hidden modifier key and the Assist Mouse Key into a @key{Meta} modifier 
key.  This
address@hidden allows for better keyboard energy balance across hands and is 
useful for
address@hidden reducing carpal tunnel stress.  It may also be used with a 
@dfn{chord
address@hidden keyboard} in one hand and a mouse in the other to point at 
things while
address@hidden simultaneously operating upon them.
+
address@hidden @findex hmouse-mod-mode
address@hidden @vindex hmouse-mod-mode
address@hidden @cindex Smart Keys as modifiers
address@hidden @cindex control key modifier
address@hidden @cindex meta key modifier
address@hidden @cindex chord keyboards
address@hidden Use the @code{hmouse-mod-mode} global minor mode to enable this 
feature.
address@hidden @bkbd{C-u M-x hmouse-mod-mode @key{RET}} enables it and adds
address@hidden @samp{HyMod} to the list of modeline minor modes.  @bkbd{C-u 0 
M-x
address@hidden hmouse-mod-mode @key{RET}} disables it and @bkbd{M-x
address@hidden hmouse-mod-mode @key{RET}} toggles it on and off.
+
address@hidden When enabled, if the Action Mouse Key is held down while alpha 
characters
address@hidden are typed, they are translated into @key{Control} keys instead.  
The
address@hidden Assist Key translates them into @key{Meta} keys.  When both Smart
address@hidden Keys are depressed, @key{Control-Meta} keys are produced.  The
address@hidden commands bound to the characters produced are then run.  For 
example,
address@hidden Action Key + @bkbd{a} runs the function for @bkbd{C-a}.  If no
address@hidden keys are typed while the Smart Keys are down, they operate as
address@hidden normally under Hyperbole.
+
address@hidden The code for Smart Key modifiers can be found in
address@hidden @address@hidden@{hyperb:address@hidden/hmouse-mod.el}.
+
+
address@hidden Buttons, Menus, Smart Keys, Top
address@hidden Buttons
 
address@hidden ibtypes markdown-internal-link
address@hidden markdown link
address@hidden markdown-internal-link
-Displays any in-file Markdown link referent.  Pathnames and urls are
-handled elsewhere.
address@hidden button
+This chapter explains use of Hyperbole @emph{buttons}.  There are several
+kinds of Hyperbole buttons: buttons that are created one at a time and
+stored in files (@dfn{explicit buttons}); buttons that can be
+activated by name anytime (@dfn{global buttons}); and buttons defined
+by textual patterns where one definition can create an infinite number
+of buttons (@dfn{implicit buttons}).
 
address@hidden ibtypes annot-bib
address@hidden bibliography
address@hidden reference
address@hidden annot-bib
-Displays annotated bibliography entries defined within the same buffer
-as the reference.  References must be delimited by square brackets, must
-begin with a word constituent character, and must not be in buffers
-whose names begin with a ` ' or `*' character.
+Hyperbole buttons are embedded within textual documents; they may be
+created, modified, moved or deleted.  Each button performs a specific
+action, such as linking to a file or executing a shell command.
 
address@hidden ibtypes debbugs-gnu-mode
address@hidden bug tracking
address@hidden issue tracking
address@hidden debbugs-gnu-mode
-Debbugs is a client-server issue tracker used by GNU free software
-projects, including Hyperbole, to manage issues and maintain threads
-of discussion around them.  When on a GNU Debbugs listing entry in
address@hidden, an Action Key press displays the discussion
-of the selected issue; an Assist Key press pretty prints the status of
-the issue to a window below the listing window.
address@hidden button, explicit
address@hidden button, global
address@hidden button, implicit
address@hidden button category
address@hidden explicit button
address@hidden global button
address@hidden implicit button
address@hidden
+There are three categories of Hyperbole buttons:
address@hidden @dfn
address@hidden explicit buttons
+created by Hyperbole, accessible from within a single document;
 
address@hidden ibtypes debbugs-gnu-query
address@hidden debbugs-gnu-query
-This implicit button type displays the results of a Gnu debbugs query
-based on the string at point and works in most kinds of buffers.  If
-the query includes a single id number, it displays the original message
-submission for that id and allows browsing of the followup discussion.
-The following buffer text formats are accepted (with point prior to
-any attribute):
address@hidden global buttons
+created by Hyperbole, specific to each user, and accessible anywhere
+within a user's network of documents;
 
address@hidden
-#id-number
-bug#id-number, bug# id-number, bug #id-number or bug id-number
-bug?attr1=val1&attr2=val2&attr3=val3
-bug#id-number?attr1=val1&attr2=val2&attr3=val3
address@hidden smallexample
address@hidden implicit buttons
+created and managed by other programs or embedded within the structure
+of a document, accessible from within a single document.  Hyperbole
+recognizes implicit buttons by contextual patterns given in their type
+specifications (explained later).
address@hidden table
 
address@hidden file, hib-debbugs.el
address@hidden
-Note that @emph{issue} or @emph{debbugs} may be used as well in place
-of @emph{bug}.  See the documentation at the top of
-the @file{hib-debbugs.el} file for detailed query format information.
+Explicit Hyperbole buttons may be embedded within any type of text file.
+Implicit buttons may appear only within document contexts allowed by
+their types, which may limit the kinds of documents or the locations
+within those documents at which such buttons may be found.  All global
+buttons for a user are stored in a single location and are activated by
+typing their names, rather than by direct selection, the means used to
+activate explicit and implicit buttons.
 
address@hidden ibtypes social-reference
address@hidden hashtag
address@hidden username
address@hidden social media
address@hidden social reference
address@hidden hibtypes-social-default-service
address@hidden social-reference
-Displays the web page associated with a social media hashtag or username
-reference at point.  Reference format is:
address@hidden
+To summarize:
 
address@hidden
-[facebook|instagram|twitter]?[#@@]<hashtag-or-username> or
-[fb|in|tw]?[#@@]<hashtag-or-username>
address@hidden smallexample
address@hidden
+Button Category   Active Within        Activation Means      Managed By
+========================================================================
+Explicit          a single document    direct selection      Hyperbole
+Global            any document         typing its name       Hyperbole
+Implicit          a matching context   direct selection      other tools
 
address@hidden
-For example, @samp{fb@@someuser} displays the home page for facebook user
address@hidden and @samp{in#hashtag} displays photos with the hashtag
address@hidden  The first part of the label for a button of this type
-is the social media service name.  The service name defaults to the
-value of @code{hibtypes-social-default-service} (default value of
-``twitter'') when not given, so #hashtag would be the same as
-twitter#hashtag.
address@hidden example
 
address@hidden Handled instead by @xref{Smart Key - Identifier Menu Mode}.
address@hidden @findex ibtypes imenu-item
address@hidden @vindex file, imenu.el
address@hidden @cindex identifier menu
address@hidden @cindex imenu
address@hidden @item imenu-item
address@hidden Displays the in-buffer definition of an identifier that point is 
within or after, else nil.
address@hidden This triggers only when imenu has already been used to generate 
an in-buffer item index.
address@hidden terminal use
+A click on a Hyperbole button may activate it or describe its actions,
+depending on which mouse key is used.  Buttons may also be activated from a
+keyboard.  (In fact, many Hyperbole operations, including menu usage, may
+be performed from any standard character terminal interface, so you need
+not be anchored to a desktop all day).  @xref{Smart Keys}.  There is
+also a key that shows you how a button will behave before you activate
+it, @pxref{Smart Key Operations}.
 
address@hidden ibtypes function-in-buffer
address@hidden file, func-menu.el
address@hidden function menu
address@hidden func-menu
address@hidden function-in-buffer
-Returns the function name defined within this buffer that point is
-within or after, else @samp{nil}.  This triggers only when the
-func-menu library has been loaded and the current major mode is one
-handled by func-menu.
address@hidden
+* Explicit Buttons::
+* Global Buttons::
+* Implicit Buttons::
+* Button Files::
+* Action Types::
+* Button Type Precedence::
+* Utilizing Explicit Buttons::
address@hidden menu
 
address@hidden link, pathname line and column
address@hidden line and column
address@hidden pathname, line and column
address@hidden ibtypes pathname-line-and-column
address@hidden pathname-line-and-column
-Makes a valid pathname:line-num[:column-num] pattern display the path
-at line-num and optional column-num.  Also works for remote pathnames.
address@hidden Explicit Buttons, Global Buttons, Buttons, Buttons
address@hidden   Explicit Buttons
 
address@hidden ibtypes pathname
address@hidden hpath:at-p
address@hidden hpath:find
address@hidden hpath:suffixes
address@hidden Tramp
address@hidden Ange-ftp
address@hidden EFS
address@hidden ftp
address@hidden pathname
address@hidden remote path
address@hidden filename
address@hidden link, pathname
address@hidden pathname
-Makes a valid pathname display the path entry.  Also works for
-delimited and non-delimited remote pathnames, Texinfo @file{} entries,
-and hash-style link references to HTML, Markdown or Emacs outline
-headings.  Emacs Lisp library files (filenames without any directory
-component that end in .el and .elc) are looked up using
-the @code{load-path} directory list.
address@hidden explicit button
address@hidden button, explicit
address@hidden button label
address@hidden button name
address@hidden label, button
address@hidden name, button
+Hyperbole creates and manages @dfn{explicit buttons} which perform
+specific actions when activated (typically through a button press).
+They look like this @samp{<(fake button)>}.  They are quickly
+recognizable, yet relatively non-distracting as you scan the text in
+which they are embedded.  The text between the @samp{<(} and @samp{)>}
+delimiters is called the @dfn{button label} or @dfn{button name}.
+Spacing between words within a button label is irrelevant to Hyperbole.
+Button labels may wrap across several lines without causing a problem;
+just be sure to select the first line of the button to activate it.
 
address@hidden
-See the function documentation for @code{hpath:at-p} for possible
-delimiters.  See the variable documentation for @code{hpath:suffixes} for
-suffixes that are added to or removed from the pathname when searching
-for a valid match.  See the function documentation for @code{hpath:find}
-for special file display options.
+Explicit buttons may be added to any editable text file; for source
+code files, simply place buttons within comments.  Buttons that you
+use for quick navigation to websites or other things you do often
+should be added to your personal button file.  @xref{Button Files}.
 
address@hidden ibtypes org-mode
address@hidden browse-url-browser-function
address@hidden org-mode
address@hidden Org mode
address@hidden org-mode
-The Action Key follows any Org mode link at point or cycles through
-views of the outline subtree at point.  In any other context besides
-the end of a line, the Action Key will invoke the Org mode standard
-binding of @address@hidden, (org-meta-return).  The Assist Key on
-an Org mode heading, cycles through views of the whole buffer outline
-and on an Org mode link, displays standard Hyperbole help.
address@hidden button, moving
address@hidden moving buttons
+Explicit buttons may be freely moved about within the buffer in which
+they are created.  (No present support exists for moving buttons between
+buffers; support the Hyperbole project if you would like to help make
+this happen).  A single button may also appear multiple times within the
+same buffer; simply copy the button label with its delimiters
+to a new location if you need another copy of it.
 
-The variable, @code{browse-url-browser-function}, customizes the url
-browser that is used for urls.  Valid values of this variable
-include @code{browse-url-default-browser}
-and @code{browse-url-generic}.
+For details on how to create, activate, delete or modify explicit
+buttons, @pxref{Utilizing Explicit Buttons}.
 
address@hidden ibtypes doc-id
address@hidden online library
address@hidden document identifier
address@hidden doc-id
-Displays an index entry for a site-specific document given its id.
-Ids must be delimited by @code{doc-id-start} and @code{doc-id-end} and
-must match the function given by @code{doc-id-p}.  This permits
-creation of catalogued online libraries.  (Note that this implicit
-button type is not installed by default.  You must manually configure
-it and load it from the file, 
@address@hidden@{hyperb:address@hidden/hib-doc-id.el}).
address@hidden table
address@hidden link button
address@hidden referent
+Each explicit button is assigned an action type that determines the actions
+it performs.  @dfn{Link action types} connect buttons to particular types
+of @dfn{referents}, the targets of their links.  Link action type names all
+begin with @code{link-}.  Link action button referents are displayed when
+such buttons are activated with a press or a click.  @xref{Action Types},
+for a list of standard action types including link types.
 
address@hidden Button Files, Action Types, Implicit Buttons, Buttons
address@hidden   Button Files
address@hidden linking, in-place
address@hidden Hyperbole data model
+Hyperbole does not manage referent data; this is left to the
+applications that generate the data.  This means that Hyperbole
+provides in-place linking and does not require reformatting data to
+integrate it with Hyperbole.
 
address@hidden button files
-It is often convenient to create files filled with buttons as a means
-of navigating distributed information pools or for other purposes.
-These files can also serve as useful roadmaps that guide a user
-through both unfamiliar and highly familiar information spaces.  Files
-that are created specifically for this purpose are
-called @dfn{Hyperbole button files}.
address@hidden button data
address@hidden button attribute
address@hidden file, .hypb
+Hyperbole stores the @dfn{button data} that gives an explicit button its
+behavior, separately from the button label, in a file named
address@hidden (@file{_hypb} under MS Windows) within the same directory
+as the file in which the button is created.  Thus, all files in the
+same directory share a common button data file.  Button data is
+comprised of individual @dfn{button attribute} values.  A user never
+sees this data in its raw form but may see a formatted version by
+asking for help on a button.
 
address@hidden hbmap:filename
address@hidden button file, personal
address@hidden button file, directory
-The Hyperbole menu system provides quick access to two types of these
-button files: personal and directory-specific, through the ButFile menu.
-(The variable, @code{hbmap:filename}, contains the base name of these
-button files.  Its standard value is @file{HYPB}.)
 
address@hidden dir, ~/.hyperb
address@hidden hbmap:dir-user
address@hidden Global Buttons, Implicit Buttons, Explicit Buttons, Buttons
address@hidden   Global Buttons
+
 @cindex global button
-A personal button file may serve as a user's own roadmap to frequently
-used resources, like a personal home page.  Selection of the
-ButFile/PersonalFile menu item, @bkbd{C-h h b p}, displays this file for
-editing.  The default personal button file is stored within the
-directory given by the @code{hbmap:dir-user} variable whose standard
-value is @file{~/.hyperb}.  The default Hyperbole configuration also
-appends all global buttons to the end of this file, one per line, as
-they are created.  So you can edit or annotate them within the file.
address@hidden button, global
address@hidden button label
address@hidden label, button
+Access to explicit buttons depends upon the information on your screen
+since they are embedded within particular buffers.  Sometimes it is
+useful to activate buttons without regard to the information with which
+you are working.  In such instances, you use @dfn{global buttons}, which
+are buttons that may be activated or otherwise operated upon by typing
+their labels/names when they are prompted for, rather than selecting the
+buttons within a buffer.
 
-A directory-specific button file may exist for each file system
-directory.  Such files are useful for explaining the contents of
-directories and pointing readers to particular highlights within the
-directories.  Selection of the ButFile/DirFile menu item, @bkbd{C-h h
-b d}, displays the button file for the current directory; this
-provides an easy means of updating this file when working on a file
-within the same directory.  If you want to view some other
-directory-specific button file, simply use the normal Emacs file
-finding commands.
+If you want a permanent link to a file section that you can follow at
+any time, you can use a global button.  Or what about an Emacs keyboard
+macro that you use frequently?  Create an @code{exec-kbd-macro} button
+with an easy to type name and then you can activate it whenever the need
+arises.
 
-One might suggest that quick menu access be provided for group-specific
-and site-specific button files.  Instead, link buttons to such things
-should be placed at the top of your personal button file.  This provides
-a more flexible means of connecting to such resources.
address@hidden C-h h g
address@hidden menu, Gbut
address@hidden menu, Global-Button
+Global buttons are managed with the Hyperbole Gbut/ menu accessed with
address@hidden h g}.  The Create item, @bkbd{C-h h g c}, prompts for a
+global button name, an action type, and the action's associated
+arguments, such as a file to link to.  It then creates the button.  To
+activate the button, use the Act menu item, @bkbd{C-h h g a}.  Type
+the button's name and its action will be executed.
 
address@hidden Action Types, Button Type Precedence, Button Files, Buttons
address@hidden   Action Types
+Global buttons are actually explicit buttons stored at the end of your
+personal button file, @pxref{Button Files}.  You can always go into that
+file and activate, edit or annotate these buttons with comments.
 
address@hidden action type
address@hidden argument, use
address@hidden action
address@hidden button action
address@hidden types} are special functions that specify Hyperbole button
-behaviors.  Each action type may be used by any category of button:
-global, explicit, or implicit.  The arguments needed by an action type
-are prompted for at button creation time or in the case of an implicit
-button, computed when the button is activated.  During button
-activation, the arguments are fed to the action type's body to achieve
-the desired result.  This body is called the button @dfn{action}.
address@hidden bookmarks
+Emacs has a built-in feature similar to Global Buttons called Bookmarks.
+Bookmarks store places in files or link to URLs, so they are more limited
+than Hyperbole's global buttons and cannot utilize all of Hyperbole's
+capabilities for performing actions.  @xref{Bookmarks,,,emacs, the Emacs
+Manual}, for details on bookmarks.
 
-Hyperbole handles all of this processing transparently.  As a user, all
-you need know is the set of action types that you can work with when
-creating explicit or global buttons.
address@hidden Implicit Buttons, Button Files, Global Buttons, Buttons
address@hidden   Implicit Buttons
 
address@hidden actypes, list of
address@hidden
-The standard action types included with Hyperbole in alphabetical order
-are:
address@hidden button, implicit
address@hidden implicit button
address@hidden buttons} are virtual buttons recognized within the
+natural structure of a document.  For example, a web URL button that
+displays its link or an email address button that starts a mail
+message to the associated address.  Implicit buttons are identified by
+contextual patterns found within documents.  An @dfn{Implicit button
+type} identifies a pattern or state that when matched triggers
+an @emph{action} associated with the implicit button type.  The action
+is specified by either a Hyperbole action type (@pxref{Action Types})
+or an Emacs Lisp function.  Implicit button types may use the same
+action types that explicit buttons use.  As an example, a pathname
+implicit button type would match to any existing local filename or
+directory name and its action would be to display the associated file
+or directory, typically in another window.
+
address@hidden file, hibtypes.el
address@hidden context
address@hidden boolean expressions
address@hidden activating implicit button
address@hidden menu item, Ibut/Act
address@hidden C-h h i a
+Unlike explicit buttons, implicit buttons have no individual button data
+other than their textual labels.  You use implicit button types which
+include boolean expressions (predicates) that match to both the label
+and the context required of any button of the type.  Each time a Smart
+Key is pressed at a location, Hyperbole evaluates the predicates from
+the list of implicit button types and the first one that evaluates true
+is selected and its associated action is triggered.  The Ibut/Act menu
+item, @bkbd{C-h h i a}, also activates any implicit button found at the
+current point.
+
+All of this happens transparently and is easy to use once you try it.
+The Hyperbole Smart Keys offer additional extensive context-sensitive
+point-and-click type behavior beyond implicit button types.  @xref{Smart
+Key Operations}.
+
address@hidden ibtypes, list of
address@hidden implicit button types
+Below, standard implicit button types are listed in the order in which
+Hyperbole tries to match to the types when looking for an implicit
+button; @bkbd{C-h h i t @key{RET}} provides similar information.  See
+the Hyperbole file, @file{hibtypes.el}, for complete examples of
+implicit button types (where they are listed in reverse in increasing
+order of priority).
 
 @table @code
address@hidden actypes annot-bib
address@hidden annot-bib
-Follows an internal reference KEY within an annotated bibliography,
-delimiters = [ ].
 
address@hidden actypes completion
address@hidden ibtypes completion
address@hidden completion
 @item completion
-Inserts a completion at point into the minibuffer or a buffer.
-Unless point is at the end of buffer or if a completion has already been 
-inserted, in which case the completions window is deleted.
+Inserts the completion at point (from a completions buffer) into the
+minibuffer or the other window.
 
address@hidden actypes eval-elisp
address@hidden eval-elisp
-Evaluates a Lisp expression LISP-EXPR.
address@hidden ibtypes hyp-source
address@hidden Hyperbole report
address@hidden hyp-source
+Turns source location entries following an `@@loc>' line in Hyperbole
+reports into buttons that jump to the associated location.  For
+example, @bkbd{C-h h d d C-h h e h o} summarizes the properties of the
+explicit buttons in the @file{DEMO} file and each button in that report
+buffer behaves the same as the corresponding button in the original
address@hidden file.
 
address@hidden actypes exec-kbd-macro
address@hidden exec-kbd-macro
-Executes a KBD-MACRO REPEAT-COUNT times.  KBD-MACRO may be a string of
-editor command characters, a function symbol or nil to use the last
-defined keyboard macro.  Optional REPEAT-COUNT nil means execute once,
-zero means repeat until error.
address@hidden ibtypes hyp-address
address@hidden Hyperbole mail list
address@hidden hyp-address
+Within a mail or Usenet news composer window, makes a Hyperbole
+support/discussion e-mail address insert Hyperbole environment and
+version information.  This is useful when sending mail to a Hyperbole
+discussion mail list.  See also the documentation
+for @code{actypes::hyp-config}.  For example, an Action Mouse Key
+click on <hyperbole-users@@gnu.org> in a mail composer window would
+activate this implicit button type.
 
address@hidden actypes exec-shell-cmd
address@hidden exec-shell-cmd
-Executes a SHELL-CMD string asynchronously.  Optional non-nil second
-argument INTERNAL-CMD inhibits display of the shell command line
-executed.  Optional non-nil third argument KILL-PREV means kill the last
-output to the shell buffer before executing SHELL-CMD.
address@hidden ibtypes Info-node
address@hidden Info node
address@hidden Info-node
+Makes a "(filename)nodename" button display the associated Info node.
+Also makes a "(filename)itemname" button display the associated Info
+index item.  Examples are "(hyperbole)Implicit Buttons" and
+``(hyperbole)C-c /''.
 
address@hidden actypes exec-window-cmd
address@hidden exec-window-cmd
-Asynchronously executes an external window-based SHELL-CMD string.
address@hidden ibtypes www-url
address@hidden URL
address@hidden World-wide Web
address@hidden WWW
address@hidden Action Key, web browsing
address@hidden Action Key, web browsing
address@hidden browse-url-browser-function
address@hidden www-url
+When not in an Emacs web browser buffer, follows any non-ftp URL (link) at 
point.
+The variable, @code{browse-url-browser-function}, may be used to customize
+which URL browser is called.  Terse URLs which lack a protocol prefix,
+like www.gnu.org, are also recognized.
 
address@hidden actypes function-in-buffer
address@hidden function-in-buffer
-Displays the definition of function NAME found at POS in the current buffer.
address@hidden ibtypes gnus-push-button
address@hidden GNUS push-buttons
address@hidden hiding signatures
address@hidden signatures, hiding
address@hidden gnus-push-button
+Activates GNUS-specific article push-buttons, e.g. for hiding
+signatures.  GNUS is a news and mail reader.
 
address@hidden actypes hyp-config
address@hidden hyp-config
-Inserts Hyperbole configuration and debugging information at the end
-of the current buffer or within optional OUT-BUF.
address@hidden ibtypes texinfo-ref
address@hidden Texinfo cross-reference
address@hidden cross-reference, Texinfo
address@hidden texinfo-ref
+Displays Texinfo, Info node or help associated with Texinfo node, menu
+item, @@xref, @@pxref, @@ref, @@code, @@findex, @@var or @@vindex at point.
+If point is within the braces of a cross-reference, the associated Info node is
+shown.  If point is to the left of the braces but after the @@ symbol and
+the reference is to a node within the current Texinfo file, then the
+Texinfo node is shown.
 
address@hidden actypes hyp-request
address@hidden hyp-request
-Inserts help for composing a Hyperbole support/discussion message into
-the current buffer or the optional OUT-BUF.
+For @@code, @@findex, @@var and @@vindex references, the associated 
documentation
+string is displayed.
 
address@hidden actypes hyp-source
address@hidden hyp-source
-Displays a buffer or file from a line beginning with
address@hidden:source-prefix}.
address@hidden ibtypes mail-address
address@hidden e-mail address
address@hidden rolo address
address@hidden address
address@hidden mail-address
+If on an e-mail address in a specific buffer type, compose mail to that
+address in another window. Applies to the rolo match buffer, any buffer
+attached to a file in @code{hyrolo-file-list}, or any buffer
+with @file{mail} or @file{rolo} (case-insensitive) within its name.
 
address@hidden actypes kbd-key
address@hidden kbd-key
-Executes the function binding for KEY-SEQUENCE, delimited by @address@hidden
-Returns @samp{t} if a KEY-SEQUENCE has a binding, else @samp{nil}.
address@hidden ibtypes patch-msg
address@hidden patch output
address@hidden patch-msg
+Jumps to the source code associated with output from the @samp{patch}
+program.  Patch applies diffs to source code.
 
address@hidden link action types
address@hidden actypes link-to-buffer-tmp
address@hidden link-to-buffer-tmp
-Displays a BUFFER.  This type of link generally can
-only be used within a single editor session.  Use @code{link-to-file}
-instead for a permanent link.
address@hidden ibtypes elisp-compiler-msg
address@hidden byte compiler error
address@hidden Emacs Lisp compiler error
address@hidden compiler error
address@hidden elisp-compiler-msg
+Jumps to the source code for a definition associated with an Emacs
+Lisp byte-compiler error message.  Works when activated anywhere
+within an error line.
 
address@hidden actypes link-to-directory
address@hidden link-to-directory
-Displays a DIRECTORY in Dired mode.
address@hidden ibtypes debugger-source
address@hidden gdb
address@hidden dbx
address@hidden xdb
address@hidden stack frame
address@hidden breakpoint
address@hidden source line
address@hidden debugger-source
+Jumps to the source line associated with a debugger stack frame or
+breakpoint line.  This works with gdb, dbx, and xdb.  Such lines are
+recognized in any buffer.
 
address@hidden actypes link-to-doc
address@hidden link-to-doc
-Displays an online version of a document given by DOC-ID.  If the online
-version of a document is not found in @code{doc-id-indices}, an error is
-signalled.
address@hidden ibtypes grep-msg
address@hidden grep
address@hidden compiler error
address@hidden grep-msg
+Jumps to a line associated with grep or compilation error messages.
+Messages are recognized in any buffer.
 
address@hidden actypes link-to-ebut
address@hidden link-to-ebut
-Performs an action given by another button, specified by KEY and KEY-FILE.
address@hidden ibtypes klink
address@hidden klink
address@hidden koutline link
address@hidden kcell link
address@hidden klink
+Follows a link delimited by <> to a koutline cell.
+See the documentation for @code{actypes::link-to-kotl} for valid link
+specifiers.
 
address@hidden actypes link-to-elisp-doc
address@hidden link-to-elisp-doc
-Displays the documentation for FUNC-SYMBOL.
address@hidden ibtypes man-apropos
address@hidden UNIX manual
address@hidden man pages
address@hidden man apropos
address@hidden man-apropos
+Makes man apropos entries (from @samp{man -k}) display associated man
+pages when selected.
 
address@hidden actypes link-to-file
address@hidden link-to-file
-Displays file given by PATH scrolled to optional POINT.  With POINT,
-buffer is displayed with POINT at window top.
address@hidden ibtypes rfc
address@hidden Internet RFC
address@hidden Request For Comment
address@hidden RFC
address@hidden remote file
address@hidden ftp
address@hidden rfc
+Retrieves and displays an Internet rfc referenced at point.  The
+following formats are recognized: RFC822, rfc-822, and RFC 822.  The
address@hidden:rfc} variable specifies the location from which to
+retrieve RFCs.  Requires the Emacs builtin Tramp library for ftp file
+retrievals.
 
address@hidden actypes link-to-file-line
address@hidden link-to-file-line
-Displays a file given by PATH scrolled to LINE-NUM.
address@hidden ibtypes kbd-key
address@hidden key sequence
address@hidden kbd-key
+Executes a key sequence found around point, delimited by curly braces, 
@address@hidden, if any.
+Key sequences should be in human readable form, e.g.@: @bkbd{C-x C-b}.  
Formats such
+as @address@hidden will not be recognized.
 
address@hidden actypes link-to-Info-index-item
address@hidden link-to-Info-index-item
-Displays an Info index ITEM cross-reference.
-ITEM must be a string of the form (filename)item-name.  During
-button creation, completion for both filename and item-name is
-available.  Filename may be given without the .info suffix."
+Any key sequence must be a string of one of the following:
address@hidden @bullet
address@hidden a Hyperbole minibuffer menu item key sequence,
address@hidden a HyControl key sequence,
address@hidden a M-x extended command,
address@hidden or a valid key sequence together with its interactive arguments.
address@hidden itemize
 
address@hidden actypes link-to-Info-node
address@hidden link-to-Info-node
-Displays an Info NODE.  NODE must be a string of the form
-(filename)nodename.  During button creation, completion for both
-filename and nodename is available.  Filename may be given without the
-.info suffix.
address@hidden ibtypes dir-summary
address@hidden file, MANIFEST
address@hidden file, DIR
address@hidden dir-summary
+Detects filename buttons in files named "MANIFEST" or "DIR".
+Displays selected files.  Each file name must be at the beginning of the
+line and must be followed by one or more spaces and then another
+non-space, non-parenthesis, non-brace character.
 
address@hidden actypes link-to-kcell
address@hidden kcell:ref-to-id
address@hidden link-to-kcell
-Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
-top of a window.  See the documentation for @code{(kcell:ref-to-id)} for
-valid CELL-REF formats.
address@hidden ibtypes text-toc
address@hidden table of contents
address@hidden toc implicit button type
address@hidden text-toc
+Jumps to the text file section referenced by a table of contents entry
+at point.  The file name of the current buffer must contain
address@hidden and there must be a `Table of Contents' or `Contents'
+label on a line by itself (it may begin with an asterisk), preceding the
+table of contents.  Each toc entry must begin with some whitespace
+followed by one or more asterisk characters.  Each line which begins a
+new file section must start with one or more asterisk characters at the
+very beginning of the line.
 
address@hidden
-If FILE is @samp{nil}, the current buffer is used.  If CELL-REF is
address@hidden, the first cell in the view is shown.
address@hidden ibtypes cscope
address@hidden C/C++ call trees
address@hidden C/C++ cross-reference
address@hidden Cscope
address@hidden cscope
+Jumps to a C/C++ source line associated with a Cscope C analyzer output line.
+Requires pre-loading of the cscope.el Lisp library available from the Emacs
+Lisp archives and the open source cscope program available from
+http://cscope.sf.net.  Otherwise, does nothing.
 
address@hidden actypes link-to-kotl
address@hidden link-to-kotl
-Displays at the top of a window the referent pointed to by LINK.
-LINK may be of any of the following forms, with or without delimiters:
address@hidden
-  < pathname [, cell-ref] >
-  < [-!&] pathname >
-  < @@ cell-ref >
address@hidden example
address@hidden ibtypes etags
address@hidden etags entry
address@hidden TAGS file
address@hidden tag
address@hidden etags
+Jumps to the source line associated with an etags file entry in a TAGS buffer.
+If on a tag entry line, jumps to the source line for the tag.  If on a
+pathname line or line preceding it, jumps to the associated file.
 
address@hidden
-See the documentation for @code{(kcell:ref-to-id)} for valid cell-ref
-formats.
address@hidden ibtypes ctags
address@hidden ctags entry
address@hidden tags file
address@hidden ctags
+Jumps to the source line associated with a ctags file entry in any buffer.
+Ctags files are used by old editors like vi to lookup identifiers.
+Emacs uses the newer, more flexible Etags format.
 
address@hidden actypes link-to-mail
address@hidden link-to-mail
-Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE.  See
-the documentation for the variable @code{hmail:init-function} for
-information on how to specify the mail reader to use.
address@hidden ibtypes id-cflow
address@hidden C call tree
address@hidden call tree, C
address@hidden C flow graph
address@hidden id-cflow
+Expands or collapses C call trees and jumps to code definitions.
+Requires cross-reference tables built by the external @code{cxref}
+program.
 
address@hidden actypes link-to-regexp-match
address@hidden link-to-regexp-match
-Finds REGEXP's Nth occurrence in SOURCE and displays the location at the
-top of the selected window.  SOURCE is a pathname unless optional
-BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
-Returns @samp{t} if found, signals an error if not.
address@hidden ibtypes rfc-toc
address@hidden Internet RFC
address@hidden Request For Comment
address@hidden RFC
address@hidden table of contents
address@hidden rfc-toc
+Summarizes contents of an Internet rfc from anywhere within an rfc buffer.
+Each line of the summary may be selected to jump to the associated section.
 
address@hidden actypes link-to-rfc
address@hidden link-to-rfc
-Retrieves and displays an Internet rfc given by RFC-NUM.  RFC-NUM may be
-a string or an integer.  Requires a remote file access library, such as
-Tramp, for ftp file retrievals.
address@hidden ibtypes markdown-internal-link
address@hidden markdown link
address@hidden markdown-internal-link
+Displays any in-file Markdown link referent.  Pathnames and urls are
+handled elsewhere.
 
address@hidden actypes link-to-string-match
address@hidden link-to-string-match
-Finds STRING's Nth occurrence in SOURCE and displays the location at the
-top of the selected window.  SOURCE is a pathname unless optional
-BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
-Returns @samp{t} if found, @samp{nil} if not.
-
address@hidden actypes link-to-texinfo-node
address@hidden link-to-texinfo-node
-Displays the Texinfo node with NODENAME (a string) from the current buffer.
-
address@hidden actypes link-to-web-search
address@hidden link, web search
address@hidden web search link
address@hidden link-to-web-search
-Searches web SERVICE-NAME for SEARCH-TERM.  Uses 
@code{hyperbole-web-search-alist}
-to match each service to its search url.  Uses 
@code{hyperbole-web-search-browser-function}
-and the @code{browse-url} package to display search results.
address@hidden ibtypes git-reference
address@hidden git reference
address@hidden version control
address@hidden hibtypes-git-default-project
address@hidden git-reference
+Displays the git entity associated with REFERENCE and optional PROJECT.
+See @file{DEMO#Git (Local) References} for examples.
 
address@hidden actypes man-show
address@hidden sm-notify
address@hidden man-show
-Displays a man page on TOPIC, which may be of the form
address@hidden<command>(<section>}).  If using the Superman manual entry
-package, see the documentation for @code{sm-notify} to control where the
-man page is displayed.
+REFERENCE is a string of one of the following forms:
address@hidden @bullet
address@hidden <ref-item>
address@hidden /?<project>/<ref-item>
address@hidden /<project>.
address@hidden itemize
 
address@hidden actypes rfc-toc
address@hidden rfc-toc
-Computes and displays a summary of an Internet rfc in BUF-NAME.  Assumes
-point has already been moved to the start of the region to summarize.
-Optional OPOINT is the point to return to in BUF-NAME after displaying
-the summary.
+<ref-item> is one of these:
address@hidden @asis
address@hidden one of the words: branches, commits, or tags
+the associated items are listed
address@hidden one of the words: branch, commit, or tag followed by a '/' and 
item id
+the item is shown
address@hidden a commit reference given by a hex number, 55a1f0
+the commit diff is displayed
address@hidden a branch or tag reference given by an alphanumeric name, e.g. 
hyper20
+the files in the branch are listed.
address@hidden table
 
address@hidden actypes text-toc
address@hidden table of contents
address@hidden toc action type
address@hidden text-toc
-Jumps to the text file SECTION referenced by a table of contents entry
-at point.
address@hidden hibtypes-git-default-project
+If given, PROJECT overrides any project value in REFERENCE.  If no PROJECT
+value is provided, it defaults to the value of 
@code{hibtypes-git-default-project}. 
+
address@hidden ibtypes git-commit-reference
address@hidden git commit reference
address@hidden version control
address@hidden git-commit-reference
+Displays the diff for a git commit reference, e.g. commit a55e21, typically
+produced by git log.
+
address@hidden ibtypes github-reference
address@hidden github reference
address@hidden version control
address@hidden hibtypes-github-default-project
address@hidden hibtypes-github-default-user
address@hidden github-reference
+Displays the Github entity associated with REFERENCE and optional USER and 
PROJECT.
+See @file{DEMO#Github (Remote) References} for examples.
+
+REFERENCE is a string of one of the following forms:
address@hidden @bullet
address@hidden <ref-item>
address@hidden <user>/<project>/<ref-item>
address@hidden <project>/<ref-item>
address@hidden /<project>.
address@hidden itemize
 
address@hidden actypes www-url
address@hidden URL
address@hidden World-wide Web
address@hidden WWW
address@hidden browse-url-browser-function
address@hidden www-url
-Follows a link given by a URL.  The variable,
address@hidden, customizes the url browser
-that is used.  See its documentation string for details.
+<ref-item> is one of these:
address@hidden @asis
address@hidden @bullet{} one of the words: branches, commits, issues, pulls, or 
tags
+the associated items are listed
address@hidden @bullet{} one of the words: branch, commit, issue, pull or tag 
followed by a '/' and item id
+the item is shown
address@hidden @bullet{} an issue reference given by a positive integer, e.g. 
@emph{92} or prefaced with @emph{GH-}, like GH-92
+the issue is displayed
address@hidden @bullet{} a commit reference given by a hex number, 55a1f0
+the commit diff is displayed
address@hidden @bullet{} a branch or tag reference given by an alphanumeric 
name, e.g. hyper20
+the files in the branch are listed.
 @end table
 
address@hidden action
address@hidden hui:ebut-prompt-for-action
-Action types create a convenient way of specifying button behavior
-without the need to know how to program.  Expert users who are familiar
-with Emacs Lisp, however, may find that they often want to tailor button
-actions in a variety of ways not easily captured within a type system.
-In such cases, @code{hui:ebut-prompt-for-action} should be set to
address@hidden  This will cause Hyperbole to prompt for an action to override
-the button's action type at each explicit button creation.  For those cases
-where the action type is sufficient, a @samp{nil} value should be
-entered for the action.  An action may be any Lisp form that Emacs
-Lisp can evaluate.
address@hidden hibtypes-github-default-user
+USER defaults to the value of @code{hibtypes-github-default-user}.
+If given, PROJECT overrides any project value in REFERENCE.  If no
+PROJECT value is provided, it defaults to the value of
address@hidden
 
address@hidden Button Type Precedence, Utilizing Explicit Buttons, Action 
Types, Buttons
address@hidden   Button Type Precedence
address@hidden ibtypes social-reference
address@hidden hashtag
address@hidden username
address@hidden social media
address@hidden social reference
address@hidden hibtypes-social-default-service
address@hidden social-reference
+Displays the web page associated with a social media hashtag or
+username reference at point.
 
address@hidden button precedence
address@hidden button label overlap
-Explicit buttons always take precedence over implicit buttons.  Thus, if
-a button selection is made which falls within both an explicit and
-implicit button, only the explicit button will be selected.  Explicit
-button labels are not allowed to overlap; Hyperbole's behavior in such
-cases is undefined.
+Reference format is:
address@hidden
+[facebook|instagram|twitter]?[#@@]<hashtag-or-username> or
+[fb|in|tw]?[#@@]<hashtag-or-username>
address@hidden example
 
address@hidden ibtype, evaluation order
-If there is no explicit button at point during a selection request,
-then each implicit button type predicate is tested in turn until one
-returns non-nil or all are exhausted.  Since two implicit button types
-may have overlapping @dfn{domains}, those contexts in which their
-predicates are true, only the first matching type is used.  The type
-predicates are tested in @emph{reverse} order of definition, i.e.@:
-most recently entered types are tested first, so that personal types
-defined after standard system types take precedence.  It is important
-to keep this order in mind when defining new implicit button types.
-By making match predicates as specific as possible, one can minimize
-any overlapping implicit button domains.
address@hidden
+For example, @samp{fb@@someuser} displays the home page for facebook user
address@hidden and @samp{in#hashtag} displays photos with the hashtag
address@hidden  The first part of the label for a button of this type
+is the social media service name.  The service name defaults to the
+value of @code{hibtypes-social-default-service} (default value of
+``twitter'') when not given, so #hashtag would be the same as
+twitter#hashtag.
 
address@hidden type redefinition
-Once a type name is defined, its precedence relative to other types
-remains the same even if its body is redefined, as long as its name is
-not changed.  This allows incremental modifications to types without
-any worry of altering their precedences.  @xref{Creating Types}, for
-information on how to develop or modify types.
address@hidden ibtypes debbugs-gnu-mode
address@hidden bug tracking
address@hidden issue tracking
address@hidden debbugs-gnu-mode
+Debbugs is a client-server issue tracker used by GNU free software
+projects, including Hyperbole, to manage issues and maintain threads
+of discussion around them.  You issues queries to a Debbugs server and
+it returns a listing entry for each matching issue.  When on a GNU
+Debbugs listing entry in @code{debbugs-gnu-mode}, an Action Key press
+displays the discussion of the selected issue; an Assist Key press
+pretty prints the status of the issue to a window below the listing
+window.
 
address@hidden Utilizing Explicit Buttons,  , Button Type Precedence, Buttons
address@hidden   Utilizing Explicit Buttons
address@hidden ibtypes debbugs-gnu-query
address@hidden debbugs-gnu-query
+Debbugs queries may be issued by activating this implicit button type.
+It displays the results of a Gnu debbugs query based on the string at
+point and works in most kinds of buffers.  If the query includes a
+single id number, it displays the original message submission for that
+id and allows browsing of the followup discussion.  The following
+buffer text formats are accepted (with point prior to any attribute):
 
-Explicit buttons are a fundamental building block for creating personal
-or organizational hypertext networks with Hyperbole.  This section
-summarizes the user-level operations available for managing these
-buttons.
address@hidden
+bug#id-number, bug# id-number, bug #id-number or bug id-number
+bug?attr1=val1&attr2=val2&attr3=val3
+bug#id-number?attr1=val1&attr2=val2&attr3=val3
address@hidden smallexample
 
address@hidden
-* Creation::
-* Renaming::
-* Deletion::
-* Modification::
-* Location::
-* Buttons in Mail::
-* Buttons in News::
address@hidden menu
address@hidden file, hib-debbugs.el
address@hidden
+Note that @emph{issue} or @emph{debbugs} may be used as well in place
+of @emph{bug}.  See the documentation at the top of
+the @file{hib-debbugs.el} file for detailed query format information.
 
address@hidden Creation, Renaming, Utilizing Explicit Buttons, Utilizing 
Explicit Buttons
address@hidden  Creation
address@hidden ibtypes annot-bib
address@hidden bibliography
address@hidden reference
address@hidden annot-bib
+Displays annotated bibliography entries defined within the same buffer
+as the reference.  References must be delimited by square brackets, must
+begin with a word constituent character, and must not be in buffers
+whose names begin with a ` ' or `*' character.
 
-Creating explicit buttons is fun and easy.  You can always try them
-out immediately after creating them or can utilize the Assist Key to
-verify what buttons do.  There are two ways to create them: by
-dragging between windows with the Action Mouse Key or by using the
-Hyperbole menus.
address@hidden Handled instead by @xref{Smart Key - Identifier Menu Mode}.
address@hidden @findex ibtypes imenu-item
address@hidden @vindex file, imenu.el
address@hidden @cindex identifier menu
address@hidden @cindex imenu
address@hidden @item imenu-item
address@hidden Displays the in-buffer definition of an identifier that point is 
within or after, else nil.
address@hidden This triggers only when imenu has already been used to generate 
an in-buffer item index.
 
address@hidden
-* By Dragging::                 Creation Via Action Key Drags
-* By Menu::                     Creation Via Menus
address@hidden menu
address@hidden ibtypes function-in-buffer
address@hidden file, func-menu.el
address@hidden function menu
address@hidden func-menu
address@hidden function-in-buffer
+Returns the function name defined within this buffer that point is
+within or after, else @samp{nil}.  This triggers only when the
+func-menu library has been loaded and the current major mode is one
+handled by func-menu.
 
address@hidden By Dragging, By Menu, Creation, Creation
address@hidden Creation Via Action Key Drags
address@hidden link, pathname line and column
address@hidden line and column
address@hidden pathname, line and column
address@hidden ibtypes pathname-line-and-column
address@hidden pathname-line-and-column
+Makes a valid pathname:line-num[:column-num] pattern display the path
+at line-num and optional column-num.  Also works for remote pathnames.
 
address@hidden explicit button, creation
address@hidden button, creation
address@hidden link, creation
address@hidden drag
address@hidden Action Key drag
address@hidden creating a link
address@hidden mouse drag, link creation
address@hidden direct link creation
-The most efficient way to create an explicit link button interactively
-is to use the Action Mouse Key to drag from a button source window to
-a window showing its link referent.  More specifically, you should
-split your current Emacs frame into two windows: one which contains
-the point at which you want a button to be inserted and another which
-shows the point to which you want to link.  Depress the Action Mouse
-Key at the source point for the button (anywhere but on a paired
-delimiter such as double quotes or parentheses).  Then drag to the
-other window and release the Action Mouse Key at the start point of
-the link referent.  The process becomes quite simple with a little
-practice. (@xref{By Menu, Creation Via Menus}, for a more detailed
-explanation of the explicit button creation process).
address@hidden ibtypes pathname
address@hidden hpath:at-p
address@hidden hpath:find
address@hidden hpath:suffixes
address@hidden Tramp
address@hidden ftp
address@hidden pathname
address@hidden remote path
address@hidden filename
address@hidden link, pathname
address@hidden pathname
+Makes a valid pathname display the path entry.  Also works for
+delimited and non-delimited remote pathnames, Texinfo @file{} entries,
+and hash-style link references to HTML, Markdown or Emacs outline
+headings.  Emacs Lisp library files (filenames without any directory
+component that end in .el and .elc) are looked up using
+the @code{load-path} directory list.
 
-If a region was selected prior to the start of the drag, it is used as
-the button label, otherwise, you are prompted for the label.  Then
-Hyperbole uses the link referent context to determine the type of link
-to make.  If there are a few different types of links which are
-applicable from the context, you will be prompted with a list of the
-types.  Simply use the Action Key or the first letter of the link type
-to select one of the type names and to finish the link creation.
-Hyperbole will then insert explicit button delimiters around the
-button label and will display a message in the minibuffer indicating
-the button label, its action/link type, and any arguments, notably the
-thing to which it links.
address@hidden
+See the function documentation for @code{hpath:at-p} for possible
+delimiters.  See the variable documentation for @code{hpath:suffixes} for
+suffixes that are added to or removed from the pathname when searching
+for a valid match.  See the function documentation for @code{hpath:find}
+for special file display options.
 
-The following table shows the type of link that will be created based
-upon the referent context in which the Action Key is released.
address@hidden ibtypes org-mode
address@hidden browse-url-browser-function
address@hidden org-mode
address@hidden Org mode
address@hidden org-mode
+The Action Key follows any Org mode link at point or cycles through
+views of the outline subtree at point.  In any other context besides
+the end of a line, the Action Key will invoke the Org mode standard
+binding of @address@hidden, (org-meta-return).  The Assist Key on
+an Org mode heading cycles through views of the whole buffer outline
+and on an Org mode link, displays standard Hyperbole help.
 
address@hidden
address@hidden
-Referent Context         Link Type
-----------------------------------------------------
-Explicit Button          link-to-ebut
-Info Index Item          link-to-Info-index-item
-Info Node                link-to-Info-node
-Mail Reader Message      link-to-mail
-Directory Name           link-to-directory
-File Name                link-to-file
-Koutline Cell            link-to-kcell
-Outline Heading          link-to-string-match
-Buffer attached to File  link-to-file
-Buffer without File      link-to-buffer-tmp
address@hidden example
address@hidden format
+The variable, @code{browse-url-browser-function}, customizes the url
+browser that is used for urls.  Valid values of this variable
+include @code{browse-url-default-browser} and @code{browse-url-generic}.
 
address@hidden M-o
address@hidden C-u M-o
address@hidden C-x o
address@hidden hkey-operate
address@hidden Action Key drag emulation
address@hidden keyboard drag emulation
-If you run Emacs under a window system and there is no prior key
-binding on @bkbd{M-o} when you load Hyperbole, then you can emulate
-an Action Key drag from the keyboard by typing @bkbd{M-o}, the
address@hidden command, at the button source location, moving
-to the link destination, e.g.@: with @bkbd{C-x o}, and then typing
address@hidden again.  This simulates a depress and then release of the
-Action Key.  @bkbd{C-u M-o} emulates drags of the Assist Key.
-This will not work when Hyperbole is run from a dumb terminal Emacs
-session since drag actions are not supported without a window system.
address@hidden ibtypes doc-id
address@hidden online library
address@hidden document identifier
address@hidden doc-id
+Displays a document from a local document library given its id.  Ids must be
+delimited by @code{doc-id-start} and @code{doc-id-end} and must match the
+function given by @code{doc-id-p}.  (Note that this implicit button type is
+not installed by default.  You must manually configure it and load it from
+the file, @address@hidden@{hyperb:address@hidden/hib-doc-id.el}).  See the 
commentary
+at the top of that file for more information.
address@hidden table
 
address@hidden By Menu,  , By Dragging, Creation
address@hidden Creation Via Menus
address@hidden Button Files, Action Types, Implicit Buttons, Buttons
address@hidden   Button Files
 
-You may instead use the Hyperbole menus to create explicit buttons.
-First, mark a short region of text in any fashion allowed by Emacs
-and then select the Hyperbole menu item sequence, Ebut/Create.  You will
-be prompted for the button's label with the marked region as the
-default.  If you accept the default and enter the rest of the
-information you are prompted for, the button will be created within the
-current buffer and Hyperbole will surround the marked region with
-explicit button delimiters to indicate success.
address@hidden button files
+It is often convenient to create files filled with buttons as a means
+of navigating distributed information pools or for other purposes.
+These files can also serve as useful roadmaps that guide a user
+through both unfamiliar and highly familiar information spaces.  Files
+that are created specifically for this purpose are
+called @dfn{Hyperbole button files}.
 
-If you do not mark a region before invoking the button create command,
-you will be prompted for both a label and a target buffer for the button
-and the delimited label text will be inserted into the target buffer
-after a successful button creation.
address@hidden hbmap:filename
address@hidden button file, personal
address@hidden button file, directory
+The Hyperbole menu system provides quick access to two types of these
+button files: personal and directory-specific, through the ButFile menu.
+(The variable, @code{hbmap:filename}, contains the base name of these
+button files.  Its standard value is @file{HYPB}.)
 
-After Hyperbole has the button label and its target buffer, it will
-prompt you for an action type for the button.  Use the @bkbd{?}
-completion list key to see the available types.  The type selected
-determines any following values for which you are prompted.
address@hidden dir, ~/.hyperb
address@hidden hbmap:dir-user
address@hidden global button
+A personal button file may serve as a user's own roadmap to frequently
+used resources, like a personal home page.  Selection of the
+ButFile/PersonalFile menu item, @bkbd{C-h h b p}, displays this file for
+editing.  The default personal button file is stored within the
+directory given by the @code{hbmap:dir-user} variable whose standard
+value is @file{~/.hyperb}.  The default Hyperbole configuration also
+appends all global buttons to the end of this file, one per line, as
+they are created.  So you can edit or annotate them within the file.
 
address@hidden button instance
address@hidden instance number
-If a previous button with the same label exists in the same buffer,
-Hyperbole will add an @dfn{instance number} to the label when it adds
-the delimiters so that the name is unique.  Thus, you don't have to
-worry about accidental button name conflicts.  If you want the same
-button to appear in multiple places within the buffer, just enter the
-label again and delimit it yourself or copy and paste the button with
-its delimiters.  Hyperbole will interpret all occurrences of the same
-delimited label within a buffer as the same button.
+A directory-specific button file may exist for each file system
+directory.  Such files are useful for explaining the contents of
+directories and pointing readers to particular highlights within the
+directories.  Selection of the ButFile/DirFile menu item, @bkbd{C-h h
+b d}, displays the button file for the current directory; this
+provides an easy means of updating this file when working on a file
+within the same directory.  If you want to view some other
+directory-specific button file, simply use the normal Emacs file
+finding commands.
 
address@hidden link, creation
-If you create link buttons using the Hyperbole menus, the best
-technique is to place on screen both the source buffer for the button
-and the buffer to which it will link.  Mark the region of text to use
-as your button label, invoke the button create command from the menu,
-choose an action type which begins with @code{link-to-} and then use
-the direct selection techniques mentioned in @ref{Smart Key Argument
-Selection}, to select the link referent.
+If you want group and site-specific button files, simply place links to such
+files at the top of your personal button file and do so for your colleagues.
+This provides a flexible means of connecting to such resources.
 
address@hidden Action Types, Button Type Precedence, Button Files, Buttons
address@hidden   Action Types
 
address@hidden Renaming, Deletion, Creation, Utilizing Explicit Buttons
address@hidden  Renaming
address@hidden action type
address@hidden argument, use
address@hidden action
address@hidden button action
address@hidden types} are special functions that specify Hyperbole button
+behaviors.  Each action type may be used by any category of button:
+global, explicit, or implicit.  The arguments needed by an action type
+are prompted for at button creation time or in the case of an implicit
+button, computed when the button is activated.  During button
+activation, the arguments are fed to the action type's body to achieve
+the desired result.  This body is called the button @dfn{action}.
 
address@hidden explicit button, renaming
address@hidden button, renaming
-Once an explicit button has been created, its label text must be
-treated specially.  Any inter-word spacing within the label may be
-freely changed, as may happen when a paragraph is refilled, but a
-special command must be invoked to rename it.
+Hyperbole handles all of this processing transparently.  As a user, all
+you need know is the set of action types that you can work with when
+creating explicit or global buttons.
 
-The rename command operates in two different ways.  If point is within
-a button label when it is invoked, it will tell you to edit the button
-label and then to invoke the rename command again after the edit.  The
-second invocation will actually rename the button.  If instead the
-command is originally invoked outside of any explicit button, it will
-prompt for the button label to replace and the label to replace it
-with and then will perform the renaming.  All occurrences of the same
-button in the buffer will be renamed.
address@hidden actypes, list of
address@hidden
+The standard action types included with Hyperbole in alphabetical order
+are:
 
address@hidden file, .emacs
address@hidden file, hyperbole.el
address@hidden C-c C-r
address@hidden hui:ebut-rename
-The rename command may be invoked from the Hyperbole menu via
-Ebut/Rename.  A faster method is to use a key bound to the
address@hidden:ebut-rename} command.  Hyperbole typically binds this to
address@hidden C-r}.  @bkbd{C-h w hui:ebut-rename @key{RET}} will show
-what if any key runs it.  If no key binding has been established or if
-you prefer one of your own, simply bind it within your @file{~/.emacs}
-file: @code{(global-set-key "\C-c\C-r" 'hui:ebut-rename)}.
address@hidden @code
address@hidden actypes annot-bib
address@hidden annot-bib
+Follows an internal reference KEY within an annotated bibliography,
+delimiters = [ ].
 
address@hidden actypes completion
address@hidden completion
+Inserts a completion at point into the minibuffer or a buffer.
+Unless point is at the end of buffer or if a completion has already been 
+inserted, in which case the completions window is deleted.
 
address@hidden Deletion, Modification, Renaming, Utilizing Explicit Buttons
address@hidden  Deletion
address@hidden actypes eval-elisp
address@hidden eval-elisp
+Evaluates a Lisp expression LISP-EXPR.
 
address@hidden explicit button, deleting
address@hidden button, deleting
-Ebut/Delete works similarly to the Rename command but deletes the
-selected button.  The button's delimiters are removed to confirm the
-deletion.  If the delete command is invoked with a prefix argument, then
-both the button label and the delimiters are removed as confirmation.
address@hidden actypes exec-kbd-macro
address@hidden exec-kbd-macro
+Executes a KBD-MACRO REPEAT-COUNT times.  KBD-MACRO may be a string of
+editor command characters, a function symbol or nil to use the last
+defined keyboard macro.  Optional REPEAT-COUNT nil means execute once,
+zero means repeat until error.
 
address@hidden hui:ebut-delete-confirm-p
-Presently there is no way to recover a deleted button; it must
-be recreated.  Therefore, the @code{hui:ebut-delete-confirm-p} variable
-is true by default, causing Hyperbole to require confirmation before
-interactively deleting explicit buttons.  Set it to @samp{nil} if you
-prefer no confirmation.
address@hidden actypes exec-shell-cmd
address@hidden exec-shell-cmd
+Executes a SHELL-CMD string asynchronously.  Optional non-nil second
+argument INTERNAL-CMD inhibits display of the shell command line
+executed.  Optional non-nil third argument KILL-PREV means kill the last
+output to the shell buffer before executing SHELL-CMD.
 
address@hidden Modification, Location, Deletion, Utilizing Explicit Buttons
address@hidden  Modification
address@hidden actypes exec-window-cmd
address@hidden exec-window-cmd
+Asynchronously executes an external window-based SHELL-CMD string.
 
address@hidden explicit button, modifying
address@hidden button, modifying
address@hidden Smart Mouse Key drag
address@hidden button, attributes
-Ebut/Modify prompts you with each of the elements from the button's
-attributes list and allows you to modify each in turn.  Ebut/Edit does
-the exact same thing and is there for people who prefer that term.
address@hidden actypes function-in-buffer
address@hidden function-in-buffer
+Displays the definition of function NAME found at POS in the current buffer.
 
-There is a quicker way to modify explicit link buttons, however.  Simply
-drag with the Action Mouse Key from within the button label to a link
-destination in a different window, just as you would when creating a new
-button with a mouse drag.  Remember that drags may also be emulated from
-the keyboard.  @xref{Creation}.
address@hidden actypes hyp-config
address@hidden hyp-config
+Inserts Hyperbole configuration and debugging information at the end
+of the current buffer or within optional OUT-BUF.
 
address@hidden Location, Buttons in Mail, Modification, Utilizing Explicit 
Buttons
address@hidden  Location
address@hidden actypes hyp-request
address@hidden hyp-request
+Inserts help for composing a Hyperbole support/discussion message into
+the current buffer or the optional OUT-BUF.
 
address@hidden explicit button, summarizing
address@hidden button, summarizing
address@hidden button, help
-The Ebut/Help menu may be used to summarize either a single explicit
-button or all such buttons within a buffer.  The buttons summarized may
-then be activated directly from the summary.
address@hidden actypes hyp-source
address@hidden hyp-source
+Displays a buffer or file from a line beginning with
address@hidden:source-prefix}.
 
-Ebut/Help/BufferButs summarizes the explicit buttons in the order in
-which they appear in the buffer.  Ebut/Help/CurrentBut summarizes only
-the button at point.  Ebut/Help/OrderedButs summarizes the buttons in
-alphabetical order.  All of these summary commands eliminate duplicate
-occurrences of buttons from their help displays.
address@hidden actypes kbd-key
address@hidden kbd-key
+Executes the function binding for KEY-SEQUENCE, delimited by @address@hidden
+Returns @samp{t} if a KEY-SEQUENCE has a binding, else @samp{nil}.
 
address@hidden explicit button, searching
address@hidden button, searching
-Ebut/Search prompts for a search pattern and searches across all the
-locations in which you have previously created explicit buttons.  It
-asks you whether to match to any part of a button label or to whole
-labels only.  It then displays a list of button matches with a single
-line of surrounding context from their sources.  Any button in the match
-list may be activated as usual.  An Action Key press on the surrounding
-context jumps to the associated source line.  A press on the filename
-preceding the matches jumps to the file without selecting a particular
-line.
address@hidden link action types
address@hidden actypes link-to-buffer-tmp
address@hidden link-to-buffer-tmp
+Displays a BUFFER.  This type of link generally can
+only be used within a single editor session.  Use @code{link-to-file}
+instead for a permanent link.
 
-There are presently no user-level facilities for globally locating
-buttons created by others or for searching on particular button
-attributes.
address@hidden actypes link-to-directory
address@hidden link-to-directory
+Displays a DIRECTORY in Dired mode.
 
address@hidden Buttons in Mail, Buttons in News, Location, Utilizing Explicit 
Buttons
address@hidden  Buttons in Mail
address@hidden actypes link-to-doc
address@hidden link-to-doc
+Displays an online version of a document given by DOC-ID.  If the online
+version of a document is not found in @code{doc-id-indices}, an error is
+signalled.
 
address@hidden C-x m
address@hidden mail
address@hidden menu item, Cust/Msg-Toggle-Ebuts
-Hyperbole supports embedding buttons within electronic mail messages
-composed in Emacs or InfoDock.  An enhanced mail reader may then be used
-to activate the buttons within messages just like any other buttons.
-Because this involves complex changes to mail support functions, this
-feature is disabled by default.  Use the Cust/Msg-Toggle-Ebuts
-minibuffer menu item to enable it.
address@hidden actypes link-to-ebut
address@hidden link-to-ebut
+Performs an action given by another explicit button, specified by KEY and 
KEY-FILE.
 
address@hidden button, mailing
address@hidden button, posting
address@hidden mailing buttons
address@hidden posting buttons
address@hidden mail reader
address@hidden mailer initialization
address@hidden Rmail
address@hidden VM
address@hidden MH-e
address@hidden Gnus
address@hidden USENET
address@hidden news
address@hidden file, hmail.el
-Hyperbole automatically supports the following mail readers: Rmail
-(@pxref{Rmail,,Reading Mail with Rmail,emacs, the GNU Emacs Manual}), VM
-(@pxref{Introduction,,,vm, the VM Manual}) and MH-e.  Button inclusion
-and activation within USENET news articles is also supported in the
-same fashion via the Gnus news reader if available at your site
-(@pxref{Top,,The Gnus Newsreader,gnus, the Gnus Manual}).
-(The @file{hmail.el} file defines a generalized interface that can be
-used to hook in other mail or news readers if the necessary interface
-functions are written.)
address@hidden actypes link-to-elisp-doc
address@hidden link-to-elisp-doc
+Displays the documentation for FUNC-SYMBOL.
 
address@hidden mail-yank-original
address@hidden C-c C-y
address@hidden mail inclusion
-All explicit buttons to be mailed must be created within the outgoing
-message buffer. There is no present support for including text from
-other buffers or files which contain explicit buttons, except for the
-ability to yank the contents of a message being replied to, together
-with all of its buttons, via the @code{(mail-yank-original)} command
-bound to @bkbd{C-c C-y}.  From a user's perspective, buttons are
-created in precisely the same way as in any other buffer.  They also
-appear just like any other buttons to both the message sender and the
-reader who uses the Hyperbole enhanced readers.  Button operation may be
-tested any time before a message is sent.  A person who does not use
-Hyperbole enhanced mail readers can still send messages with embedded
-buttons since mail composing is independent of any mail reader
-choice.
address@hidden actypes link-to-file
address@hidden link-to-file
+Displays a file given by PATH scrolled to optional POINT.  If POINT is given,
+the buffer is displayed with POINT at the top of the window.
 
-Hyperbole buttons embedded within received mail messages behave as do
-any other buttons.  The mail does not contain any of the action type
-definitions used by the buttons, so the receiver must have these or
-she will receive an error when she activates the buttons.  Buttons
-which appear in message @emph{Subject} lines are copied to summary
-buffers whenever such summaries are generated.  Thus, they may be
-activated from either the message or the summary buffers.
address@hidden actypes link-to-file-line
address@hidden link-to-file-line
+Displays a file given by PATH scrolled to LINE-NUM.
 
-Nothing bad will happen if a mail message with explicit buttons is sent
-to a non-Hyperbole user.  The user will simply see the text
-of the message followed by a series of lines of button data at its end.
-Hyperbole mail users never see this data in its raw form.
address@hidden actypes link-to-Info-index-item
address@hidden link-to-Info-index-item
+Displays an Info index ITEM cross-reference.
+ITEM must be a string of the form (filename)item-name.  During
+button creation, completion for both filename and item-name is
+available.  Filename may be given without the .info suffix."
 
address@hidden smail:comment
address@hidden mail comment
address@hidden Hyperbole mail comment
-In order to alert readers of your mail messages that you can handle
-Hyperbole mail buttons, you can set the variable, @code{smail:comment},
-to an expression that automatically inserts a comment into each
-outgoing message to announce this fact.  See its documentation for
-technical details.  By default, no comment is added.  To have a
-comment line added to your outgoing message, add the following to
-to your @file{~/.emacs} file before the point at which you load
-Hyperbole.
address@hidden actypes link-to-Info-node
address@hidden link-to-Info-node
+Displays an Info NODE.  NODE must be a string of the form
+(filename)nodename.  During button creation, completion for both
+filename and nodename is available.  Filename may be given without the
+.info suffix.
 
address@hidden
-(setq smail:comment
- (format "Comments: GNU Hyperbole mail buttons accepted, v%s.\n"
-          hyperb:version))
address@hidden smalllisp
address@hidden actypes link-to-kcell
address@hidden kcell:ref-to-id
address@hidden link-to-kcell
+Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
+top of a window.  See the documentation for @code{(kcell:ref-to-id)} for
+valid CELL-REF formats.
 
 @noindent
-This will produce the following line in outgoing messages:
+If FILE is @samp{nil}, the current buffer is used.  If CELL-REF is
address@hidden, the first cell in the view is shown.
 
address@hidden actypes link-to-kotl
address@hidden link-to-kotl
+Displays at the top of a window the referent pointed to by LINK.
+LINK may be of any of the following forms, with or without delimiters:
 @example
-Comments: GNU Hyperbole mail buttons accepted, vX.XX.
+  < pathname [, cell-ref] >
+  < [-!&] pathname >
+  < @@ cell-ref >
 @end example
 
address@hidden file, .emacs
 @noindent
-where the X's indicate your Hyperbole version number.  You can cut
-this out of particular messages before you send them when need be.
+See the documentation for @code{(kcell:ref-to-id)} for valid cell-ref
+formats.
 
address@hidden actype, link-to-mail
-A final mail-related facility provided by Hyperbole is the ability to
-save a pointer to a received mail message by creating an explicit button
-with a @code{link-to-mail} action type.  When prompted for the mail
-message to link to, if you press the Action Key within the message, the
-appropriate link parameters will be copied to the argument prompt, as
-described in @ref{Smart Key Argument Selection}.
address@hidden actypes link-to-mail
address@hidden link-to-mail
+Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE.  See
+the documentation for the variable @code{hmail:init-function} for
+information on how to specify the mail reader to use.
 
address@hidden actypes link-to-regexp-match
address@hidden link-to-regexp-match
+Finds REGEXP's Nth occurrence in SOURCE and displays the location at the
+top of the selected window.  SOURCE is a pathname unless optional
+BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
+Returns @samp{t} if found, signals an error if not.
 
address@hidden Buttons in News,  , Buttons in Mail, Utilizing Explicit Buttons
address@hidden  Buttons in News
address@hidden actypes link-to-rfc
address@hidden link-to-rfc
+Retrieves and displays an Internet rfc given by RFC-NUM.  RFC-NUM may be
+a string or an integer.
 
address@hidden button, posting
address@hidden news reader/poster
address@hidden posting news
address@hidden Gnus
address@hidden USENET
address@hidden file, hyperbole.el
address@hidden menu item, Cust/Msg-Toggle-Ebuts
-Explicit buttons may be embedded within outgoing USENET news articles
-and may be activated from within the Gnus news reader.  Because this
-involves complex changes to news support functions, this feature is
-disabled by default.  Use the Cust/Msg-Toggle-Ebuts minibuffer menu
-item to enable it (enabling it for mail also enables it for news and
-vice versa).
address@hidden actypes link-to-string-match
address@hidden link-to-string-match
+Finds STRING's Nth occurrence in SOURCE and displays the location at the
+top of the selected window.  SOURCE is a pathname unless optional
+BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
+Returns @samp{t} if found, @samp{nil} if not.
 
-Once enabled, all Hyperbole support should work just as it does when
-reading or sending mail.  @xref{Buttons in Mail}.  When reading news,
-buttons which appear in message @emph{Subject} lines may be activated
-within the Gnus subject buffer as well as the article buffer.  When
-posting news, the *post-news* buffer is used for outgoing news
-articles rather than a mail-related buffer.
address@hidden actypes link-to-texinfo-node
address@hidden link-to-texinfo-node
+Displays the Texinfo node with NODENAME (a string) from the current buffer.
 
-Remember that the articles you post do not contain the action type
-definitions used by the buttons, so the receiver must have these or she
-will receive an error when she activates the buttons.  You should also
-keep in mind that most USENET readers will not be using Hyperbole, so if
-they receive a news article containing explicit buttons, they will
-wonder what the button data at the end of the message is.  You should
-therefore limit distribution of such messages.  For example, if most
-people at your site read news with Gnus and use Hyperbole, it would be
-reasonable to embed buttons in postings to local newsgroups.
address@hidden actypes link-to-web-search
address@hidden link, web search
address@hidden web search link
address@hidden link-to-web-search
+Searches web SERVICE-NAME for SEARCH-TERM.  Uses 
@code{hyperbole-web-search-alist}
+to match each service to its search url.  Uses 
@code{hyperbole-web-search-browser-function}
+and the @code{browse-url} package to display search results.
 
address@hidden news comment
-In order to alert readers of your postings that they may send you
-personal replies with embedded Hyperbole buttons, the system inserts
-into news postings the same comment that is included within mail
-messages, if enabled.  @xref{Buttons in Mail}, for details and an
-explanation of how to turn this feature on.
address@hidden actypes man-show
address@hidden sm-notify
address@hidden man-show
+Displays a man page on TOPIC, which may be of the form 
@samp{<command>(<section>}).
+If using the Superman manual entry package, see the documentation for 
@code{sm-notify}
+to control where the man page is displayed.
 
address@hidden actypes rfc-toc
address@hidden rfc-toc
+Computes and displays a summary of an Internet rfc in BUF-NAME.  Assumes
+point has already been moved to the start of the region to summarize.
+Optional OPOINT is the point to return to in BUF-NAME after displaying
+the summary.
 
address@hidden Smart Keys, Menus, Buttons, Top
address@hidden Smart Keys
address@hidden actypes text-toc
address@hidden table of contents
address@hidden toc action type
address@hidden text-toc
+Jumps to the text file SECTION referenced by a table of contents entry
+at point.
 
address@hidden Smart Key
address@hidden mouse support
address@hidden Action Key
address@hidden Assist Key
address@hidden middle mouse key
address@hidden hmouse-middle-flag
address@hidden Action Key
address@hidden Assist Key
-Hyperbole offers two special @dfn{Smart Keys}, the Action Key and the
-Assist Key, that perform an extensive array of context-sensitive
-operations across emacs usage.  In many popular modes, they allow you
-to perform common, sometimes complex operations without having to a
-different key for each operation.  Just press a Smart Key and the
-right thing happens.  This chapter explains typical uses of the Smart
-Keys.  @xref{Smart Key Reference}, for complete descriptions of their
-behavior in all contexts.
address@hidden actypes www-url
address@hidden URL
address@hidden World-wide Web
address@hidden WWW
address@hidden browse-url-browser-function
address@hidden www-url
+Follows a link given by a URL.  The variable,
address@hidden, customizes the url browser
+that is used.  See its documentation string for details.
address@hidden table
 
address@hidden
-* Smart Key Bindings::
-* Smart Key Operations::
-* Smart Key Modeline::
-* Smart Key Thing Selection::
-* Smart Key Argument Selection::
-* Smart Key Modifiers::
-* Smart Key Debugging::
address@hidden menu
address@hidden action
address@hidden hui:ebut-prompt-for-action
+Action types create a convenient way of specifying button behavior
+without the need to know how to program.  Expert users who are familiar
+with Emacs Lisp, however, may find that they often want to tailor button
+actions in a variety of ways not easily captured within a type system.
+In such cases, @code{hui:ebut-prompt-for-action} should be set to
address@hidden  This will cause Hyperbole to prompt for an action to override
+the button's action type at each explicit button creation.  For those cases
+where the action type is sufficient, a @samp{nil} value should be
+entered for the action.  An action may be any Lisp form that Emacs
+Lisp can evaluate.
 
address@hidden Smart Key Bindings, Smart Key Operations, Smart Keys, Smart Keys
address@hidden   Smart Key Bindings
address@hidden Button Type Precedence, Utilizing Explicit Buttons, Action 
Types, Buttons
address@hidden   Button Type Precedence
 
address@hidden C-u address@hidden
address@hidden address@hidden
-From the keyboard, @address@hidden is the Action Key and @bkbd{C-u
address@hidden is the Assist Key.  These keys allow context-sensitive
-operation from any keyboard.
address@hidden button precedence
address@hidden precedence, buttons
address@hidden button label overlap
+Explicit buttons always take precedence over implicit buttons.  Thus, if
+a button selection is made which falls within both an explicit and
+implicit button, only the explicit button will be selected.  Explicit
+button labels are not allowed to overlap; Hyperbole's behavior in such
+cases is undefined.
 
address@hidden Removed the following in Hyperbole 6.00 since it was not 
consistent
address@hidden across all read-only modes and the standard bindings are easy
address@hidden enough to use.
address@hidden
address@hidden In many read-only modes like Dired (the directory editor and file
address@hidden manager) and Rmail (the mail reader), @address@hidden@} also 
functions as
address@hidden the Action Key and @bkbd{C-u @key{RET}} functions as the Assist 
Key.
address@hidden ibtype, evaluation order
+If there is no explicit button at point during a selection request,
+then each implicit button type predicate is tested in turn until one
+returns non-nil or all are exhausted.  Since two implicit button types
+may have overlapping @dfn{domains}, those contexts in which their
+predicates are true, only the first matching type is used.  The type
+predicates are tested in @emph{reverse} order of definition, i.e.@:
+most recently entered types are tested first, so that personal types
+defined after standard system types take precedence.  It is important
+to keep this order in mind when defining new implicit button types.
+By making match predicates as specific as possible, one can minimize
+any overlapping implicit button domains.
 
address@hidden shift-middle mouse key
address@hidden shift-left mouse key
address@hidden shift-right mouse key
address@hidden middle mouse key
address@hidden hmouse-middle-flag
-From the mouse, the @dfn{Action Key} is bound to your shift-middle
-mouse key (or shift-left on a 2-button mouse) and the @dfn{Assist Key}
-is bound to your shift-right mouse key, assuming Hyperbole is run
-under an external window system.  (InfoDock users or those who set the
-variable, @code{hmouse-middle-flag}, to @samp{t} before loading
-Hyperbole, may also use the middle mouse key as the Action Key).
address@hidden type redefinition
+Once a type name is defined, its precedence relative to other types
+remains the same even if its body is redefined, as long as its name is
+not changed.  This allows incremental modifications to types without
+any worry of altering their precedences.  @xref{Creating Types}, for
+information on how to develop or modify types.
 
address@hidden key binding, smart keys
address@hidden smart key commands
address@hidden smart key assignments
address@hidden action-key
address@hidden assist-key
address@hidden action-mouse-key
address@hidden assist-mouse-key
-If you prefer other key assignments, simply bind the commands
address@hidden and @code{assist-key} to keyboard keys.
address@hidden may be used instead if you prefer a single
-key binding for both commands; a prefix argument, such as @bkbd{C-u},
-then invokes @code{assist-key}.  You may also bind @code{action-mouse-key}
-and @code{assist-mouse-key} to other mouse keys, if you like, though
-you won't be able to execute drag actions with such key bindings.
address@hidden Utilizing Explicit Buttons,  , Button Type Precedence, Buttons
address@hidden   Utilizing Explicit Buttons
 
-Mouse configuration of the Smart Keys is automatic for GNU Emacs under
-Mac OS X, the X Window System and MS Windows, as well as for XEmacs
-and InfoDock under the X window system, assuming your emacs program
-has been built with support for any of these window systems.
+Explicit buttons are a fundamental building block for creating personal
+or organizational hypertext networks with Hyperbole.  This section
+summarizes the user-level operations available for managing these
+buttons.
 
address@hidden file, .emacs
address@hidden hmouse-toggle-bindings
address@hidden mouse key toggle
address@hidden Smart Mouse Key toggle
address@hidden C-c t
-If you ever want to restore the mouse bindings that existed before
-Hyperbole was loaded, use the @code{hmouse-toggle-bindings} command.
-It switches between the Hyperbole mouse key bindings and those set
-prior to loading Hyperbole and then back again if invoked once more.
-There is no default key binding for this command; use @bkbd{M-x
-hmouse-toggle-bindings @key{RET}}.  Alternatively, you may select a
-key and bind it as part of any setting of @code{hyperbole-init-hook}
-within your personal @file{~/.emacs} file.  For example, @code{(add-hook
-'hyperbole-init-hook (lambda () (global-set-key "\C-ct"
-'hmouse-toggle-bindings)))}.
address@hidden
+* Creation::
+* Renaming::
+* Deletion::
+* Modification::
+* Searching and Summarizing::
+* Buttons in Mail::
+* Buttons in News::
address@hidden menu
 
address@hidden Paste Key
address@hidden mouse paste
address@hidden InfoDock Action Key
address@hidden InfoDock Paste Key
-Under InfoDock, the middle mouse key is normally used as the Action Key
-and the meta-middle mouse key is used as the Paste Key.  If you prefer
-that the middle mouse key be used as the Paste Key, then you will want to
-toggle the mouse bindings.  InfoDock includes a built-in way to do this
-via its Options/Mouse/Mouse-Paste-on-Middle-Key menu item.  (Keep in
-mind though that the Action Key will paste any active region within the
-editor when the Action Key is clicked; it will not paste selections from
-other applications).
-
-
address@hidden Smart Key Operations, Smart Key Modeline, Smart Key Bindings, 
Smart Keys
address@hidden   Smart Key Operations
address@hidden Creation, Renaming, Utilizing Explicit Buttons, Utilizing 
Explicit Buttons
address@hidden  Creation
 
address@hidden button activation
address@hidden activation
address@hidden button help
-The Action Key generally selects entities, creates links and
-activates buttons.  The Assist Key generally provides help,
-such as reporting on a button's attributes, or serves a complementary
-function to whatever the Action Key does within a context.
+Creating explicit buttons is fun and easy.  You can always try them
+out immediately after creating them or can utilize the Assist Key to
+verify what buttons do.  There are two ways to create them: by
+dragging between windows with the Action Mouse Key or by using the
+Hyperbole menus.
 
address@hidden Smart Key operation
address@hidden menu item, Doc/SmartKeys
address@hidden Smart Key summary
address@hidden modeline, Smart Keys
-The Hyperbole Doc/SmartKeys menu entry displays a summary of what the
-Smart Keys do in all of their different contexts.  Alternatively, a
-click of the Assist Mouse Key in the right corner of a window
-modeline (within the rightmost 3 characters) toggles between
-displaying this summary and hiding it.  Reference this summary
-whenever you need it.
address@hidden
+* By Dragging::                 Creation Via Action Key Drags
+* By Menu::                     Creation Via Menus
address@hidden menu
 
-The following table is the same summary.  Much of the browsing power
-of Hyperbole comes from the use of the Smart Keys, so spend some time
-practicing how to use them.  Study what modeline clicks and window
-drag actions do as these will give you a lot of power without much
-effort.  This table may appear daunting at first, but as you practice
-and notice that the Smart Keys do just a few context-sensitive things
-per editor mode, you will find it easy to just press or point and
-click and let Hyperbole do the right thing in each context.
address@hidden By Dragging, By Menu, Creation, Creation
address@hidden Creation Via Action Key Drags
+
address@hidden explicit button creation
address@hidden button creation
address@hidden creating buttons
address@hidden link creation
address@hidden creating links
address@hidden direct link creation
address@hidden mouse drag, link creation
address@hidden drag
address@hidden Action Key drag
+The most efficient way to create an explicit link button interactively
+is to use the Action Mouse Key to drag from a non-read-only button
+source window to a window showing its desired link referent.  More
+specifically, you should split your current Emacs frame into two
+windows: one which contains the point at which you want a button to be
+inserted and another which shows the point to which you want to link.
+Depress the Action Mouse Key at the source point for the button
+(anywhere but on a paired delimiter such as double quotes or
+parentheses).  Then drag to the other window and release the Action
+Mouse Key at the start point of the link referent.  The process
+becomes quite simple with a little practice. (@xref{By Menu, Creation
+Via Menus}, for a more detailed explanation of the explicit button
+creation process).
+
+If a region was selected prior to the start of the drag, it is used as
+the button label, otherwise, you are prompted for the label.  Then
+Hyperbole uses the link referent context to determine the type of link
+to make.  If there are a few different types of links which are
+applicable from the context, you will be prompted with a list of the
+types.  Simply use the Action Key or the first letter of the link type
+to select one of the type names and to finish the link creation.
+Hyperbole will then insert explicit button delimiters around the
+button label and will display a message in the minibuffer indicating
+the button label, its action/link type, and any arguments, notably the
+thing to which it links.
+
+The following table shows the type of link that will be created based
+upon the referent context in which the Action Key is released.
 
 @format
address@hidden
address@hidden hkey-help.txt
address@hidden smallexample
address@hidden
+Referent Context         Link Type
+----------------------------------------------------
+Explicit Button          link-to-ebut
+Info Index Item          link-to-Info-index-item
+Info Node                link-to-Info-node
+Mail Reader Message      link-to-mail
+Directory Name           link-to-directory
+File Name                link-to-file
+Koutline Cell            link-to-kcell
+Outline Heading          link-to-string-match
+Buffer attached to File  link-to-file
+Buffer without File      link-to-buffer-tmp
address@hidden example
 @end format
 
address@hidden
address@hidden Key Reference}, for extensive reference documentation on the
-Smart Keys.
address@hidden M-o
address@hidden C-u M-o
address@hidden C-x o
address@hidden hkey-operate
address@hidden emulation, Action Key drag 
address@hidden keyboard drag emulation
+If you run Emacs under a window system and there is no prior key
+binding on @bkbd{M-o} when you load Hyperbole, then you can emulate
+an Action Key drag from the keyboard by typing @bkbd{M-o}, the
address@hidden command, at the button source location, moving
+to the link destination, e.g.@: with @bkbd{C-x o}, and then typing
address@hidden again.  This simulates a depress and then release of the
+Action Key.  @bkbd{C-u M-o} emulates drags of the Assist Key.
+This will not work when Hyperbole is run from a dumb terminal Emacs
+session since drag actions are not supported without a window system.
 
address@hidden action-key-default-function
address@hidden assist-key-default-function
address@hidden Smart Key, default context
address@hidden default Smart Key context
-Note how the last line in the table explains that the default behavior of
-the Smart Keys in an unknown context is to report an error.  You can change
-these behaviors by setting two variables.  See the documentation
-for the variables @code{action-key-default-function} and
address@hidden for information on how to customize
-the behavior of the Smart Keys within default contexts.
address@hidden By Menu,  , By Dragging, Creation
address@hidden Creation Via Menus
 
address@hidden Smart Key help
address@hidden help, Smart Key
address@hidden context-sensitive help
-When you use a mouse and you want to find out what either of the Smart
-Keys does within a context, depress the one you want to check on and
-hold it down, then press the other and release as you please.  A help
-buffer will pop up explaining the actions that will be performed in that
-context, if any.  A press of either Smart Key at the end of that
-help buffer will restore your display to its configuration prior to
-invoking help.
+You may instead use the Hyperbole menus to create explicit buttons.
+First, mark a short region of text in any fashion allowed by Emacs
+and then select the Hyperbole menu item sequence, Ebut/Create.  You will
+be prompted for the button's label with the marked region as the
+default.  If you accept the default and enter the rest of the
+information you are prompted for, the button will be created within the
+current buffer and Hyperbole will surround the marked region with
+explicit button delimiters to indicate success.
 
address@hidden C-h A
address@hidden C-u C-h A
-On the keyboard, @bkbd{C-h A} displays this same context-sensitive
-help for the Action Key while @bkbd{C-u C-h A} displays the help for
-the Assist Key.  Note that @bkbd{C-h a} performs a function unrelated
-to Hyperbole, so you must press the shift key when you type
-the @key{A} character.
+If you do not mark a region before invoking the button create command,
+you will be prompted for both a label and a target buffer for the button
+and the delimited label text will be inserted into the target buffer
+after a successful button creation.
 
address@hidden Smart Key Modeline, Smart Key Thing Selection, Smart Key 
Operations, Smart Keys
address@hidden   Smart Key Modeline
+After Hyperbole has the button label and its target buffer, it will
+prompt you for an action type for the button.  Use the @bkbd{?}
+completion list key to see the available types.  The type selected
+determines any following values for which you are prompted.
 
-Smart Key clicks on a window's modeline offer many powerful browsing
-features including user manual browsing, as well as window, buffer
-and frame selection.
address@hidden button instance
address@hidden instance number
+If a previous button with the same label exists in the same buffer,
+Hyperbole will add an @dfn{instance number} to the label when it adds
+the delimiters so that the name is unique.  Thus, you don't have to
+worry about accidental button name conflicts.  If you want the same
+button to appear in multiple places within the buffer, just enter the
+label again and delimit it yourself or copy and paste the button with
+its delimiters.  Hyperbole will interpret all occurrences of the same
+delimited label within a buffer as the same button.
 
address@hidden Info browser
address@hidden modeline click and drag
address@hidden modeline, Info Browser
-A click of the Action Mouse Key in the right corner of a window
-modeline (within the rightmost 3 characters) displays or hides the
-GNU Info Manual Browser, giving you quick point and click access to
-an amazing wealth of documentation, since the Action Key also browses
-through these manuals and follows their hyperlinked cross-references.
-A click of the Assist Key in the same location displays or hides the
-Smart Key summary, as noted earlier.
address@hidden link, creation
+If you create link buttons using the Hyperbole menus, the best
+technique is to place on screen both the source buffer for the button
+and the buffer to which it will link.  Mark the region of text to use
+as your button label, invoke the button create command from the menu,
+choose an action type which begins with @code{link-to-} and then use
+the direct selection techniques mentioned in @ref{Smart Key Argument
+Selection}, to select the link referent.
 
address@hidden buffer menu
address@hidden modeline, buffer menu
address@hidden jump menu
address@hidden modeline, jump menu
-An Action Mouse Key click in a blank area of a window modeline (away
-from left and right edges) toggles between displaying and hiding a
-list of all buffers.  Once displayed, each buffer is selectable with
-the Action Key as well.  A click in the same location of the Assist
-Key displays a quick access menu of display-oriented commands.  You
-can jump to buffers categorized by major mode, jump to windows by
-buffer name, or to frames by name.  Manage your windows and frames
-quickly with this menu as well.  As always with Hyperbole, just try
-it and you'll begin to wonder how you lived without it before.
 
address@hidden action-key-modeline-function
address@hidden assist-key-modeline-function
address@hidden action-key-modeline
address@hidden assist-key-modeline
address@hidden hmouse-context-menu
address@hidden hmouse-context-ibuffer-menu
address@hidden ibuffer menu
-Hyperbole modeline mouse click actions are controlled by the two functions,
address@hidden and @code{assist-key-modeline}.  If you know
-a little Emacs Lisp you can change these to do whatever you like.
-When a Smart Key press is on a blank part of a modeline but not at
-the left or right, the function given by one of these two variables
-is executed: @code{action-key-modeline-function} or
address@hidden  By default, the Action Key toggles
-between displaying and hiding the buffer menu.  If you like the more
-advanced features of @code{Ibuffer Mode}, you can change the buffer menu
-to use that with the following in your Emacs initialization file:
address@hidden(setq action-key-modeline-function 
#'hmouse-context-ibuffer-menu)}.
-To set it back to the default use:
address@hidden(setq action-key-modeline-function #'hmouse-context-menu)}.
address@hidden Renaming, Deletion, Creation, Utilizing Explicit Buttons
address@hidden  Renaming
 
address@hidden dired-jump
address@hidden hui-menu-screen-commands
address@hidden directory editor
address@hidden dired
address@hidden modeline, screen command menu
-The default @code{assist-key-modeline-function} is to pop up a menu of
-convenient screen commands that lets you select buffers grouped by
-major mode, use HyControl, or jump to specific windows, window
-configurations or frames.  If you would prefer it runs the directory
-editor @code{dired} on the directory associated with the window of the
-modeline press, use this: @code{(setq assist-key-modeline-function 
#'dired-jump)}.
-To set it back to the default use:
address@hidden(setq assist-key-modeline-function #'hui-menu-screen-commands)}.
address@hidden explicit button renaming
address@hidden button renaming
+Once an explicit button has been created, its label text must be
+treated specially.  Any inter-word spacing within the label may be
+freely changed, as may happen when a paragraph is refilled, but a
+special command must be invoked to rename it.
 
-These variables may also be changed permanently with the Emacs
-interactive customization interface.  Use @bkbd{M-x customize-variable
address@hidden assist-key-modeline-function @key{RET}}.  In the Assist
-Modeline Function text field that appears, change the value
-to @code{dired-jump}.  Then press the ``Apply and Save'' button.
+The rename command operates in two different ways.  If point is within
+a button label when it is invoked, it will tell you to edit the button
+label and then to invoke the rename command again after the edit.  The
+second invocation will actually rename the button.  If instead the
+command is originally invoked outside of any explicit button, it will
+prompt for the button label to replace and the label to replace it
+with and then will perform the renaming.  All occurrences of the same
+button in the buffer will be renamed.
 
address@hidden Smart Key Thing Selection, Smart Key Argument Selection, Smart 
Key Modeline, Smart Keys
address@hidden   Smart Key Thing Selection
address@hidden file, .emacs
address@hidden file, hyperbole.el
address@hidden C-c C-r
address@hidden hui:ebut-rename
+The rename command may be invoked from the Hyperbole menu via
+Ebut/Rename.  A faster method is to use a key bound to the
address@hidden:ebut-rename} command.  Hyperbole typically binds this to
address@hidden C-r}.  @bkbd{C-h w hui:ebut-rename @key{RET}} will show
+what if any key runs it.  If no key binding has been established or if
+you prefer one of your own, simply bind it within your @file{~/.emacs}
+file: @code{(global-set-key "\C-c\C-r" 'hui:ebut-rename)}.
 
address@hidden sexp selection
address@hidden code block selection
address@hidden selection
address@hidden smart selection
address@hidden smart marking
address@hidden region selection
address@hidden things
address@hidden delimited things
-Hyperbole has some radically cool ways to select regions of structured
-text or source code and to copy or move them between buffers with a
-single mouse drag or two key presses.  A great deal of smarts are
-built-in so that it does the right thing most of the time; many other
-attempts at similar behavior such as thing.el fail to deal with many
-file format complexities.
 
-We use the term @dfn{things} to refer to structured entities that
-Hyperbole can select.  These include: delimited pairs of (), @address@hidden, 
<>,
-[] and quote marks, source code functions, source code comments and
-matching tag pairs in HTML and SGML modes.  @dfn{Delimited things} are
-those things that contain a selectable delimiter such as an opening
-parenthesis.
address@hidden Deletion, Modification, Renaming, Utilizing Explicit Buttons
address@hidden  Deletion
 
address@hidden HTML tag pair
address@hidden SGML tag pair
-The best way to mark a delimited thing is to move your cursor to the
-starting delimiter of the thing and then press the Action Key.  Typically,
-you will see the thing highlight.  You can then operate upon it as you
-would any Emacs region.  In many cases, you can do the same thing upon
-the closing delimiter but this is not as reliable.  An Action Key
-press on the start of an HTML or SGML tag pair marks the entire region
-span of the pair.  If you use the Assist Key instead, it will mark and
-kill (delete) the thing.
address@hidden explicit button deletion
address@hidden button deletion
+Ebut/Delete works similarly to the Rename command but deletes the
+selected button.  The button's delimiters are removed to confirm the
+deletion.  If the delete command is invoked with a prefix argument, then
+both the button label and the delimiters are removed as confirmation.
 
address@hidden drag, with region
address@hidden kill region
address@hidden yank region
address@hidden cut region
address@hidden copy region
address@hidden paste region
-Even better are Smart Mouse Key drags which let you copy or move
-delimited things in one operation without even highlighting them.  To
-copy, simply drag with the Action Key from a thing's opening delimiter
-and release somewhere outside of the thing, either within the same
-window or within another window.  The thing will be copied to the
-point of release.  If you want to move a thing, simply perform the
-same drag but with the Assist Mouse Key.  Ensure that you do not move
-any explicit buttons from one buffer to another as that does not
-presently work.
address@hidden hui:ebut-delete-confirm-p
+Presently there is no way to recover a deleted button; it must
+be recreated.  Therefore, the @code{hui:ebut-delete-confirm-p} variable
+is true by default, causing Hyperbole to require confirmation before
+interactively deleting explicit buttons.  Set it to @samp{nil} if you
+prefer no confirmation.
+
address@hidden Modification, Searching and Summarizing, Deletion, Utilizing 
Explicit Buttons
address@hidden  Modification
+
address@hidden explicit button modification
address@hidden button modification
address@hidden Smart Mouse Key drag
address@hidden button attributes
+Ebut/Modify prompts you with each of the elements from the button's
+attributes list and allows you to modify each in turn.  Ebut/Edit does
+the exact same thing and is there for people who prefer that term.
+
+There is a quicker way to modify explicit link buttons, however.  Simply
+drag with the Action Mouse Key from within the button label to a link
+destination in a different window, just as you would when creating a new
+button with a mouse drag.  Remember that drags may also be emulated from
+the keyboard.  @xref{Creation}.
+
address@hidden Searching and Summarizing, Buttons in Mail, Modification, 
Utilizing Explicit Buttons
address@hidden  Searching and Summarizing
+
address@hidden explicit button summary
address@hidden button summary
address@hidden button help
+The Ebut/Help menu may be used to summarize either a single explicit
+button or all such buttons within a buffer.  The buttons summarized may
+then be activated directly from the summary.
+
+Ebut/Help/BufferButs summarizes the explicit buttons in the order in
+which they appear in the buffer.  Ebut/Help/CurrentBut summarizes only
+the button at point.  Ebut/Help/OrderedButs summarizes the buttons in
+alphabetical order.  All of these summary commands eliminate duplicate
+occurrences of buttons from their help displays.
+
address@hidden explicit button searching
address@hidden button searching
+Ebut/Search prompts for a search pattern and searches across all the
+locations in which you have previously created explicit buttons.  It
+asks you whether to match to any part of a button label or to whole
+labels only.  It then displays a list of button matches with a single
+line of surrounding context from their sources.  Any button in the match
+list may be activated as usual.  An Action Key press on the surrounding
+context jumps to the associated source line.  A press on the filename
+preceding the matches jumps to the file without selecting a particular
+line.
+
+There are presently no user-level facilities for globally locating
+buttons created by others or for searching on particular button
+attributes.
+
address@hidden Buttons in Mail, Buttons in News, Searching and Summarizing, 
Utilizing Explicit Buttons
address@hidden  Buttons in Mail
+
address@hidden C-x m
address@hidden mail
address@hidden menu item, Cust/Msg-Toggle-Ebuts
+Hyperbole supports embedding buttons within electronic mail messages
+composed in Emacs.  An enhanced mail reader may then be used to
+activate the buttons within messages just like any other buttons.
+Because this involves complex changes to mail support functions, this
+feature is disabled by default.  Use the Cust/Msg-Toggle-Ebuts
+minibuffer menu item to enable it.
+
address@hidden button mailing
address@hidden button posting
address@hidden mailing buttons
address@hidden posting buttons
address@hidden mail reader
address@hidden mailer initialization
address@hidden Rmail
address@hidden VM
address@hidden MH-e
address@hidden Gnus
address@hidden USENET
address@hidden news
address@hidden file, hmail.el
+Hyperbole supports the following mail readers: Rmail (@pxref{Rmail,,Reading
+Mail with Rmail,emacs, the GNU Emacs Manual}), VM (@pxref{Introduction,,,vm,
+the VM Manual}) and MH-e.  Button inclusion and activation within USENET news
+articles is also supported in the same fashion via the Gnus news reader if
+available at your site (@pxref{Top,,The Gnus Newsreader,gnus, the Gnus
+Manual}).  (The @file{hmail.el} file defines a generalized interface that can
+be used to hook in other mail or news readers if the necessary interface
+functions are written.)
+
address@hidden mail-yank-original
address@hidden C-c C-y
address@hidden mail inclusion
+All explicit buttons to be mailed must be created within the outgoing
+message buffer. There is no present support for including text from
+other buffers or files which contain explicit buttons, except for the
+ability to yank the contents of a message being replied to, together
+with all of its buttons, via the @code{(mail-yank-original)} command
+bound to @bkbd{C-c C-y}.  From a user's perspective, buttons are
+created in precisely the same way as in any other buffer.  They also
+appear just like any other buttons to both the message sender and the
+reader who uses the Hyperbole enhanced readers.  Button operation may be
+tested any time before a message is sent.  A person who does not use
+Hyperbole enhanced mail readers can still send messages with embedded
+buttons since mail composing is independent of any mail reader
+choice.
+
+Hyperbole buttons embedded within received mail messages behave as do
+any other buttons.  The mail does not contain any of the action type
+definitions used by the buttons, so the receiver must have these or
+she will receive an error when she activates the buttons.  Buttons
+which appear in message @emph{Subject} lines are copied to summary
+buffers whenever such summaries are generated.  Thus, they may be
+activated from either the message or the summary buffers.
+
+Nothing bad will happen if a mail message with explicit buttons is sent
+to a non-Hyperbole user.  The user will simply see the text
+of the message followed by a series of lines of button data at its end.
+Hyperbole mail users never see this data in its raw form.
+
address@hidden smail:comment
address@hidden mail comment
address@hidden Hyperbole mail comment
+In order to alert readers of your mail messages that you can handle
+Hyperbole mail buttons, you can set the variable, @code{smail:comment},
+to an expression that automatically inserts a comment into each
+outgoing message to announce this fact.  See its documentation for
+technical details.  By default, no comment is added.  To have a
+comment line added to your outgoing message, add the following to
+to your @file{~/.emacs} file before the point at which you load
+Hyperbole.
 
-Try out some of these operations in HTML or source code files to see
-how they can speed your editing.
address@hidden
+(setq smail:comment
+ (format "Comments: GNU Hyperbole mail buttons accepted, v%s.\n"
+          hyperb:version))
address@hidden lisp
 
 @noindent
-Hyperbole also binds two convenience keys for working with things.
+This will produce the following line in outgoing messages:
 
address@hidden C-c @key{RET}
address@hidden hui-select-thing
address@hidden hui-select-thing-with-mouse
-The first such key is @bkbd{C-c @key{RET}} @code{hui-select-thing}
-which selects bigger and bigger syntactic regions with each successive
-use.  Double or triple clicks of the Selection Key (left mouse key) do
-the same thing.  The first press selects a region based upon the
-character at point.  For example, with point over an opening or
-closing grouping character, such as @{ or @}, the whole grouping is
-selected, e.g. a C function.  When on an _ or - within a programming
-language identifier name, the whole name is selected.  The type of
-selection is displayed in the minibuffer as feedback.  When using a
-language in which indentation determines nesting level like Python, a
-double click on the first alpha character of a line, such as an if
-statement, selects the whole statement.  Use @bkbd{C-g} to unmark the
-region when done.  Use, @code{hui-select-thing-with-mouse} if you want
-to bind this to a different mouse key to use single clicks instead of
-double clicks.
address@hidden
+Comments: GNU Hyperbole mail buttons accepted, vX.X.X.
address@hidden example
 
address@hidden C-c .
address@hidden hui-select-goto-matching-tag
-The second convenience key is bound only in HTML/web mode.  @bkbd{C-c
-.} @code{hui-select-goto-matching-tag} jumps between the opening and
-closing tag of a pair.  It moves point to the start of the tag paired
-with the closest tag that point is within or which it precedes.  A
-second press moves point to the matching tag of the pair, allowing you
-to quickly jump back and forth between opening and closing tags.
address@hidden file, .emacs
address@hidden
+where the X's indicate your Hyperbole version number.  You can cut
+this out of particular messages before you send them when need be.
 
address@hidden Smart Key Argument Selection, Smart Key Modifiers, Smart Key 
Thing Selection, Smart Keys
address@hidden   Smart Key Argument Selection
address@hidden actype, link-to-mail
+A final mail-related facility provided by Hyperbole is the ability to
+save a pointer to a received mail message by creating an explicit button
+with a @code{link-to-mail} action type.  When prompted for the mail
+message to link to, if you press the Action Key within the message, the
+appropriate link parameters will be copied to the argument prompt, as
+described in @ref{Smart Key Argument Selection}.
 
address@hidden Hyperbole help
-A prime design criterion of Hyperbole's user interface is that you
-should be able to see what an operation will do before using it.  The
-Assist Key typically shows you what a button or minibuffer menu item
-will do before you activate it.  Hyperbole also displays the result of
-directly selecting an argument value with the Action Key, to provide
-feedback as to whether the correct item has been selected.  A second
-press/click is necessary before an argument is accepted and processed.
 
address@hidden argument entry
address@hidden direct selection
address@hidden double click
-Many Hyperbole commands prompt you for arguments.  The standard
-Hyperbole user interface has an extensive core of argument types that
-it recognizes.  Whenever Hyperbole is prompting you for an argument,
-it knows the type that it needs and provides some error checking to
-help you get it right.  More importantly, it allows you to press the
-Action Key within an entity that you want to use as an argument and it
-will grab the appropriate thing and show it to you at the input prompt
-within the minibuffer.  If you press (click with a mouse) the Action
-Key on the same thing again, it accepts the entity as the argument
-and moves on.  Thus, a double click registers a desired argument.
-Double-quoted strings, pathnames, mail messages, Info nodes, dired
-listings, buffers, numbers, completion items and so forth are all
-recognized at appropriate times.  All of the argument types mentioned
-in the documentation for the Emacs Lisp @code{interactive} function
-are recognized.  Experiment a little and you will quickly get used to
-this direct selection technique.
address@hidden Buttons in News,  , Buttons in Mail, Utilizing Explicit Buttons
address@hidden  Buttons in News
 
address@hidden completion
-Wherever possible, standard Emacs completion is offered, as described in
address@hidden,,,emacs,the GNU Emacs Manual}.  Remember to use @bkbd{?}
-to see what your possibilities for an argument are.  Once you have a
-list of possible completions on screen, press the Action Key twice on
-any item to enter it as the argument.
address@hidden button posting
address@hidden news reader/poster
address@hidden posting news
address@hidden Gnus
address@hidden USENET
address@hidden file, hyperbole.el
address@hidden menu item, Cust/Msg-Toggle-Ebuts
+Explicit buttons may be embedded within outgoing USENET news articles
+and may be activated from within the Gnus news reader.  Because this
+involves complex changes to news support functions, this feature is
+disabled by default.  Use the Cust/Msg-Toggle-Ebuts minibuffer menu
+item to enable it (enabling it for mail also enables it for news and
+vice versa).
 
address@hidden Smart Key Modifiers, Smart Key Debugging, Smart Key Argument 
Selection, Smart Keys
address@hidden   Smart Key Modifiers
-
-For advanced users of Emacs and Hyperbole, there is @code{hmouse-mod-mode},
-a global minor mode which turns the Action Mouse Key into a @key{Control}
-modifier key and the Assist Key into a @key{Meta} modifier key.  This
-allows for better keyboard energy balance across hands and is useful for
-reducing carpal tunnel stress.  It may also be used with a @dfn{chord
-keyboard} in one hand and a mouse in the other to point at things while
-simultaneously operating upon them.
-
address@hidden hmouse-mod-mode
address@hidden hmouse-mod-mode
address@hidden Smart Keys as modifiers
address@hidden control key modifier
address@hidden meta key modifier
address@hidden chord keyboards
-Use the @code{hmouse-mod-mode} global minor mode to enable this feature.
address@hidden M-x hmouse-mod-mode @key{RET}} enables it and adds
address@hidden to the list of modeline minor modes.  @bkbd{C-u 0 M-x
-hmouse-mod-mode @key{RET}} disables it and @bkbd{M-x
-hmouse-mod-mode @key{RET}} toggles it on and off.
-
-When enabled, if the Action Key is held down while alpha characters
-are typed, they are translated into @key{Control} keys instead.  The
-Assist Key translates them into @key{Meta} keys.  When both Smart
-Keys are depressed, @key{Control-Meta} keys are produced.  The
-commands bound to the characters produced are then run.  For example,
-Action Key + @bkbd{a} runs the function for @bkbd{C-a}.  If no
-keys are typed while the Smart Keys are down, they operate as
-normally under Hyperbole.
-
-The code for Smart Key modifiers can be found in
address@hidden@address@hidden:address@hidden/hmouse-mod.el}.
-
address@hidden Smart Key Debugging,  , Smart Key Modifiers, Smart Keys
address@hidden   Smart Key Debugging
+Once enabled, all Hyperbole support should work just as it does when
+reading or sending mail.  @xref{Buttons in Mail}.  When reading news,
+buttons which appear in message @emph{Subject} lines may be activated
+within the Gnus subject buffer as well as the article buffer.  When
+posting news, the *post-news* buffer is used for outgoing news
+articles rather than a mail-related buffer.
 
-Typically, @bkbd{C-h A} and @bkbd{C-u C-h A} which show Action and
-Assist Key help for the current context, are sufficient for seeing how
-the Smart Keys behave no matter where they are used.
+Remember that the articles you post do not contain the action type
+definitions used by the buttons, so the receiver must have these or she
+will receive an error when she activates the buttons.  You should also
+keep in mind that most USENET readers will not be using Hyperbole, so if
+they receive a news article containing explicit buttons, they will
+wonder what the button data at the end of the message is.  You should
+therefore limit distribution of such messages.  For example, if most
+people at your site read news with Gnus and use Hyperbole, it would be
+reasonable to embed buttons in postings to local newsgroups.
 
address@hidden C-h h c d
address@hidden Smart Key debugging
address@hidden menu item, Cust/Debug-Toggle
address@hidden debugging Smart Keys
address@hidden troubleshooting Smart Keys
address@hidden Messages buffer
address@hidden logging Smart Key behavior
-However, if a Smart Key ever behaves differently than you think it
-should or if you want to test how the Smart Keys respond in a new
-context, then the Smart Key debugging flag may be of use.  You toggle
-it on and off with @bkbd{C-h h c d} (minibuffer menu
-Cust/Debug-Toggle).  Once enabled, this displays a message in the
-minibuffer each time the Action or Assist Key is released, showing
-the context of the press and its associated action, so you can see
-exactly what is happening whenever you use a Smart Key.  These
-messages are all prefaced with ``(HyDebug)'' and logged to the
-``*Messages*'' buffer for later viewing.
address@hidden news comment
+In order to alert readers of your postings that they may send you
+personal replies with embedded Hyperbole buttons, the system inserts
+into news postings the same comment that is included within mail
+messages, if enabled.  @xref{Buttons in Mail}, for details and an
+explanation of how to turn this feature on.
 
address@hidden C-h h m c
address@hidden C-h h m r
-If you do find a problem with the Smart Keys and want to report a bug,
-use @bkbd{C-h h m r} to compose an email message to the bug-hyperbole
-list.  Hyperbole will automatically include all of the ``(HyDebug)''
-messages from your current emacs session into your email.  Similarly,
-when you compose an email to the hyperbole-users mailing list
-with @bkbd{C-h h m c}, these messages are also included.
 
 
address@hidden Menus, HyControl, Smart Keys, Top
address@hidden Menus, HyControl, Buttons, Top
 @chapter Menus
 
address@hidden InfoDock
address@hidden XEmacs
 @cindex Emacs
address@hidden Hyperbole menubar menu
address@hidden Hyperbole pulldown menu
 @cindex menu use
address@hidden pulldown menu
 @cindex menubar, Hyperbole menu
 @cindex menu item, Remove-This-Menu
 @cindex removing Hyperbole menu
-Under InfoDock, XEmacs, and Emacs, pulldown and popup menus are
-available to invoke Hyperbole commands, including those from the rolo
-and the outliner.  These menus operate like any other application menus
-and are fairly self-explanatory.  Use the @code{Remove-This-Menu}
-command on the Hyperbole menubar menu to get rid of the menu if you do
-not need it.  Invoking Hyperbole from the keyboard, as explained below,
-will add the menu back to the menubar.
+Pulldown and popup menus are available to invoke Hyperbole commands,
+including those from the HyRolo and the Koutliner.  These menus operate
+like any other application menus and are fairly self-explanatory.  Use
+the @code{Remove-This-Menu} command on the Hyperbole menubar menu to
+get rid of the menu if you do not need it.  Invoking Hyperbole from
+the keyboard, as explained below, will add the menu back to the
+menubar.  Here is the Hyperbole Menubar Menu and its Find submenu.
 
 @float Image,image:Hyperbole Menu
 @caption{Hyperbole Menubar Menu}
address@hidden @image{im/menu-hyperbole,,5in,Hyperbole Menu}
address@hidden/menu-hyperbole,,5in,Hyperbole Menu}
address@hidden float
address@hidden
+
address@hidden Image,image:Find Menu
address@hidden Menubar Menu}
address@hidden/menu-find,,5in,Find Menu}
 @end float
 @sp 1
 
address@hidden hyperbole-popup-menu
address@hidden popup menu
address@hidden hyperbole popup menu
+The Hyperbole popup menu, @code{hyperbole-popup-menu}, replicates the
+Hyperbole menubar menu.  It can be bound to a mouse key but is not
+bound to one by default.   It can also be assigned as the default
+Action or Assist Key action to use when no matching context is found.
address@hidden Key - Default Context}, for details.
+
 @cindex minibuffer menus
 The rest of this section discusses only the
 specialized @dfn{minibuffer menus} which appear in the minibuffer
@@ -2531,20 +2906,32 @@ similar to key bindings.
 @cindex starting Hyperbole
 @cindex Hyperbole, starting
 @cindex Hyperbole main menu
-The top-level Hyperbole menu is invoked from a key given in your
+The top-level Hyperbole minibuffer menu is invoked from a key given in your
 @file{hyperbole.el} file (by default, @bkbd{C-h h}) or with a click
-of the Action Mouse Key in the minibuffer.
+of the Action Mouse Key in the minibuffer when it is inactive.  It should
+look like this:
+
address@hidden
address@hidden
+Hy>  Act Butfile/ Cust/ Doc/ Ebut/ Find/ Gbut/ Hist Ibut/ Kotl/ Msg/ Rolo/ 
Screen/ Win/
address@hidden smallexample
 
 @cindex submenus
 @cindex menu help
 @cindex help, menu items
 @cindex menu item selection
 @cindex selection, menu items
-All menu items are selected via the first character of their names
-(letter case does not matter) or with presses of the Action Key.  "/" at
-the end of an item name indicates that it brings up a submenu.  A press
-of the Assist Key on an item displays help for the item, including the
-action that it performs.
address@hidden @key{TAB}
address@hidden M-f
address@hidden Shift-
address@hidden M-b
+All menu items are selected via the first character of their names (letter
+case does not matter), with presses of the Action Key or by using
address@hidden@address@hidden or @bkbd{M-f} to move forward an item, 
@address@hidden
+or @bkbd{M-b} to move backward an item and @address@hidden@} to select the
+current item.  A press of the Assist Key on an item displays help for the
+item, including the action that it performs.  "/" at the end of an item name
+indicates that it brings up a submenu.
 
 @kindex C-t
 @kindex q
@@ -2561,26 +2948,6 @@ the end of a menu.  @bkbd{C-g} aborts from the 
minibuffer whether you
 are at a menu prompt or any other Hyperbole prompt.
 
 @noindent
-The top-level Hyperbole menu appears in the minibuffer and should look
-like this:
-
address@hidden
address@hidden
-Hy>  Act Butfile/ Cust/ Doc/ Ebut/ Find/ Gbut/ Hist Ibut/ Kotl/ Msg/ Rolo/ 
Screen/ Win/
address@hidden smallexample
-
address@hidden 1
address@hidden @key{TAB}
address@hidden M-f
address@hidden Shift-
address@hidden M-b
-Each menu item may be selected by typing its first letter (case
-insensitive), by clicking the Action Mouse Key on it, or by
-using @address@hidden@} or @bkbd{M-f} to move forward an
-item, @address@hidden or @bkbd{M-b} to move backward an item
-and @address@hidden@} to select the current item.
-
address@hidden
 The top-level Hyperbole minibuffer menu items serve the following purposes:
 
 @table @strong
@@ -2621,7 +2988,7 @@ The @samp{KeyBindings/} submenu allows individual changes 
to each
 keyboard key that Hyperbole binds for its commands, notably the Action
 Key.  @xref{Smart Key Bindings}, for more information.
 
address@hidden Key Bindings} for complete descriptions of Hyperbole's
address@hidden Key Bindings}, for complete descriptions of Hyperbole's
 global key bindings, how to temporarily disable them and how to manage
 its overriding of local bindings that hide global Hyperbole keys.
 
@@ -2677,6 +3044,7 @@ GrepFiles -        Show numbered line matches for a 
regexp in all
                    is given, limit search to only .el and .el.gz
                    files.  Set @code{hypb:rgrep-command} to change the
                    grep command or options.
+
 @item
 LocateFiles -      Prompt for a pattern and display a list of all 
                    matching pathnames found throughout the file
@@ -2685,12 +3053,16 @@ LocateFiles -      Prompt for a pattern and display a 
list of all
                    the @code{locate} command.  Within the resulting
                    *Locate* buffer, Find/Grep-Files will find matching lines
                    within only these paths (files and directories).
+
 @item
 MatchFileBuffers - Show numbered line matches for regexp in all file-based 
buffers.
+
 @item
 OccurHere -        Show numbered line matches for regexp from this buffer.
+
 @item
 RemoveLines -      Following point, remove all lines that match regexp.
+
 @item
 SaveLines -        Following point, keep only lines that match regexp.
 @cindex menu, Find/Web
@@ -2699,6 +3071,7 @@ SaveLines -        Following point, keep only lines that 
match regexp.
 @cindex web search
 @kindex C-c /
 @vindex hyperbole-web-search-browser-function
+
 @item
 Web/ -             Select a search engine and term and search with them.
                    Hyperbole binds the key @bkbd{C-c /} for quick
@@ -2708,12 +3081,14 @@ Web/ -             Select a search engine and term and 
search with them.
                    which determines whether web search results are displayed
                    within Emacs or with an external web browser.  A short
                    video introduction to the Find/Web menu may be
-                   found at @url{https://youtu.be/8lMlJed0-OM}. The
-                   Find/Web menu looks like this:
+                   found at @url{https://youtu.be/8lMlJed0-OM}.
+
+                   The Find/Web menu looks like this:
+
 @smallexample
 @noindent
-Web>  Amazon Bing Dictionary Elisp Facebook Google Hub(git) Images
-      Maps RFCs StackOverflow Twitter Wikipedia Youtube
+Web>  Amazon Bing Dictionary Elisp Facebook Google Hub(git)
+      Images Maps RFCs StackOverflow Twitter Wikipedia Youtube
 @end smallexample
 @end itemize
 
@@ -2721,9 +3096,8 @@ Web>  Amazon Bing Dictionary Elisp Facebook Google 
Hub(git) Images
 @cindex menu, Gbut
 @item Gbut/
 All global button commands.  Global buttons are accessed by name
-rather than by direct selection.  The window-system-based Hyperbole
-menu also includes an activation menu item for each global button.
-
+rather than by direct selection.  The Hyperbole menubar menu also
+includes an activation menu item for each global button.
 @cindex menu item, Back-to-Prior-Location
 @cindex menu item, Hist
 @cindex history
@@ -2745,12 +3119,12 @@ a Hyperbole discussion mailing list.
 @cindex menu, Koutline
 @cindex menu, Kotl
 @item Kotl/
-Autonumbered, structured outliner and hyper-node manager commands.
+Autonumbered, structured outliner commands with per-node hyperlink anchors.
 @xref{Koutliner}.
 
 @cindex menu, Rolo
 @item Rolo/
-Hierarchical, multi-file rolo lookup and edit commands.
+Hierarchical, multi-file contact manager lookup and edit commands.
 @xref{HyRolo}.
 
 @cindex menu, Screen
@@ -2760,8 +3134,8 @@ Window, frame and buffer display control commands.  
@xref{HyControl}.
 @cindex menu, Window-Configurations
 @cindex menu, WinConfig
 @item Win/
-Window configuration management, such as adding and restoring window
-configurations by name.  @xref{Window Configurations}.
+Window configuration management commands, such as adding and restoring
+window configurations by name.  @xref{Window Configurations}.
 
 @end table
 
@@ -2771,6 +3145,8 @@ configurations by name.  @xref{Window Configurations}.
 @cindex windows control
 @cindex frames control
 @cindex HyControl
address@hidden invoking HyControl
address@hidden starting HyControl
 @cindex screen
 @cindex display
 Hyperbole includes the fastest, easiest-to-use Emacs window and frame
@@ -2801,10 +3177,10 @@ f}.
 @cindex submodes
 Once in HyControl, your minibuffer window at the bottom of the
 selected frame will display a summary of keys you may use to adjust
-your windows until you press @bkbd{q} or @address@hidden to quit from
-HyControl.  The key, @bkbd{t}, will always toggle between controlling
-frames and windows, the @dfn{submodes} of HyControl, with the upper
-left of the minibuffer prompt showing which type of control is active.
+your windows until you press @bkbd{q} to quit from HyControl.  The
+key, @bkbd{t}, will always toggle between controlling frames and
+windows, the @dfn{submodes} of HyControl, with the upper left of the
+minibuffer prompt showing which type of control is active.
 
 @cindex numeric argument
 @cindex multiplier
@@ -2822,14 +3198,81 @@ and frame submodes.
 
 @table @asis
 
address@hidden HyControl help
address@hidden HyControl, see screen
address@hidden screen, ?
address@hidden ?
+Toggle whether HyControl displays key binding help in the minibuffer.
+
 @kindex HyControl, see screen
 @kindex screen, .
 @kitem .
-Clear the argument to a value of 0.
+Clear the prefix argument to a value of 0.
 
 @kindex screen, 0-9
 @kitem 0-9
-Multiply the argument by 10 and add the digit pressed.
+Multiply the prefix argument by 10 and add the digit pressed.
+
address@hidden windows grid
address@hidden grid of windows
address@hidden HyControl windows grid
address@hidden screen, @@
address@hidden @@
+
+Display a @dfn{grid of windows} in the selected frame sized according to
+the prefix argument or via a prompted input.  Left digit of the argument is
+the number of grid rows and the right digit is the number of grid columns
+to display.
+
address@hidden Image,image:2x3-Windows-Grid
address@hidden Windows Grid}
address@hidden/wgrid-2x3,5.2in,,2x3 Windows Grid}
address@hidden float
address@hidden 1
+
+If the prefix argument is 0, prompt for a major mode whose buffers
+should be displayed first in the grid windows, then prompt for the grid size.
+
+Otherwise, prompt for the grid size if the prefix argument is an invalid
+size.
+
address@hidden hycontrol-display-buffer-predicate-list
+With a current buffer in Dired, Buffer Menu or IBuffer mode that
+contains marked items, the buffers associated with those items are
+displayed first in the grid (unless the prefix argument is 0).
+
+Then the most recently used buffers are displayed in each window, first
+selecting only those buffers which match any of the predicate expressions
+in @code{hycontrol-display-buffer-predicate-list}.  (The default predicate
+list chooses buffers with attached files).
+
+Then, if there are not enough buffers for all windows, the buffers that
+failed to match to any predicate are used. In all cases, buffers whose
+names start with a space are ignored.
+
+When done, this resets the persistent prefix argument to 1 to prevent
+following commands from using the often large grid size argument.
+
+If you ever need to experiment with different sized window grids, use
address@hidden hycontrol-window-grid-repeatedly @key{RET}}.  It will
+repeatedly prompt you for a grid size and then display it.  When you
+are done, simply press @address@hidden to exit.
+
address@hidden frame resize
address@hidden hycontrol-frame-widths
address@hidden screen, a
address@hidden a
+Cycle through common width adjustments of a frame, such as 25% and
+50%. Widths are given in screen percentages by the list
address@hidden and typically go from widest to
+narrowest.
+
address@hidden hycontrol-frame-heights
address@hidden screen, A
address@hidden A
+Cycle through common height adjustments of a frame, such as 33.3% and
+75%.  Heights are given in screen percentages by the list
address@hidden and typically go from tallest to shortest.
 
 @kindex screen, h
 @kitem h
@@ -2850,17 +3293,17 @@ Narrow by argument characters.
 
 @kindex screen, %
 @kitem %
-In FRAME mode, resize frame's height and width to about argument percent
+In FRAMES mode, resize frame's height and width to about argument percent
 of the screen size.
 
 @kindex screen, H
 @kitem H
-In FRAME mode, resize frame's height to about argument percent of the
+In FRAMES mode, resize frame's height to about argument percent of the
 screen size.
 
 @kindex screen, W
 @kitem W
-In FRAME mode, resize frame's width to about argument percent of the
+In FRAMES mode, resize frame's width to about argument percent of the
 screen size.
 
 @kindex screen, up
@@ -2873,21 +3316,16 @@ screen size.
 @kitemx right
 Move frame in the specified direction by argument pixels.
 
address@hidden frame relocate
 @kindex screen, c
 @kitem c
-In FRAME mode, with each press, cycle the selected frame's position
-clockwise through the middle of edges and corners of the screen.  With
-an argument of 0, reset the cycle position to the upper left corner.
-Respects the pixel edge offsets returned by 
@code{hycontrol-get-screen-offsets}.
-
address@hidden screen, keypad number
address@hidden keypad number
-In FRAME mode, move the frame directly to the screen edge position given
-by the numeric keypad layout.  For example, 3 moves the frame to the
-bottom right corner and 8 moves it to the middle of the top edge.
-Keypad numeric keys do not adjust the argument.  Respects the pixel edge
-offsets returned by @code{hycontrol-get-screen-offsets}.
+With each press, cycle the selected frame's position clockwise through
+the middle of edges and corners of the screen.  With an argument of 0,
+reset the cycle position to the upper left corner.  Respects the pixel
+edge offsets returned by @code{hycontrol-get-screen-offsets}.
 
address@hidden delete frame
address@hidden frame, delete
 @kindex screen, d
 @kitem d
 Delete selected window or frame based on mode.
@@ -2896,6 +3334,16 @@ Delete selected window or frame based on mode.
 Prompt for confirmation and then delete non-selected windows or frames
 based on mode.
 
address@hidden frame, lower
address@hidden lower frame
address@hidden screen, l
address@hidden l
+In FRAMES mode, lower the selected frame below all other Emacs session frames.
+
address@hidden frame, other
address@hidden other frame
address@hidden other window
address@hidden window, other
 @kindex screen, o
 @kitem o
 Select the next window in the window list, across all visible frames.
@@ -2903,6 +3351,30 @@ Select the next window in the window list, across all 
visible frames.
 @kitem O
 Select the next visible frame.
 
address@hidden keypad
address@hidden numeric keypad
address@hidden screen, keypad number
address@hidden keypad number
+In FRAMES mode, move the frame directly to the screen edge position given
+by the numeric keypad layout.  For example, 3 moves the frame to the
+bottom right corner and 8 moves it to the middle of the top edge.
+Keypad numeric keys do not adjust the argument.  Respects the pixel edge
+offsets returned by @code{hycontrol-get-screen-offsets}.
+
address@hidden virtual numeric keypad
address@hidden screen, p
address@hidden p
+Display a virtual numeric keypad for emulating a keypad on keyboards without 
one.
+Each digit key operates just as a numeric keypad key would.
+
address@hidden frame, raise
address@hidden raise frame
address@hidden screen, r
address@hidden r
+In FRAMES mode, raise the selected frame above all other Emacs session frames.
+
address@hidden window, make
address@hidden make window
 @vindex hycontrol-frame-offset
 @kindex screen, [
 @kitem [
@@ -2914,6 +3386,8 @@ selected frame by the pixel amounts given by
 @kitem ]
 Create a new sideways window or frame depending on mode.
 
address@hidden frame configuration
address@hidden window configuration
 @kindex screen, (
 @kitem (
 Save the current window or frame configuration based on mode.  Whenever,
@@ -2925,11 +3399,21 @@ configuration and wish to save it temporarily.
 After confirmation, restore the last saved window or frame configuration
 based on mode.
 
address@hidden window, clone
address@hidden clone window
address@hidden hycontrol-keep-window-flag
 @kindex screen, f
 @kitem f
-In WINDOW mode, delete the selected window and redisplay its buffer in a
-new frame.
-
+Clone the selected window to a new similarly sized frame.
address@hidden screen, F
address@hidden F
+Clone the selected window to a new similarly sized frame.  Delete the
+original window unless there is only one window in the source frame or
+if @code{hycontrol-keep-window-flag} is non-nil.
+
address@hidden frame, to edge
address@hidden frame, percentage resize
address@hidden resize frame percentage
 @kindex screen, i
 @kindex screen, j
 @kindex screen, k
@@ -2938,29 +3422,51 @@ new frame.
 @kitemx j
 @kitemx k
 @kitemx m
-In Frame mode, expand the selected frame to the associated screen edge
-based on key layout.  i=top, j=left, k=right and m=bottom screen edge.
-Respects the pixel edge offsets returned by
+Expand the selected frame to the respective screen edge based on U.S.
+keyboard key layout.  i=top, j=left, k=right and m=bottom screen edge.
+If already at the edge, adjusts the perpendicular dimension to ARG percent
+of the screen (50% by default if ARG is 1 or nil) but keep it at the screen
+edge.  Respects the pixel edge offsets returned by
 @code{hycontrol-get-screen-offsets}.
 
address@hidden balance windows
address@hidden windows, balance
address@hidden equalize windows
address@hidden windows, equalize
 @kindex screen, =
 @kitem =
-Make the current frame's windows or all frames approximately the same
-size based on mode.  In FRAME mode, all visible frames are set to the
-size of the selected frame.
+After confirmation, in WINDOWS mode, make the current frame's windows
+approximately the same size.  In FRAMES mode, make all visible frames
+the size of the selected frame.
 
address@hidden shrink window
address@hidden window, shrink
 @kindex screen, -
 @kitem -
-Make the selected window or frame (based on mode) as small as possible
-while still displaying it.
+In WINDOWS mode, shrink window to its smallest possible number of lines
+to display the entire buffer, if possible.  Otherwise or if the window
+is already displaying all of its lines, shrink it to about one line,
+if possible.
+
address@hidden frame, shrink
address@hidden shrink frame
+In FRAMES mode, make the frame as small as possible while still
+displaying it.
+
address@hidden window, maximize
address@hidden maximize window
address@hidden frame, maximize
address@hidden maximize frame
 @kindex screen, +
 @kitem +
-Make the window or frame (based on mode) as large as possible.  In FRAME
-mode, a second press of this key restores its size to whatever it was
-prior to the first use of this command.
+Make the window or frame (based on mode) as large as possible.  In FRAMES
+mode, a second press of this key restores its size to whatever it was prior
+to the first use of this command.
 
 @cindex burying
 @cindex unburying
address@hidden buffer, bury
address@hidden buffer, unbury
 @kindex screen, b
 @kitem b
 Bury the selected buffer within the buffer list, displaying the next
@@ -2971,14 +3477,17 @@ Unbury the bottom buffer in the buffer list and display 
it in the
 selected window.
 
 @cindex swapping
address@hidden buffer, swap
 @kindex screen, ~
 @kitem ~
 Swap two buffers between the selected window or frame and one other.
-In WINDOW mode, there must be precisely two windows in the selected
-frame.  In FRAME mode, the second frame mush have a single window.
+In WINDOWS mode, there must be precisely two windows in the selected
+frame.  In FRAMES mode, the second frame must have a single window.
 
address@hidden zoom-frm.el
 @cindex zooming
address@hidden window, zoom
address@hidden frame, zoom
address@hidden zoom-frm.el
 @kindex screen, Z
 @kitem Z
 Zoom in selected window or frame text based on mode, increasing default
@@ -2990,16 +3499,22 @@ face size.  Zooming supports an argument of between 1 
and 9 (any other
 value sets the argument to 1).  The argument determines the number of
 sizes by which to zoom.
 
-FRAME mode zooming requires the separately available
address@hidden library.  WINDOW zooming works without this library.
+FRAMES mode zooming requires the separately available
address@hidden library.  WINDOWS zooming works without this library.
 
address@hidden HyControl switch modes
address@hidden HyControl toggle modes
address@hidden toggle HyControl mode
 @kindex screen, t
 @kitem t
-Toggle between WINDOW and FRAME submodes.
+Toggle between WINDOWS and FRAMES submodes.
 
address@hidden HyControl quit
address@hidden HyControl exit
address@hidden quit HyControl
address@hidden exit HyControl
 @kindex screen, q
address@hidden screen, @key{ESC}
address@hidden q or @key{ESC}
address@hidden q
 Quit from HyControl mode and restore normal key bindings.
 @end table
 
@@ -3008,17 +3523,22 @@ The rest of this section goes into some technicalities 
about HyControl
 settings.  You may ignore it if you are not familiar with Emacs
 variables and functions or with customized Emacs.
 
address@hidden HyControl edge placement
address@hidden HyControl corner placement
+HyControl allows placement of frames at screen edges and corners with the
+frame cycle command, @bkbd{c}, and direct placement using the layout of the
+numeric keypad keys, if available, or the @kbd{p} virtual keypad key
+otherwise.  (Note that a screen may span multiple physical monitors).
+
address@hidden HyControl screen edge offsets
address@hidden screen, edge offsets
 @vindex hycontrol-screen-offset-alist
 @findex hycontrol-set-screen-offsets
 @findex hycontrol-get-screen-offsets
-HyControl allows placement of frames at screen edges and corners. with
-the frame cycle command, @bkbd{c}, and direct placement matching the
-layout of the numeric keypad keys, if available.  (Note that a screen
-may span multiple physical monitors).  To prevent widgets
-and toolbars at the corners of the screen from being obscured,
-HyControl can offset each frame from each screen edge by a fixed
-number of pixels.  These offsets are specified by the variable,
address@hidden and can differ for each type of
+To prevent widgets and toolbars at the corners of the screen from
+being obscured, HyControl can offset each frame from each screen edge
+by a fixed number of pixels.  These offsets are specified by the
+variable,@code{hycontrol-screen-offset-alist} and can differ for each type of
 screen; see its documentation for details.  If you change its value,
 then call @code{hycontrol-set-screen-offsets} to set any new offset
 values.  @code{hycontrol-get-screen-offsets} returns the list of offsets
@@ -3026,22 +3546,25 @@ in clockwise order starting from the top edge.  Both 
functions display a
 minibuffer message with the current offsets when called interactively.
 
 @vindex hycontrol-frame-offset
address@hidden creating frames
address@hidden frame creation
address@hidden frame, make
address@hidden make frame
 When HyControl creates a new frame, it automatically sizes it to the
 same size as the previously selected frame and offsets it from that
 frame by the (X . Y) number of pixels given in the variable,
 @code{hycontrol-frame-offset}.
 
address@hidden file, hycontrol.el
address@hidden hycontrol-enable-frames-mode
address@hidden hycontrol-enable--windows-mode
 The source code for the HyControl system is in @file{hycontrol.el}
 within your Hyperbole source directory, given by @code{hyperb:dir}.
-Presently, you must edit the code to change any of HyControl's internal
-key bindings.  Eventually, standard local key bindings will be provided.
-You can however bind the two HyControl invocation commands to keys.
-These commands are, @code{hycontrol-windows} and @code{hycontrol-frames}.
+HyControl uses standard Emacs keymaps, so any keys can be rebound.
+Remember that Hyperbole typically binds @bkbd{C-c \\} to the windows
+control menu, but if you would like to bind either of the two
+HyControl minor mode invocation commands to keys, they are,
address@hidden and @code{hycontrol-enable-frames-mode}.
 Generally, you need only one of these bound to a key since when you
-press that key, the other command can be reached by pressing
address@hidden
+press that key, the other command can be reached by pressing @bkbd{t}.
 
 
 @node Koutliner, HyRolo, HyControl, Top
@@ -3066,16 +3589,6 @@ Cells also store their time of creation and the user who 
created the
 cell.  User-defined attributes may also be added to cells.  @xref{Cell
 Attributes}.
 
address@hidden menu, Outline
-The outliner works under GNU Emacs, XEmacs or under InfoDock.  You can tell
-whether you are running a version of Emacs which supports the outliner by
-pressing @bkbd{C-h h} to display the Hyperbole menu (@bkbd{q} will
-quit).  If you see a @samp{Kotl/} entry in the menu, then the outliner is
-available.  Otherwise, the outliner does not work with your version of
-Emacs, so this section of the manual will not be of interest to you.  (The
-same is true of the Hyperbole/Outline pulldown menu; if it appears, the
-outliner is available for use.)
-
 @vindex file, EXAMPLE.kotl
 @cindex menu, Outline/Example
 @kindex C-h h k e
@@ -3087,16 +3600,14 @@ editing and motion commands with this file since a 
personal copy is made
 when you invoke this command.
 
 @xref{Koutliner Keys}, for a full summary of the key bindings and
-commands available in the outliner.
+commands available in the Koutliner.
 
address@hidden
 @float Image,image:Koutliner
 @caption{Koutliner Screenshot}
address@hidden @image{im/koutliner,6in,,Koutliner Screenshot}
address@hidden/koutliner,6in,,Koutliner Screenshot}
 @end float
 @sp 1
 
-
 @menu
 * Menu Commands::
 * Creating Outlines::
@@ -3110,6 +3621,7 @@ commands available in the outliner.
 @end menu
 
 
address@hidden
 @node Menu Commands, Creating Outlines, Koutliner, Koutliner
 @section   Menu Commands
 
@@ -3149,13 +3661,14 @@ Vspec        kvspec:activate            Set a view 
specification
 ====================================================================
 @end example
 
-The popup and menubar Koutline menu, as displayed on the following
-page, offers a more complete set of the Koutliner commands.  Experiment
-with the menu or read the following sections explaining commands.
address@hidden
+The popup and menubar Koutline menu, as displayed here, offers a more
+complete set of the Koutliner commands.  Experiment with the menu or
+read the following sections explaining commands.
 
 @float Image,image:Koutline Menu
 @caption{Koutline Menu}
address@hidden @image{im/menu-koutline,,6in,Koutline Menu}
address@hidden/menu-koutline,,6in,Koutline Menu}
 @end float
 @sp 1
 
@@ -3229,7 +3742,7 @@ to read aloud than equivalent legal ones.  They also 
simplify
 distinguishing between even and odd level labels because of the
 alternating character set.
 
address@hidden C-c C-l
address@hidden koutliner, C-c C-l
 @cindex label type, changing
 You can change the labeling scheme used in a particular outline with
 the command @bkbd{C-c C-l}.  A @bkbd{?} will show all of the
@@ -3239,8 +3752,8 @@ permanent idstamps (permanent cell ids) are all available.
 @cindex label separator, changing
 @cindex cell, label separator
 @cindex outline, label separator
address@hidden C-c M-l
address@hidden C-u C-c M-l
address@hidden koutliner, C-c M-l
address@hidden koutliner, C-u C-c M-l
 A cell label is normally followed by a period and a space, called the
 @dfn{label separator}, prior to the start of the cell contents.  You can
 change the separator for the current outline with @bkbd{C-c M-l}.
@@ -3258,9 +3771,9 @@ initialization file, @file{~/.emacs}, substituting for 
`your-separator':
 
 @cindex label separator, default
 @vindex kview:default-label-separator
address@hidden
address@hidden
 (setq kview:default-label-separator "your-separator")
address@hidden smalllisp
address@hidden lisp
 
 
 @node Idstamps, Editing, Autonumbering, Koutliner
@@ -3325,10 +3838,10 @@ selected region, since that will destroy the outline 
structure.
 @node Adding and Killing, Relocating and Copying, Editing, Editing
 @subsection  Adding and Killing
 
address@hidden C-j
address@hidden C-u c-j
address@hidden C-c a
address@hidden C-c p
address@hidden koutliner, C-j
address@hidden koutliner, C-u c-j
address@hidden koutliner, C-c a
address@hidden koutliner, C-c p
 @cindex cell, adding
 @cindex cell, creating
 @bkbd{C-j} adds a new cell as a successor sibling of the
@@ -3339,10 +3852,10 @@ handled specially.  It adds a single cell as a child of 
the current cell.
 @bkbd{C-c a} does the same thing.  @bkbd{C-c p} adds the cell as
 the successor of the current cell's parent.
 
address@hidden C-c C-k
address@hidden C-c k
address@hidden C-u C-c k
address@hidden C-y
address@hidden koutliner, C-c C-k
address@hidden koutliner, C-c k
address@hidden koutliner, C-u C-c k
address@hidden koutliner, C-y
 @cindex cell, killing
 @cindex cell, yanking contents
 @cindex tree, killing
@@ -3367,8 +3880,8 @@ child of the cell which precedes it in the outline.  
@dfn{Promotion} is
 the inverse operation.  Note that trees (cells and their entire
 substructure) are promoted and demoted, not individual cells.
 
address@hidden @key{TAB}
address@hidden address@hidden
address@hidden koutliner, @key{TAB}
address@hidden koutliner, address@hidden
 Trees may be demoted or promoted by pressing @key{TAB} or
 @address@hidden (or @address@hidden@key{TAB}}) respectively, as in
 most outliners today.  @bkbd{M-0 @key{TAB}} and @bkbd{M-0 address@hidden
@@ -3380,7 +3893,7 @@ outline may not support movement of the tree by the 
number of levels
 requested, however, in which case the maximal possible adjustment is
 made.
 
address@hidden M-1 @key{TAB}
address@hidden koutliner, M-1 @key{TAB}
 @cindex inserting tabs
 @cindex tabs, inserting
 @vindex kotl-mode:indent-tabs-mode
@@ -3398,7 +3911,7 @@ Use @bkbd{M-1 @key{TAB}} to toggle the @key{TAB} and
 @cindex tree, copying
 @cindex tree, moving
 @cindex Action Key, cell argument
address@hidden Action Key, cell argument
address@hidden koutliner, Action Key, cell argument
 For maximum flexibility in rearranging outlines, there are commands that
 move or copy entire trees.  Each of these commands prompts for the label
 of the root cell to move or copy and for a second cell which specifies
@@ -3522,18 +4035,18 @@ paragraphs.
 @cindex paragraph, filling
 @cindex tree, filling
 @cindex margin
address@hidden M-q
address@hidden M-j
address@hidden C-c M-q
address@hidden C-c M-j
address@hidden C-M-q
address@hidden C-M-j
address@hidden koutliner, M-q
address@hidden koutliner, M-j
address@hidden koutliner, C-c M-q
address@hidden koutliner, C-c M-j
address@hidden koutliner, C-M-q
address@hidden koutliner, C-M-j
 @bkbd{M-q} or @bkbd{M-j} refills a paragraph within a
 cell so that its lines wrap within the current margin settings.
 @bkbd{C-c M-q} or @bkbd{C-c M-j} refills all paragraphs within a
 cell.  @bkbd{C-M-q} or @bkbd{C-M-j} refills all cells within a tree.
-See your InfoDock, XEmacs, or GNU Emacs manual for information on how
-to set the left and right margins.
+See the GNU Emacs manual for information on how to set the left and
+right margins.
 
 @vindex kotl-mode:refill-flag
 @cindex refilling
@@ -3554,7 +4067,7 @@ The Koutliner move and copy commands rearrange entire 
trees.  The
 following two commands, in contrast, exchange the locations of two
 individual cells.
 
address@hidden C-c e
address@hidden koutliner, C-c e
 @cindex cell, transposing
 @cindex cell, exchanging
 @cindex exchanging cells
@@ -3562,13 +4075,13 @@ individual cells.
 @bkbd{C-c e} prompts for two cell addresses and exchanges the cell
 locations.
 
address@hidden C-c t
address@hidden koutliner, C-c t
 @bkbd{C-c t} does not prompt.  It exchanges the current
 and immediatly prior cell, regardless of their levels.  If there is no
 prior cell it exchanges the current and next cell.
 
 @cindex cell, mark and point
address@hidden M-0 C-c t
address@hidden koutliner, M-0 C-c t
 @bkbd{M-0 C-c t} exchanges the cells in which point and mark fall.
 @bkbd{C-c t} with a non-zero numeric prefix argument, N, moves
 the current tree maximally past the next N visible cells.  If there are
@@ -3580,8 +4093,8 @@ fewer visible, it makes the current cell the last cell in 
the outline.
 
 @cindex splitting a cell
 @cindex cell, splitting
address@hidden C-c s
address@hidden C-u C-c s
address@hidden koutliner, C-c s
address@hidden koutliner, C-u C-c s
 One cell may be split into two adjacent sibling cells with @bkbd{C-c
 s}.  This leaves the cell contents preceding point in the current
 cell, minus any trailing whitespace, and moves the contents following
@@ -3592,7 +4105,7 @@ original cell, rather than as its successor.
 All cell attributes in the original cell are propagated to the new one,
 aside from the creation attributes and idstamp.
 
address@hidden C-c +
address@hidden koutliner, C-c +
 @cindex cell, appending
 @cindex appending to a cell
 @cindex attribute, no-fill
@@ -3610,14 +4123,14 @@ This helps maintain any special formatting the appended 
text may have.
 @cindex outline, importing into
 @cindex importing
 @cindex insertion
address@hidden C-x i
address@hidden koutliner, C-x i
 @cindex outline, foreign file
 The paragraphs of another buffer or file may be inserted into a koutline
 as a set of cells by using the @bkbd{C-x i} command.  When prompted,
 you may use a buffer name or file name from which to insert;
 completion is provided for file names only.
 
address@hidden C-u C-x i
address@hidden koutliner, C-u C-x i
 The elements from the original buffer are converted into kcells and
 inserted as the successors of the current cell.  If @bkbd{C-u C-x i}
 is used, they are instead inserted as the initial children of the current
@@ -3736,6 +4249,23 @@ system yet, so that you can get effective views of an 
outline without
 editing it.  Some of these commands affect the current view spec.
 @xref{View Specs}.
 
address@hidden Emacs (as of Emacs 26) will sometimes undo the narrowing of an 
indirect buffer
address@hidden when outline items are hidden or shown.  Don't mention or add 
this feature until
address@hidden this bug is fixed.
address@hidden
address@hidden @cindex cloning
address@hidden @cindex outline, cloning
address@hidden @cindex outline, multiple views
address@hidden @kindex koutliner, C-x 4 c
address@hidden If you want to see multiple perspectives of the same Koutline, 
use
address@hidden @address@hidden 4 address@hidden to create a clone of any 
current Koutline.  Any edits
address@hidden made to the original buffer or the clone are shared but when you 
alter
address@hidden the view in one, it does not affect the other, so you can expand 
and
address@hidden collapse or change viewspecs to create different perspectives.
+
address@hidden
+Here are the major commands for showing and hiding Koutline cells.
+
 @table @asis
 @cindex hide tree
 @cindex tree, show
@@ -3788,11 +4318,11 @@ are visible.  With a prefix arg, also toggle the 
display of blank lines
 between cells.
 @end table
 
address@hidden Action Key, hide or show cell
address@hidden koutliner, Action Key, hide or show cell
 @cindex Action Key, hide or show cell
 @cindex cell, collapse
 @cindex cell, expand
address@hidden address@hidden
address@hidden koutliner, address@hidden
 A click or a press of the Action Key within a cell's body, but not on a
 Hyperbole button, toggles between hiding and showing the tree rooted at
 point.  Try it with either your mouse or with @address@hidden
@@ -3826,7 +4356,7 @@ presently supported and explains how to invoke a view 
spec.  There is no
 user-level means of adding your own view spec characters, so all other
 character codes are reserved for future use.
 
address@hidden C-c C-v
address@hidden koutliner, C-c C-v
 @cindex view spec, setting
 @cindex view spec, changing
 @cindex changing the view spec
@@ -3843,10 +4373,10 @@ view spec is <|ben>.
 @item a
 Show all cell levels and all lines in cells.
 
address@hidden C-c b
address@hidden koutliner, C-c b
 @cindex blank lines, toggle
 @cindex view spec, blank lines
address@hidden C-c b
address@hidden koutliner, C-c b
 @cindex toggling blank lines
 @item b
 Turn on blank lines between cells.  Without this character, blank lines
@@ -3865,7 +4395,7 @@ lines.
 @cindex view spec, ellipses
 @item e
 Show ellipses when some content of a cell or its subtree is hidden.
-Turning this off may not work in Emacs25; nothing will happen.
+This cannot be turned off.
 
 @cindex level
 @cindex cell, hiding levels
@@ -3912,7 +4442,7 @@ Drags}).  A @dfn{klink} is a special implicit link 
button, delimited by
 <> separators, that jumps to a koutline cell.  This section discusses
 klinks.
 
address@hidden Action Key, klink
address@hidden koutliner, Action Key, klink
 @cindex Action Key, klink
 @cindex klink, activating
 @cindex klink referent
@@ -3922,7 +4452,7 @@ window.  If the klink contains a view spec, it will be 
applied when
 the referent is displayed.
 
 @cindex klink, inserting
address@hidden C-c l
address@hidden koutliner, C-c l
 There are a number of easy ways to insert klinks into koutlines.  If you
 have mouse support under Hyperbole, simply click the Action Key within
 the indentation to the left of a cell text.  If you then double click on
@@ -3996,10 +4526,10 @@ The e-mail address of the person who created this cell.
 @item create-time
 The time at which the cell was created.  This is stored in a form that
 allows for easy data comparisons but is displayed in a human readable
-format, such as @samp{Jan 28 18:27:59 CST 2016}.
+format, such as @samp{Jan 28 18:27:59 CST 2017}.
 @end table
 
address@hidden C-c C-i
address@hidden koutliner, C-c C-i
 @cindex attribute, adding
 @cindex attribute, modifying
 @cindex attribute, removing
@@ -4019,12 +4549,12 @@ commands from refilling the cell, even if the variable,
 you from invoking explicit commands that refill the cell.
 @xref{Filling}.
 
address@hidden Assist Key, listing attributes
address@hidden koutliner, Assist Key, listing attributes
 @cindex Assist Key, listing attributes
 @cindex listing attributes
 @cindex outline, attribute list
address@hidden C-c h
address@hidden C-u C-c h
address@hidden koutliner, C-c h
address@hidden koutliner, C-u C-c h
 The attribute lists for the cells in the tree rooted at point may be
 inspected by pressing the Assist Key within the contents of a cell.
 @bkbd{C-c h} prompts for a cell label and displays the cell's
@@ -4066,38 +4596,38 @@ these capabilities back into the mainstream of modern 
computing culture.
 Hyperbole includes a complete, advanced rolo system, HyRolo, for
 convenient management of hierarchical, record-oriented information.
 Most often this is used for contact management but it can quickly be
-adapted to most any record-oriented lookup task, for fast retrieval.
+adapted to most any record-oriented lookup task requiring fast retrieval.
 
 @cindex rolo, buttons in
 Hyperbole buttons may be included within rolo records and then
-manually activated whenever their records are retrieved.
+manually activated whenever their records are retrieved in a search.
 
 @noindent
 The following subsections explain use and basic customization of this
 tool.
 
 @menu
-* Rolo Concepts::
-* Rolo Menu::
-* Rolo Searching::
-* Rolo Keys::
-* Rolo Settings::
+* HyRolo Concepts::
+* HyRolo Menu::
+* HyRolo Searching::
+* HyRolo Keys::
+* HyRolo Settings::
 @end menu
 
address@hidden Rolo Concepts, Rolo Menu, HyRolo, HyRolo
address@hidden   Rolo Concepts
address@hidden HyRolo Concepts, HyRolo Menu, HyRolo, HyRolo
address@hidden   HyRolo Concepts
 
 @cindex rolo file
 @cindex rolo entry
 HyRolo manages and searches rolo files.  A @dfn{rolo file} consists of
-an optional header which starts and ends with a line of equal signs
+an optional header that starts and ends with a line of equal signs
 (at least three equal signs starting at the beginning of a line),
-followed by any non-negative number of rolo records.  You must
-manually add a header to any rolo file if you want it to have one.
+followed by zero or more rolo records.  You must manually add a header
+to any rolo file if you want it to have one.
 
 @noindent
 Here is an example of a simple rolo file.  The date at the end is
-automatically added by the rolo system whenever a new record is added.
+automatically added by HyRolo whenever a new record is added.
 
 @example
 @group
@@ -4107,7 +4637,7 @@ automatically added by the rolo system whenever a new 
record is added.
 ==================================================================
 *   Smith, John       <js@@hiho.com> W708-555-2001  F708-321-1492
         Chief Ether Maintainer, HiHo Industries
-        05/24/2016
+        05/24/2017
 @end group
 @end example
 
@@ -4119,11 +4649,11 @@ character than do their parents.  Top-level entries 
begin with a single
 
 Beyond this initial delimiter, entries are completely free-form text.
 It is best to use a "lastname, firstname" format, however, when adding
-contact entries into a rolo.  Then the rolo system will automatically
-keep your entries alphabetized as you enter them.  You'll also be able
-to resort the entries if you ever need.  This ordering is what the
-rolo will use if you accept the default entry with which it prompts
-you when adding a new entry.
+contact entries into a rolo.  Then HyRolo will automatically keep your
+entries alphabetized as you enter them.  Then you can sort the entries
+if you ever need.  This ordering is what the rolo will use if you
+accept the default entry with which it prompts you when adding a new
+entry.
 
 Any search done on the rolo scans the full text of each entry.  During
 a search, the rolo file header separator lines and anything in between
@@ -4152,7 +4682,7 @@ Thus, searching for Company retrieves all listed 
employees.
 Searching for Manager turns up all Staffer entries.
 
 
address@hidden Rolo Menu, Rolo Searching, Rolo Concepts, HyRolo
address@hidden HyRolo Menu, HyRolo Searching, HyRolo Concepts, HyRolo
 @section   Rolo Menu
 
 @noindent
@@ -4161,12 +4691,13 @@ for searching and maintaining a personal address book.  
It looks like
 so.
 
 @float Image,image:Rolo Menu
address@hidden Menu}
address@hidden @image{im/menu-rolo,,7in,Rolo Menu}
address@hidden Menu}
address@hidden/menu-rolo,,3.5in,HyRolo Menu}
 @end float
 @page
 
 @cindex rolo menu
address@hidden HyRolo menu
 The Rolo/ menu entry on the Hyperbole minibuffer menu provides the same
 set of commands as the menubar menu, with more concise labels.
 The Rolo/ menu offers the following commands:
@@ -4187,13 +4718,13 @@ The Rolo/ menu offers the following commands:
 @group
 Menu Item       Command                 Description
 =====================================================================
-Add             hyrolo-add              Adds a rolo entry
+Add             hyrolo-add              Adds a hyrolo entry
 Display         hyrolo-display-matches  Displays last matches again
-Edit            hyrolo-edit             Edits an existing rolo entry
-Info                                    Displays a rolo manual entry
-Kill            hyrolo-kill             Deletes a rolo entry
+Edit            hyrolo-edit             Edits an existing hyrolo entry
+Info                                    Displays a hyrolo manual entry
+Kill            hyrolo-kill             Deletes a hyrolo entry
 Mail            hyrolo-mail             Mails to an address at point
-Order           hyrolo-sort             Sorts all rolo levels
+Order           hyrolo-sort             Sorts all hyrolo levels
 RegexFind       hyrolo-grep             Finds all entries containing
                                           a regular expression
 StringFind      hyrolo-fgrep            Finds all entries containing
@@ -4202,7 +4733,7 @@ StringFind      hyrolo-fgrep            Finds all entries 
containing
 WordFind        hyrolo-word             Finds all entries containing
                                           a string of whole words
 Yank            hyrolo-yank             Inserts the first matching
-                                          rolo entry at point
+                                          hyrolo entry at point
 =====================================================================
 @end group
 @end example
@@ -4213,8 +4744,8 @@ The search is terminated whenever that number of matches 
is found.
 
 For any of the above commands that prompt for a name such as Edit or
 Add (not the Find commands), you may use the form parent/child to
-locate a child entry below a specific parent.  Hence, for a rolo which
-looked like so:
+locate a child entry below a specific parent.  Hence, for a HyRolo which
+looks like so:
 
 @example
 @group
@@ -4225,25 +4756,25 @@ looked like so:
 @end example
 
 @noindent
-you could refer to the Staffer entry with the following hierarchical
+you can refer to the Staffer entry with the following hierarchical
 notation, Company/Manager/Staffer.  This hierarchical
 notation is not used in search expressions since they search the
-entire rolo anyway.  Thus, "Staffer" as a search pattern will find an entry
+entire HyRolo anyway.  Thus, "Staffer" as a search pattern will find an entry
 containing "Staffer" at any level in a hierarchy, like so:
 
 @example
 ***      Staffer
 @end example
 
address@hidden Rolo Searching, Rolo Keys, Rolo Menu, HyRolo
address@hidden   Rolo Searching
address@hidden HyRolo Searching, HyRolo Keys, HyRolo Menu, HyRolo
address@hidden   HyRolo Searching
 
 @cindex rolo searching
 @cindex searching, rolo
 @cindex menu item, RegexFind
 @cindex menu item, WordFind
 @cindex menu item, StringFind
address@hidden Menu}, for the list of rolo search commands.  In this
address@hidden Menu}, for the list of HyRolo search commands.  In this
 section, the menu item names from the minibuffer menu are used to
 refer to each command.
 
@@ -4300,8 +4831,8 @@ you should contact.
 @end example
 
 
address@hidden Rolo Keys, Rolo Settings, Rolo Searching, HyRolo
address@hidden   Rolo Keys
address@hidden HyRolo Keys, HyRolo Settings, HyRolo Searching, HyRolo
address@hidden   HyRolo Keys
 
 @cindex hyrolo menu
 @cindex rolo keys
@@ -4428,8 +4959,8 @@ Once you have found an entry of interest and you want to 
remove the
 rolo match buffer, use @bkbd{q} to quit.  This will restore your
 current frame to its state prior to the rolo search.
 
address@hidden Rolo Settings,  , Rolo Keys, HyRolo
address@hidden   Rolo Settings
address@hidden HyRolo Settings,  , HyRolo Keys, HyRolo
address@hidden   HyRolo Settings
 
 @vindex hyrolo-file-list
 @cindex rolo, personal
@@ -4445,24 +4976,54 @@ command on the rolo menu adds entries.
 
 Hyperbole releases earlier than 4.17 used a different file name for the
 personal rolo.  If such a file exists, you will be prompted to rename
-it whenever the Rolo system is loaded.
+it whenever the HyRolo system is loaded.
 
 @cindex BBDB
 @cindex Big Brother DataBase
 If you use the Big Brother DataBase (BBDB) Emacs package to capture
 email addresses and store contact information, the rolo automatically
-works with it.  If BBDB is loaded before the rolo, then your
+works with it.  If the BBDB package is loaded before HyRolo, then your
 @code{bbdb-file} of contacts is added as the second entry in
 @code{hyrolo-file-list} and will be searched automatically for any matches by
 the rolo find commands.  Presently there is no support for editing
 BBDB entries, just finding them.
 
-For finding matches in the BBDB file only, there are the commands
+For finding matches within only BBDB, there are the commands
 @code{hyrolo-bbdb-fgrep} (string finding) and @code{hyrolo-bbdb-grep}
 (regular expression finding).  They may be bound to keys if desired.
 
address@hidden Google Contacts
address@hidden Gmail Contacts
+If you use Google/Gmail Contacts, you can configure the HyRolo to
+query your Google Contacts for matches.  First you must download and
+install the external @file{google-contacts} package using the Emacs
+Package Manager.  Then you must install the non-Emacs GNU Privacy
+Guard (GPG) package from @url{https://gnupg.org} so that
+the @file{gpg} or @file{gpg2} executable is in your command-line
+search path.  Once these are in place, either restart Emacs or
+use @bkbd{M-x hyrolo-initialize-file-list @key{RET}} to add Google
+Contacts to your searches.
+
+When you next do a search, you will be prompted for your Google
+Contacts password and may also have to enter an authorization code
+that will be displayed on your screen.  After authorization, you may
+at times be re-prompted for your password.
+
address@hidden hyrolo-google-contacts-fgrep
address@hidden hyrolo-google-contacts-grep
+For finding matches within only Google Contacts, there are the commands
address@hidden (string finding) and
address@hidden (regular expression finding).  They
+may be bound to keys if desired.
+
address@hidden hyrolo-google-contacts-flag
+Because Google can require frequent reauthorization to search your
+contacts, there is a flag, @code{hyrolo-google-contacts-flag}, which
+when set to @samp{nil} disables searching of your Google Contacts.
+
+
 @noindent
-Below are the rest of the settings available with the rolo:
+Below are the rest of the settings available with HyRolo:
 
 @vtable @code
 
@@ -4473,7 +5034,7 @@ display type, the rolo uses the value of 
@code{hyrolo-highlight-face} as
 the face which highlights search matches.
 
 @item hyrolo-kill-buffers-after-use
-Rolo file buffers are left around after they are searched, on the
+HyRolo file buffers are left around after they are searched, on the
 assumption that another search is likely to follow within this emacs
 session.  You may wish to change this behavior with the following
 setting: @code{(setq hyrolo-kill-buffers-after-use t)}.
@@ -4527,16 +5088,16 @@ There is never a need to learn a complicated query 
language.
 @cindex restoring windows
 @cindex saving window configurations
 @vindex file, hywconfig.el
-Hyperbole includes the @file{hywconfig.el} library which lets you save and
-restore window configurations, address@hidden the layout of windows and buffers
-displayed within an emacs frame.  This is useful to save a particular
-working context and then to jump back to it at a later time during an
-emacs session.  It is also useful during demonstrations to display many
-informational artifacts all at once, e.g.@: all of the windows for a
-particular subsystem.  None of this information is stored between emacs
-sessions, so your window configurations will last through only a single
-session of use.  Each window configuration is tied to the emacs frame
-in which it is created.
+This chapter explains Hyperbole's @file{hywconfig.el} library.  It lets you
+save and restore window configurations, address@hidden the layout of windows 
and
+buffers displayed within an emacs frame.  This is useful to save a
+particular working context and then to jump back to it at a later time
+during an emacs session.  It is also useful during demonstrations to
+display many informational artifacts all at once, e.g.@: all of the windows
+for a particular subsystem.  None of this information is stored between
+emacs sessions, so your window configurations will last through only a
+single session of use.  Each window configuration is tied to the emacs
+frame in which it is created.
 
 The hywconfig library offers two independent ways of managing window
 configurations.  The first way associates a name with each stored
@@ -4548,7 +5109,7 @@ the last entry is encountered.  Simply stop when the 
desired
 configuration is displayed.
 
 The Win/ menu entry on the Hyperbole top-level menu displays a menu of
-window configuration commands:
+hywconfig window configuration commands:
 
 @verbatim
 WinConfig>  AddName  DeleteName  RestoreName  PopRing  SaveRing  YankRing
@@ -4583,14 +5144,11 @@ YankRing        hywconfig-yank-pop          Restore the 
next wconfig
 @end group
 @end example
 
-The easiest method is to save and restore window configurations by
-name, but it requires that you input the chosen name from the
-keyboard.  Alternately, the ring commands permit saves and restores
-using only the mouse, if desired.  An earlier chapter (@pxref{Smart
-Keys}) mentions how to save and restore window configurations with the
-Smart Keys.  Since the ring commands are a bit more complex than their
-by-name counterparts, the following paragraphs explain them in more
-detail.
+The easiest method to save and restore window configurations shown here is
+by name, but it requires that you type the chosen name.  Instead, the ring
+commands permit saves and restores using only the mouse.  Since the ring
+commands are a bit more complex than their by-name counterparts, the
+following paragraphs explain them in more detail.
 
 @vindex kill-ring
 HyWconfig creates a ring structure that operates just like the Emacs
@@ -4669,6 +5227,15 @@ any personal Hyperbole type definitions or key bindings 
you might have.
 It is run after Hyperbole support code is loaded but before Hyperbole is
 initialized, i.e. prior to keyboard and mouse bindings.
 
address@hidden action-key-depress-hook
address@hidden assist-key-depress-hook
+Run after an Action or Assist Mouse Key depress is detected.
+
address@hidden action-key-release-hook
address@hidden assist-key-release-hook
+Run after an Action or Assist Mouse Key release is detected, before
+any associated action is executed.
+
 @vindex hbut:current
 @item action-act-hook
 Run before each Hyperbole button activation.
@@ -5024,8 +5591,8 @@ intervention is required.
 @node Operational and Storage Formats, Programmatic Button Creation, Button 
Label Normalization, Explicit Button Technicalities
 @subsection  Operational and Storage Formats
 
address@hidden explicit button, formats
address@hidden explicit button, storage
address@hidden explicit button formats
address@hidden explicit button storage
 @cindex storage manager
 @cindex button attributes
 @vindex hbut:current
@@ -5165,9 +5732,6 @@ with a set of values, called arguments, is an 
@dfn{action}.
 A request to a Hyperbole button to perform its action.
 Ordinarily the user presses a key which selects and activates a button.
 
address@hidden Ange-ftp
-See @b{Tramp}.
-
 @item Argument
 A button-specific value fed to a Hyperbole type specification when the
 button is activated.
@@ -5269,13 +5833,13 @@ See @code{Kcell}.
 The set of koutline cells which share a common parent cell and thus, are one
 level deeper than the parent.
 
address@hidden Chord Keyboard
-A keyboard which supports pressing multiple keys simultaneously to produce
-a unique chord keystroke for issuing commands to a program.  In Engelbart's
-Augment system, mouse keys were used as modifiers for a 5-key chord
-keyboard to enable direct manipulation of objects on screen.  Hyperbole
-supports similar behavior with its @code{hmouse-mod-mode}.  @xref{Smart Key
-Modifiers}.
address@hidden @item Chord Keyboard
address@hidden A keyboard which supports pressing multiple keys simultaneously 
to produce
address@hidden a unique chord keystroke for issuing commands to a program.  In 
Engelbart's
address@hidden Augment system, mouse keys were used as modifiers for a 5-key 
chord
address@hidden keyboard to enable direct manipulation of objects on screen.  
Hyperbole
address@hidden supports similar behavior with its @code{hmouse-mod-mode}.  
@xref{Smart
address@hidden Mouse Key Modifiers}.
 
 @item Class
 A group of functions and variables with the same prefix in their names,
@@ -5302,9 +5866,6 @@ location.
 @item Environment
 See @b{Hyperbole Environment}.
 
address@hidden EFS
-See @b{Tramp}
-
 @item Explicit Button
 A button created and managed by Hyperbole, associated with a specific
 action type.  By default, explicit buttons are delimited like
@@ -5333,6 +5894,9 @@ default, this is the same as the user's personal button 
file.
 @item Global Button File
 See @b{Button File, personal} and @b{Global Button}.
 
address@hidden Grid
+See @b{Windows Grid}.
+
 @findex run-hooks
 @item Hook Variable
 A variable that permits customization of an existing function's
@@ -5365,7 +5929,8 @@ followed actually take you to the works themselves.
 @item HyRolo
 HyRolo, the Hyperbole record/contact manager, provides rapid lookup of
 multi-line, hierarchically ordered free form text records.  It can
-also lookup records from the Big Brother DataBase (BBDB) package.
+also lookup records from Google/GMail Contacts and the Big Brother
+DataBase (BBDB) package.
 
 @item Implicit Button
 A button recognized contextually by Hyperbole.  Such buttons contain no
@@ -5378,16 +5943,16 @@ to documents created and managed by tools other than 
Hyperbole, for
 example, programming documentation.  @b{Ibtype} is a synonym for
 implicit button type.  See also @b{system encapsulation}.
 
address@hidden InfoDock
address@hidden InfoDock
-InfoDock is an integrated productivity toolset for software engineers
-and knowledge workers.  It is presently built atop XEmacs and is no
-longer maintained.  An older version from 1999 may be found at
-infodock.sf.net.  InfoDock has all the power of emacs, but with an
-easier to use and more comprehensive menu-based user interface.  Most
-objections people raise to using emacs have already been addressed in
-InfoDock.  InfoDock was meant for people who wanted a complete,
-pre-customized environment in one package.
address@hidden @cindex InfoDock
address@hidden @item InfoDock
address@hidden InfoDock is an integrated productivity toolset for software 
engineers
address@hidden and knowledge workers.  It is presently built atop XEmacs and is 
no
address@hidden longer maintained.  An older version from 1999 may be found at
address@hidden infodock.sf.net.  InfoDock has all the power of emacs, but with 
an
address@hidden easier to use and more comprehensive menu-based user interface.  
Most
address@hidden objections people raise to using emacs have already been 
addressed in
address@hidden InfoDock.  InfoDock was meant for people who wanted a complete,
address@hidden pre-customized environment in one package.
 
 @item Instance Number
 A colon prefaced number appended to the label of a newly created button
@@ -5440,14 +6005,19 @@ See @b{Augment}.
 See @b{Link} or @b{Cell}.
 
 @item The OO-Browser
-The OO-Browser is a multi-windowed, interactive object-oriented class browser
-similar in use to the well-known Smalltalk browsers.  It runs inside Emacs.
-It is unique in a number of respects foremost of which is that it works well
-with most major object-oriented languages in use today.  You can switch from
-browsing in one language to another in a few seconds.  It provides both
-textual views within an editor and graphical views under the X window system
-and Windows.  It includes support for C, C++, Common Lisp and its Object
-System (CLOS), Eiffel, Java, Objective-C, Python and Smalltalk.
+The GNU OO-Browser is a multi-windowed, interactive object-oriented class
+browser similar in use to the well-known Smalltalk browsers.  It runs
+inside Emacs.  It is unique in a number of respects foremost of which is
+that it works well with most major object-oriented languages in use today.
+You can switch from browsing in one language to another in a few seconds.
+It provides both textual views within an editor and graphical views under
+the X window system and Windows.  It includes support for C, C++, Common
+Lisp and its Object System (CLOS), Eiffel, Java, Objective-C, Python and
+Smalltalk.
+
+Hyperbole provides the mouse support for the OO-Browser, providing Smart
+Keys that utilize the OO-Browser's capabilities both when it is displayed
+on screen and when editing code.
 
 @item Outline
 See @b{Koutline}.
@@ -5471,7 +6041,7 @@ See @b{Link}.
 A file or directory on a system not shared within the local area network.
 The built-in Emacs library, @b{Tramp}, handles remote pathnames and
 Hyperbole uses it to enable viewing and editing of remote paths of the form:
address@hidden/<user>@@<host>:<path>} as well as web URLs.  Use the
address@hidden/<protocol>:<user>@@<host>:<path>} as well as web URLs.  Use the
 Cust/Find-File-URLs menu option to enable this feature.
 
 @item Rolo
@@ -5528,12 +6098,12 @@ defined to recognize and activate button-type 
constructs managed by the
 other system.
 
 @item Tramp
-A remote file access library built-in to Emacs.  It does similar things as
-the older EFS and ange-ftp packages but uses more secure transfer and works
-with more types of hosts.  It allows one to use remote pathnames that are
-accessible via Internet protocols just like other pathnames, for example when
-finding a file.  Hyperbole recognizes pathnames of the form,
address@hidden/<user>@@<host>:<path>} and web URLs.
+A remote file access library built-in to Emacs.  It uses secure
+transfer and works with many types of hosts.  It allows you to use
+remote pathnames that are accessible via Internet protocols just like
+other pathnames, for example when finding a file.  Hyperbole
+recognizes pathnames of the form,
address@hidden/<protocol>:<user>@@<host>:<path>} and web URLs.
 
 @item Tree
 The set of cells in a koutline that share a common root cell, including
@@ -5558,6 +6128,11 @@ active for a buffer, the view spec appears within the 
modeline like so,
 An Emacs window displays a single Emacs buffer within a single frame.
 Frames may contain many windows.
 
address@hidden Windows Grid
+A feature of HyControl invoked with @bkbd{@@} which creates, lays out
+and populates a grid of a specified size of new Emacs windows, e.g. 4 rows
+by 3 columns, each displaying a different buffer chosen by a set of user
+specifiable filters.
 @end table
 
 @node Setup, Global Key Bindings, Glossary, Top
@@ -5600,15 +6175,16 @@ the GNU Emacs Manual}).
 @noindent
 Below are the lines to add:
 
address@hidden
address@hidden
 (require 'package)
-(setq package-enable-at-startup nil) ;; Prevent double loading of libraries
+;; Prevent double loading of libraries
+(setq package-enable-at-startup nil)
 (package-initialize)
 (unless (package-installed-p 'hyperbole)
   (package-refresh-contents)   
   (package-install 'hyperbole))
 (require 'hyperbole)
address@hidden smalllisp
address@hidden lisp
 
 Now save the file and restart Emacs.  Hyperbole will then be
 downloaded and compiled for use with your version of Emacs; give it a
@@ -5635,9 +6211,11 @@ You can invoke Hyperbole's commands in one of three ways:
 @item use the Hyperbole entry on your menubar;
 
 @findex hyperbole
address@hidden type @bkbd{C-h h} or @bkbd{M-x hyperbole @key{RET}} to bring up 
the Hyperbole minibuffer menu;
address@hidden type @bkbd{C-h h} or @bkbd{M-x hyperbole @key{RET}} to display 
the Hyperbole minibuffer menu;
 
address@hidden use a specific Hyperbole command such as the Action Key, 
@address@hidden, on a pathname to display the associated file or directory.
address@hidden use a specific Hyperbole command, for example, a press of
address@hidden@key{RET}} on a pathname to display the associated file or
+directory.
 @end itemize
 
 Use @bkbd{C-h h d d} for an interactive demonstration of standard Hyperbole
@@ -5703,7 +6281,7 @@ below the Hyperbole menubar menu, as seen here.
 
 @float Image,image:Customize Menu
 @caption{Hyperbole Customize Menu}
address@hidden @image{im/menu-customization,,,Hyperbole Customize Menu}
address@hidden/menu-customization,,3.5in,Hyperbole Customize Menu}
 @end float
 @sp 1
 
@@ -5718,10 +6296,9 @@ However, if you like to customize your environment 
extensively, there
 are many additional Hyperbole customization options that may be 
 changed with the Emacs customization interface,
 @pxref{Easy Customization,,Easy Customization Interface,emacs, the GNU
-Emacs Manual}.
-When you save any changes within this interface, the changes are saved
-permanently to your personal Emacs initialization file and are available
-in future Emacs sessions.
+Emacs Manual}.  When you save any changes within this interface, the
+changes are saved permanently to your personal Emacs initialization
+file and are available in future Emacs sessions.
 
 @findex customize-browse
 @cindex menu item, Cust/All-Options
@@ -5729,7 +6306,7 @@ in future Emacs sessions.
 Use Cust/All-Options @bkbd{C-h h c a} to display an expandable tree of
 customizable Hyperbole options.  Hyperbole's customizations are
 further grouped into several sub-categories, one for the Koutliner,
-one for the Rolo, etc.  You can select either an entire category or a
+one for the HyRolo, etc.  You can select either an entire category or a
 specfic option and they will appear in another window for editing.
 Simply follow the instructions on screen and then press the ``Apply
 and Save'' button to make any changes permanent.
@@ -5744,88 +6321,76 @@ The following sections discuss the customization 
options most likely to
 be of interest to users.
 
 @menu
-* Web Search Engines::
-* Using URLs with Find-File::
+* Referent Display::
 * Internal Viewers::
 * External Viewers::
-* Invisible Text Searches::
 * Link Variable Substitution::
+* Web Search Engines::
+* Using URLs with Find-File::
+* Invisible Text Searches::
 * Button Colors::
 @end menu
 
address@hidden Web Search Engines, Using URLs with Find-File, Customization, 
Customization
address@hidden Web Search Engines
-
address@hidden menu, Find/Web
address@hidden menu, Web
address@hidden menu, Cust/Web-Search
address@hidden C-h h c w
address@hidden C-h h f w
address@hidden hyperbole-web-search-alist
address@hidden search engines menu
address@hidden web search menu
address@hidden customizing web search menu
-The Find/Web menu offers quick access to major web search engines.  It
-is typically bound to @bkbd{C-c /} or if not, then @bkbd{C-h h f w} is
-always available.  Your standard web browser will be used to return
-the search results.  You can change which browser is used
-with @bkbd{C-h h c w}, the Cust/Web-Search menu. Advanced users can
-change the search engines listed in the Find/Web menu with @bkbd{M-x
-customize-variable @key{RET} hyperbole-web-search-alist @key{RET}}.
-Changes are automatically reflected in the Hyperbole menus once applied.
-Remember each search engine name must begin with a unique letter and
-each URL must have a %s format field indicating where to place the web
-search term when a search is performed.
-
-Advanced users can
-change the search engines listed by editing the option,
address@hidden, with @bkbd{M-x customize-variable
address@hidden hyperbole-web-search-alist @key{RET}}.  Remember each search 
engine name
-must begin with a unique letter and each URL must have a %s format
-field indicating where to place the web search term when a search is
-performed.
-
address@hidden Using URLs with Find-File, Internal Viewers, Web Search Engines, 
Customization
address@hidden Using URLs with Find-File
-
address@hidden find-file
address@hidden find-file, browsing URLs
address@hidden browsing URLs
address@hidden URLs, using with find-file
address@hidden web pages, displaying
address@hidden remote pathnames
-Hyperbole always recognizes URLs within buffers when the Action Key is
-pressed on them.  But sometimes it is useful to enter a URL at a prompt
-and have it displayed.  Hyperbole can recognize ftp and www URLs given to
-the @code{find-file} command (or any other @code{find-file-*} commands).
-But because there is added overhead with this feature, it is not enabled by
-default.
address@hidden Referent Display, Internal Viewers, Customization, Customization
address@hidden Referent Display
address@hidden hpath:display-where
address@hidden referent display
address@hidden link display
address@hidden display where
address@hidden where to display
+Hyperbole lets you control where link referents are displayed and even
+what Emacs function or external program is used to display them.
+There are three categories of referents, each with its own display
+setting:
address@hidden
+Referent Category             Variable Setting
+========================================================================
+Internal Standard Display     hpath:display-where
+Internal Custom Display       hpath:internal-display-alist
+External Display              hpath:external-display-alist
 
address@hidden menu item, Find-File-URLs
address@hidden menu item, Find-File-Accepts-URLs
-To enable the feature, use the Hyperbole menu item Cust/Find-File-URLs
-(or Find-File-Accepts-URLs on the Hyperbole/Customize pulldown
-menu).  Either of these toggles acceptance of URLs.  When enabled the
-string, URLs, appears in the parenthesized minor-mode section of the
-modeline.
address@hidden example
 
address@hidden hpath:find-file-urls-mode
address@hidden enabling URLs in find-file
address@hidden browsing URLs in find-file
-To enable this feature each time you start the editor, add the following to
-your personal initialization file: @code{(hpath:find-file-urls-mode 1)}.
address@hidden menu, Cust/Referents
address@hidden C-h h c r
+Regular file links are displayed in an Emacs window specified by the
address@hidden:display-where} setting which may be changed with the 
Cust/Referents
address@hidden h c r} menu.
 
address@hidden abbreviated URLs
address@hidden URLs, abbreviated
address@hidden Tramp
-Both full URLs and abbreviated ones, like @file{www.gnu.org}, are
-recognized.  File name completion does not work with URLs thus you
-have to type or paste in the entire URL.  This feature will work only
-if you have the Tramp Emacs Lisp package installed; if you don't have
-Tramp, an error message will be displayed when you try to enable
-find-file URLs.
address@hidden
+Available options are:
+
address@hidden @emph
address@hidden @bullet{} Any-Frame
+Display in the selected window of another existing frame
address@hidden @bullet{} Current-Win
+Display in the selected (current) window
address@hidden @bullet{} Diff-Frame-One-Win
+Display in the selected window of another existing frame, deleting its other 
windows
address@hidden @bullet{} New-Frame
+Display in a new single window frame
address@hidden @bullet{} Other-Win
+Display in another, possibly new window of the selected frame (this is
+the default)
address@hidden @bullet{} Single-Win
+Display in  a window of the selected frame and delete its other windows
address@hidden table
+
address@hidden
address@hidden
+Alternatively, you can use the Hyperbole menubar menu as shown here:
+
address@hidden Image,image:Menu-Display-Referents
address@hidden Referents Menu}
address@hidden/menu-display-referents,6in,,Display Referents Menu}
address@hidden float
address@hidden 1
+
address@hidden
+Continue reading the next sections for information on custom Internal
+and External Viewers for link referencts.
 
address@hidden Internal Viewers, External Viewers, Using URLs with Find-File, 
Customization
address@hidden Internal Viewers, External Viewers, Referent Display, 
Customization
 @subsection  Internal Viewers
 @vindex hpath:internal-display-alist
 @cindex file display function
@@ -5860,7 +6425,7 @@ available with InfoDock.
 @xref{External Viewers}, for instructions on associating file names with
 external, window-system specific viewers.
 
address@hidden External Viewers, Invisible Text Searches, Internal Viewers, 
Customization
address@hidden External Viewers, Link Variable Substitution, Internal Viewers, 
Customization
 @subsection  External Viewers
 @findex hpath:get-external-display-alist
 @vindex hpath:external-display-alist-macos
@@ -5902,24 +6467,7 @@ On systems that have a MIME mailcap file (see
 set of external viewer associations when none are found
 within @code{hpath:get-external-display-alist}.
 
address@hidden Invisible Text Searches, Link Variable Substitution, External 
Viewers, Customization
address@hidden Invisible Text Searches
-
address@hidden menu item, Isearch-Invisible
address@hidden menu item, Toggle-Isearch-Invisible
address@hidden isearch
address@hidden search
-This is largely for outline modes such as the Koutliner.  By default,
-character-by-character interactive search on @bkbd{C-s} will search
-through invisible/hidden text, making the text temporarily visible
-until point moves past that hidden part.  When a search match is
-selected, the surrounding text remains visible.
-
-This command toggles that setting (turns it off if a prefix
-argument less than or equal to 0 is given) and makes searches look at
-only visible text.
-
address@hidden Link Variable Substitution, Button Colors, Invisible Text 
Searches, Customization
address@hidden Link Variable Substitution, Web Search Engines, External 
Viewers, Customization
 @subsection  Link Variable Substitution
 @vindex hpath:variables
 @cindex environment variables
@@ -5944,38 +6492,150 @@ is wholly transparent to the user; it is explained 
here simply to help
 you in deciding whether or not to modify the value of
 @code{hpath:variables}.
 
address@hidden Button Colors,  , Link Variable Substitution, Customization
address@hidden Web Search Engines, Using URLs with Find-File, Link Variable 
Substitution, Customization
address@hidden Web Search Engines
+
address@hidden menu, Find/Web
address@hidden menu, Web
address@hidden menu, Cust/Web-Search
address@hidden C-h h c w
address@hidden C-h h f w
address@hidden hyperbole-web-search-alist
address@hidden search engines menu
address@hidden web search menu
address@hidden customizing web search menu
+The Find/Web menu offers quick access to major web search engines.  It
+is typically bound to @bkbd{C-c /} or if not, then @bkbd{C-h h f w} is
+always available.  Your standard web browser will be used to return
+the search results.
+
+Advanced users can change the search engines listed in the Find/Web
+menu with @bkbd{M-x customize-variable @key{RET}
+hyperbole-web-search-alist @key{RET}}.  Changes are automatically
+reflected in the Hyperbole menus once applied.  Remember each search
+engine name must begin with a unique letter and each URL must have a
+%s format field indicating where to place the web search term when a
+search is performed.
+
address@hidden
+You can change which browser is used with @bkbd{C-h h c w}, the
+Cust/Web-Search menu.  Below is the equivalent Hyperbole menubar menu.
+
address@hidden Image,image:Web-Search-Browser-Menu
address@hidden Search Browser Menu}
address@hidden/menu-web-search-browser,6in,,Web Search Browser Menu}
address@hidden float
address@hidden 1
+
address@hidden Using URLs with Find-File, Invisible Text Searches, Web Search 
Engines, Customization
address@hidden Using URLs with Find-File
+
address@hidden find-file
address@hidden find-file, browsing URLs
address@hidden browsing URLs
address@hidden URLs, using with find-file
address@hidden web pages, displaying
address@hidden remote pathnames
+Hyperbole always recognizes URLs within buffers when the Action Key is
+pressed on them.  But sometimes it is useful to enter a URL at a prompt
+and have it displayed.  Hyperbole can recognize ftp and www URLs given to
+the @code{find-file} command (or any other @code{find-file-*} commands).
+But because there is added overhead with this feature, it is not enabled by
+default.
+
address@hidden menu item, Find-File-URLs
address@hidden menu item, Find-File-Accepts-URLs
+To enable the feature, use the Hyperbole menu item Cust/Find-File-URLs
+(or Find-File-Accepts-URLs on the Hyperbole/Customize pulldown
+menu).  Either of these toggles acceptance of URLs.  When enabled the
+string, URLs, appears in the parenthesized minor-mode section of the
+modeline.
+
address@hidden hpath:find-file-urls-mode
address@hidden enabling URLs in find-file
address@hidden browsing URLs in find-file
+To enable this feature each time you start the editor, add the
+following to your personal initialization file after initializing
+Hyperbole: @code{(hpath:find-file-urls-mode 1)}.
+
address@hidden abbreviated URLs
address@hidden URLs, abbreviated
address@hidden Tramp
+Both full URLs and abbreviated ones, like @file{www.gnu.org}, are
+recognized.  File name completion does not work with URLs; you
+have to type or paste in the entire URL.  This feature will work only
+if you have the builtin Tramp Emacs Lisp package; if you don't have
+Tramp, an error message will be displayed when you try to enable
+find-file URLs.
+
address@hidden C-h h c u
address@hidden menu, Cust/URL-Display
+The web browser used to display URLs may be set with the minibuffer
+menu Cust/URL-Display @bkbd{C-h h c u} or with this Hyperbole menubar
+menu.
+
address@hidden Image,image:URL-Browser-Menu
address@hidden Browser Menu}
address@hidden/menu-url-browser,6in,,URL Browser Menu}
address@hidden float
address@hidden 1
+
address@hidden Invisible Text Searches, Button Colors, Using URLs with 
Find-File, Customization
address@hidden Invisible Text Searches
+
address@hidden menu item, Isearch-Invisible
address@hidden menu item, Toggle-Isearch-Invisible
address@hidden isearch
address@hidden search
+This is largely for outline modes such as the Koutliner.  By default,
+character-by-character interactive search on @bkbd{C-s} will search
+through invisible/hidden text, making the text temporarily visible
+until point moves past that hidden part.  When a search match is
+selected, the surrounding text remains visible.
+
+This command toggles that setting (turns it off if a prefix
+argument less than or equal to 0 is given) and makes searches look at
+only visible text.
+
address@hidden Button Colors,  , Invisible Text Searches, Customization
 @subsection  Configuring Button Colors
address@hidden XEmacs support
 @cindex Emacs support
 @cindex button highlighting
address@hidden highlighting buttons
 @cindex button flashing
address@hidden flashing buttons
 @vindex file, hui-ep*.el
 @vindex file, hsettings.el
 @findex hproperty:cycle-but-color
-When Hyperbole is run under a window system together with InfoDock,
-Emacs, or XEmacs, it automatically highlights any explicit buttons in
-a buffer and makes them flash when selected.  The main setting you may
-want change is the selection of a color (or style) for button
-highlighting and button flashing.  See the @file{hui-*-b*.el} files for
-lists of potential colors and the code which supports this behavior.  A
-call to @code{(hproperty:cycle-but-color)} in the @file{hsettings.el}
-file changes the color used to highlight and flash explicit buttons.
-
address@hidden button emphasis
address@hidden hproperty:but-emphasize-p
-Additionally, if @code{hproperty:but-emphasize-p} is set to @samp{t},
-then whenever the mouse pointer moves over an explicit button, it will
-be emphasized in a different color or style.  This emphasis is in
-addition to any non-mouse-sensitive button highlighting.
+When Hyperbole is run under a window system, it automatically
+highlights any explicit buttons in a buffer and makes them flash when
+selected.  The main setting you may want change is the selection of a
+color (or style) for button highlighting and button flashing.  See
+the @file{hui-*-b*.el} files for lists of potential colors and the
+code which supports this behavior.  A call
+to @code{(hproperty:cycle-but-color)} in the @file{hsettings.el} file
+changes the color used to highlight and flash explicit buttons.
+
address@hidden hproperty:but-highlight-flag
+Whether or not buttons are highlighted is controlled
+by @code{hproperty:but-highlight-flag}, which defaults to @samp{t}.
+To disable highlighting, change this setting in @file{hsettings.el} or
+use Hyperbole menu item, Cust/All-Options, and select the Hyperbole
+Buttons group to edit its options.
 
address@hidden button highlighting, forcing
 @findex hproperty:but-create
 If you read in a file with explicit buttons before you load Hyperbole,
 these buttons won't be highlighted.  Load Hyperbole and then use
 @bkbd{M-x hproperty:but-create @key{RET}} to highlight the buttons in
 the current buffer.
 
address@hidden button emphasis
address@hidden hproperty:but-emphasize-flag
+Additionally, if @code{hproperty:but-emphasize-flag} is set to @samp{t},
+then whenever the mouse pointer moves over an explicit button, it will
+be emphasized in a different color or style.  This emphasis is in
+addition to any non-mouse-sensitive button highlighting.
+
 
 @node Global Key Bindings, Koutliner Keys, Setup, Top
 @appendix Global Key Bindings
@@ -5985,10 +6645,21 @@ the current buffer.
 This appendix summarizes all of Hyperbole's global key bindings and
 whether each overrides any existing binding or not.  It also describes
 how to temporarily disable these bindings and how to manage whether
-Hyperbole override local, mode-specific key bindings that hide
+Hyperbole overrides local, mode-specific key bindings that hide
 global Hyperbole keys.
 
-Here are descriptions of Hyperbole's default keyboard key bindings:
+These bindings can be viewed and edited from either the
+Cust/KeyBindings minibuffer menu or from the Hyperbole menubar menu as
+shown here:
+
address@hidden Image,image:Change-Key-Bindings
address@hidden Key Bindings Menu}
address@hidden/menu-key-bindings,6in,,Change Key Bindings}
address@hidden float
address@hidden 1
+
address@hidden
+Below are descriptions of Hyperbole's default keyboard key bindings:
 
 @table @asis
 @cindex key binding, address@hidden
@@ -6015,6 +6686,20 @@ associated search.  This binding is made only if the key 
is not bound
 prior to loading Hyperbole; otherwise, the Find/Web minibuffer menu
 item, @bkbd{C-h h f w}, will do the same thing.
 
address@hidden C-c @@
address@hidden key binding, C-c @@
address@hidden windows grid
address@hidden grid of windows
address@hidden C-c @@
+Display a grid of windows in the selected frame, sized according to the
+prefix argument.  The left digit of the argument is the number of grid rows
+and the right digit is the number of grid columns.  The argument is
+prompted for if not given.  This binding is made only if the key is not
+bound prior to loading Hyperbole.
+
+For further details, see the @bkbd{@@} key binding description
+in @ref{HyControl}.
+
 @cindex key binding, C-c C-r
 @kitem C-c C-r
 Button Rename: Rename an explicit button. This binding is made only if
@@ -6068,22 +6753,37 @@ and restart Emacs.  Then you will have to choose the 
Hyperbole commands
 that you want to use and bind those to keys.
 
 @vindex file, .emacs
address@hidden hkey-toggle-bindings
address@hidden hyperbole-toggle-bindings
 @cindex change key bindings
 @cindex toggle key bindings
 @cindex key bindings, toggle
 @cindex disable Hyperbole
 @kindex C-c h
-If you ever have a need to temporarily disable the Hyperbole keyboard
-and mouse bindings, use the @code{hkey-toggle-bindings} command.  It
-switches between the Hyperbole key bindings and those set prior to
-loading Hyperbole and then back again if invoked once more.  There is
-no default key binding for this command; use @bkbd{M-x
-hkey-toggle-bindings @key{RET}}.  Alternatively, you may select a key
-and bind it as part of any setting of @code{hyperbole-init-hook}
+If you ever have a need to temporarily disable the Hyperbole keyboard and
+mouse bindings, use the @code{hyperbole-toggle-bindings} command.  It
+switches between the Hyperbole key bindings and those set prior to loading
+Hyperbole and then back again if invoked once more.  There is no default
+key binding for this command; use @bkbd{M-x hyperbole-toggle-bindings
address@hidden  Alternatively, you may select a key and bind it as part of any
+setting of @code{hyperbole-init-hook} within your personal @file{~/.emacs}
+file.  For example, @code{(add-hook 'hyperbole-init-hook (lambda ()
+(global-set-key "\C-ch" 'hyperbole-toggle-bindings)))}.
+
address@hidden file, .emacs
address@hidden hmouse-toggle-bindings
address@hidden mouse key toggle
address@hidden Smart Mouse Key toggle
address@hidden C-c t
+If you want to restore only the mouse bindings that existed before
+Hyperbole was loaded, use the @code{hmouse-toggle-bindings} command.
+It switches between the Hyperbole mouse key bindings and those set
+prior to loading Hyperbole and then back again if invoked once more.
+There is no default key binding for this command; use @bkbd{M-x
+hmouse-toggle-bindings @key{RET}}.  Alternatively, you may select a
+key and bind it as part of any setting of @code{hyperbole-init-hook}
 within your personal @file{~/.emacs} file.  For example, @code{(add-hook
-'hyperbole-init-hook (lambda () (global-set-key "\C-ch"
-'hkey-toggle-bindings)))}.
+'hyperbole-init-hook (lambda () (global-set-key "\C-ct"
+'hmouse-toggle-bindings)))}.
 
 @vindex hkey-init-override-local-keys
 @cindex overriding local keys
@@ -6716,8 +7416,9 @@ are searched in order.
 * Thing Selection::
 * Side-by-Side Window Resizing::
 * Modeline Clicks and Drags::
-* Smart Mouse - Drags between Windows::
-* Smart Mouse - Drags within a Window::
+* Smart Mouse Drags between Windows::
+* Smart Mouse Drags within a Window::
+* Smart Mouse Drags outside a Window::
 @end menu
 
 @node Minibuffer Menu Activation, Thing Selection, Smart Mouse Keys, Smart 
Mouse Keys
@@ -6741,12 +7442,11 @@ When clicked within an inactive minibuffer:
      The variable @code{action-key-minibuffer-function} controls this behavior.
   ASSIST KEY
      The buffer, window and frame jump menu is displayed for selection, by 
default.
-     You can jump to buffers categorized by major mode, jump to windows by
-     buffer name, or to frames by name.  Manage your windows and frames
-     quickly with this menu as well.  This is the same menu that a click
-     in a blank area of the modeline displays by default since they are
-     typically so close together.  The variable 
@code{assist-key-minibuffer-function}
-     controls this behavior. 
+     You can jump to buffers categorized by major mode, jump to windows by 
buffer
+     name, or to frames by name.  Manage your windows and frames quickly with 
this
+     menu as well.  This is the same menu that a click in a blank area of the
+     modeline displays by default since they are typically so close together.  
The
+     variable @code{assist-key-minibuffer-function} controls this behavior.
 @end group
 @end format
 
@@ -6822,8 +7522,7 @@ a vertical scroll bar:
 @end group
 @end format
 
address@hidden
address@hidden Modeline Clicks and Drags, Smart Mouse - Drags between Windows, 
Side-by-Side Window Resizing, Smart Mouse Keys
address@hidden Modeline Clicks and Drags, Smart Mouse Drags between Windows, 
Side-by-Side Window Resizing, Smart Mouse Keys
 @subsection Modeline Clicks and Drags
 
 @cindex depress, modeline
@@ -6832,38 +7531,77 @@ a vertical scroll bar:
 @vindex assist-key-modeline-function
 @format
 @group
-If depressed within a window mode line:
+If depressed within a window modeline:
   ACTION KEY
-     (1) clicked on the left edge of a window's modeline, the window's
-         buffer is buried (placed at the bottom of the buffer list);
+     (1) clicked on the first blank character of a window's modeline,
+         the window's buffer is buried (placed at the bottom of the
+         buffer list);
      (2) clicked on the right edge of a window's modeline, the Info
          buffer is displayed, or if it is already displayed and the
          modeline clicked upon belongs to a window displaying Info,
          the Info buffer is hidden;
-     (3) clicked anywhere within the middle of a window's modeline,
-         the function given by `action-key-modeline-function' is called;
-     (4) dragged vertically from a modeline to within a window, the
+     (3) clicked on the buffer id of a window's modeline, dired is run
+         on the current directory, replacing the window's buffer;
+         successive clicks walk up the directory tree
+     (4) clicked anywhere within the middle of a window's modeline,
+         the function given by @code{action-key-modeline-function} is
+         called;
+     (5) dragged vertically from a modeline to within a window, the
          modeline is moved to the point of the drag release, thereby
          resizing its window and potentially its vertically neighboring
          windows.
+     (6) dragged other than straight vertically from a modeline to another
+         window, duplicate the modeline's window buffer to the window of
+         release.
+     (7) dragged from a modeline to outside of Emacs, create a new frame
+         sized to match the selected window with the same buffer.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
-     (1) clicked on the left edge of a window's modeline, the bottom
-         buffer in the buffer list is unburied and placed in the window;
+     (1) clicked on the first blank character of a window's modeline,
+         the bottom buffer in the buffer list is unburied and placed in
+         the window;
      (2) clicked on the right edge of a window's modeline, the summary
          of Smart Key behavior is displayed, or if it is already
          displayed and the modeline clicked upon belongs to a window
          displaying the summary, the summary buffer is hidden;
-     (3) clicked anywhere within the middle of a window's modeline,
-         the function given by `assist-key-modeline-function' is called;
-     (4) dragged vertically from a modeline to within a window, the
+     (3) clicked on the buffer id of a window's modeline, the next
+         buffer in sequence is displayed in the window
+     (4) clicked anywhere within the middle of a window's modeline,
+         the function given by @code{assist-key-modeline-function} is
+         called;
+     (5) dragged vertically from a modeline to within a window, the
          modeline is moved to the point of the drag release, thereby
          resizing its window and potentially its vertically neighboring
          windows.
+     (6) dragged other than straight vertically from a modeline to another
+         window, swap buffers in the two windows.
+     (7) dragged from a modeline to outside of Emacs, create a new frame
+         sized to match the selected window with the same buffer.  If there
+         is only one window in the source frame or if 
@code{hycontrol-keep-window-flag}
+         is non-nil, leave the original window and just clone it into the
+         new frame;otherwise, delete the original window.
address@hidden group
address@hidden format
+
address@hidden
address@hidden
+If dragged from a window and released within a window modeline:
+  ACTION KEY
+     (1) If depress was on a buffer name in Buffer-menu/ibuffer mode or on
+         a file/directory in dired mode, splits the release window and displays
+         the item in the original release window.
+     (2) Otherwise, splits the release window and displays the depress window's
+         buffer in the original release window.
+  ASSIST KEY
+     Swaps buffers in the two windows.
 @end group
 @end format
 
address@hidden Smart Mouse - Drags between Windows, Smart Mouse - Drags within 
a Window, Modeline Clicks and Drags, Smart Mouse Keys
address@hidden Smart Mouse - Drags between Windows
address@hidden Smart Mouse Drags between Windows, Smart Mouse Drags within a 
Window, Modeline Clicks and Drags, Smart Mouse Keys
address@hidden Smart Mouse Drags between Windows
 
 @cindex active region
 @cindex copy and yank
@@ -6886,16 +7624,20 @@ If an active (highlighted) region exists within the 
editor:
 @group
 Otherwise, if dragged from inside one window to another:
   ACTION KEY
-     Creates a new link button at the drag start location, linked to the
-     drag end location.  If the drag start position is within a button,
-     this modifies the button to link to the drag end location.
+     (1) If depress was on a buffer name in Buffer-menu/ibuffer mode or on
+         a file/directory in dired mode, displays the item in window of 
release.
+         See @code{hmouse-drag-item-mode-forms} for how to allow for draggable
+         items in other modes.
+     (2) Otherwise, creates a new link button at the drag start location, 
linked
+         to the drag end location.  If the drag start position is within a 
button,
+         this modifies the button to link to the drag end location.
   ASSIST KEY
-     Swaps buffers in the two windows.
+     Swap buffers in the two windows.
 @end group
 @end format
 
address@hidden Smart Mouse - Drags within a Window,  , Smart Mouse - Drags 
between Windows, Smart Mouse Keys
address@hidden Smart Mouse - Drags within a Window
address@hidden Smart Mouse Drags within a Window, Smart Mouse Drags outside a 
Window, Smart Mouse Drags between Windows, Smart Mouse Keys
address@hidden Smart Mouse Drags within a Window
 
 @cindex active region
 @cindex region, active
@@ -6960,7 +7702,35 @@ the minimal diagonal movements which register a drag):
 @end group
 @end format
      
address@hidden
address@hidden Smart Mouse Drags outside a Window,  , Smart Mouse Drags within 
a Window, Smart Mouse Keys
address@hidden Smart Mouse Drags outside a Window
+
address@hidden hmouse-drag-item-mode-forms
address@hidden hycontrol-keep-window-flag
address@hidden dragging items
address@hidden dragging outside Emacs
address@hidden window, clone
address@hidden clone window
address@hidden window, move
address@hidden move window
address@hidden
address@hidden
+If dragged from an Emacs window to outside of Emacs:
+  ACTION KEY
+     (1) If depress was on a buffer name in Buffer-menu/ibuffer mode or on
+         a file/directory in dired mode, display the item in a new frame.
+         See @code{hmouse-drag-item-mode-forms} for how to allow for draggable
+         items in other modes.
+     (2) If depress was anywhere else, create a new frame sized to match the
+         selected window with the same buffer.
+  ASSIST KEY
+     Create a new frame sized to match the selected window with the same 
buffer.
+     If there is only one window in the source frame or if 
@code{hycontrol-keep-window-flag}
+     is non-nil, leave the original window and just clone it into the new 
frame;
+     otherwise, delete the original window.
address@hidden group
address@hidden format
+
 @node Smart Keyboard Keys,  , Smart Mouse Keys, Smart Key Reference
 @section   Smart Keyboard Keys
 
@@ -6978,6 +7748,7 @@ the minimal diagonal movements which register a drag):
 * Smart Key - The Koutliner::
 * Smart Key - RDB Mode::
 * Smart Key - Help Buffers::
+* Smart Key - Pages Directory Mode::
 * Smart Key - Identifier Menu Mode ::
 * Smart Key - C Source Code::
 * Smart Key - C++ Source Code::
@@ -6999,7 +7770,8 @@ the minimal diagonal movements which register a drag):
 * Smart Key - Tar File Mode::
 * Smart Key - Man Pages::
 * Smart Key - WWW URLs::
-* Smart Key - Rolo Match Buffers::
+* Smart Key - HyRolo Match Buffers::
+* Smart Key - Image Thumbnails::
 * Smart Key - Gomoku Game::
 * Smart Key - The OO-Browser::
 * Smart Key - Default Context::
@@ -7094,6 +7866,10 @@ When pressed at the end of a line but not the end of a 
buffer:
      window line, it scrolls up (forward) a windowful.  Otherwise, it tries
      to bring the current line to the top of the window, leaving point at
      the end of the line and returning t if scrolled, nil if not.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      Calls the function given by @code{assist-key-eol-function} whose
      default value is @code{smart-scroll-down}.  This scrolls down according
@@ -7141,27 +7917,39 @@ If the Smart Menu package (part of InfoDock) has been 
loaded and
 @node Smart Key - Dired Mode, Smart Key - Hyperbole Buttons, Smart Key - Smart 
Menus, Smart Keyboard Keys
 @subsection Smart Key - Dired Mode
 @cindex click, dired
address@hidden drag, dired
 @cindex dired browsing
address@hidden DisplayHere mode
 @format
 @group
 If pressed within a dired-mode (directory editor) buffer:
   ACTION KEY
      (1) within an entry line, the selected file/directory is displayed
-         for editing in the other window;
-     (2) on the first line of the buffer, if any deletes are to be
-         performed, they are executed after user verification; otherwise,
-         nothing is done;
-     (3) on or after the last line in the buffer, this dired invocation
-         is quit.
+         for editing, normally in another window but if an entry has been 
dragged
+         for display in another window, then this entry is displayed in the 
current
+         window (DisplayHere minor mode is shown in the mode-line; use 
@bkbd{g} to
+         disable it)
+     (2) on the first line of the buffer:
+         (a) within the leading whitespace, then if any deletes are to be
+             performed, they are executed after user verification; otherwise,
+             nothing is done;
+         (b) otherwise, dired is run in another window on the ancestor 
directory
+             of the current directory path up through the location of point;
+             if point is before the first character, then the / root directory
+             is used.
+     (3) on or after the last line in the buffer or at the end of the first 
line,
+         this dired invocation is quit.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
-     (1) on a ~ character, all backup files in the directory are marked
-         for deletion;
-     (2) on a # character, all auto-save files in the directory are
-         marked for deletion;
-     (3) anywhere else within an entry line, the current entry is marked
-         for deletion;
-     (4) on or after the last line in the buffer, all delete marks on
-         all entries are undone.
+     (1) on a ~ character, all backup files in the directory are marked for 
deletion;
+     (2) on a # character, all auto-save files in the directory are marked for
+         deletion;
+     (3) anywhere else within an entry line, the current entry is marked for 
deletion;
+     (4) on or after the last line in the buffer or at the end of the first 
line,
+         all delete marks on all entries are undone.
 @end group
 @end format
 
@@ -7254,6 +8042,10 @@ When pressed within a Hyperbole Koutliner buffer 
(kotl-mode):
          outline cell; press the Action Key twice on another cell to
          select the link referent cell;
      (4) anywhere else, scrolls up a windowful.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      (1) at the end of the buffer, collapses all cells and hides all
          non-level-one cells;
@@ -7286,6 +8078,10 @@ relational databases (part of InfoDock):
         the selected attribute value are removed from the current table 
display;
     (5) on or after the last line in the buffer, the current database is 
redisplayed;
     (6) anywhere else (except the end of a line), the last command is undone."
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
     (1) on the name of a relation, the relation is removed from the display;
     (2) on an attribute name, the attribute column is removed from the relation
@@ -7296,7 +8092,7 @@ relational databases (part of InfoDock):
 @end group
 @end format
 
address@hidden Smart Key - Help Buffers, Smart Key - Identifier Menu Mode , 
Smart Key - RDB Mode, Smart Keyboard Keys
address@hidden Smart Key - Help Buffers, Smart Key - Pages Directory Mode, 
Smart Key - RDB Mode, Smart Keyboard Keys
 @subsection Smart Key - Help Buffers
 @cindex help buffer
 @format
@@ -7308,7 +8104,24 @@ When pressed at the end of a Help buffer:
 @end group
 @end format
 
address@hidden Smart Key - Identifier Menu Mode , Smart Key - C Source Code, 
Smart Key - Help Buffers, Smart Keyboard Keys
address@hidden Smart Key - Pages Directory Mode, Smart Key - Identifier Menu 
Mode , Smart Key - Help Buffers, Smart Keyboard Keys
address@hidden Smart Key - Pages Directory Mode
+
address@hidden
address@hidden
+Pages-directory-mode is used in special buffers that contain title lines 
extracted from files consisting of titled, page-delimited contents, e.g. Info 
files.
+
address@hidden
+When pressed on a pages-directory-mode entry line:
+  ACTION KEY
+     Jumps to the associated line in the pages file that contains the entry.
+  ASSIST KEY
+     Jumps to the associated line in the pages file that contains the entry.
address@hidden group
address@hidden format
+
address@hidden
address@hidden Smart Key - Identifier Menu Mode , Smart Key - C Source Code, 
Smart Key - Pages Directory Mode, Smart Keyboard Keys
 @subsection Smart Key - Identifier Menu Mode 
 
 @format
@@ -7356,6 +8169,7 @@ When pressed within a C source code file:
 @end group
 @end format
 
address@hidden
 @node Smart Key - C++ Source Code, Smart Key - Assembly Source Code, Smart Key 
- C Source Code, Smart Keyboard Keys
 @subsection Smart Key - C++ Source Code
 
@@ -7385,7 +8199,6 @@ buffer:
 @end group
 @end format
 
address@hidden
 @format
 @group
 When pressed within a C++ source code file (without the OO-Browser):
@@ -7408,6 +8221,7 @@ When pressed within a C++ source code file (without the 
OO-Browser):
 @end group
 @end format
 
address@hidden
 @node Smart Key - Assembly Source Code, Smart Key - Lisp Source Code, Smart 
Key - C++ Source Code, Smart Keyboard Keys
 @subsection Smart Key - Assembly Source Code
 
@@ -7667,7 +8481,8 @@ and outline-minor-mode is enabled:
      (4) on a header line but not at the beginning or end of the line,
          if the headings subtree is hidden, shows it, otherwise hides
          it;
-     (5) anywhere else, scrolls up a windowful.
+     (5) anywhere else, invokes @code{action-key-eol-function}, typically
+         to scroll up a windowful.
   ASSIST KEY
      (1) after an outline heading has been cut via the Action Key,
          allows multiple pastes throughout the buffer (the last paste
@@ -7677,11 +8492,11 @@ and outline-minor-mode is enabled:
          (sans subtree) from the buffer;
      (4) on a header line but not at the beginning or end, if the
          heading body is hidden, shows it, otherwise hides it;
-     (5) anywhere else, scrolls down a windowful.
+     (5) anywhere else, invokes @code{assist-key-eol-function}, typically
+         to scroll down a windowful.
 @end group
 @end format
 
address@hidden
 @node Smart Key - Info Manuals, Smart Key - Email Composers, Smart Key - Emacs 
Outline Mode, Smart Keyboard Keys
 @subsection Smart Key - Info Manuals
 
@@ -7704,6 +8519,10 @@ If pressed within an Info manual node:
          is bound);
      (5) anywhere else (e.g.@: at the end of a line), the current node
          is scrolled up a windowful.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      (1) on the first line of an Info Menu Entry or Cross Reference, the
          referenced node is displayed;
@@ -7722,7 +8541,6 @@ Use @bkbd{s} within an Info manual to search for any 
concept that interests you.
 @end group
 @end format
 
address@hidden
 @node Smart Key - Email Composers, Smart Key - GNUS Newsreader, Smart Key - 
Info Manuals, Smart Keyboard Keys
 @subsection Smart Key - Email Composers
 @vindex hmail:reader
@@ -7742,6 +8560,10 @@ If pressed within a Hyperbole-supported mail reader 
(defined by
          corresponding to the header is displayed in the msg window;
      (5) in a msg summary buffer, on or after the last line, the
          messages marked for deletion are expunged.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      (1) in a msg buffer within the first line or at the end of a
          message, the previous undeleted message is displayed;
@@ -7771,6 +8593,10 @@ If pressed within the Gnus newsgroups listing buffer:
          whitespace, the current group is unsubscribed or resubscribed;
      (4) at the end of the GNUS-GROUP buffer after all lines, the
          number of waiting messages per group is updated.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      (1) on a GNUS-GROUP line, that newsgroup is read;
      (2) if `gnus-topic-mode' is active, and on a topic line, the topic is
@@ -7791,6 +8617,10 @@ If pressed within a Gnus newsreader subject listing 
buffer:
          and scrolled forward;
      (2) at the end of the GNUS-SUBJECT buffer, the next undeleted
          article is read or the next group is entered.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      (1) on a GNUS-SUBJECT line, that article is read and scrolled
          backward;
@@ -7808,6 +8638,10 @@ If pressed within a Gnus newsreader article buffer:
      (2) on the first line of an Info cross reference, the referent is
          displayed;
      (3) anywhere else, the window is scrolled up a windowful.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      (1) on the first line or end of an article, the previous message is
          displayed;
@@ -7835,6 +8669,10 @@ If pressed within a listing of buffers 
(Buffer-menu-mode):
          is displayed);
      (4) on or after the last line in the buffer, all saves and deletes
          are done.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      (1) on the first or second column of an entry, the selected buffer
          is unmarked for display and for saving or deletion;
@@ -7858,6 +8696,10 @@ If pressed within an interactive buffer menu 
(ibuffer-mode):
          within the OO-Browser user interface, only the selected buffer is
          displayed);
      (3) on the first or last line in the buffer, all deletes are done.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      (1) on the first or second column of an entry, the selected buffer is 
unmarked
          for display or deletion; 
@@ -7882,6 +8724,10 @@ If pressed within a tar-mode buffer:
      (2) on or after the last line in the buffer, if any deletes are to
          be performed, they are executed after user verification;
          otherwise, this tar file browser is quit.
address@hidden group
address@hidden format
address@hidden
address@hidden
   ASSIST KEY
      (1) on an entry line, the current entry is marked for deletion;
      (2) on or after the last line in the buffer, all delete marks on
@@ -7905,35 +8751,58 @@ containing its pathname:
 @end group
 @end format
 
address@hidden Smart Key - WWW URLs, Smart Key - Rolo Match Buffers, Smart Key 
- Man Pages, Smart Keyboard Keys
address@hidden Smart Key - WWW URLs, Smart Key - HyRolo Match Buffers, Smart 
Key - Man Pages, Smart Keyboard Keys
 @subsection Smart Key - WWW URLs
 @cindex click, world-wide web
 @cindex W3
 @cindex URL
address@hidden world-wide web
address@hidden browse-url-browser-function
address@hidden World-wide Web
address@hidden WWW
address@hidden C-h h c u
address@hidden menu, Cust/URL-Display
 @format
 @group
 If pressed on a World-Wide Web universal resource locator (URL):
   ACTION KEY
-     Displays the referent for the URL at point.
+     Displays the referent for the URL at point using the web browser
+     given by the variable, @code{browse-url-browser-function}.  Adjust
+     this setting with the Cust/URL-Display @bkbd{C-h h c u} menu.
   ASSIST KEY
      Displays help for the ACTION KEY.
 @end group
 @end format
 
address@hidden Smart Key - Rolo Match Buffers, Smart Key - Gomoku Game, Smart 
Key - WWW URLs, Smart Keyboard Keys
address@hidden Smart Key - Rolo Match Buffers
address@hidden Smart Key - HyRolo Match Buffers, Smart Key - Image Thumbnails, 
Smart Key - WWW URLs, Smart Keyboard Keys
address@hidden Smart Key - HyRolo Match Buffers
 @cindex click, hyrolo matches
 @cindex hyrolo matches
 @format
 @group
-If pressed within an entry in the Rolo search results buffer:
+If pressed within an entry in the HyRolo search results buffer:
   ACTION KEY or ASSIST KEY
      The entry is edited in the other window.
 @end group
 @end format
 
address@hidden Smart Key - Gomoku Game, Smart Key - The OO-Browser, Smart Key - 
Rolo Match Buffers, Smart Keyboard Keys
address@hidden Smart Key - Image Thumbnails, Smart Key - Gomoku Game, Smart Key 
- HyRolo Match Buffers, Smart Keyboard Keys
address@hidden Smart Key - Image Thumbnails
address@hidden images
address@hidden thumbnails
address@hidden dired, images
address@hidden image-dired-external-viewer
address@hidden
address@hidden
+If pressed within a Dired Image Thumbnail buffer:
+  ACTION KEY
+     Selects the chosen thumbnail and scales its image for display in another 
Emacs window.
+  ASSIST KEY
+     Selects thumbnail and uses the external viewer named by 
@code{image-dired-external-viewer}
+     to display it.
address@hidden group
address@hidden format
+
address@hidden Smart Key - Gomoku Game, Smart Key - The OO-Browser, Smart Key - 
Image Thumbnails, Smart Keyboard Keys
 @subsection Smart Key - Gomoku Game
 @cindex game, gomoku
 @cindex gomoku
@@ -7983,7 +8852,6 @@ When pressed within an OO-Browser listing window:
 @end group
 @end format
 
address@hidden
 @format
 @group
   ASSIST KEY
@@ -8142,9 +9010,10 @@ This other-worldly reaction is of course an individual 
matter.  Some
 people have canceled meditation trips to the Far East after
 discovering that pressing the Action Key in random contexts serves a
 similar purpose much more cheaply.  We have not seen anyone's mind
-turn to jelly but with the thinking Hyperbole saves you, you might
+turn to jelly but with the cognition Hyperbole saves you, you might
 just grow a second one.  Eventually, you will be at peace and will
-understand that there is no adequate description of Hyperbole.
+understand that there is no adequate description of Hyperbole.  Just
+let it flow through you.
 
 @noindent
 Ok, joking aside, now that we have your attention, here are some
@@ -8276,7 +9145,7 @@ in mind, however.
 
 @item Button Copying, Killing, and Yanking
 There is as yet no means of transferring explicit buttons among
-buffers. We realize this is a critical need.  Users should be able to
+buffers. We realize this is an important need.  Users should be able to
 manipulate text with embedded buttons in ordinary ways.  With this
 feature, Hyperbole would store the button attributes as text
 properties within the buffers so that if a button is copied, its
@@ -8289,6 +9158,15 @@ character keys that normally insert characters to 
instead modify the
 view of a Koutline and to move around in it, for ease of study.
 Switching between view and edit modes will also be simple.
 
address@hidden Direct Manipulation
+Hyperbole is designed to let you rapidly navigate and manipulate
+large, distributed information spaces.  Being able to directly
+manipulate entities in these spaces will accelerate understanding and
+production of new information.  Already Hyperbole lets you drag
+buffers, windows, files, and directories and place them where you
+like.  But there is much more that can be done to allow for
+higher-level browsing and information organization.
+
 @item Trails
 Trails are an extension to the basic history mechanism presently offered
 by Hyperbole.  Trails will allow a user to capture, edit and store a
@@ -8488,3 +9366,8 @@ Austin, TX, ACM: NY,NY, 1989, pp. 37-42.
 @printindex cp
 
 @bye
+
address@hidden Local Variables:
address@hidden eval: (outline-minor-mode 1)
address@hidden eval: (modify-syntax-entry ?: "_")
address@hidden End:
diff --git a/man/im/menu-customization.eps b/man/im/menu-customization.eps
deleted file mode 100644
index 6f56783..0000000
--- a/man/im/menu-customization.eps
+++ /dev/null
@@ -1,6212 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: (ImageMagick)
-%%Title: (menu-customization.png.eps)
-%%CreationDate: (2016-06-16T19:33:27+02:00)
-%%BoundingBox: -0 -0 241 320
-%%HiResBoundingBox: 0 0 240.967 320
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 1
-%%Pages: 1
-%%EndComments
-
-%%BeginDefaults
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image.  The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/DirectClassPacket
-{
-  %
-  % Get a DirectClass packet.
-  %
-  % Parameters:
-  %   red.
-  %   green.
-  %   blue.
-  %   length: number of pixels minus one of this color (optional).
-  %
-  currentfile color_packet readhexstring pop pop
-  compression 0 eq
-  {
-    /number_pixels 3 def
-  }
-  {
-    currentfile byte readhexstring pop 0 get
-    /number_pixels exch 1 add 3 mul def
-  } ifelse
-  0 3 number_pixels 1 sub
-  {
-    pixels exch color_packet putinterval
-  } for
-  pixels 0 number_pixels getinterval
-} bind def
-
-/DirectClassImage
-{
-  %
-  % Display a DirectClass image.
-  %
-  systemdict /colorimage known
-  {
-    columns rows 8
-    [
-      columns 0 0
-      rows neg 0 rows
-    ]
-    { DirectClassPacket } false 3 colorimage
-  }
-  {
-    %
-    % No colorimage operator;  convert to grayscale.
-    %
-    columns rows 8
-    [
-      columns 0 0
-      rows neg 0 rows
-    ]
-    { GrayDirectClassPacket } image
-  } ifelse
-} bind def
-
-/GrayDirectClassPacket
-{
-  %
-  % Get a DirectClass packet;  convert to grayscale.
-  %
-  % Parameters:
-  %   red
-  %   green
-  %   blue
-  %   length: number of pixels minus one of this color (optional).
-  %
-  currentfile color_packet readhexstring pop pop
-  color_packet 0 get 0.299 mul
-  color_packet 1 get 0.587 mul add
-  color_packet 2 get 0.114 mul add
-  cvi
-  /gray_packet exch def
-  compression 0 eq
-  {
-    /number_pixels 1 def
-  }
-  {
-    currentfile byte readhexstring pop 0 get
-    /number_pixels exch 1 add def
-  } ifelse
-  0 1 number_pixels 1 sub
-  {
-    pixels exch gray_packet put
-  } for
-  pixels 0 number_pixels getinterval
-} bind def
-
-/GrayPseudoClassPacket
-{
-  %
-  % Get a PseudoClass packet;  convert to grayscale.
-  %
-  % Parameters:
-  %   index: index into the colormap.
-  %   length: number of pixels minus one of this color (optional).
-  %
-  currentfile byte readhexstring pop 0 get
-  /offset exch 3 mul def
-  /color_packet colormap offset 3 getinterval def
-  color_packet 0 get 0.299 mul
-  color_packet 1 get 0.587 mul add
-  color_packet 2 get 0.114 mul add
-  cvi
-  /gray_packet exch def
-  compression 0 eq
-  {
-    /number_pixels 1 def
-  }
-  {
-    currentfile byte readhexstring pop 0 get
-    /number_pixels exch 1 add def
-  } ifelse
-  0 1 number_pixels 1 sub
-  {
-    pixels exch gray_packet put
-  } for
-  pixels 0 number_pixels getinterval
-} bind def
-
-/PseudoClassPacket
-{
-  %
-  % Get a PseudoClass packet.
-  %
-  % Parameters:
-  %   index: index into the colormap.
-  %   length: number of pixels minus one of this color (optional).
-  %
-  currentfile byte readhexstring pop 0 get
-  /offset exch 3 mul def
-  /color_packet colormap offset 3 getinterval def
-  compression 0 eq
-  {
-    /number_pixels 3 def
-  }
-  {
-    currentfile byte readhexstring pop 0 get
-    /number_pixels exch 1 add 3 mul def
-  } ifelse
-  0 3 number_pixels 1 sub
-  {
-    pixels exch color_packet putinterval
-  } for
-  pixels 0 number_pixels getinterval
-} bind def
-
-/PseudoClassImage
-{
-  %
-  % Display a PseudoClass image.
-  %
-  % Parameters:
-  %   class: 0-PseudoClass or 1-Grayscale.
-  %
-  currentfile buffer readline pop
-  token pop /class exch def pop
-  class 0 gt
-  {
-    currentfile buffer readline pop
-    token pop /depth exch def pop
-    /grays columns 8 add depth sub depth mul 8 idiv string def
-    columns rows depth
-    [
-      columns 0 0
-      rows neg 0 rows
-    ]
-    { currentfile grays readhexstring pop } image
-  }
-  {
-    %
-    % Parameters:
-    %   colors: number of colors in the colormap.
-    %   colormap: red, green, blue color packets.
-    %
-    currentfile buffer readline pop
-    token pop /colors exch def pop
-    /colors colors 3 mul def
-    /colormap colors string def
-    currentfile colormap readhexstring pop pop
-    systemdict /colorimage known
-    {
-      columns rows 8
-      [
-        columns 0 0
-        rows neg 0 rows
-      ]
-      { PseudoClassPacket } false 3 colorimage
-    }
-    {
-      %
-      % No colorimage operator;  convert to grayscale.
-      %
-      columns rows 8
-      [
-        columns 0 0
-        rows neg 0 rows
-      ]
-      { GrayPseudoClassPacket } image
-    } ifelse
-  } ifelse
-} bind def
-
-/DisplayImage
-{
-  %
-  % Display a DirectClass or PseudoClass image.
-  %
-  % Parameters:
-  %   x & y translation.
-  %   x & y scale.
-  %   label pointsize.
-  %   image label.
-  %   image columns & rows.
-  %   class: 0-DirectClass or 1-PseudoClass.
-  %   compression: 0-none or 1-RunlengthEncoded.
-  %   hex color packets.
-  %
-  gsave
-  /buffer 512 string def
-  /byte 1 string def
-  /color_packet 3 string def
-  /pixels 768 string def
-
-  currentfile buffer readline pop
-  token pop /x exch def
-  token pop /y exch def pop
-  x y translate
-  currentfile buffer readline pop
-  token pop /x exch def
-  token pop /y exch def pop
-  currentfile buffer readline pop
-  token pop /pointsize exch def pop
-  /Times-Roman findfont pointsize scalefont setfont
-  x y scale
-  currentfile buffer readline pop
-  token pop /columns exch def
-  token pop /rows exch def pop
-  currentfile buffer readline pop
-  token pop /class exch def pop
-  currentfile buffer readline pop
-  token pop /compression exch def pop
-  class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
-  grestore
-} bind def
-%%EndProlog
-%%Page:  1 1
-%%PageBoundingBox: 0 0 241 320
-userdict begin
-DisplayImage
-0 0
-240.967 319.956
-12
-241 320
-0
-0
-4F432D493C29473C28564A394E4232483D2D3F37282E271DB2B5AFB2B5AFB2B5AFB2B5AFB2B5AF
-B2B5AFB2B5AFB2B5AFB2B5AFB2B5AFB2B5AFB2B5AFB2B5AFB2B5AFC9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7C9C9C7
-C9C9C7C7C7C5C3C3C1A2A2A1D9D9D9DADADADBDBDB483C25FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-3F7AB8473B23FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E78B45D523CFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF3C75B1615640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C74AF605540FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF3B74AE584C37FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEEEE9C9FA0
-7D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7D81829C9FA0EEEEEEFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE5E533DFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B9E9FC4C6C6FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFCFCFCC3C5C59C9FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF3B74AE534A33FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D8182
-FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBBDBD7D8182
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4A3A6A7FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4A3A6A7FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE484029FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFBBBDBD7A7E7F7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCFFFFFFFFFFFFFFFFFFB4B6B67C8081FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFE8E9E9474D4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-6D7173FFFFFFFFFFFFFFFFFFFFFFFF9C9FA02E3436E5E6E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFE8E9E9474D4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF3B74AE4C442DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEB4B7B77A7E7F7A7E7F
-7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFB4B6B67C8081
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E9474D4E
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF
-4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474D4ECACBCCFFFFFFFFFFFFECEDED454A4C
-3B4143E5E6E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E9474D4EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE575039
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFD6D8D8
-FEFEFEFFFFFFFEFEFEB2B4B57A7E7F7A7E7F7A7E7F7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FCFCFCFFFFFFFFFFFFFFFFFFB4B6B67C8081FFFFFF929596919495FFFFFFFFFFFFC1C3C3
-75797BDEDFDF5055565A5F614B5052636869E1E2E2FFFFFFFFFFFFBDBFC0505557505557747879
-F5F5F6E1E2E35156585D6163414648CDCFCF343A3C5B6061505557676B6CE2E3E3FFFFFFFFFFFF
-C3C5C5585D5E55595B5E6264D5D6D7FFFFFFDEDFDF4E5355FFFFFFFFFFFFBDBFC0505557505557
-747879F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3C5C5585D5E55595B5E6264D5D6D7
-FFFFFFE1E2E35257597377785055564C5153D8D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638BCBEBE575C5DFDFDFDFFFFFF828586A2A5A6474D4EE5E6E6FFFFFFBDBFC0505557505557
-747879F5F5F6E1E2E35257597377785055564C5153D8D9D9DEDFDF4E5355FFFFFFFFFFFFC1C3C3
-6B7071FFFFFFE8E9E9343A3C5B6061505557676B6CE2E3E3FFFFFFFFFFFF74787A55595B3F4547
-919495FFFFFFE1E2E35156585D6163414648E1E2E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE444027FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF7A7E7FFFFFFFFFFFFFFFFFFFBCBEBF7A7E7FADAFB0FDFDFDB2B4B57A7E7F7A7E7F7A7E7F
-B7B9B97A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E474D4E474D4E474D4E3E4345
-7C8081FFFFFFE1E2E2464B4DFDFDFDFFFFFF74787AC2C4C5DEDFDF484D4FF8F8F8FEFEFE9B9E9F
-5B6061FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4E1E2E344494BEBEBEBFDFDFDE8E9E9
-464B4DFEFEFEFFFFFFA3A6A75E6365FFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4EFBFBFB
-DEDFDF4E5355FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4EFBFBFBE1E2E3464B4DECEDEDFEFEFE929596
-797D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FBFBFB696D6FB4B6B6DBDCDC525759
-FBFBFB474D4EE5E6E6EAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4E1E2E3464B4DECEDEDFEFEFE
-929596797D7FDEDFDF4E5355FFFFFFFFFFFFC1C3C36B7071FFFFFFE8E9E9464B4DFEFEFEFFFFFF
-A3A6A75E6365FFFFFFFFFFFFFEFEFEFFFFFFF3F3F33B4143E6E6E7E1E2E344494BEBEBEBFDFDFD
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE
-4C482FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFD6D7D77A7E7F
-7A7E7F7A7E7F8D90917A7E7F7A7E7F7A7E7FB7B9B9FFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFB4B6B67C8081FFFFFFFFFFFF5F6465C9CACBF3F3F3
-474D4EFCFCFCDEDFDF4E5355FFFFFFFFFFFFF8F8F82F3537F4F5F5B6B8B93F45475B60615B6061
-515658909394E1E2E34E5355FFFFFFFFFFFFE8E9E9474D4EFFFFFFFFFFFFFBFBFB32383AF7F7F7
-B6B8B9767A7BFFFFFFFFFFFFFFFFFF4E5355DDDEDEDEDFDF4E5355FFFFFFB6B8B93F45475B6061
-5B6061515658909394C0C2C2474D4E474D4E474D4EE5E6E6B6B8B9767A7BFFFFFFFFFFFFFFFFFF
-4E5355DDDEDEE1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EC0C2C2474D4E474D4E474D4EE5E6E6
-FFFFFF303638FCFCFCDFE0E04C515264696AC7C9C9FFFFFF474D4EE5E6E6B6B8B93F45475B6061
-5B6061515658909394E1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EDEDFDF4E5355FFFFFFFFFFFF
-C1C3C36B7071FFFFFFE8E9E9474D4EFFFFFFFFFFFFFBFBFB32383AF7F7F7FEFEFEB1B3B4636869
-555A5C373D3FD1D2D3E1E2E34E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE45412AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFEFEFEB0B3B37A7E7F7A7E7F7A7E7F7A7E7F7A7E7FB3B5B6
-FFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFF
-B4B6B67C8081FFFFFFFFFFFFAFB1B27C8081AEB0B18B8E8FFFFFFFDEDFDF4E5355FFFFFFFFFFFF
-F7F7F7313739F9F9F9B4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFE1E2E34E5355FFFFFFFFFFFF
-E8E9E9474D4EFFFFFFFFFFFFFEFEFE343A3CF5F5F6B5B7B8777B7CFFFFFFFFFFFFFFFFFF4F5456
-DFE0E0DEDFDF4E5355FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFB5B7B8777B7CFFFFFFFFFFFFFFFFFF4F5456DFE0E0E1E2E34E5355FFFFFFFFFFFF
-C4C6C6686D6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFA5A7A8909495
-FFFFFFFFFFFF474D4EE5E6E6B4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFE1E2E34E5355FFFFFF
-FFFFFFC4C6C6686D6EDEDFDF4C5152FFFFFFFFFFFFC1C3C36B7071FFFFFFE8E9E9474D4EFFFFFF
-FFFFFFFEFEFE343A3CF5F5F6D1D2D3565B5DEFEFEFFFFFFF5E6365D1D2D3E1E2E34E5355FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-3B74AE444028FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFF
-FEFEFEB0B3B37A7E7F7A7E7F7A7E7FADB0B0FEFEFEFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFB4B6B67C8081FFFFFFFFFFFFF4F5F5414648
-5B6061D8D9D9FFFFFFDEDFDF4C5152FDFDFDFEFEFE999B9C6D7173FFFFFFE3E4E4383E3FCBCDCD
-FFFFFFFDFDFDFCFCFCE1E2E34E5355FFFFFFFFFFFFE8E9E9454A4CFDFDFDFFFFFFC0C2C25B6061
-FFFFFFE8E9E9414648E2E3E3FFFFFFC7C9C94E5355FCFCFCE4E5E5424749F8F9F9E3E4E4383E3F
-CBCDCDFFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E9414648E2E3E3FFFFFF
-C7C9C94E5355FCFCFCE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF474D4EE5E6E6E3E4E4383E3F
-CBCDCDFFFFFFFDFDFDFCFCFCE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EEFEFEF313739E8E9E9
-FBFBFBA5A7A86B7071FFFFFFE8E9E9454A4CFDFDFDFFFFFFC0C2C25B6061FFFFFFB9BBBB64696A
-FDFDFDEBECEC474C4ED1D2D3E1E2E34E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE3D3A22FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEADB0B07A7E7FADB0B0FEFEFE
-FFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF
-FFFFFFB4B6B67C8081FFFFFFFFFFFFFFFFFF7C8081535859FFFFFFFFFFFFDEDFDF363C3E5B6061
-505557717577ECEDEDFFFFFFFFFFFFBCBEBE5055574E53555B6061D4D6D6E1E2E34E5355FFFFFF
-FFFFFFE8E9E9484D4F707475636869636869DFE0E0FFFFFFFFFFFFC1C3C3555A5C565B5D64696A
-DDDEDEFFFFFFFEFEFE6E7273484D4FE2E3E3BCBEBE5055574E53555B6061D4D6D6FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFC1C3C3555A5C565B5D64696ADDDEDEFFFFFFE1E2E34E5355FFFFFF
-FFFFFFC4C6C6686D6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF474D4EE5E6E6FFFFFFBCBEBE5055574E53555B6061D4D6D6E1E2E34E5355
-FFFFFFFFFFFFC4C6C6686D6EFFFFFF9498993B41435156588285866B7071FFFFFFE8E9E9484D4F
-707475636869636869DFE0E0FFFFFFF8F8F86C71724B50526A6E705E6264D1D2D3E1E2E34E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF3B74AE37341CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D8182FCFCFCFFFFFF
-FFFFFFFFFFFFFFFFFFFEFEFECDCFCFFEFEFEFFFFFFFFFFFFFFFFFFFCFCFC7D8182FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-929596A1A3A4FFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE3A371FFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF9C9FA0C3C5C5FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFCFCFCC2C4C49DA0A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD484D4FEBEBEBFFFFFFFFFFFFDEDFDF4E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF3B74AE3E3A23FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEE9DA0A1
-7D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7D81829DA0A1EEEFEFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-C5C6C7696D6FFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE332E18FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF3B74AE3B341FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE403623FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF3B74AE483E2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE403624
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B74AE392D1DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-372B1AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD796D5AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD7E735FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD675C48FFFFFFFFFFFFFFFFFFFFFFFF
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6FFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD483B29FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD605444FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD433726FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD362C1BFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD453C2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD423929FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD403929FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD544F3F
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD3B3628FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-302C22FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEB999C9D7D81827A7E7F7A7E7F
-7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7D81829A9D9EEBEBEBFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD403E37FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF949798CACBCCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FDFDFDCACBCC959899FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD595856FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9808485FEFEFEFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE808485F9F9F9FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D6D6585D5EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFDEDFDF4E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD5D5F5EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFF303638474C4E474D4E474D4E
-676B6CD2D3D44E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFD4D6D6585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E474D4E
-474D4E676B6CD2D3D44E5355FFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E1E12E3436A2A5A6FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADAFB0EAEAEB
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBECEC
-44494BFFFFFFFFFFFFFFFFFFFFFFFF686D6EC7C9C9FFFFFF303638474C4E3B4143474D4E9B9E9F
-FEFEFEFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD616465FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFF
-FFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFCFCFCE3E4E4FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D6D6585D5EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFCFCFCE3E4E4FFFFFFDEDFDF
-4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF9598996A6E70585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF686D6E
-C7C9C9FFFFFF303638FCFCFCFEFEFEE7E8E8595D5FBDBFC0FFFFFF303638FCFCFCFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD6A6D70FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFF
-FFFFFFFFFFFFDEDFDF585D5EFFFFFFE1E2E35257597377785055564C5153D8D9D9FFFFFFC8CACA
-595D5F55595B54595A585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFC
-FFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFDEDFDF4E5355FFFFFFFFFFFFBDBFC0505557505557
-747879F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE4C5152DFE0E03F4547DEDFDF
-FFFFFFFFFFFFCCCECE5D6163525759626768FCFCFCCCCECE5D6163525759626768FCFCFCBDBFC0
-505557505557747879F5F5F6DEDFDF5055565A5F614B5052636869E1E2E2FFFFFF7E8283363C3E
-4F5456585D5EE7E8E8838788525759575C5DA2A5A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-EBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF686D6EC7C9C9FFFFFF303638FCFCFCFFFFFFFFFFFF
-94979896999AFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFAFAFA838788525759575C5DA2A5A6
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD585C5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7
-FFFFFFFFFFFFFFFFFFFFFFFF303638474C4E474D4E474D4EA6A8A9DEDFDF585D5EFFFFFFE1E2E3
-464B4DECEDEDFEFEFE929596797D7FEBECEC43494AE0E1E1FFFFFFD3D4D4585D5EFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E474D4E474D4EA6A8A9DEDFDF585D5EFFFFFF
-DEDFDF4E5355FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFD3D4D454595AFFFFFF818486949899FFFFFFECEDED474D4EDFE0E0FFFFFFFDFDFD
-ECEDED474D4EDFE0E0FFFFFFFDFDFDEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4DEDFDF484D4F
-F8F8F8FEFEFE9B9E9F5B6061FFFFFFFFFFFF5B6061D4D6D6FFFFFFCECFD0505557FDFDFDFEFEFE
-F8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF
-686D6EC7C9C9FFFFFF303638FCFCFCFCFCFCE1E2E255595BCBCCCDFFFFFF303638FCFCFCFFFFFF
-FFFFFFFFFFFFCECFD0505557FDFDFDFEFEFEF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD5B5D61FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFC
-FFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EB8BABA
-74787AFFFFFFFFFFFFD4D6D6585D5EFFFFFFC0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638
-FCFCFCFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFDEDFDF4E5355FFFFFFB6B8B93F45475B6061
-5B6061515658909394C0C2C2474D4E474D4E474D4EE5E6E6FFFFFF898C8D989B9CFFFFFFC5C6C7
-4A4F51FEFEFEB9BBBB797C7EFFFFFFFFFFFFFFFFFFB9BBBB797C7EFFFFFFFFFFFFFFFFFFB6B8B9
-3F45475B60615B6061515658909394DEDFDF4E5355FFFFFFFFFFFFF8F8F82F3537F4F5F5FFFFFF
-5B6061D4D6D6FFFFFFF2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFC0C2C2474D4E474D4E474D4E
-E5E6E6EBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF686D6EC7C9C9FFFFFF303638474C4E393E40
-3F4547B5B7B8FFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFF2F2F2555A5C777B7CD4D6D6
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD606367FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687
-F7F7F7FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFF
-E1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EB4B6B6727677FFFFFFFFFFFFD4D6D6585D5EFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFDEDFDF585D5E
-FFFFFFDEDFDF4E5355FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFCFCFC41464842484A474D4E464B4D303638D1D2D3B4B6B674787AFFFFFFFFFFFF
-FFFFFFB4B6B674787AFFFFFFFFFFFFFFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFDEDFDF
-4E5355FFFFFFFFFFFFF7F7F7313739F9F9F9FFFFFF5B6061D4D6D6FFFFFFFFFFFFFDFDFDBBBDBE
-595E60979A9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFA393E40FDFDFDFFFFFFFFFFFF
-FFFFFF595D5FDADBDCFFFFFF303638FCFCFCECEDED484D4FDADBDCFFFFFFFFFFFF303638FCFCFC
-FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDBBBDBE595E60979A9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD4F5155FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6E
-E6E6E73C4243DADBDCFFFFFFC3C5C5585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FCFCFCFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFE4E5E5424749F8F9F9E3E4E4383E3F
-CBCDCDFFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C8C9525759FEFEFEFFFFFF
-FFFFFF828586878A8BE5E6E63C4243D8D9D9FFFFFFFEFEFEE5E6E63C4243D8D9D9FFFFFFFEFEFE
-E3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCDEDFDF4C5152FDFDFDFEFEFE999B9C6D7173FFFFFF
-FFFFFF727677B9BBBCFFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF6267689D9FA0FDFDFDFEFEFEBABCBD474C4EF9F9F9FFFFFF303638FCFCFC
-FFFFFFC6C8C9505557F5F5F6FFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFF6F6F6EFEFEFFFFFFF
-CFD0D0474C4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD54565AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7
-828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFDEDFDF585D5E
-FFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EFFFFFFB9BBBC4C5153484D4F7074765A5F61
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFDEDFDF
-585D5EFFFFFFFEFEFE6E7273484D4FE2E3E3BCBEBE5055574E53555B6061D4D6D6FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF7D8082A5A7A8FFFFFFFFFFFFFFFFFFD3D4D43F4547FBFBFBBCBEBE505557
-5156586A6E70FCFCFCBCBEBE5055575156586A6E70FCFCFCBCBEBE5055574E53555B6061D4D6D6
-DEDFDF363C3E5B6061505557717577ECEDEDFFFFFFFFFFFFBDBFBF3D42445F6465CECFD0616567
-4F5456494E50B4B6B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5E6E66C717244494B
-43494A5F6465D4D6D6FFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF9094957B7F80FFFFFF303638
-43494A44494B44494B737778D1D2D36165674F5456494E50B4B6B6FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD515458
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9808485FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE808485F9F9F9FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD535559FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF949798C9CBCBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC
-C9CACB959899FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-5B5D61FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEB9A9D9E7D81827A7E7F7A7E7F
-7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7D81829A9D9EEBECECFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD626469FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD505357FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD616469FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD6C6F73FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD5C6063FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD5B5F62FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD5A5E61FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD4D5154FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD5B5F62FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD525659FFFFFFFFFFFFFFFFFFFFFFFFE6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD4D5154
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD5F6365FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-626669FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD616568FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD636769FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD65696CFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD565A5CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD5C6062FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD717779FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD5F6567FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD62696AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD65696CFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F6A2A4A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D6D6585D5E
-FFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD4E4F52FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEB6B8B95B606142484A474C4E565B5DDDDEDE
-EBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCFFFFFFF8F8F86065669EA1A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E
-4247493E44469D9FA0FFFFFFFFFFFFD2D3D44E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D6D6585D5EFFFFFFD2D3D44E5355FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCBCCCD
-F8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD54585C
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-9A9D9E65696BDDDEDFFEFEFEFDFDFDE2E3E3F9F9F9EBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFCFCFC6D71738B8F90FEFEFEFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFEDEDEE494E50E2E3E3FFFFFFFCFCFC
-E3E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D6D6
-585D5EFFFFFFFCFCFCE3E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A676C6DF8F8F8FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD52565BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F1F1414648F1F1F2FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFEBECEC383E3F75797B474C4E4D5254D8D9D9FFFFFFFFFFFF74787A55595B3F4547919495
-FFFFFFE1E2E35257597377785055564C5153D8D9D9FFFFFFC5C6C7676C6D737778676C6D595E60
-FFFFFFFFFFFFBDBFC0505557505557747879F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FBFBFB7C80817A7E7FFDFDFDFFFFFFFFFFFFFFFFFFBDBFC0505557505557747879F5F5F6
-929596919495FFFFFFFFFFFFC1C2C375797BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCFDFDFDDBDCDC42484AECEDEDFFFFFFDEDFDF585D5EFFFFFFE1E2E3525759737778505556
-4C5153D8D9D9FFFFFFC8CACA595D5F55595B54595A585D5EFFFFFFDEDFDF585D5EFFFFFFE1E2E3
-5257597377785055564C5153D8D9D9FFFFFFC5C6C7676C6D737778676C6D595E60FFFFFFFAFAFA
-838788525759575C5DA2A5A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-96999A2E3436676C6DF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-505459FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CBCCCD636869FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBECEC3C4243DADBDCFDFDFD909495
-797C7EFFFFFFFFFFFFFEFEFEFFFFFFF3F3F33B4143E6E6E7E1E2E3464B4DECEDEDFEFEFE929596
-797D7FEBECEC4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081
-A1A3A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3036388E9192676B6CFBFBFBFFFFFFFFFFFF
-FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4E1E2E2464B4DFDFDFDFFFFFF74787AC2C4C5
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E3E44462E3436898C8DFFFFFFFFFFFF
-DEDFDF585D5EFFFFFFE1E2E3464B4DECEDEDFEFEFE929596797D7FEBECEC43494AE0E1E1FFFFFF
-D3D4D4585D5EFFFFFFDEDFDF585D5EFFFFFFE1E2E3464B4DECEDEDFEFEFE929596797D7FEBECEC
-4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFFCECFD0505557FDFDFDFEFEFEF8F9F9FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A2E34362E3436676C6DF8F8F8FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD54585DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCECF5D6163FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFEBECEC44494BFFFFFFFFFFFFC6C7C8686D6EFFFFFFFEFEFEB1B3B4636869555A5C
-373D3FD1D2D3E1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EB7B9BA7B7F80FFFFFFFFFFFFD4D6D6
-585D5EFFFFFFB6B8B93F45475B60615B6061515658909394C0C2C2474D4E474D4E474D4EE5E6E6
-FFFFFF303638BEC0C1484D4FE7E8E8FFFFFFFFFFFFFFFFFFB6B8B93F45475B60615B6061515658
-909394FFFFFF5F6465C9CACBF3F3F3474D4EFCFCFCC0C2C2474D4E474D4E474D4EE5E6E6FFFFFF
-303638FCFCFCFEFEFEEDEDEE949899989B9CFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFF
-FFFFFFC2C3C4686D6EB8BABA74787AFFFFFFFFFFFFD4D6D6585D5EFFFFFFDEDFDF585D5EFFFFFF
-E1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EB7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFF
-F2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF96999A2E34362E3436676C6DF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD4E5257FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFF3F3F33C4243E1E2E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBECEC44494BFFFFFFFFFFFF
-C7C9C9686D6EFFFFFFD1D2D3565B5DEFEFEFFFFFFF5E6365D1D2D3E1E2E34E5355FFFFFFFFFFFF
-C4C6C6686D6EB4B7B7727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFB4B6B6707475FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCAFB2B3515658F0F1F1
-FFFFFFFFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFB1B27C8081AEB0B18B8E8F
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFE4E5E5494E50
-FFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EB4B6B6727677FFFFFF
-FFFFFFD4D6D6585D5EFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6E
-B4B7B7727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFFFFFFFFDFDFDBBBDBE595E60979A9BFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A2E3436676C6DF8F9F9FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD75797EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4A7A84E5355C7C9C9FBFBFB
-FDFDFDDEDFDFEFEFEFEBECEC44494BFFFFFFFFFFFFC7C9C9686D6EFFFFFFB9BBBB64696AFDFDFD
-EBECEC474C4ED1D2D3E1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EE8E9E93D4244DADBDCFFFFFF
-CBCDCD585D5EFFFFFFE3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638FCFCFCFFFFFF9B9E9F5E6264F7F7F7FFFFFFE3E4E4383E3FCBCDCDFFFFFF
-FDFDFDFCFCFCFFFFFFF4F5F54146485B6061D8D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF303638FCFCFCFFFFFFE8E9E9888C8D65696BFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355
-FFFFFFFFFFFFC4C6C6686D6EE6E6E73C4243DADBDCFFFFFFC3C5C5585D5EFFFFFFDEDFDF585D5E
-FFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EE8E9E93D4244DADBDCFFFFFFCBCDCD585D5E
-FFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF96999A676C6DF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD696C72FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFBEC0C15F646540464742484A5B6061D2D3D4EBECEC44494BFFFFFF
-FFFFFFC7C9C9686D6EFFFFFFF8F8F86C71724B50526A6E705E6264D1D2D3E1E2E34E5355FFFFFF
-FFFFFFC4C6C6686D6EFFFFFFC1C2C3515658595D5F606566585D5EFFFFFFFFFFFFBCBEBE505557
-4E53555B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFEFEFE
-86898A6E7273FCFCFCFFFFFFBCBEBE5055574E53555B6061D4D6D6FFFFFFFFFFFF7C8081535859
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30363843494A3E44463C42436F7374
-E6E6E7FFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EFFFFFFB9BBBC
-4C5153484D4F7074765A5F61FFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6
-686D6EFFFFFFC1C2C3515658595D5F606566585D5EFFFFFFD1D2D36165674F5456494E50B4B6B6
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCBCCCDF8F9F9FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD8B8E96FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFC5C6C765696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF929596A1A3A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C7
-65696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD5C6067FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD484D4F
-EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD585B62FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898C8D
-5F6465535859848889F8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C7696D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898C8D5F6465535859
-848889F8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD5C5F66FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD595C64FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD50545BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD8B9196
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD6D7378FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-676D71FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD6A7075FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD7D8187FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD555A60FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD4F555BFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD3E444AFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD484E53FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD43474BFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD4C5054FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD414548FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD505354FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD4D504E
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD4C4C4BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-5D5C59FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD484744FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD615E5AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD75706BFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCBCDCD585D5E5E6264C3C5C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD85837DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638474C4E474C4E474D4E727677E6E6E7FFFFFFFFFFFFD2D3D44E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E3B4143474D4E
-9B9E9FFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C6162ACAFAFFEFEFEFDFDFD
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADAFB0EAEAEBFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D3D44E5355FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCBCCCDF8F9F9FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD85837EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFF
-F8F9F9A8ABAB42484AF0F1F1FFFFFFFCFCFCE3E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638FCFCFCFEFEFEE7E8E8595D5FBDBFC0FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF4B5052E1E2E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCE3E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF96999A676C6DF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD67645FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFF828586979A9BFFFFFFDEDFDF
-585D5EFFFFFFFAFAFA838788525759575C5DA2A5A6FFFFFFDEDFDF5055565A5F614B5052636869
-E1E2E2FFFFFFDEDFDF4E5355FFFFFFFFFFFF74787A55595B3F4547919495FFFFFF929596919495
-FFFFFFFFFFFFC1C2C375797BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFF
-FFFFFF94979896999AFFFFFFBDBFC0505557505557747879F5F5F68E9192343A3C575C5D5E6365
-F7F7F7BDBFC0505557505557747879F5F5F6E1E2E35156585D6163414648E1E2E2BDBFC0505557
-505557747879F5F5F6E1E2E35257597377785055564C5153D8D9D97E8283363C3E4F5456585D5E
-E7E8E8838788525759575C5DA2A5A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF585D5E
-FFFFFFE1E2E35257597377785055564C5153D8D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A2E3436676C6D
-F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD615E59FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFC
-FFFFFFFFFFFFFFFFFFBDBFC06F7374FFFFFFDEDFDF585D5EFFFFFFCECFD0505557FDFDFDFEFEFE
-F8F9F9FFFFFFDEDFDF484D4FF8F8F8FEFEFE9B9E9F5B6061FFFFFFDEDFDF4E5355FFFFFFFFFFFF
-FEFEFEFFFFFFF3F3F33B4143E6E6E7E1E2E2464B4DFDFDFDFFFFFF74787AC2C4C5FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFCFCFCE1E2E255595BCBCCCDEAEAEB4C5153F0F1F1
-FDFDFD7C8081A1A3A4FFFFFF4B5052E1E2E3FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4
-E1E2E344494BEBEBEBFDFDFDEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4E1E2E3464B4DECEDED
-FEFEFE929596797D7FFFFFFF5B6061D4D6D6FFFFFFCECFD0505557FDFDFDFEFEFEF8F9F9FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFE1E2E3464B4DECEDEDFEFEFE929596
-797D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF96999A2E34362E3436676C6DF8F8F8FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD5B5751FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFBDBFC06F7374FFFFFF
-DEDFDF585D5EFFFFFFF2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFF
-F8F8F82F3537F4F5F5DEDFDF4E5355FFFFFFFEFEFEB1B3B4636869555A5C373D3FD1D2D3FFFFFF
-5F6465C9CACBF3F3F3474D4EFCFCFCC0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638474C4E
-393E403F4547B5B7B8FFFFFFB6B8B93F45475B60615B6061515658909394FFFFFF4B5052E1E2E3
-FFFFFFB6B8B93F45475B60615B6061515658909394E1E2E34E5355FFFFFFFFFFFFB6B8B93F4547
-5B60615B6061515658909394E1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EFFFFFF5B6061D4D6D6
-FFFFFFF2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFC0C2C2474D4E474D4E474D4EE5E6E6DEDFDF
-585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A2E3436
-2E3436676C6DF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD403C34FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCFFFFFFFFFFFFFFFFFF84888996999AFFFFFFDEDFDF585D5EFFFFFFFFFFFFFDFDFDBBBDBE
-595E60979A9BFFFFFFDEDFDF4E5355FFFFFFFFFFFFF7F7F7313739F9F9F9DEDFDF4E5355FFFFFF
-D1D2D3565B5DEFEFEFFFFFFF5E6365D1D2D3FFFFFFAFB1B27C8081AEB0B18B8E8FFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCECEDED484D4FDADBDCFFFFFFB4B6B6707475
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B5052E1E2E3FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFF
-FFFFFFE1E2E34E5355FFFFFFFFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFE1E2E34E5355
-FFFFFFFFFFFFC4C6C6686D6EFFFFFF5B6061D4D6D6FFFFFFFFFFFFFDFDFDBBBDBE595E60979A9B
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFF
-C4C6C6686D6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A2E3436676C6DF8F9F9FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD2D2A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFF8F9F9ABADAE424749EFF0F0
-FFFFFFDEDFDF585D5EFFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFFDEDFDF4C5152FDFDFD
-FEFEFE999B9C6D7173FFFFFFE4E5E5424749F8F9F9B9BBBB64696AFDFDFDEBECEC474C4ED1D2D3
-FFFFFFF4F5F54146485B6061D8D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCFFFFFFC6C8C9505557F5F5F6E3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCFFFFFF4B5052
-E1E2E3FFFFFFE3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCE1E2E34E5355FFFFFFFFFFFFE3E4E4
-383E3FCBCDCDFFFFFFFDFDFDFCFCFCE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EFFFFFF727677
-B9BBBCFFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-DEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A
-676C6DF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD2E2920
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-30363843494A43494A454A4C707476E4E5E5FFFFFFFFFFFFDEDFDF585D5EFFFFFFD1D2D3616567
-4F5456494E50B4B6B6FFFFFFDEDFDF363C3E5B6061505557717577ECEDEDFFFFFFFEFEFE6E7273
-484D4FDCDDDD6C71724B50526A6E705E6264D1D2D3FFFFFFFFFFFF7C8081535859FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF9094957B7F80FFFFFF
-BCBEBE5055574E53555B6061D4D6D6FFFFFF4B5052E1E2E3FFFFFFFFFFFFBCBEBE5055574E5355
-5B6061D4D6D6E1E2E34E5355FFFFFFFFFFFFFFFFFFBCBEBE5055574E53555B6061D4D6D6E1E2E3
-4E5355FFFFFFFFFFFFC4C6C6686D6EFFFFFFBDBFBF3D42445F6465CECFD06165674F5456494E50
-B4B6B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFF
-FFFFFFC4C6C6686D6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCBCCCDF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD342C25FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF929596A1A3A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-392F27FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD484D4FEBEBEBFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD3C322AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF
-4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFC5C6C7696D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD4C423AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD4B4238FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD51483BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD53493DFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD73695DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD53483BFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD605444FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD675948FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD70614DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD90806A
-FFFFFFFFFFFFFFFFFFFFFFFFE6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD75644CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-756249FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD78644BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD726047FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD756249FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD736048FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD6C5940FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD918166FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD76664CFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD726249FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD75644DFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD72614BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD7C6B54
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638474C4E474C4E474D4E727677E6E6E7FFFFFFFFFFFFD2D3D44E5355FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF686D6EC7C9C9
-FFFFFF303638474C4E3B4143474D4E9B9E9FFEFEFEFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D3D44E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCBCCCDF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD988872FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFF8F9F9A8ABAB42484A
-F0F1F1FFFFFFFCFCFCE3E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBECEC
-44494BFFFFFFFFFFFFFFFFFFFFFFFF686D6EC7C9C9FFFFFF303638FCFCFCFEFEFEE7E8E8595D5F
-BDBFC0FFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCE3E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-96999A676C6DF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-685842FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFF828586979A9BFFFFFFDEDFDF585D5EFFFFFFFAFAFA
-838788525759575C5DA2A5A6FFFFFFDEDFDF5055565A5F614B5052636869E1E2E2FFFFFFDEDFDF
-4E5355FFFFFFFFFFFF74787A55595B3F4547919495FFFFFF929596919495FFFFFFFFFFFFC1C2C3
-75797BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF686D6E
-C7C9C9FFFFFF303638FCFCFCFFFFFFFFFFFF94979896999AFFFFFF303638FCFCFCFFFFFFFFFFFF
-FFFFFFFAFAFA838788525759575C5DA2A5A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF
-585D5EFFFFFFE1E2E35257597377785055564C5153D8D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A2E3436676C6DF8F8F8FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD776853FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFF
-BDBFC06F7374FFFFFFDEDFDF585D5EFFFFFFCECFD0505557FDFDFDFEFEFEF8F9F9FFFFFFDEDFDF
-484D4FF8F8F8FEFEFE9B9E9F5B6061FFFFFFDEDFDF4E5355FFFFFFFFFFFFFEFEFEFFFFFFF3F3F3
-3B4143E6E6E7E1E2E2464B4DFDFDFDFFFFFF74787AC2C4C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-EBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF686D6EC7C9C9FFFFFF303638FCFCFCFCFCFCE1E2E2
-55595BCBCCCDFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFCECFD0505557FDFDFDFEFEFEF8F9F9
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFE1E2E3464B4DECEDEDFEFEFE
-929596797D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF96999A2E34362E3436676C6DF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD7A6C58FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFBDBFC06F7374FFFFFFDEDFDF585D5EFFFFFF
-F2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFF8F8F82F3537F4F5F5
-DEDFDF4E5355FFFFFFFEFEFEB1B3B4636869555A5C373D3FD1D2D3FFFFFF5F6465C9CACBF3F3F3
-474D4EFCFCFCC0C2C2474D4E474D4E474D4EE5E6E6EBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF
-686D6EC7C9C9FFFFFF303638474C4E393E403F4547B5B7B8FFFFFFFFFFFF303638FCFCFCFFFFFF
-FFFFFFFFFFFFF2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFC0C2C2474D4E474D4E474D4EE5E6E6
-DEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A2E34362E3436676C6DF8F9F9
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD7B6C58FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF
-FFFFFF84888996999AFFFFFFDEDFDF585D5EFFFFFFFFFFFFFDFDFDBBBDBE595E60979A9BFFFFFF
-DEDFDF4E5355FFFFFFFFFFFFF7F7F7313739F9F9F9DEDFDF4E5355FFFFFFD1D2D3565B5DEFEFEF
-FFFFFF5E6365D1D2D3FFFFFFAFB1B27C8081AEB0B18B8E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFAFAFA393E40FDFDFDFFFFFFFFFFFFFFFFFF595D5FDADBDCFFFFFF303638FCFCFCECEDED
-484D4FDADBDCFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDBBBDBE595E60
-979A9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFF
-FFFFFFC4C6C6686D6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF96999A2E3436676C6DF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD796954FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFF8F9F9ABADAE424749EFF0F0FFFFFFDEDFDF585D5E
-FFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFFDEDFDF4C5152FDFDFDFEFEFE999B9C6D7173
-FFFFFFE4E5E5424749F8F9F9B9BBBB64696AFDFDFDEBECEC474C4ED1D2D3FFFFFFF4F5F5414648
-5B6061D8D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6267689D9FA0FDFDFDFEFEFE
-BABCBD474C4EF9F9F9FFFFFF303638FCFCFCFFFFFFC6C8C9505557F5F5F6FFFFFF303638FCFCFC
-FFFFFFFFFFFFFFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A676C6DF8F9F9FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD8F7E69FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30363843494A43494A
-454A4C707476E4E5E5FFFFFFFFFFFFDEDFDF585D5EFFFFFFD1D2D36165674F5456494E50B4B6B6
-FFFFFFDEDFDF363C3E5B6061505557717577ECEDEDFFFFFFFEFEFE6E7273484D4FDCDDDD6C7172
-4B50526A6E705E6264D1D2D3FFFFFFFFFFFF7C8081535859FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFE5E6E66C717244494B43494A5F6465D4D6D6FFFFFFFFFFFF303638FCFCFC
-FFFFFFFFFFFF9094957B7F80FFFFFF30363843494A44494B44494B737778D1D2D36165674F5456
-494E50B4B6B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355
-FFFFFFFFFFFFC4C6C6686D6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCBCCCDF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD70604AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-929596A1A3A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD6B5B45FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD484D4FEBEBEBFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD72624CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-C5C6C7696D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD75654FFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD796851FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD8A7962
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD796850FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-7A6952FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD796950FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD77664DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD7A684EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD89765CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD756048FFFFFFFFFFFFFFFFFF
-FFFFFFE6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6FFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD6F5A41FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD745D45FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD735C44FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD826B53FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD7F694EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD715C40
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD776246FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-8D755AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD856B4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD8C7155FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD897154FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD8C7356FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD8D7558FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9BBBC505557404647
-474C4E9B9E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADAFB0EAEAEB
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFF8F8F86065669EA1A2
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E3C42434247498A8D8EFDFDFDFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADAFB0EAEAEBFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638474C4E474D4E474D4E5B6061FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCBCCCDF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD91795EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFF1F1F23C4243D6D7D8FEFEFEF2F2F2E2E3E3FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF303638FCFCFCFCFCFC6D71738B8F90FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FCFCFCFEFEFEEBECEC606566AFB2B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A676C6DF8F8F8
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD897258FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E8E83E4446F0F1F1
-FFFFFFFFFFFFFFFFFFFFFFFFE1E2E354595A5E6264484D4F737778909394575C5D43494AC2C4C5
-FFFFFFFFFFFF74787A55595B3F4547919495FFFFFFE1E2E35156585D6163414648727778363C3E
-4F5456585D5EECEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FBFBFB7C80817A7E7FFDFDFD
-FFFFFFFFFFFFFFFFFFBDBFC0505557505557747879F5F5F6929596919495FFFFFFFFFFFFC1C2C3
-75797BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF9DA0A18C9091
-E1E2E35156585D6163414648E1E2E2BDBFC0505557505557747879F5F5F6FAFAFA838788525759
-575C5DA2A5A6FFFFFFFAFAFA838788525759575C5DA2A5A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF74787A55595B3F4547919495FFFFFF7E8283363C3E4F5456585D5EECEDEDFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3C5C5585D5E
-55595B5E6264D5D6D7FFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF96999A2E3436676C6DF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD89755AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABAEAF505557909495E7E8E8FFFFFFFFFFFFE1E2E3474C4E
-F4F4F4FAFAFA4C5153A1A3A4FDFDFDB4B7B7595D5FFFFFFFFFFFFFFEFEFEFFFFFFF3F3F33B4143
-E6E6E7E1E2E344494BEBEBEBFDFDFDFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF3036388E9192676B6CFBFBFBFFFFFFFFFFFFFFFFFFEAEAEB4C5153F0F1F1FDFDFD
-7C8081A1A3A4E1E2E2464B4DFDFDFDFFFFFF74787AC2C4C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF303638FCFCFCFCFCFCE1E2E25A5F61B7B9BAE1E2E344494BEBEBEBFDFDFDEAEAEB4C5153
-F0F1F1FDFDFD7C8081A1A3A4CECFD0505557FDFDFDFEFEFEF8F9F9FFFFFFCECFD0505557FDFDFD
-FEFEFEF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFF3F3F33B4143
-E6E6E7FFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E
-474D4E474D4E989B9CFFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4EFBFBFBDEDFDF4E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A2E3436
-2E3436676C6DF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD826D54FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-F7F7F7ADAFB05A5F61828687FCFCFCE1E2E34E5355FFFFFFFFFFFF767A7BB4B6B6FFFFFFE2E3E3
-474D4EFFFFFFFEFEFEB1B3B4636869555A5C373D3FD1D2D3E1E2E34E5355FFFFFFFFFFFFFFFFFF
-5B6061D4D6D6FFFFFFC0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638BEC0C1484D4FE7E8E8
-FFFFFFFFFFFFFFFFFFB6B8B93F45475B60615B6061515658909394FFFFFF5F6465C9CACBF3F3F3
-474D4EFCFCFCC0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638474C4E454A4C585D5EA5A7A8
-FEFEFEE1E2E34E5355FFFFFFFFFFFFB6B8B93F45475B60615B6061515658909394F2F2F2555A5C
-777B7CD4D6D6FFFFFFFFFFFFF2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFC0C2C2474D4E474D4E
-474D4EE5E6E6FEFEFEB1B3B4636869555A5C373D3FD1D2D3FFFFFF5B6061D4D6D6FFFFFFC0C2C2
-474D4E474D4E474D4EE5E6E6FFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFB6B8B9767A7B
-FFFFFFFFFFFFFFFFFF4E5355DDDEDEDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A2E34362E3436676C6DF8F9F9FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD826E55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD5A5F61CBCCCDE1E2E3
-4E5355FFFFFFFFFFFF797C7EB4B6B6FFFFFFE5E6E6474D4EFFFFFFD1D2D3565B5DEFEFEFFFFFFF
-5E6365D1D2D3E1E2E34E5355FFFFFFFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638FCFCFCAFB2B3515658F0F1F1FFFFFFFFFFFFB4B6B6707475FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFAFB1B27C8081AEB0B18B8E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFE1E2E34E5355FFFFFFFFFFFFB4B6B6
-707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDBBBDBE595E60979A9BFFFFFFFFFFFFFDFDFD
-BBBDBE595E60979A9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1D2D3565B5DEFEFEFFFFFFF
-5E6365D1D2D3FFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFB5B7B8777B7CFFFFFFFFFFFFFFFFFF4F5456DFE0E0DEDFDF
-4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A
-2E3436676C6DF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD857359
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F5F5
-CACBCCF4F5F5FDFDFDD5D6D744494BE1E2E2E1E2E34E5355FFFFFFFFFFFF797C7EB4B6B6FFFFFF
-E5E6E6474D4EFFFFFFB9BBBB64696AFDFDFDEBECEC474C4ED1D2D3E1E2E34E5355FFFFFFFFFFFF
-FFFFFF727677B9BBBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFF
-9B9E9F5E6264F7F7F7FFFFFFE3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCFFFFFFF4F5F5414648
-5B6061D8D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF
-FFFFFFFFFFFFE1E2E34E5355FFFFFFFFFFFFE3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCF6F6F6
-EFEFEFFFFFFFCFD0D0474C4EFFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFB9BBBB64696AFDFDFDEBECEC474C4ED1D2D3FFFFFF727677B9BBBCFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFE8E9E9
-414648E2E3E3FFFFFFC7C9C94E5355FCFCFCE4E5E5424749F8F9F9FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96999A676C6DF8F9F9FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD817157FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDEDE6368693E44463E4446595E60BFC1C2FFFFFF
-E1E2E34E5355FFFFFFFFFFFF797C7EB4B6B6FFFFFFE5E6E6474D4EFFFFFFF8F8F86C71724B5052
-6A6E705E6264D1D2D3E1E2E34E5355FFFFFFFFFFFFFFFFFFBDBFBF3D42445F6465FBFBFBFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFEFEFE86898A6E7273FCFCFCFFFFFFBCBEBE
-5055574E53555B6061D4D6D6FFFFFFFFFFFF7C8081535859FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFE1E2E34E5355FFFFFFFFFFFF
-FFFFFFBCBEBE5055574E53555B6061D4D6D6D1D2D36165674F5456494E50B4B6B6FFFFFFD1D2D3
-6165674F5456494E50B4B6B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F86C71724B5052
-6A6E705E6264D1D2D3FFFFFFBDBFBF3D42445F6465FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-30363843494A44494B44494B585D5EFFFFFFFFFFFFC1C2C3555A5C565B5D64696ADDDEDEFFFFFF
-FEFEFE6E7273484D4FE2E3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CBCCCDF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-857359FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-929596A1A3A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD867259FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD484D4FEBEBEBFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD86725AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-C5C6C7696D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD85715BFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD79654FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD97846DFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD8B7861FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD89745EFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD88735DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD88755FFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD867560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD897C6A
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD857B6DFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6
-E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-898179FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD938E88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD8F8B87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD93918DFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD878581FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD918F8BFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD908E8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD96938FFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD999290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD9D9996FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEEEE9C9FA07D81827A7E7F7A7E7F7A7E7F7A7E7F
-7A7E7F7A7E7F7A7E7F7A7E7F7D81829C9FA0EEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCD9B9794FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-9B9E9FC4C6C6FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCC3C5C5
-9C9FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD9D9996
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D8182FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBBDBD7D8182FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F6A2A4A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFF4F4F4A3A6A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-DEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD9E9A97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBBDBD
-7A7E7F7A7E7FFFFFFFFFFFFFFFFFFFFFFFFF5E6365474D4E44494B303638474D4E474D4E838788
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-EBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-585D5ED4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFD2D3D44E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D3D44E5355FFFFFF
-E8E9E9474D4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E6365474D4E44494B303638474D4E
-474D4E838788FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFADAFB0EAEAEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-A29E99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEB4B7B77A7E7F7A7E7F7A7E7FFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBECEC44494BFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCE3E4E4FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCE3E4E4FFFFFFE8E9E9474D4EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA19D98FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFD6D8D8FEFEFEFFFFFFFEFEFEB2B4B57A7E7F
-7A7E7F7A7E7F7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFF
-FFFFFFFFFFFFC3C5C5585D5E55595B5E6264D5D6D7FFFFFFFFFFFFC5C6C7676C6D737778676C6D
-595E60FFFFFFFFFFFFC5C6C7676C6D737778676C6D595E60FFFFFFDEDFDF4E5355FFFFFFFFFFFF
-BDBFC0505557505557747879F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6
-FAFAFA838788525759575C5DA2A5A6FFFFFFFFFFFFBDBFC0505557505557747879F5F5F6FFFFFF
-74787A55595B3F4547919495FFFFFFE1E2E35156585D6163414648E1E2E2CCCECE5D6163525759
-626768E8E9E9383E3F75797B474C4E4D5254D8D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF585D5ED4D6D6E1E2E35257597377785055564C5153D8D9D9979A9B8A8D8EFFFFFFFFFFFF
-9C9FA08F9293DEDFDF585D5EFFFFFFFAFAFA838788525759575C5DA2A5A6FFFFFFDEDFDF585D5E
-FFFFFFE8E9E9343A3C5B6061505557676B6CE2E3E3FFFFFFDEDFDF4E5355FFFFFFFFFFFFBDBFC0
-505557505557747879F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494B
-FFFFFFFFFFFFFFFFFFFFFFFFBDBFC0505557505557747879F5F5F6C6C7C8505556F7F7F7FEFEFE
-686D6EACAFAF7E8283363C3E4F5456585D5EECEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCDA39F9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFF
-BCBEBF7A7E7FADAFB0FDFDFDB2B4B57A7E7F7A7E7F7A7E7FB7B9B97A7E7FFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5
-474D4EFBFBFBEBECEC4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFFEBECEC4C5152F1F1F2FFFFFF
-D4D6D6585D5EFFFFFFDEDFDF4E5355FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6CECFD0505557FDFDFDFEFEFEF8F9F9FFFFFF
-EAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFFFEFEFEFFFFFFF3F3F33B4143E6E6E7E1E2E3
-44494BEBEBEBFDFDFDECEDED474D4EDFE0E0FFFFFFFDFDFDEBECEC3C4243DADBDCFDFDFD909495
-797C7EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6E1E2E3464B4DECEDED
-FEFEFE929596797D7FE1E2E344494BFDFDFDFFFFFF55595BD9DADBDEDFDF585D5EFFFFFFCECFD0
-505557FDFDFDFEFEFEF8F9F9FFFFFFDEDFDF585D5EFFFFFFE8E9E9464B4DFEFEFEFFFFFFA3A6A7
-5E6365FFFFFFDEDFDF4E5355FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFEAEAEB4C5153F0F1F1
-FDFDFD7C8081A1A3A4FFFFFF85888A878B8CA7AAAB6D7173FEFEFEFFFFFF5B6061D4D6D6FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA6A29EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFD6D7D77A7E7F7A7E7F7A7E7F8D90917A7E7F7A7E7F
-7A7E7FB7B9B9FFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFF
-FFFFFFFFFFFFB6B8B9767A7BFFFFFFFFFFFFFFFFFF4E5355DDDEDEB7B9BA7B7F80FFFFFFFFFFFF
-D4D6D6585D5EFFFFFFB7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFFDEDFDF4E5355FFFFFF
-B6B8B93F45475B60615B6061515658909394C0C2C2474D4E474D4E474D4EE5E6E6FFFFFF585D5E
-D4D6D6F2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFB6B8B93F45475B60615B6061515658909394
-FEFEFEB1B3B4636869555A5C373D3FD1D2D3E1E2E34E5355FFFFFFFFFFFFB9BBBB797C7EFFFFFF
-FFFFFFFFFFFFEBECEC44494BFFFFFFFFFFFFC6C7C8686D6EFFFFFFC0C2C2474D4E474D4E474D4E
-E5E6E6FFFFFF585D5ED4D6D6E1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EFFFFFF5C6162CCCECE
-DEDFDF535859FFFFFFDEDFDF585D5EFFFFFFF2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFDEDFDF
-585D5EFFFFFFE8E9E9474D4EFFFFFFFFFFFFFBFBFB32383AF7F7F7DEDFDF4E5355FFFFFFB6B8B9
-3F45475B60615B6061515658909394C0C2C2474D4E474D4E474D4EE5E6E6FFFFFFFFFFFFE8E9E9
-44494BFFFFFFFFFFFFFFFFFFB6B8B93F45475B60615B6061515658909394FFFFFFF6F6F64C5153
-474C4EEDEDEEFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCDA7A39EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFF
-FEFEFEB0B3B37A7E7F7A7E7F7A7E7F7A7E7F7A7E7FB3B5B6FFFFFFFFFFFF7A7E7FFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFB5B7B8777B7CFFFFFFFFFFFF
-FFFFFF4F5456DFE0E0B4B7B7727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFB4B7B7727677FFFFFF
-FFFFFFD4D6D6585D5EFFFFFFDEDFDF4E5355FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6FFFFFFFDFDFDBBBDBE595E60979A9B
-FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFD1D2D3565B5DEFEFEFFFFFFF5E6365D1D2D3
-E1E2E34E5355FFFFFFFFFFFFB4B6B674787AFFFFFFFFFFFFFFFFFFEBECEC44494BFFFFFFFFFFFF
-C7C9C9686D6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6E1E2E34E5355
-FFFFFFFFFFFFC4C6C6686D6EFFFFFFA7AAAB85888A96999A9FA2A3FFFFFFDEDFDF585D5EFFFFFF
-FFFFFFFDFDFDBBBDBE595E60979A9BFFFFFFDEDFDF585D5EFFFFFFE8E9E9474D4EFFFFFFFFFFFF
-FEFEFE343A3CF5F5F6DEDFDF4E5355FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFB4B6B6707475
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F9F954595A454A4CEEEEEEFFFFFFFFFFFF5B6061D4D6D6
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA4A09BFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFEFEFEB0B3B37A7E7F7A7E7F7A7E7F
-ADB0B0FEFEFEFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494B
-FFFFFFFFFFFFFFFFFFE8E9E9414648E2E3E3FFFFFFC7C9C94E5355FCFCFCE8E9E93D4244DADBDC
-FFFFFFCBCDCD585D5EFFFFFFE8E9E93D4244DADBDCFFFFFFCBCDCD585D5EFFFFFFE4E5E5424749
-F8F9F9E3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-585D5ED4D6D6F6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFFE3E4E4383E3FCBCDCDFFFFFFFDFDFD
-FCFCFCB9BBBB64696AFDFDFDEBECEC474C4ED1D2D3E1E2E34E5355FFFFFFFFFFFFE5E6E63C4243
-D8D9D9FFFFFFFEFEFEEBECEC44494BFFFFFFFFFFFFC7C9C9686D6EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF585D5ED4D6D6E1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EFFFFFFEFEFEF
-44494B505557E8E9E9FFFFFFDEDFDF585D5EFFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFF
-DEDFDF585D5EFFFFFFE8E9E9454A4CFDFDFDFFFFFFC0C2C25B6061FFFFFFE4E5E5424749F8F9F9
-E3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-E8E9E944494BFFFFFFFFFFFFFFFFFFE3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCFFFFFF8E9192
-8B8F90989B9C707476FEFEFEFFFFFF727677B9BBBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCDA4A09DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFF
-FFFFFFFFFFFFFFFFFFFEFEFEADB0B07A7E7FADB0B0FEFEFEFFFFFFFFFFFFFFFFFF7A7E7FFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFC1C2C3555A5C
-565B5D64696ADDDEDEFFFFFFFFFFFFC1C2C3515658595D5F606566585D5EFFFFFFFFFFFFC1C2C3
-515658595D5F606566585D5EFFFFFFFEFEFE6E7273484D4FE2E3E3BCBEBE5055574E53555B6061
-D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6D1D2D36165674F5456494E50
-B4B6B6FFFFFFFFFFFFBCBEBE5055574E53555B6061D4D6D6F8F8F86C71724B50526A6E705E6264
-D1D2D3E1E2E34E5355FFFFFFFFFFFFFFFFFFBCBEBE5055575156586A6E70E8E9E944494BFFFFFF
-FFFFFFC7C9C9686D6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF585D5ED4D6D6E1E2E3
-4E5355FFFFFFFFFFFFC4C6C6686D6EFFFFFFFFFFFF6C7172636869FFFFFFFFFFFFDEDFDF585D5E
-FFFFFFD1D2D36165674F5456494E50B4B6B6FFFFFFDEDFDF585D5EFFFFFFE8E9E9484D4F707475
-636869636869DFE0E0FFFFFFFEFEFE6E7273484D4FE2E3E3BCBEBE5055574E53555B6061D4D6D6
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFF
-BCBEBE5055574E53555B6061D4D6D6CECFD0515658F8F8F8FBFBFB585D5EB1B3B4FFFFFFBDBFBF
-3D42445F6465FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA39F9CFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D8182FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFEFEFECDCFCF
-FEFEFEFFFFFFFFFFFFFFFFFFFCFCFC7D8182FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFC5C6C765696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C765696BFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCDA4A09DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9FA0
-C3C5C5FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCC2C4C49DA0A1
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFF
-FCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29E9BFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEE9DA0A17D81827A7E7F7A7E7F7A7E7F7A7E7F
-7A7E7F7A7E7F7A7E7F7A7E7F7D81829DA0A1EEEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-898C8D5F6465535859848889F8F9F9FFFFFFFFFFFF898C8D5F6465535859848889F8F9F9FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29E9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29E9A
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29E9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-A09C99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA09C99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCD9B9794FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA09C99FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCDA09C99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD9E9A97FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD9E9A96FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA19D9AFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEB999C9D7D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F
-7A7E7F7A7E7F7A7E7F7D81829A9D9EEBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCDA19D9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF949798
-CACBCCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDCACBCC959899
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA4A19DFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9808485FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE808485F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-DEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29F9CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7
-828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-828687F7F7F7FFFFFFFFFFFFFFFFFF5E6365474D4E44494B303638474D4E474D4E838788FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3036386D7173FFFFFFFFFFFF
-FFFFFFFFFFFF9C9FA02E3436E5E6E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D3D44E5355FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E474D4E474D4E5B6061FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF
-4E5355FFFFFFD2D3D44E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D3D44E5355FFFFFF
-FFFFFFADAFB0EAEAEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E424749
-3E44469D9FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADAFB0
-EAEAEBFFFFFFFFFFFFADAFB0EAEAEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29E9B
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638474D4ECACBCCFFFFFFFFFFFFECEDED454A4C3B4143E5E6E6FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCE3E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFCFCFCE3E4E4FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCE3E4E4FFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFEDEDEE494E50E2E3E3FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFF5B6061D4D6D6FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29F9CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-F7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFF
-FFFFFFC3C5C5585D5E55595B5E6264D5D6D7FFFFFFFFFFFFC5C6C7676C6D737778676C6D595E60
-FFFFFFFFFFFFC5C6C7676C6D737778676C6D595E60FFFFFFDEDFDF4E5355FFFFFFFFFFFFBDBFC0
-505557505557747879F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638BCBEBE575C5D
-FDFDFDFFFFFF828586A2A5A6474D4EE5E6E6FFFFFFBDBFC0505557505557747879F5F5F6FAFAFA
-838788525759575C5DA2A5A6FFFFFFFAFAFA838788525759575C5DA2A5A6FFFFFFFFFFFF74787A
-55595B3F4547919495FFFFFFFFFFFFC5C6C7676C6D737778676C6D595E60FFFFFFDEDFDF585D5E
-FFFFFFE1E2E35257597377785055564C5153D8D9D9FFFFFFC5C6C7676C6D737778676C6D595E60
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF
-C6C7C8505556F7F7F7FEFEFE686D6EACAFAFDEDFDF5055565A5F614B5052636869E1E2E2FFFFFF
-DEDFDF4E5355FFFFFFDEDFDF585D5EFFFFFFFFFFFFCCCECE5D6163525759626768DBDCDC585D5E
-FFFFFF7E8283363C3E4F5456585D5EECEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFC
-FDFDFDDBDCDC42484AECEDEDFFFFFFDEDFDF4E5355FFFFFFFFFFFFC1C2C36B7071FFFFFF7E8283
-363C3E4F5456585D5E777B7C363C3E4F5456585D5EECEDEDC3C5C5585D5E55595B5E6264D5D6D7
-FFFFFFE1E2E35257597377785055564C5153D8D9D9FAFAFA838788525759575C5DA2A5A6FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-A19E9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4E
-FBFBFBEBECEC4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFFEBECEC4C5152F1F1F2FFFFFFD4D6D6
-585D5EFFFFFFDEDFDF4E5355FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FBFBFB696D6FB4B6B6DBDCDC525759FBFBFB474D4EE5E6E6
-EAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4CECFD0505557FDFDFDFEFEFEF8F9F9FFFFFFCECFD0
-505557FDFDFDFEFEFEF8F9F9FFFFFFFFFFFFFEFEFEFFFFFFF3F3F33B4143E6E6E7EBECEC4C5152
-F1F1F2FFFFFFD4D6D6585D5EFFFFFFDEDFDF585D5EFFFFFFE1E2E3464B4DECEDEDFEFEFE929596
-797D7FEBECEC4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF303638474C4E474D4E474D4E989B9CFFFFFFFFFFFF85888A878B8CA7AAAB6D7173FEFEFE
-DEDFDF484D4FF8F8F8FEFEFE9B9E9F5B6061FFFFFFDEDFDF4E5355FFFFFFDEDFDF585D5EFFFFFF
-ECEDED474D4EDFE0E0FFFFFFFDFDFDDEDFDF585D5EFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E3E44462E3436898C8DFFFFFFFFFFFFDEDFDF
-4E5355FFFFFFFFFFFFC1C2C36B7071FFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFF5B6061D4D6D6
-FFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4EFBFBFBE1E2E3464B4DECEDEDFEFEFE929596
-797D7FCECFD0505557FDFDFDFEFEFEF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29E9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFF
-FFFFFFB6B8B9767A7BFFFFFFFFFFFFFFFFFF4E5355DDDEDEB7B9BA7B7F80FFFFFFFFFFFFD4D6D6
-585D5EFFFFFFB7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFFDEDFDF4E5355FFFFFFB6B8B9
-3F45475B60615B6061515658909394C0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638FCFCFC
-DFE0E04C515264696AC7C9C9FFFFFF474D4EE5E6E6B6B8B93F45475B60615B6061515658909394
-F2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFF2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFFFEFEFE
-B1B3B4636869555A5C373D3FD1D2D3B7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFFDEDFDF
-585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EB7B9BA7B7F80FFFFFFFFFFFFD4D6D6
-585D5EFFFFFFC0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFF6F6F64C5153474C4EEDEDEEFFFFFFDEDFDF4E5355FFFFFFFFFFFFF8F8F82F3537
-F4F5F5DEDFDF4E5355FFFFFFDEDFDF585D5EFFFFFFB9BBBB797C7EFFFFFFFFFFFFFFFFFFDEDFDF
-585D5EFFFFFFFFFFFF5B6061D4D6D6FFFFFFC0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638
-FCFCFCFEFEFEEDEDEE949899989B9CFFFFFFDEDFDF4E5355FFFFFFFFFFFFC1C2C36B7071FFFFFF
-FFFFFF5B6061D4D6D6FFFFFFFFFFFF5B6061D4D6D6FFFFFFB6B8B9767A7BFFFFFFFFFFFFFFFFFF
-4E5355DDDEDEE1E2E34E5355FFFFFFFFFFFFC2C3C4686D6EF2F2F2555A5C777B7CD4D6D6FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCDA4A19BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFB5B7B8777B7CFFFFFFFFFFFFFFFFFF
-4F5456DFE0E0B4B7B7727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFB4B7B7727677FFFFFFFFFFFF
-D4D6D6585D5EFFFFFFDEDFDF4E5355FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFA5A7A8909495FFFFFFFFFFFF474D4E
-E5E6E6B4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDBBBDBE595E60979A9BFFFFFF
-FFFFFFFDFDFDBBBDBE595E60979A9BFFFFFFD1D2D3565B5DEFEFEFFFFFFF5E6365D1D2D3B4B7B7
-727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFF
-C4C6C6686D6EB4B7B7727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F9F954595A454A4CEEEEEE
-FFFFFFDEDFDF4E5355FFFFFFFFFFFFF7F7F7313739F9F9F9DEDFDF4E5355FFFFFFDEDFDF585D5E
-FFFFFFB4B6B674787AFFFFFFFFFFFFFFFFFFDEDFDF585D5EFFFFFFFFFFFF5B6061D4D6D6FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFE4E5E5494E50FFFFFF
-DEDFDF4C5152FFFFFFFFFFFFC1C2C36B7071FFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFF5B6061
-D4D6D6FFFFFFB5B7B8777B7CFFFFFFFFFFFFFFFFFF4F5456DFE0E0E1E2E34E5355FFFFFFFFFFFF
-C4C6C6686D6EFFFFFFFDFDFDBBBDBE595E60979A9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA3A09BFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFF
-FFFFFFFFFFFFE8E9E9414648E2E3E3FFFFFFC7C9C94E5355FCFCFCE8E9E93D4244DADBDCFFFFFF
-CBCDCD585D5EFFFFFFE8E9E93D4244DADBDCFFFFFFCBCDCD585D5EFFFFFFE4E5E5424749F8F9F9
-E3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF474D4EE5E6E6E3E4E4383E3FCBCDCDFFFFFFFDFDFD
-FCFCFCF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4EFFFFFF
-B9BBBB64696AFDFDFDEBECEC474C4ED1D2D3E8E9E93D4244DADBDCFFFFFFCBCDCD585D5EFFFFFF
-DEDFDF585D5EFFFFFFE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EE8E9E93D4244DADBDCFFFFFF
-CBCDCD585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF8E91928B8F90989B9C707476FEFEFEDEDFDF4C5152FDFDFDFEFEFE999B9C
-6D7173FFFFFFE4E5E5424749F8F9F9DEDFDF585D5EFFFFFFE5E6E63C4243D8D9D9FFFFFFFEFEFE
-DEDFDF585D5EFFFFFFFFFFFF727677B9BBBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FCFCFCFFFFFFE8E9E9888C8D65696BFFFFFFEFEFEF313739E8E9E9FBFBFBA5A7A86B7071
-FFFFFFFFFFFF727677B9BBBCFFFFFFFFFFFF727677B9BBBCFFFFFFE8E9E9414648E2E3E3FFFFFF
-C7C9C94E5355FCFCFCE1E2E34E5355FFFFFFFFFFFFC4C6C6686D6EF6F6F6EFEFEFFFFFFFCFD0D0
-474C4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCDA29F9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFC1C2C3555A5C565B5D
-64696ADDDEDEFFFFFFFFFFFFC1C2C3515658595D5F606566585D5EFFFFFFFFFFFFC1C2C3515658
-595D5F606566585D5EFFFFFFFEFEFE6E7273484D4FE2E3E3BCBEBE5055574E53555B6061D4D6D6
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-474D4EE5E6E6FFFFFFBCBEBE5055574E53555B6061D4D6D6D1D2D36165674F5456494E50B4B6B6
-FFFFFFD1D2D36165674F5456494E50B4B6B6FFFFFFF8F8F86C71724B50526A6E705E6264D1D2D3
-FFFFFFC1C2C3515658595D5F606566585D5EFFFFFFDEDFDF585D5EFFFFFFE1E2E34E5355FFFFFF
-FFFFFFC4C6C6686D6EFFFFFFC1C2C3515658595D5F606566585D5EFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF30363843494A44494B44494B585D5EFFFFFFCECFD0515658F8F8F8FBFBFB
-585D5EB1B3B4DEDFDF363C3E5B6061505557717577ECEDEDFFFFFFFEFEFE6E7273484D4FC6C7C7
-585D5EFFFFFFFFFFFFBCBEBE5055575156586A6E70DBDCDC585D5EFFFFFFFFFFFFBDBFBF3D4244
-5F6465FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30363843494A3E44463C42436F7374E6E6E7
-FFFFFFFFFFFF9498993B41435156588285866B7071FFFFFFFFFFFFBDBFBF3D42445F6465FBFBFB
-BDBFBF3D42445F6465FBFBFBC1C2C3555A5C565B5D64696ADDDEDEFFFFFFE1E2E34E5355FFFFFF
-FFFFFFC4C6C6686D6ED1D2D36165674F5456494E50B4B6B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA09D99FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFF9F9F9808485FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFEFEFE808485F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFC5C6C765696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C765696BFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C765696B
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFC5C6C765696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCDA09D99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF949798C9CBCB
-FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCC9CACB959899FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFCFCFC
-FFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD9E9A98FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEB9A9D9E7D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F
-7A7E7F7A7E7F7A7E7F7D81829A9D9EEBECECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898C8D
-5F6465535859848889F8F9F9FFFFFFFFFFFF898C8D5F6465535859848889F8F9F9FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898C8D5F6465535859848889
-F8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898C8D
-5F6465535859848889F8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCD9E9A97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD9E9A98FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29E9CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA6A3A0
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29F9CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-9E9B98FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29E9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCDA6A29EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA6A3A0FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCDA8A5A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA5A29EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFEDEEEE9C9FA07D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F
-7A7E7F7A7E7F7D81829C9FA0EEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCD9F9C99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B9E9FC4C6C6
-FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCC3C5C59C9FA0FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA6A39FFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D8182FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFBBBDBD7D8182FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF
-4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D6D6585D5EFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCDA4A19DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7F
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBBDBD7A7E7F7A7E7F
-FFFFFFFFFFFFFFFFFFFFFFFF5E6365474D4E44494B303638474D4E474D4E838788FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEB1B3B4595E60464B4D54595A
-9EA1A2FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D3D44E5355FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFD4D6D6585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCFFFFFFF8F8F86065669EA1A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA6A3A0FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFEFEFEB4B7B77A7E7F7A7E7F7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-E8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-DEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF9B9E9F5B6061E1E2E2FFFFFFEBECEC6E72737E8283FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCE3E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D6D6585D5E
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFCFCFC6D71738B8F90FEFEFEFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA7A4A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFD6D8D8FEFEFEFFFFFFFEFEFEB2B4B57A7E7F7A7E7F7A7E7F
-7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFF
-C3C5C5585D5E55595B5E6264D5D6D7FFFFFFFFFFFFC5C6C7676C6D737778676C6D595E60FFFFFF
-FFFFFFC5C6C7676C6D737778676C6D595E60FFFFFFDEDFDF4E5355FFFFFFFFFFFFBDBFC0505557
-505557747879F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F1F13E4345E9EAEAFFFFFFFFFFFF
-FFFFFFF7F7F7464B4DDADBDC979A9B8A8D8EFFFFFFFFFFFF9C9FA08F9293FFFFFFBDBFC0505557
-505557747879F5F5F6E1E2E35156585D6163414648C7C9CA5156585D6163414648C5C7C7585D5E
-FFFFFFFFFFFFC8CACA595D5F55595B54595A585D5EFFFFFFFFFFFFBDBFC0505557505557747879
-F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF
-C3C5C5585D5E55595B5E6264D5D6D7FFFFFFFFFFFFCCCECE5D6163525759626768FCFCFC74787A
-55595B3F4547919495FFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FBFBFB7C80817A7E7FFDFDFDFFFFFFFFFFFFFFFFFFBDBFC0505557505557747879F5F5F6
-929596919495FFFFFFFFFFFFC1C2C375797BFAFAFA838788525759575C5DA2A5A6FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA6A3A0
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFBCBEBF7A7E7F
-ADAFB0FDFDFDB2B4B57A7E7F7A7E7F7A7E7FB7B9B97A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4EFBFBFB
-EBECEC4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFFEBECEC4C5152F1F1F2FFFFFFD4D6D6585D5E
-FFFFFFDEDFDF4E5355FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFC9CACB626768FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E8283ADAFB0E1E2E344494B
-FDFDFDFFFFFF55595BD9DADBEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4E1E2E344494BEBEBEB
-FDFDFDE1E2E344494BEBEBEBFDFDFDDEDFDF585D5EFFFFFFEBECEC43494AE0E1E1FFFFFFD3D4D4
-585D5EFFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4EFBFBFB
-ECEDED474D4EDFE0E0FFFFFFFDFDFDFFFFFFFEFEFEFFFFFFF3F3F33B4143E6E6E7DEDFDF4E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3036388E9192676B6CFBFBFBFFFFFFFFFFFF
-FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4E1E2E2464B4DFDFDFDFFFFFF74787AC2C4C5
-CECFD0505557FDFDFDFEFEFEF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA8A5A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF7A7E7FFFFFFFFFFFFFD6D7D77A7E7F7A7E7F7A7E7F8D90917A7E7F7A7E7F7A7E7FB7B9B9
-FFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFF
-B6B8B9767A7BFFFFFFFFFFFFFFFFFF4E5355DDDEDEB7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5E
-FFFFFFB7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFFDEDFDF4E5355FFFFFFB6B8B93F4547
-5B60615B6061515658909394C0C2C2474D4E474D4E474D4EE5E6E6C8CACA636869FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF808485ABAEAFFFFFFF5C6162CCCECEDEDFDF535859FFFFFFB6B8B93F4547
-5B60615B6061515658909394E1E2E34E5355FFFFFFFFFFFFE1E2E34E5355FFFFFFFFFFFFDEDFDF
-585D5EFFFFFFB8BABA74787AFFFFFFFFFFFFD4D6D6585D5EFFFFFFB6B8B93F45475B60615B6061
-515658909394C0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFF
-B6B8B9767A7BFFFFFFFFFFFFFFFFFF4E5355DDDEDEB9BBBB797C7EFFFFFFFFFFFFFFFFFFFEFEFE
-B1B3B4636869555A5C373D3FD1D2D3DEDFDF4E5355FFFFFFC0C2C2474D4E474D4E474D4EE5E6E6
-FFFFFF303638BEC0C1484D4FE7E8E8FFFFFFFFFFFFFFFFFFB6B8B93F45475B60615B6061515658
-909394FFFFFF5F6465C9CACBF3F3F3474D4EFCFCFCF2F2F2555A5C777B7CD4D6D6FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-A29E9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFEFEFEB0B3B3
-7A7E7F7A7E7F7A7E7F7A7E7F7A7E7FB3B5B6FFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFB5B7B8777B7CFFFFFFFFFFFFFFFFFF4F5456
-DFE0E0B4B7B7727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFB4B7B7727677FFFFFFFFFFFFD4D6D6
-585D5EFFFFFFDEDFDF4E5355FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFEFEFEF3E4345EBECECFFFFFFFFFFFFFFFFFFF8F8F8474D4ED8D9D9FFFFFF
-A7AAAB85888A96999A9FA2A3FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFE1E2E34E5355
-FFFFFFFFFFFFE1E2E34E5355FFFFFFFFFFFFDEDFDF585D5EFFFFFFB4B6B6727677FFFFFFFFFFFF
-D4D6D6585D5EFFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFB5B7B8777B7CFFFFFFFFFFFFFFFFFF4F5456
-DFE0E0B4B6B674787AFFFFFFFFFFFFFFFFFFD1D2D3565B5DEFEFEFFFFFFF5E6365D1D2D3DEDFDF
-4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCAFB2B3515658F0F1F1
-FFFFFFFFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFB1B27C8081AEB0B18B8E8F
-FFFFFFFFFFFFFDFDFDBBBDBE595E60979A9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA6A29EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFEFEFEB0B3B37A7E7F7A7E7F7A7E7FADB0B0FEFEFE
-FFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFF
-FFFFFFE8E9E9414648E2E3E3FFFFFFC7C9C94E5355FCFCFCE8E9E93D4244DADBDCFFFFFFCBCDCD
-585D5EFFFFFFE8E9E93D4244DADBDCFFFFFFCBCDCD585D5EFFFFFFE4E5E5424749F8F9F9E3E4E4
-383E3FCBCDCDFFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF979A9B5D6163
-E1E2E2FEFEFEEBEBEB7074757A7E7FFFFFFFFFFFFFEFEFEF44494B505557E8E9E9FFFFFFE3E4E4
-383E3FCBCDCDFFFFFFFDFDFDFCFCFCE1E2E34E5355FFFFFFFFFFFFE1E2E34E5355FFFFFFFFFFFF
-DEDFDF585D5EFFFFFFE6E6E73C4243DADBDCFFFFFFC3C5C5585D5EFFFFFFE3E4E4383E3FCBCDCD
-FFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF
-FFFFFFE8E9E9414648E2E3E3FFFFFFC7C9C94E5355FCFCFCE5E6E63C4243D8D9D9FFFFFFFEFEFE
-B9BBBB64696AFDFDFDEBECEC474C4ED1D2D3E4E5E5424749F8F9F9FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638FCFCFCFFFFFF9B9E9F5E6264F7F7F7FFFFFFE3E4E4383E3FCBCDCDFFFFFF
-FDFDFDFCFCFCFFFFFFF4F5F54146485B6061D8D9D9FFFFFFF6F6F6EFEFEFFFFFFFCFD0D0474C4E
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCDA5A29EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFF
-FFFFFFFEFEFEADB0B07A7E7FADB0B0FEFEFEFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFC1C2C3555A5C565B5D64696A
-DDDEDEFFFFFFFFFFFFC1C2C3515658595D5F606566585D5EFFFFFFFFFFFFC1C2C3515658595D5F
-606566585D5EFFFFFFFEFEFE6E7273484D4FE2E3E3BCBEBE5055574E53555B6061D4D6D6FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEADAFB0575C5D43494A5156589A9D9EFCFCFCFFFFFF
-FFFFFFFFFFFF6C7172636869FFFFFFFFFFFFFFFFFFBCBEBE5055574E53555B6061D4D6D6E1E2E3
-4E5355FFFFFFFFFFFFE1E2E34E5355FFFFFFFFFFFFDEDFDF585D5EFFFFFFFFFFFFB9BBBC4C5153
-484D4F7074765A5F61FFFFFFFFFFFFBCBEBE5055574E53555B6061D4D6D6FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF30363843494A44494B44494B737778FFFFFFC1C2C3555A5C565B5D64696A
-DDDEDEFFFFFFFFFFFFBCBEBE5055575156586A6E70F5F5F56C71724B50526A6E705E6264D1D2D3
-FEFEFE6E7273484D4FE2E3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFEFEFE
-86898A6E7273FCFCFCFFFFFFBCBEBE5055574E53555B6061D4D6D6FFFFFFFFFFFF7C8081535859
-FFFFFFFFFFFFD1D2D36165674F5456494E50B4B6B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA3A19BFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF7D8182FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFEFEFECDCFCFFEFEFEFFFFFF
-FFFFFFFFFFFFFCFCFC7D8182FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-C5C6C765696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C765696BFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF929596A1A3A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCD9E9C96FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9FA0C3C5C5FCFCFC
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCC2C4C49DA0A1FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFCFCFCFFFFFF
-FDFDFD767A7B9A9D9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD484D4F
-EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA4A29CFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFEEEEEE9DA0A17D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F
-7A7E7F7A7E7F7D81829DA0A1EEEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898C8D5F6465
-535859848889F8F9F9FFFFFFFFFFFF898C8D5F6465535859848889F8F9F9FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C7696D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCDA9A6A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA4A1A0FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCDA29E9CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA3A09EFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA19E9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA5A29F
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29E9CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-A3A09EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA5A29FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCDA5A29FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD9E9B99FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFEDEEEE9C9FA07D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F
-7A7E7F7D81829C9FA0EEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCDCDCDA29F9DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B9E9FC4C6C6FCFCFC
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCC3C5C59C9FA0FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA4A29EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF7D8182FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFBBBDBD7D8182FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-DEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCDCDCDA4A29EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBBDBD7A7E7F7A7E7FFFFFFF
-FFFFFFFFFFFFFFFFFF5E6365474D4E44494B303638474D4E474D4E838788FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E3B4143474D4E9B9E9FFEFEFE
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638474C4E474C4E
-474D4E727677E6E6E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADAFB0
-EAEAEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA3A09DFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFEFEFEB4B7B77A7E7F7A7E7F7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E9
-44494BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF
-4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF303638FCFCFCFEFEFEE7E8E8595D5FBDBFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFF8F9F9A8ABAB42484AF0F1F1FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCDCDCDA19E9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7F
-FFFFFFFFFFFFFFFFFFFFFFFFD6D8D8FEFEFEFFFFFFFEFEFEB2B4B57A7E7F7A7E7F7A7E7F7A7E7F
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFC3C5C5
-585D5E55595B5E6264D5D6D7FFFFFFFFFFFFC5C6C7676C6D737778676C6D595E60FFFFFFFFFFFF
-C5C6C7676C6D737778676C6D595E60FFFFFFDEDFDF4E5355FFFFFFFFFFFFBDBFC0505557505557
-747879F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF949798
-96999AFFFFFFC3C5C5585D5E55595B5E6264D5D6D7FFFFFFDEDFDF4E5355FFFFFFFFFFFFC3C5C5
-585D5E55595B5E6264D5D6D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFC
-FFFFFFFFFFFFFFFFFF828586979A9BFFFFFFFFFFFF74787A55595B3F4547919495FFFFFF7E8283
-363C3E4F5456585D5EECEDEDBDBFC0505557505557747879F5F5F6FAFAFA838788525759575C5D
-A2A5A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA29F9BFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFBCBEBF7A7E7FADAFB0
-FDFDFDB2B4B57A7E7F7A7E7F7A7E7FB7B9B97A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-E8E9E944494BFFFFFFFFFFFFFFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4EFBFBFBEBECEC
-4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFFEBECEC4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFF
-DEDFDF4E5355FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638FCFCFCFCFCFCE1E2E255595BCBCCCDE9EAEA414648E1E2E2FFFFFFC3C5C5
-474D4EFBFBFBDEDFDF4E5355FFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4EFBFBFBFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFBDBFC06F7374FFFFFF
-FFFFFFFEFEFEFFFFFFF3F3F33B4143E6E6E7FFFFFF5B6061D4D6D6FFFFFFEAEAEB4C5153F0F1F1
-FDFDFD7C8081A1A3A4CECFD0505557FDFDFDFEFEFEF8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA3A19DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-7A7E7FFFFFFFFFFFFFD6D7D77A7E7F7A7E7F7A7E7F8D90917A7E7F7A7E7F7A7E7FB7B9B9FFFFFF
-7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFB6B8B9
-767A7BFFFFFFFFFFFFFFFFFF4E5355DDDEDEB7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFF
-B7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFFDEDFDF4E5355FFFFFFB6B8B93F45475B6061
-5B6061515658909394C0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638474C4E393E403F4547
-B5B7B8FFFFFFB6B8B9767A7BFFFFFFFFFFFFFFFFFF4E5355DDDEDEDEDFDF4E5355FFFFFFB6B8B9
-767A7BFFFFFFFFFFFFFFFFFF4E5355DDDEDEC0C2C2474D4E474D4E474D4EE5E6E6FFFFFF303638
-FCFCFCFFFFFFFFFFFFFFFFFFBDBFC06F7374FFFFFFFEFEFEB1B3B4636869555A5C373D3FD1D2D3
-FFFFFF5B6061D4D6D6FFFFFFB6B8B93F45475B60615B6061515658909394F2F2F2555A5C777B7C
-D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA6A4A0
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFEFEFEB0B3B37A7E7F
-7A7E7F7A7E7F7A7E7F7A7E7FB3B5B6FFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFB5B7B8777B7CFFFFFFFFFFFFFFFFFF4F5456DFE0E0
-B4B7B7727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFB4B7B7727677FFFFFFFFFFFFD4D6D6585D5E
-FFFFFFDEDFDF4E5355FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638FCFCFCECEDED484D4FDADBDCFFFFFFB5B7B8777B7CFFFFFFFFFFFF
-FFFFFF4F5456DFE0E0DEDFDF4E5355FFFFFFB5B7B8777B7CFFFFFFFFFFFFFFFFFF4F5456DFE0E0
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFF84888996999A
-FFFFFFD1D2D3565B5DEFEFEFFFFFFF5E6365D1D2D3FFFFFF5B6061D4D6D6FFFFFFB4B6B6707475
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDBBBDBE595E60979A9BFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA8A6A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFEFEFEB0B3B37A7E7F7A7E7F7A7E7FADB0B0FEFEFEFFFFFF
-FFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFF
-E8E9E9414648E2E3E3FFFFFFC7C9C94E5355FCFCFCE8E9E93D4244DADBDCFFFFFFCBCDCD585D5E
-FFFFFFE8E9E93D4244DADBDCFFFFFFCBCDCD585D5EFFFFFFE4E5E5424749F8F9F9E3E4E4383E3F
-CBCDCDFFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFF
-C6C8C9505557F5F5F6E8E9E9414648E2E3E3FFFFFFC7C9C94E5355FCFCFCE4E5E5424749F8F9F9
-E8E9E9414648E2E3E3FFFFFFC7C9C94E5355FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FCFCFCFFFFFFF8F9F9ABADAE424749EFF0F0FFFFFFB9BBBB64696AFDFDFDEBECEC474C4E
-D1D2D3FFFFFF727677B9BBBCFFFFFFE3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCF6F6F6EFEFEF
-FFFFFFCFD0D0474C4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCD
-AAA8A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFF
-FEFEFEADB0B07A7E7FADB0B0FEFEFEFFFFFFFFFFFFFFFFFF7A7E7FFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFC1C2C3555A5C565B5D64696ADDDEDE
-FFFFFFFFFFFFC1C2C3515658595D5F606566585D5EFFFFFFFFFFFFC1C2C3515658595D5F606566
-585D5EFFFFFFFEFEFE6E7273484D4FE2E3E3BCBEBE5055574E53555B6061D4D6D6FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFF9094957B7F80FFFFFFC1C2C3555A5C
-565B5D64696ADDDEDEFFFFFFFEFEFE6E7273484D4FE2E3E3C1C2C3555A5C565B5D64696ADDDEDE
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30363843494A43494A454A4C707476E4E5E5
-FFFFFFFFFFFFF8F8F86C71724B50526A6E705E6264D1D2D3FFFFFFBDBFBF3D42445F6465FBFBFB
-BCBEBE5055574E53555B6061D4D6D6D1D2D36165674F5456494E50B4B6B6FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDAAA7A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF7D8182FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFEFEFECDCFCFFEFEFEFFFFFFFFFFFF
-FFFFFFFCFCFC7D8182FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C7
-65696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C765696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CDCDCDA8A6A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9FA0C3C5C5FCFCFCFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCC2C4C49DA0A1FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD
-767A7B9A9D9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDA7A5A1FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFEEEEEE9DA0A17D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F
-7A7E7F7D81829DA0A1EEEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898C8D5F6465535859
-848889F8F9F9FFFFFFFFFFFF898C8D5F6465535859848889F8F9F9FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF929291A3A19DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2B2B0A5A29EFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFBABAB9A4A29EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBEBEBCAAA7A3FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFBFBFBEA6A49FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEAEABA6FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFBFBFBEAAA6A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEA9A5A0
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEA29F98FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE
-9F9C95FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE969089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFEBEBEB999C9D7D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F
-7D81829A9D9EEBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-BFBFBE9E9992FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF949798CACBCCFDFDFDFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDCACBCC959899FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE96908AFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFF9F9F9808485FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFEFEFE808485F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4A3A6A7FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFBFBFBE989189FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFF
-FFFFFFFFFFFF5E6365474D4E44494B303638474D4E474D4E838788FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9BBBC505557404647474C4E9B9E9FFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADAFB0EAEAEBFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFF8F8F86065669EA1A2FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFF303638474C4E474C4E474D4E727677E6E6E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFE8E9E9474D4EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE8F8881FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494B
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDFDF4E5355
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F2
-3C4243D6D7D8FEFEFEF2F2F2E2E3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFCFCFC
-6D71738B8F90FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFF8F9F9
-A8ABAB42484AF0F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E9474D4EFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFCD9B764A423BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFC3C5C5585D5E
-55595B5E6264D5D6D7FFFFFFFFFFFFC5C6C7676C6D737778676C6D595E60FFFFFFFFFFFFC5C6C7
-676C6D737778676C6D595E60FFFFFFDEDFDF4E5355FFFFFFFFFFFFBDBFC0505557505557747879
-F5F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E8E83E4446F0F1F1FFFFFFFFFFFFFFFFFFFFFFFF
-E1E2E354595A5E6264484D4F737778909394575C5D43494AC2C4C5FFFFFFFFFFFF74787A55595B
-3F4547919495FFFFFFE1E2E35156585D6163414648727778363C3E4F5456585D5EECEDEDFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFF303638FBFBFB7C80817A7E7FFDFDFDFFFFFFFFFFFFFFFFFFBDBFC0
-505557505557747879F5F5F6929596919495FFFFFFFFFFFFC1C2C375797BFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFF828586979A9BFFFFFFFFFFFFBDBFC0
-505557505557747879F5F5F6E8E9E9343A3C5B6061505557676B6CE2E3E3FFFFFFDEDFDF4E5355
-FFFFFFFFFFFFC1C2C36B7071FFFFFFFFFFFFC5C6C7676C6D737778676C6D595E60FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD8162898179FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E9
-44494BFFFFFFFFFFFFFFFFFFE9EAEA414648E1E2E2FFFFFFC3C5C5474D4EFBFBFBEBECEC4C5152
-F1F1F2FFFFFFD4D6D6585D5EFFFFFFEBECEC4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFFDEDFDF
-4E5355FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFABAEAF505557909495E7E8E8FFFFFFFFFFFFE1E2E3474C4EF4F4F4FAFAFA4C5153A1A3A4
-FDFDFDB4B7B7595D5FFFFFFFFFFFFFFEFEFEFFFFFFF3F3F33B4143E6E6E7E1E2E344494BEBEBEB
-FDFDFDFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3036388E9192
-676B6CFBFBFBFFFFFFFFFFFFFFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4E1E2E2464B4D
-FDFDFDFFFFFF74787AC2C4C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFF
-FFFFFFFFFFFFBDBFC06F7374FFFFFFEAEAEB4C5153F0F1F1FDFDFD7C8081A1A3A4E8E9E9464B4D
-FEFEFEFFFFFFA3A6A75E6365FFFFFFDEDFDF4E5355FFFFFFFFFFFFC1C2C36B7071FFFFFFEBECEC
-4C5152F1F1F2FFFFFFD4D6D6585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFCD8162696159FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687
-F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFB6B8B9767A7B
-FFFFFFFFFFFFFFFFFF4E5355DDDEDEB7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFFB7B9BA
-7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFFDEDFDF4E5355FFFFFFB6B8B93F45475B60615B6061
-515658909394C0C2C2474D4E474D4E474D4EE5E6E6FFFFFFFFFFFFF7F7F7ADAFB05A5F61828687
-FCFCFCE1E2E34E5355FFFFFFFFFFFF767A7BB4B6B6FFFFFFE2E3E3474D4EFFFFFFFEFEFEB1B3B4
-636869555A5C373D3FD1D2D3E1E2E34E5355FFFFFFFFFFFFFFFFFF5B6061D4D6D6FFFFFFC0C2C2
-474D4E474D4E474D4EE5E6E6FFFFFF303638BEC0C1484D4FE7E8E8FFFFFFFFFFFFFFFFFFB6B8B9
-3F45475B60615B6061515658909394FFFFFF5F6465C9CACBF3F3F3474D4EFCFCFCC0C2C2474D4E
-474D4E474D4EE5E6E6FFFFFF303638FCFCFCFFFFFFFFFFFFFFFFFFBDBFC06F7374FFFFFFB6B8B9
-3F45475B60615B6061515658909394E8E9E9474D4EFFFFFFFFFFFFFBFBFB32383AF7F7F7DEDFDF
-4E5355FFFFFFFFFFFFC1C2C36B7071FFFFFFB7B9BA7B7F80FFFFFFFFFFFFD4D6D6585D5EFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD8162696058FFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-E8E9E944494BFFFFFFFFFFFFFFFFFFB5B7B8777B7CFFFFFFFFFFFFFFFFFF4F5456DFE0E0B4B7B7
-727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFB4B7B7727677FFFFFFFFFFFFD4D6D6585D5EFFFFFF
-DEDFDF4E5355FFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD5A5F61CBCCCDE1E2E34E5355FFFFFFFFFFFF797C7E
-B4B6B6FFFFFFE5E6E6474D4EFFFFFFD1D2D3565B5DEFEFEFFFFFFF5E6365D1D2D3E1E2E34E5355
-FFFFFFFFFFFFFFFFFF5B6061D4D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-FCFCFCAFB2B3515658F0F1F1FFFFFFFFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-AFB1B27C8081AEB0B18B8E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFC
-FFFFFFFFFFFFFFFFFF84888996999AFFFFFFB4B6B6707475FFFFFFFFFFFFFFFFFFFFFFFFE8E9E9
-474D4EFFFFFFFFFFFFFEFEFE343A3CF5F5F6DEDFDF4C5152FFFFFFFFFFFFC1C2C36B7071FFFFFF
-B4B7B7727677FFFFFFFFFFFFD4D6D6585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFCD816281766FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7
-828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFE8E9E9
-414648E2E3E3FFFFFFC7C9C94E5355FCFCFCE8E9E93D4244DADBDCFFFFFFCBCDCD585D5EFFFFFF
-E8E9E93D4244DADBDCFFFFFFCBCDCD585D5EFFFFFFE4E5E5424749F8F9F9E3E4E4383E3FCBCDCD
-FFFFFFFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F5F5CACBCCF4F5F5FDFDFDD5D6D7
-44494BE1E2E2E1E2E34E5355FFFFFFFFFFFF797C7EB4B6B6FFFFFFE5E6E6474D4EFFFFFFB9BBBB
-64696AFDFDFDEBECEC474C4ED1D2D3E1E2E34E5355FFFFFFFFFFFFFFFFFF727677B9BBBCFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFF9B9E9F5E6264F7F7F7FFFFFF
-E3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCFFFFFFF4F5F54146485B6061D8D9D9FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638FCFCFCFFFFFFF8F9F9ABADAE424749EFF0F0FFFFFF
-E3E4E4383E3FCBCDCDFFFFFFFDFDFDFCFCFCE8E9E9454A4CFDFDFDFFFFFFC0C2C25B6061FFFFFF
-EFEFEF313739E8E9E9FBFBFBA5A7A86B7071FFFFFFE8E9E93D4244DADBDCFFFFFFCBCDCD585D5E
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD8162483E37
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7828687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF828687F7F7F7FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFE8E9E944494BFFFFFFFFFFFFFFFFFFFFFFFFC1C2C3555A5C565B5D64696ADDDEDEFFFFFF
-FFFFFFC1C2C3515658595D5F606566585D5EFFFFFFFFFFFFC1C2C3515658595D5F606566585D5E
-FFFFFFFEFEFE6E7273484D4FE2E3E3BCBEBE5055574E53555B6061D4D6D6FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFDDDEDE6368693E44463E4446595E60BFC1C2FFFFFFE1E2E34E5355FFFFFFFFFFFF
-797C7EB4B6B6FFFFFFE5E6E6474D4EFFFFFFF8F8F86C71724B50526A6E705E6264D1D2D3E1E2E3
-4E5355FFFFFFFFFFFFFFFFFFBDBFBF3D42445F6465FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-303638FCFCFCFFFFFFFEFEFE86898A6E7273FCFCFCFFFFFFBCBEBE5055574E53555B6061D4D6D6
-FFFFFFFFFFFF7C8081535859FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF303638
-43494A43494A454A4C707476E4E5E5FFFFFFFFFFFFFFFFFFBCBEBE5055574E53555B6061D4D6D6
-E8E9E9484D4F707475636869636869DFE0E0FFFFFFFFFFFF9498993B41435156588285866B7071
-FFFFFFFFFFFFC1C2C3515658595D5F606566585D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD81623D332BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-F9F9F9808485FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FEFEFE808485F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C765696B
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C765696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF929596A1A3A4FFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C7
-65696BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD8162
-544942FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF949798C9CBCBFCFCFCFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCC9CACB959899FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B
-9A9D9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFDFDFD484D4FEBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFDFDFD767A7B9A9D9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD8162625850FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFEBEBEB9A9D9E7D81827A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F7A7E7F
-7D81829A9D9EEBECECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898C8D5F6465535859848889
-F8F9F9FFFFFFFFFFFF898C8D5F6465535859848889F8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C6C7696D6FFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898C8D5F6465535859
-848889F8F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-CD816271675FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD8162938B83FFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFCD8162898179FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B4D3B807870FFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFC0C0BF635B54FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2C2C1817972676058625C55
-706A635E57515C56504E48413B3833A1A49DA1A49DA1A49DA1A49DA1A49DA1A49DA1A49DA1A49D
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4B5B5B4
-B6B6B4B9B9B7BFBFBEC6C6C4
-
-end
-%%PageTrailer
-%%Trailer
-%%EOF
diff --git a/man/im/menu-customization.png b/man/im/menu-customization.png
index 3723588..7b40093 100644
Binary files a/man/im/menu-customization.png and 
b/man/im/menu-customization.png differ
diff --git a/man/im/menu-display-referents.png 
b/man/im/menu-display-referents.png
new file mode 100644
index 0000000..12a4244
Binary files /dev/null and b/man/im/menu-display-referents.png differ
diff --git a/man/im/menu-find.png b/man/im/menu-find.png
new file mode 100644
index 0000000..db8ce36
Binary files /dev/null and b/man/im/menu-find.png differ
diff --git a/man/im/menu-key-bindings.png b/man/im/menu-key-bindings.png
new file mode 100644
index 0000000..9fc3f78
Binary files /dev/null and b/man/im/menu-key-bindings.png differ
diff --git a/man/im/menu-url-browser.png b/man/im/menu-url-browser.png
new file mode 100644
index 0000000..a0c3d8c
Binary files /dev/null and b/man/im/menu-url-browser.png differ
diff --git a/man/im/menu-web-search-browser.png 
b/man/im/menu-web-search-browser.png
new file mode 100644
index 0000000..a6b0290
Binary files /dev/null and b/man/im/menu-web-search-browser.png differ
diff --git a/man/im/wgrid-2x2.png b/man/im/wgrid-2x2.png
new file mode 100644
index 0000000..1d7c7f6
Binary files /dev/null and b/man/im/wgrid-2x2.png differ
diff --git a/man/im/wgrid-2x3.png b/man/im/wgrid-2x3.png
new file mode 100644
index 0000000..eb326e2
Binary files /dev/null and b/man/im/wgrid-2x3.png differ
diff --git a/man/im/wgrid-3x5.png b/man/im/wgrid-3x5.png
new file mode 100644
index 0000000..a6a1016
Binary files /dev/null and b/man/im/wgrid-3x5.png differ
diff --git a/man/im/wgrid-4x6.png b/man/im/wgrid-4x6.png
new file mode 100644
index 0000000..d7519fd
Binary files /dev/null and b/man/im/wgrid-4x6.png differ
diff --git a/man/version.texi b/man/version.texi
index c78c2a1..f9a2794 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED August 9, 2016
address@hidden UPDATED-MONTH AUG 2016
address@hidden EDITION 6.0.2
address@hidden VERSION 6.0.2
address@hidden UPDATED November 15, 2017
address@hidden UPDATED-MONTH Nov 2017
address@hidden EDITION 7.0.0
address@hidden VERSION 7.0.0
diff --git a/set.el b/set.el
index efede61..abe4b3b 100644
--- a/set.el
+++ b/set.el
@@ -86,6 +86,7 @@ ARITY members."
                                (set:combinations rest (1- arity))))
                      set))))))
 
+;;;###autoload
 (defun set:create (&rest elements)
   "Returns a new set created from any number of ELEMENTS.
 If no ELEMENTS are given, returns the empty set.  Uses `set:equal-op' for 
comparison."
diff --git a/topwin.py b/topwin.py
new file mode 100755
index 0000000..2892cad
--- /dev/null
+++ b/topwin.py
@@ -0,0 +1,49 @@
+#!python2
+#
+# SUMMARY:      Outputs the [application name] of the topmost window at mouse 
screen position or nothing if none
+# USAGE:        <script> <x-screen-coordinate> <y-screen-coordinate>
+#
+# REQUIRES:     macOS window system and the python2 and the PyObjC libraries 
available here: https://pythonhosted.org/pyobjc/install.html
+#
+# AUTHOR:       Bob Weiner <address@hidden>
+# ORIG-DATE:    14-Oct-17 at 16:21:53
+#
+# Copyright (C) 2017  Free Software Foundation, Inc.
+# See the "HY-COPY" file for license information.
+#
+# DESCRIPTION:  
+# DESCRIP-END.
+
+import Quartz
+from sys import argv, exit
+
+if len(argv) < 3:
+    print "%s: ERROR - Call with 2 numeric arguments, X and Y representing an 
absolute screen position" % argv[0]
+    exit(1)
+
+x = int(argv[1]); y = int(argv[2])
+
+# Return the first window only that x,y falls within since the windows are 
listed in z-order (top of stack to bottom)
+def filter_and_print_top_window(x, y):
+    win_x = win_y = win_width = win_height = 0
+
+    for v in Quartz.CGWindowListCopyWindowInfo( 
Quartz.kCGWindowListOptionOnScreenOnly | 
Quartz.kCGWindowListExcludeDesktopElements, Quartz.kCGNullWindowID ):
+        val = v.valueForKey_
+        bounds_val = val('kCGWindowBounds').valueForKey_
+        
+        # If item has a non-zero WindowLayer, it is not an app and is probably 
system-level, so skip it.
+        if not val('kCGWindowIsOnscreen') or val('kCGWindowLayer'):
+            continue
+
+        win_x = int(bounds_val('X')); win_y = int(bounds_val('Y'))
+        win_width = int(bounds_val('Width')); win_height = 
int(bounds_val('Height'))
+
+        if win_x <= x and x < win_x + win_width and win_y <= y and y < win_y + 
win_height:
+            print ('[' + ((val('kCGWindowOwnerName') or '') + 
']')).encode('utf8')
+            # Add this line back in if you need to see the specific window 
within the app at the given position.
+            # + ('' if val('kCGWindowName') is None else (' ' + 
val('kCGWindowName') or '')) \
+
+            break
+
+# Filter to just the topmost window at (x,y) screen coordinates and print the 
bracketed [window name], if any.
+filter_and_print_top_window(x, y)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]