<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
           "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<meta name="GENERATOR" content="TtH 3.72">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <style type="text/css"> div.p { margin-top: 7pt;}</style>
 <style type="text/css"><!--
 td div.comp { margin-top: -0.6ex; margin-bottom: -1ex;}
 td div.comb { margin-top: -0.6ex; margin-bottom: -.6ex;}
 td div.hrcomp { line-height: 0.9; margin-top: -0.8ex; margin-bottom: -1ex;}
 td div.norm {line-height:normal;}
 span.roman {font-family: serif; font-style: normal; font-weight: normal;}
 span.overacc2 {position: relative;  left: .8em; top: -1.2ex;}
 span.overacc1 {position: relative;  left: .6em; top: -1.2ex;} --></style>


<title>  gSOAP Public License</title>

<h1 align="center"><b>gSOAP Public License</b> </h1>

<h3 align="center">Version 1.3a </h3>

<h3 align="center"> </h3>
 The gSOAP public license is derived from the Mozilla Public License (MPL1.1).
The sections that were deleted from the original MPL1.1 text are <u>1.0.1</u>,
<u>2.1.(c),(d)</u>, <u>2.2.(c),(d)</u>, <u>8.2.(b)</u>, <u>10</u>, and <u>11</u>.  Section <u>3.8</u> was
added.  The modified sections are <u>2.1.(b)</u>, <u>2.2.(b)</u>, <u>3.2</u> (simplified),
<u>3.5</u> (deleted the last sentence), and <u>3.6</u> (simplified).

 <h2><a name="tth_sEc1">
1</a>&nbsp;&nbsp;DEFINITIONS.</h2>


<dl compact="compact">

	<dd>sep 0mm</dd>
 <dt><b><u>1.0.1.</u></b></dt>
	<dd></dd>
 <dt><b>1.1. "Contributor"</b></dt>
	<dd>
means each entity that creates or contributes to the creation of
Modifications.</dd>
 <dt><b>1.2. "Contributor Version"</b></dt>
	<dd>
means the combination of the Original Code, prior
Modifications used by a Contributor, and the Modifications made by that
particular Contributor.</dd>
 <dt><b>1.3. "Covered Code"</b></dt>
	<dd>
means the Original Code, or Modifications or the combination
of the Original Code, and Modifications, in each case
including portions thereof.</dd>
 <dt><b>1.4. "Electronic Distribution Mechanism"</b></dt>
	<dd>
means a mechanism generally accepted in the software development community for
the electronic transfer of data.</dd>
 <dt><b>1.5. "Executable"</b></dt>
	<dd>
means Covered Code in any form other than Source Code.</dd>
 <dt><b>1.6. "Initial Developer"</b></dt>
	<dd>
means the individual or entity identified as the Initial Developer in the
Source Code notice required by <b>Exhibit A</b>.</dd>
 <dt><b>1.7. "Larger Work"</b></dt>
	<dd>
means a work which combines Covered Code or portions thereof with code not
governed by the terms of this License.</dd>
 <dt><b>1.8. "License"</b></dt>
	<dd>
means this document.</dd>
 <dt><b>1.8.1. "Licensable"</b></dt>
	<dd>
means having the right to grant, to the maximum extent possible, whether at the
time of the initial grant or subsequently acquired, any and all of the rights
conveyed herein.</dd>
 <dt><b>1.9. "Modifications"</b></dt>
	<dd>
means any addition to or deletion from the substance or structure of either the
Original Code or any previous Modifications. When Covered
Code is released as a series of files, a Modification is:

<dl compact="compact">

	<dd>sep 0mm</dd>
 <dt><b>A.</b></dt>
	<dd> Any addition to or deletion from the contents of a file containing
Original Code or previous Modifications.</dd>
 <dt><b>B.</b></dt>
	<dd> Any new file that contains any part of the Original Code,
or previous Modifications.</dd>
</dl></dd>
 <dt><b>1.10. "Original Code"</b></dt>
	<dd>
means Source Code of computer software code which is described in the Source
Code notice required by <b>Exhibit A</b> as Original Code, and which, at the
time of its release under this License is not already Covered Code governed by
this License.</dd>
 <dt><b>1.10.1. "Patent Claims"</b></dt>
	<dd>
means any patent claim(s), now owned or hereafter acquired, including without
limitation, method, process, and apparatus claims, in any patent Licensable by
grantor.</dd>
 <dt><b>1.11. "Source Code"</b></dt>
	<dd>
