imported Cortex 2.1.2 documentation

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16642 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Marcus Overhagen 2006-03-08 13:30:15 +00:00
parent a68701612a
commit 24159a0c7d
7 changed files with 524 additions and 0 deletions

View File

@ -0,0 +1,48 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CORTEX media toolkit: Installation Instructions</title>
</head>
<body bgcolor="#103050" text=white link=white vlink=white alink=yellow>
<table cellspacing=0 cellpadding=0 width=630><tr><td width=80>&nbsp;</td><td width=490><big><big>
<b>CORTEX</b>
installation notes</big></big><small><br>&nbsp;</small>
</td><td width=60>&nbsp;</td></tr>
<tr><td align=right><small>release</small>&nbsp;&nbsp;</td>
<td><b>2.1.2</b></td></tr>
<tr><td align=right><small>maintained&nbsp;by</small>&nbsp;&nbsp;</td>
<td><b><a
href="mailto:em@be.com">Eric Moon</a></b></td></tr>
<tr><td align=right><small>last&nbsp;updated</small>&nbsp;&nbsp;</td>
<td><b>13 June, 2000</td></tr>
<tr><td></td><td><small>For current project info, visit <a
href="http://cortex.sourceforge.net">http://cortex.sourceforge.net</a></small><br><br>
<a href="index.html">Back to index...</a><br>
&nbsp;</td></tr>
<tr><td></td><td colspan=2><img src="images/pix-white.gif" width=550 height=1><br>
&nbsp;</td></tr>
<!-- section 1 body -->
<tr valign=top><td><font color="#e0c0a0"><small><small>installing<br>add-ons</td><td>
<p>Sample add-ons are provided in the <tt>add-ons.ppc</tt> and <tt>add-ons.x86</tt> folders.
To install add-ons for your architecture, select all of the <tt>'.media_addon'</tt> files in the
appropriate folder and drag them to the linked folder named <tt>'[DRAG HERE TO INSTALL]'</tt>.
</p>
</td></tr>
</table>
<!-- copyright notice -->
<br><br><br>
<img src="images/pix-white.gif" width=630 height=1><br clear=all>
<table cellpadding=0 cellspacing=0 width=630><tr>
<td align=right>
<small><small>Copyright &copy; 1999-2000, Eric Moon. All rights reserved.</td></tr></table>
<!-- end copyright notice -->
</body>
</html>

View File

