=== added file '.bzrignore'
--- .bzrignore	1970-01-01 00:00:00 +0000
+++ .bzrignore	2012-03-29 06:09:18 +0000
@@ -0,0 +1,3 @@
+dev_setup/mmtest.db
+dev_setup/settings_local.py
+src/postorius.egg-info

=== renamed file '.bzrignore' => '.bzrignore.moved'
=== added file 'COPYING'
--- COPYING	1970-01-01 00:00:00 +0000
+++ COPYING	2012-03-29 06:09:18 +0000
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.

=== added file 'NEWS.rst'
--- NEWS.rst	1970-01-01 00:00:00 +0000
+++ NEWS.rst	2012-03-29 06:09:18 +0000
@@ -0,0 +1,43 @@
+==================================
+Postorius - web ui for GNU Mailman
+==================================
+
+Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+
+The Postorius Django app provides a web user interface to
+access GNU Mailman. 
+
+Postorius is free software: you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation, version 3 of the License.
+
+Postorius is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
+General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with Postorius. If not, see <http://www.gnu.org/licenses/>.
+
+
+1.0 alpha 1 -- "Space Farm"
+===========================
+(2012-03-23)
+
+Many thanks go out to Anna Senarclens de Grancy and Benedict Stein for
+developing the initial versions of this Django app during the Google Summer of
+Code 2010 and 2011. 
+
+* add/remove/edit mailing lists
+* edit list settings
+* show all mailing lists on server
+* subscribe/unsubscribe/mass subscribe mailing lists
+* add/remove domains
+* show basic list info and metrics
+* login using django user account or using BrowserID
+* show basic user profile
+* accept/discard/reject/defer messages
+* Implementation of Django Messages contributed by Benedict Stein (LP: #920084)
+* Dependency check in setup.py contributed by Daniel Mizyrycki
+* Proper processing of acceptable aliases in list settings form contributed by
+  Daniel Mizyrycki

=== added file 'README.rst'
--- README.rst	1970-01-01 00:00:00 +0000
+++ README.rst	2012-03-29 06:09:18 +0000
@@ -0,0 +1,60 @@
+===================================
+Postorius - web ui for GNU Mailman
+===================================
+
+Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+
+The Postorius Django app provides a web user interface to
+access GNU Mailman. 
+
+Postorius is free software: you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation, version 3 of the License.
+
+Postorius is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
+General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with mailman.client. If not, see <http://www.gnu.org/licenses/>.
+
+
+Requirements
+============
+
+Postorius requires Python 2.6 or newer and mailman.client,
+the official Python bindings for GNU Mailman, it also requires
+django-social-auth.
+The minimum Django version is 1.3.
+Postorius needs a running version of GNU Mailman version 3.
+
+
+Installation
+============
+
+To install GNU Mailman follow the instructions in the documentation:
+http://packages.python.org/mailman/
+
+A description how to run Postorius on Django's dev server, can be found in 
+the GNU Mailman wiki: 
+http://wiki.list.org/display/DEV/A+5+minute+guide+to+get+the+Mailman+web+UI+running
+
+You can also find a guide how to run Postorius using the Apache web server
+on the Mailman wiki:
+http://wiki.list.org/display/DEV/How+to+get+Postorius+running+on+Apache+and+mod_wsgi
+
+
+Acknowledgements
+================
+
+Many thanks go out to Anna Senarclens de Grancy and Benedict Stein for
+developing the initial versions of this Django app during the Google Summer of
+Code 2010 and 2011. 
+
+
+Icons
+=====
+
+Postorius uses the WPZOOM Developer Icon Set (http://www.wpzoom.com).
+

=== added directory 'dev_setup'
=== added file 'dev_setup/__init__.py'
=== added file 'dev_setup/manage.py'
--- dev_setup/manage.py	1970-01-01 00:00:00 +0000
+++ dev_setup/manage.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,29 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+#
+# This file is part of Postorius.
+#
+# Postorius is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# Postorius is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Postorius.  If not, see <http://www.gnu.org/licenses/>.
+
+from django.core.management import execute_manager
+try:
+    import settings # Assumed to be in the same directory.
+except ImportError:
+    import sys
+    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
+    sys.exit(1)
+
+if __name__ == "__main__":
+    execute_manager(settings)

=== added file 'dev_setup/settings.py'
--- dev_setup/settings.py	1970-01-01 00:00:00 +0000
+++ dev_setup/settings.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,161 @@
+#-*- coding: utf-8 -*-
+# Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+#
+# This file is part of Postorius.
+#
+# Postorius is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# Postorius is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Postorius.  If not, see <http://www.gnu.org/licenses/>.
+
+"""Import App Directory to syspath"""
+
+import os
+import sys
+PROJECT_ROOT = os.path.dirname(__file__)
+sys.path.insert(0, os.path.split(PROJECT_ROOT)[0])
+
+"""Django settings for postorius project."""
+
+import os.path
+
+# Mailman API credentials
+REST_SERVER = 'http://localhost:8001'
+API_USER = 'restadmin' 
+API_PASS = 'restpass'
+
+# CSS theme for mailman-django application
+MAILMAN_THEME = "default"
+
+PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
+
+DEBUG = True
+TEMPLATE_DEBUG = DEBUG
+
+ADMINS = (
+    #('Admin', 'webmaster@example.com'),
+)
+
+MANAGERS = ADMINS
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.sqlite3',
+        'NAME': 'mmtest.db'
+    }
+}
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
+TIME_ZONE = 'America/Chicago'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'en-us'
+
+SITE_ID = 1
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+
+# Absolute path to the directory that holds static files.
+STATIC_ROOT = os.path.join(PROJECT_PATH, 'static/')
+# Absolute path to the directory that holds media files.
+MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media/')
+# URL that handles the media served from STATIC_ROOT. Make sure to use a
+STATIC_URL = '/static/'
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+MEDIA_URL = '/media/'
+
+# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
+# trailing slash.
+# Examples: "http://foo.com/media/", "/media/".
+ADMIN_MEDIA_PREFIX = '/static/admin/'
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = '$!-7^wl#wiifjbh)5@f7ji%x!vp7s1vzbvwt26hxv$idixq0u0'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+    'django.template.loaders.filesystem.Loader',
+    'django.template.loaders.app_directories.Loader',
+)
+
+AUTHENTICATION_BACKENDS = (
+    'django.contrib.auth.backends.ModelBackend',
+    'social_auth.backends.OpenIDBackend',
+    'social_auth.backends.browserid.BrowserIDBackend'
+)
+
+TEMPLATE_CONTEXT_PROCESSORS = (
+    "django.contrib.auth.context_processors.auth",
+    "django.contrib.messages.context_processors.messages",
+    "django.core.context_processors.debug",
+    "django.core.context_processors.i18n",
+    "django.core.context_processors.media",
+    "django.core.context_processors.static",
+    "django.core.context_processors.csrf",
+    "django.contrib.messages.context_processors.messages",
+    "postorius.context_processors.postorius",
+    'social_auth.context_processors.social_auth_by_name_backends',
+    'social_auth.context_processors.social_auth_backends',
+    'social_auth.context_processors.social_auth_by_type_backends',
+)
+
+MIDDLEWARE_CLASSES = (
+    'django.middleware.common.CommonMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.middleware.locale.LocaleMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
+)
+
+# Set `postorius.urls` as main url config if postorius
+# is the only app you want to serve.
+ROOT_URLCONF = 'urls'
+
+TEMPLATE_DIRS = (
+    # uncomment if you like to overwrite the default templates:
+    # os.path.join(PROJECT_PATH, "/templates/postorius"),
+)
+
+STATICFILES_FINDERS = (
+    "django.contrib.staticfiles.finders.FileSystemFinder",
+    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
+)
+
+INSTALLED_APPS = (
+    'django.contrib.auth',
+    'django.contrib.messages',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'django.contrib.admin',
+    'django.contrib.staticfiles',
+    'postorius',
+    'social_auth',
+)
+LOGIN_URL          = '/postorius/accounts/login/'
+LOGIN_REDIRECT_URL = '/postorius/'
+LOGIN_ERROR_URL    = '/postorius/accounts/login/'
+SOCIAL_AUTH_COMPLETE_URL_NAME  = 'socialauth_complete'
+SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'socialauth_associate_complete'
+SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user'
+SOCIAL_AUTH_UUID_LENGTH = 16
+
+try:
+    from settings_local import *
+except ImportError:
+    pass

=== added file 'dev_setup/urls.py'
--- dev_setup/urls.py	1970-01-01 00:00:00 +0000
+++ dev_setup/urls.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+#
+# This file is part of Postorius.
+#
+# Postorius is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# Postorius is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Postorius.  If not, see <http://www.gnu.org/licenses/>.
+
+import postorius
+
+from django.conf.urls.defaults import *
+from django.conf import settings
+
+# Uncomment the next two lines to enable the admin:
+from django.contrib import admin
+admin.autodiscover()
+
+# Import mailman urls and set urlpatterns if you want to hook
+# mailman_django into an existing django site. 
+# Otherwise set ROOT_URLCONF in settings.py to
+# `mailman_django.urls`.
+# from mailman_django import urls as mailman_urls
+
+urlpatterns = patterns('',
+    url(r'^$', 'postorius.views.list_index'),
+    (r'^postorius/', include('postorius.urls')),
+	url(r'', include('social_auth.urls')),
+)

=== added file 'ez_setup.py'
--- ez_setup.py	1970-01-01 00:00:00 +0000
+++ ez_setup.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,284 @@
+#!python
+"""Bootstrap setuptools installation
+
+If you want to use setuptools in your package's setup.py, just include this
+file in the same directory with it, and add this to the top of your setup.py::
+
+    from ez_setup import use_setuptools
+    use_setuptools()
+
+If you want to require a specific version of setuptools, set a download
+mirror, or use an alternate download directory, you can do so by supplying
+the appropriate options to ``use_setuptools()``.
+
+This file can also be run as a script to install or upgrade setuptools.
+"""
+import sys
+DEFAULT_VERSION = "0.6c11"
+DEFAULT_URL     = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
+
+md5_data = {
+    'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
+    'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
+    'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
+    'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
+    'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
+    'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
+    'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
+    'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
+    'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
+    'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
+    'setuptools-0.6c10-py2.3.egg': 'ce1e2ab5d3a0256456d9fc13800a7090',
+    'setuptools-0.6c10-py2.4.egg': '57d6d9d6e9b80772c59a53a8433a5dd4',
+    'setuptools-0.6c10-py2.5.egg': 'de46ac8b1c97c895572e5e8596aeb8c7',
+    'setuptools-0.6c10-py2.6.egg': '58ea40aef06da02ce641495523a0b7f5',
+    'setuptools-0.6c11-py2.3.egg': '2baeac6e13d414a9d28e7ba5b5a596de',
+    'setuptools-0.6c11-py2.4.egg': 'bd639f9b0eac4c42497034dec2ec0c2b',
+    'setuptools-0.6c11-py2.5.egg': '64c94f3bf7a72a13ec83e0b24f2749b2',
+    'setuptools-0.6c11-py2.6.egg': 'bfa92100bd772d5a213eedd356d64086',
+    'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
+    'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
+    'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
+    'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
+    'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
+    'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
+    'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
+    'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
+    'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
+    'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
+    'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
+    'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
+    'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
+    'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
+    'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
+    'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
+    'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
+    'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
+    'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
+    'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
+    'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
+    'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
+    'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
+    'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
+}
+
+import sys, os
+try: from hashlib import md5
+except ImportError: from md5 import md5
+
+def _validate_md5(egg_name, data):
+    if egg_name in md5_data:
+        digest = md5(data).hexdigest()
+        if digest != md5_data[egg_name]:
+            print >>sys.stderr, (
+                "md5 validation of %s failed!  (Possible download problem?)"
+                % egg_name
+            )
+            sys.exit(2)
+    return data
+
+def use_setuptools(
+    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
+    download_delay=15
+):
+    """Automatically find/download setuptools and make it available on sys.path
+
+    `version` should be a valid setuptools version number that is available
+    as an egg for download under the `download_base` URL (which should end with
+    a '/').  `to_dir` is the directory where setuptools will be downloaded, if
+    it is not already available.  If `download_delay` is specified, it should
+    be the number of seconds that will be paused before initiating a download,
+    should one be required.  If an older version of setuptools is installed,
+    this routine will print a message to ``sys.stderr`` and raise SystemExit in
+    an attempt to abort the calling script.
+    """
+    was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
+    def do_download():
+        egg = download_setuptools(version, download_base, to_dir, download_delay)
+        sys.path.insert(0, egg)
+        import setuptools; setuptools.bootstrap_install_from = egg
+    try:
+        import pkg_resources
+    except ImportError:
+        return do_download()       
+    try:
+        pkg_resources.require("setuptools>="+version); return
+    except pkg_resources.VersionConflict, e:
+        if was_imported:
+            print >>sys.stderr, (
+            "The required version of setuptools (>=%s) is not available, and\n"
+            "can't be installed while this script is running. Please install\n"
+            " a more recent version first, using 'easy_install -U setuptools'."
+            "\n\n(Currently using %r)"
+            ) % (version, e.args[0])
+            sys.exit(2)
+    except pkg_resources.DistributionNotFound:
+        pass
+
+    del pkg_resources, sys.modules['pkg_resources']    # reload ok
+    return do_download()
+
+def download_setuptools(
+    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
+    delay = 15
+):
+    """Download setuptools from a specified location and return its filename
+
+    `version` should be a valid setuptools version number that is available
+    as an egg for download under the `download_base` URL (which should end
+    with a '/'). `to_dir` is the directory where the egg will be downloaded.
+    `delay` is the number of seconds to pause before an actual download attempt.
+    """
+    import urllib2, shutil
+    egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
+    url = download_base + egg_name
+    saveto = os.path.join(to_dir, egg_name)
+    src = dst = None
+    if not os.path.exists(saveto):  # Avoid repeated downloads
+        try:
+            from distutils import log
+            if delay:
+                log.warn("""
+---------------------------------------------------------------------------
+This script requires setuptools version %s to run (even to display
+help).  I will attempt to download it for you (from
+%s), but
+you may need to enable firewall access for this script first.
+I will start the download in %d seconds.
+
+(Note: if this machine does not have network access, please obtain the file
+
+   %s
+
+and place it in this directory before rerunning this script.)
+---------------------------------------------------------------------------""",
+                    version, download_base, delay, url
+                ); from time import sleep; sleep(delay)
+            log.warn("Downloading %s", url)
+            src = urllib2.urlopen(url)
+            # Read/write all in one block, so we don't create a corrupt file
+            # if the download is interrupted.
+            data = _validate_md5(egg_name, src.read())
+            dst = open(saveto,"wb"); dst.write(data)
+        finally:
+            if src: src.close()
+            if dst: dst.close()
+    return os.path.realpath(saveto)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def main(argv, version=DEFAULT_VERSION):
+    """Install or upgrade setuptools and EasyInstall"""
+    try:
+        import setuptools
+    except ImportError:
+        egg = None
+        try:
+            egg = download_setuptools(version, delay=0)
+            sys.path.insert(0,egg)
+            from setuptools.command.easy_install import main
+            return main(list(argv)+[egg])   # we're done here
+        finally:
+            if egg and os.path.exists(egg):
+                os.unlink(egg)
+    else:
+        if setuptools.__version__ == '0.0.1':
+            print >>sys.stderr, (
+            "You have an obsolete version of setuptools installed.  Please\n"
+            "remove it from your system entirely before rerunning this script."
+            )
+            sys.exit(2)
+
+    req = "setuptools>="+version
+    import pkg_resources
+    try:
+        pkg_resources.require(req)
+    except pkg_resources.VersionConflict:
+        try:
+            from setuptools.command.easy_install import main
+        except ImportError:
+            from easy_install import main
+        main(list(argv)+[download_setuptools(delay=0)])
+        sys.exit(0) # try to force an exit
+    else:
+        if argv:
+            from setuptools.command.easy_install import main
+            main(argv)
+        else:
+            print "Setuptools version",version,"or greater has been installed."
+            print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
+
+def update_md5(filenames):
+    """Update our built-in md5 registry"""
+
+    import re
+
+    for name in filenames:
+        base = os.path.basename(name)
+        f = open(name,'rb')
+        md5_data[base] = md5(f.read()).hexdigest()
+        f.close()
+
+    data = ["    %r: %r,\n" % it for it in md5_data.items()]
+    data.sort()
+    repl = "".join(data)
+
+    import inspect
+    srcfile = inspect.getsourcefile(sys.modules[__name__])
+    f = open(srcfile, 'rb'); src = f.read(); f.close()
+
+    match = re.search("\nmd5_data = {\n([^}]+)}", src)
+    if not match:
+        print >>sys.stderr, "Internal error!"
+        sys.exit(2)
+
+    src = src[:match.start(1)] + repl + src[match.end(1):]
+    f = open(srcfile,'w')
+    f.write(src)
+    f.close()
+
+
+if __name__=='__main__':
+    if len(sys.argv)>2 and sys.argv[1]=='--md5update':
+        update_md5(sys.argv[2:])
+    else:
+        main(sys.argv[1:])
+
+
+
+
+
+

=== added file 'setup.py'
--- setup.py	1970-01-01 00:00:00 +0000
+++ setup.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,39 @@
+# Copyright (C) 2012 by the Free Software Foundation, Inc.
+#
+# This file is part of Postorius.
+#
+# Postorius is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# Postorius is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+# for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Postorius.  If not, see <http://www.gnu.org/licenses/>.
+
+import ez_setup
+ez_setup.use_setuptools()
+
+from setuptools import setup, find_packages
+
+setup(
+    name = "postorius",
+    version = '1.0.0a1',
+    description = "A web user interface for GNU Mailman",
+    long_description=open('README.rst').read(),
+    maintainer = "The Mailman GSOC Coders",
+    license = 'GPLv3',
+    keywords = 'email mailman django',
+    url = "https://launchpad.net/postorius",
+    classifiers = [
+        "Programming Language :: Python",
+        ],
+    packages = find_packages('src'),
+    package_dir = {'': 'src'},
+    include_package_data = True,
+    install_requires = ['django-social-auth>=0.6.7']
+)

=== renamed file 'setup.py' => 'setup.py.moved'
=== added directory 'src'
=== added directory 'src/postorius'
=== added file 'src/postorius/__init__.py'
--- src/postorius/__init__.py	1970-01-01 00:00:00 +0000
+++ src/postorius/__init__.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+#
+# This file is part of Postorius.
+#
+# Postorius is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# Postorius is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Postorius.  If not, see <http://www.gnu.org/licenses/>.
+
+__version__ = '1.0.0a1'
+

=== added directory 'src/postorius/auth'
=== added file 'src/postorius/auth/__init__.py'
=== added file 'src/postorius/context_processors.py'
--- src/postorius/context_processors.py	1970-01-01 00:00:00 +0000
+++ src/postorius/context_processors.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+#
+# This file is part of Postorius.
+#
+# Postorius is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# Postorius is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Postorius.  If not, see <http://www.gnu.org/licenses/>.
+import logging
+
+
+from django.conf import settings
+from django.utils.translation import gettext as _
+from mailman.client import Client
+from urllib2 import HTTPError
+
+
+logger = logging.getLogger(__name__)
+
+
+def postorius(request):
+    """Add template variables to context.
+    """
+    # extend_template (no page header/footer when requested via AJAX)
+    if request.is_ajax():
+        extend_template = "postorius/base_ajax.html"        
+    else:        
+        extend_template = "postorius/base.html"
+
+    return {
+        'MAILMAN_THEME': settings.MAILMAN_THEME,
+        'extend_template': extend_template,
+        }

=== added directory 'src/postorius/doc'
=== added file 'src/postorius/doc/Makefile'
--- src/postorius/doc/Makefile	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/Makefile	2012-03-29 06:09:18 +0000
@@ -0,0 +1,130 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/mailmanweb.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/mailmanweb.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/mailmanweb"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/mailmanweb"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	make -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."

=== added directory 'src/postorius/doc/_build'
=== added directory 'src/postorius/doc/_build/doctrees'
=== added file 'src/postorius/doc/_build/doctrees/environment.pickle'
Binary files src/postorius/doc/_build/doctrees/environment.pickle	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/doctrees/environment.pickle	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/doc/_build/doctrees/index.doctree'
Binary files src/postorius/doc/_build/doctrees/index.doctree	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/doctrees/index.doctree	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/doc/_build/doctrees/license.doctree'
Binary files src/postorius/doc/_build/doctrees/license.doctree	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/doctrees/license.doctree	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/doc/_build/doctrees/news.doctree'
Binary files src/postorius/doc/_build/doctrees/news.doctree	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/doctrees/news.doctree	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/doc/_build/doctrees/setup.doctree'
Binary files src/postorius/doc/_build/doctrees/setup.doctree	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/doctrees/setup.doctree	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/doc/_build/doctrees/using.doctree'
Binary files src/postorius/doc/_build/doctrees/using.doctree	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/doctrees/using.doctree	2012-03-29 06:09:18 +0000 differ
=== added directory 'src/postorius/doc/_build/html'
=== added file 'src/postorius/doc/_build/html/.buildinfo'
--- src/postorius/doc/_build/html/.buildinfo	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/.buildinfo	2012-03-29 06:09:18 +0000
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: cca8bccba816f1a79080c55d505c09f8
+tags: fbb0d17656682115ca4d033fb2f83ba1

=== added directory 'src/postorius/doc/_build/html/_sources'
=== added file 'src/postorius/doc/_build/html/_sources/acknowledgements.txt'
--- src/postorius/doc/_build/html/_sources/acknowledgements.txt	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_sources/acknowledgements.txt	2012-03-29 06:09:18 +0000
@@ -0,0 +1,37 @@
+Acknowledgements
+================
+
+Test Server
+-----------
+
+We're proud to provide you a development server which is sponsered by XXX #Todo
+Feel free to change anything you like, we can simply rest the DB from Time to Time.
+
+Missing Functionality
+---------------------
+
+* Delete Domain
+    * missing in REST
+    * implemented in mailman3 a8
+
+* Show a List of all subscribed users
+
+ACL
+---
+
+* Middleware
+
+    We don't have the Middleware which is required to work with users and it's permissions yet. For this reason we had to tweak some functions to be a hardcoded Demo object.
+
+    * Login Check
+        At the moment we're using a hardcoded List of allowed usernames and Passwords which are all stored in Plain within the AuthBackends Source File.
+    * has_perm Decorator
+        As we don't have a middleware to check for users and it's permissions we do only use one permission at the moment. The permission site domain_admin is hardcoded to user.username == "james@example.com"
+
+
+
+Ideas
+-----
+
+* ContactPage
+* 

=== added file 'src/postorius/doc/_build/html/_sources/index.txt'
--- src/postorius/doc/_build/html/_sources/index.txt	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_sources/index.txt	2012-03-29 06:09:18 +0000
@@ -0,0 +1,17 @@
+.. mailman_django documentation master file, created by
+   sphinx-quickstart on Wed Aug 17 15:43:10 2011.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to mailman_django's documentation!
+==========================================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 1
+   
+   news.rst
+   setup.rst
+   using.rst
+

=== added file 'src/postorius/doc/_build/html/_sources/license.txt'
--- src/postorius/doc/_build/html/_sources/license.txt	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_sources/license.txt	2012-03-29 06:09:18 +0000
@@ -0,0 +1,34 @@
+Contributions:
+==============
+Mailman is licensed unter *GPL*
+-----------------------------
+Copyright (C) 1998-2010 by the Free Software Foundation, Inc.
+
+This file is part of GNU Mailman.
+
+GNU Mailman is free software: you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation, either version 3 of the License, or (at your option)
+any later version.
+
+GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+more details.
+
+You should have received a copy of the GNU General Public License along with
+GNU Mailman.  If not, see <http://www.gnu.org/licenses/>.
+
+RRZE Icon Set
+-------------
+
+**CreativeCommons Licence**
+
+The RRZE Icon Set is licenced under a Creative Commons Licence.
+Please see the website for the current licence text.
+
+More information about the Project could be found here:
+http://rrze-icon-set.berlios.de/licence.html
+
+Special thanks to:
+* Franziska Sponsel (created additional Icons specially for our Project)

=== added file 'src/postorius/doc/_build/html/_sources/news.txt'
--- src/postorius/doc/_build/html/_sources/news.txt	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_sources/news.txt	2012-03-29 06:09:18 +0000
@@ -0,0 +1,43 @@
+====
+News
+====
+
+Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+
+The postorius Django app provides a web user interface to
+access GNU Mailman. 
+
+postorius is free software: you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation, version 3 of the License.
+
+postorius is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
+General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with postorius. If not, see <http://www.gnu.org/licenses/>.
+
+
+1.0 alpha 1 -- "Space Farm"
+===========================
+(2012-03-23)
+
+Many thanks go out to Anna Senarclens de Grancy and Benedict Stein for
+developing the initial versions of this Django app during the Google Summer of
+Code 2010 and 2011. 
+
+* add/remove/edit mailing lists
+* edit list settings
+* show all mailing lists on server
+* subscribe/unsubscribe/mass subscribe mailing lists
+* add/remove domains
+* show basic list info and metrics
+* login using django user account or using BrowserID
+* show basic user profile
+* accept/discard/reject/defer messages
+* Implementation of Django Messages contributed by Benedict Stein (LP: #920084)
+* Dependency check in setup.py contributed by Daniel Mizyrycki
+* Proper processing of acceptable aliases in list settings form contributed by
+  Daniel Mizyrycki

=== added file 'src/postorius/doc/_build/html/_sources/setup.txt'
--- src/postorius/doc/_build/html/_sources/setup.txt	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_sources/setup.txt	2012-03-29 06:09:18 +0000
@@ -0,0 +1,202 @@
+Installation
+============
+
+    .. warning::
+        This installation guide is outdated and needs to be updated.
+        Please use the following resources instead:
+
+        To install GNU Mailman follow the instructions in the documentation:
+        http://packages.python.org/mailman/
+
+        A description how to run postorius on Django's dev server, can be found in 
+        the GNU Mailman wiki: 
+        http://wiki.list.org/display/DEV/A+5+minute+guide+to+get+the+Mailman+web+UI+running
+
+        You can also find a guide how to run postorius using the Apache web server
+        on the Mailman wiki:
+        http://wiki.list.org/display/DEV/How+to+get+Postorius+running+on+Apache+and+mod_wsgi
+
+Mailman3 - a7
+-------------
+ 
+* Check Dependecys
+    .. note::
+        This might differ on different systems - I was testing Ubuntu 11.04 natty and needed to install Postfix before running the installation.
+* Download or branch Mailman3a7 from http://launchpad.net/mailman/3.0/3.0.0a7/+download/mailman-3.0.0a7.tar.gz and unpack it.
+* Change into the unpacked DIR which might be named "mailman-3.0.0a7"
+    .. note::
+        Please be aware that the following steps only work if you're really in that DIR. If you consider adding a subfolder name to the commands those woun't work !
+* Run the Installation from a Shell (not Python)
+
+    .. code-block:: bash
+
+        $ python bootstrap.py
+        $ bin/buildout
+    
+* Vertify that everything was setup correclty and your branch fullfills the version requirements by running it's own test module
+
+    .. code-block:: bash
+    
+        $ bin/test
+        
+* Now you're able to run mailman using
+
+    .. code-block:: bash
+    
+        $ bin/mailman
+    
+Mailman Client / REST Api
+-------------------------
+
+Next thing you need to do is installing the Plugin used for communication with non-mailman-code parts like our WebUI. Within the Client Branch we've put both, Classes to access the Core which are run as a Plugin and some Python Bindings.
+The Python Bindings were used later on within our Django Application to access the Server. Failing to install the Client would result in an offline version of WebUI
+
+Once again start by branching the code which is on Launchpad
+
+    .. code-block:: bash
+    
+        $ bzr branch lp:mailman.client
+
+.. note::
+    We've successfully tested our functionality with Revision 16 - In case the Client gets updated which it surely will in future we can't guarentee that it is compatible anymore.
+    
+As you only want to run the Client and not modify it's code you're fine with running the install command from within the directory. At the moment this requires Sudo Priveledges as files will copied to the Python Site-Packages Directory which is available to all users.
+
+    .. code-block:: bash
+    
+        $ sudo python setup.py install
+
+.. note::
+    If you want to change parts of the Client you can use the development option which will create a Symlink instead of a Hardcopy of all files:
+
+    .. code-block:: bash
+    
+        $ sudo python setup.py develop
+
+All changes will apply once you restart Mailman itself.
+
+Django 1.3
+----------
+During our development we started a Django Site based on the 1.2 Version which is included into Ubuntu's repositorys. This made the installation easy but we ended up having some points which would get a much better code when using some elements introducing in 1.3.
+As Mailman is supposed to be long-time stable - or however you call it - we decided that we should stick to the latest stable version right away. For this reason you're required to install Django 1.3+ which is descriped on their Website. (https://www.djangoproject.com/download/)
+
+.. note::
+    Please be Aware that it's not recommended to run both 1.2 and 1.3 at the same time
+    
+In Django you've got 3 different levels of data.
+- Django Installation Files
+- Django Site
+- Django Apps
+usually you don't see the Installation as it's hidden somewhere within the System and the Apps are simply included into The Site Directory.
+As we wanted to have the possibility to include the App into any Django Site which might already exist we decided to keep Site and App seperated.
+
+During GSoC we've used different branches for this:
+- lp:mailmanwebgsoc2011
+- lp:mailmanwebgsoc2011/django-site-0.1
+
+Django Site Installation
+------------------------
+
+We've created this branch for quick development - everyone is free to use his own Django site, but this one already includes a couple of modifications we've made that will allow running the Development Server just a few seconds after Branching both Site and App.
+
+As far as I know at the moment we've made the following alignments: (All of these are in the settings.py file of the Django Site)
+
+    REST_SERVER = 'localhost:8001'
+    API_USER = 'restadmin' 
+    API_PASS = 'restpass'
+    
+    .. note::
+        These are the default values used by the Mailman Client we've installed earlier. Feel free to modify the password and username if you need to.
+
+MAILMAN_TEST_BINDIR = '/home/benste/Projects/Gsoc_mailman/mailman-3.0.0a7/bin'
+#/home/florian/Development/mailman/bin'
+
+    .. note:: Running the test modules requires to launch a special version of mailman with it's own testing DB otherwise you'd destroy you're sites content during testing. This Path needs to point to YOUR own installation of mailman.
+
+MAILMAN_THEME = "default"
+
+    .. note:: 
+        We decided to allow simple Appearance Modifications, to use a custom CSS you could simply add a Directory within the media directory of the app and Link it's name here. All HTML Pages will use the Styles from the Directory mentioned in here
+
+PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
+MEDIA_ROOT =  os.path.join(os.path.split(PROJECT_PATH)[0], "mailman_django/media/mailman_django/")
+    .. note:: 
+        Absolute path to the directory that holds media.
+        Example: "/home/media/media.lawrence.com/"
+
+MEDIA_URL = '/mailman_media/'
+
+    .. note::
+        URL that handles the media served from MEDIA_ROOT. Make sure to use a trailing slash if there is a path component (optional in other cases).Examples: "http://media.lawrence.com", "http://example.com/media/"
+
+AUTHENTICATION_BACKENDS = (
+    'mailman_django.auth.restbackend.RESTBackend',
+    'django.contrib.auth.backends.ModelBackend'
+    )
+
+    .. note::
+        This creates a connection in between Djangos Login and Permission Decorators which we use for authentification and a custom Backend which we created in Preparation to work together with the REST API or an upcoming Middleware.
+        You need to keep the Django one for testing fallback.
+    
+TEMPLATE_CONTEXT_PROCESSORS=(
+    "django.contrib.auth.context_processors.auth",
+    "django.core.context_processors.debug",
+    "django.core.context_processors.i18n",
+    "django.core.context_processors.media",
+    "django.core.context_processors.csrf",
+    "django.contrib.messages.context_processors.messages",
+    "mailman_django.context_processors.lists_of_domain",
+    "mailman_django.context_processors.render_MAILMAN_THEME",
+    "mailman_django.context_processors.extend_ajax"
+
+    .. note::
+        We're using Context Processors to easily render value which we need in nearly every view.
+    
+ROOT_URLCONF = 'mailman_django.urls'
+
+    .. note::
+        This is where our URL Config is - if you run your own site with other Apps as well you might want to adjust this to your urls.py which includes our file.
+
+TEMPLATE_DIRS = (
+    os.path.join(PROJECT_PATH, "mailman_django/templates"),        
+
+    .. note::
+        Adds our own Templates   
+    
+INSTALLED_APPS = (
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'django.contrib.admin',
+    'mailman_django',
+
+    .. note::
+        Makes sure that Django knows about our directory as an App and creates needed Tables () when running
+
+    .. code-block:: bash
+    
+        $ python manage.py syncdb
+
+Now that you know about all these you might start the development server. As usual in Django this is done by running
+
+    .. code-block:: bash
+    
+        $ python manage.py runserver
+
+within the Django Site Directory - as usual the default address is localhost:8000
+Of course it will only be able to start once our app is in place as well.
+
+Django Application
+------------------
+First get the files, and make sure you paste them into your Project directory and adjust it's name to the appropriate configuration you've made earlier in the Django Site. Remeber our default is mailman_django
+
+    .. code-block:: bash
+    
+        $ bzr branch lp:mailmanwebgsoc2011
+
+.. note:: 
+    We've tested Revision 172
+    
+.. note::
+    We're planning to ease up installation by creating an egg    

=== added file 'src/postorius/doc/_build/html/_sources/using.txt'
--- src/postorius/doc/_build/html/_sources/using.txt	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_sources/using.txt	2012-03-29 06:09:18 +0000
@@ -0,0 +1,32 @@
+Using the Django App - Developers Resource
+==========================================
+
+.. warning::
+    This user guide is outdated and needs to be updated.
+
+.. automodule:: tests.tests
+
+Running the tests explained above.
+----------------------------------
+We've added our own test-suite to the Django App which will be executed together with the Django Test. Last thing you should do is running these tests. If they fail you did something wrong, if they succeed you can enjoy the site.
+
+Run the following in the Site Directory
+
+    .. code-block:: bash
+    
+        $ python manage.py test
+
+.. note::
+    Please be aware that we want to run a development instance of mailman you need to stop the stable one first and the tests will open it's own mailman temporily.
+
+Accessing the REST Client for Testing
+-------------------------------------
+
+If you want to access the Functions, which we use in the views, directly feel free to run the following block of code within a Shell which does have it's current Directory within the Django Site Directory.
+
+    .. code-block:: python
+    
+        from settings import API_USER, API_PASS
+        from mailman.client import Client
+        c = Client('http://localhost:8001/3.0', API_USER, API_PASS)
+        #DEBUG: Python Session

=== added directory 'src/postorius/doc/_build/html/_static'
=== added file 'src/postorius/doc/_build/html/_static/basic.css'
--- src/postorius/doc/_build/html/_static/basic.css	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_static/basic.css	2012-03-29 06:09:18 +0000
@@ -0,0 +1,528 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+img {
+    border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    clear: both;
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, .highlighted {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.refcount {
+    color: #060;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+tt.descclassname {
+    background-color: transparent;
+}
+
+tt.xref, a tt {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}

=== added file 'src/postorius/doc/_build/html/_static/default.css'
--- src/postorius/doc/_build/html/_static/default.css	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_static/default.css	2012-03-29 06:09:18 +0000
@@ -0,0 +1,256 @@
+/*
+ * default.css_t
+ * ~~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- default theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+    font-family: sans-serif;
+    font-size: 100%;
+    background-color: #11303d;
+    color: #000;
+    margin: 0;
+    padding: 0;
+}
+
+div.document {
+    background-color: #1c4e63;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+div.body {
+    background-color: #ffffff;
+    color: #000000;
+    padding: 0 20px 30px 20px;
+}
+
+div.footer {
+    color: #ffffff;
+    width: 100%;
+    padding: 9px 0 9px 0;
+    text-align: center;
+    font-size: 75%;
+}
+
+div.footer a {
+    color: #ffffff;
+    text-decoration: underline;
+}
+
+div.related {
+    background-color: #133f52;
+    line-height: 30px;
+    color: #ffffff;
+}
+
+div.related a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.4em;
+    font-weight: normal;
+    margin: 0;
+    padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.3em;
+    font-weight: normal;
+    margin: 5px 0 0 0;
+    padding: 0;
+}
+
+div.sphinxsidebar p {
+    color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+    margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px;
+    padding: 0;
+    color: #ffffff;
+}
+
+div.sphinxsidebar a {
+    color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+
+
+/* -- hyperlink styles ------------------------------------------------------ */
+
+a {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:visited {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+
+
+/* -- body styles ----------------------------------------------------------- */
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: 'Trebuchet MS', sans-serif;
+    background-color: #f2f2f2;
+    font-weight: normal;
+    color: #20435c;
+    border-bottom: 1px solid #ccc;
+    margin: 20px -20px 10px -20px;
+    padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.admonition p {
+    margin-bottom: 5px;
+}
+
+div.admonition pre {
+    margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+    margin-bottom: 5px;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+
+div.topic {
+    background-color: #eee;
+}
+
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+
+p.admonition-title {
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+pre {
+    padding: 5px;
+    background-color: #eeffcc;
+    color: #333333;
+    line-height: 120%;
+    border: 1px solid #ac9;
+    border-left: none;
+    border-right: none;
+}
+
+tt {
+    background-color: #ecf0f3;
+    padding: 0 1px 0 1px;
+    font-size: 0.95em;
+}
+
+th {
+    background-color: #ede;
+}
+
+.warning tt {
+    background: #efc2c2;
+}
+
+.note tt {
+    background: #d6d6d6;
+}
+
+.viewcode-back {
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+}
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/_static/doctools.js'
--- src/postorius/doc/_build/html/_static/doctools.js	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_static/doctools.js	2012-03-29 06:09:18 +0000
@@ -0,0 +1,247 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilties for all documentation.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+    "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+}
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s == 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+};
+
+/**
+ * small function to check if an array contains
+ * a given item.
+ */
+jQuery.contains = function(arr, item) {
+  for (var i = 0; i < arr.length; i++) {
+    if (arr[i] == item)
+      return true;
+  }
+  return false;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node) {
+    if (node.nodeType == 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+        var span = document.createElement("span");
+        span.className = className;
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this);
+      });
+    }
+  }
+  return this.each(function() {
+    highlight(this);
+  });
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initIndexTable();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated == 'undefined')
+      return string;
+    return (typeof translated == 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated == 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlighted');
+        });
+      }, 10);
+      $('<li class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></li>')
+          .appendTo($('.sidebar .this-page-menu'));
+    }
+  },
+
+  /**
+   * init the domain index toggle buttons
+   */
+  initIndexTable : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      $('tr.cg-' + idnum).toggle();
+      if (src.substr(-9) == 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('.sidebar .this-page-menu li.highlight-link').fadeOut(300);
+    $('span.highlighted').removeClass('highlighted');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this == '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});

=== added file 'src/postorius/doc/_build/html/_static/file.png'
Binary files src/postorius/doc/_build/html/_static/file.png	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/html/_static/file.png	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/doc/_build/html/_static/jquery.js'
--- src/postorius/doc/_build/html/_static/jquery.js	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_static/jquery.js	2012-03-29 06:09:18 +0000
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);

