From ce250e16e8bb1b08ed9c5b1bcfc2a2fbdded816c Mon Sep 17 00:00:00 2001
From: Ryan Cross <rcross@amsl.com>
Date: Mon, 27 Jul 2015 18:57:38 +0000
Subject: [PATCH 01/16] Fix matching audio file names with rooms.  Commit ready
 for merge.  - Legacy-Id: 9901

---
 ietf/secr/proceedings/proc_utils.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ietf/secr/proceedings/proc_utils.py b/ietf/secr/proceedings/proc_utils.py
index ad5ef03c1..eac5c17ef 100644
--- a/ietf/secr/proceedings/proc_utils.py
+++ b/ietf/secr/proceedings/proc_utils.py
@@ -45,7 +45,7 @@ def check_audio_files(group,meeting):
             continue
         room = timeslot.location.name.lower()
         room = room.replace(' ','')
-        room = room.replace('/','')
+        room = room.replace('/','_')
         time = timeslot.time.strftime("%Y%m%d-%H%M")
         filename = 'ietf{}-{}-{}-*'.format(meeting.number,room,time)
         path = os.path.join(settings.MEETING_RECORDINGS_DIR,'ietf{}'.format(meeting.number),filename)

From fe6aa25af59e4070a9c8c1273f61e310762615a7 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Wed, 29 Jul 2015 19:38:00 +0000
Subject: [PATCH 02/16] Improved the handling of failed xml2rfc conversions
 when no txt document was submitted.  - Legacy-Id: 9914

---
 ietf/submit/views.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/ietf/submit/views.py b/ietf/submit/views.py
index 8cd73e9a7..81c9af0f5 100644
--- a/ietf/submit/views.py
+++ b/ietf/submit/views.py
@@ -47,13 +47,13 @@ def upload_submission(request):
 
                 if form.cleaned_data['xml']:
                     if not form.cleaned_data['txt']:
+                        file_name['txt'] = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s.txt' % (form.filename, form.revision))
                         try:
-                            file_name['txt'] = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s.txt' % (form.filename, form.revision))
                             pagedwriter = xml2rfc.PaginatedTextRfcWriter(form.xmltree, quiet=True)
                             pagedwriter.write(file_name['txt'])
-                            file_size = os.stat(file_name['txt']).st_size
                         except Exception as e:
-                            raise ValidationError("Exception: %s" % e)
+                            raise ValidationError("Error from xml2rfc: %s" % e)
+                        file_size = os.stat(file_name['txt']).st_size
                     # Some meta-information, such as the page-count, can only
                     # be retrieved from the generated text file.  Provide a
                     # parsed draft object to get at that kind of information.
@@ -128,6 +128,10 @@ def upload_submission(request):
                 form._errors["__all__"] = form.error_class(["There was a failure receiving the complete form data -- please try again."])
             else:
                 raise
+        except ValidationError as e:
+            form = SubmissionUploadForm(request=request)
+            form._errors = {}
+            form._errors["__all__"] = form.error_class(["There was a failure converting the xml file to text -- please verify that your xml file is valid.  (%s)" % e.message])
     else:
         form = SubmissionUploadForm(request=request)
 

From cfb7dc3dc89ee47cadad81a55e63560c7254806f Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Wed, 29 Jul 2015 20:39:39 +0000
Subject: [PATCH 03/16] Require setuptools first.  - Legacy-Id: 9915

---
 requirements.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index 5681a311a..45e875ca1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,6 @@
 # -*- conf-mode -*-
+setuptools>=1.2			# Require this first, to prevent later errors
+#
 coverage>=3.7.1
 #cssselect>=0.6.1               # for PyQuery
 decorator>=3.4.0
@@ -19,7 +21,6 @@ python-dateutil>=2.2
 python-magic>=0.4.6
 python-memcached>=1.48		# for django.core.cache.backends.memcached
 pytz>=2014.7
-setuptools>=1.2
 six>=1.8.0
 wsgiref>=0.1.2
 xml2rfc>=2.5.0

From cdb0d24aeda993e560d8c9fd6f8089a0de6f1f0c Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Thu, 30 Jul 2015 11:44:54 +0000
Subject: [PATCH 04/16] Improved the error reporting for invalid xml file
 submissions.  - Legacy-Id: 9916

---
 ietf/submit/forms.py | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/ietf/submit/forms.py b/ietf/submit/forms.py
index b59b6104f..240fbd828 100644
--- a/ietf/submit/forms.py
+++ b/ietf/submit/forms.py
@@ -136,7 +136,8 @@ class SubmissionUploadForm(forms.Form):
         if self.cleaned_data.get('xml'):
             #if not self.cleaned_data.get('txt'):
             xml_file = self.cleaned_data.get('xml')
-            tfh, tfn = tempfile.mkstemp(suffix='.xml')
+            name, ext = os.path.splitext(os.path.basename(xml_file.name))
+            tfh, tfn = tempfile.mkstemp(prefix=name+'-', suffix='.xml')
             try:
                 # We need to write the xml file to disk in order to hand it
                 # over to the xml parser.  XXX FIXME: investigate updating
@@ -149,8 +150,21 @@ class SubmissionUploadForm(forms.Form):
                 parser = xml2rfc.XmlRfcParser(tfn, quiet=True)
                 self.xmltree = parser.parse()
                 ok, errors = self.xmltree.validate()
+                debug.type('errors')
                 if not ok:
-                    raise forms.ValidationError(errors)
+                    # Each error has properties:
+                    #
+                    #     message:  the message text
+                    #     domain:   the domain ID (see lxml.etree.ErrorDomains)
+                    #     type:     the message type ID (see lxml.etree.ErrorTypes)
+                    #     level:    the log level ID (see lxml.etree.ErrorLevels)
+                    #     line:     the line at which the message originated (if applicable)
+                    #     column:   the character column at which the message originated (if applicable)
+                    #     filename: the name of the file in which the message originated (if applicable)
+                    raise forms.ValidationError(
+                            [ forms.ValidationError("One or more XML validation errors occurred when processing the XML file:") ] +
+                            [ forms.ValidationError("%s: Line %s: %s" % (xml_file.name, e.line, e.message), code="%s"%e.type) for e in errors ]
+                        )
                 self.xmlroot = self.xmltree.getroot()
                 draftname = self.xmlroot.attrib.get('docName')
                 revmatch = re.search("-[0-9][0-9]$", draftname)
@@ -174,8 +188,10 @@ class SubmissionUploadForm(forms.Form):
                     self.author_list.append(author_dict)
                     line = "%(full_name)s <%(email)s>" % author_dict
                     self.authors.append(line)
+            except forms.ValidationError:
+                raise
             except Exception as e:
-                raise forms.ValidationError("Exception: %s" % e)
+                raise forms.ValidationError("Exception when trying to process the XML file: %s" % e)
             finally:
                 os.close(tfh)
                 os.unlink(tfn)

From e737fa747c3332cf937d1c16cff5839d135dc746 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Thu, 30 Jul 2015 13:17:14 +0000
Subject: [PATCH 05/16] Fixed an incorrect list of string interpolation
 arguments.  - Legacy-Id: 9918

---
 ietf/submit/parsers/base.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ietf/submit/parsers/base.py b/ietf/submit/parsers/base.py
index 0d423d321..8dc405507 100644
--- a/ietf/submit/parsers/base.py
+++ b/ietf/submit/parsers/base.py
@@ -77,4 +77,4 @@ class FileParser(object):
         content = self.fd.file.read(4096)
         mimetype = magic.from_buffer(content, mime=True)
         if not mimetype == expected:
-            self.parsed_info.add_error('Expected an %s file of type "%s", found one of type "%s"' % (expected, mimetype))
+            self.parsed_info.add_error('Expected an %s file of type "%s", found one of type "%s"' % (ext.upper(), expected, mimetype))

From fb79c8a22c51da2d72a4e54d9cb04253304f225e Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Thu, 30 Jul 2015 18:22:28 +0000
Subject: [PATCH 06/16] Updated the meta-data error message to say 'errors ...
 below' instead of 'errors ... above', to match the relative placement of text
 and error indications.  - Legacy-Id: 9921

---
 ietf/templates/submit/submission_status.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ietf/templates/submit/submission_status.html b/ietf/templates/submit/submission_status.html
index 57ffe2ca0..1897d9e9c 100644
--- a/ietf/templates/submit/submission_status.html
+++ b/ietf/templates/submit/submission_status.html
@@ -89,7 +89,7 @@
       <p>Please make sure that your Internet-Draft includes all of the required meta-data in the proper format.</p>
 
       <p>If your Internet-Draft <b>does</b> include all of the required meta-data in the proper format, and if
-        the error(s) identified above are due to the failure of the tool to extract the meta-data correctly,
+        the error(s) identified below are due to the failure of the tool to extract the meta-data correctly,
         then please use the "Adjust meta-data" button below, which will take you to the "Adjust screen" where
         you can correct the improperly extracted meta-data. You will then be able to submit your Internet-Draft
         to the Secretariat for manual posting.</p>

From faecc697be9dd625decc7422106cb7fc76bbc24d Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Thu, 30 Jul 2015 18:23:56 +0000
Subject: [PATCH 07/16] Changed the code for meta-data extraction from xml
 files to not break if a sought-after element is missing.  - Legacy-Id: 9922

---
 ietf/submit/forms.py | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/ietf/submit/forms.py b/ietf/submit/forms.py
index 240fbd828..dfb41a2e3 100644
--- a/ietf/submit/forms.py
+++ b/ietf/submit/forms.py
@@ -150,7 +150,6 @@ class SubmissionUploadForm(forms.Form):
                 parser = xml2rfc.XmlRfcParser(tfn, quiet=True)
                 self.xmltree = parser.parse()
                 ok, errors = self.xmltree.validate()
-                debug.type('errors')
                 if not ok:
                     # Each error has properties:
                     #
@@ -174,16 +173,16 @@ class SubmissionUploadForm(forms.Form):
                 else:
                     self.revision = None
                     self.filename = draftname
-                self.title = self.xmlroot.find('front/title').text
-                self.abstract = self.xmlroot.find('front/abstract').text
+                self.title = self.xmlroot.findtext('front/title')
+                self.abstract = self.xmlroot.findtext('front/abstract')
                 self.author_list = []
                 author_info = self.xmlroot.findall('front/author')
                 for author in author_info:
                     author_dict = dict(
-                        company = author.find('organization').text,
+                        company = author.findtext('organization'),
                         last_name = author.attrib.get('surname'),
                         full_name = author.attrib.get('fullname'),
-                        email = author.find('address/email').text,
+                        email = author.findtext('address/email'),
                     )
                     self.author_list.append(author_dict)
                     line = "%(full_name)s <%(email)s>" % author_dict

From ab8d0187605100aa8044a78f013246cc77f7e735 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Thu, 30 Jul 2015 18:57:44 +0000
Subject: [PATCH 08/16] Provide a document's rfc number (if any) as part of the
 document fields exposed in the json api.  - Legacy-Id: 9923

---
 ietf/doc/resources.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/ietf/doc/resources.py b/ietf/doc/resources.py
index 5e595bdee..35e837c15 100644
--- a/ietf/doc/resources.py
+++ b/ietf/doc/resources.py
@@ -1,6 +1,6 @@
 # Autogenerated by the mkresources management command 2014-12-14 19:50
 from tastypie.resources import ModelResource
-from tastypie.fields import ToOneField, ToManyField
+from tastypie.fields import ToOneField, ToManyField, CharField
 from tastypie.constants import ALL, ALL_WITH_RELATIONS
 
 from ietf import api
@@ -86,6 +86,7 @@ class DocumentResource(ModelResource):
     states           = ToManyField(StateResource, 'states', null=True)
     tags             = ToManyField(DocTagNameResource, 'tags', null=True)
     authors          = ToManyField(EmailResource, 'authors', null=True)
+    rfc              = CharField(attribute='rfc_number', null=True)
     class Meta:
         queryset = Document.objects.all()
         #resource_name = 'document'

From 461af5af1954c638a80f402b40754fbaff6d792b Mon Sep 17 00:00:00 2001
From: Robert Sparks <rjsparks@nostrum.com>
Date: Thu, 30 Jul 2015 21:51:38 +0000
Subject: [PATCH 09/16] Adds views of active areas, area groups, teams, and
 directorates.

Adds navigation to those views to the base menus.

Unifies URL patterns shared between group/urls and group/urls_info,
exposing the same view at, e.g., /group/stir and /wg/stir/.

Improves testing, primarily of group/info.py

Commit ready for merge.
 - Legacy-Id: 9924
---
 ietf/doc/templatetags/active_groups_menu.py |  14 +++
 ietf/group/edit.py                          |  21 +++-
 ietf/group/features.py                      |   1 +
 ietf/group/info.py                          |  40 +++++++-
 ietf/group/tests.py                         |  28 +++---
 ietf/group/tests_info.py                    | 105 +++++++++++++++-----
 ietf/group/urls.py                          |  26 +----
 ietf/group/urls_info.py                     |  22 +---
 ietf/group/urls_info_details.py             |  23 +++++
 ietf/templates/base/menu.html               |   4 +-
 ietf/templates/base/menu_active_groups.html |   8 ++
 ietf/templates/group/active_ags.html        |  45 +++++++++
 ietf/templates/group/active_areas.html      |   4 +-
 ietf/templates/group/active_dirs.html       |  46 +++++++++
 ietf/templates/group/active_groups.html     |  27 +++++
 ietf/templates/group/active_teams.html      |  34 +++++++
 ietf/urls.py                                |   2 +-
 17 files changed, 362 insertions(+), 88 deletions(-)
 create mode 100644 ietf/doc/templatetags/active_groups_menu.py
 create mode 100644 ietf/group/urls_info_details.py
 create mode 100644 ietf/templates/base/menu_active_groups.html
 create mode 100644 ietf/templates/group/active_ags.html
 create mode 100644 ietf/templates/group/active_dirs.html
 create mode 100644 ietf/templates/group/active_groups.html
 create mode 100644 ietf/templates/group/active_teams.html

diff --git a/ietf/doc/templatetags/active_groups_menu.py b/ietf/doc/templatetags/active_groups_menu.py
new file mode 100644
index 000000000..a9915343c
--- /dev/null
+++ b/ietf/doc/templatetags/active_groups_menu.py
@@ -0,0 +1,14 @@
+from django import template
+from django.template.loader import render_to_string
+
+from ietf.name.models import GroupTypeName
+
+register = template.Library()
+
+@register.simple_tag
+def active_groups_menu():
+    parents = GroupTypeName.objects.filter(slug__in=['ag','area','team','dir'])
+    for p in parents:
+        p.menu_url = '/%s/'%p.slug
+    return render_to_string('base/menu_active_groups.html', { 'parents': parents })
+
diff --git a/ietf/group/edit.py b/ietf/group/edit.py
index 390a34495..e4a40aea9 100644
--- a/ietf/group/edit.py
+++ b/ietf/group/edit.py
@@ -167,14 +167,29 @@ def get_or_create_initial_charter(group, group_type):
     return charter
 
 @login_required
-def submit_initial_charter(request, group_type, acronym=None):
-    if not can_manage_group_type(request.user, group_type):
-        return HttpResponseForbidden("You don't have permission to access this view")
+def submit_initial_charter(request, group_type=None, acronym=None):
+
+    # This needs refactoring.
+    # The signature assumed you could have groups with the same name, but with different types, which we do not allow.
+    # Consequently, this can be called with an existing group acronym and a type 
+    # that doesn't match the existing group type. The code below essentially ignores the group_type argument.
+    #
+    # If possible, the use of get_or_create_initial_charter should be moved
+    # directly into charter_submit, and this function should go away.
+
+    if acronym==None:
+        raise Http404
 
     group = get_object_or_404(Group, acronym=acronym)
     if not group.features.has_chartering_process:
         raise Http404
 
+    # This is where we start ignoring the passed in group_type
+    group_type = group.type_id
+
+    if not can_manage_group_type(request.user, group_type):
+        return HttpResponseForbidden("You don't have permission to access this view")
+
     if not group.charter:
         group.charter = get_or_create_initial_charter(group, group_type)
         group.save()
diff --git a/ietf/group/features.py b/ietf/group/features.py
index 98b5ba2da..7e32136b8 100644
--- a/ietf/group/features.py
+++ b/ietf/group/features.py
@@ -20,6 +20,7 @@ class GroupFeatures(object):
             self.default_tab = "group_docs"
         elif group.type_id in ("team",):
             self.has_materials = True
+            self.default_tab = "group_about"
 
         if self.has_chartering_process:
             self.about_page = "group_charter"
diff --git a/ietf/group/info.py b/ietf/group/info.py
index 9ce6b238d..9cd9c1e20 100644
--- a/ietf/group/info.py
+++ b/ietf/group/info.py
@@ -189,16 +189,43 @@ def wg_charters_by_acronym(request, group_type):
                   { 'groups': groups },
                   content_type='text/plain; charset=UTF-8')
 
-def active_groups(request, group_type):
-    if group_type == "wg":
+def active_groups(request, group_type=None):
+
+    if not group_type:
+        return active_group_types(request)
+    elif group_type == "wg":
         return active_wgs(request)
     elif group_type == "rg":
         return active_rgs(request)
+    elif group_type == "ag":
+        return active_ags(request)
     elif group_type == "area":
         return active_areas(request)
