.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "App::Asciio 3pm" .TH App::Asciio 3pm "2017-11-07" "perl v5.26.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" App::Asciio \- Plain ASCII diagram .PP .Vb 12 \& | | | | \& | | | | | | \& | | | | | | \& v | v | v | \& v v v \& _\|_\|_\|_\|_ _\|_\|_\|_\|_ \& /\e _ \e /\e _\|_ \e \& \e \e \e_\e \e _\|_\|_ _\|_\|_ _ _\e \e \e \e \e \& \-\-\-\-\-> \e \e _\|_ \e / _\|_\e / _\|_\|_\e/\e \e/\e \e \e \e \e \e \-\-\-\-\-> \& \e \e \e \e \e/\e_\|_, \e/\e \e_\|_\|_\*(Aq \e \e \e \e \e \e_\e \e \& \e \e_\e \e_\e/\e_\|_\|_\|_/\e \e_\|_\|_\|_/\e \e_\e \e_\e \e_\|_\|_\|_\|_\e \& \e/_/\e/_/\e/_\|_\|_/ \e/_\|_\|_/ \e/_/\e/_/\e/_\|_\|_\|_\|_/ \& \& | | | | \& | | | | | | | \& v | | | v | | \& | v | | | \& v | | v \& v v \& (\e_/) \& (O.o) ASCII world domination is near! \& (> <) .Ve .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& $> perl asciio.pl .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" It has always been painful to do \s-1ASCII\s0 diagrams by hand. This perl application allows you to draw \s-1ASCII\s0 diagrams in a modern (but simple) graphical interface. .PP The \s-1ASCII\s0 graphs can be saved as \s-1ASCII\s0 or in a format that allows you to modify them later. .PP Special thanks go to the Muppet and the gtk-perl group, Gabor Szabo for his help and advices. .PP Adam Kennedy coined the cool name. .SH "DOCUMENTATION" .IX Header "DOCUMENTATION" .SS "Asciio user interface" .IX Subsection "Asciio user interface" .Vb 10 \& .\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-. \& | Asciio | \& |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| \& | ............................................................... | \& | ..............\-\-\-\-\-\-\-\-\-\-\-\-\-..\-\-\-\-\-\-\-\-\-\-\-\-..\-\-\-\-\-\-\-\-\-\-\-\-\-\-...... | \& | .............| stencils > || asciio > || box |..... | \& | .............| Rulers > || computer > || text |..... | \& | .............| File > || people > || wirl_arrow |..... | \& grid\-\-\-\-\-\-\-\-\-\->.......\*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq| divers > || axis |..... | \& | ......................^.....\*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq| boxes > |..... | \& | ......................|...................| rulers > |..... | \& | ......................|...................\*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq..... | \& | ......................|........................................ | \& | ......................|........................................ | \& | ......................|........................................ | \& | ......................|........................................ | \& \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq \& | \& | \& context menu .Ve .PP Press 'F1' for help. .SS "context menu" .IX Subsection "context menu" The context menu allows one to access to \fBAsciio\fR commands. .SS "keyboard shortcuts" .IX Subsection "keyboard shortcuts" All the keyboard commands definitions can be found under \fIasciio/setup/actions/\fR. Among the commands implemented are: .IP "\(bu" 2 select all .IP "\(bu" 2 delete .IP "\(bu" 2 undo .IP "\(bu" 2 group/ungroup .IP "\(bu" 2 open / save .IP "\(bu" 2 local clipboard operations .IP "\(bu" 2 send to front/back .IP "\(bu" 2 insert arrow, boxes, text .IP "\(bu" 2 \&... .PP The available commands are displayed if you press \fBK\fR. .SS "elements" .IX Subsection "elements" There are a few elements implemented at the moment. .PP \fIwirl arrow\fR .IX Subsection "wirl arrow" .PP An arrow that tries to do what you want. Try rotating the end clockwise then counter clockwise to see how it acts .PP .Vb 10 \& ^ \& | \& | \-\-\-\-\-\-\-\-. \& | | \& \*(Aq\-\-\-\-\-\-\- | \& | \& O\-\-\-\-\-\-\-\-\-\-\-\-\-X / | \& / | \& / | \& / v \& / \& / \& v .Ve .PP \fImulti section wirl arrow\fR .IX Subsection "multi section wirl arrow" .PP A set of whirl arrows connected to each other .PP .Vb 8 \& .\-\-\-\-\-\-\-\-\-\-. . \& | | \e / \e \& .\-\-\-\-\-\-\-\*(Aq ^ \e / \e \& | \e \e / \e \& | .\-\-\-\-\-\-\-\-\-\-\-> \e \*(Aq . \& | \*(Aq\-\-\-\-. \e / \& | | \e / \& \*(Aq\-\-\-\-\-\-\-\-\*(Aq \*(Aq\-\-\-\-\-\-\-\*(Aq .Ve .PP \fIangled arrow and axis\fR .IX Subsection "angled arrow and axis" .PP .Vb 4 \& \-\-\-\-\-\-\-. .\-\-\-\-\-\-\- \& \e / \& \e / \& \e / \& \& / \e \& / \e \& / \e \& \-\-\-\-\-\-\*(Aq \*(Aq\-\-\-\-\-\-\- \& \& ^ \& ^ | ^ \& \e | / \& \e | / \& \e | / \& <\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-> \& / |\e \& / | \e \& / | \e \& v | v \& v .Ve .PP \fIbox and text\fR .IX Subsection "box and text" .PP .Vb 10 \& .\-\-\-\-\-\-\-\-\-\-. \& | title | \& .\-\-\-\-\-\-\-\-\-\-. |\-\-\-\-\-\-\-\-\-\-| ************ \& | | | body 1 | * * \& \*(Aq\-\-\-\-\-\-\-\-\-\-\*(Aq | body 2 | ************ \& \*(Aq\-\-\-\-\-\-\-\-\-\-\*(Aq \& anything in a box \& (\e_/) | \& edit_me (O.o) <\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq \& (> <) .Ve .PP You can also use the 'External commands in box' to direct an external command output to a box. Default shortcuts are 'x' and \s-1CTL +\s0 'x'. .PP \fI\*(L"if\*(R" box and \*(L"process\*(R" box\fR .IX Subsection "if box and process box" .PP .Vb 6 \& _\|_\|_\|_\|_\|_\|_\|_\|_\|_\|_\|_ \& .\-\-\-\-\-\-\-\-\-\-\-\-\-\-. \e \e \& / a == b \e \e \e _\|_\|_\|_\|_\|_\|_\|_\|_\|_ \& ( && ) ) process ) \e \e \& \e \*(Aqstring\*(Aq ne \*(Aq\*(Aq / / / ) process ) \& \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq /_\|_\|_\|_\|_\|_\|_\|_\|_\|_\|_/ /_\|_\|_\|_\|_\|_\|_\|_\|_/ .Ve .PP \fIyour own stencils\fR .IX Subsection "your own stencils" .PP Take a look at \fIsetup/stencils/computer\fR for a stencil example. Stencils listed in \fIsetup/setup.ini\fR will be loaded when \fBAsciio\fR starts. .PP \fIyour own element type\fR .IX Subsection "your own element type" .PP For simple elements, put your design in a box. That should cover 90% of anyone's needs. You can look in \&\fIlib/stripes\fR for element implementation examples. .SS "exporting to \s-1ASCII\s0" .IX Subsection "exporting to ASCII" You can export to a file in \s-1ASCII\s0 format but using the \fB.txt\fR extension. .PP Exporting to the clipboard is done with \fBctl + e\fR. .SH "EXAMPLES" .IX Header "EXAMPLES" .Vb 9 \& User code ^ ^ OS code \& \e / \& \e / \& \e / \& User code <\-\-\-\-Mode\-\-\-\-\->OS code \& / \e \& / \e \& / \e \& User code v v OS code \& \& \& .\-\-\-. .\-\-\-. .\-\-\-. .\-\-\-. .\-\-\-. .\-\-\-. \& OS API \*(Aq\-\-\-\*(Aq \*(Aq\-\-\-\*(Aq \*(Aq\-\-\-\*(Aq \*(Aq\-\-\-\*(Aq \*(Aq\-\-\-\*(Aq \*(Aq\-\-\-\*(Aq \& | | | | | | \& v v | v | v \& .\-\-\-\-\-\-\-\-\-\-\-\-. | .\-\-\-\-\-\-\-\-\-\-\-. | .\-\-\-\-\-. \& | Filesystem | | | Scheduler | | | MMU | \& \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq | \*(Aq\-\-\-\-\-\-\-\-\-\-\-\*(Aq | \*(Aq\-\-\-\-\-\*(Aq \& | | | | \& v | | v \& .\-\-\-\-. | | .\-\-\-\-\-\-\-\-\-. \& | IO |<\-\-\-\-\*(Aq | | Network | \& \*(Aq\-\-\-\-\*(Aq | \*(Aq\-\-\-\-\-\-\-\-\-\*(Aq \& | | | \& v v v \& .\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-. \& | HAL | \& \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq \& \& \& \& \& .\-\-\-\-\-\-\-\-\-. .\-\-\-\-\-\-\-\-\-. \& | State 1 | | State 2 | \& \*(Aq\-\-\-\-\-\-\-\-\-\*(Aq \*(Aq\-\-\-\-\-\-\-\-\-\*(Aq \& ^ \e ^ \e \& / \e / \e \& / \e / \e \& / \e / \e \& / \e / \e \& / v v \& ****** ****** ****** \& * T1 * * T2 * * T3 * \& ****** ****** ****** \& ^ ^ / \& \e \e / \& \e \e / \& \e \e / stimuli \& \e \e / \& \e \e v \& \e .\-\-\-\-\-\-\-\-\-. \& \*(Aq\-\-\-\-\-\-\-\-| State 3 | \& \*(Aq\-\-\-\-\-\-\-\-\-\*(Aq \& \& \& .\-\-Base::Class::Derived_A \& / \& .\-\-\-\-Base::Class::Derived_B \& Something\-\-\-\-\-\-\-\-. / \e \& \e / \*(Aq\-\-\-Base::Class::Derived::More \& Something::else \e / \e \& \e \e / \*(Aq\-Base::Class::Derived::Deeper \& \e \e / \& \e \e .\-\-\-\-\-\-\-\-\-\-\-Base::Class::Derived_C \& \e \e / \& \*(Aq\-\-\-\-\-\-\-Base::Class \& / \e \e \e \& \*(Aq \e \e \e \& | \e \e \*(Aq\-\-\-The::Latest \& /| \e \e \e \& With::Some::fantasy\*(Aq \*(Aq \e \e \*(Aq\-\-\-\-The::Latest::Greatest \& /| \e \e \& More::Stuff\*(Aq \*(Aq \e \*(Aq\-I::Am::Running::Out::Of::Ideas \& /| \e \& More::Stuff\*(Aq \*(Aq \e \& / \*(Aq\-\-\-Last::One \& More::Stuff\*(Aq \& \& \& _\|_\|_\|_[] \& | _\|_\|_ | \& || || device \& ||_\|_\|_|| loads \& | ooo |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-. \& | ooo | | | | \& | ooo | | | | \& \*(Aq_\|_\|_\|_\|_\*(Aq | | | \& | | | \& v v v \& .\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-. .\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-. .\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-. \& | Loadable module C | | Loadable module A | | Loadable module B | \& \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| | (instrumented) | \& | | .\-\-\-\-\-. | \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq \& \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\->| A.o | | | \& calls | \*(Aq\-\-\-\-\-\*(Aq | | \& | .\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-. | | \& | | A.instrumented.o |<\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq \& | \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq | calls \& \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq .Ve .SH "DEPENDENCIES" .IX Header "DEPENDENCIES" gnome libraries, gtk, gtk-perl for the gtk version .SH "BUGS AND LIMITATIONS" .IX Header "BUGS AND LIMITATIONS" Undoubtedly many as I wrote this as a fun little project where I used no design nor 'methodic' whatsoever. .SH "AUTHOR" .IX Header "AUTHOR" .Vb 3 \& Khemir Nadim ibn Hamouda \& CPAN ID: NKH \& mailto:nadim@khemir.net .Ve .SH "LICENSE AND COPYRIGHT" .IX Header "LICENSE AND COPYRIGHT" This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .SH "SUPPORTED OSes" .IX Header "SUPPORTED OSes" .SS "Gentoo" .IX Subsection "Gentoo" I run gentoo, packages to install gtk-perl exist. Install Asciio with cpan. .SS "FreeBSD" .IX Subsection "FreeBSD" FreeBSD users can now install asciio either by package: .PP $ pkg_add \-r asciio .PP or from source (out of the ports system) by: .PP $ cd /usr/ports/graphics/asciio $ make install clean .PP Thanks to Emanuel Haupt. .SS "Ubuntu and Debian" .IX Subsection "Ubuntu and Debian" Ports are on the way. .SS "Windows" .IX Subsection "Windows" \&\fBAsciio\fR is part of the \fBcamelbox\fR distribution and can be found here: . Install, run AsciiO from the 'bin' directory. .PP .Vb 10 \& .\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-. \& / /| \& / camelbox for win32 / | \& / / | \& / / | \& .\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-. | \& | _\|_\|_\|_\|_\|_\e\e_, | | \& | (_. _ o_ _/ | | \& | \*(Aq\-\*(Aq \e_. / | | \& | / / | | \& | / / .\-\-. .\-\-. | | \& | ( ( / \*(Aq\*(Aq \e/ \*(Aq\*(Aq \e " | | \& | \e \e_.\*(Aq \e ) | | \& | || _ \*(Aq./ | | \& | |\e \e _\|_\|_.\*(Aq\e / | | \& | \*(Aq\-./ .\*(Aq \e |/ | | \& | \e| / )|\e | | \& | |/ // \e\e | . \& | |\e _\|_// \e\e_\|_ | / \& | //\e\e /_\|_/ mrf\e_\|_| | / \& | .\-\-_/ \e_\-\-. | / \& | /_\|_/ \e_\|_\e |/ \& \*(Aq\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*(Aq .Ve .PP \&\fBcamelbox\fR is a great distribution for windows. I hope it will merge with X\-berry series of Perl distributions. .SH "Mac OsX" .IX Header "Mac OsX" This works too (and I have screenshots to prove it :). I don't own a mac and the mac user hasn't send me how to do it yet. .SH "other unices" .IX Header "other unices" \&\s-1YMMV,\s0 install gtk-perl and AsciiO from cpan. .SH "SEE ALSO" .IX Header "SEE ALSO" .Vb 6 \& http://www.jave.de \& http://search.cpan.org/~osfameron/Text\-JavE\-0.0.2/JavE.pm \& http://ditaa.sourceforge.net/ \& http://www.codeproject.com/KB/macros/codeplotter.aspx \& http://search.cpan.org/~jpierce/Text\-FIGlet\-1.06/FIGlet.pm \& http://www.fossildraw.com/?gclid=CLanxZXxoJECFRYYEAodnBS8Dg (doesn\*(Aqt always respond) \& \& http://www.ascii\-art.de (used some entries as base for the network stencil) \& http://c2.com/cgi/wiki?UmlAsciiArt \& http://www.textfiles.com/art/ \& http://www2.b3ta.com/_bunny/texbunny.gif \& \& \& *\eo_ _o/* \& / * * \e \& <\e *\eo/* /> \& ) \& o/* / > *\eo \& <\e /> \& _\|_o */\e /\e* o_\|_ \& * /> <\e * \& /\e* _\|_o_ _o_\|_ */\e \& * / * * \e * \& <\e /> \& *\eo/* \& ejm97 _\|_)_\|_ .Ve