means the preferred form of the Covered Code for making modifications to it,
including all modules it contains, plus any associated interface definition
files, scripts used to control compilation and installation of an Executable,
or source code differential comparisons against either the Original Code or
another well known, available Covered Code of the Contributor's choice. The
Source Code can be in a compressed or archival form, provided the appropriate
decompression or de-archiving software is widely available for no charge.</dd>
 <dt><b>1.12. "You" (or "Your")</b></dt>
	<dd>
means an individual or a legal entity exercising rights under, and complying
with all of the terms of, this License or a future version of this License
issued under Section <b>6.1</b>.  For legal entities, "You" includes any
entity which controls, is controlled by, or is under common control with You.
For purposes of this definition, "control" means <b>(a)</b> the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or <b>(b)</b> ownership of more than fifty percent (50%) of
the outstanding shares or beneficial ownership of such entity.</dd>
</dl>

 <h2><a name="tth_sEc2">
2</a>&nbsp;&nbsp;SOURCE CODE LICENSE.</h2>

<dl compact="compact">

	<dd>sep 0mm</dd>
 <dt><b>2.1. The Initial Developer Grant.</b></dt>
	<dd><br />
The Initial Developer hereby grants You a world-wide, royalty-free,
non-exclusive license, subject to third party intellectual property claims:

<dl compact="compact">

	<dd>sep 0mm</dd>
 <dt><b>(a)</b></dt>
	<dd>
under intellectual property rights (other than patent or trademark) Licensable
by Initial Developer to use, reproduce, modify, display, perform, sublicense
and distribute the Original Code (or portions thereof) with or without
Modifications, and/or as part of a Larger Work; and</dd>
 <dt><b><u>(b)</u></b></dt>
	<dd>
under patents now or hereafter owned or controlled by Initial Developer, to
make, have made, use and sell ("offer to sell and import") the Original Code,
Modifications, or portions thereof, but solely to the extent that any such
patent is reasonably necessary to enable You to utilize, alone or in
combination with other software, the Original Code, Modifications, or any
combination or portions thereof.</dd>
 <dt><b><u>(c)</u></b></dt>
	<dd></dd>
 <dt><b><u>(d)</u></b></dt>
	<dd></dd>
</dl></dd>
 <dt><b>2.2. Contributor Grant.</b></dt>
	<dd><br />
Subject to third party intellectual property claims, each Contributor hereby
grants You a world-wide, royalty-free, non-exclusive license

<dl compact="compact">

	<dd>sep 0mm</dd>
 <dt><b>(a)</b></dt>
	<dd>
under intellectual property rights (other than patent or trademark) Licensable
by Contributor, to use, reproduce, modify, display, perform, sublicense and
distribute the Modifications created by such Contributor (or portions thereof)
either on an unmodified basis, with other Modifications, as Covered Code and/or
as part of a Larger Work; and</dd>
 <dt><b><u>(b)</u></b></dt>
	<dd>
under patents now or hereafter owned or controlled by Contributor, to make,
have made, use and sell ("offer to sell and import") the Contributor Version
(or portions thereof), but solely to the extent that any such patent is
reasonably necessary to enable You to utilize, alone or in combination with
other software, the Contributor Version (or portions thereof).</dd>
 <dt><b><u>(c)</u></b></dt>
	<dd></dd>
 <dt><b><u>(d)</u></b></dt>
	<dd></dd>
</dl></dd>
</dl>

 <h2><a name="tth_sEc3">
3</a>&nbsp;&nbsp;DISTRIBUTION OBLIGATIONS.</h2>

<dl compact="compact">

	<dd>sep 0mm</dd>
 <dt><b>3.1. Application of License.</b></dt>
	<dd><br />
The Modifications which You create or to which You contribute are governed by
the terms of this License, including without limitation Section <b>2.2</b>.  The
Source Code version of Covered Code may be distributed only under the terms of
this License or a future version of this License released under Section <b>6.1</b>, and You must include a copy of this License with every copy of the Source
Code You distribute. You may not offer or impose any terms on any Source Code
version that alters or restricts the applicable version of this License or the
recipients' rights hereunder. However, You may include an additional document
offering the additional rights described in Section <b>3.5</b>.</dd>
 <dt><b><u>3.2.</u> Availability of Source Code.</b></dt>
	<dd><br />
Any Modification created by You will be provided to the Initial Developer in
Source Code form and are subject to the terms of the License.</dd>
 <dt><b>3.3. Description of Modifications.</b></dt>
	<dd><br />