+    elif group_type == "team":
+        return active_teams(request)
+    elif group_type == "dir":
+        return active_dirs(request)
     else:
         raise Http404
 
+def active_group_types(request):
+    grouptypes = GroupTypeName.objects.filter(slug__in=['wg','rg','ag','team','dir','area'])
+    return render(request, 'group/active_groups.html', {'grouptypes':grouptypes})
+
+def active_dirs(request):
+    dirs = Group.objects.filter(type="dir", state="active").order_by("name")
+    for group in dirs:
+        group.chairs = sorted(roles(group, "chair"), key=extract_last_name)
+        group.ads = sorted(roles(group, "ad"), key=extract_last_name)
+        group.secretaries = sorted(roles(group, "secr"), key=extract_last_name)
+    return render(request, 'group/active_dirs.html', {'dirs' : dirs })
+
+def active_teams(request):
+    teams = Group.objects.filter(type="team", state="active").order_by("name")
+    for group in teams:
+        group.chairs = sorted(roles(group, "chair"), key=extract_last_name)
+    return render(request, 'group/active_teams.html', {'teams' : teams })
+
 def active_areas(request):
 	areas = Group.objects.filter(type="area", state="active").order_by("name")  
 	return render(request, 'group/active_areas.html', {'areas': areas })
@@ -235,6 +262,15 @@ def active_rgs(request):
 
     return render(request, 'group/active_rgs.html', { 'irtf': irtf, 'groups': groups })
     
+def active_ags(request):
+
+    groups = Group.objects.filter(type="ag", state="active").order_by("acronym")
+    for group in groups:
+        group.chairs = sorted(roles(group, "chair"), key=extract_last_name)
+        group.ads = sorted(roles(group, "ad"), key=extract_last_name)
+
+    return render(request, 'group/active_ags.html', { 'groups': groups })
+    
 def bofs(request, group_type):
     groups = Group.objects.filter(type=group_type, state="bof")
     return render(request, 'group/bofs.html',dict(groups=groups))
diff --git a/ietf/group/tests.py b/ietf/group/tests.py
index 9f783186d..36f9fdd48 100644
--- a/ietf/group/tests.py
+++ b/ietf/group/tests.py
@@ -63,21 +63,25 @@ class GroupTests(TestCase):
         make_test_data()
         for group in Group.objects.filter(Q(type="wg") | Q(type="rg")):
             client = Client(Accept='application/pdf')
-            r = client.get(urlreverse("ietf.group.info.dependencies_dot",
-                kwargs=dict(acronym=group.acronym)))
-            self.assertTrue(r.status_code == 200, "Failed to receive "
-                "a dot dependency graph for group: %s"%group.acronym)
-            self.assertGreater(len(r.content), 0, "Dot dependency graph for group "
-                "%s has no content"%group.acronym)
+            for url in [ urlreverse("ietf.group.info.dependencies_dot",kwargs=dict(acronym=group.acronym)),
+                         urlreverse("ietf.group.info.dependencies_dot",kwargs=dict(acronym=group.acronym,group_type=group.type_id)),
+                       ]:
+                r = client.get(url)
+                self.assertTrue(r.status_code == 200, "Failed to receive "
+                    "a dot dependency graph for group: %s"%group.acronym)
+                self.assertGreater(len(r.content), 0, "Dot dependency graph for group "
+                    "%s has no content"%group.acronym)
 
     def test_group_document_dependency_pdffile(self):
         make_test_data()
         for group in Group.objects.filter(Q(type="wg") | Q(type="rg")):
             client = Client(Accept='application/pdf')
-            r = client.get(urlreverse("ietf.group.info.dependencies_pdf",
-                kwargs=dict(acronym=group.acronym)))
-            self.assertTrue(r.status_code == 200, "Failed to receive "
-                "a pdf dependency graph for group: %s"%group.acronym)
-            self.assertGreater(len(r.content), 0, "Pdf dependency graph for group "
-                "%s has no content"%group.acronym)
+            for url in [ urlreverse("ietf.group.info.dependencies_pdf",kwargs=dict(acronym=group.acronym)),
+                         urlreverse("ietf.group.info.dependencies_pdf",kwargs=dict(acronym=group.acronym,group_type=group.type_id)),
+                       ]:
+                r = client.get(url)
+                self.assertTrue(r.status_code == 200, "Failed to receive "
+                    "a pdf dependency graph for group: %s"%group.acronym)
+                self.assertGreater(len(r.content), 0, "Pdf dependency graph for group "
+                    "%s has no content"%group.acronym)
             
diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py
index c75286ef1..9cb180e1e 100644
--- a/ietf/group/tests_info.py
+++ b/ietf/group/tests_info.py
@@ -10,11 +10,12 @@ import debug                            # pyflakes:ignore
 
 from django.conf import settings
 from django.core.urlresolvers import reverse as urlreverse
+from django.core.urlresolvers import NoReverseMatch
 
 from ietf.doc.models import Document, DocAlias, DocEvent, State
 from ietf.group.models import Group, GroupEvent, GroupMilestone, GroupStateTransitions, MilestoneGroupEvent
 from ietf.group.utils import save_group_in_history
-from ietf.name.models import DocTagName, GroupStateName
+from ietf.name.models import DocTagName, GroupStateName, GroupTypeName
 from ietf.person.models import Person, Email
 from ietf.utils.test_utils import TestCase
 from ietf.utils.mail import outbox
@@ -48,11 +49,37 @@ class GroupPagesTests(TestCase):
         url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="rg"))
         r = self.client.get(url)
         self.assertEqual(r.status_code, 200)
+        self.assertTrue('Active Research Groups' in r.content)
 
         url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="area"))
         r = self.client.get(url)
         self.assertEqual(r.status_code, 200)
-        self.assertTrue("farfut" in r.content)
+        self.assertTrue("Far Future (farfut)" in r.content)
+
+        url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="ag"))
+        r = self.client.get(url)
+        self.assertEqual(r.status_code, 200)
+        self.assertTrue("Active Area Groups" in r.content)
+
+        url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="dir"))
+        r = self.client.get(url)
+        self.assertEqual(r.status_code, 200)
+        self.assertTrue("Active Directorates" in r.content)
+
+        url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="team"))
+        r = self.client.get(url)
+        self.assertEqual(r.status_code, 200)
+        self.assertTrue("Active Teams" in r.content)
+
+        url = urlreverse('ietf.group.info.active_groups', kwargs=dict())
+        r = self.client.get(url)
+        self.assertEqual(r.status_code, 200)
+        self.assertTrue("Directorate" in r.content)
+        self.assertTrue("AG" in r.content)
+
+        for slug in GroupTypeName.objects.exclude(slug__in=['wg','rg','ag','area','dir','team']).values_list('slug',flat=True):
+            with self.assertRaises(NoReverseMatch):
+                url=urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type=slug))
 
     def test_wg_summaries(self):
         draft = make_test_data()
@@ -195,14 +222,17 @@ class GroupPagesTests(TestCase):
             due=datetime.date.today() + datetime.timedelta(days=100))
         milestone.docs.add(draft)
 
-        url = group.about_url()
-        r = self.client.get(url)
-        self.assertEqual(r.status_code, 200)
-        self.assertTrue(group.name in r.content)
-        self.assertTrue(group.acronym in r.content)
-        self.assertTrue("This is a charter." in r.content)
-        self.assertTrue(milestone.desc in r.content)
-        self.assertTrue(milestone.docs.all()[0].name in r.content)
+        for url in [group.about_url(),
+                    urlreverse('ietf.group.info.group_about',kwargs=dict(acronym=group.acronym)),
+                    urlreverse('ietf.group.info.group_about',kwargs=dict(acronym=group.acronym,group_type=group.type_id)),
+                   ]:
+            r = self.client.get(url)
+            self.assertEqual(r.status_code, 200)
+            self.assertTrue(group.name in r.content)
+            self.assertTrue(group.acronym in r.content)
+            self.assertTrue("This is a charter." in r.content)
+            self.assertTrue(milestone.desc in r.content)
+            self.assertTrue(milestone.docs.all()[0].name in r.content)
 
     def test_group_about(self):
         make_test_data()
@@ -214,12 +244,16 @@ class GroupPagesTests(TestCase):
             state_id="active",
         )
 
-        url = group.about_url()
-        r = self.client.get(url)
-        self.assertEqual(r.status_code, 200)
-        self.assertTrue(group.name in r.content)
-        self.assertTrue(group.acronym in r.content)
-        self.assertTrue(group.description in r.content)
+        for url in [group.about_url(),
+                    urlreverse('ietf.group.info.group_about',kwargs=dict(acronym=group.acronym)),
+                    urlreverse('ietf.group.info.group_about',kwargs=dict(acronym=group.acronym,group_type=group.type_id)),
+                   ]:
+            url = group.about_url()
+            r = self.client.get(url)
+            self.assertEqual(r.status_code, 200)
+            self.assertTrue(group.name in r.content)
+            self.assertTrue(group.acronym in r.content)
+            self.assertTrue(group.description in r.content)
 
     def test_materials(self):
         make_test_data()
@@ -235,11 +269,15 @@ class GroupPagesTests(TestCase):
         doc.set_state(State.objects.get(type="slides", slug="active"))
         DocAlias.objects.create(name=doc.name, document=doc)
 
-        url = urlreverse("group_materials", kwargs={ 'acronym': group.acronym })
-        r = self.client.get(url)
-        self.assertEqual(r.status_code, 200)
-        self.assertTrue(doc.title in r.content)
-        self.assertTrue(doc.name in r.content)
+        for url in [ urlreverse("group_materials", kwargs={ 'acronym': group.acronym }),
+                     urlreverse("group_materials", kwargs={ 'acronym': group.acronym , 'group_type': group.type_id}),
+                   ]:
+            r = self.client.get(url)
+            self.assertEqual(r.status_code, 200)
+            self.assertTrue(doc.title in r.content)
+            self.assertTrue(doc.name in r.content)
+
+        url =  urlreverse("group_materials", kwargs={ 'acronym': group.acronym })
 
         # try deleting the document and check it's gone
         doc.set_state(State.objects.get(type="slides", slug="deleted"))
@@ -475,6 +513,19 @@ class GroupEditTests(TestCase):
         self.assertEqual(group.groupurl_set.all()[0].name, "MARS site")
         self.assertTrue(os.path.exists(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))))
 
+    def test_initial_charter(self):
+        make_test_data()
+        group = Group.objects.get(acronym="mars")
+        for url in [ urlreverse('ietf.group.edit.submit_initial_charter', kwargs={'acronym':group.acronym}),
+                     urlreverse('ietf.group.edit.submit_initial_charter', kwargs={'acronym':group.acronym,'group_type':group.type_id}),
+                   ]:
+            login_testing_unauthorized(self, "secretary", url)
+            r = self.client.get(url,follow=True)
+            self.assertEqual(r.status_code,200) 
+            self.assertTrue(r.redirect_chain[0][0].endswith(urlreverse('charter_submit',kwargs={'name':group.charter.name,'option':'initcharter'})))
+            self.client.logout()
+                    
+
     def test_conclude(self):
         make_test_data()
 
@@ -998,11 +1049,13 @@ expand-ames-chairs@virtual.ietf.org                              mars_chair@ietf
     def tearDown(self):
         os.unlink(self.group_alias_file.name)
 
-    def testNothing(self):
-        url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(acronym="mars"))
-        r = self.client.get(url)
-        self.assertTrue(all([x in r.content for x in ['mars-ads@','mars-chairs@']]))
-        self.assertFalse(any([x in r.content for x in ['ames-ads@','ames-chairs@']]))
+    def testEmailAliases(self):
+
+        for testdict in [dict(acronym="mars"),dict(acronym="mars",group_type="wg")]:
+            url = urlreverse('ietf.group.info.email_aliases', kwargs=testdict)
+            r = self.client.get(url)
+            self.assertTrue(all([x in r.content for x in ['mars-ads@','mars-chairs@']]))
+            self.assertFalse(any([x in r.content for x in ['ames-ads@','ames-chairs@']]))
 
         url = urlreverse('ietf.group.info.email_aliases', kwargs=dict())
         login_testing_unauthorized(self, "plain", url)
diff --git a/ietf/group/urls.py b/ietf/group/urls.py
index 08853bbbe..00124a3a7 100644
--- a/ietf/group/urls.py
+++ b/ietf/group/urls.py
@@ -1,36 +1,18 @@
 # Copyright The IETF Trust 2007, All Rights Reserved
 
-from django.conf.urls import patterns
+from django.conf.urls import patterns, include
 
 urlpatterns = patterns('',
+    (r'^$', 'ietf.group.info.active_groups'), 
     (r'^groupmenu.json', 'ietf.group.ajax.group_menu_data', None, "group_menu_data"),
     (r'^(?P<acronym>[a-z0-9]+).json$', 'ietf.group.ajax.group_json'),
     (r'^chartering/$', 'ietf.group.info.chartering_groups'),
     (r'^chartering/create/(?P<group_type>(wg|rg))/$', 'ietf.group.edit.edit', {'action': "charter"}, "group_create"),
     (r'^concluded/$', 'ietf.group.info.concluded_groups'),
     (r'^email-aliases/$', 'ietf.group.info.email_aliases'),
-    # FIXME: the things below are duplicated in urls_info.py while we
-    # figure out whether to serve everything from /group/<acronym>,
-    # need to unify these at some point
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/$', 'ietf.group.info.group_home', None, "group_home"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/documents/$', 'ietf.group.info.group_documents', None, "group_docs"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/charter/$', 'ietf.group.info.group_about', None, 'group_charter'),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/history/$', 'ietf.group.info.history'),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/deps/dot/$', 'ietf.group.info.dependencies_dot'),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/deps/pdf/$', 'ietf.group.info.dependencies_pdf'),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/init-charter/', 'ietf.group.edit.submit_initial_charter'),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/edit/$', 'ietf.group.edit.edit', {'action': "edit"}, "group_edit"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/conclude/$', 'ietf.group.edit.conclude'),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/$', 'ietf.group.milestones.edit_milestones', {'milestone_set': "current"}, "group_edit_milestones"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/$', 'ietf.group.milestones.edit_milestones', {'milestone_set': "charter"}, "group_edit_charter_milestones"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/reset/$', 'ietf.group.milestones.reset_charter_milestones', None, "group_reset_charter_milestones"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/workflow/$', 'ietf.group.edit.customize_workflow'),
 
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/about/(?P<group_type>.)?$', 'ietf.group.info.group_about', None, 'group_about'),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/materials/$', 'ietf.group.info.materials', None, "group_materials"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/$', 'ietf.doc.views_material.choose_material_type'),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/(?P<doc_type>[\w-]+)/$', 'ietf.doc.views_material.edit_material', { 'action': "new" }, "group_new_material"),
-    (r'^(?P<acronym>[A-Za-z0-9._+-]+)/email-aliases/$', 'ietf.group.info.email_aliases'),
+    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/$', 'ietf.group.info.group_home', None, "group_home"),
+    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/', include('ietf.group.urls_info_details')),
 )
 
 
diff --git a/ietf/group/urls_info.py b/ietf/group/urls_info.py
index dea946c16..581509d8d 100644
--- a/ietf/group/urls_info.py
+++ b/ietf/group/urls_info.py
@@ -1,12 +1,12 @@
 # Copyright The IETF Trust 2008, All Rights Reserved
 
-from django.conf.urls import patterns
+from django.conf.urls import patterns, include
 from django.views.generic import RedirectView
 
-from ietf.group import info, edit, milestones
+from ietf.group import info, edit
 
 urlpatterns = patterns('',
-    (r'^$', info.active_groups),
+    (r'^$', info.active_groups), 
     (r'^summary.txt', RedirectView.as_view(url='/wg/1wg-summary.txt')),
     (r'^summary-by-area.txt', RedirectView.as_view(url='/wg/1wg-summary.txt')),
     (r'^summary-by-acronym.txt', RedirectView.as_view(url='/wg/1wg-summary-by-acronym.txt')),
@@ -19,19 +19,5 @@ urlpatterns = patterns('',
     (r'^bofs/$', info.bofs),
     (r'^email-aliases/$', 'ietf.group.info.email_aliases'),
     (r'^bofs/create/$', edit.edit, {'action': "create"}, "bof_create"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/documents/txt/$', info.group_documents_txt),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/$', info.group_home, None, "group_home"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/documents/$', info.group_documents, None, "group_docs"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/charter/$', info.group_about, None, 'group_charter'),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/history/$', info.history),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/deps/dot/$', info.dependencies_dot),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/deps/pdf/$', info.dependencies_pdf),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/init-charter/', edit.submit_initial_charter),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/edit/$', edit.edit, {'action': "edit"}, "group_edit"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/conclude/$', edit.conclude),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/$', milestones.edit_milestones, {'milestone_set': "current"}, "group_edit_milestones"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/$', milestones.edit_milestones, {'milestone_set': "charter"}, "group_edit_charter_milestones"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/reset/$', milestones.reset_charter_milestones, None, "group_reset_charter_milestones"),
-    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/workflow/$', edit.customize_workflow),
-    (r'^(?P<acronym>[A-Za-z0-9._+-]+)/email-aliases/$', 'ietf.group.info.email_aliases'),
+    (r'^(?P<acronym>[a-zA-Z0-9-._]+)/', include('ietf.group.urls_info_details')),
 )
