home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume15 / olvwm-3.0 / part12 < prev    next >
Text File  |  1992-02-03  |  57KB  |  1,486 lines

  1. Newsgroups: comp.sources.x
  2. Path: uunet!elroy.jpl.nasa.gov!ames!pasteur!nntp
  3. From: scott.oaks@East.Sun.COM (Scott Oaks)
  4. Subject: v15i158: OpenLook Virtual Window Mgr (3.0), Part12/21
  5. Message-ID: <1992Feb4.135811.7660@pasteur.Berkeley.EDU>
  6. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  7. Nntp-Posting-Host: postgres.berkeley.edu
  8. Organization: University of California, at Berkeley
  9. References: <csx-15i147-olvwm-3.0@uunet.UU.NET>
  10. Date: Tue, 4 Feb 1992 13:58:11 GMT
  11. Approved: dcmartin@msi.com
  12.  
  13. Submitted-by: scott.oaks@East.Sun.COM (Scott Oaks)
  14. Posting-number: Volume 15, Issue 158
  15. Archive-name: olvwm-3.0/part12
  16.  
  17. # This is a shell archive.  Remove anything before this line, then feed it
  18. # into a shell via "sh file" or similar.  To overwrite existing files,
  19. # type "sh file -c".
  20. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  21. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  22. # If this archive is complete, you will see the following message at the end:
  23. #        "End of archive 12 (of 21)."
  24. # Contents:  olvwmrc.y usermenu.c.Z.uu vdm.mask
  25. # Wrapped by dcmartin@fascet on Tue Jan 14 05:54:45 1992
  26. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  27. if test -f 'olvwmrc.y' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'olvwmrc.y'\"
  29. else
  30. echo shar: Extracting \"'olvwmrc.y'\" \(18371 characters\)
  31. sed "s/^X//" >'olvwmrc.y' <<'END_OF_FILE'
  32. X/*
  33. X *      (c) Copyright 1991 Scott Oaks
  34. X *      See LEGAL_NOTICE file for terms of the license.
  35. X */ 
  36. X
  37. X%{
  38. X#ident  "@(#)olvwmrc.y    1.1 olvwm version 1/3/92"
  39. X
  40. X#include <stdio.h>
  41. X#include <string.h>
  42. X#include <X11/Xos.h>
  43. X#include <X11/Xlib.h>
  44. X#include <X11/Xutil.h>
  45. X#include <X11/keysym.h>
  46. X
  47. X#include "list.h"
  48. X#include "mem.h"
  49. X#include "win.h"
  50. X#include "menu.h"
  51. X#include "kbdfuncs.h"
  52. X#include "olwm.h"
  53. X#include "ollocale.h"
  54. X#include "globals.h"
  55. X#include "virtual.h"
  56. X#include "i18n.h"
  57. X
  58. X#define OLVWM_USE_SELECTION    "OLVWM_USE_SELECTION"
  59. X
  60. Xextern CheckForKeyProg();
  61. Xchar    *LookupToken();
  62. X
  63. Xstatic char     sccsid[] = "@(#)olvwmrc.y    1.1 olvwm version 1/2/92";
  64. X
  65. Xtypedef struct progscreen {
  66. X    char        *target;
  67. X    int         screen;
  68. X} ProgScreen;
  69. X
  70. Xtypedef enum { Warp, Open, Raise, Execute, Goto, Close, Quit } Action;
  71. X
  72. Xtypedef struct progkeynode {
  73. X    Action    action;
  74. X    char    *parameter;
  75. X} ProgKeyNode;
  76. X
  77. Xtypedef struct progkey {
  78. X    int         modmask;
  79. X    KeyCode     keycode;
  80. X    List    *todo;
  81. X} ProgKey;
  82. X
  83. Xtypedef struct winmenuactions {
  84. X    char    *key;
  85. X    List    *actions;
  86. X} WinMenuActions;
  87. X
  88. XList    *ProgScreenList = NULL;
  89. XList    *ProgKeyList = NULL;
  90. XList    *WinMenuActionsList = NULL;
  91. X
  92. Xstatic Display    *dpy;
  93. X%}
  94. X
  95. X
  96. X%start file
  97. X
  98. X%union {
  99. X    int        ival;
  100. X    void    *sval;
  101. X}
  102. X
  103. X%token    <ival> WARP
  104. X%token    <ival> OPEN
  105. X%token    <ival> RAISE
  106. X%token    <ival> CLOSE
  107. X%token    <ival> QUIT
  108. X%token    <ival> EXECUTE
  109. X%token    <ival> GOTO
  110. X%token    <ival> MODIFIER
  111. X%token    <sval> KEY
  112. X%token    <sval> WORD
  113. X%token    <ival> COLON
  114. X%token    <ival> OPENBRACE
  115. X%token    <ival> CLOSEBRACE
  116. X%token    <ival> COMMA
  117. X%token    <ival> SCREEN
  118. X%token    <ival> INT
  119. X%token    <sval> STARTSQUOTE
  120. X%token    <sval> STARTDQUOTE
  121. X%token    <sval> ENDSQUOTE
  122. X%token    <sval> ENDDQUOTE
  123. X%token    <ival> WINMENU
  124. X%token  <ival> PLUS
  125. X
  126. X%type    <sval> List
  127. X%type    <ival> Modifier
  128. X%type    <sval> Actions
  129. X%type    <sval> KeySpec
  130. X%type    <sval> WarpAction
  131. X%type    <sval> OpenAction
  132. X%type    <sval> RaiseAction
  133. X%type    <sval> GotoAction
  134. X%type    <sval> ExecuteAction
  135. X%type    <sval> CloseAction
  136. X%type    <sval> QuitAction
  137. X%type    <ival> ScreenStart
  138. X%type    <sval> String
  139. X%type    <sval> WinMenuActions
  140. X%type    <sval> Key
  141. X
  142. X%%
  143. X/* Rules */
  144. X
  145. Xfile    :    /* empty */
  146. X    |    file KeyProg
  147. X    |    file ScreenProg
  148. X    |    file WinMenuProg
  149. X    |    error CLOSEBRACE
  150. X
  151. XKeyProg    :    KeySpec OPENBRACE Actions CLOSEBRACE
  152. X        {
  153. X            ProgKey    *p;
  154. X            int        ret;
  155. X            KeyDescriptor    *d;
  156. X
  157. X            p = $1;
  158. X            p->todo = $3;
  159. X            d = (KeyDescriptor *) MemAlloc(sizeof(*d));
  160. X            d->rsrc_name = NULL;
  161. X            d->dflt_binding = NULL;
  162. X            d->function = (void (*)()) CheckForKeyProg;
  163. X            d->action = ACTION_VIRTUAL;
  164. X            d->flags = KD_DYNAMIC;
  165. X            AddKeyBinding(p->keycode, p->modmask, d);
  166. X            ProgKeyList = ListCons($1, ProgKeyList);
  167. X        }
  168. X
  169. XScreenProg :    ScreenStart List CLOSEBRACE
  170. X        {
  171. X            ProgScreen    *p;
  172. X
  173. X            p = (ProgScreen *) MemAlloc(sizeof(ProgScreen));
  174. X            p->screen = $1 - 1;        /* count internally from 0 */
  175. X            p->target = $2;
  176. X            ProgScreenList = ListCons(p, ProgScreenList);
  177. X        }
  178. X
  179. XWinMenuProg :    WINMENU OPENBRACE WinMenuActions CLOSEBRACE
  180. X        {
  181. X            static int DoneWinMenuActions = False;
  182. X
  183. X            if (DoneWinMenuActions) {
  184. X            ErrorWarning(gettext("Duplicate WINMENU entry in .olvwmrc"));
  185. X            YYERROR;
  186. X            }
  187. X            WinMenuActionsList = $3;
  188. X        }
  189. X
  190. XWinMenuActions : /* empty */
  191. X        { $$ = NULL; }
  192. X    |    WinMenuActions String OPENBRACE Actions CLOSEBRACE
  193. X        { 
  194. X            WinMenuActions    *p;
  195. X
  196. X            p = (WinMenuActions *) MemAlloc(sizeof(WinMenuActions));
  197. X            p->key = strdup($2);
  198. X            p->actions = $4;
  199. X            $$ = ListCons(p, $1);
  200. X        }
  201. X
  202. XActions :    /* empty */
  203. X        { $$ = NULL; }
  204. X    |    Actions WarpAction
  205. X        { $$ = ListCons($2, $1); }
  206. X    |    Actions OpenAction
  207. X        { $$ = ListCons($2, $1); }
  208. X    |    Actions RaiseAction
  209. X        { $$ = ListCons($2, $1); }
  210. X    |    Actions ExecuteAction
  211. X        { $$ = ListCons($2, $1); }
  212. X    |    Actions GotoAction
  213. X        { $$ = ListCons($2, $1); }
  214. X    |    Actions CloseAction
  215. X        { $$ = ListCons($2, $1); }
  216. X    |    Actions QuitAction
  217. X        { $$ = ListCons($2, $1); }
  218. X
  219. XWarpAction :    WARP COLON String
  220. X            { 
  221. X                ProgKeyNode    *p;
  222. X
  223. X                p = (ProgKeyNode *) MemAlloc(sizeof(ProgKeyNode));
  224. X                p->action = Warp;
  225. X                p->parameter = strdup($3);
  226. X                $$ = p;
  227. X            }
  228. X    
  229. XCloseAction:    CLOSE COLON List
  230. X            { 
  231. X                ProgKeyNode    *p;
  232. X
  233. X                p = (ProgKeyNode *) MemAlloc(sizeof(ProgKeyNode));
  234. X                p->action = Close;
  235. X                p->parameter = $3;
  236. X                $$ = p;
  237. X            }
  238. X    
  239. XQuitAction:    QUIT COLON List
  240. X            { 
  241. X                ProgKeyNode    *p;
  242. X
  243. X                p = (ProgKeyNode *) MemAlloc(sizeof(ProgKeyNode));
  244. X                p->action = Quit;
  245. X                p->parameter = $3;
  246. X                $$ = p;
  247. X            }
  248. X
  249. XOpenAction:    OPEN COLON List
  250. X            { 
  251. X                ProgKeyNode    *p;
  252. X
  253. X                p = (ProgKeyNode *) MemAlloc(sizeof(ProgKeyNode));
  254. X                p->action = Open;
  255. X                p->parameter = $3;
  256. X                $$ = p;
  257. X            }
  258. X            
  259. XRaiseAction:    RAISE COLON List
  260. X            { 
  261. X                ProgKeyNode    *p;
  262. X
  263. X                p = (ProgKeyNode *) MemAlloc(sizeof(ProgKeyNode));
  264. X                p->action = Raise;
  265. X                p->parameter = $3;
  266. X                $$ = p;
  267. X            }
  268. X            
  269. XExecuteAction:    EXECUTE COLON List
  270. X            { 
  271. X                ProgKeyNode    *p;
  272. X
  273. X                p = (ProgKeyNode *) MemAlloc(sizeof(ProgKeyNode));
  274. X                p->action = Execute;
  275. X                p->parameter = $3;
  276. X                $$ = p;
  277. X            }
  278. X
  279. XGotoAction:    GOTO COLON String
  280. X            {
  281. X                ProgKeyNode    *p;
  282. X
  283. X                p = (ProgKeyNode *) MemAlloc(sizeof(ProgKeyNode));
  284. X                p->action = Goto;
  285. X                p->parameter = strdup($3);
  286. X                $$ = p;
  287. X            }
  288. X
  289. XKeySpec :     Key Modifier
  290. X            { 
  291. X                KeySym    ks;
  292. X                KeyCode    kc;
  293. X                ProgKey    *p;
  294. X                char    msg[80];
  295. X
  296. X                ks = XStringToKeysym($1);
  297. X                if (ks == NoSymbol) {
  298. X                sprintf(msg,
  299. X                    gettext("Unknown keysymbol %s in .olvwmrc"),
  300. X                    $1);
  301. X                ErrorWarning(msg);
  302. X                YYERROR;
  303. X                }
  304. X                kc = XKeysymToKeycode(dpy, ks);
  305. X                if (kc == 0) {
  306. X                sprintf(msg,
  307. X                    gettext("Unknown keysymbol %s in .olvwmrc"),
  308. X                    $1);
  309. X                ErrorWarning(msg);
  310. X                YYERROR;
  311. X                }
  312. X                p = (ProgKey *) MemAlloc(sizeof(ProgKey));
  313. X                p->keycode = kc;
  314. X                p->modmask = $2;
  315. X
  316. X                $$ = p;
  317. X                free($1);
  318. X            }
  319. X
  320. XKey    :    KEY
  321. X        { $$ = strdup($1); }
  322. X
  323. XModifier :    /* empty */
  324. X            { $$ = 0; }
  325. X    |    Modifier PLUS MODIFIER
  326. X            {
  327. X                KeyCode    kc;
  328. X                char msg[80];
  329. X
  330. X                if ($3 == -1)
  331. X                    $$ = AnyModifier;
  332. X                else {
  333. X                kc = XKeysymToKeycode(dpy, $3);
  334. X                if (kc == 0) {
  335. X                    sprintf(msg,
  336. X                    gettext("Unknown modifer %d\n in .olvwmrc"),
  337. X                    $2);
  338. X                    ErrorWarning(msg);
  339. X                    YYERROR;
  340. X                }
  341. X                }
  342. X                $$ |= FindModifierMask(kc);
  343. X            }
  344. X
  345. XList    :    String
  346. X            { $$ = $1; }
  347. X    |    List COMMA String
  348. X            {
  349. X                char    *s;
  350. X
  351. X                s = MemAlloc(strlen($1) + strlen($3) + 2);
  352. X                sprintf(s, "%s,%s", $1, $3);
  353. X                free($1);
  354. X                free($3);
  355. X                $$ = s;
  356. X            }
  357. X
  358. XScreenStart :    SCREEN INT OPENBRACE
  359. X        {
  360. X            $$ = $2;
  361. X        }
  362. X
  363. XString :    WORD
  364. X        {
  365. X        char    *t;
  366. X
  367. X        t = $1;
  368. X        if (*t == '\"' || *t == '\'') {
  369. X            /* word in quotes; get rid of them */
  370. X            t++;
  371. X            t[strlen(t) - 1] = '\0';
  372. X        }
  373. X        $$ = strdup(t);
  374. X        free($1);
  375. X        }
  376. X%%
  377. X/* Programs */
  378. X#define YYDEBUG 1
  379. X#include "parse.c"
  380. X
  381. Xextern List    *ActiveClientList;
  382. X
  383. Xyyerror(s)
  384. X    char    *s;
  385. X
  386. X{
  387. Xchar    msg[256];
  388. X
  389. X    sprintf(msg, gettext("Syntax error near %s in .olvwmrc -- entry ignored\n"),
  390. X        yytext);
  391. X    ErrorWarning(msg);
  392. X}
  393. X
  394. Xstatic ProgKey    *
  395. XmatchProgKey(p, ev)
  396. X    ProgKey    *p;
  397. X    XEvent    *ev;
  398. X
  399. X{
  400. X    if (p->keycode == ev->xkey.keycode &&
  401. X    (p->modmask == AnyModifier || p->modmask == ev->xkey.state))
  402. X    return p;
  403. X    return NULL;
  404. X}
  405. X
  406. Xstatic ProgScreen *
  407. XmatchProgString(p, s)
  408. X    ProgScreen    *p;
  409. X    char    *s;
  410. X{
  411. Xchar    *t, *t1;
  412. X
  413. X    t1= strdup(p->target);
  414. X    t = LookupToken(t1, ",");
  415. X    while (t) {
  416. X        if (!strncmp(t, s, strlen(t))) {
  417. X        free(t1);
  418. X        return p;
  419. X    }
  420. X    t = LookupToken(NULL, ",");
  421. X    }
  422. X    free(t1);
  423. X    return NULL;
  424. X}
  425. X
  426. Xstatic Client    *
  427. XfindClient(c, s)
  428. X    Client    *c;
  429. X    char    *s;
  430. X{
  431. X    if (c->framewin && c->framewin->fcore.name)
  432. X        if (!strncmp(c->framewin->fcore.name, s, strlen(s)))
  433. X        return c;
  434. X    if (c->wmClass)
  435. X        if (!strcmp(c->wmClass, s))
  436. X        return c;
  437. X    if (c->wmInstance)
  438. X        if (!strcmp(c->wmInstance, s))
  439. X        return c;
  440. X    return NULL;
  441. X}
  442. X
  443. Xstatic int applyIsKey = False;
  444. X
  445. Xstatic int
  446. XapplyAction(p, cli)
  447. X    ProgKeyNode    *p;
  448. X    Client    *cli;
  449. X
  450. X{
  451. XClient    *c;
  452. Xchar    *s, *t;
  453. XList    *l;
  454. Xint    rootX, rootY, root, child, winX, winY, keys;
  455. X
  456. X    switch(p->action) {
  457. X    case Warp:
  458. X        /*
  459. X         * We only allow one lookup per warp, but we can't use p.parameter
  460. X         * directly, since it may contain special characters which
  461. X         * LookupToken will remove
  462. X         */
  463. X        s = strdup(p->parameter);
  464. X        t = LookupToken(s, ",");
  465. X        if (strcmp(t, OLVWM_USE_SELECTION))
  466. X            c = (Client *) ListApply(ActiveClientList, findClient, t);
  467. X        else c = cli;
  468. X        free(s);
  469. X        if (c) {
  470. X        VDMMoveTo(dpy, c, c->framewin->core.x, c->framewin->core.y);
  471. X        /*
  472. X         * If we got here via a key, move the mouse to the window and
  473. X         * give it focus
  474. X         */
  475. X        if (applyIsKey) {
  476. X            if (!XQueryPointer(dpy, PANEWINOFCLIENT(c), 
  477. X                &root, &child, &rootX, &rootY, &winX, &winY,
  478. X                &keys))
  479. X            break;
  480. X            XWarpPointer(dpy, None, None, 0, 0, 0, 0, 
  481. X                    c->framewin->core.x - rootX +
  482. X                        c->framewin->core.width / 2,
  483. X                    c->framewin->core.y - rootY +
  484. X                        c->framewin->core.height / 2);
  485. X        }
  486. X        if (!GRV.FocusFollowsMouse)
  487. X            ClientSetFocus(c, True, CurrentTime);
  488. X        }
  489. X        break;
  490. X
  491. X    case Open:
  492. X        s = strdup(p->parameter);
  493. X        t = LookupToken(s, ",");
  494. X        while (t) {
  495. X            l = ActiveClientList;
  496. X        if (!strcmp(t, OLVWM_USE_SELECTION))
  497. X            if (cli->wmState == IconicState)
  498. X            StateIconNorm(cli);
  499. X            else ;
  500. X        else for (c = ListEnum(&l); c != NULL; c = ListEnum(&l))
  501. X            if (findClient(c, t) && c->wmState == IconicState)
  502. X                    StateIconNorm(c);
  503. X        t = LookupToken(NULL, ",");
  504. X        }
  505. X        free(s);
  506. X        break;
  507. X
  508. X    case Close:
  509. X        s = strdup(p->parameter);
  510. X        t = LookupToken(s, ",");
  511. X        while (t) {
  512. X            l = ActiveClientList;
  513. X        if (!strcmp(t, OLVWM_USE_SELECTION))
  514. X            if (cli->wmState == NormalState)
  515. X            StateNormIcon(cli);
  516. X            else ;
  517. X        else for (c = ListEnum(&l); c != NULL; c = ListEnum(&l))
  518. X            if (findClient(c, t) && c->wmState == NormalState)
  519. X                    StateNormIcon(c);
  520. X        t = LookupToken(NULL, ",");
  521. X        }
  522. X        free(s);
  523. X        break;
  524. X
  525. X    case Quit:
  526. X        s = strdup(p->parameter);
  527. X        t = LookupToken(s, ",");
  528. X        while (t) {
  529. X            l = ActiveClientList;
  530. X        if (!strcmp(t, OLVWM_USE_SELECTION))
  531. X            ClientKill(cli, True);
  532. X        else for (c = ListEnum(&l); c != NULL; c = ListEnum(&l))
  533. X            if (findClient(c, t))
  534. X                ClientKill(c, True);
  535. X        t = LookupToken(NULL, ",");
  536. X        }
  537. X        free(s);
  538. X        break;
  539. X
  540. X    case Raise:
  541. X        s = strdup(p->parameter);
  542. X        t = LookupToken(s, ",");
  543. X        while (t) {
  544. X            l = ActiveClientList;
  545. X        if (!strcmp(t, OLVWM_USE_SELECTION))
  546. X            if (cli->wmState == IconicState)
  547. X             RaiseWindow(cli->iconwin);
  548. X            else RaiseWindow(cli->framewin);
  549. X        else for (c = ListEnum(&l); c != NULL; c = ListEnum(&l))
  550. X            if (findClient(c, t))
  551. X                if (c->wmState == IconicState)
  552. X                    RaiseWindow(c->iconwin);
  553. X                else RaiseWindow(c->framewin);
  554. X        t = LookupToken(NULL, ",");
  555. X        }
  556. X        free(s);
  557. X        break;
  558. X
  559. X    case Execute:
  560. X        s = strdup(p->parameter);
  561. X        t = LookupToken(s, ",");
  562. X        while (t) {
  563. X            ExecCommand(cli->scrInfo->environment, t);
  564. X        t = LookupToken(NULL, ",");
  565. X        }
  566. X        free(s);
  567. X        break;
  568. X    
  569. X    case Goto:
  570. X        VDMGoto(dpy, cli, atoi(p->parameter));
  571. X        break;
  572. X    }
  573. X    return False;
  574. X}
  575. X
  576. XInitOlvwmRC(ldpy)
  577. X    Display    *ldpy;
  578. X
  579. X{
  580. Xchar    *path, s[256];
  581. Xextern char    *getenv();
  582. X
  583. X    while (1) {
  584. X    /* try reading OLVWMRC */
  585. X    path = getenv("OLVWMRC");
  586. X    if (path)
  587. X        if (yyin = fopen(path, "r"))
  588. X        break;
  589. X        sprintf(s, ".olvwmrc");
  590. X        if (yyin = fopen(s, "r"))
  591. X        break;
  592. X    sprintf(s, "%s/.olvwmrc", getenv("HOME"));
  593. X    if (yyin = fopen(s, "r"))
  594. X        break;
  595. X    return;
  596. X    }
  597. X    dpy = ldpy;
  598. X    yyparse();
  599. X#ifdef DEBUG
  600. X    DumpProgKeyList();
  601. X    DumpScreenList();
  602. X    DumpWinMenuList();
  603. X#endif
  604. X    fclose(yyin);
  605. X}
  606. X
  607. XDestroyProgScreen(p)
  608. X    ProgScreen    *p;
  609. X{
  610. X    MemFree(p->target);
  611. X    return False;
  612. X}
  613. X
  614. XDestroyProgKeyNode(p)
  615. X    ProgKeyNode    *p;
  616. X{
  617. X    MemFree(p->parameter);
  618. X    return False;
  619. X}
  620. X
  621. XDestroyProgKey(p)
  622. X    ProgKey    *p;
  623. X{
  624. X    ListApply(p->todo, DestroyProgKeyNode);
  625. X    ListDestroy(p->todo);
  626. X    return False;
  627. X}
  628. X
  629. XDestroyWinMenuActions(p)
  630. X    WinMenuActions    *p;
  631. X{
  632. X    ListApply(p->actions, DestroyProgKeyNode);
  633. X    ListDestroy(p->actions);
  634. X}
  635. X
  636. XReInitOlvwmRC(ldpy)
  637. X    Display    *ldpy;
  638. X
  639. X{
  640. X    ListApply(ProgScreenList, DestroyProgScreen);
  641. X    ListDestroy(ProgScreenList);
  642. X    ListApply(ProgKeyList, DestroyProgKey);
  643. X    ListDestroy(ProgKeyList);
  644. X    ListApply(WinMenuActionsList, DestroyWinMenuActions);
  645. X    ListDestroy(WinMenuActionsList);
  646. X    ProgScreenList = NULL;
  647. X    ProgKeyList = NULL;
  648. X    WinMenuActionsList = NULL;
  649. X    InitOlvwmRC(ldpy);
  650. X}
  651. X
  652. XSearchProgString(dpy, scrInfo, name, inst, wm_class,
  653. X         frame_x, frame_y, icon_x, icon_y)
  654. X    Display    *dpy;
  655. X    ScreenInfo    *scrInfo;
  656. X    char    *name, *inst, *wm_class;
  657. X    int        *frame_x, *frame_y, *icon_x, *icon_y;
  658. X{
  659. XProgScreen    *p = NULL;
  660. Xint        dw = DisplayWidth(dpy, scrInfo->screen);
  661. Xint        dh = DisplayHeight(dpy, scrInfo->screen);
  662. X
  663. X    if (name)
  664. X       p = (ProgScreen *) ListApply(ProgScreenList, matchProgString, name);
  665. X    if (!p && inst)
  666. X       p = (ProgScreen *) ListApply(ProgScreenList, matchProgString, inst);
  667. X    if (!p && wm_class)
  668. X       p = (ProgScreen *) ListApply(ProgScreenList, matchProgString, wm_class);
  669. X    if (p) {
  670. X    *frame_x = (*frame_x % dw) + dw * (p->screen % scrInfo->vdm->columns) +
  671. X                scrInfo->vdm->offsetX;
  672. X    *icon_x = (*icon_x % dw) + dw * (p->screen % scrInfo->vdm->columns) +
  673. X                scrInfo->vdm->offsetX;
  674. X    *frame_y = (*frame_y % dh) + dh * (p->screen / scrInfo->vdm->columns) +
  675. X                scrInfo->vdm->offsetY;
  676. X    *icon_y = (*icon_y % dh) + dh * (p->screen / scrInfo->vdm->columns) +
  677. X                scrInfo->vdm->offsetY;
  678. X    }
  679. X}
  680. X
  681. XCheckForKeyProg(dpy, ev)
  682. X    Display    *dpy;
  683. X    XEvent    *ev;
  684. X{
  685. XProgKey    *p;
  686. XWinGeneric    *win;
  687. X
  688. X    p = (ProgKey *) ListApply(ProgKeyList, matchProgKey, ev);
  689. X    if (!p)
  690. X    return False;
  691. X    if (ev->xkey.type != KeyPress)
  692. X    return False;
  693. X    win = (WinGeneric *) WIGetInfo(ev->xkey.window);
  694. X    if (!win)
  695. X        win = (WinGeneric *) VGetInfo(ev->xkey.window);
  696. X    if (!win)
  697. X    ErrorWarning(gettext("Unexpected window keyboard event"));
  698. X    else {
  699. X    applyIsKey = True;
  700. X    ListApply(p->todo, applyAction, win->core.client);
  701. X    }
  702. X    return True;
  703. X}
  704. X
  705. XDumpProgKeyNode(n)
  706. X    ProgKeyNode    *n;
  707. X{
  708. X    printf(gettext("Action %d parameter %s\n"), n->action, n->parameter);
  709. X    return False;
  710. X}
  711. X
  712. XDumpProgKey(p)
  713. X    ProgKey    *p;
  714. X{
  715. X    printf(gettext("Actions for key %d mask %x\n"), p->keycode, p->modmask);
  716. X    ListApply(p->todo, DumpProgKeyNode, 0);
  717. X    return False;
  718. X}
  719. X
  720. XDumpProgKeyList()
  721. X{
  722. X    ListApply(ProgKeyList, DumpProgKey, 0);
  723. X}
  724. X
  725. XDumpProgScreen(p)
  726. X    ProgScreen    *p;
  727. X{
  728. X    printf(gettext("Screen %d:  %s\n"), p->screen, p->target);
  729. X    return False;
  730. X}
  731. X
  732. XDumpWinMenu(p)
  733. X    WinMenuActions    *p;
  734. X{
  735. X    printf(gettext("Menu key %s\n"), p->key);
  736. X    ListApply(p->actions, DumpProgKeyNode, 0);
  737. X    return False;
  738. X}
  739. X
  740. XDumpScreenList()
  741. X{
  742. X    ListApply(ProgScreenList, DumpProgScreen, 0);
  743. X}
  744. X
  745. XDumpWinMenuList()
  746. X{
  747. X    ListApply(WinMenuActionsList, DumpWinMenu, 0);
  748. X}
  749. X
  750. Xchar *
  751. XLookupToken(src, delim)
  752. X    char    *src;
  753. X    char    *delim;
  754. X
  755. X{
  756. Xstatic char    last[128], *next, *final;
  757. Xchar    *s, *t;
  758. Xint    idx = 0;
  759. X
  760. X    if (src) {
  761. X    next = src;
  762. X    final = src + strlen(src);
  763. X    }
  764. X    if (next > final)
  765. X    return NULL;
  766. X    s = next;
  767. X    while (*s && !strchr(delim, *s)) {
  768. X    if (*s == '\\')
  769. X        s++;
  770. X    else if (*s == '\"') {
  771. X        last[idx++] = *s++;
  772. X        while (*s && *s != '\"')
  773. X        last[idx++] = *s++;
  774. X    }
  775. X    else if (*s == '\'') {
  776. X        last[idx++] = *s++;
  777. X        while (*++s && *s != '\'')
  778. X        last[idx++] = *s++;
  779. X    }
  780. X    last[idx++] = *s++;
  781. X    }
  782. X    *s = '\0';
  783. X    last[idx] = '\0';
  784. X    next = s + 1;
  785. X    return last;
  786. X}
  787. X
  788. XMenuOfWindowsAction(dpy,winInfo,menuInfo,idx)
  789. XDisplay     *dpy;
  790. XWinGeneric      *winInfo;
  791. XMenuInfo        *menuInfo;
  792. Xint         idx;
  793. X{
  794. XClient    *cli;
  795. XList    *l;
  796. X
  797. X    cli = (Client *) menuInfo->menu->buttons[idx]->action.submenu;
  798. X    l = (List *) ListApply(WinMenuActionsList,
  799. X            matchProgString, cli->framewin->fcore.name);
  800. X    if (!l)
  801. X        l = (List *) ListApply(WinMenuActionsList, matchProgString, cli->wmInstance);
  802. X    if (!l)
  803. X        l = (List *) ListApply(WinMenuActionsList, matchProgString, cli->wmClass);
  804. X    if (l) {
  805. X    applyIsKey = False;
  806. X    ListApply(l, applyAction, cli);
  807. X    }
  808. X    else {
  809. X    /* Warp */
  810. X    VDMMoveTo(dpy, cli, cli->framewin->core.x, cli->framewin->core.y);
  811. X    /* Open */
  812. X    if (cli && cli->wmState == IconicState)
  813. X        StateIconNorm(cli);
  814. X    /* Raise */
  815. X    RaiseWindow(cli->framewin);
  816. X    }
  817. X}
  818. X
  819. Xstatic void *
  820. XaddButton(cli, menu)
  821. X    Client    *cli;
  822. X    Menu    *menu;
  823. X
  824. X{
  825. XButton    *b;
  826. Xint    len;
  827. X
  828. X#define MENU_LENGTH    (32)
  829. X
  830. X    if (!cli->framewin)
  831. X    return NULL;
  832. X    if (!menu->buttonCount++)
  833. X    menu->buttons = (Button **) MemAlloc(sizeof(Button *));
  834. X    else menu->buttons = (Button **)
  835. X        MemRealloc(menu->buttons, menu->buttonCount * sizeof(Button *));
  836. X    b = (Button *) MemAlloc(sizeof(Button));
  837. X    menu->buttons[menu->buttonCount - 1] = b;
  838. X
  839. X    len = strlen(cli->framewin->fcore.name);
  840. X    if (len > MENU_LENGTH)
  841. X    len = MENU_LENGTH;
  842. X
  843. X    b->label[0].kind = StringLabel;
  844. X    b->label[1].kind = NoType;
  845. X    b->label[0].string = MemAlloc(len + 3);
  846. X    b->label[0].string[0] = '\0';
  847. X    if (cli->wmState == IconicState)
  848. X        strcat(b->label[0].string, "\244");
  849. X    else strcat(b->label[0].string, "  ");
  850. X    strcat(b->label[0].string, " ");
  851. X    strncat(b->label[0].string, cli->framewin->fcore.name, MENU_LENGTH);
  852. X    b->label[1].string = NULL;
  853. X    b->helpstring[0] = b->helpstring[1] = NULL;
  854. X    b->which = 0;
  855. X    b->stacked = False;
  856. X    b->enabled = True;
  857. X    b->visible = True;
  858. X    b->action.callback = MenuOfWindowsAction;
  859. X    b->action.submenu = (Menu *) cli;
  860. X    b->generate_func = NULL;
  861. X    return NULL;
  862. X}
  863. X
  864. XGenWinMenuFunc(dpy, menuInfo, bindex, cache, winInfo, depth)
  865. X    Display    *dpy;
  866. X    MenuInfo    *menuInfo;
  867. X    int        bindex;
  868. X    MenuCache    *cache;
  869. X    WinGeneric    *winInfo;
  870. X    int        depth;
  871. X{
  872. XMenu    *menu;
  873. Xint    columns;
  874. Xextern MenuInfo    *MenuInfoCreate();
  875. X
  876. X    columns = menuInfo->buttons[bindex].subMenu->menu->prefColSize;
  877. X    MenuInfoDestroy(menuInfo->buttons[bindex].subMenu);
  878. X    menu = (Menu *) MemAlloc(sizeof(Menu));
  879. X    menu->buttons = NULL;
  880. X    menu->buttonCount = 0;
  881. X    menu->buttonDefault = NOBUTTON;
  882. X    menu->hasPushPin = False;
  883. X    menu->menudirty = True;
  884. X    menu->helpstring = "olvwm:WinMenu";
  885. X    menu->btnPerCol = 0;
  886. X    menu->maxLabWidth = 0;
  887. X    menu->prefColSize = columns;
  888. X    ListApply(ActiveClientList, addButton, menu);
  889. X
  890. X    menuInfo->buttons[bindex].subMenu =
  891. X            MenuInfoCreate(cache, winInfo, menu, depth);
  892. X}
  893. END_OF_FILE
  894. if test 18371 -ne `wc -c <'olvwmrc.y'`; then
  895.     echo shar: \"'olvwmrc.y'\" unpacked with wrong size!
  896. fi
  897. # end of 'olvwmrc.y'
  898. fi
  899. if test -f 'usermenu.c.Z.uu' -a "${1}" != "-c" ; then 
  900.   echo shar: Will not clobber existing file \"'usermenu.c.Z.uu'\"
  901. else
  902. echo shar: Extracting \"'usermenu.c.Z.uu'\" \(31873 characters\)
  903. sed "s/^X//" >'usermenu.c.Z.uu' <<'END_OF_FILE'
  904. Xbegin 666 usermenu.c.Z
  905. XM'YV0+U0H *$"A,&#*,:D #'D#9P\<M*<04,'1(P<.'*PL)@C!PP04^JX =$D
  906. XMS1@Y;^;DF4.G3)LY&Y.X&>,"I$@09,K,D3@23IB6;NC,&5CPH$$X9=R02>/F
  907. XM# BF(.B@*0.BBHLI-<,H!6'FC9PR/$&,>2.23D2=-:>4H<JDR)$@3+XX>4(E
  908. XMR9 B1(T:-).&#=6N<J*6D?,2Q!LS4:>"8&,RZ9PR+HB^4*!@1)J<01.( ()B
  909. XM1(HZCPDGK>-B3((8+F(89F/G3AL0=@;O?#,RQHL9+W+($$$Y8%XA81Z3,>RF
  910. XM\N6D=#1S]@QZ<)O1I1/(L.%BAHT$.6S#R/$B!@V039+P)BBYMT""(*B@23.'
  911. XM:U^J8X.&8=H^#!LVAA%+_2MR#)TTM+4'& AM:)4&''6P\1-33NT'0G.!/>=&
  912. XM'43E=00;;XAA'PA&]/=?@#KD)5,:=%016A.C@9! "RTL]D88PSD((8$I:C4<
  913. XM4R2F81][9>0E11DCEGABBBNV^!6&,"9&U8P2U@&"C2!\U0*._^WXF(]OO$$'
  914. XMBA-.@<8;=R10I%CVX<=E'5Z"29R2469949,5$C29 KZA-T4>\N&1'YM,ILB7
  915. XM7R#,\66"PXE!U7%!F;0A'6\D]M.#PH$@1AY$)2!&'7V1T20(*(3DAA5IE'%'
  916. XMH'3D :@4;I[IGE]SI! 9>00E,%===SE:D:>@BBK6&VWX])\8?9&8!PAH!!>E
  917. XM3@FV=.-(;[!!1@LLF=ICK,VZ1N.$[;G1*(9-#28I6$T%6@<<<'BE[*OGJ9" 
  918. XM>H-1%<974=W1J!NZ?A5:;,.M448>\LI!QAPAPJIN D04840053!!151AG%$?
  919. XM3F68$4:RDM9!!Z/%Q;IN$E2TQ;##3T9%(J L113N@&%<ZR0* _Y'AU\:RI%"
  920. XMG.H^06^@>-(1AIY0S2&2':&.VF1[[(&@;44^DVMN&60$/# /)M'VQ9]E^$#F
  921. XM2$=_"RG33SZ\*8DNT9P $NT^":^#8[71!FW'WLNUOOQZ]:_38C91A!-5/+G5
  922. XMW428O62DC$+,6!LDANRS&'!J#$423G :!KEEO,O@DV:T%!C?"S&UU!@_Z<3F
  923. XMU^W!P90;88CA5Z4)%($%QYQ>VA<=4X[48K6OW=O8S!I+8;#N4R#1.J9LP [5
  924. XM[&Q8:_L89> ^,!1/3$'%%$-(D004"]_1%WY,V?&&OB# (>B:#I+^W'!I%Z@4
  925. XMS2JRN^JA[3%&;PM>A1H4TQM]>4<9L056OHWM!6XH"&7 0QG&8#&N<2YCZ@H@
  926. XM4&+4J/ I<#%,.91^%$.O.[B/?0"< ^>0,AP4<,%58BM"&,: !@C>+#X[84E[
  927. XM#O,@.$2E@6CXRE]"Y2R &21E"C(4?E"0LI(QJ%)CD8.]RJ64R04.+/L)C(,V
  928. XME<,RX,<K*C,,'#XTDB:R(04LJ-2X7ABO!C:L/2B 6[_^A46]#2=E^]N*_Z@2
  929. XMP $6D R50@$44T8UKJ#D-7=8#PFY^)4D]; .B!N-JPQ"!7E]K#[P*A.8F%:I
  930. XM-""&-E1AX7Y>4S01%.Q@":."" P3&!'P303HJI3Z=.:4HC6'@4\I(N=:PB:6
  931. XMO*LB4$K*<%BXJ9SPQ0TY"E 68R4Z-Y .6(PIU49<%[S8<<5# '(#3,P(,8E1
  932. XMS"%4G .ZUJ48*Z9R<YWKGV):@H>*Y-$D)7P<4MZUPI'(*#0G:$^3=JDN**&-
  933. XM5^8;3DXT&!%#M2>/CQ(469RE-3) $@1Y3 H 1UA"L+6AD>UYC%_\P[10QHH)
  934. XMI7.B.D%3D?\E90P8BA14_ E(0,6A#EKRG".5-*SXZ(PIE?IF2^;@$^35A"'P
  935. XMY!^!PC LB\XDHUS;*%E,1Y6/AA2,EZ)#I?QI-"T1*PRQX:*A0"BP!#1$;<AI
  936. XMSP&UYA)#D2$GRPI9'2=%JE=.#H<1!"B)PEFI<HED.#LYPT@Z,TB80C4HZJ1I
  937. XM42M*%3C8:S#XZAJ;ZL@>+0K'H>IB5R+A]9C\;<@,R P00/48SJ^XX005R=[V
  938. XMN&8LN[[A#'((PTMV4*G,)G$C^QG6NZA"S,B:LU'64XJ:S->PP;R478^IV.MB
  939. XM5ZGC>6ZT ]TC9D):*-$&BD& $J/<7JL8X?H+D=-2%V-8DE-S*F8.=O#/9-V 
  940. XMH>V-:PM=,%MFAT4E'3%&#PNB#6 3$$#-P@%0*+#>?9Y4/)JVIUA)M:(.0"""
  941. XM*WAE#2P=(57.)((4.*U2];UO?I%'DM&(8&,=PTNLH( 2S&IV#@FP&]Y0)P*R
  942. XML0$.B,4/@R^;V9<<N"X)IO!3XYF>++'AP&-H QD8U2P*"X$-=: *%BS7A@-?
  943. XM$F$* T$WG0."%IC!*2JE"A=0)Z86B,$IIHMQI3;LX)>DS@E$2,#BG%"I*OPG
  944. XMF*&"L(2K0.$?F<%>)9S"2=;BADW>.),@T)T1>(<$$3,&#F)XD;\.S! F3$\(
  945. XM3PB"%(A0Y2OG2"=/YK.<*&,9,]@2)%F8@A6,<],ZY 0$/%#)'%Y0*J1($PT^
  946. XM8#1&'4T5'HB$/70@@PLP71E9.E+3,'XT#P8C!VV-.M.6:;2J6;*4-[P:U9R&
  947. XMM'_R@)1;%_K04TCTHF.]Z5F;A4&^EFB/B)WJ3ONP*9>&M:G-@.M9K^0%5/,U
  948. XM4XKM[&O[I,/:EG6W)^U*.KPZ 0'A"A3+C0(9+$0%DV%VKGF A1C8!@LI"3>W
  949. XM(5WO>S-&#/IN-K_M_0(L6*PO 9]WOPO^$U[=NMK./G93$JYJ.-Q!U*2&.'W3
  950. XM$ ,<N&'4O)'WHT70+ QQSB\@USC)B]>&E(N<*B(X X8TQ(9+AWS; A?!<LV-
  951. XMAIN+F[[/:7G/59Y:E^,\UR)H4LH54&Z3B*58@5%!DXSP'B=HM@P)Z %]'9*4
  952. XMU+:@22+@;-/'\/1W$:1?^&UI&:@P,JQK/<!R2+M^P\YTG?V'["0TNPK0/N R
  953. XM6!@.4Z #(+-.7[ZKG>YC+WO4#:_?OZOH[8Q'G@Z($+&)!8^_G%6  @<SDKQ'
  954. XM_0QE (H=4)""S(_ EF&EPA.6T!8GB&D&,("!>;I'SC*HZBN";S5L[!/C]L"[
  955. XM,JB_V9:_<# JP$4O+8@!\",6UN'/R@A/J *4$R#[TS-?^'>KPA=6+R;E6_^6
  956. XM^\W^%Z;LA" (H2W2H4REF18Q $[H-7L8R$%,) <J3'<C9[*_OMRPD2(H1?])
  957. XML1&4YTS! X#\!P)0P!0&N$L'P78OLW;W!Q)XU1@+B(""8H *T =ZL8$&2 6\
  958. XM5@:9EVXF5R;#TAP9-E,GT2B_]WT1E !!  50P#=?X#S2XP1'@ *78@8;43(I
  959. XMD  H0"JMMDH_F(,[:!8;,61BDH0_N!-Z4 :'@8-U8 8+T2(EXQ=N (52V&,6
  960. XM 0(+T87+!WX,$7U.0 4H@ <]B ),Z(1F4(8+\0*_U81/B =;  -=D (S0R<%
  961. XMP2)ZN(=\V(=^^(> &(B"N(=YD3H[UFKV,13H,8B,V(B.Z(CEL7FZQQ05D681
  962. XM V8=,A.DQUF2.!*4:!!#\&9Q]BYDD(ECL(F:=XB>&!0&P6"4*&8RY :FB(J=
  963. XMF$J56 1X0"*S6'JI:#FK>(NY2 =.\ 8-X09\01B[R(FJ:(NMB!)((0?_H1/)
  964. XMV(N<QXP@@51E8%]QUW?36(N?R"%O1@29=0;=N(S?& 3D<B;EZ(O6" 6"LH[5
  965. XM^(W#" ?P.(FL" )7H#E@,@0O4X^_:! _XDK0^ 1,< 5-0(OF>(]&\&9&\ 8$
  966. XM- ?^:(T_\B,P8B*#H8[]@9#L^(U/@!1N$(HI409JP0:RF)&\Z(T*F2!L$)",
  967. XM\A53D 9-.)(EJ8DGF9"5"!QCL 8R&9'?& 680@<[:9+*N)'W> 1)D8]N@)$T
  968. XM.93Q6)1)001I( =*>8HU2925&'@FH9-.-)-4&8)Y^(A@&99@62DCB!^ <0>D
  969. XM"#$8]2[AI4QY(99P&9> 6!Z))P0F]G0#M 94YQ>HF'C?.'5WM)=ET)=VYW3?
  970. XM^&V/<2:$N2!DISV7L2IL<":!)P=UX!^+>7<EMG\>B!0N8EUP8("7Z72JH@+$
  971. XM5(IW- 5(T95UQYBP\0:/226*R8N)YYC+0B)"8#$8$YJ-Z9K#\65K<9L70QM$
  972. XM\!-AH)NM^9B^:7NC,9PZ8YRT:4=K89%2.1K&:9?-HC*"V01OL!1\P33.R9M/
  973. XM<E7V=R8RT17?B9PR))CE^09, &JHB(<])I?R*9]DZ9 ;0@;$^9;SN9]B61X*
  974. XML'Z'5C*561'Q9Q2>MX$$037B X+H5A";4D>^4D*_9Q0Y80=?4(EZ4:&-L0,-
  975. XM"C% 0V!2\2@.PA3;60;8]AYM<QQK,J$'0:(7BJ DFA,<FFXQ&DF(\: HRJ(&
  976. XM\1_/\:)ZT08\RJ#IMC;<J2A4)#+/,6@:B* 'H9[&^ :9!Z#M)Z#^ 0(%>A '
  977. XMNH$JP"@8]AX+.J,%P:4MX!>Q@1\X"B@+.FA&T9XL@: J0#5,T15L2@=@"D%M
  978. XMRD).VA7II&Z!$3E[=*94\7M+RJ0%-B%Y"J64H8[OL9[8N:A/&J4?&*!F,: @
  979. XM\ 5!A3'XJ3-6*G\&0:458:FX21N9FC(J0"_=Q%D&"G5N^J6<"@+6B1\P.@<#
  980. XM:'ETVJJORJ3L 5$L@:I-VA]08!9Z@5@SP:L&D:5ZH0)M- 9U^FP-TB@6)4 $
  981. XMI"P;P1C<(P*'6&-J>A#/J:6'TR3$RB&^:A8) 'KTXED@V*J>EP J0*Z#T3E?
  982. XM\"X.PUF#RJ27*JK$F7G_&:E3.JE5>J7%JJI:ZC)^\:W&:A12-QI6]*W?"*.V
  983. XM1*MUJCD!M"<-2S'U.A(Z:HT(Z@85.P??>JL(VDN_-+"M6K&C2A!B<(R[VJJ4
  984. XM*"9C 6-MH$QU^GZ&$A@L-$]1:4#-4@<OZWN3,:\(VB2CBJ_I-K'!DV9N$D7Z
  985. XM1"A:\U%@0R X4B#X\7MU&:HC<:W B3$@H'7^:J5<.YD, E$ZM!$B,&/.(0(;
  986. XM@3=,P 0@T <,:!1[  +#N)EE<+8)PP1TF[9KN[9M:Z5H:[=P6[=L"P*M"@,;
  987. XMT:I&D(AS*[A&0064F;BMRK@Q5KANJP NF(ZC88J%ZX//J0(+8:TT-AX'P;89
  988. XMF'E3&YR=IV(LQ@97RS9:VZIO^[9>VQ1@ZT1B.P2H:V)F^[=I*[H;^+9Q^X%W
  989. XMZ[=]F[>\>Q![T+?!&[B#*[E-BKC,2TB-^[SI$;V*:[R4BXYP,)69BP*;V[DI
  990. XMMF*XVZJBVP>D6YADM[HC<0=S\!6^*2CHF[6;ZK9=*W%G,+ML(+9>!F:YV[?*
  991. XMV[MP^P9R&[S!2[Q[>[QUF[S22[C5:Q"'6W..N[C4^[C1Z[J4F[\Z@0:8*[BR
  992. XM4K?BFT7D2QFEB[7J:R\Z XWOV[KR"[OT:[_XJQ,E7!$&N;^ *[T&X;L #+RZ
  993. XM*[QU2\"NB[PYW+\'H<"&Z[P+/+V16\20.[<4G  L^4H$:9!9M,%IV\&C"\+F
  994. XMZZI4"U#KVRXP<L+Q:[SS:S+U&U'W2U\_TD?#H2J"*<.[2\-<^[M((< YS,-N
  995. XMZ\/\F\#2V\"/(;U)S,<3/+E,7 8420;2J;V4V[=4_,&KB9GO&T D8I!>O+6O
  996. XM"Q(K3,9BBXN%$\,(7,0U_+\!G,,#K('%6\-V/,-%+,1&H<</W( 1#,&1N\28
  997. XM3 =/W 29B\A&,;[ERYJ-'(R1[+IA_+663%^QS,9, ,3R"\>)6\IX*\H%K,S%
  998. XMC,=%K,I^?,02_,J ',L9?,@<?,L>G,N,G,6/\6T-)P>]G,*>C,/.K+><_,8W
  999. XM',>@/,?,W,,'_,/0/,0.G,=$7,U*#,@^K,U3S,U5O,A.][XJ@!):@KYS@%WP
  1000. XMN[4F8+54N[<F\+VIB[X0'<YLV9(4W:HF,,*7>,$9;10;O<4"20<??1 A_15H
  1001. XM7-(&80(6[5E>H=(@8 *.3 >0_- :/=,9K<AUDBZ3D7A 2YP$42#Z@BI:$INF
  1002. XMYTB'=C2VI "SFBQS  4'T=3!\]1FP5DC,&V4 9_\N=6/6(@7DB$;@A('1R^*
  1003. XM^)5<?=:!Z)\!H0)LW=9N_=9P'==R/==T7==V_7L*\)QJ0=/Z> =G8K]S\)ZT
  1004. XMJ0!(Z4]^/1I#T$<M@0)D\!"X$]7L<5YR=1 JT-AYP%E;&Q![7=A@\M=D'-BE
  1005. XM=[&)'3DM 8MDQMF'/2'KR=B.+:^4,=BH?2:45S)OD >LG0>/;1!0R5(*,BR4
  1006. XM;=F8W:JS;1:U;=I'V=?D^:2WS8M]8,6L^=.:*A"@)R0729TSL[70G3(&H0(0
  1007. XM8M"UFJIFAZ MT2M;T 1!@ 50$ 14@ 2MUP4$"[#'&J'O'=['^B7/X7]V,-^!
  1008. XM@:#V7090\!-H4-[GG=[KW=[Z[:9<YP:IU=_X?> (FN +SBO^#> "CM[JS=YW
  1009. XMX]Z4811U8K @$ 07XQ)3Q$>1,QQ#8T>\@A..9 ;MPHIS0!9R@#PVA (QL! .
  1010. XM4D<+VEM*TJKH,<M;YGY @Q)N("$580>24SH#RRGN!@(D@ 1/8#<OX (0SA1?
  1011. XM!QT\4)95LP.<,@.YO=U,[N10+N4>Z77>RBDTL! D\ 0QZ 17P#A@7@0O,.5N
  1012. XM4.43X@)7;I]^X0-:C@(UT.7HD>9KWN9.\.9Q/N947N8H8 .9@QAELB<.4CIO
  1013. XMD%02TQ<;T1RKX1KIQ.,%45K&I'2:/B<<'J9R,"QH/#EI7I!-\.,7&Z'P.]U)
  1014. XM,7HBX./9UU\*BQ@HP.HAH'7#:P(FP"G=?;1:)]2"G"K4&:%V" *YGL,SDP"X
  1015. XM5P>Z]^M:DGFA#@+3_>5/7@39:A ,[@9VT.JA]^HH4&'73NLJ:^LAL.UVL.SH
  1016. XM#K\B0'>MFFXHQ*\5(0)-?NU1+N=T7@>;=+$E,P8/@0+]_=]243\2CM^\:!3]
  1017. XM_A, +^$"CP9B&^7DCO!F(80!#^ ;,755=W6\:!R&UGY/< 5?D 0=YP1?P 0S
  1018. XM\.ZB3NHE;NJ$+N9==^A6CN56P^\3_^_C#0<$_QP-?_ 'D?!T@ (W+[8N$/$]
  1019. XM/_$*'_0@< 128 4NP 1#X *[+=EY %$3A^4\;Q CA0(H .T5$>QA,-3$/B% 
  1020. XM+^+'GNQ]NQ#QQ^RAY^PCP?7?VMQ7741FD  'D6X?'_(C7_(SD.U%G&YFH?(P
  1021. XMPO+V[O(*#O,3PO=9O_6AX=WP*^Q$O2746?%24?:Z7K=H3[G-_NR+[R9OWZHH
  1022. XM3^VAQ^1J?C>"_N9\+^?KKG6NSNWA/OIL[N;C?O5/8>ZH7_#<ONRU?]_<SNYT
  1023. XM9Q2?'^^46:7T[OJE;^__5N@O/^=@Q_?]_N^Y/^$#+T7)C^ZR[_-R9.AN(/D.
  1024. XM3U\O</Q$WZE&__//W_ 7?[D9_QP;_VL>#_(BCP,D;_*?__?'$OCA NBD#_M0
  1025. XM?OSXKG1W?G)5P_PUS[8AO?$'X*I?^!M[O4+H?3\@)(20GM)C>DX/ZD6VWD;U
  1026. XMSH +L'JUCE,H/E8#[&8*V"MJU.GF43YEMZG47NYI>YLOVHFO4B/WZ)Y!L'OL
  1027. XM+^^9/+X7_T;=_%L*]8_XX3\XI_^P7[Y#?+9N PJ1#NCXPEX=N'[3C^$5P(5@
  1028. XM]BQ?"<Q\*) #JL!;UJJ@8 YS;7A(1. 2ZC:=)L280!(Q0C'TB</W95(<'4%1
  1029. XMH&%R "9>(9A(3Z5P)U.A\R@VJO#H_$,=V!"/3U6DP7!1FHS :4I-I&>\J(\Z
  1030. XMLD9NX%-H#TAD*@0&J. @EL)7D"XVD*4,$$<2*GI+I9AE!,YW0)$WMQ&@B X<
  1031. XM=,8O#8B!C0 EDA8_^1\GQR_ D5BQ98Q $F@++R4)( 9M<3,DR9>(+5)!AJP/
  1032. XM1)B+6 ([20"6KA%6'HKAZ01&3[MBHTD!3#>I!OG$WG7[?):.:%4$QK<I+I85
  1033. XM'&V=0S%%GK73=C:"=T-HF<L%&H4A((;(T#>D6JUB(_0Q@")@U,[?86ZOC3<I
  1034. XM@"!1R*B39=M!)V$]=;FHU]L,%G!K5<;-#:PG=45/UE-P,PK9C2"X/8Z7U+1$
  1035. XM'@@]PFT83C6H1D"$"/SJ6U8-J[4JC.<7UI,+@%-/:DY=Q+KUK3@BD'A2+H!+
  1036. XM*:BK,Q+3EK0["%S/VW%!H[;A6I2MBXD]H/*EK657$)]4"_ !38(*(+DR4-[$
  1037. XMCQ1X G0ANZB^T,,,::)14#:;2OW-0H<($3M4$+@J(N,![8F8&#@<!)=R=-4$
  1038. XMU R:!)#UF"%5"PPYD5.812BP$&# Y1.'8L'9H440L!:!E=9! 6MQ(4 MDX.&
  1039. XM8)(:0D/RKE))PU;!B^!B190#/]%4=3VU*!&% EN<*??!(?5%.+2&/)5@;(R$
  1040. XMD;,81KF8&!5(9^PF\ LO8L;'" ,T8W-+ ,W/MAW&GVAUGD.E2X&PPP<(K.2A
  1041. XM&5-C0N",/D QLL:K([90&[F+>]R)<E&N=',_#&'*>%!W1*N\!RVG+49%:7H*
  1042. XM%>'WH,9\Z!.!XF@0BCRE*.*-+W 4DV+6HEQBH@_^P0%RV_"A'%A/KU$*TH'T
  1043. XM. 2UQ$^<C;*ON34W\^ C3B*)J(=>L$7\B!NH3?Z&M_@:B"'O= M14REDX>?P
  1044. XM$RBJ6+0'0R%0B!0EY!H[8290!071IJJ+OC@C0H5:+$+$\!4&V2$T8HGKT86X
  1045. XM7E$1 L>8Z1PAHX*HC$I1!E_#C7L/L7""4 45R5=6R!I@)L<Q112-$ZDL*L5^
  1046. XMB(+0L1,F$>L16X*A8H@?9X IV =T,1D&VX^@AT-"[-W#0$$=N\)&  S(8R*5
  1047. XMN'TX 2?;=ON'1B$@#D05T!.[0L>Z2P@*2PJR-0DC#N)!2(C;;2'Z/J.0]=2D
  1048. XMEDP2?( /-"J_H)V*E'<Z=FDO.1VJ.84"3(!)](@@44Z!FHU',%P82L@#"<B7
  1049. XM,(TS$8KDAU! 10F <@VW1QD0\6,=6&V6K3!2KJQW*%&B2O12++$)[D3*9122
  1050. XMDZ=$0U7R#?S$H#@4M:/VZ8Y4H YI1JB8]<JDK+2.$P([^@5;R1V18JY$=CJ1
  1051. XM";S%:2<-5<;%2PD5@844CJ*A!BA*5\%,)4LZ&@44T0;\X%J E>>Q.M+*[#A\
  1052. XM<&47^(D;JS!N2Y?@+0>3KYR5U[%6EDMCJ2LIUVE\E\"R#@A+HC@OO6.RS#QD
  1053. XMT=SQJ2S))H<#K]N3)[$KI$2'L!*3E*I4EB70*.!$#SCL0*#8*Y4*\U1:(8UG
  1054. XM&@&( XN8!X%;MDL4@#%MC<9,"AR35;Y)\]<1327#1)5)ZE^J3(,P,:?;JRR,
  1055. XM\S%@^CK8F+62Y;)#>+$27@9+>6D4Z:5,;(K6;5<ZL)E))<-E5Q":^I)H;D=S
  1056. XM";_$(Z] 3>1Q2OI*]NC=N*:;>(]MAU%BP](V9I*"IP25K6T%SL<LB![RX&A(
  1057. XM$V&B10B[A.+LZ* 8# UMPJB CA;"13*5NS@?L>)'DHG[T!XDD_T 'XJ!&J8(
  1058. XM_R'&H"/?9!N-L$OF 2:9U^2AV^P2]J,\BA6!^*0V APH K$A*'!)WN8E"0*8
  1059. XM/ A(R2B5*Z>S=YB"06Q56 !T(H?X)CN#@IL$2/9Q)MK#A[ 14LMZ^HE!!#)@
  1060. XM%$OY$[<FAT!<LL]P@HD[H8FFI._LG.!Q<_Y.'Q \2P-C0 [%,VCFRWU)+,UE
  1061. XM%*-[GS-TKL=WYL.DV?%T8/!P]J"U]?F'\@(3P'-M8JSI!/W$/NLGBU!KZ0* 
  1062. XMX &?H!0:GA8*(/SSC+B!8?'JHA)M('*[)R(,1:(Q$E)&A)HF)I#M/0PR@"<T
  1063. XMBZ*X#Z(E,HX090&$)H?UD JHPT$ 4!O!-1YH7@@"=I $@9;U<$^N!WMY<?HS
  1064. XM@"8&!K%"9*31^ EUTVDP.13P"=]<"G@!1R<GZ  2L >:0!40 G:CF %1<3-$
  1065. XMH<\3.#]%8 HL46[CGQ+/@1((([1_ KA;QQ3*WQR8 ZVE5: K5:4">LF9O$[/
  1066. XMX8N&T=NI>&B/5%A06R &P  90 ,T')UD1?!%)U!(-'#@7ET.,@-Q5 ;@ #N*
  1067. XMI<BH1R(#!ZZ,OKI$ZCU>&"-56*S("GTKR^@3ONC%(0CDX@X<.&4U1O4.DGR)
  1068. XM6,_6]9*>J>PPW]K3/1BQ)AH$) F_S*@JQ:0 +DW)S%9EA>!7%4H*7-0-;#PZ
  1069. XM*4J9PA:P0DI1ZYR %W "EAV+D*2O-(_.@3T*OU09*.53G,*%:)T(]:4,0BVU
  1070. XM&J7Q+<Z!#[I'4$ 990K+DDS$EA/@!T[ ? D(D8[5' =$F#_R@%28'!HB)W$1
  1071. XM"ED1=("V/ @K8 6X4KAX3)."9N2EG**6\@"MHQKR)":%"FEQF!;3$I@ /%*W
  1072. XM6XJB)]R].7('%S405$Q[9)$5T8%>H1D;JBRQI1,OAN32C:!0"Z/.O'4?-2V>
  1073. XM/89J% XI2(UQ(K67D%0=4$P[*D!%J5M!I5H^\.A1<VKW@ HK  A9H5QJ4D]C
  1074. XM MBHTK1[?-06L4\30-#Q=[;-CT8A'?13#Q!2-:E2U0P 4J2J%*\@>!RETU26
  1075. XM=-1:V@*T#E+MJ)E4)EH<\8$"LJH4ZJA9+ZWJ5+QU,-,H& 4]8E1,M$J[0HDJ
  1076. XM8ZAA->$0+DXW;O+S5DYK: /S92P0BL=2$6[)<)@17$ $E( Y$%E3"0B(K),U
  1077. XMLG*!,H-%>.I3Y'9_M!-&A#-@4AUJ:+RB"^'669P?T#TLSD^T.%_ $8* ^7+V
  1078. XM_FGH8IIQ]=6]Q00P(&[=2&NE6JY[_%:K04VO3G 5KB^,12P[N)CURNAO3:@T
  1079. XM=;<F@'S:2%])1[44?60-V-3;*B9L8W6%1IY3MZ+55OI;@^HMO4(.55UR5Z.@
  1080. XM3)FIUG&F3-.D,(488ULYQS@E >84MP9!LJ-U5$ N70$U;B$D5!1P D" 0>6O
  1081. XMPG0/+%2,^HG.*F40$Z-T!6@=&8!64RH0@C-Q9Z32ESZ0 BCJ276I<Q5B8M2;
  1082. XM:E?#Z'+EK7PU*/C5G"!$ NNX"CV$-=PUB\,Z7[3%3*$#>V1 G( 2, 8*+%0H
  1083. XMKDD*LU)6$;!9^XN+'0.B52*85*-@!5.IF+"H'W/$VD1.H4ASJC#M P7V8)*=
  1084. XM9'<"%*QT)94ZX:[JA!.[5TT&'5BQ@%6#)2&C,%@5B(QE#:YAOG2%LQ(R3@"6
  1085. XM_1: P5V @&+J8T>"D-6LG/5[ZM6#@"1-:@1%I20Q>H8NCQE;FBN(%:8I(,OV
  1086. XMNBTK3 GLE[5U)1:ODMF#8 92[)D%C"Q6#KA8-@MCW:QAC;/JALZF##Z+9[V"
  1087. XMGK6S??:R2M8A6V0[:Q*"BX7VNC;91#MH#8)1-:I(M94NU:K:49_JOW.KGK.+
  1088. XM1H5>@55!ZU3= ERU)3*!L2I0RJJ2 P%!-=@&U1J'5A&J4E4* -:V^EI&2Q4P
  1089. XM:C]U Q76I_8[D4I=E6U)A:NB5);LUCM:(GN%L-T*3)4I;%>#8&RCJK/5JLG6
  1090. XMJC+;?0OD_BBT[15=U<G"1;)J5CFJHCT*WO:0=E0H&UND++]U"5"UK?Y;JBI3
  1091. XM%T-26+('P:W^TJ20<'GMPA4H6J<T@L?32 7AHFF%J.#.K:K74!I-=2M#;;#V
  1092. XM5NN<5YR:[N MIVBOP:&$',PJ^U"%*3&=MW5/!8P4Q8 @*L(+  URX 6\@/X&
  1093. XM6MB>XZ1$C6+J2CCI"!<#P@MH SJ+I^B I[N^I&Y_ZS%6X^N&7;\P=OL;UVV5
  1094. XM4 0%:#D70EQCJ7$]"LJ5ISI:4FI.%ZQGQ:?Z]+H:!3&07:_KKP6/_?;6A5=N
  1095. XM!UH&[E?%M@T7#G14H/L]M,XU!0$?8>C>NN0C8(WN"1"W:TN_!E2!,E Q[W(E
  1096. XMO)%#NS+-@' P\-9Z.XI5X @@@7LJ#4,$<[5UWW0D<-FC"QXI;PEYKX@+]%Y4
  1097. XM\)CUSATV6J9!=[FRU^/K7D%D1QV^O1;;ZE-]^W#C$S*-OO)U0IRK)\LT62YE
  1098. XM@P/Y%'[EWGP*>L^M:5R!!BNIIM*;ZGN7'9 EBCOW_:: Y%-R7>(KM8+<T@F(
  1099. XMBMAU!FZ=W45_6)!M%@02DI<$DQ8BP/(T<#P&N_DHSB!Z21OE(E*PD!RW/IB)
  1100. XM(U0>9+$]H+&A2)>NF%YX50H  >NE]X "1A 5N9+OP7,6P$ZZWXZ5"4XF&^%-
  1101. XMI6!8*A78:,'Z;5'IF28^V0IS6=\+I@W'+L0N.RL(7R5>C/MW$6HC7.!)>@"3
  1102. XM\/J0?5:0AXP!&1?8G+ 4V#Y+H/.:7BRXTSKP<QL-V5(!%$&+>02I1I>[P=N-
  1103. XM:K!1.+DUVN-W6YD3HF1A4N_V3+E>2FP[TO9;V>$F84WN(FKUJA(3-KJ XT" 
  1104. XM%N-<$ )5@ JH'B>@AP6QQD*'\$OE!F+UZ ) UE"$7TFL$5/BDQ65VM1=)%E 
  1105. XMC7,!8I@HB%N6SE(FD5@'8]K+%9A(,-78"": ZVT$5;80?(#6&3ZKYRT6WY*Y
  1106. XM,+O4QD1_3),7GTQ96F#:@/Z] _R79;R'PFA9C,HM=@G'F&2"8>)4&,LHX],Z
  1107. XM"_'0]@0Z++[(;0D4E(Y*4;*$0LF+$R5[6I2:463*$"'HW>[P RJ,43@ABN+U
  1108. XM>UOGXT[#3JT84!B)$A<R:HE.. D'XDBU2.5X.IK*CSB!NP?&Z(3Y D:35&6I
  1109. XM/6>B=XX5-@$CEL*1.@RHP_G0!>@C??J&UE&LSH*Q&L)NA2 +LM2Z8I1(#+-B
  1110. XM-NB*9_ ZH1%J5-.R8#>EAC?B--94V\U;V2HTN8$RK4ZPP?#-8%60;^4*/0:W
  1111. XM,@N1HPU 4@RU@2Z(C26H=4K_LI_>!$4>H;.;#19K,M!;0B4'C!P;>*;I)HL*
  1112. XM4 +*[0SHD)N=1DX.,% W*J&T\I35>BI2ZXCEAJ>,_8(7%;.$$5F64MZ*HK3.
  1113. XM4'ZEB:]D)&7XU14\4EU.7") #O07+;Q2TQZ8C<ECEFEV6C.+9EOLUH&SB/5J
  1114. XM0!;I-Q( %0C(K&4&!?L%1HE_Q<_S$4-$H/,Q6:_<2B$R=7K%0"@IE[\) 8N=
  1115. XM\AN0?68 HX0DP-A'VL N?<M=>4/88I(@?G)Q":S(XVDTK#8SK!G_1&1ZF_).
  1116. XM&D^(^.B- Z4,D6W$23K7@?@(F&U=!5EVZOA;?N=G&H6#\Q4)P/<8,2FGP\<B
  1117. XM#.$Y^8]^(CDZB"09.F.S9C$C9:7VM!*D?)^Q[H$\?)ZJ;K:'X,,URA(;F)RB
  1118. XM9"K$E@!M+SC%-]DCN*4L<9%WJDZV4X)('GYC,70..>!7N(;_ ![#H8^8J13!
  1119. XMH-&"V!A&K"1$-=;K(9FB\T*@%TRC?S@K^% F*$OE\!;J.38AE,&I"CE%X+@E
  1120. XM[*&$..?)019*I&)(B"6:J:@+ YFCK=NQ.('M@0=@WA4J4)(3=FY.+WHM_ NE
  1121. XMDEP20"IL+LP%1H"61I&<^*9(."4T8FV,NO%RD*VN5^X]="/"%.<E(":TCE9X
  1122. XM$&[ $O.4*(*6-# _]AE3.,QFF .=D<4/^3$_Z,=.5]60114V19\>R96)"@]J
  1123. XM2J$QAD_Q@0N$AXX0)_S  0/#H[XH9&%^?(55F"ZH2=$H&AHB4DP%I-(7A@7;
  1124. XM*$U-8D]-MR9!>FB/6IX<8NT_T O <@Q94TINTF*O828NP:Q95+!C&9^V^0P'
  1125. XM9<HFK(GR*\1V1[DWE\2;K-U@Z;%>RDQ*!=CF-4RM*=MA1 X1F2" T=AP)KX5
  1126. XM*(YNWSHHH"\'UY0CR!90/:PGP[%KO6!%WO7J,7 S^6,U&'L=KYT (?U7]$TO
  1127. XMP*N$!J_QM<1C30>J+-TF0"I'Z>B_;J-:R@W$ <!0(!:C9-T"7N"RTH'-V@5*
  1128. XM@ K8 AJ[8V-LC<VQ/3;(Y@)T0&1[ 8Y=9.<U99O87J%BPR_Z@EDQ=F3M ICU
  1129. XM8X?L$C"R47;)UMDH6V6S[#+CLM-PS/X)W^HK)$GFHC\,*;9F4MGW#E*1,PJK
  1130. XM-I _H1?/-%TW0R<Q34>+[5196Q!]:;US3:I$<:^[C4($7(\&=(FRZ( =(EAR
  1131. XM$3EX,:U])MAV)W[#Q8HVZ&JIG4Q2\2OMK5KNQX2>P'9!=I!??$(7I(P0:]^\
  1132. XMY[1U!-$6*2"?ZF);=T'F4##=LR.@F,97O3U?SQ7EZJU)]8)H.?;0=[PI'"@]
  1133. XMW4-RK]Z"4 2: /7( F/1* #,O9M0N0 ,T-R&D7-K7X#I&^A>01@I]^,$)!(V
  1134. XM@,9<=0/=%8EB0K0E$T(5@![3_0I @RRTC[ B2YH+JRP()X ++%3!62W;U%AX
  1135. XM"&R"*33=Q"#6)L*$/I(68WR7A;X 4*A"M0L#UYMYVPJ<\ 9T@DC^J% A>Q=8
  1136. XM%# AN(># !J28H3@EST*0GSW9#BI4;LMA=,76! $MU!()=RF/QH-47%!+*N#
  1137. XM8%:&\)X:A&^"7BKWSDW<6D@&7.[LK;UW:[JI=A%AEB"&>#K @^Y83  >W"P,
  1138. XM51#>(D0X_,K>M[NCOJ U1P1F$!6H03=(84<AL45?3.H.ET$TB'$$<3RWL#VG
  1139. XM22V^#IQP1Q##31E+< 11W/S9-RO?@X!ZOUY']:;)FOR"1] -OT3W(2S=911U
  1140. XM@]\5L,49. AHW:_[A<ON[KNZ-72%#"LL)($?J7TLV0C,9A4K4N&R?@0-SKRW
  1141. XMP >_XEHH!G15'/YYF>81AS(^'(B78"8^Q.E+$0>]C[R')W$;-,E/3A/O'C,7
  1142. XM!*2;<7TH*L(S,A_(X4!;<,5 MH'0@*J;L1M+Q6UU3;5^8K*"7_EW_]*O3FX?
  1143. XM%G8H%^* E [=<-O=R'-W\N;;K OS@EXJ(;:AD.G*EF:;4VAM]/49W78HG^99
  1144. XM["//<I)6RW.C @&]47O[GL;>C1Y&BH.HX+)D+>OO8Q%T9M;\UN-]6T%V%6C4
  1145. XM4*[W <]Z,5P.S'!$7L-'.!<HX2 S;Q_SY0V5F68^W^?T8@J! !LN3(GY^4T 
  1146. XM ]MR#_,<_KF/]F(TW7Q7!"Q4U@JS"<.CJ+$=O6+/;EOW10_(&L)Y?*IB3ZM@
  1147. XM9EG. "F4 PYC(4CI)9?VIETX:U<M"008ES,".<@)>_DG; .LW Q"WBLG7J\H
  1148. XMP<%,!$R!(I#>I(!Z>P)2H+^04K?(4+&YZ4J,+%%FLJQM3LU] 'M@ALTT^()'
  1149. XMJXXQ?J*PXJ]>=:NG;5I^U7W +=?J7IJK=W.2?/C@.C.G6F.;:D'SA7"VR3IM
  1150. XMJ.9O>ZS+==,%O_SZG//FIVJLZV[Z2L>[K@K0$HJ02$(&%^ ""/ED[JN@%K!6
  1151. XMWS;;3=XLC<49>0* #,%%V)E+,E68K-,JK)0 ,E!KOV>KA)F)RW'3"\@->J.P
  1152. XMI59O< %G"L>3VN^.>DN_9%!&JJ=%JE[3DVY<7.LO(X.:8*Y1L3XD/86F%#J*
  1153. XM$'+#_A-S57!8C)E8]*+M8UVW\Z4U>9@QS014W]X.!Y!ZV#KNW'UM>W<RQ@13
  1154. XM[FZ]["HVL[?8A\O9"^N,1;5,A(PYK3E0L?<(5*@CJ%U^K_;6SE.%=0Q.UAW5
  1155. XMMHN?2ZTL0:_W=>,0&+=,&;TR A0/QS(;(*- #(L\JC_-0@]1.[&<YO+FF7#4
  1156. XM![;8FC*YB\M-]>6JX+?CH8:BH5S9@,<6KWUR\4,OZC'.MS<8L05BVH)P=^\!
  1157. XM';VK[0D!-K7B,S;&NER,F7<GPBAO:LD@\>7=Q-,7%+\15/QP7ZYT6[WK:4"A
  1158. XM=;+[ZF::Z*$X7NW-#*-1R6.H"%O$@8#&BF6X)22;Z/'8[H* ^8*P%,B 2+9T
  1159. XM6R1E5*PY?\ -U&(7YY2+NN?&K%Z,CW$RMB*,$L>GF/+^V^G+F5$8/][T!GDT
  1160. XM3!!JE6%<UG$28!JHP5[6O;JL:HR8N'%I^J0[YQ&02MHK=_N%[!\4]QH&MBUJ
  1161. XM%"T],L#%$!\57BJC6 ,\!*8ODTV"LBGJ3>UZ/I.APO=/2VLT>Q*J[YX=U79J
  1162. XMR^J9 WP%'_"!ML##]@/_N&]S1^W=OALD_' E_@54QP\/ D.@+CR!QM$B7I*;
  1163. XM?_0+HVCL="4\+[1$]!1U6@'YM@19;\#'>-,-;,@^Z9#NR6%0*(?EH(L& \<L
  1164. XMC)WN EH[J0BU)I7&$Q_<WN ;NQ'.N(W>;8/>Q5@R;CT*\&'MKO1T*!3N$N:#
  1165. XM4O 6+,35$W5;!^SW,D37]1*]H5-TN A]@2'\&MC7?@!KA<ULZ5+CM^ <1G)?
  1166. XM&(;\H2!<"-?EX,V;NX7?_DH'5'?T33=PG K [K=[$!R\O1R5)-VH,_H=3U^V
  1167. XM3*0G[KCU'B$H\SSJL=X65$S:>:_'-&G.Z?^Z#Z#KVSF4DW)5H<V1>[F.K]N<
  1168. XM[7,*>;P0!#W:!^=Q7[WS8?U^Y W]+D?T77_V.0Z4+\QK]^TVX0)!KQ:$XIA'
  1169. XM1?*V^0I$KD!7>^C.0@UA=7$A#W%\PM#[\>XGN(=N%$2E<#3'FA!01@+?^)!H
  1170. XMS%@GIA0!!8>"X@?D@\*TC!DB-SEL\PZ"(? A5'L3%_H_ML=B20J=/[I??@@.
  1171. XM^:.*XS04>?8&&A$*\D JN"WL$:\_V[S[ ^Z#9'M2N,UB7$PD/O/<FM7R>B[#
  1172. XMT]X^MP%!.^N%?% (U\E:IDMZBPN=OC]S*DY9?CH37(7/X(LJN:V^SKE%![^?
  1173. XM%_^WLX.OSC,>:Q;LK&3=$@DFY?5_ZE#C\L39.MQ?Z:6140$<&931QCUI5A<*
  1174. XM<-L9'PU?1:7=<7]IT?#QXK4%6%[>1^3Y %L>5=#EB7H/UJ;G]J4(.A<V\O8Y
  1175. XM=H(?VC=7I%I*@3=4!E@ZS=W(QREP?\G. Q@!$@&[U5UGNN1USUPH%LUM=W);
  1176. XM-Z<8!79JW;$VMY5]AYUBY/09<WL;H$=>?$R*GHYW6?1&C(/5IX5A?<S5UT>=
  1177. XMA'U&8 I@ B"!;%VGA_8Q@0B/"\@"FG];&]ZW M9U<U^W)HK9?8"$3K89S8%U
  1178. XM -34AQ5Z21Z#L.2=9W ?<M?5L2OF"ORB.B$E4XD<Z 1V<XB@N^+J:74J8'HW
  1179. XM IIB.\O+QRBD ;E>3.<(#GE]H%?7+.DZ3U0BMH@M<V$;7N?,82IEX!DHZ"V!
  1180. XMUQP46-A!@=7<)WC^O8%KWV@ SOUY#QVO%/7E>%/?%NCH)0%2@!>XX@5YL,D8
  1181. XM*(]Q+JX@+7CVY8&"A-KG!M*!_9\MN+6%1G0?'-C5W7V%H"48"NY].@0N!XT%
  1182. XM@DW!(!@+&H*08%* TYF 2<]3$I4T@MU@$MC618(MP;NBZXF#2!XRMLL-;.>@
  1183. XM-P@\Y2R98,IE#79WA!BM<A&5@HK8N(<*VB:J8"O'UIB!:" WU];!@M;@$X@.
  1184. XM3H3?7#QX"]*!N>"$L L><U:@+\@ID'>W#M4G I!#3$ 5T 0X 5/ U;? *1[J
  1185. XM2JW"-%%\9H'%)^7Q>G2 K_>6E7R-&9C':7E:E9FHM=F56IW=J969+7M00;.W
  1186. XM3#Q[K%VT=VO!108>08#@V7L6 [Y'%!96A,,7Q>^--_Z>MX 2JH0LH4ZW+XP1
  1187. XM!5^@=?"Q&@G?*;567("YW118"8*"_Z#+@HK9:9L@T'/-\8)/'^5RM;&#\%4"
  1188. XM /1Q"B' 7O@2;E,D0C=E(8T+H$FCUPQ>A)W>66>'O(3V%55 ?Q@@ME>#TOF-
  1189. XM%)-A!**BT0CQWOPF K1TF\2CUKT9:3.$6N9-R V=W_.W*Z@-[L2,IC^Y$=+*
  1190. XM] <>V4; G.?48!AQ, @2M^UQ<K6A)>=A97*1G!+'RZDNE1P_&/-U?M];2;'-
  1191. XM(6] P0/'0@!S 9P\Y9^Y>N_"=A$HO '!7[%0$;@C:( !LBL\&E/%_W!*R(;=
  1192. XM50#4"2Z%E-Q;!1X!<RG?GN70@4?IAL2P7N1"9('Y-MT%!U0!=T@9$E^V#CP'
  1193. XMA(UWYF%O:!R"1S(>]N4,OG6 H#ZHY V(8L)>&.HQ=N%1X15?X8<(B (R752&
  1194. XMPUY0Z-J16B%.47C?9684VZ. %)9V9!"*XNRI=DVAD27M_6*QW50H)G1:52$*
  1195. XMD.]M"K,1,W'Z?05,RZC6:L$+$Q[!1^!%7^ /PI?@J86< EN8 78HLX+N .XA
  1196. XM 45 W\!U=7&J%UQ4>\&'!<&+DZ1 =MZ"5_:8W'I56J@F0(5H:B'7P'4YB"<@
  1197. XMA(A=I5Y38,Y4?/F'NA0RF H.@:N@O1+='(&OH +!!LIRC&$R5R<F=@E <T,%
  1198. XM33OT0OZP-81!$])U5S$0=CR2F.B6%2O.H'7GB3E?]Q>1: '.:>F3  :9Z'^4
  1199. XM2HM@,X H1QJ))N\(:$=%4L$@C03.&==0I$$*/P1ZD%&%B$<*(]0I'C[S!$ V
  1200. XM1?1M=03WHB/8:JN?,U1&[ >%R"-FNM0'6T%!2#$X$2Z!\5?F<6F!0NA!.<TF
  1201. XM\E#^!YWM?R33%"$SV&1Q&%"3DTF+;)1#* 9@BV ;4Z875"PR04Z@)PB$K]2V
  1202. XM:!<1"-*BW68:9D X2+KHZ>DJ)5\2\Q:%9X.)N2@S:$;V8N/C+G)BIF$>AGYQ
  1203. XM6G&7EI,O@G<'D[U8W<T!\"(IY4Q)"M)BU>0N+H$E4-9C,'IZ8%U:)"\&8^ZB
  1204. XML%BT:!W@XL>'!XQT&M#$N 0>C FCQ:@ !GGT8KMH%@!VH)?(^$!H=:=1QR@N
  1205. XMBG%_HG$G,T8L1<,_44E5!++$,&$QS',<U*.@P,!0?EG8Y2UL+'P/B808Y49(
  1206. XM(\=(M82+ 01ZEC\% 9'1_6#BI @['1@A A@@_445%1A] ="%=+'J;2V4WI8R
  1207. XM71!EX4H+MA?T!]]*!_*!' 2WWOHAKQ JG4ITP252%UG"&G!==%62#.4B J@9
  1208. XM;$;N8L&\(_W!1J 6=&44R'1!Q0 R)Z&= 07@&7H&$9"[5$IPAIQ1BA2.$@CB
  1209. XMB#Q@(  -XP@%U"!4P P2/10!=T/NXHH$!0%1!G,X?B@0R/ZQ.%HOFH'JP#'D
  1210. XM+M@,YK@Z)HZN8^<(.WH2JT/H.!=\ >20$^ *%8.T8S RC!0CQTBW9#M.()NC
  1211. XMXJ@[UC!^HT$B.VH2_4<P,LL8CLQCZPC\/8\ED CP.8X^4D!=$$69CL[(8!"-
  1212. XM0"3+H^:H/68,H4L!XS?.!5# _N(0J([9(^?8/BXQED3 ETD0,P)(8V0_^EKN
  1213. XMHV9@]<DQ^8?S>#\RCI^$'.-_D '_H]Z"/U)Y[TRDU$".,MTCG,<_I@=MQP09
  1214. XM0(H 1H#C2 0X=4= [K*0' CB2,- /ZJ/&B3^. 4$ 59 $? %7 %0W1(P!:0W
  1215. XM=T'N,@5@(]J(W($\G)"L8PKI.38/ST/T,#U0CQ8(!H,YZH<&) ")/_(.QD?X
  1216. XM*#BZ,$X,JH,]HI!)I /).':0TP/T,014 2WA+,:0."2@ 0^).VZ/!^3NJ#LH
  1217. XMB3V<I?:L/9&#C*<D1C:/N6,9"3UJ!JX/\,@$- \NY%+'!#@!N4M'DA2 )(]!
  1218. XM4#(33)$]9!5)0:8]'&3=PAU%4:J'[C"#) %:0!Y9!.R1(J1*PI*X6B])3+*5
  1219. XMO)'KX^LX1XH 0@"XMP3,(),D'[D1X"1:"4G"2?J0NV,44 5P#*0D);D1^"0D
  1220. XM@B")9&6.A60<J40RCH+. -D.N@&,X.6".1:0NJ05N3LZ#W;!*"E]()-#P"BI
  1221. XM1YJ2E$Q68DL2DF,D^ZA$*C(LR,W $A8!2X]=$$6%(=('&1(VWHV'X>DV>Y23
  1222. XMWF%[9B'Q32G#W;C*34ABD20Q790UXTH:4)_]$4I#I+#3<1+)HOIX0ST',1*;
  1223. XMD*;X$_8;9%$I]'?AQ "E/X$:1D0$8@6]9X@1@<9 [!_+H@>VN$P7<HL"@$Y.
  1224. XM%_S;^-=:22'YVK$RY*"-,\&OHC:641@&&[6P;"!I0!KP3/56+64J]A2D 9 &
  1225. XMW++4=9-WP10PNJ4!DEO$:.Z0A$/.#F(W3A?EY!;04G8!"]/^ 2AI=^0"8I#L
  1226. XMH "FB$E)$+1%RQ5*B1CH7$/E_E%4'I4?$=O(-%E!XR11F3=>%UQEW/B!G%\U
  1227. XMHXC75.IE4&7:.%6:7I2+50F_8"_P()-%)&:&^X?4*%LX"W[0U92:Q"=[):$X
  1228. XM_XQH -JG:"^00EM!HKCCJ(K!P8LS!N@('-30<"7)9\]%:D()K1+)1.A0>_0F
  1229. XM=X2/]"HZ";U-D?92M$M\TP5G6?(%F*5B82P41V< =A@KV >T@07DA6$FR9#5
  1230. XMU 9@3:>(UA0K>4XOF2T!'PDWDI,_]!!\*V+2DT(0Q4K36K6(DV%2.AEXHS;^
  1231. XM-A'#;,1&J0I:BE)FJV0Q!HL8\+3!*"[ER*+7A6)BP*@2@XD!I!S5QA5<&-27
  1232. XM<UGID0B)5)/P=QPX4\&%87#) #5 #:#AE#O15)/P6HT.0]%;9 :@ER-!F;A]
  1233. XMQ57ZI6R$APEAR*"MXUL>F#X3>+1@&GGLT#:B=C@@(@M<Y#+@@WZ?DO=@CF8=
  1234. XM4X%H%%R8TU2!*5UV8]#7?PE6G4^/@6:4;M!"+4 )J#*4$ZI<M3,;$0TRDF@Q
  1235. XM!]Q(+<-4\!I(1T-*D0<H@%UMRO\PO(P4<("(B8<5#<.+= 1B=@]&Y@/2^? X
  1236. XM[J43H7XE6CQ.UG-A/DR7CXK 4E!F (^4&5K1%Y.5#C!9Y2[;T-\1>  2H 6)
  1237. XM</ X5:.!X]'WD8/]5WP)9TQ5LD_H566N8A."FYDLA7?-1(V(9<8OJ!%0V&7*
  1238. XMEU.5V!)FCIF]4SO4>$B99^8HU&>&3:@*FYEG2ID8)IPY:,Z96E6=.1_I!6#6
  1239. XMI'EAZ&5GST 0R/1Q9< 0 '4$-E'FA4'$]7HDU1=04[U2!,)%)"JT1I-2"$0B
  1240. XM7$D YFQ6![Q#WPJ!\%JQ+PT!&Y!)LH-%IGJ'"<(LKU2'0]F   :2C=4LR7.C
  1241. XM8J!P6E9".TCH\R+UB\V=J]BH+4XSFJ;#)C1+%4M-H#N$!U#&?*$^$"32Y@ !
  1242. XM4&@%#YR#T'&-%/^$(Z-"C&G>YO\@#!5BEA6@%DZ(!8]!34!UZ D4VJM@L( Z
  1243. XM &-@@ +$E"G7,%&RA)CJ';^XJ\R4-66Q.0+ZBAC#A==2]I1ICQ@0&A$T"T$N
  1244. XM=P>@ .A+HA<$A9?$"5:'_O"9.,BH8G(2186?,,4#+%2\#D^5<I:<@]YS8,C)
  1245. XM<+@4R:DSK)P*G2+'=_D Q=1+F&X( 21"@>!"U!&$G!CP$]5K=(@+L 9H#O!+
  1246. XM$E @@![V2\NH<M:<\!?.>87HG&$ SYG(+7+O(5RD=/H 3"=2B<&]F0JB(,AU
  1247. XMKIS8ED40RHV=96<EE@;@ 7^@QXD")"!T)WNWS)D[B2+>:72V0;JET_0&#!-+
  1248. XM)QECN;D S KY9RD4GCK$X2DZY)TZQ+'#4,&=AF?3^73Z5/Q7U0D>I8R49^/9
  1249. XM=#Z>@%]C=QJ)A#/GSHEUOH2=IQ-Q>%Z>PX'6D7F2,2TCXZEZ-IUGIZ1P=;(J
  1250. XM?2+E GT-7K(G&[!Z0IVZ3CNS??&>9&?E:7;2+_YB[MF@C%8405%Q![!')\X!
  1251. XMD35P>/:!+X(B&11S@'24>OJ>BIS3"7R>,T@!OMA[QE''9^.DU8V=#]KOI<P]
  1252. XM6&.G*Y&3< T<X]4I SY,XJ=;QZBUGJW#[9DJ^4SU)]"P$^QI F;]N4$E$Z5!
  1253. XMF<#"54U7YUE7?]*#9<#4T!\@H#0G [J JH/FBCT(,L2?$2@%*@GJ>B C"A "
  1254. XM2 K%D\[P?I(!;8B#DBRD 2VFLQ.!!2I]'A?W$PV@XH4,>!=U+[8GS9FL*$T5
  1255. XM%T/4?B@U$0/3M!;!C?-!&7,8@5[DG(=#=:@1U82AJ"T\&E"!620200D5V0RU
  1256. XM($%BUL1/4.J)4.?#K$?(G13X@=91%\D!H-=?"/0$H8 =>,2%PB]<:"TX$Y*A
  1257. XMB-UB=!B%1GD19,07I2%/B&446V%&=R*C*$14<W#H:-06@5ZVT6KD ]":A&?Q
  1258. XMZ7F6GPP"+P(<G1I,T]@)@WX<,BAXQ+V )Z*8;8E;:DY;$T]5_M6!RB6IDEJM
  1259. XMG<]@(#&=D7\("BBZH.AVE@(I!X'J#/CBPEF#FIY2(.7">9)RA1'V(DN0)^,-
  1260. XMR31,<&= (GYYZQ28&B-/B! N8LO.7B/;-$:ZZ!;6JA2(QNAR@HQZE!)G*!B,
  1261. XM_F8&0<H8C?J!>F>K8HTV"=0H!:A[D$R5XCV6#+)GLZ73,=B,HT=0!<&-4HN.
  1262. XMAK7(UJBCNJ "L+64*J+"IH!VDH$Z@^SC3<&CTYF/R0[28P;!/EJ/"A+8:#@H
  1263. XM,QD% JEK0)"*@J >*8B()82,6*N2D'*CB5'3N'XBI/2H0MJ/DH#\)0"*8IXK
  1264. XM&"D_NIVIBX]BG*@4A&)_: 9"'Y5S;R+6T@*4H[O)9:  "(&Y2041<GJ71>"<
  1265. XM:)-2+6Q41NK%V)UDFS[JDU(M\U<;ZB^&I*)"R,EV'J0(P5!JNA2E7UU#^I%^
  1266. XM*PFI4OHN&HK EP-#E3JE&$-1>M:%1E&E69"2(J5W@%6*( *D5-9.^I063] @
  1267. XM'8B65J5$Z4_$@(*E:>-8VI2JI5VI7*J!UH.3H%=EC^5/5MIR M2T"&6:5C L
  1268. XM1&#_IRJG2*P27$/0X14,"SEFT9#=U!:&9?,&)9 (4^BOJ+AM&Z7<GI(UM)8-
  1269. XMI=8P'@X:S*),&IA."._?UH,MU)K3&3LJARE$JRD9\/9M+0[AF28<K&O)YN^&
  1270. XM,!J*EH6&8#IP%W. 2';FM7F<HF2:(A0+ I1HAQ)$'8NBX*?UV*9,@Q<#G<JF
  1271. XM#6?;UM[]#CFI)PI7\E8R!/J2FDZG(><SE3).I]T=?/2MC*>Q:7<'#C)YYRF[
  1272. XMM(Z1IX*$'I:>OH&IU%^:%R0GWNE@VO[I#8=I2I"8*G?V263I$CRFE!^J]EWJ
  1273. XM#)3I_E<W$:>=:;9@5("FX4(A-)J>9*S)8(.?4BW?:6QZDPY>!RJI I[RI/)H
  1274. XM=^;K:*A*X .!97YNW2F&FIU]J!AA-]&-HJ>G1%=WBK:GW=)[2J*V=<F*[)/U
  1275. XML*AJ8%OJ))RHW.E:<*45)SRJV;<&TJ@C4Y&J2\FG,6HVYY>NI V<#.$IK0CM
  1276. XMWYZ2,E!0XL,%I9A&1HSIU7CX7*8/W,:2H!4-C:7.XCELAHT.! 9)P!5@T;99
  1277. XM6"JH@T67]FE\%'^3/%%!$0ZI$(#:I5:4%6JS**5&24?0.KHN'3[593RZM:R4
  1278. XMG*8JQHER;0VF-O92QETTI4#X%-24!6;%TA"4!:,;Q@GU+:KH$CID5)Y+9Y\(
  1279. XM>B']3)S6GUK=7$P-IZ>:!H"JCRCBZ:,61E!10/"H?0G.PN2 P1T1T JMES)6
  1280. XMJJHJJ^H?$*!'ZG"D LP*1<!\,0:!!E=#UI#YA8KN0O# >60340QZH"T$!I+0
  1281. XM8VD&;'B49E"G5"U"7&&JQAY(1[MJJOHK?JKC)^U)OQ1&X>H(N+%\JMS9NE2C
  1282. XM?DN\JF:*I*YC32:'J8VZI_"J>B=G,BO)$[XZF'"C7%C^9!+U20\2&4"EBF!<
  1283. XMQ (F^!FF;6H4036\%]A(I1!M"DB@AZA1C6XGCD1.,:!='Y0%L%A2% O=@F65
  1284. XM" T&GN6AL(1&$A$"QHI:+F]!2L.:;1@$04#9$;)JFT,%_M 8+%$ERC5AI-P6
  1285. XM,BOH85GU$'E &Q!G, 9DA_MP(_V%: 3("GHT$LY%HZ:R&BE]6\NJ.>RLVH2(
  1286. XMHAC4$= F&V&1U7.Q@LV@RDTJ$@2;$ 18#&_ G42=&BHHBKT XQ 89&K-T4 T
  1287. XM+GPJ9O*!F1@J&=K*)SVM?U*(FLJ$8XU"&M9=KBEBD99R83!A^]^U="WE((JJ
  1288. XM!_H N0!C*Z-@MBHJHYDIA9#!5[144E6.O0=QRCF6LL!=!B=? +_,*?Z'SE(H
  1289. XM71BHF^=*?[H'GRNH$;JV :/KZ3:YC81VAS)FUH5_+(W=D8.H?V"@78F097?*
  1290. XM9U'W$^0@B"<=\ 4 *6F PZ1U\ 6S4LN:)\V&MFL4$KS>H=U.LH.\^@ :"H&Q
  1291. XMO):'OZOSRA)\ 22*7C:]UB@OH17$N_J)MY7N:G7!5_8I>H"<O0')35= I59D
  1292. XM @** J;N*>5&*M$5$ ==45C$$E0*> K?RNRQ3 F3K0&3'B=PQ/K:OKX!AYFR
  1293. XM%K Q:\N1WMJD^*]^*^%*J=2OY0;B*J("1@H/;%:[9J]9B)0&!D)!JAFG%:DF
  1294. XMB% EWXJ;H: ^@+!6:::=Y2!SUJI,K]4K.UC!:J_":X7RK7RO)RM(Q<$^KR3*
  1295. XM#8O"$J\QT^%*PPZO0<HS=;GZ!9FK2*1US"G%2&##%^B:A\I'A+F&1.B82@JE
  1296. XMMG^#$JA!I28G5NI\J!@<*JZ<?["6@17[ZVNY%20G$MS. 1TI%&9 W&J.^JEK
  1297. XM018[CIT7BU*K(A)I*674SL%&@;$1K!T;N+I@DI<?VZ8(KF)1?T7'IBR^: BP
  1298. XM<PQA:N$S]6E:7J#MW>:Y+K.KZ?K2NI2M->;I2LB  Z'K)F@"DZ[SHK\JN
  1299. XM*2QLAZZ.LGP!=R;(T@&;4FUCQ;$$W6@>6\@^J>;!76/+WK*X;"[KULP).\VZ
  1300. XM<(G1$J-!>]">-4<N0I?Z3C9-C$J)-A10E\=*_E$KX0U-P!>P94P!=A1>T\M2
  1301. XMF'4JL4!I,BME3:^&F5Q1J85A@\VR.[Z1V''%7%%?QM5A9B*?D$=?HP/X05<'
  1302. XMYB'0X!UD5-3@!JRSYF?AX<XF ?&!/$N-Z!X$31/P]90!?J0;(+:5$2J 0*LO
  1303. XM/ %W0+ERT,9@"FT9T"'<!\/F0^L3)K0#[8;QC)R/#RU!$-&BDA9M^8?1Z@N[
  1304. XM358X!Z@'[$%'.]*N2>T+&A#2:BD1;4E+NJFT$6U XA?1M ,M+2D1YB:V%DP[
  1305. XMT&HGL0%.JR]@)3E)'B#4E@$R[1=%-1*'0^#&<X_E1%!M5"O53K54;55KU5ZU
  1306. XM6.U5&P_)I)L-<C,: #9N4/PA%8$ =T_[\_Z</$9!. LFC+,058REUMX!V&PW
  1307. XMRL*A+Q>0\1F\YK/(WEQ+M=2UA^A=FX@^4TL!?T>Z+;5T;=Q9>R)[@:U)2]CN
  1308. XMM8;MN0K8L@<F;6%KUQZV5R%C ]G.M(SM9.O8OE*)+>F&TLX!DFU?2]EVB#]/
  1309. XM9_M%?;:A[>R)B#8%W:AEL=%F&:FM[VFNXK65K6MK/L*VF:UHN]FV*DS+3BM>
  1310. XM-+:T+6F+ O2VL>WAR:^29QV-^Y+;JK9^;;C0UKI9[ N84=S.MG]MI)B&3+>K
  1311. XMK5/PW'9V]L)-N]S*MMEM-YK@8+?-K78+^@BWX^UW:]QNMD9!>FNZ\+6J9_<Y
  1312. XMVL98[BW& -]RG^'M2ZF25+3J+77KW)ZW,=:@QM^^M\!M==LJ[;?>+8%K>,JW
  1313. XM["R ZV8)N FN?5NO,;AB3#>Z-@2U_6UV*Q/%6!=N&4#>'K>M"IC@T&:XY>V&
  1314. XMZV:)N(/!A[O;2CQ9B5%+XLZW;A9+T.*JN!4N$S;CJK<4[N2PW?X\,FY16]SF
  1315. XMN*QM1B3WD+4QD/NC]UBQ> TZBM!@HK'2Z"3UJ"NGDT%07+JO9!)R&:*N+-UE
  1316. XMJX(O-0D(S4?484BT*@E"\QW=6B!G%O,0%F-+K624 Z '=.@:PG%6/]H3EXL.
  1317. XM>;E7QT3+U%:<[6%$6]"*;8&G/C1)Q;FC09>;SCX'=BY"0W[B<@.MG3O@YB9]
  1318. XM[I,"YPJ>4).@^^46NIXJ0T<2_+3I%)_+.R&SCNZ?"^GF2Y)NG1OF>JHS0%=5
  1319. XMT^H$$2YMP.0*GH_N]"3G_HIT+J$[ZHZK=12BJR]HM+>M3J#IY@'FD9^KY0*Z
  1320. XM$T*H*^O>!X:N?6GK>K@"W*[;ZW:ZO^ZG^^I6G+$NF$OL>JHV@*D[T Z.+BU>
  1321. XMU^AV!:VNN!3HSKF#KK1[YP8(6\ -8.T.M7?'&N#B#H';KK77[+JZWRZL&^Y2
  1322. XMNN/J('7LZK3*+J?+[3Y36VZ\"^V&NTDM: N)]0"::)E+V)VYW%*:>XK( &SN
  1323. XMX>;FFKF!'=#D[/J[ 4*T&_ :NH7?I4O27K:G+0N5[_I*W>[3!.J"NU_NQ>NI
  1324. XM^IRWV$ ;\"ZV[.ZF"_+RN\!N'2#LE@'M">&@+(BY!"^92]"(8@DOEYKH-+Q5
  1325. XMW)OKZ<*[P2[)>W74O& #&8#QGKM(+<<K\+:\O*Z^Z^Y*O$2OS&OT/@=([\U[
  1326. XM\C*]0*V'J^VZO$WNT.OM%KWR[I>;]4:GE2[3:],V(1]OV/ONCKU6;]E[]!:O
  1327. XM2:^A6^H>NR#MUQOUOKQOK\C[[%:\X>[9J_1ZJK5NRCO4)+?9+M2[[.Z[?>^O
  1328. XM]/<J$]&NX%OL,KT,[8BK^$J]Z=,]%B2<"1!&>S8VG:FL'/ @/(P$] 29$3OD
  1329. XM!(?4[#0TH _#B(O0+5"K9=,J@OI6;RX.9TI27 W,H<<G*12=CT,W6SG)I)MO
  1330. XM,+OJZD/ )>GDVWQ)PR5 %/N.2;X2&Y5N=+6J16I3!X"U&E]  !K<01@4*02W
  1331. XM($50 %YS1Y$(9\*2V^Z&O(YOO$0N+7AU2U?U^6I#?0TV*VCUNV3OOSOISKH5
  1332. XM9V"5JHD*3,$7X!]L++,8$1/NXK,&;L\3\W)/PX>=$1Y0 4VB^CL'L;_1K_O+
  1333. XM4\&_<:_\._?:O&COKQA8E0L( AR@_](!_.]'.EFJLXPF>WL0-*-Y9J@@!X!+
  1334. XM52\!+'X8P!Q# NPY.03C0FSE]!H4W]/Z2YV\M0[PFM6IQ+PSK\EK :M9XM#@
  1335. XM0")LP!VP^?3_AL 5;C?J]U1^9UY[@"M)L]D'WP,EG:I'T/@;@ E@+L@79:96
  1336. XMK15!*UM2U&B%0L3@:C$$<] T$01HP6G4_.8@O+4OIE@Q'PZTI>75FNK9 ($"
  1337. XMAB 4E <IV><;VRAGRLWX6_Q*/<+E9:/\QB*,2I4K>*J46M\&@B3I7]W$%& '
  1338. XMVU(Q[Q! 4)0!U9PCK )UBR" &K 1?(RO% 0L"1-@E? C3"Y*I+1)Q\D'=P6?
  1339. XM+PH,]W["4\'B^RMY-ZF%H+4#3[Q#T_F['1D!Z>]&P&V1PKR)*:S:/"FIL"<\
  1340. XM";O"/Q$LW$7]71"P"KP=L< (,!'0!>C"W:@P# JWH9;P8K0(*Q#5<,"JRV[#
  1341. XMW' W_-;,"7Y)4*  M&W^QU!$!B0!N:B@&C*E" >+1^C >GV1Q:-J<(ZPI1'6
  1342. XM0ZF*JQC#I6H[83U&7Z<9"JZKJZHM=W_RF?$JGAL0^P#^IR@4N<)%5E"6:[[J
  1343. XM'J51@W) ;&9$A6'Z3H4+R@9E5]GU+(D*.ZP &"5T0#G,4YRM1]#PA&L.:KCF
  1344. XMT= -G9<]KKK;Y51*LY,*,#R9E__EH$83DR1:0MMQ$[?$@O#68I!0'D%$6^)[
  1345. XMY 1!1&''&/Q$K@%0[!5P+/?JX=,.UP%,F"YSE]!3:T-SP"JT!P'H3G:=_)=5
  1346. XML4(19L$O'V@2, =H)U9QF!422$(?'QF BA@%M\I_:<\:Q2BL:Q!XH$AFS]$F
  1347. XM;-H=(.E!T!83;Z@N>.&1$L5>@5FG(( ,O<Y//$!X!6W)VALY\!3$Y?)K7!K"
  1348. XMC,I'=A2??5:N+\H52V_$XA>EEU'%F/%5K$T-P%*3]H$+IRV@ZKIZ_Z86PVLZ
  1349. XM95" J@DQ $JY),.A,?&1_G:JX^IIG/]VMTW(:OP3M<9<WFL,&MO"V@<SG #3
  1350. XMQG@N!AP#=[BZ,4+,'BC$5,&8"QL#QR5/$G  #\<^P+IJ'&O N#$2X1*PQLNQ
  1351. XM:YR$7,9E\1>EY6A*44FIH)@\Q\.2I9;^%D90"322!YS'OW%ZO )+QRVP,UP8
  1352. XM<<;A,59\7G;%F3%3G%8&"MQ4"<'8',9+8Y-PH7P@6:9>$!D29[=PW6)[V:-2
  1353. XM+]2D#(O&Z:]F9'^< 3)'&2 2JT+:V3"!'Z+&V3$-?%[BQI?8P?2!NL7Q06%T
  1354. XM(6?(&[)W\I+9QF[ %Z '9 D4L$?Y7Y+(/(6*?%EDR.BP2] A!W"/ 6J<X(C(
  1355. XM)S+1"H19R#MR1Y0.CP8><I"<_\[(O(*(7!.K)#HRAJPD^\@O\H><__+$4G+-
  1356. XMD>[B-OBBA+B!+,@%,'W<##_(N&!\S"_-Q].Q,XPD6\D:\OWY(U_'7T"(/-[@
  1357. XMFC@RH& BGY?V;&$$)?::S02M@B:[I;S6G_POBGC<J$_)J5;'GBI@O#3:$MSK
  1358. XM>,,=)Z;)0S"&#PLG4JFC_!-!R@8%#@K](427LAM0,;H'IF&+? XOR?+?@U4G
  1359. XMX<2_)5Q$ NM+;<>/7%OIGDN3JQQZY!^Q\DN& T.:A[(W2B)"Q5:L'7KF!1_W
  1360. XMJT_,%*A.@X%) ,\F*:T3NM44.PE/\;?RG)AN*(%"L!9K*Y1HT**#(@8% R)V
  1361. XM!&C%9HG[T!P(N<&1(E.:PA%GWK*,U"*C<\!2T.4(RZ$'L:R"M,O=Y=9"+R/%
  1362. XM5 [UY&I93\23#Y 4$\ASP*8<,43*+H$MM11 3<0QIER(L8OW,@E8+;]%WE3#
  1363. XM;%E8R\&&$S $? %$P+A7!&P$0^/!3+U28YK17E,IY222\'W PEU\\\RL3 6-
  1364. XMM=UR[*7E>LQN\6H:UFFE+%"Y[-Q@)H.-/S$RKP$E,QMP,@]/.0F1,JRYR\\R
  1365. XMXR+ ]4GP =&Z!@C-$FR5 C;&R]?'_4HF+05L5,3L,4_,*4"GD 58S, C$A $
  1366. XMV"!%P!!@9S23&P'0O#27*#N(QSRJ9+[Y4V-950 *.=*7NA7H$Z-"X3"0 74V
  1367. XMU/T;%7P@98W@MT2D")Q#DL)5K <7P^3PXVBK;![MH1G_EWO>H#'8P$US\4GJ
  1368. XM+T@F>,(I$@L#$+$!KIDX3\Q*LJJ1.%*BR_.6>'>GE01 [B4\$ ?Z0%QL$
  1369. XM>W'%(BV#)]2R0Y(URSZ;B[9L+U\Q\/)?=4O<K_3R4=/Q<,M%@+?LB]++'Y&X
  1370. XM_!@L.QFB?"=JT1=TLRLA.6L*P6SES)!Y>$5$N(!ZC#<A0*TU22T%Q?-\%5MD
  1371. XMQ8LHM8'P<,\0,DAL*C/ _^!7P"\C!Q+989>;[<N#6AI"_C'.#\WFE#X+3]=3
  1372. XM4!""MKC5#_><6L OJ<7VG 948M5R*U4M"] N@"NJ+?NB$S.HZ02E/2*STMPS
  1373. XMG\PZLP1M@ IPL!B]W*ZNPYC3\E0YIQ?Y<O4T/&%/U.NF>SD3SR^9ZEQMT@'J
  1374. XM,C.402\%X1"GH#J_1V]C6K0$[ L,1IBU$!A4;55L0$-S)C;TOO C^ 7XH:U%
  1375. XM]]#/3RD6]#C;#Y$S?C(YW\#*E@I]7E8L70[HO#J- >HRZ>PL&P6G<TRL.M_$
  1376. XMKO,[#!(PT3K#\TPY:R*7LQ2-1&,,<LRLG+X.8'.0W_DX"";H0])C3PH4#AC*
  1377. XMY!KYRB'#XVETOA1#P#:GRM$&JES24"Y (^U!O['[;E2/0UZP"_F,N]]Z824R
  1378. XM#7*%(6TNV 0C 3_+-CRL+X1KF3^-FXP#$3!?X"/:X9,09_R,W F+<ZPU360&
  1379. XML$@^- M+\0_@GT@IB,%H '^X*C!"0^+1C4]8 -')2-,C%MWWY"EHTK)(, T"
  1380. XMH#=SY]]IT>4M4F=KH4N+=)1!,PUZ/--6J#0MT;X'U/3/(ZPIL'* NM*L40;Q
  1381. XM1U%6!'C3@6RZDM#0E]4N9[&RD $Z2QL@"/NB+$-259CA4E%A8K:8D5*AIC:&
  1382. XM2Y<B%MT-.]T$-LL$?5D#7$FGVPVKFST&\;2.2M*E?,)4YL;((F2]-.\+3._2
  1383. XM#+,&H1541@]/09!-?P'Y U;6 ZQVN8L)P$ZK#;A-35GC2*Y6%W# 3U/451"1
  1384. XM.$S'!]DT%@2"]9W)]!Q-@K6[HID>G;B GNP=4R,YB0F53?([Y;X!Q^4A'()!
  1385. XM'4#U-XUW6A'J"D^M0]0IN@,54 5( 8W#[Q%_E)!HR9Z&$V066367%R'[ -[-
  1386. XM9:!.9P8& >H;R!T$.I?V9%;S40J ' T'N$# PB\]5B<'!@$>\"6,3WG 7<U9
  1387. XM' %#P+C"26$!?+45P'L &F? &)#?$!I(3?LQ*UP2KW& S"DPFU/G->T79-.'
  1388. XMV2G*A4QZ%&)$_4MGTR%"^,P?<@I8P"#C2_^=-_6F2P9PU4.1+"S"LHBP&!<%
  1389. XM>3H1^/**@0:4$6>@4PU;^P!3@41 $1C1<)$)$%<;G;"87:TEP&)YM99PG8[6
  1390. XMCT-($*A]4=(5$2;6<5\0UMQI1>R7>(#1";]@ 9^O6ZTYG=9A0%>MQ"0AMC4;
  1391. XM$%M'/^'U3Y1;3P3CTUIM4A76=L!'Y&IA%EXB)/SIMBQ>@4=T9,0 P:97T%&Q
  1392. XMURX "P=?TUEI]7P-2PN>+L VE%^#H9^UC&A8N]=*FUAC95$["[9_[6"3H)O=
  1393. XM@IUG_=?JEO9$7Q/8/\:!O5^C==CU',17;]>H-4^Q$?#5NG09@&&3 7P 7XU*
  1394. XMKMBP&'MM4F'7#@&DI"#0"YK3;_TX)%NOM7C-D5;7.S9/55@+6@J, E->^\N7
  1395. XM 7DM79,QYC58@%YSS%"VV]E180'MDG8])>G8!35X1&7+$"/VE%18*Z*)-6* 
  1396. XM"TO5N@-X9"@;1A3B2TT;<-8)=@C@*0PRQ#3@:5J7V';9^K"@"%HFP)%M/<C6
  1397. XML-B1?5Y3!+ 8EFV'5%_.-<T<7??8U+5UK76$V*2-?U-3EW=3$G?M70M:>G:2
  1398. XMO?WXV4XVH TQ3!&S]93=$#P$4,"-/9A<V1(UCSU=_]C ]0.L/1766\ 3S%<_
  1399. XMPU/:E,935=I\]D^%:./6F?;X5&1#PU-VE?UHY]@2M4EU9ALHF;5;S69K?[9.
  1400. XM:%WB&-NE==3[ X */H-]\ ,H871VXO(#'-A&Y[3]=^T%X=]:W5H?V7[TX\!;
  1401. XM@S2N]:F]9T\^W_:2K4,TV;JUVZ9:!Z0B05I!+PP'W()3\!#NVJ)<94,;;&:J
  1402. XMZ./I1-BO;P#7!1>A  ?VG2"T7B><"[X=$(QYT5+^D,+E?AB"6B9P(Z180)%9
  1403. XM"*< ;A'=LW#OVT@#-J)C%)D ]\1]$"0[;K5R384UUT1B7ZA\GHE>'-,T)8H)
  1404. XMA7:*^?1YUOIT=C<?C;6+M<&@ +S9)4Z<W6Q3V]UU:FUG\T9B1:W]9X]/@O8?
  1405. XMW-M N<FO48#:) "2]E"DWWC3L-U2!E2?V]N/"G!T?RMNM;J"96<>X?2S1DYS
  1406. XM%N;T%H!.:S@K2T?=MR6<FW8@QW;'U?JQRI6N5#;$20P&!R!2,VEFD : %B+.
  1407. XM2RE/)SB5-=%M3RO4@&&G]5"?KV)=J_1/HR$;@4!-4%<_%K4QPGAS/QJU1<=1
  1408. XMRP;)Q$=-!FP$^8ALK7EO!&1#N_UYTT5E *<]>@O6C $98*E@IE_ ,T(PMP&:
  1409. XMM]DR,YD :C=M()$9W;DV+.9MQS1P-^'-O6#>;$.R4U#I26NU7C9\MPZ8J?%-
  1410. XM!Q>,R7>R,P.X&V]1$3#:70'O BY1#N9[0< JHB4.!VHVJ8BB/&H4F+&@YTG4
  1411. XMBUES=E /)H:W9A1SK\ZAUTW5.LG6GYE%H.B40-+W<DI]MQJ"(/8]$G3?%=@'
  1412. XME5"F$MMWT1W(@=]7QQGQ, Y??G=GXGU.IWRIUXEZ\'@2O:\_)%WA36+<J!
  1413. XM #C NT$0'-VRS]T-OVC+BO?@-GD[WEQ!02TFG'"AST>5Q\$3,7%S"E/*E#2E
  1414. XME*9UY]J9*AOWC47>:TBG);;  'A "< &X $AM0A4&P7(. AF"AE2B#& #5 9
  1415. XMEE%DP-#GHXDX(( /8#5DX!T5$^Z$(T N1*_#@V>:'=6PC:50B,_W$GYW7^$W
  1416. XM3Q1N-=!1)I45'E3=15BX%)Z$\W68%Q[ A8-':GAHU(;[ !GXV+>%JX= ]1B^
  1417. XMAC_A]I86+H?SX2QWE$B^^EJM"FDB45_7GR]R38_<$:EII%UM=\XZ0PR&=<=@
  1418. X;'+A!C5,PX(FL(OY+']ZZ1Q%V$(BO*"#<@]4 
  1419. Xend
  1420. END_OF_FILE
  1421. if test 31873 -ne `wc -c <'usermenu.c.Z.uu'`; then
  1422.     echo shar: \"'usermenu.c.Z.uu'\" unpacked with wrong size!
  1423. fi
  1424. # end of 'usermenu.c.Z.uu'
  1425. fi
  1426. if test -f 'vdm.mask' -a "${1}" != "-c" ; then 
  1427.   echo shar: Will not clobber existing file \"'vdm.mask'\"
  1428. else
  1429. echo shar: Extracting \"'vdm.mask'\" \(1931 characters\)
  1430. sed "s/^X//" >'vdm.mask' <<'END_OF_FILE'
  1431. X#define vdmmask_width 64
  1432. X#define vdmmask_height 45
  1433. Xstatic char vdmmask_bits[] = {
  1434. X 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1435. X 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,
  1436. X 0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,
  1437. X 0x71,0x00,0x00,0x00,0x00,0x00,0xc0,0xe1,0x87,0x01,0x00,0x00,0x00,0x00,0x38,
  1438. X 0xfc,0x3f,0x0e,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0x30,0x00,0x00,0x00,0xe0,
  1439. X 0x70,0xfc,0xff,0xc7,0x01,0x00,0x00,0x1c,0xfe,0xe1,0xff,0x1f,0x06,0x00,0x80,
  1440. X 0xc3,0xff,0x8f,0xff,0x07,0x18,0x00,0x70,0xe0,0xff,0x1f,0xfc,0x00,0x1f,0x00,
  1441. X 0x0e,0xe0,0xff,0x1f,0x10,0xe0,0x1f,0xc0,0x01,0xc0,0xff,0x0f,0x00,0xfc,0x1f,
  1442. X 0x30,0x00,0xf0,0xff,0x03,0x80,0xff,0x1f,0xf0,0x00,0xf8,0xff,0x07,0xf0,0xff,
  1443. X 0x1f,0xf0,0x07,0xf8,0xff,0x07,0xfe,0xff,0x1f,0xf0,0x1f,0xf0,0xff,0xc3,0xff,
  1444. X 0xff,0x1f,0xf0,0xff,0x80,0x7f,0xf8,0xff,0xff,0x1f,0xf0,0xff,0x03,0x0e,0xff,
  1445. X 0xff,0xff,0x1f,0xf0,0xff,0x1f,0xe0,0xff,0xff,0xff,0x1f,0xf0,0xff,0x7f,0xfc,
  1446. X 0xff,0xff,0xff,0x1f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf0,0xff,0xff,
  1447. X 0xff,0xff,0xff,0xff,0x1f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf0,0xff,
  1448. X 0xff,0xff,0xff,0xff,0xff,0x1f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf0,
  1449. X 0xff,0xff,0xc7,0xff,0xff,0xff,0x1f,0xf0,0xff,0xff,0x01,0xff,0xff,0xff,0x1f,
  1450. X 0xf0,0xff,0xff,0x01,0xf8,0xff,0xff,0x1f,0xf0,0xff,0xff,0x01,0xe0,0xff,0xff,
  1451. X 0x1f,0xf0,0xff,0xff,0x01,0x00,0xff,0xff,0x03,0xf0,0xff,0xff,0x01,0x00,0xfc,
  1452. X 0x7f,0x00,0xf0,0xff,0xff,0x01,0x00,0xe0,0x1f,0x00,0xf0,0xff,0xff,0x01,0x00,
  1453. X 0x80,0x03,0x00,0xc0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,
  1454. X 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
  1455. X 0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  1456. X 0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,
  1457. X 0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  1458. END_OF_FILE
  1459. if test 1931 -ne `wc -c <'vdm.mask'`; then
  1460.     echo shar: \"'vdm.mask'\" unpacked with wrong size!
  1461. fi
  1462. # end of 'vdm.mask'
  1463. fi
  1464. echo shar: End of archive 12 \(of 21\).
  1465. cp /dev/null ark12isdone
  1466. MISSING=""
  1467. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ; do
  1468.     if test ! -f ark${I}isdone ; then
  1469.     MISSING="${MISSING} ${I}"
  1470.     fi
  1471. done
  1472. if test "${MISSING}" = "" ; then
  1473.     echo You have unpacked all 21 archives.
  1474.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1475. else
  1476.     echo You still need to unpack the following archives:
  1477.     echo "        " ${MISSING}
  1478. fi
  1479. ##  End of shell archive.
  1480. exit 0
  1481. --
  1482. Molecular Simulations, Inc.             mail: dcmartin@postgres.berkeley.edu
  1483. 796 N. Pastoria Avenue                  uucp: uwvax!ucbvax!dcmartin
  1484. Sunnyvale, California 94086             at&t: 408/522-9236
  1485.