<?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.  
-->

<groups>
  <group name="TV" created="2006.06.20 at 14:50:54:000 EDT" modifier="" lastModified="2006.01.21 at 14:50:54:000 EST">
    <member principal="Archie Bunker" />
    <member principal="BullwinkleMoose" />
    <member principal="Fred Friendly" />
  </group>
  <group name="Literature" created="2006.06.22 at 14:50:54:000 EDT" modifier="" lastModified="2006.01.23 at 14:50:54:000 EST">
    <member principal="Charles Dickens" />
    <member principal="Homer" />
  </group>
  <group name="Art" created="2006.06.24 at 14:50:54:000 EDT" modifier="" lastModified="2006.01.25 at 14:50:54:000 EST"/>
  <group name="Admin" created="2006.06.25 at 14:50:54:000 EDT" modifier="" lastModified="2006.01.26 at 14:50:54:000 EST">
    <member principal="Administrator" />
  </group>
</groups>