diff --git a/ietf/group/urls_info_details.py b/ietf/group/urls_info_details.py
new file mode 100644
index 000000000..430c09b39
--- /dev/null
+++ b/ietf/group/urls_info_details.py
@@ -0,0 +1,23 @@
+from django.conf.urls import patterns
+
+urlpatterns = patterns('',
+    (r'^$', 'ietf.group.info.group_home', None, "group_home"),
+    (r'^documents/txt/$', 'ietf.group.info.group_documents_txt'),
+    (r'^documents/$', 'ietf.group.info.group_documents', None, "group_docs"),
+    (r'^charter/$', 'ietf.group.info.group_about', None, 'group_charter'),
+    (r'^about/$', 'ietf.group.info.group_about', None, 'group_about'),
+    (r'^history/$','ietf.group.info.history'),
+    (r'^deps/dot/$', 'ietf.group.info.dependencies_dot'),
+    (r'^deps/pdf/$', 'ietf.group.info.dependencies_pdf'),
+    (r'^init-charter/', 'ietf.group.edit.submit_initial_charter'),
+    (r'^edit/$', 'ietf.group.edit.edit', {'action': "edit"}, "group_edit"),
+    (r'^conclude/$', 'ietf.group.edit.conclude'),
+    (r'^milestones/$', 'ietf.group.milestones.edit_milestones', {'milestone_set': "current"}, "group_edit_milestones"),
+    (r'^milestones/charter/$', 'ietf.group.milestones.edit_milestones', {'milestone_set': "charter"}, "group_edit_charter_milestones"),
+    (r'^milestones/charter/reset/$', 'ietf.group.milestones.reset_charter_milestones', None, "group_reset_charter_milestones"),
+    (r'^workflow/$', 'ietf.group.edit.customize_workflow'),
+    (r'^materials/$', 'ietf.group.info.materials', None, "group_materials"),
+    (r'^materials/new/$', 'ietf.doc.views_material.choose_material_type'),
+    (r'^materials/new/(?P<doc_type>[\w-]+)/$', 'ietf.doc.views_material.edit_material', { 'action': "new" }, "group_new_material"),
+    (r'^/email-aliases/$', 'ietf.group.info.email_aliases'),
+)
diff --git a/ietf/templates/base/menu.html b/ietf/templates/base/menu.html
index 0b2d465e5..12af408f9 100644
--- a/ietf/templates/base/menu.html
+++ b/ietf/templates/base/menu.html
@@ -1,5 +1,5 @@
 {# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
-{% load ietf_filters community_tags wg_menu streams_menu %}
+{% load ietf_filters community_tags wg_menu streams_menu active_groups_menu %}
 
 {% if flavor != "top" %}
   {% include "base/menu_user.html" %}
@@ -14,9 +14,9 @@
     <ul class="dropdown-menu" role="menu">
   {% endif %}
 
-<li><a href="{% url "ietf.group.info.active_groups" group_type="area" %}">Active areas</a></li>
 <li><a href="{% url "ietf.group.info.active_groups" group_type="wg" %}">Active WGs</a></li>
 <li><a href="{% url "ietf.group.info.active_groups" group_type="rg" %}">Active RGs</a></li>
+<li class="dropdown-submenu group-menu"><a href="{% url "ietf.group.info.active_groups" %}">Other</a>{% active_groups_menu %} </li>
 
   {% if flavor == "top" %}<li class="divider visible-lg-block"></li>{% endif %}
   <li {%if flavor == "top" %}class="dropdown-header visible-lg-block"{% else %}class="nav-header hidden-nojs"{% endif %}>By area/parent</li>
diff --git a/ietf/templates/base/menu_active_groups.html b/ietf/templates/base/menu_active_groups.html
new file mode 100644
index 000000000..17a8cd033
--- /dev/null
+++ b/ietf/templates/base/menu_active_groups.html
@@ -0,0 +1,8 @@
+{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
+<ul class="dropdown-menu" role="menu">
+{% for p in parents %}
+  <li>
+    <a href="{{ p.menu_url }}">Active {{ p.name }}s</a>
+  </li>
+{% endfor %}
+</ul>
diff --git a/ietf/templates/group/active_ags.html b/ietf/templates/group/active_ags.html
new file mode 100644
index 000000000..06ebc979c
--- /dev/null
+++ b/ietf/templates/group/active_ags.html
@@ -0,0 +1,45 @@
+{% extends "base.html" %}
+{# Copyright The IETF Trust 2015, All Rights Reserved #}
+{% load origin %}
+
+{% block title %}Active Area Groups{% endblock %}
+
+{% block content %}
+  {% origin %}
+  <h1>Active Area Groups</h1>
+  <table class="table table-condensed table-striped">
+    <thead>
+      <tr>
+        <th>Team</th>
+        <th>Name</th>
+        <th>AD</th>
+        <th>Secretaries</th>
+        <th>Chairs</th>
+      </tr>
+    </thead>
+    <tbody>
+    {% for group in groups %}
+        <tr>
+          <td><a href="{% url "ietf.group.info.group_home" acronym=group.acronym %}">{{ group.acronym }}</a></td>
+          <td>{{ group.name }}</td>
+          <td>
+            {% for ad in group.ads %}
+              <a href="mailto:{{ ad.email.address }}">{{ ad.person.plain_name }}</a>{% if not forloop.last %}, {% endif %}
+            {% endfor %}
+          </td>
+          <td>
+            {% for secretary in group.secretaries %}
+              <a href="mailto:{{ secretary.email.address }}">{{ secretary.person.plain_name }}</a>{% if not forloop.last %}, {% endif %}
+            {% endfor %}
+          </td>
+          <td>
+            {% for chair in group.chairs %}
+              <a href="mailto:{{ chair.email.address }}">{{ chair.person.plain_name }}</a>{% if not forloop.last %}, {% endif %}
+            {% endfor %}
+          </td>
+        </tr>
+    {% endfor %}
+    </tbody>
+  </table>
+{% endblock %}
+
diff --git a/ietf/templates/group/active_areas.html b/ietf/templates/group/active_areas.html
index ebfcf74f8..31d626136 100644
--- a/ietf/templates/group/active_areas.html
+++ b/ietf/templates/group/active_areas.html
@@ -12,11 +12,11 @@
 <p>When changing the area structure, the IESG can decide which members are responsible for new and changed areas, including making one sitting AD responsible for multiple areas, but the IESG can only add new members through the <a href="https://www.ietf.org/nomcom/index.html">nomcom process</a>.</p>
 <p>The primary task of area management is handled by one or two Area Directors per area. An AD may be advised by one or more directorates, which are created, selected, chaired and if necessary disbanded by the AD. Directorates may be specific to an area, specific to a technology, or chartered in some other fashion.</p>
 <p>The ADs for an area are jointly responsible for making sure the WGs in the area are well coordinated, that there is coverage for the technologies needed in the area, and that the challenges most important to the Internet in that area are indeed being worked on.</p>
-<ul><li>A full list of active working groups, sorted by area, may be found at <a href="https://datatracker.ietf.org/wg/">https://datatracker.ietf.org/wg/</a>.</li></ul>
+<ul><li>A full list of active working groups, sorted by area, may be found at <a href="{% url 'ietf.group.info.active_groups' group_type='wg'%}">{% url 'ietf.group.info.active_groups' group_type='wg' %}</a>.</li></ul>
 <p>The IESG decides which areas working groups belong to. The charter of each area is listed below.</p>
 
   {% for area in areas %}
-  <h2>{{area.name}} ({{area.acronym}})</h2>
+  <h2><a href="{%url 'ietf.group.info.active_groups' group_type='wg'%}#{{area.acronym}}">{{area.name}} ({{area.acronym}})</a></h2>
   <pre class="pasted">{{area.description}}</pre>
   {% endfor %}
 <p>For more information about the role of the IESG in areas and working groups, please see <a href="https://www.ietf.org/rfc/rfc3710.txt">RFC 3710 ("An IESG charter")</a>, section 6 and <a href="https://www.ietf.org/rfc/rfc2418.txt">RFC 2418 ("IETF Working Group Guidelines and Procedures")</a>.</p>
diff --git a/ietf/templates/group/active_dirs.html b/ietf/templates/group/active_dirs.html
new file mode 100644
index 000000000..08f1ed645
--- /dev/null
+++ b/ietf/templates/group/active_dirs.html
@@ -0,0 +1,46 @@
+{% extends "base.html" %}
+{# Copyright The IETF Trust 2015, All Rights Reserved #}
+{% load origin %}
+
+{% block title %}Active Directorates{% endblock %}
+
+
+{% block content %}
+  {% origin %}
+  <h1>Active Directorates</h1>
+  <table class="table table-condensed table-striped">
+    <thead>
+      <tr>
+        <th>Team</th>
+        <th>Name</th>
+        <th>AD</th>
+        <th>Secretaries</th>
+        <th>Chairs</th>
+      </tr>
+    </thead>
+    <tbody>
+    {% for group in dirs %}
+        <tr>
+          <td><a href="{% url "ietf.group.info.group_home" acronym=group.acronym %}">{{ group.acronym }}</a></td>
+          <td>{{ group.name }}</td>
+          <td>
+            {% for ad in group.ads %}
+              <a href="mailto:{{ ad.email.address }}">{{ ad.person.plain_name }}</a>{% if not forloop.last %}, {% endif %}
+            {% endfor %}
+          </td>
+          <td>
+            {% for secretary in group.secretaries %}
+              <a href="mailto:{{ secretary.email.address }}">{{ secretary.person.plain_name }}</a>{% if not forloop.last %}, {% endif %}
+            {% endfor %}
+          </td>
+          <td>
+            {% for chair in group.chairs %}
+              <a href="mailto:{{ chair.email.address }}">{{ chair.person.plain_name }}</a>{% if not forloop.last %}, {% endif %}
+            {% endfor %}
+          </td>
+        </tr>
+    {% endfor %}
+    </tbody>
+  </table>
+{% endblock %}
+
diff --git a/ietf/templates/group/active_groups.html b/ietf/templates/group/active_groups.html
new file mode 100644
index 000000000..b63731a61
--- /dev/null
+++ b/ietf/templates/group/active_groups.html
@@ -0,0 +1,27 @@
+{% extends "base.html" %}
+{# Copyright The IETF Trust 2015, All Rights Reserved #}
+{% load origin %}
+
+{% block title %}Active Groups{% endblock %}
+
+{% block content %}
+  {% origin %}
+  <h1>Active Groups</h1>
+  <table class="table table-condensed table-striped">
+    <thead>
+      <tr>
+        <th>Type</th>
+        <th>Description</th>
+      </tr>
+    </thead>
+    <tbody>
+    {% for typename in grouptypes %}
+        <tr>
+          <td><a href="{% url "ietf.group.info.active_groups" group_type=typename.slug%}">{{ typename.name }}</a></td>
+          <td>{{ typename.desc }}</td>
+        </tr>
+    {% endfor %}
+    </tbody>
+  </table>
+{% endblock %}
+
diff --git a/ietf/templates/group/active_teams.html b/ietf/templates/group/active_teams.html
new file mode 100644
index 000000000..3867a01b3
--- /dev/null
+++ b/ietf/templates/group/active_teams.html
@@ -0,0 +1,34 @@
+{% extends "base.html" %}
+{# Copyright The IETF Trust 2015, All Rights Reserved #}
+{% load origin %}
+
+{% block title %}Active Teams{% endblock %}
+
+
+{% block content %}
+  {% origin %}
+  <h1>Active Teams</h1>
+  <table class="table table-condensed table-striped">
+    <thead>
+      <tr>
+        <th>Team</th>
+        <th>Name</th>
+        <th>Chairs</th>
+      </tr>
+    </thead>
+    <tbody>
+    {% for group in teams %}
+        <tr>
+          <td><a href="{% url "ietf.group.info.group_home" acronym=group.acronym %}">{{ group.acronym }}</a></td>
+          <td>{{ group.name }}</td>
+          <td>
+            {% for chair in group.chairs %}
+              <a href="mailto:{{ chair.email.address }}">{{ chair.person.plain_name }}</a>{% if not forloop.last %}, {% endif %}
+            {% endfor %}
+          </td>
+        </tr>
+    {% endfor %}
+    </tbody>
+  </table>
+
+{% endblock %}
diff --git a/ietf/urls.py b/ietf/urls.py
index a243c6d2f..749cb8b05 100644
--- a/ietf/urls.py
+++ b/ietf/urls.py
@@ -54,7 +54,7 @@ urlpatterns = patterns('',
     (r'^sync/', include('ietf.sync.urls')),
     (r'^stream/', include('ietf.group.urls_stream')),
     (r'^templates/', include('ietf.dbtemplate.urls')),
-    (r'^(?P<group_type>(wg|rg|area))/', include('ietf.group.urls_info')),
+    (r'^(?P<group_type>(wg|rg|ag|team|dir|area))/', include('ietf.group.urls_info')),
 
     # Redirects
     (r'^(?P<path>public)/', include('ietf.redirects.urls')),

From cd5b497acb2def92a72584637063b4adda6ddc2d Mon Sep 17 00:00:00 2001
From: Robert Sparks <rjsparks@nostrum.com>
Date: Thu, 30 Jul 2015 22:13:59 +0000
Subject: [PATCH 10/16] Changed several email alias references from
 tools.ietf.org to ietf.org. Fixes #1759. Commit ready for merge.  -
 Legacy-Id: 9925

---
 ietf/doc/mails.py                      | 2 +-
 ietf/doc/utils.py                      | 2 +-
 ietf/doc/views_draft.py                | 2 +-
 ietf/secr/drafts/email.py              | 2 +-
 ietf/secr/utils/mail.py                | 2 +-
 ietf/templates/doc/document_draft.html | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/ietf/doc/mails.py b/ietf/doc/mails.py
index 88bc553c6..6184458d8 100644
--- a/ietf/doc/mails.py
+++ b/ietf/doc/mails.py
@@ -179,7 +179,7 @@ def generate_approval_mail_approved(request, doc):
         doc.group.name_with_wg = doc.group.name + " Working Group"
         if doc.group.list_email:
             cc.append("%s mailing list <%s>" % (doc.group.acronym, doc.group.list_email))
-        cc.append("%s chair <%s-chairs@tools.ietf.org>" % (doc.group.acronym, doc.group.acronym))
+        cc.append("%s chair <%s-chairs@ietf.org>" % (doc.group.acronym, doc.group.acronym))
     else:
         doc.group.name_with_wg = doc.group.name
 
diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py
index c3bf73fa3..bd0ef5c96 100644
--- a/ietf/doc/utils.py
+++ b/ietf/doc/utils.py
@@ -467,7 +467,7 @@ def collect_email_addresses(emails, doc):
             if role.email.address not in emails:
                 emails[role.email.address] = '"%s"' % (role.person.name)
         if doc.group.type.slug == 'wg':
-            address = '%s-ads@tools.ietf.org' % doc.group.acronym
+            address = '%s-ads@ietf.org' % doc.group.acronym
             if address not in emails:
                 emails[address] = '"%s-ads"' % (doc.group.acronym)
         elif doc.group.type.slug == 'rg':
diff --git a/ietf/doc/views_draft.py b/ietf/doc/views_draft.py
index 2e358d855..92357e255 100644
--- a/ietf/doc/views_draft.py
+++ b/ietf/doc/views_draft.py
@@ -582,7 +582,7 @@ def to_iesg(request,name):
             doc.save()
 
             extra = {}
-            extra['Cc'] = "%s-chairs@tools.ietf.org, iesg-secretary@ietf.org, %s" % (doc.group.acronym,doc.notify)
+            extra['Cc'] = "%s-chairs@ietf.org, iesg-secretary@ietf.org, %s" % (doc.group.acronym,doc.notify)
             send_mail(request=request,
                       to = doc.ad.email_address(),
                       frm = login.formatted_email(),
diff --git a/ietf/secr/drafts/email.py b/ietf/secr/drafts/email.py
index a06b3aa62..d3a506401 100644
--- a/ietf/secr/drafts/email.py
+++ b/ietf/secr/drafts/email.py
@@ -147,7 +147,7 @@ def get_fullcc_list(draft):
                 emails[role.email.address] = '"%s"' % (role.person.name)
         # add AD
         if draft.group.type.slug == 'wg':    
-            emails['%s-ads@tools.ietf.org' % draft.group.acronym] = '"%s-ads"' % (draft.group.acronym)
+            emails['%s-ads@ietf.org' % draft.group.acronym] = '"%s-ads"' % (draft.group.acronym)
         elif draft.group.type.slug == 'rg':
             email = draft.group.parent.role_set.filter(name='chair')[0].email
             emails[email.address] = '"%s"' % (email.person.name)
diff --git a/ietf/secr/utils/mail.py b/ietf/secr/utils/mail.py
index 01133dd27..386622ca6 100644
--- a/ietf/secr/utils/mail.py
+++ b/ietf/secr/utils/mail.py
@@ -6,7 +6,7 @@ def get_ad_email_list(group):
     '''
     emails = []
     if group.type.slug == 'wg':    
-        emails.append('%s-ads@tools.ietf.org' % group.acronym)
+        emails.append('%s-ads@ietf.org' % group.acronym)
     elif group.type.slug == 'rg' and group.parent:
         emails.append(group.parent.role_set.filter(name='chair')[0].email.address)
     return emails
diff --git a/ietf/templates/doc/document_draft.html b/ietf/templates/doc/document_draft.html
index 2b4301c35..badadff3d 100644
--- a/ietf/templates/doc/document_draft.html
+++ b/ietf/templates/doc/document_draft.html
@@ -413,7 +413,7 @@
   </table>
 
   <div class="buttonlist">
-    <a class="btn btn-default btn-xs" href="mailto:{{ doc.name }}@tools.ietf.org?subject=Mail%20regarding%20{{ doc.name }}"><span class="fa fa-envelope-o"></span> Email authors</a>
+    <a class="btn btn-default btn-xs" href="mailto:{{ doc.name }}@ietf.org?subject=Mail%20regarding%20{{ doc.name }}"><span class="fa fa-envelope-o"></span> Email authors</a>
     <a class="btn btn-default btn-xs" href="{% url "ipr_search" %}?submit=draft&amp;id={{ doc.name }}" rel="nofollow"><span class="fa fa-bolt"></span> IPR {% if doc.related_ipr %} <span class="badge">{{doc.related_ipr|length}}</span>{% endif %}</a>
     <a class="btn btn-default btn-xs" href="{% url "doc_references" doc.canonical_name %}" rel="nofollow"><span class="fa fa-long-arrow-left"></span> References</a>
     <a class="btn btn-default btn-xs" href="{% url "doc_referenced_by" doc.canonical_name %}" rel="nofollow"><span class="fa fa-long-arrow-right"></span> Referenced by</a>

From 6a3089807a9758fb98b71b70289f54275d5ea851 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Sat, 1 Aug 2015 10:24:55 +0000
Subject: [PATCH 11/16] Updated changelog information for v6.3.0.  - Legacy-Id:
 9932

---
 changelog | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/changelog b/changelog
index 511e27080..b84bcfff5 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,40 @@
+ietfdb (6.3.0) ietf; urgency=medium
+
+  **Active area, directorate, team, and area group pages**
+
+  This release provides new group overview pages for active areas, area
+  groups, teams, and directorates.  It also improves the error reporting when
+  drafts are submitted with invalid XML, providing line numbers and specifics
+  for the issues found.  Additionally, there are a few bug fixes.
+
+  * Merged in [9924] from rjsparks@nostrum.com:
+    Added views of active areas, area groups, teams, and directorates.  Added
+    navigation to those views to the base menus.  Unified the URL patterns
+    shared between group/urls and group/urls_info, exposing the same view at,
+    e.g., /group/stir and /wg/stir/.  Improved testing, primarily of
+    group/info.py 
+
+  * Merged in [9901] from rcross@amsl.com:
+    Fixed matching audio file names with rooms.   
+
+  * Provided a document's rfc number (if any) as part of the document fields 
+    exposed in the json api.
+
+  * Changed the code for meta-data extraction from xml files to not break 
+    if a sought-after element is missing.
+
+  * Updated the meta-data error message to say 'errors ... below' instead of
+    'errors ... above', to match the relative placement of text and error
+    indications.
+
+  * Improved the error reporting for invalid xml file submissions.
+
+  * Improved the handling of failed xml2rfc conversions when no txt document
+    is submitted.
+
+ -- Henrik Levkowetz <henrik@levkowetz.com>  01 Aug 2015 03:14:10 -0700
+
+
 ietfdb (6.2.0) ietf; urgency=medium
 
   **XML-Only Draft Submission**

From f48452853fc41c0be6ffe8ab0707f96e81b16a34 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Sat, 1 Aug 2015 12:47:03 +0000
Subject: [PATCH 12/16] Changed test-crawl to avoid unnecessary repetitions of
 the blacklisting message.  - Legacy-Id: 9933

---
 bin/test-crawl | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/bin/test-crawl b/bin/test-crawl
index a67eab477..83b03e24e 100755
--- a/bin/test-crawl
+++ b/bin/test-crawl
@@ -2,7 +2,6 @@
 
 import os, sys, re, datetime, argparse, traceback, tempfile, json, subprocess
 import html5lib
-import debug    # pyflakes:ignore
 import random
 
 # Set up import path to find our own Django
@@ -42,6 +41,9 @@ import django.test
 
 django.setup()
 
+# This needs to come after we set up sys path to include the local django
+import debug    # pyflakes:ignore
+
 # prevent memory from leaking when settings.DEBUG=True
 from django.db import connection
 class DontSaveQueries(object):
@@ -103,10 +105,6 @@ def extract_tastypie_urls(content):
 
 def check_html_valid(url, response, args):
     global parser, validated_urls, doc_types, warnings
-    # These URLs have known issues, skip them until those are fixed
-    if re.search('(/secr|admin/)|/doc/.*/edit/info/', url):
-        log("%s blacklisted; skipping HTML validation" % url)
-        return
     key = url
     if not args.validate_all:
         # derive a key for urls like this by replacing primary keys
@@ -123,6 +121,13 @@ def check_html_valid(url, response, args):
             key = re.sub("/%s-.*/"%slug, "/%s-nnnn/"%slug, key)
 
     if not key in validated_urls:
+
+        # These URLs have known issues, skip them until those are fixed
+        if re.search('(/secr|admin/)|/doc/.*/edit/info/', url):
+            log("%s blacklisted; skipping HTML validation" % url)
+            validated_urls[key] = True
+            return
+
         if hasattr(response, "content"):
             content = response.content
         else:

From 17956f589e775f762456ccc37dd8be248676ae87 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Sat, 1 Aug 2015 14:52:34 +0000
Subject: [PATCH 13/16] Code coverage data for release 6.3.0  - Legacy-Id: 9938

---
 release-coverage.json | 1369 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 1368 insertions(+), 1 deletion(-)

diff --git a/release-coverage.json b/release-coverage.json
index 5590fe551..bf2e05bd7 100644
--- a/release-coverage.json
+++ b/release-coverage.json
@@ -18578,5 +18578,1372 @@
       }
     }
   }, 
-  "version": "6.2.0"
+  "6.3.0": {
+    "code": {
+      "coverage": 0.6856150681312044, 
+      "covered": {
+        "ietf/__init__": 0.0, 
+        "ietf/api/__init__": 0.7012987012987013, 
+        "ietf/api/management/__init__": 1.0, 
+        "ietf/api/management/commands/__init__": 1.0, 
+        "ietf/api/management/commands/makeresources": 0.0, 
+        "ietf/community/__init__": 1.0, 
+        "ietf/community/constants": 1.0, 
+        "ietf/community/display": 0.6071428571428572, 
+        "ietf/community/forms": 0.4153846153846154, 
+        "ietf/community/management/__init__": 1.0, 
+        "ietf/community/management/commands/__init__": 1.0, 
+        "ietf/community/management/commands/update_community_lists": 0.0, 
+        "ietf/community/management/commands/update_doc_change_dates": 0.0, 
+        "ietf/community/models": 0.6031746031746031, 
+        "ietf/community/resources": 1.0, 
+        "ietf/community/rules": 0.554945054945055, 
+        "ietf/community/templatetags/__init__": 1.0, 
+        "ietf/community/templatetags/community_tags": 0.7666666666666667, 
+        "ietf/community/urls": 1.0, 
+        "ietf/community/views": 0.1957446808510638, 
+        "ietf/context_processors": 1.0, 
+        "ietf/cookies/__init__": 0.625, 
+        "ietf/cookies/urls": 1.0, 
+        "ietf/cookies/views": 0.975, 
+        "ietf/dbtemplate/__init__": 1.0, 
+        "ietf/dbtemplate/forms": 0.4782608695652174, 
+        "ietf/dbtemplate/models": 0.923076923076923, 
+        "ietf/dbtemplate/resources": 1.0, 
+        "ietf/dbtemplate/template": 0.7413793103448276, 
+        "ietf/dbtemplate/urls": 1.0, 
+        "ietf/dbtemplate/views": 0.27586206896551724, 
+        "ietf/doc/__init__": 1.0, 
+        "ietf/doc/expire": 0.9316239316239315, 
+        "ietf/doc/feeds": 0.9811320754716981, 
+        "ietf/doc/fields": 0.8939393939393939, 
+        "ietf/doc/forms": 0.9629629629629629, 
+        "ietf/doc/lastcall": 0.9166666666666667, 
+        "ietf/doc/mails": 0.9090909090909091, 
+        "ietf/doc/management/__init__": 1.0, 
+        "ietf/doc/management/commands/__init__": 1.0, 
+        "ietf/doc/management/commands/generate_draft_bibxml_files": 0.0, 
+        "ietf/doc/models": 0.8853383458646618, 
+        "ietf/doc/redirect_drafts_urls": 1.0, 
+        "ietf/doc/redirect_idtracker_urls": 1.0, 
+        "ietf/doc/resources": 1.0, 
+        "ietf/doc/templatetags/__init__": 1.0, 
+        "ietf/doc/templatetags/active_groups_menu": 1.0, 
+        "ietf/doc/templatetags/ballot_icon": 0.7719298245614036, 
+        "ietf/doc/templatetags/doc_states": 0.0, 
+        "ietf/doc/templatetags/ietf_filters": 0.7190332326283988, 
+        "ietf/doc/templatetags/mail_filters": 0.9375, 
+        "ietf/doc/templatetags/streams_menu": 0.38888888888888884, 
+        "ietf/doc/templatetags/wg_menu": 0.9411764705882354, 
+        "ietf/doc/urls": 1.0, 
+        "ietf/doc/urls_charter": 1.0, 
+        "ietf/doc/urls_conflict_review": 1.0, 
+        "ietf/doc/urls_material": 1.0, 
+        "ietf/doc/urls_status_change": 1.0, 
+        "ietf/doc/utils": 0.7848101265822786, 
+        "ietf/doc/utils_charter": 0.7906976744186046, 
+        "ietf/doc/views_ballot": 0.8897637795275591, 
+        "ietf/doc/views_charter": 0.8162839248434238, 
+        "ietf/doc/views_conflict_review": 0.9682539682539683, 
+        "ietf/doc/views_doc": 0.8393881453154876, 
+        "ietf/doc/views_draft": 0.843069873997709, 
+        "ietf/doc/views_help": 0.696969696969697, 
+        "ietf/doc/views_material": 0.9248826291079812, 
+        "ietf/doc/views_search": 0.7196969696969697, 
+        "ietf/doc/views_status_change": 0.9301745635910224, 
+        "ietf/feed_urls": 1.0, 
+        "ietf/group/__init__": 1.0, 
+        "ietf/group/ajax": 1.0, 
+        "ietf/group/colors": 1.0, 
+        "ietf/group/edit": 0.8856209150326798, 
+        "ietf/group/features": 1.0, 
+        "ietf/group/feeds": 0.9736842105263157, 
+        "ietf/group/info": 0.7, 
+        "ietf/group/mails": 0.944954128440367, 
+        "ietf/group/milestones": 0.8571428571428571, 
+        "ietf/group/models": 0.9367088607594937, 
+        "ietf/group/resources": 1.0, 
+        "ietf/group/urls": 1.0, 
+        "ietf/group/urls_info": 1.0, 
+        "ietf/group/urls_info_details": 1.0, 
+        "ietf/group/urls_stream": 1.0, 
+        "ietf/group/utils": 0.5975609756097561, 
+        "ietf/group/views_stream": 0.9795918367346939, 
+        "ietf/help/__init__": 1.0, 
+        "ietf/help/models": 1.0, 
+        "ietf/help/urls": 1.0, 
+        "ietf/help/views": 0.5666666666666667, 
+        "ietf/idindex/__init__": 1.0, 
+        "ietf/idindex/generate_all_id2_txt": 0.0, 
+        "ietf/idindex/generate_all_id_txt": 0.0, 
+        "ietf/idindex/generate_id_abstracts_txt": 0.0, 
+        "ietf/idindex/generate_id_index_txt": 0.0, 
+        "ietf/idindex/index": 0.930635838150289, 
+        "ietf/iesg/__init__": 0.625, 
+        "ietf/iesg/agenda": 0.9067796610169492, 
+        "ietf/iesg/feeds": 0.9655172413793103, 
+        "ietf/iesg/models": 0.8947368421052632, 
+        "ietf/iesg/resources": 1.0, 
+        "ietf/iesg/urls": 1.0, 
+        "ietf/iesg/views": 0.926829268292683, 
+        "ietf/ietfauth/__init__": 1.0, 
+        "ietf/ietfauth/forms": 0.2621951219512195, 
+        "ietf/ietfauth/urls": 1.0, 
+        "ietf/ietfauth/utils": 0.9076923076923077, 
+        "ietf/ietfauth/views": 0.25, 
+        "ietf/ipr/__init__": 1.0, 
+        "ietf/ipr/feeds": 0.9285714285714286, 
+        "ietf/ipr/fields": 0.9024390243902439, 
+        "ietf/ipr/forms": 0.8654708520179372, 
+        "ietf/ipr/mail": 0.8739495798319328, 
+        "ietf/ipr/management/__init__": 1.0, 
+        "ietf/ipr/management/commands/__init__": 1.0, 
+        "ietf/ipr/management/commands/process_email": 0.0, 
+        "ietf/ipr/models": 0.9037037037037037, 
+        "ietf/ipr/resources": 1.0, 
+        "ietf/ipr/sitemaps": 1.0, 
+        "ietf/ipr/templatetags/__init__": 1.0, 
+        "ietf/ipr/templatetags/ipr_filters": 0.6, 
+        "ietf/ipr/urls": 1.0, 
+        "ietf/ipr/utils": 0.75, 
+        "ietf/ipr/views": 0.7428571428571429, 
+        "ietf/legacy_router": 0.0, 
+        "ietf/liaisons/__init__": 0.625, 
+        "ietf/liaisons/accounts": 0.6483516483516483, 
+        "ietf/liaisons/feeds": 0.8840579710144928, 
+        "ietf/liaisons/fields": 0.8666666666666667, 
+        "ietf/liaisons/forms": 0.8412256267409471, 
+        "ietf/liaisons/mails": 0.912280701754386, 
+        "ietf/liaisons/management/__init__": 1.0, 
+        "ietf/liaisons/management/commands/__init__": 1.0, 
+        "ietf/liaisons/management/commands/check_liaison_deadlines": 0.0, 
+        "ietf/liaisons/management/commands/remind_update_sdo_list": 0.0, 
+        "ietf/liaisons/models": 0.9459459459459459, 
+        "ietf/liaisons/resources": 1.0, 
+        "ietf/liaisons/sitemaps": 1.0, 
+        "ietf/liaisons/urls": 1.0, 
+        "ietf/liaisons/utils": 0.643979057591623, 
+        "ietf/liaisons/views": 0.5859375, 
+        "ietf/liaisons/widgets": 0.8524590163934427, 
+        "ietf/mailinglists/__init__": 1.0, 
+        "ietf/mailinglists/urls": 1.0, 
+        "ietf/mailinglists/views": 1.0, 
+        "ietf/manage": 0.0, 
+        "ietf/meeting/__init__": 1.0, 
+        "ietf/meeting/ajax": 0.7365269461077844, 
+        "ietf/meeting/feeds": 1.0, 
+        "ietf/meeting/helpers": 0.8245614035087719, 
+        "ietf/meeting/management/__init__": 1.0, 
+        "ietf/meeting/management/commands/__init__": 1.0, 
+        "ietf/meeting/management/commands/autoplace": 0.0, 
+        "ietf/meeting/management/commands/schedwrite": 0.0, 
+        "ietf/meeting/models": 0.6406649616368287, 
+        "ietf/meeting/placement": 0.0, 
+        "ietf/meeting/resources": 1.0, 
+        "ietf/meeting/templatetags/__init__": 1.0, 
+        "ietf/meeting/templatetags/agenda_custom_tags": 0.5666666666666667, 
+        "ietf/meeting/test_data": 1.0, 
+        "ietf/meeting/timedeltafield": 0.5923076923076923, 
+        "ietf/meeting/urls": 1.0, 
+        "ietf/meeting/views": 0.541501976284585, 
+        "ietf/message/__init__": 1.0, 
+        "ietf/message/models": 0.9393939393939393, 
+        "ietf/message/resources": 1.0, 
+        "ietf/message/utils": 0.9666666666666667, 
+        "ietf/message/views": 1.0, 
+        "ietf/middleware": 0.8709677419354839, 
+        "ietf/name/__init__": 1.0, 
+        "ietf/name/generate_fixtures": 0.0, 
+        "ietf/name/models": 1.0, 
+        "ietf/name/resources": 1.0, 
+        "ietf/name/utils": 0.0, 
+        "ietf/nomcom/__init__": 1.0, 
+        "ietf/nomcom/decorators": 0.5, 
+        "ietf/nomcom/fields": 0.84, 
+        "ietf/nomcom/forms": 0.7229601518026566, 
+        "ietf/nomcom/management/__init__": 1.0, 
+        "ietf/nomcom/management/commands/__init__": 1.0, 
+        "ietf/nomcom/management/commands/feedback_email": 0.0, 
+        "ietf/nomcom/management/commands/send_reminders": 1.0, 
+        "ietf/nomcom/managers": 0.9508196721311475, 
+        "ietf/nomcom/models": 0.8978102189781022, 
+        "ietf/nomcom/redirect_ann_urls": 1.0, 
+        "ietf/nomcom/resources": 1.0, 
+        "ietf/nomcom/templatetags/__init__": 1.0, 
+        "ietf/nomcom/templatetags/nomcom_tags": 0.5192307692307692, 
+        "ietf/nomcom/test_data": 1.0, 
+        "ietf/nomcom/urls": 1.0, 
+        "ietf/nomcom/utils": 0.7165354330708661, 
+        "ietf/nomcom/views": 0.5072463768115942, 
+        "ietf/person/__init__": 1.0, 
+        "ietf/person/ajax": 1.0, 
+        "ietf/person/fields": 0.9295774647887324, 
+        "ietf/person/models": 0.8515625, 
+        "ietf/person/name": 0.5777777777777778, 
+        "ietf/person/resources": 1.0, 
+        "ietf/person/urls": 1.0, 
+        "ietf/person/views": 0.6285714285714286, 
+        "ietf/redirects/__init__": 1.0, 
+        "ietf/redirects/models": 0.7777777777777777, 
+        "ietf/redirects/resources": 1.0, 
+        "ietf/redirects/urls": 1.0, 
+        "ietf/redirects/views": 0.903225806451613, 
+        "ietf/release/__init__": 1.0, 
+        "ietf/release/urls": 1.0, 
+        "ietf/release/views": 0.8863636363636364, 
+        "ietf/secr/__init__": 1.0, 
+        "ietf/secr/announcement/__init__": 1.0, 
+        "ietf/secr/announcement/forms": 0.5681818181818182, 
+        "ietf/secr/announcement/urls": 1.0, 
+        "ietf/secr/announcement/views": 0.7307692307692308, 
+        "ietf/secr/areas/__init__": 1.0, 
+        "ietf/secr/areas/forms": 0.4181818181818182, 
+        "ietf/secr/areas/templatetags/__init__": 1.0, 
+        "ietf/secr/areas/templatetags/custom_tags": 0.0, 
+        "ietf/secr/areas/urls": 1.0, 
+        "ietf/secr/areas/views": 0.2605042016806723, 
+        "ietf/secr/console/__init__": 1.0, 
+        "ietf/secr/console/urls": 1.0, 
+        "ietf/secr/console/views": 0.7142857142857143, 
+        "ietf/secr/context_processors": 0.875, 
+        "ietf/secr/drafts/__init__": 1.0, 
+        "ietf/secr/drafts/email": 0.5401459854014599, 
+        "ietf/secr/drafts/forms": 0.6583333333333333, 
+        "ietf/secr/drafts/notifications": 1.0, 
+        "ietf/secr/drafts/report_id_activity": 0.0, 
+        "ietf/secr/drafts/report_progress_report": 0.0, 
+        "ietf/secr/drafts/urls": 1.0, 
+        "ietf/secr/drafts/views": 0.36329588014981273, 
+        "ietf/secr/groups/__init__": 1.0, 
+        "ietf/secr/groups/forms": 0.8053097345132744, 
+        "ietf/secr/groups/urls": 1.0, 
+        "ietf/secr/groups/views": 0.625, 
+        "ietf/secr/lib/__init__": 1.0, 
+        "ietf/secr/lib/template": 0.45, 
+        "ietf/secr/meetings/__init__": 1.0, 
+        "ietf/secr/meetings/blue_sheets": 1.0, 
+        "ietf/secr/meetings/forms": 0.5267175572519084, 
+        "ietf/secr/meetings/models": 1.0, 
+        "ietf/secr/meetings/urls": 1.0, 
+        "ietf/secr/meetings/views": 0.4705882352941177, 
+        "ietf/secr/middleware/__init__": 1.0, 
+        "ietf/secr/middleware/dbquery": 0.0, 
+        "ietf/secr/middleware/secauth": 0.0, 
+        "ietf/secr/proceedings/__init__": 1.0, 
+        "ietf/secr/proceedings/forms": 0.7346938775510204, 
+        "ietf/secr/proceedings/models": 0.9090909090909091, 
+        "ietf/secr/proceedings/proc_utils": 0.3260188087774295, 
+        "ietf/secr/proceedings/report_progress_report": 0.0, 
+        "ietf/secr/proceedings/templatetags/__init__": 1.0, 
+        "ietf/secr/proceedings/templatetags/ams_filters": 0.5, 
+        "ietf/secr/proceedings/urls": 1.0, 
+        "ietf/secr/proceedings/views": 0.3262135922330097, 
+        "ietf/secr/roles/__init__": 1.0, 
+        "ietf/secr/roles/forms": 0.0, 
+        "ietf/secr/roles/urls": 1.0, 
+        "ietf/secr/roles/views": 0.9574468085106383, 
+        "ietf/secr/rolodex/__init__": 1.0, 
+        "ietf/secr/rolodex/forms": 0.452054794520548, 
+        "ietf/secr/rolodex/urls": 1.0, 
+        "ietf/secr/rolodex/views": 0.22641509433962262, 
+        "ietf/secr/sreq/__init__": 1.0, 
+        "ietf/secr/sreq/forms": 0.7555555555555555, 
+        "ietf/secr/sreq/templatetags/__init__": 1.0, 
+        "ietf/secr/sreq/templatetags/ams_filters": 0.0, 
+        "ietf/secr/sreq/urls": 1.0, 
+        "ietf/secr/sreq/views": 0.3963254593175853, 
+        "ietf/secr/telechat/__init__": 1.0, 
+        "ietf/secr/telechat/forms": 0.8846153846153847, 
+        "ietf/secr/telechat/urls": 1.0, 
+        "ietf/secr/telechat/views": 0.2227979274611399, 
+        "ietf/secr/urls": 1.0, 
+        "ietf/secr/utils/__init__": 1.0, 
+        "ietf/secr/utils/ams_utils": 0.32432432432432434, 
+        "ietf/secr/utils/decorators": 0.6825396825396826, 
+        "ietf/secr/utils/document": 0.6666666666666667, 
+        "ietf/secr/utils/group": 0.5882352941176471, 
+        "ietf/secr/utils/mail": 0.875, 
+        "ietf/secr/utils/meeting": 0.7551020408163265, 
+        "ietf/secr/utils/test": 0.3076923076923077, 
+        "ietf/submit/__init__": 1.0, 
+        "ietf/submit/forms": 0.8415492957746479, 
+        "ietf/submit/mail": 0.9223300970873787, 
+        "ietf/submit/models": 0.9508196721311475, 
+        "ietf/submit/parsers/__init__": 1.0, 
+        "ietf/submit/parsers/base": 0.8793103448275862, 
+        "ietf/submit/parsers/pdf_parser": 1.0, 
+        "ietf/submit/parsers/plain_parser": 0.8333333333333333, 
+        "ietf/submit/parsers/ps_parser": 1.0, 
+        "ietf/submit/parsers/xml_parser": 1.0, 
+        "ietf/submit/resources": 1.0, 
+        "ietf/submit/templatetags/__init__": 1.0, 
+        "ietf/submit/templatetags/submit_tags": 0.6923076923076923, 
+        "ietf/submit/urls": 1.0, 
+        "ietf/submit/utils": 0.834983498349835, 
+        "ietf/submit/views": 0.8786764705882354, 
+        "ietf/sync/__init__": 1.0, 
+        "ietf/sync/discrepancies": 1.0, 
+        "ietf/sync/iana": 0.8636363636363636, 
+        "ietf/sync/mails": 0.0, 
+        "ietf/sync/rfceditor": 0.8058823529411765, 
+        "ietf/sync/urls": 1.0, 
+        "ietf/sync/views": 0.6235294117647059, 
+        "ietf/urls": 0.9, 
+        "ietf/utils/__init__": 1.0, 
+        "ietf/utils/accesstoken": 1.0, 
+        "ietf/utils/aliases": 0.0, 
+        "ietf/utils/draft": 0.5908596300326442, 
+        "ietf/utils/draft_search": 1.0, 
+        "ietf/utils/fields": 0.9743589743589743, 
+        "ietf/utils/history": 0.782608695652174, 
+        "ietf/utils/html": 1.0, 
+        "ietf/utils/log": 0.8205128205128206, 
+        "ietf/utils/mail": 0.7589928057553956, 
+        "ietf/utils/management/__init__": 1.0, 
+        "ietf/utils/management/commands/__init__": 1.0, 
+        "ietf/utils/management/commands/coverage_changes": 0.7671232876712328, 
+        "ietf/utils/management/commands/import_htpasswd": 0.0, 
+        "ietf/utils/management/commands/makefixture": 0.0, 
+        "ietf/utils/management/commands/pyflakes": 0.6027397260273972, 
+        "ietf/utils/markup_txt": 1.0, 
+        "ietf/utils/ordereddict": 1.0, 
+        "ietf/utils/pipe": 0.875, 
+        "ietf/utils/resources": 1.0, 
+        "ietf/utils/serialize": 0.875, 
+        "ietf/utils/templatetags/__init__": 1.0, 
+        "ietf/utils/templatetags/origin": 0.8666666666666667, 
+        "ietf/utils/test_data": 1.0, 
+        "ietf/utils/test_smtpserver": 0.8305084745762712, 
+        "ietf/utils/test_utils": 0.3027522935779816, 
+        "ietf/utils/textupload": 0.7666666666666667, 
+        "ietf/utils/timezone": 0.8333333333333333, 
+        "ietf/utils/unaccent": 0.34285714285714286, 
+        "ietf/wsgi": 0.0
+      }
+    }, 
+    "template": {
+      "coverage": 0.6848030018761726, 
+      "covered": {
+        "401.html": false, 
+        "404.html": true, 
+        "500.html": true, 
+        "admin/group/group/change_form.html": false, 
+        "admin/group/group/change_list.html": false, 
+        "admin/group/group/send_sdo_reminder.html": false, 
+        "announcement/confirm.html": true, 
+        "announcement/main.html": true, 
+        "areas/add.html": false, 
+        "areas/edit.html": false, 
+        "areas/list.html": true, 
+        "areas/people.html": false, 
+        "areas/view.html": true, 
+        "base.html": true, 
+        "base/menu.html": true, 
+        "base/menu_active_groups.html": true, 
+        "base/menu_user.html": true, 
+        "base/menu_wg.html": true, 
+        "base/menu_wg_modal.html": false, 
+        "base/streams_menu.html": false, 
+        "base_secr.html": true, 
+        "base_site.html": true, 
+        "bootstrap3/field_help_text_and_errors.html": true, 
+        "community/customize_display.html": false, 
+        "community/display_field.html": false, 
+        "community/manage_clist.html": false, 
+        "community/public/atom.xml": false, 
+        "community/public/notification_email.txt": false, 
+        "community/public/subscribe.html": false, 
+        "community/public/subscribe_email.txt": false, 
+        "community/public/subscription_confirm.html": false, 
+        "community/public/unsubscribe.html": false, 
+        "community/public/unsubscribe_email.txt": false, 
+        "community/public/unsubscription_confirm.html": false, 
+        "community/public/view_list.html": false, 
+        "community/raw_view.html": false, 
+        "community/view_list.html": false, 
+        "console/main.html": false, 
+        "cookies/settings.html": true, 
+        "debug.html": true, 
+        "doc/add_comment.html": true, 
+        "doc/ballot/approvaltext.html": true, 
+        "doc/ballot/approve_ballot.html": true, 
+        "doc/ballot/ballot_comment_mail.txt": true, 
+        "doc/ballot/ballot_issued.html": true, 
+        "doc/ballot/clear_ballot.html": false, 
+        "doc/ballot/defer_ballot.html": true, 
+        "doc/ballot/edit_position.html": true, 
+        "doc/ballot/lastcalltext.html": true, 
+        "doc/ballot/send_ballot_comment.html": true, 
+        "doc/ballot/undefer_ballot.html": true, 
+        "doc/ballot/writeupnotes.html": true, 
+        "doc/ballot_popup.html": true, 
+        "doc/bibxml.xml": false, 
+        "doc/change_ad.html": true, 
+        "doc/change_shepherd.html": true, 
+        "doc/change_shepherd_email.html": true, 
+        "doc/change_state.html": true, 
+        "doc/change_title.html": true, 
+        "doc/charter/action_text.txt": true, 
+        "doc/charter/announcement_text.html": true, 
+        "doc/charter/approve.html": true, 
+        "doc/charter/ballot_issued.html": true, 
+        "doc/charter/ballot_writeup.txt": true, 
+        "doc/charter/ballot_writeupnotes.html": true, 
+        "doc/charter/change_ad.html": true, 
+        "doc/charter/change_state.html": true, 
+        "doc/charter/change_title.html": false, 
+        "doc/charter/charter_with_milestones.txt": true, 
+        "doc/charter/group_info.txt": true, 
+        "doc/charter/issue_ballot_mail.txt": true, 
+        "doc/charter/review_text.txt": true, 
+        "doc/charter/submit.html": true, 
+        "doc/conflict_review/approval_text.txt": true, 
+        "doc/conflict_review/approve.html": true, 
+        "doc/conflict_review/review_choices.txt": true, 
+        "doc/conflict_review/review_started.txt": true, 
+        "doc/conflict_review/start.html": true, 
+        "doc/conflict_review/submit.html": true, 
+        "doc/document_ballot.html": true, 
+        "doc/document_ballot_content.html": true, 
+        "doc/document_charter.html": true, 
+        "doc/document_conflict_review.html": true, 
+        "doc/document_draft.html": true, 
+        "doc/document_history.html": true, 
+        "doc/document_material.html": true, 
+        "doc/document_referenced_by.html": true, 
+        "doc/document_references.html": true, 
+        "doc/document_status_change.html": true, 
+        "doc/document_top.html": true, 
+        "doc/document_writeup.html": true, 
+        "doc/draft/adopt_draft.html": true, 
+        "doc/draft/change_ad.html": true, 
+        "doc/draft/change_consensus.html": true, 
+        "doc/draft/change_iana_state.html": true, 
+        "doc/draft/change_intended_status.html": true, 
+        "doc/draft/change_replaces.html": true, 
+        "doc/draft/change_shepherd_writeup.html": true, 
+        "doc/draft/change_state.html": true, 
+        "doc/draft/change_stream.html": true, 
+        "doc/draft/change_stream_state.html": true, 
+        "doc/draft/edit_iesg_note.html": true, 
+        "doc/draft/edit_info.html": true, 
+        "doc/draft/expire_warning_email.txt": true, 
+        "doc/draft/id_expired_email.txt": true, 
+        "doc/draft/last_call_requested.html": true, 
+        "doc/draft/make_last_call.html": true, 
+        "doc/draft/request_publication.html": true, 
+        "doc/draft/request_resurrect.html": true, 
+        "doc/draft/resurrect.html": true, 
+        "doc/draft/review_possibly_replaces.html": true, 
+        "doc/draft/rfceditor_post_approved_draft_failed.html": false, 
+        "doc/drafts_for_ad.html": true, 
+        "doc/drafts_in_iesg_process.html": false, 
+        "doc/drafts_in_last_call.html": true, 
+        "doc/edit_notify.html": true, 
+        "doc/edit_telechat_date.html": true, 
+        "doc/email_aliases.html": true, 
+        "doc/eval_email.txt": true, 
+        "doc/frontpage.html": true, 
+        "doc/index_active_drafts.html": true, 
+        "doc/index_all_drafts.html": true, 
+        "doc/mail/approval_mail.txt": true, 
+        "doc/mail/approval_mail_rfc_editor.txt": true, 
+        "doc/mail/ballot_deferred_email.txt": true, 
+        "doc/mail/ballot_writeup.txt": true, 
+        "doc/mail/change_notice.txt": true, 
+        "doc/mail/issue_ballot_mail.txt": true, 
+        "doc/mail/last_call_announcement.txt": true, 
+        "doc/mail/last_call_request.txt": true, 
+        "doc/mail/publication_request.txt": true, 
+        "doc/mail/pulled_from_rfc_queue_email.txt": true, 
+        "doc/mail/resurrect_completed_email.txt": true, 
+        "doc/mail/resurrect_request_email.txt": true, 
+        "doc/mail/review_possibly_replaces_request.txt": true, 
+        "doc/mail/state_changed_email.txt": true, 
+        "doc/mail/stream_changed_email.txt": true, 
+        "doc/mail/stream_state_changed_email.txt": true, 
+        "doc/mail/stream_tags_changed_email.txt": true, 
+        "doc/mail/update_telechat.txt": true, 
+        "doc/material/choose_material_type.html": true, 
+        "doc/material/edit_material.html": true, 
+        "doc/material/edit_material_presentations.html": true, 
+        "doc/material/material_presentations.html": true, 
+        "doc/relationship_help.html": false, 
+        "doc/revisions_list.html": true, 
+        "doc/search/search.html": true, 
+        "doc/search/search_form.html": true, 
+        "doc/search/search_result_row.html": true, 
+        "doc/search/search_results.html": true, 
+        "doc/search/status_columns.html": true, 
+        "doc/shepherd_writeup.html": true, 
+        "doc/shepherd_writeup.txt": true, 
+        "doc/state_help.html": true, 
+        "doc/status_change/approval_text.txt": true, 
+        "doc/status_change/approve.html": true, 
+        "doc/status_change/edit_related_rows.html": true, 
+        "doc/status_change/edit_relations.html": true, 
+        "doc/status_change/initial_template.txt": true, 
+        "doc/status_change/last_call.html": true, 
+        "doc/status_change/last_call_announcement.txt": true, 
+        "doc/status_change/make_last_call.html": false, 
+        "doc/status_change/start.html": true, 
+        "doc/status_change/status_changes.html": false, 
+        "doc/status_change/submit.html": true, 
+        "doc/submit_to_iesg.html": false, 
+        "doc/submit_to_iesg_email.txt": false, 
+        "drafts/abstract.html": true, 
+        "drafts/add.html": true, 
+        "drafts/approvals.html": true, 
+        "drafts/authors.html": false, 
+        "drafts/confirm.html": false, 
+        "drafts/dates.html": false, 
+        "drafts/edit.html": true, 
+        "drafts/email.html": false, 
+        "drafts/error.html": false, 
+        "drafts/extend.html": false, 
+        "drafts/makerfc.html": false, 
+        "drafts/message_extend.txt": false, 
+        "drafts/message_new.txt": true, 
+        "drafts/message_replace.txt": false, 
+        "drafts/message_resurrect.txt": false, 
+        "drafts/message_revision.txt": false, 
+        "drafts/message_update.txt": false, 
+        "drafts/message_withdraw.txt": false, 
+        "drafts/replace.html": false, 
+        "drafts/report_id_activity.txt": false, 
+        "drafts/report_nudge.html": false, 
+        "drafts/report_progress_report.txt": false, 
+        "drafts/revision.html": true, 
+        "drafts/search.html": true, 
+        "drafts/view.html": true, 
+        "drafts/withdraw.html": false, 
+        "email_failed.html": false, 
+        "googlea30ad1dacffb5e5b.html": true, 
+        "group/1wg-charters-by-acronym.txt": true, 
+        "group/1wg-charters.txt": true, 
+        "group/1wg-summary-by-acronym.txt": true, 
+        "group/1wg-summary.txt": true, 
+        "group/active_ags.html": true, 
+        "group/active_areas.html": true, 
+        "group/active_dirs.html": true, 
+        "group/active_groups.html": true, 
+        "group/active_rgs.html": true, 
+        "group/active_teams.html": true, 
+        "group/active_wgs.html": true, 
+        "group/bofs.html": true, 
+        "group/chartering_groups.html": true, 
+        "group/conclude.html": true, 
+        "group/concluded_groups.html": true, 
+        "group/customize_workflow.html": true, 
+        "group/dot.txt": false, 
+        "group/edit.html": true, 
+        "group/edit_milestones.html": true, 
+        "group/email_aliases.html": true, 
+        "group/email_iesg_secretary_re_charter.txt": true, 
+        "group/feed_item_description.html": true, 
+        "group/group_about.html": true, 
+        "group/group_base.html": true, 
+        "group/group_documents.html": true, 
+        "group/group_entry.txt": true, 
+        "group/group_entry_with_charter.txt": true, 
+        "group/history.html": true, 
+        "group/index.html": true, 
+        "group/materials.html": true, 
+        "group/milestone_form.html": true, 
+        "group/milestones.html": true, 
+        "group/reminder_milestones_due.txt": true, 
+        "group/reminder_milestones_need_review.txt": true, 
+        "group/reminder_milestones_overdue.txt": true, 
+        "group/reset_charter_milestones.html": true, 
+        "group/stream_documents.html": true, 
+        "group/stream_edit.html": true, 
+        "groups/add.html": true, 
+        "groups/blue_dot_report.txt": false, 
+        "groups/charter.html": false, 
+        "groups/edit.html": false, 
+        "groups/edit_gm.html": false, 
+        "groups/people.html": true, 
+        "groups/search.html": false, 
+        "groups/view.html": true, 
+        "groups/view_gm.html": false, 
+        "help/state_index.html": true, 
+        "help/states.html": false, 
+        "idindex/all_id2.txt": true, 
+        "idindex/id_index.txt": true, 
+        "iesg/agenda.html": true, 
+        "iesg/agenda.txt": true, 
+        "iesg/agenda_charter.html": true, 
+        "iesg/agenda_charter.txt": true, 
+        "iesg/agenda_conflict_doc.html": true, 
+        "iesg/agenda_conflict_doc.txt": true, 
+        "iesg/agenda_doc.html": true, 
+        "iesg/agenda_doc.txt": true, 
+        "iesg/agenda_documents.html": true, 
+        "iesg/agenda_package.txt": true, 
+        "iesg/discusses.html": true, 
+        "iesg/feed_item_description.html": true, 
+        "iesg/milestones_needing_review.html": true, 
+        "iesg/moderator_charter.html": true, 
+        "iesg/moderator_conflict_doc.html": true, 
+        "iesg/moderator_doc.html": true, 
+        "iesg/moderator_package.html": true, 
+        "iesg/review_decisions.html": true, 
+        "iesg/scribe_conflict_doc.html": true, 
+        "iesg/scribe_doc.html": true, 
+        "iesg/scribe_doc_ballot.html": true, 
+        "iesg/scribe_template.html": true, 
+        "ietfauth/testemail.html": false, 
+        "includes/activities.html": true, 
+        "includes/awp_add_form.html": true, 
+        "includes/awp_edit_form.html": false, 
+        "includes/awp_view.html": true, 
+        "includes/buttons_back.html": true, 
+        "includes/buttons_next_cancel.html": false, 
+        "includes/buttons_proceed.html": false, 
+        "includes/buttons_save.html": true, 
+        "includes/buttons_save_cancel.html": true, 
+        "includes/buttons_search.html": true, 
+        "includes/buttons_submit.html": false, 
+        "includes/buttons_submit_back.html": true, 
+        "includes/buttons_submit_cancel.html": false, 
+        "includes/docevents.html": true, 
+        "includes/draft_search_results.html": true, 
+        "includes/draft_upload_form.html": true, 
+        "includes/group_search_results.html": false, 
+        "includes/meetings_footer.html": true, 
+        "includes/proceeding_area.html": false, 
+        "includes/proceeding_footer.html": true, 
+        "includes/proceeding_header.html": true, 
+        "includes/proceeding_title.html": false, 
+        "includes/proceedings_functions.html": false, 
+        "includes/search_results_table.html": true, 
+        "includes/session_info.txt": true, 
+        "includes/sessions_footer.html": true, 
+        "includes/sessions_request_form.1_2": false, 
+        "includes/sessions_request_form.html": true, 
+        "includes/sessions_request_view.html": true, 
+        "includes/slides.html": true, 
+        "includes/upload_footer.html": true, 
+        "ipr/add_comment.html": true, 
+        "ipr/add_email.html": true, 
+        "ipr/admin_list.html": true, 
+        "ipr/details.txt": true, 
+        "ipr/details_edit.html": true, 
+        "ipr/details_history.html": true, 
+        "ipr/details_tabs.html": true, 
+        "ipr/details_view.html": true, 
+        "ipr/disclosure.html": true, 
+        "ipr/email.html": false, 
+        "ipr/ipr_table.html": true, 
+        "ipr/list.html": true, 
+        "ipr/migration_licensing.txt": false, 
+        "ipr/new_update_email.txt": true, 
+        "ipr/notify.html": true, 
+        "ipr/posted_document_email.txt": true, 
+        "ipr/posted_generic_email.txt": false, 
+        "ipr/posted_submitter_email.txt": true, 
+        "ipr/removed.html": true, 
+        "ipr/search.html": true, 
+        "ipr/search_doc_list.html": true, 
+        "ipr/search_doc_result.html": true, 
+        "ipr/search_doctitle_result.html": true, 
+        "ipr/search_error.html": false, 
+        "ipr/search_form.html": true, 
+        "ipr/search_holder_result.html": true, 
+        "ipr/search_iprtitle_result.html": true, 
+        "ipr/search_patent_result.html": true, 
+        "ipr/search_result.html": true, 
+        "ipr/search_wg_result.html": true, 
+        "ipr/state.html": false, 
+        "ipr/submitted.html": true, 
+        "ipr/update_submitter_email.txt": true, 
+        "liaisons/approval_detail.html": true, 
+        "liaisons/approval_list.html": true, 
+        "liaisons/detail.html": true, 
+        "liaisons/edit.html": true, 
+        "liaisons/feed_item_description.html": true, 
+        "liaisons/field_help.html": true, 
+        "liaisons/guide_from_ietf.html": true, 
+        "liaisons/guide_to_ietf.html": true, 
+        "liaisons/help.html": true, 
+        "liaisons/liaison_deadline_mail.txt": true, 
+        "liaisons/liaison_mail.txt": true, 
+        "liaisons/liaison_title.html": true, 
+        "liaisons/overview.html": true, 
+        "liaisons/pending_liaison_mail.txt": true, 
+        "liaisons/sdo_reminder.txt": true, 
+        "mailinglists/group_archives.html": true, 
+        "main.html": true, 
+        "meeting/agenda.csv": true, 
+        "meeting/agenda.html": true, 
+        "meeting/agenda.ics": true, 
+        "meeting/agenda.txt": true, 
+        "meeting/agenda_by_room.html": true, 
+        "meeting/agenda_by_type.html": true, 
+        "meeting/agenda_list.html": false, 
+        "meeting/group_materials.html": true, 
+        "meeting/landscape_edit.html": true, 
+        "meeting/materials.html": true, 
+        "meeting/materials_upload_closed.html": false, 
+        "meeting/meeting_heading.html": true, 
+        "meeting/no-agenda.csv": false, 
+        "meeting/no-agenda.html": false, 
+        "meeting/no-agenda.txt": false, 
+        "meeting/private_agenda.html": true, 
+        "meeting/properties_edit.html": false, 
+        "meeting/requests.html": false, 
+        "meeting/room-view.html": true, 
+        "meeting/room_edit.html": false, 
+        "meeting/session_details.html": true, 
+        "meeting/session_list.html": false, 
+        "meeting/timeslot_edit.html": true, 
+        "meeting/week-view.html": true, 
+        "meetings/add.html": false, 
+        "meetings/base_rooms_times.html": true, 
+        "meetings/blue_sheet.html": true, 
+        "meetings/edit_meeting.html": false, 
+        "meetings/main.html": true, 
+        "meetings/non_session.html": true, 
+        "meetings/non_session_edit.html": false, 
+        "meetings/notifications.html": true, 
+        "meetings/rooms.html": true, 
+        "meetings/schedule.html": false, 
+        "meetings/select.html": true, 
+        "meetings/select_group.html": true, 
+        "meetings/session_schedule_notification.txt": true, 
+        "meetings/times.html": true, 
+        "meetings/times_edit.html": false, 
+        "meetings/view.html": true, 
+        "message/message.html": true, 
+        "nomcom/announcements.html": true, 
+        "nomcom/delete_nomcom.html": false, 
+        "nomcom/deleted.html": false, 
+        "nomcom/edit_members.html": true, 
+        "nomcom/edit_members_preview.html": true, 
+        "nomcom/edit_nomcom.html": true, 
+        "nomcom/edit_nominee.html": false, 
+        "nomcom/edit_position.html": false, 
+        "nomcom/edit_template.html": false, 
+        "nomcom/feedback.html": true, 
+        "nomcom/index.html": false, 
+        "nomcom/list_positions.html": false, 
+        "nomcom/list_templates.html": false, 
+        "nomcom/nomcom_private_base.html": true, 
+        "nomcom/nomcom_public_base.html": true, 
+        "nomcom/nomcomform.html": false, 
+        "nomcom/private_feedback_email.html": false, 
+        "nomcom/private_index.html": true, 
+        "nomcom/private_key.html": false, 
+        "nomcom/private_merge.html": true, 
+        "nomcom/private_nominate.html": true, 
+        "nomcom/private_questionnaire.html": true, 
+        "nomcom/process_nomination_status.html": false, 
+        "nomcom/public_nominate.html": true, 
+        "nomcom/questionnaires.html": true, 
+        "nomcom/remove_position.html": false, 
+        "nomcom/requirements.html": true, 
+        "nomcom/send_reminder_mail.html": true, 
+        "nomcom/view_feedback.html": false, 
+        "nomcom/view_feedback_nominee.html": false, 
+        "nomcom/view_feedback_pending.html": false, 
+        "nomcom/view_feedback_unrelated.html": false, 
+        "nomcom/year_index.html": true, 
+        "notify_expirations/body.txt": false, 
+        "notify_expirations/subject.txt": false, 
+        "person/mail/possible_duplicates.txt": true, 
+        "proceedings/acknowledgement.html": false, 
+        "proceedings/agenda.html": false, 
+        "proceedings/area.html": false, 
+        "proceedings/attendee.html": false, 
+        "proceedings/convert.html": false, 
+        "proceedings/edit_slide.html": false, 
+        "proceedings/index.html": false, 
+        "proceedings/interim_directory.html": true, 
+        "proceedings/interim_meeting.html": false, 
+        "proceedings/interim_select.html": false, 
+        "proceedings/irtf.html": false, 
+        "proceedings/main.html": true, 
+        "proceedings/overview.html": false, 
+        "proceedings/plenary.html": false, 
+        "proceedings/proceedings.html": true, 
+        "proceedings/proceedings_template.html": false, 
+        "proceedings/progress.html": false, 
+        "proceedings/recording.html": true, 
+        "proceedings/recording_edit.html": false, 
+        "proceedings/replace_slide.html": false, 
+        "proceedings/rg_irtf.html": false, 
+        "proceedings/select.html": false, 
+        "proceedings/status.html": false, 
+        "proceedings/training.html": false, 
+        "proceedings/upload_presentation.html": false, 
+        "proceedings/upload_unified.html": true, 
+        "proceedings/view.html": false, 
+        "proceedings/wait.html": false, 
+        "registration/add_email_email.txt": false, 
+        "registration/change_password.html": false, 
+        "registration/confirm.html": false, 
+        "registration/confirm_new_email.html": false, 
+        "registration/confirm_profile_update.html": false, 
+        "registration/create.html": false, 
+        "registration/creation_email.txt": false, 
+        "registration/edit_profile.html": true, 
+        "registration/index.html": true, 
+        "registration/logged_out.html": true, 
+        "registration/login.html": true, 
+        "registration/missing_person.html": false, 
+        "registration/password_reset.html": false, 
+        "registration/password_reset_email.txt": false, 
+        "release/about.html": true, 
+        "release/release.html": true, 
+        "release/todo.html": true, 
+        "roles/base_roles.html": false, 
+        "roles/chairs.html": false, 
+        "roles/liaisons.html": false, 
+        "roles/main.html": true, 
+        "roles/roles.html": false, 
+        "rolodex/add.html": false, 
+        "rolodex/add_proceed.html": false, 
+        "rolodex/delete.html": false, 
+        "rolodex/edit.html": false, 
+        "rolodex/search.html": true, 
+        "rolodex/view.html": true, 
+        "sreq/confirm.html": false, 
+        "sreq/edit.html": true, 
+        "sreq/locked.html": false, 
+        "sreq/main.html": true, 
+        "sreq/new.html": true, 
+        "sreq/not_meeting_notification.txt": true, 
+        "sreq/session_approval_notification.txt": false, 
+        "sreq/session_cancel_notification.txt": false, 
+        "sreq/session_request_notification.txt": false, 
+        "sreq/tool_status.html": false, 
+        "sreq/view.html": true, 
+        "submit/add_preapproval.html": true, 
+        "submit/announce_new_version.txt": true, 
+        "submit/announce_to_authors.txt": true, 
+        "submit/announce_to_lists.txt": true, 
+        "submit/approval_request.txt": true, 
+        "submit/approvals.html": true, 
+        "submit/cancel_preapproval.html": true, 
+        "submit/confirm_submission.html": true, 
+        "submit/confirm_submission.txt": true, 
+        "submit/edit_submission.html": true, 
+        "submit/full_url.txt": true, 
+        "submit/manual_post_request.txt": true, 
+        "submit/note_well.html": true, 
+        "submit/problem-reports-footer.html": true, 
+        "submit/replaces_form.html": true, 
+        "submit/search_submission.html": true, 
+        "submit/submission_files.html": true, 
+        "submit/submission_status.html": true, 
+        "submit/submit_base.html": true, 
+        "submit/submitter_form.html": true, 
+        "submit/tool_instructions.html": true, 
+        "submit/upload_submission.html": true, 
+        "sync/discrepancies.html": true, 
+        "sync/discrepancies_report.txt": false, 
+        "sync/notify.html": true, 
+        "sync/rfceditor_undo.html": true, 
+        "telechat/base_telechat.html": true, 
+        "telechat/bash.html": false, 
+        "telechat/doc.html": true, 
+        "telechat/doc_template.html": false, 
+        "telechat/group.html": false, 
+        "telechat/main.html": true, 
+        "telechat/management.html": false, 
+        "telechat/minutes.html": false, 
+        "telechat/roll_call.html": false, 
+        "test/mail_body.txt": false, 
+        "test/mail_subject.txt": false, 
+        "unauthorized.html": false, 
+        "utils/header_change_content.txt": false
+      }
+    }, 
+    "time": "2015-08-01T14:43:28Z", 
+    "url": {
+      "coverage": 0.586, 
+      "covered": {
+        "^$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)//email-aliases/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/about/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/charter/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/conclude/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/deps/dot/$": false, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/deps/pdf/$": false, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/documents/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/documents/txt/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/edit/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/history/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/init-charter/": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/materials/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/$": false, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/(?P<doc_type>[\\w-]+)/$": false, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/milestones/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/reset/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/(?P<acronym>[a-zA-Z0-9-._]+)/workflow/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/1wg-charters-by-acronym.txt": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/1wg-charters.txt": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/1wg-summary-by-acronym.txt": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/1wg-summary.txt": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/bofs/$": true, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/bofs/create/$": false, 
+        "^(?P<group_type>(wg|rg|ag|team|dir|area))/email-aliases/$": true, 
+        "^(?P<path>public)/(?P<script>.*?\\.cgi)(/.*)?$": true, 
+        "^accounts/$": true, 
+        "^accounts/add_email/confirm/(?P<username>[\\w.@+-]+)/(?P<date>[\\d]+)/(?P<email>[\\w.@+-]+)/(?P<hash>[a-f0-9]+)/$": false, 
+        "^accounts/confirm/(?P<username>[\\w.@+-]+)/(?P<date>[\\d]+)/(?P<realm>[\\w]+)/(?P<hash>[a-f0-9]+)/$": false, 
+        "^accounts/create/$": false, 
+        "^accounts/login/$": true, 
+        "^accounts/logout/$": true, 
+        "^accounts/profile/$": true, 
+        "^accounts/reset/$": false, 
+        "^accounts/reset/confirm/(?P<username>[\\w.@+-]+)/(?P<date>[\\d]+)/(?P<realm>[\\w]+)/(?P<hash>[a-f0-9]+)/$": false, 
+        "^accounts/settings/$": true, 
+        "^accounts/settings/expires_soon/": true, 
+        "^accounts/settings/expires_soon/(?P<days>.+)$": true, 
+        "^accounts/settings/full_draft/": true, 
+        "^accounts/settings/full_draft/(?P<enabled>.+)$": true, 
+        "^accounts/settings/left_menu/": true, 
+        "^accounts/settings/left_menu/(?P<enabled>.+)$": true, 
+        "^accounts/settings/new_enough/": true, 
+        "^accounts/settings/new_enough/(?P<days>.+)$": true, 
+        "^api/v1/": true, 
+        "^api/v1/?$": true, 
+        "^community/(?P<list_id>[\\d]+)/remove_document/(?P<document_name>[^/]+)/$": false, 
+        "^community/(?P<list_id>[\\d]+)/remove_rule/(?P<rule_id>[^/]+)/$": false, 
+        "^community/(?P<list_id>[\\d]+)/subscribe/confirm/(?P<email>[\\w.@+-]+)/(?P<date>[\\d]+)/(?P<confirm_hash>[a-f0-9]+)/$": false, 
+        "^community/(?P<list_id>[\\d]+)/subscribe/significant/confirm/(?P<email>[\\w.@+-]+)/(?P<date>[\\d]+)/(?P<confirm_hash>[a-f0-9]+)/$": false, 
+        "^community/(?P<list_id>[\\d]+)/unsubscribe/confirm/(?P<email>[\\w.@+-]+)/(?P<date>[\\d]+)/(?P<confirm_hash>[a-f0-9]+)/$": false, 
+        "^community/(?P<list_id>[\\d]+)/unsubscribe/significant/confirm/(?P<email>[\\w.@+-]+)/(?P<date>[\\d]+)/(?P<confirm_hash>[a-f0-9]+)/$": false, 
+        "^community/add_track_document/(?P<document_name>[^/]+)/$": false, 
+        "^community/group/(?P<acronym>[\\w.@+-]+)/$": false, 
+        "^community/group/(?P<acronym>[\\w.@+-]+)/changes/feed/$": false, 
+        "^community/group/(?P<acronym>[\\w.@+-]+)/changes/significant/feed/$": false, 
+        "^community/group/(?P<acronym>[\\w.@+-]+)/csv/$": false, 
+        "^community/group/(?P<acronym>[\\w.@+-]+)/subscribe/$": false, 
+        "^community/group/(?P<acronym>[\\w.@+-]+)/subscribe/significant/$": false, 
+        "^community/group/(?P<acronym>[\\w.@+-]+)/unsubscribe/$": false, 
+        "^community/group/(?P<acronym>[\\w.@+-]+)/unsubscribe/significant/$": false, 
+        "^community/group/(?P<acronym>[\\w.@+-]+)/view/$": false, 
+        "^community/personal/$": false, 
+        "^community/personal/(?P<secret>[a-f0-9]+)/changes/feed/$": false, 
+        "^community/personal/(?P<secret>[a-f0-9]+)/changes/significant/feed/$": false, 
+        "^community/personal/(?P<secret>[a-f0-9]+)/csv/$": false, 
+        "^community/personal/(?P<secret>[a-f0-9]+)/subscribe/$": false, 
+        "^community/personal/(?P<secret>[a-f0-9]+)/subscribe/significant/$": false, 
+        "^community/personal/(?P<secret>[a-f0-9]+)/unsubscribe/$": false, 
+        "^community/personal/(?P<secret>[a-f0-9]+)/unsubscribe/significant/$": false, 
+        "^community/personal/(?P<secret>[a-f0-9]+)/view/$": false, 
+        "^community/personal/csv/$": false, 
+        "^community/remove_track_document/(?P<document_name>[^/]+)/$": false, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/(?:(?P<rev>[0-9-]+)/)?$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/ballot/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/ballot/(?P<ballot_id>[0-9]+)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/ballot/(?P<ballot_id>[0-9]+)/emailposition/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/ballot/(?P<ballot_id>[0-9]+)/position/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/ballotpopup/(?P<ballot_id>[0-9]+)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/conflict-review/ad/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/conflict-review/approve/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/conflict-review/notices/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/conflict-review/start_conflict_review/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/conflict-review/state/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/conflict-review/submit/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/conflict-review/telechat/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/doc.json$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/ad/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/addcomment/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/adopt/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/approvaltext/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/approveballot/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/ballotwriteupnotes/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/clearballot/$": false, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/consensus/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/deferballot/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/iesgnote/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/info/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/lastcalltext/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/makelastcall/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/notify/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/replaces/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/requestpublication/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/requestresurrect/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/resurrect/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/shepherd/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/shepherdemail/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/shepherdwriteup/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/state/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/state/(?P<state_type>draft-stream-[a-z]+)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/state/(?P<state_type>iana-action|iana-review)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/status/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/stream/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/submit-to-iesg/$": false, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/suggested-replaces/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/telechat/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/edit/undeferballot/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/email-aliases/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/history/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/(?P<action>state|title|abstract|revise)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<date>\\d{4}-\\d{2}-\\d{2}(-\\d{4})?)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<date>\\d{4}-\\d{2}-\\d{2}(-\\d{4})?)/(?P<seq>\\d+)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<date>\\d{4}-\\d{2}-\\d{2}(-\\d{4})?)/(?P<seq>\\d+)/edit/$": false, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<date>\\d{4}-\\d{2}-\\d{2}(-\\d{4})?)/edit/$": false, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<seq>\\d+)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<seq>\\d+)/edit/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<week_day>[a-zA-Z]+)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<week_day>[a-zA-Z]+)/(?P<seq>\\d+)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<week_day>[a-zA-Z]+)/(?P<seq>\\d+)/edit/$": false, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<week_day>[a-zA-Z]+)/edit/$": false, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/edit/$": false, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<seq>\\d+)/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/material/sessions/(?P<seq>\\d+)/edit/$": false, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/referencedby/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/references/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/shepherdwriteup/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/status-change/ad/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/status-change/approve/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/status-change/last-call/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/status-change/notices/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/status-change/relations/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/status-change/state/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/status-change/submit/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/status-change/telechat/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/status-change/title/$": true, 
+        "^doc/(?P<name>[A-Za-z0-9._+-]+)/writeup/$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/(?P<ann>action|review)/$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/(?P<option>initcharter|recharter|abandon)/$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/ad/$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/approve/$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/ballotwriteupnotes/$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/notify/$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/state/$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/submit/(?:(?P<option>initcharter|recharter)/)?$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/telechat/$": true, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/title/$": false, 
+        "^doc/(?P<name>charter-[A-Za-z0-9._+-]+)/withmilestones-(?P<rev>[0-9-]+).txt$": true, 
+        "^doc//?$": false, 
+        "^doc/active/$": true, 
+        "^doc/ad/(?P<name>[A-Za-z0-9.-]+)/$": true, 
+        "^doc/ajax/internet_draft/?$": false, 
+        "^doc/all/$": true, 
+        "^doc/email-aliases/$": true, 
+        "^doc/help/relationships/$": false, 
+        "^doc/help/relationships/(?P<subset>\\w+)/$": false, 
+        "^doc/help/state/(?P<type>[\\w-]+)/$": true, 
+        "^doc/iesg/(?P<last_call_only>[A-Za-z0-9.-]+/)?$": false, 
+        "^doc/in-last-call/$": true, 
+        "^doc/rfc-status-changes/$": false, 
+        "^doc/search/$": true, 
+        "^doc/select2search/(?P<model_name>(document|docalias))/(?P<doc_type>draft)/$": true, 
+        "^doc/start-rfc-status-change/(?P<name>[A-Za-z0-9._+-]*)$": true, 
+        "^drafts/wgid/(?P<id>\\d+)/$": false, 
+        "^environment/$": false, 
+        "^feed/document-changes/(?P<name>[A-Za-z0-9._+-]+)/$": true, 
+        "^feed/group-changes/(?P<acronym>[a-zA-Z0-9-]+)/$": true, 
+        "^feed/iesg-agenda/$": true, 
+        "^feed/ipr/$": true, 
+        "^feed/last-call/$": true, 
+        "^feed/liaison/(?P<kind>recent|from|to|subject)/(?:(?P<search>[^/]+)/)?$": true, 
+        "^feed/wg-proceedings/$": true, 
+        "^group/$": true, 
+        "^group/(?P<acronym>[a-z0-9]+).json$": true, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)//email-aliases/$": true, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/about/$": true, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/charter/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/conclude/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/deps/dot/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/deps/pdf/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/documents/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/documents/txt/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/edit/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/history/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/init-charter/": true, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/materials/$": true, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/$": true, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/(?P<doc_type>[\\w-]+)/$": true, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/milestones/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/reset/$": false, 
+        "^group/(?P<acronym>[a-zA-Z0-9-._]+)/workflow/$": false, 
+        "^group/chartering/$": true, 
+        "^group/chartering/create/(?P<group_type>(wg|rg))/$": true, 
+        "^group/concluded/$": true, 
+        "^group/email-aliases/$": true, 
+        "^group/groupmenu.json": true, 
+        "^help/state/(?P<doc>[-\\w]+)/(?P<type>[-\\w]+)/?$": false, 
+        "^help/state/(?P<doc>[-\\w]+)/?$": false, 
+        "^help/state/?$": true, 
+        "^iesg/agenda/(?:(?P<date>\\d{4}-\\d{2}-\\d{2})/)?$": true, 
+        "^iesg/agenda/(?:(?P<date>\\d{4}-\\d{2}-\\d{2})/)?agenda.json$": true, 
+        "^iesg/agenda/(?:(?P<date>\\d{4}-\\d{2}-\\d{2})/)?agenda.txt$": true, 
+        "^iesg/agenda/(?:(?P<date>\\d{4}-\\d{2}-\\d{2})/)?agenda_package.txt$": true, 
+        "^iesg/agenda/(?:(?P<date>\\d{4}-\\d{2}-\\d{2})/)?moderator_package.html$": true, 
+        "^iesg/agenda/(?:(?P<date>\\d{4}-\\d{2}-\\d{2})/)?scribe_template.html$": true, 
+        "^iesg/agenda/documents.txt$": true, 
+        "^iesg/agenda/documents/$": true, 
+        "^iesg/agenda/telechat-(?:(?P<date>\\d{4}-\\d{2}-\\d{2})-)?docs.tgz": true, 
+        "^iesg/decisions/(?:(?P<year>[0-9]{4})/)?$": true, 
+        "^iesg/discusses/$": true, 
+        "^iesg/milestones/$": true, 
+        "^ipr/$": true, 
+        "^ipr/(?P<id>\\d+)/$": true, 
+        "^ipr/(?P<id>\\d+)/addcomment/$": true, 
+        "^ipr/(?P<id>\\d+)/addemail/$": true, 
+        "^ipr/(?P<id>\\d+)/edit/$": false, 
+        "^ipr/(?P<id>\\d+)/email/$": true, 
+        "^ipr/(?P<id>\\d+)/history/$": true, 
+        "^ipr/(?P<id>\\d+)/notify/(?P<type>update|posted)/$": true, 
+        "^ipr/(?P<id>\\d+)/post/$": true, 
+        "^ipr/(?P<id>\\d+)/state/$": false, 
+        "^ipr/about/$": true, 
+        "^ipr/admin/(?P<state>pending|removed|parked)/$": true, 
+        "^ipr/ajax/search/$": false, 
+        "^ipr/by-draft/$": true, 
+        "^ipr/new-(?P<type>(specific|generic|third-party))/$": true, 
+        "^ipr/search/$": true, 
+        "^ipr/update/(?P<id>\\d+)/$": false, 
+        "^liaison/$": true, 
+        "^liaison/(?P<object_id>\\d+)/$": true, 
+        "^liaison/(?P<object_id>\\d+)/edit/$": true, 
+        "^liaison/add/$": true, 
+        "^liaison/ajax/get_info/$": false, 
+        "^liaison/ajax/select2search/$": false, 
+        "^liaison/for_approval/$": true, 
+        "^liaison/for_approval/(?P<object_id>\\d+)/$": true, 
+        "^list/wg/$": true, 
+        "^meeting/$": true, 
+        "^meeting/(?P<meeting_num>\\d+)/materials.html$": true, 
+        "^meeting/(?P<num>\\d+).json$": true, 
+        "^meeting/(?P<num>\\d+)/agenda(-utc)?(?P<ext>.html)?/?$": true, 
+        "^meeting/(?P<num>\\d+)/agenda(?P<ext>.csv)$": true, 
+        "^meeting/(?P<num>\\d+)/agenda(?P<ext>.txt)$": true, 
+        "^meeting/(?P<num>\\d+)/agenda.ics$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<owner>[A-Za-z0-9-.+_]+@[A-Za-z0-9._]+)/(?P<name>[A-Za-z0-9-:_]+).(?P<ext>.html)?/?$": false, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<owner>[A-Za-z0-9-.+_]+@[A-Za-z0-9._]+)/(?P<name>[A-Za-z0-9-:_]+).json$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<owner>[A-Za-z0-9-.+_]+@[A-Za-z0-9._]+)/(?P<name>[A-Za-z0-9-:_]+)/details$": false, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<owner>[A-Za-z0-9-.+_]+@[A-Za-z0-9._]+)/(?P<name>[A-Za-z0-9-:_]+)/edit$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<owner>[A-Za-z0-9-.+_]+@[A-Za-z0-9._]+)/(?P<name>[A-Za-z0-9-:_]+)/permissions$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<owner>[A-Za-z0-9-.+_]+@[A-Za-z0-9._]+)/(?P<name>[A-Za-z0-9-:_]+)/session/(?P<scheduledsession_id>\\d+).json$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<owner>[A-Za-z0-9-.+_]+@[A-Za-z0-9._]+)/(?P<name>[A-Za-z0-9-:_]+)/sessions.json$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.pdf$": false, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<session>[A-Za-z0-9-]+)-drafts.tgz$": false, 
+        "^meeting/(?P<num>\\d+)/agenda/(?P<session>[A-Za-z0-9-]+)/?$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/by-room$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/by-type$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/by-type/(?P<type>[a-z]+)$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/by-type/(?P<type>[a-z]+)/ics$": false, 
+        "^meeting/(?P<num>\\d+)/agenda/edit$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/room-view.html$": true, 
+        "^meeting/(?P<num>\\d+)/agenda/week-view.html$": true, 
+        "^meeting/(?P<num>\\d+)/agendas$": false, 
+        "^meeting/(?P<num>\\d+)/agendas.json$": true, 
+        "^meeting/(?P<num>\\d+)/agendas/edit$": false, 
+        "^meeting/(?P<num>\\d+)/constraint/(?P<constraintid>\\d+).json": false, 
+        "^meeting/(?P<num>\\d+)/requests$": false, 
+        "^meeting/(?P<num>\\d+)/room-view.html$": false, 
+        "^meeting/(?P<num>\\d+)/room/(?P<roomid>\\d+).html$": false, 
+        "^meeting/(?P<num>\\d+)/room/(?P<roomid>\\d+).json$": true, 
+        "^meeting/(?P<num>\\d+)/rooms$": true, 
+        "^meeting/(?P<num>\\d+)/session/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/$": true, 
+        "^meeting/(?P<num>\\d+)/session/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<date>\\d{4}-\\d{2}-\\d{2}(-\\d{4})?)/$": false, 
+        "^meeting/(?P<num>\\d+)/session/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<date>\\d{4}-\\d{2}-\\d{2}(-\\d{4})?)/(?P<seq>\\d+)/$": false, 
+        "^meeting/(?P<num>\\d+)/session/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<seq>\\d+)/$": false, 
+        "^meeting/(?P<num>\\d+)/session/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/(?P<week_day>[a-zA-Z]+)/$": false, 
+        "^meeting/(?P<num>\\d+)/session/(?P<sessionid>\\d+).json": false, 
+        "^meeting/(?P<num>\\d+)/session/(?P<sessionid>\\d+)/constraints.json": true, 
+        "^meeting/(?P<num>\\d+)/sessions.json": true, 
+        "^meeting/(?P<num>\\d+)/timeslot/(?P<slotid>\\d+).json$": true, 
+        "^meeting/(?P<num>\\d+)/timeslots$": false, 
+        "^meeting/(?P<num>\\d+)/timeslots.json$": true, 
+        "^meeting/(?P<num>\\d+)/timeslots/edit$": true, 
+        "^meeting/(?P<num>\\d+)/week-view.html$": false, 
+        "^meeting/agenda(-utc)?(?P<ext>.html)?$": false, 
+        "^meeting/agenda(?P<ext>.csv)$": false, 
+        "^meeting/agenda(?P<ext>.txt)$": false, 
+        "^meeting/agenda.ics$": false, 
+        "^meeting/agenda/$": false, 
+        "^meeting/agenda/agenda.ics$": false, 
+        "^meeting/agenda/edit$": false, 
+        "^meeting/agenda/room-view.html$": false, 
+        "^meeting/agenda/week-view.html$": false, 
+        "^meeting/requests$": false, 
+        "^meeting/room-view.html$": false, 
+        "^meeting/week-view.html$": false, 
+        "^nomcom/$": false, 
+        "^nomcom/(?P<year>\\d{4})/$": true, 
+        "^nomcom/(?P<year>\\d{4})/expertise/$": true, 
+        "^nomcom/(?P<year>\\d{4})/feedback/$": true, 
+        "^nomcom/(?P<year>\\d{4})/nominate/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/chair/position/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/chair/position/(?P<position_id>\\d+)/$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/chair/position/(?P<position_id>\\d+)/remove/$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/chair/position/add/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/chair/templates/$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/chair/templates/(?P<template_id>\\d+)/$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/delete-nomcom/$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/edit-members/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/edit-nomcom/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/edit/nominee/(?P<nominee_id>\\d+)$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/feedback-email/$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/feedback/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/key/$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/merge/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/nominate/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/questionnaire-response/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/send-reminder-mail/(?P<type>\\w+)/$": true, 
+        "^nomcom/(?P<year>\\d{4})/private/view-feedback/$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/view-feedback/nominee/(?P<nominee_id>\\d+)$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/view-feedback/pending/$": false, 
+        "^nomcom/(?P<year>\\d{4})/private/view-feedback/unrelated/$": false, 
+        "^nomcom/(?P<year>\\d{4})/process-nomination-status/(?P<nominee_position_id>\\d+)/(?P<state>[\\w]+)/(?P<date>[\\d]+)/(?P<hash>[a-f0-9]+)/$": false, 
+        "^nomcom/(?P<year>\\d{4})/questionnaires/$": true, 
+        "^nomcom/(?P<year>\\d{4})/requirements/$": false, 
+        "^nomcom/ann/$": true, 
+        "^nomcom/ann/(?P<message_id>\\d+)/$": true, 
+        "^person/(?P<personid>[a-z0-9]+).json$": true, 
+        "^person/search/(?P<model_name>(person|email))/$": true, 
+        "^release/$": true, 
+        "^release/(?P<version>[0-9.]+.*)/$": false, 
+        "^secr/announcement/$": true, 
+        "^secr/announcement/confirm/$": true, 
+        "^secr/areas/$": true, 
+        "^secr/areas/(?P<name>[A-Za-z0-9.-]+)/$": true, 
+        "^secr/areas/(?P<name>[A-Za-z0-9.-]+)/edit/$": false, 
+        "^secr/areas/(?P<name>[A-Za-z0-9.-]+)/people/$": false, 
+        "^secr/areas/(?P<name>[A-Za-z0-9.-]+)/people/modify/$": false, 
+        "^secr/areas/add/$": false, 
+        "^secr/areas/getemails": false, 
+        "^secr/areas/getpeople": false, 
+        "^secr/console/$": false, 
+        "^secr/drafts/$": true, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/$": true, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/abstract/$": true, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/announce/$": true, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/author_delete/(?P<oid>\\d{1,6})$": false, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/authors/$": false, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/confirm/$": false, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/edit/$": true, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/email/$": false, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/extend/$": false, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/makerfc/$": false, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/replace/$": false, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/resurrect/$": false, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/revision/$": false, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/update/$": true, 
+        "^secr/drafts/(?P<id>[A-Za-z0-9._\\-\\+]+)/withdraw/$": false, 
+        "^secr/drafts/add/$": true, 
+        "^secr/drafts/approvals/$": true, 
+        "^secr/drafts/dates/$": false, 
+        "^secr/drafts/nudge-report/$": false, 
+        "^secr/groups/$": false, 
+        "^secr/groups/(?P<acronym>[A-Za-z0-9_\\-\\+\\.]+)/$": true, 
+        "^secr/groups/(?P<acronym>[A-Za-z0-9_\\-\\+\\.]+)/charter/$": false, 
+        "^secr/groups/(?P<acronym>[A-Za-z0-9_\\-\\+\\.]+)/delete/(?P<id>\\d{1,6})/$": true, 
+        "^secr/groups/(?P<acronym>[A-Za-z0-9_\\-\\+\\.]+)/edit/$": true, 
+        "^secr/groups/(?P<acronym>[A-Za-z0-9_\\-\\+\\.]+)/gm/$": false, 
+        "^secr/groups/(?P<acronym>[A-Za-z0-9_\\-\\+\\.]+)/gm/edit/$": false, 
+        "^secr/groups/(?P<acronym>[A-Za-z0-9_\\-\\+\\.]+)/people/$": true, 
+        "^secr/groups/add/$": true, 
+        "^secr/groups/blue-dot-report/$": false, 
+        "^secr/groups/search/$": true, 
+        "^secr/meetings/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/remove/$": false, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/schedule/$": false, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/non_session/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/non_session/delete/(?P<slot_id>\\d{1,6})/$": false, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/non_session/edit/(?P<slot_id>\\d{1,6})/$": false, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/rooms/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/select/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/times/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/times/delete/(?P<time>[0-9\\:]+)/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/times/edit/(?P<time>[0-9\\:]+)/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\\-]+)/unschedule/(?P<session_id>\\d{1,6})/$": false, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/blue_sheet/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/blue_sheet/generate/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/edit/$": true, 
+        "^secr/meetings/(?P<meeting_id>\\d{1,6})/notifications/$": true, 
+        "^secr/meetings/add/$": true, 
+        "^secr/meetings/ajax/get-times/(?P<meeting_id>\\d{1,6})/(?P<day>\\d)/$": false, 
+        "^secr/meetings/blue_sheet/$": false, 
+        "^secr/proceedings/$": true, 
+        "^secr/proceedings/(?P<meeting_num>\\d{1,3})/$": false, 
+        "^secr/proceedings/(?P<meeting_num>\\d{1,3})/recording/$": true, 
+        "^secr/proceedings/(?P<meeting_num>\\d{1,3})/recording/edit/(?P<name>[A-Za-z0-9_\\-\\+]+)$": true, 
+        "^secr/proceedings/(?P<meeting_num>\\d{1,3}|interim-\\d{4}-[A-Za-z0-9_\\-\\+]+)/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/$": true, 
+        "^secr/proceedings/(?P<meeting_num>\\d{1,3}|interim-\\d{4}-[A-Za-z0-9_\\-\\+]+)/(?P<session_id>\\d{1,6})/$": false, 
+        "^secr/proceedings/ajax/generate-proceedings/(?P<meeting_num>\\d{1,3})/$": false, 
+        "^secr/proceedings/ajax/get-sessions/(?P<meeting_num>\\d{1,3})/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/": false, 
+        "^secr/proceedings/ajax/order-slide/$": false, 
+        "^secr/proceedings/build/(?P<meeting_num>\\d{1,3}|interim-\\d{4}-[A-Za-z0-9_\\-\\+]+)/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/$": false, 
+        "^secr/proceedings/delete/(?P<slide_id>[A-Za-z0-9._\\-\\+]+)/$": false, 
+        "^secr/proceedings/edit-slide/(?P<slide_id>[A-Za-z0-9._\\-\\+]+)/$": false, 
+        "^secr/proceedings/interim/$": false, 
+        "^secr/proceedings/interim/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/$": false, 
+        "^secr/proceedings/interim/(?P<meeting_num>interim-\\d{4}-[A-Za-z0-9_\\-\\+]+)/delete/$": false, 
+        "^secr/proceedings/move-slide/(?P<slide_id>[A-Za-z0-9._\\-\\+]+)/(?P<direction>(up|down))/$": false, 
+        "^secr/proceedings/process-pdfs/(?P<meeting_num>\\d{1,3})/$": false, 
+        "^secr/proceedings/progress-report/(?P<meeting_num>\\d{1,3})/$": false, 
+        "^secr/proceedings/replace-slide/(?P<slide_id>[A-Za-z0-9._\\-\\+]+)/$": false, 
+        "^secr/roles/$": true, 
+        "^secr/roles/(?P<acronym>[A-Za-z0-9_\\-\\+\\.]+)/delete/(?P<id>\\d{1,6})/$": true, 
+        "^secr/roles/ajax/get-roles/(?P<acronym>[A-Za-z0-9_\\-\\+\\.]+)/$": false, 
+        "^secr/rolodex/$": true, 
+        "^secr/rolodex/(?P<id>\\d{1,6})/$": true, 
+        "^secr/rolodex/(?P<id>\\d{1,6})/edit/$": false, 
+        "^secr/rolodex/add-proceed/$": false, 
+        "^secr/rolodex/add/$": false, 
+        "^secr/sreq/$": true, 
+        "^secr/sreq/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/$": true, 
+        "^secr/sreq/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/approve/$": false, 
+        "^secr/sreq/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/cancel/$": false, 
+        "^secr/sreq/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/confirm/$": false, 
+        "^secr/sreq/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/edit/$": true, 
+        "^secr/sreq/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/new/$": true, 
+        "^secr/sreq/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/no_session/$": true, 
+        "^secr/sreq/(?P<num>[A-Za-z0-9_\\-\\+]+)/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/edit/$": false, 
+        "^secr/sreq/(?P<num>[A-Za-z0-9_\\-\\+]+)/(?P<acronym>[A-Za-z0-9_\\-\\+]+)/view/$": false, 
+        "^secr/sreq/status/$": false, 
+        "^secr/telechat/$": true, 
+        "^secr/telechat/(?P<date>[0-9\\-]+)/bash/$": false, 
+        "^secr/telechat/(?P<date>[0-9\\-]+)/doc/$": true, 
+        "^secr/telechat/(?P<date>[0-9\\-]+)/doc/(?P<name>[A-Za-z0-9.-]+)/$": false, 
+        "^secr/telechat/(?P<date>[0-9\\-]+)/doc/(?P<name>[A-Za-z0-9.-]+)/(?P<nav>next|previous)/$": false, 
+        "^secr/telechat/(?P<date>[0-9\\-]+)/management/$": false, 
+        "^secr/telechat/(?P<date>[0-9\\-]+)/minutes/$": false, 
+        "^secr/telechat/(?P<date>[0-9\\-]+)/roll-call/$": false, 
+        "^secr/telechat/new/$": false, 
+        "^sitemap-(?P<section>.+).xml$": true, 
+        "^sitemap.xml$": true, 
+        "^stream/$": true, 
+        "^stream/(?P<acronym>[a-zA-Z0-9-]+)/$": true, 
+        "^stream/(?P<acronym>[a-zA-Z0-9-]+)/edit/$": true, 
+        "^submit/$": true, 
+        "^submit/approvals/$": true, 
+        "^submit/approvals/addpreapproval/$": true, 
+        "^submit/approvals/cancelpreapproval/(?P<preapproval_id>[a-f\\d]+)/$": true, 
+        "^submit/note-well/$": true, 
+        "^submit/status/$": true, 
+        "^submit/status/(?P<submission_id>\\d+)/$": true, 
+        "^submit/status/(?P<submission_id>\\d+)/(?P<access_token>[a-f\\d]*)/$": true, 
+        "^submit/status/(?P<submission_id>\\d+)/(?P<access_token>[a-f\\d]+)/edit/$": true, 
+        "^submit/status/(?P<submission_id>\\d+)/confirm/(?P<auth_token>[a-f\\d]+)/$": true, 
+        "^submit/status/(?P<submission_id>\\d+)/edit/$": true, 
+        "^submit/tool-instructions/$": true, 
+        "^sync/(?P<org>\\w+)/notify/(?P<notification>\\w+)/$": true, 
+        "^sync/discrepancies/$": true, 
+        "^sync/rfceditor/undo/": true, 
+        "^templates/(?P<acronym>[\\w.@+-]+)/$": false, 
+        "^templates/(?P<acronym>[\\w.@+-]+)/(?P<template_id>[\\d]+)/$": false
+      }
+    }
+  }, 
+  "version": "6.3.0"
 }
\ No newline at end of file

From c954e02c095382d4b017f5994c0a4a7746fc7446 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Sat, 1 Aug 2015 14:52:38 +0000
Subject: [PATCH 14/16] Changelog entry for 6.3.0  - Legacy-Id: 9939

---
 changelog | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/changelog b/changelog
index b84bcfff5..ff2fa5226 100644
--- a/changelog
+++ b/changelog
@@ -32,7 +32,7 @@ ietfdb (6.3.0) ietf; urgency=medium
   * Improved the handling of failed xml2rfc conversions when no txt document
     is submitted.
 
- -- Henrik Levkowetz <henrik@levkowetz.com>  01 Aug 2015 03:14:10 -0700
+ -- Henrik Levkowetz <henrik@levkowetz.com>  01 Aug 2015 14:52:37 +0000
 
 
 ietfdb (6.2.0) ietf; urgency=medium

From 594d626ad5a39d8b33e34f03a68abc24eb87a5e1 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Sat, 1 Aug 2015 14:52:42 +0000
Subject: [PATCH 15/16] Set version info to release version 6.3.0 before
 branching.  - Legacy-Id: 9940

---
 ietf/__init__.py | 4 ++--
 ietf/settings.py | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/ietf/__init__.py b/ietf/__init__.py
index 2f629c3ce..bc70c21b8 100644
--- a/ietf/__init__.py
+++ b/ietf/__init__.py
@@ -1,9 +1,9 @@
 # Copyright The IETF Trust 2007, All Rights Reserved
 
-__version__ = "6.2.1.dev0"
+__version__ = "6.3.0"
 
 __date__    = "$Date$"
 
-__rev__     = "$Rev$ (dev) Latest release: Rev. 9880 "
+__rev__     = "$Rev$"
 
 __id__      = "$Id$"
diff --git a/ietf/settings.py b/ietf/settings.py
index b4866275d..1ceb80c0c 100644
--- a/ietf/settings.py
+++ b/ietf/settings.py
@@ -21,7 +21,7 @@ sys.path.append(os.path.abspath(BASE_DIR + "/.."))
 
 import datetime
 
-DEBUG = True
+DEBUG = False
 TEMPLATE_DEBUG = DEBUG
 
 # Domain name of the IETF
@@ -281,7 +281,7 @@ RFCDIFF_BASE_URL = "https://www.ietf.org/rfcdiff"
 # Valid values:
 # 'production', 'test', 'development'
 # Override this in settings_local.py if it's not true
-SERVER_MODE = 'development'
+SERVER_MODE = 'production'
 
 # The name of the method to use to invoke the test suite
 TEST_RUNNER = 'ietf.utils.test_runner.IetfTestRunner'

From fb3aade0b4ab3654139e901b3223b388d6c00ef6 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Sat, 1 Aug 2015 14:52:48 +0000
Subject: [PATCH 16/16] Set version info and settings back to development mode 
 - Legacy-Id: 9942

---
 ietf/__init__.py | 4 ++--
 ietf/settings.py | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/ietf/__init__.py b/ietf/__init__.py
index bc70c21b8..c8f236e09 100644
--- a/ietf/__init__.py
+++ b/ietf/__init__.py
@@ -1,9 +1,9 @@
 # Copyright The IETF Trust 2007, All Rights Reserved
 
-__version__ = "6.3.0"
+__version__ = "6.3.1.dev0"
 
 __date__    = "$Date$"
 
-__rev__     = "$Rev$"
+__rev__     = "$Rev$ (dev) Latest release: Rev. 9940 "
 
 __id__      = "$Id$"
diff --git a/ietf/settings.py b/ietf/settings.py
index 1ceb80c0c..b4866275d 100644
--- a/ietf/settings.py
+++ b/ietf/settings.py
@@ -21,7 +21,7 @@ sys.path.append(os.path.abspath(BASE_DIR + "/.."))
 
 import datetime
 
-DEBUG = False
+DEBUG = True
 TEMPLATE_DEBUG = DEBUG
 
 # Domain name of the IETF
@@ -281,7 +281,7 @@ RFCDIFF_BASE_URL = "https://www.ietf.org/rfcdiff"
 # Valid values:
 # 'production', 'test', 'development'
 # Override this in settings_local.py if it's not true
-SERVER_MODE = 'production'
+SERVER_MODE = 'development'
 
 # The name of the method to use to invoke the test suite
 TEST_RUNNER = 'ietf.utils.test_runner.IetfTestRunner'