589 lines
18 KiB
HTML
589 lines
18 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML><HEAD><TITLE>Man page of tset</TITLE>
|
|
</HEAD><BODY>
|
|
<H1>tset</H1>
|
|
Section: User Commands (1)<BR>Updated: <BR><A HREF="#index">Index</A>
|
|
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<A NAME="lbAB"> </A>
|
|
<H2>NAME</H2>
|
|
|
|
<B>tset</B>, <B>reset</B> - terminal initialization
|
|
<A NAME="lbAC"> </A>
|
|
<H2>SYNOPSIS</H2>
|
|
|
|
<B>tset</B> [<B>-IQVcqrsw</B>] [<B>-</B>] [<B>-e</B> <I>ch</I>] [<B>-i</B> <I>ch</I>] [<B>-k</B> <I>ch</I>] [<B>-m</B> <I>mapping</I>] [<I>terminal</I>]
|
|
<BR>
|
|
|
|
<B>reset</B> [<B>-IQVcqrsw</B>] [<B>-</B>] [<B>-e</B> <I>ch</I>] [<B>-i</B> <I>ch</I>] [<B>-k</B> <I>ch</I>] [<B>-m</B> <I>mapping</I>] [<I>terminal</I>]
|
|
<A NAME="lbAD"> </A>
|
|
<H2>DESCRIPTION</H2>
|
|
|
|
<A NAME="lbAE"> </A>
|
|
<H3>tset - initialization</H3>
|
|
|
|
This program initializes terminals.
|
|
<P>
|
|
|
|
First, <B>tset</B> retrieves the current terminal mode settings
|
|
for your terminal.
|
|
It does this by successively testing
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
the standard error,
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
standard output,
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
standard input and
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
ultimately ``/dev/tty''
|
|
<P>
|
|
|
|
to obtain terminal settings.
|
|
Having retrieved these settings, <B>tset</B> remembers which
|
|
file descriptor to use when updating settings.
|
|
<P>
|
|
|
|
Next, <B>tset</B> determines the type of terminal that you are using.
|
|
This determination is done as follows, using the first terminal type found.
|
|
<P>
|
|
|
|
1. The <B>terminal</B> argument specified on the command line.
|
|
<P>
|
|
|
|
2. The value of the <B>TERM</B> environmental variable.
|
|
<P>
|
|
|
|
3. (BSD systems only.) The terminal type associated with the standard
|
|
error output device in the <I>/etc/ttys</I> file.
|
|
(On System-V-like UNIXes and systems using that convention,
|
|
<I>getty</I> does this job by setting
|
|
<B>TERM</B> according to the type passed to it by <I>/etc/inittab</I>.)
|
|
<P>
|
|
|
|
4. The default terminal type, ``unknown''.
|
|
<P>
|
|
|
|
If the terminal type was not specified on the command-line, the <B>-m</B>
|
|
option mappings are then applied (see the section
|
|
<B>TERMINAL TYPE MAPPING</B>
|
|
|
|
for more information).
|
|
Then, if the terminal type begins with a question mark (``?''), the
|
|
user is prompted for confirmation of the terminal type.
|
|
An empty
|
|
response confirms the type, or, another type can be entered to specify
|
|
a new type.
|
|
Once the terminal type has been determined,
|
|
the terminal description for the terminal is retrieved.
|
|
If no terminal description is found
|
|
for the type, the user is prompted for another terminal type.
|
|
<P>
|
|
|
|
Once the terminal description is retrieved,
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
if the ``<B>-w</B>'' option is enabled, <B>tset</B> may update
|
|
the terminal's window size.
|
|
<DL COMPACT>
|
|
<DT id="1"><DD>
|
|
If the window size cannot be obtained from the operating system,
|
|
but the terminal description (or environment, e.g., <B>LINES</B>
|
|
and <B>COLUMNS</B> variables specify this),
|
|
use this to set the operating system's notion of the window size.
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
if the ``<B>-c</B>'' option is enabled,
|
|
the backspace, interrupt and line kill characters
|
|
(among many other things) are set
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
unless the ``<B>-I</B>'' option is enabled,
|
|
the terminal
|
|
and tab <I>initialization</I> strings are sent to the standard error output,
|
|
and <B>tset</B> waits one second (in case a hardware reset was issued).
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
Finally, if the erase, interrupt and line kill characters have changed,
|
|
or are not set to their default values, their values are displayed to the
|
|
standard error output.
|
|
</DL>
|
|
<A NAME="lbAF"> </A>
|
|
<H3>reset - reinitialization</H3>
|
|
|
|
<P>
|
|
|
|
When invoked as <B>reset</B>, <B>tset</B> sets the terminal
|
|
modes to ``sane'' values:
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
sets cooked and echo modes,
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
turns off cbreak and raw modes,
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
turns on newline translation and
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
resets any unset special characters to their default values
|
|
<P>
|
|
|
|
before
|
|
doing the terminal initialization described above.
|
|
Also, rather than using the terminal <I>initialization</I> strings,
|
|
it uses the terminal <I>reset</I> strings.
|
|
<P>
|
|
|
|
The <B>reset</B> command is useful
|
|
after a program dies leaving a terminal in an abnormal state:
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
you may have to type
|
|
<P>
|
|
<BR> <I><LF></I><B>reset</B><I><LF></I>
|
|
<P>
|
|
(the line-feed character is normally control-J) to get the terminal
|
|
to work, as carriage-return may no longer work in the abnormal state.
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
Also, the terminal will often not echo the command.
|
|
<A NAME="lbAG"> </A>
|
|
<H2>OPTIONS </H2>
|
|
|
|
<P>
|
|
|
|
The options are as follows:
|
|
<DL COMPACT>
|
|
<DT id="2"><B>-c</B>
|
|
|
|
<DD>
|
|
Set control characters and modes.
|
|
<DT id="3"><B>-e</B>
|
|
|
|
<DD>
|
|
Set the erase character to <I>ch</I>.
|
|
<DT id="4"><B>-I</B>
|
|
|
|
<DD>
|
|
Do not send the terminal or tab initialization strings to the terminal.
|
|
<DT id="5"><B>-i</B>
|
|
|
|
<DD>
|
|
Set the interrupt character to <I>ch</I>.
|
|
<DT id="6"><B>-k</B>
|
|
|
|
<DD>
|
|
Set the line kill character to <I>ch</I>.
|
|
<DT id="7"><B>-m</B>
|
|
|
|
<DD>
|
|
Specify a mapping from a port type to a terminal.
|
|
See the section
|
|
<B>TERMINAL TYPE MAPPING</B>
|
|
|
|
for more information.
|
|
<DT id="8"><B>-Q</B>
|
|
|
|
<DD>
|
|
Do not display any values for the erase, interrupt and line kill characters.
|
|
Normally <B>tset</B> displays the values for control characters which
|
|
differ from the system's default values.
|
|
<DT id="9"><B>-q</B>
|
|
|
|
<DD>
|
|
The terminal type is displayed to the standard output, and the terminal is
|
|
not initialized in any way.
|
|
The option ``-'' by itself is equivalent but archaic.
|
|
<DT id="10"><B>-r</B>
|
|
|
|
<DD>
|
|
Print the terminal type to the standard error output.
|
|
<DT id="11"><B>-s</B>
|
|
|
|
<DD>
|
|
Print the sequence of shell commands to initialize the environment variable
|
|
<B>TERM</B> to the standard output.
|
|
See the section
|
|
<B>SETTING THE ENVIRONMENT</B>
|
|
|
|
for details.
|
|
<DT id="12"><B>-V</B>
|
|
|
|
<DD>
|
|
reports the version of ncurses which was used in this program, and exits.
|
|
<DT id="13"><B>-w</B>
|
|
|
|
<DD>
|
|
Resize the window to match the size deduced via <B><A HREF="/cgi-bin/man/man2html?3X+setupterm">setupterm</A></B>(3X).
|
|
Normally this has no effect,
|
|
unless <B>setupterm</B> is not able to detect the window size.
|
|
</DL>
|
|
<P>
|
|
|
|
The arguments for the <B>-e</B>, <B>-i</B>, and <B>-k</B>
|
|
options may either be entered as actual characters
|
|
or by using the ``hat''
|
|
notation, i.e., control-h may be specified as ``^H'' or ``^h''.
|
|
<P>
|
|
|
|
If neither <B>-c</B> or <B>-w</B> is given, both options are assumed.
|
|
<A NAME="lbAH"> </A>
|
|
<H2>SETTING THE ENVIRONMENT</H2>
|
|
|
|
It is often desirable to enter the terminal type and information about
|
|
the terminal's capabilities into the shell's environment.
|
|
This is done using the <B>-s</B> option.
|
|
<P>
|
|
|
|
When the <B>-s</B> option is specified, the commands to enter the information
|
|
into the shell's environment are written to the standard output.
|
|
If
|
|
the <B>SHELL</B> environmental variable ends in ``csh'', the commands
|
|
are for <B>csh</B>, otherwise, they are for <B>sh</B>.
|
|
Note, the <B>csh</B> commands set and unset the shell variable
|
|
<B>noglob</B>, leaving it unset.
|
|
The following line in the <B>.login</B>
|
|
or <B>.profile</B> files will initialize the environment correctly:
|
|
<P>
|
|
<BR> eval `tset -s options ... `
|
|
<A NAME="lbAI"> </A>
|
|
<H2>TERMINAL TYPE MAPPING</H2>
|
|
|
|
When the terminal is not hardwired into the system (or the current
|
|
system information is incorrect) the terminal type derived from the
|
|
<I>/etc/ttys</I> file or the <B>TERM</B> environmental variable is often
|
|
something generic like <B>network</B>, <B>dialup</B>, or <B>unknown</B>.
|
|
When <B>tset</B> is used in a startup script it is often desirable to
|
|
provide information about the type of terminal used on such ports.
|
|
<P>
|
|
|
|
The <B>-m</B> options maps
|
|
from some set of conditions to a terminal type, that is, to
|
|
tell <B>tset</B>
|
|
``If I'm on this port at a particular speed,
|
|
guess that I'm on that kind of terminal''.
|
|
<P>
|
|
|
|
The argument to the <B>-m</B> option consists of an optional port type, an
|
|
optional operator, an optional baud rate specification, an optional
|
|
colon (``:'') character and a terminal type.
|
|
The port type is a
|
|
string (delimited by either the operator or the colon character).
|
|
The operator may be any combination of
|
|
``>'',
|
|
``<'',
|
|
``@'',
|
|
and ``!'';
|
|
``>'' means greater than,
|
|
``<'' means less than,
|
|
``@'' means equal to and
|
|
``!'' inverts the sense of the test.
|
|
The baud rate is specified as a number and is compared with the speed
|
|
of the standard error output (which should be the control terminal).
|
|
The terminal type is a string.
|
|
<P>
|
|
|
|
If the terminal type is not specified on the command line, the <B>-m</B>
|
|
mappings are applied to the terminal type.
|
|
If the port type and baud
|
|
rate match the mapping, the terminal type specified in the mapping
|
|
replaces the current type.
|
|
If more than one mapping is specified, the
|
|
first applicable mapping is used.
|
|
<P>
|
|
|
|
For example, consider the following mapping: <B>dialup>9600:vt100</B>.
|
|
The port type is dialup , the operator is >, the baud rate
|
|
specification is 9600, and the terminal type is vt100.
|
|
The result of
|
|
this mapping is to specify that if the terminal type is <B>dialup</B>,
|
|
and the baud rate is greater than 9600 baud, a terminal type of
|
|
<B>vt100</B> will be used.
|
|
<P>
|
|
|
|
If no baud rate is specified, the terminal type will match any baud rate.
|
|
If no port type is specified, the terminal type will match any port type.
|
|
For example, <B>-m dialup:vt100 -m :?xterm</B>
|
|
will cause any dialup port, regardless of baud rate, to match the terminal
|
|
type vt100, and any non-dialup port type to match the terminal type ?xterm.
|
|
Note, because of the leading question mark, the user will be
|
|
queried on a default port as to whether they are actually using an xterm
|
|
terminal.
|
|
<P>
|
|
|
|
No whitespace characters are permitted in the <B>-m</B> option argument.
|
|
Also, to avoid problems with meta-characters, it is suggested that the
|
|
entire <B>-m</B> option argument be placed within single quote characters,
|
|
and that <B>csh</B> users insert a backslash character (``\'') before
|
|
any exclamation marks (``!'').
|
|
<A NAME="lbAJ"> </A>
|
|
<H2>HISTORY</H2>
|
|
|
|
<P>
|
|
|
|
A <B>reset</B> command appeared in 2BSD (April 1979), written by Kurt Shoens.
|
|
This program set the <I>erase</I> and <I>kill</I> characters
|
|
to <B>^H</B> (backspace) and <B>@</B> respectively.
|
|
Mark Horton improved that in 3BSD (October 1979), adding
|
|
<I>intr</I>, <I>quit</I>, <I>start</I>/<I>stop</I> and <I>eof</I> characters
|
|
as well as changing the program to avoid modifying any user settings.
|
|
<P>
|
|
|
|
Later in 4.1BSD (December 1980),
|
|
Mark Horton added a call to the <B>tset</B> program
|
|
using the <B>-I</B> and <B>-Q</B> options, i.e.,
|
|
using that to improve the terminal modes.
|
|
With those options,
|
|
that version of <B>reset</B> did not use the termcap database.
|
|
<P>
|
|
|
|
A separate <B>tset</B> command was provided in 2BSD by Eric Allman.
|
|
While the oldest published source (from 1979)
|
|
provides both <B>tset</B> and <B>reset</B>,
|
|
Allman's comments in the 2BSD source code indicate
|
|
that he began work in October 1977,
|
|
continuing development over the next few years.
|
|
<P>
|
|
|
|
In September 1980, Eric Allman modified <B>tset</B>,
|
|
adding the code from the existing ``reset''
|
|
feature when <B>tset</B> was invoked as <B>reset</B>.
|
|
Rather than simply copying the existing program,
|
|
in this merged version, <B>tset</B> used the termcap database
|
|
to do additional (re)initialization of the terminal.
|
|
This version appeared in 4.1cBSD, late in 1982.
|
|
<P>
|
|
|
|
Other developers (e.g., Keith Bostic and Jim Bloom)
|
|
continued to modify <B>tset</B> until 4.4BSD was released in 1993.
|
|
<P>
|
|
|
|
The <B>ncurses</B> implementation
|
|
was lightly adapted from the 4.4BSD sources for a terminfo environment by Eric
|
|
S. Raymond <<A HREF="mailto:esr@snark.thyrsus.com">esr@snark.thyrsus.com</A>>.
|
|
<A NAME="lbAK"> </A>
|
|
<H2>COMPATIBILITY</H2>
|
|
|
|
<P>
|
|
|
|
Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7
|
|
(POSIX.1-2008) nor
|
|
X/Open Curses Issue 7 documents <B>tset</B> or <B>reset</B>.
|
|
<P>
|
|
|
|
The AT&T <B>tput</B> utility (AIX, HPUX, Solaris)
|
|
incorporated the terminal-mode manipulation as well as termcap-based features
|
|
such as resetting tabstops from <B>tset</B> in BSD (4.1c),
|
|
presumably with the intention of making <B>tset</B> obsolete.
|
|
However, each of those systems still provides <B>tset</B>.
|
|
In fact, the commonly-used <B>reset</B> utility
|
|
is always an alias for <B>tset</B>.
|
|
<P>
|
|
|
|
The <B>tset</B> utility provides for backward-compatibility with BSD
|
|
environments (under most modern UNIXes, <B>/etc/inittab</B> and <B><A HREF="/cgi-bin/man/man2html?8+getty">getty</A></B>(8)
|
|
can set <B>TERM</B> appropriately for each dial-up line; this obviates what was
|
|
<B>tset</B>'s most important use).
|
|
This implementation behaves like 4.4BSD
|
|
<B>tset</B>, with a few exceptions specified here.
|
|
<P>
|
|
|
|
A few options are different
|
|
because the <B>TERMCAP</B> variable
|
|
is no longer supported under terminfo-based <B>ncurses</B>:
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
The <B>-S</B> option of BSD <B>tset</B> no longer works;
|
|
it prints an error message to the standard error and dies.
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
The <B>-s</B> option only sets <B>TERM</B>, not <B>TERMCAP</B>.
|
|
<P>
|
|
|
|
There was an undocumented 4.4BSD feature
|
|
that invoking <B>tset</B> via a link named
|
|
``TSET'' (or via any other name beginning with an upper-case letter)
|
|
set the terminal to use upper-case only.
|
|
This feature has been omitted.
|
|
<P>
|
|
|
|
The <B>-A</B>, <B>-E</B>, <B>-h</B>, <B>-u</B> and <B>-v</B>
|
|
options were deleted from the <B>tset</B>
|
|
utility in 4.4BSD.
|
|
None of them were documented in 4.3BSD and all are
|
|
of limited utility at best.
|
|
The <B>-a</B>, <B>-d</B>, and <B>-p</B> options are similarly
|
|
not documented or useful, but were retained as they appear to be in
|
|
widespread use.
|
|
It is strongly recommended that any usage of these
|
|
three options be changed to use the <B>-m</B> option instead.
|
|
The <B>-a</B>, <B>-d</B>, and <B>-p</B> options
|
|
are therefore omitted from the usage summary above.
|
|
<P>
|
|
|
|
Very old systems, e.g., 3BSD, used a different terminal driver which
|
|
was replaced in 4BSD in the early 1980s.
|
|
To accommodate these older systems, the 4BSD <B>tset</B> provided a
|
|
<B>-n</B> option to specify that the new terminal driver should be used.
|
|
This implementation does not provide that choice.
|
|
<P>
|
|
|
|
It is still permissible to specify the <B>-e</B>, <B>-i</B>,
|
|
and <B>-k</B> options without arguments,
|
|
although it is strongly recommended that such usage be fixed to
|
|
explicitly specify the character.
|
|
<P>
|
|
|
|
As of 4.4BSD,
|
|
executing <B>tset</B> as <B>reset</B> no longer implies the <B>-Q</B> option.
|
|
Also, the interaction between the - option and the <I>terminal</I>
|
|
argument in some historic implementations of <B>tset</B> has been removed.
|
|
<P>
|
|
|
|
The <B>-c</B> and <B>-w</B> options are not found in earlier implementations.
|
|
However, a different window size-change feature was provided in 4.4BSD.
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
In 4.4BSD, <B>tset</B> uses the window size from the termcap description
|
|
to set the window size if <B>tset</B> is not able to obtain the window
|
|
size from the operating system.
|
|
|
|
<BR> .IP • 4
|
|
|
|
|
|
In ncurses, <B>tset</B> obtains the window size using
|
|
<B>setupterm</B>, which may be from
|
|
the operating system,
|
|
the <B>LINES</B> and <B>COLUMNS</B> environment variables or
|
|
the terminal description.
|
|
<P>
|
|
|
|
Obtaining the window size from the terminal description is common to
|
|
both implementations, but considered obsolescent.
|
|
Its only practical use is for hardware terminals.
|
|
Generally speaking, a window size would be unset only if there were
|
|
some problem obtaining the value from the operating system
|
|
(and <B>setupterm</B> would still fail).
|
|
For that reason, the <B>LINES</B> and <B>COLUMNS</B> environment variables
|
|
may be useful for working around window-size problems.
|
|
Those have the drawback that if the window is resized,
|
|
those variables must be recomputed and reassigned.
|
|
To do this more easily, use the <B><A HREF="/cgi-bin/man/man2html?1+resize">resize</A></B>(1) program.
|
|
<A NAME="lbAL"> </A>
|
|
<H2>ENVIRONMENT</H2>
|
|
|
|
The <B>tset</B> command uses these environment variables:
|
|
<DL COMPACT>
|
|
<DT id="14">SHELL<DD>
|
|
tells <B>tset</B> whether to initialize <B>TERM</B> using <B>sh</B> or
|
|
<B>csh</B> syntax.
|
|
<DT id="15">TERM<DD>
|
|
Denotes your terminal type.
|
|
Each terminal type is distinct, though many are similar.
|
|
<DT id="16">TERMCAP<DD>
|
|
may denote the location of a termcap database.
|
|
If it is not an absolute pathname, e.g., begins with a ``/'',
|
|
<B>tset</B> removes the variable from the environment before looking
|
|
for the terminal description.
|
|
</DL>
|
|
<A NAME="lbAM"> </A>
|
|
<H2>FILES</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="17">/etc/ttys<DD>
|
|
system port name to terminal type mapping database (BSD versions only).
|
|
<DT id="18">/etc/terminfo<DD>
|
|
terminal capability database
|
|
</DL>
|
|
<A NAME="lbAN"> </A>
|
|
<H2>SEE ALSO</H2>
|
|
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?1+csh">csh</A></B>(1),
|
|
<B><A HREF="/cgi-bin/man/man2html?1+sh">sh</A></B>(1),
|
|
<B><A HREF="/cgi-bin/man/man2html?1+stty">stty</A></B>(1),
|
|
<B><A HREF="/cgi-bin/man/man2html?3X+curs_terminfo">curs_terminfo</A></B>(3X),
|
|
<B><A HREF="/cgi-bin/man/man2html?4+tty">tty</A></B>(4),
|
|
<B><A HREF="/cgi-bin/man/man2html?5+terminfo">terminfo</A></B>(5),
|
|
<B><A HREF="/cgi-bin/man/man2html?5+ttys">ttys</A></B>(5),
|
|
<B><A HREF="/cgi-bin/man/man2html?7+environ">environ</A></B>(7)
|
|
|
|
<P>
|
|
|
|
This describes <B>ncurses</B>
|
|
version 6.2 (patch 20200212).
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </A><H2>Index</H2>
|
|
<DL>
|
|
<DT id="19"><A HREF="#lbAB">NAME</A><DD>
|
|
<DT id="20"><A HREF="#lbAC">SYNOPSIS</A><DD>
|
|
<DT id="21"><A HREF="#lbAD">DESCRIPTION</A><DD>
|
|
<DL>
|
|
<DT id="22"><A HREF="#lbAE">tset - initialization</A><DD>
|
|
<DT id="23"><A HREF="#lbAF">reset - reinitialization</A><DD>
|
|
</DL>
|
|
<DT id="24"><A HREF="#lbAG">OPTIONS </A><DD>
|
|
<DT id="25"><A HREF="#lbAH">SETTING THE ENVIRONMENT</A><DD>
|
|
<DT id="26"><A HREF="#lbAI">TERMINAL TYPE MAPPING</A><DD>
|
|
<DT id="27"><A HREF="#lbAJ">HISTORY</A><DD>
|
|
<DT id="28"><A HREF="#lbAK">COMPATIBILITY</A><DD>
|
|
<DT id="29"><A HREF="#lbAL">ENVIRONMENT</A><DD>
|
|
<DT id="30"><A HREF="#lbAM">FILES</A><DD>
|
|
<DT id="31"><A HREF="#lbAN">SEE ALSO</A><DD>
|
|
</DL>
|
|
<HR>
|
|
This document was created by
|
|
<A HREF="/cgi-bin/man/man2html">man2html</A>,
|
|
using the manual pages.<BR>
|
|
Time: 00:05:28 GMT, March 31, 2021
|
|
</BODY>
|
|
</HTML>
|