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


# For modifying pipe transport edge label value

maxFlow = Max flow
maxFlowTT = Maximum passengers / TP
maxFlowUNIT = Passengers/TP

timePeriod = Time Period (ms)
timePeriodTT = The time period used (default one day)
timePeriodUNIT = ms