=== added file 'src/postorius/doc/_build/html/_static/minus.png'
Binary files src/postorius/doc/_build/html/_static/minus.png	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/html/_static/minus.png	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/doc/_build/html/_static/plus.png'
Binary files src/postorius/doc/_build/html/_static/plus.png	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/html/_static/plus.png	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/doc/_build/html/_static/pygments.css'
--- src/postorius/doc/_build/html/_static/pygments.css	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_static/pygments.css	2012-03-29 06:09:18 +0000
@@ -0,0 +1,62 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #303030 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0040D0 } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/_static/searchtools.js'
--- src/postorius/doc/_build/html/_static/searchtools.js	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_static/searchtools.js	2012-03-29 06:09:18 +0000
@@ -0,0 +1,518 @@
+/*
+ * searchtools.js
+ * ~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilties for the full-text search.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words, hlwords is the list of normal, unstemmed
+ * words. the first one is used to find the occurance, the
+ * latter for highlighting it.
+ */
+
+jQuery.makeSearchSummary = function(text, keywords, hlwords) {
+  var textLower = text.toLowerCase();
+  var start = 0;
+  $.each(keywords, function() {
+    var i = textLower.indexOf(this.toLowerCase());
+    if (i > -1)
+      start = i;
+  });
+  start = Math.max(start - 120, 0);
+  var excerpt = ((start > 0) ? '...' : '') +
+  $.trim(text.substr(start, 240)) +
+  ((start + 240 - text.length) ? '...' : '');
+  var rv = $('<div class="context"></div>').text(excerpt);
+  $.each(hlwords, function() {
+    rv = rv.highlightText(this, 'highlighted');
+  });
+  return rv;
+}
+
+/**
+ * Porter Stemmer
+ */
+var PorterStemmer = function() {
+
+  var step2list = {
+    ational: 'ate',
+    tional: 'tion',
+    enci: 'ence',
+    anci: 'ance',
+    izer: 'ize',
+    bli: 'ble',
+    alli: 'al',
+    entli: 'ent',
+    eli: 'e',
+    ousli: 'ous',
+    ization: 'ize',
+    ation: 'ate',
+    ator: 'ate',
+    alism: 'al',
+    iveness: 'ive',
+    fulness: 'ful',
+    ousness: 'ous',
+    aliti: 'al',
+    iviti: 'ive',
+    biliti: 'ble',
+    logi: 'log'
+  };
+
+  var step3list = {
+    icate: 'ic',
+    ative: '',
+    alize: 'al',
+    iciti: 'ic',
+    ical: 'ic',
+    ful: '',
+    ness: ''
+  };
+
+  var c = "[^aeiou]";          // consonant
+  var v = "[aeiouy]";          // vowel
+  var C = c + "[^aeiouy]*";    // consonant sequence
+  var V = v + "[aeiou]*";      // vowel sequence
+
+  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
+  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
+  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
+  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
+
+  this.stemWord = function (w) {
+    var stem;
+    var suffix;
+    var firstch;
+    var origword = w;
+
+    if (w.length < 3)
+      return w;
+
+    var re;
+    var re2;
+    var re3;
+    var re4;
+
+    firstch = w.substr(0,1);
+    if (firstch == "y")
+      w = firstch.toUpperCase() + w.substr(1);
+
+    // Step 1a
+    re = /^(.+?)(ss|i)es$/;
+    re2 = /^(.+?)([^s])s$/;
+
+    if (re.test(w))
+      w = w.replace(re,"$1$2");
+    else if (re2.test(w))
+      w = w.replace(re2,"$1$2");
+
+    // Step 1b
+    re = /^(.+?)eed$/;
+    re2 = /^(.+?)(ed|ing)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      re = new RegExp(mgr0);
+      if (re.test(fp[1])) {
+        re = /.$/;
+        w = w.replace(re,"");
+      }
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1];
+      re2 = new RegExp(s_v);
+      if (re2.test(stem)) {
+        w = stem;
+        re2 = /(at|bl|iz)$/;
+        re3 = new RegExp("([^aeiouylsz])\\1$");
+        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+        if (re2.test(w))
+          w = w + "e";
+        else if (re3.test(w)) {
+          re = /.$/;
+          w = w.replace(re,"");
+        }
+        else if (re4.test(w))
+          w = w + "e";
+      }
+    }
+
+    // Step 1c
+    re = /^(.+?)y$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(s_v);
+      if (re.test(stem))
+        w = stem + "i";
+    }
+
+    // Step 2
+    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step2list[suffix];
+    }
+
+    // Step 3
+    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step3list[suffix];
+    }
+
+    // Step 4
+    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+    re2 = /^(.+?)(s|t)(ion)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      if (re.test(stem))
+        w = stem;
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1] + fp[2];
+      re2 = new RegExp(mgr1);
+      if (re2.test(stem))
+        w = stem;
+    }
+
+    // Step 5
+    re = /^(.+?)e$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      re2 = new RegExp(meq1);
+      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+        w = stem;
+    }
+    re = /ll$/;
+    re2 = new RegExp(mgr1);
+    if (re.test(w) && re2.test(w)) {
+      re = /.$/;
+      w = w.replace(re,"");
+    }
+
+    // and turn initial Y back to y
+    if (firstch == "y")
+      w = firstch.toLowerCase() + w.substr(1);
+    return w;
+  }
+}
+
+
+/**
+ * Search Module
+ */
+var Search = {
+
+  _index : null,
+  _queued_query : null,
+  _pulse_status : -1,
+
+  init : function() {
+      var params = $.getQueryParameters();
+      if (params.q) {
+          var query = params.q[0];
+          $('input[name="q"]')[0].value = query;
+          this.performSearch(query);
+      }
+  },
+
+  loadIndex : function(url) {
+    $.ajax({type: "GET", url: url, data: null, success: null,
+            dataType: "script", cache: true});
+  },
+
+  setIndex : function(index) {
+    var q;
+    this._index = index;
+    if ((q = this._queued_query) !== null) {
+      this._queued_query = null;
+      Search.query(q);
+    }
+  },
+
+  hasIndex : function() {
+      return this._index !== null;
+  },
+
+  deferQuery : function(query) {
+      this._queued_query = query;
+  },
+
+  stopPulse : function() {
+      this._pulse_status = 0;
+  },
+
+  startPulse : function() {
+    if (this._pulse_status >= 0)
+        return;
+    function pulse() {
+      Search._pulse_status = (Search._pulse_status + 1) % 4;
+      var dotString = '';
+      for (var i = 0; i < Search._pulse_status; i++)
+        dotString += '.';
+      Search.dots.text(dotString);
+      if (Search._pulse_status > -1)
+        window.setTimeout(pulse, 500);
+    };
+    pulse();
+  },
+
+  /**
+   * perform a search for something
+   */
+  performSearch : function(query) {
+    // create the required interface elements
+    this.out = $('#search-results');
+    this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+    this.dots = $('<span></span>').appendTo(this.title);
+    this.status = $('<p style="display: none"></p>').appendTo(this.out);
+    this.output = $('<ul class="search"/>').appendTo(this.out);
+
+    $('#search-progress').text(_('Preparing search...'));
+    this.startPulse();
+
+    // index already loaded, the browser was quick!
+    if (this.hasIndex())
+      this.query(query);
+    else
+      this.deferQuery(query);
+  },
+
+  query : function(query) {
+    var stopwords = ['and', 'then', 'into', 'it', 'as', 'are', 'in',
+                     'if', 'for', 'no', 'there', 'their', 'was', 'is',
+                     'be', 'to', 'that', 'but', 'they', 'not', 'such',
+                     'with', 'by', 'a', 'on', 'these', 'of', 'will',
+                     'this', 'near', 'the', 'or', 'at'];
+
+    // stem the searchterms and add them to the correct list
+    var stemmer = new PorterStemmer();
+    var searchterms = [];
+    var excluded = [];
+    var hlterms = [];
+    var tmp = query.split(/\s+/);
+    var object = (tmp.length == 1) ? tmp[0].toLowerCase() : null;
+    for (var i = 0; i < tmp.length; i++) {
+      if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
+          tmp[i] == "") {
+        // skip this "word"
+        continue;
+      }
+      // stem the word
+      var word = stemmer.stemWord(tmp[i]).toLowerCase();
+      // select the correct list
+      if (word[0] == '-') {
+        var toAppend = excluded;
+        word = word.substr(1);
+      }
+      else {
+        var toAppend = searchterms;
+        hlterms.push(tmp[i].toLowerCase());
+      }
+      // only add if not already in the list
+      if (!$.contains(toAppend, word))
+        toAppend.push(word);
+    };
+    var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+    // console.debug('SEARCH: searching for:');
+    // console.info('required: ', searchterms);
+    // console.info('excluded: ', excluded);
+
+    // prepare search
+    var filenames = this._index.filenames;
+    var titles = this._index.titles;
+    var terms = this._index.terms;
+    var objects = this._index.objects;
+    var objtypes = this._index.objtypes;
+    var objnames = this._index.objnames;
+    var fileMap = {};
+    var files = null;
+    // different result priorities
+    var importantResults = [];
+    var objectResults = [];
+    var regularResults = [];
+    var unimportantResults = [];
+    $('#search-progress').empty();
+
+    // lookup as object
+    if (object != null) {
+      for (var prefix in objects) {
+        for (var name in objects[prefix]) {
+          var fullname = (prefix ? prefix + '.' : '') + name;
+          if (fullname.toLowerCase().indexOf(object) > -1) {
+            match = objects[prefix][name];
+            descr = objnames[match[1]] + _(', in ') + titles[match[0]];
+            // XXX the generated anchors are not generally correct
+            // XXX there may be custom prefixes
+            result = [filenames[match[0]], fullname, '#'+fullname, descr];
+            switch (match[2]) {
+            case 1: objectResults.push(result); break;
+            case 0: importantResults.push(result); break;
+            case 2: unimportantResults.push(result); break;
+            }
+          }
+        }
+      }
+    }
+
+    // sort results descending
+    objectResults.sort(function(a, b) {
+      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+    });
+
+    importantResults.sort(function(a, b) {
+      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+    });
+
+    unimportantResults.sort(function(a, b) {
+      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+    });
+
+
+    // perform the search on the required terms
+    for (var i = 0; i < searchterms.length; i++) {
+      var word = searchterms[i];
+      // no match but word was a required one
+      if ((files = terms[word]) == null)
+        break;
+      if (files.length == undefined) {
+        files = [files];
+      }
+      // create the mapping
+      for (var j = 0; j < files.length; j++) {
+        var file = files[j];
+        if (file in fileMap)
+          fileMap[file].push(word);
+        else
+          fileMap[file] = [word];
+      }
+    }
+
+    // now check if the files don't contain excluded terms
+    for (var file in fileMap) {
+      var valid = true;
+
+      // check if all requirements are matched
+      if (fileMap[file].length != searchterms.length)
+        continue;
+
+      // ensure that none of the excluded terms is in the
+      // search result.
+      for (var i = 0; i < excluded.length; i++) {
+        if (terms[excluded[i]] == file ||
+            $.contains(terms[excluded[i]] || [], file)) {
+          valid = false;
+          break;
+        }
+      }
+
+      // if we have still a valid result we can add it
+      // to the result list
+      if (valid)
+        regularResults.push([filenames[file], titles[file], '', null]);
+    }
+
+    // delete unused variables in order to not waste
+    // memory until list is retrieved completely
+    delete filenames, titles, terms;
+
+    // now sort the regular results descending by title
+    regularResults.sort(function(a, b) {
+      var left = a[1].toLowerCase();
+      var right = b[1].toLowerCase();
+      return (left > right) ? -1 : ((left < right) ? 1 : 0);
+    });
+
+    // combine all results
+    var results = unimportantResults.concat(regularResults)
+      .concat(objectResults).concat(importantResults);
+
+    // print the results
+    var resultCount = results.length;
+    function displayNextItem() {
+      // results left, load the summary and display it
+      if (results.length) {
+        var item = results.pop();
+        var listItem = $('<li style="display:none"></li>');
+        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
+          // dirhtml builder
+          var dirname = item[0] + '/';
+          if (dirname.match(/\/index\/$/)) {
+            dirname = dirname.substring(0, dirname.length-6);
+          } else if (dirname == 'index/') {
+            dirname = '';
+          }
+          listItem.append($('<a/>').attr('href',
+            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+            highlightstring + item[2]).html(item[1]));
+        } else {
+          // normal html builders
+          listItem.append($('<a/>').attr('href',
+            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+            highlightstring + item[2]).html(item[1]));
+        }
+        if (item[3]) {
+          listItem.append($('<span> (' + item[3] + ')</span>'));
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+          $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
+                item[0] + '.txt', function(data) {
+            if (data != '') {
+              listItem.append($.makeSearchSummary(data, searchterms, hlterms));
+              Search.output.append(listItem);
+            }
+            listItem.slideDown(5, function() {
+              displayNextItem();
+            });
+          });
+        } else {
+          // no source available, just display title
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        }
+      }
+      // search finished, update title and status message
+      else {
+        Search.stopPulse();
+        Search.title.text(_('Search Results'));
+        if (!resultCount)
+          Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+        else
+            Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+        Search.status.fadeIn(500);
+      }
+    }
+    displayNextItem();
+  }
+}
+
+$(document).ready(function() {
+  Search.init();
+});

