IMPORTANT PLEASE READ CAREFULLY BEFORE USING THIS PRODUCT:  THIS SOFTWARE LICENSE AGREEMENT ("Agreement") CONTAINS THE LICENSE TERMS AND CONDITIONS FOR THE XEROX SOFTWARE AND RELATED DOCUMENTATION (collectively "Software").  

IF YOU DOWNLOAD, INSTALL OR USE THE SOFTWARE, YOU AGREE TO BE LEGALLY BOUND BY THE FOLLOWING TERMS AND CONDITIONS.  IF YOU DO NOT ACCEPT THESE LICENSE TERMS YOU MAY NOT DOWNLOAD, INSTALL OR USE THE SOFTWARE AND YOU MUST DELETE ANY SOFTWARE FILES ACCESSED BY YOU OR A THIRD PARTY ON YOUR BEHALF FROM ANY AND ALL COMPUTER MEMORY INTO WHICH SUCH SOFTWARE HAS BEEN LOADED OR STORED.  

When used in this agreement the term "Xerox" shall mean Xerox Corporation, its operating companies, subsidiaries and affiliates.

If you are installing the Software on behalf of the end user you must agree that you are acting as an agent of the end user customer before proceeding.  As agent for the end user you hereby agree that you have either; 1) read and agree to the terms of this Agreement as authorized by the end user, or 2) you have made the end user aware of the license terms and the end user has explicitly accepted them. 

1.  LICENSE GRANT.
a.  Xerox grants to you a non-exclusive, non-transferable license to use the Software on the Xerox-brand equipment ("Equipment") on which it was delivered or, if delivered separately, on a single item of equipment.  You have no other rights to the Software and may not: (1) distribute, copy, modify, create derivatives of, decompile, or reverse engineer Software; (2) activate Software delivered in an inactivated state; or (3) allow others to engage in same.  You may make archival or back-up copies of the Software, provided each copy contains all of the copyright and other proprietary notices contained on the original Software and such copies and is used only for back-up purposes.  Title to, and all intellectual property rights in, Software will reside solely with Xerox and/or its licensors who will be considered third-party beneficiaries of this Agreement with rights of enforcement. 
b.  Software may include or incorporate software provided by Microsoft Corporation ("Microsoft Software").  In addition to all other terms and conditions of this Agreement, the following applies to Your installation and use of Microsoft Software.  You may not: (i) sell, lease, loan, sublicense, or use the Microsoft Software for commercial software hosting services; (ii) publish any benchmark results for the Microsoft Software; (iii) work around any technical limitations in the  Microsoft Software; or (iv) separate components of the Microsoft Software and install them on different pieces of equipment. 

2.  THIRD PARTY SOFTWARE.  The Software may include code developed by one or more third parties ("Third Party Software").  Some Third Party Software may be subject to other terms and conditions that may be found in an open source software disclosure package provided with the Software or available for download with the product documentation.  Notwithstanding the terms and conditions of this Agreement, the Third Party Software is licensed to you subject to the terms and conditions of the software license agreement identified in the open source software disclosure.  If the third party terms and conditions include licenses that provide for the availability of source code (such as the GNU General Public License), the open source software disclosure or the media on which the Software may be delivered will contain the source code or provide instructions where a copy of such source code can be obtained. 

3.  DISCLAIMER OF WARRANTY.  
a.	YOU ACKNOWLEDGE AND AGREE THAT THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND BY XEROX OR ITS LICENSORS.  XEROX AND ITS LICENSORS EXPRESSLY DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, WHETHER CREATED BY STATUTE OR OTHERWISE, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT OF THIRD-PARTY RIGHTS.  XEROX AND ITS LICENSORS DO NOT WARRANT THAT THE SOFTWARE WILL MEET YOUR PARTICULAR REQUIREMENTS, THAT IT WILL OPERATE UNINTERRUPTED OR ERROR FREE, OR THAT DEFECTS IN THE SOFTWARE CAN OR WILL BE CORRECTED.  ALL WARRANTIES AND REPRESENTATIONS MADE BY PERSONS OTHER THAN XEROX, INCLUDING, BUT NOT LIMITED TO, YOUR AUTHORIZED SERVICE PROVIDER, DISTRIBUTORS, DEALERS, CONCESSIONAIRES AND OTHER RESELLERS OF XEROX, ARE ALSO DISCLAIMED.  THE WARRANTY DISCLAIMERS SET FORTH HEREIN MAY NOT APPLY IN CERTAIN JURISDICTIONS, IN WHICH CASE THE WARRANTEES HEREUNDER SHALL BE THE MINIMUM REQUIRED BY LAW.
b.	Software may contain, or be modified to contain, computer code capable of automatically disabling proper operation or functioning of Software and/or the system upon which it is installed.  Such disabling code may be activated (a) if Xerox is denied access to the Software and/or the system as provided herein, (b) you otherwise breach any term of this Agreement, or (c) such license is terminated or expires.  