You must cause all Covered Code to which You contribute to contain a file
documenting the changes You made to create that Covered Code and the date of
any change. You must include a prominent statement that the Modification is
derived, directly or indirectly, from Original Code provided by the Initial
Developer and including the name of the Initial Developer in <b>(a)</b> the Source
Code, and <b>(b)</b> in any notice in an Executable version or related documentation
in which You describe the origin or ownership of the Covered Code.</dd>
 <dt><b>3.4. Intellectual Property Matters.</b></dt>
	<dd>

<dl compact="compact">

	<dd>sep 0mm</dd>
 <dt><b>(a) Third Party Claims.</b></dt>
	<dd>
If Contributor has knowledge that a license under a third party's intellectual
property rights is required to exercise the rights granted by such Contributor
under Sections <b>2.1</b> or <b>2.2</b>, Contributor must include a text file with the Source
Code distribution titled "LEGAL" which describes the claim and the party
making the claim in sufficient detail that a recipient will know whom to
contact. If Contributor obtains such knowledge after the Modification is made
available as described in Section <b>3.2</b>, Contributor shall promptly modify the
LEGAL file in all copies Contributor makes available thereafter and shall take
other steps (such as notifying appropriate mailing lists or newsgroups)
reasonably calculated to inform those who received the Covered Code that new
knowledge has been obtained.</dd>
 <dt><b>(b) Contributor APIs.</b></dt>
	<dd>
If Contributor's Modifications include an application programming interface and
Contributor has knowledge of patent licenses which are reasonably necessary to
implement that API, Contributor must also include this information in the LEGAL
file.</dd>
 <dt><b>(c) Representations.</b></dt>
	<dd>
Contributor represents that, except as disclosed pursuant to Section <b>
3.4(a)</b> above, Contributor believes that Contributor's Modifications are
Contributor's original creation(s) and/or Contributor has sufficient rights to
grant the rights conveyed by this License.</dd>
</dl></dd>
 <dt><b><u>3.5.</u> Required Notices.</b></dt>
	<dd><br />
You must duplicate the notice in <b>Exhibit A</b> in each file of the Source
Code. If it is not possible to put such notice in a particular Source Code file
due to its structure, then You must include such notice in a location (such as
a relevant directory) where a user would be likely to look for such a notice.
If You created one or more Modification(s) You may add your name as a
Contributor to the notice described in <b>Exhibit A</b>. You must also duplicate
this License in any documentation for the Source Code where You describe
recipients' rights or ownership rights relating to Covered Code. You may choose
to offer, and to charge a fee for, warranty, support, indemnity or liability
obligations to one or more recipients of Covered Code. However, You may do so
only on Your own behalf, and not on behalf of the Initial Developer or any
Contributor.</dd>
 <dt><b><u>3.6</u>. Distribution of Executable Versions.</b></dt>
	<dd><br />
You may distribute Covered Code in Executable form only if the requirements
of Section <b>3.1</b>-<b>3.5</b> have been met for that Covered Code. You may distribute the
Executable version of Covered Code or ownership rights under a license of Your
choice, which may contain terms different from this License, provided that You
are in compliance with the terms of this License and that the license for the
Executable version does not attempt to limit or alter the recipient's rights in
the Source Code version from the rights set forth in this License.  If You
distribute the Executable version under a different license You must make it
absolutely clear that any terms which differ from this License are offered by
You alone, not by the Initial Developer or any Contributor.  If you
distribute executable versions containing Covered Code as part of a product,
you must reproduce the notice in <b>Exhibit B</b> in the documentation and/or
other materials provided with the product.</dd>
 <dt><b>3.7. Larger Works.</b></dt>
	<dd><br />
You may create a Larger Work by combining Covered Code with other code not
governed by the terms of this License and distribute the Larger Work as a
single product. In such a case, You must make sure the requirements of this
License are fulfilled for the Covered Code.</dd>
 <dt><b><u>3.8.</u> Restrictions.</b></dt>
	<dd><br />
You may not remove any product identification, copyright, proprietary notices or labels from gSOAP.</dd>
</dl>

 <h2><a name="tth_sEc4">
4</a>&nbsp;&nbsp;INABILITY TO COMPLY DUE TO STATUTE OR REGULATION.</h2>
If it is impossible for You to comply with any of the terms of this License
with respect to some or all of the Covered Code due to statute, judicial order,
or regulation then You must: <b>(a)</b> comply with the terms of this License to the
maximum extent possible; and <b>(b)</b> describe the limitations and the code they
affect. Such description must be included in the LEGAL file described in
Section <b>3.4</b> and must be included with all distributions of the Source
Code. Except to the extent prohibited by statute or regulation, such
description must be sufficiently detailed for a recipient of ordinary skill to
be able to understand it.

 <h2><a name="tth_sEc5">
