<?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
 *
 *     https://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.
 *
-->
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
    <!-- Suppress OWASP warnings about openldap serverside vulnerabilities, not applicable here. -->
    <suppress>
        <notes><![CDATA[
      file name: accelerator-api-1.0-RC41.jar
      ]]></notes>
        <gav regex="true">^org\.openldap:accelerator-api:.*$</gav>
        <cpe>cpe:/a:openldap:openldap</cpe>
    </suppress>
    <suppress>
        <notes><![CDATA[
      file name: accelerator-impl-1.0-RC41.jar
      ]]></notes>
        <gav regex="true">^org\.openldap:accelerator-impl:.*$</gav>
        <cpe>cpe:/a:openldap:openldap</cpe>
    </suppress>
    <suppress>
        <notes><![CDATA[
   file name: api-i18n-2.0.0.jar
   ]]></notes>
        <packageUrl regex="true">^pkg:maven/org\.apache\.directory\.api/api\-i18n@.*$</packageUrl>
        <cpe>cpe:/a:i18n_project:i18n</cpe>
    </suppress>
</suppressions>