4.  INDEMNIFICATION.  Xerox will pay any settlement agreed to by Xerox or any final judgment for, any claim that Software infringes a third party's valid United States patent or copyright, provided that you promptly notify Xerox in writing of any alleged infringement, allow Xerox to direct the defense, and fully cooperate with Xerox.  Xerox is not responsible for any non-Xerox litigation expenses or settlements unless Xerox agrees to them in writing.  To avoid infringement, even if not alleged, Xerox may, at its option, and at no charge to you, either obtain a license, provide a replacement for the Software or remove or request that you remove the Software.  Xerox's obligations under this section are further conditioned on you immediately removing and ceasing use of the Software in the event that Xerox requests that you remove the Software and/or provides a replacement.  Xerox will not be liable for any infringement-related liability outside the scope of this section, including, without limitation, infringement based upon the Software being modified to your specifications or due to the Software being used in combination with equipment, software or supplies not provided by Xerox. 

5.  LIMITATION OF LIABILITY.  Notwithstanding any damages that you might incur, the entire liability of Xerox and its licensors under this Agreement and your exclusive remedy will be limited to the greater of the amount actually paid by you for the Software or U.S. $10.00.  IN NO EVENT WILL XEROX OR ITS LICENSORS BE LIABLE TO YOU FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCUDING BUT NOT LIMITED TO DAMAGES RELATED TO DATA LOSS, LOST PROFITS OR BUSINESS INTERRUPTION) IN ANY WAY ARISING OUT OF OR RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT, EVEN IF XEROX OR ITS LICENSORS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND EVEN IF THE ABOVE REMEDY FAILS OF ITS ESSENTIAL PURPOSE.  THE LIMITATIONS OF LIABILITY SET FORTH HEREIN MAY NOT APPLY IN CERTAIN JURISDICTIONS AND THUS MAY NOT APPLY TO YOU; IN SUCH CASES, XEROX'S AND ITS LICENSORS' LIABILITY HEREUNDER SHALL BE THE MINIMUM REQUIRED BY LAW.

6.  TERMINATION.  Xerox may terminate your license for the Software (i) immediately if you no longer use or possess the equipment with which the Software was provided or are a lessor of the equipment with which the Software was provided and your first lessee no longer uses or possesses it, (ii) upon the termination of any agreement under which you have rented or leased the equipment with which the Software was provided, or (iii) immediately in the event of a breach by you.  If terminated as provided above, you shall return to Xerox all copies of the Software, and remove same from all equipment into which such Software may have been loaded by you.

7.  The Software is provided with Restricted Rights.  You agree to meet all requirements necessary to ensure that the Federal Government will honor such rights.  Disclosure, use or reproduction of the Software and accompanying documentation are subject to restrictions set forth in the Commercial Computer-Restricted Rights clause at Federal Acquisition Regulation 52.227-19, when applicable, or in the Department of Defense Federal Acquisition Regulations Supplement 252.227-7013.

8.  SEVERABLILITY.  If any provision of this Agreement is held invalid by any law, rule, order or regulation of any government, or by the final determination of any state or federal court, such invalidity will not affect the enforceability of any other provisions not held to be invalid. In the event any provision hereof is declared by competent authority to be invalid, illegal or unenforceable under any applicable law, to the extent permissible under applicable law, any such invalid, illegal or unenforceable provision shall be deemed amended lawfully to conform to the intent of the Parties.

