zawada@TRIPOLI.EES.ANL.GOV (11/10/89)
Congratulations on obtaining a copy of EXPRESS!!!
This file is an archive which contains:
README.express
express.ps
me.ras.uu
ScrollDataItem.
To unarchive this file type
ar xv 'filename'
Special Notes
me.ras.uu is a uuencoded raster file which must
be de-coded by uudecode me.ras.uu
ScrollDataItem. must be renamed to
ScrollDataItem.ps
------------- Cut Here --------------- Cut Here ------------
!<arch>
README.express 624748393 117 100 100644 2774 `
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% EXPRESS v1.0
%
% Date: October 18, 1989
% Author:
% David G. Zawada
% EAIS-VIS
% Argonne National Laboratory
% zawada@athens.ees.anl.gov
%
% Technical Advisors:
% Peter A. Korp
% EAIS-VIS
% Argonne National Laboratory
% korp@athens.ees.anl.gov
%
% David C. Mak
% EAIS-VIS
% Argonne National Laboratory
% mak@athens.ees.anl.gov
%
%
% Accompanying files:
% -> ScrollDataItem.ps
% -> me.ras
%
% EXPRESS is a quick launch facility which displays
% a list of user-specified applications in a menu with
% a touch of the designated HotKey.
%
% IMPORTANT !!!
% Before running EXPRESS, the environment variable
% EXPRESS_HOME must be set to the path specifying the
% location of the files me.ras and ScrollDataItem.ps.
% To run EXPRESS, simply type 'psh express.ps'. However,
% I strongly recommend that you add an item to your NeWS
% rootmenu to perform this task. A line, similar to the
% following, in your user.ps file will acheive this goal:
%
% 0 (Activate Express)
% { (psh "path to express"/express.ps) forkunix }
% /insertitem rootmenu send
%
% Now, EXPRESS can be launched from a menu selection,
% which I prefer since my typing skills are minimal.
% Also, EXPRESS is only a mouse click away.
%
% After launching EXPRESS for the first time, the 'RIGHT'
% key is set as the HotKey and the EXPRESS menu contains
% the following items:
%
% Terminal <- Sun psterm window
% Cancel <- no action
% About Express <- EXPRESS credits
% Configure Express <- Allows customization
% Disable Express <- Deactivates EXPRESS
%
% These items are hardcoded and cannot be changed by
% EXPRESS itself. The Configure option, however, displays
% a control panel which allows for the customization of
% the applications accessible through EXPRESS, the fonts
% used by EXPRESS, and the HotKey which launches EXPRESS.
% Currently, only the F-, L-, and R-function keys, as
% well as the LEFT and RIGHT keys, may be designated as
% the HotKey. Also, only the Sun3 keyboard layout is
% supported at present.
%
% A neat feature of EXPRESS is that it can be configured
% to execute virtually any piece of NeWS/PostScript code.
% Suppose there is a file called win.ps which opens a
% NeWS window. You can tell EXPRESS how to launch this
% program by accessing the Application Customizer and
% entering "psh win.ps" in the Application to add field
% and setting the Application type CycleItem to NeWS.
% EXPRESS will simply fork off the process "psh win.ps".
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
express_pd.ps 626557502 117 100 100644 35994 `
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% EXPRESS v1.0
%
% Date: October 18, 1989
% Author:
% David G. Zawada
% EAIS-VIS
% Argonne National Laboratory
% zawada@athens.ees.anl.gov
%
% Technical Advisors:
% Peter A. Korp
% EAIS-VIS
% Argonne National Laboratory
% korp@athens.ees.anl.gov
%
% David C. Mak
% EAIS-VIS
% Argonne National Laboratory
% mak@athens.ees.anl.gov
%
%
% Accompanying files:
% -> ScrollDataItem.ps
% -> me.ras
%
% EXPRESS is a quick launch facility which displays
% a list of user-specified applications in a menu with
% a touch of the designated HotKey.
%
% IMPORTANT !!!
% Before running EXPRESS, the environment variable
% EXPRESS_HOME must be set to the path specifying the
% location of the files me.ras and ScrollDataItem.ps.
% To run EXPRESS, simply type 'psh express.ps'. However,
% I strongly recommend that you add an item to your NeWS
% rootmenu to perform this task. A line, similar to the
% following, in your user.ps file will acheive this goal:
%
% 0 (Activate Express)
% { (psh "path to express"/express.ps) forkunix }
% /insertitem rootmenu send
%
% Now, EXPRESS can be launched from a menu selection,
% which I prefer since my typing skills are minimal.
% Also, EXPRESS is only a mouse click away.
%
% After launching EXPRESS for the first time, the 'RIGHT'
% key is set as the HotKey and the EXPRESS menu contains
% the following items:
%
% Terminal <- Sun psterm window
% Cancel <- no action
% About Express <- EXPRESS credits
% Configure Express <- Allows customization
% Disable Express <- Deactivates EXPRESS
%
% These items are hardcoded and cannot be changed by
% EXPRESS itself. The Configure option, however, displays
% a control panel which allows for the customization of
% the applications accessible through EXPRESS, the fonts
% used by EXPRESS, and the HotKey which launches EXPRESS.
% Currently, only the F-, L-, and R-function keys, as
% well as the LEFT and RIGHT keys, may be designated as
% the HotKey. Also, only the Sun3 keyboard layout is
% supported at present.
%
% A neat feature of EXPRESS is that it can be configured
% to execute virtually any piece of NeWS/PostScript code.
% Suppose there is a file called win.ps which opens a
% NeWS window. You can tell EXPRESS how to launch this
% program by accessing the Application Customizer and
% entering "psh win.ps" in the Application to add field
% and setting the Application type CycleItem to NeWS.
% EXPRESS will simply fork off the process "psh win.ps".
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
systemdict /ScrollDataItem known not % Make sure SDI is available
{ (EXPRESS_HOME) getenv (/ScrollDataItem.ps) append run } if
version (1.1) eq
{
keyboardtype 3 eq % enable the Left key -- Why does NeWS disable it?
{
systemdict /keyboard_positions get
/FunctionLeft
[ 120 systemdict /UI_private get /keyStation get exec /function ] put
} if
} if
systemdict /ExpressDict 100 dict put % put all the Express code in its own dictionary
ExpressDict begin
/createfile? false def % does the defaults file (.expressapps) need to be created?
/expressfile null def
/NumDefaultMenuEntries 7 def
/HotKey /FunctionRight def
/writefile % - > - write out the current EXPRESS settings
{
pause % Just Being Nice
/expressfile ($HOME/.expressapps) (w) file store
expressfile ([\n) writestring
ExpressMenu /MenuKeys get
0 1 2 index length NumDefaultMenuEntries 1 add sub
{
expressfile 2 index 3 -1 roll get (\() exch append (\)\n) append writestring
} for
expressfile (]\n\n) writestring
pause % Just Being Nice
expressfile ([\n) writestring
ExpressMenu /MenuActions get
0 1 2 index length NumDefaultMenuEntries 1 add sub
{
expressfile 2 index 3 -1 roll get (\() exch append (\)\n) append writestring
} for
expressfile (]\n) writestring
[ ButFnt MenFnt SDIFnt TIFnt ]
{
(\() exch convertfont (\)\n) append append
expressfile exch writestring
} forall
expressfile (\() HotKey 100 string cvs (\)\n) append append writestring
expressfile closefile
} def
/getfntname % font => string containing fontname and pt_size
{
200 string cvs
(font\() search pop pop pop
(\)) search pop 3 1 roll pop pop
( ) append
} def
/convertfont % (font&size) => (font size) put space betwn font and size
{
getfntname
dup 0 1 index length 3 sub getinterval
( )
3 -1 roll dup length 3 sub 3 getinterval
append append
} def
/verifyfile % filename => boolean does filename exist?
{
{ (r) file } stopped
{
pop pop false
}
{
closefile true
} ifelse
} def
($HOME/.expressapps) verifyfile % if defaults file exists, read it in
{
ExpressDict begin
($HOME/.expressapps) run
/HotKey exch cvn store
/TIFnt exch ( ) search pop findfont 3 1 roll pop cvi scalefont def
/SDIFnt exch ( ) search pop findfont 3 1 roll pop cvi scalefont def
/MenFnt exch ( ) search pop findfont 3 1 roll pop cvi scalefont def
/ButFnt exch ( ) search pop findfont 3 1 roll pop cvi scalefont def
/UserMenuActions exch def
/UserMenuKeys exch def
end % ExpressDict
}
{ % otherwise, set default fonts and ...
ExpressDict begin
/ButFnt /Times-Bold findfont 14 scalefont def
/MenFnt /Helvetica-Bold findfont 12 scalefont def
/SDIFnt /Helvetica-Bold findfont 14 scalefont def
/TIFnt /Screen-Bold findfont 14 scalefont def
end % ExpressDict
/createfile? true store % ... indicate default file needs to be created
} ifelse
gsave % get screen dimensions
framebuffer setcanvas clippath pathbbox
/ScreenHeight exch def
/ScreenWidth exch def
pop pop
grestore
/calc_wincoords % w h => x y w h coords that will center window on screen
{
1 index 1 index
ScreenHeight exch sub 2 div 4 1 roll
ScreenWidth exch sub 2 div 4 1 roll
} def
%%%%%%%%%%%%%%%%%%%%%%
%% About EXPRESS stuff
%%%%%%%%%%%%%%%%%%%%%%
/aboutEM null def
/aboutcan framebuffer newcanvas def
aboutcan /Transparent false put
aboutcan /Retained true put
aboutcan /Mapped false put
0 0 463 313 rectpath aboutcan reshapecanvas
/about_express % display EXPRESS credits
{
ExpressDict begin
gsave
aboutcan setcanvas 300 dup movecanvas
aboutcan canvastotop
aboutcan /Mapped true put
gsave % scale and load in my picture !!! (kind of Mac-ish, huh?)
463 313 scale pause
(EXPRESS_HOME) getenv (/me.ras) append readcanvas imagecanvas
grestore
newpath 128 8 329 20 rectpath
0 0 0 rgbcolor 1 1 1 rgbcolor
ColorDisplay?
{
pop pop 0 0 1 rgbcolor ColorDict /MediumSpringGreen get
} if
setcolor fill
setcolor
newpath 2 128 8 329 20 rectframe eofill
/Symbol findfont 14 scalefont setfont
131 14 moveto (\323) show
/Helvetica-Bold findfont 12 scalefont setfont
142 14 moveto ( Argonne National Lab by Dave Zawada -- Version 1.0) show
/aboutEM % display credits until Left Mouse Button pressed
[
PointButton
{ aboutcan /Mapped false put aboutEM killprocess }
/DownTransition
aboutcan
eventmgrinterest
] forkeventmgr store
grestore
end % ExpressDict
} def
%% End About EXPRESS
%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPRESS Control Panel
%%%%%%%%%%%%%%%%%%%%%%%%%
/cpButtonSize 0 def % size of buttons to use -- depends on ButFnt
/cpButtonX 10 def
/cpitemsEM null def
/appsChanges? false def % Changes made to application list?
/fntChanges? false def % Changes made to font list?
/hkChanges? false def % Change made to HotKey?
/cp framebuffer /new SunViewWindow send def
{
300 dup 200 400 reshape
FrameInterests /FrameMenuEvent undef
FrameInterests /ClientMenuEvent undef
/PaintClient
{
ColorDisplay? { ColorDict /LightBlue get fillcanvas } if
cpitems paintitems
} def
/FrameFont /Helvetica-Bold findfont 14 scalefont def
/FrameLabel (EXPRESS Control Panel) def
/flipiconic {} def
/stretchcorner {} def
} cp send
/cpcan cp /ClientCanvas get def
%--------------------
%--- button notifies
%--------------------
/abut_notify { /unmap cp send configapps } def % Display Application Customizer
/fbut_notify { /unmap cp send configfnt } def % Display Font Customizer
/hkbut_notify { /unmap cp send confighk } def % Display HotKey Customizer
/sbut_notify
{ % Save any changes and write them out to the defaults file
ExpressDict begin
hkChanges?
{
HotKey unbindkey
/HotKey (Function) hkitems /msg get /ItemObject get append cvn store
HotKey 20 string cvs (Function) search pop pop pop
dup /printstring hkitems /msg get send
cvn /CurntHK exch store
setHotKey
hkcan_notify /hkChanges? false store
} if
fntChanges?
{
/ButFnt tmpButFnt store
/MenFnt tmpMenFnt store
% Bizarre, but must create a NEW menu to reflect the font change
{
/MenuFont MenFnt store
/SaveMenuKeys MenuKeys store /SaveMenuActions MenuActions store
} ExpressMenu send
/ExpressMenu SaveMenuKeys SaveMenuActions /new DefaultMenu send store
adjustmenu
/SDIFnt tmpSDIFnt store
/TIFnt tmpTIFnt store
update_configwin update_hkwin update_cp
} if
writefile
/unmap cp send
cpitemsEM null ne { cpitemsEM killprocess /cpitemsEM null store } if
end % ExpressDict
} def
/cbut_notify % - > - cancel ALL changes
{
can_notify
cancel_notify
hkcan_notify
/unmap cp send
cpitemsEM null ne { cpitemsEM killprocess /cpitemsEM null store } if
} def
/cpitems
5 dict dup begin
/abut (Change Installed Applications) /abut_notify cpcan 0 0 /new ButtonItem send
dup /ItemFrame 2 put
dup /ItemLabelFont ButFnt put
0 0 /move 3 index send def
/cpButtonSize abut /ItemWidth get store
/fbut (Change Fonts) /fbut_notify cpcan cpButtonSize 0 /new ButtonItem send
dup /ItemFrame 2 put
dup /ItemLabelFont ButFnt put
0 0 /move 3 index send def
/hkbut(Change HotKey) /hkbut_notify cpcan cpButtonSize 0 /new ButtonItem send
dup /ItemFrame 2 put
dup /ItemLabelFont ButFnt put
0 0 /move 3 index send def
/sbut(Save) /sbut_notify cpcan 0 0 /new ButtonItem send
dup begin
/ItemFrame 2 def
/ItemLabelFont ButFnt def
/ItemFillColor 1 0 0 rgbcolor def
end
0 0 /move 3 index send def
/cbut(Cancel) /cbut_notify cpcan 0 0 /new ButtonItem send
dup begin
/ItemFrame 2 def
/ItemLabelFont ButFnt def
/ItemFillColor 1 1 0 rgbcolor def
end
0 0 /move 3 index send def
end % cpitems
def
/poscpitems % - > - Postion cpitems based on the max button size in cpitems
{
cpitems begin
cpButtonX dup /move sbut send
cpButtonX cpButtonSize add cbut /ItemWidth get sub 10 /move cbut send
cbut /ItemHeight get
cpButtonX dup 1.5 mul 2 index add /move hkbut send
cpButtonX dup 2 mul 2 index 2 mul add /move fbut send
cpButtonX dup 2.5 mul 3 -1 roll 3 mul add /move abut send
end % cpitems
} def
{
cpButtonX 2.5 mul cpButtonSize add
cpButtonX 3.5 mul cpitems /cbut get /ItemHeight get 4 mul
BorderTop BorderBottom add add add
calc_wincoords reshape
} cp send
poscpitems
%% End Control Panel
%%%%%%%%%%%%%%%%
%% Font Adjuster
%%%%%%%%%%%%%%%%
/FontChange? false def
/tmpButFnt ButFnt def
/tmpMenFnt MenFnt def
/tmpSDIFnt SDIFnt def
/tmpTIFnt TIFnt def
/Fonts [ % the fonts to choose from
[ (Boston) dup cvn findfont 14 scalefont ]
[ (Courier) dup cvn findfont 14 scalefont ]
[ (Courier-Bold) dup cvn findfont 14 scalefont ]
[ (Courier-BoldOblique) dup cvn findfont 14 scalefont ]
[ (Courier-Oblique) dup cvn findfont 14 scalefont ]
[ (Helvetica) dup cvn findfont 14 scalefont ]
[ (Helvetica-Bold) dup cvn findfont 14 scalefont ]
[ (Helvetica-BoldOblique) dup cvn findfont 14 scalefont ]
[ (Helvetica-Oblique) dup cvn findfont 14 scalefont ]
[ (Screen) dup cvn findfont 14 scalefont ]
[ (Screen-Bold) dup cvn findfont 14 scalefont ]
[ (Times-Bold) dup cvn findfont 14 scalefont ]
[ (Times-BoldItalic) dup cvn findfont 14 scalefont ]
[ (Times-Italic) dup cvn findfont 14 scalefont ]
[ (Times-Roman) dup cvn findfont 14 scalefont ]
] def
/PtSizes [ [(12)] [(14)] [(18)] [(24)] ] def % font point sizes
/fwitemsEM null def
/fwin framebuffer /new SunViewWindow send def
{
200 300 810 240 reshape
FrameInterests /FrameMenuEvent undef
FrameInterests /ClientMenuEvent undef
/PaintClient
{
ColorDisplay? { ColorDict /LightBlue get fillcanvas } if
fwinitems paintitems
} def
/FrameFont /Helvetica-BoldOblique findfont 14 scalefont def
/FrameLabel (EXPRESS Font Customizer for ) (USER) getenv append def
/flipiconic {} def
/stretchcorner {} def
} fwin send
/fwcan fwin /ClientCanvas get def
/configfnt % - > - configure and display the Font Customizer window
{
ExpressDict begin
/fwitemsEM fwinitems forkitems store
fwinitems begin
(%) [ tmpButFnt getfntname ] /printf mb send
(%) [ tmpMenFnt getfntname ] /printf mm send
(%) [ tmpSDIFnt getfntname ] /printf msdi send
(%) [ tmpTIFnt getfntname ] /printf mti send
end % fwinitems
{ totop map } fwin send
end % ExpressDict
} def
%--------------------
%--- button notifies
%--------------------
/getfontselection % - => font boolean converts string returned by SDI into a font object
{
fwinitems begin
fntSDI /ItemValue get dup null ne
{
Fonts exch get 0 get cvn findfont
PtSizes ptsz /ItemValue get 1 get get 0 get cvi scalefont
true
}
{
pop false
} ifelse
end % fwinitems
} def
% The following four notify procs update there respective msg items
% to reflect font changes.
/sti_notify
{
getfontselection
{
dup ExpressDict /tmpTIFnt 3 -1 roll put
getfntname
(%) [ 3 -1 roll ] /printf fwinitems /mti get send
ExpressDict /fntChanges? true put
} if
} def
/ssdi_notify
{
getfontselection
{
dup ExpressDict /tmpSDIFnt 3 -1 roll put
getfntname
(%) [ 3 -1 roll ] /printf fwinitems /msdi get send
ExpressDict /fntChanges? true put
} if
} def
/sm_notify
{
getfontselection
{
dup ExpressDict /tmpMenFnt 3 -1 roll put
getfntname
(%) [ 3 -1 roll ] /printf fwinitems /mm get send
ExpressDict /fntChanges? true put
} if
} def
/sb_notify
{
getfontselection
{
dup ExpressDict /tmpButFnt 3 -1 roll put
getfntname
(%) [ 3 -1 roll ] /printf fwinitems /mb get send
ExpressDict /fntChanges? true put
} if
} def
/savfnt_notify % Don't do anything
{
ExpressDict begin
/unmap fwin send
fwitemsEM null ne { fwitemsEM killprocess /fwitemsEM null store } if
{ totop map } cp send
end % ExpressDict
} def
/cancel_notify % Restore previous font settings
{
ExpressDict begin
/fntChanges? false store
/tmpButFnt ButFnt store
/tmpMenFnt MenFnt store
/tmpSDIFnt SDIFnt store
/tmpTIFnt TIFnt store
/unmap fwin send
fwitemsEM null ne { fwitemsEM killprocess /fwitemsEM null store } if
{ totop map } cp send
end % ExpressDict
} def
% The following update routines will rescale all of the various configure
% windows to account for changes made to the fonts to be utilized in
% control items.
/update_cp
{
cpitems begin
[ abut sbut cbut ]
{
{ % Hokey, but needed to re-center the label
/ItemLabelFont ButFnt def /LabelX 0 def /LabelY 0 def
0 0 0 0 reshape
} exch send
} forall
/cpButtonSize abut /ItemWidth get store
[ fbut hkbut ]
{
{ % Hokey, but needed to re-center the label
/ItemLabelFont ButFnt def /LabelX 0 def /LabelY 0 def
0 0 cpButtonSize 0 reshape
} exch send
} forall
end % cpitems
{
cpButtonX 2.5 mul cpButtonSize add
cpButtonX 3.5 mul cpitems /cbut get /ItemHeight get 4 mul
BorderTop BorderBottom add add add
calc_wincoords reshape
} cp send
poscpitems
} def
/update_configwin
{
items begin
/cfTISize gsave TIFnt setfont (Reference in Menu as: ) stringbbox grestore
pop 3 1 roll pop pop 2 mul store
/cfSDISize gsave SDIFnt setfont ( Installed Applications ) stringbbox grestore
pop 3 1 roll pop pop store
{ % Hokey, but needed to re-center the label
/ItemLabelFont ButFnt def /LabelX 0 def /LabelY 0 def
0 0 0 0 reshape
} cancel_but send
/cfButtonSize cancel_but /ItemWidth get store
[ add_but del_but done_but ]
{
{ % Hokey, but needed to re-center the label
/ItemLabelFont ButFnt def /LabelX 0 def /LabelY 0 def
0 0 cfButtonSize 0 reshape
} exch send
} forall
{ /ItemFont SDIFnt def /ItemLabelFont SDIFnt def } appsSDI send
[ apptoadd appref ]
{
{
/ItemFont TIFnt def /ItemLabelFont TIFnt def
/LabelX 0 def /LabelY 0 def
/ObjectX 0 def /ObjectY 0 def
0 0 cfTISize 0 reshape
TI_resetarray
} exch send
} forall
{
/ItemFont TIFnt def /ItemLabelFont TIFnt def
/LabelX 0 def /LabelY 0 def
/ObjectX 0 def /ObjectY 0 def
0 0 0 0 reshape
} filetype send
end % items
{
30 cfSDISize cfButtonSize cfTISize add add add
30 cfSDISize BorderTop BorderBottom add add add
calc_wincoords reshape
} configwin send
poscfitems
} def
/update_hkwin
{
hkitems begin
/msg (The current Hot Key is ) ( ) /Right {} hkcan 0 0 /new MessageItem send
ColorDisplay? { dup /ItemFillColor ColorDict /LightBlue get put } if
dup /ItemFont TIFnt put
dup /ItemLabelFont TIFnt put
0 0 /move 3 index send store
{ /ItemLabelFont ButFnt def /LabelX 0 def /LabelY 0 def 0 0 0 0 reshape }
dup save_but send
can_but send
{ % Hokey, but needed to re-center the label
/ItemLabelFont ButFnt def /LabelX 0 def /LabelY 0 def
0 0 0 0 reshape
} Right send
/hkButtonSize Right /ItemWidth get store
{ /ItemLabelFont ButFnt def /LabelX 0 def /LabelY 0 def 0 0 hkButtonSize dup reshape }
0 index Left send
Right send
fkeys
{
{ % Hokey, but needed to re-center the label
/ItemLabelFont ButFnt def /LabelX 0 def /LabelY 0 def
0 0 hkButtonSize dup reshape
}
exch cvn cvx exec send
} forall
end % hkitems
{
hkButtonSize dup 15 mul
exch 6 mul BorderTop BorderBottom add add
calc_wincoords reshape
} hkwin send
poshkitems
} def
%-----------------------
%--- end button notifies
%-----------------------
/fwinitems
12 dict dup begin
/fntSDI fwcan {} /new ScrollDataItem send def
{
/AllowMultipleSelect? false def
/ShowItemSeperators false def
/HScrollbar? false def
ColorDisplay?
{
/BufferColor ColorDict /Aquamarine get def
/ItemTextColor 0 0 1 rgbcolor def
} if
/ItemLabel (FONTS) def
/ItemLabelFont /Helvetica-Bold findfont 13 scalefont def
/ItemLabelColor 0 0 0 rgbcolor def
/ItemHighLightColor 0 0 0 rgbcolor def
Fonts setdata
10 dup 200 dup reshape
} fntSDI send
/ptsz ( Point Size ) PtSizes
/Bottom {} fwcan 0 0 /new ArrayItem send
225 100 /move 3 index send def
/savebut (SAVE) /savfnt_notify fwcan 80 0 /new ButtonItem send
dup /ItemRadius 0 put
225 50 /move 3 index send def
/canbut (CANCEL) /cancel_notify fwcan 80 0 /new ButtonItem send
dup /ItemRadius 0 put
225 10 /move 3 index send def
/sb (Set Button Font) /sb_notify fwcan 165 0 /new ButtonItem send
315 160 /move 3 index send def
/sm (Set Menu Font) /sm_notify fwcan 165 0 /new ButtonItem send
315 110 /move 3 index send def
/ssdi (Set ScrollDataItem Font) /ssdi_notify fwcan 165 0 /new ButtonItem send
315 60 /move 3 index send def
/sti (Set TextItem Font) /sti_notify fwcan 165 0 /new ButtonItem send
315 10 /move 3 index send def
/mb (Button Font is ) ButFnt getfntname /Right {} fwcan 300 0 /new MessageItem send
490 165 /move 3 index send def
/mm (Menu Font is ) MenFnt getfntname /Right {} fwcan 300 0 /new MessageItem send
490 115 /move 3 index send def
/msdi (ScrollDataItem Font is ) SDIFnt getfntname /Right {} fwcan 300 0 /new MessageItem send
490 65 /move 3 index send def
/mti (TextItem Font is ) TIFnt getfntname /Right {} fwcan 300 0 /new MessageItem send
490 15 /move 3 index send def
end def
fwinitems
{
0 index /ItemFrame 2 put
ColorDisplay?
{
/ItemFillColor ColorDict /LightBlue get put
}
{
pop
} ifelse
} forall
%%% End Font Adjuster
%%%%%%%%%%%%%%%%%%%%%
%% Set Hot Keys Stuff
%%%%%%%%%%%%%%%%%%%%%
/HKColor ColorDisplay? { 0 1 1 rgbcolor } { 0.7 0.7 0.7 rgbcolor } ifelse def
/HKColorerase 1 1 1 rgbcolor def
/CurntHK HotKey 20 string cvs (Function) search pop pop pop cvn def
/hkButtonSize 0 def
/ButtonX 0 def
/ButtonY 0 def
/fkeys % The possible HotKey choices
[
(L1) (L2) (L3) (L4) (L5) (L6) (L7) (L8) (L9) (L10)
(F1) (F2) (F3) (F4) (F5) (F6) (F7) (F8) (F9)
(R1) (R2) (R3) (R4) (R5) (R6) (R7) (R8) (R9) (R10)
(R11) (R12) (R13) (R14) (R15)
] def
/hkitemsEM null def
/hkwin framebuffer /new SunViewWindow send def
{
200 300 600 320 reshape
FrameInterests /FrameMenuEvent undef
FrameInterests /ClientMenuEvent undef
/PaintClient
{
ColorDisplay? { ColorDict /LightBlue get fillcanvas } if
ExpressDict /hkitems get paintitems
} def
/FrameFont /Helvetica-BoldOblique findfont 14 scalefont def
/FrameLabel (Set the EXPRESS Hot Key for ) (USER) getenv append def
/stretchcorner {} def
/flipiconic {} def
} hkwin send
/hkcan hkwin /ClientCanvas get def
/confighk % Display the current HotKey and map the HotKey Customizer window
{
pause
ExpressDict begin
/hkitemsEM hkitems forkitems store
CurntHK 10 string cvs /printstring hkitems /msg get send
{ /ItemFillColor HKColor def paint } hkitems CurntHK get send
{ totop map } hkwin send
end % ExpressDict
} def
%-------------
%--- Item Notifies
%-----------------
/hks_notify
{
ExpressDict begin
{ /ItemFillColor HKColorerase def paint } hkitems CurntHK get send
/CurntHK ItemLabel cvn store
{ /ItemFillColor HKColor def } hkitems CurntHK get send
ItemLabel /printstring hkitems /msg get send
end % ExpressDict
} def
/save_notify % Don't do anything
{
ExpressDict begin
/hkChanges? true store
/unmap hkwin send
hkitemsEM null ne { hkitemsEM killprocess /hkitemsEM null store } if
{ totop map } cp send
end % ExpressDict
} def
/hkcan_notify % Reset to previous HotKey
{
ExpressDict begin
/hkChanges? false store
/unmap hkwin send
{ /ItemFillColor HKColorerase def paint } hkitems CurntHK get send
/CurntHK HotKey 20 string cvs (Function) search pop pop pop cvn store
{ /ItemFillColor HKColor def } hkitems CurntHK get send
hkitemsEM null ne { hkitemsEM killprocess /hkitemsEM null store } if
{ totop map } cp send
end % ExpressDict
} def
pause pause % Just Being Nice
/hkitems
40 dict dup begin
/Right (Right) /hks_notify hkcan 0 hkButtonSize /new ButtonItem send dup
begin
/ItemLabelFont ButFnt def
/ItemFrame 1 def
/ItemRadius 0 def
/ClientUp
{
ItemValue { NotifyUser } if
false SetButtonValue /ItemValue null store
paint StopItem
} def
end
0 0 /move 3 index send def
/hkButtonSize Right /ItemWidth get store
{ /LabelX 0 def /LabelY 0 def 0 0 hkButtonSize dup reshape } Right send
/Left (Left) /hks_notify hkcan hkButtonSize dup /new ButtonItem send dup
begin
/ItemLabelFont ButFnt def
/ItemFrame 1 def
/ItemRadius 0 def
/ClientUp
{
ItemValue { NotifyUser } if
false SetButtonValue /ItemValue null store
paint StopItem
} def
end
0 0 /move 3 index send def
0 1 fkeys length 1 sub
{
fkeys exch get dup cvn exch /hks_notify hkcan hkButtonSize dup
/new ButtonItem send dup
begin
/ItemLabelFont ButFnt def
/ItemFrame 1 def
/ItemRadius 0 def
/ClientUp
{
ItemValue { NotifyUser } if
false SetButtonValue /ItemValue null store
paint StopItem
} def
end
0 0 /move 3 index send def
} for
/msg (The current Hot Key is ) ( ) /Right {} hkcan 0 0 /new MessageItem send
ColorDisplay? { dup /ItemFillColor ColorDict /LightBlue get put } if
dup /ItemFont TIFnt put
dup /ItemLabelFont TIFnt put
0 0 /move 3 index send def
/save_but ( Save Change ) /save_notify hkcan 100 0 /new ButtonItem send
dup begin
/ItemFrame 1 def
/ItemLabelFont ButFnt def
/ItemFillColor 1 0 0 rgbcolor def
end
0 0 /move 3 index send def
/can_but ( Cancel ) /hkcan_notify hkcan 100 0 /new ButtonItem send
dup begin
/ItemFrame 1 def
/ItemLabelFont ButFnt def
/ItemFillColor 1 1 0 rgbcolor def
end
0 0 /move 3 index send def
end def
pause
/poshkitems { % Reposition the buttons
/ButtonX 10 store /ButtonY hkButtonSize 4.5 mul store
0 2 9
{
ButtonX ButtonY /move hkitems fkeys 5 index get cvn get send
ButtonX hkButtonSize 1 sub add ButtonY /move
hkitems fkeys 6 -1 roll 1 add get cvn get send
/ButtonY ButtonY hkButtonSize 1 sub sub store
} for
pause
/ButtonX 20 hkButtonSize 2 mul add store /ButtonY hkButtonSize 4.5 mul store
10 1 18
{
ButtonX ButtonY /move hkitems fkeys 6 -1 roll get cvn get send
/ButtonX ButtonX hkButtonSize 1 sub add store
} for
pause
/ButtonX 25 hkButtonSize 11 mul add store /ButtonY hkButtonSize 4.5 mul store
19 3 33
{
ButtonX ButtonY /move hkitems fkeys 5 index get cvn get send
ButtonX hkButtonSize 1 sub add ButtonY /move
hkitems fkeys 5 index 1 add get cvn get send
ButtonX hkButtonSize 1 sub 2 mul add ButtonY /move
hkitems fkeys 6 -1 roll 2 add get cvn get send
/ButtonY ButtonY hkButtonSize 1 sub sub store
} for
hkitems begin
hkButtonSize dup 3 mul exch 0.6 mul /move Left send
hkButtonSize dup 10 mul exch 0.6 mul /move Right send
{ hkButtonSize dup 3.5 mul exch 3.5 mul move } msg send
{ hkButtonSize dup 2 mul ItemWidth 2 div add exch 2 mul move } save_but send
{ hkButtonSize dup 10 mul ItemWidth 2 div sub exch 2 mul move } can_but send
end % hkitems
} def
{
hkButtonSize dup 15 mul
exch 6 mul BorderTop BorderBottom add add
calc_wincoords reshape
} hkwin send
poshkitems
/setHotKey % - > - Activate the desired HotKey
{
HotKey
{
ExpressDict begin
ExpressMenu /MenuCanvas get null ne
cp /FrameCanvas get /Mapped get
configwin /FrameCanvas get /Mapped get
fwin /FrameCanvas get /Mapped get
hkwin /FrameCanvas get /Mapped get
aboutcan /Mapped get or or or or or not
{ /showat ExpressMenu send } if
end % ExpressDict
} bindkey
} def
%% End Hot Keys
%%%%%%%%%%%%%%%%%%%%
%% Configure Express
%%%%%%%%%%%%%%%%%%%%
/cfButtonSize 0 def
/cfTISize gsave TIFnt setfont (Reference in Menu as: ) stringbbox grestore
pop 3 1 roll pop pop 2.5 mul def
/cfSDISize gsave SDIFnt setfont ( Installed Applications ) stringbbox grestore
pop 3 1 roll pop pop def
/FileType ( forkunix) def
/SaveSDIData [] def
/SaveMenuItems null def
/SaveMenuKeys null def
/SaveMenuActions null def
/itemsEM null def
/configwin framebuffer /new SunViewWindow send def
{
250 400 500 220 reshape
FrameInterests /FrameMenuEvent undef
FrameInterests /ClientMenuEvent undef
/PaintClient
{
ExpressDict begin
ColorDisplay? { ColorDict /LightBlue get fillcanvas } if
items paintitems
0 setgray
TIFnt setfont
10 cfSDISize cfButtonSize 2 mul add add
items /cancel_but get /ItemHeight get 3.2 mul moveto
(Application type is) show
end % ExpressDict
} def
/FrameFont /Helvetica-BoldOblique findfont 14 scalefont def
/FrameLabel (EXPRESS Application Customizer for ) (USER) getenv append def
/flipiconic {} def
/stretchcorner {} def
} configwin send
/cwcan configwin /ClientCanvas get def
/configapps % Clear the TextItems and map the Application Customizer window
{
ExpressDict begin
/itemsEM items forkitems store
{
TI_resetarray items /apptoadd get send
TI_resetarray items /appref get send
totop
map
} configwin send
end % ExpressDict
} def
%-----------------
%--- Item Notifies
%-----------------
/fil_notify
{
ExpressDict /FileType
ItemValue 0 eq
{ ( forkunix) } { ( fork_sunview1_tty) } ifelse
put
} def
/TI_resetarray
{
{
gsave
ItemCanvas setcanvas
restorefocus
/LINEKILL ItemText send
/ItemPaintedValue () def
/ItemValue () def
removefocus
paint
grestore
}
} def
/add_notify
{
ExpressDict begin
/appsChanges? true store
items begin
apptoadd /ItemValue get () append
appref /ItemValue get
dup () eq
{
pop
dup
(\() 1 index append (\)) append FileType append cvx
}
{
() append
dup
(\() 4 -1 roll append (\)) append FileType append cvx
} ifelse
0 3 1 roll
/insertitem ExpressMenu send
0 /additem appsSDI send
TI_resetarray apptoadd send
TI_resetarray appref send
end % items
end % ExpressDict
} def
/del_notify
{
ExpressDict begin
/appsChanges? true store
items begin
appsSDI /ItemValue get
dup null ne
{
0 index /deleteitem appsSDI send
/deleteitem ExpressMenu send
}
{
pop
} ifelse
end % items
end % ExpressDict
} def
/can_notify % Restore previous SDI values
{
ExpressDict begin
/appsChanges? false store
/unmap configwin send
SaveSDIData /setdata items /appsSDI get send
{
/MenuItems SaveMenuItems def
/MenuKeys SaveMenuKeys def
/MenuActions SaveMenuActions def
/MenuWidth null def
} ExpressMenu send
itemsEM null ne { itemsEM killprocess /itemsEM null store } if
{ totop map } cp send
end % ExpressDict
} def
/db_notify % Don't do anything
{
ExpressDict begin
/unmap configwin send
itemsEM null ne { itemsEM killprocess } if
{ totop map } cp send
end % ExpressDict
} def
/items
8 dict dup begin
/cancel_but ( Cancel ) ExpressDict /can_notify get cwcan 0 0 /new ButtonItem send
dup begin
/ItemFrame 2 def
ColorDisplay? { /ItemFillColor 1 1 0 rgbcolor def } if
/ItemLabelFont ExpressDict /ButFnt get def
end 0 0 /move 3 index send def
/cfButtonSize cancel_but /ItemWidth get store
/add_but ( Add ) ExpressDict /add_notify get cwcan cfButtonSize 0 /new ButtonItem send
dup begin
/ItemFrame 2 def
/ItemLabelFont ExpressDict /ButFnt get def
end 0 0 /move 3 index send def
/del_but ( Delete ) ExpressDict /del_notify get cwcan cfButtonSize 0 /new ButtonItem send
dup begin
/ItemFrame 2 def
/ItemLabelFont ExpressDict /ButFnt get def
end 0 0 /move 3 index send def
/done_but ( Done ) ExpressDict /db_notify get cwcan cfButtonSize 0 /new ButtonItem send
dup begin
/ItemFrame 2 def
ColorDisplay? { /ItemFillColor 1 0 0 rgbcolor def } if
/ItemLabelFont ExpressDict /ButFnt get def
end 0 0 /move 3 index send def
/appsSDI cwcan {} /new ScrollDataItem send def
{
/AllowMultipleSelect? false def
/ShowItemSeperators false def
/HScrollbar? false def
ColorDisplay?
{
/BufferColor ColorDict /Aquamarine get def
/ItemTextColor 0 0 1 rgbcolor def
} if
/ItemLabel ( Installed Applications ) def
/ItemLabelFont ExpressDict /SDIFnt get def
/ItemFont ExpressDict /SDIFnt get def
/ItemLabelColor 0 0 0 rgbcolor def
/ItemHighLightColor 0 0 0 rgbcolor def
} appsSDI send
/apptoadd (Application to add: ) () /Right {} cwcan cfTISize 0 /new TextItem send
dup /ItemFont ExpressDict /TIFnt get put
dup /ItemLabelFont ExpressDict /TIFnt get put
0 0 /move 3 index send def
/appref (Reference in Menu as: ) () /Right {} cwcan cfTISize 0 /new TextItem send
dup /ItemFont ExpressDict /TIFnt get put
dup /ItemLabelFont ExpressDict /TIFnt get put
0 0 /move 3 index send def
/filetype /cycle [ (NeWS) (SunView) ] /Right /fil_notify cwcan 0 0 /new CycleItem send
dup begin
/LabelY 0 def
/ItemFont ExpressDict /TIFnt get def
ColorDisplay? { /ItemFillColor ColorDict /LightBlue get def } if
end
0 0 /move 3 index send def
end def
pause
/poscfitems
{
ExpressDict begin
items begin
{
10 dup cfSDISize dup reshape
450 SizeAllData reshapebuffer
ShowObjectData
} appsSDI send
10 cfSDISize cfButtonSize 2 div add add
{ 0 index 10 move ItemHeight 1.5 mul 5 add } done_but send
{ 1 index exch move ItemHeight 3 mul } del_but send
1 index exch /move add_but send
cfButtonSize 1.5 mul add 10 /move cancel_but send
ColorDisplay?
{
[ apptoadd appref ]
{
begin
/ItemFillColor ColorDict /LightBlue get def
ItemText begin /TextFill ItemFillColor store end
end
} forall
} if
10 cfSDISize cfButtonSize 2 div add add
dup cancel_but /ItemHeight get 4 mul /move appref send
cancel_but /ItemHeight get 4 mul
appref /ItemHeight get 10 add add /move apptoadd send
10 cfSDISize cfButtonSize 2.1 mul add add
gsave TIFnt setfont (Application type is) stringbbox grestore pop 3 1 roll pop pop add
cancel_but /ItemHeight get 3 mul /move filetype send
end % items
end % ExpressDict
} def
{
30 cfSDISize cfButtonSize cfTISize add add add
30 cfSDISize BorderTop BorderBottom add add add
calc_wincoords reshape
} configwin send
poscfitems
%% End Configure Apps
%%%%%%%%%%%%%%%%%%%%%
%% Express Menu Stuff
%%%%%%%%%%%%%%%%%%%%%
/configure % Save current SDI and ExpressMenu settings and
{ % display the EXPRESS Configuration Control Panel
pause
ExpressDict begin
/SaveSDIData /getdata items /appsSDI get send store
/SaveMenuItems ExpressMenu /MenuItems get store
/SaveMenuKeys ExpressMenu /MenuKeys get store
/SaveMenuActions ExpressMenu /MenuActions get store
/cpitemsEM cpitems forkitems store
{ totop map } cp send
end % ExpressDict
} def
/ExpressMenu % Create default EXPRESS menu
[
(Terminal) { (psterm -t sun -f) forkunix }
(~~~~~~~~~~~~~) {}
(Cancel) {}
(~~~~~~~~~~~~~) {}
(About Express) ExpressDict /about_express get
(Configure Express) ExpressDict /configure get
(Disable Express) {
ExpressDict begin
itemsEM null ne { itemsEM killprocess } if
hkitemsEM null ne { hkitemsEM killprocess } if
end % ExpressDict
ExpressDict { ExpressDict exch undef } forall
systemdict /ExpressDict undef
HotKey unbindkey
keyboardtype 3 eq % deactivate Left key
{
systemdict /keyboard_positions get
/LeftMeta
[ 120 systemdict /UI_private get
/keyStation get exec /shift_key
] put
} if
}
] /new DefaultMenu send def
pause % Just Being Nice
/adjustmenu % - > - Customize the look of ExpressMenu
{
{
ColorDisplay?
{
/MenuBorderColor ColorDict /MediumBlue get def
/MenuFillColor ColorDict /LightBlue get def
/MenuTextColor ColorDict /Blue get def
} if
/MenuFont ExpressDict /MenFnt get def
/Frame 3 def
/reshape
{
MenuGSave
framebuffer setcanvas
10 0 Border ArrayWidth ArrayHeight rrectpath
MenuCanvas reshapecanvas
/rtarr /rtarr_m MenuCanvas setstandardcursor
grestore
} def
/PaintBox % [color] value => -
{
dup null ne
{
MenuItems exch get begin X Y W H end
rectpath
dup type /colortype ne { MenuTextColor } if
setcolor stroke
}
{
pop
} ifelse
} def
/PaintMenuValue
{
MenuGSave
MenuFillColor PaintedValue PaintBox
MenuTextColor MenuValue PaintBox
/PaintedValue MenuValue store
grestore
} def
/PaintMenuFrame
{
MenuFillColor fillcanvas
Frame 0 ne
{
MenuBorderColor setcolor
Frame 10 0 Border ArrayWidth ArrayHeight rrectframe eofill
} if
} def
}
ExpressMenu send
} def
%% End Menu Stuff
pause
adjustmenu
createfile? % create the defaults file (.expressapps) if it doesn't exist
{
writefile [] []
}
{ % otherwise, load in the stored applications
pause
0 1 UserMenuKeys length 1 sub
{
dup
UserMenuKeys exch get
dup { ObjectData length additem } items /appsSDI get send
UserMenuActions 2 index get cvx
/insertitem ExpressMenu send
} for
} ifelse
setHotKey % activate the HotKey
end % ExpressDict
me.ras.uu 624748972 117 100 100666 201227 `
begin 666 me.ras
M6:9JE0 <\ $Y " "-U ! 0 P#_ #]_O_\ /W^__P _
M?[__ #]_O_\ /W^__P _?[__ #]_O_\ /W^__P _?[__ #]_O_\ /W^__P _
M?[__ #]_O_\ /W^__P _?[__ #]_O_\ /W^__P _?[__ #]_O_\ /W^__P _
M?[__ #]_O_\ /W^__P _?[__ #]_O_\ /W^__P _?[__ #]_O_\ /W^__P _
M?[__ #]_O_\ /W^__P _?[__ #]_O_\ /W^__P _?[__ #]_O_\ /W^__P _
M?[__ #]_O_\ /W^__P _?[__ #]_O_\ /W^__P _?[_P#Q<?)R\W1DU46V)I
M<'>&C92;HJFPM\;-U-OBZ?< _P ?
M'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?/S\_/S\_/S\_/S\_/S\_/S\_/S\_
M/S\_/U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]_?W]_?W]_?W]_?W]_?W]_
M?W]_?W]_?W]_GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?G[^_O[^_O[^_O[^_
MO[^_O[^_O[^_O[^_O[_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?________
M________________________\ \7'R<O-T9-5%MB:7!WAHV4FZ*IL+?&S=3;
MXNGW /\ #\_/S\_?W]_?W^_O[^_O_______ _/S\_/W]_?W]_
MO[^_O[_______P /S\_/S]_?W]_?[^_O[^_______\ #\_/S\_
M?W]_?W^_O[^_O_______ _/S\_/W]_?W]_O[^_O[_______P
M/S\_/S]_?W]_?[^_O[^_______\ #\_/S\_?W]_?W^_O[^_O_______
M _/S\_/W]_?W]_O[^_O[_______P /S\_/S]_?W]_?[^_O[^_
M______ /%Q\G+S=&351;8FEP=X:-E)NBJ;"WQLW4V^+I]P
M
M
M
M
M
M
M
M
M
M
M #_____________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M_____________________P /__________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M________________________________________ __\ #_
M #_ #_ #_ #_
M _P _P
M /\ /\ #_ #_ #_
M /\ #_ _P
M _P /\ /\ /\ /\ /\ #_
M _P _P /\ _P _P
M_P #_ #_ _P /\
M _P _P _P
M #_ /\ /\ #_
M /\ /\ #_ _P _P _P #___\
M #__P _P _P
M _P /\ /\ /\ _P
M_P /\ #_ _P
M /\ #_ _P #_ _P
M #_ #_ #_ #_
M /\ /\ /\ /\
M #_ _P _P /\ /\
M /\ #_ #_ #_
M #_ _P _P _P /\
M /\ #_ #_ #_
M #_ _P #__P /__ /\ #_ _P /\
M /\ /\ /\ _P _P _P
M #_ #_ /\ /\ /\
M #_ _P _P _P /\ #_
M /\ #_ _P /\ /\ /\
M #_ #_ _P _P _P _P
M _P #_ _P _P _P
M /\
M /\ _P _P _P /\ _P #_ #_
M #_ _P _P _P #_ #_ /\
M #_ /__ __\ _P #_
M #_ #_ /\ _P _P
M _P /\ /\ #_
M _P /\ /\ #_ #_ #_
M /\ /\
M _P /\ /\ /\ /\ /\
M #_ #_
M _P /\ /\ _P /\ /\ #_ #_ #_ _P
M _P _P _P _P
M /\ /\ /\ /\
M /\ /\ /\ /\ /\ #_ #_ #_ __\ #_
M_P /\
M _P /\ #_ /\
M /\ #_
M /\ _P /\ #_ #_
M #_ #_ #_ _P
M /\ /\ /\ /\ /\
M /\
M /\ /\ #_ /\ /\
M #_ #_ #_ _P _P
M _P _P /\ _P
M #__P /__
M /\ /\ /\ /\ _P _P
M /\ #_ _P
M /\ /\ /\ #_ #_ #_
M /\ /\ /\ /\ /\ /\
M #_ /\ /\ /\ _P _P
M_P _P _P _P #_ _P /\ /\
M #_ #_ _P _P /\ _P
M _P _P #_ /\ /\
M #_ #_ #_ #_ #_ #_
M _P /\ #_ #_ #_ /__ __\ /\ #_ #_ #_ #_
M #_ #_ _P _P _P _P /\ #_
M #_ /\ #_ #_ #_ #_
M #_ _P _P _P _P /\ /\
M _P #_ #_ _P
M_P _P _P _P _P
M /\ /\ /\
M #_ #_ #_
M #_ #_ #_ _P #_
M /\ /\ /\
M #_ _P #_ #_ __\ #__P
M /\ /\ /\
M /\
M /\ _P _P #_
M /\ #_ _P
M #_ #_ #_ /\ /\ #_ #_
M _P _P _P
M #_ /\ /\
M_P _P /\ /\ /\ #_ _P /\
M /\ /\ #_ #_ _P
M _P #_ #_ _P _P
M /\ /___P /__ /\ #_
M_P _P _P /\ _P /\
M /\ #_ _P
M_P _P /\ #_ /\ /\ #_
M /\ /\ _P
M /\ /\ _P _P _P /\ _P #_
M #_ #_ #_ #_ /\ /\ /\ /\ #_
M /\ #_ #_ _P _P /\
M #_ #_ _P /\ /\ /\
M /\ /\ #_ #_ _P #_ _P
M #_ #_ _P /__ __\ /\ /\
M /\ /\ #_ #_ #_
M _P _P /\ #_ #_
M /\ #_ #_ #_
M_P _P _P _P
M #_ #_ #_ #_
M_P /\
M #_ /\
M /\
M _P _P #_ #_
M /\ _P _P /\ /\ __\ #__P
M _P _P /\ /\
M /\ /\ #_ _P #_ _P
M /\ _P /\ /\
M /\ #_ _P #_ #_ #_ #_
M #_ #_ /\ /\ _P /\ /\
M /\ #_ /\ #_ _P
M #_ /\ _P _P _P
M #_ _P _P /\ _P
M_P /\ #_ #_ #_ #_ #_ #_ #_
M _P #_ _P
M #__P /__ /\ /\ /\ #_
M _P _P _P
M _P _P _P
M _P _P /\
M /\ _P #_ #_
M #_ _P _P /\
M #_ #_ #_ _P _P _P #_ /\
M #_ #_ /\ /\ /\ /\ _P
M_P _P #_ /\ /\ #_
M #_ /\ _P #_
M_P #_ ____ __\ _P _P _P
M _P /\ #_ #_ #_ _P
M #_ #_ _P _P #_
M /\ #_ #_ #_ /\ #_ _P /\ /\
M #_ _P _P _P _P #_
M #_ #_ /\ #_ #_
M _P /\ _P /\ #_
M _P _P
M_P #_
M #_ #_ #_ #_ _P
M_P /\ /\ _P /\ /\ #_ __\ #___\
M #_ #_ /\ #_
M #_ _P /\ _P
M /\ /\
M #_ #_
M /\ _P _P _P /\
M_P /\
M /\ _P #_ #_
M #_ #_ #_ #_ _P /\ /\ #_ #_
M _P _P #_ /\
M _P #_ #_ _P#_
M_P /__ /\ _P /\ _P /\ #_
M /\ #_
M_P #_ /\ _P _P _P #_ _P
M_P _P /\ #_ _P /\ /\
M /\ /\ #_ _P
M #_ #_ #_ /\ #_
M /\ /\ /\ /\ _P /\ /\
M /\ /\ /\ /\ /\
M #_ #_ _P _P _P
M /\ _P _P /\ _P _P /\
M /\ /\ /__ __\ #_ #_
M #_ /\ /\ #_ _P _P
M /\ _P
M _P /\ /\ /\ /\
M _P _P _P #_ _P /\ _P
M _P #_ /\ /\ _P _P _P
M_P /\ _P _P #_ #_
M_P _P _P _P _P _P
M _P /\ #_ #_ _P
M #_ #_ /\ #_ #_ _P
M /\ #_ #_ __\ #__P
M /\ /\ /\
M #_ #_ #_ _P #_
M /\ /\ _P /\ _P
M_P _P /\ /\
M #_ #_ #_ /\ _P
M #_ _P
M #_ #_ #_
M /\ /\ /\ #_ #_ /\
M #_ _P _P _P
M /\ #_ _P _P /\ /___P
M /__ #_ #_ /\ /\ /\ _P _P
M #_ _P _P /\ #_
M /\ #_
M #_ _P #_ _P _P
M_P _P _P /\ /\ _P /\ /\ _P#_ #_ /\ _P
M_P _P #_ _P #_ #_
M #_ #_ _P _P _P /\ /\
M _P _P /\ _P
M /\ #_ #_ _P _P #_
M _P #_ #_ #_ _P
M /\ /__ __\
M #_ #_ #_ #_ #_ #_
M /\ /\ #_ #_ /\ /\ #_
M #_ /\ #_ /\ /\
M /\ #_ #_ /\ /\
M /\ _P#_ /\ __\ __\ _P _P#_ _P _P /\ /\ /\
M /\ /\ /\ /\ #_ #_ #_
M _P #_ #_ #_
M /\ /\ #_ #_
M /\ /\ /\ _P _P /\ _P
M #_ /\ _P _P __\ #__P#_ _P #_ #_
M #_ /\ _P /\
M /\ /\
M #_ /\ #_ #_ _P /\
M _P _P _P /\ /\
M_P /\ _P#_ /\ __\ _P#_ /__ /\ _P#_ /\ _P#_ #_
M_P _P _P _P
M /\ /\
M /\ /\ _P _P _P #_ _P _P
M_P _P #_ _P _P
M /\ _P /\ _P #__P /__
M /\ /\ #_
M _P _P _P _P #_
M #_ /\
M _P #_ _P
M #_ /\ _P#_ /\ _P#__P#___\ ____ /__ /\ _P#______P#_
M_P#_ /\ _P /\ #_ #_ #_
M /\ #_ #_ _P _P _P #_
M #_ /\ _P _P
M #_ #_ #_
M /\ _P _P #_ _P /\
M #_ #_ /__ ____ _P /\ _P _P
M /\ /\ #_ #_ /\ #_ #_ #_
M _P _P /\ /\ #_
M /\ #_ _P /\ /\ _P /\ /\ _P
M /\ #_ #_ /\ /\ _P#__P#__P#___\ _P#_ /__
M /_______P#_ /\ ____ /__ /\ __\ /\ _P _P /\ /\ /\
M /\ /\ /\ _P /\ #_
M /\ /\ /\ /\
M_P _P /\ /\ /\
M #_ #_ _P #_ _P _P #_
M_P _P _P _P __\ #__P /\
M /\ #_ /\
M _P _P
M #_ #_ _P _P /\ #_
M #_ #_ _P #_ /\ __\ _P#_
M_P#_ /__ /______ /__ /\ _P#__P#_ /__ /__ /\ __\ __\ _P
M #_ _P #_
M #_ _P _P /\ #_
M _P #_ #_ _P _P _P _P
M _P /\ _P #_
M #_ /\ /\ /___P /__
M_P /\ _P _P _P
M _P #_ _P _P /\ /\
M #_
M /\ #_ #_ /\ #_ #_
M /\ __\ __\ _____P#_ /__ /\ _P#_ /__ /___P#__P#______P#_ /__
M /\ __\ __\ _P#__P _P /\ /\ /\ #_
M /\ /\ /\ /\ #_ #_ #_
M /\ #_ #_
M #_ #_ /\ #_ #_ #_
M _P /\ /\ _P _P #_
M /__ __\ /\ /\ #_
M #_ #_ #_ #_ #_ #_ #_
M _P _P /\ #_
M_P _P #_ #_ #_ _P #_
M #_ #_ #_ /\ __\ __\ _P#_ /__ /______ /__ /__ /__
M_P#__P#_ /\ ____ /____\ __\ __\ _P _P _P
M _P /\ _P _P /\
M /\ /\ /\ #_ _P
M /\ /\ /\ _P _P
M /\ /\ /\ /\ #_
M #_ /\ _P __\ #__P#_ /\ #_
M /\ /\ /\ /\
M _P #_ _P _P
M #_ #_ #_ #_ /\ /\ #_
M /\ /\ /\ /\ /__ /____\ _P#__P#_ /______
M /\ ____ /__ /__ /___P#_ /___P#_ /__ /\ __\ __\ _____P#__P#_
M #_ #_ #_
M #_ _P _P
M #_ _P _P _P _P _P _P _P _P
M _P _P _P _P
M /\ _P _P #__P /__
M /\ /\ _P
M_P /\ #_ #_ _P
M _P /\
M /\ _P /\ #_ #_ /__ /__ /\
M_P#__P#_____ /\ /\ __\ ____ /__ /\ _P#_ /__ /______ /\ __\
M__\ __\ _P#__P#__P#_ /\ /\ /\ /\ /\
M /\ /\ /\ /\ /\ #_ #_
M _P #_
M #_ #_ /\ /\ _P _P _P #_
M _P _P /\ #_ #_
M /__ __\ _P #_ _P /\ #_ #_
M #_ #_ _P /\ /\
M #_ /\ #_ _P
M _P #_ _P _P /\ /\
M #_ /\ __\ ____ /______ /\ __\ __\ _____P#_ /__ /__________
M /__ /__ /\ __\ __\ _P#___\ _P#__P#_ /\ _P _P
M _P _P _P _P
M /\ /\ #_ #_ #_ #_ _P
M /\ /\ _P _P
M #_ #_ /\ #_ /\ #_ _P
M #_ __\ #__P#_ /\ #_
M /\ /\ #_ #_
M_P _P /\ /\ /\
M _P #_ #_ #_
M _P /\ /\ __\ ____ /\ _P#_ /____\ __\ __\ _P#_
M_P#_ /__ /\ _P#_ /__ /\ __\ _____P#__P#___\ _____P#_ /__ /\
M_P /\ /\ #_ #_ #_ #_
M #_ _P
M #_ _P _P _P _P _P _P _P
M /\ /\ /\ /\ _P
M _P _P _P /\ #_ #__P /__ /\
M _P _P #_ _P #_ #_
M /\ #_ #_ _P
M_P #_ #_ #_ _P /\ /\
M /\ _P _P __\ __\ __\ __\ ____ /__
M /\ __\ __\ _P#___________\ ____ /__ /\ __\ __\ _P#__P#__P#_
M /\ _P#______P#__P#___\ _P /\ /\
M /\ /\ /\ /\ /\ #_ /\
M /\
M #_ /\ _P _P _P _P _P /\
M /\ /\ #_ #_ /__
M ____ _P /\ #_ /\ #_
M #_ /\ _P _P /\ /\ _P
M /\ /\ /\
M _P _P _P /\ _P#_
M_P#___\ __\ ____ /\ _P#___\ _P#___\ _P#_ /\ ____ /____\ ____
M_P#______P#__P#___\ _P#_ /\ _P#_ /\ __\ _P #_ #_
M _P #_ _P _P
M_P /\ _P #_ #_ _P
M /\ /\ _P _P
M #_ #_ /\ /\ #_ _P /\ _P
M_P #___\ #__P /\
M /\ #_
M #_ _P
M /\ /\ /\ #_ #_ /\ /\
M /\ #_ /\ _P#__P#___\ __\ __\ __\ ______\ _P#__P#__P#_ /\
M__\ __\ __\ __\ _P#___\ _P#__P#_ /\ _________P#__P#__P#__P#_
M____ /\ /\ /\ /\ /\
M #_ #_ #_ #_ /\
M /\ _P _P _P _P _P #_ /\
M /\ _P _P /\
M #_ /\ #__P /__ _P _P
M _P #_ #_ _P /\ /\ /\
M /\ /\ /\ /\ #_ #_
M #_ _P /\ /\
M_P _P #_ /\ __\ _P#_ /\ __\ __\ __\ ____ /__
M /___P#__P#_______\ __\ __\ __\ _P#_ /__ /___P#__P#__P#_ /\
M_P#_ /__ /\ _P#__P#_ /__ /\ _P _P _P
M /\ _P /\ /\ /\ /\ /\
M _P
M _P _P _P #_ #_ #_
M _P #_ _P _P _P _P _P /__
M__\ #_ _P #_ #_ _P
M _P #_ #_
M /\ /\ /\ /\ _P #_
M #_ #_ /\ /\ _P#_ /____\
M__\ __\ _P#_ /__ /\ _P#__P#__P#__P#__P#___\ __\ ________ /__
M_P#__P#_ /____\ _P#_ /__ /__ /___P#_ /\ __\ _P _P
M #_ _P
M _P #_ #_ #_ #_ _P /\
M /\ _P _P #_ #_ /\
M /\ /\ /\ _P /\
M /\ __\ #__P #_ #_ /\
M #_ /\ #_
M /\ #_ _P
M_P /\ /\ /\ /\ /\
M /\ __\ ____ /\ __\ __\ _P#_____ /_______P#__P#__P#__P#___\
M__\ __\ _P#_ /__ /\ ____ /__ /\ ____ /__ /\ __\ _P#_ /____\
M_P#___\ _P#_ #_ _P /\ #_ _P _P /\
M /\ #_ #_ /\ /\ /\ /\
M #_ /\
M /\ _P _P #_ #_
M #_ #_ _P _P _P #__P /__ /\ /\
M _P /\ /\ /\ /\ /\ /\ /\
M _P /\ /\ /\ /\
M #_ #_ /\ _P #_ #_
M _P #_ /\ __\ _P#_ /____\ __\ _____P#_ /\ _P#__P#_
M_P#_ /___P#___\ _P#___\ ____ /__ /__ /__ /____\ _P#_ /__ /\
M__\ _P#__P#_ /\ _P#__P#_ #_ #_ /\ /\ #_
M /\ /\
M _P _P /\ /\ _P
M _P _P #_ #_ #_
M /\ /\ /\ _P /__ __\
M _P _P _P _P _P #_
M #_ #_ /\ #_
M_P _P /\ /\ #_
M /\ #_ /\ _P#_ /\ _P#_ /\ __\ __\
M_P#_ /\ ____ /__ /__ /___P#_ /\ _P#___\ _P#_ /__ /__ /___P#_
M /\ ______\ __\ __\ _P#__P#_ /\ _P#__P#_ /___P #_ /\ /\
M _P /\ /\ _P
M /\ #_ /\ #_ #_ #_
M #_ #_ #_ #_ /\ /\ /\
M #_ /\ /\ #_
M_P _P __\ #__P #_
M _P /\ /\ /\ /\ /\
M #_ _P
M _P _P _P #_ #_ #_ /\ _P#_ /\
M________ /\ __\ __\ ________ /__ /__ /\ _P#_ /____\ ____ /\
M____ /__ /__ /\ __\ ____ /\ __\ __\ _P#__P#_ /__ /\ _P#_ /__
M /\ ____ #_ /\ _P#_ /\ /\ #_ #_ #_ _P
M _P /\ /\ /\
M /\ #_ /\ /\ _P
M _P _P #_ /\ /\ /\ _P /\
M #_ #__P /__ /\ /\ /\
M /\ #_ _P _P
M_P _P _P /\ #_ #_
M #_ #_ /\ #_ #_
M /\ /\ _P#_ /\ _P#_ /____\ __\ _P#__P#_ /\ __\ __\ ____
M /__ /\ _P#_ /___P#_ /__ /\ __\ _P#_____ /\ __\ __\ _P#_ #_
M /\ _P#_ /\ _P#_ /\ _P#_ #_ _P#_ /\
M #_ #_ #_ /\ #_ #_
M /\ #_ _P
M_P #_ #_ /\
M /\ _P /\ #_ _P ____ __\
M_P _P _P _P _P /\
M #_ #_ #_ #_ _P /\
M #_ /\ /\ _P
M #_ _P /\ /\ _P#_ /\ _P#__P#_ /\ __\ _P#__P#_
M /__ /\ __\ ____ /__ /__ /\ ____ /\ _P#_ /\ ____ /___P#_ /\
M__\ _P#__P#_ /__ /\ _P#_ /\ _P#_ /\ __\ _P#_ #_ /\ _P#_ /\
M_P _P #_ #_ _P /\ /\
M /\ /\ /\ /\ /\ #_ #_ #_
M #_ #_ #_ /\ /\ /\ /\
M #_ #_ /\
M __\ #__P #_
M #_ #_ _P /\ /\ _P _P /\
M _P #_
M #_ #_ _P#_ /\ _P#__P#_ /\ _P#_
M /__ /\ _P#__P#_ /__ /\ _P#__P#_ /\ _P#_ /\ _P#_ /__ /__ /\
M____ /\ _P#_ /\ __\ _P#__P#_ /__ /\ _P#_ /__ /\ _P#_ /\ _P#_
M /__ /\ #_ /__ /\ _P#_ _P /\ #_
M_P #_ /\ _P _P #_
M /\ _P _P
M _P _P /\ /\ /\ /\ _P
M #_ _P #_ _P#__P /__ /\ _P /\ /\
M #_ /\
M /\ /\ _P #_ #_ #_
M #_ /\ _P /\ _P _P _P
M_P#_ #_ _P#__P#_ /\ __\ _P#_ /__ /\ __\ _P#_ /\ __\ _P#_
M /\ _P#_ /\ _P#__P#_ /\ _P#_ /____\ __\ _P#_ /__ /\ _P#_ /\
M /\ _P#_ /\ _P#_ /__ /\ _P /\ _P#_ _P
M _P #_ /\ _P #_
M #_ #_ _P _P
M #_ #_ #_
M #_ /\ /\ /__ __\
M _P _P _P #_ /\ #_
M /\ #_ #_ #_ #_ _P
M /\ /\ /\ /\ #_ #_
M #_ /\ _P#_ #_ /\ _P#_ /__ /\ _P#_ #_ /\ __\
M_P#_ /__ /\ _P#_ /\ _P#_ /__ /\ _P#_ /\ _P#__P#_ /\ __\ _P#_
M /__ /\ _P#__P#_ /\ _P#_ #_ /\ _P#_ /\ _P _P#_ /\ _P#__P#_
M /\ #_ /\ /\ #_ /\
M /\ /\ /\ /\ /\ /\ /\ /\ /\
M /\ #_ /\ /\ /\ /\
M /\ /\ /\ /\ /\ _P _P #_ #_
M__\ #__P /\ _P #_ #_ _P /\
M _P /\ /\ /\ /\
M #_ /\ _P /\
M /\ #_ _P#_ /\ _P#_ #_ /\ _P#_ /__ /\
M_P#_ #_ /\ /\ _P#_ #_ /\ _P#__P#_ _P#_ /\ _P#_ /\ _P#_
M_P#_ /\ __\ _P#__P#_ /\ _P#__P _P#_ /\ _P#_ /\ _P#_ /\ _P
M_P#_ _P#_ /\ _P#_ _P _P _P
M #_ _P _P _P _P
M _P _P _P _P
M_P _P /\
M _P #_ #__P /__ /\
M_P _P _P #_
M #_ #_ /\ /\
M /\ _P _P#_ /\ _P _P#_
M /\ /\ _P#_ #_ /\ _P#_ /\ /\ _P#_ /\ /\ _P _P#_ /\ _P#_
M /\ /\ _P#_ /\ _P#_ /\ __\ _P#__P#_ /\ _P#_ /\ _P#_ /\ _P#_
M /\ /\ _P#_ /\ _P#_ #_ /\ _P #_ /\ _P#_ #_ #_
M #_ #_ #_
M #_ #_ #_
M #_ #_ #_
M #_ _P /\ #_ /__ ____ /\
M /\ #_ _P /\ #_ _P
M /\ _P #_ /\ /\ /\ /\ _P
M_P #_ #_ #_ _P
M _P _P#_ /\ /\ /\ _P#_ /\ _P#_ /\ /\ _P#_ /\ /\
M_P _P#_ /\ _P#_ /\ _P#_ /\ _P#_ #_ /\ _P#__P#_ /\ _P#_
M_P#_ /\ _P#_ /\ _P#_ /\ _P _P#_ /\ _P#_ /\ _P#_ /\ _P#_
M #_ /\ _P /\ /\ _P /\ /\
M /\ /\ _P _P _P /\ /\ /\ /\ /\
M /\ /\ /\ /\ /\
M #_ #_ #_ #_ #_ /\ /\ /\ /\ __\
M #__P _P _P #_ #_
M #_ /\
M _P /\ #_ #_ #_
M #_ #_ #_ /\ _P _P _P /\ _P#_ /\ /\ _P
M _P /\ _P _P _P#_ #_ /\ _P#_ _P _P#_ /\ #_ /\
M_P _P#_ /\ _P#_ #_ /\ _P#_ /\ _P _P _P _P#_ #_ #_ /\
M /\ _P#_ #_ /\ _P#_ /\ /\ _P _P
M #_ _P
M _P _P _P _P _P
M _P /\ #_ #_
M _P #__P /__ #_ #_
M _P /\ #_ #_ /\ #_ _P #_
M #_ #_ /\ #_
M /\ /\ /\ /\ /\ _P#_ _P#_ /\
M_P _P#_ /\ _P /\ _P#_ /\ /\ _P #_ #_ /\ _P _P#_ /\
M_P /\ _P#_ /\ _P _P#_ /\ _P#__P#_ /\ /\ _P#_ /\ _P#_ /\
M_P#_ #_ /\ _P /\ _P /\ #_ /\ /\ _P _P /\
M /\ _P /\ /\ _P /\
M #_ #_ #_
M #_ #_ #_ #_ #_ #_
M_P /\ /__ __\ #_ _P
M_P /\ /\ /\ /\
M /\ /\ /\ /\ /\ _P _P _P
M #_ /\ #_ _P /\
M_P _P _P#_ /\ _P#_ _P _P#_ #_ /\ /\ _P _P#__P
M /\ _P /\ #_ _P#_ /\ /\ /\ _P#_ /\ _P#__P#_ /\ /\
M_P#_ #_ /\ _P#_ _P#_ /\ _P#_ /\ _P _P#_ /\ #_ #_ /\
M_P _P _P #_ #_ #_ #_
M _P _P /\ /\ /\ /\ /\ /\
M /\ /\ /\ /\ /\ _P
M /\ #_ #_ #_ #_ #_ _P __\ #_
M_P#_ _P _P /\ #_
M #_ _P
M #_ _P
M /\ /\ _P _P _P#_ _P #__P#_ #_ /\ _P#_ /\
M /\ /\ _P /\ /\ _P _P#_ _P#_ /\ _P#_ #_ /\
M_P _P#_ /\ /\ __\ _P#_ /\ _P#_ /\ _P#_ /\ _P _P#_
M _P#_ /\ /\ _P _P _P#_ /\ #_ #_ _P
M /\ /\ _P
M _P _P _P _P _P
M #_ #_ #_ #_
M /\ /___P /__ /\ _P /\ #_ #_
M /\ /\ #_ /\ #_
M /\ _P /\ /\ /\ #_ _P
M_P /\ _P _P _P _P _P _P _P#_ #_ #_
M #_ #_ #_ /\ /\ _P _P _P#_ /\ /\ _P _P _P#_ /\ #_
M /\ _P _P#_ /\ /\ _P#_ /\ /\ _P _P#_ #_ /\ _P #_ #_
M /\ _P#_ /\ _P#_ #_ /\ /\ _P _P#_ #_
M #_ _P _P _P _P
M /\ #_ #_ #_
M /\ #_ /\ _P /\ /\ /\ /\
M #_ #_ #_ #_ #_ /__ __\ #_
M #_ _P _P /\
M _P #_ #_ _P _P _P
M #_ #_ _P
M _P#_ #_ _P#_ /\ _P#_ #_ /\ _P _P _P#_ /\ /\ _P
M_P#_ #_ /\ _P#_ /\ /\ _P#_ /\ /\ _P#_ /\ /\ _P#_ #_ #_
M /\ _P _P#_ #_ /\ _P _P#_ #_ #_ /\ /\ _P _P#__P#_
M #_ /\ /\ _P #_ /\ /\ #_ #_ #_
M _P /\ /\ /\ /\
M /\ /\ #_ #_
M #_ /\ __\ #__P
M /\ #_ /\ #_ _P /\ /\
M /\ #_ /\ #_ _P /\
M /\ /\ /\ #_ /\
M #_ #_ #_ #_ _P#_ #_ /\ _P /\ #_ #_ /\ _P _P#_
M #_ /\ _P _P#_ #_ /\ #_ #_ /\ _P#_ /\ /\ _P _P#_
M /\ _P _P#_ /__ /\ /\ _P#_ /\ #_ _P#_ _P#_ #_
M __\ _P#_ #_ /\ /\ _P _P
M_P _P _P /\ /\
M _P _P _P /\ /\ #_
M /\ /\ _P /\ #_ #_ #_
M _P#__P /___P _P
M _P _P /\
M /\ /\ /\ _P _P _P _P
M /\ _P #_ _P#_ #_ /\ _P#_ #_
M #_ /\ _P _P#__P#_ /\ _P#_ /\ _P#_ /\ /\ _P#_ #_ /\ _P
M_P#_ /__ /\ _P#_ /\ _P _P#_ /\ /\ /\ _P#_ #_ /__ /\ _P#_
M #_ /\ #_ /\ __\ _P _P#__P#_ /\ /\ _P _P #_ _P
M #_ _P
M #_ #_ #_ /\
M _P _P #_ #_ #_ _P
M /\ /\ /__ __\ #_ _P #_
M #_ #_ #_ #_ _P _P
M #_ _P _P #_ #_
M #_ #_ _P /\ #_ /\ #_ /\ #_
M /\ /\ _P#_ #_ /\ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /\
M_P#_ /__ /__ /\ __\ _P#_ /\ _P#__P#_ /\ _P#__P#_ /\ __\ _P
M_P#_ /\ _P#_ #_ /\ #_ /\ _P _P#_ /\ /\ _P
M_P#_ /\ #_ #_ #_ _P _P /\ /\ /\
M /\ /\ /\ /\ /\ /\ /\ /\
M _P #_ #_ /\
M /\ _P _P #___\ #__P _P
M #_ /\ /\ /\ /\
M _P /\ #_ #_ #_
M /\ /\ #_
M _P#_ #_ /\ /\ _P #_ /\ /\ _P#_ /\ _P#_ /\ _P#_
M #_ /\ _P#_ /\ _P#__P#_ /__ /\ __\ _P#_ /__ /\ _P#_ /\ _P#_
M #_ /\ /\ _P _P#_ /\ /\ _P _P#_ #_ /\ _P /\ _P _P#_
M #_ /__ /\ _P#_ /\ _P#_ _P
M _P _P _P
M _P #_ #_ /\ _P #_
M _P #_ #_ _P #_ _P _P _P /\
M #__P /__ #_ _P /\ _P _P
M _P /\
M /\ /\ /\ #_ _P _P _P _P
M _P _P /\ _P _P _P#_ /\ _P _P#_ #_ /\ _P#_
M /\ _P#_ /__ /\ _P#_ /\ _P#_ /__ /\ _P#_ /__ /\ __\ _P#__P#_
M /__ /__ /__ /\ _P#_ /__ /\ _P#__P#_ /\ /\ _P _P#_ #_ /\
M /\ /\ /\ _P#_ #_ #_ /\ _P#_ /\ _P#_ /\ _P #_ #_
M #_ _P _P /\ #_ /\
M /\ #_ #_ #_
M /\ /\ /\ #_
M_P #_ /__ __\ _P
M /\ #_ #_ #_ #_ #_ #_ #_ /\
M #_ _P _P _P /\
M #_ _P#_ _P#_ /\ _P /\
M_P#_ #_ /\ _P#_ /\ __\ _P#_ /\ __\ ____ /____\ __\ _P#_ /__
M /\ __\ _P#__P#_____ /__ #_ /\ __\ ____ /\ _P#__P#__P#_ /\
M__\ _P#_ #_ /\ /\ #_ /\ #_ #_ /\ /\ __\ _P#_ /\ _P#_
M /\ /\ /\ /\ _P _P
M_P _P /\ /\ /\ /\ #_
M #_ #_ #_ /\ #_ #_ #_
M /\ /\ #_ _P __\ #__P
M_P /\ /\ #_ /\ /\
M /\ #_ /\ #_
M _P /\ _P /\ #_
M_P#_ _P#_ /\ _P#_ /\ _P#_ #_ /\ _P#_ /__ /\ __\ /\
M__\ __\ ____ /__ /\ __\ _P#__P#__P#_ /__ /____\ __\ _P#_ /\
M__\ _P#__P#_ /__ /\ /\ _P#_ /\ /\ _P#_ /\ /\ _P#_ /\ /\
M_P#_ /\ _P#_ #_ /\ _P _P
M #_ #_ #_
M _P #_ #_ /\ /\
M /\ /\ /\ /\ #_ _P #_
M_P /___P /\ /\ #_ _P
M _P _P #_ _P
M_P _P #_ #_ #_
M #_ _P _P _P#_ /\ _P#_ /__ /\ _P#_ /\ __\
M_P#_ /____\ __\ __\ _P#__P#_ /__ /____\ ______\ _P#_ /\ ____
M /\ _____P#___\ __\ _P#__P#__P#_ /\ __\ _P#_ /\ /\ _P /\
M /\ _P#_ /\ /\ #_ /___P#_ /\ _P#_ /\ _P#_ _P _P
M_P /\ #_ #_ #_ /\ /\ /\
M /\ /\ #_ #_ #_ #_
M _P #_ _P _P
M /\ #_ _P /__ __\ _P /\
M /\ #_ #_ #_ #_ /\
M /\ #_ #_ /\
M /\ /\ /\ _P#_ /\ _P _P#_ #_ #_ /\
M /\ _P#_ /__ /\ _P#_ /__ /\ __\ __\ _____P#_____ /\ _P#__P#_
M /\ _P#_________ /\ __\ _P#___\ __\ _P#__P#__P#_____ /\ __\
M_P#_ /\ _P#_ /\ /\ _P #_ /\ _P#_ #_ /\ _P#_ /\ /\ _P#_
M #_ _P /\ _P
M_P _P _P _P /\ /\
M /\ #_ /\ /\ /\
M #_ /\ __\ #__P /\
M _P _P #_ /\ /\
M_P _P /\ _P /\ /\ /\
M_P _P #_ /\ _P#_ /\
M_P _P#_ /\ _P#_ /\ _P#__P#_ /____\ __\ __\ __\ __\ _P#_ /__
M /__ /\ _____P#___\ _P#__P#_ /\ __\ __\ ____ /\ _P#___\ _P#_
M /___P#_ /____\ _P#___\ _P#_ /\ _P#_ /\ /__ /\ _P#_ #_ /__
M /__ /\ /\ _P#__P#_ /\ _P _P #_
M #_ #_ #_ /\ #_
M #_ #_ #_ #_ #_ #_ #_
M _P #_ _P _P _P #_ #__P
M /__ _P /\ #_ #_ #_
M _P
M _P #_ #_ /\ /\ /\ /\
M _P /\ _P _P#_ /\ /\ _P#_ /\ _P#_ /__ /\ __\ __\
M_____P#___\ ____ /__ /____\ _P#__P#______P#_______\ _____P#_
M /________\ ____ /__ /___P#_ /\ _P#__P#_ /___P#_ /\ _P#_ /__
M #_ /\ _P#_ /\ /\ _P#_ /\ _P _P#_ /\ #_
M /\ /\ /\
M /\ /\ /\ #_ /\
M /\ #_ /\ #_ /\ /\
M /\ /__ __\ _P /\
M_P #_ #_ _P _P /\ #_
M /\ #_ #_ #_ /\
M _P /\ _P#_ /\ /\ _P _P#_ /\ _P#_ /\ _P#_
M /__ /__ /\ _P#__P#__P#___\ _P#_ /\ ______\ _P#__P#__P#__P#_
M_P#_ /\ _____P#_____ /\ _P#___\ _P#___\ _P#______P#_____ /\
M_P#_ /\ _P#_ /__ /\ _P _P#_ /\ /\ __\ _P#_ /\ _P#_ /__ /\
M /\ _P #_ _P #_ _P _P
M #_ /\ _P _P _P
M_P #_ #_ _P _P
M #_ /\ /\ __\ #__P#_ #_ /\ #_
M #_ /\ /\
M #_ /\ _P _P /\
M _P #_ /\ _P#_ /\ _P _P#_
M /\ __\ _P#_ /\ ____ /__ /___P#__P#_____ /__ /__________ /\
M_____________P#_ /___________P#_____ /______ /\ ____ /\ ____
M____ /___P#_ /_______P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_____
M /\ _P#_ #_ #_ /\ _P _P /\ /\
M /\ #_
M /\ #_ #_ #_ #_ #_ /\ /\ #_
M #_ #_ #_ _P _P #__P /__
M /\ #_ /\
M _P /\ /\ _P #_
M _P _P #_ _P _P _P
M /\ /\ _P#_ #_ /\ _P#_ /___P#_ /__ /__ /____\ _P#_ /__
M__\ _P#_ /\ _P#_______\ _P#_ /_______P#_ /\ _P#__P#_ /______
M________ /____\ _P#_ /__ /__ /__ /\ _P#_ /\ _P#_ /__ /\ _P#_
M /\ __\ _P _P#_ /__ /\ _P#__P#_ /__ #_ /\
M _P _P _P #_ _P #_ /\
M /\ /\ /\ /\
M #_ /\
M _P /__ __\ #_ _P #_
M _P _P #_
M _P #_ _P #_
M _P _P#_ /\ /\ _P#_ #_ /\ _P _P#_ /\ ____ /__
M /__ /\ __________\ __________________\ _________P#_ /______
M________ /___P#_ /\ ____ /\ __\ ____________ /____\ __\ ____
M____ /__ /___P#_ /\ _P#_ /\ _P#_ /__ /__ /\ _P#_ /__ /\ _P
M #_ #_ #_
M _P _P _P #_ /\ _P
M #_ /\ _P _P #_ _P
M #_ _P #_ #_ /\ __\ #__P #_ #_
M /\ _P #_ #_ /\
M /\ #_ #_ _P _P /\ /\
M /\ _P#_ /\ /\ _P#_ /\ _P#_
M_P#_ /\ _P#_ /__ /____\ __\ _P#_ /\ _____P#_ /\ _P#___\ ____
M /___P#______P#_ /\ _P#_________________ /_______P#__P#_ /\
M______\ _____P#_ /__ /__ /__ /\ _P#_ /\ __\ __\ _P#_ /__ /\
M__\ _P#_ /\ __\ #_ /\ /\
M_P _P /\ /\ #_ /\
M _P #_ #_ #_ #_ #_
M #_ #_ #__P /__ /\
M /\ /\ #_ _P /\
M _P _P /\ /\
M _P /\ _P _P _P _P
M /\ _P#_ /\ __\ _P#_ /______ /__ /__ /\ _____P#__________P#_
M__________\ _________P#_____ /____________\ ____ /__________
M__\ _P#_____ /______ /\ _____P#_____ /__ /__ /_______P#_ /\
M__\ _P#_ /\ __\ __\ _P#_ /\ __\ _P#_ _P
M #_ #_ #_ #_ /\ _P
M _P _P #_ #_ /\
M #_ /\ _P _P _P #_ _P #_ #_
M ____ __\ /\ /\ /\
M #_ _P _P #_ #_ _P
M_P /\ #_ #_
M #_ /\ _P#_ /\ /\ _P#_ /\ _P#_ /___P#_ /__ /\ ________
M_P#_____ /\ _P#___________________\ _____P#_ /______________
M____ /___P#_ /\ __\ ________ /____\ _____P#__P#_____ /__ /__
M /__ /\ _P#_ /\ __\ __\ _P#_ /\ __\ __\ _P#_ /\ _P#_ /\
M #_ #_ #_ /\ /\
M #_ /\ /\
M /\ _P #_ #_ #_ #_
M _P /\ __\ #__P _P /\
M #_ _P _P
M _P _P _P
M /\ _P #_ /\ /\ _P#_ /__ /\ _P#__P#_
M_P#_ /______ /\ _P#_____ /________\ _P#_ /\ _P#___\ ____ /__
M______\ _P#_ /\ _P#__________________________P#___\ ________
M_____P#_ /\ ____ /__ /\ __\ ____ /\ __\ __\ _P#_ /\ __\ ____
M /\ _P#__P#_ /\ _P /\ _P
M #_ #_ _P _P _P /\ /\ _P
M _P _P _P _P _P
M _P /\ #_ #_ #__P /___P _P
M /\ #_ /\ #_ /\ /\
M /\ _P _P /\ _P /\ #_
M #_ #_ _P #_ /\ _P
M_P#_ /\ _P#__P#__P#_____ /\ __\ ________ /__________________
M______\ _________P#_ /________________\ __\ _________P#___\
M_P#_ /_______P#_ /__ /__________ /\ _________P#_ /\ _P#___\
M_P#_ /\ __\ __\ _P#_ /\ _P#_ /\ _P #_ #_
M #_ #_ /\ _P
M #_ #_ /\ /\ #_ #_
M _P _P _P /\ /\
M /__ __\ /\ #_ _P
M /\ /\ _P #_ _P
M _P /\ /\ /\ #_ #_
M #_ #_ /\ _P _P#_ /__ /\ _P#__P#__P#_ /\ __\ _____P#_ /__
M_P#_ /\ _P#___________________\ __\ _____P#_________________
M_____P#_ /____\ _________P#__P#_______\ _P#_ /\ _P#_____ /\
M_P#_____ /__ /\ __\ _P#_ /\ __\ _P#___\ __\ _P#_ /\ /\
M_P /\ /\ #_ _P _P
M_P /\ /\ /\ /\ _P
M_P _P /\ #_ /\ _P _P _P _P
M_P #_ #___\ #__P
M /\ _P /\ #_
M #_ /\ _P _P
M /\ #_ #_ #_ /\ _P#_ /__ /\ _P#__P#__P#__P#_
M_____P#__P#_________ /________\ _P#_ /\ _P#___\ __\ ________
M__\ _P#_ /\ _P#__P#__P#______________P#_ /__________ /\ ____
M__\ ______\ _P#__P#__P#_ /__ /__ /___P#__P /\ _P#__P#_ /\
M_P#_ /__ /\ _P #_ _P /\
M #_ _P _P
M #_ #_ #_ _P #_
M /\ /\ /\ #__P /__ #_ #_
M #_ #_ _P _P /\ _P
M /\ /\ /\ /\
M #_ _P #_ _P#_ #_ /\
M_____P#__P#_______\ _P#_____ /__ /__ /____\ _P#_ /__________
M__\ ________ /__ /__________________________ /__ /\ ________
M_P#_ /__ /_______P#______P#_ /____________\ __\ __\ _P#__P#_
M /\ _P#_____ /___P#__P#_ /\ _P _P #_
M _P _P _P /\ #_ #_
M #_ /\ /\ /\ /\ /\
M /\ #_ _P _P _P #_ #_ /__
M __\ /\ /\ /\ /\ #_ #_
M _P _P _P _P #_
M _P /\ /\ /\ /\ _P #_ #_ #_
M #_ /\ _P#_ /\ __\ _P#__P#__P#_ /__ /___P#_ /_______P#___\
M____________ /\ _________P#___\ _P#__P#__P#_ /\ ____ /__ /__
M /__________ /________________\ _P#__P#___\ _____P#_ /__ /__
M____ /\ ________ /__ /\ _P#_ /____\ _P#_ /__ /\ _P#_
M #_ #_ /\ /\ /\ #_ _P
M /\ /\ _P _P _P
M_P _P _P #_ #_
M /\ /\ __\ #__P #_
M /\ #_ #_
M /\ #_
M_P _P _P#_ /\ _P#_ /__ /\ _P#__P#__P#_______\ _P#_
M____ /\ ______\ _____P#_ /\ _P#______P#__P#___\ _________P#_
M________ /_______________________P#_ /\ __\ __\ __________\
M____ /________\ _P#_ /____\ _P#_ /__ /\ _P#_ /__ /\ _P#__P#_
M /\ _P#_ _P /\ /\ /\ /\
M #_ _P _P
M #_ #_ #_
M_P _P _P #_ #__P /__ /\ #_
M #_ /\ /\ /\ /\ /\
M /\ _P _P /\ /\ /\ /\
M /\ /\ _P#_ /\ _P#_____
M_P#_ /__ /\ ______\ ________ /___P#__P#______P#___\ _P#_____
M /__ /___P#_ /______ /\ ______\ __\ __\ _P#_ /\ ____ /______
M__\ _____P#_ /\ ______\ _P#_ /\ ________ /\ _P#_____ /\ _P#_
M #_ /___P#__P#_ /__ /\ _P#_ _P
M_P _P /\ /\ /\ _P
M /\ /\ /\ _P /\ /\ /\
M _P _P _P #_ #_ /\ /\ /__
M__\ /\ _P _P _P #_
M _P _P
M #_ _P _P _P _P /\ #_ /\ _P#_
M #_ /\ _P#__P#_ /__ /___P#______P#__P#_ /__ /___P#_____ /__
M /____\ ________ /____\ _P#___\ _P#_ /______ /\ ____________
M________ /____\ _P#______P#_________ /\ _____________P#_ /\
M________ /___P#_ #_ /__ /______ /__ /\ __\ _P#_ /\
M /\ #_ /\ _P _P _P
M #_ #_ #_ _P _P _P #_ #_
M #_ /\ _P _P _P
M #___\ #__P /\ #_ #_ #_
M #_ /\ /\ #_ /\
M #_ #_ #_ #_ #_
M _P _P#_ /\ _P#__P#_ /__ /____\ __\ _P#__P#_____
M /____\ ____ /__ /__ /\ _P#__P#_ /____\ _____P#_____ /__ /__
M /_______P#__P#__P#_ /\ _P#___\ _P#___\ _P#_____ /\ __\ ____
M_P#_ /\ _P#__________P#_ /\ _P#__P#_ /__ /__ /__ /__ /\ __\
M_P#_ /\ _P _P _P _P #_
M /\ /\ /\
M /\ /\ /\ _P /\
M /\ /\ #__P /__ _P _P
M /\ /\ /\
M_P _P _P /\ /\ #_
M_P /\ /\ _P#_ /\ _P#__P#_ /____\ __\
M_P#__________P#_ /__ /\ _P#__P#___\ __\ _P#__P#_ /__ /\ __\
M_P#__P#_ /______ /\ _P#__P#__P#__P#___________\ ________ /__
M____ /\ __\ _____P#_____________ /\ _P#__________P#_ /__ /\
M____ /\ _P#_ /___P#__P#_ #_ #_
M #_ #_ _P _P _P _P _P #_
M _P _P _P #_ #_ _P #_
M #_ /\ _P #_ /__ __\
M #_ #_ _P _P _P _P
M _P #_ _P _P
M /\ #_ #_ #_ #_ #_ /\ _P
M_P#_ /__ /\ _____P#_____ /\ _P#_____ /__ /______ /\ __\ ____
M_P#_ /____\ __\ _P#__P#_ /__ /\ /\ ____ /\ _P#_________ /\
M_P#_ /\ _P#__P#__P#_ /___________P#_____ /\ _P#_ /___P#_____
M /\ _P#__P#___\ __\ ________ /\ _P#__P#_ /\ _P /\
M /\ /\ /\ #_ #_ #_
M #_ #_ /\ /\ /\
M #_ _P /\ /\ /\ _P
M _P __\ #___\ /\ #_ #_
M #_ _P /\
M_P /\ #_ /\ /\ /\
M #_ #_ /\ /\ _P#_ /__ /\ __\ _P#_____ /_______P#_ /__ /\
M_P#_ /____\ _P#_ #_ /\ _P _P#__P#__P#_ /__ /\ ________ /__
M_P#__P#_ #_ /\ __\ _P#__P#__P#_ /__ /__ /\ __\ _P#__P#_ /__
M_________P#_____ /_______P#_ /\ __\ _P#_ /\ _____P#_ /\ _P#_
M /\ #_ _P _P #_ #_ #_
M_P #_ _P #_
M #_ _P /\ /\ /\ #_
M /\ #__P /__ _P _P _P
M /\ /\ #_
M _P /\ _P /\ #_ #_ #_
M _P /\ /\ _P#_ /__ /_______P#__P#_ /__
M /\ _P#_ /__ /\ ____ /\ _P _P#__P#_ /\ _P _P#_ /\ _P#_ /__
M /\ __\ _P#_ /\ _P#__P#_ /__ /\ __\ _P#_ /\ _P#_ /__ /____\
M_P#_ /________\ ____ /___P#__P#_ /____\ _P#_______\ _P#_____
M__\ _P#_ /______ /\ _P #_
M /\ /\ /\ #_ /\
M /\ #_ /\ /\ /\ #_ _P
M /\ /\ /\ /\ /\ #_ #_ /__ __\ #_
M #_ #_ _P _P _P _P #_
M #_ #_ #_
M #_ /\ _P#_ /\ __\
M_P#__P#_____ /__ /___P#_____ /\ _P#_ /____\ _P#_ #_ /__ /\
M_P#_ /\ _P#_ /__ /\ __\ _P#_ /\ __\ _P#_ /__ /__ /\ _P _P#_
M /__ /__ /__ /\ ______\ __\ _P#_____ /___P#_ /________\ _P#_
M_P#_ /\ _P#__P#_ /\ _P#_ /__ /\ _P#___\ _P /\ /\
M /\ #_ _P _P #_ _P _P _P
M _P _P #_
M /\ /\ /\ _P
M __\ #__P _P /\ #_
M /\ #_ /\ #_
M _P _P _P #_ _P _P _P _P
M _P#_ /\ /\ _____P#_ /__ /______ /____\ __\ _P#_ /\ _P
M_P#_ #_ /\ /\ _P /\ _P#_ /__ /\ __\ _P#__P#_ /\ _P#_ /\
M_P#_ /\ _P _P#_ /\ #_ #_ /\ _P#_ /\ __\ _P#__P#___\ __\
M_____P#_ /\ ________ /__________ /__________ /__ /___P _P
M _P _P _P /\
M /\ /\ /\ /\ #_ /\ /\
M _P _P _P _P _P #_
M _P #_ #_ #__P /__ #_ /\
M _P /\ _P /\ /\
M #_ #_ _P
M #_ #_ /\ _P#_ /\ _P#__P#_ /___P#__P#_ /__ /\
M__\ _P#_ /__ /\ _P#_ #_ /\ /\ /\ #_ /\ _P _P#_
M_P#_ /\ _P#_ /\ _P#_ /\ /\ _P _P#_ /\ _P#_ /\ /\ _P#_ /\
M_P#_____ /\ ____ /__ /\ _____P#__P#_ /____\ _P#_ /\ __\ _P#_
M /__ /\ _P#__P#_ #_ #_ /\
M_P _P /\ _P _P _P
M _P _P _P _P #_ /\
M /\ #_ /\ /\ /\ /__ __\ /\
M _P _P _P #_ #_ #_ #_
M _P /\ #_ _P /\
M #_ _P _P _P#_ /\ _P#__P#_____
M /\ ____ /__ /\ __\ _P#_ /\ /\ _P#_ #_ /\ /\ /\ /\ _P#_
M /\ _P _P#_ #_ /\ __\ _P#_ /\ _P#_ /\ _P _P /\
M /\ /\ _P#_ /\ _P#__P#_ /___P#___\ __\ ____ /____\ ______\
M______\ __\ ________ /\ _____P#__P#_ /\ /\
M #_ /\ /\
M /\ #_ /\ /\
M #_ #_ _P#_ #_ #_
M__\ #__P #_ #_
M /\ #_ _P /\ /\ #_
M #_ /\ #_ #_
M_P#_ /\ _P#___\ ________ /____\ __\ _P#__P#_ /\ /\ _P#_ /\
M #_ /\ /\ /\ _P _P#_ #_ #_ /\ /\ _P#_ /\ _P#_
M_P _P _P#_ /\ _P#_ /\ _P _P#_ /\ _P#_ /\ _P#___\ ______\
M_P#_ /\ _P#_ /\ _____P#___\ __\ _P#_ /__ /\ _P#__P#_
M_P _P _P #_ /\ /\ _P /\
M _P _P _P #_ #_
M _P _P /\ /\ /\ /\ /\ #_ /\ /\ /\
M #__P /__ _P /\ /\
M_P /\ _P #_
M #_ /\ /\ #_ _P _P
M /\ /\ _P /\ _P#__P#__P#_ /\ __\ __\ __\ _P#__P#_
M /\ /\ _P#_ #_ #_ /\ _P /\ /\ _P #_ #_ /\ /\
M_P _P#_ #_ #_ /\ _P _P#_ #_ /\ _P _P _P#_ /\ _P#_ /\
M__\ _P#_ /___P#__P#__________________P#__P#__P#_________ /\
M__\ _P#__P#_ #_ _P
M #_ #_ #_ #_ /\ #_
M /\ /\ /\ /\ #_ _P
M #_ #_ #_ #_ /__ __\
M_P #_ #_ #_ _P
M _P /\ #_
M /\ _P#_ /\ _P#__P#_______\
M____ /\ _P#__P#_ #_ /\ _P _P#_ /\ _P#_ /\ /\ /\ _P
M_P#_ #_ /\ /\ _P _P#_ #_ /\ /\ _P _P#_ #_ /\ _P _P#_
M /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#__P#__P#_ /\ _P#_ /\ _P#_____
M_P#___\ _P#_ /\ __\ _____P#_ /\ /\ /\ _P
M #_ /\ _P #_ #_
M _P _P _P
M /\ /\ /\ /\ /\ #_ __\
M #___\ /\ /\ _P
M #_ #_ #_ #_ #_ /\
M #_ /\ /\ _P /\ _P#_
M /__ /___P#_ /\ __\ _P#___\ _P#_ #_ /\ /\ _P#_ #_
M_P#_ /\ /\ /\ _P#_ #_ /\ /\ _P _P#_ #_ /\ /\ _P _P#_
M #_ /\ _P _P#_ #_ #_ #_ /\ /\ _P#_ /__ /\ _P#_ /__ /\
M______\ ______\ _P#_ /\ _P#_______\ __\ _P#__P#_ /\
M _P #_ /\ #_ #_ #_ #_ #_ #_
M #_ /\ /\ /\ #_ #_ #_ _P /\
M #_ #_ /\ #_ #_
M #__P /__ #_ #_ #_ _P _P #_
M #_ _P /\
M /\ #_ #_ /\ #_ #_
M _P _P _P /\ _P#__P#__________P#___\ _P#_ #_ /\ /\
M_P#_ #_ _P#_ /\ _P /\ /\ _P _P#_ /\ /\ _P _P#_ #_
M /\ /\ _P _P#_ #_ /\ _P _P#_ #_ /\ _P#_ /\ /\ _P#_ #_
M /\ _P#__P#_ /\ __\ _P#__________P#_____________ /\ __\ _P#_
M_P#_ /\ _P #_ /\
M #_ _P
M /\ _P _P /\ /\ /\
M_P #_ _P#_ _P /__ __\
M #_ /\ /\ /\ _P
M #_ /\ #_ _P #_
M _P _P#_ /__ /__ /__ /\ _P#_____
M /\ _P#_ /\ /\ _P #_ #_ /\ _P#_ /\ /\ _P _P#_ #_
M /\ _P _P#_ #_ /\ /\ _P _P#_ #_ /\ _P#_ /\ _P#_ /\ /\
M /\ /\ _P _P#_ /\ _P#__P#_ /\ __\ _P#__P#_ /\ _P#_____ /\
M_P#_ /\ __\ _P#__P#_ /__ /\ /\ _P _P /\
M #_ _P /\ /\ /\
M #_ /\ #_ #_ _P #_
M _P #_ #_ _P _P /\ __\ #_
M_P _P _P _P
M_P /\ #_ /\ /\ #_
M _P /\ #_ #_ #_ #_ /__
M /___P#__P#_____ /\ __\ _P#_ /\ _P /\ /\ /\ _P#_
M /\ _P _P#_ #_ /\ /\ _P#_ #_ /\ /\ _P _P#_ #_ /\ _P#_
M /\ _P#_ /\ /\ _P#_ /\ _P _P#_ /\ _P _P#_ /\ __\ _P#__P#_
M__\ ________ /__ /___________P#__P#_ /____\ _P _P
M_P #_ /\ /\ _P _P _P
M_P _P _P _P /\ /\ #_
M_P _P /\ _P _P #_ #_
M #__P /__ #_ #_ #_ _P #_ #_
M _P _P _P
M /\ #_ _P #_ _P
M #_ #_ #_ /\ __\ _P#_________ /__ /\ _P#_ /\ _P#_ /__ /\
M /\ /\ _P#_ /\ _P _P _P#_ #_ /\ /\ _P _P#_ /\ /\ _P#_
M /\ _P#_ /\ _P#_ /\ /\ _P#_ /\ _P#_ /\ _P _P#_ #_ /\ _P#_
M /\ __\ _P#__P#_ /\ _____P#_ /__ /\ ____ /\ _P#_____ /__ /\
M__\ #_ /\ #_
M /\ _P /\
M /\ #_ _P _P
M /\ _P _P _P /__ __\
M /\ /\ _P _P /\ /\
M #_ _P /\ #_
M #_ #_ /\ __\ _____P#_ /__ /__ /____\
M_P#_ /\ /\ /\ _P _P#_ /\ _P _P _P#_ #_ /\ _P#_ /\
M_P#_ /\ /\ _P#_ /\ _P#_ /\ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P
M__\ _P#_ /\ _P#_ #_ /\ _P#__P#_ /\ __\ _P#_____________ /__
M_____P#_ /__ /\ __\ _P /\ /\ _P _P
M #_ /\ _P _P _P _P _P
M_P _P _P /\ /\
M #_ #_ #_ #_ #_ /\ __\ #__P
M #_ #_ _P _P
M /\ /\ /\ /\ _P
M /\ /\ /\ /\ /\ _P#__P#_
M_P#_ /______ /\ _P#_ /\ /\ /\ /\ _P _P#_ #_ /\ _P#_ /\
M_P#_ /\ _P#_ /\ _P#_ #_ /\ _P#_ /\ /\ _P#_ /\ _P#_ /\ __\
M_P#_ /\ _P#_ /\ __\ _P#_ /__ /\ _P#_ /\ _P#__P#_ /\ __\ _P#_
M____ /\ _P#_ /__ /\ _P#_ /____\ __\ __\ _P _P
M _P #_ #_ #_ #_ #_
M _P #_ #_ #_ #_ _P
M_P _P _P /\ /\ /\ _P _P
M_P #__P /__ #_ #_ #_ _P /\
M /\ /\ _P _P
M_P /\ /\ _P _P
M /\ /\ _P#__P#__P#___\ __\ ____ /\ _P#_ /\ _P /\ _P _P#_
M #_ /\ _P#__P#__P#_ /\ _P#_ /\ _P#_ #__P#_ /\ _P#_ /\ _P#_
M /\ _P#__P#_ /\ __\ __\ _P#__________P#__P#_ /\ _P#_ /\ _P
M_P#_ /\ __\ _P#_____ /________________________\ __\ __\ _P
M #_ #_ _P _P _P #_ /\
M _P /\
M /\ _P _P #_ #_ #_
M #_ /__ __\ /\ #_ _P
M #_ _P _P _P _P
M _P /\ #_ #_ #_ #_
M #_ #_ /\ _P#_ /__ /\ ________ /___P#_ /\
M /\ __\ _P _P#__P#_ /__ /___P#__P _P#_ /\ _P#_ /\ _P#__P#_
M /\ _P#_ /\ _P#_ /\ _P#__P#_ /____\ _P#_________ /\ _P#___\
M__\ __\ _P#_ /\ _P#_ /\ __\ _P#__P#_ /_______P#_ /\ _P#_ /\
M____ /\ __\ _____P /\ #_
M _P _P _P #_ #_ #_ #_ #_
M _P _P #_ _P _P #_ _P
M /\ /\ /\ /\ _P _P _P __\ #__P
M #_ #_ #_
M _P _P #_ /\ /\
M /\ /\ _P#_ /__ /____\
M_P#______P#_ /\ /\ _P _P#__P#__P#_ /__ /\ _____P#_________
M_P#_ /__ /\ _P#_ #_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ ______\
M____ /___________P#___\ _P#_ /___P#__P#_ /\ _P _P#_ /__ /\
M_P#______________P#_ /____\ __\ _P#_ /______________
M__________\ /\ #_ #_ _P #_
M /\ /\ #_ #_ _P
M #_ #_ #_
M /___P /__ #_ #_ #_ _P /\ /\ /\
M _P _P /\ _P
M _P /\ #_ #_ #_ _P _P _P
M /\ _P#_____ /\ _P#___\ ____ /__ /\ _P _P#_ #_ /\ _P#_ /\
M____ /_______P#_ /\ ____ /______ /__ /\ _P#_ /\ _P#_ /\ _P#_
M /__ /___P#_________ /___________P#___\ _P#_____ /\ _P#_ /\
M_P#__P#_ /__ /__________ /\ _P#_ /________\ __\ __\ _P ____
M_____________________________________P
M _P #_ _P _P
M _P #_ /\ /\ _P /\
M /\ _P _P _P /__ __\ /\
M _P _P #_ /\ /\
M _P #_ /\
M #_ _P#_ /\ /___P#__P#__P#_ /__ /\ _P _P#_
M /__ /___P#_ /______ /___P#__P#______P#_____ /\ _P#_ /__ /\
M_P#_ /\ _P#_ /\ _P#___\ _P#___\ _P#_________ /\ _P#__P#_____
M_P#_ /__ /___P#_ /\ _P#_ /__ /__ /\ ____ /__________ /\ _P#_
M /\ __\ ______________\ ____________
M__\ /\ #_ _P #_ /\ #_ #_ _P
M #_ #_ #_ /\ /\ /\ #_ /\
M #_ #_ #_ __\ #__P#_
M #_ #_ /\ /\
M_P _P /\ _P
M _P _P _P _P _P#_ /\ __\ _P#______P#_
M_____P#_ /\ _P#__P#_ /\ _P __\ _P#_ /__ /__ /\ __\ ______\
M__\ __\ ____ /\ __\ _P#_ /\ _P#_ /__ /\ ____ /___P#___\ ____
M /___________P#_ /__ /__ /___P#_ /___P#_ /\ _P#_ /______ /__
M__\ _P#_ /_______________________P
M #__________P /\ #_ #_
M _P _P #_ /\
M _P _P /\ /\ _P _P _P#_
M_P /__ /\ /\ /\ /\ /\ /\ /\
M #_ /\ #_
M #_ #_ #_ #_ #_ #_ _P#_
M_P#______P#_ #__P#_____ /\ _P#_ #_ /\ __\ __\ ____ /__ /__
M /_______P#_ /\ __\ _____P#_ /__ /\ _P#_ /\ _P#_ #_ /__ /__
M /___P#_____ /__ /__ /\ _P#_ /______ /____\ _P#_ /__ /\ __\
M_P#_ /__ /\ ________ /______ /\ _P#_ /________\
M #_________ #_
M #_ /\ /\ #_
M #_ /\ /\ /\ #_ #_ /\ /\
M #_ /__ __\ _P
M_P _P _P /\ _P _P
M #_ _P /\
M /\ _P#_ /\ _P#______P#_____ /__ /\ _P#_ /\ __\
M_P#__P#_ #_ /__ /__ /\ _P#__________P#__P#_____ /___P#__P#_
M #_ /\ /\ __\ __\ ____ /\ _________P#___\ _P#_ /__ /\
M____ /__ /\ __\ _P#__P#_ /\ ________ /____\ ____ /__________
M
M #_______\ /\ /\ _P /\ #_ #_ _P /\
M #_ #_ /\ #_ /\
M_P #_ _P _P _P __\ #__P#_
M #_ #_ #_ #_
M #_ #_ /\ #_
M_P _P /\ _P _P#_ /__ /___P#_ /__ /__ /__
M__\ _P#_ /\ /\ _P#__P#_ /______ /__ /__________ /\ _P#___\
M__\ ____ /\ _P#_ _P#_ #_ /\ __\ ____ /__ /______ /\ ____
M________ /__ /\ ____ /__ /\ __\ _P#__P#_ /__ /___P#_ /____\
M____ /\ ______\
M /______
M _P /\ _P
M /\ #_ _P #_ #_ #__P
M /__ /\ /\ /\ /\ /\ /\ /\
M /\ #_ /\ /\
M /\ #_ #_ _P#_ /\
M_P#_____ /__ /____\ __\ _P#_ /\ _P#__P#_ /__ /__ /\ ______\
M_P#_ /_______________P#_ /__ /__ #_ _P#___\ _P#_
M________________ /___P#_____________ /__ /____\ _P#__P#_ #_
M /\ _P#_______\ _____P#_______\
M #_______\ /\
M #_ #_ _P /\ _P #_ #_ _P
M #_ #_ #_ #_ _P /\ #_ /\ #_
M _P ____ __\ _P _P
M _P #_ #_
M #_ _P _P _P /\ #_ #_
M /\ ____ /__ /__ /__ /\ __\ _P#_ /\ _P#__P#_ /__
M /__ /______ /\ _________________P#__P#_______\ _P#_ /\
M _P ______\ ____ /\ _________P#___\ __\ __\ ____ /\
M_P#__P#__P#_ /__ /__ /\ ____ /\ ____ /\ _____P
M
M /____\ #_ #_ #_ _P
M _P /\ /\
M #_ _P #_ #_ __\ #__P /\
M #_ #_ #_ #_ #_ #_ _P
M #_ #_ /\ _P _P
M_P #_ _P#_ /\ ____ /__ /__ /________\
M_P#_ /\ _P#_ /__ /__ /__ /\ _P#_____________ /\ _P#_________
M /\ ____ /\ _P#__P#_____ /______ /\ ________
M_________P#_ /_______P#___\ _P#_ /__ /\ _P#_ /________\ ____
M__\
M /____\ _P #_ #_ _P
M #_ #_ #_ #_ #_ #_
M #_ /\ _P /\ _P _P#__P /__
M /\ /\ /\ /\ /\ /\
M /\ /\ /\
M /\ #_ /\ __\ ____
M /__ /__ /__ /\ _P#_ #_ /\ _P#_ /__ /______________ /\ _P#_
M /__________ /__ /__________ /\ _P#__P#_________
M__\ ________ /___P#__P#__P#__________P#_ /\ ____ /__ /\ _P#_
M_P#_______\ ______\
M #_____ /\
M /\ _P #_ _P _P _P /\ /\
M _P _P #_ /\ #_ #_
M /__ __\ _P _P _P
M _P _P _P
M /\ #_ /\ /\ /\ /\ /\
M /\ _P#_ /__ /__ /__ /____\ _P#_ /\ _P#_____ /\ ____
M /\ _P#_ /__________________ /__________ /\ _P#_
M #_ /__ /\ __\ ____ /\ _P#__P#______________P#_ /\ ____
M__\ _P#_ /\ _P#__P#_ /__ /\ ______\
M
M ____ #_ #_ #_ /\
M /\ /\ #_ #_ #_ _P
M_P #_ _P __\ #__P #_
M #_ #_ #_ #_ #_ #_ #_
M #_ /\ /\ /\ _P /\
M /\ /\ _P#_____ /__ /__ /\ __\ _P#_ /\
M /\ _P#_ /______ /\ ________ /\ _________P#__P#___\ ____ /\
M_____P _P _P#_ /___________________P#_ /__________
M_____P#_ /______ /\ __\ __\ _P#__P#_ /__ /__________
M __\ #__P /__ /__
M _____P #_ /\
M /\ #_ _P _P _P _P _P
M _P _P _P #_ #_ #__P /___P
M /\ /\ /\ /\ /\ /\ /\
M _P
M /\ #_ /\ /\ _P#_ /__ /__
M /\ __\ _____P#_ /\ _P#_ /__ /__ /_______P#_ /__ /__ /__ /__
M__\ __\ ____ /_______P#_ _P#___\ _P#__P#_
M /______ /______ /__ /___________________P#__P#__P#_ #_ /\
M________ #__P /__ __\ __\
M /___P#_
M _P #_ #_ _P
M /\ #_ /\ _P _P /\
M_P ____ __\ #_ _P _P
M_P #_ _P _P #_ #_ #_
M _P /\ /\ #_ _P
M _P#__P#_ /__ /_______P#__P#_ /\ /\ _P#_ /__ /____\ _P#_
M____ /___________________P#______P#__P#__P#_
M_P#_ /\ ____________ /\ __\ __\ _________P#__P#_ /\ __\ _P#_
M_P#__P#_ /__ /\ ____ /___P #__P __\ /__
M #___\ #__P ____ /___P ______\ ____ /___P
M /___P /\ /\ /\ /\ #_ #_
M _P _P _P _P _P #_ _P _P _P #_
M /\ #_ #_ __\ #__P /\ /\ #_
M #_
M /\ _P _P #_ _P
M /\ #_ _P#_____ /__ /\ _P#_____ /__ /\ _P#_
M /__ /__ /\ _P#_ /__ /__ /\ ____ /___P#__P#___\ _____P#__P#_
M /\ /\ _P#_ /\ _____P#_ /________\ ________________
M /__________________ /\ _P#_ /\ __\ _P#___\
M /__ /____\ __\ __\ __\ /__ /__ /__ #__P#__P#___\ ____
M /__ #__P#__P /___P#_ #_ #_
M /\ _P /\
M #_ _P _P#__P /__ #_
M _P /\ /\ /\ /\ /\ /\ _P
M /\ /\ #_ _P #_
M #_ /\ /\ _P#_ /__ /\ _P#_
M_P#_ /__ /\ /\ _P#_ /\ __\ _P#___\ _P#_ /\ __\ _____P#_____
M /__ /__ /___P#_ /\ _P#__P#______P#_ /\
M__\ __\ __\ _P#_ /___P#_ /\ _P#__P#_ /___P#_ /\ __\ _P#_____
M /__________ /__ __\ _____P
M__\ #_____ #__P __\ __\ #__P /___P
M /\ /\ /\ /\ /\ /\ /\ #_ _P _P
M #_ /\ /\ _P _P /\ #_ #_
M /__ __\ #_ #_ _P _P
M #_ _P /\
M /\ _P /\ #_ _P
M_P#_ /__ /\ ________ /__ /__ /\ _P _P#_ /\ ____ /\ _P#_ /\
M__\ _P#_ /______ /____\ __\ _P#_ /__ /\ _P _P#_
M /\ ____ /__ /____\ __\ _____________P#___________\ __\ _P#_
M /__ /\ _P#_ /___P __________\ ____
M_____P#_____ #__P /____\ /__ #__P#_________
M /___P#_ #_ #_
M /\ /\ _P _P _P
M _P __\ #__P _P _P /\
M /\ /\ #_ #_
M _P _P /\ #_ #_ _P
M /\ #_ /\ __\ _P#_ /____\ _P#_ /\ _P#_ /\
M_P#_ /\ _P#_ /\ __\ _P#_ /\ _P#_ /__ /\ ______\ ____ /\
M /\ _P#_ /\ _P#_ /__ /____\ __\ __\ _P#__P#__P#_ /__
M /\ _P#__P#_____ /__ /\ _P#_ /____\
M __\ /__ #__P /____\ /__ _____P __\ /__
M /__ /__ _P #_
M /\ #_ #_ /\ _P /\
M /\ /\ /\ _P _P _P /\ /___P /__ #_
M _P _P _P _P _P _P
M_P _P /\ /\ #_
M /\ #_ #_ _P _P#_ /\ __\ __\ __\ __\
M_____P#_ #_ #_ /\ _P _P#_ #_ /\ _P#_ /\ __\ _P#_ /____\
M_P#__P#_ /\ /\ _P #_ /\ _P#_ /\ __\ _P#___\
M__\ _P _P#_ /__ /\ __\ _P#__P#_ /__ /\ __\ _P#_____
M #__P __\ #__P#__P __\ __\ __\ /__
M /__ /__ #__P __\ /__ /__ /__
M /\ _P /\ #_ /\ /\ /\ _P /\
M_P _P _P #_ #_ /__
M __\ _P #_ #_ #_
M #_ /\ /\
M /\ #_ /\
M__\ _P#__P#___\ __\ _P#_ /\ _P#_ /\ /\ __\ _P#_ /\ _P#_ /\
M__\ _P#_____ /\ _____P#__P#_ /\ _P #_ /\ _P#_
M /\ __\ _P#___\ __\ ________ /__ /\ __\ _P#__P#_ /\ _P#_ /\
M_P#_ /___P /__ #__P #___\
M #__P ____ /___P __\ /__ #__P /___P
M ____ #_ #_ _P /\
M /\ _P _P /\ _P _P
M_P _P __\ #__P _P #_
M _P /\ #_
M #_ _P _P _P #_ _P
M_P _P /\ _P#__P#__P#__P#______P#_ /\ /\ /\ _P
M #_ /\ /\ _P#_ /\ __\ ____ /____\ _P#__P#_ /\ /\ _P _P
M /\ /\ _P#_ /\ _P#___\ _P#__P#__P#_ /__ /\ __\ _P#_
M_P#_ /\ _P#_ /\ _P#_ /____\
M
M __\ _P _P _P
M _P /\ _P#_ #_ _P#_ #_
M /\ #_ /___P /__ #_ /\
M /\ _P _P _P _P #_ _P _P
M_P /\ /\ /\ #_ #_
M #_ #_ /\ _P#__P#__P#__P#___\ _P#_
M /\ /\ _P _P _P#_ #_ /\ _P#_ /\ __\ ____ /__ /\ _P#__P#_
M #_ _P#_ /\ #_ /\ _P#_ /\ _P _P _P#__P#__P#_
M /__ /\ __\ _P#__P#_ /\ _P#__P#_ /\ _P#_____
M
M __\
M /\ _P _P /\ /\
M _P _P _P _P /\ _P _P _P #_ /__
M__\ _P #_
M #_ #_ #_
M /\ /\ /\ _P _P /\ __\
M_P#__P#_ /\ ________ /\ _P _P _P#_ /\ /\ _P#_ /\ __\ __\
M_P#_ /\ _P#__P#_ #_ _P _P _P _P#_ #_
M /\ _P _P#__P#_ /__ /\ __\ _P#__P#_ /\ /\ _P#_ /\ _P#_ /__
M_P
M
M #__P _P _P _P #_ #_ #_ #_
M #_ /\ #_ #_ #_ /\ _P
M __\ #__P#_ #_ #_
M /\ #_ #_ _P
M /\ #_ _P _P _P _P #_
M #_ /\ _P#__P#_ /____\ _P#_ /\ _P _P#_ #_ /\
M #_ /\ _P _P#_ /\ __\ _P#_ #_ #_ /\ _P _P /\
M _P#_ #_ /\ _P#_ #_ /__ /\ __\ _P#__P#_ #_ /\
M_P#_ #_ /\ _P#___\
M
M #__P _P _P
M_P _P _P #_ #_ #_
M _P _P _P _P /\ #__P /__ /\ /\
M /\ #_ #_ _P _P #_ #_ #_
M #_ _P _P #_
M #_ /\ /\ /\ __\ ____ /__ /\ _P#_____ /\
M_P#_ #_ #_ /\ /\ _P#_ _P _P#__P#_ /\ _P#_ #_ #_
M _P /\ #_ #_ #_ /\ /\ _P#_ #_ #_ /\ _P#_
M /\ _P#_ #_ /\ _P _P#_ /\ _P#_____
M
M /__ _P
M_P _P /\ /\ /\ /\ #_ #_
M _P _P /\ #_ /__ __\
M _P #_
M #_ #_ _P
M /\ /\ #_ #_ #_ _P#_ /__
M__\ _____P#___\ _P _P#_ #_ _P _P#_ #_ /\ _P#_ #_ /\
M_P _P#_ #_ /\ _P _P /\ #_ /\ /\ _P#_
M #_ #_ /\ /\ _P#_ /\ _P#_ /\ /\ _P#_ #_ /\ _____P
M /__
M
M ____ /\ _P _P _P _P #_
M _P#_ _P /\ #_ #_ _P _P _P
M __\ #__P#_ #_ /\ /\ #_ _P
M /\ /\ _P #_ _P _P
M _P _P _P _P
M /\ _P#__P#_ /\ ____ /__ /\ __\ _P#_ #_ /\ _P _P #_
M #_ _P#_ #_ /\ _P /\ /\ #_ /\
M /\ /\ /\ _P _P /\ /\ _P#_ /\ _P#_ /\ /\ _P#_ #_
M /\ _P#___\
M __\
M __\ _P _P #_
M /\ _P /\ /\ /\ #_
M_P _P /\ /\ #__P /__ /\ /\
M #_ _P _P /\
M #_
M_P #_ #_ _P _P#_ /__ /__ /__ /____\ _P _P#_
M /\ _P _P#_ /\ /\ _P#_ #_ /\ _P _P /\ #_ /\ _P#_
M _P /\ /\ _P#_ /\ #_ /\ #_ /\
M_P /\ _P _P#_ /\ /\ ____
M #_____ #___\
M #__P#_
M _P _P _P #_ _P /\ #_ #_ #_
M #_ #_ _P _P #_ /__ __\
M #_ #_ #_ /\ #_
M #_ _P _P /\ #_ /\ /\
M _P _P #_ #_ #_ /____\ ____
M__\ _P#___\ _P#_ #_ /\ _P _P _P /\ /\ _P#_ #_
M /\ _P _P #_ /\ #_ _P _P /\ _P#_ /\ /\
M_P #_ /\ /\ #_ /\ _P _P#_ /\ /\ _____P
M /__
M__\ __\
M /__ _P _P _P /\
M /\ /\ #_ _P _P _P /\ /\
M __\ #__P#_ /\ /\ /\ /\ #_
M #_ /\
M_P _P #_ _P #_ /\
M /\ ____ /______ /\ _P#_ #_ /\ /\ _P _P#_ /\ /\
M_P #_ /\ #_ /\ /\ /\ #_
M /\ /\ _P#_ /\ _P /\ /\ /\ #_ #_ /\ _P#_ /\ /\ _P#_
M__\
M __\ /__ __\
M ____ /\ _P /\ _P _P _P
M _P /\ #_ #_ #_ /\ #_ #_
M _P /___P /__ _P
M /\ /\ #_ _P
M /\ #_ _P /\ /\ #_
M #_ #_ #_ /\ _________P#_ /__ /___P#_ /\ /\
M_P _P#_ #_ /\ _P _P#_ /\ #_ _P /\ _P#_ /\ /\
M_P _P /\ _P#_ /\ _P #_ /\ _P#_ /\ /\
M_P#_ #_ /\ _P#_____
M #__P __\ #__P
M #__P
M #_ /\ _P _P /\ #_
M #_ _P _P #_ /\ /\ /__ __\ #_
M #_ #_ #_ /\ _P #_
M /\ #_ #_ _P _P
M_P _P _P #_ /\ __\ ________
M /\ _P#_ #_ /\ _P _P#_ #_ /\ _P _P _P /\
M #_ /\ _P _P#_ _P#_ #_ /\ __\ _P _P#_ /\ _P#_
M /\ _P /\ #_ /\ _P#_ /___P
M /__ #__P
M /__
M /__ #_ #_ _P _P _P #_ /\
M #_ #_ /\ /\ _P _P
M__\ #__P /\ /\ /\ /\ #_
M /\ _P /\ /\ #_ _P
M #_ #_ /\ _P /\
M /\ _____P#_ /\ _____P#_ /\ /\ _P#_ #_ /\ _P _P
M /\ #_ _P#_ _P _P#_ _P #_ /\ _P
M_P#_ /\ _P#_ #_ /\ #_ /\ #_ /__ /\ _P _P#___\
M
M __\ #__P#__P
M ____ _P /\
M_P _P /\ #_ /\ #_ _P _P
M_P /\ /___P /___P _P #_
M #_ _P /\
M _P /\ _P
M_P _P /\ _P _P#_______\ __\ _P#_ /\ /\ _P#_ #_
M /\ _P#_ /\ _P _P#_ /\ #_ _P /\ #_ /\ #_ #_ /\
M_P#_ /\ __\ _P#__P#__P#_ /\ _P#_ /\ /\ _P#_ /\ #_ /\ /\
M /\ _P#_____
M ____ #___\
M #__P /\ /\ #_
M _P _P _P /\ _P /\ _P#_ #_ _P
M _P _P /\ #_ /\ /__ __\ #_
M /\ _P _P #_ #_
M_P /\ #_ #_ /\ #_ #_
M #_ /\ #_ #_ __\ __\ ____ /__
M /\ /\ _P#_ #_ /\ _P#_ /\ _P /\ _P#_
M /\ _P#_ #_ /\ _P#_ /__ /\ _P#__P#__P#_ /\ _P#_ /\ _P
M #_ /\ /\ /\ _P#______P
M
M /__
M #_ _P /\
M #_ _P /\ _P _P #_ __\
M #__P /\ _P _P _P /\
M _P #_ _P /\
M _P _P #_
M /\ _____P#_ /\ ____ /\ _P _P#_ /\ _P#_ #_ /\ _P#_
M /\ #_ _P#_ /__ /\ _P#_ /\ _P#__P#__P#_ /__
M /\ _P#_ /\ _P #_ #_ /\ _P _P _P#___\
M
M
M #__P _P _P _P #_ _P #_
M #_ /\ /\ /\ #_ _P _P /\
M _P /___P /__ /\ #_
M_P _P _P #_ _P /\ #_ _P
M /\ _P _P #_ #_ #_ /\ #_
M #_ _P _P#___\ __\ __\ _P _P#_ /\ _P#_ #_
M /\ /\ _P#_ /\ #_ /\ _P _P#_ /\ _P#_ /__ /\ _P#__P#_
M /___P#__P#_ /__ /\ _P#_ /\ _P _P#_ #_ /\ _P __\ _P#_
M____
M
M /__ /\
M /\ _P _P #_ /\ #_ _P #_ /\
M_P _P #_ #_ /\ /__ __\ _P /\
M /\ /\
M #_ #_ /\
M _P _P _P#_ /\ /\ __\ _P
M_P#_ /\ _P#_ #_ /\ _P _P#_ /\ #_ #_
M #_ /\ _____P#___\ _P#__P#_______\ __\ _P#_ /\ _P#_ /\ /\
M_P _P _P _P _____P
M
M __\ _P#_
M _P _P #_ /\ #_ /\ /\
M_P /\ #_ _P #_ __\ #_
M_P _P /\ /\ /\ _P _P
M /\ /\ /\ _P #_
M_P _P /\ /\ /\ _P _P
M #_ /\ _P#__P#__P#_ /\ _P#_ #_ /\ _P _P #_ _P /\
M _P#_ /\ _P#_ /\ __\ _P#__P#_ /___P#__P#_ /\ __\ _P#_
M /\ _P _P /\ _P /\ _P _P#___\
M
M
M /__ _P #_ /\ /\ _P #_
M #_ _P /\ /\ _P _P /\ #_
M /___P /__ /\ _P /\ _P
M _P _P _P
M /\ /\ #_ #_ _P _P
M _P _P _P#__P#__P#_ /\ /\ _P#_ /\ _P _P#_
M /\ /\ _P /\ #_ /\ _P /\ /\ _________________P#__P#_
M_P#___________\ _P#_ /\ _P#_ /\ /\ _P#_ /\ _P _P#_____
M #___________\ __\
M________ #_______\ #_________ #______P /______ #_
M_P __\ /__ ____ _P _P
M /\ _P /\ _P _P /\ /\
M /\ _P #_ #_ /\ /__ __\ #_ _P
M _P #_ _P _P /\
M #_ _P _P #_ #_ /\ /\
M /\ /\ /\ #_ #_ /\ _P#_ /__ /\ /\
M_P#_ /\ _P _P#_ /\ /\ #_ /\ _P#_
M /\ _____P#_ /\ _P#__P#_______\ _P#_ /\ _P#_ #_ /\ /\
M_P _P#_ /___P /__
M __\ /__ #__P /__ /__ __\ /__ __\ #_
M_P#__P /__ /__ #__P __\ /__ _P#_
M_P /\ _P #_ /\ #_ #_
M /\ /\ _P #_ __\ #__P
M /\ _P _P /\
M _P _P #_ /\
M _P _P _P /\ _P
M #_ #_ /____\ _P#_ /\ _P _P#_ #_ /\ /\ _P _P /\ #_
M /\ /\ /\ _P#_ /________\ _________P#__P#_ /____________\
M_P#_ /\ /\ _P _P _P _P#___\
M __\ #__P __\ /__ __\ __\ #__P
M__\ #__P /__ __\ /__ #__P
M #___\ _P _P /\ _P #_ /\ #_ #_
M _P _P /\ #_ _P _P /\ #_
M /___P /__ _P _P _P
M /\ #_ #_ #_
M #_ #_ #_ #_
M _P#_ /\ __\ _P#_ /\ _P _P#_ #_ /\ /\
M_P _P /\ #_ /\ /\ /\ ______\ __\ ____ /\ _P#_ /__
M_____P#__P#_ /\ _P#_ /\ /\ _P _P#_ _P#_____
M #__P #_____ __\
M #__P#__P /__ #__P #___\ /___P #__P
M__\ /__ /__ #_ _P _P /\
M #_ #_ /\ _P _P _P /\
M_P #_ #_ /\ /__ __\ /\ #_ #_
M #_ _P /\ #_ #_ #_ #_ _P
M_P _P /\ _P /\ /\ /\
M #_ #_ _P _P _P _P _P #_ /\ _P#_ /\ _P
M_P#_ /\ /\ /\ _P #_ _P _P /\ /\ /\ _P#_ /__
M__\ __\ __\ _____P#_ /______ /__ /\ _P /\ _P _P#_ #__P#_
M /___P /______
M__\ #__P #__P /__ /__ __\ /________\ ____
M #___\ /__ #__P __\ #__P _P#_ _P
M #_ #_ _P /\ #_ _P #_
M /\ /\ _P #_ __\ #__P
M_P /\
M #_ #_ #_ _P #_ #_ #_
M_P #_ _P #_ #_
M /\ _P#_ /\ _P _P#_ /\ /\ /\ _P _P#_ _P /\ /\ /\
M_P /\ _P#__P#__P#___\ _____P#__P#_____ /__ /_______P#_ /\
M_P _P#_ #_ #___\
M __\ _____P /_______P ________ __\
M /__ __\ __\ /__ #__P ____
M /\ _P _P /\ _P _P /\ #_
M /\ _P #_ _P _P /\ #_
M /___P /__ #_ #_ _P /\ #_
M /\ _P
M /\ /\ /\ /\ #_
M _P _P _P _P#_ /\ /\ _P _P#_ /\ /\ _P _P #_ #_
M /\ _P /\ #_ /\ /\ _P#______P#___\ _P#__P#__P#_ /__
M__\ ____ /\ _P _P _P#_ #_ #_ /\ ____
M #__P /__ #__P __\
M #__P /__ #__P __\ #__P #__P __\
M /__ /___P #_ _P#_ /\ /\
M /\ _P #_ #_ /\ /\ /\ _P /\ _P
M #_ #_ /\ /__ __\ _P _P /\ /\ /\
M /\ /\ /\ /\ #_ #_
M #_ _P _P _P #_ #_ #_
M _P _P /\ /\ /\ _P#_ /\ /\
M_P _P _P#_ #_ #_ /\ /\ /\ /\ /\ _P#_ /__ /\
M_P#_ /__ /__ /__ /\ ____ /__ /\ _P#_ #_ _P#_ /\ _____P
M /__
M__\ /__ #__P /__ __\ /__ __\ #__P#__P
M /__ #___\ _P _P#_ _P
M #_ /\ /\ /\ _P #_
M _P #_ __\ #__P
M /\
M /\ #_ #_ /\ /\
M #_ /\ /\ #_ /\
M_P _P#_ #_ /\ _P#_ /\ _P#_ #_ #_ /\ _P#_ /\ /\ /\
M /\ /\ _P#_ /___P#_____ /__ /____\ __\ __\ __\ _P#_ #_
M_P#_ #_ /____\
M ____________ /__ /__ __\ #__P ________
M_P ______\ #______P __\ /__ #__P _____P /\
M _P #_ /\ /\ _P _P #_
M /\ _P /\ #_ _P _P /\ #_ /__
M_P /__ _P /\ /\ /\ /\ /\ /\ /\ /\
M /\ _P _P #_ _P
M _P _P _P /\ /\ _P
M_P /\ /\ _P _P#_ #_ /\ _P#_ #_ #_ #_ #_ #_ /\
M /\ /\ _P#_ /\ /\ _P#_ /\ _P#__P#_ /__ /__ /\ _____P#_
M____ /\ _P#_ /\ _P#_ #_ /\ ____
M
M
M /___P #_ _P#_ /\ /\
M_P /\ _P #_ /\ /\ #_ _P /\ _P
M #_ #_ /\ /__ __\ _P _P
M _P /\ #_ /\
M /\ #_ #_ #_ #_ #_
M #_ _P /\ #_ _P#_ #_ /\ _P _P#_ /\
M_P#_ #_ #_ /\ /\ _P#_ /\ _P _P /\ /\ _P#_ /\ _P#__P#_
M /__ /___P#__P#__P#_ /\ _P#_ /\ /\ _P#_ /\ _____P
M
M
M /______ _P _P#_ _P /\
M #_ /\ #_ /\ /\ #_
M _P #_ __\ #___\
M /\ /\ #_ #_
M _P /\ _P _P _P
M _P #_ /\ #_ #_
M /\ /\ _P#_ /\ /\ #_ #_ /\ /\ _P _P#_ /\ _P /\ /\
M_P#_ #_ /\ _P#_____ /\ _P#__P#_ /___P#_ /\ _P#_ /\ _P#_ /\
M /____\
M
M #___\ _P /\
M _P #_ #_ /\ _P _P #_ #_
M _P /\ #_ _P _P /\ #_ /___P
M /__ #_ _P _P _P /\
M _P #_ #_ #_ _P /\ /\ #_
M #_ #_ #_ #_ #_ _P _P
M /\ #_ #_ /\ /\ _P#_ #_ /\ _P#_ #_ /\ /\ _P _P#_
M /\ _P _P#_ /\ /\ #_ /\ _P#__P#_ /_______P#__P#_ #_ /\
M_P#_ /\ _P#_ /\ /\ ____
M
M #_____
M /\ #_ #_ #_ _P /\ /\ _P
M /\ _P _P#_ /\ #_ _P /\ _P #_
M #_ /\ /__ __\ /\ /\ #_ #_
M #_ #_ #_
M_P /\ /\ _P /\
M #_ _P /\ /\ _P _P#_ /\ _P _P#_
M /\ /\ _P _P#_ #_ /\ _P#_ /\ /\ _P#_ #_ /\ _P#_ /\ _P#_
M_P#__P#_ /__ /\ __\ _P#_ /\ _P#_ /\ _____P
M
M
M #_____ #_ _P _P /\
M #_ /\ #_ /\ /\ _P
M _P #_ __\ #__P
M /\ /\ /\ /\ #_
M _P /\ _P _P _P _P #_
M #_ #_ _P _P _P /\ /\ _P
M_P#_ /\ _P _P#_ /\ /\ _P _P#_ #__P#_ /\ _P#_ /\ _P _P#_
M /\ _P#_ /__ /___P#__P#_ /__ /\ __\ _P#_ /\ _P#_ /\ ______\
M
M
M ______\ _P /\ /\
M /\ #_ #_ /\ _P _P #_ #_
M /\ /\ #_ _P _P /\ #_ /___P /__
M_P #_ /\ /\ #_ #_ _P
M _P #_ #_ _P /\ #_
M #_ _P _P _P _P
M _P /\ /\ _P#_ /\ _P _P#_ /\ /\ _P _P#_ /\ _P#_ /\
M_P#_ /\ /\ _P#_ #_ /\ _P#_ /\ _P#__P#_ /__ /\ __\ _P#_ /\
M_P#_ /\ __\ ____
M
M #______P #_ /\
M #_ #_ _P /\ /\ _P /\
M _P _P#_ #_ _P /\ _P #_
M #_ /\ /__ __\ _P /\
M /\ #_ #_ #_ /\ #_
M _P _P #_ #_ #_
M _P _P _P _P /\ _P _P#_ /\ _P#_ /\ /\ _P
M_P#_ /\ _P#_ /__ /\ _P#_ /\ _P#_ #_ /\ _P#_ /\ __\ _P#_ /__
M /\ __\ _P#_ /\ _P#_ /\ __\ _____P
M
M #_
M_____P _P #_ _P _P _P /\
M #_ /\ #_ /\ /\ _P /\
M _P #_ __\ #__P _P #_ #_
M #_ /\ /\ #_
M #_ /\ /\ #_ #_ #_ #_
M #_ /\ _P _P#_ /\
M_P#_ /\ /\ _P _P#_ /\ _P#_ /__ /\ __\ _P#_ /\ /\ _P#_ #_
M #_ /___P#_ /__ /\ _____P#__P#_ /\ _P#_ /\ _P#___\
M
M
M /________\ /\ _P /\ /\
M #_ #_ /\ _P _P #_ #_
M /\ #_ #_ _P _P /\ #_ /___P /__
M /\ /\ _P _P
M_P /\ #_ #_ _P
M _P _P _P #_ #_ _P _P
M_P _P#__P#_ /\ _P#_ /\ _P _P#_ /\ _P#_ /\ _P#_ /\ _P#_
M_P#_ /\ /\ _P#_ /_______P#_______\ _____P#___\ __\ _P#_ /\
M_P#_____
M
M #__________P #_ #_ /\
M #_ #_ #_ _P /\ /\ _P /\
M _P _P#_ _P /\ _P #_ #_
M /\ /__ __\ _P _P _P #_ #_ #_
M #_ #_ /\ #_ /\
M /\ /\ #_ _P _P /\
M_P /\ /\ #_ #_ /\ _P#_ /\ _P _P#_ /\ _P#_
M /\ _P#___\ _P#__P#_ /\ __\ _P#_ /__ /\ __\ ____ /\ _____P#_
M______________\ __\ _____P
M
M ____________ /\
M _P #_ #_ _P _P /\ /\ #_
M /\ #_ /\ /\ _P /\ /\
M _P #_ __\ #__P #_ #_
M /\ _P _P _P _P
M #_ #_ _P _P #_
M #_ #_ #_ #_ #_ #_ /\ _P#_
M /\ _P#_ /\ _P#_ /\ _P#__P#_ /_______P#_ /\ __\ _P#_________
M____ /_______P#______P#__P#__P#______P#___\
M
M #_________
M______\ _P #_ /\ /\ /\ #_
M #_ /\ _P #_ #_ /\
M #_ _P _P /\ #_ /___P /__
M /\ /\ _P #_ #_
M /\ /\ /\ /\
M #_ _P /\ _P _P _P _P /\
M /\ #_ /\ _P#_ /\ _P#_ /\ _P _P#_ /\ _P#_ /___P#_ /______
M__\ ______\ __\ _P#__________________P#_________ /\ _P#_____
M____________________________________________________________
M____________________________________________________________
M_________________P#_ #_ _P #_ /\ /\ /\
M_P #_ #_ _P _P #_ /\ _P /\ /\
M_P _P#_ _P _P /\ _P #_ #_ /\
M /__ __\ /\ /\ /\ #_
M /\ /\ /\ _P _P _P
M _P _P /\ #_ #_
M /\ /\ #_ /\ _P#_ /\ /\ _P#_ /\ _P#_ /\ _P#_
M /__ /\ _____P#_ /\ _P#__P#___________\ __\ _P#_ /___P#_____
M /__ /______________________________________________________
M____________________________________________________________
M_____________________________P _P _P _P /\
M /\ /\ _P /\ _P
M /\ #_ /\ _P _P /\
M_P #_ __\ #___\ _P /\ /\
M_P /\ #_ _P _P
M /\ /\ /\ #_ /\ #_ _P
M _P _P _P _P #_ /\ _P#_ /\ _P#_
M /\ _P#__P#_ /\ _P#_ /__ /__ /______________ /\ _P#__P#__P#_
M_P#______P#__P#_ /__ #_ /\ _P#_ /___P#__P#__P#__P#_ /__ /\
M_P#__P#_ /__ /\ __\ _P#__P#_ /__ /\ _P#_ /\ #_ /\ _P#_
M /\ _P _P _P #_ /\ /\ #_
M /\ /\ #_ #_ _P _P #_ /\ #_ #_
M #_ /\ /\ _P _P #_
M #_ _P _P /\ #_ /___P /__ /\
M #_ /\ #_ /\
M /\ _P _P _P
M /\ #_ #_ /\ _P #_ /\
M /\ _P _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /____\ _P#_ /\ ____
M /______ /\ _P#__P#__P#_ /\ _P#__P#_ /____\ _P#___\ _P#__P#_
M /__ /__ /__ /\ _P#__P#_ /\ _P#_ /\ _P#__P#_ /__ /__ /\
M #_ _P _P /\ /\ #_
M #_ #_ #_ _P #_ _P _P /\ _P
M _P #_ _P #_ #_ /\ /\ /\
M _P#_ #_ _P _P /\ _P #_ #_ /\ /__
M __\ /\ /\ _P
M #_ _P _P #_ #_
M #_ /\ #_ #_ _P _P _P _P _P
M #_ /\ _P#_ /\ _P#_ #_ /\ _P#_ /__
M /\ __________\ _P#__P#_ /__ /___P#_ /__ /\ _P#__P#_____ /\
M______\ _____P#_ /__ /__ /__ /\ _P#__P#_ /\ __\ __\ __\ _P#_
M /__ /\ __\ _P#_ /\ /\ _P /\ _P#_
M_P#_ #_ /\ _P /\ _P /\ /\
M #_ /\ /\ /\ /\ _P
M #_ #_ #_ _P /\ _P
M #_ __\ #__P _P /\ /\ _P
M #_ _P _P /\ #_ /\ /\
M /\ /\ /\ _P /\
M /\ #_ _P _P#_ /\ _P#_ /\
M_P#__P#_ /\ _P#_ /\ __\ _P#_ /\ _P#__P#_ /__ /___P#_ /__ /__
M________ /__ /_______P#___\ _P#_ /__ /\ /__ /\ __\ _P#_ /\
M__\ _P#_ /\ _P#__P#_ /\ __\ _P#_ #_ /\ _P#_ #_
M _P _P _P _P /\ /\ /\ #_ #_
M /\ #_ #_ #_ _P #_ #_ #_
M #_ /\ /\ _P _P _P /\ #_
M _P _P /\ #_ /___P /__
M /\ /\ /\ #_
M _P _P _P #_ /\
M #_ _P _P _P _P _P #_ /\ /\
M_P /\ /\ _P#_ /\ _P#_ /\ _P#_ /\ _____P#__P#_ /\ _P#_ /__
M /\ __\ ______\ __\ _P#_ /___P#__P#__P#_ /\ _P#__P#_ /\ /\
M /\ _P#_ /__ /\ __\ _P#__P#__P#__P#_ /\ __\ _P#_ /\
M _P /\ _P #_ #_ /\ #_ _P #_
M #_ _P _P /\ _P
M_P _P _P #_ #_ /\ /\ /\
M /\ #_ _P _P /\ _P #_ #_ /\ /__
M__\ _P /\ /\ _P _P _P
M _P #_ #_ #_ _P #_
M _P _P _P /\ /\
M #_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#_
M_P#_ /\ _P#_ /__ /\ ____ /___P#_____ /______ /\ ____ /\ ____
M_P#__P#_ /\ _P#_ /\ _P#__P#_ /\ __\ _P#__P#_ /\ _P#__P#___\
M_P#__P#_ /\ /\ /\ _P #_ /\ #_ _P#_
M #_ _P _P /\ /\ _P /\ /\ /\
M #_ /\ /\ /\ /\ _P #_
M #_ #_ _P /\ _P
M #_ __\ #__P _P #_
M /\ /\ #_ _P _P /\ #_ #_
M #_ _P /\ /\ /\ #_
M #_ _P #_ _P _P _P _P#_ /\ _P#_
M /\ _P#_ /\ __\ _P#_ /\ _P#_ /__ /\ __\ _P#__P#__P#__P#__P#_
M /___P#_ /______ /______ /\ _P _P _P _P#_ /\ __\ _P#__P#_
M /__ /___P#_ /\ _P#___\ _P _P _P #_
M _P /\ #_ #_ /\ /\ #_
M /\ #_ #_ _P #_ #_ #_ #_
M /\ /\ _P _P _P /\ #_
M_P _P /\ #_ /___P /__ _P
M_P /\ _P _P _P
M _P /\ _P _P _P #_
M #_ _P #_ _P#_ /\ _P
M _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#_ /\ _P#_ /\ /\ __\ _P#_
M__\ _P#__P#_____ /\ _P#_____ /\ _P#_ /\ /\ __\ _P#_ /\ _P#_
M /\ __\ _P#__P#_ /__ /\ _P#_ /__ /\ _P#_ /__ /\ _P
M #_ /\ /\ /\ _P #_ /\ #_ /\ _P#_ #_
M #_ _P _P _P _P _P /\ _P _P
M _P _P #_ #_ /\ /\ /\ /\
M #_ _P _P /\ _P #_ #_ /\ /__ __\
M #_ #_ #_ /\ _P
M #_ #_ #_ #_
M_P #_ /\ /\ /\ /\ _P /\ #_ #_ #_
M _P #_ _P#_ /\ _P#_ /\ _P#_ /\ _P#___\ _P#_
M /\ /\ _P _P#__P#_ /___P#__P#_ /______ /__ /____\ __\ __\
M__\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ __\ _P#_ /___P#_ /__
M #_ #_ #_ /\ #_ /\
M _P /\ /\ #_
M /\ /\ /\ /\ _P #_
M #_ #_ _P /\ _P #_
M __\ #___\ /\ /\ /\ _P
M #_ #_ #_ /\ _P /\
M /\ _P _P _P /\
M #_ #_ _P _P#_ /\ _P#_ /\ _P#_
M /\ _P#_ /\ _P#_ /\ /\ _P _P _P#_ /___P#__P#__P#_ /\ ____
M /__ /\ _P#___\ __\ _P#_ /\ _P#_ /\ _P#__P#__P#__P#_ /\ __\
M_P#_____ /\ __\ __\ /\ _P#_ /\ _P _P _P#_
M /\ _P#_ #_ /\ /\ #_ #_ #_ #_ /\
M #_ #_ #_ _P _P #_ #_ #_ #_ /\
M /\ _P _P _P /\ #_ _P
M _P /\ #_ /___P /__ #_ #_ /\
M #_ /\ /\ /\
M #_ #_ /\ #_ _P /\
M #_ #_ /\ #_ _P#_ _P /\
M #_ /\ _P#_ /\ _P#_ /\ __\ _P#__P#_ /\ _P#_ /\ _P#_ #_ /\
M_P#_ /________\ __\ ____ /___P#_ /\ _P#_ /\ _P#_ /\ /\ _P#_
M /\ _P#_ /\ __\ _P#__P#_ /\ __\ _P#_ /\ /\ /\
M _P #_ #_ /\ _P _P#_ #_ #_ #_
M _P _P /\ _P
M_P _P #_ #_ /\ /\ /\ /\ #_
M _P _P /\ _P #_ #_ /\ /__ __\
M /\ /\ /\ _P _P #_ #_
M _P _P /\ _P /\ _P _P
M /\ /\ #_ #_
M _P #_ _P#_ /\ _P#_ /\ __\ __\ _P#_ /\ _P#_
M #_ /\ _P#_ /\ _P#_ /___P#_ /\ __\ ____ /\ _P#_ /\ _P#_ /\
M_P#_ /\ /\ _P#_ /\ _P#__P#___\ _P#__P#_ /__ /\ _P#__P#__P
M_P#_ #_ /\ _P #_ #_ _P #_ /\
M /\ /\ /\ /\ /\ /\ #_ #_
M /\ /\ /\ _P #_ #_
M #_ _P /\ _P #_
M __\ #__P#_ #_ #_ #_
M /\ /\ /\ #_ #_ #_
M #_ _P#_ #_ _P /\ #_ /\ /\ #_
M _P #_ _P _P#_ /\ _P#_ /\ _P#_ /\
M_P#__P#_ /\ _P#__P#_ /\ _P#_ /\ _P#_ /__ /\ _P#_ /____\ _P#_
M____ /__ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /\ _P#__P#_ /__
M /\ _P#_ #__P#_ /\ _P #_ #_ /\ _P#_
M /\ _P #_ #_ #_ /\ /\ #_ #_ /\
M #_ #_ _P _P#_ #_ #_ #_ /\
M /\ _P _P _P /\ #_ _P
M_P /\ #_ /\ #__P /__ /\ /\ _P
M /\ _P _P _P _P
M _P /\ /\ _P
M /\ /\ #_ _P#_ _P /\
M /__ /\ _P#_ /\ __\ _P _P#_ /\ _P#_ /__ /\ _P#_ /\ _P#_ /\
M_P#___\ _P _P#__P#_ /\ _P#__P#_ /\ _P#_ /\ __\ _P#_ /\ _P#_
M /___P#__P#_ /__ /\ ____ /__ #_ #_ #_ /\ /\ _P#_
M /\ #_ /\ #_ _P _P#_ #_
M_P _P _P _P /\ _P _P
M _P #_ #_ /\ /\ /\ /\ #_
M_P _P /\ _P #_ /\ #_ /__ __\
M _P _P #_ #_ #_ #_ /\
M #_ #_ #_ #_ #_
M #_ #_ #_ /\ _P #_ #_ #_
M_P #_ #_ /\ _P#_ /\ _P#__P#_ /\ _P#_ /\ /\
M_P#_ /\ _P#_ /\ /\ _P#_ /\ __\ _P#_ /\ __\ _P#_ /\ __\ _P#_
M /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ ____ /__ /__ /__ /\
M _P#_ /\ /\ /\ _P#_ #_
M /\ /\ _P /\ /\ _P /\ /\ /\ #_ #_
M #_ /\ /\ /\ _P #_ #_
M #_ _P /\ _P /\
M__\ #__P _P _P /\ _P
M_P /\ #_ _P _P _P
M /\ _P /\ #_
M /\ #_ #_ _P _P#_ /\ _P#_ /\ __\ _P#__P#_
M /__ /\ _P#_ /\ /\ _P#_ /\ _P#_ /\ _P#_ _P _P#_ #_ /\
M_P#_ /\ __\ _P#_ /\ _P#__P#_ /\ _P#__P#_ /___P#_ /__ /__ #_
M /\ /\ _P#_ #_ _P _P#_ _P /\ /\ _P
M #_ /\ /\ #_ #_ #_ #_
M #_ #_ #_ /\ /\
M _P _P _P /\ #_ _P _P
M /\ /\ /\ /___P /__ /\
M _P #_ #_ /\ /\ /\
M /\ /\ #_ #_ #_ /\ /\
M #_ /\ /\ #_ /\ #_
M /\ _P#_ /\ _P#_ /__ /\ _P#_ /\ __\ _P#_ /\ _P#_ #_ /\ _P#_
M /\ _P /\ _P _P _P#_ /\ _P#_ /__ /\ _P#_ /\ _P#__P#___\
M_P ____ /\ _P#___\ __\ _P#_ /\ _P #_ /\ _P _P
M /\ /\ _P #_ #_ /\ _P#_ _P #_
M_P _P _P _P _P /\ /\ /\ /\ _P _P
M_P #_ #_ /\ /\ /\ /\ #_ _P
M _P /\ _P /\ /__ __\ _P _P _P
M /\ #_ #_ #_ /\ _P /\ _P
M _P _P /\ #_ _P _P _P _P _P
M /\ _P /\ #_ #_
M_P #_ _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#_ /\ _P#_ /\
M_P#_ #_ /\ _P #_ #_ /\ #_ /\ _P#_ /\ _P _P#_ /\ _P#_
M /\ __\ _P#_ /\ _P#__P#_ /__ /___P#_ /\ _P#_ /__ #_
M #_ _P _P #_ /\ /\ _P
M /\ _P /\ /\ /\ /\
M /\ /\ /\ _P #_ #_ #_
M _P /\ _P _P /\ _P __\
M #__P /\ /\ _P #_ #_
M
M_P _P /\ /\ /\ #_ /\ /\
M _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ __\
M_P#_ /\ _P#_ /\ _P#_ #_ /\ /\ _P#_ _P _P#_
M /\ _P#_ /\ _P#_ /\ __\ _P#_ /\ _P#__P#__P#_ /\ _P#_ /\ __\
M_P#_ /\ _P#_ #_ /\ _P#_ /\ _P #_ /\
M _P#_ /\ /\ #_ #_ #_ #_ #_
M _P _P _P _P #_ #_ #_ /\ /\
M _P _P _P /\ #_ _P _P
M /\ _P /___P /__ #_ #_
M /\ /\ /\ /\ _P _P
M #_ #_ #_ #_ #_ #_ #_ _P
M _P /\ /\ _P #_ _P#_ /\
M__\ _P#_ /__ /\ _P#_ /\ __\ _P#_ /\ _P#_ /\ /\ _P _P#_ /\
M_P /\ _P _P _P#_ /\ _P#_ /\ __\ _P#_ /\ __\ _P#_ /__
M /\ __\ _P#_ /\ _P#_ /\ _P /\ /\ /\ _P#_ /\
M #_ /\ _P _P _P _P /\ /\
M _P _P _P _P /\ _P _P
M #_ #_ /\ /\ /\ /\ #_ _P
M_P /\ _P #_ _P /__ __\ /\ /\ /\
M_P /\ /\ /\ #_ #_ _P _P
M_P #_ /\ _P _P
M_P #_ /\ /\ /\ /\ #_ #_ /\
M _P #_ /\ _P#_ /__ /\ _P#_ #_ /\ _P#_ /\ _P#_ /\
M /\ _P _P _P#_ /\ /\ _P _P#_ /\ /\ _P#_ /\ __\ _P#_
M /\ __\ _P#_ /__ /\ __\ _P#___\ __\ _P#_ /\ _P#_ /\
M_P#_ /\ _P#_ /\ _P #_ #_ /\
M _P /\ #_ /\ /\ /\ #_ #_ #_
M #_ /\ /\ _P #_ #_ #_
M _P /\ #_ _P _P _P __\ #_
M_P _P _P /\
M /\ _P
M #_ #_ #_ #_ _P _P#_ /\
M _P #_ /\ #_ /\ _P#_ /__ /\ _P#_ /__ /\
M_P#_ /\ _P#_ /\ /\ _P /\ _P _P#_ /\ _P _P#_ /\ /\
M_P _P#_ /\ _P#_ /\ __\ _P#_ /__ /\ __\ _P#__P#_ /\ _P#_ /\
M_P#_ _P _P _P /\ _P /\ _P #_
M #_ _P /\ #_ #_ #_ #_
M #_ _P #_ #_ /\ /\
M_P _P _P /\ #_ _P _P#_
M _P /___P /___P _P _P _P
M /\ #_ /\ /\ #_ /\ /\ /\ /\
M #_ /\ _P#_ /\ /\
M /\ _P _P /\ /\ _P _P #_ #_ #_ /__
M /\ _P#_ /__ /\ _P#_ /\ _P#_ #_ /\ _P _P#_ /\ _P#_ /\
M_P _P#_ /\ _P _P#_ /\ _P#_ /\ __\ _P#_ /__ /\ __\ _P#_
M_P#_ /\ __\ _P#_ /\ _P#_ /\ _P /\ #_ /\ #_ /\ #_
M /\ _P #_ /\ /\ /\ _P _P _P#_ /\
M _P _P /\ /\ /\ /\ _P _P
M #_ #_ /\ /\ /\ /\ #_ _P _P
M #_ #_ _P /__ __\ #_ #_ #_
M #_ #_ _P _P _P
M_P _P _P #_ #_ #_ #_
M #_ /\ /\ #_ /\
M #_ /\ /\ _P#_ /__ /\ _P#_ /\ /\ _P#_ /\ _P _P#_
M /\ _P _P#_ /\ _P#_ #_ /\ _P _P#_ /\ _P#_ /\ __\ _P#_
M /__ /\ __\ _P#__P#_ /____\ _P#_ /\ _P#_ _P
M #_ _P#_ _P #_ /\ #_
M_P _P #_ /\ /\ /\ /\ /\ #_
M /\ /\ _P #_ #_ #_
M _P /\ #_ #_ _P _P __\ #__P
M /\ _P _P /\ #_ #_
M /\ /\ /\ /\ #_ #_ _P
M /\ _P /\ /\ #_ #_
M _P _P #_ #_ /\ #_ /\ /\ _P#_ /__ /\ _P#__P#_ /\
M_P#_ /\ /\ _P#_ #_ /\ _P _P#_ /\ _P#_ #_ /\ /\ _P#_ /\
M_P#_ /\ __\ _P#_ /__ /\ __\ _P#__P#__P#__P _P#__P#_ /\ _P#_
M /\ /\ _P /\ /\ /\ _P /\ _P #_ /\
M_P _P _P#_ _P #_ #_
M _P _P _P #_ #_ /\ /\ _P
M _P _P /\ #_ #_ _P#_ /\
M_P #__P /__ /\ #_ /\
M_P _P _P _P /\
M_P /\ #_ #_ #_ /\
M _P _P /\ /\ #_ #_ /\ _P#_ /__
M /\ _P#__P#_ /\ _P#_ #_ /\ _P#_ #_ /\ _P _P#_ #_ /\ _P#_
M /\ /\ _P#_ /\ _P#_ /\ __\ _P#_ /__ /\ __\ _P#__P#__P#_ /\
M_P#__P#_ /\ _P#_ /\ _P _P /\ /\
M #_ /\ _P #_ _P#_ /\
M _P _P _P _P _P /\ /\ _P _P #_
M #_ /\ /\ /\ /\ #_ _P
M /\ #_ _P #_ /__ __\ _P _P _P _P
M _P _P /\ #_ #_ #_
M /\ /\ _P #_ #_ #_ _P#_ /\ _P
M _P /\ /\ #_ #_ /\
M #_ /\ _P#_ #_ /\ _P#_ /\ __\ _P#_ /\ _P _P#_ /\ _P
M_P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#_ /__ /\ __\
M_P#___\ _P#_ /__ /___P#_ /\ _P#_ /\ _P _P /\ _P #_
M _P#_ _P /\ _P #_ #_ #_ #_
M_P #_ /\ /\ #_ #_
M /\ /\ _P #_ #_ #_
M_P /\ /\ #_ #_ _P #_ __\ #__P
M #_ /\ _P _P
M #_ #_ _P _P _P
M #_ /\ _P /\ /\ #_
M _P /\ #_ /\ #_ #_ /\ _P#_ /\ _P#_ /__ /\ _P#_ /\
M_P _P#_ /\ _P _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ /\ _P#_ /\
M_P#_ /__ /\ __\ _P#_ /\ _P#_ /__ /___P#_ /\ _P#_ /\ __\ _P
M /\ _P #_ /\ _P /\ _P #_ _P #_
M_P _P#_ #_ #_ #_ #_ #_ #_
M_P _P #_ #_ /\ /\ _P
M_P _P /\ #_ _P /\ #_
M /___P /__ #_ #_ _P _P _P _P #_
M /\ #_ #_ /\ #_ /\
M /\ /\ /\ _P /\ #_ #_
M /\ _P _P /\ /\ #_ #_ /\ _P#_ /\ __\
M_P#_ /\ __\ _P#_ /\ _P#_ /\ /\ _P#__P#_ /\ _P#_ /\ _P#_ /\
M_P#_ /__ /\ __\ _P#__P#_ /\ __\ _P#___\ __\ ____ /__ /\ _P#_
M_P#_ /\ __\ _P#_ #_ /\ _P#_ /\ #_ /\ #_
M _P #_ #_ /\ #_ _P#_ /\ /\ _P
M _P /\ /\ /\ _P _P #_
M #_ /\ /\ /\ /\ #_ _P _P /\
M /\ #_ #_ /\ /__ __\ /\ /\ #_
M _P _P _P /\ _P
M_P _P _P _P #_ _P #_ #_ _P
M _P /\ #_ /\
M #_ /\ _P#_ /\ _P#_ /__ /\ _P#_ /\ _P#__P#_ /\ _P#__P#_ /\
M__\ __\ _P#_ /\ _P#_ /__ /\ __\ _P#__P#_ /__ /\ __\ __\ __\
M_P#_ /__ /\ _P#__P#_ /__ /\ _P#_ _P /\
M_P#_ _P#_ #_ #_ _P#_ /\ #_
M /\ /\ /\ /\ /\ #_ /\
M /\ _P #_ #_ #_ _P
M /\ /\ #_ /\ __\ #___\ #_ #_
M _P #_ /\ #_
M #_ #_ /\ /\ _P /\
M /\ _P _P /\ /\ #_
M_P /\ #_ /\ #_ #_ /\ _P#_ /\ _P#_ /\ __\ _P#_ /\ _P#_
M /\ __\ _P#_ /\ __\ _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#__P#_ /__
M /\ __\ _P#_ /\ _P#__P#_ /\ __\ _P#_ /__ /\ _P#_ /\ _P /\
M /\ _P /\ _P #_ _P #_
M #_ #_ /\ _P _P #_ _P
M_P _P _P #_ #_ /\ /\ _P _P
M _P /\ #_ _P /\ /\ /\ /__
M_P /__ /\ /\ /\ /\ #_ _P #_
M _P _P /\ _P _P /\ #_
M #_ #_ #_ #_ _P
M #_ _P /\ /\ #_ #_ /\ _P#_ /\ _P#_ /\
M_P#_ /__ /\ __\ _P#_ /\ _P#_ /\ __\ _P#__P#_____ /\ ________
M /\ _P#__P#_ /__ /__ /\ __\ _____P#__P#_____ /\ ____ /__ /\
M_P#_ /\ _P#_ #_ /\ _P#_ _P #_ /\ #_
M_P #_ #_ /\ _P /\ #_ /\ _P _P /\
M_P _P _P /\ _P #_ #_
M /\ /\ /\ /\ #_ #_ _P _P /\ /\
M /\ /__ __\ /\ #_
M_P #_ #_ #_ #_ #_
M /\ _P #_ #_ /\ _P
M #_ _P _P /\ /\ #_ /\ #_
M /\ _P#_ /\ _P#__P#_ /__ /\ __\ _P#_ /__ /\ __\ __\ _P#__P#_
M /\ _P#___\ _P#_ /\ _P#__P#_ /___P#_ /____\ ____ /\ _P#__P#_
M /____\ _P#_ /\ _P#_ /\ _P#_ /\ _P #_ _P #_
M _P#_ /\ #_ #_ /\ #_ /\
M /\ #_ #_ #_ #_ /\
M /\ _P #_ #_ #_
M /\ #_ _P _P /\ __\ #__P /\
M /\ /\ /\ _P /\ /\ /\
M _P /\ /\ /\ /\ #_ /\
M #_ #_ #_ /\ #_ _P
M /\ #_ /\ #_ /\ _P _P#_ /\ _P#_ /__ /\ __\ __\ _P#_ /\
M__\ _P#__P#__P#_ /___P#_ /\ _P#__P#_ /___P#______P#_____ /\
M__\ _P#_ /___P#__P#_ /\ _P#_ /__ /\ _P#_ /\ _P#_ /\
M_P#_ #_ /\ /\ _P /\ /\ _P#_
M /\ #_ /\ _P #_ _P #_ #_ #_ _P
M #_ #_ /\ /\ _P _P
M_P /\ /\ #_ #_ _P _P /\ _P#__P
M /__ /\ /\ _P _P /\
M_P /\ _P #_ #_ #_
M #_ #_ #_ #_ _P _P _P /\
M _P _P#_ /\ #_ /\ _P#_ /\ _P#_ /__ /\
M__\ __\ _P#___\ __\ _P#__P _P#_ /___P#______P#__P#__P#__P#_
M /\ _P#__P#_ /\ __\ __\ _____P#__P#_ /__ /__ /__ /\ _P#_ /\
M_P#_ /\ _P _P#_ /\ #_ /\ #_ /\
M /\ #_ /\ /\ /\ _P /\
M_P /\ /\ /\ /\ _P #_ #_ /\
M /\ /\ /\ #_ _P /\ #_
M /\ _P /__ __\ _P /\ /\ /\ /\
M _P /\ _P /\ /\ _P
M_P /\ /\ /\ /\ #_ #_ #_ #_
M_P /\ #_ _P /\ /\ _P
M_P#_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /\ _P#__P#__P#_ /___P#_ /\
M_P#__P#__P#_ /\ ______\ _P#__P#___\ __\ ____ /\ _P#_ /__ /__
M /__ /\ __\ _P#_ /\ _P#_ /\ /\ _P#_ _P /\ _P
M_P#_ #_ _P#_ /\ _P /\
M /\ /\ /\ /\ #_ #_ /\
M _P #_ #_ #_ _P /\
M /\ #_ #_ #_ _P #___\ #___\ /\
M_P _P #_ _P /\
M #_ /\ #_ #_ #_ #_
M _P _P _P #_ _P
M #_ /\ /\ /\ _P#_ /\ _P#_ /\ _P#__P#__P#__P#_ /___P#__P#_
M_P#______P#_ /\ _P#__P#_ /__ /___P#_ /\ _____P#_ /\ __\ __\
M_P#_ /__ /__ /__ /__ /\ __\ _P#_ /\ _P#_ /\ _P _P
M #_ /\ _P /\ /\ _P /\ _P
M_P /\ #_ /\ _P #_ _P #_ #_ _P _P
M_P _P #_ /\ /\ _P _P _P
M_P /\ /\ #_ /\ _P #__P /__
M _P _P _P #_
M /\ _P /\ /\ /\ /\ /\ /\ /\ /\
M /\ #_ /\ _P _P /\ /\
M _P#_ _P /\ _P#_ #_ /\ _P#_ /\ _P#_ /\
M_P#_ /__ /\ _P#__P#_ /\ _P#_ /___P#__P#_ /__ /___P#___\ __\
M_P#_ /____\ __\ __\ _____P#_ /__ /__ /\ __\ _P _P#_ /\ _P#_
M /\ _P _P /\ #_ _P #_ #_ #_ /\ /\
M _P#_ /\ _P /\ _P _P
M_P /\ /\ _P #_ #_ /\
M /\ /\ _P /\ /\ /\ #_
M /\ /__ __\ #_ /\ /\ /\
M #_ _P #_ _P _P
M #_ #_ #_ #_
M _P /\ #_ _P #_ _P _P _P#_ /\
M_P#_ /\ _P#_ /__ /__ /__ /\ _____P#__P#___\ _P#__P#_____ /__
M__\ _P#_ /\ __\ __\ ____ /\ _P#__P#__P#_ /\ ____ /__ /\ __\
M_P#__P#_ /\ _P#_ /\ _P /\ #_ /\ _P #_ /\
M /\ _P _P#_ _P /\ _P#_ /\
M #_ /\ /\ #_ #_ #_ #_ /\
M _P #_ #_ #_ #_ _P _P /\ /\
M /\ #_ _P /\ __\ #__P#_ #_ _P
M_P _P #_ _P
M #_ _P #_ /\ #_ _P
M_P#_ #_ _P _P /\ /\ #_ #_ /\
M_P /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#__P#_ /\
M____ /\ _P#_ /__ /\ ____ /____\ __\ _P#_ /__ /___P#__P#_____
M /__ /__ /__ /\ _P#__P#_ /\ _P#_ /\ __\ _P#_ /\
M #_ /\ /\ /\ _P _P _P
M /\ #_ #_ #_ #_ #_
M_P _P #_ /\ /\ /\ _P _P _P
M /\ #_ _P #_ /\ _P#__P /__
M /\ /\ /\ /\ /\ #_ #_ _P _P
M #_ #_ /\ /\ #_ /\ _P /\
M #_ #_ _P#_ /\ #_ #_
M #_ #_ _P#_ /\ _P#_ /\ _P#_ /\ __\ __\
M__\ _P#__P#_ /__ /\ _P#_____ /\ __\ _P#_ /__ /\ __\ _P#_____
M /\ _P#__P#__P#_ /\ _P#_ /__ /\ _P#__P#_ /\ __\ _P#_ /\ _P#_
M _P /\ /\ _P#_ /\ _P /\ _P #_
M /\ _P#_ /\ _P /\ _P#_ #_ _P
M /\ /\ /\ /\ _P #_ #_ /\
M /\ /\ #_ _P _P /\
M_P /__ ____ #_ #_ _P
M /\ #_ #_ _P
M /\ /\ #_ #_ #_ #_ #_ #_ #_ #_
M _P #_ /\ /\ _P _P _P#_ /\ /\
M_P#_ /__ /\ _P#_ /\ _P#__P#_ /__ /____\ __\ _P#___\ ______\
M__\ __\ _____P#_ /\ ____ /__ /__ /\ ________ /__ /___P#_ /__
M /\ _P#_ /\ _P#__P#_ /\ _P /\ _P /\
M _P #_ _P _P#_ /\
M #_ /\ /\ /\ /\ #_ #_ /\
M_P _P _P #_ #_ #_ _P /\ #_
M /\ #_ /\ _P _P #___\ #__P /\ /\ /\
M #_ #_ _P /\ /\ /\
M /\ #_ /\
M /\ /\ /\ #_ #_ #_ /\
M /\ _P#_ /\ _P _P#_ /\ _P#_ /\ __\ _P#__P#_ /__ /\ ____
M /__ /\ _P#_ /\ __\ __\ _P#_ /__ /\ ____ /__ /__ /____\ _P#_
M /__ /\ _P#_ /__ /\ _P _P#_ /\ _P#_ /\ /\ _P _P #_
M _P /\ _P _P /\ _P#_ /\ _P _P
M #_ #_ #_ _P _P
M_P #_ /\ /\ /\ _P _P
M /\ #_ #_ #_ #_ #__P /__
M #_ #_ #_ #_ /\ /\ /\ /\ #_
M #_ _P _P _P /\
M _P #_ #_ #_ #_ #_ #_ #_ #_
M _P _P #_ #_ /\ _P _P#_ /\ _P#_ /\ __\ _P#_
M_P#_ /__ /\ __\ _P#_ /___P#___\ __\ _P#__P#_____ /______ /\
M__\ __\ _P#__P#__P#_ /\ ____ /__ /\ _P#__P#_ /\ _P#_ /\ _P
M_P /\ #_ _P /\ _P #_ /\
M_P#_ /\ _P#_ /\ _P#_ /\ _P _P _P
M_P /\ /\ /\ _P #_ #_ #_ #_
M /\ /\ #_ /\ /\ _P#_ #_
M /__ __\ _P _P /\ /\
M _P _P /\ #_ /\ /\
M #_ _P #_ /\ _P
M_P /\ #_ #_ /\ /\ _P _P#_ /\ _P#_ /\
M_P#_ /\ __\ _P#__P#_ /__ /\ __\ _P#___\ _P#___\ __\ _P#__P#_
M_P#_ /\ _P#_ /\ __\ __\ _____P#__P#_ /\ ____ /\ _P#_ /\ _P#_
M /\ _P#_ /\ _P#_ _P /\ _P _P #_
M_P #_ _P#_ _P /\
M /\ #_ #_ /\ /\
M_P _P _P#_ #_ _P /\ /\ /\ #_ /\
M _P /\ __\ #__P _P #_ #_
M #_ #_ #_ _P _P /\ /\ /\ /\
M _P _P _P _P /\ _P #_ #_ #_
M /\ #_ #_ /\ #_ #_ _P #_ #_
M /\ /\ _P#_ /\ _P#_ /\ __\ _P#_ /__ /__ /\ __\ _P#__P#_ /__
M /\ _P#__P#__P#__P#_ /\ ____ /__ /\ __\ ____ #_ /__ /______
M /\ __\ __\ _P#_ /\ _P#_ /\ _P#_ /\ #_ /\ _P /\ #_
M /\ _P #_ _P /\ _P#_ /\ _P#_ /\ _P _P #_
M /\ _P _P#_ #_ #_ #_ #_ _P _P _P
M #_ /\ /\ /\ _P _P /\
M #_ _P /\ #__P /___P _P _P
M /\ /\
M _P /\ #_ #_
M /\ #_ #_
M /\ _P _P /\ _P#_ #_ /\ _P#_ /\ _P#_ /__ /\ __\
M__\ _P#__P#_ /\ _P#__P#__P#__P#__P#_ /______ /__ /____\ _P#_
M /______ /___P#_ /\ __\ _P#_ /__ /\ _P#_ /\ _P#_ /\ _P#_
M /\ _P #_ /\ _P /\
M #_ #_ _P /\ _P
M /\ /\ _P _P #_ #_ #_ #_
M /\ #_ _P _P /\ _P /\ _P#_ ____
M __\ #_ #_ #_ #_ #_ _P
M_P _P /\ /\ #_ #_ _P
M #_ /\ _P #_ #_ #_ #_ /\ #_ #_
M /\ /\ #_ _P /\ _P#_ #_ /\ _P#_ /\
M_P#_ /__ /\ __\ _P#__P#__P#_ /______ /\ _P#__P#__P#_ /___P#_
M /__ /__ /\ _P#_____ /\ __\ _P#_ /__ /\ _P#__P#_ /\ _P#_ /\
M_P#_ /\ __\ _P _P #_ _P#_ /\ _P
M #_ /\ _P _P#_ _P#_ #_ /\
M /\ /\ /\ /\ #_ #_ #_ /\ _P
M _P _P#_ #_ _P _P /\ /\
M _P _P __\ #__P _P /\ /\
M #_ #_ /\ #_ #_ _P #_ #_
M _P /\ #_
M #_ _P #_ _P#_ #_ _P
M_P#_ /\ _P _P#_ /\ _P#_ /\ __\ _P#__P#__P#_ /___P#_ /__ /__
M_P#__P#_ /___P#__P#_ /__ /\ _P#__P#_ /\ __\ ____ /__ /\ __\
M_P#_ /\ __\ _P#_ /\ _P#_ /\ _P#_ #_ /\ _P #_ _P
M /\ _P #_ _P #_ /\ _P /\ #_
M _P _P #_ _P _P _P#_
M #_ /\ /\ /\ /\ _P #_
M _P _P _P #__P /__ _P #_
M #_ #_ #_ _P
M #_ #_ _P#_ /\ /\ #_
M /\ #_ #_ _P#_ #_ /\ #_ _P
M _P _P /\ _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#__P#__P#_
M /___P#_ /__ /\ _P#__P#_ /___P#__P#_____ /\ ________ /\ __\
M_P#_ /__ /\ __\ _P#__P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\
M #_ #_ #_ /\ _P #_ /\ _P #_
M /\ /\ #_ #_ #_ /\ /\ _P /\ _P _P _P /\ /\
M /\ _P #_ #_ #_
M /\ #_ #_ #_ _P _P /\ _P #_ #_ ____
M____ _P /\ _P #_ /\ /\
M /\ _P #_ #_ _P #_ #_
M /\ /\ _P#_ #_ _P #_
M /\ #_ _P /\ _P#_ /\ _P#_ /\ /\ _P#_
M /\ _P#_ /\ _P#_ /___P#_ /__ /\ ____ /__ /___P#__P#__P#_ /\
M__\ _P#_ /_______P#_____ /\ __\ _P#__P#_ /\ _P#_ /\ _P#_ /\
M_P#__P#_ _P#_ _P#_ #_ _P #_ /\
M #_
M #_ #_ #_ #_ /\ _P
M_P _P _P#_ #_ /\ #_
M /\ _P#___\ #__P #_ #_ #_ _P #_
M /\ _P _P #_ /\ /\
M #_ #_ #_ #_ _P _P _P #_ #_
M #_ #_ _P#_ #_ _P #_
M /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#__P#_ /__ /______ /__ /__
M_P#__P#__P#_ /\ _____P#_ /__ /\ _P#__P#_ /\ __\ _P#__P#_ /__
M /\ _P#_ /\ _P#_ /\ _P#_ /\ /\ /\ _P /\
M_P #_ /\ _P#_ #_ /\ _P _P /\ /\ /\ /\
M_P _P _P#_ #_ #_ /\ _P _P _P#_
M #_ /\ /\ /\ _P /\ /\ #_ #_
M #_ #_ /\ /\ #__P /__ #_ #_
M _P #_ #_
M #_ /\ /\ /\
M /\ _P#_ #_ _P /\ /\ _P
M_P _P /__ /\ _P#_ /\ _P#_ /\ __\ _P#_ /\ _P#__P#_ /__
M /\ _P#_ /__ /___P#__P#__P#_______\ _P#_____ /\ _P#_ /__ /__
M /___P#__P#_ /__ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ #_ #_
M #_ #_ /\ #_ /\ _P #_
M /\ /\ /\ _P #_ /\
M /\ /\ _P #_ #_ #_ #_ /\
M /\ #_ _P /\ /\ #_ /__ __\
M _P /\ #_ #_ #_ _P _P
M_P /\ _P _P _P #_ #_ #_ #_ #_
M #_ /\ #_ _P #_ #_ #_ _P /\ #_
M _P /\ /\ _P _P#_ /\ _P#_ /\ _P#_
M /\ __\ _P#_ /__ /\ ____ /__ /\ _P#__P#__P#_ /\ _P#__P#_ /\
M__\ ________ /__ /\ _P#__P#_ /__ /\ _P#__P#_ /\ _P#_ /\ _P#_
M /\ _P#_ _P#_ _P /\ _P _P#_ /\ _P #_
M #_ /\ _P#_ _P _P _P #_ #_ /\ /\
M #_ #_ #_ /\ _P
M_P _P#_ _P /\ /\ /\ /\ _P
M_P _P __\ #__P#_ #_ #_ #_ #_
M _P #_ /\ #_ #_ /\ /\
M /\ _P /\ /\
M _P _P _P#_ #_ _P /\ _P#_
M /\ _P#_ /\ _P#_ /__ /\ _P#_ /__ /\ _P#_ /__ /\ _____P#__P#_
M /___P#__P#_______\ ____ /\ __\ __\ __\ _P#_ /__ /\ _P#__P#_
M /\ _P#_ /\ _P#_ /\ _P#_ /\ _P /\ _P
M /\ _P #_ #_ /\ _P /\ _P
M_P#_ #_ /\ /\ _P _P _P _P #_
M /\ /\ /\ /\ _P _P _P /\ /\ #_
M #_ _P /\ #__P /__ _P
M_P /\ #_ _P _P _P
M #_ #_ #_ #_ #_ #_ #_ _P
M #_ #_ /\ #_ _P /\ _P _P
M _P /\ _P#_ #_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#_ /__
M /\ __\ _P#__P#______P#__P#__P#_ /\ _P#_ /\ __\ __\ __\ _P#_
M /__ /\ _P#__P#_ /\ __\ _P#_ /\ _P#_ /\ _P#_ /\ _P #_
M /\ #_ /\ #_ /\ #_ /\ #_
M #_ #_ /\ /\ /\ _P _P /\
M /\ /\ #_ #_ #_ #_
M _P _P _P #_ #_ /__ __\ #_
M #_ #_ #_ _P#_ #_ _P _P #_
M /\ _P /\
M /\ /\ #_ /\ _P#_ _P /\ #_ #_
M _P /\ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_
M /__ /\ _P#_ /__ /\ __\ _P#__P#_ /\ _P#_ /__ /__ /\ _P#___\
M__\ _P#__P#_ /____\ _P#__P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_
M /\ __\ _P#_ _P #_ _P#_ /\ _P /\ /\ #_
M /\ _P#_ #_ _P _P#_ #_ /\ /\
M #_ #_ #_ #_ /\ /\ _P _P
M _P#_ #_ #_ _P _P /\ /\ /\ _P _P
M __\ #___\ _P _P
M _P _P #_ _P #_ #_ #_ /\ #_
M #_ #_ #_ #_ _P #_ #_
M _P _P#_ #_ _P _P#_ /\ /\
M_P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#__P#__P#_ /___P#_ /__
M /__ /________\ __\ _P#__P#_ /__ /\ _P#__P#_ /__ /\ _P#_ /\
M_P#_ /\ _P#_ /\ _P#_ /\ __\ _P /\ /\ _P /\
M /\ _P /\ /\ #_ _P
M _P #_ #_ /\ _P _P _P #_
M /\ /\ /\ _P /\ #_
M #_ _P /\ #__P /__ #_ #_ #_
M #_ #_ #_ _P _P /\ _P
M /\ /\ /\ /\
M _P#_ #_ _P /\ /\ _P _P
M_P /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#__P#_
M /__ /___P#___\ __\ __\ _P#_ /\ __\ _P#_____ /__ /\ _P#__P#_
M /__ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /\ _P#_ #_ #_ #_
M /\ #_ /\ _P _P _P /\ _P#_ /\ /\ #_
M _P #_ /\ /\ _P /\ _P #_ /\ /\
M /\ /\ /\ _P _P#_ #_ #_ /\ /\ #_
M _P _P /\ _P #_ #_ #_ /__ __\ _P
M /\ _P _P /\ #_ #_
M #_ #_ _P /\ /\ /\ /\ #_ #_ #_ #_
M /\ #_ /\ _P#_ _P /\ #_
M_P #_ /\ #_ /\ _P _P#_ /\ _P#_ /\ _P#_ /\
M_P#_ /\ _P#__P#_ /__ /\ _P#_ /\ __\ __\ ____ /__ /\ _P#__P#_
M /__ /\ __\ _P#__P#_ /\ __\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\
M_P#__P#_ _P#_ _P _P /\
M_P #_ /\
M #_ #_ /\ /\ _P _P _P
M #_ #_ _P _P /\ /\ #_ /\
M__\ #__P /\ #_ #_ #_ #_
M_P _P /\ _P #_
M /\ /\ _P _P #_
M _P _P #_ #_ _P _P#_ /\ _P#_ /\
M /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#_ /__ /\ _P#__P#_
M /__ /\ _P#__P#_ /\ __\ __\ _P#__P#_ /__ /\ _P#_ /\ _P#_ /\
M_P#_ /\ _P#_ /__ /\ _P#_ /\ /\ /\ _P /\ _P #_
M /\ _P _P _P /\ /\ _P /\ #_ #_ /\ _P
M_P _P #_ /\ _P _P _P _P _P #_
M /\ /\ /\ _P /\ #_
M_P#_ /\ #__P /__ _P _P _P _P
M_P /\ #_ #_
M_P /\ /\ /\ /\ #_ #_ #_ #_ _P /\
M _P#_ #_ _P _P /\ #_ /\ _P _P
M /\ _P#_ #_ #_ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#_
M_P#_ /\ __\ _P#__P#_ /__ /___P#_ /____\ __\ _P#__P#_ /__ /\
M_P#__P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ #_ /\
M #_ /\ #_ _P _P _P /\ #_
M /\ /\ _P #_ _P#_ /\ /\ /\
M_P _P#_ #_ #_ _P /\ /\ #_ #_
M _P _P _P /\ _P#_ /__ __\ _P
M #_ #_ #_ #_ _P _P#_ _P
M _P
M /\ /\ #_ #_ _P#_ _P #_ #_
M /\ /\ #_ #_ /\ _P#_ /\ _P#_ /\ /\ _P#_ /\ _P#_
M /\ _P#_ /\ _P#__P#_ /__ /\ _P#__P#_ /__ /\ _P#_ /___P#_ /\
M_P#__P#_ /__ /\ __\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#_
M /__ /\ _P#_ #_ _P#_ /\ _P #_ _P
M _P _P /\ /\ _P #_ _P /\ _P#_
M /\ #_ #_ #_ /\ _P _P /\ _P
M_P /\ _P /\ _P #_ /\ _P #___\
M #__P#_ _P _P _P _P _P
M /\ /\ #_ #_ #_ #_ _P _P
M /\ /\ #_ #_ _P #_ #_
M _P #_ #_ /\ _P#_ /\ _P#_ #_ /\
M /\ _P#_ /\ _P#_ /\ _P#__P#_ /\ _P#_ #_ /\ __\ _P#__P#_ /__
M /__ /___P#_ /\ __\ _P#_ /\ __\ __\ _P#_ /__ /\ _P#_ /\ _P#_
M /\ _P#_ /\ __\ _P#_ /\ _P _P /\ _P /\
M #_ _P #_ /\ _P /\ #_ _P /\ _P#_
M #_ /\ _P _P _P#_ #_ #_ /\
M _P /\ /\ _P#_ #_
M _P #__P /__ _P _P
M /\ #_ #_ #_ #_ #_
M_P#_ #_ #_ #_ _P /\ /\ #_
M _P /\ _P _P /\ /\ /\ _P /\ _P /\ /__
M /\ _P#_ #_ /\ /\ _P#_ /\ _P#_ /__ /\ _P#_ /\ _P#_ /__ /__
M /\ _P#__P#_____ /\ _P#__P#_ /__ /\ ____ /____\ /\ _P#__P#_
M /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#_ /__ /\ #_ #_ /\ /\
M #_ /\ _P#_ /\ _P _P#_ #_ /\
M #_ #_ /\
M /\ /\ #_ #_ _P _P#_ #_ /\ /\ _P
M_P #_ /\ _P _P#_ /__ ____ #_ _P#_
M #_ _P #_ /\ /\ /\
M /\ #_ _P _P _P _P /\
M #_ #_ #_ /\ /\ /\
M /\ #_ /\ _P _P#_ /\ /\ _P#_ /\ _P#_ /__ /\ _P#_
M /__ /\ _P#_ /__ /\ __\ _P#__P#_ /\ ____ /\ _P#__P#___\ _P#_
M_P __\ __\ _P#_ /\ _P#_ /\ __\ _P#_ /\ _P#_ /\ __\ _P#_ /__
M_P#_ #_ /\ _P _P /\ _P /\
M_P#_ _P /\ #_ _P _P #_ /\ _P#_ #_
M /\ #_ #_ #_ #_ /\ _P
M_P _P _P _P /\ _P /\ /\ _P#_ __\ #_
M_P /\ _P#_ #_
M #_ #_ #_ /\ /\ /\
M /\ #_ _P #_ #_
M_P _P _P _P /\ /\ _P _P#_ /\ /\ _P _P#_
M /\ _P#_ /\ _P#__P#_ /\ _P#__P#_ /\ __\ _P#__P#_ /__ /__ /__
M /___P#_ /\ _P#_ /\ __\ __\ _P#_ /__ /\ _P#_ /\ _P#_ /\ _P#_
M /__ /\ _P#__P#_ /__ _P _P /\ /\ #_ /\
M #_ /\ #_ /\ _P #_ #_ /\
M #_ /\ #_ _P _P#_ /\ /\
M _P#_ #_ /\ /\ _P #_ /\ #_ _P
M_P /___P /__ #_ #_ /\ /\ /\ _P #_ #_
M #_ _P _P _P #_ #_
M _P _P _P #_ #_ _P /\ /\ #_
M_P /\ _P _P /\ _P _P /\ _P /___P#_
M /\ /\ _P _P#_ /\ _P#_ /\ _P#__P#_ /\ __\ _P#_ /__ /\ _P#_
M_P#_ /__ /\ _P#_ /\ _P#__P#__P#__P#_ /__ /\ _P#_ /__ /\ _P#_
M /\ _P#_ /\ __\ _P#_ /\ __\ _P#_ /\ ____ #_ #_ /\ _P#_
M #_ _P#_ _P#_ _P#_ #_ #_ /\ /\
M #_ #_ _P#_ _P#_ /\ /\ /\ /\
M _P #_ #_ #_ #_ #_
M _P /\ _P #_ /\ /__ __\ #_
M #_ #_ #_ _P #_ /\ _P
M _P _P _P /\
M_P#_ #_ /\ /\ #_ #_
M /\ #_ #_ /\ _P#_ /\ _P#_ /\ _P _P#_ /\ _P#_ #_ /\
M_P#__P#_ /\ __\ _P#_ /__ /\ ____ /\ __\ _P#_ /\ _P#______P#_
M_P#_ /__ /\ _P#__P#_ /\ _P#_ /\ _P#_ /__ /\ _P#_ /__ /___P#_
M #_ _P _P _P /\ /\ _P#_
M #_ /\ _P /\ _P #_ /\
M #_ /\ #_ #_ _P#_ /\ /\ _P
M_P#_ /\ /\ _P /\ #_ __\ #__P
M _P _P /\ _P
M #_ _P _P #_ _P _P _P
M /\ #_ _P _P #_ _P #_ #_
M _P _P#_ _P #_ /\ _P _P _P#_ /\ _P _P#_
M /\ _P#_ /__ /\ __\ _P#_ /__ /\ _P#__P#_ /\ ____ /\ __\ ____
M /__ /___P#_ /\ __\ __\ _P#_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /\
M__\ ____ /\ _P#_ #_ /\ _P#_ /\ /\ /\ #_
M /\ #_ /\ #_ #_ /\ /\ _P /\ _P #_ /\
M #_ _P #_ _P#_ /\ /\
M #_ /\ /\ /\ #_ _P#_ #_
M /\ _P#__P /__ _P _P /\ /\ #_ _P
M #_ _P _P /\ #_ #_ /\ _P
M_P /\ _P #_ /\ /\ #_ _P
M_P /\ /\ _P /\ _P #_ /\ _P _P#_
M /\ _P _P _P#_ #_ /\ _P#_ /\ __\ _P#__P#_ /\ __\ _P#_ /__
M /__ /\ __\ __\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ _P#_
M /__ /\ _P#_ /__ /\ _P#_ /\ _P#_____ /\ /\ #_
M #_ _P#_ #_ /\ /\ /\
M _P #_ _P#_ /\ /\ /\ /\ #_ /\
M_P #_ /\ _P#_ #_ /\ _P /\
M_P _P /\ /\ /__ __\ _P /\
M _P _P /\ /\ #_
M_P #_ #_ _P _P /\ #_ _P#_
M #_ #_ /\ /\ #_ #_ #_
M /\ _P#__P#_ /\ _P _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#__P#_
M /__ /\ _P#__P#_ /\ _P#_ /\ __\ _P#___\ ____ /__ /\ __\ _P#_
M_P#_ /\ _P#_ /\ _P#_ /\ _P#_ /__ /\ __\ _P#_ /\ _P#_ /\ #_
M /\ _P _P /\ _P /\ #_ /\ #_
M _P _P#_ _P _P #_ _P /\ _P _P#_
M /\ #_ #_ #_ /\ _P /\ _P#_ /\ _P
M _P /\ _P _P#_ /\ /\ _P#___\ #__P
M_P #_ /\ /\ _P #_ #_ _P _P
M /\ #_ #_ _P /\ _P _P _P _P#_
M _P _P #_ #_ _P #_
M _P _P #_ #__P#_ /\ /\ _P#_ #_ /\ _P#_ /\
M_P#_ /\ _P#__P#_ /__ /\ __\ _P#_ /__ /___P#___\ _P#__P#_ /__
M /__ /\ _P#_ /\ _P#_ /\ __\ _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#_
M__\ _P#_ /\ /\ _P#_ /\ _P #_
M #_ #_ #_ /\ #_ _P #_ #_
M /\ _P #_ _P#_ /\
M _P #_ /\ /\ /\ /\ _P #_ _P
M #__P /__ _P /\ _P _P
M /\ _P #_
M _P /\ _P _P /\ /\ #_ _P
M /\ /\ _P /\ /\ _P #_ /\ /\ _P#_
M #_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /__ /\ __\ _P#_ /__ /\ _P#_
M__\ _P#__P#_ /__ /\ __\ ____ /__ /__ /__ /\ _P#_ /\ _P#_ /\
M_P#__P#_ /\ _P#__P#_ /\ __\ _P#_ /\ _P #_
M #_ /\ /\ /\ #_ _P#_ #_ #_
M _P#_ #_ _P _P #_ #_ /\ /\ _P /\
M /\ _P _P#_ /\ _P #_ _P _P #_
M_P#_ /\ _P /\ _P#_ /__ __\ /\ _P#_
M /\ /\ _P _P /\ /\ /\
M /\ _P _P _P /\ /\ #_ _P#_
M #_ /\ /\ #_ _P#_ #_ /\
M #_ #_ /\ _P#_ #_ /\ _P _P#_ /\ _P#_ /\ _P#_ #_ /\ __\
M_P#_ /__ /\ __\ _P#_ /__ /__ /__ /__ /\ _P#_ /__ /\ _P#_ /\
M_P#__P#_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /\ __\ _P#_ _P
M_P#_ /\ /\ /\ /\ _P /\ #_ #_
M _P#_ /\ _P _P _P #_ #_
M #_ /\ /\ _P #_ /\ _P /\
M_P /\ _P#_ /\ #_ __\ #__P#_ /\
M _P /\ _P _P /\ #_ _P /\
M #_ #_ /\ #_ #_ _P#_
M _P _P /\ #_ _P _P _P
M #_ #_ __\ _P#_ #_ /\ _P _P#_ /\ _P#_ /\
M_P#_ /__ /\ __\ _P#_ /__ /\ __\ ____ /__ /__ /__ /__ /\ _P#_
M_P#_ /\ _P#_ /\ __\ _P#_ /__ /__ /\ _P#_ /___P#__P#_ /__ /\
M_P#__P /\ _P#_ /\ _P /\
M _P#_ /\ #_ /\ #_ #_ /\ /\
M #_ /\ /\ _P#_ _P _P _P #_ /\ _P#_
M /\ /\ /\ /\ _P _P#_ /__
M_P /__ _P #_ _P
M #_ _P _P /\ _P _P _P
M /\ /\ _P _P /\ /\ /\ _P
M /\ _P /\ #_ /\ _P#_ /\ _P
M_P#_ /\ /\ _P#_ /\ _P#_ /\ __\ _P#_ /__ /\ __\ __\ _P#_ /__
M /\ _P#_ /\ _____P#__P#_ /__ /\ __\ _P#__P#_ /\ _P#__P#___\
M_P#__P#__P#_ /\ __\ _P /\ _P#_ _P#_ /\ /\ #_
M /\ /\ _P _P#_ /\ /\ #_
M _P _P#_ #_ /\ _P /\ _P #_
M _P#_ /\ _P _P _P#_ /\ _P#_
M /\ /__ __\ _P _P _P #_
M_P _P _P /\ #_ /\ #_ /\ /\ /\
M #_ /\ /\ #_ _P#_
M /\ #_ #_ /\ _P /\ #_ /\ #_
M _P#_ /\ _P _P#_ /\ /\ _P#_ /\ _P#_ /\ __\ _P#_ /\ _P#_
M /\ __\ _P#_____ /\ ____ /__ /__ /\ _P#_ /__ /\ __\ _P _P#_
M /\ __\ _P#_ /\ __\ _P#__P#_ /\ __\ _P#_ /\ #_ /\ /\
M_P _P /\ _P _P _P
M /\ _P #_ /\ _P _P#_ #_
M #_ #_ _P /\ /\ #_ /\ _P#_ /\ _P
M _P _P#_ #_ __\ #__P#_ #_
M /\ /\ /\ #_
M /\ _P _P _P#_
M _P _P _P /\ #_ #_
M #_ /\ #_ _P#_ /\ /\ _P#_ /\ /\ _P#_ /\ _P#_ /__
M /\ _P#_ /\ __\ __\ __\ _P#__P#_ /\ ____ /__ /__ /\ _P#__P#_
M /\ __\ _P#__P#__P#_ /\ _P#_ /__ /\ _P#__P#__P#___\ _P#__P
M #_ /\ /\ /\ _P #_ #_ #_
M _P /\ _P#_ /\ #_ /\
M _P #_ /\ _P #_ _P #_ /\ _P _P
M /\ #_ #_ /\ _P #_ /\ _P /\ _P#__P
M /__ _P _P _P #_ #_ _P _P _P _P
M #_ #_ /\ /\ /\ /\ /\ _P _P#_
M /\ _P _P /\ /\ /\ /\
M_P #_ /\ _P#_ /\ /\
M_P#_ /\ _P#_ /__ /\ _P#_ /\ __\ _P#_ /\ _P#__P#_ /__ /__ /\
M_P#_ /__ /\ _P#_ /__ /\ _P#__P#__P#_ /\ _P#__P#_ /\ _P#__P#_
M_P#_ /\ _P#__P#_ /\ /\ /\ _P #_ /\
M #_ /\ /\ /\ /\ #_ /\
M_P#_ _P#_ /\ _P #_ /\ /\ _P #_ #_
M _P _P /\ _P#_ /\ _P#_ #_ #_
M #_ /\ /__ ____ #_ #_ _P
M _P _P#_ _P#_ #_ _P#_
M _P /\ #_ _P#_ #_
M /\ /\ /\ _P /\ #_ #_
M /\ _P#_ #_ /\ _P#_ /\ _P _P#_ /\ _P#_ /\ __\ _P#_ /\ __\
M_P#_ /__ /\ _P#_ /__ /__ /\ ____ /__ /\ __\ _P#_ #_ /\ __\
M_P#_ /__ /___P#__P#__P#__P#__P /\ /\ _P _P /\ _P
M_P /\ /\ _P
M _P /\ _P #_ _P #_ /\ _P#_
M #_ #_ _P _P
M /\ _P#_ /\ _P#_ _P#___\ #__P #_
M_P _P #_ _P _P
M /\ /\ /\ _P /\ #_ _P#_
M_P _P /\ /\ /\ _P /\
M /\ #_ #_ _P#_ /\ _P#_ /\ /\ _P#_ /\ _P#_ /\
M__\ _P#_ /__ /\ _P#_ /__ /__ /__ /\ _P#_ /\ __\ _P#_ /\ __\
M_P#_ /__ /\ __\ _P#_ /__ /\ _P#__P#__P#_ /\ _P _P#_ /\ _P
M_P #_ #_ _P /\ /\ /\
M _P _P#_ /\ _P #_
M /\ _P /\ #_ /\ #_ #_ #_ _P _P
M #_ /\ _P /\ /\ /\ /\ _P #__P /__
M /\ /\ _P /\ _P#_ _P _P _P
M /\ /\ #_ /\ #_ #_ _P#_ /\
M_P _P /\ #_ /\ /\
M /\ #_ /\ _P#_ /\ _P _P#_ /\
M_P#_ /\ _P#_ /\ __\ _P#_ /__ /\ __\ ____ /__ /\ __\ ________
M /\ __\ __\ __\ _P#__P#_ /\ __\ _P#__P#_ /__ /___P#__P#__P#_
M /\ _P _P#_ _P _P#_ _P#_ #_ #_
M /\ _P /\ #_ _P _P _P
M /\ #_ /\ _P #_ /\ #_ /\ #_ #_
M _P _P _P#_ #_ #_ /\ /\ _P#_ /\
M #_ /__ __\ _P _P /\
M _P _P #_ #_ /\ _P#_
M_P #_ /\ #_ #_ #_ /\
M /\ _P /\ #_ /\
M #_ /\ _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#_ /__ /\ __\ _P#_ /__
M /\ __\ __\ _P#_ /\ __\ _P#_ /__ /\ _P#_ /\ __\ _P#__P#_ /__
M /\ _P#__P#__P#_ /\ _P _P #_ /\ _P /\ /\ _P
M /\ /\ /\ #_
M #_ /\ _P#_ /\ _P #_
M /\ _P /\ /\ /\ _P#_ /\ /\
M #_ _P _P#_ __\ #__P /\ /\ #_
M #_ #_ #_ /\ _P /\ /\
M #_ /\ _P /\ #_ #_ _P
M /\ _P /\ /\
M /\ #_ /\ _P _P#_ /\ _P#_ /\ /\ _P#_ /\ _P#_ /__
M /\ __\ _P#__P#_ /\ __\ _P#__P#__P#_ /\ __\ _P#_ /\ __\ _P#_
M /\ _P#__P#_ /__ /\ _____P#_ /__ /\ _P _P _P#_ /\ _P _P
M #_ #_ /\ _P
M _P _P #_ /\
M_P #_ #_ /\ /\ _P #_ /\ _P _P _P#_ /\
M /\ #_ _P _P #_ /\ _P /___P /___P
M_P #_ _P _P _P#_ /\ _P _P
M #_ #_ #_ _P /\
M /\ _P /\ /\ /\ #_ /\ #_
M _P #_ /\ _P#_ /\ _P#_ /\
M_P#_ /\ _P#_ /__ /\ __\ _P#__P#_ /__ /___P#__P#__P#_ /____\
M_P#___\ __\ _P#_ /__ /\ _P#_ /__ /\ __\ _P#_ /__ /\ _P _P
M_P#_ /\ /\ _P _P _P /\ _P /\ #_ _P /\
M /\ _P _P #_
M_P _P #_ /\ #_ _P _P #_
M_P _P _P#_ /\ /\ /\ /\ #_ #_
M /\ /__ __\ /\ /\ #_ /\
M #_ /\ #_ _P _P /\ /\ _P#_ _P
M /\ /\ _P
M /\ /\ #_ /\ _P#_ #_
M #_ /\ _P#_ /\ __\ _P#_ /\ _P#_ /\ __\ _P#__P#_ /__ /\ _P#_
M_P#_ /__ /__ /\ _P#__P#_ /\ _P#__P#_ /\ _P#_ /__ /\ __\ _P#_
M /__ /\ _P _P _P#_ #_ /\ _P _P _P#_ /\ /\
M _P _P
M _P#_ _P #_ #_ #_ /\ _P
M #_ #_ /\ _P #_ #_ /\ _P _P
M_P _P /\ _P#_ __\ #__P _P #_
M _P#_ _P /\ _P /\ #_ /\
M #_ _P /\ /\ #_ _P _P _P _P _P
M _P _P _P
M #_ #_ #_ /\ _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#_
M_P#_ /__ /\ __\ _P#_ /__ /__ /__ /\ _P#__P#___\ _P#_ /__ /\
M__\ _P#_ /___P#_____ /\ _P _P _P#_ #_ /\ _P _P _P
M /\ /\ /\ #_ #_
M _P _P #_ /\
M /\ #_ #_ /\ #_ _P#_ #_
M /\ _P _P _P #_ /\ /\ /\ _P#__P /__
M /\ /\ /\ _P _P _P _P /\
M /\ #_ _P _P /\
M_P _P #_
M _P /\ /\ _P#_ /\ /\ _P#_ /\ _P#__P#_
M /\ _P#_ /\ _P#__P#_ /__ /\ __\ _P#_ /___P#_ /__ /_______P#_
M /\ _P#_ /__ /\ __\ _P#___\ _P#__P#_ /\ _P _P _P#_ #_ /\
M /\ _P _P /\ /\ _P#_ /\
M_P#_ _P
M_P #_ _P _P#_ /\ _P#_ /\ _P#_
M /\ #_ /\ _P#_ _P _P #_ _P#_ /\ _P
M /__ ____ #_ #_ _P /\
M_P _P #_ _P _P /\ /\ _P#_ _P _P
M /\ #_ #_ #_ #_
M /\ #_ #_
M _P#_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /__ /\ __\ _P#______P#_
M /__ /__ /\ _P#_ /____\ ____ /\ __\ _P#__P#_ /___P#_ /\ _P
M_P _P#_ #_ /\ /\ _P _P#_ /\ _P#_ _P
M /\ /\ _P
M /\ _P #_ /\
M #_ /\ _P /\ /\ #_ #_
M_P _P #___\ #__P _P /\ _P #_
M_P#_ _P /\ #_ /\ /\ _P
M _P /\ #_ #_ _P _P#_ #_
M #_ _P /\
M #_ /\ _P _P#_ _P#_ /__ /\ _P#_ /\ _P#_ /__ /__
M /___P#___\ _P#__P#___\ __\ _P#_ /__ /\ _P#_ /\ __\ _P#__P#_
M /___P#_ /\ _P _P _P#_ #_ /\ /\ _P _P#_ _P _P#_
M /\ /\ /\ #_
M #_ #_
M /\ _P#_ /\ _P #_ /\ _P _P#_ _P#_ /\ /\
M_P#_ #_ /\ _P /\ #_ /\ _P#_ #__P /__ #_ /\
M /\ _P _P _P #_ /\
M #_ #_ _P _P _P #_
M /\ /\
M /\ /\ _P _P /\ #_ #_ /\ _P#_ #_ /\
M_P#__P#__P#_ /__ /\ _P#___\ _P#__P#_ /\ __\ __________\ _P#_
M_P#_ /\ _P#__P#_ /__ /\ _P#_ /\ /\ _P#_ #_ /\ /\ _P#_ #_
M _P #_ #_ #_ _P
M_P _P
M #_ /\ _P _P#_
M #_ /\ _P /\ #_ #_ /__
M ____ _P /\ _P #_ #_ _P /\
M _P _P #_ _P #_ #_ _P /\
M /\ #_ #_ /\ #_
M _P /\ #_ #_ #_ #_
M #_ #_ /\ _P#_ /\ _P#_ /__ /\ ____ /\ _P#__P#_________
M_P#__P#_ /\ _____P#___\ __\ _P#_ /__ /\ _P#_ /\ /\ _P#_ #_
M /\ /\ _P#_ #_ _P _P#_ /\ _P#_ /\
M _P /\
M /\ /\ _P _P#_
M /\ #_ /\ _P#_ /\ /\ #_ /\ _P#_ #_ /\ /\ _P#_ /\
M #_ /\ _P /\ __\ #__P /\
M #_ /\ #_ /\ /\ /\ #_ #_ #_
M /\ #_ _P
M /\ /\ /\
M _P#_ _P#_ #_ _P#_ #_ /\ _P#_ /__ /__ /\ __\ ____
M_P#______P#_ /\ _P#_____ /____\ _P#__P#_ /\ _P#__P#_ /\ /\
M_P /\ _P _P#_ /__ /\ _P#_ #_ /\ _P#_ #_ #_
M _P _P#_
M #_
M /\ #_ #_ _P
M /\ _P _P#_ #__P /__ _P _P
M_P _P #_ /\ #_ _P _P #_ #_ #_
M #_ #_ /\ #_ _P /\ /\
M #_ _P
M #_ /\ /\ #_ #_ /\ #_ #_ /\ _P#_ /\ _P _P#_
M #_ /\ __\ __\ _P#___\ _P#_____________ /____\ __\ _P#__P#_
M_P#__P#_ /\ /\ _P#_ /\ _P _P#_ /\ /\ _P#_ #_ /\ #_
M /\ #_ /\ /\ #_
M
M /\ #_ _P /\ _P#_ /\ _P#_ /\ _P
M /\ /\ _P#_ /\ _P #_ /\ _P#_ #_ ____
M__\ _P /\ #_ #_ _P /\ /\
M _P _P /\ /\ /\ #_ _P _P /\
M /\ /\
M /\ #_ /\ #_ #_ #_
M #_ #_ _P /\ _P#_ /\ __\ _P#__P#__P#__P#_ /\ _P#_ /\
M__\ __\ _____P#_ /\ _P#_ #_ /\ _P#_ #_ /\ _P#__P#_ /\ _P
M_P#_ /\ #_ /\ /\ /\ _P
M _P /\ /\
M /\ #_ /\
M /\ _P#_ #_ /\ /\ _P#_ /\ #_
M _P#_ #___\ #__P _P #_ #_ #_ #_
M _P /\ /\ /\ /\ /\
M
M #_ /\ #_
M /\ _P#_ #_ #_ #_ /\ _P _P#_ #_ #_ /\ _P#__P#__P#_
M_____________________P#___\ _P#_ /\ _P#_ #_ /\ _P _P#_ /\
M_P#__P#_ /\ _P _P#_ #_ #_ /\ /\ /\ #_
M /\ /\
M
M #_ /\ _P#_ /\ _P#_ /\ _P#_ _P /\
M_P /\ /\ #_ #__P /__ #_ /\
M #_ /\ #_ _P _P _P /\ #_ #_
M _P _P /\ #_ #_ _P
M _P /\ #_ _P
M _P _P #_ #_ #_ /\ /\ _P#_ /\ _P#_
M /\ _P _P#_ /__ /\ _P#_ /__ /__ /\ _P#___\ _P#_ #_ /\ _P
M_P#_ /\ _P#_ /\ _P#_ #_ #_ /\ _P#_ #_ /\ /\ _P /\
M /\ /\ /\
M_P
M #_ /\
M #_ /\ _P#_ /\ _P #_ #_ /\ #_ /\ _P #_ /__ __\
M _P /\ /\ #_ #_ _P /\
M _P _P _P _P _P /\ #_ _P
M #_ /\
M /\ #_ _P _P#_ #_ #_ /\
M /\ _P _P#_ #_ /\ /\ _P#_ /\ /\ _P#_ /__ /__ /\ _P#_ /\
M /\ _P#_ /\ _P _P#_ /\ _P#__P#_ /\ _P#_ #_ /\ _P#_ #_ #_
M /\ #_ /\ _P /\ _P
M
M #_ /\ _P#_ /\
M_P#_ /\ _P#_ /\ _P#_ #_ #_ /\ /\ _P
M /\ /\ __\ #___\ /\ /\ #_ #_
M_P #_ /\ /\ #_ #_
M /\ _P
M #_ #_ #_ _P
M #_ #_ #_ #_ /\ _P _P#_ #_ /\ /\ _P#_ /\ /\ /\ _P#_
M /\ /\ _P#_ /\ /\ _P _P#_ /\ _P#__P#_ /\ _P#_ /\ _P#_ /__
M /\ _P _P#_ #_ /\ /\ /\ _P /\ /\
M /\ _P#_
M /\
M _P /\ _P#_ /\ _P#_ /\
M #_ /\ /\ #__P /__ #_ _P
M #_ /\ #_ _P _P /\ #_ #_ #_ #_ #_
M #_ _P /\
M #_
M #_ #_ #_ /\ _P _P _P#_ /\ /\ _P#_
M /\ _P#_ /\ _P#_ /\ /\ /\ _P#_ /\ _P _P#_ /\ _P#__P#_ /\
M_P#_ /__ /\ _P#_ /\ _P _P#_ #_ #_ /\ /\ /\ _P
M /\ #_ /\ #_
M_P
M #_ #_ /\ _P#_ /\ _P#_ /\
M_P #_ /\ /\ _P#_ /\ ____ __\
M_P /\ /\ #_ #_ #_ /\ /\
M_P #_ /\ /\
M /\ /\
M /\ _P #_ #_ #_ _P#_ #_ /\ /\
M_P#_ #_ /\ _P#_ /\ /\ _P#_ /\ _P#_ /\ __\ _P#_ /\ __\ _P#_
M_P#_ /\ _P#_ /__ /\ _P#_ /\ _P#_ /\ /\ _P#_ #_ /\ /\
M /\ _P #_ /\ _P
M _P
M _P
M #_ /\ _P#_ /\ _P _P#_ #_ #_ /\ _P
M __\ #___\ /\ #_ #_ #_ #_
M #_ /\ /\ /\ /\ /\ #_
M /\ /\ /\
M
M #_ /\ _P _P#_ /\ /\ _P#_ /\ _P#_ /\ _P#_ /\ __\
M_P#__P#_ /\ _P#__P#_ /\ __\ _P#_ /\ __\ _P#_ /\ _P#_ /\ _P
M_P#_ #_ /\ /\ _P _P _P
M /\ #_ _P #_
M /\
M _P /\ _P#_ /\ _P#_ /\ _P#_ /\ /\
M #_ /\ _P#__P /__ #_ _P #_
M /\ #_ _P /\ #_ #_
M _P
M _P
M #_ /\ #_ #_ /\ _P#_ #_ /\ _P#_ #_ /\ _P#_ /\ _P#_
M_P#_ /\ _P#_ /\ _P#__P#_ /\ __\ _P#_ /__ /\ _P#__P#_ /\ _P#_
M /\ _P#_ /\ _P _P#_ #_ /\ _P#_ /\ /\ _P
M_P /\ #_
M
M
M _P _P#_ #_ /\ _P#_ /\ #_ /__ __\ _P
M /\ /\ #_ #_ /\ #_ /\ /\ _P
M_P _P _P _P#_
M /\ /\ _P _P _P
M #_ /\ #_ /\ #_ _P#_ #_
M /\ /\ _P#_ /\ _P#_ /\ _P#__P#__P#__P#_ /\ __\ _P#__P#_ /\
M__\ _P#_ /\ _P#__P#_ /\ _P#_ /\ _P#_ #_ /\ _P /\ _P
M_P /\ /\ /\ #_ #_
M _P _P
M _P _P#_
M /\ _P _P#_ /\ _P _P _P _P#_ #_ /\ /\ /\
M__\ #___\ /\ #_ #_ /\ #_ #_
M /\ #_ #_
M #_
M /\
M_P#_ #_ /\ #_ /\ /\ _P#_ /\ _P#_ /\ __\ _P#_ /\ _P#_ /\
M__\ _P#__P#_ /__ /\ _P#__P#_ /\ _P#_ /\ _P _P _P#_ #_
M _P#_ /\ #_ #_
M _P #_ /\
M _P
M _P _P /\ #_ /\ #_ /\
M_P /\ /\ _P#__P /__ #_ _P /\ _P#_
M /\ _P /\ #_ #_ #_ _P#_ /\
M
M _P#_ #_
M _P #_ #_ #_ /\ /\ _P _P#_ /\ _P#_ /\
M_P#_ /__ /\ _P#__P#_ /\ _P#_ /__ /\ __\ _P#_ /\ _P#_ #_ /\
M_P#_ /\ #_ /\ _P#_ #_ /\ /\ _P _P /\ _P
M /\ #_ _P
M
M #_ _P#_ /\ _P _P#_
M #_ /\ /\ _P _P /\ ____ __\ _P /\
M /\ /\ _P /\ /\ /\
M _P #_
M #_ #_ /\
M #_ #_ #_ _P /\ /\ /\ /\ _P
M_P#_ #_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /\ ____ /__ /\ __\ _P#_
M_P#_ /\ _P#_ /\ _P#_ #_ /__ /\ #_ #_
M /\ #_ #_ #_ _P /\ #_
M
M /\ #_
M _P /\ /\ /\ #_ _P#_ /\ /\ _P __\
M #___\ /\ #_ #_ /\ _P#_
M /\ /\ /\ #_
M _P#_ /\
M _P /\
M #_ /\ _P _P#_ #_ /\ _P#_ /\ _P#_ /\ __\ _P#_ /__ /\
M_P#_ /\ __\ _P#__P#_ /\ _P#_ /\ _P#_ #_ /\ /\ #_ #_ #_
M /\ _P _P _P _P _P
M #_ #_ /\
M
M /\ _P#_ /\ _P #_ /\ /\ _P /\ _P
M _P _P#__P /__ #_ _P _P _P#_ _P
M _P _P _P /\ #_ _P
M #_ #_
M #_
M #_ _P /\ _P /\ _P #_ #_ /\ /\ _P#_ /\ _P#_
M /\ _P#__P#_ /\ __\ __\ __\ _P#__P#_ /\ _P#_ /\ _P#_ /\ _P#_
M /\ #_ /\ /\ _P /\ #_
M #_
M #_
M _P /\ /\ /\ _P#_ /\
M _P /\ _P _P /\ _P /__ __\ _P /\
M /\ /\ _P _P
M
M #_ _P /\
M /\ /\ /\ _P /\ _P _P#_ _P#_
M /\ _P#_ /\ _P#_ /\ _P#__P#_ /\ __\ _P#_ /\ _P#__P#_ /\ _P#_
M /\ _P#_ /\ /\ _P _P#_ /\ /\ /\ #_
M _P /\ #_ _P
M #_ /\ _P#_
M
M #_ #_ /\ #_ /\ #_ _P _P _P#_ _P#___\ #_
M__\ /\ #_ #_ #_ #_ #_ #_ _P#_
M_P /\
M #_ #_ _P#_ /\
M _P #_ /\ #_
M #_ /\ _P /\ _P _P#_ /\ _P#_ /\ _P#_ /__ /\ _P#__P#_
M_P#__P#_ /\ _P#_ /\ _P#_ /\ /\ _P#_ /\ /\ _P _P#_ /\
M /\ _P #_ /\
M _P _P
M
M _P /\ _P#_ /\ /\ #_ /\ _P#_ _P#_
M _P#_ #__P /__ #_ _P#_ _P
M _P _P _P #_
M #_
M
M #_ #_ #_ _P#_ _P#_ _P#_ #_ /\ _P#_ /\
M_P#_ /\ _P#__P#_ /\ _P#_ /\ _P#_ /\ _P#_ /\ /\ _P _P
M _P _P _P _P #_
M /\ #_
M #_
M #_ _P /\ #_ #_ /\ /\
M_P _P _P ____ __\ _P /\ /\ /\
M /\ /\ #_ #_ _P
M #_ #_
M _P#_ _P /\
M /\ /\ /\ #_ #_ /\ _P#_ /\ _P#_
M #_ /\ _P#_ /\ _P#_ /\ _P#__P#_ /\ _P#_ /\ _P#_ /\ _P#_ #_
M /\ _P _P#_ /\ _P _P #_ _P /\
M /\ /\ _P /\ _P
M #_
M #_
M _P _P#_ /\ _P _P _P#_ #_ /\ _P __\ #___\
M /\ #_ #_ #_ #_ _P#_ #_ #_
M
M /\ _P
M _P #_ /\ #_
M #_ #_ /\ /\ _P#_ /\ _P#_ /\ _P#_ /\ __\ _P#_
M /\ _P#_ /\ _P#_ /\ _P _P _P #_ #_ _P #_
M #_ /\ _P _P
M #_
M #_
M /\ /\ _P#_ /\ _P /\ _P _P #_
M_P _P#__P /__ #_ _P _P _P _P
M
M /\ /\ #_ /\ _P #_
M /\ #_ #_
M #_ #_ #_ /\ _P#_ /\ /\ /\ /\ _P#_ /\
M_P#_ /\ __\ _P#_ /\ _P#_ /\ _P _P #_ #_ #_
M /\ /\ _P #_
M #_ #_ #_
M #_
M _P _P /\ #_ /\
M_P _P _P#_ #_ _P ____ __\ _P _P /\ /\
M /\ /\ #_ #_ /\ /\ /\
M #_
M _P _P #_ #_
M #_ /\ #_ /\ /\ #_ #_ /\
M /\ _P#_ /\ _P#_ /\ _P#_ /\ _P _P#_ /\ _P#_ _P#_ /\ _P#_
M _P#_ _P#_ #_ #_ _P
M #_ /\
M
M #_ _P _P
M /\ _P _P _P#_ #_ #_ #_ __\ #___\
M #_ #_ #_ #_
M _P
M_P /\ _P
M #_ /\ /\ #_ /\ #_
M_P#_ #_ _P _P#_ /\
M _P #_ #_ #_ /\
M #_ /\ /\ /\ /\ _P _P
M #_ /\ _P _P
M
M #_ /\ #_ /\ /\ /\ _P _P#_ #_ #_
M_P#__P /__ #_ #_ #_ _P _P _P _P /\
M /\ _P _P
M #_ /\ /\ #_ #_ _P
M #_ _P /\ #_ /\
M /\ #_ _P #_ /\ /\ /\ #_ /\ _P#_ /\ _P#_
M /\ #_ #_ #_ /\ _P _P#_ #_ /\
M #_ #_ #_ #_ /\
M /\ /\
M #_ #_
M #_ _P /\ _P#_ _P _P#_
M /\ #_ #_ #_ /\ /__ __\ /\
M /\ /\ /\
M _P#_ /\
M /\
M _P #_ #_ #_ /\
M _P /\ _P _P _P _P#_ #_
M #_ #_ /\ _P#_ /\
M _P
M _P _P #_
M_P /\ _P /\
M_P /\ _P #_ _P#_ #_ /\ /\ _P#___\ #___\ /\ /\
M #_ #_ #_ #_ /\ _P _P
M /\
M_P /\ /\
M _P /\ #_ _P #_ /\ #_ #_
M /\ _P _P _P _P _P /\ _P#_ /\ /\ #_ /\ _P #_
M /\ #_ /\ _P _P #_ #_
M /\ /\ /\ /\ #_ #_ /\
M
M
M /\ #_ /\ _P#_ _P #_ #_ #_
M_P /__ #_ _P _P _P _P
M
M _P#_ /\ _P /\
M _P /\ #_
M #_ #_ /\ /\ /\ _P #_ #_
M_P#_ #_ #_ /\ _P#_ /\ #_ /\ _P #_
M /\ _P#_ _P /\ #_
M /\
M #_ /\
M _P #_ /\ /\ _P /\ _P _P#_
M /\ _P#_ /\ _P#_ /__ __\ _P _P /\ /\ /\
M /\ _P #_
M _P _P
M /\ _P /\ #_
M /\ #_ #_ _P _P#_ #_
M #_ /\ _P /\ #_ #_ #_ _P#_
M _P#_ _P /\ /\
M
M_P _P #_ #_ _P
M /\ #_ /\ /\ /\
M _P #_ #_ #_ /\ _P#___\ #__P /\ /\
M #_ #_ #_ #_
M _P#_ /\ /\
M #_ /\ _P #_
M /\ #_ _P _P
M_P #_ _P /\ /\ _P _P#_ /\ _P#_ #_
M /\ _P#_ /\ _P /\ _P /\
M /\ /\ _P
M
M #_
M #_ /\ _P _P#_ #_ _P#_ /\ _P #__P
M /__ #_ _P _P _P _P#_
M
M _P#_
M #_ /\ _P _P #_
M #_ #_ #_ #_ #_ #_
M_P /\ #_ /\ #_ #_ /\ _P
M_P _P _P /\ _P
M #_ _P _P #_
M #_ _P
M _P /\ _P /\ #_ #_ /\ #_ #_ /\
M_P _P _P#_ /__ __\ _P _P _P /\ /\ /\
M
M _P#_ /\ /\ #_ /\ _P
M _P /\
M _P _P #_ _P _P#_ /\ /\
M _P#_ #_ #_ /\ _P #_ /\ /\ /\ _P#_
M_P _P#_ /\ /\
M_P
M
M _P /\ _P #_ #_
M #_ #_ _P #_ #___\ #___\
M #_ #_ #_ #_ #_
M
M _P /\ #_
M _P /\ _P
M #_ /\ _P _P #_ #_ _P _P _P /\
M #_ /\ _P _P _P /\ #_ #_ /\
M #_
M /\ _P
M /\ _P _P /\
M _P #_ #_ /\ _P#_ #_ /\ _P _P#_ #_ /___P /__
M #_ #_ #_ _P _P /\ _P #_ /\
M _P#_
M /\ /\ /\ #_
M /\ #_ #_ #_
M #_ #_ /\ #_ /\ _P #_ #_ #_ _P
M _P#_ /\ _P #_ /\ #_ /\ _P
M #_ /\ _P
M /\ #_
M _P
M _P /\ #_ #_ /\ #_ #_ #_ /\ /\ _P#_
M #_ /__ __\ _P /\ /\ /\
M
M _P _P#_ _P
M /\ /\ /\ #_ _P
M /\ #_ /\ #_ _P #_
M /\ _P#_ #_ /\ _P #_ _P
M /\ /\ /\ /\ /\
M #_ /\
M _P _P
M _P /\ _P #_ #_
M_P#_ /\ #_ #_ /\ _P#___\ #___\ /\ /\ #_
M #_
M _P#_ /\ _P
M #_
M #_ _P /\ _P
M _P#_ _P _P#_ /\ _P#_ /\
M /\ /\ _P _P _P
M _P /\
M
M /\ #_ /\
M /\ /\ _P#_ /\ _P _P#_ /\ #_ #__P /__
M_P #_ #_ _P /\ _P _P _P _P
M
M #_ /\
M _P #_ _P /\ /\ #_
M #_ #_ #_ #_ #_ /\ /\ /\ /\ #_
M _P /\ _P #_
M_P #_ #_ _P
M _P#_
M _P _P _P#_
M_P #_ #_ /\ #_ _P #_ /\ #_
M #_ /__ __\ _P /\ #_ /\ #_
M
M _P#_ /\ _P #_ #_ #_
M
M _P _P /\ _P /\ _P#_ #_
M _P #_ _P#_ /\ _P #_ _P #_
M_P /\ /\ /\ _P
M_P #_ _P #_
M _P _P
M _P _P _P #_ #_ /\
M_P _P#_ /\ _P#_ /\ /\ __\ #__P _P #_ /\ #_
M_P#_ _P#_
M /\
M_P #_ /\ /\
M /\ #_
M /\ /\ /\ /\ #_ /\ #_
M /\ #_ #_ _P
M #_
M
M #_ #_ _P#_ /\
M /\ /\ /\ /\ _P _P /\ /\ /___P /__ /\
M #_ /\ _P
M _P#_ /\
M #_
M /\ _P #_ /\
M /\ #_ #_ #_ #_ #_ _P #_
M /\ #_ #_ #_ /\ _P
M _P /\
M /\ _P#_ /\ /\
M _P _P _P #_
M #_ #_ /\ /\ /\ _P#_ #_ /\ /\ _P
M____ __\ /\ /\ /\ #_ #_
M
M /\ _P /\ _P
M #_ /\ #_ _P
M_P _P _P _P#_ /\
M #_ /\ /\ #_ /\ _P /\ _P
M /\ /\ #_ #_ #_
M #_ _P
M /\ _P
M #_ _P _P _P _P /\ /\ /\ _P#_
M #_ /\ /\ _P _P __\ #___\ _P#_ /\ /\ _P#_
M #_ #_
M #_ /\ #_ /\ _P
M _P
M /\
M /\ /\ /\ /\ #_
M /\
M _P
M _P #_ _P /\ /\
M /\ _P /\
M _P /\ _P#_ /\ /\ _P _P _P#__P /__ _P
M _P /\ _P _P
M #_ #_ /\ /\
M
M /\ #_ _P /\
M /\ _P #_ _P #_ #_ /\
M _P _P /\ /\ _P
M #_ _P
M /\ /\
M #_ _P #_ /\ _P #_
M #_ #_ #_ _P /\ _P #_ /\ /\ _P _P _P#_ /__
M __\ _P #_ /\ _P /\ /\ _P#_ /\ #_
M
M /\ /\ _P
M #_ #_
M _P #_ /\ _P _P /\
M _P _P _P /\ #_ #_ #_
M _P /\ _P
M #_ /\
M _P /\ _P #_ _P
M _P #_ _P _P #_ _P#_ /\ _P
M_P _P _P#_ #___\ #__P #_ #_ #_
M #_
M #_ /\ _P #_ /\
M
M #_ _P #_ /\
M _P#_ /\
M_P /\ /\ _P /\
M
M _P _P
M _P #_ /\ #_ #_ /\ _P#_
M _P /\ _P _P _P#_ #_ #__P /__ #_ #_ #_
M /\ _P _P #_
M /\ #_ /\
M /\ _P
M #_ /\
M /\ /\
M /\ #_ #_ _P _P
M /\ #_ /\
M _P #_ #_
M _P _P#_ _P _P /\
M /\ _P _P #_ /\ /\ _P _P _P#_ #_ #_ /__
M____ #_ /\ /\ /\ #_
M #_ /\
M #_ #_
M /\ /\ /\
M /\ /\ _P#_ /\ _P
M #_ /\ _P
M #_
M _P /\ #_
M /\ /\ /\ _P _P _P /\ _P
M /\ /\ _P _P _P #_ _P _P _P _P#_
M #_ #_ /\ __\ #__P #_ #_ /\ /\ _P#_ #_
M
M /\ /\ #_
M #_
M
M _P _P _P /\ _P
M #_ #_ _P #_
M /\
M /\ _P _P #_
M #_ #_ _P _P#_
M_P _P _P _P#_ #_ #_ /\ /___P /__ #_ #_
M_P _P _P /\ #_
M #_ /\ /\ /\
M #_ /\
M _P /\ #_
M_P /\ #_ _P #_
M /\ /\ /\ _P #_
M _P
M /\ #_
M #_ _P _P#_ #_ #_ /\ _P /\ _P#_
M #_ _P _P _P _P _P#_ #_ #_ /\ /\ ____ ____
M #_ /\ #_ /\ _P #_
M _P _P _P /\ /\
M #_ _P
M
M _P _P _P _P
M /\ #_ /\ /\
M /\ /\
M #_
M_P #_ /\ /\ #_ #_ #_ /\
M _P _P #_ _P _P#_ #_ #_ /\
M /\ _P __\ #_____________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M_____________________________P /__________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M________________________________________________
M
M
M
M
M
M
M
M
M
M
'
end
ScrollDataItem. 622405377 1097 100 100777 33693 `
% A large portion of this code originaly came from:
%%%%
%%%%
%%%% This code was mostly written in August 1987 but was revised to work with
%%%% NeWS 1.1 in May 1988. Feel free to use it as you will.
%%%%
%%%% Bruce V. Schwartz
%%%% Sun Microsystems
%%%% bvs@sun.com
%%%%
% Feel free to use this code as you like. Any questions, bugs, ideas,
% problems, whatever would be grealy appreciated.
%
% Bret K. Thaeler
% Los Alamos National Labs (MEE-10)
% thaeler@hc.dspo.gov
%
%
% This is VERSION 1.1.....
%
%
% ScrollDataItem:
% This item provides a simple way to display information in a
% scrollable data item. Furthermore the data display may be selected
% causing it to by highlight and a notify routine to be called.
%
% Usefull methods:
% parent_canvas notify_proc /new => instance
%
% array,string /setdata => -
% Array is an array of the data to be displayed. Each element
% of the array can have the following forms...
% string -- display a simple string in scroll area.
% array -- parse each elemnt of the array in RIGHT
% to LEFT order. Each element of the array
% can be of the following forms...
% string -- display a simple string
% array -- parse array righ to left
% color -- set color for future commands
% font -- set font for future text
% x y -- perform a releative move by x y
% /name -- display icon called 'name'
% A given entry may be as complex as you want with multiple
% strings being display in different fonts with different colors
% all moved around with respect to each other intermixed with
% icons. Even very comples entries are considered as ONE object
% for the purposes of selecting it..
% WARNING: markers may NOT be used in the arrays. If the are the
% item will stop displaying at that point while leaving trash
% on the stack...
%
% item_number /deleteitem => -
% Delete an item from the list of displayable objects.
% If the item_number is out of range then the command will
% be ignored. item_number is zero referenced.
%
% array,string item_number /additem => -
% Add an item to the list of displayable objects.
% The item added will appear BEFORE or above the item forwhich
% the item_number is specified. To append an item to the list
% you must add the item before the the first item after the
% end of the list. No blank nodes will be added. If you add
% an item to the list before an item that past the end
% of the list then a suffecient number of EMPTY entries will
% be added to the list to allow the new entry to be added.
%
% array,string item_number /changeitem => -
% Replace the object associated with an item. If the
% item_number is out of range this command is ignored.
%
% - /getdata => array
% Array that has been build up with with setdata and the
% change data routines.
%
% x y w h /reshape => -
% Move and reshape the item...
%
%
% Usefull Class and instance variables:
% /AllowMultipleSelect? (default false)
% If this is set to true then the user can selected move
% then one object. If this is false then selecting a different
% object unselects the previous one.
% WARNING: This command MUST be issued before any data is
% downloaded set with /setdata. Else a /DeclareItemValueArray
% must be issued.
%
% /HScrollBar? (default true)
% /VScrollBar? (default true)
% Should these scroll bars be displayed...
%
% /BufferColor (default 1 1 1 rgbcolor)
% Background color to be used for the scroll area
%
% /ItemTextColor (default 0 0 0 rgbcolor)
% Default color to be used by ites in the scroll area.
%
% /ItemHighLightColor (default 0 0 0 rgbcolor)
% When an item is selected the background behind the item is
% filled with this color. The item it then draw with a default
% color of 'BufferColor'
%
% /ItemLabel (default null)
% A label used at the top of the item
%
% /ItemLabelFont (default Times-Roman.12)
% The font used to display the item label
%
% /ItemLabelColor (default 0 0 0 rgbcolor)
% The color used to display the item label
%
% /ShowItemSeperators (default false)
% Should seperator lines be draw between items
% in the scroll area.
%
% /ItemSpacing (default 4)
% How much extra space should every item in the scroll
% area be seperated by.
%
% /ItemBorderColor (default 0 0 0 rgbcolor)
% Color of the item border.
%
% /ItemFillColor (default 1 1 1 rgbcolor)
% Color to be used to fill scroll areas and item label.
%
% /ItemValue
% Value of last item selected. (zero referenced)
% Possible values for this variables may include 'null'
% which would indicate that nothing has been selected or
% 0-x indicating the item selected.
%
% /ItemValueArray
% Array of items selected. This item ONLY exists if
% 'AllowMultipleSelect?' is set true. Possible values for
% elements of this array include 0 or 'null' indicating
% that the item is not selected. A 1 indicates that the
% item has been selected.
%
% For changes to the following variables to be seen a
% /ShowObjectData call must be issued:
% /BufferColor, /ItemTextColor, /ItemHighLightColor
% /ShowItemSeperators, /ItemSpacing
%
% For changes to the following variables to be seen a
% /ReshapeScrollbars or /reshape call must be issued:
% /ItemLabel, /ItemLabelFont, /HScrollbar?, /VScrollbar?
%
% Example:
%
% % can is assumed to be a predefined canvas.
%
% /foo can {ItemValue (%\n) printf} /new ScrollDataItem send def
% {
% /AllowMultipleSelect? true def
% /HScrollbar? false def
% /BufferColor 1 1 0 rgbcolor def
% /ItemTextColor 0 0 1 rgbcolor def
% /ItemHighLightColor .7 .7 .7 rgbcolor def
% /ItemLabel (This is a TEST []) def
% /ItemLabelFont /Times-Bold findfont 24 scalefont def
% /ItemLabelColor 1 0 0 rgbcolor def
% % calling reshape here means we don't have to call /ReshapeScrollbars
% 50 50 200 315 reshape
% /ShowItemSeperators true def
% } foo send
%
% /fooa [foo] def
% /foom fooa forkitems def
% fooa paintitems
%
% [
% (hello)
% [(hello) 20 0 (there)]
% [(hello small) /Times-Roman findfont 10 scalefont]
% [(hello big) /Times-Bold findfont 30 scalefont]
%
% [(hello red) 1 0 0 rgbcolor]
%
% [(hello 1) /Times-Bold findfont 10 scalefont
% (hello 2) /Times-Italic findfont 20 scalefont]
%
% [(hello 3) /Times-Bold findfont 10 scalefont
% 20 20
% (hello 4) /Times-Italic findfont 20 scalefont]
% [/boy1 /boy2]
% [/horse5 0 1 0 rgbcolor]
% ] /setdata foo send
%
% (padding) 30 /additem foo send
% } def
%
%
systemdict /SimpleScrollbar known not { (NeWS/liteitem.ps) run} if
/PicScrollbar SimpleScrollbar % ptag=<PicScrollbar>
dictbegin
/MouseInItem? false def
/ScrollMonitor null def
/ScrollProcess null def
/ScrollDelay 1 60 div 20 div def % 1/10 second
/LastX null def
/LastY null def
dictend
classbegin
/new {
/new super send
begin
/ScrollMonitor createmonitor def
currentdict
end
} def
/StartItem {
TrackInterests {
exch pop
/ClientData get begin
/MyOwner /MyOwner GetFromCurrentEvent def
end
} forall
/StartItem super send
/maketrackinterests self send
} def
/ClientDown { % - => -
CurrentEvent
begin
XLocation YLocation
end
/LastY exch def
/LastX exch def
SetScrollMotion
/MouseInItem? true def
HiliteItem
DoScroll
ScrollMonitor {
ScrollProcess null ne {
ScrollProcess killprocess
} if
/ScrollProcess {
InteractiveScroll
} fork def
} monitor
} def
/InteractiveScroll {
{
ScrollDelay sleep
ScrollMonitor {
EventInItem? {
DoScroll
} if
} monitor
} loop
} def
/ClientUp { % - => -
ScrollMonitor {
ScrollProcess null ne {
ScrollProcess killprocess
} if
/ScrollProcess null def
} monitor
/MouseInItem? false def
UnhiliteItem
ItemValue ItemInitialValue ne {
NotifyUser
% This is used when we are using this scroll bar in other items...
% NOTE: If we are in the context of an event then the opperand
% stack should look like:
% |- EventMgrDict ... mark ...
% If We are not in the context of an event the
% 'GetFromCurrentEvent' will error out after pushing the
% first object on the opperand stack onto the stack again.
% This will result in pushing an extra mark onto the stack...
% Look in 'GetFromCurrentEvent', 'CurrentEvent',
% 'EventMgrDict'.
/foobar
count 1 sub index type /dicttype eq {
mark {
/Notify /MyOwner GetFromCurrentEvent send
} stopped pop cleartomark
} if
pop
} if
} def
/ClientDrag { % - => -
CurrentEvent
begin
XLocation YLocation
end
/LastY exch def
/LastX exch def
CheckItem
} def
/PaintBar { } def
/EraseBox { } def
/PaintButtons {
/PaintButtons super send
} def
/PaintBox { % - => - (paint box)
gsave
10 dict
begin
/x 1 def
/w ItemWidth 2 sub def
%
% fill in the whole bar
%
ItemFillColor setcolor
x ButtonSize w ItemHeight ButtonSize dup add sub rectpath fill
%
% fill in the view_window bar
%
BarViewPercent 1 gt {
.5 setgray
x ButtonSize w ItemHeight ButtonSize dup add sub
rectpath fill
} {
ItemValue BarMin sub BarMax BarMin sub div
BarViewPercent mul /lower exch def
/y ItemValue ValueToY def
ItemHeight ButtonSize dup add BoxSize add sub dup
lower mul /d exch def
BarViewPercent mul /h exch def
.5 setgray
x y d sub w h BoxSize add rectpath fill
} ifelse
%
% fill in the small scroll box
%
ItemValue BoxPath
BoxFillColor setcolor gsave fill grestore
ItemBorderColor setcolor eofill
end
/ItemPaintedValue ItemValue def
grestore
NotifyUser
% This is used when we are using this scroll bar in other items...
% NOTE: If we are in the context of an event then the opperand
% stack should look like:
% |- EventMgrDict ... mark ...
% If We are not in the context of an event the
% 'GetFromCurrentEvent' will error out after pushing the
% first object on the opperand stack onto the stack again.
% This will result in pushing an extra mark onto the stack...
% Look in 'GetFromCurrentEvent', 'CurrentEvent', 'EventMgrDict'.
/foobar
count 1 sub index type /dicttype eq {
mark {
/Notify /MyOwner GetFromCurrentEvent send
} stopped pop cleartomark
} if
pop
} def
/EventInItem? { % - => bool
ScrollMotion
{
/ScrollAbsolute {
false
}
/ScrollPageForward % top
{
LastX dup 0 ge exch ButtonSize le
LastY ItemValue ValueToY ButtonSize add ge
LastY ItemHeight ButtonSize sub le
and and and
}
/ScrollPageBackward % bottom
{
LastX dup 0 ge exch ButtonSize le
LastY ButtonSize ge
LastY ItemValue ValueToY le
and and and
}
/ScrollLineForward % top
{
LastX 0 ge
LastX ButtonSize le
LastY ItemHeight ButtonSize sub ge
LastY ItemHeight le
and and and
}
/ScrollLineBackward % bottom
{
LastX 0 ge
LastX ButtonSize le
LastY 0 ge
LastY ButtonSize le
and and and
}
} case
} def
/CheckItem {
ScrollMotion
{
/ScrollAbsolute {
DoScroll
}
/ScrollPageForward % top
{
/MouseInItem? EventInItem? def
}
/ScrollPageBackward % bottom
{
/MouseInItem? EventInItem? def
}
/ScrollLineForward % top
{
EventInItem? dup
{
MouseInItem? not {
HiliteItem
} if
}
{
MouseInItem? {
UnhiliteItem
} if
}
ifelse
/MouseInItem? exch def
}
/ScrollLineBackward % bottom
{
EventInItem? dup
{
MouseInItem? not {
HiliteItem
} if
}
{
MouseInItem? {
UnhiliteItem
} if
}
ifelse
/MouseInItem? exch def
}
} case
} def
/HiliteItem {
ScrollMotion
{
/ScrollAbsolute { }
/ScrollPageForward { }
/ScrollPageBackward { }
/ScrollLineForward % top
{
0 ItemHeight ButtonSize ButtonSize neg rectpath
5 setrasteropcode fill
}
/ScrollLineBackward % bottom
{
0 0 ButtonSize ButtonSize rectpath
5 setrasteropcode fill
}
} case
} def
/UnhiliteItem {
gsave
ScrollMotion
{
/ScrollAbsolute {}
/ScrollPageForward {}
/ScrollPageBackward {}
/ScrollLineForward % top
{
0 ItemHeight ButtonSize sub ButtonSize ButtonSize rectpath
clip
PaintButtons
}
/ScrollLineBackward % bottom
{
0 0 ButtonSize ButtonSize rectpath
clip
PaintButtons
}
} case
grestore
} def
classend
def
/ScrollRegionItem Item % ptag=<ScrollRegionItem>
dictbegin
/BufferCanvas null def
/BufferWidth 0 def
/BufferHeight 0 def
/HScrollbar null def
/VScrollbar null def
/HScrollbar? true def
/VScrollbar? true def
/HScrollWidth 0 def
/VScrollWidth 0 def
/ScrollWidth 16 def
/ZoomFactor 1 def
/LabelHeight 0 def % this gets set in 'ReshapeScrollbars'...
dictend
classbegin
/ItemLabel null def
/ItemLabelColor 0 0 0 rgbcolor def
/ItemLabelFont /Times-Roman findfont 12 scalefont def
% /fontoffset { % font => offset
% dup fontheight exch /FontBBox get 0 get mul neg
% } def
/NotifyUserDown { % x y => -
pop pop
} def
/NotifyUserUp { % x y => -
pop pop
} def
/NotifyUserDrag { % x y => -
pop pop
} def
/NotifyUserEnter { % x y => -
pop pop
} def
/NotifyUserExit { % x y => -
pop pop
} def
/new { % parentcanvas width height => instance
/new super send
begin
/BufferHeight ItemHeight def
/BufferWidth ItemWidth def
CreateScrollbars
CreateBuffer
currentdict
end
} def
/destroy {
% HScrollbar null ne {
% null /setowner HScrollbar send
% } if
% VScrollbar null ne {
% null /setowner VScrollbar send
% } if
%% BufferCanvas /Mapped false put
%% /BufferCanvas null def
} def
/setzoom { % zoomfactor => -
/ZoomFactor exch def
} def
/reshape { % x y w h => -
/reshape super send
ReshapeScrollbars
} def
/reshapebuffer { % w h => -
/BufferHeight exch def
/BufferWidth exch def
ReshapeBuffer
ReshapeScrollbars
} def
/getcanvas {
BufferCanvas
} def
/updatecanvas {
PaintBuffer
} def
/makestartinterests {
/makestartinterests HScrollbar send
/makestartinterests VScrollbar send
[ exch aload length 2 add -1 roll aload pop ] % join 2 arrays
dup {
/MyOwner self PutInEventMgrInterest
} forall
/makestartinterests super send
[ exch aload length 2 add -1 roll aload pop ] % join 2 arrays
} def
/PaintItem {
gsave
PaintBuffer
/paint VScrollbar send
/paint HScrollbar send
% paint the outline
ItemCanvas setcanvas
ItemBorderColor setcolor
0 HScrollWidth 1 add
ItemWidth VScrollWidth sub
ItemHeight HScrollWidth sub LabelHeight sub 1 sub
rectpath stroke
ItemLabel null ne {
% paint the label area
ItemFillColor setcolor
0 ItemHeight LabelHeight sub 2 sub
ItemWidth
LabelHeight 2 add
rectpath fill
% paint the label outline
ItemBorderColor setcolor
0 ItemHeight LabelHeight sub 2 sub
ItemWidth 1 sub
LabelHeight 2 add
rectpath stroke
% paint the label text
ItemLabelColor setcolor
ItemLabelFont setfont
ItemWidth ItemLabel stringwidth pop sub 2 div
ItemHeight LabelHeight sub
ItemLabelFont fontdescent add 1 sub moveto
ItemLabel show
} if
grestore
} def
/Notify {
% (picture got notified\n) [] dbgprintf
NotifyUser
PaintBuffer
} def
/PaintBuffer {
% (PaintBuffer begin \n) [ ] dbgprintf
gsave
ItemCanvas setcanvas
%
% compute clipping region
%
1
HScrollWidth 1 add
ItemWidth VScrollWidth sub 2 sub
LabelHeight 0 ne {
ItemHeight HScrollWidth sub LabelHeight sub 4 sub
} {
ItemHeight HScrollWidth sub 2 sub
} ifelse
rectpath
% (clip to % % % %\n) [ pathbbox ] dbgprintf
clip
%
% Clear the item....
%
/BufferColor where {
pop
BufferColor fillcanvas
} if
%
% compute translation
%
BufferWidth ZoomFactor mul ItemWidth sub VScrollWidth add neg
dup 0 lt
{
1 /getvalue HScrollbar send sub
mul
}
{
pop 0
} ifelse
BufferHeight ZoomFactor mul ItemHeight sub
HScrollWidth add LabelHeight add neg
dup 0 lt
{
1 /getvalue VScrollbar send sub
mul
}
{ } ifelse
HScrollWidth add
% 2 copy (translate by % %\n) [ 4 2 roll ] dbgprintf
translate
BufferWidth BufferHeight
% 2 copy (scale by % %\n) [ 4 2 roll ] dbgprintf
scale
ZoomFactor dup scale
pause
BufferCanvas imagecanvas
pause
grestore
% (PaintBuffer end\n) [ ] dbgprintf
} def
/CreateBuffer { % - => -
/BufferCanvas framebuffer newcanvas def
BufferCanvas /Retained true put
BufferCanvas /Opaque true put
ReshapeBuffer
} def
/ReshapeBuffer { % - => -
gsave
framebuffer setcanvas
0 0 BufferWidth BufferHeight
rectpath
BufferCanvas reshapecanvas
grestore
} def
/CreateScrollbars { % - => -
% (begin CreateScrollbars\n) [] dbgprintf
/HScrollWidth HScrollbar? { ScrollWidth } { 0 } ifelse def
/VScrollWidth VScrollbar? { ScrollWidth } { 0 } ifelse def
ItemWidth VScrollWidth le { /VScrollWidth ItemWidth 2 div def } if
ItemHeight HScrollWidth le { /HScrollWidth ItemHeight 2 div def } if
/HScrollbar
[1 0 .01 .1 ItemWidth VScrollWidth sub BufferWidth div ]
1 {} ItemCanvas
/new PicScrollbar send
dup /BarVertical? false put
def
/VScrollbar
[1 0 .01 .1 ItemHeight HScrollWidth sub BufferHeight div ]
0 {} ItemCanvas
/new PicScrollbar send
def
% self /setowner HScrollbar send
% self /setowner VScrollbar send
% (end CreateScrollbars\n) [] dbgprintf
} def
/ReshapeScrollbars {
/HScrollWidth HScrollbar? { ScrollWidth } { 0 } ifelse def
/VScrollWidth VScrollbar? { ScrollWidth } { 0 } ifelse def
/LabelHeight ItemLabelFont null ne ItemLabel null ne and
{ItemLabelFont fontheight} {0} ifelse def
ItemWidth VScrollWidth le { /VScrollWidth ItemWidth 2 div def } if
ItemHeight HScrollWidth le { /HScrollWidth ItemHeight 2 div def } if
ItemHeight LabelHeight HScrollWidth add le {
/LabelHeight ItemHeight 4 div def
} if
10 dict
begin
/h ItemHeight def
/w ItemWidth def
[1 0 .01 .1 ItemWidth VScrollWidth sub BufferWidth div ]
/setrange HScrollbar send
[1 0 .01 .1 ItemHeight HScrollWidth sub LabelHeight sub
BufferHeight div ]
/setrange VScrollbar send
HScrollbar?
{ 0 0 w VScrollWidth sub HScrollWidth }
{ 0 0 0 0 }
ifelse
% 4 copy (hscroll % % % %\n) [ 6 2 roll ] dbgprintf
/reshape HScrollbar send
LabelHeight 0 ne {
VScrollbar?
{ w VScrollWidth sub HScrollWidth
VScrollWidth h HScrollWidth sub LabelHeight sub 2 sub}
{ 0 0 0 0 }
ifelse
} {
VScrollbar?
{ w VScrollWidth sub HScrollWidth
VScrollWidth h HScrollWidth sub}
{ 0 0 0 0 }
ifelse
} ifelse
% 4 copy (vscroll % % % %\n) [ 6 2 roll ] dbgprintf
end
/reshape VScrollbar send
} def
/ClientDown {
% (Picture ClientDown\n) [] dbgprintf
% compute translation
%
BufferWidth ZoomFactor mul ItemWidth sub VScrollWidth add neg
dup 0 lt
{
1 /getvalue HScrollbar send sub
mul
}
{
pop 0
} ifelse
BufferHeight ZoomFactor mul ItemHeight sub
HScrollWidth add LabelHeight add neg
dup 0 lt
{
1 /getvalue VScrollbar send sub
mul
}
{ } ifelse
HScrollWidth add
% translatex translatey
CurrentEvent /YLocation get sub neg exch
CurrentEvent /XLocation get sub neg exch
2 copy
/tmpy exch def
/tmpx exch def
% tmpx tmpy (tmpx % tmpy %\n) printf
% (n: % %\n) [ tmpx tmpy ] dbgprintf
{
/NotifyUserDown self send
} fork
} def
/ClientUp {
% (Picture ClientUp\n) [] dbgprintf
CurrentEvent
begin
XLocation YLocation
end
/NotifyUserUp self send
} def
/ClientDrag {
% (client drag\n) [] dbgprintf
CurrentEvent
begin
XLocation YLocation
end
/NotifyUserDrag self send
} def
/ClientEnter {
%% (client enter\n) [] dbgprintf
CurrentEvent
begin
XLocation YLocation
end
/NotifyUserEnter self send
} def
/ClientExit {
%% (client exit\n) [] dbgprintf
CurrentEvent
begin
XLocation YLocation
end
/NotifyUserExit self send
} def
classend
def
/ScrollDataItem ScrollRegionItem % ptag=<ScrollDataItem>
dictbegin
/ObjectData [] def
/ObjectSizes [] def
/ObjectOffsets [] def
/LocalUserNotify {} def
/NumItems 0 def
/LastSelect null def
/ItemValueArray [] def
dictend
classbegin
% Class variables
/BufferColor 1 1 1 rgbcolor def
/AllowMultipleSelect? false def
/ItemHighLightColor 0 0 0 rgbcolor def
/ItemSpacing 4 def
/ShowItemSeperators false def
% Methods
/new { % parent_canvas notify => instence
exch 1 1 /new super send
begin
/LocalUserNotify exch def
currentdict
end
} def
/setdata { % array => -
/ObjectData exch def
/SizeAllData self send
450 exch /reshapebuffer self send
AllowMultipleSelect? {
/DeclareItemValueArray self send
} {
/LastSelect null def
} ifelse
/ShowObjectData self send
} def
/getdata { % - => array
ObjectData
} def
% if item_number is out of bounds for the data then
% the command will be ignored..
% item_number is zero referenced.
/deleteitem { % item_number => -
10 dict begin
/foo exch def
/fool ObjectData length def
foo 0 lt foo fool ge or not {
% delete an item out of the ObjectData array
/fooa fool 1 sub array def
ObjectData 0 foo getinterval fooa copy pop
ObjectData foo 1 add fool foo sub 1 sub getinterval
fooa exch foo exch putinterval
currentdict fooa end
/ObjectData exch def begin
% delete an item out of the ItemValueArray array
AllowMultipleSelect? {
/fooa fool 1 sub array def
ItemValueArray 0 foo getinterval fooa copy pop
ItemValueArray foo 1 add fool foo sub 1 sub getinterval
fooa exch foo exch putinterval
currentdict fooa end
/ItemValueArray exch def begin
} {
ItemValue foo eq {
/ItemValue null store
/LastSelect null store
} if
} ifelse
end
/SizeAllData self send
450 exch /reshapebuffer self send
/ShowObjectData self send
} {
end
} ifelse
} def
% add an item to the list
% if we are adding past the end of the list then we expand
% the list with empty strings to add the item.
% item_number is zero referenced.
% This is all very convluted code put hopefully we can deal with
% anysized array. We should never load the array in part or in
% in whole onto the operand stack...
/additem { % item_label item_number => -
10 dict begin
% some helpfull constants
/foon exch def
/fooi exch def
/fool ObjectData length def
% if we are out of bounds then don't do anything
foon 0 lt not {
% check to see if we need to extend the array with
% null strings.
foon fool gt {
/fooa foon array def
ObjectData fooa copy pop
currentdict fooa end
/ObjectData exch def begin
/fool foon def
AllowMultipleSelect? {
/fooa foon array def
ItemValueArray fooa copy pop
currentdict fooa end
/ItemValueArray exch def begin
} if
} if
% if we are inserting before the first element after
% the end of the list then just append to the list
foon fool eq {
% append to list
/fooa fool 1 add array def
ObjectData fooa copy pop
fooa fool fooi put
currentdict fooa end
/ObjectData exch def begin
AllowMultipleSelect? {
/fooa fool 1 add array def
ItemValueArray fooa copy pop
currentdict fooa end
/ItemValueArray exch def begin
} if
} {
% move the list down and insert an item.
/fooa fool 1 add array def
ObjectData 0 foon getinterval
fooa copy pop
ObjectData foon fool foon sub getinterval
fooa exch foon 1 add exch putinterval
fooa foon fooi put
currentdict fooa end
/ObjectData exch def begin
AllowMultipleSelect? {
/fooa fool 1 add array def
ItemValueArray 0 foon getinterval
fooa copy pop
ItemValueArray foon fool foon sub getinterval
fooa exch foon 1 add exch putinterval
currentdict fooa end
/ItemValueArray exch def begin
} if
} ifelse
end
/SizeAllData self send
450 exch /reshapebuffer self send
/ShowObjectData self send
} {
end
} ifelse
} def
% Change an item..
% If item does not allready exist then add it..
% If item was selected is will remain selected..
/changeitem { % item_label item_number => -
10 dict begin
/foon exch def
/fooi exch def
/fool ObjectData length def
% are we out of bounds?
foon 0 ge {
% should we call additem?
foon fool ge {
% call additem.
fooi foon end /additem self send
} {
% just change the item
ObjectData foon fooi put
end
/SizeAllData self send
450 exch /reshapebuffer self send
/ShowObjectData self send
} ifelse
} {
end
} ifelse
} def
/DeclareItemValueArray { % - => -
/ItemValueArray ObjectData length array def
ObjectData length 0 ne {
0 1 ObjectData length 1 sub {
ItemValueArray exch 0 put
} for
} if
} def
/SizeAllData { % - => total_size
/ObjectSizes ObjectData length array def
/ObjectOffsets ObjectData length array def
10 dict begin
/t ItemSpacing def
ObjectData length 0 ne {
gsave
ItemFont setfont
ObjectData length 1 sub -1 0 {
/i exch def
ObjectOffsets i t put
ObjectData i get /ThingSize self send
exch pop dup
ObjectSizes i 3 -1 roll put
t add ItemSpacing add /t exch def
} for
grestore
} if
t
end
} def
/ShowObjectData { % - => -
gsave
% First we are going to fix up the buffer.
% set up the defaults
BufferCanvas setcanvas
BufferColor fillcanvas
ItemTextColor setcolor
ItemFont setfont
% loop over all the data items writing them out
ObjectData length 0 ne {
0 1 ObjectData length 1 sub {
PutItemText
} for
} if
% go through and hilight those items that have been
% selected.
AllowMultipleSelect? {
% Redraw all the multiple selected stuff.
% Are the arrays the same length and are they
% none zero. This is a sanity check.
ItemValueArray length ObjectData length eq
ObjectData length 0 ne and {
% Loop over all the items finding highlighed
% items and redrawing them.
10 dict begin
0 1 ObjectData length 1 sub {
/i exch def
ItemValueArray i get 1 eq {
ItemHighLightColor setcolor i FillItemBox
BufferColor setcolor i PutItemText
} if
} for
end
} if
} {
% Redraw the single highlighted item.
LastSelect null ne {
ItemHighLightColor setcolor LastSelect FillItemBox
BufferColor setcolor LastSelect PutItemText
} if
} ifelse
grestore
% Now that we are finished with the buffer paint the
% the buffer and the items as a whole onto the canvas.
/PaintItem self send
} def
/ShowThingDict 20 dict dup begin
/fonttype {setfont dup type exec} def
/colortype {setcolor dup type exec} def
/integertype {rmoveto dup type exec} def
/realtype {rmoveto dup type exec} def
/stringtype {
0 currentfont fontdescent rmoveto
show
0 currentfont fontdescent neg rmoveto
dup type exec
} def
/nametype {
gsave
iconfont setfont icondict exch get cvis dup show
stringbbox 4 2 roll pop pop pop
grestore
0 rmoveto
dup type exec
} def
/arraytype {
dup xcheck {
/paint exch exec
dup type exec
} {
aload pop dup type exec
} ifelse
} def
/dicttype {/paint exch send dup type exec} def
/marktype { pop } def
/nulltype { pop dup type exec} def
end def
/ShowThing { % object => -
gsave
ShowThingDict begin
mark exch dup type exec
end
grestore
} def
/ThingSizeDict 20 dict dup begin
/x 0 def
/y 0 def
/mx 0 def
/my 0 def
/fonttype {setfont dup type exec} def
% /colortype {setcolor dup type exec} def
% color shouldn't affect size.
/colortype {pop dup type exec} def
/integertype {
y exch add /y exch def
y my gt { /my y def } if
x exch add /x exch def
x mx gt { /mx x def } if
dup type exec
} def
/realtype {
y exch add /y exch def
y my gt { /my y def } if
x exch add /x exch def
x mx gt { /mx x def } if
dup type exec
} def
/stringtype {
stringwidth pop
x exch add
/x exch def
x mx gt { /mx x def } if
currentfont fontheight
y exch add
dup my gt { /my exch def } { pop } ifelse
dup type exec
} def
/nametype {
gsave
iconfont setfont icondict exch get cvis
stringbbox % x y w h
y exch add % x y w y+h
3 -1 roll % x w y+h y
neg dup % x w y+h -y -y
3 1 roll add % x w -y y+h+(-y)
1 add
dup my gt { /my exch def } { pop } ifelse
y exch add /y exch def
x exch add % ... x x+w
exch neg add % ... x+w+(-x)
/x exch def
x mx gt { /mx x def } if
grestore
dup type exec
} def
/arraytype {
dup xcheck { % x y /size => x y mx my
x y /size 4 -1 roll exec
/my exch def
/mx exch def
/y exch def
/x exch def
dup type exec
} {
aload pop dup type exec
} ifelse
} def
/dicttype {
% x y /size => x y mx my
x y /size 4 -1 roll send
/my exch def
/mx exch def
/y exch def
/x exch def
dup type exec
} def
/marktype { pop } def
/nulltype { pop dup type exec} def
end def
/ThingSize { % object => xoff yoff
gsave
ThingSizeDict begin
/x 0 def
/y 0 def
/mx 0 def
/my 0 def
mark exch dup type exec
mx my
end
grestore
} def
/PutItemText { % item_number => -
dup ObjectOffsets exch get
5 exch moveto
dup ObjectData exch get /ShowThing self send
ShowItemSeperators {
ObjectOffsets exch get 0 exch ItemSpacing 2 div sub moveto
450 0 rlineto stroke
} {
pop
} ifelse
} def
/FillItemBox { % item_number => -
dup ObjectOffsets exch get
0 exch ItemSpacing 2 div sub 1 sub moveto
450 0 rlineto
ObjectSizes exch get 0 exch ItemSpacing add rlineto
-450 0 rlineto
closepath fill
} def
/NotifyUserDown { % x y => -
gsave
/FindItem self send
BufferCanvas setcanvas
ItemFont setfont
AllowMultipleSelect? not {
LastSelect null ne {
BufferColor setcolor LastSelect FillItemBox
ItemTextColor setcolor LastSelect PutItemText
} if
dup LastSelect eq {
pop
/LastSelect null def
/ItemValue null def
} {
dup /LastSelect exch def
/ItemValue exch def
ItemValue null ne {
ItemHighLightColor setcolor ItemValue FillItemBox
BufferColor setcolor ItemValue PutItemText
} if
} ifelse
} {
/ItemValue exch def
ItemValue null ne {
ItemValueArray ItemValue get 1 eq {
BufferColor setcolor ItemValue FillItemBox
ItemTextColor setcolor ItemValue PutItemText
ItemValueArray ItemValue 0 put
} {
% 0 BufferHeight ItemValue 1 add 18 mul sub
% 3 sub 450 18 rectpath
ItemHighLightColor setcolor ItemValue FillItemBox
BufferColor setcolor ItemValue PutItemText
ItemValueArray ItemValue 1 put
} ifelse
} if
} ifelse
grestore
/updatecanvas self send
/LocalUserNotify self send
} def
/FindItem { % x y => item_number
10 dict begin
exch pop
/y exch def
y 0 lt y BufferHeight gt or not ObjectData length 0 gt and {
/a null def
0 1 ObjectData length 1 sub {
/i exch def
ObjectOffsets i get y le {
/a i def
exit
} if
} for
a
} {
null
} ifelse
end
} def
classend
def