﻿<?xml version="1.0"?>
<!--
   Licensed 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.
 -->
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">

	<properties>
		<title>Команда проекта</title>
		<author email="sebawagner@apache.org">
			Sebastian Wagner
		</author>
	</properties>

	<body>

		<section name="OpenMeetings Committers">

			<p>
				Люди, отмеченные на этой странице, имеют доступ к репозиторию исходного кода Apache Openmeetings. 
				Данная страница предназначена для того, чтобы служить основой квалификационного отбора
				по проектам, требующим модификации исходного кода Openmeetings.
			</p>

			
			<table>
				<tr>
					<th>Имя</th>
				</tr>
				<tr>
					<td>Себастьян Вагнер</td>
				</tr>
				<tr>
					<td>Алексей Федотов</td>
				</tr>
				<tr>
					<td>Евгений Ровинский</td>
				</tr>
				<tr>
					<td>Максим Солодовник</td>
				</tr>
				<tr>
					<td>Oliver Becherer</td>
				</tr>
				<tr>
					<td>Eugen Schwert</td>
				</tr>
				<tr>
					<td>Sascha Xander</td>
				</tr>
				<tr>
					<td>Johnny Strom</td>
				</tr>
				<tr>
					<td>Герман Грехов</td>
				</tr>
				<tr>
					<td>Тимур Тлеукенов</td>
				</tr>
				<tr>
					<td>Alvaro Bustos</td>
				</tr>
				<tr>
					<td>George Kirkham</td>
				</tr>
				<tr>
					<td>Stephen Cottham</td>
				</tr>
				<tr>
					<td>Ирина Архипец</td>
				</tr>
				<tr>
					<td>Василий Дегтярев</td>
				</tr>
				<tr>
					<td>Денис Кандров</td>
				</tr>
				<tr>
					<td>Юлия Альгаер</td>
				</tr>
				<tr>
					<td>Артём Хоруженко</td>
				</tr>
			</table>
			
		</section>

	</body>
</document>
