# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

depends.jars=${hy.depends}/jars

xalan.version=2.7.0
xalan.base=xalan-j_${xalan.version}
xalan.dir=${depends.jars}/${xalan.base}
xalan.orig.jar=${xalan.dir}/xalan.orig.jar
xalan.jar=${xalan.dir}/xalan.jar
xalan.url=${maven2.base}/xalan/xalan/${xalan.version}/xalan-${xalan.version}.jar
xalan.md5=a018d032c21a873225e702b36b171a10

xerces.version=2.11.0
xerces.base=xerces_${xerces.version}
xerces.dir=${depends.jars}/${xerces.base}
xerces.zip=${xerces.dir}/xerces.zip
xerces.url=http://www.apache.org/dist/xerces/j/Xerces-J-bin.${xerces.version}.zip
xerces.md5=8da14a7b2848eff131b7cc10668887e8
