# /**
#  * Copyright (c) 2002-2010 IBM Corporation and others.
#  * All rights reserved.   This program and the accompanying materials
#  * are made available under the terms of the Eclipse Public License v2.0
#  * which accompanies this distribution, and is available at
#  * http://www.eclipse.org/legal/epl-v20.html
#  *
#  * Contributors:
#  *   IBM - Initial API and implementation
#  */

# NLS_MESSAGEFORMAT_VAR

featureName=XSD Ecore Converter

featureText=XSD Ecore Converter\n\
Version: {featureVersion}\n\
Build: {0}\n\
Commit: {1}\n\
\n\
(c) Copyright Eclipse contributors and others. 2002, 2018.  All rights reserved.\n\
\n\
XSD is a reference library for manipulating the components of an\n\
XML Schema as described by the W3C XML Schema specifications.\n\
Visit http://www.eclipse.org/xsd/
