# Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others.
# 
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
# SPDX-License-Identifier: EPL-2.0
# 
# Contributors:
# Eugen Neufeld - initial API and implementation

bin.includes = .,\
               model/,\
               META-INF/,\
               plugin.xml,\
               plugin.properties,\
               about.html,\
               about.ini,\
               about.mappings,\
               about.properties,\
               copyright.txt,\
               modeling32.png
jars.compile.order = .
source.. = src/
output.. = bin/
src.includes = about.html