=== added file 'src/postorius/doc/_build/html/_static/sidebar.js'
--- src/postorius/doc/_build/html/_static/sidebar.js	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_static/sidebar.js	2012-03-29 06:09:18 +0000
@@ -0,0 +1,148 @@
+/*
+ * sidebar.js
+ * ~~~~~~~~~~
+ *
+ * This script makes the Sphinx sidebar collapsible.
+ *
+ * .sphinxsidebar contains .sphinxsidebarwrapper.  This script adds
+ * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
+ * used to collapse and expand the sidebar.
+ *
+ * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
+ * and the width of the sidebar and the margin-left of the document
+ * are decreased. When the sidebar is expanded the opposite happens.
+ * This script saves a per-browser/per-session cookie used to
+ * remember the position of the sidebar among the pages.
+ * Once the browser is closed the cookie is deleted and the position
+ * reset to the default (expanded).
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+$(function() {
+  // global elements used by the functions.
+  // the 'sidebarbutton' element is defined as global after its
+  // creation, in the add_sidebar_button function
+  var bodywrapper = $('.bodywrapper');
+  var sidebar = $('.sphinxsidebar');
+  var sidebarwrapper = $('.sphinxsidebarwrapper');
+
+  // original margin-left of the bodywrapper and width of the sidebar
+  // with the sidebar expanded
+  var bw_margin_expanded = bodywrapper.css('margin-left');
+  var ssb_width_expanded = sidebar.width();
+
+  // margin-left of the bodywrapper and width of the sidebar
+  // with the sidebar collapsed
+  var bw_margin_collapsed = '.8em';
+  var ssb_width_collapsed = '.8em';
+
+  // colors used by the current theme
+  var dark_color = $('.related').css('background-color');
+  var light_color = $('.document').css('background-color');
+
+  function sidebar_is_collapsed() {
+    return sidebarwrapper.is(':not(:visible)');
+  }
+
+  function toggle_sidebar() {
+    if (sidebar_is_collapsed())
+      expand_sidebar();
+    else
+      collapse_sidebar();
+  }
+
+  function collapse_sidebar() {
+    sidebarwrapper.hide();
+    sidebar.css('width', ssb_width_collapsed);
+    bodywrapper.css('margin-left', bw_margin_collapsed);
+    sidebarbutton.css({
+        'margin-left': '0',
+        'height': bodywrapper.height()
+    });
+    sidebarbutton.find('span').text('»');
+    sidebarbutton.attr('title', _('Expand sidebar'));
+    document.cookie = 'sidebar=collapsed';
+  }
+
+  function expand_sidebar() {
+    bodywrapper.css('margin-left', bw_margin_expanded);
+    sidebar.css('width', ssb_width_expanded);
+    sidebarwrapper.show();
+    sidebarbutton.css({
+        'margin-left': ssb_width_expanded-12,
+        'height': bodywrapper.height()
+    });
+    sidebarbutton.find('span').text('«');
+    sidebarbutton.attr('title', _('Collapse sidebar'));
+    document.cookie = 'sidebar=expanded';
+  }
+
+  function add_sidebar_button() {
+    sidebarwrapper.css({
+        'float': 'left',
+        'margin-right': '0',
+        'width': ssb_width_expanded - 28
+    });
+    // create the button
+    sidebar.append(
+        '<div id="sidebarbutton"><span>&laquo;</span></div>'
+    );
+    var sidebarbutton = $('#sidebarbutton');
+    light_color = sidebarbutton.css('background-color');
+    // find the height of the viewport to center the '<<' in the page
+    var viewport_height;
+    if (window.innerHeight)
+ 	  viewport_height = window.innerHeight;
+    else
+	  viewport_height = $(window).height();
+    sidebarbutton.find('span').css({
+        'display': 'block',
+        'margin-top': (viewport_height - sidebar.position().top - 20) / 2
+    });
+
+    sidebarbutton.click(toggle_sidebar);
+    sidebarbutton.attr('title', _('Collapse sidebar'));
+    sidebarbutton.css({
+        'color': '#FFFFFF',
+        'border-left': '1px solid ' + dark_color,
+        'font-size': '1.2em',
+        'cursor': 'pointer',
+        'height': bodywrapper.height(),
+        'padding-top': '1px',
+        'margin-left': ssb_width_expanded - 12
+    });
+
+    sidebarbutton.hover(
+      function () {
+          $(this).css('background-color', dark_color);
+      },
+      function () {
+          $(this).css('background-color', light_color);
+      }
+    );
+  }
+
+  function set_position_from_cookie() {
+    if (!document.cookie)
+      return;
+    var items = document.cookie.split(';');
+    for(var k=0; k<items.length; k++) {
+      var key_val = items[k].split('=');
+      var key = key_val[0];
+      if (key == 'sidebar') {
+        var value = key_val[1];
+        if ((value == 'collapsed') && (!sidebar_is_collapsed()))
+          collapse_sidebar();
+        else if ((value == 'expanded') && (sidebar_is_collapsed()))
+          expand_sidebar();
+      }
+    }
+  }
+
+  add_sidebar_button();
+  var sidebarbutton = $('#sidebarbutton');
+  set_position_from_cookie();
+});

=== added file 'src/postorius/doc/_build/html/_static/underscore.js'
--- src/postorius/doc/_build/html/_static/underscore.js	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/_static/underscore.js	2012-03-29 06:09:18 +0000
@@ -0,0 +1,16 @@
+(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
+a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
+var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
+d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
+function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
+function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
+0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
+e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
+a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
+return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
+var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
+if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
+0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
+a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
+" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
+o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();

=== added file 'src/postorius/doc/_build/html/acknowledgements.html'
--- src/postorius/doc/_build/html/acknowledgements.html	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/acknowledgements.html	2012-03-29 06:09:18 +0000
@@ -0,0 +1,158 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Acknowledgements &mdash; mailmanweb v0.1 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.1',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="acknowledgements">
+<h1>Acknowledgements<a class="headerlink" href="#acknowledgements" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="test-server">
+<h2>Test Server<a class="headerlink" href="#test-server" title="Permalink to this headline">¶</a></h2>
+<p>We&#8217;re proud to provide you a development server which is sponsered by XXX #Todo
+Feel free to change anything you like, we can simply rest the DB from Time to Time.</p>
+</div>
+<div class="section" id="missing-functionality">
+<h2>Missing Functionality<a class="headerlink" href="#missing-functionality" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><dl class="first docutils">
+<dt>Delete Domain</dt>
+<dd><ul class="first last simple">
+<li>missing in REST</li>
+<li>implemented in mailman3 a8</li>
+</ul>
+</dd>
+</dl>
+</li>
+<li><p class="first">Show a List of all subscribed users</p>
+</li>
+</ul>
+</div>
+<div class="section" id="acl">
+<h2>ACL<a class="headerlink" href="#acl" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">Middleware</p>
+<blockquote>
+<div><p>We don&#8217;t have the Middleware which is required to work with users and it&#8217;s permissions yet. For this reason we had to tweak some functions to be a hardcoded Demo object.</p>
+<ul>
+<li><dl class="first docutils">
+<dt>Login Check</dt>
+<dd><p class="first last">At the moment we&#8217;re using a hardcoded List of allowed usernames and Passwords which are all stored in Plain within the AuthBackends Source File.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>has_perm Decorator</dt>
+<dd><p class="first last">As we don&#8217;t have a middleware to check for users and it&#8217;s permissions we do only use one permission at the moment. The permission site domain_admin is hardcoded to user.username == &#8220;<a class="reference external" href="mailto:james&#37;&#52;&#48;example&#46;com">james<span>&#64;</span>example<span>&#46;</span>com</a>&#8220;</p>
+</dd>
+</dl>
+</li>
+</ul>
+</div></blockquote>
+</li>
+</ul>
+</div>
+<div class="section" id="ideas">
+<h2>Ideas<a class="headerlink" href="#ideas" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>ContactPage</li>
+<li></li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Acknowledgements</a><ul>
+<li><a class="reference internal" href="#test-server">Test Server</a></li>
+<li><a class="reference internal" href="#missing-functionality">Missing Functionality</a></li>
+<li><a class="reference internal" href="#acl">ACL</a></li>
+<li><a class="reference internal" href="#ideas">Ideas</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/acknowledgements.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Benedict Stein.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/genindex.html'
--- src/postorius/doc/_build/html/genindex.html	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/genindex.html	2012-03-29 06:09:18 +0000
@@ -0,0 +1,103 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Index &mdash; mailmanweb v0.1 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.1',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="#" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+
+   <h1 id="index">Index</h1>
+
+   <div class="genindex-jumpbox">
+   <a href="#T"><strong>T</strong></a> 
+   </div>
+<h2 id="T">T</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+    <dt><a href="using.html#module-tests.tests">tests.tests (module)</a></dt>
+</dl></td>
+</tr></table>
+
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+
+   
+
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="#" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Benedict Stein.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/index.html'
--- src/postorius/doc/_build/html/index.html	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/index.html	2012-03-29 06:09:18 +0000
@@ -0,0 +1,113 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Welcome to mailman_django’s documentation! &mdash; mailmanweb v0.1 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.1',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="mailmanweb v0.1 documentation" href="#" />
+    <link rel="next" title="News" href="news.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="news.html" title="News"
+             accesskey="N">next</a> |</li>
+        <li><a href="#">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="welcome-to-mailman-django-s-documentation">
+<h1>Welcome to mailman_django&#8217;s documentation!<a class="headerlink" href="#welcome-to-mailman-django-s-documentation" title="Permalink to this headline">¶</a></h1>
+<p>Contents:</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
+<li class="toctree-l1"><a class="reference internal" href="setup.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="using.html">Using the Django App - Developers Resource</a></li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h4>Next topic</h4>
+  <p class="topless"><a href="news.html"
+                        title="next chapter">News</a></p>
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/index.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="news.html" title="News"
+             >next</a> |</li>
+        <li><a href="#">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Benedict Stein.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/license.html'
--- src/postorius/doc/_build/html/license.html	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/license.html	2012-03-29 06:09:18 +0000
@@ -0,0 +1,139 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Contributions: &mdash; mailmanweb v0.1 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.1',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" />
+    <link rel="prev" title="Acknowledgements" href="acknowledgements.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="acknowledgements.html" title="Acknowledgements"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="contributions">
+<h1>Contributions:<a class="headerlink" href="#contributions" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="mailman-is-licensed-unter-gpl">
+<h2>Mailman is licensed unter <em>GPL</em><a class="headerlink" href="#mailman-is-licensed-unter-gpl" title="Permalink to this headline">¶</a></h2>
+<p>Copyright (C) 1998-2010 by the Free Software Foundation, Inc.</p>
+<p>This file is part of GNU Mailman.</p>
+<p>GNU Mailman is free software: you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation, either version 3 of the License, or (at your option)
+any later version.</p>
+<p>GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+more details.</p>
+<p>You should have received a copy of the GNU General Public License along with
+GNU Mailman.  If not, see &lt;<a class="reference external" href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>&gt;.</p>
+</div>
+<div class="section" id="rrze-icon-set">
+<h2>RRZE Icon Set<a class="headerlink" href="#rrze-icon-set" title="Permalink to this headline">¶</a></h2>
+<p><strong>CreativeCommons Licence</strong></p>
+<p>The RRZE Icon Set is licenced under a Creative Commons Licence.
+Please see the website for the current licence text.</p>
+<p>More information about the Project could be found here:
+<a class="reference external" href="http://rrze-icon-set.berlios.de/licence.html">http://rrze-icon-set.berlios.de/licence.html</a></p>
+<p>Special thanks to:
+* Franziska Sponsel (created additional Icons specially for our Project)</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Contributions:</a><ul>
+<li><a class="reference internal" href="#mailman-is-licensed-unter-gpl">Mailman is licensed unter <em>GPL</em></a></li>
+<li><a class="reference internal" href="#rrze-icon-set">RRZE Icon Set</a></li>
+</ul>
+</li>
+</ul>
+
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="acknowledgements.html"
+                        title="previous chapter">Acknowledgements</a></p>
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/license.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="acknowledgements.html" title="Acknowledgements"
+             >previous</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Benedict Stein.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/news.html'
--- src/postorius/doc/_build/html/news.html	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/news.html	2012-03-29 06:09:18 +0000
@@ -0,0 +1,157 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>News &mdash; mailmanweb v0.1 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.1',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" />
+    <link rel="next" title="Installation" href="setup.html" />
+    <link rel="prev" title="Welcome to mailman_django’s documentation!" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="setup.html" title="Installation"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Welcome to mailman_django’s documentation!"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="news">
+<h1>News<a class="headerlink" href="#news" title="Permalink to this headline">¶</a></h1>
+<p>Copyright (C) 1998-2012 by the Free Software Foundation, Inc.</p>
+<p>The postorius Django app provides a web user interface to
+access GNU Mailman.</p>
+<p>postorius is free software: you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation, version 3 of the License.</p>
+<p>postorius is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
+General Public License for more details.</p>
+<p>You should have received a copy of the GNU Lesser General Public License
+along with postorius. If not, see &lt;<a class="reference external" href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>&gt;.</p>
+<div class="section" id="alpha-1-space-farm">
+<h2>1.0 alpha 1 &#8211; &#8220;Space Farm&#8221;<a class="headerlink" href="#alpha-1-space-farm" title="Permalink to this headline">¶</a></h2>
+<p>(2012-03-23)</p>
+<p>Many thanks go out to Anna Senarclens de Grancy and Benedict Stein for
+developing the initial versions of this Django app during the Google Summer of
+Code 2010 and 2011.</p>
+<ul class="simple">
+<li>add/remove/edit mailing lists</li>
+<li>edit list settings</li>
+<li>show all mailing lists on server</li>
+<li>subscribe/unsubscribe/mass subscribe mailing lists</li>
+<li>add/remove domains</li>
+<li>show basic list info and metrics</li>
+<li>login using django user account or using BrowserID</li>
+<li>show basic user profile</li>
+<li>accept/discard/reject/defer messages</li>
+<li>Implementation of Django Messages contributed by Benedict Stein (LP: #920084)</li>
+<li>Dependency check in setup.py contributed by Daniel Mizyrycki</li>
+<li>Proper processing of acceptable aliases in list settings form contributed by
+Daniel Mizyrycki</li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">News</a><ul>
+<li><a class="reference internal" href="#alpha-1-space-farm">1.0 alpha 1 &#8211; &#8220;Space Farm&#8221;</a></li>
+</ul>
+</li>
+</ul>
+
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="index.html"
+                        title="previous chapter">Welcome to mailman_django&#8217;s documentation!</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="setup.html"
+                        title="next chapter">Installation</a></p>
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/news.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="setup.html" title="Installation"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Welcome to mailman_django’s documentation!"
+             >previous</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Benedict Stein.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/objects.inv'
Binary files src/postorius/doc/_build/html/objects.inv	1970-01-01 00:00:00 +0000 and src/postorius/doc/_build/html/objects.inv	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/doc/_build/html/py-modindex.html'
--- src/postorius/doc/_build/html/py-modindex.html	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/py-modindex.html	2012-03-29 06:09:18 +0000
@@ -0,0 +1,113 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Python Module Index &mdash; mailmanweb v0.1 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.1',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" />
+ 
+
+
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="#" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+
+   <h1>Python Module Index</h1>
+
+   <div class="modindex-jumpbox">
+   <a href="#cap-t"><strong>t</strong></a>
+   </div>
+
+   <table class="indextable modindextable" cellspacing="0" cellpadding="2">
+     <tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
+     <tr class="cap" id="cap-t"><td></td><td>
+       <strong>t</strong></td><td></td></tr>
+     <tr>
+       <td><img src="_static/minus.png" class="toggler"
+              id="toggle-1" style="display: none" alt="-" /></td>
+       <td>
+       <tt class="xref">tests</tt></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&nbsp;&nbsp;&nbsp;
+       <a href="using.html#module-tests.tests"><tt class="xref">tests.tests</tt></a></td><td>
+       <em></em></td></tr>
+   </table>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="#" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Benedict Stein.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/search.html'
--- src/postorius/doc/_build/html/search.html	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/search.html	2012-03-29 06:09:18 +0000
@@ -0,0 +1,102 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Search &mdash; mailmanweb v0.1 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.1',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <script type="text/javascript" src="_static/searchtools.js"></script>
+    <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" />
+  <script type="text/javascript">
+    jQuery(function() { Search.loadIndex("searchindex.js"); });
+  </script>
+   
+
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <h1 id="search-documentation">Search</h1>
+  <div id="fallback" class="admonition warning">
+  <script type="text/javascript">$('#fallback').hide();</script>
+  <p>
+    Please activate JavaScript to enable the search
+    functionality.
+  </p>
+  </div>
+  <p>
+    From here you can search these documents. Enter your search
+    words into the box below and click "search". Note that the search
+    function will automatically search for all of the words. Pages
+    containing fewer words won't appear in the result list.
+  </p>
+  <form action="" method="get">
+    <input type="text" name="q" value="" />
+    <input type="submit" value="search" />
+    <span id="search-progress" style="padding-left: 10px"></span>
+  </form>
+  
+  <div id="search-results">
+  
+  </div>
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Benedict Stein.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/searchindex.js'
--- src/postorius/doc/_build/html/searchindex.js	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/searchindex.js	2012-03-29 06:09:18 +0000
@@ -0,0 +1,1 @@
+Search.setIndex({objects:{tests:{tests:[3,0,1]}},terms:{all:[3,1,2],code:[3,1,2],forget:3,prefil:3,four:[],ackownledg:[],runserv:1,dirnam:1,follow:[3,1],content:[0,1,3],decid:1,depend:2,authoris:[],send:[],granci:2,under:2,introduc:1,merchant:2,sourc:[],everi:1,string:3,far:1,none:3,offlin:1,util:3,context_processor:1,mechan:3,exact:3,special:1,contenttyp:1,administr:3,level:1,did:3,button:3,list:[3,1,2],"try":3,item:3,adjust:1,localhost:[3,1],httpredirectobject:3,quick:1,setup:[3,1,2],dir:1,pleas:[3,1],modelbackend:1,impli:2,httpresponseredirect:3,cfg:[],seper:1,request:3,past:1,second:1,download:1,further:[],click:3,compat:1,index:3,what:[],name_of_permiss:[],appear:1,sum:[],abl:[3,1],current:3,delet:3,new_list1:3,postoriu:[2,1],franziska:[],"new":[0,2,3],net:1,"public":2,gener:2,remeb:1,here:1,themself:[],ubuntu:1,path:1,along:2,modifi:[3,1,2],sinc:[],valu:[3,1],search:[],mailinglist:[],vertifi:1,anymor:1,step:1,jame:3,doctest:3,action:3,chang:1,mailman_media:1,contactpag:[],via:[],appli:1,app:[0,1,2,3],sponser:[],foundat:2,api:1,sponsel:[],instal:[0,1,3],middlewar:1,from:[3,1],describ:3,would:1,commun:1,doubl:3,two:[],perm:[],next:1,websit:1,few:1,call:1,recommend:1,type:3,web_host:3,mailman_django:[0,1],abspath:1,relat:3,ital:[],site:[3,1],warn:[3,1],trail:1,berlio:[],stick:1,particular:2,hold:1,unpack:1,easiest:3,account:2,join:1,prepar:1,work:1,uniqu:[],dev:1,itself:1,can:[3,1,2],purpos:2,defer:2,login_requir:3,tar:1,process:2,sudo:1,accept:2,topic:[],want:[3,1],nearli:1,cours:1,multipl:[],anoth:3,faulti:[],georg:3,write:[],how:1,reject:2,instead:[3,1],config:1,css:1,updat:[3,1],resourc:[0,1,3],farm:2,after:[3,1],"long":1,usabl:[],befor:[3,1],wrong:3,mai:[],end:1,data:[3,1],postfix:1,bind:1,bootstrap:1,django:[0,1,2,3],alias:2,adverrtis:3,allow:[3,1],enter:3,fallback:1,automaticli:[],egg:1,order:[],listnam:3,help:[],becaus:3,has_perm:[],style:1,directli:3,fit:2,browserid:2,better:1,restart:1,onc:1,mail:[3,2],hidden:1,main:[],might:1,guarente:1,split:1,them:1,"return":[],thei:3,python:[3,1],auth:1,unfortuneatli:[],mention:[3,1],front:3,now:[3,1],term:2,benst:1,somewher:1,name:[3,1],anyth:[],edit:[3,2],simpl:1,authent:[],separ:3,easili:1,senarclen:2,each:3,debug:[3,1],found:[3,1],went:3,mailman_test_bindir:1,domain:[3,2],replac:[],idea:[],procedur:[],realli:[3,1],redistribut:2,meta:3,"static":[],connect:1,our:[3,1],todo:[],dependeci:1,out:2,shown:3,space:2,miss:[],develop:[0,1,2,3],publish:2,api_us:[3,1],profil:2,daniel:2,rest_serv:1,got:1,correct:[],earlier:1,free:[3,1,2],cooki:[],reason:1,base:1,mailmanweb:[],lists_of_domain:1,put:1,org:[2,1],"40mail":3,launch:1,could:1,latest:1,membership:3,keep:1,filter:[],thing:[3,1],place:1,isn:[],root_urlconf:1,requireti:[],summari:3,first:[3,1],softwar:2,rang:[],render:1,feel:[3,1],media_root:1,natti:1,restrict:3,instruct:[3,1],alreadi:[3,1],done:[3,1],least:3,authentif:[3,1],owner:3,stabl:[3,1],installed_app:1,open:3,gpl:[],differ:1,rrze:[],benedict:2,hardcopi:1,licens:2,system:1,messag:[3,1,2],licenc:[],fullfil:1,"final":3,store:[],shell:[3,1],option:[3,1],real_nam:3,copi:[2,1],specifi:3,gsoc:1,part:[3,1],pars:3,priveledg:1,serv:1,enjoi:3,provid:[3,2],remov:[3,2],new_domain:[],project:1,were:[3,1],posit:3,minut:1,fqdn_listnam:3,pre:[],ani:[2,1],packag:1,have:[3,1,2],tabl:1,need:[3,1],element:1,inform:[],florian:1,destroi:1,client:[3,1],note:[3,1],also:1,without:[3,2],take:[],indic:3,singl:3,even:2,sure:[3,1],kati:3,distribut:2,shall:3,usernam:1,object:3,most:3,plan:1,letter:3,watt:3,alpha:2,"class":1,icon:[],don:[3,1],bzr:1,url:[3,1],doc:[],later:1,cover:[],temporili:3,doe:3,mm_membership:3,usual:1,came:[],show:[3,2],text:3,liza:3,session:[3,1],permiss:[3,1],corner:[],fine:1,find:1,redirect:3,absolut:1,onli:[3,1],eas:1,locat:[],launchpad:1,copyright:2,explain:3,configur:1,apach:1,should:[3,1,2],version:[2,1],suppos:1,templat:1,local:3,hope:2,media_url:1,contribut:2,get:[3,1],"__file__":1,stop:3,obviou:[],csrf:1,subscript:3,requir:[3,1],template_dir:1,whether:3,common:[],restadmin:1,where:1,view:[3,1],wiki:1,set:[3,1,2],see:[3,1,2],domain_admin:[],result:1,respons:3,fail:[3,1],wonder:[],awar:[3,1],statu:3,mailman3a7:1,correctli:[],databas:3,someth:3,restbackend:1,behind:[],between:[3,1],"import":3,awai:1,email:3,realnam:[],correclti:1,advertis:3,subfold:1,addit:[],both:1,last:3,plugin:1,admin:1,howev:1,etc:[],instanc:3,context:1,delete_list:3,logout:[],login:[3,1,2],com:[3,1],load:3,english:3,simpli:[3,1],point:1,instanti:[],overview:3,address:[3,1],header:[],non:1,linux:3,guid:[3,1],backend:1,mailman:[3,1,2],coupl:[3,1],"0a7":1,been:3,compon:1,much:1,unsubscrib:[3,2],modif:1,upcom:1,xxx:[],togeth:[3,1],i18n:1,ngeorg:3,those:[3,1],"case":[3,1],creativecommon:[],therefor:[],look:[],gnu:[2,1],plain:[],align:1,lesser:2,dashboard:3,abov:3,mail_host:3,everyon:1,authentication_backend:1,new_list:[],demo:[],metric:2,list_own:3,archiv:3,revis:1,subscrib:[3,2],decor:[3,1],let:3,welcom:0,author:[],receiv:2,media:1,make:[3,1],belong:3,same:[3,1],handl:1,html:1,gui:3,document:[0,1],mod_wsgi:1,finish:3,http:[3,1,2],upon:[],moment:1,http_host:3,initi:2,mani:2,implement:2,expand:[],appropri:1,framework:[],api_pass:[3,1],well:[3,1],membership_set:[],exampl:[3,1],command:1,thi:[3,1,2],choos:3,everyth:[3,1],left:[],summer:2,just:1,rest:[3,1],mailman3:[3,1],webui:1,yet:[],languag:3,web:[2,1],easi:1,project_path:1,had:[],list_summari:3,mailmanwebgsoc2011:1,add:[3,1,2],other:[3,1],lawrenc:1,save:[],modul:[3,1],bin:1,applic:1,which:[3,1],stein:2,unter:[],know:1,gsoc_mailman:1,press:3,password:1,tweak:[],authbackend:[],like:1,template_context_processor:1,success:3,restpass:1,server:[2,1],href:[],setup_mm:3,either:3,page:[3,1],www:[2,1],right:1,acknowledg:[],creation:3,some:[3,1],proper:2,home:1,funcit:[],basic:2,buildout:1,djangoproject:1,confirm:3,woun:1,thank:2,select:[],slash:1,necessari:[],testobject:3,anna:2,refer:3,machin:3,core:1,who:[],run:[3,1],bold:[],symlink:1,host:[],repositori:1,post:3,mm_new_domain:[],stage:[],about:1,central:[],usa:3,mass_subscrib:3,acl:[],permission_requir:[],act:[],fals:3,discard:2,processor:1,block:3,own:[3,1],addus:[],status_cod:3,within:[3,1],warranti:2,creativ:[],empti:3,contrib:1,your:1,manag:[3,1],choosen:3,span:3,log:3,wai:3,"40exampl":3,execut:3,print:3,submit:3,custom:1,avail:[3,1],start:[3,1],reli:[],interfac:2,includ:[3,1],suit:3,systers_django:[],"function":[3,1],head:[],form:[3,2],offer:3,descrip:1,link:[3,1],translat:3,teardown_mm:3,branch:1,line:3,"true":3,info:2,succe:3,made:[3,1],render_mailman_them:1,possibl:1,"default":1,access:[3,1,2],displai:[3,1],below:3,memebership:[],otherwis:1,more:2,extend_ajax:1,proud:[],creat:[3,1],hardcod:[],dure:[3,1,2],doesn:[],exist:1,file:1,syncdb:1,check:[3,1,2],inc:2,again:1,successfulli:1,googl:2,titl:[],user:[3,1,2],when:1,detail:2,gettext:3,mizyrycki:2,valid:3,futur:1,rememb:[],test:[3,1],you:[3,1,2],nice:3,why:3,prequir:[],consid:1,stai:[],outdat:[3,1],bullet:[],directori:[3,1],bottom:[],descript:[3,1],mailman_them:1,mass:[3,2],time:[3,1],escap:3},objtypes:{"0":"py:module"},titles:["Welcome to mailman_django&#8217;s documentation!","Installation","News","Using the Django App - Developers Resource"],objnames:{"0":"Python module"},filenames:["index","setup","news","using"]})
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/setup.html'
--- src/postorius/doc/_build/html/setup.html	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/setup.html	2012-03-29 06:09:18 +0000
@@ -0,0 +1,364 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Installation &mdash; mailmanweb v0.1 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.1',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" />
+    <link rel="next" title="Using the Django App - Developers Resource" href="using.html" />
+    <link rel="prev" title="News" href="news.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="using.html" title="Using the Django App - Developers Resource"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="news.html" title="News"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="installation">
+<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h1>
+<blockquote>
+<div><div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p>This installation guide is outdated and needs to be updated.
+Please use the following resources instead:</p>
+<p>To install GNU Mailman follow the instructions in the documentation:
+<a class="reference external" href="http://packages.python.org/mailman/">http://packages.python.org/mailman/</a></p>
+<p>A description how to run postorius on Django&#8217;s dev server, can be found in
+the GNU Mailman wiki:
+<a class="reference external" href="http://wiki.list.org/display/DEV/A+5+minute+guide+to+get+the+Mailman+web+UI+running">http://wiki.list.org/display/DEV/A+5+minute+guide+to+get+the+Mailman+web+UI+running</a></p>
+<p class="last">You can also find a guide how to run postorius using the Apache web server
+on the Mailman wiki:
+<a class="reference external" href="http://wiki.list.org/display/DEV/How+to+get+Postorius+running+on+Apache+and+mod_wsgi">http://wiki.list.org/display/DEV/How+to+get+Postorius+running+on+Apache+and+mod_wsgi</a></p>
+</div>
+</div></blockquote>
+<div class="section" id="mailman3-a7">
+<h2>Mailman3 - a7<a class="headerlink" href="#mailman3-a7" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><dl class="first docutils">
+<dt>Check Dependecys</dt>
+<dd><div class="first last admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">This might differ on different systems - I was testing Ubuntu 11.04 natty and needed to install Postfix before running the installation.</p>
+</div>
+</dd>
+</dl>
+</li>
+<li><p class="first">Download or branch Mailman3a7 from <a class="reference external" href="http://launchpad.net/mailman/3.0/3.0.0a7/+download/mailman-3.0.0a7.tar.gz">http://launchpad.net/mailman/3.0/3.0.0a7/+download/mailman-3.0.0a7.tar.gz</a> and unpack it.</p>
+</li>
+<li><dl class="first docutils">
+<dt>Change into the unpacked DIR which might be named &#8220;mailman-3.0.0a7&#8221;</dt>
+<dd><div class="first last admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Please be aware that the following steps only work if you&#8217;re really in that DIR. If you consider adding a subfolder name to the commands those woun&#8217;t work !</p>
+</div>
+</dd>
+</dl>
+</li>
+<li><p class="first">Run the Installation from a Shell (not Python)</p>
+<blockquote>
+<div><div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>python bootstrap.py
+<span class="nv">$ </span>bin/buildout
+</pre></div>
+</div>
+</div></blockquote>
+</li>
+<li><p class="first">Vertify that everything was setup correclty and your branch fullfills the version requirements by running it&#8217;s own test module</p>
+<blockquote>
+<div><div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>bin/test
+</pre></div>
+</div>
+</div></blockquote>
+</li>
+<li><p class="first">Now you&#8217;re able to run mailman using</p>
+<blockquote>
+<div><div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>bin/mailman
+</pre></div>
+</div>
+</div></blockquote>
+</li>
+</ul>
+</div>
+<div class="section" id="mailman-client-rest-api">
+<h2>Mailman Client / REST Api<a class="headerlink" href="#mailman-client-rest-api" title="Permalink to this headline">¶</a></h2>
+<p>Next thing you need to do is installing the Plugin used for communication with non-mailman-code parts like our WebUI. Within the Client Branch we&#8217;ve put both, Classes to access the Core which are run as a Plugin and some Python Bindings.
+The Python Bindings were used later on within our Django Application to access the Server. Failing to install the Client would result in an offline version of WebUI</p>
+<p>Once again start by branching the code which is on Launchpad</p>
+<blockquote>
+<div><div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>bzr branch lp:mailman.client
+</pre></div>
+</div>
+</div></blockquote>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">We&#8217;ve successfully tested our functionality with Revision 16 - In case the Client gets updated which it surely will in future we can&#8217;t guarentee that it is compatible anymore.</p>
+</div>
+<p>As you only want to run the Client and not modify it&#8217;s code you&#8217;re fine with running the install command from within the directory. At the moment this requires Sudo Priveledges as files will copied to the Python Site-Packages Directory which is available to all users.</p>
+<blockquote>
+<div><div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>sudo python setup.py install
+</pre></div>
+</div>
+</div></blockquote>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p>If you want to change parts of the Client you can use the development option which will create a Symlink instead of a Hardcopy of all files:</p>
+<div class="last highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>sudo python setup.py develop
+</pre></div>
+</div>
+</div>
+<p>All changes will apply once you restart Mailman itself.</p>
+</div>
+<div class="section" id="django-1-3">
+<h2>Django 1.3<a class="headerlink" href="#django-1-3" title="Permalink to this headline">¶</a></h2>
+<p>During our development we started a Django Site based on the 1.2 Version which is included into Ubuntu&#8217;s repositorys. This made the installation easy but we ended up having some points which would get a much better code when using some elements introducing in 1.3.
+As Mailman is supposed to be long-time stable - or however you call it - we decided that we should stick to the latest stable version right away. For this reason you&#8217;re required to install Django 1.3+ which is descriped on their Website. (<a class="reference external" href="https://www.djangoproject.com/download/">https://www.djangoproject.com/download/</a>)</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Please be Aware that it&#8217;s not recommended to run both 1.2 and 1.3 at the same time</p>
+</div>
+<p>In Django you&#8217;ve got 3 different levels of data.
+- Django Installation Files
+- Django Site
+- Django Apps
+usually you don&#8217;t see the Installation as it&#8217;s hidden somewhere within the System and the Apps are simply included into The Site Directory.
+As we wanted to have the possibility to include the App into any Django Site which might already exist we decided to keep Site and App seperated.</p>
+<p>During GSoC we&#8217;ve used different branches for this:
+- lp:mailmanwebgsoc2011
+- lp:mailmanwebgsoc2011/django-site-0.1</p>
+</div>
+<div class="section" id="django-site-installation">
+<h2>Django Site Installation<a class="headerlink" href="#django-site-installation" title="Permalink to this headline">¶</a></h2>
+<p>We&#8217;ve created this branch for quick development - everyone is free to use his own Django site, but this one already includes a couple of modifications we&#8217;ve made that will allow running the Development Server just a few seconds after Branching both Site and App.</p>
+<p>As far as I know at the moment we&#8217;ve made the following alignments: (All of these are in the settings.py file of the Django Site)</p>
+<blockquote>
+<div><p>REST_SERVER = &#8216;localhost:8001&#8217;
+API_USER = &#8216;restadmin&#8217;
+API_PASS = &#8216;restpass&#8217;</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">These are the default values used by the Mailman Client we&#8217;ve installed earlier. Feel free to modify the password and username if you need to.</p>
+</div>
+</div></blockquote>
+<p>MAILMAN_TEST_BINDIR = &#8216;/home/benste/Projects/Gsoc_mailman/mailman-3.0.0a7/bin&#8217;
+#/home/florian/Development/mailman/bin&#8217;</p>
+<blockquote>
+<div><div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Running the test modules requires to launch a special version of mailman with it&#8217;s own testing DB otherwise you&#8217;d destroy you&#8217;re sites content during testing. This Path needs to point to YOUR own installation of mailman.</p>
+</div>
+</div></blockquote>
+<p>MAILMAN_THEME = &#8220;default&#8221;</p>
+<blockquote>
+<div><div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">We decided to allow simple Appearance Modifications, to use a custom CSS you could simply add a Directory within the media directory of the app and Link it&#8217;s name here. All HTML Pages will use the Styles from the Directory mentioned in here</p>
+</div>
+</div></blockquote>
+<p>PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
+MEDIA_ROOT =  os.path.join(os.path.split(PROJECT_PATH)[0], &#8220;mailman_django/media/mailman_django/&#8221;)</p>
+<blockquote>
+<div><div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Absolute path to the directory that holds media.
+Example: &#8220;/home/media/media.lawrence.com/&#8221;</p>
+</div>
+</div></blockquote>
+<p>MEDIA_URL = &#8216;/mailman_media/&#8217;</p>
+<blockquote>
+<div><div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">URL that handles the media served from MEDIA_ROOT. Make sure to use a trailing slash if there is a path component (optional in other cases).Examples: &#8220;<a class="reference external" href="http://media.lawrence.com">http://media.lawrence.com</a>&#8221;, &#8220;<a class="reference external" href="http://example.com/media/">http://example.com/media/</a>&#8220;</p>
+</div>
+</div></blockquote>
+<dl class="docutils">
+<dt>AUTHENTICATION_BACKENDS = (</dt>
+<dd><p class="first">&#8216;mailman_django.auth.restbackend.RESTBackend&#8217;,
+&#8216;django.contrib.auth.backends.ModelBackend&#8217;
+)</p>
+<div class="last admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">This creates a connection in between Djangos Login and Permission Decorators which we use for authentification and a custom Backend which we created in Preparation to work together with the REST API or an upcoming Middleware.
+You need to keep the Django one for testing fallback.</p>
+</div>
+</dd>
+<dt>TEMPLATE_CONTEXT_PROCESSORS=(</dt>
+<dd><p class="first">&#8220;django.contrib.auth.context_processors.auth&#8221;,
+&#8220;django.core.context_processors.debug&#8221;,
+&#8220;django.core.context_processors.i18n&#8221;,
+&#8220;django.core.context_processors.media&#8221;,
+&#8220;django.core.context_processors.csrf&#8221;,
+&#8220;django.contrib.messages.context_processors.messages&#8221;,
+&#8220;mailman_django.context_processors.lists_of_domain&#8221;,
+&#8220;mailman_django.context_processors.render_MAILMAN_THEME&#8221;,
+&#8220;mailman_django.context_processors.extend_ajax&#8221;</p>
+<div class="last admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">We&#8217;re using Context Processors to easily render value which we need in nearly every view.</p>
+</div>
+</dd>
+</dl>
+<p>ROOT_URLCONF = &#8216;mailman_django.urls&#8217;</p>
+<blockquote>
+<div><div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">This is where our URL Config is - if you run your own site with other Apps as well you might want to adjust this to your urls.py which includes our file.</p>
+</div>
+</div></blockquote>
+<dl class="docutils">
+<dt>TEMPLATE_DIRS = (</dt>
+<dd><p class="first">os.path.join(PROJECT_PATH, &#8220;mailman_django/templates&#8221;),</p>
+<div class="last admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Adds our own Templates</p>
+</div>
+</dd>
+<dt>INSTALLED_APPS = (</dt>
+<dd><p class="first">&#8216;django.contrib.auth&#8217;,
+&#8216;django.contrib.contenttypes&#8217;,
+&#8216;django.contrib.sessions&#8217;,
+&#8216;django.contrib.sites&#8217;,
+&#8216;django.contrib.admin&#8217;,
+&#8216;mailman_django&#8217;,</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Makes sure that Django knows about our directory as an App and creates needed Tables () when running</p>
+</div>
+<div class="last highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>python manage.py syncdb
+</pre></div>
+</div>
+</dd>
+</dl>
+<p>Now that you know about all these you might start the development server. As usual in Django this is done by running</p>
+<blockquote>
+<div><div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>python manage.py runserver
+</pre></div>
+</div>
+</div></blockquote>
+<p>within the Django Site Directory - as usual the default address is localhost:8000
+Of course it will only be able to start once our app is in place as well.</p>
+</div>
+<div class="section" id="django-application">
+<h2>Django Application<a class="headerlink" href="#django-application" title="Permalink to this headline">¶</a></h2>
+<p>First get the files, and make sure you paste them into your Project directory and adjust it&#8217;s name to the appropriate configuration you&#8217;ve made earlier in the Django Site. Remeber our default is mailman_django</p>
+<blockquote>
+<div><div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>bzr branch lp:mailmanwebgsoc2011
+</pre></div>
+</div>
+</div></blockquote>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">We&#8217;ve tested Revision 172</p>
+</div>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">We&#8217;re planning to ease up installation by creating an egg</p>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Installation</a><ul>
+<li><a class="reference internal" href="#mailman3-a7">Mailman3 - a7</a></li>
+<li><a class="reference internal" href="#mailman-client-rest-api">Mailman Client / REST Api</a></li>
+<li><a class="reference internal" href="#django-1-3">Django 1.3</a></li>
+<li><a class="reference internal" href="#django-site-installation">Django Site Installation</a></li>
+<li><a class="reference internal" href="#django-application">Django Application</a></li>
+</ul>
+</li>
+</ul>
+
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="news.html"
+                        title="previous chapter">News</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="using.html"
+                        title="next chapter">Using the Django App - Developers Resource</a></p>
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/setup.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="using.html" title="Using the Django App - Developers Resource"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="news.html" title="News"
+             >previous</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Benedict Stein.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file

=== added file 'src/postorius/doc/_build/html/using.html'
--- src/postorius/doc/_build/html/using.html	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/_build/html/using.html	2012-03-29 06:09:18 +0000
@@ -0,0 +1,409 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Using the Django App - Developers Resource &mdash; mailmanweb v0.1 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '0.1',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" />
+    <link rel="prev" title="Installation" href="setup.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="setup.html" title="Installation"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="using-the-django-app-developers-resource">
+<h1>Using the Django App - Developers Resource<a class="headerlink" href="#using-the-django-app-developers-resource" title="Permalink to this headline">¶</a></h1>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">This user guide is outdated and needs to be updated.</p>
+</div>
+<span class="target" id="module-tests.tests"></span><div class="section" id="tests-login-and-permissions">
+<h2>Tests Login and Permissions<a class="headerlink" href="#tests-login-and-permissions" title="Permalink to this headline">¶</a></h2>
+<p>Setup Testobject (starts Mailman3 with an empty Database).</p>
+<blockquote>
+<div><div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">setup</span> <span class="kn">import</span> <span class="n">setup_mm</span><span class="p">,</span> <span class="n">Testobject</span><span class="p">,</span> <span class="n">teardown_mm</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">testobject</span> <span class="o">=</span> <span class="n">setup_mm</span><span class="p">(</span><span class="n">Testobject</span><span class="p">())</span>
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">You need to stop all Mailman3 instances before running the tests</p>
+</div>
+</div></blockquote>
+<dl class="docutils">
+<dt>Modules needed</dt>
+<dd><p class="first">As we can&#8217;t make sure that you&#8217;re running the same language as we did we
+made sure that each test below is executed using the exact same translation
+mechanism as we use to Display you Status Messages and other GUI Texts.</p>
+<dl class="last docutils">
+<dt>Import Translation Module to check success messages</dt>
+<dd><div class="first last highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
+</pre></div>
+</div>
+</dd>
+<dt>Import HTTPRedirectObject to check whether a response redirects</dt>
+<dd><div class="first last highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">django.http</span> <span class="kn">import</span> <span class="n">HttpResponseRedirect</span>
+</pre></div>
+</div>
+</dd>
+</dl>
+</dd>
+</dl>
+<p>Import Django test client.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">django.test.client</span> <span class="kn">import</span> <span class="n">Client</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">c</span> <span class="o">=</span> <span class="n">Client</span><span class="p">()</span>
+</pre></div>
+</div>
+<div class="section" id="list-index">
+<h3>List index<a class="headerlink" href="#list-index" title="Permalink to this headline">¶</a></h3>
+<p>Try accessing the list index page.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/lists/&#39;</span><span class="p">,)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span><span class="o">.</span><span class="n">status_code</span>
+<span class="go">200</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="login-required">
+<h3>Login Required<a class="headerlink" href="#login-required" title="Permalink to this headline">¶</a></h3>
+<p>As described within the installation instructions we <em>already</em> started using
+authentification. The easiest way testing it is that we simply load a page
+which is restricted to some users only.
+This was done using Django&#8217;s &#64;login_required Decorator in front of the View.
+One of the pages which requires a Login is the Domain Administration, if
+we can load the page without a redirect to the Login page, you&#8217;re either
+already logged in or something went wrong.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/domains/&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="nb">type</span><span class="p">(</span><span class="n">response</span><span class="p">)</span> <span class="o">==</span> <span class="n">HttpResponseRedirect</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="pages">
+<h2>Pages<a class="headerlink" href="#pages" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="create-a-new-list">
+<h3>Create a New List<a class="headerlink" href="#create-a-new-list" title="Permalink to this headline">¶</a></h3>
+<p>After creating a Domain you should be able to create new Lists. The Button for
+doing so is shown on the List index Page which should offer a list of all
+available (adverrtised) lists.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/lists/&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span><span class="o">.</span><span class="n">status_code</span>
+<span class="go">200</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="s">&quot;Lists &lt;span&gt;on&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>The new List creation form is opened by clicking on the Button mentioned above
+or accessing the page directly</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/lists/new/&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span><span class="o">.</span><span class="n">status_code</span>
+<span class="go">200</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="s">&quot;Create a new List on&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>Creating a new List we do need to specify at least the below mentioned items.
+Those were entered using some nice GUI Forms which do only show up available
+Values or offer you to choose a name which will be checked during validation.
+We&#8217;re now submitting the form using a POST request and get redirected to
+the List Index Page</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/lists/new/&#39;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="p">{</span><span class="s">&quot;listname&quot;</span><span class="p">:</span> <span class="s">&quot;new_list1&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                   <span class="s">&quot;mail_host&quot;</span><span class="p">:</span> <span class="s">&quot;mail.example.com&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                   <span class="s">&quot;list_owner&quot;</span><span class="p">:</span> <span class="s">&quot;james@example.com&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                   <span class="s">&quot;description&quot;</span><span class="p">:</span> <span class="s">&quot;doctest testing list&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                   <span class="s">&quot;advertised&quot;</span><span class="p">:</span> <span class="s">&quot;True&quot;</span><span class="p">,</span>    
+<span class="gp">... </span>                   <span class="s">&quot;languages&quot;</span><span class="p">:</span> <span class="s">&quot;English (USA)&quot;</span><span class="p">})</span>    
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="nb">type</span><span class="p">(</span><span class="n">response</span><span class="p">)</span> <span class="o">==</span> <span class="n">HttpResponseRedirect</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>As List index is an overview of all advertised Lists and we&#8217;ve choosen to
+do so we should now see our new List within the overview. HTTP_HOST is added
+as META Data for the request because we do only want to see Domains which
+belong to the example.com web_host</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/lists/&#39;</span><span class="p">,</span><span class="n">HTTP_HOST</span><span class="o">=</span><span class="s">&#39;example.com&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span><span class="o">.</span><span class="n">status_code</span>
+<span class="go">200</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="s">&quot;New_list1&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="list-summary">
+<h3>List Summary<a class="headerlink" href="#list-summary" title="Permalink to this headline">¶</a></h3>
+<p>List summary is a dashboard for each List. It does have Links to the most
+useful functions which are only related to that Domain. These include the
+Values mentioned below. _(function) is used to Translate these to you local
+language.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/lists/new_list1%40mail.example.com/&#39;</span><span class="p">,)</span>    
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span><span class="o">.</span><span class="n">status_code</span>
+<span class="go">200</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Subscribe&quot;</span><span class="p">)</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Archives&quot;</span><span class="p">)</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Edit Options&quot;</span><span class="p">)</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Unsubscribe&quot;</span><span class="p">)</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="subscriptions">
+<h3>Subscriptions<a class="headerlink" href="#subscriptions" title="Permalink to this headline">¶</a></h3>
+<p>The Subscriptions form is found on the below URL. Last part of the Url is one
+of [None,&#8217;subscribe&#8217;,&#8217;unsubscribe&#8217;]</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">url</span> <span class="o">=</span> <span class="s">&#39;/subscriptions/new_list1%40mail.example.com/subscribe&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span><span class="o">.</span><span class="n">status_code</span>
+<span class="go">200</span>
+</pre></div>
+</div>
+<p>Forms will be prefilled with the Users Email if so. is logged in.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="s">&quot;james@example.com&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>Now we can subscribe James and Katie and check that we get redirected to List Summary.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">url</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="p">{</span><span class="s">&quot;email&quot;</span><span class="p">:</span> <span class="s">&quot;james@example.com&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="s">&quot;real_name&quot;</span><span class="p">:</span> <span class="s">&quot;James Watt&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="s">&quot;name&quot;</span><span class="p">:</span> <span class="s">&quot;subscribe&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="s">&quot;fqdn_listname&quot;</span><span class="p">:</span> <span class="s">&quot;new_list1@mail.example.com&quot;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">url</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="p">{</span><span class="s">&quot;email&quot;</span><span class="p">:</span> <span class="s">&quot;katie@example.com&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="s">&quot;real_name&quot;</span><span class="p">:</span> <span class="s">&quot;Katie Doe&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="s">&quot;name&quot;</span><span class="p">:</span> <span class="s">&quot;subscribe&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="s">&quot;fqdn_listname&quot;</span><span class="p">:</span> <span class="s">&quot;new_list1@mail.example.com&quot;</span><span class="p">})</span>   
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s">&#39;Subscribed&#39;</span><span class="p">)</span><span class="o">+</span><span class="s">&#39; katie@example.com&#39;</span><span class="p">)</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>The logged in user (<a class="reference external" href="mailto:james&#37;&#52;&#48;example&#46;com">james<span>&#64;</span>example<span>&#46;</span>com</a>) can now modify his own membership
+using a button which is displayed in list_summary.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/lists/new_list1%40mail.example.com/&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="s">&quot;mm_membership&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>Using the same subscription page we can unsubscribe as well.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/subscriptions/new_list1%40mail.example.com/unsubscribe&#39;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="p">{</span><span class="s">&quot;email&quot;</span><span class="p">:</span> <span class="s">&quot;katie@example.com&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="s">&quot;name&quot;</span><span class="p">:</span> <span class="s">&quot;unsubscribe&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="s">&quot;fqdn_listname&quot;</span><span class="p">:</span> <span class="s">&quot;new_list1@mail.example.com&quot;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s">&#39;Unsubscribed&#39;</span><span class="p">)</span><span class="o">+</span><span class="s">&#39; katie@example.com&#39;</span><span class="p">)</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="mass-subscribe-users-within-settings">
+<h3>Mass Subscribe Users (within settings)<a class="headerlink" href="#mass-subscribe-users-within-settings" title="Permalink to this headline">¶</a></h3>
+<p>Another page related to Mass Subscriptions will be available to List Owners
+as well. This page will allow adding a couple of users to one lists at the
+same time.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">url</span> <span class="o">=</span> <span class="s">&#39;/subscriptions/new_list1%40mail.example.com/mass_subscribe/&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span><span class="o">.</span><span class="n">status_code</span>
+<span class="go">200</span>
+</pre></div>
+</div>
+<p>Try mass subscribing the users <a class="reference external" href="mailto:'liza&#37;&#52;&#48;example&#46;com">'liza<span>&#64;</span>example<span>&#46;</span>com</a>&#8216; and 
+<a class="reference external" href="mailto:'george&#37;&#52;&#48;example&#46;com">'george<span>&#64;</span>example<span>&#46;</span>com</a>&#8216;. Each address should be provided on a separate 
+line so add &#8216;n&#8217; between the names to indicate that this was done 
+(we&#8217;re on a Linux machine which is why the letter &#8216;n&#8217; was used and 
+the double &#8216;&#8217; instead of a single one is to escape the string 
+parsing of Python).</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">url</span> <span class="o">=</span> <span class="s">&#39;/subscriptions/new_list1%40mail.example.com/mass_subscribe/&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">url</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="p">{</span><span class="s">&quot;emails&quot;</span><span class="p">:</span> <span class="s">&quot;liza@example.com</span><span class="se">\n</span><span class="s">george@example.com&quot;</span><span class="p">})</span>
+</pre></div>
+</div>
+<p>If everything was successful, we shall get a positive response from 
+the page. We&#8217;ll check that this was the case.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">_</span><span class="p">(</span><span class="s">&quot;The mass subscription was successful.&quot;</span><span class="p">)</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="delete-the-list">
+<h3>Delete the List<a class="headerlink" href="#delete-the-list" title="Permalink to this headline">¶</a></h3>
+<p>Finally, let&#8217;s delete the list.
+We start by checking that the list is really there (for reference).</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/lists/&#39;</span><span class="p">,</span><span class="n">HTTP_HOST</span><span class="o">=</span><span class="s">&#39;example.com&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="s">&quot;New_list1&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<dl class="docutils">
+<dt>Trying to delete the List we have to confirm this action</dt>
+<dd><div class="first last highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/delete_list/new_list1%40mail.example.com/&#39;</span><span class="p">,)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="s">&quot;Please confirm&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</dd>
+<dt>Confirmed by pressing the button which requests the same page using POST</dt>
+<dd><div class="first last highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/delete_list/new_list1%40mail.example.com/&#39;</span><span class="p">,)</span>
+</pre></div>
+</div>
+</dd>
+<dt>...and check that it&#8217;s been deleted.</dt>
+<dd><div class="first last highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">response</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/lists/&#39;</span><span class="p">,</span><span class="n">HTTP_HOST</span><span class="o">=</span><span class="s">&#39;example.com&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="s">&quot;new_list1</span><span class="si">%40e</span><span class="s">xample.com&quot;</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">content</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="section" id="finishing-test">
+<h2>Finishing Test<a class="headerlink" href="#finishing-test" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt>Don&#8217;t forget to remove the test object after testing all functions</dt>
+<dd><div class="first last highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">teardown_mm</span><span class="p">(</span><span class="n">testobject</span><span class="p">)</span>    
+</pre></div>
+</div>
+</dd>
+</dl>
+</div>
+<div class="section" id="running-the-tests-explained-above">
+<h2>Running the tests explained above.<a class="headerlink" href="#running-the-tests-explained-above" title="Permalink to this headline">¶</a></h2>
+<p>We&#8217;ve added our own test-suite to the Django App which will be executed together with the Django Test. Last thing you should do is running these tests. If they fail you did something wrong, if they succeed you can enjoy the site.</p>
+<p>Run the following in the Site Directory</p>
+<blockquote>
+<div><div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>python manage.py <span class="nb">test</span>
+</pre></div>
+</div>
+</div></blockquote>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Please be aware that we want to run a development instance of mailman you need to stop the stable one first and the tests will open it&#8217;s own mailman temporily.</p>
+</div>
+</div>
+<div class="section" id="accessing-the-rest-client-for-testing">
+<h2>Accessing the REST Client for Testing<a class="headerlink" href="#accessing-the-rest-client-for-testing" title="Permalink to this headline">¶</a></h2>
+<p>If you want to access the Functions, which we use in the views, directly feel free to run the following block of code within a Shell which does have it&#8217;s current Directory within the Django Site Directory.</p>
+<blockquote>
+<div><div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">settings</span> <span class="kn">import</span> <span class="n">API_USER</span><span class="p">,</span> <span class="n">API_PASS</span>
+<span class="kn">from</span> <span class="nn">mailman.client</span> <span class="kn">import</span> <span class="n">Client</span>
+<span class="n">c</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s">&#39;http://localhost:8001/3.0&#39;</span><span class="p">,</span> <span class="n">API_USER</span><span class="p">,</span> <span class="n">API_PASS</span><span class="p">)</span>
+<span class="c">#DEBUG: Python Session</span>
+</pre></div>
+</div>
+</div></blockquote>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Using the Django App - Developers Resource</a><ul>
+<li><a class="reference internal" href="#tests-login-and-permissions">Tests Login and Permissions</a><ul>
+<li><a class="reference internal" href="#list-index">List index</a></li>
+<li><a class="reference internal" href="#login-required">Login Required</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#pages">Pages</a><ul>
+<li><a class="reference internal" href="#create-a-new-list">Create a New List</a></li>
+<li><a class="reference internal" href="#list-summary">List Summary</a></li>
+<li><a class="reference internal" href="#subscriptions">Subscriptions</a></li>
+<li><a class="reference internal" href="#mass-subscribe-users-within-settings">Mass Subscribe Users (within settings)</a></li>
+<li><a class="reference internal" href="#delete-the-list">Delete the List</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#finishing-test">Finishing Test</a></li>
+<li><a class="reference internal" href="#running-the-tests-explained-above">Running the tests explained above.</a></li>
+<li><a class="reference internal" href="#accessing-the-rest-client-for-testing">Accessing the REST Client for Testing</a></li>
+</ul>
+</li>
+</ul>
+
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="setup.html"
+                        title="previous chapter">Installation</a></p>
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/using.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="setup.html" title="Installation"
+             >previous</a> |</li>
+        <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Benedict Stein.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file

=== added directory 'src/postorius/doc/_static'
=== added directory 'src/postorius/doc/_templates'
=== added file 'src/postorius/doc/conf.py'
--- src/postorius/doc/conf.py	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/conf.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,260 @@
+# -*- coding: utf-8 -*-
+#
+# mailmanweb documentation build configuration file, created by
+# sphinx-quickstart on Wed Aug 17 15:43:10 2011.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+#import the source code directory into Python Path for use with Auto Module
+APP_ROOT = os.path.dirname(__file__)
+sys.path.insert(0, os.path.split(APP_ROOT)[0])
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.viewcode']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'mailmanweb'
+copyright = u'2011, Benedict Stein'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '0.1'
+# The full version, including alpha/beta/rc tags.
+release = '0.1'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'mailmanwebdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'mailmanweb.tex', u'mailman\\_django Documentation',
+   u'Benedict Stein', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ('index', 'mailmanweb', u'mailmanweb Documentation',
+     [u'Benedict Stein'], 1)
+]
+
+
+# -- Options for Epub output ---------------------------------------------------
+
+# Bibliographic Dublin Core info.
+epub_title = u'mailmanweb'
+epub_author = u'Benedict Stein'
+epub_publisher = u'Benedict Stein'
+epub_copyright = u'2011, Benedict Stein'
+
+# The language of the text. It defaults to the language option
+# or en if the language is not set.
+#epub_language = ''
+
+# The scheme of the identifier. Typical schemes are ISBN or URL.
+#epub_scheme = ''
+
+# The unique identifier of the text. This can be a ISBN number
+# or the project homepage.
+#epub_identifier = ''
+
+# A unique identification for the text.
+#epub_uid = ''
+
+# HTML files that should be inserted before the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+#epub_pre_files = []
+
+# HTML files shat should be inserted after the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+#epub_post_files = []
+
+# A list of files that should not be packed into the epub file.
+#epub_exclude_files = []
+
+# The depth of the table of contents in toc.ncx.
+#epub_tocdepth = 3
+
+# Allow duplicate toc entries.
+#epub_tocdup = True

=== added file 'src/postorius/doc/index.rst'
--- src/postorius/doc/index.rst	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/index.rst	2012-03-29 06:09:18 +0000
@@ -0,0 +1,12 @@
+Welcome to Postorius' documentation!
+==========================================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 1
+   
+   news.rst
+   setup.rst
+   using.rst
+

=== added file 'src/postorius/doc/news.rst'
--- src/postorius/doc/news.rst	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/news.rst	2012-03-29 06:09:18 +0000
@@ -0,0 +1,43 @@
+====
+News
+====
+
+Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+
+The postorius Django app provides a web user interface to
+access GNU Mailman. 
+
+postorius is free software: you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation, version 3 of the License.
+
+postorius is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
+General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with postorius. If not, see <http://www.gnu.org/licenses/>.
+
+
+1.0 alpha 1 -- "Space Farm"
+===========================
+(2012-03-23)
+
+Many thanks go out to Anna Senarclens de Grancy and Benedict Stein for
+developing the initial versions of this Django app during the Google Summer of
+Code 2010 and 2011. 
+
+* add/remove/edit mailing lists
+* edit list settings
+* show all mailing lists on server
+* subscribe/unsubscribe/mass subscribe mailing lists
+* add/remove domains
+* show basic list info and metrics
+* login using django user account or using BrowserID
+* show basic user profile
+* accept/discard/reject/defer messages
+* Implementation of Django Messages contributed by Benedict Stein (LP: #920084)
+* Dependency check in setup.py contributed by Daniel Mizyrycki
+* Proper processing of acceptable aliases in list settings form contributed by
+  Daniel Mizyrycki

=== added file 'src/postorius/doc/setup.rst'
--- src/postorius/doc/setup.rst	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/setup.rst	2012-03-29 06:09:18 +0000
@@ -0,0 +1,202 @@
+Installation
+============
+
+    .. warning::
+        This installation guide is outdated and needs to be updated.
+        Please use the following resources instead:
+
+        To install GNU Mailman follow the instructions in the documentation:
+        http://packages.python.org/mailman/
+
+        A description how to run postorius on Django's dev server, can be found in 
+        the GNU Mailman wiki: 
+        http://wiki.list.org/display/DEV/A+5+minute+guide+to+get+the+Mailman+web+UI+running
+
+        You can also find a guide how to run postorius using the Apache web server
+        on the Mailman wiki:
+        http://wiki.list.org/display/DEV/How+to+get+Postorius+running+on+Apache+and+mod_wsgi
+
+Mailman3 - a7
+-------------
+ 
+* Check Dependecys
+    .. note::
+        This might differ on different systems - I was testing Ubuntu 11.04 natty and needed to install Postfix before running the installation.
+* Download or branch Mailman3a7 from http://launchpad.net/mailman/3.0/3.0.0a7/+download/mailman-3.0.0a7.tar.gz and unpack it.
+* Change into the unpacked DIR which might be named "mailman-3.0.0a7"
+    .. note::
+        Please be aware that the following steps only work if you're really in that DIR. If you consider adding a subfolder name to the commands those woun't work !
+* Run the Installation from a Shell (not Python)
+
+    .. code-block:: bash
+
+        $ python bootstrap.py
+        $ bin/buildout
+    
+* Vertify that everything was setup correclty and your branch fullfills the version requirements by running it's own test module
+
+    .. code-block:: bash
+    
+        $ bin/test
+        
+* Now you're able to run mailman using
+
+    .. code-block:: bash
+    
+        $ bin/mailman
+    
+Mailman Client / REST Api
+-------------------------
+
+Next thing you need to do is installing the Plugin used for communication with non-mailman-code parts like our WebUI. Within the Client Branch we've put both, Classes to access the Core which are run as a Plugin and some Python Bindings.
+The Python Bindings were used later on within our Django Application to access the Server. Failing to install the Client would result in an offline version of WebUI
+
+Once again start by branching the code which is on Launchpad
+
+    .. code-block:: bash
+    
+        $ bzr branch lp:mailman.client
+
+.. note::
+    We've successfully tested our functionality with Revision 16 - In case the Client gets updated which it surely will in future we can't guarentee that it is compatible anymore.
+    
+As you only want to run the Client and not modify it's code you're fine with running the install command from within the directory. At the moment this requires Sudo Priveledges as files will copied to the Python Site-Packages Directory which is available to all users.
+
+    .. code-block:: bash
+    
+        $ sudo python setup.py install
+
+.. note::
+    If you want to change parts of the Client you can use the development option which will create a Symlink instead of a Hardcopy of all files:
+
+    .. code-block:: bash
+    
+        $ sudo python setup.py develop
+
+All changes will apply once you restart Mailman itself.
+
+Django 1.3
+----------
+During our development we started a Django Site based on the 1.2 Version which is included into Ubuntu's repositorys. This made the installation easy but we ended up having some points which would get a much better code when using some elements introducing in 1.3.
+As Mailman is supposed to be long-time stable - or however you call it - we decided that we should stick to the latest stable version right away. For this reason you're required to install Django 1.3+ which is descriped on their Website. (https://www.djangoproject.com/download/)
+
+.. note::
+    Please be Aware that it's not recommended to run both 1.2 and 1.3 at the same time
+    
+In Django you've got 3 different levels of data.
+- Django Installation Files
+- Django Site
+- Django Apps
+usually you don't see the Installation as it's hidden somewhere within the System and the Apps are simply included into The Site Directory.
+As we wanted to have the possibility to include the App into any Django Site which might already exist we decided to keep Site and App seperated.
+
+During GSoC we've used different branches for this:
+- lp:mailmanwebgsoc2011
+- lp:mailmanwebgsoc2011/django-site-0.1
+
+Django Site Installation
+------------------------
+
+We've created this branch for quick development - everyone is free to use his own Django site, but this one already includes a couple of modifications we've made that will allow running the Development Server just a few seconds after Branching both Site and App.
+
+As far as I know at the moment we've made the following alignments: (All of these are in the settings.py file of the Django Site)
+
+    REST_SERVER = 'localhost:8001'
+    API_USER = 'restadmin' 
+    API_PASS = 'restpass'
+    
+    .. note::
+        These are the default values used by the Mailman Client we've installed earlier. Feel free to modify the password and username if you need to.
+
+MAILMAN_TEST_BINDIR = '/home/benste/Projects/Gsoc_mailman/mailman-3.0.0a7/bin'
+#/home/florian/Development/mailman/bin'
+
+    .. note:: Running the test modules requires to launch a special version of mailman with it's own testing DB otherwise you'd destroy you're sites content during testing. This Path needs to point to YOUR own installation of mailman.
+
+MAILMAN_THEME = "default"
+
+    .. note:: 
+        We decided to allow simple Appearance Modifications, to use a custom CSS you could simply add a Directory within the media directory of the app and Link it's name here. All HTML Pages will use the Styles from the Directory mentioned in here
+
+PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
+MEDIA_ROOT =  os.path.join(os.path.split(PROJECT_PATH)[0], "mailman_django/media/mailman_django/")
+    .. note:: 
+        Absolute path to the directory that holds media.
+        Example: "/home/media/media.lawrence.com/"
+
+MEDIA_URL = '/mailman_media/'
+
+    .. note::
+        URL that handles the media served from MEDIA_ROOT. Make sure to use a trailing slash if there is a path component (optional in other cases).Examples: "http://media.lawrence.com", "http://example.com/media/"
+
+AUTHENTICATION_BACKENDS = (
+    'mailman_django.auth.restbackend.RESTBackend',
+    'django.contrib.auth.backends.ModelBackend'
+    )
+
+    .. note::
+        This creates a connection in between Djangos Login and Permission Decorators which we use for authentification and a custom Backend which we created in Preparation to work together with the REST API or an upcoming Middleware.
+        You need to keep the Django one for testing fallback.
+    
+TEMPLATE_CONTEXT_PROCESSORS=(
+    "django.contrib.auth.context_processors.auth",
+    "django.core.context_processors.debug",
+    "django.core.context_processors.i18n",
+    "django.core.context_processors.media",
+    "django.core.context_processors.csrf",
+    "django.contrib.messages.context_processors.messages",
+    "mailman_django.context_processors.lists_of_domain",
+    "mailman_django.context_processors.render_MAILMAN_THEME",
+    "mailman_django.context_processors.extend_ajax"
+
+    .. note::
+        We're using Context Processors to easily render value which we need in nearly every view.
+    
+ROOT_URLCONF = 'mailman_django.urls'
+
+    .. note::
+        This is where our URL Config is - if you run your own site with other Apps as well you might want to adjust this to your urls.py which includes our file.
+
+TEMPLATE_DIRS = (
+    os.path.join(PROJECT_PATH, "mailman_django/templates"),        
+
+    .. note::
+        Adds our own Templates   
+    
+INSTALLED_APPS = (
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'django.contrib.admin',
+    'mailman_django',
+
+    .. note::
+        Makes sure that Django knows about our directory as an App and creates needed Tables () when running
+
+    .. code-block:: bash
+    
+        $ python manage.py syncdb
+
+Now that you know about all these you might start the development server. As usual in Django this is done by running
+
+    .. code-block:: bash
+    
+        $ python manage.py runserver
+
+within the Django Site Directory - as usual the default address is localhost:8000
+Of course it will only be able to start once our app is in place as well.
+
+Django Application
+------------------
+First get the files, and make sure you paste them into your Project directory and adjust it's name to the appropriate configuration you've made earlier in the Django Site. Remeber our default is mailman_django
+
+    .. code-block:: bash
+    
+        $ bzr branch lp:mailmanwebgsoc2011
+
+.. note:: 
+    We've tested Revision 172
+    
+.. note::
+    We're planning to ease up installation by creating an egg    

=== added file 'src/postorius/doc/using.rst'
--- src/postorius/doc/using.rst	1970-01-01 00:00:00 +0000
+++ src/postorius/doc/using.rst	2012-03-29 06:09:18 +0000
@@ -0,0 +1,32 @@
+Using the Django App - Developers Resource
+==========================================
+
+.. warning::
+    This user guide is outdated and needs to be updated.
+
+.. automodule:: tests.tests
+
+Running the tests explained above.
+----------------------------------
+We've added our own test-suite to the Django App which will be executed together with the Django Test. Last thing you should do is running these tests. If they fail you did something wrong, if they succeed you can enjoy the site.
+
+Run the following in the Site Directory
+
+    .. code-block:: bash
+    
+        $ python manage.py test
+
+.. note::
+    Please be aware that we want to run a development instance of mailman you need to stop the stable one first and the tests will open it's own mailman temporily.
+
+Accessing the REST Client for Testing
+-------------------------------------
+
+If you want to access the Functions, which we use in the views, directly feel free to run the following block of code within a Shell which does have it's current Directory within the Django Site Directory.
+
+    .. code-block:: python
+    
+        from settings import API_USER, API_PASS
+        from mailman.client import Client
+        c = Client('http://localhost:8001/3.0', API_USER, API_PASS)
+        #DEBUG: Python Session

=== added file 'src/postorius/fieldset_forms.py'
--- src/postorius/fieldset_forms.py	1970-01-01 00:00:00 +0000
+++ src/postorius/fieldset_forms.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+#
+# This file is part of Postorius.
+#
+# Postorius is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# Postorius is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Postorius.  If not, see <http://www.gnu.org/licenses/>.
+
+from django.forms import Form
+from django.utils import safestring
+from django.forms.forms import BoundField
+from django.forms.util import ErrorList
+
+class FieldsetError(Exception):
+    pass
+
+class FieldsetForm(Form):
+    """
+    Extends a standard form and adds fieldsets and the possibililty
+    to use as_div for the automatic rendering of form fields. Inspired
+    by WTForm.
+    """
+
+    def __init__(self, *args, **kwargs):
+        """Initialize a FormsetField."""
+        super(FieldsetForm, self).__init__(*args, **kwargs)
+        # check if the user specified the wished layout of the form
+        if hasattr(self, 'Meta') and hasattr(self.Meta, 'layout'):
+            msg = "Meta.layout must be iterable"
+            assert hasattr(self.Meta.layout, '__getitem__'), msg
+            self.layout = self.Meta.layout
+        else:
+            self.layout = [["All"]]
+            self.layout[0][1:]=(self.fields.keys())
+            
+    def as_div(self):
+        """Render the form as a set of <div>s."""
+        output = ""
+        #Adding Errors
+        try: output += str(self.errors["NON_FIELD_ERRORS"])
+        except: pass
+        #create the fieldsets
+        for index in range(len(self.layout)):
+            output += self.create_fieldset(self.layout[index])
+        return safestring.mark_safe(output)
+
+    def create_fieldset(self, field):
+        """
+        Create a <fieldset> around a number of field instances.
+        field[0] is the name of the fieldset and field[1:] the fields
+        it should include.
+        """
+        # Create the divs in each fieldset by calling create_divs.
+        return u'<fieldset><legend>%s</legend>%s</fieldset>' % (field[0], 
+            self.create_divs(field[1:]))
+    
+    def create_divs(self, fields):
+        """Create a <div> for each field."""
+        output = ""
+        for field in fields:
+            try:
+                # create a field instance for the bound field
+                field_instance = self.fields[field]
+            except KeyError:
+                # could not create the instance so throw an exception
+                # msg on a separate line since the line got too long 
+                # otherwise
+                msg = "Could not resolve form field '%s'." % field
+                raise FieldsetError(msg)
+            # create a bound field containing all the necessary fields 
+            # from the form
+            bound_field = BoundField(self, field_instance, field)
+            output += '<div class="field %(class)s">%(label)s%(help_text)s%(errors)s%(field)s</div>\n' % \
+                     {'class': bound_field.name, 
+                      'label': bound_field.label, 
+                      'help_text': bound_field.help_text, 
+                      'errors': bound_field.errors, 
+                      'field': unicode(bound_field)}
+        return output

=== added file 'src/postorius/forms.py'
--- src/postorius/forms.py	1970-01-01 00:00:00 +0000
+++ src/postorius/forms.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,1022 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+#
+# This file is part of Postorius.
+#
+# Postorius is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# Postorius is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Postorius.  If not, see <http://www.gnu.org/licenses/>.
+
+from django import forms
+from django.core.validators import validate_email
+from django.utils.translation import gettext as _
+from fieldset_forms import FieldsetForm
+
+#Fieldsets for use within the views
+class DomainNew(FieldsetForm):
+    """ 
+    Form field to add a new domain
+    """
+    mail_host = forms.CharField(
+        label = _('Mail Host'), 
+        error_messages = {'required': _('Please a domain name'), 
+                          'invalid': _('Please enter a valid domain name.')},
+        required = True
+    )
+    web_host = forms.CharField(
+        label = _('Web Host'), 
+        error_messages = {'required': _('Please a domain name'), 
+                          'invalid': _('Please enter a valid domain name.')},
+        required = True
+    )
+    description = forms.CharField(
+        label = _('Description'), 
+        required = False
+    )
+    info = forms.CharField(
+        label = _('Information'), 
+        required = False
+    )
+    def clean_mail_host(self):
+        mail_host = self.cleaned_data['mail_host']
+        try:
+            validate_email('mail@' + mail_host)
+        except:
+            raise forms.ValidationError(_("Enter a valid Mail Host"))
+        return mail_host
+
+    def clean_web_host(self):
+        web_host = self.cleaned_data['web_host']
+        try:    
+            validate_email('mail@' + web_host)
+        except: 
+            raise forms.ValidationError(_("Please enter a valid Web Host"))
+        return web_host
+    
+    class Meta:
+        """
+        Class to handle the automatic insertion of fieldsets and divs.
+        
+        To use it: add a list for each wished fieldset. The first item in 
+        the list should be the wished name of the fieldset, the following 
+        the fields that should be included in the fieldset.
+        """
+        layout = [["Please enter Details",
+                   "mail_host",
+                   "web_host",
+                   "description",]]
+
+    
+class ListNew(FieldsetForm):
+    """
+    Form fields to add a new list. Languages are hard coded which should 
+    be replaced by a REST lookup of available languages.
+    """    
+    listname = forms.CharField(
+        label = _('List Name'), 
+        required = True,    
+        error_messages = {'required': _('Please enter a name for your list.'), 
+                          'invalid': _('Please enter a valid list name.')}
+        )                         
+
+    mail_host = forms.ChoiceField()
+
+    list_owner = forms.EmailField(
+        label = _('Inital list owner address'),
+        error_messages = {
+            'required': _("Please enter the list owner's email address."), 
+        },
+        required = True)
+    advertised = forms.ChoiceField(
+        widget = forms.RadioSelect(),
+        label = _('Advertise this list?'), 
+        error_messages = {
+            'required': _("Please choose a list type."), 
+        },
+        required = True,
+        choices = (
+            (True, _("Advertise this list in list index")),
+            (False, _("Hide this list in list index")),
+        ))
+    description = forms.CharField(
+        label = _('Description'),
+        required = True)           
+
+    def __init__(self,domain_choices, *args, **kwargs):  
+        super(ListNew, self).__init__(*args, **kwargs)  
+        self.fields["mail_host"] = forms.ChoiceField(
+            widget = forms.Select(),
+            label = _('Mail Host'),
+            required = True, 
+            choices = domain_choices,
+            error_messages = {'required': _("Choose an existing Domain."),
+                              'invalid':"ERROR-todo_forms.py"  }#todo
+            )
+            
+    def clean_listname(self):
+        try:    
+            validate_email(self.cleaned_data['listname']+'@example.net')
+        except: 
+            raise forms.ValidationError(_("Please enter a valid listname"))
+        return self.cleaned_data['listname']
+
+    class Meta:
+        """
+        Class to handle the automatic insertion of fieldsets and divs.
+        
+        To use it: add a list for each wished fieldset. The first item in 
+        the list should be the wished name of the fieldset, the following 
+        the fields that should be included in the fieldset.
+        """
+        layout = [["List Details",
+                   "listname",
+                   "mail_host",
+                   "list_owner",
+                   "description",
+                   "advertised"],]
+
+class ListSubscribe(FieldsetForm):
+    """Form fields to join an existing list.
+    """
+    email = forms.EmailField(label = _('Your email address'),
+        widget = forms.HiddenInput(),
+        error_messages = {'required': _('Please enter an email address.'), 
+                          'invalid': _('Please enter a valid email address.')})
+    display_name = forms.CharField(label=_('Your name (optional)'),
+                                   required=False)
+    
+class ListUnsubscribe(FieldsetForm):
+    """Form fields to leave an existing list.
+    """
+    email = forms.EmailField(label = _('Your email address'), 
+        widget = forms.HiddenInput(),
+        error_messages = {
+            'required': _('Please enter an email address.'), 
+            'invalid': _('Please enter a valid email address.')})
+
+class ListSettings(FieldsetForm):
+    """Form fields dealing with the list settings.
+    """
+    choices = ((True, _('Yes')), (False, _('No')))
+    list_name = forms.CharField(
+        label = _('List Name'),
+        required = False,
+    )
+    host_name = forms.CharField(
+        label = _('Domain host name'),
+        required = False,
+    )
+    fqdn_listname = forms.CharField(
+        label = _('Fqdn listname'),
+        required = False,
+    )
+    include_list_post_header = forms.TypedChoiceField(
+        coerce=lambda x: x =='True',
+        choices=((True, _('Yes')), (False, _('No'))),
+        widget = forms.RadioSelect,
+        required = False,
+        label = _('Include list post header'),
+    )
+    include_rfc2369_headers = forms.TypedChoiceField(
+        coerce=lambda x: x =='True',
+        choices=((True, _('Yes')), (False, _('No'))),
+        widget = forms.RadioSelect,
+        required = False,
+        label = _('Include RFC2369 headers'),
+    )
+    autorespond_choices = (
+        ("none", _("No automatic response")),
+        ("respond_and_discard", _("Respond and discard message")),
+        ("respond_and_continue", _("Respond and continue processing")),
+    )
+    autorespond_owner = forms.ChoiceField(
+        choices = autorespond_choices,
+        widget = forms.RadioSelect,
+        label = _('Autorespond to list owner'),
+    )
+    autoresponse_owner_text = forms.CharField(
+        label = _('Autoresponse owner text'),
+        widget = forms.Textarea(),
+        required = False,
+    )
+    autorespond_postings = forms.ChoiceField(
+        choices = autorespond_choices,
+        widget = forms.RadioSelect,
+        label = _('Autorespond postings'),
+    )
+    autoresponse_postings_text = forms.CharField(
+        label = _('Autoresponse postings text'),
+        widget = forms.Textarea(),
+        required = False,
+    )
+    autorespond_requests = forms.ChoiceField(
+        choices = autorespond_choices,
+        widget = forms.RadioSelect,
+        label = _('Autorespond requests'),
+    )
+    autoresponse_request_text = forms.CharField(
+        label = _('Autoresponse request text'),
+        widget = forms.Textarea(),
+        required = False,
+    )
+    autoresponse_grace_period = forms.CharField(
+        label = _('Autoresponse grace period'),
+    )
+    bounces_address = forms.EmailField(
+        label = _('Bounces Address'),
+        required = False,
+    )
+    #ban_list = forms.CharField(
+        #label = _('Ban list'),
+        #widget = forms.Textarea
+    #)
+    #bounce_info_stale_after = forms.CharField(
+        #label = _('Bounce info stale after'),
+    #)
+    #bounce_matching_headers = forms.CharField(
+        #label = _('Bounce matching headers'),
+    #)
+    #bounce_notify_owner_on_disable = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Bounce notify owner on disable'),
+    #)
+    #bounce_notify_owner_on_removal = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Bounce notify owner on removal'),
+    #)
+    #bounce_processing = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Bounce processing'),
+    #)
+    #bounce_score_threshold = forms.IntegerField(
+        #label = _('Bounce score threshold'),
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    #bounce_score_threshold = forms.IntegerField(
+        #label = _('Bounce score threshold'),
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    #bounce_unrecognized_goes_to_list_owner = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Bounce unrecognized goes to list owner'),
+    #)
+    #bounce_you_are_disabled_warnings = forms.IntegerField(
+        #label = _('Bounce you are disabled warnings'),
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    #bounce_you_are_disabled_warnings_interval = forms.CharField(
+        #label = _('Bounce you are disabled warnings interval'),
+    #)
+    #archive = forms.BooleanField(
+        #widget = forms.RadioSelect(choices=choices),
+        #required = False,
+        #label = _('Archive'),
+        #)
+    #archive_private = forms.BooleanField(
+        #widget = forms.RadioSelect(choices=choices),
+        #required = False,
+        #label = _('Private Archive'),
+        #)
+    advertised = forms.TypedChoiceField(
+        coerce=lambda x: x =='True', 
+        choices=((True, _('Yes')), (False, _('No'))),
+        widget = forms.RadioSelect,
+        label = _('Advertise the existance of this list?'), 
+        )
+    filter_content = forms.TypedChoiceField(
+        coerce=lambda x: x =='True',
+        choices=((True, _('Yes')), (False, _('No'))),
+        widget = forms.RadioSelect,
+        required = False,
+        label = _('Filter content'),
+    )
+    collapse_alternatives = forms.TypedChoiceField(
+        coerce=lambda x: x =='True',
+        choices=((True, _('Yes')), (False, _('No'))),
+        widget = forms.RadioSelect,
+        required = False,
+        label = _('Collapse alternatives'),
+    )
+    convert_html_to_plaintext = forms.TypedChoiceField(
+        coerce=lambda x: x =='True',
+        choices=((True, _('Yes')), (False, _('No'))),
+        widget = forms.RadioSelect,
+        required = False,
+        label = _('Convert html to plaintext'),
+    )
+    #default_member_moderation = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Default member moderation'),
+    #)
+    action_choices = (
+        ("hold", _("Hold for moderator")),
+        ("reject", _("Reject (with notification)")),
+        ("discard", _("Discard (no notification)")),
+        ("accept", _("Accept")),
+        ("defer", _("Defer")),
+    )
+    default_member_action = forms.ChoiceField(
+        widget = forms.RadioSelect(),
+        label = _('Default action to take when a member posts to the list: '),
+        error_messages = {
+            'required': _("Please choose a default member action."),
+        },
+        required = True,
+        choices = action_choices,
+    )
+    default_nonmember_action = forms.ChoiceField(
+        widget = forms.RadioSelect(),
+        label = _('Default action to take when a non-member posts to the list: '),
+        error_messages = {
+            'required': _("Please choose a default non-member action."),
+        },
+        required = True,
+        choices = action_choices,
+        )
+    description = forms.CharField(
+        label = _('Description'),
+        widget = forms.Textarea()
+    )
+    #digest_footer = forms.CharField(
+        #label = _('Digest footer'),
+    #)
+    #digest_header = forms.CharField(
+        #label = _('Digest header'),
+    #)
+    #digest_is_default = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Digest is default'),
+    #)
+    #digest_send_periodic = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Digest send periodic'),
+    #)
+    digest_size_threshold = forms.DecimalField(
+        label = _('Digest size threshold'),
+    )
+    #digest_volume_frequency = forms.CharField(
+        #label = _('Digest volume frequency'),
+    #)
+    #digestable = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Digestable'),
+    #)
+    digest_last_sent_at = forms.IntegerField(
+        label = _('Digest last sent at'),
+        error_messages = {
+            'invalid': _('Please provide an integer.'),
+        },
+        required = False,
+    )
+    #discard_these_nonmembers = forms.CharField(
+        #label = _('Discard these nonmembers'),
+        #widget = forms.Textarea
+    #)
+    #emergency = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Emergency'),
+    #)
+    #encode_ascii_prefixes = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Encode ascii prefixes'),
+    #)
+    #first_strip_reply_to = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('First strip reply to'),
+    #)
+    #forward_auto_discards = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Forward auto discards'),
+    #)
+    #gateway_to_mail = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Gateway to mail'),
+    #)
+    #gateway_to_news = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Gateway to news'),
+    #)
+    generic_nonmember_action = forms.IntegerField(
+        label = _('Generic nonmember action'),
+        error_messages = {
+            'invalid': _('Please provide an integer.')
+        }
+    )
+    #goodbye_msg = forms.CharField(
+        #label = _('Goodbye message'),
+    #)
+    #header_matches = forms.CharField(
+        #label = _('Header matches'),
+        #widget = forms.Textarea
+    #)
+    #hold_these_nonmembers = forms.CharField(
+        #label = _('Hold these nonmembers'),
+        #widget = forms.Textarea
+    #)
+    #info = forms.CharField(
+        #label = _('Information'),
+    #)
+    #linked_newsgroup = forms.CharField(
+        #label = _('Linked newsgroup'),
+    #)
+    mail_host = forms.CharField(
+        label = _('Mail Host'),
+        error_messages = {'required': _('Please a domain name'),
+                          'invalid': _('Please enter a valid domain name.')},
+        required = True
+    )
+    #max_days_to_hold = forms.IntegerField(
+        #label = _('Maximum days to hold'),
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    #max_message_size = forms.IntegerField(
+        #label = _('Maximum message size'),
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    #max_num_recipients = forms.IntegerField(
+        #label = _('Maximum number of recipients'), 
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    #member_moderation_action = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Member moderation action'),
+    #)
+    #member_moderation_notice = forms.CharField(
+        #label = _('Member moderation notice'),
+    #)
+    #mime_is_default_digest = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Mime is default digest'),
+    #)
+    #moderator_password = forms.CharField(
+        #label = _('Moderator password'),
+        #widget = forms.PasswordInput,
+        #error_messages = {'required': _('Please enter your password.'), 
+                          #'invalid': _('Please enter a valid password.')},
+    #)
+    #msg_footer = forms.CharField(
+        #label = _('Message footer'),
+    #)
+    #msg_header = forms.CharField(
+        #label = _('Message header'),
+    #)
+    #new_member_options = forms.IntegerField(
+        #label = _('New member options'),
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    #news_moderation = forms.CharField(
+        #label = _('News moderation'),
+    #)
+    #news_prefix_subject_too = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('News prefix subject too'),
+    #)
+    #nntp_host = forms.CharField(
+        #label = _('Nntp host'),
+    #)
+    #nondigestable = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Nondigestable'),
+    #)
+    #nonmember_rejection_notice = forms.CharField(
+        #label = _('Nonmember rejection notice'),
+    #)
+    next_digest_number = forms.IntegerField(
+        label = _('Next digest number'),
+        error_messages = {
+            'invalid': _('Please provide an integer.'),
+        },
+        required = False,
+    )
+    no_reply_address = forms.EmailField(
+        label = _('No reply address'),
+        required = False,
+    )
+    #obscure_addresses = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Obscure addresses'), 
+    #)
+    #personalize = forms.CharField(
+        #label = _('Personalize'),
+    #)
+    posting_pipeline = forms.CharField(
+        label = _('Pipeline'),
+    )
+    post_id = forms.IntegerField(
+        label = _('Post ID'),
+        error_messages = {
+            'invalid': _('Please provide an integer.'),
+        },
+        required = False,
+    )
+    #preferred_language = forms.CharField(
+        #label = _('Preferred language'),
+    #)
+    #private_roster = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Private roster'),
+    #)
+    display_name = forms.CharField(
+        label = _('Display name'),
+    )
+    #reject_these_nonmembers = forms.CharField(
+        #label = _('Reject these nonmembers'),
+        #widget = forms.Textarea
+    #)
+    
+    reply_goes_to_list = forms.ChoiceField(
+        label = _('Reply goes to list'),
+        widget = forms.Select(),
+        error_messages = {
+            'required': _("Please choose a reply-to action."),
+        },
+        choices = (
+            ("no_munging", _("No Munging")),
+            ("point_to_list", _("Reply goes to list")),
+            ("explicit_header", _("Explicit Reply-to header set")),
+			),
+    )
+    #reply_to_address = forms.EmailField(
+        #label = _('Reply to address'),
+    #)
+    #require_explicit_destination = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Require explicit destination'),
+    #)
+    #respond_to_post_requests = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Respond to post requests'),
+    #)
+    request_address = forms.EmailField(
+        label = _('Request address'),
+        required = False,
+    )
+    #scrub_nondigest = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Scrub nondigest'),
+    #)
+    #send_goodbye_msg = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Send goodbye message'),
+    #)
+    #send_reminders = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Send reminders'),
+    #)
+    send_welcome_message = forms.TypedChoiceField(
+        coerce=lambda x: x =='True',
+        choices=((True, _('Yes')), (False, _('No'))),
+        widget = forms.RadioSelect,
+        required = False,
+        label = _('Send welcome message'),
+    )
+    #start_chain = forms.CharField(
+        #label = _('Start chain'),
+    #)
+    #subject_prefix = forms.CharField(
+        #label = _('Subject prefix'),
+    #)
+    #subscribe_auto_approval = forms.CharField(
+        #label = _('Subscribe auto approval'),
+        #widget = forms.Textarea
+    #)
+    #subscribe_policy = forms.IntegerField(
+        #label = _('Subscribe policy'),
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    scheme = forms.CharField(
+        label = _('Scheme'),
+        required = False,
+    )
+    #topics = forms.CharField(
+        #label = _('Topics'),
+        #widget = forms.Textarea
+    #)
+    #topics_bodylines_limit = forms.IntegerField(
+        #label = _('Topics bodylines limit'),
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    #topics_enabled = forms.BooleanField(
+        #widget = forms.RadioSelect(choices = choices), 
+        #required = False,
+        #label = _('Topics enabled'),
+    #)
+    #unsubscribe_policy = forms.IntegerField(
+        #label = _('Unsubscribe policy'),
+        #error_messages = {
+            #'invalid': _('Please provide an integer.')
+        #}
+    #)
+    #welcome_msg = forms.CharField(
+        #label = _('Welcome message'),
+    #)
+    #volume = forms.IntegerField(
+    #    label = _('Volume'),
+    #    required = False,
+    #)
+    #web_host = forms.CharField(
+    #    label = _('Web host'),
+    #    required = False,
+    #)
+    acceptable_aliases = forms.CharField(
+        widget = forms.Textarea(),
+        label = _("Acceptable aliases"),
+        required = False,
+    )
+    admin_immed_notify = forms.BooleanField(
+        widget = forms.RadioSelect(choices = choices), 
+        required = False,
+        label = _('Admin immed notify'),
+    )
+    admin_notify_mchanges = forms.BooleanField(
+        widget = forms.RadioSelect(choices = choices), 
+        required = False,
+        label = _('Admin notify mchanges'),
+    )
+    administrivia = forms.BooleanField(
+        widget = forms.RadioSelect(choices = choices), 
+        required = False,
+        label = _('Administrivia'),
+    )
+    anonymous_list = forms.TypedChoiceField(
+        coerce=lambda x: x =='True',
+        choices=((True, _('Yes')), (False, _('No'))),
+        widget = forms.RadioSelect,
+        required = False,
+        label = _('Anonymous list'),
+    )
+    created_at = forms.IntegerField(
+        label = _('Created at'),
+        widget = forms.HiddenInput(),
+        required = False,
+    )
+    join_address = forms.EmailField(
+        label = _('Join address'),
+        required = False,
+    )
+    last_post_at = forms.IntegerField(
+        label = _('Last post at'),
+        required = False,
+    )
+    leave_address = forms.EmailField(
+        label = _('Leave address'),
+        required = False,
+    )
+    owner_address = forms.EmailField(
+        label = _('Owner Address'),
+        required = False,
+    )
+    posting_address = forms.EmailField(
+        label = _('Posting Address'),
+        required = False,
+    )
+    #Descriptions used in the Settings Overview Page
+    section_descriptions = {
+        "List Identity":_("Basic identity settings for the list"),
+        "Automatic Responses":_("All options for Autoreply"),
+        "Alter Messages":_("Settings that modify member messages"),
+        "Digest": _("Digest-related options"),
+        "Message Acceptance": _("Options related to accepting messages"),
+        }
+    def clean_acceptable_aliases(self):
+        data = self.cleaned_data['acceptable_aliases']
+        return data.splitlines()
+    def __init__(self,visible_section,visible_option, *args, **kwargs):  
+        super(ListSettings, self).__init__(*args, **kwargs)  
+        #if settings:raise Exception(settings) #debug
+        if visible_option:
+            options=[]
+            for option in self.layout:
+                options += option[1:]
+            if visible_option in options:
+                self.layout = [["",visible_option]]
+        if visible_section:
+            sections=[]
+            for section in self.layout:
+                sections.append(section[0])  
+            if visible_section in sections:
+                for section in self.layout:
+                    if section[0] == visible_section:
+                        self.layout = [section]
+        try:
+            if data:
+                for section in self.layout:
+                    for option in section[1:]:    
+                        self.fields[option].initial = settings[option]
+        except:
+            pass #empty form                        
+    def truncate(self):
+        """
+        truncates the form to have only those fields which are in self.layout 
+        """
+        #delete form.fields which are not in the layout
+        used_options=[]
+        for section in self.layout:
+            used_options += section[1:]
+       
+        for key in self.fields.keys():
+            if not(key in used_options):
+                del self.fields[key]                
+            
+    class Meta:
+        """Class to handle the automatic insertion of fieldsets and divs.
+        
+        To use it: add a list for each wished fieldset. The first item in 
+        the list should be the wished name of the fieldset, the following 
+        the fields that should be included in the fieldset.
+        """        
+        # just a really temporary layout to see that it works. -- Anna
+        layout = [
+            ["List Identity", "display_name", "mail_host", "description", 
+             "advertised"], 
+             #"info", "list_name", "host_name", "list_id", "fqdn_listname", 
+             #"http_etag", "volume", "web_host"
+            ["Automatic Responses", "autorespond_owner",
+             "autoresponse_owner_text", "autorespond_postings",
+             "autoresponse_postings_text", "autorespond_requests",
+             "autoresponse_request_text", "autoresponse_grace_period",
+             "send_welcome_message", "admin_immed_notify",
+             "admin_notify_mchanges"],
+            ["Alter Messages", "filter_content", "collapse_alternatives", 
+             "convert_html_to_plaintext", "anonymous_list",
+             "include_rfc2369_headers", "reply_goes_to_list",
+             "include_list_post_header", "posting_pipeline"], 
+            ["Digest", "digest_size_threshold"],
+            ["Message Acceptance", "acceptable_aliases", "administrivia", 
+             "default_nonmember_action", "default_member_action"],
+             #["Bounce", "ban_list", 
+             #"bounce_info_stale_after", "bounce_matching_headers", 
+             # "bounce_notify_owner_on_disable",
+             #"bounce_notify_owner_on_removal", "bounce_processing",
+             #"bounce_score_threshold",
+             #"bounce_unrecognized_goes_to_list_owner",
+             #"bounce_you_are_disabled_warnings",
+             #"bounce_you_are_disabled_warnings_interval"],
+            #["Archiving", "archive"],
+            #["Content Filtering", "filter_content", "collapse_alternatives",
+             #"convert_html_to_plaintext"], 
+             #"default_member_moderation", "scheme"
+            #["Digest", "digest_size_threshold"], #"next_digest_number", 
+             #"last_post_at", "digest_last_sent_at", "digest_footer", 
+             #"digest_header", "digest_is_default",
+             #"digest_send_periodic", "digest_size_threshold",
+             #"digest_volume_frequency", "digestable"],
+             #["Moderation","discard_these_nonmembers", "emergency",
+             #"generic_nonmember_action", "generic_nonmember_action",
+             #"member_moderation_action", "member_moderation_notice",
+             #"moderator_password", "hold_these_nonmembers"],
+             #["Message Text", "msg_header", "msg_footer", "welcome_msg", 
+             #"goodbye_msg"],
+            #["Privacy", "advertised", "admin_immed_notify", 
+            # "admin_notify_mchanges", "anonymous_list"], #"archive_private", 
+            #"obscure_addresses", "private_roster",
+            #["Addresses", "bounces_address", "join_address", "leave_address", 
+             #"no_reply_address", "owner_address", "posting_address", 
+             #"request_address"],
+            #["Assorted", "acceptable_aliases", "administrivia", 
+             #"posting_pipeline"]
+             #"post_id", "encode_ascii_prefixes", "first_strip_reply_to",
+             #"forward_auto_discards", "gateway_to_mail", "gateway_to_news",
+             #"header_matches", "linked_newsgroup", "max_days_to_hold",
+             #"max_message_size", "max_num_recipients",
+             #"mime_is_default_digest", "new_member_options",
+             #"news_moderation", "news_prefix_subject_too", "nntp_host",
+             #"nondigestable", "nonmember_rejection_notice", "personalize",
+             #"preferred_language",
+             #"reject_these_nonmembers", "reply_goes_to_list",
+             #"reply_to_address", "require_explicit_destination",
+             #"respond_to_post_requests", "scrub_nondigest",
+             #"send_goodbye_msg", "send_reminders", "send_welcome_msg",
+             #"start_chain", "subject_prefix", "subscribe_auto_approval",
+             #"subscribe_policy", "topics", "topics_bodylines_limit",
+             #"topics_enabled", "unsubscribe_policy"]]
+             ]
+
+class Login(FieldsetForm):
+    """Form fields to let the user log in.
+    """
+    user = forms.EmailField(
+        label = _('Email address'),
+        error_messages = {'required': _('Please enter an email address.'), 
+                          'invalid': _('Please enter a valid email address.')},
+        required = True,
+    )
+    password = forms.CharField(
+        label = _('Password'),
+        widget = forms.PasswordInput,
+        error_messages = {'required': _('Please enter your password.'), 
+                          'invalid': _('Please enter a valid password.')},
+        required = True,
+    )
+
+    class Meta:
+        """
+        Class to define the name of the fieldsets and what should be
+        included in each.
+        """
+        layout = [["Login", "user", "password"],]
+
+class ListMassSubscription(FieldsetForm):
+    """Form fields to masssubscribe users to a list.
+    """
+    emails = forms.CharField(
+        label = _('Emails to mass subscribe'),
+        widget = forms.Textarea,
+    )
+
+    class Meta:
+        """
+        Class to define the name of the fieldsets and what should be
+        included in each.
+        """
+        layout = [["Mass subscription", "emails"],]
+
+class MembershipSettings(FieldsetForm):
+    """Form handling the membership settings.
+    """
+    choices = ((True, _('Yes')), (False, _('No')),)
+    acknowledge_posts = forms.BooleanField(
+        widget = forms.RadioSelect(choices = choices), 
+        required = False,
+        label = _('Acknowledge posts'),
+    )
+    hide_address = forms.BooleanField(
+        widget = forms.RadioSelect(choices = choices), 
+        required = False,
+        label = _('Hide address'),
+    )
+    receive_list_copy = forms.BooleanField(
+        widget = forms.RadioSelect(choices = choices), 
+        required = False,
+        label = _('Receive list copy'),
+    )
+    receive_own_postings = forms.BooleanField(
+        widget = forms.RadioSelect(choices = choices), 
+        required = False,
+        label = _('Receive own postings'),
+    )
+    delivery_mode = forms.ChoiceField(
+        widget = forms.Select(),
+        error_messages = {
+            'required': _("Please choose a mode."),
+        },
+        required = False,
+        choices = (
+            ("", _("Please choose")),
+            ("delivery_mode", "some mode..."), # TODO: this must later
+            # be dynalically changed to what modes the list offers
+            # (see the address field in __init__ in UserSettings for
+            # how to do this)
+        ),
+        label = _('Delivery mode'),
+    )
+    delivery_status = forms.ChoiceField(
+        widget = forms.Select(),
+        error_messages = {
+            'required': _("Please choose a status."),
+        },
+        required = False,
+        choices = (
+            ("", _("Please choose")),
+            ("delivery_status", "some status..."), # TODO: this must 
+            # later be dynalically changed to what statuses the list 
+            # offers (see the address field in __init__ in UserSettings
+            # for how to do this)
+        ),
+        label = _('Delivery status'),
+    )
+
+    class Meta:
+        """
+        Class to define the name of the fieldsets and what should be
+        included in each.
+        """
+        layout = [["Membership Settings", "acknowledge_posts", "hide_address", 
+                   "receive_list_copy", "receive_own_postings", 
+                   "delivery_mode", "delivery_status"],]
+
+class UserSettings(FieldsetForm):
+    """Form handling the user settings.
+    """
+    def __init__(self, address_choices, *args, **kwargs):
+        """
+        Initialize the user settings with a field 'address' where 
+        the values are set dynamically in the view.
+        """
+        super(UserSettings, self).__init__(*args, **kwargs)
+        self.fields['address'] = forms.ChoiceField(choices=(address_choices), 
+            widget = forms.Select(), 
+            error_messages = {'required': _("Please choose an address."),},
+            required = True,
+            label = _('Default email address'),)
+    
+    id = forms.IntegerField(    # this should probably not be 
+                                # changeable...
+        label = _('ID'),
+        initial = 9,
+        widget = forms.HiddenInput(),
+        required = False,
+        error_messages = {
+            'invalid': _('Please provide an integer ID.')
+        }
+    )
+    mailing_list = forms.CharField( # not sure this needs to be here
+        label = _('Mailing list'),
+        widget = forms.HiddenInput(),
+        required = False,
+    )
+    display_name =forms.CharField(
+        label = _('Display name'),
+        required = False,
+    )
+    preferred_language = forms.ChoiceField(
+        label = _('Default/Preferred language'),
+        widget = forms.Select(),
+        error_messages = {
+            'required': _("Please choose a language."),
+        },
+        required = False,
+        choices = (
+            ("", _("Please choose")),
+            ("English (USA)", "English (USA)"), # TODO: this must later
+            # be dynalically changed to what languages the list offers
+            # (see the address field in __init__ for how to do this)
+        )
+    )
+    password = forms.CharField(
+        label = _('Change password'),
+        widget = forms.PasswordInput,
+        required = False,
+        error_messages = {'required': _('Please enter your password.'), 
+                          'invalid': _('Please enter a valid password.')},
+    )
+    conf_password = forms.CharField(
+        label = _('Confirm password'),
+        widget = forms.PasswordInput,
+        required = False,
+        error_messages = {'required': _('Please enter your password.'), 
+                          'invalid': _('Please enter a valid password.')},
+    )
+
+    class Meta:
+        """
+        Class to define the name of the fieldsets and what should be
+        included in each.
+        """
+        layout = [["User settings", "display_name", "password", 
+                   "conf_password", "preferred_language", "address"],]
+
+class ListDeleteForm(forms.Form):
+    list_name = forms.EmailField(widget=forms.HiddenInput())

=== added file 'src/postorius/models.py'
--- src/postorius/models.py	1970-01-01 00:00:00 +0000
+++ src/postorius/models.py	2012-03-29 06:09:18 +0000
@@ -0,0 +1,162 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+#
+# This file is part of Postorius.
+#
+# Postorius is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# Postorius is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Postorius.  If not, see <http://www.gnu.org/licenses/>.
+
+import logging
+
+from django.conf import settings
+from django.db import models
+from django.http import Http404
+from mailman.client import Client
+from urllib2 import HTTPError
+
+
+logger = logging.getLogger(__name__)
+
+
+class MailmanApiError(Exception):
+    """Raised if the API is not available.
+    """
+    pass
+
+class Mailman404Error(Exception):
+    """Proxy exception. Raised if the API returns 404."""
+    pass
+
+
+class MailmanRestManager(object):
+    """Manager class to give a model class CRUD access to the API.
+    Returns objects (or lists of objects) retrived from the API.
+    """
+    
+    def __init__(self, resource_name, resource_name_plural, cls_name=None):
+        self.client = Client('%s/3.0' % settings.REST_SERVER,
+                             settings.API_USER, settings.API_PASS)
+        self.resource_name = resource_name
+        self.resource_name_plural = resource_name_plural
+
+    def all(self):
+        try:
+            return getattr(self.client, self.resource_name_plural)
+        except AttributeError:
+            raise MailmanApiError
+
+    def get(self, **kwargs):
+        try:
+            method = getattr(self.client, 'get_' + self.resource_name)
+            return method(**kwargs)
+        except AttributeError, e:
+            raise MailmanApiError(e)
+        except HTTPError, e:
+            if e.code == 404:
+                raise Mailman404Error
+            else:
+                raise
+
+    def get_or_404(self, **kwargs):
+        """Similar to `self.get` but raises standard Django 404 error.
+        """
+        try:
+            return self.get(**kwargs)
+        except Mailman404Error:
+            raise Http404
+
+    def create(self, **kwargs):
+        try:
+            method = getattr(self.client, 'create_' + self.resource_name)
+            return method(**kwargs)
+        except AttributeError, e:
+            raise MailmanApiError(e)
+        except HTTPError, e:
+            if e.code == 409:
+                raise MailmanApiError
+            else:
+                raise
+
+    def delete(self):
+        """Not implemented since the objects returned from the API
+        have a `delete` method of their own.
+        """
+        pass
+
+
+class MailmanListManager(MailmanRestManager):
+
+    def __init__(self):
+        super(MailmanListManager, self).__init__('list', 'lists')
+
+    def all(self, only_public=False):
+        try:
+            objects = getattr(self.client, self.resource_name_plural)
+        except AttributeError:
+            raise MailmanApiError
+        if only_public:
+            public = []
+            for obj in objects:
+                if obj.settings.get('advertised', False):
+                    public.append(obj)
+            return public
+        else:
+            return objects
+
+    def by_mail_host(self, mail_host, only_public=False):
+        objects = self.all(only_public)
+        host_objects = []
+        for obj in objects:
+            if obj.mail_host == mail_host:
+                host_objects.append(obj)
+        return host_objects
+
+
+class MailmanRestModel(object):
+    """Simple REST Model class to make REST API calls Django style.
+    """
+    MailmanApiError = MailmanApiError
+    DoesNotExist = Mailman404Error
+
+    def __init__(self, **kwargs):
+        self.kwargs = kwargs
+
+    def save(self):
+        """Proxy function for `objects.create`. 
+        (REST API uses `create`, while Django uses `save`.)
+        """
+        self.objects.create(**self.kwargs)
+
+
+class Domain(MailmanRestModel):
+    """Domain model class.
+    """
+    objects = MailmanRestManager('domain', 'domains')
+
+
+class List(MailmanRestModel):
+    """List model class.
+    """
+    objects = MailmanListManager()
+
+
+class MailmanUser(MailmanRestModel):
+    """MailmanUser model class.
+    """
+    objects = MailmanRestManager('user', 'users')
+
+
+class Member(MailmanRestModel):
+    """Member model class.
+    """
+    objects = MailmanRestManager('member', 'members')

=== added directory 'src/postorius/static'
=== added directory 'src/postorius/static/postorius'
=== added directory 'src/postorius/static/postorius/default'
=== added directory 'src/postorius/static/postorius/default/css'
=== added file 'src/postorius/static/postorius/default/css/bootstrap.css'
--- src/postorius/static/postorius/default/css/bootstrap.css	1970-01-01 00:00:00 +0000
+++ src/postorius/static/postorius/default/css/bootstrap.css	2012-03-29 06:09:18 +0000
@@ -0,0 +1,3496 @@
+/*!
+ * Bootstrap v2.0.1
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+  display: block;
+}
+audio, canvas, video {
+  display: inline-block;
+  *display: inline;
+  *zoom: 1;
+}
+audio:not([controls]) {
+  display: none;
+}
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover, a:active {
+  outline: 0;
+}
+sub, sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -0.5em;
+}
+sub {
+  bottom: -0.25em;
+}
+img {
+  max-width: 100%;
+  height: auto;
+  border: 0;
+  -ms-interpolation-mode: bicubic;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button, input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner, input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  cursor: pointer;
+  -webkit-appearance: button;
+}
+input[type="search"] {
+  -webkit-appearance: textfield;
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button {
+  -webkit-appearance: none;
+}
+textarea {
+  overflow: auto;
+  vertical-align: top;
+}
+.clearfix {
+  *zoom: 1;
+}
+.clearfix:before, .clearfix:after {
+  display: table;
+  content: "";
+}
+.clearfix:after {
+  clear: both;
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 18px;
+  color: #333333;
+  background-color: #ffffff;
+}
+a {
+  color: #0088cc;
+  text-decoration: none;
+}
+a:hover {
+  color: #005580;
+  text-decoration: underline;
+}
+.row {
+  margin-left: -20px;
+  *zoom: 1;
+}
+.row:before, .row:after {
+  display: table;
+  content: "";
+}
+.row:after {
+  clear: both;
+}
+[class*="span"] {
+  float: left;
+  margin-left: 20px;
+}
+.span1 {
+  width: 60px;
+}
+.span2 {
+  width: 140px;
+}
+.span3 {
+  width: 220px;
+}
+.span4 {
+  width: 300px;
+}
+.span5 {
+  width: 380px;
+}
+.span6 {
+  width: 460px;
+}
+.span7 {
+  width: 540px;
+}
+.span8 {
+  width: 620px;
+}
+.span9 {
+  width: 700px;
+}
+.span10 {
+  width: 780px;
+}
+.span11 {
+  width: 860px;
+}
+.span12, .container {
+  width: 940px;
+}
+.offset1 {
+  margin-left: 100px;
+}
+.offset2 {
+  margin-left: 180px;
+}
+.offset3 {
+  margin-left: 260px;
+}
+.offset4 {
+  margin-left: 340px;
+}
+.offset5 {
+  margin-left: 420px;
+}
+.offset6 {
+  margin-left: 500px;
+}
+.offset7 {
+  margin-left: 580px;
+}
+.offset8 {
+  margin-left: 660px;
+}
+.offset9 {
+  margin-left: 740px;
+}
+.offset10 {
+  margin-left: 820px;
+}
+.offset11 {
+  margin-left: 900px;
+}
+.row-fluid {
+  width: 100%;
+  *zoom: 1;
+}
+.row-fluid:before, .row-fluid:after {
+  display: table;
+  content: "";
+}
+.row-fluid:after {
+  clear: both;
+}
+.row-fluid > [class*="span"] {
+  float: left;
+  margin-left: 2.127659574%;
+}
+.row-fluid > [class*="span"]:first-child {
+  margin-left: 0;
+}
+.row-fluid > .span1 {
+  width: 6.382978723%;
+}
+.row-fluid > .span2 {
+  width: 14.89361702%;
+}
+.row-fluid > .span3 {
+  width: 23.404255317%;
+}
+.row-fluid > .span4 {
+  width: 31.914893614%;
+}
+.row-fluid > .span5 {
+  width: 40.425531911%;
+}
+.row-fluid > .span6 {
+  width: 48.93617020799999%;
+}
+.row-fluid > .span7 {
+  width: 57.446808505%;
+}
+.row-fluid > .span8 {
+  width: 65.95744680199999%;
+}
+.row-fluid > .span9 {
+  width: 74.468085099%;
+}
+.row-fluid > .span10 {
+  width: 82.97872339599999%;
+}
+.row-fluid > .span11 {
+  width: 91.489361693%;
+}
+.row-fluid > .span12 {
+  width: 99.99999998999999%;
+}
+.container {
+  width: 940px;
+  margin-left: auto;
+  margin-right: auto;
+  *zoom: 1;
+}
+.container:before, .container:after {
+  display: table;
+  content: "";
+}
+.container:after {
+  clear: both;
+}
+.container-fluid {
+  padding-left: 20px;
+  padding-right: 20px;
+  *zoom: 1;
+}
+.container-fluid:before, .container-fluid:after {
+  display: table;
+  content: "";
+}
+.container-fluid:after {
+  clear: both;
+}
+p {
+  margin: 0 0 9px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 18px;
+}
+p small {
+  font-size: 11px;
+  color: #999999;
+}
+.lead {
+  margin-bottom: 18px;
+  font-size: 20px;
+  font-weight: 200;
+  line-height: 27px;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin: 0;
+  font-weight: bold;
+  color: #333333;
+  text-rendering: optimizelegibility;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+  font-weight: normal;
+  color: #999999;
+}
+h1 {
+  font-size: 30px;
+  line-height: 36px;
+}
+h1 small {
+  font-size: 18px;
+}
+h2 {
+  font-size: 24px;
+  line-height: 36px;
+}
+h2 small {
+  font-size: 18px;
+}
+h3 {
+  line-height: 27px;
+  font-size: 18px;
+}
+h3 small {
+  font-size: 14px;
+}
+h4, h5, h6 {
+  line-height: 18px;
+}
+h4 {
+  font-size: 14px;
+}
+h4 small {
+  font-size: 12px;
+}
+h5 {
+  font-size: 12px;
+}
+h6 {
+  font-size: 11px;
+  color: #999999;
+  text-transform: uppercase;
+}
+.page-header {
+  padding-bottom: 17px;
+  margin: 18px 0;
+  border-bottom: 1px solid #eeeeee;
+}
+.page-header h1 {
+  line-height: 1;
+}
+ul, ol {
+  padding: 0;
+  margin: 0 0 9px 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+  margin-bottom: 0;
+}
+ul {
+  list-style: disc;
+}
+ol {
+  list-style: decimal;
+}
+li {
+  line-height: 18px;
+}
+ul.unstyled, ol.unstyled {
+  margin-left: 0;
+  list-style: none;
+}
+dl {
+  margin-bottom: 18px;
+}
+dt, dd {
+  line-height: 18px;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 9px;
+}
+hr {
+  margin: 18px 0;
+  border: 0;
+  border-top: 1px solid #eeeeee;
+  border-bottom: 1px solid #ffffff;
+}
+strong {
+  font-weight: bold;
+}
+em {
+  font-style: italic;
+}
+.muted {
+  color: #999999;
+}
+abbr {
+  font-size: 90%;
+  text-transform: uppercase;
+  border-bottom: 1px dotted #ddd;
+  cursor: help;
+}
+blockquote {
+  padding: 0 0 0 15px;
+  margin: 0 0 18px;
+  border-left: 5px solid #eeeeee;
+}
+blockquote p {
+  margin-bottom: 0;
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 22.5px;
+}
+blockquote small {
+  display: block;
+  line-height: 18px;
+  color: #999999;
+}
+blockquote small:before {
+  content: '\2014 \00A0';
+}
+blockquote.pull-right {
+  float: right;
+  padding-left: 0;
+  padding-right: 15px;
+  border-left: 0;
+  border-right: 5px solid #eeeeee;
+}
+blockquote.pull-right p, blockquote.pull-right small {
+  text-align: right;
+}
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+address {
+  display: block;
+  margin-bottom: 18px;
+  line-height: 18px;
+  font-style: normal;
+}
+small {
+  font-size: 100%;
+}
+cite {
+  font-style: normal;
+}
+code, pre {
+  padding: 0 3px 2px;
+  font-family: Menlo, Monaco, "Courier New", monospace;
+  font-size: 12px;
+  color: #333333;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+code {
+  padding: 3px 4px;
+  color: #d14;
+  background-color: #f7f7f9;
+  border: 1px solid #e1e1e8;
+}
+pre {
+  display: block;
+  padding: 8.5px;
+  margin: 0 0 9px;
+  font-size: 12px;
+  line-height: 18px;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  white-space: pre;
+  white-space: pre-wrap;
+  word-break: break-all;
+  word-wrap: break-word;
+}
+pre.prettyprint {
+  margin-bottom: 18px;
+}
+pre code {
+  padding: 0;
+  color: inherit;
+  background-color: transparent;
+  border: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+form {
+  margin: 0 0 18px;
+}
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 27px;
+  font-size: 19.5px;
+  line-height: 36px;
+  color: #333333;
+  border: 0;
+  border-bottom: 1px solid #eee;
+}
+legend small {
+  font-size: 13.5px;
+  color: #999999;
+}
+label,
+input,
+button,
+select,
+textarea {
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 18px;
+}
+input,
+button,
+select,
+textarea {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+label {
+  display: block;
+  margin-bottom: 5px;
+  color: #333333;
+}
+input,
+textarea,
+select,
+.uneditable-input {
+  display: inline-block;
+  width: 210px;
+  height: 18px;
+  padding: 4px;
+  margin-bottom: 9px;
+  font-size: 13px;
+  line-height: 18px;
+  color: #555555;
+  border: 1px solid #ccc;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.uneditable-textarea {
+  width: auto;
+  height: auto;
+}
+label input, label textarea, label select {
+  display: block;
+}
+input[type="image"], input[type="checkbox"], input[type="radio"] {
+  width: auto;
+  height: auto;
+  padding: 0;
+  margin: 3px 0;
+  *margin-top: 0;
+  /* IE7 */
+
+  line-height: normal;
+  cursor: pointer;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+  border: 0 \9;
+  /* IE9 and down */
+
+}
+input[type="image"] {
+  border: 0;
+}
+input[type="file"] {
+  width: auto;
+  padding: initial;
+  line-height: initial;
+  border: initial;
+  background-color: #ffffff;
+  background-color: initial;
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+input[type="button"], input[type="reset"], input[type="submit"] {
+  width: auto;
+  height: auto;
+}
+select, input[type="file"] {
+  height: 28px;
+  /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+  *margin-top: 4px;
+  /* For IE7, add top margin to align select with labels */
+
+  line-height: 28px;
+}
+input[type="file"] {
+  line-height: 18px \9;
+}
+select {
+  width: 220px;
+  background-color: #ffffff;
+}
+select[multiple], select[size] {
+  height: auto;
+}
+input[type="image"] {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+textarea {
+  height: auto;
+}
+input[type="hidden"] {
+  display: none;
+}
+.radio, .checkbox {
+  padding-left: 18px;
+}
+.radio input[type="radio"], .checkbox input[type="checkbox"] {
+  float: left;
+  margin-left: -18px;
+}
+.controls > .radio:first-child, .controls > .checkbox:first-child {
+  padding-top: 5px;
+}
+.radio.inline, .checkbox.inline {
+  display: inline-block;
+  padding-top: 5px;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline {
+  margin-left: 10px;
+}
+input, textarea {
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
+  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
+  transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+input:focus, textarea:focus {
+  border-color: rgba(82, 168, 236, 0.8);
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+  outline: 0;
+  outline: thin dotted \9;
+  /* IE6-9 */
+
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus,
+select:focus {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.input-mini {
+  width: 60px;
+}
+.input-small {
+  width: 90px;
+}
+.input-medium {
+  width: 150px;
+}
+.input-large {
+  width: 210px;
+}
+.input-xlarge {
+  width: 270px;
+}
+.input-xxlarge {
+  width: 530px;
+}
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input {
+  float: none;
+  margin-left: 0;
+}
+input.span1, textarea.span1, .uneditable-input.span1 {
+  width: 50px;
+}
+input.span2, textarea.span2, .uneditable-input.span2 {
+  width: 130px;
+}
+input.span3, textarea.span3, .uneditable-input.span3 {
+  width: 210px;
+}
+input.span4, textarea.span4, .uneditable-input.span4 {
+  width: 290px;
+}
+input.span5, textarea.span5, .uneditable-input.span5 {
+  width: 370px;
+}
+input.span6, textarea.span6, .uneditable-input.span6 {
+  width: 450px;
+}
+input.span7, textarea.span7, .uneditable-input.span7 {
+  width: 530px;
+}
+input.span8, textarea.span8, .uneditable-input.span8 {
+  width: 610px;
+}
+input.span9, textarea.span9, .uneditable-input.span9 {
+  width: 690px;
+}
+input.span10, textarea.span10, .uneditable-input.span10 {
+  width: 770px;
+}
+input.span11, textarea.span11, .uneditable-input.span11 {
+  width: 850px;
+}
+input.span12, textarea.span12, .uneditable-input.span12 {
+  width: 930px;
+}
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+  background-color: #f5f5f5;
+  border-color: #ddd;
+  cursor: not-allowed;
+}
+.control-group.warning > label, .control-group.warning .help-block, .control-group.warning .help-inline {
+  color: #c09853;
+}
+.control-group.warning input, .control-group.warning select, .control-group.warning textarea {
+  color: #c09853;
+  border-color: #c09853;
+}
+.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus {
+  border-color: #a47e3c;
+  -webkit-box-shadow: 0 0 6px #dbc59e;
+  -moz-box-shadow: 0 0 6px #dbc59e;
+  box-shadow: 0 0 6px #dbc59e;
+}
+.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on {
+  color: #c09853;
+  background-color: #fcf8e3;
+  border-color: #c09853;
+}
+.control-group.error > label, .control-group.error .help-block, .control-group.error .help-inline {
+  color: #b94a48;
+}
+.control-group.error input, .control-group.error select, .control-group.error textarea {
+  color: #b94a48;
+  border-color: #b94a48;
+}
+.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus {
+  border-color: #953b39;
+  -webkit-box-shadow: 0 0 6px #d59392;
+  -moz-box-shadow: 0 0 6px #d59392;
+  box-shadow: 0 0 6px #d59392;
+}
+.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on {
+  color: #b94a48;
+  background-color: #f2dede;
+  border-color: #b94a48;
+}
+.control-group.success > label, .control-group.success .help-block, .control-group.success .help-inline {
+  color: #468847;
+}
+.control-group.success input, .control-group.success select, .control-group.success textarea {
+  color: #468847;
+  border-color: #468847;
+}
+.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus {
+  border-color: #356635;
+  -webkit-box-shadow: 0 0 6px #7aba7b;
+  -moz-box-shadow: 0 0 6px #7aba7b;
+  box-shadow: 0 0 6px #7aba7b;
+}
+.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on {
+  color: #468847;
+  background-color: #dff0d8;
+  border-color: #468847;
+}
+input:focus:required:invalid, textarea:focus:required:invalid, select:focus:required:invalid {
+  color: #b94a48;
+  border-color: #ee5f5b;
+}
+input:focus:required:invalid:focus, textarea:focus:required:invalid:focus, select:focus:required:invalid:focus {
+  border-color: #e9322d;
+  -webkit-box-shadow: 0 0 6px #f8b9b7;
+  -moz-box-shadow: 0 0 6px #f8b9b7;
+  box-shadow: 0 0 6px #f8b9b7;
+}
+.form-actions {
+  padding: 17px 20px 18px;
+  margin-top: 18px;
+  margin-bottom: 18px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+}
+.uneditable-input {
+  display: block;
+  background-color: #ffffff;
+  border-color: #eee;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  cursor: not-allowed;
+}
+:-moz-placeholder {
+  color: #999999;
+}
+::-webkit-input-placeholder {
+  color: #999999;
+}
+.help-block {
+  display: block;
+  margin-top: 5px;
+  margin-bottom: 0;
+  color: #999999;
+}
+.help-inline {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-bottom: 9px;
+  vertical-align: middle;
+  padding-left: 5px;
+}
+.input-prepend, .input-append {
+  margin-bottom: 5px;
+  *zoom: 1;
+}
+.input-prepend:before,
+.input-append:before,
+.input-prepend:after,
+.input-append:after {
+  display: table;
+  content: "";
+}
+.input-prepend:after, .input-append:after {
+  clear: both;
+}
+.input-prepend input,
+.input-append input,
+.input-prepend .uneditable-input,
+.input-append .uneditable-input {
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.input-prepend input:focus,
+.input-append input:focus,
+.input-prepend .uneditable-input:focus,
+.input-append .uneditable-input:focus {
+  position: relative;
+  z-index: 2;
+}
+.input-prepend .uneditable-input, .input-append .uneditable-input {
+  border-left-color: #ccc;
+}
+.input-prepend .add-on, .input-append .add-on {
+  float: left;
+  display: block;
+  width: auto;
+  min-width: 16px;
+  height: 18px;
+  margin-right: -1px;
+  padding: 4px 5px;
+  font-weight: normal;
+  line-height: 18px;
+  color: #999999;
+  text-align: center;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.input-prepend .active, .input-append .active {
+  background-color: #a9dba9;
+  border-color: #46a546;
+}
+.input-prepend .add-on {
+  *margin-top: 1px;
+  /* IE6-7 */
+
+}
+.input-append input, .input-append .uneditable-input {
+  float: left;
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.input-append .uneditable-input {
+  border-left-color: #eee;
+  border-right-color: #ccc;
+}
+.input-append .add-on {
+  margin-right: 0;
+  margin-left: -1px;
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.input-append input:first-child {
+  *margin-left: -160px;
+}
+.input-append input:first-child + .add-on {
+  *margin-left: -21px;
+}
+.search-query {
+  padding-left: 14px;
+  padding-right: 14px;
+  margin-bottom: 0;
+  -webkit-border-radius: 14px;
+  -moz-border-radius: 14px;
+  border-radius: 14px;
+}
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input {
+  display: inline-block;
+  margin-bottom: 0;
+}
+.form-search .hide, .form-inline .hide, .form-horizontal .hide {
+  display: none;
+}
+.form-search label,
+.form-inline label,
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+  display: inline-block;
+}
+.form-search .input-append .add-on,
+.form-inline .input-prepend .add-on,
+.form-search .input-append .add-on,
+.form-inline .input-prepend .add-on {
+  vertical-align: middle;
+}
+.form-search .radio,
+.form-inline .radio,
+.form-search .checkbox,
+.form-inline .checkbox {
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.control-group {
+  margin-bottom: 9px;
+}
+legend + .control-group {
+  margin-top: 18px;
+  -webkit-margin-top-collapse: separate;
+}
+.form-horizontal .control-group {
+  margin-bottom: 18px;
+  *zoom: 1;
+}
+.form-horizontal .control-group:before, .form-horizontal .control-group:after {
+  display: table;
+  content: "";
+}
+.form-horizontal .control-group:after {
+  clear: both;
+}
+.form-horizontal .control-label {
+  float: left;
+  width: 140px;
+  padding-top: 5px;
+  text-align: right;
+}
+.form-horizontal .controls {
+  margin-left: 160px;
+}
+.form-horizontal .form-actions {
+  padding-left: 160px;
+}
+table {
+  max-width: 100%;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+.table {
+  width: 100%;
+  margin-bottom: 18px;
+}
+.table th, .table td {
+  padding: 8px;
+  line-height: 18px;
+  text-align: left;
+  vertical-align: top;
+  border-top: 1px solid #ddd;
+}
+.table th {
+  font-weight: bold;
+}
+.table thead th {
+  vertical-align: bottom;
+}
+.table thead:first-child tr th, .table thead:first-child tr td {
+  border-top: 0;
+}
+.table tbody + tbody {
+  border-top: 2px solid #ddd;
+}
+.table-condensed th, .table-condensed td {
+  padding: 4px 5px;
+}
+.table-bordered {
+  border: 1px solid #ddd;
+  border-collapse: separate;
+  *border-collapse: collapsed;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.table-bordered th + th,
+.table-bordered td + td,
+.table-bordered th + td,
+.table-bordered td + th {
+  border-left: 1px solid #ddd;
+}
+.table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td {
+  border-top: 0;
+}
+.table-bordered thead:first-child tr:first-child th:first-child, .table-bordered tbody:first-child tr:first-child td:first-child {
+  -webkit-border-radius: 4px 0 0 0;
+  -moz-border-radius: 4px 0 0 0;
+  border-radius: 4px 0 0 0;
+}
+.table-bordered thead:first-child tr:first-child th:last-child, .table-bordered tbody:first-child tr:first-child td:last-child {
+  -webkit-border-radius: 0 4px 0 0;
+  -moz-border-radius: 0 4px 0 0;
+  border-radius: 0 4px 0 0;
+}
+.table-bordered thead:last-child tr:last-child th:first-child, .table-bordered tbody:last-child tr:last-child td:first-child {
+  -webkit-border-radius: 0 0 0 4px;
+  -moz-border-radius: 0 0 0 4px;
+  border-radius: 0 0 0 4px;
+}
+.table-bordered thead:last-child tr:last-child th:last-child, .table-bordered tbody:last-child tr:last-child td:last-child {
+  -webkit-border-radius: 0 0 4px 0;
+  -moz-border-radius: 0 0 4px 0;
+  border-radius: 0 0 4px 0;
+}
+.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th {
+  background-color: #f9f9f9;
+}
+.table tbody tr:hover td, .table tbody tr:hover th {
+  background-color: #f5f5f5;
+}
+table .span1 {
+  float: none;
+  width: 44px;
+  margin-left: 0;
+}
+table .span2 {
+  float: none;
+  width: 124px;
+  margin-left: 0;
+}
+table .span3 {
+  float: none;
+  width: 204px;
+  margin-left: 0;
+}
+table .span4 {
+  float: none;
+  width: 284px;
+  margin-left: 0;
+}
+table .span5 {
+  float: none;
+  width: 364px;
+  margin-left: 0;
+}
+table .span6 {
+  float: none;
+  width: 444px;
+  margin-left: 0;
+}
+table .span7 {
+  float: none;
+  width: 524px;
+  margin-left: 0;
+}
+table .span8 {
+  float: none;
+  width: 604px;
+  margin-left: 0;
+}
+table .span9 {
+  float: none;
+  width: 684px;
+  margin-left: 0;
+}
+table .span10 {
+  float: none;
+  width: 764px;
+  margin-left: 0;
+}
+table .span11 {
+  float: none;
+  width: 844px;
+  margin-left: 0;
+}
+table .span12 {
+  float: none;
+  width: 924px;
+  margin-left: 0;
+}
+[class^="icon-"], [class*=" icon-"] {
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  line-height: 14px;
+  vertical-align: text-top;
+  background-image: url("../img/glyphicons-halflings.png");
+  background-position: 14px 14px;
+  background-repeat: no-repeat;
+  *margin-right: .3em;
+}
+[class^="icon-"]:last-child, [class*=" icon-"]:last-child {
+  *margin-left: 0;
+}
+.icon-white {
+  background-image: url("../img/glyphicons-halflings-white.png");
+}
+.icon-glass {
+  background-position: 0      0;
+}
+.icon-music {
+  background-position: -24px 0;
+}
+.icon-search {
+  background-position: -48px 0;
+}
+.icon-envelope {
+  background-position: -72px 0;
+}
+.icon-heart {
+  background-position: -96px 0;
+}
+.icon-star {
+  background-position: -120px 0;
+}
+.icon-star-empty {
+  background-position: -144px 0;
+}
+.icon-user {
+  background-position: -168px 0;
+}
+.icon-film {
+  background-position: -192px 0;
+}
+.icon-th-large {
+  background-position: -216px 0;
+}
+.icon-th {
+  background-position: -240px 0;
+}
+.icon-th-list {
+  background-position: -264px 0;
+}
+.icon-ok {
+  background-position: -288px 0;
+}
+.icon-remove {
+  background-position: -312px 0;
+}
+.icon-zoom-in {
+  background-position: -336px 0;
+}
+.icon-zoom-out {
+  background-position: -360px 0;
+}
+.icon-off {
+  background-position: -384px 0;
+}
+.icon-signal {
+  background-position: -408px 0;
+}
+.icon-cog {
+  background-position: -432px 0;
+}
+.icon-trash {
+  background-position: -456px 0;
+}
+.icon-home {
+  background-position: 0 -24px;
+}
+.icon-file {
+  background-position: -24px -24px;
+}
+.icon-time {
+  background-position: -48px -24px;
+}
+.icon-road {
+  background-position: -72px -24px;
+}
+.icon-download-alt {
+  background-position: -96px -24px;
+}
+.icon-download {
+  background-position: -120px -24px;
+}
+.icon-upload {
+  background-position: -144px -24px;
+}
+.icon-inbox {
+  background-position: -168px -24px;
+}
+.icon-play-circle {
+  background-position: -192px -24px;
+}
+.icon-repeat {
+  background-position: -216px -24px;
+}
+.icon-refresh {
+  background-position: -240px -24px;
+}
+.icon-list-alt {
+  background-position: -264px -24px;
+}
+.icon-lock {
+  background-position: -287px -24px;
+}
+.icon-flag {
+  background-position: -312px -24px;
+}
+.icon-headphones {
+  background-position: -336px -24px;
+}
+.icon-volume-off {
+  background-position: -360px -24px;
+}
+.icon-volume-down {
+  background-position: -384px -24px;
+}
+.icon-volume-up {
+  background-position: -408px -24px;
+}
+.icon-qrcode {
+  background-position: -432px -24px;
+}
+.icon-barcode {
+  background-position: -456px -24px;
+}
+.icon-tag {
+  background-position: 0 -48px;
+}
+.icon-tags {
+  background-position: -25px -48px;
+}
+.icon-book {
+  background-position: -48px -48px;
+}
+.icon-bookmark {
+  background-position: -72px -48px;
+}
+.icon-print {
+  background-position: -96px -48px;
+}
+.icon-camera {
+  background-position: -120px -48px;
+}
+.icon-font {
+  background-position: -144px -48px;
+}
+.icon-bold {
+  background-position: -167px -48px;
+}
+.icon-italic {
+  background-position: -192px -48px;
+}
+.icon-text-height {
+  background-position: -216px -48px;
+}
+.icon-text-width {
+  background-position: -240px -48px;
+}
+.icon-align-left {
+  background-position: -264px -48px;
+}
+.icon-align-center {
+  background-position: -288px -48px;
+}
+.icon-align-right {
+  background-position: -312px -48px;
+}
+.icon-align-justify {
+  background-position: -336px -48px;
+}
+.icon-list {
+  background-position: -360px -48px;
+}
+.icon-indent-left {
+  background-position: -384px -48px;
+}
+.icon-indent-right {
+  background-position: -408px -48px;
+}
+.icon-facetime-video {
+  background-position: -432px -48px;
+}
+.icon-picture {
+  background-position: -456px -48px;
+}
+.icon-pencil {
+  background-position: 0 -72px;
+}
+.icon-map-marker {
+  background-position: -24px -72px;
+}
+.icon-adjust {
+  background-position: -48px -72px;
+}
+.icon-tint {
+  background-position: -72px -72px;
+}
+.icon-edit {
+  background-position: -96px -72px;
+}
+.icon-share {
+  background-position: -120px -72px;
+}
+.icon-check {
+  background-position: -144px -72px;
+}
+.icon-move {
+  background-position: -168px -72px;
+}
+.icon-step-backward {
+  background-position: -192px -72px;
+}
+.icon-fast-backward {
+  background-position: -216px -72px;
+}
+.icon-backward {
+  background-position: -240px -72px;
+}
+.icon-play {
+  background-position: -264px -72px;
+}
+.icon-pause {
+  background-position: -288px -72px;
+}
+.icon-stop {
+  background-position: -312px -72px;
+}
+.icon-forward {
+  background-position: -336px -72px;
+}
+.icon-fast-forward {
+  background-position: -360px -72px;
+}
+.icon-step-forward {
+  background-position: -384px -72px;
+}
+.icon-eject {
+  background-position: -408px -72px;
+}
+.icon-chevron-left {
+  background-position: -432px -72px;
+}
+.icon-chevron-right {
+  background-position: -456px -72px;
+}
+.icon-plus-sign {
+  background-position: 0 -96px;
+}
+.icon-minus-sign {
+  background-position: -24px -96px;
+}
+.icon-remove-sign {
+  background-position: -48px -96px;
+}
+.icon-ok-sign {
+  background-position: -72px -96px;
+}
+.icon-question-sign {
+  background-position: -96px -96px;
+}
+.icon-info-sign {
+  background-position: -120px -96px;
+}
+.icon-screenshot {
+  background-position: -144px -96px;
+}
+.icon-remove-circle {
+  background-position: -168px -96px;
+}
+.icon-ok-circle {
+  background-position: -192px -96px;
+}
+.icon-ban-circle {
+  background-position: -216px -96px;
+}
+.icon-arrow-left {
+  background-position: -240px -96px;
+}
+.icon-arrow-right {
+  background-position: -264px -96px;
+}
+.icon-arrow-up {
+  background-position: -289px -96px;
+}
+.icon-arrow-down {
+  background-position: -312px -96px;
+}
+.icon-share-alt {
+  background-position: -336px -96px;
+}
+.icon-resize-full {
+  background-position: -360px -96px;
+}
+.icon-resize-small {
+  background-position: -384px -96px;
+}
+.icon-plus {
+  background-position: -408px -96px;
+}
+.icon-minus {
+  background-position: -433px -96px;
+}
+.icon-asterisk {
+  background-position: -456px -96px;
+}
+.icon-exclamation-sign {
+  background-position: 0 -120px;
+}
+.icon-gift {
+  background-position: -24px -120px;
+}
+.icon-leaf {
+  background-position: -48px -120px;
+}
+.icon-fire {
+  background-position: -72px -120px;
+}
+.icon-eye-open {
+  background-position: -96px -120px;
+}
+.icon-eye-close {
+  background-position: -120px -120px;
+}
+.icon-warning-sign {
+  background-position: -144px -120px;
+}
+.icon-plane {
+  background-position: -168px -120px;
+}
+.icon-calendar {
+  background-position: -192px -120px;
+}
+.icon-random {
+  background-position: -216px -120px;
+}
+.icon-comment {
+  background-position: -240px -120px;
+}
+.icon-magnet {
+  background-position: -264px -120px;
+}
+.icon-chevron-up {
+  background-position: -288px -120px;
+}
+.icon-chevron-down {
+  background-position: -313px -119px;
+}
+.icon-retweet {
+  background-position: -336px -120px;
+}
+.icon-shopping-cart {
+  background-position: -360px -120px;
+}
+.icon-folder-close {
+  background-position: -384px -120px;
+}
+.icon-folder-open {
+  background-position: -408px -120px;
+}
+.icon-resize-vertical {
+  background-position: -432px -119px;
+}
+.icon-resize-horizontal {
+  background-position: -456px -118px;
+}
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle {
+  *margin-bottom: -3px;
+}
+.dropdown-toggle:active, .open .dropdown-toggle {
+  outline: 0;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  text-indent: -99999px;
+  *text-indent: 0;
+  vertical-align: top;
+  border-left: 4px solid transparent;
+  border-right: 4px solid transparent;
+  border-top: 4px solid #000000;
+  opacity: 0.3;
+  filter: alpha(opacity=30);
+  content: "\2193";
+}
+.dropdown .caret {
+  margin-top: 8px;
+  margin-left: 2px;
+}
+.dropdown:hover .caret, .open.dropdown .caret {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  float: left;
+  display: none;
+  min-width: 160px;
+  _width: 160px;
+  padding: 4px 0;
+  margin: 0;
+  list-style: none;
+  background-color: #ffffff;
+  border-color: #ccc;
+  border-color: rgba(0, 0, 0, 0.2);
+  border-style: solid;
+  border-width: 1px;
+  -webkit-border-radius: 0 0 5px 5px;
+  -moz-border-radius: 0 0 5px 5px;
+  border-radius: 0 0 5px 5px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding;
+  background-clip: padding-box;
+  *border-right-width: 2px;
+  *border-bottom-width: 2px;
+}
+.dropdown-menu.bottom-up {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 2px;
+}
+.dropdown-menu .divider {
+  height: 1px;
+  margin: 5px 1px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+  *width: 100%;
+  *margin: -5px 0 5px;
+}
+.dropdown-menu a {
+  display: block;
+  padding: 3px 15px;
+  clear: both;
+  font-weight: normal;
+  line-height: 18px;
+  color: #555555;
+  white-space: nowrap;
+}
+.dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover {
+  color: #ffffff;
+  text-decoration: none;
+  background-color: #0088cc;
+}
+.dropdown.open {
+  *z-index: 1000;
+}
+.dropdown.open .dropdown-toggle {
+  color: #ffffff;
+  background: #ccc;
+  background: rgba(0, 0, 0, 0.3);
+}
+.dropdown.open .dropdown-menu {
+  display: block;
+}
+.typeahead {
+  margin-top: 2px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #eee;
+  border: 1px solid rgba(0, 0, 0, 0.05);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.fade {
+  -webkit-transition: opacity 0.15s linear;
+  -moz-transition: opacity 0.15s linear;
+  -ms-transition: opacity 0.15s linear;
+  -o-transition: opacity 0.15s linear;
+  transition: opacity 0.15s linear;
+  opacity: 0;
+}
+.fade.in {
+  opacity: 1;
+}
+.collapse {
+  -webkit-transition: height 0.35s ease;
+  -moz-transition: height 0.35s ease;
+  -ms-transition: height 0.35s ease;
+  -o-transition: height 0.35s ease;
+  transition: height 0.35s ease;
+  position: relative;
+  overflow: hidden;
+  height: 0;
+}
+.collapse.in {
+  height: auto;
+}
+.close {
+  float: right;
+  font-size: 20px;
+  font-weight: bold;
+  line-height: 18px;
+  color: #000000;
+  text-shadow: 0 1px 0 #ffffff;
+  opacity: 0.2;
+  filter: alpha(opacity=20);
+}
+.close:hover {
+  color: #000000;
+  text-decoration: none;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+  cursor: pointer;
+}
+.btn {
+  display: inline-block;
+  padding: 4px 10px 4px;
+  margin-bottom: 0;
+  font-size: 13px;
+  line-height: 18px;
+  color: #333333;
+  text-align: center;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+  vertical-align: middle;
+  background-color: #f5f5f5;
+  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: linear-gradient(top, #ffffff, #e6e6e6);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
+  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  border: 1px solid #ccc;
+  border-bottom-color: #bbb;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  cursor: pointer;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  *margin-left: .3em;
+}
+.btn:hover,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+  background-color: #e6e6e6;
+}
+.btn:active, .btn.active {
+  background-color: #cccccc \9;
+}
+.btn:first-child {
+  *margin-left: 0;
+}
+.btn:hover {
+  color: #333333;
+  text-decoration: none;
+  background-color: #e6e6e6;
+  background-position: 0 -15px;
+  -webkit-transition: background-position 0.1s linear;
+  -moz-transition: background-position 0.1s linear;
+  -ms-transition: background-position 0.1s linear;
+  -o-transition: background-position 0.1s linear;
+  transition: background-position 0.1s linear;
+}
+.btn:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn.active, .btn:active {
+  background-image: none;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  background-color: #e6e6e6;
+  background-color: #d9d9d9 \9;
+  outline: 0;
+}
+.btn.disabled, .btn[disabled] {
+  cursor: default;
+  background-image: none;
+  background-color: #e6e6e6;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-large {
+  padding: 9px 14px;
+  font-size: 15px;
+  line-height: normal;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.btn-large [class^="icon-"] {
+  margin-top: 1px;
+}
+.btn-small {
+  padding: 5px 9px;
+  font-size: 11px;
+  line-height: 16px;
+}
+.btn-small [class^="icon-"] {
+  margin-top: -1px;
+}
+.btn-mini {
+  padding: 2px 6px;
+  font-size: 11px;
+  line-height: 14px;
+}
+.btn-primary,
+.btn-primary:hover,
+.btn-warning,
+.btn-warning:hover,
+.btn-danger,
+.btn-danger:hover,
+.btn-success,
+.btn-success:hover,
+.btn-info,
+.btn-info:hover,
+.btn-inverse,
+.btn-inverse:hover {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  color: #ffffff;
+}
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-dark.active {
+  color: rgba(255, 255, 255, 0.75);
+}
+.btn-primary {
+  background-color: #006dcc;
+  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+  background-image: linear-gradient(top, #0088cc, #0044cc);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
+  border-color: #0044cc #0044cc #002a80;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-primary:hover,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+  background-color: #0044cc;
+}
+.btn-primary:active, .btn-primary.active {
+  background-color: #003399 \9;
+}
+.btn-warning {
+  background-color: #faa732;
+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+  background-image: -o-linear-gradient(top, #fbb450, #f89406);
+  background-image: linear-gradient(top, #fbb450, #f89406);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
+  border-color: #f89406 #f89406 #ad6704;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-warning:hover,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+  background-color: #f89406;
+}
+.btn-warning:active, .btn-warning.active {
+  background-color: #c67605 \9;
+}
+.btn-danger {
+  background-color: #da4f49;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: linear-gradient(top, #ee5f5b, #bd362f);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
+  border-color: #bd362f #bd362f #802420;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-danger:hover,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+  background-color: #bd362f;
+}
+.btn-danger:active, .btn-danger.active {
+  background-color: #942a25 \9;
+}
+.btn-success {
+  background-color: #5bb75b;
+  background-image: -moz-linear-gradient(top, #62c462, #51a351);
+  background-image: -ms-linear-gradient(top, #62c462, #51a351);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+  background-image: -o-linear-gradient(top, #62c462, #51a351);
+  background-image: linear-gradient(top, #62c462, #51a351);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
+  border-color: #51a351 #51a351 #387038;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-success:hover,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+  background-color: #51a351;
+}
+.btn-success:active, .btn-success.active {
+  background-color: #408140 \9;
+}
+.btn-info {
+  background-color: #49afcd;
+  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: linear-gradient(top, #5bc0de, #2f96b4);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
+  border-color: #2f96b4 #2f96b4 #1f6377;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-info:hover,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+  background-color: #2f96b4;
+}
+.btn-info:active, .btn-info.active {
+  background-color: #24748c \9;
+}
+.btn-inverse {
+  background-color: #393939;
+  background-image: -moz-linear-gradient(top, #454545, #262626);
+  background-image: -ms-linear-gradient(top, #454545, #262626);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#454545), to(#262626));
+  background-image: -webkit-linear-gradient(top, #454545, #262626);
+  background-image: -o-linear-gradient(top, #454545, #262626);
+  background-image: linear-gradient(top, #454545, #262626);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#454545', endColorstr='#262626', GradientType=0);
+  border-color: #262626 #262626 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-inverse:hover,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+  background-color: #262626;
+}
+.btn-inverse:active, .btn-inverse.active {
+  background-color: #0c0c0c \9;
+}
+button.btn, input[type="submit"].btn {
+  *padding-top: 2px;
+  *padding-bottom: 2px;
+}
+button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button.btn.large, input[type="submit"].btn.large {
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+button.btn.small, input[type="submit"].btn.small {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+.btn-group {
+  position: relative;
+  *zoom: 1;
+  *margin-left: .3em;
+}
+.btn-group:before, .btn-group:after {
+  display: table;
+  content: "";
+}
+.btn-group:after {
+  clear: both;
+}
+.btn-group:first-child {
+  *margin-left: 0;
+}
+.btn-group + .btn-group {
+  margin-left: 5px;
+}
+.btn-toolbar {
+  margin-top: 9px;
+  margin-bottom: 9px;
+}
+.btn-toolbar .btn-group {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+}
+.btn-group .btn {
+  position: relative;
+  float: left;
+  margin-left: -1px;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group .btn:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group .btn:last-child, .btn-group .dropdown-toggle {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+}
+.btn-group .btn.large:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 6px;
+  -moz-border-radius-topleft: 6px;
+  border-top-left-radius: 6px;
+  -webkit-border-bottom-left-radius: 6px;
+  -moz-border-radius-bottomleft: 6px;
+  border-bottom-left-radius: 6px;
+}
+.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle {
+  -webkit-border-top-right-radius: 6px;
+  -moz-border-radius-topright: 6px;
+  border-top-right-radius: 6px;
+  -webkit-border-bottom-right-radius: 6px;
+  -moz-border-radius-bottomright: 6px;
+  border-bottom-right-radius: 6px;
+}
+.btn-group .btn:hover,
+.btn-group .btn:focus,
+.btn-group .btn:active,
+.btn-group .btn.active {
+  z-index: 2;
+}
+.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  *padding-top: 5px;
+  *padding-bottom: 5px;
+}
+.btn-group.open {
+  *z-index: 1000;
+}
+.btn-group.open .dropdown-menu {
+  display: block;
+  margin-top: 1px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.btn-group.open .dropdown-toggle {
+  background-image: none;
+  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.btn .caret {
+  margin-top: 7px;
+  margin-left: 0;
+}
+.btn:hover .caret, .open.btn-group .caret {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.btn-primary .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+  border-top-color: #ffffff;
+  opacity: 0.75;
+  filter: alpha(opacity=75);
+}
+.btn-small .caret {
+  margin-top: 4px;
+}
+.alert {
+  padding: 8px 35px 8px 14px;
+  margin-bottom: 18px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  background-color: #fcf8e3;
+  border: 1px solid #fbeed5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.alert, .alert-heading {
+  color: #c09853;
+}
+.alert .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  line-height: 18px;
+}
+.alert-success {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.alert-success, .alert-success .alert-heading {
+  color: #468847;
+}
+.alert-danger, .alert-error {
+  background-color: #f2dede;
+  border-color: #eed3d7;
+}
+.alert-danger,
+.alert-error,
+.alert-danger .alert-heading,
+.alert-error .alert-heading {
+  color: #b94a48;
+}
+.alert-info {
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.alert-info, .alert-info .alert-heading {
+  color: #3a87ad;
+}
+.alert-block {
+  padding-top: 14px;
+  padding-bottom: 14px;
+}
+.alert-block > p, .alert-block > ul {
+  margin-bottom: 0;
+}
+.alert-block p + p {
+  margin-top: 5px;
+}
+.nav {
+  margin-left: 0;
+  margin-bottom: 18px;
+  list-style: none;
+}
+.nav > li > a {
+  display: block;
+}
+.nav > li > a:hover {
+  text-decoration: none;
+  background-color: #eeeeee;
+}
+.nav .nav-header {
+  display: block;
+  padding: 3px 15px;
+  font-size: 11px;
+  font-weight: bold;
+  line-height: 18px;
+  color: #999999;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  text-transform: uppercase;
+}
+.nav li + .nav-header {
+  margin-top: 9px;
+}
+.nav-list {
+  padding-left: 14px;
+  padding-right: 14px;
+  margin-bottom: 0;
+}
+.nav-list > li > a, .nav-list .nav-header {
+  margin-left: -15px;
+  margin-right: -15px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.nav-list > li > a {
+  padding: 3px 15px;
+}
+.nav-list .active > a, .nav-list .active > a:hover {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+  background-color: #0088cc;
+}
+.nav-list [class^="icon-"] {
+  margin-right: 2px;
+}
+.nav-tabs, .nav-pills {
+  *zoom: 1;
+}
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+  display: table;
+  content: "";
+}
+.nav-tabs:after, .nav-pills:after {
+  clear: both;
+}
+.nav-tabs > li, .nav-pills > li {
+  float: left;
+}
+.nav-tabs > li > a, .nav-pills > li > a {
+  padding-right: 12px;
+  padding-left: 12px;
+  margin-right: 2px;
+  line-height: 14px;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  padding-top: 9px;
+  padding-bottom: 9px;
+  border: 1px solid transparent;
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+  border-color: #eeeeee #eeeeee #dddddd;
+}
+.nav-tabs > .active > a, .nav-tabs > .active > a:hover {
+  color: #555555;
+  background-color: #ffffff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+  cursor: default;
+}
+.nav-pills > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  margin-top: 2px;
+  margin-bottom: 2px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.nav-pills .active > a, .nav-pills .active > a:hover {
+  color: #ffffff;
+  background-color: #0088cc;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li > a {
+  margin-right: 0;
+}
+.nav-tabs.nav-stacked {
+  border-bottom: 0;
+}
+.nav-tabs.nav-stacked > li > a {
+  border: 1px solid #ddd;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.nav-tabs.nav-stacked > li:first-child > a {
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs.nav-stacked > li:last-child > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.nav-tabs.nav-stacked > li > a:hover {
+  border-color: #ddd;
+  z-index: 2;
+}
+.nav-pills.nav-stacked > li > a {
+  margin-bottom: 3px;
+}
+.nav-pills.nav-stacked > li:last-child > a {
+  margin-bottom: 1px;
+}
+.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu {
+  margin-top: 1px;
+  border-width: 1px;
+}
+.nav-pills .dropdown-menu {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.nav-tabs .dropdown-toggle .caret, .nav-pills .dropdown-toggle .caret {
+  border-top-color: #0088cc;
+  margin-top: 6px;
+}
+.nav-tabs .dropdown-toggle:hover .caret, .nav-pills .dropdown-toggle:hover .caret {
+  border-top-color: #005580;
+}
+.nav-tabs .active .dropdown-toggle .caret, .nav-pills .active .dropdown-toggle .caret {
+  border-top-color: #333333;
+}
+.nav > .dropdown.active > a:hover {
+  color: #000000;
+  cursor: pointer;
+}
+.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > .open.active > a:hover {
+  color: #ffffff;
+  background-color: #999999;
+  border-color: #999999;
+}
+.nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret {
+  border-top-color: #ffffff;
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.tabs-stacked .open > a:hover {
+  border-color: #999999;
+}
+.tabbable {
+  *zoom: 1;
+}
+.tabbable:before, .tabbable:after {
+  display: table;
+  content: "";
+}
+.tabbable:after {
+  clear: both;
+}
+.tab-content {
+  overflow: hidden;
+}
+.tabs-below .nav-tabs, .tabs-right .nav-tabs, .tabs-left .nav-tabs {
+  border-bottom: 0;
+}
+.tab-content > .tab-pane, .pill-content > .pill-pane {
+  display: none;
+}
+.tab-content > .active, .pill-content > .active {
+  display: block;
+}
+.tabs-below .nav-tabs {
+  border-top: 1px solid #ddd;
+}
+.tabs-below .nav-tabs > li {
+  margin-top: -1px;
+  margin-bottom: 0;
+}
+.tabs-below .nav-tabs > li > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.tabs-below .nav-tabs > li > a:hover {
+  border-bottom-color: transparent;
+  border-top-color: #ddd;
+}
+.tabs-below .nav-tabs .active > a, .tabs-below .nav-tabs .active > a:hover {
+  border-color: transparent #ddd #ddd #ddd;
+}
+.tabs-left .nav-tabs > li, .tabs-right .nav-tabs > li {
+  float: none;
+}
+.tabs-left .nav-tabs > li > a, .tabs-right .nav-tabs > li > a {
+  min-width: 74px;
+  margin-right: 0;
+  margin-bottom: 3px;
+}
+.tabs-left .nav-tabs {
+  float: left;
+  margin-right: 19px;
+  border-right: 1px solid #ddd;
+}
+.tabs-left .nav-tabs > li > a {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.tabs-left .nav-tabs > li > a:hover {
+  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+.tabs-left .nav-tabs .active > a, .tabs-left .nav-tabs .active > a:hover {
+  border-color: #ddd transparent #ddd #ddd;
+  *border-right-color: #ffffff;
+}
+.tabs-right .nav-tabs {
+  float: right;
+  margin-left: 19px;
+  border-left: 1px solid #ddd;
+}
+.tabs-right .nav-tabs > li > a {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.tabs-right .nav-tabs > li > a:hover {
+  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+.tabs-right .nav-tabs .active > a, .tabs-right .nav-tabs .active > a:hover {
+  border-color: #ddd #ddd #ddd transparent;
+  *border-left-color: #ffffff;
+}
+.navbar {
+  overflow: visible;
+  margin-bottom: 18px;
+}
+.navbar-inner {
+  padding-left: 20px;
+  padding-right: 20px;
+  background-color: #2c2c2c;
+  background-image: -moz-linear-gradient(top, #333333, #222222);
+  background-image: -ms-linear-gradient(top, #333333, #222222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
+  background-image: -webkit-linear-gradient(top, #333333, #222222);
+  background-image: -o-linear-gradient(top, #333333, #222222);
+  background-image: linear-gradient(top, #333333, #222222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+}
+.btn-navbar {
+  display: none;
+  float: right;
+  padding: 7px 10px;
+  margin-left: 5px;
+  margin-right: 5px;
+  background-color: #2c2c2c;
+  background-image: -moz-linear-gradient(top, #333333, #222222);
+  background-image: -ms-linear-gradient(top, #333333, #222222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
+  background-image: -webkit-linear-gradient(top, #333333, #222222);
+  background-image: -o-linear-gradient(top, #333333, #222222);
+  background-image: linear-gradient(top, #333333, #222222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+  border-color: #222222 #222222 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+}
+.btn-navbar:hover,
+.btn-navbar:active,
+.btn-navbar.active,
+.btn-navbar.disabled,
+.btn-navbar[disabled] {
+  background-color: #222222;
+}
+.btn-navbar:active, .btn-navbar.active {
+  background-color: #080808 \9;
+}
+.btn-navbar .icon-bar {
+  display: block;
+  width: 18px;
+  height: 2px;
+  background-color: #f5f5f5;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  border-radius: 1px;
+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-navbar .icon-bar + .icon-bar {
+  margin-top: 3px;
+}
+.nav-collapse.collapse {
+  height: auto;
+}
+.navbar .brand:hover {
+  text-decoration: none;
+}
+.navbar .brand {
+  float: left;
+  display: block;
+  padding: 8px 20px 12px;
+  margin-left: -20px;
+  font-size: 20px;
+  font-weight: 200;
+  line-height: 1;
+  color: #ffffff;
+}
+.navbar .navbar-text {
+  margin-bottom: 0;
+  line-height: 40px;
+  color: #999999;
+}
+.navbar .navbar-text a:hover {
+  color: #ffffff;
+  background-color: transparent;
+}
+.navbar .btn, .navbar .btn-group {
+  margin-top: 5px;
+}
+.navbar .btn-group .btn {
+  margin-top: 0;
+}
+.navbar-form {
+  margin-bottom: 0;
+  *zoom: 1;
+}
+.navbar-form:before, .navbar-form:after {
+  display: table;
+  content: "";
+}
+.navbar-form:after {
+  clear: both;
+}
+.navbar-form input, .navbar-form select {
+  display: inline-block;
+  margin-top: 5px;
+  margin-bottom: 0;
+}
+.navbar-form .radio, .navbar-form .checkbox {
+  margin-top: 5px;
+}
+.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] {
+  margin-top: 3px;
+}
+.navbar-form .input-append, .navbar-form .input-prepend {
+  margin-top: 6px;
+  white-space: nowrap;
+}
+.navbar-form .input-append input, .navbar-form .input-prepend input {
+  margin-top: 0;
+}
+.navbar-search {
+  position: relative;
+  float: left;
+  margin-top: 6px;
+  margin-bottom: 0;
+}
+.navbar-search .search-query {
+  padding: 4px 9px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 1;
+  color: #ffffff;
+  color: rgba(255, 255, 255, 0.75);
+  background: #666;
+  background: rgba(255, 255, 255, 0.3);
+  border: 1px solid #111;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+  -webkit-transition: none;
+  -moz-transition: none;
+  -ms-transition: none;
+  -o-transition: none;
+  transition: none;
+}
+.navbar-search .search-query :-moz-placeholder {
+  color: #eeeeee;
+}
+.navbar-search .search-query::-webkit-input-placeholder {
+  color: #eeeeee;
+}
+.navbar-search .search-query:hover {
+  color: #ffffff;
+  background-color: #999999;
+  background-color: rgba(255, 255, 255, 0.5);
+}
+.navbar-search .search-query:focus, .navbar-search .search-query.focused {
+  padding: 5px 10px;
+  color: #333333;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #ffffff;
+  border: 0;
+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  outline: 0;
+}
+.navbar-fixed-top {
+  position: fixed;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+.navbar-fixed-top .navbar-inner {
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar .nav {
+  position: relative;
+  left: 0;
+  display: block;
+  float: left;
+  margin: 0 10px 0 0;
+}
+.navbar .nav.pull-right {
+  float: right;
+}
+.navbar .nav > li {
+  display: block;
+  float: left;
+}
+.navbar .nav > li > a {
+  float: none;
+  padding: 10px 10px 11px;
+  line-height: 19px;
+  color: #999999;
+  text-decoration: none;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.navbar .nav > li > a:hover {
+  background-color: transparent;
+  color: #ffffff;
+  text-decoration: none;
+}
+.navbar .nav .active > a, .navbar .nav .active > a:hover {
+  color: #ffffff;
+  text-decoration: none;
+  background-color: #222222;
+}
+.navbar .divider-vertical {
+  height: 40px;
+  width: 1px;
+  margin: 0 9px;
+  overflow: hidden;
+  background-color: #222222;
+  border-right: 1px solid #333333;
+}
+.navbar .nav.pull-right {
+  margin-left: 10px;
+  margin-right: 0;
+}
+.navbar .dropdown-menu {
+  margin-top: 1px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.navbar .dropdown-menu:before {
+  content: '';
+  display: inline-block;
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #ccc;
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+  position: absolute;
+  top: -7px;
+  left: 9px;
+}
+.navbar .dropdown-menu:after {
+  content: '';
+  display: inline-block;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #ffffff;
+  position: absolute;
+  top: -6px;
+  left: 10px;
+}
+.navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret {
+  border-top-color: #ffffff;
+}
+.navbar .nav .active .caret {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.navbar .nav .open > .dropdown-toggle, .navbar .nav .active > .dropdown-toggle, .navbar .nav .open.active > .dropdown-toggle {
+  background-color: transparent;
+}
+.navbar .nav .active > .dropdown-toggle:hover {
+  color: #ffffff;
+}
+.navbar .nav.pull-right .dropdown-menu {
+  left: auto;
+  right: 0;
+}
+.navbar .nav.pull-right .dropdown-menu:before {
+  left: auto;
+  right: 12px;
+}
+.navbar .nav.pull-right .dropdown-menu:after {
+  left: auto;
+  right: 13px;
+}
+.breadcrumb {
+  padding: 7px 14px;
+  margin: 0 0 18px;
+  background-color: #fbfbfb;
+  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
+  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
+  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
+  background-image: linear-gradient(top, #ffffff, #f5f5f5);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
+  border: 1px solid #ddd;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  -webkit-box-shadow: inset 0 1px 0 #ffffff;
+  -moz-box-shadow: inset 0 1px 0 #ffffff;
+  box-shadow: inset 0 1px 0 #ffffff;
+}
+.breadcrumb li {
+  display: inline-block;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.breadcrumb .divider {
+  padding: 0 5px;
+  color: #999999;
+}
+.breadcrumb .active a {
+  color: #333333;
+}
+.pagination {
+  height: 36px;
+  margin: 18px 0;
+}
+.pagination ul {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-left: 0;
+  margin-bottom: 0;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.pagination li {
+  display: inline;
+}
+.pagination a {
+  float: left;
+  padding: 0 14px;
+  line-height: 34px;
+  text-decoration: none;
+  border: 1px solid #ddd;
+  border-left-width: 0;
+}
+.pagination a:hover, .pagination .active a {
+  background-color: #f5f5f5;
+}
+.pagination .active a {
+  color: #999999;
+  cursor: default;
+}
+.pagination .disabled a, .pagination .disabled a:hover {
+  color: #999999;
+  background-color: transparent;
+  cursor: default;
+}
+.pagination li:first-child a {
+  border-left-width: 1px;
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.pagination li:last-child a {
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.pagination-centered {
+  text-align: center;
+}
+.pagination-right {
+  text-align: right;
+}
+.pager {
+  margin-left: 0;
+  margin-bottom: 18px;
+  list-style: none;
+  text-align: center;
+  *zoom: 1;
+}
+.pager:before, .pager:after {
+  display: table;
+  content: "";
+}
+.pager:after {
+  clear: both;
+}
+.pager li {
+  display: inline;
+}
+.pager a {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+.pager a:hover {
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.pager .next a {
+  float: right;
+}
+.pager .previous a {
+  float: left;
+}
+.modal-open .dropdown-menu {
+  z-index: 2050;
+}
+.modal-open .dropdown.open {
+  *z-index: 2050;
+}
+.modal-open .popover {
+  z-index: 2060;
+}
+.modal-open .tooltip {
+  z-index: 2070;
+}
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000000;
+}
+.modal-backdrop.fade {
+  opacity: 0;
+}
+.modal-backdrop, .modal-backdrop.fade.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.modal {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  z-index: 1050;
+  max-height: 500px;
+  overflow: auto;
+  width: 560px;
+  margin: -250px 0 0 -280px;
+  background-color: #ffffff;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, 0.3);
+  *border: 1px solid #999;
+  /* IE6-7 */
+
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+}
+.modal.fade {
+  -webkit-transition: opacity .3s linear, top .3s ease-out;
+  -moz-transition: opacity .3s linear, top .3s ease-out;
+  -ms-transition: opacity .3s linear, top .3s ease-out;
+  -o-transition: opacity .3s linear, top .3s ease-out;
+  transition: opacity .3s linear, top .3s ease-out;
+  top: -25%;
+}
+.modal.fade.in {
+  top: 50%;
+}
+.modal-header {
+  padding: 9px 15px;
+  border-bottom: 1px solid #eee;
+}
+.modal-header .close {
+  margin-top: 2px;
+}
+.modal-body {
+  padding: 15px;
+}
+.modal-body .modal-form {
+  margin-bottom: 0;
+}
+.modal-footer {
+  padding: 14px 15px 15px;
+  margin-bottom: 0;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+  -webkit-box-shadow: inset 0 1px 0 #ffffff;
+  -moz-box-shadow: inset 0 1px 0 #ffffff;
+  box-shadow: inset 0 1px 0 #ffffff;
+  *zoom: 1;
+}
+.modal-footer:before, .modal-footer:after {
+  display: table;
+  content: "";
+}
+.modal-footer:after {
+  clear: both;
+}
+.modal-footer .btn {
+  float: right;
+  margin-left: 5px;
+  margin-bottom: 0;
+}
+.tooltip {
+  position: absolute;
+  z-index: 1020;
+  display: block;
+  visibility: visible;
+  padding: 5px;
+  font-size: 11px;
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+.tooltip.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.tooltip.top {
+  margin-top: -2px;
+}
+.tooltip.right {
+  margin-left: 2px;
+}
+.tooltip.bottom {
+  margin-top: 2px;
+}
+.tooltip.left {
+  margin-left: -2px;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-top: 5px solid #000000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-left: 5px solid #000000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-bottom: 5px solid #000000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-right: 5px solid #000000;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #ffffff;
+  text-align: center;
+  text-decoration: none;
+  background-color: #000000;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1010;
+  display: none;
+  padding: 5px;
+}
+.popover.top {
+  margin-top: -5px;
+}
+.popover.right {
+  margin-left: 5px;
+}
+.popover.bottom {
+  margin-top: 5px;
+}
+.popover.left {
+  margin-left: -5px;
+}
+.popover.top .arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-top: 5px solid #000000;
+}
+.popover.right .arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-right: 5px solid #000000;
+}
+.popover.bottom .arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-bottom: 5px solid #000000;
+}
+.popover.left .arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-left: 5px solid #000000;
+}
+.popover .arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+}
+.popover-inner {
+  padding: 3px;
+  width: 280px;
+  overflow: hidden;
+  background: #000000;
+  background: rgba(0, 0, 0, 0.8);
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+}
+.popover-title {
+  padding: 9px 15px;
+  line-height: 1;
+  background-color: #f5f5f5;
+  border-bottom: 1px solid #eee;
+  -webkit-border-radius: 3px 3px 0 0;
+  -moz-border-radius: 3px 3px 0 0;
+  border-radius: 3px 3px 0 0;
+}
+.popover-content {
+  padding: 14px;
+  background-color: #ffffff;
+  -webkit-border-radius: 0 0 3px 3px;
+  -moz-border-radius: 0 0 3px 3px;
+  border-radius: 0 0 3px 3px;
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+}
+.popover-content p, .popover-content ul, .popover-content ol {
+  margin-bottom: 0;
+}
+.thumbnails {
+  margin-left: -20px;
+  list-style: none;
+  *zoom: 1;
+}
+.thumbnails:before, .thumbnails:after {
+  display: table;
+  content: "";
+}
+.thumbnails:after {
+  clear: both;
+}
+.thumbnails > li {
+  float: left;
+  margin: 0 0 18px 20px;
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  line-height: 1;
+  border: 1px solid #ddd;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+a.thumbnail:hover {
+  border-color: #0088cc;
+  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+}
+.thumbnail > img {
+  display: block;
+  max-width: 100%;
+  margin-left: auto;
+  margin-right: auto;
+}
+.thumbnail .caption {
+  padding: 9px;
+}
+.label {
+  padding: 2px 4px 3px;
+  font-size: 11.049999999999999px;
+  font-weight: bold;
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #999999;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.label:hover {
+  color: #ffffff;
+  text-decoration: none;
+}
+.label-important {
+  background-color: #b94a48;
+}
+.label-important:hover {
+  background-color: #953b39;
+}
+.label-warning {
+  background-color: #f89406;
+}
+.label-warning:hover {
+  background-color: #c67605;
+}
+.label-success {
+  background-color: #468847;
+}
+.label-success:hover {
+  background-color: #356635;
+}
+.label-info {
+  background-color: #3a87ad;
+}
+.label-info:hover {
+  background-color: #2d6987;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 0 0;
+  }
+  to {
+    background-position: 40px 0;
+  }
+}
+@-moz-keyframes progress-bar-stripes {
+  from {
+    background-position: 0 0;
+  }
+  to {
+    background-position: 40px 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 0 0;
+  }
+  to {
+    background-position: 40px 0;
+  }
+}
+.progress {
+  overflow: hidden;
+  height: 18px;
+  margin-bottom: 18px;
+  background-color: #f7f7f7;
+  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.progress .bar {
+  width: 0%;
+  height: 18px;
+  color: #ffffff;
+  font-size: 12px;
+  text-align: center;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #0e90d2;
+  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
+  background-image: -ms-linear-gradient(top, #149bdf, #0480be);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+  background-image: -o-linear-gradient(top, #149bdf, #0480be);
+  background-image: linear-gradient(top, #149bdf, #0480be);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  -webkit-transition: width 0.6s ease;
+  -moz-transition: width 0.6s ease;
+  -ms-transition: width 0.6s ease;
+  -o-transition: width 0.6s ease;
+  transition: width 0.6s ease;
+}
+.progress-striped .bar {
+  background-color: #62c462;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  -webkit-background-size: 40px 40px;
+  -moz-background-size: 40px 40px;
+  -o-background-size: 40px 40px;
+  background-size: 40px 40px;
+}
+.progress.active .bar {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+  -moz-animation: progress-bar-stripes 2s linear infinite;
+  animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-danger .bar {
+  background-color: #dd514c;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: linear-gradient(top, #ee5f5b, #c43c35);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
+}
+.progress-danger.progress-striped .bar {
+  background-color: #ee5f5b;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-success .bar {
+  background-color: #5eb95e;
+  background-image: -moz-linear-gradient(top, #62c462, #57a957);
+  background-image: -ms-linear-gradient(top, #62c462, #57a957);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+  background-image: -o-linear-gradient(top, #62c462, #57a957);
+  background-image: linear-gradient(top, #62c462, #57a957);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
+}
+.progress-success.progress-striped .bar {
+  background-color: #62c462;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-info .bar {
+  background-color: #4bb1cf;
+  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: linear-gradient(top, #5bc0de, #339bb9);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
+}
+.progress-info.progress-striped .bar {
+  background-color: #5bc0de;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.accordion {
+  margin-bottom: 18px;
+}
+.accordion-group {
+  margin-bottom: 2px;
+  border: 1px solid #e5e5e5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.accordion-heading {
+  border-bottom: 0;
+}
+.accordion-heading .accordion-toggle {
+  display: block;
+  padding: 8px 15px;
+}
+.accordion-inner {
+  padding: 9px 15px;
+  border-top: 1px solid #e5e5e5;
+}
+.carousel {
+  position: relative;
+  margin-bottom: 18px;
+  line-height: 1;
+}
+.carousel-inner {
+  overflow: hidden;
+  width: 100%;
+  position: relative;
+}
+.carousel .item {
+  display: none;
+  position: relative;
+  -webkit-transition: 0.6s ease-in-out left;
+  -moz-transition: 0.6s ease-in-out left;
+  -ms-transition: 0.6s ease-in-out left;
+  -o-transition: 0.6s ease-in-out left;
+  transition: 0.6s ease-in-out left;
+}
+.carousel .item > img {
+  display: block;
+  line-height: 1;
+}
+.carousel .active, .carousel .next, .carousel .prev {
+  display: block;
+}
+.carousel .active {
+  left: 0;
+}
+.carousel .next, .carousel .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.carousel .next {
+  left: 100%;
+}
+.carousel .prev {
+  left: -100%;
+}
+.carousel .next.left, .carousel .prev.right {
+  left: 0;
+}
+.carousel .active.left {
+  left: -100%;
+}
+.carousel .active.right {
+  left: 100%;
+}
+.carousel-control {
+  position: absolute;
+  top: 40%;
+  left: 15px;
+  width: 40px;
+  height: 40px;
+  margin-top: -20px;
+  font-size: 60px;
+  font-weight: 100;
+  line-height: 30px;
+  color: #ffffff;
+  text-align: center;
+  background: #222222;
+  border: 3px solid #ffffff;
+  -webkit-border-radius: 23px;
+  -moz-border-radius: 23px;
+  border-radius: 23px;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.carousel-control.right {
+  left: auto;
+  right: 15px;
+}
+.carousel-control:hover {
+  color: #ffffff;
+  text-decoration: none;
+  opacity: 0.9;
+  filter: alpha(opacity=90);
+}
+.carousel-caption {
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  padding: 10px 15px 5px;
+  background: #333333;
+  background: rgba(0, 0, 0, 0.75);
+}
+.carousel-caption h4, .carousel-caption p {
+  color: #ffffff;
+}
+.hero-unit {
+  padding: 60px;
+  margin-bottom: 30px;
+  background-color: #f5f5f5;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.hero-unit h1 {
+  margin-bottom: 0;
+  font-size: 60px;
+  line-height: 1;
+  letter-spacing: -1px;
+}
+.hero-unit p {
+  font-size: 18px;
+  font-weight: 200;
+  line-height: 27px;
+}
+.pull-right {
+  float: right;
+}
+.pull-left {
+  float: left;
+}
+.hide {
+  display: none;
+}
+.show {
+  display: block;
+}
+.invisible {
+  visibility: hidden;
+}

=== added file 'src/postorius/static/postorius/default/css/forms.css'
--- src/postorius/static/postorius/default/css/forms.css	1970-01-01 00:00:00 +0000
+++ src/postorius/static/postorius/default/css/forms.css	2012-03-29 06:09:18 +0000
@@ -0,0 +1,53 @@
+/*************************
+ * Forms 
+ *************************/
+
+form ul {
+    list-style-type:none;
+    }
+
+input, select {
+	border: 1px solid #b2b2b2;
+	border-radius: 3px;
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	left:50%;
+	width: 50%;
+	padding: 2px;
+	float:right;
+}
+
+input[type="radio"], input[type="checkbox"] {
+    float:none;
+    }
+
+input[type="submit"], 
+input.button { 
+    width: auto;
+    margin-right: 10px;
+}
+.errorlist {
+	float: right;
+	width: 300px;
+	list-style: none;
+	margin: 0 0 0 15px;
+	padding: 0;
+	color: red;
+}
+form div.field {
+	clear: both;
+	padding-top: 10px;
+}
+label {
+	clear: both;
+	display: block;
+}
+button {
+	margin-top: 5px;
+}
+
+
+.languages ul {
+    column-count: 3;
+    -moz-column-count: 3;
+}

=== added file 'src/postorius/static/postorius/default/css/icons.css'
--- src/postorius/static/postorius/default/css/icons.css	1970-01-01 00:00:00 +0000
+++ src/postorius/static/postorius/default/css/icons.css	2012-03-29 06:09:18 +0000
@@ -0,0 +1,55 @@
+.mm_actionButtons li a
+    {
+    background-color: transparent;
+    background-position: left center;
+    background-repeat: no-repeat;
+    background-size: auto 100%;
+    }
+
+/** List **/
+.mm_list_summary a
+    {background: url(../img/tango/emblems/all-per-page.svg)}
+    
+.mm_list_new a
+    {background-image: url(../img/tango/actions/document-new_list.svg);}
+
+.mm_delete_list a
+    {background-image: url(../img/tango/categories/document-denied.svg);}    
+
+.mm_subscribe a
+    {background-image: url(../img/tango/actions/add-participant.svg);}
+
+.mm_archives a
+    {background-image: url(../img/tango/emblems/address-book.svg);}    
+
+.mm_options a
+    {background-image: url(../img/tango/actions/document-settings.svg);}            
+
+.mm_unsubscribe a
+    {background-image: url(../img/tango/actions/remove-participant.svg);}
+    
+.mm_mass_subscribe a
+    {background-image: url(../img/tango/actions/list-all-participants.svg);}
+    
+.mm_membership a
+    {background-image: url(../img/tango/categories/user-edit.svg);}
+
+/**  Domain **/
+.mm_new_domain a
+    {background-image: url(../img/tango/emblems/account-new.svg);}
+    
+.mm_edit_domain a
+    {background-image: url(../img/tango/emblems/account-edit.svg);}
+
+.mm_delete_domain a
+    {background-image: url(../img/tango/emblems/account-delete.svg);} 
+    
+/** Settings **/
+
+/** user_settings - membership_settings **/
+
+.mm_user_settings a
+    {background-image: url(../img/tango/TODO-blueuser_with_editPen);} 
+    
+.mm_user_subscriptions a
+    {background-image: url(../img/tango/TODO-blueuser_with_editlist_icon);} 

=== added file 'src/postorius/static/postorius/default/css/normalize.css'
--- src/postorius/static/postorius/default/css/normalize.css	1970-01-01 00:00:00 +0000
+++ src/postorius/static/postorius/default/css/normalize.css	2012-03-29 06:09:18 +0000
@@ -0,0 +1,504 @@
+/*! normalize.css 2012-03-06T10:21 UTC - http://github.com/necolas/normalize.css */
+
+/* =============================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/*
+ * Corrects block display not defined in IE6/7/8/9 & FF3
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section,
+summary {
+    display: block;
+}
+
+/*
+ * Corrects inline-block display not defined in IE6/7/8/9 & FF3
+ */
+
+audio,
+canvas,
+video {
+    display: inline-block;
+    *display: inline;
+    *zoom: 1;
+}
+
+/*
+ * Prevents modern browsers from displaying 'audio' without controls
+ * Remove excess height in iOS5 devices
+ */
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+/*
+ * Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4
+ * Known issue: no IE6 support
+ */
+
+[hidden] {
+    display: none;
+}
+
+
+/* =============================================================================
+   Base
+   ========================================================================== */
+
+/*
+ * 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units
+ *    http://clagnut.com/blog/348/#c790
+ * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom
+ *    www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/
+ */
+
+html {
+    font-size: 100%; /* 1 */
+    -webkit-text-size-adjust: 100%; /* 2 */
+    -ms-text-size-adjust: 100%; /* 2 */
+}
+
+/*
+ * Addresses font-family inconsistency between 'textarea' and other form elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+    font-family: sans-serif;
+}
+
+/*
+ * Addresses margins handled incorrectly in IE6/7
+ */
+
+body {
+    margin: 0;
+}
+
+
+/* =============================================================================
+   Links
+   ========================================================================== */
+
+/*
+ * Addresses outline displayed oddly in Chrome
+ */
+
+a:focus {
+    outline: thin dotted;
+}
+
+/*
+ * Improves readability when focused and also mouse hovered in all browsers
+ * people.opera.com/patrickl/experiments/keyboard/test
+ */
+
+a:hover,
+a:active {
+    outline: 0;
+}
+
+
+/* =============================================================================
+   Typography
+   ========================================================================== */
+
+/*
+ * Addresses font sizes and margins set differently in IE6/7
+ * Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5
+ */
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+h2 {
+    font-size: 1.5em;
+    margin: 0.83em 0;
+}
+
+h3 {
+    font-size: 1.17em;
+    margin: 1em 0;
+}
+
+h4 {
+    font-size: 1em;
+    margin: 1.33em 0;
+}
+
+h5 {
+    font-size: 0.83em;
+    margin: 1.67em 0;
+}
+
+h6 {
+    font-size: 0.75em;
+    margin: 2.33em 0;
+}
+
+/*
+ * Addresses styling not present in IE7/8/9, S5, Chrome
+ */
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+/*
+ * Addresses style set to 'bolder' in FF3+, S4/5, Chrome
+*/
+
+b,
+strong {
+    font-weight: bold;
+}
+
+blockquote {
+    margin: 1em 40px;
+}
+
+/*
+ * Addresses styling not present in S5, Chrome
+ */
+
+dfn {
+    font-style: italic;
+}
+
+/*
+ * Addresses styling not present in IE6/7/8/9
+ */
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+/*
+ * Addresses margins set differently in IE6/7
+ */
+
+p,
+pre {
+    margin: 1em 0;
+}
+
+/*
+ * Corrects font family set oddly in IE6, S4/5, Chrome
+ * en.wikipedia.org/wiki/User:Davidgothberg/Test59
+ */
+
+pre,
+code,
+kbd,
+samp {
+    font-family: monospace, serif;
+    _font-family: 'courier new', monospace;
+    font-size: 1em;
+}
+
+/*
+ * Improves readability of pre-formatted text in all browsers
+ */
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+/*
+ * 1. Addresses CSS quotes not supported in IE6/7
+ * 2. Addresses quote property not supported in S4
+ */
+
+/* 1 */
+
+q {
+    quotes: none;
+}
+
+/* 2 */
+
+q:before,
+q:after {
+    content: '';
+    content: none;
+}
+
+small {
+    font-size: 75%;
+}
+
+/*
+ * Prevents sub and sup affecting line-height in all browsers
+ * gist.github.com/413930
+ */
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+
+/* =============================================================================
+   Lists
+   ========================================================================== */
+
+/*
+ * Addresses margins set differently in IE6/7
+ */
+
+dl,
+menu,
+ol,
+ul {
+    margin: 1em 0;
+}
+
+dd {
+    margin: 0 0 0 40px;
+}
+
+/*
+ * Addresses paddings set differently in IE6/7
+ */
+
+menu,
+ol,
+ul {
+    padding: 0 0 0 40px;
+}
+
+/*
+ * Corrects list images handled incorrectly in IE7
+ */
+
+nav ul,
+nav ol {
+    list-style: none;
+    list-style-image: none;
+}
+
+
+/* =============================================================================
+   Embedded content
+   ========================================================================== */
+
+/*
+ * 1. Removes border when inside 'a' element in IE6/7/8/9, FF3
+ * 2. Improves image quality when scaled in IE7
+ *    code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/
+ */
+
+img {
+    border: 0; /* 1 */
+    -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/*
+ * Corrects overflow displayed oddly in IE9
+ */
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+
+/* =============================================================================
+   Figures
+   ========================================================================== */
+
+/*
+ * Addresses margin not present in IE6/7/8/9, S5, O11
+ */
+
+figure {
+    margin: 0;
+}
+
+
+/* =============================================================================
+   Forms
+   ========================================================================== */
+
+/*
+ * Corrects margin displayed oddly in IE6/7
+ */
+
+form {
+    margin: 0;
+}
+
+/*
+ * Define consistent border, margin, and padding
+ */
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+/*
+ * 1. Corrects color not being inherited in IE6/7/8/9
+ * 2. Corrects text not wrapping in FF3
+ * 3. Corrects alignment displayed oddly in IE6/7
+ */
+
+legend {
+    border: 0; /* 1 */
+    padding: 0;
+    white-space: normal; /* 2 */
+    *margin-left: -7px; /* 3 */
+}
+
+/*
+ * 1. Corrects font size not being inherited in all browsers
+ * 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome
+ * 3. Improves appearance and consistency in all browsers
+ */
+
+button,
+input,
+select,
+textarea {
+    font-size: 100%; /* 1 */
+    margin: 0; /* 2 */
+    vertical-align: baseline; /* 3 */
+    *vertical-align: middle; /* 3 */
+}
+
+/*
+ * Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet
+ */
+
+button,
+input {
+    line-height: normal; /* 1 */
+}
+
+/*
+ * 1. Improves usability and consistency of cursor style between image-type 'input' and others
+ * 2. Corrects inability to style clickable 'input' types in iOS
+ * 3. Removes inner spacing in IE7 without affecting normal text inputs
+ *    Known issue: inner spacing remains in IE6
+ */
+
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+    cursor: pointer; /* 1 */
+    -webkit-appearance: button; /* 2 */
+    *overflow: visible;  /* 3 */
+}
+
+/*
+ * Re-set default cursor for disabled elements
+ */
+
+button[disabled],
+input[disabled] {
+    cursor: default;
+}
+
+/*
+ * 1. Addresses box sizing set to content-box in IE8/9
+ * 2. Removes excess padding in IE8/9
+ * 3. Removes excess padding in IE7
+      Known issue: excess padding remains in IE6
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box; /* 1 */
+    padding: 0; /* 2 */
+    *height: 13px; /* 3 */
+    *width: 13px; /* 3 */
+}
+
+/*
+ * 1. Addresses appearance set to searchfield in S5, Chrome
+ * 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof)
+ */
+
+input[type="search"] {
+    -webkit-appearance: textfield; /* 1 */
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box; /* 2 */
+    box-sizing: content-box;
+}
+
+/*
+ * Removes inner padding and search cancel button in S5, Chrome on OS X
+ */
+
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+    -webkit-appearance: none;
+}
+
+/*
+ * Removes inner padding and border in FF3+
+ * www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+/*
+ * 1. Removes default vertical scrollbar in IE6/7/8/9
+ * 2. Improves readability and alignment in all browsers
+ */
+
+textarea {
+    overflow: auto; /* 1 */
+    vertical-align: top; /* 2 */
+}
+
+
+/* =============================================================================
+   Tables
+   ========================================================================== */
+
+/*
+ * Remove most spacing between table cells
+ */
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}

=== added file 'src/postorius/static/postorius/default/css/style.css'
--- src/postorius/static/postorius/default/css/style.css	1970-01-01 00:00:00 +0000
+++ src/postorius/static/postorius/default/css/style.css	2012-03-29 06:09:18 +0000
@@ -0,0 +1,150 @@
+body {
+    font-color: #444;
+}
+h1 {
+    clear: both;
+    margin: 20px 0;
+    font-weight: normal;
+}
+h1 span {
+    font-size: 75%;
+    font-style: italic;
+}
+h2 {
+    margin: 10px 0;
+    font-weight: normal;
+}
+
+.mm_canvas {
+    position: relative;
+    width: 960px;
+    margin: 0 auto;
+}
+
+/***** meta nav *****/
+.mm_header {
+    padding: 5px;
+    background-image: -webkit-linear-gradient(#FAFAFA, #EFEFEF);
+    background-image: -moz-linear-gradient(#FAFAFA, #EFEFEF);
+    border-bottom: 1px solid #CACACA;
+}
+.mm_metaNav {
+    float: right;
+    list-style: none;
+    margin: 0;
+    padding: 5px 0 0 0;
+}
+.mm_loginName {
+    position: absolute;
+    right: 0;
+    bottom: 0;
+}
+.mm_metaNav li {
+    float: left;
+    margin-left: 20px;
+}
+.mm_metaNav a {
+    text-decoration: none;
+    color: #444;
+    padding: 5px 0 5px 5px;
+    text-shadow: #fff 0px 1px 1px;
+}
+.mm_metaNav .mm_todos,
+.mm_metaNav .mm_settings,
+.mm_metaNav .mm_logout,
+.mm_metaNav .mm_lists,
+.mm_metaNav .mm_user {
+    background-color: transparent;
+    background-image: url(../img/icons.png);
+    background-repeat: no-repeat;
+    padding-left: 20px;
+}
+.mm_todos { background-position: 0px 5px; }
+.mm_settings { background-position: 0px -30px; }
+.mm_user { background-position: 0px -65px; }
+.mm_logout { background-position: 0px -240px; }
+.mm_lists { background-position: 0px -311px; }
+.mm_todos:hover { background-position: 0px -100px; }
+.mm_settings:hover { background-position: 0px -135px; }
+.mm_user:hover { background-position: 0px -170px; }
+.mm_logout:hover { background-position: 0px -205px; }
+.mm_lists:hover { background-position: 0px -276px; }
+
+.mm_main {
+    clear: both;
+}
+
+.mm_subHeader {
+    padding-top: 10px;
+}
+.mm_context {
+    display: block;
+    float: left;
+    padding-top: 9px;
+    font-size: 20px;
+    font-style: italic;
+}
+.mm_nav {
+    padding: 10px 0 30px 0;
+    margin: 0;
+    float: right;
+}
+.mm_nav li {
+    float: left;
+    list-style: none;
+    padding: 0;
+    margin: 0 0 0 10px;
+}
+.mm_nav li a {
+    font-weight: bold;
+    font-size: 14px;
+}
+
+/* messages */
+.mm_messages {
+    margin: 10px 0 0 0;
+    list-style: none;
+}
+
+/* (un)subscribe forms in list_summary */
+.list_summary .accordion {
+    float: right;
+    width: 300px;
+    margin-left: 20px;
+}
+
+/* forms */
+fieldset {
+    border: none;
+}
+legend {
+    border: none;
+}
+
+/* tables */
+.table .mm_action {
+    text-align: right;
+}
+.mm_userData {
+    width: 400px;
+}
+.mm_userData td {
+    width: 50%;
+}
+
+/* auto-generated forms made a bit cleaner */
+.well label {
+    display: inline;
+}
+.well input {
+    display: inline;
+}
+.well li {
+    display: inline;
+    list-style: none;
+    padding-right: 1em;
+}
+.errorlist {
+    color: 	#A22630;
+}
+

=== added directory 'src/postorius/static/postorius/default/img'
=== added directory 'src/postorius/static/postorius/default/img/icons'
=== added file 'src/postorius/static/postorius/default/img/icons.png'
Binary files src/postorius/static/postorius/default/img/icons.png	1970-01-01 00:00:00 +0000 and src/postorius/static/postorius/default/img/icons.png	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/static/postorius/default/img/icons/minus.png'
Binary files src/postorius/static/postorius/default/img/icons/minus.png	1970-01-01 00:00:00 +0000 and src/postorius/static/postorius/default/img/icons/minus.png	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/static/postorius/default/img/icons/plus.png'
Binary files src/postorius/static/postorius/default/img/icons/plus.png	1970-01-01 00:00:00 +0000 and src/postorius/static/postorius/default/img/icons/plus.png	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/static/postorius/default/img/mailman_logo.png'
Binary files src/postorius/static/postorius/default/img/mailman_logo.png	1970-01-01 00:00:00 +0000 and src/postorius/static/postorius/default/img/mailman_logo.png	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/static/postorius/default/img/mailman_logo_trans.png'
Binary files src/postorius/static/postorius/default/img/mailman_logo_trans.png	1970-01-01 00:00:00 +0000 and src/postorius/static/postorius/default/img/mailman_logo_trans.png	2012-03-29 06:09:18 +0000 differ
=== added file 'src/postorius/static/postorius/default/img/sign_in_blue.png'
Binary files src/postorius/static/postorius/default/img/sign_in_blue.png	1970-01-01 00:00:00 +0000 and src/postorius/static/postorius/default/img/sign_in_blue.png	2012-03-29 06:09:18 +0000 differ
=== added directory 'src/postorius/static/postorius/default/img/tango'
=== added file 'src/postorius/static/postorius/default/img/tango/_license.txt'
--- src/postorius/static/postorius/default/img/tango/_license.txt	1970-01-01 00:00:00 +0000
+++ src/postorius/static/postorius/default/img/tango/_license.txt	2012-03-29 06:09:18 +0000
@@ -0,0 +1,7 @@
+All Icons within this folder belong to the RRZE Icon Set which is based on Tango
+
+Both are published CC by SA and where included into mailman with special permission of Franziska Sponsel - one of the designers.
+
+Please see http://rrze-icon-set.berlios.de/team.html for the full team
+
+And http://tango.freedesktop.org/Tango_Desktop_Project for the Tango Project.

=== added directory 'src/postorius/static/postorius/default/img/tango/actions'
=== added file 'src/postorius/static/postorius/default/img/tango/actions/add-participant.svg'
--- src/postorius/static/postorius/default/img/tango/actions/add-participant.svg	1970-01-01 00:00:00 +0000
+++ src/postorius/static/postorius/default/img/tango/actions/add-participant.svg	2012-03-29 06:09:18 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" enable-background="new 0 0 480 766.444" height="766.444px" id="Ebene_1" inkscape:export-xdpi="129.60001" inkscape:export-ydpi="129.60001" inkscape:output_extension="org.inkscape.output.svg.inkscape" inkscape:version="0.46" sodipodi:version="0.32" version="1.1" viewBox="0 0 480 766.444" width="480px" x="0px" xml:space="preserve" y="0px"><metadata id="metadata38"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/"/><dc:subject><rdf:Bag><rdf:li>participant</rdf:li><rdf:li>add</rdf:li></rdf:Bag></dc:subject><dc:title>add participant</dc:title><dc:date>July 2009</dc:date><dc:creator><cc:Agent><dc:title>Franziska Sponsel</dc:title></cc:Agent></dc:creator><dc:rights><cc:Agent><dc:title>Franziska Sponsel</dc:title></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title>RRZE</dc:title></cc:Agent></dc:publisher><dc:contributor><cc:Agent><dc:title>Hendrik Eggers, Franziska Sponsel</dc:title></cc:Agent></dc:contributor><dc:description>uses &lt;http://ftp.uni-erlangen.de/pub/rrze/tango/rrze-icon-set/tango/16x16/categories/user-other.png&gt;</dc:description></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/><cc:requires rdf:resource="http://creativecommons.org/ns#Notice"/><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution"/><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike"/></cc:License></rdf:RDF></metadata><defs id="defs36"><linearGradient id="linearGradient8662" inkscape:collect="always"><stop id="stop8664" offset="0" style="stop-color:#000000;stop-opacity:1;"/><stop id="stop8666" offset="1" style="stop-color:#000000;stop-opacity:0;"/></linearGradient><radialGradient cx="24.837126" cy="36.421127" fx="24.837126" fy="36.421127" gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" gradientUnits="userSpaceOnUse" id="radialGradient119902" inkscape:collect="always" r="15.644737" xlink:href="#linearGradient8662"/><linearGradient id="linearGradient5048"><stop id="stop5050" offset="0" style="stop-color:black;stop-opacity:0;"/><stop id="stop5056" offset="0.5" style="stop-color:black;stop-opacity:1;"/><stop id="stop5052" offset="1" style="stop-color:black;stop-opacity:0;"/></linearGradient><inkscape:perspective id="perspective10334" inkscape:persp3d-origin="240 : 255.48132 : 1" inkscape:vp_x="0 : 383.22198 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="480 : 383.22198 : 1" sodipodi:type="inkscape:persp3d"/><linearGradient gradientUnits="userSpaceOnUse" id="linearGradient45240" x1="43.943802" x2="411.39359" y1="733.39258" y2="425.06561">
+				<stop id="stop45242" offset="0.0562" style="stop-color:#204a87;stop-opacity:1;"/>
+				<stop id="stop45244" offset="0.56739998" style="stop-color:#729fcf;stop-opacity:1;"/>
+				<stop id="stop45246" offset="0.9551" style="stop-color:#eeeeec;stop-opacity:1;"/>
+			</linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="linearGradient2472" inkscape:collect="always" x1="43.943802" x2="411.39359" xlink:href="#SVGID_2_" y1="733.39258" y2="425.06561"/>
+	
+		
+	
+<linearGradient gradientUnits="userSpaceOnUse" id="linearGradient44238" inkscape:collect="always" x1="43.943802" x2="411.39359" xlink:href="#SVGID_2_" y1="733.39258" y2="425.06561"/>
+		
+	<linearGradient gradientUnits="userSpaceOnUse" id="linearGradient44254" inkscape:collect="always" x1="43.943802" x2="411.39359" xlink:href="#SVGID_2_" y1="733.39258" y2="425.06561"/>
+			<linearGradient gradientTransform="matrix(0.554593,0,0,0.554593,112.4225,231.3589)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="43.944302" x2="411.3941" y1="733.39258" y2="425.06561">
+				<stop id="stop12" offset="0.0562" style="stop-color:#204a87;stop-opacity:1;"/>
+				<stop id="stop14" offset="0.56739998" style="stop-color:#729fcf;stop-opacity:1;"/>
+				<stop id="stop16" offset="0.9551" style="stop-color:#ffffff;stop-opacity:1;"/>
+			</linearGradient>
+			
+			<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="43.943802" x2="411.39359" y1="733.39258" y2="425.06561">
+				<stop id="stop21" offset="0.0562" style="stop-color:#003F90"/>
+				<stop id="stop23" offset="0.5674" style="stop-color:#0093D2"/>
+				<stop id="stop25" offset="0.9551" style="stop-color:#EDF3F7"/>
+			</linearGradient>
+			
+			
+			
+			
+				
+		<linearGradient gradientUnits="userSpaceOnUse" id="linearGradient45272" inkscape:collect="always" x1="120.74135" x2="370.30811" xlink:href="#linearGradient45240" y1="520.05469" y2="520.05469"/><linearGradient gradientUnits="userSpaceOnUse" id="linearGradient27210" inkscape:collect="always" x1="120.74135" x2="370.30811" xlink:href="#linearGradient45240" y1="520.05469" y2="520.05469"/><linearGradient gradientTransform="matrix(0.554593,0,0,0.554593,112.4225,231.3589)" gradientUnits="userSpaceOnUse" id="linearGradient27213" inkscape:collect="always" x1="43.944302" x2="411.3941" xlink:href="#SVGID_1_" y1="733.39258" y2="425.06561"/><linearGradient gradientUnits="userSpaceOnUse" id="linearGradient10340" inkscape:collect="always" x1="120.74135" x2="370.30811" xlink:href="#linearGradient45240" y1="520.05469" y2="520.05469"/><linearGradient gradientTransform="matrix(0.554593,0,0,0.554593,112.4225,231.3589)" gradientUnits="userSpaceOnUse" id="linearGradient10343" inkscape:collect="always" x1="43.944302" x2="411.3941" xlink:href="#SVGID_1_" y1="733.39258" y2="425.06561"/><linearGradient gradientTransform="matrix(0.554593,0,0,0.554593,112.4225,231.3589)" gradientUnits="userSpaceOnUse" id="linearGradient2415" inkscape:collect="always" x1="43.944302" x2="411.3941" xlink:href="#SVGID_1_" y1="733.39258" y2="425.06561"/><linearGradient gradientUnits="userSpaceOnUse" id="linearGradient2417" inkscape:collect="always" x1="120.74135" x2="370.30811" xlink:href="#linearGradient45240" y1="520.05469" y2="520.05469"/><linearGradient gradientTransform="matrix(0.554593,0,0,0.554593,112.4225,231.3589)" gradientUnits="userSpaceOnUse" id="linearGradient15666" inkscape:collect="always" x1="43.944302" x2="411.3941" xlink:href="#SVGID_1_" y1="733.39258" y2="425.06561"/><linearGradient gradientUnits="userSpaceOnUse" id="linearGradient15668" inkscape:collect="always" x1="120.74135" x2="370.30811" xlink:href="#linearGradient45240" y1="520.05469" y2="520.05469"/><radialGradient cx="24.837126" cy="36.421127" fx="24.837126" fy="36.421127" gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" gradientUnits="userSpaceOnUse" id="radialGradient15670" inkscape:collect="always" r="15.644737" xlink:href="#linearGradient8662"/><radialGradient cx="24.837126" cy="36.421127" fx="24.837126" fy="36.421127" gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" gradientUnits="userSpaceOnUse" id="radialGradient15685" inkscape:collect="always" r="15.644737" xlink:href="#linearGradient8662"/><radialGradient cx="24.837126" cy="36.421127" fx="24.837126" fy="36.421127" gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" gradientUnits="userSpaceOnUse" id="radialGradient15696" inkscape:collect="always" r="15.644737" xlink:href="#linearGradient8662"/><radialGradient cx="24.837126" cy="36.421127" fx="24.837126" fy="36.421127" gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" gradientUnits="userSpaceOnUse" id="radialGradient186801" inkscape:collect="always" r="15.644737" xlink:href="#linearGradient8662"/><linearGradient gradientTransform="matrix(0.554593,0,0,0.554593,112.4225,231.3589)" gradientUnits="userSpaceOnUse" id="linearGradient186810" inkscape:collect="always" x1="43.944302" x2="411.3941" xlink:href="#SVGID_1_" y1="733.39258" y2="425.06561"/><linearGradient gradientUnits="userSpaceOnUse" id="linearGradient186812" inkscape:collect="always" x1="120.74135" x2="370.30811" xlink:href="#linearGradient45240" y1="520.05469" y2="520.05469"/><linearGradient gradientTransform="matrix(1.0232774,0,0,1.0232774,-84.175017,-21.231594)" gradientUnits="userSpaceOnUse" id="linearGradient186818" inkscape:collect="always" x1="120.74135" x2="370.30811" xlink:href="#linearGradient45240" y1="520.05469" y2="520.05469"/><linearGradient gradientTransform="matrix(0.5675025,0,0,0.5675025,30.864387,215.51274)" gradientUnits="userSpaceOnUse" id="linearGradient186821" inkscape:collect="always" x1="43.944302" x2="411.3941" xlink:href="#SVGID_1_" y1="733.39258" y2="425.06561"/><radialGradient inkscape:collect="always" xlink:href="#linearGradient8662" id="radialGradient4671" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" cx="24.837126" cy="36.421127" fx="24.837126" fy="36.421127" r="15.644737"/><linearGradient inkscape:collect="always" xlink:href="#SVGID_1_" id="linearGradient4673" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.5675025,0,0,0.5675025,30.864387,215.51272)" x1="43.944302" y1="733.39258" x2="411.3941" y2="425.06561"/><linearGradient inkscape:collect="always" xlink:href="#linearGradient45240" id="linearGradient4675" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0232774,0,0,1.0232774,-84.175017,-21.231609)" x1="120.74135" y1="520.05469" x2="370.30811" y2="520.05469"/></defs><sodipodi:namedview bordercolor="#666666" borderopacity="1.0" gridtolerance="10.0" guidetolerance="10.0" id="base" inkscape:current-layer="Ebene_1" inkscape:cx="597.83842" inkscape:cy="263.27075" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="771" inkscape:window-width="1276" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="0.41510417" objecttolerance="10.0" pagecolor="#ffffff" showgrid="false" showguides="true"><sodipodi:guide id="guide15660" orientation="0,1" position="595.03137,72.271017"/><sodipodi:guide id="guide15662" orientation="1,0" position="498.65029,290.21975"/><sodipodi:guide id="guide15664" orientation="0,1" position="-192.60038,573.84359"/></sodipodi:namedview>
+
+<g id="g4677"><rect y="133.22198" x="-10.000015" width="500.00003" style="fill:none;fill-opacity:1;stroke:none;stroke-opacity:1" id="rect2300" height="500.00003"/><g transform="translate(4.6539796e-2,-59.363144)" id="g4584"><image height="499.96951" id="image5" overflow="visible" style="opacity:0.75;overflow:visible" width="337.66388" x="-0.41921687" xlink:href="data:image/png;base64,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 UiSevx