5</a>&nbsp;&nbsp;APPLICATION OF THIS LICENSE.</h2>
This License applies to code to which the Initial Developer has attached the
notice in <b>Exhibit A</b> and to related Covered Code.

 <h2><a name="tth_sEc6">
6</a>&nbsp;&nbsp;VERSIONS OF THE LICENSE.</h2>

<dl compact="compact">

	<dd>sep 0mm</dd>
 <dt><b>6.1. New Versions.</b></dt>
	<dd><br />
Grantor may publish revised and/or new versions of the License from time to
time. Each version will be given a distinguishing version number.</dd>
 <dt><b>6.2. Effect of New Versions.</b></dt>
	<dd><br />
Once Covered Code has been published under a particular version of the License,
You may always continue to use it under the terms of that version. You may also
choose to use such Covered Code under the terms of any subsequent version of
the License.</dd>
 <dt><b>6.3. Derivative Works.</b></dt>
	<dd><br />
If You create or use a modified version of this License (which you may only do
in order to apply it to code which is not already Covered Code governed by this
License), You must <b>(a)</b> rename Your license so that the phrase "gSOAP" or
any confusingly similar phrase do not appear in your license (except to note
that your license differs from this License) and <b>(b)</b> otherwise make it clear
that Your version of the license contains terms which differ from the gSOAP
Public License. (Filling in the name of the Initial Developer, Original Code or
Contributor in the notice described in <b>Exhibit A</b> shall not of themselves
be deemed to be modifications of this License.)</dd>
</dl>

 <h2><a name="tth_sEc7">
7</a>&nbsp;&nbsp;DISCLAIMER OF WARRANTY.</h2>
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT
WARRANTY OF ANY KIND, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT
LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A
PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
RIGHTS, AND ANY WARRANTY THAT MAY ARISE BY REASON OF TRADE USAGE, CUSTOM, OR
COURSE OF DEALING.  WITHOUT LIMITING THE FOREGOING, YOU ACKNOWLEDGE THAT THE
SOFTWARE IS PROVIDED "AS IS" AND THAT THE AUTHORS DO NOT WARRANT THE SOFTWARE
WILL RUN UNINTERRUPTED OR ERROR FREE.  LIMITED LIABILITY THE ENTIRE RISK AS TO
RESULTS AND PERFORMANCE OF THE SOFTWARE IS ASSUMED BY YOU.  UNDER NO
CIRCUMSTANCES WILL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY KIND OR NATURE WHATSOEVER, WHETHER
BASED ON CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
OTHERWISE, ARISING OUT OF OR IN ANY WAY RELATED TO THE SOFTWARE, EVEN IF THE
AUTHORS HAVE BEEN ADVISED ON THE POSSIBILITY OF SUCH DAMAGE OR IF SUCH DAMAGE
COULD HAVE BEEN REASONABLY FORESEEN, AND NOTWITHSTANDING ANY FAILURE OF
ESSENTIAL PURPOSE OF ANY EXCLUSIVE REMEDY PROVIDED.  SUCH LIMITATION ON DAMAGES
INCLUDES, BUT IS NOT LIMITED TO, DAMAGES FOR LOSS OF GOODWILL, LOST PROFITS,
LOSS OF DATA OR SOFTWARE, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION OR
IMPAIRMENT OF OTHER GOODS.  IN NO EVENT WILL THE AUTHORS BE LIABLE FOR THE
COSTS OF PROCUREMENT OF SUBSTITUTE SOFTWARE OR SERVICES.  YOU ACKNOWLEDGE THAT
THIS SOFTWARE IS NOT DESIGNED FOR USE IN ON-LINE EQUIPMENT IN HAZARDOUS
ENVIRONMENTS SUCH AS OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR
CONTROL, OR LIFE-CRITICAL APPLICATIONS.  THE AUTHORS EXPRESSLY DISCLAIM ANY
LIABILITY RESULTING FROM USE OF THE SOFTWARE IN ANY SUCH ON-LINE EQUIPMENT IN
HAZARDOUS ENVIRONMENTS AND ACCEPTS NO LIABILITY IN RESPECT OF ANY ACTIONS OR
CLAIMS BASED ON THE USE OF THE SOFTWARE IN ANY SUCH ON-LINE EQUIPMENT IN
HAZARDOUS ENVIRONMENTS BY YOU.  FOR PURPOSES OF THIS PARAGRAPH, THE TERM
"LIFE-CRITICAL APPLICATION" MEANS AN APPLICATION IN WHICH THE FUNCTIONING OR
MALFUNCTIONING OF THE SOFTWARE MAY RESULT DIRECTLY OR INDIRECTLY IN PHYSICAL
INJURY OR LOSS OF HUMAN LIFE.  THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
ESSENTIAL PART OF THIS LICENSE.  NO USE OF ANY COVERED CODE IS AUTHORIZED
HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

 <h2><a name="tth_sEc8">
