////
 * Copyright (C) 2015 Eclipse Foundation, Inc. and others. 
 * 
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 * 
 * SPDX-License-Identifier: EPL-2.0
////

[[notices]]
== Notices

Copyright (C) 2015, 2020 Eclipse Foundation, Inc. and others. 

Made available under the {epl20Url}[Eclipse Public License v 2.0].

This document includes content originally authored on the http://wiki.eclipse.org[Eclipsepedia wiki] by Wayne Beaton, Fabian Steeg, Denis Roy, Dave Carver, Ed Merks, Bjorn Freeman-Benson, Anne Jacko, Ian Skerrett, Mike Milinkovich, and John Arthorne.

Version {project-version}.