Copyright © 2002 The Board of Trustees of the Leland Stanford Junior
University
Permission is hereby granted to STANFORD's rights, free of charge, to any
person obtaining a copy of this Software and associated documentation files
( "MROUTED"), to deal in MROUTED without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of MROUTED , and to permit persons to whom
MROUTED is furnished to do so, subject to the following conditions:
1)      The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the MROUTED .
2)      Neither the STANFORD name nor the names of its contributors may be
used in any promotional advertising or other promotional materials to be
disseminated to the public or any portion thereof nor to use the name of
any STANFORD faculty member, employee, or student, or any trademark,
service mark, trade name, or symbol of STANFORD or Stanford Hospitals and
Clinics, nor any that is associated with any of them, without STANFORD's
prior written consent.  Any use of STANFORD's name shall be limited to
statements of fact and shall not imply endorsement of any products or
services.

3)      MROUTED IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH MROUTED OR THE USE OR OTHER DEALINGS IN
THE MROUTED .