9.  NO WAIVER.  Any delay or omission by either party to exercise any right or remedy under this Agreement will not be construed to be a waiver of any such right or remedy or any other right or remedy.  All of the rights of either party under this Agreement will be cumulative and may be exercised separately or concurrently. 

10.  GOVERNING LAW.  This Agreement shall be construed in accordance with the laws of the State of New York, without regard to its choice of laws provisions, and disputes shall be adjudicated or otherwise decided in the forums therefor located in the State of New York.  The United Nation Convention on Contracts for International Sales of Goods shall not apply to this Agreement.  Local law may require that certain laws of your country of residence apply to some sections of this Agreement, including but not limited to, requiring this Agreement to be governed by the laws of your country of residence.

11.  EXPORT.  You will not export or re-export the Software without appropriate United States or foreign government licenses or for any purpose prohibited by any applicable export control laws.

12.  ENTIRE AGREEMENT.  This Agreement constitutes the entire agreement between the parties in connection with the subject matter hereof, and supersedes all prior agreements, understandings, negotiations and discussions, whether oral or written, between the parties.  No amendment to or modification of this Agreement will be binding unless it is in writing and signed by a duly authorized representative of each of the parties.

13.  REMOTE SERVICES. Certain models of Equipment are supported and serviced using data that is automatically collected by Xerox or transmitted to or from Xerox by the Equipment connected to Customer's network ("Remote Data") via electronic transmission to a secure off-site location ("Remote Data Access"). Remote Data Access also enables Xerox to transmit to Customer Releases for Software and to remotely diagnose and modify Equipment to repair and correct malfunctions. Examples of Remote Data include product registration, meter read, supply level, Equipment configuration and settings, software version, and problem/fault code data. Remote Data may be used by Xerox for billing, report generation, supplies replenishment, support services, recommending additional products and services, and product improvement/development purposes. Remote Data will be transmitted to and from Customer in a secure manner specified by Xerox. Remote Data Access will not allow Xerox to read, view or download the content of any Customer documents or other information residing on or passing through the Equipment or Customer's information management systems. Customer grants the right to Xerox, without charge, to conduct Remote Data Access for the purposes described above. Upon Xerox's request, Customer will provide contact information for Equipment such as name and address of Customer contact and IP and physical addresses/locations of Equipment. Customer will enable Remote Data Access via a method prescribed by Xerox, and Customer will provide reasonable assistance to allow Xerox to provide Remote Data Access. Unless Xerox deems Equipment incapable of Remote Data Access, Customer will ensure that Remote Data Access is maintained at all times maintenance or support services are being provided.  

14.  DRIVER DATA COLLECTION.  For driver software installed on a computer device, you agree that the Software may collect technical data and related information concerning the type of computing device and operating system; location (country and city) of the computing device; and the volume, frequency, and manner of use of the Software and its features.  Xerox may use this information and statistical data, trends and usage information derived from this information and the use of the Software for the purposes of developing, providing, operating, maintaining and/or improving its products and services or to provide products or services to you.  The Software does not collect any information that personally identifies users of the Software or permits Xerox to read, view or download the content of any documents processed by the Software.

15.  DIAGNOSTIC SOFTWARE.   Software used to evaluate or maintain Xerox equipment ("Diagnostic Software") may be embedded in, reside on, or may be loaded onto Xerox equipment. The Diagnostic Software and method of entry or access to it constitute valuable trade secrets of Xerox. Title to Diagnostic Software shall at all times remain solely with Xerox and/or its licensors. You agree that (a) your acquisition of the equipment does not grant you a license or right to use Diagnostic Software in any manner, and (b) that unless separately licensed by Xerox to do so, you will not access, use, reproduce, distribute, or disclose Diagnostic Software for any purpose (or allow third parties to do so). You agree at all times to allow Xerox to access, monitor, and otherwise take steps to prevent unauthorized use or reproduction of Diagnostic Software and to remove or disable Diagnostic Software.  

Open Source Software Disclosure
http://www.support.xerox.com/support/open-source-disclosures/documentation

