<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<project xmlns="http://www.netbeans.org/ns/project/1">
    <type>org.netbeans.modules.java.j2seproject</type>
    <configuration>
        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
            <name>Apache SIS on GeoAPI 3.1</name>
            <source-roots>
                <root id="src.local-src.dir" name="Local sources (unversioned)"/>
                <root id="src.webapp.dir" name="Web application"/>
                <root id="src.console.dir" name="Console"/>
                <root id="src.portrayal.dir" name="Portrayal"/>
                <root id="src.earth-obs.dir" name="Earth observation"/>
                <root id="src.geotiff.dir" name="GeoTIFF"/>
                <root id="src.netcdf.dir" name="NetCDF"/>
                <root id="src.shapefile.dir" name="Shapefile"/>
                <root id="src.sql.dir" name="SQLStore"/>
                <root id="src.xmlstore.dir" name="XMLStore"/>
                <root id="src.storage.dir" name="Storage"/>
                <root id="src.feature.dir" name="Feature"/>
                <root id="src.referencing.dir" name="Referencing"/>
                <root id="src.ref-by-id.dir" name="Referencing by identifiers"/>
                <root id="src.metadata.dir" name="Metadata"/>
                <root id="src.utility.dir" name="Utility"/>
                <root id="src.fra-profile.dir" name="French profile"/>
                <root id="src.jpn-profile.dir" name="Japanese profile"/>
                <root id="src.gdal.dir" name="GDAL/Proj4"/>
                <root id="src.c.gdal.dir" name="GDAL/Proj4 JNI"/>
            </source-roots>
            <test-roots>
                <root id="test.webapp.dir" name="Test web application"/>
                <root id="test.console.dir" name="Test Console"/>
                <root id="test.portrayal.dir" name="Test Portrayal"/>
                <root id="test.earth-obs.dir" name="Test Earth observation"/>
                <root id="test.geotiff.dir" name="Test GeoTIFF"/>
                <root id="test.netcdf.dir" name="Test NetCDF"/>
                <root id="test.shapefile.dir" name="Test Shapefile"/>
                <root id="test.sql.dir" name="Test SQLStore"/>
                <root id="test.xmlstore.dir" name="Test XMLStore"/>
                <root id="test.storage.dir" name="Test Storage"/>
                <root id="test.feature.dir" name="Test Feature"/>
                <root id="test.referencing.dir" name="Test Referencing"/>
                <root id="test.ref-by-id.dir" name="Test Referencing by identifiers"/>
                <root id="test.metadata.dir" name="Test Metadata"/>
                <root id="test.utility.dir" name="Test Utility"/>
                <root id="test.fra-profile.dir" name="Test French profile"/>
                <root id="test.jpn-profile.dir" name="Test Japanese profile"/>
                <root id="test.gdal.dir" name="Test GDAL/Proj4"/>
            </test-roots>
        </data>
        <spellchecker-wordlist xmlns="http://www.netbeans.org/ns/spellchecker-wordlist/1">
            <word>accessor</word>
            <word>antimeridian</word>
            <word>authalic</word>
            <word>bilevel</word>
            <word>bitmask</word>
            <word>boolean</word>
            <word>Bézier</word>
            <word>centimetre</word>
            <word>circlelike</word>
            <word>classname</word>
            <word>classnames</word>
            <word>classpath</word>
            <word>deserialization</word>
            <word>deserialized</word>
            <word>endianness</word>
            <word>geoidal</word>
            <word>georeferenced</word>
            <word>georeferencing</word>
            <word>geospatial</word>
            <word>grayscale</word>
            <word>hectopascals</word>
            <word>initially</word>
            <word>javadoc</word>
            <word>kilometre</word>
            <word>linearizer</word>
            <word>linearizers</word>
            <word>loggings</word>
            <word>maintainance</word>
            <word>marshallable</word>
            <word>marshalled</word>
            <word>marshaller</word>
            <word>marshallers</word>
            <word>marshalling</word>
            <word>metadata</word>
            <word>metres</word>
            <word>millimetre</word>
            <word>monospaced</word>
            <word>namespace</word>
            <word>namespaces</word>
            <word>orthodromic</word>
            <word>parsable</word>
            <word>polyline</word>
            <word>polylines</word>
            <word>preprocessing</word>
            <word>programmatically</word>
            <word>recursivity</word>
            <word>scanline</word>
            <word>spliterator</word>
            <word>subsampled</word>
            <word>subsampling</word>
            <word>subsamplings</word>
            <word>timezone</word>
            <word>transitioning</word>
            <word>unary</word>
            <word>Unicode</word>
            <word>uninstall</word>
            <word>unmarshal</word>
            <word>unmarshaller</word>
            <word>unmarshallers</word>
            <word>unmarshalling</word>
            <word>unparsable</word>
            <word>whitespaces</word>
        </spellchecker-wordlist>
    </configuration>
</project>