@ -0,0 +1,153 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Release Notes for Cortex r2.1.2</title>
</head>
<body bgcolor="#103050" text=white link=white vlink=white alink=yellow>
<table cellspacing=0 cellpadding=0 width=630><tr><td width=80>&nbsp;</td><td width=490><big><big>
<b>CORTEX Release Notes</b></big></big><small><br>&nbsp;</small>
</td><td width=60>&nbsp;</td></tr>
<tr><td align=right><small>this release</small>&nbsp;&nbsp;</td>
<td><b>2.1.2</b></td></tr>
<tr><td align=right><small>maintained&nbsp;by</small>&nbsp;&nbsp;</td>
<td><b><a
href="mailto:em@be.com">Eric Moon</a></b></td></tr>
<tr><td align=right><small>last&nbsp;updated</small>&nbsp;&nbsp;</td>
<td><b>13 June, 2000</td></tr>
<tr><td></td><td><small>For current project info, visit <a
href="http://cortex.sourceforge.net">http://cortex.sourceforge.net</a><br>
Please send bug reports to <a
href="mailto:em@be.com">em@be.com</a></small><br><br>
<a href="index.html">Back to index...</a><br>
&nbsp;</td></tr>
<tr><td></td><td colspan=2><img src="images/pix-white.gif" width=550 height=1 hspace=0><br>
&nbsp;</td></tr>
<!-- section 2.1.2 header
************* -->
<tr valign=top><td align=right></td><td>
<b><a name="r2_1_2">r2.1.2</a><br>&nbsp;
</td><td align=right>
<small><small>
<font color="#e0c0a0">[</font>up<font color="#e0c0a0">]</font>
<font color="#e0c0a0">[</font><a href="#r2_1_0">down</a><font color="#e0c0a0">]</font>
</td></tr>
<!-- section 2.1.2 body
************* -->
<tr valign=top><td></td><td><b>Bug fixes &amp; minor UI improvements</b><ul>
<li>Fixes for several UI bugs (including a severe one exposed by the BeOS 5.0.1
update -- the inability to drag nodes from the Media Add-Ons window.)
<li>Errors and confirmation of actions now appear in the status panel in the
lower left of the routing window.
</ul>
</td></tr>
<tr><td></td><td colspan=2><img src="images/pix-white.gif" width=550 height=1 hspace=0><br>
&nbsp;</td></tr>
<!-- section 2.1.0 header
************* -->
<tr valign=top><td align=right></td><td>
<b><a name="r2_1_0">r2.1.0</a><br>&nbsp;
</td><td align=right>
<small><small>
<font color="#e0c0a0">[</font><a href="#r2_1_2">up</a><font color="#e0c0a0">]</font>
<font color="#e0c0a0">[</font><a href="#dr2_0_2">down</a><font color="#e0c0a0">]</font>
</td></tr>
<!-- section 2.1.0 body
************* -->
<tr valign=top><td></td><td><b>BeOS 5 Version, new UI</b><ul>
<li>Cortex is ready for BeOS 5. Thanks to the hard work of
Christopher Lenz (<a href="mailto:cmlenz@gmx.de">cmlenz@gmx.de</a> it
sports a much friendlier user interface.
<li>Bugs fixed, blah blah blah.
</ul>
</td></tr>
<tr><td></td><td colspan=2><img src="images/pix-white.gif" width=550 height=1 hspace=0><br>
&nbsp;</td></tr>
<!-- section dr2.0.2 header
************* -->
<tr valign=top><td align=right></td><td>
<b><a name="dr2_0_2">dr2.0.2</a><br>&nbsp;
</td><td align=right>
<small><small>
<font color="#e0c0a0">[</font><a href="#r2_1_0">up</a><font color="#e0c0a0">]</font>
<font color="#e0c0a0">[</font><a href="#dr2_0_1">down</a><font color="#e0c0a0">]</font>
</td></tr>
<!-- section dr2.0.2 body
************* -->
<tr valign=top><td></td><td><b>PowerPC Version</b><ul>
<li>Cortex now compiles on the Metrowerks PPC compiler.
</ul>
</td></tr>
<tr valign=top><td></td><td><b>Features</b><ul>
<li>Position reporting: the node inspector window now displays the node's playback
position in SMPTE format. Position reporting has been disabled for video-buffer
producers that read from files (the video-file players and/or codecs in BeOS R4.5.2
don't take well to repeated querying about their position.)<br>&nbsp;
<li>Improved tool-tips.
</ul>
</td></tr>
<tr><td></td><td colspan=2><img src="images/pix-white.gif" width=550 height=1 hspace=0><br>
&nbsp;</td></tr>
<!-- section dr2.0.1 header
************* -->
<tr valign=top><td align=right></td><td>
<b><a name="dr2_0_1">dr2.0.1</a><br>&nbsp;
</td><td align=right>
<small><small>
<font color="#e0c0a0">[</font><a href="#dr2_0_2">up</a><font color="#e0c0a0">]</font>
<font color="#e0c0a0">[</font>down<font color="#e0c0a0">]</font>
</td></tr>
<!-- section dr2.0.1 body
************* -->
<tr valign=top><td></td><td><b>Fixed Bugs:</b><ul>
<li>Broken ToneProducer sawtooth waveform.
<li>Groups not split when the sole connection joining them is broken.
<li>No default group for video input node(s) (which keeps you from starting them.)
<li>Thread-control variables not declared <code>volatile</code>.
</ul>
<p><b>B_RECORDING:</b> support for filtering live streams from physical inputs
has been vastly improved.
</p>
<p><b>Workaround:</b> on the BeOS R4.5.2, some nodes for audio-input hardware (such as the emu10k) stop
responding when requested to stop. Physical-input nodes cannot be stopped for now
(once the node has been started, the group inspector 'Start' and 'Stop' buttons will
have no effect.)
</p>
</td></tr>
<!--
<tr valign=top><td align=right><b>n)&nbsp;&nbsp;&nbsp;</b></td><td><b>Change Log</b></td></tr>
-->
</table>
<!-- copyright notice -->
<br><br><br>
<img src="images/pix-white.gif" width=630 height=1><br clear=all>
<table cellpadding=0 cellspacing=0 width=630><tr>
<td align=right>
<small><small>Copyright &copy; 1999-2000, Eric Moon. All rights reserved.</td></tr></table>
<!-- end copyright notice -->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 B

285
docs/apps/cortex/index.html Normal file
View File

@ -0,0 +1,285 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CORTEX media toolkit: Documentation</title>
</head>
<body bgcolor="#103050" text=white link=white vlink=white alink=yellow>
<table cellspacing=0 cellpadding=0 width=630><tr><td width=80>&nbsp;</td><td width=490><big><big>
<b>CORTEX</b> documentation index</big></big><small><br>&nbsp;</small>
</td><td width=60>&nbsp;</td></tr>
<tr><td align=right><small>release</small>&nbsp;&nbsp;</td>
<td><b>2.1.2</b></td></tr>
<tr><td align=right><small>maintained&nbsp;by</small>&nbsp;&nbsp;</td>
<td><b><a
href="mailto:em@be.com">Eric Moon</a></b></td></tr>
<tr><td align=right><small>last&nbsp;updated</small>&nbsp;&nbsp;</td>
<td><b>13 June, 2000</td></tr>
<tr><td></td><td><small>For current project info, visit <a
href="http://cortex.sourceforge.net">http://cortex.sourceforge.net</a></small><br><br>
<a href="INSTALLATION.html">Installation</a><br>
<a href="RELEASE%20NOTES.html">Release Notes</a><br>
<a href="license.html">Source &amp; Binary License</a><br>
&nbsp;</td></tr>
<tr><td></td><td colspan=2><img src="images/pix-white.gif" width=550 height=1><br>
&nbsp;</td></tr>
<!-- section 1 header
'overview' ************* -->
<tr valign=top><td align=right><b>1)&nbsp;&nbsp;&nbsp;</b></td><td>
<b><a name="1">Overview &amp; General Usage</a><br>&nbsp;
</td><td align=right>
<small><small>
<font color="#e0c0a0">[</font>up<font color="#e0c0a0">]</font>
<font color="#e0c0a0">[</font><a href="#2">down</a><font color="#e0c0a0">]</font>
</td></tr>
<!-- section 1 body
'overview' ************* -->
<tr valign=top><td><font color="#e0c0a0"><small><small>routing<br>window<br>intro</td><td>
<p>Revision 2.1.0 of <b>Cortex</b> introduced a kick-ass new routing window design courtesy
of Christopher Lenz (<a href="mailto:cmlenz@gmx.de">cmlenz@gmx.de<a>.)
The routing view now has two distinct
viewing modes: "Icon View" and "Mini Icon View", selectable from the context menu that
appears when you click the right mouse button in an empty area of the window.
</p>
<p>"Icon View" is the default; it's similar to the old look &amp; feel (though a lot nicer
to look at) -- nodes are displayed as rectangular tiles with inputs and outputs
arranged vertically on the left and right sides, respectively. Nodes are assigned icons
based on the type of node, or the owning application if any.
</p><p>
"Mini Icon View" is a more compact display: connection points are layed out horizontally,
with inputs on the top and outputs on the bottom.)
</p>
<p>In either view, nodes can be freely dragged around. You can select multiple nodes by
&lt;shift&gt;-clicking or by dragging a selection rectangle around them. Try right-clicking
a node or connection to see the specific commands available for it.
Node positions in both views will be remembered the next time <b>Cortex</b> is run.
If you find the gray background dull, try dragging in an image file or a color from one
of the many color-chooser apps out there (I like <a href="http://www.bebits.com/app/918/">kColor</a>.)
</p>
</td></tr>
<tr valign=top><td><font color="#e0c0a0"><small><small>making<br>connections</td><td>
<p>New connections can be made by dragging between two connection points (it doesn't
matter if you drag from an input or an output.) The wire will snap to connection points
as the mouse nears them (this doesn't guarantee that such a connection is possible.)
</p>
<p>To disconnect two nodes, click on a wire and press the <b>&lt;delete&gt;</b>
key, or right-click it and select "Disconnect."
</p>
<p>
<b>Restrictions:</b> Cortex locks the connection between the system mixer and the
audio output. The Media Server doesn't look kindly upon apps that break that
connection. Connections from file-producer nodes (more about those below) are also locked,
due to a bug in the Media Kit.
</p></td></tr>
<tr valign=top><td><font color="#e0c0a0"><small><small>dormant<br>nodes</td><td>
<p>
Now for a look at the second window: labeled "Media Add-Ons", it displays all the
media nodes available in add-ons (these are also known as "Dormant Nodes.") Additional
information on a given node can be had by right-clicking and selecting "Get Info."
</p>
<p>To create, or <b>instantiate</b>, a new copy of a given dormant node, drag it
to a spot in the routing window. If <b>Cortex</b> was able to successfully
create a new instance of the node, a corresponding panel will appear in the routing
window.
</p><p><i><b>Danger!</b> Cortex currently allows you to instantiate any dormant node
you want. Some add-on nodes, such as sound-card inputs and outputs, can't be
created more than once, and instantiating a new copy will break the existing one.
If this happens, the "Restart Media Services" in the Media preferences panel should
return the system to a usable state.</i></p>
<p><b>File-producers:</b> to create a node capable of playing a given media file (audio
or video), drag it the file into the routing window. Note that if you create a video-producer
in this fashion, it can't be hooked straight up to a raw video output, since it
produces <i>compressed</i> video. You can use the "Decoder Node" add-on to produce
raw video that can be directly displayed in the Video Window (and hopefully a
video output as well -- but I don't have one to test with, so no guarantees!) Note
as well that <b>the Video Window must be started manually</b> before it'll display anything.
</p>
<p>To delete a node, click on it (to select the node), then press the
<b>&lt;delete&gt;</b> key, or right-click the nodeand select "Release."</p>
</p>
</td></tr>
<tr valign=top><td><font color="#e0c0a0"><small><small>saving<br>node-sets</td><td>
<p>
<b>new cool thing:</b> you can save an XML-based description of the currently selected set
of nodes via the "Save Nodes" option in the 'File' menu. Nodes that you've instantiated
in <b>Cortex</b> are fully described, so that they are recreated when you load the node-set.
Nodes owned by outside applications are described to the point that connections to/from them
may be reestablished if they still exist but <b>Cortex</b> will make no attempt to
recreate outside nodes if it can't find them.
</p>
</td></tr>
<tr valign=top><td><font color="#e0c0a0"><small><small>the<br>transport<br>window</td><td>
<p>The transport controls (start/stop) are located in a separate floating window (if it's
not visible, select "Transport" from the "Window" menu.)
When one or more nodes are connected, <b>Cortex</b> binds them together into a group,
allowing you to control the nodes in unison. If you want, you can disable this behavior by
right-clicking any node in a group and picking "Lock Group" under the "Advanced" submenu.
Nodes connected to or from any node in the group will thereafter remain in their own groups.
</p>
<p>
The upper-left quadrant of the transport window lists information on the currently selected
group, if any. Selecting a node in the routing window causes its group -- if it has one -- to
be selected in the inspector. You can click on the group name to edit it; there's not much
reason to do so yet (groups aren't saved with node-sets yet.) The bottom of this
status display may be used to show error information in a future release.
</p>
<p>
In the upper-right are the transport controls: pretty self-explanatory except for the "Preroll"
button. This tells all the nodes in the group to get ready to play -- a properly implemented
media node should be able to do as much pre-processing as it needs to start instantly.
</p>
<p>
The rest of the transport window is devoted to settings. The "Roll from" and "to" values allow
you to set a range over which the group will play. If the "to" setting is less than or equal
to the "from" setting, the group will play unhindered until you stop it. If you do specify a
valid range, playback will stop when the "to" position is reached, unless one or more nodes
in the group have "cycle" enabled, in which case those nodes will repeatedly play the selected
region. The loop isn't guaranteed to be perfectly accurate, especially at short loop lengths,
but cycle mode is useful for stress-testing a node's "seek" abilities, or for keeping a
file-player node running. The "Roll to/from" controls are live while cycling nodes are running,
although Cortex gives up trying to cycle a node if the loop length is too small (less than one
millisecond.) The cycle setting for each node is located in the node context menu obtained by
right-clicking on a node panel.
</p>
<p>
The "Run Mode" control lets you tell the nodes how to cope when they fall behind
(or, if "Offline", to ignore the concept of real time altogether.) This setting
may be overridden on a node-by-node basis via the "Run Mode" options in the node context menu.
</p>
<p>
The "Time Source" control lets you set the time-source for all nodes in the group. A time
source is a node that regularly publishes timestamps used by other nodes to synchronize their
output. The default time source used for new nodes is the "DAC Time Source" (provided you have
an audio output device of some sort.) If you instantiate nodes that can act as time sources,
they'll be added to this menu.
</p>
</td></tr>
<tr valign=top><td><font color="#e0c0a0"><small><small>parameters</td><td>
<p>
Chris has been hard at work expanding parameter (control panel) support. To open the
new control-panel window for a node that has parameters, double-click the node or select
"Tweak Parameters" from its context menu. If a node supports its own control-panel window,
it can be displayed from the <b>Cortex</b> parameter window or by selecting
"Start Control Panel" from the "Advanced" context submenu.
</p>
</td></tr>
<tr valign=top><td><font color="#e0c0a0"><small><small>sample<br>nodes</td><td>
<p><b>Cortex</b> comes with several sample add-on nodes. Two of them, <b>LoggingConsumer</b>
and <b>ToneProducer</b>, are based on sample code from the Be Developer Newsletter. I've
made a few changes to them to implement add-on support, and to make them a bit more flexible.
Since they are very useful testbed nodes, future <b>Cortex</b> releases will likely include
further improved versions of them.</p>
<p>Also included is a sample audio filter, <b>Flanger</b>. It is somewhat limited: only
floating-point audio is supported (the same is true of <b>ToneProducer</b>.) It does include
a control panel. Try instantiating <b>ToneProducer</b> and <b>Flanger</b>, connecting
them together, then connecting <b>Flanger</b>'s output to the system mixer. This is a
simple example of the Media Kit's flexibility. (For truly warped sounds, try connecting a
few <b>Flanger</b>s in a row!)
</p>
<p>To help ease format-conflict pains, <b>AudioAdapter</b> converts
from one raw audio format to another on the fly. In most cases you can simply connect
nodes to either side of it. If you get a "Bad media format" error, you may need to help
<b>AudioAdapter</b> decide the format: in the Parameters section of the node inspector,
you can pick format requirements. (Note that currently you HAVE to fully specify the output
format to get it to connect to the system mixer.)
</p>
</td></tr>
<tr><td></td><td colspan=2><img src="images/pix-white.gif" width=550 height=1><br>
&nbsp;</td></tr>
<!-- section 2 header
'bugs' ************* -->
<tr valign=top><td align=right><b>2)&nbsp;&nbsp;&nbsp;</b></td><td>
<b><a name="2">Known Bugs (&amp; Missing Features)</a><br>&nbsp;
</td><td align=right>
<small><small>
<font color="#e0c0a0">[</font><a href="#1">up</a><font color="#e0c0a0">]</font>
<font color="#e0c0a0">[</font><a href="#3">down</a><font color="#e0c0a0">]</font>
</td></tr>
<!-- section 2 body
'bugs' ************* -->
<tr valign=top><td></td><td><p>
<b>back-end (NodeManager)</b><ul>
<li>misbehaved nodes not handled well (the UI can lock up as it waits for NodeManager to
time out on a failed operation.)
<li>groups aren't split correctly. for example, if two producers are connected to a
mixer, then the mixer is deleted, the producers will remain in the same group.
</ul>
<b>application/routing window</b><ul>
<li>node-sets loaded by drag &amp; drop should be placed at the drop point.
<li>grouping information isn't saved with node-sets.
<li>the workspace doesn't autoscroll as nodes are dragged.<br><br>
</ul>
<b>AudioAdapter</b><ul>
<li>format negotiation needs some work (can't connect output to
the system mixer without help from the user.)
<li>needs a LOT of buffers (>16) if input is connected to a
system audio-player node that's being cycled (looped). probably a bug
with the file-player node, but I need to do some more research...<br><br>
</ul>
<b>ToneProducer</b><ul>
<li>only floating-point output supported.<br><br>
</ul>
<b>LoggingConsumer</b><ul>
<li>takes after the Be System Mixer in not sending late notices
</ul>
<b>Flanger</b><ul>
<li>weird noise (aliasing?) given high-pitched tones as input.
<li>only floating-point output supported.<br><br>
</ul>
</p>
</td></tr>
<tr><td></td><td colspan=2><img src="images/pix-white.gif" width=550 height=1 hspace=0><br>
&nbsp;</td></tr>
<!-- section 3 header
'developers' ************* -->
<tr valign=top><td align=right><b>3)&nbsp;&nbsp;&nbsp;</b></td><td>
<b><a name="3">Notes for Developers</a><br>&nbsp;
</td><td align=right>
<small><small>
<font color="#e0c0a0">[</font><a href="#2">up</a><font color="#e0c0a0">]</font>
<font color="#e0c0a0">[</font>down<font color="#e0c0a0">]</font>
</td></tr>
<!-- section 3 body
'developers' ************* -->
<tr valign=top><td></td><td><p>
Come check out the <a href="http://sourceforge.net/project/?group_id=2848">SourceForge
Project Page</a>!
</p>
<p><b>Comments/questions?</b><br>
Let me know: <a href="mailto:em@be.com">em@be.com</a><br>
&nbsp;
</td></tr>
<!--
<tr valign=top><td align=right><b>n)&nbsp;&nbsp;&nbsp;</b></td><td><b>Change Log</b></td></tr>
-->
</table>
<!-- copyright notice -->
<br><br><br>
<img src="images/pix-white.gif" width=630 height=1><br clear=all>
<table cellpadding=0 cellspacing=0 width=630><tr>
<td align=right>
<small><small>Copyright &copy; 1999-2000, Eric Moon. All rights reserved.</td></tr></table>
<!-- end copyright notice -->
</body>
</html>

View File

@ -0,0 +1,38 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cortex source/binary license</title>
</head>
<body bgcolor=white>
<pre>
Copyright (c) 1999-2000, Eric Moon.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions, and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions, and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</pre>
</body>
</html>