8</a>&nbsp;&nbsp;TERMINATION.</h2>

<dl compact="compact">

	<dd>sep 0mm</dd>
 <dt><b>8.1.</b></dt>
	<dd>
This License and the rights granted hereunder will terminate automatically if
You fail to comply with terms herein and fail to cure such breach within 30
days of becoming aware of the breach. All sublicenses to the Covered Code which
are properly granted shall survive any termination of this License. Provisions
which, by their nature, must remain in effect beyond the termination of this
License shall survive.</dd>
 <dt><b><u>8.2.</u></b></dt>
	<dd></dd>
 <dt><b>8.3.</b></dt>
	<dd>
If You assert a patent infringement claim against Participant alleging that
such Participant's Contributor Version directly or indirectly infringes any
patent where such claim is resolved (such as by license or settlement) prior to
the initiation of patent infringement litigation, then the reasonable value of
the licenses granted by such Participant under Sections <b>2.1</b> or <b>2.2</b>
shall be taken into account in determining the amount or value of any payment
or license.</dd>
 <dt><b>8.4.</b></dt>
	<dd> In the event of termination under Sections <b>8.1</b> or
<b>8.2</b> above, all end user license agreements (excluding distributors
and resellers) which have been validly granted by You or any distributor
hereunder prior to termination shall survive termination.</dd>
</dl>

 <h2><a name="tth_sEc9">
9</a>&nbsp;&nbsp;LIMITATION OF LIABILITY.</h2>
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING
NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER,
ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER
OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL,
INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE
OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN
IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.
THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR
PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE
LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION
AND LIMITATION MAY NOT APPLY TO YOU.

 <h2><a name="tth_sEc10">
10</a>&nbsp;&nbsp;<u>U.S. GOVERNMENT END USERS.</u></h2>

 <h2><a name="tth_sEc11">
11</a>&nbsp;&nbsp;<u>MISCELLANEOUS.</u></h2>

 <h2><a name="tth_sEc12">
12</a>&nbsp;&nbsp;RESPONSIBILITY FOR CLAIMS.</h2>
As between Initial Developer and the Contributors, each party is responsible
for claims and damages arising, directly or indirectly, out of its utilization
of rights under this License and You agree to work with Initial Developer and
Contributors to distribute such responsibility on an equitable basis.  Nothing
herein is intended or shall be deemed to constitute any admission of liability.

<div class="p"><!----></div>

<h2>EXHIBIT A.</h2>

<div class="p"><!----></div>
"The contents of this file are subject to the gSOAP Public License Version 1.3
(the "License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at

<blockquote>
http://www.cs.fsu.edu/&nbsp;engelen/soaplicense.html
</blockquote>
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the License.

<div class="p"><!----></div>
The Original Code of the gSOAP Software is:
stdsoap.h, stdsoap2.h, stdsoap.c, stdsoap2.c, stdsoap.cpp, stdsoap2.cpp, soapcpp2.h, soapcpp2.c,
soapcpp2_lex.l, soapcpp2_yacc.y, error2.h, error2.c,
symbol2.c, init2.c, soapdoc2.html, and soapdoc2.pdf, httpget.h, httpget.c, stl.h, stldeque.h, stllist.h, stlvector.h, stlset.h.

<div class="p"><!----></div>
The Initial Developer of the Original Code is Robert A. van Engelen.  Portions
created by Robert A. van Engelen are Copyright (C) 2001-2004 Robert A. van
Engelen, Genivia inc.  All Rights Reserved.

<div class="p"><!----></div>
Contributor(s):

<dl compact="compact">
 <dt><b>"________________________."</b></dt>
	<dd></dd>
</dl>
[Note: The text of this Exhibit A may differ slightly form the text of the
notices in the Source Code files of the Original code.  You should use the text
of this Exhibit A rather than the text found in the Original Code Source Code
for Your Modifications.]

<div class="p"><!----></div>

<h2>EXHIBIT B.</h2>

<div class="p"><!----></div>
"Part of the software embedded in this product is gSOAP software.

<div class="p"><!----></div>
Portions created by gSOAP are Copyright (C) 2001-2007 Robert A. van Engelen,
Genivia inc. All Rights Reserved.

<div class="p"><!----></div>
THE SOFTWARE IN THIS PRODUCT WAS IN PART PROVIDED BY GENIVIA INC AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF 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."

</html>
